@yume-chan/stream-extra 0.0.17 → 0.0.18

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 (69) hide show
  1. package/CHANGELOG.json +12 -0
  2. package/CHANGELOG.md +8 -1
  3. package/LICENSE +1 -1
  4. package/README.md +34 -2
  5. package/esm/buffered-transform.d.ts +3 -3
  6. package/esm/buffered-transform.d.ts.map +1 -1
  7. package/esm/buffered-transform.js +17 -11
  8. package/esm/buffered-transform.js.map +1 -1
  9. package/esm/buffered.d.ts +2 -2
  10. package/esm/buffered.d.ts.map +1 -1
  11. package/esm/buffered.js +6 -13
  12. package/esm/buffered.js.map +1 -1
  13. package/esm/decode-utf8.d.ts.map +1 -1
  14. package/esm/decode-utf8.js +1 -1
  15. package/esm/decode-utf8.js.map +1 -1
  16. package/esm/duplex.d.ts +2 -2
  17. package/esm/duplex.d.ts.map +1 -1
  18. package/esm/duplex.js +17 -13
  19. package/esm/duplex.js.map +1 -1
  20. package/esm/pipe-from.d.ts +4 -5
  21. package/esm/pipe-from.d.ts.map +1 -1
  22. package/esm/pipe-from.js +3 -4
  23. package/esm/pipe-from.js.map +1 -1
  24. package/esm/push-readable.d.ts +10 -3
  25. package/esm/push-readable.d.ts.map +1 -1
  26. package/esm/push-readable.js +20 -5
  27. package/esm/push-readable.js.map +1 -1
  28. package/esm/stream.d.ts +11 -4
  29. package/esm/stream.d.ts.map +1 -1
  30. package/esm/stream.js +26 -3
  31. package/esm/stream.js.map +1 -1
  32. package/esm/struct-deserialize.d.ts +2 -2
  33. package/esm/struct-deserialize.d.ts.map +1 -1
  34. package/esm/struct-deserialize.js +1 -1
  35. package/esm/struct-deserialize.js.map +1 -1
  36. package/esm/struct-serialize.d.ts +1 -1
  37. package/esm/struct-serialize.d.ts.map +1 -1
  38. package/esm/struct-serialize.js.map +1 -1
  39. package/esm/trace.d.ts +16 -0
  40. package/esm/trace.d.ts.map +1 -0
  41. package/esm/trace.js +131 -0
  42. package/esm/trace.js.map +1 -0
  43. package/esm/wrap-readable.d.ts +4 -4
  44. package/esm/wrap-readable.d.ts.map +1 -1
  45. package/esm/wrap-readable.js +6 -6
  46. package/esm/wrap-readable.js.map +1 -1
  47. package/esm/wrap-writable.d.ts +3 -3
  48. package/esm/wrap-writable.d.ts.map +1 -1
  49. package/esm/wrap-writable.js +4 -4
  50. package/esm/wrap-writable.js.map +1 -1
  51. package/package.json +12 -9
  52. package/src/buffered-transform.ts +37 -17
  53. package/src/buffered.ts +12 -15
  54. package/src/decode-utf8.ts +3 -2
  55. package/src/duplex.ts +27 -9
  56. package/src/pipe-from.ts +3 -4
  57. package/src/push-readable.ts +79 -44
  58. package/src/stream.ts +49 -7
  59. package/src/struct-deserialize.ts +7 -5
  60. package/src/struct-serialize.ts +4 -2
  61. package/src/wrap-readable.ts +31 -13
  62. package/src/wrap-writable.ts +21 -10
  63. package/tsconfig.build.json +1 -1
  64. package/tsconfig.build.tsbuildinfo +1 -1
  65. package/esm/native.d.ts +0 -240
  66. package/esm/native.d.ts.map +0 -1
  67. package/esm/native.js +0 -60
  68. package/esm/native.js.map +0 -1
  69. package/src/native.ts +0 -362
package/CHANGELOG.json CHANGED
@@ -1,6 +1,18 @@
1
1
  {
2
2
  "name": "@yume-chan/stream-extra",
3
3
  "entries": [
4
+ {
5
+ "version": "0.0.18",
6
+ "tag": "@yume-chan/stream-extra_v0.0.18",
7
+ "date": "Wed, 25 Jan 2023 21:33:49 GMT",
8
+ "comments": {
9
+ "none": [
10
+ {
11
+ "comment": "Change to load native Web Streams API implementation from `globalThis` if available"
12
+ }
13
+ ]
14
+ }
15
+ },
4
16
  {
5
17
  "version": "0.0.17",
6
18
  "tag": "@yume-chan/stream-extra_v0.0.17",
package/CHANGELOG.md CHANGED
@@ -1,6 +1,13 @@
1
1
  # Change Log - @yume-chan/stream-extra
2
2
 
3
- This log was last generated on Tue, 18 Oct 2022 09:32:30 GMT and should not be manually modified.
3
+ This log was last generated on Wed, 25 Jan 2023 21:33:49 GMT and should not be manually modified.
4
+
5
+ ## 0.0.18
6
+ Wed, 25 Jan 2023 21:33:49 GMT
7
+
8
+ ### Updates
9
+
10
+ - Change to load native Web Streams API implementation from `globalThis` if available
4
11
 
5
12
  ## 0.0.17
6
13
  Tue, 18 Oct 2022 09:32:30 GMT
package/LICENSE CHANGED
@@ -1,6 +1,6 @@
1
1
  MIT License
2
2
 
3
- Copyright (c) 2020-2022 Simon Chan
3
+ Copyright (c) 2020-2023 Simon Chan
4
4
 
5
5
  Permission is hereby granted, free of charge, to any person obtaining a copy
6
6
  of this software and associated documentation files (the "Software"), to deal
package/README.md CHANGED
@@ -1,8 +1,40 @@
1
1
  # @yume-chan/stream-extra
2
2
 
3
- Some useful extensions for Web Streams API.
3
+ Some useful extensions for working with binary streams. Conforms to the [Web Streams API](https://streams.spec.whatwg.org/).
4
4
 
5
- Currently it's using [web-streams-polyfill](https://github.com/MattiasBuelens/web-streams-polyfill) because it's hard to load native implementations from both browsers and Node.js. (An experimental implementation using Top Level Await is available in `native.ts`, but not exported).
5
+ ## Find an implementation
6
+
7
+ If all of `ReadableStream`, `WritableStream` and `TransformStream` fields are available on `globalThis`, they will be used. Otherwise, the [web-streams-polyfill](https://github.com/MattiasBuelens/web-streams-polyfill) package will be used.
8
+
9
+ Google Chrome 89 and Mozilla Firefox 102 provide full support for Web Streams API natively.
10
+
11
+ In Node.js, it's not possible to load the `stream/web` module while keeping the compatibility with both Web and bundlers:
12
+
13
+ - Webpack has poor support with Top Level Await, for example, Hot Module Replacement doesn't work when any module is using TLA.
14
+ - Web doesn't have the `module` module, thus requires a shim in import map.
15
+
16
+ Assigning `ReadableStream`, `WritableStream` and `TransformStream` from `stream/web` module to `globalThis`, before loading this library, will still work. Other custom polyfill can also be loaded this way.
17
+
18
+ ## Compatibility issue with `ReadableStream#pipeTo` and `ReadableStream#pipeThrough`
19
+
20
+ The [Web Streams API spec](https://streams.spec.whatwg.org/#readable-stream-pipe-to) specifies that `ReadableStream#pipeTo` must check the argument to be an instance of `WritableStream`, so it can optimize the performance by calling internal methods directly.
21
+
22
+ Native implementations will perform this check, so `new globalThis.ReadableStream().pipeTo(new Polyfill.WritableStream())` will throw an error.
23
+
24
+ The `WrapReadableStream` class can be used to bypass this check:
25
+
26
+ ```ts
27
+ import { WrapReadableStream } from "@yume-chan/stream-extra";
28
+ import { WritableStream as PolyfillWritableStream } from "web-streams-polyfill";
29
+
30
+ const nativeReadable = new globalThis.ReadableStream();
31
+ const wrappedReadable = new WrapReadableStream(new globalThis.ReadableStream());
32
+
33
+ nativeReadable.pipeTo(new PolyfillWritableStream()); // Error
34
+ wrappedReadable.pipeTo(new PolyfillWritableStream()); // OK
35
+ ```
36
+
37
+ web-streams-polyfill package's `ReadableStream#pipeTo` only uses public methods, so it can be used with any `WritableStream` implementation.
6
38
 
7
39
  ## `BufferedReadableStream`
8
40
 
@@ -1,6 +1,6 @@
1
- import type { ValueOrPromise } from '@yume-chan/struct';
2
- import { BufferedReadableStream } from './buffered.js';
3
- import { ReadableStream, ReadableWritablePair, WritableStream } from './stream.js';
1
+ import { type ValueOrPromise } from "@yume-chan/struct";
2
+ import { BufferedReadableStream } from "./buffered.js";
3
+ import { ReadableStream, WritableStream, type ReadableWritablePair } from "./stream.js";
4
4
  export declare class BufferedTransformStream<T> implements ReadableWritablePair<T, Uint8Array> {
5
5
  private _readable;
6
6
  get readable(): ReadableStream<T>;
@@ -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;AACxD,OAAO,EAAE,sBAAsB,EAAoC,MAAM,eAAe,CAAC;AAEzF,OAAO,EAAE,cAAc,EAAE,oBAAoB,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAGnF,qBAAa,uBAAuB,CAAC,CAAC,CAAE,YAAW,oBAAoB,CAAC,CAAC,EAAE,UAAU,CAAC;IAClF,OAAO,CAAC,SAAS,CAAoB;IACrC,IAAW,QAAQ,sBAA6B;IAEhD,OAAO,CAAC,SAAS,CAA6B;IAC9C,IAAW,QAAQ,+BAA6B;gBAEpC,SAAS,EAAE,CAAC,MAAM,EAAE,sBAAsB,KAAK,cAAc,CAAC,CAAC,CAAC;CA4C/E"}
1
+ {"version":3,"file":"buffered-transform.d.ts","sourceRoot":"","sources":["../src/buffered-transform.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAExD,OAAO,EACH,sBAAsB,EAEzB,MAAM,eAAe,CAAC;AAKvB,OAAO,EACH,cAAc,EACd,cAAc,EACd,KAAK,oBAAoB,EAC5B,MAAM,aAAa,CAAC;AAGrB,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,16 +1,22 @@
1
- import { BufferedReadableStream, BufferedReadableStreamEndedError } from './buffered.js';
2
- import { PushReadableStream } from './push-readable.js';
3
- import { ReadableStream, WritableStream } from './stream.js';
1
+ import { BufferedReadableStream, BufferedReadableStreamEndedError, } from "./buffered.js";
2
+ import { PushReadableStream, } from "./push-readable.js";
3
+ import { ReadableStream, WritableStream, } from "./stream.js";
4
4
  // TODO: BufferedTransformStream: find better implementation
5
5
  export class BufferedTransformStream {
6
6
  _readable;
7
- get readable() { return this._readable; }
7
+ get readable() {
8
+ return this._readable;
9
+ }
8
10
  _writable;
9
- get writable() { return this._writable; }
11
+ get writable() {
12
+ return this._writable;
13
+ }
10
14
  constructor(transform) {
11
15
  // Convert incoming chunks to a `BufferedReadableStream`
12
16
  let sourceStreamController;
13
- const buffered = new BufferedReadableStream(new PushReadableStream(controller => sourceStreamController = controller));
17
+ const buffered = new BufferedReadableStream(new PushReadableStream((controller) => {
18
+ sourceStreamController = controller;
19
+ }));
14
20
  this._readable = new ReadableStream({
15
21
  async pull(controller) {
16
22
  try {
@@ -18,9 +24,9 @@ export class BufferedTransformStream {
18
24
  controller.enqueue(value);
19
25
  }
20
26
  catch (e) {
21
- // TODO: BufferedTransformStream: The semantic of stream ending is not clear
22
- // If the `transform` started but did not finish, it should really be an error?
23
- // But we can't detect that, unless there is a `peek` method on buffered stream.
27
+ // Treat `BufferedReadableStreamEndedError` as a normal end.
28
+ // If the `transform` method doesn't have enough data to return a value,
29
+ // it should throw another error to indicate that.
24
30
  if (e instanceof BufferedReadableStreamEndedError) {
25
31
  controller.close();
26
32
  return;
@@ -31,8 +37,8 @@ export class BufferedTransformStream {
31
37
  cancel: (reason) => {
32
38
  // Propagate cancel to the source stream
33
39
  // So future writes will be rejected
34
- buffered.cancel(reason);
35
- }
40
+ return buffered.cancel(reason);
41
+ },
36
42
  });
37
43
  this._writable = new WritableStream({
38
44
  async write(chunk) {
@@ -1 +1 @@
1
- {"version":3,"file":"buffered-transform.js","sourceRoot":"","sources":["../src/buffered-transform.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,sBAAsB,EAAE,gCAAgC,EAAE,MAAM,eAAe,CAAC;AACzF,OAAO,EAAE,kBAAkB,EAAgC,MAAM,oBAAoB,CAAC;AACtF,OAAO,EAAE,cAAc,EAAwB,cAAc,EAAE,MAAM,aAAa,CAAC;AAEnF,4DAA4D;AAC5D,MAAM,OAAO,uBAAuB;IACxB,SAAS,CAAoB;IACrC,IAAW,QAAQ,KAAK,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;IAExC,SAAS,CAA6B;IAC9C,IAAW,QAAQ,KAAK,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;IAEhD,YAAY,SAAgE;QACxE,wDAAwD;QACxD,IAAI,sBAAiE,CAAC;QAEtE,MAAM,QAAQ,GAAG,IAAI,sBAAsB,CAAC,IAAI,kBAAkB,CAC9D,UAAU,CAAC,EAAE,CACT,sBAAsB,GAAG,UAAU,CAC1C,CAAC,CAAC;QAEH,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,4EAA4E;oBAC5E,+EAA+E;oBAC/E,gFAAgF;oBAChF,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,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YAC5B,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":"AAEA,OAAO,EACH,sBAAsB,EACtB,gCAAgC,GACnC,MAAM,eAAe,CAAC;AACvB,OAAO,EACH,kBAAkB,GAErB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACH,cAAc,EACd,cAAc,GAEjB,MAAM,aAAa,CAAC;AAErB,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"}
package/esm/buffered.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import type { ReadableStream, ReadableStreamDefaultReader } from "./stream.js";
1
+ import { type ReadableStream, type ReadableStreamDefaultReader } from "./stream.js";
2
2
  export declare class BufferedReadableStreamEndedError extends Error {
3
3
  constructor();
4
4
  }
@@ -23,6 +23,6 @@ export declare class BufferedReadableStream {
23
23
  * @returns A `ReadableStream`
24
24
  */
25
25
  release(): ReadableStream<Uint8Array>;
26
- cancel(reason?: any): Promise<void>;
26
+ cancel(reason?: unknown): Promise<void>;
27
27
  }
28
28
  //# sourceMappingURL=buffered.d.ts.map
@@ -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,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAC,UAAU,CAAC,CAAC;IAEtD,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,2BAA2B,CAAC,UAAU,CAAC,CAAC;gBAEhD,MAAM,EAAE,cAAc,CAAC,UAAU,CAAC;YAKvC,UAAU;YAQV,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;IA6BrC,MAAM,CAAC,MAAM,CAAC,EAAE,GAAG;CAG7B"}
1
+ {"version":3,"file":"buffered.d.ts","sourceRoot":"","sources":["../src/buffered.ts"],"names":[],"mappings":"AACA,OAAO,EACH,KAAK,cAAc,EACnB,KAAK,2BAA2B,EACnC,MAAM,aAAa,CAAC;AAErB,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,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAC,UAAU,CAAC,CAAC;IAEtD,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,2BAA2B,CAAC,UAAU,CAAC,CAAC;gBAEhD,MAAM,EAAE,cAAc,CAAC,UAAU,CAAC;YAKvC,UAAU;YAQV,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"}
package/esm/buffered.js CHANGED
@@ -1,7 +1,7 @@
1
1
  import { PushReadableStream } from "./push-readable.js";
2
2
  export class BufferedReadableStreamEndedError extends Error {
3
3
  constructor() {
4
- super('Stream ended');
4
+ super("Stream ended");
5
5
  // Fix Error's prototype chain when compiling to ES5
6
6
  Object.setPrototypeOf(this, new.target.prototype);
7
7
  }
@@ -101,19 +101,12 @@ export class BufferedReadableStream {
101
101
  await controller.enqueue(this.buffered);
102
102
  // Manually pipe the stream
103
103
  while (true) {
104
- try {
105
- const { done, value } = await this.reader.read();
106
- if (done) {
107
- controller.close();
108
- break;
109
- }
110
- else {
111
- await controller.enqueue(value);
112
- }
104
+ const { done, value } = await this.reader.read();
105
+ if (done) {
106
+ return;
113
107
  }
114
- catch (e) {
115
- controller.error(e);
116
- break;
108
+ else {
109
+ await controller.enqueue(value);
117
110
  }
118
111
  }
119
112
  });
@@ -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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"}
@@ -1 +1 @@
1
- {"version":3,"file":"decode-utf8.d.ts","sourceRoot":"","sources":["../src/decode-utf8.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAE9C,qBAAa,gBAAiB,SAAQ,eAAe,CAAC,UAAU,EAAE,MAAM,CAAC;;CAQxE"}
1
+ {"version":3,"file":"decode-utf8.d.ts","sourceRoot":"","sources":["../src/decode-utf8.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAE9C,qBAAa,gBAAiB,SAAQ,eAAe,CAAC,UAAU,EAAE,MAAM,CAAC;;CAQxE"}
@@ -1,4 +1,4 @@
1
- import { decodeUtf8 } from '@yume-chan/struct';
1
+ import { decodeUtf8 } from "@yume-chan/struct";
2
2
  import { TransformStream } from "./stream.js";
3
3
  export class DecodeUtf8Stream extends TransformStream {
4
4
  constructor() {
@@ -1 +1 @@
1
- {"version":3,"file":"decode-utf8.js","sourceRoot":"","sources":["../src/decode-utf8.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAE9C,MAAM,OAAO,gBAAiB,SAAQ,eAAmC;IACrE;QACI,KAAK,CAAC;YACF,SAAS,CAAC,KAAK,EAAE,UAAU;gBACvB,UAAU,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC;YAC1C,CAAC;SACJ,CAAC,CAAC;IACP,CAAC;CACJ"}
1
+ {"version":3,"file":"decode-utf8.js","sourceRoot":"","sources":["../src/decode-utf8.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAE/C,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAE9C,MAAM,OAAO,gBAAiB,SAAQ,eAAmC;IACrE;QACI,KAAK,CAAC;YACF,SAAS,CAAC,KAAK,EAAE,UAAU;gBACvB,UAAU,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC;YAC1C,CAAC;SACJ,CAAC,CAAC;IACP,CAAC;CACJ"}
package/esm/duplex.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import type { ValueOrPromise } from "@yume-chan/struct";
1
+ import { type ValueOrPromise } from "@yume-chan/struct";
2
2
  import { WritableStream, type ReadableStream } from "./stream.js";
3
3
  import { WrapReadableStream } from "./wrap-readable.js";
4
4
  export interface DuplexStreamFactoryOptions {
@@ -7,7 +7,7 @@ export interface DuplexStreamFactoryOptions {
7
7
  * or `WritableStream` is ended (the user won't produce any more data),
8
8
  * or `DuplexStreamFactory#close` is called.
9
9
  *
10
- * Usually you want to let the other peer know that the duplex stream should be clsoed.
10
+ * Usually you want to let the other peer know that the duplex stream should be closed.
11
11
  *
12
12
  * `dispose` will automatically be called after `close` completes,
13
13
  * but if you want to wait another peer for a close confirmation and call
@@ -1 +1 @@
1
- {"version":3,"file":"duplex.d.ts","sourceRoot":"","sources":["../src/duplex.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,KAAK,cAAc,EAA0E,MAAM,aAAa,CAAC;AAC1I,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAExD,MAAM,WAAW,0BAA0B;IACvC;;;;;;;;;;;OAWG;IACH,KAAK,CAAC,EAAE,CAAC,MAAM,cAAc,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC,GAAG,SAAS,CAAC;IAE3D;;;;;;;OAOG;IACH,OAAO,CAAC,EAAE,CAAC,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,SAAS,CAAC;CACtD;AAED;;;;;GAKG;AACH,qBAAa,mBAAmB,CAAC,CAAC,EAAE,CAAC;IACjC,OAAO,CAAC,mBAAmB,CAA4C;IACvE,OAAO,CAAC,OAAO,CAAwC;IAEvD,OAAO,CAAC,eAAe,CAAS;IAChC,IAAW,cAAc,YAAmC;IAE5D,OAAO,CAAC,OAAO,CAA+B;IAC9C,IAAW,MAAM,kBAAmC;IAEpD,OAAO,CAAC,OAAO,CAA6B;gBAEzB,OAAO,CAAC,EAAE,0BAA0B;IAIhD,YAAY,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC,CAAC,GAAG,kBAAkB,CAAC,CAAC,CAAC;IAiBhE,cAAc,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC,CAAC,GAAG,cAAc,CAAC,CAAC,CAAC;IAsBtD,KAAK;IAiBL,OAAO;CAUvB"}
1
+ {"version":3,"file":"duplex.d.ts","sourceRoot":"","sources":["../src/duplex.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAExD,OAAO,EACH,cAAc,EACd,KAAK,cAAc,EAGtB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAExD,MAAM,WAAW,0BAA0B;IACvC;;;;;;;;;;;OAWG;IACH,KAAK,CAAC,EAAE,CAAC,MAAM,cAAc,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC,GAAG,SAAS,CAAC;IAE3D;;;;;;;OAOG;IACH,OAAO,CAAC,EAAE,CAAC,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,SAAS,CAAC;CACtD;AAED;;;;;GAKG;AACH,qBAAa,mBAAmB,CAAC,CAAC,EAAE,CAAC;IACjC,OAAO,CAAC,mBAAmB,CAA4C;IACvE,OAAO,CAAC,OAAO,CAAwC;IAEvD,OAAO,CAAC,eAAe,CAAS;IAChC,IAAW,cAAc,YAExB;IAED,OAAO,CAAC,OAAO,CAA+B;IAC9C,IAAW,MAAM,kBAEhB;IAED,OAAO,CAAC,OAAO,CAA6B;gBAEzB,OAAO,CAAC,EAAE,0BAA0B;IAIhD,YAAY,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC,CAAC,GAAG,kBAAkB,CAAC,CAAC,CAAC;IAiBhE,cAAc,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC,CAAC,GAAG,cAAc,CAAC,CAAC,CAAC;IAwBtD,KAAK;IAmBL,OAAO;CAcvB"}
package/esm/duplex.js CHANGED
@@ -1,5 +1,5 @@
1
1
  import { PromiseResolver } from "@yume-chan/async";
2
- import { WritableStream } from "./stream.js";
2
+ import { WritableStream, } from "./stream.js";
3
3
  import { WrapReadableStream } from "./wrap-readable.js";
4
4
  /**
5
5
  * A factory for creating a duplex stream.
@@ -11,9 +11,13 @@ export class DuplexStreamFactory {
11
11
  readableControllers = [];
12
12
  writers = [];
13
13
  _writableClosed = false;
14
- get writableClosed() { return this._writableClosed; }
14
+ get writableClosed() {
15
+ return this._writableClosed;
16
+ }
15
17
  _closed = new PromiseResolver();
16
- get closed() { return this._closed.promise; }
18
+ get closed() {
19
+ return this._closed.promise;
20
+ }
17
21
  options;
18
22
  constructor(options) {
19
23
  this.options = options ?? {};
@@ -49,10 +53,9 @@ export class DuplexStreamFactory {
49
53
  await this.close();
50
54
  },
51
55
  close: async () => {
52
- try {
53
- await writer.close();
54
- }
55
- catch { }
56
+ await writer.close().catch((e) => {
57
+ void e;
58
+ });
56
59
  await this.close();
57
60
  },
58
61
  });
@@ -63,15 +66,14 @@ export class DuplexStreamFactory {
63
66
  }
64
67
  this._writableClosed = true;
65
68
  // Call `close` first, so it can still write data to `WritableStream`s.
66
- if (await this.options.close?.() !== false) {
69
+ if ((await this.options.close?.()) !== false) {
67
70
  // `close` can return `false` to disable automatic `dispose`.
68
71
  await this.dispose();
69
72
  }
70
73
  for (const writer of this.writers) {
71
- try {
72
- await writer.close();
73
- }
74
- catch { }
74
+ await writer.close().catch((e) => {
75
+ void e;
76
+ });
75
77
  }
76
78
  }
77
79
  async dispose() {
@@ -81,7 +83,9 @@ export class DuplexStreamFactory {
81
83
  try {
82
84
  controller.close();
83
85
  }
84
- catch { }
86
+ catch (e) {
87
+ void e;
88
+ }
85
89
  }
86
90
  await this.options.dispose?.();
87
91
  }
package/esm/duplex.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"duplex.js","sourceRoot":"","sources":["../src/duplex.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"duplex.js","sourceRoot":"","sources":["../src/duplex.ts"],"names":[],"mappings":"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"}
@@ -1,13 +1,12 @@
1
1
  import { WritableStream, type ReadableWritablePair } from "./stream.js";
2
2
  /**
3
- * Create a new `WritableStream` that, when written to, will write that chunk to
4
- * `pair.writable`, when pipe `pair.readable` to `writable`.
3
+ * Pipe `pair.readable` to `writable`, then returns `pair.writable`.
5
4
  *
6
- * It's the opposite of `ReadableStream.pipeThrough`.
5
+ * This is the opposite of `ReadableStream#pipeThrough()`.
7
6
  *
8
7
  * @param writable The `WritableStream` to write to.
9
8
  * @param pair A `TransformStream` that converts chunks.
10
- * @returns A new `WritableStream`.
9
+ * @returns `pair`'s `writable` stream.
11
10
  */
12
- export declare function pipeFrom<W, T>(writable: WritableStream<W>, pair: ReadableWritablePair<W, T>): WritableStream<T>;
11
+ export declare function pipeFrom<W, T>(writable: WritableStream<W>, pair: ReadableWritablePair<W, T>): import("web-streams-polyfill").WritableStream<T>;
13
12
  //# sourceMappingURL=pipe-from.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"pipe-from.d.ts","sourceRoot":"","sources":["../src/pipe-from.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,KAAK,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAExE;;;;;;;;;GASG;AACH,wBAAgB,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,QAAQ,EAAE,cAAc,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,oBAAoB,CAAC,CAAC,EAAE,CAAC,CAAC,qBAc3F"}
1
+ {"version":3,"file":"pipe-from.d.ts","sourceRoot":"","sources":["../src/pipe-from.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,KAAK,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAExE;;;;;;;;GAQG;AACH,wBAAgB,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,QAAQ,EAAE,cAAc,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,oBAAoB,CAAC,CAAC,EAAE,CAAC,CAAC,oDAc3F"}
package/esm/pipe-from.js CHANGED
@@ -1,13 +1,12 @@
1
1
  import { WritableStream } from "./stream.js";
2
2
  /**
3
- * Create a new `WritableStream` that, when written to, will write that chunk to
4
- * `pair.writable`, when pipe `pair.readable` to `writable`.
3
+ * Pipe `pair.readable` to `writable`, then returns `pair.writable`.
5
4
  *
6
- * It's the opposite of `ReadableStream.pipeThrough`.
5
+ * This is the opposite of `ReadableStream#pipeThrough()`.
7
6
  *
8
7
  * @param writable The `WritableStream` to write to.
9
8
  * @param pair A `TransformStream` that converts chunks.
10
- * @returns A new `WritableStream`.
9
+ * @returns `pair`'s `writable` stream.
11
10
  */
12
11
  export function pipeFrom(writable, pair) {
13
12
  const writer = pair.writable.getWriter();
@@ -1 +1 @@
1
- {"version":3,"file":"pipe-from.js","sourceRoot":"","sources":["../src/pipe-from.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAA6B,MAAM,aAAa,CAAC;AAExE;;;;;;;;;GASG;AACH,MAAM,UAAU,QAAQ,CAAO,QAA2B,EAAE,IAAgC;IACxF,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,CAAC;IACzC,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ;SACrB,MAAM,CAAC,QAAQ,CAAC,CAAC;IACtB,OAAO,IAAI,cAAc,CAAI;QACzB,KAAK,CAAC,KAAK,CAAC,KAAK;YACb,MAAM,MAAM,CAAC,KAAK,CAAC;YACnB,MAAM,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAC9B,CAAC;QACD,KAAK,CAAC,KAAK;YACP,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;YACrB,MAAM,IAAI,CAAC;QACf,CAAC;KACJ,CAAC,CAAC;AACP,CAAC"}
1
+ {"version":3,"file":"pipe-from.js","sourceRoot":"","sources":["../src/pipe-from.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAA6B,MAAM,aAAa,CAAC;AAExE;;;;;;;;GAQG;AACH,MAAM,UAAU,QAAQ,CAAO,QAA2B,EAAE,IAAgC;IACxF,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,CAAC;IACzC,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ;SACrB,MAAM,CAAC,QAAQ,CAAC,CAAC;IACtB,OAAO,IAAI,cAAc,CAAI;QACzB,KAAK,CAAC,KAAK,CAAC,KAAK;YACb,MAAM,MAAM,CAAC,KAAK,CAAC;YACnB,MAAM,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAC9B,CAAC;QACD,KAAK,CAAC,KAAK;YACP,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;YACrB,MAAM,IAAI,CAAC;QACf,CAAC;KACJ,CAAC,CAAC;AACP,CAAC"}
@@ -1,12 +1,19 @@
1
- import { AbortSignal, QueuingStrategy, ReadableStream } from "./stream.js";
1
+ import { ReadableStream, type AbortSignal, type QueuingStrategy } from "./stream.js";
2
2
  export interface PushReadableStreamController<T> {
3
3
  abortSignal: AbortSignal;
4
4
  enqueue(chunk: T): Promise<void>;
5
5
  close(): void;
6
- error(e?: any): void;
6
+ error(e?: unknown): void;
7
7
  }
8
- export declare type PushReadableStreamSource<T> = (controller: PushReadableStreamController<T>) => void;
8
+ export type PushReadableStreamSource<T> = (controller: PushReadableStreamController<T>) => void | Promise<void>;
9
9
  export declare class PushReadableStream<T> extends ReadableStream<T> {
10
+ /**
11
+ * Create a new `PushReadableStream` from a source.
12
+ *
13
+ * @param source If `source` returns a `Promise`, the stream will be closed
14
+ * when the `Promise` is resolved, and be errored when the `Promise` is rejected.
15
+ * @param strategy
16
+ */
10
17
  constructor(source: PushReadableStreamSource<T>, strategy?: QueuingStrategy<T>);
11
18
  }
12
19
  //# sourceMappingURL=push-readable.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"push-readable.d.ts","sourceRoot":"","sources":["../src/push-readable.ts"],"names":[],"mappings":"AACA,OAAO,EAAmB,WAAW,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAE5F,MAAM,WAAW,4BAA4B,CAAC,CAAC;IAC3C,WAAW,EAAE,WAAW,CAAC;IAEzB,OAAO,CAAC,KAAK,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEjC,KAAK,IAAI,IAAI,CAAC;IAEd,KAAK,CAAC,CAAC,CAAC,EAAE,GAAG,GAAG,IAAI,CAAC;CACxB;AAED,oBAAY,wBAAwB,CAAC,CAAC,IAAI,CAAC,UAAU,EAAE,4BAA4B,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC;AAEhG,qBAAa,kBAAkB,CAAC,CAAC,CAAE,SAAQ,cAAc,CAAC,CAAC,CAAC;gBACrC,MAAM,EAAE,wBAAwB,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,EAAE,eAAe,CAAC,CAAC,CAAC;CA6CxF"}
1
+ {"version":3,"file":"push-readable.d.ts","sourceRoot":"","sources":["../src/push-readable.ts"],"names":[],"mappings":"AAEA,OAAO,EAEH,cAAc,EACd,KAAK,WAAW,EAChB,KAAK,eAAe,EACvB,MAAM,aAAa,CAAC;AAErB,MAAM,WAAW,4BAA4B,CAAC,CAAC;IAC3C,WAAW,EAAE,WAAW,CAAC;IAEzB,OAAO,CAAC,KAAK,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEjC,KAAK,IAAI,IAAI,CAAC;IAEd,KAAK,CAAC,CAAC,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;CAC5B;AAED,MAAM,MAAM,wBAAwB,CAAC,CAAC,IAAI,CACtC,UAAU,EAAE,4BAA4B,CAAC,CAAC,CAAC,KAC1C,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;AAE1B,qBAAa,kBAAkB,CAAC,CAAC,CAAE,SAAQ,cAAc,CAAC,CAAC,CAAC;IACxD;;;;;;OAMG;gBAEC,MAAM,EAAE,wBAAwB,CAAC,CAAC,CAAC,EACnC,QAAQ,CAAC,EAAE,eAAe,CAAC,CAAC,CAAC;CA+DpC"}
@@ -1,18 +1,26 @@
1
- import { PromiseResolver } from '@yume-chan/async';
2
- import { AbortController, ReadableStream } from "./stream.js";
1
+ import { PromiseResolver } from "@yume-chan/async";
2
+ import { AbortController, ReadableStream, } from "./stream.js";
3
3
  export class PushReadableStream extends ReadableStream {
4
+ /**
5
+ * Create a new `PushReadableStream` from a source.
6
+ *
7
+ * @param source If `source` returns a `Promise`, the stream will be closed
8
+ * when the `Promise` is resolved, and be errored when the `Promise` is rejected.
9
+ * @param strategy
10
+ */
4
11
  constructor(source, strategy) {
5
12
  let waterMarkLow;
6
13
  const canceled = new AbortController();
7
14
  super({
8
15
  start: (controller) => {
9
- source({
16
+ const result = source({
10
17
  abortSignal: canceled.signal,
11
18
  async enqueue(chunk) {
12
19
  if (canceled.signal.aborted) {
13
20
  // If the stream is already cancelled,
14
21
  // throw immediately.
15
- throw canceled.signal.reason ?? new Error('Aborted');
22
+ throw (canceled.signal.reason ??
23
+ new Error("Aborted"));
16
24
  }
17
25
  // Only when the stream is errored, `desiredSize` will be `null`.
18
26
  // But since `null <= 0` is `true`
@@ -33,11 +41,18 @@ export class PushReadableStream extends ReadableStream {
33
41
  controller.error(e);
34
42
  },
35
43
  });
44
+ if (result && "then" in result) {
45
+ result.then(() => {
46
+ controller.close();
47
+ }, (e) => {
48
+ controller.error(e);
49
+ });
50
+ }
36
51
  },
37
52
  pull: () => {
38
53
  waterMarkLow?.resolve();
39
54
  },
40
- cancel: async (reason) => {
55
+ cancel: (reason) => {
41
56
  canceled.abort(reason);
42
57
  waterMarkLow?.reject(reason);
43
58
  },
@@ -1 +1 @@
1
- {"version":3,"file":"push-readable.js","sourceRoot":"","sources":["../src/push-readable.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,eAAe,EAAgC,cAAc,EAAE,MAAM,aAAa,CAAC;AAc5F,MAAM,OAAO,kBAAsB,SAAQ,cAAiB;IACxD,YAAmB,MAAmC,EAAE,QAA6B;QACjF,IAAI,YAA+C,CAAC;QACpD,MAAM,QAAQ,GAAoB,IAAI,eAAe,EAAE,CAAC;QAExD,KAAK,CAAC;YACF,KAAK,EAAE,CAAC,UAAU,EAAE,EAAE;gBAClB,MAAM,CAAC;oBACH,WAAW,EAAE,QAAQ,CAAC,MAAM;oBAC5B,KAAK,CAAC,OAAO,CAAC,KAAK;wBACf,IAAI,QAAQ,CAAC,MAAM,CAAC,OAAO,EAAE;4BACzB,sCAAsC;4BACtC,qBAAqB;4BACrB,MAAM,QAAQ,CAAC,MAAM,CAAC,MAAM,IAAI,IAAI,KAAK,CAAC,SAAS,CAAC,CAAC;yBACxD;wBAED,iEAAiE;wBACjE,kCAAkC;wBAClC,qEAAqE;wBACrE,yCAAyC;wBACzC,IAAI,CAAC,UAAU,CAAC,WAAW,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE;4BACpC,YAAY,GAAG,IAAI,eAAe,EAAQ,CAAC;4BAC3C,MAAM,YAAY,CAAC,OAAO,CAAC;yBAC9B;wBAED,+CAA+C;wBAC/C,oCAAoC;wBACpC,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;oBAC9B,CAAC;oBACD,KAAK;wBACD,UAAU,CAAC,KAAK,EAAE,CAAC;oBACvB,CAAC;oBACD,KAAK,CAAC,CAAC;wBACH,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;oBACxB,CAAC;iBACJ,CAAC,CAAC;YACP,CAAC;YACD,IAAI,EAAE,GAAG,EAAE;gBACP,YAAY,EAAE,OAAO,EAAE,CAAC;YAC5B,CAAC;YACD,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;gBACrB,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;gBACvB,YAAY,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;YACjC,CAAC;SACJ,EAAE,QAAQ,CAAC,CAAC;IACjB,CAAC;CACJ"}
1
+ {"version":3,"file":"push-readable.js","sourceRoot":"","sources":["../src/push-readable.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAEnD,OAAO,EACH,eAAe,EACf,cAAc,GAGjB,MAAM,aAAa,CAAC;AAgBrB,MAAM,OAAO,kBAAsB,SAAQ,cAAiB;IACxD;;;;;;OAMG;IACH,YACI,MAAmC,EACnC,QAA6B;QAE7B,IAAI,YAA+C,CAAC;QACpD,MAAM,QAAQ,GAAoB,IAAI,eAAe,EAAE,CAAC;QAExD,KAAK,CACD;YACI,KAAK,EAAE,CAAC,UAAU,EAAE,EAAE;gBAClB,MAAM,MAAM,GAAG,MAAM,CAAC;oBAClB,WAAW,EAAE,QAAQ,CAAC,MAAM;oBAC5B,KAAK,CAAC,OAAO,CAAC,KAAK;wBACf,IAAI,QAAQ,CAAC,MAAM,CAAC,OAAO,EAAE;4BACzB,sCAAsC;4BACtC,qBAAqB;4BACrB,MAAM,CACF,QAAQ,CAAC,MAAM,CAAC,MAAM;gCACtB,IAAI,KAAK,CAAC,SAAS,CAAC,CACvB,CAAC;yBACL;wBAED,iEAAiE;wBACjE,kCAAkC;wBAClC,qEAAqE;wBACrE,yCAAyC;wBACzC,IAAI,CAAC,UAAU,CAAC,WAAW,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE;4BACpC,YAAY,GAAG,IAAI,eAAe,EAAQ,CAAC;4BAC3C,MAAM,YAAY,CAAC,OAAO,CAAC;yBAC9B;wBAED,+CAA+C;wBAC/C,oCAAoC;wBACpC,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;oBAC9B,CAAC;oBACD,KAAK;wBACD,UAAU,CAAC,KAAK,EAAE,CAAC;oBACvB,CAAC;oBACD,KAAK,CAAC,CAAC;wBACH,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;oBACxB,CAAC;iBACJ,CAAC,CAAC;gBAEH,IAAI,MAAM,IAAI,MAAM,IAAI,MAAM,EAAE;oBAC5B,MAAM,CAAC,IAAI,CACP,GAAG,EAAE;wBACD,UAAU,CAAC,KAAK,EAAE,CAAC;oBACvB,CAAC,EACD,CAAC,CAAC,EAAE,EAAE;wBACF,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;oBACxB,CAAC,CACJ,CAAC;iBACL;YACL,CAAC;YACD,IAAI,EAAE,GAAG,EAAE;gBACP,YAAY,EAAE,OAAO,EAAE,CAAC;YAC5B,CAAC;YACD,MAAM,EAAE,CAAC,MAAM,EAAE,EAAE;gBACf,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;gBACvB,YAAY,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;YACjC,CAAC;SACJ,EACD,QAAQ,CACX,CAAC;IACN,CAAC;CACJ"}
package/esm/stream.d.ts CHANGED
@@ -1,5 +1,5 @@
1
- import type { AbortSignal } from "web-streams-polyfill";
2
- export * from 'web-streams-polyfill';
1
+ import { ReadableStream as ReadableStreamPolyfill, TransformStream as TransformStreamPolyfill, WritableStream as WritableStreamPolyfill, type AbortSignal } from "web-streams-polyfill";
2
+ export * from "web-streams-polyfill";
3
3
  /** A controller object that allows you to abort one or more DOM requests as and when desired. */
4
4
  export interface AbortController {
5
5
  /**
@@ -11,8 +11,15 @@ export interface AbortController {
11
11
  */
12
12
  abort(reason?: any): void;
13
13
  }
14
- export declare let AbortController: {
14
+ interface AbortControllerConstructor {
15
15
  prototype: AbortController;
16
16
  new (): AbortController;
17
- };
17
+ }
18
+ export declare const AbortController: AbortControllerConstructor;
19
+ export type ReadableStream<R = any> = ReadableStreamPolyfill<R>;
20
+ export declare let ReadableStream: typeof ReadableStreamPolyfill;
21
+ export type WritableStream<W = any> = WritableStreamPolyfill<W>;
22
+ export declare let WritableStream: typeof WritableStreamPolyfill;
23
+ export type TransformStream<I = any, O = any> = TransformStreamPolyfill<I, O>;
24
+ export declare let TransformStream: typeof TransformStreamPolyfill;
18
25
  //# sourceMappingURL=stream.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"stream.d.ts","sourceRoot":"","sources":["../src/stream.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACxD,cAAc,sBAAsB,CAAC;AAErC,iGAAiG;AACjG,MAAM,WAAW,eAAe;IAC5B;;OAEG;IAEH,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;IAC7B;;OAEG;IACH,KAAK,CAAC,MAAM,CAAC,EAAE,GAAG,GAAG,IAAI,CAAC;CAC7B;AAED,eAAO,IAAI,eAAe,EAAE;IACxB,SAAS,EAAE,eAAe,CAAC;IAC3B,QAAO,eAAe,CAAC;CAC1B,CAAC"}
1
+ {"version":3,"file":"stream.d.ts","sourceRoot":"","sources":["../src/stream.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,cAAc,IAAI,sBAAsB,EACxC,eAAe,IAAI,uBAAuB,EAC1C,cAAc,IAAI,sBAAsB,EACxC,KAAK,WAAW,EACnB,MAAM,sBAAsB,CAAC;AAC9B,cAAc,sBAAsB,CAAC;AAErC,iGAAiG;AACjG,MAAM,WAAW,eAAe;IAC5B;;OAEG;IACH,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;IAE7B;;OAEG;IACH,KAAK,CAAC,MAAM,CAAC,EAAE,GAAG,GAAG,IAAI,CAAC;CAC7B;AAED,UAAU,0BAA0B;IAChC,SAAS,EAAE,eAAe,CAAC;IAC3B,QAAQ,eAAe,CAAC;CAC3B;AAWD,eAAO,MAAM,eAAe,4BAAyB,CAAC;AAEtD,MAAM,MAAM,cAAc,CAAC,CAAC,GAAG,GAAG,IAAI,sBAAsB,CAAC,CAAC,CAAC,CAAC;AAChE,eAAO,IAAI,cAAc,+BAAyB,CAAC;AAEnD,MAAM,MAAM,cAAc,CAAC,CAAC,GAAG,GAAG,IAAI,sBAAsB,CAAC,CAAC,CAAC,CAAC;AAChE,eAAO,IAAI,cAAc,+BAAyB,CAAC;AAEnD,MAAM,MAAM,eAAe,CAAC,CAAC,GAAG,GAAG,EAAE,CAAC,GAAG,GAAG,IAAI,uBAAuB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAC9E,eAAO,IAAI,eAAe,gCAA0B,CAAC"}
package/esm/stream.js CHANGED
@@ -1,4 +1,27 @@
1
- export * from 'web-streams-polyfill';
2
- export let AbortController;
3
- ({ AbortController } = globalThis);
1
+ import { ReadableStream as ReadableStreamPolyfill, TransformStream as TransformStreamPolyfill, WritableStream as WritableStreamPolyfill, } from "web-streams-polyfill";
2
+ export * from "web-streams-polyfill";
3
+ const GLOBAL = globalThis;
4
+ export const AbortController = GLOBAL.AbortController;
5
+ export let ReadableStream = ReadableStreamPolyfill;
6
+ export let WritableStream = WritableStreamPolyfill;
7
+ export let TransformStream = TransformStreamPolyfill;
8
+ if (GLOBAL.ReadableStream && GLOBAL.WritableStream && GLOBAL.TransformStream) {
9
+ // Use browser native implementation
10
+ ReadableStream = GLOBAL.ReadableStream;
11
+ WritableStream = GLOBAL.WritableStream;
12
+ TransformStream = GLOBAL.TransformStream;
13
+ }
14
+ else {
15
+ // TODO: enable loading Node.js stream implementation when bundler supports Top Level Await
16
+ // try {
17
+ // // Use Node.js native implementation
18
+ // const MODULE_NAME = "node:stream/web";
19
+ // const StreamWeb = (await import(MODULE_NAME)) as GlobalExtension;
20
+ // ReadableStream = StreamWeb.ReadableStream;
21
+ // WritableStream = StreamWeb.WritableStream;
22
+ // TransformStream = StreamWeb.TransformStream;
23
+ // } catch {
24
+ // // ignore
25
+ // }
26
+ }
4
27
  //# sourceMappingURL=stream.js.map
package/esm/stream.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"stream.js","sourceRoot":"","sources":["../src/stream.ts"],"names":[],"mappings":"AACA,cAAc,sBAAsB,CAAC;AAerC,MAAM,CAAC,IAAI,eAGV,CAAC;AAEF,CAAC,EAAE,eAAe,EAAE,GAAG,UAAiB,CAAC,CAAC"}
1
+ {"version":3,"file":"stream.js","sourceRoot":"","sources":["../src/stream.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,cAAc,IAAI,sBAAsB,EACxC,eAAe,IAAI,uBAAuB,EAC1C,cAAc,IAAI,sBAAsB,GAE3C,MAAM,sBAAsB,CAAC;AAC9B,cAAc,sBAAsB,CAAC;AA2BrC,MAAM,MAAM,GAAG,UAAwC,CAAC;AAExD,MAAM,CAAC,MAAM,eAAe,GAAG,MAAM,CAAC,eAAe,CAAC;AAGtD,MAAM,CAAC,IAAI,cAAc,GAAG,sBAAsB,CAAC;AAGnD,MAAM,CAAC,IAAI,cAAc,GAAG,sBAAsB,CAAC;AAGnD,MAAM,CAAC,IAAI,eAAe,GAAG,uBAAuB,CAAC;AAErD,IAAI,MAAM,CAAC,cAAc,IAAI,MAAM,CAAC,cAAc,IAAI,MAAM,CAAC,eAAe,EAAE;IAC1E,oCAAoC;IACpC,cAAc,GAAG,MAAM,CAAC,cAAc,CAAC;IACvC,cAAc,GAAG,MAAM,CAAC,cAAc,CAAC;IACvC,eAAe,GAAG,MAAM,CAAC,eAAe,CAAC;CAC5C;KAAM;IACH,2FAA2F;IAC3F,QAAQ;IACR,2CAA2C;IAC3C,6CAA6C;IAC7C,wEAAwE;IACxE,iDAAiD;IACjD,iDAAiD;IACjD,mDAAmD;IACnD,YAAY;IACZ,gBAAgB;IAChB,IAAI;CACP"}
@@ -1,6 +1,6 @@
1
1
  import type Struct from "@yume-chan/struct";
2
- import type { StructValueType } from "@yume-chan/struct";
3
- import { BufferedTransformStream } from './buffered-transform.js';
2
+ import { type StructValueType } from "@yume-chan/struct";
3
+ import { BufferedTransformStream } from "./buffered-transform.js";
4
4
  export declare class StructDeserializeStream<T extends Struct<any, any, any, any>> extends BufferedTransformStream<StructValueType<T>> {
5
5
  constructor(struct: T);
6
6
  }
@@ -1 +1 @@
1
- {"version":3,"file":"struct-deserialize.d.ts","sourceRoot":"","sources":["../src/struct-deserialize.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,mBAAmB,CAAC;AAC5C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAElE,qBAAa,uBAAuB,CAAC,CAAC,SAAS,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CACrE,SAAQ,uBAAuB,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;gBAChC,MAAM,EAAE,CAAC;CAK/B"}
1
+ {"version":3,"file":"struct-deserialize.d.ts","sourceRoot":"","sources":["../src/struct-deserialize.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,mBAAmB,CAAC;AAC5C,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEzD,OAAO,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAElE,qBAAa,uBAAuB,CAChC,CAAC,SAAS,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CACtC,SAAQ,uBAAuB,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;gBAC9B,MAAM,EAAE,CAAC;CAK/B"}
@@ -1,4 +1,4 @@
1
- import { BufferedTransformStream } from './buffered-transform.js';
1
+ import { BufferedTransformStream } from "./buffered-transform.js";
2
2
  export class StructDeserializeStream extends BufferedTransformStream {
3
3
  constructor(struct) {
4
4
  super((stream) => {
@@ -1 +1 @@
1
- {"version":3,"file":"struct-deserialize.js","sourceRoot":"","sources":["../src/struct-deserialize.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAElE,MAAM,OAAO,uBACT,SAAQ,uBAA2C;IACnD,YAAmB,MAAS;QACxB,KAAK,CAAC,CAAC,MAAM,EAAE,EAAE;YACb,OAAO,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,CAAA;QACrC,CAAC,CAAC,CAAC;IACP,CAAC;CACJ"}
1
+ {"version":3,"file":"struct-deserialize.js","sourceRoot":"","sources":["../src/struct-deserialize.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAElE,MAAM,OAAO,uBAEX,SAAQ,uBAA2C;IACjD,YAAmB,MAAS;QACxB,KAAK,CAAC,CAAC,MAAM,EAAE,EAAE;YACb,OAAO,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QACtC,CAAC,CAAC,CAAC;IACP,CAAC;CACJ"}