// Build-time guard for issue #708. The pdf.js wasm image decoders are copied
// into build/client/pdfjs-wasm/ by vite-plugin-static-copy. If a future
// pdfjs-dist bump moves or renames the wasm, the glob could silently copy
// nothing — and CCITT/JBIG2/JPEG2000 scans would render blank in production
// again with no test catching it (the bug is invisible to unit tests). Fail
// the build loudly instead. Runs after `npm run build` (incl. the Docker
// build stage) via the `postbuild` npm script.
import { existsSync, statSync } from 'node:fs';
import { join } from 'node:path';

const dir = join(process.cwd(), 'build', 'client', 'pdfjs-wasm');
// jbig2.wasm decodes JBIG2 + CCITTFax; openjpeg.wasm decodes JPEG2000.
const required = ['jbig2.wasm', 'openjpeg.wasm'];

const missing = required.filter((f) => {
	const p = join(dir, f);
	return !existsSync(p) || statSync(p).size === 0;
});

if (missing.length > 0) {
	console.error(
		`\n[assert-pdfjs-wasm] MISSING from build output: ${missing.join(', ')}\n` +
			`Expected non-empty files in ${dir}.\n` +
			`The pdf.js wasm decoders did not ship — scanned PDFs would render blank.\n` +
			`Check the vite-plugin-static-copy target in vite.config.ts and that\n` +
			`node_modules/pdfjs-dist/wasm/ still contains these files. See issue #708.\n`
	);
	process.exit(1);
}
