@mswjs/interceptors 0.17.6 → 0.18.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.
- package/README.md +49 -47
- package/lib/Interceptor.js +4 -4
- package/lib/Interceptor.js.map +1 -1
- package/lib/RemoteHttpInterceptor.d.ts +15 -0
- package/lib/RemoteHttpInterceptor.js +86 -56
- package/lib/RemoteHttpInterceptor.js.map +1 -1
- package/lib/glossary.d.ts +3 -14
- package/lib/glossary.js.map +1 -1
- package/lib/index.d.ts +0 -2
- package/lib/index.js +0 -2
- package/lib/index.js.map +1 -1
- package/lib/interceptors/ClientRequest/NodeClientRequest.d.ts +13 -5
- package/lib/interceptors/ClientRequest/NodeClientRequest.js +179 -166
- package/lib/interceptors/ClientRequest/NodeClientRequest.js.map +1 -1
- package/lib/interceptors/ClientRequest/http.get.js +9 -5
- package/lib/interceptors/ClientRequest/http.get.js.map +1 -1
- package/lib/interceptors/ClientRequest/http.request.js +10 -6
- package/lib/interceptors/ClientRequest/http.request.js.map +1 -1
- package/lib/interceptors/ClientRequest/index.d.ts +2 -5
- package/lib/interceptors/ClientRequest/index.js +2 -13
- package/lib/interceptors/ClientRequest/index.js.map +1 -1
- package/lib/interceptors/ClientRequest/utils/cloneIncomingMessage.js +9 -5
- package/lib/interceptors/ClientRequest/utils/cloneIncomingMessage.js.map +1 -1
- package/lib/interceptors/ClientRequest/utils/createRequest.d.ts +6 -0
- package/lib/interceptors/ClientRequest/utils/createRequest.js +52 -0
- package/lib/interceptors/ClientRequest/utils/createRequest.js.map +1 -0
- package/lib/interceptors/ClientRequest/utils/createResponse.d.ts +8 -0
- package/lib/interceptors/ClientRequest/utils/createResponse.js +24 -0
- package/lib/interceptors/ClientRequest/utils/createResponse.js.map +1 -0
- package/lib/interceptors/ClientRequest/utils/getIncomingMessageBody.js +1 -1
- package/lib/interceptors/ClientRequest/utils/getIncomingMessageBody.js.map +1 -1
- package/lib/interceptors/ClientRequest/utils/normalizeClientRequestArgs.js +8 -8
- package/lib/interceptors/ClientRequest/utils/normalizeClientRequestArgs.js.map +1 -1
- package/lib/interceptors/ClientRequest/utils/normalizeClientRequestEndArgs.d.ts +1 -1
- package/lib/interceptors/ClientRequest/utils/normalizeClientRequestWriteArgs.js +1 -1
- package/lib/interceptors/ClientRequest/utils/normalizeClientRequestWriteArgs.js.map +1 -1
- package/lib/interceptors/XMLHttpRequest/XMLHttpRequestOverride.d.ts +6 -10
- package/lib/interceptors/XMLHttpRequest/XMLHttpRequestOverride.js +203 -143
- package/lib/interceptors/XMLHttpRequest/XMLHttpRequestOverride.js.map +1 -1
- package/lib/interceptors/XMLHttpRequest/index.d.ts +2 -2
- package/lib/interceptors/XMLHttpRequest/index.js +2 -2
- package/lib/interceptors/XMLHttpRequest/index.js.map +1 -1
- package/lib/interceptors/XMLHttpRequest/utils/concatArrayBuffer.d.ts +4 -0
- package/lib/interceptors/XMLHttpRequest/utils/concatArrayBuffer.js +14 -0
- package/lib/interceptors/XMLHttpRequest/utils/concatArrayBuffer.js.map +1 -0
- package/lib/interceptors/XMLHttpRequest/utils/createResponse.d.ts +2 -0
- package/lib/interceptors/XMLHttpRequest/utils/createResponse.js +14 -0
- package/lib/interceptors/XMLHttpRequest/utils/createResponse.js.map +1 -0
- package/lib/interceptors/fetch/index.js +24 -81
- package/lib/interceptors/fetch/index.js.map +1 -1
- package/lib/utils/AsyncEventEmitter.js +12 -8
- package/lib/utils/AsyncEventEmitter.js.map +1 -1
- package/lib/utils/RequestWithCredentials.d.ts +2 -0
- package/lib/utils/RequestWithCredentials.js +20 -0
- package/lib/utils/RequestWithCredentials.js.map +1 -0
- package/lib/utils/bufferUtils.d.ts +7 -2
- package/lib/utils/bufferUtils.js +10 -6
- package/lib/utils/bufferUtils.js.map +1 -1
- package/lib/utils/parseJson.d.ts +1 -1
- package/lib/utils/toInteractiveRequest.d.ts +7 -0
- package/lib/utils/toInteractiveRequest.js +20 -0
- package/lib/utils/toInteractiveRequest.js.map +1 -0
- package/package.json +3 -2
- package/src/RemoteHttpInterceptor.ts +84 -34
- package/src/glossary.ts +5 -18
- package/src/index.ts +0 -2
- package/src/interceptors/ClientRequest/NodeClientRequest.test.ts +17 -23
- package/src/interceptors/ClientRequest/NodeClientRequest.ts +177 -153
- package/src/interceptors/ClientRequest/index.test.ts +5 -3
- package/src/interceptors/ClientRequest/index.ts +2 -26
- package/src/interceptors/ClientRequest/utils/createRequest.test.ts +61 -0
- package/src/interceptors/ClientRequest/utils/createRequest.ts +32 -0
- package/src/interceptors/ClientRequest/utils/createResponse.test.ts +24 -0
- package/src/interceptors/ClientRequest/utils/createResponse.ts +22 -0
- package/src/interceptors/ClientRequest/utils/normalizeClientRequestEndArgs.ts +1 -1
- package/src/interceptors/XMLHttpRequest/XMLHttpRequestOverride.ts +234 -174
- package/src/interceptors/XMLHttpRequest/index.ts +3 -2
- package/src/interceptors/XMLHttpRequest/utils/concatArrayBuffer.ts +12 -0
- package/src/interceptors/XMLHttpRequest/utils/concateArrayBuffer.test.ts +14 -0
- package/src/interceptors/XMLHttpRequest/utils/createResponse.ts +13 -0
- package/src/interceptors/fetch/index.ts +30 -69
- package/src/utils/RequestWithCredentials.test.ts +20 -0
- package/src/utils/RequestWithCredentials.ts +24 -0
- package/src/utils/bufferUtils.ts +10 -5
- package/src/utils/parseJson.ts +1 -1
- package/src/utils/toInteractiveRequest.ts +29 -0
- package/lib/InteractiveIsomorphicRequest.d.ts +0 -7
- package/lib/InteractiveIsomorphicRequest.js +0 -37
- package/lib/InteractiveIsomorphicRequest.js.map +0 -1
- package/lib/IsomorphicRequest.d.ts +0 -24
- package/lib/IsomorphicRequest.js +0 -107
- package/lib/IsomorphicRequest.js.map +0 -1
- package/lib/interceptors/ClientRequest/utils/bodyBufferToString.d.ts +0 -2
- package/lib/interceptors/ClientRequest/utils/bodyBufferToString.js +0 -11
- package/lib/interceptors/ClientRequest/utils/bodyBufferToString.js.map +0 -1
- package/lib/interceptors/ClientRequest/utils/concatChunkToBuffer.d.ts +0 -2
- package/lib/interceptors/ClientRequest/utils/concatChunkToBuffer.js +0 -11
- package/lib/interceptors/ClientRequest/utils/concatChunkToBuffer.js.map +0 -1
- package/lib/interceptors/XMLHttpRequest/utils/bufferFrom.d.ts +0 -5
- package/lib/interceptors/XMLHttpRequest/utils/bufferFrom.js +0 -20
- package/lib/interceptors/XMLHttpRequest/utils/bufferFrom.js.map +0 -1
- package/lib/utils/toIsoResponse.d.ts +0 -5
- package/lib/utils/toIsoResponse.js +0 -18
- package/lib/utils/toIsoResponse.js.map +0 -1
- package/src/InteractiveIsomorphicRequest.ts +0 -24
- package/src/IsomorphicRequest.test.ts +0 -106
- package/src/IsomorphicRequest.ts +0 -86
- package/src/interceptors/ClientRequest/utils/bodyBufferToString.test.ts +0 -16
- package/src/interceptors/ClientRequest/utils/bodyBufferToString.ts +0 -7
- package/src/interceptors/ClientRequest/utils/concatChunkToBuffer.test.ts +0 -13
- package/src/interceptors/ClientRequest/utils/concatChunkToBuffer.ts +0 -10
- package/src/interceptors/XMLHttpRequest/utils/bufferFrom.test.ts +0 -11
- package/src/interceptors/XMLHttpRequest/utils/bufferFrom.ts +0 -16
- package/src/utils/toIsoResponse.test.ts +0 -39
- package/src/utils/toIsoResponse.ts +0 -14
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"concatArrayBuffer.js","sourceRoot":"","sources":["../../../../src/interceptors/XMLHttpRequest/utils/concatArrayBuffer.ts"],"names":[],"mappings":";;;AAAA;;GAEG;AACH,SAAgB,iBAAiB,CAC/B,IAAgB,EAChB,KAAiB;IAEjB,IAAM,MAAM,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC,UAAU,CAAC,CAAA;IACjE,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAA;IACnB,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC,CAAA;IAClC,OAAO,MAAM,CAAA;AACf,CAAC;AARD,8CAQC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createResponse = void 0;
|
|
4
|
+
var web_fetch_1 = require("@remix-run/web-fetch");
|
|
5
|
+
var headers_polyfill_1 = require("headers-polyfill");
|
|
6
|
+
function createResponse(request, responseBody) {
|
|
7
|
+
return new web_fetch_1.Response(responseBody, {
|
|
8
|
+
status: request.status,
|
|
9
|
+
statusText: request.statusText,
|
|
10
|
+
headers: (0, headers_polyfill_1.stringToHeaders)(request.getAllResponseHeaders()),
|
|
11
|
+
});
|
|
12
|
+
}
|
|
13
|
+
exports.createResponse = createResponse;
|
|
14
|
+
//# sourceMappingURL=createResponse.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"createResponse.js","sourceRoot":"","sources":["../../../../src/interceptors/XMLHttpRequest/utils/createResponse.ts"],"names":[],"mappings":";;;AAAA,kDAA+C;AAC/C,qDAAkD;AAElD,SAAgB,cAAc,CAC5B,OAAuB,EACvB,YAAwB;IAExB,OAAO,IAAI,oBAAQ,CAAC,YAAY,EAAE;QAChC,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,UAAU,EAAE,OAAO,CAAC,UAAU;QAC9B,OAAO,EAAE,IAAA,kCAAe,EAAC,OAAO,CAAC,qBAAqB,EAAE,CAAC;KAC1D,CAAC,CAAA;AACJ,CAAC;AATD,wCASC"}
|
|
@@ -14,17 +14,6 @@ var __extends = (this && this.__extends) || (function () {
|
|
|
14
14
|
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
|
|
15
15
|
};
|
|
16
16
|
})();
|
|
17
|
-
var __assign = (this && this.__assign) || function () {
|
|
18
|
-
__assign = Object.assign || function(t) {
|
|
19
|
-
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
20
|
-
s = arguments[i];
|
|
21
|
-
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
22
|
-
t[p] = s[p];
|
|
23
|
-
}
|
|
24
|
-
return t;
|
|
25
|
-
};
|
|
26
|
-
return __assign.apply(this, arguments);
|
|
27
|
-
};
|
|
28
17
|
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
29
18
|
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
30
19
|
return new (P || (P = Promise))(function (resolve, reject) {
|
|
@@ -79,13 +68,11 @@ var __read = (this && this.__read) || function (o, n) {
|
|
|
79
68
|
};
|
|
80
69
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
81
70
|
exports.FetchInterceptor = void 0;
|
|
82
|
-
var headers_polyfill_1 = require("headers-polyfill");
|
|
83
71
|
var outvariant_1 = require("outvariant");
|
|
84
|
-
var IsomorphicRequest_1 = require("../../IsomorphicRequest");
|
|
85
72
|
var glossary_1 = require("../../glossary");
|
|
86
73
|
var Interceptor_1 = require("../../Interceptor");
|
|
87
|
-
var
|
|
88
|
-
var
|
|
74
|
+
var uuid_1 = require("../../utils/uuid");
|
|
75
|
+
var toInteractiveRequest_1 = require("../../utils/toInteractiveRequest");
|
|
89
76
|
var FetchInterceptor = /** @class */ (function (_super) {
|
|
90
77
|
__extends(FetchInterceptor, _super);
|
|
91
78
|
function FetchInterceptor() {
|
|
@@ -98,79 +85,53 @@ var FetchInterceptor = /** @class */ (function (_super) {
|
|
|
98
85
|
FetchInterceptor.prototype.setup = function () {
|
|
99
86
|
var _this = this;
|
|
100
87
|
var pureFetch = globalThis.fetch;
|
|
101
|
-
outvariant_1.invariant(!pureFetch[glossary_1.IS_PATCHED_MODULE], 'Failed to patch the "fetch" module: already patched.');
|
|
88
|
+
(0, outvariant_1.invariant)(!pureFetch[glossary_1.IS_PATCHED_MODULE], 'Failed to patch the "fetch" module: already patched.');
|
|
102
89
|
globalThis.fetch = function (input, init) { return __awaiter(_this, void 0, void 0, function () {
|
|
103
|
-
var
|
|
90
|
+
var requestId, request, interactiveRequest, _a, mockedResponse, responseCloine, response;
|
|
104
91
|
var _this = this;
|
|
105
92
|
return __generator(this, function (_b) {
|
|
106
93
|
switch (_b.label) {
|
|
107
94
|
case 0:
|
|
95
|
+
requestId = (0, uuid_1.uuidv4)();
|
|
108
96
|
request = new Request(input, init);
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
this.log('[%s] %s', method, url);
|
|
112
|
-
return [4 /*yield*/, request.clone().arrayBuffer()];
|
|
113
|
-
case 1:
|
|
114
|
-
body = _b.sent();
|
|
115
|
-
isomorphicRequest = new IsomorphicRequest_1.IsomorphicRequest(new URL(url, location.origin), {
|
|
116
|
-
body: body,
|
|
117
|
-
method: method,
|
|
118
|
-
headers: new headers_polyfill_1.Headers(request.headers),
|
|
119
|
-
credentials: request.credentials,
|
|
120
|
-
});
|
|
121
|
-
interactiveIsomorphicRequest = new InteractiveIsomorphicRequest_1.InteractiveIsomorphicRequest(isomorphicRequest);
|
|
122
|
-
this.log('isomorphic request', interactiveIsomorphicRequest);
|
|
97
|
+
this.log('[%s] %s', request.method, request.url);
|
|
98
|
+
interactiveRequest = (0, toInteractiveRequest_1.toInteractiveRequest)(request);
|
|
123
99
|
this.log('emitting the "request" event for %d listener(s)...', this.emitter.listenerCount('request'));
|
|
124
|
-
this.emitter.emit('request',
|
|
100
|
+
this.emitter.emit('request', interactiveRequest, requestId);
|
|
125
101
|
this.log('awaiting for the mocked response...');
|
|
126
102
|
return [4 /*yield*/, this.emitter.untilIdle('request', function (_a) {
|
|
127
|
-
var _b = __read(_a.args,
|
|
128
|
-
return
|
|
103
|
+
var _b = __read(_a.args, 2), pendingRequestId = _b[1];
|
|
104
|
+
return pendingRequestId === requestId;
|
|
129
105
|
})];
|
|
130
|
-
case
|
|
106
|
+
case 1:
|
|
131
107
|
_b.sent();
|
|
132
108
|
this.log('all request listeners have been resolved!');
|
|
133
|
-
return [4 /*yield*/,
|
|
134
|
-
case
|
|
109
|
+
return [4 /*yield*/, interactiveRequest.respondWith.invoked()];
|
|
110
|
+
case 2:
|
|
135
111
|
_a = __read.apply(void 0, [_b.sent(), 1]), mockedResponse = _a[0];
|
|
136
112
|
this.log('event.respondWith called with:', mockedResponse);
|
|
137
113
|
if (mockedResponse) {
|
|
138
114
|
this.log('received mocked response:', mockedResponse);
|
|
139
|
-
|
|
140
|
-
this.
|
|
141
|
-
|
|
142
|
-
response = new Response(mockedResponse.body, __assign(__assign({}, isomorphicResponse), {
|
|
143
|
-
// `Response.headers` cannot be instantiated with the `Headers` polyfill.
|
|
144
|
-
// Apparently, it halts if the `Headers` class contains unknown properties
|
|
145
|
-
// (i.e. the internal `Headers.map`).
|
|
146
|
-
headers: headers_polyfill_1.flattenHeadersObject(mockedResponse.headers || {}) }));
|
|
115
|
+
responseCloine = mockedResponse.clone();
|
|
116
|
+
this.emitter.emit('response', responseCloine, interactiveRequest, requestId);
|
|
117
|
+
response = new Response(mockedResponse.body, mockedResponse);
|
|
147
118
|
// Set the "response.url" property to equal the intercepted request URL.
|
|
148
119
|
Object.defineProperty(response, 'url', {
|
|
149
120
|
writable: false,
|
|
150
121
|
enumerable: true,
|
|
151
122
|
configurable: false,
|
|
152
|
-
value:
|
|
123
|
+
value: request.url,
|
|
153
124
|
});
|
|
154
125
|
return [2 /*return*/, response];
|
|
155
126
|
}
|
|
156
127
|
this.log('no mocked response received!');
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
_b = (_a = this.emitter).emit;
|
|
165
|
-
_c = ['response',
|
|
166
|
-
interactiveIsomorphicRequest];
|
|
167
|
-
return [4 /*yield*/, normalizeFetchResponse(cloneResponse)];
|
|
168
|
-
case 1:
|
|
169
|
-
_b.apply(_a, _c.concat([_d.sent()]));
|
|
170
|
-
return [2 /*return*/, response];
|
|
171
|
-
}
|
|
172
|
-
});
|
|
173
|
-
}); })];
|
|
128
|
+
console.log('or req headers', Array.from(request.headers.entries()));
|
|
129
|
+
return [2 /*return*/, pureFetch(request).then(function (response) {
|
|
130
|
+
var responseClone = response.clone();
|
|
131
|
+
_this.log('original fetch performed', responseClone);
|
|
132
|
+
_this.emitter.emit('response', responseClone, interactiveRequest, requestId);
|
|
133
|
+
return response;
|
|
134
|
+
})];
|
|
174
135
|
}
|
|
175
136
|
});
|
|
176
137
|
}); };
|
|
@@ -191,22 +152,4 @@ var FetchInterceptor = /** @class */ (function (_super) {
|
|
|
191
152
|
return FetchInterceptor;
|
|
192
153
|
}(Interceptor_1.Interceptor));
|
|
193
154
|
exports.FetchInterceptor = FetchInterceptor;
|
|
194
|
-
function normalizeFetchResponse(response) {
|
|
195
|
-
return __awaiter(this, void 0, void 0, function () {
|
|
196
|
-
var _a;
|
|
197
|
-
return __generator(this, function (_b) {
|
|
198
|
-
switch (_b.label) {
|
|
199
|
-
case 0:
|
|
200
|
-
_a = {
|
|
201
|
-
status: response.status,
|
|
202
|
-
statusText: response.statusText,
|
|
203
|
-
headers: headers_polyfill_1.objectToHeaders(headers_polyfill_1.headersToObject(response.headers))
|
|
204
|
-
};
|
|
205
|
-
return [4 /*yield*/, response.text()];
|
|
206
|
-
case 1: return [2 /*return*/, (_a.body = _b.sent(),
|
|
207
|
-
_a)];
|
|
208
|
-
}
|
|
209
|
-
});
|
|
210
|
-
});
|
|
211
|
-
}
|
|
212
155
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/interceptors/fetch/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/interceptors/fetch/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -66,10 +66,14 @@ var __read = (this && this.__read) || function (o, n) {
|
|
|
66
66
|
}
|
|
67
67
|
return ar;
|
|
68
68
|
};
|
|
69
|
-
var __spreadArray = (this && this.__spreadArray) || function (to, from) {
|
|
70
|
-
for (var i = 0,
|
|
71
|
-
|
|
72
|
-
|
|
69
|
+
var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
|
|
70
|
+
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
|
|
71
|
+
if (ar || !(i in from)) {
|
|
72
|
+
if (!ar) ar = Array.prototype.slice.call(from, 0, i);
|
|
73
|
+
ar[i] = from[i];
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
return to.concat(ar || Array.prototype.slice.call(from));
|
|
73
77
|
};
|
|
74
78
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
75
79
|
exports.AsyncEventEmitter = exports.AsyncEventEmitterReadyState = void 0;
|
|
@@ -85,7 +89,7 @@ var AsyncEventEmitter = /** @class */ (function (_super) {
|
|
|
85
89
|
__extends(AsyncEventEmitter, _super);
|
|
86
90
|
function AsyncEventEmitter() {
|
|
87
91
|
var _this = _super.call(this) || this;
|
|
88
|
-
_this.log = debug_1.debug('async-event-emitter');
|
|
92
|
+
_this.log = (0, debug_1.debug)('async-event-emitter');
|
|
89
93
|
_this.queue = new Map();
|
|
90
94
|
_this.readyState = AsyncEventEmitterReadyState.ACTIVE;
|
|
91
95
|
return _this;
|
|
@@ -121,7 +125,7 @@ var AsyncEventEmitter = /** @class */ (function (_super) {
|
|
|
121
125
|
_a.trys.push([0, 2, , 3]);
|
|
122
126
|
// Treat listeners as potentially asynchronous functions
|
|
123
127
|
// so they could be awaited.
|
|
124
|
-
return [4 /*yield*/, listener.apply(void 0, __spreadArray([], __read(args)))];
|
|
128
|
+
return [4 /*yield*/, listener.apply(void 0, __spreadArray([], __read(args), false))];
|
|
125
129
|
case 1:
|
|
126
130
|
// Treat listeners as potentially asynchronous functions
|
|
127
131
|
// so they could be awaited.
|
|
@@ -164,12 +168,12 @@ var AsyncEventEmitter = /** @class */ (function (_super) {
|
|
|
164
168
|
// Clear the Promise queue for this particular event
|
|
165
169
|
// in the next tick so the Promise in "untilIdle" has
|
|
166
170
|
// time to properly resolve.
|
|
167
|
-
nextTick_1.nextTick(function () {
|
|
171
|
+
(0, nextTick_1.nextTick)(function () {
|
|
168
172
|
_this.queue.delete(event);
|
|
169
173
|
log('cleaned up "%s" listeners queue!', event);
|
|
170
174
|
});
|
|
171
175
|
}));
|
|
172
|
-
return _super.prototype.emit.apply(this, __spreadArray([event], __read(args)));
|
|
176
|
+
return _super.prototype.emit.apply(this, __spreadArray([event], __read(args), false));
|
|
173
177
|
};
|
|
174
178
|
/**
|
|
175
179
|
* Returns a promise that resolves when all the listeners for the given event
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AsyncEventEmitter.js","sourceRoot":"","sources":["../../src/utils/AsyncEventEmitter.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"AsyncEventEmitter.js","sourceRoot":"","sources":["../../src/utils/AsyncEventEmitter.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.RequestWithCredentials = void 0;
|
|
4
|
+
var web_fetch_1 = require("@remix-run/web-fetch");
|
|
5
|
+
/**
|
|
6
|
+
* Custom wrapper around Remix's "Request" until it
|
|
7
|
+
* supports "credentials" correctly.
|
|
8
|
+
* @see https://github.com/remix-run/web-std-io/pull/21
|
|
9
|
+
*/
|
|
10
|
+
function RequestOverride(input, init) {
|
|
11
|
+
var request = new web_fetch_1.Request(input, init);
|
|
12
|
+
Object.defineProperty(request, 'credentials', {
|
|
13
|
+
value: (init === null || init === void 0 ? void 0 : init.credentials) || 'same-origin',
|
|
14
|
+
enumerable: true,
|
|
15
|
+
writable: false,
|
|
16
|
+
});
|
|
17
|
+
return request;
|
|
18
|
+
}
|
|
19
|
+
exports.RequestWithCredentials = RequestOverride;
|
|
20
|
+
//# sourceMappingURL=RequestWithCredentials.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RequestWithCredentials.js","sourceRoot":"","sources":["../../src/utils/RequestWithCredentials.ts"],"names":[],"mappings":";;;AAAA,kDAA8C;AAE9C;;;;GAIG;AACH,SAAS,eAAe,CACtB,KAA6B,EAC7B,IAAkB;IAElB,IAAM,OAAO,GAAG,IAAI,mBAAO,CAAC,KAAK,EAAE,IAAI,CAAC,CAAA;IAExC,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,aAAa,EAAE;QAC5C,KAAK,EAAE,CAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,WAAW,KAAI,aAAa;QACzC,UAAU,EAAE,IAAI;QAChB,QAAQ,EAAE,KAAK;KAChB,CAAC,CAAA;IAEF,OAAO,OAAO,CAAA;AAChB,CAAC;AAEY,QAAA,sBAAsB,GACjC,eAA4C,CAAA"}
|
|
@@ -1,3 +1,8 @@
|
|
|
1
|
-
export declare function encodeBuffer(text: string):
|
|
1
|
+
export declare function encodeBuffer(text: string): Uint8Array;
|
|
2
2
|
export declare function decodeBuffer(buffer: ArrayBuffer, encoding?: string): string;
|
|
3
|
-
|
|
3
|
+
/**
|
|
4
|
+
* Create an `ArrayBuffer` from the given `Uint8Array`.
|
|
5
|
+
* Takes the byte offset into account to produce the right buffer
|
|
6
|
+
* in the case when the buffer is bigger than the data view.
|
|
7
|
+
*/
|
|
8
|
+
export declare function toArrayBuffer(array: Uint8Array): ArrayBuffer;
|
package/lib/utils/bufferUtils.js
CHANGED
|
@@ -1,11 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.toArrayBuffer = exports.decodeBuffer = exports.encodeBuffer = void 0;
|
|
4
4
|
var web_encoding_1 = require("web-encoding");
|
|
5
|
+
var encoder = new web_encoding_1.TextEncoder();
|
|
5
6
|
function encodeBuffer(text) {
|
|
6
|
-
|
|
7
|
-
var encoded = encoder.encode(text);
|
|
8
|
-
return getArrayBuffer(encoded);
|
|
7
|
+
return encoder.encode(text);
|
|
9
8
|
}
|
|
10
9
|
exports.encodeBuffer = encodeBuffer;
|
|
11
10
|
function decodeBuffer(buffer, encoding) {
|
|
@@ -13,8 +12,13 @@ function decodeBuffer(buffer, encoding) {
|
|
|
13
12
|
return decoder.decode(buffer);
|
|
14
13
|
}
|
|
15
14
|
exports.decodeBuffer = decodeBuffer;
|
|
16
|
-
|
|
15
|
+
/**
|
|
16
|
+
* Create an `ArrayBuffer` from the given `Uint8Array`.
|
|
17
|
+
* Takes the byte offset into account to produce the right buffer
|
|
18
|
+
* in the case when the buffer is bigger than the data view.
|
|
19
|
+
*/
|
|
20
|
+
function toArrayBuffer(array) {
|
|
17
21
|
return array.buffer.slice(array.byteOffset, array.byteOffset + array.byteLength);
|
|
18
22
|
}
|
|
19
|
-
exports.
|
|
23
|
+
exports.toArrayBuffer = toArrayBuffer;
|
|
20
24
|
//# sourceMappingURL=bufferUtils.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bufferUtils.js","sourceRoot":"","sources":["../../src/utils/bufferUtils.ts"],"names":[],"mappings":";;;AAAA,6CAAuD;AAEvD,
|
|
1
|
+
{"version":3,"file":"bufferUtils.js","sourceRoot":"","sources":["../../src/utils/bufferUtils.ts"],"names":[],"mappings":";;;AAAA,6CAAuD;AAEvD,IAAM,OAAO,GAAG,IAAI,0BAAW,EAAE,CAAA;AAEjC,SAAgB,YAAY,CAAC,IAAY;IACvC,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;AAC7B,CAAC;AAFD,oCAEC;AAED,SAAgB,YAAY,CAAC,MAAmB,EAAE,QAAiB;IACjE,IAAM,OAAO,GAAG,IAAI,0BAAW,CAAC,QAAQ,CAAC,CAAA;IACzC,OAAO,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;AAC/B,CAAC;AAHD,oCAGC;AAED;;;;GAIG;AACH,SAAgB,aAAa,CAAC,KAAiB;IAC7C,OAAO,KAAK,CAAC,MAAM,CAAC,KAAK,CACvB,KAAK,CAAC,UAAU,EAChB,KAAK,CAAC,UAAU,GAAG,KAAK,CAAC,UAAU,CACpC,CAAA;AACH,CAAC;AALD,sCAKC"}
|
package/lib/utils/parseJson.d.ts
CHANGED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { LazyCallback } from './createLazyCallback';
|
|
2
|
+
declare type LazyResponseCallback = (response: Response) => void;
|
|
3
|
+
export declare type InteractiveRequest = globalThis.Request & {
|
|
4
|
+
respondWith: LazyCallback<LazyResponseCallback>;
|
|
5
|
+
};
|
|
6
|
+
export declare function toInteractiveRequest(request: Request): InteractiveRequest;
|
|
7
|
+
export {};
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.toInteractiveRequest = void 0;
|
|
4
|
+
var outvariant_1 = require("outvariant");
|
|
5
|
+
var createLazyCallback_1 = require("./createLazyCallback");
|
|
6
|
+
function toInteractiveRequest(request) {
|
|
7
|
+
Object.defineProperty(request, 'respondWith', {
|
|
8
|
+
writable: false,
|
|
9
|
+
enumerable: true,
|
|
10
|
+
value: (0, createLazyCallback_1.createLazyCallback)({
|
|
11
|
+
maxCalls: 1,
|
|
12
|
+
maxCallsCallback: function () {
|
|
13
|
+
throw new Error((0, outvariant_1.format)('Failed to respond to "%s %s" request: the "request" event has already been responded to.', request.method, request.url));
|
|
14
|
+
},
|
|
15
|
+
}),
|
|
16
|
+
});
|
|
17
|
+
return request;
|
|
18
|
+
}
|
|
19
|
+
exports.toInteractiveRequest = toInteractiveRequest;
|
|
20
|
+
//# sourceMappingURL=toInteractiveRequest.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"toInteractiveRequest.js","sourceRoot":"","sources":["../../src/utils/toInteractiveRequest.ts"],"names":[],"mappings":";;;AAAA,yCAAmC;AACnC,2DAAuE;AAQvE,SAAgB,oBAAoB,CAAC,OAAgB;IACnD,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,aAAa,EAAE;QAC5C,QAAQ,EAAE,KAAK;QACf,UAAU,EAAE,IAAI;QAChB,KAAK,EAAE,IAAA,uCAAkB,EAAuB;YAC9C,QAAQ,EAAE,CAAC;YACX,gBAAgB;gBACd,MAAM,IAAI,KAAK,CACb,IAAA,mBAAM,EACJ,0FAA0F,EAC1F,OAAO,CAAC,MAAM,EACd,OAAO,CAAC,GAAG,CACZ,CACF,CAAA;YACH,CAAC;SACF,CAAC;KACH,CAAC,CAAA;IAEF,OAAO,OAA6B,CAAA;AACtC,CAAC;AAnBD,oDAmBC"}
|
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.
|
|
4
|
+
"version": "0.18.1",
|
|
5
5
|
"main": "lib/index.js",
|
|
6
6
|
"typings": "lib/index.d.ts",
|
|
7
7
|
"author": "Artem Zakharchenko",
|
|
@@ -62,11 +62,12 @@
|
|
|
62
62
|
"superagent": "^6.1.0",
|
|
63
63
|
"supertest": "^6.1.6",
|
|
64
64
|
"ts-jest": "^27.1.1",
|
|
65
|
-
"typescript": "4.
|
|
65
|
+
"typescript": "4.4.4",
|
|
66
66
|
"wait-for-expect": "^3.0.2"
|
|
67
67
|
},
|
|
68
68
|
"dependencies": {
|
|
69
69
|
"@open-draft/until": "^1.0.3",
|
|
70
|
+
"@remix-run/web-fetch": "^4.3.1",
|
|
70
71
|
"@types/debug": "^4.1.7",
|
|
71
72
|
"@xmldom/xmldom": "^0.8.3",
|
|
72
73
|
"debug": "^4.3.3",
|
|
@@ -1,14 +1,34 @@
|
|
|
1
1
|
import { ChildProcess } from 'child_process'
|
|
2
|
-
import {
|
|
2
|
+
import { Response } from '@remix-run/web-fetch'
|
|
3
|
+
import { Headers, HeadersObject, headersToObject } from 'headers-polyfill'
|
|
3
4
|
import { HttpRequestEventMap } from './glossary'
|
|
4
5
|
import { Interceptor } from './Interceptor'
|
|
5
6
|
import { BatchInterceptor } from './BatchInterceptor'
|
|
6
7
|
import { ClientRequestInterceptor } from './interceptors/ClientRequest'
|
|
7
8
|
import { XMLHttpRequestInterceptor } from './interceptors/XMLHttpRequest'
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
10
|
-
|
|
11
|
-
|
|
9
|
+
import { toInteractiveRequest } from './utils/toInteractiveRequest'
|
|
10
|
+
import { RequestWithCredentials } from './utils/RequestWithCredentials'
|
|
11
|
+
|
|
12
|
+
export interface SerializedRequest {
|
|
13
|
+
id: string
|
|
14
|
+
url: string
|
|
15
|
+
method: string
|
|
16
|
+
headers: HeadersObject
|
|
17
|
+
credentials: RequestCredentials
|
|
18
|
+
body: string
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
interface RevivedRequest extends Omit<SerializedRequest, 'url' | 'headers'> {
|
|
22
|
+
url: URL
|
|
23
|
+
headers: Headers
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
export interface SerializedResponse {
|
|
27
|
+
status: number
|
|
28
|
+
statusText: string
|
|
29
|
+
headers: HeadersObject
|
|
30
|
+
body: string
|
|
31
|
+
}
|
|
12
32
|
|
|
13
33
|
export class RemoteHttpInterceptor extends BatchInterceptor<
|
|
14
34
|
[ClientRequestInterceptor, XMLHttpRequestInterceptor]
|
|
@@ -28,10 +48,19 @@ export class RemoteHttpInterceptor extends BatchInterceptor<
|
|
|
28
48
|
|
|
29
49
|
let handleParentMessage: NodeJS.MessageListener
|
|
30
50
|
|
|
31
|
-
this.on('request', async (request) => {
|
|
51
|
+
this.on('request', async (request, requestId) => {
|
|
32
52
|
// Send the stringified intercepted request to
|
|
33
53
|
// the parent process where the remote resolver is established.
|
|
34
|
-
const serializedRequest = JSON.stringify(
|
|
54
|
+
const serializedRequest = JSON.stringify({
|
|
55
|
+
id: requestId,
|
|
56
|
+
method: request.method,
|
|
57
|
+
url: request.url,
|
|
58
|
+
headers: headersToObject(request.headers),
|
|
59
|
+
credentials: request.credentials,
|
|
60
|
+
body: ['GET', 'HEAD'].includes(request.method)
|
|
61
|
+
? null
|
|
62
|
+
: await request.text(),
|
|
63
|
+
} as SerializedRequest)
|
|
35
64
|
|
|
36
65
|
this.log('sent serialized request to the child:', serializedRequest)
|
|
37
66
|
process.send?.(`request:${serializedRequest}`)
|
|
@@ -42,7 +71,7 @@ export class RemoteHttpInterceptor extends BatchInterceptor<
|
|
|
42
71
|
return resolve()
|
|
43
72
|
}
|
|
44
73
|
|
|
45
|
-
if (message.startsWith(`response:${
|
|
74
|
+
if (message.startsWith(`response:${requestId}`)) {
|
|
46
75
|
const [, serializedResponse] =
|
|
47
76
|
message.match(/^response:.+?:(.+)$/) || []
|
|
48
77
|
|
|
@@ -50,7 +79,16 @@ export class RemoteHttpInterceptor extends BatchInterceptor<
|
|
|
50
79
|
return resolve()
|
|
51
80
|
}
|
|
52
81
|
|
|
53
|
-
const
|
|
82
|
+
const responseInit = JSON.parse(
|
|
83
|
+
serializedResponse
|
|
84
|
+
) as SerializedResponse
|
|
85
|
+
|
|
86
|
+
const mockedResponse = new Response(responseInit.body, {
|
|
87
|
+
status: responseInit.status,
|
|
88
|
+
statusText: responseInit.statusText,
|
|
89
|
+
headers: new Headers(responseInit.headers),
|
|
90
|
+
})
|
|
91
|
+
|
|
54
92
|
request.respondWith(mockedResponse)
|
|
55
93
|
resolve()
|
|
56
94
|
}
|
|
@@ -111,36 +149,49 @@ export class RemoteHttpResolver extends Interceptor<HttpRequestEventMap> {
|
|
|
111
149
|
}
|
|
112
150
|
|
|
113
151
|
const [, serializedRequest] = message.match(/^request:(.+)$/) || []
|
|
114
|
-
|
|
115
152
|
if (!serializedRequest) {
|
|
116
153
|
return
|
|
117
154
|
}
|
|
118
155
|
|
|
119
|
-
const requestJson = JSON.parse(
|
|
156
|
+
const requestJson = JSON.parse(
|
|
157
|
+
serializedRequest,
|
|
158
|
+
requestReviver
|
|
159
|
+
) as RevivedRequest
|
|
120
160
|
log('parsed intercepted request', requestJson)
|
|
121
161
|
|
|
122
|
-
const
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
body: body
|
|
162
|
+
const capturedRequest = new RequestWithCredentials(requestJson.url, {
|
|
163
|
+
method: requestJson.method,
|
|
164
|
+
headers: new Headers(requestJson.headers),
|
|
165
|
+
credentials: requestJson.credentials,
|
|
166
|
+
body: requestJson.body,
|
|
127
167
|
})
|
|
128
168
|
|
|
129
|
-
const
|
|
130
|
-
|
|
169
|
+
const interactiveRequest = toInteractiveRequest(capturedRequest)
|
|
170
|
+
|
|
171
|
+
this.emitter.emit('request', interactiveRequest, requestJson.id)
|
|
172
|
+
await this.emitter.untilIdle(
|
|
173
|
+
'request',
|
|
174
|
+
({ args: [, pendingRequestId] }) => {
|
|
175
|
+
return pendingRequestId === requestJson.id
|
|
176
|
+
}
|
|
131
177
|
)
|
|
178
|
+
const [mockedResponse] = await interactiveRequest.respondWith.invoked()
|
|
132
179
|
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
})
|
|
137
|
-
const [mockedResponse] =
|
|
138
|
-
await interactiveIsomorphicRequest.respondWith.invoked()
|
|
180
|
+
if (!mockedResponse) {
|
|
181
|
+
return
|
|
182
|
+
}
|
|
139
183
|
|
|
140
184
|
log('event.respondWith called with:', mockedResponse)
|
|
185
|
+
const responseClone = mockedResponse.clone()
|
|
186
|
+
const responseText = await mockedResponse.text()
|
|
141
187
|
|
|
142
188
|
// Send the mocked response to the child process.
|
|
143
|
-
const serializedResponse = JSON.stringify(
|
|
189
|
+
const serializedResponse = JSON.stringify({
|
|
190
|
+
status: mockedResponse.status,
|
|
191
|
+
statusText: mockedResponse.statusText,
|
|
192
|
+
headers: headersToObject(mockedResponse.headers),
|
|
193
|
+
body: responseText,
|
|
194
|
+
} as SerializedResponse)
|
|
144
195
|
|
|
145
196
|
this.process.send(
|
|
146
197
|
`response:${requestJson.id}:${serializedResponse}`,
|
|
@@ -149,15 +200,14 @@ export class RemoteHttpResolver extends Interceptor<HttpRequestEventMap> {
|
|
|
149
200
|
return
|
|
150
201
|
}
|
|
151
202
|
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
}
|
|
203
|
+
// Emit an optimistic "response" event at this point,
|
|
204
|
+
// not to rely on the back-and-forth signaling for the sake of the event.
|
|
205
|
+
this.emitter.emit(
|
|
206
|
+
'response',
|
|
207
|
+
responseClone,
|
|
208
|
+
capturedRequest,
|
|
209
|
+
requestJson.id
|
|
210
|
+
)
|
|
161
211
|
}
|
|
162
212
|
)
|
|
163
213
|
|