@scelar/nodepod 1.0.1 → 1.0.2

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.
Files changed (119) hide show
  1. package/dist/__tests__/smoke.test.d.ts +1 -0
  2. package/dist/constants/cdn-urls.d.ts +12 -0
  3. package/dist/constants/config.d.ts +121 -0
  4. package/dist/cross-origin.d.ts +5 -0
  5. package/dist/engine-factory.d.ts +24 -0
  6. package/dist/engine-types.d.ts +40 -0
  7. package/dist/helpers/byte-encoding.d.ts +4 -0
  8. package/dist/helpers/digest.d.ts +1 -0
  9. package/dist/helpers/event-loop.d.ts +12 -0
  10. package/dist/helpers/wasm-cache.d.ts +6 -0
  11. package/dist/iframe-sandbox.d.ts +25 -0
  12. package/dist/index.d.ts +86 -0
  13. package/dist/isolation-helpers.d.ts +13 -0
  14. package/dist/memory-volume.d.ts +147 -0
  15. package/dist/module-transformer.d.ts +6 -0
  16. package/dist/packages/archive-extractor.d.ts +28 -0
  17. package/dist/packages/browser-bundler.d.ts +14 -0
  18. package/dist/packages/installer.d.ts +41 -0
  19. package/dist/packages/registry-client.d.ts +46 -0
  20. package/dist/packages/version-resolver.d.ts +37 -0
  21. package/dist/polyfills/assert.d.ts +54 -0
  22. package/dist/polyfills/async_hooks.d.ts +46 -0
  23. package/dist/polyfills/buffer.d.ts +111 -0
  24. package/dist/polyfills/child_process.d.ts +141 -0
  25. package/dist/polyfills/chokidar.d.ts +63 -0
  26. package/dist/polyfills/cluster.d.ts +55 -0
  27. package/dist/polyfills/console.d.ts +72 -0
  28. package/dist/polyfills/constants.d.ts +207 -0
  29. package/dist/polyfills/crypto.d.ts +189 -0
  30. package/dist/polyfills/dgram.d.ts +37 -0
  31. package/dist/polyfills/diagnostics_channel.d.ts +27 -0
  32. package/dist/polyfills/dns.d.ts +76 -0
  33. package/dist/polyfills/domain.d.ts +27 -0
  34. package/dist/polyfills/esbuild.d.ts +106 -0
  35. package/dist/polyfills/events.d.ts +39 -0
  36. package/dist/polyfills/fs.d.ts +274 -0
  37. package/dist/polyfills/fsevents.d.ts +62 -0
  38. package/dist/polyfills/http.d.ts +215 -0
  39. package/dist/polyfills/http2.d.ts +119 -0
  40. package/dist/polyfills/https.d.ts +24 -0
  41. package/dist/polyfills/inspector.d.ts +29 -0
  42. package/dist/polyfills/lightningcss.d.ts +70 -0
  43. package/dist/polyfills/module.d.ts +35 -0
  44. package/dist/polyfills/net.d.ts +91 -0
  45. package/dist/polyfills/os.d.ts +240 -0
  46. package/dist/polyfills/path.d.ts +95 -0
  47. package/dist/polyfills/perf_hooks.d.ts +48 -0
  48. package/dist/polyfills/process.d.ts +190 -0
  49. package/dist/polyfills/punycode.d.ts +21 -0
  50. package/dist/polyfills/querystring.d.ts +18 -0
  51. package/dist/polyfills/quic.d.ts +42 -0
  52. package/dist/polyfills/readdirp.d.ts +48 -0
  53. package/dist/polyfills/readline.d.ts +87 -0
  54. package/dist/polyfills/repl.d.ts +45 -0
  55. package/dist/polyfills/rollup.d.ts +37 -0
  56. package/dist/polyfills/sea.d.ts +11 -0
  57. package/dist/polyfills/sqlite.d.ts +30 -0
  58. package/dist/polyfills/stream.d.ts +160 -0
  59. package/dist/polyfills/string_decoder.d.ts +16 -0
  60. package/dist/polyfills/tailwindcss-oxide.d.ts +42 -0
  61. package/dist/polyfills/test.d.ts +60 -0
  62. package/dist/polyfills/timers.d.ts +23 -0
  63. package/dist/polyfills/tls.d.ts +61 -0
  64. package/dist/polyfills/trace_events.d.ts +22 -0
  65. package/dist/polyfills/tty.d.ts +38 -0
  66. package/dist/polyfills/url.d.ts +55 -0
  67. package/dist/polyfills/util.d.ts +135 -0
  68. package/dist/polyfills/v8.d.ts +97 -0
  69. package/dist/polyfills/vm.d.ts +66 -0
  70. package/dist/polyfills/volume-registry.d.ts +3 -0
  71. package/dist/polyfills/wasi.d.ts +16 -0
  72. package/dist/polyfills/worker_threads.d.ts +111 -0
  73. package/dist/polyfills/ws.d.ts +92 -0
  74. package/dist/polyfills/zlib.d.ts +278 -0
  75. package/dist/request-proxy.d.ts +63 -0
  76. package/dist/script-engine.d.ts +79 -0
  77. package/dist/sdk/nodepod-fs.d.ts +27 -0
  78. package/dist/sdk/nodepod-process.d.ts +28 -0
  79. package/dist/sdk/nodepod-terminal.d.ts +48 -0
  80. package/dist/sdk/nodepod.d.ts +39 -0
  81. package/dist/sdk/types.d.ts +53 -0
  82. package/dist/shell/commands/bun.d.ts +4 -0
  83. package/dist/shell/commands/directory.d.ts +2 -0
  84. package/dist/shell/commands/file-ops.d.ts +2 -0
  85. package/dist/shell/commands/git.d.ts +2 -0
  86. package/dist/shell/commands/node.d.ts +4 -0
  87. package/dist/shell/commands/npm.d.ts +3 -0
  88. package/dist/shell/commands/pm-types.d.ts +25 -0
  89. package/dist/shell/commands/pnpm.d.ts +3 -0
  90. package/dist/shell/commands/search.d.ts +2 -0
  91. package/dist/shell/commands/shell-env.d.ts +3 -0
  92. package/dist/shell/commands/text-processing.d.ts +2 -0
  93. package/dist/shell/commands/yarn.d.ts +3 -0
  94. package/dist/shell/shell-builtins.d.ts +2 -0
  95. package/dist/shell/shell-helpers.d.ts +28 -0
  96. package/dist/shell/shell-interpreter.d.ts +48 -0
  97. package/dist/shell/shell-parser.d.ts +6 -0
  98. package/dist/shell/shell-types.d.ts +48 -0
  99. package/dist/syntax-transforms.d.ts +3 -0
  100. package/dist/threading/engine-worker.d.ts +1 -0
  101. package/dist/threading/inline-worker.d.ts +2 -0
  102. package/dist/threading/offload-types.d.ts +87 -0
  103. package/dist/threading/offload-worker.d.ts +1 -0
  104. package/dist/threading/offload.d.ts +16 -0
  105. package/dist/threading/process-context.d.ts +40 -0
  106. package/dist/threading/process-handle.d.ts +42 -0
  107. package/dist/threading/process-manager.d.ts +52 -0
  108. package/dist/threading/process-worker-entry.d.ts +24 -0
  109. package/dist/threading/shared-vfs.d.ts +36 -0
  110. package/dist/threading/sync-channel.d.ts +21 -0
  111. package/dist/threading/task-queue.d.ts +15 -0
  112. package/dist/threading/vfs-bridge.d.ts +25 -0
  113. package/dist/threading/worker-pool.d.ts +38 -0
  114. package/dist/threading/worker-protocol.d.ts +264 -0
  115. package/dist/threading/worker-vfs.d.ts +34 -0
  116. package/dist/types/fs-streams.d.ts +122 -0
  117. package/dist/types/manifest.d.ts +17 -0
  118. package/dist/worker-sandbox.d.ts +19 -0
  119. package/package.json +1 -1
@@ -0,0 +1,16 @@
1
+ import type { OffloadTask, OffloadResult, PoolConfig, TransformTask, TransformResult, ExtractTask, ExtractResult, BuildTask, BuildResult } from "./offload-types";
2
+ export { TaskPriority } from "./offload-types";
3
+ export type { TransformTask, TransformResult, ExtractTask, ExtractResult, BuildTask, BuildResult, OffloadTask, OffloadResult, PoolConfig, } from "./offload-types";
4
+ export declare function taskId(): string;
5
+ export declare function offload<T extends OffloadTask>(task: T): Promise<T extends TransformTask ? TransformResult : T extends ExtractTask ? ExtractResult : T extends BuildTask ? BuildResult : OffloadResult>;
6
+ export declare function offloadBatch(tasks: OffloadTask[]): Promise<OffloadResult[]>;
7
+ export declare function cancelTask(id: string): boolean;
8
+ export declare function poolStats(): {
9
+ total: number;
10
+ busy: number;
11
+ idle: number;
12
+ initialized: number;
13
+ fallback: boolean;
14
+ };
15
+ export declare function disposePool(): void;
16
+ export declare function configurePool(config: PoolConfig): void;
@@ -0,0 +1,40 @@
1
+ import type { MemoryVolume } from "../memory-volume";
2
+ export interface ProcessWriter {
3
+ write(data: string): void;
4
+ }
5
+ export interface ProcessReader {
6
+ on(event: string, cb: (...args: unknown[]) => void): void;
7
+ emit(event: string, ...args: unknown[]): void;
8
+ }
9
+ export interface ProcessContext {
10
+ pid: number;
11
+ cwd: string;
12
+ env: Record<string, string>;
13
+ stdoutSink: ((text: string) => void) | null;
14
+ stderrSink: ((text: string) => void) | null;
15
+ liveStdin: {
16
+ emit: (e: string, ...a: unknown[]) => void;
17
+ } | null;
18
+ abortController: AbortController;
19
+ volume: MemoryVolume;
20
+ refCount: number;
21
+ drainListeners: Set<() => void>;
22
+ termCols: (() => number) | null;
23
+ termRows: (() => number) | null;
24
+ fdCounter: number;
25
+ openFiles: Map<number, OpenFileEntry>;
26
+ }
27
+ export interface OpenFileEntry {
28
+ filePath: string;
29
+ cursor: number;
30
+ mode: string;
31
+ data: Uint8Array;
32
+ }
33
+ export declare function createProcessContext(opts: {
34
+ volume: MemoryVolume;
35
+ cwd?: string;
36
+ env?: Record<string, string>;
37
+ pid?: number;
38
+ }): ProcessContext;
39
+ export declare function getActiveContext(): ProcessContext | null;
40
+ export declare function setActiveContext(ctx: ProcessContext | null): void;
@@ -0,0 +1,42 @@
1
+ import { EventEmitter } from "../polyfills/events";
2
+ import type { MainToWorkerMessage, SpawnConfig, MainToWorker_Init, MainToWorker_Exec } from "./worker-protocol";
3
+ export type ProcessState = "starting" | "running" | "exited";
4
+ export declare class ProcessHandle extends EventEmitter {
5
+ readonly pid: number;
6
+ readonly worker: Worker;
7
+ readonly command: string;
8
+ readonly args: string[];
9
+ readonly parentPid?: number;
10
+ private _state;
11
+ private _exitCode;
12
+ private _stdout;
13
+ private _stderr;
14
+ private _exitHoldCount;
15
+ private _deferredExit;
16
+ private _shellDoneHoldCount;
17
+ private _deferredShellDone;
18
+ private _syncBlockedCount;
19
+ get workerExited(): boolean;
20
+ get shellCommandDone(): boolean;
21
+ get syncBlocked(): boolean;
22
+ holdSync(): void;
23
+ releaseSync(): void;
24
+ get stdout(): string;
25
+ get stderr(): string;
26
+ get state(): ProcessState;
27
+ get exitCode(): number | undefined;
28
+ constructor(worker: Worker, config: SpawnConfig);
29
+ _setPid(pid: number): void;
30
+ postMessage(msg: MainToWorkerMessage, transfer?: Transferable[]): void;
31
+ init(initMsg: MainToWorker_Init): void;
32
+ exec(execMsg: MainToWorker_Exec): void;
33
+ sendStdin(data: string): void;
34
+ kill(signal?: string): void;
35
+ resize(cols: number, rows: number): void;
36
+ holdExit(): void;
37
+ releaseExit(): void;
38
+ holdShellDone(): void;
39
+ releaseShellDone(): void;
40
+ private _terminate;
41
+ private _setupWorkerListeners;
42
+ }
@@ -0,0 +1,52 @@
1
+ import { EventEmitter } from "../polyfills/events";
2
+ import type { MemoryVolume } from "../memory-volume";
3
+ import { ProcessHandle } from "./process-handle";
4
+ import type { ProcessInfo } from "./worker-protocol";
5
+ import type { VFSBridge } from "./vfs-bridge";
6
+ export declare class ProcessManager extends EventEmitter {
7
+ private _processes;
8
+ private _nextPid;
9
+ private _volume;
10
+ private _vfsBridge;
11
+ private _sharedBuffer;
12
+ private _syncBuffer;
13
+ private _serverPorts;
14
+ private _childPids;
15
+ private _httpCallbacks;
16
+ private _nextHttpRequestId;
17
+ constructor(volume: MemoryVolume);
18
+ setVFSBridge(bridge: VFSBridge): void;
19
+ setSharedBuffer(buf: SharedArrayBuffer): void;
20
+ setSyncBuffer(buf: SharedArrayBuffer): void;
21
+ spawn(config: {
22
+ command: string;
23
+ args?: string[];
24
+ cwd?: string;
25
+ env?: Record<string, string>;
26
+ parentPid?: number;
27
+ }): ProcessHandle;
28
+ getProcess(pid: number): ProcessHandle | undefined;
29
+ listProcesses(): ProcessInfo[];
30
+ kill(pid: number, signal?: string): boolean;
31
+ private _cleanupServerPorts;
32
+ private _killDescendants;
33
+ teardown(): void;
34
+ get processCount(): number;
35
+ registerServerPort(port: number, pid: number): void;
36
+ unregisterServerPort(port: number): void;
37
+ getServerPorts(): number[];
38
+ dispatchHttpRequest(port: number, method: string, path: string, headers: Record<string, string>, body?: string | null): Promise<{
39
+ statusCode: number;
40
+ statusMessage: string;
41
+ headers: Record<string, string>;
42
+ body: string;
43
+ }>;
44
+ dispatchWsUpgrade(port: number, uid: string, path: string, headers: Record<string, string>): number;
45
+ dispatchWsData(pid: number, uid: string, frame: number[]): void;
46
+ dispatchWsClose(pid: number, uid: string, code: number): void;
47
+ private static _workerBlobUrl;
48
+ private _createWorker;
49
+ private _wireHandleEvents;
50
+ private _createEmptySnapshot;
51
+ broadcastVFSChange(path: string, content: ArrayBuffer | null, isDirectory: boolean, excludePid: number): void;
52
+ }
@@ -0,0 +1,24 @@
1
+ export declare function forkChild(modulePath: string, args: string[], opts: {
2
+ cwd: string;
3
+ env: Record<string, string>;
4
+ onStdout?: (data: string) => void;
5
+ onStderr?: (data: string) => void;
6
+ onIPC?: (data: unknown) => void;
7
+ onExit?: (exitCode: number) => void;
8
+ }): {
9
+ sendIPC: (data: unknown) => void;
10
+ disconnect: () => void;
11
+ requestId: number;
12
+ };
13
+ export declare function spawnChild(command: string, args: string[], opts?: {
14
+ cwd?: string;
15
+ env?: Record<string, string>;
16
+ stdio?: "pipe" | "inherit";
17
+ onStdout?: (data: string) => void;
18
+ onStderr?: (data: string) => void;
19
+ }): Promise<{
20
+ pid: number;
21
+ exitCode: number;
22
+ stdout: string;
23
+ stderr: string;
24
+ }>;
@@ -0,0 +1,36 @@
1
+ export declare function isSharedArrayBufferAvailable(): boolean;
2
+ export declare class SharedVFSController {
3
+ private _buffer;
4
+ private _view;
5
+ private _int32;
6
+ private _uint8;
7
+ private _pathEncoder;
8
+ private _pathDecoder;
9
+ constructor(bufferSize?: number);
10
+ get buffer(): SharedArrayBuffer;
11
+ writeFile(path: string, content: Uint8Array): boolean;
12
+ writeDirectory(path: string): boolean;
13
+ deleteFile(path: string): boolean;
14
+ readFile(path: string): Uint8Array | null;
15
+ exists(path: string): boolean;
16
+ get version(): number;
17
+ private _findEntry;
18
+ private _updateEntry;
19
+ private _lock;
20
+ private _unlock;
21
+ }
22
+ export declare class SharedVFSReader {
23
+ private _buffer;
24
+ private _view;
25
+ private _int32;
26
+ private _uint8;
27
+ private _pathEncoder;
28
+ private _pathDecoder;
29
+ constructor(buffer: SharedArrayBuffer);
30
+ readFileSync(path: string): Uint8Array | null;
31
+ existsSync(path: string): boolean;
32
+ isDirectorySync(path: string): boolean;
33
+ get version(): number;
34
+ waitForChange(currentVersion: number, timeoutMs?: number): number;
35
+ private _findEntry;
36
+ }
@@ -0,0 +1,21 @@
1
+ export declare const SLOT_SIZE = 4096;
2
+ export declare const MAX_SLOTS = 64;
3
+ export declare class SyncChannelController {
4
+ private _buffer;
5
+ private _int32;
6
+ private _uint8;
7
+ constructor(bufferSize?: number);
8
+ get buffer(): SharedArrayBuffer;
9
+ writeResult(syncSlot: number, exitCode: number, stdout: string): void;
10
+ writeError(syncSlot: number, exitCode: number, errorMessage: string): void;
11
+ }
12
+ export declare class SyncChannelWorker {
13
+ private _int32;
14
+ private _uint8;
15
+ constructor(buffer: SharedArrayBuffer);
16
+ allocateSlot(): number;
17
+ waitForResult(syncSlot: number, timeoutMs?: number): {
18
+ exitCode: number;
19
+ stdout: string;
20
+ };
21
+ }
@@ -0,0 +1,15 @@
1
+ import type { WorkerPool } from "./worker-pool";
2
+ import type { OffloadTask, OffloadResult, TransformTask, TransformResult, ExtractTask, ExtractResult, BuildTask, BuildResult } from "./offload-types";
3
+ export declare class TaskQueue {
4
+ private queue;
5
+ private pool;
6
+ private dispatching;
7
+ constructor(pool: WorkerPool);
8
+ submit<T extends OffloadTask>(task: T): Promise<T extends TransformTask ? TransformResult : T extends ExtractTask ? ExtractResult : T extends BuildTask ? BuildResult : OffloadResult>;
9
+ submitBatch(tasks: OffloadTask[]): Promise<OffloadResult[]>;
10
+ cancel(taskId: string): boolean;
11
+ get pending(): number;
12
+ private dispatch;
13
+ private rejectAll;
14
+ private executeTask;
15
+ }
@@ -0,0 +1,25 @@
1
+ import type { MemoryVolume } from "../memory-volume";
2
+ import type { VFSBinarySnapshot, VFSSnapshotEntry } from "./worker-protocol";
3
+ import type { SharedVFSController } from "./shared-vfs";
4
+ export declare class VFSBridge {
5
+ private _volume;
6
+ private _broadcaster;
7
+ private _sharedVFS;
8
+ private _suppressWatch;
9
+ constructor(volume: MemoryVolume);
10
+ setBroadcaster(fn: (path: string, content: ArrayBuffer | null, excludePid: number) => void): void;
11
+ setSharedVFS(controller: SharedVFSController): void;
12
+ createSnapshot(): VFSBinarySnapshot;
13
+ createChunkedSnapshots(): {
14
+ chunkIndex: number;
15
+ totalChunks: number;
16
+ data: ArrayBuffer;
17
+ manifest: VFSSnapshotEntry[];
18
+ }[];
19
+ handleWorkerWrite(path: string, content: Uint8Array): void;
20
+ handleWorkerMkdir(path: string): void;
21
+ handleWorkerDelete(path: string): void;
22
+ broadcastChange(path: string, content: ArrayBuffer | null, excludePid: number): void;
23
+ watch(): () => void;
24
+ private _walkVolume;
25
+ }
@@ -0,0 +1,38 @@
1
+ import { type Remote } from "comlink";
2
+ import type { OffloadWorkerEndpoint, PoolConfig } from "./offload-types";
3
+ interface PooledWorker {
4
+ thread: Worker;
5
+ endpoint: Remote<OffloadWorkerEndpoint>;
6
+ busy: boolean;
7
+ initialized: boolean;
8
+ initPromise: Promise<void> | null;
9
+ lastUsed: number;
10
+ id: number;
11
+ }
12
+ export declare class WorkerPool {
13
+ private workers;
14
+ private waitQueue;
15
+ private nextId;
16
+ private config;
17
+ private idleTimer;
18
+ private disposed;
19
+ broken: boolean;
20
+ constructor(config?: PoolConfig);
21
+ acquire(): Promise<{
22
+ worker: PooledWorker;
23
+ release: () => void;
24
+ }>;
25
+ dispose(): void;
26
+ stats(): {
27
+ total: number;
28
+ busy: number;
29
+ idle: number;
30
+ initialized: number;
31
+ };
32
+ private rejectAllWaiters;
33
+ private release;
34
+ private tryCreateWorker;
35
+ private reapIdle;
36
+ private terminateWorker;
37
+ }
38
+ export {};
@@ -0,0 +1,264 @@
1
+ export interface VFSBinarySnapshot {
2
+ manifest: VFSSnapshotEntry[];
3
+ data: ArrayBuffer;
4
+ }
5
+ export interface VFSSnapshotEntry {
6
+ path: string;
7
+ offset: number;
8
+ length: number;
9
+ isDirectory: boolean;
10
+ }
11
+ export interface MainToWorker_Init {
12
+ type: "init";
13
+ pid: number;
14
+ cwd: string;
15
+ env: Record<string, string>;
16
+ snapshot: VFSBinarySnapshot;
17
+ sharedBuffer?: SharedArrayBuffer;
18
+ syncBuffer?: SharedArrayBuffer;
19
+ }
20
+ export interface MainToWorker_Exec {
21
+ type: "exec";
22
+ filePath: string;
23
+ args: string[];
24
+ cwd?: string;
25
+ env?: Record<string, string>;
26
+ isShell?: boolean;
27
+ shellCommand?: string;
28
+ isFork?: boolean;
29
+ persistent?: boolean;
30
+ isWorkerThread?: boolean;
31
+ workerData?: unknown;
32
+ threadId?: number;
33
+ }
34
+ export interface MainToWorker_Stdin {
35
+ type: "stdin";
36
+ data: string;
37
+ }
38
+ export interface MainToWorker_Signal {
39
+ type: "signal";
40
+ signal: string;
41
+ }
42
+ export interface MainToWorker_Resize {
43
+ type: "resize";
44
+ cols: number;
45
+ rows: number;
46
+ }
47
+ export interface MainToWorker_VFSSync {
48
+ type: "vfs-sync";
49
+ path: string;
50
+ content: ArrayBuffer | null;
51
+ isDirectory: boolean;
52
+ }
53
+ export interface MainToWorker_VFSChunk {
54
+ type: "vfs-chunk";
55
+ chunkIndex: number;
56
+ totalChunks: number;
57
+ data: ArrayBuffer;
58
+ manifest: VFSSnapshotEntry[];
59
+ }
60
+ export interface MainToWorker_SpawnResult {
61
+ type: "spawn-result";
62
+ requestId: number;
63
+ pid: number;
64
+ error?: string;
65
+ }
66
+ export interface MainToWorker_ChildOutput {
67
+ type: "child-output";
68
+ requestId: number;
69
+ stream: "stdout" | "stderr";
70
+ data: string;
71
+ }
72
+ export interface MainToWorker_ChildExit {
73
+ type: "child-exit";
74
+ requestId: number;
75
+ exitCode: number;
76
+ stdout: string;
77
+ stderr: string;
78
+ }
79
+ export interface MainToWorker_HttpRequest {
80
+ type: "http-request";
81
+ requestId: number;
82
+ port: number;
83
+ method: string;
84
+ path: string;
85
+ headers: Record<string, string>;
86
+ body: string | null;
87
+ }
88
+ export interface MainToWorker_IPC {
89
+ type: "ipc-message";
90
+ data: unknown;
91
+ targetRequestId?: number;
92
+ }
93
+ export interface MainToWorker_WsUpgrade {
94
+ type: "ws-upgrade";
95
+ uid: string;
96
+ port: number;
97
+ path: string;
98
+ headers: Record<string, string>;
99
+ }
100
+ export interface MainToWorker_WsData {
101
+ type: "ws-data";
102
+ uid: string;
103
+ frame: number[];
104
+ }
105
+ export interface MainToWorker_WsClose {
106
+ type: "ws-close";
107
+ uid: string;
108
+ code: number;
109
+ }
110
+ export type MainToWorkerMessage = MainToWorker_Init | MainToWorker_Exec | MainToWorker_Stdin | MainToWorker_Signal | MainToWorker_Resize | MainToWorker_VFSSync | MainToWorker_VFSChunk | MainToWorker_SpawnResult | MainToWorker_ChildOutput | MainToWorker_ChildExit | MainToWorker_HttpRequest | MainToWorker_IPC | MainToWorker_WsUpgrade | MainToWorker_WsData | MainToWorker_WsClose;
111
+ export interface WorkerToMain_Ready {
112
+ type: "ready";
113
+ pid: number;
114
+ }
115
+ export interface WorkerToMain_Stdout {
116
+ type: "stdout";
117
+ data: string;
118
+ }
119
+ export interface WorkerToMain_Stderr {
120
+ type: "stderr";
121
+ data: string;
122
+ }
123
+ export interface WorkerToMain_Exit {
124
+ type: "exit";
125
+ exitCode: number;
126
+ stdout: string;
127
+ stderr: string;
128
+ }
129
+ export interface WorkerToMain_Console {
130
+ type: "console";
131
+ method: string;
132
+ args: string[];
133
+ }
134
+ export interface WorkerToMain_VFSWrite {
135
+ type: "vfs-write";
136
+ path: string;
137
+ content: ArrayBuffer;
138
+ isDirectory: boolean;
139
+ }
140
+ export interface WorkerToMain_VFSDelete {
141
+ type: "vfs-delete";
142
+ path: string;
143
+ }
144
+ export interface WorkerToMain_VFSRead {
145
+ type: "vfs-read";
146
+ requestId: number;
147
+ path: string;
148
+ }
149
+ export interface WorkerToMain_SpawnRequest {
150
+ type: "spawn-request";
151
+ requestId: number;
152
+ command: string;
153
+ args: string[];
154
+ cwd: string;
155
+ env: Record<string, string>;
156
+ stdio: "pipe" | "inherit";
157
+ }
158
+ export interface WorkerToMain_ForkRequest {
159
+ type: "fork-request";
160
+ requestId: number;
161
+ modulePath: string;
162
+ args: string[];
163
+ cwd: string;
164
+ env: Record<string, string>;
165
+ }
166
+ export interface WorkerToMain_WorkerThreadRequest {
167
+ type: "workerthread-request";
168
+ requestId: number;
169
+ modulePath: string;
170
+ isEval?: boolean;
171
+ args: string[];
172
+ cwd: string;
173
+ env: Record<string, string>;
174
+ workerData: unknown;
175
+ threadId: number;
176
+ }
177
+ export interface WorkerToMain_SpawnSync {
178
+ type: "spawn-sync";
179
+ requestId: number;
180
+ command: string;
181
+ args: string[];
182
+ cwd: string;
183
+ env: Record<string, string>;
184
+ syncSlot: number;
185
+ shellCommand?: string;
186
+ }
187
+ export interface WorkerToMain_ServerListen {
188
+ type: "server-listen";
189
+ port: number;
190
+ hostname: string;
191
+ }
192
+ export interface WorkerToMain_ServerClose {
193
+ type: "server-close";
194
+ port: number;
195
+ }
196
+ export interface WorkerToMain_HttpRequest {
197
+ type: "http-request";
198
+ requestId: number;
199
+ port: number;
200
+ method: string;
201
+ path: string;
202
+ headers: Record<string, string>;
203
+ body: string | null;
204
+ }
205
+ export interface WorkerToMain_CwdChange {
206
+ type: "cwd-change";
207
+ cwd: string;
208
+ }
209
+ export interface WorkerToMain_StdinRawStatus {
210
+ type: "stdin-raw-status";
211
+ isRaw: boolean;
212
+ }
213
+ export interface WorkerToMain_HttpResponse {
214
+ type: "http-response";
215
+ requestId: number;
216
+ statusCode: number;
217
+ statusMessage: string;
218
+ headers: Record<string, string>;
219
+ body: string;
220
+ }
221
+ export interface WorkerToMain_IPC {
222
+ type: "ipc-message";
223
+ data: unknown;
224
+ targetRequestId?: number;
225
+ }
226
+ export interface WorkerToMain_ShellDone {
227
+ type: "shell-done";
228
+ exitCode: number;
229
+ stdout: string;
230
+ stderr: string;
231
+ }
232
+ export interface WorkerToMain_Error {
233
+ type: "error";
234
+ message: string;
235
+ stack?: string;
236
+ }
237
+ export interface WorkerToMain_WsFrame {
238
+ type: "ws-frame";
239
+ uid: string;
240
+ kind: string;
241
+ data?: string;
242
+ bytes?: number[];
243
+ code?: number;
244
+ message?: string;
245
+ }
246
+ export type WorkerToMainMessage = WorkerToMain_Ready | WorkerToMain_Stdout | WorkerToMain_Stderr | WorkerToMain_Exit | WorkerToMain_Console | WorkerToMain_VFSWrite | WorkerToMain_VFSDelete | WorkerToMain_VFSRead | WorkerToMain_SpawnRequest | WorkerToMain_ForkRequest | WorkerToMain_WorkerThreadRequest | WorkerToMain_SpawnSync | WorkerToMain_ServerListen | WorkerToMain_ServerClose | WorkerToMain_HttpRequest | WorkerToMain_CwdChange | WorkerToMain_StdinRawStatus | WorkerToMain_HttpResponse | WorkerToMain_IPC | WorkerToMain_ShellDone | WorkerToMain_Error | WorkerToMain_WsFrame;
247
+ export interface SpawnConfig {
248
+ command: string;
249
+ args: string[];
250
+ cwd: string;
251
+ env: Record<string, string>;
252
+ snapshot: VFSBinarySnapshot;
253
+ sharedBuffer?: SharedArrayBuffer;
254
+ syncBuffer?: SharedArrayBuffer;
255
+ parentPid?: number;
256
+ }
257
+ export interface ProcessInfo {
258
+ pid: number;
259
+ command: string;
260
+ args: string[];
261
+ state: "starting" | "running" | "exited";
262
+ exitCode?: number;
263
+ parentPid?: number;
264
+ }
@@ -0,0 +1,34 @@
1
+ import type { VFSBinarySnapshot } from "./worker-protocol";
2
+ export declare class WorkerVFS {
3
+ private _files;
4
+ private _dirs;
5
+ private _onWrite;
6
+ private _onDelete;
7
+ private _decoder;
8
+ private _encoder;
9
+ constructor();
10
+ initFromSnapshot(snapshot: VFSBinarySnapshot): void;
11
+ setWriteCallback(cb: (path: string, content: Uint8Array, isDir: boolean) => void): void;
12
+ setDeleteCallback(cb: (path: string) => void): void;
13
+ readFileSync(path: string, encoding?: string): string | Uint8Array;
14
+ existsSync(path: string): boolean;
15
+ statSync(path: string): {
16
+ isFile: () => boolean;
17
+ isDirectory: () => boolean;
18
+ size: number;
19
+ };
20
+ readdirSync(path: string): string[];
21
+ writeFileSync(path: string, content: string | Uint8Array): void;
22
+ mkdirSync(path: string, opts?: {
23
+ recursive?: boolean;
24
+ }): void;
25
+ unlinkSync(path: string): void;
26
+ rmdirSync(path: string): void;
27
+ renameSync(src: string, dest: string): void;
28
+ appendFileSync(path: string, content: string | Uint8Array): void;
29
+ copyFileSync(src: string, dest: string): void;
30
+ applySync(path: string, content: ArrayBuffer | null, isDirectory: boolean): void;
31
+ private _ensureParentDirs;
32
+ get fileCount(): number;
33
+ get dirCount(): number;
34
+ }