@figuro/chatwoot-sdk
Version:
SDK for JS/Typescript for Chatwoot.
99 lines • 3.13 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.CancelablePromise = exports.CancelError = void 0;
/* istanbul ignore file */
/* tslint:disable */
/* eslint-disable */
class CancelError extends Error {
constructor(message) {
super(message);
this.name = "CancelError";
}
get isCancelled() {
return true;
}
}
exports.CancelError = CancelError;
class CancelablePromise {
[Symbol.toStringTag];
_isResolved;
_isRejected;
_isCancelled;
_cancelHandlers;
_promise;
_resolve;
_reject;
constructor(executor) {
this._isResolved = false;
this._isRejected = false;
this._isCancelled = false;
this._cancelHandlers = [];
this._promise = new Promise((resolve, reject) => {
this._resolve = resolve;
this._reject = reject;
const onResolve = (value) => {
if (this._isResolved || this._isRejected || this._isCancelled) {
return;
}
this._isResolved = true;
this._resolve?.(value);
};
const onReject = (reason) => {
if (this._isResolved || this._isRejected || this._isCancelled) {
return;
}
this._isRejected = true;
this._reject?.(reason);
};
const onCancel = (cancelHandler) => {
if (this._isResolved || this._isRejected || this._isCancelled) {
return;
}
this._cancelHandlers.push(cancelHandler);
};
Object.defineProperty(onCancel, "isResolved", {
get: () => this._isResolved,
});
Object.defineProperty(onCancel, "isRejected", {
get: () => this._isRejected,
});
Object.defineProperty(onCancel, "isCancelled", {
get: () => this._isCancelled,
});
return executor(onResolve, onReject, onCancel);
});
}
then(onFulfilled, onRejected) {
return this._promise.then(onFulfilled, onRejected);
}
catch(onRejected) {
return this._promise.catch(onRejected);
}
finally(onFinally) {
return this._promise.finally(onFinally);
}
cancel() {
if (this._isResolved || this._isRejected || this._isCancelled) {
return;
}
this._isCancelled = true;
if (this._cancelHandlers.length) {
try {
for (const cancelHandler of this._cancelHandlers) {
cancelHandler();
}
}
catch (error) {
console.warn("Cancellation threw an error", error);
return;
}
}
this._cancelHandlers.length = 0;
this._reject?.(new CancelError("Request aborted"));
}
get isCancelled() {
return this._isCancelled;
}
}
exports.CancelablePromise = CancelablePromise;
//# sourceMappingURL=CancelablePromise.js.map