msw 0.42.0 → 0.42.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.
- package/README.md +7 -1
- package/lib/iife/index.js +30 -18
- package/lib/iife/index.js.map +1 -1
- package/lib/index.d.ts +9 -0
- package/lib/index.js +28 -16
- package/lib/index.js.map +1 -1
- package/lib/mockServiceWorker.js +1 -1
- package/lib/native/index.js +37 -19
- package/lib/native/index.mjs +37 -19
- package/lib/node/index.js +37 -19
- package/lib/node/index.js.map +1 -1
- package/lib/node/index.mjs +37 -19
- package/lib/node/index.mjs.map +1 -1
- package/package.json +1 -1
package/lib/index.d.ts
CHANGED
|
@@ -183,6 +183,14 @@ declare const rest: {
|
|
|
183
183
|
options: <RequestBodyType_7 extends DefaultBodyType = DefaultBodyType, Params_7 extends PathParams<keyof Params_7> = PathParams<string>, ResponseBody_7 extends DefaultBodyType = DefaultBodyType>(path: Path, resolver: ResponseResolver<RestRequest<RequestBodyType_7, Params_7>, RestContext, ResponseBody_7>) => RestHandler<MockedRequest<DefaultBodyType>>;
|
|
184
184
|
};
|
|
185
185
|
|
|
186
|
+
declare type ForbiddenFieldNames = '' | 'data' | 'errors' | 'extensions';
|
|
187
|
+
/**
|
|
188
|
+
* Set a custom field on the GraphQL mocked response.
|
|
189
|
+
* @example res(ctx.fields('customField', value))
|
|
190
|
+
* @see {@link https://mswjs.io/docs/api/context/field}
|
|
191
|
+
*/
|
|
192
|
+
declare const field: <FieldNameType extends string, FieldValueType>(fieldName: FieldNameType extends ForbiddenFieldNames ? never : FieldNameType, fieldValue: FieldValueType) => ResponseTransformer<string>;
|
|
193
|
+
|
|
186
194
|
interface ParsedGraphQLQuery {
|
|
187
195
|
operationType: OperationTypeNode;
|
|
188
196
|
operationName?: string;
|
|
@@ -204,6 +212,7 @@ declare type GraphQLContext<QueryType extends Record<string, unknown>> = Default
|
|
|
204
212
|
extensions: GraphQLPayloadContext<QueryType>;
|
|
205
213
|
errors: typeof errors;
|
|
206
214
|
cookie: typeof cookie;
|
|
215
|
+
field: typeof field;
|
|
207
216
|
};
|
|
208
217
|
declare const graphqlContext: GraphQLContext<any>;
|
|
209
218
|
declare type GraphQLVariables = Record<string, any>;
|
package/lib/index.js
CHANGED
|
@@ -685,8 +685,8 @@ function parseMultipartData(data2, headers) {
|
|
|
685
685
|
}
|
|
686
686
|
const parsedBody = {};
|
|
687
687
|
try {
|
|
688
|
-
for (const
|
|
689
|
-
const [contentHeaders, ...rest2] =
|
|
688
|
+
for (const field2 of fields) {
|
|
689
|
+
const [contentHeaders, ...rest2] = field2.split("\r\n\r\n");
|
|
690
690
|
const contentBody = rest2.join("\r\n\r\n");
|
|
691
691
|
const { contentType: contentType2, filename, name } = parseContentHeaders(contentHeaders);
|
|
692
692
|
const value = filename === void 0 ? contentBody : new File([contentBody], filename, { type: contentType2 });
|
|
@@ -1088,6 +1088,23 @@ var RestHandler = class extends RequestHandler {
|
|
|
1088
1088
|
}
|
|
1089
1089
|
};
|
|
1090
1090
|
|
|
1091
|
+
// src/context/field.ts
|
|
1092
|
+
var import_outvariant2 = require("outvariant");
|
|
1093
|
+
var field = (fieldName, fieldValue) => {
|
|
1094
|
+
return (res) => {
|
|
1095
|
+
validateFieldName(fieldName);
|
|
1096
|
+
const prevBody = jsonParse(res.body) || {};
|
|
1097
|
+
const nextBody = mergeRight(prevBody, { [fieldName]: fieldValue });
|
|
1098
|
+
return json(nextBody)(res);
|
|
1099
|
+
};
|
|
1100
|
+
};
|
|
1101
|
+
function validateFieldName(fieldName) {
|
|
1102
|
+
(0, import_outvariant2.invariant)(fieldName.trim() !== "", devUtils.formatMessage("Failed to set a custom field on a GraphQL response: field name cannot be empty."));
|
|
1103
|
+
(0, import_outvariant2.invariant)(fieldName !== "data", devUtils.formatMessage('Failed to set a custom "%s" field on a mocked GraphQL response: forbidden field name. Did you mean to call "ctx.data()" instead?', fieldName));
|
|
1104
|
+
(0, import_outvariant2.invariant)(fieldName !== "errors", devUtils.formatMessage('Failed to set a custom "%s" field on a mocked GraphQL response: forbidden field name. Did you mean to call "ctx.errors()" instead?', fieldName));
|
|
1105
|
+
(0, import_outvariant2.invariant)(fieldName !== "extensions", devUtils.formatMessage('Failed to set a custom "%s" field on a mocked GraphQL response: forbidden field name. Did you mean to call "ctx.extensions()" instead?', fieldName));
|
|
1106
|
+
}
|
|
1107
|
+
|
|
1091
1108
|
// src/utils/internal/tryCatch.ts
|
|
1092
1109
|
function tryCatch(fn, onException) {
|
|
1093
1110
|
try {
|
|
@@ -1103,7 +1120,8 @@ var graphqlContext = __spreadProps(__spreadValues({}, defaultContext), {
|
|
|
1103
1120
|
data,
|
|
1104
1121
|
extensions,
|
|
1105
1122
|
errors,
|
|
1106
|
-
cookie
|
|
1123
|
+
cookie,
|
|
1124
|
+
field
|
|
1107
1125
|
});
|
|
1108
1126
|
function isDocumentNode(value) {
|
|
1109
1127
|
if (value == null) {
|
|
@@ -1291,7 +1309,7 @@ function readResponseCookies(request, response2) {
|
|
|
1291
1309
|
|
|
1292
1310
|
// src/utils/handleRequest.ts
|
|
1293
1311
|
async function handleRequest(request, handlers, options, emitter, handleRequestOptions) {
|
|
1294
|
-
var _a, _b, _c, _d;
|
|
1312
|
+
var _a, _b, _c, _d, _e, _f, _g;
|
|
1295
1313
|
emitter.emit("request:start", request);
|
|
1296
1314
|
if (request.headers.get("x-msw-bypass") === "true") {
|
|
1297
1315
|
emitter.emit("request:end", request);
|
|
@@ -1329,18 +1347,12 @@ async function handleRequest(request, handlers, options, emitter, handleRequestO
|
|
|
1329
1347
|
}
|
|
1330
1348
|
readResponseCookies(request, response2);
|
|
1331
1349
|
emitter.emit("request:match", request);
|
|
1332
|
-
|
|
1333
|
-
|
|
1334
|
-
|
|
1335
|
-
|
|
1336
|
-
|
|
1337
|
-
|
|
1338
|
-
var _a3;
|
|
1339
|
-
(_a3 = handleRequestOptions == null ? void 0 : handleRequestOptions.onMockedResponseSent) == null ? void 0 : _a3.call(handleRequestOptions, transformedResponse, requiredLookupResult);
|
|
1340
|
-
emitter.emit("request:end", request);
|
|
1341
|
-
resolve(transformedResponse);
|
|
1342
|
-
}, (_c2 = response2.delay) != null ? _c2 : 0);
|
|
1343
|
-
});
|
|
1350
|
+
const requiredLookupResult = lookupResult;
|
|
1351
|
+
const transformedResponse = ((_e = handleRequestOptions == null ? void 0 : handleRequestOptions.transformResponse) == null ? void 0 : _e.call(handleRequestOptions, response2)) || response2;
|
|
1352
|
+
(_f = handleRequestOptions == null ? void 0 : handleRequestOptions.onMockedResponse) == null ? void 0 : _f.call(handleRequestOptions, transformedResponse, requiredLookupResult);
|
|
1353
|
+
(_g = handleRequestOptions == null ? void 0 : handleRequestOptions.onMockedResponseSent) == null ? void 0 : _g.call(handleRequestOptions, transformedResponse, requiredLookupResult);
|
|
1354
|
+
emitter.emit("request:end", request);
|
|
1355
|
+
return transformedResponse;
|
|
1344
1356
|
}
|
|
1345
1357
|
|
|
1346
1358
|
// src/utils/worker/createRequestListener.ts
|