UNPKG

@itsmworkbench/utils

Version:

The usual utility functions

38 lines (37 loc) 1.53 kB
"use strict"; 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 ) // }