msw 2.0.12 → 2.0.14
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/index.d.mts +104 -0
- package/lib/browser/index.d.ts +1 -1
- package/lib/browser/index.js +1 -0
- package/lib/browser/index.js.map +1 -0
- package/lib/browser/index.mjs +1 -0
- package/lib/browser/index.mjs.map +1 -0
- package/lib/core/{GraphQLHandler-da09c680.d.ts → GraphQLHandler-JB4bsrLF.d.ts} +4 -2
- package/lib/core/GraphQLHandler-mT-MmgeB.d.mts +99 -0
- package/lib/core/HttpResponse.d.mts +2 -0
- package/lib/core/HttpResponse.d.ts +1 -1
- package/lib/core/HttpResponse.js +1 -0
- package/lib/core/HttpResponse.js.map +1 -0
- package/lib/core/HttpResponse.mjs +1 -0
- package/lib/core/HttpResponse.mjs.map +1 -0
- package/lib/core/RequestHandler-YiqamK0M.d.mts +179 -0
- package/lib/core/{RequestHandler-25f9cfd1.d.ts → RequestHandler-rmY-HeFN.d.ts} +4 -4
- package/lib/core/SetupApi.d.mts +26 -0
- package/lib/core/SetupApi.d.ts +1 -1
- package/lib/core/SetupApi.js +1 -0
- package/lib/core/SetupApi.js.map +1 -0
- package/lib/core/SetupApi.mjs +1 -0
- package/lib/core/SetupApi.mjs.map +1 -0
- package/lib/core/bypass.d.mts +16 -0
- package/lib/core/bypass.d.ts +1 -1
- package/lib/core/bypass.js +1 -0
- package/lib/core/bypass.js.map +1 -0
- package/lib/core/bypass.mjs +1 -0
- package/lib/core/bypass.mjs.map +1 -0
- package/lib/core/delay.d.mts +18 -0
- package/lib/core/delay.d.ts +1 -1
- package/lib/core/delay.js +1 -0
- package/lib/core/delay.js.map +1 -0
- package/lib/core/delay.mjs +1 -0
- package/lib/core/delay.mjs.map +1 -0
- package/lib/core/graphql.d.mts +111 -0
- package/lib/core/graphql.d.ts +11 -9
- package/lib/core/graphql.js +1 -0
- package/lib/core/graphql.js.map +1 -0
- package/lib/core/graphql.mjs +1 -0
- package/lib/core/graphql.mjs.map +1 -0
- package/lib/core/handlers/GraphQLHandler.d.mts +5 -0
- package/lib/core/handlers/GraphQLHandler.d.ts +2 -2
- package/lib/core/handlers/GraphQLHandler.js +8 -6
- package/lib/core/handlers/GraphQLHandler.js.map +1 -0
- package/lib/core/handlers/GraphQLHandler.mjs +8 -6
- package/lib/core/handlers/GraphQLHandler.mjs.map +1 -0
- package/lib/core/handlers/HttpHandler.d.mts +62 -0
- package/lib/core/handlers/HttpHandler.d.ts +2 -2
- package/lib/core/handlers/HttpHandler.js +1 -0
- package/lib/core/handlers/HttpHandler.js.map +1 -0
- package/lib/core/handlers/HttpHandler.mjs +1 -0
- package/lib/core/handlers/HttpHandler.mjs.map +1 -0
- package/lib/core/handlers/RequestHandler.d.mts +2 -0
- package/lib/core/handlers/RequestHandler.d.ts +1 -1
- package/lib/core/handlers/RequestHandler.js +3 -2
- package/lib/core/handlers/RequestHandler.js.map +1 -0
- package/lib/core/handlers/RequestHandler.mjs +3 -2
- package/lib/core/handlers/RequestHandler.mjs.map +1 -0
- package/lib/core/http.d.mts +28 -0
- package/lib/core/http.d.ts +13 -11
- package/lib/core/http.js +1 -0
- package/lib/core/http.js.map +1 -0
- package/lib/core/http.mjs +1 -0
- package/lib/core/http.mjs.map +1 -0
- package/lib/core/index.d.mts +18 -0
- package/lib/core/index.d.ts +4 -4
- package/lib/core/index.js +1 -0
- package/lib/core/index.js.map +1 -0
- package/lib/core/index.mjs +1 -0
- package/lib/core/index.mjs.map +1 -0
- package/lib/core/passthrough.d.mts +17 -0
- package/lib/core/passthrough.js +1 -0
- package/lib/core/passthrough.js.map +1 -0
- package/lib/core/passthrough.mjs +1 -0
- package/lib/core/passthrough.mjs.map +1 -0
- package/lib/core/sharedOptions.d.mts +66 -0
- package/lib/core/sharedOptions.d.ts +2 -2
- package/lib/core/sharedOptions.js +1 -0
- package/lib/core/sharedOptions.js.map +1 -0
- package/lib/core/sharedOptions.mjs +1 -0
- package/lib/core/sharedOptions.mjs.map +1 -0
- package/lib/core/typeUtils.d.mts +7 -0
- package/lib/core/typeUtils.d.ts +1 -1
- package/lib/core/typeUtils.js +1 -0
- package/lib/core/typeUtils.js.map +1 -0
- package/lib/core/typeUtils.mjs +1 -0
- package/lib/core/typeUtils.mjs.map +1 -0
- package/lib/core/utils/HttpResponse/decorators.d.mts +12 -0
- package/lib/core/utils/HttpResponse/decorators.d.ts +2 -2
- package/lib/core/utils/HttpResponse/decorators.js +1 -0
- package/lib/core/utils/HttpResponse/decorators.js.map +1 -0
- package/lib/core/utils/HttpResponse/decorators.mjs +1 -0
- package/lib/core/utils/HttpResponse/decorators.mjs.map +1 -0
- package/lib/core/utils/getResponse.d.mts +2 -0
- package/lib/core/utils/getResponse.d.ts +1 -1
- package/lib/core/utils/getResponse.js +1 -0
- package/lib/core/utils/getResponse.js.map +1 -0
- package/lib/core/utils/getResponse.mjs +1 -0
- package/lib/core/utils/getResponse.mjs.map +1 -0
- package/lib/core/utils/handleRequest.d.mts +37 -0
- package/lib/core/utils/handleRequest.d.ts +2 -2
- package/lib/core/utils/handleRequest.js +1 -0
- package/lib/core/utils/handleRequest.js.map +1 -0
- package/lib/core/utils/handleRequest.mjs +1 -0
- package/lib/core/utils/handleRequest.mjs.map +1 -0
- package/lib/core/utils/internal/Disposable.d.mts +7 -0
- package/lib/core/utils/internal/Disposable.d.ts +1 -1
- package/lib/core/utils/internal/Disposable.js +1 -0
- package/lib/core/utils/internal/Disposable.js.map +1 -0
- package/lib/core/utils/internal/Disposable.mjs +1 -0
- package/lib/core/utils/internal/Disposable.mjs.map +1 -0
- package/lib/core/utils/internal/checkGlobals.d.mts +3 -0
- package/lib/core/utils/internal/checkGlobals.js +1 -0
- package/lib/core/utils/internal/checkGlobals.js.map +1 -0
- package/lib/core/utils/internal/checkGlobals.mjs +1 -0
- package/lib/core/utils/internal/checkGlobals.mjs.map +1 -0
- package/lib/core/utils/internal/devUtils.d.mts +19 -0
- package/lib/core/utils/internal/devUtils.js +1 -0
- package/lib/core/utils/internal/devUtils.js.map +1 -0
- package/lib/core/utils/internal/devUtils.mjs +1 -0
- package/lib/core/utils/internal/devUtils.mjs.map +1 -0
- package/lib/core/utils/internal/getCallFrame.d.mts +6 -0
- package/lib/core/utils/internal/getCallFrame.js +1 -0
- package/lib/core/utils/internal/getCallFrame.js.map +1 -0
- package/lib/core/utils/internal/getCallFrame.mjs +1 -0
- package/lib/core/utils/internal/getCallFrame.mjs.map +1 -0
- package/lib/core/utils/internal/isIterable.d.mts +6 -0
- package/lib/core/utils/internal/isIterable.js +1 -0
- package/lib/core/utils/internal/isIterable.js.map +1 -0
- package/lib/core/utils/internal/isIterable.mjs +1 -0
- package/lib/core/utils/internal/isIterable.mjs.map +1 -0
- package/lib/core/utils/internal/isObject.d.mts +6 -0
- package/lib/core/utils/internal/isObject.js +1 -0
- package/lib/core/utils/internal/isObject.js.map +1 -0
- package/lib/core/utils/internal/isObject.mjs +1 -0
- package/lib/core/utils/internal/isObject.mjs.map +1 -0
- package/lib/core/utils/internal/isStringEqual.d.mts +6 -0
- package/lib/core/utils/internal/isStringEqual.js +1 -0
- package/lib/core/utils/internal/isStringEqual.js.map +1 -0
- package/lib/core/utils/internal/isStringEqual.mjs +1 -0
- package/lib/core/utils/internal/isStringEqual.mjs.map +1 -0
- package/lib/core/utils/internal/jsonParse.d.mts +7 -0
- package/lib/core/utils/internal/jsonParse.js +1 -0
- package/lib/core/utils/internal/jsonParse.js.map +1 -0
- package/lib/core/utils/internal/jsonParse.mjs +1 -0
- package/lib/core/utils/internal/jsonParse.mjs.map +1 -0
- package/lib/core/utils/internal/mergeRight.d.mts +7 -0
- package/lib/core/utils/internal/mergeRight.js +1 -0
- package/lib/core/utils/internal/mergeRight.js.map +1 -0
- package/lib/core/utils/internal/mergeRight.mjs +1 -0
- package/lib/core/utils/internal/mergeRight.mjs.map +1 -0
- package/lib/core/utils/internal/parseGraphQLRequest.d.mts +5 -0
- package/lib/core/utils/internal/parseGraphQLRequest.d.ts +2 -2
- package/lib/core/utils/internal/parseGraphQLRequest.js +1 -0
- package/lib/core/utils/internal/parseGraphQLRequest.js.map +1 -0
- package/lib/core/utils/internal/parseGraphQLRequest.mjs +1 -0
- package/lib/core/utils/internal/parseGraphQLRequest.mjs.map +1 -0
- package/lib/core/utils/internal/parseMultipartData.d.mts +10 -0
- package/lib/core/utils/internal/parseMultipartData.d.ts +1 -1
- package/lib/core/utils/internal/parseMultipartData.js +1 -0
- package/lib/core/utils/internal/parseMultipartData.js.map +1 -0
- package/lib/core/utils/internal/parseMultipartData.mjs +1 -0
- package/lib/core/utils/internal/parseMultipartData.mjs.map +1 -0
- package/lib/core/utils/internal/pipeEvents.d.mts +8 -0
- package/lib/core/utils/internal/pipeEvents.js +1 -0
- package/lib/core/utils/internal/pipeEvents.js.map +1 -0
- package/lib/core/utils/internal/pipeEvents.mjs +1 -0
- package/lib/core/utils/internal/pipeEvents.mjs.map +1 -0
- package/lib/core/utils/internal/requestHandlerUtils.d.mts +8 -0
- package/lib/core/utils/internal/requestHandlerUtils.d.ts +1 -1
- package/lib/core/utils/internal/requestHandlerUtils.js +1 -0
- package/lib/core/utils/internal/requestHandlerUtils.js.map +1 -0
- package/lib/core/utils/internal/requestHandlerUtils.mjs +1 -0
- package/lib/core/utils/internal/requestHandlerUtils.mjs.map +1 -0
- package/lib/core/utils/internal/toReadonlyArray.d.mts +6 -0
- package/lib/core/utils/internal/toReadonlyArray.js +1 -0
- package/lib/core/utils/internal/toReadonlyArray.js.map +1 -0
- package/lib/core/utils/internal/toReadonlyArray.mjs +1 -0
- package/lib/core/utils/internal/toReadonlyArray.mjs.map +1 -0
- package/lib/core/utils/internal/tryCatch.d.mts +3 -0
- package/lib/core/utils/internal/tryCatch.js +1 -0
- package/lib/core/utils/internal/tryCatch.js.map +1 -0
- package/lib/core/utils/internal/tryCatch.mjs +1 -0
- package/lib/core/utils/internal/tryCatch.mjs.map +1 -0
- package/lib/core/utils/internal/uuidv4.d.mts +3 -0
- package/lib/core/utils/internal/uuidv4.js +1 -0
- package/lib/core/utils/internal/uuidv4.js.map +1 -0
- package/lib/core/utils/internal/uuidv4.mjs +1 -0
- package/lib/core/utils/internal/uuidv4.mjs.map +1 -0
- package/lib/core/utils/logging/getStatusCodeColor.d.mts +11 -0
- package/lib/core/utils/logging/getStatusCodeColor.js +1 -0
- package/lib/core/utils/logging/getStatusCodeColor.js.map +1 -0
- package/lib/core/utils/logging/getStatusCodeColor.mjs +1 -0
- package/lib/core/utils/logging/getStatusCodeColor.mjs.map +1 -0
- package/lib/core/utils/logging/getTimestamp.d.mts +6 -0
- package/lib/core/utils/logging/getTimestamp.js +1 -0
- package/lib/core/utils/logging/getTimestamp.js.map +1 -0
- package/lib/core/utils/logging/getTimestamp.mjs +1 -0
- package/lib/core/utils/logging/getTimestamp.mjs.map +1 -0
- package/lib/core/utils/logging/serializeRequest.d.mts +12 -0
- package/lib/core/utils/logging/serializeRequest.d.ts +1 -1
- package/lib/core/utils/logging/serializeRequest.js +1 -0
- package/lib/core/utils/logging/serializeRequest.js.map +1 -0
- package/lib/core/utils/logging/serializeRequest.mjs +1 -0
- package/lib/core/utils/logging/serializeRequest.mjs.map +1 -0
- package/lib/core/utils/logging/serializeResponse.d.mts +9 -0
- package/lib/core/utils/logging/serializeResponse.d.ts +1 -1
- package/lib/core/utils/logging/serializeResponse.js +1 -0
- package/lib/core/utils/logging/serializeResponse.js.map +1 -0
- package/lib/core/utils/logging/serializeResponse.mjs +1 -0
- package/lib/core/utils/logging/serializeResponse.mjs.map +1 -0
- package/lib/core/utils/matching/matchRequestUrl.d.mts +19 -0
- package/lib/core/utils/matching/matchRequestUrl.d.ts +1 -1
- package/lib/core/utils/matching/matchRequestUrl.js +1 -0
- package/lib/core/utils/matching/matchRequestUrl.js.map +1 -0
- package/lib/core/utils/matching/matchRequestUrl.mjs +1 -0
- package/lib/core/utils/matching/matchRequestUrl.mjs.map +1 -0
- package/lib/core/utils/matching/normalizePath.d.mts +12 -0
- package/lib/core/utils/matching/normalizePath.js +1 -0
- package/lib/core/utils/matching/normalizePath.js.map +1 -0
- package/lib/core/utils/matching/normalizePath.mjs +1 -0
- package/lib/core/utils/matching/normalizePath.mjs.map +1 -0
- package/lib/core/utils/request/getPublicUrlFromRequest.d.mts +7 -0
- package/lib/core/utils/request/getPublicUrlFromRequest.js +1 -0
- package/lib/core/utils/request/getPublicUrlFromRequest.js.map +1 -0
- package/lib/core/utils/request/getPublicUrlFromRequest.mjs +1 -0
- package/lib/core/utils/request/getPublicUrlFromRequest.mjs.map +1 -0
- package/lib/core/utils/request/getRequestCookies.d.mts +8 -0
- package/lib/core/utils/request/getRequestCookies.js +1 -0
- package/lib/core/utils/request/getRequestCookies.js.map +1 -0
- package/lib/core/utils/request/getRequestCookies.mjs +1 -0
- package/lib/core/utils/request/getRequestCookies.mjs.map +1 -0
- package/lib/core/utils/request/onUnhandledRequest.d.mts +12 -0
- package/lib/core/utils/request/onUnhandledRequest.d.ts +2 -2
- package/lib/core/utils/request/onUnhandledRequest.js +1 -0
- package/lib/core/utils/request/onUnhandledRequest.js.map +1 -0
- package/lib/core/utils/request/onUnhandledRequest.mjs +1 -0
- package/lib/core/utils/request/onUnhandledRequest.mjs.map +1 -0
- package/lib/core/utils/request/readResponseCookies.d.mts +3 -0
- package/lib/core/utils/request/readResponseCookies.js +1 -0
- package/lib/core/utils/request/readResponseCookies.js.map +1 -0
- package/lib/core/utils/request/readResponseCookies.mjs +1 -0
- package/lib/core/utils/request/readResponseCookies.mjs.map +1 -0
- package/lib/core/utils/toResponseInit.d.mts +3 -0
- package/lib/core/utils/toResponseInit.js +1 -0
- package/lib/core/utils/toResponseInit.js.map +1 -0
- package/lib/core/utils/toResponseInit.mjs +1 -0
- package/lib/core/utils/toResponseInit.mjs.map +1 -0
- package/lib/core/utils/url/cleanUrl.d.mts +7 -0
- package/lib/core/utils/url/cleanUrl.js +1 -0
- package/lib/core/utils/url/cleanUrl.js.map +1 -0
- package/lib/core/utils/url/cleanUrl.mjs +1 -0
- package/lib/core/utils/url/cleanUrl.mjs.map +1 -0
- package/lib/core/utils/url/getAbsoluteUrl.d.mts +6 -0
- package/lib/core/utils/url/getAbsoluteUrl.js +1 -0
- package/lib/core/utils/url/getAbsoluteUrl.js.map +1 -0
- package/lib/core/utils/url/getAbsoluteUrl.mjs +1 -0
- package/lib/core/utils/url/getAbsoluteUrl.mjs.map +1 -0
- package/lib/core/utils/url/isAbsoluteUrl.d.mts +6 -0
- package/lib/core/utils/url/isAbsoluteUrl.js +1 -0
- package/lib/core/utils/url/isAbsoluteUrl.js.map +1 -0
- package/lib/core/utils/url/isAbsoluteUrl.mjs +1 -0
- package/lib/core/utils/url/isAbsoluteUrl.mjs.map +1 -0
- package/lib/iife/index.js +25 -23
- package/lib/iife/index.js.map +1 -0
- package/lib/mockServiceWorker.js +1 -1
- package/lib/native/index.d.mts +75 -0
- package/lib/native/index.js +1 -0
- package/lib/native/index.js.map +1 -0
- package/lib/native/index.mjs +1 -0
- package/lib/native/index.mjs.map +1 -0
- package/lib/node/index.d.mts +75 -0
- package/lib/node/index.d.ts +1 -1
- package/lib/node/index.js +1 -0
- package/lib/node/index.js.map +1 -0
- package/lib/node/index.mjs +1 -0
- package/lib/node/index.mjs.map +1 -0
- package/package.json +5 -4
- package/src/browser/global.browser.d.ts +1 -0
- package/src/browser/index.ts +3 -0
- package/src/browser/setupWorker/glossary.ts +259 -0
- package/src/browser/setupWorker/setupWorker.node.test.ts +10 -0
- package/src/browser/setupWorker/setupWorker.ts +199 -0
- package/src/browser/setupWorker/start/createFallbackRequestListener.ts +67 -0
- package/src/browser/setupWorker/start/createFallbackStart.ts +21 -0
- package/src/browser/setupWorker/start/createRequestListener.ts +127 -0
- package/src/browser/setupWorker/start/createResponseListener.ts +58 -0
- package/src/browser/setupWorker/start/createStartHandler.ts +143 -0
- package/src/browser/setupWorker/start/utils/createMessageChannel.ts +32 -0
- package/src/browser/setupWorker/start/utils/enableMocking.ts +32 -0
- package/src/browser/setupWorker/start/utils/getWorkerByRegistration.ts +25 -0
- package/src/browser/setupWorker/start/utils/getWorkerInstance.ts +94 -0
- package/src/browser/setupWorker/start/utils/prepareStartHandler.test.ts +59 -0
- package/src/browser/setupWorker/start/utils/prepareStartHandler.ts +44 -0
- package/src/browser/setupWorker/start/utils/printStartMessage.test.ts +84 -0
- package/src/browser/setupWorker/start/utils/printStartMessage.ts +40 -0
- package/src/browser/setupWorker/start/utils/validateWorkerScope.ts +18 -0
- package/src/browser/setupWorker/stop/createFallbackStop.ts +11 -0
- package/src/browser/setupWorker/stop/createStop.ts +29 -0
- package/src/browser/setupWorker/stop/utils/printStopMessage.test.ts +26 -0
- package/src/browser/setupWorker/stop/utils/printStopMessage.ts +12 -0
- package/src/browser/tsconfig.browser.build.json +6 -0
- package/src/browser/tsconfig.browser.json +9 -0
- package/src/browser/utils/deferNetworkRequestsUntil.test.ts +48 -0
- package/src/browser/utils/deferNetworkRequestsUntil.ts +29 -0
- package/src/browser/utils/getAbsoluteWorkerUrl.test.ts +31 -0
- package/src/browser/utils/getAbsoluteWorkerUrl.ts +7 -0
- package/src/browser/utils/parseWorkerRequest.ts +15 -0
- package/src/browser/utils/pruneGetRequestBody.test.ts +53 -0
- package/src/browser/utils/pruneGetRequestBody.ts +21 -0
- package/src/browser/utils/requestIntegrityCheck.ts +23 -0
- package/src/browser/utils/supportsReadableStreamTransfer.ts +17 -0
- package/src/core/HttpResponse.test.ts +200 -0
- package/src/core/HttpResponse.ts +134 -0
- package/src/core/SetupApi.ts +95 -0
- package/src/core/bypass.test.ts +47 -0
- package/src/core/bypass.ts +36 -0
- package/src/core/delay.ts +70 -0
- package/src/core/graphql.test.ts +11 -0
- package/src/core/graphql.ts +146 -0
- package/src/core/handlers/GraphQLHandler.test.ts +835 -0
- package/src/core/handlers/GraphQLHandler.ts +266 -0
- package/src/core/handlers/HttpHandler.test.ts +218 -0
- package/src/core/handlers/HttpHandler.ts +169 -0
- package/src/core/handlers/RequestHandler.ts +343 -0
- package/src/core/http.test.ts +15 -0
- package/src/core/http.ts +64 -0
- package/src/core/index.ts +59 -0
- package/src/core/passthrough.test.ts +13 -0
- package/src/core/passthrough.ts +23 -0
- package/src/core/sharedOptions.ts +66 -0
- package/src/core/typeUtils.ts +20 -0
- package/src/core/utils/HttpResponse/decorators.ts +56 -0
- package/src/core/utils/getResponse.ts +55 -0
- package/src/core/utils/handleRequest.test.ts +554 -0
- package/src/core/utils/handleRequest.ts +132 -0
- package/src/core/utils/internal/Disposable.ts +9 -0
- package/src/core/utils/internal/checkGlobals.ts +17 -0
- package/src/core/utils/internal/devUtils.ts +31 -0
- package/src/core/utils/internal/getCallFrame.test.ts +154 -0
- package/src/core/utils/internal/getCallFrame.ts +35 -0
- package/src/core/utils/internal/isIterable.test.ts +23 -0
- package/src/core/utils/internal/isIterable.ts +12 -0
- package/src/core/utils/internal/isObject.test.ts +20 -0
- package/src/core/utils/internal/isObject.ts +6 -0
- package/src/core/utils/internal/isStringEqual.test.ts +45 -0
- package/src/core/utils/internal/isStringEqual.ts +6 -0
- package/src/core/utils/internal/jsonParse.test.ts +13 -0
- package/src/core/utils/internal/jsonParse.ts +13 -0
- package/src/core/utils/internal/mergeRight.test.ts +43 -0
- package/src/core/utils/internal/mergeRight.ts +27 -0
- package/src/core/utils/internal/parseGraphQLRequest.test.ts +99 -0
- package/src/core/utils/internal/parseGraphQLRequest.ts +205 -0
- package/src/core/utils/internal/parseMultipartData.test.ts +76 -0
- package/src/core/utils/internal/parseMultipartData.ts +104 -0
- package/src/core/utils/internal/pipeEvents.test.ts +14 -0
- package/src/core/utils/internal/pipeEvents.ts +25 -0
- package/src/core/utils/internal/requestHandlerUtils.ts +21 -0
- package/src/core/utils/internal/toReadonlyArray.test.ts +30 -0
- package/src/core/utils/internal/toReadonlyArray.ts +8 -0
- package/src/core/utils/internal/tryCatch.test.ts +29 -0
- package/src/core/utils/internal/tryCatch.ts +11 -0
- package/src/core/utils/internal/uuidv4.ts +3 -0
- package/src/core/utils/logging/getStatusCodeColor.test.ts +22 -0
- package/src/core/utils/logging/getStatusCodeColor.ts +20 -0
- package/src/core/utils/logging/getTimestamp.test.ts +18 -0
- package/src/core/utils/logging/getTimestamp.ts +12 -0
- package/src/core/utils/logging/serializeRequest.test.ts +23 -0
- package/src/core/utils/logging/serializeRequest.ts +23 -0
- package/src/core/utils/logging/serializeResponse.test.ts +77 -0
- package/src/core/utils/logging/serializeResponse.ts +31 -0
- package/src/core/utils/matching/matchRequestUrl.test.ts +114 -0
- package/src/core/utils/matching/matchRequestUrl.ts +73 -0
- package/src/core/utils/matching/normalizePath.node.test.ts +44 -0
- package/src/core/utils/matching/normalizePath.test.ts +50 -0
- package/src/core/utils/matching/normalizePath.ts +21 -0
- package/src/core/utils/request/getPublicUrlFromRequest.test.ts +26 -0
- package/src/core/utils/request/getPublicUrlFromRequest.ts +15 -0
- package/src/core/utils/request/getRequestCookies.node.test.ts +29 -0
- package/src/core/utils/request/getRequestCookies.test.ts +64 -0
- package/src/core/utils/request/getRequestCookies.ts +75 -0
- package/src/core/utils/request/onUnhandledRequest.test.ts +215 -0
- package/src/core/utils/request/onUnhandledRequest.ts +247 -0
- package/src/core/utils/request/readResponseCookies.ts +9 -0
- package/src/core/utils/toResponseInit.ts +7 -0
- package/src/core/utils/url/cleanUrl.test.ts +17 -0
- package/src/core/utils/url/cleanUrl.ts +12 -0
- package/src/core/utils/url/getAbsoluteUrl.node.test.ts +19 -0
- package/src/core/utils/url/getAbsoluteUrl.test.ts +29 -0
- package/src/core/utils/url/getAbsoluteUrl.ts +26 -0
- package/src/core/utils/url/isAbsoluteUrl.test.ts +32 -0
- package/src/core/utils/url/isAbsoluteUrl.ts +6 -0
- package/src/iife/index.ts +2 -0
- package/src/mockServiceWorker.js +287 -0
- package/src/native/index.ts +17 -0
- package/src/node/SetupServerApi.ts +113 -0
- package/src/node/glossary.ts +62 -0
- package/src/node/index.ts +3 -0
- package/src/node/setupServer.ts +21 -0
- package/src/node/utils/isNodeExceptionLike.ts +14 -0
- package/src/tsconfig.core.build.json +6 -0
- package/src/tsconfig.node.build.json +6 -0
- package/src/tsconfig.node.json +8 -0
- package/src/tsconfig.src.json +15 -0
package/lib/mockServiceWorker.js
CHANGED
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import { RequestHandler, RequestHandlerDefaultInfo } from '~/core/handlers/RequestHandler';
|
|
2
|
+
import { BatchInterceptor, Interceptor, HttpRequestEventMap } from '@mswjs/interceptors';
|
|
3
|
+
import { SetupApi } from '~/core/SetupApi';
|
|
4
|
+
import { SharedOptions, LifeCycleEventEmitter, LifeCycleEventsMap } from '~/core/sharedOptions';
|
|
5
|
+
import { PartialDeep } from 'type-fest';
|
|
6
|
+
|
|
7
|
+
interface SetupServer {
|
|
8
|
+
/**
|
|
9
|
+
* Starts requests interception based on the previously provided request handlers.
|
|
10
|
+
*
|
|
11
|
+
* @see {@link https://mswjs.io/docs/api/setup-server/listen `server.listen()` API reference}
|
|
12
|
+
*/
|
|
13
|
+
listen(options?: PartialDeep<SharedOptions>): void;
|
|
14
|
+
/**
|
|
15
|
+
* Stops requests interception by restoring all augmented modules.
|
|
16
|
+
*
|
|
17
|
+
* @see {@link https://mswjs.io/docs/api/setup-server/close `server.close()` API reference}
|
|
18
|
+
*/
|
|
19
|
+
close(): void;
|
|
20
|
+
/**
|
|
21
|
+
* Prepends given request handlers to the list of existing handlers.
|
|
22
|
+
*
|
|
23
|
+
* @see {@link https://mswjs.io/docs/api/setup-server/use `server.use()` API reference}
|
|
24
|
+
*/
|
|
25
|
+
use(...handlers: Array<RequestHandler>): void;
|
|
26
|
+
/**
|
|
27
|
+
* Marks all request handlers that respond using `res.once()` as unused.
|
|
28
|
+
*
|
|
29
|
+
* @see {@link https://mswjs.io/docs/api/setup-server/restore-handlers `server.restore-handlers()` API reference}
|
|
30
|
+
*/
|
|
31
|
+
restoreHandlers(): void;
|
|
32
|
+
/**
|
|
33
|
+
* Resets request handlers to the initial list given to the `setupServer` call, or to the explicit next request handlers list, if given.
|
|
34
|
+
*
|
|
35
|
+
* @see {@link https://mswjs.io/docs/api/setup-server/reset-handlers `server.reset-handlers()` API reference}
|
|
36
|
+
*/
|
|
37
|
+
resetHandlers(...nextHandlers: Array<RequestHandler>): void;
|
|
38
|
+
/**
|
|
39
|
+
* Returns a readonly list of currently active request handlers.
|
|
40
|
+
*
|
|
41
|
+
* @see {@link https://mswjs.io/docs/api/setup-server/list-handlers `server.listHandlers()` API reference}
|
|
42
|
+
*/
|
|
43
|
+
listHandlers(): ReadonlyArray<RequestHandler<RequestHandlerDefaultInfo, any>>;
|
|
44
|
+
/**
|
|
45
|
+
* Life-cycle events.
|
|
46
|
+
* Life-cycle events allow you to subscribe to the internal library events occurring during the request/response handling.
|
|
47
|
+
*
|
|
48
|
+
* @see {@link https://mswjs.io/docs/api/life-cycle-events Life-cycle Events API reference}
|
|
49
|
+
*/
|
|
50
|
+
events: LifeCycleEventEmitter<LifeCycleEventsMap>;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
declare class SetupServerApi extends SetupApi<LifeCycleEventsMap> implements SetupServer {
|
|
54
|
+
protected readonly interceptor: BatchInterceptor<Array<Interceptor<HttpRequestEventMap>>, HttpRequestEventMap>;
|
|
55
|
+
private resolvedOptions;
|
|
56
|
+
constructor(interceptors: Array<{
|
|
57
|
+
new (): Interceptor<HttpRequestEventMap>;
|
|
58
|
+
}>, ...handlers: Array<RequestHandler>);
|
|
59
|
+
/**
|
|
60
|
+
* Subscribe to all requests that are using the interceptor object
|
|
61
|
+
*/
|
|
62
|
+
private init;
|
|
63
|
+
listen(options?: Partial<SharedOptions>): void;
|
|
64
|
+
close(): void;
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
/**
|
|
68
|
+
* Sets up a requests interception in React Native with the given request handlers.
|
|
69
|
+
* @param {RequestHandler[]} handlers List of request handlers.
|
|
70
|
+
*
|
|
71
|
+
* @see {@link https://mswjs.io/docs/api/setup-server `setupServer()` API reference}
|
|
72
|
+
*/
|
|
73
|
+
declare function setupServer(...handlers: Array<RequestHandler>): SetupServerApi;
|
|
74
|
+
|
|
75
|
+
export { setupServer };
|
package/lib/native/index.js
CHANGED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/native/index.ts","../../src/node/SetupServerApi.ts"],"sourcesContent":["import { XMLHttpRequestInterceptor } from '@mswjs/interceptors/XMLHttpRequest'\nimport { RequestHandler } from '~/core/handlers/RequestHandler'\nimport { SetupServerApi } from '../node/SetupServerApi'\n\n/**\n * Sets up a requests interception in React Native with the given request handlers.\n * @param {RequestHandler[]} handlers List of request handlers.\n *\n * @see {@link https://mswjs.io/docs/api/setup-server `setupServer()` API reference}\n */\nexport function setupServer(\n ...handlers: Array<RequestHandler>\n): SetupServerApi {\n // Provision request interception via patching the `XMLHttpRequest` class only\n // in React Native. There is no `http`/`https` modules in that environment.\n return new SetupServerApi([XMLHttpRequestInterceptor], ...handlers)\n}\n","import {\n BatchInterceptor,\n HttpRequestEventMap,\n Interceptor,\n InterceptorReadyState,\n} from '@mswjs/interceptors'\nimport { invariant } from 'outvariant'\nimport { SetupApi } from '~/core/SetupApi'\nimport { RequestHandler } from '~/core/handlers/RequestHandler'\nimport { LifeCycleEventsMap, SharedOptions } from '~/core/sharedOptions'\nimport { RequiredDeep } from '~/core/typeUtils'\nimport { handleRequest } from '~/core/utils/handleRequest'\nimport { devUtils } from '~/core/utils/internal/devUtils'\nimport { mergeRight } from '~/core/utils/internal/mergeRight'\nimport { SetupServer } from './glossary'\n\nconst DEFAULT_LISTEN_OPTIONS: RequiredDeep<SharedOptions> = {\n onUnhandledRequest: 'warn',\n}\n\nexport class SetupServerApi\n extends SetupApi<LifeCycleEventsMap>\n implements SetupServer\n{\n protected readonly interceptor: BatchInterceptor<\n Array<Interceptor<HttpRequestEventMap>>,\n HttpRequestEventMap\n >\n private resolvedOptions: RequiredDeep<SharedOptions>\n\n constructor(\n interceptors: Array<{\n new (): Interceptor<HttpRequestEventMap>\n }>,\n ...handlers: Array<RequestHandler>\n ) {\n super(...handlers)\n\n this.interceptor = new BatchInterceptor({\n name: 'setup-server',\n interceptors: interceptors.map((Interceptor) => new Interceptor()),\n })\n this.resolvedOptions = {} as RequiredDeep<SharedOptions>\n\n this.init()\n }\n\n /**\n * Subscribe to all requests that are using the interceptor object\n */\n private init(): void {\n this.interceptor.on('request', async ({ request, requestId }) => {\n const response = await handleRequest(\n request,\n requestId,\n this.currentHandlers,\n this.resolvedOptions,\n this.emitter,\n )\n\n if (response) {\n request.respondWith(response)\n }\n\n return\n })\n\n this.interceptor.on(\n 'response',\n ({ response, isMockedResponse, request, requestId }) => {\n this.emitter.emit(\n isMockedResponse ? 'response:mocked' : 'response:bypass',\n {\n response,\n request,\n requestId,\n },\n )\n },\n )\n }\n\n public listen(options: Partial<SharedOptions> = {}): void {\n this.resolvedOptions = mergeRight(\n DEFAULT_LISTEN_OPTIONS,\n options,\n ) as RequiredDeep<SharedOptions>\n\n // Apply the interceptor when starting the server.\n this.interceptor.apply()\n\n this.subscriptions.push(() => {\n this.interceptor.dispose()\n })\n\n // Assert that the interceptor has been applied successfully.\n // Also guards us from forgetting to call \"interceptor.apply()\"\n // as a part of the \"listen\" method.\n invariant(\n [InterceptorReadyState.APPLYING, InterceptorReadyState.APPLIED].includes(\n this.interceptor.readyState,\n ),\n devUtils.formatMessage(\n 'Failed to start \"setupServer\": the interceptor failed to apply. This is likely an issue with the library and you should report it at \"%s\".',\n ),\n 'https://github.com/mswjs/msw/issues/new/choose',\n )\n }\n\n public close(): void {\n this.dispose()\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,4BAA0C;;;ACA1C,0BAKO;AACP,wBAA0B;AAC1B,sBAAyB;AAIzB,2BAA8B;AAC9B,sBAAyB;AACzB,wBAA2B;AAG3B,IAAM,yBAAsD;AAAA,EAC1D,oBAAoB;AACtB;AAEO,IAAM,iBAAN,cACG,yBAEV;AAAA,EAOE,YACE,iBAGG,UACH;AACA,UAAM,GAAG,QAAQ;AAEjB,SAAK,cAAc,IAAI,qCAAiB;AAAA,MACtC,MAAM;AAAA,MACN,cAAc,aAAa,IAAI,CAACA,iBAAgB,IAAIA,aAAY,CAAC;AAAA,IACnE,CAAC;AACD,SAAK,kBAAkB,CAAC;AAExB,SAAK,KAAK;AAAA,EACZ;AAAA;AAAA;AAAA;AAAA,EAKQ,OAAa;AACnB,SAAK,YAAY,GAAG,WAAW,CAAO,OAA2B,eAA3B,KAA2B,WAA3B,EAAE,SAAS,UAAU,GAAM;AAC/D,YAAM,WAAW,UAAM;AAAA,QACrB;AAAA,QACA;AAAA,QACA,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,MACP;AAEA,UAAI,UAAU;AACZ,gBAAQ,YAAY,QAAQ;AAAA,MAC9B;AAEA;AAAA,IACF,EAAC;AAED,SAAK,YAAY;AAAA,MACf;AAAA,MACA,CAAC,EAAE,UAAU,kBAAkB,SAAS,UAAU,MAAM;AACtD,aAAK,QAAQ;AAAA,UACX,mBAAmB,oBAAoB;AAAA,UACvC;AAAA,YACE;AAAA,YACA;AAAA,YACA;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAAA,EAEO,OAAO,UAAkC,CAAC,GAAS;AACxD,SAAK,sBAAkB;AAAA,MACrB;AAAA,MACA;AAAA,IACF;AAGA,SAAK,YAAY,MAAM;AAEvB,SAAK,cAAc,KAAK,MAAM;AAC5B,WAAK,YAAY,QAAQ;AAAA,IAC3B,CAAC;AAKD;AAAA,MACE,CAAC,0CAAsB,UAAU,0CAAsB,OAAO,EAAE;AAAA,QAC9D,KAAK,YAAY;AAAA,MACnB;AAAA,MACA,yBAAS;AAAA,QACP;AAAA,MACF;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAAA,EAEO,QAAc;AACnB,SAAK,QAAQ;AAAA,EACf;AACF;;;ADtGO,SAAS,eACX,UACa;AAGhB,SAAO,IAAI,eAAe,CAAC,+CAAyB,GAAG,GAAG,QAAQ;AACpE;","names":["Interceptor"]}
|
package/lib/native/index.mjs
CHANGED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/native/index.ts","../../src/node/SetupServerApi.ts"],"sourcesContent":["import { XMLHttpRequestInterceptor } from '@mswjs/interceptors/XMLHttpRequest'\nimport { RequestHandler } from '~/core/handlers/RequestHandler'\nimport { SetupServerApi } from '../node/SetupServerApi'\n\n/**\n * Sets up a requests interception in React Native with the given request handlers.\n * @param {RequestHandler[]} handlers List of request handlers.\n *\n * @see {@link https://mswjs.io/docs/api/setup-server `setupServer()` API reference}\n */\nexport function setupServer(\n ...handlers: Array<RequestHandler>\n): SetupServerApi {\n // Provision request interception via patching the `XMLHttpRequest` class only\n // in React Native. There is no `http`/`https` modules in that environment.\n return new SetupServerApi([XMLHttpRequestInterceptor], ...handlers)\n}\n","import {\n BatchInterceptor,\n HttpRequestEventMap,\n Interceptor,\n InterceptorReadyState,\n} from '@mswjs/interceptors'\nimport { invariant } from 'outvariant'\nimport { SetupApi } from '~/core/SetupApi'\nimport { RequestHandler } from '~/core/handlers/RequestHandler'\nimport { LifeCycleEventsMap, SharedOptions } from '~/core/sharedOptions'\nimport { RequiredDeep } from '~/core/typeUtils'\nimport { handleRequest } from '~/core/utils/handleRequest'\nimport { devUtils } from '~/core/utils/internal/devUtils'\nimport { mergeRight } from '~/core/utils/internal/mergeRight'\nimport { SetupServer } from './glossary'\n\nconst DEFAULT_LISTEN_OPTIONS: RequiredDeep<SharedOptions> = {\n onUnhandledRequest: 'warn',\n}\n\nexport class SetupServerApi\n extends SetupApi<LifeCycleEventsMap>\n implements SetupServer\n{\n protected readonly interceptor: BatchInterceptor<\n Array<Interceptor<HttpRequestEventMap>>,\n HttpRequestEventMap\n >\n private resolvedOptions: RequiredDeep<SharedOptions>\n\n constructor(\n interceptors: Array<{\n new (): Interceptor<HttpRequestEventMap>\n }>,\n ...handlers: Array<RequestHandler>\n ) {\n super(...handlers)\n\n this.interceptor = new BatchInterceptor({\n name: 'setup-server',\n interceptors: interceptors.map((Interceptor) => new Interceptor()),\n })\n this.resolvedOptions = {} as RequiredDeep<SharedOptions>\n\n this.init()\n }\n\n /**\n * Subscribe to all requests that are using the interceptor object\n */\n private init(): void {\n this.interceptor.on('request', async ({ request, requestId }) => {\n const response = await handleRequest(\n request,\n requestId,\n this.currentHandlers,\n this.resolvedOptions,\n this.emitter,\n )\n\n if (response) {\n request.respondWith(response)\n }\n\n return\n })\n\n this.interceptor.on(\n 'response',\n ({ response, isMockedResponse, request, requestId }) => {\n this.emitter.emit(\n isMockedResponse ? 'response:mocked' : 'response:bypass',\n {\n response,\n request,\n requestId,\n },\n )\n },\n )\n }\n\n public listen(options: Partial<SharedOptions> = {}): void {\n this.resolvedOptions = mergeRight(\n DEFAULT_LISTEN_OPTIONS,\n options,\n ) as RequiredDeep<SharedOptions>\n\n // Apply the interceptor when starting the server.\n this.interceptor.apply()\n\n this.subscriptions.push(() => {\n this.interceptor.dispose()\n })\n\n // Assert that the interceptor has been applied successfully.\n // Also guards us from forgetting to call \"interceptor.apply()\"\n // as a part of the \"listen\" method.\n invariant(\n [InterceptorReadyState.APPLYING, InterceptorReadyState.APPLIED].includes(\n this.interceptor.readyState,\n ),\n devUtils.formatMessage(\n 'Failed to start \"setupServer\": the interceptor failed to apply. This is likely an issue with the library and you should report it at \"%s\".',\n ),\n 'https://github.com/mswjs/msw/issues/new/choose',\n )\n }\n\n public close(): void {\n this.dispose()\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAAA,SAAS,iCAAiC;;;ACA1C;AAAA,EACE;AAAA,EAGA;AAAA,OACK;AACP,SAAS,iBAAiB;AAC1B,SAAS,gBAAgB;AAIzB,SAAS,qBAAqB;AAC9B,SAAS,gBAAgB;AACzB,SAAS,kBAAkB;AAG3B,IAAM,yBAAsD;AAAA,EAC1D,oBAAoB;AACtB;AAEO,IAAM,iBAAN,cACG,SAEV;AAAA,EAOE,YACE,iBAGG,UACH;AACA,UAAM,GAAG,QAAQ;AAEjB,SAAK,cAAc,IAAI,iBAAiB;AAAA,MACtC,MAAM;AAAA,MACN,cAAc,aAAa,IAAI,CAACA,iBAAgB,IAAIA,aAAY,CAAC;AAAA,IACnE,CAAC;AACD,SAAK,kBAAkB,CAAC;AAExB,SAAK,KAAK;AAAA,EACZ;AAAA;AAAA;AAAA;AAAA,EAKQ,OAAa;AACnB,SAAK,YAAY,GAAG,WAAW,CAAO,OAA2B,eAA3B,KAA2B,WAA3B,EAAE,SAAS,UAAU,GAAM;AAC/D,YAAM,WAAW,MAAM;AAAA,QACrB;AAAA,QACA;AAAA,QACA,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,MACP;AAEA,UAAI,UAAU;AACZ,gBAAQ,YAAY,QAAQ;AAAA,MAC9B;AAEA;AAAA,IACF,EAAC;AAED,SAAK,YAAY;AAAA,MACf;AAAA,MACA,CAAC,EAAE,UAAU,kBAAkB,SAAS,UAAU,MAAM;AACtD,aAAK,QAAQ;AAAA,UACX,mBAAmB,oBAAoB;AAAA,UACvC;AAAA,YACE;AAAA,YACA;AAAA,YACA;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAAA,EAEO,OAAO,UAAkC,CAAC,GAAS;AACxD,SAAK,kBAAkB;AAAA,MACrB;AAAA,MACA;AAAA,IACF;AAGA,SAAK,YAAY,MAAM;AAEvB,SAAK,cAAc,KAAK,MAAM;AAC5B,WAAK,YAAY,QAAQ;AAAA,IAC3B,CAAC;AAKD;AAAA,MACE,CAAC,sBAAsB,UAAU,sBAAsB,OAAO,EAAE;AAAA,QAC9D,KAAK,YAAY;AAAA,MACnB;AAAA,MACA,SAAS;AAAA,QACP;AAAA,MACF;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAAA,EAEO,QAAc;AACnB,SAAK,QAAQ;AAAA,EACf;AACF;;;ADtGO,SAAS,eACX,UACa;AAGhB,SAAO,IAAI,eAAe,CAAC,yBAAyB,GAAG,GAAG,QAAQ;AACpE;","names":["Interceptor"]}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import { PartialDeep } from 'type-fest';
|
|
2
|
+
import { RequestHandler, RequestHandlerDefaultInfo } from '~/core/handlers/RequestHandler';
|
|
3
|
+
import { SharedOptions, LifeCycleEventEmitter, LifeCycleEventsMap } from '~/core/sharedOptions';
|
|
4
|
+
import { BatchInterceptor, Interceptor, HttpRequestEventMap } from '@mswjs/interceptors';
|
|
5
|
+
import { SetupApi } from '~/core/SetupApi';
|
|
6
|
+
|
|
7
|
+
interface SetupServer {
|
|
8
|
+
/**
|
|
9
|
+
* Starts requests interception based on the previously provided request handlers.
|
|
10
|
+
*
|
|
11
|
+
* @see {@link https://mswjs.io/docs/api/setup-server/listen `server.listen()` API reference}
|
|
12
|
+
*/
|
|
13
|
+
listen(options?: PartialDeep<SharedOptions>): void;
|
|
14
|
+
/**
|
|
15
|
+
* Stops requests interception by restoring all augmented modules.
|
|
16
|
+
*
|
|
17
|
+
* @see {@link https://mswjs.io/docs/api/setup-server/close `server.close()` API reference}
|
|
18
|
+
*/
|
|
19
|
+
close(): void;
|
|
20
|
+
/**
|
|
21
|
+
* Prepends given request handlers to the list of existing handlers.
|
|
22
|
+
*
|
|
23
|
+
* @see {@link https://mswjs.io/docs/api/setup-server/use `server.use()` API reference}
|
|
24
|
+
*/
|
|
25
|
+
use(...handlers: Array<RequestHandler>): void;
|
|
26
|
+
/**
|
|
27
|
+
* Marks all request handlers that respond using `res.once()` as unused.
|
|
28
|
+
*
|
|
29
|
+
* @see {@link https://mswjs.io/docs/api/setup-server/restore-handlers `server.restore-handlers()` API reference}
|
|
30
|
+
*/
|
|
31
|
+
restoreHandlers(): void;
|
|
32
|
+
/**
|
|
33
|
+
* Resets request handlers to the initial list given to the `setupServer` call, or to the explicit next request handlers list, if given.
|
|
34
|
+
*
|
|
35
|
+
* @see {@link https://mswjs.io/docs/api/setup-server/reset-handlers `server.reset-handlers()` API reference}
|
|
36
|
+
*/
|
|
37
|
+
resetHandlers(...nextHandlers: Array<RequestHandler>): void;
|
|
38
|
+
/**
|
|
39
|
+
* Returns a readonly list of currently active request handlers.
|
|
40
|
+
*
|
|
41
|
+
* @see {@link https://mswjs.io/docs/api/setup-server/list-handlers `server.listHandlers()` API reference}
|
|
42
|
+
*/
|
|
43
|
+
listHandlers(): ReadonlyArray<RequestHandler<RequestHandlerDefaultInfo, any>>;
|
|
44
|
+
/**
|
|
45
|
+
* Life-cycle events.
|
|
46
|
+
* Life-cycle events allow you to subscribe to the internal library events occurring during the request/response handling.
|
|
47
|
+
*
|
|
48
|
+
* @see {@link https://mswjs.io/docs/api/life-cycle-events Life-cycle Events API reference}
|
|
49
|
+
*/
|
|
50
|
+
events: LifeCycleEventEmitter<LifeCycleEventsMap>;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
declare class SetupServerApi extends SetupApi<LifeCycleEventsMap> implements SetupServer {
|
|
54
|
+
protected readonly interceptor: BatchInterceptor<Array<Interceptor<HttpRequestEventMap>>, HttpRequestEventMap>;
|
|
55
|
+
private resolvedOptions;
|
|
56
|
+
constructor(interceptors: Array<{
|
|
57
|
+
new (): Interceptor<HttpRequestEventMap>;
|
|
58
|
+
}>, ...handlers: Array<RequestHandler>);
|
|
59
|
+
/**
|
|
60
|
+
* Subscribe to all requests that are using the interceptor object
|
|
61
|
+
*/
|
|
62
|
+
private init;
|
|
63
|
+
listen(options?: Partial<SharedOptions>): void;
|
|
64
|
+
close(): void;
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
/**
|
|
68
|
+
* Sets up a requests interception in Node.js with the given request handlers.
|
|
69
|
+
* @param {RequestHandler[]} handlers List of request handlers.
|
|
70
|
+
*
|
|
71
|
+
* @see {@link https://mswjs.io/docs/api/setup-server `setupServer()` API reference}
|
|
72
|
+
*/
|
|
73
|
+
declare const setupServer: (...handlers: Array<RequestHandler>) => SetupServer;
|
|
74
|
+
|
|
75
|
+
export { type SetupServer, SetupServerApi, setupServer };
|
package/lib/node/index.d.ts
CHANGED
|
@@ -72,4 +72,4 @@ declare class SetupServerApi extends SetupApi<LifeCycleEventsMap> implements Set
|
|
|
72
72
|
*/
|
|
73
73
|
declare const setupServer: (...handlers: Array<RequestHandler>) => SetupServer;
|
|
74
74
|
|
|
75
|
-
export { SetupServer, SetupServerApi, setupServer };
|
|
75
|
+
export { type SetupServer, SetupServerApi, setupServer };
|
package/lib/node/index.js
CHANGED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/node/index.ts","../../src/node/SetupServerApi.ts","../../src/node/setupServer.ts"],"sourcesContent":["export type { SetupServer } from './glossary'\nexport { SetupServerApi } from './SetupServerApi'\nexport { setupServer } from './setupServer'\n","import {\n BatchInterceptor,\n HttpRequestEventMap,\n Interceptor,\n InterceptorReadyState,\n} from '@mswjs/interceptors'\nimport { invariant } from 'outvariant'\nimport { SetupApi } from '~/core/SetupApi'\nimport { RequestHandler } from '~/core/handlers/RequestHandler'\nimport { LifeCycleEventsMap, SharedOptions } from '~/core/sharedOptions'\nimport { RequiredDeep } from '~/core/typeUtils'\nimport { handleRequest } from '~/core/utils/handleRequest'\nimport { devUtils } from '~/core/utils/internal/devUtils'\nimport { mergeRight } from '~/core/utils/internal/mergeRight'\nimport { SetupServer } from './glossary'\n\nconst DEFAULT_LISTEN_OPTIONS: RequiredDeep<SharedOptions> = {\n onUnhandledRequest: 'warn',\n}\n\nexport class SetupServerApi\n extends SetupApi<LifeCycleEventsMap>\n implements SetupServer\n{\n protected readonly interceptor: BatchInterceptor<\n Array<Interceptor<HttpRequestEventMap>>,\n HttpRequestEventMap\n >\n private resolvedOptions: RequiredDeep<SharedOptions>\n\n constructor(\n interceptors: Array<{\n new (): Interceptor<HttpRequestEventMap>\n }>,\n ...handlers: Array<RequestHandler>\n ) {\n super(...handlers)\n\n this.interceptor = new BatchInterceptor({\n name: 'setup-server',\n interceptors: interceptors.map((Interceptor) => new Interceptor()),\n })\n this.resolvedOptions = {} as RequiredDeep<SharedOptions>\n\n this.init()\n }\n\n /**\n * Subscribe to all requests that are using the interceptor object\n */\n private init(): void {\n this.interceptor.on('request', async ({ request, requestId }) => {\n const response = await handleRequest(\n request,\n requestId,\n this.currentHandlers,\n this.resolvedOptions,\n this.emitter,\n )\n\n if (response) {\n request.respondWith(response)\n }\n\n return\n })\n\n this.interceptor.on(\n 'response',\n ({ response, isMockedResponse, request, requestId }) => {\n this.emitter.emit(\n isMockedResponse ? 'response:mocked' : 'response:bypass',\n {\n response,\n request,\n requestId,\n },\n )\n },\n )\n }\n\n public listen(options: Partial<SharedOptions> = {}): void {\n this.resolvedOptions = mergeRight(\n DEFAULT_LISTEN_OPTIONS,\n options,\n ) as RequiredDeep<SharedOptions>\n\n // Apply the interceptor when starting the server.\n this.interceptor.apply()\n\n this.subscriptions.push(() => {\n this.interceptor.dispose()\n })\n\n // Assert that the interceptor has been applied successfully.\n // Also guards us from forgetting to call \"interceptor.apply()\"\n // as a part of the \"listen\" method.\n invariant(\n [InterceptorReadyState.APPLYING, InterceptorReadyState.APPLIED].includes(\n this.interceptor.readyState,\n ),\n devUtils.formatMessage(\n 'Failed to start \"setupServer\": the interceptor failed to apply. This is likely an issue with the library and you should report it at \"%s\".',\n ),\n 'https://github.com/mswjs/msw/issues/new/choose',\n )\n }\n\n public close(): void {\n this.dispose()\n }\n}\n","import { ClientRequestInterceptor } from '@mswjs/interceptors/ClientRequest'\nimport { XMLHttpRequestInterceptor } from '@mswjs/interceptors/XMLHttpRequest'\nimport { FetchInterceptor } from '@mswjs/interceptors/fetch'\nimport { RequestHandler } from '~/core/handlers/RequestHandler'\nimport { SetupServerApi } from './SetupServerApi'\nimport { SetupServer } from './glossary'\n\n/**\n * Sets up a requests interception in Node.js with the given request handlers.\n * @param {RequestHandler[]} handlers List of request handlers.\n *\n * @see {@link https://mswjs.io/docs/api/setup-server `setupServer()` API reference}\n */\nexport const setupServer = (\n ...handlers: Array<RequestHandler>\n): SetupServer => {\n return new SetupServerApi(\n [ClientRequestInterceptor, XMLHttpRequestInterceptor, FetchInterceptor],\n ...handlers,\n )\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAA,0BAKO;AACP,wBAA0B;AAC1B,sBAAyB;AAIzB,2BAA8B;AAC9B,sBAAyB;AACzB,wBAA2B;AAG3B,IAAM,yBAAsD;AAAA,EAC1D,oBAAoB;AACtB;AAEO,IAAM,iBAAN,cACG,yBAEV;AAAA,EAOE,YACE,iBAGG,UACH;AACA,UAAM,GAAG,QAAQ;AAEjB,SAAK,cAAc,IAAI,qCAAiB;AAAA,MACtC,MAAM;AAAA,MACN,cAAc,aAAa,IAAI,CAACA,iBAAgB,IAAIA,aAAY,CAAC;AAAA,IACnE,CAAC;AACD,SAAK,kBAAkB,CAAC;AAExB,SAAK,KAAK;AAAA,EACZ;AAAA;AAAA;AAAA;AAAA,EAKQ,OAAa;AACnB,SAAK,YAAY,GAAG,WAAW,CAAO,OAA2B,eAA3B,KAA2B,WAA3B,EAAE,SAAS,UAAU,GAAM;AAC/D,YAAM,WAAW,UAAM;AAAA,QACrB;AAAA,QACA;AAAA,QACA,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,MACP;AAEA,UAAI,UAAU;AACZ,gBAAQ,YAAY,QAAQ;AAAA,MAC9B;AAEA;AAAA,IACF,EAAC;AAED,SAAK,YAAY;AAAA,MACf;AAAA,MACA,CAAC,EAAE,UAAU,kBAAkB,SAAS,UAAU,MAAM;AACtD,aAAK,QAAQ;AAAA,UACX,mBAAmB,oBAAoB;AAAA,UACvC;AAAA,YACE;AAAA,YACA;AAAA,YACA;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAAA,EAEO,OAAO,UAAkC,CAAC,GAAS;AACxD,SAAK,sBAAkB;AAAA,MACrB;AAAA,MACA;AAAA,IACF;AAGA,SAAK,YAAY,MAAM;AAEvB,SAAK,cAAc,KAAK,MAAM;AAC5B,WAAK,YAAY,QAAQ;AAAA,IAC3B,CAAC;AAKD;AAAA,MACE,CAAC,0CAAsB,UAAU,0CAAsB,OAAO,EAAE;AAAA,QAC9D,KAAK,YAAY;AAAA,MACnB;AAAA,MACA,yBAAS;AAAA,QACP;AAAA,MACF;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAAA,EAEO,QAAc;AACnB,SAAK,QAAQ;AAAA,EACf;AACF;;;AChHA,2BAAyC;AACzC,4BAA0C;AAC1C,mBAAiC;AAW1B,IAAM,cAAc,IACtB,aACa;AAChB,SAAO,IAAI;AAAA,IACT,CAAC,+CAA0B,iDAA2B,6BAAgB;AAAA,IACtE,GAAG;AAAA,EACL;AACF;","names":["Interceptor"]}
|
package/lib/node/index.mjs
CHANGED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/node/SetupServerApi.ts","../../src/node/setupServer.ts"],"sourcesContent":["import {\n BatchInterceptor,\n HttpRequestEventMap,\n Interceptor,\n InterceptorReadyState,\n} from '@mswjs/interceptors'\nimport { invariant } from 'outvariant'\nimport { SetupApi } from '~/core/SetupApi'\nimport { RequestHandler } from '~/core/handlers/RequestHandler'\nimport { LifeCycleEventsMap, SharedOptions } from '~/core/sharedOptions'\nimport { RequiredDeep } from '~/core/typeUtils'\nimport { handleRequest } from '~/core/utils/handleRequest'\nimport { devUtils } from '~/core/utils/internal/devUtils'\nimport { mergeRight } from '~/core/utils/internal/mergeRight'\nimport { SetupServer } from './glossary'\n\nconst DEFAULT_LISTEN_OPTIONS: RequiredDeep<SharedOptions> = {\n onUnhandledRequest: 'warn',\n}\n\nexport class SetupServerApi\n extends SetupApi<LifeCycleEventsMap>\n implements SetupServer\n{\n protected readonly interceptor: BatchInterceptor<\n Array<Interceptor<HttpRequestEventMap>>,\n HttpRequestEventMap\n >\n private resolvedOptions: RequiredDeep<SharedOptions>\n\n constructor(\n interceptors: Array<{\n new (): Interceptor<HttpRequestEventMap>\n }>,\n ...handlers: Array<RequestHandler>\n ) {\n super(...handlers)\n\n this.interceptor = new BatchInterceptor({\n name: 'setup-server',\n interceptors: interceptors.map((Interceptor) => new Interceptor()),\n })\n this.resolvedOptions = {} as RequiredDeep<SharedOptions>\n\n this.init()\n }\n\n /**\n * Subscribe to all requests that are using the interceptor object\n */\n private init(): void {\n this.interceptor.on('request', async ({ request, requestId }) => {\n const response = await handleRequest(\n request,\n requestId,\n this.currentHandlers,\n this.resolvedOptions,\n this.emitter,\n )\n\n if (response) {\n request.respondWith(response)\n }\n\n return\n })\n\n this.interceptor.on(\n 'response',\n ({ response, isMockedResponse, request, requestId }) => {\n this.emitter.emit(\n isMockedResponse ? 'response:mocked' : 'response:bypass',\n {\n response,\n request,\n requestId,\n },\n )\n },\n )\n }\n\n public listen(options: Partial<SharedOptions> = {}): void {\n this.resolvedOptions = mergeRight(\n DEFAULT_LISTEN_OPTIONS,\n options,\n ) as RequiredDeep<SharedOptions>\n\n // Apply the interceptor when starting the server.\n this.interceptor.apply()\n\n this.subscriptions.push(() => {\n this.interceptor.dispose()\n })\n\n // Assert that the interceptor has been applied successfully.\n // Also guards us from forgetting to call \"interceptor.apply()\"\n // as a part of the \"listen\" method.\n invariant(\n [InterceptorReadyState.APPLYING, InterceptorReadyState.APPLIED].includes(\n this.interceptor.readyState,\n ),\n devUtils.formatMessage(\n 'Failed to start \"setupServer\": the interceptor failed to apply. This is likely an issue with the library and you should report it at \"%s\".',\n ),\n 'https://github.com/mswjs/msw/issues/new/choose',\n )\n }\n\n public close(): void {\n this.dispose()\n }\n}\n","import { ClientRequestInterceptor } from '@mswjs/interceptors/ClientRequest'\nimport { XMLHttpRequestInterceptor } from '@mswjs/interceptors/XMLHttpRequest'\nimport { FetchInterceptor } from '@mswjs/interceptors/fetch'\nimport { RequestHandler } from '~/core/handlers/RequestHandler'\nimport { SetupServerApi } from './SetupServerApi'\nimport { SetupServer } from './glossary'\n\n/**\n * Sets up a requests interception in Node.js with the given request handlers.\n * @param {RequestHandler[]} handlers List of request handlers.\n *\n * @see {@link https://mswjs.io/docs/api/setup-server `setupServer()` API reference}\n */\nexport const setupServer = (\n ...handlers: Array<RequestHandler>\n): SetupServer => {\n return new SetupServerApi(\n [ClientRequestInterceptor, XMLHttpRequestInterceptor, FetchInterceptor],\n ...handlers,\n )\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA,EACE;AAAA,EAGA;AAAA,OACK;AACP,SAAS,iBAAiB;AAC1B,SAAS,gBAAgB;AAIzB,SAAS,qBAAqB;AAC9B,SAAS,gBAAgB;AACzB,SAAS,kBAAkB;AAG3B,IAAM,yBAAsD;AAAA,EAC1D,oBAAoB;AACtB;AAEO,IAAM,iBAAN,cACG,SAEV;AAAA,EAOE,YACE,iBAGG,UACH;AACA,UAAM,GAAG,QAAQ;AAEjB,SAAK,cAAc,IAAI,iBAAiB;AAAA,MACtC,MAAM;AAAA,MACN,cAAc,aAAa,IAAI,CAACA,iBAAgB,IAAIA,aAAY,CAAC;AAAA,IACnE,CAAC;AACD,SAAK,kBAAkB,CAAC;AAExB,SAAK,KAAK;AAAA,EACZ;AAAA;AAAA;AAAA;AAAA,EAKQ,OAAa;AACnB,SAAK,YAAY,GAAG,WAAW,CAAO,OAA2B,eAA3B,KAA2B,WAA3B,EAAE,SAAS,UAAU,GAAM;AAC/D,YAAM,WAAW,MAAM;AAAA,QACrB;AAAA,QACA;AAAA,QACA,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,MACP;AAEA,UAAI,UAAU;AACZ,gBAAQ,YAAY,QAAQ;AAAA,MAC9B;AAEA;AAAA,IACF,EAAC;AAED,SAAK,YAAY;AAAA,MACf;AAAA,MACA,CAAC,EAAE,UAAU,kBAAkB,SAAS,UAAU,MAAM;AACtD,aAAK,QAAQ;AAAA,UACX,mBAAmB,oBAAoB;AAAA,UACvC;AAAA,YACE;AAAA,YACA;AAAA,YACA;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAAA,EAEO,OAAO,UAAkC,CAAC,GAAS;AACxD,SAAK,kBAAkB;AAAA,MACrB;AAAA,MACA;AAAA,IACF;AAGA,SAAK,YAAY,MAAM;AAEvB,SAAK,cAAc,KAAK,MAAM;AAC5B,WAAK,YAAY,QAAQ;AAAA,IAC3B,CAAC;AAKD;AAAA,MACE,CAAC,sBAAsB,UAAU,sBAAsB,OAAO,EAAE;AAAA,QAC9D,KAAK,YAAY;AAAA,MACnB;AAAA,MACA,SAAS;AAAA,QACP;AAAA,MACF;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAAA,EAEO,QAAc;AACnB,SAAK,QAAQ;AAAA,EACf;AACF;;;AChHA,SAAS,gCAAgC;AACzC,SAAS,iCAAiC;AAC1C,SAAS,wBAAwB;AAW1B,IAAM,cAAc,IACtB,aACa;AAChB,SAAO,IAAI;AAAA,IACT,CAAC,0BAA0B,2BAA2B,gBAAgB;AAAA,IACtE,GAAG;AAAA,EACL;AACF;","names":["Interceptor"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "msw",
|
|
3
|
-
"version": "2.0.
|
|
3
|
+
"version": "2.0.14",
|
|
4
4
|
"description": "Seamless REST/GraphQL API mocking library for browser and Node.js.",
|
|
5
5
|
"main": "./lib/core/index.js",
|
|
6
6
|
"module": "./lib/core/index.mjs",
|
|
@@ -70,6 +70,7 @@
|
|
|
70
70
|
"config/scripts/postinstall.js",
|
|
71
71
|
"cli",
|
|
72
72
|
"lib",
|
|
73
|
+
"src",
|
|
73
74
|
"browser",
|
|
74
75
|
"node",
|
|
75
76
|
"native",
|
|
@@ -95,7 +96,7 @@
|
|
|
95
96
|
"@bundled-es-modules/js-levenshtein": "^2.0.1",
|
|
96
97
|
"@bundled-es-modules/statuses": "^1.0.1",
|
|
97
98
|
"@mswjs/cookies": "^1.1.0",
|
|
98
|
-
"@mswjs/interceptors": "^0.25.
|
|
99
|
+
"@mswjs/interceptors": "^0.25.14",
|
|
99
100
|
"@open-draft/until": "^2.1.0",
|
|
100
101
|
"@types/cookie": "^0.4.1",
|
|
101
102
|
"@types/js-levenshtein": "^1.1.1",
|
|
@@ -138,7 +139,7 @@
|
|
|
138
139
|
"cross-env": "^7.0.3",
|
|
139
140
|
"cross-fetch": "^3.1.5",
|
|
140
141
|
"cz-conventional-changelog": "3.3.0",
|
|
141
|
-
"esbuild": "^0.
|
|
142
|
+
"esbuild": "^0.19.11",
|
|
142
143
|
"esbuild-loader": "^2.21.0",
|
|
143
144
|
"eslint": "^7.30.0",
|
|
144
145
|
"eslint-config-prettier": "^8.3.0",
|
|
@@ -156,7 +157,7 @@
|
|
|
156
157
|
"rimraf": "^3.0.2",
|
|
157
158
|
"simple-git-hooks": "^2.8.0",
|
|
158
159
|
"ts-node": "^10.9.1",
|
|
159
|
-
"tsup": "^
|
|
160
|
+
"tsup": "^8.0.1",
|
|
160
161
|
"typescript": "^5.0.2",
|
|
161
162
|
"undici": "^5.20.0",
|
|
162
163
|
"url-loader": "^4.1.1",
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
declare const SERVICE_WORKER_CHECKSUM: string
|
|
@@ -0,0 +1,259 @@
|
|
|
1
|
+
import { Emitter } from 'strict-event-emitter'
|
|
2
|
+
import {
|
|
3
|
+
LifeCycleEventEmitter,
|
|
4
|
+
LifeCycleEventsMap,
|
|
5
|
+
SharedOptions,
|
|
6
|
+
} from '~/core/sharedOptions'
|
|
7
|
+
import { ServiceWorkerMessage } from './start/utils/createMessageChannel'
|
|
8
|
+
import {
|
|
9
|
+
RequestHandler,
|
|
10
|
+
RequestHandlerDefaultInfo,
|
|
11
|
+
} from '~/core/handlers/RequestHandler'
|
|
12
|
+
import type { HttpRequestEventMap, Interceptor } from '@mswjs/interceptors'
|
|
13
|
+
import { Path } from '~/core/utils/matching/matchRequestUrl'
|
|
14
|
+
import { RequiredDeep } from '~/core/typeUtils'
|
|
15
|
+
|
|
16
|
+
export type ResolvedPath = Path | URL
|
|
17
|
+
|
|
18
|
+
type RequestWithoutMethods = Omit<
|
|
19
|
+
Request,
|
|
20
|
+
| 'text'
|
|
21
|
+
| 'body'
|
|
22
|
+
| 'json'
|
|
23
|
+
| 'blob'
|
|
24
|
+
| 'arrayBuffer'
|
|
25
|
+
| 'formData'
|
|
26
|
+
| 'clone'
|
|
27
|
+
| 'signal'
|
|
28
|
+
| 'isHistoryNavigation'
|
|
29
|
+
| 'isReloadNavigation'
|
|
30
|
+
>
|
|
31
|
+
|
|
32
|
+
/**
|
|
33
|
+
* Request representation received from the worker message event.
|
|
34
|
+
*/
|
|
35
|
+
export interface ServiceWorkerIncomingRequest extends RequestWithoutMethods {
|
|
36
|
+
/**
|
|
37
|
+
* Unique ID of the request generated once the request is
|
|
38
|
+
* intercepted by the "fetch" event in the Service Worker.
|
|
39
|
+
*/
|
|
40
|
+
id: string
|
|
41
|
+
body?: ArrayBuffer | null
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
export type ServiceWorkerIncomingResponse = Pick<
|
|
45
|
+
Response,
|
|
46
|
+
'type' | 'ok' | 'status' | 'statusText' | 'body' | 'headers' | 'redirected'
|
|
47
|
+
> & {
|
|
48
|
+
requestId: string
|
|
49
|
+
isMockedResponse: boolean
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
/**
|
|
53
|
+
* Map of the events that can be received from the Service Worker.
|
|
54
|
+
*/
|
|
55
|
+
export interface ServiceWorkerIncomingEventsMap {
|
|
56
|
+
MOCKING_ENABLED: boolean
|
|
57
|
+
INTEGRITY_CHECK_RESPONSE: string
|
|
58
|
+
KEEPALIVE_RESPONSE: never
|
|
59
|
+
REQUEST: ServiceWorkerIncomingRequest
|
|
60
|
+
RESPONSE: ServiceWorkerIncomingResponse
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
/**
|
|
64
|
+
* Map of the events that can be sent to the Service Worker
|
|
65
|
+
* from any execution context.
|
|
66
|
+
*/
|
|
67
|
+
export type ServiceWorkerOutgoingEventTypes =
|
|
68
|
+
| 'MOCK_ACTIVATE'
|
|
69
|
+
| 'MOCK_DEACTIVATE'
|
|
70
|
+
| 'INTEGRITY_CHECK_REQUEST'
|
|
71
|
+
| 'KEEPALIVE_REQUEST'
|
|
72
|
+
| 'CLIENT_CLOSED'
|
|
73
|
+
|
|
74
|
+
export interface StringifiedResponse extends ResponseInit {
|
|
75
|
+
body: string | ArrayBuffer | ReadableStream<Uint8Array> | null
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
/**
|
|
79
|
+
* Map of the events that can be sent to the Service Worker
|
|
80
|
+
* only as a part of a single `fetch` event handler.
|
|
81
|
+
*/
|
|
82
|
+
export interface ServiceWorkerFetchEventMap {
|
|
83
|
+
MOCK_RESPONSE(payload: StringifiedResponse): void
|
|
84
|
+
MOCK_RESPONSE_START(payload: StringifiedResponse): void
|
|
85
|
+
|
|
86
|
+
MOCK_NOT_FOUND(): void
|
|
87
|
+
NETWORK_ERROR(payload: { name: string; message: string }): void
|
|
88
|
+
INTERNAL_ERROR(payload: { status: number; body: string }): void
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
export interface ServiceWorkerBroadcastChannelMessageMap {
|
|
92
|
+
MOCK_RESPONSE_CHUNK(payload: Uint8Array): void
|
|
93
|
+
MOCK_RESPONSE_END(): void
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
export interface StrictEventListener<EventType extends Event> {
|
|
97
|
+
(event: EventType): void
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
export interface SetupWorkerInternalContext {
|
|
101
|
+
isMockingEnabled: boolean
|
|
102
|
+
startOptions: RequiredDeep<StartOptions>
|
|
103
|
+
worker: ServiceWorker | null
|
|
104
|
+
registration: ServiceWorkerRegistration | null
|
|
105
|
+
requestHandlers: Array<RequestHandler>
|
|
106
|
+
emitter: Emitter<LifeCycleEventsMap>
|
|
107
|
+
keepAliveInterval?: number
|
|
108
|
+
workerChannel: {
|
|
109
|
+
/**
|
|
110
|
+
* Adds a Service Worker event listener.
|
|
111
|
+
*/
|
|
112
|
+
on<EventType extends keyof ServiceWorkerIncomingEventsMap>(
|
|
113
|
+
eventType: EventType,
|
|
114
|
+
callback: (
|
|
115
|
+
event: MessageEvent,
|
|
116
|
+
message: ServiceWorkerMessage<
|
|
117
|
+
EventType,
|
|
118
|
+
ServiceWorkerIncomingEventsMap[EventType]
|
|
119
|
+
>,
|
|
120
|
+
) => void,
|
|
121
|
+
): void
|
|
122
|
+
send<EventType extends ServiceWorkerOutgoingEventTypes>(
|
|
123
|
+
eventType: EventType,
|
|
124
|
+
): void
|
|
125
|
+
}
|
|
126
|
+
events: {
|
|
127
|
+
/**
|
|
128
|
+
* Adds an event listener on the given target.
|
|
129
|
+
* Returns a clean-up function that removes that listener.
|
|
130
|
+
*/
|
|
131
|
+
addListener<EventType extends Event>(
|
|
132
|
+
target: EventTarget,
|
|
133
|
+
eventType: string,
|
|
134
|
+
callback: StrictEventListener<EventType>,
|
|
135
|
+
): () => void
|
|
136
|
+
/**
|
|
137
|
+
* Removes all currently attached listeners.
|
|
138
|
+
*/
|
|
139
|
+
removeAllListeners(): void
|
|
140
|
+
/**
|
|
141
|
+
* Awaits a given message type from the Service Worker.
|
|
142
|
+
*/
|
|
143
|
+
once<EventType extends keyof ServiceWorkerIncomingEventsMap>(
|
|
144
|
+
eventType: EventType,
|
|
145
|
+
): Promise<
|
|
146
|
+
ServiceWorkerMessage<EventType, ServiceWorkerIncomingEventsMap[EventType]>
|
|
147
|
+
>
|
|
148
|
+
}
|
|
149
|
+
supports: {
|
|
150
|
+
serviceWorkerApi: boolean
|
|
151
|
+
readableStreamTransfer: boolean
|
|
152
|
+
}
|
|
153
|
+
fallbackInterceptor?: Interceptor<HttpRequestEventMap>
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
export type ServiceWorkerInstanceTuple = [
|
|
157
|
+
ServiceWorker | null,
|
|
158
|
+
ServiceWorkerRegistration,
|
|
159
|
+
]
|
|
160
|
+
|
|
161
|
+
export type FindWorker = (
|
|
162
|
+
scriptUrl: string,
|
|
163
|
+
mockServiceWorkerUrl: string,
|
|
164
|
+
) => boolean
|
|
165
|
+
|
|
166
|
+
export interface StartOptions extends SharedOptions {
|
|
167
|
+
/**
|
|
168
|
+
* Service Worker registration options.
|
|
169
|
+
*/
|
|
170
|
+
serviceWorker?: {
|
|
171
|
+
/**
|
|
172
|
+
* Custom url to the worker script.
|
|
173
|
+
* @default "/mockServiceWorker.js"
|
|
174
|
+
*/
|
|
175
|
+
url?: string
|
|
176
|
+
options?: RegistrationOptions
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
/**
|
|
180
|
+
* Disables the logging of the intercepted requests
|
|
181
|
+
* into browser's console.
|
|
182
|
+
* @default false
|
|
183
|
+
*/
|
|
184
|
+
quiet?: boolean
|
|
185
|
+
|
|
186
|
+
/**
|
|
187
|
+
* Defers any network requests until the Service Worker
|
|
188
|
+
* instance is activated.
|
|
189
|
+
* @default true
|
|
190
|
+
*/
|
|
191
|
+
waitUntilReady?: boolean
|
|
192
|
+
|
|
193
|
+
/**
|
|
194
|
+
* A custom lookup function to find a Mock Service Worker in the list
|
|
195
|
+
* of all registered Service Workers on the page.
|
|
196
|
+
*/
|
|
197
|
+
findWorker?: FindWorker
|
|
198
|
+
}
|
|
199
|
+
|
|
200
|
+
export type StartReturnType = Promise<ServiceWorkerRegistration | undefined>
|
|
201
|
+
export type StartHandler = (
|
|
202
|
+
options: RequiredDeep<StartOptions>,
|
|
203
|
+
initialOptions: StartOptions,
|
|
204
|
+
) => StartReturnType
|
|
205
|
+
export type StopHandler = () => void
|
|
206
|
+
|
|
207
|
+
export interface SetupWorker {
|
|
208
|
+
/**
|
|
209
|
+
* Registers and activates the mock Service Worker.
|
|
210
|
+
*
|
|
211
|
+
* @see {@link https://mswjs.io/docs/api/setup-worker/start `worker.start()` API reference}
|
|
212
|
+
*/
|
|
213
|
+
start: (options?: StartOptions) => StartReturnType
|
|
214
|
+
|
|
215
|
+
/**
|
|
216
|
+
* Stops requests interception for the current client.
|
|
217
|
+
*
|
|
218
|
+
* @see {@link https://mswjs.io/docs/api/setup-worker/stop `worker.stop()` API reference}
|
|
219
|
+
*/
|
|
220
|
+
stop: StopHandler
|
|
221
|
+
|
|
222
|
+
/**
|
|
223
|
+
* Prepends given request handlers to the list of existing handlers.
|
|
224
|
+
* @param {RequestHandler[]} handlers List of runtime request handlers.
|
|
225
|
+
*
|
|
226
|
+
* @see {@link https://mswjs.io/docs/api/setup-worker/use `worker.use()` API reference}
|
|
227
|
+
*/
|
|
228
|
+
use: (...handlers: RequestHandler[]) => void
|
|
229
|
+
|
|
230
|
+
/**
|
|
231
|
+
* Marks all request handlers that respond using `res.once()` as unused.
|
|
232
|
+
*
|
|
233
|
+
* @see {@link https://mswjs.io/docs/api/setup-worker/restore-handlers `worker.restoreHandlers()` API reference}
|
|
234
|
+
*/
|
|
235
|
+
restoreHandlers: () => void
|
|
236
|
+
|
|
237
|
+
/**
|
|
238
|
+
* Resets request handlers to the initial list given to the `setupWorker` call, or to the explicit next request handlers list, if given.
|
|
239
|
+
* @param {RequestHandler[]} nextHandlers List of the new initial request handlers.
|
|
240
|
+
*
|
|
241
|
+
* @see {@link https://mswjs.io/docs/api/setup-worker/reset-handlers `worker.resetHandlers()` API reference}
|
|
242
|
+
*/
|
|
243
|
+
resetHandlers: (...nextHandlers: RequestHandler[]) => void
|
|
244
|
+
|
|
245
|
+
/**
|
|
246
|
+
* Returns a readonly list of currently active request handlers.
|
|
247
|
+
*
|
|
248
|
+
* @see {@link https://mswjs.io/docs/api/setup-worker/list-handlers `worker.listHandlers()` API reference}
|
|
249
|
+
*/
|
|
250
|
+
listHandlers(): ReadonlyArray<RequestHandler<RequestHandlerDefaultInfo, any>>
|
|
251
|
+
|
|
252
|
+
/**
|
|
253
|
+
* Life-cycle events.
|
|
254
|
+
* Life-cycle events allow you to subscribe to the internal library events occurring during the request/response handling.
|
|
255
|
+
*
|
|
256
|
+
* @see {@link https://mswjs.io/docs/api/life-cycle-events Life-cycle Events API reference}
|
|
257
|
+
*/
|
|
258
|
+
events: LifeCycleEventEmitter<LifeCycleEventsMap>
|
|
259
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @vitest-environment node
|
|
3
|
+
*/
|
|
4
|
+
import { setupWorker } from './setupWorker'
|
|
5
|
+
|
|
6
|
+
test('returns an error when run in a Node.js environment', () => {
|
|
7
|
+
expect(setupWorker).toThrow(
|
|
8
|
+
'[MSW] Failed to execute `setupWorker` in a non-browser environment',
|
|
9
|
+
)
|
|
10
|
+
})
|