UNPKG

@worker-tools/extendable-promise

Version:

A promise that can be delayed (extended) via repeated calls to waitUntil.

78 lines 5.17 kB
"use strict"; var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) { if (kind === "m") throw new TypeError("Private method is not writable"); if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter"); if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it"); return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value; }; var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) { if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter"); if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it"); return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver); }; var _ExtendablePromise_instances, _ExtendablePromise_values, _ExtendablePromise_promise, _ExtendablePromise_numAdded, _ExtendablePromise_numSettled, _ExtendablePromise_fulfill, _ExtendablePromise_reject, _a; Object.defineProperty(exports, "__esModule", { value: true }); exports.ExtendablePromise = void 0; // deno-lint-ignore-file no-explicit-any const resolvable_promise_1 = require("@worker-tools/resolvable-promise"); // const queueMicrotask = typeof globalThis.queueMicrotask === "function" // ? globalThis.queueMicrotask // : (callback: VoidFunction) => Promise.resolve().then(callback).catch(e => setTimeout(() => { throw e })); class ExtendablePromise { constructor(f) { _ExtendablePromise_instances.add(this); _ExtendablePromise_values.set(this, []); _ExtendablePromise_promise.set(this, void 0); _ExtendablePromise_numAdded.set(this, 0); _ExtendablePromise_numSettled.set(this, 0); Object.defineProperty(this, _a, { enumerable: true, configurable: true, writable: true, value: 'ExtendablePromise' }); // super(_ => _(void 0 as any)); __classPrivateFieldSet(this, _ExtendablePromise_promise, new resolvable_promise_1.ResolvablePromise(), "f"); this.waitUntil(f); // queueMicrotask(() => { // if (this.#numAdded === 0) { // this.#promise.resolve([]); // } // }); } waitUntil(f) { var _b; if (f != null) { const i = __classPrivateFieldGet(this, _ExtendablePromise_numAdded, "f"); Promise.resolve(f) .then(v => __classPrivateFieldGet(this, _ExtendablePromise_instances, "m", _ExtendablePromise_fulfill).call(this, i, v), r => __classPrivateFieldGet(this, _ExtendablePromise_instances, "m", _ExtendablePromise_reject).call(this, i, r)); __classPrivateFieldSet(this, _ExtendablePromise_numAdded, (_b = __classPrivateFieldGet(this, _ExtendablePromise_numAdded, "f"), _b++, _b), "f"); } } /** @deprecated Name of this property might change */ get settled() { return __classPrivateFieldGet(this, _ExtendablePromise_promise, "f").settled; } then(onfulfilled, onrejected) { return __classPrivateFieldGet(this, _ExtendablePromise_promise, "f").then(onfulfilled, onrejected); } catch(onrejected) { return __classPrivateFieldGet(this, _ExtendablePromise_promise, "f").catch(onrejected); } finally(onfinally) { return __classPrivateFieldGet(this, _ExtendablePromise_promise, "f").finally(onfinally); } } exports.ExtendablePromise = ExtendablePromise; _ExtendablePromise_values = new WeakMap(), _ExtendablePromise_promise = new WeakMap(), _ExtendablePromise_numAdded = new WeakMap(), _ExtendablePromise_numSettled = new WeakMap(), _ExtendablePromise_instances = new WeakSet(), _ExtendablePromise_fulfill = function _ExtendablePromise_fulfill(i, value) { var _b; __classPrivateFieldGet(this, _ExtendablePromise_values, "f")[i] = { status: 'fulfilled', value }; if (__classPrivateFieldSet(this, _ExtendablePromise_numSettled, (_b = __classPrivateFieldGet(this, _ExtendablePromise_numSettled, "f"), ++_b), "f") === __classPrivateFieldGet(this, _ExtendablePromise_numAdded, "f")) { __classPrivateFieldGet(this, _ExtendablePromise_promise, "f").resolve(__classPrivateFieldGet(this, _ExtendablePromise_values, "f")); } }, _ExtendablePromise_reject = function _ExtendablePromise_reject(i, reason) { var _b; __classPrivateFieldGet(this, _ExtendablePromise_values, "f")[i] = { status: 'rejected', reason }; if (__classPrivateFieldSet(this, _ExtendablePromise_numSettled, (_b = __classPrivateFieldGet(this, _ExtendablePromise_numSettled, "f"), ++_b), "f") === __classPrivateFieldGet(this, _ExtendablePromise_numAdded, "f")) { __classPrivateFieldGet(this, _ExtendablePromise_promise, "f").resolve(__classPrivateFieldGet(this, _ExtendablePromise_values, "f")); } }, _a = Symbol.toStringTag; //# sourceMappingURL=index.js.map