@itsmworkbench/utils
Version:
The usual utility functions
38 lines (37 loc) • 1.53 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.partial = exports.chainFromDoItOrUndefined = exports.chainOfResponsibility = exports.chainOfResponsibility2 = void 0;
const chainOfResponsibility2 = (defaultFn, ...fns) => (from, opt) => {
for (let fn of fns)
if (fn.isDefinedAt(opt))
return fn.apply(from, opt);
return defaultFn(from, opt);
};
exports.chainOfResponsibility2 = chainOfResponsibility2;
const chainOfResponsibility = (defaultFn, ...fns) => (from) => {
for (let fn of fns)
if (fn.isDefinedAt(from))
return fn.apply(from);
return defaultFn(from);
};
exports.chainOfResponsibility = chainOfResponsibility;
const chainFromDoItOrUndefined = (defaultFn, ...fns) => (from) => {
for (let fn of fns) {
let to = fn(from);
if (to !== undefined)
return to;
}
return defaultFn(from);
};
exports.chainFromDoItOrUndefined = chainFromDoItOrUndefined;
const partial = (isDefinedAt) => (apply) => ({ isDefinedAt, apply });
exports.partial = partial;
// export const chainOfResponsibility2 = <Options, From, To> ( defaultFn: ( from: From ) => To,
// ...fns: (( opt: Options ) => ( from: From ) => To | undefined)[] ) =>
// ( from1: From1, from2: From2 ): To => {
// for ( let fn of fns ) {
// const result = fn ( from1, from2 )
// if ( result !== undefined ) return result
// }
// return defaultFn ( from1, from2 )
// }