@depup/mswjs__interceptors 0.41.3-depup.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.
- package/ClientRequest/package.json +11 -0
- package/LICENSE.md +9 -0
- package/README.md +31 -0
- package/RemoteHttpInterceptor/package.json +11 -0
- package/WebSocket/package.json +12 -0
- package/XMLHttpRequest/package.json +12 -0
- package/changes.json +10 -0
- package/fetch/package.json +12 -0
- package/lib/browser/Interceptor-Deczogc8.d.cts +65 -0
- package/lib/browser/Interceptor-gqKgs-aF.d.mts +65 -0
- package/lib/browser/XMLHttpRequest-BACqefB-.cjs +761 -0
- package/lib/browser/XMLHttpRequest-BACqefB-.cjs.map +1 -0
- package/lib/browser/XMLHttpRequest-BvxZV0WU.mjs +756 -0
- package/lib/browser/XMLHttpRequest-BvxZV0WU.mjs.map +1 -0
- package/lib/browser/bufferUtils-BiiO6HZv.mjs +20 -0
- package/lib/browser/bufferUtils-BiiO6HZv.mjs.map +1 -0
- package/lib/browser/bufferUtils-Uc0eRItL.cjs +38 -0
- package/lib/browser/bufferUtils-Uc0eRItL.cjs.map +1 -0
- package/lib/browser/createRequestId-Cs4oXfa1.cjs +205 -0
- package/lib/browser/createRequestId-Cs4oXfa1.cjs.map +1 -0
- package/lib/browser/createRequestId-DQcIlohW.mjs +170 -0
- package/lib/browser/createRequestId-DQcIlohW.mjs.map +1 -0
- package/lib/browser/fetch-DdKEdDOR.mjs +248 -0
- package/lib/browser/fetch-DdKEdDOR.mjs.map +1 -0
- package/lib/browser/fetch-U3v3Y4ap.cjs +253 -0
- package/lib/browser/fetch-U3v3Y4ap.cjs.map +1 -0
- package/lib/browser/getRawRequest-BTaNLFr0.mjs +218 -0
- package/lib/browser/getRawRequest-BTaNLFr0.mjs.map +1 -0
- package/lib/browser/getRawRequest-zx8rUJL2.cjs +259 -0
- package/lib/browser/getRawRequest-zx8rUJL2.cjs.map +1 -0
- package/lib/browser/glossary-BdLS4k1H.d.cts +70 -0
- package/lib/browser/glossary-DYwOrogs.d.mts +70 -0
- package/lib/browser/handleRequest-CvX2G-Lz.cjs +189 -0
- package/lib/browser/handleRequest-CvX2G-Lz.cjs.map +1 -0
- package/lib/browser/handleRequest-D7kpTI5U.mjs +178 -0
- package/lib/browser/handleRequest-D7kpTI5U.mjs.map +1 -0
- package/lib/browser/hasConfigurableGlobal-BvCTG97d.cjs +45 -0
- package/lib/browser/hasConfigurableGlobal-BvCTG97d.cjs.map +1 -0
- package/lib/browser/hasConfigurableGlobal-npXitu1-.mjs +33 -0
- package/lib/browser/hasConfigurableGlobal-npXitu1-.mjs.map +1 -0
- package/lib/browser/index.cjs +70 -0
- package/lib/browser/index.cjs.map +1 -0
- package/lib/browser/index.d.cts +96 -0
- package/lib/browser/index.d.mts +96 -0
- package/lib/browser/index.mjs +56 -0
- package/lib/browser/index.mjs.map +1 -0
- package/lib/browser/interceptors/WebSocket/index.cjs +622 -0
- package/lib/browser/interceptors/WebSocket/index.cjs.map +1 -0
- package/lib/browser/interceptors/WebSocket/index.d.cts +277 -0
- package/lib/browser/interceptors/WebSocket/index.d.mts +277 -0
- package/lib/browser/interceptors/WebSocket/index.mjs +615 -0
- package/lib/browser/interceptors/WebSocket/index.mjs.map +1 -0
- package/lib/browser/interceptors/XMLHttpRequest/index.cjs +7 -0
- package/lib/browser/interceptors/XMLHttpRequest/index.d.cts +15 -0
- package/lib/browser/interceptors/XMLHttpRequest/index.d.mts +15 -0
- package/lib/browser/interceptors/XMLHttpRequest/index.mjs +7 -0
- package/lib/browser/interceptors/fetch/index.cjs +6 -0
- package/lib/browser/interceptors/fetch/index.d.cts +13 -0
- package/lib/browser/interceptors/fetch/index.d.mts +13 -0
- package/lib/browser/interceptors/fetch/index.mjs +6 -0
- package/lib/browser/presets/browser.cjs +17 -0
- package/lib/browser/presets/browser.cjs.map +1 -0
- package/lib/browser/presets/browser.d.cts +12 -0
- package/lib/browser/presets/browser.d.mts +14 -0
- package/lib/browser/presets/browser.mjs +17 -0
- package/lib/browser/presets/browser.mjs.map +1 -0
- package/lib/browser/resolveWebSocketUrl-6K6EgqsA.cjs +31 -0
- package/lib/browser/resolveWebSocketUrl-6K6EgqsA.cjs.map +1 -0
- package/lib/browser/resolveWebSocketUrl-C83-x9iE.mjs +25 -0
- package/lib/browser/resolveWebSocketUrl-C83-x9iE.mjs.map +1 -0
- package/lib/node/BatchInterceptor-3LnAnLTx.cjs +49 -0
- package/lib/node/BatchInterceptor-3LnAnLTx.cjs.map +1 -0
- package/lib/node/BatchInterceptor-D7mXzHcQ.d.mts +26 -0
- package/lib/node/BatchInterceptor-DFaBPilf.mjs +44 -0
- package/lib/node/BatchInterceptor-DFaBPilf.mjs.map +1 -0
- package/lib/node/BatchInterceptor-D_YqR8qU.d.cts +26 -0
- package/lib/node/ClientRequest-2rDe54Ui.cjs +1043 -0
- package/lib/node/ClientRequest-2rDe54Ui.cjs.map +1 -0
- package/lib/node/ClientRequest-Ca8Qykuv.mjs +1034 -0
- package/lib/node/ClientRequest-Ca8Qykuv.mjs.map +1 -0
- package/lib/node/Interceptor-DEazpLJd.d.mts +133 -0
- package/lib/node/Interceptor-DJ2akVWI.d.cts +133 -0
- package/lib/node/RemoteHttpInterceptor.cjs +154 -0
- package/lib/node/RemoteHttpInterceptor.cjs.map +1 -0
- package/lib/node/RemoteHttpInterceptor.d.cts +39 -0
- package/lib/node/RemoteHttpInterceptor.d.mts +39 -0
- package/lib/node/RemoteHttpInterceptor.mjs +152 -0
- package/lib/node/RemoteHttpInterceptor.mjs.map +1 -0
- package/lib/node/XMLHttpRequest-B7kJdYYI.cjs +763 -0
- package/lib/node/XMLHttpRequest-B7kJdYYI.cjs.map +1 -0
- package/lib/node/XMLHttpRequest-C8dIZpds.mjs +757 -0
- package/lib/node/XMLHttpRequest-C8dIZpds.mjs.map +1 -0
- package/lib/node/bufferUtils-DiCTqG-7.cjs +38 -0
- package/lib/node/bufferUtils-DiCTqG-7.cjs.map +1 -0
- package/lib/node/bufferUtils-_8XfKIfX.mjs +20 -0
- package/lib/node/bufferUtils-_8XfKIfX.mjs.map +1 -0
- package/lib/node/chunk-CbDLau6x.cjs +34 -0
- package/lib/node/fetch-BmXpK10r.cjs +272 -0
- package/lib/node/fetch-BmXpK10r.cjs.map +1 -0
- package/lib/node/fetch-G1DVwDKG.mjs +265 -0
- package/lib/node/fetch-G1DVwDKG.mjs.map +1 -0
- package/lib/node/fetchUtils-BaY5iWXw.cjs +419 -0
- package/lib/node/fetchUtils-BaY5iWXw.cjs.map +1 -0
- package/lib/node/fetchUtils-CoU35g3M.mjs +359 -0
- package/lib/node/fetchUtils-CoU35g3M.mjs.map +1 -0
- package/lib/node/getRawRequest-BavnMWh_.cjs +36 -0
- package/lib/node/getRawRequest-BavnMWh_.cjs.map +1 -0
- package/lib/node/getRawRequest-DnwmXyOW.mjs +24 -0
- package/lib/node/getRawRequest-DnwmXyOW.mjs.map +1 -0
- package/lib/node/glossary-BLKRyLBd.cjs +12 -0
- package/lib/node/glossary-BLKRyLBd.cjs.map +1 -0
- package/lib/node/glossary-glQBRnVD.mjs +6 -0
- package/lib/node/glossary-glQBRnVD.mjs.map +1 -0
- package/lib/node/handleRequest-Bb7Y-XLw.cjs +220 -0
- package/lib/node/handleRequest-Bb7Y-XLw.cjs.map +1 -0
- package/lib/node/handleRequest-Y97UwBbF.mjs +190 -0
- package/lib/node/handleRequest-Y97UwBbF.mjs.map +1 -0
- package/lib/node/hasConfigurableGlobal-C97fWuaA.cjs +26 -0
- package/lib/node/hasConfigurableGlobal-C97fWuaA.cjs.map +1 -0
- package/lib/node/hasConfigurableGlobal-DBJA0vjm.mjs +20 -0
- package/lib/node/hasConfigurableGlobal-DBJA0vjm.mjs.map +1 -0
- package/lib/node/index-BMbJ8FXL.d.cts +113 -0
- package/lib/node/index-C0YAQ36w.d.mts +113 -0
- package/lib/node/index.cjs +54 -0
- package/lib/node/index.cjs.map +1 -0
- package/lib/node/index.d.cts +75 -0
- package/lib/node/index.d.mts +75 -0
- package/lib/node/index.mjs +40 -0
- package/lib/node/index.mjs.map +1 -0
- package/lib/node/interceptors/ClientRequest/index.cjs +6 -0
- package/lib/node/interceptors/ClientRequest/index.d.cts +2 -0
- package/lib/node/interceptors/ClientRequest/index.d.mts +3 -0
- package/lib/node/interceptors/ClientRequest/index.mjs +6 -0
- package/lib/node/interceptors/XMLHttpRequest/index.cjs +6 -0
- package/lib/node/interceptors/XMLHttpRequest/index.d.cts +14 -0
- package/lib/node/interceptors/XMLHttpRequest/index.d.mts +14 -0
- package/lib/node/interceptors/XMLHttpRequest/index.mjs +6 -0
- package/lib/node/interceptors/fetch/index.cjs +5 -0
- package/lib/node/interceptors/fetch/index.d.cts +12 -0
- package/lib/node/interceptors/fetch/index.d.mts +12 -0
- package/lib/node/interceptors/fetch/index.mjs +5 -0
- package/lib/node/node-DwCc6iuP.mjs +27 -0
- package/lib/node/node-DwCc6iuP.mjs.map +1 -0
- package/lib/node/node-dKdAf3tC.cjs +39 -0
- package/lib/node/node-dKdAf3tC.cjs.map +1 -0
- package/lib/node/presets/node.cjs +22 -0
- package/lib/node/presets/node.cjs.map +1 -0
- package/lib/node/presets/node.d.cts +13 -0
- package/lib/node/presets/node.d.mts +15 -0
- package/lib/node/presets/node.mjs +22 -0
- package/lib/node/presets/node.mjs.map +1 -0
- package/lib/node/utils/node/index.cjs +4 -0
- package/lib/node/utils/node/index.d.cts +16 -0
- package/lib/node/utils/node/index.d.mts +16 -0
- package/lib/node/utils/node/index.mjs +3 -0
- package/package.json +204 -0
- package/presets/browser/package.json +5 -0
- package/presets/node/package.json +11 -0
- package/src/BatchInterceptor.test.ts +255 -0
- package/src/BatchInterceptor.ts +95 -0
- package/src/Interceptor.test.ts +205 -0
- package/src/Interceptor.ts +249 -0
- package/src/InterceptorError.ts +7 -0
- package/src/RemoteHttpInterceptor.ts +251 -0
- package/src/RequestController.test.ts +104 -0
- package/src/RequestController.ts +109 -0
- package/src/createRequestId.test.ts +7 -0
- package/src/createRequestId.ts +9 -0
- package/src/getRawRequest.ts +21 -0
- package/src/glossary.ts +37 -0
- package/src/index.ts +15 -0
- package/src/interceptors/ClientRequest/MockHttpSocket.ts +724 -0
- package/src/interceptors/ClientRequest/agents.ts +110 -0
- package/src/interceptors/ClientRequest/index.test.ts +75 -0
- package/src/interceptors/ClientRequest/index.ts +193 -0
- package/src/interceptors/ClientRequest/utils/getIncomingMessageBody.test.ts +54 -0
- package/src/interceptors/ClientRequest/utils/getIncomingMessageBody.ts +45 -0
- package/src/interceptors/ClientRequest/utils/normalizeClientRequestArgs.test.ts +427 -0
- package/src/interceptors/ClientRequest/utils/normalizeClientRequestArgs.ts +268 -0
- package/src/interceptors/ClientRequest/utils/parserUtils.ts +48 -0
- package/src/interceptors/ClientRequest/utils/recordRawHeaders.test.ts +258 -0
- package/src/interceptors/ClientRequest/utils/recordRawHeaders.ts +262 -0
- package/src/interceptors/Socket/MockSocket.test.ts +264 -0
- package/src/interceptors/Socket/MockSocket.ts +58 -0
- package/src/interceptors/Socket/utils/baseUrlFromConnectionOptions.ts +26 -0
- package/src/interceptors/Socket/utils/normalizeSocketWriteArgs.test.ts +52 -0
- package/src/interceptors/Socket/utils/normalizeSocketWriteArgs.ts +33 -0
- package/src/interceptors/WebSocket/WebSocketClassTransport.ts +116 -0
- package/src/interceptors/WebSocket/WebSocketClientConnection.ts +152 -0
- package/src/interceptors/WebSocket/WebSocketOverride.ts +252 -0
- package/src/interceptors/WebSocket/WebSocketServerConnection.ts +420 -0
- package/src/interceptors/WebSocket/WebSocketTransport.ts +39 -0
- package/src/interceptors/WebSocket/index.ts +191 -0
- package/src/interceptors/WebSocket/utils/bindEvent.test.ts +27 -0
- package/src/interceptors/WebSocket/utils/bindEvent.ts +21 -0
- package/src/interceptors/WebSocket/utils/events.test.ts +101 -0
- package/src/interceptors/WebSocket/utils/events.ts +94 -0
- package/src/interceptors/XMLHttpRequest/XMLHttpRequestController.ts +746 -0
- package/src/interceptors/XMLHttpRequest/XMLHttpRequestProxy.ts +121 -0
- package/src/interceptors/XMLHttpRequest/index.ts +61 -0
- package/src/interceptors/XMLHttpRequest/polyfills/EventPolyfill.ts +51 -0
- package/src/interceptors/XMLHttpRequest/polyfills/ProgressEventPolyfill.ts +17 -0
- package/src/interceptors/XMLHttpRequest/utils/concatArrayBuffer.ts +12 -0
- package/src/interceptors/XMLHttpRequest/utils/concateArrayBuffer.test.ts +12 -0
- package/src/interceptors/XMLHttpRequest/utils/createEvent.test.ts +26 -0
- package/src/interceptors/XMLHttpRequest/utils/createEvent.ts +41 -0
- package/src/interceptors/XMLHttpRequest/utils/createResponse.ts +49 -0
- package/src/interceptors/XMLHttpRequest/utils/getBodyByteLength.test.ts +164 -0
- package/src/interceptors/XMLHttpRequest/utils/getBodyByteLength.ts +16 -0
- package/src/interceptors/XMLHttpRequest/utils/isDomParserSupportedType.ts +14 -0
- package/src/interceptors/fetch/index.ts +214 -0
- package/src/interceptors/fetch/utils/brotli-decompress.browser.ts +14 -0
- package/src/interceptors/fetch/utils/brotli-decompress.ts +31 -0
- package/src/interceptors/fetch/utils/createNetworkError.ts +5 -0
- package/src/interceptors/fetch/utils/decompression.ts +85 -0
- package/src/interceptors/fetch/utils/followRedirect.ts +114 -0
- package/src/presets/browser.ts +11 -0
- package/src/presets/node.ts +13 -0
- package/src/utils/bufferUtils.test.ts +21 -0
- package/src/utils/bufferUtils.ts +22 -0
- package/src/utils/canParseUrl.ts +13 -0
- package/src/utils/cloneObject.test.ts +94 -0
- package/src/utils/cloneObject.ts +36 -0
- package/src/utils/createProxy.test.ts +164 -0
- package/src/utils/createProxy.ts +104 -0
- package/src/utils/emitAsync.ts +25 -0
- package/src/utils/fetchUtils.ts +119 -0
- package/src/utils/findPropertySource.test.ts +27 -0
- package/src/utils/findPropertySource.ts +20 -0
- package/src/utils/getCleanUrl.test.ts +32 -0
- package/src/utils/getCleanUrl.ts +6 -0
- package/src/utils/getUrlByRequestOptions.test.ts +163 -0
- package/src/utils/getUrlByRequestOptions.ts +152 -0
- package/src/utils/getValueBySymbol.test.ts +14 -0
- package/src/utils/getValueBySymbol.ts +19 -0
- package/src/utils/handleRequest.ts +205 -0
- package/src/utils/hasConfigurableGlobal.test.ts +83 -0
- package/src/utils/hasConfigurableGlobal.ts +34 -0
- package/src/utils/isNodeLikeError.ts +13 -0
- package/src/utils/isObject.test.ts +21 -0
- package/src/utils/isObject.ts +8 -0
- package/src/utils/isPropertyAccessible.ts +19 -0
- package/src/utils/nextTick.ts +11 -0
- package/src/utils/node/index.ts +39 -0
- package/src/utils/parseJson.test.ts +10 -0
- package/src/utils/parseJson.ts +12 -0
- package/src/utils/resolveWebSocketUrl.ts +45 -0
- package/src/utils/responseUtils.ts +59 -0
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import "../fetchUtils-CoU35g3M.mjs";
|
|
2
|
+
import "../bufferUtils-_8XfKIfX.mjs";
|
|
3
|
+
import { t as ClientRequestInterceptor } from "../ClientRequest-Ca8Qykuv.mjs";
|
|
4
|
+
import "../handleRequest-Y97UwBbF.mjs";
|
|
5
|
+
import "../node-DwCc6iuP.mjs";
|
|
6
|
+
import { t as XMLHttpRequestInterceptor } from "../XMLHttpRequest-C8dIZpds.mjs";
|
|
7
|
+
import { t as FetchInterceptor } from "../fetch-G1DVwDKG.mjs";
|
|
8
|
+
|
|
9
|
+
//#region src/presets/node.ts
|
|
10
|
+
/**
|
|
11
|
+
* The default preset provisions the interception of requests
|
|
12
|
+
* regardless of their type (http/https/XMLHttpRequest).
|
|
13
|
+
*/
|
|
14
|
+
var node_default = [
|
|
15
|
+
new ClientRequestInterceptor(),
|
|
16
|
+
new XMLHttpRequestInterceptor(),
|
|
17
|
+
new FetchInterceptor()
|
|
18
|
+
];
|
|
19
|
+
|
|
20
|
+
//#endregion
|
|
21
|
+
export { node_default as default };
|
|
22
|
+
//# sourceMappingURL=node.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"node.mjs","names":[],"sources":["../../../src/presets/node.ts"],"sourcesContent":["import { ClientRequestInterceptor } from '../interceptors/ClientRequest'\nimport { XMLHttpRequestInterceptor } from '../interceptors/XMLHttpRequest'\nimport { FetchInterceptor } from '../interceptors/fetch'\n\n/**\n * The default preset provisions the interception of requests\n * regardless of their type (http/https/XMLHttpRequest).\n */\nexport default [\n new ClientRequestInterceptor(),\n new XMLHttpRequestInterceptor(),\n new FetchInterceptor(),\n] as const\n"],"mappings":";;;;;;;;;;;;;AAQA,mBAAe;CACb,IAAI,0BAA0B;CAC9B,IAAI,2BAA2B;CAC/B,IAAI,kBAAkB;CACvB"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { Readable } from "node:stream";
|
|
2
|
+
|
|
3
|
+
//#region src/utils/node/index.d.ts
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Returns the request body stream of the given request.
|
|
7
|
+
* @note This is only relevant in the context of `http.ClientRequest`.
|
|
8
|
+
* This function will throw if the given `request` wasn't created based on
|
|
9
|
+
* the `http.ClientRequest` instance.
|
|
10
|
+
* You must rely on the web stream consumers for other request clients.
|
|
11
|
+
*/
|
|
12
|
+
declare function getClientRequestBodyStream(request: Request): Readable;
|
|
13
|
+
declare function setRawRequestBodyStream(request: Request, stream: Readable): void;
|
|
14
|
+
//#endregion
|
|
15
|
+
export { getClientRequestBodyStream, setRawRequestBodyStream };
|
|
16
|
+
//# sourceMappingURL=index.d.cts.map
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { Readable } from "node:stream";
|
|
2
|
+
|
|
3
|
+
//#region src/utils/node/index.d.ts
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Returns the request body stream of the given request.
|
|
7
|
+
* @note This is only relevant in the context of `http.ClientRequest`.
|
|
8
|
+
* This function will throw if the given `request` wasn't created based on
|
|
9
|
+
* the `http.ClientRequest` instance.
|
|
10
|
+
* You must rely on the web stream consumers for other request clients.
|
|
11
|
+
*/
|
|
12
|
+
declare function getClientRequestBodyStream(request: Request): Readable;
|
|
13
|
+
declare function setRawRequestBodyStream(request: Request, stream: Readable): void;
|
|
14
|
+
//#endregion
|
|
15
|
+
export { getClientRequestBodyStream, setRawRequestBodyStream };
|
|
16
|
+
//# sourceMappingURL=index.d.mts.map
|
package/package.json
ADDED
|
@@ -0,0 +1,204 @@
|
|
|
1
|
+
{
|
|
2
|
+
"type": "commonjs",
|
|
3
|
+
"name": "@depup/mswjs__interceptors",
|
|
4
|
+
"description": "[DepUp] Low-level HTTP/HTTPS/XHR/fetch request interception library.",
|
|
5
|
+
"version": "0.41.3-depup.0",
|
|
6
|
+
"main": "./lib/node/index.cjs",
|
|
7
|
+
"module": "./lib/node/index.mjs",
|
|
8
|
+
"types": "./lib/node/index.d.cts",
|
|
9
|
+
"exports": {
|
|
10
|
+
".": {
|
|
11
|
+
"browser": {
|
|
12
|
+
"import": "./lib/browser/index.mjs",
|
|
13
|
+
"default": "./lib/browser/index.cjs"
|
|
14
|
+
},
|
|
15
|
+
"import": "./lib/node/index.mjs",
|
|
16
|
+
"default": "./lib/node/index.cjs"
|
|
17
|
+
},
|
|
18
|
+
"./ClientRequest": {
|
|
19
|
+
"node": {
|
|
20
|
+
"require": "./lib/node/interceptors/ClientRequest/index.cjs",
|
|
21
|
+
"import": "./lib/node/interceptors/ClientRequest/index.mjs"
|
|
22
|
+
},
|
|
23
|
+
"browser": null,
|
|
24
|
+
"require": "./lib/node/interceptors/ClientRequest/index.cjs",
|
|
25
|
+
"import": "./lib/node/interceptors/ClientRequest/index.mjs",
|
|
26
|
+
"default": "./lib/node/interceptors/ClientRequest/index.cjs"
|
|
27
|
+
},
|
|
28
|
+
"./XMLHttpRequest": {
|
|
29
|
+
"browser": "./lib/browser/interceptors/XMLHttpRequest/index.mjs",
|
|
30
|
+
"require": "./lib/node/interceptors/XMLHttpRequest/index.cjs",
|
|
31
|
+
"import": "./lib/node/interceptors/XMLHttpRequest/index.mjs",
|
|
32
|
+
"default": "./lib/node/interceptors/XMLHttpRequest/index.cjs"
|
|
33
|
+
},
|
|
34
|
+
"./fetch": {
|
|
35
|
+
"browser": "./lib/browser/interceptors/fetch/index.mjs",
|
|
36
|
+
"require": "./lib/node/interceptors/fetch/index.cjs",
|
|
37
|
+
"import": "./lib/node/interceptors/fetch/index.mjs",
|
|
38
|
+
"default": "./lib/node/interceptors/fetch/index.cjs"
|
|
39
|
+
},
|
|
40
|
+
"./WebSocket": {
|
|
41
|
+
"require": "./lib/browser/interceptors/WebSocket/index.cjs",
|
|
42
|
+
"import": "./lib/browser/interceptors/WebSocket/index.mjs",
|
|
43
|
+
"default": "./lib/browser/interceptors/WebSocket/index.cjs"
|
|
44
|
+
},
|
|
45
|
+
"./RemoteHttpInterceptor": {
|
|
46
|
+
"node": {
|
|
47
|
+
"require": "./lib/node/RemoteHttpInterceptor.cjs",
|
|
48
|
+
"import": "./lib/node/RemoteHttpInterceptor.mjs"
|
|
49
|
+
},
|
|
50
|
+
"browser": null,
|
|
51
|
+
"require": "./lib/node/RemoteHttpInterceptor.cjs",
|
|
52
|
+
"import": "./lib/node/RemoteHttpInterceptor.mjs",
|
|
53
|
+
"default": "./lib/node/RemoteHttpInterceptor.cjs"
|
|
54
|
+
},
|
|
55
|
+
"./presets/node": {
|
|
56
|
+
"node": {
|
|
57
|
+
"require": "./lib/node/presets/node.cjs",
|
|
58
|
+
"import": "./lib/node/presets/node.mjs"
|
|
59
|
+
},
|
|
60
|
+
"browser": null,
|
|
61
|
+
"require": "./lib/node/presets/node.cjs",
|
|
62
|
+
"import": "./lib/node/presets/node.mjs",
|
|
63
|
+
"default": "./lib/node/presets/node.cjs"
|
|
64
|
+
},
|
|
65
|
+
"./presets/browser": {
|
|
66
|
+
"browser": "./lib/browser/presets/browser.mjs",
|
|
67
|
+
"node": null
|
|
68
|
+
},
|
|
69
|
+
"./utils/node": {
|
|
70
|
+
"node": {
|
|
71
|
+
"require": "./lib/node/utils/node/index.cjs",
|
|
72
|
+
"import": "./lib/node/utils/node/index.mjs"
|
|
73
|
+
},
|
|
74
|
+
"browser": null,
|
|
75
|
+
"require": "./lib/node/utils/node/index.cjs",
|
|
76
|
+
"import": "./lib/node/utils/node/index.mjs",
|
|
77
|
+
"default": "./lib/node/utils/node/index.cjs"
|
|
78
|
+
}
|
|
79
|
+
},
|
|
80
|
+
"author": "Artem Zakharchenko",
|
|
81
|
+
"license": "MIT",
|
|
82
|
+
"engines": {
|
|
83
|
+
"node": ">=18"
|
|
84
|
+
},
|
|
85
|
+
"files": [
|
|
86
|
+
"lib",
|
|
87
|
+
"README.md",
|
|
88
|
+
"src",
|
|
89
|
+
"ClientRequest",
|
|
90
|
+
"fetch",
|
|
91
|
+
"RemoteHttpInterceptor",
|
|
92
|
+
"XMLHttpRequest",
|
|
93
|
+
"WebSocket",
|
|
94
|
+
"presets",
|
|
95
|
+
"changes.json"
|
|
96
|
+
],
|
|
97
|
+
"repository": {
|
|
98
|
+
"url": "https://github.com/mswjs/interceptors"
|
|
99
|
+
},
|
|
100
|
+
"devDependencies": {
|
|
101
|
+
"@commitlint/cli": "^19.7.1",
|
|
102
|
+
"@commitlint/config-conventional": "^19.7.1",
|
|
103
|
+
"@open-draft/test-server": "^0.5.1",
|
|
104
|
+
"@ossjs/release": "^0.10.1",
|
|
105
|
+
"@playwright/test": "^1.51.0",
|
|
106
|
+
"@types/cors": "^2.8.12",
|
|
107
|
+
"@types/express": "^5.0.0",
|
|
108
|
+
"@types/express-fileupload": "^1.5.0",
|
|
109
|
+
"@types/follow-redirects": "^1.14.1",
|
|
110
|
+
"@types/node": "^22.13.9",
|
|
111
|
+
"@types/node-fetch": "2.6.12",
|
|
112
|
+
"@types/superagent": "^8.1.9",
|
|
113
|
+
"@types/supertest": "^6.0.2",
|
|
114
|
+
"@types/ws": "^8.18.0",
|
|
115
|
+
"axios": "^1.8.2",
|
|
116
|
+
"body-parser": "^1.19.0",
|
|
117
|
+
"commitizen": "^4.2.4",
|
|
118
|
+
"cors": "^2.8.5",
|
|
119
|
+
"cross-env": "^7.0.3",
|
|
120
|
+
"cz-conventional-changelog": "3.3.0",
|
|
121
|
+
"engine.io-parser": "^5.2.1",
|
|
122
|
+
"express": "^4.21.2",
|
|
123
|
+
"express-fileupload": "^1.5.1",
|
|
124
|
+
"express-rate-limit": "^7.5.0",
|
|
125
|
+
"follow-redirects": "^1.15.1",
|
|
126
|
+
"got": "^14.4.6",
|
|
127
|
+
"happy-dom": "^17.3.0",
|
|
128
|
+
"jsdom": "^26.1.0",
|
|
129
|
+
"node-fetch": "3.3.2",
|
|
130
|
+
"simple-git-hooks": "^2.7.0",
|
|
131
|
+
"socket.io": "^4.7.4",
|
|
132
|
+
"socket.io-client": "^4.7.4",
|
|
133
|
+
"socket.io-parser": "^4.2.4",
|
|
134
|
+
"superagent": "^10.1.1",
|
|
135
|
+
"supertest": "^7.0.0",
|
|
136
|
+
"tsdown": "^0.18.1",
|
|
137
|
+
"typescript": "^5.8.2",
|
|
138
|
+
"undici": "^7.4.0",
|
|
139
|
+
"vitest": "^3.0.8",
|
|
140
|
+
"vitest-environment-miniflare": "^2.14.1",
|
|
141
|
+
"wait-for-expect": "^3.0.2",
|
|
142
|
+
"web-encoding": "^1.1.5",
|
|
143
|
+
"webpack": "^5.105.0",
|
|
144
|
+
"webpack-http-server": "^0.5.0",
|
|
145
|
+
"ws": "^8.18.1"
|
|
146
|
+
},
|
|
147
|
+
"dependencies": {
|
|
148
|
+
"@open-draft/deferred-promise": "^2.2.0",
|
|
149
|
+
"@open-draft/logger": "^0.3.0",
|
|
150
|
+
"@open-draft/until": "^3.0.1",
|
|
151
|
+
"is-node-process": "^1.2.0",
|
|
152
|
+
"outvariant": "^1.4.3",
|
|
153
|
+
"strict-event-emitter": "^0.5.1"
|
|
154
|
+
},
|
|
155
|
+
"resolutions": {
|
|
156
|
+
"memfs": "^3.4.13"
|
|
157
|
+
},
|
|
158
|
+
"keywords": [
|
|
159
|
+
"depup",
|
|
160
|
+
"dependency-bumped",
|
|
161
|
+
"updated-deps",
|
|
162
|
+
"@mswjs/interceptors",
|
|
163
|
+
"request",
|
|
164
|
+
"intercept",
|
|
165
|
+
"http",
|
|
166
|
+
"https",
|
|
167
|
+
"xmlhttprequest",
|
|
168
|
+
"xhr",
|
|
169
|
+
"fetch",
|
|
170
|
+
"low-level",
|
|
171
|
+
"mock",
|
|
172
|
+
"spy",
|
|
173
|
+
"testing"
|
|
174
|
+
],
|
|
175
|
+
"config": {
|
|
176
|
+
"commitizen": {
|
|
177
|
+
"path": "./node_modules/cz-conventional-changelog"
|
|
178
|
+
}
|
|
179
|
+
},
|
|
180
|
+
"scripts": {
|
|
181
|
+
"start": "tsdown --watch",
|
|
182
|
+
"test": "pnpm test:unit && pnpm test:integration",
|
|
183
|
+
"test:unit": "vitest",
|
|
184
|
+
"test:integration": "pnpm test:node && pnpm test:browser",
|
|
185
|
+
"test:node": "vitest -c test/vitest.config.js",
|
|
186
|
+
"test:browser": "pnpm playwright test -c test/playwright.config.ts",
|
|
187
|
+
"test:nock": "./test/third-party/nock.sh",
|
|
188
|
+
"build": "tsdown",
|
|
189
|
+
"release": "release publish"
|
|
190
|
+
},
|
|
191
|
+
"depup": {
|
|
192
|
+
"changes": {
|
|
193
|
+
"@open-draft/until": {
|
|
194
|
+
"from": "^2.0.0",
|
|
195
|
+
"to": "^3.0.1"
|
|
196
|
+
}
|
|
197
|
+
},
|
|
198
|
+
"depsUpdated": 1,
|
|
199
|
+
"originalPackage": "@mswjs/interceptors",
|
|
200
|
+
"originalVersion": "0.41.3",
|
|
201
|
+
"processedAt": "2026-03-17T16:32:18.416Z",
|
|
202
|
+
"smokeTest": "passed"
|
|
203
|
+
}
|
|
204
|
+
}
|
|
@@ -0,0 +1,255 @@
|
|
|
1
|
+
import { vi, it, expect, afterEach } from 'vitest'
|
|
2
|
+
import { Interceptor } from './Interceptor'
|
|
3
|
+
import { BatchInterceptor } from './BatchInterceptor'
|
|
4
|
+
|
|
5
|
+
afterEach(() => {
|
|
6
|
+
vi.resetAllMocks()
|
|
7
|
+
})
|
|
8
|
+
|
|
9
|
+
it('applies child interceptors', () => {
|
|
10
|
+
class PrimaryInterceptor extends Interceptor<any> {
|
|
11
|
+
constructor() {
|
|
12
|
+
super(Symbol('primary'))
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
class SecondaryInterceptor extends Interceptor<any> {
|
|
17
|
+
constructor() {
|
|
18
|
+
super(Symbol('secondary'))
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
const instances = {
|
|
23
|
+
primary: new PrimaryInterceptor(),
|
|
24
|
+
secondary: new SecondaryInterceptor(),
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
const interceptor = new BatchInterceptor({
|
|
28
|
+
name: 'batch-apply',
|
|
29
|
+
interceptors: [instances.primary, instances.secondary],
|
|
30
|
+
})
|
|
31
|
+
|
|
32
|
+
const primaryApplySpy = vi.spyOn(instances.primary, 'apply')
|
|
33
|
+
const secondaryApplySpy = vi.spyOn(instances.secondary, 'apply')
|
|
34
|
+
|
|
35
|
+
interceptor.apply()
|
|
36
|
+
|
|
37
|
+
expect(primaryApplySpy).toHaveBeenCalledTimes(1)
|
|
38
|
+
expect(secondaryApplySpy).toHaveBeenCalledTimes(1)
|
|
39
|
+
})
|
|
40
|
+
|
|
41
|
+
it('proxies event listeners to the interceptors', () => {
|
|
42
|
+
class PrimaryInterceptor extends Interceptor<{ hello: [string] }> {
|
|
43
|
+
constructor() {
|
|
44
|
+
super(Symbol('primary'))
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
class SecondaryInterceptor extends Interceptor<{
|
|
49
|
+
goodbye: [string]
|
|
50
|
+
}> {
|
|
51
|
+
constructor() {
|
|
52
|
+
super(Symbol('secondary'))
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
const instances = {
|
|
57
|
+
primary: new PrimaryInterceptor(),
|
|
58
|
+
secondary: new SecondaryInterceptor(),
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
const interceptor = new BatchInterceptor({
|
|
62
|
+
name: 'batch-proxy',
|
|
63
|
+
interceptors: [instances.primary, instances.secondary],
|
|
64
|
+
})
|
|
65
|
+
|
|
66
|
+
const helloListener = vi.fn()
|
|
67
|
+
interceptor.on('hello', helloListener)
|
|
68
|
+
|
|
69
|
+
const goodbyeListener = vi.fn()
|
|
70
|
+
interceptor.on('goodbye', goodbyeListener)
|
|
71
|
+
|
|
72
|
+
// Emulate the child interceptor emitting events.
|
|
73
|
+
instances.primary['emitter'].emit('hello', 'John')
|
|
74
|
+
instances.secondary['emitter'].emit('goodbye', 'Kate')
|
|
75
|
+
|
|
76
|
+
// Must call the batch interceptor listener.
|
|
77
|
+
expect(helloListener).toHaveBeenCalledTimes(1)
|
|
78
|
+
expect(helloListener).toHaveBeenCalledWith('John')
|
|
79
|
+
expect(goodbyeListener).toHaveBeenCalledTimes(1)
|
|
80
|
+
expect(goodbyeListener).toHaveBeenCalledWith('Kate')
|
|
81
|
+
})
|
|
82
|
+
|
|
83
|
+
it('disposes of child interceptors', async () => {
|
|
84
|
+
class PrimaryInterceptor extends Interceptor<any> {
|
|
85
|
+
constructor() {
|
|
86
|
+
super(Symbol('primary'))
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
class SecondaryInterceptor extends Interceptor<any> {
|
|
91
|
+
constructor() {
|
|
92
|
+
super(Symbol('secondary'))
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
const instances = {
|
|
97
|
+
primary: new PrimaryInterceptor(),
|
|
98
|
+
secondary: new SecondaryInterceptor(),
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
const interceptor = new BatchInterceptor({
|
|
102
|
+
name: 'batch-dispose',
|
|
103
|
+
interceptors: [instances.primary, instances.secondary],
|
|
104
|
+
})
|
|
105
|
+
|
|
106
|
+
const primaryDisposeSpy = vi.spyOn(instances.primary, 'dispose')
|
|
107
|
+
const secondaryDisposeSpy = vi.spyOn(instances.secondary, 'dispose')
|
|
108
|
+
|
|
109
|
+
interceptor.apply()
|
|
110
|
+
interceptor.dispose()
|
|
111
|
+
|
|
112
|
+
expect(primaryDisposeSpy).toHaveBeenCalledTimes(1)
|
|
113
|
+
expect(secondaryDisposeSpy).toHaveBeenCalledTimes(1)
|
|
114
|
+
})
|
|
115
|
+
|
|
116
|
+
it('forwards listeners added via "on()"', () => {
|
|
117
|
+
class FirstInterceptor extends Interceptor<any> {
|
|
118
|
+
constructor() {
|
|
119
|
+
super(Symbol('first'))
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
class SecondaryInterceptor extends Interceptor<any> {
|
|
123
|
+
constructor() {
|
|
124
|
+
super(Symbol('second'))
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
const firstInterceptor = new FirstInterceptor()
|
|
129
|
+
const secondInterceptor = new SecondaryInterceptor()
|
|
130
|
+
|
|
131
|
+
const interceptor = new BatchInterceptor({
|
|
132
|
+
name: 'batch',
|
|
133
|
+
interceptors: [firstInterceptor, secondInterceptor],
|
|
134
|
+
})
|
|
135
|
+
|
|
136
|
+
const listener = vi.fn()
|
|
137
|
+
interceptor.on('foo', listener)
|
|
138
|
+
|
|
139
|
+
expect(firstInterceptor['emitter'].listenerCount('foo')).toBe(1)
|
|
140
|
+
expect(secondInterceptor['emitter'].listenerCount('foo')).toBe(1)
|
|
141
|
+
expect(interceptor['emitter'].listenerCount('foo')).toBe(0)
|
|
142
|
+
})
|
|
143
|
+
|
|
144
|
+
it('forwards listeners removal via "off()"', () => {
|
|
145
|
+
type Events = {
|
|
146
|
+
foo: []
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
class FirstInterceptor extends Interceptor<Events> {
|
|
150
|
+
constructor() {
|
|
151
|
+
super(Symbol('first'))
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
class SecondaryInterceptor extends Interceptor<Events> {
|
|
155
|
+
constructor() {
|
|
156
|
+
super(Symbol('second'))
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
const firstInterceptor = new FirstInterceptor()
|
|
161
|
+
const secondInterceptor = new SecondaryInterceptor()
|
|
162
|
+
|
|
163
|
+
const interceptor = new BatchInterceptor({
|
|
164
|
+
name: 'batch',
|
|
165
|
+
interceptors: [firstInterceptor, secondInterceptor],
|
|
166
|
+
})
|
|
167
|
+
|
|
168
|
+
const listener = vi.fn()
|
|
169
|
+
interceptor.on('foo', listener)
|
|
170
|
+
interceptor.off('foo', listener)
|
|
171
|
+
|
|
172
|
+
expect(firstInterceptor['emitter'].listenerCount('foo')).toBe(0)
|
|
173
|
+
expect(secondInterceptor['emitter'].listenerCount('foo')).toBe(0)
|
|
174
|
+
})
|
|
175
|
+
|
|
176
|
+
it('forwards removal of all listeners by name via ".removeAllListeners()"', () => {
|
|
177
|
+
type Events = {
|
|
178
|
+
foo: []
|
|
179
|
+
bar: []
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
class FirstInterceptor extends Interceptor<Events> {
|
|
183
|
+
constructor() {
|
|
184
|
+
super(Symbol('first'))
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
class SecondaryInterceptor extends Interceptor<Events> {
|
|
188
|
+
constructor() {
|
|
189
|
+
super(Symbol('second'))
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
const firstInterceptor = new FirstInterceptor()
|
|
194
|
+
const secondInterceptor = new SecondaryInterceptor()
|
|
195
|
+
|
|
196
|
+
const interceptor = new BatchInterceptor({
|
|
197
|
+
name: 'batch',
|
|
198
|
+
interceptors: [firstInterceptor, secondInterceptor],
|
|
199
|
+
})
|
|
200
|
+
|
|
201
|
+
const listener = vi.fn()
|
|
202
|
+
interceptor.on('foo', listener)
|
|
203
|
+
interceptor.on('foo', listener)
|
|
204
|
+
interceptor.on('bar', listener)
|
|
205
|
+
|
|
206
|
+
expect(firstInterceptor['emitter'].listenerCount('foo')).toBe(2)
|
|
207
|
+
expect(secondInterceptor['emitter'].listenerCount('foo')).toBe(2)
|
|
208
|
+
expect(firstInterceptor['emitter'].listenerCount('bar')).toBe(1)
|
|
209
|
+
expect(secondInterceptor['emitter'].listenerCount('bar')).toBe(1)
|
|
210
|
+
|
|
211
|
+
interceptor.removeAllListeners('foo')
|
|
212
|
+
|
|
213
|
+
expect(firstInterceptor['emitter'].listenerCount('foo')).toBe(0)
|
|
214
|
+
expect(secondInterceptor['emitter'].listenerCount('foo')).toBe(0)
|
|
215
|
+
expect(firstInterceptor['emitter'].listenerCount('bar')).toBe(1)
|
|
216
|
+
expect(secondInterceptor['emitter'].listenerCount('bar')).toBe(1)
|
|
217
|
+
})
|
|
218
|
+
|
|
219
|
+
it('forwards removal of all listeners via ".removeAllListeners()"', () => {
|
|
220
|
+
class FirstInterceptor extends Interceptor<any> {
|
|
221
|
+
constructor() {
|
|
222
|
+
super(Symbol('first'))
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
class SecondaryInterceptor extends Interceptor<any> {
|
|
226
|
+
constructor() {
|
|
227
|
+
super(Symbol('second'))
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
|
|
231
|
+
const firstInterceptor = new FirstInterceptor()
|
|
232
|
+
const secondInterceptor = new SecondaryInterceptor()
|
|
233
|
+
|
|
234
|
+
const interceptor = new BatchInterceptor({
|
|
235
|
+
name: 'batch',
|
|
236
|
+
interceptors: [firstInterceptor, secondInterceptor],
|
|
237
|
+
})
|
|
238
|
+
|
|
239
|
+
const listener = vi.fn()
|
|
240
|
+
interceptor.on('foo', listener)
|
|
241
|
+
interceptor.on('foo', listener)
|
|
242
|
+
interceptor.on('bar', listener)
|
|
243
|
+
|
|
244
|
+
expect(firstInterceptor['emitter'].listenerCount('foo')).toBe(2)
|
|
245
|
+
expect(secondInterceptor['emitter'].listenerCount('foo')).toBe(2)
|
|
246
|
+
expect(firstInterceptor['emitter'].listenerCount('bar')).toBe(1)
|
|
247
|
+
expect(secondInterceptor['emitter'].listenerCount('bar')).toBe(1)
|
|
248
|
+
|
|
249
|
+
interceptor.removeAllListeners()
|
|
250
|
+
|
|
251
|
+
expect(firstInterceptor['emitter'].listenerCount('foo')).toBe(0)
|
|
252
|
+
expect(secondInterceptor['emitter'].listenerCount('foo')).toBe(0)
|
|
253
|
+
expect(firstInterceptor['emitter'].listenerCount('bar')).toBe(0)
|
|
254
|
+
expect(secondInterceptor['emitter'].listenerCount('bar')).toBe(0)
|
|
255
|
+
})
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
import { EventMap, Listener } from 'strict-event-emitter'
|
|
2
|
+
import { Interceptor, ExtractEventNames } from './Interceptor'
|
|
3
|
+
|
|
4
|
+
export interface BatchInterceptorOptions<
|
|
5
|
+
InterceptorList extends ReadonlyArray<Interceptor<any>>
|
|
6
|
+
> {
|
|
7
|
+
name: string
|
|
8
|
+
interceptors: InterceptorList
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
export type ExtractEventMapType<
|
|
12
|
+
InterceptorList extends ReadonlyArray<Interceptor<any>>
|
|
13
|
+
> = InterceptorList extends ReadonlyArray<infer InterceptorType>
|
|
14
|
+
? InterceptorType extends Interceptor<infer EventMap>
|
|
15
|
+
? EventMap
|
|
16
|
+
: never
|
|
17
|
+
: never
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* A batch interceptor that exposes a single interface
|
|
21
|
+
* to apply and operate with multiple interceptors at once.
|
|
22
|
+
*/
|
|
23
|
+
export class BatchInterceptor<
|
|
24
|
+
InterceptorList extends ReadonlyArray<Interceptor<any>>,
|
|
25
|
+
Events extends EventMap = ExtractEventMapType<InterceptorList>
|
|
26
|
+
> extends Interceptor<Events> {
|
|
27
|
+
static symbol: symbol
|
|
28
|
+
|
|
29
|
+
private interceptors: InterceptorList
|
|
30
|
+
|
|
31
|
+
constructor(options: BatchInterceptorOptions<InterceptorList>) {
|
|
32
|
+
BatchInterceptor.symbol = Symbol(options.name)
|
|
33
|
+
super(BatchInterceptor.symbol)
|
|
34
|
+
this.interceptors = options.interceptors
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
protected setup() {
|
|
38
|
+
const logger = this.logger.extend('setup')
|
|
39
|
+
|
|
40
|
+
logger.info('applying all %d interceptors...', this.interceptors.length)
|
|
41
|
+
|
|
42
|
+
for (const interceptor of this.interceptors) {
|
|
43
|
+
logger.info('applying "%s" interceptor...', interceptor.constructor.name)
|
|
44
|
+
interceptor.apply()
|
|
45
|
+
|
|
46
|
+
logger.info('adding interceptor dispose subscription')
|
|
47
|
+
this.subscriptions.push(() => interceptor.dispose())
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
public on<EventName extends ExtractEventNames<Events>>(
|
|
52
|
+
event: EventName,
|
|
53
|
+
listener: Listener<Events[EventName]>
|
|
54
|
+
): this {
|
|
55
|
+
// Instead of adding a listener to the batch interceptor,
|
|
56
|
+
// propagate the listener to each of the individual interceptors.
|
|
57
|
+
for (const interceptor of this.interceptors) {
|
|
58
|
+
interceptor.on(event, listener)
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
return this
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
public once<EventName extends ExtractEventNames<Events>>(
|
|
65
|
+
event: EventName,
|
|
66
|
+
listener: Listener<Events[EventName]>
|
|
67
|
+
): this {
|
|
68
|
+
for (const interceptor of this.interceptors) {
|
|
69
|
+
interceptor.once(event, listener)
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
return this
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
public off<EventName extends ExtractEventNames<Events>>(
|
|
76
|
+
event: EventName,
|
|
77
|
+
listener: Listener<Events[EventName]>
|
|
78
|
+
): this {
|
|
79
|
+
for (const interceptor of this.interceptors) {
|
|
80
|
+
interceptor.off(event, listener)
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
return this
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
public removeAllListeners<EventName extends ExtractEventNames<Events>>(
|
|
87
|
+
event?: EventName | undefined
|
|
88
|
+
): this {
|
|
89
|
+
for (const interceptors of this.interceptors) {
|
|
90
|
+
interceptors.removeAllListeners(event)
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
return this
|
|
94
|
+
}
|
|
95
|
+
}
|