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,49 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Next.js Demo - Running Next.js-style app in the browser using our Node.js shims
|
|
3
|
+
*/
|
|
4
|
+
import { VirtualFS } from './virtual-fs';
|
|
5
|
+
import { Runtime } from './runtime';
|
|
6
|
+
import { createRuntime } from './create-runtime';
|
|
7
|
+
import type { IRuntime } from './runtime-interface';
|
|
8
|
+
import { NextDevServer } from './frameworks/next-dev-server';
|
|
9
|
+
import { PackageManager, InstallOptions, InstallResult } from './npm';
|
|
10
|
+
/**
|
|
11
|
+
* Create a Next.js project structure in the virtual filesystem
|
|
12
|
+
*/
|
|
13
|
+
export declare function createNextProject(vfs: VirtualFS): void;
|
|
14
|
+
/**
|
|
15
|
+
* Create a Next.js App Router project structure in the virtual filesystem
|
|
16
|
+
*/
|
|
17
|
+
export declare function createNextAppRouterProject(vfs: VirtualFS): void;
|
|
18
|
+
/**
|
|
19
|
+
* Initialize the Next.js demo
|
|
20
|
+
*/
|
|
21
|
+
export declare function initNextDemo(outputElement: HTMLElement, options?: {
|
|
22
|
+
useWorker?: boolean;
|
|
23
|
+
}): Promise<{
|
|
24
|
+
vfs: VirtualFS;
|
|
25
|
+
runtime: IRuntime;
|
|
26
|
+
}>;
|
|
27
|
+
/**
|
|
28
|
+
* Start the Next.js dev server using Service Worker approach
|
|
29
|
+
*/
|
|
30
|
+
export declare function startNextDevServer(vfs: VirtualFS, options?: {
|
|
31
|
+
port?: number;
|
|
32
|
+
log?: (message: string) => void;
|
|
33
|
+
}): Promise<{
|
|
34
|
+
server: NextDevServer;
|
|
35
|
+
url: string;
|
|
36
|
+
stop: () => void;
|
|
37
|
+
}>;
|
|
38
|
+
/**
|
|
39
|
+
* Initialize the Next.js App Router demo
|
|
40
|
+
*/
|
|
41
|
+
export declare function initNextAppRouterDemo(outputElement: HTMLElement, options?: {
|
|
42
|
+
useWorker?: boolean;
|
|
43
|
+
}): Promise<{
|
|
44
|
+
vfs: VirtualFS;
|
|
45
|
+
runtime: IRuntime;
|
|
46
|
+
}>;
|
|
47
|
+
export { VirtualFS, Runtime, NextDevServer, PackageManager, createRuntime };
|
|
48
|
+
export type { InstallOptions, InstallResult, IRuntime };
|
|
49
|
+
//# sourceMappingURL=next-demo.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"next-demo.d.ts","sourceRoot":"","sources":["../src/next-demo.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAG7D,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAEtE;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,SAAS,GAAG,IAAI,CAwzBtD;AAED;;GAEG;AACH,wBAAgB,0BAA0B,CAAC,GAAG,EAAE,SAAS,GAAG,IAAI,CA4sB/D;AAED;;GAEG;AACH,wBAAsB,YAAY,CAChC,aAAa,EAAE,WAAW,EAC1B,OAAO,GAAE;IAAE,SAAS,CAAC,EAAE,OAAO,CAAA;CAAO,GACpC,OAAO,CAAC;IAAE,GAAG,EAAE,SAAS,CAAC;IAAC,OAAO,EAAE,QAAQ,CAAA;CAAE,CAAC,CA6ChD;AAED;;GAEG;AACH,wBAAsB,kBAAkB,CACtC,GAAG,EAAE,SAAS,EACd,OAAO,GAAE;IACP,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;CAC5B,GACL,OAAO,CAAC;IACT,MAAM,EAAE,aAAa,CAAC;IACtB,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,IAAI,CAAC;CAClB,CAAC,CAmDD;AAgDD;;GAEG;AACH,wBAAsB,qBAAqB,CACzC,aAAa,EAAE,WAAW,EAC1B,OAAO,GAAE;IAAE,SAAS,CAAC,EAAE,OAAO,CAAA;CAAO,GACpC,OAAO,CAAC;IAAE,GAAG,EAAE,SAAS,CAAC;IAAC,OAAO,EAAE,QAAQ,CAAA;CAAE,CAAC,CA6ChD;AAGD,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,aAAa,EAAE,CAAC;AAC5E,YAAY,EAAE,cAAc,EAAE,aAAa,EAAE,QAAQ,EAAE,CAAC"}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* npm Package Manager
|
|
3
|
+
* Orchestrates package installation into the virtual file system
|
|
4
|
+
*/
|
|
5
|
+
import { VirtualFS } from '../virtual-fs';
|
|
6
|
+
import { RegistryOptions } from './registry';
|
|
7
|
+
import { ResolvedPackage } from './resolver';
|
|
8
|
+
export interface InstallOptions {
|
|
9
|
+
registry?: string;
|
|
10
|
+
save?: boolean;
|
|
11
|
+
saveDev?: boolean;
|
|
12
|
+
includeDev?: boolean;
|
|
13
|
+
includeOptional?: boolean;
|
|
14
|
+
onProgress?: (message: string) => void;
|
|
15
|
+
/** Transform ESM packages to CJS after install (default: true) */
|
|
16
|
+
transform?: boolean;
|
|
17
|
+
}
|
|
18
|
+
export interface InstallResult {
|
|
19
|
+
installed: Map<string, ResolvedPackage>;
|
|
20
|
+
added: string[];
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* npm Package Manager for VirtualFS
|
|
24
|
+
*/
|
|
25
|
+
export declare class PackageManager {
|
|
26
|
+
private vfs;
|
|
27
|
+
private registry;
|
|
28
|
+
private cwd;
|
|
29
|
+
constructor(vfs: VirtualFS, options?: {
|
|
30
|
+
cwd?: string;
|
|
31
|
+
} & RegistryOptions);
|
|
32
|
+
/**
|
|
33
|
+
* Install a package and its dependencies
|
|
34
|
+
*/
|
|
35
|
+
install(packageSpec: string, options?: InstallOptions): Promise<InstallResult>;
|
|
36
|
+
/**
|
|
37
|
+
* Install all dependencies from package.json
|
|
38
|
+
*/
|
|
39
|
+
installFromPackageJson(options?: InstallOptions): Promise<InstallResult>;
|
|
40
|
+
/**
|
|
41
|
+
* Install resolved packages to node_modules
|
|
42
|
+
*/
|
|
43
|
+
private installResolved;
|
|
44
|
+
/**
|
|
45
|
+
* Write lockfile with resolved versions
|
|
46
|
+
*/
|
|
47
|
+
private writeLockfile;
|
|
48
|
+
/**
|
|
49
|
+
* Update package.json with new dependency
|
|
50
|
+
*/
|
|
51
|
+
private updatePackageJson;
|
|
52
|
+
/**
|
|
53
|
+
* List installed packages
|
|
54
|
+
*/
|
|
55
|
+
list(): Record<string, string>;
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Parse a package specifier into name and version
|
|
59
|
+
* Examples: "express", "express@4.18.2", "@types/node@18"
|
|
60
|
+
*/
|
|
61
|
+
declare function parsePackageSpec(spec: string): {
|
|
62
|
+
name: string;
|
|
63
|
+
version?: string;
|
|
64
|
+
};
|
|
65
|
+
export declare function install(packageSpec: string, vfs: VirtualFS, options?: InstallOptions): Promise<InstallResult>;
|
|
66
|
+
export { Registry } from './registry';
|
|
67
|
+
export type { RegistryOptions, PackageVersion, PackageManifest } from './registry';
|
|
68
|
+
export type { ResolvedPackage, ResolveOptions } from './resolver';
|
|
69
|
+
export type { ExtractOptions } from './tarball';
|
|
70
|
+
export { parsePackageSpec };
|
|
71
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/npm/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC1C,OAAO,EAAY,eAAe,EAAE,MAAM,YAAY,CAAC;AACvD,OAAO,EAGL,eAAe,EAEhB,MAAM,YAAY,CAAC;AAKpB,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IACvC,kEAAkE;IAClE,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;IACxC,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB;AAED;;GAEG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,GAAG,CAAY;IACvB,OAAO,CAAC,QAAQ,CAAW;IAC3B,OAAO,CAAC,GAAG,CAAS;gBAER,GAAG,EAAE,SAAS,EAAE,OAAO,GAAE;QAAE,GAAG,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,eAAoB;IAM5E;;OAEG;IACG,OAAO,CACX,WAAW,EAAE,MAAM,EACnB,OAAO,GAAE,cAAmB,GAC3B,OAAO,CAAC,aAAa,CAAC;IAoCzB;;OAEG;IACG,sBAAsB,CAAC,OAAO,GAAE,cAAmB,GAAG,OAAO,CAAC,aAAa,CAAC;IA6BlF;;OAEG;YACW,eAAe;IAkF7B;;OAEG;YACW,aAAa;IAgB3B;;OAEG;YACW,iBAAiB;IAwB/B;;OAEG;IACH,IAAI,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;CAqC/B;AAED;;;GAGG;AACH,iBAAS,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,CA+B1E;AAGD,wBAAsB,OAAO,CAC3B,WAAW,EAAE,MAAM,EACnB,GAAG,EAAE,SAAS,EACd,OAAO,CAAC,EAAE,cAAc,GACvB,OAAO,CAAC,aAAa,CAAC,CAGxB;AAGD,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,YAAY,EAAE,eAAe,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AACnF,YAAY,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAClE,YAAY,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAChD,OAAO,EAAE,gBAAgB,EAAE,CAAC"}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* npm Registry Client
|
|
3
|
+
* Fetches package metadata from npm registry
|
|
4
|
+
*/
|
|
5
|
+
export interface PackageVersion {
|
|
6
|
+
name: string;
|
|
7
|
+
version: string;
|
|
8
|
+
dependencies?: Record<string, string>;
|
|
9
|
+
devDependencies?: Record<string, string>;
|
|
10
|
+
peerDependencies?: Record<string, string>;
|
|
11
|
+
optionalDependencies?: Record<string, string>;
|
|
12
|
+
dist: {
|
|
13
|
+
tarball: string;
|
|
14
|
+
shasum: string;
|
|
15
|
+
integrity?: string;
|
|
16
|
+
};
|
|
17
|
+
main?: string;
|
|
18
|
+
module?: string;
|
|
19
|
+
exports?: Record<string, unknown>;
|
|
20
|
+
bin?: Record<string, string> | string;
|
|
21
|
+
}
|
|
22
|
+
export interface PackageManifest {
|
|
23
|
+
name: string;
|
|
24
|
+
'dist-tags': {
|
|
25
|
+
latest: string;
|
|
26
|
+
[tag: string]: string;
|
|
27
|
+
};
|
|
28
|
+
versions: Record<string, PackageVersion>;
|
|
29
|
+
time?: Record<string, string>;
|
|
30
|
+
}
|
|
31
|
+
export interface RegistryOptions {
|
|
32
|
+
registry?: string;
|
|
33
|
+
cache?: Map<string, PackageManifest>;
|
|
34
|
+
}
|
|
35
|
+
export declare class Registry {
|
|
36
|
+
private registryUrl;
|
|
37
|
+
private cache;
|
|
38
|
+
constructor(options?: RegistryOptions);
|
|
39
|
+
/**
|
|
40
|
+
* Fetch package manifest (all versions metadata)
|
|
41
|
+
*/
|
|
42
|
+
getPackageManifest(packageName: string): Promise<PackageManifest>;
|
|
43
|
+
/**
|
|
44
|
+
* Get specific version metadata
|
|
45
|
+
*/
|
|
46
|
+
getPackageVersion(packageName: string, version: string): Promise<PackageVersion>;
|
|
47
|
+
/**
|
|
48
|
+
* Get latest version number
|
|
49
|
+
*/
|
|
50
|
+
getLatestVersion(packageName: string): Promise<string>;
|
|
51
|
+
/**
|
|
52
|
+
* Get all available versions
|
|
53
|
+
*/
|
|
54
|
+
getVersions(packageName: string): Promise<string[]>;
|
|
55
|
+
/**
|
|
56
|
+
* Download tarball as ArrayBuffer
|
|
57
|
+
*/
|
|
58
|
+
downloadTarball(tarballUrl: string): Promise<ArrayBuffer>;
|
|
59
|
+
/**
|
|
60
|
+
* Clear the cache
|
|
61
|
+
*/
|
|
62
|
+
clearCache(): void;
|
|
63
|
+
}
|
|
64
|
+
export declare const registry: Registry;
|
|
65
|
+
export default Registry;
|
|
66
|
+
//# sourceMappingURL=registry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/npm/registry.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACtC,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACzC,gBAAgB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC1C,oBAAoB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC9C,IAAI,EAAE;QACJ,OAAO,EAAE,MAAM,CAAC;QAChB,MAAM,EAAE,MAAM,CAAC;QACf,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB,CAAC;IACF,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClC,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM,CAAC;CACvC;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE;QACX,MAAM,EAAE,MAAM,CAAC;QACf,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAC;KACvB,CAAC;IACF,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;IACzC,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC/B;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;CACtC;AAID,qBAAa,QAAQ;IACnB,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,KAAK,CAA+B;gBAEhC,OAAO,GAAE,eAAoB;IAKzC;;OAEG;IACG,kBAAkB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC;IA6BvE;;OAEG;IACG,iBAAiB,CACrB,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,cAAc,CAAC;IAgB1B;;OAEG;IACG,gBAAgB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAK5D;;OAEG;IACG,WAAW,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAKzD;;OAEG;IACG,eAAe,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAU/D;;OAEG;IACH,UAAU,IAAI,IAAI;CAGnB;AAWD,eAAO,MAAM,QAAQ,UAAiB,CAAC;AAEvC,eAAe,QAAQ,CAAC"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Dependency Resolver
|
|
3
|
+
* Resolves full dependency tree with semver version constraints
|
|
4
|
+
*/
|
|
5
|
+
import { Registry } from './registry';
|
|
6
|
+
export interface ResolvedPackage {
|
|
7
|
+
name: string;
|
|
8
|
+
version: string;
|
|
9
|
+
tarballUrl: string;
|
|
10
|
+
dependencies: Record<string, string>;
|
|
11
|
+
}
|
|
12
|
+
export interface ResolveOptions {
|
|
13
|
+
registry?: Registry;
|
|
14
|
+
includeDev?: boolean;
|
|
15
|
+
includeOptional?: boolean;
|
|
16
|
+
onProgress?: (message: string) => void;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Parse a semver version string into components
|
|
20
|
+
*/
|
|
21
|
+
declare function parseVersion(version: string): {
|
|
22
|
+
major: number;
|
|
23
|
+
minor: number;
|
|
24
|
+
patch: number;
|
|
25
|
+
prerelease?: string;
|
|
26
|
+
} | null;
|
|
27
|
+
/**
|
|
28
|
+
* Compare two semver versions
|
|
29
|
+
* Returns: -1 if a < b, 0 if a == b, 1 if a > b
|
|
30
|
+
*/
|
|
31
|
+
declare function compareVersions(a: string, b: string): number;
|
|
32
|
+
/**
|
|
33
|
+
* Check if a version satisfies a semver range
|
|
34
|
+
*/
|
|
35
|
+
declare function satisfies(version: string, range: string): boolean;
|
|
36
|
+
/**
|
|
37
|
+
* Find the best matching version from available versions
|
|
38
|
+
*/
|
|
39
|
+
declare function findBestVersion(versions: string[], range: string): string | null;
|
|
40
|
+
/**
|
|
41
|
+
* Resolve all dependencies for a package
|
|
42
|
+
*/
|
|
43
|
+
export declare function resolveDependencies(packageName: string, versionRange?: string, options?: ResolveOptions): Promise<Map<string, ResolvedPackage>>;
|
|
44
|
+
/**
|
|
45
|
+
* Resolve dependencies from a package.json
|
|
46
|
+
*/
|
|
47
|
+
export declare function resolveFromPackageJson(packageJson: {
|
|
48
|
+
dependencies?: Record<string, string>;
|
|
49
|
+
devDependencies?: Record<string, string>;
|
|
50
|
+
}, options?: ResolveOptions): Promise<Map<string, ResolvedPackage>>;
|
|
51
|
+
export { parseVersion, compareVersions, satisfies, findBestVersion };
|
|
52
|
+
//# sourceMappingURL=resolver.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolver.d.ts","sourceRoot":"","sources":["../../src/npm/resolver.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,QAAQ,EAAkB,MAAM,YAAY,CAAC;AAEtD,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACtC;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;CACxC;AASD;;GAEG;AACH,iBAAS,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG;IACtC,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,GAAG,IAAI,CAUP;AAED;;;GAGG;AACH,iBAAS,eAAe,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CA0BrD;AAED;;GAEG;AACH,iBAAS,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CA0I1D;AAED;;GAEG;AACH,iBAAS,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAYzE;AAED;;GAEG;AACH,wBAAsB,mBAAmB,CACvC,WAAW,EAAE,MAAM,EACnB,YAAY,GAAE,MAAiB,EAC/B,OAAO,GAAE,cAAmB,GAC3B,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC,CAYvC;AAED;;GAEG;AACH,wBAAsB,sBAAsB,CAC1C,WAAW,EAAE;IACX,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACtC,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC1C,EACD,OAAO,GAAE,cAAmB,GAC3B,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC,CAoBvC;AA8FD,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,SAAS,EAAE,eAAe,EAAE,CAAC"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tarball Extractor
|
|
3
|
+
* Downloads and extracts npm package tarballs into the virtual file system
|
|
4
|
+
*/
|
|
5
|
+
import { VirtualFS } from '../virtual-fs';
|
|
6
|
+
export interface ExtractOptions {
|
|
7
|
+
stripComponents?: number;
|
|
8
|
+
filter?: (path: string) => boolean;
|
|
9
|
+
onProgress?: (message: string) => void;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Decompress gzipped data
|
|
13
|
+
*/
|
|
14
|
+
export declare function decompress(data: ArrayBuffer | Uint8Array): Uint8Array;
|
|
15
|
+
/**
|
|
16
|
+
* Extract a tarball to the virtual file system
|
|
17
|
+
*/
|
|
18
|
+
export declare function extractTarball(tarballData: ArrayBuffer | Uint8Array, vfs: VirtualFS, destPath: string, options?: ExtractOptions): string[];
|
|
19
|
+
/**
|
|
20
|
+
* Download and extract a tarball from URL
|
|
21
|
+
*/
|
|
22
|
+
export declare function downloadAndExtract(url: string, vfs: VirtualFS, destPath: string, options?: ExtractOptions): Promise<string[]>;
|
|
23
|
+
declare const _default: {
|
|
24
|
+
decompress: typeof decompress;
|
|
25
|
+
extractTarball: typeof extractTarball;
|
|
26
|
+
downloadAndExtract: typeof downloadAndExtract;
|
|
27
|
+
};
|
|
28
|
+
export default _default;
|
|
29
|
+
//# sourceMappingURL=tarball.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tarball.d.ts","sourceRoot":"","sources":["../../src/npm/tarball.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAG1C,MAAM,WAAW,cAAc;IAC7B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC;IACnC,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;CACxC;AAoGD;;GAEG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,WAAW,GAAG,UAAU,GAAG,UAAU,CAGrE;AAED;;GAEG;AACH,wBAAgB,cAAc,CAC5B,WAAW,EAAE,WAAW,GAAG,UAAU,EACrC,GAAG,EAAE,SAAS,EACd,QAAQ,EAAE,MAAM,EAChB,OAAO,GAAE,cAAmB,GAC3B,MAAM,EAAE,CAkDV;AAED;;GAEG;AACH,wBAAsB,kBAAkB,CACtC,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,SAAS,EACd,QAAQ,EAAE,MAAM,EAChB,OAAO,GAAE,cAAmB,GAC3B,OAAO,CAAC,MAAM,EAAE,CAAC,CAanB;;;;;;AAED,wBAIE"}
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Runtime Interface - Common interface for main-thread and worker runtimes
|
|
3
|
+
*/
|
|
4
|
+
import type { VirtualFS } from './virtual-fs';
|
|
5
|
+
export interface IRuntimeOptions {
|
|
6
|
+
cwd?: string;
|
|
7
|
+
env?: Record<string, string>;
|
|
8
|
+
onConsole?: (method: string, args: unknown[]) => void;
|
|
9
|
+
}
|
|
10
|
+
export interface IModule {
|
|
11
|
+
id: string;
|
|
12
|
+
filename: string;
|
|
13
|
+
exports: unknown;
|
|
14
|
+
loaded: boolean;
|
|
15
|
+
children: IModule[];
|
|
16
|
+
paths: string[];
|
|
17
|
+
}
|
|
18
|
+
export interface IExecuteResult {
|
|
19
|
+
exports: unknown;
|
|
20
|
+
module: IModule;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Common runtime interface implemented by both MainThreadRuntime and WorkerRuntime
|
|
24
|
+
*/
|
|
25
|
+
export interface IRuntime {
|
|
26
|
+
/**
|
|
27
|
+
* Execute code as a module
|
|
28
|
+
*/
|
|
29
|
+
execute(code: string, filename?: string): Promise<IExecuteResult>;
|
|
30
|
+
/**
|
|
31
|
+
* Run a file from the virtual file system
|
|
32
|
+
*/
|
|
33
|
+
runFile(filename: string): Promise<IExecuteResult>;
|
|
34
|
+
/**
|
|
35
|
+
* Clear the module cache
|
|
36
|
+
*/
|
|
37
|
+
clearCache(): void;
|
|
38
|
+
/**
|
|
39
|
+
* Get the virtual file system (only available on main thread runtime)
|
|
40
|
+
*/
|
|
41
|
+
getVFS?(): VirtualFS;
|
|
42
|
+
/**
|
|
43
|
+
* Terminate the runtime (only applicable to worker runtime)
|
|
44
|
+
*/
|
|
45
|
+
terminate?(): void;
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Options for creating a runtime
|
|
49
|
+
*/
|
|
50
|
+
export interface CreateRuntimeOptions extends IRuntimeOptions {
|
|
51
|
+
/**
|
|
52
|
+
* Cross-origin sandbox URL for secure code execution.
|
|
53
|
+
* When set, code runs in a cross-origin iframe, providing browser-enforced
|
|
54
|
+
* isolation from cookies, localStorage, and IndexedDB.
|
|
55
|
+
*
|
|
56
|
+
* Example: 'https://myapp-sandbox.vercel.app'
|
|
57
|
+
*/
|
|
58
|
+
sandbox?: string;
|
|
59
|
+
/**
|
|
60
|
+
* Explicitly allow same-origin execution (less secure).
|
|
61
|
+
* Required when not using sandbox mode.
|
|
62
|
+
*
|
|
63
|
+
* WARNING: Same-origin execution allows untrusted code to access
|
|
64
|
+
* cookies, localStorage, and other same-origin resources.
|
|
65
|
+
* Only use this for trusted code or demos.
|
|
66
|
+
*/
|
|
67
|
+
dangerouslyAllowSameOrigin?: boolean;
|
|
68
|
+
/**
|
|
69
|
+
* Whether to use a Web Worker for code execution (same-origin only)
|
|
70
|
+
* - false (default): Execute on main thread
|
|
71
|
+
* - true: Execute in a Web Worker
|
|
72
|
+
* - 'auto': Use worker if available, fallback to main thread
|
|
73
|
+
*
|
|
74
|
+
* Note: Workers provide thread isolation but NOT origin isolation.
|
|
75
|
+
* They still have access to IndexedDB and can make network requests.
|
|
76
|
+
*/
|
|
77
|
+
useWorker?: boolean | 'auto';
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* VFS snapshot for transferring to worker
|
|
81
|
+
*/
|
|
82
|
+
export interface VFSSnapshot {
|
|
83
|
+
files: VFSFileEntry[];
|
|
84
|
+
}
|
|
85
|
+
export interface VFSFileEntry {
|
|
86
|
+
path: string;
|
|
87
|
+
type: 'file' | 'directory';
|
|
88
|
+
content?: string;
|
|
89
|
+
}
|
|
90
|
+
//# sourceMappingURL=runtime-interface.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runtime-interface.d.ts","sourceRoot":"","sources":["../src/runtime-interface.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAE9C,MAAM,WAAW,eAAe;IAC9B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B,SAAS,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC;CACvD;AAED,MAAM,WAAW,OAAO;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,OAAO,CAAC;IAChB,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpB,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB;AAED,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,OAAO,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,QAAQ;IACvB;;OAEG;IACH,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;IAElE;;OAEG;IACH,OAAO,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;IAEnD;;OAEG;IACH,UAAU,IAAI,IAAI,CAAC;IAEnB;;OAEG;IACH,MAAM,CAAC,IAAI,SAAS,CAAC;IAErB;;OAEG;IACH,SAAS,CAAC,IAAI,IAAI,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,oBAAqB,SAAQ,eAAe;IAC3D;;;;;;OAMG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB;;;;;;;OAOG;IACH,0BAA0B,CAAC,EAAE,OAAO,CAAC;IAErC;;;;;;;;OAQG;IACH,SAAS,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;CAC9B;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,YAAY,EAAE,CAAC;CACvB;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,GAAG,WAAW,CAAC;IAC3B,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB"}
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Runtime - Execute user code with shimmed Node.js globals
|
|
3
|
+
*
|
|
4
|
+
* ESM to CJS transformation is now handled during npm install by transform.ts
|
|
5
|
+
* using esbuild-wasm. This runtime just executes the pre-transformed CJS code.
|
|
6
|
+
*/
|
|
7
|
+
import { VirtualFS } from './virtual-fs';
|
|
8
|
+
import type { IExecuteResult } from './runtime-interface';
|
|
9
|
+
import { Process } from './shims/process';
|
|
10
|
+
export interface Module {
|
|
11
|
+
id: string;
|
|
12
|
+
filename: string;
|
|
13
|
+
exports: unknown;
|
|
14
|
+
loaded: boolean;
|
|
15
|
+
children: Module[];
|
|
16
|
+
paths: string[];
|
|
17
|
+
}
|
|
18
|
+
export interface RuntimeOptions {
|
|
19
|
+
cwd?: string;
|
|
20
|
+
env?: Record<string, string>;
|
|
21
|
+
onConsole?: (method: string, args: unknown[]) => void;
|
|
22
|
+
}
|
|
23
|
+
export interface RequireFunction {
|
|
24
|
+
(id: string): unknown;
|
|
25
|
+
resolve: (id: string) => string;
|
|
26
|
+
cache: Record<string, Module>;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Runtime class for executing code in virtual environment
|
|
30
|
+
* Note: This class has sync methods for backward compatibility.
|
|
31
|
+
* Use createRuntime() factory for IRuntime interface compliance.
|
|
32
|
+
*/
|
|
33
|
+
export declare class Runtime {
|
|
34
|
+
private vfs;
|
|
35
|
+
private fsShim;
|
|
36
|
+
private process;
|
|
37
|
+
private moduleCache;
|
|
38
|
+
private options;
|
|
39
|
+
constructor(vfs: VirtualFS, options?: RuntimeOptions);
|
|
40
|
+
/**
|
|
41
|
+
* Set up a polyfilled TextDecoder that handles binary encodings
|
|
42
|
+
*/
|
|
43
|
+
private setupTextDecoderPolyfill;
|
|
44
|
+
/**
|
|
45
|
+
* Execute code as a module (synchronous - backward compatible)
|
|
46
|
+
*/
|
|
47
|
+
execute(code: string, filename?: string): {
|
|
48
|
+
exports: unknown;
|
|
49
|
+
module: Module;
|
|
50
|
+
};
|
|
51
|
+
/**
|
|
52
|
+
* Execute code as a module (async version for IRuntime interface)
|
|
53
|
+
* Alias: executeSync() is the same as execute() for backward compatibility
|
|
54
|
+
*/
|
|
55
|
+
executeSync: (code: string, filename?: string) => {
|
|
56
|
+
exports: unknown;
|
|
57
|
+
module: Module;
|
|
58
|
+
};
|
|
59
|
+
/**
|
|
60
|
+
* Execute code as a module (async - for IRuntime interface)
|
|
61
|
+
*/
|
|
62
|
+
executeAsync(code: string, filename?: string): Promise<IExecuteResult>;
|
|
63
|
+
/**
|
|
64
|
+
* Run a file from the virtual file system (synchronous - backward compatible)
|
|
65
|
+
*/
|
|
66
|
+
runFile(filename: string): {
|
|
67
|
+
exports: unknown;
|
|
68
|
+
module: Module;
|
|
69
|
+
};
|
|
70
|
+
/**
|
|
71
|
+
* Alias for runFile (backward compatibility)
|
|
72
|
+
*/
|
|
73
|
+
runFileSync: (filename: string) => {
|
|
74
|
+
exports: unknown;
|
|
75
|
+
module: Module;
|
|
76
|
+
};
|
|
77
|
+
/**
|
|
78
|
+
* Run a file from the virtual file system (async - for IRuntime interface)
|
|
79
|
+
*/
|
|
80
|
+
runFileAsync(filename: string): Promise<IExecuteResult>;
|
|
81
|
+
/**
|
|
82
|
+
* Clear the module cache
|
|
83
|
+
*/
|
|
84
|
+
clearCache(): void;
|
|
85
|
+
/**
|
|
86
|
+
* Get the virtual file system
|
|
87
|
+
*/
|
|
88
|
+
getVFS(): VirtualFS;
|
|
89
|
+
/**
|
|
90
|
+
* Get the process object
|
|
91
|
+
*/
|
|
92
|
+
getProcess(): Process;
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Create and execute code in a new runtime (synchronous - backward compatible)
|
|
96
|
+
*/
|
|
97
|
+
export declare function execute(code: string, vfs: VirtualFS, options?: RuntimeOptions): {
|
|
98
|
+
exports: unknown;
|
|
99
|
+
module: Module;
|
|
100
|
+
};
|
|
101
|
+
export type { IRuntime, IExecuteResult, IRuntimeOptions } from './runtime-interface';
|
|
102
|
+
export default Runtime;
|
|
103
|
+
//# sourceMappingURL=runtime.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,KAAK,EAAY,cAAc,EAAmB,MAAM,qBAAqB,CAAC;AAGrF,OAAO,EAAiB,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAqLzD,MAAM,WAAW,MAAM;IACrB,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,OAAO,CAAC;IAChB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB;AAED,MAAM,WAAW,cAAc;IAC7B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B,SAAS,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC;CACvD;AAED,MAAM,WAAW,eAAe;IAC9B,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC;IACtB,OAAO,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,MAAM,CAAC;IAChC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC/B;AA+iBD;;;;GAIG;AACH,qBAAa,OAAO;IAClB,OAAO,CAAC,GAAG,CAAY;IACvB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,OAAO,CAAU;IACzB,OAAO,CAAC,WAAW,CAA8B;IACjD,OAAO,CAAC,OAAO,CAAiB;gBAEpB,GAAG,EAAE,SAAS,EAAE,OAAO,GAAE,cAAmB;IA0BxD;;OAEG;IACH,OAAO,CAAC,wBAAwB;IA+EhC;;OAEG;IACH,OAAO,CACL,IAAI,EAAE,MAAM,EACZ,QAAQ,GAAE,MAAoB,GAC7B;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE;IA4EvC;;;OAGG;IACH,WAAW,SAlFH,MAAM,aACF,MAAM,KACf;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAgFZ;IAE3B;;OAEG;IACG,YAAY,CAChB,IAAI,EAAE,MAAM,EACZ,QAAQ,GAAE,MAAoB,GAC7B,OAAO,CAAC,cAAc,CAAC;IAI1B;;OAEG;IACH,OAAO,CAAC,QAAQ,EAAE,MAAM,GAAG;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE;IAK/D;;OAEG;IACH,WAAW,aARO,MAAM,KAAG;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAQpC;IAE3B;;OAEG;IACG,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;IAI7D;;OAEG;IACH,UAAU,IAAI,IAAI;IAIlB;;OAEG;IACH,MAAM,IAAI,SAAS;IAInB;;OAEG;IACH,UAAU,IAAI,OAAO;CAGtB;AAED;;GAEG;AACH,wBAAgB,OAAO,CACrB,IAAI,EAAE,MAAM,EACZ,GAAG,EAAE,SAAS,EACd,OAAO,CAAC,EAAE,cAAc,GACvB;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAGtC;AAGD,YAAY,EAAE,QAAQ,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAErF,eAAe,OAAO,CAAC"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Sandbox Helpers - Generate files for deploying a cross-origin sandbox
|
|
3
|
+
*
|
|
4
|
+
* The sandbox runs on a different origin (e.g., myapp-sandbox.vercel.app)
|
|
5
|
+
* to provide browser-enforced isolation from the main application.
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* HTML template for the sandbox page.
|
|
9
|
+
* This loads almostnode and handles postMessage communication with the parent.
|
|
10
|
+
*
|
|
11
|
+
* @param justNodeUrl - URL to load almostnode from (e.g., unpkg, jsdelivr, or your CDN)
|
|
12
|
+
*/
|
|
13
|
+
export declare function getSandboxHtml(justNodeUrl?: string): string;
|
|
14
|
+
/**
|
|
15
|
+
* Get vercel.json configuration for the sandbox.
|
|
16
|
+
* Sets up CORS headers to allow embedding as a cross-origin iframe.
|
|
17
|
+
*/
|
|
18
|
+
export declare function getSandboxVercelConfig(): object;
|
|
19
|
+
/**
|
|
20
|
+
* Generate all files needed for deploying a sandbox to Vercel.
|
|
21
|
+
*
|
|
22
|
+
* @param justNodeUrl - URL to load almostnode from
|
|
23
|
+
* @returns Object with file names as keys and content as values
|
|
24
|
+
*
|
|
25
|
+
* @example
|
|
26
|
+
* ```typescript
|
|
27
|
+
* import { generateSandboxFiles } from 'almostnode/sandbox-helpers';
|
|
28
|
+
*
|
|
29
|
+
* const files = generateSandboxFiles();
|
|
30
|
+
* // Write files to sandbox/ directory
|
|
31
|
+
* // Deploy to Vercel: cd sandbox && vercel --prod
|
|
32
|
+
* ```
|
|
33
|
+
*/
|
|
34
|
+
export declare function generateSandboxFiles(justNodeUrl?: string): {
|
|
35
|
+
'index.html': string;
|
|
36
|
+
'vercel.json': string;
|
|
37
|
+
};
|
|
38
|
+
/**
|
|
39
|
+
* Instructions for setting up a sandbox on Vercel.
|
|
40
|
+
* Useful for documentation or CLI output.
|
|
41
|
+
*/
|
|
42
|
+
export declare const SANDBOX_SETUP_INSTRUCTIONS: string;
|
|
43
|
+
//# sourceMappingURL=sandbox-helpers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sandbox-helpers.d.ts","sourceRoot":"","sources":["../src/sandbox-helpers.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,WAAW,SAA+C,GAAG,MAAM,CA2FjG;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,IAAI,MAAM,CAY/C;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,oBAAoB,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG;IAC1D,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;CACvB,CAKA;AAED;;;GAGG;AACH,eAAO,MAAM,0BAA0B,QAmB/B,CAAC"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SandboxRuntime - Runs code in a cross-origin iframe for secure execution
|
|
3
|
+
*
|
|
4
|
+
* This provides browser-enforced isolation from cookies, localStorage,
|
|
5
|
+
* sessionStorage, and IndexedDB by running code on a different origin.
|
|
6
|
+
*/
|
|
7
|
+
import type { VirtualFS } from './virtual-fs';
|
|
8
|
+
import type { IRuntime, IExecuteResult, IRuntimeOptions } from './runtime-interface';
|
|
9
|
+
/**
|
|
10
|
+
* SandboxRuntime - Executes code in a cross-origin iframe
|
|
11
|
+
*/
|
|
12
|
+
export declare class SandboxRuntime implements IRuntime {
|
|
13
|
+
private iframe;
|
|
14
|
+
private sandboxOrigin;
|
|
15
|
+
private vfs;
|
|
16
|
+
private options;
|
|
17
|
+
private initialized;
|
|
18
|
+
private pending;
|
|
19
|
+
private messageId;
|
|
20
|
+
private changeListener;
|
|
21
|
+
private deleteListener;
|
|
22
|
+
private messageHandler;
|
|
23
|
+
constructor(sandboxUrl: string, vfs: VirtualFS, options?: IRuntimeOptions);
|
|
24
|
+
/**
|
|
25
|
+
* Set up the message event handler
|
|
26
|
+
*/
|
|
27
|
+
private setupMessageHandler;
|
|
28
|
+
/**
|
|
29
|
+
* Wait for the sandbox iframe to signal it's ready
|
|
30
|
+
*/
|
|
31
|
+
private waitForReady;
|
|
32
|
+
/**
|
|
33
|
+
* Initialize the sandbox with VFS snapshot and options
|
|
34
|
+
*/
|
|
35
|
+
private initSandbox;
|
|
36
|
+
/**
|
|
37
|
+
* Set up listeners for VFS changes to sync to sandbox
|
|
38
|
+
*/
|
|
39
|
+
private setupVFSListeners;
|
|
40
|
+
/**
|
|
41
|
+
* Send a message and wait for response
|
|
42
|
+
*/
|
|
43
|
+
private sendAndWait;
|
|
44
|
+
/**
|
|
45
|
+
* Execute code in the sandbox
|
|
46
|
+
*/
|
|
47
|
+
execute(code: string, filename?: string): Promise<IExecuteResult>;
|
|
48
|
+
/**
|
|
49
|
+
* Run a file from the VFS in the sandbox
|
|
50
|
+
*/
|
|
51
|
+
runFile(filename: string): Promise<IExecuteResult>;
|
|
52
|
+
/**
|
|
53
|
+
* Clear the module cache in the sandbox
|
|
54
|
+
*/
|
|
55
|
+
clearCache(): void;
|
|
56
|
+
/**
|
|
57
|
+
* Get the VFS (main thread instance)
|
|
58
|
+
*/
|
|
59
|
+
getVFS(): VirtualFS;
|
|
60
|
+
/**
|
|
61
|
+
* Terminate the sandbox
|
|
62
|
+
*/
|
|
63
|
+
terminate(): void;
|
|
64
|
+
}
|
|
65
|
+
//# sourceMappingURL=sandbox-runtime.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sandbox-runtime.d.ts","sourceRoot":"","sources":["../src/sandbox-runtime.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE,eAAe,EAAe,MAAM,qBAAqB,CAAC;AAiBlG;;GAEG;AACH,qBAAa,cAAe,YAAW,QAAQ;IAC7C,OAAO,CAAC,MAAM,CAAoB;IAClC,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,GAAG,CAAY;IACvB,OAAO,CAAC,OAAO,CAAkB;IACjC,OAAO,CAAC,WAAW,CAAgB;IACnC,OAAO,CAAC,OAAO,CAAoG;IACnH,OAAO,CAAC,SAAS,CAAK;IACtB,OAAO,CAAC,cAAc,CAA0D;IAChF,OAAO,CAAC,cAAc,CAAyC;IAC/D,OAAO,CAAC,cAAc,CAAgD;gBAE1D,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,SAAS,EAAE,OAAO,GAAE,eAAoB;IA6B7E;;OAEG;IACH,OAAO,CAAC,mBAAmB;IA2B3B;;OAEG;IACH,OAAO,CAAC,YAAY;IAcpB;;OAEG;YACW,WAAW;IAkBzB;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAsBzB;;OAEG;IACH,OAAO,CAAC,WAAW;IAoBnB;;OAEG;IACG,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;IASvE;;OAEG;IACG,OAAO,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;IAQxD;;OAEG;IACH,UAAU,IAAI,IAAI;IAKlB;;OAEG;IACH,MAAM,IAAI,SAAS;IAInB;;OAEG;IACH,SAAS,IAAI,IAAI;CAyBlB"}
|