@zeeshan60/event-processor 1.0.12 → 1.0.14

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 (196) hide show
  1. package/dist/ActivityEventHandler.d.ts +5 -4
  2. package/dist/ActivityEventHandler.d.ts.map +1 -1
  3. package/dist/ActivityEventHandler.js +14 -1
  4. package/dist/ActivityLogEvents.d.ts +4 -2
  5. package/dist/ActivityLogEvents.d.ts.map +1 -1
  6. package/dist/ActivityLogEvents.js +1 -0
  7. package/dist/EventProcessorSDK.d.ts +47 -18
  8. package/dist/EventProcessorSDK.d.ts.map +1 -1
  9. package/dist/EventProcessorSDK.js +90 -5
  10. package/dist/FriendEventHandler.d.ts +5 -12
  11. package/dist/FriendEventHandler.d.ts.map +1 -1
  12. package/dist/FriendEventHandler.js +71 -60
  13. package/dist/FriendEvents.d.ts +13 -3
  14. package/dist/FriendEvents.d.ts.map +1 -1
  15. package/dist/FriendEvents.js +16 -7
  16. package/dist/GroupEventHandler.d.ts +8 -7
  17. package/dist/GroupEventHandler.d.ts.map +1 -1
  18. package/dist/GroupEventHandler.js +107 -26
  19. package/dist/GroupEvents.d.ts +15 -3
  20. package/dist/GroupEvents.d.ts.map +1 -1
  21. package/dist/GroupEvents.js +25 -13
  22. package/dist/GroupTransactionEventHandler.d.ts +8 -7
  23. package/dist/GroupTransactionEventHandler.d.ts.map +1 -1
  24. package/dist/GroupTransactionEventHandler.js +69 -24
  25. package/dist/GroupTransactionEvents.d.ts +22 -4
  26. package/dist/GroupTransactionEvents.d.ts.map +1 -1
  27. package/dist/GroupTransactionEvents.js +39 -21
  28. package/dist/ModelChangeEmitter.d.ts +15 -0
  29. package/dist/ModelChangeEmitter.d.ts.map +1 -0
  30. package/dist/ModelChangeEmitter.js +31 -0
  31. package/dist/TransactionEventHandler.d.ts +3 -5
  32. package/dist/TransactionEventHandler.d.ts.map +1 -1
  33. package/dist/TransactionEventHandler.js +49 -15
  34. package/dist/TransactionEvents.d.ts +24 -8
  35. package/dist/TransactionEvents.d.ts.map +1 -1
  36. package/dist/TransactionEvents.js +38 -22
  37. package/dist/UserEventHandler.d.ts +4 -11
  38. package/dist/UserEventHandler.d.ts.map +1 -1
  39. package/dist/UserEventHandler.js +86 -61
  40. package/dist/UserEvents.d.ts +20 -3
  41. package/dist/UserEvents.d.ts.map +1 -1
  42. package/dist/UserEvents.js +53 -18
  43. package/dist/__tests__/test-helpers/IMActivityLogEventStore.d.ts +3 -3
  44. package/dist/__tests__/test-helpers/IMActivityLogEventStore.d.ts.map +1 -1
  45. package/dist/__tests__/test-helpers/IMActivityLogEventStore.js +1 -3
  46. package/dist/__tests__/test-helpers/IMActivityLogModelStore.d.ts +3 -3
  47. package/dist/__tests__/test-helpers/IMActivityLogModelStore.d.ts.map +1 -1
  48. package/dist/__tests__/test-helpers/IMActivityLogModelStore.js +1 -3
  49. package/dist/__tests__/test-helpers/IMFriendEventStore.d.ts +3 -3
  50. package/dist/__tests__/test-helpers/IMFriendEventStore.d.ts.map +1 -1
  51. package/dist/__tests__/test-helpers/IMFriendEventStore.js +1 -3
  52. package/dist/__tests__/test-helpers/IMFriendModelStore.d.ts +4 -3
  53. package/dist/__tests__/test-helpers/IMFriendModelStore.d.ts.map +1 -1
  54. package/dist/__tests__/test-helpers/IMFriendModelStore.js +10 -3
  55. package/dist/__tests__/test-helpers/IMGroupEventStore.d.ts +3 -3
  56. package/dist/__tests__/test-helpers/IMGroupEventStore.d.ts.map +1 -1
  57. package/dist/__tests__/test-helpers/IMGroupEventStore.js +1 -3
  58. package/dist/__tests__/test-helpers/IMGroupModelStore.d.ts +3 -3
  59. package/dist/__tests__/test-helpers/IMGroupModelStore.d.ts.map +1 -1
  60. package/dist/__tests__/test-helpers/IMGroupModelStore.js +1 -3
  61. package/dist/__tests__/test-helpers/IMGroupTransactionEventStore.d.ts +3 -3
  62. package/dist/__tests__/test-helpers/IMGroupTransactionEventStore.d.ts.map +1 -1
  63. package/dist/__tests__/test-helpers/IMGroupTransactionEventStore.js +1 -3
  64. package/dist/__tests__/test-helpers/IMGroupTransactionModelStore.d.ts +3 -3
  65. package/dist/__tests__/test-helpers/IMGroupTransactionModelStore.d.ts.map +1 -1
  66. package/dist/__tests__/test-helpers/IMGroupTransactionModelStore.js +1 -3
  67. package/dist/__tests__/test-helpers/IMTransactionEventStore.d.ts +3 -3
  68. package/dist/__tests__/test-helpers/IMTransactionEventStore.d.ts.map +1 -1
  69. package/dist/__tests__/test-helpers/IMTransactionEventStore.js +1 -3
  70. package/dist/__tests__/test-helpers/IMTransactionModelStore.d.ts +3 -3
  71. package/dist/__tests__/test-helpers/IMTransactionModelStore.d.ts.map +1 -1
  72. package/dist/__tests__/test-helpers/IMTransactionModelStore.js +1 -3
  73. package/dist/__tests__/test-helpers/IMUserEventStore.d.ts +3 -3
  74. package/dist/__tests__/test-helpers/IMUserEventStore.d.ts.map +1 -1
  75. package/dist/__tests__/test-helpers/IMUserEventStore.js +1 -3
  76. package/dist/__tests__/test-helpers/IMUserModelStore.d.ts +3 -3
  77. package/dist/__tests__/test-helpers/IMUserModelStore.d.ts.map +1 -1
  78. package/dist/__tests__/test-helpers/IMUserModelStore.js +1 -3
  79. package/dist/__tests__/test-helpers/MockFirebaseAdapter.d.ts +2 -1
  80. package/dist/__tests__/test-helpers/MockFirebaseAdapter.d.ts.map +1 -1
  81. package/dist/__tests__/test-helpers/MockFirebaseAdapter.js +5 -1
  82. package/dist/client/controllers/FriendController.d.ts +13 -0
  83. package/dist/client/controllers/FriendController.d.ts.map +1 -0
  84. package/dist/client/controllers/FriendController.js +133 -0
  85. package/dist/client/controllers/UserController.d.ts +6 -5
  86. package/dist/client/controllers/UserController.d.ts.map +1 -1
  87. package/dist/client/controllers/UserController.js +89 -22
  88. package/dist/client/handlers/UIEventHandler.d.ts +4 -22
  89. package/dist/client/handlers/UIEventHandler.d.ts.map +1 -1
  90. package/dist/client/handlers/UIEventHandler.js +59 -38
  91. package/dist/client/handlers/UIFriendEventHandler.d.ts +6 -6
  92. package/dist/client/handlers/UIFriendEventHandler.d.ts.map +1 -1
  93. package/dist/client/handlers/UIGroupEventHandler.d.ts +7 -7
  94. package/dist/client/handlers/UIGroupEventHandler.d.ts.map +1 -1
  95. package/dist/client/handlers/UIGroupTransactionEventHandler.d.ts +7 -7
  96. package/dist/client/handlers/UIGroupTransactionEventHandler.d.ts.map +1 -1
  97. package/dist/client/handlers/UITransactionEventHandler.d.ts +5 -5
  98. package/dist/client/handlers/UITransactionEventHandler.d.ts.map +1 -1
  99. package/dist/client/handlers/UIUserEventHandler.d.ts +4 -4
  100. package/dist/client/handlers/UIUserEventHandler.d.ts.map +1 -1
  101. package/dist/common/DomainEvents.d.ts +1 -1
  102. package/dist/common/DomainEvents.d.ts.map +1 -1
  103. package/dist/common/DomainEvents.js +37 -37
  104. package/dist/common/Event.d.ts +3 -2
  105. package/dist/common/Event.d.ts.map +1 -1
  106. package/dist/common/Model.d.ts.map +1 -1
  107. package/dist/common/index.d.ts +2 -2
  108. package/dist/contracts/common/index.d.ts.map +1 -1
  109. package/dist/contracts/expenses/index.d.ts.map +1 -1
  110. package/dist/contracts/friends/index.d.ts.map +1 -1
  111. package/dist/contracts/groups/index.d.ts.map +1 -1
  112. package/dist/contracts/index.d.ts +1 -0
  113. package/dist/contracts/index.d.ts.map +1 -1
  114. package/dist/contracts/index.js +1 -0
  115. package/dist/contracts/shared/index.d.ts.map +1 -1
  116. package/dist/contracts/transactions/index.d.ts.map +1 -1
  117. package/dist/contracts/users/index.d.ts +15 -0
  118. package/dist/contracts/users/index.d.ts.map +1 -0
  119. package/dist/contracts/users/index.js +2 -0
  120. package/dist/converters/eventConverter.d.ts +3 -3
  121. package/dist/converters/eventConverter.d.ts.map +1 -1
  122. package/dist/converters/eventConverter.js +93 -51
  123. package/dist/events.d.ts +29 -29
  124. package/dist/events.d.ts.map +1 -1
  125. package/dist/index.d.ts +15 -13
  126. package/dist/index.d.ts.map +1 -1
  127. package/dist/index.js +17 -4
  128. package/dist/store/ActivityLogEventStore.d.ts +3 -3
  129. package/dist/store/ActivityLogEventStore.d.ts.map +1 -1
  130. package/dist/store/ActivityLogEventStore.js +0 -4
  131. package/dist/store/ActivityLogModelStore.d.ts +6 -6
  132. package/dist/store/ActivityLogModelStore.d.ts.map +1 -1
  133. package/dist/store/ActivityLogModelStore.js +0 -5
  134. package/dist/store/FriendEventStore.d.ts +3 -3
  135. package/dist/store/FriendEventStore.d.ts.map +1 -1
  136. package/dist/store/FriendEventStore.js +0 -4
  137. package/dist/store/FriendModelStore.d.ts +11 -10
  138. package/dist/store/FriendModelStore.d.ts.map +1 -1
  139. package/dist/store/FriendModelStore.js +0 -5
  140. package/dist/store/GroupEventStore.d.ts +3 -3
  141. package/dist/store/GroupEventStore.d.ts.map +1 -1
  142. package/dist/store/GroupEventStore.js +0 -4
  143. package/dist/store/GroupModelStore.d.ts +8 -8
  144. package/dist/store/GroupModelStore.d.ts.map +1 -1
  145. package/dist/store/GroupModelStore.js +0 -5
  146. package/dist/store/GroupTransactionEventStore.d.ts +3 -3
  147. package/dist/store/GroupTransactionEventStore.d.ts.map +1 -1
  148. package/dist/store/GroupTransactionEventStore.js +0 -4
  149. package/dist/store/GroupTransactionModelStore.d.ts +8 -8
  150. package/dist/store/GroupTransactionModelStore.d.ts.map +1 -1
  151. package/dist/store/GroupTransactionModelStore.js +0 -5
  152. package/dist/store/ModelStore.d.ts +5 -5
  153. package/dist/store/ModelStore.d.ts.map +1 -1
  154. package/dist/store/ModelStore.js +0 -4
  155. package/dist/store/TransactionEventStore.d.ts +3 -3
  156. package/dist/store/TransactionEventStore.d.ts.map +1 -1
  157. package/dist/store/TransactionEventStore.js +0 -4
  158. package/dist/store/TransactionModelStore.d.ts +8 -8
  159. package/dist/store/TransactionModelStore.d.ts.map +1 -1
  160. package/dist/store/TransactionModelStore.js +0 -5
  161. package/dist/store/UserEventStore.d.ts +3 -3
  162. package/dist/store/UserEventStore.d.ts.map +1 -1
  163. package/dist/store/UserEventStore.js +0 -4
  164. package/dist/store/UserModelStore.d.ts +9 -9
  165. package/dist/store/UserModelStore.d.ts.map +1 -1
  166. package/dist/store/UserModelStore.js +0 -5
  167. package/dist/utils/splitTypeUtils.d.ts +1 -1
  168. package/dist/utils/splitTypeUtils.d.ts.map +1 -1
  169. package/dist/utils/userPathUtils.d.ts +1 -1
  170. package/dist/utils/userPathUtils.d.ts.map +1 -1
  171. package/dist/utils/userPathUtils.js +3 -3
  172. package/package.json +1 -1
  173. package/dist/adapters/FirebaseAdminAdapter.d.ts +0 -8
  174. package/dist/adapters/FirebaseAdminAdapter.d.ts.map +0 -1
  175. package/dist/adapters/FirebaseAdminAdapter.js +0 -21
  176. package/dist/adapters/FirebaseClientAdapter.d.ts +0 -8
  177. package/dist/adapters/FirebaseClientAdapter.d.ts.map +0 -1
  178. package/dist/adapters/FirebaseClientAdapter.js +0 -22
  179. package/dist/client/handlers/UIActivityEventHandler.d.ts +0 -12
  180. package/dist/client/handlers/UIActivityEventHandler.d.ts.map +0 -1
  181. package/dist/client/handlers/UIActivityEventHandler.js +0 -14
  182. package/dist/common/EventBus.d.ts +0 -12
  183. package/dist/common/EventBus.d.ts.map +0 -1
  184. package/dist/common/EventBus.js +0 -26
  185. package/dist/common/EventBusSingleton.d.ts +0 -4
  186. package/dist/common/EventBusSingleton.d.ts.map +0 -1
  187. package/dist/common/EventBusSingleton.js +0 -18
  188. package/dist/config/environment.d.ts +0 -25
  189. package/dist/config/environment.d.ts.map +0 -1
  190. package/dist/config/environment.js +0 -77
  191. package/dist/controllers/UIEventHandler.d.ts +0 -25
  192. package/dist/controllers/UIEventHandler.d.ts.map +0 -1
  193. package/dist/controllers/UIEventHandler.js +0 -50
  194. package/dist/controllers/UserController.d.ts +0 -9
  195. package/dist/controllers/UserController.d.ts.map +0 -1
  196. package/dist/controllers/UserController.js +0 -36
@@ -1,10 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.IMGroupTransactionModelStore = void 0;
4
- const __1 = require("../..");
5
- class IMGroupTransactionModelStore extends __1.GroupTransactionModelStore {
4
+ class IMGroupTransactionModelStore {
6
5
  constructor() {
7
- super(...arguments);
8
6
  this.models = new Map();
9
7
  }
10
8
  async getByStreamId(streamId) {
@@ -1,6 +1,6 @@
1
- import { TransactionEventStore } from '../..';
2
- import { TransactionEvent } from '../..';
3
- export declare class IMTransactionEventStore extends TransactionEventStore {
1
+ import { TransactionEventStore } from "../..";
2
+ import { TransactionEvent } from "../..";
3
+ export declare class IMTransactionEventStore implements TransactionEventStore {
4
4
  private events;
5
5
  addEvent(event: TransactionEvent): Promise<void>;
6
6
  getEvents(): TransactionEvent[];
@@ -1 +1 @@
1
- {"version":3,"file":"IMTransactionEventStore.d.ts","sourceRoot":"","sources":["../../../src/__tests__/test-helpers/IMTransactionEventStore.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,qBAAqB,EAAC,MAAM,OAAO,CAAC;AAC5C,OAAO,EAAC,gBAAgB,EAAC,MAAM,OAAO,CAAC;AAEvC,qBAAa,uBAAwB,SAAQ,qBAAqB;IAC9D,OAAO,CAAC,MAAM,CAA0B;IAElC,QAAQ,CAAC,KAAK,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;IAItD,SAAS,IAAI,gBAAgB,EAAE;IAI/B,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,gBAAgB,EAAE;IAIzD,KAAK,IAAI,IAAI;CAGhB"}
1
+ {"version":3,"file":"IMTransactionEventStore.d.ts","sourceRoot":"","sources":["../../../src/__tests__/test-helpers/IMTransactionEventStore.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,OAAO,CAAC;AAC9C,OAAO,EAAE,gBAAgB,EAAE,MAAM,OAAO,CAAC;AAEzC,qBAAa,uBAAwB,YAAW,qBAAqB;IACjE,OAAO,CAAC,MAAM,CAA0B;IAElC,QAAQ,CAAC,KAAK,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;IAItD,SAAS,IAAI,gBAAgB,EAAE;IAI/B,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,gBAAgB,EAAE;IAIzD,KAAK,IAAI,IAAI;CAGhB"}
@@ -1,10 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.IMTransactionEventStore = void 0;
4
- const __1 = require("../..");
5
- class IMTransactionEventStore extends __1.TransactionEventStore {
4
+ class IMTransactionEventStore {
6
5
  constructor() {
7
- super(...arguments);
8
6
  this.events = [];
9
7
  }
10
8
  async addEvent(event) {
@@ -1,6 +1,6 @@
1
- import { TransactionModelStore } from '../..';
2
- import { TransactionModel } from '../..';
3
- export declare class IMTransactionModelStore extends TransactionModelStore {
1
+ import { TransactionModelStore } from "../..";
2
+ import { TransactionModel } from "../..";
3
+ export declare class IMTransactionModelStore implements TransactionModelStore {
4
4
  private models;
5
5
  getByStreamId(streamId: string): Promise<TransactionModel | undefined>;
6
6
  getByStreamIdWhereDeletedIsFalse(streamId: string): Promise<TransactionModel | undefined>;
@@ -1 +1 @@
1
- {"version":3,"file":"IMTransactionModelStore.d.ts","sourceRoot":"","sources":["../../../src/__tests__/test-helpers/IMTransactionModelStore.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,qBAAqB,EAAC,MAAM,OAAO,CAAC;AAC5C,OAAO,EAAC,gBAAgB,EAAC,MAAM,OAAO,CAAC;AAEvC,qBAAa,uBAAwB,SAAQ,qBAAqB;IAC9D,OAAO,CAAC,MAAM,CAA4C;IAEpD,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,GAAG,SAAS,CAAC;IAKtE,gCAAgC,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,GAAG,SAAS,CAAC;IAQzF,iCAAiC,CACnC,MAAM,EAAE,MAAM,EACd,eAAe,EAAE,MAAM,EACvB,oBAAoB,EAAE,MAAM,GAC7B,OAAO,CAAC,gBAAgB,GAAG,SAAS,CAAC;IAclC,wBAAwB,CAC1B,MAAM,EAAE,MAAM,EACd,kBAAkB,EAAE,MAAM,GAC3B,OAAO,CAAC,gBAAgB,EAAE,CAAC;IAcxB,IAAI,CAAC,KAAK,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;IAIlD,MAAM,IAAI,gBAAgB,EAAE;IAI5B,yBAAyB,IAAI,gBAAgB,EAAE;IAI/C,KAAK,IAAI,IAAI;CAGhB"}
1
+ {"version":3,"file":"IMTransactionModelStore.d.ts","sourceRoot":"","sources":["../../../src/__tests__/test-helpers/IMTransactionModelStore.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,OAAO,CAAC;AAC9C,OAAO,EAAE,gBAAgB,EAAE,MAAM,OAAO,CAAC;AAEzC,qBAAa,uBAAwB,YAAW,qBAAqB;IACjE,OAAO,CAAC,MAAM,CAA4C;IAEpD,aAAa,CACf,QAAQ,EAAE,MAAM,GACjB,OAAO,CAAC,gBAAgB,GAAG,SAAS,CAAC;IAKlC,gCAAgC,CAClC,QAAQ,EAAE,MAAM,GACjB,OAAO,CAAC,gBAAgB,GAAG,SAAS,CAAC;IAQlC,iCAAiC,CACnC,MAAM,EAAE,MAAM,EACd,eAAe,EAAE,MAAM,EACvB,oBAAoB,EAAE,MAAM,GAC7B,OAAO,CAAC,gBAAgB,GAAG,SAAS,CAAC;IAclC,wBAAwB,CAC1B,MAAM,EAAE,MAAM,EACd,kBAAkB,EAAE,MAAM,GAC3B,OAAO,CAAC,gBAAgB,EAAE,CAAC;IAcxB,IAAI,CAAC,KAAK,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;IAIlD,MAAM,IAAI,gBAAgB,EAAE;IAI5B,yBAAyB,IAAI,gBAAgB,EAAE;IAM/C,KAAK,IAAI,IAAI;CAGhB"}
@@ -1,10 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.IMTransactionModelStore = void 0;
4
- const __1 = require("../..");
5
- class IMTransactionModelStore extends __1.TransactionModelStore {
4
+ class IMTransactionModelStore {
6
5
  constructor() {
7
- super(...arguments);
8
6
  this.models = new Map();
9
7
  }
10
8
  async getByStreamId(streamId) {
@@ -1,6 +1,6 @@
1
- import { UserEventStore } from '../..';
2
- import { UserEvent } from '../..';
3
- export declare class IMUserEventStore extends UserEventStore {
1
+ import { UserEventStore } from "../..";
2
+ import { UserEvent } from "../..";
3
+ export declare class IMUserEventStore implements UserEventStore {
4
4
  private events;
5
5
  addEvent(event: UserEvent): Promise<void>;
6
6
  getEvents(): UserEvent[];
@@ -1 +1 @@
1
- {"version":3,"file":"IMUserEventStore.d.ts","sourceRoot":"","sources":["../../../src/__tests__/test-helpers/IMUserEventStore.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,cAAc,EAAC,MAAM,OAAO,CAAC;AACrC,OAAO,EAAC,SAAS,EAAC,MAAM,OAAO,CAAC;AAEhC,qBAAa,gBAAiB,SAAQ,cAAc;IAChD,OAAO,CAAC,MAAM,CAAmB;IAE3B,QAAQ,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;IAI/C,SAAS,IAAI,SAAS,EAAE;IAIxB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,EAAE;IAIlD,KAAK,IAAI,IAAI;CAGhB"}
1
+ {"version":3,"file":"IMUserEventStore.d.ts","sourceRoot":"","sources":["../../../src/__tests__/test-helpers/IMUserEventStore.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAElC,qBAAa,gBAAiB,YAAW,cAAc;IACnD,OAAO,CAAC,MAAM,CAAmB;IAE3B,QAAQ,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;IAI/C,SAAS,IAAI,SAAS,EAAE;IAIxB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,EAAE;IAIlD,KAAK,IAAI,IAAI;CAGhB"}
@@ -1,10 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.IMUserEventStore = void 0;
4
- const __1 = require("../..");
5
- class IMUserEventStore extends __1.UserEventStore {
4
+ class IMUserEventStore {
6
5
  constructor() {
7
- super(...arguments);
8
6
  this.events = [];
9
7
  }
10
8
  async addEvent(event) {
@@ -1,6 +1,6 @@
1
- import { UserModelStore } from '../..';
2
- import { UserModel } from '../..';
3
- export declare class IMUserModelStore extends UserModelStore {
1
+ import { UserModelStore } from "../..";
2
+ import { UserModel } from "../..";
3
+ export declare class IMUserModelStore implements UserModelStore {
4
4
  private models;
5
5
  getByStreamId(streamId: string): Promise<UserModel | undefined>;
6
6
  getByStreamIdWhereDeletedIsFalse(streamId: string): Promise<UserModel | undefined>;
@@ -1 +1 @@
1
- {"version":3,"file":"IMUserModelStore.d.ts","sourceRoot":"","sources":["../../../src/__tests__/test-helpers/IMUserModelStore.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,cAAc,EAAC,MAAM,OAAO,CAAC;AACrC,OAAO,EAAC,SAAS,EAAC,MAAM,OAAO,CAAC;AAEhC,qBAAa,gBAAiB,SAAQ,cAAc;IAChD,OAAO,CAAC,MAAM,CAAqC;IAE7C,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,GAAG,SAAS,CAAC;IAK/D,gCAAgC,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,GAAG,SAAS,CAAC;IAQlF,IAAI,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;IAIrC,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,GAAG,SAAS,CAAC;IAS1D,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,GAAG,SAAS,CAAC;IAS1D,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,GAAG,SAAS,CAAC;IASpE,MAAM,IAAI,SAAS,EAAE;IAIrB,yBAAyB,IAAI,SAAS,EAAE;IAIxC,KAAK,IAAI,IAAI;CAGhB"}
1
+ {"version":3,"file":"IMUserModelStore.d.ts","sourceRoot":"","sources":["../../../src/__tests__/test-helpers/IMUserModelStore.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAElC,qBAAa,gBAAiB,YAAW,cAAc;IACnD,OAAO,CAAC,MAAM,CAAqC;IAE7C,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,GAAG,SAAS,CAAC;IAK/D,gCAAgC,CAClC,QAAQ,EAAE,MAAM,GACjB,OAAO,CAAC,SAAS,GAAG,SAAS,CAAC;IAQ3B,IAAI,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;IAIrC,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,GAAG,SAAS,CAAC;IAS1D,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,GAAG,SAAS,CAAC;IAS1D,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,GAAG,SAAS,CAAC;IASpE,MAAM,IAAI,SAAS,EAAE;IAIrB,yBAAyB,IAAI,SAAS,EAAE;IAMxC,KAAK,IAAI,IAAI;CAGhB"}
@@ -1,10 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.IMUserModelStore = void 0;
4
- const __1 = require("../..");
5
- class IMUserModelStore extends __1.UserModelStore {
4
+ class IMUserModelStore {
6
5
  constructor() {
7
- super(...arguments);
8
6
  this.models = new Map();
9
7
  }
10
8
  async getByStreamId(streamId) {
@@ -1,6 +1,7 @@
1
- import { FirebaseAdapter } from '../../adapters/FirebaseAdapter';
1
+ import { FirebaseAdapter } from "../../adapters/FirebaseAdapter";
2
2
  export declare class MockFirebaseAdapter implements FirebaseAdapter {
3
3
  fromDate(date: Date): any;
4
4
  toDate(timestamp: any): Date;
5
+ generateEventId(): string;
5
6
  }
6
7
  //# sourceMappingURL=MockFirebaseAdapter.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"MockFirebaseAdapter.d.ts","sourceRoot":"","sources":["../../../src/__tests__/test-helpers/MockFirebaseAdapter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,eAAe,EAAC,MAAM,gCAAgC,CAAC;AAE/D,qBAAa,mBAAoB,YAAW,eAAe;IACvD,QAAQ,CAAC,IAAI,EAAE,IAAI,GAAG,GAAG;IAIzB,MAAM,CAAC,SAAS,EAAE,GAAG,GAAG,IAAI;CAS/B"}
1
+ {"version":3,"file":"MockFirebaseAdapter.d.ts","sourceRoot":"","sources":["../../../src/__tests__/test-helpers/MockFirebaseAdapter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AAGjE,qBAAa,mBAAoB,YAAW,eAAe;IACvD,QAAQ,CAAC,IAAI,EAAE,IAAI,GAAG,GAAG;IAIzB,MAAM,CAAC,SAAS,EAAE,GAAG,GAAG,IAAI;IAU5B,eAAe,IAAI,MAAM;CAG5B"}
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.MockFirebaseAdapter = void 0;
4
+ const uuid_1 = require("uuid");
4
5
  class MockFirebaseAdapter {
5
6
  fromDate(date) {
6
7
  return { seconds: Math.floor(date.getTime() / 1000), nanoseconds: 0 };
@@ -9,10 +10,13 @@ class MockFirebaseAdapter {
9
10
  if (timestamp instanceof Date) {
10
11
  return timestamp;
11
12
  }
12
- if (timestamp && typeof timestamp.seconds === 'number') {
13
+ if (timestamp && typeof timestamp.seconds === "number") {
13
14
  return new Date(timestamp.seconds * 1000);
14
15
  }
15
16
  return new Date(timestamp);
16
17
  }
18
+ generateEventId() {
19
+ return (0, uuid_1.v4)();
20
+ }
17
21
  }
18
22
  exports.MockFirebaseAdapter = MockFirebaseAdapter;
@@ -0,0 +1,13 @@
1
+ import { FriendRequest, FriendResponse, FriendsResponse, UpdateFriendRequest } from "../../contracts/friends";
2
+ export declare class FriendController {
3
+ private get modelStore();
4
+ private get friendEventHandler();
5
+ addFriend(userId: string, request: FriendRequest): Promise<string>;
6
+ updateFriend(userId: string, friendId: string, request: UpdateFriendRequest): Promise<void>;
7
+ deleteFriend(userId: string, friendId: string): Promise<void>;
8
+ getFriend(userId: string, friendId: string): Promise<FriendResponse>;
9
+ getFriendByStreamId(streamId: string): Promise<FriendResponse>;
10
+ getAllFriends(userId: string): Promise<FriendsResponse>;
11
+ private toFriendResponse;
12
+ }
13
+ //# sourceMappingURL=FriendController.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FriendController.d.ts","sourceRoot":"","sources":["../../../src/client/controllers/FriendController.ts"],"names":[],"mappings":"AAMA,OAAO,EACH,aAAa,EACb,cAAc,EACd,eAAe,EACf,mBAAmB,EACtB,MAAM,yBAAyB,CAAC;AAKjC,qBAAa,gBAAgB;IACzB,OAAO,KAAK,UAAU,GAGrB;IAED,OAAO,KAAK,kBAAkB,GAE7B;IAEK,SAAS,CACX,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,aAAa,GACvB,OAAO,CAAC,MAAM,CAAC;IA2BZ,YAAY,CACd,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,mBAAmB,GAC7B,OAAO,CAAC,IAAI,CAAC;IA+CV,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAwB7D,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;IAapE,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;IAU9D,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC;IAmB7D,OAAO,CAAC,gBAAgB;CAkB3B"}
@@ -0,0 +1,133 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.FriendController = void 0;
4
+ const FriendEvents_1 = require("../../FriendEvents");
5
+ const uuid_1 = require("uuid");
6
+ const EventProcessorSDK_1 = require("../../EventProcessorSDK");
7
+ class FriendController {
8
+ get modelStore() {
9
+ return EventProcessorSDK_1.EventProcessorSDK.getInstance().getStoreConfig()
10
+ .friendModelStore;
11
+ }
12
+ get friendEventHandler() {
13
+ return EventProcessorSDK_1.EventProcessorSDK.getInstance().getFriendEventHandler();
14
+ }
15
+ async addFriend(userId, request) {
16
+ if (!request.email && !request.phoneNumber) {
17
+ throw new Error("Either email or phoneNumber must be provided");
18
+ }
19
+ const streamId = (0, uuid_1.v4)();
20
+ const createdAt = new Date();
21
+ const event = new FriendEvents_1.FriendCreated({
22
+ eventId: (0, uuid_1.v4)(),
23
+ userId,
24
+ friendEmail: request.email?.trim(),
25
+ friendPhoneNumber: request.phoneNumber?.trim(),
26
+ friendDisplayName: request.name.trim(),
27
+ friendId: undefined,
28
+ groupId: undefined,
29
+ createdAt,
30
+ createdBy: userId,
31
+ streamId,
32
+ version: 1,
33
+ systemGenerated: false,
34
+ });
35
+ await this.friendEventHandler.handleEvent(event);
36
+ return streamId;
37
+ }
38
+ async updateFriend(userId, friendId, request) {
39
+ const friendModel = await this.modelStore.findByUserIdAndFriendIdAndDeletedIsFalse(userId, friendId);
40
+ if (!friendModel) {
41
+ throw new Error(`Friend not found: ${friendId}`);
42
+ }
43
+ const hasChanges = (request.email !== undefined &&
44
+ request.email.trim() !== "" &&
45
+ request.email !== friendModel.friendEmail) ||
46
+ (request.phoneNumber !== undefined &&
47
+ request.phoneNumber.trim() !== "" &&
48
+ request.phoneNumber !== friendModel.friendPhoneNumber) ||
49
+ (request.name !== undefined &&
50
+ request.name.trim() !== "" &&
51
+ request.name !== friendModel.friendDisplayName);
52
+ if (!hasChanges) {
53
+ return;
54
+ }
55
+ const createdAt = new Date();
56
+ const event = new FriendEvents_1.FriendUpdated({
57
+ eventId: (0, uuid_1.v4)(),
58
+ userId,
59
+ friendEmail: request.email !== undefined ? request.email.trim() : undefined,
60
+ friendPhoneNumber: request.phoneNumber !== undefined
61
+ ? request.phoneNumber.trim()
62
+ : undefined,
63
+ friendDisplayName: request.name !== undefined ? request.name.trim() : undefined,
64
+ createdAt,
65
+ createdBy: userId,
66
+ streamId: friendModel.streamId,
67
+ version: friendModel.version + 1,
68
+ systemGenerated: false,
69
+ });
70
+ await this.friendEventHandler.handleEvent(event);
71
+ }
72
+ async deleteFriend(userId, friendId) {
73
+ const friendModel = await this.modelStore.findByUserIdAndFriendIdAndDeletedIsFalse(userId, friendId);
74
+ if (!friendModel) {
75
+ throw new Error(`Friend not found: ${friendId}`);
76
+ }
77
+ const createdAt = new Date();
78
+ const event = new FriendEvents_1.FriendDeleted({
79
+ eventId: (0, uuid_1.v4)(),
80
+ userId,
81
+ createdAt,
82
+ createdBy: userId,
83
+ streamId: friendModel.streamId,
84
+ version: friendModel.version + 1,
85
+ systemGenerated: false,
86
+ });
87
+ await this.friendEventHandler.handleEvent(event);
88
+ }
89
+ async getFriend(userId, friendId) {
90
+ const friendModel = await this.modelStore.findByUserIdAndFriendIdAndDeletedIsFalse(userId, friendId);
91
+ if (!friendModel) {
92
+ throw new Error(`Friend not found: ${friendId}`);
93
+ }
94
+ return this.toFriendResponse(friendModel);
95
+ }
96
+ async getFriendByStreamId(streamId) {
97
+ const friendModel = await this.modelStore.getByStreamIdWhereDeletedIsFalse(streamId);
98
+ if (!friendModel) {
99
+ throw new Error(`Friend not found: ${streamId}`);
100
+ }
101
+ return this.toFriendResponse(friendModel);
102
+ }
103
+ async getAllFriends(userId) {
104
+ const friendModels = await this.modelStore.findAllByUserIdWhereDeletedIsFalse(userId);
105
+ const friends = friendModels.map((friendModel) => this.toFriendResponse(friendModel));
106
+ const emptyBalance = {
107
+ main: undefined,
108
+ other: [],
109
+ };
110
+ return {
111
+ friends,
112
+ balance: emptyBalance,
113
+ };
114
+ }
115
+ toFriendResponse(friendModel) {
116
+ const emptyBalance = {
117
+ main: undefined,
118
+ other: [],
119
+ };
120
+ return {
121
+ photoUrl: undefined,
122
+ name: friendModel.friendDisplayName,
123
+ friendId: friendModel.friendId ?? friendModel.streamId,
124
+ settled: false,
125
+ email: friendModel.friendEmail,
126
+ phone: friendModel.friendPhoneNumber,
127
+ mainBalance: undefined,
128
+ otherBalances: [],
129
+ balance: emptyBalance,
130
+ };
131
+ }
132
+ }
133
+ exports.FriendController = FriendController;
@@ -1,9 +1,10 @@
1
- import { UserModelStore } from '../../store/UserModelStore';
2
- import { UserEventStore } from '../../store/UserEventStore';
1
+ import { UpdateUserRequest, UserResponse } from "../../contracts/users";
3
2
  export declare class UserController {
4
- private modelStore;
5
- private eventStore?;
6
- constructor(modelStore: UserModelStore, eventStore?: UserEventStore | undefined);
3
+ private get modelStore();
4
+ private get eventStore();
7
5
  loginUser(userFSId: string): Promise<string>;
6
+ getUser(userId: string): Promise<UserResponse>;
7
+ updateUser(userId: string, request: UpdateUserRequest): Promise<UserResponse>;
8
+ private toUserResponse;
8
9
  }
9
10
  //# sourceMappingURL=UserController.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"UserController.d.ts","sourceRoot":"","sources":["../../../src/client/controllers/UserController.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,cAAc,EAAC,MAAM,4BAA4B,CAAC;AAC1D,OAAO,EAAC,cAAc,EAAC,MAAM,4BAA4B,CAAC;AAG1D,qBAAa,cAAc;IAEnB,OAAO,CAAC,UAAU;IAClB,OAAO,CAAC,UAAU,CAAC;gBADX,UAAU,EAAE,cAAc,EAC1B,UAAU,CAAC,EAAE,cAAc,YAAA;IAGjC,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;CA+BrD"}
1
+ {"version":3,"file":"UserController.d.ts","sourceRoot":"","sources":["../../../src/client/controllers/UserController.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAIxE,qBAAa,cAAc;IACvB,OAAO,KAAK,UAAU,GAErB;IAED,OAAO,KAAK,UAAU,GAErB;IAEK,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAQ5C,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IAU9C,UAAU,CACZ,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,iBAAiB,GAC3B,OAAO,CAAC,YAAY,CAAC;IAyExB,OAAO,CAAC,cAAc;CAiBzB"}
@@ -1,36 +1,103 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.UserController = void 0;
4
- const EventBusSingleton_1 = require("../../common/EventBusSingleton");
5
4
  const UserEvents_1 = require("../../UserEvents");
6
- const rxjs_1 = require("rxjs");
5
+ const EventProcessorSDK_1 = require("../../EventProcessorSDK");
6
+ const uuid_1 = require("uuid");
7
7
  class UserController {
8
- constructor(modelStore, eventStore) {
9
- this.modelStore = modelStore;
10
- this.eventStore = eventStore;
8
+ get modelStore() {
9
+ return EventProcessorSDK_1.EventProcessorSDK.getInstance().getStoreConfig().userModelStore;
10
+ }
11
+ get eventStore() {
12
+ return EventProcessorSDK_1.EventProcessorSDK.getInstance().getStoreConfig().userEventStore;
11
13
  }
12
14
  async loginUser(userFSId) {
13
15
  const existingUser = await this.modelStore.findByFirebaseUid(userFSId);
14
- if (existingUser) {
15
- return existingUser.userId;
16
+ if (!existingUser) {
17
+ throw new Error(`User not found for firebaseUid: ${userFSId}`);
16
18
  }
17
- const eventBus = (0, EventBusSingleton_1.getEventBus)();
18
- const isUserCreatedForFirebaseUid = (event) => {
19
- return event instanceof UserEvents_1.UserCreated && event.firebaseUid === userFSId;
20
- };
21
- try {
22
- const event = await (0, rxjs_1.firstValueFrom)(eventBus.observable(isUserCreatedForFirebaseUid).pipe((0, rxjs_1.timeout)(10000)));
23
- if (!event.userId) {
24
- throw new Error('UserCreated event missing userId');
25
- }
26
- return event.userId;
19
+ return existingUser.userId;
20
+ }
21
+ async getUser(userId) {
22
+ const userModel = await this.modelStore.getByStreamIdWhereDeletedIsFalse(userId);
23
+ if (!userModel) {
24
+ throw new Error(`User not found: ${userId}`);
25
+ }
26
+ return this.toUserResponse(userModel);
27
+ }
28
+ async updateUser(userId, request) {
29
+ let userModel = await this.modelStore.getByStreamIdWhereDeletedIsFalse(userId);
30
+ if (!userModel) {
31
+ throw new Error(`User not found: ${userId}`);
27
32
  }
28
- catch (error) {
29
- if (error.name === 'TimeoutError') {
30
- throw new Error(`Timeout waiting for UserCreated event for firebaseUid: ${userFSId}`);
31
- }
32
- throw error;
33
+ let currentVersion = userModel.version;
34
+ const createdAt = new Date();
35
+ if (request.displayName !== undefined &&
36
+ request.displayName.trim() !== "" &&
37
+ request.displayName !== userModel.displayName) {
38
+ currentVersion++;
39
+ const event = new UserEvents_1.UserDisplayNameChanged({
40
+ eventId: (0, uuid_1.v4)(),
41
+ userId: userModel.userId,
42
+ displayName: request.displayName.trim(),
43
+ createdAt,
44
+ createdBy: userModel.userId,
45
+ streamId: userModel.streamId,
46
+ version: currentVersion,
47
+ systemGenerated: false,
48
+ });
49
+ await this.eventStore.addEvent(event);
50
+ userModel = event.apply(userModel);
33
51
  }
52
+ if (request.phoneNumber !== undefined &&
53
+ request.phoneNumber.trim() !== "" &&
54
+ request.phoneNumber !== userModel.phoneNumber) {
55
+ currentVersion++;
56
+ const event = new UserEvents_1.UserPhoneNumberChanged({
57
+ eventId: (0, uuid_1.v4)(),
58
+ userId: userModel.userId,
59
+ phoneNumber: request.phoneNumber.trim(),
60
+ createdAt,
61
+ createdBy: userModel.userId,
62
+ streamId: userModel.streamId,
63
+ version: currentVersion,
64
+ systemGenerated: false,
65
+ });
66
+ await this.eventStore.addEvent(event);
67
+ userModel = event.apply(userModel);
68
+ }
69
+ if (request.currency !== undefined &&
70
+ request.currency.trim() !== "" &&
71
+ request.currency !== userModel.currency) {
72
+ currentVersion++;
73
+ const event = new UserEvents_1.UserCurrencyChanged({
74
+ eventId: (0, uuid_1.v4)(),
75
+ userId: userModel.userId,
76
+ currency: request.currency.trim(),
77
+ createdAt,
78
+ createdBy: userModel.userId,
79
+ streamId: userModel.streamId,
80
+ version: currentVersion,
81
+ systemGenerated: false,
82
+ });
83
+ await this.eventStore.addEvent(event);
84
+ userModel = event.apply(userModel);
85
+ }
86
+ return this.toUserResponse(userModel);
87
+ }
88
+ toUserResponse(userModel) {
89
+ if (!userModel.uid) {
90
+ throw new Error("Cannot create UserResponse for placeholder user without uid");
91
+ }
92
+ return {
93
+ uid: userModel.uid,
94
+ email: userModel.email,
95
+ phoneNumber: userModel.phoneNumber,
96
+ displayName: userModel.displayName,
97
+ currency: userModel.currency,
98
+ photoUrl: userModel.photoUrl,
99
+ emailVerified: userModel.emailVerified,
100
+ };
34
101
  }
35
102
  }
36
103
  exports.UserController = UserController;
@@ -1,25 +1,7 @@
1
- import { UserModelStore } from '../../store/UserModelStore';
2
- interface FirestoreTimestamp {
3
- toDate(): Date;
4
- seconds: number;
5
- nanoseconds: number;
6
- }
7
- interface ClientFirestoreEventData {
8
- id: string;
9
- eventType: string;
10
- streamId: string;
11
- version: number;
12
- createdAt: FirestoreTimestamp | Date;
13
- createdBy: string;
14
- systemGenerated?: boolean;
15
- [key: string]: any;
16
- }
1
+ import { Event } from "../../index";
17
2
  export declare class UIEventHandler {
18
- private userModelStore;
19
- constructor(userModelStore: UserModelStore);
20
- handleFirestoreEvent(eventData: ClientFirestoreEventData): Promise<void>;
21
- private firestoreToEvent;
22
- private toDate;
3
+ constructor();
4
+ private shouldSkipSave;
5
+ handleFirestoreEvent(event: Event): Promise<void>;
23
6
  }
24
- export {};
25
7
  //# sourceMappingURL=UIEventHandler.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"UIEventHandler.d.ts","sourceRoot":"","sources":["../../../src/client/handlers/UIEventHandler.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,cAAc,EAAC,MAAM,4BAA4B,CAAC;AAG1D,UAAU,kBAAkB;IACxB,MAAM,IAAI,IAAI,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;CACvB;AAED,UAAU,wBAAwB;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,kBAAkB,GAAG,IAAI,CAAC;IACrC,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACtB;AAED,qBAAa,cAAc;IAEnB,OAAO,CAAC,cAAc;gBAAd,cAAc,EAAE,cAAc;IAGpC,oBAAoB,CAAC,SAAS,EAAE,wBAAwB,GAAG,OAAO,CAAC,IAAI,CAAC;IAW9E,OAAO,CAAC,gBAAgB;IAwBxB,OAAO,CAAC,MAAM;CASjB"}
1
+ {"version":3,"file":"UIEventHandler.d.ts","sourceRoot":"","sources":["../../../src/client/handlers/UIEventHandler.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,KAAK,EAOR,MAAM,aAAa,CAAC;AAWrB,qBAAa,cAAc;;IAGvB,OAAO,CAAC,cAAc;IA0BhB,oBAAoB,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC;CAwF1D"}
@@ -1,50 +1,71 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.UIEventHandler = void 0;
4
- const index_1 = require("../../index");
5
- const EventBusSingleton_1 = require("../../common/EventBusSingleton");
4
+ const DomainEvents_1 = require("../../common/DomainEvents");
5
+ const EventProcessorSDK_1 = require("../../EventProcessorSDK");
6
6
  class UIEventHandler {
7
- constructor(userModelStore) {
8
- this.userModelStore = userModelStore;
7
+ constructor() { }
8
+ shouldSkipSave(existingModel, updatedModel) {
9
+ if (!existingModel) {
10
+ return false;
11
+ }
12
+ return (existingModel.streamId === updatedModel.streamId &&
13
+ existingModel.version === updatedModel.version);
9
14
  }
10
- async handleFirestoreEvent(eventData) {
11
- const event = this.firestoreToEvent(eventData);
12
- if (event instanceof index_1.UserCreated) {
13
- const existingModel = await this.userModelStore.getByStreamIdWhereDeletedIsFalse(event.streamId);
15
+ async handleFirestoreEvent(event) {
16
+ const storeConfig = EventProcessorSDK_1.EventProcessorSDK.getInstance().getStoreConfig();
17
+ const eventType = event.constructor.name;
18
+ if ((0, DomainEvents_1.isValidUserEventType)(eventType)) {
19
+ const existingModel = await storeConfig.userModelStore.getByStreamIdWhereDeletedIsFalse(event.streamId);
14
20
  const updatedModel = event.apply(existingModel);
15
- await this.userModelStore.save(updatedModel);
16
- (0, EventBusSingleton_1.getEventBus)().publish(event);
21
+ if (!this.shouldSkipSave(existingModel, updatedModel)) {
22
+ await storeConfig.userModelStore.save(updatedModel);
23
+ EventProcessorSDK_1.EventProcessorSDK.getInstance().emitModelChange("UserModel", updatedModel);
24
+ }
17
25
  }
18
- }
19
- firestoreToEvent(data) {
20
- const eventType = data.eventType;
21
- const createdAt = this.toDate(data.createdAt);
22
- if (eventType === 'UserCreated') {
23
- return new index_1.UserCreated({
24
- userId: data.userId,
25
- firebaseUid: data.firebaseUid,
26
- displayName: data.displayName,
27
- phoneNumber: data.phoneNumber,
28
- email: data.email,
29
- photoUrl: data.photoUrl,
30
- emailVerified: data.emailVerified,
31
- createdAt,
32
- createdBy: data.createdBy,
33
- streamId: data.streamId,
34
- version: data.version,
35
- systemGenerated: data.systemGenerated ?? false,
36
- });
37
- }
38
- throw new Error(`Unsupported event type: ${eventType}`);
39
- }
40
- toDate(timestamp) {
41
- if (timestamp instanceof Date) {
42
- return timestamp;
26
+ else if ((0, DomainEvents_1.isValidFriendEventType)(eventType)) {
27
+ const existingModel = await storeConfig.friendModelStore.getByStreamIdWhereDeletedIsFalse(event.streamId);
28
+ const updatedModel = event.apply(existingModel);
29
+ if (!this.shouldSkipSave(existingModel, updatedModel)) {
30
+ await storeConfig.friendModelStore.save(updatedModel);
31
+ EventProcessorSDK_1.EventProcessorSDK.getInstance().emitModelChange("FriendModel", updatedModel);
32
+ }
33
+ }
34
+ else if ((0, DomainEvents_1.isValidTransactionEventType)(eventType)) {
35
+ const existingModel = await storeConfig.transactionModelStore.getByStreamIdWhereDeletedIsFalse(event.streamId);
36
+ const updatedModel = event.apply(existingModel);
37
+ if (!this.shouldSkipSave(existingModel, updatedModel)) {
38
+ await storeConfig.transactionModelStore.save(updatedModel);
39
+ EventProcessorSDK_1.EventProcessorSDK.getInstance().emitModelChange("TransactionModel", updatedModel);
40
+ }
41
+ }
42
+ else if ((0, DomainEvents_1.isValidGroupEventType)(eventType)) {
43
+ const existingModel = await storeConfig.groupModelStore.getByStreamIdWhereDeletedIsFalse(event.streamId);
44
+ const updatedModel = event.apply(existingModel);
45
+ if (!this.shouldSkipSave(existingModel, updatedModel)) {
46
+ await storeConfig.groupModelStore.save(updatedModel);
47
+ EventProcessorSDK_1.EventProcessorSDK.getInstance().emitModelChange("GroupModel", updatedModel);
48
+ }
49
+ }
50
+ else if ((0, DomainEvents_1.isValidGroupTransactionEventType)(eventType)) {
51
+ const existingModel = await storeConfig.groupTransactionModelStore.getByStreamIdWhereDeletedIsFalse(event.streamId);
52
+ const updatedModel = event.apply(existingModel);
53
+ if (!this.shouldSkipSave(existingModel, updatedModel)) {
54
+ await storeConfig.groupTransactionModelStore.save(updatedModel);
55
+ EventProcessorSDK_1.EventProcessorSDK.getInstance().emitModelChange("GroupTransactionModel", updatedModel);
56
+ }
57
+ }
58
+ else if ((0, DomainEvents_1.isValidActivityLogEventType)(eventType)) {
59
+ const existingModel = await storeConfig.activityLogModelStore.getByStreamIdWhereDeletedIsFalse(event.streamId);
60
+ const updatedModel = event.apply(existingModel);
61
+ if (!this.shouldSkipSave(existingModel, updatedModel)) {
62
+ await storeConfig.activityLogModelStore.save(updatedModel);
63
+ EventProcessorSDK_1.EventProcessorSDK.getInstance().emitModelChange("ActivityLogModel", updatedModel);
64
+ }
43
65
  }
44
- if (typeof timestamp === 'object' && 'toDate' in timestamp) {
45
- return timestamp.toDate();
66
+ else {
67
+ throw new Error(`Unsupported event type: ${eventType}`);
46
68
  }
47
- return new Date(timestamp);
48
69
  }
49
70
  }
50
71
  exports.UIEventHandler = UIEventHandler;