@absmartly/javascript-sdk
Version:
A/B Smartly Javascript SDK
79 lines (78 loc) • 1.9 kB
JavaScript
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.AbortController = exports.AbortSignal = void 0;
class AbortSignal {
constructor() {
this.aborted = false;
this._events = {};
}
addEventListener(type, listener) {
let listeners = this._events[type];
if (!listeners) {
listeners = [];
this._events[type] = listeners;
}
listeners.push(listener);
}
removeEventListener(type, listener) {
const listeners = this._events[type];
if (listeners) {
const index = listeners.findIndex(x => x === listener);
if (index !== -1) {
listeners.splice(index, 1);
if (listeners.length === 0) {
delete this._events[type];
}
}
}
}
dispatchEvent(evt) {
this[`on${evt.type}`] && this[`on${evt.type}`](evt);
const listeners = this._events[evt.type];
if (listeners) {
for (const listener of listeners) {
listener.call(null, evt);
}
}
}
toString() {
return "[object AbortSignal]";
}
}
exports.AbortSignal = AbortSignal;
class AbortController {
constructor() {
this.signal = new AbortSignal();
}
abort() {
let evt;
try {
evt = new Event("abort");
} catch (e) {
evt = {
type: "abort",
bubbles: false,
cancelable: false
};
}
this.signal.aborted = true;
this.signal.dispatchEvent(evt);
}
toString() {
return "[object AbortController]";
}
}
exports.AbortController = AbortController;
if (typeof Symbol !== "undefined" && Symbol.toStringTag !== undefined) {
Object.defineProperty(AbortSignal.prototype, Symbol.toStringTag, {
configurable: true,
value: "AbortSignal"
});
Object.defineProperty(AbortController.prototype, Symbol.toStringTag, {
configurable: true,
value: "AbortController"
});
}
exports.default = AbortController;
;