@delicity/client-cart 1.2.10 → 1.2.12

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (54) hide show
  1. package/README.md +1 -0
  2. package/coverage/clover.xml +71 -0
  3. package/coverage/coverage-final.json +3 -0
  4. package/coverage/lcov-report/base.css +224 -0
  5. package/coverage/lcov-report/block-navigation.js +87 -0
  6. package/coverage/lcov-report/classes/Cart.ts.html +340 -0
  7. package/coverage/lcov-report/classes/index.html +116 -0
  8. package/coverage/lcov-report/favicon.png +0 -0
  9. package/coverage/lcov-report/index.html +131 -0
  10. package/coverage/lcov-report/prettify.css +1 -0
  11. package/coverage/lcov-report/prettify.js +2 -0
  12. package/coverage/lcov-report/service/CartService.ts.html +238 -0
  13. package/coverage/lcov-report/service/index.html +116 -0
  14. package/coverage/lcov-report/sort-arrow-sprite.png +0 -0
  15. package/coverage/lcov-report/sorter.js +196 -0
  16. package/coverage/lcov.info +129 -0
  17. package/jest.config.js +8 -0
  18. package/package.json +1 -1
  19. package/src/classes/Cart.ts +563 -0
  20. package/src/index.ts +3 -0
  21. package/src/service/CartService.ts +139 -0
  22. package/src/service/CategoryAvailabilityService.ts +121 -0
  23. package/src/service/DeliveryService.ts +17 -0
  24. package/src/service/HelperService.ts +9 -0
  25. package/src/test/availability.test.ts +346 -0
  26. package/src/test/class.test.ts +497 -0
  27. package/src/test/data/CartData.json +244 -0
  28. package/src/test/data/menu.json +5875 -0
  29. package/src/test/data/merchant.json +186 -0
  30. package/tsconfig.json +24 -0
  31. package/classes/Cart.d.ts +0 -126
  32. package/classes/Cart.d.ts.map +0 -1
  33. package/classes/Cart.js +0 -477
  34. package/classes/Cart.js.map +0 -1
  35. package/index.d.ts +0 -4
  36. package/index.d.ts.map +0 -1
  37. package/index.js +0 -20
  38. package/index.js.map +0 -1
  39. package/service/CartService.d.ts +0 -14
  40. package/service/CartService.d.ts.map +0 -1
  41. package/service/CartService.js +0 -130
  42. package/service/CartService.js.map +0 -1
  43. package/service/CategoryAvailabilityService.d.ts +0 -23
  44. package/service/CategoryAvailabilityService.d.ts.map +0 -1
  45. package/service/CategoryAvailabilityService.js +0 -103
  46. package/service/CategoryAvailabilityService.js.map +0 -1
  47. package/service/DeliveryService.d.ts +0 -4
  48. package/service/DeliveryService.d.ts.map +0 -1
  49. package/service/DeliveryService.js +0 -30
  50. package/service/DeliveryService.js.map +0 -1
  51. package/service/HelperService.d.ts +0 -2
  52. package/service/HelperService.d.ts.map +0 -1
  53. package/service/HelperService.js +0 -14
  54. package/service/HelperService.js.map +0 -1
package/classes/Cart.js DELETED
@@ -1,477 +0,0 @@
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.Cart = void 0;
16
- const client_types_1 = require("@delicity/client-types");
17
- const luxon_1 = require("luxon");
18
- const uuid_1 = require("uuid");
19
- const CartService_1 = require("../service/CartService");
20
- const DeliveryService_1 = require("../service/DeliveryService");
21
- const HelperService_1 = require("../service/HelperService");
22
- // @ts-ignore
23
- const backend_schedule_management_1 = __importDefault(require("@delicity/backend-schedule-management"));
24
- const CategoryAvailabilityService_1 = require("../service/CategoryAvailabilityService");
25
- class Cart {
26
- constructor(config, merchant, menu, OrderMode, when) {
27
- this.acceptCondition = false;
28
- this.errors = [];
29
- this.listeners = {};
30
- this.isPriceLoading = false;
31
- this.isDeliveryLoading = false;
32
- this.merchant = merchant;
33
- this.menu = JSON.parse(JSON.stringify(menu));
34
- this.config = config;
35
- if (this.merchant.schedule) {
36
- this.merchantSchedule = new backend_schedule_management_1.default(this.merchant.schedule.slots, this.merchant.schedule.closes, this.merchant.schedule.options);
37
- }
38
- this.cart = {
39
- uuid: (0, uuid_1.v4)(),
40
- createdAt: luxon_1.DateTime.now().toISO(),
41
- merchantId: merchant.id,
42
- preparationDurationBetween: null,
43
- items: [],
44
- totalItems: 0,
45
- totalItemPrice: 0,
46
- when: when,
47
- comment: null,
48
- type: OrderMode,
49
- };
50
- }
51
- on(event, callback) {
52
- if (!this.listeners[event]) {
53
- this.listeners[event] = [];
54
- }
55
- this.listeners[event].push(callback);
56
- }
57
- off(event, callback) {
58
- if (!this.listeners[event])
59
- return;
60
- this.listeners[event] = [];
61
- }
62
- trigger(event, ...args) {
63
- if (this.listeners[event]) {
64
- this.listeners[event].forEach((callback) => {
65
- // @ts-ignore
66
- callback(...args);
67
- });
68
- }
69
- }
70
- setMenu(menu) {
71
- this.menu = JSON.parse(JSON.stringify(menu));
72
- this.cartIntegrity();
73
- this.updateCartProductPrices();
74
- this.trigger('update-cart');
75
- return this;
76
- }
77
- setCart(cart) {
78
- this.cart = cart;
79
- this.cartIntegrity();
80
- this.trigger('update-cart');
81
- return this;
82
- }
83
- getPrices() {
84
- return this.cart.prices || null;
85
- }
86
- getAcceptCondition() {
87
- return this.acceptCondition;
88
- }
89
- setAcceptCondition(acceptCondition) {
90
- this.acceptCondition = acceptCondition;
91
- return this;
92
- }
93
- getPreparationDurationBetween() {
94
- return this.cart.preparationDurationBetween;
95
- }
96
- getIsDeliveryLoading() {
97
- return this.isDeliveryLoading;
98
- }
99
- getIsPriceLoading() {
100
- return this.isPriceLoading;
101
- }
102
- setAddress(address) {
103
- return __awaiter(this, void 0, void 0, function* () {
104
- if (this.cart.type !== client_types_1.OrderModesEnum.DELIVERY)
105
- throw new Error('invalid_order_mode');
106
- this.isDeliveryLoading = true;
107
- const delivery = yield (0, DeliveryService_1.getDeliveryDetails)(this.config, this.merchant.id, address.position);
108
- this.cart.delivery = Object.assign({ address }, delivery);
109
- this.isDeliveryLoading = false;
110
- this.trigger('update-cart');
111
- return this;
112
- });
113
- }
114
- getDeliveryInfos() {
115
- return this.cart.delivery;
116
- }
117
- setCartComment(comment) {
118
- this.cart.comment = comment;
119
- return this;
120
- }
121
- getCartComment() {
122
- return this.cart.comment;
123
- }
124
- updateCartProductPrices() {
125
- for (let index in this.cart.items) {
126
- const menuItem = this.menu.items.find(m => m.id === this.cart.items[index].item.id);
127
- if (!menuItem)
128
- this.cart.items.splice(parseInt(index), 1);
129
- const modifierGroups = this.cart.items[index].modifierGroups;
130
- const quantity = this.cart.items[index].quantity;
131
- this.cart.items[index].item = menuItem;
132
- this.cart.items[index].unitPrice = (0, CartService_1.getProductPrice)(menuItem, this.cart.type) + (0, CartService_1.getTotalModifiersUnitPrice)(modifierGroups);
133
- this.cart.items[index].totalPrice = ((0, CartService_1.getProductPrice)(menuItem, this.cart.type) + (0, CartService_1.getTotalModifiersUnitPrice)(modifierGroups)) * quantity;
134
- }
135
- this.cart.totalItems = (0, CartService_1.getProductCount)(this.cart);
136
- this.cart.totalItemPrice = (0, CartService_1.getProductPriceSum)(this.cart);
137
- if (this.cart.paymentMethods && this.cart.paymentMethods.length > 0) {
138
- this.updatePaymentMethodAmount();
139
- }
140
- this.validateCartIfError();
141
- }
142
- setOrderMode(mode) {
143
- this.cart.type = mode;
144
- if (!this.canBePayOnsite() && this.getPaymentMethods().some(e => e.type === 'cash')) {
145
- this.cart.paymentMethods = [];
146
- }
147
- this.updateCartProductPrices();
148
- this.trigger('update-cart');
149
- return this;
150
- }
151
- setWhen(when) {
152
- this.cart.when = when;
153
- this.trigger('update-cart');
154
- this.cartIntegrity(true);
155
- this.validateCartIfError();
156
- return this;
157
- }
158
- setAddressComment(comment) {
159
- var _a;
160
- if ((_a = this.cart.delivery) === null || _a === void 0 ? void 0 : _a.address) {
161
- this.cart.delivery.address.additional_informations = comment;
162
- }
163
- return this;
164
- }
165
- getMerchantId() {
166
- return this.merchant.id;
167
- }
168
- getCartUUID() {
169
- return this.cart.uuid;
170
- }
171
- getOrderMode() {
172
- return this.cart.type;
173
- }
174
- getWhen() {
175
- return this.cart.when;
176
- }
177
- getPaymentMethods() {
178
- return this.cart.paymentMethods || [];
179
- }
180
- setPaymentMethods(paymentMethods) {
181
- this.cart.paymentMethods = paymentMethods;
182
- return this;
183
- }
184
- getPaymentMethodTotalAmount() {
185
- if (!this.cart.paymentMethods)
186
- return 0;
187
- return this.cart.paymentMethods.reduce((a, b) => a + b.amount, 0);
188
- }
189
- paymentMethodCard(type, token, brand, last4, expiration, amount) {
190
- let leftToPay = this.getTotalPrice();
191
- if (!this.cart.paymentMethods)
192
- this.cart.paymentMethods = [];
193
- if (this.cart.paymentMethods) {
194
- const sum = this.getPaymentMethodTotalAmount();
195
- if (sum === this.getTotalPrice())
196
- this.cart.paymentMethods = [];
197
- else
198
- leftToPay -= sum;
199
- }
200
- if (amount && leftToPay < amount) {
201
- this.cart.paymentMethods = [];
202
- }
203
- this.cart.paymentMethods.push({
204
- type: 'card',
205
- amount: amount ? amount : leftToPay,
206
- card: { type, token, brand, last4, expiration }
207
- });
208
- return this;
209
- }
210
- paymentMethodWallet(type, amount) {
211
- let leftToPay = this.getTotalPrice();
212
- if (!this.cart.paymentMethods)
213
- this.cart.paymentMethods = [];
214
- if (this.cart.paymentMethods) {
215
- const sum = this.getPaymentMethodTotalAmount();
216
- if (sum === this.getTotalPrice())
217
- this.cart.paymentMethods = [];
218
- else
219
- leftToPay -= sum;
220
- }
221
- if (amount && leftToPay < amount) {
222
- this.cart.paymentMethods = [];
223
- }
224
- this.cart.paymentMethods.push({
225
- type: "wallet",
226
- wallet: { type },
227
- amount: amount ? amount : leftToPay,
228
- });
229
- return this;
230
- }
231
- paymentMethodOnsite(amount) {
232
- let leftToPay = this.getTotalPrice();
233
- if (!this.cart.paymentMethods)
234
- this.cart.paymentMethods = [];
235
- if (this.cart.paymentMethods) {
236
- const sum = this.getPaymentMethodTotalAmount();
237
- if (sum === this.getTotalPrice())
238
- this.cart.paymentMethods = [];
239
- else
240
- leftToPay -= sum;
241
- }
242
- if (amount && leftToPay < amount) {
243
- this.cart.paymentMethods = [];
244
- }
245
- this.cart.paymentMethods.push({
246
- type: 'cash',
247
- amount: amount ? amount : leftToPay,
248
- });
249
- return this;
250
- }
251
- addToCart(item, modifierGroups, quantity, comment, replace) {
252
- // Check if item have mandatory modifiers
253
- if (!(0, CartService_1.mandatoryModifierCheck)(item, modifierGroups, this.menu)) {
254
- throw new Error('mandatory_field_missing');
255
- }
256
- // Check if item is available
257
- if (!(0, CartService_1.isItemAvailable)(item, this.menu)) {
258
- throw new Error('item_not_available');
259
- }
260
- const index = (0, CartService_1.isItemAlreadyInCart)(item, modifierGroups, this.cart, comment);
261
- if (index !== -1 && !replace) {
262
- this.cart.items[index].quantity += quantity;
263
- this.cart.items[index].totalPrice = ((0, CartService_1.getProductPrice)(item, this.cart.type) + (0, CartService_1.getTotalModifiersUnitPrice)(modifierGroups)) * this.cart.items[index].quantity;
264
- }
265
- else {
266
- const cartItem = {
267
- uuid: (0, uuid_1.v4)(),
268
- item,
269
- modifierGroups,
270
- quantity,
271
- comment: comment || null,
272
- unitPrice: (0, CartService_1.getProductPrice)(item, this.cart.type) + (0, CartService_1.getTotalModifiersUnitPrice)(modifierGroups),
273
- totalPrice: ((0, CartService_1.getProductPrice)(item, this.cart.type) + (0, CartService_1.getTotalModifiersUnitPrice)(modifierGroups)) * quantity
274
- };
275
- if (replace) {
276
- const index = this.cart.items.findIndex(i => i.uuid === replace.uuid);
277
- this.cart.items.splice(index, 1, cartItem);
278
- }
279
- else {
280
- this.cart.items.push(cartItem);
281
- }
282
- }
283
- this.cart.totalItems = (0, CartService_1.getProductCount)(this.cart);
284
- this.cart.totalItemPrice = (0, CartService_1.getProductPriceSum)(this.cart);
285
- if (this.cart.paymentMethods && this.cart.paymentMethods.length > 0) {
286
- this.updatePaymentMethodAmount();
287
- }
288
- this.validateCartIfError();
289
- this.cartIntegrity(true);
290
- this.trigger('update-cart');
291
- return this;
292
- }
293
- removeFromCart(cartItem) {
294
- this.cart.items = this.cart.items.filter((item) => item.uuid !== cartItem.uuid);
295
- this.cart.totalItems = (0, CartService_1.getProductCount)(this.cart);
296
- this.cart.totalItemPrice = (0, CartService_1.getProductPriceSum)(this.cart);
297
- if (this.cart.paymentMethods) {
298
- this.updatePaymentMethodAmount();
299
- }
300
- this.cartIntegrity(true);
301
- this.trigger('update-cart');
302
- return this;
303
- }
304
- updateCart(cartItem, modifierGroup, quantity, comment) {
305
- return this.addToCart(cartItem.item, modifierGroup, quantity, comment, cartItem);
306
- }
307
- getCart() {
308
- return this.cart;
309
- }
310
- getItems() {
311
- return this.cart.items;
312
- }
313
- getTotalItems() {
314
- return this.cart.totalItems;
315
- }
316
- getTotalItemPrice() {
317
- return this.cart.totalItemPrice;
318
- }
319
- getTotalPrice() {
320
- var _a;
321
- return ((_a = this.cart.prices) === null || _a === void 0 ? void 0 : _a.total) || this.cart.totalItemPrice;
322
- }
323
- canBePayOnsite() {
324
- return [client_types_1.OrderModesEnum.PICKUP, client_types_1.OrderModesEnum.ON_SITE_COUNTER].includes(this.cart.type) && this.merchant.features.onsitePayment;
325
- }
326
- synchronize() {
327
- var _a;
328
- return __awaiter(this, void 0, void 0, function* () {
329
- if (this.cart.type === client_types_1.OrderModesEnum.DELIVERY && !this.cart.delivery) {
330
- throw new Error('no_delivery_address');
331
- }
332
- this.isPriceLoading = true;
333
- const request = yield (0, CartService_1.synchronizeCart)(this.config, this.cart);
334
- if (this.cart.delivery && request.delivery) {
335
- this.cart.delivery = Object.assign({ address: (_a = this.cart.delivery) === null || _a === void 0 ? void 0 : _a.address }, request.delivery);
336
- }
337
- this.cart.preparationDurationBetween = request.preparationDurationBetween;
338
- this.cart.discounts = request.discounts;
339
- this.cart.prices = request.prices;
340
- if (this.cart.paymentMethods && this.cart.paymentMethods.length > 0) {
341
- this.updatePaymentMethodAmount();
342
- }
343
- this.isPriceLoading = false;
344
- return this;
345
- });
346
- }
347
- validateMerchantSchedule() {
348
- this.errors = this.errors.filter(e => e.field !== 'schedule');
349
- if (this.merchantSchedule) {
350
- const when = this.getWhen() !== null ? luxon_1.DateTime.fromISO(this.getWhen()) : luxon_1.DateTime.now();
351
- if (!this.merchantSchedule.isOpenAt(when))
352
- this.errors.push({ field: 'schedule', code: 'merchant_currently_close', vars: {} });
353
- }
354
- return this;
355
- }
356
- validateCart() {
357
- var _a;
358
- this.errors = [];
359
- if (this.cart.type === client_types_1.OrderModesEnum.DELIVERY && !this.cart.delivery)
360
- this.errors.push({ field: 'address', code: 'no_address_defined', vars: {} });
361
- if (this.cart.type === client_types_1.OrderModesEnum.DELIVERY && this.cart.delivery && !this.cart.delivery.available)
362
- this.errors.push({ field: 'address', code: 'address_not_available', vars: {} });
363
- if (!this.cart.paymentMethods || ((_a = this.cart.paymentMethods) === null || _a === void 0 ? void 0 : _a.length) === 0)
364
- this.errors.push({ field: 'payment_method', code: 'missing_payment_method', vars: {} });
365
- if (!this.acceptCondition)
366
- this.errors.push({ field: 'conditions', code: 'condition_not_accepted', vars: {} });
367
- if (this.cart.type === client_types_1.OrderModesEnum.DELIVERY && this.merchant.settings.minDeliveryOrderPrice > this.cart.totalItemPrice)
368
- this.errors.push({ field: 'prices', code: 'minium_delivery_product_price', vars: { min: (0, HelperService_1.formatPrice)(this.merchant.settings.minDeliveryOrderPrice) } });
369
- this.validateMerchantSchedule();
370
- return this;
371
- }
372
- validateCartIfError() {
373
- if (this.errors.length > 0)
374
- this.validateCart();
375
- return this;
376
- }
377
- resetErrors() {
378
- this.errors = [];
379
- return this;
380
- }
381
- getErrors() {
382
- return this.errors;
383
- }
384
- pushError(field, code, vars) {
385
- this.errors.push({ field, code, vars });
386
- return this;
387
- }
388
- setErrors(errors) {
389
- this.errors = errors;
390
- return this;
391
- }
392
- updatePaymentMethodAmount() {
393
- var _a, _b, _c;
394
- const totalPrice = this.getTotalPrice();
395
- if (((_a = this.cart.paymentMethods) === null || _a === void 0 ? void 0 : _a.length) === 1) {
396
- this.cart.paymentMethods[0].amount = totalPrice;
397
- }
398
- else if (((_b = this.cart.paymentMethods) === null || _b === void 0 ? void 0 : _b.length) === 2 && ((_c = this.cart.paymentMethods) === null || _c === void 0 ? void 0 : _c.some(p => p.type === 'meal-voucher'))) {
399
- // if voucher, product price = voucher (max voucher limit)
400
- // rest = payment method
401
- }
402
- else {
403
- // If multiple payment methods, split amount
404
- }
405
- }
406
- addDiscountCoupon(code) {
407
- return __awaiter(this, void 0, void 0, function* () {
408
- yield (0, CartService_1.addDiscountCode)(this.config, this.cart, code);
409
- this.trigger('update-cart');
410
- return this;
411
- });
412
- }
413
- getDiscounts() {
414
- var _a;
415
- return (_a = this.cart.discounts) !== null && _a !== void 0 ? _a : [];
416
- }
417
- getCoupons() {
418
- var _a, _b;
419
- return (_b = (_a = this.cart.discounts) === null || _a === void 0 ? void 0 : _a.filter(d => d.type === 'coupon')) !== null && _b !== void 0 ? _b : [];
420
- }
421
- removeDiscount(discount) {
422
- return __awaiter(this, void 0, void 0, function* () {
423
- yield (0, CartService_1.removeDiscountCode)(this.config, this.cart, discount);
424
- this.trigger('update-cart');
425
- return this;
426
- });
427
- }
428
- cartIntegrity(event = false) {
429
- // Check if cart products are still available in menu
430
- if (this.cart.items.length > 0) {
431
- const merchantSchedule = new backend_schedule_management_1.default(this.merchant.schedule.slots, this.merchant.schedule.closes, this.merchant.schedule.options);
432
- const toRemove = [];
433
- for (const i in this.cart.items) {
434
- // Remove from cart if item not in menu anymore
435
- const menuItem = this.menu.items.find(m => m.id === this.cart.items[i].item.id);
436
- const category = this.menu.categories.find(c => { var _a; return (_a = c.itemIds) === null || _a === void 0 ? void 0 : _a.includes(this.cart.items[i].item.uid); });
437
- if (!menuItem) {
438
- toRemove.push(this.cart.items[i]);
439
- continue;
440
- }
441
- // Remove from cart if item not available
442
- if (menuItem.unavailable) {
443
- toRemove.push(this.cart.items[i]);
444
- continue;
445
- }
446
- // Check if product is available
447
- if (category === null || category === void 0 ? void 0 : category.availability) {
448
- const atDate = this.cart.when ? luxon_1.DateTime.fromISO(this.cart.when) : luxon_1.DateTime.now();
449
- // @ts-ignore
450
- const categoryAvailability = (0, CategoryAvailabilityService_1.categoryAvailable)(category.availability, atDate, merchantSchedule);
451
- if (!categoryAvailability.isAvailable) {
452
- toRemove.push(this.cart.items[i]);
453
- if (event) {
454
- // Used when cart update check.
455
- this.trigger('product-removed:not-available-at-date', this.cart.items[i]);
456
- }
457
- continue;
458
- }
459
- }
460
- // Update from menu
461
- this.cart.items[i].item = menuItem;
462
- }
463
- // Remove item from cart when necessary
464
- toRemove.forEach((cartItem) => {
465
- this.cart.items = this.cart.items.filter((item) => item.uuid !== cartItem.uuid);
466
- });
467
- // Update cart
468
- this.cart.totalItems = (0, CartService_1.getProductCount)(this.cart);
469
- this.cart.totalItemPrice = (0, CartService_1.getProductPriceSum)(this.cart);
470
- if (this.cart.paymentMethods && this.cart.paymentMethods.length > 0) {
471
- this.updatePaymentMethodAmount();
472
- }
473
- }
474
- }
475
- }
476
- exports.Cart = Cart;
477
- //# sourceMappingURL=Cart.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Cart.js","sourceRoot":"","sources":["../../src/classes/Cart.ts"],"names":[],"mappings":"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"}
package/index.d.ts DELETED
@@ -1,4 +0,0 @@
1
- export * from './classes/Cart';
2
- export * from './service/CartService';
3
- export * from './service/CategoryAvailabilityService';
4
- //# sourceMappingURL=index.d.ts.map
package/index.d.ts.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAA;AAC9B,cAAc,uBAAuB,CAAA;AACrC,cAAc,uCAAuC,CAAA"}
package/index.js DELETED
@@ -1,20 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
- for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
- };
16
- Object.defineProperty(exports, "__esModule", { value: true });
17
- __exportStar(require("./classes/Cart"), exports);
18
- __exportStar(require("./service/CartService"), exports);
19
- __exportStar(require("./service/CategoryAvailabilityService"), exports);
20
- //# sourceMappingURL=index.js.map
package/index.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,iDAA8B;AAC9B,wDAAqC;AACrC,wEAAqD"}
@@ -1,14 +0,0 @@
1
- import { ICart, ICartItem, ICartModifierGroup, IClientConfig, Menu, MenuItem, OrderModesEnum } from "@delicity/client-types";
2
- export declare function getProductPriceSum(cart: ICart): number;
3
- export declare function getProductCount(cart: ICart): number;
4
- export declare function getItemModifierValue(item: ICartItem): string;
5
- export declare function getItemModifierValueArray(item: ICartItem): string[];
6
- export declare function mandatoryModifierCheck(item: MenuItem, cartModifier: ICartModifierGroup[], menu: Menu): boolean;
7
- export declare function isItemAvailable(item: MenuItem, menu: Menu): boolean;
8
- export declare function getProductPrice(item: MenuItem, mode: OrderModesEnum): number;
9
- export declare function getTotalModifiersUnitPrice(modifierGroup: ICartModifierGroup[]): number;
10
- export declare function isItemAlreadyInCart(item: MenuItem, modifierGroups: ICartModifierGroup[], cart: ICart, comment?: string): number;
11
- export declare function synchronizeCart(config: IClientConfig, cart: ICart): Promise<unknown>;
12
- export declare function addDiscountCode(config: IClientConfig, cart: ICart, code: string): Promise<unknown>;
13
- export declare function removeDiscountCode(config: IClientConfig, cart: ICart, discountId: number): Promise<unknown>;
14
- //# sourceMappingURL=CartService.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"CartService.d.ts","sourceRoot":"","sources":["../../src/service/CartService.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,KAAK,EACL,SAAS,EACT,kBAAkB,EAClB,aAAa,EACb,IAAI,EACJ,QAAQ,EACR,cAAc,EACjB,MAAM,wBAAwB,CAAC;AAGhC,wBAAgB,kBAAkB,CAAC,IAAI,EAAC,KAAK,GAAG,MAAM,CAErD;AACD,wBAAgB,eAAe,CAAC,IAAI,EAAC,KAAK,GAAG,MAAM,CAElD;AAED,wBAAgB,oBAAoB,CAAC,IAAI,EAAC,SAAS,GAAG,MAAM,CAE3D;AACD,wBAAgB,yBAAyB,CAAC,IAAI,EAAC,SAAS,GAAG,MAAM,EAAE,CAMlE;AAED,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,QAAQ,EAAE,YAAY,EAAE,kBAAkB,EAAE,EAAE,IAAI,EAAE,IAAI,GAAG,OAAO,CAgB9G;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,WAIzD;AAGD,wBAAgB,eAAe,CAAC,IAAI,EAAC,QAAQ,EAAE,IAAI,EAAC,cAAc,GAAG,MAAM,CAiB1E;AAED,wBAAgB,0BAA0B,CAAC,aAAa,EAAC,kBAAkB,EAAE,GAAG,MAAM,CAErF;AAED,wBAAgB,mBAAmB,CAAC,IAAI,EAAC,QAAQ,EAAE,cAAc,EAAC,kBAAkB,EAAE,EAAE,IAAI,EAAC,KAAK,EAAE,OAAO,CAAC,EAAC,MAAM,GAAG,MAAM,CAoB3H;AAGD,wBAAgB,eAAe,CAAC,MAAM,EAAC,aAAa,EAAE,IAAI,EAAE,KAAK,oBAUhE;AAGD,wBAAgB,eAAe,CAAC,MAAM,EAAC,aAAa,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,oBAU9E;AAGD,wBAAgB,kBAAkB,CAAC,MAAM,EAAC,aAAa,EAAE,IAAI,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,oBAUvF"}