From 2178c8eafc51574e65f5ceadf02c1520405538c2 Mon Sep 17 00:00:00 2001 From: Dallin Romney Date: Wed, 9 Sep 2026 15:37:10 -0700 Subject: [PATCH] fix(release): recognize Bun built-in modules (#143436) --- scripts/lib/plugin-package-dependencies.mts | 1 + test/openclaw-npm-postpublish-verify.test.ts | 21 +++++++++++++++++++ .../plugin-package-dependencies.test.ts | 1 + 3 files changed, 23 insertions(+) diff --git a/scripts/lib/plugin-package-dependencies.mts b/scripts/lib/plugin-package-dependencies.mts index 3cf1c49ec6aa..5940a3cbdebd 100644 --- a/scripts/lib/plugin-package-dependencies.mts +++ b/scripts/lib/plugin-package-dependencies.mts @@ -26,6 +26,7 @@ export function packageNameFromSpecifier(specifier: string) { typeof specifier !== "string" || specifier.startsWith(".") || specifier.startsWith("/") || + specifier.startsWith("bun:") || specifier.startsWith("node:") || specifier.startsWith("#") ) { diff --git a/test/openclaw-npm-postpublish-verify.test.ts b/test/openclaw-npm-postpublish-verify.test.ts index 358e1cbbebf2..20119dafb521 100644 --- a/test/openclaw-npm-postpublish-verify.test.ts +++ b/test/openclaw-npm-postpublish-verify.test.ts @@ -1151,6 +1151,27 @@ describe("collectInstalledRootDependencyManifestErrors", () => { } }); + it("accepts Bun built-in modules without npm dependency declarations", () => { + const packageRoot = makeInstalledPackageRoot(); + + try { + writePackageFile(packageRoot, "package.json", { + version: "2026.9.9", + dependencies: {}, + }); + mkdirSync(join(packageRoot, "dist"), { recursive: true }); + writeFileSync( + join(packageRoot, "dist", "bun-sqlite-library.js"), + 'import { Database } from "bun:sqlite";\nconst { dlopen } = require("bun:ffi");\nexport { Database, dlopen };\n', + "utf8", + ); + + expect(collectInstalledRootDependencyManifestErrors(packageRoot)).toStrictEqual([]); + } finally { + rmSync(packageRoot, { recursive: true, force: true }); + } + }); + const companionSource = 'const voice = require("@discordjs/voice");\nexport { voice };\n'; const companionOwnership = { chunks: { diff --git a/test/scripts/plugin-package-dependencies.test.ts b/test/scripts/plugin-package-dependencies.test.ts index ae0622dac76b..2419e40ab477 100644 --- a/test/scripts/plugin-package-dependencies.test.ts +++ b/test/scripts/plugin-package-dependencies.test.ts @@ -27,6 +27,7 @@ describe("scripts/lib/plugin-package-dependencies.mts", () => { expect(packageNameFromSpecifier("plain-pkg/subpath")).toBe("plain-pkg"); expect(packageNameFromSpecifier("@scope")).toBeNull(); expect(packageNameFromSpecifier("@scope/")).toBeNull(); + expect(packageNameFromSpecifier("bun:sqlite")).toBeNull(); expect(packageNameFromSpecifier("node:fs")).toBeNull(); expect(packageNameFromSpecifier("./local")).toBeNull(); expect(packageNameFromSpecifier("/absolute")).toBeNull();