msw 0.21.3 → 0.22.3

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.
Files changed (49) hide show
  1. package/README.md +3 -9
  2. package/lib/esm/errors-deps.js +6 -7
  3. package/lib/esm/fetch-deps.js +44 -22
  4. package/lib/esm/{matchRequestUrl-deps.js → getCallFrame-deps.js} +32 -5
  5. package/lib/esm/graphql.js +601 -465
  6. package/lib/esm/index.js +56 -50
  7. package/lib/esm/mockServiceWorker.js +16 -10
  8. package/lib/esm/rest-deps.js +10 -1
  9. package/lib/esm/rest.js +1 -1
  10. package/lib/types/context/errors.d.ts +3 -3
  11. package/lib/types/context/json.d.ts +5 -1
  12. package/lib/types/index.d.ts +3 -2
  13. package/lib/types/native/index.d.ts +1 -7
  14. package/lib/types/node/createSetupServer.d.ts +2 -23
  15. package/{node/node/createSetupServer.d.ts → lib/types/node/glossary.d.ts} +12 -13
  16. package/lib/types/node/index.d.ts +1 -0
  17. package/lib/types/node/setupServer.d.ts +1 -7
  18. package/lib/types/response.d.ts +7 -2
  19. package/lib/types/rest.d.ts +60 -30
  20. package/lib/types/setupWorker/glossary.d.ts +22 -0
  21. package/lib/types/setupWorker/setupWorker.d.ts +1 -19
  22. package/lib/types/utils/handlers/requestHandler.d.ts +13 -1
  23. package/lib/types/utils/internal/getCallFrame.d.ts +4 -0
  24. package/lib/types/utils/internal/isObject.d.ts +4 -0
  25. package/lib/types/utils/internal/mergeRight.d.ts +1 -1
  26. package/lib/types/utils/request/onUnhandledRequest.d.ts +1 -1
  27. package/lib/umd/index.js +720 -519
  28. package/lib/umd/mockServiceWorker.js +16 -10
  29. package/native/index.js +2017 -125
  30. package/node/index.js +2017 -125
  31. package/package.json +34 -32
  32. package/lib/types/LiveStorage.d.ts +0 -17
  33. package/node/context/delay.d.ts +0 -11
  34. package/node/context/fetch.d.ts +0 -8
  35. package/node/context/set.d.ts +0 -2
  36. package/node/context/status.d.ts +0 -2
  37. package/node/node/index.d.ts +0 -5
  38. package/node/node/setupServer.d.ts +0 -7
  39. package/node/response.d.ts +0 -25
  40. package/node/utils/NetworkError.d.ts +0 -3
  41. package/node/utils/getResponse.d.ts +0 -14
  42. package/node/utils/handlers/requestHandler.d.ts +0 -74
  43. package/node/utils/handlers/requestHandlerUtils.d.ts +0 -4
  44. package/node/utils/internal/compose.d.ts +0 -5
  45. package/node/utils/internal/isNodeProcess.d.ts +0 -5
  46. package/node/utils/internal/jsonParse.d.ts +0 -5
  47. package/node/utils/request/getPublicUrlFromRequest.d.ts +0 -6
  48. package/node/utils/request/onUnhandledRequest.d.ts +0 -5
  49. package/node/utils/request/parseBody.d.ts +0 -5
package/lib/esm/index.js CHANGED
@@ -1,26 +1,26 @@
1
- import { c as createCommonjsModule, s as status, a as set, d as delay, f as fetch, l as lib$1, i as isNodeProcess } from './fetch-deps.js';
1
+ import { c as createCommonjsModule, s as status, a as set, d as delay, f as fetch, l as lib$1, m as mergeRight, i as isNodeProcess } from './fetch-deps.js';
2
2
  import { p as parse_1 } from './xml-deps.js';
3
3
  import './errors-deps.js';
4
4
  export { i as context } from './index-deps.js';
5
5
  import { g as getPublicUrlFromRequest, i as isStringEqual } from './rest-deps.js';
6
6
  export { R as RESTMethods, r as rest, a as restContext } from './rest-deps.js';
7
- import { p as parseBody } from './matchRequestUrl-deps.js';
8
- export { m as matchRequestUrl } from './matchRequestUrl-deps.js';
7
+ import { p as parseBody } from './getCallFrame-deps.js';
8
+ export { m as matchRequestUrl } from './getCallFrame-deps.js';
9
9
  export { graphql, graphqlContext } from './graphql.js';
10
10
 
11
11
  /*! *****************************************************************************
12
- Copyright (c) Microsoft Corporation.
12
+ Copyright (c) Microsoft Corporation. All rights reserved.
13
+ Licensed under the Apache License, Version 2.0 (the "License"); you may not use
14
+ this file except in compliance with the License. You may obtain a copy of the
15
+ License at http://www.apache.org/licenses/LICENSE-2.0
13
16
 
14
- Permission to use, copy, modify, and/or distribute this software for any
15
- purpose with or without fee is hereby granted.
17
+ THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
18
+ KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED
19
+ WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,
20
+ MERCHANTABLITY OR NON-INFRINGEMENT.
16
21
 
17
- THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
18
- REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
19
- AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
20
- INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
21
- LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
22
- OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
23
- PERFORMANCE OF THIS SOFTWARE.
22
+ See the Apache Version 2.0 License for specific language governing permissions
23
+ and limitations under the License.
24
24
  ***************************************************************************** */
25
25
 
26
26
  function __awaiter(thisArg, _arguments, P, generator) {
@@ -201,6 +201,17 @@ class NetworkError extends Error {
201
201
  }
202
202
  }
203
203
 
204
+ /**
205
+ * Internal response transformer to ensure response JSON body
206
+ * is always stringified.
207
+ */
208
+ const stringifyJsonBody = (res) => {
209
+ var _a, _b;
210
+ if (res.body && ((_b = (_a = res.headers) === null || _a === void 0 ? void 0 : _a.get('content-type')) === null || _b === void 0 ? void 0 : _b.endsWith('json'))) {
211
+ res.body = JSON.stringify(res.body);
212
+ }
213
+ return res;
214
+ };
204
215
  const defaultResponse = {
205
216
  status: 200,
206
217
  statusText: 'OK',
@@ -208,16 +219,23 @@ const defaultResponse = {
208
219
  delay: 0,
209
220
  once: false,
210
221
  };
211
- function createResponseComposition(overrides = {}) {
222
+ const defaultResponseTransformers = [
223
+ stringifyJsonBody,
224
+ ];
225
+ function createResponseComposition(responseOverrides, defaultTransformers = defaultResponseTransformers) {
212
226
  return (...transformers) => {
213
- const resolvedResponse = Object.assign({}, defaultResponse, {
227
+ const initialResponse = Object.assign({}, defaultResponse, {
214
228
  headers: new lib$1.Headers({
215
229
  'x-powered-by': 'msw',
216
230
  }),
217
- }, overrides);
218
- if (transformers.length > 0) {
219
- return compose(...transformers)(resolvedResponse);
220
- }
231
+ }, responseOverrides);
232
+ const resolvedTransformers = [
233
+ ...defaultTransformers,
234
+ ...transformers,
235
+ ].filter(Boolean);
236
+ const resolvedResponse = resolvedTransformers.length > 0
237
+ ? compose(...resolvedTransformers)(initialResponse)
238
+ : initialResponse;
221
239
  return resolvedResponse;
222
240
  };
223
241
  }
@@ -304,9 +322,9 @@ const getResponse = (req, handlers) => __awaiter(void 0, void 0, void 0, functio
304
322
  };
305
323
  });
306
324
 
307
- function onUnhandledRequest(request, onUnhandledRequest = 'bypass') {
308
- if (typeof onUnhandledRequest === 'function') {
309
- onUnhandledRequest(request);
325
+ function onUnhandledRequest(request, handler = 'bypass') {
326
+ if (typeof handler === 'function') {
327
+ handler(request);
310
328
  return;
311
329
  }
312
330
  const publicUrl = getPublicUrlFromRequest(request);
@@ -317,7 +335,7 @@ function onUnhandledRequest(request, onUnhandledRequest = 'bypass') {
317
335
  rest.${request.method.toLowerCase()}('${publicUrl}', (req, res, ctx) => {
318
336
  return res(ctx.text('body'))
319
337
  })`;
320
- switch (onUnhandledRequest) {
338
+ switch (handler) {
321
339
  case 'error': {
322
340
  throw new Error(`[MSW] Error: ${message}`);
323
341
  }
@@ -446,8 +464,8 @@ function requestIntegrityCheck(context, serviceWorker) {
446
464
  const { payload: actualChecksum } = yield context.events.once('INTEGRITY_CHECK_RESPONSE');
447
465
  // Compare the response from the Service Worker and the
448
466
  // global variable set by webpack upon build.
449
- if (actualChecksum !== "d1e0e502f550d40a34bee90822e4bf98") {
450
- throw new Error(`Currently active Service Worker (${actualChecksum}) is behind the latest published one (${"d1e0e502f550d40a34bee90822e4bf98"}).`);
467
+ if (actualChecksum !== "65d33ca82955e1c5928aed19d1bdf3f9") {
468
+ throw new Error(`Currently active Service Worker (${actualChecksum}) is behind the latest published one (${"65d33ca82955e1c5928aed19d1bdf3f9"}).`);
451
469
  }
452
470
  return serviceWorker;
453
471
  });
@@ -478,30 +496,6 @@ function deferNetworkRequestsUntil(predicatePromise) {
478
496
  });
479
497
  }
480
498
 
481
- function isObject(obj) {
482
- return typeof obj === 'object';
483
- }
484
- /**
485
- * Deeply merges two given objects with the right one
486
- * having a priority during property assignment.
487
- */
488
- function mergeRight(a, b) {
489
- const result = Object.assign({}, a);
490
- Object.entries(b).forEach(([key, value]) => {
491
- const existingValue = result[key];
492
- if (Array.isArray(existingValue) && Array.isArray(value)) {
493
- result[key] = existingValue.concat(value);
494
- return;
495
- }
496
- if (isObject(existingValue) && isObject(value)) {
497
- result[key] = mergeRight(existingValue, value);
498
- return;
499
- }
500
- result[key] = value;
501
- });
502
- return result;
503
- }
504
-
505
499
  const DEFAULT_START_OPTIONS = {
506
500
  serviceWorker: {
507
501
  url: '/mockServiceWorker.js',
@@ -691,7 +685,19 @@ function setupWorker(...requestHandlers) {
691
685
  resetHandlers(...nextHandlers) {
692
686
  context.requestHandlers = resetHandlers(requestHandlers, ...nextHandlers);
693
687
  },
688
+ printHandlers() {
689
+ context.requestHandlers.forEach((handler) => {
690
+ const meta = handler.getMetaInfo();
691
+ console.groupCollapsed(meta.header);
692
+ console.log(`Declaration: ${meta.callFrame}`);
693
+ console.log('Resolver: %s', handler.resolver);
694
+ if (['rest'].includes(meta.type)) {
695
+ console.log('Match:', `https://mswjs.io/repl?path=${meta.mask}`);
696
+ }
697
+ console.groupEnd();
698
+ });
699
+ },
694
700
  };
695
701
  }
696
702
 
697
- export { defaultContext, response, setupWorker };
703
+ export { createResponseComposition, defaultContext, defaultResponse, response, setupWorker };
@@ -7,7 +7,7 @@
7
7
  /* eslint-disable */
8
8
  /* tslint:disable */
9
9
 
10
- const INTEGRITY_CHECKSUM = 'd1e0e502f550d40a34bee90822e4bf98'
10
+ const INTEGRITY_CHECKSUM = '65d33ca82955e1c5928aed19d1bdf3f9'
11
11
  const bypassHeaderName = 'x-msw-bypass'
12
12
 
13
13
  let clients = {}
@@ -74,11 +74,22 @@ self.addEventListener('message', async function (event) {
74
74
  }
75
75
  })
76
76
 
77
- self.addEventListener('fetch', async function (event) {
77
+ self.addEventListener('fetch', function (event) {
78
78
  const { clientId, request } = event
79
79
  const requestClone = request.clone()
80
80
  const getOriginalResponse = () => fetch(requestClone)
81
81
 
82
+ // Bypass navigation requests.
83
+ if (request.mode === 'navigate') {
84
+ return
85
+ }
86
+
87
+ // Bypass mocking if the current client isn't present in the internal clients map
88
+ // (i.e. has the mocking disabled).
89
+ if (!clients[clientId]) {
90
+ return
91
+ }
92
+
82
93
  // Opening the DevTools triggers the "only-if-cached" request
83
94
  // that cannot be handled by the worker. Bypass such requests.
84
95
  if (request.cache === 'only-if-cached' && request.mode !== 'same-origin') {
@@ -89,20 +100,15 @@ self.addEventListener('fetch', async function (event) {
89
100
  new Promise(async (resolve, reject) => {
90
101
  const client = await event.target.clients.get(clientId)
91
102
 
92
- if (
93
- // Bypass mocking when no clients active
94
- !client ||
95
- // Bypass mocking if the current client has mocking disabled
96
- !clients[clientId] ||
97
- // Bypass mocking for navigation requests
98
- request.mode === 'navigate'
99
- ) {
103
+ // Bypass mocking when the request client is not active.
104
+ if (!client) {
100
105
  return resolve(getOriginalResponse())
101
106
  }
102
107
 
103
108
  // Bypass requests with the explicit bypass header
104
109
  if (requestClone.headers.get(bypassHeaderName) === 'true') {
105
110
  const modifiedHeaders = serializeHeaders(requestClone.headers)
111
+
106
112
  // Remove the bypass header to comply with the CORS preflight check
107
113
  delete modifiedHeaders[bypassHeaderName]
108
114
 
@@ -1,6 +1,6 @@
1
1
  import { c as createCommonjsModule, b as commonjsGlobal, a as set, s as status, j as json, d as delay, f as fetch } from './fetch-deps.js';
2
2
  import { c as cookie, b as body, t as text, x as xml } from './xml-deps.js';
3
- import { g as getUrlByMask, m as matchRequestUrl, a as prepareRequest, b as prepareResponse, c as getTimestamp, d as getStatusCodeColor } from './matchRequestUrl-deps.js';
3
+ import { g as getUrlByMask, a as getCallFrame, m as matchRequestUrl, b as prepareRequest, c as prepareResponse, d as getTimestamp, e as getStatusCodeColor } from './getCallFrame-deps.js';
4
4
 
5
5
  var punycode = createCommonjsModule(function (module, exports) {
6
6
  (function(root) {
@@ -1388,6 +1388,7 @@ const restContext = {
1388
1388
  const createRestHandler = (method) => {
1389
1389
  return (mask, resolver) => {
1390
1390
  const resolvedMask = getUrlByMask(mask);
1391
+ const callFrame = getCallFrame();
1391
1392
  return {
1392
1393
  parse(req) {
1393
1394
  // Match the request during parsing to prevent matching it twice
@@ -1438,6 +1439,14 @@ ${queryParams
1438
1439
  console.log('Response', loggedResponse);
1439
1440
  console.groupEnd();
1440
1441
  },
1442
+ getMetaInfo() {
1443
+ return {
1444
+ type: 'rest',
1445
+ header: `[rest] ${method} ${mask.toString()}`,
1446
+ mask,
1447
+ callFrame,
1448
+ };
1449
+ },
1441
1450
  };
1442
1451
  };
1443
1452
  };
package/lib/esm/rest.js CHANGED
@@ -1,4 +1,4 @@
1
1
  import './fetch-deps.js';
2
2
  import './xml-deps.js';
3
3
  export { R as RESTMethods, r as rest, a as restContext } from './rest-deps.js';
4
- import './matchRequestUrl-deps.js';
4
+ import './getCallFrame-deps.js';
@@ -1,8 +1,8 @@
1
1
  import { GraphQLError } from 'graphql';
2
2
  import { ResponseTransformer } from '../response';
3
3
  /**
4
- * Returns a list of GraphQL errors.
4
+ * Sets a given list of GraphQL errors on the mocked response.
5
5
  */
6
- export declare const errors: (errorsList: Partial<GraphQLError>[]) => ResponseTransformer<{
7
- errors: Partial<GraphQLError>[];
6
+ export declare const errors: <ErrorsType extends Partial<GraphQLError>[] | null | undefined>(errorsList: ErrorsType) => ResponseTransformer<{
7
+ errors: ErrorsType;
8
8
  }>;
@@ -1,4 +1,7 @@
1
1
  import { ResponseTransformer } from '../response';
2
+ declare type JSONContextOptions = {
3
+ merge?: boolean;
4
+ };
2
5
  /**
3
6
  * Sets the given value as the JSON body of the response.
4
7
  * @example
@@ -6,4 +9,5 @@ import { ResponseTransformer } from '../response';
6
9
  * res(json('Some string'))
7
10
  * res(json([1, '2', false, { ok: true }]))
8
11
  */
9
- export declare const json: <BodyType>(body: BodyType) => ResponseTransformer<BodyType>;
12
+ export declare const json: <BodyTypeJSON>(body: BodyTypeJSON, { merge }?: JSONContextOptions) => ResponseTransformer<BodyTypeJSON>;
13
+ export {};
@@ -1,8 +1,9 @@
1
1
  import * as context from './context';
2
2
  export { setupWorker } from './setupWorker/setupWorker';
3
- export { MockedResponse, ResponseTransformer, response } from './response';
3
+ export { SetupWorkerApi } from './setupWorker/glossary';
4
+ export { response, defaultResponse, createResponseComposition, MockedResponse, ResponseTransformer, ResponseComposition, ResponseCompositionOptions, ResponseFunction, } from './response';
4
5
  export { context };
5
- export { MockedRequest, RequestHandler, RequestParams, RequestQuery, ResponseResolver, ResponseResolverReturnType, AsyncResponseResolverReturnType, defaultContext, } from './utils/handlers/requestHandler';
6
+ export { defaultContext, MockedRequest, RequestHandler, RequestHandlerMetaInfo, RequestParams, RequestQuery, ResponseResolver, ResponseResolverReturnType, AsyncResponseResolverReturnType, } from './utils/handlers/requestHandler';
6
7
  export { rest, restContext, RESTMethods, ParsedRestRequest } from './rest';
7
8
  export { graphql, graphqlContext, GraphQLMockedRequest, GraphQLMockedContext, GraphQLRequestPayload, GraphQLResponseResolver, GraphQLRequestParsedResult, } from './graphql';
8
9
  export { matchRequestUrl } from './utils/matching/matchRequestUrl';
@@ -1,7 +1 @@
1
- export declare const setupServer: (...requestHandlers: import("../setupWorker/glossary").RequestHandlersList) => {
2
- listen(options?: import("../sharedOptions").SharedOptions | undefined): void;
3
- use(...handlers: import("../setupWorker/glossary").RequestHandlersList): void;
4
- restoreHandlers(): void;
5
- resetHandlers(...nextHandlers: import("../setupWorker/glossary").RequestHandlersList): void;
6
- close(): void;
7
- };
1
+ export declare const setupServer: (...requestHandlers: import("../setupWorker/glossary").RequestHandlersList) => import("../node").SetupServerApi;
@@ -1,29 +1,8 @@
1
1
  import { Interceptor } from 'node-request-interceptor';
2
2
  import { RequestHandlersList } from '../setupWorker/glossary';
3
- import { SharedOptions } from '../sharedOptions';
3
+ import { SetupServerApi } from './glossary';
4
4
  /**
5
5
  * Creates a `setupServer` API using given request interceptors.
6
6
  * Useful to generate identical API using different patches to request issuing modules.
7
7
  */
8
- export declare function createSetupServer(...interceptors: Interceptor[]): (...requestHandlers: RequestHandlersList) => {
9
- /**
10
- * Enables requests interception based on the previously provided mock definition.
11
- */
12
- listen(options?: SharedOptions | undefined): void;
13
- /**
14
- * Prepends given request handlers to the list of existing handlers.
15
- */
16
- use(...handlers: RequestHandlersList): void;
17
- /**
18
- * Marks all request handlers that respond using `res.once()` as unused.
19
- */
20
- restoreHandlers(): void;
21
- /**
22
- * Resets request handlers to the initial list given to the `setupServer` call, or to the explicit next request handlers list, if given.
23
- */
24
- resetHandlers(...nextHandlers: RequestHandlersList): void;
25
- /**
26
- * Stops requests interception by restoring all augmented modules.
27
- */
28
- close(): void;
29
- };
8
+ export declare function createSetupServer(...interceptors: Interceptor[]): (...requestHandlers: RequestHandlersList) => SetupServerApi;
@@ -1,29 +1,28 @@
1
- import { Interceptor } from 'node-request-interceptor';
2
- import { RequestHandlersList } from '../setupWorker/glossary';
3
1
  import { SharedOptions } from '../sharedOptions';
4
- /**
5
- * Creates a `setupServer` API using given request interceptors.
6
- * Useful to generate identical API using different patches to request issuing modules.
7
- */
8
- export declare function createSetupServer(...interceptors: Interceptor[]): (...requestHandlers: RequestHandlersList) => {
2
+ import { RequestHandlersList } from '../setupWorker/glossary';
3
+ export interface SetupServerApi {
9
4
  /**
10
5
  * Enables requests interception based on the previously provided mock definition.
11
6
  */
12
- listen(options?: SharedOptions | undefined): void;
7
+ listen: (options?: SharedOptions) => void;
13
8
  /**
14
9
  * Prepends given request handlers to the list of existing handlers.
15
10
  */
16
- use(...handlers: RequestHandlersList): void;
11
+ use: (...handlers: RequestHandlersList) => void;
17
12
  /**
18
13
  * Marks all request handlers that respond using `res.once()` as unused.
19
14
  */
20
- restoreHandlers(): void;
15
+ restoreHandlers: () => void;
21
16
  /**
22
17
  * Resets request handlers to the initial list given to the `setupServer` call, or to the explicit next request handlers list, if given.
23
18
  */
24
- resetHandlers(...nextHandlers: RequestHandlersList): void;
19
+ resetHandlers: (...nextHandlers: RequestHandlersList) => void;
20
+ /**
21
+ * Lists all active request handlers.
22
+ */
23
+ printHandlers: () => void;
25
24
  /**
26
25
  * Stops requests interception by restoring all augmented modules.
27
26
  */
28
- close(): void;
29
- };
27
+ close: () => void;
28
+ }
@@ -1 +1,2 @@
1
1
  export { setupServer } from './setupServer';
2
+ export { SetupServerApi } from './glossary';
@@ -1,7 +1 @@
1
- export declare const setupServer: (...requestHandlers: import("../setupWorker/glossary").RequestHandlersList) => {
2
- listen(options?: import("../sharedOptions").SharedOptions | undefined): void;
3
- use(...handlers: import("../setupWorker/glossary").RequestHandlersList): void;
4
- restoreHandlers(): void;
5
- resetHandlers(...nextHandlers: import("../setupWorker/glossary").RequestHandlersList): void;
6
- close(): void;
7
- };
1
+ export declare const setupServer: (...requestHandlers: import("../setupWorker/glossary").RequestHandlersList) => import("./glossary").SetupServerApi;
@@ -8,7 +8,7 @@ export interface MockedResponse<BodyType = any> {
8
8
  delay?: number;
9
9
  }
10
10
  export declare type ResponseTransformer<BodyType = any> = (res: MockedResponse<BodyType>) => MockedResponse<BodyType>;
11
- declare type ResponseFunction<BodyType = any> = (...transformers: ResponseTransformer<BodyType>[]) => MockedResponse<BodyType>;
11
+ export declare type ResponseFunction<BodyType = any> = (...transformers: ResponseTransformer<BodyType>[]) => MockedResponse<BodyType>;
12
12
  export declare type ResponseComposition<BodyType = any> = ResponseFunction<BodyType> & {
13
13
  /**
14
14
  * Respond using a given mocked response to the first captured request.
@@ -18,8 +18,13 @@ export declare type ResponseComposition<BodyType = any> = ResponseFunction<BodyT
18
18
  networkError: (message: string) => void;
19
19
  };
20
20
  export declare const defaultResponse: Omit<MockedResponse, 'headers'>;
21
+ export declare type ResponseCompositionOptions<BodyType> = {
22
+ defaultTransformers?: ResponseTransformer<BodyType>[];
23
+ mockedResponseOverrides?: Partial<MockedResponse>;
24
+ };
25
+ export declare const defaultResponseTransformers: ResponseTransformer<any>[];
26
+ export declare function createResponseComposition<BodyType>(responseOverrides?: Partial<MockedResponse<BodyType>>, defaultTransformers?: ResponseTransformer<BodyType>[]): ResponseFunction;
21
27
  export declare const response: ResponseFunction<any> & {
22
28
  once: ResponseFunction<any>;
23
29
  networkError(message: string): never;
24
30
  };
25
- export {};