import { existsSync, readFileSync, statSync } from 'node:fs' import { join, resolve } from 'node:path' const outputDir = resolve(process.env.WRAPPER_DEMO_OUTPUT_DIR || 'apps/component-demo/dist') const requiredFiles = [ 'index.html', 'custom-element.html', 'jquery.html', 'manual-js.html', 'manual-iife.html', 'svelte-action.html', 'vue3.html', 'example/preview.md', 'example/word.docx', 'file-viewer/flyfish-viewer-assets.json', 'vendor/docx/docx.worker.js', 'vendor/xlsx/sheet.worker.js', 'vendor/file-viewer/flyfish-viewer-assets.json', 'vendor/file-viewer-web/flyfish-file-viewer-web.iife.js', 'wasm/cad/dwg-worker.js' ] const fail = message => { console.error(`[component-demo-output] ${message}`) process.exit(1) } const assertFile = relativePath => { const filePath = join(outputDir, relativePath) if (!existsSync(filePath) || !statSync(filePath).isFile()) { fail(`Missing required file: ${filePath}`) } return filePath } const assertNotHtmlFallback = relativePath => { const filePath = assertFile(relativePath) const head = readFileSync(filePath, 'utf8').slice(0, 120).trimStart().toLowerCase() if (head.startsWith('