@delicity/client-cart 1.2.11 → 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 -129
  32. package/classes/Cart.d.ts.map +0 -1
  33. package/classes/Cart.js +0 -482
  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,482 +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
- this.remoteErrors = [];
36
- if (this.merchant.schedule) {
37
- this.merchantSchedule = new backend_schedule_management_1.default(this.merchant.schedule.slots, this.merchant.schedule.closes, this.merchant.schedule.options);
38
- }
39
- this.cart = {
40
- uuid: (0, uuid_1.v4)(),
41
- createdAt: luxon_1.DateTime.now().toISO(),
42
- merchantId: merchant.id,
43
- preparationDurationBetween: null,
44
- items: [],
45
- totalItems: 0,
46
- totalItemPrice: 0,
47
- when: when,
48
- comment: null,
49
- type: OrderMode,
50
- };
51
- }
52
- on(event, callback) {
53
- if (!this.listeners[event]) {
54
- this.listeners[event] = [];
55
- }
56
- this.listeners[event].push(callback);
57
- }
58
- off(event, callback) {
59
- if (!this.listeners[event])
60
- return;
61
- this.listeners[event] = [];
62
- }
63
- trigger(event, ...args) {
64
- if (this.listeners[event]) {
65
- this.listeners[event].forEach((callback) => {
66
- // @ts-ignore
67
- callback(...args);
68
- });
69
- }
70
- }
71
- setMenu(menu) {
72
- this.menu = JSON.parse(JSON.stringify(menu));
73
- this.cartIntegrity();
74
- this.updateCartProductPrices();
75
- this.trigger('update-cart');
76
- return this;
77
- }
78
- setCart(cart) {
79
- this.cart = cart;
80
- this.cartIntegrity();
81
- this.trigger('update-cart');
82
- return this;
83
- }
84
- getPrices() {
85
- return this.cart.prices || null;
86
- }
87
- getAcceptCondition() {
88
- return this.acceptCondition;
89
- }
90
- setAcceptCondition(acceptCondition) {
91
- this.acceptCondition = acceptCondition;
92
- return this;
93
- }
94
- getPreparationDurationBetween() {
95
- return this.cart.preparationDurationBetween;
96
- }
97
- getIsDeliveryLoading() {
98
- return this.isDeliveryLoading;
99
- }
100
- getIsPriceLoading() {
101
- return this.isPriceLoading;
102
- }
103
- getRemoteErrors() {
104
- return this.remoteErrors;
105
- }
106
- setAddress(address) {
107
- return __awaiter(this, void 0, void 0, function* () {
108
- if (this.cart.type !== client_types_1.OrderModesEnum.DELIVERY)
109
- throw new Error('invalid_order_mode');
110
- this.isDeliveryLoading = true;
111
- const delivery = yield (0, DeliveryService_1.getDeliveryDetails)(this.config, this.merchant.id, address.position);
112
- this.cart.delivery = Object.assign({ address }, delivery);
113
- this.isDeliveryLoading = false;
114
- this.trigger('update-cart');
115
- return this;
116
- });
117
- }
118
- getDeliveryInfos() {
119
- return this.cart.delivery;
120
- }
121
- setCartComment(comment) {
122
- this.cart.comment = comment;
123
- return this;
124
- }
125
- getCartComment() {
126
- return this.cart.comment;
127
- }
128
- updateCartProductPrices() {
129
- for (let index in this.cart.items) {
130
- const menuItem = this.menu.items.find(m => m.id === this.cart.items[index].item.id);
131
- if (!menuItem)
132
- this.cart.items.splice(parseInt(index), 1);
133
- const modifierGroups = this.cart.items[index].modifierGroups;
134
- const quantity = this.cart.items[index].quantity;
135
- this.cart.items[index].item = menuItem;
136
- this.cart.items[index].unitPrice = (0, CartService_1.getProductPrice)(menuItem, this.cart.type) + (0, CartService_1.getTotalModifiersUnitPrice)(modifierGroups);
137
- this.cart.items[index].totalPrice = ((0, CartService_1.getProductPrice)(menuItem, this.cart.type) + (0, CartService_1.getTotalModifiersUnitPrice)(modifierGroups)) * quantity;
138
- }
139
- this.cart.totalItems = (0, CartService_1.getProductCount)(this.cart);
140
- this.cart.totalItemPrice = (0, CartService_1.getProductPriceSum)(this.cart);
141
- if (this.cart.paymentMethods && this.cart.paymentMethods.length > 0) {
142
- this.updatePaymentMethodAmount();
143
- }
144
- this.validateCartIfError();
145
- }
146
- setOrderMode(mode) {
147
- this.cart.type = mode;
148
- if (!this.canBePayOnsite() && this.getPaymentMethods().some(e => e.type === 'cash')) {
149
- this.cart.paymentMethods = [];
150
- }
151
- this.updateCartProductPrices();
152
- this.trigger('update-cart');
153
- return this;
154
- }
155
- setWhen(when) {
156
- this.cart.when = when;
157
- this.trigger('update-cart');
158
- this.cartIntegrity(true);
159
- this.validateCartIfError();
160
- return this;
161
- }
162
- setAddressComment(comment) {
163
- var _a;
164
- if ((_a = this.cart.delivery) === null || _a === void 0 ? void 0 : _a.address) {
165
- this.cart.delivery.address.additional_informations = comment;
166
- }
167
- return this;
168
- }
169
- getMerchantId() {
170
- return this.merchant.id;
171
- }
172
- getCartUUID() {
173
- return this.cart.uuid;
174
- }
175
- getOrderMode() {
176
- return this.cart.type;
177
- }
178
- getWhen() {
179
- return this.cart.when;
180
- }
181
- getPaymentMethods() {
182
- return this.cart.paymentMethods || [];
183
- }
184
- setPaymentMethods(paymentMethods) {
185
- this.cart.paymentMethods = paymentMethods;
186
- return this;
187
- }
188
- getPaymentMethodTotalAmount() {
189
- if (!this.cart.paymentMethods)
190
- return 0;
191
- return this.cart.paymentMethods.reduce((a, b) => a + b.amount, 0);
192
- }
193
- paymentMethodCard(type, token, brand, last4, expiration, amount) {
194
- let leftToPay = this.getTotalPrice();
195
- if (!this.cart.paymentMethods)
196
- this.cart.paymentMethods = [];
197
- if (this.cart.paymentMethods) {
198
- const sum = this.getPaymentMethodTotalAmount();
199
- if (sum === this.getTotalPrice())
200
- this.cart.paymentMethods = [];
201
- else
202
- leftToPay -= sum;
203
- }
204
- if (amount && leftToPay < amount) {
205
- this.cart.paymentMethods = [];
206
- }
207
- this.cart.paymentMethods.push({
208
- type: 'card',
209
- amount: amount ? amount : leftToPay,
210
- card: { type, token, brand, last4, expiration }
211
- });
212
- return this;
213
- }
214
- paymentMethodWallet(type, amount) {
215
- let leftToPay = this.getTotalPrice();
216
- if (!this.cart.paymentMethods)
217
- this.cart.paymentMethods = [];
218
- if (this.cart.paymentMethods) {
219
- const sum = this.getPaymentMethodTotalAmount();
220
- if (sum === this.getTotalPrice())
221
- this.cart.paymentMethods = [];
222
- else
223
- leftToPay -= sum;
224
- }
225
- if (amount && leftToPay < amount) {
226
- this.cart.paymentMethods = [];
227
- }
228
- this.cart.paymentMethods.push({
229
- type: "wallet",
230
- wallet: { type },
231
- amount: amount ? amount : leftToPay,
232
- });
233
- return this;
234
- }
235
- paymentMethodOnsite(amount) {
236
- let leftToPay = this.getTotalPrice();
237
- if (!this.cart.paymentMethods)
238
- this.cart.paymentMethods = [];
239
- if (this.cart.paymentMethods) {
240
- const sum = this.getPaymentMethodTotalAmount();
241
- if (sum === this.getTotalPrice())
242
- this.cart.paymentMethods = [];
243
- else
244
- leftToPay -= sum;
245
- }
246
- if (amount && leftToPay < amount) {
247
- this.cart.paymentMethods = [];
248
- }
249
- this.cart.paymentMethods.push({
250
- type: 'cash',
251
- amount: amount ? amount : leftToPay,
252
- });
253
- return this;
254
- }
255
- addToCart(item, modifierGroups, quantity, comment, replace) {
256
- // Check if item have mandatory modifiers
257
- if (!(0, CartService_1.mandatoryModifierCheck)(item, modifierGroups, this.menu)) {
258
- throw new Error('mandatory_field_missing');
259
- }
260
- // Check if item is available
261
- if (!(0, CartService_1.isItemAvailable)(item, this.menu)) {
262
- throw new Error('item_not_available');
263
- }
264
- const index = (0, CartService_1.isItemAlreadyInCart)(item, modifierGroups, this.cart, comment);
265
- if (index !== -1 && !replace) {
266
- this.cart.items[index].quantity += quantity;
267
- this.cart.items[index].totalPrice = ((0, CartService_1.getProductPrice)(item, this.cart.type) + (0, CartService_1.getTotalModifiersUnitPrice)(modifierGroups)) * this.cart.items[index].quantity;
268
- }
269
- else {
270
- const cartItem = {
271
- uuid: (0, uuid_1.v4)(),
272
- item,
273
- modifierGroups,
274
- quantity,
275
- comment: comment || null,
276
- unitPrice: (0, CartService_1.getProductPrice)(item, this.cart.type) + (0, CartService_1.getTotalModifiersUnitPrice)(modifierGroups),
277
- totalPrice: ((0, CartService_1.getProductPrice)(item, this.cart.type) + (0, CartService_1.getTotalModifiersUnitPrice)(modifierGroups)) * quantity
278
- };
279
- if (replace) {
280
- const index = this.cart.items.findIndex(i => i.uuid === replace.uuid);
281
- this.cart.items.splice(index, 1, cartItem);
282
- }
283
- else {
284
- this.cart.items.push(cartItem);
285
- }
286
- }
287
- this.cart.totalItems = (0, CartService_1.getProductCount)(this.cart);
288
- this.cart.totalItemPrice = (0, CartService_1.getProductPriceSum)(this.cart);
289
- if (this.cart.paymentMethods && this.cart.paymentMethods.length > 0) {
290
- this.updatePaymentMethodAmount();
291
- }
292
- this.validateCartIfError();
293
- this.cartIntegrity(true);
294
- this.trigger('update-cart');
295
- return this;
296
- }
297
- removeFromCart(cartItem) {
298
- this.cart.items = this.cart.items.filter((item) => item.uuid !== cartItem.uuid);
299
- this.cart.totalItems = (0, CartService_1.getProductCount)(this.cart);
300
- this.cart.totalItemPrice = (0, CartService_1.getProductPriceSum)(this.cart);
301
- if (this.cart.paymentMethods) {
302
- this.updatePaymentMethodAmount();
303
- }
304
- this.cartIntegrity(true);
305
- this.trigger('update-cart');
306
- return this;
307
- }
308
- updateCart(cartItem, modifierGroup, quantity, comment) {
309
- return this.addToCart(cartItem.item, modifierGroup, quantity, comment, cartItem);
310
- }
311
- getCart() {
312
- return this.cart;
313
- }
314
- getItems() {
315
- return this.cart.items;
316
- }
317
- getTotalItems() {
318
- return this.cart.totalItems;
319
- }
320
- getTotalItemPrice() {
321
- return this.cart.totalItemPrice;
322
- }
323
- getTotalPrice() {
324
- var _a;
325
- return ((_a = this.cart.prices) === null || _a === void 0 ? void 0 : _a.total) || this.cart.totalItemPrice;
326
- }
327
- canBePayOnsite() {
328
- return [client_types_1.OrderModesEnum.PICKUP, client_types_1.OrderModesEnum.ON_SITE_COUNTER].includes(this.cart.type) && this.merchant.features.onsitePayment;
329
- }
330
- synchronize() {
331
- var _a;
332
- return __awaiter(this, void 0, void 0, function* () {
333
- if (this.cart.type === client_types_1.OrderModesEnum.DELIVERY && !this.cart.delivery) {
334
- throw new Error('no_delivery_address');
335
- }
336
- this.isPriceLoading = true;
337
- const request = yield (0, CartService_1.synchronizeCart)(this.config, this.cart);
338
- if (this.cart.delivery && request.delivery) {
339
- this.cart.delivery = Object.assign({ address: (_a = this.cart.delivery) === null || _a === void 0 ? void 0 : _a.address }, request.delivery);
340
- }
341
- this.cart.preparationDurationBetween = request.preparationDurationBetween;
342
- this.cart.discounts = request.discounts;
343
- this.cart.prices = request.prices;
344
- this.remoteErrors = request.errors;
345
- if (this.cart.paymentMethods && this.cart.paymentMethods.length > 0) {
346
- this.updatePaymentMethodAmount();
347
- }
348
- this.isPriceLoading = false;
349
- return this;
350
- });
351
- }
352
- validateMerchantSchedule() {
353
- this.errors = this.errors.filter(e => e.field !== 'schedule');
354
- if (this.merchantSchedule) {
355
- const when = this.getWhen() !== null ? luxon_1.DateTime.fromISO(this.getWhen()) : luxon_1.DateTime.now();
356
- if (!this.merchantSchedule.isOpenAt(when))
357
- this.errors.push({ field: 'schedule', code: 'merchant_currently_close', vars: {} });
358
- }
359
- return this;
360
- }
361
- validateCart() {
362
- var _a;
363
- this.errors = [];
364
- if (this.cart.type === client_types_1.OrderModesEnum.DELIVERY && !this.cart.delivery)
365
- this.errors.push({ field: 'address', code: 'no_address_defined', vars: {} });
366
- if (this.cart.type === client_types_1.OrderModesEnum.DELIVERY && this.cart.delivery && !this.cart.delivery.available)
367
- this.errors.push({ field: 'address', code: 'address_not_available', vars: {} });
368
- if (!this.cart.paymentMethods || ((_a = this.cart.paymentMethods) === null || _a === void 0 ? void 0 : _a.length) === 0)
369
- this.errors.push({ field: 'payment_method', code: 'missing_payment_method', vars: {} });
370
- if (!this.acceptCondition)
371
- this.errors.push({ field: 'conditions', code: 'condition_not_accepted', vars: {} });
372
- if (this.cart.type === client_types_1.OrderModesEnum.DELIVERY && this.merchant.settings.minDeliveryOrderPrice > this.cart.totalItemPrice)
373
- this.errors.push({ field: 'prices', code: 'minium_delivery_product_price', vars: { min: (0, HelperService_1.formatPrice)(this.merchant.settings.minDeliveryOrderPrice) } });
374
- this.validateMerchantSchedule();
375
- return this;
376
- }
377
- validateCartIfError() {
378
- if (this.errors.length > 0)
379
- this.validateCart();
380
- return this;
381
- }
382
- resetErrors() {
383
- this.errors = [];
384
- return this;
385
- }
386
- getErrors() {
387
- return this.errors;
388
- }
389
- pushError(field, code, vars) {
390
- this.errors.push({ field, code, vars });
391
- return this;
392
- }
393
- setErrors(errors) {
394
- this.errors = errors;
395
- return this;
396
- }
397
- updatePaymentMethodAmount() {
398
- var _a, _b, _c;
399
- const totalPrice = this.getTotalPrice();
400
- if (((_a = this.cart.paymentMethods) === null || _a === void 0 ? void 0 : _a.length) === 1) {
401
- this.cart.paymentMethods[0].amount = totalPrice;
402
- }
403
- 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'))) {
404
- // if voucher, product price = voucher (max voucher limit)
405
- // rest = payment method
406
- }
407
- else {
408
- // If multiple payment methods, split amount
409
- }
410
- }
411
- addDiscountCoupon(code) {
412
- return __awaiter(this, void 0, void 0, function* () {
413
- yield (0, CartService_1.addDiscountCode)(this.config, this.cart, code);
414
- this.trigger('update-cart');
415
- return this;
416
- });
417
- }
418
- getDiscounts() {
419
- var _a;
420
- return (_a = this.cart.discounts) !== null && _a !== void 0 ? _a : [];
421
- }
422
- getCoupons() {
423
- var _a, _b;
424
- return (_b = (_a = this.cart.discounts) === null || _a === void 0 ? void 0 : _a.filter(d => d.type === 'coupon')) !== null && _b !== void 0 ? _b : [];
425
- }
426
- removeDiscount(discount) {
427
- return __awaiter(this, void 0, void 0, function* () {
428
- yield (0, CartService_1.removeDiscountCode)(this.config, this.cart, discount);
429
- this.trigger('update-cart');
430
- return this;
431
- });
432
- }
433
- cartIntegrity(event = false) {
434
- // Check if cart products are still available in menu
435
- if (this.cart.items.length > 0) {
436
- const merchantSchedule = new backend_schedule_management_1.default(this.merchant.schedule.slots, this.merchant.schedule.closes, this.merchant.schedule.options);
437
- const toRemove = [];
438
- for (const i in this.cart.items) {
439
- // Remove from cart if item not in menu anymore
440
- const menuItem = this.menu.items.find(m => m.id === this.cart.items[i].item.id);
441
- 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); });
442
- if (!menuItem) {
443
- toRemove.push(this.cart.items[i]);
444
- continue;
445
- }
446
- // Remove from cart if item not available
447
- if (menuItem.unavailable) {
448
- toRemove.push(this.cart.items[i]);
449
- continue;
450
- }
451
- // Check if product is available
452
- if (category === null || category === void 0 ? void 0 : category.availability) {
453
- const atDate = this.cart.when ? luxon_1.DateTime.fromISO(this.cart.when) : luxon_1.DateTime.now();
454
- // @ts-ignore
455
- const categoryAvailability = (0, CategoryAvailabilityService_1.categoryAvailable)(category.availability, atDate, merchantSchedule);
456
- if (!categoryAvailability.isAvailable) {
457
- toRemove.push(this.cart.items[i]);
458
- if (event) {
459
- // Used when cart update check.
460
- this.trigger('product-removed:not-available-at-date', this.cart.items[i]);
461
- }
462
- continue;
463
- }
464
- }
465
- // Update from menu
466
- this.cart.items[i].item = menuItem;
467
- }
468
- // Remove item from cart when necessary
469
- toRemove.forEach((cartItem) => {
470
- this.cart.items = this.cart.items.filter((item) => item.uuid !== cartItem.uuid);
471
- });
472
- // Update cart
473
- this.cart.totalItems = (0, CartService_1.getProductCount)(this.cart);
474
- this.cart.totalItemPrice = (0, CartService_1.getProductPriceSum)(this.cart);
475
- if (this.cart.paymentMethods && this.cart.paymentMethods.length > 0) {
476
- this.updatePaymentMethodAmount();
477
- }
478
- }
479
- }
480
- }
481
- exports.Cart = Cart;
482
- //# 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"}