mirror of
https://github.com/openclaw/openclaw.git
synced 2026-05-06 12:10:42 +00:00
fix(plugin-sdk): share facade loader jiti cache plumbing
This commit is contained in:
@@ -4,22 +4,22 @@ import path from "node:path";
|
||||
import { fileURLToPath } from "node:url";
|
||||
import { openBoundaryFileSync } from "../infra/boundary-file-read.js";
|
||||
import { resolveBundledPluginsDir } from "../plugins/bundled-dir.js";
|
||||
import {
|
||||
getCachedPluginJitiLoader,
|
||||
type PluginJitiLoaderCache,
|
||||
type PluginJitiLoaderFactory,
|
||||
} from "../plugins/jiti-loader-cache.js";
|
||||
import {
|
||||
normalizeBundledPluginArtifactSubpath,
|
||||
resolveBundledPluginPublicSurfacePath,
|
||||
} from "../plugins/public-surface-runtime.js";
|
||||
import {
|
||||
buildPluginLoaderJitiOptions,
|
||||
resolvePluginLoaderJitiConfig,
|
||||
resolveLoaderPackageRoot,
|
||||
} from "../plugins/sdk-alias.js";
|
||||
import { resolveLoaderPackageRoot } from "../plugins/sdk-alias.js";
|
||||
|
||||
const CURRENT_MODULE_PATH = fileURLToPath(import.meta.url);
|
||||
const PUBLIC_SURFACE_SOURCE_EXTENSIONS = [".ts", ".mts", ".js", ".mjs", ".cts", ".cjs"] as const;
|
||||
type JitiLoader = ReturnType<(typeof import("jiti"))["createJiti"]>;
|
||||
|
||||
const nodeRequire = createRequire(import.meta.url);
|
||||
const jitiLoaders = new Map<string, JitiLoader>();
|
||||
const jitiLoaders: PluginJitiLoaderCache = new Map();
|
||||
const loadedFacadeModules = new Map<string, unknown>();
|
||||
const loadedFacadePluginIds = new Set<string>();
|
||||
const cachedFacadeModuleLocationsByKey = new Map<
|
||||
@@ -29,9 +29,7 @@ const cachedFacadeModuleLocationsByKey = new Map<
|
||||
boundaryRoot: string;
|
||||
} | null
|
||||
>();
|
||||
let facadeLoaderJitiFactory:
|
||||
| ((...args: Parameters<(typeof import("jiti"))["createJiti"]>) => JitiLoader)
|
||||
| undefined;
|
||||
let facadeLoaderJitiFactory: PluginJitiLoaderFactory | undefined;
|
||||
let cachedOpenClawPackageRoot: string | undefined;
|
||||
|
||||
function getJitiFactory() {
|
||||
@@ -140,22 +138,14 @@ function resolveFacadeModuleLocation(params: {
|
||||
}
|
||||
|
||||
function getJiti(modulePath: string) {
|
||||
const { tryNative, aliasMap, cacheKey } = resolvePluginLoaderJitiConfig({
|
||||
return getCachedPluginJitiLoader({
|
||||
cache: jitiLoaders,
|
||||
modulePath,
|
||||
argv1: process.argv[1],
|
||||
moduleUrl: import.meta.url,
|
||||
importerUrl: import.meta.url,
|
||||
preferBuiltDist: true,
|
||||
jitiFilename: import.meta.url,
|
||||
createLoader: getJitiFactory(),
|
||||
});
|
||||
const cached = jitiLoaders.get(cacheKey);
|
||||
if (cached) {
|
||||
return cached;
|
||||
}
|
||||
const loader = getJitiFactory()(import.meta.url, {
|
||||
...buildPluginLoaderJitiOptions(aliasMap),
|
||||
tryNative,
|
||||
});
|
||||
jitiLoaders.set(cacheKey, loader);
|
||||
return loader;
|
||||
}
|
||||
|
||||
function createLazyFacadeValueLoader<T>(load: () => T): () => T {
|
||||
@@ -310,7 +300,7 @@ export function resetFacadeLoaderStateForTest(): void {
|
||||
}
|
||||
|
||||
export function setFacadeLoaderJitiFactoryForTest(
|
||||
factory: ((...args: Parameters<(typeof import("jiti"))["createJiti"]>) => JitiLoader) | undefined,
|
||||
factory: PluginJitiLoaderFactory | undefined,
|
||||
): void {
|
||||
facadeLoaderJitiFactory = factory;
|
||||
}
|
||||
|
||||
@@ -1,7 +1,9 @@
|
||||
import { createJiti } from "jiti";
|
||||
import { buildPluginLoaderJitiOptions, resolvePluginLoaderJitiConfig } from "./sdk-alias.js";
|
||||
|
||||
export type PluginJitiLoaderCache = Map<string, ReturnType<typeof createJiti>>;
|
||||
export type PluginJitiLoader = ReturnType<typeof createJiti>;
|
||||
export type PluginJitiLoaderFactory = typeof createJiti;
|
||||
export type PluginJitiLoaderCache = Map<string, PluginJitiLoader>;
|
||||
|
||||
export function getCachedPluginJitiLoader(params: {
|
||||
cache: PluginJitiLoaderCache;
|
||||
@@ -10,7 +12,8 @@ export function getCachedPluginJitiLoader(params: {
|
||||
argvEntry?: string;
|
||||
preferBuiltDist?: boolean;
|
||||
jitiFilename?: string;
|
||||
}): ReturnType<typeof createJiti> {
|
||||
createLoader?: PluginJitiLoaderFactory;
|
||||
}): PluginJitiLoader {
|
||||
const { tryNative, aliasMap, cacheKey } = resolvePluginLoaderJitiConfig({
|
||||
modulePath: params.modulePath,
|
||||
argv1: params.argvEntry ?? process.argv[1],
|
||||
@@ -22,7 +25,7 @@ export function getCachedPluginJitiLoader(params: {
|
||||
if (cached) {
|
||||
return cached;
|
||||
}
|
||||
const loader = createJiti(params.jitiFilename ?? params.modulePath, {
|
||||
const loader = (params.createLoader ?? createJiti)(params.jitiFilename ?? params.modulePath, {
|
||||
...buildPluginLoaderJitiOptions(aliasMap),
|
||||
tryNative,
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user