UNPKG

f-tools

Version:

Essential tools for functional programming in JavaScript

9 lines 4.04 kB
var $jscomp=$jscomp||{};$jscomp.scope={};$jscomp.arrayIteratorImpl=function(d){var g=0;return function(){return g<d.length?{done:!1,value:d[g++]}:{done:!0}}};$jscomp.arrayIterator=function(d){return{next:$jscomp.arrayIteratorImpl(d)}};$jscomp.makeIterator=function(d){var g="undefined"!=typeof Symbol&&Symbol.iterator&&d[Symbol.iterator];return g?g.call(d):$jscomp.arrayIterator(d)};$jscomp.arrayFromIterator=function(d){for(var g,h=[];!(g=d.next()).done;)h.push(g.value);return h}; $jscomp.arrayFromIterable=function(d){return d instanceof Array?d:$jscomp.arrayFromIterator($jscomp.makeIterator(d))}; (function(d,g){function h(b){if(0===b.length)return">>>No argument<<<";b=b.map(function(a){return void 0===a?">>>undefined<<<":null===a?">>>null<<<":Array.isArray(a)?Object.entries(h(a)).join("*&$%"):a instanceof Set?"s&E&&t"+h([].concat($jscomp.arrayFromIterable(a)))+"s&E&&t":a instanceof Map?"m**A$%p"+h([].concat($jscomp.arrayFromIterable(a)))+"m**A$%p":"object"===typeof a?"_^&##"+Object.entries(a).join("_^&##")+"_^&##":"string"===typeof a?")))"+a+"(((":a});return b.join("#%&@^#")}var f={},l=function(b, a,c){function d(a,e){e=void 0===e?b:e;if(void 0===e[a[0]])return c;if(1===a.length&&void 0!==e[a[0]])return e[a[0]];e=e[a[0]];return d(a.slice(1),e)}if(!a||"string"!==typeof a&&!Array.isArray(a))return Error("f.reach() needs a path argument as second parameter that could be a String or Array");"string"===typeof a&&(a=a.split(/\[|\]/g),a=a.reduce(function(a,b){b=b.replace(/^[\.'"]/,"").replace(/[\.'"]$/,"");b=/^\w+\.\d+$/.test(b)?[b]:b.split(".");return""!==b[0]?a.concat(b):a},[]));return d(a)},m= function(b,a,c){function d(a,e){e=void 0===e?b:e;if(void 0===e[a[0]])return c;if(1===a.length&&void 0!==e[a[0]])return e[a[0]];e=e[a[0]];return d(a.slice(1),e)}if(!a||"string"!==typeof a&&!Array.isArray(a))return Error("f.reach() needs a path argument as second parameter that could be a String or Array");"string"===typeof a&&(a=a.split(/\[|\]/g),a=a.reduce(function(a,b){b=b.replace(/^[\.'"]/,"").replace(/[\.'"]$/,"");b=/^\w+\.\d+$/.test(b)?[b]:b.split(".");return""!==b[0]?a.concat(b):a},[]));return d(a)}; f.reach=function(b,a,c){return Array.isArray(b)?m(b,a,c):"object"===typeof b?l(b,a,c):Error("The first argument for f.reach() must be an array or object.")};f.flatten=function(b){if(!Array.isArray(b))return b;var a=[];(function k(b){b.forEach(function(b){Array.isArray(b)?k(b):a.push(b)})})(b);return a};f.pipe=function(){var b=[].concat($jscomp.arrayFromIterable(arguments));1===b.length&&Array.isArray(b[0])&&(b=f.flatten([].concat($jscomp.arrayFromIterable(arguments))));if("function"===typeof b[0])return function(){for(var a= b[0].apply(void 0,arguments),c=1;c<b.length;c++)a=b[c](a);return a};for(var a=b[0],c=1;c<b.length;c++)a=b[c](a);return a};f.identity=function(){var b=[].concat($jscomp.arrayFromIterable(arguments));return 1===b.length&&Array.isArray(b[0])?b[0]:b};f.curry=function(b){if("function"!==typeof b)return Error("The argument passed to f.curry() must be a function.");if(2>b.length)return b;var a=[];var c=b.length;return function k(){a=Array.from(arguments);return a.length>=c?b.apply(void 0,a):k.bind.apply(k, [void 0].concat($jscomp.arrayFromIterable(a)))}};f.memoize=function(b){if("function"!==typeof b)return Error("The argument passed to f.memoize() must be a function.");b._cache||(b._cache={});return function(a){var c=h([].concat($jscomp.arrayFromIterable(arguments)));b._cache[c]=b._cache[c]||b.apply(void 0,arguments);return b._cache[c]}};f.memoizeX=function(b){if("function"!==typeof b)return Error("The argument passed to f.memoizeX() must be a function.");var a={};return function(){var c=h([].concat($jscomp.arrayFromIterable(arguments))); if(a[c])return a[c];a[c]=b.apply(void 0,arguments);return a[c]}};Function.prototype.memoize=function(){var b={},a=this;return function(){var c=h([].concat($jscomp.arrayFromIterable(arguments)));if(b[c])return b[c];b[c]=a.apply(void 0,arguments);return b[c]}};d.f=Object.freeze?Object.freeze(f):f;return f})(window,document);