almostnode 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 +731 -0
- package/dist/__sw__.js +394 -0
- package/dist/ai-chatbot-demo-entry.d.ts +6 -0
- package/dist/ai-chatbot-demo-entry.d.ts.map +1 -0
- package/dist/ai-chatbot-demo.d.ts +42 -0
- package/dist/ai-chatbot-demo.d.ts.map +1 -0
- package/dist/assets/runtime-worker-D9x_Ddwz.js +60543 -0
- package/dist/assets/runtime-worker-D9x_Ddwz.js.map +1 -0
- package/dist/convex-app-demo-entry.d.ts +6 -0
- package/dist/convex-app-demo-entry.d.ts.map +1 -0
- package/dist/convex-app-demo.d.ts +68 -0
- package/dist/convex-app-demo.d.ts.map +1 -0
- package/dist/cors-proxy.d.ts +46 -0
- package/dist/cors-proxy.d.ts.map +1 -0
- package/dist/create-runtime.d.ts +42 -0
- package/dist/create-runtime.d.ts.map +1 -0
- package/dist/demo.d.ts +6 -0
- package/dist/demo.d.ts.map +1 -0
- package/dist/dev-server.d.ts +97 -0
- package/dist/dev-server.d.ts.map +1 -0
- package/dist/frameworks/next-dev-server.d.ts +202 -0
- package/dist/frameworks/next-dev-server.d.ts.map +1 -0
- package/dist/frameworks/vite-dev-server.d.ts +85 -0
- package/dist/frameworks/vite-dev-server.d.ts.map +1 -0
- package/dist/index.cjs +14965 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.ts +71 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.mjs +14867 -0
- package/dist/index.mjs.map +1 -0
- package/dist/next-demo.d.ts +49 -0
- package/dist/next-demo.d.ts.map +1 -0
- package/dist/npm/index.d.ts +71 -0
- package/dist/npm/index.d.ts.map +1 -0
- package/dist/npm/registry.d.ts +66 -0
- package/dist/npm/registry.d.ts.map +1 -0
- package/dist/npm/resolver.d.ts +52 -0
- package/dist/npm/resolver.d.ts.map +1 -0
- package/dist/npm/tarball.d.ts +29 -0
- package/dist/npm/tarball.d.ts.map +1 -0
- package/dist/runtime-interface.d.ts +90 -0
- package/dist/runtime-interface.d.ts.map +1 -0
- package/dist/runtime.d.ts +103 -0
- package/dist/runtime.d.ts.map +1 -0
- package/dist/sandbox-helpers.d.ts +43 -0
- package/dist/sandbox-helpers.d.ts.map +1 -0
- package/dist/sandbox-runtime.d.ts +65 -0
- package/dist/sandbox-runtime.d.ts.map +1 -0
- package/dist/server-bridge.d.ts +89 -0
- package/dist/server-bridge.d.ts.map +1 -0
- package/dist/shims/assert.d.ts +51 -0
- package/dist/shims/assert.d.ts.map +1 -0
- package/dist/shims/async_hooks.d.ts +37 -0
- package/dist/shims/async_hooks.d.ts.map +1 -0
- package/dist/shims/buffer.d.ts +20 -0
- package/dist/shims/buffer.d.ts.map +1 -0
- package/dist/shims/child_process-browser.d.ts +92 -0
- package/dist/shims/child_process-browser.d.ts.map +1 -0
- package/dist/shims/child_process.d.ts +93 -0
- package/dist/shims/child_process.d.ts.map +1 -0
- package/dist/shims/chokidar.d.ts +55 -0
- package/dist/shims/chokidar.d.ts.map +1 -0
- package/dist/shims/cluster.d.ts +52 -0
- package/dist/shims/cluster.d.ts.map +1 -0
- package/dist/shims/crypto.d.ts +122 -0
- package/dist/shims/crypto.d.ts.map +1 -0
- package/dist/shims/dgram.d.ts +34 -0
- package/dist/shims/dgram.d.ts.map +1 -0
- package/dist/shims/diagnostics_channel.d.ts +80 -0
- package/dist/shims/diagnostics_channel.d.ts.map +1 -0
- package/dist/shims/dns.d.ts +87 -0
- package/dist/shims/dns.d.ts.map +1 -0
- package/dist/shims/domain.d.ts +25 -0
- package/dist/shims/domain.d.ts.map +1 -0
- package/dist/shims/esbuild.d.ts +105 -0
- package/dist/shims/esbuild.d.ts.map +1 -0
- package/dist/shims/events.d.ts +37 -0
- package/dist/shims/events.d.ts.map +1 -0
- package/dist/shims/fs.d.ts +115 -0
- package/dist/shims/fs.d.ts.map +1 -0
- package/dist/shims/fsevents.d.ts +67 -0
- package/dist/shims/fsevents.d.ts.map +1 -0
- package/dist/shims/http.d.ts +217 -0
- package/dist/shims/http.d.ts.map +1 -0
- package/dist/shims/http2.d.ts +81 -0
- package/dist/shims/http2.d.ts.map +1 -0
- package/dist/shims/https.d.ts +36 -0
- package/dist/shims/https.d.ts.map +1 -0
- package/dist/shims/inspector.d.ts +25 -0
- package/dist/shims/inspector.d.ts.map +1 -0
- package/dist/shims/module.d.ts +22 -0
- package/dist/shims/module.d.ts.map +1 -0
- package/dist/shims/net.d.ts +100 -0
- package/dist/shims/net.d.ts.map +1 -0
- package/dist/shims/os.d.ts +159 -0
- package/dist/shims/os.d.ts.map +1 -0
- package/dist/shims/path.d.ts +72 -0
- package/dist/shims/path.d.ts.map +1 -0
- package/dist/shims/perf_hooks.d.ts +50 -0
- package/dist/shims/perf_hooks.d.ts.map +1 -0
- package/dist/shims/process.d.ts +93 -0
- package/dist/shims/process.d.ts.map +1 -0
- package/dist/shims/querystring.d.ts +23 -0
- package/dist/shims/querystring.d.ts.map +1 -0
- package/dist/shims/readdirp.d.ts +52 -0
- package/dist/shims/readdirp.d.ts.map +1 -0
- package/dist/shims/readline.d.ts +62 -0
- package/dist/shims/readline.d.ts.map +1 -0
- package/dist/shims/rollup.d.ts +34 -0
- package/dist/shims/rollup.d.ts.map +1 -0
- package/dist/shims/sentry.d.ts +163 -0
- package/dist/shims/sentry.d.ts.map +1 -0
- package/dist/shims/stream.d.ts +181 -0
- package/dist/shims/stream.d.ts.map +1 -0
- package/dist/shims/tls.d.ts +53 -0
- package/dist/shims/tls.d.ts.map +1 -0
- package/dist/shims/tty.d.ts +30 -0
- package/dist/shims/tty.d.ts.map +1 -0
- package/dist/shims/url.d.ts +64 -0
- package/dist/shims/url.d.ts.map +1 -0
- package/dist/shims/util.d.ts +106 -0
- package/dist/shims/util.d.ts.map +1 -0
- package/dist/shims/v8.d.ts +73 -0
- package/dist/shims/v8.d.ts.map +1 -0
- package/dist/shims/vfs-adapter.d.ts +126 -0
- package/dist/shims/vfs-adapter.d.ts.map +1 -0
- package/dist/shims/vm.d.ts +45 -0
- package/dist/shims/vm.d.ts.map +1 -0
- package/dist/shims/worker_threads.d.ts +66 -0
- package/dist/shims/worker_threads.d.ts.map +1 -0
- package/dist/shims/ws.d.ts +66 -0
- package/dist/shims/ws.d.ts.map +1 -0
- package/dist/shims/zlib.d.ts +161 -0
- package/dist/shims/zlib.d.ts.map +1 -0
- package/dist/transform.d.ts +24 -0
- package/dist/transform.d.ts.map +1 -0
- package/dist/virtual-fs.d.ts +226 -0
- package/dist/virtual-fs.d.ts.map +1 -0
- package/dist/vite-demo.d.ts +35 -0
- package/dist/vite-demo.d.ts.map +1 -0
- package/dist/vite-sw.js +132 -0
- package/dist/worker/runtime-worker.d.ts +8 -0
- package/dist/worker/runtime-worker.d.ts.map +1 -0
- package/dist/worker-runtime.d.ts +50 -0
- package/dist/worker-runtime.d.ts.map +1 -0
- package/package.json +85 -0
- package/src/ai-chatbot-demo-entry.ts +244 -0
- package/src/ai-chatbot-demo.ts +509 -0
- package/src/convex-app-demo-entry.ts +1107 -0
- package/src/convex-app-demo.ts +1316 -0
- package/src/cors-proxy.ts +81 -0
- package/src/create-runtime.ts +147 -0
- package/src/demo.ts +304 -0
- package/src/dev-server.ts +274 -0
- package/src/frameworks/next-dev-server.ts +2224 -0
- package/src/frameworks/vite-dev-server.ts +702 -0
- package/src/index.ts +101 -0
- package/src/next-demo.ts +1784 -0
- package/src/npm/index.ts +347 -0
- package/src/npm/registry.ts +152 -0
- package/src/npm/resolver.ts +385 -0
- package/src/npm/tarball.ts +209 -0
- package/src/runtime-interface.ts +103 -0
- package/src/runtime.ts +1046 -0
- package/src/sandbox-helpers.ts +173 -0
- package/src/sandbox-runtime.ts +252 -0
- package/src/server-bridge.ts +426 -0
- package/src/shims/assert.ts +664 -0
- package/src/shims/async_hooks.ts +86 -0
- package/src/shims/buffer.ts +75 -0
- package/src/shims/child_process-browser.ts +217 -0
- package/src/shims/child_process.ts +463 -0
- package/src/shims/chokidar.ts +313 -0
- package/src/shims/cluster.ts +67 -0
- package/src/shims/crypto.ts +830 -0
- package/src/shims/dgram.ts +47 -0
- package/src/shims/diagnostics_channel.ts +196 -0
- package/src/shims/dns.ts +172 -0
- package/src/shims/domain.ts +58 -0
- package/src/shims/esbuild.ts +805 -0
- package/src/shims/events.ts +195 -0
- package/src/shims/fs.ts +803 -0
- package/src/shims/fsevents.ts +63 -0
- package/src/shims/http.ts +904 -0
- package/src/shims/http2.ts +96 -0
- package/src/shims/https.ts +86 -0
- package/src/shims/inspector.ts +30 -0
- package/src/shims/module.ts +82 -0
- package/src/shims/net.ts +359 -0
- package/src/shims/os.ts +195 -0
- package/src/shims/path.ts +199 -0
- package/src/shims/perf_hooks.ts +92 -0
- package/src/shims/process.ts +346 -0
- package/src/shims/querystring.ts +97 -0
- package/src/shims/readdirp.ts +228 -0
- package/src/shims/readline.ts +110 -0
- package/src/shims/rollup.ts +80 -0
- package/src/shims/sentry.ts +133 -0
- package/src/shims/stream.ts +1126 -0
- package/src/shims/tls.ts +95 -0
- package/src/shims/tty.ts +64 -0
- package/src/shims/url.ts +171 -0
- package/src/shims/util.ts +312 -0
- package/src/shims/v8.ts +113 -0
- package/src/shims/vfs-adapter.ts +402 -0
- package/src/shims/vm.ts +83 -0
- package/src/shims/worker_threads.ts +111 -0
- package/src/shims/ws.ts +382 -0
- package/src/shims/zlib.ts +289 -0
- package/src/transform.ts +313 -0
- package/src/types/external.d.ts +67 -0
- package/src/virtual-fs.ts +903 -0
- package/src/vite-demo.ts +577 -0
- package/src/worker/runtime-worker.ts +128 -0
- package/src/worker-runtime.ts +145 -0
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* WorkerRuntime - Runs code in a Web Worker for non-blocking execution
|
|
3
|
+
*
|
|
4
|
+
* This class provides the same IRuntime interface as Runtime,
|
|
5
|
+
* but executes code in a separate Web Worker thread.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
import { wrap, proxy, Remote } from 'comlink';
|
|
9
|
+
import type { VirtualFS } from './virtual-fs';
|
|
10
|
+
import type { IRuntime, IExecuteResult, IRuntimeOptions, VFSSnapshot } from './runtime-interface';
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* Type for the worker API
|
|
14
|
+
*/
|
|
15
|
+
interface WorkerApi {
|
|
16
|
+
init(vfsSnapshot: VFSSnapshot, options: IRuntimeOptions): void;
|
|
17
|
+
setConsoleCallback(callback: ((method: string, args: unknown[]) => void) | null): void;
|
|
18
|
+
syncFile(path: string, content: string | null): void;
|
|
19
|
+
execute(code: string, filename?: string): Promise<IExecuteResult>;
|
|
20
|
+
runFile(filename: string): Promise<IExecuteResult>;
|
|
21
|
+
clearCache(): void;
|
|
22
|
+
getVFSSnapshot(): VFSSnapshot | null;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* WorkerRuntime - Executes code in a Web Worker
|
|
27
|
+
*/
|
|
28
|
+
export class WorkerRuntime implements IRuntime {
|
|
29
|
+
private worker: Worker;
|
|
30
|
+
private workerApi: Remote<WorkerApi>;
|
|
31
|
+
private vfs: VirtualFS;
|
|
32
|
+
private options: IRuntimeOptions;
|
|
33
|
+
private initialized: Promise<void>;
|
|
34
|
+
private changeListener: ((path: string, content: string) => void) | null = null;
|
|
35
|
+
private deleteListener: ((path: string) => void) | null = null;
|
|
36
|
+
|
|
37
|
+
constructor(vfs: VirtualFS, options: IRuntimeOptions = {}) {
|
|
38
|
+
this.vfs = vfs;
|
|
39
|
+
this.options = options;
|
|
40
|
+
|
|
41
|
+
// Create the worker
|
|
42
|
+
// Using Vite's worker import syntax
|
|
43
|
+
this.worker = new Worker(
|
|
44
|
+
new URL('./worker/runtime-worker.ts', import.meta.url),
|
|
45
|
+
{ type: 'module' }
|
|
46
|
+
);
|
|
47
|
+
|
|
48
|
+
// Wrap with Comlink
|
|
49
|
+
this.workerApi = wrap<WorkerApi>(this.worker);
|
|
50
|
+
|
|
51
|
+
// Initialize the worker
|
|
52
|
+
this.initialized = this.initWorker();
|
|
53
|
+
|
|
54
|
+
// Set up VFS change listeners
|
|
55
|
+
this.setupVFSListeners();
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
/**
|
|
59
|
+
* Initialize the worker with VFS snapshot and options
|
|
60
|
+
*/
|
|
61
|
+
private async initWorker(): Promise<void> {
|
|
62
|
+
const snapshot = this.vfs.toSnapshot();
|
|
63
|
+
|
|
64
|
+
// Create options without the onConsole callback (we'll set it separately via proxy)
|
|
65
|
+
const workerOptions: IRuntimeOptions = {
|
|
66
|
+
cwd: this.options.cwd,
|
|
67
|
+
env: this.options.env,
|
|
68
|
+
};
|
|
69
|
+
|
|
70
|
+
await this.workerApi.init(snapshot, workerOptions);
|
|
71
|
+
|
|
72
|
+
// Set up console forwarding if callback provided
|
|
73
|
+
if (this.options.onConsole) {
|
|
74
|
+
await this.workerApi.setConsoleCallback(
|
|
75
|
+
proxy(this.options.onConsole)
|
|
76
|
+
);
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
console.log('[WorkerRuntime] Worker initialized');
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
/**
|
|
83
|
+
* Set up listeners for VFS changes to sync to worker
|
|
84
|
+
*/
|
|
85
|
+
private setupVFSListeners(): void {
|
|
86
|
+
// Listen for file changes
|
|
87
|
+
this.changeListener = (path: string, content: string) => {
|
|
88
|
+
this.workerApi.syncFile(path, content);
|
|
89
|
+
};
|
|
90
|
+
this.vfs.on('change', this.changeListener);
|
|
91
|
+
|
|
92
|
+
// Listen for file deletions
|
|
93
|
+
this.deleteListener = (path: string) => {
|
|
94
|
+
this.workerApi.syncFile(path, null);
|
|
95
|
+
};
|
|
96
|
+
this.vfs.on('delete', this.deleteListener);
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
/**
|
|
100
|
+
* Execute code in the worker
|
|
101
|
+
*/
|
|
102
|
+
async execute(code: string, filename?: string): Promise<IExecuteResult> {
|
|
103
|
+
await this.initialized;
|
|
104
|
+
return this.workerApi.execute(code, filename);
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
/**
|
|
108
|
+
* Run a file from the VFS in the worker
|
|
109
|
+
*/
|
|
110
|
+
async runFile(filename: string): Promise<IExecuteResult> {
|
|
111
|
+
await this.initialized;
|
|
112
|
+
return this.workerApi.runFile(filename);
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
/**
|
|
116
|
+
* Clear the module cache in the worker
|
|
117
|
+
*/
|
|
118
|
+
clearCache(): void {
|
|
119
|
+
this.workerApi.clearCache();
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
/**
|
|
123
|
+
* Get the VFS (main thread instance)
|
|
124
|
+
*/
|
|
125
|
+
getVFS(): VirtualFS {
|
|
126
|
+
return this.vfs;
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
/**
|
|
130
|
+
* Terminate the worker
|
|
131
|
+
*/
|
|
132
|
+
terminate(): void {
|
|
133
|
+
// Remove VFS listeners
|
|
134
|
+
if (this.changeListener) {
|
|
135
|
+
this.vfs.off('change', this.changeListener);
|
|
136
|
+
}
|
|
137
|
+
if (this.deleteListener) {
|
|
138
|
+
this.vfs.off('delete', this.deleteListener);
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
// Terminate the worker
|
|
142
|
+
this.worker.terminate();
|
|
143
|
+
console.log('[WorkerRuntime] Worker terminated');
|
|
144
|
+
}
|
|
145
|
+
}
|