@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.
Files changed (64) hide show
  1. package/CHANGELOG.md +13 -0
  2. package/esm/consumable/index.d.ts +5 -0
  3. package/esm/consumable/index.d.ts.map +1 -0
  4. package/esm/consumable/index.js +5 -0
  5. package/esm/consumable/index.js.map +1 -0
  6. package/esm/consumable/readable.d.ts +20 -0
  7. package/esm/consumable/readable.d.ts.map +1 -0
  8. package/esm/consumable/readable.js +47 -0
  9. package/esm/consumable/readable.js.map +1 -0
  10. package/esm/consumable/wrap-byte-readable.d.ts +6 -0
  11. package/esm/consumable/wrap-byte-readable.d.ts.map +1 -0
  12. package/esm/consumable/wrap-byte-readable.js +23 -0
  13. package/esm/consumable/wrap-byte-readable.js.map +1 -0
  14. package/esm/consumable/wrap-writable.d.ts +6 -0
  15. package/esm/consumable/wrap-writable.d.ts.map +1 -0
  16. package/esm/consumable/wrap-writable.js +18 -0
  17. package/esm/consumable/wrap-writable.js.map +1 -0
  18. package/esm/consumable/writable.d.ts +14 -0
  19. package/esm/consumable/writable.d.ts.map +1 -0
  20. package/esm/{maybe-consumable-ns.js → consumable/writable.js} +10 -16
  21. package/esm/consumable/writable.js.map +1 -0
  22. package/esm/consumable.d.ts +13 -33
  23. package/esm/consumable.d.ts.map +1 -1
  24. package/esm/consumable.js +5 -83
  25. package/esm/consumable.js.map +1 -1
  26. package/esm/maybe-consumable/index.d.ts +5 -0
  27. package/esm/maybe-consumable/index.d.ts.map +1 -0
  28. package/esm/maybe-consumable/index.js +4 -0
  29. package/esm/maybe-consumable/index.js.map +1 -0
  30. package/esm/maybe-consumable/utils.d.ts +5 -0
  31. package/esm/maybe-consumable/utils.d.ts.map +1 -0
  32. package/esm/maybe-consumable/utils.js +13 -0
  33. package/esm/maybe-consumable/utils.js.map +1 -0
  34. package/esm/maybe-consumable/wrap-writable.d.ts +6 -0
  35. package/esm/maybe-consumable/wrap-writable.d.ts.map +1 -0
  36. package/esm/maybe-consumable/wrap-writable.js +19 -0
  37. package/esm/maybe-consumable/wrap-writable.js.map +1 -0
  38. package/esm/maybe-consumable/writable.d.ts +13 -0
  39. package/esm/maybe-consumable/writable.d.ts.map +1 -0
  40. package/esm/maybe-consumable/writable.js +34 -0
  41. package/esm/maybe-consumable/writable.js.map +1 -0
  42. package/esm/maybe-consumable.d.ts +1 -1
  43. package/esm/maybe-consumable.d.ts.map +1 -1
  44. package/esm/maybe-consumable.js +1 -1
  45. package/esm/maybe-consumable.js.map +1 -1
  46. package/esm/types.d.ts +1 -1
  47. package/esm/types.d.ts.map +1 -1
  48. package/package.json +5 -5
  49. package/src/consumable/index.ts +4 -0
  50. package/src/consumable/readable.ts +80 -0
  51. package/src/consumable/wrap-byte-readable.ts +33 -0
  52. package/src/consumable/wrap-writable.ts +21 -0
  53. package/src/consumable/writable.ts +72 -0
  54. package/src/consumable.ts +23 -150
  55. package/src/maybe-consumable/index.ts +4 -0
  56. package/src/maybe-consumable/utils.ts +17 -0
  57. package/src/maybe-consumable/wrap-writable.ts +23 -0
  58. package/src/{maybe-consumable-ns.ts → maybe-consumable/writable.ts} +13 -23
  59. package/src/maybe-consumable.ts +1 -1
  60. package/src/types.ts +1 -1
  61. package/tsconfig.build.tsbuildinfo +1 -1
  62. package/esm/maybe-consumable-ns.d.ts +0 -16
  63. package/esm/maybe-consumable-ns.d.ts.map +0 -1
  64. 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,5 @@
1
+ export * from "./readable.js";
2
+ export * from "./wrap-byte-readable.js";
3
+ export * from "./wrap-writable.js";
4
+ export * from "./writable.js";
5
+ //# sourceMappingURL=index.d.ts.map
@@ -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,5 @@
1
+ export * from "./readable.js";
2
+ export * from "./wrap-byte-readable.js";
3
+ export * from "./wrap-writable.js";
4
+ export * from "./writable.js";
5
+ //# sourceMappingURL=index.js.map
@@ -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 "./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);
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
- async write(chunk, controller) {
33
- await tryConsume(chunk, (chunk) => sink.write?.(chunk, controller));
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=maybe-consumable-ns.js.map
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"}
@@ -1,19 +1,11 @@
1
- import type { QueuingStrategy, WritableStreamDefaultController, WritableStreamDefaultWriter } from "./stream.js";
2
- import { ReadableStream as NativeReadableStream, WritableStream as NativeWritableStream } from "./stream.js";
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 WritableStream;
16
- static readonly ReadableStream: typeof ReadableStream;
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
- interface WritableStreamSink<in T> {
26
- start?(controller: WritableStreamDefaultController): void | PromiseLike<void>;
27
- write?(chunk: T, controller: WritableStreamDefaultController): void | PromiseLike<void>;
28
- abort?(reason: unknown): void | PromiseLike<void>;
29
- close?(): void | PromiseLike<void>;
30
- }
31
- type WritableStream<in T> = typeof Consumable.WritableStream<T>;
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
@@ -1 +1 @@
1
- {"version":3,"file":"consumable.d.ts","sourceRoot":"","sources":["../src/consumable.ts"],"names":[],"mappings":"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"}
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 { ReadableStream as NativeReadableStream, WritableStream as NativeWritableStream, } from "./stream.js";
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 = WritableStream;
86
- static ReadableStream = ReadableStream;
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;
@@ -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":"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,4 @@
1
+ export * from "./utils.js";
2
+ export { MaybeConsumableWrapWritableStream as WrapWritableStream } from "./wrap-writable.js";
3
+ export { MaybeConsumableWritableStream as WritableStream } from "./writable.js";
4
+ //# sourceMappingURL=index.js.map
@@ -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-ns.js";
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,0BAA0B,CAAC"}
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"}
@@ -1,2 +1,2 @@
1
- export * as MaybeConsumable from "./maybe-consumable-ns.js";
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,0BAA0B,CAAC"}
1
+ {"version":3,"file":"maybe-consumable.js","sourceRoot":"","sources":["../src/maybe-consumable.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,eAAe,MAAM,6BAA6B,CAAC"}