UNPKG

@figuro/chatwoot-sdk

Version:
99 lines 3.13 kB
"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