mirror of
https://github.com/diegosouzapw/OmniRoute.git
synced 2026-08-18 21:22:28 +03:00
37 lines
1.1 KiB
TypeScript
37 lines
1.1 KiB
TypeScript
// src/lib/db/adapters/runtimeRequire.ts
|
|
/**
|
|
* Load optional database drivers from the runtime rather than bundling them.
|
|
*
|
|
* The standalone server is emitted as CommonJS chunks and externalizes the
|
|
* native database packages. Keep those requests as static `require()` calls so
|
|
* webpack preserves the external boundary. Development and tests run as ESM,
|
|
* where `require` is unavailable; the `createRequire(import.meta.url)` fallback
|
|
* handles those callers.
|
|
*/
|
|
import { createRequire } from "node:module";
|
|
|
|
declare const require: NodeRequire | undefined;
|
|
|
|
function esmRuntimeRequire(specifier: string): unknown {
|
|
return createRequire(import.meta.url)(specifier);
|
|
}
|
|
|
|
export function runtimeRequire(specifier: string): unknown {
|
|
if (typeof require === "function") {
|
|
switch (specifier) {
|
|
case "better-sqlite3":
|
|
return require("better-sqlite3");
|
|
case "node:sqlite":
|
|
return require("node:sqlite");
|
|
case "bun:sqlite":
|
|
return require("bun:sqlite");
|
|
case "sql.js":
|
|
return require("sql.js");
|
|
case "sqlite-vec":
|
|
return require("sqlite-vec");
|
|
}
|
|
}
|
|
|
|
return esmRuntimeRequire(specifier);
|
|
}
|