source: frontend/node_modules/tapable/lib/SyncWaterfallHook.js

Last change on this file was 9af201e, checked in by MBK <marija.karapandzova@…>, 12 days ago

Fix frontend appearance

  • 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
39function COMPILE(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 }
48 const hook = new Hook(args, name);
49 hook.constructor = SyncWaterfallHook;
50 hook.tapAsync = TAP_ASYNC;
51 hook.tapPromise = TAP_PROMISE;
52 hook.compile = COMPILE;
53 return hook;
54}
55
56SyncWaterfallHook.prototype = null;
57
58module.exports = SyncWaterfallHook;
Note: See TracBrowser for help on using the repository browser.