UNPKG

weakref

Version:

Extend built-in collections with weak references for efficient garbage collection and optimal performance in memory-intensive applications with IterableWeakSet, IterableWeakMap, and WeakValueMap.

73 lines (72 loc) 3.01 kB
"use strict"; 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 _IterableWeakMap_weakMap, _IterableWeakMap_set; Object.defineProperty(exports, "__esModule", { value: true }); exports.IterableWeakMap = void 0; const iterable_weak_set_js_1 = require("./iterable_weak_set.js"); class IterableWeakMap { constructor(iterable) { _IterableWeakMap_weakMap.set(this, new WeakMap()); _IterableWeakMap_set.set(this, new iterable_weak_set_js_1.IterableWeakSet()); for (const [key, value] of iterable ?? []) { this.set(key, value); } } get size() { return __classPrivateFieldGet(this, _IterableWeakMap_set, "f").size; } clear() { for (const key of __classPrivateFieldGet(this, _IterableWeakMap_set, "f")) { this.delete(key); } } delete(key) { const ref = __classPrivateFieldGet(this, _IterableWeakMap_weakMap, "f").get(key); if (ref) { __classPrivateFieldGet(this, _IterableWeakMap_weakMap, "f").delete(key); __classPrivateFieldGet(this, _IterableWeakMap_set, "f").delete(key); return true; } return false; } get(key) { return __classPrivateFieldGet(this, _IterableWeakMap_weakMap, "f").get(key); } has(key) { return __classPrivateFieldGet(this, _IterableWeakMap_weakMap, "f").has(key); } set(key, value) { __classPrivateFieldGet(this, _IterableWeakMap_weakMap, "f").set(key, value); __classPrivateFieldGet(this, _IterableWeakMap_set, "f").add(key); return this; } get [(_IterableWeakMap_weakMap = new WeakMap(), _IterableWeakMap_set = new WeakMap(), Symbol.toStringTag)]() { return "IterableWeakMap"; } forEach(callbackfn, thisArg) { for (const [key, value] of this[Symbol.iterator]()) { callbackfn.call(thisArg, value, key, this); } } *[Symbol.iterator]() { for (const key of __classPrivateFieldGet(this, _IterableWeakMap_set, "f")) { yield [key, __classPrivateFieldGet(this, _IterableWeakMap_weakMap, "f").get(key)]; } } entries() { return this[Symbol.iterator](); } keys() { return __classPrivateFieldGet(this, _IterableWeakMap_set, "f")[Symbol.iterator](); } *values() { for (const key of __classPrivateFieldGet(this, _IterableWeakMap_set, "f")) { yield __classPrivateFieldGet(this, _IterableWeakMap_weakMap, "f").get(key); } } } exports.IterableWeakMap = IterableWeakMap;