Socket
Socket
Sign inDemoInstall

tapable

Package Overview
Dependencies
0
Maintainers
1
Versions
48
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

Comparing version 2.0.0-beta.3 to 2.0.0-beta.4

3

lib/AsyncSeriesBailHook.js

@@ -11,3 +11,3 @@ /*

class AsyncSeriesBailHookCodeFactory extends HookCodeFactory {
content({ onError, onResult, onDone }) {
content({ onError, onResult, resultReturns, onDone }) {
return this.callTapsSeries({

@@ -19,2 +19,3 @@ onError: (i, err, next, doneBreak) => onError(err) + doneBreak(true),

)};\n} else {\n${next()}}\n`,
resultReturns,
onDone

@@ -21,0 +22,0 @@ });

@@ -26,2 +26,3 @@ /*

onResult: result => `return ${result};\n`,
resultReturns: true,
onDone: () => "",

@@ -47,15 +48,7 @@ rethrowIfPossible: true

case "promise":
let code = "";
code += '"use strict";\n';
code += "return new Promise((_resolve, _reject) => {\n";
code += "var _sync = true;\n";
code += this.header();
code += this.content({
let errorHelperUsed = false;
const content = this.content({
onError: err => {
let code = "";
code += "if(_sync)\n";
code += `_resolve(Promise.resolve().then(() => { throw ${err}; }));\n`;
code += "else\n";
code += `_reject(${err});\n`;
return code;
errorHelperUsed = true;
return `_error(${err});\n`;
},

@@ -65,3 +58,19 @@ onResult: result => `_resolve(${result});\n`,

});
code += "_sync = false;\n";
let code = "";
code += '"use strict";\n';
code += "return new Promise((_resolve, _reject) => {\n";
if (errorHelperUsed) {
code += "var _sync = true;\n";
code += "function _error(_err) {\n";
code += "if(_sync)\n";
code += "_resolve(Promise.resolve().then(() => { throw _err; }));\n";
code += "else\n";
code += "_reject(_err);\n";
code += "};\n";
}
code += this.header();
code += content;
if (errorHelperUsed) {
code += "_sync = false;\n";
}
code += "});\n";

@@ -213,10 +222,25 @@ fn = new Function(this.args(), code);

callTapsSeries({ onError, onResult, onDone, rethrowIfPossible }) {
callTapsSeries({
onError,
onResult,
resultReturns,
onDone,
doneReturns,
rethrowIfPossible
}) {
if (this.options.taps.length === 0) return onDone();
const firstAsync = this.options.taps.findIndex(t => t.type !== "sync");
const next = i => {
if (i >= this.options.taps.length) {
return onDone();
const somethingReturns = resultReturns || doneReturns || false;
let code = "";
let current = onDone;
for (let j = this.options.taps.length - 1; j >= 0; j--) {
const i = j;
const unroll = current !== onDone && this.options.taps[i].type !== "sync";
if (unroll) {
code += `function _next${i}() {\n`;
code += current();
code += `}\n`;
current = () => `${somethingReturns ? "return " : ""}_next${i}();\n`;
}
const done = () => next(i + 1);
const done = current;
const doneBreak = skipDone => {

@@ -226,3 +250,3 @@ if (skipDone) return "";

};
return this.callTap(i, {
const content = this.callTap(i, {
onError: error => onError(i, error, done, doneBreak),

@@ -234,12 +258,10 @@ onResult:

}),
onDone:
!onResult &&
(() => {
return done();
}),
onDone: !onResult && done,
rethrowIfPossible:
rethrowIfPossible && (firstAsync < 0 || i < firstAsync)
});
};
return next(0);
current = () => content;
}
code += current();
return code;
}

@@ -246,0 +268,0 @@

@@ -11,3 +11,3 @@ /*

class SyncBailHookCodeFactory extends HookCodeFactory {
content({ onError, onResult, onDone, rethrowIfPossible }) {
content({ onError, onResult, resultReturns, onDone, rethrowIfPossible }) {
return this.callTapsSeries({

@@ -19,2 +19,3 @@ onError: (i, err) => onError(err),

)};\n} else {\n${next()}}\n`,
resultReturns,
onDone,

@@ -21,0 +22,0 @@ rethrowIfPossible

@@ -11,3 +11,3 @@ /*

class SyncHookCodeFactory extends HookCodeFactory {
content({ onError, onResult, onDone, rethrowIfPossible }) {
content({ onError, onDone, rethrowIfPossible }) {
return this.callTapsSeries({

@@ -14,0 +14,0 @@ onError: (i, err) => onError(err),

@@ -11,3 +11,3 @@ /*

class SyncLoopHookCodeFactory extends HookCodeFactory {
content({ onError, onResult, onDone, rethrowIfPossible }) {
content({ onError, onDone, rethrowIfPossible }) {
return this.callTapsLooping({

@@ -14,0 +14,0 @@ onError: (i, err) => onError(err),

@@ -11,3 +11,3 @@ /*

class SyncWaterfallHookCodeFactory extends HookCodeFactory {
content({ onError, onResult, onDone, rethrowIfPossible }) {
content({ onError, onResult, resultReturns, rethrowIfPossible }) {
return this.callTapsSeries({

@@ -24,2 +24,3 @@ onError: (i, err) => onError(err),

onDone: () => onResult(this._args[0]),
doneReturns: resultReturns,
rethrowIfPossible

@@ -26,0 +27,0 @@ });

{
"name": "tapable",
"version": "2.0.0-beta.3",
"version": "2.0.0-beta.4",
"author": "Tobias Koppers @sokra",

@@ -26,2 +26,3 @@ "description": "Just a little module for plugins.",

"lib",
"!lib/__tests__",
"tapable.d.ts"

@@ -28,0 +29,0 @@ ],

@@ -91,3 +91,2 @@ # Tapable

```
The class declaring these hooks need to call them:

@@ -97,5 +96,9 @@

class Car {
/* ... */
/**
* You won't get returned value from SyncHook or AsyncParallelHook,
* to do that, use SyncWaterfallHook and AsyncSeriesWaterfallHook respectively
**/
setSpeed(newSpeed) {
// following call returns undefined even when you returned values
this.hooks.accelerate.call(newSpeed);

@@ -106,3 +109,4 @@ }

const routesList = new List();
return this.hooks.calculateRoutes.promise(source, target, routesList).then(() => {
return this.hooks.calculateRoutes.promise(source, target, routesList).then((res) => {
// res is undefined for AsyncParallelHook
return routesList.getRoutes();

@@ -109,0 +113,0 @@ });

@@ -44,3 +44,3 @@ type FixedSizeArray<T extends number, U> = T extends 0

declare class Hook<T extends any[], R> {
constructor(args: ArgumentNames<T>);
constructor(args?: ArgumentNames<T>);
intercept(interceptor: HookInterceptor<Hook<T, R>>): void;

@@ -47,0 +47,0 @@ isUsed(): boolean;

SocketSocket SOC 2 Logo

Product

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

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc