@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.
- package/CHANGELOG.md +32 -2
- package/LICENSE +1 -1
- package/esm/buffered-transform.d.ts +3 -3
- package/esm/buffered-transform.d.ts.map +1 -1
- package/esm/buffered-transform.js.map +1 -1
- package/esm/buffered.d.ts +3 -6
- package/esm/buffered.d.ts.map +1 -1
- package/esm/buffered.js +87 -75
- package/esm/buffered.js.map +1 -1
- package/esm/concat.d.ts +4 -3
- package/esm/concat.d.ts.map +1 -1
- package/esm/concat.js +6 -4
- package/esm/concat.js.map +1 -1
- package/esm/consumable.d.ts +36 -43
- package/esm/consumable.d.ts.map +1 -1
- package/esm/consumable.js +74 -125
- package/esm/consumable.js.map +1 -1
- package/esm/distribution.d.ts +3 -2
- package/esm/distribution.d.ts.map +1 -1
- package/esm/distribution.js +22 -18
- package/esm/distribution.js.map +1 -1
- package/esm/duplex.d.ts +2 -2
- package/esm/duplex.d.ts.map +1 -1
- package/esm/duplex.js +2 -6
- package/esm/duplex.js.map +1 -1
- package/esm/encoding.d.ts +21 -0
- package/esm/encoding.d.ts.map +1 -0
- package/esm/encoding.js +4 -0
- package/esm/encoding.js.map +1 -0
- package/esm/index.d.ts +4 -1
- package/esm/index.d.ts.map +1 -1
- package/esm/index.js +4 -1
- package/esm/index.js.map +1 -1
- package/esm/maybe-consumable-ns.d.ts +16 -0
- package/esm/maybe-consumable-ns.d.ts.map +1 -0
- package/esm/maybe-consumable-ns.js +44 -0
- package/esm/maybe-consumable-ns.js.map +1 -0
- package/esm/maybe-consumable.d.ts +4 -0
- package/esm/maybe-consumable.d.ts.map +1 -0
- package/esm/maybe-consumable.js +2 -0
- package/esm/maybe-consumable.js.map +1 -0
- package/esm/push-readable.d.ts +16 -2
- package/esm/push-readable.d.ts.map +1 -1
- package/esm/push-readable.js +176 -17
- package/esm/push-readable.js.map +1 -1
- package/esm/stream.d.ts +7 -7
- package/esm/stream.d.ts.map +1 -1
- package/esm/stream.js +54 -5
- package/esm/stream.js.map +1 -1
- package/esm/struct-deserialize.d.ts +3 -4
- package/esm/struct-deserialize.d.ts.map +1 -1
- package/esm/struct-deserialize.js.map +1 -1
- package/esm/struct-serialize.d.ts +2 -2
- package/esm/struct-serialize.d.ts.map +1 -1
- package/esm/struct-serialize.js.map +1 -1
- package/esm/task.d.ts +5 -0
- package/esm/task.d.ts.map +1 -0
- package/esm/task.js +9 -0
- package/esm/task.js.map +1 -0
- package/esm/try-close.d.ts +10 -0
- package/esm/try-close.d.ts.map +1 -0
- package/esm/try-close.js +19 -0
- package/esm/try-close.js.map +1 -0
- package/esm/types.d.ts +34 -35
- package/esm/types.d.ts.map +1 -1
- package/esm/wrap-readable.d.ts +5 -4
- package/esm/wrap-readable.d.ts.map +1 -1
- package/esm/wrap-readable.js +14 -9
- package/esm/wrap-readable.js.map +1 -1
- package/esm/wrap-writable.d.ts +2 -2
- package/esm/wrap-writable.d.ts.map +1 -1
- package/esm/wrap-writable.js +4 -6
- package/esm/wrap-writable.js.map +1 -1
- package/package.json +11 -15
- package/src/buffered-transform.ts +2 -2
- package/src/buffered.ts +107 -83
- package/src/concat.ts +6 -4
- package/src/consumable.ts +132 -213
- package/src/distribution.ts +30 -20
- package/src/duplex.ts +4 -7
- package/src/encoding.ts +39 -0
- package/src/index.ts +4 -1
- package/src/maybe-consumable-ns.ts +75 -0
- package/src/maybe-consumable.ts +5 -0
- package/src/push-readable.ts +213 -19
- package/src/stream.ts +69 -9
- package/src/struct-deserialize.ts +4 -7
- package/src/struct-serialize.ts +3 -3
- package/src/task.ts +21 -0
- package/src/try-close.ts +44 -0
- package/src/types.ts +34 -34
- package/src/wrap-readable.ts +20 -14
- package/src/wrap-writable.ts +6 -9
- package/tsconfig.build.tsbuildinfo +1 -1
- package/CHANGELOG.json +0 -86
- package/esm/decode-utf8.d.ts +0 -5
- package/esm/decode-utf8.d.ts.map +0 -1
- package/esm/decode-utf8.js +0 -12
- package/esm/decode-utf8.js.map +0 -1
- 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
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
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((
|
|
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
|
-
|
|
140
|
-
|
|
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.
|
|
67
|
+
controller.close();
|
|
150
68
|
},
|
|
151
69
|
error(reason) {
|
|
152
70
|
controller.error(reason);
|
|
153
71
|
},
|
|
154
72
|
};
|
|
155
|
-
await
|
|
73
|
+
await source.start?.(wrappedController);
|
|
156
74
|
},
|
|
157
|
-
async
|
|
158
|
-
await
|
|
159
|
-
chunk.consume();
|
|
75
|
+
async pull() {
|
|
76
|
+
await source.pull?.(wrappedController);
|
|
160
77
|
},
|
|
161
|
-
async
|
|
162
|
-
await
|
|
78
|
+
async cancel(reason) {
|
|
79
|
+
await source.cancel?.(reason);
|
|
163
80
|
},
|
|
164
|
-
});
|
|
81
|
+
}, wrappedStrategy);
|
|
165
82
|
}
|
|
166
83
|
}
|
|
167
|
-
export class
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
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
|
package/esm/consumable.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"consumable.js","sourceRoot":"","sources":["../src/consumable.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"consumable.js","sourceRoot":"","sources":["../src/consumable.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAOlE,OAAO,EACH,cAAc,IAAI,oBAAoB,EACtC,cAAc,IAAI,oBAAoB,GACzC,MAAM,aAAa,CAAC;AAErB,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAEvC,0DAA0D;AAC1D,MAAM,cAAqB,SAAQ,oBAAmC;IAClE,MAAM,CAAC,KAAK,CAAC,KAAK,CACd,MAAkD,EAClD,KAAQ;QAER,MAAM,UAAU,GAAG,IAAI,UAAU,CAAC,KAAK,CAAC,CAAC;QACzC,MAAM,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QAC/B,MAAM,UAAU,CAAC,QAAQ,CAAC;IAC9B,CAAC;IAED,YACI,IAAsC,EACtC,QAA6B;QAE7B,IAAI,eAA2D,CAAC;QAChE,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,KAAK,CAAC,UAAU,CAAC,CAAC,KAAK,EAAE,EAAE,CAC7B,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,UAAU,CAAC,CAClC,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;AAED,MAAM,cAAkB,SAAQ,oBAAmC;IAC/D,MAAM,CAAC,KAAK,CAAC,OAAO,CAChB,UAAuD,EACvD,KAAQ;QAER,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,KAAK,CAAC,CAAC;QACrC,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAC3B,MAAM,MAAM,CAAC,QAAQ,CAAC;IAC1B,CAAC;IAED,YACI,MAA0C,EAC1C,QAA6B;QAE7B,IAAI,iBAEW,CAAC;QAEhB,IAAI,eAA2D,CAAC;QAChE,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,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;gBACvC,CAAC,CAAC;YACN,CAAC;QACL,CAAC;QAED,KAAK,CACD;YACI,KAAK,CAAC,KAAK,CAAC,UAAU;gBAClB,iBAAiB,GAAG;oBAChB,KAAK,CAAC,OAAO,CAAC,KAAK;wBACf,MAAM,cAAc,CAAC,OAAO,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;oBACpD,CAAC;oBACD,KAAK;wBACD,UAAU,CAAC,KAAK,EAAE,CAAC;oBACvB,CAAC;oBACD,KAAK,CAAC,MAAM;wBACR,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;oBAC7B,CAAC;iBACJ,CAAC;gBAEF,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC,iBAAiB,CAAC,CAAC;YAC5C,CAAC;YACD,KAAK,CAAC,IAAI;gBACN,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC,iBAAkB,CAAC,CAAC;YAC5C,CAAC;YACD,KAAK,CAAC,MAAM,CAAC,MAAM;gBACf,MAAM,MAAM,CAAC,MAAM,EAAE,CAAC,MAAM,CAAC,CAAC;YAClC,CAAC;SACJ,EACD,eAAe,CAClB,CAAC;IACN,CAAC;CACJ;AAED,MAAM,OAAO,UAAU;IACnB,MAAM,CAAU,cAAc,GAAG,cAAc,CAAC;IAEhD,MAAM,CAAU,cAAc,GAAG,cAAc,CAAC;IAEvC,KAAK,CAAO;IACZ,SAAS,CAAwB;IAEjC,KAAK,CAAI;IACT,QAAQ,CAAgB;IAEjC,YAAY,KAAQ;QAChB,IAAI,CAAC,KAAK,GAAG,UAAU,CAAC,YAAY,CAAC,CAAC;QACtC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,SAAS,GAAG,IAAI,eAAe,EAAQ,CAAC;QAC7C,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;IAC3C,CAAC;IAED,OAAO;QACH,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;IAC7B,CAAC;IAED,KAAK,CAAC,KAAc;QAChB,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACjC,CAAC;IAED,UAAU,CAAI,QAAyB;QACnC,IAAI,CAAC;YACD,IAAI,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;YACxD,IAAI,aAAa,CAAC,MAAM,CAAC,EAAE,CAAC;gBACxB,MAAM,GAAG,MAAM,CAAC,IAAI,CAChB,CAAC,KAAK,EAAE,EAAE;oBACN,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;oBACzB,OAAO,KAAK,CAAC;gBACjB,CAAC,EACD,CAAC,CAAC,EAAE,EAAE;oBACF,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;oBACzB,MAAM,CAAC,CAAC;gBACZ,CAAC,CACC,CAAC;YACX,CAAC;iBAAM,CAAC;gBACJ,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;YAC7B,CAAC;YACD,OAAO,MAAM,CAAC;QAClB,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACT,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YACzB,MAAM,CAAC,CAAC;QACZ,CAAC;IACL,CAAC"}
|
package/esm/distribution.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import {
|
|
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
|
|
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":"
|
|
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"}
|
package/esm/distribution.js
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
|
-
import {
|
|
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.
|
|
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
|
|
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
|
-
|
|
73
|
-
|
|
74
|
-
|
|
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
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
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
|
-
|
|
92
|
+
flush(controller) {
|
|
89
93
|
if (combiner) {
|
|
90
94
|
const data = combiner.flush();
|
|
91
95
|
if (data) {
|
|
92
|
-
|
|
96
|
+
controller.enqueue(data);
|
|
93
97
|
}
|
|
94
98
|
}
|
|
95
99
|
},
|
package/esm/distribution.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"distribution.js","sourceRoot":"","sources":["../src/distribution.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"distribution.js","sourceRoot":"","sources":["../src/distribution.ts"],"names":[],"mappings":"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"}
|
package/esm/duplex.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type {
|
|
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?: (() =>
|
|
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),
|
package/esm/duplex.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"duplex.d.ts","sourceRoot":"","sources":["../src/duplex.ts"],"names":[],"mappings":"
|
|
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
|
-
|
|
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":"
|
|
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"}
|
package/esm/encoding.js
ADDED
|
@@ -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
|
package/esm/index.d.ts.map
CHANGED
|
@@ -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,
|
|
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,
|
|
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 @@
|
|
|
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 @@
|
|
|
1
|
+
{"version":3,"file":"maybe-consumable.js","sourceRoot":"","sources":["../src/maybe-consumable.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,eAAe,MAAM,0BAA0B,CAAC"}
|