
















@@ -198,6 +198,39 @@ function createPluginSdkAliasTargetFixture(params?: {
198198};
199199}
200200201+function createBundledPluginPackagePublicSurfaceAliasFixture() {
202+const fixture = createPluginSdkAliasTargetFixture();
203+const extensionRoot = path.join(fixture.fixture.root, bundledPluginRoot("slack"));
204+const distExtensionRoot = path.join(fixture.fixture.root, "dist", "extensions", "slack");
205+mkdirSafeDir(extensionRoot);
206+mkdirSafeDir(distExtensionRoot);
207+fs.writeFileSync(
208+path.join(extensionRoot, "package.json"),
209+JSON.stringify({ name: "@openclaw/slack", type: "module" }, null, 2),
210+"utf-8",
211+);
212+const sourceApiPath = path.join(extensionRoot, "api.ts");
213+const sourceRuntimeApiPath = path.join(extensionRoot, "runtime-api.ts");
214+const distApiPath = path.join(distExtensionRoot, "api.js");
215+const distRuntimeApiPath = path.join(distExtensionRoot, "runtime-api.js");
216+fs.writeFileSync(sourceApiPath, "export const slackApi = 'source';\n", "utf-8");
217+fs.writeFileSync(sourceRuntimeApiPath, "export const slackRuntimeApi = 'source';\n", "utf-8");
218+fs.writeFileSync(distApiPath, "export const slackApi = 'dist';\n", "utf-8");
219+fs.writeFileSync(distRuntimeApiPath, "export const slackRuntimeApi = 'dist';\n", "utf-8");
220+fs.writeFileSync(
221+path.join(extensionRoot, "internal.ts"),
222+"export const internal = true;\n",
223+"utf-8",
224+);
225+return {
226+ ...fixture,
227+ distApiPath,
228+ distRuntimeApiPath,
229+ sourceApiPath,
230+ sourceRuntimeApiPath,
231+};
232+}
233+201234function writePluginEntry(root: string, relativePath: string) {
202235const pluginEntry = path.join(root, relativePath);
203236fs.mkdirSync(path.dirname(pluginEntry), { recursive: true });
@@ -777,6 +810,47 @@ describe("plugin sdk alias helpers", () => {
777810});
778811});
779812813+it("aliases bundled plugin package public surfaces for source plugin transforms", () => {
814+const { fixture, sourceApiPath, sourceRuntimeApiPath } =
815+createBundledPluginPackagePublicSurfaceAliasFixture();
816+const sourcePluginEntry = writePluginEntry(
817+fixture.root,
818+bundledPluginFile("qa-lab", "src/live-transports/slack/slack-live.runtime.ts"),
819+);
820+821+const aliases = withEnv({ NODE_ENV: undefined }, () =>
822+buildPluginLoaderAliasMap(sourcePluginEntry),
823+);
824+825+expect(fs.realpathSync(aliases["@openclaw/slack/api.js"] ?? "")).toBe(
826+fs.realpathSync(sourceApiPath),
827+);
828+expect(fs.realpathSync(aliases["@openclaw/slack/runtime-api.js"] ?? "")).toBe(
829+fs.realpathSync(sourceRuntimeApiPath),
830+);
831+expect(aliases["@openclaw/slack/internal.js"]).toBeUndefined();
832+});
833+834+it("aliases bundled plugin package public surfaces to dist when dist resolution is requested", () => {
835+const { fixture, distApiPath, distRuntimeApiPath } =
836+createBundledPluginPackagePublicSurfaceAliasFixture();
837+const sourcePluginEntry = writePluginEntry(
838+fixture.root,
839+bundledPluginFile("qa-lab", "src/live-transports/slack/slack-live.runtime.ts"),
840+);
841+842+const aliases = withEnv({ NODE_ENV: undefined }, () =>
843+buildPluginLoaderAliasMap(sourcePluginEntry, undefined, undefined, "dist"),
844+);
845+846+expect(fs.realpathSync(aliases["@openclaw/slack/api.js"] ?? "")).toBe(
847+fs.realpathSync(distApiPath),
848+);
849+expect(fs.realpathSync(aliases["@openclaw/slack/runtime-api.js"] ?? "")).toBe(
850+fs.realpathSync(distRuntimeApiPath),
851+);
852+});
853+780854it("falls back to source plugin-sdk subpath aliases when dist chunks are stale", () => {
781855const fixture = createPluginSdkAliasFixture({
782856srcFile: "provider-entry.ts",
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。