forked from kriskowal/q
/
q.min.js
1 lines (1 loc) · 3.93 KB
/
q.min.js
1
(function(a,b){typeof define=="function"?define(function(b,c){a(b,c)}):typeof exports=="object"?a(require,exports):a(b,Q={})})(function(a,b,c){function y(a){var b=Array.prototype.slice.call(arguments,1);d(function(){a.promiseSend.apply(a,b)})}function x(a){throw a}function v(a,b){var d=j(),e=Array.prototype.slice.call(arguments,2);y.apply(c,[q(a),b,d.resolve].concat(e));return d.promise}function u(a){return function(b){var d=Array.prototype.slice.call(arguments,1);return v.apply(c,[b,a].concat(d))}}function s(a,b,c){function g(a){try{return c?c(a):p(a)}catch(b){i(b&&b.stack||b);return p(b)}}function f(a){try{return b?b(a):a}catch(c){typeof process!="undefined"?process.emit("uncaughtException",c):i(c&&c.stack||c);return p(c)}}var d=j(),e=!1;y(q(a),"when",function(a){e||(e=!0,d.resolve(q(a).promiseSend("when",f,g)))},function(a){e||(e=!0,d.resolve(g(a)))});return d.promise}function r(a){return k({isDef:function(){}},function(b){var d=Array.prototype.slice.call(arguments);return v.apply(c,[a].concat(d))},function(){return a.valueOf()})}function q(a){if(l(a))return a;if(a&&typeof a.then=="function")return k({},function(b,c){if(b!=="when")return Q.when(a,function(a){return Q.ref(a).promiseSend.apply(null,arguments)});var d=j();a.then(d.resolve,d.reject);return d.promise});return k({when:function(b){return a},get:function(b){if(a===c||a===null)return p("Cannot access property "+b+" of "+a);return a[b]},put:function(b,d){if(a===c||a===null)return p("Cannot set property "+b+" of "+a+" to "+d);return a[b]=d},del:function(b){if(a===c||a===null)return p("Cannot delete property "+b+" of "+a);return delete a[b]},post:function(b,d){if(a===c||a===null)return p(""+a+" has no methods");var e=a[b];if(!e)return p("No such method "+b+" on object "+a);if(!e.apply)return p("Property "+b+" on object "+a+" is not a method");return a[b].apply(a,d)},keys:function(){return Object.keys(a)}},c,function(){return a})}function p(a){return k({when:function(b){return b?b(a):p(a)}},function(b){return p(a)},function(){var b=h(p.prototype);b.promiseRejected=!0,b.reason=a;return b})}function o(a){a=t(a);if(a===c||a===null)return!1;return!!a.promiseRejected}function n(a){return!l(t(a))&&!o(a)}function m(a){return!l(t(a.valueOf()))}function l(a){return a&&typeof a.promiseSend=="function"}function k(a,b,d){b===c&&(b=function(a){return p("Promise does not support operation: "+a)});var e=h(k.prototype);e.promiseSend=function(c,d){var e=Array.prototype.slice.call(arguments,2),g;a[c]?g=a[c].apply(a,e):g=b.apply(a,[c].concat(e)),d=d||f;return d(g)},d&&(e.valueOf=d);return g(e)}function j(){var a=[],b,d=h(k.prototype);d.promiseSend=function(){var d=Array.prototype.slice.call(arguments);a?a.push(d):y.apply(c,[b].concat(d))},d.valueOf=function(){if(a)return d;return t(b)};var e=function(d){var e,f,g;if(!!a){b=q(d);for(e=0,f=a.length;e<f;++e)y.apply(c,[b].concat(a[e]));a=c;return b}};return{promise:g(d),resolve:e,reject:function(a){return e(p(a))}}}function f(a){return a}"use strict";var d;try{d=a("event-queue").enqueue}catch(e){d=function(a){setTimeout(a,0)}}var g=Object.freeze||f,h=Object.create||function h(a){var b=function(){};b.prototype=a;return new b},i=typeof console=="undefined"?f:function(a){console.log(a)};b.enqueue=d,b.defer=j,b.makePromise=k,k.prototype.then=function(a,b){return s(this,a,b)},k.prototype.end=function(){return s(this,c,x)},k.prototype.toSource=function(){return this.toString()},k.prototype.toString=function(){return"[object Promise]"},g(k.prototype),b.isPromise=l,b.isResolved=m,b.isFulfilled=n,b.isRejected=o,b.reject=p,p.prototype=h(k.prototype,{constructor:{value:p}}),b.ref=q,b.def=r,b.when=s,b.asap=function(a,b,c){b=b||f;if(n(a))return t(b(t(a)));if(o(a)){var d=a.valueOf().reason;if(c)return c(d);throw d}return s(a,b,c)};var t=function(a){return a===c||a===null?a:a.valueOf()};b.Method=u,b.send=v,b.get=u("get"),b.put=u("put"),b.del=u("del");var w=b.post=u("post");b.invoke=function(a,b){var c=Array.prototype.slice.call(arguments,2);return w(a,b,c)},b.keys=u("keys"),b.error=x})