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.
@@ -2,7 +2,7 @@
2
2
  /* tslint:disable */
3
3
 
4
4
  /**
5
- * Mock Service Worker (0.42.0).
5
+ * Mock Service Worker (0.42.3).
6
6
  * @see https://github.com/mswjs/msw
7
7
  * - Please do NOT modify this file.
8
8
  * - Please do NOT serve this file on production.
@@ -391,8 +391,8 @@ function parseMultipartData(data2, headers) {
391
391
  }
392
392
  const parsedBody = {};
393
393
  try {
394
- for (const field of fields) {
395
- const [contentHeaders, ...rest] = field.split("\r\n\r\n");
394
+ for (const field2 of fields) {
395
+ const [contentHeaders, ...rest] = field2.split("\r\n\r\n");
396
396
  const contentBody = rest.join("\r\n\r\n");
397
397
  const { contentType: contentType2, filename, name } = parseContentHeaders(contentHeaders);
398
398
  const value = filename === void 0 ? contentBody : new File([contentBody], filename, { type: contentType2 });
@@ -936,6 +936,23 @@ var RestHandler = class extends RequestHandler {
936
936
  }
937
937
  };
938
938
 
939
+ // src/context/field.ts
940
+ var import_outvariant2 = require("outvariant");
941
+ var field = (fieldName, fieldValue) => {
942
+ return (res) => {
943
+ validateFieldName(fieldName);
944
+ const prevBody = jsonParse(res.body) || {};
945
+ const nextBody = mergeRight(prevBody, { [fieldName]: fieldValue });
946
+ return json(nextBody)(res);
947
+ };
948
+ };
949
+ function validateFieldName(fieldName) {
950
+ (0, import_outvariant2.invariant)(fieldName.trim() !== "", devUtils.formatMessage("Failed to set a custom field on a GraphQL response: field name cannot be empty."));
951
+ (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));
952
+ (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));
953
+ (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));
954
+ }
955
+
939
956
  // src/utils/internal/tryCatch.ts
940
957
  function tryCatch(fn, onException) {
941
958
  try {
@@ -951,7 +968,8 @@ var graphqlContext = __spreadProps(__spreadValues({}, defaultContext), {
951
968
  data,
952
969
  extensions,
953
970
  errors,
954
- cookie
971
+ cookie,
972
+ field
955
973
  });
956
974
  function isDocumentNode(value) {
957
975
  if (value == null) {
@@ -1139,7 +1157,7 @@ function readResponseCookies(request, response2) {
1139
1157
 
1140
1158
  // src/utils/handleRequest.ts
1141
1159
  async function handleRequest(request, handlers, options, emitter, handleRequestOptions) {
1142
- var _a, _b, _c, _d;
1160
+ var _a, _b, _c, _d, _e, _f, _g;
1143
1161
  emitter.emit("request:start", request);
1144
1162
  if (request.headers.get("x-msw-bypass") === "true") {
1145
1163
  emitter.emit("request:end", request);
@@ -1177,18 +1195,12 @@ async function handleRequest(request, handlers, options, emitter, handleRequestO
1177
1195
  }
1178
1196
  readResponseCookies(request, response2);
1179
1197
  emitter.emit("request:match", request);
1180
- return new Promise((resolve) => {
1181
- var _a2, _b2, _c2;
1182
- const requiredLookupResult = lookupResult;
1183
- const transformedResponse = ((_a2 = handleRequestOptions == null ? void 0 : handleRequestOptions.transformResponse) == null ? void 0 : _a2.call(handleRequestOptions, response2)) || response2;
1184
- (_b2 = handleRequestOptions == null ? void 0 : handleRequestOptions.onMockedResponse) == null ? void 0 : _b2.call(handleRequestOptions, transformedResponse, requiredLookupResult);
1185
- setTimeout(() => {
1186
- var _a3;
1187
- (_a3 = handleRequestOptions == null ? void 0 : handleRequestOptions.onMockedResponseSent) == null ? void 0 : _a3.call(handleRequestOptions, transformedResponse, requiredLookupResult);
1188
- emitter.emit("request:end", request);
1189
- resolve(transformedResponse);
1190
- }, (_c2 = response2.delay) != null ? _c2 : 0);
1191
- });
1198
+ const requiredLookupResult = lookupResult;
1199
+ const transformedResponse = ((_e = handleRequestOptions == null ? void 0 : handleRequestOptions.transformResponse) == null ? void 0 : _e.call(handleRequestOptions, response2)) || response2;
1200
+ (_f = handleRequestOptions == null ? void 0 : handleRequestOptions.onMockedResponse) == null ? void 0 : _f.call(handleRequestOptions, transformedResponse, requiredLookupResult);
1201
+ (_g = handleRequestOptions == null ? void 0 : handleRequestOptions.onMockedResponseSent) == null ? void 0 : _g.call(handleRequestOptions, transformedResponse, requiredLookupResult);
1202
+ emitter.emit("request:end", request);
1203
+ return transformedResponse;
1192
1204
  }
1193
1205
 
1194
1206
  // src/utils/internal/pipeEvents.ts
@@ -1224,7 +1236,7 @@ function createSetupServer(...interceptors) {
1224
1236
  let resolvedOptions = {};
1225
1237
  const interceptor = new import_interceptors.BatchInterceptor({
1226
1238
  name: "setup-server",
1227
- interceptors
1239
+ interceptors: interceptors.map((Interceptor2) => new Interceptor2())
1228
1240
  });
1229
1241
  interceptor.on("request", async function setupServerListener(request) {
1230
1242
  const mockedRequest = parseIsomorphicRequest(request);
@@ -1234,11 +1246,17 @@ function createSetupServer(...interceptors) {
1234
1246
  status: response3.status,
1235
1247
  statusText: response3.statusText,
1236
1248
  headers: response3.headers.all(),
1237
- body: response3.body
1249
+ body: response3.body,
1250
+ delay: response3.delay
1238
1251
  };
1239
1252
  }
1240
1253
  });
1241
1254
  if (response2) {
1255
+ if (response2.delay) {
1256
+ await new Promise((resolve) => {
1257
+ setTimeout(resolve, response2.delay);
1258
+ });
1259
+ }
1242
1260
  request.respondWith(response2);
1243
1261
  }
1244
1262
  return;
@@ -1297,7 +1315,7 @@ function createSetupServer(...interceptors) {
1297
1315
  }
1298
1316
 
1299
1317
  // src/native/index.ts
1300
- var setupServer = createSetupServer(new import_XMLHttpRequest.XMLHttpRequestInterceptor());
1318
+ var setupServer = createSetupServer(import_XMLHttpRequest.XMLHttpRequestInterceptor);
1301
1319
  // Annotate the CommonJS export names for ESM import in node:
1302
1320
  0 && (module.exports = {
1303
1321
  setupServer
@@ -377,8 +377,8 @@ function parseMultipartData(data2, headers) {
377
377
  }
378
378
  const parsedBody = {};
379
379
  try {
380
- for (const field of fields) {
381
- const [contentHeaders, ...rest] = field.split("\r\n\r\n");
380
+ for (const field2 of fields) {
381
+ const [contentHeaders, ...rest] = field2.split("\r\n\r\n");
382
382
  const contentBody = rest.join("\r\n\r\n");
383
383
  const { contentType: contentType2, filename, name } = parseContentHeaders(contentHeaders);
384
384
  const value = filename === void 0 ? contentBody : new File([contentBody], filename, { type: contentType2 });
@@ -924,6 +924,23 @@ var RestHandler = class extends RequestHandler {
924
924
  }
925
925
  };
926
926
 
927
+ // src/context/field.ts
928
+ import { invariant } from "outvariant";
929
+ var field = (fieldName, fieldValue) => {
930
+ return (res) => {
931
+ validateFieldName(fieldName);
932
+ const prevBody = jsonParse(res.body) || {};
933
+ const nextBody = mergeRight(prevBody, { [fieldName]: fieldValue });
934
+ return json(nextBody)(res);
935
+ };
936
+ };
937
+ function validateFieldName(fieldName) {
938
+ invariant(fieldName.trim() !== "", devUtils.formatMessage("Failed to set a custom field on a GraphQL response: field name cannot be empty."));
939
+ 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));
940
+ 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));
941
+ 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));
942
+ }
943
+
927
944
  // src/utils/internal/tryCatch.ts
928
945
  function tryCatch(fn, onException) {
929
946
  try {
@@ -939,7 +956,8 @@ var graphqlContext = __spreadProps(__spreadValues({}, defaultContext), {
939
956
  data,
940
957
  extensions,
941
958
  errors,
942
- cookie
959
+ cookie,
960
+ field
943
961
  });
944
962
  function isDocumentNode(value) {
945
963
  if (value == null) {
@@ -1127,7 +1145,7 @@ function readResponseCookies(request, response2) {
1127
1145
 
1128
1146
  // src/utils/handleRequest.ts
1129
1147
  async function handleRequest(request, handlers, options, emitter, handleRequestOptions) {
1130
- var _a, _b, _c, _d;
1148
+ var _a, _b, _c, _d, _e, _f, _g;
1131
1149
  emitter.emit("request:start", request);
1132
1150
  if (request.headers.get("x-msw-bypass") === "true") {
1133
1151
  emitter.emit("request:end", request);
@@ -1165,18 +1183,12 @@ async function handleRequest(request, handlers, options, emitter, handleRequestO
1165
1183
  }
1166
1184
  readResponseCookies(request, response2);
1167
1185
  emitter.emit("request:match", request);
1168
- return new Promise((resolve) => {
1169
- var _a2, _b2, _c2;
1170
- const requiredLookupResult = lookupResult;
1171
- const transformedResponse = ((_a2 = handleRequestOptions == null ? void 0 : handleRequestOptions.transformResponse) == null ? void 0 : _a2.call(handleRequestOptions, response2)) || response2;
1172
- (_b2 = handleRequestOptions == null ? void 0 : handleRequestOptions.onMockedResponse) == null ? void 0 : _b2.call(handleRequestOptions, transformedResponse, requiredLookupResult);
1173
- setTimeout(() => {
1174
- var _a3;
1175
- (_a3 = handleRequestOptions == null ? void 0 : handleRequestOptions.onMockedResponseSent) == null ? void 0 : _a3.call(handleRequestOptions, transformedResponse, requiredLookupResult);
1176
- emitter.emit("request:end", request);
1177
- resolve(transformedResponse);
1178
- }, (_c2 = response2.delay) != null ? _c2 : 0);
1179
- });
1186
+ const requiredLookupResult = lookupResult;
1187
+ const transformedResponse = ((_e = handleRequestOptions == null ? void 0 : handleRequestOptions.transformResponse) == null ? void 0 : _e.call(handleRequestOptions, response2)) || response2;
1188
+ (_f = handleRequestOptions == null ? void 0 : handleRequestOptions.onMockedResponse) == null ? void 0 : _f.call(handleRequestOptions, transformedResponse, requiredLookupResult);
1189
+ (_g = handleRequestOptions == null ? void 0 : handleRequestOptions.onMockedResponseSent) == null ? void 0 : _g.call(handleRequestOptions, transformedResponse, requiredLookupResult);
1190
+ emitter.emit("request:end", request);
1191
+ return transformedResponse;
1180
1192
  }
1181
1193
 
1182
1194
  // src/utils/internal/pipeEvents.ts
@@ -1212,7 +1224,7 @@ function createSetupServer(...interceptors) {
1212
1224
  let resolvedOptions = {};
1213
1225
  const interceptor = new BatchInterceptor({
1214
1226
  name: "setup-server",
1215
- interceptors
1227
+ interceptors: interceptors.map((Interceptor2) => new Interceptor2())
1216
1228
  });
1217
1229
  interceptor.on("request", async function setupServerListener(request) {
1218
1230
  const mockedRequest = parseIsomorphicRequest(request);
@@ -1222,11 +1234,17 @@ function createSetupServer(...interceptors) {
1222
1234
  status: response3.status,
1223
1235
  statusText: response3.statusText,
1224
1236
  headers: response3.headers.all(),
1225
- body: response3.body
1237
+ body: response3.body,
1238
+ delay: response3.delay
1226
1239
  };
1227
1240
  }
1228
1241
  });
1229
1242
  if (response2) {
1243
+ if (response2.delay) {
1244
+ await new Promise((resolve) => {
1245
+ setTimeout(resolve, response2.delay);
1246
+ });
1247
+ }
1230
1248
  request.respondWith(response2);
1231
1249
  }
1232
1250
  return;
@@ -1285,7 +1303,7 @@ function createSetupServer(...interceptors) {
1285
1303
  }
1286
1304
 
1287
1305
  // src/native/index.ts
1288
- var setupServer = createSetupServer(new XMLHttpRequestInterceptor());
1306
+ var setupServer = createSetupServer(XMLHttpRequestInterceptor);
1289
1307
  export {
1290
1308
  setupServer
1291
1309
  };
package/lib/node/index.js CHANGED
@@ -398,8 +398,8 @@ function parseMultipartData(data2, headers) {
398
398
  }
399
399
  const parsedBody = {};
400
400
  try {
401
- for (const field of fields) {
402
- const [contentHeaders, ...rest] = field.split("\r\n\r\n");
401
+ for (const field2 of fields) {
402
+ const [contentHeaders, ...rest] = field2.split("\r\n\r\n");
403
403
  const contentBody = rest.join("\r\n\r\n");
404
404
  const { contentType: contentType2, filename, name } = parseContentHeaders(contentHeaders);
405
405
  const value = filename === void 0 ? contentBody : new File([contentBody], filename, { type: contentType2 });
@@ -943,6 +943,23 @@ var RestHandler = class extends RequestHandler {
943
943
  }
944
944
  };
945
945
 
946
+ // src/context/field.ts
947
+ var import_outvariant2 = require("outvariant");
948
+ var field = (fieldName, fieldValue) => {
949
+ return (res) => {
950
+ validateFieldName(fieldName);
951
+ const prevBody = jsonParse(res.body) || {};
952
+ const nextBody = mergeRight(prevBody, { [fieldName]: fieldValue });
953
+ return json(nextBody)(res);
954
+ };
955
+ };
956
+ function validateFieldName(fieldName) {
957
+ (0, import_outvariant2.invariant)(fieldName.trim() !== "", devUtils.formatMessage("Failed to set a custom field on a GraphQL response: field name cannot be empty."));
958
+ (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));
959
+ (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));
960
+ (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));
961
+ }
962
+
946
963
  // src/utils/internal/tryCatch.ts
947
964
  function tryCatch(fn, onException) {
948
965
  try {
@@ -958,7 +975,8 @@ var graphqlContext = __spreadProps(__spreadValues({}, defaultContext), {
958
975
  data,
959
976
  extensions,
960
977
  errors,
961
- cookie
978
+ cookie,
979
+ field
962
980
  });
963
981
  function isDocumentNode(value) {
964
982
  if (value == null) {
@@ -1146,7 +1164,7 @@ function readResponseCookies(request, response2) {
1146
1164
 
1147
1165
  // src/utils/handleRequest.ts
1148
1166
  async function handleRequest(request, handlers, options, emitter, handleRequestOptions) {
1149
- var _a, _b, _c, _d;
1167
+ var _a, _b, _c, _d, _e, _f, _g;
1150
1168
  emitter.emit("request:start", request);
1151
1169
  if (request.headers.get("x-msw-bypass") === "true") {
1152
1170
  emitter.emit("request:end", request);
@@ -1184,18 +1202,12 @@ async function handleRequest(request, handlers, options, emitter, handleRequestO
1184
1202
  }
1185
1203
  readResponseCookies(request, response2);
1186
1204
  emitter.emit("request:match", request);
1187
- return new Promise((resolve) => {
1188
- var _a2, _b2, _c2;
1189
- const requiredLookupResult = lookupResult;
1190
- const transformedResponse = ((_a2 = handleRequestOptions == null ? void 0 : handleRequestOptions.transformResponse) == null ? void 0 : _a2.call(handleRequestOptions, response2)) || response2;
1191
- (_b2 = handleRequestOptions == null ? void 0 : handleRequestOptions.onMockedResponse) == null ? void 0 : _b2.call(handleRequestOptions, transformedResponse, requiredLookupResult);
1192
- setTimeout(() => {
1193
- var _a3;
1194
- (_a3 = handleRequestOptions == null ? void 0 : handleRequestOptions.onMockedResponseSent) == null ? void 0 : _a3.call(handleRequestOptions, transformedResponse, requiredLookupResult);
1195
- emitter.emit("request:end", request);
1196
- resolve(transformedResponse);
1197
- }, (_c2 = response2.delay) != null ? _c2 : 0);
1198
- });
1205
+ const requiredLookupResult = lookupResult;
1206
+ const transformedResponse = ((_e = handleRequestOptions == null ? void 0 : handleRequestOptions.transformResponse) == null ? void 0 : _e.call(handleRequestOptions, response2)) || response2;
1207
+ (_f = handleRequestOptions == null ? void 0 : handleRequestOptions.onMockedResponse) == null ? void 0 : _f.call(handleRequestOptions, transformedResponse, requiredLookupResult);
1208
+ (_g = handleRequestOptions == null ? void 0 : handleRequestOptions.onMockedResponseSent) == null ? void 0 : _g.call(handleRequestOptions, transformedResponse, requiredLookupResult);
1209
+ emitter.emit("request:end", request);
1210
+ return transformedResponse;
1199
1211
  }
1200
1212
 
1201
1213
  // src/utils/internal/pipeEvents.ts
@@ -1231,7 +1243,7 @@ function createSetupServer(...interceptors) {
1231
1243
  let resolvedOptions = {};
1232
1244
  const interceptor = new import_interceptors.BatchInterceptor({
1233
1245
  name: "setup-server",
1234
- interceptors
1246
+ interceptors: interceptors.map((Interceptor2) => new Interceptor2())
1235
1247
  });
1236
1248
  interceptor.on("request", async function setupServerListener(request) {
1237
1249
  const mockedRequest = parseIsomorphicRequest(request);
@@ -1241,11 +1253,17 @@ function createSetupServer(...interceptors) {
1241
1253
  status: response3.status,
1242
1254
  statusText: response3.statusText,
1243
1255
  headers: response3.headers.all(),
1244
- body: response3.body
1256
+ body: response3.body,
1257
+ delay: response3.delay
1245
1258
  };
1246
1259
  }
1247
1260
  });
1248
1261
  if (response2) {
1262
+ if (response2.delay) {
1263
+ await new Promise((resolve) => {
1264
+ setTimeout(resolve, response2.delay);
1265
+ });
1266
+ }
1249
1267
  request.respondWith(response2);
1250
1268
  }
1251
1269
  return;
@@ -1304,7 +1322,7 @@ function createSetupServer(...interceptors) {
1304
1322
  }
1305
1323
 
1306
1324
  // src/node/setupServer.ts
1307
- var setupServer = createSetupServer(new import_ClientRequest.ClientRequestInterceptor(), new import_XMLHttpRequest.XMLHttpRequestInterceptor());
1325
+ var setupServer = createSetupServer(import_ClientRequest.ClientRequestInterceptor, import_XMLHttpRequest.XMLHttpRequestInterceptor);
1308
1326
  // Annotate the CommonJS export names for ESM import in node:
1309
1327
  0 && (module.exports = {
1310
1328
  setupServer