diff options
Diffstat (limited to 'node_modules/tapable/lib/SyncWaterfallHook.js')
| -rw-r--r-- | node_modules/tapable/lib/SyncWaterfallHook.js | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/node_modules/tapable/lib/SyncWaterfallHook.js b/node_modules/tapable/lib/SyncWaterfallHook.js new file mode 100644 index 00000000..64b615e5 --- /dev/null +++ b/node_modules/tapable/lib/SyncWaterfallHook.js @@ -0,0 +1,51 @@ +/* + MIT License http://www.opensource.org/licenses/mit-license.php + Author Tobias Koppers @sokra +*/ +"use strict"; + +const Hook = require("./Hook"); +const HookCodeFactory = require("./HookCodeFactory"); + +class SyncWaterfallHookCodeFactory extends HookCodeFactory { + content({ onError, onResult, onDone, rethrowIfPossible }) { + return this.callTapsSeries({ + onError: (i, err) => onError(err), + onResult: (i, result, next) => { + let code = ""; + code += `if(${result} !== undefined) {\n`; + code += `${this._args[0]} = ${result};\n`; + code += `}\n`; + code += next(); + return code; + }, + onDone: () => onResult(this._args[0]), + rethrowIfPossible + }); + } +} + +const factory = new SyncWaterfallHookCodeFactory(); + +class SyncWaterfallHook extends Hook { + constructor(args) { + super(args); + if (args.length < 1) + throw new Error("Waterfall hooks must have at least one argument"); + } + + tapAsync() { + throw new Error("tapAsync is not supported on a SyncWaterfallHook"); + } + + tapPromise() { + throw new Error("tapPromise is not supported on a SyncWaterfallHook"); + } + + compile(options) { + factory.setup(this, options); + return factory.create(options); + } +} + +module.exports = SyncWaterfallHook; |
