UNPKG

@paroicms/server-image-cache-engine

Version:

The image variant engine that we use at Paroi.

44 lines 1.41 kB
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