@yume-chan/stream-extra 0.0.24 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (81) hide show
  1. package/CHANGELOG.md +22 -1
  2. package/esm/buffered-transform.d.ts +3 -3
  3. package/esm/buffered-transform.d.ts.map +1 -1
  4. package/esm/buffered-transform.js.map +1 -1
  5. package/esm/buffered.d.ts +3 -6
  6. package/esm/buffered.d.ts.map +1 -1
  7. package/esm/buffered.js +87 -75
  8. package/esm/buffered.js.map +1 -1
  9. package/esm/concat.js +2 -2
  10. package/esm/concat.js.map +1 -1
  11. package/esm/consumable.d.ts +15 -10
  12. package/esm/consumable.d.ts.map +1 -1
  13. package/esm/consumable.js +82 -86
  14. package/esm/consumable.js.map +1 -1
  15. package/esm/duplex.d.ts +2 -2
  16. package/esm/duplex.d.ts.map +1 -1
  17. package/esm/duplex.js +2 -6
  18. package/esm/duplex.js.map +1 -1
  19. package/esm/index.d.ts +1 -0
  20. package/esm/index.d.ts.map +1 -1
  21. package/esm/index.js +1 -0
  22. package/esm/index.js.map +1 -1
  23. package/esm/maybe-consumable-ns.d.ts +16 -0
  24. package/esm/maybe-consumable-ns.d.ts.map +1 -0
  25. package/esm/maybe-consumable-ns.js +44 -0
  26. package/esm/maybe-consumable-ns.js.map +1 -0
  27. package/esm/maybe-consumable.d.ts +2 -19
  28. package/esm/maybe-consumable.d.ts.map +1 -1
  29. package/esm/maybe-consumable.js +1 -61
  30. package/esm/maybe-consumable.js.map +1 -1
  31. package/esm/push-readable.d.ts +16 -2
  32. package/esm/push-readable.d.ts.map +1 -1
  33. package/esm/push-readable.js +176 -17
  34. package/esm/push-readable.js.map +1 -1
  35. package/esm/stream.d.ts +5 -5
  36. package/esm/stream.d.ts.map +1 -1
  37. package/esm/stream.js +54 -5
  38. package/esm/stream.js.map +1 -1
  39. package/esm/struct-deserialize.d.ts +3 -4
  40. package/esm/struct-deserialize.d.ts.map +1 -1
  41. package/esm/struct-deserialize.js.map +1 -1
  42. package/esm/struct-serialize.d.ts +2 -2
  43. package/esm/struct-serialize.d.ts.map +1 -1
  44. package/esm/struct-serialize.js.map +1 -1
  45. package/esm/task.d.ts.map +1 -1
  46. package/esm/task.js +2 -2
  47. package/esm/task.js.map +1 -1
  48. package/esm/try-close.d.ts +10 -0
  49. package/esm/try-close.d.ts.map +1 -0
  50. package/esm/try-close.js +19 -0
  51. package/esm/try-close.js.map +1 -0
  52. package/esm/types.d.ts +2 -3
  53. package/esm/types.d.ts.map +1 -1
  54. package/esm/wrap-readable.d.ts +5 -4
  55. package/esm/wrap-readable.d.ts.map +1 -1
  56. package/esm/wrap-readable.js +14 -9
  57. package/esm/wrap-readable.js.map +1 -1
  58. package/esm/wrap-writable.d.ts +2 -2
  59. package/esm/wrap-writable.d.ts.map +1 -1
  60. package/esm/wrap-writable.js +4 -6
  61. package/esm/wrap-writable.js.map +1 -1
  62. package/package.json +11 -13
  63. package/src/buffered-transform.ts +2 -2
  64. package/src/buffered.ts +107 -83
  65. package/src/concat.ts +2 -2
  66. package/src/consumable.ts +117 -112
  67. package/src/duplex.ts +4 -7
  68. package/src/index.ts +1 -0
  69. package/src/maybe-consumable-ns.ts +75 -0
  70. package/src/maybe-consumable.ts +2 -98
  71. package/src/push-readable.ts +213 -19
  72. package/src/stream.ts +68 -8
  73. package/src/struct-deserialize.ts +3 -6
  74. package/src/struct-serialize.ts +3 -3
  75. package/src/task.ts +2 -2
  76. package/src/try-close.ts +44 -0
  77. package/src/types.ts +2 -2
  78. package/src/wrap-readable.ts +20 -14
  79. package/src/wrap-writable.ts +6 -9
  80. package/tsconfig.build.tsbuildinfo +1 -1
  81. package/CHANGELOG.json +0 -104
package/CHANGELOG.md CHANGED
@@ -1,8 +1,23 @@
1
1
  # Change Log - @yume-chan/stream-extra
2
2
 
3
+ ## 1.0.1
4
+
5
+ ### Patch Changes
6
+
7
+ - 53688d3: Use PNPM workspace and Changesets to manage the monorepo.
8
+
9
+ Because Changesets doesn't support alpha versions (`0.x.x`), this version is `1.0.0`. Future versions will follow SemVer rules, for example, breaking API changes will introduce a new major version.
10
+
11
+ - ea5002b: Polyfill `ReadableStream.from` and `ReadableStream.prototype.values`
12
+ - Updated dependencies [53688d3]
13
+ - Updated dependencies [db8466f]
14
+ - Updated dependencies [db8466f]
15
+ - @yume-chan/struct@1.0.1
16
+
3
17
  This log was last generated on Tue, 18 Jun 2024 02:49:43 GMT and should not be manually modified.
4
18
 
5
19
  ## 0.0.24
20
+
6
21
  Tue, 18 Jun 2024 02:49:43 GMT
7
22
 
8
23
  ### Updates
@@ -12,6 +27,7 @@ Tue, 18 Jun 2024 02:49:43 GMT
12
27
  - Move `Consumable` related types to the `Consumable` namespace. In future, more types will be moved to namespaces.
13
28
 
14
29
  ## 0.0.23
30
+
15
31
  Thu, 21 Mar 2024 03:15:10 GMT
16
32
 
17
33
  ### Updates
@@ -21,11 +37,13 @@ Thu, 21 Mar 2024 03:15:10 GMT
21
37
  - Remove web-streams-polyfill dependency. The runtime must have global stream implementations (or you can add a polyfill yourself).
22
38
 
23
39
  ## 0.0.22
40
+
24
41
  Wed, 13 Dec 2023 05:57:27 GMT
25
42
 
26
43
  _Version update only_
27
44
 
28
45
  ## 0.0.21
46
+
29
47
  Fri, 25 Aug 2023 14:05:18 GMT
30
48
 
31
49
  ### Updates
@@ -33,6 +51,7 @@ Fri, 25 Aug 2023 14:05:18 GMT
33
51
  - Replace `GatherStringStream` with `ConcatStringStream` which can be treated as a Promise
34
52
 
35
53
  ## 0.0.20
54
+
36
55
  Mon, 05 Jun 2023 02:51:41 GMT
37
56
 
38
57
  ### Updates
@@ -41,6 +60,7 @@ Mon, 05 Jun 2023 02:51:41 GMT
41
60
  - Use ECMAScript private class fields syntax (supported by Chrome 74, Firefox 90, Safari 14.1 and Node.js 12.0.0).
42
61
 
43
62
  ## 0.0.19
63
+
44
64
  Sun, 09 Apr 2023 05:55:33 GMT
45
65
 
46
66
  ### Updates
@@ -48,6 +68,7 @@ Sun, 09 Apr 2023 05:55:33 GMT
48
68
  - Add an option to combine small chunks into target size in `ChunkStream`, and rename it to `DistributionStream`
49
69
 
50
70
  ## 0.0.18
71
+
51
72
  Wed, 25 Jan 2023 21:33:49 GMT
52
73
 
53
74
  ### Updates
@@ -55,7 +76,7 @@ Wed, 25 Jan 2023 21:33:49 GMT
55
76
  - Change to load native Web Streams API implementation from `globalThis` if available
56
77
 
57
78
  ## 0.0.17
79
+
58
80
  Tue, 18 Oct 2022 09:32:30 GMT
59
81
 
60
82
  _Initial release_
61
-
@@ -1,11 +1,11 @@
1
- import type { ValueOrPromise } from "@yume-chan/struct";
1
+ import type { MaybePromiseLike } from "@yume-chan/async";
2
2
  import { BufferedReadableStream } from "./buffered.js";
3
3
  import type { ReadableWritablePair } from "./stream.js";
4
4
  import { ReadableStream, WritableStream } from "./stream.js";
5
5
  export declare class BufferedTransformStream<T> implements ReadableWritablePair<T, Uint8Array> {
6
6
  #private;
7
7
  get readable(): ReadableStream<T>;
8
- get writable(): WritableStream<Uint8Array>;
9
- constructor(transform: (stream: BufferedReadableStream) => ValueOrPromise<T>);
8
+ get writable(): WritableStream<Uint8Array<ArrayBufferLike>>;
9
+ constructor(transform: (stream: BufferedReadableStream) => MaybePromiseLike<T>);
10
10
  }
11
11
  //# sourceMappingURL=buffered-transform.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"buffered-transform.d.ts","sourceRoot":"","sources":["../src/buffered-transform.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAGxD,OAAO,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAC;AAGvD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAG7D,qBAAa,uBAAuB,CAAC,CAAC,CAClC,YAAW,oBAAoB,CAAC,CAAC,EAAE,UAAU,CAAC;;IAG9C,IAAI,QAAQ,sBAEX;IAGD,IAAI,QAAQ,+BAEX;gBAGG,SAAS,EAAE,CAAC,MAAM,EAAE,sBAAsB,KAAK,cAAc,CAAC,CAAC,CAAC;CA8CvE"}
1
+ {"version":3,"file":"buffered-transform.d.ts","sourceRoot":"","sources":["../src/buffered-transform.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAGzD,OAAO,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAC;AAGvD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAG7D,qBAAa,uBAAuB,CAAC,CAAC,CAClC,YAAW,oBAAoB,CAAC,CAAC,EAAE,UAAU,CAAC;;IAG9C,IAAI,QAAQ,sBAEX;IAGD,IAAI,QAAQ,gDAEX;gBAGG,SAAS,EAAE,CAAC,MAAM,EAAE,sBAAsB,KAAK,gBAAgB,CAAC,CAAC,CAAC;CA8CzE"}
@@ -1 +1 @@
1
- {"version":3,"file":"buffered-transform.js","sourceRoot":"","sources":["../src/buffered-transform.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAErD,OAAO,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAC;AAEvD,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAExD,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAE7D,4DAA4D;AAC5D,MAAM,OAAO,uBAAuB;IAGhC,SAAS,CAAoB;IAC7B,IAAI,QAAQ;QACR,OAAO,IAAI,CAAC,SAAS,CAAC;IAC1B,CAAC;IAED,SAAS,CAA6B;IACtC,IAAI,QAAQ;QACR,OAAO,IAAI,CAAC,SAAS,CAAC;IAC1B,CAAC;IAED,YACI,SAAgE;QAEhE,wDAAwD;QACxD,IAAI,sBAAiE,CAAC;QAEtE,MAAM,QAAQ,GAAG,IAAI,sBAAsB,CACvC,IAAI,kBAAkB,CAAa,CAAC,UAAU,EAAE,EAAE;YAC9C,sBAAsB,GAAG,UAAU,CAAC;QACxC,CAAC,CAAC,CACL,CAAC;QAEF,IAAI,CAAC,SAAS,GAAG,IAAI,cAAc,CAAI;YACnC,KAAK,CAAC,IAAI,CAAC,UAAU;gBACjB,IAAI,CAAC;oBACD,MAAM,KAAK,GAAG,MAAM,SAAS,CAAC,QAAQ,CAAC,CAAC;oBACxC,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;gBAC9B,CAAC;gBAAC,OAAO,CAAC,EAAE,CAAC;oBACT,4CAA4C;oBAC5C,wEAAwE;oBACxE,kDAAkD;oBAClD,IAAI,CAAC,YAAY,gBAAgB,EAAE,CAAC;wBAChC,UAAU,CAAC,KAAK,EAAE,CAAC;wBACnB,OAAO;oBACX,CAAC;oBACD,MAAM,CAAC,CAAC;gBACZ,CAAC;YACL,CAAC;YACD,MAAM,EAAE,CAAC,MAAM,EAAE,EAAE;gBACf,wCAAwC;gBACxC,oCAAoC;gBACpC,OAAO,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YACnC,CAAC;SACJ,CAAC,CAAC;QAEH,IAAI,CAAC,SAAS,GAAG,IAAI,cAAc,CAAC;YAChC,KAAK,CAAC,KAAK,CAAC,KAAK;gBACb,MAAM,sBAAsB,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YAChD,CAAC;YACD,KAAK;gBACD,sBAAsB,CAAC,KAAK,EAAE,CAAC;YACnC,CAAC;YACD,KAAK;gBACD,sBAAsB,CAAC,KAAK,EAAE,CAAC;YACnC,CAAC;SACJ,CAAC,CAAC;IACP,CAAC;CACJ"}
1
+ {"version":3,"file":"buffered-transform.js","sourceRoot":"","sources":["../src/buffered-transform.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAErD,OAAO,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAC;AAEvD,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAExD,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAE7D,4DAA4D;AAC5D,MAAM,OAAO,uBAAuB;IAGhC,SAAS,CAAoB;IAC7B,IAAI,QAAQ;QACR,OAAO,IAAI,CAAC,SAAS,CAAC;IAC1B,CAAC;IAED,SAAS,CAA6B;IACtC,IAAI,QAAQ;QACR,OAAO,IAAI,CAAC,SAAS,CAAC;IAC1B,CAAC;IAED,YACI,SAAkE;QAElE,wDAAwD;QACxD,IAAI,sBAAiE,CAAC;QAEtE,MAAM,QAAQ,GAAG,IAAI,sBAAsB,CACvC,IAAI,kBAAkB,CAAa,CAAC,UAAU,EAAE,EAAE;YAC9C,sBAAsB,GAAG,UAAU,CAAC;QACxC,CAAC,CAAC,CACL,CAAC;QAEF,IAAI,CAAC,SAAS,GAAG,IAAI,cAAc,CAAI;YACnC,KAAK,CAAC,IAAI,CAAC,UAAU;gBACjB,IAAI,CAAC;oBACD,MAAM,KAAK,GAAG,MAAM,SAAS,CAAC,QAAQ,CAAC,CAAC;oBACxC,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;gBAC9B,CAAC;gBAAC,OAAO,CAAC,EAAE,CAAC;oBACT,4CAA4C;oBAC5C,wEAAwE;oBACxE,kDAAkD;oBAClD,IAAI,CAAC,YAAY,gBAAgB,EAAE,CAAC;wBAChC,UAAU,CAAC,KAAK,EAAE,CAAC;wBACnB,OAAO;oBACX,CAAC;oBACD,MAAM,CAAC,CAAC;gBACZ,CAAC;YACL,CAAC;YACD,MAAM,EAAE,CAAC,MAAM,EAAE,EAAE;gBACf,wCAAwC;gBACxC,oCAAoC;gBACpC,OAAO,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YACnC,CAAC;SACJ,CAAC,CAAC;QAEH,IAAI,CAAC,SAAS,GAAG,IAAI,cAAc,CAAC;YAChC,KAAK,CAAC,KAAK,CAAC,KAAK;gBACb,MAAM,sBAAsB,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YAChD,CAAC;YACD,KAAK;gBACD,sBAAsB,CAAC,KAAK,EAAE,CAAC;YACnC,CAAC;YACD,KAAK;gBACD,sBAAsB,CAAC,KAAK,EAAE,CAAC;YACnC,CAAC;SACJ,CAAC,CAAC;IACP,CAAC;CACJ"}
package/esm/buffered.d.ts CHANGED
@@ -1,3 +1,4 @@
1
+ import type { MaybePromiseLike } from "@yume-chan/async";
1
2
  import type { AsyncExactReadable } from "@yume-chan/struct";
2
3
  import type { ReadableStream, ReadableStreamDefaultReader } from "./stream.js";
3
4
  export declare class BufferedReadableStream implements AsyncExactReadable {
@@ -6,12 +7,8 @@ export declare class BufferedReadableStream implements AsyncExactReadable {
6
7
  protected readonly stream: ReadableStream<Uint8Array>;
7
8
  protected readonly reader: ReadableStreamDefaultReader<Uint8Array>;
8
9
  constructor(stream: ReadableStream<Uint8Array>);
9
- /**
10
- *
11
- * @param length
12
- * @returns
13
- */
14
- readExactly(length: number): Uint8Array | Promise<Uint8Array>;
10
+ iterateExactly(length: number): Iterator<MaybePromiseLike<Uint8Array>, void, void>;
11
+ readExactly: (this: BufferedReadableStream, length: number) => MaybePromiseLike<Uint8Array<ArrayBufferLike>>;
15
12
  /**
16
13
  * Return a readable stream with unconsumed data (if any) and
17
14
  * all data from the wrapped stream.
@@ -1 +1 @@
1
- {"version":3,"file":"buffered.d.ts","sourceRoot":"","sources":["../src/buffered.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAI5D,OAAO,KAAK,EAAE,cAAc,EAAE,2BAA2B,EAAE,MAAM,aAAa,CAAC;AAM/E,qBAAa,sBAAuB,YAAW,kBAAkB;;IAM7D,IAAI,QAAQ,WAEX;IAED,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAC,UAAU,CAAC,CAAC;IACtD,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,2BAA2B,CAAC,UAAU,CAAC,CAAC;gBAEvD,MAAM,EAAE,cAAc,CAAC,UAAU,CAAC;IAsE9C;;;;OAIG;IACH,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC;IAwB7D;;;;OAIG;IACH,OAAO,IAAI,cAAc,CAAC,UAAU,CAAC;IA6B/B,MAAM,CAAC,MAAM,CAAC,EAAE,OAAO;CAGhC"}
1
+ {"version":3,"file":"buffered.d.ts","sourceRoot":"","sources":["../src/buffered.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACzD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAI5D,OAAO,KAAK,EAAE,cAAc,EAAE,2BAA2B,EAAE,MAAM,aAAa,CAAC;AAG/E,qBAAa,sBAAuB,YAAW,kBAAkB;;IAQ7D,IAAI,QAAQ,WAEX;IAED,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAC,UAAU,CAAC,CAAC;IACtD,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,2BAA2B,CAAC,UAAU,CAAC,CAAC;gBAEvD,MAAM,EAAE,cAAc,CAAC,UAAU,CAAC;IAgD9C,cAAc,CACV,MAAM,EAAE,MAAM,GACf,QAAQ,CAAC,gBAAgB,CAAC,UAAU,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC;IA0CrD,WAAW,kGA8BR;IAEH;;;;OAIG;IACH,OAAO,IAAI,cAAc,CAAC,UAAU,CAAC;IA4B/B,MAAM,CAAC,MAAM,CAAC,EAAE,OAAO;CAGhC"}
package/esm/buffered.js CHANGED
@@ -1,10 +1,10 @@
1
- import { ExactReadableEndedError } from "@yume-chan/struct";
1
+ import { bipedal, ExactReadableEndedError } from "@yume-chan/struct";
2
2
  import { PushReadableStream } from "./push-readable.js";
3
- const NOOP = () => {
4
- // no-op
5
- };
3
+ import { tryCancel } from "./try-close.js";
6
4
  export class BufferedReadableStream {
7
5
  #buffered;
6
+ // PERF: `subarray` is slow
7
+ // don't use it until absolutely necessary
8
8
  #bufferedOffset = 0;
9
9
  #bufferedLength = 0;
10
10
  #position = 0;
@@ -17,89 +17,104 @@ export class BufferedReadableStream {
17
17
  this.stream = stream;
18
18
  this.reader = stream.getReader();
19
19
  }
20
- async #readSource() {
20
+ #readBuffered(length) {
21
+ if (!this.#buffered) {
22
+ return undefined;
23
+ }
24
+ const value = this.#buffered.subarray(this.#bufferedOffset, this.#bufferedOffset + length);
25
+ // PERF: Synchronous path for reading from internal buffer
26
+ if (this.#bufferedLength > length) {
27
+ this.#position += length;
28
+ this.#bufferedOffset += length;
29
+ this.#bufferedLength -= length;
30
+ return value;
31
+ }
32
+ this.#position += this.#bufferedLength;
33
+ this.#buffered = undefined;
34
+ this.#bufferedOffset = 0;
35
+ this.#bufferedLength = 0;
36
+ return value;
37
+ }
38
+ async #readSource(length) {
21
39
  const { done, value } = await this.reader.read();
22
40
  if (done) {
23
41
  throw new ExactReadableEndedError();
24
42
  }
43
+ if (value.length > length) {
44
+ this.#buffered = value;
45
+ this.#bufferedOffset = length;
46
+ this.#bufferedLength = value.length - length;
47
+ this.#position += length;
48
+ return value.subarray(0, length);
49
+ }
50
+ this.#position += value.length;
25
51
  return value;
26
52
  }
27
- async #readAsync(length, initial) {
53
+ iterateExactly(length) {
54
+ let state = this.#buffered ? 0 : 1;
55
+ return {
56
+ next: () => {
57
+ switch (state) {
58
+ case 0: {
59
+ const value = this.#readBuffered(length);
60
+ if (value.length === length) {
61
+ state = 2;
62
+ }
63
+ else {
64
+ length -= value.length;
65
+ state = 1;
66
+ }
67
+ return { done: false, value };
68
+ }
69
+ case 1:
70
+ state = 3;
71
+ return {
72
+ done: false,
73
+ value: this.#readSource(length).then((value) => {
74
+ if (value.length === length) {
75
+ state = 2;
76
+ }
77
+ else {
78
+ length -= value.length;
79
+ state = 1;
80
+ }
81
+ return value;
82
+ }),
83
+ };
84
+ case 2:
85
+ return { done: true, value: undefined };
86
+ case 3:
87
+ throw new Error("Can't call `next` before previous Promise resolves");
88
+ default:
89
+ throw new Error("unreachable");
90
+ }
91
+ },
92
+ };
93
+ }
94
+ readExactly = bipedal(function* (then, length) {
28
95
  let result;
29
- let index;
96
+ let index = 0;
97
+ const initial = this.#readBuffered(length);
30
98
  if (initial) {
99
+ if (initial.length === length) {
100
+ return initial;
101
+ }
31
102
  result = new Uint8Array(length);
32
- result.set(initial);
33
- index = initial.length;
103
+ result.set(initial, index);
104
+ index += initial.length;
34
105
  length -= initial.length;
35
106
  }
36
107
  else {
37
- const array = await this.#readSource();
38
- if (array.length === length) {
39
- this.#position += length;
40
- return array;
41
- }
42
- if (array.length > length) {
43
- this.#buffered = array;
44
- this.#bufferedOffset = length;
45
- this.#bufferedLength = array.length - length;
46
- this.#position += length;
47
- return array.subarray(0, length);
48
- }
49
108
  result = new Uint8Array(length);
50
- result.set(array);
51
- index = array.length;
52
- length -= array.length;
53
- this.#position += array.length;
54
109
  }
55
110
  while (length > 0) {
56
- const array = await this.#readSource();
57
- if (array.length === length) {
58
- result.set(array, index);
59
- this.#position += length;
60
- return result;
61
- }
62
- if (array.length > length) {
63
- this.#buffered = array;
64
- this.#bufferedOffset = length;
65
- this.#bufferedLength = array.length - length;
66
- result.set(array.subarray(0, length), index);
67
- this.#position += length;
68
- return result;
69
- }
70
- result.set(array, index);
71
- index += array.length;
72
- length -= array.length;
73
- this.#position += array.length;
111
+ const value = yield* then(this.#readSource(length));
112
+ result.set(value, index);
113
+ index += value.length;
114
+ length -= value.length;
74
115
  }
75
116
  return result;
76
- }
77
- /**
78
- *
79
- * @param length
80
- * @returns
81
- */
82
- readExactly(length) {
83
- // PERF: Add a synchronous path for reading from internal buffer
84
- if (this.#buffered) {
85
- const array = this.#buffered;
86
- const offset = this.#bufferedOffset;
87
- if (this.#bufferedLength > length) {
88
- // PERF: `subarray` is slow
89
- // don't use it until absolutely necessary
90
- this.#bufferedOffset += length;
91
- this.#bufferedLength -= length;
92
- this.#position += length;
93
- return array.subarray(offset, offset + length);
94
- }
95
- this.#buffered = undefined;
96
- this.#bufferedLength = 0;
97
- this.#bufferedOffset = 0;
98
- this.#position += array.length - offset;
99
- return this.#readAsync(length, array.subarray(offset));
100
- }
101
- return this.#readAsync(length);
102
- }
117
+ });
103
118
  /**
104
119
  * Return a readable stream with unconsumed data (if any) and
105
120
  * all data from the wrapped stream.
@@ -112,8 +127,7 @@ export class BufferedReadableStream {
112
127
  const buffered = this.#buffered.subarray(this.#bufferedOffset);
113
128
  await controller.enqueue(buffered);
114
129
  controller.abortSignal.addEventListener("abort", () => {
115
- // NOOP: the reader might already be released
116
- this.reader.cancel().catch(NOOP);
130
+ void tryCancel(this.reader);
117
131
  });
118
132
  // Manually pipe the stream
119
133
  while (true) {
@@ -121,9 +135,7 @@ export class BufferedReadableStream {
121
135
  if (done) {
122
136
  return;
123
137
  }
124
- else {
125
- await controller.enqueue(value);
126
- }
138
+ await controller.enqueue(value);
127
139
  }
128
140
  });
129
141
  }
@@ -1 +1 @@
1
- {"version":3,"file":"buffered.js","sourceRoot":"","sources":["../src/buffered.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"buffered.js","sourceRoot":"","sources":["../src/buffered.ts"],"names":[],"mappings":"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"}
package/esm/concat.js CHANGED
@@ -1,5 +1,5 @@
1
1
  import { PromiseResolver } from "@yume-chan/async";
2
- import { EMPTY_UINT8_ARRAY } from "@yume-chan/struct";
2
+ import { EmptyUint8Array } from "@yume-chan/struct";
3
3
  import { ReadableStream, WritableStream } from "./stream.js";
4
4
  // `TransformStream` only calls its `source.flush` method when its `readable` is being read.
5
5
  // If the user want to use the `Promise` interface, the `flush` method will never be called,
@@ -79,7 +79,7 @@ export class ConcatBufferStream {
79
79
  let offset = 0;
80
80
  switch (this.#segments.length) {
81
81
  case 0:
82
- result = EMPTY_UINT8_ARRAY;
82
+ result = EmptyUint8Array;
83
83
  break;
84
84
  case 1:
85
85
  result = this.#segments[0];
package/esm/concat.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"concat.js","sourceRoot":"","sources":["../src/concat.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"concat.js","sourceRoot":"","sources":["../src/concat.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,19 @@
1
1
  import type { QueuingStrategy, WritableStreamDefaultController, WritableStreamDefaultWriter } from "./stream.js";
2
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
+ }
3
13
  export declare class Consumable<T> {
4
14
  #private;
15
+ static readonly WritableStream: typeof WritableStream;
16
+ static readonly ReadableStream: typeof ReadableStream;
5
17
  readonly value: T;
6
18
  readonly consumed: Promise<void>;
7
19
  constructor(value: T);
@@ -16,10 +28,7 @@ export declare namespace Consumable {
16
28
  abort?(reason: unknown): void | PromiseLike<void>;
17
29
  close?(): void | PromiseLike<void>;
18
30
  }
19
- class WritableStream<in T> extends NativeWritableStream<Consumable<T>> {
20
- static write<T>(writer: WritableStreamDefaultWriter<Consumable<T>>, value: T): Promise<void>;
21
- constructor(sink: WritableStreamSink<T>, strategy?: QueuingStrategy<T>);
22
- }
31
+ type WritableStream<in T> = typeof Consumable.WritableStream<T>;
23
32
  interface ReadableStreamController<T> {
24
33
  enqueue(chunk: T): Promise<void>;
25
34
  close(): void;
@@ -30,11 +39,7 @@ export declare namespace Consumable {
30
39
  pull?(controller: ReadableStreamController<T>): void | PromiseLike<void>;
31
40
  cancel?(reason: unknown): void | PromiseLike<void>;
32
41
  }
33
- class ReadableStream<T> extends NativeReadableStream<Consumable<T>> {
34
- static enqueue<T>(controller: {
35
- enqueue: (chunk: Consumable<T>) => void;
36
- }, chunk: T): Promise<void>;
37
- constructor(source: ReadableStreamSource<T>, strategy?: QueuingStrategy<T>);
38
- }
42
+ type ReadableStream<T> = typeof Consumable.ReadableStream<T>;
39
43
  }
44
+ export {};
40
45
  //# sourceMappingURL=consumable.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"consumable.d.ts","sourceRoot":"","sources":["../src/consumable.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACR,eAAe,EACf,+BAA+B,EAC/B,2BAA2B,EAC9B,MAAM,aAAa,CAAC;AACrB,OAAO,EACH,cAAc,IAAI,oBAAoB,EACtC,cAAc,IAAI,oBAAoB,EACzC,MAAM,aAAa,CAAC;AAQrB,qBAAa,UAAU,CAAC,CAAC;;IAIrB,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,UAAiB,kBAAkB,CAAC,EAAE,CAAC,CAAC;QACpC,KAAK,CAAC,CACF,UAAU,EAAE,+BAA+B,GAC5C,IAAI,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC;QAC5B,KAAK,CAAC,CACF,KAAK,EAAE,CAAC,EACR,UAAU,EAAE,+BAA+B,GAC5C,IAAI,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC;QAC5B,KAAK,CAAC,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC;QAClD,KAAK,CAAC,IAAI,IAAI,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC;KACtC;IAED,MAAa,cAAc,CAAC,EAAE,CAAC,CAAC,CAAE,SAAQ,oBAAoB,CAC1D,UAAU,CAAC,CAAC,CAAC,CAChB;eACgB,KAAK,CAAC,CAAC,EAChB,MAAM,EAAE,2BAA2B,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAClD,KAAK,EAAE,CAAC;oBAQR,IAAI,EAAE,kBAAkB,CAAC,CAAC,CAAC,EAC3B,QAAQ,CAAC,EAAE,eAAe,CAAC,CAAC,CAAC;KAqCpC;IAED,UAAiB,wBAAwB,CAAC,CAAC;QACvC,OAAO,CAAC,KAAK,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;QACjC,KAAK,IAAI,IAAI,CAAC;QACd,KAAK,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI,CAAC;KAChC;IAED,UAAiB,oBAAoB,CAAC,CAAC;QACnC,KAAK,CAAC,CACF,UAAU,EAAE,wBAAwB,CAAC,CAAC,CAAC,GACxC,IAAI,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC;QAC5B,IAAI,CAAC,CACD,UAAU,EAAE,wBAAwB,CAAC,CAAC,CAAC,GACxC,IAAI,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC;QAC5B,MAAM,CAAC,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC;KACtD;IAED,MAAa,cAAc,CAAC,CAAC,CAAE,SAAQ,oBAAoB,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;eACzD,OAAO,CAAC,CAAC,EAClB,UAAU,EAAE;YAAE,OAAO,EAAE,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC,KAAK,IAAI,CAAA;SAAE,EACvD,KAAK,EAAE,CAAC;oBAQR,MAAM,EAAE,oBAAoB,CAAC,CAAC,CAAC,EAC/B,QAAQ,CAAC,EAAE,eAAe,CAAC,CAAC,CAAC;KA4CpC;CACJ"}
1
+ {"version":3,"file":"consumable.d.ts","sourceRoot":"","sources":["../src/consumable.ts"],"names":[],"mappings":"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"}
package/esm/consumable.js CHANGED
@@ -1,10 +1,89 @@
1
- import { PromiseResolver } from "@yume-chan/async";
1
+ import { PromiseResolver, isPromiseLike } from "@yume-chan/async";
2
2
  import { ReadableStream as NativeReadableStream, WritableStream as NativeWritableStream, } from "./stream.js";
3
3
  import { createTask } from "./task.js";
4
- function isPromiseLike(value) {
5
- return typeof value === "object" && value !== null && "then" in value;
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
+ }
6
83
  }
7
84
  export class Consumable {
85
+ static WritableStream = WritableStream;
86
+ static ReadableStream = ReadableStream;
8
87
  #task;
9
88
  #resolver;
10
89
  value;
@@ -44,87 +123,4 @@ export class Consumable {
44
123
  }
45
124
  }
46
125
  }
47
- (function (Consumable) {
48
- class WritableStream extends NativeWritableStream {
49
- static async write(writer, value) {
50
- const consumable = new Consumable(value);
51
- await writer.write(consumable);
52
- await consumable.consumed;
53
- }
54
- constructor(sink, strategy) {
55
- let wrappedStrategy;
56
- if (strategy) {
57
- wrappedStrategy = {};
58
- if ("highWaterMark" in strategy) {
59
- wrappedStrategy.highWaterMark = strategy.highWaterMark;
60
- }
61
- if ("size" in strategy) {
62
- wrappedStrategy.size = (chunk) => {
63
- return strategy.size(chunk instanceof Consumable ? chunk.value : chunk);
64
- };
65
- }
66
- }
67
- super({
68
- start(controller) {
69
- return sink.start?.(controller);
70
- },
71
- async write(chunk, controller) {
72
- await chunk.tryConsume((chunk) => sink.write?.(chunk, controller));
73
- },
74
- abort(reason) {
75
- return sink.abort?.(reason);
76
- },
77
- close() {
78
- return sink.close?.();
79
- },
80
- }, wrappedStrategy);
81
- }
82
- }
83
- Consumable.WritableStream = WritableStream;
84
- class ReadableStream extends NativeReadableStream {
85
- static async enqueue(controller, chunk) {
86
- const output = new Consumable(chunk);
87
- controller.enqueue(output);
88
- await output.consumed;
89
- }
90
- constructor(source, strategy) {
91
- let wrappedController;
92
- let wrappedStrategy;
93
- if (strategy) {
94
- wrappedStrategy = {};
95
- if ("highWaterMark" in strategy) {
96
- wrappedStrategy.highWaterMark = strategy.highWaterMark;
97
- }
98
- if ("size" in strategy) {
99
- wrappedStrategy.size = (chunk) => {
100
- return strategy.size(chunk.value);
101
- };
102
- }
103
- }
104
- super({
105
- async start(controller) {
106
- wrappedController = {
107
- async enqueue(chunk) {
108
- await ReadableStream.enqueue(controller, chunk);
109
- },
110
- close() {
111
- controller.close();
112
- },
113
- error(reason) {
114
- controller.error(reason);
115
- },
116
- };
117
- await source.start?.(wrappedController);
118
- },
119
- async pull() {
120
- await source.pull?.(wrappedController);
121
- },
122
- async cancel(reason) {
123
- await source.cancel?.(reason);
124
- },
125
- }, wrappedStrategy);
126
- }
127
- }
128
- Consumable.ReadableStream = ReadableStream;
129
- })(Consumable || (Consumable = {}));
130
126
  //# sourceMappingURL=consumable.js.map