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.
Files changed (216) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +731 -0
  3. package/dist/__sw__.js +394 -0
  4. package/dist/ai-chatbot-demo-entry.d.ts +6 -0
  5. package/dist/ai-chatbot-demo-entry.d.ts.map +1 -0
  6. package/dist/ai-chatbot-demo.d.ts +42 -0
  7. package/dist/ai-chatbot-demo.d.ts.map +1 -0
  8. package/dist/assets/runtime-worker-D9x_Ddwz.js +60543 -0
  9. package/dist/assets/runtime-worker-D9x_Ddwz.js.map +1 -0
  10. package/dist/convex-app-demo-entry.d.ts +6 -0
  11. package/dist/convex-app-demo-entry.d.ts.map +1 -0
  12. package/dist/convex-app-demo.d.ts +68 -0
  13. package/dist/convex-app-demo.d.ts.map +1 -0
  14. package/dist/cors-proxy.d.ts +46 -0
  15. package/dist/cors-proxy.d.ts.map +1 -0
  16. package/dist/create-runtime.d.ts +42 -0
  17. package/dist/create-runtime.d.ts.map +1 -0
  18. package/dist/demo.d.ts +6 -0
  19. package/dist/demo.d.ts.map +1 -0
  20. package/dist/dev-server.d.ts +97 -0
  21. package/dist/dev-server.d.ts.map +1 -0
  22. package/dist/frameworks/next-dev-server.d.ts +202 -0
  23. package/dist/frameworks/next-dev-server.d.ts.map +1 -0
  24. package/dist/frameworks/vite-dev-server.d.ts +85 -0
  25. package/dist/frameworks/vite-dev-server.d.ts.map +1 -0
  26. package/dist/index.cjs +14965 -0
  27. package/dist/index.cjs.map +1 -0
  28. package/dist/index.d.ts +71 -0
  29. package/dist/index.d.ts.map +1 -0
  30. package/dist/index.mjs +14867 -0
  31. package/dist/index.mjs.map +1 -0
  32. package/dist/next-demo.d.ts +49 -0
  33. package/dist/next-demo.d.ts.map +1 -0
  34. package/dist/npm/index.d.ts +71 -0
  35. package/dist/npm/index.d.ts.map +1 -0
  36. package/dist/npm/registry.d.ts +66 -0
  37. package/dist/npm/registry.d.ts.map +1 -0
  38. package/dist/npm/resolver.d.ts +52 -0
  39. package/dist/npm/resolver.d.ts.map +1 -0
  40. package/dist/npm/tarball.d.ts +29 -0
  41. package/dist/npm/tarball.d.ts.map +1 -0
  42. package/dist/runtime-interface.d.ts +90 -0
  43. package/dist/runtime-interface.d.ts.map +1 -0
  44. package/dist/runtime.d.ts +103 -0
  45. package/dist/runtime.d.ts.map +1 -0
  46. package/dist/sandbox-helpers.d.ts +43 -0
  47. package/dist/sandbox-helpers.d.ts.map +1 -0
  48. package/dist/sandbox-runtime.d.ts +65 -0
  49. package/dist/sandbox-runtime.d.ts.map +1 -0
  50. package/dist/server-bridge.d.ts +89 -0
  51. package/dist/server-bridge.d.ts.map +1 -0
  52. package/dist/shims/assert.d.ts +51 -0
  53. package/dist/shims/assert.d.ts.map +1 -0
  54. package/dist/shims/async_hooks.d.ts +37 -0
  55. package/dist/shims/async_hooks.d.ts.map +1 -0
  56. package/dist/shims/buffer.d.ts +20 -0
  57. package/dist/shims/buffer.d.ts.map +1 -0
  58. package/dist/shims/child_process-browser.d.ts +92 -0
  59. package/dist/shims/child_process-browser.d.ts.map +1 -0
  60. package/dist/shims/child_process.d.ts +93 -0
  61. package/dist/shims/child_process.d.ts.map +1 -0
  62. package/dist/shims/chokidar.d.ts +55 -0
  63. package/dist/shims/chokidar.d.ts.map +1 -0
  64. package/dist/shims/cluster.d.ts +52 -0
  65. package/dist/shims/cluster.d.ts.map +1 -0
  66. package/dist/shims/crypto.d.ts +122 -0
  67. package/dist/shims/crypto.d.ts.map +1 -0
  68. package/dist/shims/dgram.d.ts +34 -0
  69. package/dist/shims/dgram.d.ts.map +1 -0
  70. package/dist/shims/diagnostics_channel.d.ts +80 -0
  71. package/dist/shims/diagnostics_channel.d.ts.map +1 -0
  72. package/dist/shims/dns.d.ts +87 -0
  73. package/dist/shims/dns.d.ts.map +1 -0
  74. package/dist/shims/domain.d.ts +25 -0
  75. package/dist/shims/domain.d.ts.map +1 -0
  76. package/dist/shims/esbuild.d.ts +105 -0
  77. package/dist/shims/esbuild.d.ts.map +1 -0
  78. package/dist/shims/events.d.ts +37 -0
  79. package/dist/shims/events.d.ts.map +1 -0
  80. package/dist/shims/fs.d.ts +115 -0
  81. package/dist/shims/fs.d.ts.map +1 -0
  82. package/dist/shims/fsevents.d.ts +67 -0
  83. package/dist/shims/fsevents.d.ts.map +1 -0
  84. package/dist/shims/http.d.ts +217 -0
  85. package/dist/shims/http.d.ts.map +1 -0
  86. package/dist/shims/http2.d.ts +81 -0
  87. package/dist/shims/http2.d.ts.map +1 -0
  88. package/dist/shims/https.d.ts +36 -0
  89. package/dist/shims/https.d.ts.map +1 -0
  90. package/dist/shims/inspector.d.ts +25 -0
  91. package/dist/shims/inspector.d.ts.map +1 -0
  92. package/dist/shims/module.d.ts +22 -0
  93. package/dist/shims/module.d.ts.map +1 -0
  94. package/dist/shims/net.d.ts +100 -0
  95. package/dist/shims/net.d.ts.map +1 -0
  96. package/dist/shims/os.d.ts +159 -0
  97. package/dist/shims/os.d.ts.map +1 -0
  98. package/dist/shims/path.d.ts +72 -0
  99. package/dist/shims/path.d.ts.map +1 -0
  100. package/dist/shims/perf_hooks.d.ts +50 -0
  101. package/dist/shims/perf_hooks.d.ts.map +1 -0
  102. package/dist/shims/process.d.ts +93 -0
  103. package/dist/shims/process.d.ts.map +1 -0
  104. package/dist/shims/querystring.d.ts +23 -0
  105. package/dist/shims/querystring.d.ts.map +1 -0
  106. package/dist/shims/readdirp.d.ts +52 -0
  107. package/dist/shims/readdirp.d.ts.map +1 -0
  108. package/dist/shims/readline.d.ts +62 -0
  109. package/dist/shims/readline.d.ts.map +1 -0
  110. package/dist/shims/rollup.d.ts +34 -0
  111. package/dist/shims/rollup.d.ts.map +1 -0
  112. package/dist/shims/sentry.d.ts +163 -0
  113. package/dist/shims/sentry.d.ts.map +1 -0
  114. package/dist/shims/stream.d.ts +181 -0
  115. package/dist/shims/stream.d.ts.map +1 -0
  116. package/dist/shims/tls.d.ts +53 -0
  117. package/dist/shims/tls.d.ts.map +1 -0
  118. package/dist/shims/tty.d.ts +30 -0
  119. package/dist/shims/tty.d.ts.map +1 -0
  120. package/dist/shims/url.d.ts +64 -0
  121. package/dist/shims/url.d.ts.map +1 -0
  122. package/dist/shims/util.d.ts +106 -0
  123. package/dist/shims/util.d.ts.map +1 -0
  124. package/dist/shims/v8.d.ts +73 -0
  125. package/dist/shims/v8.d.ts.map +1 -0
  126. package/dist/shims/vfs-adapter.d.ts +126 -0
  127. package/dist/shims/vfs-adapter.d.ts.map +1 -0
  128. package/dist/shims/vm.d.ts +45 -0
  129. package/dist/shims/vm.d.ts.map +1 -0
  130. package/dist/shims/worker_threads.d.ts +66 -0
  131. package/dist/shims/worker_threads.d.ts.map +1 -0
  132. package/dist/shims/ws.d.ts +66 -0
  133. package/dist/shims/ws.d.ts.map +1 -0
  134. package/dist/shims/zlib.d.ts +161 -0
  135. package/dist/shims/zlib.d.ts.map +1 -0
  136. package/dist/transform.d.ts +24 -0
  137. package/dist/transform.d.ts.map +1 -0
  138. package/dist/virtual-fs.d.ts +226 -0
  139. package/dist/virtual-fs.d.ts.map +1 -0
  140. package/dist/vite-demo.d.ts +35 -0
  141. package/dist/vite-demo.d.ts.map +1 -0
  142. package/dist/vite-sw.js +132 -0
  143. package/dist/worker/runtime-worker.d.ts +8 -0
  144. package/dist/worker/runtime-worker.d.ts.map +1 -0
  145. package/dist/worker-runtime.d.ts +50 -0
  146. package/dist/worker-runtime.d.ts.map +1 -0
  147. package/package.json +85 -0
  148. package/src/ai-chatbot-demo-entry.ts +244 -0
  149. package/src/ai-chatbot-demo.ts +509 -0
  150. package/src/convex-app-demo-entry.ts +1107 -0
  151. package/src/convex-app-demo.ts +1316 -0
  152. package/src/cors-proxy.ts +81 -0
  153. package/src/create-runtime.ts +147 -0
  154. package/src/demo.ts +304 -0
  155. package/src/dev-server.ts +274 -0
  156. package/src/frameworks/next-dev-server.ts +2224 -0
  157. package/src/frameworks/vite-dev-server.ts +702 -0
  158. package/src/index.ts +101 -0
  159. package/src/next-demo.ts +1784 -0
  160. package/src/npm/index.ts +347 -0
  161. package/src/npm/registry.ts +152 -0
  162. package/src/npm/resolver.ts +385 -0
  163. package/src/npm/tarball.ts +209 -0
  164. package/src/runtime-interface.ts +103 -0
  165. package/src/runtime.ts +1046 -0
  166. package/src/sandbox-helpers.ts +173 -0
  167. package/src/sandbox-runtime.ts +252 -0
  168. package/src/server-bridge.ts +426 -0
  169. package/src/shims/assert.ts +664 -0
  170. package/src/shims/async_hooks.ts +86 -0
  171. package/src/shims/buffer.ts +75 -0
  172. package/src/shims/child_process-browser.ts +217 -0
  173. package/src/shims/child_process.ts +463 -0
  174. package/src/shims/chokidar.ts +313 -0
  175. package/src/shims/cluster.ts +67 -0
  176. package/src/shims/crypto.ts +830 -0
  177. package/src/shims/dgram.ts +47 -0
  178. package/src/shims/diagnostics_channel.ts +196 -0
  179. package/src/shims/dns.ts +172 -0
  180. package/src/shims/domain.ts +58 -0
  181. package/src/shims/esbuild.ts +805 -0
  182. package/src/shims/events.ts +195 -0
  183. package/src/shims/fs.ts +803 -0
  184. package/src/shims/fsevents.ts +63 -0
  185. package/src/shims/http.ts +904 -0
  186. package/src/shims/http2.ts +96 -0
  187. package/src/shims/https.ts +86 -0
  188. package/src/shims/inspector.ts +30 -0
  189. package/src/shims/module.ts +82 -0
  190. package/src/shims/net.ts +359 -0
  191. package/src/shims/os.ts +195 -0
  192. package/src/shims/path.ts +199 -0
  193. package/src/shims/perf_hooks.ts +92 -0
  194. package/src/shims/process.ts +346 -0
  195. package/src/shims/querystring.ts +97 -0
  196. package/src/shims/readdirp.ts +228 -0
  197. package/src/shims/readline.ts +110 -0
  198. package/src/shims/rollup.ts +80 -0
  199. package/src/shims/sentry.ts +133 -0
  200. package/src/shims/stream.ts +1126 -0
  201. package/src/shims/tls.ts +95 -0
  202. package/src/shims/tty.ts +64 -0
  203. package/src/shims/url.ts +171 -0
  204. package/src/shims/util.ts +312 -0
  205. package/src/shims/v8.ts +113 -0
  206. package/src/shims/vfs-adapter.ts +402 -0
  207. package/src/shims/vm.ts +83 -0
  208. package/src/shims/worker_threads.ts +111 -0
  209. package/src/shims/ws.ts +382 -0
  210. package/src/shims/zlib.ts +289 -0
  211. package/src/transform.ts +313 -0
  212. package/src/types/external.d.ts +67 -0
  213. package/src/virtual-fs.ts +903 -0
  214. package/src/vite-demo.ts +577 -0
  215. package/src/worker/runtime-worker.ts +128 -0
  216. 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"}