D7net
Home
Console
Upload
information
Create File
Create Folder
About
Tools
:
/
proc
/
self
/
root
/
lib
/
node_modules
/
npm
/
node_modules
/
es6-promisify
/
dist
/
Filename :
promise.js
back
Copy
"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; }();