@yume-chan/stream-extra 0.0.19 → 0.0.21

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 (79) hide show
  1. package/CHANGELOG.json +60 -33
  2. package/CHANGELOG.md +17 -1
  3. package/esm/buffered-transform.d.ts +1 -2
  4. package/esm/buffered-transform.d.ts.map +1 -1
  5. package/esm/buffered-transform.js +10 -9
  6. package/esm/buffered-transform.js.map +1 -1
  7. package/esm/buffered.d.ts +4 -11
  8. package/esm/buffered.d.ts.map +1 -1
  9. package/esm/buffered.js +40 -36
  10. package/esm/buffered.js.map +1 -1
  11. package/esm/concat.d.ts +35 -0
  12. package/esm/concat.d.ts.map +1 -0
  13. package/esm/concat.js +128 -0
  14. package/esm/concat.js.map +1 -0
  15. package/esm/consumable.d.ts +1 -2
  16. package/esm/consumable.d.ts.map +1 -1
  17. package/esm/consumable.js +9 -9
  18. package/esm/consumable.js.map +1 -1
  19. package/esm/distribution.d.ts +1 -4
  20. package/esm/distribution.d.ts.map +1 -1
  21. package/esm/distribution.js +29 -29
  22. package/esm/distribution.js.map +1 -1
  23. package/esm/duplex.d.ts +1 -5
  24. package/esm/duplex.d.ts.map +1 -1
  25. package/esm/duplex.js +21 -19
  26. package/esm/duplex.js.map +1 -1
  27. package/esm/index.d.ts +1 -1
  28. package/esm/index.d.ts.map +1 -1
  29. package/esm/index.js +1 -1
  30. package/esm/index.js.map +1 -1
  31. package/esm/push-readable.d.ts.map +1 -1
  32. package/esm/push-readable.js +11 -6
  33. package/esm/push-readable.js.map +1 -1
  34. package/esm/split-string.d.ts.map +1 -1
  35. package/esm/split-string.js.map +1 -1
  36. package/esm/stream.js +0 -14
  37. package/esm/stream.js.map +1 -1
  38. package/esm/struct-deserialize.d.ts.map +1 -1
  39. package/esm/struct-deserialize.js.map +1 -1
  40. package/esm/wrap-readable.d.ts +1 -1
  41. package/esm/wrap-readable.d.ts.map +1 -1
  42. package/esm/wrap-readable.js +4 -4
  43. package/esm/wrap-readable.js.map +1 -1
  44. package/esm/wrap-writable.d.ts +1 -1
  45. package/esm/wrap-writable.d.ts.map +1 -1
  46. package/esm/wrap-writable.js +5 -5
  47. package/esm/wrap-writable.js.map +1 -1
  48. package/package.json +8 -8
  49. package/src/buffered-transform.ts +14 -16
  50. package/src/buffered.ts +48 -42
  51. package/src/concat.ts +160 -0
  52. package/src/consumable.ts +38 -37
  53. package/src/decode-utf8.ts +1 -1
  54. package/src/distribution.ts +35 -35
  55. package/src/duplex.ts +28 -26
  56. package/src/index.ts +1 -1
  57. package/src/pipe-from.ts +1 -1
  58. package/src/push-readable.ts +15 -11
  59. package/src/split-string.ts +2 -2
  60. package/src/stream.ts +0 -13
  61. package/src/struct-deserialize.ts +2 -2
  62. package/src/struct-serialize.ts +1 -1
  63. package/src/wrap-readable.ts +10 -10
  64. package/src/wrap-writable.ts +10 -10
  65. package/tsconfig.build.json +6 -1
  66. package/tsconfig.build.tsbuildinfo +1 -1
  67. package/esm/chunk.d.ts +0 -8
  68. package/esm/chunk.d.ts.map +0 -1
  69. package/esm/chunk.js +0 -56
  70. package/esm/chunk.js.map +0 -1
  71. package/esm/gather-string.d.ts +0 -7
  72. package/esm/gather-string.d.ts.map +0 -1
  73. package/esm/gather-string.js +0 -16
  74. package/esm/gather-string.js.map +0 -1
  75. package/esm/trace.d.ts +0 -16
  76. package/esm/trace.d.ts.map +0 -1
  77. package/esm/trace.js +0 -131
  78. package/esm/trace.js.map +0 -1
  79. package/src/gather-string.ts +0 -17
package/CHANGELOG.json CHANGED
@@ -1,35 +1,62 @@
1
1
  {
2
- "name": "@yume-chan/stream-extra",
3
- "entries": [
4
- {
5
- "version": "0.0.19",
6
- "tag": "@yume-chan/stream-extra_v0.0.19",
7
- "date": "Sun, 09 Apr 2023 05:55:33 GMT",
8
- "comments": {
9
- "none": [
10
- {
11
- "comment": "Add an option to combine small chunks into target size in `ChunkStream`, and rename it to `DistributionStream`"
12
- }
13
- ]
14
- }
15
- },
16
- {
17
- "version": "0.0.18",
18
- "tag": "@yume-chan/stream-extra_v0.0.18",
19
- "date": "Wed, 25 Jan 2023 21:33:49 GMT",
20
- "comments": {
21
- "none": [
22
- {
23
- "comment": "Change to load native Web Streams API implementation from `globalThis` if available"
24
- }
25
- ]
26
- }
27
- },
28
- {
29
- "version": "0.0.17",
30
- "tag": "@yume-chan/stream-extra_v0.0.17",
31
- "date": "Tue, 18 Oct 2022 09:32:30 GMT",
32
- "comments": {}
33
- }
34
- ]
2
+ "name": "@yume-chan/stream-extra",
3
+ "entries": [
4
+ {
5
+ "version": "0.0.21",
6
+ "tag": "@yume-chan/stream-extra_v0.0.21",
7
+ "date": "Fri, 25 Aug 2023 14:05:18 GMT",
8
+ "comments": {
9
+ "none": [
10
+ {
11
+ "comment": "Replace `GatherStringStream` with `ConcatStringStream` which can be treated as a Promise"
12
+ }
13
+ ]
14
+ }
15
+ },
16
+ {
17
+ "version": "0.0.20",
18
+ "tag": "@yume-chan/stream-extra_v0.0.20",
19
+ "date": "Mon, 05 Jun 2023 02:51:41 GMT",
20
+ "comments": {
21
+ "none": [
22
+ {
23
+ "comment": "Fix a bug where `BufferedReadableStream#release` might output duplicate data."
24
+ },
25
+ {
26
+ "comment": "Use ECMAScript private class fields syntax (supported by Chrome 74, Firefox 90, Safari 14.1 and Node.js 12.0.0)."
27
+ }
28
+ ]
29
+ }
30
+ },
31
+ {
32
+ "version": "0.0.19",
33
+ "tag": "@yume-chan/stream-extra_v0.0.19",
34
+ "date": "Sun, 09 Apr 2023 05:55:33 GMT",
35
+ "comments": {
36
+ "none": [
37
+ {
38
+ "comment": "Add an option to combine small chunks into target size in `ChunkStream`, and rename it to `DistributionStream`"
39
+ }
40
+ ]
41
+ }
42
+ },
43
+ {
44
+ "version": "0.0.18",
45
+ "tag": "@yume-chan/stream-extra_v0.0.18",
46
+ "date": "Wed, 25 Jan 2023 21:33:49 GMT",
47
+ "comments": {
48
+ "none": [
49
+ {
50
+ "comment": "Change to load native Web Streams API implementation from `globalThis` if available"
51
+ }
52
+ ]
53
+ }
54
+ },
55
+ {
56
+ "version": "0.0.17",
57
+ "tag": "@yume-chan/stream-extra_v0.0.17",
58
+ "date": "Tue, 18 Oct 2022 09:32:30 GMT",
59
+ "comments": {}
60
+ }
61
+ ]
35
62
  }
package/CHANGELOG.md CHANGED
@@ -1,6 +1,21 @@
1
1
  # Change Log - @yume-chan/stream-extra
2
2
 
3
- This log was last generated on Sun, 09 Apr 2023 05:55:33 GMT and should not be manually modified.
3
+ This log was last generated on Fri, 25 Aug 2023 14:05:18 GMT and should not be manually modified.
4
+
5
+ ## 0.0.21
6
+ Fri, 25 Aug 2023 14:05:18 GMT
7
+
8
+ ### Updates
9
+
10
+ - Replace `GatherStringStream` with `ConcatStringStream` which can be treated as a Promise
11
+
12
+ ## 0.0.20
13
+ Mon, 05 Jun 2023 02:51:41 GMT
14
+
15
+ ### Updates
16
+
17
+ - Fix a bug where `BufferedReadableStream#release` might output duplicate data.
18
+ - Use ECMAScript private class fields syntax (supported by Chrome 74, Firefox 90, Safari 14.1 and Node.js 12.0.0).
4
19
 
5
20
  ## 0.0.19
6
21
  Sun, 09 Apr 2023 05:55:33 GMT
@@ -20,3 +35,4 @@ Wed, 25 Jan 2023 21:33:49 GMT
20
35
  Tue, 18 Oct 2022 09:32:30 GMT
21
36
 
22
37
  _Initial release_
38
+
@@ -3,9 +3,8 @@ 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
- private _readable;
6
+ #private;
7
7
  get readable(): ReadableStream<T>;
8
- private _writable;
9
8
  get writable(): WritableStream<Uint8Array>;
10
9
  constructor(transform: (stream: BufferedReadableStream) => ValueOrPromise<T>);
11
10
  }
@@ -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;AAExD,OAAO,EACH,sBAAsB,EAEzB,MAAM,eAAe,CAAC;AAGvB,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;IAE9C,OAAO,CAAC,SAAS,CAAoB;IACrC,IAAW,QAAQ,sBAElB;IAED,OAAO,CAAC,SAAS,CAA6B;IAC9C,IAAW,QAAQ,+BAElB;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,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,15 +1,16 @@
1
- import { BufferedReadableStream, BufferedReadableStreamEndedError, } from "./buffered.js";
1
+ import { StructEmptyError } from "@yume-chan/struct";
2
+ import { BufferedReadableStream } from "./buffered.js";
2
3
  import { PushReadableStream } from "./push-readable.js";
3
4
  import { ReadableStream, WritableStream } from "./stream.js";
4
5
  // TODO: BufferedTransformStream: find better implementation
5
6
  export class BufferedTransformStream {
6
- _readable;
7
+ #readable;
7
8
  get readable() {
8
- return this._readable;
9
+ return this.#readable;
9
10
  }
10
- _writable;
11
+ #writable;
11
12
  get writable() {
12
- return this._writable;
13
+ return this.#writable;
13
14
  }
14
15
  constructor(transform) {
15
16
  // Convert incoming chunks to a `BufferedReadableStream`
@@ -17,17 +18,17 @@ export class BufferedTransformStream {
17
18
  const buffered = new BufferedReadableStream(new PushReadableStream((controller) => {
18
19
  sourceStreamController = controller;
19
20
  }));
20
- this._readable = new ReadableStream({
21
+ this.#readable = new ReadableStream({
21
22
  async pull(controller) {
22
23
  try {
23
24
  const value = await transform(buffered);
24
25
  controller.enqueue(value);
25
26
  }
26
27
  catch (e) {
27
- // Treat `BufferedReadableStreamEndedError` as a normal end.
28
+ // Treat `StructEmptyError` as a normal end.
28
29
  // If the `transform` method doesn't have enough data to return a value,
29
30
  // it should throw another error to indicate that.
30
- if (e instanceof BufferedReadableStreamEndedError) {
31
+ if (e instanceof StructEmptyError) {
31
32
  controller.close();
32
33
  return;
33
34
  }
@@ -40,7 +41,7 @@ export class BufferedTransformStream {
40
41
  return buffered.cancel(reason);
41
42
  },
42
43
  });
43
- this._writable = new WritableStream({
44
+ this.#writable = new WritableStream({
44
45
  async write(chunk) {
45
46
  await sourceStreamController.enqueue(chunk);
46
47
  },
@@ -1 +1 @@
1
- {"version":3,"file":"buffered-transform.js","sourceRoot":"","sources":["../src/buffered-transform.ts"],"names":[],"mappings":"AAEA,OAAO,EACH,sBAAsB,EACtB,gCAAgC,GACnC,MAAM,eAAe,CAAC;AAEvB,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAExD,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAE7D,4DAA4D;AAC5D,MAAM,OAAO,uBAAuB;IAGxB,SAAS,CAAoB;IACrC,IAAW,QAAQ;QACf,OAAO,IAAI,CAAC,SAAS,CAAC;IAC1B,CAAC;IAEO,SAAS,CAA6B;IAC9C,IAAW,QAAQ;QACf,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;oBACA,MAAM,KAAK,GAAG,MAAM,SAAS,CAAC,QAAQ,CAAC,CAAC;oBACxC,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;iBAC7B;gBAAC,OAAO,CAAC,EAAE;oBACR,4DAA4D;oBAC5D,wEAAwE;oBACxE,kDAAkD;oBAClD,IAAI,CAAC,YAAY,gCAAgC,EAAE;wBAC/C,UAAU,CAAC,KAAK,EAAE,CAAC;wBACnB,OAAO;qBACV;oBACD,MAAM,CAAC,CAAC;iBACX;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,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;oBACA,MAAM,KAAK,GAAG,MAAM,SAAS,CAAC,QAAQ,CAAC,CAAC;oBACxC,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;iBAC7B;gBAAC,OAAO,CAAC,EAAE;oBACR,4CAA4C;oBAC5C,wEAAwE;oBACxE,kDAAkD;oBAClD,IAAI,CAAC,YAAY,gBAAgB,EAAE;wBAC/B,UAAU,CAAC,KAAK,EAAE,CAAC;wBACnB,OAAO;qBACV;oBACD,MAAM,CAAC,CAAC;iBACX;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,24 +1,17 @@
1
+ import type { AsyncExactReadable } from "@yume-chan/struct";
1
2
  import type { ReadableStream, ReadableStreamDefaultReader } from "./stream.js";
2
- export declare class BufferedReadableStreamEndedError extends Error {
3
- constructor();
4
- }
5
- export declare class BufferedReadableStream {
6
- private buffered;
7
- private bufferedOffset;
8
- private bufferedLength;
9
- private _position;
3
+ export declare class BufferedReadableStream implements AsyncExactReadable {
4
+ #private;
10
5
  get position(): number;
11
6
  protected readonly stream: ReadableStream<Uint8Array>;
12
7
  protected readonly reader: ReadableStreamDefaultReader<Uint8Array>;
13
8
  constructor(stream: ReadableStream<Uint8Array>);
14
- private readSource;
15
- private readAsync;
16
9
  /**
17
10
  *
18
11
  * @param length
19
12
  * @returns
20
13
  */
21
- read(length: number): Uint8Array | Promise<Uint8Array>;
14
+ readExactly(length: number): Uint8Array | Promise<Uint8Array>;
22
15
  /**
23
16
  * Return a readable stream with unconsumed data (if any) and
24
17
  * all data from the wrapped stream.
@@ -1 +1 @@
1
- {"version":3,"file":"buffered.d.ts","sourceRoot":"","sources":["../src/buffered.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,2BAA2B,EAAE,MAAM,aAAa,CAAC;AAE/E,qBAAa,gCAAiC,SAAQ,KAAK;;CAO1D;AAED,qBAAa,sBAAsB;IAC/B,OAAO,CAAC,QAAQ,CAAyB;IACzC,OAAO,CAAC,cAAc,CAAK;IAC3B,OAAO,CAAC,cAAc,CAAK;IAE3B,OAAO,CAAC,SAAS,CAAK;IACtB,IAAW,QAAQ,WAElB;IAED,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAC,UAAU,CAAC,CAAC;IACtD,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,2BAA2B,CAAC,UAAU,CAAC,CAAC;gBAEhD,MAAM,EAAE,cAAc,CAAC,UAAU,CAAC;YAKvC,UAAU;YASV,SAAS;IAmDvB;;;;OAIG;IACI,IAAI,CAAC,MAAM,EAAE,MAAM,GAAG,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC;IAoB7D;;;;OAIG;IACI,OAAO,IAAI,cAAc,CAAC,UAAU,CAAC;IAuBrC,MAAM,CAAC,MAAM,CAAC,EAAE,OAAO;CAGjC"}
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;IAiE9C;;;;OAIG;IACH,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC;IAsB7D;;;;OAIG;IACH,OAAO,IAAI,cAAc,CAAC,UAAU,CAAC;IA6BrC,MAAM,CAAC,MAAM,CAAC,EAAE,OAAO;CAG1B"}
package/esm/buffered.js CHANGED
@@ -1,18 +1,15 @@
1
+ import { ExactReadableEndedError } from "@yume-chan/struct";
1
2
  import { PushReadableStream } from "./push-readable.js";
2
- export class BufferedReadableStreamEndedError extends Error {
3
- constructor() {
4
- super("Stream ended");
5
- // Fix Error's prototype chain when compiling to ES5
6
- Object.setPrototypeOf(this, new.target.prototype);
7
- }
8
- }
3
+ const NOOP = () => {
4
+ // no-op
5
+ };
9
6
  export class BufferedReadableStream {
10
- buffered;
11
- bufferedOffset = 0;
12
- bufferedLength = 0;
13
- _position = 0;
7
+ #buffered;
8
+ #bufferedOffset = 0;
9
+ #bufferedLength = 0;
10
+ #position = 0;
14
11
  get position() {
15
- return this._position;
12
+ return this.#position;
16
13
  }
17
14
  stream;
18
15
  reader;
@@ -20,15 +17,15 @@ export class BufferedReadableStream {
20
17
  this.stream = stream;
21
18
  this.reader = stream.getReader();
22
19
  }
23
- async readSource() {
20
+ async #readSource() {
24
21
  const { done, value } = await this.reader.read();
25
22
  if (done) {
26
- throw new BufferedReadableStreamEndedError();
23
+ throw new ExactReadableEndedError();
27
24
  }
28
- this._position += value.byteLength;
25
+ this.#position += value.byteLength;
29
26
  return value;
30
27
  }
31
- async readAsync(length, initial) {
28
+ async #readAsync(length, initial) {
32
29
  let result;
33
30
  let index;
34
31
  if (initial) {
@@ -38,14 +35,14 @@ export class BufferedReadableStream {
38
35
  length -= initial.byteLength;
39
36
  }
40
37
  else {
41
- const array = await this.readSource();
38
+ const array = await this.#readSource();
42
39
  if (array.byteLength === length) {
43
40
  return array;
44
41
  }
45
42
  if (array.byteLength > length) {
46
- this.buffered = array;
47
- this.bufferedOffset = length;
48
- this.bufferedLength = array.byteLength - length;
43
+ this.#buffered = array;
44
+ this.#bufferedOffset = length;
45
+ this.#bufferedLength = array.byteLength - length;
49
46
  return array.subarray(0, length);
50
47
  }
51
48
  result = new Uint8Array(length);
@@ -54,15 +51,15 @@ export class BufferedReadableStream {
54
51
  length -= array.byteLength;
55
52
  }
56
53
  while (length > 0) {
57
- const array = await this.readSource();
54
+ const array = await this.#readSource();
58
55
  if (array.byteLength === length) {
59
56
  result.set(array, index);
60
57
  return result;
61
58
  }
62
59
  if (array.byteLength > length) {
63
- this.buffered = array;
64
- this.bufferedOffset = length;
65
- this.bufferedLength = array.byteLength - length;
60
+ this.#buffered = array;
61
+ this.#bufferedOffset = length;
62
+ this.#bufferedLength = array.byteLength - length;
66
63
  result.set(array.subarray(0, length), index);
67
64
  return result;
68
65
  }
@@ -77,22 +74,24 @@ export class BufferedReadableStream {
77
74
  * @param length
78
75
  * @returns
79
76
  */
80
- read(length) {
77
+ readExactly(length) {
81
78
  // PERF: Add a synchronous path for reading from internal buffer
82
- if (this.buffered) {
83
- const array = this.buffered;
84
- const offset = this.bufferedOffset;
85
- if (this.bufferedLength > length) {
79
+ if (this.#buffered) {
80
+ const array = this.#buffered;
81
+ const offset = this.#bufferedOffset;
82
+ if (this.#bufferedLength > length) {
86
83
  // PERF: `subarray` is slow
87
84
  // don't use it until absolutely necessary
88
- this.bufferedOffset += length;
89
- this.bufferedLength -= length;
85
+ this.#bufferedOffset += length;
86
+ this.#bufferedLength -= length;
90
87
  return array.subarray(offset, offset + length);
91
88
  }
92
- this.buffered = undefined;
93
- return this.readAsync(length, array.subarray(offset));
89
+ this.#buffered = undefined;
90
+ this.#bufferedLength = 0;
91
+ this.#bufferedOffset = 0;
92
+ return this.#readAsync(length, array.subarray(offset));
94
93
  }
95
- return this.readAsync(length);
94
+ return this.#readAsync(length);
96
95
  }
97
96
  /**
98
97
  * Return a readable stream with unconsumed data (if any) and
@@ -100,10 +99,15 @@ export class BufferedReadableStream {
100
99
  * @returns A `ReadableStream`
101
100
  */
102
101
  release() {
103
- if (this.buffered) {
102
+ if (this.#bufferedLength > 0) {
104
103
  return new PushReadableStream(async (controller) => {
105
104
  // Put the remaining data back to the stream
106
- await controller.enqueue(this.buffered);
105
+ const buffered = this.#buffered.subarray(this.#bufferedOffset);
106
+ await controller.enqueue(buffered);
107
+ controller.abortSignal.addEventListener("abort", () => {
108
+ // NOOP: the reader might already be released
109
+ this.reader.cancel().catch(NOOP);
110
+ });
107
111
  // Manually pipe the stream
108
112
  while (true) {
109
113
  const { done, value } = await this.reader.read();
@@ -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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"}
@@ -0,0 +1,35 @@
1
+ import { ReadableStream, WritableStream } from "./stream.js";
2
+ export interface ConcatStringReadableStream extends ReadableStream<string>, Promise<string> {
3
+ }
4
+ /**
5
+ * A `TransformStream` that concatenates strings.
6
+ *
7
+ * Its `readable` is also a `Promise<string>`, so it's possible to `await` it to get the result.
8
+ *
9
+ * ```ts
10
+ * const result: string = await readable.pipeThrough(new ConcatStringStream());
11
+ * ```
12
+ */
13
+ export declare class ConcatStringStream {
14
+ #private;
15
+ get writable(): WritableStream<string>;
16
+ get readable(): ConcatStringReadableStream;
17
+ constructor();
18
+ }
19
+ export interface ConcatBufferReadableStream extends ReadableStream<Uint8Array>, Promise<Uint8Array> {
20
+ }
21
+ /**
22
+ * A `TransformStream` that concatenates `Uint8Array`s.
23
+ *
24
+ * If you want to decode the result as string,
25
+ * prefer `.pipeThrough(new DecodeUtf8Stream()).pipeThrough(new ConcatStringStream())`,
26
+ * than `.pipeThough(new ConcatBufferStream()).pipeThrough(new DecodeUtf8Stream())`,
27
+ * because concatenating strings is faster than concatenating `Uint8Array`s.
28
+ */
29
+ export declare class ConcatBufferStream {
30
+ #private;
31
+ get writable(): WritableStream<Uint8Array>;
32
+ get readable(): ConcatBufferReadableStream;
33
+ constructor();
34
+ }
35
+ //# sourceMappingURL=concat.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"concat.d.ts","sourceRoot":"","sources":["../src/concat.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAE7D,MAAM,WAAW,0BACb,SAAQ,cAAc,CAAC,MAAM,CAAC,EAC1B,OAAO,CAAC,MAAM,CAAC;CAAG;AAO1B;;;;;;;;GAQG;AACH,qBAAa,kBAAkB;;IAoB3B,IAAI,QAAQ,IAAI,cAAc,CAAC,MAAM,CAAC,CAErC;IAQD,IAAI,QAAQ,IAAI,0BAA0B,CAEzC;;CAkBJ;AAED,MAAM,WAAW,0BACb,SAAQ,cAAc,CAAC,UAAU,CAAC,EAC9B,OAAO,CAAC,UAAU,CAAC;CAAG;AAE9B;;;;;;;GAOG;AACH,qBAAa,kBAAkB;;IA0C3B,IAAI,QAAQ,IAAI,cAAc,CAAC,UAAU,CAAC,CAEzC;IAQD,IAAI,QAAQ,IAAI,0BAA0B,CAEzC;;CAkBJ"}
package/esm/concat.js ADDED
@@ -0,0 +1,128 @@
1
+ import { PromiseResolver } from "@yume-chan/async";
2
+ import { ReadableStream, WritableStream } from "./stream.js";
3
+ // `TransformStream` only calls its `source.flush` method when its `readable` is being read.
4
+ // If the user want to use the `Promise` interface, the `flush` method will never be called,
5
+ // so the `PromiseResolver` will never be resolved.
6
+ // Thus we need to implement our own `TransformStream` using a `WritableStream` and a `ReadableStream`.
7
+ /**
8
+ * A `TransformStream` that concatenates strings.
9
+ *
10
+ * Its `readable` is also a `Promise<string>`, so it's possible to `await` it to get the result.
11
+ *
12
+ * ```ts
13
+ * const result: string = await readable.pipeThrough(new ConcatStringStream());
14
+ * ```
15
+ */
16
+ export class ConcatStringStream {
17
+ // PERF: rope (concat strings) is faster than `[].join('')`
18
+ #result = "";
19
+ #resolver = new PromiseResolver();
20
+ #writable = new WritableStream({
21
+ write: (chunk) => {
22
+ this.#result += chunk;
23
+ },
24
+ close: () => {
25
+ this.#resolver.resolve(this.#result);
26
+ this.#readableController.enqueue(this.#result);
27
+ this.#readableController.close();
28
+ },
29
+ abort: (reason) => {
30
+ this.#resolver.reject(reason);
31
+ this.#readableController.error(reason);
32
+ },
33
+ });
34
+ get writable() {
35
+ return this.#writable;
36
+ }
37
+ #readableController;
38
+ #readable = new ReadableStream({
39
+ start: (controller) => {
40
+ this.#readableController = controller;
41
+ },
42
+ });
43
+ get readable() {
44
+ return this.#readable;
45
+ }
46
+ constructor() {
47
+ void Object.defineProperties(this.#readable, {
48
+ then: {
49
+ get: () => this.#resolver.promise.then.bind(this.#resolver.promise),
50
+ },
51
+ catch: {
52
+ get: () => this.#resolver.promise.catch.bind(this.#resolver.promise),
53
+ },
54
+ finally: {
55
+ get: () => this.#resolver.promise.finally.bind(this.#resolver.promise),
56
+ },
57
+ });
58
+ }
59
+ }
60
+ /**
61
+ * A `TransformStream` that concatenates `Uint8Array`s.
62
+ *
63
+ * If you want to decode the result as string,
64
+ * prefer `.pipeThrough(new DecodeUtf8Stream()).pipeThrough(new ConcatStringStream())`,
65
+ * than `.pipeThough(new ConcatBufferStream()).pipeThrough(new DecodeUtf8Stream())`,
66
+ * because concatenating strings is faster than concatenating `Uint8Array`s.
67
+ */
68
+ export class ConcatBufferStream {
69
+ #segments = [];
70
+ #resolver = new PromiseResolver();
71
+ #writable = new WritableStream({
72
+ write: (chunk) => {
73
+ this.#segments.push(chunk);
74
+ },
75
+ close: () => {
76
+ let result;
77
+ let offset = 0;
78
+ switch (this.#segments.length) {
79
+ case 0:
80
+ result = new Uint8Array(0);
81
+ break;
82
+ case 1:
83
+ result = this.#segments[0];
84
+ break;
85
+ default:
86
+ result = new Uint8Array(this.#segments.reduce((prev, item) => prev + item.length, 0));
87
+ for (const segment of this.#segments) {
88
+ result.set(segment, offset);
89
+ offset += segment.length;
90
+ }
91
+ break;
92
+ }
93
+ this.#resolver.resolve(result);
94
+ this.#readableController.enqueue(result);
95
+ this.#readableController.close();
96
+ },
97
+ abort: (reason) => {
98
+ this.#resolver.reject(reason);
99
+ this.#readableController.error(reason);
100
+ },
101
+ });
102
+ get writable() {
103
+ return this.#writable;
104
+ }
105
+ #readableController;
106
+ #readable = new ReadableStream({
107
+ start: (controller) => {
108
+ this.#readableController = controller;
109
+ },
110
+ });
111
+ get readable() {
112
+ return this.#readable;
113
+ }
114
+ constructor() {
115
+ void Object.defineProperties(this.#readable, {
116
+ then: {
117
+ get: () => this.#resolver.promise.then.bind(this.#resolver.promise),
118
+ },
119
+ catch: {
120
+ get: () => this.#resolver.promise.catch.bind(this.#resolver.promise),
121
+ },
122
+ finally: {
123
+ get: () => this.#resolver.promise.finally.bind(this.#resolver.promise),
124
+ },
125
+ });
126
+ }
127
+ }
128
+ //# sourceMappingURL=concat.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"concat.js","sourceRoot":"","sources":["../src/concat.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAGnD,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAM7D,4FAA4F;AAC5F,4FAA4F;AAC5F,mDAAmD;AACnD,uGAAuG;AAEvG;;;;;;;;GAQG;AACH,MAAM,OAAO,kBAAkB;IAC3B,2DAA2D;IAC3D,OAAO,GAAG,EAAE,CAAC;IAEb,SAAS,GAAG,IAAI,eAAe,EAAU,CAAC;IAE1C,SAAS,GAAG,IAAI,cAAc,CAAS;QACnC,KAAK,EAAE,CAAC,KAAK,EAAE,EAAE;YACb,IAAI,CAAC,OAAO,IAAI,KAAK,CAAC;QAC1B,CAAC;QACD,KAAK,EAAE,GAAG,EAAE;YACR,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACrC,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAC/C,IAAI,CAAC,mBAAmB,CAAC,KAAK,EAAE,CAAC;QACrC,CAAC;QACD,KAAK,EAAE,CAAC,MAAM,EAAE,EAAE;YACd,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YAC9B,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAC3C,CAAC;KACJ,CAAC,CAAC;IACH,IAAI,QAAQ;QACR,OAAO,IAAI,CAAC,SAAS,CAAC;IAC1B,CAAC;IAED,mBAAmB,CAA2C;IAC9D,SAAS,GAAG,IAAI,cAAc,CAAS;QACnC,KAAK,EAAE,CAAC,UAAU,EAAE,EAAE;YAClB,IAAI,CAAC,mBAAmB,GAAG,UAAU,CAAC;QAC1C,CAAC;KACJ,CAA+B,CAAC;IACjC,IAAI,QAAQ;QACR,OAAO,IAAI,CAAC,SAAS,CAAC;IAC1B,CAAC;IAED;QACI,KAAK,MAAM,CAAC,gBAAgB,CAAC,IAAI,CAAC,SAAS,EAAE;YACzC,IAAI,EAAE;gBACF,GAAG,EAAE,GAAG,EAAE,CACN,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;aAC/D;YACD,KAAK,EAAE;gBACH,GAAG,EAAE,GAAG,EAAE,CACN,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;aAChE;YACD,OAAO,EAAE;gBACL,GAAG,EAAE,GAAG,EAAE,CACN,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;aAClE;SACJ,CAAC,CAAC;IACP,CAAC;CACJ;AAMD;;;;;;;GAOG;AACH,MAAM,OAAO,kBAAkB;IAC3B,SAAS,GAAiB,EAAE,CAAC;IAE7B,SAAS,GAAG,IAAI,eAAe,EAAc,CAAC;IAE9C,SAAS,GAAG,IAAI,cAAc,CAAa;QACvC,KAAK,EAAE,CAAC,KAAK,EAAE,EAAE;YACb,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC/B,CAAC;QACD,KAAK,EAAE,GAAG,EAAE;YACR,IAAI,MAAkB,CAAC;YACvB,IAAI,MAAM,GAAG,CAAC,CAAC;YACf,QAAQ,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE;gBAC3B,KAAK,CAAC;oBACF,MAAM,GAAG,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC;oBAC3B,MAAM;gBACV,KAAK,CAAC;oBACF,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAE,CAAC;oBAC5B,MAAM;gBACV;oBACI,MAAM,GAAG,IAAI,UAAU,CACnB,IAAI,CAAC,SAAS,CAAC,MAAM,CACjB,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,GAAG,IAAI,CAAC,MAAM,EAClC,CAAC,CACJ,CACJ,CAAC;oBACF,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,SAAS,EAAE;wBAClC,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;wBAC5B,MAAM,IAAI,OAAO,CAAC,MAAM,CAAC;qBAC5B;oBACD,MAAM;aACb;YAED,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;YAC/B,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;YACzC,IAAI,CAAC,mBAAmB,CAAC,KAAK,EAAE,CAAC;QACrC,CAAC;QACD,KAAK,EAAE,CAAC,MAAM,EAAE,EAAE;YACd,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YAC9B,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAC3C,CAAC;KACJ,CAAC,CAAC;IACH,IAAI,QAAQ;QACR,OAAO,IAAI,CAAC,SAAS,CAAC;IAC1B,CAAC;IAED,mBAAmB,CAA+C;IAClE,SAAS,GAAG,IAAI,cAAc,CAAa;QACvC,KAAK,EAAE,CAAC,UAAU,EAAE,EAAE;YAClB,IAAI,CAAC,mBAAmB,GAAG,UAAU,CAAC;QAC1C,CAAC;KACJ,CAA+B,CAAC;IACjC,IAAI,QAAQ;QACR,OAAO,IAAI,CAAC,SAAS,CAAC;IAC1B,CAAC;IAED;QACI,KAAK,MAAM,CAAC,gBAAgB,CAAC,IAAI,CAAC,SAAS,EAAE;YACzC,IAAI,EAAE;gBACF,GAAG,EAAE,GAAG,EAAE,CACN,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;aAC/D;YACD,KAAK,EAAE;gBACH,GAAG,EAAE,GAAG,EAAE,CACN,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;aAChE;YACD,OAAO,EAAE;gBACL,GAAG,EAAE,GAAG,EAAE,CACN,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;aAClE;SACJ,CAAC,CAAC;IACP,CAAC;CACJ"}
@@ -1,8 +1,7 @@
1
1
  import type { QueuingStrategy, WritableStreamDefaultWriter } from "./stream.js";
2
2
  import { ReadableStream, TransformStream, WritableStream } from "./stream.js";
3
3
  export declare class Consumable<T> {
4
- private readonly task;
5
- private readonly resolver;
4
+ #private;
6
5
  readonly value: T;
7
6
  readonly consumed: Promise<void>;
8
7
  constructor(value: T);
@@ -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":"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"}
package/esm/consumable.js CHANGED
@@ -9,31 +9,31 @@ const createTask = console.createTask?.bind(console) ??
9
9
  },
10
10
  }));
11
11
  export class Consumable {
12
- task;
13
- resolver;
12
+ #task;
13
+ #resolver;
14
14
  value;
15
15
  consumed;
16
16
  constructor(value) {
17
- this.task = createTask("Consumable");
17
+ this.#task = createTask("Consumable");
18
18
  this.value = value;
19
- this.resolver = new PromiseResolver();
20
- this.consumed = this.resolver.promise;
19
+ this.#resolver = new PromiseResolver();
20
+ this.consumed = this.#resolver.promise;
21
21
  }
22
22
  consume() {
23
- this.resolver.resolve();
23
+ this.#resolver.resolve();
24
24
  }
25
25
  error(error) {
26
- this.resolver.reject(error);
26
+ this.#resolver.reject(error);
27
27
  }
28
28
  async tryConsume(callback) {
29
29
  try {
30
30
  // eslint-disable-next-line @typescript-eslint/await-thenable
31
- const result = await this.task.run(() => callback(this.value));
31
+ const result = await this.#task.run(() => callback(this.value));
32
32
  this.consume();
33
33
  return result;
34
34
  }
35
35
  catch (e) {
36
- this.resolver.reject(e);
36
+ this.#resolver.reject(e);
37
37
  throw e;
38
38
  }
39
39
  }