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,6 @@
1
+ /**
2
+ * Entry point for Convex App Demo
3
+ * This file is loaded by the HTML and bootstraps the demo
4
+ */
5
+ export {};
6
+ //# sourceMappingURL=convex-app-demo-entry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"convex-app-demo-entry.d.ts","sourceRoot":"","sources":["../src/convex-app-demo-entry.ts"],"names":[],"mappings":"AAAA;;;GAGG"}
@@ -0,0 +1,68 @@
1
+ /**
2
+ * Realistic Next.js + Convex App Demo
3
+ *
4
+ * This demo creates a more realistic Next.js application structure
5
+ * with Radix UI components, Tailwind CSS, and a mocked Convex backend.
6
+ */
7
+ import { VirtualFS } from './virtual-fs';
8
+ import { Runtime } from './runtime';
9
+ import { NextDevServer } from './frameworks/next-dev-server';
10
+ /**
11
+ * Package.json for a realistic Next.js + Convex app
12
+ */
13
+ declare const PACKAGE_JSON: {
14
+ name: string;
15
+ version: string;
16
+ private: boolean;
17
+ scripts: {
18
+ dev: string;
19
+ build: string;
20
+ start: string;
21
+ };
22
+ dependencies: {
23
+ next: string;
24
+ react: string;
25
+ "react-dom": string;
26
+ clsx: string;
27
+ "tailwind-merge": string;
28
+ "lucide-react": string;
29
+ zod: string;
30
+ "date-fns": string;
31
+ };
32
+ devDependencies: {
33
+ "@types/node": string;
34
+ "@types/react": string;
35
+ "@types/react-dom": string;
36
+ typescript: string;
37
+ };
38
+ };
39
+ /**
40
+ * Minimal packages to install for demo (others loaded from CDN)
41
+ */
42
+ declare const DEMO_PACKAGES: string[];
43
+ /**
44
+ * Create the project structure in the virtual filesystem
45
+ */
46
+ export declare function createConvexAppProject(vfs: VirtualFS): void;
47
+ /**
48
+ * Initialize the Convex App demo
49
+ */
50
+ export declare function initConvexAppDemo(outputElement: HTMLElement, options?: {
51
+ installPackages?: boolean;
52
+ }): Promise<{
53
+ vfs: VirtualFS;
54
+ runtime: Runtime;
55
+ }>;
56
+ /**
57
+ * Start the dev server for Convex App demo
58
+ */
59
+ export declare function startConvexAppDevServer(vfs: VirtualFS, options?: {
60
+ port?: number;
61
+ log?: (message: string) => void;
62
+ }): Promise<{
63
+ server: NextDevServer;
64
+ url: string;
65
+ stop: () => void;
66
+ }>;
67
+ export { PACKAGE_JSON, DEMO_PACKAGES };
68
+ //# sourceMappingURL=convex-app-demo.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"convex-app-demo.d.ts","sourceRoot":"","sources":["../src/convex-app-demo.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAK7D;;GAEG;AACH,QAAA,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;CA6BjB,CAAC;AAEF;;GAEG;AACH,QAAA,MAAM,aAAa,UAKlB,CAAC;AAEF;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,SAAS,GAAG,IAAI,CAuiC3D;AAED;;GAEG;AACH,wBAAsB,iBAAiB,CACrC,aAAa,EAAE,WAAW,EAC1B,OAAO,GAAE;IACP,eAAe,CAAC,EAAE,OAAO,CAAC;CACtB,GACL,OAAO,CAAC;IAAE,GAAG,EAAE,SAAS,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,CAAC,CAsD/C;AAED;;GAEG;AACH,wBAAsB,uBAAuB,CAC3C,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,CAuDD;AAyDD,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,CAAC"}
@@ -0,0 +1,46 @@
1
+ /**
2
+ * CORS Proxy Utility
3
+ *
4
+ * Provides optional CORS proxy support for fetching external APIs
5
+ * that don't allow browser origins.
6
+ *
7
+ * No default proxy is configured for security reasons.
8
+ * Users must explicitly set a proxy URL if needed.
9
+ *
10
+ * Example usage:
11
+ * setCorsProxy('https://corsproxy.io/?');
12
+ * const response = await proxyFetch('https://api.example.com/data');
13
+ */
14
+ /**
15
+ * Set the CORS proxy URL
16
+ * @param url - Proxy URL (e.g., 'https://corsproxy.io/?')
17
+ * The target URL will be appended as an encoded parameter.
18
+ * Set to null to disable proxy and use direct fetch.
19
+ */
20
+ export declare function setCorsProxy(url: string | null): void;
21
+ /**
22
+ * Get the current CORS proxy URL
23
+ * @returns The configured proxy URL, or null if not set
24
+ */
25
+ export declare function getCorsProxy(): string | null;
26
+ /**
27
+ * Check if a proxy is configured
28
+ */
29
+ export declare function hasProxy(): boolean;
30
+ /**
31
+ * Fetch with optional CORS proxy
32
+ *
33
+ * If a proxy is configured, the request goes through the proxy.
34
+ * Otherwise, a direct fetch is performed (may hit CORS issues).
35
+ *
36
+ * @param url - The target URL to fetch
37
+ * @param options - Standard fetch options
38
+ * @returns Promise<Response>
39
+ */
40
+ export declare function proxyFetch(url: string, options?: RequestInit): Promise<Response>;
41
+ /**
42
+ * Build a proxied URL without fetching
43
+ * Useful for displaying the URL or using with other fetch mechanisms
44
+ */
45
+ export declare function buildProxyUrl(url: string): string;
46
+ //# sourceMappingURL=cors-proxy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cors-proxy.d.ts","sourceRoot":"","sources":["../src/cors-proxy.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAKH;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,CAOrD;AAED;;;GAGG;AACH,wBAAgB,YAAY,IAAI,MAAM,GAAG,IAAI,CAE5C;AAED;;GAEG;AACH,wBAAgB,QAAQ,IAAI,OAAO,CAElC;AAED;;;;;;;;;GASG;AACH,wBAAsB,UAAU,CAC9B,GAAG,EAAE,MAAM,EACX,OAAO,CAAC,EAAE,WAAW,GACpB,OAAO,CAAC,QAAQ,CAAC,CASnB;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAKjD"}
@@ -0,0 +1,42 @@
1
+ /**
2
+ * Runtime Factory - Create sandboxed, worker, or main-thread runtime
3
+ *
4
+ * SECURITY: By default, createRuntime requires either:
5
+ * 1. A sandbox URL for cross-origin isolation (recommended)
6
+ * 2. Explicit opt-in via dangerouslyAllowSameOrigin for trusted code
7
+ *
8
+ * Usage:
9
+ * // Secure: Cross-origin sandbox (recommended for untrusted code)
10
+ * const runtime = await createRuntime(vfs, {
11
+ * sandbox: 'https://myapp-sandbox.vercel.app'
12
+ * });
13
+ *
14
+ * // Same-origin with Worker (for demos/trusted code)
15
+ * const runtime = await createRuntime(vfs, {
16
+ * dangerouslyAllowSameOrigin: true,
17
+ * useWorker: true
18
+ * });
19
+ *
20
+ * // Same-origin main thread (least secure, trusted code only)
21
+ * const runtime = await createRuntime(vfs, {
22
+ * dangerouslyAllowSameOrigin: true
23
+ * });
24
+ */
25
+ import type { VirtualFS } from './virtual-fs';
26
+ import type { IRuntime, CreateRuntimeOptions } from './runtime-interface';
27
+ /**
28
+ * Create a runtime instance based on configuration
29
+ *
30
+ * SECURITY: Requires either sandbox URL or explicit dangerouslyAllowSameOrigin.
31
+ *
32
+ * @param vfs - Virtual file system instance
33
+ * @param options - Runtime options including sandbox/security settings
34
+ * @returns Promise resolving to IRuntime instance
35
+ * @throws Error if neither sandbox nor dangerouslyAllowSameOrigin is specified
36
+ */
37
+ export declare function createRuntime(vfs: VirtualFS, options?: CreateRuntimeOptions): Promise<IRuntime>;
38
+ export { Runtime } from './runtime';
39
+ export { WorkerRuntime } from './worker-runtime';
40
+ export { SandboxRuntime } from './sandbox-runtime';
41
+ export type { IRuntime, IExecuteResult, IRuntimeOptions, CreateRuntimeOptions, VFSSnapshot, } from './runtime-interface';
42
+ //# sourceMappingURL=create-runtime.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-runtime.d.ts","sourceRoot":"","sources":["../src/create-runtime.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAKH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,KAAK,EAAE,QAAQ,EAAkB,oBAAoB,EAAmB,MAAM,qBAAqB,CAAC;AA2C3G;;;;;;;;;GASG;AACH,wBAAsB,aAAa,CACjC,GAAG,EAAE,SAAS,EACd,OAAO,GAAE,oBAAyB,GACjC,OAAO,CAAC,QAAQ,CAAC,CAiDnB;AAGD,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,YAAY,EACV,QAAQ,EACR,cAAc,EACd,eAAe,EACf,oBAAoB,EACpB,WAAW,GACZ,MAAM,qBAAqB,CAAC"}
package/dist/demo.d.ts ADDED
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Mini WebContainer Demo
3
+ * Demonstrates running an HTTP server in the browser
4
+ */
5
+ export {};
6
+ //# sourceMappingURL=demo.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"demo.d.ts","sourceRoot":"","sources":["../src/demo.ts"],"names":[],"mappings":"AAAA;;;GAGG"}
@@ -0,0 +1,97 @@
1
+ /**
2
+ * Base DevServer class for framework-specific dev servers
3
+ * This is a framework-agnostic base that can be extended for Vite, Next.js, etc.
4
+ */
5
+ import { EventEmitter } from './shims/events';
6
+ import { VirtualFS } from './virtual-fs';
7
+ import { Buffer } from './shims/stream';
8
+ export interface DevServerOptions {
9
+ port: number;
10
+ root?: string;
11
+ }
12
+ export interface ResponseData {
13
+ statusCode: number;
14
+ statusMessage: string;
15
+ headers: Record<string, string>;
16
+ body: Buffer;
17
+ }
18
+ export interface HMRUpdate {
19
+ type: 'update' | 'full-reload';
20
+ path: string;
21
+ timestamp?: number;
22
+ }
23
+ /**
24
+ * Base class for framework-specific dev servers.
25
+ * Extend this to create Vite, Next.js, etc. implementations.
26
+ */
27
+ export declare abstract class DevServer extends EventEmitter {
28
+ protected vfs: VirtualFS;
29
+ protected port: number;
30
+ protected root: string;
31
+ protected running: boolean;
32
+ constructor(vfs: VirtualFS, options: DevServerOptions);
33
+ /**
34
+ * Handle an incoming HTTP request
35
+ * Must be implemented by framework-specific subclass
36
+ */
37
+ abstract handleRequest(method: string, url: string, headers: Record<string, string>, body?: Buffer): Promise<ResponseData>;
38
+ /**
39
+ * Start file watching for HMR
40
+ * Must be implemented by framework-specific subclass
41
+ */
42
+ abstract startWatching(): void;
43
+ /**
44
+ * Stop the server and cleanup
45
+ */
46
+ stop(): void;
47
+ /**
48
+ * Start the server
49
+ */
50
+ start(): void;
51
+ /**
52
+ * Check if server is running
53
+ */
54
+ isRunning(): boolean;
55
+ /**
56
+ * Get the server's port
57
+ */
58
+ getPort(): number;
59
+ /**
60
+ * Serve a static file from the virtual filesystem
61
+ */
62
+ protected serveFile(filePath: string): ResponseData;
63
+ /**
64
+ * Resolve a URL path to a filesystem path
65
+ */
66
+ protected resolvePath(urlPath: string): string;
67
+ /**
68
+ * Create a 404 Not Found response
69
+ */
70
+ protected notFound(path: string): ResponseData;
71
+ /**
72
+ * Create a 500 Server Error response
73
+ */
74
+ protected serverError(error: unknown): ResponseData;
75
+ /**
76
+ * Create a redirect response
77
+ */
78
+ protected redirect(location: string, status?: 301 | 302 | 307 | 308): ResponseData;
79
+ /**
80
+ * Get MIME type for a file path
81
+ */
82
+ protected getMimeType(path: string): string;
83
+ /**
84
+ * Check if a path exists in the virtual filesystem
85
+ */
86
+ protected exists(path: string): boolean;
87
+ /**
88
+ * Check if a path is a directory
89
+ */
90
+ protected isDirectory(path: string): boolean;
91
+ /**
92
+ * Emit an HMR update event
93
+ */
94
+ protected emitHMRUpdate(update: HMRUpdate): void;
95
+ }
96
+ export default DevServer;
97
+ //# sourceMappingURL=dev-server.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dev-server.d.ts","sourceRoot":"","sources":["../src/dev-server.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAExC,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,YAAY;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,QAAQ,GAAG,aAAa,CAAC;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAyCD;;;GAGG;AACH,8BAAsB,SAAU,SAAQ,YAAY;IAClD,SAAS,CAAC,GAAG,EAAE,SAAS,CAAC;IACzB,SAAS,CAAC,IAAI,EAAE,MAAM,CAAC;IACvB,SAAS,CAAC,IAAI,EAAE,MAAM,CAAC;IACvB,SAAS,CAAC,OAAO,EAAE,OAAO,CAAS;gBAEvB,GAAG,EAAE,SAAS,EAAE,OAAO,EAAE,gBAAgB;IAOrD;;;OAGG;IACH,QAAQ,CAAC,aAAa,CACpB,MAAM,EAAE,MAAM,EACd,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAC/B,IAAI,CAAC,EAAE,MAAM,GACZ,OAAO,CAAC,YAAY,CAAC;IAExB;;;OAGG;IACH,QAAQ,CAAC,aAAa,IAAI,IAAI;IAE9B;;OAEG;IACH,IAAI,IAAI,IAAI;IAKZ;;OAEG;IACH,KAAK,IAAI,IAAI;IAMb;;OAEG;IACH,SAAS,IAAI,OAAO;IAIpB;;OAEG;IACH,OAAO,IAAI,MAAM;IAIjB;;OAEG;IACH,SAAS,CAAC,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,YAAY;IA4BnD;;OAEG;IACH,SAAS,CAAC,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM;IAiB9C;;OAEG;IACH,SAAS,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY;IAa9C;;OAEG;IACH,SAAS,CAAC,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG,YAAY;IAcnD;;OAEG;IACH,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,GAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAS,GAAG,YAAY;IAavF;;OAEG;IACH,SAAS,CAAC,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAK3C;;OAEG;IACH,SAAS,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IASvC;;OAEG;IACH,SAAS,CAAC,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAQ5C;;OAEG;IACH,SAAS,CAAC,aAAa,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI;CAMjD;AAED,eAAe,SAAS,CAAC"}
@@ -0,0 +1,202 @@
1
+ /**
2
+ * NextDevServer - Next.js-compatible dev server for browser environment
3
+ * Implements file-based routing, API routes, and HMR
4
+ */
5
+ import { DevServer, DevServerOptions, ResponseData } from '../dev-server';
6
+ import { VirtualFS } from '../virtual-fs';
7
+ import { Buffer } from '../shims/stream';
8
+ export interface NextDevServerOptions extends DevServerOptions {
9
+ /** Pages directory (default: '/pages') */
10
+ pagesDir?: string;
11
+ /** App directory for App Router (default: '/app') */
12
+ appDir?: string;
13
+ /** Public directory for static assets (default: '/public') */
14
+ publicDir?: string;
15
+ /** Prefer App Router over Pages Router (default: auto-detect) */
16
+ preferAppRouter?: boolean;
17
+ /** Environment variables (NEXT_PUBLIC_* are available in browser code via process.env) */
18
+ env?: Record<string, string>;
19
+ }
20
+ /**
21
+ * NextDevServer - A lightweight Next.js-compatible development server
22
+ *
23
+ * Supports both routing paradigms:
24
+ *
25
+ * 1. PAGES ROUTER (legacy, /pages directory):
26
+ * - /pages/index.jsx -> /
27
+ * - /pages/about.jsx -> /about
28
+ * - /pages/users/[id].jsx -> /users/:id (dynamic)
29
+ * - /pages/api/hello.js -> /api/hello (API route)
30
+ * - Uses next/router for navigation
31
+ *
32
+ * 2. APP ROUTER (new, /app directory):
33
+ * - /app/page.jsx -> /
34
+ * - /app/about/page.jsx -> /about
35
+ * - /app/users/[id]/page.jsx -> /users/:id (dynamic)
36
+ * - /app/layout.jsx -> Root layout (wraps all pages)
37
+ * - /app/about/layout.jsx -> Nested layout (wraps /about/*)
38
+ * - Uses next/navigation for navigation
39
+ *
40
+ * The server auto-detects which router to use based on directory existence,
41
+ * preferring App Router if both exist. Can be overridden via options.
42
+ */
43
+ export declare class NextDevServer extends DevServer {
44
+ /** Pages Router directory (default: '/pages') */
45
+ private pagesDir;
46
+ /** App Router directory (default: '/app') */
47
+ private appDir;
48
+ /** Static assets directory (default: '/public') */
49
+ private publicDir;
50
+ /** Whether to use App Router (true) or Pages Router (false) */
51
+ private useAppRouter;
52
+ /** Cleanup function for file watchers */
53
+ private watcherCleanup;
54
+ /** Target window for HMR updates (iframe contentWindow) */
55
+ private hmrTargetWindow;
56
+ /** Store options for later access (e.g., env vars) */
57
+ private options;
58
+ constructor(vfs: VirtualFS, options: NextDevServerOptions);
59
+ /**
60
+ * Set an environment variable at runtime
61
+ * NEXT_PUBLIC_* variables will be available via process.env in browser code
62
+ */
63
+ setEnv(key: string, value: string): void;
64
+ /**
65
+ * Get current environment variables
66
+ */
67
+ getEnv(): Record<string, string>;
68
+ /**
69
+ * Set the target window for HMR updates (typically iframe.contentWindow)
70
+ * This enables HMR to work with sandboxed iframes via postMessage
71
+ */
72
+ setHMRTarget(targetWindow: Window): void;
73
+ /**
74
+ * Generate a script tag that defines process.env with NEXT_PUBLIC_* variables
75
+ * This makes environment variables available to browser code via process.env.NEXT_PUBLIC_*
76
+ */
77
+ private generateEnvScript;
78
+ /**
79
+ * Check if App Router is available
80
+ */
81
+ private hasAppRouter;
82
+ /**
83
+ * Handle an incoming HTTP request
84
+ */
85
+ handleRequest(method: string, url: string, headers: Record<string, string>, body?: Buffer): Promise<ResponseData>;
86
+ /**
87
+ * Serve Next.js shims (link, router, head, navigation)
88
+ */
89
+ private serveNextShim;
90
+ /**
91
+ * Serve static assets from /_next/static/
92
+ */
93
+ private serveStaticAsset;
94
+ /**
95
+ * Handle API route requests
96
+ */
97
+ private handleApiRoute;
98
+ /**
99
+ * Handle streaming API route requests
100
+ * This is called by the server bridge for requests that need streaming support
101
+ */
102
+ handleStreamingRequest(method: string, url: string, headers: Record<string, string>, body: Buffer | undefined, onStart: (statusCode: number, statusMessage: string, headers: Record<string, string>) => void, onChunk: (chunk: string | Uint8Array) => void, onEnd: () => void): Promise<void>;
103
+ /**
104
+ * Create a streaming mock response that calls callbacks as data is written
105
+ */
106
+ private createStreamingMockResponse;
107
+ /**
108
+ * Resolve API route to file path
109
+ */
110
+ private resolveApiFile;
111
+ /**
112
+ * Create mock Next.js request object
113
+ */
114
+ private createMockRequest;
115
+ /**
116
+ * Parse cookie header
117
+ */
118
+ private parseCookies;
119
+ /**
120
+ * Create mock Next.js response object with streaming support
121
+ */
122
+ private createMockResponse;
123
+ /**
124
+ * Execute API handler code
125
+ */
126
+ private executeApiHandler;
127
+ /**
128
+ * Handle page route requests
129
+ */
130
+ private handlePageRoute;
131
+ /**
132
+ * Handle App Router page requests
133
+ */
134
+ private handleAppRouterPage;
135
+ /**
136
+ * Resolve App Router route to page and layout files
137
+ */
138
+ private resolveAppRoute;
139
+ /**
140
+ * Resolve dynamic App Router routes like /app/[id]/page.jsx
141
+ */
142
+ private resolveAppDynamicRoute;
143
+ /**
144
+ * Generate HTML for App Router with nested layouts
145
+ */
146
+ private generateAppRouterHtml;
147
+ /**
148
+ * Resolve URL pathname to page file
149
+ */
150
+ private resolvePageFile;
151
+ /**
152
+ * Resolve dynamic routes like /users/[id]
153
+ */
154
+ private resolveDynamicRoute;
155
+ /**
156
+ * Generate HTML shell for a page
157
+ */
158
+ private generatePageHtml;
159
+ /**
160
+ * Serve a basic 404 page
161
+ */
162
+ private serve404Page;
163
+ /**
164
+ * Check if a file needs transformation
165
+ */
166
+ private needsTransform;
167
+ /**
168
+ * Transform and serve a JSX/TS file
169
+ */
170
+ private transformAndServe;
171
+ /**
172
+ * Transform JSX/TS code to browser-compatible JavaScript (ESM for browser)
173
+ */
174
+ private transformCode;
175
+ /**
176
+ * Strip CSS imports from code (they are loaded via <link> tags instead)
177
+ * Handles: import './styles.css', import '../globals.css', etc.
178
+ */
179
+ private stripCssImports;
180
+ /**
181
+ * Transform API handler code to CommonJS for eval execution
182
+ */
183
+ private transformApiHandler;
184
+ /**
185
+ * Add React Refresh registration to transformed code
186
+ */
187
+ private addReactRefresh;
188
+ /**
189
+ * Start file watching for HMR
190
+ */
191
+ startWatching(): void;
192
+ /**
193
+ * Handle file change event
194
+ */
195
+ private handleFileChange;
196
+ /**
197
+ * Stop the server
198
+ */
199
+ stop(): void;
200
+ }
201
+ export default NextDevServer;
202
+ //# sourceMappingURL=next-dev-server.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"next-dev-server.d.ts","sourceRoot":"","sources":["../../src/frameworks/next-dev-server.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,85 @@
1
+ /**
2
+ * ViteDevServer - Vite-compatible dev server for browser environment
3
+ * Serves files from VirtualFS with JSX/TypeScript transformation
4
+ */
5
+ import { DevServer, DevServerOptions, ResponseData } from '../dev-server';
6
+ import { VirtualFS } from '../virtual-fs';
7
+ import { Buffer } from '../shims/stream';
8
+ export interface ViteDevServerOptions extends DevServerOptions {
9
+ /**
10
+ * Enable JSX transformation (default: true)
11
+ */
12
+ jsx?: boolean;
13
+ /**
14
+ * JSX factory function (default: 'React.createElement')
15
+ */
16
+ jsxFactory?: string;
17
+ /**
18
+ * JSX fragment function (default: 'React.Fragment')
19
+ */
20
+ jsxFragment?: string;
21
+ /**
22
+ * Auto-inject React import for JSX files (default: true)
23
+ */
24
+ jsxAutoImport?: boolean;
25
+ }
26
+ export declare class ViteDevServer extends DevServer {
27
+ private watcherCleanup;
28
+ private options;
29
+ private hmrTargetWindow;
30
+ constructor(vfs: VirtualFS, options: ViteDevServerOptions);
31
+ /**
32
+ * Set the target window for HMR updates (typically iframe.contentWindow)
33
+ * This enables HMR to work with sandboxed iframes via postMessage
34
+ */
35
+ setHMRTarget(targetWindow: Window): void;
36
+ /**
37
+ * Handle an incoming HTTP request
38
+ */
39
+ handleRequest(method: string, url: string, headers: Record<string, string>, body?: Buffer): Promise<ResponseData>;
40
+ /**
41
+ * Start file watching for HMR
42
+ */
43
+ startWatching(): void;
44
+ /**
45
+ * Handle file change event
46
+ */
47
+ private handleFileChange;
48
+ /**
49
+ * Stop the server
50
+ */
51
+ stop(): void;
52
+ /**
53
+ * Check if a file needs transformation
54
+ */
55
+ private needsTransform;
56
+ /**
57
+ * Transform and serve a JSX/TS file
58
+ */
59
+ private transformAndServe;
60
+ /**
61
+ * Transform JSX/TS code to browser-compatible JavaScript
62
+ */
63
+ private transformCode;
64
+ /**
65
+ * Add React Refresh registration to transformed code
66
+ * This enables true HMR (state-preserving) for React components
67
+ */
68
+ private addReactRefresh;
69
+ /**
70
+ * Serve CSS file as a JavaScript module that injects styles
71
+ * This is needed because ES module imports of CSS files need to return JS
72
+ */
73
+ private serveCssAsModule;
74
+ /**
75
+ * Serve HTML file with HMR client script injected
76
+ *
77
+ * IMPORTANT: React Refresh preamble MUST be injected before any module scripts.
78
+ * The preamble uses top-level await to block until React Refresh is loaded
79
+ * and injectIntoGlobalHook is called. This ensures React Refresh hooks into
80
+ * React BEFORE React is imported by any module.
81
+ */
82
+ private serveHtmlWithHMR;
83
+ }
84
+ export default ViteDevServer;
85
+ //# sourceMappingURL=vite-dev-server.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vite-dev-server.d.ts","sourceRoot":"","sources":["../../src/frameworks/vite-dev-server.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,SAAS,EAAE,gBAAgB,EAAE,YAAY,EAAa,MAAM,eAAe,CAAC;AACrF,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC1C,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAqEzC,MAAM,WAAW,oBAAqB,SAAQ,gBAAgB;IAC5D;;OAEG;IACH,GAAG,CAAC,EAAE,OAAO,CAAC;IAEd;;OAEG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;OAEG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAqLD,qBAAa,aAAc,SAAQ,SAAS;IAC1C,OAAO,CAAC,cAAc,CAA6B;IACnD,OAAO,CAAC,OAAO,CAAuB;IACtC,OAAO,CAAC,eAAe,CAAuB;gBAElC,GAAG,EAAE,SAAS,EAAE,OAAO,EAAE,oBAAoB;IAWzD;;;OAGG;IACH,YAAY,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI;IAIxC;;OAEG;IACG,aAAa,CACjB,MAAM,EAAE,MAAM,EACd,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAC/B,IAAI,CAAC,EAAE,MAAM,GACZ,OAAO,CAAC,YAAY,CAAC;IA0ExB;;OAEG;IACH,aAAa,IAAI,IAAI;IAqCrB;;OAEG;IACH,OAAO,CAAC,gBAAgB;IA2BxB;;OAEG;IACH,IAAI,IAAI,IAAI;IAWZ;;OAEG;IACH,OAAO,CAAC,cAAc;IAItB;;OAEG;YACW,iBAAiB;IAiC/B;;OAEG;YACW,aAAa;IAsC3B;;;OAGG;IACH,OAAO,CAAC,eAAe;IA4DvB;;;OAGG;IACH,OAAO,CAAC,gBAAgB;IA+BxB;;;;;;;OAOG;IACH,OAAO,CAAC,gBAAgB;CAyCzB;AAED,eAAe,aAAa,CAAC"}