feat(core): add Electron runtime, services, and app composition

This commit is contained in:
2026-02-22 21:43:43 -08:00
parent 448ce03fd4
commit d3fd47f0ec
562 changed files with 69719 additions and 0 deletions

View File

@@ -0,0 +1,46 @@
import { CliArgs, CliCommandSource } from '../cli/args';
import { createAppLifecycleDepsRuntime } from '../core/services';
import { startAppLifecycle } from '../core/services/app-lifecycle';
import type { AppLifecycleDepsRuntimeOptions } from '../core/services/app-lifecycle';
import { createAppLifecycleRuntimeDeps } from './app-lifecycle';
export interface AppLifecycleRuntimeRunnerParams {
app: AppLifecycleDepsRuntimeOptions['app'];
platform: NodeJS.Platform;
shouldStartApp: (args: CliArgs) => boolean;
parseArgs: (argv: string[]) => CliArgs;
handleCliCommand: (nextArgs: CliArgs, source: CliCommandSource) => void;
printHelp: () => void;
logNoRunningInstance: () => void;
onReady: () => Promise<void>;
onWillQuitCleanup: () => void;
shouldRestoreWindowsOnActivate: () => boolean;
restoreWindowsOnActivate: () => void;
shouldQuitOnWindowAllClosed: () => boolean;
}
export function createAppLifecycleRuntimeRunner(
params: AppLifecycleRuntimeRunnerParams,
): (args: CliArgs) => void {
return (args: CliArgs): void => {
startAppLifecycle(
args,
createAppLifecycleDepsRuntime(
createAppLifecycleRuntimeDeps({
app: params.app,
platform: params.platform,
shouldStartApp: params.shouldStartApp,
parseArgs: params.parseArgs,
handleCliCommand: params.handleCliCommand,
printHelp: params.printHelp,
logNoRunningInstance: params.logNoRunningInstance,
onReady: params.onReady,
onWillQuitCleanup: params.onWillQuitCleanup,
shouldRestoreWindowsOnActivate: params.shouldRestoreWindowsOnActivate,
restoreWindowsOnActivate: params.restoreWindowsOnActivate,
shouldQuitOnWindowAllClosed: params.shouldQuitOnWindowAllClosed,
}),
),
);
};
}