import fs from "node:fs"; import path from "node:path"; const DOWNLOADS_DIR = path.resolve(import.meta.dirname, "../public/downloads"); const PDF_METADATA_PATTERN = /\/(?:Title|Author|Subject|Keywords|Creator|CreationDate|ModDate)\s*\(|||/i; function collectPdfs(directory) { if (!fs.existsSync(directory)) return []; return fs .readdirSync(directory, { withFileTypes: true }) .filter((entry) => entry.isFile() && entry.name.toLowerCase().endsWith(".pdf")) .map((entry) => path.join(directory, entry.name)); } const files = collectPdfs(DOWNLOADS_DIR); const filesWithMetadata = files.filter((file) => PDF_METADATA_PATTERN.test(fs.readFileSync(file, "latin1")), ); for (const file of filesWithMetadata) { console.error(`[downloads:check-metadata] PDF metadata found: ${file}`); } if (filesWithMetadata.length > 0) { process.exitCode = 1; } else { console.log(`[downloads:check-metadata] ${files.length} PDFs checked; no document metadata found.`); }