@web-atoms/core
Version:
50 lines (49 loc) • 1.45 kB
JavaScript
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