@delicity/client-cart 1.0.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/index.d.ts +35 -0
- package/index.d.ts.map +1 -0
- package/index.js +48 -0
- package/index.js.map +1 -0
- package/package.json +24 -0
- package/service/CartItemService.d.ts +13 -0
- package/service/CartItemService.d.ts.map +1 -0
- package/service/CartItemService.js +180 -0
- package/service/CartItemService.js.map +1 -0
- package/service/CartService.d.ts +9 -0
- package/service/CartService.d.ts.map +1 -0
- package/service/CartService.js +98 -0
- package/service/CartService.js.map +1 -0
- package/types/CartType.d.ts +16 -0
- package/types/CartType.d.ts.map +1 -0
- package/types/CartType.js +3 -0
- package/types/CartType.js.map +1 -0
package/index.d.ts
ADDED
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { ICartItem } from "@delicity/client-types/Cart/CartRequest";
|
|
2
|
+
import { IMenu } from "@delicity/client-types/Merchant/Menu";
|
|
3
|
+
import { IClientConfig, OrderModesEnum } from "@delicity/client-types/Global";
|
|
4
|
+
import { ICartReturn } from "@/types/CartType";
|
|
5
|
+
export interface ICartInterface {
|
|
6
|
+
getConfig(): IClientConfig;
|
|
7
|
+
setMerchantMenu(merchantMenu: IMenu): Promise<ICartReturn>;
|
|
8
|
+
setOrderTime(when: number | null): Promise<ICartReturn>;
|
|
9
|
+
setOrderType(type: OrderModesEnum): Promise<ICartReturn>;
|
|
10
|
+
setDeliveryAddress(addressUuid: string): Promise<ICartReturn>;
|
|
11
|
+
addCartItem(item: ICartItem): Promise<ICartReturn>;
|
|
12
|
+
removeCartItem(uuid: string): Promise<ICartReturn>;
|
|
13
|
+
updateCartItem(uuid: string, item: ICartItem): Promise<ICartReturn>;
|
|
14
|
+
publishCart(): Promise<any>;
|
|
15
|
+
}
|
|
16
|
+
export declare class Cart implements ICartInterface {
|
|
17
|
+
protected config: IClientConfig;
|
|
18
|
+
merchantUid: string | number;
|
|
19
|
+
merchantMenu: IMenu;
|
|
20
|
+
items: ICartItem[];
|
|
21
|
+
when: number | null;
|
|
22
|
+
addressUuid: string | null;
|
|
23
|
+
type: OrderModesEnum | null;
|
|
24
|
+
constructor(config: IClientConfig, merchantUid: string | number, merchantMenu: IMenu);
|
|
25
|
+
getConfig(): IClientConfig;
|
|
26
|
+
setMerchantMenu(merchantMenu: IMenu): Promise<ICartReturn>;
|
|
27
|
+
setOrderTime(when: number | null): Promise<ICartReturn>;
|
|
28
|
+
setOrderType(type: OrderModesEnum): Promise<ICartReturn>;
|
|
29
|
+
setDeliveryAddress(addressUuid: string): Promise<ICartReturn>;
|
|
30
|
+
addCartItem(item: ICartItem): Promise<ICartReturn>;
|
|
31
|
+
removeCartItem(uuid: string): Promise<ICartReturn>;
|
|
32
|
+
updateCartItem(uuid: string, item: ICartItem): Promise<ICartReturn>;
|
|
33
|
+
publishCart(): Promise<any>;
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=index.d.ts.map
|
package/index.d.ts.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,SAAS,EAAC,MAAM,yCAAyC,CAAC;AAClE,OAAO,EAAC,KAAK,EAAC,MAAM,sCAAsC,CAAC;AAC3D,OAAO,EAAC,aAAa,EAAE,cAAc,EAAC,MAAM,+BAA+B,CAAC;AAC5E,OAAO,EAAC,WAAW,EAAC,MAAM,kBAAkB,CAAC;AAE7C,MAAM,WAAW,cAAc;IAC3B,SAAS,IAAI,aAAa,CAAC;IAC3B,eAAe,CAAC,YAAY,EAAE,KAAK,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IAC3D,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IACxD,YAAY,CAAC,IAAI,EAAE,cAAc,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IACzD,kBAAkB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IAC9D,WAAW,CAAC,IAAI,EAAE,SAAS,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IACnD,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IACnD,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IACpE,WAAW,IAAI,OAAO,CAAC,GAAG,CAAC,CAAC;CAC/B;AAGD,qBAAa,IAAK,YAAW,cAAc;IAEvC,SAAS,CAAC,MAAM,EAAE,aAAa,CAAC;IACzB,WAAW,EAAE,MAAM,GAAG,MAAM,CAAC;IAC7B,YAAY,EAAE,KAAK,CAAC;IACpB,KAAK,EAAE,SAAS,EAAE,CAAM;IACxB,IAAI,EAAE,MAAM,GAAG,IAAI,CAAQ;IAC3B,WAAW,EAAE,MAAM,GAAG,IAAI,CAAQ;IAClC,IAAI,EAAE,cAAc,GAAG,IAAI,CAAQ;gBAItC,MAAM,EAAE,aAAa,EACrB,WAAW,EAAE,MAAM,GAAG,MAAM,EAC5B,YAAY,EAAE,KAAK;IAOvB,SAAS,IAAI,aAAa;IAI1B,eAAe,CAAC,YAAY,EAAE,KAAK,GAAG,OAAO,CAAC,WAAW,CAAC;IAK1D,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC,WAAW,CAAC;IAIvD,YAAY,CAAC,IAAI,EAAE,cAAc,GAAG,OAAO,CAAC,WAAW,CAAC;IAIxD,kBAAkB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAK7D,WAAW,CAAC,IAAI,EAAE,SAAS,GAAG,OAAO,CAAC,WAAW,CAAC;IAIlD,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAIlD,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,GAAG,OAAO,CAAC,WAAW,CAAC;IAInE,WAAW;CAGd"}
|
package/index.js
ADDED
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Cart = void 0;
|
|
4
|
+
const CartService_1 = require("@/service/CartService");
|
|
5
|
+
class Cart {
|
|
6
|
+
constructor(config, merchantUid, merchantMenu) {
|
|
7
|
+
this.items = [];
|
|
8
|
+
this.when = null;
|
|
9
|
+
this.addressUuid = null;
|
|
10
|
+
this.type = null;
|
|
11
|
+
this.config = config;
|
|
12
|
+
this.merchantUid = merchantUid;
|
|
13
|
+
this.merchantMenu = merchantMenu;
|
|
14
|
+
}
|
|
15
|
+
getConfig() {
|
|
16
|
+
return this.config;
|
|
17
|
+
}
|
|
18
|
+
setMerchantMenu(merchantMenu) {
|
|
19
|
+
this.merchantMenu = merchantMenu;
|
|
20
|
+
return (0, CartService_1.updateCart)(this);
|
|
21
|
+
}
|
|
22
|
+
setOrderTime(when) {
|
|
23
|
+
this.when = when;
|
|
24
|
+
return (0, CartService_1.updateCart)(this);
|
|
25
|
+
}
|
|
26
|
+
setOrderType(type) {
|
|
27
|
+
this.type = type;
|
|
28
|
+
return (0, CartService_1.updateCart)(this);
|
|
29
|
+
}
|
|
30
|
+
setDeliveryAddress(addressUuid) {
|
|
31
|
+
this.addressUuid = addressUuid;
|
|
32
|
+
return (0, CartService_1.updateCart)(this);
|
|
33
|
+
}
|
|
34
|
+
addCartItem(item) {
|
|
35
|
+
return (0, CartService_1.addToCart)(this, item);
|
|
36
|
+
}
|
|
37
|
+
removeCartItem(uuid) {
|
|
38
|
+
return (0, CartService_1.removeCartItem)(this, uuid);
|
|
39
|
+
}
|
|
40
|
+
updateCartItem(uuid, item) {
|
|
41
|
+
return (0, CartService_1.updateCartItem)(this, uuid, item);
|
|
42
|
+
}
|
|
43
|
+
publishCart() {
|
|
44
|
+
return (0, CartService_1.publishCart)(this);
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
exports.Cart = Cart;
|
|
48
|
+
//# sourceMappingURL=index.js.map
|
package/index.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,uDAAyG;AAmBzG,MAAa,IAAI;IAWb,YACI,MAAqB,EACrB,WAA4B,EAC5B,YAAmB;QAThB,UAAK,GAAgB,EAAE,CAAC;QACxB,SAAI,GAAkB,IAAI,CAAC;QAC3B,gBAAW,GAAkB,IAAI,CAAC;QAClC,SAAI,GAA0B,IAAI,CAAC;QAQtC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QAC/B,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;IACrC,CAAC;IAED,SAAS;QACL,OAAO,IAAI,CAAC,MAAM,CAAC;IACvB,CAAC;IAED,eAAe,CAAC,YAAmB;QAC/B,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;QACjC,OAAO,IAAA,wBAAU,EAAC,IAAI,CAAC,CAAC;IAC5B,CAAC;IAED,YAAY,CAAC,IAAmB;QAC5B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,OAAO,IAAA,wBAAU,EAAC,IAAI,CAAC,CAAC;IAC5B,CAAC;IACD,YAAY,CAAC,IAAoB;QAC7B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,OAAO,IAAA,wBAAU,EAAC,IAAI,CAAC,CAAC;IAC5B,CAAC;IACD,kBAAkB,CAAC,WAAmB;QAClC,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QAC/B,OAAO,IAAA,wBAAU,EAAC,IAAI,CAAC,CAAC;IAC5B,CAAC;IAED,WAAW,CAAC,IAAe;QACvB,OAAO,IAAA,uBAAS,EAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IACjC,CAAC;IAED,cAAc,CAAC,IAAY;QACvB,OAAO,IAAA,4BAAc,EAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IACtC,CAAC;IAED,cAAc,CAAC,IAAY,EAAE,IAAe;QACxC,OAAO,IAAA,4BAAc,EAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;IAC5C,CAAC;IAED,WAAW;QACP,OAAO,IAAA,yBAAW,EAAC,IAAI,CAAC,CAAC;IAC7B,CAAC;CACJ;AA1DD,oBA0DC"}
|
package/package.json
ADDED
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@delicity/client-cart",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"description": "Cart Client Package",
|
|
5
|
+
"main": "src/index.js",
|
|
6
|
+
"scripts": {
|
|
7
|
+
"test": "echo \"Error: no test specified\" && exit 1",
|
|
8
|
+
"build": "npx tsc",
|
|
9
|
+
"pub": "npx tsc && cp package.json dist/package.json && cd dist/"
|
|
10
|
+
},
|
|
11
|
+
"author": "",
|
|
12
|
+
"license": "ISC",
|
|
13
|
+
"devDependencies": {
|
|
14
|
+
"@jest/globals": "^29.3.1",
|
|
15
|
+
"jest": "^29.3.1",
|
|
16
|
+
"ts-jest": "^29.0.5",
|
|
17
|
+
"typescript": "^4.9.4",
|
|
18
|
+
"ts-node": "^10.9.1"
|
|
19
|
+
},
|
|
20
|
+
"dependencies": {
|
|
21
|
+
"axios": "^1.2.3",
|
|
22
|
+
"@delicity/client-types": "^1.0.29"
|
|
23
|
+
}
|
|
24
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { Cart } from "@/index";
|
|
2
|
+
import { ICartItem } from "@delicity/client-types/Cart/CartRequest";
|
|
3
|
+
import { IMenu } from "@delicity/client-types/Merchant/Menu";
|
|
4
|
+
interface IProductTotalAccumulator {
|
|
5
|
+
productPrice: number;
|
|
6
|
+
}
|
|
7
|
+
export declare function productTotalAccumulator(cart: Cart): IProductTotalAccumulator;
|
|
8
|
+
export declare function isItemAvailable(item: ICartItem, cart: Cart): Promise<boolean>;
|
|
9
|
+
export declare function isItemInCartAvailable(cart: Cart): Promise<boolean>;
|
|
10
|
+
export declare function checkItemHierarchy(items: ICartItem[], menu: IMenu): Promise<any>;
|
|
11
|
+
export declare function checkItem(item: ICartItem, menu: IMenu, parentItem?: ICartItem | null): Promise<boolean>;
|
|
12
|
+
export {};
|
|
13
|
+
//# sourceMappingURL=CartItemService.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CartItemService.d.ts","sourceRoot":"","sources":["../../src/service/CartItemService.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,IAAI,EAAC,MAAM,SAAS,CAAC;AAI7B,OAAO,EAAC,SAAS,EAAC,MAAM,yCAAyC,CAAC;AAClE,OAAO,EAAC,KAAK,EAAgB,MAAM,sCAAsC,CAAC;AAE1E,UAAU,wBAAwB;IAC9B,YAAY,EAAE,MAAM,CAAA;CACvB;AAED,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,IAAI,GAAG,wBAAwB,CAQ5E;AAwCD,wBAAgB,eAAe,CAAC,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,CA0B7E;AAGD,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,CAoBlE;AAGD,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,SAAS,EAAE,EAAE,IAAI,EAAE,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,CAqBhF;AAID,wBAAgB,SAAS,CAAC,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,UAAU,GAAC,SAAS,GAAC,IAAS,GAAG,OAAO,CAAC,OAAO,CAAC,CA2DxG"}
|
|
@@ -0,0 +1,180 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.checkItem = exports.checkItemHierarchy = exports.isItemInCartAvailable = exports.isItemAvailable = exports.productTotalAccumulator = void 0;
|
|
13
|
+
const CartErrors_1 = require("@delicity/client-types/Cart/CartErrors");
|
|
14
|
+
const Global_1 = require("@delicity/client-types/Global");
|
|
15
|
+
const Menu_1 = require("@delicity/client-types/Merchant/Menu");
|
|
16
|
+
function productTotalAccumulator(cart) {
|
|
17
|
+
let totalPriceProduct = 0;
|
|
18
|
+
cart.items.forEach((item) => {
|
|
19
|
+
var _a;
|
|
20
|
+
totalPriceProduct += getPrice(cart.merchantMenu, item, (_a = cart.type) !== null && _a !== void 0 ? _a : Global_1.OrderModesEnum.DELIVERY);
|
|
21
|
+
});
|
|
22
|
+
return {
|
|
23
|
+
productPrice: totalPriceProduct
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
exports.productTotalAccumulator = productTotalAccumulator;
|
|
27
|
+
function getPrice(menu, item, type) {
|
|
28
|
+
var _a;
|
|
29
|
+
let price = 0;
|
|
30
|
+
let itemPrices;
|
|
31
|
+
itemPrices = (_a = getMenuItem(item, menu)) === null || _a === void 0 ? void 0 : _a.prices;
|
|
32
|
+
if (itemPrices && type && itemPrices[type] !== undefined) {
|
|
33
|
+
// @ts-ignore
|
|
34
|
+
price += itemPrices[type];
|
|
35
|
+
}
|
|
36
|
+
if (item.subItems.length > 0) {
|
|
37
|
+
item.subItems.forEach((subItem) => {
|
|
38
|
+
price += getPrice(menu, subItem, type);
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
return price;
|
|
42
|
+
}
|
|
43
|
+
function getMenuItem(item, menu) {
|
|
44
|
+
if (item.type === Menu_1.TMenuItemEnum.PRODUCT) {
|
|
45
|
+
return menu.products.find((m) => m.uuid === item.uuid);
|
|
46
|
+
}
|
|
47
|
+
else if (item.type === Menu_1.TMenuItemEnum.MODIFIER) {
|
|
48
|
+
return menu.modifiers.find((m) => m.uuid === item.uuid);
|
|
49
|
+
}
|
|
50
|
+
else if (item.type === Menu_1.TMenuItemEnum.BUNDLE) {
|
|
51
|
+
return menu.bundles.find((m) => m.uuid === item.uuid);
|
|
52
|
+
}
|
|
53
|
+
else if (item.type === Menu_1.TMenuItemEnum.MODIFIER_GROUP) {
|
|
54
|
+
return menu.modifierGroups.find((m) => m.uuid === item.uuid);
|
|
55
|
+
}
|
|
56
|
+
else if (item.type === Menu_1.TMenuItemEnum.CATEGORY) {
|
|
57
|
+
return menu.categories.find((m) => m.uuid === item.uuid);
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
function isItemAvailable(item, cart) {
|
|
61
|
+
return new Promise((resolve, reject) => {
|
|
62
|
+
var _a;
|
|
63
|
+
const menuItem = getMenuItem(item, cart.merchantMenu);
|
|
64
|
+
const errors = [];
|
|
65
|
+
const itemErrors = [];
|
|
66
|
+
if (!menuItem) {
|
|
67
|
+
itemErrors.push(CartErrors_1.CartErrorEnum.ITEM_NOT_FOUND);
|
|
68
|
+
}
|
|
69
|
+
// Check available when order is set ?
|
|
70
|
+
if (menuItem && menuItem.unavailableUntil && menuItem.unavailableUntil > ((_a = cart.when) !== null && _a !== void 0 ? _a : Math.round((new Date()).getTime() / 1000))) {
|
|
71
|
+
itemErrors.push(CartErrors_1.CartErrorEnum.ITEM_NOT_AVAILABLE_AT_THIS_TIME);
|
|
72
|
+
}
|
|
73
|
+
// Check if product are available at this type
|
|
74
|
+
if (menuItem && cart.type && !menuItem.allowedModes.includes(cart.type)) {
|
|
75
|
+
itemErrors.push(CartErrors_1.CartErrorEnum.ITEM_NOT_AVAILABLE_ON_THIS_TYPE);
|
|
76
|
+
}
|
|
77
|
+
if (itemErrors.length > 0) {
|
|
78
|
+
errors.push({ errors: itemErrors, uuid: item.uuid, type: item.type });
|
|
79
|
+
reject(errors);
|
|
80
|
+
}
|
|
81
|
+
else {
|
|
82
|
+
resolve(true);
|
|
83
|
+
}
|
|
84
|
+
});
|
|
85
|
+
}
|
|
86
|
+
exports.isItemAvailable = isItemAvailable;
|
|
87
|
+
function isItemInCartAvailable(cart) {
|
|
88
|
+
return new Promise((resolve, reject) => __awaiter(this, void 0, void 0, function* () {
|
|
89
|
+
const itemsErrors = [];
|
|
90
|
+
const checkProductPromises = [];
|
|
91
|
+
cart.items.forEach((item) => {
|
|
92
|
+
checkProductPromises.push(isItemAvailable(item, cart));
|
|
93
|
+
});
|
|
94
|
+
yield Promise.allSettled(checkProductPromises)
|
|
95
|
+
.then((results) => {
|
|
96
|
+
if (results.length > 0 && results[0].status === 'rejected') {
|
|
97
|
+
itemsErrors.push(...results[0].reason);
|
|
98
|
+
}
|
|
99
|
+
});
|
|
100
|
+
if (itemsErrors.length > 0) {
|
|
101
|
+
return reject({ errors: itemsErrors });
|
|
102
|
+
}
|
|
103
|
+
resolve(true);
|
|
104
|
+
}));
|
|
105
|
+
}
|
|
106
|
+
exports.isItemInCartAvailable = isItemInCartAvailable;
|
|
107
|
+
function checkItemHierarchy(items, menu) {
|
|
108
|
+
return new Promise((resolve, reject) => __awaiter(this, void 0, void 0, function* () {
|
|
109
|
+
const errorsBag = [];
|
|
110
|
+
const promises = [];
|
|
111
|
+
items.forEach((item) => {
|
|
112
|
+
promises.push(checkItem(item, menu));
|
|
113
|
+
});
|
|
114
|
+
yield Promise.allSettled(promises)
|
|
115
|
+
.then((results) => {
|
|
116
|
+
if (results.length > 0 && results[0].status === 'rejected') {
|
|
117
|
+
errorsBag.push(...results[0].reason);
|
|
118
|
+
}
|
|
119
|
+
});
|
|
120
|
+
if (errorsBag.length > 0) {
|
|
121
|
+
return reject(errorsBag);
|
|
122
|
+
}
|
|
123
|
+
resolve(true);
|
|
124
|
+
}));
|
|
125
|
+
}
|
|
126
|
+
exports.checkItemHierarchy = checkItemHierarchy;
|
|
127
|
+
function checkItem(item, menu, parentItem = null) {
|
|
128
|
+
return new Promise((resolve, reject) => __awaiter(this, void 0, void 0, function* () {
|
|
129
|
+
const errors = [];
|
|
130
|
+
if (!getMenuItem(item, menu)) {
|
|
131
|
+
errors.push(CartErrors_1.CartErrorEnum.ITEM_NOT_FOUND);
|
|
132
|
+
}
|
|
133
|
+
else {
|
|
134
|
+
if (parentItem) {
|
|
135
|
+
const parentMenu = getMenuItem(parentItem, menu);
|
|
136
|
+
if (item.type === Menu_1.TMenuItemEnum.BUNDLE) {
|
|
137
|
+
if (parentMenu && !parentMenu.subItemsUUIDs.includes(item.uuid)) {
|
|
138
|
+
errors.push(CartErrors_1.CartErrorEnum.ITEM_NOT_ALLOWED);
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
else if (item.type === Menu_1.TMenuItemEnum.MODIFIER) {
|
|
142
|
+
// check if CartProduct -> CartValue === menuProduct -> menuModifierGroup -> menuModifier
|
|
143
|
+
if (!menu.modifierGroups.some((modifierGroup) => {
|
|
144
|
+
return modifierGroup.subItemsUUIDs.includes(item.uuid)
|
|
145
|
+
&& menu.products.some(p => {
|
|
146
|
+
return p.subItemsUUIDs.includes(modifierGroup.uuid) && p.uuid === parentItem.uuid;
|
|
147
|
+
});
|
|
148
|
+
})) {
|
|
149
|
+
errors.push(CartErrors_1.CartErrorEnum.ITEM_NOT_ALLOWED);
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
const childErrors = [];
|
|
155
|
+
const promises = [];
|
|
156
|
+
if (item.subItems.length > 0) {
|
|
157
|
+
item.subItems.forEach((subItem) => {
|
|
158
|
+
promises.push(checkItem(subItem, menu, item));
|
|
159
|
+
});
|
|
160
|
+
}
|
|
161
|
+
yield Promise.allSettled(promises)
|
|
162
|
+
.then((results) => {
|
|
163
|
+
if (results.length > 0 && results[0].status === 'rejected') {
|
|
164
|
+
childErrors.push(...results[0].reason);
|
|
165
|
+
}
|
|
166
|
+
});
|
|
167
|
+
if (errors.length > 0 || childErrors.length > 0) {
|
|
168
|
+
if (errors.length > 0) {
|
|
169
|
+
const itemErrors = { errors, uuid: item.uuid, type: item.type };
|
|
170
|
+
reject([itemErrors, ...childErrors]);
|
|
171
|
+
}
|
|
172
|
+
else {
|
|
173
|
+
reject(childErrors);
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
resolve(true);
|
|
177
|
+
}));
|
|
178
|
+
}
|
|
179
|
+
exports.checkItem = checkItem;
|
|
180
|
+
//# sourceMappingURL=CartItemService.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CartItemService.js","sourceRoot":"","sources":["../../src/service/CartItemService.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { ICartReturn } from "@/types/CartType";
|
|
2
|
+
import { Cart } from "@/index";
|
|
3
|
+
import { ICartItem } from "@delicity/client-types/Cart/CartRequest";
|
|
4
|
+
export declare function addToCart(cart: Cart, item: ICartItem): Promise<ICartReturn>;
|
|
5
|
+
export declare function removeCartItem(cart: Cart, uuid: string): Promise<ICartReturn>;
|
|
6
|
+
export declare function updateCartItem(cart: Cart, uuid: string, item: ICartItem): Promise<ICartReturn>;
|
|
7
|
+
export declare function updateCart(cart: Cart): Promise<ICartReturn>;
|
|
8
|
+
export declare function publishCart(cart: Cart): Promise<any>;
|
|
9
|
+
//# sourceMappingURL=CartService.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CartService.d.ts","sourceRoot":"","sources":["../../src/service/CartService.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,WAAW,EAAC,MAAM,kBAAkB,CAAC;AAC7D,OAAO,EAAC,IAAI,EAAC,MAAM,SAAS,CAAC;AAO7B,OAAO,EAAC,SAAS,EAAe,MAAM,yCAAyC,CAAC;AAIhF,wBAAgB,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,GAAG,OAAO,CAAC,WAAW,CAAC,CAY3E;AAGD,wBAAgB,cAAc,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAG7E;AAGD,wBAAgB,cAAc,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,GAAG,OAAO,CAAC,WAAW,CAAC,CAG9F;AAGD,wBAAgB,UAAU,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,WAAW,CAAC,CAkC3D;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,CAwBpD"}
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
12
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
13
|
+
};
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
exports.publishCart = exports.updateCart = exports.updateCartItem = exports.removeCartItem = exports.addToCart = void 0;
|
|
16
|
+
const CartErrors_1 = require("@delicity/client-types/Cart/CartErrors");
|
|
17
|
+
const CartItemService_1 = require("@/service/CartItemService");
|
|
18
|
+
const axios_1 = __importDefault(require("axios"));
|
|
19
|
+
function addToCart(cart, item) {
|
|
20
|
+
return new Promise((resolve, reject) => {
|
|
21
|
+
(0, CartItemService_1.checkItemHierarchy)([item], cart.merchantMenu)
|
|
22
|
+
.then(() => __awaiter(this, void 0, void 0, function* () {
|
|
23
|
+
cart.items.push(item);
|
|
24
|
+
resolve(yield updateCart(cart));
|
|
25
|
+
}))
|
|
26
|
+
.catch((e) => {
|
|
27
|
+
reject(e);
|
|
28
|
+
});
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
exports.addToCart = addToCart;
|
|
32
|
+
function removeCartItem(cart, uuid) {
|
|
33
|
+
cart.items.splice(cart.items.findIndex((item) => item.uuid === uuid), 1);
|
|
34
|
+
return updateCart(cart);
|
|
35
|
+
}
|
|
36
|
+
exports.removeCartItem = removeCartItem;
|
|
37
|
+
function updateCartItem(cart, uuid, item) {
|
|
38
|
+
cart.items.splice(cart.items.findIndex((item) => item.uuid === uuid), 1, item);
|
|
39
|
+
return updateCart(cart);
|
|
40
|
+
}
|
|
41
|
+
exports.updateCartItem = updateCartItem;
|
|
42
|
+
function updateCart(cart) {
|
|
43
|
+
return new Promise((resolve, reject) => __awaiter(this, void 0, void 0, function* () {
|
|
44
|
+
const cartErrors = [];
|
|
45
|
+
const itemsErrors = [];
|
|
46
|
+
if (cart.type === null) {
|
|
47
|
+
cartErrors.push(CartErrors_1.CartErrorEnum.TYPE_NOT_SET);
|
|
48
|
+
}
|
|
49
|
+
if (!cart.addressUuid) {
|
|
50
|
+
cartErrors.push(CartErrors_1.CartErrorEnum.ADDRESS_NOT_SET);
|
|
51
|
+
}
|
|
52
|
+
// Check items availabilities
|
|
53
|
+
yield (0, CartItemService_1.isItemInCartAvailable)(cart)
|
|
54
|
+
.catch((e) => {
|
|
55
|
+
itemsErrors.push(...e.errors);
|
|
56
|
+
});
|
|
57
|
+
const accumulator = (0, CartItemService_1.productTotalAccumulator)(cart);
|
|
58
|
+
const data = {
|
|
59
|
+
items: cart.items,
|
|
60
|
+
addressUuid: cart.addressUuid,
|
|
61
|
+
when: cart.when,
|
|
62
|
+
currency: "eur",
|
|
63
|
+
merchantUid: cart.merchantUid,
|
|
64
|
+
productPrice: accumulator.productPrice,
|
|
65
|
+
type: cart.type,
|
|
66
|
+
errors: {
|
|
67
|
+
menu: itemsErrors,
|
|
68
|
+
cart: cartErrors
|
|
69
|
+
}
|
|
70
|
+
};
|
|
71
|
+
resolve(data);
|
|
72
|
+
}));
|
|
73
|
+
}
|
|
74
|
+
exports.updateCart = updateCart;
|
|
75
|
+
function publishCart(cart) {
|
|
76
|
+
return new Promise((resolve, reject) => {
|
|
77
|
+
// Checks if cart is valid
|
|
78
|
+
// Publish cart to server
|
|
79
|
+
const payload = {
|
|
80
|
+
type: cart.type,
|
|
81
|
+
items: cart.items,
|
|
82
|
+
addressUuid: cart.addressUuid,
|
|
83
|
+
when: cart.when,
|
|
84
|
+
currency: "eur",
|
|
85
|
+
merchantUid: cart.merchantUid
|
|
86
|
+
};
|
|
87
|
+
const config = cart.getConfig();
|
|
88
|
+
axios_1.default.post(config.apiEndpoint + "/v1/client/cart", payload)
|
|
89
|
+
.then((response) => {
|
|
90
|
+
resolve(response.data);
|
|
91
|
+
})
|
|
92
|
+
.catch((e) => {
|
|
93
|
+
reject(e.response.data);
|
|
94
|
+
});
|
|
95
|
+
});
|
|
96
|
+
}
|
|
97
|
+
exports.publishCart = publishCart;
|
|
98
|
+
//# sourceMappingURL=CartService.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CartService.js","sourceRoot":"","sources":["../../src/service/CartService.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { ICartRequest } from "@delicity/client-types/Cart/CartRequest";
|
|
2
|
+
import { TMenuItemEnum } from "@delicity/client-types/Merchant/Menu";
|
|
3
|
+
import { CartErrorEnum } from "@delicity/client-types/Cart/CartErrors";
|
|
4
|
+
export interface ICartMenuError {
|
|
5
|
+
type: TMenuItemEnum;
|
|
6
|
+
uuid: string;
|
|
7
|
+
errors: CartErrorEnum[];
|
|
8
|
+
}
|
|
9
|
+
export interface ICartReturn extends ICartRequest {
|
|
10
|
+
productPrice: number;
|
|
11
|
+
errors: {
|
|
12
|
+
menu: ICartMenuError[];
|
|
13
|
+
cart: CartErrorEnum[];
|
|
14
|
+
};
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=CartType.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CartType.d.ts","sourceRoot":"","sources":["../../src/types/CartType.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,YAAY,EAAC,MAAM,yCAAyC,CAAC;AACrE,OAAO,EAAC,aAAa,EAAC,MAAM,sCAAsC,CAAC;AACnE,OAAO,EAAC,aAAa,EAAC,MAAM,wCAAwC,CAAC;AAGrE,MAAM,WAAW,cAAc;IAC3B,IAAI,EAAE,aAAa,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,aAAa,EAAE,CAAA;CAC1B;AACD,MAAM,WAAW,WAAY,SAAQ,YAAY;IAC7C,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE;QACJ,IAAI,EAAE,cAAc,EAAE,CAAC;QACvB,IAAI,EAAE,aAAa,EAAE,CAAA;KACxB,CAAA;CACJ"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CartType.js","sourceRoot":"","sources":["../../src/types/CartType.ts"],"names":[],"mappings":""}
|