@yume-chan/stream-extra 0.0.21 → 0.0.23

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 (49) hide show
  1. package/CHANGELOG.json +24 -0
  2. package/CHANGELOG.md +15 -1
  3. package/esm/buffered-transform.js.map +1 -1
  4. package/esm/buffered.d.ts.map +1 -1
  5. package/esm/buffered.js +22 -15
  6. package/esm/buffered.js.map +1 -1
  7. package/esm/concat.js.map +1 -1
  8. package/esm/consumable.d.ts +4 -4
  9. package/esm/consumable.d.ts.map +1 -1
  10. package/esm/consumable.js +5 -6
  11. package/esm/consumable.js.map +1 -1
  12. package/esm/distribution.js.map +1 -1
  13. package/esm/duplex.d.ts +2 -2
  14. package/esm/duplex.d.ts.map +1 -1
  15. package/esm/duplex.js +2 -2
  16. package/esm/duplex.js.map +1 -1
  17. package/esm/pipe-from.d.ts +1 -1
  18. package/esm/pipe-from.d.ts.map +1 -1
  19. package/esm/push-readable.d.ts +1 -0
  20. package/esm/push-readable.d.ts.map +1 -1
  21. package/esm/push-readable.js +24 -10
  22. package/esm/push-readable.js.map +1 -1
  23. package/esm/split-string.js.map +1 -1
  24. package/esm/stream.d.ts +8 -9
  25. package/esm/stream.d.ts.map +1 -1
  26. package/esm/stream.js +6 -12
  27. package/esm/stream.js.map +1 -1
  28. package/esm/types.d.ts +778 -0
  29. package/esm/types.d.ts.map +1 -0
  30. package/esm/types.js +3 -0
  31. package/esm/types.js.map +1 -0
  32. package/esm/wrap-readable.d.ts +2 -2
  33. package/esm/wrap-readable.d.ts.map +1 -1
  34. package/esm/wrap-readable.js +8 -8
  35. package/esm/wrap-readable.js.map +1 -1
  36. package/esm/wrap-writable.d.ts +1 -1
  37. package/esm/wrap-writable.d.ts.map +1 -1
  38. package/esm/wrap-writable.js +12 -12
  39. package/esm/wrap-writable.js.map +1 -1
  40. package/package.json +10 -11
  41. package/src/buffered.ts +22 -15
  42. package/src/consumable.ts +22 -13
  43. package/src/duplex.ts +21 -14
  44. package/src/push-readable.ts +28 -12
  45. package/src/stream.ts +19 -24
  46. package/src/types.ts +881 -0
  47. package/src/wrap-readable.ts +34 -29
  48. package/src/wrap-writable.ts +12 -12
  49. package/tsconfig.build.tsbuildinfo +1 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/esm/types.js ADDED
@@ -0,0 +1,3 @@
1
+ /// <reference lib="es2018.asynciterable" />
2
+ export {};
3
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,4CAA4C;AAg3B5C,OAAO,EAAE,CAAC"}
@@ -1,5 +1,5 @@
1
1
  import type { ValueOrPromise } from "@yume-chan/struct";
2
- import type { ReadableStreamDefaultController } from "./stream.js";
2
+ import type { QueuingStrategy, ReadableStreamDefaultController } from "./stream.js";
3
3
  import { ReadableStream } from "./stream.js";
4
4
  export type WrapReadableStreamStart<T> = (controller: ReadableStreamDefaultController<T>) => ValueOrPromise<ReadableStream<T>>;
5
5
  export interface ReadableStreamWrapper<T> {
@@ -17,6 +17,6 @@ export interface ReadableStreamWrapper<T> {
17
17
  export declare class WrapReadableStream<T> extends ReadableStream<T> {
18
18
  #private;
19
19
  readable: ReadableStream<T>;
20
- constructor(wrapper: ReadableStream<T> | WrapReadableStreamStart<T> | ReadableStreamWrapper<T>);
20
+ constructor(wrapper: ReadableStream<T> | WrapReadableStreamStart<T> | ReadableStreamWrapper<T>, strategy?: QueuingStrategy<T>);
21
21
  }
22
22
  //# sourceMappingURL=wrap-readable.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"wrap-readable.d.ts","sourceRoot":"","sources":["../src/wrap-readable.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAExD,OAAO,KAAK,EACR,+BAA+B,EAElC,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAE7C,MAAM,MAAM,uBAAuB,CAAC,CAAC,IAAI,CACrC,UAAU,EAAE,+BAA+B,CAAC,CAAC,CAAC,KAC7C,cAAc,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC;AAEvC,MAAM,WAAW,qBAAqB,CAAC,CAAC;IACpC,KAAK,EAAE,uBAAuB,CAAC,CAAC,CAAC,CAAC;IAClC,MAAM,CAAC,CAAC,MAAM,CAAC,EAAE,OAAO,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC;IAChD,KAAK,CAAC,IAAI,cAAc,CAAC,IAAI,CAAC,CAAC;CAClC;AAoBD;;;;;;GAMG;AACH,qBAAa,kBAAkB,CAAC,CAAC,CAAE,SAAQ,cAAc,CAAC,CAAC,CAAC;;IACxD,QAAQ,EAAG,cAAc,CAAC,CAAC,CAAC,CAAC;gBAKzB,OAAO,EACD,cAAc,CAAC,CAAC,CAAC,GACjB,uBAAuB,CAAC,CAAC,CAAC,GAC1B,qBAAqB,CAAC,CAAC,CAAC;CAmCrC"}
1
+ {"version":3,"file":"wrap-readable.d.ts","sourceRoot":"","sources":["../src/wrap-readable.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAExD,OAAO,KAAK,EACR,eAAe,EACf,+BAA+B,EAElC,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAE7C,MAAM,MAAM,uBAAuB,CAAC,CAAC,IAAI,CACrC,UAAU,EAAE,+BAA+B,CAAC,CAAC,CAAC,KAC7C,cAAc,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC;AAEvC,MAAM,WAAW,qBAAqB,CAAC,CAAC;IACpC,KAAK,EAAE,uBAAuB,CAAC,CAAC,CAAC,CAAC;IAClC,MAAM,CAAC,CAAC,MAAM,CAAC,EAAE,OAAO,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC;IAChD,KAAK,CAAC,IAAI,cAAc,CAAC,IAAI,CAAC,CAAC;CAClC;AAoBD;;;;;;GAMG;AACH,qBAAa,kBAAkB,CAAC,CAAC,CAAE,SAAQ,cAAc,CAAC,CAAC,CAAC;;IACxD,QAAQ,EAAG,cAAc,CAAC,CAAC,CAAC,CAAC;gBAKzB,OAAO,EACD,cAAc,CAAC,CAAC,CAAC,GACjB,uBAAuB,CAAC,CAAC,CAAC,GAC1B,qBAAqB,CAAC,CAAC,CAAC,EAC9B,QAAQ,CAAC,EAAE,eAAe,CAAC,CAAC,CAAC;CAsCpC"}
@@ -22,7 +22,7 @@ function getWrappedReadableStream(wrapper, controller) {
22
22
  export class WrapReadableStream extends ReadableStream {
23
23
  readable;
24
24
  #reader;
25
- constructor(wrapper) {
25
+ constructor(wrapper, strategy) {
26
26
  super({
27
27
  start: async (controller) => {
28
28
  // `start` is invoked before `ReadableStream`'s constructor finish,
@@ -33,12 +33,6 @@ export class WrapReadableStream extends ReadableStream {
33
33
  this.readable = await getWrappedReadableStream(wrapper, controller);
34
34
  this.#reader = this.readable.getReader();
35
35
  },
36
- cancel: async (reason) => {
37
- await this.#reader.cancel(reason);
38
- if ("cancel" in wrapper) {
39
- await wrapper.cancel?.(reason);
40
- }
41
- },
42
36
  pull: async (controller) => {
43
37
  const result = await this.#reader.read();
44
38
  if (result.done) {
@@ -51,7 +45,13 @@ export class WrapReadableStream extends ReadableStream {
51
45
  controller.enqueue(result.value);
52
46
  }
53
47
  },
54
- });
48
+ cancel: async (reason) => {
49
+ await this.#reader.cancel(reason);
50
+ if ("cancel" in wrapper) {
51
+ await wrapper.cancel?.(reason);
52
+ }
53
+ },
54
+ }, strategy);
55
55
  }
56
56
  }
57
57
  //# sourceMappingURL=wrap-readable.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"wrap-readable.js","sourceRoot":"","sources":["../src/wrap-readable.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAY7C,SAAS,wBAAwB,CAC7B,OAG8B,EAC9B,UAA8C;IAE9C,IAAI,OAAO,IAAI,OAAO,EAAE;QACpB,OAAO,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;KACpC;SAAM,IAAI,OAAO,OAAO,KAAK,UAAU,EAAE;QACtC,OAAO,OAAO,CAAC,UAAU,CAAC,CAAC;KAC9B;SAAM;QACH,gDAAgD;QAChD,wEAAwE;QACxE,OAAO,OAAO,CAAC;KAClB;AACL,CAAC;AAED;;;;;;GAMG;AACH,MAAM,OAAO,kBAAsB,SAAQ,cAAiB;IACxD,QAAQ,CAAqB;IAE7B,OAAO,CAAkC;IAEzC,YACI,OAG8B;QAE9B,KAAK,CAAC;YACF,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,EAAE;gBACxB,mEAAmE;gBACnE,uCAAuC;gBACvC,gHAAgH;gBAChH,mCAAmC;gBACnC,MAAM,OAAO,CAAC,OAAO,EAAE,CAAC;gBAExB,IAAI,CAAC,QAAQ,GAAG,MAAM,wBAAwB,CAC1C,OAAO,EACP,UAAU,CACb,CAAC;gBACF,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,CAAC;YAC7C,CAAC;YACD,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;gBACrB,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;gBAClC,IAAI,QAAQ,IAAI,OAAO,EAAE;oBACrB,MAAM,OAAO,CAAC,MAAM,EAAE,CAAC,MAAM,CAAC,CAAC;iBAClC;YACL,CAAC;YACD,IAAI,EAAE,KAAK,EAAE,UAAU,EAAE,EAAE;gBACvB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;gBACzC,IAAI,MAAM,CAAC,IAAI,EAAE;oBACb,UAAU,CAAC,KAAK,EAAE,CAAC;oBACnB,IAAI,OAAO,IAAI,OAAO,EAAE;wBACpB,MAAM,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;qBAC3B;iBACJ;qBAAM;oBACH,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;iBACpC;YACL,CAAC;SACJ,CAAC,CAAC;IACP,CAAC;CACJ"}
1
+ {"version":3,"file":"wrap-readable.js","sourceRoot":"","sources":["../src/wrap-readable.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAY7C,SAAS,wBAAwB,CAC7B,OAG8B,EAC9B,UAA8C;IAE9C,IAAI,OAAO,IAAI,OAAO,EAAE,CAAC;QACrB,OAAO,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;IACrC,CAAC;SAAM,IAAI,OAAO,OAAO,KAAK,UAAU,EAAE,CAAC;QACvC,OAAO,OAAO,CAAC,UAAU,CAAC,CAAC;IAC/B,CAAC;SAAM,CAAC;QACJ,gDAAgD;QAChD,wEAAwE;QACxE,OAAO,OAAO,CAAC;IACnB,CAAC;AACL,CAAC;AAED;;;;;;GAMG;AACH,MAAM,OAAO,kBAAsB,SAAQ,cAAiB;IACxD,QAAQ,CAAqB;IAE7B,OAAO,CAAkC;IAEzC,YACI,OAG8B,EAC9B,QAA6B;QAE7B,KAAK,CACD;YACI,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,EAAE;gBACxB,mEAAmE;gBACnE,uCAAuC;gBACvC,gHAAgH;gBAChH,mCAAmC;gBACnC,MAAM,OAAO,CAAC,OAAO,EAAE,CAAC;gBAExB,IAAI,CAAC,QAAQ,GAAG,MAAM,wBAAwB,CAC1C,OAAO,EACP,UAAU,CACb,CAAC;gBACF,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,CAAC;YAC7C,CAAC;YACD,IAAI,EAAE,KAAK,EAAE,UAAU,EAAE,EAAE;gBACvB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;gBACzC,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;oBACd,UAAU,CAAC,KAAK,EAAE,CAAC;oBACnB,IAAI,OAAO,IAAI,OAAO,EAAE,CAAC;wBACrB,MAAM,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;oBAC5B,CAAC;gBACL,CAAC;qBAAM,CAAC;oBACJ,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;gBACrC,CAAC;YACL,CAAC;YACD,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;gBACrB,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;gBAClC,IAAI,QAAQ,IAAI,OAAO,EAAE,CAAC;oBACtB,MAAM,OAAO,CAAC,MAAM,EAAE,CAAC,MAAM,CAAC,CAAC;gBACnC,CAAC;YACL,CAAC;SACJ,EACD,QAAQ,CACX,CAAC;IACN,CAAC;CACJ"}
@@ -9,7 +9,7 @@ export interface WritableStreamWrapper<T> {
9
9
  export declare class WrapWritableStream<T> extends WritableStream<T> {
10
10
  #private;
11
11
  writable: WritableStream<T>;
12
- constructor(wrapper: WritableStream<T> | WrapWritableStreamStart<T> | WritableStreamWrapper<T>);
12
+ constructor(start: WritableStream<T> | WrapWritableStreamStart<T> | WritableStreamWrapper<T>);
13
13
  bePipedThroughFrom<U>(transformer: TransformStream<U, T>): WrapWritableStream<U>;
14
14
  }
15
15
  //# sourceMappingURL=wrap-writable.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"wrap-writable.d.ts","sourceRoot":"","sources":["../src/wrap-writable.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAExD,OAAO,KAAK,EAAE,eAAe,EAA+B,MAAM,aAAa,CAAC;AAChF,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAE7C,MAAM,MAAM,uBAAuB,CAAC,CAAC,IAAI,MAAM,cAAc,CACzD,cAAc,CAAC,CAAC,CAAC,CACpB,CAAC;AAEF,MAAM,WAAW,qBAAqB,CAAC,CAAC;IACpC,KAAK,EAAE,uBAAuB,CAAC,CAAC,CAAC,CAAC;IAClC,KAAK,CAAC,IAAI,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAClC;AAmBD,qBAAa,kBAAkB,CAAC,CAAC,CAAE,SAAQ,cAAc,CAAC,CAAC,CAAC;;IACxD,QAAQ,EAAG,cAAc,CAAC,CAAC,CAAC,CAAC;gBAKzB,OAAO,EACD,cAAc,CAAC,CAAC,CAAC,GACjB,uBAAuB,CAAC,CAAC,CAAC,GAC1B,qBAAqB,CAAC,CAAC,CAAC;IAmClC,kBAAkB,CAAC,CAAC,EAAE,WAAW,EAAE,eAAe,CAAC,CAAC,EAAE,CAAC,CAAC;CAY3D"}
1
+ {"version":3,"file":"wrap-writable.d.ts","sourceRoot":"","sources":["../src/wrap-writable.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAExD,OAAO,KAAK,EAAE,eAAe,EAA+B,MAAM,aAAa,CAAC;AAChF,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAE7C,MAAM,MAAM,uBAAuB,CAAC,CAAC,IAAI,MAAM,cAAc,CACzD,cAAc,CAAC,CAAC,CAAC,CACpB,CAAC;AAEF,MAAM,WAAW,qBAAqB,CAAC,CAAC;IACpC,KAAK,EAAE,uBAAuB,CAAC,CAAC,CAAC,CAAC;IAClC,KAAK,CAAC,IAAI,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAClC;AAmBD,qBAAa,kBAAkB,CAAC,CAAC,CAAE,SAAQ,cAAc,CAAC,CAAC,CAAC;;IACxD,QAAQ,EAAG,cAAc,CAAC,CAAC,CAAC,CAAC;gBAKzB,KAAK,EACC,cAAc,CAAC,CAAC,CAAC,GACjB,uBAAuB,CAAC,CAAC,CAAC,GAC1B,qBAAqB,CAAC,CAAC,CAAC;IAmClC,kBAAkB,CAAC,CAAC,EAAE,WAAW,EAAE,eAAe,CAAC,CAAC,EAAE,CAAC,CAAC;CAY3D"}
@@ -1,21 +1,21 @@
1
1
  import { WritableStream } from "./stream.js";
2
- async function getWrappedWritableStream(wrapper) {
3
- if ("start" in wrapper) {
4
- return await wrapper.start();
2
+ async function getWrappedWritableStream(start) {
3
+ if ("start" in start) {
4
+ return await start.start();
5
5
  }
6
- else if (typeof wrapper === "function") {
7
- return await wrapper();
6
+ else if (typeof start === "function") {
7
+ return await start();
8
8
  }
9
9
  else {
10
10
  // Can't use `wrapper instanceof WritableStream`
11
11
  // Because we want to be compatible with any WritableStream-like objects
12
- return wrapper;
12
+ return start;
13
13
  }
14
14
  }
15
15
  export class WrapWritableStream extends WritableStream {
16
16
  writable;
17
17
  #writer;
18
- constructor(wrapper) {
18
+ constructor(start) {
19
19
  super({
20
20
  start: async () => {
21
21
  // `start` is invoked before `ReadableStream`'s constructor finish,
@@ -23,7 +23,7 @@ export class WrapWritableStream extends WritableStream {
23
23
  // "Must call super constructor in derived class before accessing 'this' or returning from derived constructor".
24
24
  // Queue a microtask to avoid this.
25
25
  await Promise.resolve();
26
- this.writable = await getWrappedWritableStream(wrapper);
26
+ this.writable = await getWrappedWritableStream(start);
27
27
  this.#writer = this.writable.getWriter();
28
28
  },
29
29
  write: async (chunk) => {
@@ -31,8 +31,8 @@ export class WrapWritableStream extends WritableStream {
31
31
  },
32
32
  abort: async (reason) => {
33
33
  await this.#writer.abort(reason);
34
- if ("close" in wrapper) {
35
- await wrapper.close?.();
34
+ if (start !== this.writable && "close" in start) {
35
+ await start.close?.();
36
36
  }
37
37
  },
38
38
  close: async () => {
@@ -41,8 +41,8 @@ export class WrapWritableStream extends WritableStream {
41
41
  // closing the outer stream first will make the inner stream incapable of
42
42
  // sending data in its `close` handler.
43
43
  await this.#writer.close();
44
- if ("close" in wrapper) {
45
- await wrapper.close?.();
44
+ if (start !== this.writable && "close" in start) {
45
+ await start.close?.();
46
46
  }
47
47
  },
48
48
  });
@@ -1 +1 @@
1
- {"version":3,"file":"wrap-writable.js","sourceRoot":"","sources":["../src/wrap-writable.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAW7C,KAAK,UAAU,wBAAwB,CACnC,OAG8B;IAE9B,IAAI,OAAO,IAAI,OAAO,EAAE;QACpB,OAAO,MAAM,OAAO,CAAC,KAAK,EAAE,CAAC;KAChC;SAAM,IAAI,OAAO,OAAO,KAAK,UAAU,EAAE;QACtC,OAAO,MAAM,OAAO,EAAE,CAAC;KAC1B;SAAM;QACH,gDAAgD;QAChD,wEAAwE;QACxE,OAAO,OAAO,CAAC;KAClB;AACL,CAAC;AAED,MAAM,OAAO,kBAAsB,SAAQ,cAAiB;IACxD,QAAQ,CAAqB;IAE7B,OAAO,CAAkC;IAEzC,YACI,OAG8B;QAE9B,KAAK,CAAC;YACF,KAAK,EAAE,KAAK,IAAI,EAAE;gBACd,mEAAmE;gBACnE,uCAAuC;gBACvC,gHAAgH;gBAChH,mCAAmC;gBACnC,MAAM,OAAO,CAAC,OAAO,EAAE,CAAC;gBAExB,IAAI,CAAC,QAAQ,GAAG,MAAM,wBAAwB,CAAC,OAAO,CAAC,CAAC;gBACxD,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,CAAC;YAC7C,CAAC;YACD,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE;gBACnB,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YACpC,CAAC;YACD,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;gBACpB,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;gBACjC,IAAI,OAAO,IAAI,OAAO,EAAE;oBACpB,MAAM,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;iBAC3B;YACL,CAAC;YACD,KAAK,EAAE,KAAK,IAAI,EAAE;gBACd,gCAAgC;gBAChC,0EAA0E;gBAC1E,yEAAyE;gBACzE,uCAAuC;gBACvC,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;gBAC3B,IAAI,OAAO,IAAI,OAAO,EAAE;oBACpB,MAAM,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;iBAC3B;YACL,CAAC;SACJ,CAAC,CAAC;IACP,CAAC;IAED,kBAAkB,CAAI,WAAkC;QACpD,IAAI,OAAsB,CAAC;QAC3B,OAAO,IAAI,kBAAkB,CAAI;YAC7B,KAAK,EAAE,GAAG,EAAE;gBACR,OAAO,GAAG,WAAW,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;gBAC5C,OAAO,WAAW,CAAC,QAAQ,CAAC;YAChC,CAAC;YACD,KAAK,CAAC,KAAK;gBACP,MAAM,OAAO,CAAC;YAClB,CAAC;SACJ,CAAC,CAAC;IACP,CAAC;CACJ"}
1
+ {"version":3,"file":"wrap-writable.js","sourceRoot":"","sources":["../src/wrap-writable.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAW7C,KAAK,UAAU,wBAAwB,CACnC,KAG8B;IAE9B,IAAI,OAAO,IAAI,KAAK,EAAE,CAAC;QACnB,OAAO,MAAM,KAAK,CAAC,KAAK,EAAE,CAAC;IAC/B,CAAC;SAAM,IAAI,OAAO,KAAK,KAAK,UAAU,EAAE,CAAC;QACrC,OAAO,MAAM,KAAK,EAAE,CAAC;IACzB,CAAC;SAAM,CAAC;QACJ,gDAAgD;QAChD,wEAAwE;QACxE,OAAO,KAAK,CAAC;IACjB,CAAC;AACL,CAAC;AAED,MAAM,OAAO,kBAAsB,SAAQ,cAAiB;IACxD,QAAQ,CAAqB;IAE7B,OAAO,CAAkC;IAEzC,YACI,KAG8B;QAE9B,KAAK,CAAC;YACF,KAAK,EAAE,KAAK,IAAI,EAAE;gBACd,mEAAmE;gBACnE,uCAAuC;gBACvC,gHAAgH;gBAChH,mCAAmC;gBACnC,MAAM,OAAO,CAAC,OAAO,EAAE,CAAC;gBAExB,IAAI,CAAC,QAAQ,GAAG,MAAM,wBAAwB,CAAC,KAAK,CAAC,CAAC;gBACtD,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,CAAC;YAC7C,CAAC;YACD,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE;gBACnB,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YACpC,CAAC;YACD,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;gBACpB,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;gBACjC,IAAI,KAAK,KAAK,IAAI,CAAC,QAAQ,IAAI,OAAO,IAAI,KAAK,EAAE,CAAC;oBAC9C,MAAM,KAAK,CAAC,KAAK,EAAE,EAAE,CAAC;gBAC1B,CAAC;YACL,CAAC;YACD,KAAK,EAAE,KAAK,IAAI,EAAE;gBACd,gCAAgC;gBAChC,0EAA0E;gBAC1E,yEAAyE;gBACzE,uCAAuC;gBACvC,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;gBAC3B,IAAI,KAAK,KAAK,IAAI,CAAC,QAAQ,IAAI,OAAO,IAAI,KAAK,EAAE,CAAC;oBAC9C,MAAM,KAAK,CAAC,KAAK,EAAE,EAAE,CAAC;gBAC1B,CAAC;YACL,CAAC;SACJ,CAAC,CAAC;IACP,CAAC;IAED,kBAAkB,CAAI,WAAkC;QACpD,IAAI,OAAsB,CAAC;QAC3B,OAAO,IAAI,kBAAkB,CAAI;YAC7B,KAAK,EAAE,GAAG,EAAE;gBACR,OAAO,GAAG,WAAW,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;gBAC5C,OAAO,WAAW,CAAC,QAAQ,CAAC;YAChC,CAAC;YACD,KAAK,CAAC,KAAK;gBACP,MAAM,OAAO,CAAC;YAClB,CAAC;SACJ,CAAC,CAAC;IACP,CAAC;CACJ"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@yume-chan/stream-extra",
3
- "version": "0.0.21",
3
+ "version": "0.0.23",
4
4
  "description": "Extensions to Web Streams API",
5
5
  "keywords": [
6
6
  "stream",
@@ -26,25 +26,24 @@
26
26
  "types": "esm/index.d.ts",
27
27
  "dependencies": {
28
28
  "@yume-chan/async": "^2.2.0",
29
- "@yume-chan/struct": "^0.0.21",
30
- "tslib": "^2.6.0",
31
- "web-streams-polyfill": "^4.0.0-beta.3"
29
+ "@yume-chan/struct": "^0.0.23",
30
+ "tslib": "^2.6.2"
32
31
  },
33
32
  "devDependencies": {
34
- "@jest/globals": "^29.6.1",
33
+ "@jest/globals": "^30.0.0-alpha.3",
35
34
  "@yume-chan/eslint-config": "^1.0.0",
36
35
  "@yume-chan/tsconfig": "^1.0.0",
37
36
  "cross-env": "^7.0.3",
38
- "eslint": "^8.44.0",
39
- "jest": "^29.5.0",
40
- "prettier": "^3.0.0",
41
- "ts-jest": "^29.1.1",
42
- "typescript": "^5.1.6"
37
+ "eslint": "^8.57.0",
38
+ "jest": "^30.0.0-alpha.3",
39
+ "prettier": "^3.2.5",
40
+ "ts-jest": "^29.1.2",
41
+ "typescript": "^5.4.2"
43
42
  },
44
43
  "scripts": {
45
44
  "build": "tsc -b tsconfig.build.json",
46
45
  "build:watch": "tsc -b tsconfig.build.json",
47
- "test": "cross-env NODE_OPTIONS=--experimental-vm-modules jest --coverage",
46
+ "test": "cross-env NODE_OPTIONS=\"--experimental-vm-modules --no-warnings\" TS_JEST_DISABLE_VER_CHECKER=true jest --coverage",
48
47
  "lint": "eslint src/**/*.ts --fix && prettier src/**/*.ts --write --tab-width 4"
49
48
  }
50
49
  }
package/src/buffered.ts CHANGED
@@ -31,7 +31,6 @@ export class BufferedReadableStream implements AsyncExactReadable {
31
31
  if (done) {
32
32
  throw new ExactReadableEndedError();
33
33
  }
34
- this.#position += value.byteLength;
35
34
  return value;
36
35
  }
37
36
 
@@ -42,45 +41,51 @@ export class BufferedReadableStream implements AsyncExactReadable {
42
41
  if (initial) {
43
42
  result = new Uint8Array(length);
44
43
  result.set(initial);
45
- index = initial.byteLength;
46
- length -= initial.byteLength;
44
+ index = initial.length;
45
+ length -= initial.length;
47
46
  } else {
48
47
  const array = await this.#readSource();
49
- if (array.byteLength === length) {
48
+ if (array.length === length) {
49
+ this.#position += length;
50
50
  return array;
51
51
  }
52
52
 
53
- if (array.byteLength > length) {
53
+ if (array.length > length) {
54
54
  this.#buffered = array;
55
55
  this.#bufferedOffset = length;
56
- this.#bufferedLength = array.byteLength - length;
56
+ this.#bufferedLength = array.length - length;
57
+ this.#position += length;
57
58
  return array.subarray(0, length);
58
59
  }
59
60
 
60
61
  result = new Uint8Array(length);
61
62
  result.set(array);
62
- index = array.byteLength;
63
- length -= array.byteLength;
63
+ index = array.length;
64
+ length -= array.length;
65
+ this.#position += array.length;
64
66
  }
65
67
 
66
68
  while (length > 0) {
67
69
  const array = await this.#readSource();
68
- if (array.byteLength === length) {
70
+ if (array.length === length) {
69
71
  result.set(array, index);
72
+ this.#position += length;
70
73
  return result;
71
74
  }
72
75
 
73
- if (array.byteLength > length) {
76
+ if (array.length > length) {
74
77
  this.#buffered = array;
75
78
  this.#bufferedOffset = length;
76
- this.#bufferedLength = array.byteLength - length;
79
+ this.#bufferedLength = array.length - length;
77
80
  result.set(array.subarray(0, length), index);
81
+ this.#position += length;
78
82
  return result;
79
83
  }
80
84
 
81
85
  result.set(array, index);
82
- index += array.byteLength;
83
- length -= array.byteLength;
86
+ index += array.length;
87
+ length -= array.length;
88
+ this.#position += array.length;
84
89
  }
85
90
 
86
91
  return result;
@@ -101,12 +106,14 @@ export class BufferedReadableStream implements AsyncExactReadable {
101
106
  // don't use it until absolutely necessary
102
107
  this.#bufferedOffset += length;
103
108
  this.#bufferedLength -= length;
109
+ this.#position += length;
104
110
  return array.subarray(offset, offset + length);
105
111
  }
106
112
 
107
113
  this.#buffered = undefined;
108
114
  this.#bufferedLength = 0;
109
115
  this.#bufferedOffset = 0;
116
+ this.#position += array.length - offset;
110
117
  return this.#readAsync(length, array.subarray(offset));
111
118
  }
112
119
 
@@ -147,7 +154,7 @@ export class BufferedReadableStream implements AsyncExactReadable {
147
154
  }
148
155
  }
149
156
 
150
- cancel(reason?: unknown) {
151
- return this.reader.cancel(reason);
157
+ async cancel(reason?: unknown) {
158
+ await this.reader.cancel(reason);
152
159
  }
153
160
  }
package/src/consumable.ts CHANGED
@@ -1,6 +1,10 @@
1
1
  import { PromiseResolver } from "@yume-chan/async";
2
2
 
3
- import type { QueuingStrategy, WritableStreamDefaultWriter } from "./stream.js";
3
+ import type {
4
+ QueuingStrategy,
5
+ WritableStreamDefaultController,
6
+ WritableStreamDefaultWriter,
7
+ } from "./stream.js";
4
8
  import { ReadableStream, TransformStream, WritableStream } from "./stream.js";
5
9
 
6
10
  interface Task {
@@ -43,7 +47,7 @@ export class Consumable<T> {
43
47
  this.#resolver.resolve();
44
48
  }
45
49
 
46
- error(error: any) {
50
+ error(error: unknown) {
47
51
  this.#resolver.reject(error);
48
52
  }
49
53
 
@@ -51,7 +55,7 @@ export class Consumable<T> {
51
55
  try {
52
56
  // eslint-disable-next-line @typescript-eslint/await-thenable
53
57
  const result = await this.#task.run(() => callback(this.value));
54
- this.consume();
58
+ this.#resolver.resolve();
55
59
  return result;
56
60
  } catch (e) {
57
61
  this.#resolver.reject(e);
@@ -161,8 +165,13 @@ export class ConsumableReadableStream<T> extends ReadableStream<Consumable<T>> {
161
165
  }
162
166
 
163
167
  export interface ConsumableWritableStreamSink<T> {
164
- start?(): void | PromiseLike<void>;
165
- write?(chunk: T): void | PromiseLike<void>;
168
+ start?(
169
+ controller: WritableStreamDefaultController,
170
+ ): void | PromiseLike<void>;
171
+ write?(
172
+ chunk: T,
173
+ controller: WritableStreamDefaultController,
174
+ ): void | PromiseLike<void>;
166
175
  abort?(reason: any): void | PromiseLike<void>;
167
176
  close?(): void | PromiseLike<void>;
168
177
  }
@@ -196,12 +205,13 @@ export class ConsumableWritableStream<T> extends WritableStream<Consumable<T>> {
196
205
 
197
206
  super(
198
207
  {
199
- start() {
200
- return sink.start?.();
208
+ start(controller) {
209
+ return sink.start?.(controller);
201
210
  },
202
- async write(chunk) {
203
- await chunk.tryConsume((value) => sink.write?.(value));
204
- chunk.consume();
211
+ async write(chunk, controller) {
212
+ await chunk.tryConsume((value) =>
213
+ sink.write?.(value, controller),
214
+ );
205
215
  },
206
216
  abort(reason) {
207
217
  return sink.abort?.(reason);
@@ -254,9 +264,8 @@ export class ConsumableTransformStream<I, O> extends TransformStream<
254
264
  await transformer.start?.(wrappedController);
255
265
  },
256
266
  async transform(chunk) {
257
- await chunk.tryConsume(
258
- (value) =>
259
- transformer.transform?.(value, wrappedController!),
267
+ await chunk.tryConsume((value) =>
268
+ transformer.transform?.(value, wrappedController!),
260
269
  );
261
270
  chunk.consume();
262
271
  },
package/src/duplex.ts CHANGED
@@ -2,6 +2,7 @@ import { PromiseResolver } from "@yume-chan/async";
2
2
  import type { ValueOrPromise } from "@yume-chan/struct";
3
3
 
4
4
  import type {
5
+ QueuingStrategy,
5
6
  ReadableStream,
6
7
  ReadableStreamDefaultController,
7
8
  WritableStreamDefaultWriter,
@@ -65,21 +66,27 @@ export class DuplexStreamFactory<R, W> {
65
66
  this.#options = options ?? {};
66
67
  }
67
68
 
68
- wrapReadable(readable: ReadableStream<R>): WrapReadableStream<R> {
69
- return new WrapReadableStream<R>({
70
- start: (controller) => {
71
- this.#readableControllers.push(controller);
72
- return readable;
69
+ wrapReadable(
70
+ readable: ReadableStream<R>,
71
+ strategy?: QueuingStrategy<R>,
72
+ ): WrapReadableStream<R> {
73
+ return new WrapReadableStream<R>(
74
+ {
75
+ start: (controller) => {
76
+ this.#readableControllers.push(controller);
77
+ return readable;
78
+ },
79
+ cancel: async () => {
80
+ // cancel means the local peer wants to close the connection.
81
+ await this.close();
82
+ },
83
+ close: async () => {
84
+ // stream end means the remote peer closed the connection first.
85
+ await this.dispose();
86
+ },
73
87
  },
74
- cancel: async () => {
75
- // cancel means the local peer wants to close the connection.
76
- await this.close();
77
- },
78
- close: async () => {
79
- // stream end means the remote peer closed the connection first.
80
- await this.dispose();
81
- },
82
- });
88
+ strategy,
89
+ );
83
90
  }
84
91
 
85
92
  createWritable(stream: WritableStream<W>): WritableStream<W> {
@@ -18,6 +18,8 @@ export type PushReadableStreamSource<T> = (
18
18
  ) => void | Promise<void>;
19
19
 
20
20
  export class PushReadableStream<T> extends ReadableStream<T> {
21
+ #zeroHighWaterMarkAllowEnqueue = false;
22
+
21
23
  /**
22
24
  * Create a new `PushReadableStream` from a source.
23
25
  *
@@ -34,24 +36,32 @@ export class PushReadableStream<T> extends ReadableStream<T> {
34
36
 
35
37
  super(
36
38
  {
37
- start: (controller) => {
39
+ start: async (controller) => {
40
+ await Promise.resolve();
41
+
38
42
  const result = source({
39
43
  abortSignal: abortController.signal,
40
- async enqueue(chunk) {
44
+ enqueue: async (chunk) => {
41
45
  if (abortController.signal.aborted) {
42
46
  // If the stream is already cancelled,
43
47
  // throw immediately.
44
- throw (
45
- abortController.signal.reason ??
46
- new Error("Aborted")
47
- );
48
+ throw abortController.signal.reason;
49
+ }
50
+
51
+ if (controller.desiredSize === null) {
52
+ // `desiredSize` being `null` means the stream is in error state,
53
+ // `controller.enqueue` will throw an error for us.
54
+ controller.enqueue(chunk);
55
+ return;
48
56
  }
49
57
 
50
- // Only when the stream is errored, `desiredSize` will be `null`.
51
- // But since `null <= 0` is `true`
52
- // (`null <= 0` is evaluated as `!(null > 0)` => `!false` => `true`),
53
- // not handling it will cause a deadlock.
54
- if ((controller.desiredSize ?? 1) <= 0) {
58
+ if (this.#zeroHighWaterMarkAllowEnqueue) {
59
+ this.#zeroHighWaterMarkAllowEnqueue = false;
60
+ controller.enqueue(chunk);
61
+ return;
62
+ }
63
+
64
+ if (controller.desiredSize <= 0) {
55
65
  waterMarkLow = new PromiseResolver<void>();
56
66
  await waterMarkLow.promise;
57
67
  }
@@ -84,7 +94,13 @@ export class PushReadableStream<T> extends ReadableStream<T> {
84
94
  }
85
95
  },
86
96
  pull: () => {
87
- waterMarkLow?.resolve();
97
+ if (waterMarkLow) {
98
+ waterMarkLow.resolve();
99
+ return;
100
+ }
101
+ if (strategy?.highWaterMark === 0) {
102
+ this.#zeroHighWaterMarkAllowEnqueue = true;
103
+ }
88
104
  },
89
105
  cancel: (reason) => {
90
106
  abortController.abort(reason);
package/src/stream.ts CHANGED
@@ -1,10 +1,11 @@
1
- import type { AbortSignal } from "web-streams-polyfill";
2
- import {
3
- ReadableStream as ReadableStreamPolyfill,
4
- TransformStream as TransformStreamPolyfill,
5
- WritableStream as WritableStreamPolyfill,
6
- } from "web-streams-polyfill";
7
- export * from "web-streams-polyfill";
1
+ import type {
2
+ AbortSignal,
3
+ ReadableStream as ReadableStreamType,
4
+ TransformStream as TransformStreamType,
5
+ WritableStream as WritableStreamType,
6
+ } from "./types.js";
7
+
8
+ export * from "./types.js";
8
9
 
9
10
  /** A controller object that allows you to abort one or more DOM requests as and when desired. */
10
11
  export interface AbortController {
@@ -26,26 +27,20 @@ interface AbortControllerConstructor {
26
27
 
27
28
  interface GlobalExtension {
28
29
  AbortController: AbortControllerConstructor;
29
- ReadableStream: typeof ReadableStreamPolyfill;
30
- WritableStream: typeof WritableStreamPolyfill;
31
- TransformStream: typeof TransformStreamPolyfill;
30
+ ReadableStream: typeof ReadableStreamType;
31
+ WritableStream: typeof WritableStreamType;
32
+ TransformStream: typeof TransformStreamType;
32
33
  }
33
34
 
34
- const GLOBAL = globalThis as unknown as GlobalExtension;
35
-
36
- export const AbortController = GLOBAL.AbortController;
35
+ const Global = globalThis as unknown as GlobalExtension;
37
36
 
38
- export type ReadableStream<R = any> = ReadableStreamPolyfill<R>;
39
- export let ReadableStream = ReadableStreamPolyfill;
37
+ export const AbortController = Global.AbortController;
40
38
 
41
- export type WritableStream<W = any> = WritableStreamPolyfill<W>;
42
- export let WritableStream = WritableStreamPolyfill;
39
+ export type ReadableStream<T = any> = ReadableStreamType<T>;
40
+ export const ReadableStream = Global.ReadableStream;
43
41
 
44
- export type TransformStream<I = any, O = any> = TransformStreamPolyfill<I, O>;
45
- export let TransformStream = TransformStreamPolyfill;
42
+ export type WritableStream<T = any> = WritableStreamType<T>;
43
+ export const WritableStream = Global.WritableStream;
46
44
 
47
- if (GLOBAL.ReadableStream && GLOBAL.WritableStream && GLOBAL.TransformStream) {
48
- ReadableStream = GLOBAL.ReadableStream;
49
- WritableStream = GLOBAL.WritableStream;
50
- TransformStream = GLOBAL.TransformStream;
51
- }
45
+ export type TransformStream<I = any, O = any> = TransformStreamType<I, O>;
46
+ export const TransformStream = Global.TransformStream;