@camstack/kernel 0.1.7 → 0.1.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/addon-installer-2BW2KLQD.mjs +7 -0
- package/dist/chunk-67QMERMP.mjs +411 -0
- package/dist/chunk-67QMERMP.mjs.map +1 -0
- package/dist/chunk-S5YWNNPK.mjs +135 -0
- package/dist/{chunk-RHK5CCAL.mjs.map → chunk-S5YWNNPK.mjs.map} +1 -1
- package/dist/index.d.mts +645 -0
- package/dist/index.d.ts +645 -0
- package/dist/index.js +1754 -2037
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +1261 -1462
- package/dist/index.mjs.map +1 -1
- package/dist/worker/addon-worker-entry.d.mts +2 -0
- package/dist/worker/addon-worker-entry.d.ts +2 -0
- package/dist/worker/addon-worker-entry.js +300 -430
- package/dist/worker/addon-worker-entry.js.map +1 -1
- package/dist/worker/addon-worker-entry.mjs +4 -8
- package/dist/worker/addon-worker-entry.mjs.map +1 -1
- package/package.json +1 -1
- package/dist/addon-installer-WQBOEZQT.mjs +0 -6
- package/dist/chunk-GJ3DKNOD.mjs +0 -494
- package/dist/chunk-GJ3DKNOD.mjs.map +0 -1
- package/dist/chunk-LZOMFHX3.mjs +0 -38
- package/dist/chunk-LZOMFHX3.mjs.map +0 -1
- package/dist/chunk-RHK5CCAL.mjs +0 -154
- /package/dist/{addon-installer-WQBOEZQT.mjs.map → addon-installer-2BW2KLQD.mjs.map} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/worker/worker-process-manager.ts"],"sourcesContent":["import { spawn, type ChildProcess } from 'node:child_process'\nimport type {\n WorkerToMainMessage,\n WorkerProcessStats,\n SubProcessInfo,\n} from '@camstack/types'\nimport type {\n IAddonProcessManager,\n SubProcessConfig,\n IManagedSubProcess,\n} from '@camstack/types'\n\nexport class WorkerProcessManager implements IAddonProcessManager {\n private readonly processes = new Map<number, ManagedProcess>()\n\n constructor(\n private readonly sendToMain: (msg: WorkerToMainMessage) => void,\n ) {}\n\n async spawn(config: SubProcessConfig): Promise<IManagedSubProcess> {\n const child = spawn(config.command, [...(config.args ?? [])], {\n cwd: config.cwd,\n env: config.env ? { ...process.env, ...config.env } : undefined,\n stdio: ['pipe', 'pipe', 'pipe'],\n })\n\n const managed = new ManagedProcess(child, config, this.sendToMain)\n this.processes.set(child.pid!, managed)\n\n this.sendToMain({\n type: 'SUB_PROCESS_SPAWNED',\n pid: child.pid!,\n name: config.name,\n command: config.command,\n })\n\n child.on('exit', (code) => {\n this.sendToMain({\n type: 'SUB_PROCESS_EXITED',\n pid: child.pid!,\n code,\n })\n\n if (config.autoRestart && managed.restartCount < (config.maxRestarts ?? 3)) {\n managed.restartCount++\n setTimeout(() => {\n this.spawn(config).catch(() => {})\n }, 2000)\n }\n })\n\n return managed\n }\n\n listProcesses(): readonly SubProcessInfo[] {\n return [...this.processes.values()].map((p) => p.toInfo())\n }\n\n getWorkerStats(): WorkerProcessStats {\n const mem = process.memoryUsage()\n const cpu = process.cpuUsage()\n return {\n pid: process.pid,\n cpuPercent: (cpu.user + cpu.system) / 1_000_000,\n memoryRss: mem.rss,\n heapUsed: mem.heapUsed,\n uptimeSeconds: Math.round(process.uptime()),\n restartCount: 0,\n state: 'running',\n }\n }\n\n async killAll(): Promise<void> {\n for (const [, proc] of this.processes) {\n proc.kill('SIGTERM')\n }\n this.processes.clear()\n }\n}\n\nclass ManagedProcess implements IManagedSubProcess {\n readonly pid: number\n readonly name: string\n restartCount = 0\n private readonly startedAt = Date.now()\n private exitHandlers: Array<(code: number | null) => void> = []\n private errorHandlers: Array<(error: Error) => void> = []\n\n constructor(\n private readonly child: ChildProcess,\n private readonly config: SubProcessConfig,\n private readonly sendToMain: (msg: WorkerToMainMessage) => void,\n ) {\n this.pid = child.pid!\n this.name = config.name\n\n child.on('exit', (code) => {\n for (const handler of this.exitHandlers) handler(code)\n })\n\n child.on('error', (err) => {\n for (const handler of this.errorHandlers) handler(err)\n })\n }\n\n getStats(): WorkerProcessStats {\n return {\n pid: this.pid,\n cpuPercent: 0,\n memoryRss: 0,\n uptimeSeconds: Math.round((Date.now() - this.startedAt) / 1000),\n restartCount: this.restartCount,\n state: this.child.exitCode !== null ? 'stopped' : 'running',\n }\n }\n\n write(data: Buffer): void {\n this.child.stdin?.write(data)\n }\n\n get stdout(): AsyncIterable<Buffer> {\n return this.child.stdout as AsyncIterable<Buffer>\n }\n\n get stderr(): AsyncIterable<Buffer> {\n return this.child.stderr as AsyncIterable<Buffer>\n }\n\n kill(signal: NodeJS.Signals = 'SIGTERM'): void {\n this.child.kill(signal)\n }\n\n wait(): Promise<{ code: number | null; signal: string | null }> {\n if (this.child.exitCode !== null) {\n return Promise.resolve({ code: this.child.exitCode, signal: null })\n }\n return new Promise((resolve) => {\n this.child.on('exit', (code, signal) => {\n resolve({ code, signal })\n })\n })\n }\n\n onExit(handler: (code: number | null) => void): void {\n this.exitHandlers.push(handler)\n }\n\n onError(handler: (error: Error) => void): void {\n this.errorHandlers.push(handler)\n }\n\n toInfo(): SubProcessInfo {\n return {\n pid: this.pid,\n name: this.name,\n command: this.config.command,\n state: this.child.exitCode !== null ? 'stopped' : 'running',\n cpuPercent: 0,\n memoryRss: 0,\n uptimeSeconds: Math.round((Date.now() - this.startedAt) / 1000),\n }\n }\n}\n"],"mappings":"
|
|
1
|
+
{"version":3,"sources":["../src/worker/worker-process-manager.ts"],"sourcesContent":["import { spawn, type ChildProcess } from 'node:child_process'\nimport type {\n WorkerToMainMessage,\n WorkerProcessStats,\n SubProcessInfo,\n} from '@camstack/types'\nimport type {\n IAddonProcessManager,\n SubProcessConfig,\n IManagedSubProcess,\n} from '@camstack/types'\n\nexport class WorkerProcessManager implements IAddonProcessManager {\n private readonly processes = new Map<number, ManagedProcess>()\n\n constructor(\n private readonly sendToMain: (msg: WorkerToMainMessage) => void,\n ) {}\n\n async spawn(config: SubProcessConfig): Promise<IManagedSubProcess> {\n const child = spawn(config.command, [...(config.args ?? [])], {\n cwd: config.cwd,\n env: config.env ? { ...process.env, ...config.env } : undefined,\n stdio: ['pipe', 'pipe', 'pipe'],\n })\n\n const managed = new ManagedProcess(child, config, this.sendToMain)\n this.processes.set(child.pid!, managed)\n\n this.sendToMain({\n type: 'SUB_PROCESS_SPAWNED',\n pid: child.pid!,\n name: config.name,\n command: config.command,\n })\n\n child.on('exit', (code) => {\n this.sendToMain({\n type: 'SUB_PROCESS_EXITED',\n pid: child.pid!,\n code,\n })\n\n if (config.autoRestart && managed.restartCount < (config.maxRestarts ?? 3)) {\n managed.restartCount++\n setTimeout(() => {\n this.spawn(config).catch(() => {})\n }, 2000)\n }\n })\n\n return managed\n }\n\n listProcesses(): readonly SubProcessInfo[] {\n return [...this.processes.values()].map((p) => p.toInfo())\n }\n\n getWorkerStats(): WorkerProcessStats {\n const mem = process.memoryUsage()\n const cpu = process.cpuUsage()\n return {\n pid: process.pid,\n cpuPercent: (cpu.user + cpu.system) / 1_000_000,\n memoryRss: mem.rss,\n heapUsed: mem.heapUsed,\n uptimeSeconds: Math.round(process.uptime()),\n restartCount: 0,\n state: 'running',\n }\n }\n\n async killAll(): Promise<void> {\n for (const [, proc] of this.processes) {\n proc.kill('SIGTERM')\n }\n this.processes.clear()\n }\n}\n\nclass ManagedProcess implements IManagedSubProcess {\n readonly pid: number\n readonly name: string\n restartCount = 0\n private readonly startedAt = Date.now()\n private exitHandlers: Array<(code: number | null) => void> = []\n private errorHandlers: Array<(error: Error) => void> = []\n\n constructor(\n private readonly child: ChildProcess,\n private readonly config: SubProcessConfig,\n private readonly sendToMain: (msg: WorkerToMainMessage) => void,\n ) {\n this.pid = child.pid!\n this.name = config.name\n\n child.on('exit', (code) => {\n for (const handler of this.exitHandlers) handler(code)\n })\n\n child.on('error', (err) => {\n for (const handler of this.errorHandlers) handler(err)\n })\n }\n\n getStats(): WorkerProcessStats {\n return {\n pid: this.pid,\n cpuPercent: 0,\n memoryRss: 0,\n uptimeSeconds: Math.round((Date.now() - this.startedAt) / 1000),\n restartCount: this.restartCount,\n state: this.child.exitCode !== null ? 'stopped' : 'running',\n }\n }\n\n write(data: Buffer): void {\n this.child.stdin?.write(data)\n }\n\n get stdout(): AsyncIterable<Buffer> {\n return this.child.stdout as AsyncIterable<Buffer>\n }\n\n get stderr(): AsyncIterable<Buffer> {\n return this.child.stderr as AsyncIterable<Buffer>\n }\n\n kill(signal: NodeJS.Signals = 'SIGTERM'): void {\n this.child.kill(signal)\n }\n\n wait(): Promise<{ code: number | null; signal: string | null }> {\n if (this.child.exitCode !== null) {\n return Promise.resolve({ code: this.child.exitCode, signal: null })\n }\n return new Promise((resolve) => {\n this.child.on('exit', (code, signal) => {\n resolve({ code, signal })\n })\n })\n }\n\n onExit(handler: (code: number | null) => void): void {\n this.exitHandlers.push(handler)\n }\n\n onError(handler: (error: Error) => void): void {\n this.errorHandlers.push(handler)\n }\n\n toInfo(): SubProcessInfo {\n return {\n pid: this.pid,\n name: this.name,\n command: this.config.command,\n state: this.child.exitCode !== null ? 'stopped' : 'running',\n cpuPercent: 0,\n memoryRss: 0,\n uptimeSeconds: Math.round((Date.now() - this.startedAt) / 1000),\n }\n }\n}\n"],"mappings":"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","names":[]}
|