UNPKG

@web-atoms/core

Version:
50 lines (49 loc) 1.45 kB
System.register(["tslib", "../di/DISingleton"], function (_export, _context) { "use strict"; var __decorate, DISingleton, ObjectReference, ReferenceService; _export("ObjectReference", void 0); return { setters: [function (_tslib) { __decorate = _tslib.__decorate; }, function (_diDISingleton) { DISingleton = _diDISingleton.default; }], execute: function () { _export("ObjectReference", ObjectReference = class ObjectReference { constructor(key, value) { this.key = key; this.value = value; } }); ReferenceService = class ReferenceService { constructor() { this.cache = {}; this.id = 1; } get(key) { return this.cache[key]; } put(item, ttl = 60) { const key = `k${this.id++}`; const r = new ObjectReference(key, item); r.consume = () => { delete this.cache[key]; if (r.timeout) { clearTimeout(r.timeout); } return r.value; }; r.timeout = setTimeout(() => { r.timeout = 0; r.consume(); }, ttl * 1000); this.cache[key] = r; return r; } }; ReferenceService = __decorate([DISingleton()], ReferenceService); _export("default", ReferenceService); } }; }); //# sourceMappingURL=ReferenceService.js.map