@mswjs/interceptors 0.17.7 → 0.17.9

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.
@@ -81,6 +81,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
81
81
  exports.FetchInterceptor = void 0;
82
82
  var headers_polyfill_1 = require("headers-polyfill");
83
83
  var outvariant_1 = require("outvariant");
84
+ var until_1 = require("@open-draft/until");
84
85
  var IsomorphicRequest_1 = require("../../IsomorphicRequest");
85
86
  var glossary_1 = require("../../glossary");
86
87
  var Interceptor_1 = require("../../Interceptor");
@@ -100,7 +101,7 @@ var FetchInterceptor = /** @class */ (function (_super) {
100
101
  var pureFetch = globalThis.fetch;
101
102
  outvariant_1.invariant(!pureFetch[glossary_1.IS_PATCHED_MODULE], 'Failed to patch the "fetch" module: already patched.');
102
103
  globalThis.fetch = function (input, init) { return __awaiter(_this, void 0, void 0, function () {
103
- var request, url, method, body, isomorphicRequest, interactiveIsomorphicRequest, _a, mockedResponse, isomorphicResponse, response;
104
+ var request, url, method, body, requestUrl, isomorphicRequest, interactiveIsomorphicRequest, _a, middlewareException, mockedResponse, error, isomorphicResponse, response;
104
105
  var _this = this;
105
106
  return __generator(this, function (_b) {
106
107
  switch (_b.label) {
@@ -112,7 +113,8 @@ var FetchInterceptor = /** @class */ (function (_super) {
112
113
  return [4 /*yield*/, request.clone().arrayBuffer()];
113
114
  case 1:
114
115
  body = _b.sent();
115
- isomorphicRequest = new IsomorphicRequest_1.IsomorphicRequest(new URL(url, location.origin), {
116
+ requestUrl = new URL(url, typeof location !== 'undefined' ? location.origin : undefined);
117
+ isomorphicRequest = new IsomorphicRequest_1.IsomorphicRequest(requestUrl, {
116
118
  body: body,
117
119
  method: method,
118
120
  headers: new headers_polyfill_1.Headers(request.headers),
@@ -123,17 +125,34 @@ var FetchInterceptor = /** @class */ (function (_super) {
123
125
  this.log('emitting the "request" event for %d listener(s)...', this.emitter.listenerCount('request'));
124
126
  this.emitter.emit('request', interactiveIsomorphicRequest);
125
127
  this.log('awaiting for the mocked response...');
126
- return [4 /*yield*/, this.emitter.untilIdle('request', function (_a) {
127
- var _b = __read(_a.args, 1), request = _b[0];
128
- return request.id === interactiveIsomorphicRequest.id;
129
- })];
128
+ return [4 /*yield*/, until_1.until(function () { return __awaiter(_this, void 0, void 0, function () {
129
+ var _a, mockedResponse;
130
+ return __generator(this, function (_b) {
131
+ switch (_b.label) {
132
+ case 0: return [4 /*yield*/, this.emitter.untilIdle('request', function (_a) {
133
+ var _b = __read(_a.args, 1), request = _b[0];
134
+ return request.id === interactiveIsomorphicRequest.id;
135
+ })];
136
+ case 1:
137
+ _b.sent();
138
+ this.log('all request listeners have been resolved!');
139
+ return [4 /*yield*/, interactiveIsomorphicRequest.respondWith.invoked()];
140
+ case 2:
141
+ _a = __read.apply(void 0, [_b.sent(), 1]), mockedResponse = _a[0];
142
+ this.log('event.respondWith called with:', mockedResponse);
143
+ return [2 /*return*/, mockedResponse];
144
+ }
145
+ });
146
+ }); })];
130
147
  case 2:
131
- _b.sent();
132
- this.log('all request listeners have been resolved!');
133
- return [4 /*yield*/, interactiveIsomorphicRequest.respondWith.invoked()];
134
- case 3:
135
- _a = __read.apply(void 0, [_b.sent(), 1]), mockedResponse = _a[0];
136
- this.log('event.respondWith called with:', mockedResponse);
148
+ _a = __read.apply(void 0, [_b.sent(), 2]), middlewareException = _a[0], mockedResponse = _a[1];
149
+ if (middlewareException) {
150
+ console.error(request.method + " " + request.url + " net::ERR_FAILED");
151
+ error = Object.assign(new TypeError('Failed to fetch'), {
152
+ cause: middlewareException,
153
+ });
154
+ return [2 /*return*/, Promise.reject(error)];
155
+ }
137
156
  if (mockedResponse) {
138
157
  this.log('received mocked response:', mockedResponse);
139
158
  isomorphicResponse = toIsoResponse_1.toIsoResponse(mockedResponse);
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/interceptors/fetch/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/interceptors/fetch/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@mswjs/interceptors",
3
3
  "description": "Low-level HTTP/HTTPS/XHR/fetch request interception library.",
4
- "version": "0.17.7",
4
+ "version": "0.17.9",
5
5
  "main": "lib/index.js",
6
6
  "typings": "lib/index.d.ts",
7
7
  "author": "Artem Zakharchenko",
@@ -93,4 +93,4 @@
93
93
  "path": "./node_modules/cz-conventional-changelog"
94
94
  }
95
95
  }
96
- }
96
+ }
@@ -5,6 +5,7 @@ import {
5
5
  headersToObject,
6
6
  } from 'headers-polyfill'
7
7
  import { invariant } from 'outvariant'
8
+ import { until } from '@open-draft/until'
8
9
  import { IsomorphicRequest } from '../../IsomorphicRequest'
9
10
  import {
10
11
  HttpRequestEventMap,
@@ -46,16 +47,19 @@ export class FetchInterceptor extends Interceptor<HttpRequestEventMap> {
46
47
  this.log('[%s] %s', method, url)
47
48
 
48
49
  const body = await request.clone().arrayBuffer()
49
- const isomorphicRequest = new IsomorphicRequest(
50
- new URL(url, location.origin),
51
- {
52
- body,
53
- method,
54
- headers: new Headers(request.headers),
55
- credentials: request.credentials,
56
- }
50
+
51
+ const requestUrl = new URL(
52
+ url,
53
+ typeof location !== 'undefined' ? location.origin : undefined
57
54
  )
58
55
 
56
+ const isomorphicRequest = new IsomorphicRequest(requestUrl, {
57
+ body,
58
+ method,
59
+ headers: new Headers(request.headers),
60
+ credentials: request.credentials,
61
+ })
62
+
59
63
  const interactiveIsomorphicRequest = new InteractiveIsomorphicRequest(
60
64
  isomorphicRequest
61
65
  )
@@ -70,14 +74,26 @@ export class FetchInterceptor extends Interceptor<HttpRequestEventMap> {
70
74
 
71
75
  this.log('awaiting for the mocked response...')
72
76
 
73
- await this.emitter.untilIdle('request', ({ args: [request] }) => {
74
- return request.id === interactiveIsomorphicRequest.id
77
+ const [middlewareException, mockedResponse] = await until(async () => {
78
+ await this.emitter.untilIdle('request', ({ args: [request] }) => {
79
+ return request.id === interactiveIsomorphicRequest.id
80
+ })
81
+ this.log('all request listeners have been resolved!')
82
+
83
+ const [mockedResponse] =
84
+ await interactiveIsomorphicRequest.respondWith.invoked()
85
+ this.log('event.respondWith called with:', mockedResponse)
86
+
87
+ return mockedResponse
75
88
  })
76
- this.log('all request listeners have been resolved!')
77
89
 
78
- const [mockedResponse] =
79
- await interactiveIsomorphicRequest.respondWith.invoked()
80
- this.log('event.respondWith called with:', mockedResponse)
90
+ if (middlewareException) {
91
+ console.error(`${request.method} ${request.url} net::ERR_FAILED`)
92
+ const error = Object.assign(new TypeError('Failed to fetch'), {
93
+ cause: middlewareException,
94
+ })
95
+ return Promise.reject(error)
96
+ }
81
97
 
82
98
  if (mockedResponse) {
83
99
  this.log('received mocked response:', mockedResponse)