





















@@ -202,4 +202,60 @@ describe("getCachedPluginJitiLoader", () => {
202202expect(firstAlias?.beta).toBe("/repo/alpha/sub");
203203expect((firstAlias as Record<symbol, unknown>)[marker]).toBe(true);
204204});
205+206+it("serves compiled .js targets from native require without invoking the jiti loader", async () => {
207+const jitiLoader = vi.fn();
208+const createJiti = vi.fn(() => jitiLoader);
209+vi.doMock("jiti", () => ({ createJiti }));
210+vi.doMock("./native-module-require.js", () => ({
211+isJavaScriptModulePath: (p: string) =>
212+p.endsWith(".js") || p.endsWith(".mjs") || p.endsWith(".cjs"),
213+tryNativeRequireJavaScriptModule: (target: string) => ({
214+ok: true,
215+moduleExport: { loadedFrom: target },
216+}),
217+}));
218+const { getCachedPluginJitiLoader } = await importFreshModule<
219+typeof import("./jiti-loader-cache.js")
220+>(import.meta.url, "./jiti-loader-cache.js?scope=native-require-fastpath");
221+222+const cache = new Map();
223+const loader = getCachedPluginJitiLoader({
224+ cache,
225+modulePath: "/repo/dist/extensions/demo/api.js",
226+importerUrl: "file:///repo/src/plugins/public-surface-loader.ts",
227+jitiFilename: "file:///repo/src/plugins/public-surface-loader.ts",
228+});
229+230+const result = loader("/repo/dist/extensions/demo/api.js") as { loadedFrom: string };
231+expect(result.loadedFrom).toBe("/repo/dist/extensions/demo/api.js");
232+// jiti is created eagerly, but its loader must NOT be invoked for .js
233+// targets that `tryNativeRequireJavaScriptModule` resolves.
234+expect(jitiLoader).not.toHaveBeenCalled();
235+});
236+237+it("falls back to jiti when the native-require helper declines", async () => {
238+const jitiLoader = vi.fn(() => ({ fromJiti: true }));
239+const createJiti = vi.fn(() => jitiLoader);
240+vi.doMock("jiti", () => ({ createJiti }));
241+vi.doMock("./native-module-require.js", () => ({
242+isJavaScriptModulePath: () => true,
243+tryNativeRequireJavaScriptModule: () => ({ ok: false }),
244+}));
245+const { getCachedPluginJitiLoader } = await importFreshModule<
246+typeof import("./jiti-loader-cache.js")
247+>(import.meta.url, "./jiti-loader-cache.js?scope=native-require-fallback");
248+249+const cache = new Map();
250+const loader = getCachedPluginJitiLoader({
251+ cache,
252+modulePath: "/repo/dist/extensions/demo/api.js",
253+importerUrl: "file:///repo/src/plugins/public-surface-loader.ts",
254+jitiFilename: "file:///repo/src/plugins/public-surface-loader.ts",
255+});
256+257+const result = loader("/repo/dist/extensions/demo/api.js") as { fromJiti: boolean };
258+expect(result.fromJiti).toBe(true);
259+expect(jitiLoader).toHaveBeenCalledWith("/repo/dist/extensions/demo/api.js");
260+});
205261});
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。