import { createRequire } from "node:module"; import { existsSync } from "node:fs"; import { lstat, readdir } from "node:fs/promises"; import path from "node:path"; const aliasesRoot = path.resolve("dist/.next/node_modules"); const aliases = (await readdir(aliasesRoot)).filter((entry) => entry.startsWith("better-sqlite3-") ); if (aliases.length === 0) { throw new Error("standalone build contains no better-sqlite3 external alias"); } if (existsSync(path.resolve("dist/node_modules/better-sqlite3"))) { throw new Error("standalone build contains a build-platform SQLite binary"); } const require = createRequire(import.meta.url); for (const alias of aliases) { const aliasPath = path.join(aliasesRoot, alias); if ((await lstat(aliasPath)).isSymbolicLink()) { throw new Error(`${alias} is an npm-incompatible symbolic link`); } const Database = require(aliasPath); const database = new Database(":memory:"); try { database.prepare("SELECT 1 value").get(); } finally { database.close(); } } console.log(`Verified ${aliases.length} portable better-sqlite3 alias(es).`);