Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

tapable-ts

Package Overview
Dependencies
Maintainers
1
Versions
8
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

tapable-ts

A TS implementation of tapable

  • 0.2.3
  • Source
  • npm
  • Socket score

Version published
Weekly downloads
778
increased by147.77%
Maintainers
1
Weekly downloads
 
Created
Source

tapable-ts

npm npm bundle size NPM

A TypeScript rewrite of tapable

Tapable

tapable is a great plugin system from webpack that enables users to expose hooks from modules within your app that plugins can tap into and customize the behavior. I use it in almost all of my projects, but there are a few quirks with the original that made it hard to use in other applications.

After using it in a bunch of projects, I wanted a bit more control over what's possible; like custom tap execution order, the ability to untap a hook, higher level abstractions, PluginManagers, etc -- and the performance tradeoffs made in the original library also didn't always align with how I end up using the library.

API

Hooks

Hooks are constructed by importing and instantiating a class:

import { SyncHook } from "tapable-ts";

const hook = new SyncHook();

if using TypeScript, pass a tuple that represents the arguments as the first type param (and a return type if applicable for the second)

const hook = new SyncHook<[string, number]>();

you can also use named tuples for better editor support:

const hook = new SyncHook<[name: string, age: number]>();
Hook Types

The tapable docs do a good job going over the different types of hooks. There are 9 in total:

  • SyncHook
  • SyncBailHook
  • SyncWaterfallHook
  • SyncLoopHook
  • AsyncParallelHook
  • AsyncParallelBailHook
  • AsyncSeriesHook
  • AsyncSeriesBailHook
  • AsyncSeriesWaterfallHook

Interceptions

The intercept API closely resembles the original tapable implementation. There are 6 events an interceptor can register for.

3 are applicable to all hooks:

  • tap - Called when a new tap is registered
  • call - Called when the hook is first called
  • error - Called when a hook is going to throw

1 only applies for looping hooks:

  • loop - Called during each new iteration of a looping hook

and either of the following will be called:

  • result - Called when a hook is going to return a value
  • done - Called when a hook is finished executing, but no value is returned. This includes Bail hooks that don't return a value.

Keywords

FAQs

Package last updated on 19 Dec 2022

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc