@masuidrive/procman 0.1.0
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/LICENSE +21 -0
- package/README.md +149 -0
- package/dist/src/cli/commands/clear-log.d.ts +10 -0
- package/dist/src/cli/commands/clear-log.d.ts.map +1 -0
- package/dist/src/cli/commands/clear-log.js +77 -0
- package/dist/src/cli/commands/clear-log.js.map +1 -0
- package/dist/src/cli/commands/exit.d.ts +10 -0
- package/dist/src/cli/commands/exit.d.ts.map +1 -0
- package/dist/src/cli/commands/exit.js +65 -0
- package/dist/src/cli/commands/exit.js.map +1 -0
- package/dist/src/cli/commands/help.d.ts +10 -0
- package/dist/src/cli/commands/help.d.ts.map +1 -0
- package/dist/src/cli/commands/help.js +340 -0
- package/dist/src/cli/commands/help.js.map +1 -0
- package/dist/src/cli/commands/list.d.ts +11 -0
- package/dist/src/cli/commands/list.d.ts.map +1 -0
- package/dist/src/cli/commands/list.js +130 -0
- package/dist/src/cli/commands/list.js.map +1 -0
- package/dist/src/cli/commands/load.d.ts +11 -0
- package/dist/src/cli/commands/load.d.ts.map +1 -0
- package/dist/src/cli/commands/load.js +250 -0
- package/dist/src/cli/commands/load.js.map +1 -0
- package/dist/src/cli/commands/log.d.ts +18 -0
- package/dist/src/cli/commands/log.d.ts.map +1 -0
- package/dist/src/cli/commands/log.js +282 -0
- package/dist/src/cli/commands/log.js.map +1 -0
- package/dist/src/cli/commands/restart.d.ts +11 -0
- package/dist/src/cli/commands/restart.d.ts.map +1 -0
- package/dist/src/cli/commands/restart.js +99 -0
- package/dist/src/cli/commands/restart.js.map +1 -0
- package/dist/src/cli/commands/start.d.ts +11 -0
- package/dist/src/cli/commands/start.d.ts.map +1 -0
- package/dist/src/cli/commands/start.js +105 -0
- package/dist/src/cli/commands/start.js.map +1 -0
- package/dist/src/cli/commands/stop.d.ts +12 -0
- package/dist/src/cli/commands/stop.d.ts.map +1 -0
- package/dist/src/cli/commands/stop.js +105 -0
- package/dist/src/cli/commands/stop.js.map +1 -0
- package/dist/src/cli/index.d.ts +3 -0
- package/dist/src/cli/index.d.ts.map +1 -0
- package/dist/src/cli/index.js +28 -0
- package/dist/src/cli/index.js.map +1 -0
- package/dist/src/cli/parser.d.ts +14 -0
- package/dist/src/cli/parser.d.ts.map +1 -0
- package/dist/src/cli/parser.js +131 -0
- package/dist/src/cli/parser.js.map +1 -0
- package/dist/src/cli/signal-handler.d.ts +51 -0
- package/dist/src/cli/signal-handler.d.ts.map +1 -0
- package/dist/src/cli/signal-handler.js +129 -0
- package/dist/src/cli/signal-handler.js.map +1 -0
- package/dist/src/cli/utils/error-handler.d.ts +39 -0
- package/dist/src/cli/utils/error-handler.d.ts.map +1 -0
- package/dist/src/cli/utils/error-handler.js +200 -0
- package/dist/src/cli/utils/error-handler.js.map +1 -0
- package/dist/src/cli/utils/error-utils.d.ts +16 -0
- package/dist/src/cli/utils/error-utils.d.ts.map +1 -0
- package/dist/src/cli/utils/error-utils.js +48 -0
- package/dist/src/cli/utils/error-utils.js.map +1 -0
- package/dist/src/cli/utils/ipc-client.d.ts +80 -0
- package/dist/src/cli/utils/ipc-client.d.ts.map +1 -0
- package/dist/src/cli/utils/ipc-client.js +275 -0
- package/dist/src/cli/utils/ipc-client.js.map +1 -0
- package/dist/src/config/config-loader.d.ts +74 -0
- package/dist/src/config/config-loader.d.ts.map +1 -0
- package/dist/src/config/config-loader.js +229 -0
- package/dist/src/config/config-loader.js.map +1 -0
- package/dist/src/config/config-normalizer.d.ts +135 -0
- package/dist/src/config/config-normalizer.d.ts.map +1 -0
- package/dist/src/config/config-normalizer.js +309 -0
- package/dist/src/config/config-normalizer.js.map +1 -0
- package/dist/src/config/config-reporter.d.ts +183 -0
- package/dist/src/config/config-reporter.d.ts.map +1 -0
- package/dist/src/config/config-reporter.js +311 -0
- package/dist/src/config/config-reporter.js.map +1 -0
- package/dist/src/config/config-validator.d.ts +163 -0
- package/dist/src/config/config-validator.d.ts.map +1 -0
- package/dist/src/config/config-validator.js +489 -0
- package/dist/src/config/config-validator.js.map +1 -0
- package/dist/src/config/config-watcher.d.ts +161 -0
- package/dist/src/config/config-watcher.d.ts.map +1 -0
- package/dist/src/config/config-watcher.js +245 -0
- package/dist/src/config/config-watcher.js.map +1 -0
- package/dist/src/config/index.d.ts +36 -0
- package/dist/src/config/index.d.ts.map +1 -0
- package/dist/src/config/index.js +41 -0
- package/dist/src/config/index.js.map +1 -0
- package/dist/src/config/secure-config-loader.d.ts +77 -0
- package/dist/src/config/secure-config-loader.d.ts.map +1 -0
- package/dist/src/config/secure-config-loader.js +326 -0
- package/dist/src/config/secure-config-loader.js.map +1 -0
- package/dist/src/daemon/base-socket-connection.d.ts +66 -0
- package/dist/src/daemon/base-socket-connection.d.ts.map +1 -0
- package/dist/src/daemon/base-socket-connection.js +192 -0
- package/dist/src/daemon/base-socket-connection.js.map +1 -0
- package/dist/src/daemon/component-manager.d.ts +180 -0
- package/dist/src/daemon/component-manager.d.ts.map +1 -0
- package/dist/src/daemon/component-manager.js +794 -0
- package/dist/src/daemon/component-manager.js.map +1 -0
- package/dist/src/daemon/crash-recovery.d.ts +71 -0
- package/dist/src/daemon/crash-recovery.d.ts.map +1 -0
- package/dist/src/daemon/crash-recovery.js +282 -0
- package/dist/src/daemon/crash-recovery.js.map +1 -0
- package/dist/src/daemon/daemon-main.d.ts +18 -0
- package/dist/src/daemon/daemon-main.d.ts.map +1 -0
- package/dist/src/daemon/daemon-main.js +160 -0
- package/dist/src/daemon/daemon-main.js.map +1 -0
- package/dist/src/daemon/daemon-state-manager.d.ts +111 -0
- package/dist/src/daemon/daemon-state-manager.d.ts.map +1 -0
- package/dist/src/daemon/daemon-state-manager.js +194 -0
- package/dist/src/daemon/daemon-state-manager.js.map +1 -0
- package/dist/src/daemon/data-directory.d.ts +51 -0
- package/dist/src/daemon/data-directory.d.ts.map +1 -0
- package/dist/src/daemon/data-directory.js +136 -0
- package/dist/src/daemon/data-directory.js.map +1 -0
- package/dist/src/daemon/index.d.ts +20 -0
- package/dist/src/daemon/index.d.ts.map +1 -0
- package/dist/src/daemon/index.js +24 -0
- package/dist/src/daemon/index.js.map +1 -0
- package/dist/src/daemon/ipc-client-base.d.ts +153 -0
- package/dist/src/daemon/ipc-client-base.d.ts.map +1 -0
- package/dist/src/daemon/ipc-client-base.js +476 -0
- package/dist/src/daemon/ipc-client-base.js.map +1 -0
- package/dist/src/daemon/ipc-command-handler.d.ts +107 -0
- package/dist/src/daemon/ipc-command-handler.d.ts.map +1 -0
- package/dist/src/daemon/ipc-command-handler.js +483 -0
- package/dist/src/daemon/ipc-command-handler.js.map +1 -0
- package/dist/src/daemon/ipc-factory.d.ts +92 -0
- package/dist/src/daemon/ipc-factory.d.ts.map +1 -0
- package/dist/src/daemon/ipc-factory.js +210 -0
- package/dist/src/daemon/ipc-factory.js.map +1 -0
- package/dist/src/daemon/ipc-server-base.d.ts +158 -0
- package/dist/src/daemon/ipc-server-base.d.ts.map +1 -0
- package/dist/src/daemon/ipc-server-base.js +491 -0
- package/dist/src/daemon/ipc-server-base.js.map +1 -0
- package/dist/src/daemon/message-protocol.d.ts +132 -0
- package/dist/src/daemon/message-protocol.d.ts.map +1 -0
- package/dist/src/daemon/message-protocol.js +252 -0
- package/dist/src/daemon/message-protocol.js.map +1 -0
- package/dist/src/daemon/named-pipe-client.d.ts +61 -0
- package/dist/src/daemon/named-pipe-client.d.ts.map +1 -0
- package/dist/src/daemon/named-pipe-client.js +221 -0
- package/dist/src/daemon/named-pipe-client.js.map +1 -0
- package/dist/src/daemon/named-pipe-server.d.ts +40 -0
- package/dist/src/daemon/named-pipe-server.d.ts.map +1 -0
- package/dist/src/daemon/named-pipe-server.js +102 -0
- package/dist/src/daemon/named-pipe-server.js.map +1 -0
- package/dist/src/daemon/orphan-detector.d.ts +66 -0
- package/dist/src/daemon/orphan-detector.d.ts.map +1 -0
- package/dist/src/daemon/orphan-detector.js +208 -0
- package/dist/src/daemon/orphan-detector.js.map +1 -0
- package/dist/src/daemon/pid-manager.d.ts +49 -0
- package/dist/src/daemon/pid-manager.d.ts.map +1 -0
- package/dist/src/daemon/pid-manager.js +110 -0
- package/dist/src/daemon/pid-manager.js.map +1 -0
- package/dist/src/daemon/procman-daemon.d.ts +188 -0
- package/dist/src/daemon/procman-daemon.d.ts.map +1 -0
- package/dist/src/daemon/procman-daemon.js +802 -0
- package/dist/src/daemon/procman-daemon.js.map +1 -0
- package/dist/src/daemon/reconnection-system.d.ts +113 -0
- package/dist/src/daemon/reconnection-system.d.ts.map +1 -0
- package/dist/src/daemon/reconnection-system.js +223 -0
- package/dist/src/daemon/reconnection-system.js.map +1 -0
- package/dist/src/daemon/resource-manager.d.ts +204 -0
- package/dist/src/daemon/resource-manager.d.ts.map +1 -0
- package/dist/src/daemon/resource-manager.js +423 -0
- package/dist/src/daemon/resource-manager.js.map +1 -0
- package/dist/src/daemon/signal-handler.d.ts +58 -0
- package/dist/src/daemon/signal-handler.d.ts.map +1 -0
- package/dist/src/daemon/signal-handler.js +142 -0
- package/dist/src/daemon/signal-handler.js.map +1 -0
- package/dist/src/daemon/simple-resource-manager.d.ts +95 -0
- package/dist/src/daemon/simple-resource-manager.d.ts.map +1 -0
- package/dist/src/daemon/simple-resource-manager.js +180 -0
- package/dist/src/daemon/simple-resource-manager.js.map +1 -0
- package/dist/src/daemon/unix-socket-client.d.ts +69 -0
- package/dist/src/daemon/unix-socket-client.d.ts.map +1 -0
- package/dist/src/daemon/unix-socket-client.js +313 -0
- package/dist/src/daemon/unix-socket-client.js.map +1 -0
- package/dist/src/daemon/unix-socket-server.d.ts +61 -0
- package/dist/src/daemon/unix-socket-server.d.ts.map +1 -0
- package/dist/src/daemon/unix-socket-server.js +262 -0
- package/dist/src/daemon/unix-socket-server.js.map +1 -0
- package/dist/src/daemon/zombie-reaper.d.ts +83 -0
- package/dist/src/daemon/zombie-reaper.d.ts.map +1 -0
- package/dist/src/daemon/zombie-reaper.js +278 -0
- package/dist/src/daemon/zombie-reaper.js.map +1 -0
- package/dist/src/process-manager/index.d.ts +13 -0
- package/dist/src/process-manager/index.d.ts.map +1 -0
- package/dist/src/process-manager/index.js +11 -0
- package/dist/src/process-manager/index.js.map +1 -0
- package/dist/src/process-manager/interfaces/index.d.ts +31 -0
- package/dist/src/process-manager/interfaces/index.d.ts.map +1 -0
- package/dist/src/process-manager/interfaces/index.js +14 -0
- package/dist/src/process-manager/interfaces/index.js.map +1 -0
- package/dist/src/process-manager/interfaces/process-group.d.ts +200 -0
- package/dist/src/process-manager/interfaces/process-group.d.ts.map +1 -0
- package/dist/src/process-manager/interfaces/process-group.js +10 -0
- package/dist/src/process-manager/interfaces/process-group.js.map +1 -0
- package/dist/src/process-manager/interfaces/process-lifecycle.d.ts +97 -0
- package/dist/src/process-manager/interfaces/process-lifecycle.d.ts.map +1 -0
- package/dist/src/process-manager/interfaces/process-lifecycle.js +10 -0
- package/dist/src/process-manager/interfaces/process-lifecycle.js.map +1 -0
- package/dist/src/process-manager/interfaces/process-monitor.d.ts +118 -0
- package/dist/src/process-manager/interfaces/process-monitor.d.ts.map +1 -0
- package/dist/src/process-manager/interfaces/process-monitor.js +10 -0
- package/dist/src/process-manager/interfaces/process-monitor.js.map +1 -0
- package/dist/src/process-manager/interfaces/process-persistence.d.ts +125 -0
- package/dist/src/process-manager/interfaces/process-persistence.d.ts.map +1 -0
- package/dist/src/process-manager/interfaces/process-persistence.js +10 -0
- package/dist/src/process-manager/interfaces/process-persistence.js.map +1 -0
- package/dist/src/process-manager/managed-process-info.d.ts +307 -0
- package/dist/src/process-manager/managed-process-info.d.ts.map +1 -0
- package/dist/src/process-manager/managed-process-info.js +650 -0
- package/dist/src/process-manager/managed-process-info.js.map +1 -0
- package/dist/src/process-manager/process-group-manager.d.ts +103 -0
- package/dist/src/process-manager/process-group-manager.d.ts.map +1 -0
- package/dist/src/process-manager/process-group-manager.js +400 -0
- package/dist/src/process-manager/process-group-manager.js.map +1 -0
- package/dist/src/process-manager/process-lifecycle-manager.d.ts +68 -0
- package/dist/src/process-manager/process-lifecycle-manager.d.ts.map +1 -0
- package/dist/src/process-manager/process-lifecycle-manager.js +372 -0
- package/dist/src/process-manager/process-lifecycle-manager.js.map +1 -0
- package/dist/src/process-manager/process-manager.d.ts +296 -0
- package/dist/src/process-manager/process-manager.d.ts.map +1 -0
- package/dist/src/process-manager/process-manager.js +659 -0
- package/dist/src/process-manager/process-manager.js.map +1 -0
- package/dist/src/process-manager/process-monitor.d.ts +95 -0
- package/dist/src/process-manager/process-monitor.d.ts.map +1 -0
- package/dist/src/process-manager/process-monitor.js +357 -0
- package/dist/src/process-manager/process-monitor.js.map +1 -0
- package/dist/src/process-manager/process-persistence.d.ts +68 -0
- package/dist/src/process-manager/process-persistence.d.ts.map +1 -0
- package/dist/src/process-manager/process-persistence.js +364 -0
- package/dist/src/process-manager/process-persistence.js.map +1 -0
- package/dist/src/process-manager/utils/mutex.d.ts +82 -0
- package/dist/src/process-manager/utils/mutex.d.ts.map +1 -0
- package/dist/src/process-manager/utils/mutex.js +172 -0
- package/dist/src/process-manager/utils/mutex.js.map +1 -0
- package/dist/src/services/index.d.ts +8 -0
- package/dist/src/services/index.d.ts.map +1 -0
- package/dist/src/services/index.js +8 -0
- package/dist/src/services/index.js.map +1 -0
- package/dist/src/services/log-manager-config.d.ts +65 -0
- package/dist/src/services/log-manager-config.d.ts.map +1 -0
- package/dist/src/services/log-manager-config.js +145 -0
- package/dist/src/services/log-manager-config.js.map +1 -0
- package/dist/src/services/log-manager-factory.d.ts +134 -0
- package/dist/src/services/log-manager-factory.d.ts.map +1 -0
- package/dist/src/services/log-manager-factory.js +203 -0
- package/dist/src/services/log-manager-factory.js.map +1 -0
- package/dist/src/services/log-manager.d.ts +170 -0
- package/dist/src/services/log-manager.d.ts.map +1 -0
- package/dist/src/services/log-manager.js +1199 -0
- package/dist/src/services/log-manager.js.map +1 -0
- package/dist/src/services/log-path-validator.d.ts +121 -0
- package/dist/src/services/log-path-validator.d.ts.map +1 -0
- package/dist/src/services/log-path-validator.js +302 -0
- package/dist/src/services/log-path-validator.js.map +1 -0
- package/dist/src/services/process-log-integration.d.ts +62 -0
- package/dist/src/services/process-log-integration.d.ts.map +1 -0
- package/dist/src/services/process-log-integration.js +157 -0
- package/dist/src/services/process-log-integration.js.map +1 -0
- package/dist/src/shared/config.d.ts +67 -0
- package/dist/src/shared/config.d.ts.map +1 -0
- package/dist/src/shared/config.js +92 -0
- package/dist/src/shared/config.js.map +1 -0
- package/dist/src/shared/constants-streaming.d.ts +39 -0
- package/dist/src/shared/constants-streaming.d.ts.map +1 -0
- package/dist/src/shared/constants-streaming.js +39 -0
- package/dist/src/shared/constants-streaming.js.map +1 -0
- package/dist/src/shared/constants.d.ts +60 -0
- package/dist/src/shared/constants.d.ts.map +1 -0
- package/dist/src/shared/constants.js +71 -0
- package/dist/src/shared/constants.js.map +1 -0
- package/dist/src/shared/errors.d.ts +70 -0
- package/dist/src/shared/errors.d.ts.map +1 -0
- package/dist/src/shared/errors.js +101 -0
- package/dist/src/shared/errors.js.map +1 -0
- package/dist/src/shared/index.d.ts +14 -0
- package/dist/src/shared/index.d.ts.map +1 -0
- package/dist/src/shared/index.js +22 -0
- package/dist/src/shared/index.js.map +1 -0
- package/dist/src/shared/ipc.d.ts +402 -0
- package/dist/src/shared/ipc.d.ts.map +1 -0
- package/dist/src/shared/ipc.js +85 -0
- package/dist/src/shared/ipc.js.map +1 -0
- package/dist/src/shared/logger.d.ts +38 -0
- package/dist/src/shared/logger.d.ts.map +1 -0
- package/dist/src/shared/logger.js +139 -0
- package/dist/src/shared/logger.js.map +1 -0
- package/dist/src/shared/logs.d.ts +53 -0
- package/dist/src/shared/logs.d.ts.map +1 -0
- package/dist/src/shared/logs.js +26 -0
- package/dist/src/shared/logs.js.map +1 -0
- package/dist/src/shared/process.d.ts +102 -0
- package/dist/src/shared/process.d.ts.map +1 -0
- package/dist/src/shared/process.js +55 -0
- package/dist/src/shared/process.js.map +1 -0
- package/dist/src/shared/types.d.ts +15 -0
- package/dist/src/shared/types.d.ts.map +1 -0
- package/dist/src/shared/types.js +8 -0
- package/dist/src/shared/types.js.map +1 -0
- package/dist/src/types/index.d.ts +19 -0
- package/dist/src/types/index.d.ts.map +1 -0
- package/dist/src/types/index.js +5 -0
- package/dist/src/types/index.js.map +1 -0
- package/dist/src/utils/event-cleanup.d.ts +30 -0
- package/dist/src/utils/event-cleanup.d.ts.map +1 -0
- package/dist/src/utils/event-cleanup.js +32 -0
- package/dist/src/utils/event-cleanup.js.map +1 -0
- package/dist/src/utils/memory/memory-monitor.d.ts +126 -0
- package/dist/src/utils/memory/memory-monitor.d.ts.map +1 -0
- package/dist/src/utils/memory/memory-monitor.js +246 -0
- package/dist/src/utils/memory/memory-monitor.js.map +1 -0
- package/package.json +74 -0
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* IPC Factory
|
|
3
|
+
*
|
|
4
|
+
* Factory class for creating appropriate IPC server/client instances
|
|
5
|
+
* based on the current platform (Unix Domain Socket for Unix-like systems,
|
|
6
|
+
* Named Pipe for Windows).
|
|
7
|
+
*/
|
|
8
|
+
import { IPCServerBase } from './ipc-server-base.js';
|
|
9
|
+
import { IPCClientBase } from './ipc-client-base.js';
|
|
10
|
+
import type { IPCServerConfig, IPCClientConfig } from '../shared/ipc.js';
|
|
11
|
+
import { PLATFORM_CONSTANTS } from '../shared/constants.js';
|
|
12
|
+
/**
|
|
13
|
+
* Platform types
|
|
14
|
+
*/
|
|
15
|
+
export type Platform = 'unix' | 'windows';
|
|
16
|
+
/**
|
|
17
|
+
* IPC Factory class
|
|
18
|
+
*/
|
|
19
|
+
export declare class IPCFactory {
|
|
20
|
+
/**
|
|
21
|
+
* Get current platform
|
|
22
|
+
*/
|
|
23
|
+
static getCurrentPlatform(): Platform;
|
|
24
|
+
/**
|
|
25
|
+
* Create an IPC server for the current platform
|
|
26
|
+
*/
|
|
27
|
+
static createServer(config?: IPCServerConfig): IPCServerBase;
|
|
28
|
+
/**
|
|
29
|
+
* Create an IPC client for the current platform
|
|
30
|
+
*/
|
|
31
|
+
static createClient(config?: IPCClientConfig): IPCClientBase;
|
|
32
|
+
/**
|
|
33
|
+
* Create an IPC server for a specific platform
|
|
34
|
+
*/
|
|
35
|
+
static createServerForPlatform(platform: Platform, config?: IPCServerConfig): IPCServerBase;
|
|
36
|
+
/**
|
|
37
|
+
* Create an IPC client for a specific platform
|
|
38
|
+
*/
|
|
39
|
+
static createClientForPlatform(platform: Platform, config?: IPCClientConfig): IPCClientBase;
|
|
40
|
+
/**
|
|
41
|
+
* Get default IPC path for the current platform
|
|
42
|
+
*/
|
|
43
|
+
static getDefaultIPCPath(): string;
|
|
44
|
+
/**
|
|
45
|
+
* Get default IPC path for a specific platform
|
|
46
|
+
*/
|
|
47
|
+
static getDefaultIPCPathForPlatform(platform: Platform): string;
|
|
48
|
+
/**
|
|
49
|
+
* Check if the current platform supports IPC
|
|
50
|
+
*/
|
|
51
|
+
static isPlatformSupported(): boolean;
|
|
52
|
+
/**
|
|
53
|
+
* Check if a specific platform supports IPC
|
|
54
|
+
*/
|
|
55
|
+
static isPlatformSupportedForPlatform(platform: Platform): boolean;
|
|
56
|
+
/**
|
|
57
|
+
* Get platform-specific constants
|
|
58
|
+
*/
|
|
59
|
+
static getPlatformConstants(platform?: Platform): typeof PLATFORM_CONSTANTS.UNIX | typeof PLATFORM_CONSTANTS.WINDOWS;
|
|
60
|
+
/**
|
|
61
|
+
* Expand tilde in file paths
|
|
62
|
+
*/
|
|
63
|
+
private static expandPath;
|
|
64
|
+
/**
|
|
65
|
+
* Merge user config with platform defaults
|
|
66
|
+
*/
|
|
67
|
+
private static mergeConfigWithDefaults;
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Convenience functions for creating IPC instances
|
|
71
|
+
*/
|
|
72
|
+
/**
|
|
73
|
+
* Create an IPC server for the current platform
|
|
74
|
+
*/
|
|
75
|
+
export declare function createIPCServer(config?: IPCServerConfig): IPCServerBase;
|
|
76
|
+
/**
|
|
77
|
+
* Create an IPC client for the current platform
|
|
78
|
+
*/
|
|
79
|
+
export declare function createIPCClient(config?: IPCClientConfig): IPCClientBase;
|
|
80
|
+
/**
|
|
81
|
+
* Get the default IPC path for the current platform
|
|
82
|
+
*/
|
|
83
|
+
export declare function getDefaultIPCPath(): string;
|
|
84
|
+
/**
|
|
85
|
+
* Check if IPC is supported on the current platform
|
|
86
|
+
*/
|
|
87
|
+
export declare function isIPCSupported(): boolean;
|
|
88
|
+
/**
|
|
89
|
+
* Get current platform type
|
|
90
|
+
*/
|
|
91
|
+
export declare function getCurrentPlatform(): Platform;
|
|
92
|
+
//# sourceMappingURL=ipc-factory.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ipc-factory.d.ts","sourceRoot":"","sources":["../../../src/daemon/ipc-factory.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAKrD,OAAO,KAAK,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACzE,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAE5D;;GAEG;AACH,MAAM,MAAM,QAAQ,GAAG,MAAM,GAAG,SAAS,CAAC;AAE1C;;GAEG;AACH,qBAAa,UAAU;IACrB;;OAEG;IACH,MAAM,CAAC,kBAAkB,IAAI,QAAQ;IAIrC;;OAEG;IACH,MAAM,CAAC,YAAY,CAAC,MAAM,GAAE,eAA8B,GAAG,aAAa;IAK1E;;OAEG;IACH,MAAM,CAAC,YAAY,CAAC,MAAM,GAAE,eAA8B,GAAG,aAAa;IAK1E;;OAEG;IACH,MAAM,CAAC,uBAAuB,CAC5B,QAAQ,EAAE,QAAQ,EAClB,MAAM,GAAE,eAA8B,GACrC,aAAa;IAahB;;OAEG;IACH,MAAM,CAAC,uBAAuB,CAC5B,QAAQ,EAAE,QAAQ,EAClB,MAAM,GAAE,eAA8B,GACrC,aAAa;IAahB;;OAEG;IACH,MAAM,CAAC,iBAAiB,IAAI,MAAM;IAmClC;;OAEG;IACH,MAAM,CAAC,4BAA4B,CAAC,QAAQ,EAAE,QAAQ,GAAG,MAAM;IAW/D;;OAEG;IACH,MAAM,CAAC,mBAAmB,IAAI,OAAO;IAIrC;;OAEG;IACH,MAAM,CAAC,8BAA8B,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO;IAIlE;;OAEG;IACH,MAAM,CAAC,oBAAoB,CACzB,QAAQ,CAAC,EAAE,QAAQ,GAClB,OAAO,kBAAkB,CAAC,IAAI,GAAG,OAAO,kBAAkB,CAAC,OAAO;IAarE;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,UAAU;IA8CzB;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,uBAAuB;CAoBvC;AAED;;GAEG;AAEH;;GAEG;AACH,wBAAgB,eAAe,CAAC,MAAM,CAAC,EAAE,eAAe,GAAG,aAAa,CAEvE;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,MAAM,CAAC,EAAE,eAAe,GAAG,aAAa,CAEvE;AAED;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,MAAM,CAE1C;AAED;;GAEG;AACH,wBAAgB,cAAc,IAAI,OAAO,CAExC;AAED;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,QAAQ,CAE7C"}
|
|
@@ -0,0 +1,210 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* IPC Factory
|
|
3
|
+
*
|
|
4
|
+
* Factory class for creating appropriate IPC server/client instances
|
|
5
|
+
* based on the current platform (Unix Domain Socket for Unix-like systems,
|
|
6
|
+
* Named Pipe for Windows).
|
|
7
|
+
*/
|
|
8
|
+
import * as os from 'os';
|
|
9
|
+
import * as path from 'path';
|
|
10
|
+
import { UnixSocketServer } from './unix-socket-server.js';
|
|
11
|
+
import { UnixSocketClient } from './unix-socket-client.js';
|
|
12
|
+
import { NamedPipeServer } from './named-pipe-server.js';
|
|
13
|
+
import { NamedPipeClient } from './named-pipe-client.js';
|
|
14
|
+
import { PLATFORM_CONSTANTS } from '../shared/constants.js';
|
|
15
|
+
/**
|
|
16
|
+
* IPC Factory class
|
|
17
|
+
*/
|
|
18
|
+
export class IPCFactory {
|
|
19
|
+
/**
|
|
20
|
+
* Get current platform
|
|
21
|
+
*/
|
|
22
|
+
static getCurrentPlatform() {
|
|
23
|
+
return os.platform() === 'win32' ? 'windows' : 'unix';
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Create an IPC server for the current platform
|
|
27
|
+
*/
|
|
28
|
+
static createServer(config = { path: '' }) {
|
|
29
|
+
const platform = this.getCurrentPlatform();
|
|
30
|
+
return this.createServerForPlatform(platform, config);
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Create an IPC client for the current platform
|
|
34
|
+
*/
|
|
35
|
+
static createClient(config = { path: '' }) {
|
|
36
|
+
const platform = this.getCurrentPlatform();
|
|
37
|
+
return this.createClientForPlatform(platform, config);
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Create an IPC server for a specific platform
|
|
41
|
+
*/
|
|
42
|
+
static createServerForPlatform(platform, config = { path: '' }) {
|
|
43
|
+
const mergedConfig = this.mergeConfigWithDefaults(platform, config);
|
|
44
|
+
switch (platform) {
|
|
45
|
+
case 'unix':
|
|
46
|
+
return new UnixSocketServer(mergedConfig);
|
|
47
|
+
case 'windows':
|
|
48
|
+
return new NamedPipeServer(mergedConfig);
|
|
49
|
+
default:
|
|
50
|
+
throw new Error(`Unsupported platform: ${platform}`);
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Create an IPC client for a specific platform
|
|
55
|
+
*/
|
|
56
|
+
static createClientForPlatform(platform, config = { path: '' }) {
|
|
57
|
+
const mergedConfig = this.mergeConfigWithDefaults(platform, config);
|
|
58
|
+
switch (platform) {
|
|
59
|
+
case 'unix':
|
|
60
|
+
return new UnixSocketClient(mergedConfig);
|
|
61
|
+
case 'windows':
|
|
62
|
+
return new NamedPipeClient(mergedConfig);
|
|
63
|
+
default:
|
|
64
|
+
throw new Error(`Unsupported platform: ${platform}`);
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Get default IPC path for the current platform
|
|
69
|
+
*/
|
|
70
|
+
static getDefaultIPCPath() {
|
|
71
|
+
console.error('[DEBUG-IPC-FACTORY] Getting default IPC path...');
|
|
72
|
+
console.error('[DEBUG-IPC-FACTORY] Environment check:', JSON.stringify({
|
|
73
|
+
PROCMAN_SOCKET_PATH: process.env.PROCMAN_SOCKET_PATH,
|
|
74
|
+
HOME: process.env.HOME,
|
|
75
|
+
USERPROFILE: process.env.USERPROFILE,
|
|
76
|
+
platform: this.getCurrentPlatform(),
|
|
77
|
+
processId: process.pid,
|
|
78
|
+
}, null, 2));
|
|
79
|
+
// Check for environment variable first
|
|
80
|
+
if (process.env.PROCMAN_SOCKET_PATH) {
|
|
81
|
+
console.error('[DEBUG-IPC-FACTORY] Using PROCMAN_SOCKET_PATH from environment:', process.env.PROCMAN_SOCKET_PATH);
|
|
82
|
+
return process.env.PROCMAN_SOCKET_PATH;
|
|
83
|
+
}
|
|
84
|
+
const platform = this.getCurrentPlatform();
|
|
85
|
+
const defaultPath = this.getDefaultIPCPathForPlatform(platform);
|
|
86
|
+
console.error('[DEBUG-IPC-FACTORY] Using default platform path:', defaultPath);
|
|
87
|
+
return defaultPath;
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Get default IPC path for a specific platform
|
|
91
|
+
*/
|
|
92
|
+
static getDefaultIPCPathForPlatform(platform) {
|
|
93
|
+
switch (platform) {
|
|
94
|
+
case 'unix':
|
|
95
|
+
return PLATFORM_CONSTANTS.UNIX.IPC_PATH;
|
|
96
|
+
case 'windows':
|
|
97
|
+
return PLATFORM_CONSTANTS.WINDOWS.IPC_PATH;
|
|
98
|
+
default:
|
|
99
|
+
throw new Error(`Unsupported platform: ${platform}`);
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Check if the current platform supports IPC
|
|
104
|
+
*/
|
|
105
|
+
static isPlatformSupported() {
|
|
106
|
+
return this.isPlatformSupportedForPlatform(this.getCurrentPlatform());
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* Check if a specific platform supports IPC
|
|
110
|
+
*/
|
|
111
|
+
static isPlatformSupportedForPlatform(platform) {
|
|
112
|
+
return platform === 'unix' || platform === 'windows';
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* Get platform-specific constants
|
|
116
|
+
*/
|
|
117
|
+
static getPlatformConstants(platform) {
|
|
118
|
+
const targetPlatform = platform || this.getCurrentPlatform();
|
|
119
|
+
switch (targetPlatform) {
|
|
120
|
+
case 'unix':
|
|
121
|
+
return PLATFORM_CONSTANTS.UNIX;
|
|
122
|
+
case 'windows':
|
|
123
|
+
return PLATFORM_CONSTANTS.WINDOWS;
|
|
124
|
+
default:
|
|
125
|
+
throw new Error(`Unsupported platform: ${targetPlatform}`);
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
/**
|
|
129
|
+
* Expand tilde in file paths
|
|
130
|
+
*/
|
|
131
|
+
static expandPath(filePath) {
|
|
132
|
+
console.error('[DEBUG-IPC-FACTORY] Expanding path:', filePath);
|
|
133
|
+
if (filePath.startsWith('~/')) {
|
|
134
|
+
// Enhanced HOME detection: process.env.HOME || os.homedir()
|
|
135
|
+
const envHome = process.env.HOME;
|
|
136
|
+
const osHome = os.homedir();
|
|
137
|
+
const homeDir = envHome || osHome;
|
|
138
|
+
console.error('[DEBUG-IPC-FACTORY] Home directory resolution:', JSON.stringify({
|
|
139
|
+
originalPath: filePath,
|
|
140
|
+
envHome: envHome,
|
|
141
|
+
osHome: osHome,
|
|
142
|
+
selectedHome: homeDir,
|
|
143
|
+
processId: process.pid,
|
|
144
|
+
}, null, 2));
|
|
145
|
+
if (!homeDir) {
|
|
146
|
+
console.error('[DEBUG-IPC-FACTORY] ❌ Unable to resolve home directory');
|
|
147
|
+
throw new Error('Unable to resolve home directory for path expansion');
|
|
148
|
+
}
|
|
149
|
+
const expandedPath = path.join(homeDir, filePath.slice(2));
|
|
150
|
+
console.error('[DEBUG-IPC-FACTORY] Path expanded successfully:', expandedPath);
|
|
151
|
+
return expandedPath;
|
|
152
|
+
}
|
|
153
|
+
console.error('[DEBUG-IPC-FACTORY] Path does not need expansion:', filePath);
|
|
154
|
+
return filePath;
|
|
155
|
+
}
|
|
156
|
+
/**
|
|
157
|
+
* Merge user config with platform defaults
|
|
158
|
+
*/
|
|
159
|
+
static mergeConfigWithDefaults(platform, config) {
|
|
160
|
+
const defaultPath = this.getDefaultIPCPathForPlatform(platform);
|
|
161
|
+
if (platform === 'unix') {
|
|
162
|
+
const socketPath = config.path || config.socketPath || defaultPath;
|
|
163
|
+
return {
|
|
164
|
+
socketPath: this.expandPath(socketPath),
|
|
165
|
+
...config,
|
|
166
|
+
};
|
|
167
|
+
}
|
|
168
|
+
else {
|
|
169
|
+
const namedPipePath = config.path || config.namedPipePath || defaultPath;
|
|
170
|
+
return {
|
|
171
|
+
namedPipePath: namedPipePath, // Named pipes don't need path expansion
|
|
172
|
+
...config,
|
|
173
|
+
};
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
/**
|
|
178
|
+
* Convenience functions for creating IPC instances
|
|
179
|
+
*/
|
|
180
|
+
/**
|
|
181
|
+
* Create an IPC server for the current platform
|
|
182
|
+
*/
|
|
183
|
+
export function createIPCServer(config) {
|
|
184
|
+
return IPCFactory.createServer(config);
|
|
185
|
+
}
|
|
186
|
+
/**
|
|
187
|
+
* Create an IPC client for the current platform
|
|
188
|
+
*/
|
|
189
|
+
export function createIPCClient(config) {
|
|
190
|
+
return IPCFactory.createClient(config);
|
|
191
|
+
}
|
|
192
|
+
/**
|
|
193
|
+
* Get the default IPC path for the current platform
|
|
194
|
+
*/
|
|
195
|
+
export function getDefaultIPCPath() {
|
|
196
|
+
return IPCFactory.getDefaultIPCPath();
|
|
197
|
+
}
|
|
198
|
+
/**
|
|
199
|
+
* Check if IPC is supported on the current platform
|
|
200
|
+
*/
|
|
201
|
+
export function isIPCSupported() {
|
|
202
|
+
return IPCFactory.isPlatformSupported();
|
|
203
|
+
}
|
|
204
|
+
/**
|
|
205
|
+
* Get current platform type
|
|
206
|
+
*/
|
|
207
|
+
export function getCurrentPlatform() {
|
|
208
|
+
return IPCFactory.getCurrentPlatform();
|
|
209
|
+
}
|
|
210
|
+
//# sourceMappingURL=ipc-factory.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ipc-factory.js","sourceRoot":"","sources":["../../../src/daemon/ipc-factory.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* IPC Server Base Implementation
|
|
3
|
+
*
|
|
4
|
+
* Abstract base class for IPC server implementations.
|
|
5
|
+
* Provides common functionality for both Unix Domain Socket and Named Pipe servers.
|
|
6
|
+
*/
|
|
7
|
+
import { EventEmitter } from 'events';
|
|
8
|
+
import { SimpleDisposableBase } from './simple-resource-manager.js';
|
|
9
|
+
import type { IPCMessage, IPCCommandMessage, IPCResponse, IPCServerConfig, IPCConnection, IPCServerEvents, CommandType } from '../shared/ipc.js';
|
|
10
|
+
/**
|
|
11
|
+
* Message handler function type
|
|
12
|
+
*/
|
|
13
|
+
export type MessageHandler = (message: IPCCommandMessage, connection: IPCConnection) => Promise<IPCResponse | void>;
|
|
14
|
+
/**
|
|
15
|
+
* Mapped type for command-specific handlers
|
|
16
|
+
*/
|
|
17
|
+
export type CommandHandlerMap = {
|
|
18
|
+
[K in CommandType]: MessageHandler;
|
|
19
|
+
};
|
|
20
|
+
/**
|
|
21
|
+
* Type-safe message handler registry
|
|
22
|
+
*/
|
|
23
|
+
export interface MessageHandlerRegistry {
|
|
24
|
+
register(commandType: CommandType, handler: MessageHandler): void;
|
|
25
|
+
unregister(commandType: CommandType): void;
|
|
26
|
+
get(commandType: CommandType): MessageHandler | undefined;
|
|
27
|
+
has(commandType: CommandType): boolean;
|
|
28
|
+
clear(): void;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Abstract base class for IPC servers
|
|
32
|
+
*/
|
|
33
|
+
export declare abstract class IPCServerBase extends SimpleDisposableBase {
|
|
34
|
+
protected config: Required<IPCServerConfig>;
|
|
35
|
+
protected connections: Map<string, IPCConnection>;
|
|
36
|
+
protected messageHandlers: Map<string, MessageHandler>;
|
|
37
|
+
protected isListening: boolean;
|
|
38
|
+
protected serverInstance: EventEmitter | null;
|
|
39
|
+
private eventEmitter;
|
|
40
|
+
constructor(config?: IPCServerConfig);
|
|
41
|
+
/**
|
|
42
|
+
* Start the IPC server
|
|
43
|
+
*/
|
|
44
|
+
start(): Promise<void>;
|
|
45
|
+
/**
|
|
46
|
+
* Stop the IPC server
|
|
47
|
+
*/
|
|
48
|
+
stop(): Promise<void>;
|
|
49
|
+
/**
|
|
50
|
+
* Register a message handler for a specific command type
|
|
51
|
+
*/
|
|
52
|
+
registerHandler(commandType: CommandType, handler: MessageHandler): void;
|
|
53
|
+
/**
|
|
54
|
+
* Unregister a message handler
|
|
55
|
+
*/
|
|
56
|
+
unregisterHandler(commandType: CommandType): void;
|
|
57
|
+
/**
|
|
58
|
+
* Get a message handler for a specific command type
|
|
59
|
+
*/
|
|
60
|
+
getHandler(commandType: CommandType): MessageHandler | undefined;
|
|
61
|
+
/**
|
|
62
|
+
* Check if a handler is registered for a command type
|
|
63
|
+
*/
|
|
64
|
+
hasHandler(commandType: CommandType): boolean;
|
|
65
|
+
/**
|
|
66
|
+
* Clear all message handlers
|
|
67
|
+
*/
|
|
68
|
+
clearHandlers(): void;
|
|
69
|
+
/**
|
|
70
|
+
* Get all active connections
|
|
71
|
+
*/
|
|
72
|
+
getConnections(): IPCConnection[];
|
|
73
|
+
/**
|
|
74
|
+
* Get connection by ID
|
|
75
|
+
*/
|
|
76
|
+
getConnection(id: string): IPCConnection | undefined;
|
|
77
|
+
/**
|
|
78
|
+
* Check if server is listening
|
|
79
|
+
*/
|
|
80
|
+
isServerListening(): boolean;
|
|
81
|
+
/**
|
|
82
|
+
* Broadcast message to all connections
|
|
83
|
+
*/
|
|
84
|
+
broadcast(message: IPCMessage): Promise<void>;
|
|
85
|
+
/**
|
|
86
|
+
* Handle incoming message from a connection
|
|
87
|
+
*/
|
|
88
|
+
handleMessage(data: Buffer, connection: IPCConnection): Promise<void>;
|
|
89
|
+
/**
|
|
90
|
+
* Parse multiple JSON messages from buffer
|
|
91
|
+
* Addresses the PoC issue with consecutive message parsing
|
|
92
|
+
*/
|
|
93
|
+
protected parseMessages(data: Buffer): unknown[];
|
|
94
|
+
/**
|
|
95
|
+
* Handle concatenated JSON objects in a single line
|
|
96
|
+
* Uses simplified regex approach consistent with message-protocol.ts
|
|
97
|
+
*/
|
|
98
|
+
private handleConcatenatedJSON;
|
|
99
|
+
/**
|
|
100
|
+
* Process a single parsed message
|
|
101
|
+
*/
|
|
102
|
+
protected processMessage(messageData: unknown, connection: IPCConnection): Promise<void>;
|
|
103
|
+
/**
|
|
104
|
+
* Validate IPC message structure
|
|
105
|
+
*/
|
|
106
|
+
protected isValidIPCMessage(obj: unknown): obj is IPCMessage;
|
|
107
|
+
/**
|
|
108
|
+
* Handle new connection
|
|
109
|
+
*/
|
|
110
|
+
handleConnection(connection: IPCConnection): void;
|
|
111
|
+
/**
|
|
112
|
+
* Set up event handlers for a connection
|
|
113
|
+
*/
|
|
114
|
+
protected setupConnectionHandlers(connection: IPCConnection): void;
|
|
115
|
+
/**
|
|
116
|
+
* Set up connection events for socket-based connections
|
|
117
|
+
* Common logic for Unix Socket and Named Pipe connections
|
|
118
|
+
*/
|
|
119
|
+
protected setupConnectionEvents(connection: IPCConnection): void;
|
|
120
|
+
/**
|
|
121
|
+
* Set up common server events for net.Server instances
|
|
122
|
+
* Common logic for Unix Socket and Named Pipe servers
|
|
123
|
+
*/
|
|
124
|
+
protected setupCommonServerEvents(server: EventEmitter): void;
|
|
125
|
+
/**
|
|
126
|
+
* Implement disposal core for DisposableBase
|
|
127
|
+
*/
|
|
128
|
+
protected disposeCore(): void;
|
|
129
|
+
/**
|
|
130
|
+
* Get current resource usage statistics
|
|
131
|
+
*/
|
|
132
|
+
getResourceStats(): {
|
|
133
|
+
activeConnections: number;
|
|
134
|
+
messageHandlers: number;
|
|
135
|
+
eventListeners: number;
|
|
136
|
+
totalResources: number;
|
|
137
|
+
isListening: boolean;
|
|
138
|
+
};
|
|
139
|
+
/**
|
|
140
|
+
* TypedEventEmitter implementation methods
|
|
141
|
+
*/
|
|
142
|
+
on<K extends keyof IPCServerEvents>(event: K, listener: IPCServerEvents[K]): this;
|
|
143
|
+
once<K extends keyof IPCServerEvents>(event: K, listener: IPCServerEvents[K]): this;
|
|
144
|
+
emit<K extends keyof IPCServerEvents>(event: K, ...args: Parameters<IPCServerEvents[K]>): boolean;
|
|
145
|
+
removeListener<K extends keyof IPCServerEvents>(event: K, listener: IPCServerEvents[K]): this;
|
|
146
|
+
off<K extends keyof IPCServerEvents>(event: K, listener: IPCServerEvents[K]): this;
|
|
147
|
+
removeAllListeners<K extends keyof IPCServerEvents>(event?: K): this;
|
|
148
|
+
setMaxListeners(n: number): this;
|
|
149
|
+
getMaxListeners(): number;
|
|
150
|
+
listeners<K extends keyof IPCServerEvents>(event: K): ((...args: any[]) => void)[];
|
|
151
|
+
listenerCount<K extends keyof IPCServerEvents>(event: K): number;
|
|
152
|
+
/**
|
|
153
|
+
* Abstract methods to be implemented by subclasses
|
|
154
|
+
*/
|
|
155
|
+
protected abstract startServer(): Promise<void>;
|
|
156
|
+
protected abstract stopServer(): Promise<void>;
|
|
157
|
+
}
|
|
158
|
+
//# sourceMappingURL=ipc-server-base.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ipc-server-base.d.ts","sourceRoot":"","sources":["../../../src/daemon/ipc-server-base.ts"],"names":[],"mappings":"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"}
|