mirror of
https://github.com/ksyasuda/SubMiner.git
synced 2026-02-27 18:22:41 -08:00
Move IPC, shortcuts, startup lifecycle, and app-ready assembly behind dedicated runtime composers so main.ts stays focused on boot wiring while preserving behavior and test coverage.
59 lines
2.3 KiB
TypeScript
59 lines
2.3 KiB
TypeScript
import { createAppReadyRuntimeRunner } from '../../app-lifecycle';
|
|
import { createBuildAppReadyRuntimeMainDepsHandler } from '../app-ready-main-deps';
|
|
import {
|
|
createBuildCriticalConfigErrorMainDepsHandler,
|
|
createBuildReloadConfigMainDepsHandler,
|
|
} from '../startup-config-main-deps';
|
|
import { createCriticalConfigErrorHandler, createReloadConfigHandler } from '../startup-config';
|
|
import { createBuildImmersionTrackerStartupMainDepsHandler } from '../immersion-startup-main-deps';
|
|
import { createImmersionTrackerStartupHandler } from '../immersion-startup';
|
|
|
|
type ReloadConfigMainDeps = Parameters<typeof createBuildReloadConfigMainDepsHandler>[0];
|
|
type CriticalConfigErrorMainDeps = Parameters<
|
|
typeof createBuildCriticalConfigErrorMainDepsHandler
|
|
>[0];
|
|
type AppReadyRuntimeMainDeps = Parameters<typeof createBuildAppReadyRuntimeMainDepsHandler>[0];
|
|
|
|
export type AppReadyComposerOptions = {
|
|
reloadConfigMainDeps: ReloadConfigMainDeps;
|
|
criticalConfigErrorMainDeps: CriticalConfigErrorMainDeps;
|
|
appReadyRuntimeMainDeps: Omit<AppReadyRuntimeMainDeps, 'reloadConfig' | 'onCriticalConfigErrors'>;
|
|
immersionTrackerStartupMainDeps: Parameters<
|
|
typeof createBuildImmersionTrackerStartupMainDepsHandler
|
|
>[0];
|
|
};
|
|
|
|
export type AppReadyComposerResult = {
|
|
reloadConfig: ReturnType<typeof createReloadConfigHandler>;
|
|
criticalConfigError: ReturnType<typeof createCriticalConfigErrorHandler>;
|
|
appReadyRuntimeRunner: ReturnType<typeof createAppReadyRuntimeRunner>;
|
|
};
|
|
|
|
export function composeAppReadyRuntime(options: AppReadyComposerOptions): AppReadyComposerResult {
|
|
const reloadConfig = createReloadConfigHandler(
|
|
createBuildReloadConfigMainDepsHandler(options.reloadConfigMainDeps)(),
|
|
);
|
|
const criticalConfigError = createCriticalConfigErrorHandler(
|
|
createBuildCriticalConfigErrorMainDepsHandler(options.criticalConfigErrorMainDeps)(),
|
|
);
|
|
|
|
const appReadyRuntimeRunner = createAppReadyRuntimeRunner(
|
|
createBuildAppReadyRuntimeMainDepsHandler({
|
|
...options.appReadyRuntimeMainDeps,
|
|
reloadConfig,
|
|
createImmersionTracker: createImmersionTrackerStartupHandler(
|
|
createBuildImmersionTrackerStartupMainDepsHandler(
|
|
options.immersionTrackerStartupMainDeps,
|
|
)(),
|
|
),
|
|
onCriticalConfigErrors: criticalConfigError,
|
|
})(),
|
|
);
|
|
|
|
return {
|
|
reloadConfig,
|
|
criticalConfigError,
|
|
appReadyRuntimeRunner,
|
|
};
|
|
}
|