refactor: cache repeated lazy imports

This commit is contained in:
Peter Steinberger
2026-04-18 16:31:48 +01:00
parent d13869aab9
commit cdaa70facb
13 changed files with 161 additions and 50 deletions

View File

@@ -14,6 +14,8 @@ import {
type RouteArgParser<TArgs> = (argv: string[]) => TArgs | null;
type ParsedRouteArgs<TParse extends RouteArgParser<unknown>> = Exclude<ReturnType<TParse>, null>;
type ConfigCliModule = typeof import("../config-cli.js");
type ModelsCommandsModule = typeof import("../../commands/models.js");
export type RoutedCommandDefinition<TParse extends RouteArgParser<unknown>> = {
parseArgs: TParse;
@@ -31,6 +33,19 @@ function defineRoutedCommand<TParse extends RouteArgParser<unknown>>(
return definition;
}
let configCliPromise: Promise<ConfigCliModule> | undefined;
let modelsCommandsPromise: Promise<ModelsCommandsModule> | undefined;
function loadConfigCli(): Promise<ConfigCliModule> {
configCliPromise ??= import("../config-cli.js");
return configCliPromise;
}
function loadModelsCommands(): Promise<ModelsCommandsModule> {
modelsCommandsPromise ??= import("../../commands/models.js");
return modelsCommandsPromise;
}
export const routedCommandDefinitions = {
health: defineRoutedCommand({
parseArgs: parseHealthRouteArgs,
@@ -83,28 +98,28 @@ export const routedCommandDefinitions = {
"config-get": defineRoutedCommand({
parseArgs: parseConfigGetRouteArgs,
runParsedArgs: async (args) => {
const { runConfigGet } = await import("../config-cli.js");
const { runConfigGet } = await loadConfigCli();
await runConfigGet(args);
},
}),
"config-unset": defineRoutedCommand({
parseArgs: parseConfigUnsetRouteArgs,
runParsedArgs: async (args) => {
const { runConfigUnset } = await import("../config-cli.js");
const { runConfigUnset } = await loadConfigCli();
await runConfigUnset(args);
},
}),
"models-list": defineRoutedCommand({
parseArgs: parseModelsListRouteArgs,
runParsedArgs: async (args) => {
const { modelsListCommand } = await import("../../commands/models.js");
const { modelsListCommand } = await loadModelsCommands();
await modelsListCommand(args, defaultRuntime);
},
}),
"models-status": defineRoutedCommand({
parseArgs: parseModelsStatusRouteArgs,
runParsedArgs: async (args) => {
const { modelsStatusCommand } = await import("../../commands/models.js");
const { modelsStatusCommand } = await loadModelsCommands();
await modelsStatusCommand(args, defaultRuntime);
},
}),