@yume-chan/stream-extra 0.0.23 → 1.0.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 (100) hide show
  1. package/CHANGELOG.md +32 -2
  2. package/LICENSE +1 -1
  3. package/esm/buffered-transform.d.ts +3 -3
  4. package/esm/buffered-transform.d.ts.map +1 -1
  5. package/esm/buffered-transform.js.map +1 -1
  6. package/esm/buffered.d.ts +3 -6
  7. package/esm/buffered.d.ts.map +1 -1
  8. package/esm/buffered.js +87 -75
  9. package/esm/buffered.js.map +1 -1
  10. package/esm/concat.d.ts +4 -3
  11. package/esm/concat.d.ts.map +1 -1
  12. package/esm/concat.js +6 -4
  13. package/esm/concat.js.map +1 -1
  14. package/esm/consumable.d.ts +36 -43
  15. package/esm/consumable.d.ts.map +1 -1
  16. package/esm/consumable.js +74 -125
  17. package/esm/consumable.js.map +1 -1
  18. package/esm/distribution.d.ts +3 -2
  19. package/esm/distribution.d.ts.map +1 -1
  20. package/esm/distribution.js +22 -18
  21. package/esm/distribution.js.map +1 -1
  22. package/esm/duplex.d.ts +2 -2
  23. package/esm/duplex.d.ts.map +1 -1
  24. package/esm/duplex.js +2 -6
  25. package/esm/duplex.js.map +1 -1
  26. package/esm/encoding.d.ts +21 -0
  27. package/esm/encoding.d.ts.map +1 -0
  28. package/esm/encoding.js +4 -0
  29. package/esm/encoding.js.map +1 -0
  30. package/esm/index.d.ts +4 -1
  31. package/esm/index.d.ts.map +1 -1
  32. package/esm/index.js +4 -1
  33. package/esm/index.js.map +1 -1
  34. package/esm/maybe-consumable-ns.d.ts +16 -0
  35. package/esm/maybe-consumable-ns.d.ts.map +1 -0
  36. package/esm/maybe-consumable-ns.js +44 -0
  37. package/esm/maybe-consumable-ns.js.map +1 -0
  38. package/esm/maybe-consumable.d.ts +4 -0
  39. package/esm/maybe-consumable.d.ts.map +1 -0
  40. package/esm/maybe-consumable.js +2 -0
  41. package/esm/maybe-consumable.js.map +1 -0
  42. package/esm/push-readable.d.ts +16 -2
  43. package/esm/push-readable.d.ts.map +1 -1
  44. package/esm/push-readable.js +176 -17
  45. package/esm/push-readable.js.map +1 -1
  46. package/esm/stream.d.ts +7 -7
  47. package/esm/stream.d.ts.map +1 -1
  48. package/esm/stream.js +54 -5
  49. package/esm/stream.js.map +1 -1
  50. package/esm/struct-deserialize.d.ts +3 -4
  51. package/esm/struct-deserialize.d.ts.map +1 -1
  52. package/esm/struct-deserialize.js.map +1 -1
  53. package/esm/struct-serialize.d.ts +2 -2
  54. package/esm/struct-serialize.d.ts.map +1 -1
  55. package/esm/struct-serialize.js.map +1 -1
  56. package/esm/task.d.ts +5 -0
  57. package/esm/task.d.ts.map +1 -0
  58. package/esm/task.js +9 -0
  59. package/esm/task.js.map +1 -0
  60. package/esm/try-close.d.ts +10 -0
  61. package/esm/try-close.d.ts.map +1 -0
  62. package/esm/try-close.js +19 -0
  63. package/esm/try-close.js.map +1 -0
  64. package/esm/types.d.ts +34 -35
  65. package/esm/types.d.ts.map +1 -1
  66. package/esm/wrap-readable.d.ts +5 -4
  67. package/esm/wrap-readable.d.ts.map +1 -1
  68. package/esm/wrap-readable.js +14 -9
  69. package/esm/wrap-readable.js.map +1 -1
  70. package/esm/wrap-writable.d.ts +2 -2
  71. package/esm/wrap-writable.d.ts.map +1 -1
  72. package/esm/wrap-writable.js +4 -6
  73. package/esm/wrap-writable.js.map +1 -1
  74. package/package.json +11 -15
  75. package/src/buffered-transform.ts +2 -2
  76. package/src/buffered.ts +107 -83
  77. package/src/concat.ts +6 -4
  78. package/src/consumable.ts +132 -213
  79. package/src/distribution.ts +30 -20
  80. package/src/duplex.ts +4 -7
  81. package/src/encoding.ts +39 -0
  82. package/src/index.ts +4 -1
  83. package/src/maybe-consumable-ns.ts +75 -0
  84. package/src/maybe-consumable.ts +5 -0
  85. package/src/push-readable.ts +213 -19
  86. package/src/stream.ts +69 -9
  87. package/src/struct-deserialize.ts +4 -7
  88. package/src/struct-serialize.ts +3 -3
  89. package/src/task.ts +21 -0
  90. package/src/try-close.ts +44 -0
  91. package/src/types.ts +34 -34
  92. package/src/wrap-readable.ts +20 -14
  93. package/src/wrap-writable.ts +6 -9
  94. package/tsconfig.build.tsbuildinfo +1 -1
  95. package/CHANGELOG.json +0 -86
  96. package/esm/decode-utf8.d.ts +0 -5
  97. package/esm/decode-utf8.d.ts.map +0 -1
  98. package/esm/decode-utf8.js +0 -12
  99. package/esm/decode-utf8.js.map +0 -1
  100. package/src/decode-utf8.ts +0 -13
package/esm/consumable.js CHANGED
@@ -1,107 +1,8 @@
1
- import { PromiseResolver } from "@yume-chan/async";
2
- import { ReadableStream, TransformStream, WritableStream } from "./stream.js";
3
- // `createTask` allows browser DevTools to track the call stack across async boundaries.
4
- const { console } = globalThis;
5
- const createTask = console.createTask?.bind(console) ??
6
- (() => ({
7
- run(callback) {
8
- return callback();
9
- },
10
- }));
11
- export class Consumable {
12
- #task;
13
- #resolver;
14
- value;
15
- consumed;
16
- constructor(value) {
17
- this.#task = createTask("Consumable");
18
- this.value = value;
19
- this.#resolver = new PromiseResolver();
20
- this.consumed = this.#resolver.promise;
21
- }
22
- consume() {
23
- this.#resolver.resolve();
24
- }
25
- error(error) {
26
- this.#resolver.reject(error);
27
- }
28
- async tryConsume(callback) {
29
- try {
30
- // eslint-disable-next-line @typescript-eslint/await-thenable
31
- const result = await this.#task.run(() => callback(this.value));
32
- this.#resolver.resolve();
33
- return result;
34
- }
35
- catch (e) {
36
- this.#resolver.reject(e);
37
- throw e;
38
- }
39
- }
40
- }
41
- async function enqueue(controller, chunk) {
42
- const output = new Consumable(chunk);
43
- controller.enqueue(output);
44
- await output.consumed;
45
- }
46
- export class WrapConsumableStream extends TransformStream {
47
- constructor() {
48
- super({
49
- async transform(chunk, controller) {
50
- await enqueue(controller, chunk);
51
- },
52
- });
53
- }
54
- }
55
- export class UnwrapConsumableStream extends TransformStream {
56
- constructor() {
57
- super({
58
- transform(chunk, controller) {
59
- controller.enqueue(chunk.value);
60
- chunk.consume();
61
- },
62
- });
63
- }
64
- }
65
- export class ConsumableReadableStream extends ReadableStream {
66
- constructor(source, strategy) {
67
- let wrappedController;
68
- let wrappedStrategy;
69
- if (strategy) {
70
- wrappedStrategy = {};
71
- if ("highWaterMark" in strategy) {
72
- wrappedStrategy.highWaterMark = strategy.highWaterMark;
73
- }
74
- if ("size" in strategy) {
75
- wrappedStrategy.size = (chunk) => {
76
- return strategy.size(chunk.value);
77
- };
78
- }
79
- }
80
- super({
81
- async start(controller) {
82
- wrappedController = {
83
- async enqueue(chunk) {
84
- await enqueue(controller, chunk);
85
- },
86
- close() {
87
- controller.close();
88
- },
89
- error(reason) {
90
- controller.error(reason);
91
- },
92
- };
93
- await source.start?.(wrappedController);
94
- },
95
- async pull() {
96
- await source.pull?.(wrappedController);
97
- },
98
- async cancel(reason) {
99
- await source.cancel?.(reason);
100
- },
101
- }, wrappedStrategy);
102
- }
103
- }
104
- export class ConsumableWritableStream extends WritableStream {
1
+ import { PromiseResolver, isPromiseLike } from "@yume-chan/async";
2
+ import { ReadableStream as NativeReadableStream, WritableStream as NativeWritableStream, } from "./stream.js";
3
+ import { createTask } from "./task.js";
4
+ // Workaround https://github.com/evanw/esbuild/issues/3923
5
+ class WritableStream extends NativeWritableStream {
105
6
  static async write(writer, value) {
106
7
  const consumable = new Consumable(value);
107
8
  await writer.write(consumable);
@@ -116,7 +17,7 @@ export class ConsumableWritableStream extends WritableStream {
116
17
  }
117
18
  if ("size" in strategy) {
118
19
  wrappedStrategy.size = (chunk) => {
119
- return strategy.size(chunk.value);
20
+ return strategy.size(chunk instanceof Consumable ? chunk.value : chunk);
120
21
  };
121
22
  }
122
23
  }
@@ -125,7 +26,7 @@ export class ConsumableWritableStream extends WritableStream {
125
26
  return sink.start?.(controller);
126
27
  },
127
28
  async write(chunk, controller) {
128
- await chunk.tryConsume((value) => sink.write?.(value, controller));
29
+ await chunk.tryConsume((chunk) => sink.write?.(chunk, controller));
129
30
  },
130
31
  abort(reason) {
131
32
  return sink.abort?.(reason);
@@ -136,42 +37,90 @@ export class ConsumableWritableStream extends WritableStream {
136
37
  }, wrappedStrategy);
137
38
  }
138
39
  }
139
- export class ConsumableTransformStream extends TransformStream {
140
- constructor(transformer) {
40
+ class ReadableStream extends NativeReadableStream {
41
+ static async enqueue(controller, chunk) {
42
+ const output = new Consumable(chunk);
43
+ controller.enqueue(output);
44
+ await output.consumed;
45
+ }
46
+ constructor(source, strategy) {
141
47
  let wrappedController;
48
+ let wrappedStrategy;
49
+ if (strategy) {
50
+ wrappedStrategy = {};
51
+ if ("highWaterMark" in strategy) {
52
+ wrappedStrategy.highWaterMark = strategy.highWaterMark;
53
+ }
54
+ if ("size" in strategy) {
55
+ wrappedStrategy.size = (chunk) => {
56
+ return strategy.size(chunk.value);
57
+ };
58
+ }
59
+ }
142
60
  super({
143
61
  async start(controller) {
144
62
  wrappedController = {
145
63
  async enqueue(chunk) {
146
- await enqueue(controller, chunk);
64
+ await ReadableStream.enqueue(controller, chunk);
147
65
  },
148
66
  close() {
149
- controller.terminate();
67
+ controller.close();
150
68
  },
151
69
  error(reason) {
152
70
  controller.error(reason);
153
71
  },
154
72
  };
155
- await transformer.start?.(wrappedController);
73
+ await source.start?.(wrappedController);
156
74
  },
157
- async transform(chunk) {
158
- await chunk.tryConsume((value) => transformer.transform?.(value, wrappedController));
159
- chunk.consume();
75
+ async pull() {
76
+ await source.pull?.(wrappedController);
160
77
  },
161
- async flush() {
162
- await transformer.flush?.(wrappedController);
78
+ async cancel(reason) {
79
+ await source.cancel?.(reason);
163
80
  },
164
- });
81
+ }, wrappedStrategy);
165
82
  }
166
83
  }
167
- export class ConsumableInspectStream extends TransformStream {
168
- constructor(callback) {
169
- super({
170
- transform(chunk, controller) {
171
- callback(chunk.value);
172
- controller.enqueue(chunk);
173
- },
174
- });
84
+ export class Consumable {
85
+ static WritableStream = WritableStream;
86
+ static ReadableStream = ReadableStream;
87
+ #task;
88
+ #resolver;
89
+ value;
90
+ consumed;
91
+ constructor(value) {
92
+ this.#task = createTask("Consumable");
93
+ this.value = value;
94
+ this.#resolver = new PromiseResolver();
95
+ this.consumed = this.#resolver.promise;
96
+ }
97
+ consume() {
98
+ this.#resolver.resolve();
99
+ }
100
+ error(error) {
101
+ this.#resolver.reject(error);
102
+ }
103
+ tryConsume(callback) {
104
+ try {
105
+ let result = this.#task.run(() => callback(this.value));
106
+ if (isPromiseLike(result)) {
107
+ result = result.then((value) => {
108
+ this.#resolver.resolve();
109
+ return value;
110
+ }, (e) => {
111
+ this.#resolver.reject(e);
112
+ throw e;
113
+ });
114
+ }
115
+ else {
116
+ this.#resolver.resolve();
117
+ }
118
+ return result;
119
+ }
120
+ catch (e) {
121
+ this.#resolver.reject(e);
122
+ throw e;
123
+ }
175
124
  }
176
125
  }
177
126
  //# sourceMappingURL=consumable.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"consumable.js","sourceRoot":"","sources":["../src/consumable.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"consumable.js","sourceRoot":"","sources":["../src/consumable.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
- import { ConsumableTransformStream } from "./consumable.js";
1
+ import { MaybeConsumable } from "./maybe-consumable.js";
2
+ import { TransformStream } from "./stream.js";
2
3
  /**
3
4
  * Splits or combines buffers to specified size.
4
5
  */
@@ -15,7 +16,7 @@ export declare class BufferCombiner {
15
16
  push(data: Uint8Array): Generator<Uint8Array, void, void>;
16
17
  flush(): Uint8Array | undefined;
17
18
  }
18
- export declare class DistributionStream extends ConsumableTransformStream<Uint8Array, Uint8Array> {
19
+ export declare class DistributionStream extends TransformStream<MaybeConsumable<Uint8Array>, MaybeConsumable<Uint8Array>> {
19
20
  constructor(size: number, combine?: boolean);
20
21
  }
21
22
  //# sourceMappingURL=distribution.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"distribution.d.ts","sourceRoot":"","sources":["../src/distribution.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,yBAAyB,EAAE,MAAM,iBAAiB,CAAC;AAE5D;;GAEG;AACH,qBAAa,cAAc;;gBAMX,IAAI,EAAE,MAAM;IAOxB;;;;;;OAMG;IACF,IAAI,CAAC,IAAI,EAAE,UAAU,GAAG,SAAS,CAAC,UAAU,EAAE,IAAI,EAAE,IAAI,CAAC;IA0C1D,KAAK,IAAI,UAAU,GAAG,SAAS;CAUlC;AAED,qBAAa,kBAAmB,SAAQ,yBAAyB,CAC7D,UAAU,EACV,UAAU,CACb;gBACe,IAAI,EAAE,MAAM,EAAE,OAAO,UAAQ;CA6B5C"}
1
+ {"version":3,"file":"distribution.d.ts","sourceRoot":"","sources":["../src/distribution.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAE9C;;GAEG;AACH,qBAAa,cAAc;;gBAMX,IAAI,EAAE,MAAM;IAOxB;;;;;;OAMG;IACF,IAAI,CAAC,IAAI,EAAE,UAAU,GAAG,SAAS,CAAC,UAAU,EAAE,IAAI,EAAE,IAAI,CAAC;IA0C1D,KAAK,IAAI,UAAU,GAAG,SAAS;CAUlC;AAED,qBAAa,kBAAmB,SAAQ,eAAe,CACnD,eAAe,CAAC,UAAU,CAAC,EAC3B,eAAe,CAAC,UAAU,CAAC,CAC9B;gBACe,IAAI,EAAE,MAAM,EAAE,OAAO,UAAQ;CAqC5C"}
@@ -1,4 +1,6 @@
1
- import { ConsumableTransformStream } from "./consumable.js";
1
+ import { Consumable } from "./consumable.js";
2
+ import { MaybeConsumable } from "./maybe-consumable.js";
3
+ import { TransformStream } from "./stream.js";
2
4
  /**
3
5
  * Splits or combines buffers to specified size.
4
6
  */
@@ -22,7 +24,7 @@ export class BufferCombiner {
22
24
  */
23
25
  *push(data) {
24
26
  let offset = 0;
25
- let available = data.byteLength;
27
+ let available = data.length;
26
28
  if (this.#offset !== 0) {
27
29
  if (available >= this.#available) {
28
30
  this.#buffer.set(data.subarray(0, this.#available), this.#offset);
@@ -64,32 +66,34 @@ export class BufferCombiner {
64
66
  return output;
65
67
  }
66
68
  }
67
- export class DistributionStream extends ConsumableTransformStream {
69
+ export class DistributionStream extends TransformStream {
68
70
  constructor(size, combine = false) {
69
71
  const combiner = combine ? new BufferCombiner(size) : undefined;
70
72
  super({
71
73
  async transform(chunk, controller) {
72
- if (combiner) {
73
- for (const buffer of combiner.push(chunk)) {
74
- await controller.enqueue(buffer);
74
+ await MaybeConsumable.tryConsume(chunk, async (chunk) => {
75
+ if (combiner) {
76
+ for (const buffer of combiner.push(chunk)) {
77
+ await Consumable.ReadableStream.enqueue(controller, buffer);
78
+ }
75
79
  }
76
- }
77
- else {
78
- let offset = 0;
79
- let available = chunk.byteLength;
80
- while (available > 0) {
81
- const end = offset + size;
82
- await controller.enqueue(chunk.subarray(offset, end));
83
- offset = end;
84
- available -= size;
80
+ else {
81
+ let offset = 0;
82
+ let available = chunk.length;
83
+ while (available > 0) {
84
+ const end = offset + size;
85
+ await Consumable.ReadableStream.enqueue(controller, chunk.subarray(offset, end));
86
+ offset = end;
87
+ available -= size;
88
+ }
85
89
  }
86
- }
90
+ });
87
91
  },
88
- async flush(controller) {
92
+ flush(controller) {
89
93
  if (combiner) {
90
94
  const data = combiner.flush();
91
95
  if (data) {
92
- await controller.enqueue(data);
96
+ controller.enqueue(data);
93
97
  }
94
98
  }
95
99
  },
@@ -1 +1 @@
1
- {"version":3,"file":"distribution.js","sourceRoot":"","sources":["../src/distribution.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"distribution.js","sourceRoot":"","sources":["../src/distribution.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAE9C;;GAEG;AACH,MAAM,OAAO,cAAc;IACvB,SAAS,CAAS;IACT,OAAO,CAAa;IAC7B,OAAO,CAAS;IAChB,UAAU,CAAS;IAEnB,YAAY,IAAY;QACpB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACtB,IAAI,CAAC,OAAO,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC;QACpC,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC;QACjB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;IAC3B,CAAC;IAED;;;;;;OAMG;IACH,CAAC,IAAI,CAAC,IAAgB;QAClB,IAAI,MAAM,GAAG,CAAC,CAAC;QACf,IAAI,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC;QAE5B,IAAI,IAAI,CAAC,OAAO,KAAK,CAAC,EAAE,CAAC;YACrB,IAAI,SAAS,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;gBAC/B,IAAI,CAAC,OAAO,CAAC,GAAG,CACZ,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,UAAU,CAAC,EACjC,IAAI,CAAC,OAAO,CACf,CAAC;gBACF,MAAM,IAAI,IAAI,CAAC,UAAU,CAAC;gBAC1B,SAAS,IAAI,IAAI,CAAC,UAAU,CAAC;gBAE7B,MAAM,IAAI,CAAC,OAAO,CAAC;gBACnB,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC;gBACjB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC;gBAEjC,IAAI,SAAS,KAAK,CAAC,EAAE,CAAC;oBAClB,OAAO;gBACX,CAAC;YACL,CAAC;iBAAM,CAAC;gBACJ,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;gBACrC,IAAI,CAAC,OAAO,IAAI,SAAS,CAAC;gBAC1B,IAAI,CAAC,UAAU,IAAI,SAAS,CAAC;gBAC7B,OAAO;YACX,CAAC;QACL,CAAC;QAED,OAAO,SAAS,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACjC,MAAM,GAAG,GAAG,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC;YACpC,MAAM,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;YACjC,MAAM,GAAG,GAAG,CAAC;YACb,SAAS,IAAI,IAAI,CAAC,SAAS,CAAC;QAChC,CAAC;QAED,IAAI,SAAS,GAAG,CAAC,EAAE,CAAC;YAChB,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;YACtD,IAAI,CAAC,OAAO,IAAI,SAAS,CAAC;YAC1B,IAAI,CAAC,UAAU,IAAI,SAAS,CAAC;QACjC,CAAC;IACL,CAAC;IAED,KAAK;QACD,IAAI,IAAI,CAAC,OAAO,KAAK,CAAC,EAAE,CAAC;YACrB,OAAO,SAAS,CAAC;QACrB,CAAC;QAED,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QACtD,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC;QACjB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC;QACjC,OAAO,MAAM,CAAC;IAClB,CAAC;CACJ;AAED,MAAM,OAAO,kBAAmB,SAAQ,eAGvC;IACG,YAAY,IAAY,EAAE,OAAO,GAAG,KAAK;QACrC,MAAM,QAAQ,GAAG,OAAO,CAAC,CAAC,CAAC,IAAI,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAChE,KAAK,CAAC;YACF,KAAK,CAAC,SAAS,CAAC,KAAK,EAAE,UAAU;gBAC7B,MAAM,eAAe,CAAC,UAAU,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE;oBACpD,IAAI,QAAQ,EAAE,CAAC;wBACX,KAAK,MAAM,MAAM,IAAI,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;4BACxC,MAAM,UAAU,CAAC,cAAc,CAAC,OAAO,CACnC,UAAU,EACV,MAAM,CACT,CAAC;wBACN,CAAC;oBACL,CAAC;yBAAM,CAAC;wBACJ,IAAI,MAAM,GAAG,CAAC,CAAC;wBACf,IAAI,SAAS,GAAG,KAAK,CAAC,MAAM,CAAC;wBAC7B,OAAO,SAAS,GAAG,CAAC,EAAE,CAAC;4BACnB,MAAM,GAAG,GAAG,MAAM,GAAG,IAAI,CAAC;4BAC1B,MAAM,UAAU,CAAC,cAAc,CAAC,OAAO,CACnC,UAAU,EACV,KAAK,CAAC,QAAQ,CAAC,MAAM,EAAE,GAAG,CAAC,CAC9B,CAAC;4BACF,MAAM,GAAG,GAAG,CAAC;4BACb,SAAS,IAAI,IAAI,CAAC;wBACtB,CAAC;oBACL,CAAC;gBACL,CAAC,CAAC,CAAC;YACP,CAAC;YACD,KAAK,CAAC,UAAU;gBACZ,IAAI,QAAQ,EAAE,CAAC;oBACX,MAAM,IAAI,GAAG,QAAQ,CAAC,KAAK,EAAE,CAAC;oBAC9B,IAAI,IAAI,EAAE,CAAC;wBACP,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;oBAC7B,CAAC;gBACL,CAAC;YACL,CAAC;SACJ,CAAC,CAAC;IACP,CAAC;CACJ"}
package/esm/duplex.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import type { ValueOrPromise } from "@yume-chan/struct";
1
+ import type { MaybePromiseLike } from "@yume-chan/async";
2
2
  import type { QueuingStrategy, ReadableStream } from "./stream.js";
3
3
  import { WritableStream } from "./stream.js";
4
4
  import { WrapReadableStream } from "./wrap-readable.js";
@@ -15,7 +15,7 @@ export interface DuplexStreamFactoryOptions {
15
15
  * `DuplexStreamFactory#dispose` yourself, you can return `false`
16
16
  * (or a `Promise` that resolves to `false`) to disable the automatic call.
17
17
  */
18
- close?: (() => ValueOrPromise<boolean | void>) | undefined;
18
+ close?: (() => MaybePromiseLike<boolean | void>) | undefined;
19
19
  /**
20
20
  * Callback when any `ReadableStream` is closed (the other peer doesn't produce any more data),
21
21
  * or `WritableStream` is aborted (the other peer can't receive any more data),
@@ -1 +1 @@
1
- {"version":3,"file":"duplex.d.ts","sourceRoot":"","sources":["../src/duplex.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAExD,OAAO,KAAK,EACR,eAAe,EACf,cAAc,EAGjB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAMxD,MAAM,WAAW,0BAA0B;IACvC;;;;;;;;;;;OAWG;IACH,KAAK,CAAC,EAAE,CAAC,MAAM,cAAc,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC,GAAG,SAAS,CAAC;IAE3D;;;;;;;OAOG;IACH,OAAO,CAAC,EAAE,CAAC,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,SAAS,CAAC;CACtD;AAED;;;;;GAKG;AACH,qBAAa,mBAAmB,CAAC,CAAC,EAAE,CAAC;;IAKjC,IAAI,cAAc,YAEjB;IAGD,IAAI,MAAM,kBAET;gBAIW,OAAO,CAAC,EAAE,0BAA0B;IAIhD,YAAY,CACR,QAAQ,EAAE,cAAc,CAAC,CAAC,CAAC,EAC3B,QAAQ,CAAC,EAAE,eAAe,CAAC,CAAC,CAAC,GAC9B,kBAAkB,CAAC,CAAC,CAAC;IAoBxB,cAAc,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC,CAAC,GAAG,cAAc,CAAC,CAAC,CAAC;IAsBtD,KAAK;IAkBL,OAAO;CAchB"}
1
+ {"version":3,"file":"duplex.d.ts","sourceRoot":"","sources":["../src/duplex.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAGzD,OAAO,KAAK,EACR,eAAe,EACf,cAAc,EAGjB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAE7C,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAMxD,MAAM,WAAW,0BAA0B;IACvC;;;;;;;;;;;OAWG;IACH,KAAK,CAAC,EAAE,CAAC,MAAM,gBAAgB,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC,GAAG,SAAS,CAAC;IAE7D;;;;;;;OAOG;IACH,OAAO,CAAC,EAAE,CAAC,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,SAAS,CAAC;CACtD;AAED;;;;;GAKG;AACH,qBAAa,mBAAmB,CAAC,CAAC,EAAE,CAAC;;IAKjC,IAAI,cAAc,YAEjB;IAGD,IAAI,MAAM,kBAET;gBAIW,OAAO,CAAC,EAAE,0BAA0B;IAIhD,YAAY,CACR,QAAQ,EAAE,cAAc,CAAC,CAAC,CAAC,EAC3B,QAAQ,CAAC,EAAE,eAAe,CAAC,CAAC,CAAC,GAC9B,kBAAkB,CAAC,CAAC,CAAC;IAoBxB,cAAc,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC,CAAC,GAAG,cAAc,CAAC,CAAC,CAAC;IAsBtD,KAAK;IAkBL,OAAO;CAUhB"}
package/esm/duplex.js CHANGED
@@ -1,5 +1,6 @@
1
1
  import { PromiseResolver } from "@yume-chan/async";
2
2
  import { WritableStream } from "./stream.js";
3
+ import { tryClose } from "./try-close.js";
3
4
  import { WrapReadableStream } from "./wrap-readable.js";
4
5
  const NOOP = () => {
5
6
  // no-op
@@ -80,12 +81,7 @@ export class DuplexStreamFactory {
80
81
  this.#writableClosed = true;
81
82
  this.#closed.resolve();
82
83
  for (const controller of this.#readableControllers) {
83
- try {
84
- controller.close();
85
- }
86
- catch {
87
- // ignore
88
- }
84
+ tryClose(controller);
89
85
  }
90
86
  await this.#options.dispose?.();
91
87
  }
package/esm/duplex.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"duplex.js","sourceRoot":"","sources":["../src/duplex.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AASnD,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAExD,MAAM,IAAI,GAAG,GAAG,EAAE;IACd,QAAQ;AACZ,CAAC,CAAC;AA4BF;;;;;GAKG;AACH,MAAM,OAAO,mBAAmB;IAC5B,oBAAoB,GAAyC,EAAE,CAAC;IAChE,QAAQ,GAAqC,EAAE,CAAC;IAEhD,eAAe,GAAG,KAAK,CAAC;IACxB,IAAI,cAAc;QACd,OAAO,IAAI,CAAC,eAAe,CAAC;IAChC,CAAC;IAED,OAAO,GAAG,IAAI,eAAe,EAAQ,CAAC;IACtC,IAAI,MAAM;QACN,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC;IAChC,CAAC;IAEQ,QAAQ,CAA6B;IAE9C,YAAY,OAAoC;QAC5C,IAAI,CAAC,QAAQ,GAAG,OAAO,IAAI,EAAE,CAAC;IAClC,CAAC;IAED,YAAY,CACR,QAA2B,EAC3B,QAA6B;QAE7B,OAAO,IAAI,kBAAkB,CACzB;YACI,KAAK,EAAE,CAAC,UAAU,EAAE,EAAE;gBAClB,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;gBAC3C,OAAO,QAAQ,CAAC;YACpB,CAAC;YACD,MAAM,EAAE,KAAK,IAAI,EAAE;gBACf,6DAA6D;gBAC7D,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC;YACvB,CAAC;YACD,KAAK,EAAE,KAAK,IAAI,EAAE;gBACd,gEAAgE;gBAChE,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;YACzB,CAAC;SACJ,EACD,QAAQ,CACX,CAAC;IACN,CAAC;IAED,cAAc,CAAC,MAAyB;QACpC,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,EAAE,CAAC;QAClC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAE3B,oFAAoF;QACpF,+BAA+B;QAC/B,OAAO,IAAI,cAAc,CAAI;YACzB,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE;gBACnB,MAAM,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YAC9B,CAAC;YACD,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;gBACpB,MAAM,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;gBAC3B,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC;YACvB,CAAC;YACD,KAAK,EAAE,KAAK,IAAI,EAAE;gBACd,qCAAqC;gBACrC,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBACjC,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC;YACvB,CAAC;SACJ,CAAC,CAAC;IACP,CAAC;IAED,KAAK,CAAC,KAAK;QACP,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;YACvB,OAAO;QACX,CAAC;QACD,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;QAE5B,uEAAuE;QACvE,IAAI,CAAC,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,KAAK,EAAE,CAAC;YAC5C,6DAA6D;YAC7D,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;QACzB,CAAC;QAED,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YACjC,qCAAqC;YACrC,MAAM,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC/B,CAAC;IACL,CAAC;IAED,KAAK,CAAC,OAAO;QACT,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;QAC5B,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;QAEvB,KAAK,MAAM,UAAU,IAAI,IAAI,CAAC,oBAAoB,EAAE,CAAC;YACjD,IAAI,CAAC;gBACD,UAAU,CAAC,KAAK,EAAE,CAAC;YACvB,CAAC;YAAC,MAAM,CAAC;gBACL,SAAS;YACb,CAAC;QACL,CAAC;QAED,MAAM,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,EAAE,CAAC;IACpC,CAAC;CACJ"}
1
+ {"version":3,"file":"duplex.js","sourceRoot":"","sources":["../src/duplex.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ import type { TransformStream } from "./stream.js";
2
+ export interface TextDecoderOptions {
3
+ fatal?: boolean;
4
+ ignoreBOM?: boolean;
5
+ }
6
+ declare class TextDecoderStreamType extends TransformStream<ArrayBufferView | ArrayBuffer, string> {
7
+ constructor(label?: string, options?: TextDecoderOptions);
8
+ readonly encoding: string;
9
+ readonly fatal: boolean;
10
+ readonly ignoreBOM: boolean;
11
+ }
12
+ declare class TextEncoderStreamType extends TransformStream<string, Uint8Array> {
13
+ constructor();
14
+ readonly encoding: string;
15
+ }
16
+ export declare const TextDecoderStream: typeof TextDecoderStreamType;
17
+ export type TextDecoderStream = TextDecoderStreamType;
18
+ export declare const TextEncoderStream: typeof TextEncoderStreamType;
19
+ export type TextEncoderStream = TextEncoderStreamType;
20
+ export {};
21
+ //# sourceMappingURL=encoding.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"encoding.d.ts","sourceRoot":"","sources":["../src/encoding.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAEnD,MAAM,WAAW,kBAAkB;IAC/B,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,SAAS,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,OAAO,OAAO,qBAAsB,SAAQ,eAAe,CACvD,eAAe,GAAG,WAAW,EAC7B,MAAM,CACT;gBACe,KAAK,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,kBAAkB;IAExD,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;CAC/B;AAED,OAAO,OAAO,qBAAsB,SAAQ,eAAe,CACvD,MAAM,EACN,UAAU,CACb;;IAGG,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;CAC7B;AASD,eAAO,MAAM,iBAAiB,8BAA2B,CAAC;AAC1D,MAAM,MAAM,iBAAiB,GAAG,qBAAqB,CAAC;AAEtD,eAAO,MAAM,iBAAiB,8BAA2B,CAAC;AAC1D,MAAM,MAAM,iBAAiB,GAAG,qBAAqB,CAAC"}
@@ -0,0 +1,4 @@
1
+ const Global = globalThis;
2
+ export const TextDecoderStream = Global.TextDecoderStream;
3
+ export const TextEncoderStream = Global.TextEncoderStream;
4
+ //# sourceMappingURL=encoding.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"encoding.js","sourceRoot":"","sources":["../src/encoding.ts"],"names":[],"mappings":"AAgCA,MAAM,MAAM,GAAG,UAAwC,CAAC;AAExD,MAAM,CAAC,MAAM,iBAAiB,GAAG,MAAM,CAAC,iBAAiB,CAAC;AAG1D,MAAM,CAAC,MAAM,iBAAiB,GAAG,MAAM,CAAC,iBAAiB,CAAC"}
package/esm/index.d.ts CHANGED
@@ -2,16 +2,19 @@ export * from "./buffered-transform.js";
2
2
  export * from "./buffered.js";
3
3
  export * from "./concat.js";
4
4
  export * from "./consumable.js";
5
- export * from "./decode-utf8.js";
6
5
  export * from "./distribution.js";
7
6
  export * from "./duplex.js";
7
+ export * from "./encoding.js";
8
8
  export * from "./inspect.js";
9
+ export * from "./maybe-consumable.js";
9
10
  export * from "./pipe-from.js";
10
11
  export * from "./push-readable.js";
11
12
  export * from "./split-string.js";
12
13
  export * from "./stream.js";
13
14
  export * from "./struct-deserialize.js";
14
15
  export * from "./struct-serialize.js";
16
+ export * from "./task.js";
17
+ export * from "./try-close.js";
15
18
  export * from "./wrap-readable.js";
16
19
  export * from "./wrap-writable.js";
17
20
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,yBAAyB,CAAC;AACxC,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC;AACjC,cAAc,mBAAmB,CAAC;AAClC,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,oBAAoB,CAAC;AACnC,cAAc,mBAAmB,CAAC;AAClC,cAAc,aAAa,CAAC;AAC5B,cAAc,yBAAyB,CAAC;AACxC,cAAc,uBAAuB,CAAC;AACtC,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,yBAAyB,CAAC;AACxC,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,cAAc,mBAAmB,CAAC;AAClC,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,uBAAuB,CAAC;AACtC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,oBAAoB,CAAC;AACnC,cAAc,mBAAmB,CAAC;AAClC,cAAc,aAAa,CAAC;AAC5B,cAAc,yBAAyB,CAAC;AACxC,cAAc,uBAAuB,CAAC;AACtC,cAAc,WAAW,CAAC;AAC1B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC"}
package/esm/index.js CHANGED
@@ -2,16 +2,19 @@ export * from "./buffered-transform.js";
2
2
  export * from "./buffered.js";
3
3
  export * from "./concat.js";
4
4
  export * from "./consumable.js";
5
- export * from "./decode-utf8.js";
6
5
  export * from "./distribution.js";
7
6
  export * from "./duplex.js";
7
+ export * from "./encoding.js";
8
8
  export * from "./inspect.js";
9
+ export * from "./maybe-consumable.js";
9
10
  export * from "./pipe-from.js";
10
11
  export * from "./push-readable.js";
11
12
  export * from "./split-string.js";
12
13
  export * from "./stream.js";
13
14
  export * from "./struct-deserialize.js";
14
15
  export * from "./struct-serialize.js";
16
+ export * from "./task.js";
17
+ export * from "./try-close.js";
15
18
  export * from "./wrap-readable.js";
16
19
  export * from "./wrap-writable.js";
17
20
  //# sourceMappingURL=index.js.map
package/esm/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,yBAAyB,CAAC;AACxC,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC;AACjC,cAAc,mBAAmB,CAAC;AAClC,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,oBAAoB,CAAC;AACnC,cAAc,mBAAmB,CAAC;AAClC,cAAc,aAAa,CAAC;AAC5B,cAAc,yBAAyB,CAAC;AACxC,cAAc,uBAAuB,CAAC;AACtC,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,yBAAyB,CAAC;AACxC,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,cAAc,mBAAmB,CAAC;AAClC,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,uBAAuB,CAAC;AACtC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,oBAAoB,CAAC;AACnC,cAAc,mBAAmB,CAAC;AAClC,cAAc,aAAa,CAAC;AAC5B,cAAc,yBAAyB,CAAC;AACxC,cAAc,uBAAuB,CAAC;AACtC,cAAc,WAAW,CAAC;AAC1B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC"}
@@ -0,0 +1,16 @@
1
+ import { Consumable } from "./consumable.js";
2
+ import type { MaybeConsumable } from "./maybe-consumable.js";
3
+ import type { QueuingStrategy, WritableStreamDefaultController } from "./stream.js";
4
+ import { WritableStream as NativeWritableStream } from "./stream.js";
5
+ export declare function getValue<T>(value: MaybeConsumable<T>): T;
6
+ export declare function tryConsume<T, R>(value: T, callback: (value: T extends Consumable<infer U> ? U : T) => R): R;
7
+ export interface WritableStreamSink<in T> {
8
+ start?(controller: WritableStreamDefaultController): void | PromiseLike<void>;
9
+ write?(chunk: T, controller: WritableStreamDefaultController): void | PromiseLike<void>;
10
+ abort?(reason: unknown): void | PromiseLike<void>;
11
+ close?(): void | PromiseLike<void>;
12
+ }
13
+ export declare class WritableStream<in T> extends NativeWritableStream<MaybeConsumable<T>> {
14
+ constructor(sink: WritableStreamSink<T>, strategy?: QueuingStrategy<T>);
15
+ }
16
+ //# sourceMappingURL=maybe-consumable-ns.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"maybe-consumable-ns.d.ts","sourceRoot":"","sources":["../src/maybe-consumable-ns.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,KAAK,EACR,eAAe,EACf,+BAA+B,EAClC,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,cAAc,IAAI,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAErE,wBAAgB,QAAQ,CAAC,CAAC,EAAE,KAAK,EAAE,eAAe,CAAC,CAAC,CAAC,GAAG,CAAC,CAExD;AAED,wBAAgB,UAAU,CAAC,CAAC,EAAE,CAAC,EAC3B,KAAK,EAAE,CAAC,EACR,QAAQ,EAAE,CAAC,KAAK,EAAE,CAAC,SAAS,UAAU,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,GAC9D,CAAC,CAMH;AAED,MAAM,WAAW,kBAAkB,CAAC,EAAE,CAAC,CAAC;IACpC,KAAK,CAAC,CACF,UAAU,EAAE,+BAA+B,GAC5C,IAAI,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC;IAC5B,KAAK,CAAC,CACF,KAAK,EAAE,CAAC,EACR,UAAU,EAAE,+BAA+B,GAC5C,IAAI,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC;IAC5B,KAAK,CAAC,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC;IAClD,KAAK,CAAC,IAAI,IAAI,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC;CACtC;AAED,qBAAa,cAAc,CAAC,EAAE,CAAC,CAAC,CAAE,SAAQ,oBAAoB,CAC1D,eAAe,CAAC,CAAC,CAAC,CACrB;gBACe,IAAI,EAAE,kBAAkB,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,EAAE,eAAe,CAAC,CAAC,CAAC;CAoCzE"}
@@ -0,0 +1,44 @@
1
+ import { Consumable } from "./consumable.js";
2
+ import { WritableStream as NativeWritableStream } from "./stream.js";
3
+ export function getValue(value) {
4
+ return value instanceof Consumable ? value.value : value;
5
+ }
6
+ export function tryConsume(value, callback) {
7
+ if (value instanceof Consumable) {
8
+ return value.tryConsume(callback);
9
+ }
10
+ else {
11
+ return callback(value);
12
+ }
13
+ }
14
+ export class WritableStream extends NativeWritableStream {
15
+ constructor(sink, strategy) {
16
+ let wrappedStrategy;
17
+ if (strategy) {
18
+ wrappedStrategy = {};
19
+ if ("highWaterMark" in strategy) {
20
+ wrappedStrategy.highWaterMark = strategy.highWaterMark;
21
+ }
22
+ if ("size" in strategy) {
23
+ wrappedStrategy.size = (chunk) => {
24
+ return strategy.size(chunk instanceof Consumable ? chunk.value : chunk);
25
+ };
26
+ }
27
+ }
28
+ super({
29
+ start(controller) {
30
+ return sink.start?.(controller);
31
+ },
32
+ async write(chunk, controller) {
33
+ await tryConsume(chunk, (chunk) => sink.write?.(chunk, controller));
34
+ },
35
+ abort(reason) {
36
+ return sink.abort?.(reason);
37
+ },
38
+ close() {
39
+ return sink.close?.();
40
+ },
41
+ }, wrappedStrategy);
42
+ }
43
+ }
44
+ //# sourceMappingURL=maybe-consumable-ns.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"maybe-consumable-ns.js","sourceRoot":"","sources":["../src/maybe-consumable-ns.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAM7C,OAAO,EAAE,cAAc,IAAI,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAErE,MAAM,UAAU,QAAQ,CAAI,KAAyB;IACjD,OAAO,KAAK,YAAY,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC;AAC7D,CAAC;AAED,MAAM,UAAU,UAAU,CACtB,KAAQ,EACR,QAA6D;IAE7D,IAAI,KAAK,YAAY,UAAU,EAAE,CAAC;QAC9B,OAAO,KAAK,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;IACtC,CAAC;SAAM,CAAC;QACJ,OAAO,QAAQ,CAAC,KAAc,CAAC,CAAC;IACpC,CAAC;AACL,CAAC;AAcD,MAAM,OAAO,cAAqB,SAAQ,oBAEzC;IACG,YAAY,IAA2B,EAAE,QAA6B;QAClE,IAAI,eAAgE,CAAC;QACrE,IAAI,QAAQ,EAAE,CAAC;YACX,eAAe,GAAG,EAAE,CAAC;YACrB,IAAI,eAAe,IAAI,QAAQ,EAAE,CAAC;gBAC9B,eAAe,CAAC,aAAa,GAAG,QAAQ,CAAC,aAAa,CAAC;YAC3D,CAAC;YACD,IAAI,MAAM,IAAI,QAAQ,EAAE,CAAC;gBACrB,eAAe,CAAC,IAAI,GAAG,CAAC,KAAK,EAAE,EAAE;oBAC7B,OAAO,QAAQ,CAAC,IAAK,CACjB,KAAK,YAAY,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CACpD,CAAC;gBACN,CAAC,CAAC;YACN,CAAC;QACL,CAAC;QAED,KAAK,CACD;YACI,KAAK,CAAC,UAAU;gBACZ,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,UAAU,CAAC,CAAC;YACpC,CAAC;YACD,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,UAAU;gBACzB,MAAM,UAAU,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,EAAE,CAC9B,IAAI,CAAC,KAAK,EAAE,CAAC,KAAU,EAAE,UAAU,CAAC,CACvC,CAAC;YACN,CAAC;YACD,KAAK,CAAC,MAAM;gBACR,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC,CAAC;YAChC,CAAC;YACD,KAAK;gBACD,OAAO,IAAI,CAAC,KAAK,EAAE,EAAE,CAAC;YAC1B,CAAC;SACJ,EACD,eAAe,CAClB,CAAC;IACN,CAAC;CACJ"}
@@ -0,0 +1,4 @@
1
+ import type { Consumable } from "./consumable.js";
2
+ export type MaybeConsumable<T> = T | Consumable<T>;
3
+ export * as MaybeConsumable from "./maybe-consumable-ns.js";
4
+ //# sourceMappingURL=maybe-consumable.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"maybe-consumable.d.ts","sourceRoot":"","sources":["../src/maybe-consumable.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAElD,MAAM,MAAM,eAAe,CAAC,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;AAEnD,OAAO,KAAK,eAAe,MAAM,0BAA0B,CAAC"}
@@ -0,0 +1,2 @@
1
+ export * as MaybeConsumable from "./maybe-consumable-ns.js";
2
+ //# sourceMappingURL=maybe-consumable.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"maybe-consumable.js","sourceRoot":"","sources":["../src/maybe-consumable.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,eAAe,MAAM,0BAA0B,CAAC"}