UNPKG

@cloud-copilot/iam-lens

Version:

Visibility in IAM in and across AWS accounts

34 lines 1.34 kB
import { Worker } from 'worker_threads'; import { convertArrayBufferToObject, convertObjectToArrayBuffer } from './buffers.js'; //TODO: Add a Prefix to avoid collisions if there are multiple caches export class SharedArrayBufferMainCache { constructor(workers) { this.cache = {}; 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 convertArrayBufferToObject(this.cache[cacheKey]); } const result = await fetcher(); this.cache[cacheKey] = convertObjectToArrayBuffer(result); return result; } } //# sourceMappingURL=SharedArrayBufferMainCache.js.map