@yume-chan/stream-extra 2.0.0 → 2.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +13 -0
- package/esm/consumable/index.d.ts +5 -0
- package/esm/consumable/index.d.ts.map +1 -0
- package/esm/consumable/index.js +5 -0
- package/esm/consumable/index.js.map +1 -0
- package/esm/consumable/readable.d.ts +20 -0
- package/esm/consumable/readable.d.ts.map +1 -0
- package/esm/consumable/readable.js +47 -0
- package/esm/consumable/readable.js.map +1 -0
- package/esm/consumable/wrap-byte-readable.d.ts +6 -0
- package/esm/consumable/wrap-byte-readable.d.ts.map +1 -0
- package/esm/consumable/wrap-byte-readable.js +23 -0
- package/esm/consumable/wrap-byte-readable.js.map +1 -0
- package/esm/consumable/wrap-writable.d.ts +6 -0
- package/esm/consumable/wrap-writable.d.ts.map +1 -0
- package/esm/consumable/wrap-writable.js +18 -0
- package/esm/consumable/wrap-writable.js.map +1 -0
- package/esm/consumable/writable.d.ts +14 -0
- package/esm/consumable/writable.d.ts.map +1 -0
- package/esm/{maybe-consumable-ns.js → consumable/writable.js} +10 -16
- package/esm/consumable/writable.js.map +1 -0
- package/esm/consumable.d.ts +13 -33
- package/esm/consumable.d.ts.map +1 -1
- package/esm/consumable.js +5 -83
- package/esm/consumable.js.map +1 -1
- package/esm/maybe-consumable/index.d.ts +5 -0
- package/esm/maybe-consumable/index.d.ts.map +1 -0
- package/esm/maybe-consumable/index.js +4 -0
- package/esm/maybe-consumable/index.js.map +1 -0
- package/esm/maybe-consumable/utils.d.ts +5 -0
- package/esm/maybe-consumable/utils.d.ts.map +1 -0
- package/esm/maybe-consumable/utils.js +13 -0
- package/esm/maybe-consumable/utils.js.map +1 -0
- package/esm/maybe-consumable/wrap-writable.d.ts +6 -0
- package/esm/maybe-consumable/wrap-writable.d.ts.map +1 -0
- package/esm/maybe-consumable/wrap-writable.js +19 -0
- package/esm/maybe-consumable/wrap-writable.js.map +1 -0
- package/esm/maybe-consumable/writable.d.ts +13 -0
- package/esm/maybe-consumable/writable.d.ts.map +1 -0
- package/esm/maybe-consumable/writable.js +34 -0
- package/esm/maybe-consumable/writable.js.map +1 -0
- package/esm/maybe-consumable.d.ts +1 -1
- package/esm/maybe-consumable.d.ts.map +1 -1
- package/esm/maybe-consumable.js +1 -1
- package/esm/maybe-consumable.js.map +1 -1
- package/esm/types.d.ts +1 -1
- package/esm/types.d.ts.map +1 -1
- package/package.json +5 -5
- package/src/consumable/index.ts +4 -0
- package/src/consumable/readable.ts +80 -0
- package/src/consumable/wrap-byte-readable.ts +33 -0
- package/src/consumable/wrap-writable.ts +21 -0
- package/src/consumable/writable.ts +72 -0
- package/src/consumable.ts +23 -150
- package/src/maybe-consumable/index.ts +4 -0
- package/src/maybe-consumable/utils.ts +17 -0
- package/src/maybe-consumable/wrap-writable.ts +23 -0
- package/src/{maybe-consumable-ns.ts → maybe-consumable/writable.ts} +13 -23
- package/src/maybe-consumable.ts +1 -1
- package/src/types.ts +1 -1
- package/tsconfig.build.tsbuildinfo +1 -1
- package/esm/maybe-consumable-ns.d.ts +0 -16
- package/esm/maybe-consumable-ns.d.ts.map +0 -1
- package/esm/maybe-consumable-ns.js.map +0 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,18 @@
|
|
|
1
1
|
# Change Log - @yume-chan/stream-extra
|
|
2
2
|
|
|
3
|
+
## 2.1.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- 40a60ca: Add `Consumable.WrapByteReadableStream` and `MaybeConsumable.WrapWritableStream`
|
|
8
|
+
|
|
9
|
+
## 2.0.1
|
|
10
|
+
|
|
11
|
+
### Patch Changes
|
|
12
|
+
|
|
13
|
+
- Updated dependencies [0bcb9b8]
|
|
14
|
+
- @yume-chan/struct@2.0.1
|
|
15
|
+
|
|
3
16
|
## 2.0.0
|
|
4
17
|
|
|
5
18
|
### Patch Changes
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/consumable/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,yBAAyB,CAAC;AACxC,cAAc,oBAAoB,CAAC;AACnC,cAAc,eAAe,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/consumable/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,yBAAyB,CAAC;AACxC,cAAc,oBAAoB,CAAC;AACnC,cAAc,eAAe,CAAC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { Consumable } from "../consumable.js";
|
|
2
|
+
import type { QueuingStrategy } from "../stream.js";
|
|
3
|
+
import { ReadableStream } from "../stream.js";
|
|
4
|
+
export interface ConsumableReadableStreamController<T> {
|
|
5
|
+
enqueue(chunk: T): Promise<void>;
|
|
6
|
+
close(): void;
|
|
7
|
+
error(reason: unknown): void;
|
|
8
|
+
}
|
|
9
|
+
export interface ConsumableReadableStreamSource<T> {
|
|
10
|
+
start?(controller: ConsumableReadableStreamController<T>): void | PromiseLike<void>;
|
|
11
|
+
pull?(controller: ConsumableReadableStreamController<T>): void | PromiseLike<void>;
|
|
12
|
+
cancel?(reason: unknown): void | PromiseLike<void>;
|
|
13
|
+
}
|
|
14
|
+
export declare class ConsumableReadableStream<T> extends ReadableStream<Consumable<T>> {
|
|
15
|
+
static enqueue<T>(controller: {
|
|
16
|
+
enqueue: (chunk: Consumable<T>) => void;
|
|
17
|
+
}, chunk: T): Promise<void>;
|
|
18
|
+
constructor(source: ConsumableReadableStreamSource<T>, strategy?: QueuingStrategy<T>);
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=readable.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"readable.d.ts","sourceRoot":"","sources":["../../src/consumable/readable.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAE9C,MAAM,WAAW,kCAAkC,CAAC,CAAC;IACjD,OAAO,CAAC,KAAK,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACjC,KAAK,IAAI,IAAI,CAAC;IACd,KAAK,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI,CAAC;CAChC;AAED,MAAM,WAAW,8BAA8B,CAAC,CAAC;IAC7C,KAAK,CAAC,CACF,UAAU,EAAE,kCAAkC,CAAC,CAAC,CAAC,GAClD,IAAI,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC;IAC5B,IAAI,CAAC,CACD,UAAU,EAAE,kCAAkC,CAAC,CAAC,CAAC,GAClD,IAAI,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC;IAC5B,MAAM,CAAC,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC;CACtD;AAED,qBAAa,wBAAwB,CAAC,CAAC,CAAE,SAAQ,cAAc,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;WAC7D,OAAO,CAAC,CAAC,EAClB,UAAU,EAAE;QAAE,OAAO,EAAE,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC,KAAK,IAAI,CAAA;KAAE,EACvD,KAAK,EAAE,CAAC;gBAQR,MAAM,EAAE,8BAA8B,CAAC,CAAC,CAAC,EACzC,QAAQ,CAAC,EAAE,eAAe,CAAC,CAAC,CAAC;CA+CpC"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { Consumable } from "../consumable.js";
|
|
2
|
+
import { ReadableStream } from "../stream.js";
|
|
3
|
+
export class ConsumableReadableStream extends ReadableStream {
|
|
4
|
+
static async enqueue(controller, chunk) {
|
|
5
|
+
const output = new Consumable(chunk);
|
|
6
|
+
controller.enqueue(output);
|
|
7
|
+
await output.consumed;
|
|
8
|
+
}
|
|
9
|
+
constructor(source, strategy) {
|
|
10
|
+
let wrappedController;
|
|
11
|
+
let wrappedStrategy;
|
|
12
|
+
if (strategy) {
|
|
13
|
+
wrappedStrategy = {};
|
|
14
|
+
if ("highWaterMark" in strategy) {
|
|
15
|
+
wrappedStrategy.highWaterMark = strategy.highWaterMark;
|
|
16
|
+
}
|
|
17
|
+
if ("size" in strategy) {
|
|
18
|
+
wrappedStrategy.size = (chunk) => {
|
|
19
|
+
return strategy.size(chunk.value);
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
super({
|
|
24
|
+
start(controller) {
|
|
25
|
+
wrappedController = {
|
|
26
|
+
enqueue(chunk) {
|
|
27
|
+
return ConsumableReadableStream.enqueue(controller, chunk);
|
|
28
|
+
},
|
|
29
|
+
close() {
|
|
30
|
+
controller.close();
|
|
31
|
+
},
|
|
32
|
+
error(reason) {
|
|
33
|
+
controller.error(reason);
|
|
34
|
+
},
|
|
35
|
+
};
|
|
36
|
+
return source.start?.(wrappedController);
|
|
37
|
+
},
|
|
38
|
+
pull() {
|
|
39
|
+
return source.pull?.(wrappedController);
|
|
40
|
+
},
|
|
41
|
+
cancel(reason) {
|
|
42
|
+
return source.cancel?.(reason);
|
|
43
|
+
},
|
|
44
|
+
}, wrappedStrategy);
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
//# sourceMappingURL=readable.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"readable.js","sourceRoot":"","sources":["../../src/consumable/readable.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE9C,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAkB9C,MAAM,OAAO,wBAA4B,SAAQ,cAA6B;IAC1E,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,MAAyC,EACzC,QAA6B;QAE7B,IAAI,iBAAyD,CAAC;QAE9D,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,UAAU;gBACZ,iBAAiB,GAAG;oBAChB,OAAO,CAAC,KAAK;wBACT,OAAO,wBAAwB,CAAC,OAAO,CACnC,UAAU,EACV,KAAK,CACR,CAAC;oBACN,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,OAAO,MAAM,CAAC,KAAK,EAAE,CAAC,iBAAiB,CAAC,CAAC;YAC7C,CAAC;YACD,IAAI;gBACA,OAAO,MAAM,CAAC,IAAI,EAAE,CAAC,iBAAiB,CAAC,CAAC;YAC5C,CAAC;YACD,MAAM,CAAC,MAAM;gBACT,OAAO,MAAM,CAAC,MAAM,EAAE,CAAC,MAAM,CAAC,CAAC;YACnC,CAAC;SACJ,EACD,eAAe,CAClB,CAAC;IACN,CAAC;CACJ"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { Consumable } from "../consumable.js";
|
|
2
|
+
import { ReadableStream } from "../stream.js";
|
|
3
|
+
export declare class ConsumableWrapByteReadableStream extends ReadableStream<Consumable<Uint8Array>> {
|
|
4
|
+
constructor(stream: ReadableStream<Uint8Array>, chunkSize: number, min?: number);
|
|
5
|
+
}
|
|
6
|
+
//# sourceMappingURL=wrap-byte-readable.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wrap-byte-readable.d.ts","sourceRoot":"","sources":["../../src/consumable/wrap-byte-readable.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAI9C,qBAAa,gCAAiC,SAAQ,cAAc,CAChE,UAAU,CAAC,UAAU,CAAC,CACzB;gBAEO,MAAM,EAAE,cAAc,CAAC,UAAU,CAAC,EAClC,SAAS,EAAE,MAAM,EACjB,GAAG,CAAC,EAAE,MAAM;CAqBnB"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { ReadableStream } from "../stream.js";
|
|
2
|
+
import { ConsumableReadableStream } from "./readable.js";
|
|
3
|
+
export class ConsumableWrapByteReadableStream extends ReadableStream {
|
|
4
|
+
constructor(stream, chunkSize, min) {
|
|
5
|
+
const reader = stream.getReader({ mode: "byob" });
|
|
6
|
+
let array = new Uint8Array(chunkSize);
|
|
7
|
+
super({
|
|
8
|
+
async pull(controller) {
|
|
9
|
+
const { done, value } = await reader.read(array, { min });
|
|
10
|
+
if (done) {
|
|
11
|
+
controller.close();
|
|
12
|
+
return;
|
|
13
|
+
}
|
|
14
|
+
await ConsumableReadableStream.enqueue(controller, value);
|
|
15
|
+
array = new Uint8Array(value.buffer);
|
|
16
|
+
},
|
|
17
|
+
cancel(reason) {
|
|
18
|
+
return reader.cancel(reason);
|
|
19
|
+
},
|
|
20
|
+
});
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=wrap-byte-readable.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wrap-byte-readable.js","sourceRoot":"","sources":["../../src/consumable/wrap-byte-readable.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAE9C,OAAO,EAAE,wBAAwB,EAAE,MAAM,eAAe,CAAC;AAEzD,MAAM,OAAO,gCAAiC,SAAQ,cAErD;IACG,YACI,MAAkC,EAClC,SAAiB,EACjB,GAAY;QAEZ,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;QAClD,IAAI,KAAK,GAAG,IAAI,UAAU,CAAC,SAAS,CAAC,CAAC;QACtC,KAAK,CAAC;YACF,KAAK,CAAC,IAAI,CAAC,UAAU;gBACjB,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC;gBAC1D,IAAI,IAAI,EAAE,CAAC;oBACP,UAAU,CAAC,KAAK,EAAE,CAAC;oBACnB,OAAO;gBACX,CAAC;gBAED,MAAM,wBAAwB,CAAC,OAAO,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;gBAE1D,KAAK,GAAG,IAAI,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YACzC,CAAC;YACD,MAAM,CAAC,MAAM;gBACT,OAAO,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YACjC,CAAC;SACJ,CAAC,CAAC;IACP,CAAC;CACJ"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { Consumable } from "../consumable.js";
|
|
2
|
+
import { WritableStream } from "../stream.js";
|
|
3
|
+
export declare class ConsumableWrapWritableStream<in T> extends WritableStream<Consumable<T>> {
|
|
4
|
+
constructor(stream: WritableStream<T>);
|
|
5
|
+
}
|
|
6
|
+
//# sourceMappingURL=wrap-writable.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wrap-writable.d.ts","sourceRoot":"","sources":["../../src/consumable/wrap-writable.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAE9C,qBAAa,4BAA4B,CAAC,EAAE,CAAC,CAAC,CAAE,SAAQ,cAAc,CAClE,UAAU,CAAC,CAAC,CAAC,CAChB;gBACe,MAAM,EAAE,cAAc,CAAC,CAAC,CAAC;CAcxC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { WritableStream } from "../stream.js";
|
|
2
|
+
export class ConsumableWrapWritableStream extends WritableStream {
|
|
3
|
+
constructor(stream) {
|
|
4
|
+
const writer = stream.getWriter();
|
|
5
|
+
super({
|
|
6
|
+
write(chunk) {
|
|
7
|
+
return chunk.tryConsume((chunk) => writer.write(chunk));
|
|
8
|
+
},
|
|
9
|
+
abort(reason) {
|
|
10
|
+
return writer.abort(reason);
|
|
11
|
+
},
|
|
12
|
+
close() {
|
|
13
|
+
return writer.close();
|
|
14
|
+
},
|
|
15
|
+
});
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=wrap-writable.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wrap-writable.js","sourceRoot":"","sources":["../../src/consumable/wrap-writable.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAE9C,MAAM,OAAO,4BAAmC,SAAQ,cAEvD;IACG,YAAY,MAAyB;QACjC,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,EAAE,CAAC;QAClC,KAAK,CAAC;YACF,KAAK,CAAC,KAAK;gBACP,OAAO,KAAK,CAAC,UAAU,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;YAC5D,CAAC;YACD,KAAK,CAAC,MAAM;gBACR,OAAO,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YAChC,CAAC;YACD,KAAK;gBACD,OAAO,MAAM,CAAC,KAAK,EAAE,CAAC;YAC1B,CAAC;SACJ,CAAC,CAAC;IACP,CAAC;CACJ"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { Consumable } from "../consumable.js";
|
|
2
|
+
import type { QueuingStrategy, WritableStreamDefaultController, WritableStreamDefaultWriter } from "../stream.js";
|
|
3
|
+
import { WritableStream } from "../stream.js";
|
|
4
|
+
export interface ConsumableWritableStreamSink<in T> {
|
|
5
|
+
start?(controller: WritableStreamDefaultController): void | PromiseLike<void>;
|
|
6
|
+
write?(chunk: T, controller: WritableStreamDefaultController): void | PromiseLike<void>;
|
|
7
|
+
abort?(reason: unknown): void | PromiseLike<void>;
|
|
8
|
+
close?(): void | PromiseLike<void>;
|
|
9
|
+
}
|
|
10
|
+
export declare class ConsumableWritableStream<in T> extends WritableStream<Consumable<T>> {
|
|
11
|
+
static write<T>(writer: WritableStreamDefaultWriter<Consumable<T>>, value: T): Promise<void>;
|
|
12
|
+
constructor(sink: ConsumableWritableStreamSink<T>, strategy?: QueuingStrategy<T>);
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=writable.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"writable.d.ts","sourceRoot":"","sources":["../../src/consumable/writable.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,KAAK,EACR,eAAe,EACf,+BAA+B,EAC/B,2BAA2B,EAC9B,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAE9C,MAAM,WAAW,4BAA4B,CAAC,EAAE,CAAC,CAAC;IAC9C,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,wBAAwB,CAAC,EAAE,CAAC,CAAC,CAAE,SAAQ,cAAc,CAC9D,UAAU,CAAC,CAAC,CAAC,CAChB;WACgB,KAAK,CAAC,CAAC,EAChB,MAAM,EAAE,2BAA2B,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAClD,KAAK,EAAE,CAAC;gBAQR,IAAI,EAAE,4BAA4B,CAAC,CAAC,CAAC,EACrC,QAAQ,CAAC,EAAE,eAAe,CAAC,CAAC,CAAC;CAqCpC"}
|
|
@@ -1,17 +1,11 @@
|
|
|
1
|
-
import { Consumable } from "
|
|
2
|
-
import { WritableStream
|
|
3
|
-
export
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
return value.tryConsume(callback);
|
|
9
|
-
}
|
|
10
|
-
else {
|
|
11
|
-
return callback(value);
|
|
1
|
+
import { Consumable } from "../consumable.js";
|
|
2
|
+
import { WritableStream } from "../stream.js";
|
|
3
|
+
export class ConsumableWritableStream extends WritableStream {
|
|
4
|
+
static async write(writer, value) {
|
|
5
|
+
const consumable = new Consumable(value);
|
|
6
|
+
await writer.write(consumable);
|
|
7
|
+
await consumable.consumed;
|
|
12
8
|
}
|
|
13
|
-
}
|
|
14
|
-
export class WritableStream extends NativeWritableStream {
|
|
15
9
|
constructor(sink, strategy) {
|
|
16
10
|
let wrappedStrategy;
|
|
17
11
|
if (strategy) {
|
|
@@ -29,8 +23,8 @@ export class WritableStream extends NativeWritableStream {
|
|
|
29
23
|
start(controller) {
|
|
30
24
|
return sink.start?.(controller);
|
|
31
25
|
},
|
|
32
|
-
|
|
33
|
-
|
|
26
|
+
write(chunk, controller) {
|
|
27
|
+
return chunk.tryConsume((chunk) => sink.write?.(chunk, controller));
|
|
34
28
|
},
|
|
35
29
|
abort(reason) {
|
|
36
30
|
return sink.abort?.(reason);
|
|
@@ -41,4 +35,4 @@ export class WritableStream extends NativeWritableStream {
|
|
|
41
35
|
}, wrappedStrategy);
|
|
42
36
|
}
|
|
43
37
|
}
|
|
44
|
-
//# sourceMappingURL=
|
|
38
|
+
//# sourceMappingURL=writable.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"writable.js","sourceRoot":"","sources":["../../src/consumable/writable.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAM9C,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAc9C,MAAM,OAAO,wBAA+B,SAAQ,cAEnD;IACG,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,IAAqC,EACrC,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,EAAE,UAAU;gBACnB,OAAO,KAAK,CAAC,UAAU,CAAC,CAAC,KAAK,EAAE,EAAE,CAC9B,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"}
|
package/esm/consumable.d.ts
CHANGED
|
@@ -1,19 +1,11 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
import {
|
|
3
|
-
declare class WritableStream<in T> extends NativeWritableStream<Consumable<T>> {
|
|
4
|
-
static write<T>(writer: WritableStreamDefaultWriter<Consumable<T>>, value: T): Promise<void>;
|
|
5
|
-
constructor(sink: Consumable.WritableStreamSink<T>, strategy?: QueuingStrategy<T>);
|
|
6
|
-
}
|
|
7
|
-
declare class ReadableStream<T> extends NativeReadableStream<Consumable<T>> {
|
|
8
|
-
static enqueue<T>(controller: {
|
|
9
|
-
enqueue: (chunk: Consumable<T>) => void;
|
|
10
|
-
}, chunk: T): Promise<void>;
|
|
11
|
-
constructor(source: Consumable.ReadableStreamSource<T>, strategy?: QueuingStrategy<T>);
|
|
12
|
-
}
|
|
1
|
+
import type { ConsumableReadableStreamController, ConsumableReadableStreamSource, ConsumableWritableStreamSink } from "./consumable/index.js";
|
|
2
|
+
import { ConsumableReadableStream, ConsumableWrapByteReadableStream, ConsumableWrapWritableStream, ConsumableWritableStream } from "./consumable/index.js";
|
|
13
3
|
export declare class Consumable<T> {
|
|
14
4
|
#private;
|
|
15
|
-
static readonly WritableStream: typeof
|
|
16
|
-
static readonly
|
|
5
|
+
static readonly WritableStream: typeof ConsumableWritableStream;
|
|
6
|
+
static readonly WrapWritableStream: typeof ConsumableWrapWritableStream;
|
|
7
|
+
static readonly ReadableStream: typeof ConsumableReadableStream;
|
|
8
|
+
static readonly WrapByteReadableStream: typeof ConsumableWrapByteReadableStream;
|
|
17
9
|
readonly value: T;
|
|
18
10
|
readonly consumed: Promise<void>;
|
|
19
11
|
constructor(value: T);
|
|
@@ -22,24 +14,12 @@ export declare class Consumable<T> {
|
|
|
22
14
|
tryConsume<U>(callback: (value: T) => U): U;
|
|
23
15
|
}
|
|
24
16
|
export declare namespace Consumable {
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
type
|
|
32
|
-
interface ReadableStreamController<T> {
|
|
33
|
-
enqueue(chunk: T): Promise<void>;
|
|
34
|
-
close(): void;
|
|
35
|
-
error(reason: unknown): void;
|
|
36
|
-
}
|
|
37
|
-
interface ReadableStreamSource<T> {
|
|
38
|
-
start?(controller: ReadableStreamController<T>): void | PromiseLike<void>;
|
|
39
|
-
pull?(controller: ReadableStreamController<T>): void | PromiseLike<void>;
|
|
40
|
-
cancel?(reason: unknown): void | PromiseLike<void>;
|
|
41
|
-
}
|
|
42
|
-
type ReadableStream<T> = typeof Consumable.ReadableStream<T>;
|
|
17
|
+
type WritableStreamSink<T> = ConsumableWritableStreamSink<T>;
|
|
18
|
+
type WritableStream<in T> = typeof ConsumableWritableStream<T>;
|
|
19
|
+
type WrapWritableStream<in T> = typeof ConsumableWrapWritableStream<T>;
|
|
20
|
+
type ReadableStreamController<T> = ConsumableReadableStreamController<T>;
|
|
21
|
+
type ReadableStreamSource<T> = ConsumableReadableStreamSource<T>;
|
|
22
|
+
type ReadableStream<T> = typeof ConsumableReadableStream<T>;
|
|
23
|
+
type WrapByteReadableStream = typeof ConsumableWrapByteReadableStream;
|
|
43
24
|
}
|
|
44
|
-
export {};
|
|
45
25
|
//# sourceMappingURL=consumable.d.ts.map
|
package/esm/consumable.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"consumable.d.ts","sourceRoot":"","sources":["../src/consumable.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACR,
|
|
1
|
+
{"version":3,"file":"consumable.d.ts","sourceRoot":"","sources":["../src/consumable.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACR,kCAAkC,EAClC,8BAA8B,EAC9B,4BAA4B,EAC/B,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACH,wBAAwB,EACxB,gCAAgC,EAChC,4BAA4B,EAC5B,wBAAwB,EAC3B,MAAM,uBAAuB,CAAC;AAI/B,qBAAa,UAAU,CAAC,CAAC;;IACrB,MAAM,CAAC,QAAQ,CAAC,cAAc,kCAA4B;IAC1D,MAAM,CAAC,QAAQ,CAAC,kBAAkB,sCAAgC;IAClE,MAAM,CAAC,QAAQ,CAAC,cAAc,kCAA4B;IAC1D,MAAM,CAAC,QAAQ,CAAC,sBAAsB,0CAAoC;IAK1E,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC;IAClB,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;gBAErB,KAAK,EAAE,CAAC;IAOpB,OAAO;IAIP,KAAK,CAAC,KAAK,EAAE,OAAO;IAIpB,UAAU,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC;CAuB1C;AAED,yBAAiB,UAAU,CAAC;IACxB,KAAY,kBAAkB,CAAC,CAAC,IAAI,4BAA4B,CAAC,CAAC,CAAC,CAAC;IACpE,KAAY,cAAc,CAAC,EAAE,CAAC,CAAC,IAAI,OAAO,wBAAwB,CAAC,CAAC,CAAC,CAAC;IAEtE,KAAY,kBAAkB,CAAC,EAAE,CAAC,CAAC,IAC/B,OAAO,4BAA4B,CAAC,CAAC,CAAC,CAAC;IAE3C,KAAY,wBAAwB,CAAC,CAAC,IAClC,kCAAkC,CAAC,CAAC,CAAC,CAAC;IAC1C,KAAY,oBAAoB,CAAC,CAAC,IAAI,8BAA8B,CAAC,CAAC,CAAC,CAAC;IACxE,KAAY,cAAc,CAAC,CAAC,IAAI,OAAO,wBAAwB,CAAC,CAAC,CAAC,CAAC;IAEnE,KAAY,sBAAsB,GAC9B,OAAO,gCAAgC,CAAC;CAC/C"}
|
package/esm/consumable.js
CHANGED
|
@@ -1,89 +1,11 @@
|
|
|
1
1
|
import { PromiseResolver, isPromiseLike } from "@yume-chan/async";
|
|
2
|
-
import {
|
|
2
|
+
import { ConsumableReadableStream, ConsumableWrapByteReadableStream, ConsumableWrapWritableStream, ConsumableWritableStream, } from "./consumable/index.js";
|
|
3
3
|
import { createTask } from "./task.js";
|
|
4
|
-
// Workaround https://github.com/evanw/esbuild/issues/3923
|
|
5
|
-
class WritableStream extends NativeWritableStream {
|
|
6
|
-
static async write(writer, value) {
|
|
7
|
-
const consumable = new Consumable(value);
|
|
8
|
-
await writer.write(consumable);
|
|
9
|
-
await consumable.consumed;
|
|
10
|
-
}
|
|
11
|
-
constructor(sink, strategy) {
|
|
12
|
-
let wrappedStrategy;
|
|
13
|
-
if (strategy) {
|
|
14
|
-
wrappedStrategy = {};
|
|
15
|
-
if ("highWaterMark" in strategy) {
|
|
16
|
-
wrappedStrategy.highWaterMark = strategy.highWaterMark;
|
|
17
|
-
}
|
|
18
|
-
if ("size" in strategy) {
|
|
19
|
-
wrappedStrategy.size = (chunk) => {
|
|
20
|
-
return strategy.size(chunk instanceof Consumable ? chunk.value : chunk);
|
|
21
|
-
};
|
|
22
|
-
}
|
|
23
|
-
}
|
|
24
|
-
super({
|
|
25
|
-
start(controller) {
|
|
26
|
-
return sink.start?.(controller);
|
|
27
|
-
},
|
|
28
|
-
async write(chunk, controller) {
|
|
29
|
-
await chunk.tryConsume((chunk) => sink.write?.(chunk, controller));
|
|
30
|
-
},
|
|
31
|
-
abort(reason) {
|
|
32
|
-
return sink.abort?.(reason);
|
|
33
|
-
},
|
|
34
|
-
close() {
|
|
35
|
-
return sink.close?.();
|
|
36
|
-
},
|
|
37
|
-
}, wrappedStrategy);
|
|
38
|
-
}
|
|
39
|
-
}
|
|
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) {
|
|
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
|
-
}
|
|
60
|
-
super({
|
|
61
|
-
async start(controller) {
|
|
62
|
-
wrappedController = {
|
|
63
|
-
async enqueue(chunk) {
|
|
64
|
-
await ReadableStream.enqueue(controller, chunk);
|
|
65
|
-
},
|
|
66
|
-
close() {
|
|
67
|
-
controller.close();
|
|
68
|
-
},
|
|
69
|
-
error(reason) {
|
|
70
|
-
controller.error(reason);
|
|
71
|
-
},
|
|
72
|
-
};
|
|
73
|
-
await source.start?.(wrappedController);
|
|
74
|
-
},
|
|
75
|
-
async pull() {
|
|
76
|
-
await source.pull?.(wrappedController);
|
|
77
|
-
},
|
|
78
|
-
async cancel(reason) {
|
|
79
|
-
await source.cancel?.(reason);
|
|
80
|
-
},
|
|
81
|
-
}, wrappedStrategy);
|
|
82
|
-
}
|
|
83
|
-
}
|
|
84
4
|
export class Consumable {
|
|
85
|
-
static WritableStream =
|
|
86
|
-
static
|
|
5
|
+
static WritableStream = ConsumableWritableStream;
|
|
6
|
+
static WrapWritableStream = ConsumableWrapWritableStream;
|
|
7
|
+
static ReadableStream = ConsumableReadableStream;
|
|
8
|
+
static WrapByteReadableStream = ConsumableWrapByteReadableStream;
|
|
87
9
|
#task;
|
|
88
10
|
#resolver;
|
|
89
11
|
value;
|
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,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAOlE,OAAO,EACH,
|
|
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,wBAAwB,EACxB,gCAAgC,EAChC,4BAA4B,EAC5B,wBAAwB,GAC3B,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAEvC,MAAM,OAAO,UAAU;IACnB,MAAM,CAAU,cAAc,GAAG,wBAAwB,CAAC;IAC1D,MAAM,CAAU,kBAAkB,GAAG,4BAA4B,CAAC;IAClE,MAAM,CAAU,cAAc,GAAG,wBAAwB,CAAC;IAC1D,MAAM,CAAU,sBAAsB,GAAG,gCAAgC,CAAC;IAEjE,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"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export * from "./utils.js";
|
|
2
|
+
export { MaybeConsumableWrapWritableStream as WrapWritableStream } from "./wrap-writable.js";
|
|
3
|
+
export { MaybeConsumableWritableStream as WritableStream } from "./writable.js";
|
|
4
|
+
export type { MaybeConsumableWritableStreamSink as WritableStreamSink } from "./writable.js";
|
|
5
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/maybe-consumable/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,OAAO,EAAE,iCAAiC,IAAI,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAC7F,OAAO,EAAE,6BAA6B,IAAI,cAAc,EAAE,MAAM,eAAe,CAAC;AAChF,YAAY,EAAE,iCAAiC,IAAI,kBAAkB,EAAE,MAAM,eAAe,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/maybe-consumable/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,OAAO,EAAE,iCAAiC,IAAI,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAC7F,OAAO,EAAE,6BAA6B,IAAI,cAAc,EAAE,MAAM,eAAe,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { Consumable } from "../consumable.js";
|
|
2
|
+
import type { MaybeConsumable } from "../maybe-consumable.js";
|
|
3
|
+
export declare function getValue<T>(value: MaybeConsumable<T>): T;
|
|
4
|
+
export declare function tryConsume<T, R>(value: T, callback: (value: T extends Consumable<infer U> ? U : T) => R): R;
|
|
5
|
+
//# sourceMappingURL=utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/maybe-consumable/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAE9D,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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { Consumable } from "../consumable.js";
|
|
2
|
+
export function getValue(value) {
|
|
3
|
+
return value instanceof Consumable ? value.value : value;
|
|
4
|
+
}
|
|
5
|
+
export function tryConsume(value, callback) {
|
|
6
|
+
if (value instanceof Consumable) {
|
|
7
|
+
return value.tryConsume(callback);
|
|
8
|
+
}
|
|
9
|
+
else {
|
|
10
|
+
return callback(value);
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/maybe-consumable/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAG9C,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"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { MaybeConsumable } from "../maybe-consumable.js";
|
|
2
|
+
import { WritableStream } from "../stream.js";
|
|
3
|
+
export declare class MaybeConsumableWrapWritableStream<T> extends WritableStream<MaybeConsumable<T>> {
|
|
4
|
+
constructor(stream: WritableStream<T>);
|
|
5
|
+
}
|
|
6
|
+
//# sourceMappingURL=wrap-writable.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wrap-writable.d.ts","sourceRoot":"","sources":["../../src/maybe-consumable/wrap-writable.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAI9C,qBAAa,iCAAiC,CAAC,CAAC,CAAE,SAAQ,cAAc,CACpE,eAAe,CAAC,CAAC,CAAC,CACrB;gBACe,MAAM,EAAE,cAAc,CAAC,CAAC,CAAC;CAcxC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { WritableStream } from "../stream.js";
|
|
2
|
+
import { tryConsume } from "./utils.js";
|
|
3
|
+
export class MaybeConsumableWrapWritableStream extends WritableStream {
|
|
4
|
+
constructor(stream) {
|
|
5
|
+
const writer = stream.getWriter();
|
|
6
|
+
super({
|
|
7
|
+
write(chunk) {
|
|
8
|
+
return tryConsume(chunk, (chunk) => writer.write(chunk));
|
|
9
|
+
},
|
|
10
|
+
abort(reason) {
|
|
11
|
+
return writer.abort(reason);
|
|
12
|
+
},
|
|
13
|
+
close() {
|
|
14
|
+
return writer.close();
|
|
15
|
+
},
|
|
16
|
+
});
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=wrap-writable.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wrap-writable.js","sourceRoot":"","sources":["../../src/maybe-consumable/wrap-writable.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAE9C,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAExC,MAAM,OAAO,iCAAqC,SAAQ,cAEzD;IACG,YAAY,MAAyB;QACjC,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,EAAE,CAAC;QAClC,KAAK,CAAC;YACF,KAAK,CAAC,KAAK;gBACP,OAAO,UAAU,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,KAAU,CAAC,CAAC,CAAC;YAClE,CAAC;YACD,KAAK,CAAC,MAAM;gBACR,OAAO,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YAChC,CAAC;YACD,KAAK;gBACD,OAAO,MAAM,CAAC,KAAK,EAAE,CAAC;YAC1B,CAAC;SACJ,CAAC,CAAC;IACP,CAAC;CACJ"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { MaybeConsumable } from "../maybe-consumable.js";
|
|
2
|
+
import type { QueuingStrategy, WritableStreamDefaultController } from "../stream.js";
|
|
3
|
+
import { WritableStream } from "../stream.js";
|
|
4
|
+
export interface MaybeConsumableWritableStreamSink<in T> {
|
|
5
|
+
start?(controller: WritableStreamDefaultController): void | PromiseLike<void>;
|
|
6
|
+
write?(chunk: T, controller: WritableStreamDefaultController): void | PromiseLike<void>;
|
|
7
|
+
abort?(reason: unknown): void | PromiseLike<void>;
|
|
8
|
+
close?(): void | PromiseLike<void>;
|
|
9
|
+
}
|
|
10
|
+
export declare class MaybeConsumableWritableStream<in T> extends WritableStream<MaybeConsumable<T>> {
|
|
11
|
+
constructor(sink: MaybeConsumableWritableStreamSink<T>, strategy?: QueuingStrategy<T>);
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=writable.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"writable.d.ts","sourceRoot":"","sources":["../../src/maybe-consumable/writable.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,KAAK,EACR,eAAe,EACf,+BAA+B,EAClC,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAI9C,MAAM,WAAW,iCAAiC,CAAC,EAAE,CAAC,CAAC;IACnD,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,6BAA6B,CAAC,EAAE,CAAC,CAAC,CAAE,SAAQ,cAAc,CACnE,eAAe,CAAC,CAAC,CAAC,CACrB;gBAEO,IAAI,EAAE,iCAAiC,CAAC,CAAC,CAAC,EAC1C,QAAQ,CAAC,EAAE,eAAe,CAAC,CAAC,CAAC;CAqCpC"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { Consumable } from "../consumable.js";
|
|
2
|
+
import { WritableStream } from "../stream.js";
|
|
3
|
+
import { tryConsume } from "./utils.js";
|
|
4
|
+
export class MaybeConsumableWritableStream extends WritableStream {
|
|
5
|
+
constructor(sink, strategy) {
|
|
6
|
+
let wrappedStrategy;
|
|
7
|
+
if (strategy) {
|
|
8
|
+
wrappedStrategy = {};
|
|
9
|
+
if ("highWaterMark" in strategy) {
|
|
10
|
+
wrappedStrategy.highWaterMark = strategy.highWaterMark;
|
|
11
|
+
}
|
|
12
|
+
if ("size" in strategy) {
|
|
13
|
+
wrappedStrategy.size = (chunk) => {
|
|
14
|
+
return strategy.size(chunk instanceof Consumable ? chunk.value : chunk);
|
|
15
|
+
};
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
super({
|
|
19
|
+
start(controller) {
|
|
20
|
+
return sink.start?.(controller);
|
|
21
|
+
},
|
|
22
|
+
write(chunk, controller) {
|
|
23
|
+
return tryConsume(chunk, (chunk) => sink.write?.(chunk, controller));
|
|
24
|
+
},
|
|
25
|
+
abort(reason) {
|
|
26
|
+
return sink.abort?.(reason);
|
|
27
|
+
},
|
|
28
|
+
close() {
|
|
29
|
+
return sink.close?.();
|
|
30
|
+
},
|
|
31
|
+
}, wrappedStrategy);
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=writable.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"writable.js","sourceRoot":"","sources":["../../src/maybe-consumable/writable.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAM9C,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAE9C,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAcxC,MAAM,OAAO,6BAAoC,SAAQ,cAExD;IACG,YACI,IAA0C,EAC1C,QAA6B;QAE7B,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,EAAE,UAAU;gBACnB,OAAO,UAAU,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,EAAE,CAC/B,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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import type { Consumable } from "./consumable.js";
|
|
2
2
|
export type MaybeConsumable<T> = T | Consumable<T>;
|
|
3
|
-
export * as MaybeConsumable from "./maybe-consumable
|
|
3
|
+
export * as MaybeConsumable from "./maybe-consumable/index.js";
|
|
4
4
|
//# sourceMappingURL=maybe-consumable.d.ts.map
|
|
@@ -1 +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,
|
|
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,6BAA6B,CAAC"}
|
package/esm/maybe-consumable.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export * as MaybeConsumable from "./maybe-consumable
|
|
1
|
+
export * as MaybeConsumable from "./maybe-consumable/index.js";
|
|
2
2
|
//# sourceMappingURL=maybe-consumable.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"maybe-consumable.js","sourceRoot":"","sources":["../src/maybe-consumable.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,eAAe,MAAM,
|
|
1
|
+
{"version":3,"file":"maybe-consumable.js","sourceRoot":"","sources":["../src/maybe-consumable.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,eAAe,MAAM,6BAA6B,CAAC"}
|