/
q.min.js
14 lines (14 loc) · 6.81 KB
/
q.min.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
(function(b){"function"===typeof define?define(["exports"],b):"object"===typeof exports?b(exports):b(Q={})})(function(b){function r(a){return a}function t(a,c,e){a[c]||(a[c]=e);return a[c]}function s(a){return Object(a)!==a?a:a.valueOf()}function h(){function a(a){if(c)return e=k(a),u.call(c,function(a,c){l(function(){e.promiseSend.apply(e,c)})},void 0),c=void 0,e}var c=[],e,b=v(h.prototype),f=v(i.prototype);f.promiseSend=function(){var a=g.call(arguments);c?c.push(a):l(function(){e.promiseSend.apply(e,
a)})};f.valueOf=function(){return c?f:e.valueOf()};b.promise=w(f);b.resolve=a;b.reject=function(c){return a(j(c))};return b}function i(a,c,e,b){void 0===c&&(c=function(a){return j("Promise does not support operation: "+a)});var f=v(i.prototype);f.promiseSend=function(e,b){var n=g.call(arguments,2),d;try{d=a[e]?a[e].apply(f,n):c.apply(f,[e].concat(n))}catch(h){d=j(h)}return(b||r)(d)};e&&(f.valueOf=e);b&&(f.promiseRejected=!0);return w(f)}function x(a){return a&&"function"===typeof a.promiseSend}function B(a){return!x(s(a))}
function C(a){return(a=s(a))&&!!a.promiseRejected}function j(a){var c=i({when:function(c){if(c){var b=y.indexOf(this);-1!==b&&(z.splice(b,1),y.splice(b,1))}return c?c(a):j(a)}},function(){return j(a)},function(){return j(a)},!0);y.push(c);z.push(a);return c}function k(a){if(x(a))return a;if(a&&"function"===typeof a.then){var c=h();a.then(c.resolve,c.reject);return c.promise}return i({when:function(){return a},get:function(c){return a[c]},put:function(c,b){return a[c]=b},del:function(c){return delete a[c]},
post:function(c,b){return a[c].apply(a,b)},apply:function(c,b){return a.apply(c,b)},viewInfo:function(){function c(a){f[a]||(f[a]=typeof b[a])}for(var b=a,f={};b;)Object.getOwnPropertyNames(b).forEach(c),b=Object.getPrototypeOf(b);return{type:typeof a,properties:f}},keys:function(){return K(a)}},void 0,function(){return a})}function D(a,c){a=k(a);return c?i({viewInfo:function(){return c}},function(c){var b=g.call(arguments);return o.apply(void 0,[a].concat(b))},function(){return s(a)}):o(a,"viewInfo")}
function d(a,c,e){function b(a){try{return c?c(a):a}catch(e){return j(e)}}function f(a){try{return e?e(a):j(a)}catch(c){return j(c)}}var d=h(),g=!1;l(function(){k(a).promiseSend("when",function(a){g||(g=!0,d.resolve(k(a).promiseSend("when",b,f)))},function(a){g||(g=!0,d.resolve(f(a)))})});return d.promise}function m(a){return function(c){var e=g.call(arguments,1);return o.apply(void 0,[c,a].concat(e))}}function o(a,c){var e=h(),b=g.call(arguments,2),a=k(a);l(function(){a.promiseSend.apply(a,[c,e.resolve].concat(b))});
return e.promise}function E(a,c){var b=g.call(arguments,2);return p(a,c,b)}function F(a){return d(a,function(a){var b=a.length;if(0===b)return k(a);var n=h();u.call(a,function(f,g,h){d(g,function(f){a[h]=f;0===--b&&n.resolve(a)}).fail(n.reject)},void 0);return n.promise})}function A(a){if(1<arguments.length)var c=Array.prototype.slice.call(arguments,1),a=a.bind.apply(a,c);return function(){var c=h(),b=g.call(arguments);b.push(c.node());p(a,this,b).fail(c.reject);return c.promise}}function G(a,c,b){return A(a).apply(c,
b)}var l;if("undefined"!==typeof process)l=process.nextTick;else if("function"===typeof msSetImmediate)l=msSetImmediate;else if("function"===typeof setImmediate)l=setImmediate;else if("undefined"!==typeof MessageChannel){var H=new MessageChannel,q={},I=q;H.port1.onmessage=function(){q=q.next;var a=q.task;q.task=null;a()};l=function(a){I=I.next={task:a};H.port2.postMessage(0)}}else l=function(a){setTimeout(a,0)};var w=t(Object,"freeze",r),v=t(Object,"create",function(a){function c(){}c.prototype=a;
return new c}),K=t(Object,"keys",function(a){var c=[],b;for(b in a)c.push(b);return c}),u=Array.prototype.reduce||function(a,c){var b=0,d=this.length;if(1===arguments.length){do{if(b in this){c=this[b++];break}if(++b>=d)throw new TypeError;}while(1)}for(;b<d;b++)b in this&&(c=a(c,this[b],b));return c},g=Array.prototype.slice;b.nextTick=l;b.defer=h;h.prototype.node=h.prototype.makeNodeResolver=function(){var a=this;return function(c,b){c?a.reject(c):2<arguments.length?a.resolve(Array.prototype.slice.call(arguments,
1)):a.resolve(b)}};b.promise=function(a){var c=h();E(a,void 0,c.resolve,c.reject,c.progress).fail(c.reject);return c.promise};b.makePromise=i;i.prototype.then=function(a,c){return d(this,a,c)};u.call("isResolved,isFulfilled,isRejected,when,spread,send,get,put,del,post,invoke,keys,apply,call,bind,all,allResolved,view,viewInfo,timeout,delay,catch,finally,fail,fin,end".split(","),function(a,c){i.prototype[c]=function(){return b[c].apply(b,[this].concat(g.call(arguments)))}},void 0);i.prototype.toSource=
function(){return this.toString()};i.prototype.toString=function(){return"[object Promise]"};w(i.prototype);b.isPromise=x;b.isResolved=function(a){return B(a)||C(a)};b.isFulfilled=B;b.isRejected=C;var y=[],z=[];"undefined"!==typeof window&&console.log("Should be empty:",z);b.reject=j;b.begin=k;b.resolve=k;b.ref=k;b.master=function(a){return i({isDef:function(){}},function(c){var b=g.call(arguments);return o.apply(void 0,[a].concat(b))},function(){return s(a)})};b.viewInfo=D;b.view=function(a){return D(a).when(function(c){var b;
b="function"===c.type?function(){return p(a,void 0,arguments)}:{};var d=c.properties||{};Object.keys(d).forEach(function(c){"function"===d[c]&&(b[c]=function(){return J(a,c,arguments)})});return k(b)})};b.when=d;b.spread=function(a,c,b){return d(a,function(a){return c.apply(void 0,a)},b)};b.async=function(a){return function(){function c(a,c){var h;try{h=b[a](c)}catch(i){return"[object StopIteration]"===Object.prototype.toString.call(i)?i.value:j(i)}return d(h,g,f)}var b=a.apply(this,arguments),g=
c.bind(c,"send"),f=c.bind(c,"throw");return g()}};b.sender=m;b.Method=m;b.send=o;b.get=m("get");b.put=m("put");b.del=b["delete"]=m("del");var J=b.post=m("post");b.invoke=function(a,c){var b=g.call(arguments,2);return J(a,c,b)};var p=b.apply=m("apply");b.call=b["try"]=E;b.bind=function(a,c){var b=g.call(arguments,2);return function f(){var d=b.concat(g.call(arguments));if(this instanceof f){var h=function(){};h.prototype=a.prototype;var i=new h;return p(a,i,d).then(function(a){return Object(a)===a?
a:i})}return p(a,c,d)}};b.keys=m("keys");b.all=F;b.allResolved=function(a){return d(a,function(a){return d(F(a.map(function(a){return d(a,r,r)})),function(){return a.map(k)})})};b["catch"]=b.fail=function(a,c){return d(a,void 0,c)};b["finally"]=b.fin=function(a,c){return d(a,function(a){return d(c(),function(){return a})},function(a){return d(c(),function(){return j(a)})})};b.end=function(a){d(a,void 0,function(a){l(function(){throw a;})})};b.timeout=function(a,c){var b=h();d(a,b.resolve,b.reject);
setTimeout(function(){b.reject(Error("Timed out after "+c+"ms"))},c);return b.promise};b.delay=function(a,b){void 0===b&&(b=a,a=void 0);var d=h();setTimeout(function(){d.resolve(a)},b);return d.promise};b.nbind=A;b.node=A;b.napply=G;b.ncall=function(a,b){var d=g.call(arguments,2);return G(a,b,d)}});