@labdigital/commercetools-mock 2.46.0 → 2.47.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.cjs +568 -241
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +782 -58
- package/dist/index.d.ts +782 -58
- package/dist/index.js +556 -229
- package/dist/index.js.map +1 -1
- package/package.json +41 -48
- package/src/ctMock.ts +11 -13
- package/src/index.test.ts +5 -5
- package/src/lib/predicateParser.test.ts +62 -62
- package/src/lib/predicateParser.ts +32 -42
- package/src/lib/productSearchFilter.test.ts +18 -0
- package/src/lib/productSearchFilter.ts +7 -0
- package/src/lib/projectionSearchFilter.test.ts +17 -17
- package/src/lib/projectionSearchFilter.ts +2 -3
- package/src/oauth/server.test.ts +1 -1
- package/src/oauth/server.ts +11 -11
- package/src/priceSelector.ts +1 -1
- package/src/product-projection-search.ts +18 -19
- package/src/repositories/business-unit.ts +17 -16
- package/src/repositories/cart/actions.ts +32 -32
- package/src/repositories/cart/helpers.ts +1 -1
- package/src/repositories/cart/index.ts +8 -8
- package/src/repositories/cart-discount/actions.ts +1 -4
- package/src/repositories/category/actions.ts +2 -6
- package/src/repositories/custom-object.ts +20 -21
- package/src/repositories/customer/actions.ts +4 -4
- package/src/repositories/errors.ts +1 -1
- package/src/repositories/extension.ts +2 -1
- package/src/repositories/helpers.ts +27 -27
- package/src/repositories/index.ts +17 -17
- package/src/repositories/my-customer.ts +1 -1
- package/src/repositories/my-order.ts +2 -2
- package/src/repositories/order/index.ts +1 -1
- package/src/repositories/product/actions.ts +1 -1
- package/src/repositories/quote/actions.ts +83 -0
- package/src/repositories/quote/index.ts +54 -0
- package/src/repositories/quote-request/actions.ts +84 -0
- package/src/repositories/quote-request/index.test.ts +167 -0
- package/src/repositories/quote-request/index.ts +67 -0
- package/src/repositories/quote-staged/actions.ts +84 -0
- package/src/repositories/quote-staged/index.ts +47 -0
- package/src/repositories/review.ts +4 -4
- package/src/repositories/shipping-method/actions.ts +17 -17
- package/src/repositories/shipping-method/index.ts +6 -6
- package/src/repositories/shopping-list/actions.ts +1 -1
- package/src/repositories/shopping-list/index.ts +9 -1
- package/src/repositories/subscription.ts +2 -4
- package/src/server.ts +3 -2
- package/src/services/abstract.ts +7 -7
- package/src/services/as-associate-order.test.ts +1 -1
- package/src/services/cart-discount.test.ts +1 -1
- package/src/services/cart.test.ts +15 -15
- package/src/services/category.test.ts +1 -1
- package/src/services/customer.test.ts +4 -4
- package/src/services/customer.ts +1 -1
- package/src/services/index.ts +20 -14
- package/src/services/inventory-entry.test.ts +5 -5
- package/src/services/my-cart.test.ts +2 -2
- package/src/services/my-customer.test.ts +2 -2
- package/src/services/order.test.ts +8 -8
- package/src/services/product-projection.test.ts +5 -5
- package/src/services/product-projection.ts +12 -14
- package/src/services/product.test.ts +1 -1
- package/src/services/quote-request.test.ts +59 -0
- package/src/services/quote-request.ts +16 -0
- package/src/services/quote-staged.ts +16 -0
- package/src/services/quote.ts +16 -0
- package/src/services/standalone-price.test.ts +4 -4
- package/src/services/state.test.ts +1 -1
- package/src/services/store.test.ts +2 -2
- package/src/services/tax-category.test.ts +1 -1
- package/src/shipping.ts +3 -3
- package/src/storage/in-memory.ts +55 -63
- package/src/testing/customer.ts +1 -1
- package/src/types.ts +51 -31
- package/src/repositories/quote-request.ts +0 -17
- package/src/repositories/quote.ts +0 -14
- package/src/repositories/staged-quote.ts +0 -17
package/dist/index.cjs
CHANGED
|
@@ -246,7 +246,8 @@ var OAuth2Store = class {
|
|
|
246
246
|
};
|
|
247
247
|
}
|
|
248
248
|
validateToken(token) {
|
|
249
|
-
if (!this.validate)
|
|
249
|
+
if (!this.validate)
|
|
250
|
+
return true;
|
|
250
251
|
const foundToken = this.tokens.find((t) => t.access_token === token);
|
|
251
252
|
if (foundToken) {
|
|
252
253
|
return true;
|
|
@@ -380,7 +381,8 @@ var OAuth2Server = class {
|
|
|
380
381
|
request.query.scope?.toString()
|
|
381
382
|
);
|
|
382
383
|
return response.status(200).send(token);
|
|
383
|
-
}
|
|
384
|
+
}
|
|
385
|
+
if (grantType === "refresh_token") {
|
|
384
386
|
const refreshToken = request.query.refresh_token?.toString() || request.body.refresh_token;
|
|
385
387
|
if (!refreshToken) {
|
|
386
388
|
return next(
|
|
@@ -412,17 +414,16 @@ var OAuth2Server = class {
|
|
|
412
414
|
);
|
|
413
415
|
}
|
|
414
416
|
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
|
-
);
|
|
425
417
|
}
|
|
418
|
+
return next(
|
|
419
|
+
new CommercetoolsError(
|
|
420
|
+
{
|
|
421
|
+
code: "unsupported_grant_type",
|
|
422
|
+
message: `Invalid parameter: grant_type: Invalid grant type: ${grantType}`
|
|
423
|
+
},
|
|
424
|
+
400
|
|
425
|
+
)
|
|
426
|
+
);
|
|
426
427
|
}
|
|
427
428
|
async customerTokenHandler(request, response, next) {
|
|
428
429
|
const projectKey = request.params.projectKey;
|
|
@@ -589,7 +590,8 @@ var import_deep_equal = __toESM(require("deep-equal"), 1);
|
|
|
589
590
|
|
|
590
591
|
// src/repositories/errors.ts
|
|
591
592
|
var checkConcurrentModification = (currentVersion, expectedVersion, identifier) => {
|
|
592
|
-
if (currentVersion === expectedVersion)
|
|
593
|
+
if (currentVersion === expectedVersion)
|
|
594
|
+
return;
|
|
593
595
|
throw new CommercetoolsError(
|
|
594
596
|
{
|
|
595
597
|
message: `Object ${identifier} has a different version than expected. Expected: ${expectedVersion} - Actual: ${currentVersion}.`,
|
|
@@ -780,7 +782,8 @@ var import_uuid6 = require("uuid");
|
|
|
780
782
|
var import_decimal = require("decimal.js/decimal");
|
|
781
783
|
var import_uuid4 = require("uuid");
|
|
782
784
|
var createAddress = (base, projectKey, storage) => {
|
|
783
|
-
if (!base)
|
|
785
|
+
if (!base)
|
|
786
|
+
return void 0;
|
|
784
787
|
if (!base?.country) {
|
|
785
788
|
throw new Error("Country is required");
|
|
786
789
|
}
|
|
@@ -789,9 +792,12 @@ var createAddress = (base, projectKey, storage) => {
|
|
|
789
792
|
};
|
|
790
793
|
};
|
|
791
794
|
var createCustomFields = (draft, projectKey, storage) => {
|
|
792
|
-
if (!draft)
|
|
793
|
-
|
|
794
|
-
if (!draft.type
|
|
795
|
+
if (!draft)
|
|
796
|
+
return void 0;
|
|
797
|
+
if (!draft.type)
|
|
798
|
+
return void 0;
|
|
799
|
+
if (!draft.type.typeId)
|
|
800
|
+
return void 0;
|
|
795
801
|
const typeResource = storage.getByResourceIdentifier(
|
|
796
802
|
projectKey,
|
|
797
803
|
draft.type
|
|
@@ -874,7 +880,8 @@ var createTypedMoney = (value) => {
|
|
|
874
880
|
return result;
|
|
875
881
|
};
|
|
876
882
|
var resolveStoreReference = (ref, projectKey, storage) => {
|
|
877
|
-
if (!ref)
|
|
883
|
+
if (!ref)
|
|
884
|
+
return void 0;
|
|
878
885
|
const resource = storage.getByResourceIdentifier(projectKey, ref);
|
|
879
886
|
if (!resource) {
|
|
880
887
|
throw new Error("No such store");
|
|
@@ -942,7 +949,8 @@ var getRepositoryContext = (request) => ({
|
|
|
942
949
|
storeKey: request.params.storeKey
|
|
943
950
|
});
|
|
944
951
|
var createAssociate = (a, projectKey, storage) => {
|
|
945
|
-
if (!a)
|
|
952
|
+
if (!a)
|
|
953
|
+
return void 0;
|
|
946
954
|
if (!a.associateRoleAssignments) {
|
|
947
955
|
throw new Error("AssociateRoleAssignments is required");
|
|
948
956
|
}
|
|
@@ -1029,10 +1037,6 @@ var markMatchingShippingRatePriceTiers = (cart, tiers) => {
|
|
|
1029
1037
|
switch (tierType) {
|
|
1030
1038
|
case "CartValue":
|
|
1031
1039
|
return markMatchingCartValueTiers(cart, tiers);
|
|
1032
|
-
// case 'CartClassification':
|
|
1033
|
-
// return markMatchingCartClassificationTiers(cart, tiers)
|
|
1034
|
-
// case 'CartScore':
|
|
1035
|
-
// return markMatchingCartScoreTiers(cart, tiers)
|
|
1036
1040
|
default:
|
|
1037
1041
|
throw new Error(`Unsupported tier type: ${tierType}`);
|
|
1038
1042
|
}
|
|
@@ -1045,7 +1049,8 @@ var markMatchingCartValueTiers = (cart, tiers) => {
|
|
|
1045
1049
|
let hasMatchingTier = false;
|
|
1046
1050
|
for (const tier of sortedTiers) {
|
|
1047
1051
|
const isMatching = !hasMatchingTier && cart.totalPrice.currencyCode === tier.price.currencyCode && cart.totalPrice.centAmount >= tier.minimumCentAmount;
|
|
1048
|
-
if (isMatching)
|
|
1052
|
+
if (isMatching)
|
|
1053
|
+
hasMatchingTier = true;
|
|
1049
1054
|
result[tier.minimumCentAmount] = {
|
|
1050
1055
|
...tier,
|
|
1051
1056
|
isMatching
|
|
@@ -1069,12 +1074,12 @@ var getShippingMethodsMatchingCart = (context, storage, cart, params = {}) => {
|
|
|
1069
1074
|
context.projectKey,
|
|
1070
1075
|
"shipping-method",
|
|
1071
1076
|
{
|
|
1072
|
-
|
|
1073
|
-
|
|
1077
|
+
where: [
|
|
1078
|
+
"zoneRates(zone(id in (:zoneIds)))",
|
|
1074
1079
|
`zoneRates(shippingRates(price(currencyCode="${cart.totalPrice.currencyCode}")))`
|
|
1075
1080
|
],
|
|
1076
1081
|
"var.zoneIds": zoneIds,
|
|
1077
|
-
|
|
1082
|
+
expand: params.expand
|
|
1078
1083
|
}
|
|
1079
1084
|
);
|
|
1080
1085
|
const results = shippingMethods.results.map((shippingMethod) => {
|
|
@@ -1110,7 +1115,7 @@ var selectPrice = ({
|
|
|
1110
1115
|
return countryMatch && currencyMatch;
|
|
1111
1116
|
});
|
|
1112
1117
|
};
|
|
1113
|
-
var calculateLineItemTotalPrice = (lineItem) => lineItem.price
|
|
1118
|
+
var calculateLineItemTotalPrice = (lineItem) => lineItem.price?.value.centAmount * lineItem.quantity;
|
|
1114
1119
|
var calculateCartTotalPrice = (cart) => cart.lineItems.reduce((cur, item) => cur + item.totalPrice.centAmount, 0);
|
|
1115
1120
|
|
|
1116
1121
|
// src/repositories/cart/actions.ts
|
|
@@ -1157,8 +1162,10 @@ var CartUpdateHandler = class extends AbstractUpdateHandler {
|
|
|
1157
1162
|
product.masterData.current.masterVariant,
|
|
1158
1163
|
...product.masterData.current.variants
|
|
1159
1164
|
].find((x) => {
|
|
1160
|
-
if (sku)
|
|
1161
|
-
|
|
1165
|
+
if (sku)
|
|
1166
|
+
return x.sku === sku;
|
|
1167
|
+
if (variantId)
|
|
1168
|
+
return x.id === variantId;
|
|
1162
1169
|
return false;
|
|
1163
1170
|
});
|
|
1164
1171
|
if (!variant) {
|
|
@@ -1244,7 +1251,7 @@ var CartUpdateHandler = class extends AbstractUpdateHandler {
|
|
|
1244
1251
|
} else {
|
|
1245
1252
|
throw new CommercetoolsError({
|
|
1246
1253
|
code: "General",
|
|
1247
|
-
message:
|
|
1254
|
+
message: "Either lineItemid or lineItemKey needs to be provided."
|
|
1248
1255
|
});
|
|
1249
1256
|
}
|
|
1250
1257
|
if (quantity === 0) {
|
|
@@ -1511,7 +1518,7 @@ var CartUpdateHandler = class extends AbstractUpdateHandler {
|
|
|
1511
1518
|
});
|
|
1512
1519
|
}
|
|
1513
1520
|
const zoneRate = method.zoneRates.find(
|
|
1514
|
-
(rate) => rate.zone.obj
|
|
1521
|
+
(rate) => rate.zone.obj?.locations.some((loc) => loc.country === country)
|
|
1515
1522
|
);
|
|
1516
1523
|
if (!zoneRate) {
|
|
1517
1524
|
throw new Error("Zone rate not found");
|
|
@@ -1686,8 +1693,10 @@ var CartRepository = class extends AbstractResourceRepository {
|
|
|
1686
1693
|
product.masterData.current.masterVariant,
|
|
1687
1694
|
...product.masterData.current.variants
|
|
1688
1695
|
].find((x) => {
|
|
1689
|
-
if (sku)
|
|
1690
|
-
|
|
1696
|
+
if (sku)
|
|
1697
|
+
return x.sku === sku;
|
|
1698
|
+
if (variantId)
|
|
1699
|
+
return x.id === variantId;
|
|
1691
1700
|
return false;
|
|
1692
1701
|
});
|
|
1693
1702
|
if (!variant) {
|
|
@@ -1729,7 +1738,7 @@ var CartRepository = class extends AbstractResourceRepository {
|
|
|
1729
1738
|
};
|
|
1730
1739
|
|
|
1731
1740
|
// src/repositories/order/index.ts
|
|
1732
|
-
var
|
|
1741
|
+
var import_node_assert = __toESM(require("assert"), 1);
|
|
1733
1742
|
|
|
1734
1743
|
// src/repositories/order/actions.ts
|
|
1735
1744
|
var OrderUpdateHandler = class extends AbstractUpdateHandler {
|
|
@@ -1869,7 +1878,8 @@ var OrderUpdateHandler = class extends AbstractUpdateHandler {
|
|
|
1869
1878
|
);
|
|
1870
1879
|
}
|
|
1871
1880
|
setStore(context, resource, { store }) {
|
|
1872
|
-
if (!store)
|
|
1881
|
+
if (!store)
|
|
1882
|
+
return;
|
|
1873
1883
|
const resolvedType = this._storage.getByResourceIdentifier(
|
|
1874
1884
|
context.projectKey,
|
|
1875
1885
|
store
|
|
@@ -1900,7 +1910,8 @@ var OrderUpdateHandler = class extends AbstractUpdateHandler {
|
|
|
1900
1910
|
};
|
|
1901
1911
|
}
|
|
1902
1912
|
updateSyncInfo(context, resource, { channel, externalId, syncedAt }) {
|
|
1903
|
-
if (!channel)
|
|
1913
|
+
if (!channel)
|
|
1914
|
+
return;
|
|
1904
1915
|
const resolvedType = this._storage.getByResourceIdentifier(
|
|
1905
1916
|
context.projectKey,
|
|
1906
1917
|
channel
|
|
@@ -1934,7 +1945,7 @@ var OrderRepository = class extends AbstractResourceRepository {
|
|
|
1934
1945
|
this.actions = new OrderUpdateHandler(config.storage);
|
|
1935
1946
|
}
|
|
1936
1947
|
create(context, draft) {
|
|
1937
|
-
(0,
|
|
1948
|
+
(0, import_node_assert.default)(draft.cart, "draft.cart is missing");
|
|
1938
1949
|
return this.createFromCart(
|
|
1939
1950
|
context,
|
|
1940
1951
|
{
|
|
@@ -1989,7 +2000,7 @@ var OrderRepository = class extends AbstractResourceRepository {
|
|
|
1989
2000
|
return this.saveNew(context, resource);
|
|
1990
2001
|
}
|
|
1991
2002
|
import(context, draft) {
|
|
1992
|
-
(0,
|
|
2003
|
+
(0, import_node_assert.default)(this, "OrderRepository not valid");
|
|
1993
2004
|
const resource = {
|
|
1994
2005
|
...getBaseResourceProperties(),
|
|
1995
2006
|
billingAddress: createAddress(
|
|
@@ -2296,7 +2307,8 @@ var BusinessUnitRepository = class extends AbstractResourceRepository {
|
|
|
2296
2307
|
};
|
|
2297
2308
|
this.saveNew(context, division);
|
|
2298
2309
|
return division;
|
|
2299
|
-
}
|
|
2310
|
+
}
|
|
2311
|
+
if (this._isCompanyDraft(draft)) {
|
|
2300
2312
|
const company = resource;
|
|
2301
2313
|
this.saveNew(context, company);
|
|
2302
2314
|
return company;
|
|
@@ -2418,7 +2430,7 @@ var CartDiscountUpdateHandler = class extends AbstractUpdateHandler {
|
|
|
2418
2430
|
throw new CommercetoolsError(
|
|
2419
2431
|
{
|
|
2420
2432
|
code: "InvalidOperation",
|
|
2421
|
-
message:
|
|
2433
|
+
message: `Cannot remove custom field ${name} because it does not exist.`
|
|
2422
2434
|
},
|
|
2423
2435
|
400
|
|
2424
2436
|
);
|
|
@@ -2598,15 +2610,11 @@ var CategoryUpdateHandler = class extends AbstractUpdateHandler {
|
|
|
2598
2610
|
return;
|
|
2599
2611
|
}
|
|
2600
2612
|
if (assetId) {
|
|
2601
|
-
resource.assets = resource.assets.filter(
|
|
2602
|
-
return obj.id !== assetId;
|
|
2603
|
-
});
|
|
2613
|
+
resource.assets = resource.assets.filter((obj) => obj.id !== assetId);
|
|
2604
2614
|
return;
|
|
2605
2615
|
}
|
|
2606
2616
|
if (assetKey) {
|
|
2607
|
-
resource.assets = resource.assets.filter(
|
|
2608
|
-
return obj.key !== assetKey;
|
|
2609
|
-
});
|
|
2617
|
+
resource.assets = resource.assets.filter((obj) => obj.key !== assetKey);
|
|
2610
2618
|
return;
|
|
2611
2619
|
}
|
|
2612
2620
|
}
|
|
@@ -2829,26 +2837,25 @@ var CustomObjectRepository = class extends AbstractResourceRepository {
|
|
|
2829
2837
|
return updated;
|
|
2830
2838
|
}
|
|
2831
2839
|
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
2840
|
}
|
|
2841
|
+
if (draft.version) {
|
|
2842
|
+
throw new CommercetoolsError(
|
|
2843
|
+
{
|
|
2844
|
+
code: "InvalidOperation",
|
|
2845
|
+
message: "version on create must be 0"
|
|
2846
|
+
},
|
|
2847
|
+
400
|
|
2848
|
+
);
|
|
2849
|
+
}
|
|
2850
|
+
const baseProperties = getBaseResourceProperties();
|
|
2851
|
+
const resource = {
|
|
2852
|
+
...baseProperties,
|
|
2853
|
+
container: draft.container,
|
|
2854
|
+
key: draft.key,
|
|
2855
|
+
value: draft.value
|
|
2856
|
+
};
|
|
2857
|
+
this.saveNew(context, resource);
|
|
2858
|
+
return resource;
|
|
2852
2859
|
}
|
|
2853
2860
|
getWithContainerAndKey(context, container, key) {
|
|
2854
2861
|
const items = this._storage.all(context.projectKey, this.getTypeId());
|
|
@@ -2873,7 +2880,7 @@ var CustomObjectRepository = class extends AbstractResourceRepository {
|
|
|
2873
2880
|
};
|
|
2874
2881
|
|
|
2875
2882
|
// src/repositories/customer/actions.ts
|
|
2876
|
-
var
|
|
2883
|
+
var import_node_assert2 = __toESM(require("assert"), 1);
|
|
2877
2884
|
var CustomerUpdateHandler = class extends AbstractUpdateHandler {
|
|
2878
2885
|
addAddress(_context, resource, { address }) {
|
|
2879
2886
|
resource.addresses.push({
|
|
@@ -2883,7 +2890,7 @@ var CustomerUpdateHandler = class extends AbstractUpdateHandler {
|
|
|
2883
2890
|
}
|
|
2884
2891
|
addBillingAddressId(_context, resource, { addressId, addressKey }) {
|
|
2885
2892
|
const address = this._findAddress(resource, addressId, addressKey, true);
|
|
2886
|
-
(0,
|
|
2893
|
+
(0, import_node_assert2.default)(address?.id);
|
|
2887
2894
|
if (resource.billingAddressIds === void 0) {
|
|
2888
2895
|
resource.billingAddressIds = [];
|
|
2889
2896
|
}
|
|
@@ -2893,7 +2900,7 @@ var CustomerUpdateHandler = class extends AbstractUpdateHandler {
|
|
|
2893
2900
|
}
|
|
2894
2901
|
addShippingAddressId(_context, resource, { addressId, addressKey }) {
|
|
2895
2902
|
const address = this._findAddress(resource, addressId, addressKey, true);
|
|
2896
|
-
(0,
|
|
2903
|
+
(0, import_node_assert2.default)(address?.id);
|
|
2897
2904
|
if (resource.shippingAddressIds === void 0) {
|
|
2898
2905
|
resource.shippingAddressIds = [];
|
|
2899
2906
|
}
|
|
@@ -2907,7 +2914,7 @@ var CustomerUpdateHandler = class extends AbstractUpdateHandler {
|
|
|
2907
2914
|
}
|
|
2908
2915
|
changeAddress(context, resource, { addressId, addressKey, address }) {
|
|
2909
2916
|
const current = this._findAddress(resource, addressId, addressKey, true);
|
|
2910
|
-
(0,
|
|
2917
|
+
(0, import_node_assert2.default)(current?.id);
|
|
2911
2918
|
const oldAddressIndex = resource.addresses.findIndex(
|
|
2912
2919
|
(a) => a.id === current.id
|
|
2913
2920
|
);
|
|
@@ -2933,7 +2940,7 @@ var CustomerUpdateHandler = class extends AbstractUpdateHandler {
|
|
|
2933
2940
|
action.addressKey,
|
|
2934
2941
|
true
|
|
2935
2942
|
);
|
|
2936
|
-
(0,
|
|
2943
|
+
(0, import_node_assert2.default)(address?.id);
|
|
2937
2944
|
resource.addresses = resource.addresses.filter((a) => a.id !== address.id);
|
|
2938
2945
|
}
|
|
2939
2946
|
removeBillingAddressId(context, resource, action) {
|
|
@@ -2943,7 +2950,7 @@ var CustomerUpdateHandler = class extends AbstractUpdateHandler {
|
|
|
2943
2950
|
action.addressKey,
|
|
2944
2951
|
true
|
|
2945
2952
|
);
|
|
2946
|
-
(0,
|
|
2953
|
+
(0, import_node_assert2.default)(address?.id);
|
|
2947
2954
|
resource.billingAddressIds = resource.billingAddressIds?.filter(
|
|
2948
2955
|
(id) => id !== address.id
|
|
2949
2956
|
);
|
|
@@ -2958,7 +2965,7 @@ var CustomerUpdateHandler = class extends AbstractUpdateHandler {
|
|
|
2958
2965
|
action.addressKey,
|
|
2959
2966
|
true
|
|
2960
2967
|
);
|
|
2961
|
-
(0,
|
|
2968
|
+
(0, import_node_assert2.default)(address?.id);
|
|
2962
2969
|
resource.shippingAddressIds = resource.shippingAddressIds?.filter(
|
|
2963
2970
|
(id) => id !== address.id
|
|
2964
2971
|
);
|
|
@@ -2987,7 +2994,7 @@ var CustomerUpdateHandler = class extends AbstractUpdateHandler {
|
|
|
2987
2994
|
}
|
|
2988
2995
|
resource.authenticationMode = authMode;
|
|
2989
2996
|
if (authMode === "ExternalAuth") {
|
|
2990
|
-
|
|
2997
|
+
resource.password = void 0;
|
|
2991
2998
|
return;
|
|
2992
2999
|
}
|
|
2993
3000
|
if (authMode === "Password") {
|
|
@@ -3060,7 +3067,7 @@ var CustomerUpdateHandler = class extends AbstractUpdateHandler {
|
|
|
3060
3067
|
action.addressKey,
|
|
3061
3068
|
true
|
|
3062
3069
|
);
|
|
3063
|
-
(0,
|
|
3070
|
+
(0, import_node_assert2.default)(address?.id);
|
|
3064
3071
|
resource.defaultBillingAddressId = address.id;
|
|
3065
3072
|
if (resource.billingAddressIds === void 0) {
|
|
3066
3073
|
resource.billingAddressIds = [];
|
|
@@ -3076,7 +3083,7 @@ var CustomerUpdateHandler = class extends AbstractUpdateHandler {
|
|
|
3076
3083
|
action.addressKey,
|
|
3077
3084
|
true
|
|
3078
3085
|
);
|
|
3079
|
-
(0,
|
|
3086
|
+
(0, import_node_assert2.default)(address?.id);
|
|
3080
3087
|
resource.defaultShippingAddressId = address.id;
|
|
3081
3088
|
if (resource.shippingAddressIds === void 0) {
|
|
3082
3089
|
resource.shippingAddressIds = [];
|
|
@@ -3541,7 +3548,8 @@ var ExtensionRepository = class extends AbstractResourceRepository {
|
|
|
3541
3548
|
extension,
|
|
3542
3549
|
"destination.authentication.headerValue"
|
|
3543
3550
|
);
|
|
3544
|
-
}
|
|
3551
|
+
}
|
|
3552
|
+
if (extension.destination.type === "AWSLambda") {
|
|
3545
3553
|
return maskSecretValue(resource, "destination.accessSecret");
|
|
3546
3554
|
}
|
|
3547
3555
|
}
|
|
@@ -3708,10 +3716,10 @@ var MyCustomerRepository = class extends CustomerRepository {
|
|
|
3708
3716
|
};
|
|
3709
3717
|
|
|
3710
3718
|
// src/repositories/my-order.ts
|
|
3711
|
-
var
|
|
3719
|
+
var import_node_assert3 = __toESM(require("assert"), 1);
|
|
3712
3720
|
var MyOrderRepository = class extends OrderRepository {
|
|
3713
3721
|
create(context, draft) {
|
|
3714
|
-
(0,
|
|
3722
|
+
(0, import_node_assert3.default)(draft.id, "draft.id is missing");
|
|
3715
3723
|
const cartIdentifier = {
|
|
3716
3724
|
id: draft.id,
|
|
3717
3725
|
typeId: "cart"
|
|
@@ -4016,16 +4024,19 @@ function toRegExp(str) {
|
|
|
4016
4024
|
return new RegExp(str.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g, "\\$&"));
|
|
4017
4025
|
}
|
|
4018
4026
|
function normalize(regex) {
|
|
4019
|
-
if (typeof regex === "string")
|
|
4027
|
+
if (typeof regex === "string")
|
|
4028
|
+
regex = toRegExp(regex);
|
|
4020
4029
|
if (!regex.source.startsWith("^"))
|
|
4021
4030
|
return new RegExp(`^${regex.source}`, regex.flags);
|
|
4022
|
-
else
|
|
4031
|
+
else
|
|
4032
|
+
return regex;
|
|
4023
4033
|
}
|
|
4024
4034
|
function first(arr, predicate) {
|
|
4025
4035
|
let i = 0;
|
|
4026
4036
|
for (const item of arr) {
|
|
4027
4037
|
const result = predicate(item, i++);
|
|
4028
|
-
if (result)
|
|
4038
|
+
if (result)
|
|
4039
|
+
return { item, result };
|
|
4029
4040
|
}
|
|
4030
4041
|
}
|
|
4031
4042
|
var TokenTypes = class {
|
|
@@ -4189,7 +4200,8 @@ var Lexer = class {
|
|
|
4189
4200
|
*/
|
|
4190
4201
|
peek(position = this._state.position) {
|
|
4191
4202
|
const read = (i = position) => {
|
|
4192
|
-
if (i >= this._state.source.length)
|
|
4203
|
+
if (i >= this._state.source.length)
|
|
4204
|
+
return EOF(this);
|
|
4193
4205
|
const n = this._tokenTypes.peek(this._state.source, i);
|
|
4194
4206
|
if (!n || !n.result) {
|
|
4195
4207
|
throw new Error(
|
|
@@ -4209,7 +4221,8 @@ var Lexer = class {
|
|
|
4209
4221
|
) : null;
|
|
4210
4222
|
};
|
|
4211
4223
|
const t = read();
|
|
4212
|
-
if (t)
|
|
4224
|
+
if (t)
|
|
4225
|
+
return t;
|
|
4213
4226
|
let unexpected = this._state.source.substring(position, position + 1);
|
|
4214
4227
|
try {
|
|
4215
4228
|
this.peek(position + 1);
|
|
@@ -4231,7 +4244,8 @@ var Lexer = class {
|
|
|
4231
4244
|
*/
|
|
4232
4245
|
strpos(i) {
|
|
4233
4246
|
let lines = this._state.source.substring(0, i).split(/\r?\n/);
|
|
4234
|
-
if (!Array.isArray(lines))
|
|
4247
|
+
if (!Array.isArray(lines))
|
|
4248
|
+
lines = [lines];
|
|
4235
4249
|
const line = lines.length;
|
|
4236
4250
|
const column = lines[lines.length - 1].length + 1;
|
|
4237
4251
|
return { line, column };
|
|
@@ -4330,7 +4344,8 @@ var Parser = class {
|
|
|
4330
4344
|
* @returns {number} The binding power of the specified token type
|
|
4331
4345
|
*/
|
|
4332
4346
|
bp(tokenOrType) {
|
|
4333
|
-
if (tokenOrType == null)
|
|
4347
|
+
if (tokenOrType == null)
|
|
4348
|
+
return Number.NEGATIVE_INFINITY;
|
|
4334
4349
|
if (tokenOrType && typeof tokenOrType.isEof == "function" && tokenOrType.isEof())
|
|
4335
4350
|
return Number.NEGATIVE_INFINITY;
|
|
4336
4351
|
const type = this._type(tokenOrType);
|
|
@@ -4375,21 +4390,27 @@ var Parser = class {
|
|
|
4375
4390
|
parse(opts = { terminals: [0] }) {
|
|
4376
4391
|
const stop = opts.stop = opts.stop || createStop();
|
|
4377
4392
|
const check = () => {
|
|
4378
|
-
if (stop.isStopped())
|
|
4393
|
+
if (stop.isStopped())
|
|
4394
|
+
return false;
|
|
4379
4395
|
const t = this.lexer.peek();
|
|
4380
4396
|
const bp = this.bp(t);
|
|
4381
4397
|
return opts.terminals.reduce((canContinue, rbpOrType) => {
|
|
4382
|
-
if (!canContinue)
|
|
4383
|
-
|
|
4384
|
-
if (typeof rbpOrType == "
|
|
4398
|
+
if (!canContinue)
|
|
4399
|
+
return false;
|
|
4400
|
+
if (typeof rbpOrType == "number")
|
|
4401
|
+
return rbpOrType < bp;
|
|
4402
|
+
if (typeof rbpOrType == "string")
|
|
4403
|
+
return t.type != rbpOrType;
|
|
4385
4404
|
}, true);
|
|
4386
4405
|
};
|
|
4387
4406
|
const mkinfo = (token) => {
|
|
4388
4407
|
const bp = this.bp(token);
|
|
4389
4408
|
return { token, bp, stop, ctx: opts.ctx, options: opts };
|
|
4390
4409
|
};
|
|
4391
|
-
if (!opts.terminals)
|
|
4392
|
-
|
|
4410
|
+
if (!opts.terminals)
|
|
4411
|
+
opts.terminals = [0];
|
|
4412
|
+
if (opts.terminals.length == 0)
|
|
4413
|
+
opts.terminals.push(0);
|
|
4393
4414
|
let left = this.nud(mkinfo(this.lexer.next()));
|
|
4394
4415
|
while (check()) {
|
|
4395
4416
|
const operator = this.lexer.next();
|
|
@@ -4521,7 +4542,7 @@ var parseFilter = (filter) => {
|
|
|
4521
4542
|
(t) => ({
|
|
4522
4543
|
type: "Symbol",
|
|
4523
4544
|
kind: "int",
|
|
4524
|
-
value: parseInt(t.token.match, 10)
|
|
4545
|
+
value: Number.parseInt(t.token.match, 10)
|
|
4525
4546
|
})
|
|
4526
4547
|
).nud("STAR", 5, (_) => ({
|
|
4527
4548
|
type: "Symbol",
|
|
@@ -4545,9 +4566,8 @@ var parseFilter = (filter) => {
|
|
|
4545
4566
|
const expr = parser.parse({ terminals: [bp - 1] });
|
|
4546
4567
|
if (Array.isArray(expr)) {
|
|
4547
4568
|
return [left, ...expr];
|
|
4548
|
-
} else {
|
|
4549
|
-
return [left, expr];
|
|
4550
4569
|
}
|
|
4570
|
+
return [left, expr];
|
|
4551
4571
|
}).nud("(", 100, (t) => {
|
|
4552
4572
|
const expr = parser.parse({ terminals: [")"] });
|
|
4553
4573
|
lexer.expect(")");
|
|
@@ -4593,7 +4613,8 @@ var generateMatchFunc = (filter) => {
|
|
|
4593
4613
|
throw new Error(`Syntax error while parsing '${filter}'.`);
|
|
4594
4614
|
}
|
|
4595
4615
|
return (obj) => {
|
|
4596
|
-
if (!result.children)
|
|
4616
|
+
if (!result.children)
|
|
4617
|
+
return false;
|
|
4597
4618
|
return result.children.some((c) => c.match(obj));
|
|
4598
4619
|
};
|
|
4599
4620
|
};
|
|
@@ -4699,6 +4720,12 @@ var parseSearchQuery = (searchQuery) => {
|
|
|
4699
4720
|
return generateFieldMatchFunc(generateRangeMatchFunc, searchQuery.range);
|
|
4700
4721
|
}
|
|
4701
4722
|
if (isSearchExactExpression(searchQuery)) {
|
|
4723
|
+
if (Array.isArray(searchQuery.exact.values)) {
|
|
4724
|
+
return generateFieldMatchFunc(
|
|
4725
|
+
(value) => (searchQuery.exact.values ?? []).includes(value),
|
|
4726
|
+
searchQuery.exact
|
|
4727
|
+
);
|
|
4728
|
+
}
|
|
4702
4729
|
return generateFieldMatchFunc(
|
|
4703
4730
|
(value) => value === searchQuery.exact.value,
|
|
4704
4731
|
searchQuery.exact
|
|
@@ -5317,7 +5344,7 @@ var ProductUpdateHandler = class extends AbstractUpdateHandler {
|
|
|
5317
5344
|
}
|
|
5318
5345
|
if (position >= variantImages.length) {
|
|
5319
5346
|
throw new Error(
|
|
5320
|
-
|
|
5347
|
+
"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
5348
|
);
|
|
5322
5349
|
}
|
|
5323
5350
|
variant.images = variantImages.filter((image) => image.url !== imageUrl);
|
|
@@ -5950,9 +5977,8 @@ var parseQueryExpression = (predicate) => {
|
|
|
5950
5977
|
if (Array.isArray(predicate)) {
|
|
5951
5978
|
const callbacks = predicate.map((item) => generateMatchFunc2(item));
|
|
5952
5979
|
return (target, variables) => callbacks.every((callback) => callback(target, variables));
|
|
5953
|
-
} else {
|
|
5954
|
-
return generateMatchFunc2(predicate);
|
|
5955
5980
|
}
|
|
5981
|
+
return generateMatchFunc2(predicate);
|
|
5956
5982
|
};
|
|
5957
5983
|
var validateSymbol = (val) => {
|
|
5958
5984
|
if (!val.type) {
|
|
@@ -6007,7 +6033,7 @@ var generateMatchFunc2 = (predicate) => {
|
|
|
6007
6033
|
1,
|
|
6008
6034
|
(t) => ({
|
|
6009
6035
|
type: "boolean",
|
|
6010
|
-
value: t.token.match === "true"
|
|
6036
|
+
value: t.token.match === "true",
|
|
6011
6037
|
pos: t.token.strpos()
|
|
6012
6038
|
})
|
|
6013
6039
|
).nud(
|
|
@@ -6033,7 +6059,7 @@ var generateMatchFunc2 = (predicate) => {
|
|
|
6033
6059
|
1,
|
|
6034
6060
|
(t) => ({
|
|
6035
6061
|
type: "int",
|
|
6036
|
-
value: parseInt(t.token.match, 10),
|
|
6062
|
+
value: Number.parseInt(t.token.match, 10),
|
|
6037
6063
|
pos: t.token.strpos()
|
|
6038
6064
|
})
|
|
6039
6065
|
).nud(
|
|
@@ -6041,7 +6067,7 @@ var generateMatchFunc2 = (predicate) => {
|
|
|
6041
6067
|
1,
|
|
6042
6068
|
(t) => ({
|
|
6043
6069
|
type: "float",
|
|
6044
|
-
value: parseFloat(t.token.match),
|
|
6070
|
+
value: Number.parseFloat(t.token.match),
|
|
6045
6071
|
pos: t.token.strpos()
|
|
6046
6072
|
})
|
|
6047
6073
|
).nud("NOT", 100, ({ bp }) => {
|
|
@@ -6057,9 +6083,8 @@ var generateMatchFunc2 = (predicate) => {
|
|
|
6057
6083
|
const expr = parser.parse({ terminals: [bp - 1] });
|
|
6058
6084
|
if (Array.isArray(expr)) {
|
|
6059
6085
|
return [left, ...expr];
|
|
6060
|
-
} else {
|
|
6061
|
-
return [left, expr];
|
|
6062
6086
|
}
|
|
6087
|
+
return [left, expr];
|
|
6063
6088
|
}).nud("(", 100, (t) => {
|
|
6064
6089
|
const expr = parser.parse({ terminals: [")"] });
|
|
6065
6090
|
return expr;
|
|
@@ -6069,22 +6094,21 @@ var generateMatchFunc2 = (predicate) => {
|
|
|
6069
6094
|
return (obj, vars) => {
|
|
6070
6095
|
if (Array.isArray(obj)) {
|
|
6071
6096
|
return obj.some((item) => {
|
|
6072
|
-
const
|
|
6073
|
-
if (
|
|
6074
|
-
return expr(
|
|
6097
|
+
const value2 = resolveValue(item, left);
|
|
6098
|
+
if (value2) {
|
|
6099
|
+
return expr(value2, vars);
|
|
6075
6100
|
}
|
|
6076
6101
|
return false;
|
|
6077
6102
|
});
|
|
6078
|
-
}
|
|
6079
|
-
|
|
6080
|
-
|
|
6081
|
-
|
|
6082
|
-
|
|
6083
|
-
}
|
|
6084
|
-
return expr(value, vars);
|
|
6103
|
+
}
|
|
6104
|
+
const value = resolveValue(obj, left);
|
|
6105
|
+
if (value) {
|
|
6106
|
+
if (Array.isArray(value)) {
|
|
6107
|
+
return value.some((item) => expr(item, vars));
|
|
6085
6108
|
}
|
|
6086
|
-
return
|
|
6109
|
+
return expr(value, vars);
|
|
6087
6110
|
}
|
|
6111
|
+
return false;
|
|
6088
6112
|
};
|
|
6089
6113
|
}).bp(")", 0).led("=", 20, ({ left, bp }) => {
|
|
6090
6114
|
const expr = parser.parse({ terminals: [bp - 1] });
|
|
@@ -6099,14 +6123,13 @@ var generateMatchFunc2 = (predicate) => {
|
|
|
6099
6123
|
}
|
|
6100
6124
|
return value === other;
|
|
6101
6125
|
});
|
|
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
6126
|
}
|
|
6127
|
+
const resolvedValue = resolveValue(obj, left);
|
|
6128
|
+
const resolvedSymbol = resolveSymbol(expr, vars);
|
|
6129
|
+
if (Array.isArray(resolvedValue)) {
|
|
6130
|
+
return !!resolvedValue.some((elem) => elem === resolvedSymbol);
|
|
6131
|
+
}
|
|
6132
|
+
return resolvedValue === resolvedSymbol;
|
|
6110
6133
|
};
|
|
6111
6134
|
}).led("!=", 20, ({ left, bp }) => {
|
|
6112
6135
|
const expr = parser.parse({ terminals: [bp - 1] });
|
|
@@ -6143,12 +6166,11 @@ var generateMatchFunc2 = (predicate) => {
|
|
|
6143
6166
|
const val = resolveValue(obj, left);
|
|
6144
6167
|
return val.length === 0;
|
|
6145
6168
|
};
|
|
6146
|
-
} else {
|
|
6147
|
-
return (obj, vars) => {
|
|
6148
|
-
const val = resolveValue(obj, left);
|
|
6149
|
-
return val.length !== 0;
|
|
6150
|
-
};
|
|
6151
6169
|
}
|
|
6170
|
+
return (obj, vars) => {
|
|
6171
|
+
const val = resolveValue(obj, left);
|
|
6172
|
+
return val.length !== 0;
|
|
6173
|
+
};
|
|
6152
6174
|
}
|
|
6153
6175
|
case "defined": {
|
|
6154
6176
|
if (!invert) {
|
|
@@ -6156,12 +6178,11 @@ var generateMatchFunc2 = (predicate) => {
|
|
|
6156
6178
|
const val = resolveValue(obj, left);
|
|
6157
6179
|
return val !== void 0;
|
|
6158
6180
|
};
|
|
6159
|
-
} else {
|
|
6160
|
-
return (obj, vars) => {
|
|
6161
|
-
const val = resolveValue(obj, left);
|
|
6162
|
-
return val === void 0;
|
|
6163
|
-
};
|
|
6164
6181
|
}
|
|
6182
|
+
return (obj, vars) => {
|
|
6183
|
+
const val = resolveValue(obj, left);
|
|
6184
|
+
return val === void 0;
|
|
6185
|
+
};
|
|
6165
6186
|
}
|
|
6166
6187
|
default: {
|
|
6167
6188
|
throw new Error("Unexpected");
|
|
@@ -6204,7 +6225,8 @@ var generateMatchFunc2 = (predicate) => {
|
|
|
6204
6225
|
const expr = parser.parse({ terminals: [")"] });
|
|
6205
6226
|
return (obj, vars) => {
|
|
6206
6227
|
const value = resolveValue(obj, left);
|
|
6207
|
-
if (!value)
|
|
6228
|
+
if (!value)
|
|
6229
|
+
return false;
|
|
6208
6230
|
const maxDistance = resolveSymbol(expr[2], vars);
|
|
6209
6231
|
const distance = haversineDistance(
|
|
6210
6232
|
{
|
|
@@ -6234,9 +6256,8 @@ var generateMatchFunc2 = (predicate) => {
|
|
|
6234
6256
|
const array = expr.map((item) => resolveSymbol(item, vars));
|
|
6235
6257
|
if (keyword.type === "ALL") {
|
|
6236
6258
|
return array.every((item) => value.includes(item));
|
|
6237
|
-
} else {
|
|
6238
|
-
return array.some((item) => value.includes(item));
|
|
6239
6259
|
}
|
|
6260
|
+
return array.some((item) => value.includes(item));
|
|
6240
6261
|
};
|
|
6241
6262
|
}).build();
|
|
6242
6263
|
const result = parser.parse();
|
|
@@ -6343,7 +6364,8 @@ var ProductProjectionSearch = class {
|
|
|
6343
6364
|
};
|
|
6344
6365
|
}
|
|
6345
6366
|
getFacets(params, products) {
|
|
6346
|
-
if (!params.facet)
|
|
6367
|
+
if (!params.facet)
|
|
6368
|
+
return {};
|
|
6347
6369
|
const result = {};
|
|
6348
6370
|
const regexp = new RegExp(/ counting products$/);
|
|
6349
6371
|
for (let facet of params.facet) {
|
|
@@ -6477,9 +6499,8 @@ var ProductProjectionSearch = class {
|
|
|
6477
6499
|
max: numValues > 0 ? Math.max(...values) : 0,
|
|
6478
6500
|
mean: numValues > 0 ? mean(values) : 0
|
|
6479
6501
|
};
|
|
6480
|
-
} else {
|
|
6481
|
-
throw new Error("not supported");
|
|
6482
6502
|
}
|
|
6503
|
+
throw new Error("not supported");
|
|
6483
6504
|
}) || [];
|
|
6484
6505
|
const data = {
|
|
6485
6506
|
type: "range",
|
|
@@ -6826,23 +6847,289 @@ var ProjectUpdateHandler = class extends AbstractUpdateHandler {
|
|
|
6826
6847
|
}
|
|
6827
6848
|
};
|
|
6828
6849
|
|
|
6829
|
-
// src/repositories/quote.ts
|
|
6850
|
+
// src/repositories/quote/actions.ts
|
|
6851
|
+
var QuoteUpdateHandler = class extends AbstractUpdateHandler {
|
|
6852
|
+
setCustomField(context, resource, { name, value }) {
|
|
6853
|
+
if (!resource.custom) {
|
|
6854
|
+
throw new Error("Resource has no custom field");
|
|
6855
|
+
}
|
|
6856
|
+
resource.custom.fields[name] = value;
|
|
6857
|
+
}
|
|
6858
|
+
setCustomType(context, resource, { type, fields }) {
|
|
6859
|
+
if (!type) {
|
|
6860
|
+
resource.custom = void 0;
|
|
6861
|
+
} else {
|
|
6862
|
+
const resolvedType = this._storage.getByResourceIdentifier(
|
|
6863
|
+
context.projectKey,
|
|
6864
|
+
type
|
|
6865
|
+
);
|
|
6866
|
+
if (!resolvedType) {
|
|
6867
|
+
throw new Error(`Type ${type} not found`);
|
|
6868
|
+
}
|
|
6869
|
+
resource.custom = {
|
|
6870
|
+
type: {
|
|
6871
|
+
typeId: "type",
|
|
6872
|
+
id: resolvedType.id
|
|
6873
|
+
},
|
|
6874
|
+
fields: fields || {}
|
|
6875
|
+
};
|
|
6876
|
+
}
|
|
6877
|
+
}
|
|
6878
|
+
transitionState(context, resource, { state, force }) {
|
|
6879
|
+
let stateReference = void 0;
|
|
6880
|
+
if (state) {
|
|
6881
|
+
stateReference = getReferenceFromResourceIdentifier(
|
|
6882
|
+
state,
|
|
6883
|
+
context.projectKey,
|
|
6884
|
+
this._storage
|
|
6885
|
+
);
|
|
6886
|
+
resource.state = stateReference;
|
|
6887
|
+
} else {
|
|
6888
|
+
throw new CommercetoolsError(
|
|
6889
|
+
{
|
|
6890
|
+
code: "InvalidJsonInput",
|
|
6891
|
+
message: "Request body does not contain valid JSON.",
|
|
6892
|
+
detailedErrorMessage: "actions -> state: Missing required value"
|
|
6893
|
+
},
|
|
6894
|
+
400
|
|
6895
|
+
);
|
|
6896
|
+
}
|
|
6897
|
+
return resource;
|
|
6898
|
+
}
|
|
6899
|
+
};
|
|
6900
|
+
|
|
6901
|
+
// src/repositories/quote/index.ts
|
|
6830
6902
|
var QuoteRepository = class extends AbstractResourceRepository {
|
|
6831
6903
|
constructor(config) {
|
|
6832
6904
|
super("quote", config);
|
|
6905
|
+
this.actions = new QuoteUpdateHandler(config.storage);
|
|
6833
6906
|
}
|
|
6834
6907
|
create(context, draft) {
|
|
6835
|
-
|
|
6908
|
+
const staged = this._storage.getByResourceIdentifier(
|
|
6909
|
+
context.projectKey,
|
|
6910
|
+
draft.stagedQuote
|
|
6911
|
+
);
|
|
6912
|
+
const cart = this._storage.getByResourceIdentifier(
|
|
6913
|
+
context.projectKey,
|
|
6914
|
+
staged.quotationCart
|
|
6915
|
+
);
|
|
6916
|
+
if (!cart.customerId) {
|
|
6917
|
+
throw new Error("Cart does not have a customer");
|
|
6918
|
+
}
|
|
6919
|
+
const resource = {
|
|
6920
|
+
...getBaseResourceProperties(),
|
|
6921
|
+
quoteState: "Accepted",
|
|
6922
|
+
quoteRequest: staged.quoteRequest,
|
|
6923
|
+
lineItems: cart.lineItems,
|
|
6924
|
+
customLineItems: cart.customLineItems,
|
|
6925
|
+
customer: {
|
|
6926
|
+
typeId: "customer",
|
|
6927
|
+
id: cart.customerId
|
|
6928
|
+
},
|
|
6929
|
+
stagedQuote: {
|
|
6930
|
+
typeId: "staged-quote",
|
|
6931
|
+
id: staged.id
|
|
6932
|
+
},
|
|
6933
|
+
totalPrice: cart.totalPrice,
|
|
6934
|
+
taxedPrice: cart.taxedPrice,
|
|
6935
|
+
taxMode: cart.taxMode,
|
|
6936
|
+
taxRoundingMode: cart.taxRoundingMode,
|
|
6937
|
+
taxCalculationMode: cart.taxCalculationMode,
|
|
6938
|
+
billingAddress: cart.billingAddress,
|
|
6939
|
+
shippingAddress: cart.shippingAddress
|
|
6940
|
+
};
|
|
6941
|
+
return resource;
|
|
6942
|
+
}
|
|
6943
|
+
};
|
|
6944
|
+
|
|
6945
|
+
// src/repositories/quote-request/index.ts
|
|
6946
|
+
var import_node_assert4 = __toESM(require("assert"), 1);
|
|
6947
|
+
|
|
6948
|
+
// src/repositories/quote-request/actions.ts
|
|
6949
|
+
var QuoteRequestUpdateHandler = class extends AbstractUpdateHandler {
|
|
6950
|
+
setCustomField(context, resource, { name, value }) {
|
|
6951
|
+
if (!resource.custom) {
|
|
6952
|
+
throw new Error("Resource has no custom field");
|
|
6953
|
+
}
|
|
6954
|
+
resource.custom.fields[name] = value;
|
|
6955
|
+
}
|
|
6956
|
+
setCustomType(context, resource, { type, fields }) {
|
|
6957
|
+
if (!type) {
|
|
6958
|
+
resource.custom = void 0;
|
|
6959
|
+
} else {
|
|
6960
|
+
const resolvedType = this._storage.getByResourceIdentifier(
|
|
6961
|
+
context.projectKey,
|
|
6962
|
+
type
|
|
6963
|
+
);
|
|
6964
|
+
if (!resolvedType) {
|
|
6965
|
+
throw new Error(`Type ${type} not found`);
|
|
6966
|
+
}
|
|
6967
|
+
resource.custom = {
|
|
6968
|
+
type: {
|
|
6969
|
+
typeId: "type",
|
|
6970
|
+
id: resolvedType.id
|
|
6971
|
+
},
|
|
6972
|
+
fields: fields || {}
|
|
6973
|
+
};
|
|
6974
|
+
}
|
|
6975
|
+
}
|
|
6976
|
+
transitionState(context, resource, { state, force }) {
|
|
6977
|
+
let stateReference = void 0;
|
|
6978
|
+
if (state) {
|
|
6979
|
+
stateReference = getReferenceFromResourceIdentifier(
|
|
6980
|
+
state,
|
|
6981
|
+
context.projectKey,
|
|
6982
|
+
this._storage
|
|
6983
|
+
);
|
|
6984
|
+
resource.state = stateReference;
|
|
6985
|
+
} else {
|
|
6986
|
+
throw new CommercetoolsError(
|
|
6987
|
+
{
|
|
6988
|
+
code: "InvalidJsonInput",
|
|
6989
|
+
message: "Request body does not contain valid JSON.",
|
|
6990
|
+
detailedErrorMessage: "actions -> state: Missing required value"
|
|
6991
|
+
},
|
|
6992
|
+
400
|
|
6993
|
+
);
|
|
6994
|
+
}
|
|
6995
|
+
return resource;
|
|
6836
6996
|
}
|
|
6837
6997
|
};
|
|
6838
6998
|
|
|
6839
|
-
// src/repositories/quote-request.ts
|
|
6999
|
+
// src/repositories/quote-request/index.ts
|
|
6840
7000
|
var QuoteRequestRepository = class extends AbstractResourceRepository {
|
|
6841
7001
|
constructor(config) {
|
|
6842
7002
|
super("quote-request", config);
|
|
7003
|
+
this.actions = new QuoteRequestUpdateHandler(config.storage);
|
|
7004
|
+
}
|
|
7005
|
+
create(context, draft) {
|
|
7006
|
+
(0, import_node_assert4.default)(draft.cart, "draft.cart is missing");
|
|
7007
|
+
return this.createFromCart(context, {
|
|
7008
|
+
id: draft.cart.id,
|
|
7009
|
+
typeId: "cart"
|
|
7010
|
+
});
|
|
7011
|
+
}
|
|
7012
|
+
createFromCart(context, cartReference) {
|
|
7013
|
+
const cart = this._storage.getByResourceIdentifier(
|
|
7014
|
+
context.projectKey,
|
|
7015
|
+
cartReference
|
|
7016
|
+
);
|
|
7017
|
+
if (!cart) {
|
|
7018
|
+
throw new Error("Cannot find cart");
|
|
7019
|
+
}
|
|
7020
|
+
if (!cart.customerId) {
|
|
7021
|
+
throw new Error("Cart does not have a customer");
|
|
7022
|
+
}
|
|
7023
|
+
const resource = {
|
|
7024
|
+
...getBaseResourceProperties(),
|
|
7025
|
+
billingAddress: cart.billingAddress,
|
|
7026
|
+
cart: cartReference,
|
|
7027
|
+
country: cart.country,
|
|
7028
|
+
custom: cart.custom,
|
|
7029
|
+
customer: {
|
|
7030
|
+
typeId: "customer",
|
|
7031
|
+
id: cart.customerId
|
|
7032
|
+
},
|
|
7033
|
+
customerGroup: cart.customerGroup,
|
|
7034
|
+
customLineItems: [],
|
|
7035
|
+
directDiscounts: cart.directDiscounts,
|
|
7036
|
+
lineItems: cart.lineItems,
|
|
7037
|
+
paymentInfo: cart.paymentInfo,
|
|
7038
|
+
quoteRequestState: "Submitted",
|
|
7039
|
+
shippingAddress: cart.shippingAddress,
|
|
7040
|
+
taxCalculationMode: cart.taxCalculationMode,
|
|
7041
|
+
taxedPrice: cart.taxedPrice,
|
|
7042
|
+
taxMode: cart.taxMode,
|
|
7043
|
+
taxRoundingMode: cart.taxRoundingMode,
|
|
7044
|
+
totalPrice: cart.totalPrice,
|
|
7045
|
+
store: cart.store
|
|
7046
|
+
};
|
|
7047
|
+
return this.saveNew(context, resource);
|
|
7048
|
+
}
|
|
7049
|
+
};
|
|
7050
|
+
|
|
7051
|
+
// src/repositories/quote-staged/actions.ts
|
|
7052
|
+
var StagedQuoteUpdateHandler = class extends AbstractUpdateHandler {
|
|
7053
|
+
setCustomField(context, resource, { name, value }) {
|
|
7054
|
+
if (!resource.custom) {
|
|
7055
|
+
throw new Error("Resource has no custom field");
|
|
7056
|
+
}
|
|
7057
|
+
resource.custom.fields[name] = value;
|
|
7058
|
+
}
|
|
7059
|
+
setCustomType(context, resource, { type, fields }) {
|
|
7060
|
+
if (!type) {
|
|
7061
|
+
resource.custom = void 0;
|
|
7062
|
+
} else {
|
|
7063
|
+
const resolvedType = this._storage.getByResourceIdentifier(
|
|
7064
|
+
context.projectKey,
|
|
7065
|
+
type
|
|
7066
|
+
);
|
|
7067
|
+
if (!resolvedType) {
|
|
7068
|
+
throw new Error(`Type ${type} not found`);
|
|
7069
|
+
}
|
|
7070
|
+
resource.custom = {
|
|
7071
|
+
type: {
|
|
7072
|
+
typeId: "type",
|
|
7073
|
+
id: resolvedType.id
|
|
7074
|
+
},
|
|
7075
|
+
fields: fields || {}
|
|
7076
|
+
};
|
|
7077
|
+
}
|
|
7078
|
+
}
|
|
7079
|
+
transitionState(context, resource, { state, force }) {
|
|
7080
|
+
let stateReference = void 0;
|
|
7081
|
+
if (state) {
|
|
7082
|
+
stateReference = getReferenceFromResourceIdentifier(
|
|
7083
|
+
state,
|
|
7084
|
+
context.projectKey,
|
|
7085
|
+
this._storage
|
|
7086
|
+
);
|
|
7087
|
+
resource.state = stateReference;
|
|
7088
|
+
} else {
|
|
7089
|
+
throw new CommercetoolsError(
|
|
7090
|
+
{
|
|
7091
|
+
code: "InvalidJsonInput",
|
|
7092
|
+
message: "Request body does not contain valid JSON.",
|
|
7093
|
+
detailedErrorMessage: "actions -> state: Missing required value"
|
|
7094
|
+
},
|
|
7095
|
+
400
|
|
7096
|
+
);
|
|
7097
|
+
}
|
|
7098
|
+
return resource;
|
|
7099
|
+
}
|
|
7100
|
+
};
|
|
7101
|
+
|
|
7102
|
+
// src/repositories/quote-staged/index.ts
|
|
7103
|
+
var StagedQuoteRepository = class extends AbstractResourceRepository {
|
|
7104
|
+
constructor(config) {
|
|
7105
|
+
super("staged-quote", config);
|
|
7106
|
+
this.actions = new StagedQuoteUpdateHandler(config.storage);
|
|
6843
7107
|
}
|
|
6844
7108
|
create(context, draft) {
|
|
6845
|
-
|
|
7109
|
+
const quoteRequest = this._storage.getByResourceIdentifier(
|
|
7110
|
+
context.projectKey,
|
|
7111
|
+
draft.quoteRequest
|
|
7112
|
+
);
|
|
7113
|
+
if (!quoteRequest.cart) {
|
|
7114
|
+
throw new Error("Cannot find quote request");
|
|
7115
|
+
}
|
|
7116
|
+
const cart = this._storage.getByResourceIdentifier(
|
|
7117
|
+
context.projectKey,
|
|
7118
|
+
quoteRequest.cart
|
|
7119
|
+
);
|
|
7120
|
+
const resource = {
|
|
7121
|
+
...getBaseResourceProperties(),
|
|
7122
|
+
stagedQuoteState: "InProgress",
|
|
7123
|
+
quoteRequest: {
|
|
7124
|
+
typeId: "quote-request",
|
|
7125
|
+
id: quoteRequest.id
|
|
7126
|
+
},
|
|
7127
|
+
quotationCart: {
|
|
7128
|
+
typeId: "cart",
|
|
7129
|
+
id: cart.id
|
|
7130
|
+
}
|
|
7131
|
+
};
|
|
7132
|
+
return resource;
|
|
6846
7133
|
}
|
|
6847
7134
|
};
|
|
6848
7135
|
|
|
@@ -6852,7 +7139,8 @@ var ReviewRepository = class extends AbstractResourceRepository {
|
|
|
6852
7139
|
super("review", config);
|
|
6853
7140
|
}
|
|
6854
7141
|
create(context, draft) {
|
|
6855
|
-
if (!draft.target)
|
|
7142
|
+
if (!draft.target)
|
|
7143
|
+
throw new Error("Missing target");
|
|
6856
7144
|
const resource = {
|
|
6857
7145
|
...getBaseResourceProperties(),
|
|
6858
7146
|
locale: draft.locale,
|
|
@@ -7124,7 +7412,7 @@ var ShoppingListUpdateHandler = class extends AbstractUpdateHandler {
|
|
|
7124
7412
|
} else {
|
|
7125
7413
|
throw new CommercetoolsError({
|
|
7126
7414
|
code: "General",
|
|
7127
|
-
message:
|
|
7415
|
+
message: "Either lineItemid or lineItemKey needs to be provided."
|
|
7128
7416
|
});
|
|
7129
7417
|
}
|
|
7130
7418
|
if (quantity === 0) {
|
|
@@ -7249,7 +7537,12 @@ var ShoppingListRepository = class extends AbstractResourceRepository {
|
|
|
7249
7537
|
context.projectKey,
|
|
7250
7538
|
this._storage
|
|
7251
7539
|
) : void 0,
|
|
7252
|
-
store: draft.store ? getStoreKeyReference(draft.store, context.projectKey, this._storage) : void 0
|
|
7540
|
+
store: draft.store ? getStoreKeyReference(draft.store, context.projectKey, this._storage) : void 0,
|
|
7541
|
+
businessUnit: draft.businessUnit ? getBusinessUnitKeyReference(
|
|
7542
|
+
draft.businessUnit,
|
|
7543
|
+
context.projectKey,
|
|
7544
|
+
this._storage
|
|
7545
|
+
) : void 0
|
|
7253
7546
|
};
|
|
7254
7547
|
return this.saveNew(context, resource);
|
|
7255
7548
|
}
|
|
@@ -7304,21 +7597,11 @@ var ShoppingListRepository = class extends AbstractResourceRepository {
|
|
|
7304
7597
|
return lineItem;
|
|
7305
7598
|
}
|
|
7306
7599
|
throw new Error(
|
|
7307
|
-
|
|
7600
|
+
"must provide either sku, productId or variantId for ShoppingListLineItem"
|
|
7308
7601
|
);
|
|
7309
7602
|
};
|
|
7310
7603
|
};
|
|
7311
7604
|
|
|
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
7605
|
// src/repositories/standalone-price.ts
|
|
7323
7606
|
var StandAlonePriceRepository = class extends AbstractResourceRepository {
|
|
7324
7607
|
constructor(config) {
|
|
@@ -7463,7 +7746,8 @@ var StoreRepository = class extends AbstractResourceRepository {
|
|
|
7463
7746
|
}
|
|
7464
7747
|
};
|
|
7465
7748
|
var transformChannels = (context, storage, channels) => {
|
|
7466
|
-
if (!channels)
|
|
7749
|
+
if (!channels)
|
|
7750
|
+
return [];
|
|
7467
7751
|
return channels.map(
|
|
7468
7752
|
(ref) => getReferenceFromResourceIdentifier(
|
|
7469
7753
|
ref,
|
|
@@ -7542,7 +7826,8 @@ var SubscriptionRepository = class extends AbstractResourceRepository {
|
|
|
7542
7826
|
},
|
|
7543
7827
|
key: draft.key,
|
|
7544
7828
|
messages: draft.messages || [],
|
|
7545
|
-
status: "Healthy"
|
|
7829
|
+
status: "Healthy",
|
|
7830
|
+
events: draft.events || []
|
|
7546
7831
|
};
|
|
7547
7832
|
return this.saveNew(context, resource);
|
|
7548
7833
|
}
|
|
@@ -7764,44 +8049,44 @@ var createRepositories = (config) => ({
|
|
|
7764
8049
|
"associate-role": new AssociateRoleRepository(config),
|
|
7765
8050
|
"attribute-group": new AttributeGroupRepository(config),
|
|
7766
8051
|
"business-unit": new BusinessUnitRepository(config),
|
|
7767
|
-
|
|
7768
|
-
|
|
8052
|
+
category: new CategoryRepository(config),
|
|
8053
|
+
cart: new CartRepository(config),
|
|
7769
8054
|
"cart-discount": new CartDiscountRepository(config),
|
|
7770
|
-
|
|
7771
|
-
|
|
8055
|
+
customer: new CustomerRepository(config),
|
|
8056
|
+
channel: new ChannelRepository(config),
|
|
7772
8057
|
"customer-group": new CustomerGroupRepository(config),
|
|
7773
8058
|
"discount-code": new DiscountCodeRepository(config),
|
|
7774
|
-
|
|
8059
|
+
extension: new ExtensionRepository(config),
|
|
7775
8060
|
"inventory-entry": new InventoryEntryRepository(config),
|
|
7776
8061
|
"key-value-document": new CustomObjectRepository(config),
|
|
7777
|
-
|
|
8062
|
+
order: new OrderRepository(config),
|
|
7778
8063
|
"order-edit": new OrderEditRepository(config),
|
|
7779
|
-
|
|
8064
|
+
payment: new PaymentRepository(config),
|
|
7780
8065
|
"my-cart": new CartRepository(config),
|
|
7781
8066
|
"my-order": new MyOrderRepository(config),
|
|
7782
8067
|
"my-customer": new MyCustomerRepository(config),
|
|
7783
8068
|
"my-payment": new PaymentRepository(config),
|
|
7784
8069
|
"my-shopping-list": new ShoppingListRepository(config),
|
|
7785
|
-
|
|
8070
|
+
product: new ProductRepository(config),
|
|
7786
8071
|
"product-type": new ProductTypeRepository(config),
|
|
7787
8072
|
"product-discount": new ProductDiscountRepository(config),
|
|
7788
8073
|
"product-projection": new ProductProjectionRepository(config),
|
|
7789
8074
|
"product-selection": new ProductSelectionRepository(config),
|
|
7790
8075
|
"product-tailoring": new ProductTailoringRepository(config),
|
|
7791
|
-
|
|
7792
|
-
|
|
7793
|
-
|
|
8076
|
+
project: new ProjectRepository(config),
|
|
8077
|
+
review: new ReviewRepository(config),
|
|
8078
|
+
quote: new QuoteRepository(config),
|
|
7794
8079
|
"quote-request": new QuoteRequestRepository(config),
|
|
7795
8080
|
"shipping-method": new ShippingMethodRepository(config),
|
|
7796
8081
|
"shopping-list": new ShoppingListRepository(config),
|
|
7797
8082
|
"staged-quote": new StagedQuoteRepository(config),
|
|
7798
8083
|
"standalone-price": new StandAlonePriceRepository(config),
|
|
7799
|
-
|
|
7800
|
-
|
|
7801
|
-
|
|
8084
|
+
state: new StateRepository(config),
|
|
8085
|
+
store: new StoreRepository(config),
|
|
8086
|
+
subscription: new SubscriptionRepository(config),
|
|
7802
8087
|
"tax-category": new TaxCategoryRepository(config),
|
|
7803
|
-
|
|
7804
|
-
|
|
8088
|
+
type: new TypeRepository(config),
|
|
8089
|
+
zone: new ZoneRepository(config)
|
|
7805
8090
|
});
|
|
7806
8091
|
|
|
7807
8092
|
// src/services/as-associate.ts
|
|
@@ -7882,7 +8167,7 @@ var AbstractService = class {
|
|
|
7882
8167
|
return response.status(200).send(result);
|
|
7883
8168
|
}
|
|
7884
8169
|
getWithId(request, response) {
|
|
7885
|
-
const result = this._expandWithId(request, request.params
|
|
8170
|
+
const result = this._expandWithId(request, request.params.id);
|
|
7886
8171
|
if (!result) {
|
|
7887
8172
|
return response.status(404).send();
|
|
7888
8173
|
}
|
|
@@ -7891,18 +8176,19 @@ var AbstractService = class {
|
|
|
7891
8176
|
getWithKey(request, response) {
|
|
7892
8177
|
const result = this.repository.getByKey(
|
|
7893
8178
|
getRepositoryContext(request),
|
|
7894
|
-
request.params
|
|
8179
|
+
request.params.key,
|
|
7895
8180
|
{
|
|
7896
8181
|
expand: this._parseParam(request.query.expand)
|
|
7897
8182
|
}
|
|
7898
8183
|
);
|
|
7899
|
-
if (!result)
|
|
8184
|
+
if (!result)
|
|
8185
|
+
return response.status(404).send();
|
|
7900
8186
|
return response.status(200).send(result);
|
|
7901
8187
|
}
|
|
7902
8188
|
deleteWithId(request, response) {
|
|
7903
8189
|
const result = this.repository.delete(
|
|
7904
8190
|
getRepositoryContext(request),
|
|
7905
|
-
request.params
|
|
8191
|
+
request.params.id,
|
|
7906
8192
|
{
|
|
7907
8193
|
expand: this._parseParam(request.query.expand)
|
|
7908
8194
|
}
|
|
@@ -7915,7 +8201,7 @@ var AbstractService = class {
|
|
|
7915
8201
|
deleteWithKey(request, response) {
|
|
7916
8202
|
const resource = this.repository.getByKey(
|
|
7917
8203
|
getRepositoryContext(request),
|
|
7918
|
-
request.params
|
|
8204
|
+
request.params.key
|
|
7919
8205
|
);
|
|
7920
8206
|
if (!resource) {
|
|
7921
8207
|
return response.status(404).send("Not found");
|
|
@@ -7948,7 +8234,7 @@ var AbstractService = class {
|
|
|
7948
8234
|
);
|
|
7949
8235
|
const resource = this.repository.get(
|
|
7950
8236
|
getRepositoryContext(request),
|
|
7951
|
-
request.params
|
|
8237
|
+
request.params.id
|
|
7952
8238
|
);
|
|
7953
8239
|
if (!resource) {
|
|
7954
8240
|
return response.status(404).send("Not found");
|
|
@@ -7969,7 +8255,7 @@ var AbstractService = class {
|
|
|
7969
8255
|
);
|
|
7970
8256
|
const resource = this.repository.getByKey(
|
|
7971
8257
|
getRepositoryContext(request),
|
|
7972
|
-
request.params
|
|
8258
|
+
request.params.key
|
|
7973
8259
|
);
|
|
7974
8260
|
if (!resource) {
|
|
7975
8261
|
return response.status(404).send("Not found");
|
|
@@ -8665,19 +8951,19 @@ var ProductProjectionService = class extends AbstractService {
|
|
|
8665
8951
|
search(request, response) {
|
|
8666
8952
|
const query = request.query;
|
|
8667
8953
|
const searchParams = {
|
|
8668
|
-
|
|
8954
|
+
filter: queryParamsArray(query.filter),
|
|
8669
8955
|
"filter.query": queryParamsArray(query["filter.query"]),
|
|
8670
|
-
|
|
8671
|
-
|
|
8672
|
-
|
|
8673
|
-
|
|
8674
|
-
|
|
8675
|
-
|
|
8676
|
-
|
|
8677
|
-
|
|
8678
|
-
|
|
8679
|
-
|
|
8680
|
-
|
|
8956
|
+
facet: queryParamsArray(query.facet),
|
|
8957
|
+
expand: queryParamsArray(query.expand),
|
|
8958
|
+
staged: queryParamsValue(query.staged) === "true",
|
|
8959
|
+
localeProjection: queryParamsValue(query.localeProjection),
|
|
8960
|
+
storeProjection: queryParamsValue(query.storeProjection),
|
|
8961
|
+
priceChannel: queryParamsValue(query.priceChannel),
|
|
8962
|
+
priceCountry: queryParamsValue(query.priceCountry),
|
|
8963
|
+
priceCurrency: queryParamsValue(query.priceCurrency),
|
|
8964
|
+
priceCustomerGroup: queryParamsValue(query.priceCustomerGroup),
|
|
8965
|
+
offset: query.offset ? Number(queryParamsValue(query.offset)) : void 0,
|
|
8966
|
+
limit: query.limit ? Number(queryParamsValue(query.limit)) : void 0
|
|
8681
8967
|
};
|
|
8682
8968
|
const resource = this.repository.search(
|
|
8683
8969
|
getRepositoryContext(request),
|
|
@@ -8711,6 +8997,42 @@ var ProductTypeService = class extends AbstractService {
|
|
|
8711
8997
|
}
|
|
8712
8998
|
};
|
|
8713
8999
|
|
|
9000
|
+
// src/services/quote.ts
|
|
9001
|
+
var QuoteService = class extends AbstractService {
|
|
9002
|
+
repository;
|
|
9003
|
+
constructor(parent, repository) {
|
|
9004
|
+
super(parent);
|
|
9005
|
+
this.repository = repository;
|
|
9006
|
+
}
|
|
9007
|
+
getBasePath() {
|
|
9008
|
+
return "quotes";
|
|
9009
|
+
}
|
|
9010
|
+
};
|
|
9011
|
+
|
|
9012
|
+
// src/services/quote-request.ts
|
|
9013
|
+
var QuoteRequestService = class extends AbstractService {
|
|
9014
|
+
repository;
|
|
9015
|
+
constructor(parent, repository) {
|
|
9016
|
+
super(parent);
|
|
9017
|
+
this.repository = repository;
|
|
9018
|
+
}
|
|
9019
|
+
getBasePath() {
|
|
9020
|
+
return "quote-requests";
|
|
9021
|
+
}
|
|
9022
|
+
};
|
|
9023
|
+
|
|
9024
|
+
// src/services/quote-staged.ts
|
|
9025
|
+
var StagedQuoteService = class extends AbstractService {
|
|
9026
|
+
repository;
|
|
9027
|
+
constructor(parent, repository) {
|
|
9028
|
+
super(parent);
|
|
9029
|
+
this.repository = repository;
|
|
9030
|
+
}
|
|
9031
|
+
getBasePath() {
|
|
9032
|
+
return "staged-quotes";
|
|
9033
|
+
}
|
|
9034
|
+
};
|
|
9035
|
+
|
|
8714
9036
|
// src/services/reviews.ts
|
|
8715
9037
|
var ReviewService = class extends AbstractService {
|
|
8716
9038
|
repository;
|
|
@@ -8854,14 +9176,14 @@ var createServices = (router, repos) => ({
|
|
|
8854
9176
|
"associate-role": new AssociateRoleServices(router, repos["associate-role"]),
|
|
8855
9177
|
"as-associate": new AsAssociateService(router, repos["as-associate"]),
|
|
8856
9178
|
"business-unit": new BusinessUnitServices(router, repos["business-unit"]),
|
|
8857
|
-
|
|
8858
|
-
|
|
9179
|
+
category: new CategoryServices(router, repos.category),
|
|
9180
|
+
cart: new CartService(router, repos.cart, repos.order),
|
|
8859
9181
|
"cart-discount": new CartDiscountService(router, repos["cart-discount"]),
|
|
8860
|
-
|
|
8861
|
-
|
|
9182
|
+
customer: new CustomerService(router, repos.customer),
|
|
9183
|
+
channel: new ChannelService(router, repos.channel),
|
|
8862
9184
|
"customer-group": new CustomerGroupService(router, repos["customer-group"]),
|
|
8863
9185
|
"discount-code": new DiscountCodeService(router, repos["discount-code"]),
|
|
8864
|
-
|
|
9186
|
+
extension: new ExtensionServices(router, repos.extension),
|
|
8865
9187
|
"inventory-entry": new InventoryEntryService(
|
|
8866
9188
|
router,
|
|
8867
9189
|
repos["inventory-entry"]
|
|
@@ -8870,8 +9192,8 @@ var createServices = (router, repos) => ({
|
|
|
8870
9192
|
router,
|
|
8871
9193
|
repos["key-value-document"]
|
|
8872
9194
|
),
|
|
8873
|
-
|
|
8874
|
-
|
|
9195
|
+
order: new OrderService(router, repos.order),
|
|
9196
|
+
payment: new PaymentService(router, repos.payment),
|
|
8875
9197
|
"standalone-price": new StandAlonePriceService(
|
|
8876
9198
|
router,
|
|
8877
9199
|
repos["standalone-price"]
|
|
@@ -8890,7 +9212,7 @@ var createServices = (router, repos) => ({
|
|
|
8890
9212
|
repos["shipping-method"]
|
|
8891
9213
|
),
|
|
8892
9214
|
"product-type": new ProductTypeService(router, repos["product-type"]),
|
|
8893
|
-
|
|
9215
|
+
product: new ProductService(router, repos.product),
|
|
8894
9216
|
"product-discount": new ProductDiscountService(
|
|
8895
9217
|
router,
|
|
8896
9218
|
repos["product-discount"]
|
|
@@ -8903,18 +9225,21 @@ var createServices = (router, repos) => ({
|
|
|
8903
9225
|
router,
|
|
8904
9226
|
repos["product-selection"]
|
|
8905
9227
|
),
|
|
8906
|
-
|
|
9228
|
+
quotes: new QuoteService(router, repos.quote),
|
|
9229
|
+
"quote-request": new QuoteRequestService(router, repos["quote-request"]),
|
|
9230
|
+
reviews: new ReviewService(router, repos.review),
|
|
8907
9231
|
"shopping-list": new ShoppingListService(router, repos["shopping-list"]),
|
|
8908
|
-
"
|
|
8909
|
-
|
|
8910
|
-
|
|
9232
|
+
"staged-quote": new StagedQuoteService(router, repos["staged-quote"]),
|
|
9233
|
+
state: new StateService(router, repos.state),
|
|
9234
|
+
store: new StoreService(router, repos.store),
|
|
9235
|
+
subscription: new SubscriptionService(router, repos.subscription),
|
|
8911
9236
|
"tax-category": new TaxCategoryService(router, repos["tax-category"]),
|
|
8912
9237
|
"attribute-group": new AttributeGroupService(
|
|
8913
9238
|
router,
|
|
8914
9239
|
repos["attribute-group"]
|
|
8915
9240
|
),
|
|
8916
|
-
|
|
8917
|
-
|
|
9241
|
+
type: new TypeService(router, repos.type),
|
|
9242
|
+
zone: new ZoneService(router, repos.zone)
|
|
8918
9243
|
});
|
|
8919
9244
|
|
|
8920
9245
|
// src/services/project.ts
|
|
@@ -8956,7 +9281,7 @@ var AbstractStorage = class {
|
|
|
8956
9281
|
};
|
|
8957
9282
|
|
|
8958
9283
|
// src/storage/in-memory.ts
|
|
8959
|
-
var
|
|
9284
|
+
var import_node_assert5 = __toESM(require("assert"), 1);
|
|
8960
9285
|
var InMemoryStorage = class extends AbstractStorage {
|
|
8961
9286
|
resources = {};
|
|
8962
9287
|
projects = {};
|
|
@@ -9003,7 +9328,8 @@ var InMemoryStorage = class extends AbstractStorage {
|
|
|
9003
9328
|
getProject = (projectKey) => this.addProject(projectKey);
|
|
9004
9329
|
// Expand resolves a nested reference and injects the object in the given obj
|
|
9005
9330
|
expand = (projectKey, obj, clause) => {
|
|
9006
|
-
if (!clause)
|
|
9331
|
+
if (!clause)
|
|
9332
|
+
return obj;
|
|
9007
9333
|
const newObj = cloneObject(obj);
|
|
9008
9334
|
if (Array.isArray(clause)) {
|
|
9009
9335
|
for (const c of clause) {
|
|
@@ -9034,13 +9360,15 @@ var InMemoryStorage = class extends AbstractStorage {
|
|
|
9034
9360
|
this._resolveReference(projectKey, reference, params.rest);
|
|
9035
9361
|
} else if (params.index === "*") {
|
|
9036
9362
|
const reference = obj[params.element];
|
|
9037
|
-
if (reference === void 0 || !Array.isArray(reference))
|
|
9363
|
+
if (reference === void 0 || !Array.isArray(reference))
|
|
9364
|
+
return;
|
|
9038
9365
|
for (const itemRef of reference) {
|
|
9039
9366
|
this._resolveReference(projectKey, itemRef, params.rest);
|
|
9040
9367
|
}
|
|
9041
9368
|
} else {
|
|
9042
9369
|
const reference = obj[params.element][params.index];
|
|
9043
|
-
if (reference === void 0)
|
|
9370
|
+
if (reference === void 0)
|
|
9371
|
+
return;
|
|
9044
9372
|
this._resolveReference(projectKey, reference, params.rest);
|
|
9045
9373
|
}
|
|
9046
9374
|
};
|
|
@@ -9052,38 +9380,38 @@ var InMemoryStorage = class extends AbstractStorage {
|
|
|
9052
9380
|
"associate-role": /* @__PURE__ */ new Map(),
|
|
9053
9381
|
"attribute-group": /* @__PURE__ */ new Map(),
|
|
9054
9382
|
"business-unit": /* @__PURE__ */ new Map(),
|
|
9055
|
-
|
|
9383
|
+
cart: /* @__PURE__ */ new Map(),
|
|
9056
9384
|
"cart-discount": /* @__PURE__ */ new Map(),
|
|
9057
|
-
|
|
9058
|
-
|
|
9059
|
-
|
|
9385
|
+
category: /* @__PURE__ */ new Map(),
|
|
9386
|
+
channel: /* @__PURE__ */ new Map(),
|
|
9387
|
+
customer: /* @__PURE__ */ new Map(),
|
|
9060
9388
|
"customer-group": /* @__PURE__ */ new Map(),
|
|
9061
9389
|
"discount-code": /* @__PURE__ */ new Map(),
|
|
9062
|
-
|
|
9390
|
+
extension: /* @__PURE__ */ new Map(),
|
|
9063
9391
|
"inventory-entry": /* @__PURE__ */ new Map(),
|
|
9064
9392
|
"key-value-document": /* @__PURE__ */ new Map(),
|
|
9065
|
-
|
|
9393
|
+
order: /* @__PURE__ */ new Map(),
|
|
9066
9394
|
"order-edit": /* @__PURE__ */ new Map(),
|
|
9067
|
-
|
|
9068
|
-
|
|
9069
|
-
|
|
9395
|
+
payment: /* @__PURE__ */ new Map(),
|
|
9396
|
+
product: /* @__PURE__ */ new Map(),
|
|
9397
|
+
quote: /* @__PURE__ */ new Map(),
|
|
9070
9398
|
"quote-request": /* @__PURE__ */ new Map(),
|
|
9071
9399
|
"product-discount": /* @__PURE__ */ new Map(),
|
|
9072
9400
|
"product-selection": /* @__PURE__ */ new Map(),
|
|
9073
9401
|
"product-type": /* @__PURE__ */ new Map(),
|
|
9074
9402
|
"product-projection": /* @__PURE__ */ new Map(),
|
|
9075
9403
|
"product-tailoring": /* @__PURE__ */ new Map(),
|
|
9076
|
-
|
|
9404
|
+
review: /* @__PURE__ */ new Map(),
|
|
9077
9405
|
"shipping-method": /* @__PURE__ */ new Map(),
|
|
9078
9406
|
"staged-quote": /* @__PURE__ */ new Map(),
|
|
9079
|
-
|
|
9080
|
-
|
|
9407
|
+
state: /* @__PURE__ */ new Map(),
|
|
9408
|
+
store: /* @__PURE__ */ new Map(),
|
|
9081
9409
|
"shopping-list": /* @__PURE__ */ new Map(),
|
|
9082
9410
|
"standalone-price": /* @__PURE__ */ new Map(),
|
|
9083
|
-
|
|
9411
|
+
subscription: /* @__PURE__ */ new Map(),
|
|
9084
9412
|
"tax-category": /* @__PURE__ */ new Map(),
|
|
9085
|
-
|
|
9086
|
-
|
|
9413
|
+
type: /* @__PURE__ */ new Map(),
|
|
9414
|
+
zone: /* @__PURE__ */ new Map()
|
|
9087
9415
|
};
|
|
9088
9416
|
}
|
|
9089
9417
|
return projectStorage;
|
|
@@ -9106,7 +9434,7 @@ var InMemoryStorage = class extends AbstractStorage {
|
|
|
9106
9434
|
const store = this.forProjectKey(projectKey);
|
|
9107
9435
|
store[typeId]?.set(obj.id, obj);
|
|
9108
9436
|
const resource = this.get(projectKey, typeId, obj.id, params);
|
|
9109
|
-
(0,
|
|
9437
|
+
(0, import_node_assert5.default)(
|
|
9110
9438
|
resource,
|
|
9111
9439
|
`resource of type ${typeId} with id ${obj.id} not created`
|
|
9112
9440
|
);
|
|
@@ -9251,7 +9579,8 @@ var InMemoryStorage = class extends AbstractStorage {
|
|
|
9251
9579
|
});
|
|
9252
9580
|
}
|
|
9253
9581
|
_resolveReference(projectKey, reference, expand) {
|
|
9254
|
-
if (reference === void 0)
|
|
9582
|
+
if (reference === void 0)
|
|
9583
|
+
return;
|
|
9255
9584
|
if (reference.typeId !== void 0 && (reference.id !== void 0 || reference.key !== void 0)) {
|
|
9256
9585
|
if (!reference.obj) {
|
|
9257
9586
|
reference.obj = this.getByResourceIdentifier(projectKey, {
|
|
@@ -9404,12 +9733,11 @@ var CommercetoolsMock = class {
|
|
|
9404
9733
|
message: err.message,
|
|
9405
9734
|
errors: [err.info]
|
|
9406
9735
|
});
|
|
9407
|
-
} else {
|
|
9408
|
-
console.error(err);
|
|
9409
|
-
return resp.status(500).send({
|
|
9410
|
-
error: err.message
|
|
9411
|
-
});
|
|
9412
9736
|
}
|
|
9737
|
+
console.error(err);
|
|
9738
|
+
return resp.status(500).send({
|
|
9739
|
+
error: err.message
|
|
9740
|
+
});
|
|
9413
9741
|
});
|
|
9414
9742
|
return app;
|
|
9415
9743
|
}
|
|
@@ -9427,7 +9755,7 @@ var CommercetoolsMock = class {
|
|
|
9427
9755
|
const body = await request.text();
|
|
9428
9756
|
const url = new URL(request.url);
|
|
9429
9757
|
const headers = copyHeaders(request.headers);
|
|
9430
|
-
const res = await (0, import_light_my_request.default)(app).post(url.pathname
|
|
9758
|
+
const res = await (0, import_light_my_request.default)(app).post(`${url.pathname}?${url.searchParams.toString()}`).body(body).headers(headers).end();
|
|
9431
9759
|
return new import_msw.HttpResponse(res.body, {
|
|
9432
9760
|
status: res.statusCode,
|
|
9433
9761
|
headers: mapHeaderType(res.headers)
|
|
@@ -9437,7 +9765,7 @@ var CommercetoolsMock = class {
|
|
|
9437
9765
|
const body = await request.text();
|
|
9438
9766
|
const url = new URL(request.url);
|
|
9439
9767
|
const headers = copyHeaders(request.headers);
|
|
9440
|
-
const res = await (0, import_light_my_request.default)(app).get(url.pathname
|
|
9768
|
+
const res = await (0, import_light_my_request.default)(app).get(`${url.pathname}?${url.searchParams.toString()}`).body(body).headers(headers).end();
|
|
9441
9769
|
if (res.statusCode === 200) {
|
|
9442
9770
|
const parsedBody = JSON.parse(res.body);
|
|
9443
9771
|
const resultCount = "count" in parsedBody ? parsedBody.count : Object.keys(parsedBody).length;
|
|
@@ -9455,7 +9783,7 @@ var CommercetoolsMock = class {
|
|
|
9455
9783
|
const body = await request.text();
|
|
9456
9784
|
const url = new URL(request.url);
|
|
9457
9785
|
const headers = copyHeaders(request.headers);
|
|
9458
|
-
const res = await (0, import_light_my_request.default)(app).get(url.pathname
|
|
9786
|
+
const res = await (0, import_light_my_request.default)(app).get(`${url.pathname}?${url.searchParams.toString()}`).body(body).headers(headers).end();
|
|
9459
9787
|
return new import_msw.HttpResponse(res.body, {
|
|
9460
9788
|
status: res.statusCode,
|
|
9461
9789
|
headers: mapHeaderType(res.headers)
|
|
@@ -9465,7 +9793,7 @@ var CommercetoolsMock = class {
|
|
|
9465
9793
|
const body = await request.text();
|
|
9466
9794
|
const url = new URL(request.url);
|
|
9467
9795
|
const headers = copyHeaders(request.headers);
|
|
9468
|
-
const res = await (0, import_light_my_request.default)(app).post(url.pathname
|
|
9796
|
+
const res = await (0, import_light_my_request.default)(app).post(`${url.pathname}?${url.searchParams.toString()}`).body(body).headers(headers).end();
|
|
9469
9797
|
return new import_msw.HttpResponse(res.body, {
|
|
9470
9798
|
status: res.statusCode,
|
|
9471
9799
|
headers: mapHeaderType(res.headers)
|
|
@@ -9475,7 +9803,7 @@ var CommercetoolsMock = class {
|
|
|
9475
9803
|
const body = await request.text();
|
|
9476
9804
|
const url = new URL(request.url);
|
|
9477
9805
|
const headers = copyHeaders(request.headers);
|
|
9478
|
-
const res = await (0, import_light_my_request.default)(app).delete(url.pathname
|
|
9806
|
+
const res = await (0, import_light_my_request.default)(app).delete(`${url.pathname}?${url.searchParams.toString()}`).body(body).headers(headers).end();
|
|
9479
9807
|
return new import_msw.HttpResponse(res.body, {
|
|
9480
9808
|
status: res.statusCode,
|
|
9481
9809
|
headers: mapHeaderType(res.headers)
|
|
@@ -9490,10 +9818,9 @@ var CommercetoolsMock = class {
|
|
|
9490
9818
|
if (_globalListeners.length > 0) {
|
|
9491
9819
|
if (this._mswServer !== void 0) {
|
|
9492
9820
|
throw new Error("Server already started");
|
|
9493
|
-
} else {
|
|
9494
|
-
process.emitWarning("Server wasn't stopped properly, clearing");
|
|
9495
|
-
_globalListeners.forEach((listener) => listener.close());
|
|
9496
9821
|
}
|
|
9822
|
+
process.emitWarning("Server wasn't stopped properly, clearing");
|
|
9823
|
+
_globalListeners.forEach((listener) => listener.close());
|
|
9497
9824
|
}
|
|
9498
9825
|
const server = (0, import_node.setupServer)();
|
|
9499
9826
|
this.registerHandlers(server);
|