happy-dom 13.7.0 → 13.7.1

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.

Potentially problematic release.


This version of happy-dom might be problematic. Click here for more details.

Files changed (45) hide show
  1. package/cjs/PropertySymbol.cjs +2 -1
  2. package/cjs/PropertySymbol.cjs.map +1 -1
  3. package/cjs/PropertySymbol.d.ts +1 -0
  4. package/cjs/PropertySymbol.d.ts.map +1 -1
  5. package/cjs/config/IHTMLElementTagNameMap.d.ts.map +1 -1
  6. package/cjs/fetch/Fetch.cjs +7 -31
  7. package/cjs/fetch/Fetch.cjs.map +1 -1
  8. package/cjs/fetch/Fetch.d.ts +0 -10
  9. package/cjs/fetch/Fetch.d.ts.map +1 -1
  10. package/cjs/fetch/Response.cjs +2 -6
  11. package/cjs/fetch/Response.cjs.map +1 -1
  12. package/cjs/fetch/Response.d.ts.map +1 -1
  13. package/cjs/fetch/utilities/FetchBodyUtility.cjs +62 -19
  14. package/cjs/fetch/utilities/FetchBodyUtility.cjs.map +1 -1
  15. package/cjs/fetch/utilities/FetchBodyUtility.d.ts +24 -12
  16. package/cjs/fetch/utilities/FetchBodyUtility.d.ts.map +1 -1
  17. package/cjs/location/Location.cjs.map +1 -1
  18. package/cjs/location/Location.d.ts.map +1 -1
  19. package/cjs/version.cjs +1 -1
  20. package/lib/PropertySymbol.d.ts +1 -0
  21. package/lib/PropertySymbol.d.ts.map +1 -1
  22. package/lib/PropertySymbol.js +1 -0
  23. package/lib/PropertySymbol.js.map +1 -1
  24. package/lib/config/IHTMLElementTagNameMap.d.ts.map +1 -1
  25. package/lib/fetch/Fetch.d.ts +0 -10
  26. package/lib/fetch/Fetch.d.ts.map +1 -1
  27. package/lib/fetch/Fetch.js +7 -31
  28. package/lib/fetch/Fetch.js.map +1 -1
  29. package/lib/fetch/Response.d.ts.map +1 -1
  30. package/lib/fetch/Response.js +2 -6
  31. package/lib/fetch/Response.js.map +1 -1
  32. package/lib/fetch/utilities/FetchBodyUtility.d.ts +24 -12
  33. package/lib/fetch/utilities/FetchBodyUtility.d.ts.map +1 -1
  34. package/lib/fetch/utilities/FetchBodyUtility.js +62 -19
  35. package/lib/fetch/utilities/FetchBodyUtility.js.map +1 -1
  36. package/lib/location/Location.d.ts.map +1 -1
  37. package/lib/location/Location.js.map +1 -1
  38. package/lib/version.js +1 -1
  39. package/package.json +1 -1
  40. package/src/PropertySymbol.ts +1 -0
  41. package/src/config/IHTMLElementTagNameMap.ts +4 -1
  42. package/src/fetch/Fetch.ts +25 -34
  43. package/src/fetch/Response.ts +3 -6
  44. package/src/fetch/utilities/FetchBodyUtility.ts +67 -20
  45. package/src/location/Location.ts +1 -1
@@ -7,27 +7,11 @@ import Blob from '../../file/Blob.js';
7
7
  import DOMException from '../../exception/DOMException.js';
8
8
  import DOMExceptionNameEnum from '../../exception/DOMExceptionNameEnum.js';
9
9
  import { Buffer } from 'buffer';
10
+ import Stream from 'stream';
10
11
  /**
11
12
  * Fetch body utility.
12
13
  */
13
14
  export default class FetchBodyUtility {
14
- /**
15
- * Wraps a given value in a browser ReadableStream.
16
- *
17
- * This method creates a ReadableStream and immediately enqueues and closes it
18
- * with the provided value, useful for stream API compatibility.
19
- *
20
- * @param value The value to be wrapped in a ReadableStream.
21
- * @returns ReadableStream
22
- */
23
- static toReadableStream(value) {
24
- return new ReadableStream({
25
- start(controller) {
26
- controller.enqueue(value);
27
- controller.close();
28
- }
29
- });
30
- }
31
15
  /**
32
16
  * Parses body and returns stream and type.
33
17
  *
@@ -111,15 +95,31 @@ export default class FetchBodyUtility {
111
95
  * It creates a pass through stream and pipes the original stream to it.
112
96
  *
113
97
  * @param requestOrResponse Request or Response.
114
- * @param requestOrResponse.body
115
- * @param requestOrResponse.bodyUsed
98
+ * @param requestOrResponse.body Body.
99
+ * @param requestOrResponse.bodyUsed Body used.
116
100
  * @returns New stream.
117
101
  */
118
102
  static cloneBodyStream(requestOrResponse) {
119
103
  if (requestOrResponse.bodyUsed) {
120
104
  throw new DOMException(`Failed to clone body stream of request: Request body is already used.`, DOMExceptionNameEnum.invalidStateError);
121
105
  }
106
+ // If a buffer is set, use it to create a new stream.
107
+ if (requestOrResponse[PropertySymbol.buffer]) {
108
+ return this.toReadableStream(requestOrResponse[PropertySymbol.buffer]);
109
+ }
110
+ // Pipe underlying node stream if it exists.
111
+ if (requestOrResponse.body[PropertySymbol.nodeStream]) {
112
+ const stream1 = new Stream.PassThrough();
113
+ const stream2 = new Stream.PassThrough();
114
+ requestOrResponse.body[PropertySymbol.nodeStream].pipe(stream1);
115
+ requestOrResponse.body[PropertySymbol.nodeStream].pipe(stream2);
116
+ // Sets the body of the cloned request/response to the first pass through stream.
117
+ requestOrResponse.body = this.nodeToWebStream(stream1);
118
+ // Returns the clone.
119
+ return this.nodeToWebStream(stream2);
120
+ }
122
121
  // Uses the tee() method to clone the ReadableStream
122
+ // This requires the stream to be consumed in parallel which is not the case for the fetch API
123
123
  const [stream1, stream2] = requestOrResponse.body.tee();
124
124
  // Sets the body of the cloned request to the first pass through stream.
125
125
  // TODO: check id this is required as request should be read only object
@@ -175,5 +175,48 @@ export default class FetchBodyUtility {
175
175
  throw new DOMException(`Could not create Buffer from response body. Error: ${error.message}.`, DOMExceptionNameEnum.invalidStateError);
176
176
  }
177
177
  }
178
+ /**
179
+ * Wraps a given value in a browser ReadableStream.
180
+ *
181
+ * This method creates a ReadableStream and immediately enqueues and closes it
182
+ * with the provided value, useful for stream API compatibility.
183
+ *
184
+ * @param value The value to be wrapped in a ReadableStream.
185
+ * @returns ReadableStream
186
+ */
187
+ static toReadableStream(value) {
188
+ return new ReadableStream({
189
+ start(controller) {
190
+ controller.enqueue(value);
191
+ controller.close();
192
+ }
193
+ });
194
+ }
195
+ /**
196
+ * Wraps a Node.js stream into a browser-compatible ReadableStream.
197
+ *
198
+ * Enables the use of Node.js streams where browser ReadableStreams are required.
199
+ * Handles 'data', 'end', and 'error' events from the Node.js stream.
200
+ *
201
+ * @param nodeStream The Node.js stream to be converted.
202
+ * @returns ReadableStream
203
+ */
204
+ static nodeToWebStream(nodeStream) {
205
+ const readableStream = new ReadableStream({
206
+ start(controller) {
207
+ nodeStream.on('data', (chunk) => {
208
+ controller.enqueue(chunk);
209
+ });
210
+ nodeStream.on('end', () => {
211
+ controller.close();
212
+ });
213
+ nodeStream.on('error', (err) => {
214
+ controller.error(err);
215
+ });
216
+ }
217
+ });
218
+ readableStream[PropertySymbol.nodeStream] = nodeStream;
219
+ return readableStream;
220
+ }
178
221
  }
179
222
  //# sourceMappingURL=FetchBodyUtility.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"FetchBodyUtility.js","sourceRoot":"","sources":["../../../src/fetch/utilities/FetchBodyUtility.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"FetchBodyUtility.js","sourceRoot":"","sources":["../../../src/fetch/utilities/FetchBodyUtility.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"Location.d.ts","sourceRoot":"","sources":["../../src/location/Location.ts"],"names":[],"mappings":"AAAA,OAAO,aAAa,MAAM,mCAAmC,CAAC;AAE9D,OAAO,KAAK,cAAc,MAAM,sBAAsB,CAAC;AAGvD;;GAEG;AACH,MAAM,CAAC,OAAO,OAAO,QAAQ;;IAErB,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE,MAAM,CAAc;IAMjD;;;;;OAKG;gBACS,YAAY,EAAE,aAAa,EAAE,GAAG,EAAE,MAAM;IAKpD;;;;OAIG;IACH,IAAW,IAAI,IAAI,MAAM,CAExB;IAED;;;;OAIG;IACH,IAAW,IAAI,CAAC,IAAI,EAAE,MAAM,EAS3B;IAED;;;;OAIG;IACH,IAAW,IAAI,IAAI,MAAM,CAExB;IAED;;;;OAIG;IACH,IAAW,IAAI,CAAC,IAAI,EAAE,MAAM,EAM3B;IAED;;;;OAIG;IACH,IAAW,QAAQ,IAAI,MAAM,CAE5B;IAED;;;;OAIG;IACH,IAAW,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAMnC;IAED;;OAEG;IACH,IAAW,IAAI,IAAI,MAAM,CAExB;IAED;;OAEG;IACH,IAAW,IAAI,CAAC,GAAG,EAAE,MAAM,EAE1B;IAED;;;;OAIG;IACH,IAAW,MAAM,IAAI,MAAM,CAE1B;IAED;;;;OAIG;IACH,IAAW,QAAQ,IAAI,MAAM,CAE5B;IAED;;;;OAIG;IACH,IAAW,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAMnC;IAED;;;;OAIG;IACH,IAAW,IAAI,IAAI,MAAM,CAExB;IAED;;;;OAIG;IACH,IAAW,IAAI,CAAC,IAAI,EAAE,MAAM,EAM3B;IAED;;;;OAIG;IACH,IAAW,QAAQ,IAAI,MAAM,CAE5B;IAED;;;;OAIG;IACH,IAAW,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAMnC;IAED;;;;OAIG;IACH,IAAW,MAAM,IAAI,MAAM,CAE1B;IAED;;;;OAIG;IACH,IAAW,MAAM,CAAC,MAAM,EAAE,MAAM,EAM/B;IAED;;;;OAIG;IACI,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAIjC;;;;OAIG;IACI,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAIhC;;OAEG;IACI,MAAM,IAAI,IAAI;IAMrB;;;;;OAKG;IACI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,YAAY,EAAE,aAAa,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI;IAQ9E;;;;OAIG;IACI,QAAQ,IAAI,MAAM;CAGzB"}
1
+ {"version":3,"file":"Location.d.ts","sourceRoot":"","sources":["../../src/location/Location.ts"],"names":[],"mappings":"AAAA,OAAO,aAAa,MAAM,mCAAmC,CAAC;AAE9D,OAAO,KAAK,cAAc,MAAM,sBAAsB,CAAC;AAGvD;;GAEG;AACH,MAAM,CAAC,OAAO,OAAO,QAAQ;;IAErB,CAAC,MAAM,CAAC,WAAW,CAAC,SAAc;IAMzC;;;;;OAKG;gBACS,YAAY,EAAE,aAAa,EAAE,GAAG,EAAE,MAAM;IAKpD;;;;OAIG;IACH,IAAW,IAAI,IAAI,MAAM,CAExB;IAED;;;;OAIG;IACH,IAAW,IAAI,CAAC,IAAI,EAAE,MAAM,EAS3B;IAED;;;;OAIG;IACH,IAAW,IAAI,IAAI,MAAM,CAExB;IAED;;;;OAIG;IACH,IAAW,IAAI,CAAC,IAAI,EAAE,MAAM,EAM3B;IAED;;;;OAIG;IACH,IAAW,QAAQ,IAAI,MAAM,CAE5B;IAED;;;;OAIG;IACH,IAAW,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAMnC;IAED;;OAEG;IACH,IAAW,IAAI,IAAI,MAAM,CAExB;IAED;;OAEG;IACH,IAAW,IAAI,CAAC,GAAG,EAAE,MAAM,EAE1B;IAED;;;;OAIG;IACH,IAAW,MAAM,IAAI,MAAM,CAE1B;IAED;;;;OAIG;IACH,IAAW,QAAQ,IAAI,MAAM,CAE5B;IAED;;;;OAIG;IACH,IAAW,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAMnC;IAED;;;;OAIG;IACH,IAAW,IAAI,IAAI,MAAM,CAExB;IAED;;;;OAIG;IACH,IAAW,IAAI,CAAC,IAAI,EAAE,MAAM,EAM3B;IAED;;;;OAIG;IACH,IAAW,QAAQ,IAAI,MAAM,CAE5B;IAED;;;;OAIG;IACH,IAAW,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAMnC;IAED;;;;OAIG;IACH,IAAW,MAAM,IAAI,MAAM,CAE1B;IAED;;;;OAIG;IACH,IAAW,MAAM,CAAC,MAAM,EAAE,MAAM,EAM/B;IAED;;;;OAIG;IACI,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAIjC;;;;OAIG;IACI,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAIhC;;OAEG;IACI,MAAM,IAAI,IAAI;IAMrB;;;;;OAKG;IACI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,YAAY,EAAE,aAAa,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI;IAQ9E;;;;OAIG;IACI,QAAQ,IAAI,MAAM;CAGzB"}
@@ -1 +1 @@
1
- {"version":3,"file":"Location.js","sourceRoot":"","sources":["../../src/location/Location.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Location.js","sourceRoot":"","sources":["../../src/location/Location.ts"],"names":[],"mappings":"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"}
package/lib/version.js CHANGED
@@ -1 +1 @@
1
- export default { version: '13.7.0' };
1
+ export default { version: '13.7.1' };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "happy-dom",
3
- "version": "13.7.0",
3
+ "version": "13.7.1",
4
4
  "license": "MIT",
5
5
  "homepage": "https://github.com/capricorn86/happy-dom",
6
6
  "repository": "https://github.com/capricorn86/happy-dom",
@@ -151,3 +151,4 @@ export const host = Symbol('host');
151
151
  export const setURL = Symbol('setURL');
152
152
  export const localName = Symbol('localName');
153
153
  export const registedClass = Symbol('registedClass');
154
+ export const nodeStream = Symbol('nodeStream');
@@ -23,8 +23,11 @@ import IHTMLVideoElement from '../nodes/html-video-element/IHTMLVideoElement.js'
23
23
 
24
24
  // Makes it work with custom elements when they declare their own interface.
25
25
  declare global {
26
- /* eslint-disable-next-line @typescript-eslint/naming-convention */
26
+ /* eslint-disable @typescript-eslint/naming-convention */
27
+ /* eslint-disable @typescript-eslint/no-empty-interface */
27
28
  interface HTMLElementTagNameMap {}
29
+ /* eslint-enable @typescript-eslint/naming-convention */
30
+ /* eslint-enable @typescript-eslint/no-empty-interface */
28
31
  }
29
32
 
30
33
  export default interface IHTMLElementTagNameMap extends HTMLElementTagNameMap {
@@ -14,7 +14,6 @@ import { Socket } from 'net';
14
14
  import Stream from 'stream';
15
15
  import DataURIParser from './data-uri/DataURIParser.js';
16
16
  import FetchCORSUtility from './utilities/FetchCORSUtility.js';
17
- import { ReadableStream } from 'stream/web';
18
17
  import Request from './Request.js';
19
18
  import Response from './Response.js';
20
19
  import Event from '../event/Event.js';
@@ -28,6 +27,7 @@ import FetchResponseRedirectUtility from './utilities/FetchResponseRedirectUtili
28
27
  import FetchResponseHeaderUtility from './utilities/FetchResponseHeaderUtility.js';
29
28
  import FetchHTTPSCertificate from './certificate/FetchHTTPSCertificate.js';
30
29
  import { Buffer } from 'buffer';
30
+ import FetchBodyUtility from './utilities/FetchBodyUtility.js';
31
31
 
32
32
  const LAST_CHUNK = Buffer.from('0\r\n\r\n');
33
33
 
@@ -545,7 +545,10 @@ export default class Fetch {
545
545
  nodeResponse.statusCode === 204 ||
546
546
  nodeResponse.statusCode === 304
547
547
  ) {
548
- this.response = new this.#window.Response(this.nodeToWebStream(body), responseOptions);
548
+ this.response = new this.#window.Response(
549
+ FetchBodyUtility.nodeToWebStream(body),
550
+ responseOptions
551
+ );
549
552
  (<boolean>this.response.redirected) = this.redirectCount > 0;
550
553
  (<string>this.response.url) = this.request.url;
551
554
  this.resolve(this.response);
@@ -567,7 +570,10 @@ export default class Fetch {
567
570
  // Ignore error as it is forwarded to the response body.
568
571
  }
569
572
  });
570
- this.response = new this.#window.Response(this.nodeToWebStream(body), responseOptions);
573
+ this.response = new this.#window.Response(
574
+ FetchBodyUtility.nodeToWebStream(body),
575
+ responseOptions
576
+ );
571
577
  (<boolean>this.response.redirected) = this.redirectCount > 0;
572
578
  (<string>this.response.url) = this.request.url;
573
579
  this.resolve(this.response);
@@ -599,7 +605,10 @@ export default class Fetch {
599
605
  });
600
606
  }
601
607
 
602
- this.response = new this.#window.Response(this.nodeToWebStream(body), responseOptions);
608
+ this.response = new this.#window.Response(
609
+ FetchBodyUtility.nodeToWebStream(body),
610
+ responseOptions
611
+ );
603
612
  (<boolean>this.response.redirected) = this.redirectCount > 0;
604
613
  (<string>this.response.url) = this.request.url;
605
614
  this.resolve(this.response);
@@ -607,7 +616,10 @@ export default class Fetch {
607
616
  raw.on('end', () => {
608
617
  // Some old IIS servers return zero-length OK deflate responses, so 'data' is never emitted.
609
618
  if (!this.response) {
610
- this.response = new this.#window.Response(this.nodeToWebStream(body), responseOptions);
619
+ this.response = new this.#window.Response(
620
+ FetchBodyUtility.nodeToWebStream(body),
621
+ responseOptions
622
+ );
611
623
  (<boolean>this.response.redirected) = this.redirectCount > 0;
612
624
  (<string>this.response.url) = this.request.url;
613
625
  this.resolve(this.response);
@@ -623,7 +635,10 @@ export default class Fetch {
623
635
  // Ignore error as it is forwarded to the response body.
624
636
  }
625
637
  });
626
- this.response = new this.#window.Response(this.nodeToWebStream(body), responseOptions);
638
+ this.response = new this.#window.Response(
639
+ FetchBodyUtility.nodeToWebStream(body),
640
+ responseOptions
641
+ );
627
642
  (<boolean>this.response.redirected) = this.redirectCount > 0;
628
643
  (<string>this.response.url) = this.request.url;
629
644
  this.resolve(this.response);
@@ -631,7 +646,10 @@ export default class Fetch {
631
646
  }
632
647
 
633
648
  // Otherwise, use response as is
634
- this.response = new this.#window.Response(this.nodeToWebStream(body), responseOptions);
649
+ this.response = new this.#window.Response(
650
+ FetchBodyUtility.nodeToWebStream(body),
651
+ responseOptions
652
+ );
635
653
  (<boolean>this.response.redirected) = this.redirectCount > 0;
636
654
  (<string>this.response.url) = this.request.url;
637
655
  this.resolve(this.response);
@@ -806,31 +824,4 @@ export default class Fetch {
806
824
  this.reject(error);
807
825
  }
808
826
  }
809
-
810
- /**
811
- * Wraps a Node.js stream into a browser-compatible ReadableStream.
812
- *
813
- * Enables the use of Node.js streams where browser ReadableStreams are required.
814
- * Handles 'data', 'end', and 'error' events from the Node.js stream.
815
- *
816
- * @param nodeStream The Node.js stream to be converted.
817
- * @returns ReadableStream
818
- */
819
- private nodeToWebStream(nodeStream: Stream): ReadableStream {
820
- return new ReadableStream({
821
- start(controller) {
822
- nodeStream.on('data', (chunk) => {
823
- controller.enqueue(chunk);
824
- });
825
-
826
- nodeStream.on('end', () => {
827
- controller.close();
828
- });
829
-
830
- nodeStream.on('error', (err) => {
831
- controller.error(err);
832
- });
833
- }
834
- });
835
- }
836
827
  }
@@ -267,18 +267,15 @@ export default class Response implements IResponse {
267
267
  * @returns Clone.
268
268
  */
269
269
  public clone(): Response {
270
- const response = new this.#window.Response(this.body, {
270
+ const body = FetchBodyUtility.cloneBodyStream(this);
271
+
272
+ const response = new this.#window.Response(body, {
271
273
  status: this.status,
272
274
  statusText: this.statusText,
273
275
  headers: this.headers
274
276
  });
275
277
 
276
- (<number>response.status) = this.status;
277
- (<string>response.statusText) = this.statusText;
278
278
  (<boolean>response.ok) = this.ok;
279
- (<Headers>response.headers) = new Headers(this.headers);
280
- (<ReadableStream>response.body) = this.body;
281
- (<boolean>response.bodyUsed) = this.bodyUsed;
282
279
  (<boolean>response.redirected) = this.redirected;
283
280
  (<string>response.type) = this.type;
284
281
  (<string>response.url) = this.url;
@@ -9,29 +9,12 @@ import DOMExceptionNameEnum from '../../exception/DOMExceptionNameEnum.js';
9
9
  import IRequestBody from '../types/IRequestBody.js';
10
10
  import IResponseBody from '../types/IResponseBody.js';
11
11
  import { Buffer } from 'buffer';
12
+ import Stream from 'stream';
12
13
 
13
14
  /**
14
15
  * Fetch body utility.
15
16
  */
16
17
  export default class FetchBodyUtility {
17
- /**
18
- * Wraps a given value in a browser ReadableStream.
19
- *
20
- * This method creates a ReadableStream and immediately enqueues and closes it
21
- * with the provided value, useful for stream API compatibility.
22
- *
23
- * @param value The value to be wrapped in a ReadableStream.
24
- * @returns ReadableStream
25
- */
26
- public static toReadableStream(value): ReadableStream {
27
- return new ReadableStream({
28
- start(controller) {
29
- controller.enqueue(value);
30
- controller.close();
31
- }
32
- });
33
- }
34
-
35
18
  /**
36
19
  * Parses body and returns stream and type.
37
20
  *
@@ -115,8 +98,8 @@ export default class FetchBodyUtility {
115
98
  * It creates a pass through stream and pipes the original stream to it.
116
99
  *
117
100
  * @param requestOrResponse Request or Response.
118
- * @param requestOrResponse.body
119
- * @param requestOrResponse.bodyUsed
101
+ * @param requestOrResponse.body Body.
102
+ * @param requestOrResponse.bodyUsed Body used.
120
103
  * @returns New stream.
121
104
  */
122
105
  public static cloneBodyStream(requestOrResponse: {
@@ -130,7 +113,25 @@ export default class FetchBodyUtility {
130
113
  );
131
114
  }
132
115
 
116
+ // If a buffer is set, use it to create a new stream.
117
+ if (requestOrResponse[PropertySymbol.buffer]) {
118
+ return this.toReadableStream(requestOrResponse[PropertySymbol.buffer]);
119
+ }
120
+
121
+ // Pipe underlying node stream if it exists.
122
+ if (requestOrResponse.body[PropertySymbol.nodeStream]) {
123
+ const stream1 = new Stream.PassThrough();
124
+ const stream2 = new Stream.PassThrough();
125
+ requestOrResponse.body[PropertySymbol.nodeStream].pipe(stream1);
126
+ requestOrResponse.body[PropertySymbol.nodeStream].pipe(stream2);
127
+ // Sets the body of the cloned request/response to the first pass through stream.
128
+ requestOrResponse.body = this.nodeToWebStream(stream1);
129
+ // Returns the clone.
130
+ return this.nodeToWebStream(stream2);
131
+ }
132
+
133
133
  // Uses the tee() method to clone the ReadableStream
134
+ // This requires the stream to be consumed in parallel which is not the case for the fetch API
134
135
  const [stream1, stream2] = requestOrResponse.body.tee();
135
136
 
136
137
  // Sets the body of the cloned request to the first pass through stream.
@@ -198,4 +199,50 @@ export default class FetchBodyUtility {
198
199
  );
199
200
  }
200
201
  }
202
+ /**
203
+ * Wraps a given value in a browser ReadableStream.
204
+ *
205
+ * This method creates a ReadableStream and immediately enqueues and closes it
206
+ * with the provided value, useful for stream API compatibility.
207
+ *
208
+ * @param value The value to be wrapped in a ReadableStream.
209
+ * @returns ReadableStream
210
+ */
211
+ public static toReadableStream(value): ReadableStream {
212
+ return new ReadableStream({
213
+ start(controller) {
214
+ controller.enqueue(value);
215
+ controller.close();
216
+ }
217
+ });
218
+ }
219
+
220
+ /**
221
+ * Wraps a Node.js stream into a browser-compatible ReadableStream.
222
+ *
223
+ * Enables the use of Node.js streams where browser ReadableStreams are required.
224
+ * Handles 'data', 'end', and 'error' events from the Node.js stream.
225
+ *
226
+ * @param nodeStream The Node.js stream to be converted.
227
+ * @returns ReadableStream
228
+ */
229
+ public static nodeToWebStream(nodeStream: Stream): ReadableStream {
230
+ const readableStream = new ReadableStream({
231
+ start(controller) {
232
+ nodeStream.on('data', (chunk) => {
233
+ controller.enqueue(chunk);
234
+ });
235
+
236
+ nodeStream.on('end', () => {
237
+ controller.close();
238
+ });
239
+
240
+ nodeStream.on('error', (err) => {
241
+ controller.error(err);
242
+ });
243
+ }
244
+ });
245
+ readableStream[PropertySymbol.nodeStream] = nodeStream;
246
+ return readableStream;
247
+ }
201
248
  }
@@ -8,7 +8,7 @@ import { URL } from 'url';
8
8
  */
9
9
  export default class Location {
10
10
  // Public properties
11
- public [Symbol.toStringTag]: string = 'Location';
11
+ public [Symbol.toStringTag] = 'Location';
12
12
 
13
13
  // Private properties
14
14
  #browserFrame: IBrowserFrame;