@yume-chan/adb 0.0.12 → 0.0.13

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 (130) hide show
  1. package/CHANGELOG.json +18 -0
  2. package/CHANGELOG.md +10 -1
  3. package/README.md +24 -17
  4. package/esm/adb.d.ts +6 -6
  5. package/esm/adb.d.ts.map +1 -1
  6. package/esm/adb.js +77 -59
  7. package/esm/adb.js.map +1 -1
  8. package/esm/auth.d.ts +6 -6
  9. package/esm/auth.d.ts.map +1 -1
  10. package/esm/auth.js +8 -6
  11. package/esm/auth.js.map +1 -1
  12. package/esm/backend.d.ts +2 -2
  13. package/esm/commands/install.d.ts.map +1 -1
  14. package/esm/commands/install.js +5 -7
  15. package/esm/commands/install.js.map +1 -1
  16. package/esm/commands/reverse.d.ts +2 -2
  17. package/esm/commands/subprocess/index.d.ts +19 -20
  18. package/esm/commands/subprocess/index.d.ts.map +1 -1
  19. package/esm/commands/subprocess/index.js +36 -31
  20. package/esm/commands/subprocess/index.js.map +1 -1
  21. package/esm/commands/subprocess/legacy.d.ts +14 -7
  22. package/esm/commands/subprocess/legacy.d.ts.map +1 -1
  23. package/esm/commands/subprocess/legacy.js +14 -5
  24. package/esm/commands/subprocess/legacy.js.map +1 -1
  25. package/esm/commands/subprocess/protocol.d.ts +3 -2
  26. package/esm/commands/subprocess/protocol.d.ts.map +1 -1
  27. package/esm/commands/subprocess/protocol.js +6 -4
  28. package/esm/commands/subprocess/protocol.js.map +1 -1
  29. package/esm/commands/subprocess/protocols/index.d.ts +4 -0
  30. package/esm/commands/subprocess/protocols/index.d.ts.map +1 -0
  31. package/esm/commands/subprocess/protocols/index.js +4 -0
  32. package/esm/commands/subprocess/protocols/index.js.map +1 -0
  33. package/esm/commands/subprocess/protocols/none.d.ts +35 -0
  34. package/esm/commands/subprocess/protocols/none.d.ts.map +1 -0
  35. package/esm/commands/subprocess/protocols/none.js +53 -0
  36. package/esm/commands/subprocess/protocols/none.js.map +1 -0
  37. package/esm/commands/subprocess/protocols/shell.d.ts +39 -0
  38. package/esm/commands/subprocess/protocols/shell.d.ts.map +1 -0
  39. package/esm/commands/subprocess/protocols/shell.js +155 -0
  40. package/esm/commands/subprocess/protocols/shell.js.map +1 -0
  41. package/esm/commands/subprocess/protocols/types.d.ts +50 -0
  42. package/esm/commands/subprocess/protocols/types.d.ts.map +1 -0
  43. package/esm/commands/subprocess/protocols/types.js +2 -0
  44. package/esm/commands/subprocess/protocols/types.js.map +1 -0
  45. package/esm/commands/subprocess/types.d.ts +9 -6
  46. package/esm/commands/subprocess/types.d.ts.map +1 -1
  47. package/esm/commands/sync/list.d.ts +25 -1
  48. package/esm/commands/sync/list.d.ts.map +1 -1
  49. package/esm/commands/sync/list.js +40 -5
  50. package/esm/commands/sync/list.js.map +1 -1
  51. package/esm/commands/sync/request.d.ts +1 -0
  52. package/esm/commands/sync/request.d.ts.map +1 -1
  53. package/esm/commands/sync/request.js +1 -0
  54. package/esm/commands/sync/request.js.map +1 -1
  55. package/esm/commands/sync/response.d.ts +2 -1
  56. package/esm/commands/sync/response.d.ts.map +1 -1
  57. package/esm/commands/sync/response.js +2 -1
  58. package/esm/commands/sync/response.js.map +1 -1
  59. package/esm/commands/sync/stat.d.ts +13 -1
  60. package/esm/commands/sync/stat.d.ts.map +1 -1
  61. package/esm/commands/sync/stat.js +20 -7
  62. package/esm/commands/sync/stat.js.map +1 -1
  63. package/esm/commands/sync/sync.d.ts +13 -35
  64. package/esm/commands/sync/sync.d.ts.map +1 -1
  65. package/esm/commands/sync/sync.js +39 -9
  66. package/esm/commands/sync/sync.js.map +1 -1
  67. package/esm/crypto.d.ts +23 -10
  68. package/esm/crypto.d.ts.map +1 -1
  69. package/esm/crypto.js +64 -46
  70. package/esm/crypto.js.map +1 -1
  71. package/esm/features.d.ts +4 -2
  72. package/esm/features.d.ts.map +1 -1
  73. package/esm/features.js +6 -2
  74. package/esm/features.js.map +1 -1
  75. package/esm/packet.d.ts +21 -2
  76. package/esm/packet.d.ts.map +1 -1
  77. package/esm/packet.js +2 -2
  78. package/esm/packet.js.map +1 -1
  79. package/esm/socket/dispatcher.d.ts +15 -11
  80. package/esm/socket/dispatcher.d.ts.map +1 -1
  81. package/esm/socket/dispatcher.js +16 -19
  82. package/esm/socket/dispatcher.js.map +1 -1
  83. package/esm/socket/socket.d.ts +19 -7
  84. package/esm/socket/socket.d.ts.map +1 -1
  85. package/esm/socket/socket.js +20 -11
  86. package/esm/socket/socket.js.map +1 -1
  87. package/esm/stream/detect.d.ts +1 -17
  88. package/esm/stream/detect.d.ts.map +1 -1
  89. package/esm/stream/detect.js +4 -5
  90. package/esm/stream/detect.js.map +1 -1
  91. package/esm/stream/detect.polyfill.d.ts.map +1 -1
  92. package/esm/stream/detect.polyfill.js +4 -1
  93. package/esm/stream/detect.polyfill.js.map +1 -1
  94. package/esm/stream/transform.d.ts +23 -23
  95. package/esm/stream/transform.d.ts.map +1 -1
  96. package/esm/stream/transform.js +74 -24
  97. package/esm/stream/transform.js.map +1 -1
  98. package/esm/utils/encoding.d.ts.map +1 -1
  99. package/esm/utils/encoding.js.map +1 -1
  100. package/esm/utils/index.d.ts +1 -1
  101. package/esm/utils/index.d.ts.map +1 -1
  102. package/esm/utils/index.js +1 -1
  103. package/esm/utils/index.js.map +1 -1
  104. package/package.json +6 -6
  105. package/src/adb.ts +93 -70
  106. package/src/auth.ts +21 -18
  107. package/src/backend.ts +2 -2
  108. package/src/commands/install.ts +7 -9
  109. package/src/commands/reverse.ts +2 -2
  110. package/src/commands/subprocess/index.ts +57 -42
  111. package/src/commands/subprocess/protocols/index.ts +3 -0
  112. package/src/commands/subprocess/{legacy.ts → protocols/none.ts} +18 -8
  113. package/src/commands/subprocess/{protocol.ts → protocols/shell.ts} +22 -17
  114. package/src/commands/subprocess/{types.ts → protocols/types.ts} +13 -9
  115. package/src/commands/sync/list.ts +51 -5
  116. package/src/commands/sync/request.ts +1 -0
  117. package/src/commands/sync/response.ts +8 -2
  118. package/src/commands/sync/stat.ts +36 -9
  119. package/src/commands/sync/sync.ts +55 -19
  120. package/src/crypto.ts +72 -56
  121. package/src/features.ts +6 -2
  122. package/src/packet.ts +17 -6
  123. package/src/socket/dispatcher.ts +43 -29
  124. package/src/socket/socket.ts +29 -22
  125. package/src/stream/detect.polyfill.ts +4 -1
  126. package/src/stream/detect.ts +4 -24
  127. package/src/stream/transform.ts +96 -40
  128. package/src/utils/index.ts +1 -1
  129. package/tsconfig.build.tsbuildinfo +1 -1
  130. package/src/utils/encoding.ts +0 -13
@@ -3,7 +3,7 @@ import { AutoDisposable, EventEmitter } from '@yume-chan/event';
3
3
  import { AdbCommand, calculateChecksum } from '../packet.js';
4
4
  import { AbortController, WritableStream } from '../stream/index.js';
5
5
  import { decodeUtf8, encodeUtf8 } from '../utils/index.js';
6
- import { AdbSocket } from './socket.js';
6
+ import { AdbSocketController } from './socket.js';
7
7
  const EmptyUint8Array = new Uint8Array(0);
8
8
  export class AdbPacketDispatcher extends AutoDisposable {
9
9
  // ADB socket id starts from 1
@@ -11,18 +11,15 @@ export class AdbPacketDispatcher extends AutoDisposable {
11
11
  initializers = new AsyncOperationManager(1);
12
12
  sockets = new Map();
13
13
  _writer;
14
- maxPayloadSize = 0;
15
- calculateChecksum = true;
16
- appendNullToServiceString = true;
14
+ options;
17
15
  _disconnected = new PromiseResolver();
18
16
  get disconnected() { return this._disconnected.promise; }
19
17
  incomingSocketEvent = this.addDisposable(new EventEmitter());
20
18
  get onIncomingSocket() { return this.incomingSocketEvent.event; }
21
- errorEvent = this.addDisposable(new EventEmitter());
22
- get onError() { return this.errorEvent.event; }
23
19
  _abortController = new AbortController();
24
- constructor(connection) {
20
+ constructor(connection, options) {
25
21
  super();
22
+ this.options = options;
26
23
  connection.readable
27
24
  .pipeTo(new WritableStream({
28
25
  write: async (packet) => {
@@ -48,7 +45,6 @@ export class AdbPacketDispatcher extends AutoDisposable {
48
45
  }
49
46
  }
50
47
  catch (e) {
51
- this.errorEvent.fire(e);
52
48
  // Throw error here will stop the pipe
53
49
  // But won't close `readable` because of `preventCancel: true`
54
50
  throw e;
@@ -60,8 +56,8 @@ export class AdbPacketDispatcher extends AutoDisposable {
60
56
  })
61
57
  .then(() => {
62
58
  this.dispose();
63
- }, () => {
64
- // TODO: AdbPacketDispatcher: reject `_disconnected` when pipe errored?
59
+ }, (e) => {
60
+ this._disconnected.reject(e);
65
61
  this.dispose();
66
62
  });
67
63
  this._writer = connection.writable.getWriter();
@@ -114,7 +110,7 @@ export class AdbPacketDispatcher extends AutoDisposable {
114
110
  this.initializers.resolve(localId, undefined);
115
111
  const remoteId = packet.arg0;
116
112
  const serviceString = decodeUtf8(packet.payload);
117
- const socket = new AdbSocket({
113
+ const controller = new AdbSocketController({
118
114
  dispatcher: this,
119
115
  localId,
120
116
  remoteId,
@@ -125,11 +121,11 @@ export class AdbPacketDispatcher extends AutoDisposable {
125
121
  handled: false,
126
122
  packet,
127
123
  serviceString,
128
- socket,
124
+ socket: controller.socket,
129
125
  };
130
126
  this.incomingSocketEvent.fire(args);
131
127
  if (args.handled) {
132
- this.sockets.set(localId, socket);
128
+ this.sockets.set(localId, controller);
133
129
  await this.sendPacket(AdbCommand.OK, localId, remoteId);
134
130
  }
135
131
  else {
@@ -137,21 +133,22 @@ export class AdbPacketDispatcher extends AutoDisposable {
137
133
  }
138
134
  }
139
135
  async createSocket(serviceString) {
140
- if (this.appendNullToServiceString) {
136
+ if (this.options.appendNullToServiceString) {
141
137
  serviceString += '\0';
142
138
  }
143
139
  const [localId, initializer] = this.initializers.add();
144
140
  await this.sendPacket(AdbCommand.Open, localId, 0, serviceString);
141
+ // Fulfilled by `handleOk`
145
142
  const remoteId = await initializer;
146
- const socket = new AdbSocket({
143
+ const controller = new AdbSocketController({
147
144
  dispatcher: this,
148
145
  localId,
149
146
  remoteId,
150
147
  localCreated: true,
151
148
  serviceString,
152
149
  });
153
- this.sockets.set(localId, socket);
154
- return socket;
150
+ this.sockets.set(localId, controller);
151
+ return controller.socket;
155
152
  }
156
153
  async sendPacket(packetOrCommand, arg0, arg1, payload = EmptyUint8Array) {
157
154
  let init;
@@ -170,10 +167,10 @@ export class AdbPacketDispatcher extends AutoDisposable {
170
167
  };
171
168
  }
172
169
  if (init.payload &&
173
- init.payload.byteLength > this.maxPayloadSize) {
170
+ init.payload.byteLength > this.options.maxPayloadSize) {
174
171
  throw new Error('payload too large');
175
172
  }
176
- if (this.calculateChecksum) {
173
+ if (this.options.calculateChecksum) {
177
174
  calculateChecksum(init);
178
175
  }
179
176
  else {
@@ -1 +1 @@
1
- {"version":3,"file":"dispatcher.js","sourceRoot":"","sources":["../../src/socket/dispatcher.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"dispatcher.js","sourceRoot":"","sources":["../../src/socket/dispatcher.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { ReadableStream, WritableStream } from '../stream/index.js';
1
+ import { type ReadableStream, type ReadableWritablePair, type WritableStream } from '../stream/index.js';
2
2
  import type { AdbPacketDispatcher } from './dispatcher.js';
3
3
  export interface AdbSocketInfo {
4
4
  localId: number;
@@ -6,15 +6,11 @@ export interface AdbSocketInfo {
6
6
  localCreated: boolean;
7
7
  serviceString: string;
8
8
  }
9
- export interface AdbSocketConstructionOptions {
9
+ export interface AdbSocketConstructionOptions extends AdbSocketInfo {
10
10
  dispatcher: AdbPacketDispatcher;
11
- localId: number;
12
- remoteId: number;
13
- localCreated: boolean;
14
- serviceString: string;
15
11
  highWaterMark?: number | undefined;
16
12
  }
17
- export declare class AdbSocket implements AdbSocketInfo {
13
+ export declare class AdbSocketController implements AdbSocketInfo, ReadableWritablePair<Uint8Array, Uint8Array> {
18
14
  private readonly dispatcher;
19
15
  readonly localId: number;
20
16
  readonly remoteId: number;
@@ -28,7 +24,23 @@ export declare class AdbSocket implements AdbSocketInfo {
28
24
  readonly writable: WritableStream<Uint8Array>;
29
25
  private _closed;
30
26
  get closed(): boolean;
27
+ private _socket;
28
+ get socket(): AdbSocket;
31
29
  constructor(options: AdbSocketConstructionOptions);
30
+ enqueue(packet: Uint8Array): Promise<void>;
31
+ ack(): void;
32
+ close(): Promise<void>;
33
+ dispose(): void;
34
+ }
35
+ export declare class AdbSocket implements AdbSocketInfo, ReadableWritablePair<Uint8Array, Uint8Array> {
36
+ private _controller;
37
+ get localId(): number;
38
+ get remoteId(): number;
39
+ get localCreated(): boolean;
40
+ get serviceString(): string;
41
+ get readable(): ReadableStream<Uint8Array>;
42
+ get writable(): WritableStream<Uint8Array>;
43
+ constructor(controller: AdbSocketController);
32
44
  close(): Promise<void>;
33
45
  }
34
46
  //# sourceMappingURL=socket.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"socket.d.ts","sourceRoot":"","sources":["../../src/socket/socket.ts"],"names":[],"mappings":"AAEA,OAAO,EAA8C,cAAc,EAAE,cAAc,EAAqC,MAAM,oBAAoB,CAAC;AACnJ,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAE3D,MAAM,WAAW,aAAa;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IAEjB,YAAY,EAAE,OAAO,CAAC;IAEtB,aAAa,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,4BAA4B;IACzC,UAAU,EAAE,mBAAmB,CAAC;IAEhC,OAAO,EAAE,MAAM,CAAC;IAEhB,QAAQ,EAAE,MAAM,CAAC;IAEjB,YAAY,EAAE,OAAO,CAAC;IAEtB,aAAa,EAAE,MAAM,CAAC;IAEtB,aAAa,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CACtC;AAED,qBAAa,SAAU,YAAW,aAAa;IAC3C,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAuB;IAElD,SAAgB,OAAO,EAAG,MAAM,CAAC;IACjC,SAAgB,QAAQ,EAAG,MAAM,CAAC;IAClC,SAAgB,YAAY,EAAG,OAAO,CAAC;IACvC,SAAgB,aAAa,EAAG,MAAM,CAAC;IAEvC,OAAO,CAAC,QAAQ,CAA8C;IAE9D,OAAO,CAAC,SAAS,CAA6B;IAC9C,OAAO,CAAC,mBAAmB,CAA4C;IACvE,IAAW,QAAQ,+BAA6B;IAEhD,OAAO,CAAC,aAAa,CAAoC;IACzD,SAAgB,QAAQ,EAAE,cAAc,CAAC,UAAU,CAAC,CAAC;IAErD,OAAO,CAAC,OAAO,CAAS;IACxB,IAAW,MAAM,YAA2B;gBAEzB,OAAO,EAAE,4BAA4B;IAoD3C,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CA4BtC"}
1
+ {"version":3,"file":"socket.d.ts","sourceRoot":"","sources":["../../src/socket/socket.ts"],"names":[],"mappings":"AAEA,OAAO,EAAiF,KAAK,cAAc,EAAE,KAAK,oBAAoB,EAAE,KAAK,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACxL,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAE3D,MAAM,WAAW,aAAa;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IAEjB,YAAY,EAAE,OAAO,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,4BAA6B,SAAQ,aAAa;IAC/D,UAAU,EAAE,mBAAmB,CAAC;IAEhC,aAAa,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CACtC;AAED,qBAAa,mBAAoB,YAAW,aAAa,EAAE,oBAAoB,CAAC,UAAU,EAAE,UAAU,CAAC;IACnG,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAuB;IAElD,SAAgB,OAAO,EAAG,MAAM,CAAC;IACjC,SAAgB,QAAQ,EAAG,MAAM,CAAC;IAClC,SAAgB,YAAY,EAAG,OAAO,CAAC;IACvC,SAAgB,aAAa,EAAG,MAAM,CAAC;IAEvC,OAAO,CAAC,QAAQ,CAA8C;IAE9D,OAAO,CAAC,SAAS,CAA6B;IAC9C,OAAO,CAAC,mBAAmB,CAA4C;IACvE,IAAW,QAAQ,+BAA6B;IAEhD,OAAO,CAAC,aAAa,CAAoC;IACzD,SAAgB,QAAQ,EAAE,cAAc,CAAC,UAAU,CAAC,CAAC;IAErD,OAAO,CAAC,OAAO,CAAS;IACxB,IAAW,MAAM,YAA2B;IAE5C,OAAO,CAAC,OAAO,CAAY;IAC3B,IAAW,MAAM,cAA2B;gBAEzB,OAAO,EAAE,4BAA4B;IAwC3C,OAAO,CAAC,MAAM,EAAE,UAAU;IAIhC,GAAG;IAIG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAiB5B,OAAO;CAQjB;AAED,qBAAa,SAAU,YAAW,aAAa,EAAE,oBAAoB,CAAC,UAAU,EAAE,UAAU,CAAC;IACzF,OAAO,CAAC,WAAW,CAAsB;IAEzC,IAAW,OAAO,IAAI,MAAM,CAAqC;IACjE,IAAW,QAAQ,IAAI,MAAM,CAAsC;IACnE,IAAW,YAAY,IAAI,OAAO,CAA0C;IAC5E,IAAW,aAAa,IAAI,MAAM,CAA2C;IAE7E,IAAW,QAAQ,IAAI,cAAc,CAAC,UAAU,CAAC,CAAsC;IACvF,IAAW,QAAQ,IAAI,cAAc,CAAC,UAAU,CAAC,CAAsC;gBAEpE,UAAU,EAAE,mBAAmB;IAI3C,KAAK;CAGf"}
@@ -1,7 +1,7 @@
1
1
  import { PromiseResolver } from "@yume-chan/async";
2
2
  import { AdbCommand } from '../packet.js';
3
3
  import { ChunkStream, DuplexStreamFactory, pipeFrom } from '../stream/index.js';
4
- export class AdbSocket {
4
+ export class AdbSocketController {
5
5
  dispatcher;
6
6
  localId;
7
7
  remoteId;
@@ -15,6 +15,8 @@ export class AdbSocket {
15
15
  writable;
16
16
  _closed = false;
17
17
  get closed() { return this._closed; }
18
+ _socket;
19
+ get socket() { return this._socket; }
18
20
  constructor(options) {
19
21
  Object.assign(this, options);
20
22
  // Check this image to help you understand the stream graph
@@ -38,17 +40,12 @@ export class AdbSocket {
38
40
  await this.dispatcher.sendPacket(AdbCommand.Write, this.localId, this.remoteId, chunk);
39
41
  await this._writePromise.promise;
40
42
  },
41
- }), new ChunkStream(this.dispatcher.maxPayloadSize));
43
+ }), new ChunkStream(this.dispatcher.options.maxPayloadSize));
44
+ this._socket = new AdbSocket(this);
42
45
  }
43
- /**
44
- * @internal
45
- */
46
46
  async enqueue(packet) {
47
47
  await this._readableController.enqueue(packet);
48
48
  }
49
- /**
50
- * @internal
51
- */
52
49
  ack() {
53
50
  this._writePromise?.resolve();
54
51
  }
@@ -62,9 +59,6 @@ export class AdbSocket {
62
59
  await this.dispatcher.sendPacket(AdbCommand.Close, this.localId, this.remoteId);
63
60
  }
64
61
  }
65
- /**
66
- * @internal
67
- */
68
62
  dispose() {
69
63
  this._closed = true;
70
64
  this._factory.close();
@@ -72,4 +66,19 @@ export class AdbSocket {
72
66
  this.close();
73
67
  }
74
68
  }
69
+ export class AdbSocket {
70
+ _controller;
71
+ get localId() { return this._controller.localId; }
72
+ get remoteId() { return this._controller.remoteId; }
73
+ get localCreated() { return this._controller.localCreated; }
74
+ get serviceString() { return this._controller.serviceString; }
75
+ get readable() { return this._controller.readable; }
76
+ get writable() { return this._controller.writable; }
77
+ constructor(controller) {
78
+ this._controller = controller;
79
+ }
80
+ close() {
81
+ return this._controller.close();
82
+ }
83
+ }
75
84
  //# sourceMappingURL=socket.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"socket.js","sourceRoot":"","sources":["../../src/socket/socket.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"socket.js","sourceRoot":"","sources":["../../src/socket/socket.ts"],"names":[],"mappings":"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"}
@@ -1,18 +1,2 @@
1
- import type { AbortSignal } from "web-streams-polyfill";
2
- export * from 'web-streams-polyfill';
3
- /** A controller object that allows you to abort one or more DOM requests as and when desired. */
4
- export interface AbortController {
5
- /**
6
- * Returns the AbortSignal object associated with this object.
7
- */
8
- readonly signal: AbortSignal;
9
- /**
10
- * Invoking this method will set this object's AbortSignal's aborted flag and signal to any observers that the associated activity is to be aborted.
11
- */
12
- abort(): void;
13
- }
14
- export declare let AbortController: {
15
- prototype: AbortController;
16
- new (): AbortController;
17
- };
1
+ export * from './detect.polyfill.js';
18
2
  //# sourceMappingURL=detect.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"detect.d.ts","sourceRoot":"","sources":["../../src/stream/detect.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAExD,cAAc,sBAAsB,CAAC;AAErC,iGAAiG;AACjG,MAAM,WAAW,eAAe;IAC5B;;OAEG;IAEH,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;IAC7B;;OAEG;IACH,KAAK,IAAI,IAAI,CAAC;CACjB;AAED,eAAO,IAAI,eAAe,EAAE;IACxB,SAAS,EAAE,eAAe,CAAC;IAC3B,QAAO,eAAe,CAAC;CAC1B,CAAC"}
1
+ {"version":3,"file":"detect.d.ts","sourceRoot":"","sources":["../../src/stream/detect.ts"],"names":[],"mappings":"AAIA,cAAc,sBAAsB,CAAC"}
@@ -1,6 +1,5 @@
1
- // cspell: ignore ponyfill
2
- // TODO: import the ponyfill instead (as a library should do)
3
- export * from 'web-streams-polyfill';
4
- export let AbortController;
5
- ({ AbortController } = globalThis);
1
+ // cspell: ignore vercel
2
+ // Always use polyfilled version because
3
+ // Vercel doesn't support Node.js 16 (`streams/web` module) yet
4
+ export * from './detect.polyfill.js';
6
5
  //# sourceMappingURL=detect.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"detect.js","sourceRoot":"","sources":["../../src/stream/detect.ts"],"names":[],"mappings":"AAAA,0BAA0B;AAG1B,6DAA6D;AAC7D,cAAc,sBAAsB,CAAC;AAerC,MAAM,CAAC,IAAI,eAGV,CAAC;AAEF,CAAC,EAAE,eAAe,EAAE,GAAG,UAAiB,CAAC,CAAC"}
1
+ {"version":3,"file":"detect.js","sourceRoot":"","sources":["../../src/stream/detect.ts"],"names":[],"mappings":"AAAA,wBAAwB;AAExB,wCAAwC;AACxC,+DAA+D;AAC/D,cAAc,sBAAsB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"detect.polyfill.d.ts","sourceRoot":"","sources":["../../src/stream/detect.polyfill.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAExD,cAAc,sBAAsB,CAAC;AAErC,iGAAiG;AACjG,MAAM,WAAW,eAAe;IAC5B;;OAEG;IAEH,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;IAC7B;;OAEG;IACH,KAAK,IAAI,IAAI,CAAC;CACjB;AAED,eAAO,IAAI,eAAe,EAAE;IACxB,SAAS,EAAE,eAAe,CAAC;IAC3B,QAAO,eAAe,CAAC;CAC1B,CAAC"}
1
+ {"version":3,"file":"detect.polyfill.d.ts","sourceRoot":"","sources":["../../src/stream/detect.polyfill.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAKxD,cAAc,sBAAsB,CAAC;AAErC,iGAAiG;AACjG,MAAM,WAAW,eAAe;IAC5B;;OAEG;IAEH,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;IAC7B;;OAEG;IACH,KAAK,IAAI,IAAI,CAAC;CACjB;AAED,eAAO,IAAI,eAAe,EAAE;IACxB,SAAS,EAAE,eAAe,CAAC;IAC3B,QAAO,eAAe,CAAC;CAC1B,CAAC"}
@@ -1,5 +1,8 @@
1
1
  // cspell: ignore ponyfill
2
- // TODO: import the ponyfill instead (as a library should do)
2
+ // TODO: Upgrade to `web-streams-polyfill@4.0.0-beta.2` once released.
3
+ // `web-streams-polyfill@4.0.0-beta.1` changed the default export to ponyfill,
4
+ // But it forgot to include `type` export so it's unusable.
5
+ // See https://github.com/MattiasBuelens/web-streams-polyfill/pull/107
3
6
  export * from 'web-streams-polyfill';
4
7
  export let AbortController;
5
8
  ({ AbortController } = globalThis);
@@ -1 +1 @@
1
- {"version":3,"file":"detect.polyfill.js","sourceRoot":"","sources":["../../src/stream/detect.polyfill.ts"],"names":[],"mappings":"AAAA,0BAA0B;AAG1B,6DAA6D;AAC7D,cAAc,sBAAsB,CAAC;AAerC,MAAM,CAAC,IAAI,eAGV,CAAC;AAEF,CAAC,EAAE,eAAe,EAAE,GAAG,UAAiB,CAAC,CAAC"}
1
+ {"version":3,"file":"detect.polyfill.js","sourceRoot":"","sources":["../../src/stream/detect.polyfill.ts"],"names":[],"mappings":"AAAA,0BAA0B;AAG1B,sEAAsE;AACtE,8EAA8E;AAC9E,2DAA2D;AAC3D,sEAAsE;AACtE,cAAc,sBAAsB,CAAC;AAerC,MAAM,CAAC,IAAI,eAGV,CAAC;AAEF,CAAC,EAAE,eAAe,EAAE,GAAG,UAAiB,CAAC,CAAC"}
@@ -1,10 +1,16 @@
1
1
  import type Struct from "@yume-chan/struct";
2
- import type { StructValueType } from "@yume-chan/struct";
2
+ import type { StructValueType, ValueOrPromise } from "@yume-chan/struct";
3
3
  import { AbortSignal, ReadableStream, TransformStream, WritableStream, type QueuingStrategy, type ReadableWritablePair, type UnderlyingSink, type UnderlyingSource } from "./detect.js";
4
4
  export interface DuplexStreamFactoryOptions {
5
5
  preventCloseReadableStreams?: boolean | undefined;
6
6
  close?: (() => void | Promise<void>) | undefined;
7
7
  }
8
+ /**
9
+ * A factory for creating a duplex stream.
10
+ *
11
+ * It can create multiple `ReadableStream`s and `WritableStream`s,
12
+ * when any of them is closed, all other streams will be closed as well.
13
+ */
8
14
  export declare class DuplexStreamFactory<R, W> {
9
15
  private readableControllers;
10
16
  private pushReadableControllers;
@@ -15,7 +21,7 @@ export declare class DuplexStreamFactory<R, W> {
15
21
  private _writableClosed;
16
22
  constructor(options?: DuplexStreamFactoryOptions);
17
23
  createPushReadable(source: PushReadableStreamSource<R>, strategy?: QueuingStrategy<R>): PushReadableStream<R>;
18
- createWrapReadable(readable: ReadableStream<R>): WrapReadableStream<R, ReadableStream<R>, void>;
24
+ createWrapReadable(wrapper: ReadableStream<R> | WrapReadableStreamStart<R> | ReadableStreamWrapper<R>): WrapReadableStream<R>;
19
25
  createReadable(source?: UnderlyingSource<R>, strategy?: QueuingStrategy<R>): ReadableStream<R>;
20
26
  createWritable(sink: UnderlyingSink<W>, strategy?: QueuingStrategy<W>): WritableStream<W>;
21
27
  closeReadableStreams(): Promise<void>;
@@ -24,7 +30,7 @@ export declare class DuplexStreamFactory<R, W> {
24
30
  export declare class DecodeUtf8Stream extends TransformStream<Uint8Array, string> {
25
31
  constructor();
26
32
  }
27
- export declare class GatherStringStream extends TransformStream<string, string> {
33
+ export declare class GatherStringStream extends WritableStream<string> {
28
34
  private _result;
29
35
  get result(): string;
30
36
  constructor();
@@ -39,31 +45,25 @@ export declare class StructDeserializeStream<T extends Struct<any, any, any, any
39
45
  export declare class StructSerializeStream<T extends Struct<any, any, any, any>> extends TransformStream<T['TInit'], Uint8Array> {
40
46
  constructor(struct: T);
41
47
  }
42
- export interface WritableStreamWrapper<T, W extends WritableStream<T>, S> {
43
- start(): Promise<{
44
- writable: W;
45
- state: S;
46
- }>;
47
- close?(state: S): Promise<void>;
48
+ export declare type WrapWritableStreamStart<T> = () => ValueOrPromise<WritableStream<T>>;
49
+ export interface WritableStreamWrapper<T> {
50
+ start: WrapWritableStreamStart<T>;
51
+ close?(): Promise<void>;
48
52
  }
49
- export declare class WrapWritableStream<T, W extends WritableStream<T>, S> extends WritableStream<T> {
50
- writable: W;
53
+ export declare class WrapWritableStream<T> extends WritableStream<T> {
54
+ writable: WritableStream<T>;
51
55
  private writer;
52
- private state;
53
- constructor(wrapper: WritableStreamWrapper<T, W, S>);
56
+ constructor(wrapper: WritableStream<T> | WrapWritableStreamStart<T> | WritableStreamWrapper<T>);
54
57
  }
55
- export interface ReadableStreamWrapper<T, R extends ReadableStream<T>, S> {
56
- start(): Promise<{
57
- readable: R;
58
- state: S;
59
- }>;
60
- close?(state: S): Promise<void>;
58
+ export declare type WrapReadableStreamStart<T> = () => ValueOrPromise<ReadableStream<T>>;
59
+ export interface ReadableStreamWrapper<T> {
60
+ start: WrapReadableStreamStart<T>;
61
+ close?(): Promise<void>;
61
62
  }
62
- export declare class WrapReadableStream<T, R extends ReadableStream<T>, S> extends ReadableStream<T> {
63
- readable: R;
63
+ export declare class WrapReadableStream<T> extends ReadableStream<T> {
64
+ readable: ReadableStream<T>;
64
65
  private reader;
65
- private state;
66
- constructor(wrapper: ReadableStreamWrapper<T, R, S>);
66
+ constructor(wrapper: ReadableStream<T> | WrapReadableStreamStart<T> | ReadableStreamWrapper<T>);
67
67
  }
68
68
  export declare class ChunkStream extends TransformStream<Uint8Array, Uint8Array> {
69
69
  constructor(size: number);
@@ -1 +1 @@
1
- {"version":3,"file":"transform.d.ts","sourceRoot":"","sources":["../../src/stream/transform.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,MAAM,mBAAmB,CAAC;AAC5C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAGzD,OAAO,EAAmB,WAAW,EAAE,cAAc,EAA+B,eAAe,EAAE,cAAc,EAA+B,KAAK,eAAe,EAAwC,KAAK,oBAAoB,EAAE,KAAK,cAAc,EAAE,KAAK,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAEzS,MAAM,WAAW,0BAA0B;IACvC,2BAA2B,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAElD,KAAK,CAAC,EAAE,CAAC,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,SAAS,CAAC;CACpD;AAED,qBAAa,mBAAmB,CAAC,CAAC,EAAE,CAAC;IACjC,OAAO,CAAC,mBAAmB,CAA4C;IACvE,OAAO,CAAC,uBAAuB,CAAyC;IAExE,OAAO,CAAC,OAAO,CAA+B;IAC9C,IAAW,MAAM,kBAAmC;IAEpD,OAAO,CAAC,OAAO,CAA6B;IAE5C,OAAO,CAAC,yBAAyB,CAAS;IAC1C,OAAO,CAAC,eAAe,CAAS;gBAEb,OAAO,CAAC,EAAE,0BAA0B;IAIhD,kBAAkB,CAAC,MAAM,EAAE,wBAAwB,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,EAAE,eAAe,CAAC,CAAC,CAAC,GAAG,kBAAkB,CAAC,CAAC,CAAC;IA4B7G,kBAAkB,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC,CAAC,GAAG,kBAAkB,CAAC,CAAC,EAAE,cAAc,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC;IAe/F,cAAc,CAAC,MAAM,CAAC,EAAE,gBAAgB,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,EAAE,eAAe,CAAC,CAAC,CAAC,GAAG,cAAc,CAAC,CAAC,CAAC;IAiB9F,cAAc,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,EAAE,eAAe,CAAC,CAAC,CAAC,GAAG,cAAc,CAAC,CAAC,CAAC;IAuBnF,oBAAoB;IAiBpB,KAAK;CAQrB;AAED,qBAAa,gBAAiB,SAAQ,eAAe,CAAC,UAAU,EAAE,MAAM,CAAC;;CAQxE;AAED,qBAAa,kBAAmB,SAAQ,eAAe,CAAC,MAAM,EAAE,MAAM,CAAC;IAEnE,OAAO,CAAC,OAAO,CAAM;IACrB,IAAW,MAAM,WAA2B;;CAS/C;AAGD,qBAAa,uBAAuB,CAAC,CAAC,SAAS,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CACrE,YAAW,oBAAoB,CAAC,UAAU,EAAE,eAAe,CAAC,CAAC,CAAC,CAAC;IAC/D,OAAO,CAAC,SAAS,CAAqC;IACtD,IAAW,QAAQ,0DAA6B;IAEhD,OAAO,CAAC,SAAS,CAA6B;IAC9C,IAAW,QAAQ,+BAA6B;gBAE7B,MAAM,EAAE,CAAC;CAoC/B;AAED,qBAAa,qBAAqB,CAAC,CAAC,SAAS,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CACnE,SAAQ,eAAe,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,UAAU,CAAC;gBACnC,MAAM,EAAE,CAAC;CAOxB;AAED,MAAM,WAAW,qBAAqB,CAAC,CAAC,EAAE,CAAC,SAAS,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC;IACpE,KAAK,IAAI,OAAO,CAAC;QAAE,QAAQ,EAAE,CAAC,CAAC;QAAC,KAAK,EAAE,CAAC,CAAC;KAAE,CAAC,CAAC;IAC7C,KAAK,CAAC,CAAC,KAAK,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACnC;AAED,qBAAa,kBAAkB,CAAC,CAAC,EAAE,CAAC,SAAS,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC,CAAE,SAAQ,cAAc,CAAC,CAAC,CAAC;IACjF,QAAQ,EAAG,CAAC,CAAC;IAEpB,OAAO,CAAC,MAAM,CAAkC;IAEhD,OAAO,CAAC,KAAK,CAAK;gBAEC,OAAO,EAAE,qBAAqB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;CAuB7D;AAED,MAAM,WAAW,qBAAqB,CAAC,CAAC,EAAE,CAAC,SAAS,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC;IACpE,KAAK,IAAI,OAAO,CAAC;QAAE,QAAQ,EAAE,CAAC,CAAC;QAAC,KAAK,EAAE,CAAC,CAAC;KAAE,CAAC,CAAC;IAC7C,KAAK,CAAC,CAAC,KAAK,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACnC;AAED,qBAAa,kBAAkB,CAAC,CAAC,EAAE,CAAC,SAAS,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC,CAAE,SAAQ,cAAc,CAAC,CAAC,CAAC;IACjF,QAAQ,EAAG,CAAC,CAAC;IAEpB,OAAO,CAAC,MAAM,CAAkC;IAEhD,OAAO,CAAC,KAAK,CAAK;gBAEC,OAAO,EAAE,qBAAqB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;CAuB7D;AAED,qBAAa,WAAY,SAAQ,eAAe,CAAC,UAAU,EAAE,UAAU,CAAC;gBACjD,IAAI,EAAE,MAAM;CAWlC;AAkBD,qBAAa,eAAgB,SAAQ,eAAe,CAAC,MAAM,EAAE,MAAM,CAAC;;CAUnE;AAED;;;;;;;;;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;AAED,qBAAa,aAAa,CAAC,CAAC,CAAE,SAAQ,eAAe,CAAC,CAAC,EAAE,CAAC,CAAC;gBAC3C,QAAQ,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,IAAI;CAQ3C;AAED,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;CAuCxF"}
1
+ {"version":3,"file":"transform.d.ts","sourceRoot":"","sources":["../../src/stream/transform.ts"],"names":[],"mappings":"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"}
@@ -2,6 +2,12 @@ import { PromiseResolver } from "@yume-chan/async";
2
2
  import { decodeUtf8 } from "../utils/index.js";
3
3
  import { BufferedStream, BufferedStreamEndedError } from "./buffered.js";
4
4
  import { AbortController, ReadableStream, TransformStream, WritableStream } from "./detect.js";
5
+ /**
6
+ * A factory for creating a duplex stream.
7
+ *
8
+ * It can create multiple `ReadableStream`s and `WritableStream`s,
9
+ * when any of them is closed, all other streams will be closed as well.
10
+ */
5
11
  export class DuplexStreamFactory {
6
12
  readableControllers = [];
7
13
  pushReadableControllers = [];
@@ -26,6 +32,8 @@ export class DuplexStreamFactory {
26
32
  await controller.enqueue(chunk);
27
33
  },
28
34
  close: async () => {
35
+ // The source signals stream ended,
36
+ // usually means the other end closed the connection first.
29
37
  controller.close();
30
38
  this._closeRequestedByReadable = true;
31
39
  await this.close();
@@ -39,15 +47,15 @@ export class DuplexStreamFactory {
39
47
  }, strategy);
40
48
  }
41
49
  ;
42
- createWrapReadable(readable) {
50
+ createWrapReadable(wrapper) {
43
51
  return new WrapReadableStream({
44
52
  async start() {
45
- return {
46
- readable,
47
- state: undefined,
48
- };
53
+ return getWrappedReadableStream(wrapper);
49
54
  },
50
55
  close: async () => {
56
+ if ('close' in wrapper) {
57
+ await wrapper.close?.();
58
+ }
51
59
  this._closeRequestedByReadable = true;
52
60
  await this.close();
53
61
  },
@@ -123,19 +131,19 @@ export class DecodeUtf8Stream extends TransformStream {
123
131
  });
124
132
  }
125
133
  }
126
- export class GatherStringStream extends TransformStream {
134
+ export class GatherStringStream extends WritableStream {
127
135
  // Optimization: rope (concat strings) is faster than `[].join('')`
128
136
  _result = '';
129
137
  get result() { return this._result; }
130
138
  constructor() {
131
139
  super({
132
- transform: (chunk) => {
140
+ write: (chunk) => {
133
141
  this._result += chunk;
134
142
  },
135
143
  });
136
144
  }
137
145
  }
138
- // TODO: Find other ways to implement `StructTransformStream`
146
+ // TODO: StructTransformStream: Looking for better implementation
139
147
  export class StructDeserializeStream {
140
148
  _readable;
141
149
  get readable() { return this._readable; }
@@ -182,17 +190,32 @@ export class StructSerializeStream extends TransformStream {
182
190
  });
183
191
  }
184
192
  }
193
+ async function getWrappedWritableStream(wrapper) {
194
+ if ('start' in wrapper) {
195
+ return await wrapper.start();
196
+ }
197
+ else if (typeof wrapper === 'function') {
198
+ return await wrapper();
199
+ }
200
+ else {
201
+ // Can't use `wrapper instanceof WritableStream`
202
+ // Because we want to be compatible with any WritableStream-like objects
203
+ return wrapper;
204
+ }
205
+ }
185
206
  export class WrapWritableStream extends WritableStream {
186
207
  writable;
187
208
  writer;
188
- state;
189
209
  constructor(wrapper) {
190
210
  super({
191
211
  start: async () => {
192
- const { writable, state } = await wrapper.start();
193
- this.writable = writable;
194
- this.writer = writable.getWriter();
195
- this.state = state;
212
+ // `start` is invoked before `ReadableStream`'s constructor finish,
213
+ // so using `this` synchronously causes
214
+ // "Must call super constructor in derived class before accessing 'this' or returning from derived constructor".
215
+ // Queue a microtask to avoid this.
216
+ await Promise.resolve();
217
+ this.writable = await getWrappedWritableStream(wrapper);
218
+ this.writer = this.writable.getWriter();
196
219
  },
197
220
  write: async (chunk) => {
198
221
  // Maintain back pressure
@@ -201,36 +224,63 @@ export class WrapWritableStream extends WritableStream {
201
224
  },
202
225
  abort: async (reason) => {
203
226
  await this.writer.abort(reason);
204
- wrapper.close?.(this.state);
227
+ if ('close' in wrapper) {
228
+ await wrapper.close?.();
229
+ }
205
230
  },
206
231
  close: async () => {
232
+ // Close the inner stream first.
233
+ // Usually the inner stream is a logical sub-stream over the outer stream,
234
+ // closing the outer stream first will make the inner stream incapable of
235
+ // sending data in its `close` handler.
207
236
  await this.writer.close();
208
- await wrapper.close?.(this.state);
237
+ if ('close' in wrapper) {
238
+ await wrapper.close?.();
239
+ }
209
240
  },
210
241
  });
211
242
  }
212
243
  }
244
+ function getWrappedReadableStream(wrapper) {
245
+ if ('start' in wrapper) {
246
+ return wrapper.start();
247
+ }
248
+ else if (typeof wrapper === 'function') {
249
+ return wrapper();
250
+ }
251
+ else {
252
+ // Can't use `wrapper instanceof ReadableStream`
253
+ // Because we want to be compatible with any ReadableStream-like objects
254
+ return wrapper;
255
+ }
256
+ }
213
257
  export class WrapReadableStream extends ReadableStream {
214
258
  readable;
215
259
  reader;
216
- state;
217
260
  constructor(wrapper) {
218
261
  super({
219
262
  start: async () => {
220
- const { readable, state } = await wrapper.start();
221
- this.readable = readable;
222
- this.reader = readable.getReader();
223
- this.state = state;
263
+ // `start` is invoked before `ReadableStream`'s constructor finish,
264
+ // so using `this` synchronously causes
265
+ // "Must call super constructor in derived class before accessing 'this' or returning from derived constructor".
266
+ // Queue a microtask to avoid this.
267
+ await Promise.resolve();
268
+ this.readable = await getWrappedReadableStream(wrapper);
269
+ this.reader = this.readable.getReader();
224
270
  },
225
271
  cancel: async (reason) => {
226
272
  await this.reader.cancel(reason);
227
- wrapper.close?.(this.state);
273
+ if ('close' in wrapper) {
274
+ await wrapper.close?.();
275
+ }
228
276
  },
229
277
  pull: async (controller) => {
230
278
  const result = await this.reader.read();
231
279
  if (result.done) {
232
- wrapper.close?.(this.state);
233
280
  controller.close();
281
+ if ('close' in wrapper) {
282
+ await wrapper.close?.();
283
+ }
234
284
  }
235
285
  else {
236
286
  controller.enqueue(result.value);
@@ -319,7 +369,7 @@ export class PushReadableStream extends ReadableStream {
319
369
  source({
320
370
  abortSignal: canceled.signal,
321
371
  async enqueue(chunk) {
322
- // Only when the stream in errored, `desiredSize` will be `null`.
372
+ // Only when the stream is errored, `desiredSize` will be `null`.
323
373
  // But since `null <= 0` is `true`
324
374
  // (`null <= 0` is evaluated as `!(null > 0)` => `!false` => `true`),
325
375
  // not handling it will cause a deadlock.
@@ -343,8 +393,8 @@ export class PushReadableStream extends ReadableStream {
343
393
  waterMarkLow?.resolve();
344
394
  },
345
395
  cancel: async (reason) => {
346
- waterMarkLow?.reject(reason);
347
396
  canceled.abort();
397
+ waterMarkLow?.reject(reason);
348
398
  },
349
399
  }, strategy);
350
400
  }