perf(gateway): avoid jiti on native plugin loads

This commit is contained in:
Peter Steinberger
2026-05-04 06:02:13 +01:00
parent 3d0563dee2
commit 705bde4594
5 changed files with 82 additions and 9 deletions

View File

@@ -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,