bentocache
Version:
Multi-tier cache module for Node.js. Redis, Upstash, CloudfareKV, File, in-memory and others drivers
27 lines (26 loc) • 922 B
JavaScript
// 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 (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 filePath = join(dirEntry.parentPath, dirEntry.name);
await deleteFileIfExpired({ filePath, onError });
}
}
export {
pruneExpiredFiles
};
//# sourceMappingURL=chunk-BNGZRB5S.js.map