@labdigital/commercetools-mock 0.10.0 → 0.11.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.d.ts +353 -188
- package/dist/index.global.js +1007 -876
- package/dist/index.global.js.map +1 -1
- package/dist/index.js +348 -217
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +348 -217
- package/dist/index.mjs.map +1 -1
- package/package.json +3 -2
- package/src/ctMock.ts +15 -9
- package/src/helpers.ts +1 -1
- package/src/lib/projectionSearchFilter.ts +3 -2
- package/src/priceSelector.test.ts +1 -3
- package/src/product-projection-search.ts +1 -3
- package/src/projectAPI.test.ts +7 -0
- package/src/projectAPI.ts +17 -22
- package/src/repositories/abstract.ts +31 -24
- package/src/repositories/cart-discount.ts +3 -4
- package/src/repositories/cart.ts +20 -15
- package/src/repositories/category.ts +6 -7
- package/src/repositories/channel.ts +4 -5
- package/src/repositories/custom-object.ts +9 -13
- package/src/repositories/customer-group.ts +3 -4
- package/src/repositories/customer.ts +4 -5
- package/src/repositories/discount-code.ts +4 -5
- package/src/repositories/errors.ts +1 -3
- package/src/repositories/extension.ts +7 -8
- package/src/repositories/helpers.ts +2 -2
- package/src/repositories/index.ts +19 -3
- package/src/repositories/inventory-entry.ts +4 -5
- package/src/repositories/my-order.ts +2 -2
- package/src/repositories/order-edit.ts +39 -0
- package/src/repositories/order.test.ts +16 -11
- package/src/repositories/order.ts +15 -8
- package/src/repositories/payment.ts +6 -7
- package/src/repositories/product-discount.ts +4 -24
- package/src/repositories/product-projection.ts +11 -5
- package/src/repositories/product-selection.ts +40 -0
- package/src/repositories/product-type.ts +11 -28
- package/src/repositories/product.ts +117 -10
- package/src/repositories/project.ts +9 -8
- package/src/repositories/quote-request.ts +28 -0
- package/src/repositories/quote.ts +28 -0
- package/src/repositories/review.ts +34 -0
- package/src/repositories/shipping-method.ts +10 -11
- package/src/repositories/shopping-list.ts +4 -4
- package/src/repositories/staged-quote.ts +29 -0
- package/src/repositories/standalone-price.ts +36 -0
- package/src/repositories/state.ts +15 -8
- package/src/repositories/store.ts +11 -27
- package/src/repositories/subscription.ts +3 -4
- package/src/repositories/tax-category.ts +5 -22
- package/src/repositories/type.ts +12 -13
- package/src/repositories/zone.ts +4 -5
- package/src/server.ts +4 -4
- package/src/services/abstract.ts +3 -5
- package/src/services/cart-discount.ts +1 -1
- package/src/services/cart.test.ts +1 -1
- package/src/services/cart.ts +40 -33
- package/src/services/category.ts +1 -1
- package/src/services/channel.ts +1 -1
- package/src/services/custom-object.test.ts +1 -1
- package/src/services/custom-object.ts +2 -2
- package/src/services/customer-group.ts +1 -1
- package/src/services/customer.test.ts +1 -1
- package/src/services/customer.ts +3 -3
- package/src/services/discount-code.ts +1 -1
- package/src/services/extension.ts +1 -1
- package/src/services/inventory-entry.test.ts +1 -1
- package/src/services/inventory-entry.ts +1 -1
- package/src/services/my-cart.test.ts +2 -0
- package/src/services/my-cart.ts +1 -1
- package/src/services/my-customer.ts +1 -1
- package/src/services/my-order.ts +1 -1
- package/src/services/my-payment.ts +1 -1
- package/src/services/order.test.ts +24 -20
- package/src/services/order.ts +2 -2
- package/src/services/payment.ts +1 -1
- package/src/services/product-discount.ts +1 -17
- package/src/services/product-projection.test.ts +1 -1
- package/src/services/product-projection.ts +2 -2
- package/src/services/product-type.ts +1 -17
- package/src/services/product.test.ts +63 -2
- package/src/services/product.ts +1 -1
- package/src/services/project.ts +4 -5
- package/src/services/shipping-method.ts +1 -1
- package/src/services/shopping-list.ts +1 -1
- package/src/services/state.ts +1 -1
- package/src/services/store.ts +2 -18
- package/src/services/subscription.ts +1 -1
- package/src/services/tax-category.ts +1 -17
- package/src/services/type.ts +1 -1
- package/src/services/zone.ts +1 -1
- package/src/storage/abstract.ts +82 -0
- package/src/{storage.ts → storage/in-memory.ts} +57 -118
- package/src/storage/index.ts +2 -0
- package/src/types.ts +48 -119
package/dist/index.js
CHANGED
|
@@ -37,9 +37,56 @@ var import_express6 = __toESM(require("express"));
|
|
|
37
37
|
var import_supertest = __toESM(require("supertest"));
|
|
38
38
|
var import_morgan = __toESM(require("morgan"));
|
|
39
39
|
|
|
40
|
-
// src/storage.ts
|
|
40
|
+
// src/storage/abstract.ts
|
|
41
|
+
var AbstractStorage = class {
|
|
42
|
+
};
|
|
43
|
+
|
|
44
|
+
// src/storage/in-memory.ts
|
|
41
45
|
var import_assert = __toESM(require("assert"));
|
|
42
46
|
|
|
47
|
+
// src/exceptions.ts
|
|
48
|
+
var CommercetoolsError = class extends Error {
|
|
49
|
+
constructor(info, statusCode = 400) {
|
|
50
|
+
super(info.message);
|
|
51
|
+
this.info = info;
|
|
52
|
+
this.statusCode = statusCode || 500;
|
|
53
|
+
}
|
|
54
|
+
};
|
|
55
|
+
|
|
56
|
+
// src/helpers.ts
|
|
57
|
+
var import_uuid = require("uuid");
|
|
58
|
+
var getBaseResourceProperties = () => ({
|
|
59
|
+
id: (0, import_uuid.v4)(),
|
|
60
|
+
createdAt: new Date().toISOString(),
|
|
61
|
+
lastModifiedAt: new Date().toISOString(),
|
|
62
|
+
version: 0
|
|
63
|
+
});
|
|
64
|
+
var nestedLookup = (obj, path) => {
|
|
65
|
+
if (!path || path === "") {
|
|
66
|
+
return obj;
|
|
67
|
+
}
|
|
68
|
+
const parts = path.split(".");
|
|
69
|
+
let val = obj;
|
|
70
|
+
for (let i = 0; i < parts.length; i++) {
|
|
71
|
+
const part = parts[i];
|
|
72
|
+
if (val == void 0) {
|
|
73
|
+
return void 0;
|
|
74
|
+
}
|
|
75
|
+
val = val[part];
|
|
76
|
+
}
|
|
77
|
+
return val;
|
|
78
|
+
};
|
|
79
|
+
var QueryParamsAsArray = (input) => {
|
|
80
|
+
if (input == void 0) {
|
|
81
|
+
return [];
|
|
82
|
+
}
|
|
83
|
+
if (Array.isArray(input)) {
|
|
84
|
+
return input;
|
|
85
|
+
}
|
|
86
|
+
return [input];
|
|
87
|
+
};
|
|
88
|
+
var cloneObject = (o) => JSON.parse(JSON.stringify(o));
|
|
89
|
+
|
|
43
90
|
// src/lib/expandParser.ts
|
|
44
91
|
var parseExpandClause = (clause) => {
|
|
45
92
|
const result = {
|
|
@@ -357,52 +404,7 @@ var generateMatchFunc = (predicate) => {
|
|
|
357
404
|
return result;
|
|
358
405
|
};
|
|
359
406
|
|
|
360
|
-
// src/
|
|
361
|
-
var CommercetoolsError = class extends Error {
|
|
362
|
-
constructor(info, statusCode = 400) {
|
|
363
|
-
super(info.message);
|
|
364
|
-
this.info = info;
|
|
365
|
-
this.statusCode = statusCode || 500;
|
|
366
|
-
}
|
|
367
|
-
};
|
|
368
|
-
|
|
369
|
-
// src/helpers.ts
|
|
370
|
-
var import_uuid = require("uuid");
|
|
371
|
-
var getBaseResourceProperties = () => ({
|
|
372
|
-
id: (0, import_uuid.v4)(),
|
|
373
|
-
createdAt: new Date().toISOString(),
|
|
374
|
-
lastModifiedAt: new Date().toISOString(),
|
|
375
|
-
version: 0
|
|
376
|
-
});
|
|
377
|
-
var nestedLookup = (obj, path) => {
|
|
378
|
-
if (!path || path === "") {
|
|
379
|
-
return obj;
|
|
380
|
-
}
|
|
381
|
-
const parts = path.split(".");
|
|
382
|
-
let val = obj;
|
|
383
|
-
for (let i = 0; i < parts.length; i++) {
|
|
384
|
-
const part = parts[i];
|
|
385
|
-
if (val == void 0) {
|
|
386
|
-
return void 0;
|
|
387
|
-
}
|
|
388
|
-
val = val[part];
|
|
389
|
-
}
|
|
390
|
-
return val;
|
|
391
|
-
};
|
|
392
|
-
var QueryParamsAsArray = (input) => {
|
|
393
|
-
if (input == void 0) {
|
|
394
|
-
return [];
|
|
395
|
-
}
|
|
396
|
-
if (Array.isArray(input)) {
|
|
397
|
-
return input;
|
|
398
|
-
}
|
|
399
|
-
return [input];
|
|
400
|
-
};
|
|
401
|
-
var cloneObject = (o) => JSON.parse(JSON.stringify(o));
|
|
402
|
-
|
|
403
|
-
// src/storage.ts
|
|
404
|
-
var AbstractStorage = class {
|
|
405
|
-
};
|
|
407
|
+
// src/storage/in-memory.ts
|
|
406
408
|
var InMemoryStorage = class extends AbstractStorage {
|
|
407
409
|
constructor() {
|
|
408
410
|
super(...arguments);
|
|
@@ -498,13 +500,15 @@ var InMemoryStorage = class extends AbstractStorage {
|
|
|
498
500
|
"order-edit": /* @__PURE__ */ new Map(),
|
|
499
501
|
payment: /* @__PURE__ */ new Map(),
|
|
500
502
|
product: /* @__PURE__ */ new Map(),
|
|
503
|
+
quote: /* @__PURE__ */ new Map(),
|
|
504
|
+
"quote-request": /* @__PURE__ */ new Map(),
|
|
501
505
|
"product-discount": /* @__PURE__ */ new Map(),
|
|
502
|
-
"product-price": /* @__PURE__ */ new Map(),
|
|
503
506
|
"product-selection": /* @__PURE__ */ new Map(),
|
|
504
507
|
"product-type": /* @__PURE__ */ new Map(),
|
|
505
508
|
"product-projection": /* @__PURE__ */ new Map(),
|
|
506
509
|
review: /* @__PURE__ */ new Map(),
|
|
507
510
|
"shipping-method": /* @__PURE__ */ new Map(),
|
|
511
|
+
"staged-quote": /* @__PURE__ */ new Map(),
|
|
508
512
|
state: /* @__PURE__ */ new Map(),
|
|
509
513
|
store: /* @__PURE__ */ new Map(),
|
|
510
514
|
"shopping-list": /* @__PURE__ */ new Map(),
|
|
@@ -576,7 +580,7 @@ var InMemoryStorage = class extends AbstractStorage {
|
|
|
576
580
|
if (!store) {
|
|
577
581
|
throw new Error("No type");
|
|
578
582
|
}
|
|
579
|
-
let resources =
|
|
583
|
+
let resources = this.all(projectKey, typeId);
|
|
580
584
|
if (params.where) {
|
|
581
585
|
try {
|
|
582
586
|
const filterFunc = parseQueryExpression(params.where);
|
|
@@ -650,7 +654,7 @@ var InMemoryStorage = class extends AbstractStorage {
|
|
|
650
654
|
console.error(
|
|
651
655
|
`No resource found with typeId=${identifier.typeId}, id=${identifier.id}`
|
|
652
656
|
);
|
|
653
|
-
return
|
|
657
|
+
return null;
|
|
654
658
|
}
|
|
655
659
|
if (identifier.key) {
|
|
656
660
|
const store = this.forProjectKey(projectKey)[identifier.typeId];
|
|
@@ -667,7 +671,7 @@ var InMemoryStorage = class extends AbstractStorage {
|
|
|
667
671
|
);
|
|
668
672
|
}
|
|
669
673
|
}
|
|
670
|
-
return
|
|
674
|
+
return null;
|
|
671
675
|
}
|
|
672
676
|
_resolveReference(projectKey, reference, expand) {
|
|
673
677
|
if (reference === void 0)
|
|
@@ -834,14 +838,14 @@ var OAuth2Server = class {
|
|
|
834
838
|
|
|
835
839
|
// src/projectAPI.ts
|
|
836
840
|
var ProjectAPI = class {
|
|
837
|
-
constructor(projectKey,
|
|
841
|
+
constructor(projectKey, repositories, storage) {
|
|
838
842
|
this.projectKey = projectKey;
|
|
839
843
|
this._storage = storage;
|
|
840
|
-
this.
|
|
844
|
+
this._repositories = repositories;
|
|
841
845
|
}
|
|
842
846
|
add(typeId, resource) {
|
|
843
|
-
const
|
|
844
|
-
if (
|
|
847
|
+
const repository = this._repositories[typeId];
|
|
848
|
+
if (repository) {
|
|
845
849
|
this._storage.add(this.projectKey, typeId, {
|
|
846
850
|
...getBaseResourceProperties(),
|
|
847
851
|
...resource
|
|
@@ -859,9 +863,9 @@ var ProjectAPI = class {
|
|
|
859
863
|
);
|
|
860
864
|
}
|
|
861
865
|
getRepository(typeId) {
|
|
862
|
-
const
|
|
863
|
-
if (
|
|
864
|
-
return
|
|
866
|
+
const repository = this._repositories[typeId];
|
|
867
|
+
if (repository !== void 0) {
|
|
868
|
+
return repository;
|
|
865
869
|
}
|
|
866
870
|
throw new Error("No such repository");
|
|
867
871
|
}
|
|
@@ -1031,13 +1035,13 @@ var ProjectService = class {
|
|
|
1031
1035
|
if (!project) {
|
|
1032
1036
|
return response.status(404).send({});
|
|
1033
1037
|
}
|
|
1034
|
-
this.repository.processUpdateActions(
|
|
1038
|
+
const updatedResource = this.repository.processUpdateActions(
|
|
1035
1039
|
getRepositoryContext(request),
|
|
1036
1040
|
project,
|
|
1037
1041
|
updateRequest.version,
|
|
1038
1042
|
updateRequest.actions
|
|
1039
1043
|
);
|
|
1040
|
-
return response.status(200).send(
|
|
1044
|
+
return response.status(200).send(updatedResource);
|
|
1041
1045
|
}
|
|
1042
1046
|
};
|
|
1043
1047
|
|
|
@@ -1097,14 +1101,14 @@ var AbstractRepository = class {
|
|
|
1097
1101
|
}
|
|
1098
1102
|
return result;
|
|
1099
1103
|
}
|
|
1100
|
-
postProcessResource(resource) {
|
|
1101
|
-
return resource;
|
|
1102
|
-
}
|
|
1103
1104
|
};
|
|
1104
1105
|
var AbstractResourceRepository = class extends AbstractRepository {
|
|
1105
1106
|
constructor(storage) {
|
|
1106
1107
|
super(storage);
|
|
1107
1108
|
}
|
|
1109
|
+
postProcessResource(resource) {
|
|
1110
|
+
return resource;
|
|
1111
|
+
}
|
|
1108
1112
|
query(context, params = {}) {
|
|
1109
1113
|
const result = this._storage.query(context.projectKey, this.getTypeId(), {
|
|
1110
1114
|
expand: params.expand,
|
|
@@ -1251,11 +1255,13 @@ var CartRepository = class extends AbstractResourceRepository {
|
|
|
1251
1255
|
id: (0, import_uuid3.v4)(),
|
|
1252
1256
|
productId: product.id,
|
|
1253
1257
|
productKey: product.key,
|
|
1254
|
-
name: product.masterData.current.name,
|
|
1255
1258
|
productSlug: product.masterData.current.slug,
|
|
1256
1259
|
productType: product.productType,
|
|
1260
|
+
name: product.masterData.current.name,
|
|
1257
1261
|
variant,
|
|
1258
1262
|
price,
|
|
1263
|
+
taxedPricePortions: [],
|
|
1264
|
+
perMethodTaxRate: [],
|
|
1259
1265
|
totalPrice: {
|
|
1260
1266
|
...price.value,
|
|
1261
1267
|
centAmount: price.value.centAmount * quantity
|
|
@@ -1402,15 +1408,17 @@ var CartRepository = class extends AbstractResourceRepository {
|
|
|
1402
1408
|
id: (0, import_uuid3.v4)(),
|
|
1403
1409
|
productId: product.id,
|
|
1404
1410
|
productKey: product.key,
|
|
1405
|
-
name: product.masterData.current.name,
|
|
1406
1411
|
productSlug: product.masterData.current.slug,
|
|
1407
1412
|
productType: product.productType,
|
|
1413
|
+
name: product.masterData.current.name,
|
|
1408
1414
|
variant,
|
|
1409
1415
|
price,
|
|
1410
1416
|
totalPrice: {
|
|
1411
1417
|
...price.value,
|
|
1412
1418
|
centAmount: price.value.centAmount * quant
|
|
1413
1419
|
},
|
|
1420
|
+
taxedPricePortions: [],
|
|
1421
|
+
perMethodTaxRate: [],
|
|
1414
1422
|
quantity: quant,
|
|
1415
1423
|
discountedPricePerQuantity: [],
|
|
1416
1424
|
lineItemMode: "Standard",
|
|
@@ -1435,21 +1443,23 @@ var CartRepository = class extends AbstractResourceRepository {
|
|
|
1435
1443
|
const resource = {
|
|
1436
1444
|
...getBaseResourceProperties(),
|
|
1437
1445
|
cartState: "Active",
|
|
1438
|
-
|
|
1446
|
+
country: draft.country,
|
|
1439
1447
|
customLineItems: [],
|
|
1448
|
+
lineItems,
|
|
1449
|
+
locale: draft.locale,
|
|
1450
|
+
taxCalculationMode: draft.taxCalculationMode ?? "LineItemLevel",
|
|
1451
|
+
taxMode: draft.taxMode ?? "Platform",
|
|
1452
|
+
taxRoundingMode: draft.taxRoundingMode ?? "HalfEven",
|
|
1440
1453
|
totalPrice: {
|
|
1441
1454
|
type: "centPrecision",
|
|
1442
1455
|
centAmount: 0,
|
|
1443
1456
|
currencyCode: draft.currency,
|
|
1444
1457
|
fractionDigits: 0
|
|
1445
1458
|
},
|
|
1446
|
-
|
|
1447
|
-
|
|
1448
|
-
taxCalculationMode: draft.taxCalculationMode ?? "LineItemLevel",
|
|
1449
|
-
refusedGifts: [],
|
|
1450
|
-
locale: draft.locale,
|
|
1451
|
-
country: draft.country,
|
|
1459
|
+
shippingMode: "Single",
|
|
1460
|
+
shipping: [],
|
|
1452
1461
|
origin: draft.origin ?? "Customer",
|
|
1462
|
+
refusedGifts: [],
|
|
1453
1463
|
custom: createCustomFields(
|
|
1454
1464
|
draft.custom,
|
|
1455
1465
|
context.projectKey,
|
|
@@ -1803,10 +1813,7 @@ var CustomObjectRepository = class extends AbstractResourceRepository {
|
|
|
1803
1813
|
}
|
|
1804
1814
|
}
|
|
1805
1815
|
getWithContainerAndKey(context, container, key) {
|
|
1806
|
-
const items = this._storage.all(
|
|
1807
|
-
context.projectKey,
|
|
1808
|
-
this.getTypeId()
|
|
1809
|
-
);
|
|
1816
|
+
const items = this._storage.all(context.projectKey, this.getTypeId());
|
|
1810
1817
|
return items.find(
|
|
1811
1818
|
(item) => item.container === container && item.key === key
|
|
1812
1819
|
);
|
|
@@ -1913,7 +1920,7 @@ var CustomerGroupRepository = class extends AbstractResourceRepository {
|
|
|
1913
1920
|
};
|
|
1914
1921
|
}
|
|
1915
1922
|
getTypeId() {
|
|
1916
|
-
return "customer";
|
|
1923
|
+
return "customer-group";
|
|
1917
1924
|
}
|
|
1918
1925
|
create(context, draft) {
|
|
1919
1926
|
const resource = {
|
|
@@ -1998,7 +2005,7 @@ var DiscountCodeRepository = class extends AbstractResourceRepository {
|
|
|
1998
2005
|
};
|
|
1999
2006
|
}
|
|
2000
2007
|
getTypeId() {
|
|
2001
|
-
return "
|
|
2008
|
+
return "discount-code";
|
|
2002
2009
|
}
|
|
2003
2010
|
create(context, draft) {
|
|
2004
2011
|
const resource = {
|
|
@@ -2309,6 +2316,8 @@ var OrderRepository = class extends AbstractResourceRepository {
|
|
|
2309
2316
|
refusedGifts: [],
|
|
2310
2317
|
origin: "Customer",
|
|
2311
2318
|
syncInfo: [],
|
|
2319
|
+
shippingMode: cart.shippingMode,
|
|
2320
|
+
shipping: cart.shipping,
|
|
2312
2321
|
store: context.storeKey ? {
|
|
2313
2322
|
key: context.storeKey,
|
|
2314
2323
|
typeId: "store"
|
|
@@ -2337,6 +2346,8 @@ var OrderRepository = class extends AbstractResourceRepository {
|
|
|
2337
2346
|
origin: draft.origin || "Customer",
|
|
2338
2347
|
paymentState: draft.paymentState,
|
|
2339
2348
|
refusedGifts: [],
|
|
2349
|
+
shippingMode: "Single",
|
|
2350
|
+
shipping: [],
|
|
2340
2351
|
store: resolveStoreReference(
|
|
2341
2352
|
draft.store,
|
|
2342
2353
|
context.projectKey,
|
|
@@ -2408,6 +2419,8 @@ var OrderRepository = class extends AbstractResourceRepository {
|
|
|
2408
2419
|
quantity: draft.quantity,
|
|
2409
2420
|
state: draft.state || [],
|
|
2410
2421
|
taxRate: draft.taxRate,
|
|
2422
|
+
taxedPricePortions: [],
|
|
2423
|
+
perMethodTaxRate: [],
|
|
2411
2424
|
totalPrice: createTypedMoney(draft.price.value),
|
|
2412
2425
|
variant: {
|
|
2413
2426
|
id: variant.id,
|
|
@@ -2429,6 +2442,7 @@ var OrderRepository = class extends AbstractResourceRepository {
|
|
|
2429
2442
|
money: createTypedMoney(draft.money),
|
|
2430
2443
|
name: draft.name,
|
|
2431
2444
|
quantity: draft.quantity,
|
|
2445
|
+
priceMode: draft.priceMode,
|
|
2432
2446
|
slug: draft.slug,
|
|
2433
2447
|
state: [],
|
|
2434
2448
|
totalPrice: createTypedMoney(draft.money)
|
|
@@ -2462,6 +2476,29 @@ var MyOrderRepository = class extends OrderRepository {
|
|
|
2462
2476
|
}
|
|
2463
2477
|
};
|
|
2464
2478
|
|
|
2479
|
+
// src/repositories/order-edit.ts
|
|
2480
|
+
var OrderEditRepository = class extends AbstractResourceRepository {
|
|
2481
|
+
constructor() {
|
|
2482
|
+
super(...arguments);
|
|
2483
|
+
this.actions = {};
|
|
2484
|
+
}
|
|
2485
|
+
getTypeId() {
|
|
2486
|
+
return "order-edit";
|
|
2487
|
+
}
|
|
2488
|
+
create(context, draft) {
|
|
2489
|
+
const resource = {
|
|
2490
|
+
...getBaseResourceProperties(),
|
|
2491
|
+
stagedActions: draft.stagedActions ?? [],
|
|
2492
|
+
resource: draft.resource,
|
|
2493
|
+
result: {
|
|
2494
|
+
type: "NotProcessed"
|
|
2495
|
+
}
|
|
2496
|
+
};
|
|
2497
|
+
this.saveNew(context, resource);
|
|
2498
|
+
return resource;
|
|
2499
|
+
}
|
|
2500
|
+
};
|
|
2501
|
+
|
|
2465
2502
|
// src/repositories/payment.ts
|
|
2466
2503
|
var import_uuid5 = require("uuid");
|
|
2467
2504
|
var PaymentRepository = class extends AbstractResourceRepository {
|
|
@@ -2621,7 +2658,7 @@ var ProductRepository = class extends AbstractResourceRepository {
|
|
|
2621
2658
|
checkForStagedChanges(resource);
|
|
2622
2659
|
return resource;
|
|
2623
2660
|
},
|
|
2624
|
-
|
|
2661
|
+
setDescription: (context, resource, { description, staged }) => {
|
|
2625
2662
|
const onlyStaged = staged !== void 0 ? staged : true;
|
|
2626
2663
|
resource.masterData.staged.description = description;
|
|
2627
2664
|
if (!onlyStaged) {
|
|
@@ -2630,9 +2667,80 @@ var ProductRepository = class extends AbstractResourceRepository {
|
|
|
2630
2667
|
checkForStagedChanges(resource);
|
|
2631
2668
|
return resource;
|
|
2632
2669
|
},
|
|
2633
|
-
|
|
2670
|
+
setKey: (context, resource, { key }) => {
|
|
2634
2671
|
resource.key = key;
|
|
2635
2672
|
return resource;
|
|
2673
|
+
},
|
|
2674
|
+
addExternalImage: (context, resource, { variantId, sku, image, staged }) => {
|
|
2675
|
+
const addImg = (data) => {
|
|
2676
|
+
const { variant, isMasterVariant, variantIndex } = getVariant(
|
|
2677
|
+
data,
|
|
2678
|
+
variantId,
|
|
2679
|
+
sku
|
|
2680
|
+
);
|
|
2681
|
+
if (!variant) {
|
|
2682
|
+
throw new Error(
|
|
2683
|
+
`Variant with id ${variantId} or sku ${sku} not found on product ${resource.id}`
|
|
2684
|
+
);
|
|
2685
|
+
}
|
|
2686
|
+
if (!variant.images) {
|
|
2687
|
+
variant.images = [];
|
|
2688
|
+
} else {
|
|
2689
|
+
const existingImage = variant.images.find((x) => x.url === image.url);
|
|
2690
|
+
if (existingImage) {
|
|
2691
|
+
throw new Error(
|
|
2692
|
+
`Cannot add image '${image.url}' because product '${resource.id}' already has that image.`
|
|
2693
|
+
);
|
|
2694
|
+
}
|
|
2695
|
+
}
|
|
2696
|
+
variant.images.push(image);
|
|
2697
|
+
if (isMasterVariant) {
|
|
2698
|
+
data.masterVariant = variant;
|
|
2699
|
+
} else {
|
|
2700
|
+
data.variants[variantIndex] = variant;
|
|
2701
|
+
}
|
|
2702
|
+
};
|
|
2703
|
+
const onlyStaged = staged !== void 0 ? staged : true;
|
|
2704
|
+
addImg(resource.masterData.staged);
|
|
2705
|
+
if (!onlyStaged) {
|
|
2706
|
+
addImg(resource.masterData.current);
|
|
2707
|
+
}
|
|
2708
|
+
checkForStagedChanges(resource);
|
|
2709
|
+
return resource;
|
|
2710
|
+
},
|
|
2711
|
+
removeImage: (context, resource, { variantId, sku, imageUrl, staged }) => {
|
|
2712
|
+
const removeImg = (data) => {
|
|
2713
|
+
const { variant, isMasterVariant, variantIndex } = getVariant(
|
|
2714
|
+
data,
|
|
2715
|
+
variantId,
|
|
2716
|
+
sku
|
|
2717
|
+
);
|
|
2718
|
+
if (!variant) {
|
|
2719
|
+
throw new Error(
|
|
2720
|
+
`Variant with id ${variantId} or sku ${sku} not found on product ${resource.id}`
|
|
2721
|
+
);
|
|
2722
|
+
}
|
|
2723
|
+
const variantImages = variant.images ?? [];
|
|
2724
|
+
const existingImage = variantImages.find((x) => x.url === imageUrl);
|
|
2725
|
+
if (!existingImage) {
|
|
2726
|
+
throw new Error(
|
|
2727
|
+
`Cannot remove image '${imageUrl}' because product '${resource.id}' does not have that image.`
|
|
2728
|
+
);
|
|
2729
|
+
}
|
|
2730
|
+
variant.images = variantImages.filter((image) => image.url !== imageUrl);
|
|
2731
|
+
if (isMasterVariant) {
|
|
2732
|
+
data.masterVariant = variant;
|
|
2733
|
+
} else {
|
|
2734
|
+
data.variants[variantIndex] = variant;
|
|
2735
|
+
}
|
|
2736
|
+
};
|
|
2737
|
+
const onlyStaged = staged !== void 0 ? staged : true;
|
|
2738
|
+
removeImg(resource.masterData.staged);
|
|
2739
|
+
if (!onlyStaged) {
|
|
2740
|
+
removeImg(resource.masterData.current);
|
|
2741
|
+
}
|
|
2742
|
+
checkForStagedChanges(resource);
|
|
2743
|
+
return resource;
|
|
2636
2744
|
}
|
|
2637
2745
|
};
|
|
2638
2746
|
}
|
|
@@ -2816,18 +2924,6 @@ var ProductDiscountRepository = class extends AbstractResourceRepository {
|
|
|
2816
2924
|
}
|
|
2817
2925
|
}
|
|
2818
2926
|
}
|
|
2819
|
-
getWithKey(context, key) {
|
|
2820
|
-
const result = this._storage.query(context.projectKey, this.getTypeId(), {
|
|
2821
|
-
where: [`key="${key}"`]
|
|
2822
|
-
});
|
|
2823
|
-
if (result.count === 1) {
|
|
2824
|
-
return result.results[0];
|
|
2825
|
-
}
|
|
2826
|
-
if (result.count > 1) {
|
|
2827
|
-
throw new Error("Duplicate product discount key");
|
|
2828
|
-
}
|
|
2829
|
-
return;
|
|
2830
|
-
}
|
|
2831
2927
|
};
|
|
2832
2928
|
|
|
2833
2929
|
// src/lib/projectionSearchFilter.ts
|
|
@@ -3075,7 +3171,7 @@ var ProductProjectionSearch = class {
|
|
|
3075
3171
|
this._storage = storage;
|
|
3076
3172
|
}
|
|
3077
3173
|
search(projectKey, params) {
|
|
3078
|
-
let resources = this._storage.all(projectKey, "product").map((r) => this.transform(r, params.staged ?? false)).filter((p) =>
|
|
3174
|
+
let resources = this._storage.all(projectKey, "product").map((r) => this.transform(r, params.staged ?? false)).filter((p) => {
|
|
3079
3175
|
if (!params.staged) {
|
|
3080
3176
|
return p.published;
|
|
3081
3177
|
}
|
|
@@ -3142,8 +3238,6 @@ var ProductProjectionSearch = class {
|
|
|
3142
3238
|
}
|
|
3143
3239
|
transform(product, staged) {
|
|
3144
3240
|
const obj = !staged ? product.masterData.current : product.masterData.staged;
|
|
3145
|
-
if (!obj)
|
|
3146
|
-
return null;
|
|
3147
3241
|
return {
|
|
3148
3242
|
id: product.id,
|
|
3149
3243
|
createdAt: product.createdAt,
|
|
@@ -3315,12 +3409,18 @@ var ProductProjectionRepository = class extends AbstractResourceRepository {
|
|
|
3315
3409
|
throw new Error("No valid action");
|
|
3316
3410
|
}
|
|
3317
3411
|
query(context, params = {}) {
|
|
3318
|
-
|
|
3412
|
+
const response = this._storage.query(context.projectKey, "product", {
|
|
3319
3413
|
expand: params.expand,
|
|
3320
3414
|
where: params.where,
|
|
3321
3415
|
offset: params.offset,
|
|
3322
3416
|
limit: params.limit
|
|
3323
3417
|
});
|
|
3418
|
+
return {
|
|
3419
|
+
...response,
|
|
3420
|
+
results: response.results.map(
|
|
3421
|
+
(r) => this._searchService.transform(r, false)
|
|
3422
|
+
)
|
|
3423
|
+
};
|
|
3324
3424
|
}
|
|
3325
3425
|
search(context, query) {
|
|
3326
3426
|
const results = this._searchService.search(context.projectKey, {
|
|
@@ -3336,6 +3436,27 @@ var ProductProjectionRepository = class extends AbstractResourceRepository {
|
|
|
3336
3436
|
}
|
|
3337
3437
|
};
|
|
3338
3438
|
|
|
3439
|
+
// src/repositories/product-selection.ts
|
|
3440
|
+
var ProductSelectionRepository = class extends AbstractResourceRepository {
|
|
3441
|
+
constructor() {
|
|
3442
|
+
super(...arguments);
|
|
3443
|
+
this.actions = {};
|
|
3444
|
+
}
|
|
3445
|
+
getTypeId() {
|
|
3446
|
+
return "product-selection";
|
|
3447
|
+
}
|
|
3448
|
+
create(context, draft) {
|
|
3449
|
+
const resource = {
|
|
3450
|
+
...getBaseResourceProperties(),
|
|
3451
|
+
productCount: 0,
|
|
3452
|
+
name: draft.name,
|
|
3453
|
+
type: "individual"
|
|
3454
|
+
};
|
|
3455
|
+
this.saveNew(context, resource);
|
|
3456
|
+
return resource;
|
|
3457
|
+
}
|
|
3458
|
+
};
|
|
3459
|
+
|
|
3339
3460
|
// src/repositories/product-type.ts
|
|
3340
3461
|
var ProductTypeRepository = class extends AbstractResourceRepository {
|
|
3341
3462
|
constructor() {
|
|
@@ -3387,20 +3508,20 @@ var ProductTypeRepository = class extends AbstractResourceRepository {
|
|
|
3387
3508
|
this.attributeDefinitionFromAttributeDefinitionDraft(context, attribute)
|
|
3388
3509
|
);
|
|
3389
3510
|
},
|
|
3390
|
-
|
|
3511
|
+
changeAttributeOrderByName: (context, resource, { attributeNames }) => {
|
|
3391
3512
|
var _a;
|
|
3392
3513
|
const attrs = new Map(
|
|
3393
3514
|
(_a = resource.attributes) == null ? void 0 : _a.map((item) => [item.name, item])
|
|
3394
3515
|
);
|
|
3395
3516
|
const result = [];
|
|
3396
3517
|
let current = resource.attributes;
|
|
3397
|
-
|
|
3398
|
-
const attr = attrs.get(
|
|
3518
|
+
attributeNames.forEach((attrName) => {
|
|
3519
|
+
const attr = attrs.get(attrName);
|
|
3399
3520
|
if (attr === void 0) {
|
|
3400
3521
|
throw new Error("New attr");
|
|
3401
3522
|
}
|
|
3402
3523
|
result.push(attr);
|
|
3403
|
-
current = current == null ? void 0 : current.filter((f) => f.name !==
|
|
3524
|
+
current = current == null ? void 0 : current.filter((f) => f.name !== attrName);
|
|
3404
3525
|
});
|
|
3405
3526
|
resource.attributes = result;
|
|
3406
3527
|
if (current) {
|
|
@@ -3448,18 +3569,6 @@ var ProductTypeRepository = class extends AbstractResourceRepository {
|
|
|
3448
3569
|
this.saveNew(context, resource);
|
|
3449
3570
|
return resource;
|
|
3450
3571
|
}
|
|
3451
|
-
getWithKey(context, key) {
|
|
3452
|
-
const result = this._storage.query(context.projectKey, this.getTypeId(), {
|
|
3453
|
-
where: [`key="${key}"`]
|
|
3454
|
-
});
|
|
3455
|
-
if (result.count === 1) {
|
|
3456
|
-
return result.results[0];
|
|
3457
|
-
}
|
|
3458
|
-
if (result.count > 1) {
|
|
3459
|
-
throw new Error("Duplicate product type key");
|
|
3460
|
-
}
|
|
3461
|
-
return;
|
|
3462
|
-
}
|
|
3463
3572
|
};
|
|
3464
3573
|
|
|
3465
3574
|
// src/repositories/project.ts
|
|
@@ -3479,8 +3588,9 @@ var ProjectRepository = class extends AbstractRepository {
|
|
|
3479
3588
|
changeLanguages: (context, resource, { languages }) => {
|
|
3480
3589
|
resource.languages = languages;
|
|
3481
3590
|
},
|
|
3482
|
-
|
|
3483
|
-
resource.messages.enabled =
|
|
3591
|
+
changeMessagesConfiguration: (context, resource, { messagesConfiguration }) => {
|
|
3592
|
+
resource.messages.enabled = messagesConfiguration.enabled;
|
|
3593
|
+
resource.messages.deleteDaysAfterCreation = messagesConfiguration.deleteDaysAfterCreation;
|
|
3484
3594
|
},
|
|
3485
3595
|
changeProductSearchIndexingEnabled: (context, resource, { enabled }) => {
|
|
3486
3596
|
var _a;
|
|
@@ -3536,6 +3646,53 @@ var ProjectRepository = class extends AbstractRepository {
|
|
|
3536
3646
|
}
|
|
3537
3647
|
};
|
|
3538
3648
|
|
|
3649
|
+
// src/repositories/quote.ts
|
|
3650
|
+
var QuoteRepository = class extends AbstractResourceRepository {
|
|
3651
|
+
constructor() {
|
|
3652
|
+
super(...arguments);
|
|
3653
|
+
this.actions = {};
|
|
3654
|
+
}
|
|
3655
|
+
getTypeId() {
|
|
3656
|
+
return "quote";
|
|
3657
|
+
}
|
|
3658
|
+
create(context, draft) {
|
|
3659
|
+
throw new Error("not implemented");
|
|
3660
|
+
}
|
|
3661
|
+
};
|
|
3662
|
+
|
|
3663
|
+
// src/repositories/quote-request.ts
|
|
3664
|
+
var QuoteRequestRepository = class extends AbstractResourceRepository {
|
|
3665
|
+
constructor() {
|
|
3666
|
+
super(...arguments);
|
|
3667
|
+
this.actions = {};
|
|
3668
|
+
}
|
|
3669
|
+
getTypeId() {
|
|
3670
|
+
return "quote-request";
|
|
3671
|
+
}
|
|
3672
|
+
create(context, draft) {
|
|
3673
|
+
throw new Error("not implemented");
|
|
3674
|
+
}
|
|
3675
|
+
};
|
|
3676
|
+
|
|
3677
|
+
// src/repositories/review.ts
|
|
3678
|
+
var ReviewRepository = class extends AbstractResourceRepository {
|
|
3679
|
+
constructor() {
|
|
3680
|
+
super(...arguments);
|
|
3681
|
+
this.actions = {};
|
|
3682
|
+
}
|
|
3683
|
+
getTypeId() {
|
|
3684
|
+
return "review";
|
|
3685
|
+
}
|
|
3686
|
+
create(context, draft) {
|
|
3687
|
+
const resource = {
|
|
3688
|
+
...getBaseResourceProperties(),
|
|
3689
|
+
includedInStatistics: false
|
|
3690
|
+
};
|
|
3691
|
+
this.saveNew(context, resource);
|
|
3692
|
+
return resource;
|
|
3693
|
+
}
|
|
3694
|
+
};
|
|
3695
|
+
|
|
3539
3696
|
// src/repositories/shipping-method.ts
|
|
3540
3697
|
var import_deep_equal3 = __toESM(require("deep-equal"));
|
|
3541
3698
|
var ShippingMethodRepository = class extends AbstractResourceRepository {
|
|
@@ -3710,6 +3867,41 @@ var ShoppingListRepository = class extends AbstractResourceRepository {
|
|
|
3710
3867
|
}
|
|
3711
3868
|
};
|
|
3712
3869
|
|
|
3870
|
+
// src/repositories/staged-quote.ts
|
|
3871
|
+
var StagedQuoteRepository = class extends AbstractResourceRepository {
|
|
3872
|
+
constructor() {
|
|
3873
|
+
super(...arguments);
|
|
3874
|
+
this.actions = {};
|
|
3875
|
+
}
|
|
3876
|
+
getTypeId() {
|
|
3877
|
+
return "staged-quote";
|
|
3878
|
+
}
|
|
3879
|
+
create(context, draft) {
|
|
3880
|
+
throw new Error("not implemented");
|
|
3881
|
+
}
|
|
3882
|
+
};
|
|
3883
|
+
|
|
3884
|
+
// src/repositories/standalone-price.ts
|
|
3885
|
+
var StandAlonePriceRepository = class extends AbstractResourceRepository {
|
|
3886
|
+
constructor() {
|
|
3887
|
+
super(...arguments);
|
|
3888
|
+
this.actions = {};
|
|
3889
|
+
}
|
|
3890
|
+
getTypeId() {
|
|
3891
|
+
return "standalone-price";
|
|
3892
|
+
}
|
|
3893
|
+
create(context, draft) {
|
|
3894
|
+
const resource = {
|
|
3895
|
+
...getBaseResourceProperties(),
|
|
3896
|
+
active: draft.active,
|
|
3897
|
+
sku: draft.sku,
|
|
3898
|
+
value: draft.value
|
|
3899
|
+
};
|
|
3900
|
+
this.saveNew(context, resource);
|
|
3901
|
+
return resource;
|
|
3902
|
+
}
|
|
3903
|
+
};
|
|
3904
|
+
|
|
3713
3905
|
// src/repositories/state.ts
|
|
3714
3906
|
var StateRepository = class extends AbstractResourceRepository {
|
|
3715
3907
|
constructor() {
|
|
@@ -3718,6 +3910,9 @@ var StateRepository = class extends AbstractResourceRepository {
|
|
|
3718
3910
|
changeKey: (context, resource, { key }) => {
|
|
3719
3911
|
resource.key = key;
|
|
3720
3912
|
},
|
|
3913
|
+
changeInitial: (context, resource, { initial }) => {
|
|
3914
|
+
resource.initial = initial;
|
|
3915
|
+
},
|
|
3721
3916
|
setDescription: (context, resource, { description }) => {
|
|
3722
3917
|
resource.description = description;
|
|
3723
3918
|
},
|
|
@@ -3830,18 +4025,6 @@ var StoreRepository = class extends AbstractResourceRepository {
|
|
|
3830
4025
|
)
|
|
3831
4026
|
);
|
|
3832
4027
|
}
|
|
3833
|
-
getWithKey(context, key) {
|
|
3834
|
-
const result = this._storage.query(context.projectKey, this.getTypeId(), {
|
|
3835
|
-
where: [`key="${key}"`]
|
|
3836
|
-
});
|
|
3837
|
-
if (result.count === 1) {
|
|
3838
|
-
return result.results[0];
|
|
3839
|
-
}
|
|
3840
|
-
if (result.count > 1) {
|
|
3841
|
-
throw new Error("Duplicate store key");
|
|
3842
|
-
}
|
|
3843
|
-
return;
|
|
3844
|
-
}
|
|
3845
4028
|
};
|
|
3846
4029
|
|
|
3847
4030
|
// src/repositories/subscription.ts
|
|
@@ -3941,18 +4124,6 @@ var TaxCategoryRepository = class extends AbstractResourceRepository {
|
|
|
3941
4124
|
this.saveNew(context, resource);
|
|
3942
4125
|
return resource;
|
|
3943
4126
|
}
|
|
3944
|
-
getWithKey(context, key) {
|
|
3945
|
-
const result = this._storage.query(context.projectKey, this.getTypeId(), {
|
|
3946
|
-
where: [`key="${key}"`]
|
|
3947
|
-
});
|
|
3948
|
-
if (result.count === 1) {
|
|
3949
|
-
return result.results[0];
|
|
3950
|
-
}
|
|
3951
|
-
if (result.count > 1) {
|
|
3952
|
-
throw new Error("Duplicate tax category key");
|
|
3953
|
-
}
|
|
3954
|
-
return;
|
|
3955
|
-
}
|
|
3956
4127
|
};
|
|
3957
4128
|
|
|
3958
4129
|
// src/repositories/type.ts
|
|
@@ -4111,18 +4282,25 @@ var createRepositories = (storage) => ({
|
|
|
4111
4282
|
"inventory-entry": new InventoryEntryRepository(storage),
|
|
4112
4283
|
"key-value-document": new CustomObjectRepository(storage),
|
|
4113
4284
|
order: new OrderRepository(storage),
|
|
4285
|
+
"order-edit": new OrderEditRepository(storage),
|
|
4114
4286
|
payment: new PaymentRepository(storage),
|
|
4115
4287
|
"my-cart": new CartRepository(storage),
|
|
4116
4288
|
"my-order": new MyOrderRepository(storage),
|
|
4117
4289
|
"my-customer": new CustomerRepository(storage),
|
|
4118
4290
|
"my-payment": new PaymentRepository(storage),
|
|
4119
|
-
"shipping-method": new ShippingMethodRepository(storage),
|
|
4120
|
-
"product-type": new ProductTypeRepository(storage),
|
|
4121
4291
|
product: new ProductRepository(storage),
|
|
4122
|
-
|
|
4292
|
+
"product-type": new ProductTypeRepository(storage),
|
|
4123
4293
|
"product-discount": new ProductDiscountRepository(storage),
|
|
4124
4294
|
"product-projection": new ProductProjectionRepository(storage),
|
|
4295
|
+
"product-selection": new ProductSelectionRepository(storage),
|
|
4296
|
+
project: new ProjectRepository(storage),
|
|
4297
|
+
review: new ReviewRepository(storage),
|
|
4298
|
+
quote: new QuoteRepository(storage),
|
|
4299
|
+
"quote-request": new QuoteRequestRepository(storage),
|
|
4300
|
+
"shipping-method": new ShippingMethodRepository(storage),
|
|
4125
4301
|
"shopping-list": new ShoppingListRepository(storage),
|
|
4302
|
+
"staged-quote": new StagedQuoteRepository(storage),
|
|
4303
|
+
"standalone-price": new StandAlonePriceRepository(storage),
|
|
4126
4304
|
state: new StateRepository(storage),
|
|
4127
4305
|
store: new StoreRepository(storage),
|
|
4128
4306
|
subscription: new SubscriptionRepository(storage),
|
|
@@ -4291,25 +4469,27 @@ var CartService = class extends AbstractService {
|
|
|
4291
4469
|
return "carts";
|
|
4292
4470
|
}
|
|
4293
4471
|
extraRoutes(parent) {
|
|
4294
|
-
parent.post("/replicate", (
|
|
4295
|
-
|
|
4296
|
-
|
|
4297
|
-
|
|
4298
|
-
|
|
4299
|
-
|
|
4300
|
-
|
|
4301
|
-
|
|
4302
|
-
|
|
4303
|
-
|
|
4304
|
-
|
|
4305
|
-
|
|
4306
|
-
|
|
4307
|
-
|
|
4308
|
-
|
|
4309
|
-
|
|
4310
|
-
|
|
4311
|
-
|
|
4312
|
-
}
|
|
4472
|
+
parent.post("/replicate", this.replicate.bind(this));
|
|
4473
|
+
}
|
|
4474
|
+
replicate(request, response) {
|
|
4475
|
+
const context = getRepositoryContext(request);
|
|
4476
|
+
const cartOrOrder = request.body.reference.typeId === "order" ? this.orderRepository.get(context, request.body.reference.id) : this.repository.get(context, request.body.reference.id);
|
|
4477
|
+
if (!cartOrOrder) {
|
|
4478
|
+
return response.status(400).send();
|
|
4479
|
+
}
|
|
4480
|
+
const cartDraft = {
|
|
4481
|
+
...cartOrOrder,
|
|
4482
|
+
currency: cartOrOrder.totalPrice.currencyCode,
|
|
4483
|
+
discountCodes: [],
|
|
4484
|
+
shipping: [],
|
|
4485
|
+
lineItems: cartOrOrder.lineItems.map((lineItem) => ({
|
|
4486
|
+
...lineItem,
|
|
4487
|
+
variantId: lineItem.variant.id,
|
|
4488
|
+
sku: lineItem.variant.sku
|
|
4489
|
+
}))
|
|
4490
|
+
};
|
|
4491
|
+
const newCart = this.repository.create(context, cartDraft);
|
|
4492
|
+
return response.status(200).send(newCart);
|
|
4313
4493
|
}
|
|
4314
4494
|
};
|
|
4315
4495
|
|
|
@@ -4654,19 +4834,6 @@ var ProductDiscountService = class extends AbstractService {
|
|
|
4654
4834
|
getBasePath() {
|
|
4655
4835
|
return "product-discounts";
|
|
4656
4836
|
}
|
|
4657
|
-
extraRoutes(router) {
|
|
4658
|
-
router.get("/key=:key", this.getWithKey.bind(this));
|
|
4659
|
-
}
|
|
4660
|
-
getWithKey(request, response) {
|
|
4661
|
-
const resource = this.repository.getWithKey(
|
|
4662
|
-
getRepositoryContext(request),
|
|
4663
|
-
request.params.key
|
|
4664
|
-
);
|
|
4665
|
-
if (resource) {
|
|
4666
|
-
return response.status(200).send(resource);
|
|
4667
|
-
}
|
|
4668
|
-
return response.status(404).send("Not found");
|
|
4669
|
-
}
|
|
4670
4837
|
};
|
|
4671
4838
|
|
|
4672
4839
|
// src/services/product-projection.ts
|
|
@@ -4699,19 +4866,6 @@ var ProductTypeService = class extends AbstractService {
|
|
|
4699
4866
|
getBasePath() {
|
|
4700
4867
|
return "product-types";
|
|
4701
4868
|
}
|
|
4702
|
-
extraRoutes(router) {
|
|
4703
|
-
router.get("/key=:key", this.getWithKey.bind(this));
|
|
4704
|
-
}
|
|
4705
|
-
getWithKey(request, response) {
|
|
4706
|
-
const resource = this.repository.getWithKey(
|
|
4707
|
-
getRepositoryContext(request),
|
|
4708
|
-
request.params.key
|
|
4709
|
-
);
|
|
4710
|
-
if (resource) {
|
|
4711
|
-
return response.status(200).send(resource);
|
|
4712
|
-
}
|
|
4713
|
-
return response.status(404).send("Not found");
|
|
4714
|
-
}
|
|
4715
4869
|
};
|
|
4716
4870
|
|
|
4717
4871
|
// src/services/shipping-method.ts
|
|
@@ -4760,19 +4914,6 @@ var StoreService = class extends AbstractService {
|
|
|
4760
4914
|
getBasePath() {
|
|
4761
4915
|
return "stores";
|
|
4762
4916
|
}
|
|
4763
|
-
extraRoutes(router) {
|
|
4764
|
-
router.get("/key=:key", this.getWithKey.bind(this));
|
|
4765
|
-
}
|
|
4766
|
-
getWithKey(request, response) {
|
|
4767
|
-
const resource = this.repository.getWithKey(
|
|
4768
|
-
getRepositoryContext(request),
|
|
4769
|
-
request.params.key
|
|
4770
|
-
);
|
|
4771
|
-
if (resource) {
|
|
4772
|
-
return response.status(200).send(resource);
|
|
4773
|
-
}
|
|
4774
|
-
return response.status(404).send("Not found");
|
|
4775
|
-
}
|
|
4776
4917
|
};
|
|
4777
4918
|
|
|
4778
4919
|
// src/services/subscription.ts
|
|
@@ -4795,19 +4936,6 @@ var TaxCategoryService = class extends AbstractService {
|
|
|
4795
4936
|
getBasePath() {
|
|
4796
4937
|
return "tax-categories";
|
|
4797
4938
|
}
|
|
4798
|
-
extraRoutes(router) {
|
|
4799
|
-
router.get("/key=:key", this.getWithKey.bind(this));
|
|
4800
|
-
}
|
|
4801
|
-
getWithKey(request, response) {
|
|
4802
|
-
const resource = this.repository.getWithKey(
|
|
4803
|
-
getRepositoryContext(request),
|
|
4804
|
-
request.params.key
|
|
4805
|
-
);
|
|
4806
|
-
if (resource) {
|
|
4807
|
-
return response.status(200).send(resource);
|
|
4808
|
-
}
|
|
4809
|
-
return response.status(404).send("Not found");
|
|
4810
|
-
}
|
|
4811
4939
|
};
|
|
4812
4940
|
|
|
4813
4941
|
// src/services/type.ts
|
|
@@ -4892,8 +5020,8 @@ var CommercetoolsMock = class {
|
|
|
4892
5020
|
constructor(options = {}) {
|
|
4893
5021
|
this._nockScopes = { auth: void 0, api: void 0 };
|
|
4894
5022
|
this.options = { ...DEFAULT_OPTIONS, ...options };
|
|
4895
|
-
this._services =
|
|
4896
|
-
this._repositories =
|
|
5023
|
+
this._services = null;
|
|
5024
|
+
this._repositories = null;
|
|
4897
5025
|
this._projectService = void 0;
|
|
4898
5026
|
this._storage = new InMemoryStorage();
|
|
4899
5027
|
this._oauth2 = new OAuth2Server({
|
|
@@ -4920,9 +5048,12 @@ var CommercetoolsMock = class {
|
|
|
4920
5048
|
if (!projectKey && !this.options.defaultProjectKey) {
|
|
4921
5049
|
throw new Error("No projectKey passed and no default set");
|
|
4922
5050
|
}
|
|
5051
|
+
if (this._repositories === null) {
|
|
5052
|
+
throw new Error("repositories not initialized yet");
|
|
5053
|
+
}
|
|
4923
5054
|
return new ProjectAPI(
|
|
4924
5055
|
projectKey || this.options.defaultProjectKey,
|
|
4925
|
-
this.
|
|
5056
|
+
this._repositories,
|
|
4926
5057
|
this._storage
|
|
4927
5058
|
);
|
|
4928
5059
|
}
|
|
@@ -4933,6 +5064,7 @@ var CommercetoolsMock = class {
|
|
|
4933
5064
|
server.keepAliveTimeout = 60 * 1e3;
|
|
4934
5065
|
}
|
|
4935
5066
|
createApp(options) {
|
|
5067
|
+
this._repositories = createRepositories(this._storage);
|
|
4936
5068
|
const app = (0, import_express6.default)();
|
|
4937
5069
|
const projectRouter = import_express6.default.Router({ mergeParams: true });
|
|
4938
5070
|
projectRouter.use(import_express6.default.json());
|
|
@@ -4951,12 +5083,11 @@ var CommercetoolsMock = class {
|
|
|
4951
5083
|
app.use("/:projectKey", projectRouter);
|
|
4952
5084
|
app.use("/:projectKey/in-store/key=:storeKey", projectRouter);
|
|
4953
5085
|
}
|
|
4954
|
-
this.
|
|
5086
|
+
this._services = createServices(projectRouter, this._repositories);
|
|
4955
5087
|
this._projectService = new ProjectService(
|
|
4956
5088
|
projectRouter,
|
|
4957
5089
|
this._repositories.project
|
|
4958
5090
|
);
|
|
4959
|
-
this._services = createServices(projectRouter, this._repositories);
|
|
4960
5091
|
app.use((err, req, resp, next) => {
|
|
4961
5092
|
if (err instanceof CommercetoolsError) {
|
|
4962
5093
|
return resp.status(err.statusCode).send({
|