@labdigital/commercetools-mock 2.46.0 → 2.47.1

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 (87) hide show
  1. package/dist/index.cjs +589 -267
  2. package/dist/index.cjs.map +1 -1
  3. package/dist/index.d.cts +782 -58
  4. package/dist/index.d.ts +782 -58
  5. package/dist/index.js +574 -252
  6. package/dist/index.js.map +1 -1
  7. package/package.json +45 -53
  8. package/src/ctMock.ts +16 -15
  9. package/src/index.test.ts +5 -5
  10. package/src/lib/predicateParser.test.ts +62 -62
  11. package/src/lib/predicateParser.ts +32 -42
  12. package/src/lib/productSearchFilter.test.ts +18 -0
  13. package/src/lib/productSearchFilter.ts +7 -0
  14. package/src/lib/projectionSearchFilter.test.ts +17 -17
  15. package/src/lib/projectionSearchFilter.ts +2 -3
  16. package/src/oauth/server.test.ts +9 -1
  17. package/src/oauth/server.ts +26 -22
  18. package/src/priceSelector.ts +1 -1
  19. package/src/product-projection-search.ts +18 -19
  20. package/src/repositories/business-unit.ts +17 -16
  21. package/src/repositories/cart/actions.ts +32 -32
  22. package/src/repositories/cart/helpers.ts +1 -1
  23. package/src/repositories/cart/index.ts +8 -8
  24. package/src/repositories/cart-discount/actions.ts +1 -4
  25. package/src/repositories/category/actions.ts +2 -6
  26. package/src/repositories/custom-object.ts +20 -21
  27. package/src/repositories/customer/actions.ts +4 -4
  28. package/src/repositories/errors.ts +1 -1
  29. package/src/repositories/extension.ts +2 -1
  30. package/src/repositories/helpers.ts +27 -27
  31. package/src/repositories/index.ts +17 -17
  32. package/src/repositories/my-customer.ts +1 -1
  33. package/src/repositories/my-order.ts +2 -2
  34. package/src/repositories/order/index.ts +1 -1
  35. package/src/repositories/product/actions.ts +1 -1
  36. package/src/repositories/quote/actions.ts +83 -0
  37. package/src/repositories/quote/index.ts +54 -0
  38. package/src/repositories/quote-request/actions.ts +84 -0
  39. package/src/repositories/quote-request/index.test.ts +167 -0
  40. package/src/repositories/quote-request/index.ts +67 -0
  41. package/src/repositories/quote-staged/actions.ts +84 -0
  42. package/src/repositories/quote-staged/index.ts +47 -0
  43. package/src/repositories/review.ts +4 -4
  44. package/src/repositories/shipping-method/actions.ts +17 -17
  45. package/src/repositories/shipping-method/index.ts +6 -6
  46. package/src/repositories/shopping-list/actions.ts +1 -1
  47. package/src/repositories/shopping-list/index.ts +9 -1
  48. package/src/repositories/subscription.ts +2 -4
  49. package/src/server.ts +3 -2
  50. package/src/services/abstract.ts +32 -22
  51. package/src/services/as-associate-order.test.ts +1 -1
  52. package/src/services/cart-discount.test.ts +1 -1
  53. package/src/services/cart.test.ts +15 -15
  54. package/src/services/cart.ts +3 -2
  55. package/src/services/category.test.ts +1 -1
  56. package/src/services/custom-object.ts +8 -6
  57. package/src/services/customer.test.ts +4 -4
  58. package/src/services/customer.ts +5 -5
  59. package/src/services/index.ts +20 -14
  60. package/src/services/inventory-entry.test.ts +5 -5
  61. package/src/services/my-cart.test.ts +2 -2
  62. package/src/services/my-cart.ts +3 -2
  63. package/src/services/my-customer.test.ts +2 -2
  64. package/src/services/my-customer.ts +16 -12
  65. package/src/services/order.test.ts +8 -8
  66. package/src/services/order.ts +4 -3
  67. package/src/services/product-projection.test.ts +5 -5
  68. package/src/services/product-projection.ts +14 -16
  69. package/src/services/product.test.ts +1 -1
  70. package/src/services/product.ts +1 -1
  71. package/src/services/project.ts +4 -3
  72. package/src/services/quote-request.test.ts +59 -0
  73. package/src/services/quote-request.ts +16 -0
  74. package/src/services/quote-staged.ts +16 -0
  75. package/src/services/quote.ts +16 -0
  76. package/src/services/shipping-method.ts +4 -2
  77. package/src/services/standalone-price.test.ts +4 -4
  78. package/src/services/state.test.ts +1 -1
  79. package/src/services/store.test.ts +2 -2
  80. package/src/services/tax-category.test.ts +1 -1
  81. package/src/shipping.ts +3 -3
  82. package/src/storage/in-memory.ts +55 -63
  83. package/src/testing/customer.ts +1 -1
  84. package/src/types.ts +51 -31
  85. package/src/repositories/quote-request.ts +0 -17
  86. package/src/repositories/quote.ts +0 -14
  87. package/src/repositories/staged-quote.ts +0 -17
package/dist/index.js CHANGED
@@ -324,7 +324,7 @@ var OAuth2Server = class {
324
324
  )
325
325
  );
326
326
  }
327
- const grantType = request.query.grant_type || request.body.grant_type;
327
+ const grantType = request.query.grant_type || request.body?.grant_type;
328
328
  if (!grantType) {
329
329
  return next(
330
330
  new CommercetoolsError(
@@ -342,9 +342,11 @@ var OAuth2Server = class {
342
342
  request.credentials.clientSecret,
343
343
  request.query.scope?.toString()
344
344
  );
345
- return response.status(200).send(token);
346
- } else if (grantType === "refresh_token") {
347
- const refreshToken = request.query.refresh_token?.toString() || request.body.refresh_token;
345
+ response.status(200).send(token);
346
+ return;
347
+ }
348
+ if (grantType === "refresh_token") {
349
+ const refreshToken = request.query.refresh_token?.toString() || request.body?.refresh_token;
348
350
  if (!refreshToken) {
349
351
  return next(
350
352
  new CommercetoolsError(
@@ -374,22 +376,22 @@ var OAuth2Server = class {
374
376
  )
375
377
  );
376
378
  }
377
- return response.status(200).send(token);
378
- } else {
379
- return next(
380
- new CommercetoolsError(
381
- {
382
- code: "unsupported_grant_type",
383
- message: `Invalid parameter: grant_type: Invalid grant type: ${grantType}`
384
- },
385
- 400
386
- )
387
- );
379
+ response.status(200).send(token);
380
+ return;
388
381
  }
382
+ return next(
383
+ new CommercetoolsError(
384
+ {
385
+ code: "unsupported_grant_type",
386
+ message: `Invalid parameter: grant_type: Invalid grant type: ${grantType}`
387
+ },
388
+ 400
389
+ )
390
+ );
389
391
  }
390
392
  async customerTokenHandler(request, response, next) {
391
393
  const projectKey = request.params.projectKey;
392
- const grantType = request.query.grant_type || request.body.grant_type;
394
+ const grantType = request.query.grant_type || request.body?.grant_type;
393
395
  if (!grantType) {
394
396
  return next(
395
397
  new CommercetoolsError(
@@ -402,11 +404,11 @@ var OAuth2Server = class {
402
404
  );
403
405
  }
404
406
  if (grantType === "password") {
405
- const username = request.query.username || request.body.username;
407
+ const username = request.query.username || request.body?.username;
406
408
  const password = hashPassword(
407
409
  request.query.password || request.body.password
408
410
  );
409
- const scope = request.query.scope?.toString() || request.body.scope?.toString();
411
+ const scope = request.query.scope?.toString() || request.body?.scope?.toString();
410
412
  const result = this.customerRepository.query(
411
413
  { projectKey: request.params.projectKey },
412
414
  {
@@ -426,7 +428,7 @@ var OAuth2Server = class {
426
428
  }
427
429
  const customer = result.results[0];
428
430
  const token = this.store.getCustomerToken(projectKey, customer.id, scope);
429
- return response.status(200).send(token);
431
+ response.status(200).send(token);
430
432
  }
431
433
  }
432
434
  async inStoreCustomerTokenHandler(request, response, next) {
@@ -469,7 +471,8 @@ var OAuth2Server = class {
469
471
  }
470
472
  const customer = result.results[0];
471
473
  const token = this.store.getCustomerToken(projectKey, customer.id, scope);
472
- return response.status(200).send(token);
474
+ response.status(200).send(token);
475
+ return;
473
476
  }
474
477
  }
475
478
  async anonymousTokenHandler(request, response, next) {
@@ -487,14 +490,15 @@ var OAuth2Server = class {
487
490
  );
488
491
  }
489
492
  if (grantType === "client_credentials") {
490
- const scope = request.query.scope?.toString() || request.body.scope?.toString();
493
+ const scope = request.query.scope?.toString() || request.body?.scope?.toString();
491
494
  const anonymous_id = void 0;
492
495
  const token = this.store.getAnonymousToken(
493
496
  projectKey,
494
497
  anonymous_id,
495
498
  scope
496
499
  );
497
- return response.status(200).send(token);
500
+ response.status(200).send(token);
501
+ return;
498
502
  }
499
503
  }
500
504
  };
@@ -1032,12 +1036,12 @@ var getShippingMethodsMatchingCart = (context, storage, cart, params = {}) => {
1032
1036
  context.projectKey,
1033
1037
  "shipping-method",
1034
1038
  {
1035
- "where": [
1036
- `zoneRates(zone(id in (:zoneIds)))`,
1039
+ where: [
1040
+ "zoneRates(zone(id in (:zoneIds)))",
1037
1041
  `zoneRates(shippingRates(price(currencyCode="${cart.totalPrice.currencyCode}")))`
1038
1042
  ],
1039
1043
  "var.zoneIds": zoneIds,
1040
- "expand": params.expand
1044
+ expand: params.expand
1041
1045
  }
1042
1046
  );
1043
1047
  const results = shippingMethods.results.map((shippingMethod) => {
@@ -1073,7 +1077,7 @@ var selectPrice = ({
1073
1077
  return countryMatch && currencyMatch;
1074
1078
  });
1075
1079
  };
1076
- var calculateLineItemTotalPrice = (lineItem) => lineItem.price.value.centAmount * lineItem.quantity;
1080
+ var calculateLineItemTotalPrice = (lineItem) => lineItem.price?.value.centAmount * lineItem.quantity;
1077
1081
  var calculateCartTotalPrice = (cart) => cart.lineItems.reduce((cur, item) => cur + item.totalPrice.centAmount, 0);
1078
1082
 
1079
1083
  // src/repositories/cart/actions.ts
@@ -1207,7 +1211,7 @@ var CartUpdateHandler = class extends AbstractUpdateHandler {
1207
1211
  } else {
1208
1212
  throw new CommercetoolsError({
1209
1213
  code: "General",
1210
- message: `Either lineItemid or lineItemKey needs to be provided.`
1214
+ message: "Either lineItemid or lineItemKey needs to be provided."
1211
1215
  });
1212
1216
  }
1213
1217
  if (quantity === 0) {
@@ -1474,7 +1478,7 @@ var CartUpdateHandler = class extends AbstractUpdateHandler {
1474
1478
  });
1475
1479
  }
1476
1480
  const zoneRate = method.zoneRates.find(
1477
- (rate) => rate.zone.obj.locations.some((loc) => loc.country === country)
1481
+ (rate) => rate.zone.obj?.locations.some((loc) => loc.country === country)
1478
1482
  );
1479
1483
  if (!zoneRate) {
1480
1484
  throw new Error("Zone rate not found");
@@ -1692,7 +1696,7 @@ var CartRepository = class extends AbstractResourceRepository {
1692
1696
  };
1693
1697
 
1694
1698
  // src/repositories/order/index.ts
1695
- import assert from "assert";
1699
+ import assert from "node:assert";
1696
1700
 
1697
1701
  // src/repositories/order/actions.ts
1698
1702
  var OrderUpdateHandler = class extends AbstractUpdateHandler {
@@ -2259,7 +2263,8 @@ var BusinessUnitRepository = class extends AbstractResourceRepository {
2259
2263
  };
2260
2264
  this.saveNew(context, division);
2261
2265
  return division;
2262
- } else if (this._isCompanyDraft(draft)) {
2266
+ }
2267
+ if (this._isCompanyDraft(draft)) {
2263
2268
  const company = resource;
2264
2269
  this.saveNew(context, company);
2265
2270
  return company;
@@ -2381,7 +2386,7 @@ var CartDiscountUpdateHandler = class extends AbstractUpdateHandler {
2381
2386
  throw new CommercetoolsError(
2382
2387
  {
2383
2388
  code: "InvalidOperation",
2384
- message: "Cannot remove custom field " + name + " because it does not exist."
2389
+ message: `Cannot remove custom field ${name} because it does not exist.`
2385
2390
  },
2386
2391
  400
2387
2392
  );
@@ -2561,15 +2566,11 @@ var CategoryUpdateHandler = class extends AbstractUpdateHandler {
2561
2566
  return;
2562
2567
  }
2563
2568
  if (assetId) {
2564
- resource.assets = resource.assets.filter(function(obj) {
2565
- return obj.id !== assetId;
2566
- });
2569
+ resource.assets = resource.assets.filter((obj) => obj.id !== assetId);
2567
2570
  return;
2568
2571
  }
2569
2572
  if (assetKey) {
2570
- resource.assets = resource.assets.filter(function(obj) {
2571
- return obj.key !== assetKey;
2572
- });
2573
+ resource.assets = resource.assets.filter((obj) => obj.key !== assetKey);
2573
2574
  return;
2574
2575
  }
2575
2576
  }
@@ -2792,26 +2793,25 @@ var CustomObjectRepository = class extends AbstractResourceRepository {
2792
2793
  return updated;
2793
2794
  }
2794
2795
  return current;
2795
- } else {
2796
- if (draft.version) {
2797
- throw new CommercetoolsError(
2798
- {
2799
- code: "InvalidOperation",
2800
- message: "version on create must be 0"
2801
- },
2802
- 400
2803
- );
2804
- }
2805
- const baseProperties = getBaseResourceProperties();
2806
- const resource = {
2807
- ...baseProperties,
2808
- container: draft.container,
2809
- key: draft.key,
2810
- value: draft.value
2811
- };
2812
- this.saveNew(context, resource);
2813
- return resource;
2814
2796
  }
2797
+ if (draft.version) {
2798
+ throw new CommercetoolsError(
2799
+ {
2800
+ code: "InvalidOperation",
2801
+ message: "version on create must be 0"
2802
+ },
2803
+ 400
2804
+ );
2805
+ }
2806
+ const baseProperties = getBaseResourceProperties();
2807
+ const resource = {
2808
+ ...baseProperties,
2809
+ container: draft.container,
2810
+ key: draft.key,
2811
+ value: draft.value
2812
+ };
2813
+ this.saveNew(context, resource);
2814
+ return resource;
2815
2815
  }
2816
2816
  getWithContainerAndKey(context, container, key) {
2817
2817
  const items = this._storage.all(context.projectKey, this.getTypeId());
@@ -2950,7 +2950,7 @@ var CustomerUpdateHandler = class extends AbstractUpdateHandler {
2950
2950
  }
2951
2951
  resource.authenticationMode = authMode;
2952
2952
  if (authMode === "ExternalAuth") {
2953
- delete resource.password;
2953
+ resource.password = void 0;
2954
2954
  return;
2955
2955
  }
2956
2956
  if (authMode === "Password") {
@@ -3504,7 +3504,8 @@ var ExtensionRepository = class extends AbstractResourceRepository {
3504
3504
  extension,
3505
3505
  "destination.authentication.headerValue"
3506
3506
  );
3507
- } else if (extension.destination.type === "AWSLambda") {
3507
+ }
3508
+ if (extension.destination.type === "AWSLambda") {
3508
3509
  return maskSecretValue(resource, "destination.accessSecret");
3509
3510
  }
3510
3511
  }
@@ -3671,7 +3672,7 @@ var MyCustomerRepository = class extends CustomerRepository {
3671
3672
  };
3672
3673
 
3673
3674
  // src/repositories/my-order.ts
3674
- import assert3 from "assert";
3675
+ import assert3 from "node:assert";
3675
3676
  var MyOrderRepository = class extends OrderRepository {
3676
3677
  create(context, draft) {
3677
3678
  assert3(draft.id, "draft.id is missing");
@@ -4484,7 +4485,7 @@ var parseFilter = (filter) => {
4484
4485
  (t) => ({
4485
4486
  type: "Symbol",
4486
4487
  kind: "int",
4487
- value: parseInt(t.token.match, 10)
4488
+ value: Number.parseInt(t.token.match, 10)
4488
4489
  })
4489
4490
  ).nud("STAR", 5, (_) => ({
4490
4491
  type: "Symbol",
@@ -4508,9 +4509,8 @@ var parseFilter = (filter) => {
4508
4509
  const expr = parser.parse({ terminals: [bp - 1] });
4509
4510
  if (Array.isArray(expr)) {
4510
4511
  return [left, ...expr];
4511
- } else {
4512
- return [left, expr];
4513
4512
  }
4513
+ return [left, expr];
4514
4514
  }).nud("(", 100, (t) => {
4515
4515
  const expr = parser.parse({ terminals: [")"] });
4516
4516
  lexer.expect(")");
@@ -4662,6 +4662,12 @@ var parseSearchQuery = (searchQuery) => {
4662
4662
  return generateFieldMatchFunc(generateRangeMatchFunc, searchQuery.range);
4663
4663
  }
4664
4664
  if (isSearchExactExpression(searchQuery)) {
4665
+ if (Array.isArray(searchQuery.exact.values)) {
4666
+ return generateFieldMatchFunc(
4667
+ (value) => (searchQuery.exact.values ?? []).includes(value),
4668
+ searchQuery.exact
4669
+ );
4670
+ }
4665
4671
  return generateFieldMatchFunc(
4666
4672
  (value) => value === searchQuery.exact.value,
4667
4673
  searchQuery.exact
@@ -5280,7 +5286,7 @@ var ProductUpdateHandler = class extends AbstractUpdateHandler {
5280
5286
  }
5281
5287
  if (position >= variantImages.length) {
5282
5288
  throw new Error(
5283
- `Invalid position given. Position in images where the image should be moved. Must be between 0 and the total number of images minus 1.`
5289
+ "Invalid position given. Position in images where the image should be moved. Must be between 0 and the total number of images minus 1."
5284
5290
  );
5285
5291
  }
5286
5292
  variant.images = variantImages.filter((image) => image.url !== imageUrl);
@@ -5913,9 +5919,8 @@ var parseQueryExpression = (predicate) => {
5913
5919
  if (Array.isArray(predicate)) {
5914
5920
  const callbacks = predicate.map((item) => generateMatchFunc2(item));
5915
5921
  return (target, variables) => callbacks.every((callback) => callback(target, variables));
5916
- } else {
5917
- return generateMatchFunc2(predicate);
5918
5922
  }
5923
+ return generateMatchFunc2(predicate);
5919
5924
  };
5920
5925
  var validateSymbol = (val) => {
5921
5926
  if (!val.type) {
@@ -5970,7 +5975,7 @@ var generateMatchFunc2 = (predicate) => {
5970
5975
  1,
5971
5976
  (t) => ({
5972
5977
  type: "boolean",
5973
- value: t.token.match === "true" ? true : false,
5978
+ value: t.token.match === "true",
5974
5979
  pos: t.token.strpos()
5975
5980
  })
5976
5981
  ).nud(
@@ -5996,7 +6001,7 @@ var generateMatchFunc2 = (predicate) => {
5996
6001
  1,
5997
6002
  (t) => ({
5998
6003
  type: "int",
5999
- value: parseInt(t.token.match, 10),
6004
+ value: Number.parseInt(t.token.match, 10),
6000
6005
  pos: t.token.strpos()
6001
6006
  })
6002
6007
  ).nud(
@@ -6004,7 +6009,7 @@ var generateMatchFunc2 = (predicate) => {
6004
6009
  1,
6005
6010
  (t) => ({
6006
6011
  type: "float",
6007
- value: parseFloat(t.token.match),
6012
+ value: Number.parseFloat(t.token.match),
6008
6013
  pos: t.token.strpos()
6009
6014
  })
6010
6015
  ).nud("NOT", 100, ({ bp }) => {
@@ -6020,9 +6025,8 @@ var generateMatchFunc2 = (predicate) => {
6020
6025
  const expr = parser.parse({ terminals: [bp - 1] });
6021
6026
  if (Array.isArray(expr)) {
6022
6027
  return [left, ...expr];
6023
- } else {
6024
- return [left, expr];
6025
6028
  }
6029
+ return [left, expr];
6026
6030
  }).nud("(", 100, (t) => {
6027
6031
  const expr = parser.parse({ terminals: [")"] });
6028
6032
  return expr;
@@ -6032,22 +6036,21 @@ var generateMatchFunc2 = (predicate) => {
6032
6036
  return (obj, vars) => {
6033
6037
  if (Array.isArray(obj)) {
6034
6038
  return obj.some((item) => {
6035
- const value = resolveValue(item, left);
6036
- if (value) {
6037
- return expr(value, vars);
6039
+ const value2 = resolveValue(item, left);
6040
+ if (value2) {
6041
+ return expr(value2, vars);
6038
6042
  }
6039
6043
  return false;
6040
6044
  });
6041
- } else {
6042
- const value = resolveValue(obj, left);
6043
- if (value) {
6044
- if (Array.isArray(value)) {
6045
- return value.some((item) => expr(item, vars));
6046
- }
6047
- return expr(value, vars);
6045
+ }
6046
+ const value = resolveValue(obj, left);
6047
+ if (value) {
6048
+ if (Array.isArray(value)) {
6049
+ return value.some((item) => expr(item, vars));
6048
6050
  }
6049
- return false;
6051
+ return expr(value, vars);
6050
6052
  }
6053
+ return false;
6051
6054
  };
6052
6055
  }).bp(")", 0).led("=", 20, ({ left, bp }) => {
6053
6056
  const expr = parser.parse({ terminals: [bp - 1] });
@@ -6062,14 +6065,13 @@ var generateMatchFunc2 = (predicate) => {
6062
6065
  }
6063
6066
  return value === other;
6064
6067
  });
6065
- } else {
6066
- const resolvedValue = resolveValue(obj, left);
6067
- const resolvedSymbol = resolveSymbol(expr, vars);
6068
- if (Array.isArray(resolvedValue)) {
6069
- return !!resolvedValue.some((elem) => elem === resolvedSymbol);
6070
- }
6071
- return resolvedValue === resolvedSymbol;
6072
6068
  }
6069
+ const resolvedValue = resolveValue(obj, left);
6070
+ const resolvedSymbol = resolveSymbol(expr, vars);
6071
+ if (Array.isArray(resolvedValue)) {
6072
+ return !!resolvedValue.some((elem) => elem === resolvedSymbol);
6073
+ }
6074
+ return resolvedValue === resolvedSymbol;
6073
6075
  };
6074
6076
  }).led("!=", 20, ({ left, bp }) => {
6075
6077
  const expr = parser.parse({ terminals: [bp - 1] });
@@ -6106,12 +6108,11 @@ var generateMatchFunc2 = (predicate) => {
6106
6108
  const val = resolveValue(obj, left);
6107
6109
  return val.length === 0;
6108
6110
  };
6109
- } else {
6110
- return (obj, vars) => {
6111
- const val = resolveValue(obj, left);
6112
- return val.length !== 0;
6113
- };
6114
6111
  }
6112
+ return (obj, vars) => {
6113
+ const val = resolveValue(obj, left);
6114
+ return val.length !== 0;
6115
+ };
6115
6116
  }
6116
6117
  case "defined": {
6117
6118
  if (!invert) {
@@ -6119,12 +6120,11 @@ var generateMatchFunc2 = (predicate) => {
6119
6120
  const val = resolveValue(obj, left);
6120
6121
  return val !== void 0;
6121
6122
  };
6122
- } else {
6123
- return (obj, vars) => {
6124
- const val = resolveValue(obj, left);
6125
- return val === void 0;
6126
- };
6127
6123
  }
6124
+ return (obj, vars) => {
6125
+ const val = resolveValue(obj, left);
6126
+ return val === void 0;
6127
+ };
6128
6128
  }
6129
6129
  default: {
6130
6130
  throw new Error("Unexpected");
@@ -6197,9 +6197,8 @@ var generateMatchFunc2 = (predicate) => {
6197
6197
  const array = expr.map((item) => resolveSymbol(item, vars));
6198
6198
  if (keyword.type === "ALL") {
6199
6199
  return array.every((item) => value.includes(item));
6200
- } else {
6201
- return array.some((item) => value.includes(item));
6202
6200
  }
6201
+ return array.some((item) => value.includes(item));
6203
6202
  };
6204
6203
  }).build();
6205
6204
  const result = parser.parse();
@@ -6440,9 +6439,8 @@ var ProductProjectionSearch = class {
6440
6439
  max: numValues > 0 ? Math.max(...values) : 0,
6441
6440
  mean: numValues > 0 ? mean(values) : 0
6442
6441
  };
6443
- } else {
6444
- throw new Error("not supported");
6445
6442
  }
6443
+ throw new Error("not supported");
6446
6444
  }) || [];
6447
6445
  const data = {
6448
6446
  type: "range",
@@ -6789,23 +6787,289 @@ var ProjectUpdateHandler = class extends AbstractUpdateHandler {
6789
6787
  }
6790
6788
  };
6791
6789
 
6792
- // src/repositories/quote.ts
6790
+ // src/repositories/quote/actions.ts
6791
+ var QuoteUpdateHandler = class extends AbstractUpdateHandler {
6792
+ setCustomField(context, resource, { name, value }) {
6793
+ if (!resource.custom) {
6794
+ throw new Error("Resource has no custom field");
6795
+ }
6796
+ resource.custom.fields[name] = value;
6797
+ }
6798
+ setCustomType(context, resource, { type, fields }) {
6799
+ if (!type) {
6800
+ resource.custom = void 0;
6801
+ } else {
6802
+ const resolvedType = this._storage.getByResourceIdentifier(
6803
+ context.projectKey,
6804
+ type
6805
+ );
6806
+ if (!resolvedType) {
6807
+ throw new Error(`Type ${type} not found`);
6808
+ }
6809
+ resource.custom = {
6810
+ type: {
6811
+ typeId: "type",
6812
+ id: resolvedType.id
6813
+ },
6814
+ fields: fields || {}
6815
+ };
6816
+ }
6817
+ }
6818
+ transitionState(context, resource, { state, force }) {
6819
+ let stateReference = void 0;
6820
+ if (state) {
6821
+ stateReference = getReferenceFromResourceIdentifier(
6822
+ state,
6823
+ context.projectKey,
6824
+ this._storage
6825
+ );
6826
+ resource.state = stateReference;
6827
+ } else {
6828
+ throw new CommercetoolsError(
6829
+ {
6830
+ code: "InvalidJsonInput",
6831
+ message: "Request body does not contain valid JSON.",
6832
+ detailedErrorMessage: "actions -> state: Missing required value"
6833
+ },
6834
+ 400
6835
+ );
6836
+ }
6837
+ return resource;
6838
+ }
6839
+ };
6840
+
6841
+ // src/repositories/quote/index.ts
6793
6842
  var QuoteRepository = class extends AbstractResourceRepository {
6794
6843
  constructor(config) {
6795
6844
  super("quote", config);
6845
+ this.actions = new QuoteUpdateHandler(config.storage);
6796
6846
  }
6797
6847
  create(context, draft) {
6798
- throw new Error("not implemented");
6848
+ const staged = this._storage.getByResourceIdentifier(
6849
+ context.projectKey,
6850
+ draft.stagedQuote
6851
+ );
6852
+ const cart = this._storage.getByResourceIdentifier(
6853
+ context.projectKey,
6854
+ staged.quotationCart
6855
+ );
6856
+ if (!cart.customerId) {
6857
+ throw new Error("Cart does not have a customer");
6858
+ }
6859
+ const resource = {
6860
+ ...getBaseResourceProperties(),
6861
+ quoteState: "Accepted",
6862
+ quoteRequest: staged.quoteRequest,
6863
+ lineItems: cart.lineItems,
6864
+ customLineItems: cart.customLineItems,
6865
+ customer: {
6866
+ typeId: "customer",
6867
+ id: cart.customerId
6868
+ },
6869
+ stagedQuote: {
6870
+ typeId: "staged-quote",
6871
+ id: staged.id
6872
+ },
6873
+ totalPrice: cart.totalPrice,
6874
+ taxedPrice: cart.taxedPrice,
6875
+ taxMode: cart.taxMode,
6876
+ taxRoundingMode: cart.taxRoundingMode,
6877
+ taxCalculationMode: cart.taxCalculationMode,
6878
+ billingAddress: cart.billingAddress,
6879
+ shippingAddress: cart.shippingAddress
6880
+ };
6881
+ return resource;
6882
+ }
6883
+ };
6884
+
6885
+ // src/repositories/quote-request/index.ts
6886
+ import assert4 from "node:assert";
6887
+
6888
+ // src/repositories/quote-request/actions.ts
6889
+ var QuoteRequestUpdateHandler = class extends AbstractUpdateHandler {
6890
+ setCustomField(context, resource, { name, value }) {
6891
+ if (!resource.custom) {
6892
+ throw new Error("Resource has no custom field");
6893
+ }
6894
+ resource.custom.fields[name] = value;
6895
+ }
6896
+ setCustomType(context, resource, { type, fields }) {
6897
+ if (!type) {
6898
+ resource.custom = void 0;
6899
+ } else {
6900
+ const resolvedType = this._storage.getByResourceIdentifier(
6901
+ context.projectKey,
6902
+ type
6903
+ );
6904
+ if (!resolvedType) {
6905
+ throw new Error(`Type ${type} not found`);
6906
+ }
6907
+ resource.custom = {
6908
+ type: {
6909
+ typeId: "type",
6910
+ id: resolvedType.id
6911
+ },
6912
+ fields: fields || {}
6913
+ };
6914
+ }
6915
+ }
6916
+ transitionState(context, resource, { state, force }) {
6917
+ let stateReference = void 0;
6918
+ if (state) {
6919
+ stateReference = getReferenceFromResourceIdentifier(
6920
+ state,
6921
+ context.projectKey,
6922
+ this._storage
6923
+ );
6924
+ resource.state = stateReference;
6925
+ } else {
6926
+ throw new CommercetoolsError(
6927
+ {
6928
+ code: "InvalidJsonInput",
6929
+ message: "Request body does not contain valid JSON.",
6930
+ detailedErrorMessage: "actions -> state: Missing required value"
6931
+ },
6932
+ 400
6933
+ );
6934
+ }
6935
+ return resource;
6799
6936
  }
6800
6937
  };
6801
6938
 
6802
- // src/repositories/quote-request.ts
6939
+ // src/repositories/quote-request/index.ts
6803
6940
  var QuoteRequestRepository = class extends AbstractResourceRepository {
6804
6941
  constructor(config) {
6805
6942
  super("quote-request", config);
6943
+ this.actions = new QuoteRequestUpdateHandler(config.storage);
6806
6944
  }
6807
6945
  create(context, draft) {
6808
- throw new Error("not implemented");
6946
+ assert4(draft.cart, "draft.cart is missing");
6947
+ return this.createFromCart(context, {
6948
+ id: draft.cart.id,
6949
+ typeId: "cart"
6950
+ });
6951
+ }
6952
+ createFromCart(context, cartReference) {
6953
+ const cart = this._storage.getByResourceIdentifier(
6954
+ context.projectKey,
6955
+ cartReference
6956
+ );
6957
+ if (!cart) {
6958
+ throw new Error("Cannot find cart");
6959
+ }
6960
+ if (!cart.customerId) {
6961
+ throw new Error("Cart does not have a customer");
6962
+ }
6963
+ const resource = {
6964
+ ...getBaseResourceProperties(),
6965
+ billingAddress: cart.billingAddress,
6966
+ cart: cartReference,
6967
+ country: cart.country,
6968
+ custom: cart.custom,
6969
+ customer: {
6970
+ typeId: "customer",
6971
+ id: cart.customerId
6972
+ },
6973
+ customerGroup: cart.customerGroup,
6974
+ customLineItems: [],
6975
+ directDiscounts: cart.directDiscounts,
6976
+ lineItems: cart.lineItems,
6977
+ paymentInfo: cart.paymentInfo,
6978
+ quoteRequestState: "Submitted",
6979
+ shippingAddress: cart.shippingAddress,
6980
+ taxCalculationMode: cart.taxCalculationMode,
6981
+ taxedPrice: cart.taxedPrice,
6982
+ taxMode: cart.taxMode,
6983
+ taxRoundingMode: cart.taxRoundingMode,
6984
+ totalPrice: cart.totalPrice,
6985
+ store: cart.store
6986
+ };
6987
+ return this.saveNew(context, resource);
6988
+ }
6989
+ };
6990
+
6991
+ // src/repositories/quote-staged/actions.ts
6992
+ var StagedQuoteUpdateHandler = class extends AbstractUpdateHandler {
6993
+ setCustomField(context, resource, { name, value }) {
6994
+ if (!resource.custom) {
6995
+ throw new Error("Resource has no custom field");
6996
+ }
6997
+ resource.custom.fields[name] = value;
6998
+ }
6999
+ setCustomType(context, resource, { type, fields }) {
7000
+ if (!type) {
7001
+ resource.custom = void 0;
7002
+ } else {
7003
+ const resolvedType = this._storage.getByResourceIdentifier(
7004
+ context.projectKey,
7005
+ type
7006
+ );
7007
+ if (!resolvedType) {
7008
+ throw new Error(`Type ${type} not found`);
7009
+ }
7010
+ resource.custom = {
7011
+ type: {
7012
+ typeId: "type",
7013
+ id: resolvedType.id
7014
+ },
7015
+ fields: fields || {}
7016
+ };
7017
+ }
7018
+ }
7019
+ transitionState(context, resource, { state, force }) {
7020
+ let stateReference = void 0;
7021
+ if (state) {
7022
+ stateReference = getReferenceFromResourceIdentifier(
7023
+ state,
7024
+ context.projectKey,
7025
+ this._storage
7026
+ );
7027
+ resource.state = stateReference;
7028
+ } else {
7029
+ throw new CommercetoolsError(
7030
+ {
7031
+ code: "InvalidJsonInput",
7032
+ message: "Request body does not contain valid JSON.",
7033
+ detailedErrorMessage: "actions -> state: Missing required value"
7034
+ },
7035
+ 400
7036
+ );
7037
+ }
7038
+ return resource;
7039
+ }
7040
+ };
7041
+
7042
+ // src/repositories/quote-staged/index.ts
7043
+ var StagedQuoteRepository = class extends AbstractResourceRepository {
7044
+ constructor(config) {
7045
+ super("staged-quote", config);
7046
+ this.actions = new StagedQuoteUpdateHandler(config.storage);
7047
+ }
7048
+ create(context, draft) {
7049
+ const quoteRequest = this._storage.getByResourceIdentifier(
7050
+ context.projectKey,
7051
+ draft.quoteRequest
7052
+ );
7053
+ if (!quoteRequest.cart) {
7054
+ throw new Error("Cannot find quote request");
7055
+ }
7056
+ const cart = this._storage.getByResourceIdentifier(
7057
+ context.projectKey,
7058
+ quoteRequest.cart
7059
+ );
7060
+ const resource = {
7061
+ ...getBaseResourceProperties(),
7062
+ stagedQuoteState: "InProgress",
7063
+ quoteRequest: {
7064
+ typeId: "quote-request",
7065
+ id: quoteRequest.id
7066
+ },
7067
+ quotationCart: {
7068
+ typeId: "cart",
7069
+ id: cart.id
7070
+ }
7071
+ };
7072
+ return resource;
6809
7073
  }
6810
7074
  };
6811
7075
 
@@ -7087,7 +7351,7 @@ var ShoppingListUpdateHandler = class extends AbstractUpdateHandler {
7087
7351
  } else {
7088
7352
  throw new CommercetoolsError({
7089
7353
  code: "General",
7090
- message: `Either lineItemid or lineItemKey needs to be provided.`
7354
+ message: "Either lineItemid or lineItemKey needs to be provided."
7091
7355
  });
7092
7356
  }
7093
7357
  if (quantity === 0) {
@@ -7212,7 +7476,12 @@ var ShoppingListRepository = class extends AbstractResourceRepository {
7212
7476
  context.projectKey,
7213
7477
  this._storage
7214
7478
  ) : void 0,
7215
- store: draft.store ? getStoreKeyReference(draft.store, context.projectKey, this._storage) : void 0
7479
+ store: draft.store ? getStoreKeyReference(draft.store, context.projectKey, this._storage) : void 0,
7480
+ businessUnit: draft.businessUnit ? getBusinessUnitKeyReference(
7481
+ draft.businessUnit,
7482
+ context.projectKey,
7483
+ this._storage
7484
+ ) : void 0
7216
7485
  };
7217
7486
  return this.saveNew(context, resource);
7218
7487
  }
@@ -7267,21 +7536,11 @@ var ShoppingListRepository = class extends AbstractResourceRepository {
7267
7536
  return lineItem;
7268
7537
  }
7269
7538
  throw new Error(
7270
- `must provide either sku, productId or variantId for ShoppingListLineItem`
7539
+ "must provide either sku, productId or variantId for ShoppingListLineItem"
7271
7540
  );
7272
7541
  };
7273
7542
  };
7274
7543
 
7275
- // src/repositories/staged-quote.ts
7276
- var StagedQuoteRepository = class extends AbstractResourceRepository {
7277
- constructor(config) {
7278
- super("staged-quote", config);
7279
- }
7280
- create(context, draft) {
7281
- throw new Error("not implemented");
7282
- }
7283
- };
7284
-
7285
7544
  // src/repositories/standalone-price.ts
7286
7545
  var StandAlonePriceRepository = class extends AbstractResourceRepository {
7287
7546
  constructor(config) {
@@ -7505,7 +7764,8 @@ var SubscriptionRepository = class extends AbstractResourceRepository {
7505
7764
  },
7506
7765
  key: draft.key,
7507
7766
  messages: draft.messages || [],
7508
- status: "Healthy"
7767
+ status: "Healthy",
7768
+ events: draft.events || []
7509
7769
  };
7510
7770
  return this.saveNew(context, resource);
7511
7771
  }
@@ -7727,44 +7987,44 @@ var createRepositories = (config) => ({
7727
7987
  "associate-role": new AssociateRoleRepository(config),
7728
7988
  "attribute-group": new AttributeGroupRepository(config),
7729
7989
  "business-unit": new BusinessUnitRepository(config),
7730
- "category": new CategoryRepository(config),
7731
- "cart": new CartRepository(config),
7990
+ category: new CategoryRepository(config),
7991
+ cart: new CartRepository(config),
7732
7992
  "cart-discount": new CartDiscountRepository(config),
7733
- "customer": new CustomerRepository(config),
7734
- "channel": new ChannelRepository(config),
7993
+ customer: new CustomerRepository(config),
7994
+ channel: new ChannelRepository(config),
7735
7995
  "customer-group": new CustomerGroupRepository(config),
7736
7996
  "discount-code": new DiscountCodeRepository(config),
7737
- "extension": new ExtensionRepository(config),
7997
+ extension: new ExtensionRepository(config),
7738
7998
  "inventory-entry": new InventoryEntryRepository(config),
7739
7999
  "key-value-document": new CustomObjectRepository(config),
7740
- "order": new OrderRepository(config),
8000
+ order: new OrderRepository(config),
7741
8001
  "order-edit": new OrderEditRepository(config),
7742
- "payment": new PaymentRepository(config),
8002
+ payment: new PaymentRepository(config),
7743
8003
  "my-cart": new CartRepository(config),
7744
8004
  "my-order": new MyOrderRepository(config),
7745
8005
  "my-customer": new MyCustomerRepository(config),
7746
8006
  "my-payment": new PaymentRepository(config),
7747
8007
  "my-shopping-list": new ShoppingListRepository(config),
7748
- "product": new ProductRepository(config),
8008
+ product: new ProductRepository(config),
7749
8009
  "product-type": new ProductTypeRepository(config),
7750
8010
  "product-discount": new ProductDiscountRepository(config),
7751
8011
  "product-projection": new ProductProjectionRepository(config),
7752
8012
  "product-selection": new ProductSelectionRepository(config),
7753
8013
  "product-tailoring": new ProductTailoringRepository(config),
7754
- "project": new ProjectRepository(config),
7755
- "review": new ReviewRepository(config),
7756
- "quote": new QuoteRepository(config),
8014
+ project: new ProjectRepository(config),
8015
+ review: new ReviewRepository(config),
8016
+ quote: new QuoteRepository(config),
7757
8017
  "quote-request": new QuoteRequestRepository(config),
7758
8018
  "shipping-method": new ShippingMethodRepository(config),
7759
8019
  "shopping-list": new ShoppingListRepository(config),
7760
8020
  "staged-quote": new StagedQuoteRepository(config),
7761
8021
  "standalone-price": new StandAlonePriceRepository(config),
7762
- "state": new StateRepository(config),
7763
- "store": new StoreRepository(config),
7764
- "subscription": new SubscriptionRepository(config),
8022
+ state: new StateRepository(config),
8023
+ store: new StoreRepository(config),
8024
+ subscription: new SubscriptionRepository(config),
7765
8025
  "tax-category": new TaxCategoryRepository(config),
7766
- "type": new TypeRepository(config),
7767
- "zone": new ZoneRepository(config)
8026
+ type: new TypeRepository(config),
8027
+ zone: new ZoneRepository(config)
7768
8028
  });
7769
8029
 
7770
8030
  // src/services/as-associate.ts
@@ -7842,46 +8102,53 @@ var AbstractService = class {
7842
8102
  }
7843
8103
  }
7844
8104
  const result = this.repository.query(getRepositoryContext(request), params);
7845
- return response.status(200).send(result);
8105
+ response.status(200).send(result);
8106
+ return;
7846
8107
  }
7847
8108
  getWithId(request, response) {
7848
- const result = this._expandWithId(request, request.params["id"]);
8109
+ const result = this._expandWithId(request, request.params.id);
7849
8110
  if (!result) {
7850
- return response.status(404).send();
8111
+ response.status(404).send();
8112
+ return;
7851
8113
  }
7852
- return response.status(200).send(result);
8114
+ response.status(200).send(result);
7853
8115
  }
7854
8116
  getWithKey(request, response) {
7855
8117
  const result = this.repository.getByKey(
7856
8118
  getRepositoryContext(request),
7857
- request.params["key"],
8119
+ request.params.key,
7858
8120
  {
7859
8121
  expand: this._parseParam(request.query.expand)
7860
8122
  }
7861
8123
  );
7862
- if (!result) return response.status(404).send();
7863
- return response.status(200).send(result);
8124
+ if (!result) {
8125
+ response.status(404).send();
8126
+ return;
8127
+ }
8128
+ response.status(200).send(result);
7864
8129
  }
7865
8130
  deleteWithId(request, response) {
7866
8131
  const result = this.repository.delete(
7867
8132
  getRepositoryContext(request),
7868
- request.params["id"],
8133
+ request.params.id,
7869
8134
  {
7870
8135
  expand: this._parseParam(request.query.expand)
7871
8136
  }
7872
8137
  );
7873
8138
  if (!result) {
7874
- return response.status(404).send("Not found");
8139
+ response.status(404).send("Not found");
8140
+ return;
7875
8141
  }
7876
- return response.status(200).send(result);
8142
+ response.status(200).send(result);
7877
8143
  }
7878
8144
  deleteWithKey(request, response) {
7879
8145
  const resource = this.repository.getByKey(
7880
8146
  getRepositoryContext(request),
7881
- request.params["key"]
8147
+ request.params.key
7882
8148
  );
7883
8149
  if (!resource) {
7884
- return response.status(404).send("Not found");
8150
+ response.status(404).send("Not found");
8151
+ return;
7885
8152
  }
7886
8153
  const result = this.repository.delete(
7887
8154
  getRepositoryContext(request),
@@ -7891,9 +8158,10 @@ var AbstractService = class {
7891
8158
  }
7892
8159
  );
7893
8160
  if (!result) {
7894
- return response.status(404).send("Not found");
8161
+ response.status(404).send("Not found");
8162
+ return;
7895
8163
  }
7896
- return response.status(200).send(result);
8164
+ response.status(200).send(result);
7897
8165
  }
7898
8166
  post(request, response) {
7899
8167
  const draft = request.body;
@@ -7902,7 +8170,7 @@ var AbstractService = class {
7902
8170
  draft
7903
8171
  );
7904
8172
  const result = this._expandWithId(request, resource.id);
7905
- return response.status(this.createStatusCode).send(result);
8173
+ response.status(this.createStatusCode).send(result);
7906
8174
  }
7907
8175
  postWithId(request, response) {
7908
8176
  const updateRequest = validateData(
@@ -7911,10 +8179,11 @@ var AbstractService = class {
7911
8179
  );
7912
8180
  const resource = this.repository.get(
7913
8181
  getRepositoryContext(request),
7914
- request.params["id"]
8182
+ request.params.id
7915
8183
  );
7916
8184
  if (!resource) {
7917
- return response.status(404).send("Not found");
8185
+ response.status(404).send("Not found");
8186
+ return;
7918
8187
  }
7919
8188
  const updatedResource = this.repository.processUpdateActions(
7920
8189
  getRepositoryContext(request),
@@ -7923,7 +8192,7 @@ var AbstractService = class {
7923
8192
  updateRequest.actions
7924
8193
  );
7925
8194
  const result = this._expandWithId(request, updatedResource.id);
7926
- return response.status(200).send(result);
8195
+ response.status(200).send(result);
7927
8196
  }
7928
8197
  postWithKey(request, response) {
7929
8198
  const updateRequest = validateData(
@@ -7932,10 +8201,11 @@ var AbstractService = class {
7932
8201
  );
7933
8202
  const resource = this.repository.getByKey(
7934
8203
  getRepositoryContext(request),
7935
- request.params["key"]
8204
+ request.params.key
7936
8205
  );
7937
8206
  if (!resource) {
7938
- return response.status(404).send("Not found");
8207
+ response.status(404).send("Not found");
8208
+ return;
7939
8209
  }
7940
8210
  const updatedResource = this.repository.processUpdateActions(
7941
8211
  getRepositoryContext(request),
@@ -7944,7 +8214,7 @@ var AbstractService = class {
7944
8214
  updateRequest.actions
7945
8215
  );
7946
8216
  const result = this._expandWithId(request, updatedResource.id);
7947
- return response.status(200).send(result);
8217
+ response.status(200).send(result);
7948
8218
  }
7949
8219
  _expandWithId(request, resourceId) {
7950
8220
  const result = this.repository.get(
@@ -8081,7 +8351,8 @@ var CartService = class extends AbstractService {
8081
8351
  const context = getRepositoryContext(request);
8082
8352
  const cartOrOrder = request.body.reference.typeId === "order" ? this.orderRepository.get(context, request.body.reference.id) : this.repository.get(context, request.body.reference.id);
8083
8353
  if (!cartOrOrder) {
8084
- return response.status(400).send();
8354
+ response.status(400).send();
8355
+ return;
8085
8356
  }
8086
8357
  const cartDraft = {
8087
8358
  ...cartOrOrder,
@@ -8096,7 +8367,7 @@ var CartService = class extends AbstractService {
8096
8367
  }))
8097
8368
  };
8098
8369
  const newCart = this.repository.create(context, cartDraft);
8099
- return response.status(200).send(newCart);
8370
+ response.status(200).send(newCart);
8100
8371
  }
8101
8372
  };
8102
8373
 
@@ -8168,7 +8439,7 @@ var CustomObjectService = class extends AbstractService {
8168
8439
  offset: offset !== void 0 ? Number(offset) : void 0
8169
8440
  }
8170
8441
  );
8171
- return response.status(200).send(result);
8442
+ response.status(200).send(result);
8172
8443
  }
8173
8444
  getWithContainerAndKey(request, response) {
8174
8445
  const result = this.repository.getWithContainerAndKey(
@@ -8177,9 +8448,10 @@ var CustomObjectService = class extends AbstractService {
8177
8448
  request.params.key
8178
8449
  );
8179
8450
  if (!result) {
8180
- return response.status(404).send("Not Found");
8451
+ response.status(404).send("Not Found");
8452
+ return;
8181
8453
  }
8182
- return response.status(200).send(result);
8454
+ response.status(200).send(result);
8183
8455
  }
8184
8456
  createWithContainerAndKey(request, response) {
8185
8457
  const draft = {
@@ -8188,7 +8460,7 @@ var CustomObjectService = class extends AbstractService {
8188
8460
  container: request.params.container
8189
8461
  };
8190
8462
  const result = this.repository.create(getRepositoryContext(request), draft);
8191
- return response.status(200).send(result);
8463
+ response.status(200).send(result);
8192
8464
  }
8193
8465
  deleteWithContainerAndKey(request, response) {
8194
8466
  const current = this.repository.getWithContainerAndKey(
@@ -8197,13 +8469,14 @@ var CustomObjectService = class extends AbstractService {
8197
8469
  request.params.key
8198
8470
  );
8199
8471
  if (!current) {
8200
- return response.status(404).send("Not Found");
8472
+ response.status(404).send("Not Found");
8473
+ return;
8201
8474
  }
8202
8475
  const result = this.repository.delete(
8203
8476
  getRepositoryContext(request),
8204
8477
  current.id
8205
8478
  );
8206
- return response.status(200).send(result);
8479
+ response.status(200).send(result);
8207
8480
  }
8208
8481
  };
8209
8482
 
@@ -8232,21 +8505,21 @@ var CustomerService = class extends AbstractService {
8232
8505
  const result = {
8233
8506
  customer: expanded
8234
8507
  };
8235
- return response.status(this.createStatusCode).send(result);
8508
+ response.status(this.createStatusCode).send(result);
8236
8509
  }
8237
8510
  passwordResetToken(request, response) {
8238
8511
  const customer = this.repository.passwordResetToken(
8239
8512
  getRepositoryContext(request),
8240
8513
  request.body
8241
8514
  );
8242
- return response.status(200).send(customer);
8515
+ response.status(200).send(customer);
8243
8516
  }
8244
8517
  passwordReset(request, response) {
8245
8518
  const customer = this.repository.passwordReset(
8246
8519
  getRepositoryContext(request),
8247
8520
  request.body
8248
8521
  );
8249
- return response.status(200).send(customer);
8522
+ response.status(200).send(customer);
8250
8523
  }
8251
8524
  confirmEmailToken(request, response) {
8252
8525
  const id = request.body.id;
@@ -8254,7 +8527,7 @@ var CustomerService = class extends AbstractService {
8254
8527
  getRepositoryContext(request),
8255
8528
  id
8256
8529
  );
8257
- return response.status(200).send(token);
8530
+ response.status(200).send(token);
8258
8531
  }
8259
8532
  };
8260
8533
 
@@ -8352,9 +8625,10 @@ var MyCartService = class extends AbstractService {
8352
8625
  activeCart(request, response) {
8353
8626
  const resource = this.repository.getActiveCart(request.params.projectKey);
8354
8627
  if (!resource) {
8355
- return response.status(404).send("Not found");
8628
+ response.status(404).send("Not found");
8629
+ return;
8356
8630
  }
8357
- return response.status(200).send(resource);
8631
+ response.status(200).send(resource);
8358
8632
  }
8359
8633
  };
8360
8634
 
@@ -8386,14 +8660,16 @@ var MyCustomerService = class extends AbstractService {
8386
8660
  getMe(request, response) {
8387
8661
  const resource = this.repository.getMe(getRepositoryContext(request));
8388
8662
  if (!resource) {
8389
- return response.status(404).send("Not found");
8663
+ response.status(404).send("Not found");
8664
+ return;
8390
8665
  }
8391
- return response.status(200).send(resource);
8666
+ response.status(200).send(resource);
8392
8667
  }
8393
8668
  updateMe(request, response) {
8394
8669
  const resource = this.repository.getMe(getRepositoryContext(request));
8395
8670
  if (!resource) {
8396
- return response.status(404).send("Not found");
8671
+ response.status(404).send("Not found");
8672
+ return;
8397
8673
  }
8398
8674
  const updateRequest = validateData(
8399
8675
  request.body,
@@ -8406,14 +8682,15 @@ var MyCustomerService = class extends AbstractService {
8406
8682
  updateRequest.actions
8407
8683
  );
8408
8684
  const result = this._expandWithId(request, updatedResource.id);
8409
- return response.status(200).send(result);
8685
+ response.status(200).send(result);
8410
8686
  }
8411
8687
  deleteMe(request, response) {
8412
8688
  const resource = this.repository.deleteMe(getRepositoryContext(request));
8413
8689
  if (!resource) {
8414
- return response.status(404).send("Not found");
8690
+ response.status(404).send("Not found");
8691
+ return;
8415
8692
  }
8416
- return response.status(200).send(resource);
8693
+ response.status(200).send(resource);
8417
8694
  }
8418
8695
  signUp(request, response) {
8419
8696
  const draft = request.body;
@@ -8422,28 +8699,28 @@ var MyCustomerService = class extends AbstractService {
8422
8699
  draft
8423
8700
  );
8424
8701
  const result = this._expandWithId(request, resource.id);
8425
- return response.status(this.createStatusCode).send({ customer: result });
8702
+ response.status(this.createStatusCode).send({ customer: result });
8426
8703
  }
8427
8704
  changePassword(request, response) {
8428
8705
  const customer = this.repository.changePassword(
8429
8706
  getRepositoryContext(request),
8430
8707
  request.body
8431
8708
  );
8432
- return response.status(200).send(customer);
8709
+ response.status(200).send(customer);
8433
8710
  }
8434
8711
  resetPassword(request, response) {
8435
8712
  const customer = this.repository.passwordReset(
8436
8713
  getRepositoryContext(request),
8437
8714
  request.body
8438
8715
  );
8439
- return response.status(200).send(customer);
8716
+ response.status(200).send(customer);
8440
8717
  }
8441
8718
  emailConfirm(request, response) {
8442
8719
  const customer = this.repository.confirmEmail(
8443
8720
  getRepositoryContext(request),
8444
8721
  request.body
8445
8722
  );
8446
- return response.status(200).send(customer);
8723
+ response.status(200).send(customer);
8447
8724
  }
8448
8725
  signIn(request, response) {
8449
8726
  const { email, password } = request.body;
@@ -8452,7 +8729,7 @@ var MyCustomerService = class extends AbstractService {
8452
8729
  where: [`email = "${email}"`, `password = "${encodedPassword}"`]
8453
8730
  });
8454
8731
  if (result.count === 0) {
8455
- return response.status(400).send({
8732
+ response.status(400).send({
8456
8733
  message: "Account with the given credentials not found.",
8457
8734
  errors: [
8458
8735
  {
@@ -8461,8 +8738,9 @@ var MyCustomerService = class extends AbstractService {
8461
8738
  }
8462
8739
  ]
8463
8740
  });
8741
+ return;
8464
8742
  }
8465
- return response.status(200).send({ customer: result.results[0] });
8743
+ response.status(200).send({ customer: result.results[0] });
8466
8744
  }
8467
8745
  };
8468
8746
 
@@ -8537,7 +8815,7 @@ var OrderService = class extends AbstractService {
8537
8815
  getRepositoryContext(request),
8538
8816
  importDraft
8539
8817
  );
8540
- return response.status(200).send(resource);
8818
+ response.status(200).send(resource);
8541
8819
  }
8542
8820
  getWithOrderNumber(request, response) {
8543
8821
  const resource = this.repository.getWithOrderNumber(
@@ -8547,9 +8825,10 @@ var OrderService = class extends AbstractService {
8547
8825
  request.query
8548
8826
  );
8549
8827
  if (resource) {
8550
- return response.status(200).send(resource);
8828
+ response.status(200).send(resource);
8829
+ return;
8551
8830
  }
8552
- return response.status(404).send("Not found");
8831
+ response.status(404).send("Not found");
8553
8832
  }
8554
8833
  };
8555
8834
 
@@ -8584,7 +8863,7 @@ var ProductService = class extends AbstractService {
8584
8863
  getRepositoryContext(request),
8585
8864
  searchBody
8586
8865
  );
8587
- return response.status(200).send(resource);
8866
+ response.status(200).send(resource);
8588
8867
  }
8589
8868
  };
8590
8869
 
@@ -8623,30 +8902,30 @@ var ProductProjectionService = class extends AbstractService {
8623
8902
  limit: limit !== void 0 ? Number(limit) : void 0,
8624
8903
  offset: offset !== void 0 ? Number(offset) : void 0
8625
8904
  });
8626
- return response.status(200).send(result);
8905
+ response.status(200).send(result);
8627
8906
  }
8628
8907
  search(request, response) {
8629
8908
  const query = request.query;
8630
8909
  const searchParams = {
8631
- "filter": queryParamsArray(query.filter),
8910
+ filter: queryParamsArray(query.filter),
8632
8911
  "filter.query": queryParamsArray(query["filter.query"]),
8633
- "facet": queryParamsArray(query.facet),
8634
- "expand": queryParamsArray(query.expand),
8635
- "staged": queryParamsValue(query.staged) === "true",
8636
- "localeProjection": queryParamsValue(query.localeProjection),
8637
- "storeProjection": queryParamsValue(query.storeProjection),
8638
- "priceChannel": queryParamsValue(query.priceChannel),
8639
- "priceCountry": queryParamsValue(query.priceCountry),
8640
- "priceCurrency": queryParamsValue(query.priceCurrency),
8641
- "priceCustomerGroup": queryParamsValue(query.priceCustomerGroup),
8642
- "offset": query.offset ? Number(queryParamsValue(query.offset)) : void 0,
8643
- "limit": query.limit ? Number(queryParamsValue(query.limit)) : void 0
8912
+ facet: queryParamsArray(query.facet),
8913
+ expand: queryParamsArray(query.expand),
8914
+ staged: queryParamsValue(query.staged) === "true",
8915
+ localeProjection: queryParamsValue(query.localeProjection),
8916
+ storeProjection: queryParamsValue(query.storeProjection),
8917
+ priceChannel: queryParamsValue(query.priceChannel),
8918
+ priceCountry: queryParamsValue(query.priceCountry),
8919
+ priceCurrency: queryParamsValue(query.priceCurrency),
8920
+ priceCustomerGroup: queryParamsValue(query.priceCustomerGroup),
8921
+ offset: query.offset ? Number(queryParamsValue(query.offset)) : void 0,
8922
+ limit: query.limit ? Number(queryParamsValue(query.limit)) : void 0
8644
8923
  };
8645
8924
  const resource = this.repository.search(
8646
8925
  getRepositoryContext(request),
8647
8926
  searchParams
8648
8927
  );
8649
- return response.status(200).send(resource);
8928
+ response.status(200).send(resource);
8650
8929
  }
8651
8930
  };
8652
8931
 
@@ -8674,6 +8953,42 @@ var ProductTypeService = class extends AbstractService {
8674
8953
  }
8675
8954
  };
8676
8955
 
8956
+ // src/services/quote.ts
8957
+ var QuoteService = class extends AbstractService {
8958
+ repository;
8959
+ constructor(parent, repository) {
8960
+ super(parent);
8961
+ this.repository = repository;
8962
+ }
8963
+ getBasePath() {
8964
+ return "quotes";
8965
+ }
8966
+ };
8967
+
8968
+ // src/services/quote-request.ts
8969
+ var QuoteRequestService = class extends AbstractService {
8970
+ repository;
8971
+ constructor(parent, repository) {
8972
+ super(parent);
8973
+ this.repository = repository;
8974
+ }
8975
+ getBasePath() {
8976
+ return "quote-requests";
8977
+ }
8978
+ };
8979
+
8980
+ // src/services/quote-staged.ts
8981
+ var StagedQuoteService = class extends AbstractService {
8982
+ repository;
8983
+ constructor(parent, repository) {
8984
+ super(parent);
8985
+ this.repository = repository;
8986
+ }
8987
+ getBasePath() {
8988
+ return "staged-quotes";
8989
+ }
8990
+ };
8991
+
8677
8992
  // src/services/reviews.ts
8678
8993
  var ReviewService = class extends AbstractService {
8679
8994
  repository;
@@ -8703,7 +9018,8 @@ var ShippingMethodService = class extends AbstractService {
8703
9018
  matchingCart(request, response) {
8704
9019
  const cartId = queryParamsValue(request.query.cartId);
8705
9020
  if (!cartId) {
8706
- return response.status(400).send();
9021
+ response.status(400).send();
9022
+ return;
8707
9023
  }
8708
9024
  const result = this.repository.matchingCart(
8709
9025
  getRepositoryContext(request),
@@ -8712,7 +9028,8 @@ var ShippingMethodService = class extends AbstractService {
8712
9028
  expand: this._parseParam(request.query.expand)
8713
9029
  }
8714
9030
  );
8715
- return response.status(200).send(result);
9031
+ response.status(200).send(result);
9032
+ return;
8716
9033
  }
8717
9034
  };
8718
9035
 
@@ -8817,14 +9134,14 @@ var createServices = (router, repos) => ({
8817
9134
  "associate-role": new AssociateRoleServices(router, repos["associate-role"]),
8818
9135
  "as-associate": new AsAssociateService(router, repos["as-associate"]),
8819
9136
  "business-unit": new BusinessUnitServices(router, repos["business-unit"]),
8820
- "category": new CategoryServices(router, repos["category"]),
8821
- "cart": new CartService(router, repos["cart"], repos["order"]),
9137
+ category: new CategoryServices(router, repos.category),
9138
+ cart: new CartService(router, repos.cart, repos.order),
8822
9139
  "cart-discount": new CartDiscountService(router, repos["cart-discount"]),
8823
- "customer": new CustomerService(router, repos["customer"]),
8824
- "channel": new ChannelService(router, repos["channel"]),
9140
+ customer: new CustomerService(router, repos.customer),
9141
+ channel: new ChannelService(router, repos.channel),
8825
9142
  "customer-group": new CustomerGroupService(router, repos["customer-group"]),
8826
9143
  "discount-code": new DiscountCodeService(router, repos["discount-code"]),
8827
- "extension": new ExtensionServices(router, repos["extension"]),
9144
+ extension: new ExtensionServices(router, repos.extension),
8828
9145
  "inventory-entry": new InventoryEntryService(
8829
9146
  router,
8830
9147
  repos["inventory-entry"]
@@ -8833,8 +9150,8 @@ var createServices = (router, repos) => ({
8833
9150
  router,
8834
9151
  repos["key-value-document"]
8835
9152
  ),
8836
- "order": new OrderService(router, repos["order"]),
8837
- "payment": new PaymentService(router, repos["payment"]),
9153
+ order: new OrderService(router, repos.order),
9154
+ payment: new PaymentService(router, repos.payment),
8838
9155
  "standalone-price": new StandAlonePriceService(
8839
9156
  router,
8840
9157
  repos["standalone-price"]
@@ -8853,7 +9170,7 @@ var createServices = (router, repos) => ({
8853
9170
  repos["shipping-method"]
8854
9171
  ),
8855
9172
  "product-type": new ProductTypeService(router, repos["product-type"]),
8856
- "product": new ProductService(router, repos["product"]),
9173
+ product: new ProductService(router, repos.product),
8857
9174
  "product-discount": new ProductDiscountService(
8858
9175
  router,
8859
9176
  repos["product-discount"]
@@ -8866,18 +9183,21 @@ var createServices = (router, repos) => ({
8866
9183
  router,
8867
9184
  repos["product-selection"]
8868
9185
  ),
8869
- "reviews": new ReviewService(router, repos["review"]),
9186
+ quotes: new QuoteService(router, repos.quote),
9187
+ "quote-request": new QuoteRequestService(router, repos["quote-request"]),
9188
+ reviews: new ReviewService(router, repos.review),
8870
9189
  "shopping-list": new ShoppingListService(router, repos["shopping-list"]),
8871
- "state": new StateService(router, repos["state"]),
8872
- "store": new StoreService(router, repos["store"]),
8873
- "subscription": new SubscriptionService(router, repos["subscription"]),
9190
+ "staged-quote": new StagedQuoteService(router, repos["staged-quote"]),
9191
+ state: new StateService(router, repos.state),
9192
+ store: new StoreService(router, repos.store),
9193
+ subscription: new SubscriptionService(router, repos.subscription),
8874
9194
  "tax-category": new TaxCategoryService(router, repos["tax-category"]),
8875
9195
  "attribute-group": new AttributeGroupService(
8876
9196
  router,
8877
9197
  repos["attribute-group"]
8878
9198
  ),
8879
- "type": new TypeService(router, repos["type"]),
8880
- "zone": new ZoneService(router, repos["zone"])
9199
+ type: new TypeService(router, repos.type),
9200
+ zone: new ZoneService(router, repos.zone)
8881
9201
  });
8882
9202
 
8883
9203
  // src/services/project.ts
@@ -8893,7 +9213,7 @@ var ProjectService = class {
8893
9213
  }
8894
9214
  get(request, response) {
8895
9215
  const project = this.repository.get(getRepositoryContext(request));
8896
- return response.status(200).send(project);
9216
+ response.status(200).send(project);
8897
9217
  }
8898
9218
  post(request, response) {
8899
9219
  const updateRequest = validateData(
@@ -8902,7 +9222,8 @@ var ProjectService = class {
8902
9222
  );
8903
9223
  const project = this.repository.get(getRepositoryContext(request));
8904
9224
  if (!project) {
8905
- return response.status(404).send({});
9225
+ response.status(404).send({});
9226
+ return;
8906
9227
  }
8907
9228
  const updatedResource = this.repository.processUpdateActions(
8908
9229
  getRepositoryContext(request),
@@ -8910,7 +9231,7 @@ var ProjectService = class {
8910
9231
  updateRequest.version,
8911
9232
  updateRequest.actions
8912
9233
  );
8913
- return response.status(200).send(updatedResource);
9234
+ response.status(200).send(updatedResource);
8914
9235
  }
8915
9236
  };
8916
9237
 
@@ -8919,7 +9240,7 @@ var AbstractStorage = class {
8919
9240
  };
8920
9241
 
8921
9242
  // src/storage/in-memory.ts
8922
- import assert4 from "assert";
9243
+ import assert5 from "node:assert";
8923
9244
  var InMemoryStorage = class extends AbstractStorage {
8924
9245
  resources = {};
8925
9246
  projects = {};
@@ -9015,38 +9336,38 @@ var InMemoryStorage = class extends AbstractStorage {
9015
9336
  "associate-role": /* @__PURE__ */ new Map(),
9016
9337
  "attribute-group": /* @__PURE__ */ new Map(),
9017
9338
  "business-unit": /* @__PURE__ */ new Map(),
9018
- "cart": /* @__PURE__ */ new Map(),
9339
+ cart: /* @__PURE__ */ new Map(),
9019
9340
  "cart-discount": /* @__PURE__ */ new Map(),
9020
- "category": /* @__PURE__ */ new Map(),
9021
- "channel": /* @__PURE__ */ new Map(),
9022
- "customer": /* @__PURE__ */ new Map(),
9341
+ category: /* @__PURE__ */ new Map(),
9342
+ channel: /* @__PURE__ */ new Map(),
9343
+ customer: /* @__PURE__ */ new Map(),
9023
9344
  "customer-group": /* @__PURE__ */ new Map(),
9024
9345
  "discount-code": /* @__PURE__ */ new Map(),
9025
- "extension": /* @__PURE__ */ new Map(),
9346
+ extension: /* @__PURE__ */ new Map(),
9026
9347
  "inventory-entry": /* @__PURE__ */ new Map(),
9027
9348
  "key-value-document": /* @__PURE__ */ new Map(),
9028
- "order": /* @__PURE__ */ new Map(),
9349
+ order: /* @__PURE__ */ new Map(),
9029
9350
  "order-edit": /* @__PURE__ */ new Map(),
9030
- "payment": /* @__PURE__ */ new Map(),
9031
- "product": /* @__PURE__ */ new Map(),
9032
- "quote": /* @__PURE__ */ new Map(),
9351
+ payment: /* @__PURE__ */ new Map(),
9352
+ product: /* @__PURE__ */ new Map(),
9353
+ quote: /* @__PURE__ */ new Map(),
9033
9354
  "quote-request": /* @__PURE__ */ new Map(),
9034
9355
  "product-discount": /* @__PURE__ */ new Map(),
9035
9356
  "product-selection": /* @__PURE__ */ new Map(),
9036
9357
  "product-type": /* @__PURE__ */ new Map(),
9037
9358
  "product-projection": /* @__PURE__ */ new Map(),
9038
9359
  "product-tailoring": /* @__PURE__ */ new Map(),
9039
- "review": /* @__PURE__ */ new Map(),
9360
+ review: /* @__PURE__ */ new Map(),
9040
9361
  "shipping-method": /* @__PURE__ */ new Map(),
9041
9362
  "staged-quote": /* @__PURE__ */ new Map(),
9042
- "state": /* @__PURE__ */ new Map(),
9043
- "store": /* @__PURE__ */ new Map(),
9363
+ state: /* @__PURE__ */ new Map(),
9364
+ store: /* @__PURE__ */ new Map(),
9044
9365
  "shopping-list": /* @__PURE__ */ new Map(),
9045
9366
  "standalone-price": /* @__PURE__ */ new Map(),
9046
- "subscription": /* @__PURE__ */ new Map(),
9367
+ subscription: /* @__PURE__ */ new Map(),
9047
9368
  "tax-category": /* @__PURE__ */ new Map(),
9048
- "type": /* @__PURE__ */ new Map(),
9049
- "zone": /* @__PURE__ */ new Map()
9369
+ type: /* @__PURE__ */ new Map(),
9370
+ zone: /* @__PURE__ */ new Map()
9050
9371
  };
9051
9372
  }
9052
9373
  return projectStorage;
@@ -9069,7 +9390,7 @@ var InMemoryStorage = class extends AbstractStorage {
9069
9390
  const store = this.forProjectKey(projectKey);
9070
9391
  store[typeId]?.set(obj.id, obj);
9071
9392
  const resource = this.get(projectKey, typeId, obj.id, params);
9072
- assert4(
9393
+ assert5(
9073
9394
  resource,
9074
9395
  `resource of type ${typeId} with id ${obj.id} not created`
9075
9396
  );
@@ -9356,23 +9677,25 @@ var CommercetoolsMock = class {
9356
9677
  app.use((err, req, resp, next) => {
9357
9678
  if (err instanceof CommercetoolsError) {
9358
9679
  if (err.errors?.length > 0) {
9359
- return resp.status(err.statusCode).send({
9680
+ resp.status(err.statusCode).send({
9360
9681
  statusCode: err.statusCode,
9361
9682
  message: err.message,
9362
9683
  errors: err.errors
9363
9684
  });
9685
+ return;
9364
9686
  }
9365
- return resp.status(err.statusCode).send({
9687
+ resp.status(err.statusCode).send({
9366
9688
  statusCode: err.statusCode,
9367
9689
  message: err.message,
9368
9690
  errors: [err.info]
9369
9691
  });
9370
- } else {
9371
- console.error(err);
9372
- return resp.status(500).send({
9373
- error: err.message
9374
- });
9692
+ return;
9375
9693
  }
9694
+ console.error(err);
9695
+ resp.status(500).send({
9696
+ error: err.message
9697
+ });
9698
+ return;
9376
9699
  });
9377
9700
  return app;
9378
9701
  }
@@ -9390,7 +9713,7 @@ var CommercetoolsMock = class {
9390
9713
  const body = await request.text();
9391
9714
  const url = new URL(request.url);
9392
9715
  const headers = copyHeaders(request.headers);
9393
- const res = await inject(app).post(url.pathname + "?" + url.searchParams.toString()).body(body).headers(headers).end();
9716
+ const res = await inject(app).post(`${url.pathname}?${url.searchParams.toString()}`).body(body).headers(headers).end();
9394
9717
  return new HttpResponse(res.body, {
9395
9718
  status: res.statusCode,
9396
9719
  headers: mapHeaderType(res.headers)
@@ -9400,7 +9723,7 @@ var CommercetoolsMock = class {
9400
9723
  const body = await request.text();
9401
9724
  const url = new URL(request.url);
9402
9725
  const headers = copyHeaders(request.headers);
9403
- const res = await inject(app).get(url.pathname + "?" + url.searchParams.toString()).body(body).headers(headers).end();
9726
+ const res = await inject(app).get(`${url.pathname}?${url.searchParams.toString()}`).body(body).headers(headers).end();
9404
9727
  if (res.statusCode === 200) {
9405
9728
  const parsedBody = JSON.parse(res.body);
9406
9729
  const resultCount = "count" in parsedBody ? parsedBody.count : Object.keys(parsedBody).length;
@@ -9418,7 +9741,7 @@ var CommercetoolsMock = class {
9418
9741
  const body = await request.text();
9419
9742
  const url = new URL(request.url);
9420
9743
  const headers = copyHeaders(request.headers);
9421
- const res = await inject(app).get(url.pathname + "?" + url.searchParams.toString()).body(body).headers(headers).end();
9744
+ const res = await inject(app).get(`${url.pathname}?${url.searchParams.toString()}`).body(body).headers(headers).end();
9422
9745
  return new HttpResponse(res.body, {
9423
9746
  status: res.statusCode,
9424
9747
  headers: mapHeaderType(res.headers)
@@ -9428,7 +9751,7 @@ var CommercetoolsMock = class {
9428
9751
  const body = await request.text();
9429
9752
  const url = new URL(request.url);
9430
9753
  const headers = copyHeaders(request.headers);
9431
- const res = await inject(app).post(url.pathname + "?" + url.searchParams.toString()).body(body).headers(headers).end();
9754
+ const res = await inject(app).post(`${url.pathname}?${url.searchParams.toString()}`).body(body).headers(headers).end();
9432
9755
  return new HttpResponse(res.body, {
9433
9756
  status: res.statusCode,
9434
9757
  headers: mapHeaderType(res.headers)
@@ -9438,7 +9761,7 @@ var CommercetoolsMock = class {
9438
9761
  const body = await request.text();
9439
9762
  const url = new URL(request.url);
9440
9763
  const headers = copyHeaders(request.headers);
9441
- const res = await inject(app).delete(url.pathname + "?" + url.searchParams.toString()).body(body).headers(headers).end();
9764
+ const res = await inject(app).delete(`${url.pathname}?${url.searchParams.toString()}`).body(body).headers(headers).end();
9442
9765
  return new HttpResponse(res.body, {
9443
9766
  status: res.statusCode,
9444
9767
  headers: mapHeaderType(res.headers)
@@ -9453,10 +9776,9 @@ var CommercetoolsMock = class {
9453
9776
  if (_globalListeners.length > 0) {
9454
9777
  if (this._mswServer !== void 0) {
9455
9778
  throw new Error("Server already started");
9456
- } else {
9457
- process.emitWarning("Server wasn't stopped properly, clearing");
9458
- _globalListeners.forEach((listener) => listener.close());
9459
9779
  }
9780
+ process.emitWarning("Server wasn't stopped properly, clearing");
9781
+ _globalListeners.forEach((listener) => listener.close());
9460
9782
  }
9461
9783
  const server = setupServer();
9462
9784
  this.registerHandlers(server);