33 lines
1.1 KiB
JavaScript
33 lines
1.1 KiB
JavaScript
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).`);
|