@ricsam/quickjs-core 0.0.1 → 0.2.1

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 (79) hide show
  1. package/README.md +36 -43
  2. package/dist/cjs/blob.cjs +197 -0
  3. package/dist/cjs/blob.cjs.map +10 -0
  4. package/dist/cjs/class-builder.cjs +244 -0
  5. package/dist/cjs/class-builder.cjs.map +10 -0
  6. package/dist/cjs/dom-exception.cjs +95 -0
  7. package/dist/cjs/dom-exception.cjs.map +10 -0
  8. package/dist/cjs/file.cjs +234 -0
  9. package/dist/cjs/file.cjs.map +10 -0
  10. package/dist/cjs/function-builder.cjs +70 -0
  11. package/dist/cjs/function-builder.cjs.map +10 -0
  12. package/dist/cjs/index.cjs +143 -0
  13. package/dist/cjs/index.cjs.map +10 -0
  14. package/dist/cjs/marshal.cjs +191 -0
  15. package/dist/cjs/marshal.cjs.map +10 -0
  16. package/dist/cjs/package.json +5 -0
  17. package/dist/cjs/readable-stream.cjs +588 -0
  18. package/dist/cjs/readable-stream.cjs.map +10 -0
  19. package/dist/cjs/scope.cjs +76 -0
  20. package/dist/cjs/scope.cjs.map +10 -0
  21. package/dist/cjs/transform-stream.cjs +152 -0
  22. package/dist/cjs/transform-stream.cjs.map +10 -0
  23. package/dist/cjs/types.cjs +39 -0
  24. package/dist/cjs/types.cjs.map +10 -0
  25. package/dist/cjs/unmarshal.cjs +254 -0
  26. package/dist/cjs/unmarshal.cjs.map +10 -0
  27. package/dist/cjs/url-search-params.cjs +165 -0
  28. package/dist/cjs/url-search-params.cjs.map +10 -0
  29. package/dist/cjs/url.cjs +183 -0
  30. package/dist/cjs/url.cjs.map +10 -0
  31. package/dist/cjs/writable-stream.cjs +513 -0
  32. package/dist/cjs/writable-stream.cjs.map +10 -0
  33. package/dist/mjs/blob.mjs +166 -0
  34. package/dist/mjs/blob.mjs.map +10 -0
  35. package/dist/mjs/class-builder.mjs +213 -0
  36. package/dist/mjs/class-builder.mjs.map +10 -0
  37. package/dist/mjs/dom-exception.mjs +64 -0
  38. package/dist/mjs/dom-exception.mjs.map +10 -0
  39. package/dist/mjs/file.mjs +203 -0
  40. package/dist/mjs/file.mjs.map +10 -0
  41. package/dist/mjs/function-builder.mjs +39 -0
  42. package/dist/mjs/function-builder.mjs.map +10 -0
  43. package/dist/mjs/index.mjs +132 -0
  44. package/dist/mjs/index.mjs.map +10 -0
  45. package/dist/mjs/marshal.mjs +160 -0
  46. package/dist/mjs/marshal.mjs.map +10 -0
  47. package/dist/mjs/package.json +5 -0
  48. package/dist/mjs/readable-stream.mjs +557 -0
  49. package/dist/mjs/readable-stream.mjs.map +10 -0
  50. package/dist/mjs/scope.mjs +45 -0
  51. package/dist/mjs/scope.mjs.map +10 -0
  52. package/dist/mjs/transform-stream.mjs +121 -0
  53. package/dist/mjs/transform-stream.mjs.map +10 -0
  54. package/dist/mjs/types.mjs +8 -0
  55. package/dist/mjs/types.mjs.map +10 -0
  56. package/dist/mjs/unmarshal.mjs +223 -0
  57. package/dist/mjs/unmarshal.mjs.map +10 -0
  58. package/dist/mjs/url-search-params.mjs +134 -0
  59. package/dist/mjs/url-search-params.mjs.map +10 -0
  60. package/dist/mjs/url.mjs +152 -0
  61. package/dist/mjs/url.mjs.map +10 -0
  62. package/dist/mjs/writable-stream.mjs +482 -0
  63. package/dist/mjs/writable-stream.mjs.map +10 -0
  64. package/dist/types/blob.d.ts +19 -0
  65. package/dist/types/class-builder.d.ts +62 -0
  66. package/dist/types/dom-exception.d.ts +8 -0
  67. package/dist/types/file.d.ts +10 -0
  68. package/dist/types/function-builder.d.ts +23 -0
  69. package/dist/types/index.d.ts +45 -0
  70. package/dist/types/marshal.d.ts +30 -0
  71. package/dist/types/scope.d.ts +18 -0
  72. package/dist/types/streams/readable-stream.d.ts +18 -0
  73. package/dist/types/streams/transform-stream.d.ts +6 -0
  74. package/dist/types/streams/writable-stream.d.ts +14 -0
  75. package/dist/types/types.d.ts +83 -0
  76. package/dist/types/unmarshal.d.ts +14 -0
  77. package/dist/types/url-search-params.d.ts +12 -0
  78. package/dist/types/url.d.ts +30 -0
  79. package/package.json +50 -6
@@ -0,0 +1,513 @@
1
+ // @bun @bun-cjs
2
+ (function(exports, require, module, __filename, __dirname) {var __defProp = Object.defineProperty;
3
+ var __getOwnPropNames = Object.getOwnPropertyNames;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __moduleCache = /* @__PURE__ */ new WeakMap;
7
+ var __toCommonJS = (from) => {
8
+ var entry = __moduleCache.get(from), desc;
9
+ if (entry)
10
+ return entry;
11
+ entry = __defProp({}, "__esModule", { value: true });
12
+ if (from && typeof from === "object" || typeof from === "function")
13
+ __getOwnPropNames(from).map((key) => !__hasOwnProp.call(entry, key) && __defProp(entry, key, {
14
+ get: () => from[key],
15
+ enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
16
+ }));
17
+ __moduleCache.set(from, entry);
18
+ return entry;
19
+ };
20
+ var __export = (target, all) => {
21
+ for (var name in all)
22
+ __defProp(target, name, {
23
+ get: all[name],
24
+ enumerable: true,
25
+ configurable: true,
26
+ set: (newValue) => all[name] = () => newValue
27
+ });
28
+ };
29
+
30
+ // packages/core/src/streams/writable-stream.ts
31
+ var exports_writable_stream = {};
32
+ __export(exports_writable_stream, {
33
+ createWritableStreamDefaultWriterClass: () => createWritableStreamDefaultWriterClass,
34
+ createWritableStreamClass: () => createWritableStreamClass,
35
+ createWritableStream: () => createWritableStream
36
+ });
37
+ module.exports = __toCommonJS(exports_writable_stream);
38
+ var import_class_builder = require("../class-builder.ts");
39
+ var import_marshal = require("../marshal.ts");
40
+ var import_unmarshal = require("../unmarshal.ts");
41
+ function createWritableStreamDefaultWriterClass(context, stateMap) {
42
+ return import_class_builder.defineClass(context, stateMap, {
43
+ name: "WritableStreamDefaultWriter",
44
+ construct: () => {
45
+ let resolveClosedPromise;
46
+ let rejectClosedPromise;
47
+ let resolveReadyPromise;
48
+ let rejectReadyPromise;
49
+ const state = {
50
+ stream: null,
51
+ closedPromiseResolvers: {
52
+ resolve: () => resolveClosedPromise?.(),
53
+ reject: (e) => rejectClosedPromise?.(e)
54
+ },
55
+ readyPromiseResolvers: {
56
+ resolve: () => resolveReadyPromise?.(),
57
+ reject: (e) => rejectReadyPromise?.(e)
58
+ }
59
+ };
60
+ Object.defineProperty(state, "_closedPromise", {
61
+ value: undefined,
62
+ writable: true,
63
+ enumerable: false
64
+ });
65
+ Object.defineProperty(state, "_readyPromise", {
66
+ value: undefined,
67
+ writable: true,
68
+ enumerable: false
69
+ });
70
+ Object.defineProperty(state, "getClosedPromise", {
71
+ value: function() {
72
+ if (!this._closedPromise) {
73
+ this._closedPromise = new Promise((resolve, reject) => {
74
+ resolveClosedPromise = resolve;
75
+ rejectClosedPromise = reject;
76
+ });
77
+ }
78
+ return this._closedPromise;
79
+ },
80
+ enumerable: false
81
+ });
82
+ Object.defineProperty(state, "getReadyPromise", {
83
+ value: function() {
84
+ if (!this._readyPromise) {
85
+ this._readyPromise = new Promise((resolve, reject) => {
86
+ resolveReadyPromise = resolve;
87
+ rejectReadyPromise = reject;
88
+ });
89
+ }
90
+ return this._readyPromise;
91
+ },
92
+ enumerable: false
93
+ });
94
+ return state;
95
+ },
96
+ properties: {
97
+ closed: {
98
+ get() {
99
+ return this.getClosedPromise();
100
+ }
101
+ },
102
+ ready: {
103
+ get() {
104
+ return this.getReadyPromise();
105
+ }
106
+ },
107
+ desiredSize: {
108
+ get() {
109
+ if (!this.stream)
110
+ return null;
111
+ if (this.stream.errored)
112
+ return null;
113
+ if (this.stream.closeRequested)
114
+ return 0;
115
+ return 1 - this.stream.writeRequests.length;
116
+ }
117
+ }
118
+ },
119
+ methods: {
120
+ write(chunk) {
121
+ if (!this.stream) {
122
+ return Promise.reject(new TypeError("Writer has no stream"));
123
+ }
124
+ if (this.stream.errored) {
125
+ return Promise.reject(this.stream.errorValue);
126
+ }
127
+ if (this.stream.closeRequested || this.stream.closed) {
128
+ return Promise.reject(new TypeError("Cannot write to a closed stream"));
129
+ }
130
+ const self = this;
131
+ return new Promise((resolve, reject) => {
132
+ self.stream.writeRequests.push({ chunk, resolve, reject });
133
+ processWriteRequests.call(self);
134
+ });
135
+ },
136
+ close() {
137
+ if (!this.stream) {
138
+ return Promise.reject(new TypeError("Writer has no stream"));
139
+ }
140
+ if (this.stream.closeRequested || this.stream.closed) {
141
+ return Promise.reject(new TypeError("Stream is already closing or closed"));
142
+ }
143
+ this.stream.closeRequested = true;
144
+ return new Promise((resolve, reject) => {
145
+ const checkWritesComplete = () => {
146
+ if (this.stream.writeRequests.length === 0 && !this.stream.inFlightWriteRequest) {
147
+ if (this.stream.sink?.close) {
148
+ try {
149
+ const result = this.stream.sink.close();
150
+ if (result instanceof Promise) {
151
+ result.then(() => {
152
+ this.stream.closed = true;
153
+ this.closedPromiseResolvers.resolve();
154
+ resolve();
155
+ }).catch((e) => {
156
+ this.stream.errored = true;
157
+ this.stream.errorValue = e;
158
+ this.closedPromiseResolvers.reject(e);
159
+ reject(e);
160
+ });
161
+ return;
162
+ }
163
+ } catch (e) {
164
+ this.stream.errored = true;
165
+ this.stream.errorValue = e;
166
+ this.closedPromiseResolvers.reject(e);
167
+ reject(e);
168
+ return;
169
+ }
170
+ }
171
+ this.stream.closed = true;
172
+ this.closedPromiseResolvers.resolve();
173
+ resolve();
174
+ } else {
175
+ setTimeout(checkWritesComplete, 0);
176
+ }
177
+ };
178
+ checkWritesComplete();
179
+ });
180
+ },
181
+ abort(reason) {
182
+ if (!this.stream) {
183
+ return Promise.reject(new TypeError("Writer has no stream"));
184
+ }
185
+ return new Promise((resolve, reject) => {
186
+ try {
187
+ this.stream.writeRequests.forEach((req) => req.reject(reason));
188
+ this.stream.writeRequests = [];
189
+ if (this.stream.sink?.abort) {
190
+ const result = this.stream.sink.abort(reason);
191
+ if (result instanceof Promise) {
192
+ result.then(resolve).catch(reject);
193
+ return;
194
+ }
195
+ }
196
+ this.stream.errored = true;
197
+ this.stream.errorValue = reason;
198
+ this.closedPromiseResolvers.reject(reason);
199
+ resolve();
200
+ } catch (e) {
201
+ reject(e);
202
+ }
203
+ });
204
+ },
205
+ releaseLock() {
206
+ if (!this.stream)
207
+ return;
208
+ this.stream.locked = false;
209
+ this.stream.writer = null;
210
+ }
211
+ }
212
+ });
213
+ }
214
+ function processWriteRequests() {
215
+ if (this.stream.inFlightWriteRequest || this.stream.writeRequests.length === 0 || !this.stream.started) {
216
+ return;
217
+ }
218
+ const request = this.stream.writeRequests.shift();
219
+ this.stream.inFlightWriteRequest = request;
220
+ if (this.stream.sink?.write) {
221
+ try {
222
+ const result = this.stream.sink.write(request.chunk, this.stream.controller);
223
+ if (result instanceof Promise) {
224
+ result.then(() => {
225
+ this.stream.inFlightWriteRequest = null;
226
+ request.resolve();
227
+ processWriteRequests.call(this);
228
+ }).catch((e) => {
229
+ this.stream.inFlightWriteRequest = null;
230
+ this.stream.errored = true;
231
+ this.stream.errorValue = e;
232
+ request.reject(e);
233
+ this.stream.writeRequests.forEach((req) => req.reject(e));
234
+ this.stream.writeRequests = [];
235
+ });
236
+ return;
237
+ }
238
+ } catch (e) {
239
+ this.stream.inFlightWriteRequest = null;
240
+ this.stream.errored = true;
241
+ this.stream.errorValue = e;
242
+ request.reject(e);
243
+ return;
244
+ }
245
+ }
246
+ this.stream.inFlightWriteRequest = null;
247
+ request.resolve();
248
+ processWriteRequests.call(this);
249
+ }
250
+ function createWritableStreamClass(context, stateMap, writerClass) {
251
+ const classHandle = import_class_builder.defineClass(context, stateMap, {
252
+ name: "WritableStream",
253
+ construct: (args) => {
254
+ const underlyingSink = args[0];
255
+ const state = {
256
+ locked: false,
257
+ writer: null,
258
+ controller: null,
259
+ closed: false,
260
+ errored: false,
261
+ errorValue: undefined,
262
+ closeRequested: false,
263
+ inFlightWriteRequest: null,
264
+ writeRequests: [],
265
+ sink: underlyingSink,
266
+ started: false
267
+ };
268
+ state.controller = {
269
+ error(e) {
270
+ if (state.errored || state.closed)
271
+ return;
272
+ state.errored = true;
273
+ state.errorValue = e;
274
+ state.writeRequests.forEach((req) => req.reject(e));
275
+ state.writeRequests = [];
276
+ if (state.writer) {
277
+ state.writer.closedPromiseResolvers.reject(e);
278
+ state.writer.readyPromiseResolvers.reject(e);
279
+ }
280
+ }
281
+ };
282
+ if (underlyingSink?.start) {
283
+ try {
284
+ const startResult = underlyingSink.start(state.controller);
285
+ if (startResult instanceof Promise) {
286
+ startResult.then(() => {
287
+ state.started = true;
288
+ if (state.writer) {
289
+ state.writer.readyPromiseResolvers.resolve();
290
+ }
291
+ }).catch((e) => {
292
+ state.errored = true;
293
+ state.errorValue = e;
294
+ });
295
+ } else {
296
+ state.started = true;
297
+ }
298
+ } catch (e) {
299
+ state.errored = true;
300
+ state.errorValue = e;
301
+ }
302
+ } else {
303
+ state.started = true;
304
+ }
305
+ return state;
306
+ },
307
+ properties: {
308
+ locked: {
309
+ get() {
310
+ return this.locked;
311
+ }
312
+ }
313
+ },
314
+ methods: {
315
+ __linkWriter__(writerObj) {
316
+ if (this.locked) {
317
+ throw new TypeError("WritableStream is locked");
318
+ }
319
+ this.locked = true;
320
+ const writerId = writerObj.__instanceId__;
321
+ const writerState = import_class_builder.getInstanceStateById(writerId);
322
+ if (!writerState) {
323
+ throw new Error("Writer instance state not found");
324
+ }
325
+ writerState.stream = this;
326
+ this.writer = writerState;
327
+ if (this.started) {
328
+ writerState.readyPromiseResolvers.resolve();
329
+ }
330
+ },
331
+ abort(reason) {
332
+ if (this.locked) {
333
+ return Promise.reject(new TypeError("Cannot abort a locked stream"));
334
+ }
335
+ return new Promise((resolve, reject) => {
336
+ try {
337
+ this.writeRequests.forEach((req) => req.reject(reason));
338
+ this.writeRequests = [];
339
+ if (this.sink?.abort) {
340
+ const result = this.sink.abort(reason);
341
+ if (result instanceof Promise) {
342
+ result.then(resolve).catch(reject);
343
+ return;
344
+ }
345
+ }
346
+ this.errored = true;
347
+ this.errorValue = reason;
348
+ resolve();
349
+ } catch (e) {
350
+ reject(e);
351
+ }
352
+ });
353
+ },
354
+ close() {
355
+ if (this.locked) {
356
+ return Promise.reject(new TypeError("Cannot close a locked stream"));
357
+ }
358
+ if (this.closeRequested || this.closed) {
359
+ return Promise.reject(new TypeError("Stream is already closing or closed"));
360
+ }
361
+ this.closeRequested = true;
362
+ return new Promise((resolve, reject) => {
363
+ if (this.sink?.close) {
364
+ try {
365
+ const result = this.sink.close();
366
+ if (result instanceof Promise) {
367
+ result.then(() => {
368
+ this.closed = true;
369
+ resolve();
370
+ }).catch(reject);
371
+ return;
372
+ }
373
+ } catch (e) {
374
+ reject(e);
375
+ return;
376
+ }
377
+ }
378
+ this.closed = true;
379
+ resolve();
380
+ });
381
+ }
382
+ }
383
+ });
384
+ const prototypeHandle = context.getProp(classHandle, "prototype");
385
+ const getWriterCode = `(function() {
386
+ const writer = new WritableStreamDefaultWriter();
387
+ this.__linkWriter__(writer);
388
+ return writer;
389
+ })`;
390
+ const getWriterResult = context.evalCode(getWriterCode);
391
+ if (!getWriterResult.error) {
392
+ context.setProp(prototypeHandle, "getWriter", getWriterResult.value);
393
+ getWriterResult.value.dispose();
394
+ } else {
395
+ getWriterResult.error.dispose();
396
+ }
397
+ prototypeHandle.dispose();
398
+ return classHandle;
399
+ }
400
+ function createWritableStream(context, stateMap, sink) {
401
+ const sinkObj = context.newObject();
402
+ if (sink.start) {
403
+ const startFn = context.newFunction("start", (controllerHandle) => {
404
+ const controller = {
405
+ signal: new AbortController().signal,
406
+ error: (e) => {
407
+ const errorFn = context.getProp(controllerHandle, "error");
408
+ const errorHandle = import_marshal.marshal(context, e);
409
+ context.callFunction(errorFn, controllerHandle, errorHandle);
410
+ errorHandle.dispose();
411
+ errorFn.dispose();
412
+ }
413
+ };
414
+ const result2 = sink.start(controller);
415
+ if (result2 instanceof Promise) {
416
+ const deferred = context.newPromise();
417
+ result2.then(() => {
418
+ deferred.resolve(context.undefined);
419
+ context.runtime.executePendingJobs();
420
+ }).catch((e) => {
421
+ deferred.reject(import_marshal.marshal(context, e));
422
+ context.runtime.executePendingJobs();
423
+ });
424
+ return deferred.handle;
425
+ }
426
+ return context.undefined;
427
+ });
428
+ context.setProp(sinkObj, "start", startFn);
429
+ startFn.dispose();
430
+ }
431
+ if (sink.write) {
432
+ const writeFn = context.newFunction("write", (chunkHandle, controllerHandle) => {
433
+ const chunk = import_unmarshal.unmarshal(context, chunkHandle);
434
+ const controller = {
435
+ signal: new AbortController().signal,
436
+ error: (e) => {
437
+ const errorFn = context.getProp(controllerHandle, "error");
438
+ const errorHandle = import_marshal.marshal(context, e);
439
+ context.callFunction(errorFn, controllerHandle, errorHandle);
440
+ errorHandle.dispose();
441
+ errorFn.dispose();
442
+ }
443
+ };
444
+ const result2 = sink.write(chunk, controller);
445
+ if (result2 instanceof Promise) {
446
+ const deferred = context.newPromise();
447
+ result2.then(() => {
448
+ deferred.resolve(context.undefined);
449
+ context.runtime.executePendingJobs();
450
+ }).catch((e) => {
451
+ deferred.reject(import_marshal.marshal(context, e));
452
+ context.runtime.executePendingJobs();
453
+ });
454
+ return deferred.handle;
455
+ }
456
+ return context.undefined;
457
+ });
458
+ context.setProp(sinkObj, "write", writeFn);
459
+ writeFn.dispose();
460
+ }
461
+ if (sink.close) {
462
+ const closeFn = context.newFunction("close", () => {
463
+ const result2 = sink.close();
464
+ if (result2 instanceof Promise) {
465
+ const deferred = context.newPromise();
466
+ result2.then(() => {
467
+ deferred.resolve(context.undefined);
468
+ context.runtime.executePendingJobs();
469
+ }).catch((e) => {
470
+ deferred.reject(import_marshal.marshal(context, e));
471
+ context.runtime.executePendingJobs();
472
+ });
473
+ return deferred.handle;
474
+ }
475
+ return context.undefined;
476
+ });
477
+ context.setProp(sinkObj, "close", closeFn);
478
+ closeFn.dispose();
479
+ }
480
+ if (sink.abort) {
481
+ const abortFn = context.newFunction("abort", (reasonHandle) => {
482
+ const reason = import_unmarshal.unmarshal(context, reasonHandle);
483
+ const result2 = sink.abort(reason);
484
+ if (result2 instanceof Promise) {
485
+ const deferred = context.newPromise();
486
+ result2.then(() => {
487
+ deferred.resolve(context.undefined);
488
+ context.runtime.executePendingJobs();
489
+ }).catch((e) => {
490
+ deferred.reject(import_marshal.marshal(context, e));
491
+ context.runtime.executePendingJobs();
492
+ });
493
+ return deferred.handle;
494
+ }
495
+ return context.undefined;
496
+ });
497
+ context.setProp(sinkObj, "abort", abortFn);
498
+ abortFn.dispose();
499
+ }
500
+ const WritableStreamConstructor = context.getProp(context.global, "WritableStream");
501
+ const result = context.callFunction(WritableStreamConstructor, context.undefined, sinkObj);
502
+ WritableStreamConstructor.dispose();
503
+ sinkObj.dispose();
504
+ if (result.error) {
505
+ const error = context.dump(result.error);
506
+ result.error.dispose();
507
+ throw new Error(`Failed to create WritableStream: ${error}`);
508
+ }
509
+ return result.value;
510
+ }
511
+ })
512
+
513
+ //# debugId=ACD8E9C081DB101764756E2164756E21
@@ -0,0 +1,10 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/streams/writable-stream.ts"],
4
+ "sourcesContent": [
5
+ "import type { QuickJSContext, QuickJSHandle } from \"quickjs-emscripten\";\nimport type { StateMap } from \"../types.ts\";\nimport { defineClass, getInstanceStateById } from \"../class-builder.ts\";\nimport { marshal } from \"../marshal.ts\";\nimport { unmarshal } from \"../unmarshal.ts\";\n\ninterface WritableStreamController {\n error(e: unknown): void;\n}\n\ninterface WritableStreamInternalState {\n locked: boolean;\n writer: WritableStreamWriterState | null;\n controller: WritableStreamController;\n closed: boolean;\n errored: boolean;\n errorValue: unknown;\n closeRequested: boolean;\n inFlightWriteRequest: {\n resolve: () => void;\n reject: (e: unknown) => void;\n } | null;\n writeRequests: Array<{\n chunk: unknown;\n resolve: () => void;\n reject: (e: unknown) => void;\n }>;\n sink?: {\n start?: (controller: WritableStreamController) => void | Promise<void>;\n write?: (chunk: unknown, controller: WritableStreamController) => void | Promise<void>;\n close?: () => void | Promise<void>;\n abort?: (reason?: unknown) => void | Promise<void>;\n };\n started: boolean;\n}\n\ninterface WritableStreamWriterState {\n stream: WritableStreamInternalState;\n closedPromiseResolvers: {\n resolve: () => void;\n reject: (e: unknown) => void;\n };\n readyPromiseResolvers: {\n resolve: () => void;\n reject: (e: unknown) => void;\n };\n _closedPromise?: Promise<void>; // Lazy-created\n _readyPromise?: Promise<void>; // Lazy-created\n}\n\n/**\n * Create the WritableStreamDefaultWriter class\n */\nexport function createWritableStreamDefaultWriterClass(\n context: QuickJSContext,\n stateMap: StateMap\n): QuickJSHandle {\n return defineClass<WritableStreamWriterState>(context, stateMap, {\n name: \"WritableStreamDefaultWriter\",\n construct: () => {\n // Use lazy promise creation to avoid marshalling issues with handle cleanup\n let resolveClosedPromise: (() => void) | undefined;\n let rejectClosedPromise: ((e: unknown) => void) | undefined;\n let resolveReadyPromise: (() => void) | undefined;\n let rejectReadyPromise: ((e: unknown) => void) | undefined;\n\n const state: WritableStreamWriterState = {\n stream: null as unknown as WritableStreamInternalState,\n closedPromiseResolvers: {\n resolve: () => resolveClosedPromise?.(),\n reject: (e) => rejectClosedPromise?.(e),\n },\n readyPromiseResolvers: {\n resolve: () => resolveReadyPromise?.(),\n reject: (e) => rejectReadyPromise?.(e),\n },\n };\n\n // Define lazy promise properties (non-enumerable to avoid marshalling)\n Object.defineProperty(state, \"_closedPromise\", {\n value: undefined,\n writable: true,\n enumerable: false,\n });\n Object.defineProperty(state, \"_readyPromise\", {\n value: undefined,\n writable: true,\n enumerable: false,\n });\n\n // Create promise accessors (non-enumerable)\n Object.defineProperty(state, \"getClosedPromise\", {\n value: function (this: WritableStreamWriterState): Promise<void> {\n if (!this._closedPromise) {\n this._closedPromise = new Promise<void>((resolve, reject) => {\n resolveClosedPromise = resolve;\n rejectClosedPromise = reject;\n });\n }\n return this._closedPromise;\n },\n enumerable: false,\n });\n\n Object.defineProperty(state, \"getReadyPromise\", {\n value: function (this: WritableStreamWriterState): Promise<void> {\n if (!this._readyPromise) {\n this._readyPromise = new Promise<void>((resolve, reject) => {\n resolveReadyPromise = resolve;\n rejectReadyPromise = reject;\n });\n }\n return this._readyPromise;\n },\n enumerable: false,\n });\n\n return state;\n },\n properties: {\n closed: {\n get(this: WritableStreamWriterState) {\n return (this as unknown as { getClosedPromise: () => Promise<void> }).getClosedPromise();\n },\n },\n ready: {\n get(this: WritableStreamWriterState) {\n return (this as unknown as { getReadyPromise: () => Promise<void> }).getReadyPromise();\n },\n },\n desiredSize: {\n get(this: WritableStreamWriterState) {\n if (!this.stream) return null;\n if (this.stream.errored) return null;\n if (this.stream.closeRequested) return 0;\n return 1 - this.stream.writeRequests.length;\n },\n },\n },\n methods: {\n write(this: WritableStreamWriterState, chunk: unknown): Promise<void> {\n if (!this.stream) {\n return Promise.reject(new TypeError(\"Writer has no stream\"));\n }\n if (this.stream.errored) {\n return Promise.reject(this.stream.errorValue);\n }\n if (this.stream.closeRequested || this.stream.closed) {\n return Promise.reject(new TypeError(\"Cannot write to a closed stream\"));\n }\n\n const self = this;\n return new Promise((resolve, reject) => {\n self.stream.writeRequests.push({ chunk, resolve, reject });\n processWriteRequests.call(self);\n });\n },\n close(this: WritableStreamWriterState): Promise<void> {\n if (!this.stream) {\n return Promise.reject(new TypeError(\"Writer has no stream\"));\n }\n if (this.stream.closeRequested || this.stream.closed) {\n return Promise.reject(new TypeError(\"Stream is already closing or closed\"));\n }\n\n this.stream.closeRequested = true;\n\n return new Promise((resolve, reject) => {\n // Wait for all writes to complete\n const checkWritesComplete = () => {\n if (this.stream.writeRequests.length === 0 && !this.stream.inFlightWriteRequest) {\n // Call close on sink\n if (this.stream.sink?.close) {\n try {\n const result = this.stream.sink.close();\n if (result instanceof Promise) {\n result\n .then(() => {\n this.stream.closed = true;\n this.closedPromiseResolvers.resolve();\n resolve();\n })\n .catch((e) => {\n this.stream.errored = true;\n this.stream.errorValue = e;\n this.closedPromiseResolvers.reject(e);\n reject(e);\n });\n return;\n }\n } catch (e) {\n this.stream.errored = true;\n this.stream.errorValue = e;\n this.closedPromiseResolvers.reject(e);\n reject(e);\n return;\n }\n }\n this.stream.closed = true;\n this.closedPromiseResolvers.resolve();\n resolve();\n } else {\n setTimeout(checkWritesComplete, 0);\n }\n };\n checkWritesComplete();\n });\n },\n abort(this: WritableStreamWriterState, reason?: unknown): Promise<void> {\n if (!this.stream) {\n return Promise.reject(new TypeError(\"Writer has no stream\"));\n }\n\n return new Promise((resolve, reject) => {\n try {\n // Reject all pending writes\n this.stream.writeRequests.forEach((req) => req.reject(reason));\n this.stream.writeRequests = [];\n\n if (this.stream.sink?.abort) {\n const result = this.stream.sink.abort(reason);\n if (result instanceof Promise) {\n result.then(resolve).catch(reject);\n return;\n }\n }\n this.stream.errored = true;\n this.stream.errorValue = reason;\n this.closedPromiseResolvers.reject(reason);\n resolve();\n } catch (e) {\n reject(e);\n }\n });\n },\n releaseLock(this: WritableStreamWriterState): void {\n if (!this.stream) return;\n this.stream.locked = false;\n this.stream.writer = null;\n },\n },\n });\n}\n\n// Add helper method to WritableStreamWriterState\nfunction processWriteRequests(this: WritableStreamWriterState) {\n if (\n this.stream.inFlightWriteRequest ||\n this.stream.writeRequests.length === 0 ||\n !this.stream.started\n ) {\n return;\n }\n\n const request = this.stream.writeRequests.shift()!;\n this.stream.inFlightWriteRequest = request;\n\n if (this.stream.sink?.write) {\n try {\n const result = this.stream.sink.write(request.chunk, this.stream.controller);\n if (result instanceof Promise) {\n result\n .then(() => {\n this.stream.inFlightWriteRequest = null;\n request.resolve();\n processWriteRequests.call(this);\n })\n .catch((e) => {\n this.stream.inFlightWriteRequest = null;\n this.stream.errored = true;\n this.stream.errorValue = e;\n request.reject(e);\n // Reject remaining writes\n this.stream.writeRequests.forEach((req) => req.reject(e));\n this.stream.writeRequests = [];\n });\n return;\n }\n } catch (e) {\n this.stream.inFlightWriteRequest = null;\n this.stream.errored = true;\n this.stream.errorValue = e;\n request.reject(e);\n return;\n }\n }\n\n this.stream.inFlightWriteRequest = null;\n request.resolve();\n processWriteRequests.call(this);\n}\n\n\n/**\n * Create the WritableStream class\n */\nexport function createWritableStreamClass(\n context: QuickJSContext,\n stateMap: StateMap,\n writerClass: QuickJSHandle\n): QuickJSHandle {\n const classHandle = defineClass<WritableStreamInternalState>(context, stateMap, {\n name: \"WritableStream\",\n construct: (args) => {\n const underlyingSink = args[0] as {\n start?: (controller: WritableStreamController) => void | Promise<void>;\n write?: (chunk: unknown, controller: WritableStreamController) => void | Promise<void>;\n close?: () => void | Promise<void>;\n abort?: (reason?: unknown) => void | Promise<void>;\n } | undefined;\n\n const state: WritableStreamInternalState = {\n locked: false,\n writer: null,\n controller: null as unknown as WritableStreamController,\n closed: false,\n errored: false,\n errorValue: undefined,\n closeRequested: false,\n inFlightWriteRequest: null,\n writeRequests: [],\n sink: underlyingSink,\n started: false,\n };\n\n // Create controller\n state.controller = {\n error(e: unknown) {\n if (state.errored || state.closed) return;\n state.errored = true;\n state.errorValue = e;\n\n // Reject all pending writes\n state.writeRequests.forEach((req) => req.reject(e));\n state.writeRequests = [];\n\n if (state.writer) {\n state.writer.closedPromiseResolvers.reject(e);\n state.writer.readyPromiseResolvers.reject(e);\n }\n },\n };\n\n // Call start if provided\n if (underlyingSink?.start) {\n try {\n const startResult = underlyingSink.start(state.controller);\n if (startResult instanceof Promise) {\n startResult\n .then(() => {\n state.started = true;\n if (state.writer) {\n state.writer.readyPromiseResolvers.resolve();\n }\n })\n .catch((e) => {\n state.errored = true;\n state.errorValue = e;\n });\n } else {\n state.started = true;\n }\n } catch (e) {\n state.errored = true;\n state.errorValue = e;\n }\n } else {\n state.started = true;\n }\n\n return state;\n },\n properties: {\n locked: {\n get(this: WritableStreamInternalState) {\n return this.locked;\n },\n },\n },\n methods: {\n // __linkWriter__ is called from JavaScript getWriter() to link stream and writer states\n __linkWriter__(this: WritableStreamInternalState, writerObj: unknown): void {\n if (this.locked) {\n throw new TypeError(\"WritableStream is locked\");\n }\n this.locked = true;\n\n // Get the writer's internal state from instanceStateMap\n const writerId = (writerObj as { __instanceId__: number }).__instanceId__;\n const writerState = getInstanceStateById<WritableStreamWriterState>(writerId);\n if (!writerState) {\n throw new Error(\"Writer instance state not found\");\n }\n\n // Link bidirectionally\n writerState.stream = this;\n this.writer = writerState;\n\n // Resolve ready promise if stream already started\n if (this.started) {\n writerState.readyPromiseResolvers.resolve();\n }\n },\n abort(this: WritableStreamInternalState, reason?: unknown): Promise<void> {\n if (this.locked) {\n return Promise.reject(new TypeError(\"Cannot abort a locked stream\"));\n }\n\n return new Promise((resolve, reject) => {\n try {\n // Reject all pending writes\n this.writeRequests.forEach((req) => req.reject(reason));\n this.writeRequests = [];\n\n if (this.sink?.abort) {\n const result = this.sink.abort(reason);\n if (result instanceof Promise) {\n result.then(resolve).catch(reject);\n return;\n }\n }\n this.errored = true;\n this.errorValue = reason;\n resolve();\n } catch (e) {\n reject(e);\n }\n });\n },\n close(this: WritableStreamInternalState): Promise<void> {\n if (this.locked) {\n return Promise.reject(new TypeError(\"Cannot close a locked stream\"));\n }\n if (this.closeRequested || this.closed) {\n return Promise.reject(new TypeError(\"Stream is already closing or closed\"));\n }\n\n this.closeRequested = true;\n\n return new Promise((resolve, reject) => {\n if (this.sink?.close) {\n try {\n const result = this.sink.close();\n if (result instanceof Promise) {\n result\n .then(() => {\n this.closed = true;\n resolve();\n })\n .catch(reject);\n return;\n }\n } catch (e) {\n reject(e);\n return;\n }\n }\n this.closed = true;\n resolve();\n });\n },\n },\n });\n\n // Add getWriter to prototype as JavaScript code\n // This ensures getWriter() returns a proper WritableStreamDefaultWriter instance\n const prototypeHandle = context.getProp(classHandle, \"prototype\");\n\n const getWriterCode = `(function() {\n const writer = new WritableStreamDefaultWriter();\n this.__linkWriter__(writer);\n return writer;\n })`;\n const getWriterResult = context.evalCode(getWriterCode);\n if (!getWriterResult.error) {\n context.setProp(prototypeHandle, \"getWriter\", getWriterResult.value);\n getWriterResult.value.dispose();\n } else {\n getWriterResult.error.dispose();\n }\n\n prototypeHandle.dispose();\n return classHandle;\n}\n\n/**\n * Create a WritableStream in QuickJS from a host-side sink\n */\nexport function createWritableStream(\n context: QuickJSContext,\n stateMap: StateMap,\n sink: UnderlyingSink\n): QuickJSHandle {\n const sinkObj = context.newObject();\n\n if (sink.start) {\n const startFn = context.newFunction(\"start\", (controllerHandle) => {\n const controller = {\n signal: new AbortController().signal,\n error: (e: unknown) => {\n const errorFn = context.getProp(controllerHandle, \"error\");\n const errorHandle = marshal(context, e);\n context.callFunction(errorFn, controllerHandle, errorHandle);\n errorHandle.dispose();\n errorFn.dispose();\n },\n } as WritableStreamDefaultController;\n\n const result = sink.start!(controller);\n if (result instanceof Promise) {\n const deferred = context.newPromise();\n result\n .then(() => {\n deferred.resolve(context.undefined);\n context.runtime.executePendingJobs();\n })\n .catch((e) => {\n deferred.reject(marshal(context, e));\n context.runtime.executePendingJobs();\n });\n return deferred.handle;\n }\n return context.undefined;\n });\n context.setProp(sinkObj, \"start\", startFn);\n startFn.dispose();\n }\n\n if (sink.write) {\n const writeFn = context.newFunction(\"write\", (chunkHandle, controllerHandle) => {\n const chunk = unmarshal(context, chunkHandle);\n const controller = {\n signal: new AbortController().signal,\n error: (e: unknown) => {\n const errorFn = context.getProp(controllerHandle, \"error\");\n const errorHandle = marshal(context, e);\n context.callFunction(errorFn, controllerHandle, errorHandle);\n errorHandle.dispose();\n errorFn.dispose();\n },\n } as WritableStreamDefaultController;\n\n const result = sink.write!(chunk, controller);\n if (result instanceof Promise) {\n const deferred = context.newPromise();\n result\n .then(() => {\n deferred.resolve(context.undefined);\n context.runtime.executePendingJobs();\n })\n .catch((e) => {\n deferred.reject(marshal(context, e));\n context.runtime.executePendingJobs();\n });\n return deferred.handle;\n }\n return context.undefined;\n });\n context.setProp(sinkObj, \"write\", writeFn);\n writeFn.dispose();\n }\n\n if (sink.close) {\n const closeFn = context.newFunction(\"close\", () => {\n const result = sink.close!();\n if (result instanceof Promise) {\n const deferred = context.newPromise();\n result\n .then(() => {\n deferred.resolve(context.undefined);\n context.runtime.executePendingJobs();\n })\n .catch((e) => {\n deferred.reject(marshal(context, e));\n context.runtime.executePendingJobs();\n });\n return deferred.handle;\n }\n return context.undefined;\n });\n context.setProp(sinkObj, \"close\", closeFn);\n closeFn.dispose();\n }\n\n if (sink.abort) {\n const abortFn = context.newFunction(\"abort\", (reasonHandle) => {\n const reason = unmarshal(context, reasonHandle);\n const result = sink.abort!(reason);\n if (result instanceof Promise) {\n const deferred = context.newPromise();\n result\n .then(() => {\n deferred.resolve(context.undefined);\n context.runtime.executePendingJobs();\n })\n .catch((e) => {\n deferred.reject(marshal(context, e));\n context.runtime.executePendingJobs();\n });\n return deferred.handle;\n }\n return context.undefined;\n });\n context.setProp(sinkObj, \"abort\", abortFn);\n abortFn.dispose();\n }\n\n const WritableStreamConstructor = context.getProp(context.global, \"WritableStream\");\n const result = context.callFunction(WritableStreamConstructor, context.undefined, sinkObj);\n WritableStreamConstructor.dispose();\n sinkObj.dispose();\n\n if (result.error) {\n const error = context.dump(result.error);\n result.error.dispose();\n throw new Error(`Failed to create WritableStream: ${error}`);\n }\n\n return result.value;\n}\n"
6
+ ],
7
+ "mappings": "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",
8
+ "debugId": "ACD8E9C081DB101764756E2164756E21",
9
+ "names": []
10
+ }