refactor: simplify plugin module loading

This commit is contained in:
Peter Steinberger
2026-05-02 01:41:05 +01:00
parent f6f8e6e242
commit 23fd8a90f9
39 changed files with 704 additions and 527 deletions

View File

@@ -1,23 +1,23 @@
import type { PluginJitiLoaderCache } from "./jiti-loader-cache.js";
import { getCachedPluginJitiLoader } from "./jiti-loader-cache.js";
import { withProfile } from "./plugin-load-profile.js";
import type { PluginModuleLoaderCache } from "./plugin-module-loader-cache.js";
import { getCachedPluginSourceModuleLoader } from "./plugin-module-loader-cache.js";
export type PluginSourceLoader = (modulePath: string) => unknown;
export function createPluginSourceLoader(): PluginSourceLoader {
const loaders: PluginJitiLoaderCache = new Map();
const loaders: PluginModuleLoaderCache = new Map();
return (modulePath) => {
const jiti = getCachedPluginJitiLoader({
const sourceLoader = getCachedPluginSourceModuleLoader({
cache: loaders,
modulePath,
importerUrl: import.meta.url,
jitiFilename: import.meta.url,
loaderFilename: import.meta.url,
});
// Direct source loads are not associated with a specific plugin id —
// preserve the existing `plugin=(direct)` field used by tooling that
// scrapes [plugin-load-profile] lines.
return withProfile({ pluginId: "(direct)", source: modulePath }, "source-loader", () =>
jiti(modulePath),
sourceLoader(modulePath),
);
};
}