29 lines
911 B
JavaScript
29 lines
911 B
JavaScript
import fs from 'node:fs';
|
|
import path from 'node:path';
|
|
|
|
export const RUN_PUBLIC_HTML_LOOKBACK_MS = 0;
|
|
|
|
export function listRecentlyModifiedPublicHtmlRelativePaths(
|
|
publishDir,
|
|
{ sinceMs = null, lookbackMs = RUN_PUBLIC_HTML_LOOKBACK_MS } = {},
|
|
) {
|
|
const startedAt = Number(sinceMs);
|
|
if (!Number.isFinite(startedAt) || startedAt <= 0) return [];
|
|
|
|
const publicDir = path.join(path.resolve(String(publishDir ?? '')), 'public');
|
|
if (!fs.existsSync(publicDir) || !fs.statSync(publicDir).isDirectory()) return [];
|
|
|
|
const cutoff = Math.max(0, startedAt - Math.max(0, Number(lookbackMs) || 0));
|
|
return fs.readdirSync(publicDir)
|
|
.filter((name) => name.toLowerCase().endsWith('.html'))
|
|
.filter((name) => {
|
|
try {
|
|
return fs.statSync(path.join(publicDir, name)).mtimeMs >= cutoff;
|
|
} catch {
|
|
return false;
|
|
}
|
|
})
|
|
.map((name) => `public/${name}`)
|
|
.sort();
|
|
}
|