@cloud-copilot/iam-lens
Version:
Visibility in IAM in and across AWS accounts
34 lines • 1.34 kB
JavaScript
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