@novha/anlia-core-lib 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (233) hide show
  1. package/cdk/bin/infrastructure.ts +18 -0
  2. package/cdk/bin/project-names.ts +7 -0
  3. package/cdk/lib/infrastructure.ts +37 -0
  4. package/cdk.json +70 -0
  5. package/dist/cdk/bin/infrastructure.d.ts +1 -0
  6. package/dist/cdk/bin/infrastructure.js +20 -0
  7. package/dist/cdk/bin/project-names.d.ts +6 -0
  8. package/dist/cdk/bin/project-names.js +4 -0
  9. package/dist/cdk/lib/infrastructure.d.ts +6 -0
  10. package/dist/cdk/lib/infrastructure.js +32 -0
  11. package/dist/src/enums/domain/DayOfWeek.d.ts +9 -0
  12. package/dist/src/enums/domain/DayOfWeek.js +13 -0
  13. package/dist/src/enums/domain/Delivery.d.ts +19 -0
  14. package/dist/src/enums/domain/Delivery.js +24 -0
  15. package/dist/src/enums/domain/Employee.d.ts +12 -0
  16. package/dist/src/enums/domain/Employee.js +16 -0
  17. package/dist/src/enums/domain/Ingredient.d.ts +31 -0
  18. package/dist/src/enums/domain/Ingredient.js +37 -0
  19. package/dist/src/enums/domain/Inventory.d.ts +29 -0
  20. package/dist/src/enums/domain/Inventory.js +36 -0
  21. package/dist/src/enums/domain/Kitchen.d.ts +49 -0
  22. package/dist/src/enums/domain/Kitchen.js +59 -0
  23. package/dist/src/enums/domain/Menu.d.ts +13 -0
  24. package/dist/src/enums/domain/Menu.js +18 -0
  25. package/dist/src/enums/domain/Payments.d.ts +21 -0
  26. package/dist/src/enums/domain/Payments.js +26 -0
  27. package/dist/src/enums/domain/Recipe.d.ts +14 -0
  28. package/dist/src/enums/domain/Recipe.js +19 -0
  29. package/dist/src/enums/domain/Reservation.d.ts +17 -0
  30. package/dist/src/enums/domain/Reservation.js +22 -0
  31. package/dist/src/enums/domain/Restaurant.d.ts +39 -0
  32. package/dist/src/enums/domain/Restaurant.js +45 -0
  33. package/dist/src/enums/domain/Table.d.ts +23 -0
  34. package/dist/src/enums/domain/Table.js +29 -0
  35. package/dist/src/enums/domain/Vendors.d.ts +29 -0
  36. package/dist/src/enums/domain/Vendors.js +35 -0
  37. package/dist/src/enums/index.d.ts +13 -0
  38. package/dist/src/enums/index.js +29 -0
  39. package/dist/src/eventBridge/EventBridgeModule.d.ts +2 -0
  40. package/dist/src/eventBridge/EventBridgeModule.js +26 -0
  41. package/dist/src/eventBridge/domain/EventBridgeOptions.d.ts +8 -0
  42. package/dist/src/eventBridge/domain/EventBridgeOptions.js +2 -0
  43. package/dist/src/eventBridge/ioc/index.d.ts +3 -0
  44. package/dist/src/eventBridge/ioc/index.js +6 -0
  45. package/dist/src/eventBridge/ioc.d.ts +3 -0
  46. package/dist/src/eventBridge/ioc.js +6 -0
  47. package/dist/src/eventBridge/service/EventBridgeService.d.ts +5 -0
  48. package/dist/src/eventBridge/service/EventBridgeService.js +2 -0
  49. package/dist/src/eventBridge/service/EventBridgeServiceImpl.d.ts +13 -0
  50. package/dist/src/eventBridge/service/EventBridgeServiceImpl.js +63 -0
  51. package/dist/src/events/domain/CustomerEvents.d.ts +54 -0
  52. package/dist/src/events/domain/CustomerEvents.js +2 -0
  53. package/dist/src/events/domain/DeliveryEvents.d.ts +61 -0
  54. package/dist/src/events/domain/DeliveryEvents.js +2 -0
  55. package/dist/src/events/domain/DomainEvent.d.ts +12 -0
  56. package/dist/src/events/domain/DomainEvent.js +2 -0
  57. package/dist/src/events/domain/DomainEventType.d.ts +119 -0
  58. package/dist/src/events/domain/DomainEventType.js +136 -0
  59. package/dist/src/events/domain/EmployeeEvents.d.ts +51 -0
  60. package/dist/src/events/domain/EmployeeEvents.js +2 -0
  61. package/dist/src/events/domain/InventoryEvents.d.ts +141 -0
  62. package/dist/src/events/domain/InventoryEvents.js +2 -0
  63. package/dist/src/events/domain/OrderEvents.d.ts +105 -0
  64. package/dist/src/events/domain/OrderEvents.js +2 -0
  65. package/dist/src/events/domain/PaymentEvents.d.ts +73 -0
  66. package/dist/src/events/domain/PaymentEvents.js +2 -0
  67. package/dist/src/events/domain/RecipeEvents.d.ts +45 -0
  68. package/dist/src/events/domain/RecipeEvents.js +2 -0
  69. package/dist/src/events/domain/ReservationEvents.d.ts +93 -0
  70. package/dist/src/events/domain/ReservationEvents.js +2 -0
  71. package/dist/src/events/domain/RestaurantEvents.d.ts +62 -0
  72. package/dist/src/events/domain/RestaurantEvents.js +2 -0
  73. package/dist/src/events/domain/TableEvents.d.ts +71 -0
  74. package/dist/src/events/domain/TableEvents.js +2 -0
  75. package/dist/src/events/domain/VendorEvents.d.ts +28 -0
  76. package/dist/src/events/domain/VendorEvents.js +2 -0
  77. package/dist/src/events/index.d.ts +13 -0
  78. package/dist/src/events/index.js +29 -0
  79. package/dist/src/index.d.ts +4 -0
  80. package/dist/src/index.js +20 -0
  81. package/dist/src/interfaces/Address.d.ts +7 -0
  82. package/dist/src/interfaces/Address.js +2 -0
  83. package/dist/src/interfaces/Customer.d.ts +21 -0
  84. package/dist/src/interfaces/Customer.js +2 -0
  85. package/dist/src/interfaces/Delivery.d.ts +62 -0
  86. package/dist/src/interfaces/Delivery.js +2 -0
  87. package/dist/src/interfaces/Employee.d.ts +19 -0
  88. package/dist/src/interfaces/Employee.js +2 -0
  89. package/dist/src/interfaces/Ingredient.d.ts +42 -0
  90. package/dist/src/interfaces/Ingredient.js +2 -0
  91. package/dist/src/interfaces/Inventory.d.ts +26 -0
  92. package/dist/src/interfaces/Inventory.js +2 -0
  93. package/dist/src/interfaces/Kitchen.d.ts +72 -0
  94. package/dist/src/interfaces/Kitchen.js +2 -0
  95. package/dist/src/interfaces/Location.d.ts +14 -0
  96. package/dist/src/interfaces/Location.js +2 -0
  97. package/dist/src/interfaces/Menu.d.ts +72 -0
  98. package/dist/src/interfaces/Menu.js +2 -0
  99. package/dist/src/interfaces/Money.d.ts +5 -0
  100. package/dist/src/interfaces/Money.js +2 -0
  101. package/dist/src/interfaces/OpeningHours.d.ts +7 -0
  102. package/dist/src/interfaces/OpeningHours.js +2 -0
  103. package/dist/src/interfaces/Payment.d.ts +36 -0
  104. package/dist/src/interfaces/Payment.js +2 -0
  105. package/dist/src/interfaces/Recipe.d.ts +58 -0
  106. package/dist/src/interfaces/Recipe.js +2 -0
  107. package/dist/src/interfaces/Resevation.d.ts +25 -0
  108. package/dist/src/interfaces/Resevation.js +2 -0
  109. package/dist/src/interfaces/Restaurant.d.ts +24 -0
  110. package/dist/src/interfaces/Restaurant.js +2 -0
  111. package/dist/src/interfaces/Table.d.ts +54 -0
  112. package/dist/src/interfaces/Table.js +2 -0
  113. package/dist/src/interfaces/Vendor.d.ts +19 -0
  114. package/dist/src/interfaces/Vendor.js +2 -0
  115. package/dist/src/interfaces/domain/Address.d.ts +7 -0
  116. package/dist/src/interfaces/domain/Address.js +2 -0
  117. package/dist/src/interfaces/domain/Customer.d.ts +21 -0
  118. package/dist/src/interfaces/domain/Customer.js +2 -0
  119. package/dist/src/interfaces/domain/Delivery.d.ts +62 -0
  120. package/dist/src/interfaces/domain/Delivery.js +2 -0
  121. package/dist/src/interfaces/domain/Employee.d.ts +19 -0
  122. package/dist/src/interfaces/domain/Employee.js +2 -0
  123. package/dist/src/interfaces/domain/Ingredient.d.ts +42 -0
  124. package/dist/src/interfaces/domain/Ingredient.js +2 -0
  125. package/dist/src/interfaces/domain/Inventory.d.ts +26 -0
  126. package/dist/src/interfaces/domain/Inventory.js +2 -0
  127. package/dist/src/interfaces/domain/Kitchen.d.ts +72 -0
  128. package/dist/src/interfaces/domain/Kitchen.js +2 -0
  129. package/dist/src/interfaces/domain/Location.d.ts +14 -0
  130. package/dist/src/interfaces/domain/Location.js +2 -0
  131. package/dist/src/interfaces/domain/Menu.d.ts +72 -0
  132. package/dist/src/interfaces/domain/Menu.js +2 -0
  133. package/dist/src/interfaces/domain/Money.d.ts +5 -0
  134. package/dist/src/interfaces/domain/Money.js +2 -0
  135. package/dist/src/interfaces/domain/OpeningHours.d.ts +7 -0
  136. package/dist/src/interfaces/domain/OpeningHours.js +2 -0
  137. package/dist/src/interfaces/domain/Payment.d.ts +36 -0
  138. package/dist/src/interfaces/domain/Payment.js +2 -0
  139. package/dist/src/interfaces/domain/Recipe.d.ts +58 -0
  140. package/dist/src/interfaces/domain/Recipe.js +2 -0
  141. package/dist/src/interfaces/domain/Reservation.d.ts +25 -0
  142. package/dist/src/interfaces/domain/Reservation.js +2 -0
  143. package/dist/src/interfaces/domain/Restaurant.d.ts +24 -0
  144. package/dist/src/interfaces/domain/Restaurant.js +2 -0
  145. package/dist/src/interfaces/domain/Table.d.ts +54 -0
  146. package/dist/src/interfaces/domain/Table.js +2 -0
  147. package/dist/src/interfaces/domain/Vendor.d.ts +19 -0
  148. package/dist/src/interfaces/domain/Vendor.js +2 -0
  149. package/dist/src/interfaces/index.d.ts +17 -0
  150. package/dist/src/interfaces/index.js +33 -0
  151. package/dist/src/orders/OrderModule.d.ts +2 -0
  152. package/dist/src/orders/OrderModule.js +28 -0
  153. package/dist/src/orders/domain/Enums.d.ts +16 -0
  154. package/dist/src/orders/domain/Enums.js +21 -0
  155. package/dist/src/orders/domain/Order.d.ts +89 -0
  156. package/dist/src/orders/domain/Order.js +2 -0
  157. package/dist/src/orders/domain/OrderItem.d.ts +53 -0
  158. package/dist/src/orders/domain/OrderItem.js +2 -0
  159. package/dist/src/orders/domain/posDto/SquareOrder.d.ts +347 -0
  160. package/dist/src/orders/domain/posDto/SquareOrder.js +8 -0
  161. package/dist/src/orders/index.d.ts +7 -0
  162. package/dist/src/orders/index.js +25 -0
  163. package/dist/src/orders/ioc/index.d.ts +3 -0
  164. package/dist/src/orders/ioc/index.js +6 -0
  165. package/dist/src/orders/services/square/SquareOrderService.d.ts +22 -0
  166. package/dist/src/orders/services/square/SquareOrderService.js +4 -0
  167. package/dist/src/orders/services/square/SquareOrderServiceImpl.d.ts +32 -0
  168. package/dist/src/orders/services/square/SquareOrderServiceImpl.js +308 -0
  169. package/jest.config.js +8 -0
  170. package/package.json +43 -0
  171. package/src/enums/domain/DayOfWeek.ts +9 -0
  172. package/src/enums/domain/Delivery.ts +20 -0
  173. package/src/enums/domain/Employee.ts +12 -0
  174. package/src/enums/domain/Ingredient.ts +33 -0
  175. package/src/enums/domain/Inventory.ts +39 -0
  176. package/src/enums/domain/Kitchen.ts +89 -0
  177. package/src/enums/domain/Menu.ts +14 -0
  178. package/src/enums/domain/Payments.ts +41 -0
  179. package/src/enums/domain/Recipe.ts +15 -0
  180. package/src/enums/domain/Reservation.ts +18 -0
  181. package/src/enums/domain/Restaurant.ts +41 -0
  182. package/src/enums/domain/Table.ts +39 -0
  183. package/src/enums/domain/Vendors.ts +45 -0
  184. package/src/enums/index.ts +13 -0
  185. package/src/eventBridge/EventBridgeModule.ts +14 -0
  186. package/src/eventBridge/domain/EventBridgeOptions.ts +8 -0
  187. package/src/eventBridge/ioc/index.ts +3 -0
  188. package/src/eventBridge/ioc.ts +3 -0
  189. package/src/eventBridge/service/EventBridgeService.ts +8 -0
  190. package/src/eventBridge/service/EventBridgeServiceImpl.ts +67 -0
  191. package/src/events/domain/CustomerEvents.ts +79 -0
  192. package/src/events/domain/DeliveryEvents.ts +82 -0
  193. package/src/events/domain/DomainEvent.ts +17 -0
  194. package/src/events/domain/DomainEventType.ts +143 -0
  195. package/src/events/domain/EmployeeEvents.ts +74 -0
  196. package/src/events/domain/InventoryEvents.ts +184 -0
  197. package/src/events/domain/OrderEvents.ts +142 -0
  198. package/src/events/domain/PaymentEvents.ts +92 -0
  199. package/src/events/domain/RecipeEvents.ts +64 -0
  200. package/src/events/domain/ReservationEvents.ts +133 -0
  201. package/src/events/domain/RestaurantEvents.ts +89 -0
  202. package/src/events/domain/TableEvents.ts +102 -0
  203. package/src/events/domain/VendorEvents.ts +42 -0
  204. package/src/events/index.ts +13 -0
  205. package/src/index.ts +4 -0
  206. package/src/interfaces/domain/Address.ts +7 -0
  207. package/src/interfaces/domain/Customer.ts +33 -0
  208. package/src/interfaces/domain/Delivery.ts +96 -0
  209. package/src/interfaces/domain/Employee.ts +29 -0
  210. package/src/interfaces/domain/Ingredient.ts +68 -0
  211. package/src/interfaces/domain/Inventory.ts +52 -0
  212. package/src/interfaces/domain/Kitchen.ts +128 -0
  213. package/src/interfaces/domain/Location.ts +20 -0
  214. package/src/interfaces/domain/Menu.ts +121 -0
  215. package/src/interfaces/domain/Money.ts +6 -0
  216. package/src/interfaces/domain/OpeningHours.ts +11 -0
  217. package/src/interfaces/domain/Payment.ts +45 -0
  218. package/src/interfaces/domain/Recipe.ts +91 -0
  219. package/src/interfaces/domain/Reservation.ts +45 -0
  220. package/src/interfaces/domain/Restaurant.ts +45 -0
  221. package/src/interfaces/domain/Table.ts +69 -0
  222. package/src/interfaces/domain/Vendor.ts +35 -0
  223. package/src/interfaces/index.ts +17 -0
  224. package/src/orders/OrderModule.ts +17 -0
  225. package/src/orders/domain/Enums.ts +17 -0
  226. package/src/orders/domain/Order.ts +109 -0
  227. package/src/orders/domain/OrderItem.ts +68 -0
  228. package/src/orders/domain/posDto/SquareOrder.ts +346 -0
  229. package/src/orders/index.ts +7 -0
  230. package/src/orders/ioc/index.ts +3 -0
  231. package/src/orders/services/square/SquareOrderService.ts +27 -0
  232. package/src/orders/services/square/SquareOrderServiceImpl.ts +330 -0
  233. package/tsconfig.json +18 -0
@@ -0,0 +1,45 @@
1
+ import { DomainEvent } from "./DomainEvent";
2
+ import { IRecipe, IRecipeIngredient } from "../../interfaces/domain/Recipe";
3
+ export interface RecipeCreated extends DomainEvent {
4
+ eventType: "RecipeCreated";
5
+ aggregateType: "Recipe";
6
+ recipe: IRecipe;
7
+ }
8
+ export interface RecipeUpdated extends DomainEvent {
9
+ eventType: "RecipeUpdated";
10
+ aggregateType: "Recipe";
11
+ before: Partial<IRecipe>;
12
+ after: Partial<IRecipe>;
13
+ /** Version number after the update. */
14
+ version: number;
15
+ }
16
+ export interface RecipeDeleted extends DomainEvent {
17
+ eventType: "RecipeDeleted";
18
+ aggregateType: "Recipe";
19
+ /** Snapshot of the recipe at the time of deletion. */
20
+ recipe: IRecipe;
21
+ deletedAt: Date;
22
+ deletedBy?: string;
23
+ }
24
+ export interface RecipeIngredientAdded extends DomainEvent {
25
+ eventType: "RecipeIngredientAdded";
26
+ aggregateType: "Recipe";
27
+ ingredient: IRecipeIngredient;
28
+ addedBy?: string;
29
+ }
30
+ export interface RecipeIngredientUpdated extends DomainEvent {
31
+ eventType: "RecipeIngredientUpdated";
32
+ aggregateType: "Recipe";
33
+ ingredientId: string;
34
+ before: Partial<IRecipeIngredient>;
35
+ after: Partial<IRecipeIngredient>;
36
+ updatedBy?: string;
37
+ }
38
+ export interface RecipeIngredientRemoved extends DomainEvent {
39
+ eventType: "RecipeIngredientRemoved";
40
+ aggregateType: "Recipe";
41
+ ingredientId: string;
42
+ reason?: string;
43
+ removedBy?: string;
44
+ }
45
+ export type RecipeEvent = RecipeCreated | RecipeUpdated | RecipeDeleted | RecipeIngredientAdded | RecipeIngredientUpdated | RecipeIngredientRemoved;
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,93 @@
1
+ import { DomainEvent } from "./DomainEvent";
2
+ import { IReservation } from "../../interfaces/domain/Reservation";
3
+ export interface ReservationCreated extends DomainEvent {
4
+ eventType: "ReservationCreated";
5
+ aggregateType: "Reservation";
6
+ reservation: IReservation;
7
+ }
8
+ export interface ReservationConfirmed extends DomainEvent {
9
+ eventType: "ReservationConfirmed";
10
+ aggregateType: "Reservation";
11
+ confirmedAt: Date;
12
+ confirmedBy?: string;
13
+ }
14
+ export interface ReservationRejected extends DomainEvent {
15
+ eventType: "ReservationRejected";
16
+ aggregateType: "Reservation";
17
+ reason?: string;
18
+ rejectedAt: Date;
19
+ rejectedBy?: string;
20
+ }
21
+ export interface ReservationUpdated extends DomainEvent {
22
+ eventType: "ReservationUpdated";
23
+ aggregateType: "Reservation";
24
+ before: Partial<IReservation>;
25
+ after: Partial<IReservation>;
26
+ }
27
+ export interface ReservationCancelled extends DomainEvent {
28
+ eventType: "ReservationCancelled";
29
+ aggregateType: "Reservation";
30
+ reason?: string;
31
+ cancelledAt: Date;
32
+ cancelledBy?: string;
33
+ }
34
+ export interface ReservationCheckedIn extends DomainEvent {
35
+ eventType: "ReservationCheckedIn";
36
+ aggregateType: "Reservation";
37
+ checkedInAt: Date;
38
+ checkedInBy?: string;
39
+ }
40
+ export interface ReservationSeated extends DomainEvent {
41
+ eventType: "ReservationSeated";
42
+ aggregateType: "Reservation";
43
+ tableIds: string[];
44
+ seatedAt: Date;
45
+ seatedBy?: string;
46
+ }
47
+ export interface ReservationCompleted extends DomainEvent {
48
+ eventType: "ReservationCompleted";
49
+ aggregateType: "Reservation";
50
+ completedAt: Date;
51
+ }
52
+ export interface ReservationNoShow extends DomainEvent {
53
+ eventType: "ReservationNoShow";
54
+ aggregateType: "Reservation";
55
+ markedAt: Date;
56
+ markedBy?: string;
57
+ }
58
+ export interface ReservationTableAssigned extends DomainEvent {
59
+ eventType: "ReservationTableAssigned";
60
+ aggregateType: "Reservation";
61
+ tableIds: string[];
62
+ assignedBy?: string;
63
+ }
64
+ export interface ReservationTableChanged extends DomainEvent {
65
+ eventType: "ReservationTableChanged";
66
+ aggregateType: "Reservation";
67
+ previousTableIds: string[];
68
+ newTableIds: string[];
69
+ changedBy?: string;
70
+ reason?: string;
71
+ }
72
+ export interface WaitlistJoined extends DomainEvent {
73
+ eventType: "WaitlistJoined";
74
+ aggregateType: "Reservation";
75
+ partySize: number;
76
+ estimatedWaitMinutes?: number;
77
+ joinedAt: Date;
78
+ }
79
+ export interface WaitlistPromoted extends DomainEvent {
80
+ eventType: "WaitlistPromoted";
81
+ aggregateType: "Reservation";
82
+ tableIds: string[];
83
+ promotedAt: Date;
84
+ promotedBy?: string;
85
+ }
86
+ export interface WaitlistCancelled extends DomainEvent {
87
+ eventType: "WaitlistCancelled";
88
+ aggregateType: "Reservation";
89
+ reason?: string;
90
+ cancelledAt: Date;
91
+ cancelledBy?: string;
92
+ }
93
+ export type ReservationEvent = ReservationCreated | ReservationConfirmed | ReservationRejected | ReservationUpdated | ReservationCancelled | ReservationCheckedIn | ReservationSeated | ReservationCompleted | ReservationNoShow | ReservationTableAssigned | ReservationTableChanged | WaitlistJoined | WaitlistPromoted | WaitlistCancelled;
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,62 @@
1
+ import { DomainEvent } from "./DomainEvent";
2
+ import { IRestaurant } from "../../interfaces/domain/Restaurant";
3
+ import { IAddress } from "../../interfaces/domain/Address";
4
+ import { OperatingHours } from "../../interfaces/domain/OpeningHours";
5
+ import { RestaurantStatus } from "../../enums/domain/Restaurant";
6
+ export interface RestaurantCreated extends DomainEvent {
7
+ eventType: "RestaurantCreated";
8
+ aggregateType: "Restaurant";
9
+ restaurant: IRestaurant;
10
+ }
11
+ export interface RestaurantUpdated extends DomainEvent {
12
+ eventType: "RestaurantUpdated";
13
+ aggregateType: "Restaurant";
14
+ before: Partial<IRestaurant>;
15
+ after: Partial<IRestaurant>;
16
+ }
17
+ export interface RestaurantActivated extends DomainEvent {
18
+ eventType: "RestaurantActivated";
19
+ aggregateType: "Restaurant";
20
+ previousStatus: RestaurantStatus;
21
+ }
22
+ export interface RestaurantSuspended extends DomainEvent {
23
+ eventType: "RestaurantSuspended";
24
+ aggregateType: "Restaurant";
25
+ previousStatus: RestaurantStatus;
26
+ reason?: string;
27
+ }
28
+ export interface RestaurantClosed extends DomainEvent {
29
+ eventType: "RestaurantClosed";
30
+ aggregateType: "Restaurant";
31
+ previousStatus: RestaurantStatus;
32
+ reason?: string;
33
+ }
34
+ export interface RestaurantDeleted extends DomainEvent {
35
+ eventType: "RestaurantDeleted";
36
+ aggregateType: "Restaurant";
37
+ deletedAt: Date;
38
+ }
39
+ export interface RestaurantHoursUpdated extends DomainEvent {
40
+ eventType: "RestaurantHoursUpdated";
41
+ aggregateType: "Restaurant";
42
+ before: OperatingHours[];
43
+ after: OperatingHours[];
44
+ }
45
+ export interface RestaurantLocationUpdated extends DomainEvent {
46
+ eventType: "RestaurantLocationUpdated";
47
+ aggregateType: "Restaurant";
48
+ before: IAddress;
49
+ after: IAddress;
50
+ }
51
+ export interface RestaurantCapacityChanged extends DomainEvent {
52
+ eventType: "RestaurantCapacityChanged";
53
+ aggregateType: "Restaurant";
54
+ previousCapacity: number;
55
+ newCapacity: number;
56
+ }
57
+ export interface RestaurantSettingsUpdated extends DomainEvent {
58
+ eventType: "RestaurantSettingsUpdated";
59
+ aggregateType: "Restaurant";
60
+ settings: Record<string, unknown>;
61
+ }
62
+ export type RestaurantEvent = RestaurantCreated | RestaurantUpdated | RestaurantActivated | RestaurantSuspended | RestaurantClosed | RestaurantDeleted | RestaurantHoursUpdated | RestaurantLocationUpdated | RestaurantCapacityChanged | RestaurantSettingsUpdated;
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,71 @@
1
+ import { DomainEvent } from "./DomainEvent";
2
+ import { ITable } from "../../interfaces/domain/Table";
3
+ import { TableStatus } from "../../enums/domain/Table";
4
+ export interface TableCreated extends DomainEvent {
5
+ eventType: "TableCreated";
6
+ aggregateType: "Table";
7
+ table: ITable;
8
+ }
9
+ export interface TableUpdated extends DomainEvent {
10
+ eventType: "TableUpdated";
11
+ aggregateType: "Table";
12
+ before: Partial<ITable>;
13
+ after: Partial<ITable>;
14
+ }
15
+ export interface TableOpened extends DomainEvent {
16
+ eventType: "TableOpened";
17
+ aggregateType: "Table";
18
+ previousStatus: TableStatus;
19
+ openedBy?: string;
20
+ }
21
+ export interface TableOccupied extends DomainEvent {
22
+ eventType: "TableOccupied";
23
+ aggregateType: "Table";
24
+ partySize: number;
25
+ reservationId?: string;
26
+ seatedBy?: string;
27
+ occupiedAt: Date;
28
+ }
29
+ export interface TableReserved extends DomainEvent {
30
+ eventType: "TableReserved";
31
+ aggregateType: "Table";
32
+ reservationId: string;
33
+ reservedAt: Date;
34
+ reservedBy?: string;
35
+ }
36
+ export interface TableReleased extends DomainEvent {
37
+ eventType: "TableReleased";
38
+ aggregateType: "Table";
39
+ previousStatus: TableStatus;
40
+ releasedBy?: string;
41
+ releasedAt: Date;
42
+ }
43
+ export interface TableMerged extends DomainEvent {
44
+ eventType: "TableMerged";
45
+ aggregateType: "Table";
46
+ /** IDs of all tables joined into this combined group. */
47
+ mergedTableIds: string[];
48
+ combinedCapacity: number;
49
+ mergedBy?: string;
50
+ }
51
+ export interface TableSplit extends DomainEvent {
52
+ eventType: "TableSplit";
53
+ aggregateType: "Table";
54
+ /** IDs of tables that were part of the combined group before the split. */
55
+ previousTableIds: string[];
56
+ splitBy?: string;
57
+ }
58
+ export interface TableOutOfService extends DomainEvent {
59
+ eventType: "TableOutOfService";
60
+ aggregateType: "Table";
61
+ reason?: string;
62
+ markedBy?: string;
63
+ markedAt: Date;
64
+ }
65
+ export interface TableReturnedToService extends DomainEvent {
66
+ eventType: "TableReturnedToService";
67
+ aggregateType: "Table";
68
+ returnedBy?: string;
69
+ returnedAt: Date;
70
+ }
71
+ export type TableEvent = TableCreated | TableUpdated | TableOpened | TableOccupied | TableReserved | TableReleased | TableMerged | TableSplit | TableOutOfService | TableReturnedToService;
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,28 @@
1
+ import { DomainEvent } from "./DomainEvent";
2
+ import { IVendor } from "../../interfaces/domain/Vendor";
3
+ import { VendorStatus } from "../../enums/domain/Vendors";
4
+ export interface VendorCreated extends DomainEvent {
5
+ eventType: "VendorCreated";
6
+ aggregateType: "Vendor";
7
+ vendor: IVendor;
8
+ }
9
+ export interface VendorUpdated extends DomainEvent {
10
+ eventType: "VendorUpdated";
11
+ aggregateType: "Vendor";
12
+ before: Partial<IVendor>;
13
+ after: Partial<IVendor>;
14
+ }
15
+ export interface VendorActivated extends DomainEvent {
16
+ eventType: "VendorActivated";
17
+ aggregateType: "Vendor";
18
+ previousStatus: VendorStatus;
19
+ activatedBy?: string;
20
+ }
21
+ export interface VendorDeactivated extends DomainEvent {
22
+ eventType: "VendorDeactivated";
23
+ aggregateType: "Vendor";
24
+ previousStatus: VendorStatus;
25
+ reason?: string;
26
+ deactivatedBy?: string;
27
+ }
28
+ export type VendorEvent = VendorCreated | VendorUpdated | VendorActivated | VendorDeactivated;
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,13 @@
1
+ export * from "./domain/VendorEvents";
2
+ export * from "./domain/RestaurantEvents";
3
+ export * from "./domain/TableEvents";
4
+ export * from "./domain/EmployeeEvents";
5
+ export * from "./domain/CustomerEvents";
6
+ export * from "./domain/ReservationEvents";
7
+ export * from "./domain/OrderEvents";
8
+ export * from "./domain/PaymentEvents";
9
+ export * from "./domain/RecipeEvents";
10
+ export * from "./domain/InventoryEvents";
11
+ export * from "./domain/DeliveryEvents";
12
+ export * from "./domain/DomainEvent";
13
+ export * from "./domain/DomainEventType";
@@ -0,0 +1,29 @@
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("./domain/VendorEvents"), exports);
18
+ __exportStar(require("./domain/RestaurantEvents"), exports);
19
+ __exportStar(require("./domain/TableEvents"), exports);
20
+ __exportStar(require("./domain/EmployeeEvents"), exports);
21
+ __exportStar(require("./domain/CustomerEvents"), exports);
22
+ __exportStar(require("./domain/ReservationEvents"), exports);
23
+ __exportStar(require("./domain/OrderEvents"), exports);
24
+ __exportStar(require("./domain/PaymentEvents"), exports);
25
+ __exportStar(require("./domain/RecipeEvents"), exports);
26
+ __exportStar(require("./domain/InventoryEvents"), exports);
27
+ __exportStar(require("./domain/DeliveryEvents"), exports);
28
+ __exportStar(require("./domain/DomainEvent"), exports);
29
+ __exportStar(require("./domain/DomainEventType"), exports);
@@ -0,0 +1,4 @@
1
+ export * from "./events";
2
+ export * from "./enums";
3
+ export * from "./orders";
4
+ export * from "./interfaces";
@@ -0,0 +1,20 @@
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("./events"), exports);
18
+ __exportStar(require("./enums"), exports);
19
+ __exportStar(require("./orders"), exports);
20
+ __exportStar(require("./interfaces"), exports);
@@ -0,0 +1,7 @@
1
+ export interface IAddress {
2
+ street?: string;
3
+ city?: string;
4
+ state?: string;
5
+ postalCode?: string;
6
+ country?: string;
7
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,21 @@
1
+ import { IAddress } from "./Address";
2
+ export interface ICustomer {
3
+ /**
4
+ * Internal customer identifier.
5
+ */
6
+ id: string;
7
+ /**
8
+ * Vendor customer identifier.
9
+ */
10
+ externalId?: string;
11
+ firstName?: string;
12
+ lastName?: string;
13
+ fullName?: string;
14
+ email?: string;
15
+ phoneNumber?: string;
16
+ loyaltyId?: string;
17
+ dateOfBirth?: Date;
18
+ address?: IAddress;
19
+ createdAt?: Date;
20
+ updatedAt?: Date;
21
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,62 @@
1
+ import { DeliveryProvider, DeliveryStatus } from "../enums/domain/Delivery";
2
+ import { IAddress } from "./Address";
3
+ import { Money } from "./Money";
4
+ export interface IDeliveryDriver {
5
+ id?: string;
6
+ name: string;
7
+ phoneNumber?: string;
8
+ /** External driver ID from the delivery provider. */
9
+ externalId?: string;
10
+ /** Real-time latitude of the driver. */
11
+ latitude?: number;
12
+ /** Real-time longitude of the driver. */
13
+ longitude?: number;
14
+ }
15
+ export interface IDeliveryTracking {
16
+ /** Current latitude of the delivery. */
17
+ latitude?: number;
18
+ /** Current longitude of the delivery. */
19
+ longitude?: number;
20
+ /** Estimated arrival time. */
21
+ estimatedArrivalAt?: Date;
22
+ lastUpdatedAt: Date;
23
+ }
24
+ export interface IDeliveryProvider {
25
+ /** Name of the delivery provider. */
26
+ name: string;
27
+ code: DeliveryProvider;
28
+ /** External delivery identifier from the provider. */
29
+ externalId?: string;
30
+ /** Tracking URL for the delivery, if available. */
31
+ trackingUrl?: string;
32
+ }
33
+ export interface IDelivery {
34
+ id: string;
35
+ restaurantId: string;
36
+ orderId: string;
37
+ /** External delivery identifier from the provider. */
38
+ externalId?: string;
39
+ provider: IDeliveryProvider;
40
+ status: DeliveryStatus;
41
+ driver?: IDeliveryDriver;
42
+ /** Destination address for the delivery. */
43
+ deliveryAddress: IAddress;
44
+ /** Delivery fee charged to the customer. */
45
+ deliveryFee?: Money;
46
+ /** Tip for the driver. */
47
+ driverTip?: Money;
48
+ /** Estimated delivery time in minutes from order placement. */
49
+ estimatedDeliveryMinutes?: number;
50
+ /** Distance to the delivery address in kilometres. */
51
+ distanceKm?: number;
52
+ tracking?: IDeliveryTracking;
53
+ /** Free-text delivery instructions from the customer. */
54
+ deliveryInstructions?: string;
55
+ /** Reason for failure or cancellation, if applicable. */
56
+ failureReason?: string;
57
+ scheduledAt?: Date;
58
+ pickedUpAt?: Date;
59
+ deliveredAt?: Date;
60
+ createdAt: Date;
61
+ updatedAt: Date;
62
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,19 @@
1
+ import { EmployeeRole } from "../enums/domain/Employee";
2
+ export interface IEmployee {
3
+ /**
4
+ * Internal employee identifier.
5
+ */
6
+ id: string;
7
+ /**
8
+ * Vendor employee identifier.
9
+ */
10
+ externalId?: string;
11
+ firstName: string;
12
+ lastName: string;
13
+ fullName?: string;
14
+ email?: string;
15
+ phoneNumber?: string;
16
+ role: EmployeeRole;
17
+ active: boolean;
18
+ hiredAt?: Date;
19
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,42 @@
1
+ import { InventoryUnit } from "../enums/domain/Inventory";
2
+ import { Money } from "./Money";
3
+ import { IngredientStatus, AllergenType, DietaryFlag } from "../enums/domain/Ingredient";
4
+ export interface INutritionalInfo {
5
+ /** Per 100 g or 100 ml of the ingredient. */
6
+ per100g: boolean;
7
+ calories?: number;
8
+ protein?: number;
9
+ carbohydrates?: number;
10
+ sugar?: number;
11
+ fat?: number;
12
+ saturatedFat?: number;
13
+ fiber?: number;
14
+ sodium?: number;
15
+ }
16
+ export interface IIngredient {
17
+ id: string;
18
+ restaurantId: string;
19
+ /** Human-readable name (e.g. "Whole Wheat Flour"). */
20
+ name: string;
21
+ /** Optional short code used in recipes and purchase orders. */
22
+ sku?: string;
23
+ description?: string;
24
+ status: IngredientStatus;
25
+ /** Unit used when measuring this ingredient in recipes. */
26
+ unit: InventoryUnit;
27
+ /** Standard purchase cost per unit. */
28
+ unitCost?: Money;
29
+ /** Link to the corresponding inventory item. */
30
+ inventoryItemId?: string;
31
+ allergens?: AllergenType[];
32
+ dietaryFlags?: DietaryFlag[];
33
+ nutritionalInfo?: INutritionalInfo;
34
+ /** Storage location or section (e.g. "Walk-in Cooler", "Dry Storage"). */
35
+ storageLocation?: string;
36
+ /** Minimum shelf life in days after opening. */
37
+ shelfLifeDays?: number;
38
+ /** Supplier or vendor reference. */
39
+ supplierId?: string;
40
+ createdAt: Date;
41
+ updatedAt: Date;
42
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,26 @@
1
+ import { InventoryCategory, InventoryStatus, InventoryUnit } from "../enums/domain/Inventory";
2
+ export interface IInventoryItem {
3
+ id: string;
4
+ restaurantId: string;
5
+ name: string;
6
+ sku: string;
7
+ category: InventoryCategory;
8
+ unit: InventoryUnit;
9
+ quantityOnHand: number;
10
+ minimumStockLevel: number;
11
+ maximumStockLevel?: number;
12
+ unitCost: number;
13
+ vendorId?: string;
14
+ location?: string;
15
+ expiryDate?: Date;
16
+ status: InventoryStatus;
17
+ createdAt: Date;
18
+ updatedAt: Date;
19
+ }
20
+ export interface IInventory {
21
+ id: string;
22
+ restaurantId: string;
23
+ items: IInventoryItem[];
24
+ createdAt: Date;
25
+ updatedAt: Date;
26
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });