New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

lazychain

Package Overview
Dependencies
Maintainers
1
Versions
17
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

lazychain - npm Package Compare versions

Comparing version 0.3.0-alpha.17 to 0.3.0-alpha.18

gh-pages/api/dispatcher/index.md

4

dist/min/lazychain.min.js

@@ -1,2 +0,2 @@

/*! lazychain v0.3.0-alpha.17 | (c) 2014, falsandtru | MIT Licence */
!new function(a,b){"use strict";var c;!function(a){var b;!function(a){a.args2array=function(a){for(var b=a.length,c=Array(b),d=0;b>d;d++)c[d]=a[d];return c}}(b=a.FUNCTION||(a.FUNCTION={}))}(c||(c={}));var c;!function(a){var b;!function(a){function b(a,b,c){var d=void 0===b;switch(c.length){case 0:return d?a():a.call(b);case 1:return d?a(c[0]):a.call(b,c[0]);case 2:return d?a(c[0],c[1]):a.call(b,c[0],c[1]);case 3:return d?a(c[0],c[1],c[2]):a.call(b,c[0],c[1],c[2]);case 4:return d?a(c[0],c[1],c[2],c[3]):a.call(b,c[0],c[1],c[2],c[3]);case 5:return d?a(c[0],c[1],c[2],c[3],c[4]):a.call(b,c[0],c[1],c[2],c[3],c[4]);case 6:return d?a(c[0],c[1],c[2],c[3],c[4],c[5]):a.call(b,c[0],c[1],c[2],c[3],c[4],c[5]);case 7:return d?a(c[0],c[1],c[2],c[3],c[4],c[5],c[6]):a.call(b,c[0],c[1],c[2],c[3],c[4],c[5],c[6]);case 8:return d?a(c[0],c[1],c[2],c[3],c[4],c[5],c[6],c[7]):a.call(b,c[0],c[1],c[2],c[3],c[4],c[5],c[6],c[7]);case 9:return d?a(c[0],c[1],c[2],c[3],c[4],c[5],c[6],c[7],c[8]):a.call(b,c[0],c[1],c[2],c[3],c[4],c[5],c[6],c[7],c[8]);default:return a.apply(b,c)}}a.apply=b}(b=a.FUNCTION||(a.FUNCTION={}))}(c||(c={}));var c;!function(a){var b;!function(a){function b(a,b){if(0>a){for(var c=-a,d=c%8;d--;)b(--c);for(;c;)b(--c),b(--c),b(--c),b(--c),b(--c),b(--c),b(--c),b(--c)}else{for(var e=a,c=0,d=e%8,f=e/8^0;d--;)b(c++);for(;f--;)b(c++),b(c++),b(c++),b(c++),b(c++),b(c++),b(c++),b(c++)}}function c(a,b){if(0>a){for(var c=-a,d=c%8;d--;)if(!1===b(--c))return;for(;c;){if(!1===b(--c))return;if(!1===b(--c))return;if(!1===b(--c))return;if(!1===b(--c))return;if(!1===b(--c))return;if(!1===b(--c))return;if(!1===b(--c))return;if(!1===b(--c))return}}else{for(var e=a,c=0,d=e%8,f=e/8^0;d--;)if(!1===b(c++))return;for(;f--;){if(!1===b(c++))return;if(!1===b(c++))return;if(!1===b(c++))return;if(!1===b(c++))return;if(!1===b(c++))return;if(!1===b(c++))return;if(!1===b(c++))return;if(!1===b(c++))return}}}a.duff=b,a.duffbk=c}(b=a.UTILITY||(a.UTILITY={}))}(c||(c={}));var c;!function(a){var b;!function(a){function b(a,b){switch(!0){case"string"==typeof a:var d=a;return Array(b+1).join(d);case a instanceof Array:var e=a.length;if(300>b){var f=Array(b);c(-b,function(b){return f[b]=a[b%e]})}else{for(var f=a.slice();2*f.length<=b;)f=f.concat(f);f=f.concat(f.slice(0,b-f.length))}return f}}var c=a.duff;a.repeat=b}(b=a.UTILITY||(a.UTILITY={}))}(c||(c={}));var c;!function(a){var b;!function(b){var c=a.UTILITY.repeat;b.id=function(){var a={};return{rest:function(){return a}}}(),b.type=function(){function a(e,f,g,h){switch(typeof f){case"undefined":if(null===e)return"null";var i=typeof e;return"object"===i||"function"===i?b[c.call(e)]||"object":i;case"string":var j=a(e);return f===j||f.length>j.length+5&&f.indexOf(j)>-1;default:return d(e,f,g,h)}}var b={},c=b.toString;return"Boolean Number String Function Array Date RegExp Object Error".split(/\s+/).forEach(function(a,c){return b["[object "+a+"]"]=a.toLowerCase()}),a}();var d=function(){function a(a,c,l,m,n,o){if(void 0===l&&(l=1),void 0===m&&(m=k),void 0===n&&(n=!1),void 0===o&&(o=[]),0>m)return!1;if(c.length>1&&c[c.length-1]===b.id.rest())return d(a,c.slice(0,-1),l,m,!0,o);if(0===o.length&&(a=e(a),a=f(a,c)),n&&c.length<a.length&&(c=g(a,c)),a.length!==c.length)return!1;for(var p,q,r=0,s=a.length;s>r;r++)switch(p=a[r],q=c[r],b.type(q)){case"undefined":continue;case"null":if(null===p||void 0===p)continue;return!1;case"boolean":case"string":if(q===p)continue;return!1;case"number":if(q===p||b.type(p,"number")&&isNaN(p)&&isNaN(q))continue;return!1;case"date":if(b.type(p,"date")&&p.getUTCMilliseconds()===q.getUTCMilliseconds())continue;return!1;case"array":if(o.length&&~o.indexOf(p)){if(p===q)continue;return!1}if(p===q||b.type(p,"array")&&i(p,q,l,m-1,o.concat([p])))continue;return!1;case"object":if(o.length&&~o.indexOf(p)){if(p===q)continue;return!1}if(p===q||b.type(p,"object")&&j(p,q,l,m-1,o.concat([p])))continue;return!1;case"function":if(void 0===p||null===p||b.type(p,"number")&&isNaN(p))return!1;switch(q){case Boolean:if(b.type(p,"boolean"))continue;return!1;case Number:if(b.type(p,"number"))continue;return!1;case String:if(b.type(p,"string"))continue;return!1;case Date:if(b.type(p,"date"))continue;return!1;case Array:if(b.type(p,"array"))continue;return!1;case Object:if(b.type(p,"object"))continue;return!1;case RegExp:if(b.type(p,"regexp"))continue;return!1;case Function:case Error:default:if(!b.type(p,"function")||p===Function||h(q)?p.constructor===q||p instanceof q&&!h(q):q===p||q.toString()===p.toString()&&j(p,q,l,m-1,o.concat([p])))continue;return!1}case"error":if(void 0!==p&&null!==p&&q.constructor===p.constructor&&q.name===p.name&&q.message===p.message)continue;return!1;case"regexp":if(void 0!==p&&null!==p&&q.constructor===p.constructor&&q.source===p.source&&q.global===p.global&&q.ignoreCase===p.ignoreCase&&q.multiline===p.multiline)continue;return!1;default:throw new Error("Undefined pattern.")}return!0}function e(a){if(a instanceof Array)return a.slice();for(var b=[],c=0;c<a.length;c++)b[c-0]=a[c];return b}function f(a,b){for(var c=a.length;void 0===a[--c]&&c+1>b.length;);return a.slice(0,c+1)}function g(a,b){return b.concat(c(b.slice(-1),a.length-b.length))}function h(a){var b="string"==typeof a.name?a.name:a.toString().match(l).pop()+" ",c=b.charAt(0),d=b.charAt(1);return c>="A"&&"Z">=c&&!(d>="A"&&"Z">=d)}function i(a,b,c,e,f){return a.length<b.length-1?!1:(1===b.length&&c>0&&a.length>2*c&&(a=a.slice(0,c).concat(a.slice(-c))),d(a,b,c,e,1===b.length,f))}function j(a,b,c,e,f){var g=!0;for(var h in b)if(g=!1,!(h in a&&d([a[h]],[b[h]],c,e,!1,f)))return!1;if(g){for(var h in a)return!1;return!0}return!0}var k=9,l=/function\s*([^(]*)/;return a}()}(b=a.TYPE||(a.TYPE={}))}(c||(c={}));var c;!function(a){var b;!function(b){function c(a){return e(a,"object")&&"then"in a}var d=a.FUNCTION.apply,e=a.TYPE.type;b.isThenable=c,b.resolve="function"==typeof Promise?Promise.resolve.bind(Promise):function(a){return b.deferred().resolve(a)},b.reject=function(a){return b.deferred().reject(a)},b.when=function(a){function e(a,b){c(b)?b.then(function(){for(var b=[],c=0;c<arguments.length;c++)b[c-0]=arguments[c];return f(a,b)},g.reject,g.notify):f(a,[b])}function f(a,b){0!==h&&"pending"===g.state()&&(h-=1,i[a]=b,0===h&&d(g.resolve,void 0,i))}if(0===a.length)return b.deferred().resolve([]);for(var g=b.deferred(),h=a.length,i=Array(h),j=0,k=a.length;k>j;j++)e(j,a[j]);return g.promise()},b.deferred=function(){return function(a){function c(a,b,c){for(var d,e=0,g=b.length;g>e;e++){var h=b[e];c.push(h),d=f(a,[h])}return o!==l&&c.splice(0,c.length),d}function f(a,b){for(var c,e=0,f=a?b.length:0;f>e;e++)c=d(b[e],void 0,a);return c}function g(a){var b=[];if(a instanceof Array)for(var c=a.length;c--;){var d=a[c];d instanceof Array?b=b.concat(g(d)):b.push(d)}return b}var h,i,j,k,l="pending",m="resolved",n="rejected",o=l,p=[],q=[],r=[],s=[],t={state:function(){return o},progress:function(){for(var a=[],b=0;b<arguments.length;b++)a[b-0]=arguments[b];return o===l&&c(h,g(a),p),this},done:function(){for(var a=[],b=0;b<arguments.length;b++)a[b-0]=arguments[b];return(o===l||o===m)&&c(i,g(a),q),this},fail:function(){for(var a=[],b=0;b<arguments.length;b++)a[b-0]=arguments[b];return(o===l||o===n)&&c(j,g(a),r),this},always:function(){for(var a=[],b=0;b<arguments.length;b++)a[b-0]=arguments[b];return c(k,g(a),s),this},then:function(a,f,g){function k(a,b,f,g){b&&c(a,[function(){for(var a=[],c=0;c<arguments.length;c++)a[c-0]=arguments[c];var f;"function"==typeof b?(f=d(b,void 0,a),e(f,"object")&&e(f.then,"function")?f.then(s.notify,s.notify,s.notify):g(f)):(b.forEach(function(b){return d(b,void 0,a)}),g())}],f)}var s=b.deferred();return o===l&&k(h,g,p,s.notify),(o===l||o===m)&&k(i,a,q,s.resolve),(o===l||o===n)&&k(j,f,r,s.reject),s.promise()},promise:function(){return{state:t.state,progress:t.progress,done:t.done,fail:t.fail,always:t.always,then:t.then}},notify:function(){for(var a=[],b=0;b<arguments.length;b++)a[b-0]=arguments[b];return o===l&&(h=a,f(h,p)),this},resolve:function(){for(var a=[],b=0;b<arguments.length;b++)a[b-0]=arguments[b];return o===l&&(i=a,k=a,f(a,q.concat(s)),p=[],q=[],s=[],o=m),this},reject:function(){for(var a=[],b=0;b<arguments.length;b++)a[b-0]=arguments[b];return o===l&&(j=a,k=a,f(a,r.concat(s)),p=[],r=[],s=[],o=n),this}};return a&&a(t.resolve,t.reject,t.notify),t}}()}(b=a.PROMISE||(a.PROMISE={}))}(c||(c={}));var c;!function(a){var b;!function(a){a.memoize=function(a){var b;return function(){return void 0===b&&(b=a()),b}}}(b=a.FUNCTION||(a.FUNCTION={}))}(c||(c={}));var c;!function(a){var b;!function(a){a.v4=function(){return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,function(a){var b=16*Math.random()|0,c="x"===a?b:3&b|8;return c.toString(16).toUpperCase()})}}(b=a.UUID||(a.UUID={}))}(c||(c={}));var d;!function(a){a.APPLY=c.FUNCTION.apply,a.TYPE=c.TYPE.type,a.PROMISE=c.PROMISE,a.MEMOIZE=c.FUNCTION.memoize,a.UUID=c.UUID.v4;var b;!function(a){a.rest=c.TYPE.id.rest}(b=a.ID||(a.ID={}))}(d||(d={}));var d;!function(c){var d;!function(d){var e=function(){function e(f,g,h){var i=this;void 0===g&&(g=[]),void 0===h&&(h=null),this.NAME=a,this.VERSION=b,this.__LazyChain__={extensions:null,parent:null,child:null,deferred:null,command:null,monad:null,transfer:function(a,b){return i.__LazyChain__.command=[a,b],i.__LazyChain__.child=c.APPLY(d[a],void 0,[i].concat(b))}},this.lazy=function(){var a=i;return function(){for(var b=[],c=0;c<arguments.length;c++)b[c-0]=arguments[c];return a.__LazyChain__.transfer("lazy",b)}}(),this.stream=function(){var a=i;return function(){for(var b=[],c=0;c<arguments.length;c++)b[c-0]=arguments[c];return a.__LazyChain__.transfer("stream",b)}}(),this.pattern=function(){var a=i;return function(){for(var b=[],c=0;c<arguments.length;c++)b[c-0]=arguments[c];return a.__LazyChain__.transfer("pattern",b)}}(),this.monad=function(){var a=i;return function(){for(var b=[],c=0;c<arguments.length;c++)b[c-0]=arguments[c];return a.__LazyChain__.transfer("monad",b)}}(),this.monadic=function(){var a=i;return function(){for(var b=[],c=0;c<arguments.length;c++)b[c-0]=arguments[c];return a.__LazyChain__.transfer("monadic",b)}}(),this.array=function(){var a=i;return function(){var b;return a.some(function(a,c,d){return b=d}),b||[]}}(),this.prevChain=function(){var a=i;return function(){return a.__LazyChain__.parent}}(),this.nextChain=function(){var a=i;return function(){return a.__LazyChain__.child}}(),this.firstChain=function(){var a=i;return function(){return a.prevChain()&&a.prevChain().firstChain()||a}}(),this.lastChain=function(){var a=i;return function(){return a.nextChain()&&a.nextChain().lastChain()||a}}(),h&&(h.__LazyChain__.child=this,this.__LazyChain__.monad=h.__LazyChain__.monad,this.__LazyChain__.extensions=h.__LazyChain__.extensions),this.__LazyChain__.parent=h,e.map||d.extendStream_(!0,Array.prototype,0,["reverse","slice","sort","every","some","forEach","filter","map","reduce","reduceRight"]),d.mixin(this,this.__LazyChain__.deferred=c.PROMISE.deferred()),this.__LazyChain__.extensions=this.__LazyChain__.extensions||g,this.__LazyChain__.extensions.forEach(function(a){return d.emulate(i,a)});var j=this.__LazyChain__.deferred;f instanceof Array?f.length&&c.APPLY(j.notify,void 0,f):f instanceof e?f.progress(j.notify).done(j.resolve).fail(j.reject):c.PROMISE.isThenable(f)&&f.then(j.notify,j.notify,j.notify)}return e}();d.Stream=e}(d=c.CONTROLLER||(c.CONTROLLER={}))}(d||(d={}));var d;!function(a){var b;!function(b){function c(a,b){return"progress"in a&&"always"in a&&"notify"in b?a.progress(b.notify).always(b.resolve):a.then(b.resolve,b.reject),b}function d(a,b){return void 0===b&&(b=a),new v(b,a.__LazyChain__.extensions,a)}function f(b,c){return b.nextChain()?(c=c||new v(null,b.__LazyChain__.extensions),f(b.nextChain(),a.APPLY(c[b.__LazyChain__.command[0]],c,b.__LazyChain__.command[1]))):c}function g(b){if(!(a.TYPE(b,"object")&&"prototype"in b))return b;switch(b.prototype){case null:return Object.create(null);case void 0:case!1:return b;case!0:if(b.constructor&&b.constructor!==Object)return new b.constructor;var c=function(){};return c.prototype=b,new c;default:return Object.create(b)}}function h(b){var c="function"==typeof setImmediate?setImmediate:function(a){return setTimeout(a,1)};return b.lazy(function(b,d,f){if(!(d>0)){var g=e.deferred();return c(function(b){return a.APPLY(g.resolve,void 0,f)}),g}})}function i(b,c,e,f){function h(){for(var a=[],b=0;b<arguments.length;b++)a[b-0]=arguments[b];return a.reduce(i,[])}function i(b,d,g,h){var i,m=l?c(d,g,h,e,i=a.PROMISE.deferred()):c(d,g,h,e);return(i=a.PROMISE.isThenable(m)?m:i)?(f?(b.push(i),g+1===h.length&&a.PROMISE.when(b).then(j,k.notify,k.notify)):"progress"in i&&"always"in i?i.progress(k.notify).always(k.notify):i.then(k.notify,k.notify,k.notify),b):b}function j(){for(var b=[],c=0;c<arguments.length;c++)b[c-0]=arguments[c];return b.forEach(function(b){return a.APPLY(k.notify,void 0,b)})}"boolean"==typeof e&&void 0===f&&(f=e,e={}),e=g(e);var k=d(b,null),l=5===c.length;return c&&b.progress(h).always(h),k}function j(b,c){function f(){return i.notify(j.sentinel)}function g(a){return Date.now()-a>c}function h(a){return a===j.sentinel}var i=d(b),j={prototype:!0,buffer:[],sentinel:{},timer:0,last:0},k=0>c;return c=Math.abs(c),i.lazy(function(b,d,i,j){if(h(b)||j.buffer.push(b),0===j.timer)j.timer=setTimeout(f,c),j.last=Date.now();else if(k&&!h(b))clearTimeout(j.timer),j.timer=setTimeout(f,c);else if(g(j.last)||h(b)){clearTimeout(j.timer),j.timer=0,j.last=Date.now();var l=e.deferred();return a.APPLY(l.resolve,l,j.buffer.splice(0,j.buffer.length))}},j)}function k(a,b,c){function e(){for(var a=[],d=0;d<arguments.length;d++)a[d-0]=arguments[d];return a.forEach(function(a,d,e){return b(a,d,e,c)})}return void 0===c&&(c={}),c=g(c),b&&a.progress(e).always(e),d(a)}function l(d,e,f){return void 0===f&&(f=!0),e.filter(function(b){return a.PROMISE.isThenable(b)}).forEach(function(a){return c(d,a)}),f?b.cascade(d):d}function m(d,e,f){return void 0===f&&(f=!0),e.filter(function(b){return a.PROMISE.isThenable(b)}).forEach(function(a){return c(a,d)}),f?b.cascade(d):d}function n(a,b){return b.reduceRight(function(a,b){return m(f(b.firstChain()).firstChain(),[a],!1).lastChain()},a)}function o(b,c,e,f){function h(b,c){switch(!0){case!b:return[c,null];case a.PROMISE.isThenable(b):return[c,b];case b instanceof Array&&1===b.length&&!a.PROMISE.isThenable(b[0]):return b[0][""]=c,b[0];case b instanceof Array:return b.unshift(c),b[1]=b[1]||null,b}}void 0===f&&(f={}),f=g(f);var i=d(b,null),j=d(b);return e=h(e,i),j.reduce(function(a,b,d,e){a=d?a:Object.create(null);var g=c.call(void 0,b,d,e,f);return g="boolean"==typeof g?+!g:g,g in a||(a[g]=[]),a[g].push(b),a},null).forEach(function(b){Object.keys(b).filter(function(a){return!!b[a].length}).forEach(function(c){var d=c in e?e[c]||function(a){return void 0}:null;"function"==typeof d?a.APPLY(d,void 0,b[c]):a.APPLY(d.notify,void 0,b[c])})}),i}function p(b,c){function e(b){var d=Array(b.length);return b.forEach(function(b,e){for(var f,g=0,h=c.length;h>g;g++){f=g>0&&c[g-1][0]===c[g][0]?f:a.TYPE([b],[c[g][0]]);var i=c[g],j=i.length;if(f){if(1===j)return d[e]=b;if(2===j)return d[e]=i[1](b);if(3===j&&i[1](b))return d[e]=i[2](b)}}d[e]=b}),d}c=c.concat([[void 0,function(a){return a}]]);var f=d(b,null);return b.progress(function(){for(var b=[],c=0;c<arguments.length;c++)b[c-0]=arguments[c];return a.APPLY(f.notify,void 0,e(b))}).done(function(){for(var b=[],c=0;c<arguments.length;c++)b[c-0]=arguments[c];return a.APPLY(f.resolve,void 0,e(b))}).fail(function(){for(var b=[],c=0;c<arguments.length;c++)b[c-0]=arguments[c];return a.APPLY(f.reject,void 0,e(b))}),f}function q(a){return a}function r(a){return a}function s(b,c,e){switch(void 0===e&&(e=!0),b.__LazyChain__.monad=c,e){case!0:return q(d(b.map(function(a){return c["return"].call(void 0,a)})));case!1:return q(d(b));default:return q(d(b.map(function(b){return a.TYPE([b],[e])?c["return"].call(void 0,b):b})))}}function t(b,c){function e(d){var e=Array(d.length);return d.forEach(function(d,f){for(var g,h=0,i=c.length;i>h;h++){g=h>0&&c[h-1][0]===c[h][0]?g:a.TYPE([d],[c[h][0]]);var j=c[h],k=j.length,l=b.__LazyChain__.monad;if(g){if(1===k)return e[f]=d;if(2===k)return e[f]=l.bind(d,j[1]);if(3===k&&l.bind(d,j[1]))return e[f]=l.bind(d,j[2])}}e[f]=l.fail(d)}),e}c=c.concat([[void 0,r(b).__LazyChain__.monad.fail]]);var f=q(d(r(b),null));return r(b).progress(function(){for(var b=[],c=0;c<arguments.length;c++)b[c-0]=arguments[c];return a.APPLY(f.notify,void 0,e(b))}).done(function(){for(var b=[],c=0;c<arguments.length;c++)b[c-0]=arguments[c];return a.APPLY(f.resolve,void 0,e(b))}).fail(function(){for(var b=[],c=0;c<arguments.length;c++)b[c-0]=arguments[c];return a.APPLY(f.reject,void 0,e(b))}),f}function u(b,c,e,f,g){function h(b){var d,h=g?a.APPLY(f[e],f,[b].concat(c)):a.APPLY(f[e],b,c);switch(e){case"every":case"some":d=h?b:[];break;case"reduce":case"reduceRight":d=[h];break;case"forEach":d=[];break;default:d=h instanceof Array?h:[]}return d}var i=b.__LazyChain__.child=d(b,null);return b.progress(function(){for(var b=[],c=0;c<arguments.length;c++)b[c-0]=arguments[c];return a.APPLY(i.notify,void 0,h(b))}).done(function(){for(var b=[],c=0;c<arguments.length;c++)b[c-0]=arguments[c];return a.APPLY(i.resolve,void 0,h(b))}).fail(function(){for(var b=[],c=0;c<arguments.length;c++)b[c-0]=arguments[c];return a.APPLY(i.reject,void 0,h(b))}),i}var v=a.CONTROLLER.Stream;b.cascade=d,b.immediate=h,b.lazy=i,b.buffer=j,b.stream=k,b.branch=l,b.merge=m,b.compose=n,b.split=o,b.pattern=p,b.monad=s,b.monadic=t,b.emulator=u}(b=a.MODEL||(a.MODEL={}))}(d||(d={}));var c;!function(a){var b;!function(b){function c(a){try{return a&&"object"==typeof a?JSON.stringify(a):a+""}catch(b){return a+""}}function d(a,b,c){var d;if(b in a){if(d=a[b],d[0][0]!==c)for(var e=1,f=d.length;f>e;e++)if(d[e][0]===c){d.unshift(d.splice(e,1).pop());break}}else d=a[b]=[[c,void 0,Object.create(null)]];return d}function e(a,b,c,d,e,g){var h=a[0];return 0===a.length||h[0]!==b?(h=[b,f(c,void 0,d),Object.create(null)],a.unshift(h)):void 0===h[1]&&(h[1]=f(c,void 0,d)),a.length>e+g&&a.splice(e,e+g),h}var f=a.FUNCTION.apply;b.cache=function(a,b){void 0===b&&(b=5);var f,g,h;return function(){for(var i=[],j=0;j<arguments.length;j++)i[j-0]=arguments[j];var k,l,m=arguments.length;if(0===m)return void 0===h&&(h=a()),h;g=void 0===g?b>20&&10||Math.floor(b/2):g;for(var n,o=f=f||Object.create(null),p=0;m>p;p++)o=p?n[2]:o,k=i[p],l=k&&"object"==typeof k?c(k):k+"",n=e(d(o,l,k),k,a,i,b,g);return n[1]}}}(b=a.FUNCTION||(a.FUNCTION={}))}(c||(c={}));var c;!function(a){var b;!function(b){var c=a.FUNCTION.cache;b.store=function(a){void 0===a&&(a=10);var b,d=c(function(a){return b},a),e=function(a,c){return b=c,d(a)};return function(a,b){if(void 0===b)return e(a);if(b===e(a,b))return b;throw Error(a)}}}(b=a.UTILITY||(a.UTILITY={}))}(c||(c={}));var d;!function(a){var b;!function(b){function d(){var d;return d=function(){for(var c=[],d=0;d<arguments.length;d++)c[d-0]=arguments[d];return a.APPLY(b.core,void 0,c)},d.id=a.ID,d.uuid=a.UUID,d.args2array=c.FUNCTION.args2array,d.type=a.TYPE,d.memoize=c.FUNCTION.memoize,d.cache=c.FUNCTION.cache,d.store=c.UTILITY.store,d.resolve=a.PROMISE.resolve,d.reject=a.PROMISE.reject,d.deferred=a.PROMISE.deferred,d.when=a.PROMISE.when,d.repeat=c.UTILITY.repeat,d.duff=c.UTILITY.duff,d.duffbk=c.UTILITY.duffbk,d}function f(){for(var c=[],d=0;d<arguments.length;d++)c[d-0]=arguments[d];switch(!0){case a.TYPE(c,[!0]):return void g(!0,!1);case a.TYPE(c,[!1]):return void g(!1,!1);case a.TYPE(c,[!0,Array.prototype]):return void g(!0,!0);case a.TYPE(c,[!1,Array.prototype]):return void g(!1,!0);case a.TYPE(c,[!0,Function]):return void h(!0,c[1],1);case a.TYPE(c,[!1,Function]):return void h(!1,c[1],1);case a.TYPE(c,[]):return new b.Stream;case a.TYPE(c,[Function]):return new b.Stream(void 0,[c[0]]);case a.TYPE(c,[Array]):return new b.Stream(c[0]);case a.TYPE(c,[Array,Function]):return new b.Stream(c[0],[c[1]]);case a.TYPE(c,[Object,Function]):return new b.Stream(c[0],[c[1]]);case a.TYPE(c,[Object,a.ID.rest()]):return(new b.Stream).stream(c)}}function g(c,d){["lazy","stream"].forEach(function(f){c?Object.defineProperty(Array.prototype,f,{configurable:!0,writable:!0,enumerable:d,value:function(){for(var c=[],d=0;d<arguments.length;d++)c[d-0]=arguments[d];return a.APPLY(b[f],void 0,[e(this)].concat(c))}}):delete Array.prototype[f]})}function h(c,d,e,f){void 0===f&&(f=[]),c?Object.keys(d).concat(f).filter(function(a){return!b.Stream.prototype[a]&&"function"==typeof d[a]}).forEach(function(c){b.Stream.prototype[c]=function(){for(var b=[],f=0;f<arguments.length;f++)b[f-0]=arguments[f];return this.__LazyChain__.command=[c,b],a.MODEL.emulator(this,b,c,d,e)},Object.defineProperty(b.Stream.prototype[c],"provider",{configurable:!1,writable:!1,enumerable:!1,value:d})}):Object.keys(d).concat(f).filter(function(a){return!!b.Stream.prototype[a]&&b.Stream.prototype[a].provider===d}).forEach(function(a){return delete b.Stream.prototype[a]})}function i(){for(var c=[],d=0;d<arguments.length;d++)c[d-0]=arguments[d];var e=c[0];switch(!0){case a.TYPE(c,[b.Stream,Function]):return a.MODEL.lazy(e,c[1]);case a.TYPE(c,[b.Stream,Function,Boolean]):return a.MODEL.lazy(e,c[1],c[2]);case a.TYPE(c,[b.Stream,Function,void 0]):return a.MODEL.lazy(e,c[1],c[2]);case a.TYPE(c,[b.Stream,Function,void 0,Boolean]):return a.MODEL.lazy(e,c[1],c[2],c[3]);case a.TYPE(c,[b.Stream]):return a.MODEL.immediate(e);case a.TYPE(c,[b.Stream,Number]):return a.MODEL.buffer(e,c[1]);default:return a.MODEL.stream(e,void 0)}}function j(){for(var c=[],d=0;d<arguments.length;d++)c[d-0]=arguments[d];var e=c[0];switch(!0){case a.TYPE(c,[b.Stream,Function]):return a.MODEL.stream(e,c[1]);case a.TYPE(c,[b.Stream,Function,void 0]):return a.MODEL.stream(e,c[1],c[2]);case a.TYPE(c,[b.Stream,Object,a.ID.rest()]):return a.MODEL.compose(e,c.slice(1));case a.TYPE(c,[b.Stream]):return e;case a.TYPE(c,[b.Stream,!0,[Object]]):return a.MODEL.branch(e,c[2]);case a.TYPE(c,[b.Stream,!1,[Object]]):return a.MODEL.branch(e,c[2]),a.MODEL.cascade(e,null);case a.TYPE(c,[b.Stream,Array,Object]):case a.TYPE(c,[b.Stream,Array,null]):case a.TYPE(c,[b.Stream,Array,Object]):case a.TYPE(c,[b.Stream,Array,null]):return a.MODEL.split(e,function(b){return a.TYPE([b],c[1])},c[2]);case a.TYPE(c,[b.Stream,Function,Object,void 0]):case a.TYPE(c,[b.Stream,Function,[Object],void 0]):return a.MODEL.split(e,c[1],c[2],c[3]);case a.TYPE(c,[b.Stream,String,Object]):case a.TYPE(c,[b.Stream,String,null]):return a.MODEL.split(e,function(b){return a.TYPE(b)===c[1]},c[2]);case a.TYPE(c,[b.Stream,[Object]]):return a.MODEL.merge(e,c[1]);default:return a.MODEL.stream(e,void 0)}}function k(b){for(var c=[],d=1;d<arguments.length;d++)c[d-1]=arguments[d];return a.MODEL.pattern(b,c)}function l(b,c,d){return a.MODEL.monad(b,c,d)}function m(b){for(var c=[],d=1;d<arguments.length;d++)c[d-1]=arguments[d];return a.MODEL.monadic(b,c)}function n(a,b,c,d){return void 0===c&&(c=[]),void 0===d&&(d=1),Object.keys(b).concat(c).filter(function(c){return!a[c]&&"function"==typeof b[c]}).forEach(function(c){return a[c]=b[c]}),a}function o(b,c,d,e,f){return void 0===d&&(d=[]),void 0===e&&(e=1),void 0===f&&(f=!1),Object.keys(c).concat(d).filter(function(a){return f||!b[a]&&"function"==typeof c[a]}).forEach(function(d){return b[d]=function(){for(var f=[],g=0;g<arguments.length;g++)f[g-0]=arguments[g];return b.__LazyChain__.command=[d,f],a.MODEL.emulator(b,f,d,c,e)}}),b}b.handle=d,b.core=f,b.extendArray_=g,b.extendStream_=h,b.lazy=i,b.stream=j,b.pattern=k,b.monad=l,b.monadic=m,b.mixin=n,b.emulate=o}(b=a.CONTROLLER||(a.CONTROLLER={}))}(d||(d={}));var e,d;!function(a){switch(e=e||a.CONTROLLER.handle(),!0){case"object"==typeof module&&!!module&&module.exports instanceof Object:module.exports=e;break;case"object"==typeof window&&!!window&&window.window===window:window.LazyChain=e}}(d||(d={}))}("lazychain","0.3.0-alpha.17");
/*! lazychain v0.3.0-alpha.18 | (c) 2014, falsandtru | MIT Licence */
!new function(a,b){"use strict";var c;!function(a){var b;!function(a){a.args2array=function(a){for(var b=a.length,c=Array(b),d=0;b>d;d++)c[d]=a[d];return c}}(b=a.FUNCTION||(a.FUNCTION={}))}(c||(c={}));var c;!function(a){var b;!function(a){function b(a,b,c){var d=void 0===b;switch(c.length){case 0:return d?a():a.call(b);case 1:return d?a(c[0]):a.call(b,c[0]);case 2:return d?a(c[0],c[1]):a.call(b,c[0],c[1]);case 3:return d?a(c[0],c[1],c[2]):a.call(b,c[0],c[1],c[2]);case 4:return d?a(c[0],c[1],c[2],c[3]):a.call(b,c[0],c[1],c[2],c[3]);case 5:return d?a(c[0],c[1],c[2],c[3],c[4]):a.call(b,c[0],c[1],c[2],c[3],c[4]);case 6:return d?a(c[0],c[1],c[2],c[3],c[4],c[5]):a.call(b,c[0],c[1],c[2],c[3],c[4],c[5]);case 7:return d?a(c[0],c[1],c[2],c[3],c[4],c[5],c[6]):a.call(b,c[0],c[1],c[2],c[3],c[4],c[5],c[6]);case 8:return d?a(c[0],c[1],c[2],c[3],c[4],c[5],c[6],c[7]):a.call(b,c[0],c[1],c[2],c[3],c[4],c[5],c[6],c[7]);case 9:return d?a(c[0],c[1],c[2],c[3],c[4],c[5],c[6],c[7],c[8]):a.call(b,c[0],c[1],c[2],c[3],c[4],c[5],c[6],c[7],c[8]);default:return a.apply(b,c)}}a.apply=b}(b=a.FUNCTION||(a.FUNCTION={}))}(c||(c={}));var c;!function(a){var b;!function(a){function b(a,b){if(0>a){for(var c=-a,d=c%8;d--;)b(--c);for(;c;)b(--c),b(--c),b(--c),b(--c),b(--c),b(--c),b(--c),b(--c)}else{for(var e=a,c=0,d=e%8,f=e/8^0;d--;)b(c++);for(;f--;)b(c++),b(c++),b(c++),b(c++),b(c++),b(c++),b(c++),b(c++)}}function c(a,b){if(0>a){for(var c=-a,d=c%8;d--;)if(!1===b(--c))return;for(;c;){if(!1===b(--c))return;if(!1===b(--c))return;if(!1===b(--c))return;if(!1===b(--c))return;if(!1===b(--c))return;if(!1===b(--c))return;if(!1===b(--c))return;if(!1===b(--c))return}}else{for(var e=a,c=0,d=e%8,f=e/8^0;d--;)if(!1===b(c++))return;for(;f--;){if(!1===b(c++))return;if(!1===b(c++))return;if(!1===b(c++))return;if(!1===b(c++))return;if(!1===b(c++))return;if(!1===b(c++))return;if(!1===b(c++))return;if(!1===b(c++))return}}}a.duff=b,a.duffbk=c}(b=a.UTILITY||(a.UTILITY={}))}(c||(c={}));var c;!function(a){var b;!function(a){function b(a,b){switch(!0){case"string"==typeof a:var d=a;return Array(b+1).join(d);case a instanceof Array:var e=a.length;if(300>b){var f=Array(b);c(-b,function(b){return f[b]=a[b%e]})}else{for(var f=a.slice();2*f.length<=b;)f=f.concat(f);f=f.concat(f.slice(0,b-f.length))}return f}}var c=a.duff;a.repeat=b}(b=a.UTILITY||(a.UTILITY={}))}(c||(c={}));var c;!function(a){var b;!function(b){var c=a.UTILITY.repeat;b.id=function(){var a={};return{rest:function(){return a}}}(),b.type=function(){function a(e,f,g,h){switch(typeof f){case"undefined":if(null===e)return"null";var i=typeof e;if("object"===i&&e instanceof Array)return"array";switch(i){case"object":return e instanceof Array?"array":b[c.call(e)]||"object";case"function":switch(e){case Boolean:case Number:case String:case Function:case Array:case Date:case RegExp:case Object:case Error:return"function"}return b[c.call(e)]||"object"}return i;case"string":var j=a(e);return f===j||f.length>j.length+5&&f.indexOf(j)>-1;default:return d(e,f,g,h)}}var b={},c=b.toString;return"Boolean Number String Function Array Date RegExp Object Error".split(/\s+/).forEach(function(a,c){return b["[object "+a+"]"]=a.toLowerCase()}),a}();var d=function(){function a(a,c,l,m,n,o){if(void 0===l&&(l=0),void 0===m&&(m=k),void 0===n&&(n=!1),void 0===o&&(o=[]),0>m)return!1;if(c.length>1&&c[c.length-1]===b.id.rest())return d(a,e(c,0,-1),l,m,!0,o);if(0===o.length&&(a=f(a,c)),n&&c.length<a.length&&(c=g(a,c)),a.length!==c.length)return!1;for(var p,q,r=0,s=a.length;s>r;r++)switch(p=a[r],q=c[r],b.type(q)){case"undefined":continue;case"null":if(null===p||void 0===p)continue;return!1;case"boolean":case"string":if(q===p)continue;return!1;case"number":if(q===p||b.type(p,"number")&&isNaN(p)&&isNaN(q))continue;return!1;case"date":if(b.type(p,"date")&&p.getUTCMilliseconds()===q.getUTCMilliseconds())continue;return!1;case"array":if(o.length&&~o.indexOf(p)){if(p===q)continue;return!1}if(p===q||b.type(p,"array")&&i(p,q,l,m-1,o.concat([p])))continue;return!1;case"object":if(o.length&&~o.indexOf(p)){if(p===q)continue;return!1}if(p===q||b.type(p,"object")&&j(p,q,l,m-1,o.concat([p])))continue;return!1;case"function":if(void 0===p||null===p||b.type(p,"number")&&isNaN(p))return!1;switch(q){case Boolean:if(b.type(p,"boolean"))continue;return!1;case Number:if(b.type(p,"number"))continue;return!1;case String:if(b.type(p,"string"))continue;return!1;case Date:if(b.type(p,"date"))continue;return!1;case Array:if(b.type(p,"array"))continue;return!1;case Object:if(b.type(p,"object"))continue;return!1;case RegExp:if(b.type(p,"regexp"))continue;return!1;case Function:case Error:default:if(!b.type(p,"function")||p===Function||h(q)?p.constructor===q||p instanceof q&&!h(q):q===p||q.toString()===p.toString()&&j(p,q,l,m-1,o.concat([p])))continue;return!1}case"error":if(void 0!==p&&null!==p&&q.constructor===p.constructor&&q.name===p.name&&q.message===p.message)continue;return!1;case"regexp":if(void 0!==p&&null!==p&&q.constructor===p.constructor&&q.source===p.source&&q.global===p.global&&q.ignoreCase===p.ignoreCase&&q.multiline===p.multiline)continue;return!1;default:throw new Error("Undefined pattern.")}return!0}function e(a,b,c){if(void 0===b&&(b=0),void 0===c&&(c=1/0),0>c)return e(a,b,a.length+c);if(0>b)return e(a,a.length+b,c);for(var d=[],f=c>a.length?a.length-1:c-1;f>=b;f--)d[f-b]=a[f];return d}function f(a,b){if(a.length<=b.length)return a;for(var c=a.length;c--&&c+1>b.length&&void 0===a[c];);return c+1===a.length?a:e(a,0,c+1)}function g(a,b){return a.length<=b.length?b:b.concat(c(e(b,-1),a.length-b.length))}function h(a){var b="string"==typeof a.name?a.name:a.toString().match(l).pop()+" ",c=b.charAt(0),d=b.charAt(1);return c>="A"&&"Z">=c&&!(d>="A"&&"Z">=d)}function i(a,b,c,f,g){return a.length<b.length-1?!1:(1===b.length&&c>0&&a.length>2*c&&(a=e(a,0,c).concat(e(a,-c))),d(a,b,c,f,1===b.length,g))}function j(a,b,c,e,f){var g=!0;for(var h in b)if(g=!1,!(h in a&&d([a[h]],[b[h]],c,e,!1,f)))return!1;if(g){for(var h in a)return!1;return!0}return!0}var k=9,l=/function\s*([^(]*)/;return a}()}(b=a.TYPE||(a.TYPE={}))}(c||(c={}));var c;!function(a){var b;!function(b){function c(a){return e(a,"object")&&"then"in a}var d=a.FUNCTION.apply,e=a.TYPE.type;b.isThenable=c,b.resolve="function"==typeof Promise?Promise.resolve.bind(Promise):function(a){return b.deferred().resolve(a)},b.reject=function(a){return b.deferred().reject(a)},b.when=function(a){function e(a,b){c(b)?b.then(function(){for(var b=[],c=0;c<arguments.length;c++)b[c-0]=arguments[c];return f(a,b)},g.reject,g.notify):f(a,[b])}function f(a,b){0!==h&&"pending"===g.state()&&(h-=1,i[a]=b,0===h&&d(g.resolve,void 0,i))}if(0===a.length)return b.deferred().resolve([]);for(var g=b.deferred(),h=a.length,i=Array(h),j=0,k=a.length;k>j;j++)e(j,a[j]);return g.promise()},b.deferred=function(){return function(a){function c(a,b,c){for(var d,e=0,g=b.length;g>e;e++){var h=b[e];c.push(h),d=f(a,[h])}return o!==l&&c.splice(0,c.length),d}function f(a,b){for(var c,e=0,f=a?b.length:0;f>e;e++)c=d(b[e],void 0,a);return c}function g(a){var b=[];if(a instanceof Array)for(var c=a.length;c--;){var d=a[c];d instanceof Array?b=b.concat(g(d)):b.push(d)}return b}var h,i,j,k,l="pending",m="resolved",n="rejected",o=l,p=[],q=[],r=[],s=[],t={state:function(){return o},progress:function(){for(var a=[],b=0;b<arguments.length;b++)a[b-0]=arguments[b];return o===l&&c(h,g(a),p),this},done:function(){for(var a=[],b=0;b<arguments.length;b++)a[b-0]=arguments[b];return(o===l||o===m)&&c(i,g(a),q),this},fail:function(){for(var a=[],b=0;b<arguments.length;b++)a[b-0]=arguments[b];return(o===l||o===n)&&c(j,g(a),r),this},always:function(){for(var a=[],b=0;b<arguments.length;b++)a[b-0]=arguments[b];return c(k,g(a),s),this},then:function(a,f,g){function k(a,b,f,g){b&&c(a,[function(){for(var a=[],c=0;c<arguments.length;c++)a[c-0]=arguments[c];var f;"function"==typeof b?(f=d(b,void 0,a),e(f,"object")&&e(f.then,"function")?f.then(s.notify,s.notify,s.notify):g(f)):(b.forEach(function(b){return d(b,void 0,a)}),g())}],f)}var s=b.deferred();return o===l&&k(h,g,p,s.notify),(o===l||o===m)&&k(i,a,q,s.resolve),(o===l||o===n)&&k(j,f,r,s.reject),s.promise()},promise:function(){return{state:t.state,progress:t.progress,done:t.done,fail:t.fail,always:t.always,then:t.then}},notify:function(){for(var a=[],b=0;b<arguments.length;b++)a[b-0]=arguments[b];return o===l&&(h=a,f(h,p)),this},resolve:function(){for(var a=[],b=0;b<arguments.length;b++)a[b-0]=arguments[b];return o===l&&(i=a,k=a,f(a,q.concat(s)),p=[],q=[],s=[],o=m),this},reject:function(){for(var a=[],b=0;b<arguments.length;b++)a[b-0]=arguments[b];return o===l&&(j=a,k=a,f(a,r.concat(s)),p=[],r=[],s=[],o=n),this}};return a&&a(t.resolve,t.reject,t.notify),t}}()}(b=a.PROMISE||(a.PROMISE={}))}(c||(c={}));var c;!function(a){var b;!function(a){a.memoize=function(a){var b;return function(){return void 0===b&&(b=a()),b}}}(b=a.FUNCTION||(a.FUNCTION={}))}(c||(c={}));var c;!function(a){var b;!function(a){a.v4=function(){return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,function(a){var b=16*Math.random()|0,c="x"===a?b:3&b|8;return c.toString(16).toUpperCase()})}}(b=a.UUID||(a.UUID={}))}(c||(c={}));var d;!function(a){a.APPLY=c.FUNCTION.apply,a.TYPE=c.TYPE.type,a.PROMISE=c.PROMISE,a.MEMOIZE=c.FUNCTION.memoize,a.UUID=c.UUID.v4;var b;!function(a){a.rest=c.TYPE.id.rest}(b=a.ID||(a.ID={}))}(d||(d={}));var d;!function(c){var d;!function(d){var e=function(){function e(f,g,h){var i=this;void 0===g&&(g=[]),void 0===h&&(h=null),this.NAME=a,this.VERSION=b,this.__LazyChain__={extensions:null,parent:null,child:null,deferred:null,command:null,monad:null,transfer:function(a,b){return i.__LazyChain__.command=[a,b],i.__LazyChain__.child=c.APPLY(d[a],void 0,[i].concat(b))}},this.lazy=function(){var a=i;return function(){for(var b=[],c=0;c<arguments.length;c++)b[c-0]=arguments[c];return a.__LazyChain__.transfer("lazy",b)}}(),this.stream=function(){var a=i;return function(){for(var b=[],c=0;c<arguments.length;c++)b[c-0]=arguments[c];return a.__LazyChain__.transfer("stream",b)}}(),this.pattern=function(){var a=i;return function(){for(var b=[],c=0;c<arguments.length;c++)b[c-0]=arguments[c];return a.__LazyChain__.transfer("pattern",b)}}(),this.monad=function(){var a=i;return function(){for(var b=[],c=0;c<arguments.length;c++)b[c-0]=arguments[c];return a.__LazyChain__.transfer("monad",b)}}(),this.monadic=function(){var a=i;return function(){for(var b=[],c=0;c<arguments.length;c++)b[c-0]=arguments[c];return a.__LazyChain__.transfer("monadic",b)}}(),this.array=function(){var a=i;return function(){var b;return a.some(function(a,c,d){return b=d}),b||[]}}(),this.prevChain=function(){var a=i;return function(){return a.__LazyChain__.parent}}(),this.nextChain=function(){var a=i;return function(){return a.__LazyChain__.child}}(),this.firstChain=function(){var a=i;return function(){return a.prevChain()&&a.prevChain().firstChain()||a}}(),this.lastChain=function(){var a=i;return function(){return a.nextChain()&&a.nextChain().lastChain()||a}}(),h&&(h.__LazyChain__.child=this,this.__LazyChain__.monad=h.__LazyChain__.monad,this.__LazyChain__.extensions=h.__LazyChain__.extensions),this.__LazyChain__.parent=h,e.map||d.extendStream_(!0,Array.prototype,0,["reverse","slice","sort","every","some","forEach","filter","map","reduce","reduceRight"]),d.mixin(this,this.__LazyChain__.deferred=c.PROMISE.deferred()),this.__LazyChain__.extensions=this.__LazyChain__.extensions||g,this.__LazyChain__.extensions.forEach(function(a){return d.emulate(i,a)});var j=this.__LazyChain__.deferred;f instanceof Array?f.length&&c.APPLY(j.notify,void 0,f):f instanceof e?f.progress(j.notify).done(j.resolve).fail(j.reject):c.PROMISE.isThenable(f)&&f.then(j.notify,j.notify,j.notify)}return e}();d.Stream=e}(d=c.CONTROLLER||(c.CONTROLLER={}))}(d||(d={}));var d;!function(a){var b;!function(b){function c(a,b){return"progress"in a&&"always"in a&&"notify"in b?a.progress(b.notify).always(b.resolve):a.then(b.resolve,b.reject),b}function d(a,b){return void 0===b&&(b=a),new v(b,a.__LazyChain__.extensions,a)}function f(b,c){return b.nextChain()?(c=c||new v(null,b.__LazyChain__.extensions),f(b.nextChain(),a.APPLY(c[b.__LazyChain__.command[0]],c,b.__LazyChain__.command[1]))):c}function g(b){if(!(a.TYPE(b,"object")&&"prototype"in b))return b;switch(b.prototype){case null:return Object.create(null);case void 0:case!1:return b;case!0:if(b.constructor&&b.constructor!==Object)return new b.constructor;var c=function(){};return c.prototype=b,new c;default:return Object.create(b)}}function h(b){var c="function"==typeof setImmediate?setImmediate:function(a){return setTimeout(a,1)};return b.lazy(function(b,d,f){if(!(d>0)){var g=e.deferred();return c(function(b){return a.APPLY(g.resolve,void 0,f)}),g}})}function i(b,c,e,f){function h(){for(var a=[],b=0;b<arguments.length;b++)a[b-0]=arguments[b];return a.reduce(i,[])}function i(b,d,g,h){var i,m=l?c(d,g,h,e,i=a.PROMISE.deferred()):c(d,g,h,e);return(i=a.PROMISE.isThenable(m)?m:i)?(f?(b.push(i),g+1===h.length&&a.PROMISE.when(b).then(j,k.notify,k.notify)):"progress"in i&&"always"in i?i.progress(k.notify).always(k.notify):i.then(k.notify,k.notify,k.notify),b):b}function j(){for(var b=[],c=0;c<arguments.length;c++)b[c-0]=arguments[c];return b.forEach(function(b){return a.APPLY(k.notify,void 0,b)})}"boolean"==typeof e&&void 0===f&&(f=e,e={}),e=g(e);var k=d(b,null),l=5===c.length;return c&&b.progress(h).always(h),k}function j(b,c){function f(){return i.notify(j.sentinel)}function g(a){return Date.now()-a>c}function h(a){return a===j.sentinel}var i=d(b),j={prototype:!0,buffer:[],sentinel:{},timer:0,last:0},k=0>c;return c=Math.abs(c),i.lazy(function(b,d,i,j){if(h(b)||j.buffer.push(b),0===j.timer)j.timer=setTimeout(f,c),j.last=Date.now();else if(k&&!h(b))clearTimeout(j.timer),j.timer=setTimeout(f,c);else if(g(j.last)||h(b)){clearTimeout(j.timer),j.timer=0,j.last=Date.now();var l=e.deferred();return a.APPLY(l.resolve,l,j.buffer.splice(0,j.buffer.length))}},j)}function k(a,b,c){function e(){for(var a=[],d=0;d<arguments.length;d++)a[d-0]=arguments[d];return a.forEach(function(a,d,e){return b(a,d,e,c)})}return void 0===c&&(c={}),c=g(c),b&&a.progress(e).always(e),d(a)}function l(d,e,f){return void 0===f&&(f=!0),e.filter(function(b){return a.PROMISE.isThenable(b)}).forEach(function(a){return c(d,a)}),f?b.cascade(d):d}function m(d,e,f){return void 0===f&&(f=!0),e.filter(function(b){return a.PROMISE.isThenable(b)}).forEach(function(a){return c(a,d)}),f?b.cascade(d):d}function n(a,b){return b.reduceRight(function(a,b){return m(f(b.firstChain()).firstChain(),[a],!1).lastChain()},a)}function o(b,c,e,f){function h(b,c){switch(!0){case!b:return[c,null];case a.PROMISE.isThenable(b):return[c,b];case b instanceof Array&&1===b.length&&!a.PROMISE.isThenable(b[0]):return b[0][""]=c,b[0];case b instanceof Array:return b.unshift(c),b[1]=b[1]||null,b}}void 0===f&&(f={}),f=g(f);var i=d(b,null),j=d(b);return e=h(e,i),j.reduce(function(a,b,d,e){a=d?a:Object.create(null);var g=c.call(void 0,b,d,e,f);return g="boolean"==typeof g?+!g:g,g in a||(a[g]=[]),a[g].push(b),a},null).forEach(function(b){Object.keys(b).filter(function(a){return!!b[a].length}).forEach(function(c){var d=c in e?e[c]||function(a){return void 0}:null;"function"==typeof d?a.APPLY(d,void 0,b[c]):a.APPLY(d.notify,void 0,b[c])})}),i}function p(b,c){function e(b){var d=Array(b.length);return b.forEach(function(b,e){for(var f,g=0,h=c.length;h>g;g++){f=g>0&&c[g-1][0]===c[g][0]?f:a.TYPE([b],[c[g][0]],1);var i=c[g],j=i.length;if(f){if(1===j)return d[e]=b;if(2===j)return d[e]=i[1](b);if(3===j&&i[1](b))return d[e]=i[2](b)}}d[e]=b}),d}c=c.concat([[void 0,function(a){return a}]]);var f=d(b,null);return b.progress(function(){for(var b=[],c=0;c<arguments.length;c++)b[c-0]=arguments[c];return a.APPLY(f.notify,void 0,e(b))}).done(function(){for(var b=[],c=0;c<arguments.length;c++)b[c-0]=arguments[c];return a.APPLY(f.resolve,void 0,e(b))}).fail(function(){for(var b=[],c=0;c<arguments.length;c++)b[c-0]=arguments[c];return a.APPLY(f.reject,void 0,e(b))}),f}function q(a){return a}function r(a){return a}function s(b,c,e){switch(void 0===e&&(e=!0),b.__LazyChain__.monad=c,e){case!0:return q(d(b.map(function(a){return c["return"].call(void 0,a)})));case!1:return q(d(b));default:return q(d(b.map(function(b){return a.TYPE([b],[e],1)?c["return"].call(void 0,b):b})))}}function t(b,c){function e(d){var e=Array(d.length);return d.forEach(function(d,f){for(var g,h=0,i=c.length;i>h;h++){g=h>0&&c[h-1][0]===c[h][0]?g:a.TYPE([d],[c[h][0]],1);var j=c[h],k=j.length,l=b.__LazyChain__.monad;if(g){if(1===k)return e[f]=d;if(2===k)return e[f]=l.bind(d,j[1]);if(3===k&&l.bind(d,j[1]))return e[f]=l.bind(d,j[2])}}e[f]=l.fail(d)}),e}c=c.concat([[void 0,r(b).__LazyChain__.monad.fail]]);var f=q(d(r(b),null));return r(b).progress(function(){for(var b=[],c=0;c<arguments.length;c++)b[c-0]=arguments[c];return a.APPLY(f.notify,void 0,e(b))}).done(function(){for(var b=[],c=0;c<arguments.length;c++)b[c-0]=arguments[c];return a.APPLY(f.resolve,void 0,e(b))}).fail(function(){for(var b=[],c=0;c<arguments.length;c++)b[c-0]=arguments[c];return a.APPLY(f.reject,void 0,e(b))}),f}function u(b,c,e,f,g){function h(b){var d,h=g?a.APPLY(f[e],f,[b].concat(c)):a.APPLY(f[e],b,c);switch(e){case"every":case"some":d=h?b:[];break;case"reduce":case"reduceRight":d=[h];break;case"forEach":d=[];break;default:d=h instanceof Array?h:[]}return d}var i=b.__LazyChain__.child=d(b,null);return b.progress(function(){for(var b=[],c=0;c<arguments.length;c++)b[c-0]=arguments[c];return a.APPLY(i.notify,void 0,h(b))}).done(function(){for(var b=[],c=0;c<arguments.length;c++)b[c-0]=arguments[c];return a.APPLY(i.resolve,void 0,h(b))}).fail(function(){for(var b=[],c=0;c<arguments.length;c++)b[c-0]=arguments[c];return a.APPLY(i.reject,void 0,h(b))}),i}var v=a.CONTROLLER.Stream;b.cascade=d,b.immediate=h,b.lazy=i,b.buffer=j,b.stream=k,b.branch=l,b.merge=m,b.compose=n,b.split=o,b.pattern=p,b.monad=s,b.monadic=t,b.emulator=u}(b=a.MODEL||(a.MODEL={}))}(d||(d={}));var c;!function(a){var b;!function(b){function c(a){try{return a&&"object"==typeof a?JSON.stringify(a):a+""}catch(b){return a+""}}function d(a,b,c){var d;if(b in a){if(d=a[b],d[0][0]!==c)for(var e=1,f=d.length;f>e;e++)if(d[e][0]===c){d.unshift(d.splice(e,1).pop());break}}else d=a[b]=[[c,void 0,Object.create(null)]];return d}function e(a,b,c,d,e,g){var h=a[0];return 0===a.length||h[0]!==b?(h=[b,f(c,void 0,d),Object.create(null)],a.unshift(h)):void 0===h[1]&&(h[1]=f(c,void 0,d)),a.length>e+g&&a.splice(e,e+g),h}var f=a.FUNCTION.apply;b.cache=function(a,b){void 0===b&&(b=5);var f,g,h;return function(){for(var i=[],j=0;j<arguments.length;j++)i[j-0]=arguments[j];var k,l,m=arguments.length;if(0===m)return void 0===h&&(h=a()),h;g=void 0===g?b>20&&10||Math.floor(b/2):g;for(var n,o=f=f||Object.create(null),p=0;m>p;p++)o=p?n[2]:o,k=i[p],l=k&&"object"==typeof k?c(k):k+"",n=e(d(o,l,k),k,a,i,b,g);return n[1]}}}(b=a.FUNCTION||(a.FUNCTION={}))}(c||(c={}));var c;!function(a){var b;!function(b){var c=a.FUNCTION.cache;b.store=function(a){void 0===a&&(a=10);var b,d=c(function(a){return b},a),e=function(a,c){return b=c,d(a)};return function(a,b){if(void 0===b)return e(a);if(b===e(a,b))return b;throw Error(a)}}}(b=a.UTILITY||(a.UTILITY={}))}(c||(c={}));var c;!function(a){var b;!function(b){function c(){for(var a=[],b=0;b<arguments.length;b++)a[b-0]=arguments[b];return function(){for(var b=[],c=0;c<arguments.length;c++)b[c-0]=arguments[c];return d(a,b)}}function d(a,b){for(var c=0;c<a.length;c++){var d=a[c],g=d[0],h=d.length>=2?d[2]:null,i=1===d.length?null:h?d[2]:d[1];if(e.type(b,g)&&i&&(!h||f(h,void 0,b)))return f(i,void 0,b)}throw new Error("non-exhaustive dispatch")}var e=a.TYPE,f=a.FUNCTION.apply;b.dispatcher=c,c.one=c,c.two=c,c.three=c,c.four=c}(b=a.FUNCTION||(a.FUNCTION={}))}(c||(c={}));var d;!function(a){var b;!function(b){function d(){var d;return d=function(){for(var c=[],d=0;d<arguments.length;d++)c[d-0]=arguments[d];return a.APPLY(b.core,void 0,c)},d.id=a.ID,d.uuid=a.UUID,d.args2array=c.FUNCTION.args2array,d.type=a.TYPE,d.memoize=c.FUNCTION.memoize,d.cache=c.FUNCTION.cache,d.store=c.UTILITY.store,d.resolve=a.PROMISE.resolve,d.reject=a.PROMISE.reject,d.deferred=a.PROMISE.deferred,d.when=a.PROMISE.when,d.dispatcher=c.FUNCTION.dispatcher,d.repeat=c.UTILITY.repeat,d.duff=c.UTILITY.duff,d.duffbk=c.UTILITY.duffbk,d}function f(){for(var c=[],d=0;d<arguments.length;d++)c[d-0]=arguments[d];switch(!0){case a.TYPE(c,[!0]):return void g(!0,!1);case a.TYPE(c,[!1]):return void g(!1,!1);case a.TYPE(c,[!0,Array.prototype]):return void g(!0,!0);case a.TYPE(c,[!1,Array.prototype]):return void g(!1,!0);case a.TYPE(c,[!0,Function]):return void h(!0,c[1],1);case a.TYPE(c,[!1,Function]):return void h(!1,c[1],1);case a.TYPE(c,[]):return new b.Stream;case a.TYPE(c,[Function]):return new b.Stream(void 0,[c[0]]);case a.TYPE(c,[Array]):return new b.Stream(c[0]);case a.TYPE(c,[Array,Function]):return new b.Stream(c[0],[c[1]]);case a.TYPE(c,[Object,Function]):return new b.Stream(c[0],[c[1]]);case a.TYPE(c,[Object,a.ID.rest()]):return(new b.Stream).stream(c)}}function g(c,d){["lazy","stream"].forEach(function(f){c?Object.defineProperty(Array.prototype,f,{configurable:!0,writable:!0,enumerable:d,value:function(){for(var c=[],d=0;d<arguments.length;d++)c[d-0]=arguments[d];return a.APPLY(b[f],void 0,[e(this)].concat(c))}}):delete Array.prototype[f]})}function h(c,d,e,f){void 0===f&&(f=[]),c?Object.keys(d).concat(f).filter(function(a){return!b.Stream.prototype[a]&&"function"==typeof d[a]}).forEach(function(c){b.Stream.prototype[c]=function(){for(var b=[],f=0;f<arguments.length;f++)b[f-0]=arguments[f];return this.__LazyChain__.command=[c,b],a.MODEL.emulator(this,b,c,d,e)},Object.defineProperty(b.Stream.prototype[c],"provider",{configurable:!1,writable:!1,enumerable:!1,value:d})}):Object.keys(d).concat(f).filter(function(a){return!!b.Stream.prototype[a]&&b.Stream.prototype[a].provider===d}).forEach(function(a){return delete b.Stream.prototype[a]})}function i(){for(var c=[],d=0;d<arguments.length;d++)c[d-0]=arguments[d];var e=c[0];switch(!0){case a.TYPE(c,[b.Stream,Function]):return a.MODEL.lazy(e,c[1]);case a.TYPE(c,[b.Stream,Function,Boolean]):return a.MODEL.lazy(e,c[1],c[2]);case a.TYPE(c,[b.Stream,Function,void 0]):return a.MODEL.lazy(e,c[1],c[2]);case a.TYPE(c,[b.Stream,Function,void 0,Boolean]):return a.MODEL.lazy(e,c[1],c[2],c[3]);case a.TYPE(c,[b.Stream]):return a.MODEL.immediate(e);case a.TYPE(c,[b.Stream,Number]):return a.MODEL.buffer(e,c[1]);default:return a.MODEL.stream(e,void 0)}}function j(){for(var c=[],d=0;d<arguments.length;d++)c[d-0]=arguments[d];var e=c[0];switch(!0){case a.TYPE(c,[b.Stream,Function]):return a.MODEL.stream(e,c[1]);case a.TYPE(c,[b.Stream,Function,void 0]):return a.MODEL.stream(e,c[1],c[2]);case a.TYPE(c,[b.Stream,Object,a.ID.rest()]):return a.MODEL.compose(e,c.slice(1));case a.TYPE(c,[b.Stream]):return e;case a.TYPE(c,[b.Stream,!0,[Object]]):return a.MODEL.branch(e,c[2]);case a.TYPE(c,[b.Stream,!1,[Object]]):return a.MODEL.branch(e,c[2]),a.MODEL.cascade(e,null);case a.TYPE(c,[b.Stream,Array,Object]):case a.TYPE(c,[b.Stream,Array,null]):case a.TYPE(c,[b.Stream,Array,Object]):case a.TYPE(c,[b.Stream,Array,null]):return a.MODEL.split(e,function(b){return a.TYPE([b],c[1])},c[2]);case a.TYPE(c,[b.Stream,Function,Object,void 0]):case a.TYPE(c,[b.Stream,Function,[Object],void 0]):return a.MODEL.split(e,c[1],c[2],c[3]);case a.TYPE(c,[b.Stream,String,Object]):case a.TYPE(c,[b.Stream,String,null]):return a.MODEL.split(e,function(b){return a.TYPE(b)===c[1]},c[2]);case a.TYPE(c,[b.Stream,[Object]]):return a.MODEL.merge(e,c[1]);default:return a.MODEL.stream(e,void 0)}}function k(b){for(var c=[],d=1;d<arguments.length;d++)c[d-1]=arguments[d];return a.MODEL.pattern(b,c)}function l(b,c,d){return a.MODEL.monad(b,c,d)}function m(b){for(var c=[],d=1;d<arguments.length;d++)c[d-1]=arguments[d];return a.MODEL.monadic(b,c)}function n(a,b,c,d){return void 0===c&&(c=[]),void 0===d&&(d=1),Object.keys(b).concat(c).filter(function(c){return!a[c]&&"function"==typeof b[c]}).forEach(function(c){return a[c]=b[c]}),a}function o(b,c,d,e,f){return void 0===d&&(d=[]),void 0===e&&(e=1),void 0===f&&(f=!1),Object.keys(c).concat(d).filter(function(a){return f||!b[a]&&"function"==typeof c[a]}).forEach(function(d){return b[d]=function(){for(var f=[],g=0;g<arguments.length;g++)f[g-0]=arguments[g];return b.__LazyChain__.command=[d,f],a.MODEL.emulator(b,f,d,c,e)}}),b}b.handle=d,b.core=f,b.extendArray_=g,b.extendStream_=h,b.lazy=i,b.stream=j,b.pattern=k,b.monad=l,b.monadic=m,b.mixin=n,b.emulate=o}(b=a.CONTROLLER||(a.CONTROLLER={}))}(d||(d={}));var e,d;!function(a){switch(e=e||a.CONTROLLER.handle(),!0){case"object"==typeof module&&!!module&&module.exports instanceof Object:module.exports=e;break;case"object"==typeof window&&!!window&&window.window===window:window.LazyChain=e}}(d||(d={}))}("lazychain","0.3.0-alpha.18");

@@ -18,4 +18,4 @@ /**

<T>(stream: LazyChain<T>, extend?: any, offset?: number): LazyChain<T>
<T>(...streams: LazyChain.Thenable<T>[]): LazyChain<T>
id: LazyChain.Id
<T>(...streams: LAZYCHAIN.Thenable<T>[]): LazyChain<T>
id: LAZYCHAIN.Id
uuid(): string

@@ -29,12 +29,13 @@ args2array(args: IArguments): any[]

store<T, U>(size?: number): { (key: T, value?: U): U }
resolve<T>(...values: T[]): LazyChain.Thenable<T>
reject<T>(...values: T[]): LazyChain.Thenable<T>
when<T>(promises: LazyChain.Thenable<T>[]): LazyChain.WhenThen<T>
deferred<T>(callback?: (resolve: (...values: T[]) => any, reject?: (...values: T[]) => any, notify?: (...values: T[]) => any) => any): LazyChain.Deferred<T>
resolve<T>(...values: T[]): LAZYCHAIN.Thenable<T>
reject<T>(...values: T[]): LAZYCHAIN.Thenable<T>
when<T>(promises: LAZYCHAIN.Thenable<T>[]): LAZYCHAIN.WhenThen<T>
deferred<T>(callback?: (resolve: (...values: T[]) => any, reject?: (...values: T[]) => any, notify?: (...values: T[]) => any) => any): LAZYCHAIN.Deferred<T>
dispatcher: LAZYCHAIN.Dispatcher
}
interface LazyChain<T> extends LazyChain.Stream<T> {
interface LazyChain<T> extends LAZYCHAIN.Stream<T> {
}
interface LazyMonad<T, M> extends LazyChain.MonadStream<T, M> {
interface LazyMonad<T, M> extends LAZYCHAIN.MonadStream<T, M> {
}

@@ -46,6 +47,6 @@

interface Array<T> extends LazyChain.StreamMethod<T> {
interface Array<T> extends LAZYCHAIN.StreamMethod<T> {
}
declare module LazyChain {
declare module LAZYCHAIN {

@@ -222,3 +223,43 @@ interface Id {

}
interface Dispatcher {
<T, S>(...patterns:
Array<
[[T|Function], (param?: T) => S]|
[[T|Function], (param?: T) => boolean, (param?: T) => S]
>
): (param?: T) => S;
one<T, S>(...patterns:
Array<
[[T|Function], (p1?: T) => S]|
[[T|Function], (p1?: T) => boolean, (p1?: T) => S]
>
): (p1?: T) => S;
two<T, U, S>(...patterns:
Array<
[[T|Function, U|Function], (p1?: T, p2?: U) => S]|
[[T|Function, U|Function], (p1?: T, p2?: U) => boolean, (p1?: T, p2?: U) => S]
>
): (p1?: T, p2?: U) => S;
three<T, U, V, S>(...patterns:
Array<
[[T|Function, U|Function, V|Function], (p1?: T, p2?: U, p3?: V) => S]|
[[T|Function, U|Function, V|Function], (p1?: T, p2?: U, p3?: V) => boolean, (p1?: T, p2?: U, p3?: V) => S]
>
): (p1?: T, p2?: U, p3?: V) => S;
four<T, U, V, W, S>(...patterns:
Array<
[
[T|Function, U|Function, V|Function, W|Function],
(p1?: T, p2?: U, p3?: V, p4?: W) => S
]|
[
[T|Function, U|Function, V|Function, W|Function],
(p1?: T, p2?: U, p3?: V, p4?: W) => boolean,
(p1?: T, p2?: U, p3?: V, p4?: W) => S
]
>
): (p1?: T, p2?: U, p3?: V, p4?: W) => S;
}
}

@@ -47,2 +47,6 @@ ---

## [dispatcher()]({{ site.basepath }}api/dispatcher/)
Generate double dispatch function.
## [memoize()]({{ site.basepath }}api/memoize/)

@@ -49,0 +53,0 @@

@@ -29,3 +29,3 @@ ---

## type(target: Arguments | any[], pattern: any[], cut: number = 1, depth: number = 9): string
## type(target: Arguments | any[], pattern: any[], cut: number = 0, depth: number = 9): string

@@ -32,0 +32,0 @@ Pattern matching.

@@ -11,2 +11,48 @@ ---

## 0.3.0 alpha 18
Add `dispatcher` function.
### Highlights
* Add `dispatcher` function.
* Change `type` function 3rd parameter default value.
* Improve type detection and type comparison performance.
### Compatibility
<table>
<thead><tr><th>Behavior</th><th>Detail</th></tr></thead>
<tr><td>Change</td><td><ul>
<li>Change <code>type</code> function behavior of array pattern matching.</li>
</ul></td></tr>
<tr><td>Add</td><td>-</td></tr>
<tr><td>Fix</td><td>-</td></tr>
</table>
<table>
<thead><tr><th>Interface</th><th>Detail</th></tr></thead>
<tr><td>Change</td><td>-</td></tr>
<tr><td>Add</td><td><ul>
<li>Add <code>dispatcher</code> function.</li>
</ul></td></tr>
<tr><td>Fix</td><td>-</td></tr>
</table>
<table>
<thead><tr><th>Spec</th><th>Detail</th></tr></thead>
<tr><td>Change</td><td><ul>
<li>Change <code>type</code> function spec of array pattern matching.</li>
</ul></td></tr>
<tr><td>Add</td><td><ul>
<li>Add <code>dispatcher</code> function spec.</li>
</ul></td></tr>
<tr><td>Fix</td><td>-</td></tr>
</table>
### Diff
[compare](https://github.com/falsandtru/lazychain/compare/v0.3.0-alpha.17...v0.3.0-alpha.18)
## 0.3.0 alpha 17

@@ -13,0 +59,0 @@

@@ -702,2 +702,3 @@ ---

* 未定義のパターンのデータはそのまま通過する
* 配列パターンは配列の先頭と末尾の各1要素のみを検査し全要素の型は保証しない

@@ -883,7 +884,3 @@ <pre class="sh brush: js;">

要素数の多いタプルやオブジェクトのパターンは遅くなりやすいため注意。
配列パターンは既定では第三引数の初期値により配列の先頭と末尾の各1要素のみが検査される。
全要素を検査するには第三引数に`0`を設定するか、またはレストIDを使用して要素数不定のタプルとして表現する。
ストリームメソッドのパターンマッチ機能はこの関数により提供される。
Type |byValue|byType

@@ -909,2 +906,3 @@ ----------|:-----:|:-----:

* オブジェクトはメンバとその値が同じであれば同一とみなす
* 配列のパターンマッチは全要素の比較と先頭末尾双方から指定数の要素のみの比較を可能とする
* ネストが規定値を超える場合不一致とみなす

@@ -1011,1 +1009,44 @@ * ネストが深いオブジェクトは型比較のみ可能となる

</pre>
### dispatcher
パターンマッチによるダブルディスパッチを行う関数を生成する。
いずれのパターンにも一致しないパラメータが与えられた場合はエラーとなる。
otherwiseに`undefined`を使用する。
ネイティブ関数と比較して1千倍から1万倍以上低速でありかなりのオーバーヘッドとなるため多用はできない。
<pre class="sh brush: js;">
inc = LazyChain
.dispatcher([
// zero
[0],
_ => 0
], [
// positive
[Number], n => n > 0,
inc
], [
// negative
[Number],
n => -inc(-n)
], [
// NaN
[NaN],
_ => 0
], [
// otherwise
undefined,
_ => {throw JSON.stringify(arguments)}
]);
function inc(n) {
return n + 1;
}
console.log(inc(0)); // 0
console.log(inc(1)); // 2
console.log(inc(-1)); // -2
console.log(inc(NaN)); // 0
console.log(inc(0, 0)); // {"0":0,"1":0}
</pre>
{
"name": "lazychain",
"version": "0.3.0-alpha.17",
"version": "0.3.0-alpha.18",
"description": "",

@@ -5,0 +5,0 @@ "private": false,

@@ -18,4 +18,4 @@ /**

<T>(stream: LazyChain<T>, extend?: any, offset?: number): LazyChain<T>
<T>(...streams: LazyChain.Thenable<T>[]): LazyChain<T>
id: LazyChain.Id
<T>(...streams: LAZYCHAIN.Thenable<T>[]): LazyChain<T>
id: LAZYCHAIN.Id
uuid(): string

@@ -29,12 +29,13 @@ args2array(args: IArguments): any[]

store<T, U>(size?: number): { (key: T, value?: U): U }
resolve<T>(...values: T[]): LazyChain.Thenable<T>
reject<T>(...values: T[]): LazyChain.Thenable<T>
when<T>(promises: LazyChain.Thenable<T>[]): LazyChain.WhenThen<T>
deferred<T>(callback?: (resolve: (...values: T[]) => any, reject?: (...values: T[]) => any, notify?: (...values: T[]) => any) => any): LazyChain.Deferred<T>
resolve<T>(...values: T[]): LAZYCHAIN.Thenable<T>
reject<T>(...values: T[]): LAZYCHAIN.Thenable<T>
when<T>(promises: LAZYCHAIN.Thenable<T>[]): LAZYCHAIN.WhenThen<T>
deferred<T>(callback?: (resolve: (...values: T[]) => any, reject?: (...values: T[]) => any, notify?: (...values: T[]) => any) => any): LAZYCHAIN.Deferred<T>
dispatcher: LAZYCHAIN.Dispatcher
}
interface LazyChain<T> extends LazyChain.Stream<T> {
interface LazyChain<T> extends LAZYCHAIN.Stream<T> {
}
interface LazyMonad<T, M> extends LazyChain.MonadStream<T, M> {
interface LazyMonad<T, M> extends LAZYCHAIN.MonadStream<T, M> {
}

@@ -46,6 +47,6 @@

interface Array<T> extends LazyChain.StreamMethod<T> {
interface Array<T> extends LAZYCHAIN.StreamMethod<T> {
}
declare module LazyChain {
declare module LAZYCHAIN {

@@ -222,3 +223,43 @@ interface Id {

}
interface Dispatcher {
<T, S>(...patterns:
Array<
[[T|Function], (param?: T) => S]|
[[T|Function], (param?: T) => boolean, (param?: T) => S]
>
): (param?: T) => S;
one<T, S>(...patterns:
Array<
[[T|Function], (p1?: T) => S]|
[[T|Function], (p1?: T) => boolean, (p1?: T) => S]
>
): (p1?: T) => S;
two<T, U, S>(...patterns:
Array<
[[T|Function, U|Function], (p1?: T, p2?: U) => S]|
[[T|Function, U|Function], (p1?: T, p2?: U) => boolean, (p1?: T, p2?: U) => S]
>
): (p1?: T, p2?: U) => S;
three<T, U, V, S>(...patterns:
Array<
[[T|Function, U|Function, V|Function], (p1?: T, p2?: U, p3?: V) => S]|
[[T|Function, U|Function, V|Function], (p1?: T, p2?: U, p3?: V) => boolean, (p1?: T, p2?: U, p3?: V) => S]
>
): (p1?: T, p2?: U, p3?: V) => S;
four<T, U, V, W, S>(...patterns:
Array<
[
[T|Function, U|Function, V|Function, W|Function],
(p1?: T, p2?: U, p3?: V, p4?: W) => S
]|
[
[T|Function, U|Function, V|Function, W|Function],
(p1?: T, p2?: U, p3?: V, p4?: W) => boolean,
(p1?: T, p2?: U, p3?: V, p4?: W) => S
]
>
): (p1?: T, p2?: U, p3?: V, p4?: W) => S;
}
}

@@ -6,2 +6,3 @@ /// <reference path="../define.ts"/>

/// <reference path="../library/store.ts"/>
/// <reference path="../library/dispatcher.ts"/>

@@ -14,3 +15,3 @@ /* CONTROLLER */

interface LazyMonad<T, M> extends LazyChain.Deferred<M> { }
interface LazyMonad<T, M> extends LAZYCHAIN.Deferred<M> { }

@@ -33,2 +34,3 @@ export function handle(): typeof LazyChain {

lazychain.when = PROMISE.when;
lazychain.dispatcher = <any>LIBRALY.FUNCTION.dispatcher;

@@ -46,3 +48,3 @@ (<any>lazychain).repeat = LIBRALY.UTILITY.repeat;

export function core<T>(data: T[], extension?: any): LazyChain<T>
export function core<T>(stream: LazyChain.Promise<T>, extension?: Function): LazyChain<T>
export function core<T>(stream: LAZYCHAIN.Promise<T>, extension?: Function): LazyChain<T>
export function core<T>(...streams: LazyChain<T>[]): LazyChain<T>

@@ -142,12 +144,12 @@ export function core<T>(...args: any[]): any {

case TYPE(args, [Stream, Function]):
return MODEL.lazy(context, <LazyChain.CallbackAsync<T, U, any>>args[1]);
return MODEL.lazy(context, <LAZYCHAIN.CallbackAsync<T, U, any>>args[1]);
case TYPE(args, [Stream, Function, Boolean]):
return MODEL.lazy(context, <LazyChain.CallbackAsync<T, U, any>>args[1], <boolean>args[2]);
return MODEL.lazy(context, <LAZYCHAIN.CallbackAsync<T, U, any>>args[1], <boolean>args[2]);
case TYPE(args, [Stream, Function, void 0]):
return MODEL.lazy(context, <LazyChain.CallbackAsync<T, U, any>>args[1], <boolean>args[2]);
return MODEL.lazy(context, <LAZYCHAIN.CallbackAsync<T, U, any>>args[1], <boolean>args[2]);
case TYPE(args, [Stream, Function, void 0, Boolean]):
return MODEL.lazy(context, <LazyChain.CallbackAsync<T, U, any>>args[1], <any>args[2], <boolean>args[3]);
return MODEL.lazy(context, <LAZYCHAIN.CallbackAsync<T, U, any>>args[1], <any>args[2], <boolean>args[3]);

@@ -220,3 +222,3 @@ // immediate

export function monad<T, M>
(context: StreamInterface<T>|StreamInterface<M>, monad: LazyChain.Monad<T, M>, convert?: boolean): LazyMonad<T, M> {
(context: StreamInterface<T>|StreamInterface<M>, monad: LAZYCHAIN.Monad<T, M>, convert?: boolean): LazyMonad<T, M> {
return MODEL.monad<T, M>(context, monad, convert);

@@ -230,3 +232,3 @@ }

export function mixin<T>(context: StreamInterface<T>, source: T[]|LazyChain.Deferred<T>, method: string[]= [], offset: number = 1): LazyChain<T> {
export function mixin<T>(context: StreamInterface<T>, source: T[]|LAZYCHAIN.Deferred<T>, method: string[]= [], offset: number = 1): LazyChain<T> {
// deferred

@@ -233,0 +235,0 @@ Object.keys(source)

@@ -11,3 +11,3 @@ /// <reference path="../define.ts"/>

constructor(message?: T[]|LazyChain.Promise<T>, extensions: Function[]|{}[] = [], parent: StreamInterface<T> = null) {
constructor(message?: T[]|LAZYCHAIN.Promise<T>, extensions: Function[]|{}[] = [], parent: StreamInterface<T> = null) {
if (parent) {

@@ -38,3 +38,3 @@ parent.__LazyChain__.child = this;

var deferred: LazyChain.Deferred<T> = this.__LazyChain__.deferred;
var deferred: LAZYCHAIN.Deferred<T> = this.__LazyChain__.deferred;
if (message instanceof Array) {

@@ -49,4 +49,4 @@ (<T[]>message).length && APPLY(deferred.notify, void 0, <T[]>message);

}
else if (PROMISE.isThenable(<LazyChain.Promise<T>>message)) {
(<LazyChain.Promise<T>>message)
else if (PROMISE.isThenable(<LAZYCHAIN.Promise<T>>message)) {
(<LAZYCHAIN.Promise<T>>message)
.then(deferred.notify, deferred.notify, deferred.notify);

@@ -53,0 +53,0 @@ }

@@ -17,5 +17,5 @@ /// <reference path=".d/lazychain.d.ts"/>

(resolve?: typeof Promise.resolve, reject?: typeof Promise.reject): any
resolve<T>(value: T): LazyChain.Thenable<T>
reject<T>(value: T): LazyChain.Thenable<T>
all<T>(promises: (T|LazyChain.Thenable<T>)[]): LazyChain.Thenable<T>
resolve<T>(value: T): LAZYCHAIN.Thenable<T>
reject<T>(value: T): LAZYCHAIN.Thenable<T>
all<T>(promises: (T|LAZYCHAIN.Thenable<T>)[]): LAZYCHAIN.Thenable<T>
};

@@ -40,4 +40,4 @@

child: StreamInterface<any>
deferred: LazyChain.Deferred<T>
monad: LazyChain.Monad<T, any>
deferred: LAZYCHAIN.Deferred<T>
monad: LAZYCHAIN.Monad<T, any>
command: [string, any[]]

@@ -44,0 +44,0 @@ };

@@ -9,3 +9,3 @@ /// <reference path="apply.ts"/>

export function isThenable<T>(target: LazyChain.Thenable<T>): boolean {
export function isThenable<T>(target: LAZYCHAIN.Thenable<T>): boolean {
return TYPE(target, 'object') && 'then' in target;

@@ -21,5 +21,5 @@ }

// notifyサポートのためネイティブメソッドは使用しない
export var when = function <T>(promises: (T|LazyChain.Thenable<T>)[]): LazyChain.WhenThen<T> {
export var when = function <T>(promises: (T|LAZYCHAIN.Thenable<T>)[]): LAZYCHAIN.WhenThen<T> {
if (promises.length === 0) { return <any>deferred<T>().resolve(<any>[]); }
var dfd: LazyChain.Deferred<T> = deferred<T>(),
var dfd: LAZYCHAIN.Deferred<T> = deferred<T>(),
count = promises.length,

@@ -32,5 +32,5 @@ waits: T[][] = Array(count);

function register(index: number, arg: T|LazyChain.Thenable<T>) {
if (isThenable(<LazyChain.Promise<T>>arg)) {
(<LazyChain.Thenable<T>>arg)
function register(index: number, arg: T|LAZYCHAIN.Thenable<T>) {
if (isThenable(<LAZYCHAIN.Promise<T>>arg)) {
(<LAZYCHAIN.Thenable<T>>arg)
.then((...args) => done(index, args), dfd.reject, dfd.notify);

@@ -67,7 +67,7 @@ }

listenerAlwaysCallbacks = [],
dfd: LazyChain.Deferred<T> = <LazyChain.Deferred<T>>{
dfd: LAZYCHAIN.Deferred<T> = <LAZYCHAIN.Deferred<T>>{
state: function () {
return state;
},
progress: <(...args: Array<Function|Function[]>) => LazyChain.Promise<T>>function (...args) {
progress: <(...args: Array<Function|Function[]>) => LAZYCHAIN.Promise<T>>function (...args) {
if (state === statePending) {

@@ -78,3 +78,3 @@ registerWithCall(memoryNotify, flatten(args), listenerProgressCallbacks);

},
done: <(...args: Array<Function|Function[]>) => LazyChain.Promise<T>>function (...args) {
done: <(...args: Array<Function|Function[]>) => LAZYCHAIN.Promise<T>>function (...args) {
if (state === statePending || state === stateResolved) {

@@ -85,3 +85,3 @@ registerWithCall(memoryResolve, flatten(args), listenerDoneCallbacks);

},
fail: <(...args: Array<Function|Function[]>) => LazyChain.Promise<T>>function (...args) {
fail: <(...args: Array<Function|Function[]>) => LAZYCHAIN.Promise<T>>function (...args) {
if (state === statePending || state === stateRejected) {

@@ -92,9 +92,9 @@ registerWithCall(memoryReject, flatten(args), listenerFailCallbacks);

},
always: <(...args: Array<Function|Function[]>) => LazyChain.Promise<T>>function (...args) {
always: <(...args: Array<Function|Function[]>) => LAZYCHAIN.Promise<T>>function (...args) {
registerWithCall(memoryAlways, flatten(args), listenerAlwaysCallbacks);
return this;
},
then: <(done?: Function|Function[], fail?: Function|Function[], progress?: Function|Function[]) => LazyChain.Promise<T|void>>
then: <(done?: Function|Function[], fail?: Function|Function[], progress?: Function|Function[]) => LAZYCHAIN.Promise<T|void>>
function (doneCallbacks: Function|Function[], failCallbacks: Function|Function[], progressCallbacks: Function|Function[]) {
var nextDfd: LazyChain.Deferred<T> = deferred<T>();
var nextDfd: LAZYCHAIN.Deferred<T> = deferred<T>();
// progress

@@ -136,3 +136,3 @@ if (state === statePending) {

},
promise: <() => LazyChain.Promise<T>>function () {
promise: <() => LAZYCHAIN.Promise<T>>function () {
return {

@@ -147,3 +147,3 @@ state: dfd.state,

},
notify: <(...args: any[]) => LazyChain.Deferred<T>>function (...args) {
notify: <(...args: any[]) => LAZYCHAIN.Deferred<T>>function (...args) {
if (state === statePending) {

@@ -155,3 +155,3 @@ memoryNotify = args;

},
resolve: <(...args: any[]) => LazyChain.Promise<T>>function (...args) {
resolve: <(...args: any[]) => LAZYCHAIN.Promise<T>>function (...args) {
if (state === statePending) {

@@ -170,3 +170,3 @@ memoryResolve = args;

},
reject: <(...args: any[]) => LazyChain.Promise<T>>function (...args) {
reject: <(...args: any[]) => LAZYCHAIN.Promise<T>>function (...args) {
if (state === statePending) {

@@ -173,0 +173,0 @@ memoryReject = args;

@@ -29,5 +29,25 @@ /// <reference path="repeat.ts"/>

var tgttypeof = typeof target;
return tgttypeof === 'object' || tgttypeof === 'function'
? TYPES[toString.call(target)] || 'object'
: tgttypeof;
if (tgttypeof === 'object' && target instanceof Array) { return 'array'; }
switch (tgttypeof) {
case 'object':
if (target instanceof Array) {
return 'array';
}
return TYPES[toString.call(target)] || 'object';
case 'function':
switch (target) {
case Boolean:
case Number:
case String:
case Function:
case Array:
case Date:
case RegExp:
case Object:
case Error:
return 'function';
}
return TYPES[toString.call(target)] || 'object';
}
return tgttypeof;

@@ -52,3 +72,3 @@ case 'string':

patterns: any[],
cut: number = 1,
cut: number = 0,
depth: number = MAX_DEPTH,

@@ -61,7 +81,6 @@ rest: boolean = false,

if (patterns.length > 1 && patterns[patterns.length - 1] === id.rest()) {
return compare(args, patterns.slice(0, -1), cut, depth, true, acc);
return compare(args, clone(patterns, 0, -1), cut, depth, true, acc);
}
if (acc.length === 0) {
args = clone(args);
// 末尾のundefinedを削除

@@ -211,24 +230,24 @@ args = compact(<any[]>args, patterns);

function clone(arr: any[]|IArguments): any[] {
if (arr instanceof Array) {
return arr.slice();
function clone(arr: any[]|IArguments, begin = 0, end = Infinity): any[] {
if (end < 0) { return clone(arr, begin, arr.length + end); }
if (begin < 0) { return clone(arr, arr.length + begin, end); }
var args_ = [];
for (var _i = end > arr.length ? arr.length - 1 : end - 1; _i >= begin; _i--) {
args_[_i - begin] = arr[_i];
}
else {
var args_ = [];
for (var _i = 0; _i < arr.length; _i++) {
args_[_i - 0] = arr[_i];
}
return args_;
}
return args_;
}
function compact(args: any[], patterns: any[]) {
for (var i = args.length; void 0 === args[--i] && i + 1 > patterns.length;) {
if (args.length <= patterns.length) { return args; }
for (var i = args.length; i-- && i + 1 > patterns.length && void 0 === args[i];) {
continue;
}
return args.slice(0, i + 1);
return i + 1 === args.length ? args : clone(args, 0, i + 1);
}
function expand(args: any[], patterns: any[]) {
return patterns.concat(REPEAT(patterns.slice(-1), args.length - patterns.length));
if (args.length <= patterns.length) { return patterns; }
return patterns.concat(REPEAT(clone(patterns, -1), args.length - patterns.length));
}

@@ -249,3 +268,3 @@

if (pattern.length === 1 && cut > 0 && arg.length > cut * 2) {
arg = arg.slice(0, cut).concat(arg.slice(-cut));
arg = clone(arg, 0, cut).concat(clone(arg, -cut));
}

@@ -252,0 +271,0 @@ return compare(arg, pattern, cut, depth, pattern.length === 1, acc);

@@ -12,7 +12,7 @@ /// <reference path="../define.ts"/>

interface LazyMonad<T, M> extends LazyChain.Deferred<M> { }
interface LazyMonad<T, M> extends LAZYCHAIN.Deferred<M> { }
function connect<T>(inbound: LazyChain.Then<T>, outbound: StreamInterface<T>): StreamInterface<T> {
function connect<T>(inbound: LAZYCHAIN.Then<T>, outbound: StreamInterface<T>): StreamInterface<T> {
if ('progress' in inbound && 'always' in inbound && 'notify' in outbound) {
(<LazyChain.Promise<T>>inbound)
(<LAZYCHAIN.Promise<T>>inbound)
.progress(outbound.notify)

@@ -37,3 +37,3 @@ .always(outbound.resolve);

function environment<V extends LazyChain.Env>(env: V): V {
function environment<V extends LAZYCHAIN.Env>(env: V): V {
if (!TYPE(env, 'object') || !('prototype' in env)) { return env; }

@@ -71,5 +71,5 @@ switch (env.prototype) {

export function lazy<T, U, V extends LazyChain.Env>(
export function lazy<T, U, V extends LAZYCHAIN.Env>(
inbound: StreamInterface<T>,
callback?: LazyChain.CallbackAsync<T, U, V>,
callback?: LAZYCHAIN.CallbackAsync<T, U, V>,
env?: V,

@@ -92,4 +92,4 @@ sequential?: boolean

function conv(r: LazyChain.Deferred<U>[], v: T, i: number, a: T[]) {
var deferred: LazyChain.Deferred<U>;
function conv(r: LAZYCHAIN.Deferred<U>[], v: T, i: number, a: T[]) {
var deferred: LAZYCHAIN.Deferred<U>;
var result = gendefer ? callback(v, i, a, env, deferred = PROMISE.deferred<U>()) : callback(v, i, a, env);

@@ -171,5 +171,5 @@ deferred = PROMISE.isThenable(result) ? result : deferred;

export function stream<T, U, V extends LazyChain.Env>(
export function stream<T, U, V extends LAZYCHAIN.Env>(
inbound: StreamInterface<T>,
callback: LazyChain.Callback<T, U, V>,
callback: LAZYCHAIN.Callback<T, U, V>,
env: V = <V>{}

@@ -204,3 +204,3 @@ ): StreamInterface<T> {

export function split<T, U, V extends LazyChain.Env>(inbound: StreamInterface<T>, splitter: LazyChain.Callback<T, U, V>, branches: any, env: V = <V>{}): StreamInterface<T> {
export function split<T, U, V extends LAZYCHAIN.Env>(inbound: StreamInterface<T>, splitter: LAZYCHAIN.Callback<T, U, V>, branches: any, env: V = <V>{}): StreamInterface<T> {
env = environment(env);

@@ -271,3 +271,3 @@ var outbound = cascade(inbound, null);

for (var i = 0, len = patterns.length; i < len; i++) {
match = i > 0 && patterns[i - 1][0] === patterns[i][0] ? match : TYPE([param], [patterns[i][0]]);
match = i > 0 && patterns[i - 1][0] === patterns[i][0] ? match : TYPE([param], [patterns[i][0]], 1);
var exp = patterns[i],

@@ -306,5 +306,5 @@ etype = exp.length;

export function monad<T, M>(inbound: StreamInterface<T>|StreamInterface<M>, monad: LazyChain.Monad<T, M>, convert?: boolean): LazyMonad<T, M>
export function monad<T, M>(inbound: StreamInterface<T>|StreamInterface<M>, monad: LazyChain.Monad<T, M>, type: any): LazyMonad<T, M>
export function monad<T, M>(inbound: StreamInterface<T>|StreamInterface<M>, monad: LazyChain.Monad<T, M>, convert: any = true): LazyMonad<T, M> {
export function monad<T, M>(inbound: StreamInterface<T>|StreamInterface<M>, monad: LAZYCHAIN.Monad<T, M>, convert?: boolean): LazyMonad<T, M>
export function monad<T, M>(inbound: StreamInterface<T>|StreamInterface<M>, monad: LAZYCHAIN.Monad<T, M>, type: any): LazyMonad<T, M>
export function monad<T, M>(inbound: StreamInterface<T>|StreamInterface<M>, monad: LAZYCHAIN.Monad<T, M>, convert: any = true): LazyMonad<T, M> {
inbound.__LazyChain__.monad = monad;

@@ -317,3 +317,3 @@ switch (convert) {

default:
return castStream2Monad<T, M>(cascade(<StreamInterface<M>>(<StreamInterface<T>>inbound).map(v => TYPE([v], [convert]) ? <M>monad.return.call(void 0, v) : v)));
return castStream2Monad<T, M>(cascade(<StreamInterface<M>>(<StreamInterface<T>>inbound).map(v => TYPE([v], [convert], 1) ? <M>monad.return.call(void 0, v) : v)));
}

@@ -338,3 +338,3 @@ }

for (var i = 0, len = patterns.length; i < len; i++) {
match = i > 0 && patterns[i - 1][0] === patterns[i][0] ? match : TYPE([param], [patterns[i][0]]);
match = i > 0 && patterns[i - 1][0] === patterns[i][0] ? match : TYPE([param], [patterns[i][0]], 1);
var exp = patterns[i],

@@ -341,0 +341,0 @@ etype = exp.length;

@@ -23,2 +23,3 @@

document.write('<script src="' + (window.__karma__ ? "/base/test/" : "") + 'unit/lib.store.js" charset="utf-8"><\/script>');
document.write('<script src="' + (window.__karma__ ? "/base/test/" : "") + 'unit/lib.dispatcher.js" charset="utf-8"><\/script>');
document.write('<script src="' + (window.__karma__ ? "/base/test/" : "") + 'unit/lib.duff.js" charset="utf-8"><\/script>');

@@ -25,0 +26,0 @@

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc