@mswjs/interceptors 0.22.9 → 0.22.11
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/lib/browser/{Interceptor-c794917d.d.ts → Interceptor-c8fc448a.d.ts} +3 -3
- package/lib/browser/{chunk-GL6Y4E24.mjs → chunk-4W72RMFC.mjs} +19 -14
- package/lib/browser/{chunk-OK5YCL7L.js → chunk-ECRLBCQN.js} +55 -55
- package/lib/browser/{chunk-2Z7B3HL5.js → chunk-EGQUVEJ3.js} +23 -18
- package/lib/browser/{chunk-2EIH6L6D.js → chunk-KCAWLR7J.js} +25 -25
- package/lib/browser/{chunk-PGR64QLT.mjs → chunk-MJZRQFUP.mjs} +72 -58
- package/lib/browser/{chunk-BVV2ZW34.js → chunk-NHFEA72Q.js} +79 -65
- package/lib/browser/{chunk-2GVXYEMC.mjs → chunk-O7B67YBY.mjs} +54 -54
- package/lib/browser/{chunk-65HGG3CV.mjs → chunk-UYUNRMLU.mjs} +1 -1
- package/lib/browser/index.d.ts +3 -3
- package/lib/browser/index.js +8 -8
- package/lib/browser/index.mjs +6 -6
- package/lib/browser/interceptors/XMLHttpRequest/index.d.ts +2 -2
- package/lib/browser/interceptors/XMLHttpRequest/index.js +4 -4
- package/lib/browser/interceptors/XMLHttpRequest/index.mjs +3 -3
- package/lib/browser/interceptors/fetch/index.d.ts +2 -2
- package/lib/browser/interceptors/fetch/index.js +3 -3
- package/lib/browser/interceptors/fetch/index.mjs +2 -2
- package/lib/browser/presets/browser.d.ts +2 -2
- package/lib/browser/presets/browser.js +6 -6
- package/lib/browser/presets/browser.mjs +4 -4
- package/lib/node/{BatchInterceptor-5c1e5de3.d.ts → BatchInterceptor-fe69020d.d.ts} +1 -1
- package/lib/node/{Interceptor-b3a4098c.d.ts → Interceptor-f9dfe016.d.ts} +3 -3
- package/lib/node/RemoteHttpInterceptor.d.ts +3 -3
- package/lib/node/RemoteHttpInterceptor.js +25 -19
- package/lib/node/RemoteHttpInterceptor.mjs +21 -15
- package/lib/node/{chunk-F7BBA6FT.js → chunk-2OJRZCGS.js} +76 -62
- package/lib/node/{chunk-6CRMKMDL.mjs → chunk-3V5OWTY7.mjs} +54 -55
- package/lib/node/{chunk-62KFIM4W.js → chunk-6KJ5M2VR.js} +56 -57
- package/lib/node/{chunk-62MBJHEQ.js → chunk-7XU7Q63W.js} +116 -98
- package/lib/node/{chunk-MUUQLKVJ.js → chunk-PKB2CXQV.js} +3 -3
- package/lib/node/{chunk-SFLY7F52.js → chunk-RJMXHEGJ.js} +6 -6
- package/lib/node/{chunk-X3TLFWGD.mjs → chunk-RL5IV5PL.mjs} +72 -58
- package/lib/node/{chunk-RFVEKRYP.mjs → chunk-S5A4P4BZ.mjs} +1 -1
- package/lib/node/{chunk-IC6Y7RGW.mjs → chunk-SBAVVQIW.mjs} +5 -5
- package/lib/node/{chunk-O7RUZJPG.mjs → chunk-XVHIXGXD.mjs} +116 -98
- package/lib/node/index.d.ts +3 -3
- package/lib/node/index.js +4 -4
- package/lib/node/index.mjs +3 -3
- package/lib/node/interceptors/ClientRequest/index.d.ts +2 -2
- package/lib/node/interceptors/ClientRequest/index.js +3 -3
- package/lib/node/interceptors/ClientRequest/index.mjs +2 -2
- package/lib/node/interceptors/XMLHttpRequest/index.d.ts +2 -2
- package/lib/node/interceptors/XMLHttpRequest/index.js +4 -4
- package/lib/node/interceptors/XMLHttpRequest/index.mjs +3 -3
- package/lib/node/interceptors/fetch/index.d.ts +2 -2
- package/lib/node/interceptors/fetch/index.js +20 -15
- package/lib/node/interceptors/fetch/index.mjs +19 -14
- package/lib/node/presets/node.d.ts +2 -2
- package/lib/node/presets/node.js +6 -6
- package/lib/node/presets/node.mjs +4 -4
- package/package.json +3 -4
- package/src/BatchInterceptor.ts +4 -4
- package/src/Interceptor.ts +27 -27
- package/src/RemoteHttpInterceptor.ts +16 -10
- package/src/interceptors/ClientRequest/NodeClientRequest.test.ts +11 -11
- package/src/interceptors/ClientRequest/NodeClientRequest.ts +53 -42
- package/src/interceptors/ClientRequest/http.request.ts +3 -3
- package/src/interceptors/ClientRequest/index.ts +4 -4
- package/src/interceptors/ClientRequest/utils/createRequest.test.ts +5 -5
- package/src/interceptors/ClientRequest/utils/getIncomingMessageBody.ts +7 -7
- package/src/interceptors/ClientRequest/utils/normalizeClientRequestArgs.ts +27 -27
- package/src/interceptors/ClientRequest/utils/normalizeClientRequestEndArgs.ts +4 -4
- package/src/interceptors/ClientRequest/utils/normalizeClientRequestWriteArgs.ts +7 -4
- package/src/interceptors/XMLHttpRequest/XMLHttpRequestController.ts +47 -36
- package/src/interceptors/XMLHttpRequest/XMLHttpRequestProxy.ts +21 -17
- package/src/interceptors/XMLHttpRequest/index.ts +5 -5
- package/src/interceptors/fetch/index.ts +19 -14
- package/src/utils/AsyncEventEmitter.ts +27 -27
- package/src/utils/cloneObject.ts +7 -7
- package/src/utils/getUrlByRequestOptions.ts +13 -13
- package/src/utils/debug.ts +0 -4
|
@@ -1,5 +1,5 @@
|
|
|
1
|
+
import { Logger } from '@open-draft/logger';
|
|
1
2
|
import { EventMap, Emitter, Listener } from 'strict-event-emitter';
|
|
2
|
-
import { Debugger } from 'debug';
|
|
3
3
|
|
|
4
4
|
type AnyFunction = (...args: any[]) => any;
|
|
5
5
|
type LazyCallbackReturnType<FnType extends AnyFunction> = Parameters<FnType> | [];
|
|
@@ -30,7 +30,7 @@ declare enum AsyncEventEmitterReadyState {
|
|
|
30
30
|
}
|
|
31
31
|
declare class AsyncEventEmitter<Events extends EventMap> extends Emitter<Events> {
|
|
32
32
|
readyState: AsyncEventEmitterReadyState;
|
|
33
|
-
private
|
|
33
|
+
private logger;
|
|
34
34
|
protected queue: Map<keyof Events, Array<QueueItem<Events[any]>>>;
|
|
35
35
|
constructor();
|
|
36
36
|
on<EventName extends keyof Events>(eventName: EventName, listener: Listener<any>): this;
|
|
@@ -69,7 +69,7 @@ declare class Interceptor<Events extends InterceptorEventMap> {
|
|
|
69
69
|
private readonly symbol;
|
|
70
70
|
protected emitter: AsyncEventEmitter<Events>;
|
|
71
71
|
protected subscriptions: Array<InterceptorSubscription>;
|
|
72
|
-
protected
|
|
72
|
+
protected logger: Logger;
|
|
73
73
|
readyState: InterceptorReadyState;
|
|
74
74
|
constructor(symbol: symbol);
|
|
75
75
|
/**
|
|
@@ -5,7 +5,7 @@ import {
|
|
|
5
5
|
import {
|
|
6
6
|
IS_PATCHED_MODULE,
|
|
7
7
|
Interceptor
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-O7B67YBY.mjs";
|
|
9
9
|
|
|
10
10
|
// src/interceptors/fetch/index.ts
|
|
11
11
|
import { invariant } from "outvariant";
|
|
@@ -24,37 +24,39 @@ var _FetchInterceptor = class extends Interceptor {
|
|
|
24
24
|
'Failed to patch the "fetch" module: already patched.'
|
|
25
25
|
);
|
|
26
26
|
globalThis.fetch = async (input, init) => {
|
|
27
|
+
var _a;
|
|
27
28
|
const requestId = uuidv4();
|
|
28
29
|
const request = new Request(input, init);
|
|
29
|
-
this.
|
|
30
|
+
this.logger.info("[%s] %s", request.method, request.url);
|
|
30
31
|
const interactiveRequest = toInteractiveRequest(request);
|
|
31
|
-
this.
|
|
32
|
+
this.logger.info(
|
|
32
33
|
'emitting the "request" event for %d listener(s)...',
|
|
33
34
|
this.emitter.listenerCount("request")
|
|
34
35
|
);
|
|
35
36
|
this.emitter.emit("request", interactiveRequest, requestId);
|
|
36
|
-
this.
|
|
37
|
-
const
|
|
37
|
+
this.logger.info("awaiting for the mocked response...");
|
|
38
|
+
const resolverResult = await until(async () => {
|
|
38
39
|
await this.emitter.untilIdle(
|
|
39
40
|
"request",
|
|
40
41
|
({ args: [, pendingRequestId] }) => {
|
|
41
42
|
return pendingRequestId === requestId;
|
|
42
43
|
}
|
|
43
44
|
);
|
|
44
|
-
this.
|
|
45
|
+
this.logger.info("all request listeners have been resolved!");
|
|
45
46
|
const [mockedResponse2] = await interactiveRequest.respondWith.invoked();
|
|
46
|
-
this.
|
|
47
|
+
this.logger.info("event.respondWith called with:", mockedResponse2);
|
|
47
48
|
return mockedResponse2;
|
|
48
49
|
});
|
|
49
|
-
if (
|
|
50
|
+
if (resolverResult.error) {
|
|
50
51
|
console.error(`${request.method} ${request.url} net::ERR_FAILED`);
|
|
51
52
|
const error = Object.assign(new TypeError("Failed to fetch"), {
|
|
52
|
-
cause:
|
|
53
|
+
cause: resolverResult.error
|
|
53
54
|
});
|
|
54
55
|
return Promise.reject(error);
|
|
55
56
|
}
|
|
56
|
-
|
|
57
|
-
|
|
57
|
+
const mockedResponse = resolverResult.data;
|
|
58
|
+
if (mockedResponse && !((_a = request.signal) == null ? void 0 : _a.aborted)) {
|
|
59
|
+
this.logger.info("received mocked response:", mockedResponse);
|
|
58
60
|
const responseCloine = mockedResponse.clone();
|
|
59
61
|
this.emitter.emit(
|
|
60
62
|
"response",
|
|
@@ -71,10 +73,10 @@ var _FetchInterceptor = class extends Interceptor {
|
|
|
71
73
|
});
|
|
72
74
|
return response;
|
|
73
75
|
}
|
|
74
|
-
this.
|
|
76
|
+
this.logger.info("no mocked response received!");
|
|
75
77
|
return pureFetch(request).then((response) => {
|
|
76
78
|
const responseClone = response.clone();
|
|
77
|
-
this.
|
|
79
|
+
this.logger.info("original fetch performed", responseClone);
|
|
78
80
|
this.emitter.emit(
|
|
79
81
|
"response",
|
|
80
82
|
responseClone,
|
|
@@ -94,7 +96,10 @@ var _FetchInterceptor = class extends Interceptor {
|
|
|
94
96
|
value: void 0
|
|
95
97
|
});
|
|
96
98
|
globalThis.fetch = pureFetch;
|
|
97
|
-
this.
|
|
99
|
+
this.logger.info(
|
|
100
|
+
'restored native "globalThis.fetch"!',
|
|
101
|
+
globalThis.fetch.name
|
|
102
|
+
);
|
|
98
103
|
});
|
|
99
104
|
}
|
|
100
105
|
};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports, "__esModule", {value: true});
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true});var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
2
2
|
var __commonJS = (cb, mod) => function __require() {
|
|
3
3
|
return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
|
|
4
4
|
};
|
|
@@ -6,7 +6,11 @@ var __commonJS = (cb, mod) => function __require() {
|
|
|
6
6
|
// src/glossary.ts
|
|
7
7
|
var IS_PATCHED_MODULE = Symbol("isPatchedModule");
|
|
8
8
|
|
|
9
|
+
// src/Interceptor.ts
|
|
10
|
+
var _logger = require('@open-draft/logger');
|
|
11
|
+
|
|
9
12
|
// src/utils/AsyncEventEmitter.ts
|
|
13
|
+
|
|
10
14
|
var _stricteventemitter = require('strict-event-emitter');
|
|
11
15
|
|
|
12
16
|
// src/utils/nextTick.ts
|
|
@@ -14,37 +18,33 @@ function nextTick(callback) {
|
|
|
14
18
|
setTimeout(callback, 0);
|
|
15
19
|
}
|
|
16
20
|
|
|
17
|
-
// src/utils/debug.ts
|
|
18
|
-
var _debug = require('debug'); var _debug2 = _interopRequireDefault(_debug);
|
|
19
|
-
var debug = _debug2.default;
|
|
20
|
-
|
|
21
21
|
// src/utils/AsyncEventEmitter.ts
|
|
22
22
|
var AsyncEventEmitter = class extends _stricteventemitter.Emitter {
|
|
23
23
|
constructor() {
|
|
24
24
|
super();
|
|
25
|
-
this.
|
|
25
|
+
this.logger = new (0, _logger.Logger)("async-event-emitter");
|
|
26
26
|
this.queue = /* @__PURE__ */ new Map();
|
|
27
27
|
this.readyState = "ACTIVE" /* ACTIVE */;
|
|
28
28
|
}
|
|
29
29
|
on(eventName, listener) {
|
|
30
|
-
const
|
|
31
|
-
|
|
30
|
+
const logger = this.logger.extend("on");
|
|
31
|
+
logger.info('adding "%s" listener...', eventName);
|
|
32
32
|
if (this.readyState === "DEACTIVATED" /* DEACTIVATED */) {
|
|
33
|
-
|
|
33
|
+
logger.info("the emitter is destroyed, skipping!");
|
|
34
34
|
return this;
|
|
35
35
|
}
|
|
36
36
|
return super.on(eventName, async (...args) => {
|
|
37
37
|
const queue = this.openListenerQueue(eventName);
|
|
38
|
-
|
|
38
|
+
logger.info('awaiting the "%s" listener...', eventName);
|
|
39
39
|
queue.push({
|
|
40
40
|
args,
|
|
41
41
|
done: new Promise(async (resolve, reject) => {
|
|
42
42
|
try {
|
|
43
43
|
await listener(...args);
|
|
44
44
|
resolve();
|
|
45
|
-
|
|
45
|
+
logger.info('"%s" listener has resolved!', eventName);
|
|
46
46
|
} catch (error) {
|
|
47
|
-
|
|
47
|
+
logger.info('"%s" listener has rejected!', error);
|
|
48
48
|
reject(error);
|
|
49
49
|
}
|
|
50
50
|
})
|
|
@@ -52,21 +52,21 @@ var AsyncEventEmitter = class extends _stricteventemitter.Emitter {
|
|
|
52
52
|
});
|
|
53
53
|
}
|
|
54
54
|
emit(eventName, ...data) {
|
|
55
|
-
const
|
|
56
|
-
|
|
55
|
+
const logger = this.logger.extend("emit");
|
|
56
|
+
logger.info('emitting "%s" event...', eventName);
|
|
57
57
|
if (this.readyState === "DEACTIVATED" /* DEACTIVATED */) {
|
|
58
|
-
|
|
58
|
+
logger.info("the emitter is destroyed, skipping!");
|
|
59
59
|
return false;
|
|
60
60
|
}
|
|
61
61
|
if (this.isInternalEventName(eventName)) {
|
|
62
62
|
return super.emit(eventName, ...data);
|
|
63
63
|
}
|
|
64
64
|
this.openListenerQueue(eventName);
|
|
65
|
-
|
|
65
|
+
logger.info('appending a one-time cleanup "%s" listener...', eventName);
|
|
66
66
|
this.once(eventName, () => {
|
|
67
67
|
nextTick(() => {
|
|
68
68
|
this.queue.delete(eventName);
|
|
69
|
-
|
|
69
|
+
logger.info('cleaned up "%s" listeners queue!', eventName);
|
|
70
70
|
});
|
|
71
71
|
});
|
|
72
72
|
return super.emit(eventName, ...data);
|
|
@@ -80,44 +80,44 @@ var AsyncEventEmitter = class extends _stricteventemitter.Emitter {
|
|
|
80
80
|
});
|
|
81
81
|
}
|
|
82
82
|
openListenerQueue(eventName) {
|
|
83
|
-
const
|
|
84
|
-
|
|
83
|
+
const logger = this.logger.extend("openListenerQueue");
|
|
84
|
+
logger.info('opening "%s" listeners queue...', eventName);
|
|
85
85
|
const queue = this.queue.get(eventName);
|
|
86
86
|
if (!queue) {
|
|
87
|
-
|
|
87
|
+
logger.info("no queue found, creating one...");
|
|
88
88
|
this.queue.set(eventName, []);
|
|
89
89
|
return [];
|
|
90
90
|
}
|
|
91
|
-
|
|
91
|
+
logger.info("returning an exising queue:", queue);
|
|
92
92
|
return queue;
|
|
93
93
|
}
|
|
94
94
|
removeAllListeners(eventName) {
|
|
95
|
-
const
|
|
96
|
-
|
|
95
|
+
const logger = this.logger.extend("removeAllListeners");
|
|
96
|
+
logger.info("event:", eventName);
|
|
97
97
|
if (eventName) {
|
|
98
98
|
this.queue.delete(eventName);
|
|
99
|
-
|
|
99
|
+
logger.info(
|
|
100
100
|
'cleared the "%s" listeners queue!',
|
|
101
101
|
eventName,
|
|
102
102
|
this.queue.get(eventName)
|
|
103
103
|
);
|
|
104
104
|
} else {
|
|
105
105
|
this.queue.clear();
|
|
106
|
-
|
|
106
|
+
logger.info("cleared the listeners queue!", this.queue);
|
|
107
107
|
}
|
|
108
108
|
return super.removeAllListeners(eventName);
|
|
109
109
|
}
|
|
110
110
|
activate() {
|
|
111
|
-
const
|
|
111
|
+
const logger = this.logger.extend("activate");
|
|
112
112
|
this.readyState = "ACTIVE" /* ACTIVE */;
|
|
113
|
-
|
|
113
|
+
logger.info("set state to:", this.readyState);
|
|
114
114
|
}
|
|
115
115
|
deactivate() {
|
|
116
|
-
const
|
|
117
|
-
|
|
116
|
+
const logger = this.logger.extend("deactivate");
|
|
117
|
+
logger.info("removing all listeners...");
|
|
118
118
|
this.removeAllListeners();
|
|
119
119
|
this.readyState = "DEACTIVATED" /* DEACTIVATED */;
|
|
120
|
-
|
|
120
|
+
logger.info("set state to:", this.readyState);
|
|
121
121
|
}
|
|
122
122
|
isInternalEventName(eventName) {
|
|
123
123
|
return eventName === "newListener" || eventName === "removeListener";
|
|
@@ -148,37 +148,37 @@ var Interceptor = class {
|
|
|
148
148
|
this.readyState = "INACTIVE" /* INACTIVE */;
|
|
149
149
|
this.emitter = new AsyncEventEmitter();
|
|
150
150
|
this.subscriptions = [];
|
|
151
|
-
this.
|
|
151
|
+
this.logger = new (0, _logger.Logger)(symbol.description);
|
|
152
152
|
this.emitter.setMaxListeners(0);
|
|
153
|
-
this.
|
|
153
|
+
this.logger.info("constructing the interceptor...");
|
|
154
154
|
}
|
|
155
155
|
checkEnvironment() {
|
|
156
156
|
return true;
|
|
157
157
|
}
|
|
158
158
|
apply() {
|
|
159
|
-
const
|
|
160
|
-
|
|
159
|
+
const logger = this.logger.extend("apply");
|
|
160
|
+
logger.info("applying the interceptor...");
|
|
161
161
|
if (this.readyState === "APPLIED" /* APPLIED */) {
|
|
162
|
-
|
|
162
|
+
logger.info("intercepted already applied!");
|
|
163
163
|
return;
|
|
164
164
|
}
|
|
165
165
|
const shouldApply = this.checkEnvironment();
|
|
166
166
|
if (!shouldApply) {
|
|
167
|
-
|
|
167
|
+
logger.info("the interceptor cannot be applied in this environment!");
|
|
168
168
|
return;
|
|
169
169
|
}
|
|
170
170
|
this.readyState = "APPLYING" /* APPLYING */;
|
|
171
171
|
this.emitter.activate();
|
|
172
|
-
|
|
172
|
+
logger.info("activated the emiter!", this.emitter.readyState);
|
|
173
173
|
const runningInstance = this.getInstance();
|
|
174
174
|
if (runningInstance) {
|
|
175
|
-
|
|
175
|
+
logger.info("found a running instance, reusing...");
|
|
176
176
|
this.on = (event, listener) => {
|
|
177
|
-
|
|
177
|
+
logger.info('proxying the "%s" listener', event);
|
|
178
178
|
runningInstance.emitter.addListener(event, listener);
|
|
179
179
|
this.subscriptions.push(() => {
|
|
180
180
|
runningInstance.emitter.removeListener(event, listener);
|
|
181
|
-
|
|
181
|
+
logger.info('removed proxied "%s" listener!', event);
|
|
182
182
|
});
|
|
183
183
|
};
|
|
184
184
|
nextTick(() => {
|
|
@@ -186,7 +186,7 @@ var Interceptor = class {
|
|
|
186
186
|
});
|
|
187
187
|
return;
|
|
188
188
|
}
|
|
189
|
-
|
|
189
|
+
logger.info("no running instance found, setting up a new instance...");
|
|
190
190
|
this.setup();
|
|
191
191
|
this.setInstance();
|
|
192
192
|
nextTick(() => {
|
|
@@ -196,38 +196,38 @@ var Interceptor = class {
|
|
|
196
196
|
setup() {
|
|
197
197
|
}
|
|
198
198
|
on(eventName, listener) {
|
|
199
|
-
const
|
|
199
|
+
const logger = this.logger.extend("on");
|
|
200
200
|
if (this.readyState === "DISPOSING" /* DISPOSING */ || this.readyState === "DISPOSED" /* DISPOSED */) {
|
|
201
|
-
|
|
201
|
+
logger.info("cannot listen to events, already disposed!");
|
|
202
202
|
return;
|
|
203
203
|
}
|
|
204
|
-
|
|
204
|
+
logger.info('adding "%s" event listener:', eventName, listener.name);
|
|
205
205
|
this.emitter.on(eventName, listener);
|
|
206
206
|
}
|
|
207
207
|
dispose() {
|
|
208
|
-
const
|
|
208
|
+
const logger = this.logger.extend("dispose");
|
|
209
209
|
if (this.readyState === "DISPOSED" /* DISPOSED */) {
|
|
210
|
-
|
|
210
|
+
logger.info("cannot dispose, already disposed!");
|
|
211
211
|
return;
|
|
212
212
|
}
|
|
213
|
-
|
|
213
|
+
logger.info("disposing the interceptor...");
|
|
214
214
|
this.readyState = "DISPOSING" /* DISPOSING */;
|
|
215
215
|
if (!this.getInstance()) {
|
|
216
|
-
|
|
216
|
+
logger.info("no interceptors running, skipping dispose...");
|
|
217
217
|
return;
|
|
218
218
|
}
|
|
219
219
|
this.clearInstance();
|
|
220
|
-
|
|
220
|
+
logger.info("global symbol deleted:", getGlobalSymbol(this.symbol));
|
|
221
221
|
if (this.subscriptions.length > 0) {
|
|
222
|
-
|
|
222
|
+
logger.info("disposing of %d subscriptions...", this.subscriptions.length);
|
|
223
223
|
for (const dispose of this.subscriptions) {
|
|
224
224
|
dispose();
|
|
225
225
|
}
|
|
226
226
|
this.subscriptions = [];
|
|
227
|
-
|
|
227
|
+
logger.info("disposed of all subscriptions!", this.subscriptions.length);
|
|
228
228
|
}
|
|
229
229
|
this.emitter.deactivate();
|
|
230
|
-
|
|
230
|
+
logger.info("destroyed the listener!");
|
|
231
231
|
nextTick(() => {
|
|
232
232
|
this.readyState = "DISPOSED" /* DISPOSED */;
|
|
233
233
|
});
|
|
@@ -235,16 +235,16 @@ var Interceptor = class {
|
|
|
235
235
|
getInstance() {
|
|
236
236
|
var _a;
|
|
237
237
|
const instance = getGlobalSymbol(this.symbol);
|
|
238
|
-
this.
|
|
238
|
+
this.logger.info("retrieved global instance:", (_a = instance == null ? void 0 : instance.constructor) == null ? void 0 : _a.name);
|
|
239
239
|
return instance;
|
|
240
240
|
}
|
|
241
241
|
setInstance() {
|
|
242
242
|
setGlobalSymbol(this.symbol, this);
|
|
243
|
-
this.
|
|
243
|
+
this.logger.info("set global instance!", this.symbol.description);
|
|
244
244
|
}
|
|
245
245
|
clearInstance() {
|
|
246
246
|
deleteGlobalSymbol(this.symbol);
|
|
247
|
-
this.
|
|
247
|
+
this.logger.info("cleared global instance!", this.symbol.description);
|
|
248
248
|
}
|
|
249
249
|
};
|
|
250
250
|
|
|
@@ -5,12 +5,12 @@ var _chunkPCFJD76Xjs = require('./chunk-PCFJD76X.js');
|
|
|
5
5
|
|
|
6
6
|
|
|
7
7
|
|
|
8
|
-
var
|
|
8
|
+
var _chunkECRLBCQNjs = require('./chunk-ECRLBCQN.js');
|
|
9
9
|
|
|
10
10
|
// src/interceptors/fetch/index.ts
|
|
11
11
|
var _outvariant = require('outvariant');
|
|
12
12
|
var _until = require('@open-draft/until');
|
|
13
|
-
var _FetchInterceptor = class extends
|
|
13
|
+
var _FetchInterceptor = class extends _chunkECRLBCQNjs.Interceptor {
|
|
14
14
|
constructor() {
|
|
15
15
|
super(_FetchInterceptor.symbol);
|
|
16
16
|
}
|
|
@@ -20,41 +20,43 @@ var _FetchInterceptor = class extends _chunkOK5YCL7Ljs.Interceptor {
|
|
|
20
20
|
setup() {
|
|
21
21
|
const pureFetch = globalThis.fetch;
|
|
22
22
|
_outvariant.invariant.call(void 0,
|
|
23
|
-
!pureFetch[
|
|
23
|
+
!pureFetch[_chunkECRLBCQNjs.IS_PATCHED_MODULE],
|
|
24
24
|
'Failed to patch the "fetch" module: already patched.'
|
|
25
25
|
);
|
|
26
26
|
globalThis.fetch = async (input, init) => {
|
|
27
|
+
var _a;
|
|
27
28
|
const requestId = _chunkPCFJD76Xjs.uuidv4.call(void 0, );
|
|
28
29
|
const request = new Request(input, init);
|
|
29
|
-
this.
|
|
30
|
+
this.logger.info("[%s] %s", request.method, request.url);
|
|
30
31
|
const interactiveRequest = _chunkPCFJD76Xjs.toInteractiveRequest.call(void 0, request);
|
|
31
|
-
this.
|
|
32
|
+
this.logger.info(
|
|
32
33
|
'emitting the "request" event for %d listener(s)...',
|
|
33
34
|
this.emitter.listenerCount("request")
|
|
34
35
|
);
|
|
35
36
|
this.emitter.emit("request", interactiveRequest, requestId);
|
|
36
|
-
this.
|
|
37
|
-
const
|
|
37
|
+
this.logger.info("awaiting for the mocked response...");
|
|
38
|
+
const resolverResult = await _until.until.call(void 0, async () => {
|
|
38
39
|
await this.emitter.untilIdle(
|
|
39
40
|
"request",
|
|
40
41
|
({ args: [, pendingRequestId] }) => {
|
|
41
42
|
return pendingRequestId === requestId;
|
|
42
43
|
}
|
|
43
44
|
);
|
|
44
|
-
this.
|
|
45
|
+
this.logger.info("all request listeners have been resolved!");
|
|
45
46
|
const [mockedResponse2] = await interactiveRequest.respondWith.invoked();
|
|
46
|
-
this.
|
|
47
|
+
this.logger.info("event.respondWith called with:", mockedResponse2);
|
|
47
48
|
return mockedResponse2;
|
|
48
49
|
});
|
|
49
|
-
if (
|
|
50
|
+
if (resolverResult.error) {
|
|
50
51
|
console.error(`${request.method} ${request.url} net::ERR_FAILED`);
|
|
51
52
|
const error = Object.assign(new TypeError("Failed to fetch"), {
|
|
52
|
-
cause:
|
|
53
|
+
cause: resolverResult.error
|
|
53
54
|
});
|
|
54
55
|
return Promise.reject(error);
|
|
55
56
|
}
|
|
56
|
-
|
|
57
|
-
|
|
57
|
+
const mockedResponse = resolverResult.data;
|
|
58
|
+
if (mockedResponse && !((_a = request.signal) == null ? void 0 : _a.aborted)) {
|
|
59
|
+
this.logger.info("received mocked response:", mockedResponse);
|
|
58
60
|
const responseCloine = mockedResponse.clone();
|
|
59
61
|
this.emitter.emit(
|
|
60
62
|
"response",
|
|
@@ -71,10 +73,10 @@ var _FetchInterceptor = class extends _chunkOK5YCL7Ljs.Interceptor {
|
|
|
71
73
|
});
|
|
72
74
|
return response;
|
|
73
75
|
}
|
|
74
|
-
this.
|
|
76
|
+
this.logger.info("no mocked response received!");
|
|
75
77
|
return pureFetch(request).then((response) => {
|
|
76
78
|
const responseClone = response.clone();
|
|
77
|
-
this.
|
|
79
|
+
this.logger.info("original fetch performed", responseClone);
|
|
78
80
|
this.emitter.emit(
|
|
79
81
|
"response",
|
|
80
82
|
responseClone,
|
|
@@ -84,17 +86,20 @@ var _FetchInterceptor = class extends _chunkOK5YCL7Ljs.Interceptor {
|
|
|
84
86
|
return response;
|
|
85
87
|
});
|
|
86
88
|
};
|
|
87
|
-
Object.defineProperty(globalThis.fetch,
|
|
89
|
+
Object.defineProperty(globalThis.fetch, _chunkECRLBCQNjs.IS_PATCHED_MODULE, {
|
|
88
90
|
enumerable: true,
|
|
89
91
|
configurable: true,
|
|
90
92
|
value: true
|
|
91
93
|
});
|
|
92
94
|
this.subscriptions.push(() => {
|
|
93
|
-
Object.defineProperty(globalThis.fetch,
|
|
95
|
+
Object.defineProperty(globalThis.fetch, _chunkECRLBCQNjs.IS_PATCHED_MODULE, {
|
|
94
96
|
value: void 0
|
|
95
97
|
});
|
|
96
98
|
globalThis.fetch = pureFetch;
|
|
97
|
-
this.
|
|
99
|
+
this.logger.info(
|
|
100
|
+
'restored native "globalThis.fetch"!',
|
|
101
|
+
globalThis.fetch.name
|
|
102
|
+
);
|
|
98
103
|
});
|
|
99
104
|
}
|
|
100
105
|
};
|