asynquence
Advanced tools
Comparing version 0.3.4-c to 0.3.4-d
/*! asynquence | ||
v0.3.4-c (c) Kyle Simpson | ||
v0.3.4-d (c) Kyle Simpson | ||
MIT License: http://getify.mit-license.org | ||
*/ | ||
!function(n,e,t){"undefined"!=typeof module&&module.exports?module.exports=t():"function"==typeof define&&define.amd?define(t):e[n]=t(n,e)}("ASQ",this,function(n,e){"use strict";function t(n){return"undefined"!=typeof setImmediate?setImmediate(n):setTimeout(n,0)}function u(){function n(){clearTimeout(T),T=null,C.length=0,M.length=0,P.length=0,W.length=0}function e(){return Q?l():(T||(T=t(l)),void 0)}function l(){var t,u;if(T=null,delete z.unpause,Q)n();else if(I)for(;M.length;){t=M.shift();try{t.apply(y,W)}catch(r){a(r)?W=W.concat(r):(W.push(r),r.stack&&W.push(r.stack)),0===M.length&&console.error.apply(console,W)}}else if(w&&C.length>0){w=!1,t=C.shift(),u=P.slice(),P.length=0,u.unshift(g());try{t.apply(y,u)}catch(r){a(r)?W=W.concat(r):W.push(r),I=!0,e()}}}function g(){function n(){I||Q||w||(w=!0,P.push.apply(P,arguments),W.length=0,e())}return n.fail=function(){I||Q||w||(I=!0,P.length=0,W.push.apply(W,arguments),e())},n.abort=function(){I||Q||(w=!1,Q=!0,P.length=0,W.length=0,e())},n.errfcb=function(e){e?n.fail(e):n.apply(y,h.call(arguments,1))},n}function m(n,e,u){function r(){clearTimeout(m),m=_=q=g=null}function l(){return v?i():(m||(m=t(i)),void 0)}function i(){if(!(I||Q||b)){var e=[];m=null,d?(n.fail.apply(y,g),r()):v?(n.abort(),r()):c()&&(b=!0,_.forEach(function(n,t){e.push(q["s"+t])}),n.apply(y,e),r())}}function c(){if(!(I||Q||d||v||b||0===_.length)){var n=!0;return _.some(function(e){return null===e?(n=!1,!0):void 0}),n}}function o(){function n(){if(!(I||Q||d||v||b||_[e])){var n=f.messages.apply(y,arguments);q["s"+e]=n.length>1?n:n[0],_[e]=!0,l()}}var e=_.length;return n.fail=function(){I||Q||d||v||b||_[e]||(d=!0,g=h.call(arguments),l())},n.abort=function(){I||Q||d||v||b||(v=!0,i())},n.errfcb=function(e){e?n.fail(e):n.apply(y,h.call(arguments,1))},_[e]=null,n}var s,p,g,m,d=!1,v=!1,b=!1,_=[],q={};e.some(function(n){if(d||v)return!0;s=u.slice(),s.unshift(o());try{n.apply(y,s)}catch(e){return p=e,d=!0,!0}}),p&&(a(p)?n.fail.apply(y,p):n.fail(p))}function d(){return I||Q||0===arguments.length?z:(C.push.apply(C,o(arguments,c)),e(),z)}function v(){return Q||0===arguments.length?z:(M.push.apply(M,arguments),e(),z)}function b(){if(I||Q||0===arguments.length)return z;var n=h.call(arguments);return d(function(e){var t=h.call(arguments,1);m(e,n,t)}),z}function _(){return Q||0===arguments.length?z:(h.call(arguments).forEach(function(n){d(function(e){n.apply(y,h.call(arguments,1)),e()}).or(n.fail)}),z)}function q(){return I||Q||0===arguments.length?z:(h.call(arguments).forEach(function(n){var e;a(n)&&"next"in n&&(n.then(function(){e.apply(y,arguments)}).or(function(){e.fail.apply(y,arguments)}),n=u(function(n){e=n}),e=function(){n=u.apply(y,arguments)},e.fail=function(){var e=h.call(arguments);n=u(function(n){n.fail.apply(y,e)})}),d(function(e){a(n)||(n=n.apply(y,h.call(arguments,1))),n.pipe(e)})}),z)}function A(){return I||Q||0===arguments.length?z:(h.call(o(arguments,i)).forEach(function(n){d(function(e){var t=n.apply(y,h.call(arguments,1));a(t)||(t=f.messages(t)),e.apply(y,t)})}),z)}function k(){return I||Q||0===arguments.length?z:(h.call(arguments).forEach(function(n){d(function(e){"function"!=typeof n||"then"in n||(n=n.apply(y,h.call(arguments,1))),n.then(e,e.fail)})}),z)}function E(){var n;return A(function(){return n?n.apply(y,arguments):n=u.apply(y,arguments),f.messages.apply(y,arguments)}),v(function(){if(n)n.fail.apply(y,arguments);else{var e=h.call(arguments);n=u().then(function(n){n.fail.apply(y,e)})}}),u().then(function(e){n?n.pipe(e):n=e})}function x(){return I?z:(Q=!0,l(),z)}function j(){var n;return s={then_queue:C.slice(0),or_queue:M.slice(0)},n=u(),s=null,n}function O(n,e){var t=arguments.length>1;switch(n){case"seq_error":if(!t)return I;I=e;break;case"seq_aborted":if(!t)return Q;Q=e;break;case"then_ready":if(!t)return w;w=e;break;case"then_queue":return C;case"or_queue":return M;case"sequence_messages":return P;case"sequence_errors":return W}}function S(){Object.keys(p).forEach(function(n){z[n]=p[n](z,O)})}var T,I=!1,Q=!1,w=!0,C=[],M=[],P=[],W=[],z=r({then:d,or:v,gate:b,pipe:_,seq:q,val:A,promise:k,fork:E,abort:x,duplicate:j});return S(),s&&(C=s.then_queue.slice(0),M=s.or_queue.slice(0),z.unpause=e),z.then.apply(y,o(arguments,c)),z}function r(n){return Object.defineProperty(n,m,{enumerable:!1,value:!0}),n}function a(n){return null!=n&&"object"==typeof n&&n[m]}function l(n,e){return h.call(e).slice(1,n+1)}function i(n){return f.messages.apply(y,l(n,arguments))}function c(n){arguments[n+1].apply(y,l(n,arguments))}function o(n,e){var t,u;for(n=h.call(n),t=0;t<n.length;t++)if(Array.isArray(n[t])&&a(n[t]))n[t]=e.bind.apply(e,[null,n[t].length].concat(n[t]));else if("function"!=typeof n[t]){for(u=t+1;u<n.length&&("function"!=typeof n[u]&&!a(n[u]));u++);n.splice(t,u-t,e.bind.apply(e,[null,u-t].concat(n.slice(t,u))))}return n}var f,s,p={},g=(e||{})[n],h=Array.prototype.slice,m="__ASQ__",y=Object.create(null);return f=u,f.extend=function(n,e){return~["then","or","gate","pipe","seq","val","abort"].indexOf(n)||(p[n]=e),f},f.messages=function(){var n=h.call(arguments);return r(n),n},f.isSequence=function(n){return a(n)&&!Array.isArray(n)},f.isMessageWrapper=function(n){return a(n)&&Array.isArray(n)},f.unpause=function(n){return n.unpause&&n.unpause(),n},f.noConflict=function(){return e&&(e[n]=g),f},f}); |
/*! asynquence | ||
v0.3.4-c (c) Kyle Simpson | ||
v0.3.4-d (c) Kyle Simpson | ||
MIT License: http://getify.mit-license.org | ||
@@ -4,0 +4,0 @@ */ |
{ | ||
"name": "asynquence", | ||
"version": "0.3.4-c", | ||
"version": "0.3.4-d", | ||
"description": "asynquence: async sequences & gates for flow-control", | ||
@@ -5,0 +5,0 @@ "main": "./asq.js", |
@@ -95,2 +95,4 @@ # asynquence | ||
`ASQ.unpause(..)` is a helper for dealing with "paused" (aka, *just* duplicated) sequences (see `duplicate()` above). | ||
`ASQ.noConflict()` rolls back the global `ASQ` identifier and returns the current API instance to you. This can be used to keep your global namespace clean, or it can be used to have multiple simultaneous libraries (including separate versions/copies of *asynquence*!) in the same program without conflicts over the `ASQ` global identifier. | ||
@@ -174,2 +176,4 @@ | ||
Just like regular sequences, iterable sequences have a `duplicate()` method (see ASQ's instance API above) which makes a copy of the sequence *at that moment*. However, iterable sequences are already "paused" at each step anyway, so unlike regular sequences, there's no `unpause()` (nor is there any reason to use the `ASQ.unpause(..)` helper!), because it's unnecessary. You just call `next()` on an iterable sequence (even if it's a copy of another) when you want to advance it one step. | ||
### Multiple parameters | ||
@@ -176,0 +180,0 @@ API methods take one or more functions as their parameters. `gate(..)` treats multiple functions as segments in the same gate. The other API methods (`then(..)`, `or(..)`, `pipe(..)`, `seq(..)`, and `val(..)`) treat multiple parameters as just separate subsequent steps in the respective sequence. These methods don't accept arrays of functions (that you might build up programatically), but since they take multiple parameters, you can use `.apply(..)` to spread those out. |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
76604
415