@cloud-copilot/iam-lens
Version:
Visibility in IAM in and across AWS accounts
37 lines • 1.47 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.SharedArrayBufferMainCache = void 0;
const buffers_js_1 = require("./buffers.js");
//TODO: Add a Prefix to avoid collisions if there are multiple caches
class SharedArrayBufferMainCache {
cache = {};
constructor(workers) {
for (const worker of workers) {
worker.on('message', (message) => {
if (message.type === 'getCache') {
const cacheKey = message.cacheKey;
const value = this.cache[cacheKey];
if (value) {
worker.postMessage({ type: 'cacheHit', cacheKey, value });
}
else {
worker.postMessage({ type: 'cacheMiss', cacheKey });
}
}
else if (message.type === 'saveCache') {
this.cache[message.cacheKey] = message.value;
}
});
}
}
async withCache(cacheKey, fetcher) {
if (this.cache[cacheKey]) {
return (0, buffers_js_1.convertArrayBufferToObject)(this.cache[cacheKey]);
}
const result = await fetcher();
this.cache[cacheKey] = (0, buffers_js_1.convertObjectToArrayBuffer)(result);
return result;
}
}
exports.SharedArrayBufferMainCache = SharedArrayBufferMainCache;
//# sourceMappingURL=SharedArrayBufferMainCache.js.map