source: trip-planner-front/node_modules/tapable/lib/SyncWaterfallHook.js@ b738035

Last change on this file since b738035 was 6a3a178, checked in by Ema <ema_spirova@…>, 3 years ago

initial commit

  • Property mode set to 100644
File size: 1.4 KB
Line 
1/*
2 MIT License http://www.opensource.org/licenses/mit-license.php
3 Author Tobias Koppers @sokra
4*/
5"use strict";
6
7const Hook = require("./Hook");
8const HookCodeFactory = require("./HookCodeFactory");
9
10class SyncWaterfallHookCodeFactory extends HookCodeFactory {
11 content({ onError, onResult, resultReturns, rethrowIfPossible }) {
12 return this.callTapsSeries({
13 onError: (i, err) => onError(err),
14 onResult: (i, result, next) => {
15 let code = "";
16 code += `if(${result} !== undefined) {\n`;
17 code += `${this._args[0]} = ${result};\n`;
18 code += `}\n`;
19 code += next();
20 return code;
21 },
22 onDone: () => onResult(this._args[0]),
23 doneReturns: resultReturns,
24 rethrowIfPossible
25 });
26 }
27}
28
29const factory = new SyncWaterfallHookCodeFactory();
30
31const TAP_ASYNC = () => {
32 throw new Error("tapAsync is not supported on a SyncWaterfallHook");
33};
34
35const TAP_PROMISE = () => {
36 throw new Error("tapPromise is not supported on a SyncWaterfallHook");
37};
38
39const COMPILE = function(options) {
40 factory.setup(this, options);
41 return factory.create(options);
42};
43
44function SyncWaterfallHook(args = [], name = undefined) {
45 if (args.length < 1)
46 throw new Error("Waterfall hooks must have at least one argument");
47 const hook = new Hook(args, name);
48 hook.constructor = SyncWaterfallHook;
49 hook.tapAsync = TAP_ASYNC;
50 hook.tapPromise = TAP_PROMISE;
51 hook.compile = COMPILE;
52 return hook;
53}
54
55SyncWaterfallHook.prototype = null;
56
57module.exports = SyncWaterfallHook;
Note: See TracBrowser for help on using the repository browser.