UNPKG

bentocache

Version:

Multi-tier cache module for Node.js. Redis, Upstash, CloudfareKV, File, in-memory and others drivers

34 lines (33 loc) 1.17 kB
// src/drivers/file/cleaner.js import { join } from "path"; import { readdir, unlink, readFile } from "fs/promises"; async function deleteFileIfExpired({ filePath, onError }) { try { const content = await readFile(filePath, "utf-8"); const [, expiresAt] = JSON.parse(content); const expiry = new Date(expiresAt).getTime(); if (+expiry === -1) return; if (expiry < Date.now()) await unlink(filePath); } catch (error) { if (error instanceof SyntaxError) { if (onError) onError({ filePath, error }); await unlink(filePath).catch(() => { }); return; } if (onError) onError({ filePath, error }); } } async function pruneExpiredFiles({ directory, onError }) { const dirEntries = await readdir(directory, { recursive: true, withFileTypes: true }); for (const dirEntry of dirEntries) { if (dirEntry.isDirectory()) continue; const basePath = typeof dirEntry.parentPath === "string" ? dirEntry.parentPath : dirEntry.path; const filePath = join(basePath, dirEntry.name); await deleteFileIfExpired({ filePath, onError }); } } export { pruneExpiredFiles }; //# sourceMappingURL=chunk-UWZXJRIZ.js.map