promise-polyfill
Advanced tools
Comparing version 7.1.2 to 8.0.0
# Changelog | ||
### 8.0.0 | ||
* Polyfill default promise with `finally` if it doesn't exist if you use polyfill.js | ||
* If using `require` with webpack 2+, you not need to do | ||
```js | ||
var Promise = require('promise-polyfill').default; | ||
``` | ||
instead of | ||
```js | ||
var Promise = require('promise-polyfill'); | ||
``` | ||
* Removed files /dist/promise.js and /dist/promise.min.js. These files were not used unless you downloaded them directly from the repo. They were not used by ES6 modules, CommonJS or polyfill.js | ||
The file lead to issues because they overrode the global Promise by default. | ||
### 7.1.2 | ||
@@ -4,0 +22,0 @@ |
@@ -7,2 +7,18 @@ (function (global, factory) { | ||
var promiseFinally = function(callback) { | ||
var constructor = this.constructor; | ||
return this.then( | ||
function(value) { | ||
return constructor.resolve(callback()).then(function() { | ||
return value; | ||
}); | ||
}, | ||
function(reason) { | ||
return constructor.resolve(callback()).then(function() { | ||
return constructor.reject(reason); | ||
}); | ||
} | ||
); | ||
}; | ||
// Store setTimeout reference so promise-polyfill will be unaffected by | ||
@@ -153,17 +169,3 @@ // other code modifying setTimeout (like sinon.useFakeTimers()) | ||
Promise.prototype['finally'] = function(callback) { | ||
var constructor = this.constructor; | ||
return this.then( | ||
function(value) { | ||
return constructor.resolve(callback()).then(function() { | ||
return value; | ||
}); | ||
}, | ||
function(reason) { | ||
return constructor.resolve(callback()).then(function() { | ||
return constructor.reject(reason); | ||
}); | ||
} | ||
); | ||
}; | ||
Promise.prototype['finally'] = promiseFinally; | ||
@@ -266,4 +268,6 @@ Promise.all = function(arr) { | ||
globalNS.Promise = Promise; | ||
} else if (!globalNS.Promise.prototype['finally']) { | ||
globalNS.Promise.prototype['finally'] = promiseFinally; | ||
} | ||
}))); |
@@ -1,1 +0,1 @@ | ||
!function(e,n){"object"==typeof exports&&"undefined"!=typeof module?n():"function"==typeof define&&define.amd?define(n):n()}(0,function(){"use strict";function e(){}function n(e){if(!(this instanceof n))throw new TypeError("Promises must be constructed via new");if("function"!=typeof e)throw new TypeError("not a function");this._state=0,this._handled=!1,this._value=undefined,this._deferreds=[],f(e,this)}function t(e,t){for(;3===e._state;)e=e._value;0!==e._state?(e._handled=!0,n._immediateFn(function(){var n=1===e._state?t.onFulfilled:t.onRejected;if(null!==n){var i;try{i=n(e._value)}catch(f){return void r(t.promise,f)}o(t.promise,i)}else(1===e._state?o:r)(t.promise,e._value)})):e._deferreds.push(t)}function o(e,t){try{if(t===e)throw new TypeError("A promise cannot be resolved with itself.");if(t&&("object"==typeof t||"function"==typeof t)){var o=t.then;if(t instanceof n)return e._state=3,e._value=t,void i(e);if("function"==typeof o)return void f(function(e,n){return function(){e.apply(n,arguments)}}(o,t),e)}e._state=1,e._value=t,i(e)}catch(u){r(e,u)}}function r(e,n){e._state=2,e._value=n,i(e)}function i(e){2===e._state&&0===e._deferreds.length&&n._immediateFn(function(){e._handled||n._unhandledRejectionFn(e._value)});for(var o=0,r=e._deferreds.length;r>o;o++)t(e,e._deferreds[o]);e._deferreds=null}function f(e,n){var t=!1;try{e(function(e){t||(t=!0,o(n,e))},function(e){t||(t=!0,r(n,e))})}catch(i){if(t)return;t=!0,r(n,i)}}var u=setTimeout;n.prototype["catch"]=function(e){return this.then(null,e)},n.prototype.then=function(n,o){var r=new this.constructor(e);return t(this,new function(e,n,t){this.onFulfilled="function"==typeof e?e:null,this.onRejected="function"==typeof n?n:null,this.promise=t}(n,o,r)),r},n.prototype["finally"]=function(e){var n=this.constructor;return this.then(function(t){return n.resolve(e()).then(function(){return t})},function(t){return n.resolve(e()).then(function(){return n.reject(t)})})},n.all=function(e){return new n(function(n,t){function o(e,f){try{if(f&&("object"==typeof f||"function"==typeof f)){var u=f.then;if("function"==typeof u)return void u.call(f,function(n){o(e,n)},t)}r[e]=f,0==--i&&n(r)}catch(c){t(c)}}if(!e||"undefined"==typeof e.length)throw new TypeError("Promise.all accepts an array");var r=Array.prototype.slice.call(e);if(0===r.length)return n([]);for(var i=r.length,f=0;r.length>f;f++)o(f,r[f])})},n.resolve=function(e){return e&&"object"==typeof e&&e.constructor===n?e:new n(function(n){n(e)})},n.reject=function(e){return new n(function(n,t){t(e)})},n.race=function(e){return new n(function(n,t){for(var o=0,r=e.length;r>o;o++)e[o].then(n,t)})},n._immediateFn="function"==typeof setImmediate&&function(e){setImmediate(e)}||function(e){u(e,0)},n._unhandledRejectionFn=function(e){void 0!==console&&console&&console.warn("Possible Unhandled Promise Rejection:",e)};var c=function(){if("undefined"!=typeof self)return self;if("undefined"!=typeof window)return window;if("undefined"!=typeof global)return global;throw Error("unable to locate global object")}();c.Promise||(c.Promise=n)}); | ||
!function(e,n){"object"==typeof exports&&"undefined"!=typeof module?n():"function"==typeof define&&define.amd?define(n):n()}(0,function(){"use strict";function e(){}function n(e){if(!(this instanceof n))throw new TypeError("Promises must be constructed via new");if("function"!=typeof e)throw new TypeError("not a function");this._state=0,this._handled=!1,this._value=undefined,this._deferreds=[],f(e,this)}function t(e,t){for(;3===e._state;)e=e._value;0!==e._state?(e._handled=!0,n._immediateFn(function(){var n=1===e._state?t.onFulfilled:t.onRejected;if(null!==n){var i;try{i=n(e._value)}catch(f){return void r(t.promise,f)}o(t.promise,i)}else(1===e._state?o:r)(t.promise,e._value)})):e._deferreds.push(t)}function o(e,t){try{if(t===e)throw new TypeError("A promise cannot be resolved with itself.");if(t&&("object"==typeof t||"function"==typeof t)){var o=t.then;if(t instanceof n)return e._state=3,e._value=t,void i(e);if("function"==typeof o)return void f(function(e,n){return function(){e.apply(n,arguments)}}(o,t),e)}e._state=1,e._value=t,i(e)}catch(u){r(e,u)}}function r(e,n){e._state=2,e._value=n,i(e)}function i(e){2===e._state&&0===e._deferreds.length&&n._immediateFn(function(){e._handled||n._unhandledRejectionFn(e._value)});for(var o=0,r=e._deferreds.length;r>o;o++)t(e,e._deferreds[o]);e._deferreds=null}function f(e,n){var t=!1;try{e(function(e){t||(t=!0,o(n,e))},function(e){t||(t=!0,r(n,e))})}catch(i){if(t)return;t=!0,r(n,i)}}var u=function(e){var n=this.constructor;return this.then(function(t){return n.resolve(e()).then(function(){return t})},function(t){return n.resolve(e()).then(function(){return n.reject(t)})})},c=setTimeout;n.prototype["catch"]=function(e){return this.then(null,e)},n.prototype.then=function(n,o){var r=new this.constructor(e);return t(this,new function(e,n,t){this.onFulfilled="function"==typeof e?e:null,this.onRejected="function"==typeof n?n:null,this.promise=t}(n,o,r)),r},n.prototype["finally"]=u,n.all=function(e){return new n(function(n,t){function o(e,f){try{if(f&&("object"==typeof f||"function"==typeof f)){var u=f.then;if("function"==typeof u)return void u.call(f,function(n){o(e,n)},t)}r[e]=f,0==--i&&n(r)}catch(c){t(c)}}if(!e||"undefined"==typeof e.length)throw new TypeError("Promise.all accepts an array");var r=Array.prototype.slice.call(e);if(0===r.length)return n([]);for(var i=r.length,f=0;r.length>f;f++)o(f,r[f])})},n.resolve=function(e){return e&&"object"==typeof e&&e.constructor===n?e:new n(function(n){n(e)})},n.reject=function(e){return new n(function(n,t){t(e)})},n.race=function(e){return new n(function(n,t){for(var o=0,r=e.length;r>o;o++)e[o].then(n,t)})},n._immediateFn="function"==typeof setImmediate&&function(e){setImmediate(e)}||function(e){c(e,0)},n._unhandledRejectionFn=function(e){void 0!==console&&console&&console.warn("Possible Unhandled Promise Rejection:",e)};var l=function(){if("undefined"!=typeof self)return self;if("undefined"!=typeof window)return window;if("undefined"!=typeof global)return global;throw Error("unable to locate global object")}();l.Promise?l.Promise.prototype["finally"]||(l.Promise.prototype["finally"]=u):l.Promise=n}); |
'use strict'; | ||
var promiseFinally = function(callback) { | ||
var constructor = this.constructor; | ||
return this.then( | ||
function(value) { | ||
return constructor.resolve(callback()).then(function() { | ||
return value; | ||
}); | ||
}, | ||
function(reason) { | ||
return constructor.resolve(callback()).then(function() { | ||
return constructor.reject(reason); | ||
}); | ||
} | ||
); | ||
}; | ||
// Store setTimeout reference so promise-polyfill will be unaffected by | ||
@@ -148,17 +164,3 @@ // other code modifying setTimeout (like sinon.useFakeTimers()) | ||
Promise.prototype['finally'] = function(callback) { | ||
var constructor = this.constructor; | ||
return this.then( | ||
function(value) { | ||
return constructor.resolve(callback()).then(function() { | ||
return value; | ||
}); | ||
}, | ||
function(reason) { | ||
return constructor.resolve(callback()).then(function() { | ||
return constructor.reject(reason); | ||
}); | ||
} | ||
); | ||
}; | ||
Promise.prototype['finally'] = promiseFinally; | ||
@@ -165,0 +167,0 @@ Promise.all = function(arr) { |
'use strict'; | ||
var promiseFinally = function(callback) { | ||
var constructor = this.constructor; | ||
return this.then( | ||
function(value) { | ||
return constructor.resolve(callback()).then(function() { | ||
return value; | ||
}); | ||
}, | ||
function(reason) { | ||
return constructor.resolve(callback()).then(function() { | ||
return constructor.reject(reason); | ||
}); | ||
} | ||
); | ||
}; | ||
// Store setTimeout reference so promise-polyfill will be unaffected by | ||
@@ -148,17 +164,3 @@ // other code modifying setTimeout (like sinon.useFakeTimers()) | ||
Promise.prototype['finally'] = function(callback) { | ||
var constructor = this.constructor; | ||
return this.then( | ||
function(value) { | ||
return constructor.resolve(callback()).then(function() { | ||
return value; | ||
}); | ||
}, | ||
function(reason) { | ||
return constructor.resolve(callback()).then(function() { | ||
return constructor.reject(reason); | ||
}); | ||
} | ||
); | ||
}; | ||
Promise.prototype['finally'] = promiseFinally; | ||
@@ -261,2 +263,4 @@ Promise.all = function(arr) { | ||
globalNS.Promise = Promise; | ||
} else if (!globalNS.Promise.prototype['finally']) { | ||
globalNS.Promise.prototype['finally'] = promiseFinally; | ||
} |
{ | ||
"name": "promise-polyfill", | ||
"version": "7.1.2", | ||
"version": "8.0.0", | ||
"description": "Lightweight promise polyfill. A+ compliant", | ||
"main": "lib/index.js", | ||
"module": "src/index.js", | ||
"jsnext:main": "src/index.js", | ||
"unpkg": "dist/promise.min.js", | ||
"unpkg": "dist/polyfill.min.js", | ||
"files": [ | ||
@@ -20,4 +21,2 @@ "src", | ||
"build:cjs": "rollup -i src/index.js -o lib/index.js -f cjs", | ||
"build:umd": "cross-env NODE_ENV=development rollup -i src/index.js -o dist/promise.js -c rollup.umd.config.js", | ||
"build:umd:min": "cross-env NODE_ENV=production rollup -i src/index.js -o dist/promise.min.js -c rollup.umd.config.js", | ||
"build:cjs-polyfill": "rollup -i src/polyfill.js -o lib/polyfill.js -f cjs", | ||
@@ -24,0 +23,0 @@ "build:umd-polyfill": "cross-env NODE_ENV=development rollup -i src/polyfill.js -o dist/polyfill.js -c rollup.umd.config.js", |
@@ -35,4 +35,6 @@ # Promise Polyfill | ||
This will set a global Promise object if the browser doesn't already have `window.Promise`. | ||
```html | ||
<script src="https://cdn.jsdelivr.net/npm/promise-polyfill@7/dist/polyfill.min.js"></script> | ||
<script src="https://cdn.jsdelivr.net/npm/promise-polyfill@8/dist/polyfill.min.js"></script> | ||
``` | ||
@@ -42,11 +44,27 @@ | ||
* [Promise](https://raw.github.com/taylorhakes/promise-polyfill/master/dist/promise.js) | ||
* [Promise-min](https://raw.github.com/taylorhakes/promise-polyfill/master/dist/promise.min.js) | ||
* [Promise](https://raw.github.com/taylorhakes/promise-polyfill/master/dist/polyfill.js) | ||
* [Promise-min](https://raw.github.com/taylorhakes/promise-polyfill/master/dist/polyfill.min.js) | ||
## Simple use | ||
If you would like to add a global Promise object (Node or Browser) if native Promise doesn't exist (polyfill Promise). Use the method below. This is useful it you are building a website and want to support older browsers. | ||
Javascript library authors should _NOT_ use this method. | ||
```js | ||
import 'promise-polyfill/src/polyfill'; | ||
``` | ||
If you would like to not affect the global environment (sometimes known as a [ponyfill](ponyfill.com)), you can import the base module. This is nice for library authors or people working in environment where you don't want | ||
to affect the global environment. | ||
```js | ||
import Promise from 'promise-polyfill'; | ||
``` | ||
If using `require` with Webpack 2+ (rare), you need to specify the default import | ||
```js | ||
var Promise = require('promise-polyfill').default; | ||
``` | ||
then you can use like normal Promises | ||
@@ -70,8 +88,2 @@ | ||
If you would like to just polyfill, only if native doesn't exist. | ||
```js | ||
import 'promise-polyfill/src/polyfill'; | ||
``` | ||
## Performance | ||
@@ -78,0 +90,0 @@ |
@@ -0,1 +1,3 @@ | ||
import promiseFinally from './finally'; | ||
// Store setTimeout reference so promise-polyfill will be unaffected by | ||
@@ -146,17 +148,3 @@ // other code modifying setTimeout (like sinon.useFakeTimers()) | ||
Promise.prototype['finally'] = function(callback) { | ||
var constructor = this.constructor; | ||
return this.then( | ||
function(value) { | ||
return constructor.resolve(callback()).then(function() { | ||
return value; | ||
}); | ||
}, | ||
function(reason) { | ||
return constructor.resolve(callback()).then(function() { | ||
return constructor.reject(reason); | ||
}); | ||
} | ||
); | ||
}; | ||
Promise.prototype['finally'] = promiseFinally; | ||
@@ -163,0 +151,0 @@ Promise.all = function(arr) { |
import Promise from './index'; | ||
import promiseFinally from './finally'; | ||
@@ -21,2 +22,4 @@ var globalNS = (function() { | ||
globalNS.Promise = Promise; | ||
} else if (!globalNS.Promise.prototype['finally']) { | ||
globalNS.Promise.prototype['finally'] = promiseFinally; | ||
} |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
134
39551
11
945