@lyxa.ai/core 1.3.259 → 1.3.262

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 (104) hide show
  1. package/dist/libraries/event/EventEnums.d.ts +2 -1
  2. package/dist/libraries/event/EventEnums.js +1 -0
  3. package/dist/libraries/event/EventEnums.js.map +1 -1
  4. package/dist/libraries/event/events/index.d.ts +1 -0
  5. package/dist/libraries/event/events/index.js +18 -0
  6. package/dist/libraries/event/events/index.js.map +1 -0
  7. package/dist/libraries/event/events/order/order-created.event.d.ts +4 -0
  8. package/dist/libraries/event/events/order/order-created.event.js +8 -0
  9. package/dist/libraries/event/events/order/order-created.event.js.map +1 -0
  10. package/dist/libraries/event/events/punch-marketing/sync-user-shop-punch-marketing-history-event.d.ts +2 -2
  11. package/dist/libraries/event/events/rider/index.d.ts +1 -0
  12. package/dist/libraries/event/events/rider/index.js +18 -0
  13. package/dist/libraries/event/events/rider/index.js.map +1 -0
  14. package/dist/libraries/event/events/rider/scoring/index.d.ts +5 -0
  15. package/dist/libraries/event/events/rider/scoring/index.js +14 -0
  16. package/dist/libraries/event/events/rider/scoring/index.js.map +1 -0
  17. package/dist/libraries/event/events/rider/scoring/rider-accepted-order.event.d.ts +11 -0
  18. package/dist/libraries/event/events/rider/scoring/rider-accepted-order.event.js +21 -0
  19. package/dist/libraries/event/events/rider/scoring/rider-accepted-order.event.js.map +1 -0
  20. package/dist/libraries/event/events/rider/scoring/rider-arrived-at-store.event.d.ts +13 -0
  21. package/dist/libraries/event/events/rider/scoring/rider-arrived-at-store.event.js +25 -0
  22. package/dist/libraries/event/events/rider/scoring/rider-arrived-at-store.event.js.map +1 -0
  23. package/dist/libraries/event/events/rider/scoring/rider-delivered-order.event.d.ts +13 -0
  24. package/dist/libraries/event/events/rider/scoring/rider-delivered-order.event.js +25 -0
  25. package/dist/libraries/event/events/rider/scoring/rider-delivered-order.event.js.map +1 -0
  26. package/dist/libraries/event/events/rider/scoring/rider-rejected-order.event.d.ts +11 -0
  27. package/dist/libraries/event/events/rider/scoring/rider-rejected-order.event.js +21 -0
  28. package/dist/libraries/event/events/rider/scoring/rider-rejected-order.event.js.map +1 -0
  29. package/dist/libraries/event/events/rider/scoring/rider-score-event.d.ts +16 -0
  30. package/dist/libraries/event/events/rider/scoring/rider-score-event.js +23 -0
  31. package/dist/libraries/event/events/rider/scoring/rider-score-event.js.map +1 -0
  32. package/dist/libraries/event/events/sync-order-again-sections-for-shop-event.d.ts +2 -2
  33. package/dist/libraries/firebase/fcmService.js +7 -7
  34. package/dist/libraries/firebase/fcmService.js.map +1 -1
  35. package/dist/libraries/mongo/models/embedded/profit.model.js.map +1 -1
  36. package/dist/libraries/mongo/models/embedded/rider-statistics.d.ts +11 -0
  37. package/dist/libraries/mongo/models/embedded/rider-statistics.js +62 -0
  38. package/dist/libraries/mongo/models/embedded/rider-statistics.js.map +1 -0
  39. package/dist/libraries/mongo/models/embedded/service-line-item.model.d.ts +23 -0
  40. package/dist/libraries/mongo/models/embedded/service-line-item.model.js +95 -0
  41. package/dist/libraries/mongo/models/embedded/service-line-item.model.js.map +1 -0
  42. package/dist/libraries/mongo/models/embedded/service-order-cance.model.d.ts +1 -1
  43. package/dist/libraries/mongo/models/embedded/service-order-cance.model.js +1 -5
  44. package/dist/libraries/mongo/models/embedded/service-order-cance.model.js.map +1 -1
  45. package/dist/libraries/mongo/models/embedded/service-order-finance.model.d.ts +6 -7
  46. package/dist/libraries/mongo/models/embedded/service-order-finance.model.js +17 -18
  47. package/dist/libraries/mongo/models/embedded/service-order-finance.model.js.map +1 -1
  48. package/dist/libraries/mongo/models/embedded/service-order-flag.model.d.ts +4 -4
  49. package/dist/libraries/mongo/models/embedded/service-order-flag.model.js +12 -7
  50. package/dist/libraries/mongo/models/embedded/service-order-flag.model.js.map +1 -1
  51. package/dist/libraries/mongo/models/embedded/service-order-pricing.model.d.ts +9 -5
  52. package/dist/libraries/mongo/models/embedded/service-order-pricing.model.js +30 -10
  53. package/dist/libraries/mongo/models/embedded/service-order-pricing.model.js.map +1 -1
  54. package/dist/libraries/mongo/models/embedded/status-timeline.model.d.ts +3 -3
  55. package/dist/libraries/mongo/models/embedded/status-timeline.model.js +2 -9
  56. package/dist/libraries/mongo/models/embedded/status-timeline.model.js.map +1 -1
  57. package/dist/libraries/mongo/models/index.d.ts +0 -3
  58. package/dist/libraries/mongo/models/index.js +1 -5
  59. package/dist/libraries/mongo/models/index.js.map +1 -1
  60. package/dist/libraries/mongo/models/rider.model.d.ts +2 -0
  61. package/dist/libraries/mongo/models/rider.model.js +18 -0
  62. package/dist/libraries/mongo/models/rider.model.js.map +1 -1
  63. package/dist/libraries/mongo/models/service-addon.model.js +3 -3
  64. package/dist/libraries/mongo/models/service-addon.model.js.map +1 -1
  65. package/dist/libraries/mongo/models/service-cart.model.d.ts +6 -11
  66. package/dist/libraries/mongo/models/service-cart.model.js +15 -56
  67. package/dist/libraries/mongo/models/service-cart.model.js.map +1 -1
  68. package/dist/libraries/mongo/models/service-order.model.d.ts +33 -33
  69. package/dist/libraries/mongo/models/service-order.model.js +86 -89
  70. package/dist/libraries/mongo/models/service-order.model.js.map +1 -1
  71. package/dist/libraries/mongo/models/service-package.model.js +1 -1
  72. package/dist/libraries/mongo/models/service-package.model.js.map +1 -1
  73. package/dist/libraries/mongo/models/service-promotion.model.d.ts +7 -5
  74. package/dist/libraries/mongo/models/service-promotion.model.js +30 -24
  75. package/dist/libraries/mongo/models/service-promotion.model.js.map +1 -1
  76. package/dist/libraries/mongo/models/shared/duration.model.d.ts +10 -0
  77. package/dist/libraries/mongo/models/shared/duration.model.js +34 -2
  78. package/dist/libraries/mongo/models/shared/duration.model.js.map +1 -1
  79. package/dist/libraries/socket/events/order-actions.socket.event.d.ts +4 -4
  80. package/dist/libraries/trpc/middlewares/auth.d.ts +1 -1
  81. package/dist/libraries/trpc/middlewares/createRoleProtectedProcedure.d.ts +1 -1
  82. package/dist/libraries/trpc/middlewares/phone-verified.d.ts +1 -1
  83. package/dist/libraries/trpc/middlewares/publicUserDecoder.d.ts +1 -1
  84. package/dist/types/README.md +1 -1
  85. package/dist/types/package.json +1 -1
  86. package/dist/types/utilities/enum.d.ts +13 -5
  87. package/dist/types/utilities/enum.js +15 -5
  88. package/dist/types/utilities/enum.js.map +1 -1
  89. package/dist/types/utilities/validation/common-validation.d.ts +12 -12
  90. package/dist/utilities/app-instance.js +1 -1
  91. package/dist/utilities/app-instance.js.map +1 -1
  92. package/dist/utilities/enum.d.ts +13 -5
  93. package/dist/utilities/enum.js +15 -5
  94. package/dist/utilities/enum.js.map +1 -1
  95. package/package.json +1 -1
  96. package/dist/libraries/mongo/models/embedded/service-timer.model.d.ts +0 -5
  97. package/dist/libraries/mongo/models/embedded/service-timer.model.js +0 -32
  98. package/dist/libraries/mongo/models/embedded/service-timer.model.js.map +0 -1
  99. package/dist/libraries/mongo/models/service-line-item.model.d.ts +0 -19
  100. package/dist/libraries/mongo/models/service-line-item.model.js +0 -89
  101. package/dist/libraries/mongo/models/service-line-item.model.js.map +0 -1
  102. package/dist/libraries/mongo/models/shared/promotion-duration.model.d.ts +0 -11
  103. package/dist/libraries/mongo/models/shared/promotion-duration.model.js +0 -46
  104. package/dist/libraries/mongo/models/shared/promotion-duration.model.js.map +0 -1
@@ -15,5 +15,6 @@ export declare enum PublishEventEnums {
15
15
  SYNC_SINGLE_SHOP_SECTIONS_CACHE_EVENT = "sync_single_shop_sections_cache_event",
16
16
  SYNC_ALL_CUSTOMIZED_SHOP_SECTIONS_CACHE_EVENT = "sync_all_customized_shop_sections_cache_event",
17
17
  SYNC_ALL_USERS_PUNCH_MARKETING_HISTORY_CACHE_EVENT = "sync_all_users_punch_marketing_history_cache_event",
18
- SYNC_USER_SHOP_PUNCH_MARKETING_HISTORY_CACHE_EVENT = "sync_user_shop_punch_marketing_history_cache_event"
18
+ SYNC_USER_SHOP_PUNCH_MARKETING_HISTORY_CACHE_EVENT = "sync_user_shop_punch_marketing_history_cache_event",
19
+ RIDER_SCORE_EVENT = "rider_score_event"
19
20
  }
@@ -20,5 +20,6 @@ var PublishEventEnums;
20
20
  PublishEventEnums["SYNC_ALL_CUSTOMIZED_SHOP_SECTIONS_CACHE_EVENT"] = "sync_all_customized_shop_sections_cache_event";
21
21
  PublishEventEnums["SYNC_ALL_USERS_PUNCH_MARKETING_HISTORY_CACHE_EVENT"] = "sync_all_users_punch_marketing_history_cache_event";
22
22
  PublishEventEnums["SYNC_USER_SHOP_PUNCH_MARKETING_HISTORY_CACHE_EVENT"] = "sync_user_shop_punch_marketing_history_cache_event";
23
+ PublishEventEnums["RIDER_SCORE_EVENT"] = "rider_score_event";
23
24
  })(PublishEventEnums || (exports.PublishEventEnums = PublishEventEnums = {}));
24
25
  //# sourceMappingURL=EventEnums.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"EventEnums.js","sourceRoot":"/","sources":["libraries/event/EventEnums.ts"],"names":[],"mappings":";;;AAAA,IAAY,iBAkBX;AAlBD,WAAY,iBAAiB;IAC5B,4EAAuD,CAAA;IACvD,sEAAiD,CAAA;IACjD,4EAAuD,CAAA;IACvD,sEAAiD,CAAA;IACjD,wGAAmF,CAAA;IACnF,sHAAiG,CAAA;IACjG,oGAA+E,CAAA;IAC/E,sFAAiE,CAAA;IACjE,8FAAyE,CAAA;IACzE,sHAAiG,CAAA;IACjG,4GAAuF,CAAA;IACvF,kFAA6D,CAAA;IAC7D,0GAAqF,CAAA;IACrF,oGAA+E,CAAA;IAC/E,oHAA+F,CAAA;IAC/F,8HAAyG,CAAA;IACzG,8HAAyG,CAAA;AAC1G,CAAC,EAlBW,iBAAiB,iCAAjB,iBAAiB,QAkB5B","sourcesContent":["export enum PublishEventEnums {\n\tADMIN_ACTIVITY_LOGS_EVENT = 'admin_activity_logs_event',\n\tMESSAGE_RECEIVED_EVENT = 'message_received_event',\n\tTICKET_NOTIFICATION_EVENT = 'ticket_notification_event',\n\tCART_ITEM_UPSERT_EVENT = 'cart_item_upsert_event',\n\tSHOP_ACTIVE_TIMINGS_BATCH_PROCESS_EVENT = 'shop_active_timings_batch_process_event',\n\tMONGO_STREAM_CHANGES_BATCH_PROCESS_SHOPS_EVENT = 'mongo_stream_changes_batch_process_shops_event',\n\tBULK_UPDATE_SHOPS_SEARCH_FIELDS_EVENT = 'bulk_update_shops_search_fields_event',\n\tSOCKET_PUSH_NOTIFICATION_EVENT = 'socket_push_notification_event',\n\tBULK_UPDATE_SHOP_ZONE_STATUS_EVENT = 'bulk_update_shop_zone_status_event',\n\tSYNC_ALL_PRODUCTS_PRODUCT_MARKETING_INFO_EVENT = 'sync_all_products_product_marketing_info_event',\n\tSYNC_ALL_SHOPS_AVG_PREPARATION_TIME_EVENT = 'sync_all_shops_avg_preperation_time_event',\n\tSYNC_SINGLE_SHOP_CACHE_EVENT = 'sync_single_shop_cache_event',\n\tSYNC_SINGLE_SHOP_ORDER_AGAIN_CACHE_EVENT = 'sync_single_shop_order_again_cache_event',\n\tSYNC_SINGLE_SHOP_SECTIONS_CACHE_EVENT = 'sync_single_shop_sections_cache_event',\n\tSYNC_ALL_CUSTOMIZED_SHOP_SECTIONS_CACHE_EVENT = 'sync_all_customized_shop_sections_cache_event',\n\tSYNC_ALL_USERS_PUNCH_MARKETING_HISTORY_CACHE_EVENT = 'sync_all_users_punch_marketing_history_cache_event',\n\tSYNC_USER_SHOP_PUNCH_MARKETING_HISTORY_CACHE_EVENT = 'sync_user_shop_punch_marketing_history_cache_event'\n}\n \n"]}
1
+ {"version":3,"file":"EventEnums.js","sourceRoot":"/","sources":["libraries/event/EventEnums.ts"],"names":[],"mappings":";;;AAAA,IAAY,iBAmBX;AAnBD,WAAY,iBAAiB;IAC5B,4EAAuD,CAAA;IACvD,sEAAiD,CAAA;IACjD,4EAAuD,CAAA;IACvD,sEAAiD,CAAA;IACjD,wGAAmF,CAAA;IACnF,sHAAiG,CAAA;IACjG,oGAA+E,CAAA;IAC/E,sFAAiE,CAAA;IACjE,8FAAyE,CAAA;IACzE,sHAAiG,CAAA;IACjG,4GAAuF,CAAA;IACvF,kFAA6D,CAAA;IAC7D,0GAAqF,CAAA;IACrF,oGAA+E,CAAA;IAC/E,oHAA+F,CAAA;IAC/F,8HAAyG,CAAA;IACzG,8HAAyG,CAAA;IACzG,4DAAuC,CAAA;AACxC,CAAC,EAnBW,iBAAiB,iCAAjB,iBAAiB,QAmB5B","sourcesContent":["export enum PublishEventEnums {\n\tADMIN_ACTIVITY_LOGS_EVENT = 'admin_activity_logs_event',\n\tMESSAGE_RECEIVED_EVENT = 'message_received_event',\n\tTICKET_NOTIFICATION_EVENT = 'ticket_notification_event',\n\tCART_ITEM_UPSERT_EVENT = 'cart_item_upsert_event',\n\tSHOP_ACTIVE_TIMINGS_BATCH_PROCESS_EVENT = 'shop_active_timings_batch_process_event',\n\tMONGO_STREAM_CHANGES_BATCH_PROCESS_SHOPS_EVENT = 'mongo_stream_changes_batch_process_shops_event',\n\tBULK_UPDATE_SHOPS_SEARCH_FIELDS_EVENT = 'bulk_update_shops_search_fields_event',\n\tSOCKET_PUSH_NOTIFICATION_EVENT = 'socket_push_notification_event',\n\tBULK_UPDATE_SHOP_ZONE_STATUS_EVENT = 'bulk_update_shop_zone_status_event',\n\tSYNC_ALL_PRODUCTS_PRODUCT_MARKETING_INFO_EVENT = 'sync_all_products_product_marketing_info_event',\n\tSYNC_ALL_SHOPS_AVG_PREPARATION_TIME_EVENT = 'sync_all_shops_avg_preperation_time_event',\n\tSYNC_SINGLE_SHOP_CACHE_EVENT = 'sync_single_shop_cache_event',\n\tSYNC_SINGLE_SHOP_ORDER_AGAIN_CACHE_EVENT = 'sync_single_shop_order_again_cache_event',\n\tSYNC_SINGLE_SHOP_SECTIONS_CACHE_EVENT = 'sync_single_shop_sections_cache_event',\n\tSYNC_ALL_CUSTOMIZED_SHOP_SECTIONS_CACHE_EVENT = 'sync_all_customized_shop_sections_cache_event',\n\tSYNC_ALL_USERS_PUNCH_MARKETING_HISTORY_CACHE_EVENT = 'sync_all_users_punch_marketing_history_cache_event',\n\tSYNC_USER_SHOP_PUNCH_MARKETING_HISTORY_CACHE_EVENT = 'sync_user_shop_punch_marketing_history_cache_event',\n\tRIDER_SCORE_EVENT = 'rider_score_event',\n}\n \n"]}
@@ -0,0 +1 @@
1
+ export * from './rider';
@@ -0,0 +1,18 @@
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("./rider"), exports);
18
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"/","sources":["libraries/event/events/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,0CAAwB","sourcesContent":["export * from './rider';\n"]}
@@ -0,0 +1,4 @@
1
+ import { Types } from 'mongoose';
2
+ export declare class OrderCreatedEvent {
3
+ constructor(orderId: Types.ObjectId);
4
+ }
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.OrderCreatedEvent = void 0;
4
+ class OrderCreatedEvent {
5
+ constructor(orderId) { }
6
+ }
7
+ exports.OrderCreatedEvent = OrderCreatedEvent;
8
+ //# sourceMappingURL=order-created.event.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"order-created.event.js","sourceRoot":"/","sources":["libraries/event/events/order/order-created.event.ts"],"names":[],"mappings":";;;AAEA,MAAa,iBAAiB;IAC7B,YAAY,OAAuB,IAAG,CAAC;CACvC;AAFD,8CAEC","sourcesContent":["import { Types } from 'mongoose';\n\nexport class OrderCreatedEvent {\n\tconstructor(orderId: Types.ObjectId) {}\n}\n"]}
@@ -6,12 +6,12 @@ declare const SyncUserShopPunchMarketingHistoryInCacheValidationSchema: import("
6
6
  shopId: import("zod").ZodUnion<[import("zod").ZodEffects<import("zod").ZodEffects<import("zod").ZodString, string, string>, import("mongoose").Types.ObjectId, string>, import("zod").ZodType<import("mongoose").Types.ObjectId, import("zod").ZodTypeDef, import("mongoose").Types.ObjectId>]>;
7
7
  operation: import("zod").ZodNativeEnum<typeof ChangeStreamOperationTypes>;
8
8
  }, "strict", import("zod").ZodTypeAny, {
9
- userId: import("mongoose").Types.ObjectId;
10
9
  shopId: import("mongoose").Types.ObjectId;
10
+ userId: import("mongoose").Types.ObjectId;
11
11
  operation: ChangeStreamOperationTypes;
12
12
  }, {
13
- userId: string | import("mongoose").Types.ObjectId;
14
13
  shopId: string | import("mongoose").Types.ObjectId;
14
+ userId: string | import("mongoose").Types.ObjectId;
15
15
  operation: ChangeStreamOperationTypes;
16
16
  }>;
17
17
  export type SyncUserShopPunchMarketingHistoryInCacheValidationDTO = DTO<typeof SyncUserShopPunchMarketingHistoryInCacheValidationSchema>;
@@ -0,0 +1 @@
1
+ export * from "./scoring";
@@ -0,0 +1,18 @@
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("./scoring"), exports);
18
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"/","sources":["libraries/event/events/rider/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,4CAAyB","sourcesContent":["export * from \"./scoring\""]}
@@ -0,0 +1,5 @@
1
+ export { RiderScoreEvent, RiderScoreEventPayload } from './rider-score-event';
2
+ export { RiderAcceptedOrderEvent, RiderAcceptedOrderPayload } from './rider-accepted-order.event';
3
+ export { RiderRejectedOrderEvent, RiderRejectedOrderPayload } from './rider-rejected-order.event';
4
+ export { RiderArrivedAtStoreEvent, RiderArrivedAtStorePayload } from './rider-arrived-at-store.event';
5
+ export { RiderDeliveredOrderEvent, RiderDeliveredOrderPayload } from './rider-delivered-order.event';
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.RiderDeliveredOrderEvent = exports.RiderArrivedAtStoreEvent = exports.RiderRejectedOrderEvent = exports.RiderAcceptedOrderEvent = exports.RiderScoreEvent = void 0;
4
+ var rider_score_event_1 = require("./rider-score-event");
5
+ Object.defineProperty(exports, "RiderScoreEvent", { enumerable: true, get: function () { return rider_score_event_1.RiderScoreEvent; } });
6
+ var rider_accepted_order_event_1 = require("./rider-accepted-order.event");
7
+ Object.defineProperty(exports, "RiderAcceptedOrderEvent", { enumerable: true, get: function () { return rider_accepted_order_event_1.RiderAcceptedOrderEvent; } });
8
+ var rider_rejected_order_event_1 = require("./rider-rejected-order.event");
9
+ Object.defineProperty(exports, "RiderRejectedOrderEvent", { enumerable: true, get: function () { return rider_rejected_order_event_1.RiderRejectedOrderEvent; } });
10
+ var rider_arrived_at_store_event_1 = require("./rider-arrived-at-store.event");
11
+ Object.defineProperty(exports, "RiderArrivedAtStoreEvent", { enumerable: true, get: function () { return rider_arrived_at_store_event_1.RiderArrivedAtStoreEvent; } });
12
+ var rider_delivered_order_event_1 = require("./rider-delivered-order.event");
13
+ Object.defineProperty(exports, "RiderDeliveredOrderEvent", { enumerable: true, get: function () { return rider_delivered_order_event_1.RiderDeliveredOrderEvent; } });
14
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"/","sources":["libraries/event/events/rider/scoring/index.ts"],"names":[],"mappings":";;;AAAA,yDAA8E;AAArE,oHAAA,eAAe,OAAA;AACxB,2EAAkG;AAAzF,qIAAA,uBAAuB,OAAA;AAChC,2EAAkG;AAAzF,qIAAA,uBAAuB,OAAA;AAChC,+EAAsG;AAA7F,wIAAA,wBAAwB,OAAA;AACjC,6EAAqG;AAA5F,uIAAA,wBAAwB,OAAA","sourcesContent":["export { RiderScoreEvent, RiderScoreEventPayload } from './rider-score-event';\nexport { RiderAcceptedOrderEvent, RiderAcceptedOrderPayload } from './rider-accepted-order.event';\nexport { RiderRejectedOrderEvent, RiderRejectedOrderPayload } from './rider-rejected-order.event';\nexport { RiderArrivedAtStoreEvent, RiderArrivedAtStorePayload } from './rider-arrived-at-store.event';\nexport { RiderDeliveredOrderEvent, RiderDeliveredOrderPayload } from './rider-delivered-order.event';\n"]}
@@ -0,0 +1,11 @@
1
+ import { Types } from 'mongoose';
2
+ import { RiderScoreEventTag } from '../../../../../utilities/enum';
3
+ import { RiderScoreEvent, RiderScoreEventPayload } from './rider-score-event';
4
+ export interface RiderAcceptedOrderPayload extends RiderScoreEventPayload {
5
+ tag: RiderScoreEventTag.ORDER_ACCEPTED;
6
+ acceptedAt: Date;
7
+ }
8
+ export declare class RiderAcceptedOrderEvent extends RiderScoreEvent<RiderAcceptedOrderPayload> {
9
+ constructor(riderId: Types.ObjectId, orderId: Types.ObjectId, acceptedAt: Date);
10
+ get acceptedAt(): Date;
11
+ }
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.RiderAcceptedOrderEvent = void 0;
4
+ const enum_1 = require("../../../../../utilities/enum");
5
+ const rider_score_event_1 = require("./rider-score-event");
6
+ class RiderAcceptedOrderEvent extends rider_score_event_1.RiderScoreEvent {
7
+ constructor(riderId, orderId, acceptedAt) {
8
+ super({
9
+ tag: enum_1.RiderScoreEventTag.ORDER_ACCEPTED,
10
+ riderId,
11
+ orderId,
12
+ timestamp: acceptedAt,
13
+ acceptedAt
14
+ });
15
+ }
16
+ get acceptedAt() {
17
+ return this.payload.acceptedAt;
18
+ }
19
+ }
20
+ exports.RiderAcceptedOrderEvent = RiderAcceptedOrderEvent;
21
+ //# sourceMappingURL=rider-accepted-order.event.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rider-accepted-order.event.js","sourceRoot":"/","sources":["libraries/event/events/rider/scoring/rider-accepted-order.event.ts"],"names":[],"mappings":";;;AACA,wDAAmE;AACnE,2DAA8E;AAO9E,MAAa,uBAAwB,SAAQ,mCAA0C;IACtF,YACC,OAAuB,EACvB,OAAuB,EACvB,UAAgB;QAEhB,KAAK,CAAC;YACL,GAAG,EAAE,yBAAkB,CAAC,cAAc;YACtC,OAAO;YACP,OAAO;YACP,SAAS,EAAE,UAAU;YACrB,UAAU;SACV,CAAC,CAAC;IACJ,CAAC;IAED,IAAI,UAAU;QACb,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC;IAChC,CAAC;CACD;AAlBD,0DAkBC","sourcesContent":["import { Types } from 'mongoose';\nimport { RiderScoreEventTag } from '../../../../../utilities/enum';\nimport { RiderScoreEvent, RiderScoreEventPayload } from './rider-score-event';\n\nexport interface RiderAcceptedOrderPayload extends RiderScoreEventPayload {\n\ttag: RiderScoreEventTag.ORDER_ACCEPTED;\n\tacceptedAt: Date;\n}\n\nexport class RiderAcceptedOrderEvent extends RiderScoreEvent<RiderAcceptedOrderPayload> {\n\tconstructor(\n\t\triderId: Types.ObjectId,\n\t\torderId: Types.ObjectId,\n\t\tacceptedAt: Date\n\t) {\n\t\tsuper({\n\t\t\ttag: RiderScoreEventTag.ORDER_ACCEPTED,\n\t\t\triderId,\n\t\t\torderId,\n\t\t\ttimestamp: acceptedAt,\n\t\t\tacceptedAt\n\t\t});\n\t}\n\n\tget acceptedAt(): Date {\n\t\treturn this.payload.acceptedAt;\n\t}\n}\n"]}
@@ -0,0 +1,13 @@
1
+ import { Types } from 'mongoose';
2
+ import { RiderScoreEventTag } from '../../../../../utilities/enum';
3
+ import { RiderScoreEvent, RiderScoreEventPayload } from './rider-score-event';
4
+ export interface RiderArrivedAtStorePayload extends RiderScoreEventPayload {
5
+ tag: RiderScoreEventTag.ARRIVED_AT_STORE;
6
+ actualArrivalTime: Date;
7
+ expectedArrivalTime: Date;
8
+ }
9
+ export declare class RiderArrivedAtStoreEvent extends RiderScoreEvent<RiderArrivedAtStorePayload> {
10
+ constructor(riderId: Types.ObjectId, orderId: Types.ObjectId, actualArrivalTime: Date, expectedArrivalTime: Date);
11
+ get actualArrivalTime(): Date;
12
+ get expectedArrivalTime(): Date;
13
+ }
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.RiderArrivedAtStoreEvent = void 0;
4
+ const enum_1 = require("../../../../../utilities/enum");
5
+ const rider_score_event_1 = require("./rider-score-event");
6
+ class RiderArrivedAtStoreEvent extends rider_score_event_1.RiderScoreEvent {
7
+ constructor(riderId, orderId, actualArrivalTime, expectedArrivalTime) {
8
+ super({
9
+ tag: enum_1.RiderScoreEventTag.ARRIVED_AT_STORE,
10
+ riderId,
11
+ orderId,
12
+ timestamp: actualArrivalTime,
13
+ actualArrivalTime,
14
+ expectedArrivalTime,
15
+ });
16
+ }
17
+ get actualArrivalTime() {
18
+ return this.payload.actualArrivalTime;
19
+ }
20
+ get expectedArrivalTime() {
21
+ return this.payload.expectedArrivalTime;
22
+ }
23
+ }
24
+ exports.RiderArrivedAtStoreEvent = RiderArrivedAtStoreEvent;
25
+ //# sourceMappingURL=rider-arrived-at-store.event.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rider-arrived-at-store.event.js","sourceRoot":"/","sources":["libraries/event/events/rider/scoring/rider-arrived-at-store.event.ts"],"names":[],"mappings":";;;AACA,wDAAmE;AACnE,2DAA8E;AAQ9E,MAAa,wBAAyB,SAAQ,mCAA2C;IACxF,YACC,OAAuB,EACvB,OAAuB,EACvB,iBAAuB,EACvB,mBAAyB;QAEzB,KAAK,CAAC;YACL,GAAG,EAAE,yBAAkB,CAAC,gBAAgB;YACxC,OAAO;YACP,OAAO;YACP,SAAS,EAAE,iBAAiB;YAC5B,iBAAiB;YACjB,mBAAmB;SACnB,CAAC,CAAC;IACJ,CAAC;IAED,IAAI,iBAAiB;QACpB,OAAO,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC;IACvC,CAAC;IAED,IAAI,mBAAmB;QACtB,OAAO,IAAI,CAAC,OAAO,CAAC,mBAAmB,CAAC;IACzC,CAAC;CACD;AAxBD,4DAwBC","sourcesContent":["import { Types } from 'mongoose';\nimport { RiderScoreEventTag } from '../../../../../utilities/enum';\nimport { RiderScoreEvent, RiderScoreEventPayload } from './rider-score-event';\n\nexport interface RiderArrivedAtStorePayload extends RiderScoreEventPayload {\n\ttag: RiderScoreEventTag.ARRIVED_AT_STORE;\n\tactualArrivalTime: Date;\n\texpectedArrivalTime: Date;\n}\n\nexport class RiderArrivedAtStoreEvent extends RiderScoreEvent<RiderArrivedAtStorePayload> {\n\tconstructor(\n\t\triderId: Types.ObjectId,\n\t\torderId: Types.ObjectId,\n\t\tactualArrivalTime: Date,\n\t\texpectedArrivalTime: Date\n\t) {\n\t\tsuper({\n\t\t\ttag: RiderScoreEventTag.ARRIVED_AT_STORE,\n\t\t\triderId,\n\t\t\torderId,\n\t\t\ttimestamp: actualArrivalTime,\n\t\t\tactualArrivalTime,\n\t\t\texpectedArrivalTime,\n\t\t});\n\t}\n\n\tget actualArrivalTime(): Date {\n\t\treturn this.payload.actualArrivalTime;\n\t}\n\n\tget expectedArrivalTime(): Date {\n\t\treturn this.payload.expectedArrivalTime;\n\t}\n}\n"]}
@@ -0,0 +1,13 @@
1
+ import { Types } from 'mongoose';
2
+ import { RiderScoreEventTag } from '../../../../../utilities/enum';
3
+ import { RiderScoreEvent, RiderScoreEventPayload } from './rider-score-event';
4
+ export interface RiderDeliveredOrderPayload extends RiderScoreEventPayload {
5
+ tag: RiderScoreEventTag.ORDER_DELIVERED;
6
+ actualDeliveryTime: Date;
7
+ expectedDeliveryTime: Date;
8
+ }
9
+ export declare class RiderDeliveredOrderEvent extends RiderScoreEvent<RiderDeliveredOrderPayload> {
10
+ constructor(riderId: Types.ObjectId, orderId: Types.ObjectId, actualDeliveryTime: Date, expectedDeliveryTime: Date);
11
+ get actualDeliveryTime(): Date;
12
+ get expectedDeliveryTime(): Date;
13
+ }
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.RiderDeliveredOrderEvent = void 0;
4
+ const enum_1 = require("../../../../../utilities/enum");
5
+ const rider_score_event_1 = require("./rider-score-event");
6
+ class RiderDeliveredOrderEvent extends rider_score_event_1.RiderScoreEvent {
7
+ constructor(riderId, orderId, actualDeliveryTime, expectedDeliveryTime) {
8
+ super({
9
+ tag: enum_1.RiderScoreEventTag.ORDER_DELIVERED,
10
+ riderId,
11
+ orderId,
12
+ timestamp: actualDeliveryTime,
13
+ actualDeliveryTime,
14
+ expectedDeliveryTime
15
+ });
16
+ }
17
+ get actualDeliveryTime() {
18
+ return this.payload.actualDeliveryTime;
19
+ }
20
+ get expectedDeliveryTime() {
21
+ return this.payload.expectedDeliveryTime;
22
+ }
23
+ }
24
+ exports.RiderDeliveredOrderEvent = RiderDeliveredOrderEvent;
25
+ //# sourceMappingURL=rider-delivered-order.event.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rider-delivered-order.event.js","sourceRoot":"/","sources":["libraries/event/events/rider/scoring/rider-delivered-order.event.ts"],"names":[],"mappings":";;;AACA,wDAAmE;AACnE,2DAA8E;AAQ9E,MAAa,wBAAyB,SAAQ,mCAA2C;IACxF,YACC,OAAuB,EACvB,OAAuB,EACvB,kBAAwB,EACxB,oBAA0B;QAE1B,KAAK,CAAC;YACL,GAAG,EAAE,yBAAkB,CAAC,eAAe;YACvC,OAAO;YACP,OAAO;YACP,SAAS,EAAE,kBAAkB;YAC7B,kBAAkB;YAClB,oBAAoB;SACpB,CAAC,CAAC;IACJ,CAAC;IAED,IAAI,kBAAkB;QACrB,OAAO,IAAI,CAAC,OAAO,CAAC,kBAAkB,CAAC;IACxC,CAAC;IAED,IAAI,oBAAoB;QACvB,OAAO,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC;IAC1C,CAAC;CACD;AAxBD,4DAwBC","sourcesContent":["import { Types } from 'mongoose';\nimport { RiderScoreEventTag } from '../../../../../utilities/enum';\nimport { RiderScoreEvent, RiderScoreEventPayload } from './rider-score-event';\n\nexport interface RiderDeliveredOrderPayload extends RiderScoreEventPayload {\n\ttag: RiderScoreEventTag.ORDER_DELIVERED;\n\tactualDeliveryTime: Date;\n\texpectedDeliveryTime: Date;\n}\n\nexport class RiderDeliveredOrderEvent extends RiderScoreEvent<RiderDeliveredOrderPayload> {\n\tconstructor(\n\t\triderId: Types.ObjectId,\n\t\torderId: Types.ObjectId,\n\t\tactualDeliveryTime: Date,\n\t\texpectedDeliveryTime: Date\n\t) {\n\t\tsuper({\n\t\t\ttag: RiderScoreEventTag.ORDER_DELIVERED,\n\t\t\triderId,\n\t\t\torderId,\n\t\t\ttimestamp: actualDeliveryTime,\n\t\t\tactualDeliveryTime,\n\t\t\texpectedDeliveryTime\n\t\t});\n\t}\n\n\tget actualDeliveryTime(): Date {\n\t\treturn this.payload.actualDeliveryTime;\n\t}\n\n\tget expectedDeliveryTime(): Date {\n\t\treturn this.payload.expectedDeliveryTime;\n\t}\n}\n"]}
@@ -0,0 +1,11 @@
1
+ import { Types } from 'mongoose';
2
+ import { RiderScoreEventTag } from '../../../../../utilities/enum';
3
+ import { RiderScoreEvent, RiderScoreEventPayload } from './rider-score-event';
4
+ export interface RiderRejectedOrderPayload extends RiderScoreEventPayload {
5
+ tag: RiderScoreEventTag.ORDER_REJECTED;
6
+ rejectedAt: Date;
7
+ }
8
+ export declare class RiderRejectedOrderEvent extends RiderScoreEvent<RiderRejectedOrderPayload> {
9
+ constructor(riderId: Types.ObjectId, orderId: Types.ObjectId, rejectedAt: Date);
10
+ get rejectedAt(): Date;
11
+ }
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.RiderRejectedOrderEvent = void 0;
4
+ const enum_1 = require("../../../../../utilities/enum");
5
+ const rider_score_event_1 = require("./rider-score-event");
6
+ class RiderRejectedOrderEvent extends rider_score_event_1.RiderScoreEvent {
7
+ constructor(riderId, orderId, rejectedAt) {
8
+ super({
9
+ tag: enum_1.RiderScoreEventTag.ORDER_REJECTED,
10
+ riderId,
11
+ orderId,
12
+ timestamp: rejectedAt,
13
+ rejectedAt
14
+ });
15
+ }
16
+ get rejectedAt() {
17
+ return this.payload.rejectedAt;
18
+ }
19
+ }
20
+ exports.RiderRejectedOrderEvent = RiderRejectedOrderEvent;
21
+ //# sourceMappingURL=rider-rejected-order.event.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rider-rejected-order.event.js","sourceRoot":"/","sources":["libraries/event/events/rider/scoring/rider-rejected-order.event.ts"],"names":[],"mappings":";;;AACA,wDAAmE;AACnE,2DAA8E;AAO9E,MAAa,uBAAwB,SAAQ,mCAA0C;IACtF,YACC,OAAuB,EACvB,OAAuB,EACvB,UAAgB;QAEhB,KAAK,CAAC;YACL,GAAG,EAAE,yBAAkB,CAAC,cAAc;YACtC,OAAO;YACP,OAAO;YACP,SAAS,EAAE,UAAU;YACrB,UAAU;SACV,CAAC,CAAC;IACJ,CAAC;IAED,IAAI,UAAU;QACb,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC;IAChC,CAAC;CACD;AAlBD,0DAkBC","sourcesContent":["import { Types } from 'mongoose';\nimport { RiderScoreEventTag } from '../../../../../utilities/enum';\nimport { RiderScoreEvent, RiderScoreEventPayload } from './rider-score-event';\n\nexport interface RiderRejectedOrderPayload extends RiderScoreEventPayload {\n\ttag: RiderScoreEventTag.ORDER_REJECTED;\n\trejectedAt: Date;\n}\n\nexport class RiderRejectedOrderEvent extends RiderScoreEvent<RiderRejectedOrderPayload> {\n\tconstructor(\n\t\triderId: Types.ObjectId,\n\t\torderId: Types.ObjectId,\n\t\trejectedAt: Date\n\t) {\n\t\tsuper({\n\t\t\ttag: RiderScoreEventTag.ORDER_REJECTED,\n\t\t\triderId,\n\t\t\torderId,\n\t\t\ttimestamp: rejectedAt,\n\t\t\trejectedAt\n\t\t});\n\t}\n\n\tget rejectedAt(): Date {\n\t\treturn this.payload.rejectedAt;\n\t}\n}\n"]}
@@ -0,0 +1,16 @@
1
+ import { Types } from 'mongoose';
2
+ import { RiderScoreEventTag } from '../../../../../utilities/enum';
3
+ import { BaseEvent } from '../../../BaseEvent';
4
+ export interface RiderScoreEventPayload {
5
+ tag: RiderScoreEventTag;
6
+ riderId: Types.ObjectId;
7
+ orderId: Types.ObjectId;
8
+ timestamp: Date;
9
+ }
10
+ export declare abstract class RiderScoreEvent<TPayload extends RiderScoreEventPayload = RiderScoreEventPayload> extends BaseEvent<TPayload> {
11
+ protected constructor(payload: TPayload);
12
+ get tag(): RiderScoreEventTag;
13
+ get riderId(): Types.ObjectId;
14
+ get orderId(): Types.ObjectId;
15
+ get timestamp(): Date;
16
+ }
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.RiderScoreEvent = void 0;
4
+ const BaseEvent_1 = require("../../../BaseEvent");
5
+ class RiderScoreEvent extends BaseEvent_1.BaseEvent {
6
+ constructor(payload) {
7
+ super(payload.tag, payload);
8
+ }
9
+ get tag() {
10
+ return this.payload.tag;
11
+ }
12
+ get riderId() {
13
+ return this.payload.riderId;
14
+ }
15
+ get orderId() {
16
+ return this.payload.orderId;
17
+ }
18
+ get timestamp() {
19
+ return this.payload.timestamp;
20
+ }
21
+ }
22
+ exports.RiderScoreEvent = RiderScoreEvent;
23
+ //# sourceMappingURL=rider-score-event.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rider-score-event.js","sourceRoot":"/","sources":["libraries/event/events/rider/scoring/rider-score-event.ts"],"names":[],"mappings":";;;AAEA,kDAA+C;AAS/C,MAAsB,eAEpB,SAAQ,qBAAmB;IAC5B,YAAsB,OAAiB;QACtC,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;IAC7B,CAAC;IAED,IAAI,GAAG;QACN,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC;IACzB,CAAC;IAED,IAAI,OAAO;QACV,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC;IAC7B,CAAC;IAED,IAAI,OAAO;QACV,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC;IAC7B,CAAC;IAED,IAAI,SAAS;QACZ,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC;IAC/B,CAAC;CACD;AAtBD,0CAsBC","sourcesContent":["import { Types } from 'mongoose';\nimport { RiderScoreEventTag } from '../../../../../utilities/enum';\nimport { BaseEvent } from '../../../BaseEvent';\n\nexport interface RiderScoreEventPayload {\n\ttag: RiderScoreEventTag;\n\triderId: Types.ObjectId;\n\torderId: Types.ObjectId;\n\ttimestamp: Date;\n}\n\nexport abstract class RiderScoreEvent<\n\tTPayload extends RiderScoreEventPayload = RiderScoreEventPayload,\n> extends BaseEvent<TPayload> {\n\tprotected constructor(payload: TPayload) {\n\t\tsuper(payload.tag, payload);\n\t}\n\n\tget tag(): RiderScoreEventTag {\n\t\treturn this.payload.tag;\n\t}\n\n\tget riderId(): Types.ObjectId {\n\t\treturn this.payload.riderId;\n\t}\n\n\tget orderId(): Types.ObjectId {\n\t\treturn this.payload.orderId;\n\t}\n\n\tget timestamp(): Date {\n\t\treturn this.payload.timestamp;\n\t}\n}\n"]}
@@ -4,11 +4,11 @@ declare const SyncSingleShopValidationSchema: import("zod").ZodObject<{
4
4
  userId: import("zod").ZodUnion<[import("zod").ZodEffects<import("zod").ZodEffects<import("zod").ZodString, string, string>, import("mongoose").Types.ObjectId, string>, import("zod").ZodType<import("mongoose").Types.ObjectId, import("zod").ZodTypeDef, import("mongoose").Types.ObjectId>]>;
5
5
  shopId: import("zod").ZodUnion<[import("zod").ZodEffects<import("zod").ZodEffects<import("zod").ZodString, string, string>, import("mongoose").Types.ObjectId, string>, import("zod").ZodType<import("mongoose").Types.ObjectId, import("zod").ZodTypeDef, import("mongoose").Types.ObjectId>]>;
6
6
  }, "strict", import("zod").ZodTypeAny, {
7
- userId: import("mongoose").Types.ObjectId;
8
7
  shopId: import("mongoose").Types.ObjectId;
8
+ userId: import("mongoose").Types.ObjectId;
9
9
  }, {
10
- userId: string | import("mongoose").Types.ObjectId;
11
10
  shopId: string | import("mongoose").Types.ObjectId;
11
+ userId: string | import("mongoose").Types.ObjectId;
12
12
  }>;
13
13
  export type SyncSingleShopOrderAgainCacheDTO = DTO<typeof SyncSingleShopValidationSchema>;
14
14
  export declare class SyncSingleShopOrderAgainInCacheEvent extends BaseEvent<Record<string, unknown>> {
@@ -17,16 +17,16 @@ const typedi_1 = require("typedi");
17
17
  const enum_1 = require("../../utilities/enum");
18
18
  const NotificationVersionRules = {
19
19
  [enum_1.AuthEntityType.DELIVERY_BOY]: {
20
- [enum_1.AppPlatform.IOS]: '1.0.4',
21
- [enum_1.AppPlatform.ANDROID]: '1.2.1',
20
+ [enum_1.AppPlatform.IOS]: '2.0.3',
21
+ [enum_1.AppPlatform.ANDROID]: '2.0.4',
22
22
  },
23
23
  [enum_1.AuthEntityType.USER]: {
24
- [enum_1.AppPlatform.IOS]: '1.0.2',
25
- [enum_1.AppPlatform.ANDROID]: '1.1.3',
24
+ [enum_1.AppPlatform.IOS]: '2.0.3',
25
+ [enum_1.AppPlatform.ANDROID]: '2.0.3',
26
26
  },
27
27
  [enum_1.AuthEntityType.SELLER]: {
28
- [enum_1.AppPlatform.IOS]: '1.1.0',
29
- [enum_1.AppPlatform.ANDROID]: '1.0.9',
28
+ [enum_1.AppPlatform.IOS]: '2.0.3',
29
+ [enum_1.AppPlatform.ANDROID]: '2.0.3',
30
30
  },
31
31
  };
32
32
  exports.FCMServiceForUser = 'fcm.service.user';
@@ -68,7 +68,7 @@ let FCMService = class FCMService {
68
68
  const minVersion = NotificationVersionRules?.[entityType]?.[platform];
69
69
  if (!minVersion)
70
70
  return false;
71
- return this.compareVersions(version, minVersion) >= 0;
71
+ return this.compareVersions(version, minVersion) > 0;
72
72
  }
73
73
  buildMessage(payload, batchTokens) {
74
74
  const isInvisible = payload.invisible === true;
@@ -1 +1 @@
1
- {"version":3,"file":"fcmService.js","sourceRoot":"/","sources":["libraries/firebase/fcmService.ts"],"names":[],"mappings":"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","sourcesContent":["import { messaging } from 'firebase-admin';\nimport { getLibraries } from '../..';\nimport { Service } from 'typedi';\nimport { App } from 'firebase-admin/app';\nimport { AppPlatform, AuthEntityType } from '../../utilities/enum';\n\nexport interface FCMNotificationPayload {\n\ttitle?: string;\n\tbody?: string;\n\tdata?: Record<string, string>;\n\tsound?: string;\n\tinvisible?: boolean;\n}\n\nexport interface NotificationTokenTarget {\n\ttoken: string;\n\tentityType: AuthEntityType;\n\tentityId: string;\n\tplatform?: AppPlatform;\n\tappVersion?: string;\n}\n\ntype NotifiableEntityType = AuthEntityType.USER | AuthEntityType.SELLER | AuthEntityType.DELIVERY_BOY;\n\nconst NotificationVersionRules: Record<NotifiableEntityType, Partial<Record<AppPlatform, string>>> = {\n\t[AuthEntityType.DELIVERY_BOY]: {\n\t\t[AppPlatform.IOS]: '1.0.4',\n\t\t[AppPlatform.ANDROID]: '1.2.1',\n\t},\n\n\t[AuthEntityType.USER]: {\n\t\t[AppPlatform.IOS]: '1.0.2',\n\t\t[AppPlatform.ANDROID]: '1.1.3',\n\t},\n\n\t[AuthEntityType.SELLER]: {\n\t\t[AppPlatform.IOS]: '1.1.0',\n\t\t[AppPlatform.ANDROID]: '1.0.9',\n\t},\n};\n\nexport const FCMServiceForUser = 'fcm.service.user';\nexport const FCMServiceForRider = 'fcm.service.rider';\nexport const FCMServiceForShop = 'fcm.service.shop';\n\n@Service()\nexport class FCMService {\n\tprivate messaging!: messaging.Messaging;\n\tprivate static readonly MAX_BATCH = 500;\n\n\tconstructor(app?: App) {\n\t\tconst firebaseApp = app ?? getLibraries().getFirebaseService().superApp;\n\t\tthis.messaging = messaging(firebaseApp);\n\t}\n\n\t/**\n\t * Split array into chunks of fixed size\n\t */\n\tprivate chunkArray<T>(arr: T[], size: number): T[][] {\n\t\tconst chunks: T[][] = [];\n\t\tfor (let i = 0; i < arr.length; i += size) {\n\t\t\tchunks.push(arr.slice(i, i + size));\n\t\t}\n\t\treturn chunks;\n\t}\n\n\tprivate compareVersions(v1: string, v2: string): number {\n\t\tconst a = v1.split('.').map(Number);\n\t\tconst b = v2.split('.').map(Number);\n\n\t\tfor (let i = 0; i < Math.max(a.length, b.length); i++) {\n\t\t\tconst diff = (a[i] || 0) - (b[i] || 0);\n\t\t\tif (diff !== 0) return diff;\n\t\t}\n\n\t\treturn 0;\n\t}\n\n\tprivate isNotifiableEntityType(type: AuthEntityType): type is NotifiableEntityType {\n\t\treturn (\n\t\t\ttype === AuthEntityType.USER || type === AuthEntityType.SELLER || type === AuthEntityType.DELIVERY_BOY\n\t\t);\n\t}\n\n\tprivate shouldUseNewStructure(\n\t\tentityType: AuthEntityType,\n\t\tplatform?: AppPlatform,\n\t\tversion?: string\n\t): boolean {\n\t\tif (!this.isNotifiableEntityType(entityType)) return false;\n\n\t\tif (!platform || !version) return false;\n\n\t\tconst minVersion = NotificationVersionRules?.[entityType]?.[platform];\n\n\t\tif (!minVersion) return false;\n\n\t\treturn this.compareVersions(version, minVersion) >= 0;\n\t}\n\n\t/**\n\t * Build multicast message safely\n\t */\n\tprivate buildMessage(payload: FCMNotificationPayload, batchTokens: string[]): messaging.MulticastMessage {\n\t\tconst isInvisible = payload.invisible === true;\n\t\tconst channelId = payload.sound ? 'order_alert' : 'default';\n\n\t\tconst message: messaging.MulticastMessage = {\n\t\t\tdata: { ...payload.data, channelId: isInvisible ? 'silent' : channelId },\n\t\t\tnotification: {\n\t\t\t\ttitle: payload.title,\n\t\t\t\tbody: payload.body,\n\t\t\t},\n\t\t\ttokens: batchTokens,\n\t\t\tandroid: {\n\t\t\t\tpriority: 'high',\n\t\t\t\tnotification: {\n\t\t\t\t\tchannelId: 'silent',\n\t\t\t\t},\n\t\t\t},\n\t\t\tapns: {\n\t\t\t\tpayload: {\n\t\t\t\t\taps: {\n\t\t\t\t\t\tsound: payload.sound || 'default',\n\t\t\t\t\t\tcontentAvailable: true,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\theaders: {\n\t\t\t\t\t'apns-push-type': 'background',\n\t\t\t\t},\n\t\t\t},\n\t\t};\n\n\t\treturn message;\n\t}\n\n\t/**\n\t * Build multicast message safely for old apps\n\t */\n\tprivate buildOldMessage(\n\t\tpayload: FCMNotificationPayload,\n\t\tbatchTokens: string[]\n\t): messaging.MulticastMessage {\n\t\tconst isInvisible = payload.invisible === true;\n\n\t\tconst message: messaging.MulticastMessage = {\n\t\t\tdata: payload.data || {},\n\t\t\tnotification: {\n\t\t\t\ttitle: payload.title,\n\t\t\t\tbody: payload.body,\n\t\t\t},\n\t\t\ttokens: batchTokens,\n\t\t\tandroid: { priority: 'high' },\n\t\t\tapns: {\n\t\t\t\tpayload: {\n\t\t\t\t\taps: {\n\t\t\t\t\t\tsound: payload.sound || 'default',\n\t\t\t\t\t\tcontentAvailable: true,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t};\n\n\t\tif (!isInvisible) {\n\t\t\tmessage.notification = {\n\t\t\t\ttitle: payload.title,\n\t\t\t\tbody: payload.body,\n\t\t\t};\n\n\t\t\tmessage.android = {\n\t\t\t\tpriority: 'high',\n\t\t\t\tnotification: {\n\t\t\t\t\tchannelId: payload.sound ? 'android_Push_Notification_Channel_1' : 'default',\n\t\t\t\t},\n\t\t\t};\n\t\t}\n\n\t\treturn message;\n\t}\n\n\t/**\n\t * Sends a push notification (visible or invisible) to multiple device tokens\n\t * @param payload - Notification title, body, and optional data\n\t * @param tokens - FCM device tokens\n\t * @returns Object containing success and invalid tokens\n\t */\n\tasync sendNotification(\n\t\tpayload: FCMNotificationPayload,\n\t\ttargets: NotificationTokenTarget[]\n\t): Promise<{ successTokens: string[]; failedTokens: string[] }> {\n\t\tif (!targets.length) {\n\t\t\treturn { successTokens: [], failedTokens: [] };\n\t\t}\n\n\t\tconst oldTokens: string[] = [];\n\t\tconst newTokens: string[] = [];\n\n\t\tfor (const t of targets) {\n\t\t\tconst useNew = this.shouldUseNewStructure(t.entityType, t.platform, t.appVersion);\n\n\t\t\tif (useNew) newTokens.push(t.token);\n\t\t\telse oldTokens.push(t.token);\n\t\t}\n\n\t\tconst sendGroup = async (\n\t\t\tgroupTokens: string[],\n\t\t\tgroupPayload: FCMNotificationPayload,\n\t\t\toldNotificationStructure: boolean = false\n\t\t) => {\n\t\t\tconst tokenChunks = this.chunkArray(groupTokens, FCMService.MAX_BATCH);\n\n\t\t\tconst success: string[] = [];\n\t\t\tconst failed: string[] = [];\n\n\t\t\tconst results = await Promise.all(\n\t\t\t\ttokenChunks.map(async chunk => {\n\t\t\t\t\tconst message = oldNotificationStructure\n\t\t\t\t\t\t? this.buildOldMessage(groupPayload, chunk)\n\t\t\t\t\t\t: this.buildMessage(groupPayload, chunk);\n\n\t\t\t\t\tconst response = await this.messaging.sendEachForMulticast(message);\n\n\t\t\t\t\tconst batchSuccess: string[] = [];\n\t\t\t\t\tconst batchFailed: string[] = [];\n\n\t\t\t\t\tresponse.responses.forEach((resp, idx) => {\n\t\t\t\t\t\tif (resp.success) {\n\t\t\t\t\t\t\tbatchSuccess.push(chunk[idx]);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tconst errorCode = resp.error?.code;\n\n\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\terrorCode === 'messaging/invalid-argument' ||\n\t\t\t\t\t\t\t\terrorCode === 'messaging/registration-token-not-registered'\n\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\tbatchFailed.push(chunk[idx]);\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tconsole.warn(`FCM Error for token ${chunk[idx]}:`, resp.error?.message);\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\n\t\t\t\t\treturn { batchSuccess, batchFailed };\n\t\t\t\t})\n\t\t\t);\n\n\t\t\tfor (const r of results) {\n\t\t\t\tsuccess.push(...r.batchSuccess);\n\t\t\t\tfailed.push(...r.batchFailed);\n\t\t\t}\n\n\t\t\treturn { success, failed };\n\t\t};\n\n\t\tlet successTokens: string[] = [];\n\t\tlet failedTokens: string[] = [];\n\n\t\t// send old payload\n\t\tif (oldTokens.length) {\n\t\t\tconst r = await sendGroup(oldTokens, payload, true);\n\n\t\t\tsuccessTokens.push(...r.success);\n\t\t\tfailedTokens.push(...r.failed);\n\t\t}\n\n\t\t// send new payload\n\t\tif (newTokens.length) {\n\t\t\tconst r = await sendGroup(newTokens, payload, false);\n\n\t\t\tsuccessTokens.push(...r.success);\n\t\t\tfailedTokens.push(...r.failed);\n\t\t}\n\n\t\treturn { successTokens, failedTokens };\n\t}\n}\n"]}
1
+ {"version":3,"file":"fcmService.js","sourceRoot":"/","sources":["libraries/firebase/fcmService.ts"],"names":[],"mappings":"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","sourcesContent":["import { messaging } from 'firebase-admin';\nimport { getLibraries } from '../..';\nimport { Service } from 'typedi';\nimport { App } from 'firebase-admin/app';\nimport { AppPlatform, AuthEntityType } from '../../utilities/enum';\n\nexport interface FCMNotificationPayload {\n\ttitle?: string;\n\tbody?: string;\n\tdata?: Record<string, string>;\n\tsound?: string;\n\tinvisible?: boolean;\n}\n\nexport interface NotificationTokenTarget {\n\ttoken: string;\n\tentityType: AuthEntityType;\n\tentityId: string;\n\tplatform?: AppPlatform;\n\tappVersion?: string;\n}\n\ntype NotifiableEntityType = AuthEntityType.USER | AuthEntityType.SELLER | AuthEntityType.DELIVERY_BOY;\n\nconst NotificationVersionRules: Record<NotifiableEntityType, Partial<Record<AppPlatform, string>>> = {\n\t[AuthEntityType.DELIVERY_BOY]: {\n\t\t[AppPlatform.IOS]: '2.0.3',\n\t\t[AppPlatform.ANDROID]: '2.0.4',\n\t},\n\n\t[AuthEntityType.USER]: {\n\t\t[AppPlatform.IOS]: '2.0.3',\n\t\t[AppPlatform.ANDROID]: '2.0.3',\n\t},\n\n\t[AuthEntityType.SELLER]: {\n\t\t[AppPlatform.IOS]: '2.0.3',\n\t\t[AppPlatform.ANDROID]: '2.0.3',\n\t},\n};\n\nexport const FCMServiceForUser = 'fcm.service.user';\nexport const FCMServiceForRider = 'fcm.service.rider';\nexport const FCMServiceForShop = 'fcm.service.shop';\n\n@Service()\nexport class FCMService {\n\tprivate messaging!: messaging.Messaging;\n\tprivate static readonly MAX_BATCH = 500;\n\n\tconstructor(app?: App) {\n\t\tconst firebaseApp = app ?? getLibraries().getFirebaseService().superApp;\n\t\tthis.messaging = messaging(firebaseApp);\n\t}\n\n\t/**\n\t * Split array into chunks of fixed size\n\t */\n\tprivate chunkArray<T>(arr: T[], size: number): T[][] {\n\t\tconst chunks: T[][] = [];\n\t\tfor (let i = 0; i < arr.length; i += size) {\n\t\t\tchunks.push(arr.slice(i, i + size));\n\t\t}\n\t\treturn chunks;\n\t}\n\n\tprivate compareVersions(v1: string, v2: string): number {\n\t\tconst a = v1.split('.').map(Number);\n\t\tconst b = v2.split('.').map(Number);\n\n\t\tfor (let i = 0; i < Math.max(a.length, b.length); i++) {\n\t\t\tconst diff = (a[i] || 0) - (b[i] || 0);\n\t\t\tif (diff !== 0) return diff;\n\t\t}\n\n\t\treturn 0;\n\t}\n\n\tprivate isNotifiableEntityType(type: AuthEntityType): type is NotifiableEntityType {\n\t\treturn (\n\t\t\ttype === AuthEntityType.USER || type === AuthEntityType.SELLER || type === AuthEntityType.DELIVERY_BOY\n\t\t);\n\t}\n\n\tprivate shouldUseNewStructure(\n\t\tentityType: AuthEntityType,\n\t\tplatform?: AppPlatform,\n\t\tversion?: string\n\t): boolean {\n\t\tif (!this.isNotifiableEntityType(entityType)) return false;\n\n\t\tif (!platform || !version) return false;\n\n\t\tconst minVersion = NotificationVersionRules?.[entityType]?.[platform];\n\n\t\tif (!minVersion) return false;\n\n\t\treturn this.compareVersions(version, minVersion) > 0;\n\t}\n\n\t/**\n\t * Build multicast message safely\n\t */\n\tprivate buildMessage(payload: FCMNotificationPayload, batchTokens: string[]): messaging.MulticastMessage {\n\t\tconst isInvisible = payload.invisible === true;\n\t\tconst channelId = payload.sound ? 'order_alert' : 'default';\n\n\t\tconst message: messaging.MulticastMessage = {\n\t\t\tdata: { ...payload.data, channelId: isInvisible ? 'silent' : channelId },\n\t\t\tnotification: {\n\t\t\t\ttitle: payload.title,\n\t\t\t\tbody: payload.body,\n\t\t\t},\n\t\t\ttokens: batchTokens,\n\t\t\tandroid: {\n\t\t\t\tpriority: 'high',\n\t\t\t\tnotification: {\n\t\t\t\t\tchannelId: 'silent',\n\t\t\t\t},\n\t\t\t},\n\t\t\tapns: {\n\t\t\t\tpayload: {\n\t\t\t\t\taps: {\n\t\t\t\t\t\tsound: payload.sound || 'default',\n\t\t\t\t\t\tcontentAvailable: true,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\theaders: {\n\t\t\t\t\t'apns-push-type': 'background',\n\t\t\t\t},\n\t\t\t},\n\t\t};\n\n\t\treturn message;\n\t}\n\n\t/**\n\t * Build multicast message safely for old apps\n\t */\n\tprivate buildOldMessage(\n\t\tpayload: FCMNotificationPayload,\n\t\tbatchTokens: string[]\n\t): messaging.MulticastMessage {\n\t\tconst isInvisible = payload.invisible === true;\n\n\t\tconst message: messaging.MulticastMessage = {\n\t\t\tdata: payload.data || {},\n\t\t\tnotification: {\n\t\t\t\ttitle: payload.title,\n\t\t\t\tbody: payload.body,\n\t\t\t},\n\t\t\ttokens: batchTokens,\n\t\t\tandroid: { priority: 'high' },\n\t\t\tapns: {\n\t\t\t\tpayload: {\n\t\t\t\t\taps: {\n\t\t\t\t\t\tsound: payload.sound || 'default',\n\t\t\t\t\t\tcontentAvailable: true,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t};\n\n\t\tif (!isInvisible) {\n\t\t\tmessage.notification = {\n\t\t\t\ttitle: payload.title,\n\t\t\t\tbody: payload.body,\n\t\t\t};\n\n\t\t\tmessage.android = {\n\t\t\t\tpriority: 'high',\n\t\t\t\tnotification: {\n\t\t\t\t\tchannelId: payload.sound ? 'android_Push_Notification_Channel_1' : 'default',\n\t\t\t\t},\n\t\t\t};\n\t\t}\n\n\t\treturn message;\n\t}\n\n\t/**\n\t * Sends a push notification (visible or invisible) to multiple device tokens\n\t * @param payload - Notification title, body, and optional data\n\t * @param tokens - FCM device tokens\n\t * @returns Object containing success and invalid tokens\n\t */\n\tasync sendNotification(\n\t\tpayload: FCMNotificationPayload,\n\t\ttargets: NotificationTokenTarget[]\n\t): Promise<{ successTokens: string[]; failedTokens: string[] }> {\n\t\tif (!targets.length) {\n\t\t\treturn { successTokens: [], failedTokens: [] };\n\t\t}\n\n\t\tconst oldTokens: string[] = [];\n\t\tconst newTokens: string[] = [];\n\n\t\tfor (const t of targets) {\n\t\t\tconst useNew = this.shouldUseNewStructure(t.entityType, t.platform, t.appVersion);\n\n\t\t\tif (useNew) newTokens.push(t.token);\n\t\t\telse oldTokens.push(t.token);\n\t\t}\n\n\t\tconst sendGroup = async (\n\t\t\tgroupTokens: string[],\n\t\t\tgroupPayload: FCMNotificationPayload,\n\t\t\toldNotificationStructure: boolean = false\n\t\t) => {\n\t\t\tconst tokenChunks = this.chunkArray(groupTokens, FCMService.MAX_BATCH);\n\n\t\t\tconst success: string[] = [];\n\t\t\tconst failed: string[] = [];\n\n\t\t\tconst results = await Promise.all(\n\t\t\t\ttokenChunks.map(async chunk => {\n\t\t\t\t\tconst message = oldNotificationStructure\n\t\t\t\t\t\t? this.buildOldMessage(groupPayload, chunk)\n\t\t\t\t\t\t: this.buildMessage(groupPayload, chunk);\n\n\t\t\t\t\tconst response = await this.messaging.sendEachForMulticast(message);\n\n\t\t\t\t\tconst batchSuccess: string[] = [];\n\t\t\t\t\tconst batchFailed: string[] = [];\n\n\t\t\t\t\tresponse.responses.forEach((resp, idx) => {\n\t\t\t\t\t\tif (resp.success) {\n\t\t\t\t\t\t\tbatchSuccess.push(chunk[idx]);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tconst errorCode = resp.error?.code;\n\n\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\terrorCode === 'messaging/invalid-argument' ||\n\t\t\t\t\t\t\t\terrorCode === 'messaging/registration-token-not-registered'\n\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\tbatchFailed.push(chunk[idx]);\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tconsole.warn(`FCM Error for token ${chunk[idx]}:`, resp.error?.message);\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\n\t\t\t\t\treturn { batchSuccess, batchFailed };\n\t\t\t\t})\n\t\t\t);\n\n\t\t\tfor (const r of results) {\n\t\t\t\tsuccess.push(...r.batchSuccess);\n\t\t\t\tfailed.push(...r.batchFailed);\n\t\t\t}\n\n\t\t\treturn { success, failed };\n\t\t};\n\n\t\tlet successTokens: string[] = [];\n\t\tlet failedTokens: string[] = [];\n\n\t\t// send old payload\n\t\tif (oldTokens.length) {\n\t\t\tconst r = await sendGroup(oldTokens, payload, true);\n\n\t\t\tsuccessTokens.push(...r.success);\n\t\t\tfailedTokens.push(...r.failed);\n\t\t}\n\n\t\t// send new payload\n\t\tif (newTokens.length) {\n\t\t\tconst r = await sendGroup(newTokens, payload, false);\n\n\t\t\tsuccessTokens.push(...r.success);\n\t\t\tfailedTokens.push(...r.failed);\n\t\t}\n\n\t\treturn { successTokens, failedTokens };\n\t}\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"profit.model.js","sourceRoot":"/","sources":["libraries/mongo/models/embedded/profit.model.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,oDAA4C;AAE5C,MAAa,kBAAkB;IAEvB,kBAAkB,CAAU;IAG5B,2BAA2B,CAAU;IAGrC,WAAW,CAAU;IAGrB,oBAAoB,CAAU;CACrC;AAZD,gDAYC;AAVO;IADN,IAAA,gBAAI,EAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;;8DACA;AAG5B;IADN,IAAA,gBAAI,EAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;;uEACS;AAGrC;IADN,IAAA,gBAAI,EAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;;uDACP;AAGrB;IADN,IAAA,gBAAI,EAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;;gEACE;AAGtC,MAAa,kBAAmB,SAAQ,kBAAkB;IAElD,cAAc,CAAU;IAGxB,uBAAuB,CAAU;CACxC;AAND,gDAMC;AAJO;IADN,IAAA,gBAAI,EAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;;0DACJ;AAGxB;IADN,IAAA,gBAAI,EAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;;mEACK;AAGzC,MAAa,WAAY,SAAQ,kBAAkB;IAE3C,cAAc,CAAU;IAGxB,uBAAuB,CAAU;CACxC;AAND,kCAMC;AAJO;IADN,IAAA,gBAAI,EAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;;mDACJ;AAGxB;IADN,IAAA,gBAAI,EAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;;4DACK;AAGzC,MAAa,kBAAkB;IAEvB,MAAM,CAAQ;IAEd,eAAe,CAAQ;CAC9B;AALD,gDAKC;AAHO;IADN,IAAA,gBAAI,EAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;;kDACd;AAEd;IADN,IAAA,gBAAI,EAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;;2DACL","sourcesContent":["import { prop } from '@typegoose/typegoose';\n\nexport class CourierOrderProfit {\n\t@prop({ type: Number, default: 0 })\n\tpublic profitFromDelivery?: number;\n\n\t@prop({ type: Number, default: 0 })\n\tpublic secondaryProfitFromDelivery?: number;\n\n\t@prop({ type: Number, default: 0 })\n\tpublic totalProfit?: number;\n\n\t@prop({ type: Number, default: 0 })\n\tpublic secondaryTotalProfit?: number;\n}\n\nexport class RegularOrderProfit extends CourierOrderProfit {\n\t@prop({ type: Number, default: 0 })\n\tpublic profitFromItem?: number;\n\n\t@prop({ type: Number, default: 0 })\n\tpublic secondaryProfitFromItem?: number;\n}\n\nexport class RiderProfit extends CourierOrderProfit {\n\t@prop({ type: Number, default: 0 })\n\tpublic profitFromTips?: number;\n\n\t@prop({ type: Number, default: 0 })\n\tpublic secondaryProfitFromTips?: number;\n}\n\nexport class ServiceOrderProfit {\n\t@prop({ type: Number, default: 0 })\n\tpublic profit: number\n\t@prop({ type: Number, default: 0 })\n\tpublic secondaryProfit: number\n}"]}
1
+ {"version":3,"file":"profit.model.js","sourceRoot":"/","sources":["libraries/mongo/models/embedded/profit.model.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,oDAA4C;AAE5C,MAAa,kBAAkB;IAEvB,kBAAkB,CAAU;IAG5B,2BAA2B,CAAU;IAGrC,WAAW,CAAU;IAGrB,oBAAoB,CAAU;CACrC;AAZD,gDAYC;AAVO;IADN,IAAA,gBAAI,EAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;;8DACA;AAG5B;IADN,IAAA,gBAAI,EAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;;uEACS;AAGrC;IADN,IAAA,gBAAI,EAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;;uDACP;AAGrB;IADN,IAAA,gBAAI,EAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;;gEACE;AAGtC,MAAa,kBAAmB,SAAQ,kBAAkB;IAElD,cAAc,CAAU;IAGxB,uBAAuB,CAAU;CACxC;AAND,gDAMC;AAJO;IADN,IAAA,gBAAI,EAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;;0DACJ;AAGxB;IADN,IAAA,gBAAI,EAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;;mEACK;AAGzC,MAAa,WAAY,SAAQ,kBAAkB;IAE3C,cAAc,CAAU;IAGxB,uBAAuB,CAAU;CACxC;AAND,kCAMC;AAJO;IADN,IAAA,gBAAI,EAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;;mDACJ;AAGxB;IADN,IAAA,gBAAI,EAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;;4DACK;AAGzC,MAAa,kBAAkB;IAEvB,MAAM,CAAS;IAGf,eAAe,CAAS;CAC/B;AAND,gDAMC;AAJO;IADN,IAAA,gBAAI,EAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;;kDACb;AAGf;IADN,IAAA,gBAAI,EAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;;2DACJ","sourcesContent":["import { prop } from '@typegoose/typegoose';\n\nexport class CourierOrderProfit {\n\t@prop({ type: Number, default: 0 })\n\tpublic profitFromDelivery?: number;\n\n\t@prop({ type: Number, default: 0 })\n\tpublic secondaryProfitFromDelivery?: number;\n\n\t@prop({ type: Number, default: 0 })\n\tpublic totalProfit?: number;\n\n\t@prop({ type: Number, default: 0 })\n\tpublic secondaryTotalProfit?: number;\n}\n\nexport class RegularOrderProfit extends CourierOrderProfit {\n\t@prop({ type: Number, default: 0 })\n\tpublic profitFromItem?: number;\n\n\t@prop({ type: Number, default: 0 })\n\tpublic secondaryProfitFromItem?: number;\n}\n\nexport class RiderProfit extends CourierOrderProfit {\n\t@prop({ type: Number, default: 0 })\n\tpublic profitFromTips?: number;\n\n\t@prop({ type: Number, default: 0 })\n\tpublic secondaryProfitFromTips?: number;\n}\n\nexport class ServiceOrderProfit {\n\t@prop({ type: Number, default: 0 })\n\tpublic profit: number;\n\n\t@prop({ type: Number, default: 0 })\n\tpublic secondaryProfit: number;\n}\n"]}
@@ -0,0 +1,11 @@
1
+ export declare class RiderStatistics {
2
+ receivedOrders: number;
3
+ acceptedOrders: number;
4
+ acceptanceRate: number;
5
+ avgArrivalScore: number;
6
+ avgDeliveryScore: number;
7
+ lastCalculatedAt: Date | null;
8
+ sumArrivalScores: number;
9
+ sumDeliveryScores: number;
10
+ performanceScore: number;
11
+ }
@@ -0,0 +1,62 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.RiderStatistics = void 0;
13
+ const typegoose_1 = require("@typegoose/typegoose");
14
+ class RiderStatistics {
15
+ receivedOrders;
16
+ acceptedOrders;
17
+ acceptanceRate;
18
+ avgArrivalScore;
19
+ avgDeliveryScore;
20
+ lastCalculatedAt;
21
+ sumArrivalScores;
22
+ sumDeliveryScores;
23
+ performanceScore;
24
+ }
25
+ exports.RiderStatistics = RiderStatistics;
26
+ __decorate([
27
+ (0, typegoose_1.prop)({ type: Number, default: 0 }),
28
+ __metadata("design:type", Number)
29
+ ], RiderStatistics.prototype, "receivedOrders", void 0);
30
+ __decorate([
31
+ (0, typegoose_1.prop)({ type: Number, default: 0 }),
32
+ __metadata("design:type", Number)
33
+ ], RiderStatistics.prototype, "acceptedOrders", void 0);
34
+ __decorate([
35
+ (0, typegoose_1.prop)({ type: Number, default: 0 }),
36
+ __metadata("design:type", Number)
37
+ ], RiderStatistics.prototype, "acceptanceRate", void 0);
38
+ __decorate([
39
+ (0, typegoose_1.prop)({ type: Number, default: 0 }),
40
+ __metadata("design:type", Number)
41
+ ], RiderStatistics.prototype, "avgArrivalScore", void 0);
42
+ __decorate([
43
+ (0, typegoose_1.prop)({ type: Number, default: 0 }),
44
+ __metadata("design:type", Number)
45
+ ], RiderStatistics.prototype, "avgDeliveryScore", void 0);
46
+ __decorate([
47
+ (0, typegoose_1.prop)({ type: Date, default: null }),
48
+ __metadata("design:type", Object)
49
+ ], RiderStatistics.prototype, "lastCalculatedAt", void 0);
50
+ __decorate([
51
+ (0, typegoose_1.prop)({ type: Number, default: 0 }),
52
+ __metadata("design:type", Number)
53
+ ], RiderStatistics.prototype, "sumArrivalScores", void 0);
54
+ __decorate([
55
+ (0, typegoose_1.prop)({ type: Number, default: 0 }),
56
+ __metadata("design:type", Number)
57
+ ], RiderStatistics.prototype, "sumDeliveryScores", void 0);
58
+ __decorate([
59
+ (0, typegoose_1.prop)({ type: Number, default: 0 }),
60
+ __metadata("design:type", Number)
61
+ ], RiderStatistics.prototype, "performanceScore", void 0);
62
+ //# sourceMappingURL=rider-statistics.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rider-statistics.js","sourceRoot":"/","sources":["libraries/mongo/models/embedded/rider-statistics.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,oDAA4C;AAE5C,MAAa,eAAe;IAEpB,cAAc,CAAU;IAGxB,cAAc,CAAU;IAGxB,cAAc,CAAU;IAGxB,eAAe,CAAU;IAGzB,gBAAgB,CAAU;IAG1B,gBAAgB,CAAe;IAG/B,gBAAgB,CAAU;IAG1B,iBAAiB,CAAU;IAG3B,gBAAgB,CAAU;CAEjC;AA5BD,0CA4BC;AA1BO;IADN,IAAA,gBAAI,EAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;;uDACJ;AAGxB;IADN,IAAA,gBAAI,EAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;;uDACJ;AAGxB;IADN,IAAA,gBAAI,EAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;;uDACJ;AAGxB;IADN,IAAA,gBAAI,EAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;;wDACH;AAGzB;IADN,IAAA,gBAAI,EAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;;yDACF;AAG1B;IADN,IAAA,gBAAI,EAAC,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;;yDACE;AAG/B;IADN,IAAA,gBAAI,EAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;;yDACF;AAG1B;IADN,IAAA,gBAAI,EAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;;0DACD;AAG3B;IADN,IAAA,gBAAI,EAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;;yDACF","sourcesContent":["import { prop } from '@typegoose/typegoose';\n\nexport class RiderStatistics {\n\t@prop({ type: Number, default: 0 })\n\tpublic receivedOrders!: number;\n\n\t@prop({ type: Number, default: 0 })\n\tpublic acceptedOrders!: number;\n\n\t@prop({ type: Number, default: 0 })\n\tpublic acceptanceRate!: number;\n\n\t@prop({ type: Number, default: 0 })\n\tpublic avgArrivalScore!: number;\n\n\t@prop({ type: Number, default: 0 })\n\tpublic avgDeliveryScore!: number;\n\n\t@prop({ type: Date, default: null })\n\tpublic lastCalculatedAt!: Date | null;\n\n\t@prop({ type: Number, default: 0 })\n\tpublic sumArrivalScores!: number;\n\n\t@prop({ type: Number, default: 0 })\n\tpublic sumDeliveryScores!: number;\n\n\t@prop({ type: Number, default: 0 })\n\tpublic performanceScore!: number;\n\n}\n"]}
@@ -0,0 +1,23 @@
1
+ import { Ref } from '@typegoose/typegoose';
2
+ import { ServicePackage } from '../service-package.model';
3
+ import { ServiceAddon } from '../service-addon.model';
4
+ export declare class ServicePackageSnap {
5
+ name: string;
6
+ price: number;
7
+ image?: string;
8
+ description?: string;
9
+ }
10
+ export declare class LineItemAddon {
11
+ addon: Ref<ServiceAddon>;
12
+ name: string;
13
+ image?: string;
14
+ price: number;
15
+ description?: string;
16
+ quantity?: number;
17
+ }
18
+ export declare class ServiceLineItem {
19
+ servicePackage?: Ref<ServicePackage>;
20
+ servicePackageSnap?: ServicePackageSnap;
21
+ addons?: LineItemAddon[];
22
+ quantity?: number;
23
+ }