You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
33 lines
811 B
33 lines
811 B
"use strict";
|
|
|
|
exports.__esModule = true;
|
|
exports.default = void 0;
|
|
|
|
/**
|
|
* Safe chained function
|
|
*
|
|
* Will only create a new function if needed,
|
|
* otherwise will pass back existing functions or null.
|
|
*
|
|
* @param {function} functions to chain
|
|
* @returns {function|null}
|
|
*/
|
|
function createChainedFunction(...funcs) {
|
|
return funcs.filter(f => f != null).reduce((acc, f) => {
|
|
if (typeof f !== 'function') {
|
|
throw new Error('Invalid Argument Type, must only provide functions, undefined, or null.');
|
|
}
|
|
|
|
if (acc === null) return f;
|
|
return function chainedFunction(...args) {
|
|
// @ts-ignore
|
|
acc.apply(this, args); // @ts-ignore
|
|
|
|
f.apply(this, args);
|
|
};
|
|
}, null);
|
|
}
|
|
|
|
var _default = createChainedFunction;
|
|
exports.default = _default;
|
|
module.exports = exports.default; |