pax_global_header00006660000000000000000000000064141176200300014504gustar00rootroot0000000000000052 comment=a0a7b26224557bd8bb09b97e0126b7dbda9f8e6a tapable-2.2.1/000077500000000000000000000000001411762003000131165ustar00rootroot00000000000000tapable-2.2.1/.babelrc000066400000000000000000000001371411762003000145120ustar00rootroot00000000000000{ "presets": [ ["@babel/preset-env", { "targets": { "node": "current" } }] ] } tapable-2.2.1/.editorconfig000066400000000000000000000003701411762003000155730ustar00rootroot00000000000000root = true [*] indent_style = tab indent_size = 2 charset = utf-8 trim_trailing_whitespace = true insert_final_newline = true max_line_length = 80 [*.{yml,yaml,json}] indent_style = space indent_size = 2 [*.md] trim_trailing_whitespace = false tapable-2.2.1/.eslintrc000066400000000000000000000004411411762003000147410ustar00rootroot00000000000000{ "env": { "node": true }, "rules": { "strict": 0, "curly": 0, "eol-last": 1, "no-shadow": 0, "no-redeclare": 1, "no-extra-bind": 1, "no-underscore-dangle": 0, "no-use-before-define": 0, "consistent-return": 0, "no-inner-declarations": 1, "no-loop-func": 1 } } tapable-2.2.1/.gitattributes000066400000000000000000000000141411762003000160040ustar00rootroot00000000000000* text=auto tapable-2.2.1/.gitignore000066400000000000000000000002071411762003000151050ustar00rootroot00000000000000/node_modules /coverage ############ ## Windows ############ # Windows image file caches Thumbs.db # Folder config file Desktop.ini tapable-2.2.1/.prettierrc.js000066400000000000000000000002301411762003000157100ustar00rootroot00000000000000module.exports = { printWidth: 80, useTabs: true, tabWidth: 2, overrides: [ { files: "*.json", options: { useTabs: false } } ] }; tapable-2.2.1/.travis.yml000066400000000000000000000001421411762003000152240ustar00rootroot00000000000000sudo: false language: node_js node_js: - "12" - "10" - "8" - "6" script: yarn run travis tapable-2.2.1/LICENSE000066400000000000000000000021001411762003000141140ustar00rootroot00000000000000The MIT License Copyright JS Foundation and other contributors Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. tapable-2.2.1/README.md000066400000000000000000000210461411762003000144000ustar00rootroot00000000000000# Tapable The tapable package expose many Hook classes, which can be used to create hooks for plugins. ``` javascript const { SyncHook, SyncBailHook, SyncWaterfallHook, SyncLoopHook, AsyncParallelHook, AsyncParallelBailHook, AsyncSeriesHook, AsyncSeriesBailHook, AsyncSeriesWaterfallHook } = require("tapable"); ``` ## Installation ``` shell npm install --save tapable ``` ## Usage All Hook constructors take one optional argument, which is a list of argument names as strings. ``` js const hook = new SyncHook(["arg1", "arg2", "arg3"]); ``` The best practice is to expose all hooks of a class in a `hooks` property: ``` js class Car { constructor() { this.hooks = { accelerate: new SyncHook(["newSpeed"]), brake: new SyncHook(), calculateRoutes: new AsyncParallelHook(["source", "target", "routesList"]) }; } /* ... */ } ``` Other people can now use these hooks: ``` js const myCar = new Car(); // Use the tap method to add a consument myCar.hooks.brake.tap("WarningLampPlugin", () => warningLamp.on()); ``` It's required to pass a name to identify the plugin/reason. You may receive arguments: ``` js myCar.hooks.accelerate.tap("LoggerPlugin", newSpeed => console.log(`Accelerating to ${newSpeed}`)); ``` For sync hooks, `tap` is the only valid method to add a plugin. Async hooks also support async plugins: ``` js myCar.hooks.calculateRoutes.tapPromise("GoogleMapsPlugin", (source, target, routesList) => { // return a promise return google.maps.findRoute(source, target).then(route => { routesList.add(route); }); }); myCar.hooks.calculateRoutes.tapAsync("BingMapsPlugin", (source, target, routesList, callback) => { bing.findRoute(source, target, (err, route) => { if(err) return callback(err); routesList.add(route); // call the callback callback(); }); }); // You can still use sync plugins myCar.hooks.calculateRoutes.tap("CachedRoutesPlugin", (source, target, routesList) => { const cachedRoute = cache.get(source, target); if(cachedRoute) routesList.add(cachedRoute); }) ``` The class declaring these hooks need to call them: ``` js 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); } useNavigationSystemPromise(source, target) { const routesList = new List(); return this.hooks.calculateRoutes.promise(source, target, routesList).then((res) => { // res is undefined for AsyncParallelHook return routesList.getRoutes(); }); } useNavigationSystemAsync(source, target, callback) { const routesList = new List(); this.hooks.calculateRoutes.callAsync(source, target, routesList, err => { if(err) return callback(err); callback(null, routesList.getRoutes()); }); } } ``` The Hook will compile a method with the most efficient way of running your plugins. It generates code depending on: * The number of registered plugins (none, one, many) * The kind of registered plugins (sync, async, promise) * The used call method (sync, async, promise) * The number of arguments * Whether interception is used This ensures fastest possible execution. ## Hook types Each hook can be tapped with one or several functions. How they are executed depends on the hook type: * Basic hook (without “Waterfall”, “Bail” or “Loop” in its name). This hook simply calls every function it tapped in a row. * __Waterfall__. A waterfall hook also calls each tapped function in a row. Unlike the basic hook, it passes a return value from each function to the next function. * __Bail__. A bail hook allows exiting early. When any of the tapped function returns anything, the bail hook will stop executing the remaining ones. * __Loop__. When a plugin in a loop hook returns a non-undefined value the hook will restart from the first plugin. It will loop until all plugins return undefined. Additionally, hooks can be synchronous or asynchronous. To reflect this, there’re “Sync”, “AsyncSeries”, and “AsyncParallel” hook classes: * __Sync__. A sync hook can only be tapped with synchronous functions (using `myHook.tap()`). * __AsyncSeries__. An async-series hook can be tapped with synchronous, callback-based and promise-based functions (using `myHook.tap()`, `myHook.tapAsync()` and `myHook.tapPromise()`). They call each async method in a row. * __AsyncParallel__. An async-parallel hook can also be tapped with synchronous, callback-based and promise-based functions (using `myHook.tap()`, `myHook.tapAsync()` and `myHook.tapPromise()`). However, they run each async method in parallel. The hook type is reflected in its class name. E.g., `AsyncSeriesWaterfallHook` allows asynchronous functions and runs them in series, passing each function’s return value into the next function. ## Interception All Hooks offer an additional interception API: ``` js myCar.hooks.calculateRoutes.intercept({ call: (source, target, routesList) => { console.log("Starting to calculate routes"); }, register: (tapInfo) => { // tapInfo = { type: "promise", name: "GoogleMapsPlugin", fn: ... } console.log(`${tapInfo.name} is doing its job`); return tapInfo; // may return a new tapInfo object } }) ``` **call**: `(...args) => void` Adding `call` to your interceptor will trigger when hooks are triggered. You have access to the hooks arguments. **tap**: `(tap: Tap) => void` Adding `tap` to your interceptor will trigger when a plugin taps into a hook. Provided is the `Tap` object. `Tap` object can't be changed. **loop**: `(...args) => void` Adding `loop` to your interceptor will trigger for each loop of a looping hook. **register**: `(tap: Tap) => Tap | undefined` Adding `register` to your interceptor will trigger for each added `Tap` and allows to modify it. ## Context Plugins and interceptors can opt-in to access an optional `context` object, which can be used to pass arbitrary values to subsequent plugins and interceptors. ``` js myCar.hooks.accelerate.intercept({ context: true, tap: (context, tapInfo) => { // tapInfo = { type: "sync", name: "NoisePlugin", fn: ... } console.log(`${tapInfo.name} is doing it's job`); // `context` starts as an empty object if at least one plugin uses `context: true`. // If no plugins use `context: true`, then `context` is undefined. if (context) { // Arbitrary properties can be added to `context`, which plugins can then access. context.hasMuffler = true; } } }); myCar.hooks.accelerate.tap({ name: "NoisePlugin", context: true }, (context, newSpeed) => { if (context && context.hasMuffler) { console.log("Silence..."); } else { console.log("Vroom!"); } }); ``` ## HookMap A HookMap is a helper class for a Map with Hooks ``` js const keyedHook = new HookMap(key => new SyncHook(["arg"])) ``` ``` js keyedHook.for("some-key").tap("MyPlugin", (arg) => { /* ... */ }); keyedHook.for("some-key").tapAsync("MyPlugin", (arg, callback) => { /* ... */ }); keyedHook.for("some-key").tapPromise("MyPlugin", (arg) => { /* ... */ }); ``` ``` js const hook = keyedHook.get("some-key"); if(hook !== undefined) { hook.callAsync("arg", err => { /* ... */ }); } ``` ## Hook/HookMap interface Public: ``` ts interface Hook { tap: (name: string | Tap, fn: (context?, ...args) => Result) => void, tapAsync: (name: string | Tap, fn: (context?, ...args, callback: (err, result: Result) => void) => void) => void, tapPromise: (name: string | Tap, fn: (context?, ...args) => Promise) => void, intercept: (interceptor: HookInterceptor) => void } interface HookInterceptor { call: (context?, ...args) => void, loop: (context?, ...args) => void, tap: (context?, tap: Tap) => void, register: (tap: Tap) => Tap, context: boolean } interface HookMap { for: (key: any) => Hook, intercept: (interceptor: HookMapInterceptor) => void } interface HookMapInterceptor { factory: (key: any, hook: Hook) => Hook } interface Tap { name: string, type: string fn: Function, stage: number, context: boolean, before?: string | Array } ``` Protected (only for the class containing the hook): ``` ts interface Hook { isUsed: () => boolean, call: (...args) => Result, promise: (...args) => Promise, callAsync: (...args, callback: (err, result: Result) => void) => void, } interface HookMap { get: (key: any) => Hook | undefined, for: (key: any) => Hook } ``` ## MultiHook A helper Hook-like class to redirect taps to multiple other hooks: ``` js const { MultiHook } = require("tapable"); this.hooks.allHooks = new MultiHook([this.hooks.hookA, this.hooks.hookB]); ``` tapable-2.2.1/lib/000077500000000000000000000000001411762003000136645ustar00rootroot00000000000000tapable-2.2.1/lib/AsyncParallelBailHook.js000066400000000000000000000044611411762003000203720ustar00rootroot00000000000000/* 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 AsyncParallelBailHookCodeFactory extends HookCodeFactory { content({ onError, onResult, onDone }) { let code = ""; code += `var _results = new Array(${this.options.taps.length});\n`; code += "var _checkDone = function() {\n"; code += "for(var i = 0; i < _results.length; i++) {\n"; code += "var item = _results[i];\n"; code += "if(item === undefined) return false;\n"; code += "if(item.result !== undefined) {\n"; code += onResult("item.result"); code += "return true;\n"; code += "}\n"; code += "if(item.error) {\n"; code += onError("item.error"); code += "return true;\n"; code += "}\n"; code += "}\n"; code += "return false;\n"; code += "}\n"; code += this.callTapsParallel({ onError: (i, err, done, doneBreak) => { let code = ""; code += `if(${i} < _results.length && ((_results.length = ${i + 1}), (_results[${i}] = { error: ${err} }), _checkDone())) {\n`; code += doneBreak(true); code += "} else {\n"; code += done(); code += "}\n"; return code; }, onResult: (i, result, done, doneBreak) => { let code = ""; code += `if(${i} < _results.length && (${result} !== undefined && (_results.length = ${i + 1}), (_results[${i}] = { result: ${result} }), _checkDone())) {\n`; code += doneBreak(true); code += "} else {\n"; code += done(); code += "}\n"; return code; }, onTap: (i, run, done, doneBreak) => { let code = ""; if (i > 0) { code += `if(${i} >= _results.length) {\n`; code += done(); code += "} else {\n"; } code += run(); if (i > 0) code += "}\n"; return code; }, onDone }); return code; } } const factory = new AsyncParallelBailHookCodeFactory(); const COMPILE = function(options) { factory.setup(this, options); return factory.create(options); }; function AsyncParallelBailHook(args = [], name = undefined) { const hook = new Hook(args, name); hook.constructor = AsyncParallelBailHook; hook.compile = COMPILE; hook._call = undefined; hook.call = undefined; return hook; } AsyncParallelBailHook.prototype = null; module.exports = AsyncParallelBailHook; tapable-2.2.1/lib/AsyncParallelHook.js000066400000000000000000000015551411762003000176030ustar00rootroot00000000000000/* 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 AsyncParallelHookCodeFactory extends HookCodeFactory { content({ onError, onDone }) { return this.callTapsParallel({ onError: (i, err, done, doneBreak) => onError(err) + doneBreak(true), onDone }); } } const factory = new AsyncParallelHookCodeFactory(); const COMPILE = function(options) { factory.setup(this, options); return factory.create(options); }; function AsyncParallelHook(args = [], name = undefined) { const hook = new Hook(args, name); hook.constructor = AsyncParallelHook; hook.compile = COMPILE; hook._call = undefined; hook.call = undefined; return hook; } AsyncParallelHook.prototype = null; module.exports = AsyncParallelHook; tapable-2.2.1/lib/AsyncSeriesBailHook.js000066400000000000000000000020411411762003000200600ustar00rootroot00000000000000/* 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 AsyncSeriesBailHookCodeFactory extends HookCodeFactory { content({ onError, onResult, resultReturns, onDone }) { return this.callTapsSeries({ onError: (i, err, next, doneBreak) => onError(err) + doneBreak(true), onResult: (i, result, next) => `if(${result} !== undefined) {\n${onResult( result )}\n} else {\n${next()}}\n`, resultReturns, onDone }); } } const factory = new AsyncSeriesBailHookCodeFactory(); const COMPILE = function(options) { factory.setup(this, options); return factory.create(options); }; function AsyncSeriesBailHook(args = [], name = undefined) { const hook = new Hook(args, name); hook.constructor = AsyncSeriesBailHook; hook.compile = COMPILE; hook._call = undefined; hook.call = undefined; return hook; } AsyncSeriesBailHook.prototype = null; module.exports = AsyncSeriesBailHook; tapable-2.2.1/lib/AsyncSeriesHook.js000066400000000000000000000015371411762003000173010ustar00rootroot00000000000000/* 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 AsyncSeriesHookCodeFactory extends HookCodeFactory { content({ onError, onDone }) { return this.callTapsSeries({ onError: (i, err, next, doneBreak) => onError(err) + doneBreak(true), onDone }); } } const factory = new AsyncSeriesHookCodeFactory(); const COMPILE = function(options) { factory.setup(this, options); return factory.create(options); }; function AsyncSeriesHook(args = [], name = undefined) { const hook = new Hook(args, name); hook.constructor = AsyncSeriesHook; hook.compile = COMPILE; hook._call = undefined; hook.call = undefined; return hook; } AsyncSeriesHook.prototype = null; module.exports = AsyncSeriesHook; tapable-2.2.1/lib/AsyncSeriesLoopHook.js000066400000000000000000000015701411762003000201300ustar00rootroot00000000000000/* 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 AsyncSeriesLoopHookCodeFactory extends HookCodeFactory { content({ onError, onDone }) { return this.callTapsLooping({ onError: (i, err, next, doneBreak) => onError(err) + doneBreak(true), onDone }); } } const factory = new AsyncSeriesLoopHookCodeFactory(); const COMPILE = function(options) { factory.setup(this, options); return factory.create(options); }; function AsyncSeriesLoopHook(args = [], name = undefined) { const hook = new Hook(args, name); hook.constructor = AsyncSeriesLoopHook; hook.compile = COMPILE; hook._call = undefined; hook.call = undefined; return hook; } AsyncSeriesLoopHook.prototype = null; module.exports = AsyncSeriesLoopHook; tapable-2.2.1/lib/AsyncSeriesWaterfallHook.js000066400000000000000000000023551411762003000211420ustar00rootroot00000000000000/* 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 AsyncSeriesWaterfallHookCodeFactory extends HookCodeFactory { content({ onError, onResult, onDone }) { return this.callTapsSeries({ onError: (i, err, next, doneBreak) => onError(err) + doneBreak(true), 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]) }); } } const factory = new AsyncSeriesWaterfallHookCodeFactory(); const COMPILE = function(options) { factory.setup(this, options); return factory.create(options); }; function AsyncSeriesWaterfallHook(args = [], name = undefined) { if (args.length < 1) throw new Error("Waterfall hooks must have at least one argument"); const hook = new Hook(args, name); hook.constructor = AsyncSeriesWaterfallHook; hook.compile = COMPILE; hook._call = undefined; hook.call = undefined; return hook; } AsyncSeriesWaterfallHook.prototype = null; module.exports = AsyncSeriesWaterfallHook; tapable-2.2.1/lib/Hook.js000066400000000000000000000077351411762003000151360ustar00rootroot00000000000000/* MIT License http://www.opensource.org/licenses/mit-license.php Author Tobias Koppers @sokra */ "use strict"; const util = require("util"); const deprecateContext = util.deprecate(() => {}, "Hook.context is deprecated and will be removed"); const CALL_DELEGATE = function(...args) { this.call = this._createCall("sync"); return this.call(...args); }; const CALL_ASYNC_DELEGATE = function(...args) { this.callAsync = this._createCall("async"); return this.callAsync(...args); }; const PROMISE_DELEGATE = function(...args) { this.promise = this._createCall("promise"); return this.promise(...args); }; class Hook { constructor(args = [], name = undefined) { this._args = args; this.name = name; this.taps = []; this.interceptors = []; this._call = CALL_DELEGATE; this.call = CALL_DELEGATE; this._callAsync = CALL_ASYNC_DELEGATE; this.callAsync = CALL_ASYNC_DELEGATE; this._promise = PROMISE_DELEGATE; this.promise = PROMISE_DELEGATE; this._x = undefined; this.compile = this.compile; this.tap = this.tap; this.tapAsync = this.tapAsync; this.tapPromise = this.tapPromise; } compile(options) { throw new Error("Abstract: should be overridden"); } _createCall(type) { return this.compile({ taps: this.taps, interceptors: this.interceptors, args: this._args, type: type }); } _tap(type, options, fn) { if (typeof options === "string") { options = { name: options.trim() }; } else if (typeof options !== "object" || options === null) { throw new Error("Invalid tap options"); } if (typeof options.name !== "string" || options.name === "") { throw new Error("Missing name for tap"); } if (typeof options.context !== "undefined") { deprecateContext(); } options = Object.assign({ type, fn }, options); options = this._runRegisterInterceptors(options); this._insert(options); } tap(options, fn) { this._tap("sync", options, fn); } tapAsync(options, fn) { this._tap("async", options, fn); } tapPromise(options, fn) { this._tap("promise", options, fn); } _runRegisterInterceptors(options) { for (const interceptor of this.interceptors) { if (interceptor.register) { const newOptions = interceptor.register(options); if (newOptions !== undefined) { options = newOptions; } } } return options; } withOptions(options) { const mergeOptions = opt => Object.assign({}, options, typeof opt === "string" ? { name: opt } : opt); return { name: this.name, tap: (opt, fn) => this.tap(mergeOptions(opt), fn), tapAsync: (opt, fn) => this.tapAsync(mergeOptions(opt), fn), tapPromise: (opt, fn) => this.tapPromise(mergeOptions(opt), fn), intercept: interceptor => this.intercept(interceptor), isUsed: () => this.isUsed(), withOptions: opt => this.withOptions(mergeOptions(opt)) }; } isUsed() { return this.taps.length > 0 || this.interceptors.length > 0; } intercept(interceptor) { this._resetCompilation(); this.interceptors.push(Object.assign({}, interceptor)); if (interceptor.register) { for (let i = 0; i < this.taps.length; i++) { this.taps[i] = interceptor.register(this.taps[i]); } } } _resetCompilation() { this.call = this._call; this.callAsync = this._callAsync; this.promise = this._promise; } _insert(item) { this._resetCompilation(); let before; if (typeof item.before === "string") { before = new Set([item.before]); } else if (Array.isArray(item.before)) { before = new Set(item.before); } let stage = 0; if (typeof item.stage === "number") { stage = item.stage; } let i = this.taps.length; while (i > 0) { i--; const x = this.taps[i]; this.taps[i + 1] = x; const xStage = x.stage || 0; if (before) { if (before.has(x.name)) { before.delete(x.name); continue; } if (before.size > 0) { continue; } } if (xStage > stage) { continue; } i++; break; } this.taps[i] = item; } } Object.setPrototypeOf(Hook.prototype, null); module.exports = Hook; tapable-2.2.1/lib/HookCodeFactory.js000066400000000000000000000272561411762003000172610ustar00rootroot00000000000000/* MIT License http://www.opensource.org/licenses/mit-license.php Author Tobias Koppers @sokra */ "use strict"; class HookCodeFactory { constructor(config) { this.config = config; this.options = undefined; this._args = undefined; } create(options) { this.init(options); let fn; switch (this.options.type) { case "sync": fn = new Function( this.args(), '"use strict";\n' + this.header() + this.contentWithInterceptors({ onError: err => `throw ${err};\n`, onResult: result => `return ${result};\n`, resultReturns: true, onDone: () => "", rethrowIfPossible: true }) ); break; case "async": fn = new Function( this.args({ after: "_callback" }), '"use strict";\n' + this.header() + this.contentWithInterceptors({ onError: err => `_callback(${err});\n`, onResult: result => `_callback(null, ${result});\n`, onDone: () => "_callback();\n" }) ); break; case "promise": let errorHelperUsed = false; const content = this.contentWithInterceptors({ onError: err => { errorHelperUsed = true; return `_error(${err});\n`; }, onResult: result => `_resolve(${result});\n`, onDone: () => "_resolve();\n" }); let code = ""; code += '"use strict";\n'; code += this.header(); code += "return new Promise((function(_resolve, _reject) {\n"; if (errorHelperUsed) { code += "var _sync = true;\n"; code += "function _error(_err) {\n"; code += "if(_sync)\n"; code += "_resolve(Promise.resolve().then((function() { throw _err; })));\n"; code += "else\n"; code += "_reject(_err);\n"; code += "};\n"; } code += content; if (errorHelperUsed) { code += "_sync = false;\n"; } code += "}));\n"; fn = new Function(this.args(), code); break; } this.deinit(); return fn; } setup(instance, options) { instance._x = options.taps.map(t => t.fn); } /** * @param {{ type: "sync" | "promise" | "async", taps: Array, interceptors: Array }} options */ init(options) { this.options = options; this._args = options.args.slice(); } deinit() { this.options = undefined; this._args = undefined; } contentWithInterceptors(options) { if (this.options.interceptors.length > 0) { const onError = options.onError; const onResult = options.onResult; const onDone = options.onDone; let code = ""; for (let i = 0; i < this.options.interceptors.length; i++) { const interceptor = this.options.interceptors[i]; if (interceptor.call) { code += `${this.getInterceptor(i)}.call(${this.args({ before: interceptor.context ? "_context" : undefined })});\n`; } } code += this.content( Object.assign(options, { onError: onError && (err => { let code = ""; for (let i = 0; i < this.options.interceptors.length; i++) { const interceptor = this.options.interceptors[i]; if (interceptor.error) { code += `${this.getInterceptor(i)}.error(${err});\n`; } } code += onError(err); return code; }), onResult: onResult && (result => { let code = ""; for (let i = 0; i < this.options.interceptors.length; i++) { const interceptor = this.options.interceptors[i]; if (interceptor.result) { code += `${this.getInterceptor(i)}.result(${result});\n`; } } code += onResult(result); return code; }), onDone: onDone && (() => { let code = ""; for (let i = 0; i < this.options.interceptors.length; i++) { const interceptor = this.options.interceptors[i]; if (interceptor.done) { code += `${this.getInterceptor(i)}.done();\n`; } } code += onDone(); return code; }) }) ); return code; } else { return this.content(options); } } header() { let code = ""; if (this.needContext()) { code += "var _context = {};\n"; } else { code += "var _context;\n"; } code += "var _x = this._x;\n"; if (this.options.interceptors.length > 0) { code += "var _taps = this.taps;\n"; code += "var _interceptors = this.interceptors;\n"; } return code; } needContext() { for (const tap of this.options.taps) if (tap.context) return true; return false; } callTap(tapIndex, { onError, onResult, onDone, rethrowIfPossible }) { let code = ""; let hasTapCached = false; for (let i = 0; i < this.options.interceptors.length; i++) { const interceptor = this.options.interceptors[i]; if (interceptor.tap) { if (!hasTapCached) { code += `var _tap${tapIndex} = ${this.getTap(tapIndex)};\n`; hasTapCached = true; } code += `${this.getInterceptor(i)}.tap(${ interceptor.context ? "_context, " : "" }_tap${tapIndex});\n`; } } code += `var _fn${tapIndex} = ${this.getTapFn(tapIndex)};\n`; const tap = this.options.taps[tapIndex]; switch (tap.type) { case "sync": if (!rethrowIfPossible) { code += `var _hasError${tapIndex} = false;\n`; code += "try {\n"; } if (onResult) { code += `var _result${tapIndex} = _fn${tapIndex}(${this.args({ before: tap.context ? "_context" : undefined })});\n`; } else { code += `_fn${tapIndex}(${this.args({ before: tap.context ? "_context" : undefined })});\n`; } if (!rethrowIfPossible) { code += "} catch(_err) {\n"; code += `_hasError${tapIndex} = true;\n`; code += onError("_err"); code += "}\n"; code += `if(!_hasError${tapIndex}) {\n`; } if (onResult) { code += onResult(`_result${tapIndex}`); } if (onDone) { code += onDone(); } if (!rethrowIfPossible) { code += "}\n"; } break; case "async": let cbCode = ""; if (onResult) cbCode += `(function(_err${tapIndex}, _result${tapIndex}) {\n`; else cbCode += `(function(_err${tapIndex}) {\n`; cbCode += `if(_err${tapIndex}) {\n`; cbCode += onError(`_err${tapIndex}`); cbCode += "} else {\n"; if (onResult) { cbCode += onResult(`_result${tapIndex}`); } if (onDone) { cbCode += onDone(); } cbCode += "}\n"; cbCode += "})"; code += `_fn${tapIndex}(${this.args({ before: tap.context ? "_context" : undefined, after: cbCode })});\n`; break; case "promise": code += `var _hasResult${tapIndex} = false;\n`; code += `var _promise${tapIndex} = _fn${tapIndex}(${this.args({ before: tap.context ? "_context" : undefined })});\n`; code += `if (!_promise${tapIndex} || !_promise${tapIndex}.then)\n`; code += ` throw new Error('Tap function (tapPromise) did not return promise (returned ' + _promise${tapIndex} + ')');\n`; code += `_promise${tapIndex}.then((function(_result${tapIndex}) {\n`; code += `_hasResult${tapIndex} = true;\n`; if (onResult) { code += onResult(`_result${tapIndex}`); } if (onDone) { code += onDone(); } code += `}), function(_err${tapIndex}) {\n`; code += `if(_hasResult${tapIndex}) throw _err${tapIndex};\n`; code += onError(`_err${tapIndex}`); code += "});\n"; break; } return code; } 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 somethingReturns = resultReturns || doneReturns; let code = ""; let current = onDone; let unrollCounter = 0; for (let j = this.options.taps.length - 1; j >= 0; j--) { const i = j; const unroll = current !== onDone && (this.options.taps[i].type !== "sync" || unrollCounter++ > 20); if (unroll) { unrollCounter = 0; code += `function _next${i}() {\n`; code += current(); code += `}\n`; current = () => `${somethingReturns ? "return " : ""}_next${i}();\n`; } const done = current; const doneBreak = skipDone => { if (skipDone) return ""; return onDone(); }; const content = this.callTap(i, { onError: error => onError(i, error, done, doneBreak), onResult: onResult && (result => { return onResult(i, result, done, doneBreak); }), onDone: !onResult && done, rethrowIfPossible: rethrowIfPossible && (firstAsync < 0 || i < firstAsync) }); current = () => content; } code += current(); return code; } callTapsLooping({ onError, onDone, rethrowIfPossible }) { if (this.options.taps.length === 0) return onDone(); const syncOnly = this.options.taps.every(t => t.type === "sync"); let code = ""; if (!syncOnly) { code += "var _looper = (function() {\n"; code += "var _loopAsync = false;\n"; } code += "var _loop;\n"; code += "do {\n"; code += "_loop = false;\n"; for (let i = 0; i < this.options.interceptors.length; i++) { const interceptor = this.options.interceptors[i]; if (interceptor.loop) { code += `${this.getInterceptor(i)}.loop(${this.args({ before: interceptor.context ? "_context" : undefined })});\n`; } } code += this.callTapsSeries({ onError, onResult: (i, result, next, doneBreak) => { let code = ""; code += `if(${result} !== undefined) {\n`; code += "_loop = true;\n"; if (!syncOnly) code += "if(_loopAsync) _looper();\n"; code += doneBreak(true); code += `} else {\n`; code += next(); code += `}\n`; return code; }, onDone: onDone && (() => { let code = ""; code += "if(!_loop) {\n"; code += onDone(); code += "}\n"; return code; }), rethrowIfPossible: rethrowIfPossible && syncOnly }); code += "} while(_loop);\n"; if (!syncOnly) { code += "_loopAsync = true;\n"; code += "});\n"; code += "_looper();\n"; } return code; } callTapsParallel({ onError, onResult, onDone, rethrowIfPossible, onTap = (i, run) => run() }) { if (this.options.taps.length <= 1) { return this.callTapsSeries({ onError, onResult, onDone, rethrowIfPossible }); } let code = ""; code += "do {\n"; code += `var _counter = ${this.options.taps.length};\n`; if (onDone) { code += "var _done = (function() {\n"; code += onDone(); code += "});\n"; } for (let i = 0; i < this.options.taps.length; i++) { const done = () => { if (onDone) return "if(--_counter === 0) _done();\n"; else return "--_counter;"; }; const doneBreak = skipDone => { if (skipDone || !onDone) return "_counter = 0;\n"; else return "_counter = 0;\n_done();\n"; }; code += "if(_counter <= 0) break;\n"; code += onTap( i, () => this.callTap(i, { onError: error => { let code = ""; code += "if(_counter > 0) {\n"; code += onError(i, error, done, doneBreak); code += "}\n"; return code; }, onResult: onResult && (result => { let code = ""; code += "if(_counter > 0) {\n"; code += onResult(i, result, done, doneBreak); code += "}\n"; return code; }), onDone: !onResult && (() => { return done(); }), rethrowIfPossible }), done, doneBreak ); } code += "} while(false);\n"; return code; } args({ before, after } = {}) { let allArgs = this._args; if (before) allArgs = [before].concat(allArgs); if (after) allArgs = allArgs.concat(after); if (allArgs.length === 0) { return ""; } else { return allArgs.join(", "); } } getTapFn(idx) { return `_x[${idx}]`; } getTap(idx) { return `_taps[${idx}]`; } getInterceptor(idx) { return `_interceptors[${idx}]`; } } module.exports = HookCodeFactory; tapable-2.2.1/lib/HookMap.js000066400000000000000000000027551411762003000155710ustar00rootroot00000000000000/* MIT License http://www.opensource.org/licenses/mit-license.php Author Tobias Koppers @sokra */ "use strict"; const util = require("util"); const defaultFactory = (key, hook) => hook; class HookMap { constructor(factory, name = undefined) { this._map = new Map(); this.name = name; this._factory = factory; this._interceptors = []; } get(key) { return this._map.get(key); } for(key) { const hook = this.get(key); if (hook !== undefined) { return hook; } let newHook = this._factory(key); const interceptors = this._interceptors; for (let i = 0; i < interceptors.length; i++) { newHook = interceptors[i].factory(key, newHook); } this._map.set(key, newHook); return newHook; } intercept(interceptor) { this._interceptors.push( Object.assign( { factory: defaultFactory }, interceptor ) ); } } HookMap.prototype.tap = util.deprecate(function(key, options, fn) { return this.for(key).tap(options, fn); }, "HookMap#tap(key,…) is deprecated. Use HookMap#for(key).tap(…) instead."); HookMap.prototype.tapAsync = util.deprecate(function(key, options, fn) { return this.for(key).tapAsync(options, fn); }, "HookMap#tapAsync(key,…) is deprecated. Use HookMap#for(key).tapAsync(…) instead."); HookMap.prototype.tapPromise = util.deprecate(function(key, options, fn) { return this.for(key).tapPromise(options, fn); }, "HookMap#tapPromise(key,…) is deprecated. Use HookMap#for(key).tapPromise(…) instead."); module.exports = HookMap; tapable-2.2.1/lib/MultiHook.js000066400000000000000000000016021411762003000161340ustar00rootroot00000000000000/* MIT License http://www.opensource.org/licenses/mit-license.php Author Tobias Koppers @sokra */ "use strict"; const Hook = require("./Hook"); class MultiHook { constructor(hooks, name = undefined) { this.hooks = hooks; this.name = name; } tap(options, fn) { for (const hook of this.hooks) { hook.tap(options, fn); } } tapAsync(options, fn) { for (const hook of this.hooks) { hook.tapAsync(options, fn); } } tapPromise(options, fn) { for (const hook of this.hooks) { hook.tapPromise(options, fn); } } isUsed() { for (const hook of this.hooks) { if (hook.isUsed()) return true; } return false; } intercept(interceptor) { for (const hook of this.hooks) { hook.intercept(interceptor); } } withOptions(options) { return new MultiHook( this.hooks.map(h => h.withOptions(options)), this.name ); } } module.exports = MultiHook; tapable-2.2.1/lib/SyncBailHook.js000066400000000000000000000023131411762003000165460ustar00rootroot00000000000000/* 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 SyncBailHookCodeFactory extends HookCodeFactory { content({ onError, onResult, resultReturns, onDone, rethrowIfPossible }) { return this.callTapsSeries({ onError: (i, err) => onError(err), onResult: (i, result, next) => `if(${result} !== undefined) {\n${onResult( result )};\n} else {\n${next()}}\n`, resultReturns, onDone, rethrowIfPossible }); } } const factory = new SyncBailHookCodeFactory(); const TAP_ASYNC = () => { throw new Error("tapAsync is not supported on a SyncBailHook"); }; const TAP_PROMISE = () => { throw new Error("tapPromise is not supported on a SyncBailHook"); }; const COMPILE = function(options) { factory.setup(this, options); return factory.create(options); }; function SyncBailHook(args = [], name = undefined) { const hook = new Hook(args, name); hook.constructor = SyncBailHook; hook.tapAsync = TAP_ASYNC; hook.tapPromise = TAP_PROMISE; hook.compile = COMPILE; return hook; } SyncBailHook.prototype = null; module.exports = SyncBailHook; tapable-2.2.1/lib/SyncHook.js000066400000000000000000000020001411762003000157470ustar00rootroot00000000000000/* 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 SyncHookCodeFactory extends HookCodeFactory { content({ onError, onDone, rethrowIfPossible }) { return this.callTapsSeries({ onError: (i, err) => onError(err), onDone, rethrowIfPossible }); } } const factory = new SyncHookCodeFactory(); const TAP_ASYNC = () => { throw new Error("tapAsync is not supported on a SyncHook"); }; const TAP_PROMISE = () => { throw new Error("tapPromise is not supported on a SyncHook"); }; const COMPILE = function(options) { factory.setup(this, options); return factory.create(options); }; function SyncHook(args = [], name = undefined) { const hook = new Hook(args, name); hook.constructor = SyncHook; hook.tapAsync = TAP_ASYNC; hook.tapPromise = TAP_PROMISE; hook.compile = COMPILE; return hook; } SyncHook.prototype = null; module.exports = SyncHook; tapable-2.2.1/lib/SyncLoopHook.js000066400000000000000000000020411411762003000166060ustar00rootroot00000000000000/* 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 SyncLoopHookCodeFactory extends HookCodeFactory { content({ onError, onDone, rethrowIfPossible }) { return this.callTapsLooping({ onError: (i, err) => onError(err), onDone, rethrowIfPossible }); } } const factory = new SyncLoopHookCodeFactory(); const TAP_ASYNC = () => { throw new Error("tapAsync is not supported on a SyncLoopHook"); }; const TAP_PROMISE = () => { throw new Error("tapPromise is not supported on a SyncLoopHook"); }; const COMPILE = function(options) { factory.setup(this, options); return factory.create(options); }; function SyncLoopHook(args = [], name = undefined) { const hook = new Hook(args, name); hook.constructor = SyncLoopHook; hook.tapAsync = TAP_ASYNC; hook.tapPromise = TAP_PROMISE; hook.compile = COMPILE; return hook; } SyncLoopHook.prototype = null; module.exports = SyncLoopHook; tapable-2.2.1/lib/SyncWaterfallHook.js000066400000000000000000000027061411762003000176260ustar00rootroot00000000000000/* 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, resultReturns, 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]), doneReturns: resultReturns, rethrowIfPossible }); } } const factory = new SyncWaterfallHookCodeFactory(); const TAP_ASYNC = () => { throw new Error("tapAsync is not supported on a SyncWaterfallHook"); }; const TAP_PROMISE = () => { throw new Error("tapPromise is not supported on a SyncWaterfallHook"); }; const COMPILE = function(options) { factory.setup(this, options); return factory.create(options); }; function SyncWaterfallHook(args = [], name = undefined) { if (args.length < 1) throw new Error("Waterfall hooks must have at least one argument"); const hook = new Hook(args, name); hook.constructor = SyncWaterfallHook; hook.tapAsync = TAP_ASYNC; hook.tapPromise = TAP_PROMISE; hook.compile = COMPILE; return hook; } SyncWaterfallHook.prototype = null; module.exports = SyncWaterfallHook; tapable-2.2.1/lib/__tests__/000077500000000000000000000000001411762003000156225ustar00rootroot00000000000000tapable-2.2.1/lib/__tests__/AsyncParallelHooks.js000066400000000000000000000014371411762003000217230ustar00rootroot00000000000000/* MIT License http://www.opensource.org/licenses/mit-license.php Author Tobias Koppers @sokra */ "use strict"; const HookTester = require("./HookTester"); const AsyncParallelHook = require("../AsyncParallelHook"); const AsyncParallelBailHook = require("../AsyncParallelBailHook"); describe("AsyncParallelHook", () => { it("should have to correct behavior", async () => { const tester = new HookTester(args => new AsyncParallelHook(args)); const result = await tester.run(); expect(result).toMatchSnapshot(); }, 15000); }); describe("AsyncParallelBailHook", () => { it("should have to correct behavior", async () => { const tester = new HookTester(args => new AsyncParallelBailHook(args)); const result = await tester.run(); expect(result).toMatchSnapshot(); }, 15000); }); tapable-2.2.1/lib/__tests__/AsyncSeriesHooks.js000066400000000000000000000046271411762003000214250ustar00rootroot00000000000000/* MIT License http://www.opensource.org/licenses/mit-license.php Author Tobias Koppers @sokra */ "use strict"; const HookTester = require("./HookTester"); const AsyncSeriesHook = require("../AsyncSeriesHook"); const AsyncSeriesBailHook = require("../AsyncSeriesBailHook"); const AsyncSeriesWaterfallHook = require("../AsyncSeriesWaterfallHook"); const AsyncSeriesLoopHook = require("../AsyncSeriesLoopHook"); describe("AsyncSeriesHook", () => { it("should not have call method", () => { const hook = new AsyncSeriesHook([]); expect(hook.call).toEqual(undefined); expect(typeof hook.callAsync).toEqual("function"); expect(typeof hook.promise).toEqual("function"); }); it("should have tap method", done => { const hook = new AsyncSeriesHook([]); const mockTap = jest.fn(); hook.tap("somePlugin", mockTap); hook.callAsync(() => done()); expect(mockTap).toHaveBeenCalledTimes(1); }); it("should have promise method", done => { const hook = new AsyncSeriesHook([]); const mockTap = jest.fn(); hook.tap("somePlugin", mockTap); hook.promise().then(() => done()); expect(mockTap).toHaveBeenCalledTimes(1); }); it("should have to correct behavior", async () => { const tester = new HookTester(args => new AsyncSeriesHook(args)); const result = await tester.run(); expect(result).toMatchSnapshot(); }); }); describe("AsyncSeriesBailHook", () => { it("should have to correct behavior", async () => { const tester = new HookTester(args => new AsyncSeriesBailHook(args)); const result = await tester.run(); expect(result).toMatchSnapshot(); }); it("should not crash with many plugins", () => { const hook = new AsyncSeriesBailHook(["x"]); for (let i = 0; i < 1000; i++) { hook.tap("Test", () => 42); } hook.tapAsync("Test", (x, callback) => callback(null, 42)); hook.tapPromise("Test", x => Promise.resolve(42)); return expect(hook.promise()).resolves.toBe(42); }); }); describe("AsyncSeriesWaterfallHook", () => { it("should have to correct behavior", async () => { const tester = new HookTester(args => new AsyncSeriesWaterfallHook(args)); const result = await tester.run(); expect(result).toMatchSnapshot(); }); }); describe("AsyncSeriesLoopHook", () => { it("should have to correct behavior", async () => { const tester = new HookTester(args => new AsyncSeriesLoopHook(args)); const result = await tester.runForLoop(); expect(result).toMatchSnapshot(); }); }); tapable-2.2.1/lib/__tests__/Hook.js000066400000000000000000000025361411762003000170660ustar00rootroot00000000000000/* MIT License http://www.opensource.org/licenses/mit-license.php Author Tobias Koppers @sokra */ "use strict"; const SyncHook = require("../SyncHook"); describe("Hook", () => { it("should allow to insert hooks before others and in stages", () => { const hook = new SyncHook(); const calls = []; hook.tap("A", () => calls.push("A")); hook.tap( { name: "B", before: "A" }, () => calls.push("B") ); calls.length = 0; hook.call(); expect(calls).toEqual(["B", "A"]); hook.tap( { name: "C", before: ["A", "B"] }, () => calls.push("C") ); calls.length = 0; hook.call(); expect(calls).toEqual(["C", "B", "A"]); hook.tap( { name: "D", before: "B" }, () => calls.push("D") ); calls.length = 0; hook.call(); expect(calls).toEqual(["C", "D", "B", "A"]); hook.tap( { name: "E", stage: -5 }, () => calls.push("E") ); hook.tap( { name: "F", stage: -3 }, () => calls.push("F") ); calls.length = 0; hook.call(); expect(calls).toEqual(["E", "F", "C", "D", "B", "A"]); }); it("should throw without a valid name", () => { const hook = new SyncHook(); expect(() => hook.tap("", () => {})).toThrow( new Error("Missing name for tap") ); expect(() => hook.tap(" ", () => {})).toThrow( new Error("Missing name for tap") ); }); }); tapable-2.2.1/lib/__tests__/HookCodeFactory.js000066400000000000000000000133601411762003000212060ustar00rootroot00000000000000/* MIT License http://www.opensource.org/licenses/mit-license.php Author Tobias Koppers @sokra */ "use strict"; const HookCodeFactory = require("../HookCodeFactory"); const expectNoSyntaxError = code => { new Function("a, b, c", code); }; const pretty = code => { return require("prettier").format(code, { filepath: "code.js" }); }; describe("HookCodeFactory", () => { describe("callTap", () => { const factoryConfigurations = { "no args, no intercept": { args: [], taps: [ { type: "sync" }, { type: "async" }, { type: "promise" } ], interceptors: [] }, "with args, no intercept": { args: ["a", "b", "c"], taps: [ { type: "sync" }, { type: "async" }, { type: "promise" } ], interceptors: [] }, "with args, with intercept": { args: ["a", "b", "c"], taps: [ { type: "sync" }, { type: "async" }, { type: "promise" } ], interceptors: [ { call: () => {}, tap: () => {} }, { tap: () => {} }, { call: () => {} } ] } }; for (const configurationName in factoryConfigurations) { describe(`(${configurationName})`, () => { let factory; beforeEach(() => { factory = new HookCodeFactory(); factory.init(factoryConfigurations[configurationName]); }); it("sync without onResult", () => { const code = factory.callTap(0, { onError: err => `onError(${err});\n`, onDone: () => "onDone();\n" }); expect(code).toMatchSnapshot(); expect(pretty(code)).toMatchSnapshot(); expectNoSyntaxError(code); }); it("sync with onResult", () => { const code = factory.callTap(0, { onError: err => `onError(${err});\n`, onResult: result => `onResult(${result});\n` }); expect(code).toMatchSnapshot(); expect(pretty(code)).toMatchSnapshot(); expectNoSyntaxError(code); }); it("async without onResult", () => { const code = factory.callTap(1, { onError: err => `onError(${err});\n`, onDone: () => "onDone();\n" }); expect(code).toMatchSnapshot(); expect(pretty(code)).toMatchSnapshot(); expectNoSyntaxError(code); }); it("async with onResult", () => { const code = factory.callTap(1, { onError: err => `onError(${err});\n`, onResult: result => `onResult(${result});\n` }); expect(code).toMatchSnapshot(); expect(pretty(code)).toMatchSnapshot(); expectNoSyntaxError(code); }); it("promise without onResult", () => { const code = factory.callTap(2, { onError: err => `onError(${err});\n`, onDone: () => "onDone();\n" }); expect(code).toMatchSnapshot(); expect(pretty(code)).toMatchSnapshot(); expectNoSyntaxError(code); }); it("promise with onResult", () => { const code = factory.callTap(2, { onError: err => `onError(${err});\n`, onResult: result => `onResult(${result});\n` }); expect(code).toMatchSnapshot(); expect(pretty(code)).toMatchSnapshot(); expectNoSyntaxError(code); }); }); } }); describe("taps", () => { const factoryConfigurations = { none: { args: ["a", "b", "c"], taps: [], interceptors: [] }, "single sync": { args: ["a", "b", "c"], taps: [ { type: "sync" } ], interceptors: [] }, "multiple sync": { args: ["a", "b", "c"], taps: [ { type: "sync" }, { type: "sync" }, { type: "sync" } ], interceptors: [] }, "single async": { args: ["a", "b", "c"], taps: [ { type: "async" } ], interceptors: [] }, "single promise": { args: ["a", "b", "c"], taps: [ { type: "promise" } ], interceptors: [] }, mixed: { args: ["a", "b", "c"], taps: [ { type: "sync" }, { type: "async" }, { type: "promise" } ], interceptors: [] }, mixed2: { args: ["a", "b", "c"], taps: [ { type: "async" }, { type: "promise" }, { type: "sync" } ], interceptors: [] } }; for (const configurationName in factoryConfigurations) { describe(`(${configurationName})`, () => { let factory; beforeEach(() => { factory = new HookCodeFactory(); factory.init(factoryConfigurations[configurationName]); }); it("callTapsSeries", () => { const code = factory.callTapsSeries({ onError: (i, err) => `onError(${i}, ${err});\n`, onResult: (i, result, next, doneBreak) => `onResult(${i}, ${result}, () => {\n${next()}}, () => {\n${doneBreak()}});\n`, onDone: () => "onDone();\n", rethrowIfPossible: true }); expect(code).toMatchSnapshot(); expect(pretty(code)).toMatchSnapshot(); expectNoSyntaxError(code); }); it("callTapsParallel", () => { const code = factory.callTapsParallel({ onError: (i, err) => `onError(${i}, ${err});\n`, onResult: (i, result, done, doneBreak) => `onResult(${i}, ${result}, () => {\n${done()}}, () => {\n${doneBreak()}});\n`, onDone: () => "onDone();\n", rethrowIfPossible: true }); expect(code).toMatchSnapshot(); expect(pretty(code)).toMatchSnapshot(); expectNoSyntaxError(code); }); it("callTapsLooping", () => { const code = factory.callTapsLooping({ onError: (i, err) => `onError(${i}, ${err});\n`, onDone: () => "onDone();\n", rethrowIfPossible: true }); expect(code).toMatchSnapshot(); expect(pretty(code)).toMatchSnapshot(); expectNoSyntaxError(code); }); }); } }); }); tapable-2.2.1/lib/__tests__/HookStackOverflow.js000066400000000000000000000006771411762003000216040ustar00rootroot00000000000000const AsyncSeriesHook = require("../AsyncSeriesHook"); describe("HookStackOverflow", () => { it("should not crash when compiling a large hook", () => { const hook = new AsyncSeriesHook(["a", "b"]); for (let i = 0; i < 10; i++) { hook.tap("TestPlugin", (a, b) => {}); hook.tapAsync("TestPlugin", (a, b, callback) => callback()); hook.tapPromise("TestPlugin", (a, b) => Promise.resolve()); } return hook.promise(1, 2); }); }); tapable-2.2.1/lib/__tests__/HookTester.js000066400000000000000000001020151411762003000202460ustar00rootroot00000000000000/* MIT License http://www.opensource.org/licenses/mit-license.php Author Tobias Koppers @sokra */ "use strict"; describe("HookTester", () => { it("should run", () => {}); }); process.on("unhandledRejection", err => console.error(err.stack)); class HookTester { constructor(hookCreator, sync) { this.hookCreator = hookCreator; this.sync = sync; } async run(syncOnly) { const result = { sync: {}, async: {}, intercept: {} }; if (syncOnly) { await this.runSync(result.sync, "call"); } else { await this.runAsync(result.async, "callAsync"); await this.runAsync(result.async, "promise"); await this.runIntercept(result.intercept, "callAsync"); await this.runIntercept(result.intercept, "promise"); } await this.runSync(result.sync, "callAsync"); await this.runSync(result.sync, "promise"); return result; } async runForLoop(syncOnly) { const result = { sync: {}, async: {} }; if (syncOnly) { await this.runForLoopSync(result.sync, "call"); } else { await this.runForLoopAsync(result.async, "callAsync"); await this.runForLoopAsync(result.async, "promise"); } await this.runForLoopSync(result.sync, "callAsync"); await this.runForLoopSync(result.sync, "promise"); return result; } async runForLoopAsync(result, method) { { const hook = this.createHook([], `${method}BrokenPromise`); hook.tapPromise("promise", () => "this is not a promise"); result[`${method}BrokenPromise`] = await this.gainResult(cb => hook[method](cb) ); } { const hook = this.createHook([], `${method}SinglePromise`); hook.tapPromise("promise", () => { result[`${method}SinglePromiseCalled`] = (result[`${method}SinglePromiseCalled`] || 0) + 1; if (result[`${method}SinglePromiseCalled`] < 42) return Promise.resolve().then(() => true); return Promise.resolve().then(() => {}); }); result[`${method}SinglePromise`] = await this.gainResult(cb => hook[method](cb) ); } { const hook = this.createHook([], `${method}MultiplePromise`); hook.tapPromise("promise1", () => { result[`${method}MultiplePromiseCalled1`] = (result[`${method}MultiplePromiseCalled1`] || 0) + 1; if (result[`${method}MultiplePromiseCalled1`] < 42) return Promise.resolve().then(() => true); return Promise.resolve().then(() => {}); }); hook.tapPromise("promise2", () => { result[`${method}MultiplePromiseCalled2`] = (result[`${method}MultiplePromiseCalled2`] || 0) + 1; if (result[`${method}MultiplePromiseCalled2`] < 42) return Promise.resolve().then(() => true); return Promise.resolve().then(() => {}); }); result[`${method}MultiplePromise`] = await this.gainResult(cb => hook[method](cb) ); } { const hook = this.createHook([], `${method}SingleAsync`); hook.tapAsync("async", callback => { result[`${method}SingleAsyncCalled`] = (result[`${method}SingleAsyncCalled`] || 0) + 1; if (result[`${method}SingleAsyncCalled`] < 42) return Promise.resolve().then(() => callback(null, true)); return Promise.resolve().then(() => callback()); }); result[`${method}SingleAsync`] = await this.gainResult(cb => hook[method](cb) ); } { const hook = this.createHook([], `${method}MultipleAsync`); hook.tapAsync("async1", callback => { result[`${method}MultipleAsyncCalled1`] = (result[`${method}MultipleAsyncCalled1`] || 0) + 1; if (result[`${method}MultipleAsyncCalled1`] < 42) return Promise.resolve().then(() => callback(null, true)); return Promise.resolve().then(() => callback()); }); hook.tapAsync("async2", callback => { result[`${method}MultipleAsyncCalled2`] = (result[`${method}MultipleAsyncCalled2`] || 0) + 1; if (result[`${method}MultipleAsyncCalled2`] < 42) return Promise.resolve().then(() => callback(null, true)); return Promise.resolve().then(() => callback()); }); result[`${method}MultipleAsync`] = await this.gainResult(cb => hook[method](cb) ); } { const hook = this.createHook([], `${method}Mixed`); hook.tapAsync("async1", callback => { result[`${method}MixedCalled1`] = (result[`${method}MixedCalled1`] || 0) + 1; if (result[`${method}MixedCalled1`] < 42) return Promise.resolve().then(() => callback(null, true)); return Promise.resolve().then(() => callback()); }); hook.tap("sync2", () => { result[`${method}MixedCalled2`] = (result[`${method}MixedCalled2`] || 0) + 1; if (result[`${method}MixedCalled2`] < 42) return true; }); hook.tapPromise("promise3", () => { result[`${method}MixedCalled3`] = (result[`${method}MixedCalled3`] || 0) + 1; if (result[`${method}MixedCalled3`] < 42) return Promise.resolve().then(() => true); return Promise.resolve().then(() => {}); }); result[`${method}Mixed`] = await this.gainResult(cb => hook[method](cb)); } } async runForLoopSync(result, method) { { const hook = this.createHook([], `${method}None`); result[`${method}None`] = await this.gainResult(cb => hook[method](cb)); } { const hook = this.createHook(["arg"], `${method}NoneWithArg`); result[`${method}NoneWithArg`] = await this.gainResult(cb => hook[method](42, cb) ); } { const hook = this.createHook([], `${method}SingleSync`); hook.tap("sync", () => { result[`${method}SingleSyncCalled`] = (result[`${method}SingleSyncCalled`] || 0) + 1; if (result[`${method}SingleSyncCalled`] < 42) return true; }); result[`${method}SingleSync`] = await this.gainResult(cb => hook[method](cb) ); } { const hook = this.createHook([], `${method}MultipleSync`); hook.tap("sync1", () => { result[`${method}MultipleSyncCalled1`] = (result[`${method}MultipleSyncCalled1`] || 0) + 1; if (result[`${method}MultipleSyncCalled1`] < 42) return true; }); hook.tap("sync2", () => { result[`${method}MultipleSyncCalled2`] = (result[`${method}MultipleSyncCalled2`] || 0) + 1; if (result[`${method}MultipleSyncCalled2`] < 42) return true; }); result[`${method}MultipleSync`] = await this.gainResult(cb => hook[method](cb) ); } { const hook = this.createHook([], `${method}InterceptedSync`); hook.tap("sync1", () => { result[`${method}InterceptedSyncCalled1`] = (result[`${method}InterceptedSyncCalled1`] || 0) + 1; if (result[`${method}InterceptedSyncCalled1`] < 42) return true; }); hook.tap("sync2", () => { result[`${method}InterceptedSyncCalled2`] = (result[`${method}InterceptedSyncCalled2`] || 0) + 1; if (result[`${method}InterceptedSyncCalled2`] < 42) return true; }); hook.intercept({ call: a => (result[`${method}InterceptedSyncCalledCall`] = (result[`${method}InterceptedSyncCalledCall`] || 0) + 1), loop: a => (result[`${method}InterceptedSyncCalledLoop`] = (result[`${method}InterceptedSyncCalledLoop`] || 0) + 1), tap: tap => { result[`${method}InterceptedSyncCalledTap`] = (result[`${method}InterceptedSyncCalledTap`] || 0) + 1; } }); result[`${method}InterceptedSync`] = await this.gainResult(cb => hook[method](cb) ); } } async runSync(result, method) { { const hook = this.createHook([], `${method}None`); result[`${method}None`] = await this.gainResult(cb => hook[method](cb)); } { const hook = this.createHook(["arg"], `${method}NoneWithArg`); result[`${method}NoneWithArg`] = await this.gainResult(cb => hook[method](42, cb) ); } { const hook = this.createHook([], `${method}SingleSync`); hook.tap("sync", () => { result[`${method}SingleSyncCalled`] = true; return 42; }); result[`${method}SingleSync`] = await this.gainResult(cb => hook[method](cb) ); } { const hook = this.createHook(["myArg"], `${method}SingleSyncWithArg`); hook.tap("sync", nr => { result[`${method}SingleSyncWithArgCalled`] = nr; return nr; }); result[`${method}SingleSyncWithArg`] = await this.gainResult(cb => hook[method](42, cb) ); } { const hook = this.createHook([], `${method}MultipleSync`); hook.tap("sync1", () => { result[`${method}MultipleSyncCalled1`] = true; return 42; }); hook.tap("sync2", () => { result[`${method}MultipleSyncCalled2`] = true; return 43; }); result[`${method}MultipleSync`] = await this.gainResult(cb => hook[method](cb) ); } { const hook = this.createHook(["a"], `${method}MultipleSyncWithArg`); hook.tap("sync1", a => { result[`${method}MultipleSyncWithArgCalled1`] = a; return 42 + a; }); hook.tap("sync2", a => { result[`${method}MultipleSyncWithArgCalled2`] = a; return 43 + a; }); result[`${method}MultipleSyncWithArg`] = await this.gainResult(cb => hook[method](42, cb) ); } { const hook = this.createHook( ["a"], `${method}MultipleSyncWithArgNoReturn` ); hook.tap("sync1", a => { result[`${method}MultipleSyncWithArgNoReturnCalled1`] = a; }); hook.tap("sync2", a => { result[`${method}MultipleSyncWithArgNoReturnCalled2`] = a; }); result[`${method}MultipleSyncWithArgNoReturn`] = await this.gainResult( cb => hook[method](42, cb) ); } { const hook = this.createHook( ["a"], `${method}MultipleSyncWithArgFirstReturn` ); hook.tap("sync1", a => { result[`${method}MultipleSyncWithArgFirstReturnCalled1`] = a; return 42 + a; }); hook.tap("sync2", a => { result[`${method}MultipleSyncWithArgFirstReturnCalled2`] = a; }); result[`${method}MultipleSyncWithArgFirstReturn`] = await this.gainResult( cb => hook[method](42, cb) ); } { const hook = this.createHook( ["a"], `${method}MultipleSyncWithArgLastReturn` ); hook.tap("sync1", a => { result[`${method}MultipleSyncWithArgLastReturnCalled1`] = a; }); hook.tap("sync2", a => { result[`${method}MultipleSyncWithArgLastReturnCalled2`] = a; return 43 + a; }); result[`${method}MultipleSyncWithArgLastReturn`] = await this.gainResult( cb => hook[method](42, cb) ); } { const hook = this.createHook( ["a", "b", "c"], `${method}MultipleSyncWithArgs` ); hook.tap("sync1", (a, b, c) => { result[`${method}MultipleSyncWithArgsCalled1`] = [a, b, c]; return a + b + c; }); hook.tap("sync2", (a, b, c) => { result[`${method}MultipleSyncWithArgsCalled2`] = [a, b, c]; return a + b + c + 1; }); result[`${method}MultipleSyncWithArgs`] = await this.gainResult(cb => hook[method](42, 43, 44, cb) ); } { const hook = this.createHook([], `${method}MultipleSyncError`); hook.tap("sync1", () => { result[`${method}MultipleSyncErrorCalled1`] = true; }); hook.tap("sync2", () => { result[`${method}MultipleSyncErrorCalled2`] = true; throw new Error("Error in sync2"); }); hook.tap("sync3", () => { result[`${method}MultipleSyncErrorCalled3`] = true; }); result[`${method}MultipleSyncError`] = await this.gainResult(cb => hook[method](cb) ); } { const hook = this.createHook(["a", "b", "c"], `${method}Intercepted`); hook.intercept({ call: (a, b, c) => { result[`${method}InterceptedCall1`] = [a, b, c]; }, tap: tap => { result[`${method}InterceptedTap1`] = Object.assign({}, tap, { fn: tap.fn.length }); } }); hook.intercept({ call: (a, b, c) => { result[`${method}InterceptedCall2`] = [a, b, c]; }, tap: tap => { if (!result[`${method}InterceptedTap2`]) result[`${method}InterceptedTap2`] = Object.assign({}, tap, { fn: tap.fn.length }); } }); hook.tap("sync1", (a, b, c) => a + b + c); hook.tap("sync2", (a, b) => a + b + 1); result[`${method}Intercepted`] = await this.gainResult(cb => hook[method](1, 2, 3, cb) ); } } async runAsync(result, type) { { const hook = this.createHook([], `${type}None`); result[`${type}None`] = await this.gainResult(cb => hook[type](cb)); } { const hook = this.createHook(["arg"], `${type}NoneWithArg`); result[`${type}NoneWithArg`] = await this.gainResult(cb => hook[type](42, cb) ); } { const hook = this.createHook([], `${type}SingleSync`); hook.tap("sync", () => { result[`${type}SingleSyncCalled1`] = true; return 42; }); result[`${type}SingleSync`] = await this.gainResult(cb => hook[type](cb)); } { const hook = this.createHook(["x"], `${type}SingleSyncWithArg`); hook.tap("sync", arg => { result[`${type}SingleSyncWithArgCalled1`] = arg; return arg + 1; }); result[`${type}SingleSyncWithArg`] = await this.gainResult(cb => hook[type](42, cb) ); } { const hook = this.createHook(["x"], `${type}SingleSyncWithArgNoReturn`); hook.tap("sync", arg => { result[`${type}SingleSyncWithArgNoReturnCalled1`] = arg; }); result[`${type}SingleSyncWithArgNoReturn`] = await this.gainResult(cb => hook[type](42, cb) ); } { const hook = this.createHook([], `${type}MultipleSync`); hook.tap("sync1", () => { result[`${type}MultipleSyncCalled1`] = true; return 42; }); hook.tap("sync2", () => { result[`${type}MultipleSyncCalled2`] = true; return 43; }); result[`${type}MultipleSync`] = await this.gainResult(cb => hook[type](cb) ); } { const hook = this.createHook([], `${type}MultipleSyncLastReturn`); hook.tap("sync1", () => { result[`${type}MultipleSyncLastReturnCalled1`] = true; }); hook.tap("sync2", () => { result[`${type}MultipleSyncLastReturnCalled2`] = true; return 43; }); result[`${type}MultipleSyncLastReturn`] = await this.gainResult(cb => hook[type](cb) ); } { const hook = this.createHook([], `${type}MultipleSyncNoReturn`); hook.tap("sync1", () => { result[`${type}MultipleSyncNoReturnCalled1`] = true; }); hook.tap("sync2", () => { result[`${type}MultipleSyncNoReturnCalled2`] = true; }); result[`${type}MultipleSyncNoReturn`] = await this.gainResult(cb => hook[type](cb) ); } { const hook = this.createHook(["arg"], `${type}MultipleSyncWithArg`); hook.tap("sync1", arg => { result[`${type}MultipleSyncWithArgCalled1`] = arg; return arg + 1; }); hook.tap("sync2", arg => { result[`${type}MultipleSyncWithArgCalled2`] = arg; return arg + 2; }); result[`${type}MultipleSyncWithArg`] = await this.gainResult(cb => hook[type](42, cb) ); } { const hook = this.createHook( ["arg"], `${type}MultipleSyncWithArgNoReturn` ); hook.tap("sync1", arg => { result[`${type}MultipleSyncWithArgNoReturnCalled1`] = arg; }); hook.tap("sync2", arg => { result[`${type}MultipleSyncWithArgNoReturnCalled2`] = arg; }); result[`${type}MultipleSyncWithArgNoReturn`] = await this.gainResult(cb => hook[type](42, cb) ); } { const hook = this.createHook( ["arg"], `${type}MultipleSyncWithArgLastReturn` ); hook.tap("sync1", arg => { result[`${type}MultipleSyncWithArgLastReturnCalled1`] = arg; }); hook.tap("sync2", arg => { result[`${type}MultipleSyncWithArgLastReturnCalled2`] = arg; return arg + 2; }); result[`${type}MultipleSyncWithArgLastReturn`] = await this.gainResult( cb => hook[type](42, cb) ); } { const hook = this.createHook( ["arg"], `${type}MultipleSyncWithArgFirstReturn` ); hook.tap("sync1", arg => { result[`${type}MultipleSyncWithArgFirstReturnCalled1`] = arg; return arg + 1; }); hook.tap("sync2", arg => { result[`${type}MultipleSyncWithArgFirstReturnCalled2`] = arg; }); result[`${type}MultipleSyncWithArgFirstReturn`] = await this.gainResult( cb => hook[type](42, cb) ); } { const hook = this.createHook(["x"], `${type}SingleAsyncWithArg`); hook.tapAsync("async", (arg, callback) => { result[`${type}SingleAsyncWithArgCalled1`] = arg; callback(null, arg); }); result[`${type}SingleAsyncWithArg`] = await this.gainResult(cb => hook[type](42, cb) ); } { const hook = this.createHook(["x"], `${type}MultipleAsyncWithArg`); hook.tapAsync("async1", (arg, callback) => { result[`${type}MultipleAsyncWithArgCalled1`] = arg; callback(null, arg + 1); }); hook.tapAsync("async2", (arg, callback) => { result[`${type}MultipleAsyncWithArgCalled2`] = arg; callback(null, arg + 2); }); result[`${type}MultipleAsyncWithArg`] = await this.gainResult(cb => hook[type](42, cb) ); } { const hook = this.createHook( ["x"], `${type}MultipleAsyncWithArgNoReturn` ); hook.tapAsync("async1", (arg, callback) => { result[`${type}MultipleAsyncWithArgNoReturnCalled1`] = arg; callback(); }); hook.tapAsync("async2", (arg, callback) => { result[`${type}MultipleAsyncWithArgNoReturnCalled2`] = arg; callback(); }); result[`${type}MultipleAsyncWithArgNoReturn`] = await this.gainResult( cb => hook[type](42, cb) ); } { const hook = this.createHook( ["x"], `${type}MultipleAsyncWithArgFirstReturn` ); hook.tapAsync("async1", (arg, callback) => { result[`${type}MultipleAsyncWithArgFirstReturnCalled1`] = arg; callback(null, arg + 1); }); hook.tapAsync("async2", (arg, callback) => { result[`${type}MultipleAsyncWithArgFirstReturnCalled2`] = arg; callback(); }); result[`${type}MultipleAsyncWithArgFirstReturn`] = await this.gainResult( cb => hook[type](42, cb) ); } { const hook = this.createHook( ["x"], `${type}MultipleAsyncWithArgLastReturn` ); hook.tapAsync("async1", (arg, callback) => { result[`${type}MultipleAsyncWithArgLastReturnCalled1`] = arg; callback(); }); hook.tapAsync("async2", (arg, callback) => { result[`${type}MultipleAsyncWithArgLastReturnCalled2`] = arg; callback(null, arg + 2); }); result[`${type}MultipleAsyncWithArgLastReturn`] = await this.gainResult( cb => hook[type](42, cb) ); } { const hook = this.createHook(["x"], `${type}SinglePromiseWithArg`); hook.tapPromise("promise", arg => { result[`${type}SinglePromiseWithArgCalled1`] = arg; return Promise.resolve(arg + 1); }); result[`${type}SinglePromiseWithArg`] = await this.gainResult(cb => hook[type](42, cb) ); } { const hook = this.createHook(["x"], `${type}MultiplePromiseWithArg`); hook.tapPromise("promise1", arg => { result[`${type}MultiplePromiseWithArgCalled1`] = arg; return Promise.resolve(arg + 1); }); hook.tapPromise("promise2", arg => { result[`${type}MultiplePromiseWithArgCalled2`] = arg; return Promise.resolve(arg + 2); }); result[`${type}MultiplePromiseWithArg`] = await this.gainResult(cb => hook[type](42, cb) ); } { const hook = this.createHook( ["x"], `${type}MultiplePromiseWithArgNoReturn` ); hook.tapPromise("promise1", arg => { result[`${type}MultiplePromiseWithArgNoReturnCalled1`] = arg; return Promise.resolve(); }); hook.tapPromise("promise2", arg => { result[`${type}MultiplePromiseWithArgNoReturnCalled2`] = arg; return Promise.resolve(); }); result[`${type}MultiplePromiseWithArgNoReturn`] = await this.gainResult( cb => hook[type](42, cb) ); } { const hook = this.createHook( ["x"], `${type}MultiplePromiseWithArgFirstReturn` ); hook.tapPromise("promise1", arg => { result[`${type}MultiplePromiseWithArgFirstReturnCalled1`] = arg; return Promise.resolve(arg + 1); }); hook.tapPromise("promise2", arg => { result[`${type}MultiplePromiseWithArgFirstReturnCalled2`] = arg; return Promise.resolve(); }); result[ `${type}MultiplePromiseWithArgFirstReturn` ] = await this.gainResult(cb => hook[type](42, cb)); } { const hook = this.createHook( ["x"], `${type}MultiplePromiseWithArgLastReturn` ); hook.tapPromise("promise1", arg => { result[`${type}MultiplePromiseWithArgLastReturnCalled1`] = arg; return Promise.resolve(); }); hook.tapPromise("promise2", arg => { result[`${type}MultiplePromiseWithArgLastReturnCalled2`] = arg; return Promise.resolve(arg + 2); }); result[`${type}MultiplePromiseWithArgLastReturn`] = await this.gainResult( cb => hook[type](42, cb) ); } { const hook = this.createHook(["x"], `${type}MultipleMixed1WithArg`); hook.tapAsync("async", (arg, callback) => { result[`${type}MultipleMixed1WithArgCalled1`] = arg; callback(null, arg + 1); }); hook.tapPromise("promise", arg => { result[`${type}MultipleMixed1WithArgCalled2`] = arg; return Promise.resolve(arg + 2); }); hook.tap("sync", arg => { result[`${type}MultipleMixed1WithArgCalled3`] = arg; return arg + 3; }); result[`${type}MultipleMixed1WithArg`] = await this.gainResult(cb => hook[type](42, cb) ); } { const hook = this.createHook(["x"], `${type}MultipleMixed2WithArg`); hook.tapAsync("async", (arg, callback) => { result[`${type}MultipleMixed2WithArgCalled1`] = arg; setTimeout(() => callback(null, arg + 1), 100); }); hook.tapPromise("promise", arg => { result[`${type}MultipleMixed2WithArgCalled2`] = arg; return Promise.resolve(arg + 2); }); result[`${type}MultipleMixed2WithArg`] = await this.gainResult(cb => hook[type](42, cb) ); } { const hook = this.createHook(["x"], `${type}MultipleMixed3WithArg`); hook.tapAsync("async1", (arg, callback) => { result[`${type}MultipleMixed3WithArgCalled1`] = arg; callback(null, arg + 1); }); hook.tapPromise("promise", arg => { result[`${type}MultipleMixed3WithArgCalled2`] = arg; return Promise.resolve(arg + 2); }); hook.tapAsync("async2", (arg, callback) => { result[`${type}MultipleMixed3WithArgCalled3`] = arg; setTimeout(() => callback(null, arg + 3), 100); }); result[`${type}MultipleMixed3WithArg`] = await this.gainResult(cb => hook[type](42, cb) ); } { const hook = this.createHook([], `${type}MultipleSyncError`); hook.tap("sync1", () => { result[`${type}MultipleSyncErrorCalled1`] = true; }); hook.tap("sync2", () => { throw new Error("Error in sync2"); }); hook.tap("sync3", () => { result[`${type}MultipleSyncErrorCalled3`] = true; }); result[`${type}MultipleSyncError`] = await this.gainResult(cb => hook[type](cb) ); } { const hook = this.createHook([], `${type}MultipleAsyncError`); hook.tapAsync("async1", callback => { result[`${type}MultipleAsyncErrorCalled1`] = true; callback(); }); hook.tapAsync("async2", callback => { callback(new Error("Error in async2")); }); hook.tapAsync("async3", callback => { result[`${type}MultipleAsyncErrorCalled3`] = true; callback(); }); result[`${type}MultipleAsyncError`] = await this.gainResult(cb => hook[type](cb) ); } { const hook = this.createHook([], `${type}MultipleAsyncLateError`); hook.tapAsync("async1", callback => { result[`${type}MultipleAsyncLateErrorCalled1`] = true; callback(); }); hook.tapAsync("async2", callback => { setTimeout(() => callback(new Error("Error in async2")), 100); }); hook.tapAsync("async3", callback => { result[`${type}MultipleAsyncLateErrorCalled3`] = true; callback(); }); result[`${type}MultipleAsyncLateError`] = await this.gainResult(cb => hook[type](cb) ); } { const hook = this.createHook( [], `${type}MultipleAsyncLateErrorEarlyResult1` ); hook.tapAsync("async1", callback => { result[`${type}MultipleAsyncLateErrorEarlyResult1Called1`] = true; callback(); }); hook.tapAsync("async2", callback => { setTimeout(() => callback(new Error("Error in async2")), 100); }); hook.tapAsync("async3", callback => { result[`${type}MultipleAsyncLateErrorEarlyResult1Called3`] = true; callback(null, 7); }); result[ `${type}MultipleAsyncLateErrorEarlyResult1` ] = await this.gainResult(cb => hook[type](cb)); } { const hook = this.createHook( [], `${type}MultipleAsyncLateErrorEarlyResult2` ); hook.tapAsync("async1", callback => { result[`${type}MultipleAsyncLateErrorEarlyResult2Called1`] = true; setTimeout(() => callback(null, 42), 200); }); hook.tapAsync("async2", callback => { setTimeout(() => callback(new Error("Error in async2")), 100); }); hook.tapAsync("async3", callback => { result[`${type}MultipleAsyncLateErrorEarlyResult2Called3`] = true; callback(null, 7); }); result[ `${type}MultipleAsyncLateErrorEarlyResult2` ] = await this.gainResult(cb => hook[type](cb)); } { const hook = this.createHook([], `${type}MultipleAsyncEarlyError`); hook.tapAsync("async1", callback => { result[`${type}MultipleAsyncEarlyErrorCalled1`] = true; setTimeout(() => callback(), 100); }); hook.tapAsync("async2", callback => { callback(new Error("Error in async2")); }); hook.tapAsync("async3", callback => { result[`${type}MultipleAsyncEarlyErrorCalled3`] = true; setTimeout(() => callback(), 100); }); result[`${type}MultipleAsyncEarlyError`] = await this.gainResult(cb => hook[type](cb) ); } { const hook = this.createHook([], `${type}MultiplePromiseError`); hook.tapPromise("promise1", () => { result[`${type}MultiplePromiseErrorCalled1`] = true; return Promise.resolve(); }); hook.tapPromise("promise2", () => { return Promise.resolve().then(() => { throw new Error("Error in async2"); }); }); hook.tapPromise("promise3", () => { result[`${type}MultiplePromiseErrorCalled3`] = true; return Promise.resolve(); }); result[`${type}MultiplePromiseError`] = await this.gainResult(cb => hook[type](cb) ); } { const hook = this.createHook([], `${type}MultiplePromiseLateError`); hook.tapPromise("promise1", () => { result[`${type}MultiplePromiseLateErrorCalled1`] = true; return Promise.resolve(); }); hook.tapPromise("promise2", () => { return new Promise((resolve, reject) => { setTimeout(() => reject(new Error("Error in async2")), 100); }); }); hook.tapPromise("promise3", () => { result[`${type}MultiplePromiseLateErrorCalled3`] = true; return Promise.resolve(); }); result[`${type}MultiplePromiseLateError`] = await this.gainResult(cb => hook[type](cb) ); } { const hook = this.createHook([], `${type}MultiplePromiseEarlyError`); hook.tapPromise("promise1", () => { result[`${type}MultiplePromiseEarlyErrorCalled1`] = true; return new Promise(resolve => setTimeout(() => resolve(), 100)); }); hook.tapPromise("promise2", () => { return Promise.resolve().then(() => { throw new Error("Error in async2"); }); }); hook.tapPromise("promise3", () => { result[`${type}MultiplePromiseEarlyErrorCalled3`] = true; return new Promise(resolve => setTimeout(() => resolve(), 100)); }); result[`${type}MultiplePromiseEarlyError`] = await this.gainResult(cb => hook[type](cb) ); } { const hook = this.createHook(["x"], `${type}MultipleMixedError1WithArg`); hook.tapAsync("async", (arg, callback) => { result[`${type}MultipleMixedError1WithArgCalled1`] = arg; callback(null, arg); }); hook.tapPromise("promise", arg => { result[`${type}MultipleMixedError1WithArgCalled2`] = arg; return Promise.resolve(arg + 1); }); hook.tap("sync", arg => { result[`${type}MultipleMixedError1WithArgCalled3`] = arg; throw new Error("Error in sync"); }); result[`${type}MultipleMixedError1WithArg`] = await this.gainResult(cb => hook[type](42, cb) ); } { const hook = this.createHook(["x"], `${type}MultipleMixedError2WithArg`); hook.tapAsync("async", (arg, callback) => { result[`${type}MultipleMixedError2WithArgCalled1`] = arg; callback(null, arg); }); hook.tapPromise("promise", arg => { result[`${type}MultipleMixedError2WithArgCalled2`] = arg; return Promise.resolve().then(() => { throw new Error("Error in promise"); }); }); hook.tap("sync", arg => { result[`${type}MultipleMixedError2WithArgCalled3`] = arg; return arg + 2; }); result[`${type}MultipleMixedError2WithArg`] = await this.gainResult(cb => hook[type](42, cb) ); } { const hook = this.createHook(["x"], `${type}MultipleMixedError3WithArg`); hook.tapAsync("async", (arg, callback) => { result[`${type}MultipleMixedError3WithArgCalled1`] = arg; callback(new Error("Error in async")); }); hook.tapPromise("promise", arg => { result[`${type}MultipleMixedError3WithArgCalled2`] = arg; return Promise.resolve(arg + 1); }); hook.tap("sync", arg => { result[`${type}MultipleMixedError3WithArgCalled3`] = arg; return arg + 2; }); result[`${type}MultipleMixedError3WithArg`] = await this.gainResult(cb => hook[type](42, cb) ); } { const hook = this.createHook([], `${type}MultipleMixedLateError`); hook.tapAsync("async", callback => { result[`${type}MultipleMixedLateErrorCalled1`] = true; setTimeout(() => callback(new Error("Error in async")), 100); }); hook.tapPromise("promise", () => { result[`${type}MultipleMixedLateErrorCalled2`] = true; return Promise.resolve(42); }); hook.tap("sync", () => { result[`${type}MultipleMixedLateErrorCalled3`] = true; return 43; }); result[`${type}MultipleMixedLateError`] = await this.gainResult(cb => hook[type](cb) ); } } async runIntercept(result, type) { { const hook = this.createHook(["a", "b", "c"], `${type}Intercepted`); hook.intercept({ call: (a, b, c) => { result[`${type}InterceptedCall1`] = [a, b, c]; }, done: () => { result[`${type}InterceptedDone1`] = true; }, result: r => { result[`${type}InterceptedResult1`] = r; }, error: err => { result[`${type}InterceptedError1`] = err; }, tap: tap => { result[`${type}InterceptedTap1`] = Object.assign({}, tap, { fn: tap.fn.length }); } }); hook.intercept({ call: (a, b, c) => { result[`${type}InterceptedCall2`] = [a, b, c]; }, done: () => { result[`${type}InterceptedDone2`] = true; }, result: r => { result[`${type}InterceptedResult2`] = r; }, error: err => { result[`${type}InterceptedError2`] = err; }, tap: tap => { if (!result[`${type}InterceptedTap2`]) result[`${type}InterceptedTap2`] = Object.assign({}, tap, { fn: tap.fn.length }); } }); hook.tap("sync", (a, b, c) => a + b + c); hook.tapPromise("promise", (a, b) => Promise.resolve(a + b + 1)); result[`${type}Intercepted`] = await this.gainResult(cb => hook[type](1, 2, 3, cb) ); } { const hook = this.createHook( ["a", "b", "c"], `${type}ContextIntercepted` ); hook.intercept({ call: (context, a, b, c) => { context.number = 42; result[`${type}ContextInterceptedCall1`] = [context, a, b, c]; }, loop: (context, a, b, c) => { context.number2 = 88; result[`${type}ContextInterceptedLoop1`] = [context, a, b, c]; }, tap: (context, tap) => { result[`${type}ContextInterceptedTap1`] = context; }, context: true }); hook.intercept({ call: (a, b, c) => { result[`${type}ContextInterceptedCall2`] = [a, b, c]; } }); hook.tap( { name: "sync", context: true }, (context, a, b, c) => context.number + a + b + c ); result[`${type}ContextIntercepted`] = await this.gainResult(cb => hook[type](1, 2, 3, cb) ); } { const hook = this.createHook( ["a", "b", "c"], `${type}UnusedContextIntercepted` ); hook.intercept({ call: (context, a, b, c) => { result[`${type}UnusedContextInterceptedCall1`] = [context, a, b, c]; }, tap: (context, tap) => { result[`${type}UnusedContextInterceptedTap1`] = context; }, context: true }); hook.intercept({ call: (a, b, c) => { result[`${type}UnusedContextInterceptedCall2`] = [a, b, c]; } }); hook.tap("sync", (a, b, c) => a + b + c); result[`${type}UnusedContextIntercepted`] = await this.gainResult(cb => hook[type](1, 2, 3, cb) ); } } gainResult(fn) { return Promise.race([ new Promise(resolve => { try { const ret = fn((err, result) => { if (err) { resolve({ type: "async", error: err.message }); } else { resolve({ type: "async", value: result }); } }); if (ret instanceof Promise) { resolve( ret.then( res => ({ type: "promise", value: res }), err => ({ type: "promise", error: err.message }) ) ); } else if (ret !== undefined) { resolve({ type: "return", value: ret }); } } catch (e) { resolve({ error: e.message }); } }), new Promise(resolve => { setTimeout( () => resolve({ type: "no result" }), 1000 ); }) ]); } createHook(args, name) { try { return this.hookCreator(args, name); } catch (err) { return { tap: () => {}, tapPromise: () => {}, tapAsync: () => {}, intercept: () => {}, call: () => { throw err; }, callAsync: () => { throw err; }, promise: () => { throw err; } }; } } } module.exports = HookTester; tapable-2.2.1/lib/__tests__/MultiHook.js000066400000000000000000000035431411762003000201000ustar00rootroot00000000000000/* MIT License http://www.opensource.org/licenses/mit-license.php Author Tobias Koppers @sokra */ "use strict"; const MultiHook = require("../MultiHook"); describe("MultiHook", () => { const redirectedMethods = ["tap", "tapAsync", "tapPromise"]; for (const name of redirectedMethods) { it(`should redirect ${name}`, () => { const calls = []; const fakeHook = { [name]: (options, fn) => { calls.push({ options, fn }); } }; new MultiHook([fakeHook, fakeHook])[name]("options", "fn"); expect(calls).toEqual([ { options: "options", fn: "fn" }, { options: "options", fn: "fn" } ]); }); } it("should redirect intercept", () => { const calls = []; const fakeHook = { intercept: interceptor => { calls.push(interceptor); } }; new MultiHook([fakeHook, fakeHook]).intercept("interceptor"); expect(calls).toEqual(["interceptor", "interceptor"]); }); it("should redirect withOptions", () => { const calls = []; const fakeHook = { withOptions: options => { calls.push(options); return { tap: (options, fn) => { calls.push({ options, fn }); } }; } }; const newHook = new MultiHook([fakeHook, fakeHook]).withOptions("options"); newHook.tap("options", "fn"); expect(calls).toEqual([ "options", "options", { options: "options", fn: "fn" }, { options: "options", fn: "fn" } ]); }); it("should redirect isUsed", () => { const calls = []; const fakeHook1 = { isUsed: () => { return true; } }; const fakeHook2 = { isUsed: () => { return false; } }; expect(new MultiHook([fakeHook1, fakeHook1]).isUsed()).toEqual(true); expect(new MultiHook([fakeHook1, fakeHook2]).isUsed()).toEqual(true); expect(new MultiHook([fakeHook2, fakeHook1]).isUsed()).toEqual(true); expect(new MultiHook([fakeHook2, fakeHook2]).isUsed()).toEqual(false); }); }); tapable-2.2.1/lib/__tests__/SyncBailHook.js000066400000000000000000000052521411762003000205110ustar00rootroot00000000000000/* MIT License http://www.opensource.org/licenses/mit-license.php Author Tobias Koppers @sokra */ "use strict"; const SyncBailHook = require("../SyncBailHook"); describe("SyncBailHook", () => { it("should allow to create sync bail hooks", async () => { const h1 = new SyncBailHook(["a"]); const h2 = new SyncBailHook(["a", "b"]); let r = h1.call(1); expect(r).toEqual(undefined); h1.tap("A", a => undefined); h2.tap("A", (a, b) => [a, b]); expect(h1.call(1)).toEqual(undefined); expect(await h1.promise(1)).toEqual(undefined); expect(await pify(cb => h1.callAsync(1, cb))).toEqual(undefined); expect(h2.call(1, 2)).toEqual([1, 2]); expect(await h2.promise(1, 2)).toEqual([1, 2]); expect(await pify(cb => h2.callAsync(1, 2, cb))).toEqual([1, 2]); h1.tap("B", a => "ok" + a); h2.tap("B", (a, b) => "wrong"); expect(h1.call(10)).toEqual("ok10"); expect(await h1.promise(10)).toEqual("ok10"); expect(await pify(cb => h1.callAsync(10, cb))).toEqual("ok10"); expect(h2.call(10, 20)).toEqual([10, 20]); expect(await h2.promise(10, 20)).toEqual([10, 20]); expect(await pify(cb => h2.callAsync(10, 20, cb))).toEqual([10, 20]); }); it("should bail on non-null return", async () => { const h1 = new SyncBailHook(["a"]); const mockCall1 = jest.fn(); const mockCall2 = jest.fn(() => "B"); const mockCall3 = jest.fn(() => "C"); h1.tap("A", mockCall1); h1.tap("B", mockCall2); h1.tap("C", mockCall3); expect(h1.call()).toEqual("B"); expect(mockCall1).toHaveBeenCalledTimes(1); expect(mockCall2).toHaveBeenCalledTimes(1); expect(mockCall3).toHaveBeenCalledTimes(0); }); it("should allow to intercept calls", () => { const hook = new SyncBailHook(["x"]); const mockCall = jest.fn(); const mockTap = jest.fn(x => x); hook.intercept({ call: mockCall, tap: mockTap }); hook.call(5); expect(mockCall).toHaveBeenLastCalledWith(5); expect(mockTap).not.toHaveBeenCalled(); hook.tap("test", () => 10); hook.call(7); expect(mockCall).toHaveBeenLastCalledWith(7); expect(mockTap).toHaveBeenCalled(); }); it("should throw on tapAsync", () => { const hook = new SyncBailHook(["x"]); expect(() => hook.tapAsync()).toThrow(/tapAsync/); }); it("should throw on tapPromise", () => { const hook = new SyncBailHook(["x"]); expect(() => hook.tapPromise()).toThrow(/tapPromise/); }); it("should not crash with many plugins", () => { const hook = new SyncBailHook(["x"]); for (let i = 0; i < 1000; i++) { hook.tap("Test", () => 42); } expect(hook.call()).toBe(42); }); }); function pify(fn) { return new Promise((resolve, reject) => { fn((err, result) => { if (err) reject(err); else resolve(result); }); }); } tapable-2.2.1/lib/__tests__/SyncHook.js000066400000000000000000000062431411762003000177220ustar00rootroot00000000000000/* MIT License http://www.opensource.org/licenses/mit-license.php Author Tobias Koppers @sokra */ "use strict"; const SyncHook = require("../SyncHook"); describe("SyncHook", () => { it("should allow to create sync hooks", async () => { const h0 = new SyncHook(); const h1 = new SyncHook(["test"]); const h2 = new SyncHook(["test", "arg2"]); const h3 = new SyncHook(["test", "arg2", "arg3"]); h0.call(); await h0.promise(); await new Promise(resolve => h0.callAsync(resolve)); const mock0 = jest.fn(); h0.tap("A", mock0); h0.call(); expect(mock0).toHaveBeenLastCalledWith(); const mock1 = jest.fn(); h0.tap("B", mock1); h0.call(); expect(mock1).toHaveBeenLastCalledWith(); const mock2 = jest.fn(); const mock3 = jest.fn(); const mock4 = jest.fn(); const mock5 = jest.fn(); h1.tap("C", mock2); h2.tap("D", mock3); h3.tap("E", mock4); h3.tap("F", mock5); h1.call("1"); h2.call("1", 2); h3.call("1", 2, 3); expect(mock2).toHaveBeenLastCalledWith("1"); expect(mock3).toHaveBeenLastCalledWith("1", 2); expect(mock4).toHaveBeenLastCalledWith("1", 2, 3); expect(mock5).toHaveBeenLastCalledWith("1", 2, 3); await new Promise(resolve => h1.callAsync("a", resolve)); await h2.promise("a", "b"); await new Promise(resolve => h3.callAsync("a", "b", "c", resolve)); expect(mock2).toHaveBeenLastCalledWith("a"); expect(mock3).toHaveBeenLastCalledWith("a", "b"); expect(mock4).toHaveBeenLastCalledWith("a", "b", "c"); expect(mock5).toHaveBeenLastCalledWith("a", "b", "c"); await h3.promise("x", "y"); expect(mock4).toHaveBeenLastCalledWith("x", "y", undefined); expect(mock5).toHaveBeenLastCalledWith("x", "y", undefined); }); it("should sync execute hooks", () => { const h1 = new SyncHook(["a"]); const mockCall1 = jest.fn(); const mockCall2 = jest.fn(() => "B"); const mockCall3 = jest.fn(() => "C"); h1.tap("A", mockCall1); h1.tap("B", mockCall2); h1.tap("C", mockCall3); expect(h1.call()).toEqual(undefined); expect(mockCall1).toHaveBeenCalledTimes(1); expect(mockCall2).toHaveBeenCalledTimes(1); expect(mockCall3).toHaveBeenCalledTimes(1); }); it("should allow to intercept calls", () => { const hook = new SyncHook(["arg1", "arg2"]); const mockCall = jest.fn(); const mock0 = jest.fn(); const mockRegister = jest.fn(x => ({ name: "huh", type: "sync", fn: mock0 })); const mock1 = jest.fn(); hook.tap("Test1", mock1); hook.intercept({ call: mockCall, register: mockRegister }); const mock2 = jest.fn(); hook.tap("Test2", mock2); hook.call(1, 2); expect(mockCall).toHaveBeenLastCalledWith(1, 2); expect(mockRegister).toHaveBeenLastCalledWith({ type: "sync", name: "Test2", fn: mock2 }); expect(mock1).not.toHaveBeenLastCalledWith(1, 2); expect(mock2).not.toHaveBeenLastCalledWith(1, 2); expect(mock0).toHaveBeenLastCalledWith(1, 2); }); it("should throw error on tapAsync", () => { const hook = new SyncHook(["arg1", "arg2"]); expect(() => hook.tapAsync()).toThrow(/tapAsync/); }); it("should throw error on tapPromise", () => { const hook = new SyncHook(["arg1", "arg2"]); expect(() => hook.tapPromise()).toThrow(/tapPromise/); }); }); tapable-2.2.1/lib/__tests__/SyncHooks.js000066400000000000000000000025121411762003000201000ustar00rootroot00000000000000/* MIT License http://www.opensource.org/licenses/mit-license.php Author Tobias Koppers @sokra */ "use strict"; const HookTester = require("./HookTester"); const SyncHook = require("../SyncHook"); const SyncBailHook = require("../SyncBailHook"); const SyncWaterfallHook = require("../SyncWaterfallHook"); const SyncLoopHook = require("../SyncLoopHook"); describe("SyncHook", () => { it("should have to correct behavior", async () => { const tester = new HookTester(args => new SyncHook(args)); const result = await tester.run(true); expect(result).toMatchSnapshot(); }, 15000); }); describe("SyncBailHook", () => { it("should have to correct behavior", async () => { const tester = new HookTester(args => new SyncBailHook(args)); const result = await tester.run(true); expect(result).toMatchSnapshot(); }, 15000); }); describe("SyncWaterfallHook", () => { it("should have to correct behavior", async () => { const tester = new HookTester(args => new SyncWaterfallHook(args)); const result = await tester.run(true); expect(result).toMatchSnapshot(); }, 15000); }); describe("SyncLoopHook", () => { it("should have to correct behavior", async () => { const tester = new HookTester(args => new SyncLoopHook(args)); const result = await tester.runForLoop(true); expect(result).toMatchSnapshot(); }, 15000); }); tapable-2.2.1/lib/__tests__/SyncWaterfallHook.js000066400000000000000000000103201411762003000215530ustar00rootroot00000000000000/* MIT License http://www.opensource.org/licenses/mit-license.php Author Tobias Koppers @sokra */ "use strict"; const SyncWaterfallHook = require("../SyncWaterfallHook"); describe("SyncWaterfallHook", () => { it("should throw an error when hook has no argument", () => { expect(() => new SyncWaterfallHook()).toThrow( "Waterfall hooks must have at least one argument" ); }); it("should allow to create sync hooks", async () => { const hook = new SyncWaterfallHook(["arg1", "arg2"]); const mock0 = jest.fn(arg => arg + ",0"); const mock1 = jest.fn(arg => arg + ",1"); const mock2 = jest.fn(arg => arg + ",2"); hook.tap("A", mock0); hook.tap("B", mock1); hook.tap("C", mock2); const returnValue0 = hook.call("sync", "a2"); expect(returnValue0).toBe("sync,0,1,2"); expect(mock0).toHaveBeenLastCalledWith("sync", "a2"); expect(mock1).toHaveBeenLastCalledWith("sync,0", "a2"); expect(mock2).toHaveBeenLastCalledWith("sync,0,1", "a2"); const returnValue1 = await new Promise(resolve => hook.callAsync("async", "a2", (...args) => resolve(args)) ); expect(returnValue1).toEqual([null, "async,0,1,2"]); expect(mock0).toHaveBeenLastCalledWith("async", "a2"); expect(mock1).toHaveBeenLastCalledWith("async,0", "a2"); expect(mock2).toHaveBeenLastCalledWith("async,0,1", "a2"); const returnValue2 = await hook.promise("promise", "a2"); expect(returnValue2).toBe("promise,0,1,2"); expect(mock0).toHaveBeenLastCalledWith("promise", "a2"); expect(mock1).toHaveBeenLastCalledWith("promise,0", "a2"); expect(mock2).toHaveBeenLastCalledWith("promise,0,1", "a2"); }); it("should allow to intercept calls", () => { const hook = new SyncWaterfallHook(["arg1", "arg2"]); const mockCall = jest.fn(); const mock0 = jest.fn(() => "mock0"); const mockRegister = jest.fn(x => ({ name: "huh", type: "sync", fn: mock0 })); const mock1 = jest.fn(() => "mock1"); hook.tap("Test1", mock1); hook.intercept({ call: mockCall, register: mockRegister }); const mock2 = jest.fn(() => "mock2"); hook.tap("Test2", mock2); const returnValue = hook.call(1, 2); expect(returnValue).toBe("mock0"); expect(mockCall).toHaveBeenLastCalledWith(1, 2); expect(mockRegister).toHaveBeenLastCalledWith({ type: "sync", name: "Test2", fn: mock2 }); expect(mock1).not.toHaveBeenLastCalledWith(1, 2); expect(mock2).not.toHaveBeenLastCalledWith(1, 2); expect(mock0.mock.calls).toEqual([[1, 2], ["mock0", 2]]); }); it("should allow to create waterfall hooks", async () => { const h1 = new SyncWaterfallHook(["a"]); const h2 = new SyncWaterfallHook(["a", "b"]); expect(h1.call(1)).toEqual(1); h1.tap("A", a => undefined); h2.tap("A", (a, b) => [a, b]); expect(h1.call(1)).toEqual(1); expect(await h1.promise(1)).toEqual(1); expect(await pify(cb => h1.callAsync(1, cb))).toEqual(1); expect(h2.call(1, 2)).toEqual([1, 2]); expect(await h2.promise(1, 2)).toEqual([1, 2]); expect(await pify(cb => h2.callAsync(1, 2, cb))).toEqual([1, 2]); let count = 1; count = h1.call(count + ++count); // 1 + 2 => 3 count = h1.call(count + ++count); // 3 + 4 => 7 count = h1.call(count + ++count); // 7 + 8 => 15 expect(count).toEqual(15); }); it("should throw when args have length less than 1", () => { expect(() => { new SyncWaterfallHook([]); }).toThrow(/Waterfall/); }); it("should allow to intercept calls", () => { const hook = new SyncWaterfallHook(["x"]); const mockCall = jest.fn(); const mockTap = jest.fn(x => x); hook.intercept({ call: mockCall, tap: mockTap }); hook.call(5); expect(mockCall).toHaveBeenLastCalledWith(5); expect(mockTap).not.toHaveBeenCalled(); hook.tap("test", () => 10); hook.call(7); expect(mockCall).toHaveBeenLastCalledWith(7); expect(mockTap).toHaveBeenCalled(); }); it("should throw on tapAsync", () => { const hook = new SyncWaterfallHook(["x"]); expect(() => hook.tapAsync()).toThrow(/tapAsync/); }); it("should throw on tapPromise", () => { const hook = new SyncWaterfallHook(["x"]); expect(() => hook.tapPromise()).toThrow(/tapPromise/); }); }); function pify(fn) { return new Promise((resolve, reject) => { fn((err, result) => { if (err) reject(err); else resolve(result); }); }); } tapable-2.2.1/lib/__tests__/__snapshots__/000077500000000000000000000000001411762003000204405ustar00rootroot00000000000000tapable-2.2.1/lib/__tests__/__snapshots__/AsyncParallelHooks.js.snap000066400000000000000000001244731411762003000255070ustar00rootroot00000000000000// Jest Snapshot v1, https://goo.gl/fbAQLP exports[`AsyncParallelBailHook should have to correct behavior 1`] = ` Object { "async": Object { "callAsyncMultipleAsyncEarlyError": Object { "error": "Error in async2", "type": "async", }, "callAsyncMultipleAsyncEarlyErrorCalled1": true, "callAsyncMultipleAsyncError": Object { "error": "Error in async2", "type": "async", }, "callAsyncMultipleAsyncErrorCalled1": true, "callAsyncMultipleAsyncLateError": Object { "error": "Error in async2", "type": "async", }, "callAsyncMultipleAsyncLateErrorCalled1": true, "callAsyncMultipleAsyncLateErrorCalled3": true, "callAsyncMultipleAsyncLateErrorEarlyResult1": Object { "error": "Error in async2", "type": "async", }, "callAsyncMultipleAsyncLateErrorEarlyResult1Called1": true, "callAsyncMultipleAsyncLateErrorEarlyResult1Called3": true, "callAsyncMultipleAsyncLateErrorEarlyResult2": Object { "type": "async", "value": 42, }, "callAsyncMultipleAsyncLateErrorEarlyResult2Called1": true, "callAsyncMultipleAsyncLateErrorEarlyResult2Called3": true, "callAsyncMultipleAsyncWithArg": Object { "type": "async", "value": 43, }, "callAsyncMultipleAsyncWithArgCalled1": 42, "callAsyncMultipleAsyncWithArgFirstReturn": Object { "type": "async", "value": 43, }, "callAsyncMultipleAsyncWithArgFirstReturnCalled1": 42, "callAsyncMultipleAsyncWithArgLastReturn": Object { "type": "async", "value": 44, }, "callAsyncMultipleAsyncWithArgLastReturnCalled1": 42, "callAsyncMultipleAsyncWithArgLastReturnCalled2": 42, "callAsyncMultipleAsyncWithArgNoReturn": Object { "type": "async", "value": undefined, }, "callAsyncMultipleAsyncWithArgNoReturnCalled1": 42, "callAsyncMultipleAsyncWithArgNoReturnCalled2": 42, "callAsyncMultipleMixed1WithArg": Object { "type": "async", "value": 43, }, "callAsyncMultipleMixed1WithArgCalled1": 42, "callAsyncMultipleMixed2WithArg": Object { "type": "async", "value": 43, }, "callAsyncMultipleMixed2WithArgCalled1": 42, "callAsyncMultipleMixed2WithArgCalled2": 42, "callAsyncMultipleMixed3WithArg": Object { "type": "async", "value": 43, }, "callAsyncMultipleMixed3WithArgCalled1": 42, "callAsyncMultipleMixedError1WithArg": Object { "type": "async", "value": 42, }, "callAsyncMultipleMixedError1WithArgCalled1": 42, "callAsyncMultipleMixedError2WithArg": Object { "type": "async", "value": 42, }, "callAsyncMultipleMixedError2WithArgCalled1": 42, "callAsyncMultipleMixedError3WithArg": Object { "error": "Error in async", "type": "async", }, "callAsyncMultipleMixedError3WithArgCalled1": 42, "callAsyncMultipleMixedLateError": Object { "error": "Error in async", "type": "async", }, "callAsyncMultipleMixedLateErrorCalled1": true, "callAsyncMultipleMixedLateErrorCalled2": true, "callAsyncMultipleMixedLateErrorCalled3": true, "callAsyncMultiplePromiseEarlyError": Object { "error": "Error in async2", "type": "async", }, "callAsyncMultiplePromiseEarlyErrorCalled1": true, "callAsyncMultiplePromiseEarlyErrorCalled3": true, "callAsyncMultiplePromiseError": Object { "error": "Error in async2", "type": "async", }, "callAsyncMultiplePromiseErrorCalled1": true, "callAsyncMultiplePromiseErrorCalled3": true, "callAsyncMultiplePromiseLateError": Object { "error": "Error in async2", "type": "async", }, "callAsyncMultiplePromiseLateErrorCalled1": true, "callAsyncMultiplePromiseLateErrorCalled3": true, "callAsyncMultiplePromiseWithArg": Object { "type": "async", "value": 43, }, "callAsyncMultiplePromiseWithArgCalled1": 42, "callAsyncMultiplePromiseWithArgCalled2": 42, "callAsyncMultiplePromiseWithArgFirstReturn": Object { "type": "async", "value": 43, }, "callAsyncMultiplePromiseWithArgFirstReturnCalled1": 42, "callAsyncMultiplePromiseWithArgFirstReturnCalled2": 42, "callAsyncMultiplePromiseWithArgLastReturn": Object { "type": "async", "value": 44, }, "callAsyncMultiplePromiseWithArgLastReturnCalled1": 42, "callAsyncMultiplePromiseWithArgLastReturnCalled2": 42, "callAsyncMultiplePromiseWithArgNoReturn": Object { "type": "async", "value": undefined, }, "callAsyncMultiplePromiseWithArgNoReturnCalled1": 42, "callAsyncMultiplePromiseWithArgNoReturnCalled2": 42, "callAsyncMultipleSync": Object { "type": "async", "value": 42, }, "callAsyncMultipleSyncCalled1": true, "callAsyncMultipleSyncError": Object { "error": "Error in sync2", "type": "async", }, "callAsyncMultipleSyncErrorCalled1": true, "callAsyncMultipleSyncLastReturn": Object { "type": "async", "value": 43, }, "callAsyncMultipleSyncLastReturnCalled1": true, "callAsyncMultipleSyncLastReturnCalled2": true, "callAsyncMultipleSyncNoReturn": Object { "type": "async", "value": undefined, }, "callAsyncMultipleSyncNoReturnCalled1": true, "callAsyncMultipleSyncNoReturnCalled2": true, "callAsyncMultipleSyncWithArg": Object { "type": "async", "value": 43, }, "callAsyncMultipleSyncWithArgCalled1": 42, "callAsyncMultipleSyncWithArgFirstReturn": Object { "type": "async", "value": 43, }, "callAsyncMultipleSyncWithArgFirstReturnCalled1": 42, "callAsyncMultipleSyncWithArgLastReturn": Object { "type": "async", "value": 44, }, "callAsyncMultipleSyncWithArgLastReturnCalled1": 42, "callAsyncMultipleSyncWithArgLastReturnCalled2": 42, "callAsyncMultipleSyncWithArgNoReturn": Object { "type": "async", "value": undefined, }, "callAsyncMultipleSyncWithArgNoReturnCalled1": 42, "callAsyncMultipleSyncWithArgNoReturnCalled2": 42, "callAsyncNone": Object { "type": "async", "value": undefined, }, "callAsyncNoneWithArg": Object { "type": "async", "value": undefined, }, "callAsyncSingleAsyncWithArg": Object { "type": "async", "value": 42, }, "callAsyncSingleAsyncWithArgCalled1": 42, "callAsyncSinglePromiseWithArg": Object { "type": "async", "value": 43, }, "callAsyncSinglePromiseWithArgCalled1": 42, "callAsyncSingleSync": Object { "type": "async", "value": 42, }, "callAsyncSingleSyncCalled1": true, "callAsyncSingleSyncWithArg": Object { "type": "async", "value": 43, }, "callAsyncSingleSyncWithArgCalled1": 42, "callAsyncSingleSyncWithArgNoReturn": Object { "type": "async", "value": undefined, }, "callAsyncSingleSyncWithArgNoReturnCalled1": 42, "promiseMultipleAsyncEarlyError": Object { "error": "Error in async2", "type": "promise", }, "promiseMultipleAsyncEarlyErrorCalled1": true, "promiseMultipleAsyncError": Object { "error": "Error in async2", "type": "promise", }, "promiseMultipleAsyncErrorCalled1": true, "promiseMultipleAsyncLateError": Object { "error": "Error in async2", "type": "promise", }, "promiseMultipleAsyncLateErrorCalled1": true, "promiseMultipleAsyncLateErrorCalled3": true, "promiseMultipleAsyncLateErrorEarlyResult1": Object { "error": "Error in async2", "type": "promise", }, "promiseMultipleAsyncLateErrorEarlyResult1Called1": true, "promiseMultipleAsyncLateErrorEarlyResult1Called3": true, "promiseMultipleAsyncLateErrorEarlyResult2": Object { "type": "promise", "value": 42, }, "promiseMultipleAsyncLateErrorEarlyResult2Called1": true, "promiseMultipleAsyncLateErrorEarlyResult2Called3": true, "promiseMultipleAsyncWithArg": Object { "type": "promise", "value": 43, }, "promiseMultipleAsyncWithArgCalled1": 42, "promiseMultipleAsyncWithArgFirstReturn": Object { "type": "promise", "value": 43, }, "promiseMultipleAsyncWithArgFirstReturnCalled1": 42, "promiseMultipleAsyncWithArgLastReturn": Object { "type": "promise", "value": 44, }, "promiseMultipleAsyncWithArgLastReturnCalled1": 42, "promiseMultipleAsyncWithArgLastReturnCalled2": 42, "promiseMultipleAsyncWithArgNoReturn": Object { "type": "promise", "value": undefined, }, "promiseMultipleAsyncWithArgNoReturnCalled1": 42, "promiseMultipleAsyncWithArgNoReturnCalled2": 42, "promiseMultipleMixed1WithArg": Object { "type": "promise", "value": 43, }, "promiseMultipleMixed1WithArgCalled1": 42, "promiseMultipleMixed2WithArg": Object { "type": "promise", "value": 43, }, "promiseMultipleMixed2WithArgCalled1": 42, "promiseMultipleMixed2WithArgCalled2": 42, "promiseMultipleMixed3WithArg": Object { "type": "promise", "value": 43, }, "promiseMultipleMixed3WithArgCalled1": 42, "promiseMultipleMixedError1WithArg": Object { "type": "promise", "value": 42, }, "promiseMultipleMixedError1WithArgCalled1": 42, "promiseMultipleMixedError2WithArg": Object { "type": "promise", "value": 42, }, "promiseMultipleMixedError2WithArgCalled1": 42, "promiseMultipleMixedError3WithArg": Object { "error": "Error in async", "type": "promise", }, "promiseMultipleMixedError3WithArgCalled1": 42, "promiseMultipleMixedLateError": Object { "error": "Error in async", "type": "promise", }, "promiseMultipleMixedLateErrorCalled1": true, "promiseMultipleMixedLateErrorCalled2": true, "promiseMultipleMixedLateErrorCalled3": true, "promiseMultiplePromiseEarlyError": Object { "error": "Error in async2", "type": "promise", }, "promiseMultiplePromiseEarlyErrorCalled1": true, "promiseMultiplePromiseEarlyErrorCalled3": true, "promiseMultiplePromiseError": Object { "error": "Error in async2", "type": "promise", }, "promiseMultiplePromiseErrorCalled1": true, "promiseMultiplePromiseErrorCalled3": true, "promiseMultiplePromiseLateError": Object { "error": "Error in async2", "type": "promise", }, "promiseMultiplePromiseLateErrorCalled1": true, "promiseMultiplePromiseLateErrorCalled3": true, "promiseMultiplePromiseWithArg": Object { "type": "promise", "value": 43, }, "promiseMultiplePromiseWithArgCalled1": 42, "promiseMultiplePromiseWithArgCalled2": 42, "promiseMultiplePromiseWithArgFirstReturn": Object { "type": "promise", "value": 43, }, "promiseMultiplePromiseWithArgFirstReturnCalled1": 42, "promiseMultiplePromiseWithArgFirstReturnCalled2": 42, "promiseMultiplePromiseWithArgLastReturn": Object { "type": "promise", "value": 44, }, "promiseMultiplePromiseWithArgLastReturnCalled1": 42, "promiseMultiplePromiseWithArgLastReturnCalled2": 42, "promiseMultiplePromiseWithArgNoReturn": Object { "type": "promise", "value": undefined, }, "promiseMultiplePromiseWithArgNoReturnCalled1": 42, "promiseMultiplePromiseWithArgNoReturnCalled2": 42, "promiseMultipleSync": Object { "type": "promise", "value": 42, }, "promiseMultipleSyncCalled1": true, "promiseMultipleSyncError": Object { "error": "Error in sync2", "type": "promise", }, "promiseMultipleSyncErrorCalled1": true, "promiseMultipleSyncLastReturn": Object { "type": "promise", "value": 43, }, "promiseMultipleSyncLastReturnCalled1": true, "promiseMultipleSyncLastReturnCalled2": true, "promiseMultipleSyncNoReturn": Object { "type": "promise", "value": undefined, }, "promiseMultipleSyncNoReturnCalled1": true, "promiseMultipleSyncNoReturnCalled2": true, "promiseMultipleSyncWithArg": Object { "type": "promise", "value": 43, }, "promiseMultipleSyncWithArgCalled1": 42, "promiseMultipleSyncWithArgFirstReturn": Object { "type": "promise", "value": 43, }, "promiseMultipleSyncWithArgFirstReturnCalled1": 42, "promiseMultipleSyncWithArgLastReturn": Object { "type": "promise", "value": 44, }, "promiseMultipleSyncWithArgLastReturnCalled1": 42, "promiseMultipleSyncWithArgLastReturnCalled2": 42, "promiseMultipleSyncWithArgNoReturn": Object { "type": "promise", "value": undefined, }, "promiseMultipleSyncWithArgNoReturnCalled1": 42, "promiseMultipleSyncWithArgNoReturnCalled2": 42, "promiseNone": Object { "type": "promise", "value": undefined, }, "promiseNoneWithArg": Object { "type": "promise", "value": undefined, }, "promiseSingleAsyncWithArg": Object { "type": "promise", "value": 42, }, "promiseSingleAsyncWithArgCalled1": 42, "promiseSinglePromiseWithArg": Object { "type": "promise", "value": 43, }, "promiseSinglePromiseWithArgCalled1": 42, "promiseSingleSync": Object { "type": "promise", "value": 42, }, "promiseSingleSyncCalled1": true, "promiseSingleSyncWithArg": Object { "type": "promise", "value": 43, }, "promiseSingleSyncWithArgCalled1": 42, "promiseSingleSyncWithArgNoReturn": Object { "type": "promise", "value": undefined, }, "promiseSingleSyncWithArgNoReturnCalled1": 42, }, "intercept": Object { "callAsyncContextIntercepted": Object { "type": "async", "value": 48, }, "callAsyncContextInterceptedCall1": Array [ Object { "number": 42, }, 1, 2, 3, ], "callAsyncContextInterceptedCall2": Array [ 1, 2, 3, ], "callAsyncContextInterceptedTap1": Object { "number": 42, }, "callAsyncIntercepted": Object { "type": "async", "value": 6, }, "callAsyncInterceptedCall1": Array [ 1, 2, 3, ], "callAsyncInterceptedCall2": Array [ 1, 2, 3, ], "callAsyncInterceptedResult1": 6, "callAsyncInterceptedResult2": 6, "callAsyncInterceptedTap1": Object { "fn": 3, "name": "sync", "type": "sync", }, "callAsyncInterceptedTap2": Object { "fn": 3, "name": "sync", "type": "sync", }, "callAsyncUnusedContextIntercepted": Object { "type": "async", "value": 6, }, "callAsyncUnusedContextInterceptedCall1": Array [ undefined, 1, 2, 3, ], "callAsyncUnusedContextInterceptedCall2": Array [ 1, 2, 3, ], "callAsyncUnusedContextInterceptedTap1": undefined, "promiseContextIntercepted": Object { "type": "promise", "value": 48, }, "promiseContextInterceptedCall1": Array [ Object { "number": 42, }, 1, 2, 3, ], "promiseContextInterceptedCall2": Array [ 1, 2, 3, ], "promiseContextInterceptedTap1": Object { "number": 42, }, "promiseIntercepted": Object { "type": "promise", "value": 6, }, "promiseInterceptedCall1": Array [ 1, 2, 3, ], "promiseInterceptedCall2": Array [ 1, 2, 3, ], "promiseInterceptedResult1": 6, "promiseInterceptedResult2": 6, "promiseInterceptedTap1": Object { "fn": 3, "name": "sync", "type": "sync", }, "promiseInterceptedTap2": Object { "fn": 3, "name": "sync", "type": "sync", }, "promiseUnusedContextIntercepted": Object { "type": "promise", "value": 6, }, "promiseUnusedContextInterceptedCall1": Array [ undefined, 1, 2, 3, ], "promiseUnusedContextInterceptedCall2": Array [ 1, 2, 3, ], "promiseUnusedContextInterceptedTap1": undefined, }, "sync": Object { "callAsyncIntercepted": Object { "type": "async", "value": 6, }, "callAsyncInterceptedCall1": Array [ 1, 2, 3, ], "callAsyncInterceptedCall2": Array [ 1, 2, 3, ], "callAsyncInterceptedTap1": Object { "fn": 3, "name": "sync1", "type": "sync", }, "callAsyncInterceptedTap2": Object { "fn": 3, "name": "sync1", "type": "sync", }, "callAsyncMultipleSync": Object { "type": "async", "value": 42, }, "callAsyncMultipleSyncCalled1": true, "callAsyncMultipleSyncError": Object { "error": "Error in sync2", "type": "async", }, "callAsyncMultipleSyncErrorCalled1": true, "callAsyncMultipleSyncErrorCalled2": true, "callAsyncMultipleSyncWithArg": Object { "type": "async", "value": 84, }, "callAsyncMultipleSyncWithArgCalled1": 42, "callAsyncMultipleSyncWithArgFirstReturn": Object { "type": "async", "value": 84, }, "callAsyncMultipleSyncWithArgFirstReturnCalled1": 42, "callAsyncMultipleSyncWithArgLastReturn": Object { "type": "async", "value": 85, }, "callAsyncMultipleSyncWithArgLastReturnCalled1": 42, "callAsyncMultipleSyncWithArgLastReturnCalled2": 42, "callAsyncMultipleSyncWithArgNoReturn": Object { "type": "async", "value": undefined, }, "callAsyncMultipleSyncWithArgNoReturnCalled1": 42, "callAsyncMultipleSyncWithArgNoReturnCalled2": 42, "callAsyncMultipleSyncWithArgs": Object { "type": "async", "value": 129, }, "callAsyncMultipleSyncWithArgsCalled1": Array [ 42, 43, 44, ], "callAsyncNone": Object { "type": "async", "value": undefined, }, "callAsyncNoneWithArg": Object { "type": "async", "value": undefined, }, "callAsyncSingleSync": Object { "type": "async", "value": 42, }, "callAsyncSingleSyncCalled": true, "callAsyncSingleSyncWithArg": Object { "type": "async", "value": 42, }, "callAsyncSingleSyncWithArgCalled": 42, "promiseIntercepted": Object { "type": "promise", "value": 6, }, "promiseInterceptedCall1": Array [ 1, 2, 3, ], "promiseInterceptedCall2": Array [ 1, 2, 3, ], "promiseInterceptedTap1": Object { "fn": 3, "name": "sync1", "type": "sync", }, "promiseInterceptedTap2": Object { "fn": 3, "name": "sync1", "type": "sync", }, "promiseMultipleSync": Object { "type": "promise", "value": 42, }, "promiseMultipleSyncCalled1": true, "promiseMultipleSyncError": Object { "error": "Error in sync2", "type": "promise", }, "promiseMultipleSyncErrorCalled1": true, "promiseMultipleSyncErrorCalled2": true, "promiseMultipleSyncWithArg": Object { "type": "promise", "value": 84, }, "promiseMultipleSyncWithArgCalled1": 42, "promiseMultipleSyncWithArgFirstReturn": Object { "type": "promise", "value": 84, }, "promiseMultipleSyncWithArgFirstReturnCalled1": 42, "promiseMultipleSyncWithArgLastReturn": Object { "type": "promise", "value": 85, }, "promiseMultipleSyncWithArgLastReturnCalled1": 42, "promiseMultipleSyncWithArgLastReturnCalled2": 42, "promiseMultipleSyncWithArgNoReturn": Object { "type": "promise", "value": undefined, }, "promiseMultipleSyncWithArgNoReturnCalled1": 42, "promiseMultipleSyncWithArgNoReturnCalled2": 42, "promiseMultipleSyncWithArgs": Object { "type": "promise", "value": 129, }, "promiseMultipleSyncWithArgsCalled1": Array [ 42, 43, 44, ], "promiseNone": Object { "type": "promise", "value": undefined, }, "promiseNoneWithArg": Object { "type": "promise", "value": undefined, }, "promiseSingleSync": Object { "type": "promise", "value": 42, }, "promiseSingleSyncCalled": true, "promiseSingleSyncWithArg": Object { "type": "promise", "value": 42, }, "promiseSingleSyncWithArgCalled": 42, }, } `; exports[`AsyncParallelHook should have to correct behavior 1`] = ` Object { "async": Object { "callAsyncMultipleAsyncEarlyError": Object { "error": "Error in async2", "type": "async", }, "callAsyncMultipleAsyncEarlyErrorCalled1": true, "callAsyncMultipleAsyncError": Object { "error": "Error in async2", "type": "async", }, "callAsyncMultipleAsyncErrorCalled1": true, "callAsyncMultipleAsyncLateError": Object { "error": "Error in async2", "type": "async", }, "callAsyncMultipleAsyncLateErrorCalled1": true, "callAsyncMultipleAsyncLateErrorCalled3": true, "callAsyncMultipleAsyncLateErrorEarlyResult1": Object { "error": "Error in async2", "type": "async", }, "callAsyncMultipleAsyncLateErrorEarlyResult1Called1": true, "callAsyncMultipleAsyncLateErrorEarlyResult1Called3": true, "callAsyncMultipleAsyncLateErrorEarlyResult2": Object { "error": "Error in async2", "type": "async", }, "callAsyncMultipleAsyncLateErrorEarlyResult2Called1": true, "callAsyncMultipleAsyncLateErrorEarlyResult2Called3": true, "callAsyncMultipleAsyncWithArg": Object { "type": "async", "value": undefined, }, "callAsyncMultipleAsyncWithArgCalled1": 42, "callAsyncMultipleAsyncWithArgCalled2": 42, "callAsyncMultipleAsyncWithArgFirstReturn": Object { "type": "async", "value": undefined, }, "callAsyncMultipleAsyncWithArgFirstReturnCalled1": 42, "callAsyncMultipleAsyncWithArgFirstReturnCalled2": 42, "callAsyncMultipleAsyncWithArgLastReturn": Object { "type": "async", "value": undefined, }, "callAsyncMultipleAsyncWithArgLastReturnCalled1": 42, "callAsyncMultipleAsyncWithArgLastReturnCalled2": 42, "callAsyncMultipleAsyncWithArgNoReturn": Object { "type": "async", "value": undefined, }, "callAsyncMultipleAsyncWithArgNoReturnCalled1": 42, "callAsyncMultipleAsyncWithArgNoReturnCalled2": 42, "callAsyncMultipleMixed1WithArg": Object { "type": "async", "value": undefined, }, "callAsyncMultipleMixed1WithArgCalled1": 42, "callAsyncMultipleMixed1WithArgCalled2": 42, "callAsyncMultipleMixed1WithArgCalled3": 42, "callAsyncMultipleMixed2WithArg": Object { "type": "async", "value": undefined, }, "callAsyncMultipleMixed2WithArgCalled1": 42, "callAsyncMultipleMixed2WithArgCalled2": 42, "callAsyncMultipleMixed3WithArg": Object { "type": "async", "value": undefined, }, "callAsyncMultipleMixed3WithArgCalled1": 42, "callAsyncMultipleMixed3WithArgCalled2": 42, "callAsyncMultipleMixed3WithArgCalled3": 42, "callAsyncMultipleMixedError1WithArg": Object { "error": "Error in sync", "type": "async", }, "callAsyncMultipleMixedError1WithArgCalled1": 42, "callAsyncMultipleMixedError1WithArgCalled2": 42, "callAsyncMultipleMixedError1WithArgCalled3": 42, "callAsyncMultipleMixedError2WithArg": Object { "error": "Error in promise", "type": "async", }, "callAsyncMultipleMixedError2WithArgCalled1": 42, "callAsyncMultipleMixedError2WithArgCalled2": 42, "callAsyncMultipleMixedError2WithArgCalled3": 42, "callAsyncMultipleMixedError3WithArg": Object { "error": "Error in async", "type": "async", }, "callAsyncMultipleMixedError3WithArgCalled1": 42, "callAsyncMultipleMixedLateError": Object { "error": "Error in async", "type": "async", }, "callAsyncMultipleMixedLateErrorCalled1": true, "callAsyncMultipleMixedLateErrorCalled2": true, "callAsyncMultipleMixedLateErrorCalled3": true, "callAsyncMultiplePromiseEarlyError": Object { "error": "Error in async2", "type": "async", }, "callAsyncMultiplePromiseEarlyErrorCalled1": true, "callAsyncMultiplePromiseEarlyErrorCalled3": true, "callAsyncMultiplePromiseError": Object { "error": "Error in async2", "type": "async", }, "callAsyncMultiplePromiseErrorCalled1": true, "callAsyncMultiplePromiseErrorCalled3": true, "callAsyncMultiplePromiseLateError": Object { "error": "Error in async2", "type": "async", }, "callAsyncMultiplePromiseLateErrorCalled1": true, "callAsyncMultiplePromiseLateErrorCalled3": true, "callAsyncMultiplePromiseWithArg": Object { "type": "async", "value": undefined, }, "callAsyncMultiplePromiseWithArgCalled1": 42, "callAsyncMultiplePromiseWithArgCalled2": 42, "callAsyncMultiplePromiseWithArgFirstReturn": Object { "type": "async", "value": undefined, }, "callAsyncMultiplePromiseWithArgFirstReturnCalled1": 42, "callAsyncMultiplePromiseWithArgFirstReturnCalled2": 42, "callAsyncMultiplePromiseWithArgLastReturn": Object { "type": "async", "value": undefined, }, "callAsyncMultiplePromiseWithArgLastReturnCalled1": 42, "callAsyncMultiplePromiseWithArgLastReturnCalled2": 42, "callAsyncMultiplePromiseWithArgNoReturn": Object { "type": "async", "value": undefined, }, "callAsyncMultiplePromiseWithArgNoReturnCalled1": 42, "callAsyncMultiplePromiseWithArgNoReturnCalled2": 42, "callAsyncMultipleSync": Object { "type": "async", "value": undefined, }, "callAsyncMultipleSyncCalled1": true, "callAsyncMultipleSyncCalled2": true, "callAsyncMultipleSyncError": Object { "error": "Error in sync2", "type": "async", }, "callAsyncMultipleSyncErrorCalled1": true, "callAsyncMultipleSyncLastReturn": Object { "type": "async", "value": undefined, }, "callAsyncMultipleSyncLastReturnCalled1": true, "callAsyncMultipleSyncLastReturnCalled2": true, "callAsyncMultipleSyncNoReturn": Object { "type": "async", "value": undefined, }, "callAsyncMultipleSyncNoReturnCalled1": true, "callAsyncMultipleSyncNoReturnCalled2": true, "callAsyncMultipleSyncWithArg": Object { "type": "async", "value": undefined, }, "callAsyncMultipleSyncWithArgCalled1": 42, "callAsyncMultipleSyncWithArgCalled2": 42, "callAsyncMultipleSyncWithArgFirstReturn": Object { "type": "async", "value": undefined, }, "callAsyncMultipleSyncWithArgFirstReturnCalled1": 42, "callAsyncMultipleSyncWithArgFirstReturnCalled2": 42, "callAsyncMultipleSyncWithArgLastReturn": Object { "type": "async", "value": undefined, }, "callAsyncMultipleSyncWithArgLastReturnCalled1": 42, "callAsyncMultipleSyncWithArgLastReturnCalled2": 42, "callAsyncMultipleSyncWithArgNoReturn": Object { "type": "async", "value": undefined, }, "callAsyncMultipleSyncWithArgNoReturnCalled1": 42, "callAsyncMultipleSyncWithArgNoReturnCalled2": 42, "callAsyncNone": Object { "type": "async", "value": undefined, }, "callAsyncNoneWithArg": Object { "type": "async", "value": undefined, }, "callAsyncSingleAsyncWithArg": Object { "type": "async", "value": undefined, }, "callAsyncSingleAsyncWithArgCalled1": 42, "callAsyncSinglePromiseWithArg": Object { "type": "async", "value": undefined, }, "callAsyncSinglePromiseWithArgCalled1": 42, "callAsyncSingleSync": Object { "type": "async", "value": undefined, }, "callAsyncSingleSyncCalled1": true, "callAsyncSingleSyncWithArg": Object { "type": "async", "value": undefined, }, "callAsyncSingleSyncWithArgCalled1": 42, "callAsyncSingleSyncWithArgNoReturn": Object { "type": "async", "value": undefined, }, "callAsyncSingleSyncWithArgNoReturnCalled1": 42, "promiseMultipleAsyncEarlyError": Object { "error": "Error in async2", "type": "promise", }, "promiseMultipleAsyncEarlyErrorCalled1": true, "promiseMultipleAsyncError": Object { "error": "Error in async2", "type": "promise", }, "promiseMultipleAsyncErrorCalled1": true, "promiseMultipleAsyncLateError": Object { "error": "Error in async2", "type": "promise", }, "promiseMultipleAsyncLateErrorCalled1": true, "promiseMultipleAsyncLateErrorCalled3": true, "promiseMultipleAsyncLateErrorEarlyResult1": Object { "error": "Error in async2", "type": "promise", }, "promiseMultipleAsyncLateErrorEarlyResult1Called1": true, "promiseMultipleAsyncLateErrorEarlyResult1Called3": true, "promiseMultipleAsyncLateErrorEarlyResult2": Object { "error": "Error in async2", "type": "promise", }, "promiseMultipleAsyncLateErrorEarlyResult2Called1": true, "promiseMultipleAsyncLateErrorEarlyResult2Called3": true, "promiseMultipleAsyncWithArg": Object { "type": "promise", "value": undefined, }, "promiseMultipleAsyncWithArgCalled1": 42, "promiseMultipleAsyncWithArgCalled2": 42, "promiseMultipleAsyncWithArgFirstReturn": Object { "type": "promise", "value": undefined, }, "promiseMultipleAsyncWithArgFirstReturnCalled1": 42, "promiseMultipleAsyncWithArgFirstReturnCalled2": 42, "promiseMultipleAsyncWithArgLastReturn": Object { "type": "promise", "value": undefined, }, "promiseMultipleAsyncWithArgLastReturnCalled1": 42, "promiseMultipleAsyncWithArgLastReturnCalled2": 42, "promiseMultipleAsyncWithArgNoReturn": Object { "type": "promise", "value": undefined, }, "promiseMultipleAsyncWithArgNoReturnCalled1": 42, "promiseMultipleAsyncWithArgNoReturnCalled2": 42, "promiseMultipleMixed1WithArg": Object { "type": "promise", "value": undefined, }, "promiseMultipleMixed1WithArgCalled1": 42, "promiseMultipleMixed1WithArgCalled2": 42, "promiseMultipleMixed1WithArgCalled3": 42, "promiseMultipleMixed2WithArg": Object { "type": "promise", "value": undefined, }, "promiseMultipleMixed2WithArgCalled1": 42, "promiseMultipleMixed2WithArgCalled2": 42, "promiseMultipleMixed3WithArg": Object { "type": "promise", "value": undefined, }, "promiseMultipleMixed3WithArgCalled1": 42, "promiseMultipleMixed3WithArgCalled2": 42, "promiseMultipleMixed3WithArgCalled3": 42, "promiseMultipleMixedError1WithArg": Object { "error": "Error in sync", "type": "promise", }, "promiseMultipleMixedError1WithArgCalled1": 42, "promiseMultipleMixedError1WithArgCalled2": 42, "promiseMultipleMixedError1WithArgCalled3": 42, "promiseMultipleMixedError2WithArg": Object { "error": "Error in promise", "type": "promise", }, "promiseMultipleMixedError2WithArgCalled1": 42, "promiseMultipleMixedError2WithArgCalled2": 42, "promiseMultipleMixedError2WithArgCalled3": 42, "promiseMultipleMixedError3WithArg": Object { "error": "Error in async", "type": "promise", }, "promiseMultipleMixedError3WithArgCalled1": 42, "promiseMultipleMixedLateError": Object { "error": "Error in async", "type": "promise", }, "promiseMultipleMixedLateErrorCalled1": true, "promiseMultipleMixedLateErrorCalled2": true, "promiseMultipleMixedLateErrorCalled3": true, "promiseMultiplePromiseEarlyError": Object { "error": "Error in async2", "type": "promise", }, "promiseMultiplePromiseEarlyErrorCalled1": true, "promiseMultiplePromiseEarlyErrorCalled3": true, "promiseMultiplePromiseError": Object { "error": "Error in async2", "type": "promise", }, "promiseMultiplePromiseErrorCalled1": true, "promiseMultiplePromiseErrorCalled3": true, "promiseMultiplePromiseLateError": Object { "error": "Error in async2", "type": "promise", }, "promiseMultiplePromiseLateErrorCalled1": true, "promiseMultiplePromiseLateErrorCalled3": true, "promiseMultiplePromiseWithArg": Object { "type": "promise", "value": undefined, }, "promiseMultiplePromiseWithArgCalled1": 42, "promiseMultiplePromiseWithArgCalled2": 42, "promiseMultiplePromiseWithArgFirstReturn": Object { "type": "promise", "value": undefined, }, "promiseMultiplePromiseWithArgFirstReturnCalled1": 42, "promiseMultiplePromiseWithArgFirstReturnCalled2": 42, "promiseMultiplePromiseWithArgLastReturn": Object { "type": "promise", "value": undefined, }, "promiseMultiplePromiseWithArgLastReturnCalled1": 42, "promiseMultiplePromiseWithArgLastReturnCalled2": 42, "promiseMultiplePromiseWithArgNoReturn": Object { "type": "promise", "value": undefined, }, "promiseMultiplePromiseWithArgNoReturnCalled1": 42, "promiseMultiplePromiseWithArgNoReturnCalled2": 42, "promiseMultipleSync": Object { "type": "promise", "value": undefined, }, "promiseMultipleSyncCalled1": true, "promiseMultipleSyncCalled2": true, "promiseMultipleSyncError": Object { "error": "Error in sync2", "type": "promise", }, "promiseMultipleSyncErrorCalled1": true, "promiseMultipleSyncLastReturn": Object { "type": "promise", "value": undefined, }, "promiseMultipleSyncLastReturnCalled1": true, "promiseMultipleSyncLastReturnCalled2": true, "promiseMultipleSyncNoReturn": Object { "type": "promise", "value": undefined, }, "promiseMultipleSyncNoReturnCalled1": true, "promiseMultipleSyncNoReturnCalled2": true, "promiseMultipleSyncWithArg": Object { "type": "promise", "value": undefined, }, "promiseMultipleSyncWithArgCalled1": 42, "promiseMultipleSyncWithArgCalled2": 42, "promiseMultipleSyncWithArgFirstReturn": Object { "type": "promise", "value": undefined, }, "promiseMultipleSyncWithArgFirstReturnCalled1": 42, "promiseMultipleSyncWithArgFirstReturnCalled2": 42, "promiseMultipleSyncWithArgLastReturn": Object { "type": "promise", "value": undefined, }, "promiseMultipleSyncWithArgLastReturnCalled1": 42, "promiseMultipleSyncWithArgLastReturnCalled2": 42, "promiseMultipleSyncWithArgNoReturn": Object { "type": "promise", "value": undefined, }, "promiseMultipleSyncWithArgNoReturnCalled1": 42, "promiseMultipleSyncWithArgNoReturnCalled2": 42, "promiseNone": Object { "type": "promise", "value": undefined, }, "promiseNoneWithArg": Object { "type": "promise", "value": undefined, }, "promiseSingleAsyncWithArg": Object { "type": "promise", "value": undefined, }, "promiseSingleAsyncWithArgCalled1": 42, "promiseSinglePromiseWithArg": Object { "type": "promise", "value": undefined, }, "promiseSinglePromiseWithArgCalled1": 42, "promiseSingleSync": Object { "type": "promise", "value": undefined, }, "promiseSingleSyncCalled1": true, "promiseSingleSyncWithArg": Object { "type": "promise", "value": undefined, }, "promiseSingleSyncWithArgCalled1": 42, "promiseSingleSyncWithArgNoReturn": Object { "type": "promise", "value": undefined, }, "promiseSingleSyncWithArgNoReturnCalled1": 42, }, "intercept": Object { "callAsyncContextIntercepted": Object { "type": "async", "value": undefined, }, "callAsyncContextInterceptedCall1": Array [ Object { "number": 42, }, 1, 2, 3, ], "callAsyncContextInterceptedCall2": Array [ 1, 2, 3, ], "callAsyncContextInterceptedTap1": Object { "number": 42, }, "callAsyncIntercepted": Object { "type": "async", "value": undefined, }, "callAsyncInterceptedCall1": Array [ 1, 2, 3, ], "callAsyncInterceptedCall2": Array [ 1, 2, 3, ], "callAsyncInterceptedDone1": true, "callAsyncInterceptedDone2": true, "callAsyncInterceptedTap1": Object { "fn": 2, "name": "promise", "type": "promise", }, "callAsyncInterceptedTap2": Object { "fn": 3, "name": "sync", "type": "sync", }, "callAsyncUnusedContextIntercepted": Object { "type": "async", "value": undefined, }, "callAsyncUnusedContextInterceptedCall1": Array [ undefined, 1, 2, 3, ], "callAsyncUnusedContextInterceptedCall2": Array [ 1, 2, 3, ], "callAsyncUnusedContextInterceptedTap1": undefined, "promiseContextIntercepted": Object { "type": "promise", "value": undefined, }, "promiseContextInterceptedCall1": Array [ Object { "number": 42, }, 1, 2, 3, ], "promiseContextInterceptedCall2": Array [ 1, 2, 3, ], "promiseContextInterceptedTap1": Object { "number": 42, }, "promiseIntercepted": Object { "type": "promise", "value": undefined, }, "promiseInterceptedCall1": Array [ 1, 2, 3, ], "promiseInterceptedCall2": Array [ 1, 2, 3, ], "promiseInterceptedDone1": true, "promiseInterceptedDone2": true, "promiseInterceptedTap1": Object { "fn": 2, "name": "promise", "type": "promise", }, "promiseInterceptedTap2": Object { "fn": 3, "name": "sync", "type": "sync", }, "promiseUnusedContextIntercepted": Object { "type": "promise", "value": undefined, }, "promiseUnusedContextInterceptedCall1": Array [ undefined, 1, 2, 3, ], "promiseUnusedContextInterceptedCall2": Array [ 1, 2, 3, ], "promiseUnusedContextInterceptedTap1": undefined, }, "sync": Object { "callAsyncIntercepted": Object { "type": "async", "value": undefined, }, "callAsyncInterceptedCall1": Array [ 1, 2, 3, ], "callAsyncInterceptedCall2": Array [ 1, 2, 3, ], "callAsyncInterceptedTap1": Object { "fn": 2, "name": "sync2", "type": "sync", }, "callAsyncInterceptedTap2": Object { "fn": 3, "name": "sync1", "type": "sync", }, "callAsyncMultipleSync": Object { "type": "async", "value": undefined, }, "callAsyncMultipleSyncCalled1": true, "callAsyncMultipleSyncCalled2": true, "callAsyncMultipleSyncError": Object { "error": "Error in sync2", "type": "async", }, "callAsyncMultipleSyncErrorCalled1": true, "callAsyncMultipleSyncErrorCalled2": true, "callAsyncMultipleSyncWithArg": Object { "type": "async", "value": undefined, }, "callAsyncMultipleSyncWithArgCalled1": 42, "callAsyncMultipleSyncWithArgCalled2": 42, "callAsyncMultipleSyncWithArgFirstReturn": Object { "type": "async", "value": undefined, }, "callAsyncMultipleSyncWithArgFirstReturnCalled1": 42, "callAsyncMultipleSyncWithArgFirstReturnCalled2": 42, "callAsyncMultipleSyncWithArgLastReturn": Object { "type": "async", "value": undefined, }, "callAsyncMultipleSyncWithArgLastReturnCalled1": 42, "callAsyncMultipleSyncWithArgLastReturnCalled2": 42, "callAsyncMultipleSyncWithArgNoReturn": Object { "type": "async", "value": undefined, }, "callAsyncMultipleSyncWithArgNoReturnCalled1": 42, "callAsyncMultipleSyncWithArgNoReturnCalled2": 42, "callAsyncMultipleSyncWithArgs": Object { "type": "async", "value": undefined, }, "callAsyncMultipleSyncWithArgsCalled1": Array [ 42, 43, 44, ], "callAsyncMultipleSyncWithArgsCalled2": Array [ 42, 43, 44, ], "callAsyncNone": Object { "type": "async", "value": undefined, }, "callAsyncNoneWithArg": Object { "type": "async", "value": undefined, }, "callAsyncSingleSync": Object { "type": "async", "value": undefined, }, "callAsyncSingleSyncCalled": true, "callAsyncSingleSyncWithArg": Object { "type": "async", "value": undefined, }, "callAsyncSingleSyncWithArgCalled": 42, "promiseIntercepted": Object { "type": "promise", "value": undefined, }, "promiseInterceptedCall1": Array [ 1, 2, 3, ], "promiseInterceptedCall2": Array [ 1, 2, 3, ], "promiseInterceptedTap1": Object { "fn": 2, "name": "sync2", "type": "sync", }, "promiseInterceptedTap2": Object { "fn": 3, "name": "sync1", "type": "sync", }, "promiseMultipleSync": Object { "type": "promise", "value": undefined, }, "promiseMultipleSyncCalled1": true, "promiseMultipleSyncCalled2": true, "promiseMultipleSyncError": Object { "error": "Error in sync2", "type": "promise", }, "promiseMultipleSyncErrorCalled1": true, "promiseMultipleSyncErrorCalled2": true, "promiseMultipleSyncWithArg": Object { "type": "promise", "value": undefined, }, "promiseMultipleSyncWithArgCalled1": 42, "promiseMultipleSyncWithArgCalled2": 42, "promiseMultipleSyncWithArgFirstReturn": Object { "type": "promise", "value": undefined, }, "promiseMultipleSyncWithArgFirstReturnCalled1": 42, "promiseMultipleSyncWithArgFirstReturnCalled2": 42, "promiseMultipleSyncWithArgLastReturn": Object { "type": "promise", "value": undefined, }, "promiseMultipleSyncWithArgLastReturnCalled1": 42, "promiseMultipleSyncWithArgLastReturnCalled2": 42, "promiseMultipleSyncWithArgNoReturn": Object { "type": "promise", "value": undefined, }, "promiseMultipleSyncWithArgNoReturnCalled1": 42, "promiseMultipleSyncWithArgNoReturnCalled2": 42, "promiseMultipleSyncWithArgs": Object { "type": "promise", "value": undefined, }, "promiseMultipleSyncWithArgsCalled1": Array [ 42, 43, 44, ], "promiseMultipleSyncWithArgsCalled2": Array [ 42, 43, 44, ], "promiseNone": Object { "type": "promise", "value": undefined, }, "promiseNoneWithArg": Object { "type": "promise", "value": undefined, }, "promiseSingleSync": Object { "type": "promise", "value": undefined, }, "promiseSingleSyncCalled": true, "promiseSingleSyncWithArg": Object { "type": "promise", "value": undefined, }, "promiseSingleSyncWithArgCalled": 42, }, } `; tapable-2.2.1/lib/__tests__/__snapshots__/AsyncSeriesHooks.js.snap000066400000000000000000001757521411762003000252130ustar00rootroot00000000000000// Jest Snapshot v1, https://goo.gl/fbAQLP exports[`AsyncSeriesBailHook should have to correct behavior 1`] = ` Object { "async": Object { "callAsyncMultipleAsyncEarlyError": Object { "error": "Error in async2", "type": "async", }, "callAsyncMultipleAsyncEarlyErrorCalled1": true, "callAsyncMultipleAsyncError": Object { "error": "Error in async2", "type": "async", }, "callAsyncMultipleAsyncErrorCalled1": true, "callAsyncMultipleAsyncLateError": Object { "error": "Error in async2", "type": "async", }, "callAsyncMultipleAsyncLateErrorCalled1": true, "callAsyncMultipleAsyncLateErrorEarlyResult1": Object { "error": "Error in async2", "type": "async", }, "callAsyncMultipleAsyncLateErrorEarlyResult1Called1": true, "callAsyncMultipleAsyncLateErrorEarlyResult2": Object { "type": "async", "value": 42, }, "callAsyncMultipleAsyncLateErrorEarlyResult2Called1": true, "callAsyncMultipleAsyncWithArg": Object { "type": "async", "value": 43, }, "callAsyncMultipleAsyncWithArgCalled1": 42, "callAsyncMultipleAsyncWithArgFirstReturn": Object { "type": "async", "value": 43, }, "callAsyncMultipleAsyncWithArgFirstReturnCalled1": 42, "callAsyncMultipleAsyncWithArgLastReturn": Object { "type": "async", "value": 44, }, "callAsyncMultipleAsyncWithArgLastReturnCalled1": 42, "callAsyncMultipleAsyncWithArgLastReturnCalled2": 42, "callAsyncMultipleAsyncWithArgNoReturn": Object { "type": "async", "value": undefined, }, "callAsyncMultipleAsyncWithArgNoReturnCalled1": 42, "callAsyncMultipleAsyncWithArgNoReturnCalled2": 42, "callAsyncMultipleMixed1WithArg": Object { "type": "async", "value": 43, }, "callAsyncMultipleMixed1WithArgCalled1": 42, "callAsyncMultipleMixed2WithArg": Object { "type": "async", "value": 43, }, "callAsyncMultipleMixed2WithArgCalled1": 42, "callAsyncMultipleMixed3WithArg": Object { "type": "async", "value": 43, }, "callAsyncMultipleMixed3WithArgCalled1": 42, "callAsyncMultipleMixedError1WithArg": Object { "type": "async", "value": 42, }, "callAsyncMultipleMixedError1WithArgCalled1": 42, "callAsyncMultipleMixedError2WithArg": Object { "type": "async", "value": 42, }, "callAsyncMultipleMixedError2WithArgCalled1": 42, "callAsyncMultipleMixedError3WithArg": Object { "error": "Error in async", "type": "async", }, "callAsyncMultipleMixedError3WithArgCalled1": 42, "callAsyncMultipleMixedLateError": Object { "error": "Error in async", "type": "async", }, "callAsyncMultipleMixedLateErrorCalled1": true, "callAsyncMultiplePromiseEarlyError": Object { "error": "Error in async2", "type": "async", }, "callAsyncMultiplePromiseEarlyErrorCalled1": true, "callAsyncMultiplePromiseError": Object { "error": "Error in async2", "type": "async", }, "callAsyncMultiplePromiseErrorCalled1": true, "callAsyncMultiplePromiseLateError": Object { "error": "Error in async2", "type": "async", }, "callAsyncMultiplePromiseLateErrorCalled1": true, "callAsyncMultiplePromiseWithArg": Object { "type": "async", "value": 43, }, "callAsyncMultiplePromiseWithArgCalled1": 42, "callAsyncMultiplePromiseWithArgFirstReturn": Object { "type": "async", "value": 43, }, "callAsyncMultiplePromiseWithArgFirstReturnCalled1": 42, "callAsyncMultiplePromiseWithArgLastReturn": Object { "type": "async", "value": 44, }, "callAsyncMultiplePromiseWithArgLastReturnCalled1": 42, "callAsyncMultiplePromiseWithArgLastReturnCalled2": 42, "callAsyncMultiplePromiseWithArgNoReturn": Object { "type": "async", "value": undefined, }, "callAsyncMultiplePromiseWithArgNoReturnCalled1": 42, "callAsyncMultiplePromiseWithArgNoReturnCalled2": 42, "callAsyncMultipleSync": Object { "type": "async", "value": 42, }, "callAsyncMultipleSyncCalled1": true, "callAsyncMultipleSyncError": Object { "error": "Error in sync2", "type": "async", }, "callAsyncMultipleSyncErrorCalled1": true, "callAsyncMultipleSyncLastReturn": Object { "type": "async", "value": 43, }, "callAsyncMultipleSyncLastReturnCalled1": true, "callAsyncMultipleSyncLastReturnCalled2": true, "callAsyncMultipleSyncNoReturn": Object { "type": "async", "value": undefined, }, "callAsyncMultipleSyncNoReturnCalled1": true, "callAsyncMultipleSyncNoReturnCalled2": true, "callAsyncMultipleSyncWithArg": Object { "type": "async", "value": 43, }, "callAsyncMultipleSyncWithArgCalled1": 42, "callAsyncMultipleSyncWithArgFirstReturn": Object { "type": "async", "value": 43, }, "callAsyncMultipleSyncWithArgFirstReturnCalled1": 42, "callAsyncMultipleSyncWithArgLastReturn": Object { "type": "async", "value": 44, }, "callAsyncMultipleSyncWithArgLastReturnCalled1": 42, "callAsyncMultipleSyncWithArgLastReturnCalled2": 42, "callAsyncMultipleSyncWithArgNoReturn": Object { "type": "async", "value": undefined, }, "callAsyncMultipleSyncWithArgNoReturnCalled1": 42, "callAsyncMultipleSyncWithArgNoReturnCalled2": 42, "callAsyncNone": Object { "type": "async", "value": undefined, }, "callAsyncNoneWithArg": Object { "type": "async", "value": undefined, }, "callAsyncSingleAsyncWithArg": Object { "type": "async", "value": 42, }, "callAsyncSingleAsyncWithArgCalled1": 42, "callAsyncSinglePromiseWithArg": Object { "type": "async", "value": 43, }, "callAsyncSinglePromiseWithArgCalled1": 42, "callAsyncSingleSync": Object { "type": "async", "value": 42, }, "callAsyncSingleSyncCalled1": true, "callAsyncSingleSyncWithArg": Object { "type": "async", "value": 43, }, "callAsyncSingleSyncWithArgCalled1": 42, "callAsyncSingleSyncWithArgNoReturn": Object { "type": "async", "value": undefined, }, "callAsyncSingleSyncWithArgNoReturnCalled1": 42, "promiseMultipleAsyncEarlyError": Object { "error": "Error in async2", "type": "promise", }, "promiseMultipleAsyncEarlyErrorCalled1": true, "promiseMultipleAsyncError": Object { "error": "Error in async2", "type": "promise", }, "promiseMultipleAsyncErrorCalled1": true, "promiseMultipleAsyncLateError": Object { "error": "Error in async2", "type": "promise", }, "promiseMultipleAsyncLateErrorCalled1": true, "promiseMultipleAsyncLateErrorEarlyResult1": Object { "error": "Error in async2", "type": "promise", }, "promiseMultipleAsyncLateErrorEarlyResult1Called1": true, "promiseMultipleAsyncLateErrorEarlyResult2": Object { "type": "promise", "value": 42, }, "promiseMultipleAsyncLateErrorEarlyResult2Called1": true, "promiseMultipleAsyncWithArg": Object { "type": "promise", "value": 43, }, "promiseMultipleAsyncWithArgCalled1": 42, "promiseMultipleAsyncWithArgFirstReturn": Object { "type": "promise", "value": 43, }, "promiseMultipleAsyncWithArgFirstReturnCalled1": 42, "promiseMultipleAsyncWithArgLastReturn": Object { "type": "promise", "value": 44, }, "promiseMultipleAsyncWithArgLastReturnCalled1": 42, "promiseMultipleAsyncWithArgLastReturnCalled2": 42, "promiseMultipleAsyncWithArgNoReturn": Object { "type": "promise", "value": undefined, }, "promiseMultipleAsyncWithArgNoReturnCalled1": 42, "promiseMultipleAsyncWithArgNoReturnCalled2": 42, "promiseMultipleMixed1WithArg": Object { "type": "promise", "value": 43, }, "promiseMultipleMixed1WithArgCalled1": 42, "promiseMultipleMixed2WithArg": Object { "type": "promise", "value": 43, }, "promiseMultipleMixed2WithArgCalled1": 42, "promiseMultipleMixed3WithArg": Object { "type": "promise", "value": 43, }, "promiseMultipleMixed3WithArgCalled1": 42, "promiseMultipleMixedError1WithArg": Object { "type": "promise", "value": 42, }, "promiseMultipleMixedError1WithArgCalled1": 42, "promiseMultipleMixedError2WithArg": Object { "type": "promise", "value": 42, }, "promiseMultipleMixedError2WithArgCalled1": 42, "promiseMultipleMixedError3WithArg": Object { "error": "Error in async", "type": "promise", }, "promiseMultipleMixedError3WithArgCalled1": 42, "promiseMultipleMixedLateError": Object { "error": "Error in async", "type": "promise", }, "promiseMultipleMixedLateErrorCalled1": true, "promiseMultiplePromiseEarlyError": Object { "error": "Error in async2", "type": "promise", }, "promiseMultiplePromiseEarlyErrorCalled1": true, "promiseMultiplePromiseError": Object { "error": "Error in async2", "type": "promise", }, "promiseMultiplePromiseErrorCalled1": true, "promiseMultiplePromiseLateError": Object { "error": "Error in async2", "type": "promise", }, "promiseMultiplePromiseLateErrorCalled1": true, "promiseMultiplePromiseWithArg": Object { "type": "promise", "value": 43, }, "promiseMultiplePromiseWithArgCalled1": 42, "promiseMultiplePromiseWithArgFirstReturn": Object { "type": "promise", "value": 43, }, "promiseMultiplePromiseWithArgFirstReturnCalled1": 42, "promiseMultiplePromiseWithArgLastReturn": Object { "type": "promise", "value": 44, }, "promiseMultiplePromiseWithArgLastReturnCalled1": 42, "promiseMultiplePromiseWithArgLastReturnCalled2": 42, "promiseMultiplePromiseWithArgNoReturn": Object { "type": "promise", "value": undefined, }, "promiseMultiplePromiseWithArgNoReturnCalled1": 42, "promiseMultiplePromiseWithArgNoReturnCalled2": 42, "promiseMultipleSync": Object { "type": "promise", "value": 42, }, "promiseMultipleSyncCalled1": true, "promiseMultipleSyncError": Object { "error": "Error in sync2", "type": "promise", }, "promiseMultipleSyncErrorCalled1": true, "promiseMultipleSyncLastReturn": Object { "type": "promise", "value": 43, }, "promiseMultipleSyncLastReturnCalled1": true, "promiseMultipleSyncLastReturnCalled2": true, "promiseMultipleSyncNoReturn": Object { "type": "promise", "value": undefined, }, "promiseMultipleSyncNoReturnCalled1": true, "promiseMultipleSyncNoReturnCalled2": true, "promiseMultipleSyncWithArg": Object { "type": "promise", "value": 43, }, "promiseMultipleSyncWithArgCalled1": 42, "promiseMultipleSyncWithArgFirstReturn": Object { "type": "promise", "value": 43, }, "promiseMultipleSyncWithArgFirstReturnCalled1": 42, "promiseMultipleSyncWithArgLastReturn": Object { "type": "promise", "value": 44, }, "promiseMultipleSyncWithArgLastReturnCalled1": 42, "promiseMultipleSyncWithArgLastReturnCalled2": 42, "promiseMultipleSyncWithArgNoReturn": Object { "type": "promise", "value": undefined, }, "promiseMultipleSyncWithArgNoReturnCalled1": 42, "promiseMultipleSyncWithArgNoReturnCalled2": 42, "promiseNone": Object { "type": "promise", "value": undefined, }, "promiseNoneWithArg": Object { "type": "promise", "value": undefined, }, "promiseSingleAsyncWithArg": Object { "type": "promise", "value": 42, }, "promiseSingleAsyncWithArgCalled1": 42, "promiseSinglePromiseWithArg": Object { "type": "promise", "value": 43, }, "promiseSinglePromiseWithArgCalled1": 42, "promiseSingleSync": Object { "type": "promise", "value": 42, }, "promiseSingleSyncCalled1": true, "promiseSingleSyncWithArg": Object { "type": "promise", "value": 43, }, "promiseSingleSyncWithArgCalled1": 42, "promiseSingleSyncWithArgNoReturn": Object { "type": "promise", "value": undefined, }, "promiseSingleSyncWithArgNoReturnCalled1": 42, }, "intercept": Object { "callAsyncContextIntercepted": Object { "type": "async", "value": 48, }, "callAsyncContextInterceptedCall1": Array [ Object { "number": 42, }, 1, 2, 3, ], "callAsyncContextInterceptedCall2": Array [ 1, 2, 3, ], "callAsyncContextInterceptedTap1": Object { "number": 42, }, "callAsyncIntercepted": Object { "type": "async", "value": 6, }, "callAsyncInterceptedCall1": Array [ 1, 2, 3, ], "callAsyncInterceptedCall2": Array [ 1, 2, 3, ], "callAsyncInterceptedResult1": 6, "callAsyncInterceptedResult2": 6, "callAsyncInterceptedTap1": Object { "fn": 3, "name": "sync", "type": "sync", }, "callAsyncInterceptedTap2": Object { "fn": 3, "name": "sync", "type": "sync", }, "callAsyncUnusedContextIntercepted": Object { "type": "async", "value": 6, }, "callAsyncUnusedContextInterceptedCall1": Array [ undefined, 1, 2, 3, ], "callAsyncUnusedContextInterceptedCall2": Array [ 1, 2, 3, ], "callAsyncUnusedContextInterceptedTap1": undefined, "promiseContextIntercepted": Object { "type": "promise", "value": 48, }, "promiseContextInterceptedCall1": Array [ Object { "number": 42, }, 1, 2, 3, ], "promiseContextInterceptedCall2": Array [ 1, 2, 3, ], "promiseContextInterceptedTap1": Object { "number": 42, }, "promiseIntercepted": Object { "type": "promise", "value": 6, }, "promiseInterceptedCall1": Array [ 1, 2, 3, ], "promiseInterceptedCall2": Array [ 1, 2, 3, ], "promiseInterceptedResult1": 6, "promiseInterceptedResult2": 6, "promiseInterceptedTap1": Object { "fn": 3, "name": "sync", "type": "sync", }, "promiseInterceptedTap2": Object { "fn": 3, "name": "sync", "type": "sync", }, "promiseUnusedContextIntercepted": Object { "type": "promise", "value": 6, }, "promiseUnusedContextInterceptedCall1": Array [ undefined, 1, 2, 3, ], "promiseUnusedContextInterceptedCall2": Array [ 1, 2, 3, ], "promiseUnusedContextInterceptedTap1": undefined, }, "sync": Object { "callAsyncIntercepted": Object { "type": "async", "value": 6, }, "callAsyncInterceptedCall1": Array [ 1, 2, 3, ], "callAsyncInterceptedCall2": Array [ 1, 2, 3, ], "callAsyncInterceptedTap1": Object { "fn": 3, "name": "sync1", "type": "sync", }, "callAsyncInterceptedTap2": Object { "fn": 3, "name": "sync1", "type": "sync", }, "callAsyncMultipleSync": Object { "type": "async", "value": 42, }, "callAsyncMultipleSyncCalled1": true, "callAsyncMultipleSyncError": Object { "error": "Error in sync2", "type": "async", }, "callAsyncMultipleSyncErrorCalled1": true, "callAsyncMultipleSyncErrorCalled2": true, "callAsyncMultipleSyncWithArg": Object { "type": "async", "value": 84, }, "callAsyncMultipleSyncWithArgCalled1": 42, "callAsyncMultipleSyncWithArgFirstReturn": Object { "type": "async", "value": 84, }, "callAsyncMultipleSyncWithArgFirstReturnCalled1": 42, "callAsyncMultipleSyncWithArgLastReturn": Object { "type": "async", "value": 85, }, "callAsyncMultipleSyncWithArgLastReturnCalled1": 42, "callAsyncMultipleSyncWithArgLastReturnCalled2": 42, "callAsyncMultipleSyncWithArgNoReturn": Object { "type": "async", "value": undefined, }, "callAsyncMultipleSyncWithArgNoReturnCalled1": 42, "callAsyncMultipleSyncWithArgNoReturnCalled2": 42, "callAsyncMultipleSyncWithArgs": Object { "type": "async", "value": 129, }, "callAsyncMultipleSyncWithArgsCalled1": Array [ 42, 43, 44, ], "callAsyncNone": Object { "type": "async", "value": undefined, }, "callAsyncNoneWithArg": Object { "type": "async", "value": undefined, }, "callAsyncSingleSync": Object { "type": "async", "value": 42, }, "callAsyncSingleSyncCalled": true, "callAsyncSingleSyncWithArg": Object { "type": "async", "value": 42, }, "callAsyncSingleSyncWithArgCalled": 42, "promiseIntercepted": Object { "type": "promise", "value": 6, }, "promiseInterceptedCall1": Array [ 1, 2, 3, ], "promiseInterceptedCall2": Array [ 1, 2, 3, ], "promiseInterceptedTap1": Object { "fn": 3, "name": "sync1", "type": "sync", }, "promiseInterceptedTap2": Object { "fn": 3, "name": "sync1", "type": "sync", }, "promiseMultipleSync": Object { "type": "promise", "value": 42, }, "promiseMultipleSyncCalled1": true, "promiseMultipleSyncError": Object { "error": "Error in sync2", "type": "promise", }, "promiseMultipleSyncErrorCalled1": true, "promiseMultipleSyncErrorCalled2": true, "promiseMultipleSyncWithArg": Object { "type": "promise", "value": 84, }, "promiseMultipleSyncWithArgCalled1": 42, "promiseMultipleSyncWithArgFirstReturn": Object { "type": "promise", "value": 84, }, "promiseMultipleSyncWithArgFirstReturnCalled1": 42, "promiseMultipleSyncWithArgLastReturn": Object { "type": "promise", "value": 85, }, "promiseMultipleSyncWithArgLastReturnCalled1": 42, "promiseMultipleSyncWithArgLastReturnCalled2": 42, "promiseMultipleSyncWithArgNoReturn": Object { "type": "promise", "value": undefined, }, "promiseMultipleSyncWithArgNoReturnCalled1": 42, "promiseMultipleSyncWithArgNoReturnCalled2": 42, "promiseMultipleSyncWithArgs": Object { "type": "promise", "value": 129, }, "promiseMultipleSyncWithArgsCalled1": Array [ 42, 43, 44, ], "promiseNone": Object { "type": "promise", "value": undefined, }, "promiseNoneWithArg": Object { "type": "promise", "value": undefined, }, "promiseSingleSync": Object { "type": "promise", "value": 42, }, "promiseSingleSyncCalled": true, "promiseSingleSyncWithArg": Object { "type": "promise", "value": 42, }, "promiseSingleSyncWithArgCalled": 42, }, } `; exports[`AsyncSeriesHook should have to correct behavior 1`] = ` Object { "async": Object { "callAsyncMultipleAsyncEarlyError": Object { "error": "Error in async2", "type": "async", }, "callAsyncMultipleAsyncEarlyErrorCalled1": true, "callAsyncMultipleAsyncError": Object { "error": "Error in async2", "type": "async", }, "callAsyncMultipleAsyncErrorCalled1": true, "callAsyncMultipleAsyncLateError": Object { "error": "Error in async2", "type": "async", }, "callAsyncMultipleAsyncLateErrorCalled1": true, "callAsyncMultipleAsyncLateErrorEarlyResult1": Object { "error": "Error in async2", "type": "async", }, "callAsyncMultipleAsyncLateErrorEarlyResult1Called1": true, "callAsyncMultipleAsyncLateErrorEarlyResult2": Object { "error": "Error in async2", "type": "async", }, "callAsyncMultipleAsyncLateErrorEarlyResult2Called1": true, "callAsyncMultipleAsyncWithArg": Object { "type": "async", "value": undefined, }, "callAsyncMultipleAsyncWithArgCalled1": 42, "callAsyncMultipleAsyncWithArgCalled2": 42, "callAsyncMultipleAsyncWithArgFirstReturn": Object { "type": "async", "value": undefined, }, "callAsyncMultipleAsyncWithArgFirstReturnCalled1": 42, "callAsyncMultipleAsyncWithArgFirstReturnCalled2": 42, "callAsyncMultipleAsyncWithArgLastReturn": Object { "type": "async", "value": undefined, }, "callAsyncMultipleAsyncWithArgLastReturnCalled1": 42, "callAsyncMultipleAsyncWithArgLastReturnCalled2": 42, "callAsyncMultipleAsyncWithArgNoReturn": Object { "type": "async", "value": undefined, }, "callAsyncMultipleAsyncWithArgNoReturnCalled1": 42, "callAsyncMultipleAsyncWithArgNoReturnCalled2": 42, "callAsyncMultipleMixed1WithArg": Object { "type": "async", "value": undefined, }, "callAsyncMultipleMixed1WithArgCalled1": 42, "callAsyncMultipleMixed1WithArgCalled2": 42, "callAsyncMultipleMixed1WithArgCalled3": 42, "callAsyncMultipleMixed2WithArg": Object { "type": "async", "value": undefined, }, "callAsyncMultipleMixed2WithArgCalled1": 42, "callAsyncMultipleMixed2WithArgCalled2": 42, "callAsyncMultipleMixed3WithArg": Object { "type": "async", "value": undefined, }, "callAsyncMultipleMixed3WithArgCalled1": 42, "callAsyncMultipleMixed3WithArgCalled2": 42, "callAsyncMultipleMixed3WithArgCalled3": 42, "callAsyncMultipleMixedError1WithArg": Object { "error": "Error in sync", "type": "async", }, "callAsyncMultipleMixedError1WithArgCalled1": 42, "callAsyncMultipleMixedError1WithArgCalled2": 42, "callAsyncMultipleMixedError1WithArgCalled3": 42, "callAsyncMultipleMixedError2WithArg": Object { "error": "Error in promise", "type": "async", }, "callAsyncMultipleMixedError2WithArgCalled1": 42, "callAsyncMultipleMixedError2WithArgCalled2": 42, "callAsyncMultipleMixedError3WithArg": Object { "error": "Error in async", "type": "async", }, "callAsyncMultipleMixedError3WithArgCalled1": 42, "callAsyncMultipleMixedLateError": Object { "error": "Error in async", "type": "async", }, "callAsyncMultipleMixedLateErrorCalled1": true, "callAsyncMultiplePromiseEarlyError": Object { "error": "Error in async2", "type": "async", }, "callAsyncMultiplePromiseEarlyErrorCalled1": true, "callAsyncMultiplePromiseError": Object { "error": "Error in async2", "type": "async", }, "callAsyncMultiplePromiseErrorCalled1": true, "callAsyncMultiplePromiseLateError": Object { "error": "Error in async2", "type": "async", }, "callAsyncMultiplePromiseLateErrorCalled1": true, "callAsyncMultiplePromiseWithArg": Object { "type": "async", "value": undefined, }, "callAsyncMultiplePromiseWithArgCalled1": 42, "callAsyncMultiplePromiseWithArgCalled2": 42, "callAsyncMultiplePromiseWithArgFirstReturn": Object { "type": "async", "value": undefined, }, "callAsyncMultiplePromiseWithArgFirstReturnCalled1": 42, "callAsyncMultiplePromiseWithArgFirstReturnCalled2": 42, "callAsyncMultiplePromiseWithArgLastReturn": Object { "type": "async", "value": undefined, }, "callAsyncMultiplePromiseWithArgLastReturnCalled1": 42, "callAsyncMultiplePromiseWithArgLastReturnCalled2": 42, "callAsyncMultiplePromiseWithArgNoReturn": Object { "type": "async", "value": undefined, }, "callAsyncMultiplePromiseWithArgNoReturnCalled1": 42, "callAsyncMultiplePromiseWithArgNoReturnCalled2": 42, "callAsyncMultipleSync": Object { "type": "async", "value": undefined, }, "callAsyncMultipleSyncCalled1": true, "callAsyncMultipleSyncCalled2": true, "callAsyncMultipleSyncError": Object { "error": "Error in sync2", "type": "async", }, "callAsyncMultipleSyncErrorCalled1": true, "callAsyncMultipleSyncLastReturn": Object { "type": "async", "value": undefined, }, "callAsyncMultipleSyncLastReturnCalled1": true, "callAsyncMultipleSyncLastReturnCalled2": true, "callAsyncMultipleSyncNoReturn": Object { "type": "async", "value": undefined, }, "callAsyncMultipleSyncNoReturnCalled1": true, "callAsyncMultipleSyncNoReturnCalled2": true, "callAsyncMultipleSyncWithArg": Object { "type": "async", "value": undefined, }, "callAsyncMultipleSyncWithArgCalled1": 42, "callAsyncMultipleSyncWithArgCalled2": 42, "callAsyncMultipleSyncWithArgFirstReturn": Object { "type": "async", "value": undefined, }, "callAsyncMultipleSyncWithArgFirstReturnCalled1": 42, "callAsyncMultipleSyncWithArgFirstReturnCalled2": 42, "callAsyncMultipleSyncWithArgLastReturn": Object { "type": "async", "value": undefined, }, "callAsyncMultipleSyncWithArgLastReturnCalled1": 42, "callAsyncMultipleSyncWithArgLastReturnCalled2": 42, "callAsyncMultipleSyncWithArgNoReturn": Object { "type": "async", "value": undefined, }, "callAsyncMultipleSyncWithArgNoReturnCalled1": 42, "callAsyncMultipleSyncWithArgNoReturnCalled2": 42, "callAsyncNone": Object { "type": "async", "value": undefined, }, "callAsyncNoneWithArg": Object { "type": "async", "value": undefined, }, "callAsyncSingleAsyncWithArg": Object { "type": "async", "value": undefined, }, "callAsyncSingleAsyncWithArgCalled1": 42, "callAsyncSinglePromiseWithArg": Object { "type": "async", "value": undefined, }, "callAsyncSinglePromiseWithArgCalled1": 42, "callAsyncSingleSync": Object { "type": "async", "value": undefined, }, "callAsyncSingleSyncCalled1": true, "callAsyncSingleSyncWithArg": Object { "type": "async", "value": undefined, }, "callAsyncSingleSyncWithArgCalled1": 42, "callAsyncSingleSyncWithArgNoReturn": Object { "type": "async", "value": undefined, }, "callAsyncSingleSyncWithArgNoReturnCalled1": 42, "promiseMultipleAsyncEarlyError": Object { "error": "Error in async2", "type": "promise", }, "promiseMultipleAsyncEarlyErrorCalled1": true, "promiseMultipleAsyncError": Object { "error": "Error in async2", "type": "promise", }, "promiseMultipleAsyncErrorCalled1": true, "promiseMultipleAsyncLateError": Object { "error": "Error in async2", "type": "promise", }, "promiseMultipleAsyncLateErrorCalled1": true, "promiseMultipleAsyncLateErrorEarlyResult1": Object { "error": "Error in async2", "type": "promise", }, "promiseMultipleAsyncLateErrorEarlyResult1Called1": true, "promiseMultipleAsyncLateErrorEarlyResult2": Object { "error": "Error in async2", "type": "promise", }, "promiseMultipleAsyncLateErrorEarlyResult2Called1": true, "promiseMultipleAsyncWithArg": Object { "type": "promise", "value": undefined, }, "promiseMultipleAsyncWithArgCalled1": 42, "promiseMultipleAsyncWithArgCalled2": 42, "promiseMultipleAsyncWithArgFirstReturn": Object { "type": "promise", "value": undefined, }, "promiseMultipleAsyncWithArgFirstReturnCalled1": 42, "promiseMultipleAsyncWithArgFirstReturnCalled2": 42, "promiseMultipleAsyncWithArgLastReturn": Object { "type": "promise", "value": undefined, }, "promiseMultipleAsyncWithArgLastReturnCalled1": 42, "promiseMultipleAsyncWithArgLastReturnCalled2": 42, "promiseMultipleAsyncWithArgNoReturn": Object { "type": "promise", "value": undefined, }, "promiseMultipleAsyncWithArgNoReturnCalled1": 42, "promiseMultipleAsyncWithArgNoReturnCalled2": 42, "promiseMultipleMixed1WithArg": Object { "type": "promise", "value": undefined, }, "promiseMultipleMixed1WithArgCalled1": 42, "promiseMultipleMixed1WithArgCalled2": 42, "promiseMultipleMixed1WithArgCalled3": 42, "promiseMultipleMixed2WithArg": Object { "type": "promise", "value": undefined, }, "promiseMultipleMixed2WithArgCalled1": 42, "promiseMultipleMixed2WithArgCalled2": 42, "promiseMultipleMixed3WithArg": Object { "type": "promise", "value": undefined, }, "promiseMultipleMixed3WithArgCalled1": 42, "promiseMultipleMixed3WithArgCalled2": 42, "promiseMultipleMixed3WithArgCalled3": 42, "promiseMultipleMixedError1WithArg": Object { "error": "Error in sync", "type": "promise", }, "promiseMultipleMixedError1WithArgCalled1": 42, "promiseMultipleMixedError1WithArgCalled2": 42, "promiseMultipleMixedError1WithArgCalled3": 42, "promiseMultipleMixedError2WithArg": Object { "error": "Error in promise", "type": "promise", }, "promiseMultipleMixedError2WithArgCalled1": 42, "promiseMultipleMixedError2WithArgCalled2": 42, "promiseMultipleMixedError3WithArg": Object { "error": "Error in async", "type": "promise", }, "promiseMultipleMixedError3WithArgCalled1": 42, "promiseMultipleMixedLateError": Object { "error": "Error in async", "type": "promise", }, "promiseMultipleMixedLateErrorCalled1": true, "promiseMultiplePromiseEarlyError": Object { "error": "Error in async2", "type": "promise", }, "promiseMultiplePromiseEarlyErrorCalled1": true, "promiseMultiplePromiseError": Object { "error": "Error in async2", "type": "promise", }, "promiseMultiplePromiseErrorCalled1": true, "promiseMultiplePromiseLateError": Object { "error": "Error in async2", "type": "promise", }, "promiseMultiplePromiseLateErrorCalled1": true, "promiseMultiplePromiseWithArg": Object { "type": "promise", "value": undefined, }, "promiseMultiplePromiseWithArgCalled1": 42, "promiseMultiplePromiseWithArgCalled2": 42, "promiseMultiplePromiseWithArgFirstReturn": Object { "type": "promise", "value": undefined, }, "promiseMultiplePromiseWithArgFirstReturnCalled1": 42, "promiseMultiplePromiseWithArgFirstReturnCalled2": 42, "promiseMultiplePromiseWithArgLastReturn": Object { "type": "promise", "value": undefined, }, "promiseMultiplePromiseWithArgLastReturnCalled1": 42, "promiseMultiplePromiseWithArgLastReturnCalled2": 42, "promiseMultiplePromiseWithArgNoReturn": Object { "type": "promise", "value": undefined, }, "promiseMultiplePromiseWithArgNoReturnCalled1": 42, "promiseMultiplePromiseWithArgNoReturnCalled2": 42, "promiseMultipleSync": Object { "type": "promise", "value": undefined, }, "promiseMultipleSyncCalled1": true, "promiseMultipleSyncCalled2": true, "promiseMultipleSyncError": Object { "error": "Error in sync2", "type": "promise", }, "promiseMultipleSyncErrorCalled1": true, "promiseMultipleSyncLastReturn": Object { "type": "promise", "value": undefined, }, "promiseMultipleSyncLastReturnCalled1": true, "promiseMultipleSyncLastReturnCalled2": true, "promiseMultipleSyncNoReturn": Object { "type": "promise", "value": undefined, }, "promiseMultipleSyncNoReturnCalled1": true, "promiseMultipleSyncNoReturnCalled2": true, "promiseMultipleSyncWithArg": Object { "type": "promise", "value": undefined, }, "promiseMultipleSyncWithArgCalled1": 42, "promiseMultipleSyncWithArgCalled2": 42, "promiseMultipleSyncWithArgFirstReturn": Object { "type": "promise", "value": undefined, }, "promiseMultipleSyncWithArgFirstReturnCalled1": 42, "promiseMultipleSyncWithArgFirstReturnCalled2": 42, "promiseMultipleSyncWithArgLastReturn": Object { "type": "promise", "value": undefined, }, "promiseMultipleSyncWithArgLastReturnCalled1": 42, "promiseMultipleSyncWithArgLastReturnCalled2": 42, "promiseMultipleSyncWithArgNoReturn": Object { "type": "promise", "value": undefined, }, "promiseMultipleSyncWithArgNoReturnCalled1": 42, "promiseMultipleSyncWithArgNoReturnCalled2": 42, "promiseNone": Object { "type": "promise", "value": undefined, }, "promiseNoneWithArg": Object { "type": "promise", "value": undefined, }, "promiseSingleAsyncWithArg": Object { "type": "promise", "value": undefined, }, "promiseSingleAsyncWithArgCalled1": 42, "promiseSinglePromiseWithArg": Object { "type": "promise", "value": undefined, }, "promiseSinglePromiseWithArgCalled1": 42, "promiseSingleSync": Object { "type": "promise", "value": undefined, }, "promiseSingleSyncCalled1": true, "promiseSingleSyncWithArg": Object { "type": "promise", "value": undefined, }, "promiseSingleSyncWithArgCalled1": 42, "promiseSingleSyncWithArgNoReturn": Object { "type": "promise", "value": undefined, }, "promiseSingleSyncWithArgNoReturnCalled1": 42, }, "intercept": Object { "callAsyncContextIntercepted": Object { "type": "async", "value": undefined, }, "callAsyncContextInterceptedCall1": Array [ Object { "number": 42, }, 1, 2, 3, ], "callAsyncContextInterceptedCall2": Array [ 1, 2, 3, ], "callAsyncContextInterceptedTap1": Object { "number": 42, }, "callAsyncIntercepted": Object { "type": "async", "value": undefined, }, "callAsyncInterceptedCall1": Array [ 1, 2, 3, ], "callAsyncInterceptedCall2": Array [ 1, 2, 3, ], "callAsyncInterceptedDone1": true, "callAsyncInterceptedDone2": true, "callAsyncInterceptedTap1": Object { "fn": 2, "name": "promise", "type": "promise", }, "callAsyncInterceptedTap2": Object { "fn": 3, "name": "sync", "type": "sync", }, "callAsyncUnusedContextIntercepted": Object { "type": "async", "value": undefined, }, "callAsyncUnusedContextInterceptedCall1": Array [ undefined, 1, 2, 3, ], "callAsyncUnusedContextInterceptedCall2": Array [ 1, 2, 3, ], "callAsyncUnusedContextInterceptedTap1": undefined, "promiseContextIntercepted": Object { "type": "promise", "value": undefined, }, "promiseContextInterceptedCall1": Array [ Object { "number": 42, }, 1, 2, 3, ], "promiseContextInterceptedCall2": Array [ 1, 2, 3, ], "promiseContextInterceptedTap1": Object { "number": 42, }, "promiseIntercepted": Object { "type": "promise", "value": undefined, }, "promiseInterceptedCall1": Array [ 1, 2, 3, ], "promiseInterceptedCall2": Array [ 1, 2, 3, ], "promiseInterceptedDone1": true, "promiseInterceptedDone2": true, "promiseInterceptedTap1": Object { "fn": 2, "name": "promise", "type": "promise", }, "promiseInterceptedTap2": Object { "fn": 3, "name": "sync", "type": "sync", }, "promiseUnusedContextIntercepted": Object { "type": "promise", "value": undefined, }, "promiseUnusedContextInterceptedCall1": Array [ undefined, 1, 2, 3, ], "promiseUnusedContextInterceptedCall2": Array [ 1, 2, 3, ], "promiseUnusedContextInterceptedTap1": undefined, }, "sync": Object { "callAsyncIntercepted": Object { "type": "async", "value": undefined, }, "callAsyncInterceptedCall1": Array [ 1, 2, 3, ], "callAsyncInterceptedCall2": Array [ 1, 2, 3, ], "callAsyncInterceptedTap1": Object { "fn": 2, "name": "sync2", "type": "sync", }, "callAsyncInterceptedTap2": Object { "fn": 3, "name": "sync1", "type": "sync", }, "callAsyncMultipleSync": Object { "type": "async", "value": undefined, }, "callAsyncMultipleSyncCalled1": true, "callAsyncMultipleSyncCalled2": true, "callAsyncMultipleSyncError": Object { "error": "Error in sync2", "type": "async", }, "callAsyncMultipleSyncErrorCalled1": true, "callAsyncMultipleSyncErrorCalled2": true, "callAsyncMultipleSyncWithArg": Object { "type": "async", "value": undefined, }, "callAsyncMultipleSyncWithArgCalled1": 42, "callAsyncMultipleSyncWithArgCalled2": 42, "callAsyncMultipleSyncWithArgFirstReturn": Object { "type": "async", "value": undefined, }, "callAsyncMultipleSyncWithArgFirstReturnCalled1": 42, "callAsyncMultipleSyncWithArgFirstReturnCalled2": 42, "callAsyncMultipleSyncWithArgLastReturn": Object { "type": "async", "value": undefined, }, "callAsyncMultipleSyncWithArgLastReturnCalled1": 42, "callAsyncMultipleSyncWithArgLastReturnCalled2": 42, "callAsyncMultipleSyncWithArgNoReturn": Object { "type": "async", "value": undefined, }, "callAsyncMultipleSyncWithArgNoReturnCalled1": 42, "callAsyncMultipleSyncWithArgNoReturnCalled2": 42, "callAsyncMultipleSyncWithArgs": Object { "type": "async", "value": undefined, }, "callAsyncMultipleSyncWithArgsCalled1": Array [ 42, 43, 44, ], "callAsyncMultipleSyncWithArgsCalled2": Array [ 42, 43, 44, ], "callAsyncNone": Object { "type": "async", "value": undefined, }, "callAsyncNoneWithArg": Object { "type": "async", "value": undefined, }, "callAsyncSingleSync": Object { "type": "async", "value": undefined, }, "callAsyncSingleSyncCalled": true, "callAsyncSingleSyncWithArg": Object { "type": "async", "value": undefined, }, "callAsyncSingleSyncWithArgCalled": 42, "promiseIntercepted": Object { "type": "promise", "value": undefined, }, "promiseInterceptedCall1": Array [ 1, 2, 3, ], "promiseInterceptedCall2": Array [ 1, 2, 3, ], "promiseInterceptedTap1": Object { "fn": 2, "name": "sync2", "type": "sync", }, "promiseInterceptedTap2": Object { "fn": 3, "name": "sync1", "type": "sync", }, "promiseMultipleSync": Object { "type": "promise", "value": undefined, }, "promiseMultipleSyncCalled1": true, "promiseMultipleSyncCalled2": true, "promiseMultipleSyncError": Object { "error": "Error in sync2", "type": "promise", }, "promiseMultipleSyncErrorCalled1": true, "promiseMultipleSyncErrorCalled2": true, "promiseMultipleSyncWithArg": Object { "type": "promise", "value": undefined, }, "promiseMultipleSyncWithArgCalled1": 42, "promiseMultipleSyncWithArgCalled2": 42, "promiseMultipleSyncWithArgFirstReturn": Object { "type": "promise", "value": undefined, }, "promiseMultipleSyncWithArgFirstReturnCalled1": 42, "promiseMultipleSyncWithArgFirstReturnCalled2": 42, "promiseMultipleSyncWithArgLastReturn": Object { "type": "promise", "value": undefined, }, "promiseMultipleSyncWithArgLastReturnCalled1": 42, "promiseMultipleSyncWithArgLastReturnCalled2": 42, "promiseMultipleSyncWithArgNoReturn": Object { "type": "promise", "value": undefined, }, "promiseMultipleSyncWithArgNoReturnCalled1": 42, "promiseMultipleSyncWithArgNoReturnCalled2": 42, "promiseMultipleSyncWithArgs": Object { "type": "promise", "value": undefined, }, "promiseMultipleSyncWithArgsCalled1": Array [ 42, 43, 44, ], "promiseMultipleSyncWithArgsCalled2": Array [ 42, 43, 44, ], "promiseNone": Object { "type": "promise", "value": undefined, }, "promiseNoneWithArg": Object { "type": "promise", "value": undefined, }, "promiseSingleSync": Object { "type": "promise", "value": undefined, }, "promiseSingleSyncCalled": true, "promiseSingleSyncWithArg": Object { "type": "promise", "value": undefined, }, "promiseSingleSyncWithArgCalled": 42, }, } `; exports[`AsyncSeriesLoopHook should have to correct behavior 1`] = ` Object { "async": Object { "callAsyncBrokenPromise": Object { "error": "Tap function (tapPromise) did not return promise (returned this is not a promise)", }, "callAsyncMixed": Object { "type": "async", "value": undefined, }, "callAsyncMixedCalled1": 124, "callAsyncMixedCalled2": 83, "callAsyncMixedCalled3": 42, "callAsyncMultipleAsync": Object { "type": "async", "value": undefined, }, "callAsyncMultipleAsyncCalled1": 83, "callAsyncMultipleAsyncCalled2": 42, "callAsyncMultiplePromise": Object { "type": "async", "value": undefined, }, "callAsyncMultiplePromiseCalled1": 83, "callAsyncMultiplePromiseCalled2": 42, "callAsyncSingleAsync": Object { "type": "async", "value": undefined, }, "callAsyncSingleAsyncCalled": 42, "callAsyncSinglePromise": Object { "type": "async", "value": undefined, }, "callAsyncSinglePromiseCalled": 42, "promiseBrokenPromise": Object { "error": "Tap function (tapPromise) did not return promise (returned this is not a promise)", "type": "promise", }, "promiseMixed": Object { "type": "promise", "value": undefined, }, "promiseMixedCalled1": 124, "promiseMixedCalled2": 83, "promiseMixedCalled3": 42, "promiseMultipleAsync": Object { "type": "promise", "value": undefined, }, "promiseMultipleAsyncCalled1": 83, "promiseMultipleAsyncCalled2": 42, "promiseMultiplePromise": Object { "type": "promise", "value": undefined, }, "promiseMultiplePromiseCalled1": 83, "promiseMultiplePromiseCalled2": 42, "promiseSingleAsync": Object { "type": "promise", "value": undefined, }, "promiseSingleAsyncCalled": 42, "promiseSinglePromise": Object { "type": "promise", "value": undefined, }, "promiseSinglePromiseCalled": 42, }, "sync": Object { "callAsyncInterceptedSync": Object { "type": "async", "value": undefined, }, "callAsyncInterceptedSyncCalled1": 83, "callAsyncInterceptedSyncCalled2": 42, "callAsyncInterceptedSyncCalledCall": 1, "callAsyncInterceptedSyncCalledLoop": 83, "callAsyncInterceptedSyncCalledTap": 125, "callAsyncMultipleSync": Object { "type": "async", "value": undefined, }, "callAsyncMultipleSyncCalled1": 83, "callAsyncMultipleSyncCalled2": 42, "callAsyncNone": Object { "type": "async", "value": undefined, }, "callAsyncNoneWithArg": Object { "type": "async", "value": undefined, }, "callAsyncSingleSync": Object { "type": "async", "value": undefined, }, "callAsyncSingleSyncCalled": 42, "promiseInterceptedSync": Object { "type": "promise", "value": undefined, }, "promiseInterceptedSyncCalled1": 83, "promiseInterceptedSyncCalled2": 42, "promiseInterceptedSyncCalledCall": 1, "promiseInterceptedSyncCalledLoop": 83, "promiseInterceptedSyncCalledTap": 125, "promiseMultipleSync": Object { "type": "promise", "value": undefined, }, "promiseMultipleSyncCalled1": 83, "promiseMultipleSyncCalled2": 42, "promiseNone": Object { "type": "promise", "value": undefined, }, "promiseNoneWithArg": Object { "type": "promise", "value": undefined, }, "promiseSingleSync": Object { "type": "promise", "value": undefined, }, "promiseSingleSyncCalled": 42, }, } `; exports[`AsyncSeriesWaterfallHook should have to correct behavior 1`] = ` Object { "async": Object { "callAsyncMultipleAsyncEarlyError": Object { "error": "Waterfall hooks must have at least one argument", }, "callAsyncMultipleAsyncError": Object { "error": "Waterfall hooks must have at least one argument", }, "callAsyncMultipleAsyncLateError": Object { "error": "Waterfall hooks must have at least one argument", }, "callAsyncMultipleAsyncLateErrorEarlyResult1": Object { "error": "Waterfall hooks must have at least one argument", }, "callAsyncMultipleAsyncLateErrorEarlyResult2": Object { "error": "Waterfall hooks must have at least one argument", }, "callAsyncMultipleAsyncWithArg": Object { "type": "async", "value": 45, }, "callAsyncMultipleAsyncWithArgCalled1": 42, "callAsyncMultipleAsyncWithArgCalled2": 43, "callAsyncMultipleAsyncWithArgFirstReturn": Object { "type": "async", "value": 43, }, "callAsyncMultipleAsyncWithArgFirstReturnCalled1": 42, "callAsyncMultipleAsyncWithArgFirstReturnCalled2": 43, "callAsyncMultipleAsyncWithArgLastReturn": Object { "type": "async", "value": 44, }, "callAsyncMultipleAsyncWithArgLastReturnCalled1": 42, "callAsyncMultipleAsyncWithArgLastReturnCalled2": 42, "callAsyncMultipleAsyncWithArgNoReturn": Object { "type": "async", "value": 42, }, "callAsyncMultipleAsyncWithArgNoReturnCalled1": 42, "callAsyncMultipleAsyncWithArgNoReturnCalled2": 42, "callAsyncMultipleMixed1WithArg": Object { "type": "async", "value": 48, }, "callAsyncMultipleMixed1WithArgCalled1": 42, "callAsyncMultipleMixed1WithArgCalled2": 43, "callAsyncMultipleMixed1WithArgCalled3": 45, "callAsyncMultipleMixed2WithArg": Object { "type": "async", "value": 45, }, "callAsyncMultipleMixed2WithArgCalled1": 42, "callAsyncMultipleMixed2WithArgCalled2": 43, "callAsyncMultipleMixed3WithArg": Object { "type": "async", "value": 48, }, "callAsyncMultipleMixed3WithArgCalled1": 42, "callAsyncMultipleMixed3WithArgCalled2": 43, "callAsyncMultipleMixed3WithArgCalled3": 45, "callAsyncMultipleMixedError1WithArg": Object { "error": "Error in sync", "type": "async", }, "callAsyncMultipleMixedError1WithArgCalled1": 42, "callAsyncMultipleMixedError1WithArgCalled2": 42, "callAsyncMultipleMixedError1WithArgCalled3": 43, "callAsyncMultipleMixedError2WithArg": Object { "error": "Error in promise", "type": "async", }, "callAsyncMultipleMixedError2WithArgCalled1": 42, "callAsyncMultipleMixedError2WithArgCalled2": 42, "callAsyncMultipleMixedError3WithArg": Object { "error": "Error in async", "type": "async", }, "callAsyncMultipleMixedError3WithArgCalled1": 42, "callAsyncMultipleMixedLateError": Object { "error": "Waterfall hooks must have at least one argument", }, "callAsyncMultiplePromiseEarlyError": Object { "error": "Waterfall hooks must have at least one argument", }, "callAsyncMultiplePromiseError": Object { "error": "Waterfall hooks must have at least one argument", }, "callAsyncMultiplePromiseLateError": Object { "error": "Waterfall hooks must have at least one argument", }, "callAsyncMultiplePromiseWithArg": Object { "type": "async", "value": 45, }, "callAsyncMultiplePromiseWithArgCalled1": 42, "callAsyncMultiplePromiseWithArgCalled2": 43, "callAsyncMultiplePromiseWithArgFirstReturn": Object { "type": "async", "value": 43, }, "callAsyncMultiplePromiseWithArgFirstReturnCalled1": 42, "callAsyncMultiplePromiseWithArgFirstReturnCalled2": 43, "callAsyncMultiplePromiseWithArgLastReturn": Object { "type": "async", "value": 44, }, "callAsyncMultiplePromiseWithArgLastReturnCalled1": 42, "callAsyncMultiplePromiseWithArgLastReturnCalled2": 42, "callAsyncMultiplePromiseWithArgNoReturn": Object { "type": "async", "value": 42, }, "callAsyncMultiplePromiseWithArgNoReturnCalled1": 42, "callAsyncMultiplePromiseWithArgNoReturnCalled2": 42, "callAsyncMultipleSync": Object { "error": "Waterfall hooks must have at least one argument", }, "callAsyncMultipleSyncError": Object { "error": "Waterfall hooks must have at least one argument", }, "callAsyncMultipleSyncLastReturn": Object { "error": "Waterfall hooks must have at least one argument", }, "callAsyncMultipleSyncNoReturn": Object { "error": "Waterfall hooks must have at least one argument", }, "callAsyncMultipleSyncWithArg": Object { "type": "async", "value": 45, }, "callAsyncMultipleSyncWithArgCalled1": 42, "callAsyncMultipleSyncWithArgCalled2": 43, "callAsyncMultipleSyncWithArgFirstReturn": Object { "type": "async", "value": 43, }, "callAsyncMultipleSyncWithArgFirstReturnCalled1": 42, "callAsyncMultipleSyncWithArgFirstReturnCalled2": 43, "callAsyncMultipleSyncWithArgLastReturn": Object { "type": "async", "value": 44, }, "callAsyncMultipleSyncWithArgLastReturnCalled1": 42, "callAsyncMultipleSyncWithArgLastReturnCalled2": 42, "callAsyncMultipleSyncWithArgNoReturn": Object { "type": "async", "value": 42, }, "callAsyncMultipleSyncWithArgNoReturnCalled1": 42, "callAsyncMultipleSyncWithArgNoReturnCalled2": 42, "callAsyncNone": Object { "error": "Waterfall hooks must have at least one argument", }, "callAsyncNoneWithArg": Object { "type": "async", "value": 42, }, "callAsyncSingleAsyncWithArg": Object { "type": "async", "value": 42, }, "callAsyncSingleAsyncWithArgCalled1": 42, "callAsyncSinglePromiseWithArg": Object { "type": "async", "value": 43, }, "callAsyncSinglePromiseWithArgCalled1": 42, "callAsyncSingleSync": Object { "error": "Waterfall hooks must have at least one argument", }, "callAsyncSingleSyncWithArg": Object { "type": "async", "value": 43, }, "callAsyncSingleSyncWithArgCalled1": 42, "callAsyncSingleSyncWithArgNoReturn": Object { "type": "async", "value": 42, }, "callAsyncSingleSyncWithArgNoReturnCalled1": 42, "promiseMultipleAsyncEarlyError": Object { "error": "Waterfall hooks must have at least one argument", }, "promiseMultipleAsyncError": Object { "error": "Waterfall hooks must have at least one argument", }, "promiseMultipleAsyncLateError": Object { "error": "Waterfall hooks must have at least one argument", }, "promiseMultipleAsyncLateErrorEarlyResult1": Object { "error": "Waterfall hooks must have at least one argument", }, "promiseMultipleAsyncLateErrorEarlyResult2": Object { "error": "Waterfall hooks must have at least one argument", }, "promiseMultipleAsyncWithArg": Object { "type": "promise", "value": 45, }, "promiseMultipleAsyncWithArgCalled1": 42, "promiseMultipleAsyncWithArgCalled2": 43, "promiseMultipleAsyncWithArgFirstReturn": Object { "type": "promise", "value": 43, }, "promiseMultipleAsyncWithArgFirstReturnCalled1": 42, "promiseMultipleAsyncWithArgFirstReturnCalled2": 43, "promiseMultipleAsyncWithArgLastReturn": Object { "type": "promise", "value": 44, }, "promiseMultipleAsyncWithArgLastReturnCalled1": 42, "promiseMultipleAsyncWithArgLastReturnCalled2": 42, "promiseMultipleAsyncWithArgNoReturn": Object { "type": "promise", "value": 42, }, "promiseMultipleAsyncWithArgNoReturnCalled1": 42, "promiseMultipleAsyncWithArgNoReturnCalled2": 42, "promiseMultipleMixed1WithArg": Object { "type": "promise", "value": 48, }, "promiseMultipleMixed1WithArgCalled1": 42, "promiseMultipleMixed1WithArgCalled2": 43, "promiseMultipleMixed1WithArgCalled3": 45, "promiseMultipleMixed2WithArg": Object { "type": "promise", "value": 45, }, "promiseMultipleMixed2WithArgCalled1": 42, "promiseMultipleMixed2WithArgCalled2": 43, "promiseMultipleMixed3WithArg": Object { "type": "promise", "value": 48, }, "promiseMultipleMixed3WithArgCalled1": 42, "promiseMultipleMixed3WithArgCalled2": 43, "promiseMultipleMixed3WithArgCalled3": 45, "promiseMultipleMixedError1WithArg": Object { "error": "Error in sync", "type": "promise", }, "promiseMultipleMixedError1WithArgCalled1": 42, "promiseMultipleMixedError1WithArgCalled2": 42, "promiseMultipleMixedError1WithArgCalled3": 43, "promiseMultipleMixedError2WithArg": Object { "error": "Error in promise", "type": "promise", }, "promiseMultipleMixedError2WithArgCalled1": 42, "promiseMultipleMixedError2WithArgCalled2": 42, "promiseMultipleMixedError3WithArg": Object { "error": "Error in async", "type": "promise", }, "promiseMultipleMixedError3WithArgCalled1": 42, "promiseMultipleMixedLateError": Object { "error": "Waterfall hooks must have at least one argument", }, "promiseMultiplePromiseEarlyError": Object { "error": "Waterfall hooks must have at least one argument", }, "promiseMultiplePromiseError": Object { "error": "Waterfall hooks must have at least one argument", }, "promiseMultiplePromiseLateError": Object { "error": "Waterfall hooks must have at least one argument", }, "promiseMultiplePromiseWithArg": Object { "type": "promise", "value": 45, }, "promiseMultiplePromiseWithArgCalled1": 42, "promiseMultiplePromiseWithArgCalled2": 43, "promiseMultiplePromiseWithArgFirstReturn": Object { "type": "promise", "value": 43, }, "promiseMultiplePromiseWithArgFirstReturnCalled1": 42, "promiseMultiplePromiseWithArgFirstReturnCalled2": 43, "promiseMultiplePromiseWithArgLastReturn": Object { "type": "promise", "value": 44, }, "promiseMultiplePromiseWithArgLastReturnCalled1": 42, "promiseMultiplePromiseWithArgLastReturnCalled2": 42, "promiseMultiplePromiseWithArgNoReturn": Object { "type": "promise", "value": 42, }, "promiseMultiplePromiseWithArgNoReturnCalled1": 42, "promiseMultiplePromiseWithArgNoReturnCalled2": 42, "promiseMultipleSync": Object { "error": "Waterfall hooks must have at least one argument", }, "promiseMultipleSyncError": Object { "error": "Waterfall hooks must have at least one argument", }, "promiseMultipleSyncLastReturn": Object { "error": "Waterfall hooks must have at least one argument", }, "promiseMultipleSyncNoReturn": Object { "error": "Waterfall hooks must have at least one argument", }, "promiseMultipleSyncWithArg": Object { "type": "promise", "value": 45, }, "promiseMultipleSyncWithArgCalled1": 42, "promiseMultipleSyncWithArgCalled2": 43, "promiseMultipleSyncWithArgFirstReturn": Object { "type": "promise", "value": 43, }, "promiseMultipleSyncWithArgFirstReturnCalled1": 42, "promiseMultipleSyncWithArgFirstReturnCalled2": 43, "promiseMultipleSyncWithArgLastReturn": Object { "type": "promise", "value": 44, }, "promiseMultipleSyncWithArgLastReturnCalled1": 42, "promiseMultipleSyncWithArgLastReturnCalled2": 42, "promiseMultipleSyncWithArgNoReturn": Object { "type": "promise", "value": 42, }, "promiseMultipleSyncWithArgNoReturnCalled1": 42, "promiseMultipleSyncWithArgNoReturnCalled2": 42, "promiseNone": Object { "error": "Waterfall hooks must have at least one argument", }, "promiseNoneWithArg": Object { "type": "promise", "value": 42, }, "promiseSingleAsyncWithArg": Object { "type": "promise", "value": 42, }, "promiseSingleAsyncWithArgCalled1": 42, "promiseSinglePromiseWithArg": Object { "type": "promise", "value": 43, }, "promiseSinglePromiseWithArgCalled1": 42, "promiseSingleSync": Object { "error": "Waterfall hooks must have at least one argument", }, "promiseSingleSyncWithArg": Object { "type": "promise", "value": 43, }, "promiseSingleSyncWithArgCalled1": 42, "promiseSingleSyncWithArgNoReturn": Object { "type": "promise", "value": 42, }, "promiseSingleSyncWithArgNoReturnCalled1": 42, }, "intercept": Object { "callAsyncContextIntercepted": Object { "type": "async", "value": 48, }, "callAsyncContextInterceptedCall1": Array [ Object { "number": 42, }, 1, 2, 3, ], "callAsyncContextInterceptedCall2": Array [ 1, 2, 3, ], "callAsyncContextInterceptedTap1": Object { "number": 42, }, "callAsyncIntercepted": Object { "type": "async", "value": 9, }, "callAsyncInterceptedCall1": Array [ 1, 2, 3, ], "callAsyncInterceptedCall2": Array [ 1, 2, 3, ], "callAsyncInterceptedResult1": 9, "callAsyncInterceptedResult2": 9, "callAsyncInterceptedTap1": Object { "fn": 2, "name": "promise", "type": "promise", }, "callAsyncInterceptedTap2": Object { "fn": 3, "name": "sync", "type": "sync", }, "callAsyncUnusedContextIntercepted": Object { "type": "async", "value": 6, }, "callAsyncUnusedContextInterceptedCall1": Array [ undefined, 1, 2, 3, ], "callAsyncUnusedContextInterceptedCall2": Array [ 1, 2, 3, ], "callAsyncUnusedContextInterceptedTap1": undefined, "promiseContextIntercepted": Object { "type": "promise", "value": 48, }, "promiseContextInterceptedCall1": Array [ Object { "number": 42, }, 1, 2, 3, ], "promiseContextInterceptedCall2": Array [ 1, 2, 3, ], "promiseContextInterceptedTap1": Object { "number": 42, }, "promiseIntercepted": Object { "type": "promise", "value": 9, }, "promiseInterceptedCall1": Array [ 1, 2, 3, ], "promiseInterceptedCall2": Array [ 1, 2, 3, ], "promiseInterceptedResult1": 9, "promiseInterceptedResult2": 9, "promiseInterceptedTap1": Object { "fn": 2, "name": "promise", "type": "promise", }, "promiseInterceptedTap2": Object { "fn": 3, "name": "sync", "type": "sync", }, "promiseUnusedContextIntercepted": Object { "type": "promise", "value": 6, }, "promiseUnusedContextInterceptedCall1": Array [ undefined, 1, 2, 3, ], "promiseUnusedContextInterceptedCall2": Array [ 1, 2, 3, ], "promiseUnusedContextInterceptedTap1": undefined, }, "sync": Object { "callAsyncIntercepted": Object { "type": "async", "value": 9, }, "callAsyncInterceptedCall1": Array [ 1, 2, 3, ], "callAsyncInterceptedCall2": Array [ 1, 2, 3, ], "callAsyncInterceptedTap1": Object { "fn": 2, "name": "sync2", "type": "sync", }, "callAsyncInterceptedTap2": Object { "fn": 3, "name": "sync1", "type": "sync", }, "callAsyncMultipleSync": Object { "error": "Waterfall hooks must have at least one argument", }, "callAsyncMultipleSyncError": Object { "error": "Waterfall hooks must have at least one argument", }, "callAsyncMultipleSyncWithArg": Object { "type": "async", "value": 127, }, "callAsyncMultipleSyncWithArgCalled1": 42, "callAsyncMultipleSyncWithArgCalled2": 84, "callAsyncMultipleSyncWithArgFirstReturn": Object { "type": "async", "value": 84, }, "callAsyncMultipleSyncWithArgFirstReturnCalled1": 42, "callAsyncMultipleSyncWithArgFirstReturnCalled2": 84, "callAsyncMultipleSyncWithArgLastReturn": Object { "type": "async", "value": 85, }, "callAsyncMultipleSyncWithArgLastReturnCalled1": 42, "callAsyncMultipleSyncWithArgLastReturnCalled2": 42, "callAsyncMultipleSyncWithArgNoReturn": Object { "type": "async", "value": 42, }, "callAsyncMultipleSyncWithArgNoReturnCalled1": 42, "callAsyncMultipleSyncWithArgNoReturnCalled2": 42, "callAsyncMultipleSyncWithArgs": Object { "type": "async", "value": 217, }, "callAsyncMultipleSyncWithArgsCalled1": Array [ 42, 43, 44, ], "callAsyncMultipleSyncWithArgsCalled2": Array [ 129, 43, 44, ], "callAsyncNone": Object { "error": "Waterfall hooks must have at least one argument", }, "callAsyncNoneWithArg": Object { "type": "async", "value": 42, }, "callAsyncSingleSync": Object { "error": "Waterfall hooks must have at least one argument", }, "callAsyncSingleSyncWithArg": Object { "type": "async", "value": 42, }, "callAsyncSingleSyncWithArgCalled": 42, "promiseIntercepted": Object { "type": "promise", "value": 9, }, "promiseInterceptedCall1": Array [ 1, 2, 3, ], "promiseInterceptedCall2": Array [ 1, 2, 3, ], "promiseInterceptedTap1": Object { "fn": 2, "name": "sync2", "type": "sync", }, "promiseInterceptedTap2": Object { "fn": 3, "name": "sync1", "type": "sync", }, "promiseMultipleSync": Object { "error": "Waterfall hooks must have at least one argument", }, "promiseMultipleSyncError": Object { "error": "Waterfall hooks must have at least one argument", }, "promiseMultipleSyncWithArg": Object { "type": "promise", "value": 127, }, "promiseMultipleSyncWithArgCalled1": 42, "promiseMultipleSyncWithArgCalled2": 84, "promiseMultipleSyncWithArgFirstReturn": Object { "type": "promise", "value": 84, }, "promiseMultipleSyncWithArgFirstReturnCalled1": 42, "promiseMultipleSyncWithArgFirstReturnCalled2": 84, "promiseMultipleSyncWithArgLastReturn": Object { "type": "promise", "value": 85, }, "promiseMultipleSyncWithArgLastReturnCalled1": 42, "promiseMultipleSyncWithArgLastReturnCalled2": 42, "promiseMultipleSyncWithArgNoReturn": Object { "type": "promise", "value": 42, }, "promiseMultipleSyncWithArgNoReturnCalled1": 42, "promiseMultipleSyncWithArgNoReturnCalled2": 42, "promiseMultipleSyncWithArgs": Object { "type": "promise", "value": 217, }, "promiseMultipleSyncWithArgsCalled1": Array [ 42, 43, 44, ], "promiseMultipleSyncWithArgsCalled2": Array [ 129, 43, 44, ], "promiseNone": Object { "error": "Waterfall hooks must have at least one argument", }, "promiseNoneWithArg": Object { "type": "promise", "value": 42, }, "promiseSingleSync": Object { "error": "Waterfall hooks must have at least one argument", }, "promiseSingleSyncWithArg": Object { "type": "promise", "value": 42, }, "promiseSingleSyncWithArgCalled": 42, }, } `; tapable-2.2.1/lib/__tests__/__snapshots__/HookCodeFactory.js.snap000066400000000000000000001132451411762003000247670ustar00rootroot00000000000000// Jest Snapshot v1, https://goo.gl/fbAQLP exports[`HookCodeFactory callTap (no args, no intercept) async with onResult 1`] = ` "var _fn1 = _x[1]; _fn1((function(_err1, _result1) { if(_err1) { onError(_err1); } else { onResult(_result1); } })); " `; exports[`HookCodeFactory callTap (no args, no intercept) async with onResult 2`] = ` "var _fn1 = _x[1]; _fn1(function(_err1, _result1) { if (_err1) { onError(_err1); } else { onResult(_result1); } }); " `; exports[`HookCodeFactory callTap (no args, no intercept) async without onResult 1`] = ` "var _fn1 = _x[1]; _fn1((function(_err1) { if(_err1) { onError(_err1); } else { onDone(); } })); " `; exports[`HookCodeFactory callTap (no args, no intercept) async without onResult 2`] = ` "var _fn1 = _x[1]; _fn1(function(_err1) { if (_err1) { onError(_err1); } else { onDone(); } }); " `; exports[`HookCodeFactory callTap (no args, no intercept) promise with onResult 1`] = ` "var _fn2 = _x[2]; var _hasResult2 = false; var _promise2 = _fn2(); if (!_promise2 || !_promise2.then) throw new Error('Tap function (tapPromise) did not return promise (returned ' + _promise2 + ')'); _promise2.then((function(_result2) { _hasResult2 = true; onResult(_result2); }), function(_err2) { if(_hasResult2) throw _err2; onError(_err2); }); " `; exports[`HookCodeFactory callTap (no args, no intercept) promise with onResult 2`] = ` "var _fn2 = _x[2]; var _hasResult2 = false; var _promise2 = _fn2(); if (!_promise2 || !_promise2.then) throw new Error( \\"Tap function (tapPromise) did not return promise (returned \\" + _promise2 + \\")\\" ); _promise2.then( function(_result2) { _hasResult2 = true; onResult(_result2); }, function(_err2) { if (_hasResult2) throw _err2; onError(_err2); } ); " `; exports[`HookCodeFactory callTap (no args, no intercept) promise without onResult 1`] = ` "var _fn2 = _x[2]; var _hasResult2 = false; var _promise2 = _fn2(); if (!_promise2 || !_promise2.then) throw new Error('Tap function (tapPromise) did not return promise (returned ' + _promise2 + ')'); _promise2.then((function(_result2) { _hasResult2 = true; onDone(); }), function(_err2) { if(_hasResult2) throw _err2; onError(_err2); }); " `; exports[`HookCodeFactory callTap (no args, no intercept) promise without onResult 2`] = ` "var _fn2 = _x[2]; var _hasResult2 = false; var _promise2 = _fn2(); if (!_promise2 || !_promise2.then) throw new Error( \\"Tap function (tapPromise) did not return promise (returned \\" + _promise2 + \\")\\" ); _promise2.then( function(_result2) { _hasResult2 = true; onDone(); }, function(_err2) { if (_hasResult2) throw _err2; onError(_err2); } ); " `; exports[`HookCodeFactory callTap (no args, no intercept) sync with onResult 1`] = ` "var _fn0 = _x[0]; var _hasError0 = false; try { var _result0 = _fn0(); } catch(_err) { _hasError0 = true; onError(_err); } if(!_hasError0) { onResult(_result0); } " `; exports[`HookCodeFactory callTap (no args, no intercept) sync with onResult 2`] = ` "var _fn0 = _x[0]; var _hasError0 = false; try { var _result0 = _fn0(); } catch (_err) { _hasError0 = true; onError(_err); } if (!_hasError0) { onResult(_result0); } " `; exports[`HookCodeFactory callTap (no args, no intercept) sync without onResult 1`] = ` "var _fn0 = _x[0]; var _hasError0 = false; try { _fn0(); } catch(_err) { _hasError0 = true; onError(_err); } if(!_hasError0) { onDone(); } " `; exports[`HookCodeFactory callTap (no args, no intercept) sync without onResult 2`] = ` "var _fn0 = _x[0]; var _hasError0 = false; try { _fn0(); } catch (_err) { _hasError0 = true; onError(_err); } if (!_hasError0) { onDone(); } " `; exports[`HookCodeFactory callTap (with args, no intercept) async with onResult 1`] = ` "var _fn1 = _x[1]; _fn1(a, b, c, (function(_err1, _result1) { if(_err1) { onError(_err1); } else { onResult(_result1); } })); " `; exports[`HookCodeFactory callTap (with args, no intercept) async with onResult 2`] = ` "var _fn1 = _x[1]; _fn1(a, b, c, function(_err1, _result1) { if (_err1) { onError(_err1); } else { onResult(_result1); } }); " `; exports[`HookCodeFactory callTap (with args, no intercept) async without onResult 1`] = ` "var _fn1 = _x[1]; _fn1(a, b, c, (function(_err1) { if(_err1) { onError(_err1); } else { onDone(); } })); " `; exports[`HookCodeFactory callTap (with args, no intercept) async without onResult 2`] = ` "var _fn1 = _x[1]; _fn1(a, b, c, function(_err1) { if (_err1) { onError(_err1); } else { onDone(); } }); " `; exports[`HookCodeFactory callTap (with args, no intercept) promise with onResult 1`] = ` "var _fn2 = _x[2]; var _hasResult2 = false; var _promise2 = _fn2(a, b, c); if (!_promise2 || !_promise2.then) throw new Error('Tap function (tapPromise) did not return promise (returned ' + _promise2 + ')'); _promise2.then((function(_result2) { _hasResult2 = true; onResult(_result2); }), function(_err2) { if(_hasResult2) throw _err2; onError(_err2); }); " `; exports[`HookCodeFactory callTap (with args, no intercept) promise with onResult 2`] = ` "var _fn2 = _x[2]; var _hasResult2 = false; var _promise2 = _fn2(a, b, c); if (!_promise2 || !_promise2.then) throw new Error( \\"Tap function (tapPromise) did not return promise (returned \\" + _promise2 + \\")\\" ); _promise2.then( function(_result2) { _hasResult2 = true; onResult(_result2); }, function(_err2) { if (_hasResult2) throw _err2; onError(_err2); } ); " `; exports[`HookCodeFactory callTap (with args, no intercept) promise without onResult 1`] = ` "var _fn2 = _x[2]; var _hasResult2 = false; var _promise2 = _fn2(a, b, c); if (!_promise2 || !_promise2.then) throw new Error('Tap function (tapPromise) did not return promise (returned ' + _promise2 + ')'); _promise2.then((function(_result2) { _hasResult2 = true; onDone(); }), function(_err2) { if(_hasResult2) throw _err2; onError(_err2); }); " `; exports[`HookCodeFactory callTap (with args, no intercept) promise without onResult 2`] = ` "var _fn2 = _x[2]; var _hasResult2 = false; var _promise2 = _fn2(a, b, c); if (!_promise2 || !_promise2.then) throw new Error( \\"Tap function (tapPromise) did not return promise (returned \\" + _promise2 + \\")\\" ); _promise2.then( function(_result2) { _hasResult2 = true; onDone(); }, function(_err2) { if (_hasResult2) throw _err2; onError(_err2); } ); " `; exports[`HookCodeFactory callTap (with args, no intercept) sync with onResult 1`] = ` "var _fn0 = _x[0]; var _hasError0 = false; try { var _result0 = _fn0(a, b, c); } catch(_err) { _hasError0 = true; onError(_err); } if(!_hasError0) { onResult(_result0); } " `; exports[`HookCodeFactory callTap (with args, no intercept) sync with onResult 2`] = ` "var _fn0 = _x[0]; var _hasError0 = false; try { var _result0 = _fn0(a, b, c); } catch (_err) { _hasError0 = true; onError(_err); } if (!_hasError0) { onResult(_result0); } " `; exports[`HookCodeFactory callTap (with args, no intercept) sync without onResult 1`] = ` "var _fn0 = _x[0]; var _hasError0 = false; try { _fn0(a, b, c); } catch(_err) { _hasError0 = true; onError(_err); } if(!_hasError0) { onDone(); } " `; exports[`HookCodeFactory callTap (with args, no intercept) sync without onResult 2`] = ` "var _fn0 = _x[0]; var _hasError0 = false; try { _fn0(a, b, c); } catch (_err) { _hasError0 = true; onError(_err); } if (!_hasError0) { onDone(); } " `; exports[`HookCodeFactory callTap (with args, with intercept) async with onResult 1`] = ` "var _tap1 = _taps[1]; _interceptors[0].tap(_tap1); _interceptors[1].tap(_tap1); var _fn1 = _x[1]; _fn1(a, b, c, (function(_err1, _result1) { if(_err1) { onError(_err1); } else { onResult(_result1); } })); " `; exports[`HookCodeFactory callTap (with args, with intercept) async with onResult 2`] = ` "var _tap1 = _taps[1]; _interceptors[0].tap(_tap1); _interceptors[1].tap(_tap1); var _fn1 = _x[1]; _fn1(a, b, c, function(_err1, _result1) { if (_err1) { onError(_err1); } else { onResult(_result1); } }); " `; exports[`HookCodeFactory callTap (with args, with intercept) async without onResult 1`] = ` "var _tap1 = _taps[1]; _interceptors[0].tap(_tap1); _interceptors[1].tap(_tap1); var _fn1 = _x[1]; _fn1(a, b, c, (function(_err1) { if(_err1) { onError(_err1); } else { onDone(); } })); " `; exports[`HookCodeFactory callTap (with args, with intercept) async without onResult 2`] = ` "var _tap1 = _taps[1]; _interceptors[0].tap(_tap1); _interceptors[1].tap(_tap1); var _fn1 = _x[1]; _fn1(a, b, c, function(_err1) { if (_err1) { onError(_err1); } else { onDone(); } }); " `; exports[`HookCodeFactory callTap (with args, with intercept) promise with onResult 1`] = ` "var _tap2 = _taps[2]; _interceptors[0].tap(_tap2); _interceptors[1].tap(_tap2); var _fn2 = _x[2]; var _hasResult2 = false; var _promise2 = _fn2(a, b, c); if (!_promise2 || !_promise2.then) throw new Error('Tap function (tapPromise) did not return promise (returned ' + _promise2 + ')'); _promise2.then((function(_result2) { _hasResult2 = true; onResult(_result2); }), function(_err2) { if(_hasResult2) throw _err2; onError(_err2); }); " `; exports[`HookCodeFactory callTap (with args, with intercept) promise with onResult 2`] = ` "var _tap2 = _taps[2]; _interceptors[0].tap(_tap2); _interceptors[1].tap(_tap2); var _fn2 = _x[2]; var _hasResult2 = false; var _promise2 = _fn2(a, b, c); if (!_promise2 || !_promise2.then) throw new Error( \\"Tap function (tapPromise) did not return promise (returned \\" + _promise2 + \\")\\" ); _promise2.then( function(_result2) { _hasResult2 = true; onResult(_result2); }, function(_err2) { if (_hasResult2) throw _err2; onError(_err2); } ); " `; exports[`HookCodeFactory callTap (with args, with intercept) promise without onResult 1`] = ` "var _tap2 = _taps[2]; _interceptors[0].tap(_tap2); _interceptors[1].tap(_tap2); var _fn2 = _x[2]; var _hasResult2 = false; var _promise2 = _fn2(a, b, c); if (!_promise2 || !_promise2.then) throw new Error('Tap function (tapPromise) did not return promise (returned ' + _promise2 + ')'); _promise2.then((function(_result2) { _hasResult2 = true; onDone(); }), function(_err2) { if(_hasResult2) throw _err2; onError(_err2); }); " `; exports[`HookCodeFactory callTap (with args, with intercept) promise without onResult 2`] = ` "var _tap2 = _taps[2]; _interceptors[0].tap(_tap2); _interceptors[1].tap(_tap2); var _fn2 = _x[2]; var _hasResult2 = false; var _promise2 = _fn2(a, b, c); if (!_promise2 || !_promise2.then) throw new Error( \\"Tap function (tapPromise) did not return promise (returned \\" + _promise2 + \\")\\" ); _promise2.then( function(_result2) { _hasResult2 = true; onDone(); }, function(_err2) { if (_hasResult2) throw _err2; onError(_err2); } ); " `; exports[`HookCodeFactory callTap (with args, with intercept) sync with onResult 1`] = ` "var _tap0 = _taps[0]; _interceptors[0].tap(_tap0); _interceptors[1].tap(_tap0); var _fn0 = _x[0]; var _hasError0 = false; try { var _result0 = _fn0(a, b, c); } catch(_err) { _hasError0 = true; onError(_err); } if(!_hasError0) { onResult(_result0); } " `; exports[`HookCodeFactory callTap (with args, with intercept) sync with onResult 2`] = ` "var _tap0 = _taps[0]; _interceptors[0].tap(_tap0); _interceptors[1].tap(_tap0); var _fn0 = _x[0]; var _hasError0 = false; try { var _result0 = _fn0(a, b, c); } catch (_err) { _hasError0 = true; onError(_err); } if (!_hasError0) { onResult(_result0); } " `; exports[`HookCodeFactory callTap (with args, with intercept) sync without onResult 1`] = ` "var _tap0 = _taps[0]; _interceptors[0].tap(_tap0); _interceptors[1].tap(_tap0); var _fn0 = _x[0]; var _hasError0 = false; try { _fn0(a, b, c); } catch(_err) { _hasError0 = true; onError(_err); } if(!_hasError0) { onDone(); } " `; exports[`HookCodeFactory callTap (with args, with intercept) sync without onResult 2`] = ` "var _tap0 = _taps[0]; _interceptors[0].tap(_tap0); _interceptors[1].tap(_tap0); var _fn0 = _x[0]; var _hasError0 = false; try { _fn0(a, b, c); } catch (_err) { _hasError0 = true; onError(_err); } if (!_hasError0) { onDone(); } " `; exports[`HookCodeFactory taps (mixed) callTapsLooping 1`] = ` "var _looper = (function() { var _loopAsync = false; var _loop; do { _loop = false; function _next1() { var _fn2 = _x[2]; var _hasResult2 = false; var _promise2 = _fn2(a, b, c); if (!_promise2 || !_promise2.then) throw new Error('Tap function (tapPromise) did not return promise (returned ' + _promise2 + ')'); _promise2.then((function(_result2) { _hasResult2 = true; if(_result2 !== undefined) { _loop = true; if(_loopAsync) _looper(); } else { if(!_loop) { onDone(); } } }), function(_err2) { if(_hasResult2) throw _err2; onError(2, _err2); }); } var _fn0 = _x[0]; var _hasError0 = false; try { var _result0 = _fn0(a, b, c); } catch(_err) { _hasError0 = true; onError(0, _err); } if(!_hasError0) { if(_result0 !== undefined) { _loop = true; if(_loopAsync) _looper(); } else { var _fn1 = _x[1]; _fn1(a, b, c, (function(_err1, _result1) { if(_err1) { onError(1, _err1); } else { if(_result1 !== undefined) { _loop = true; if(_loopAsync) _looper(); } else { _next1(); } } })); } } } while(_loop); _loopAsync = true; }); _looper(); " `; exports[`HookCodeFactory taps (mixed) callTapsLooping 2`] = ` "var _looper = function() { var _loopAsync = false; var _loop; do { _loop = false; function _next1() { var _fn2 = _x[2]; var _hasResult2 = false; var _promise2 = _fn2(a, b, c); if (!_promise2 || !_promise2.then) throw new Error( \\"Tap function (tapPromise) did not return promise (returned \\" + _promise2 + \\")\\" ); _promise2.then( function(_result2) { _hasResult2 = true; if (_result2 !== undefined) { _loop = true; if (_loopAsync) _looper(); } else { if (!_loop) { onDone(); } } }, function(_err2) { if (_hasResult2) throw _err2; onError(2, _err2); } ); } var _fn0 = _x[0]; var _hasError0 = false; try { var _result0 = _fn0(a, b, c); } catch (_err) { _hasError0 = true; onError(0, _err); } if (!_hasError0) { if (_result0 !== undefined) { _loop = true; if (_loopAsync) _looper(); } else { var _fn1 = _x[1]; _fn1(a, b, c, function(_err1, _result1) { if (_err1) { onError(1, _err1); } else { if (_result1 !== undefined) { _loop = true; if (_loopAsync) _looper(); } else { _next1(); } } }); } } } while (_loop); _loopAsync = true; }; _looper(); " `; exports[`HookCodeFactory taps (mixed) callTapsParallel 1`] = ` "do { var _counter = 3; var _done = (function() { onDone(); }); if(_counter <= 0) break; var _fn0 = _x[0]; var _result0 = _fn0(a, b, c); if(_counter > 0) { onResult(0, _result0, () => { if(--_counter === 0) _done(); }, () => { _counter = 0; _done(); }); } if(_counter <= 0) break; var _fn1 = _x[1]; _fn1(a, b, c, (function(_err1, _result1) { if(_err1) { if(_counter > 0) { onError(1, _err1); } } else { if(_counter > 0) { onResult(1, _result1, () => { if(--_counter === 0) _done(); }, () => { _counter = 0; _done(); }); } } })); if(_counter <= 0) break; var _fn2 = _x[2]; var _hasResult2 = false; var _promise2 = _fn2(a, b, c); if (!_promise2 || !_promise2.then) throw new Error('Tap function (tapPromise) did not return promise (returned ' + _promise2 + ')'); _promise2.then((function(_result2) { _hasResult2 = true; if(_counter > 0) { onResult(2, _result2, () => { if(--_counter === 0) _done(); }, () => { _counter = 0; _done(); }); } }), function(_err2) { if(_hasResult2) throw _err2; if(_counter > 0) { onError(2, _err2); } }); } while(false); " `; exports[`HookCodeFactory taps (mixed) callTapsParallel 2`] = ` "do { var _counter = 3; var _done = function() { onDone(); }; if (_counter <= 0) break; var _fn0 = _x[0]; var _result0 = _fn0(a, b, c); if (_counter > 0) { onResult( 0, _result0, () => { if (--_counter === 0) _done(); }, () => { _counter = 0; _done(); } ); } if (_counter <= 0) break; var _fn1 = _x[1]; _fn1(a, b, c, function(_err1, _result1) { if (_err1) { if (_counter > 0) { onError(1, _err1); } } else { if (_counter > 0) { onResult( 1, _result1, () => { if (--_counter === 0) _done(); }, () => { _counter = 0; _done(); } ); } } }); if (_counter <= 0) break; var _fn2 = _x[2]; var _hasResult2 = false; var _promise2 = _fn2(a, b, c); if (!_promise2 || !_promise2.then) throw new Error( \\"Tap function (tapPromise) did not return promise (returned \\" + _promise2 + \\")\\" ); _promise2.then( function(_result2) { _hasResult2 = true; if (_counter > 0) { onResult( 2, _result2, () => { if (--_counter === 0) _done(); }, () => { _counter = 0; _done(); } ); } }, function(_err2) { if (_hasResult2) throw _err2; if (_counter > 0) { onError(2, _err2); } } ); } while (false); " `; exports[`HookCodeFactory taps (mixed) callTapsSeries 1`] = ` "function _next1() { var _fn2 = _x[2]; var _hasResult2 = false; var _promise2 = _fn2(a, b, c); if (!_promise2 || !_promise2.then) throw new Error('Tap function (tapPromise) did not return promise (returned ' + _promise2 + ')'); _promise2.then((function(_result2) { _hasResult2 = true; onResult(2, _result2, () => { onDone(); }, () => { onDone(); }); }), function(_err2) { if(_hasResult2) throw _err2; onError(2, _err2); }); } var _fn0 = _x[0]; var _result0 = _fn0(a, b, c); onResult(0, _result0, () => { var _fn1 = _x[1]; _fn1(a, b, c, (function(_err1, _result1) { if(_err1) { onError(1, _err1); } else { onResult(1, _result1, () => { _next1(); }, () => { onDone(); }); } })); }, () => { onDone(); }); " `; exports[`HookCodeFactory taps (mixed) callTapsSeries 2`] = ` "function _next1() { var _fn2 = _x[2]; var _hasResult2 = false; var _promise2 = _fn2(a, b, c); if (!_promise2 || !_promise2.then) throw new Error( \\"Tap function (tapPromise) did not return promise (returned \\" + _promise2 + \\")\\" ); _promise2.then( function(_result2) { _hasResult2 = true; onResult( 2, _result2, () => { onDone(); }, () => { onDone(); } ); }, function(_err2) { if (_hasResult2) throw _err2; onError(2, _err2); } ); } var _fn0 = _x[0]; var _result0 = _fn0(a, b, c); onResult( 0, _result0, () => { var _fn1 = _x[1]; _fn1(a, b, c, function(_err1, _result1) { if (_err1) { onError(1, _err1); } else { onResult( 1, _result1, () => { _next1(); }, () => { onDone(); } ); } }); }, () => { onDone(); } ); " `; exports[`HookCodeFactory taps (mixed2) callTapsLooping 1`] = ` "var _looper = (function() { var _loopAsync = false; var _loop; do { _loop = false; function _next1() { var _fn2 = _x[2]; var _hasError2 = false; try { var _result2 = _fn2(a, b, c); } catch(_err) { _hasError2 = true; onError(2, _err); } if(!_hasError2) { if(_result2 !== undefined) { _loop = true; if(_loopAsync) _looper(); } else { if(!_loop) { onDone(); } } } } function _next0() { var _fn1 = _x[1]; var _hasResult1 = false; var _promise1 = _fn1(a, b, c); if (!_promise1 || !_promise1.then) throw new Error('Tap function (tapPromise) did not return promise (returned ' + _promise1 + ')'); _promise1.then((function(_result1) { _hasResult1 = true; if(_result1 !== undefined) { _loop = true; if(_loopAsync) _looper(); } else { _next1(); } }), function(_err1) { if(_hasResult1) throw _err1; onError(1, _err1); }); } var _fn0 = _x[0]; _fn0(a, b, c, (function(_err0, _result0) { if(_err0) { onError(0, _err0); } else { if(_result0 !== undefined) { _loop = true; if(_loopAsync) _looper(); } else { _next0(); } } })); } while(_loop); _loopAsync = true; }); _looper(); " `; exports[`HookCodeFactory taps (mixed2) callTapsLooping 2`] = ` "var _looper = function() { var _loopAsync = false; var _loop; do { _loop = false; function _next1() { var _fn2 = _x[2]; var _hasError2 = false; try { var _result2 = _fn2(a, b, c); } catch (_err) { _hasError2 = true; onError(2, _err); } if (!_hasError2) { if (_result2 !== undefined) { _loop = true; if (_loopAsync) _looper(); } else { if (!_loop) { onDone(); } } } } function _next0() { var _fn1 = _x[1]; var _hasResult1 = false; var _promise1 = _fn1(a, b, c); if (!_promise1 || !_promise1.then) throw new Error( \\"Tap function (tapPromise) did not return promise (returned \\" + _promise1 + \\")\\" ); _promise1.then( function(_result1) { _hasResult1 = true; if (_result1 !== undefined) { _loop = true; if (_loopAsync) _looper(); } else { _next1(); } }, function(_err1) { if (_hasResult1) throw _err1; onError(1, _err1); } ); } var _fn0 = _x[0]; _fn0(a, b, c, function(_err0, _result0) { if (_err0) { onError(0, _err0); } else { if (_result0 !== undefined) { _loop = true; if (_loopAsync) _looper(); } else { _next0(); } } }); } while (_loop); _loopAsync = true; }; _looper(); " `; exports[`HookCodeFactory taps (mixed2) callTapsParallel 1`] = ` "do { var _counter = 3; var _done = (function() { onDone(); }); if(_counter <= 0) break; var _fn0 = _x[0]; _fn0(a, b, c, (function(_err0, _result0) { if(_err0) { if(_counter > 0) { onError(0, _err0); } } else { if(_counter > 0) { onResult(0, _result0, () => { if(--_counter === 0) _done(); }, () => { _counter = 0; _done(); }); } } })); if(_counter <= 0) break; var _fn1 = _x[1]; var _hasResult1 = false; var _promise1 = _fn1(a, b, c); if (!_promise1 || !_promise1.then) throw new Error('Tap function (tapPromise) did not return promise (returned ' + _promise1 + ')'); _promise1.then((function(_result1) { _hasResult1 = true; if(_counter > 0) { onResult(1, _result1, () => { if(--_counter === 0) _done(); }, () => { _counter = 0; _done(); }); } }), function(_err1) { if(_hasResult1) throw _err1; if(_counter > 0) { onError(1, _err1); } }); if(_counter <= 0) break; var _fn2 = _x[2]; var _result2 = _fn2(a, b, c); if(_counter > 0) { onResult(2, _result2, () => { if(--_counter === 0) _done(); }, () => { _counter = 0; _done(); }); } } while(false); " `; exports[`HookCodeFactory taps (mixed2) callTapsParallel 2`] = ` "do { var _counter = 3; var _done = function() { onDone(); }; if (_counter <= 0) break; var _fn0 = _x[0]; _fn0(a, b, c, function(_err0, _result0) { if (_err0) { if (_counter > 0) { onError(0, _err0); } } else { if (_counter > 0) { onResult( 0, _result0, () => { if (--_counter === 0) _done(); }, () => { _counter = 0; _done(); } ); } } }); if (_counter <= 0) break; var _fn1 = _x[1]; var _hasResult1 = false; var _promise1 = _fn1(a, b, c); if (!_promise1 || !_promise1.then) throw new Error( \\"Tap function (tapPromise) did not return promise (returned \\" + _promise1 + \\")\\" ); _promise1.then( function(_result1) { _hasResult1 = true; if (_counter > 0) { onResult( 1, _result1, () => { if (--_counter === 0) _done(); }, () => { _counter = 0; _done(); } ); } }, function(_err1) { if (_hasResult1) throw _err1; if (_counter > 0) { onError(1, _err1); } } ); if (_counter <= 0) break; var _fn2 = _x[2]; var _result2 = _fn2(a, b, c); if (_counter > 0) { onResult( 2, _result2, () => { if (--_counter === 0) _done(); }, () => { _counter = 0; _done(); } ); } } while (false); " `; exports[`HookCodeFactory taps (mixed2) callTapsSeries 1`] = ` "function _next1() { var _fn2 = _x[2]; var _hasError2 = false; try { var _result2 = _fn2(a, b, c); } catch(_err) { _hasError2 = true; onError(2, _err); } if(!_hasError2) { onResult(2, _result2, () => { onDone(); }, () => { onDone(); }); } } function _next0() { var _fn1 = _x[1]; var _hasResult1 = false; var _promise1 = _fn1(a, b, c); if (!_promise1 || !_promise1.then) throw new Error('Tap function (tapPromise) did not return promise (returned ' + _promise1 + ')'); _promise1.then((function(_result1) { _hasResult1 = true; onResult(1, _result1, () => { _next1(); }, () => { onDone(); }); }), function(_err1) { if(_hasResult1) throw _err1; onError(1, _err1); }); } var _fn0 = _x[0]; _fn0(a, b, c, (function(_err0, _result0) { if(_err0) { onError(0, _err0); } else { onResult(0, _result0, () => { _next0(); }, () => { onDone(); }); } })); " `; exports[`HookCodeFactory taps (mixed2) callTapsSeries 2`] = ` "function _next1() { var _fn2 = _x[2]; var _hasError2 = false; try { var _result2 = _fn2(a, b, c); } catch (_err) { _hasError2 = true; onError(2, _err); } if (!_hasError2) { onResult( 2, _result2, () => { onDone(); }, () => { onDone(); } ); } } function _next0() { var _fn1 = _x[1]; var _hasResult1 = false; var _promise1 = _fn1(a, b, c); if (!_promise1 || !_promise1.then) throw new Error( \\"Tap function (tapPromise) did not return promise (returned \\" + _promise1 + \\")\\" ); _promise1.then( function(_result1) { _hasResult1 = true; onResult( 1, _result1, () => { _next1(); }, () => { onDone(); } ); }, function(_err1) { if (_hasResult1) throw _err1; onError(1, _err1); } ); } var _fn0 = _x[0]; _fn0(a, b, c, function(_err0, _result0) { if (_err0) { onError(0, _err0); } else { onResult( 0, _result0, () => { _next0(); }, () => { onDone(); } ); } }); " `; exports[`HookCodeFactory taps (multiple sync) callTapsLooping 1`] = ` "var _loop; do { _loop = false; var _fn0 = _x[0]; var _result0 = _fn0(a, b, c); if(_result0 !== undefined) { _loop = true; } else { var _fn1 = _x[1]; var _result1 = _fn1(a, b, c); if(_result1 !== undefined) { _loop = true; } else { var _fn2 = _x[2]; var _result2 = _fn2(a, b, c); if(_result2 !== undefined) { _loop = true; } else { if(!_loop) { onDone(); } } } } } while(_loop); " `; exports[`HookCodeFactory taps (multiple sync) callTapsLooping 2`] = ` "var _loop; do { _loop = false; var _fn0 = _x[0]; var _result0 = _fn0(a, b, c); if (_result0 !== undefined) { _loop = true; } else { var _fn1 = _x[1]; var _result1 = _fn1(a, b, c); if (_result1 !== undefined) { _loop = true; } else { var _fn2 = _x[2]; var _result2 = _fn2(a, b, c); if (_result2 !== undefined) { _loop = true; } else { if (!_loop) { onDone(); } } } } } while (_loop); " `; exports[`HookCodeFactory taps (multiple sync) callTapsParallel 1`] = ` "do { var _counter = 3; var _done = (function() { onDone(); }); if(_counter <= 0) break; var _fn0 = _x[0]; var _result0 = _fn0(a, b, c); if(_counter > 0) { onResult(0, _result0, () => { if(--_counter === 0) _done(); }, () => { _counter = 0; _done(); }); } if(_counter <= 0) break; var _fn1 = _x[1]; var _result1 = _fn1(a, b, c); if(_counter > 0) { onResult(1, _result1, () => { if(--_counter === 0) _done(); }, () => { _counter = 0; _done(); }); } if(_counter <= 0) break; var _fn2 = _x[2]; var _result2 = _fn2(a, b, c); if(_counter > 0) { onResult(2, _result2, () => { if(--_counter === 0) _done(); }, () => { _counter = 0; _done(); }); } } while(false); " `; exports[`HookCodeFactory taps (multiple sync) callTapsParallel 2`] = ` "do { var _counter = 3; var _done = function() { onDone(); }; if (_counter <= 0) break; var _fn0 = _x[0]; var _result0 = _fn0(a, b, c); if (_counter > 0) { onResult( 0, _result0, () => { if (--_counter === 0) _done(); }, () => { _counter = 0; _done(); } ); } if (_counter <= 0) break; var _fn1 = _x[1]; var _result1 = _fn1(a, b, c); if (_counter > 0) { onResult( 1, _result1, () => { if (--_counter === 0) _done(); }, () => { _counter = 0; _done(); } ); } if (_counter <= 0) break; var _fn2 = _x[2]; var _result2 = _fn2(a, b, c); if (_counter > 0) { onResult( 2, _result2, () => { if (--_counter === 0) _done(); }, () => { _counter = 0; _done(); } ); } } while (false); " `; exports[`HookCodeFactory taps (multiple sync) callTapsSeries 1`] = ` "var _fn0 = _x[0]; var _result0 = _fn0(a, b, c); onResult(0, _result0, () => { var _fn1 = _x[1]; var _result1 = _fn1(a, b, c); onResult(1, _result1, () => { var _fn2 = _x[2]; var _result2 = _fn2(a, b, c); onResult(2, _result2, () => { onDone(); }, () => { onDone(); }); }, () => { onDone(); }); }, () => { onDone(); }); " `; exports[`HookCodeFactory taps (multiple sync) callTapsSeries 2`] = ` "var _fn0 = _x[0]; var _result0 = _fn0(a, b, c); onResult( 0, _result0, () => { var _fn1 = _x[1]; var _result1 = _fn1(a, b, c); onResult( 1, _result1, () => { var _fn2 = _x[2]; var _result2 = _fn2(a, b, c); onResult( 2, _result2, () => { onDone(); }, () => { onDone(); } ); }, () => { onDone(); } ); }, () => { onDone(); } ); " `; exports[`HookCodeFactory taps (none) callTapsLooping 1`] = ` "onDone(); " `; exports[`HookCodeFactory taps (none) callTapsLooping 2`] = ` "onDone(); " `; exports[`HookCodeFactory taps (none) callTapsParallel 1`] = ` "onDone(); " `; exports[`HookCodeFactory taps (none) callTapsParallel 2`] = ` "onDone(); " `; exports[`HookCodeFactory taps (none) callTapsSeries 1`] = ` "onDone(); " `; exports[`HookCodeFactory taps (none) callTapsSeries 2`] = ` "onDone(); " `; exports[`HookCodeFactory taps (single async) callTapsLooping 1`] = ` "var _looper = (function() { var _loopAsync = false; var _loop; do { _loop = false; var _fn0 = _x[0]; _fn0(a, b, c, (function(_err0, _result0) { if(_err0) { onError(0, _err0); } else { if(_result0 !== undefined) { _loop = true; if(_loopAsync) _looper(); } else { if(!_loop) { onDone(); } } } })); } while(_loop); _loopAsync = true; }); _looper(); " `; exports[`HookCodeFactory taps (single async) callTapsLooping 2`] = ` "var _looper = function() { var _loopAsync = false; var _loop; do { _loop = false; var _fn0 = _x[0]; _fn0(a, b, c, function(_err0, _result0) { if (_err0) { onError(0, _err0); } else { if (_result0 !== undefined) { _loop = true; if (_loopAsync) _looper(); } else { if (!_loop) { onDone(); } } } }); } while (_loop); _loopAsync = true; }; _looper(); " `; exports[`HookCodeFactory taps (single async) callTapsParallel 1`] = ` "var _fn0 = _x[0]; _fn0(a, b, c, (function(_err0, _result0) { if(_err0) { onError(0, _err0); } else { onResult(0, _result0, () => { onDone(); }, () => { onDone(); }); } })); " `; exports[`HookCodeFactory taps (single async) callTapsParallel 2`] = ` "var _fn0 = _x[0]; _fn0(a, b, c, function(_err0, _result0) { if (_err0) { onError(0, _err0); } else { onResult( 0, _result0, () => { onDone(); }, () => { onDone(); } ); } }); " `; exports[`HookCodeFactory taps (single async) callTapsSeries 1`] = ` "var _fn0 = _x[0]; _fn0(a, b, c, (function(_err0, _result0) { if(_err0) { onError(0, _err0); } else { onResult(0, _result0, () => { onDone(); }, () => { onDone(); }); } })); " `; exports[`HookCodeFactory taps (single async) callTapsSeries 2`] = ` "var _fn0 = _x[0]; _fn0(a, b, c, function(_err0, _result0) { if (_err0) { onError(0, _err0); } else { onResult( 0, _result0, () => { onDone(); }, () => { onDone(); } ); } }); " `; exports[`HookCodeFactory taps (single promise) callTapsLooping 1`] = ` "var _looper = (function() { var _loopAsync = false; var _loop; do { _loop = false; var _fn0 = _x[0]; var _hasResult0 = false; var _promise0 = _fn0(a, b, c); if (!_promise0 || !_promise0.then) throw new Error('Tap function (tapPromise) did not return promise (returned ' + _promise0 + ')'); _promise0.then((function(_result0) { _hasResult0 = true; if(_result0 !== undefined) { _loop = true; if(_loopAsync) _looper(); } else { if(!_loop) { onDone(); } } }), function(_err0) { if(_hasResult0) throw _err0; onError(0, _err0); }); } while(_loop); _loopAsync = true; }); _looper(); " `; exports[`HookCodeFactory taps (single promise) callTapsLooping 2`] = ` "var _looper = function() { var _loopAsync = false; var _loop; do { _loop = false; var _fn0 = _x[0]; var _hasResult0 = false; var _promise0 = _fn0(a, b, c); if (!_promise0 || !_promise0.then) throw new Error( \\"Tap function (tapPromise) did not return promise (returned \\" + _promise0 + \\")\\" ); _promise0.then( function(_result0) { _hasResult0 = true; if (_result0 !== undefined) { _loop = true; if (_loopAsync) _looper(); } else { if (!_loop) { onDone(); } } }, function(_err0) { if (_hasResult0) throw _err0; onError(0, _err0); } ); } while (_loop); _loopAsync = true; }; _looper(); " `; exports[`HookCodeFactory taps (single promise) callTapsParallel 1`] = ` "var _fn0 = _x[0]; var _hasResult0 = false; var _promise0 = _fn0(a, b, c); if (!_promise0 || !_promise0.then) throw new Error('Tap function (tapPromise) did not return promise (returned ' + _promise0 + ')'); _promise0.then((function(_result0) { _hasResult0 = true; onResult(0, _result0, () => { onDone(); }, () => { onDone(); }); }), function(_err0) { if(_hasResult0) throw _err0; onError(0, _err0); }); " `; exports[`HookCodeFactory taps (single promise) callTapsParallel 2`] = ` "var _fn0 = _x[0]; var _hasResult0 = false; var _promise0 = _fn0(a, b, c); if (!_promise0 || !_promise0.then) throw new Error( \\"Tap function (tapPromise) did not return promise (returned \\" + _promise0 + \\")\\" ); _promise0.then( function(_result0) { _hasResult0 = true; onResult( 0, _result0, () => { onDone(); }, () => { onDone(); } ); }, function(_err0) { if (_hasResult0) throw _err0; onError(0, _err0); } ); " `; exports[`HookCodeFactory taps (single promise) callTapsSeries 1`] = ` "var _fn0 = _x[0]; var _hasResult0 = false; var _promise0 = _fn0(a, b, c); if (!_promise0 || !_promise0.then) throw new Error('Tap function (tapPromise) did not return promise (returned ' + _promise0 + ')'); _promise0.then((function(_result0) { _hasResult0 = true; onResult(0, _result0, () => { onDone(); }, () => { onDone(); }); }), function(_err0) { if(_hasResult0) throw _err0; onError(0, _err0); }); " `; exports[`HookCodeFactory taps (single promise) callTapsSeries 2`] = ` "var _fn0 = _x[0]; var _hasResult0 = false; var _promise0 = _fn0(a, b, c); if (!_promise0 || !_promise0.then) throw new Error( \\"Tap function (tapPromise) did not return promise (returned \\" + _promise0 + \\")\\" ); _promise0.then( function(_result0) { _hasResult0 = true; onResult( 0, _result0, () => { onDone(); }, () => { onDone(); } ); }, function(_err0) { if (_hasResult0) throw _err0; onError(0, _err0); } ); " `; exports[`HookCodeFactory taps (single sync) callTapsLooping 1`] = ` "var _loop; do { _loop = false; var _fn0 = _x[0]; var _result0 = _fn0(a, b, c); if(_result0 !== undefined) { _loop = true; } else { if(!_loop) { onDone(); } } } while(_loop); " `; exports[`HookCodeFactory taps (single sync) callTapsLooping 2`] = ` "var _loop; do { _loop = false; var _fn0 = _x[0]; var _result0 = _fn0(a, b, c); if (_result0 !== undefined) { _loop = true; } else { if (!_loop) { onDone(); } } } while (_loop); " `; exports[`HookCodeFactory taps (single sync) callTapsParallel 1`] = ` "var _fn0 = _x[0]; var _result0 = _fn0(a, b, c); onResult(0, _result0, () => { onDone(); }, () => { onDone(); }); " `; exports[`HookCodeFactory taps (single sync) callTapsParallel 2`] = ` "var _fn0 = _x[0]; var _result0 = _fn0(a, b, c); onResult( 0, _result0, () => { onDone(); }, () => { onDone(); } ); " `; exports[`HookCodeFactory taps (single sync) callTapsSeries 1`] = ` "var _fn0 = _x[0]; var _result0 = _fn0(a, b, c); onResult(0, _result0, () => { onDone(); }, () => { onDone(); }); " `; exports[`HookCodeFactory taps (single sync) callTapsSeries 2`] = ` "var _fn0 = _x[0]; var _result0 = _fn0(a, b, c); onResult( 0, _result0, () => { onDone(); }, () => { onDone(); } ); " `; tapable-2.2.1/lib/__tests__/__snapshots__/SyncHooks.js.snap000066400000000000000000000535451411762003000236720ustar00rootroot00000000000000// Jest Snapshot v1, https://goo.gl/fbAQLP exports[`SyncBailHook should have to correct behavior 1`] = ` Object { "async": Object {}, "intercept": Object {}, "sync": Object { "callAsyncIntercepted": Object { "type": "async", "value": 6, }, "callAsyncInterceptedCall1": Array [ 1, 2, 3, ], "callAsyncInterceptedCall2": Array [ 1, 2, 3, ], "callAsyncInterceptedTap1": Object { "fn": 3, "name": "sync1", "type": "sync", }, "callAsyncInterceptedTap2": Object { "fn": 3, "name": "sync1", "type": "sync", }, "callAsyncMultipleSync": Object { "type": "async", "value": 42, }, "callAsyncMultipleSyncCalled1": true, "callAsyncMultipleSyncError": Object { "error": "Error in sync2", "type": "async", }, "callAsyncMultipleSyncErrorCalled1": true, "callAsyncMultipleSyncErrorCalled2": true, "callAsyncMultipleSyncWithArg": Object { "type": "async", "value": 84, }, "callAsyncMultipleSyncWithArgCalled1": 42, "callAsyncMultipleSyncWithArgFirstReturn": Object { "type": "async", "value": 84, }, "callAsyncMultipleSyncWithArgFirstReturnCalled1": 42, "callAsyncMultipleSyncWithArgLastReturn": Object { "type": "async", "value": 85, }, "callAsyncMultipleSyncWithArgLastReturnCalled1": 42, "callAsyncMultipleSyncWithArgLastReturnCalled2": 42, "callAsyncMultipleSyncWithArgNoReturn": Object { "type": "async", "value": undefined, }, "callAsyncMultipleSyncWithArgNoReturnCalled1": 42, "callAsyncMultipleSyncWithArgNoReturnCalled2": 42, "callAsyncMultipleSyncWithArgs": Object { "type": "async", "value": 129, }, "callAsyncMultipleSyncWithArgsCalled1": Array [ 42, 43, 44, ], "callAsyncNone": Object { "type": "async", "value": undefined, }, "callAsyncNoneWithArg": Object { "type": "async", "value": undefined, }, "callAsyncSingleSync": Object { "type": "async", "value": 42, }, "callAsyncSingleSyncCalled": true, "callAsyncSingleSyncWithArg": Object { "type": "async", "value": 42, }, "callAsyncSingleSyncWithArgCalled": 42, "callIntercepted": Object { "type": "return", "value": 6, }, "callInterceptedCall1": Array [ 1, 2, 3, ], "callInterceptedCall2": Array [ 1, 2, 3, ], "callInterceptedTap1": Object { "fn": 3, "name": "sync1", "type": "sync", }, "callInterceptedTap2": Object { "fn": 3, "name": "sync1", "type": "sync", }, "callMultipleSync": Object { "type": "return", "value": 42, }, "callMultipleSyncCalled1": true, "callMultipleSyncError": Object { "error": "Error in sync2", }, "callMultipleSyncErrorCalled1": true, "callMultipleSyncErrorCalled2": true, "callMultipleSyncWithArg": Object { "type": "return", "value": 84, }, "callMultipleSyncWithArgCalled1": 42, "callMultipleSyncWithArgFirstReturn": Object { "type": "return", "value": 84, }, "callMultipleSyncWithArgFirstReturnCalled1": 42, "callMultipleSyncWithArgLastReturn": Object { "type": "return", "value": 85, }, "callMultipleSyncWithArgLastReturnCalled1": 42, "callMultipleSyncWithArgLastReturnCalled2": 42, "callMultipleSyncWithArgNoReturn": Object { "type": "no result", }, "callMultipleSyncWithArgNoReturnCalled1": 42, "callMultipleSyncWithArgNoReturnCalled2": 42, "callMultipleSyncWithArgs": Object { "type": "return", "value": 129, }, "callMultipleSyncWithArgsCalled1": Array [ 42, 43, 44, ], "callNone": Object { "type": "no result", }, "callNoneWithArg": Object { "type": "no result", }, "callSingleSync": Object { "type": "return", "value": 42, }, "callSingleSyncCalled": true, "callSingleSyncWithArg": Object { "type": "return", "value": 42, }, "callSingleSyncWithArgCalled": 42, "promiseIntercepted": Object { "type": "promise", "value": 6, }, "promiseInterceptedCall1": Array [ 1, 2, 3, ], "promiseInterceptedCall2": Array [ 1, 2, 3, ], "promiseInterceptedTap1": Object { "fn": 3, "name": "sync1", "type": "sync", }, "promiseInterceptedTap2": Object { "fn": 3, "name": "sync1", "type": "sync", }, "promiseMultipleSync": Object { "type": "promise", "value": 42, }, "promiseMultipleSyncCalled1": true, "promiseMultipleSyncError": Object { "error": "Error in sync2", "type": "promise", }, "promiseMultipleSyncErrorCalled1": true, "promiseMultipleSyncErrorCalled2": true, "promiseMultipleSyncWithArg": Object { "type": "promise", "value": 84, }, "promiseMultipleSyncWithArgCalled1": 42, "promiseMultipleSyncWithArgFirstReturn": Object { "type": "promise", "value": 84, }, "promiseMultipleSyncWithArgFirstReturnCalled1": 42, "promiseMultipleSyncWithArgLastReturn": Object { "type": "promise", "value": 85, }, "promiseMultipleSyncWithArgLastReturnCalled1": 42, "promiseMultipleSyncWithArgLastReturnCalled2": 42, "promiseMultipleSyncWithArgNoReturn": Object { "type": "promise", "value": undefined, }, "promiseMultipleSyncWithArgNoReturnCalled1": 42, "promiseMultipleSyncWithArgNoReturnCalled2": 42, "promiseMultipleSyncWithArgs": Object { "type": "promise", "value": 129, }, "promiseMultipleSyncWithArgsCalled1": Array [ 42, 43, 44, ], "promiseNone": Object { "type": "promise", "value": undefined, }, "promiseNoneWithArg": Object { "type": "promise", "value": undefined, }, "promiseSingleSync": Object { "type": "promise", "value": 42, }, "promiseSingleSyncCalled": true, "promiseSingleSyncWithArg": Object { "type": "promise", "value": 42, }, "promiseSingleSyncWithArgCalled": 42, }, } `; exports[`SyncHook should have to correct behavior 1`] = ` Object { "async": Object {}, "intercept": Object {}, "sync": Object { "callAsyncIntercepted": Object { "type": "async", "value": undefined, }, "callAsyncInterceptedCall1": Array [ 1, 2, 3, ], "callAsyncInterceptedCall2": Array [ 1, 2, 3, ], "callAsyncInterceptedTap1": Object { "fn": 2, "name": "sync2", "type": "sync", }, "callAsyncInterceptedTap2": Object { "fn": 3, "name": "sync1", "type": "sync", }, "callAsyncMultipleSync": Object { "type": "async", "value": undefined, }, "callAsyncMultipleSyncCalled1": true, "callAsyncMultipleSyncCalled2": true, "callAsyncMultipleSyncError": Object { "error": "Error in sync2", "type": "async", }, "callAsyncMultipleSyncErrorCalled1": true, "callAsyncMultipleSyncErrorCalled2": true, "callAsyncMultipleSyncWithArg": Object { "type": "async", "value": undefined, }, "callAsyncMultipleSyncWithArgCalled1": 42, "callAsyncMultipleSyncWithArgCalled2": 42, "callAsyncMultipleSyncWithArgFirstReturn": Object { "type": "async", "value": undefined, }, "callAsyncMultipleSyncWithArgFirstReturnCalled1": 42, "callAsyncMultipleSyncWithArgFirstReturnCalled2": 42, "callAsyncMultipleSyncWithArgLastReturn": Object { "type": "async", "value": undefined, }, "callAsyncMultipleSyncWithArgLastReturnCalled1": 42, "callAsyncMultipleSyncWithArgLastReturnCalled2": 42, "callAsyncMultipleSyncWithArgNoReturn": Object { "type": "async", "value": undefined, }, "callAsyncMultipleSyncWithArgNoReturnCalled1": 42, "callAsyncMultipleSyncWithArgNoReturnCalled2": 42, "callAsyncMultipleSyncWithArgs": Object { "type": "async", "value": undefined, }, "callAsyncMultipleSyncWithArgsCalled1": Array [ 42, 43, 44, ], "callAsyncMultipleSyncWithArgsCalled2": Array [ 42, 43, 44, ], "callAsyncNone": Object { "type": "async", "value": undefined, }, "callAsyncNoneWithArg": Object { "type": "async", "value": undefined, }, "callAsyncSingleSync": Object { "type": "async", "value": undefined, }, "callAsyncSingleSyncCalled": true, "callAsyncSingleSyncWithArg": Object { "type": "async", "value": undefined, }, "callAsyncSingleSyncWithArgCalled": 42, "callIntercepted": Object { "type": "no result", }, "callInterceptedCall1": Array [ 1, 2, 3, ], "callInterceptedCall2": Array [ 1, 2, 3, ], "callInterceptedTap1": Object { "fn": 2, "name": "sync2", "type": "sync", }, "callInterceptedTap2": Object { "fn": 3, "name": "sync1", "type": "sync", }, "callMultipleSync": Object { "type": "no result", }, "callMultipleSyncCalled1": true, "callMultipleSyncCalled2": true, "callMultipleSyncError": Object { "error": "Error in sync2", }, "callMultipleSyncErrorCalled1": true, "callMultipleSyncErrorCalled2": true, "callMultipleSyncWithArg": Object { "type": "no result", }, "callMultipleSyncWithArgCalled1": 42, "callMultipleSyncWithArgCalled2": 42, "callMultipleSyncWithArgFirstReturn": Object { "type": "no result", }, "callMultipleSyncWithArgFirstReturnCalled1": 42, "callMultipleSyncWithArgFirstReturnCalled2": 42, "callMultipleSyncWithArgLastReturn": Object { "type": "no result", }, "callMultipleSyncWithArgLastReturnCalled1": 42, "callMultipleSyncWithArgLastReturnCalled2": 42, "callMultipleSyncWithArgNoReturn": Object { "type": "no result", }, "callMultipleSyncWithArgNoReturnCalled1": 42, "callMultipleSyncWithArgNoReturnCalled2": 42, "callMultipleSyncWithArgs": Object { "type": "no result", }, "callMultipleSyncWithArgsCalled1": Array [ 42, 43, 44, ], "callMultipleSyncWithArgsCalled2": Array [ 42, 43, 44, ], "callNone": Object { "type": "no result", }, "callNoneWithArg": Object { "type": "no result", }, "callSingleSync": Object { "type": "no result", }, "callSingleSyncCalled": true, "callSingleSyncWithArg": Object { "type": "no result", }, "callSingleSyncWithArgCalled": 42, "promiseIntercepted": Object { "type": "promise", "value": undefined, }, "promiseInterceptedCall1": Array [ 1, 2, 3, ], "promiseInterceptedCall2": Array [ 1, 2, 3, ], "promiseInterceptedTap1": Object { "fn": 2, "name": "sync2", "type": "sync", }, "promiseInterceptedTap2": Object { "fn": 3, "name": "sync1", "type": "sync", }, "promiseMultipleSync": Object { "type": "promise", "value": undefined, }, "promiseMultipleSyncCalled1": true, "promiseMultipleSyncCalled2": true, "promiseMultipleSyncError": Object { "error": "Error in sync2", "type": "promise", }, "promiseMultipleSyncErrorCalled1": true, "promiseMultipleSyncErrorCalled2": true, "promiseMultipleSyncWithArg": Object { "type": "promise", "value": undefined, }, "promiseMultipleSyncWithArgCalled1": 42, "promiseMultipleSyncWithArgCalled2": 42, "promiseMultipleSyncWithArgFirstReturn": Object { "type": "promise", "value": undefined, }, "promiseMultipleSyncWithArgFirstReturnCalled1": 42, "promiseMultipleSyncWithArgFirstReturnCalled2": 42, "promiseMultipleSyncWithArgLastReturn": Object { "type": "promise", "value": undefined, }, "promiseMultipleSyncWithArgLastReturnCalled1": 42, "promiseMultipleSyncWithArgLastReturnCalled2": 42, "promiseMultipleSyncWithArgNoReturn": Object { "type": "promise", "value": undefined, }, "promiseMultipleSyncWithArgNoReturnCalled1": 42, "promiseMultipleSyncWithArgNoReturnCalled2": 42, "promiseMultipleSyncWithArgs": Object { "type": "promise", "value": undefined, }, "promiseMultipleSyncWithArgsCalled1": Array [ 42, 43, 44, ], "promiseMultipleSyncWithArgsCalled2": Array [ 42, 43, 44, ], "promiseNone": Object { "type": "promise", "value": undefined, }, "promiseNoneWithArg": Object { "type": "promise", "value": undefined, }, "promiseSingleSync": Object { "type": "promise", "value": undefined, }, "promiseSingleSyncCalled": true, "promiseSingleSyncWithArg": Object { "type": "promise", "value": undefined, }, "promiseSingleSyncWithArgCalled": 42, }, } `; exports[`SyncLoopHook should have to correct behavior 1`] = ` Object { "async": Object {}, "sync": Object { "callAsyncInterceptedSync": Object { "type": "async", "value": undefined, }, "callAsyncInterceptedSyncCalled1": 83, "callAsyncInterceptedSyncCalled2": 42, "callAsyncInterceptedSyncCalledCall": 1, "callAsyncInterceptedSyncCalledLoop": 83, "callAsyncInterceptedSyncCalledTap": 125, "callAsyncMultipleSync": Object { "type": "async", "value": undefined, }, "callAsyncMultipleSyncCalled1": 83, "callAsyncMultipleSyncCalled2": 42, "callAsyncNone": Object { "type": "async", "value": undefined, }, "callAsyncNoneWithArg": Object { "type": "async", "value": undefined, }, "callAsyncSingleSync": Object { "type": "async", "value": undefined, }, "callAsyncSingleSyncCalled": 42, "callInterceptedSync": Object { "type": "no result", }, "callInterceptedSyncCalled1": 83, "callInterceptedSyncCalled2": 42, "callInterceptedSyncCalledCall": 1, "callInterceptedSyncCalledLoop": 83, "callInterceptedSyncCalledTap": 125, "callMultipleSync": Object { "type": "no result", }, "callMultipleSyncCalled1": 83, "callMultipleSyncCalled2": 42, "callNone": Object { "type": "no result", }, "callNoneWithArg": Object { "type": "no result", }, "callSingleSync": Object { "type": "no result", }, "callSingleSyncCalled": 42, "promiseInterceptedSync": Object { "type": "promise", "value": undefined, }, "promiseInterceptedSyncCalled1": 83, "promiseInterceptedSyncCalled2": 42, "promiseInterceptedSyncCalledCall": 1, "promiseInterceptedSyncCalledLoop": 83, "promiseInterceptedSyncCalledTap": 125, "promiseMultipleSync": Object { "type": "promise", "value": undefined, }, "promiseMultipleSyncCalled1": 83, "promiseMultipleSyncCalled2": 42, "promiseNone": Object { "type": "promise", "value": undefined, }, "promiseNoneWithArg": Object { "type": "promise", "value": undefined, }, "promiseSingleSync": Object { "type": "promise", "value": undefined, }, "promiseSingleSyncCalled": 42, }, } `; exports[`SyncWaterfallHook should have to correct behavior 1`] = ` Object { "async": Object {}, "intercept": Object {}, "sync": Object { "callAsyncIntercepted": Object { "type": "async", "value": 9, }, "callAsyncInterceptedCall1": Array [ 1, 2, 3, ], "callAsyncInterceptedCall2": Array [ 1, 2, 3, ], "callAsyncInterceptedTap1": Object { "fn": 2, "name": "sync2", "type": "sync", }, "callAsyncInterceptedTap2": Object { "fn": 3, "name": "sync1", "type": "sync", }, "callAsyncMultipleSync": Object { "error": "Waterfall hooks must have at least one argument", }, "callAsyncMultipleSyncError": Object { "error": "Waterfall hooks must have at least one argument", }, "callAsyncMultipleSyncWithArg": Object { "type": "async", "value": 127, }, "callAsyncMultipleSyncWithArgCalled1": 42, "callAsyncMultipleSyncWithArgCalled2": 84, "callAsyncMultipleSyncWithArgFirstReturn": Object { "type": "async", "value": 84, }, "callAsyncMultipleSyncWithArgFirstReturnCalled1": 42, "callAsyncMultipleSyncWithArgFirstReturnCalled2": 84, "callAsyncMultipleSyncWithArgLastReturn": Object { "type": "async", "value": 85, }, "callAsyncMultipleSyncWithArgLastReturnCalled1": 42, "callAsyncMultipleSyncWithArgLastReturnCalled2": 42, "callAsyncMultipleSyncWithArgNoReturn": Object { "type": "async", "value": 42, }, "callAsyncMultipleSyncWithArgNoReturnCalled1": 42, "callAsyncMultipleSyncWithArgNoReturnCalled2": 42, "callAsyncMultipleSyncWithArgs": Object { "type": "async", "value": 217, }, "callAsyncMultipleSyncWithArgsCalled1": Array [ 42, 43, 44, ], "callAsyncMultipleSyncWithArgsCalled2": Array [ 129, 43, 44, ], "callAsyncNone": Object { "error": "Waterfall hooks must have at least one argument", }, "callAsyncNoneWithArg": Object { "type": "async", "value": 42, }, "callAsyncSingleSync": Object { "error": "Waterfall hooks must have at least one argument", }, "callAsyncSingleSyncWithArg": Object { "type": "async", "value": 42, }, "callAsyncSingleSyncWithArgCalled": 42, "callIntercepted": Object { "type": "return", "value": 9, }, "callInterceptedCall1": Array [ 1, 2, 3, ], "callInterceptedCall2": Array [ 1, 2, 3, ], "callInterceptedTap1": Object { "fn": 2, "name": "sync2", "type": "sync", }, "callInterceptedTap2": Object { "fn": 3, "name": "sync1", "type": "sync", }, "callMultipleSync": Object { "error": "Waterfall hooks must have at least one argument", }, "callMultipleSyncError": Object { "error": "Waterfall hooks must have at least one argument", }, "callMultipleSyncWithArg": Object { "type": "return", "value": 127, }, "callMultipleSyncWithArgCalled1": 42, "callMultipleSyncWithArgCalled2": 84, "callMultipleSyncWithArgFirstReturn": Object { "type": "return", "value": 84, }, "callMultipleSyncWithArgFirstReturnCalled1": 42, "callMultipleSyncWithArgFirstReturnCalled2": 84, "callMultipleSyncWithArgLastReturn": Object { "type": "return", "value": 85, }, "callMultipleSyncWithArgLastReturnCalled1": 42, "callMultipleSyncWithArgLastReturnCalled2": 42, "callMultipleSyncWithArgNoReturn": Object { "type": "return", "value": 42, }, "callMultipleSyncWithArgNoReturnCalled1": 42, "callMultipleSyncWithArgNoReturnCalled2": 42, "callMultipleSyncWithArgs": Object { "type": "return", "value": 217, }, "callMultipleSyncWithArgsCalled1": Array [ 42, 43, 44, ], "callMultipleSyncWithArgsCalled2": Array [ 129, 43, 44, ], "callNone": Object { "error": "Waterfall hooks must have at least one argument", }, "callNoneWithArg": Object { "type": "return", "value": 42, }, "callSingleSync": Object { "error": "Waterfall hooks must have at least one argument", }, "callSingleSyncWithArg": Object { "type": "return", "value": 42, }, "callSingleSyncWithArgCalled": 42, "promiseIntercepted": Object { "type": "promise", "value": 9, }, "promiseInterceptedCall1": Array [ 1, 2, 3, ], "promiseInterceptedCall2": Array [ 1, 2, 3, ], "promiseInterceptedTap1": Object { "fn": 2, "name": "sync2", "type": "sync", }, "promiseInterceptedTap2": Object { "fn": 3, "name": "sync1", "type": "sync", }, "promiseMultipleSync": Object { "error": "Waterfall hooks must have at least one argument", }, "promiseMultipleSyncError": Object { "error": "Waterfall hooks must have at least one argument", }, "promiseMultipleSyncWithArg": Object { "type": "promise", "value": 127, }, "promiseMultipleSyncWithArgCalled1": 42, "promiseMultipleSyncWithArgCalled2": 84, "promiseMultipleSyncWithArgFirstReturn": Object { "type": "promise", "value": 84, }, "promiseMultipleSyncWithArgFirstReturnCalled1": 42, "promiseMultipleSyncWithArgFirstReturnCalled2": 84, "promiseMultipleSyncWithArgLastReturn": Object { "type": "promise", "value": 85, }, "promiseMultipleSyncWithArgLastReturnCalled1": 42, "promiseMultipleSyncWithArgLastReturnCalled2": 42, "promiseMultipleSyncWithArgNoReturn": Object { "type": "promise", "value": 42, }, "promiseMultipleSyncWithArgNoReturnCalled1": 42, "promiseMultipleSyncWithArgNoReturnCalled2": 42, "promiseMultipleSyncWithArgs": Object { "type": "promise", "value": 217, }, "promiseMultipleSyncWithArgsCalled1": Array [ 42, 43, 44, ], "promiseMultipleSyncWithArgsCalled2": Array [ 129, 43, 44, ], "promiseNone": Object { "error": "Waterfall hooks must have at least one argument", }, "promiseNoneWithArg": Object { "type": "promise", "value": 42, }, "promiseSingleSync": Object { "error": "Waterfall hooks must have at least one argument", }, "promiseSingleSyncWithArg": Object { "type": "promise", "value": 42, }, "promiseSingleSyncWithArgCalled": 42, }, } `; tapable-2.2.1/lib/index.js000066400000000000000000000014561411762003000153370ustar00rootroot00000000000000/* MIT License http://www.opensource.org/licenses/mit-license.php Author Tobias Koppers @sokra */ "use strict"; exports.__esModule = true; exports.SyncHook = require("./SyncHook"); exports.SyncBailHook = require("./SyncBailHook"); exports.SyncWaterfallHook = require("./SyncWaterfallHook"); exports.SyncLoopHook = require("./SyncLoopHook"); exports.AsyncParallelHook = require("./AsyncParallelHook"); exports.AsyncParallelBailHook = require("./AsyncParallelBailHook"); exports.AsyncSeriesHook = require("./AsyncSeriesHook"); exports.AsyncSeriesBailHook = require("./AsyncSeriesBailHook"); exports.AsyncSeriesLoopHook = require("./AsyncSeriesLoopHook"); exports.AsyncSeriesWaterfallHook = require("./AsyncSeriesWaterfallHook"); exports.HookMap = require("./HookMap"); exports.MultiHook = require("./MultiHook"); tapable-2.2.1/lib/util-browser.js000066400000000000000000000004721411762003000166630ustar00rootroot00000000000000/* MIT License http://www.opensource.org/licenses/mit-license.php Author Tobias Koppers @sokra */ "use strict"; exports.deprecate = (fn, msg) => { let once = true; return function() { if (once) { console.warn("DeprecationWarning: " + msg); once = false; } return fn.apply(this, arguments); }; }; tapable-2.2.1/package.json000066400000000000000000000020351411762003000154040ustar00rootroot00000000000000{ "name": "tapable", "version": "2.2.1", "author": "Tobias Koppers @sokra", "description": "Just a little module for plugins.", "license": "MIT", "homepage": "https://github.com/webpack/tapable", "repository": { "type": "git", "url": "http://github.com/webpack/tapable.git" }, "devDependencies": { "@babel/core": "^7.4.4", "@babel/preset-env": "^7.4.4", "babel-jest": "^24.8.0", "codecov": "^3.5.0", "jest": "^24.8.0", "prettier": "^1.17.1" }, "engines": { "node": ">=6" }, "files": [ "lib", "!lib/__tests__", "tapable.d.ts" ], "main": "lib/index.js", "types": "./tapable.d.ts", "browser": { "util": "./lib/util-browser.js" }, "scripts": { "test": "jest", "travis": "yarn pretty-lint && jest --coverage && codecov", "pretty-lint": "prettier --check lib/*.js lib/__tests__/*.js", "pretty": "prettier --loglevel warn --write lib/*.js lib/__tests__/*.js" }, "jest": { "transform": { "__tests__[\\\\/].+\\.js$": "babel-jest" } } } tapable-2.2.1/tapable.d.ts000066400000000000000000000104651411762003000153260ustar00rootroot00000000000000type FixedSizeArray = T extends 0 ? void[] : ReadonlyArray & { 0: U; length: T; }; type Measure = T extends 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 ? T : never; type Append = { 0: [U]; 1: [T[0], U]; 2: [T[0], T[1], U]; 3: [T[0], T[1], T[2], U]; 4: [T[0], T[1], T[2], T[3], U]; 5: [T[0], T[1], T[2], T[3], T[4], U]; 6: [T[0], T[1], T[2], T[3], T[4], T[5], U]; 7: [T[0], T[1], T[2], T[3], T[4], T[5], T[6], U]; 8: [T[0], T[1], T[2], T[3], T[4], T[5], T[6], T[7], U]; }[Measure]; type AsArray = T extends any[] ? T : [T]; declare class UnsetAdditionalOptions { _UnsetAdditionalOptions: true } type IfSet = X extends UnsetAdditionalOptions ? {} : X; type Callback = (error: E | null, result?: T) => void; type InnerCallback = (error?: E | null | false, result?: T) => void; type FullTap = Tap & { type: "sync" | "async" | "promise", fn: Function } type Tap = TapOptions & { name: string; }; type TapOptions = { before?: string; stage?: number; }; interface HookInterceptor { name?: string; tap?: (tap: FullTap & IfSet) => void; call?: (...args: any[]) => void; loop?: (...args: any[]) => void; error?: (err: Error) => void; result?: (result: R) => void; done?: () => void; register?: (tap: FullTap & IfSet) => FullTap & IfSet; } type ArgumentNames = FixedSizeArray; declare class Hook { constructor(args?: ArgumentNames>, name?: string); name: string | undefined; taps: FullTap[]; intercept(interceptor: HookInterceptor): void; isUsed(): boolean; callAsync(...args: Append, Callback>): void; promise(...args: AsArray): Promise; tap(options: string | Tap & IfSet, fn: (...args: AsArray) => R): void; withOptions(options: TapOptions & IfSet): Omit; } export class SyncHook extends Hook { call(...args: AsArray): R; } export class SyncBailHook extends SyncHook {} export class SyncLoopHook extends SyncHook {} export class SyncWaterfallHook extends SyncHook[0], AdditionalOptions> {} declare class AsyncHook extends Hook { tapAsync( options: string | Tap & IfSet, fn: (...args: Append, InnerCallback>) => void ): void; tapPromise( options: string | Tap & IfSet, fn: (...args: AsArray) => Promise ): void; } export class AsyncParallelHook extends AsyncHook {} export class AsyncParallelBailHook extends AsyncHook {} export class AsyncSeriesHook extends AsyncHook {} export class AsyncSeriesBailHook extends AsyncHook {} export class AsyncSeriesLoopHook extends AsyncHook {} export class AsyncSeriesWaterfallHook extends AsyncHook[0], AdditionalOptions> {} type HookFactory = (key: any, hook?: H) => H; interface HookMapInterceptor { factory?: HookFactory; } export class HookMap { constructor(factory: HookFactory, name?: string); name: string | undefined; get(key: any): H | undefined; for(key: any): H; intercept(interceptor: HookMapInterceptor): void; } export class MultiHook { constructor(hooks: H[], name?: string); name: string | undefined; tap(options: string | Tap, fn?: Function): void; tapAsync(options: string | Tap, fn?: Function): void; tapPromise(options: string | Tap, fn?: Function): void; } tapable-2.2.1/yarn.lock000066400000000000000000005441471411762003000147600ustar00rootroot00000000000000# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. # yarn lockfile v1 "@babel/code-frame@^7.0.0": version "7.0.0" resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.0.0.tgz#06e2ab19bdb535385559aabb5ba59729482800f8" integrity sha512-OfC2uemaknXr87bdLUkWog7nYuliM9Ij5HUcajsVcMCpQrcLmtxRbVFTIqmcSkSeYRBFBRxs2FiUqFJDLdiebA== dependencies: "@babel/highlight" "^7.0.0" "@babel/core@^7.1.0", "@babel/core@^7.4.4": version "7.4.4" resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.4.4.tgz#84055750b05fcd50f9915a826b44fa347a825250" integrity sha512-lQgGX3FPRgbz2SKmhMtYgJvVzGZrmjaF4apZ2bLwofAKiSjxU0drPh4S/VasyYXwaTs+A1gvQ45BN8SQJzHsQQ== dependencies: "@babel/code-frame" "^7.0.0" "@babel/generator" "^7.4.4" "@babel/helpers" "^7.4.4" "@babel/parser" "^7.4.4" "@babel/template" "^7.4.4" "@babel/traverse" "^7.4.4" "@babel/types" "^7.4.4" convert-source-map "^1.1.0" debug "^4.1.0" json5 "^2.1.0" lodash "^4.17.11" resolve "^1.3.2" semver "^5.4.1" source-map "^0.5.0" "@babel/generator@^7.4.0", "@babel/generator@^7.4.4": version "7.4.4" resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.4.4.tgz#174a215eb843fc392c7edcaabeaa873de6e8f041" integrity sha512-53UOLK6TVNqKxf7RUh8NE851EHRxOOeVXKbK2bivdb+iziMyk03Sr4eaE9OELCbyZAAafAKPDwF2TPUES5QbxQ== dependencies: "@babel/types" "^7.4.4" jsesc "^2.5.1" lodash "^4.17.11" source-map "^0.5.0" trim-right "^1.0.1" "@babel/helper-annotate-as-pure@^7.0.0": version "7.0.0" resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.0.0.tgz#323d39dd0b50e10c7c06ca7d7638e6864d8c5c32" integrity sha512-3UYcJUj9kvSLbLbUIfQTqzcy5VX7GRZ/CCDrnOaZorFFM01aXp1+GJwuFGV4NDDoAS+mOUyHcO6UD/RfqOks3Q== dependencies: "@babel/types" "^7.0.0" "@babel/helper-builder-binary-assignment-operator-visitor@^7.1.0": version "7.1.0" resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.1.0.tgz#6b69628dfe4087798e0c4ed98e3d4a6b2fbd2f5f" integrity sha512-qNSR4jrmJ8M1VMM9tibvyRAHXQs2PmaksQF7c1CGJNipfe3D8p+wgNwgso/P2A2r2mdgBWAXljNWR0QRZAMW8w== dependencies: "@babel/helper-explode-assignable-expression" "^7.1.0" "@babel/types" "^7.0.0" "@babel/helper-call-delegate@^7.4.4": version "7.4.4" resolved "https://registry.yarnpkg.com/@babel/helper-call-delegate/-/helper-call-delegate-7.4.4.tgz#87c1f8ca19ad552a736a7a27b1c1fcf8b1ff1f43" integrity sha512-l79boDFJ8S1c5hvQvG+rc+wHw6IuH7YldmRKsYtpbawsxURu/paVy57FZMomGK22/JckepaikOkY0MoAmdyOlQ== dependencies: "@babel/helper-hoist-variables" "^7.4.4" "@babel/traverse" "^7.4.4" "@babel/types" "^7.4.4" "@babel/helper-define-map@^7.4.4": version "7.4.4" resolved "https://registry.yarnpkg.com/@babel/helper-define-map/-/helper-define-map-7.4.4.tgz#6969d1f570b46bdc900d1eba8e5d59c48ba2c12a" integrity sha512-IX3Ln8gLhZpSuqHJSnTNBWGDE9kdkTEWl21A/K7PQ00tseBwbqCHTvNLHSBd9M0R5rER4h5Rsvj9vw0R5SieBg== dependencies: "@babel/helper-function-name" "^7.1.0" "@babel/types" "^7.4.4" lodash "^4.17.11" "@babel/helper-explode-assignable-expression@^7.1.0": version "7.1.0" resolved "https://registry.yarnpkg.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.1.0.tgz#537fa13f6f1674df745b0c00ec8fe4e99681c8f6" integrity sha512-NRQpfHrJ1msCHtKjbzs9YcMmJZOg6mQMmGRB+hbamEdG5PNpaSm95275VD92DvJKuyl0s2sFiDmMZ+EnnvufqA== dependencies: "@babel/traverse" "^7.1.0" "@babel/types" "^7.0.0" "@babel/helper-function-name@^7.1.0": version "7.1.0" resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.1.0.tgz#a0ceb01685f73355d4360c1247f582bfafc8ff53" integrity sha512-A95XEoCpb3TO+KZzJ4S/5uW5fNe26DjBGqf1o9ucyLyCmi1dXq/B3c8iaWTfBk3VvetUxl16e8tIrd5teOCfGw== dependencies: "@babel/helper-get-function-arity" "^7.0.0" "@babel/template" "^7.1.0" "@babel/types" "^7.0.0" "@babel/helper-get-function-arity@^7.0.0": version "7.0.0" resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0.tgz#83572d4320e2a4657263734113c42868b64e49c3" integrity sha512-r2DbJeg4svYvt3HOS74U4eWKsUAMRH01Z1ds1zx8KNTPtpTL5JAsdFv8BNyOpVqdFhHkkRDIg5B4AsxmkjAlmQ== dependencies: "@babel/types" "^7.0.0" "@babel/helper-hoist-variables@^7.4.4": version "7.4.4" resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.4.4.tgz#0298b5f25c8c09c53102d52ac4a98f773eb2850a" integrity sha512-VYk2/H/BnYbZDDg39hr3t2kKyifAm1W6zHRfhx8jGjIHpQEBv9dry7oQ2f3+J703TLu69nYdxsovl0XYfcnK4w== dependencies: "@babel/types" "^7.4.4" "@babel/helper-member-expression-to-functions@^7.0.0": version "7.0.0" resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.0.0.tgz#8cd14b0a0df7ff00f009e7d7a436945f47c7a16f" integrity sha512-avo+lm/QmZlv27Zsi0xEor2fKcqWG56D5ae9dzklpIaY7cQMK5N8VSpaNVPPagiqmy7LrEjK1IWdGMOqPu5csg== dependencies: "@babel/types" "^7.0.0" "@babel/helper-module-imports@^7.0.0": version "7.0.0" resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.0.0.tgz#96081b7111e486da4d2cd971ad1a4fe216cc2e3d" integrity sha512-aP/hlLq01DWNEiDg4Jn23i+CXxW/owM4WpDLFUbpjxe4NS3BhLVZQ5i7E0ZrxuQ/vwekIeciyamgB1UIYxxM6A== dependencies: "@babel/types" "^7.0.0" "@babel/helper-module-transforms@^7.1.0", "@babel/helper-module-transforms@^7.4.4": version "7.4.4" resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.4.4.tgz#96115ea42a2f139e619e98ed46df6019b94414b8" integrity sha512-3Z1yp8TVQf+B4ynN7WoHPKS8EkdTbgAEy0nU0rs/1Kw4pDgmvYH3rz3aI11KgxKCba2cn7N+tqzV1mY2HMN96w== dependencies: "@babel/helper-module-imports" "^7.0.0" "@babel/helper-simple-access" "^7.1.0" "@babel/helper-split-export-declaration" "^7.4.4" "@babel/template" "^7.4.4" "@babel/types" "^7.4.4" lodash "^4.17.11" "@babel/helper-optimise-call-expression@^7.0.0": version "7.0.0" resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.0.0.tgz#a2920c5702b073c15de51106200aa8cad20497d5" integrity sha512-u8nd9NQePYNQV8iPWu/pLLYBqZBa4ZaY1YWRFMuxrid94wKI1QNt67NEZ7GAe5Kc/0LLScbim05xZFWkAdrj9g== dependencies: "@babel/types" "^7.0.0" "@babel/helper-plugin-utils@^7.0.0": version "7.0.0" resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.0.0.tgz#bbb3fbee98661c569034237cc03967ba99b4f250" integrity sha512-CYAOUCARwExnEixLdB6sDm2dIJ/YgEAKDM1MOeMeZu9Ld/bDgVo8aiWrXwcY7OBh+1Ea2uUcVRcxKk0GJvW7QA== "@babel/helper-regex@^7.0.0", "@babel/helper-regex@^7.4.4": version "7.4.4" resolved "https://registry.yarnpkg.com/@babel/helper-regex/-/helper-regex-7.4.4.tgz#a47e02bc91fb259d2e6727c2a30013e3ac13c4a2" integrity sha512-Y5nuB/kESmR3tKjU8Nkn1wMGEx1tjJX076HBMeL3XLQCu6vA/YRzuTW0bbb+qRnXvQGn+d6Rx953yffl8vEy7Q== dependencies: lodash "^4.17.11" "@babel/helper-remap-async-to-generator@^7.1.0": version "7.1.0" resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.1.0.tgz#361d80821b6f38da75bd3f0785ece20a88c5fe7f" integrity sha512-3fOK0L+Fdlg8S5al8u/hWE6vhufGSn0bN09xm2LXMy//REAF8kDCrYoOBKYmA8m5Nom+sV9LyLCwrFynA8/slg== dependencies: "@babel/helper-annotate-as-pure" "^7.0.0" "@babel/helper-wrap-function" "^7.1.0" "@babel/template" "^7.1.0" "@babel/traverse" "^7.1.0" "@babel/types" "^7.0.0" "@babel/helper-replace-supers@^7.1.0", "@babel/helper-replace-supers@^7.4.4": version "7.4.4" resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.4.4.tgz#aee41783ebe4f2d3ab3ae775e1cc6f1a90cefa27" integrity sha512-04xGEnd+s01nY1l15EuMS1rfKktNF+1CkKmHoErDppjAAZL+IUBZpzT748x262HF7fibaQPhbvWUl5HeSt1EXg== dependencies: "@babel/helper-member-expression-to-functions" "^7.0.0" "@babel/helper-optimise-call-expression" "^7.0.0" "@babel/traverse" "^7.4.4" "@babel/types" "^7.4.4" "@babel/helper-simple-access@^7.1.0": version "7.1.0" resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.1.0.tgz#65eeb954c8c245beaa4e859da6188f39d71e585c" integrity sha512-Vk+78hNjRbsiu49zAPALxTb+JUQCz1aolpd8osOF16BGnLtseD21nbHgLPGUwrXEurZgiCOUmvs3ExTu4F5x6w== dependencies: "@babel/template" "^7.1.0" "@babel/types" "^7.0.0" "@babel/helper-split-export-declaration@^7.4.4": version "7.4.4" resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.4.4.tgz#ff94894a340be78f53f06af038b205c49d993677" integrity sha512-Ro/XkzLf3JFITkW6b+hNxzZ1n5OQ80NvIUdmHspih1XAhtN3vPTuUFT4eQnela+2MaZ5ulH+iyP513KJrxbN7Q== dependencies: "@babel/types" "^7.4.4" "@babel/helper-wrap-function@^7.1.0": version "7.2.0" resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.2.0.tgz#c4e0012445769e2815b55296ead43a958549f6fa" integrity sha512-o9fP1BZLLSrYlxYEYyl2aS+Flun5gtjTIG8iln+XuEzQTs0PLagAGSXUcqruJwD5fM48jzIEggCKpIfWTcR7pQ== dependencies: "@babel/helper-function-name" "^7.1.0" "@babel/template" "^7.1.0" "@babel/traverse" "^7.1.0" "@babel/types" "^7.2.0" "@babel/helpers@^7.4.4": version "7.4.4" resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.4.4.tgz#868b0ef59c1dd4e78744562d5ce1b59c89f2f2a5" integrity sha512-igczbR/0SeuPR8RFfC7tGrbdTbFL3QTvH6D+Z6zNxnTe//GyqmtHmDkzrqDmyZ3eSwPqB/LhyKoU5DXsp+Vp2A== dependencies: "@babel/template" "^7.4.4" "@babel/traverse" "^7.4.4" "@babel/types" "^7.4.4" "@babel/highlight@^7.0.0": version "7.0.0" resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.0.0.tgz#f710c38c8d458e6dd9a201afb637fcb781ce99e4" integrity sha512-UFMC4ZeFC48Tpvj7C8UgLvtkaUuovQX+5xNWrsIoMG8o2z+XFKjKaN9iVmS84dPwVN00W4wPmqvYoZF3EGAsfw== dependencies: chalk "^2.0.0" esutils "^2.0.2" js-tokens "^4.0.0" "@babel/parser@^7.1.0", "@babel/parser@^7.4.3", "@babel/parser@^7.4.4": version "7.4.4" resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.4.4.tgz#5977129431b8fe33471730d255ce8654ae1250b6" integrity sha512-5pCS4mOsL+ANsFZGdvNLybx4wtqAZJ0MJjMHxvzI3bvIsz6sQvzW8XX92EYIkiPtIvcfG3Aj+Ir5VNyjnZhP7w== "@babel/plugin-proposal-async-generator-functions@^7.2.0": version "7.2.0" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.2.0.tgz#b289b306669dce4ad20b0252889a15768c9d417e" integrity sha512-+Dfo/SCQqrwx48ptLVGLdE39YtWRuKc/Y9I5Fy0P1DDBB9lsAHpjcEJQt+4IifuSOSTLBKJObJqMvaO1pIE8LQ== dependencies: "@babel/helper-plugin-utils" "^7.0.0" "@babel/helper-remap-async-to-generator" "^7.1.0" "@babel/plugin-syntax-async-generators" "^7.2.0" "@babel/plugin-proposal-json-strings@^7.2.0": version "7.2.0" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.2.0.tgz#568ecc446c6148ae6b267f02551130891e29f317" integrity sha512-MAFV1CA/YVmYwZG0fBQyXhmj0BHCB5egZHCKWIFVv/XCxAeVGIHfos3SwDck4LvCllENIAg7xMKOG5kH0dzyUg== dependencies: "@babel/helper-plugin-utils" "^7.0.0" "@babel/plugin-syntax-json-strings" "^7.2.0" "@babel/plugin-proposal-object-rest-spread@^7.4.4": version "7.4.4" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.4.4.tgz#1ef173fcf24b3e2df92a678f027673b55e7e3005" integrity sha512-dMBG6cSPBbHeEBdFXeQ2QLc5gUpg4Vkaz8octD4aoW/ISO+jBOcsuxYL7bsb5WSu8RLP6boxrBIALEHgoHtO9g== dependencies: "@babel/helper-plugin-utils" "^7.0.0" "@babel/plugin-syntax-object-rest-spread" "^7.2.0" "@babel/plugin-proposal-optional-catch-binding@^7.2.0": version "7.2.0" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.2.0.tgz#135d81edb68a081e55e56ec48541ece8065c38f5" integrity sha512-mgYj3jCcxug6KUcX4OBoOJz3CMrwRfQELPQ5560F70YQUBZB7uac9fqaWamKR1iWUzGiK2t0ygzjTScZnVz75g== dependencies: "@babel/helper-plugin-utils" "^7.0.0" "@babel/plugin-syntax-optional-catch-binding" "^7.2.0" "@babel/plugin-proposal-unicode-property-regex@^7.4.4": version "7.4.4" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.4.4.tgz#501ffd9826c0b91da22690720722ac7cb1ca9c78" integrity sha512-j1NwnOqMG9mFUOH58JTFsA/+ZYzQLUZ/drqWUqxCYLGeu2JFZL8YrNC9hBxKmWtAuOCHPcRpgv7fhap09Fb4kA== dependencies: "@babel/helper-plugin-utils" "^7.0.0" "@babel/helper-regex" "^7.4.4" regexpu-core "^4.5.4" "@babel/plugin-syntax-async-generators@^7.2.0": version "7.2.0" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.2.0.tgz#69e1f0db34c6f5a0cf7e2b3323bf159a76c8cb7f" integrity sha512-1ZrIRBv2t0GSlcwVoQ6VgSLpLgiN/FVQUzt9znxo7v2Ov4jJrs8RY8tv0wvDmFN3qIdMKWrmMMW6yZ0G19MfGg== dependencies: "@babel/helper-plugin-utils" "^7.0.0" "@babel/plugin-syntax-json-strings@^7.2.0": version "7.2.0" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.2.0.tgz#72bd13f6ffe1d25938129d2a186b11fd62951470" integrity sha512-5UGYnMSLRE1dqqZwug+1LISpA403HzlSfsg6P9VXU6TBjcSHeNlw4DxDx7LgpF+iKZoOG/+uzqoRHTdcUpiZNg== dependencies: "@babel/helper-plugin-utils" "^7.0.0" "@babel/plugin-syntax-object-rest-spread@^7.0.0", "@babel/plugin-syntax-object-rest-spread@^7.2.0": version "7.2.0" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.2.0.tgz#3b7a3e733510c57e820b9142a6579ac8b0dfad2e" integrity sha512-t0JKGgqk2We+9may3t0xDdmneaXmyxq0xieYcKHxIsrJO64n1OiMWNUtc5gQK1PA0NpdCRrtZp4z+IUaKugrSA== dependencies: "@babel/helper-plugin-utils" "^7.0.0" "@babel/plugin-syntax-optional-catch-binding@^7.2.0": version "7.2.0" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.2.0.tgz#a94013d6eda8908dfe6a477e7f9eda85656ecf5c" integrity sha512-bDe4xKNhb0LI7IvZHiA13kff0KEfaGX/Hv4lMA9+7TEc63hMNvfKo6ZFpXhKuEp+II/q35Gc4NoMeDZyaUbj9w== dependencies: "@babel/helper-plugin-utils" "^7.0.0" "@babel/plugin-transform-arrow-functions@^7.2.0": version "7.2.0" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.2.0.tgz#9aeafbe4d6ffc6563bf8f8372091628f00779550" integrity sha512-ER77Cax1+8/8jCB9fo4Ud161OZzWN5qawi4GusDuRLcDbDG+bIGYY20zb2dfAFdTRGzrfq2xZPvF0R64EHnimg== dependencies: "@babel/helper-plugin-utils" "^7.0.0" "@babel/plugin-transform-async-to-generator@^7.4.4": version "7.4.4" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.4.4.tgz#a3f1d01f2f21cadab20b33a82133116f14fb5894" integrity sha512-YiqW2Li8TXmzgbXw+STsSqPBPFnGviiaSp6CYOq55X8GQ2SGVLrXB6pNid8HkqkZAzOH6knbai3snhP7v0fNwA== dependencies: "@babel/helper-module-imports" "^7.0.0" "@babel/helper-plugin-utils" "^7.0.0" "@babel/helper-remap-async-to-generator" "^7.1.0" "@babel/plugin-transform-block-scoped-functions@^7.2.0": version "7.2.0" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.2.0.tgz#5d3cc11e8d5ddd752aa64c9148d0db6cb79fd190" integrity sha512-ntQPR6q1/NKuphly49+QiQiTN0O63uOwjdD6dhIjSWBI5xlrbUFh720TIpzBhpnrLfv2tNH/BXvLIab1+BAI0w== dependencies: "@babel/helper-plugin-utils" "^7.0.0" "@babel/plugin-transform-block-scoping@^7.4.4": version "7.4.4" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.4.4.tgz#c13279fabf6b916661531841a23c4b7dae29646d" integrity sha512-jkTUyWZcTrwxu5DD4rWz6rDB5Cjdmgz6z7M7RLXOJyCUkFBawssDGcGh8M/0FTSB87avyJI1HsTwUXp9nKA1PA== dependencies: "@babel/helper-plugin-utils" "^7.0.0" lodash "^4.17.11" "@babel/plugin-transform-classes@^7.4.4": version "7.4.4" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.4.4.tgz#0ce4094cdafd709721076d3b9c38ad31ca715eb6" integrity sha512-/e44eFLImEGIpL9qPxSRat13I5QNRgBLu2hOQJCF7VLy/otSM/sypV1+XaIw5+502RX/+6YaSAPmldk+nhHDPw== dependencies: "@babel/helper-annotate-as-pure" "^7.0.0" "@babel/helper-define-map" "^7.4.4" "@babel/helper-function-name" "^7.1.0" "@babel/helper-optimise-call-expression" "^7.0.0" "@babel/helper-plugin-utils" "^7.0.0" "@babel/helper-replace-supers" "^7.4.4" "@babel/helper-split-export-declaration" "^7.4.4" globals "^11.1.0" "@babel/plugin-transform-computed-properties@^7.2.0": version "7.2.0" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.2.0.tgz#83a7df6a658865b1c8f641d510c6f3af220216da" integrity sha512-kP/drqTxY6Xt3NNpKiMomfgkNn4o7+vKxK2DDKcBG9sHj51vHqMBGy8wbDS/J4lMxnqs153/T3+DmCEAkC5cpA== dependencies: "@babel/helper-plugin-utils" "^7.0.0" "@babel/plugin-transform-destructuring@^7.4.4": version "7.4.4" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.4.4.tgz#9d964717829cc9e4b601fc82a26a71a4d8faf20f" integrity sha512-/aOx+nW0w8eHiEHm+BTERB2oJn5D127iye/SUQl7NjHy0lf+j7h4MKMMSOwdazGq9OxgiNADncE+SRJkCxjZpQ== dependencies: "@babel/helper-plugin-utils" "^7.0.0" "@babel/plugin-transform-dotall-regex@^7.4.4": version "7.4.4" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.4.4.tgz#361a148bc951444312c69446d76ed1ea8e4450c3" integrity sha512-P05YEhRc2h53lZDjRPk/OektxCVevFzZs2Gfjd545Wde3k+yFDbXORgl2e0xpbq8mLcKJ7Idss4fAg0zORN/zg== dependencies: "@babel/helper-plugin-utils" "^7.0.0" "@babel/helper-regex" "^7.4.4" regexpu-core "^4.5.4" "@babel/plugin-transform-duplicate-keys@^7.2.0": version "7.2.0" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.2.0.tgz#d952c4930f312a4dbfff18f0b2914e60c35530b3" integrity sha512-q+yuxW4DsTjNceUiTzK0L+AfQ0zD9rWaTLiUqHA8p0gxx7lu1EylenfzjeIWNkPy6e/0VG/Wjw9uf9LueQwLOw== dependencies: "@babel/helper-plugin-utils" "^7.0.0" "@babel/plugin-transform-exponentiation-operator@^7.2.0": version "7.2.0" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.2.0.tgz#a63868289e5b4007f7054d46491af51435766008" integrity sha512-umh4hR6N7mu4Elq9GG8TOu9M0bakvlsREEC+ialrQN6ABS4oDQ69qJv1VtR3uxlKMCQMCvzk7vr17RHKcjx68A== dependencies: "@babel/helper-builder-binary-assignment-operator-visitor" "^7.1.0" "@babel/helper-plugin-utils" "^7.0.0" "@babel/plugin-transform-for-of@^7.4.4": version "7.4.4" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.4.4.tgz#0267fc735e24c808ba173866c6c4d1440fc3c556" integrity sha512-9T/5Dlr14Z9TIEXLXkt8T1DU7F24cbhwhMNUziN3hB1AXoZcdzPcTiKGRn/6iOymDqtTKWnr/BtRKN9JwbKtdQ== dependencies: "@babel/helper-plugin-utils" "^7.0.0" "@babel/plugin-transform-function-name@^7.4.4": version "7.4.4" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.4.4.tgz#e1436116abb0610c2259094848754ac5230922ad" integrity sha512-iU9pv7U+2jC9ANQkKeNF6DrPy4GBa4NWQtl6dHB4Pb3izX2JOEvDTFarlNsBj/63ZEzNNIAMs3Qw4fNCcSOXJA== dependencies: "@babel/helper-function-name" "^7.1.0" "@babel/helper-plugin-utils" "^7.0.0" "@babel/plugin-transform-literals@^7.2.0": version "7.2.0" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.2.0.tgz#690353e81f9267dad4fd8cfd77eafa86aba53ea1" integrity sha512-2ThDhm4lI4oV7fVQ6pNNK+sx+c/GM5/SaML0w/r4ZB7sAneD/piDJtwdKlNckXeyGK7wlwg2E2w33C/Hh+VFCg== dependencies: "@babel/helper-plugin-utils" "^7.0.0" "@babel/plugin-transform-member-expression-literals@^7.2.0": version "7.2.0" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.2.0.tgz#fa10aa5c58a2cb6afcf2c9ffa8cb4d8b3d489a2d" integrity sha512-HiU3zKkSU6scTidmnFJ0bMX8hz5ixC93b4MHMiYebmk2lUVNGOboPsqQvx5LzooihijUoLR/v7Nc1rbBtnc7FA== dependencies: "@babel/helper-plugin-utils" "^7.0.0" "@babel/plugin-transform-modules-amd@^7.2.0": version "7.2.0" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.2.0.tgz#82a9bce45b95441f617a24011dc89d12da7f4ee6" integrity sha512-mK2A8ucqz1qhrdqjS9VMIDfIvvT2thrEsIQzbaTdc5QFzhDjQv2CkJJ5f6BXIkgbmaoax3zBr2RyvV/8zeoUZw== dependencies: "@babel/helper-module-transforms" "^7.1.0" "@babel/helper-plugin-utils" "^7.0.0" "@babel/plugin-transform-modules-commonjs@^7.4.4": version "7.4.4" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.4.4.tgz#0bef4713d30f1d78c2e59b3d6db40e60192cac1e" integrity sha512-4sfBOJt58sEo9a2BQXnZq+Q3ZTSAUXyK3E30o36BOGnJ+tvJ6YSxF0PG6kERvbeISgProodWuI9UVG3/FMY6iw== dependencies: "@babel/helper-module-transforms" "^7.4.4" "@babel/helper-plugin-utils" "^7.0.0" "@babel/helper-simple-access" "^7.1.0" "@babel/plugin-transform-modules-systemjs@^7.4.4": version "7.4.4" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.4.4.tgz#dc83c5665b07d6c2a7b224c00ac63659ea36a405" integrity sha512-MSiModfILQc3/oqnG7NrP1jHaSPryO6tA2kOMmAQApz5dayPxWiHqmq4sWH2xF5LcQK56LlbKByCd8Aah/OIkQ== dependencies: "@babel/helper-hoist-variables" "^7.4.4" "@babel/helper-plugin-utils" "^7.0.0" "@babel/plugin-transform-modules-umd@^7.2.0": version "7.2.0" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.2.0.tgz#7678ce75169f0877b8eb2235538c074268dd01ae" integrity sha512-BV3bw6MyUH1iIsGhXlOK6sXhmSarZjtJ/vMiD9dNmpY8QXFFQTj+6v92pcfy1iqa8DeAfJFwoxcrS/TUZda6sw== dependencies: "@babel/helper-module-transforms" "^7.1.0" "@babel/helper-plugin-utils" "^7.0.0" "@babel/plugin-transform-named-capturing-groups-regex@^7.4.4": version "7.4.4" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.4.4.tgz#5611d96d987dfc4a3a81c4383bb173361037d68d" integrity sha512-Ki+Y9nXBlKfhD+LXaRS7v95TtTGYRAf9Y1rTDiE75zf8YQz4GDaWRXosMfJBXxnk88mGFjWdCRIeqDbon7spYA== dependencies: regexp-tree "^0.1.0" "@babel/plugin-transform-new-target@^7.4.4": version "7.4.4" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.4.4.tgz#18d120438b0cc9ee95a47f2c72bc9768fbed60a5" integrity sha512-r1z3T2DNGQwwe2vPGZMBNjioT2scgWzK9BCnDEh+46z8EEwXBq24uRzd65I7pjtugzPSj921aM15RpESgzsSuA== dependencies: "@babel/helper-plugin-utils" "^7.0.0" "@babel/plugin-transform-object-super@^7.2.0": version "7.2.0" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.2.0.tgz#b35d4c10f56bab5d650047dad0f1d8e8814b6598" integrity sha512-VMyhPYZISFZAqAPVkiYb7dUe2AsVi2/wCT5+wZdsNO31FojQJa9ns40hzZ6U9f50Jlq4w6qwzdBB2uwqZ00ebg== dependencies: "@babel/helper-plugin-utils" "^7.0.0" "@babel/helper-replace-supers" "^7.1.0" "@babel/plugin-transform-parameters@^7.4.4": version "7.4.4" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.4.4.tgz#7556cf03f318bd2719fe4c922d2d808be5571e16" integrity sha512-oMh5DUO1V63nZcu/ZVLQFqiihBGo4OpxJxR1otF50GMeCLiRx5nUdtokd+u9SuVJrvvuIh9OosRFPP4pIPnwmw== dependencies: "@babel/helper-call-delegate" "^7.4.4" "@babel/helper-get-function-arity" "^7.0.0" "@babel/helper-plugin-utils" "^7.0.0" "@babel/plugin-transform-property-literals@^7.2.0": version "7.2.0" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.2.0.tgz#03e33f653f5b25c4eb572c98b9485055b389e905" integrity sha512-9q7Dbk4RhgcLp8ebduOpCbtjh7C0itoLYHXd9ueASKAG/is5PQtMR5VJGka9NKqGhYEGn5ITahd4h9QeBMylWQ== dependencies: "@babel/helper-plugin-utils" "^7.0.0" "@babel/plugin-transform-regenerator@^7.4.4": version "7.4.4" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.4.4.tgz#5b4da4df79391895fca9e28f99e87e22cfc02072" integrity sha512-Zz3w+pX1SI0KMIiqshFZkwnVGUhDZzpX2vtPzfJBKQQq8WsP/Xy9DNdELWivxcKOCX/Pywge4SiEaPaLtoDT4g== dependencies: regenerator-transform "^0.13.4" "@babel/plugin-transform-reserved-words@^7.2.0": version "7.2.0" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.2.0.tgz#4792af87c998a49367597d07fedf02636d2e1634" integrity sha512-fz43fqW8E1tAB3DKF19/vxbpib1fuyCwSPE418ge5ZxILnBhWyhtPgz8eh1RCGGJlwvksHkyxMxh0eenFi+kFw== dependencies: "@babel/helper-plugin-utils" "^7.0.0" "@babel/plugin-transform-shorthand-properties@^7.2.0": version "7.2.0" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.2.0.tgz#6333aee2f8d6ee7e28615457298934a3b46198f0" integrity sha512-QP4eUM83ha9zmYtpbnyjTLAGKQritA5XW/iG9cjtuOI8s1RuL/3V6a3DeSHfKutJQ+ayUfeZJPcnCYEQzaPQqg== dependencies: "@babel/helper-plugin-utils" "^7.0.0" "@babel/plugin-transform-spread@^7.2.0": version "7.2.2" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.2.2.tgz#3103a9abe22f742b6d406ecd3cd49b774919b406" integrity sha512-KWfky/58vubwtS0hLqEnrWJjsMGaOeSBn90Ezn5Jeg9Z8KKHmELbP1yGylMlm5N6TPKeY9A2+UaSYLdxahg01w== dependencies: "@babel/helper-plugin-utils" "^7.0.0" "@babel/plugin-transform-sticky-regex@^7.2.0": version "7.2.0" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.2.0.tgz#a1e454b5995560a9c1e0d537dfc15061fd2687e1" integrity sha512-KKYCoGaRAf+ckH8gEL3JHUaFVyNHKe3ASNsZ+AlktgHevvxGigoIttrEJb8iKN03Q7Eazlv1s6cx2B2cQ3Jabw== dependencies: "@babel/helper-plugin-utils" "^7.0.0" "@babel/helper-regex" "^7.0.0" "@babel/plugin-transform-template-literals@^7.4.4": version "7.4.4" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.4.4.tgz#9d28fea7bbce637fb7612a0750989d8321d4bcb0" integrity sha512-mQrEC4TWkhLN0z8ygIvEL9ZEToPhG5K7KDW3pzGqOfIGZ28Jb0POUkeWcoz8HnHvhFy6dwAT1j8OzqN8s804+g== dependencies: "@babel/helper-annotate-as-pure" "^7.0.0" "@babel/helper-plugin-utils" "^7.0.0" "@babel/plugin-transform-typeof-symbol@^7.2.0": version "7.2.0" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.2.0.tgz#117d2bcec2fbf64b4b59d1f9819894682d29f2b2" integrity sha512-2LNhETWYxiYysBtrBTqL8+La0jIoQQnIScUJc74OYvUGRmkskNY4EzLCnjHBzdmb38wqtTaixpo1NctEcvMDZw== dependencies: "@babel/helper-plugin-utils" "^7.0.0" "@babel/plugin-transform-unicode-regex@^7.4.4": version "7.4.4" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.4.4.tgz#ab4634bb4f14d36728bf5978322b35587787970f" integrity sha512-il+/XdNw01i93+M9J9u4T7/e/Ue/vWfNZE4IRUQjplu2Mqb/AFTDimkw2tdEdSH50wuQXZAbXSql0UphQke+vA== dependencies: "@babel/helper-plugin-utils" "^7.0.0" "@babel/helper-regex" "^7.4.4" regexpu-core "^4.5.4" "@babel/preset-env@^7.4.4": version "7.4.4" resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.4.4.tgz#b6f6825bfb27b3e1394ca3de4f926482722c1d6f" integrity sha512-FU1H+ACWqZZqfw1x2G1tgtSSYSfxJLkpaUQL37CenULFARDo+h4xJoVHzRoHbK+85ViLciuI7ME4WTIhFRBBlw== dependencies: "@babel/helper-module-imports" "^7.0.0" "@babel/helper-plugin-utils" "^7.0.0" "@babel/plugin-proposal-async-generator-functions" "^7.2.0" "@babel/plugin-proposal-json-strings" "^7.2.0" "@babel/plugin-proposal-object-rest-spread" "^7.4.4" "@babel/plugin-proposal-optional-catch-binding" "^7.2.0" "@babel/plugin-proposal-unicode-property-regex" "^7.4.4" "@babel/plugin-syntax-async-generators" "^7.2.0" "@babel/plugin-syntax-json-strings" "^7.2.0" "@babel/plugin-syntax-object-rest-spread" "^7.2.0" "@babel/plugin-syntax-optional-catch-binding" "^7.2.0" "@babel/plugin-transform-arrow-functions" "^7.2.0" "@babel/plugin-transform-async-to-generator" "^7.4.4" "@babel/plugin-transform-block-scoped-functions" "^7.2.0" "@babel/plugin-transform-block-scoping" "^7.4.4" "@babel/plugin-transform-classes" "^7.4.4" "@babel/plugin-transform-computed-properties" "^7.2.0" "@babel/plugin-transform-destructuring" "^7.4.4" "@babel/plugin-transform-dotall-regex" "^7.4.4" "@babel/plugin-transform-duplicate-keys" "^7.2.0" "@babel/plugin-transform-exponentiation-operator" "^7.2.0" "@babel/plugin-transform-for-of" "^7.4.4" "@babel/plugin-transform-function-name" "^7.4.4" "@babel/plugin-transform-literals" "^7.2.0" "@babel/plugin-transform-member-expression-literals" "^7.2.0" "@babel/plugin-transform-modules-amd" "^7.2.0" "@babel/plugin-transform-modules-commonjs" "^7.4.4" "@babel/plugin-transform-modules-systemjs" "^7.4.4" "@babel/plugin-transform-modules-umd" "^7.2.0" "@babel/plugin-transform-named-capturing-groups-regex" "^7.4.4" "@babel/plugin-transform-new-target" "^7.4.4" "@babel/plugin-transform-object-super" "^7.2.0" "@babel/plugin-transform-parameters" "^7.4.4" "@babel/plugin-transform-property-literals" "^7.2.0" "@babel/plugin-transform-regenerator" "^7.4.4" "@babel/plugin-transform-reserved-words" "^7.2.0" "@babel/plugin-transform-shorthand-properties" "^7.2.0" "@babel/plugin-transform-spread" "^7.2.0" "@babel/plugin-transform-sticky-regex" "^7.2.0" "@babel/plugin-transform-template-literals" "^7.4.4" "@babel/plugin-transform-typeof-symbol" "^7.2.0" "@babel/plugin-transform-unicode-regex" "^7.4.4" "@babel/types" "^7.4.4" browserslist "^4.5.2" core-js-compat "^3.0.0" invariant "^2.2.2" js-levenshtein "^1.1.3" semver "^5.5.0" "@babel/template@^7.1.0", "@babel/template@^7.4.0", "@babel/template@^7.4.4": version "7.4.4" resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.4.4.tgz#f4b88d1225689a08f5bc3a17483545be9e4ed237" integrity sha512-CiGzLN9KgAvgZsnivND7rkA+AeJ9JB0ciPOD4U59GKbQP2iQl+olF1l76kJOupqidozfZ32ghwBEJDhnk9MEcw== dependencies: "@babel/code-frame" "^7.0.0" "@babel/parser" "^7.4.4" "@babel/types" "^7.4.4" "@babel/traverse@^7.1.0", "@babel/traverse@^7.4.3", "@babel/traverse@^7.4.4": version "7.4.4" resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.4.4.tgz#0776f038f6d78361860b6823887d4f3937133fe8" integrity sha512-Gw6qqkw/e6AGzlyj9KnkabJX7VcubqPtkUQVAwkc0wUMldr3A/hezNB3Rc5eIvId95iSGkGIOe5hh1kMKf951A== dependencies: "@babel/code-frame" "^7.0.0" "@babel/generator" "^7.4.4" "@babel/helper-function-name" "^7.1.0" "@babel/helper-split-export-declaration" "^7.4.4" "@babel/parser" "^7.4.4" "@babel/types" "^7.4.4" debug "^4.1.0" globals "^11.1.0" lodash "^4.17.11" "@babel/types@^7.0.0", "@babel/types@^7.2.0", "@babel/types@^7.3.0", "@babel/types@^7.4.0", "@babel/types@^7.4.4": version "7.4.4" resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.4.4.tgz#8db9e9a629bb7c29370009b4b779ed93fe57d5f0" integrity sha512-dOllgYdnEFOebhkKCjzSVFqw/PmmB8pH6RGOWkY4GsboQNd47b1fBThBSwlHAq9alF9vc1M3+6oqR47R50L0tQ== dependencies: esutils "^2.0.2" lodash "^4.17.11" to-fast-properties "^2.0.0" "@cnakazawa/watch@^1.0.3": version "1.0.3" resolved "https://registry.yarnpkg.com/@cnakazawa/watch/-/watch-1.0.3.tgz#099139eaec7ebf07a27c1786a3ff64f39464d2ef" integrity sha512-r5160ogAvGyHsal38Kux7YYtodEKOj89RGb28ht1jh3SJb08VwRwAKKJL0bGb04Zd/3r9FL3BFIc3bBidYffCA== dependencies: exec-sh "^0.3.2" minimist "^1.2.0" "@jest/console@^24.7.1": version "24.7.1" resolved "https://registry.yarnpkg.com/@jest/console/-/console-24.7.1.tgz#32a9e42535a97aedfe037e725bd67e954b459545" integrity sha512-iNhtIy2M8bXlAOULWVTUxmnelTLFneTNEkHCgPmgd+zNwy9zVddJ6oS5rZ9iwoscNdT5mMwUd0C51v/fSlzItg== dependencies: "@jest/source-map" "^24.3.0" chalk "^2.0.1" slash "^2.0.0" "@jest/core@^24.8.0": version "24.8.0" resolved "https://registry.yarnpkg.com/@jest/core/-/core-24.8.0.tgz#fbbdcd42a41d0d39cddbc9f520c8bab0c33eed5b" integrity sha512-R9rhAJwCBQzaRnrRgAdVfnglUuATXdwTRsYqs6NMdVcAl5euG8LtWDe+fVkN27YfKVBW61IojVsXKaOmSnqd/A== dependencies: "@jest/console" "^24.7.1" "@jest/reporters" "^24.8.0" "@jest/test-result" "^24.8.0" "@jest/transform" "^24.8.0" "@jest/types" "^24.8.0" ansi-escapes "^3.0.0" chalk "^2.0.1" exit "^0.1.2" graceful-fs "^4.1.15" jest-changed-files "^24.8.0" jest-config "^24.8.0" jest-haste-map "^24.8.0" jest-message-util "^24.8.0" jest-regex-util "^24.3.0" jest-resolve-dependencies "^24.8.0" jest-runner "^24.8.0" jest-runtime "^24.8.0" jest-snapshot "^24.8.0" jest-util "^24.8.0" jest-validate "^24.8.0" jest-watcher "^24.8.0" micromatch "^3.1.10" p-each-series "^1.0.0" pirates "^4.0.1" realpath-native "^1.1.0" rimraf "^2.5.4" strip-ansi "^5.0.0" "@jest/environment@^24.8.0": version "24.8.0" resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-24.8.0.tgz#0342261383c776bdd652168f68065ef144af0eac" integrity sha512-vlGt2HLg7qM+vtBrSkjDxk9K0YtRBi7HfRFaDxoRtyi+DyVChzhF20duvpdAnKVBV6W5tym8jm0U9EfXbDk1tw== dependencies: "@jest/fake-timers" "^24.8.0" "@jest/transform" "^24.8.0" "@jest/types" "^24.8.0" jest-mock "^24.8.0" "@jest/fake-timers@^24.8.0": version "24.8.0" resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-24.8.0.tgz#2e5b80a4f78f284bcb4bd5714b8e10dd36a8d3d1" integrity sha512-2M4d5MufVXwi6VzZhJ9f5S/wU4ud2ck0kxPof1Iz3zWx6Y+V2eJrES9jEktB6O3o/oEyk+il/uNu9PvASjWXQw== dependencies: "@jest/types" "^24.8.0" jest-message-util "^24.8.0" jest-mock "^24.8.0" "@jest/reporters@^24.8.0": version "24.8.0" resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-24.8.0.tgz#075169cd029bddec54b8f2c0fc489fd0b9e05729" integrity sha512-eZ9TyUYpyIIXfYCrw0UHUWUvE35vx5I92HGMgS93Pv7du+GHIzl+/vh8Qj9MCWFK/4TqyttVBPakWMOfZRIfxw== dependencies: "@jest/environment" "^24.8.0" "@jest/test-result" "^24.8.0" "@jest/transform" "^24.8.0" "@jest/types" "^24.8.0" chalk "^2.0.1" exit "^0.1.2" glob "^7.1.2" istanbul-lib-coverage "^2.0.2" istanbul-lib-instrument "^3.0.1" istanbul-lib-report "^2.0.4" istanbul-lib-source-maps "^3.0.1" istanbul-reports "^2.1.1" jest-haste-map "^24.8.0" jest-resolve "^24.8.0" jest-runtime "^24.8.0" jest-util "^24.8.0" jest-worker "^24.6.0" node-notifier "^5.2.1" slash "^2.0.0" source-map "^0.6.0" string-length "^2.0.0" "@jest/source-map@^24.3.0": version "24.3.0" resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-24.3.0.tgz#563be3aa4d224caf65ff77edc95cd1ca4da67f28" integrity sha512-zALZt1t2ou8le/crCeeiRYzvdnTzaIlpOWaet45lNSqNJUnXbppUUFR4ZUAlzgDmKee4Q5P/tKXypI1RiHwgag== dependencies: callsites "^3.0.0" graceful-fs "^4.1.15" source-map "^0.6.0" "@jest/test-result@^24.8.0": version "24.8.0" resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-24.8.0.tgz#7675d0aaf9d2484caa65e048d9b467d160f8e9d3" integrity sha512-+YdLlxwizlfqkFDh7Mc7ONPQAhA4YylU1s529vVM1rsf67vGZH/2GGm5uO8QzPeVyaVMobCQ7FTxl38QrKRlng== dependencies: "@jest/console" "^24.7.1" "@jest/types" "^24.8.0" "@types/istanbul-lib-coverage" "^2.0.0" "@jest/test-sequencer@^24.8.0": version "24.8.0" resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-24.8.0.tgz#2f993bcf6ef5eb4e65e8233a95a3320248cf994b" integrity sha512-OzL/2yHyPdCHXEzhoBuq37CE99nkme15eHkAzXRVqthreWZamEMA0WoetwstsQBCXABhczpK03JNbc4L01vvLg== dependencies: "@jest/test-result" "^24.8.0" jest-haste-map "^24.8.0" jest-runner "^24.8.0" jest-runtime "^24.8.0" "@jest/transform@^24.8.0": version "24.8.0" resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-24.8.0.tgz#628fb99dce4f9d254c6fd9341e3eea262e06fef5" integrity sha512-xBMfFUP7TortCs0O+Xtez2W7Zu1PLH9bvJgtraN1CDST6LBM/eTOZ9SfwS/lvV8yOfcDpFmwf9bq5cYbXvqsvA== dependencies: "@babel/core" "^7.1.0" "@jest/types" "^24.8.0" babel-plugin-istanbul "^5.1.0" chalk "^2.0.1" convert-source-map "^1.4.0" fast-json-stable-stringify "^2.0.0" graceful-fs "^4.1.15" jest-haste-map "^24.8.0" jest-regex-util "^24.3.0" jest-util "^24.8.0" micromatch "^3.1.10" realpath-native "^1.1.0" slash "^2.0.0" source-map "^0.6.1" write-file-atomic "2.4.1" "@jest/types@^24.8.0": version "24.8.0" resolved "https://registry.yarnpkg.com/@jest/types/-/types-24.8.0.tgz#f31e25948c58f0abd8c845ae26fcea1491dea7ad" integrity sha512-g17UxVr2YfBtaMUxn9u/4+siG1ptg9IGYAYwvpwn61nBg779RXnjE/m7CxYcIzEt0AbHZZAHSEZNhkE2WxURVg== dependencies: "@types/istanbul-lib-coverage" "^2.0.0" "@types/istanbul-reports" "^1.1.1" "@types/yargs" "^12.0.9" "@types/babel__core@^7.1.0": version "7.1.1" resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.1.1.tgz#ce9a9e5d92b7031421e1d0d74ae59f572ba48be6" integrity sha512-+hjBtgcFPYyCTo0A15+nxrCVJL7aC6Acg87TXd5OW3QhHswdrOLoles+ldL2Uk8q++7yIfl4tURtztccdeeyOw== dependencies: "@babel/parser" "^7.1.0" "@babel/types" "^7.0.0" "@types/babel__generator" "*" "@types/babel__template" "*" "@types/babel__traverse" "*" "@types/babel__generator@*": version "7.0.2" resolved "https://registry.yarnpkg.com/@types/babel__generator/-/babel__generator-7.0.2.tgz#d2112a6b21fad600d7674274293c85dce0cb47fc" integrity sha512-NHcOfab3Zw4q5sEE2COkpfXjoE7o+PmqD9DQW4koUT3roNxwziUdXGnRndMat/LJNUtePwn1TlP4do3uoe3KZQ== dependencies: "@babel/types" "^7.0.0" "@types/babel__template@*": version "7.0.2" resolved "https://registry.yarnpkg.com/@types/babel__template/-/babel__template-7.0.2.tgz#4ff63d6b52eddac1de7b975a5223ed32ecea9307" integrity sha512-/K6zCpeW7Imzgab2bLkLEbz0+1JlFSrUMdw7KoIIu+IUdu51GWaBZpd3y1VXGVXzynvGa4DaIaxNZHiON3GXUg== dependencies: "@babel/parser" "^7.1.0" "@babel/types" "^7.0.0" "@types/babel__traverse@*", "@types/babel__traverse@^7.0.6": version "7.0.6" resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.0.6.tgz#328dd1a8fc4cfe3c8458be9477b219ea158fd7b2" integrity sha512-XYVgHF2sQ0YblLRMLNPB3CkFMewzFmlDsH/TneZFHUXDlABQgh88uOxuez7ZcXxayLFrqLwtDH1t+FmlFwNZxw== dependencies: "@babel/types" "^7.3.0" "@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0": version "2.0.1" resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.1.tgz#42995b446db9a48a11a07ec083499a860e9138ff" integrity sha512-hRJD2ahnnpLgsj6KWMYSrmXkM3rm2Dl1qkx6IOFD5FnuNPXJIG5L0dhgKXCYTRMGzU4n0wImQ/xfmRc4POUFlg== "@types/istanbul-lib-report@*": version "1.1.1" resolved "https://registry.yarnpkg.com/@types/istanbul-lib-report/-/istanbul-lib-report-1.1.1.tgz#e5471e7fa33c61358dd38426189c037a58433b8c" integrity sha512-3BUTyMzbZa2DtDI2BkERNC6jJw2Mr2Y0oGI7mRxYNBPxppbtEK1F66u3bKwU2g+wxwWI7PAoRpJnOY1grJqzHg== dependencies: "@types/istanbul-lib-coverage" "*" "@types/istanbul-reports@^1.1.1": version "1.1.1" resolved "https://registry.yarnpkg.com/@types/istanbul-reports/-/istanbul-reports-1.1.1.tgz#7a8cbf6a406f36c8add871625b278eaf0b0d255a" integrity sha512-UpYjBi8xefVChsCoBpKShdxTllC9pwISirfoZsUa2AAdQg/Jd2KQGtSbw+ya7GPo7x/wAPlH6JBhKhAsXUEZNA== dependencies: "@types/istanbul-lib-coverage" "*" "@types/istanbul-lib-report" "*" "@types/stack-utils@^1.0.1": version "1.0.1" resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-1.0.1.tgz#0a851d3bd96498fa25c33ab7278ed3bd65f06c3e" integrity sha512-l42BggppR6zLmpfU6fq9HEa2oGPEI8yrSPL3GITjfRInppYFahObbIQOQK3UGxEnyQpltZLaPe75046NOZQikw== "@types/yargs@^12.0.2", "@types/yargs@^12.0.9": version "12.0.12" resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-12.0.12.tgz#45dd1d0638e8c8f153e87d296907659296873916" integrity sha512-SOhuU4wNBxhhTHxYaiG5NY4HBhDIDnJF60GU+2LqHAdKKer86//e4yg69aENCtQ04n0ovz+tq2YPME5t5yp4pw== abab@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.0.tgz#aba0ab4c5eee2d4c79d3487d85450fb2376ebb0f" integrity sha512-sY5AXXVZv4Y1VACTtR11UJCPHHudgY5i26Qj5TypE6DKlIApbwb5uqhXcJ5UUGbvZNRh7EeIoW+LrJumBsKp7w== abbrev@1: version "1.1.1" resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q== acorn-globals@^4.1.0: version "4.3.2" resolved "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-4.3.2.tgz#4e2c2313a597fd589720395f6354b41cd5ec8006" integrity sha512-BbzvZhVtZP+Bs1J1HcwrQe8ycfO0wStkSGxuul3He3GkHOIZ6eTqOkPuw9IP1X3+IkOo4wiJmwkobzXYz4wewQ== dependencies: acorn "^6.0.1" acorn-walk "^6.0.1" acorn-walk@^6.0.1: version "6.1.1" resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-6.1.1.tgz#d363b66f5fac5f018ff9c3a1e7b6f8e310cc3913" integrity sha512-OtUw6JUTgxA2QoqqmrmQ7F2NYqiBPi/L2jqHyFtllhOUvXYQXf0Z1CYUinIfyT4bTCGmrA7gX9FvHA81uzCoVw== acorn@^5.5.3: version "5.7.3" resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.7.3.tgz#67aa231bf8812974b85235a96771eb6bd07ea279" integrity sha512-T/zvzYRfbVojPWahDsE5evJdHb3oJoQfFbsrKM7w5Zcs++Tr257tia3BmMP8XYVjp1S9RZXQMh7gao96BlqZOw== acorn@^6.0.1: version "6.1.1" resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.1.1.tgz#7d25ae05bb8ad1f9b699108e1094ecd7884adc1f" integrity sha512-jPTiwtOxaHNaAPg/dmrJ/beuzLRnXtB0kQPQ8JpotKJgTB6rX6c8mlf315941pyjBSaPg8NHXS9fhP4u17DpGA== agent-base@^4.1.0: version "4.2.1" resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-4.2.1.tgz#d89e5999f797875674c07d87f260fc41e83e8ca9" integrity sha512-JVwXMr9nHYTUXsBFKUqhJwvlcYU/blreOEUkhNR2eXZIvwd+c+o5V4MgDPKWnMS/56awN3TRzIP+KoPn+roQtg== dependencies: es6-promisify "^5.0.0" ajv@^6.5.5: version "6.10.0" resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.10.0.tgz#90d0d54439da587cd7e843bfb7045f50bd22bdf1" integrity sha512-nffhOpkymDECQyR0mnsUtoCE8RlX38G0rYP+wgLWFyZuUyuuojSSvi/+euOiQBIn63whYwYVIIH1TvE3tu4OEg== dependencies: fast-deep-equal "^2.0.1" fast-json-stable-stringify "^2.0.0" json-schema-traverse "^0.4.1" uri-js "^4.2.2" ansi-escapes@^3.0.0: version "3.2.0" resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.2.0.tgz#8780b98ff9dbf5638152d1f1fe5c1d7b4442976b" integrity sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ== ansi-regex@^2.0.0: version "2.1.1" resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" integrity sha1-w7M6te42DYbg5ijwRorn7yfWVN8= ansi-regex@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998" integrity sha1-7QMXwyIGT3lGbAKWa922Bas32Zg= ansi-regex@^4.0.0, ansi-regex@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.0.tgz#8b9f8f08cf1acb843756a839ca8c7e3168c51997" integrity sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg== ansi-styles@^3.2.0, ansi-styles@^3.2.1: version "3.2.1" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== dependencies: color-convert "^1.9.0" anymatch@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-2.0.0.tgz#bcb24b4f37934d9aa7ac17b4adaf89e7c76ef2eb" integrity sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw== dependencies: micromatch "^3.1.4" normalize-path "^2.1.1" aproba@^1.0.3: version "1.2.0" resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" integrity sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw== are-we-there-yet@~1.1.2: version "1.1.5" resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz#4b35c2944f062a8bfcda66410760350fe9ddfc21" integrity sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w== dependencies: delegates "^1.0.0" readable-stream "^2.0.6" argparse@^1.0.7: version "1.0.10" resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== dependencies: sprintf-js "~1.0.2" argv@^0.0.2: version "0.0.2" resolved "https://registry.yarnpkg.com/argv/-/argv-0.0.2.tgz#ecbd16f8949b157183711b1bda334f37840185ab" integrity sha1-7L0W+JSbFXGDcRsb2jNPN4QBhas= arr-diff@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520" integrity sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA= arr-flatten@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1" integrity sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg== arr-union@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4" integrity sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ= array-equal@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/array-equal/-/array-equal-1.0.0.tgz#8c2a5ef2472fd9ea742b04c77a75093ba2757c93" integrity sha1-jCpe8kcv2ep0KwTHenUJO6J1fJM= array-unique@^0.3.2: version "0.3.2" resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" integrity sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg= asn1@~0.2.3: version "0.2.4" resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.4.tgz#8d2475dfab553bb33e77b54e59e880bb8ce23136" integrity sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg== dependencies: safer-buffer "~2.1.0" assert-plus@1.0.0, assert-plus@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" integrity sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU= assign-symbols@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367" integrity sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c= astral-regex@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-1.0.0.tgz#6c8c3fb827dd43ee3918f27b82782ab7658a6fd9" integrity sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg== async-limiter@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.0.tgz#78faed8c3d074ab81f22b4e985d79e8738f720f8" integrity sha512-jp/uFnooOiO+L211eZOoSyzpOITMXx1rBITauYykG3BRYPu8h0UcxsPNB04RR5vo4Tyz3+ay17tR6JVf9qzYWg== asynckit@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" integrity sha1-x57Zf380y48robyXkLzDZkdLS3k= atob@^2.1.1: version "2.1.2" resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== aws-sign2@~0.7.0: version "0.7.0" resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8" integrity sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg= aws4@^1.8.0: version "1.8.0" resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.8.0.tgz#f0e003d9ca9e7f59c7a508945d7b2ef9a04a542f" integrity sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ== babel-jest@^24.8.0: version "24.8.0" resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-24.8.0.tgz#5c15ff2b28e20b0f45df43fe6b7f2aae93dba589" integrity sha512-+5/kaZt4I9efoXzPlZASyK/lN9qdRKmmUav9smVc0ruPQD7IsfucQ87gpOE8mn2jbDuS6M/YOW6n3v9ZoIfgnw== dependencies: "@jest/transform" "^24.8.0" "@jest/types" "^24.8.0" "@types/babel__core" "^7.1.0" babel-plugin-istanbul "^5.1.0" babel-preset-jest "^24.6.0" chalk "^2.4.2" slash "^2.0.0" babel-plugin-istanbul@^5.1.0: version "5.1.4" resolved "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-5.1.4.tgz#841d16b9a58eeb407a0ddce622ba02fe87a752ba" integrity sha512-dySz4VJMH+dpndj0wjJ8JPs/7i1TdSPb1nRrn56/92pKOF9VKC1FMFJmMXjzlGGusnCAqujP6PBCiKq0sVA+YQ== dependencies: find-up "^3.0.0" istanbul-lib-instrument "^3.3.0" test-exclude "^5.2.3" babel-plugin-jest-hoist@^24.6.0: version "24.6.0" resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-24.6.0.tgz#f7f7f7ad150ee96d7a5e8e2c5da8319579e78019" integrity sha512-3pKNH6hMt9SbOv0F3WVmy5CWQ4uogS3k0GY5XLyQHJ9EGpAT9XWkFd2ZiXXtkwFHdAHa5j7w7kfxSP5lAIwu7w== dependencies: "@types/babel__traverse" "^7.0.6" babel-preset-jest@^24.6.0: version "24.6.0" resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-24.6.0.tgz#66f06136eefce87797539c0d63f1769cc3915984" integrity sha512-pdZqLEdmy1ZK5kyRUfvBb2IfTPb2BUvIJczlPspS8fWmBQslNNDBqVfh7BW5leOVJMDZKzjD8XEyABTk6gQ5yw== dependencies: "@babel/plugin-syntax-object-rest-spread" "^7.0.0" babel-plugin-jest-hoist "^24.6.0" balanced-match@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c= base@^0.11.1: version "0.11.2" resolved "https://registry.yarnpkg.com/base/-/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f" integrity sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg== dependencies: cache-base "^1.0.1" class-utils "^0.3.5" component-emitter "^1.2.1" define-property "^1.0.0" isobject "^3.0.1" mixin-deep "^1.2.0" pascalcase "^0.1.1" bcrypt-pbkdf@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz#a4301d389b6a43f9b67ff3ca11a3f6637e360e9e" integrity sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4= dependencies: tweetnacl "^0.14.3" brace-expansion@^1.1.7: version "1.1.11" resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== dependencies: balanced-match "^1.0.0" concat-map "0.0.1" braces@^2.3.1: version "2.3.2" resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729" integrity sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w== dependencies: arr-flatten "^1.1.0" array-unique "^0.3.2" extend-shallow "^2.0.1" fill-range "^4.0.0" isobject "^3.0.1" repeat-element "^1.1.2" snapdragon "^0.8.1" snapdragon-node "^2.0.1" split-string "^3.0.2" to-regex "^3.0.1" browser-process-hrtime@^0.1.2: version "0.1.3" resolved "https://registry.yarnpkg.com/browser-process-hrtime/-/browser-process-hrtime-0.1.3.tgz#616f00faef1df7ec1b5bf9cfe2bdc3170f26c7b4" integrity sha512-bRFnI4NnjO6cnyLmOV/7PVoDEMJChlcfN0z4s1YMBY989/SvlfMI1lgCnkFUs53e9gQF+w7qu7XdllSTiSl8Aw== browser-resolve@^1.11.3: version "1.11.3" resolved "https://registry.yarnpkg.com/browser-resolve/-/browser-resolve-1.11.3.tgz#9b7cbb3d0f510e4cb86bdbd796124d28b5890af6" integrity sha512-exDi1BYWB/6raKHmDTCicQfTkqwN5fioMFV4j8BsfMU4R2DK/QfZfK7kOVkmWCNANf0snkBzqGqAJBao9gZMdQ== dependencies: resolve "1.1.7" browserslist@^4.5.2, browserslist@^4.5.4: version "4.6.0" resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.6.0.tgz#5274028c26f4d933d5b1323307c1d1da5084c9ff" integrity sha512-Jk0YFwXBuMOOol8n6FhgkDzn3mY9PYLYGk29zybF05SbRTsMgPqmTNeQQhOghCxq5oFqAXE3u4sYddr4C0uRhg== dependencies: caniuse-lite "^1.0.30000967" electron-to-chromium "^1.3.133" node-releases "^1.1.19" bser@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/bser/-/bser-2.0.0.tgz#9ac78d3ed5d915804fd87acb158bc797147a1719" integrity sha1-mseNPtXZFYBP2HrLFYvHlxR6Fxk= dependencies: node-int64 "^0.4.0" buffer-from@^1.0.0: version "1.1.1" resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A== cache-base@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2" integrity sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ== dependencies: collection-visit "^1.0.0" component-emitter "^1.2.1" get-value "^2.0.6" has-value "^1.0.0" isobject "^3.0.1" set-value "^2.0.0" to-object-path "^0.3.0" union-value "^1.0.0" unset-value "^1.0.0" callsites@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== camelcase@^5.0.0: version "5.3.1" resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== caniuse-lite@^1.0.30000967: version "1.0.30000967" resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30000967.tgz#a5039577806fccee80a04aaafb2c0890b1ee2f73" integrity sha512-rUBIbap+VJfxTzrM4akJ00lkvVb5/n5v3EGXfWzSH5zT8aJmGzjA8HWhJ4U6kCpzxozUSnB+yvAYDRPY6mRpgQ== capture-exit@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/capture-exit/-/capture-exit-2.0.0.tgz#fb953bfaebeb781f62898239dabb426d08a509a4" integrity sha512-PiT/hQmTonHhl/HFGN+Lx3JJUznrVYJ3+AQsnthneZbvW7x+f08Tk7yLJTLEOUvBTbduLeeBkxEaYXUOUrRq6g== dependencies: rsvp "^4.8.4" caseless@~0.12.0: version "0.12.0" resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" integrity sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw= chalk@^2.0.0, chalk@^2.0.1, chalk@^2.4.2: version "2.4.2" resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== dependencies: ansi-styles "^3.2.1" escape-string-regexp "^1.0.5" supports-color "^5.3.0" chownr@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.1.tgz#54726b8b8fff4df053c42187e801fb4412df1494" integrity sha512-j38EvO5+LHX84jlo6h4UzmOwi0UgW61WRyPtJz4qaadK5eY3BTS5TY/S1Stc3Uk2lIM6TPevAlULiEJwie860g== ci-info@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-2.0.0.tgz#67a9e964be31a51e15e5010d58e6f12834002f46" integrity sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ== class-utils@^0.3.5: version "0.3.6" resolved "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463" integrity sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg== dependencies: arr-union "^3.1.0" define-property "^0.2.5" isobject "^3.0.0" static-extend "^0.1.1" cliui@^4.0.0: version "4.1.0" resolved "https://registry.yarnpkg.com/cliui/-/cliui-4.1.0.tgz#348422dbe82d800b3022eef4f6ac10bf2e4d1b49" integrity sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ== dependencies: string-width "^2.1.1" strip-ansi "^4.0.0" wrap-ansi "^2.0.0" co@^4.6.0: version "4.6.0" resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" integrity sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ= code-point-at@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" integrity sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c= codecov@^3.5.0: version "3.5.0" resolved "https://registry.yarnpkg.com/codecov/-/codecov-3.5.0.tgz#3d0748932f9cb41e1ad7f21fa346ef1b2b1bed47" integrity sha512-/OsWOfIHaQIr7aeZ4pY0UC1PZT6kimoKFOFYFNb6wxo3iw12nRrh+mNGH72rnXxNsq6SGfesVPizm/6Q3XqcFQ== dependencies: argv "^0.0.2" ignore-walk "^3.0.1" js-yaml "^3.13.1" teeny-request "^3.11.3" urlgrey "^0.4.4" collection-visit@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0" integrity sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA= dependencies: map-visit "^1.0.0" object-visit "^1.0.0" color-convert@^1.9.0: version "1.9.3" resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== dependencies: color-name "1.1.3" color-name@1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= combined-stream@^1.0.6, combined-stream@~1.0.6: version "1.0.8" resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== dependencies: delayed-stream "~1.0.0" commander@~2.20.0: version "2.20.0" resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.0.tgz#d58bb2b5c1ee8f87b0d340027e9e94e222c5a422" integrity sha512-7j2y+40w61zy6YC2iRNpUe/NwhNyoXrYpHMrSunaMG64nRnaf96zO/KMQR4OyN/UnE5KLyEBnKHd4aG3rskjpQ== component-emitter@^1.2.1: version "1.3.0" resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.3.0.tgz#16e4070fba8ae29b679f2215853ee181ab2eabc0" integrity sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg== concat-map@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= console-control-strings@^1.0.0, console-control-strings@~1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" integrity sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4= convert-source-map@^1.1.0, convert-source-map@^1.4.0: version "1.6.0" resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.6.0.tgz#51b537a8c43e0f04dec1993bffcdd504e758ac20" integrity sha512-eFu7XigvxdZ1ETfbgPBohgyQ/Z++C0eEhTor0qRwBw9unw+L0/6V8wkSuGgzdThkiS5lSpdptOQPD8Ak40a+7A== dependencies: safe-buffer "~5.1.1" copy-descriptor@^0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" integrity sha1-Z29us8OZl8LuGsOpJP1hJHSPV40= core-js-compat@^3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.0.1.tgz#bff73ba31ca8687431b9c88f78d3362646fb76f0" integrity sha512-2pC3e+Ht/1/gD7Sim/sqzvRplMiRnFQVlPpDVaHtY9l7zZP7knamr3VRD6NyGfHd84MrDC0tAM9ulNxYMW0T3g== dependencies: browserslist "^4.5.4" core-js "3.0.1" core-js-pure "3.0.1" semver "^6.0.0" core-js-pure@3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.0.1.tgz#37358fb0d024e6b86d443d794f4e37e949098cbe" integrity sha512-mSxeQ6IghKW3MoyF4cz19GJ1cMm7761ON+WObSyLfTu/Jn3x7w4NwNFnrZxgl4MTSvYYepVLNuRtlB4loMwJ5g== core-js@3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.0.1.tgz#1343182634298f7f38622f95e73f54e48ddf4738" integrity sha512-sco40rF+2KlE0ROMvydjkrVMMG1vYilP2ALoRXcYR4obqbYIuV3Bg+51GEDW+HF8n7NRA+iaA4qD0nD9lo9mew== core-util-is@1.0.2, core-util-is@~1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= cross-spawn@^6.0.0: version "6.0.5" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ== dependencies: nice-try "^1.0.4" path-key "^2.0.1" semver "^5.5.0" shebang-command "^1.2.0" which "^1.2.9" cssom@0.3.x, "cssom@>= 0.3.2 < 0.4.0": version "0.3.6" resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.3.6.tgz#f85206cee04efa841f3c5982a74ba96ab20d65ad" integrity sha512-DtUeseGk9/GBW0hl0vVPpU22iHL6YB5BUX7ml1hB+GMpo0NX5G4voX3kdWiMSEguFtcW3Vh3djqNF4aIe6ne0A== cssstyle@^1.0.0: version "1.2.2" resolved "https://registry.yarnpkg.com/cssstyle/-/cssstyle-1.2.2.tgz#427ea4d585b18624f6fdbf9de7a2a1a3ba713077" integrity sha512-43wY3kl1CVQSvL7wUY1qXkxVGkStjpkDmVjiIKX8R97uhajy8Bybay78uOtqvh7Q5GK75dNPfW0geWjE6qQQow== dependencies: cssom "0.3.x" dashdash@^1.12.0: version "1.14.1" resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" integrity sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA= dependencies: assert-plus "^1.0.0" data-urls@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/data-urls/-/data-urls-1.1.0.tgz#15ee0582baa5e22bb59c77140da8f9c76963bbfe" integrity sha512-YTWYI9se1P55u58gL5GkQHW4P6VJBJ5iBT+B5a7i2Tjadhv52paJG0qHX4A0OR6/t52odI64KP2YvFpkDOi3eQ== dependencies: abab "^2.0.0" whatwg-mimetype "^2.2.0" whatwg-url "^7.0.0" debug@^2.2.0, debug@^2.3.3: version "2.6.9" resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== dependencies: ms "2.0.0" debug@^3.1.0, debug@^3.2.6: version "3.2.6" resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b" integrity sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ== dependencies: ms "^2.1.1" debug@^4.1.0, debug@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/debug/-/debug-4.1.1.tgz#3b72260255109c6b589cee050f1d516139664791" integrity sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw== dependencies: ms "^2.1.1" decamelize@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= decode-uri-component@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545" integrity sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU= deep-extend@^0.6.0: version "0.6.0" resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA== deep-is@~0.1.3: version "0.1.3" resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" integrity sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ= define-properties@^1.1.2: version "1.1.3" resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1" integrity sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ== dependencies: object-keys "^1.0.12" define-property@^0.2.5: version "0.2.5" resolved "https://registry.yarnpkg.com/define-property/-/define-property-0.2.5.tgz#c35b1ef918ec3c990f9a5bc57be04aacec5c8116" integrity sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY= dependencies: is-descriptor "^0.1.0" define-property@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/define-property/-/define-property-1.0.0.tgz#769ebaaf3f4a63aad3af9e8d304c9bbe79bfb0e6" integrity sha1-dp66rz9KY6rTr56NMEybvnm/sOY= dependencies: is-descriptor "^1.0.0" define-property@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/define-property/-/define-property-2.0.2.tgz#d459689e8d654ba77e02a817f8710d702cb16e9d" integrity sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ== dependencies: is-descriptor "^1.0.2" isobject "^3.0.1" delayed-stream@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" integrity sha1-3zrhmayt+31ECqrgsp4icrJOxhk= delegates@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" integrity sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o= detect-libc@^1.0.2: version "1.0.3" resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b" integrity sha1-+hN8S9aY7fVc1c0CrFWfkaTEups= detect-newline@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-2.1.0.tgz#f41f1c10be4b00e87b5f13da680759f2c5bfd3e2" integrity sha1-9B8cEL5LAOh7XxPaaAdZ8sW/0+I= diff-sequences@^24.3.0: version "24.3.0" resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-24.3.0.tgz#0f20e8a1df1abddaf4d9c226680952e64118b975" integrity sha512-xLqpez+Zj9GKSnPWS0WZw1igGocZ+uua8+y+5dDNTT934N3QuY1sp2LkHzwiaYQGz60hMq0pjAshdeXm5VUOEw== domexception@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/domexception/-/domexception-1.0.1.tgz#937442644ca6a31261ef36e3ec677fe805582c90" integrity sha512-raigMkn7CJNNo6Ihro1fzG7wr3fHuYVytzquZKX5n0yizGsTcYgzdIUwj1X9pK0VvjeihV+XiclP+DjwbsSKug== dependencies: webidl-conversions "^4.0.2" ecc-jsbn@~0.1.1: version "0.1.2" resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9" integrity sha1-OoOpBOVDUyh4dMVkt1SThoSamMk= dependencies: jsbn "~0.1.0" safer-buffer "^2.1.0" electron-to-chromium@^1.3.133: version "1.3.134" resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.134.tgz#550222bddac43c6bd6c445c3543a0fe8a615021d" integrity sha512-C3uK2SrtWg/gSWaluLHWSHjyebVZCe4ZC0NVgTAoTq8tCR9FareRK5T7R7AS/nPZShtlEcjVMX1kQ8wi4nU68w== end-of-stream@^1.1.0: version "1.4.1" resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.1.tgz#ed29634d19baba463b6ce6b80a37213eab71ec43" integrity sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q== dependencies: once "^1.4.0" error-ex@^1.3.1: version "1.3.2" resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== dependencies: is-arrayish "^0.2.1" es-abstract@^1.5.1: version "1.13.0" resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.13.0.tgz#ac86145fdd5099d8dd49558ccba2eaf9b88e24e9" integrity sha512-vDZfg/ykNxQVwup/8E1BZhVzFfBxs9NqMzGcvIJrqg5k2/5Za2bWo40dK2J1pgLngZ7c+Shh8lwYtLGyrwPutg== dependencies: es-to-primitive "^1.2.0" function-bind "^1.1.1" has "^1.0.3" is-callable "^1.1.4" is-regex "^1.0.4" object-keys "^1.0.12" es-to-primitive@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.0.tgz#edf72478033456e8dda8ef09e00ad9650707f377" integrity sha512-qZryBOJjV//LaxLTV6UC//WewneB3LcXOL9NP++ozKVXsIIIpm/2c13UDiD9Jp2eThsecw9m3jPqDwTyobcdbg== dependencies: is-callable "^1.1.4" is-date-object "^1.0.1" is-symbol "^1.0.2" es6-promise@^4.0.3: version "4.2.6" resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-4.2.6.tgz#b685edd8258886365ea62b57d30de28fadcd974f" integrity sha512-aRVgGdnmW2OiySVPUC9e6m+plolMAJKjZnQlCwNSuK5yQ0JN61DZSO1X1Ufd1foqWRAlig0rhduTCHe7sVtK5Q== es6-promisify@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/es6-promisify/-/es6-promisify-5.0.0.tgz#5109d62f3e56ea967c4b63505aef08291c8a5203" integrity sha1-UQnWLz5W6pZ8S2NQWu8IKRyKUgM= dependencies: es6-promise "^4.0.3" escape-string-regexp@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= escodegen@^1.9.1: version "1.11.1" resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.11.1.tgz#c485ff8d6b4cdb89e27f4a856e91f118401ca510" integrity sha512-JwiqFD9KdGVVpeuRa68yU3zZnBEOcPs0nKW7wZzXky8Z7tffdYUHbe11bPCV5jYlK6DVdKLWLm0f5I/QlL0Kmw== dependencies: esprima "^3.1.3" estraverse "^4.2.0" esutils "^2.0.2" optionator "^0.8.1" optionalDependencies: source-map "~0.6.1" esprima@^3.1.3: version "3.1.3" resolved "https://registry.yarnpkg.com/esprima/-/esprima-3.1.3.tgz#fdca51cee6133895e3c88d535ce49dbff62a4633" integrity sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM= esprima@^4.0.0: version "4.0.1" resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== estraverse@^4.2.0: version "4.2.0" resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.2.0.tgz#0dee3fed31fcd469618ce7342099fc1afa0bdb13" integrity sha1-De4/7TH81GlhjOc0IJn8GvoL2xM= esutils@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b" integrity sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs= exec-sh@^0.3.2: version "0.3.2" resolved "https://registry.yarnpkg.com/exec-sh/-/exec-sh-0.3.2.tgz#6738de2eb7c8e671d0366aea0b0db8c6f7d7391b" integrity sha512-9sLAvzhI5nc8TpuQUh4ahMdCrWT00wPWz7j47/emR5+2qEfoZP5zzUXvx+vdx+H6ohhnsYC31iX04QLYJK8zTg== execa@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/execa/-/execa-1.0.0.tgz#c6236a5bb4df6d6f15e88e7f017798216749ddd8" integrity sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA== dependencies: cross-spawn "^6.0.0" get-stream "^4.0.0" is-stream "^1.1.0" npm-run-path "^2.0.0" p-finally "^1.0.0" signal-exit "^3.0.0" strip-eof "^1.0.0" exit@^0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c" integrity sha1-BjJjj42HfMghB9MKD/8aF8uhzQw= expand-brackets@^2.1.4: version "2.1.4" resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622" integrity sha1-t3c14xXOMPa27/D4OwQVGiJEliI= dependencies: debug "^2.3.3" define-property "^0.2.5" extend-shallow "^2.0.1" posix-character-classes "^0.1.0" regex-not "^1.0.0" snapdragon "^0.8.1" to-regex "^3.0.1" expect@^24.8.0: version "24.8.0" resolved "https://registry.yarnpkg.com/expect/-/expect-24.8.0.tgz#471f8ec256b7b6129ca2524b2a62f030df38718d" integrity sha512-/zYvP8iMDrzaaxHVa724eJBCKqSHmO0FA7EDkBiRHxg6OipmMn1fN+C8T9L9K8yr7UONkOifu6+LLH+z76CnaA== dependencies: "@jest/types" "^24.8.0" ansi-styles "^3.2.0" jest-get-type "^24.8.0" jest-matcher-utils "^24.8.0" jest-message-util "^24.8.0" jest-regex-util "^24.3.0" extend-shallow@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f" integrity sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8= dependencies: is-extendable "^0.1.0" extend-shallow@^3.0.0, extend-shallow@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-3.0.2.tgz#26a71aaf073b39fb2127172746131c2704028db8" integrity sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg= dependencies: assign-symbols "^1.0.0" is-extendable "^1.0.1" extend@~3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== extglob@^2.0.4: version "2.0.4" resolved "https://registry.yarnpkg.com/extglob/-/extglob-2.0.4.tgz#ad00fe4dc612a9232e8718711dc5cb5ab0285543" integrity sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw== dependencies: array-unique "^0.3.2" define-property "^1.0.0" expand-brackets "^2.1.4" extend-shallow "^2.0.1" fragment-cache "^0.2.1" regex-not "^1.0.0" snapdragon "^0.8.1" to-regex "^3.0.1" extsprintf@1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05" integrity sha1-lpGEQOMEGnpBT4xS48V06zw+HgU= extsprintf@^1.2.0: version "1.4.0" resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.0.tgz#e2689f8f356fad62cca65a3a91c5df5f9551692f" integrity sha1-4mifjzVvrWLMplo6kcXfX5VRaS8= fast-deep-equal@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz#7b05218ddf9667bf7f370bf7fdb2cb15fdd0aa49" integrity sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk= fast-json-stable-stringify@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz#d5142c0caee6b1189f87d3a76111064f86c8bbf2" integrity sha1-1RQsDK7msRifh9OnYREGT4bIu/I= fast-levenshtein@~2.0.4: version "2.0.6" resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= fb-watchman@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/fb-watchman/-/fb-watchman-2.0.0.tgz#54e9abf7dfa2f26cd9b1636c588c1afc05de5d58" integrity sha1-VOmr99+i8mzZsWNsWIwa/AXeXVg= dependencies: bser "^2.0.0" fill-range@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7" integrity sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc= dependencies: extend-shallow "^2.0.1" is-number "^3.0.0" repeat-string "^1.6.1" to-regex-range "^2.1.0" find-up@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73" integrity sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg== dependencies: locate-path "^3.0.0" for-in@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" integrity sha1-gQaNKVqBQuwKxybG4iAMMPttXoA= forever-agent@~0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" integrity sha1-+8cfDEGt6zf5bFd60e1C2P2sypE= form-data@~2.3.2: version "2.3.3" resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.3.tgz#dcce52c05f644f298c6a7ab936bd724ceffbf3a6" integrity sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ== dependencies: asynckit "^0.4.0" combined-stream "^1.0.6" mime-types "^2.1.12" fragment-cache@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/fragment-cache/-/fragment-cache-0.2.1.tgz#4290fad27f13e89be7f33799c6bc5a0abfff0d19" integrity sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk= dependencies: map-cache "^0.2.2" fs-minipass@^1.2.5: version "1.2.5" resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-1.2.5.tgz#06c277218454ec288df77ada54a03b8702aacb9d" integrity sha512-JhBl0skXjUPCFH7x6x61gQxrKyXsxB5gcgePLZCwfyCGGsTISMoIeObbrvVeP6Xmyaudw4TT43qV2Gz+iyd2oQ== dependencies: minipass "^2.2.1" fs.realpath@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= fsevents@^1.2.7: version "1.2.9" resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.9.tgz#3f5ed66583ccd6f400b5a00db6f7e861363e388f" integrity sha512-oeyj2H3EjjonWcFjD5NvZNE9Rqe4UW+nQBU2HNeKw0koVLEFIhtyETyAakeAM3de7Z/SW5kcA+fZUait9EApnw== dependencies: nan "^2.12.1" node-pre-gyp "^0.12.0" function-bind@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== gauge@~2.7.3: version "2.7.4" resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.4.tgz#2c03405c7538c39d7eb37b317022e325fb018bf7" integrity sha1-LANAXHU4w51+s3sxcCLjJfsBi/c= dependencies: aproba "^1.0.3" console-control-strings "^1.0.0" has-unicode "^2.0.0" object-assign "^4.1.0" signal-exit "^3.0.0" string-width "^1.0.1" strip-ansi "^3.0.1" wide-align "^1.1.0" get-caller-file@^1.0.1: version "1.0.3" resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.3.tgz#f978fa4c90d1dfe7ff2d6beda2a515e713bdcf4a" integrity sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w== get-stream@^4.0.0: version "4.1.0" resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-4.1.0.tgz#c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5" integrity sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w== dependencies: pump "^3.0.0" get-value@^2.0.3, get-value@^2.0.6: version "2.0.6" resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28" integrity sha1-3BXKHGcjh8p2vTesCjlbogQqLCg= getpass@^0.1.1: version "0.1.7" resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa" integrity sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo= dependencies: assert-plus "^1.0.0" glob@^7.1.1, glob@^7.1.2, glob@^7.1.3: version "7.1.4" resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.4.tgz#aa608a2f6c577ad357e1ae5a5c26d9a8d1969255" integrity sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A== dependencies: fs.realpath "^1.0.0" inflight "^1.0.4" inherits "2" minimatch "^3.0.4" once "^1.3.0" path-is-absolute "^1.0.0" globals@^11.1.0: version "11.12.0" resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2: version "4.1.15" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.15.tgz#ffb703e1066e8a0eeaa4c8b80ba9253eeefbfb00" integrity sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA== growly@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/growly/-/growly-1.3.0.tgz#f10748cbe76af964b7c96c93c6bcc28af120c081" integrity sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE= handlebars@^4.1.2: version "4.1.2" resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.1.2.tgz#b6b37c1ced0306b221e094fc7aca3ec23b131b67" integrity sha512-nvfrjqvt9xQ8Z/w0ijewdD/vvWDTOweBUm96NTr66Wfvo1mJenBLwcYmPs3TIBP5ruzYGD7Hx/DaM9RmhroGPw== dependencies: neo-async "^2.6.0" optimist "^0.6.1" source-map "^0.6.1" optionalDependencies: uglify-js "^3.1.4" har-schema@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92" integrity sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI= har-validator@~5.1.0: version "5.1.3" resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.3.tgz#1ef89ebd3e4996557675eed9893110dc350fa080" integrity sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g== dependencies: ajv "^6.5.5" har-schema "^2.0.0" has-flag@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= has-symbols@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.0.tgz#ba1a8f1af2a0fc39650f5c850367704122063b44" integrity sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q= has-unicode@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" integrity sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk= has-value@^0.3.1: version "0.3.1" resolved "https://registry.yarnpkg.com/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f" integrity sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8= dependencies: get-value "^2.0.3" has-values "^0.1.4" isobject "^2.0.0" has-value@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/has-value/-/has-value-1.0.0.tgz#18b281da585b1c5c51def24c930ed29a0be6b177" integrity sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc= dependencies: get-value "^2.0.6" has-values "^1.0.0" isobject "^3.0.0" has-values@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/has-values/-/has-values-0.1.4.tgz#6d61de95d91dfca9b9a02089ad384bff8f62b771" integrity sha1-bWHeldkd/Km5oCCJrThL/49it3E= has-values@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/has-values/-/has-values-1.0.0.tgz#95b0b63fec2146619a6fe57fe75628d5a39efe4f" integrity sha1-lbC2P+whRmGab+V/51Yo1aOe/k8= dependencies: is-number "^3.0.0" kind-of "^4.0.0" has@^1.0.1, has@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== dependencies: function-bind "^1.1.1" hosted-git-info@^2.1.4: version "2.7.1" resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.7.1.tgz#97f236977bd6e125408930ff6de3eec6281ec047" integrity sha512-7T/BxH19zbcCTa8XkMlbK5lTo1WtgkFi3GvdWEyNuc4Vex7/9Dqbnpsf4JMydcfj9HCg4zUWFTL3Za6lapg5/w== html-encoding-sniffer@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/html-encoding-sniffer/-/html-encoding-sniffer-1.0.2.tgz#e70d84b94da53aa375e11fe3a351be6642ca46f8" integrity sha512-71lZziiDnsuabfdYiUeWdCVyKuqwWi23L8YeIgV9jSSZHCtb6wB1BKWooH7L3tn4/FuZJMVWyNaIDr4RGmaSYw== dependencies: whatwg-encoding "^1.0.1" http-signature@~1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1" integrity sha1-muzZJRFHcvPZW2WmCruPfBj7rOE= dependencies: assert-plus "^1.0.0" jsprim "^1.2.2" sshpk "^1.7.0" https-proxy-agent@^2.2.1: version "2.2.1" resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-2.2.1.tgz#51552970fa04d723e04c56d04178c3f92592bbc0" integrity sha512-HPCTS1LW51bcyMYbxUIOO4HEOlQ1/1qRaFWcyxvwaqUS9TY88aoEuHUY33kuAh1YhVVaDQhLZsnPd+XNARWZlQ== dependencies: agent-base "^4.1.0" debug "^3.1.0" iconv-lite@0.4.24, iconv-lite@^0.4.4: version "0.4.24" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== dependencies: safer-buffer ">= 2.1.2 < 3" ignore-walk@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/ignore-walk/-/ignore-walk-3.0.1.tgz#a83e62e7d272ac0e3b551aaa82831a19b69f82f8" integrity sha512-DTVlMx3IYPe0/JJcYP7Gxg7ttZZu3IInhuEhbchuqneY9wWe5Ojy2mXLBaQFUQmo0AW2r3qG7m1mg86js+gnlQ== dependencies: minimatch "^3.0.4" import-local@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/import-local/-/import-local-2.0.0.tgz#55070be38a5993cf18ef6db7e961f5bee5c5a09d" integrity sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ== dependencies: pkg-dir "^3.0.0" resolve-cwd "^2.0.0" imurmurhash@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" integrity sha1-khi5srkoojixPcT7a21XbyMUU+o= inflight@^1.0.4: version "1.0.6" resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= dependencies: once "^1.3.0" wrappy "1" inherits@2, inherits@~2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= ini@~1.3.0: version "1.3.5" resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927" integrity sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw== invariant@^2.2.2, invariant@^2.2.4: version "2.2.4" resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6" integrity sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA== dependencies: loose-envify "^1.0.0" invert-kv@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-2.0.0.tgz#7393f5afa59ec9ff5f67a27620d11c226e3eec02" integrity sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA== is-accessor-descriptor@^0.1.6: version "0.1.6" resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz#a9e12cb3ae8d876727eeef3843f8a0897b5c98d6" integrity sha1-qeEss66Nh2cn7u84Q/igiXtcmNY= dependencies: kind-of "^3.0.2" is-accessor-descriptor@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz#169c2f6d3df1f992618072365c9b0ea1f6878656" integrity sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ== dependencies: kind-of "^6.0.0" is-arrayish@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0= is-buffer@^1.1.5: version "1.1.6" resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== is-callable@^1.1.4: version "1.1.4" resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.4.tgz#1e1adf219e1eeb684d691f9d6a05ff0d30a24d75" integrity sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA== is-ci@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-2.0.0.tgz#6bc6334181810e04b5c22b3d589fdca55026404c" integrity sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w== dependencies: ci-info "^2.0.0" is-data-descriptor@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56" integrity sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y= dependencies: kind-of "^3.0.2" is-data-descriptor@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz#d84876321d0e7add03990406abbbbd36ba9268c7" integrity sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ== dependencies: kind-of "^6.0.0" is-date-object@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.1.tgz#9aa20eb6aeebbff77fbd33e74ca01b33581d3a16" integrity sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY= is-descriptor@^0.1.0: version "0.1.6" resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-0.1.6.tgz#366d8240dde487ca51823b1ab9f07a10a78251ca" integrity sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg== dependencies: is-accessor-descriptor "^0.1.6" is-data-descriptor "^0.1.4" kind-of "^5.0.0" is-descriptor@^1.0.0, is-descriptor@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-1.0.2.tgz#3b159746a66604b04f8c81524ba365c5f14d86ec" integrity sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg== dependencies: is-accessor-descriptor "^1.0.0" is-data-descriptor "^1.0.0" kind-of "^6.0.2" is-extendable@^0.1.0, is-extendable@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" integrity sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik= is-extendable@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-1.0.1.tgz#a7470f9e426733d81bd81e1155264e3a3507cab4" integrity sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA== dependencies: is-plain-object "^2.0.4" is-fullwidth-code-point@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb" integrity sha1-754xOG8DGn8NZDr4L95QxFfvAMs= dependencies: number-is-nan "^1.0.0" is-fullwidth-code-point@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8= is-generator-fn@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/is-generator-fn/-/is-generator-fn-2.1.0.tgz#7d140adc389aaf3011a8f2a2a4cfa6faadffb118" integrity sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ== is-number@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195" integrity sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU= dependencies: kind-of "^3.0.2" is-plain-object@^2.0.1, is-plain-object@^2.0.3, is-plain-object@^2.0.4: version "2.0.4" resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og== dependencies: isobject "^3.0.1" is-regex@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.0.4.tgz#5517489b547091b0930e095654ced25ee97e9491" integrity sha1-VRdIm1RwkbCTDglWVM7SXul+lJE= dependencies: has "^1.0.1" is-stream@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" integrity sha1-EtSj3U5o4Lec6428hBc66A2RykQ= is-symbol@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.2.tgz#a055f6ae57192caee329e7a860118b497a950f38" integrity sha512-HS8bZ9ox60yCJLH9snBpIwv9pYUAkcuLhSA1oero1UB5y9aiQpRA8y2ex945AOtCZL1lJDeIk3G5LthswI46Lw== dependencies: has-symbols "^1.0.0" is-typedarray@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo= is-windows@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA== is-wsl@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-1.1.0.tgz#1f16e4aa22b04d1336b66188a66af3c600c3a66d" integrity sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0= isarray@1.0.0, isarray@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= isexe@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= isobject@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89" integrity sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk= dependencies: isarray "1.0.0" isobject@^3.0.0, isobject@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" integrity sha1-TkMekrEalzFjaqH5yNHMvP2reN8= isstream@~0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" integrity sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo= istanbul-lib-coverage@^2.0.2, istanbul-lib-coverage@^2.0.5: version "2.0.5" resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.5.tgz#675f0ab69503fad4b1d849f736baaca803344f49" integrity sha512-8aXznuEPCJvGnMSRft4udDRDtb1V3pkQkMMI5LI+6HuQz5oQ4J2UFn1H82raA3qJtyOLkkwVqICBQkjnGtn5mA== istanbul-lib-instrument@^3.0.1, istanbul-lib-instrument@^3.3.0: version "3.3.0" resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-3.3.0.tgz#a5f63d91f0bbc0c3e479ef4c5de027335ec6d630" integrity sha512-5nnIN4vo5xQZHdXno/YDXJ0G+I3dAm4XgzfSVTPLQpj/zAV2dV6Juy0yaf10/zrJOJeHoN3fraFe+XRq2bFVZA== dependencies: "@babel/generator" "^7.4.0" "@babel/parser" "^7.4.3" "@babel/template" "^7.4.0" "@babel/traverse" "^7.4.3" "@babel/types" "^7.4.0" istanbul-lib-coverage "^2.0.5" semver "^6.0.0" istanbul-lib-report@^2.0.4: version "2.0.8" resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-2.0.8.tgz#5a8113cd746d43c4889eba36ab10e7d50c9b4f33" integrity sha512-fHBeG573EIihhAblwgxrSenp0Dby6tJMFR/HvlerBsrCTD5bkUuoNtn3gVh29ZCS824cGGBPn7Sg7cNk+2xUsQ== dependencies: istanbul-lib-coverage "^2.0.5" make-dir "^2.1.0" supports-color "^6.1.0" istanbul-lib-source-maps@^3.0.1: version "3.0.6" resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-3.0.6.tgz#284997c48211752ec486253da97e3879defba8c8" integrity sha512-R47KzMtDJH6X4/YW9XTx+jrLnZnscW4VpNN+1PViSYTejLVPWv7oov+Duf8YQSPyVRUvueQqz1TcsC6mooZTXw== dependencies: debug "^4.1.1" istanbul-lib-coverage "^2.0.5" make-dir "^2.1.0" rimraf "^2.6.3" source-map "^0.6.1" istanbul-reports@^2.1.1: version "2.2.6" resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-2.2.6.tgz#7b4f2660d82b29303a8fe6091f8ca4bf058da1af" integrity sha512-SKi4rnMyLBKe0Jy2uUdx28h8oG7ph2PPuQPvIAh31d+Ci+lSiEu4C+h3oBPuJ9+mPKhOyW0M8gY4U5NM1WLeXA== dependencies: handlebars "^4.1.2" jest-changed-files@^24.8.0: version "24.8.0" resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-24.8.0.tgz#7e7eb21cf687587a85e50f3d249d1327e15b157b" integrity sha512-qgANC1Yrivsq+UrLXsvJefBKVoCsKB0Hv+mBb6NMjjZ90wwxCDmU3hsCXBya30cH+LnPYjwgcU65i6yJ5Nfuug== dependencies: "@jest/types" "^24.8.0" execa "^1.0.0" throat "^4.0.0" jest-cli@^24.8.0: version "24.8.0" resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-24.8.0.tgz#b075ac914492ed114fa338ade7362a301693e989" integrity sha512-+p6J00jSMPQ116ZLlHJJvdf8wbjNbZdeSX9ptfHX06/MSNaXmKihQzx5vQcw0q2G6JsdVkUIdWbOWtSnaYs3yA== dependencies: "@jest/core" "^24.8.0" "@jest/test-result" "^24.8.0" "@jest/types" "^24.8.0" chalk "^2.0.1" exit "^0.1.2" import-local "^2.0.0" is-ci "^2.0.0" jest-config "^24.8.0" jest-util "^24.8.0" jest-validate "^24.8.0" prompts "^2.0.1" realpath-native "^1.1.0" yargs "^12.0.2" jest-config@^24.8.0: version "24.8.0" resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-24.8.0.tgz#77db3d265a6f726294687cbbccc36f8a76ee0f4f" integrity sha512-Czl3Nn2uEzVGsOeaewGWoDPD8GStxCpAe0zOYs2x2l0fZAgPbCr3uwUkgNKV3LwE13VXythM946cd5rdGkkBZw== dependencies: "@babel/core" "^7.1.0" "@jest/test-sequencer" "^24.8.0" "@jest/types" "^24.8.0" babel-jest "^24.8.0" chalk "^2.0.1" glob "^7.1.1" jest-environment-jsdom "^24.8.0" jest-environment-node "^24.8.0" jest-get-type "^24.8.0" jest-jasmine2 "^24.8.0" jest-regex-util "^24.3.0" jest-resolve "^24.8.0" jest-util "^24.8.0" jest-validate "^24.8.0" micromatch "^3.1.10" pretty-format "^24.8.0" realpath-native "^1.1.0" jest-diff@^24.8.0: version "24.8.0" resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-24.8.0.tgz#146435e7d1e3ffdf293d53ff97e193f1d1546172" integrity sha512-wxetCEl49zUpJ/bvUmIFjd/o52J+yWcoc5ZyPq4/W1LUKGEhRYDIbP1KcF6t+PvqNrGAFk4/JhtxDq/Nnzs66g== dependencies: chalk "^2.0.1" diff-sequences "^24.3.0" jest-get-type "^24.8.0" pretty-format "^24.8.0" jest-docblock@^24.3.0: version "24.3.0" resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-24.3.0.tgz#b9c32dac70f72e4464520d2ba4aec02ab14db5dd" integrity sha512-nlANmF9Yq1dufhFlKG9rasfQlrY7wINJbo3q01tu56Jv5eBU5jirylhF2O5ZBnLxzOVBGRDz/9NAwNyBtG4Nyg== dependencies: detect-newline "^2.1.0" jest-each@^24.8.0: version "24.8.0" resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-24.8.0.tgz#a05fd2bf94ddc0b1da66c6d13ec2457f35e52775" integrity sha512-NrwK9gaL5+XgrgoCsd9svsoWdVkK4gnvyhcpzd6m487tXHqIdYeykgq3MKI1u4I+5Zf0tofr70at9dWJDeb+BA== dependencies: "@jest/types" "^24.8.0" chalk "^2.0.1" jest-get-type "^24.8.0" jest-util "^24.8.0" pretty-format "^24.8.0" jest-environment-jsdom@^24.8.0: version "24.8.0" resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-24.8.0.tgz#300f6949a146cabe1c9357ad9e9ecf9f43f38857" integrity sha512-qbvgLmR7PpwjoFjM/sbuqHJt/NCkviuq9vus9NBn/76hhSidO+Z6Bn9tU8friecegbJL8gzZQEMZBQlFWDCwAQ== dependencies: "@jest/environment" "^24.8.0" "@jest/fake-timers" "^24.8.0" "@jest/types" "^24.8.0" jest-mock "^24.8.0" jest-util "^24.8.0" jsdom "^11.5.1" jest-environment-node@^24.8.0: version "24.8.0" resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-24.8.0.tgz#d3f726ba8bc53087a60e7a84ca08883a4c892231" integrity sha512-vIGUEScd1cdDgR6sqn2M08sJTRLQp6Dk/eIkCeO4PFHxZMOgy+uYLPMC4ix3PEfM5Au/x3uQ/5Tl0DpXXZsJ/Q== dependencies: "@jest/environment" "^24.8.0" "@jest/fake-timers" "^24.8.0" "@jest/types" "^24.8.0" jest-mock "^24.8.0" jest-util "^24.8.0" jest-get-type@^24.8.0: version "24.8.0" resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-24.8.0.tgz#a7440de30b651f5a70ea3ed7ff073a32dfe646fc" integrity sha512-RR4fo8jEmMD9zSz2nLbs2j0zvPpk/KCEz3a62jJWbd2ayNo0cb+KFRxPHVhE4ZmgGJEQp0fosmNz84IfqM8cMQ== jest-haste-map@^24.8.0: version "24.8.0" resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-24.8.0.tgz#51794182d877b3ddfd6e6d23920e3fe72f305800" integrity sha512-ZBPRGHdPt1rHajWelXdqygIDpJx8u3xOoLyUBWRW28r3tagrgoepPrzAozW7kW9HrQfhvmiv1tncsxqHJO1onQ== dependencies: "@jest/types" "^24.8.0" anymatch "^2.0.0" fb-watchman "^2.0.0" graceful-fs "^4.1.15" invariant "^2.2.4" jest-serializer "^24.4.0" jest-util "^24.8.0" jest-worker "^24.6.0" micromatch "^3.1.10" sane "^4.0.3" walker "^1.0.7" optionalDependencies: fsevents "^1.2.7" jest-jasmine2@^24.8.0: version "24.8.0" resolved "https://registry.yarnpkg.com/jest-jasmine2/-/jest-jasmine2-24.8.0.tgz#a9c7e14c83dd77d8b15e820549ce8987cc8cd898" integrity sha512-cEky88npEE5LKd5jPpTdDCLvKkdyklnaRycBXL6GNmpxe41F0WN44+i7lpQKa/hcbXaQ+rc9RMaM4dsebrYong== dependencies: "@babel/traverse" "^7.1.0" "@jest/environment" "^24.8.0" "@jest/test-result" "^24.8.0" "@jest/types" "^24.8.0" chalk "^2.0.1" co "^4.6.0" expect "^24.8.0" is-generator-fn "^2.0.0" jest-each "^24.8.0" jest-matcher-utils "^24.8.0" jest-message-util "^24.8.0" jest-runtime "^24.8.0" jest-snapshot "^24.8.0" jest-util "^24.8.0" pretty-format "^24.8.0" throat "^4.0.0" jest-leak-detector@^24.8.0: version "24.8.0" resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-24.8.0.tgz#c0086384e1f650c2d8348095df769f29b48e6980" integrity sha512-cG0yRSK8A831LN8lIHxI3AblB40uhv0z+SsQdW3GoMMVcK+sJwrIIyax5tu3eHHNJ8Fu6IMDpnLda2jhn2pD/g== dependencies: pretty-format "^24.8.0" jest-matcher-utils@^24.8.0: version "24.8.0" resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-24.8.0.tgz#2bce42204c9af12bde46f83dc839efe8be832495" integrity sha512-lex1yASY51FvUuHgm0GOVj7DCYEouWSlIYmCW7APSqB9v8mXmKSn5+sWVF0MhuASG0bnYY106/49JU1FZNl5hw== dependencies: chalk "^2.0.1" jest-diff "^24.8.0" jest-get-type "^24.8.0" pretty-format "^24.8.0" jest-message-util@^24.8.0: version "24.8.0" resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-24.8.0.tgz#0d6891e72a4beacc0292b638685df42e28d6218b" integrity sha512-p2k71rf/b6ns8btdB0uVdljWo9h0ovpnEe05ZKWceQGfXYr4KkzgKo3PBi8wdnd9OtNh46VpNIJynUn/3MKm1g== dependencies: "@babel/code-frame" "^7.0.0" "@jest/test-result" "^24.8.0" "@jest/types" "^24.8.0" "@types/stack-utils" "^1.0.1" chalk "^2.0.1" micromatch "^3.1.10" slash "^2.0.0" stack-utils "^1.0.1" jest-mock@^24.8.0: version "24.8.0" resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-24.8.0.tgz#2f9d14d37699e863f1febf4e4d5a33b7fdbbde56" integrity sha512-6kWugwjGjJw+ZkK4mDa0Df3sDlUTsV47MSrT0nGQ0RBWJbpODDQ8MHDVtGtUYBne3IwZUhtB7elxHspU79WH3A== dependencies: "@jest/types" "^24.8.0" jest-pnp-resolver@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/jest-pnp-resolver/-/jest-pnp-resolver-1.2.1.tgz#ecdae604c077a7fbc70defb6d517c3c1c898923a" integrity sha512-pgFw2tm54fzgYvc/OHrnysABEObZCUNFnhjoRjaVOCN8NYc032/gVjPaHD4Aq6ApkSieWtfKAFQtmDKAmhupnQ== jest-regex-util@^24.3.0: version "24.3.0" resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-24.3.0.tgz#d5a65f60be1ae3e310d5214a0307581995227b36" integrity sha512-tXQR1NEOyGlfylyEjg1ImtScwMq8Oh3iJbGTjN7p0J23EuVX1MA8rwU69K4sLbCmwzgCUbVkm0FkSF9TdzOhtg== jest-resolve-dependencies@^24.8.0: version "24.8.0" resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-24.8.0.tgz#19eec3241f2045d3f990dba331d0d7526acff8e0" integrity sha512-hyK1qfIf/krV+fSNyhyJeq3elVMhK9Eijlwy+j5jqmZ9QsxwKBiP6qukQxaHtK8k6zql/KYWwCTQ+fDGTIJauw== dependencies: "@jest/types" "^24.8.0" jest-regex-util "^24.3.0" jest-snapshot "^24.8.0" jest-resolve@^24.8.0: version "24.8.0" resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-24.8.0.tgz#84b8e5408c1f6a11539793e2b5feb1b6e722439f" integrity sha512-+hjSzi1PoRvnuOICoYd5V/KpIQmkAsfjFO71458hQ2Whi/yf1GDeBOFj8Gxw4LrApHsVJvn5fmjcPdmoUHaVKw== dependencies: "@jest/types" "^24.8.0" browser-resolve "^1.11.3" chalk "^2.0.1" jest-pnp-resolver "^1.2.1" realpath-native "^1.1.0" jest-runner@^24.8.0: version "24.8.0" resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-24.8.0.tgz#4f9ae07b767db27b740d7deffad0cf67ccb4c5bb" integrity sha512-utFqC5BaA3JmznbissSs95X1ZF+d+4WuOWwpM9+Ak356YtMhHE/GXUondZdcyAAOTBEsRGAgH/0TwLzfI9h7ow== dependencies: "@jest/console" "^24.7.1" "@jest/environment" "^24.8.0" "@jest/test-result" "^24.8.0" "@jest/types" "^24.8.0" chalk "^2.4.2" exit "^0.1.2" graceful-fs "^4.1.15" jest-config "^24.8.0" jest-docblock "^24.3.0" jest-haste-map "^24.8.0" jest-jasmine2 "^24.8.0" jest-leak-detector "^24.8.0" jest-message-util "^24.8.0" jest-resolve "^24.8.0" jest-runtime "^24.8.0" jest-util "^24.8.0" jest-worker "^24.6.0" source-map-support "^0.5.6" throat "^4.0.0" jest-runtime@^24.8.0: version "24.8.0" resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-24.8.0.tgz#05f94d5b05c21f6dc54e427cd2e4980923350620" integrity sha512-Mq0aIXhvO/3bX44ccT+czU1/57IgOMyy80oM0XR/nyD5zgBcesF84BPabZi39pJVA6UXw+fY2Q1N+4BiVUBWOA== dependencies: "@jest/console" "^24.7.1" "@jest/environment" "^24.8.0" "@jest/source-map" "^24.3.0" "@jest/transform" "^24.8.0" "@jest/types" "^24.8.0" "@types/yargs" "^12.0.2" chalk "^2.0.1" exit "^0.1.2" glob "^7.1.3" graceful-fs "^4.1.15" jest-config "^24.8.0" jest-haste-map "^24.8.0" jest-message-util "^24.8.0" jest-mock "^24.8.0" jest-regex-util "^24.3.0" jest-resolve "^24.8.0" jest-snapshot "^24.8.0" jest-util "^24.8.0" jest-validate "^24.8.0" realpath-native "^1.1.0" slash "^2.0.0" strip-bom "^3.0.0" yargs "^12.0.2" jest-serializer@^24.4.0: version "24.4.0" resolved "https://registry.yarnpkg.com/jest-serializer/-/jest-serializer-24.4.0.tgz#f70c5918c8ea9235ccb1276d232e459080588db3" integrity sha512-k//0DtglVstc1fv+GY/VHDIjrtNjdYvYjMlbLUed4kxrE92sIUewOi5Hj3vrpB8CXfkJntRPDRjCrCvUhBdL8Q== jest-snapshot@^24.8.0: version "24.8.0" resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-24.8.0.tgz#3bec6a59da2ff7bc7d097a853fb67f9d415cb7c6" integrity sha512-5ehtWoc8oU9/cAPe6fez6QofVJLBKyqkY2+TlKTOf0VllBB/mqUNdARdcjlZrs9F1Cv+/HKoCS/BknT0+tmfPg== dependencies: "@babel/types" "^7.0.0" "@jest/types" "^24.8.0" chalk "^2.0.1" expect "^24.8.0" jest-diff "^24.8.0" jest-matcher-utils "^24.8.0" jest-message-util "^24.8.0" jest-resolve "^24.8.0" mkdirp "^0.5.1" natural-compare "^1.4.0" pretty-format "^24.8.0" semver "^5.5.0" jest-util@^24.8.0: version "24.8.0" resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-24.8.0.tgz#41f0e945da11df44cc76d64ffb915d0716f46cd1" integrity sha512-DYZeE+XyAnbNt0BG1OQqKy/4GVLPtzwGx5tsnDrFcax36rVE3lTA5fbvgmbVPUZf9w77AJ8otqR4VBbfFJkUZA== dependencies: "@jest/console" "^24.7.1" "@jest/fake-timers" "^24.8.0" "@jest/source-map" "^24.3.0" "@jest/test-result" "^24.8.0" "@jest/types" "^24.8.0" callsites "^3.0.0" chalk "^2.0.1" graceful-fs "^4.1.15" is-ci "^2.0.0" mkdirp "^0.5.1" slash "^2.0.0" source-map "^0.6.0" jest-validate@^24.8.0: version "24.8.0" resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-24.8.0.tgz#624c41533e6dfe356ffadc6e2423a35c2d3b4849" integrity sha512-+/N7VOEMW1Vzsrk3UWBDYTExTPwf68tavEPKDnJzrC6UlHtUDU/fuEdXqFoHzv9XnQ+zW6X3qMZhJ3YexfeLDA== dependencies: "@jest/types" "^24.8.0" camelcase "^5.0.0" chalk "^2.0.1" jest-get-type "^24.8.0" leven "^2.1.0" pretty-format "^24.8.0" jest-watcher@^24.8.0: version "24.8.0" resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-24.8.0.tgz#58d49915ceddd2de85e238f6213cef1c93715de4" integrity sha512-SBjwHt5NedQoVu54M5GEx7cl7IGEFFznvd/HNT8ier7cCAx/Qgu9ZMlaTQkvK22G1YOpcWBLQPFSImmxdn3DAw== dependencies: "@jest/test-result" "^24.8.0" "@jest/types" "^24.8.0" "@types/yargs" "^12.0.9" ansi-escapes "^3.0.0" chalk "^2.0.1" jest-util "^24.8.0" string-length "^2.0.0" jest-worker@^24.6.0: version "24.6.0" resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-24.6.0.tgz#7f81ceae34b7cde0c9827a6980c35b7cdc0161b3" integrity sha512-jDwgW5W9qGNvpI1tNnvajh0a5IE/PuGLFmHk6aR/BZFz8tSgGw17GsDPXAJ6p91IvYDjOw8GpFbvvZGAK+DPQQ== dependencies: merge-stream "^1.0.1" supports-color "^6.1.0" jest@^24.8.0: version "24.8.0" resolved "https://registry.yarnpkg.com/jest/-/jest-24.8.0.tgz#d5dff1984d0d1002196e9b7f12f75af1b2809081" integrity sha512-o0HM90RKFRNWmAWvlyV8i5jGZ97pFwkeVoGvPW1EtLTgJc2+jcuqcbbqcSZLE/3f2S5pt0y2ZBETuhpWNl1Reg== dependencies: import-local "^2.0.0" jest-cli "^24.8.0" js-levenshtein@^1.1.3: version "1.1.6" resolved "https://registry.yarnpkg.com/js-levenshtein/-/js-levenshtein-1.1.6.tgz#c6cee58eb3550372df8deb85fad5ce66ce01d59d" integrity sha512-X2BB11YZtrRqY4EnQcLX5Rh373zbK4alC1FW7D7MBhL2gtcC17cTnr6DmfHZeS0s2rTHjUTMMHfG7gO8SSdw+g== "js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== js-yaml@^3.13.1: version "3.13.1" resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.13.1.tgz#aff151b30bfdfa8e49e05da22e7415e9dfa37847" integrity sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw== dependencies: argparse "^1.0.7" esprima "^4.0.0" jsbn@~0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" integrity sha1-peZUwuWi3rXyAdls77yoDA7y9RM= jsdom@^11.5.1: version "11.12.0" resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-11.12.0.tgz#1a80d40ddd378a1de59656e9e6dc5a3ba8657bc8" integrity sha512-y8Px43oyiBM13Zc1z780FrfNLJCXTL40EWlty/LXUtcjykRBNgLlCjWXpfSPBl2iv+N7koQN+dvqszHZgT/Fjw== dependencies: abab "^2.0.0" acorn "^5.5.3" acorn-globals "^4.1.0" array-equal "^1.0.0" cssom ">= 0.3.2 < 0.4.0" cssstyle "^1.0.0" data-urls "^1.0.0" domexception "^1.0.1" escodegen "^1.9.1" html-encoding-sniffer "^1.0.2" left-pad "^1.3.0" nwsapi "^2.0.7" parse5 "4.0.0" pn "^1.1.0" request "^2.87.0" request-promise-native "^1.0.5" sax "^1.2.4" symbol-tree "^3.2.2" tough-cookie "^2.3.4" w3c-hr-time "^1.0.1" webidl-conversions "^4.0.2" whatwg-encoding "^1.0.3" whatwg-mimetype "^2.1.0" whatwg-url "^6.4.1" ws "^5.2.0" xml-name-validator "^3.0.0" jsesc@^2.5.1: version "2.5.2" resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== jsesc@~0.5.0: version "0.5.0" resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" integrity sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0= json-parse-better-errors@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9" integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw== json-schema-traverse@^0.4.1: version "0.4.1" resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== json-schema@0.2.3: version "0.2.3" resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13" integrity sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM= json-stringify-safe@~5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" integrity sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus= json5@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/json5/-/json5-2.1.0.tgz#e7a0c62c48285c628d20a10b85c89bb807c32850" integrity sha512-8Mh9h6xViijj36g7Dxi+Y4S6hNGV96vcJZr/SrlHh1LR/pEn/8j/+qIBbs44YKl69Lrfctp4QD+AdWLTMqEZAQ== dependencies: minimist "^1.2.0" jsprim@^1.2.2: version "1.4.1" resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.1.tgz#313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2" integrity sha1-MT5mvB5cwG5Di8G3SZwuXFastqI= dependencies: assert-plus "1.0.0" extsprintf "1.3.0" json-schema "0.2.3" verror "1.10.0" kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0: version "3.2.2" resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" integrity sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ= dependencies: is-buffer "^1.1.5" kind-of@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-4.0.0.tgz#20813df3d712928b207378691a45066fae72dd57" integrity sha1-IIE989cSkosgc3hpGkUGb65y3Vc= dependencies: is-buffer "^1.1.5" kind-of@^5.0.0: version "5.1.0" resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-5.1.0.tgz#729c91e2d857b7a419a1f9aa65685c4c33f5845d" integrity sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw== kind-of@^6.0.0, kind-of@^6.0.2: version "6.0.2" resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.2.tgz#01146b36a6218e64e58f3a8d66de5d7fc6f6d051" integrity sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA== kleur@^3.0.2: version "3.0.3" resolved "https://registry.yarnpkg.com/kleur/-/kleur-3.0.3.tgz#a79c9ecc86ee1ce3fa6206d1216c501f147fc07e" integrity sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w== lcid@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/lcid/-/lcid-2.0.0.tgz#6ef5d2df60e52f82eb228a4c373e8d1f397253cf" integrity sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA== dependencies: invert-kv "^2.0.0" left-pad@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/left-pad/-/left-pad-1.3.0.tgz#5b8a3a7765dfe001261dde915589e782f8c94d1e" integrity sha512-XI5MPzVNApjAyhQzphX8BkmKsKUxD4LdyK24iZeQGinBN9yTQT3bFlCBy/aVx2HrNcqQGsdot8ghrjyrvMCoEA== leven@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/leven/-/leven-2.1.0.tgz#c2e7a9f772094dee9d34202ae8acce4687875580" integrity sha1-wuep93IJTe6dNCAq6KzORoeHVYA= levn@~0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" integrity sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4= dependencies: prelude-ls "~1.1.2" type-check "~0.3.2" load-json-file@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-4.0.0.tgz#2f5f45ab91e33216234fd53adab668eb4ec0993b" integrity sha1-L19Fq5HjMhYjT9U62rZo607AmTs= dependencies: graceful-fs "^4.1.2" parse-json "^4.0.0" pify "^3.0.0" strip-bom "^3.0.0" locate-path@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-3.0.0.tgz#dbec3b3ab759758071b58fe59fc41871af21400e" integrity sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A== dependencies: p-locate "^3.0.0" path-exists "^3.0.0" lodash.sortby@^4.7.0: version "4.7.0" resolved "https://registry.yarnpkg.com/lodash.sortby/-/lodash.sortby-4.7.0.tgz#edd14c824e2cc9c1e0b0a1b42bb5210516a42438" integrity sha1-7dFMgk4sycHgsKG0K7UhBRakJDg= lodash@^4.17.11: version "4.17.11" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.11.tgz#b39ea6229ef607ecd89e2c8df12536891cac9b8d" integrity sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg== loose-envify@^1.0.0: version "1.4.0" resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== dependencies: js-tokens "^3.0.0 || ^4.0.0" make-dir@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-2.1.0.tgz#5f0310e18b8be898cc07009295a30ae41e91e6f5" integrity sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA== dependencies: pify "^4.0.1" semver "^5.6.0" makeerror@1.0.x: version "1.0.11" resolved "https://registry.yarnpkg.com/makeerror/-/makeerror-1.0.11.tgz#e01a5c9109f2af79660e4e8b9587790184f5a96c" integrity sha1-4BpckQnyr3lmDk6LlYd5AYT1qWw= dependencies: tmpl "1.0.x" map-age-cleaner@^0.1.1: version "0.1.3" resolved "https://registry.yarnpkg.com/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz#7d583a7306434c055fe474b0f45078e6e1b4b92a" integrity sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w== dependencies: p-defer "^1.0.0" map-cache@^0.2.2: version "0.2.2" resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf" integrity sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8= map-visit@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/map-visit/-/map-visit-1.0.0.tgz#ecdca8f13144e660f1b5bd41f12f3479d98dfb8f" integrity sha1-7Nyo8TFE5mDxtb1B8S80edmN+48= dependencies: object-visit "^1.0.0" mem@^4.0.0: version "4.3.0" resolved "https://registry.yarnpkg.com/mem/-/mem-4.3.0.tgz#461af497bc4ae09608cdb2e60eefb69bff744178" integrity sha512-qX2bG48pTqYRVmDB37rn/6PT7LcR8T7oAX3bf99u1Tt1nzxYfxkgqDwUwolPlXweM0XzBOBFzSx4kfp7KP1s/w== dependencies: map-age-cleaner "^0.1.1" mimic-fn "^2.0.0" p-is-promise "^2.0.0" merge-stream@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-1.0.1.tgz#4041202d508a342ba00174008df0c251b8c135e1" integrity sha1-QEEgLVCKNCugAXQAjfDCUbjBNeE= dependencies: readable-stream "^2.0.1" micromatch@^3.1.10, micromatch@^3.1.4: version "3.1.10" resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23" integrity sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg== dependencies: arr-diff "^4.0.0" array-unique "^0.3.2" braces "^2.3.1" define-property "^2.0.2" extend-shallow "^3.0.2" extglob "^2.0.4" fragment-cache "^0.2.1" kind-of "^6.0.2" nanomatch "^1.2.9" object.pick "^1.3.0" regex-not "^1.0.0" snapdragon "^0.8.1" to-regex "^3.0.2" mime-db@1.40.0: version "1.40.0" resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.40.0.tgz#a65057e998db090f732a68f6c276d387d4126c32" integrity sha512-jYdeOMPy9vnxEqFRRo6ZvTZ8d9oPb+k18PKoYNYUe2stVEBPPwsln/qWzdbmaIvnhZ9v2P+CuecK+fpUfsV2mA== mime-types@^2.1.12, mime-types@~2.1.19: version "2.1.24" resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.24.tgz#b6f8d0b3e951efb77dedeca194cff6d16f676f81" integrity sha512-WaFHS3MCl5fapm3oLxU4eYDw77IQM2ACcxQ9RIxfaC3ooc6PFuBMGZZsYpvoXS5D5QTWPieo1jjLdAm3TBP3cQ== dependencies: mime-db "1.40.0" mimic-fn@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== minimatch@^3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== dependencies: brace-expansion "^1.1.7" minimist@0.0.8: version "0.0.8" resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" integrity sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0= minimist@^1.1.1, minimist@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" integrity sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ= minimist@~0.0.1: version "0.0.10" resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.10.tgz#de3f98543dbf96082be48ad1a0c7cda836301dcf" integrity sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8= minipass@^2.2.1, minipass@^2.3.4: version "2.3.5" resolved "https://registry.yarnpkg.com/minipass/-/minipass-2.3.5.tgz#cacebe492022497f656b0f0f51e2682a9ed2d848" integrity sha512-Gi1W4k059gyRbyVUZQ4mEqLm0YIUiGYfvxhF6SIlk3ui1WVxMTGfGdQ2SInh3PDrRTVvPKgULkpJtT4RH10+VA== dependencies: safe-buffer "^5.1.2" yallist "^3.0.0" minizlib@^1.1.1: version "1.2.1" resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-1.2.1.tgz#dd27ea6136243c7c880684e8672bb3a45fd9b614" integrity sha512-7+4oTUOWKg7AuL3vloEWekXY2/D20cevzsrNT2kGWm+39J9hGTCBv8VI5Pm5lXZ/o3/mdR4f8rflAPhnQb8mPA== dependencies: minipass "^2.2.1" mixin-deep@^1.2.0: version "1.3.1" resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.1.tgz#a49e7268dce1a0d9698e45326c5626df3543d0fe" integrity sha512-8ZItLHeEgaqEvd5lYBXfm4EZSFCX29Jb9K+lAHhDKzReKBQKj3R+7NOF6tjqYi9t4oI8VUfaWITJQm86wnXGNQ== dependencies: for-in "^1.0.2" is-extendable "^1.0.1" mkdirp@^0.5.0, mkdirp@^0.5.1: version "0.5.1" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" integrity sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM= dependencies: minimist "0.0.8" ms@2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= ms@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a" integrity sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg== nan@^2.12.1: version "2.13.2" resolved "https://registry.yarnpkg.com/nan/-/nan-2.13.2.tgz#f51dc7ae66ba7d5d55e1e6d4d8092e802c9aefe7" integrity sha512-TghvYc72wlMGMVMluVo9WRJc0mB8KxxF/gZ4YYFy7V2ZQX9l7rgbPg7vjS9mt6U5HXODVFVI2bOduCzwOMv/lw== nanomatch@^1.2.9: version "1.2.13" resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.13.tgz#b87a8aa4fc0de8fe6be88895b38983ff265bd119" integrity sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA== dependencies: arr-diff "^4.0.0" array-unique "^0.3.2" define-property "^2.0.2" extend-shallow "^3.0.2" fragment-cache "^0.2.1" is-windows "^1.0.2" kind-of "^6.0.2" object.pick "^1.3.0" regex-not "^1.0.0" snapdragon "^0.8.1" to-regex "^3.0.1" natural-compare@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc= needle@^2.2.1: version "2.4.0" resolved "https://registry.yarnpkg.com/needle/-/needle-2.4.0.tgz#6833e74975c444642590e15a750288c5f939b57c" integrity sha512-4Hnwzr3mi5L97hMYeNl8wRW/Onhy4nUKR/lVemJ8gJedxxUyBLm9kkrDColJvoSfwi0jCNhD+xCdOtiGDQiRZg== dependencies: debug "^3.2.6" iconv-lite "^0.4.4" sax "^1.2.4" neo-async@^2.6.0: version "2.6.1" resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.1.tgz#ac27ada66167fa8849a6addd837f6b189ad2081c" integrity sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw== nice-try@^1.0.4: version "1.0.5" resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366" integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ== node-fetch@^2.2.0: version "2.5.0" resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.5.0.tgz#8028c49fc1191bba56a07adc6e2a954644a48501" integrity sha512-YuZKluhWGJwCcUu4RlZstdAxr8bFfOVHakc1mplwHkk8J+tqM1Y5yraYvIUpeX8aY7+crCwiELJq7Vl0o0LWXw== node-int64@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b" integrity sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs= node-modules-regexp@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/node-modules-regexp/-/node-modules-regexp-1.0.0.tgz#8d9dbe28964a4ac5712e9131642107c71e90ec40" integrity sha1-jZ2+KJZKSsVxLpExZCEHxx6Q7EA= node-notifier@^5.2.1: version "5.4.0" resolved "https://registry.yarnpkg.com/node-notifier/-/node-notifier-5.4.0.tgz#7b455fdce9f7de0c63538297354f3db468426e6a" integrity sha512-SUDEb+o71XR5lXSTyivXd9J7fCloE3SyP4lSgt3lU2oSANiox+SxlNRGPjDKrwU1YN3ix2KN/VGGCg0t01rttQ== dependencies: growly "^1.3.0" is-wsl "^1.1.0" semver "^5.5.0" shellwords "^0.1.1" which "^1.3.0" node-pre-gyp@^0.12.0: version "0.12.0" resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.12.0.tgz#39ba4bb1439da030295f899e3b520b7785766149" integrity sha512-4KghwV8vH5k+g2ylT+sLTjy5wmUOb9vPhnM8NHvRf9dHmnW/CndrFXy2aRPaPST6dugXSdHXfeaHQm77PIz/1A== dependencies: detect-libc "^1.0.2" mkdirp "^0.5.1" needle "^2.2.1" nopt "^4.0.1" npm-packlist "^1.1.6" npmlog "^4.0.2" rc "^1.2.7" rimraf "^2.6.1" semver "^5.3.0" tar "^4" node-releases@^1.1.19: version "1.1.19" resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.19.tgz#c492d1e381fea0350b338b646c27867e88e91b3d" integrity sha512-SH/B4WwovHbulIALsQllAVwqZZD1kPmKCqrhGfR29dXjLAVZMHvBjD3S6nL9D/J9QkmZ1R92/0wCMDKXUUvyyA== dependencies: semver "^5.3.0" nopt@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/nopt/-/nopt-4.0.1.tgz#d0d4685afd5415193c8c7505602d0d17cd64474d" integrity sha1-0NRoWv1UFRk8jHUFYC0NF81kR00= dependencies: abbrev "1" osenv "^0.1.4" normalize-package-data@^2.3.2: version "2.5.0" resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8" integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA== dependencies: hosted-git-info "^2.1.4" resolve "^1.10.0" semver "2 || 3 || 4 || 5" validate-npm-package-license "^3.0.1" normalize-path@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" integrity sha1-GrKLVW4Zg2Oowab35vogE3/mrtk= dependencies: remove-trailing-separator "^1.0.1" npm-bundled@^1.0.1: version "1.0.6" resolved "https://registry.yarnpkg.com/npm-bundled/-/npm-bundled-1.0.6.tgz#e7ba9aadcef962bb61248f91721cd932b3fe6bdd" integrity sha512-8/JCaftHwbd//k6y2rEWp6k1wxVfpFzB6t1p825+cUb7Ym2XQfhwIC5KwhrvzZRJu+LtDE585zVaS32+CGtf0g== npm-packlist@^1.1.6: version "1.4.1" resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-1.4.1.tgz#19064cdf988da80ea3cee45533879d90192bbfbc" integrity sha512-+TcdO7HJJ8peiiYhvPxsEDhF3PJFGUGRcFsGve3vxvxdcpO2Z4Z7rkosRM0kWj6LfbK/P0gu3dzk5RU1ffvFcw== dependencies: ignore-walk "^3.0.1" npm-bundled "^1.0.1" npm-run-path@^2.0.0: version "2.0.2" resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f" integrity sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8= dependencies: path-key "^2.0.0" npmlog@^4.0.2: version "4.1.2" resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b" integrity sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg== dependencies: are-we-there-yet "~1.1.2" console-control-strings "~1.1.0" gauge "~2.7.3" set-blocking "~2.0.0" number-is-nan@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" integrity sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0= nwsapi@^2.0.7: version "2.1.4" resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.1.4.tgz#e006a878db23636f8e8a67d33ca0e4edf61a842f" integrity sha512-iGfd9Y6SFdTNldEy2L0GUhcarIutFmk+MPWIn9dmj8NMIup03G08uUF2KGbbmv/Ux4RT0VZJoP/sVbWA6d/VIw== oauth-sign@~0.9.0: version "0.9.0" resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455" integrity sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ== object-assign@^4.1.0: version "4.1.1" resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= object-copy@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/object-copy/-/object-copy-0.1.0.tgz#7e7d858b781bd7c991a41ba975ed3812754e998c" integrity sha1-fn2Fi3gb18mRpBupde04EnVOmYw= dependencies: copy-descriptor "^0.1.0" define-property "^0.2.5" kind-of "^3.0.3" object-keys@^1.0.12: version "1.1.1" resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== object-visit@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/object-visit/-/object-visit-1.0.1.tgz#f79c4493af0c5377b59fe39d395e41042dd045bb" integrity sha1-95xEk68MU3e1n+OdOV5BBC3QRbs= dependencies: isobject "^3.0.0" object.getownpropertydescriptors@^2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.0.3.tgz#8758c846f5b407adab0f236e0986f14b051caa16" integrity sha1-h1jIRvW0B62rDyNuCYbxSwUcqhY= dependencies: define-properties "^1.1.2" es-abstract "^1.5.1" object.pick@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747" integrity sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c= dependencies: isobject "^3.0.1" once@^1.3.0, once@^1.3.1, once@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= dependencies: wrappy "1" optimist@^0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/optimist/-/optimist-0.6.1.tgz#da3ea74686fa21a19a111c326e90eb15a0196686" integrity sha1-2j6nRob6IaGaERwybpDrFaAZZoY= dependencies: minimist "~0.0.1" wordwrap "~0.0.2" optionator@^0.8.1: version "0.8.2" resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.2.tgz#364c5e409d3f4d6301d6c0b4c05bba50180aeb64" integrity sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q= dependencies: deep-is "~0.1.3" fast-levenshtein "~2.0.4" levn "~0.3.0" prelude-ls "~1.1.2" type-check "~0.3.2" wordwrap "~1.0.0" os-homedir@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" integrity sha1-/7xJiDNuDoM94MFox+8VISGqf7M= os-locale@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-3.1.0.tgz#a802a6ee17f24c10483ab9935719cef4ed16bf1a" integrity sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q== dependencies: execa "^1.0.0" lcid "^2.0.0" mem "^4.0.0" os-tmpdir@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ= osenv@^0.1.4: version "0.1.5" resolved "https://registry.yarnpkg.com/osenv/-/osenv-0.1.5.tgz#85cdfafaeb28e8677f416e287592b5f3f49ea410" integrity sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g== dependencies: os-homedir "^1.0.0" os-tmpdir "^1.0.0" p-defer@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/p-defer/-/p-defer-1.0.0.tgz#9f6eb182f6c9aa8cd743004a7d4f96b196b0fb0c" integrity sha1-n26xgvbJqozXQwBKfU+WsZaw+ww= p-each-series@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/p-each-series/-/p-each-series-1.0.0.tgz#930f3d12dd1f50e7434457a22cd6f04ac6ad7f71" integrity sha1-kw89Et0fUOdDRFeiLNbwSsatf3E= dependencies: p-reduce "^1.0.0" p-finally@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" integrity sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4= p-is-promise@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/p-is-promise/-/p-is-promise-2.1.0.tgz#918cebaea248a62cf7ffab8e3bca8c5f882fc42e" integrity sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg== p-limit@^2.0.0: version "2.2.0" resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.2.0.tgz#417c9941e6027a9abcba5092dd2904e255b5fbc2" integrity sha512-pZbTJpoUsCzV48Mc9Nh51VbwO0X9cuPFE8gYwx9BTCt9SF8/b7Zljd2fVgOxhIF/HDTKgpVzs+GPhyKfjLLFRQ== dependencies: p-try "^2.0.0" p-locate@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-3.0.0.tgz#322d69a05c0264b25997d9f40cd8a891ab0064a4" integrity sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ== dependencies: p-limit "^2.0.0" p-reduce@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/p-reduce/-/p-reduce-1.0.0.tgz#18c2b0dd936a4690a529f8231f58a0fdb6a47dfa" integrity sha1-GMKw3ZNqRpClKfgjH1ig/bakffo= p-try@^2.0.0: version "2.2.0" resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== parse-json@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-4.0.0.tgz#be35f5425be1f7f6c747184f98a788cb99477ee0" integrity sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA= dependencies: error-ex "^1.3.1" json-parse-better-errors "^1.0.1" parse5@4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/parse5/-/parse5-4.0.0.tgz#6d78656e3da8d78b4ec0b906f7c08ef1dfe3f608" integrity sha512-VrZ7eOd3T1Fk4XWNXMgiGBK/z0MG48BWG2uQNU4I72fkQuKUTZpl+u9k+CxEG0twMVzSmXEEz12z5Fnw1jIQFA== pascalcase@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14" integrity sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ= path-exists@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" integrity sha1-zg6+ql94yxiSXqfYENe1mwEP1RU= path-is-absolute@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= path-key@^2.0.0, path-key@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" integrity sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A= path-parse@^1.0.6: version "1.0.6" resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c" integrity sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw== path-type@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/path-type/-/path-type-3.0.0.tgz#cef31dc8e0a1a3bb0d105c0cd97cf3bf47f4e36f" integrity sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg== dependencies: pify "^3.0.0" performance-now@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" integrity sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns= pify@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176" integrity sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY= pify@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/pify/-/pify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231" integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g== pirates@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.1.tgz#643a92caf894566f91b2b986d2c66950a8e2fb87" integrity sha512-WuNqLTbMI3tmfef2TKxlQmAiLHKtFhlsCZnPIpuv2Ow0RDVO8lfy1Opf4NUzlMXLjPl+Men7AuVdX6TA+s+uGA== dependencies: node-modules-regexp "^1.0.0" pkg-dir@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-3.0.0.tgz#2749020f239ed990881b1f71210d51eb6523bea3" integrity sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw== dependencies: find-up "^3.0.0" pn@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/pn/-/pn-1.1.0.tgz#e2f4cef0e219f463c179ab37463e4e1ecdccbafb" integrity sha512-2qHaIQr2VLRFoxe2nASzsV6ef4yOOH+Fi9FBOVH6cqeSgUnoyySPZkxzLuzd+RYOQTRpROA0ztTMqxROKSb/nA== posix-character-classes@^0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab" integrity sha1-AerA/jta9xoqbAL+q7jB/vfgDqs= prelude-ls@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" integrity sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ= prettier@^1.17.1: version "1.17.1" resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.17.1.tgz#ed64b4e93e370cb8a25b9ef7fef3e4fd1c0995db" integrity sha512-TzGRNvuUSmPgwivDqkZ9tM/qTGW9hqDKWOE9YHiyQdixlKbv7kvEqsmDPrcHJTKwthU774TQwZXVtaQ/mMsvjg== pretty-format@^24.8.0: version "24.8.0" resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-24.8.0.tgz#8dae7044f58db7cb8be245383b565a963e3c27f2" integrity sha512-P952T7dkrDEplsR+TuY7q3VXDae5Sr7zmQb12JU/NDQa/3CH7/QW0yvqLcGN6jL+zQFKaoJcPc+yJxMTGmosqw== dependencies: "@jest/types" "^24.8.0" ansi-regex "^4.0.0" ansi-styles "^3.2.0" react-is "^16.8.4" private@^0.1.6: version "0.1.8" resolved "https://registry.yarnpkg.com/private/-/private-0.1.8.tgz#2381edb3689f7a53d653190060fcf822d2f368ff" integrity sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg== process-nextick-args@~2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.0.tgz#a37d732f4271b4ab1ad070d35508e8290788ffaa" integrity sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw== prompts@^2.0.1: version "2.0.4" resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.0.4.tgz#179f9d4db3128b9933aa35f93a800d8fce76a682" integrity sha512-HTzM3UWp/99A0gk51gAegwo1QRYA7xjcZufMNe33rCclFszUYAuHe1fIN/3ZmiHeGPkUsNaRyQm1hHOfM0PKxA== dependencies: kleur "^3.0.2" sisteransi "^1.0.0" psl@^1.1.24, psl@^1.1.28: version "1.1.31" resolved "https://registry.yarnpkg.com/psl/-/psl-1.1.31.tgz#e9aa86d0101b5b105cbe93ac6b784cd547276184" integrity sha512-/6pt4+C+T+wZUieKR620OpzN/LlnNKuWjy1iFLQ/UG35JqHlR/89MP1d96dUfkf6Dne3TuLQzOYEYshJ+Hx8mw== pump@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww== dependencies: end-of-stream "^1.1.0" once "^1.3.1" punycode@^1.4.1: version "1.4.1" resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" integrity sha1-wNWmOycYgArY4esPpSachN1BhF4= punycode@^2.1.0, punycode@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== qs@~6.5.2: version "6.5.2" resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36" integrity sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA== rc@^1.2.7: version "1.2.8" resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed" integrity sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw== dependencies: deep-extend "^0.6.0" ini "~1.3.0" minimist "^1.2.0" strip-json-comments "~2.0.1" react-is@^16.8.4: version "16.8.6" resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.8.6.tgz#5bbc1e2d29141c9fbdfed456343fe2bc430a6a16" integrity sha512-aUk3bHfZ2bRSVFFbbeVS4i+lNPZr3/WM5jT2J5omUVV1zzcs1nAaf3l51ctA5FFvCRbhrH0bdAsRRQddFJZPtA== read-pkg-up@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-4.0.0.tgz#1b221c6088ba7799601c808f91161c66e58f8978" integrity sha512-6etQSH7nJGsK0RbG/2TeDzZFa8shjQ1um+SwQQ5cwKy0dhSXdOncEhb1CPpvQG4h7FyOV6EB6YlV0yJvZQNAkA== dependencies: find-up "^3.0.0" read-pkg "^3.0.0" read-pkg@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-3.0.0.tgz#9cbc686978fee65d16c00e2b19c237fcf6e38389" integrity sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k= dependencies: load-json-file "^4.0.0" normalize-package-data "^2.3.2" path-type "^3.0.0" readable-stream@^2.0.1, readable-stream@^2.0.6: version "2.3.6" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.6.tgz#b11c27d88b8ff1fbe070643cf94b0c79ae1b0aaf" integrity sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw== dependencies: core-util-is "~1.0.0" inherits "~2.0.3" isarray "~1.0.0" process-nextick-args "~2.0.0" safe-buffer "~5.1.1" string_decoder "~1.1.1" util-deprecate "~1.0.1" realpath-native@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/realpath-native/-/realpath-native-1.1.0.tgz#2003294fea23fb0672f2476ebe22fcf498a2d65c" integrity sha512-wlgPA6cCIIg9gKz0fgAPjnzh4yR/LnXovwuo9hvyGvx3h8nX4+/iLZplfUWasXpqD8BdnGnP5njOFjkUwPzvjA== dependencies: util.promisify "^1.0.0" regenerate-unicode-properties@^8.0.2: version "8.1.0" resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-8.1.0.tgz#ef51e0f0ea4ad424b77bf7cb41f3e015c70a3f0e" integrity sha512-LGZzkgtLY79GeXLm8Dp0BVLdQlWICzBnJz/ipWUgo59qBaZ+BHtq51P2q1uVZlppMuUAT37SDk39qUbjTWB7bA== dependencies: regenerate "^1.4.0" regenerate@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.0.tgz#4a856ec4b56e4077c557589cae85e7a4c8869a11" integrity sha512-1G6jJVDWrt0rK99kBjvEtziZNCICAuvIPkSiUFIQxVP06RCVpq3dmDo2oi6ABpYaDYaTRr67BEhL8r1wgEZZKg== regenerator-transform@^0.13.4: version "0.13.4" resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.13.4.tgz#18f6763cf1382c69c36df76c6ce122cc694284fb" integrity sha512-T0QMBjK3J0MtxjPmdIMXm72Wvj2Abb0Bd4HADdfijwMdoIsyQZ6fWC7kDFhk2YinBBEMZDL7Y7wh0J1sGx3S4A== dependencies: private "^0.1.6" regex-not@^1.0.0, regex-not@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/regex-not/-/regex-not-1.0.2.tgz#1f4ece27e00b0b65e0247a6810e6a85d83a5752c" integrity sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A== dependencies: extend-shallow "^3.0.2" safe-regex "^1.1.0" regexp-tree@^0.1.0: version "0.1.6" resolved "https://registry.yarnpkg.com/regexp-tree/-/regexp-tree-0.1.6.tgz#84900fa12fdf428a2ac25f04300382a7c0148479" integrity sha512-LFrA98Dw/heXqDojz7qKFdygZmFoiVlvE1Zp7Cq2cvF+ZA+03Gmhy0k0PQlsC1jvHPiTUSs+pDHEuSWv6+6D7w== regexpu-core@^4.5.4: version "4.5.4" resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-4.5.4.tgz#080d9d02289aa87fe1667a4f5136bc98a6aebaae" integrity sha512-BtizvGtFQKGPUcTy56o3nk1bGRp4SZOTYrDtGNlqCQufptV5IkkLN6Emw+yunAJjzf+C9FQFtvq7IoA3+oMYHQ== dependencies: regenerate "^1.4.0" regenerate-unicode-properties "^8.0.2" regjsgen "^0.5.0" regjsparser "^0.6.0" unicode-match-property-ecmascript "^1.0.4" unicode-match-property-value-ecmascript "^1.1.0" regjsgen@^0.5.0: version "0.5.0" resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.5.0.tgz#a7634dc08f89209c2049adda3525711fb97265dd" integrity sha512-RnIrLhrXCX5ow/E5/Mh2O4e/oa1/jW0eaBKTSy3LaCj+M3Bqvm97GWDp2yUtzIs4LEn65zR2yiYGFqb2ApnzDA== regjsparser@^0.6.0: version "0.6.0" resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.6.0.tgz#f1e6ae8b7da2bae96c99399b868cd6c933a2ba9c" integrity sha512-RQ7YyokLiQBomUJuUG8iGVvkgOLxwyZM8k6d3q5SAXpg4r5TZJZigKFvC6PpD+qQ98bCDC5YelPeA3EucDoNeQ== dependencies: jsesc "~0.5.0" remove-trailing-separator@^1.0.1: version "1.1.0" resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef" integrity sha1-wkvOKig62tW8P1jg1IJJuSN52O8= repeat-element@^1.1.2: version "1.1.3" resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.3.tgz#782e0d825c0c5a3bb39731f84efee6b742e6b1ce" integrity sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g== repeat-string@^1.6.1: version "1.6.1" resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" integrity sha1-jcrkcOHIirwtYA//Sndihtp15jc= request-promise-core@1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/request-promise-core/-/request-promise-core-1.1.2.tgz#339f6aababcafdb31c799ff158700336301d3346" integrity sha512-UHYyq1MO8GsefGEt7EprS8UrXsm1TxEvFUX1IMTuSLU2Rh7fTIdFtl8xD7JiEYiWU2dl+NYAjCTksTehQUxPag== dependencies: lodash "^4.17.11" request-promise-native@^1.0.5: version "1.0.7" resolved "https://registry.yarnpkg.com/request-promise-native/-/request-promise-native-1.0.7.tgz#a49868a624bdea5069f1251d0a836e0d89aa2c59" integrity sha512-rIMnbBdgNViL37nZ1b3L/VfPOpSi0TqVDQPAvO6U14lMzOLrt5nilxCQqtDKhZeDiW0/hkCXGoQjhgJd/tCh6w== dependencies: request-promise-core "1.1.2" stealthy-require "^1.1.1" tough-cookie "^2.3.3" request@^2.87.0: version "2.88.0" resolved "https://registry.yarnpkg.com/request/-/request-2.88.0.tgz#9c2fca4f7d35b592efe57c7f0a55e81052124fef" integrity sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg== dependencies: aws-sign2 "~0.7.0" aws4 "^1.8.0" caseless "~0.12.0" combined-stream "~1.0.6" extend "~3.0.2" forever-agent "~0.6.1" form-data "~2.3.2" har-validator "~5.1.0" http-signature "~1.2.0" is-typedarray "~1.0.0" isstream "~0.1.2" json-stringify-safe "~5.0.1" mime-types "~2.1.19" oauth-sign "~0.9.0" performance-now "^2.1.0" qs "~6.5.2" safe-buffer "^5.1.2" tough-cookie "~2.4.3" tunnel-agent "^0.6.0" uuid "^3.3.2" require-directory@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I= require-main-filename@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-1.0.1.tgz#97f717b69d48784f5f526a6c5aa8ffdda055a4d1" integrity sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE= require-main-filename@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b" integrity sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg== resolve-cwd@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-2.0.0.tgz#00a9f7387556e27038eae232caa372a6a59b665a" integrity sha1-AKn3OHVW4nA46uIyyqNypqWbZlo= dependencies: resolve-from "^3.0.0" resolve-from@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-3.0.0.tgz#b22c7af7d9d6881bc8b6e653335eebcb0a188748" integrity sha1-six699nWiBvItuZTM17rywoYh0g= resolve-url@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo= resolve@1.1.7: version "1.1.7" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b" integrity sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs= resolve@^1.10.0, resolve@^1.3.2: version "1.10.1" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.10.1.tgz#664842ac960795bbe758221cdccda61fb64b5f18" integrity sha512-KuIe4mf++td/eFb6wkaPbMDnP6kObCaEtIDuHOUED6MNUo4K670KZUHuuvYPZDxNF0WVLw49n06M2m2dXphEzA== dependencies: path-parse "^1.0.6" ret@~0.1.10: version "0.1.15" resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg== rimraf@^2.5.4, rimraf@^2.6.1, rimraf@^2.6.3: version "2.6.3" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.3.tgz#b2d104fe0d8fb27cf9e0a1cda8262dd3833c6cab" integrity sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA== dependencies: glob "^7.1.3" rsvp@^4.8.4: version "4.8.4" resolved "https://registry.yarnpkg.com/rsvp/-/rsvp-4.8.4.tgz#b50e6b34583f3dd89329a2f23a8a2be072845911" integrity sha512-6FomvYPfs+Jy9TfXmBpBuMWNH94SgCsZmJKcanySzgNNP6LjWxBvyLTa9KaMfDDM5oxRfrKDB0r/qeRsLwnBfA== safe-buffer@^5.0.1, safe-buffer@^5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: version "5.1.2" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== safe-regex@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e" integrity sha1-QKNmnzsHfR6UPURinhV91IAjvy4= dependencies: ret "~0.1.10" "safer-buffer@>= 2.1.2 < 3", safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0: version "2.1.2" resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== sane@^4.0.3: version "4.1.0" resolved "https://registry.yarnpkg.com/sane/-/sane-4.1.0.tgz#ed881fd922733a6c461bc189dc2b6c006f3ffded" integrity sha512-hhbzAgTIX8O7SHfp2c8/kREfEn4qO/9q8C9beyY6+tvZ87EpoZ3i1RIEvp27YBswnNbY9mWd6paKVmKbAgLfZA== dependencies: "@cnakazawa/watch" "^1.0.3" anymatch "^2.0.0" capture-exit "^2.0.0" exec-sh "^0.3.2" execa "^1.0.0" fb-watchman "^2.0.0" micromatch "^3.1.4" minimist "^1.1.1" walker "~1.0.5" sax@^1.2.4: version "1.2.4" resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== "semver@2 || 3 || 4 || 5", semver@^5.3.0, semver@^5.4.1, semver@^5.5.0, semver@^5.6.0: version "5.7.0" resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.0.tgz#790a7cf6fea5459bac96110b29b60412dc8ff96b" integrity sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA== semver@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/semver/-/semver-6.0.0.tgz#05e359ee571e5ad7ed641a6eec1e547ba52dea65" integrity sha512-0UewU+9rFapKFnlbirLi3byoOuhrSsli/z/ihNnvM24vgF+8sNBiI1LZPBSH9wJKUwaUbw+s3hToDLCXkrghrQ== set-blocking@^2.0.0, set-blocking@~2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc= set-value@^0.4.3: version "0.4.3" resolved "https://registry.yarnpkg.com/set-value/-/set-value-0.4.3.tgz#7db08f9d3d22dc7f78e53af3c3bf4666ecdfccf1" integrity sha1-fbCPnT0i3H945Trzw79GZuzfzPE= dependencies: extend-shallow "^2.0.1" is-extendable "^0.1.1" is-plain-object "^2.0.1" to-object-path "^0.3.0" set-value@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/set-value/-/set-value-2.0.0.tgz#71ae4a88f0feefbbf52d1ea604f3fb315ebb6274" integrity sha512-hw0yxk9GT/Hr5yJEYnHNKYXkIA8mVJgd9ditYZCe16ZczcaELYYcfvaXesNACk2O8O0nTiPQcQhGUQj8JLzeeg== dependencies: extend-shallow "^2.0.1" is-extendable "^0.1.1" is-plain-object "^2.0.3" split-string "^3.0.1" shebang-command@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" integrity sha1-RKrGW2lbAzmJaMOfNj/uXer98eo= dependencies: shebang-regex "^1.0.0" shebang-regex@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" integrity sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM= shellwords@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/shellwords/-/shellwords-0.1.1.tgz#d6b9181c1a48d397324c84871efbcfc73fc0654b" integrity sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww== signal-exit@^3.0.0, signal-exit@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" integrity sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0= sisteransi@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-1.0.0.tgz#77d9622ff909080f1c19e5f4a1df0c1b0a27b88c" integrity sha512-N+z4pHB4AmUv0SjveWRd6q1Nj5w62m5jodv+GD8lvmbY/83T/rpbJGZOnK5T149OldDj4Db07BSv9xY4K6NTPQ== slash@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/slash/-/slash-2.0.0.tgz#de552851a1759df3a8f206535442f5ec4ddeab44" integrity sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A== snapdragon-node@^2.0.1: version "2.1.1" resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b" integrity sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw== dependencies: define-property "^1.0.0" isobject "^3.0.0" snapdragon-util "^3.0.1" snapdragon-util@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/snapdragon-util/-/snapdragon-util-3.0.1.tgz#f956479486f2acd79700693f6f7b805e45ab56e2" integrity sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ== dependencies: kind-of "^3.2.0" snapdragon@^0.8.1: version "0.8.2" resolved "https://registry.yarnpkg.com/snapdragon/-/snapdragon-0.8.2.tgz#64922e7c565b0e14204ba1aa7d6964278d25182d" integrity sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg== dependencies: base "^0.11.1" debug "^2.2.0" define-property "^0.2.5" extend-shallow "^2.0.1" map-cache "^0.2.2" source-map "^0.5.6" source-map-resolve "^0.5.0" use "^3.1.0" source-map-resolve@^0.5.0: version "0.5.2" resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.2.tgz#72e2cc34095543e43b2c62b2c4c10d4a9054f259" integrity sha512-MjqsvNwyz1s0k81Goz/9vRBe9SZdB09Bdw+/zYyO+3CuPk6fouTaxscHkgtE8jKvf01kVfl8riHzERQ/kefaSA== dependencies: atob "^2.1.1" decode-uri-component "^0.2.0" resolve-url "^0.2.1" source-map-url "^0.4.0" urix "^0.1.0" source-map-support@^0.5.6: version "0.5.12" resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.12.tgz#b4f3b10d51857a5af0138d3ce8003b201613d599" integrity sha512-4h2Pbvyy15EE02G+JOZpUCmqWJuqrs+sEkzewTm++BPi7Hvn/HwcqLAcNxYAyI0x13CpPPn+kMjl+hplXMHITQ== dependencies: buffer-from "^1.0.0" source-map "^0.6.0" source-map-url@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.0.tgz#3e935d7ddd73631b97659956d55128e87b5084a3" integrity sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM= source-map@^0.5.0, source-map@^0.5.6: version "0.5.7" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== spdx-correct@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.1.0.tgz#fb83e504445268f154b074e218c87c003cd31df4" integrity sha512-lr2EZCctC2BNR7j7WzJ2FpDznxky1sjfxvvYEyzxNyb6lZXHODmEoJeFu4JupYlkfha1KZpJyoqiJ7pgA1qq8Q== dependencies: spdx-expression-parse "^3.0.0" spdx-license-ids "^3.0.0" spdx-exceptions@^2.1.0: version "2.2.0" resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz#2ea450aee74f2a89bfb94519c07fcd6f41322977" integrity sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA== spdx-expression-parse@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz#99e119b7a5da00e05491c9fa338b7904823b41d0" integrity sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg== dependencies: spdx-exceptions "^2.1.0" spdx-license-ids "^3.0.0" spdx-license-ids@^3.0.0: version "3.0.4" resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.4.tgz#75ecd1a88de8c184ef015eafb51b5b48bfd11bb1" integrity sha512-7j8LYJLeY/Yb6ACbQ7F76qy5jHkp0U6jgBfJsk97bwWlVUnUWsAgpyaCvo17h0/RQGnQ036tVDomiwoI4pDkQA== split-string@^3.0.1, split-string@^3.0.2: version "3.1.0" resolved "https://registry.yarnpkg.com/split-string/-/split-string-3.1.0.tgz#7cb09dda3a86585705c64b39a6466038682e8fe2" integrity sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw== dependencies: extend-shallow "^3.0.0" sprintf-js@~1.0.2: version "1.0.3" resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw= sshpk@^1.7.0: version "1.16.1" resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.16.1.tgz#fb661c0bef29b39db40769ee39fa70093d6f6877" integrity sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg== dependencies: asn1 "~0.2.3" assert-plus "^1.0.0" bcrypt-pbkdf "^1.0.0" dashdash "^1.12.0" ecc-jsbn "~0.1.1" getpass "^0.1.1" jsbn "~0.1.0" safer-buffer "^2.0.2" tweetnacl "~0.14.0" stack-utils@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-1.0.2.tgz#33eba3897788558bebfc2db059dc158ec36cebb8" integrity sha512-MTX+MeG5U994cazkjd/9KNAapsHnibjMLnfXodlkXw76JEea0UiNzrqidzo1emMwk7w5Qhc9jd4Bn9TBb1MFwA== static-extend@^0.1.1: version "0.1.2" resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6" integrity sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY= dependencies: define-property "^0.2.5" object-copy "^0.1.0" stealthy-require@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/stealthy-require/-/stealthy-require-1.1.1.tgz#35b09875b4ff49f26a777e509b3090a3226bf24b" integrity sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks= string-length@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/string-length/-/string-length-2.0.0.tgz#d40dbb686a3ace960c1cffca562bf2c45f8363ed" integrity sha1-1A27aGo6zpYMHP/KVivyxF+DY+0= dependencies: astral-regex "^1.0.0" strip-ansi "^4.0.0" string-width@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" integrity sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M= dependencies: code-point-at "^1.0.0" is-fullwidth-code-point "^1.0.0" strip-ansi "^3.0.0" "string-width@^1.0.2 || 2", string-width@^2.0.0, string-width@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw== dependencies: is-fullwidth-code-point "^2.0.0" strip-ansi "^4.0.0" string_decoder@~1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== dependencies: safe-buffer "~5.1.0" strip-ansi@^3.0.0, strip-ansi@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" integrity sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8= dependencies: ansi-regex "^2.0.0" strip-ansi@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f" integrity sha1-qEeQIusaw2iocTibY1JixQXuNo8= dependencies: ansi-regex "^3.0.0" strip-ansi@^5.0.0: version "5.2.0" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae" integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA== dependencies: ansi-regex "^4.1.0" strip-bom@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" integrity sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM= strip-eof@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf" integrity sha1-u0P/VZim6wXYm1n80SnJgzE2Br8= strip-json-comments@~2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo= supports-color@^5.3.0: version "5.5.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== dependencies: has-flag "^3.0.0" supports-color@^6.1.0: version "6.1.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-6.1.0.tgz#0764abc69c63d5ac842dd4867e8d025e880df8f3" integrity sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ== dependencies: has-flag "^3.0.0" symbol-tree@^3.2.2: version "3.2.2" resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.2.tgz#ae27db38f660a7ae2e1c3b7d1bc290819b8519e6" integrity sha1-rifbOPZgp64uHDt9G8KQgZuFGeY= tar@^4: version "4.4.8" resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.8.tgz#b19eec3fde2a96e64666df9fdb40c5ca1bc3747d" integrity sha512-LzHF64s5chPQQS0IYBn9IN5h3i98c12bo4NCO7e0sGM2llXQ3p2FGC5sdENN4cTW48O915Sh+x+EXx7XW96xYQ== dependencies: chownr "^1.1.1" fs-minipass "^1.2.5" minipass "^2.3.4" minizlib "^1.1.1" mkdirp "^0.5.0" safe-buffer "^5.1.2" yallist "^3.0.2" teeny-request@^3.11.3: version "3.11.3" resolved "https://registry.yarnpkg.com/teeny-request/-/teeny-request-3.11.3.tgz#335c629f7645e5d6599362df2f3230c4cbc23a55" integrity sha512-CKncqSF7sH6p4rzCgkb/z/Pcos5efl0DmolzvlqRQUNcpRIruOhY9+T1FsIlyEbfWd7MsFpodROOwHYh2BaXzw== dependencies: https-proxy-agent "^2.2.1" node-fetch "^2.2.0" uuid "^3.3.2" test-exclude@^5.2.3: version "5.2.3" resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-5.2.3.tgz#c3d3e1e311eb7ee405e092dac10aefd09091eac0" integrity sha512-M+oxtseCFO3EDtAaGH7iiej3CBkzXqFMbzqYAACdzKui4eZA+pq3tZEwChvOdNfa7xxy8BfbmgJSIr43cC/+2g== dependencies: glob "^7.1.3" minimatch "^3.0.4" read-pkg-up "^4.0.0" require-main-filename "^2.0.0" throat@^4.0.0: version "4.1.0" resolved "https://registry.yarnpkg.com/throat/-/throat-4.1.0.tgz#89037cbc92c56ab18926e6ba4cbb200e15672a6a" integrity sha1-iQN8vJLFarGJJua6TLsgDhVnKmo= tmpl@1.0.x: version "1.0.4" resolved "https://registry.yarnpkg.com/tmpl/-/tmpl-1.0.4.tgz#23640dd7b42d00433911140820e5cf440e521dd1" integrity sha1-I2QN17QtAEM5ERQIIOXPRA5SHdE= to-fast-properties@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" integrity sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4= to-object-path@^0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/to-object-path/-/to-object-path-0.3.0.tgz#297588b7b0e7e0ac08e04e672f85c1f4999e17af" integrity sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68= dependencies: kind-of "^3.0.2" to-regex-range@^2.1.0: version "2.1.1" resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-2.1.1.tgz#7c80c17b9dfebe599e27367e0d4dd5590141db38" integrity sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg= dependencies: is-number "^3.0.0" repeat-string "^1.6.1" to-regex@^3.0.1, to-regex@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/to-regex/-/to-regex-3.0.2.tgz#13cfdd9b336552f30b51f33a8ae1b42a7a7599ce" integrity sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw== dependencies: define-property "^2.0.2" extend-shallow "^3.0.2" regex-not "^1.0.2" safe-regex "^1.1.0" tough-cookie@^2.3.3, tough-cookie@^2.3.4: version "2.5.0" resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2" integrity sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g== dependencies: psl "^1.1.28" punycode "^2.1.1" tough-cookie@~2.4.3: version "2.4.3" resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.4.3.tgz#53f36da3f47783b0925afa06ff9f3b165280f781" integrity sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ== dependencies: psl "^1.1.24" punycode "^1.4.1" tr46@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/tr46/-/tr46-1.0.1.tgz#a8b13fd6bfd2489519674ccde55ba3693b706d09" integrity sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk= dependencies: punycode "^2.1.0" trim-right@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/trim-right/-/trim-right-1.0.1.tgz#cb2e1203067e0c8de1f614094b9fe45704ea6003" integrity sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM= tunnel-agent@^0.6.0: version "0.6.0" resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" integrity sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0= dependencies: safe-buffer "^5.0.1" tweetnacl@^0.14.3, tweetnacl@~0.14.0: version "0.14.5" resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" integrity sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q= type-check@~0.3.2: version "0.3.2" resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72" integrity sha1-WITKtRLPHTVeP7eE8wgEsrUg23I= dependencies: prelude-ls "~1.1.2" uglify-js@^3.1.4: version "3.5.12" resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.5.12.tgz#6b759cabc08c3e91fe82323d6387019f0c5864cd" integrity sha512-KeQesOpPiZNgVwJj8Ge3P4JYbQHUdZzpx6Fahy6eKAYRSV4zhVmLXoC+JtOeYxcHCHTve8RG1ZGdTvpeOUM26Q== dependencies: commander "~2.20.0" source-map "~0.6.1" unicode-canonical-property-names-ecmascript@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz#2619800c4c825800efdd8343af7dd9933cbe2818" integrity sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ== unicode-match-property-ecmascript@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz#8ed2a32569961bce9227d09cd3ffbb8fed5f020c" integrity sha512-L4Qoh15vTfntsn4P1zqnHulG0LdXgjSO035fEpdtp6YxXhMT51Q6vgM5lYdG/5X3MjS+k/Y9Xw4SFCY9IkR0rg== dependencies: unicode-canonical-property-names-ecmascript "^1.0.4" unicode-property-aliases-ecmascript "^1.0.4" unicode-match-property-value-ecmascript@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.1.0.tgz#5b4b426e08d13a80365e0d657ac7a6c1ec46a277" integrity sha512-hDTHvaBk3RmFzvSl0UVrUmC3PuW9wKVnpoUDYH0JDkSIovzw+J5viQmeYHxVSBptubnr7PbH2e0fnpDRQnQl5g== unicode-property-aliases-ecmascript@^1.0.4: version "1.0.5" resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.0.5.tgz#a9cc6cc7ce63a0a3023fc99e341b94431d405a57" integrity sha512-L5RAqCfXqAwR3RriF8pM0lU0w4Ryf/GgzONwi6KnL1taJQa7x1TCxdJnILX59WIGOwR57IVxn7Nej0fz1Ny6fw== union-value@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.0.tgz#5c71c34cb5bad5dcebe3ea0cd08207ba5aa1aea4" integrity sha1-XHHDTLW61dzr4+oM0IIHulqhrqQ= dependencies: arr-union "^3.1.0" get-value "^2.0.6" is-extendable "^0.1.1" set-value "^0.4.3" unset-value@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559" integrity sha1-g3aHP30jNRef+x5vw6jtDfyKtVk= dependencies: has-value "^0.3.1" isobject "^3.0.0" uri-js@^4.2.2: version "4.2.2" resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.2.2.tgz#94c540e1ff772956e2299507c010aea6c8838eb0" integrity sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ== dependencies: punycode "^2.1.0" urix@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" integrity sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI= urlgrey@^0.4.4: version "0.4.4" resolved "https://registry.yarnpkg.com/urlgrey/-/urlgrey-0.4.4.tgz#892fe95960805e85519f1cd4389f2cb4cbb7652f" integrity sha1-iS/pWWCAXoVRnxzUOJ8stMu3ZS8= use@^3.1.0: version "3.1.1" resolved "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f" integrity sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ== util-deprecate@~1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= util.promisify@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/util.promisify/-/util.promisify-1.0.0.tgz#440f7165a459c9a16dc145eb8e72f35687097030" integrity sha512-i+6qA2MPhvoKLuxnJNpXAGhg7HphQOSUq2LKMZD0m15EiskXUkMvKdF4Uui0WYeCUGea+o2cw/ZuwehtfsrNkA== dependencies: define-properties "^1.1.2" object.getownpropertydescriptors "^2.0.3" uuid@^3.3.2: version "3.3.2" resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.3.2.tgz#1b4af4955eb3077c501c23872fc6513811587131" integrity sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA== validate-npm-package-license@^3.0.1: version "3.0.4" resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a" integrity sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew== dependencies: spdx-correct "^3.0.0" spdx-expression-parse "^3.0.0" verror@1.10.0: version "1.10.0" resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400" integrity sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA= dependencies: assert-plus "^1.0.0" core-util-is "1.0.2" extsprintf "^1.2.0" w3c-hr-time@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/w3c-hr-time/-/w3c-hr-time-1.0.1.tgz#82ac2bff63d950ea9e3189a58a65625fedf19045" integrity sha1-gqwr/2PZUOqeMYmlimViX+3xkEU= dependencies: browser-process-hrtime "^0.1.2" walker@^1.0.7, walker@~1.0.5: version "1.0.7" resolved "https://registry.yarnpkg.com/walker/-/walker-1.0.7.tgz#2f7f9b8fd10d677262b18a884e28d19618e028fb" integrity sha1-L3+bj9ENZ3JisYqITijRlhjgKPs= dependencies: makeerror "1.0.x" webidl-conversions@^4.0.2: version "4.0.2" resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-4.0.2.tgz#a855980b1f0b6b359ba1d5d9fb39ae941faa63ad" integrity sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg== whatwg-encoding@^1.0.1, whatwg-encoding@^1.0.3: version "1.0.5" resolved "https://registry.yarnpkg.com/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz#5abacf777c32166a51d085d6b4f3e7d27113ddb0" integrity sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw== dependencies: iconv-lite "0.4.24" whatwg-mimetype@^2.1.0, whatwg-mimetype@^2.2.0: version "2.3.0" resolved "https://registry.yarnpkg.com/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz#3d4b1e0312d2079879f826aff18dbeeca5960fbf" integrity sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g== whatwg-url@^6.4.1: version "6.5.0" resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-6.5.0.tgz#f2df02bff176fd65070df74ad5ccbb5a199965a8" integrity sha512-rhRZRqx/TLJQWUpQ6bmrt2UV4f0HCQ463yQuONJqC6fO2VoEb1pTYddbe59SkYq87aoM5A3bdhMZiUiVws+fzQ== dependencies: lodash.sortby "^4.7.0" tr46 "^1.0.1" webidl-conversions "^4.0.2" whatwg-url@^7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-7.0.0.tgz#fde926fa54a599f3adf82dff25a9f7be02dc6edd" integrity sha512-37GeVSIJ3kn1JgKyjiYNmSLP1yzbpb29jdmwBSgkD9h40/hyrR/OifpVUndji3tmwGgD8qpw7iQu3RSbCrBpsQ== dependencies: lodash.sortby "^4.7.0" tr46 "^1.0.1" webidl-conversions "^4.0.2" which-module@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" integrity sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho= which@^1.2.9, which@^1.3.0: version "1.3.1" resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== dependencies: isexe "^2.0.0" wide-align@^1.1.0: version "1.1.3" resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.3.tgz#ae074e6bdc0c14a431e804e624549c633b000457" integrity sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA== dependencies: string-width "^1.0.2 || 2" wordwrap@~0.0.2: version "0.0.3" resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.3.tgz#a3d5da6cd5c0bc0008d37234bbaf1bed63059107" integrity sha1-o9XabNXAvAAI03I0u68b7WMFkQc= wordwrap@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" integrity sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus= wrap-ansi@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85" integrity sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU= dependencies: string-width "^1.0.1" strip-ansi "^3.0.1" wrappy@1: version "1.0.2" resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= write-file-atomic@2.4.1: version "2.4.1" resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-2.4.1.tgz#d0b05463c188ae804396fd5ab2a370062af87529" integrity sha512-TGHFeZEZMnv+gBFRfjAcxL5bPHrsGKtnb4qsFAws7/vlh+QfwAaySIw4AXP9ZskTTh5GWu3FLuJhsWVdiJPGvg== dependencies: graceful-fs "^4.1.11" imurmurhash "^0.1.4" signal-exit "^3.0.2" ws@^5.2.0: version "5.2.2" resolved "https://registry.yarnpkg.com/ws/-/ws-5.2.2.tgz#dffef14866b8e8dc9133582514d1befaf96e980f" integrity sha512-jaHFD6PFv6UgoIVda6qZllptQsMlDEJkTQcybzzXDYM1XO9Y8em691FGMPmM46WGyLU4z9KMgQN+qrux/nhlHA== dependencies: async-limiter "~1.0.0" xml-name-validator@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-3.0.0.tgz#6ae73e06de4d8c6e47f9fb181f78d648ad457c6a" integrity sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw== "y18n@^3.2.1 || ^4.0.0": version "4.0.0" resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.0.tgz#95ef94f85ecc81d007c264e190a120f0a3c8566b" integrity sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w== yallist@^3.0.0, yallist@^3.0.2: version "3.0.3" resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.0.3.tgz#b4b049e314be545e3ce802236d6cd22cd91c3de9" integrity sha512-S+Zk8DEWE6oKpV+vI3qWkaK+jSbIK86pCwe2IF/xwIpQ8jEuxpw9NyaGjmp9+BoJv5FV2piqCDcoCtStppiq2A== yargs-parser@^11.1.1: version "11.1.1" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-11.1.1.tgz#879a0865973bca9f6bab5cbdf3b1c67ec7d3bcf4" integrity sha512-C6kB/WJDiaxONLJQnF8ccx9SEeoTTLek8RVbaOIsrAUS8VrBEXfmeSnCZxygc+XC2sNMBIwOOnfcxiynjHsVSQ== dependencies: camelcase "^5.0.0" decamelize "^1.2.0" yargs@^12.0.2: version "12.0.5" resolved "https://registry.yarnpkg.com/yargs/-/yargs-12.0.5.tgz#05f5997b609647b64f66b81e3b4b10a368e7ad13" integrity sha512-Lhz8TLaYnxq/2ObqHDql8dX8CJi97oHxrjUcYtzKbbykPtVW9WB+poxI+NM2UIzsMgNCZTIf0AQwsjK5yMAqZw== dependencies: cliui "^4.0.0" decamelize "^1.2.0" find-up "^3.0.0" get-caller-file "^1.0.1" os-locale "^3.0.0" require-directory "^2.1.1" require-main-filename "^1.0.1" set-blocking "^2.0.0" string-width "^2.0.0" which-module "^2.0.0" y18n "^3.2.1 || ^4.0.0" yargs-parser "^11.1.1"