UNPKG

promised-map

Version:

A map of promises that can be resolved or rejected by key

106 lines 3.12 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.PromisedMap = void 0; var PromisedMap = /** @class */ (function () { function PromisedMap() { this.map = new Map(); } Object.defineProperty(PromisedMap.prototype, "size", { /** * Returns map size. */ get: function () { return this.map.size; }, enumerable: false, configurable: true }); /** * Sets key/data pair and creates related promise. * If key already exists in map - it will be replaced with new data and new promise. */ PromisedMap.prototype.set = function (key, data) { var item = this.createMapItem(data); this.map.set(key, item); return item.promise; }; /** * Returns data for key. */ PromisedMap.prototype.get = function (key) { var item = this.map.get(key); return item && item.data; }; /** * Checks if key exists. */ PromisedMap.prototype.has = function (key) { return this.map.has(key); }; /** * Deletes key from map. * Caution: previously returned promise will no be resolved or rejected. */ PromisedMap.prototype.delete = function (key) { return this.map.delete(key); }; /** * Resolves promise in map by key and removes key from map. * If no such key in map - nothing happens. */ PromisedMap.prototype.resolve = function (key, value) { var item = this.map.get(key); if (item) { this.delete(key); item.resolve(value); } }; /** * Rejects promise in map by key and removes key from map. * If no such key in map - nothing happens. */ PromisedMap.prototype.reject = function (key, reason) { var item = this.map.get(key); if (item) { this.delete(key); item.reject(reason); } }; /** * Resolves all promise in map and removes all keys. */ PromisedMap.prototype.resolveAll = function (value) { this.map.forEach(function (item) { return item.resolve(value); }); this.map.clear(); }; /** * Rejects all promise in map and removes all keys. */ PromisedMap.prototype.rejectAll = function (reason) { this.map.forEach(function (item) { return item.reject(reason); }); this.map.clear(); }; /** * Iterate map. */ PromisedMap.prototype.forEach = function (fn) { this.map.forEach(function (item, key, map) { return fn(item.data, key, map); }); }; /** * Clears map. */ PromisedMap.prototype.clear = function () { return this.map.clear(); }; PromisedMap.prototype.createMapItem = function (data) { var item = { data: data }; item.promise = new Promise(function (resolve, reject) { item.resolve = resolve; item.reject = reject; }); return item; }; return PromisedMap; }()); exports.PromisedMap = PromisedMap; //# sourceMappingURL=index.js.map