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,195 @@
1
+ /**
2
+ * Node.js EventEmitter shim
3
+ * Basic event emitter implementation for browser environment
4
+ */
5
+
6
+ export type EventListener = (...args: unknown[]) => void;
7
+
8
+ // Symbol for storing events on arbitrary objects (like Express app function)
9
+ const kEvents = Symbol('events');
10
+ const kMaxListeners = Symbol('maxListeners');
11
+
12
+ interface EventStorage {
13
+ [kEvents]?: Map<string, EventListener[]>;
14
+ [kMaxListeners]?: number;
15
+ }
16
+
17
+ export class EventEmitter {
18
+ [kEvents]?: Map<string, EventListener[]>;
19
+ [kMaxListeners]?: number;
20
+
21
+ // Helper to get events map, creating it if needed
22
+ private _getEvents(): Map<string, EventListener[]> {
23
+ const self = this as EventStorage;
24
+ if (!self[kEvents]) {
25
+ self[kEvents] = new Map();
26
+ }
27
+ return self[kEvents]!;
28
+ }
29
+
30
+ on(event: string, listener: EventListener): this {
31
+ return this.addListener(event, listener);
32
+ }
33
+
34
+ addListener(event: string, listener: EventListener): this {
35
+ const events = this._getEvents();
36
+ if (!events.has(event)) {
37
+ events.set(event, []);
38
+ }
39
+ events.get(event)!.push(listener);
40
+ return this;
41
+ }
42
+
43
+ once(event: string, listener: EventListener): this {
44
+ const onceWrapper = (...args: unknown[]) => {
45
+ this.removeListener(event, onceWrapper);
46
+ listener.apply(this, args);
47
+ };
48
+ return this.addListener(event, onceWrapper);
49
+ }
50
+
51
+ off(event: string, listener: EventListener): this {
52
+ return this.removeListener(event, listener);
53
+ }
54
+
55
+ removeListener(event: string, listener: EventListener): this {
56
+ const events = this._getEvents();
57
+ const listeners = events.get(event);
58
+ if (listeners) {
59
+ const index = listeners.indexOf(listener);
60
+ if (index !== -1) {
61
+ listeners.splice(index, 1);
62
+ }
63
+ }
64
+ return this;
65
+ }
66
+
67
+ removeAllListeners(event?: string): this {
68
+ const events = this._getEvents();
69
+ if (event) {
70
+ events.delete(event);
71
+ } else {
72
+ events.clear();
73
+ }
74
+ return this;
75
+ }
76
+
77
+ emit(event: string, ...args: unknown[]): boolean {
78
+ const events = this._getEvents();
79
+ const listeners = events.get(event);
80
+ if (!listeners || listeners.length === 0) {
81
+ // Special handling for 'error' event
82
+ if (event === 'error') {
83
+ const err = args[0];
84
+ if (err instanceof Error) {
85
+ throw err;
86
+ }
87
+ throw new Error('Unhandled error event');
88
+ }
89
+ return false;
90
+ }
91
+
92
+ for (const listener of [...listeners]) {
93
+ try {
94
+ listener.apply(this, args);
95
+ } catch (err) {
96
+ console.error('Error in event listener:', err);
97
+ }
98
+ }
99
+ return true;
100
+ }
101
+
102
+ listeners(event: string): EventListener[] {
103
+ const events = this._getEvents();
104
+ return [...(events.get(event) || [])];
105
+ }
106
+
107
+ rawListeners(event: string): EventListener[] {
108
+ return this.listeners(event);
109
+ }
110
+
111
+ listenerCount(event: string): number {
112
+ const events = this._getEvents();
113
+ return events.get(event)?.length || 0;
114
+ }
115
+
116
+ eventNames(): string[] {
117
+ const events = this._getEvents();
118
+ return [...events.keys()];
119
+ }
120
+
121
+ setMaxListeners(n: number): this {
122
+ (this as EventStorage)[kMaxListeners] = n;
123
+ return this;
124
+ }
125
+
126
+ getMaxListeners(): number {
127
+ return (this as EventStorage)[kMaxListeners] || 10;
128
+ }
129
+
130
+ prependListener(event: string, listener: EventListener): this {
131
+ const events = this._getEvents();
132
+ if (!events.has(event)) {
133
+ events.set(event, []);
134
+ }
135
+ events.get(event)!.unshift(listener);
136
+ return this;
137
+ }
138
+
139
+ prependOnceListener(event: string, listener: EventListener): this {
140
+ const onceWrapper = (...args: unknown[]) => {
141
+ this.removeListener(event, onceWrapper);
142
+ listener.apply(this, args);
143
+ };
144
+ return this.prependListener(event, onceWrapper);
145
+ }
146
+
147
+ // Static methods for compatibility
148
+ static listenerCount(emitter: EventEmitter, event: string): number {
149
+ return emitter.listenerCount(event);
150
+ }
151
+ }
152
+
153
+ // For Node.js compatibility, the module itself should be the EventEmitter class
154
+ // but also have EventEmitter as a property
155
+ // This allows both: `const EE = require('events')` and `const { EventEmitter } = require('events')`
156
+ const events = EventEmitter as typeof EventEmitter & {
157
+ EventEmitter: typeof EventEmitter;
158
+ once: (emitter: EventEmitter, event: string) => Promise<unknown[]>;
159
+ on: (emitter: EventEmitter, event: string) => AsyncIterable<unknown[]>;
160
+ getEventListeners: (emitter: EventEmitter, event: string) => EventListener[];
161
+ listenerCount: (emitter: EventEmitter, event: string) => number;
162
+ };
163
+
164
+ events.EventEmitter = EventEmitter;
165
+ events.once = async (emitter: EventEmitter, event: string): Promise<unknown[]> => {
166
+ return new Promise((resolve, reject) => {
167
+ const onEvent: EventListener = (...args: unknown[]) => {
168
+ emitter.removeListener('error', onError);
169
+ resolve(args);
170
+ };
171
+ const onError: EventListener = (...args: unknown[]) => {
172
+ emitter.removeListener(event, onEvent);
173
+ reject(args[0] as Error);
174
+ };
175
+ emitter.once(event, onEvent);
176
+ emitter.once('error', onError);
177
+ });
178
+ };
179
+ events.on = (emitter: EventEmitter, event: string) => {
180
+ const iterator = {
181
+ async next() {
182
+ return new Promise<{ value: unknown[]; done: boolean }>((resolve) => {
183
+ emitter.once(event, (...args) => resolve({ value: args, done: false }));
184
+ });
185
+ },
186
+ [Symbol.asyncIterator]() {
187
+ return this;
188
+ },
189
+ };
190
+ return iterator as AsyncIterable<unknown[]>;
191
+ };
192
+ events.getEventListeners = (emitter: EventEmitter, event: string) => emitter.listeners(event);
193
+ events.listenerCount = (emitter: EventEmitter, event: string) => emitter.listenerCount(event);
194
+
195
+ export default events;