@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.cjs CHANGED
@@ -28,12 +28,12 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
28
28
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
29
 
30
30
  // src/index.ts
31
- var src_exports = {};
32
- __export(src_exports, {
31
+ var index_exports = {};
32
+ __export(index_exports, {
33
33
  CommercetoolsMock: () => CommercetoolsMock,
34
34
  getBaseResourceProperties: () => getBaseResourceProperties
35
35
  });
36
- module.exports = __toCommonJS(src_exports);
36
+ module.exports = __toCommonJS(index_exports);
37
37
 
38
38
  // src/ctMock.ts
39
39
  var import_express10 = __toESM(require("express"), 1);
@@ -361,7 +361,7 @@ var OAuth2Server = class {
361
361
  )
362
362
  );
363
363
  }
364
- const grantType = request.query.grant_type || request.body.grant_type;
364
+ const grantType = request.query.grant_type || request.body?.grant_type;
365
365
  if (!grantType) {
366
366
  return next(
367
367
  new CommercetoolsError(
@@ -379,9 +379,11 @@ var OAuth2Server = class {
379
379
  request.credentials.clientSecret,
380
380
  request.query.scope?.toString()
381
381
  );
382
- return response.status(200).send(token);
383
- } else if (grantType === "refresh_token") {
384
- const refreshToken = request.query.refresh_token?.toString() || request.body.refresh_token;
382
+ response.status(200).send(token);
383
+ return;
384
+ }
385
+ if (grantType === "refresh_token") {
386
+ const refreshToken = request.query.refresh_token?.toString() || request.body?.refresh_token;
385
387
  if (!refreshToken) {
386
388
  return next(
387
389
  new CommercetoolsError(
@@ -411,22 +413,22 @@ var OAuth2Server = class {
411
413
  )
412
414
  );
413
415
  }
414
- return response.status(200).send(token);
415
- } else {
416
- return next(
417
- new CommercetoolsError(
418
- {
419
- code: "unsupported_grant_type",
420
- message: `Invalid parameter: grant_type: Invalid grant type: ${grantType}`
421
- },
422
- 400
423
- )
424
- );
416
+ response.status(200).send(token);
417
+ return;
425
418
  }
419
+ return next(
420
+ new CommercetoolsError(
421
+ {
422
+ code: "unsupported_grant_type",
423
+ message: `Invalid parameter: grant_type: Invalid grant type: ${grantType}`
424
+ },
425
+ 400
426
+ )
427
+ );
426
428
  }
427
429
  async customerTokenHandler(request, response, next) {
428
430
  const projectKey = request.params.projectKey;
429
- const grantType = request.query.grant_type || request.body.grant_type;
431
+ const grantType = request.query.grant_type || request.body?.grant_type;
430
432
  if (!grantType) {
431
433
  return next(
432
434
  new CommercetoolsError(
@@ -439,11 +441,11 @@ var OAuth2Server = class {
439
441
  );
440
442
  }
441
443
  if (grantType === "password") {
442
- const username = request.query.username || request.body.username;
444
+ const username = request.query.username || request.body?.username;
443
445
  const password = hashPassword(
444
446
  request.query.password || request.body.password
445
447
  );
446
- const scope = request.query.scope?.toString() || request.body.scope?.toString();
448
+ const scope = request.query.scope?.toString() || request.body?.scope?.toString();
447
449
  const result = this.customerRepository.query(
448
450
  { projectKey: request.params.projectKey },
449
451
  {
@@ -463,7 +465,7 @@ var OAuth2Server = class {
463
465
  }
464
466
  const customer = result.results[0];
465
467
  const token = this.store.getCustomerToken(projectKey, customer.id, scope);
466
- return response.status(200).send(token);
468
+ response.status(200).send(token);
467
469
  }
468
470
  }
469
471
  async inStoreCustomerTokenHandler(request, response, next) {
@@ -506,7 +508,8 @@ var OAuth2Server = class {
506
508
  }
507
509
  const customer = result.results[0];
508
510
  const token = this.store.getCustomerToken(projectKey, customer.id, scope);
509
- return response.status(200).send(token);
511
+ response.status(200).send(token);
512
+ return;
510
513
  }
511
514
  }
512
515
  async anonymousTokenHandler(request, response, next) {
@@ -524,14 +527,15 @@ var OAuth2Server = class {
524
527
  );
525
528
  }
526
529
  if (grantType === "client_credentials") {
527
- const scope = request.query.scope?.toString() || request.body.scope?.toString();
530
+ const scope = request.query.scope?.toString() || request.body?.scope?.toString();
528
531
  const anonymous_id = void 0;
529
532
  const token = this.store.getAnonymousToken(
530
533
  projectKey,
531
534
  anonymous_id,
532
535
  scope
533
536
  );
534
- return response.status(200).send(token);
537
+ response.status(200).send(token);
538
+ return;
535
539
  }
536
540
  }
537
541
  };
@@ -1069,12 +1073,12 @@ var getShippingMethodsMatchingCart = (context, storage, cart, params = {}) => {
1069
1073
  context.projectKey,
1070
1074
  "shipping-method",
1071
1075
  {
1072
- "where": [
1073
- `zoneRates(zone(id in (:zoneIds)))`,
1076
+ where: [
1077
+ "zoneRates(zone(id in (:zoneIds)))",
1074
1078
  `zoneRates(shippingRates(price(currencyCode="${cart.totalPrice.currencyCode}")))`
1075
1079
  ],
1076
1080
  "var.zoneIds": zoneIds,
1077
- "expand": params.expand
1081
+ expand: params.expand
1078
1082
  }
1079
1083
  );
1080
1084
  const results = shippingMethods.results.map((shippingMethod) => {
@@ -1110,7 +1114,7 @@ var selectPrice = ({
1110
1114
  return countryMatch && currencyMatch;
1111
1115
  });
1112
1116
  };
1113
- var calculateLineItemTotalPrice = (lineItem) => lineItem.price.value.centAmount * lineItem.quantity;
1117
+ var calculateLineItemTotalPrice = (lineItem) => lineItem.price?.value.centAmount * lineItem.quantity;
1114
1118
  var calculateCartTotalPrice = (cart) => cart.lineItems.reduce((cur, item) => cur + item.totalPrice.centAmount, 0);
1115
1119
 
1116
1120
  // src/repositories/cart/actions.ts
@@ -1244,7 +1248,7 @@ var CartUpdateHandler = class extends AbstractUpdateHandler {
1244
1248
  } else {
1245
1249
  throw new CommercetoolsError({
1246
1250
  code: "General",
1247
- message: `Either lineItemid or lineItemKey needs to be provided.`
1251
+ message: "Either lineItemid or lineItemKey needs to be provided."
1248
1252
  });
1249
1253
  }
1250
1254
  if (quantity === 0) {
@@ -1511,7 +1515,7 @@ var CartUpdateHandler = class extends AbstractUpdateHandler {
1511
1515
  });
1512
1516
  }
1513
1517
  const zoneRate = method.zoneRates.find(
1514
- (rate) => rate.zone.obj.locations.some((loc) => loc.country === country)
1518
+ (rate) => rate.zone.obj?.locations.some((loc) => loc.country === country)
1515
1519
  );
1516
1520
  if (!zoneRate) {
1517
1521
  throw new Error("Zone rate not found");
@@ -1729,7 +1733,7 @@ var CartRepository = class extends AbstractResourceRepository {
1729
1733
  };
1730
1734
 
1731
1735
  // src/repositories/order/index.ts
1732
- var import_assert = __toESM(require("assert"), 1);
1736
+ var import_node_assert = __toESM(require("assert"), 1);
1733
1737
 
1734
1738
  // src/repositories/order/actions.ts
1735
1739
  var OrderUpdateHandler = class extends AbstractUpdateHandler {
@@ -1934,7 +1938,7 @@ var OrderRepository = class extends AbstractResourceRepository {
1934
1938
  this.actions = new OrderUpdateHandler(config.storage);
1935
1939
  }
1936
1940
  create(context, draft) {
1937
- (0, import_assert.default)(draft.cart, "draft.cart is missing");
1941
+ (0, import_node_assert.default)(draft.cart, "draft.cart is missing");
1938
1942
  return this.createFromCart(
1939
1943
  context,
1940
1944
  {
@@ -1989,7 +1993,7 @@ var OrderRepository = class extends AbstractResourceRepository {
1989
1993
  return this.saveNew(context, resource);
1990
1994
  }
1991
1995
  import(context, draft) {
1992
- (0, import_assert.default)(this, "OrderRepository not valid");
1996
+ (0, import_node_assert.default)(this, "OrderRepository not valid");
1993
1997
  const resource = {
1994
1998
  ...getBaseResourceProperties(),
1995
1999
  billingAddress: createAddress(
@@ -2296,7 +2300,8 @@ var BusinessUnitRepository = class extends AbstractResourceRepository {
2296
2300
  };
2297
2301
  this.saveNew(context, division);
2298
2302
  return division;
2299
- } else if (this._isCompanyDraft(draft)) {
2303
+ }
2304
+ if (this._isCompanyDraft(draft)) {
2300
2305
  const company = resource;
2301
2306
  this.saveNew(context, company);
2302
2307
  return company;
@@ -2418,7 +2423,7 @@ var CartDiscountUpdateHandler = class extends AbstractUpdateHandler {
2418
2423
  throw new CommercetoolsError(
2419
2424
  {
2420
2425
  code: "InvalidOperation",
2421
- message: "Cannot remove custom field " + name + " because it does not exist."
2426
+ message: `Cannot remove custom field ${name} because it does not exist.`
2422
2427
  },
2423
2428
  400
2424
2429
  );
@@ -2598,15 +2603,11 @@ var CategoryUpdateHandler = class extends AbstractUpdateHandler {
2598
2603
  return;
2599
2604
  }
2600
2605
  if (assetId) {
2601
- resource.assets = resource.assets.filter(function(obj) {
2602
- return obj.id !== assetId;
2603
- });
2606
+ resource.assets = resource.assets.filter((obj) => obj.id !== assetId);
2604
2607
  return;
2605
2608
  }
2606
2609
  if (assetKey) {
2607
- resource.assets = resource.assets.filter(function(obj) {
2608
- return obj.key !== assetKey;
2609
- });
2610
+ resource.assets = resource.assets.filter((obj) => obj.key !== assetKey);
2610
2611
  return;
2611
2612
  }
2612
2613
  }
@@ -2829,26 +2830,25 @@ var CustomObjectRepository = class extends AbstractResourceRepository {
2829
2830
  return updated;
2830
2831
  }
2831
2832
  return current;
2832
- } else {
2833
- if (draft.version) {
2834
- throw new CommercetoolsError(
2835
- {
2836
- code: "InvalidOperation",
2837
- message: "version on create must be 0"
2838
- },
2839
- 400
2840
- );
2841
- }
2842
- const baseProperties = getBaseResourceProperties();
2843
- const resource = {
2844
- ...baseProperties,
2845
- container: draft.container,
2846
- key: draft.key,
2847
- value: draft.value
2848
- };
2849
- this.saveNew(context, resource);
2850
- return resource;
2851
2833
  }
2834
+ if (draft.version) {
2835
+ throw new CommercetoolsError(
2836
+ {
2837
+ code: "InvalidOperation",
2838
+ message: "version on create must be 0"
2839
+ },
2840
+ 400
2841
+ );
2842
+ }
2843
+ const baseProperties = getBaseResourceProperties();
2844
+ const resource = {
2845
+ ...baseProperties,
2846
+ container: draft.container,
2847
+ key: draft.key,
2848
+ value: draft.value
2849
+ };
2850
+ this.saveNew(context, resource);
2851
+ return resource;
2852
2852
  }
2853
2853
  getWithContainerAndKey(context, container, key) {
2854
2854
  const items = this._storage.all(context.projectKey, this.getTypeId());
@@ -2873,7 +2873,7 @@ var CustomObjectRepository = class extends AbstractResourceRepository {
2873
2873
  };
2874
2874
 
2875
2875
  // src/repositories/customer/actions.ts
2876
- var import_node_assert = __toESM(require("assert"), 1);
2876
+ var import_node_assert2 = __toESM(require("assert"), 1);
2877
2877
  var CustomerUpdateHandler = class extends AbstractUpdateHandler {
2878
2878
  addAddress(_context, resource, { address }) {
2879
2879
  resource.addresses.push({
@@ -2883,7 +2883,7 @@ var CustomerUpdateHandler = class extends AbstractUpdateHandler {
2883
2883
  }
2884
2884
  addBillingAddressId(_context, resource, { addressId, addressKey }) {
2885
2885
  const address = this._findAddress(resource, addressId, addressKey, true);
2886
- (0, import_node_assert.default)(address?.id);
2886
+ (0, import_node_assert2.default)(address?.id);
2887
2887
  if (resource.billingAddressIds === void 0) {
2888
2888
  resource.billingAddressIds = [];
2889
2889
  }
@@ -2893,7 +2893,7 @@ var CustomerUpdateHandler = class extends AbstractUpdateHandler {
2893
2893
  }
2894
2894
  addShippingAddressId(_context, resource, { addressId, addressKey }) {
2895
2895
  const address = this._findAddress(resource, addressId, addressKey, true);
2896
- (0, import_node_assert.default)(address?.id);
2896
+ (0, import_node_assert2.default)(address?.id);
2897
2897
  if (resource.shippingAddressIds === void 0) {
2898
2898
  resource.shippingAddressIds = [];
2899
2899
  }
@@ -2907,7 +2907,7 @@ var CustomerUpdateHandler = class extends AbstractUpdateHandler {
2907
2907
  }
2908
2908
  changeAddress(context, resource, { addressId, addressKey, address }) {
2909
2909
  const current = this._findAddress(resource, addressId, addressKey, true);
2910
- (0, import_node_assert.default)(current?.id);
2910
+ (0, import_node_assert2.default)(current?.id);
2911
2911
  const oldAddressIndex = resource.addresses.findIndex(
2912
2912
  (a) => a.id === current.id
2913
2913
  );
@@ -2933,7 +2933,7 @@ var CustomerUpdateHandler = class extends AbstractUpdateHandler {
2933
2933
  action.addressKey,
2934
2934
  true
2935
2935
  );
2936
- (0, import_node_assert.default)(address?.id);
2936
+ (0, import_node_assert2.default)(address?.id);
2937
2937
  resource.addresses = resource.addresses.filter((a) => a.id !== address.id);
2938
2938
  }
2939
2939
  removeBillingAddressId(context, resource, action) {
@@ -2943,7 +2943,7 @@ var CustomerUpdateHandler = class extends AbstractUpdateHandler {
2943
2943
  action.addressKey,
2944
2944
  true
2945
2945
  );
2946
- (0, import_node_assert.default)(address?.id);
2946
+ (0, import_node_assert2.default)(address?.id);
2947
2947
  resource.billingAddressIds = resource.billingAddressIds?.filter(
2948
2948
  (id) => id !== address.id
2949
2949
  );
@@ -2958,7 +2958,7 @@ var CustomerUpdateHandler = class extends AbstractUpdateHandler {
2958
2958
  action.addressKey,
2959
2959
  true
2960
2960
  );
2961
- (0, import_node_assert.default)(address?.id);
2961
+ (0, import_node_assert2.default)(address?.id);
2962
2962
  resource.shippingAddressIds = resource.shippingAddressIds?.filter(
2963
2963
  (id) => id !== address.id
2964
2964
  );
@@ -2987,7 +2987,7 @@ var CustomerUpdateHandler = class extends AbstractUpdateHandler {
2987
2987
  }
2988
2988
  resource.authenticationMode = authMode;
2989
2989
  if (authMode === "ExternalAuth") {
2990
- delete resource.password;
2990
+ resource.password = void 0;
2991
2991
  return;
2992
2992
  }
2993
2993
  if (authMode === "Password") {
@@ -3060,7 +3060,7 @@ var CustomerUpdateHandler = class extends AbstractUpdateHandler {
3060
3060
  action.addressKey,
3061
3061
  true
3062
3062
  );
3063
- (0, import_node_assert.default)(address?.id);
3063
+ (0, import_node_assert2.default)(address?.id);
3064
3064
  resource.defaultBillingAddressId = address.id;
3065
3065
  if (resource.billingAddressIds === void 0) {
3066
3066
  resource.billingAddressIds = [];
@@ -3076,7 +3076,7 @@ var CustomerUpdateHandler = class extends AbstractUpdateHandler {
3076
3076
  action.addressKey,
3077
3077
  true
3078
3078
  );
3079
- (0, import_node_assert.default)(address?.id);
3079
+ (0, import_node_assert2.default)(address?.id);
3080
3080
  resource.defaultShippingAddressId = address.id;
3081
3081
  if (resource.shippingAddressIds === void 0) {
3082
3082
  resource.shippingAddressIds = [];
@@ -3541,7 +3541,8 @@ var ExtensionRepository = class extends AbstractResourceRepository {
3541
3541
  extension,
3542
3542
  "destination.authentication.headerValue"
3543
3543
  );
3544
- } else if (extension.destination.type === "AWSLambda") {
3544
+ }
3545
+ if (extension.destination.type === "AWSLambda") {
3545
3546
  return maskSecretValue(resource, "destination.accessSecret");
3546
3547
  }
3547
3548
  }
@@ -3708,10 +3709,10 @@ var MyCustomerRepository = class extends CustomerRepository {
3708
3709
  };
3709
3710
 
3710
3711
  // src/repositories/my-order.ts
3711
- var import_assert2 = __toESM(require("assert"), 1);
3712
+ var import_node_assert3 = __toESM(require("assert"), 1);
3712
3713
  var MyOrderRepository = class extends OrderRepository {
3713
3714
  create(context, draft) {
3714
- (0, import_assert2.default)(draft.id, "draft.id is missing");
3715
+ (0, import_node_assert3.default)(draft.id, "draft.id is missing");
3715
3716
  const cartIdentifier = {
3716
3717
  id: draft.id,
3717
3718
  typeId: "cart"
@@ -4521,7 +4522,7 @@ var parseFilter = (filter) => {
4521
4522
  (t) => ({
4522
4523
  type: "Symbol",
4523
4524
  kind: "int",
4524
- value: parseInt(t.token.match, 10)
4525
+ value: Number.parseInt(t.token.match, 10)
4525
4526
  })
4526
4527
  ).nud("STAR", 5, (_) => ({
4527
4528
  type: "Symbol",
@@ -4545,9 +4546,8 @@ var parseFilter = (filter) => {
4545
4546
  const expr = parser.parse({ terminals: [bp - 1] });
4546
4547
  if (Array.isArray(expr)) {
4547
4548
  return [left, ...expr];
4548
- } else {
4549
- return [left, expr];
4550
4549
  }
4550
+ return [left, expr];
4551
4551
  }).nud("(", 100, (t) => {
4552
4552
  const expr = parser.parse({ terminals: [")"] });
4553
4553
  lexer.expect(")");
@@ -4699,6 +4699,12 @@ var parseSearchQuery = (searchQuery) => {
4699
4699
  return generateFieldMatchFunc(generateRangeMatchFunc, searchQuery.range);
4700
4700
  }
4701
4701
  if (isSearchExactExpression(searchQuery)) {
4702
+ if (Array.isArray(searchQuery.exact.values)) {
4703
+ return generateFieldMatchFunc(
4704
+ (value) => (searchQuery.exact.values ?? []).includes(value),
4705
+ searchQuery.exact
4706
+ );
4707
+ }
4702
4708
  return generateFieldMatchFunc(
4703
4709
  (value) => value === searchQuery.exact.value,
4704
4710
  searchQuery.exact
@@ -5317,7 +5323,7 @@ var ProductUpdateHandler = class extends AbstractUpdateHandler {
5317
5323
  }
5318
5324
  if (position >= variantImages.length) {
5319
5325
  throw new Error(
5320
- `Invalid position given. Position in images where the image should be moved. Must be between 0 and the total number of images minus 1.`
5326
+ "Invalid position given. Position in images where the image should be moved. Must be between 0 and the total number of images minus 1."
5321
5327
  );
5322
5328
  }
5323
5329
  variant.images = variantImages.filter((image) => image.url !== imageUrl);
@@ -5950,9 +5956,8 @@ var parseQueryExpression = (predicate) => {
5950
5956
  if (Array.isArray(predicate)) {
5951
5957
  const callbacks = predicate.map((item) => generateMatchFunc2(item));
5952
5958
  return (target, variables) => callbacks.every((callback) => callback(target, variables));
5953
- } else {
5954
- return generateMatchFunc2(predicate);
5955
5959
  }
5960
+ return generateMatchFunc2(predicate);
5956
5961
  };
5957
5962
  var validateSymbol = (val) => {
5958
5963
  if (!val.type) {
@@ -6007,7 +6012,7 @@ var generateMatchFunc2 = (predicate) => {
6007
6012
  1,
6008
6013
  (t) => ({
6009
6014
  type: "boolean",
6010
- value: t.token.match === "true" ? true : false,
6015
+ value: t.token.match === "true",
6011
6016
  pos: t.token.strpos()
6012
6017
  })
6013
6018
  ).nud(
@@ -6033,7 +6038,7 @@ var generateMatchFunc2 = (predicate) => {
6033
6038
  1,
6034
6039
  (t) => ({
6035
6040
  type: "int",
6036
- value: parseInt(t.token.match, 10),
6041
+ value: Number.parseInt(t.token.match, 10),
6037
6042
  pos: t.token.strpos()
6038
6043
  })
6039
6044
  ).nud(
@@ -6041,7 +6046,7 @@ var generateMatchFunc2 = (predicate) => {
6041
6046
  1,
6042
6047
  (t) => ({
6043
6048
  type: "float",
6044
- value: parseFloat(t.token.match),
6049
+ value: Number.parseFloat(t.token.match),
6045
6050
  pos: t.token.strpos()
6046
6051
  })
6047
6052
  ).nud("NOT", 100, ({ bp }) => {
@@ -6057,9 +6062,8 @@ var generateMatchFunc2 = (predicate) => {
6057
6062
  const expr = parser.parse({ terminals: [bp - 1] });
6058
6063
  if (Array.isArray(expr)) {
6059
6064
  return [left, ...expr];
6060
- } else {
6061
- return [left, expr];
6062
6065
  }
6066
+ return [left, expr];
6063
6067
  }).nud("(", 100, (t) => {
6064
6068
  const expr = parser.parse({ terminals: [")"] });
6065
6069
  return expr;
@@ -6069,22 +6073,21 @@ var generateMatchFunc2 = (predicate) => {
6069
6073
  return (obj, vars) => {
6070
6074
  if (Array.isArray(obj)) {
6071
6075
  return obj.some((item) => {
6072
- const value = resolveValue(item, left);
6073
- if (value) {
6074
- return expr(value, vars);
6076
+ const value2 = resolveValue(item, left);
6077
+ if (value2) {
6078
+ return expr(value2, vars);
6075
6079
  }
6076
6080
  return false;
6077
6081
  });
6078
- } else {
6079
- const value = resolveValue(obj, left);
6080
- if (value) {
6081
- if (Array.isArray(value)) {
6082
- return value.some((item) => expr(item, vars));
6083
- }
6084
- return expr(value, vars);
6082
+ }
6083
+ const value = resolveValue(obj, left);
6084
+ if (value) {
6085
+ if (Array.isArray(value)) {
6086
+ return value.some((item) => expr(item, vars));
6085
6087
  }
6086
- return false;
6088
+ return expr(value, vars);
6087
6089
  }
6090
+ return false;
6088
6091
  };
6089
6092
  }).bp(")", 0).led("=", 20, ({ left, bp }) => {
6090
6093
  const expr = parser.parse({ terminals: [bp - 1] });
@@ -6099,14 +6102,13 @@ var generateMatchFunc2 = (predicate) => {
6099
6102
  }
6100
6103
  return value === other;
6101
6104
  });
6102
- } else {
6103
- const resolvedValue = resolveValue(obj, left);
6104
- const resolvedSymbol = resolveSymbol(expr, vars);
6105
- if (Array.isArray(resolvedValue)) {
6106
- return !!resolvedValue.some((elem) => elem === resolvedSymbol);
6107
- }
6108
- return resolvedValue === resolvedSymbol;
6109
6105
  }
6106
+ const resolvedValue = resolveValue(obj, left);
6107
+ const resolvedSymbol = resolveSymbol(expr, vars);
6108
+ if (Array.isArray(resolvedValue)) {
6109
+ return !!resolvedValue.some((elem) => elem === resolvedSymbol);
6110
+ }
6111
+ return resolvedValue === resolvedSymbol;
6110
6112
  };
6111
6113
  }).led("!=", 20, ({ left, bp }) => {
6112
6114
  const expr = parser.parse({ terminals: [bp - 1] });
@@ -6143,12 +6145,11 @@ var generateMatchFunc2 = (predicate) => {
6143
6145
  const val = resolveValue(obj, left);
6144
6146
  return val.length === 0;
6145
6147
  };
6146
- } else {
6147
- return (obj, vars) => {
6148
- const val = resolveValue(obj, left);
6149
- return val.length !== 0;
6150
- };
6151
6148
  }
6149
+ return (obj, vars) => {
6150
+ const val = resolveValue(obj, left);
6151
+ return val.length !== 0;
6152
+ };
6152
6153
  }
6153
6154
  case "defined": {
6154
6155
  if (!invert) {
@@ -6156,12 +6157,11 @@ var generateMatchFunc2 = (predicate) => {
6156
6157
  const val = resolveValue(obj, left);
6157
6158
  return val !== void 0;
6158
6159
  };
6159
- } else {
6160
- return (obj, vars) => {
6161
- const val = resolveValue(obj, left);
6162
- return val === void 0;
6163
- };
6164
6160
  }
6161
+ return (obj, vars) => {
6162
+ const val = resolveValue(obj, left);
6163
+ return val === void 0;
6164
+ };
6165
6165
  }
6166
6166
  default: {
6167
6167
  throw new Error("Unexpected");
@@ -6234,9 +6234,8 @@ var generateMatchFunc2 = (predicate) => {
6234
6234
  const array = expr.map((item) => resolveSymbol(item, vars));
6235
6235
  if (keyword.type === "ALL") {
6236
6236
  return array.every((item) => value.includes(item));
6237
- } else {
6238
- return array.some((item) => value.includes(item));
6239
6237
  }
6238
+ return array.some((item) => value.includes(item));
6240
6239
  };
6241
6240
  }).build();
6242
6241
  const result = parser.parse();
@@ -6477,9 +6476,8 @@ var ProductProjectionSearch = class {
6477
6476
  max: numValues > 0 ? Math.max(...values) : 0,
6478
6477
  mean: numValues > 0 ? mean(values) : 0
6479
6478
  };
6480
- } else {
6481
- throw new Error("not supported");
6482
6479
  }
6480
+ throw new Error("not supported");
6483
6481
  }) || [];
6484
6482
  const data = {
6485
6483
  type: "range",
@@ -6826,23 +6824,289 @@ var ProjectUpdateHandler = class extends AbstractUpdateHandler {
6826
6824
  }
6827
6825
  };
6828
6826
 
6829
- // src/repositories/quote.ts
6827
+ // src/repositories/quote/actions.ts
6828
+ var QuoteUpdateHandler = class extends AbstractUpdateHandler {
6829
+ setCustomField(context, resource, { name, value }) {
6830
+ if (!resource.custom) {
6831
+ throw new Error("Resource has no custom field");
6832
+ }
6833
+ resource.custom.fields[name] = value;
6834
+ }
6835
+ setCustomType(context, resource, { type, fields }) {
6836
+ if (!type) {
6837
+ resource.custom = void 0;
6838
+ } else {
6839
+ const resolvedType = this._storage.getByResourceIdentifier(
6840
+ context.projectKey,
6841
+ type
6842
+ );
6843
+ if (!resolvedType) {
6844
+ throw new Error(`Type ${type} not found`);
6845
+ }
6846
+ resource.custom = {
6847
+ type: {
6848
+ typeId: "type",
6849
+ id: resolvedType.id
6850
+ },
6851
+ fields: fields || {}
6852
+ };
6853
+ }
6854
+ }
6855
+ transitionState(context, resource, { state, force }) {
6856
+ let stateReference = void 0;
6857
+ if (state) {
6858
+ stateReference = getReferenceFromResourceIdentifier(
6859
+ state,
6860
+ context.projectKey,
6861
+ this._storage
6862
+ );
6863
+ resource.state = stateReference;
6864
+ } else {
6865
+ throw new CommercetoolsError(
6866
+ {
6867
+ code: "InvalidJsonInput",
6868
+ message: "Request body does not contain valid JSON.",
6869
+ detailedErrorMessage: "actions -> state: Missing required value"
6870
+ },
6871
+ 400
6872
+ );
6873
+ }
6874
+ return resource;
6875
+ }
6876
+ };
6877
+
6878
+ // src/repositories/quote/index.ts
6830
6879
  var QuoteRepository = class extends AbstractResourceRepository {
6831
6880
  constructor(config) {
6832
6881
  super("quote", config);
6882
+ this.actions = new QuoteUpdateHandler(config.storage);
6833
6883
  }
6834
6884
  create(context, draft) {
6835
- throw new Error("not implemented");
6885
+ const staged = this._storage.getByResourceIdentifier(
6886
+ context.projectKey,
6887
+ draft.stagedQuote
6888
+ );
6889
+ const cart = this._storage.getByResourceIdentifier(
6890
+ context.projectKey,
6891
+ staged.quotationCart
6892
+ );
6893
+ if (!cart.customerId) {
6894
+ throw new Error("Cart does not have a customer");
6895
+ }
6896
+ const resource = {
6897
+ ...getBaseResourceProperties(),
6898
+ quoteState: "Accepted",
6899
+ quoteRequest: staged.quoteRequest,
6900
+ lineItems: cart.lineItems,
6901
+ customLineItems: cart.customLineItems,
6902
+ customer: {
6903
+ typeId: "customer",
6904
+ id: cart.customerId
6905
+ },
6906
+ stagedQuote: {
6907
+ typeId: "staged-quote",
6908
+ id: staged.id
6909
+ },
6910
+ totalPrice: cart.totalPrice,
6911
+ taxedPrice: cart.taxedPrice,
6912
+ taxMode: cart.taxMode,
6913
+ taxRoundingMode: cart.taxRoundingMode,
6914
+ taxCalculationMode: cart.taxCalculationMode,
6915
+ billingAddress: cart.billingAddress,
6916
+ shippingAddress: cart.shippingAddress
6917
+ };
6918
+ return resource;
6919
+ }
6920
+ };
6921
+
6922
+ // src/repositories/quote-request/index.ts
6923
+ var import_node_assert4 = __toESM(require("assert"), 1);
6924
+
6925
+ // src/repositories/quote-request/actions.ts
6926
+ var QuoteRequestUpdateHandler = class extends AbstractUpdateHandler {
6927
+ setCustomField(context, resource, { name, value }) {
6928
+ if (!resource.custom) {
6929
+ throw new Error("Resource has no custom field");
6930
+ }
6931
+ resource.custom.fields[name] = value;
6932
+ }
6933
+ setCustomType(context, resource, { type, fields }) {
6934
+ if (!type) {
6935
+ resource.custom = void 0;
6936
+ } else {
6937
+ const resolvedType = this._storage.getByResourceIdentifier(
6938
+ context.projectKey,
6939
+ type
6940
+ );
6941
+ if (!resolvedType) {
6942
+ throw new Error(`Type ${type} not found`);
6943
+ }
6944
+ resource.custom = {
6945
+ type: {
6946
+ typeId: "type",
6947
+ id: resolvedType.id
6948
+ },
6949
+ fields: fields || {}
6950
+ };
6951
+ }
6952
+ }
6953
+ transitionState(context, resource, { state, force }) {
6954
+ let stateReference = void 0;
6955
+ if (state) {
6956
+ stateReference = getReferenceFromResourceIdentifier(
6957
+ state,
6958
+ context.projectKey,
6959
+ this._storage
6960
+ );
6961
+ resource.state = stateReference;
6962
+ } else {
6963
+ throw new CommercetoolsError(
6964
+ {
6965
+ code: "InvalidJsonInput",
6966
+ message: "Request body does not contain valid JSON.",
6967
+ detailedErrorMessage: "actions -> state: Missing required value"
6968
+ },
6969
+ 400
6970
+ );
6971
+ }
6972
+ return resource;
6836
6973
  }
6837
6974
  };
6838
6975
 
6839
- // src/repositories/quote-request.ts
6976
+ // src/repositories/quote-request/index.ts
6840
6977
  var QuoteRequestRepository = class extends AbstractResourceRepository {
6841
6978
  constructor(config) {
6842
6979
  super("quote-request", config);
6980
+ this.actions = new QuoteRequestUpdateHandler(config.storage);
6981
+ }
6982
+ create(context, draft) {
6983
+ (0, import_node_assert4.default)(draft.cart, "draft.cart is missing");
6984
+ return this.createFromCart(context, {
6985
+ id: draft.cart.id,
6986
+ typeId: "cart"
6987
+ });
6988
+ }
6989
+ createFromCart(context, cartReference) {
6990
+ const cart = this._storage.getByResourceIdentifier(
6991
+ context.projectKey,
6992
+ cartReference
6993
+ );
6994
+ if (!cart) {
6995
+ throw new Error("Cannot find cart");
6996
+ }
6997
+ if (!cart.customerId) {
6998
+ throw new Error("Cart does not have a customer");
6999
+ }
7000
+ const resource = {
7001
+ ...getBaseResourceProperties(),
7002
+ billingAddress: cart.billingAddress,
7003
+ cart: cartReference,
7004
+ country: cart.country,
7005
+ custom: cart.custom,
7006
+ customer: {
7007
+ typeId: "customer",
7008
+ id: cart.customerId
7009
+ },
7010
+ customerGroup: cart.customerGroup,
7011
+ customLineItems: [],
7012
+ directDiscounts: cart.directDiscounts,
7013
+ lineItems: cart.lineItems,
7014
+ paymentInfo: cart.paymentInfo,
7015
+ quoteRequestState: "Submitted",
7016
+ shippingAddress: cart.shippingAddress,
7017
+ taxCalculationMode: cart.taxCalculationMode,
7018
+ taxedPrice: cart.taxedPrice,
7019
+ taxMode: cart.taxMode,
7020
+ taxRoundingMode: cart.taxRoundingMode,
7021
+ totalPrice: cart.totalPrice,
7022
+ store: cart.store
7023
+ };
7024
+ return this.saveNew(context, resource);
7025
+ }
7026
+ };
7027
+
7028
+ // src/repositories/quote-staged/actions.ts
7029
+ var StagedQuoteUpdateHandler = class extends AbstractUpdateHandler {
7030
+ setCustomField(context, resource, { name, value }) {
7031
+ if (!resource.custom) {
7032
+ throw new Error("Resource has no custom field");
7033
+ }
7034
+ resource.custom.fields[name] = value;
7035
+ }
7036
+ setCustomType(context, resource, { type, fields }) {
7037
+ if (!type) {
7038
+ resource.custom = void 0;
7039
+ } else {
7040
+ const resolvedType = this._storage.getByResourceIdentifier(
7041
+ context.projectKey,
7042
+ type
7043
+ );
7044
+ if (!resolvedType) {
7045
+ throw new Error(`Type ${type} not found`);
7046
+ }
7047
+ resource.custom = {
7048
+ type: {
7049
+ typeId: "type",
7050
+ id: resolvedType.id
7051
+ },
7052
+ fields: fields || {}
7053
+ };
7054
+ }
7055
+ }
7056
+ transitionState(context, resource, { state, force }) {
7057
+ let stateReference = void 0;
7058
+ if (state) {
7059
+ stateReference = getReferenceFromResourceIdentifier(
7060
+ state,
7061
+ context.projectKey,
7062
+ this._storage
7063
+ );
7064
+ resource.state = stateReference;
7065
+ } else {
7066
+ throw new CommercetoolsError(
7067
+ {
7068
+ code: "InvalidJsonInput",
7069
+ message: "Request body does not contain valid JSON.",
7070
+ detailedErrorMessage: "actions -> state: Missing required value"
7071
+ },
7072
+ 400
7073
+ );
7074
+ }
7075
+ return resource;
7076
+ }
7077
+ };
7078
+
7079
+ // src/repositories/quote-staged/index.ts
7080
+ var StagedQuoteRepository = class extends AbstractResourceRepository {
7081
+ constructor(config) {
7082
+ super("staged-quote", config);
7083
+ this.actions = new StagedQuoteUpdateHandler(config.storage);
6843
7084
  }
6844
7085
  create(context, draft) {
6845
- throw new Error("not implemented");
7086
+ const quoteRequest = this._storage.getByResourceIdentifier(
7087
+ context.projectKey,
7088
+ draft.quoteRequest
7089
+ );
7090
+ if (!quoteRequest.cart) {
7091
+ throw new Error("Cannot find quote request");
7092
+ }
7093
+ const cart = this._storage.getByResourceIdentifier(
7094
+ context.projectKey,
7095
+ quoteRequest.cart
7096
+ );
7097
+ const resource = {
7098
+ ...getBaseResourceProperties(),
7099
+ stagedQuoteState: "InProgress",
7100
+ quoteRequest: {
7101
+ typeId: "quote-request",
7102
+ id: quoteRequest.id
7103
+ },
7104
+ quotationCart: {
7105
+ typeId: "cart",
7106
+ id: cart.id
7107
+ }
7108
+ };
7109
+ return resource;
6846
7110
  }
6847
7111
  };
6848
7112
 
@@ -7124,7 +7388,7 @@ var ShoppingListUpdateHandler = class extends AbstractUpdateHandler {
7124
7388
  } else {
7125
7389
  throw new CommercetoolsError({
7126
7390
  code: "General",
7127
- message: `Either lineItemid or lineItemKey needs to be provided.`
7391
+ message: "Either lineItemid or lineItemKey needs to be provided."
7128
7392
  });
7129
7393
  }
7130
7394
  if (quantity === 0) {
@@ -7249,7 +7513,12 @@ var ShoppingListRepository = class extends AbstractResourceRepository {
7249
7513
  context.projectKey,
7250
7514
  this._storage
7251
7515
  ) : void 0,
7252
- store: draft.store ? getStoreKeyReference(draft.store, context.projectKey, this._storage) : void 0
7516
+ store: draft.store ? getStoreKeyReference(draft.store, context.projectKey, this._storage) : void 0,
7517
+ businessUnit: draft.businessUnit ? getBusinessUnitKeyReference(
7518
+ draft.businessUnit,
7519
+ context.projectKey,
7520
+ this._storage
7521
+ ) : void 0
7253
7522
  };
7254
7523
  return this.saveNew(context, resource);
7255
7524
  }
@@ -7304,21 +7573,11 @@ var ShoppingListRepository = class extends AbstractResourceRepository {
7304
7573
  return lineItem;
7305
7574
  }
7306
7575
  throw new Error(
7307
- `must provide either sku, productId or variantId for ShoppingListLineItem`
7576
+ "must provide either sku, productId or variantId for ShoppingListLineItem"
7308
7577
  );
7309
7578
  };
7310
7579
  };
7311
7580
 
7312
- // src/repositories/staged-quote.ts
7313
- var StagedQuoteRepository = class extends AbstractResourceRepository {
7314
- constructor(config) {
7315
- super("staged-quote", config);
7316
- }
7317
- create(context, draft) {
7318
- throw new Error("not implemented");
7319
- }
7320
- };
7321
-
7322
7581
  // src/repositories/standalone-price.ts
7323
7582
  var StandAlonePriceRepository = class extends AbstractResourceRepository {
7324
7583
  constructor(config) {
@@ -7542,7 +7801,8 @@ var SubscriptionRepository = class extends AbstractResourceRepository {
7542
7801
  },
7543
7802
  key: draft.key,
7544
7803
  messages: draft.messages || [],
7545
- status: "Healthy"
7804
+ status: "Healthy",
7805
+ events: draft.events || []
7546
7806
  };
7547
7807
  return this.saveNew(context, resource);
7548
7808
  }
@@ -7764,44 +8024,44 @@ var createRepositories = (config) => ({
7764
8024
  "associate-role": new AssociateRoleRepository(config),
7765
8025
  "attribute-group": new AttributeGroupRepository(config),
7766
8026
  "business-unit": new BusinessUnitRepository(config),
7767
- "category": new CategoryRepository(config),
7768
- "cart": new CartRepository(config),
8027
+ category: new CategoryRepository(config),
8028
+ cart: new CartRepository(config),
7769
8029
  "cart-discount": new CartDiscountRepository(config),
7770
- "customer": new CustomerRepository(config),
7771
- "channel": new ChannelRepository(config),
8030
+ customer: new CustomerRepository(config),
8031
+ channel: new ChannelRepository(config),
7772
8032
  "customer-group": new CustomerGroupRepository(config),
7773
8033
  "discount-code": new DiscountCodeRepository(config),
7774
- "extension": new ExtensionRepository(config),
8034
+ extension: new ExtensionRepository(config),
7775
8035
  "inventory-entry": new InventoryEntryRepository(config),
7776
8036
  "key-value-document": new CustomObjectRepository(config),
7777
- "order": new OrderRepository(config),
8037
+ order: new OrderRepository(config),
7778
8038
  "order-edit": new OrderEditRepository(config),
7779
- "payment": new PaymentRepository(config),
8039
+ payment: new PaymentRepository(config),
7780
8040
  "my-cart": new CartRepository(config),
7781
8041
  "my-order": new MyOrderRepository(config),
7782
8042
  "my-customer": new MyCustomerRepository(config),
7783
8043
  "my-payment": new PaymentRepository(config),
7784
8044
  "my-shopping-list": new ShoppingListRepository(config),
7785
- "product": new ProductRepository(config),
8045
+ product: new ProductRepository(config),
7786
8046
  "product-type": new ProductTypeRepository(config),
7787
8047
  "product-discount": new ProductDiscountRepository(config),
7788
8048
  "product-projection": new ProductProjectionRepository(config),
7789
8049
  "product-selection": new ProductSelectionRepository(config),
7790
8050
  "product-tailoring": new ProductTailoringRepository(config),
7791
- "project": new ProjectRepository(config),
7792
- "review": new ReviewRepository(config),
7793
- "quote": new QuoteRepository(config),
8051
+ project: new ProjectRepository(config),
8052
+ review: new ReviewRepository(config),
8053
+ quote: new QuoteRepository(config),
7794
8054
  "quote-request": new QuoteRequestRepository(config),
7795
8055
  "shipping-method": new ShippingMethodRepository(config),
7796
8056
  "shopping-list": new ShoppingListRepository(config),
7797
8057
  "staged-quote": new StagedQuoteRepository(config),
7798
8058
  "standalone-price": new StandAlonePriceRepository(config),
7799
- "state": new StateRepository(config),
7800
- "store": new StoreRepository(config),
7801
- "subscription": new SubscriptionRepository(config),
8059
+ state: new StateRepository(config),
8060
+ store: new StoreRepository(config),
8061
+ subscription: new SubscriptionRepository(config),
7802
8062
  "tax-category": new TaxCategoryRepository(config),
7803
- "type": new TypeRepository(config),
7804
- "zone": new ZoneRepository(config)
8063
+ type: new TypeRepository(config),
8064
+ zone: new ZoneRepository(config)
7805
8065
  });
7806
8066
 
7807
8067
  // src/services/as-associate.ts
@@ -7879,46 +8139,53 @@ var AbstractService = class {
7879
8139
  }
7880
8140
  }
7881
8141
  const result = this.repository.query(getRepositoryContext(request), params);
7882
- return response.status(200).send(result);
8142
+ response.status(200).send(result);
8143
+ return;
7883
8144
  }
7884
8145
  getWithId(request, response) {
7885
- const result = this._expandWithId(request, request.params["id"]);
8146
+ const result = this._expandWithId(request, request.params.id);
7886
8147
  if (!result) {
7887
- return response.status(404).send();
8148
+ response.status(404).send();
8149
+ return;
7888
8150
  }
7889
- return response.status(200).send(result);
8151
+ response.status(200).send(result);
7890
8152
  }
7891
8153
  getWithKey(request, response) {
7892
8154
  const result = this.repository.getByKey(
7893
8155
  getRepositoryContext(request),
7894
- request.params["key"],
8156
+ request.params.key,
7895
8157
  {
7896
8158
  expand: this._parseParam(request.query.expand)
7897
8159
  }
7898
8160
  );
7899
- if (!result) return response.status(404).send();
7900
- return response.status(200).send(result);
8161
+ if (!result) {
8162
+ response.status(404).send();
8163
+ return;
8164
+ }
8165
+ response.status(200).send(result);
7901
8166
  }
7902
8167
  deleteWithId(request, response) {
7903
8168
  const result = this.repository.delete(
7904
8169
  getRepositoryContext(request),
7905
- request.params["id"],
8170
+ request.params.id,
7906
8171
  {
7907
8172
  expand: this._parseParam(request.query.expand)
7908
8173
  }
7909
8174
  );
7910
8175
  if (!result) {
7911
- return response.status(404).send("Not found");
8176
+ response.status(404).send("Not found");
8177
+ return;
7912
8178
  }
7913
- return response.status(200).send(result);
8179
+ response.status(200).send(result);
7914
8180
  }
7915
8181
  deleteWithKey(request, response) {
7916
8182
  const resource = this.repository.getByKey(
7917
8183
  getRepositoryContext(request),
7918
- request.params["key"]
8184
+ request.params.key
7919
8185
  );
7920
8186
  if (!resource) {
7921
- return response.status(404).send("Not found");
8187
+ response.status(404).send("Not found");
8188
+ return;
7922
8189
  }
7923
8190
  const result = this.repository.delete(
7924
8191
  getRepositoryContext(request),
@@ -7928,9 +8195,10 @@ var AbstractService = class {
7928
8195
  }
7929
8196
  );
7930
8197
  if (!result) {
7931
- return response.status(404).send("Not found");
8198
+ response.status(404).send("Not found");
8199
+ return;
7932
8200
  }
7933
- return response.status(200).send(result);
8201
+ response.status(200).send(result);
7934
8202
  }
7935
8203
  post(request, response) {
7936
8204
  const draft = request.body;
@@ -7939,7 +8207,7 @@ var AbstractService = class {
7939
8207
  draft
7940
8208
  );
7941
8209
  const result = this._expandWithId(request, resource.id);
7942
- return response.status(this.createStatusCode).send(result);
8210
+ response.status(this.createStatusCode).send(result);
7943
8211
  }
7944
8212
  postWithId(request, response) {
7945
8213
  const updateRequest = validateData(
@@ -7948,10 +8216,11 @@ var AbstractService = class {
7948
8216
  );
7949
8217
  const resource = this.repository.get(
7950
8218
  getRepositoryContext(request),
7951
- request.params["id"]
8219
+ request.params.id
7952
8220
  );
7953
8221
  if (!resource) {
7954
- return response.status(404).send("Not found");
8222
+ response.status(404).send("Not found");
8223
+ return;
7955
8224
  }
7956
8225
  const updatedResource = this.repository.processUpdateActions(
7957
8226
  getRepositoryContext(request),
@@ -7960,7 +8229,7 @@ var AbstractService = class {
7960
8229
  updateRequest.actions
7961
8230
  );
7962
8231
  const result = this._expandWithId(request, updatedResource.id);
7963
- return response.status(200).send(result);
8232
+ response.status(200).send(result);
7964
8233
  }
7965
8234
  postWithKey(request, response) {
7966
8235
  const updateRequest = validateData(
@@ -7969,10 +8238,11 @@ var AbstractService = class {
7969
8238
  );
7970
8239
  const resource = this.repository.getByKey(
7971
8240
  getRepositoryContext(request),
7972
- request.params["key"]
8241
+ request.params.key
7973
8242
  );
7974
8243
  if (!resource) {
7975
- return response.status(404).send("Not found");
8244
+ response.status(404).send("Not found");
8245
+ return;
7976
8246
  }
7977
8247
  const updatedResource = this.repository.processUpdateActions(
7978
8248
  getRepositoryContext(request),
@@ -7981,7 +8251,7 @@ var AbstractService = class {
7981
8251
  updateRequest.actions
7982
8252
  );
7983
8253
  const result = this._expandWithId(request, updatedResource.id);
7984
- return response.status(200).send(result);
8254
+ response.status(200).send(result);
7985
8255
  }
7986
8256
  _expandWithId(request, resourceId) {
7987
8257
  const result = this.repository.get(
@@ -8118,7 +8388,8 @@ var CartService = class extends AbstractService {
8118
8388
  const context = getRepositoryContext(request);
8119
8389
  const cartOrOrder = request.body.reference.typeId === "order" ? this.orderRepository.get(context, request.body.reference.id) : this.repository.get(context, request.body.reference.id);
8120
8390
  if (!cartOrOrder) {
8121
- return response.status(400).send();
8391
+ response.status(400).send();
8392
+ return;
8122
8393
  }
8123
8394
  const cartDraft = {
8124
8395
  ...cartOrOrder,
@@ -8133,7 +8404,7 @@ var CartService = class extends AbstractService {
8133
8404
  }))
8134
8405
  };
8135
8406
  const newCart = this.repository.create(context, cartDraft);
8136
- return response.status(200).send(newCart);
8407
+ response.status(200).send(newCart);
8137
8408
  }
8138
8409
  };
8139
8410
 
@@ -8205,7 +8476,7 @@ var CustomObjectService = class extends AbstractService {
8205
8476
  offset: offset !== void 0 ? Number(offset) : void 0
8206
8477
  }
8207
8478
  );
8208
- return response.status(200).send(result);
8479
+ response.status(200).send(result);
8209
8480
  }
8210
8481
  getWithContainerAndKey(request, response) {
8211
8482
  const result = this.repository.getWithContainerAndKey(
@@ -8214,9 +8485,10 @@ var CustomObjectService = class extends AbstractService {
8214
8485
  request.params.key
8215
8486
  );
8216
8487
  if (!result) {
8217
- return response.status(404).send("Not Found");
8488
+ response.status(404).send("Not Found");
8489
+ return;
8218
8490
  }
8219
- return response.status(200).send(result);
8491
+ response.status(200).send(result);
8220
8492
  }
8221
8493
  createWithContainerAndKey(request, response) {
8222
8494
  const draft = {
@@ -8225,7 +8497,7 @@ var CustomObjectService = class extends AbstractService {
8225
8497
  container: request.params.container
8226
8498
  };
8227
8499
  const result = this.repository.create(getRepositoryContext(request), draft);
8228
- return response.status(200).send(result);
8500
+ response.status(200).send(result);
8229
8501
  }
8230
8502
  deleteWithContainerAndKey(request, response) {
8231
8503
  const current = this.repository.getWithContainerAndKey(
@@ -8234,13 +8506,14 @@ var CustomObjectService = class extends AbstractService {
8234
8506
  request.params.key
8235
8507
  );
8236
8508
  if (!current) {
8237
- return response.status(404).send("Not Found");
8509
+ response.status(404).send("Not Found");
8510
+ return;
8238
8511
  }
8239
8512
  const result = this.repository.delete(
8240
8513
  getRepositoryContext(request),
8241
8514
  current.id
8242
8515
  );
8243
- return response.status(200).send(result);
8516
+ response.status(200).send(result);
8244
8517
  }
8245
8518
  };
8246
8519
 
@@ -8269,21 +8542,21 @@ var CustomerService = class extends AbstractService {
8269
8542
  const result = {
8270
8543
  customer: expanded
8271
8544
  };
8272
- return response.status(this.createStatusCode).send(result);
8545
+ response.status(this.createStatusCode).send(result);
8273
8546
  }
8274
8547
  passwordResetToken(request, response) {
8275
8548
  const customer = this.repository.passwordResetToken(
8276
8549
  getRepositoryContext(request),
8277
8550
  request.body
8278
8551
  );
8279
- return response.status(200).send(customer);
8552
+ response.status(200).send(customer);
8280
8553
  }
8281
8554
  passwordReset(request, response) {
8282
8555
  const customer = this.repository.passwordReset(
8283
8556
  getRepositoryContext(request),
8284
8557
  request.body
8285
8558
  );
8286
- return response.status(200).send(customer);
8559
+ response.status(200).send(customer);
8287
8560
  }
8288
8561
  confirmEmailToken(request, response) {
8289
8562
  const id = request.body.id;
@@ -8291,7 +8564,7 @@ var CustomerService = class extends AbstractService {
8291
8564
  getRepositoryContext(request),
8292
8565
  id
8293
8566
  );
8294
- return response.status(200).send(token);
8567
+ response.status(200).send(token);
8295
8568
  }
8296
8569
  };
8297
8570
 
@@ -8389,9 +8662,10 @@ var MyCartService = class extends AbstractService {
8389
8662
  activeCart(request, response) {
8390
8663
  const resource = this.repository.getActiveCart(request.params.projectKey);
8391
8664
  if (!resource) {
8392
- return response.status(404).send("Not found");
8665
+ response.status(404).send("Not found");
8666
+ return;
8393
8667
  }
8394
- return response.status(200).send(resource);
8668
+ response.status(200).send(resource);
8395
8669
  }
8396
8670
  };
8397
8671
 
@@ -8423,14 +8697,16 @@ var MyCustomerService = class extends AbstractService {
8423
8697
  getMe(request, response) {
8424
8698
  const resource = this.repository.getMe(getRepositoryContext(request));
8425
8699
  if (!resource) {
8426
- return response.status(404).send("Not found");
8700
+ response.status(404).send("Not found");
8701
+ return;
8427
8702
  }
8428
- return response.status(200).send(resource);
8703
+ response.status(200).send(resource);
8429
8704
  }
8430
8705
  updateMe(request, response) {
8431
8706
  const resource = this.repository.getMe(getRepositoryContext(request));
8432
8707
  if (!resource) {
8433
- return response.status(404).send("Not found");
8708
+ response.status(404).send("Not found");
8709
+ return;
8434
8710
  }
8435
8711
  const updateRequest = validateData(
8436
8712
  request.body,
@@ -8443,14 +8719,15 @@ var MyCustomerService = class extends AbstractService {
8443
8719
  updateRequest.actions
8444
8720
  );
8445
8721
  const result = this._expandWithId(request, updatedResource.id);
8446
- return response.status(200).send(result);
8722
+ response.status(200).send(result);
8447
8723
  }
8448
8724
  deleteMe(request, response) {
8449
8725
  const resource = this.repository.deleteMe(getRepositoryContext(request));
8450
8726
  if (!resource) {
8451
- return response.status(404).send("Not found");
8727
+ response.status(404).send("Not found");
8728
+ return;
8452
8729
  }
8453
- return response.status(200).send(resource);
8730
+ response.status(200).send(resource);
8454
8731
  }
8455
8732
  signUp(request, response) {
8456
8733
  const draft = request.body;
@@ -8459,28 +8736,28 @@ var MyCustomerService = class extends AbstractService {
8459
8736
  draft
8460
8737
  );
8461
8738
  const result = this._expandWithId(request, resource.id);
8462
- return response.status(this.createStatusCode).send({ customer: result });
8739
+ response.status(this.createStatusCode).send({ customer: result });
8463
8740
  }
8464
8741
  changePassword(request, response) {
8465
8742
  const customer = this.repository.changePassword(
8466
8743
  getRepositoryContext(request),
8467
8744
  request.body
8468
8745
  );
8469
- return response.status(200).send(customer);
8746
+ response.status(200).send(customer);
8470
8747
  }
8471
8748
  resetPassword(request, response) {
8472
8749
  const customer = this.repository.passwordReset(
8473
8750
  getRepositoryContext(request),
8474
8751
  request.body
8475
8752
  );
8476
- return response.status(200).send(customer);
8753
+ response.status(200).send(customer);
8477
8754
  }
8478
8755
  emailConfirm(request, response) {
8479
8756
  const customer = this.repository.confirmEmail(
8480
8757
  getRepositoryContext(request),
8481
8758
  request.body
8482
8759
  );
8483
- return response.status(200).send(customer);
8760
+ response.status(200).send(customer);
8484
8761
  }
8485
8762
  signIn(request, response) {
8486
8763
  const { email, password } = request.body;
@@ -8489,7 +8766,7 @@ var MyCustomerService = class extends AbstractService {
8489
8766
  where: [`email = "${email}"`, `password = "${encodedPassword}"`]
8490
8767
  });
8491
8768
  if (result.count === 0) {
8492
- return response.status(400).send({
8769
+ response.status(400).send({
8493
8770
  message: "Account with the given credentials not found.",
8494
8771
  errors: [
8495
8772
  {
@@ -8498,8 +8775,9 @@ var MyCustomerService = class extends AbstractService {
8498
8775
  }
8499
8776
  ]
8500
8777
  });
8778
+ return;
8501
8779
  }
8502
- return response.status(200).send({ customer: result.results[0] });
8780
+ response.status(200).send({ customer: result.results[0] });
8503
8781
  }
8504
8782
  };
8505
8783
 
@@ -8574,7 +8852,7 @@ var OrderService = class extends AbstractService {
8574
8852
  getRepositoryContext(request),
8575
8853
  importDraft
8576
8854
  );
8577
- return response.status(200).send(resource);
8855
+ response.status(200).send(resource);
8578
8856
  }
8579
8857
  getWithOrderNumber(request, response) {
8580
8858
  const resource = this.repository.getWithOrderNumber(
@@ -8584,9 +8862,10 @@ var OrderService = class extends AbstractService {
8584
8862
  request.query
8585
8863
  );
8586
8864
  if (resource) {
8587
- return response.status(200).send(resource);
8865
+ response.status(200).send(resource);
8866
+ return;
8588
8867
  }
8589
- return response.status(404).send("Not found");
8868
+ response.status(404).send("Not found");
8590
8869
  }
8591
8870
  };
8592
8871
 
@@ -8621,7 +8900,7 @@ var ProductService = class extends AbstractService {
8621
8900
  getRepositoryContext(request),
8622
8901
  searchBody
8623
8902
  );
8624
- return response.status(200).send(resource);
8903
+ response.status(200).send(resource);
8625
8904
  }
8626
8905
  };
8627
8906
 
@@ -8660,30 +8939,30 @@ var ProductProjectionService = class extends AbstractService {
8660
8939
  limit: limit !== void 0 ? Number(limit) : void 0,
8661
8940
  offset: offset !== void 0 ? Number(offset) : void 0
8662
8941
  });
8663
- return response.status(200).send(result);
8942
+ response.status(200).send(result);
8664
8943
  }
8665
8944
  search(request, response) {
8666
8945
  const query = request.query;
8667
8946
  const searchParams = {
8668
- "filter": queryParamsArray(query.filter),
8947
+ filter: queryParamsArray(query.filter),
8669
8948
  "filter.query": queryParamsArray(query["filter.query"]),
8670
- "facet": queryParamsArray(query.facet),
8671
- "expand": queryParamsArray(query.expand),
8672
- "staged": queryParamsValue(query.staged) === "true",
8673
- "localeProjection": queryParamsValue(query.localeProjection),
8674
- "storeProjection": queryParamsValue(query.storeProjection),
8675
- "priceChannel": queryParamsValue(query.priceChannel),
8676
- "priceCountry": queryParamsValue(query.priceCountry),
8677
- "priceCurrency": queryParamsValue(query.priceCurrency),
8678
- "priceCustomerGroup": queryParamsValue(query.priceCustomerGroup),
8679
- "offset": query.offset ? Number(queryParamsValue(query.offset)) : void 0,
8680
- "limit": query.limit ? Number(queryParamsValue(query.limit)) : void 0
8949
+ facet: queryParamsArray(query.facet),
8950
+ expand: queryParamsArray(query.expand),
8951
+ staged: queryParamsValue(query.staged) === "true",
8952
+ localeProjection: queryParamsValue(query.localeProjection),
8953
+ storeProjection: queryParamsValue(query.storeProjection),
8954
+ priceChannel: queryParamsValue(query.priceChannel),
8955
+ priceCountry: queryParamsValue(query.priceCountry),
8956
+ priceCurrency: queryParamsValue(query.priceCurrency),
8957
+ priceCustomerGroup: queryParamsValue(query.priceCustomerGroup),
8958
+ offset: query.offset ? Number(queryParamsValue(query.offset)) : void 0,
8959
+ limit: query.limit ? Number(queryParamsValue(query.limit)) : void 0
8681
8960
  };
8682
8961
  const resource = this.repository.search(
8683
8962
  getRepositoryContext(request),
8684
8963
  searchParams
8685
8964
  );
8686
- return response.status(200).send(resource);
8965
+ response.status(200).send(resource);
8687
8966
  }
8688
8967
  };
8689
8968
 
@@ -8711,6 +8990,42 @@ var ProductTypeService = class extends AbstractService {
8711
8990
  }
8712
8991
  };
8713
8992
 
8993
+ // src/services/quote.ts
8994
+ var QuoteService = class extends AbstractService {
8995
+ repository;
8996
+ constructor(parent, repository) {
8997
+ super(parent);
8998
+ this.repository = repository;
8999
+ }
9000
+ getBasePath() {
9001
+ return "quotes";
9002
+ }
9003
+ };
9004
+
9005
+ // src/services/quote-request.ts
9006
+ var QuoteRequestService = class extends AbstractService {
9007
+ repository;
9008
+ constructor(parent, repository) {
9009
+ super(parent);
9010
+ this.repository = repository;
9011
+ }
9012
+ getBasePath() {
9013
+ return "quote-requests";
9014
+ }
9015
+ };
9016
+
9017
+ // src/services/quote-staged.ts
9018
+ var StagedQuoteService = class extends AbstractService {
9019
+ repository;
9020
+ constructor(parent, repository) {
9021
+ super(parent);
9022
+ this.repository = repository;
9023
+ }
9024
+ getBasePath() {
9025
+ return "staged-quotes";
9026
+ }
9027
+ };
9028
+
8714
9029
  // src/services/reviews.ts
8715
9030
  var ReviewService = class extends AbstractService {
8716
9031
  repository;
@@ -8740,7 +9055,8 @@ var ShippingMethodService = class extends AbstractService {
8740
9055
  matchingCart(request, response) {
8741
9056
  const cartId = queryParamsValue(request.query.cartId);
8742
9057
  if (!cartId) {
8743
- return response.status(400).send();
9058
+ response.status(400).send();
9059
+ return;
8744
9060
  }
8745
9061
  const result = this.repository.matchingCart(
8746
9062
  getRepositoryContext(request),
@@ -8749,7 +9065,8 @@ var ShippingMethodService = class extends AbstractService {
8749
9065
  expand: this._parseParam(request.query.expand)
8750
9066
  }
8751
9067
  );
8752
- return response.status(200).send(result);
9068
+ response.status(200).send(result);
9069
+ return;
8753
9070
  }
8754
9071
  };
8755
9072
 
@@ -8854,14 +9171,14 @@ var createServices = (router, repos) => ({
8854
9171
  "associate-role": new AssociateRoleServices(router, repos["associate-role"]),
8855
9172
  "as-associate": new AsAssociateService(router, repos["as-associate"]),
8856
9173
  "business-unit": new BusinessUnitServices(router, repos["business-unit"]),
8857
- "category": new CategoryServices(router, repos["category"]),
8858
- "cart": new CartService(router, repos["cart"], repos["order"]),
9174
+ category: new CategoryServices(router, repos.category),
9175
+ cart: new CartService(router, repos.cart, repos.order),
8859
9176
  "cart-discount": new CartDiscountService(router, repos["cart-discount"]),
8860
- "customer": new CustomerService(router, repos["customer"]),
8861
- "channel": new ChannelService(router, repos["channel"]),
9177
+ customer: new CustomerService(router, repos.customer),
9178
+ channel: new ChannelService(router, repos.channel),
8862
9179
  "customer-group": new CustomerGroupService(router, repos["customer-group"]),
8863
9180
  "discount-code": new DiscountCodeService(router, repos["discount-code"]),
8864
- "extension": new ExtensionServices(router, repos["extension"]),
9181
+ extension: new ExtensionServices(router, repos.extension),
8865
9182
  "inventory-entry": new InventoryEntryService(
8866
9183
  router,
8867
9184
  repos["inventory-entry"]
@@ -8870,8 +9187,8 @@ var createServices = (router, repos) => ({
8870
9187
  router,
8871
9188
  repos["key-value-document"]
8872
9189
  ),
8873
- "order": new OrderService(router, repos["order"]),
8874
- "payment": new PaymentService(router, repos["payment"]),
9190
+ order: new OrderService(router, repos.order),
9191
+ payment: new PaymentService(router, repos.payment),
8875
9192
  "standalone-price": new StandAlonePriceService(
8876
9193
  router,
8877
9194
  repos["standalone-price"]
@@ -8890,7 +9207,7 @@ var createServices = (router, repos) => ({
8890
9207
  repos["shipping-method"]
8891
9208
  ),
8892
9209
  "product-type": new ProductTypeService(router, repos["product-type"]),
8893
- "product": new ProductService(router, repos["product"]),
9210
+ product: new ProductService(router, repos.product),
8894
9211
  "product-discount": new ProductDiscountService(
8895
9212
  router,
8896
9213
  repos["product-discount"]
@@ -8903,18 +9220,21 @@ var createServices = (router, repos) => ({
8903
9220
  router,
8904
9221
  repos["product-selection"]
8905
9222
  ),
8906
- "reviews": new ReviewService(router, repos["review"]),
9223
+ quotes: new QuoteService(router, repos.quote),
9224
+ "quote-request": new QuoteRequestService(router, repos["quote-request"]),
9225
+ reviews: new ReviewService(router, repos.review),
8907
9226
  "shopping-list": new ShoppingListService(router, repos["shopping-list"]),
8908
- "state": new StateService(router, repos["state"]),
8909
- "store": new StoreService(router, repos["store"]),
8910
- "subscription": new SubscriptionService(router, repos["subscription"]),
9227
+ "staged-quote": new StagedQuoteService(router, repos["staged-quote"]),
9228
+ state: new StateService(router, repos.state),
9229
+ store: new StoreService(router, repos.store),
9230
+ subscription: new SubscriptionService(router, repos.subscription),
8911
9231
  "tax-category": new TaxCategoryService(router, repos["tax-category"]),
8912
9232
  "attribute-group": new AttributeGroupService(
8913
9233
  router,
8914
9234
  repos["attribute-group"]
8915
9235
  ),
8916
- "type": new TypeService(router, repos["type"]),
8917
- "zone": new ZoneService(router, repos["zone"])
9236
+ type: new TypeService(router, repos.type),
9237
+ zone: new ZoneService(router, repos.zone)
8918
9238
  });
8919
9239
 
8920
9240
  // src/services/project.ts
@@ -8930,7 +9250,7 @@ var ProjectService = class {
8930
9250
  }
8931
9251
  get(request, response) {
8932
9252
  const project = this.repository.get(getRepositoryContext(request));
8933
- return response.status(200).send(project);
9253
+ response.status(200).send(project);
8934
9254
  }
8935
9255
  post(request, response) {
8936
9256
  const updateRequest = validateData(
@@ -8939,7 +9259,8 @@ var ProjectService = class {
8939
9259
  );
8940
9260
  const project = this.repository.get(getRepositoryContext(request));
8941
9261
  if (!project) {
8942
- return response.status(404).send({});
9262
+ response.status(404).send({});
9263
+ return;
8943
9264
  }
8944
9265
  const updatedResource = this.repository.processUpdateActions(
8945
9266
  getRepositoryContext(request),
@@ -8947,7 +9268,7 @@ var ProjectService = class {
8947
9268
  updateRequest.version,
8948
9269
  updateRequest.actions
8949
9270
  );
8950
- return response.status(200).send(updatedResource);
9271
+ response.status(200).send(updatedResource);
8951
9272
  }
8952
9273
  };
8953
9274
 
@@ -8956,7 +9277,7 @@ var AbstractStorage = class {
8956
9277
  };
8957
9278
 
8958
9279
  // src/storage/in-memory.ts
8959
- var import_assert3 = __toESM(require("assert"), 1);
9280
+ var import_node_assert5 = __toESM(require("assert"), 1);
8960
9281
  var InMemoryStorage = class extends AbstractStorage {
8961
9282
  resources = {};
8962
9283
  projects = {};
@@ -9052,38 +9373,38 @@ var InMemoryStorage = class extends AbstractStorage {
9052
9373
  "associate-role": /* @__PURE__ */ new Map(),
9053
9374
  "attribute-group": /* @__PURE__ */ new Map(),
9054
9375
  "business-unit": /* @__PURE__ */ new Map(),
9055
- "cart": /* @__PURE__ */ new Map(),
9376
+ cart: /* @__PURE__ */ new Map(),
9056
9377
  "cart-discount": /* @__PURE__ */ new Map(),
9057
- "category": /* @__PURE__ */ new Map(),
9058
- "channel": /* @__PURE__ */ new Map(),
9059
- "customer": /* @__PURE__ */ new Map(),
9378
+ category: /* @__PURE__ */ new Map(),
9379
+ channel: /* @__PURE__ */ new Map(),
9380
+ customer: /* @__PURE__ */ new Map(),
9060
9381
  "customer-group": /* @__PURE__ */ new Map(),
9061
9382
  "discount-code": /* @__PURE__ */ new Map(),
9062
- "extension": /* @__PURE__ */ new Map(),
9383
+ extension: /* @__PURE__ */ new Map(),
9063
9384
  "inventory-entry": /* @__PURE__ */ new Map(),
9064
9385
  "key-value-document": /* @__PURE__ */ new Map(),
9065
- "order": /* @__PURE__ */ new Map(),
9386
+ order: /* @__PURE__ */ new Map(),
9066
9387
  "order-edit": /* @__PURE__ */ new Map(),
9067
- "payment": /* @__PURE__ */ new Map(),
9068
- "product": /* @__PURE__ */ new Map(),
9069
- "quote": /* @__PURE__ */ new Map(),
9388
+ payment: /* @__PURE__ */ new Map(),
9389
+ product: /* @__PURE__ */ new Map(),
9390
+ quote: /* @__PURE__ */ new Map(),
9070
9391
  "quote-request": /* @__PURE__ */ new Map(),
9071
9392
  "product-discount": /* @__PURE__ */ new Map(),
9072
9393
  "product-selection": /* @__PURE__ */ new Map(),
9073
9394
  "product-type": /* @__PURE__ */ new Map(),
9074
9395
  "product-projection": /* @__PURE__ */ new Map(),
9075
9396
  "product-tailoring": /* @__PURE__ */ new Map(),
9076
- "review": /* @__PURE__ */ new Map(),
9397
+ review: /* @__PURE__ */ new Map(),
9077
9398
  "shipping-method": /* @__PURE__ */ new Map(),
9078
9399
  "staged-quote": /* @__PURE__ */ new Map(),
9079
- "state": /* @__PURE__ */ new Map(),
9080
- "store": /* @__PURE__ */ new Map(),
9400
+ state: /* @__PURE__ */ new Map(),
9401
+ store: /* @__PURE__ */ new Map(),
9081
9402
  "shopping-list": /* @__PURE__ */ new Map(),
9082
9403
  "standalone-price": /* @__PURE__ */ new Map(),
9083
- "subscription": /* @__PURE__ */ new Map(),
9404
+ subscription: /* @__PURE__ */ new Map(),
9084
9405
  "tax-category": /* @__PURE__ */ new Map(),
9085
- "type": /* @__PURE__ */ new Map(),
9086
- "zone": /* @__PURE__ */ new Map()
9406
+ type: /* @__PURE__ */ new Map(),
9407
+ zone: /* @__PURE__ */ new Map()
9087
9408
  };
9088
9409
  }
9089
9410
  return projectStorage;
@@ -9106,7 +9427,7 @@ var InMemoryStorage = class extends AbstractStorage {
9106
9427
  const store = this.forProjectKey(projectKey);
9107
9428
  store[typeId]?.set(obj.id, obj);
9108
9429
  const resource = this.get(projectKey, typeId, obj.id, params);
9109
- (0, import_assert3.default)(
9430
+ (0, import_node_assert5.default)(
9110
9431
  resource,
9111
9432
  `resource of type ${typeId} with id ${obj.id} not created`
9112
9433
  );
@@ -9393,23 +9714,25 @@ var CommercetoolsMock = class {
9393
9714
  app.use((err, req, resp, next) => {
9394
9715
  if (err instanceof CommercetoolsError) {
9395
9716
  if (err.errors?.length > 0) {
9396
- return resp.status(err.statusCode).send({
9717
+ resp.status(err.statusCode).send({
9397
9718
  statusCode: err.statusCode,
9398
9719
  message: err.message,
9399
9720
  errors: err.errors
9400
9721
  });
9722
+ return;
9401
9723
  }
9402
- return resp.status(err.statusCode).send({
9724
+ resp.status(err.statusCode).send({
9403
9725
  statusCode: err.statusCode,
9404
9726
  message: err.message,
9405
9727
  errors: [err.info]
9406
9728
  });
9407
- } else {
9408
- console.error(err);
9409
- return resp.status(500).send({
9410
- error: err.message
9411
- });
9729
+ return;
9412
9730
  }
9731
+ console.error(err);
9732
+ resp.status(500).send({
9733
+ error: err.message
9734
+ });
9735
+ return;
9413
9736
  });
9414
9737
  return app;
9415
9738
  }
@@ -9427,7 +9750,7 @@ var CommercetoolsMock = class {
9427
9750
  const body = await request.text();
9428
9751
  const url = new URL(request.url);
9429
9752
  const headers = copyHeaders(request.headers);
9430
- const res = await (0, import_light_my_request.default)(app).post(url.pathname + "?" + url.searchParams.toString()).body(body).headers(headers).end();
9753
+ const res = await (0, import_light_my_request.default)(app).post(`${url.pathname}?${url.searchParams.toString()}`).body(body).headers(headers).end();
9431
9754
  return new import_msw.HttpResponse(res.body, {
9432
9755
  status: res.statusCode,
9433
9756
  headers: mapHeaderType(res.headers)
@@ -9437,7 +9760,7 @@ var CommercetoolsMock = class {
9437
9760
  const body = await request.text();
9438
9761
  const url = new URL(request.url);
9439
9762
  const headers = copyHeaders(request.headers);
9440
- const res = await (0, import_light_my_request.default)(app).get(url.pathname + "?" + url.searchParams.toString()).body(body).headers(headers).end();
9763
+ const res = await (0, import_light_my_request.default)(app).get(`${url.pathname}?${url.searchParams.toString()}`).body(body).headers(headers).end();
9441
9764
  if (res.statusCode === 200) {
9442
9765
  const parsedBody = JSON.parse(res.body);
9443
9766
  const resultCount = "count" in parsedBody ? parsedBody.count : Object.keys(parsedBody).length;
@@ -9455,7 +9778,7 @@ var CommercetoolsMock = class {
9455
9778
  const body = await request.text();
9456
9779
  const url = new URL(request.url);
9457
9780
  const headers = copyHeaders(request.headers);
9458
- const res = await (0, import_light_my_request.default)(app).get(url.pathname + "?" + url.searchParams.toString()).body(body).headers(headers).end();
9781
+ const res = await (0, import_light_my_request.default)(app).get(`${url.pathname}?${url.searchParams.toString()}`).body(body).headers(headers).end();
9459
9782
  return new import_msw.HttpResponse(res.body, {
9460
9783
  status: res.statusCode,
9461
9784
  headers: mapHeaderType(res.headers)
@@ -9465,7 +9788,7 @@ var CommercetoolsMock = class {
9465
9788
  const body = await request.text();
9466
9789
  const url = new URL(request.url);
9467
9790
  const headers = copyHeaders(request.headers);
9468
- const res = await (0, import_light_my_request.default)(app).post(url.pathname + "?" + url.searchParams.toString()).body(body).headers(headers).end();
9791
+ const res = await (0, import_light_my_request.default)(app).post(`${url.pathname}?${url.searchParams.toString()}`).body(body).headers(headers).end();
9469
9792
  return new import_msw.HttpResponse(res.body, {
9470
9793
  status: res.statusCode,
9471
9794
  headers: mapHeaderType(res.headers)
@@ -9475,7 +9798,7 @@ var CommercetoolsMock = class {
9475
9798
  const body = await request.text();
9476
9799
  const url = new URL(request.url);
9477
9800
  const headers = copyHeaders(request.headers);
9478
- const res = await (0, import_light_my_request.default)(app).delete(url.pathname + "?" + url.searchParams.toString()).body(body).headers(headers).end();
9801
+ const res = await (0, import_light_my_request.default)(app).delete(`${url.pathname}?${url.searchParams.toString()}`).body(body).headers(headers).end();
9479
9802
  return new import_msw.HttpResponse(res.body, {
9480
9803
  status: res.statusCode,
9481
9804
  headers: mapHeaderType(res.headers)
@@ -9490,10 +9813,9 @@ var CommercetoolsMock = class {
9490
9813
  if (_globalListeners.length > 0) {
9491
9814
  if (this._mswServer !== void 0) {
9492
9815
  throw new Error("Server already started");
9493
- } else {
9494
- process.emitWarning("Server wasn't stopped properly, clearing");
9495
- _globalListeners.forEach((listener) => listener.close());
9496
9816
  }
9817
+ process.emitWarning("Server wasn't stopped properly, clearing");
9818
+ _globalListeners.forEach((listener) => listener.close());
9497
9819
  }
9498
9820
  const server = (0, import_node.setupServer)();
9499
9821
  this.registerHandlers(server);