@ccheever/exact-ibex-runtime 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 (161) hide show
  1. package/package.json +63 -0
  2. package/src/abort/AbortController.ts +23 -0
  3. package/src/abort/AbortSignal.ts +152 -0
  4. package/src/abort/index.ts +2 -0
  5. package/src/accessibility.ts +12 -0
  6. package/src/arraybuffer-detach.ts +109 -0
  7. package/src/base64/base64.ts +168 -0
  8. package/src/base64/index.ts +1 -0
  9. package/src/blob/Blob.ts +259 -0
  10. package/src/blob/File.ts +59 -0
  11. package/src/blob/FormData.ts +323 -0
  12. package/src/blob/index.ts +3 -0
  13. package/src/bootstrap.ts +1946 -0
  14. package/src/broadcast/BroadcastChannel.ts +280 -0
  15. package/src/broadcast/index.ts +5 -0
  16. package/src/cache/Cache.ts +349 -0
  17. package/src/cache/CacheStorage.ts +89 -0
  18. package/src/cache/index.ts +27 -0
  19. package/src/camera/index.ts +6202 -0
  20. package/src/camera/processor.worker.ts +194 -0
  21. package/src/camera/scene.ts +195 -0
  22. package/src/clipboard/Clipboard.ts +129 -0
  23. package/src/clipboard/ClipboardItem.ts +97 -0
  24. package/src/clipboard/index.ts +6 -0
  25. package/src/clone/index.ts +1 -0
  26. package/src/clone/structuredClone.ts +389 -0
  27. package/src/clone/transferableSymbols.ts +2 -0
  28. package/src/compression/CompressionStream.ts +146 -0
  29. package/src/compression/DecompressionStream.ts +342 -0
  30. package/src/compression/index.ts +4 -0
  31. package/src/console/Console.ts +341 -0
  32. package/src/console/index.ts +2 -0
  33. package/src/core/accessibility-state.ts +263 -0
  34. package/src/core/accessibility.ts +184 -0
  35. package/src/core/agent-state.ts +37 -0
  36. package/src/core/diagnostics-logs.ts +144 -0
  37. package/src/core/host-call-bridge.ts +16 -0
  38. package/src/core/i18n-helpers.ts +189 -0
  39. package/src/core/locale-state.ts +253 -0
  40. package/src/core/locale.ts +95 -0
  41. package/src/crypto/Crypto.ts +2743 -0
  42. package/src/crypto/index.ts +1 -0
  43. package/src/diagnostics/logs.ts +7 -0
  44. package/src/encoding/TextDecoder.ts +1181 -0
  45. package/src/encoding/TextDecoderStream.ts +58 -0
  46. package/src/encoding/TextEncoder.ts +180 -0
  47. package/src/encoding/TextEncoderStream.ts +39 -0
  48. package/src/encoding/index.ts +8 -0
  49. package/src/events/CloseEvent.ts +91 -0
  50. package/src/events/DOMException.ts +409 -0
  51. package/src/events/ErrorEvent.ts +39 -0
  52. package/src/events/Event.ts +151 -0
  53. package/src/events/EventTarget.ts +280 -0
  54. package/src/events/FocusEvent.ts +27 -0
  55. package/src/events/KeyboardEvent.ts +46 -0
  56. package/src/events/MessageEvent.ts +61 -0
  57. package/src/events/ProgressEvent.ts +33 -0
  58. package/src/events/PromiseRejectionEvent.ts +31 -0
  59. package/src/events/index.ts +52 -0
  60. package/src/eventsource/EventSource.ts +371 -0
  61. package/src/eventsource/index.ts +2 -0
  62. package/src/fetch/Headers.ts +642 -0
  63. package/src/fetch/Request.ts +760 -0
  64. package/src/fetch/Response.ts +543 -0
  65. package/src/fetch/body.ts +1256 -0
  66. package/src/fetch/cookie-jar.ts +566 -0
  67. package/src/fetch/demo.ts +207 -0
  68. package/src/fetch/errors.ts +101 -0
  69. package/src/fetch/fetch.ts +2610 -0
  70. package/src/fetch/index.ts +101 -0
  71. package/src/fetch/native-bridge.ts +65 -0
  72. package/src/fetch/types.ts +258 -0
  73. package/src/filereader/FileReader.ts +236 -0
  74. package/src/filereader/index.ts +1 -0
  75. package/src/fs/Dirent.ts +39 -0
  76. package/src/fs/ExactFile.ts +450 -0
  77. package/src/fs/Stats.ts +80 -0
  78. package/src/fs/index.ts +944 -0
  79. package/src/fs/promises.ts +386 -0
  80. package/src/fs/shared.ts +328 -0
  81. package/src/http-server/index.js +697 -0
  82. package/src/http-server/index.ts +27 -0
  83. package/src/identity.generated.ts +14 -0
  84. package/src/index.ts +283 -0
  85. package/src/indexeddb/IDBCursor.ts +188 -0
  86. package/src/indexeddb/IDBDatabase.ts +343 -0
  87. package/src/indexeddb/IDBFactory.ts +269 -0
  88. package/src/indexeddb/IDBIndex.ts +194 -0
  89. package/src/indexeddb/IDBKeyRange.ts +109 -0
  90. package/src/indexeddb/IDBObjectStore.ts +468 -0
  91. package/src/indexeddb/IDBRequest.ts +163 -0
  92. package/src/indexeddb/IDBTransaction.ts +207 -0
  93. package/src/indexeddb/index.ts +34 -0
  94. package/src/indexeddb/utils.ts +52 -0
  95. package/src/inspect/index.ts +1 -0
  96. package/src/inspect/inspect.ts +465 -0
  97. package/src/internal/detect.ts +104 -0
  98. package/src/locale.ts +10 -0
  99. package/src/location/index.ts +1059 -0
  100. package/src/locks/LockManager.ts +460 -0
  101. package/src/locks/index.ts +12 -0
  102. package/src/media/VideoFrame.ts +58 -0
  103. package/src/messaging/MessageChannel.ts +31 -0
  104. package/src/messaging/MessagePort.ts +180 -0
  105. package/src/messaging/index.ts +2 -0
  106. package/src/messaging.ts +247 -0
  107. package/src/native/NativeModules.ts +354 -0
  108. package/src/native/index.ts +1 -0
  109. package/src/navigator/Navigator.ts +351 -0
  110. package/src/navigator/index.ts +1 -0
  111. package/src/node/Buffer.ts +1786 -0
  112. package/src/node/index.ts +4 -0
  113. package/src/node/path.ts +495 -0
  114. package/src/node/process.ts +2528 -0
  115. package/src/performance/Performance.ts +532 -0
  116. package/src/performance/index.ts +21 -0
  117. package/src/polyfills/array.ts +236 -0
  118. package/src/polyfills/arraybuffer.ts +172 -0
  119. package/src/polyfills/groupby.ts +85 -0
  120. package/src/polyfills/index.ts +85 -0
  121. package/src/polyfills/intl.ts +1956 -0
  122. package/src/polyfills/iterator.ts +479 -0
  123. package/src/polyfills/promise.ts +37 -0
  124. package/src/polyfills/set.ts +245 -0
  125. package/src/polyfills/string.ts +85 -0
  126. package/src/polyfills/typedarray.ts +110 -0
  127. package/src/promise-rejection-tracking.ts +464 -0
  128. package/src/react-native/index.ts +388 -0
  129. package/src/runtime-entry.ts +55 -0
  130. package/src/scheduling/AnimationFrame.ts +105 -0
  131. package/src/scheduling/IdleCallback.ts +167 -0
  132. package/src/scheduling/index.ts +13 -0
  133. package/src/security/Capabilities.ts +1146 -0
  134. package/src/security/Permissions.ts +392 -0
  135. package/src/security/capability-bits.generated.ts +63 -0
  136. package/src/security/index.ts +16 -0
  137. package/src/sqlite/Database.ts +456 -0
  138. package/src/sqlite/Statement.ts +206 -0
  139. package/src/sqlite/constants.ts +79 -0
  140. package/src/sqlite/errors.ts +25 -0
  141. package/src/sqlite/index.ts +34 -0
  142. package/src/sqlite/module.js +438 -0
  143. package/src/storage/Storage.ts +291 -0
  144. package/src/storage/StorageManager.ts +91 -0
  145. package/src/storage/index.ts +3 -0
  146. package/src/stream-compat.ts +47 -0
  147. package/src/streams/ReadableStream.ts +4131 -0
  148. package/src/streams/TransformStream.ts +375 -0
  149. package/src/streams/WritableStream.ts +866 -0
  150. package/src/streams/index.ts +41 -0
  151. package/src/timers/Timers.ts +296 -0
  152. package/src/timers/index.ts +11 -0
  153. package/src/url/URL.ts +656 -0
  154. package/src/url/URLPattern.ts +850 -0
  155. package/src/url/URLSearchParams.ts +244 -0
  156. package/src/url/index.ts +9 -0
  157. package/src/websocket/WebSocket.ts +770 -0
  158. package/src/websocket/WebSocketError.ts +52 -0
  159. package/src/websocket/WebSocketStream.ts +628 -0
  160. package/src/websocket/index.ts +7 -0
  161. package/src/window/index.ts +872 -0
@@ -0,0 +1,375 @@
1
+ // @ts-nocheck
2
+ /**
3
+ * TransformStream - WHATWG Streams API Implementation
4
+ *
5
+ * @see https://streams.spec.whatwg.org/#ts-class
6
+ *
7
+ * This implementation supports:
8
+ * - Transformer with start/transform/flush
9
+ * - TransformStreamDefaultController with enqueue/error/terminate
10
+ * - Readable and writable sides
11
+ * - Backpressure propagation
12
+ * - Symbol.toStringTag
13
+ */
14
+
15
+ import {
16
+ ReadableStream,
17
+ ReadableStreamDefaultController,
18
+ } from './ReadableStream';
19
+ import {
20
+ WritableStream,
21
+ WritableStreamDefaultController,
22
+ } from './WritableStream';
23
+ import type { QueuingStrategy } from './WritableStream';
24
+
25
+ // Capture Promise methods at module load time to be immune to monkey-patching
26
+ const originalPromiseThen = Promise.prototype.then;
27
+ const originalPromiseResolve = Promise.resolve.bind(Promise);
28
+ const originalPromiseReject = Promise.reject.bind(Promise);
29
+
30
+ function promiseThen<T, TResult1 = T, TResult2 = never>(
31
+ promise: PromiseLike<T>,
32
+ onFulfilled?: ((value: T) => TResult1 | PromiseLike<TResult1>) | null,
33
+ onRejected?: ((reason: any) => TResult2 | PromiseLike<TResult2>) | null
34
+ ): Promise<TResult1 | TResult2> {
35
+ return originalPromiseThen.call(promise, onFulfilled, onRejected);
36
+ }
37
+
38
+ // ============================================================================
39
+ // Types
40
+ // ============================================================================
41
+
42
+ export interface Transformer<I = any, O = any> {
43
+ start?: (controller: TransformStreamDefaultController<O>) => void | Promise<void>;
44
+ transform?: (chunk: I, controller: TransformStreamDefaultController<O>) => void | Promise<void>;
45
+ cancel?: (reason: any) => void | Promise<void>;
46
+ flush?: (controller: TransformStreamDefaultController<O>) => void | Promise<void>;
47
+ readableType?: undefined;
48
+ writableType?: undefined;
49
+ }
50
+
51
+ // ============================================================================
52
+ // TransformStreamDefaultController
53
+ // ============================================================================
54
+
55
+ export class TransformStreamDefaultController<O = any> {
56
+ /** @internal */
57
+ _stream: TransformStream<any, O>;
58
+ /** @internal */
59
+ _transformAlgorithm: ((chunk: any) => Promise<void>) | undefined;
60
+ /** @internal */
61
+ _flushAlgorithm: (() => Promise<void>) | undefined;
62
+
63
+ /** @internal */
64
+ constructor(stream: TransformStream<any, O>) {
65
+ this._stream = stream;
66
+ }
67
+
68
+ get desiredSize(): number | null {
69
+ const readableController = this._stream._readable._controller;
70
+ if (readableController === undefined) return null;
71
+ return readableController.desiredSize;
72
+ }
73
+
74
+ enqueue(chunk: O): void {
75
+ const readableController = this._stream._readable._controller;
76
+ if (readableController === undefined) {
77
+ throw new TypeError('Readable side has no controller');
78
+ }
79
+
80
+ try {
81
+ readableController.enqueue(chunk);
82
+ } catch (e) {
83
+ // If enqueue throws (e.g., stream is not readable), propagate error
84
+ const writable = this._stream._writable;
85
+ if (writable === undefined) {
86
+ this._stream._pendingWritableError = e;
87
+ } else {
88
+ writable._errorStream(e);
89
+ }
90
+ throw this._stream._readable._storedError ?? e;
91
+ }
92
+
93
+ // Update backpressure based on readable side
94
+ const backpressure = readableController.desiredSize !== null &&
95
+ readableController.desiredSize <= 0;
96
+ if (backpressure !== this._stream._backpressure) {
97
+ this._stream._updateBackpressure(backpressure);
98
+ }
99
+ }
100
+
101
+ error(reason?: any): void {
102
+ const readable = this._stream._readable;
103
+ const writable = this._stream._writable;
104
+
105
+ // Error the readable side
106
+ if (readable._controller) {
107
+ readable._controller._error(reason);
108
+ }
109
+
110
+ // Error the writable side
111
+ if (writable === undefined) {
112
+ this._stream._pendingWritableError = reason;
113
+ } else {
114
+ writable._errorStream(reason);
115
+ }
116
+
117
+ // Update backpressure flag
118
+ if (this._stream._backpressure) {
119
+ this._stream._updateBackpressure(false);
120
+ }
121
+ }
122
+
123
+ terminate(): void {
124
+ if (this._stream._isTerminated) {
125
+ return;
126
+ }
127
+ this._stream._isTerminated = true;
128
+
129
+ const readable = this._stream._readable;
130
+ const writable = this._stream._writable;
131
+
132
+ // Close the readable side
133
+ if (readable._state === 'readable' && readable._controller) {
134
+ readable._controller.close();
135
+ }
136
+
137
+ // Error the writable side with a TypeError
138
+ const error = new TypeError('TransformStream terminated');
139
+ if (writable === undefined) {
140
+ this._stream._pendingWritableError = error;
141
+ } else {
142
+ writable._errorStream(error);
143
+ }
144
+
145
+ // Update backpressure flag
146
+ if (this._stream._backpressure) {
147
+ this._stream._updateBackpressure(false);
148
+ }
149
+ }
150
+
151
+ get [Symbol.toStringTag](): string {
152
+ return 'TransformStreamDefaultController';
153
+ }
154
+ }
155
+
156
+ // ============================================================================
157
+ // TransformStream
158
+ // ============================================================================
159
+
160
+ export class TransformStream<I = any, O = any> {
161
+ /** @internal */
162
+ _readable: ReadableStream<O>;
163
+ /** @internal */
164
+ _writable: WritableStream<I>;
165
+ /** @internal */
166
+ _controller: TransformStreamDefaultController<O>;
167
+ /** @internal */
168
+ _backpressure: boolean = false;
169
+ /** @internal */
170
+ _backpressureResolve: ((value?: any) => void) | undefined;
171
+ /** @internal */
172
+ _pendingWritableError: any = undefined;
173
+ /** @internal */
174
+ _isTerminated: boolean = false;
175
+
176
+ get readable(): ReadableStream<O> {
177
+ return this._readable;
178
+ }
179
+
180
+ get writable(): WritableStream<I> {
181
+ return this._writable;
182
+ }
183
+
184
+ constructor(
185
+ transformer?: Transformer<I, O>,
186
+ writableStrategy?: QueuingStrategy<I>,
187
+ readableStrategy?: QueuingStrategy<O>
188
+ ) {
189
+ const trans = transformer ?? {};
190
+ const transformAsAny = trans as any;
191
+ let pendingCancel: Promise<void> | undefined;
192
+ const cancelAlgorithm = (reason: any) => {
193
+ if (pendingCancel !== undefined) {
194
+ return pendingCancel;
195
+ }
196
+
197
+ if (transformAsAny.cancel === undefined) {
198
+ pendingCancel = originalPromiseResolve();
199
+ return pendingCancel;
200
+ }
201
+
202
+ try {
203
+ pendingCancel = originalPromiseResolve(transformAsAny.cancel(reason));
204
+ } catch (e) {
205
+ pendingCancel = originalPromiseReject(e);
206
+ }
207
+ return pendingCancel;
208
+ };
209
+
210
+ // Validate types
211
+ if (trans.readableType !== undefined) {
212
+ throw new RangeError('readableType not supported');
213
+ }
214
+ if (trans.writableType !== undefined) {
215
+ throw new RangeError('writableType not supported');
216
+ }
217
+
218
+ this._controller = new TransformStreamDefaultController(this);
219
+
220
+ // Build transform algorithm
221
+ const controller = this._controller;
222
+ const transformAlgorithm = trans.transform
223
+ ? function (chunk: I): Promise<void> {
224
+ try {
225
+ return originalPromiseResolve(transformAsAny.transform(chunk, controller));
226
+ } catch (e) {
227
+ return originalPromiseReject(e);
228
+ }
229
+ }
230
+ : function (chunk: I): Promise<void> {
231
+ // Default: pass-through
232
+ try {
233
+ controller.enqueue(chunk as unknown as O);
234
+ } catch (e) {
235
+ return originalPromiseReject(e);
236
+ }
237
+ return originalPromiseResolve();
238
+ };
239
+
240
+ // Build flush algorithm
241
+ const flushAlgorithm = trans.flush
242
+ ? function (): Promise<void> {
243
+ try {
244
+ return originalPromiseResolve(transformAsAny.flush(controller));
245
+ } catch (e) {
246
+ return originalPromiseReject(e);
247
+ }
248
+ }
249
+ : function (): Promise<void> {
250
+ return originalPromiseResolve();
251
+ };
252
+
253
+ controller._transformAlgorithm = transformAlgorithm;
254
+ controller._flushAlgorithm = flushAlgorithm;
255
+
256
+ // Create readable side
257
+ // The readable's pull should resolve backpressure
258
+ // Per spec, TransformStream readable side defaults to HWM 0 (not 1 like
259
+ // a standalone ReadableStream). This ensures pull is only triggered by
260
+ // actual read requests, not by available queue space, which is critical
261
+ // for correct backpressure propagation.
262
+ const self = this;
263
+ const effectiveReadableStrategy = readableStrategy ?? { highWaterMark: 0 };
264
+ this._readable = new ReadableStream<O>(
265
+ {
266
+ pull: function () {
267
+ // When the readable side pulls, that means the consumer wants data.
268
+ // Resolve backpressure so the writable side can proceed.
269
+ if (self._backpressure) {
270
+ self._updateBackpressure(false);
271
+ }
272
+ return originalPromiseResolve();
273
+ },
274
+ cancel: function (reason: any) {
275
+ // When readable is cancelled, error the writable
276
+ return promiseThen(cancelAlgorithm(reason), function () {
277
+ self._writable._errorStream(reason);
278
+ }, function (e) {
279
+ self._writable._errorStream(e);
280
+ throw e;
281
+ });
282
+ },
283
+ },
284
+ effectiveReadableStrategy
285
+ );
286
+
287
+ // Create writable side
288
+ this._writable = new WritableStream<I>(
289
+ {
290
+ start: function (ctrl: WritableStreamDefaultController) {
291
+ // Run the transformer's start algorithm
292
+ if (transformAsAny.start) {
293
+ return transformAsAny.start(controller);
294
+ }
295
+ return undefined;
296
+ },
297
+ write: function (chunk: I) {
298
+ // If there's backpressure, wait for it to be resolved
299
+ if (self._backpressure) {
300
+ return promiseThen(new Promise(function (resolve) {
301
+ const prevResolve = self._backpressureResolve;
302
+ self._backpressureResolve = function (value) {
303
+ if (prevResolve) prevResolve(value);
304
+ resolve(undefined);
305
+ };
306
+ }), function () {
307
+ return transformAlgorithm(chunk);
308
+ });
309
+ }
310
+ return transformAlgorithm(chunk);
311
+ },
312
+ close: function () {
313
+ // Run the flush algorithm then close the readable side
314
+ return promiseThen(flushAlgorithm(), function () {
315
+ const readableController = self._readable._controller;
316
+ if (readableController) {
317
+ // Only close if still readable
318
+ if (self._readable._state === 'readable') {
319
+ readableController.close();
320
+ }
321
+ }
322
+ }, function (e) {
323
+ // Error both sides
324
+ if (self._readable._controller) {
325
+ self._readable._controller._error(e);
326
+ }
327
+ throw e;
328
+ });
329
+ },
330
+ abort: function (reason: any) {
331
+ return promiseThen(cancelAlgorithm(reason), function () {
332
+ if (self._readable._controller) {
333
+ self._readable._controller._error(reason);
334
+ }
335
+ }, function (e) {
336
+ if (self._readable._controller) {
337
+ self._readable._controller._error(e);
338
+ }
339
+ throw e;
340
+ });
341
+ },
342
+ },
343
+ writableStrategy
344
+ );
345
+ if (this._pendingWritableError !== undefined) {
346
+ const pendingError = this._pendingWritableError;
347
+ this._pendingWritableError = undefined;
348
+ this._writable._errorStream(pendingError);
349
+ }
350
+
351
+ // Per spec, TransformStream starts with backpressure true. This ensures
352
+ // writes to the writable side wait until the readable side is being consumed.
353
+ this._updateBackpressure(true);
354
+ }
355
+
356
+ /** @internal */
357
+ _updateBackpressure(backpressure: boolean): void {
358
+ if (this._backpressure !== backpressure) {
359
+ const wasBackpressured = this._backpressure;
360
+ this._backpressure = backpressure;
361
+
362
+ // If backpressure was just relieved, notify anyone waiting
363
+ if (wasBackpressured && !backpressure) {
364
+ if (this._backpressureResolve) {
365
+ this._backpressureResolve(undefined);
366
+ this._backpressureResolve = undefined;
367
+ }
368
+ }
369
+ }
370
+ }
371
+
372
+ get [Symbol.toStringTag](): string {
373
+ return 'TransformStream';
374
+ }
375
+ }