UNPKG

@opsimathically/deferred

Version:

Utility classes for working with the asynchronous deferral pattern.

111 lines (107 loc) 3.36 kB
"use strict"; var __defProp = Object.defineProperty; var __getOwnPropDesc = Object.getOwnPropertyDescriptor; var __getOwnPropNames = Object.getOwnPropertyNames; var __hasOwnProp = Object.prototype.hasOwnProperty; var __export = (target, all) => { for (var name in all) __defProp(target, name, { get: all[name], enumerable: true }); }; var __copyProps = (to, from, except, desc) => { if (from && typeof from === "object" || typeof from === "function") { for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); } return to; }; var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); // src/index.ts var index_exports = {}; __export(index_exports, { Deferred: () => Deferred, DeferredMap: () => DeferredMap }); module.exports = __toCommonJS(index_exports); // src/Deferred.class.ts var Deferred = class { constructor(params) { this.already_completed = false; this.timeout = null; this.deferred_map_ref = null; const defer_ref = this; this.promise = new Promise((resolve, reject) => { defer_ref.resolve_real = resolve; defer_ref.reject_real = reject; }); if (params) { if (typeof params.autotimeout_ms === "number") { defer_ref.timeout = setTimeout( (param) => { param.resolve(null); }, params.autotimeout_ms, this ); } if (params.deferred_map_ref) { defer_ref.deferred_map_ref = params.deferred_map_ref; defer_ref.deferred_map_ref.set(defer_ref, defer_ref); } } } resolve(val) { var _a; if (this.already_completed) return; this.already_completed = true; if (this.timeout) clearTimeout(this.timeout); this.resolve_real(val); (_a = this.deferred_map_ref) == null ? void 0 : _a.delete(this); } reject(val) { var _a; if (this.already_completed) return; this.already_completed = true; if (this.timeout) clearTimeout(this.timeout); this.reject_real(val); (_a = this.deferred_map_ref) == null ? void 0 : _a.delete(this); } }; // src/DeferredMap.class.ts var DeferredMap = class { constructor() { this.defer_sets = /* @__PURE__ */ new Map(); this.default_resolve_value = -987; this.default_reject_value = -876; } get size() { return this.defer_sets.size; } deferred(autotimeout_ms) { const deferred = new Deferred({ deferred_map_ref: this.defer_sets, autotimeout_ms }); this.defer_sets.set(deferred, deferred); return deferred; } resolveAll(resolve_value) { if (resolve_value === void 0) resolve_value = this.default_resolve_value; for (const [key, value] of this.defer_sets) { value.resolve(this.default_resolve_value); } this.defer_sets = /* @__PURE__ */ new Map(); } rejectAll(reject_value) { if (reject_value === void 0) reject_value = this.default_reject_value; for (const [key, value] of this.defer_sets) { value.reject(this.default_reject_value); } this.defer_sets = /* @__PURE__ */ new Map(); } }; // Annotate the CommonJS export names for ESM import in node: 0 && (module.exports = { Deferred, DeferredMap });