diff --git a/packages/cli/package.json b/packages/cli/package.json index 5e12b06..78769b1 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -25,6 +25,7 @@ "vite": "catalog:" }, "devDependencies": { + "@types/node": "catalog:", "vite-plus": "catalog:" } } diff --git a/packages/cli/src/process-manager.ts b/packages/cli/src/process-manager.ts index ff46b54..b8dda56 100644 --- a/packages/cli/src/process-manager.ts +++ b/packages/cli/src/process-manager.ts @@ -1,5 +1,4 @@ import { spawn, type ChildProcess } from "node:child_process"; -import type { EventEmitter } from "node:events"; import type { Logger } from "./logger.ts"; export interface ProcessManagerOptions { @@ -27,8 +26,12 @@ for (const method of ["log", "info", "warn", "error", "debug"]) { } `)}`; +// @types/node@25 removed .on() from the ChildProcess class declaration +// even though it extends EventEmitter at runtime. This wrapper restores it. +type Process = ChildProcess & NodeJS.EventEmitter; + export function createProcessManager(options: ProcessManagerOptions) { - let child: ChildProcess | null = null; + let child: Process | null = null; let currentBundlePath = options.bundlePath; function doSpawn() { @@ -41,22 +44,22 @@ export function createProcessManager(options: ProcessManagerOptions) { VUE_TUI_DEV: "1", VUE_TUI_HMR_PORT: String(options.hmrPort), }, - }); + }) as Process; child = proc; - (proc as unknown as EventEmitter).on("exit", (code: number | null) => { + proc.on("exit", (code: number | null) => { options.logger.mode = "stdout"; child = null; options.onExit?.(code); }); } - function waitForExit(proc: ChildProcess, timeout: number): Promise { + function waitForExit(proc: Process, timeout: number): Promise { return new Promise((resolve) => { const timer = setTimeout(() => { resolve(); }, timeout); - (proc as unknown as EventEmitter).on("exit", () => { + proc.on("exit", () => { clearTimeout(timer); resolve(); }); diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 7de1731..9b07706 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -7,7 +7,7 @@ settings: catalogs: default: '@types/node': - specifier: ^24 + specifier: ^24.12.4 version: 24.12.4 '@vitejs/plugin-vue-jsx': specifier: ^5.1.5 @@ -129,11 +129,14 @@ importers: dependencies: vite: specifier: npm:@voidzero-dev/vite-plus-core@latest - version: '@voidzero-dev/vite-plus-core@0.1.22(@types/node@25.9.1)(typescript@6.0.3)' + version: '@voidzero-dev/vite-plus-core@0.1.22(@types/node@24.12.4)(typescript@6.0.3)' devDependencies: + '@types/node': + specifier: 'catalog:' + version: 24.12.4 vite-plus: specifier: 'catalog:' - version: 0.1.22(@types/node@25.9.1)(@voidzero-dev/vite-plus-core@0.1.22(@types/node@25.9.1)(typescript@6.0.3))(typescript@6.0.3) + version: 0.1.22(@types/node@24.12.4)(@voidzero-dev/vite-plus-core@0.1.22(@types/node@24.12.4)(typescript@6.0.3))(typescript@6.0.3) packages/runtime: dependencies: @@ -2163,7 +2166,7 @@ snapshots: '@types/node-fetch@2.6.13': dependencies: - '@types/node': 24.12.4 + '@types/node': 25.9.1 form-data: 4.0.5 '@types/node@18.19.130': @@ -2344,11 +2347,11 @@ snapshots: - utf-8-validate - yaml - '@voidzero-dev/vite-plus-test@0.1.22(@types/node@25.8.0)(typescript@6.0.3)(vite@8.0.13(@types/node@25.8.0))': + '@voidzero-dev/vite-plus-test@0.1.22(@types/node@24.12.4)(@voidzero-dev/vite-plus-core@0.1.22(@types/node@24.12.4)(typescript@6.0.3))(typescript@6.0.3)': dependencies: '@standard-schema/spec': 1.1.0 '@types/chai': 5.2.3 - '@voidzero-dev/vite-plus-core': 0.1.22(@types/node@25.8.0)(typescript@6.0.3) + '@voidzero-dev/vite-plus-core': 0.1.22(@types/node@24.12.4)(typescript@6.0.3) es-module-lexer: 1.7.0 obug: 2.1.1 pixelmatch: 7.2.0 @@ -2358,10 +2361,10 @@ snapshots: tinybench: 2.9.0 tinyexec: 1.2.2 tinyglobby: 0.2.16 - vite: 8.0.13(@types/node@25.8.0) + vite: '@voidzero-dev/vite-plus-core@0.1.22(@types/node@24.12.4)(typescript@6.0.3)' ws: 8.21.0 optionalDependencies: - '@types/node': 25.8.0 + '@types/node': 24.12.4 transitivePeerDependencies: - '@arethetypeswrong/core' - '@tsdown/css' @@ -2384,11 +2387,11 @@ snapshots: - utf-8-validate - yaml - '@voidzero-dev/vite-plus-test@0.1.22(@types/node@25.9.1)(@voidzero-dev/vite-plus-core@0.1.22(@types/node@25.9.1)(typescript@6.0.3))(typescript@6.0.3)': + '@voidzero-dev/vite-plus-test@0.1.22(@types/node@25.8.0)(typescript@6.0.3)(vite@8.0.13(@types/node@25.8.0))': dependencies: '@standard-schema/spec': 1.1.0 '@types/chai': 5.2.3 - '@voidzero-dev/vite-plus-core': 0.1.22(@types/node@25.9.1)(typescript@6.0.3) + '@voidzero-dev/vite-plus-core': 0.1.22(@types/node@25.8.0)(typescript@6.0.3) es-module-lexer: 1.7.0 obug: 2.1.1 pixelmatch: 7.2.0 @@ -2398,10 +2401,10 @@ snapshots: tinybench: 2.9.0 tinyexec: 1.2.2 tinyglobby: 0.2.16 - vite: '@voidzero-dev/vite-plus-core@0.1.22(@types/node@25.9.1)(typescript@6.0.3)' + vite: 8.0.13(@types/node@25.8.0) ws: 8.21.0 optionalDependencies: - '@types/node': 25.9.1 + '@types/node': 25.8.0 transitivePeerDependencies: - '@arethetypeswrong/core' - '@tsdown/css' @@ -3053,12 +3056,12 @@ snapshots: - vite - yaml - vite-plus@0.1.22(@types/node@25.8.0)(typescript@6.0.3)(vite@8.0.13(@types/node@25.8.0)): + vite-plus@0.1.22(@types/node@24.12.4)(@voidzero-dev/vite-plus-core@0.1.22(@types/node@24.12.4)(typescript@6.0.3))(typescript@6.0.3): dependencies: '@oxc-project/types': 0.129.0 '@oxlint/plugins': 1.61.0 - '@voidzero-dev/vite-plus-core': 0.1.22(@types/node@25.8.0)(typescript@6.0.3) - '@voidzero-dev/vite-plus-test': 0.1.22(@types/node@25.8.0)(typescript@6.0.3)(vite@8.0.13(@types/node@25.8.0)) + '@voidzero-dev/vite-plus-core': 0.1.22(@types/node@24.12.4)(typescript@6.0.3) + '@voidzero-dev/vite-plus-test': 0.1.22(@types/node@24.12.4)(@voidzero-dev/vite-plus-core@0.1.22(@types/node@24.12.4)(typescript@6.0.3))(typescript@6.0.3) oxfmt: 0.48.0 oxlint: 1.63.0(oxlint-tsgolint@0.22.1) oxlint-tsgolint: 0.22.1 @@ -3102,12 +3105,12 @@ snapshots: - vite - yaml - vite-plus@0.1.22(@types/node@25.9.1)(@voidzero-dev/vite-plus-core@0.1.22(@types/node@25.9.1)(typescript@6.0.3))(typescript@6.0.3): + vite-plus@0.1.22(@types/node@25.8.0)(typescript@6.0.3)(vite@8.0.13(@types/node@25.8.0)): dependencies: '@oxc-project/types': 0.129.0 '@oxlint/plugins': 1.61.0 - '@voidzero-dev/vite-plus-core': 0.1.22(@types/node@25.9.1)(typescript@6.0.3) - '@voidzero-dev/vite-plus-test': 0.1.22(@types/node@25.9.1)(@voidzero-dev/vite-plus-core@0.1.22(@types/node@25.9.1)(typescript@6.0.3))(typescript@6.0.3) + '@voidzero-dev/vite-plus-core': 0.1.22(@types/node@25.8.0)(typescript@6.0.3) + '@voidzero-dev/vite-plus-test': 0.1.22(@types/node@25.8.0)(typescript@6.0.3)(vite@8.0.13(@types/node@25.8.0)) oxfmt: 0.48.0 oxlint: 1.63.0(oxlint-tsgolint@0.22.1) oxlint-tsgolint: 0.22.1 diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index 800433a..d099c3d 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -7,7 +7,7 @@ packages: catalogMode: prefer catalog: - "@types/node": ^24 + "@types/node": ^24.12.4 typescript: ^5 vite: npm:@voidzero-dev/vite-plus-core@latest vitest: npm:@voidzero-dev/vite-plus-test@latest