mirror of
https://github.com/openclaw/openclaw.git
synced 2026-05-06 17:00:50 +00:00
perf(gateway): avoid jiti on native plugin loads
This commit is contained in:
@@ -1,7 +1,8 @@
|
||||
import { spawnSync } from "node:child_process";
|
||||
import { createRequire } from "node:module";
|
||||
import path from "node:path";
|
||||
import { fileURLToPath, pathToFileURL } from "node:url";
|
||||
import { createJiti } from "jiti";
|
||||
import type { createJiti } from "jiti";
|
||||
import { buildChannelConfigSchema } from "../src/channels/plugins/config-schema.js";
|
||||
import {
|
||||
buildPluginLoaderJitiOptions,
|
||||
@@ -9,6 +10,23 @@ import {
|
||||
resolvePluginSdkScopedAliasMap,
|
||||
} from "../src/plugins/sdk-alias.js";
|
||||
|
||||
type CreateJiti = typeof createJiti;
|
||||
|
||||
const requireForJiti = createRequire(import.meta.url);
|
||||
let createJitiLoaderFactory: CreateJiti | undefined;
|
||||
|
||||
function loadCreateJitiLoaderFactory(): CreateJiti {
|
||||
if (createJitiLoaderFactory) {
|
||||
return createJitiLoaderFactory;
|
||||
}
|
||||
const loaded = requireForJiti("jiti") as { createJiti?: CreateJiti };
|
||||
if (typeof loaded.createJiti !== "function") {
|
||||
throw new Error("jiti module did not export createJiti");
|
||||
}
|
||||
createJitiLoaderFactory = loaded.createJiti;
|
||||
return createJitiLoaderFactory;
|
||||
}
|
||||
|
||||
function isBuiltChannelConfigSchema(
|
||||
value: unknown,
|
||||
): value is { schema: Record<string, unknown>; uiHints?: Record<string, unknown> } {
|
||||
@@ -137,7 +155,7 @@ export async function loadChannelConfigSurfaceModule(
|
||||
pluginSdkResolution: "src",
|
||||
}),
|
||||
};
|
||||
const jiti = createJiti(import.meta.url, {
|
||||
const jiti = loadCreateJitiLoaderFactory()(import.meta.url, {
|
||||
...buildPluginLoaderJitiOptions(aliasMap),
|
||||
interopDefault: true,
|
||||
tryNative: false,
|
||||
|
||||
Reference in New Issue
Block a user