abortcontroller-polyfill
Advanced tools
Comparing version 1.7.6 to 1.7.7
@@ -218,2 +218,70 @@ (function (factory) { | ||
(function (self) { | ||
return { | ||
NativeAbortSignal: self.AbortSignal, | ||
NativeAbortController: self.AbortController | ||
}; | ||
})(typeof self !== 'undefined' ? self : global); | ||
/** | ||
* @param {any} reason abort reason | ||
*/ | ||
function createAbortEvent(reason) { | ||
var event; | ||
try { | ||
event = new Event('abort'); | ||
} catch (e) { | ||
if (typeof document !== 'undefined') { | ||
if (!document.createEvent) { | ||
// For Internet Explorer 8: | ||
event = document.createEventObject(); | ||
event.type = 'abort'; | ||
} else { | ||
// For Internet Explorer 11: | ||
event = document.createEvent('Event'); | ||
event.initEvent('abort', false, false); | ||
} | ||
} else { | ||
// Fallback where document isn't available: | ||
event = { | ||
type: 'abort', | ||
bubbles: false, | ||
cancelable: false | ||
}; | ||
} | ||
} | ||
event.reason = reason; | ||
return event; | ||
} | ||
/** | ||
* @param {any} reason abort reason | ||
*/ | ||
function normalizeAbortReason(reason) { | ||
if (reason === undefined) { | ||
if (typeof document === 'undefined') { | ||
reason = new Error('This operation was aborted'); | ||
reason.name = 'AbortError'; | ||
} else { | ||
try { | ||
reason = new DOMException('signal is aborted without reason'); // The DOMException does not support setting the name property directly. | ||
Object.defineProperty(reason, 'name', { | ||
value: 'AbortError' | ||
}); | ||
} catch (err) { | ||
// IE 11 does not support calling the DOMException constructor, use a | ||
// regular error object on it instead. | ||
reason = new Error('This operation was aborted'); | ||
reason.name = 'AbortError'; | ||
} | ||
} | ||
} | ||
return reason; | ||
} | ||
var Emitter = /*#__PURE__*/function () { | ||
@@ -458,46 +526,4 @@ function Emitter() { | ||
value: function abort(reason) { | ||
var event; | ||
try { | ||
event = new Event('abort'); | ||
} catch (e) { | ||
if (typeof document !== 'undefined') { | ||
if (!document.createEvent) { | ||
// For Internet Explorer 8: | ||
event = document.createEventObject(); | ||
event.type = 'abort'; | ||
} else { | ||
// For Internet Explorer 11: | ||
event = document.createEvent('Event'); | ||
event.initEvent('abort', false, false); | ||
} | ||
} else { | ||
// Fallback where document isn't available: | ||
event = { | ||
type: 'abort', | ||
bubbles: false, | ||
cancelable: false | ||
}; | ||
} | ||
} | ||
var signalReason = reason; | ||
if (signalReason === undefined) { | ||
if (typeof document === 'undefined') { | ||
signalReason = new Error('This operation was aborted'); | ||
signalReason.name = 'AbortError'; | ||
} else { | ||
try { | ||
signalReason = new DOMException('signal is aborted without reason'); | ||
signalReason.name = 'AbortError'; | ||
} catch (err) { | ||
// IE 11 does not support calling the DOMException constructor, use a | ||
// regular error object on it instead. | ||
signalReason = new Error('This operation was aborted'); | ||
signalReason.name = 'AbortError'; | ||
} | ||
} | ||
} | ||
var signalReason = normalizeAbortReason(reason); | ||
var event = createAbortEvent(signalReason); | ||
this.signal.reason = signalReason; | ||
@@ -504,0 +530,0 @@ this.signal.dispatchEvent(event); |
@@ -217,2 +217,70 @@ 'use strict'; | ||
(function (self) { | ||
return { | ||
NativeAbortSignal: self.AbortSignal, | ||
NativeAbortController: self.AbortController | ||
}; | ||
})(typeof self !== 'undefined' ? self : global); | ||
/** | ||
* @param {any} reason abort reason | ||
*/ | ||
function createAbortEvent(reason) { | ||
var event; | ||
try { | ||
event = new Event('abort'); | ||
} catch (e) { | ||
if (typeof document !== 'undefined') { | ||
if (!document.createEvent) { | ||
// For Internet Explorer 8: | ||
event = document.createEventObject(); | ||
event.type = 'abort'; | ||
} else { | ||
// For Internet Explorer 11: | ||
event = document.createEvent('Event'); | ||
event.initEvent('abort', false, false); | ||
} | ||
} else { | ||
// Fallback where document isn't available: | ||
event = { | ||
type: 'abort', | ||
bubbles: false, | ||
cancelable: false | ||
}; | ||
} | ||
} | ||
event.reason = reason; | ||
return event; | ||
} | ||
/** | ||
* @param {any} reason abort reason | ||
*/ | ||
function normalizeAbortReason(reason) { | ||
if (reason === undefined) { | ||
if (typeof document === 'undefined') { | ||
reason = new Error('This operation was aborted'); | ||
reason.name = 'AbortError'; | ||
} else { | ||
try { | ||
reason = new DOMException('signal is aborted without reason'); // The DOMException does not support setting the name property directly. | ||
Object.defineProperty(reason, 'name', { | ||
value: 'AbortError' | ||
}); | ||
} catch (err) { | ||
// IE 11 does not support calling the DOMException constructor, use a | ||
// regular error object on it instead. | ||
reason = new Error('This operation was aborted'); | ||
reason.name = 'AbortError'; | ||
} | ||
} | ||
} | ||
return reason; | ||
} | ||
var Emitter = /*#__PURE__*/function () { | ||
@@ -457,46 +525,4 @@ function Emitter() { | ||
value: function abort(reason) { | ||
var event; | ||
try { | ||
event = new Event('abort'); | ||
} catch (e) { | ||
if (typeof document !== 'undefined') { | ||
if (!document.createEvent) { | ||
// For Internet Explorer 8: | ||
event = document.createEventObject(); | ||
event.type = 'abort'; | ||
} else { | ||
// For Internet Explorer 11: | ||
event = document.createEvent('Event'); | ||
event.initEvent('abort', false, false); | ||
} | ||
} else { | ||
// Fallback where document isn't available: | ||
event = { | ||
type: 'abort', | ||
bubbles: false, | ||
cancelable: false | ||
}; | ||
} | ||
} | ||
var signalReason = reason; | ||
if (signalReason === undefined) { | ||
if (typeof document === 'undefined') { | ||
signalReason = new Error('This operation was aborted'); | ||
signalReason.name = 'AbortError'; | ||
} else { | ||
try { | ||
signalReason = new DOMException('signal is aborted without reason'); | ||
signalReason.name = 'AbortError'; | ||
} catch (err) { | ||
// IE 11 does not support calling the DOMException constructor, use a | ||
// regular error object on it instead. | ||
signalReason = new Error('This operation was aborted'); | ||
signalReason.name = 'AbortError'; | ||
} | ||
} | ||
} | ||
var signalReason = normalizeAbortReason(reason); | ||
var event = createAbortEvent(signalReason); | ||
this.signal.reason = signalReason; | ||
@@ -503,0 +529,0 @@ this.signal.dispatchEvent(event); |
@@ -217,2 +217,70 @@ 'use strict'; | ||
(function (self) { | ||
return { | ||
NativeAbortSignal: self.AbortSignal, | ||
NativeAbortController: self.AbortController | ||
}; | ||
})(typeof self !== 'undefined' ? self : global); | ||
/** | ||
* @param {any} reason abort reason | ||
*/ | ||
function createAbortEvent(reason) { | ||
var event; | ||
try { | ||
event = new Event('abort'); | ||
} catch (e) { | ||
if (typeof document !== 'undefined') { | ||
if (!document.createEvent) { | ||
// For Internet Explorer 8: | ||
event = document.createEventObject(); | ||
event.type = 'abort'; | ||
} else { | ||
// For Internet Explorer 11: | ||
event = document.createEvent('Event'); | ||
event.initEvent('abort', false, false); | ||
} | ||
} else { | ||
// Fallback where document isn't available: | ||
event = { | ||
type: 'abort', | ||
bubbles: false, | ||
cancelable: false | ||
}; | ||
} | ||
} | ||
event.reason = reason; | ||
return event; | ||
} | ||
/** | ||
* @param {any} reason abort reason | ||
*/ | ||
function normalizeAbortReason(reason) { | ||
if (reason === undefined) { | ||
if (typeof document === 'undefined') { | ||
reason = new Error('This operation was aborted'); | ||
reason.name = 'AbortError'; | ||
} else { | ||
try { | ||
reason = new DOMException('signal is aborted without reason'); // The DOMException does not support setting the name property directly. | ||
Object.defineProperty(reason, 'name', { | ||
value: 'AbortError' | ||
}); | ||
} catch (err) { | ||
// IE 11 does not support calling the DOMException constructor, use a | ||
// regular error object on it instead. | ||
reason = new Error('This operation was aborted'); | ||
reason.name = 'AbortError'; | ||
} | ||
} | ||
} | ||
return reason; | ||
} | ||
var Emitter = /*#__PURE__*/function () { | ||
@@ -457,46 +525,4 @@ function Emitter() { | ||
value: function abort(reason) { | ||
var event; | ||
try { | ||
event = new Event('abort'); | ||
} catch (e) { | ||
if (typeof document !== 'undefined') { | ||
if (!document.createEvent) { | ||
// For Internet Explorer 8: | ||
event = document.createEventObject(); | ||
event.type = 'abort'; | ||
} else { | ||
// For Internet Explorer 11: | ||
event = document.createEvent('Event'); | ||
event.initEvent('abort', false, false); | ||
} | ||
} else { | ||
// Fallback where document isn't available: | ||
event = { | ||
type: 'abort', | ||
bubbles: false, | ||
cancelable: false | ||
}; | ||
} | ||
} | ||
var signalReason = reason; | ||
if (signalReason === undefined) { | ||
if (typeof document === 'undefined') { | ||
signalReason = new Error('This operation was aborted'); | ||
signalReason.name = 'AbortError'; | ||
} else { | ||
try { | ||
signalReason = new DOMException('signal is aborted without reason'); | ||
signalReason.name = 'AbortError'; | ||
} catch (err) { | ||
// IE 11 does not support calling the DOMException constructor, use a | ||
// regular error object on it instead. | ||
signalReason = new Error('This operation was aborted'); | ||
signalReason.name = 'AbortError'; | ||
} | ||
} | ||
} | ||
var signalReason = normalizeAbortReason(reason); | ||
var event = createAbortEvent(signalReason); | ||
this.signal.reason = signalReason; | ||
@@ -503,0 +529,0 @@ this.signal.dispatchEvent(event); |
@@ -218,2 +218,70 @@ (function (factory) { | ||
(function (self) { | ||
return { | ||
NativeAbortSignal: self.AbortSignal, | ||
NativeAbortController: self.AbortController | ||
}; | ||
})(typeof self !== 'undefined' ? self : global); | ||
/** | ||
* @param {any} reason abort reason | ||
*/ | ||
function createAbortEvent(reason) { | ||
var event; | ||
try { | ||
event = new Event('abort'); | ||
} catch (e) { | ||
if (typeof document !== 'undefined') { | ||
if (!document.createEvent) { | ||
// For Internet Explorer 8: | ||
event = document.createEventObject(); | ||
event.type = 'abort'; | ||
} else { | ||
// For Internet Explorer 11: | ||
event = document.createEvent('Event'); | ||
event.initEvent('abort', false, false); | ||
} | ||
} else { | ||
// Fallback where document isn't available: | ||
event = { | ||
type: 'abort', | ||
bubbles: false, | ||
cancelable: false | ||
}; | ||
} | ||
} | ||
event.reason = reason; | ||
return event; | ||
} | ||
/** | ||
* @param {any} reason abort reason | ||
*/ | ||
function normalizeAbortReason(reason) { | ||
if (reason === undefined) { | ||
if (typeof document === 'undefined') { | ||
reason = new Error('This operation was aborted'); | ||
reason.name = 'AbortError'; | ||
} else { | ||
try { | ||
reason = new DOMException('signal is aborted without reason'); // The DOMException does not support setting the name property directly. | ||
Object.defineProperty(reason, 'name', { | ||
value: 'AbortError' | ||
}); | ||
} catch (err) { | ||
// IE 11 does not support calling the DOMException constructor, use a | ||
// regular error object on it instead. | ||
reason = new Error('This operation was aborted'); | ||
reason.name = 'AbortError'; | ||
} | ||
} | ||
} | ||
return reason; | ||
} | ||
var Emitter = /*#__PURE__*/function () { | ||
@@ -458,46 +526,4 @@ function Emitter() { | ||
value: function abort(reason) { | ||
var event; | ||
try { | ||
event = new Event('abort'); | ||
} catch (e) { | ||
if (typeof document !== 'undefined') { | ||
if (!document.createEvent) { | ||
// For Internet Explorer 8: | ||
event = document.createEventObject(); | ||
event.type = 'abort'; | ||
} else { | ||
// For Internet Explorer 11: | ||
event = document.createEvent('Event'); | ||
event.initEvent('abort', false, false); | ||
} | ||
} else { | ||
// Fallback where document isn't available: | ||
event = { | ||
type: 'abort', | ||
bubbles: false, | ||
cancelable: false | ||
}; | ||
} | ||
} | ||
var signalReason = reason; | ||
if (signalReason === undefined) { | ||
if (typeof document === 'undefined') { | ||
signalReason = new Error('This operation was aborted'); | ||
signalReason.name = 'AbortError'; | ||
} else { | ||
try { | ||
signalReason = new DOMException('signal is aborted without reason'); | ||
signalReason.name = 'AbortError'; | ||
} catch (err) { | ||
// IE 11 does not support calling the DOMException constructor, use a | ||
// regular error object on it instead. | ||
signalReason = new Error('This operation was aborted'); | ||
signalReason.name = 'AbortError'; | ||
} | ||
} | ||
} | ||
var signalReason = normalizeAbortReason(reason); | ||
var event = createAbortEvent(signalReason); | ||
this.signal.reason = signalReason; | ||
@@ -504,0 +530,0 @@ this.signal.dispatchEvent(event); |
@@ -218,2 +218,70 @@ (function (factory) { | ||
(function (self) { | ||
return { | ||
NativeAbortSignal: self.AbortSignal, | ||
NativeAbortController: self.AbortController | ||
}; | ||
})(typeof self !== 'undefined' ? self : global); | ||
/** | ||
* @param {any} reason abort reason | ||
*/ | ||
function createAbortEvent(reason) { | ||
var event; | ||
try { | ||
event = new Event('abort'); | ||
} catch (e) { | ||
if (typeof document !== 'undefined') { | ||
if (!document.createEvent) { | ||
// For Internet Explorer 8: | ||
event = document.createEventObject(); | ||
event.type = 'abort'; | ||
} else { | ||
// For Internet Explorer 11: | ||
event = document.createEvent('Event'); | ||
event.initEvent('abort', false, false); | ||
} | ||
} else { | ||
// Fallback where document isn't available: | ||
event = { | ||
type: 'abort', | ||
bubbles: false, | ||
cancelable: false | ||
}; | ||
} | ||
} | ||
event.reason = reason; | ||
return event; | ||
} | ||
/** | ||
* @param {any} reason abort reason | ||
*/ | ||
function normalizeAbortReason(reason) { | ||
if (reason === undefined) { | ||
if (typeof document === 'undefined') { | ||
reason = new Error('This operation was aborted'); | ||
reason.name = 'AbortError'; | ||
} else { | ||
try { | ||
reason = new DOMException('signal is aborted without reason'); // The DOMException does not support setting the name property directly. | ||
Object.defineProperty(reason, 'name', { | ||
value: 'AbortError' | ||
}); | ||
} catch (err) { | ||
// IE 11 does not support calling the DOMException constructor, use a | ||
// regular error object on it instead. | ||
reason = new Error('This operation was aborted'); | ||
reason.name = 'AbortError'; | ||
} | ||
} | ||
} | ||
return reason; | ||
} | ||
var Emitter = /*#__PURE__*/function () { | ||
@@ -458,46 +526,4 @@ function Emitter() { | ||
value: function abort(reason) { | ||
var event; | ||
try { | ||
event = new Event('abort'); | ||
} catch (e) { | ||
if (typeof document !== 'undefined') { | ||
if (!document.createEvent) { | ||
// For Internet Explorer 8: | ||
event = document.createEventObject(); | ||
event.type = 'abort'; | ||
} else { | ||
// For Internet Explorer 11: | ||
event = document.createEvent('Event'); | ||
event.initEvent('abort', false, false); | ||
} | ||
} else { | ||
// Fallback where document isn't available: | ||
event = { | ||
type: 'abort', | ||
bubbles: false, | ||
cancelable: false | ||
}; | ||
} | ||
} | ||
var signalReason = reason; | ||
if (signalReason === undefined) { | ||
if (typeof document === 'undefined') { | ||
signalReason = new Error('This operation was aborted'); | ||
signalReason.name = 'AbortError'; | ||
} else { | ||
try { | ||
signalReason = new DOMException('signal is aborted without reason'); | ||
signalReason.name = 'AbortError'; | ||
} catch (err) { | ||
// IE 11 does not support calling the DOMException constructor, use a | ||
// regular error object on it instead. | ||
signalReason = new Error('This operation was aborted'); | ||
signalReason.name = 'AbortError'; | ||
} | ||
} | ||
} | ||
var signalReason = normalizeAbortReason(reason); | ||
var event = createAbortEvent(signalReason); | ||
this.signal.reason = signalReason; | ||
@@ -504,0 +530,0 @@ this.signal.dispatchEvent(event); |
{ | ||
"name": "abortcontroller-polyfill", | ||
"version": "1.7.6", | ||
"version": "1.7.7", | ||
"description": "Polyfill/ponyfill for the AbortController DOM API + optional patching of fetch (stub that calls catch, doesn't actually abort request).", | ||
@@ -5,0 +5,0 @@ "main": "dist/umd-polyfill.js", |
@@ -149,2 +149,10 @@ # AbortController polyfill for abortable fetch() | ||
# Using it on Legacy Webview | ||
The ```abortcontroller-polyfill``` works on Legacy Webview. However, to use it you must first confirm that the native AbortController and AbortSignal already exist in the environment. Otherwise, it is recommended to use the other solutions mentioned above. | ||
```js | ||
import 'abortcontroller-polyfill/dist/abortsignal-polyfill-only'; | ||
``` | ||
# Contributors | ||
@@ -163,2 +171,3 @@ * [Martin Olsson](https://github.com/mo) | ||
* [Yao Shi](https://github.com/TechQuery) | ||
* [Ray Hao](https://github.com/l246804) | ||
@@ -165,0 +174,0 @@ # License |
@@ -0,1 +1,3 @@ | ||
import { createAbortEvent, normalizeAbortReason } from './abortsignal-ponyfill'; | ||
class Emitter { | ||
@@ -142,45 +144,6 @@ constructor() { | ||
abort(reason) { | ||
let event; | ||
try { | ||
event = new Event('abort'); | ||
} catch (e) { | ||
if (typeof document !== 'undefined') { | ||
if (!document.createEvent) { | ||
// For Internet Explorer 8: | ||
event = document.createEventObject(); | ||
event.type = 'abort'; | ||
} else { | ||
// For Internet Explorer 11: | ||
event = document.createEvent('Event'); | ||
event.initEvent('abort', false, false); | ||
} | ||
} else { | ||
// Fallback where document isn't available: | ||
event = { | ||
type: 'abort', | ||
bubbles: false, | ||
cancelable: false, | ||
}; | ||
} | ||
} | ||
const signalReason = normalizeAbortReason(reason); | ||
const event = createAbortEvent(signalReason); | ||
let signalReason = reason; | ||
if (signalReason === undefined) { | ||
if (typeof document === 'undefined') { | ||
signalReason = new Error('This operation was aborted'); | ||
signalReason.name = 'AbortError'; | ||
} else { | ||
try { | ||
signalReason = new DOMException('signal is aborted without reason'); | ||
signalReason.name = 'AbortError'; | ||
} catch (err) { | ||
// IE 11 does not support calling the DOMException constructor, use a | ||
// regular error object on it instead. | ||
signalReason = new Error('This operation was aborted'); | ||
signalReason.name = 'AbortError'; | ||
} | ||
} | ||
} | ||
this.signal.reason = signalReason; | ||
this.signal.dispatchEvent(event); | ||
@@ -187,0 +150,0 @@ } |
@@ -18,1 +18,14 @@ export function polyfillNeeded(self) { | ||
} | ||
export function signalPolyfillNeeded(self) { | ||
if (self.__FORCE_INSTALL_ABORTCONTROLLER_POLYFILL) { | ||
console.log('__FORCE_INSTALL_ABORTCONTROLLER_POLYFILL=true is set, will force install polyfill'); | ||
return true; | ||
} | ||
return ( | ||
!!self.AbortController && | ||
typeof self.AbortSignal === 'function' && | ||
!self.AbortSignal.prototype.hasOwnProperty('reason') | ||
); | ||
} |
164302
18
4260
175