mirror of
https://github.com/diegosouzapw/OmniRoute.git
synced 2026-09-14 10:52:17 +03:00
Retargetado para release/v3.8.51 (release/v3.8.50 está congelada — freeze issue #11439). Validado em lote combinado (batch-0824h2, junto de #11435/#11436/#11437) contra o tip de release/v3.8.51: typecheck:core limpo, gates estáticos OK, 127/127 testes focados passando. Investigação sólida com repro real via container isolado, três causas independentes identificadas e corrigidas com testes de regressão dedicados para cada uma. Obrigado pela contribuição!
38 lines
1.3 KiB
JavaScript
38 lines
1.3 KiB
JavaScript
// Build-time stub for better-sqlite3 (#10060).
|
|
//
|
|
// OPT-IN ONLY — set OMNIROUTE_BETTER_SQLITE3_STUB=1 to alias it in, and only on
|
|
// a build host that actually hits the SIGABRT worker teardown: the native
|
|
// Statement destructor aborts when a Next.js build worker thread exits
|
|
// (assertion in node::RemoveEnvironmentCleanupHook, env == nullptr), which can
|
|
// leave the build with no standalone output.
|
|
//
|
|
// It is NOT a build-only stand-in. A Turbopack resolveAlias rewrites the
|
|
// request before the externals check, so aliasing `better-sqlite3` here also
|
|
// removes it from serverExternalPackages' reach and bakes THIS FILE into the
|
|
// shipped bundle. An artifact built with the flag on cannot open a database:
|
|
// the sync driver chain fails with "r(...) is not a constructor", falls through
|
|
// node:sqlite and sql.js, and the instrumentation hook aborts at boot, so every
|
|
// route answers HTTP 500. That is exactly what an unconditional alias shipped
|
|
// in #11343. See scripts/build/better-sqlite3-stub-flag.mjs.
|
|
class Database {
|
|
constructor() {}
|
|
prepare() {
|
|
return {
|
|
run: () => ({ changes: 0, lastInsertRowid: 0 }),
|
|
get: () => undefined,
|
|
all: () => [],
|
|
};
|
|
}
|
|
exec() {}
|
|
pragma() {}
|
|
transaction(fn) {
|
|
return fn;
|
|
}
|
|
backup() {
|
|
return Promise.resolve({});
|
|
}
|
|
close() {}
|
|
}
|
|
|
|
module.exports = Database;
|