summaryrefslogtreecommitdiff
path: root/deps/npm/node_modules/es6-promisify/dist/promise.js
diff options
context:
space:
mode:
Diffstat (limited to 'deps/npm/node_modules/es6-promisify/dist/promise.js')
-rw-r--r--deps/npm/node_modules/es6-promisify/dist/promise.js73
1 files changed, 73 insertions, 0 deletions
diff --git a/deps/npm/node_modules/es6-promisify/dist/promise.js b/deps/npm/node_modules/es6-promisify/dist/promise.js
new file mode 100644
index 0000000000..2fe5c6103b
--- /dev/null
+++ b/deps/npm/node_modules/es6-promisify/dist/promise.js
@@ -0,0 +1,73 @@
+"use strict";
+
+/* global self, window, module, global, require */
+module.exports = function () {
+
+ "use strict";
+
+ var globalObject = void 0;
+
+ function isFunction(x) {
+ return typeof x === "function";
+ }
+
+ // Seek the global object
+ if (global !== undefined) {
+ globalObject = global;
+ } else if (window !== undefined && window.document) {
+ globalObject = window;
+ } else {
+ globalObject = self;
+ }
+
+ // Test for any native promise implementation, and if that
+ // implementation appears to conform to the specificaton.
+ // This code mostly nicked from the es6-promise module polyfill
+ // and then fooled with.
+ var hasPromiseSupport = function () {
+
+ // No promise object at all, and it's a non-starter
+ if (!globalObject.hasOwnProperty("Promise")) {
+ return false;
+ }
+
+ // There is a Promise object. Does it conform to the spec?
+ var P = globalObject.Promise;
+
+ // Some of these methods are missing from
+ // Firefox/Chrome experimental implementations
+ if (!P.hasOwnProperty("resolve") || !P.hasOwnProperty("reject")) {
+ return false;
+ }
+
+ if (!P.hasOwnProperty("all") || !P.hasOwnProperty("race")) {
+ return false;
+ }
+
+ // Older version of the spec had a resolver object
+ // as the arg rather than a function
+ return function () {
+
+ var resolve = void 0;
+
+ var p = new globalObject.Promise(function (r) {
+ resolve = r;
+ });
+
+ if (p) {
+ return isFunction(resolve);
+ }
+
+ return false;
+ }();
+ }();
+
+ // Export the native Promise implementation if it
+ // looks like it matches the spec
+ if (hasPromiseSupport) {
+ return globalObject.Promise;
+ }
+
+ // Otherwise, return the es6-promise polyfill by @jaffathecake.
+ return require("es6-promise").Promise;
+}(); \ No newline at end of file