diff --git a/src/env.ts b/src/env.ts index 51b51ba9..f396548b 100644 --- a/src/env.ts +++ b/src/env.ts @@ -74,10 +74,12 @@ function unenvPreset(opts: CreateEnvOptions) { Object.assign(preset.alias, { ...Object.fromEntries( Object.entries(nodeCompatAliases).flatMap(([from, to]) => { - const aliases = [ - [from, to], // => unenv/node/id - [`node:${from}`, to], // node: => unenv/node/id - ]; + const aliases = from.startsWith("node:") + ? [[from, to]] // node: => unenv/node/id + : [ + [from, to], // => unenv/node/id + [`node:${from}`, to], // node: => unenv/node/id + ]; return aliases; }), ), diff --git a/src/preset.ts b/src/preset.ts index 30b32a5d..0b3cc972 100644 --- a/src/preset.ts +++ b/src/preset.ts @@ -67,6 +67,9 @@ export const nodeCompatAliases = { wasi: "unenv/node/wasi", worker_threads: "unenv/node/worker_threads", zlib: "unenv/node/zlib", + + // These only are available via "node:" protocol + "node:sqlite": "unenv/node/sqlite", } as const; export const nodeCompatInjects = { diff --git a/src/runtime/node/sqlite.ts b/src/runtime/node/sqlite.ts new file mode 100644 index 00000000..f1a872b5 --- /dev/null +++ b/src/runtime/node/sqlite.ts @@ -0,0 +1,16 @@ +import type * as nodeSqlite from "node:sqlite"; +import { notImplementedClass } from "../_internal/utils.ts"; + +export const DatabaseSync: typeof nodeSqlite.DatabaseSync = + /*@__PURE__*/ notImplementedClass("sqlite.DatabaseSync"); + +export const StatementSync: typeof nodeSqlite.StatementSync = + /*@__PURE__*/ notImplementedClass("sqlite.StatementSync"); + +export const constants = {} as typeof nodeSqlite.constants; + +export default { + DatabaseSync, + StatementSync, + constants, +} satisfies typeof nodeSqlite; diff --git a/test/env.test.ts b/test/env.test.ts index 0a3ed50c..f363633e 100644 --- a/test/env.test.ts +++ b/test/env.test.ts @@ -3,6 +3,8 @@ import { defineEnv } from "../src"; import { builtinModules } from "node:module"; import { existsSync } from "node:fs"; +const nodeBuiltinModules = ["node:sqlite"]; + describe("defineEnv", () => { it("defaults", () => { const { env } = defineEnv(); @@ -29,6 +31,16 @@ describe("defineEnv", () => { } }); + it("has aliases for all node: builtin modules", () => { + const { env } = defineEnv({ nodeCompat: true }); + for (const id of builtinModules) { + expect(`node:` + env.alias[id]).toBeDefined(); + } + for (const id of nodeBuiltinModules) { + expect(env.alias[id]).toBeDefined(); + } + }); + it("nagate", () => { const { env } = defineEnv({ nodeCompat: false,