polyfills/promise-6.1.0.js
(function e(t, n, r) {
function s(o, u) {
if (!n[o]) {
if (!t[o]) {
var a = typeof require == "function" && require;
if (!u && a) return a(o, !0);
if (i) return i(o, !0);
var f = new Error("Cannot find module '" + o + "'");
throw f.code = "MODULE_NOT_FOUND", f;
}
var l = n[o] = {
exports: {}
};
t[o][0].call(l.exports, function(e) {
var n = t[o][1][e];
return s(n ? n : e);
}, l, l.exports, e, t, n, r);
}
return n[o].exports;
}
var i = typeof require == "function" && require;
for (var o = 0; o < r.length; o++) s(r[o]);
return s;
})({
1: [ function(require, module, exports) {
var process = module.exports = {};
process.nextTick = function() {
var canSetImmediate = typeof window !== "undefined" && window.setImmediate;
var canPost = typeof window !== "undefined" && window.postMessage && window.addEventListener;
if (canSetImmediate) {
return function(f) {
return window.setImmediate(f);
};
}
if (canPost) {
var queue = [];
window.addEventListener("message", function(ev) {
var source = ev.source;
if ((source === window || source === null) && ev.data === "process-tick") {
ev.stopPropagation();
if (queue.length > 0) {
var fn = queue.shift();
fn();
}
}
}, true);
return function nextTick(fn) {
queue.push(fn);
window.postMessage("process-tick", "*");
};
}
return function nextTick(fn) {
setTimeout(fn, 0);
};
}();
process.title = "browser";
process.browser = true;
process.env = {};
process.argv = [];
function noop() {}
process.on = noop;
process.addListener = noop;
process.once = noop;
process.off = noop;
process.removeListener = noop;
process.removeAllListeners = noop;
process.emit = noop;
process.binding = function(name) {
throw new Error("process.binding is not supported");
};
process.cwd = function() {
return "/";
};
process.chdir = function(dir) {
throw new Error("process.chdir is not supported");
};
}, {} ],
2: [ function(require, module, exports) {
"use strict";
var asap = require("asap");
module.exports = Promise;
function Promise(fn) {
if (typeof this !== "object") throw new TypeError("Promises must be constructed via new");
if (typeof fn !== "function") throw new TypeError("not a function");
var state = null;
var value = null;
var deferreds = [];
var self = this;
this.then = function(onFulfilled, onRejected) {
return new self.constructor(function(resolve, reject) {
handle(new Handler(onFulfilled, onRejected, resolve, reject));
});
};
function handle(deferred) {
if (state === null) {
deferreds.push(deferred);
return;
}
asap(function() {
var cb = state ? deferred.onFulfilled : deferred.onRejected;
if (cb === null) {
(state ? deferred.resolve : deferred.reject)(value);
return;
}
var ret;
try {
ret = cb(value);
} catch (e) {
deferred.reject(e);
return;
}
deferred.resolve(ret);
});
}
function resolve(newValue) {
try {
if (newValue === self) throw new TypeError("A promise cannot be resolved with itself.");
if (newValue && (typeof newValue === "object" || typeof newValue === "function")) {
var then = newValue.then;
if (typeof then === "function") {
doResolve(then.bind(newValue), resolve, reject);
return;
}
}
state = true;
value = newValue;
finale();
} catch (e) {
reject(e);
}
}
function reject(newValue) {
state = false;
value = newValue;
finale();
}
function finale() {
for (var i = 0, len = deferreds.length; i < len; i++) handle(deferreds[i]);
deferreds = null;
}
doResolve(fn, resolve, reject);
}
function Handler(onFulfilled, onRejected, resolve, reject) {
this.onFulfilled = typeof onFulfilled === "function" ? onFulfilled : null;
this.onRejected = typeof onRejected === "function" ? onRejected : null;
this.resolve = resolve;
this.reject = reject;
}
function doResolve(fn, onFulfilled, onRejected) {
var done = false;
try {
fn(function(value) {
if (done) return;
done = true;
onFulfilled(value);
}, function(reason) {
if (done) return;
done = true;
onRejected(reason);
});
} catch (ex) {
if (done) return;
done = true;
onRejected(ex);
}
}
}, {
asap: 4
} ],
3: [ function(require, module, exports) {
"use strict";
var Promise = require("./core.js");
var asap = require("asap");
module.exports = Promise;
function ValuePromise(value) {
this.then = function(onFulfilled) {
if (typeof onFulfilled !== "function") return this;
return new Promise(function(resolve, reject) {
asap(function() {
try {
resolve(onFulfilled(value));
} catch (ex) {
reject(ex);
}
});
});
};
}
ValuePromise.prototype = Promise.prototype;
var TRUE = new ValuePromise(true);
var FALSE = new ValuePromise(false);
var NULL = new ValuePromise(null);
var UNDEFINED = new ValuePromise(undefined);
var ZERO = new ValuePromise(0);
var EMPTYSTRING = new ValuePromise("");
Promise.resolve = function(value) {
if (value instanceof Promise) return value;
if (value === null) return NULL;
if (value === undefined) return UNDEFINED;
if (value === true) return TRUE;
if (value === false) return FALSE;
if (value === 0) return ZERO;
if (value === "") return EMPTYSTRING;
if (typeof value === "object" || typeof value === "function") {
try {
var then = value.then;
if (typeof then === "function") {
return new Promise(then.bind(value));
}
} catch (ex) {
return new Promise(function(resolve, reject) {
reject(ex);
});
}
}
return new ValuePromise(value);
};
Promise.all = function(arr) {
var args = Array.prototype.slice.call(arr);
return new Promise(function(resolve, reject) {
if (args.length === 0) return resolve([]);
var remaining = args.length;
function res(i, val) {
try {
if (val && (typeof val === "object" || typeof val === "function")) {
var then = val.then;
if (typeof then === "function") {
then.call(val, function(val) {
res(i, val);
}, reject);
return;
}
}
args[i] = val;
if (--remaining === 0) {
resolve(args);
}
} catch (ex) {
reject(ex);
}
}
for (var i = 0; i < args.length; i++) {
res(i, args[i]);
}
});
};
Promise.reject = function(value) {
return new Promise(function(resolve, reject) {
reject(value);
});
};
Promise.race = function(values) {
return new Promise(function(resolve, reject) {
values.forEach(function(value) {
Promise.resolve(value).then(resolve, reject);
});
});
};
Promise.prototype["catch"] = function(onRejected) {
return this.then(null, onRejected);
};
}, {
"./core.js": 2,
asap: 4
} ],
4: [ function(require, module, exports) {
(function(process) {
var head = {
task: void 0,
next: null
};
var tail = head;
var flushing = false;
var requestFlush = void 0;
var isNodeJS = false;
function flush() {
while (head.next) {
head = head.next;
var task = head.task;
head.task = void 0;
var domain = head.domain;
if (domain) {
head.domain = void 0;
domain.enter();
}
try {
task();
} catch (e) {
if (isNodeJS) {
if (domain) {
domain.exit();
}
setTimeout(flush, 0);
if (domain) {
domain.enter();
}
throw e;
} else {
setTimeout(function() {
throw e;
}, 0);
}
}
if (domain) {
domain.exit();
}
}
flushing = false;
}
if (typeof process !== "undefined" && process.nextTick) {
isNodeJS = true;
requestFlush = function() {
process.nextTick(flush);
};
} else if (typeof setImmediate === "function") {
if (typeof window !== "undefined") {
requestFlush = setImmediate.bind(window, flush);
} else {
requestFlush = function() {
setImmediate(flush);
};
}
} else if (typeof MessageChannel !== "undefined") {
var channel = new MessageChannel();
channel.port1.onmessage = flush;
requestFlush = function() {
channel.port2.postMessage(0);
};
} else {
requestFlush = function() {
setTimeout(flush, 0);
};
}
function asap(task) {
tail = tail.next = {
task: task,
domain: isNodeJS && process.domain,
next: null
};
if (!flushing) {
flushing = true;
requestFlush();
}
}
module.exports = asap;
}).call(this, require("_process"));
}, {
_process: 1
} ],
5: [ function(require, module, exports) {
if (typeof Promise.prototype.done !== "function") {
Promise.prototype.done = function(onFulfilled, onRejected) {
var self = arguments.length ? this.then.apply(this, arguments) : this;
self.then(null, function(err) {
setTimeout(function() {
throw err;
}, 0);
});
};
}
}, {} ],
6: [ function(require, module, exports) {
var asap = require("asap");
if (typeof Promise === "undefined") {
Promise = require("./lib/core.js");
require("./lib/es6-extensions.js");
}
require("./polyfill-done.js");
}, {
"./lib/core.js": 2,
"./lib/es6-extensions.js": 3,
"./polyfill-done.js": 5,
asap: 4
} ]
}, {}, [ 6 ]);
//# sourceMappingURL=/polyfills/promise-6.1.0.js.map