UNPKG

1.12 kBJavaScriptView Raw
1"use strict";
2
3exports.__esModule = true;
4exports.default = void 0;
5
6/**
7 * Safe chained function
8 *
9 * Will only create a new function if needed,
10 * otherwise will pass back existing functions or null.
11 *
12 * @param {function} functions to chain
13 * @returns {function|null}
14 */
15function createChainedFunction() {
16 for (var _len = arguments.length, funcs = new Array(_len), _key = 0; _key < _len; _key++) {
17 funcs[_key] = arguments[_key];
18 }
19
20 return funcs.filter(function (f) {
21 return f != null;
22 }).reduce(function (acc, f) {
23 if (typeof f !== 'function') {
24 throw new Error('Invalid Argument Type, must only provide functions, undefined, or null.');
25 }
26
27 if (acc === null) return f;
28 return function chainedFunction() {
29 for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
30 args[_key2] = arguments[_key2];
31 }
32
33 // @ts-ignore
34 acc.apply(this, args); // @ts-ignore
35
36 f.apply(this, args);
37 };
38 }, null);
39}
40
41var _default = createChainedFunction;
42exports.default = _default;
43module.exports = exports["default"];
\No newline at end of file