happy-dom 16.3.0 → 16.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (45) hide show
  1. package/cjs/browser/types/IBrowserSettings.d.ts +2 -0
  2. package/cjs/browser/types/IBrowserSettings.d.ts.map +1 -1
  3. package/cjs/browser/types/IOptionalBrowserSettings.d.ts +2 -0
  4. package/cjs/browser/types/IOptionalBrowserSettings.d.ts.map +1 -1
  5. package/cjs/fetch/Fetch.cjs +29 -4
  6. package/cjs/fetch/Fetch.cjs.map +1 -1
  7. package/cjs/fetch/Fetch.d.ts +1 -0
  8. package/cjs/fetch/Fetch.d.ts.map +1 -1
  9. package/cjs/fetch/SyncFetch.cjs +28 -2
  10. package/cjs/fetch/SyncFetch.cjs.map +1 -1
  11. package/cjs/fetch/SyncFetch.d.ts +1 -0
  12. package/cjs/fetch/SyncFetch.d.ts.map +1 -1
  13. package/cjs/fetch/types/IFetchInterceptor.cjs +3 -0
  14. package/cjs/fetch/types/IFetchInterceptor.cjs.map +1 -0
  15. package/cjs/fetch/types/IFetchInterceptor.d.ts +57 -0
  16. package/cjs/fetch/types/IFetchInterceptor.d.ts.map +1 -0
  17. package/cjs/index.cjs.map +1 -1
  18. package/cjs/index.d.ts +3 -1
  19. package/cjs/index.d.ts.map +1 -1
  20. package/lib/browser/types/IBrowserSettings.d.ts +2 -0
  21. package/lib/browser/types/IBrowserSettings.d.ts.map +1 -1
  22. package/lib/browser/types/IOptionalBrowserSettings.d.ts +2 -0
  23. package/lib/browser/types/IOptionalBrowserSettings.d.ts.map +1 -1
  24. package/lib/fetch/Fetch.d.ts +1 -0
  25. package/lib/fetch/Fetch.d.ts.map +1 -1
  26. package/lib/fetch/Fetch.js +29 -4
  27. package/lib/fetch/Fetch.js.map +1 -1
  28. package/lib/fetch/SyncFetch.d.ts +1 -0
  29. package/lib/fetch/SyncFetch.d.ts.map +1 -1
  30. package/lib/fetch/SyncFetch.js +28 -2
  31. package/lib/fetch/SyncFetch.js.map +1 -1
  32. package/lib/fetch/types/IFetchInterceptor.d.ts +57 -0
  33. package/lib/fetch/types/IFetchInterceptor.d.ts.map +1 -0
  34. package/lib/fetch/types/IFetchInterceptor.js +2 -0
  35. package/lib/fetch/types/IFetchInterceptor.js.map +1 -0
  36. package/lib/index.d.ts +3 -1
  37. package/lib/index.d.ts.map +1 -1
  38. package/lib/index.js.map +1 -1
  39. package/package.json +1 -1
  40. package/src/browser/types/IBrowserSettings.ts +3 -0
  41. package/src/browser/types/IOptionalBrowserSettings.ts +3 -0
  42. package/src/fetch/Fetch.ts +32 -5
  43. package/src/fetch/SyncFetch.ts +29 -2
  44. package/src/fetch/types/IFetchInterceptor.ts +60 -0
  45. package/src/index.ts +4 -0
package/lib/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "happy-dom",
3
- "version": "16.3.0",
3
+ "version": "16.4.0",
4
4
  "license": "MIT",
5
5
  "homepage": "https://github.com/capricorn86/happy-dom",
6
6
  "repository": "https://github.com/capricorn86/happy-dom",
@@ -1,5 +1,6 @@
1
1
  import BrowserErrorCaptureEnum from '../enums/BrowserErrorCaptureEnum.js';
2
2
  import BrowserNavigationCrossOriginPolicyEnum from '../enums/BrowserNavigationCrossOriginPolicyEnum.js';
3
+ import IFetchInterceptor from '../../fetch/types/IFetchInterceptor.js';
3
4
 
4
5
  /**
5
6
  * Browser settings.
@@ -40,6 +41,8 @@ export default interface IBrowserSettings {
40
41
  * @see https://developer.mozilla.org/en-US/docs/Web/Security/Same-origin_policy
41
42
  */
42
43
  disableSameOriginPolicy: boolean;
44
+
45
+ interceptor?: IFetchInterceptor;
43
46
  };
44
47
 
45
48
  /**
@@ -1,5 +1,6 @@
1
1
  import BrowserErrorCaptureEnum from '../enums/BrowserErrorCaptureEnum.js';
2
2
  import BrowserNavigationCrossOriginPolicyEnum from '../enums/BrowserNavigationCrossOriginPolicyEnum.js';
3
+ import IFetchInterceptor from '../../fetch/types/IFetchInterceptor.js';
3
4
 
4
5
  export default interface IOptionalBrowserSettings {
5
6
  /** Disables JavaScript evaluation. */
@@ -34,6 +35,8 @@ export default interface IOptionalBrowserSettings {
34
35
  * @see https://developer.mozilla.org/en-US/docs/Web/Security/Same-origin_policy
35
36
  */
36
37
  disableSameOriginPolicy?: boolean;
38
+
39
+ interceptor?: IFetchInterceptor;
37
40
  };
38
41
 
39
42
  /**
@@ -26,6 +26,7 @@ import FetchResponseHeaderUtility from './utilities/FetchResponseHeaderUtility.j
26
26
  import FetchHTTPSCertificate from './certificate/FetchHTTPSCertificate.js';
27
27
  import { Buffer } from 'buffer';
28
28
  import FetchBodyUtility from './utilities/FetchBodyUtility.js';
29
+ import IFetchInterceptor from './types/IFetchInterceptor.js';
29
30
 
30
31
  const LAST_CHUNK = Buffer.from('0\r\n\r\n');
31
32
 
@@ -39,7 +40,7 @@ const LAST_CHUNK = Buffer.from('0\r\n\r\n');
39
40
  */
40
41
  export default class Fetch {
41
42
  private reject: (reason: Error) => void | null = null;
42
- private resolve: (value: Response | Promise<Response>) => void | null = null;
43
+ private resolve: (value: Response | Promise<Response>) => Promise<void> = null;
43
44
  private listeners = {
44
45
  onSignalAbort: this.onSignalAbort.bind(this)
45
46
  };
@@ -50,6 +51,7 @@ export default class Fetch {
50
51
  private nodeResponse: IncomingMessage | null = null;
51
52
  private response: Response | null = null;
52
53
  private responseHeaders: Headers | null = null;
54
+ private interceptor?: IFetchInterceptor;
53
55
  private request: Request;
54
56
  private redirectCount = 0;
55
57
  private disableCache: boolean;
@@ -99,6 +101,7 @@ export default class Fetch {
99
101
  options.disableSameOriginPolicy ??
100
102
  this.#browserFrame.page.context.browser.settings.fetch.disableSameOriginPolicy ??
101
103
  false;
104
+ this.interceptor = this.#browserFrame.page.context.browser.settings.fetch.interceptor;
102
105
  }
103
106
 
104
107
  /**
@@ -108,6 +111,15 @@ export default class Fetch {
108
111
  */
109
112
  public async send(): Promise<Response> {
110
113
  FetchRequestReferrerUtility.prepareRequest(new URL(this.#window.location.href), this.request);
114
+ const beforeRequestResponse = this.interceptor?.beforeAsyncRequest
115
+ ? await this.interceptor.beforeAsyncRequest({
116
+ request: this.request,
117
+ window: this.#window
118
+ })
119
+ : undefined;
120
+ if (beforeRequestResponse instanceof Response) {
121
+ return beforeRequestResponse;
122
+ }
111
123
  FetchRequestValidationUtility.validateSchema(this.request);
112
124
 
113
125
  if (this.request.signal.aborted) {
@@ -122,7 +134,14 @@ export default class Fetch {
122
134
  this.response = new this.#window.Response(result.buffer, {
123
135
  headers: { 'Content-Type': result.type }
124
136
  });
125
- return this.response;
137
+ const interceptedResponse = this.interceptor?.afterAsyncResponse
138
+ ? await this.interceptor.afterAsyncResponse({
139
+ window: this.#window,
140
+ response: this.response,
141
+ request: this.request
142
+ })
143
+ : undefined;
144
+ return interceptedResponse instanceof Response ? interceptedResponse : this.response;
126
145
  }
127
146
 
128
147
  // Security check for "https" to "http" requests.
@@ -365,9 +384,9 @@ export default class Fetch {
365
384
  throw new this.#window.Error('Fetch already sent.');
366
385
  }
367
386
 
368
- this.resolve = (response: Response | Promise<Response>): void => {
387
+ this.resolve = async (response: Response | Promise<Response>): Promise<void> => {
369
388
  // We can end up here when closing down the browser frame and there is an ongoing request.
370
- // Therefore we need to check if browserFrame.page.context is still available.
389
+ // Therefore, we need to check if browserFrame.page.context is still available.
371
390
  if (
372
391
  !this.disableCache &&
373
392
  response instanceof Response &&
@@ -382,8 +401,16 @@ export default class Fetch {
382
401
  waitingForBody: !response[PropertySymbol.buffer] && !!response.body
383
402
  });
384
403
  }
404
+
405
+ const interceptedResponse = this.interceptor?.afterAsyncResponse
406
+ ? await this.interceptor.afterAsyncResponse({
407
+ window: this.#window,
408
+ response: await response,
409
+ request: this.request
410
+ })
411
+ : undefined;
385
412
  this.#browserFrame[PropertySymbol.asyncTaskManager].endTask(taskID);
386
- resolve(response);
413
+ resolve(interceptedResponse instanceof Response ? interceptedResponse : response);
387
414
  };
388
415
  this.reject = (error: Error): void => {
389
416
  this.#browserFrame[PropertySymbol.asyncTaskManager].endTask(taskID);
@@ -20,6 +20,7 @@ import Zlib from 'zlib';
20
20
  import FetchResponseRedirectUtility from './utilities/FetchResponseRedirectUtility.js';
21
21
  import FetchCORSUtility from './utilities/FetchCORSUtility.js';
22
22
  import Fetch from './Fetch.js';
23
+ import IFetchInterceptor from './types/IFetchInterceptor.js';
23
24
 
24
25
  interface ISyncHTTPResponse {
25
26
  error: string;
@@ -39,6 +40,7 @@ export default class SyncFetch {
39
40
  private redirectCount = 0;
40
41
  private disableCache: boolean;
41
42
  private disableSameOriginPolicy: boolean;
43
+ private interceptor?: IFetchInterceptor;
42
44
  #browserFrame: IBrowserFrame;
43
45
  #window: BrowserWindow;
44
46
  #unfilteredHeaders: Headers | null = null;
@@ -84,6 +86,7 @@ export default class SyncFetch {
84
86
  options.disableSameOriginPolicy ??
85
87
  this.#browserFrame.page.context.browser.settings.fetch.disableSameOriginPolicy ??
86
88
  false;
89
+ this.interceptor = this.#browserFrame.page.context.browser.settings.fetch.interceptor;
87
90
  }
88
91
 
89
92
  /**
@@ -93,6 +96,15 @@ export default class SyncFetch {
93
96
  */
94
97
  public send(): ISyncResponse {
95
98
  FetchRequestReferrerUtility.prepareRequest(new URL(this.#window.location.href), this.request);
99
+ const beforeRequestResponse = this.interceptor?.beforeSyncRequest
100
+ ? this.interceptor.beforeSyncRequest({
101
+ request: this.request,
102
+ window: this.#window
103
+ })
104
+ : undefined;
105
+ if (typeof beforeRequestResponse === 'object') {
106
+ return beforeRequestResponse;
107
+ }
96
108
  FetchRequestValidationUtility.validateSchema(this.request);
97
109
 
98
110
  if (this.request.signal.aborted) {
@@ -104,7 +116,7 @@ export default class SyncFetch {
104
116
 
105
117
  if (this.request[PropertySymbol.url].protocol === 'data:') {
106
118
  const result = DataURIParser.parse(this.request.url);
107
- return {
119
+ const response = {
108
120
  status: 200,
109
121
  statusText: 'OK',
110
122
  ok: true,
@@ -113,6 +125,14 @@ export default class SyncFetch {
113
125
  headers: new Headers({ 'Content-Type': result.type }),
114
126
  body: result.buffer
115
127
  };
128
+ const interceptedResponse = this.interceptor?.afterSyncResponse
129
+ ? this.interceptor.afterSyncResponse({
130
+ window: this.#window,
131
+ response,
132
+ request: this.request
133
+ })
134
+ : undefined;
135
+ return typeof interceptedResponse === 'object' ? interceptedResponse : response;
116
136
  }
117
137
 
118
138
  // Security check for "https" to "http" requests.
@@ -416,7 +436,14 @@ export default class SyncFetch {
416
436
  });
417
437
  }
418
438
 
419
- return redirectedResponse;
439
+ const interceptedResponse = this.interceptor?.afterSyncResponse
440
+ ? this.interceptor.afterSyncResponse({
441
+ window: this.#window,
442
+ response: redirectedResponse,
443
+ request: this.request
444
+ })
445
+ : undefined;
446
+ return typeof interceptedResponse === 'object' ? interceptedResponse : redirectedResponse;
420
447
  }
421
448
 
422
449
  /**
@@ -0,0 +1,60 @@
1
+ import Request from '../Request.js';
2
+ import BrowserWindow from '../../window/BrowserWindow.js';
3
+ import Response from '../Response.js';
4
+ import ISyncResponse from './ISyncResponse.js';
5
+
6
+ export default interface IFetchInterceptor {
7
+ /**
8
+ * Hook dispatched before making an async request.
9
+ * It can be used for modifying the request, providing a response without making a request or for logging.
10
+ *
11
+ * @param context Contains the request and the window from where the request was made.
12
+ *
13
+ * @returns Promise that can resolve to a response to be used instead of sending out the response.
14
+ */
15
+ beforeAsyncRequest?: (context: {
16
+ request: Request;
17
+ window: BrowserWindow;
18
+ }) => Promise<Response | void>;
19
+
20
+ /**
21
+ * Hook dispatched before making an sync request.
22
+ * It can be used for modifying the request, providing a response without making a request or for logging.
23
+ *
24
+ * @param context Contains the request and the window from where the request was made.
25
+ *
26
+ * @returns Promise that can resolve to a response to be used instead of sending out the response.
27
+ */
28
+ beforeSyncRequest?: (context: {
29
+ request: Request;
30
+ window: BrowserWindow;
31
+ }) => ISyncResponse | void;
32
+
33
+ /**
34
+ * Hook dispatched after receiving an async response.
35
+ * It can be used for modifying or replacing the response and logging.
36
+ *
37
+ * @param context Contains the request, response and the window from where the request was made.
38
+ *
39
+ * @returns Promise that can resolve to a response to be used instead of sending out the response.
40
+ */
41
+ afterAsyncResponse?: (context: {
42
+ request: Request;
43
+ response: Response;
44
+ window: BrowserWindow;
45
+ }) => Promise<Response | void>;
46
+
47
+ /**
48
+ * Hook dispatched after receiving a sync response.
49
+ * It can be used for modifying or replacing the response and logging
50
+ *
51
+ * @param context Contains the request, response and the window from where the request was made.
52
+ *
53
+ * @returns Promise that can resolve to a response to be used instead of sending out the response.
54
+ */
55
+ afterSyncResponse?: (context: {
56
+ request: Request;
57
+ response: ISyncResponse;
58
+ window: BrowserWindow;
59
+ }) => ISyncResponse | void;
60
+ }
package/src/index.ts CHANGED
@@ -57,6 +57,8 @@ import AbortSignal from './fetch/AbortSignal.js';
57
57
  import Headers from './fetch/Headers.js';
58
58
  import Request from './fetch/Request.js';
59
59
  import Response from './fetch/Response.js';
60
+ import IFetchInterceptor from './fetch/types/IFetchInterceptor.js';
61
+ import ISyncResponse from './fetch/types/ISyncResponse.js';
60
62
  import Blob from './file/Blob.js';
61
63
  import File from './file/File.js';
62
64
  import FileReader from './file/FileReader.js';
@@ -206,6 +208,8 @@ import type ITouchEventInit from './event/events/ITouchEventInit.js';
206
208
  import type IWheelEventInit from './event/events/IWheelEventInit.js';
207
209
 
208
210
  export type {
211
+ IFetchInterceptor,
212
+ ISyncResponse,
209
213
  IAnimationEventInit,
210
214
  IBrowser,
211
215
  IBrowserContext,