@paroicms/server-image-cache-engine
Version:
The image variant engine that we use at Paroi.
44 lines • 1.41 kB
JavaScript
import { associateOwnerToImages } from "../internal/queries.js";
export function createOwnerImageManager({ ownerHandle, isHandleReusable, engineContext, }) {
const pendingData = new Map(); // key: imageCacheId, value: rawResizeR
let flushTimeout;
function startFlushTimeout() {
if (flushTimeout)
return;
flushTimeout = setTimeout(() => {
flushTimeout = undefined;
void flush().catch((error) => {
engineContext.logger.error("Error during auto-flush:", error);
});
}, 2_000);
}
async function flush() {
if (pendingData.size === 0)
return;
clearFlushTimeout();
const cacheImages = Array.from(pendingData).map(([imageCacheId, rawResizeR]) => ({
imageCacheId,
rawResizeR,
}));
pendingData.clear();
await associateOwnerToImages(engineContext, {
ownerHandle,
cacheImages,
isHandleReusable,
});
}
function clearFlushTimeout() {
if (flushTimeout) {
clearTimeout(flushTimeout);
flushTimeout = undefined;
}
}
return {
add(imageCacheId, rawResizeR) {
pendingData.set(imageCacheId, rawResizeR);
startFlushTimeout();
},
flush,
};
}
//# sourceMappingURL=owner-image-manager.js.map