@zeeshan60/event-processor 1.0.13 → 1.0.15

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 (191) hide show
  1. package/dist/ActivityEventHandler.d.ts +5 -5
  2. package/dist/ActivityEventHandler.d.ts.map +1 -1
  3. package/dist/ActivityEventHandler.js +27 -1
  4. package/dist/ActivityLogEvents.d.ts.map +1 -1
  5. package/dist/BaseEventHandler.d.ts +6 -0
  6. package/dist/BaseEventHandler.d.ts.map +1 -0
  7. package/dist/BaseEventHandler.js +2 -0
  8. package/dist/EventProcessorSDK.d.ts +30 -1
  9. package/dist/EventProcessorSDK.d.ts.map +1 -1
  10. package/dist/EventProcessorSDK.js +88 -5
  11. package/dist/FriendEventHandler.d.ts +5 -2
  12. package/dist/FriendEventHandler.d.ts.map +1 -1
  13. package/dist/FriendEventHandler.js +49 -15
  14. package/dist/GroupEventHandler.d.ts +5 -7
  15. package/dist/GroupEventHandler.d.ts.map +1 -1
  16. package/dist/GroupEventHandler.js +96 -18
  17. package/dist/GroupEvents.d.ts.map +1 -1
  18. package/dist/GroupTransactionEventHandler.d.ts +4 -1
  19. package/dist/GroupTransactionEventHandler.d.ts.map +1 -1
  20. package/dist/GroupTransactionEventHandler.js +57 -13
  21. package/dist/GroupTransactionEvents.d.ts.map +1 -1
  22. package/dist/ModelChangeEmitter.d.ts +15 -0
  23. package/dist/ModelChangeEmitter.d.ts.map +1 -0
  24. package/dist/ModelChangeEmitter.js +31 -0
  25. package/dist/TransactionEventHandler.d.ts +6 -4
  26. package/dist/TransactionEventHandler.d.ts.map +1 -1
  27. package/dist/TransactionEventHandler.js +33 -21
  28. package/dist/TransactionEvents.d.ts.map +1 -1
  29. package/dist/UserEventHandler.d.ts +5 -2
  30. package/dist/UserEventHandler.d.ts.map +1 -1
  31. package/dist/UserEventHandler.js +32 -28
  32. package/dist/UserEvents.d.ts.map +1 -1
  33. package/dist/__tests__/test-helpers/IMActivityLogEventStore.d.ts +2 -3
  34. package/dist/__tests__/test-helpers/IMActivityLogEventStore.d.ts.map +1 -1
  35. package/dist/__tests__/test-helpers/IMActivityLogEventStore.js +1 -3
  36. package/dist/__tests__/test-helpers/IMActivityLogModelStore.d.ts +2 -3
  37. package/dist/__tests__/test-helpers/IMActivityLogModelStore.d.ts.map +1 -1
  38. package/dist/__tests__/test-helpers/IMActivityLogModelStore.js +1 -3
  39. package/dist/__tests__/test-helpers/IMFriendEventStore.d.ts +2 -3
  40. package/dist/__tests__/test-helpers/IMFriendEventStore.d.ts.map +1 -1
  41. package/dist/__tests__/test-helpers/IMFriendEventStore.js +1 -3
  42. package/dist/__tests__/test-helpers/IMFriendModelStore.d.ts +2 -3
  43. package/dist/__tests__/test-helpers/IMFriendModelStore.d.ts.map +1 -1
  44. package/dist/__tests__/test-helpers/IMFriendModelStore.js +1 -3
  45. package/dist/__tests__/test-helpers/IMGroupEventStore.d.ts +2 -3
  46. package/dist/__tests__/test-helpers/IMGroupEventStore.d.ts.map +1 -1
  47. package/dist/__tests__/test-helpers/IMGroupEventStore.js +1 -3
  48. package/dist/__tests__/test-helpers/IMGroupModelStore.d.ts +2 -3
  49. package/dist/__tests__/test-helpers/IMGroupModelStore.d.ts.map +1 -1
  50. package/dist/__tests__/test-helpers/IMGroupModelStore.js +1 -3
  51. package/dist/__tests__/test-helpers/IMGroupTransactionEventStore.d.ts +2 -3
  52. package/dist/__tests__/test-helpers/IMGroupTransactionEventStore.d.ts.map +1 -1
  53. package/dist/__tests__/test-helpers/IMGroupTransactionEventStore.js +1 -3
  54. package/dist/__tests__/test-helpers/IMGroupTransactionModelStore.d.ts +2 -3
  55. package/dist/__tests__/test-helpers/IMGroupTransactionModelStore.d.ts.map +1 -1
  56. package/dist/__tests__/test-helpers/IMGroupTransactionModelStore.js +1 -3
  57. package/dist/__tests__/test-helpers/IMTransactionEventStore.d.ts +2 -3
  58. package/dist/__tests__/test-helpers/IMTransactionEventStore.d.ts.map +1 -1
  59. package/dist/__tests__/test-helpers/IMTransactionEventStore.js +1 -3
  60. package/dist/__tests__/test-helpers/IMTransactionModelStore.d.ts +2 -3
  61. package/dist/__tests__/test-helpers/IMTransactionModelStore.d.ts.map +1 -1
  62. package/dist/__tests__/test-helpers/IMTransactionModelStore.js +1 -3
  63. package/dist/__tests__/test-helpers/IMUserEventStore.d.ts +2 -3
  64. package/dist/__tests__/test-helpers/IMUserEventStore.d.ts.map +1 -1
  65. package/dist/__tests__/test-helpers/IMUserEventStore.js +1 -3
  66. package/dist/__tests__/test-helpers/IMUserModelStore.d.ts +2 -3
  67. package/dist/__tests__/test-helpers/IMUserModelStore.d.ts.map +1 -1
  68. package/dist/__tests__/test-helpers/IMUserModelStore.js +1 -3
  69. package/dist/client/controllers/FriendController.d.ts +6 -5
  70. package/dist/client/controllers/FriendController.d.ts.map +1 -1
  71. package/dist/client/controllers/FriendController.js +23 -12
  72. package/dist/client/controllers/TransactionController.d.ts +12 -0
  73. package/dist/client/controllers/TransactionController.d.ts.map +1 -0
  74. package/dist/client/controllers/TransactionController.js +214 -0
  75. package/dist/client/controllers/UserController.d.ts.map +1 -1
  76. package/dist/client/controllers/UserController.js +3 -23
  77. package/dist/client/handlers/UIEventHandler.d.ts +3 -22
  78. package/dist/client/handlers/UIEventHandler.d.ts.map +1 -1
  79. package/dist/client/handlers/UIEventHandler.js +5 -44
  80. package/dist/common/DomainEvents.d.ts +0 -70
  81. package/dist/common/DomainEvents.d.ts.map +1 -1
  82. package/dist/common/DomainEvents.js +0 -89
  83. package/dist/contracts/expenses/index.d.ts.map +1 -1
  84. package/dist/contracts/friends/index.d.ts +1 -1
  85. package/dist/contracts/friends/index.d.ts.map +1 -1
  86. package/dist/contracts/groups/index.d.ts.map +1 -1
  87. package/dist/contracts/transactions/index.d.ts +1 -1
  88. package/dist/contracts/transactions/index.d.ts.map +1 -1
  89. package/dist/converters/ActivityLogConverters.d.ts +9 -0
  90. package/dist/converters/ActivityLogConverters.d.ts.map +1 -0
  91. package/dist/converters/ActivityLogConverters.js +39 -0
  92. package/dist/converters/EventConverterCore.d.ts +67 -0
  93. package/dist/converters/EventConverterCore.d.ts.map +1 -0
  94. package/dist/converters/EventConverterCore.js +59 -0
  95. package/dist/converters/FriendConverters.d.ts +33 -0
  96. package/dist/converters/FriendConverters.d.ts.map +1 -0
  97. package/dist/converters/FriendConverters.js +142 -0
  98. package/dist/converters/GroupConverters.d.ts +39 -0
  99. package/dist/converters/GroupConverters.d.ts.map +1 -0
  100. package/dist/converters/GroupConverters.js +160 -0
  101. package/dist/converters/GroupTransactionConverters.d.ts +57 -0
  102. package/dist/converters/GroupTransactionConverters.d.ts.map +1 -0
  103. package/dist/converters/GroupTransactionConverters.js +249 -0
  104. package/dist/converters/TransactionConverters.d.ts +51 -0
  105. package/dist/converters/TransactionConverters.d.ts.map +1 -0
  106. package/dist/converters/TransactionConverters.js +234 -0
  107. package/dist/converters/UserConverters.d.ts +51 -0
  108. package/dist/converters/UserConverters.d.ts.map +1 -0
  109. package/dist/converters/UserConverters.js +226 -0
  110. package/dist/converters/eventConverter.d.ts +10 -15
  111. package/dist/converters/eventConverter.d.ts.map +1 -1
  112. package/dist/converters/eventConverter.js +96 -352
  113. package/dist/events.d.ts +0 -1
  114. package/dist/events.d.ts.map +1 -1
  115. package/dist/events.js +1 -3
  116. package/dist/index.d.ts +6 -8
  117. package/dist/index.d.ts.map +1 -1
  118. package/dist/index.js +16 -33
  119. package/dist/store/ActivityLogEventStore.d.ts +2 -2
  120. package/dist/store/ActivityLogEventStore.d.ts.map +1 -1
  121. package/dist/store/ActivityLogEventStore.js +0 -4
  122. package/dist/store/ActivityLogModelStore.d.ts +4 -4
  123. package/dist/store/ActivityLogModelStore.d.ts.map +1 -1
  124. package/dist/store/ActivityLogModelStore.js +0 -5
  125. package/dist/store/FriendEventStore.d.ts +2 -2
  126. package/dist/store/FriendEventStore.d.ts.map +1 -1
  127. package/dist/store/FriendEventStore.js +0 -4
  128. package/dist/store/FriendModelStore.d.ts +9 -9
  129. package/dist/store/FriendModelStore.d.ts.map +1 -1
  130. package/dist/store/FriendModelStore.js +0 -5
  131. package/dist/store/GroupEventStore.d.ts +2 -2
  132. package/dist/store/GroupEventStore.d.ts.map +1 -1
  133. package/dist/store/GroupEventStore.js +0 -4
  134. package/dist/store/GroupModelStore.d.ts +6 -6
  135. package/dist/store/GroupModelStore.d.ts.map +1 -1
  136. package/dist/store/GroupModelStore.js +0 -5
  137. package/dist/store/GroupTransactionEventStore.d.ts +2 -2
  138. package/dist/store/GroupTransactionEventStore.d.ts.map +1 -1
  139. package/dist/store/GroupTransactionEventStore.js +0 -4
  140. package/dist/store/GroupTransactionModelStore.d.ts +6 -6
  141. package/dist/store/GroupTransactionModelStore.d.ts.map +1 -1
  142. package/dist/store/GroupTransactionModelStore.js +0 -5
  143. package/dist/store/ModelStore.d.ts +4 -4
  144. package/dist/store/ModelStore.d.ts.map +1 -1
  145. package/dist/store/ModelStore.js +0 -4
  146. package/dist/store/TransactionEventStore.d.ts +2 -2
  147. package/dist/store/TransactionEventStore.d.ts.map +1 -1
  148. package/dist/store/TransactionEventStore.js +0 -4
  149. package/dist/store/TransactionModelStore.d.ts +6 -6
  150. package/dist/store/TransactionModelStore.d.ts.map +1 -1
  151. package/dist/store/TransactionModelStore.js +0 -5
  152. package/dist/store/UserEventStore.d.ts +2 -2
  153. package/dist/store/UserEventStore.d.ts.map +1 -1
  154. package/dist/store/UserEventStore.js +0 -4
  155. package/dist/store/UserModelStore.d.ts +7 -7
  156. package/dist/store/UserModelStore.d.ts.map +1 -1
  157. package/dist/store/UserModelStore.js +0 -5
  158. package/package.json +1 -1
  159. package/dist/__tests__/e2e/setup/firebaseEmulator.d.ts +0 -3
  160. package/dist/__tests__/e2e/setup/firebaseEmulator.d.ts.map +0 -1
  161. package/dist/__tests__/e2e/setup/firebaseEmulator.js +0 -87
  162. package/dist/__tests__/e2e/setup/firestoreStores.d.ts +0 -28
  163. package/dist/__tests__/e2e/setup/firestoreStores.d.ts.map +0 -1
  164. package/dist/__tests__/e2e/setup/firestoreStores.js +0 -276
  165. package/dist/__tests__/e2e/setup/firestoreTestHelpers.d.ts +0 -15
  166. package/dist/__tests__/e2e/setup/firestoreTestHelpers.d.ts.map +0 -1
  167. package/dist/__tests__/e2e/setup/firestoreTestHelpers.js +0 -167
  168. package/dist/adapters/FirebaseAdminAdapter.d.ts +0 -8
  169. package/dist/adapters/FirebaseAdminAdapter.d.ts.map +0 -1
  170. package/dist/adapters/FirebaseAdminAdapter.js +0 -21
  171. package/dist/adapters/FirebaseClientAdapter.d.ts +0 -8
  172. package/dist/adapters/FirebaseClientAdapter.d.ts.map +0 -1
  173. package/dist/adapters/FirebaseClientAdapter.js +0 -22
  174. package/dist/client/handlers/UIActivityEventHandler.d.ts +0 -12
  175. package/dist/client/handlers/UIActivityEventHandler.d.ts.map +0 -1
  176. package/dist/client/handlers/UIActivityEventHandler.js +0 -14
  177. package/dist/common/EventBus.d.ts +0 -12
  178. package/dist/common/EventBus.d.ts.map +0 -1
  179. package/dist/common/EventBus.js +0 -26
  180. package/dist/common/EventBusSingleton.d.ts +0 -4
  181. package/dist/common/EventBusSingleton.d.ts.map +0 -1
  182. package/dist/common/EventBusSingleton.js +0 -18
  183. package/dist/config/environment.d.ts +0 -25
  184. package/dist/config/environment.d.ts.map +0 -1
  185. package/dist/config/environment.js +0 -77
  186. package/dist/controllers/UIEventHandler.d.ts +0 -25
  187. package/dist/controllers/UIEventHandler.d.ts.map +0 -1
  188. package/dist/controllers/UIEventHandler.js +0 -50
  189. package/dist/controllers/UserController.d.ts +0 -9
  190. package/dist/controllers/UserController.d.ts.map +0 -1
  191. package/dist/controllers/UserController.js +0 -36
@@ -2,8 +2,8 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.GroupEventHandler = void 0;
4
4
  const _1 = require(".");
5
- const DomainEvents_1 = require("./common/DomainEvents");
6
5
  const uuid_1 = require("uuid");
6
+ const EventProcessorSDK_1 = require("./EventProcessorSDK");
7
7
  class GroupEventHandler {
8
8
  constructor(modelStore, friendModelStore, userModelStore, groupEventStore, friendEventStore, activityEventHandler) {
9
9
  this.modelStore = modelStore;
@@ -13,11 +13,25 @@ class GroupEventHandler {
13
13
  this.friendEventStore = friendEventStore;
14
14
  this.activityEventHandler = activityEventHandler;
15
15
  }
16
+ shouldSkipSave(existingModel, updatedModel) {
17
+ if (!existingModel) {
18
+ return false;
19
+ }
20
+ return (existingModel.streamId === updatedModel.streamId &&
21
+ existingModel.version === updatedModel.version);
22
+ }
23
+ async handleClientEventFromRemoteListener(event) {
24
+ const existingModel = await this.modelStore.getByStreamIdWhereDeletedIsFalse(event.streamId);
25
+ const updatedModel = event.apply(existingModel);
26
+ if (!this.shouldSkipSave(existingModel, updatedModel)) {
27
+ await this.modelStore.save(updatedModel);
28
+ if ((0, EventProcessorSDK_1.isSDKInitialized)()) {
29
+ EventProcessorSDK_1.EventProcessorSDK.getInstance().emitModelChange("GroupModel", updatedModel);
30
+ }
31
+ }
32
+ }
16
33
  async handleEvent(event) {
17
34
  const eventType = event.constructor.name;
18
- if (!(0, DomainEvents_1.isValidGroupEventType)(eventType)) {
19
- throw new Error(`Unknown group event type: ${eventType}`);
20
- }
21
35
  switch (eventType) {
22
36
  case "GroupCreated":
23
37
  return await this.handleGroupCreated(event);
@@ -61,7 +75,9 @@ class GroupEventHandler {
61
75
  });
62
76
  await this.friendEventStore.addEvent(friendCreatedEvent);
63
77
  const friendModel = friendCreatedEvent.apply(undefined);
64
- await this.friendModelStore.save(friendModel);
78
+ if (!this.shouldSkipSave(undefined, friendModel)) {
79
+ await this.friendModelStore.save(friendModel);
80
+ }
65
81
  }
66
82
  const existingFriend2to1 = await this.friendModelStore.findByUserIdAndFriendIdAndDeletedIsFalse(userId2, userId1);
67
83
  if (!existingFriend2to1) {
@@ -82,13 +98,20 @@ class GroupEventHandler {
82
98
  });
83
99
  await this.friendEventStore.addEvent(friendCreatedEvent);
84
100
  const friendModel = friendCreatedEvent.apply(undefined);
85
- await this.friendModelStore.save(friendModel);
101
+ if (!this.shouldSkipSave(undefined, friendModel)) {
102
+ await this.friendModelStore.save(friendModel);
103
+ }
86
104
  }
87
105
  }
88
106
  async handleGroupCreated(event) {
89
107
  const existingModel = await this.modelStore.getByStreamIdWhereDeletedIsFalse(event.streamId);
90
108
  const updatedModel = event.apply(existingModel);
91
- await this.modelStore.save(updatedModel);
109
+ if (!this.shouldSkipSave(existingModel, updatedModel)) {
110
+ await this.modelStore.save(updatedModel);
111
+ if ((0, EventProcessorSDK_1.isSDKInitialized)()) {
112
+ EventProcessorSDK_1.EventProcessorSDK.getInstance().emitModelChange("GroupModel", updatedModel);
113
+ }
114
+ }
92
115
  const allMemberIds = event.members ?? [];
93
116
  const otherMembers = allMemberIds.filter((id) => id !== event.userId);
94
117
  for (const memberId of otherMembers) {
@@ -118,7 +141,12 @@ class GroupEventHandler {
118
141
  });
119
142
  await this.groupEventStore.addEvent(perspectiveGroupCreated);
120
143
  const perspectiveModel = perspectiveGroupCreated.apply(undefined);
121
- await this.modelStore.save(perspectiveModel);
144
+ if (!this.shouldSkipSave(undefined, perspectiveModel)) {
145
+ await this.modelStore.save(perspectiveModel);
146
+ if ((0, EventProcessorSDK_1.isSDKInitialized)()) {
147
+ EventProcessorSDK_1.EventProcessorSDK.getInstance().emitModelChange("GroupModel", perspectiveModel);
148
+ }
149
+ }
122
150
  }
123
151
  if (this.activityEventHandler) {
124
152
  await this.activityEventHandler.createActivityLog(event, existingModel, updatedModel);
@@ -128,7 +156,12 @@ class GroupEventHandler {
128
156
  async handleGroupNameChanged(event) {
129
157
  const existingModel = await this.modelStore.getByStreamIdWhereDeletedIsFalse(event.streamId);
130
158
  const updatedModel = event.apply(existingModel);
131
- await this.modelStore.save(updatedModel);
159
+ if (!this.shouldSkipSave(existingModel, updatedModel)) {
160
+ await this.modelStore.save(updatedModel);
161
+ if ((0, EventProcessorSDK_1.isSDKInitialized)()) {
162
+ EventProcessorSDK_1.EventProcessorSDK.getInstance().emitModelChange("GroupModel", updatedModel);
163
+ }
164
+ }
132
165
  const allPerspectives = await this.modelStore.findAllByGroupIdAndDeletedIsFalse(updatedModel.groupId);
133
166
  for (const perspective of allPerspectives) {
134
167
  if (perspective.streamId !== event.streamId) {
@@ -144,7 +177,12 @@ class GroupEventHandler {
144
177
  });
145
178
  await this.groupEventStore.addEvent(perspectiveEvent);
146
179
  const updatedPerspective = perspectiveEvent.apply(perspective);
147
- await this.modelStore.save(updatedPerspective);
180
+ if (!this.shouldSkipSave(perspective, updatedPerspective)) {
181
+ await this.modelStore.save(updatedPerspective);
182
+ if ((0, EventProcessorSDK_1.isSDKInitialized)()) {
183
+ EventProcessorSDK_1.EventProcessorSDK.getInstance().emitModelChange("GroupModel", updatedPerspective);
184
+ }
185
+ }
148
186
  }
149
187
  }
150
188
  if (this.activityEventHandler) {
@@ -155,7 +193,12 @@ class GroupEventHandler {
155
193
  async handleGroupDescriptionChanged(event) {
156
194
  const existingModel = await this.modelStore.getByStreamIdWhereDeletedIsFalse(event.streamId);
157
195
  const updatedModel = event.apply(existingModel);
158
- await this.modelStore.save(updatedModel);
196
+ if (!this.shouldSkipSave(existingModel, updatedModel)) {
197
+ await this.modelStore.save(updatedModel);
198
+ if ((0, EventProcessorSDK_1.isSDKInitialized)()) {
199
+ EventProcessorSDK_1.EventProcessorSDK.getInstance().emitModelChange("GroupModel", updatedModel);
200
+ }
201
+ }
159
202
  const allPerspectives = await this.modelStore.findAllByGroupIdAndDeletedIsFalse(updatedModel.groupId);
160
203
  for (const perspective of allPerspectives) {
161
204
  if (perspective.streamId !== event.streamId) {
@@ -171,7 +214,12 @@ class GroupEventHandler {
171
214
  });
172
215
  await this.groupEventStore.addEvent(perspectiveEvent);
173
216
  const updatedPerspective = perspectiveEvent.apply(perspective);
174
- await this.modelStore.save(updatedPerspective);
217
+ if (!this.shouldSkipSave(perspective, updatedPerspective)) {
218
+ await this.modelStore.save(updatedPerspective);
219
+ if ((0, EventProcessorSDK_1.isSDKInitialized)()) {
220
+ EventProcessorSDK_1.EventProcessorSDK.getInstance().emitModelChange("GroupModel", updatedPerspective);
221
+ }
222
+ }
175
223
  }
176
224
  }
177
225
  if (this.activityEventHandler) {
@@ -185,7 +233,12 @@ class GroupEventHandler {
185
233
  throw new Error(`Group model not found for streamId ${event.streamId}`);
186
234
  }
187
235
  const updatedModel = event.apply(existingModel);
188
- await this.modelStore.save(updatedModel);
236
+ if (!this.shouldSkipSave(existingModel, updatedModel)) {
237
+ await this.modelStore.save(updatedModel);
238
+ if ((0, EventProcessorSDK_1.isSDKInitialized)()) {
239
+ EventProcessorSDK_1.EventProcessorSDK.getInstance().emitModelChange("GroupModel", updatedModel);
240
+ }
241
+ }
189
242
  const allMemberIds = updatedModel.members ?? [];
190
243
  for (const memberId of event.members) {
191
244
  const memberUser = await this.userModelStore.getByStreamIdWhereDeletedIsFalse(memberId);
@@ -214,7 +267,12 @@ class GroupEventHandler {
214
267
  });
215
268
  await this.groupEventStore.addEvent(perspectiveGroupCreated);
216
269
  const perspectiveModel = perspectiveGroupCreated.apply(undefined);
217
- await this.modelStore.save(perspectiveModel);
270
+ if (!this.shouldSkipSave(undefined, perspectiveModel)) {
271
+ await this.modelStore.save(perspectiveModel);
272
+ if ((0, EventProcessorSDK_1.isSDKInitialized)()) {
273
+ EventProcessorSDK_1.EventProcessorSDK.getInstance().emitModelChange("GroupModel", perspectiveModel);
274
+ }
275
+ }
218
276
  }
219
277
  const allPerspectives = await this.modelStore.findAllByGroupIdAndDeletedIsFalse(updatedModel.groupId);
220
278
  for (const perspective of allPerspectives) {
@@ -232,7 +290,12 @@ class GroupEventHandler {
232
290
  });
233
291
  await this.groupEventStore.addEvent(perspectiveEvent);
234
292
  const updatedPerspective = perspectiveEvent.apply(perspective);
235
- await this.modelStore.save(updatedPerspective);
293
+ if (!this.shouldSkipSave(perspective, updatedPerspective)) {
294
+ await this.modelStore.save(updatedPerspective);
295
+ if ((0, EventProcessorSDK_1.isSDKInitialized)()) {
296
+ EventProcessorSDK_1.EventProcessorSDK.getInstance().emitModelChange("GroupModel", updatedPerspective);
297
+ }
298
+ }
236
299
  }
237
300
  }
238
301
  if (this.activityEventHandler) {
@@ -243,7 +306,12 @@ class GroupEventHandler {
243
306
  async handleGroupMembersRemoved(event) {
244
307
  const existingModel = await this.modelStore.getByStreamIdWhereDeletedIsFalse(event.streamId);
245
308
  const updatedModel = event.apply(existingModel);
246
- await this.modelStore.save(updatedModel);
309
+ if (!this.shouldSkipSave(existingModel, updatedModel)) {
310
+ await this.modelStore.save(updatedModel);
311
+ if ((0, EventProcessorSDK_1.isSDKInitialized)()) {
312
+ EventProcessorSDK_1.EventProcessorSDK.getInstance().emitModelChange("GroupModel", updatedModel);
313
+ }
314
+ }
247
315
  const allPerspectives = await this.modelStore.findAllByGroupIdAndDeletedIsFalse(updatedModel.groupId);
248
316
  for (const perspective of allPerspectives) {
249
317
  if (perspective.streamId !== event.streamId) {
@@ -259,7 +327,12 @@ class GroupEventHandler {
259
327
  });
260
328
  await this.groupEventStore.addEvent(perspectiveEvent);
261
329
  const updatedPerspective = perspectiveEvent.apply(perspective);
262
- await this.modelStore.save(updatedPerspective);
330
+ if (!this.shouldSkipSave(perspective, updatedPerspective)) {
331
+ await this.modelStore.save(updatedPerspective);
332
+ if ((0, EventProcessorSDK_1.isSDKInitialized)()) {
333
+ EventProcessorSDK_1.EventProcessorSDK.getInstance().emitModelChange("GroupModel", updatedPerspective);
334
+ }
335
+ }
263
336
  }
264
337
  }
265
338
  if (this.activityEventHandler) {
@@ -270,7 +343,12 @@ class GroupEventHandler {
270
343
  async handleGroupDeleted(event) {
271
344
  const existingModel = await this.modelStore.getByStreamIdWhereDeletedIsFalse(event.streamId);
272
345
  const updatedModel = event.apply(existingModel);
273
- await this.modelStore.save(updatedModel);
346
+ if (!this.shouldSkipSave(existingModel, updatedModel)) {
347
+ await this.modelStore.save(updatedModel);
348
+ if ((0, EventProcessorSDK_1.isSDKInitialized)()) {
349
+ EventProcessorSDK_1.EventProcessorSDK.getInstance().emitModelChange("GroupModel", updatedModel);
350
+ }
351
+ }
274
352
  if (this.activityEventHandler) {
275
353
  await this.activityEventHandler.createActivityLog(event, existingModel, updatedModel);
276
354
  }
@@ -1 +1 @@
1
- {"version":3,"file":"GroupEvents.d.ts","sourceRoot":"","sources":["../src/GroupEvents.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"GroupEvents.d.ts","sourceRoot":"","sources":["../src/GroupEvents.ts"],"names":[],"mappings":"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"}
@@ -4,8 +4,9 @@ import { GroupTransactionEventStore } from ".";
4
4
  import { GroupModelStore } from ".";
5
5
  import { TransactionEventStore } from ".";
6
6
  import { TransactionModelStore } from ".";
7
+ import { BaseEventHandler } from "./BaseEventHandler";
7
8
  import { ActivityEventHandler } from "./ActivityEventHandler";
8
- export declare class GroupTransactionEventHandler {
9
+ export declare class GroupTransactionEventHandler implements BaseEventHandler<GroupTransactionEvent> {
9
10
  private modelStore;
10
11
  private eventStore;
11
12
  private groupModelStore;
@@ -13,6 +14,8 @@ export declare class GroupTransactionEventHandler {
13
14
  private transactionModelStore;
14
15
  private activityEventHandler?;
15
16
  constructor(modelStore: GroupTransactionModelStore, eventStore: GroupTransactionEventStore, groupModelStore: GroupModelStore, transactionEventStore: TransactionEventStore, transactionModelStore: TransactionModelStore, activityEventHandler?: ActivityEventHandler | undefined);
17
+ private shouldSkipSave;
18
+ handleClientEventFromRemoteListener(event: GroupTransactionEvent): Promise<void>;
16
19
  handleEvent(event: GroupTransactionEvent): Promise<GroupTransactionModel>;
17
20
  private calculateNetBalances;
18
21
  private createFriendTransactions;
@@ -1 +1 @@
1
- {"version":3,"file":"GroupTransactionEventHandler.d.ts","sourceRoot":"","sources":["../src/GroupTransactionEventHandler.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,uBAAuB,EACvB,mCAAmC,EACnC,qBAAqB,EAIrB,qBAAqB,EAIxB,MAAM,GAAG,CAAC;AACX,OAAO,EAAE,0BAA0B,EAAE,MAAM,GAAG,CAAC;AAC/C,OAAO,EAAE,0BAA0B,EAAE,MAAM,GAAG,CAAC;AAC/C,OAAO,EAAE,eAAe,EAAE,MAAM,GAAG,CAAC;AACpC,OAAO,EAAE,qBAAqB,EAAE,MAAM,GAAG,CAAC;AAC1C,OAAO,EAAE,qBAAqB,EAAE,MAAM,GAAG,CAAC;AAC1C,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAK9D,qBAAa,4BAA4B;IAEjC,OAAO,CAAC,UAAU;IAClB,OAAO,CAAC,UAAU;IAClB,OAAO,CAAC,eAAe;IACvB,OAAO,CAAC,qBAAqB;IAC7B,OAAO,CAAC,qBAAqB;IAC7B,OAAO,CAAC,oBAAoB,CAAC;gBALrB,UAAU,EAAE,0BAA0B,EACtC,UAAU,EAAE,0BAA0B,EACtC,eAAe,EAAE,eAAe,EAChC,qBAAqB,EAAE,qBAAqB,EAC5C,qBAAqB,EAAE,qBAAqB,EAC5C,oBAAoB,CAAC,EAAE,oBAAoB,YAAA;IAGjD,WAAW,CACb,KAAK,EAAE,qBAAqB,GAC7B,OAAO,CAAC,qBAAqB,CAAC;IA2BjC,OAAO,CAAC,oBAAoB;YAad,wBAAwB;YA0FxB,wBAAwB;IAatC,OAAO,CAAC,6BAA6B;YAsDvB,gCAAgC;IA+FxC,6BAA6B,CAC/B,KAAK,EAAE,uBAAuB,GAC/B,OAAO,CAAC,qBAAqB,CAAC;IAkE3B,yCAAyC,CAC3C,KAAK,EAAE,mCAAmC,GAC3C,OAAO,CAAC,qBAAqB,CAAC;CAiFpC"}
1
+ {"version":3,"file":"GroupTransactionEventHandler.d.ts","sourceRoot":"","sources":["../src/GroupTransactionEventHandler.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,uBAAuB,EACvB,mCAAmC,EACnC,qBAAqB,EAIrB,qBAAqB,EAKxB,MAAM,GAAG,CAAC;AACX,OAAO,EAAE,0BAA0B,EAAE,MAAM,GAAG,CAAC;AAC/C,OAAO,EAAE,0BAA0B,EAAE,MAAM,GAAG,CAAC;AAC/C,OAAO,EAAE,eAAe,EAAE,MAAM,GAAG,CAAC;AACpC,OAAO,EAAE,qBAAqB,EAAE,MAAM,GAAG,CAAC;AAC1C,OAAO,EAAE,qBAAqB,EAAE,MAAM,GAAG,CAAC;AAC1C,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAK9D,qBAAa,4BACT,YAAW,gBAAgB,CAAC,qBAAqB,CAAC;IAG9C,OAAO,CAAC,UAAU;IAClB,OAAO,CAAC,UAAU;IAClB,OAAO,CAAC,eAAe;IACvB,OAAO,CAAC,qBAAqB;IAC7B,OAAO,CAAC,qBAAqB;IAC7B,OAAO,CAAC,oBAAoB,CAAC;gBALrB,UAAU,EAAE,0BAA0B,EACtC,UAAU,EAAE,0BAA0B,EACtC,eAAe,EAAE,eAAe,EAChC,qBAAqB,EAAE,qBAAqB,EAC5C,qBAAqB,EAAE,qBAAqB,EAC5C,oBAAoB,CAAC,EAAE,oBAAoB,YAAA;IAGvD,OAAO,CAAC,cAAc;IAaT,mCAAmC,CAC5C,KAAK,EAAE,qBAAqB,GAC7B,OAAO,CAAC,IAAI,CAAC;IAmBV,WAAW,CACb,KAAK,EAAE,qBAAqB,GAC7B,OAAO,CAAC,qBAAqB,CAAC;IAsBjC,OAAO,CAAC,oBAAoB;YAad,wBAAwB;YA8FxB,wBAAwB;IAatC,OAAO,CAAC,6BAA6B;YAsDvB,gCAAgC;IAqGxC,6BAA6B,CAC/B,KAAK,EAAE,uBAAuB,GAC/B,OAAO,CAAC,qBAAqB,CAAC;IAkF3B,yCAAyC,CAC3C,KAAK,EAAE,mCAAmC,GAC3C,OAAO,CAAC,qBAAqB,CAAC;CAsGpC"}
@@ -2,9 +2,9 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.GroupTransactionEventHandler = void 0;
4
4
  const _1 = require(".");
5
- const DomainEvents_1 = require("./common/DomainEvents");
6
5
  const splitTypeUtils_1 = require("./utils/splitTypeUtils");
7
6
  const uuid_1 = require("uuid");
7
+ const EventProcessorSDK_1 = require("./EventProcessorSDK");
8
8
  class GroupTransactionEventHandler {
9
9
  constructor(modelStore, eventStore, groupModelStore, transactionEventStore, transactionModelStore, activityEventHandler) {
10
10
  this.modelStore = modelStore;
@@ -14,14 +14,28 @@ class GroupTransactionEventHandler {
14
14
  this.transactionModelStore = transactionModelStore;
15
15
  this.activityEventHandler = activityEventHandler;
16
16
  }
17
+ shouldSkipSave(existingModel, updatedModel) {
18
+ if (!existingModel) {
19
+ return false;
20
+ }
21
+ return (existingModel.streamId === updatedModel.streamId &&
22
+ existingModel.version === updatedModel.version);
23
+ }
24
+ async handleClientEventFromRemoteListener(event) {
25
+ const existingModel = await this.modelStore.getByStreamIdWhereDeletedIsFalse(event.streamId);
26
+ const updatedModel = event.apply(existingModel);
27
+ if (!this.shouldSkipSave(existingModel, updatedModel)) {
28
+ await this.modelStore.save(updatedModel);
29
+ if ((0, EventProcessorSDK_1.isSDKInitialized)()) {
30
+ EventProcessorSDK_1.EventProcessorSDK.getInstance().emitModelChange("GroupTransactionModel", updatedModel);
31
+ }
32
+ }
33
+ }
17
34
  async handleEvent(event) {
18
35
  if (_1.residence.isClient) {
19
36
  await this.eventStore.addEvent(event);
20
37
  }
21
38
  const eventType = event.constructor.name;
22
- if (!(0, DomainEvents_1.isValidGroupTransactionEventType)(eventType)) {
23
- throw new Error(`Unknown group transaction event type: ${eventType}`);
24
- }
25
39
  switch (eventType) {
26
40
  case "GroupTransactionCreated":
27
41
  return await this.handleGroupTransactionCreated(event);
@@ -78,7 +92,9 @@ class GroupTransactionEventHandler {
78
92
  });
79
93
  await this.transactionEventStore.addEvent(creditorTransactionEvent);
80
94
  const creditorModel = creditorTransactionEvent.apply(undefined);
81
- await this.transactionModelStore.save(creditorModel);
95
+ if (!this.shouldSkipSave(undefined, creditorModel)) {
96
+ await this.transactionModelStore.save(creditorModel);
97
+ }
82
98
  const debtorStreamId = (0, uuid_1.v4)();
83
99
  const debtorTransactionEvent = new _1.TransactionCreated({
84
100
  eventId: (0, uuid_1.v4)(),
@@ -102,7 +118,9 @@ class GroupTransactionEventHandler {
102
118
  });
103
119
  await this.transactionEventStore.addEvent(debtorTransactionEvent);
104
120
  const debtorModel = debtorTransactionEvent.apply(undefined);
105
- await this.transactionModelStore.save(debtorModel);
121
+ if (!this.shouldSkipSave(undefined, debtorModel)) {
122
+ await this.transactionModelStore.save(debtorModel);
123
+ }
106
124
  creditor.amount -= transactionAmount;
107
125
  debtor.amount -= transactionAmount;
108
126
  }
@@ -176,7 +194,9 @@ class GroupTransactionEventHandler {
176
194
  });
177
195
  await this.transactionEventStore.addEvent(updateEvent);
178
196
  const updatedModel = updateEvent.apply(existingTx);
179
- await this.transactionModelStore.save(updatedModel);
197
+ if (!this.shouldSkipSave(existingTx, updatedModel)) {
198
+ await this.transactionModelStore.save(updatedModel);
199
+ }
180
200
  }
181
201
  requiredTransactions.delete(key);
182
202
  }
@@ -192,7 +212,9 @@ class GroupTransactionEventHandler {
192
212
  });
193
213
  await this.transactionEventStore.addEvent(deleteEvent);
194
214
  const deletedModel = deleteEvent.apply(existingTx);
195
- await this.transactionModelStore.save(deletedModel);
215
+ if (!this.shouldSkipSave(existingTx, deletedModel)) {
216
+ await this.transactionModelStore.save(deletedModel);
217
+ }
196
218
  }
197
219
  }
198
220
  }
@@ -221,13 +243,20 @@ class GroupTransactionEventHandler {
221
243
  });
222
244
  await this.transactionEventStore.addEvent(createEvent);
223
245
  const model = createEvent.apply(undefined);
224
- await this.transactionModelStore.save(model);
246
+ if (!this.shouldSkipSave(undefined, model)) {
247
+ await this.transactionModelStore.save(model);
248
+ }
225
249
  }
226
250
  }
227
251
  async handleGroupTransactionCreated(event) {
228
252
  const existingModel = await this.modelStore.getByStreamIdWhereDeletedIsFalse(event.streamId);
229
253
  const updatedModel = event.apply(existingModel);
230
- await this.modelStore.save(updatedModel);
254
+ if (!this.shouldSkipSave(existingModel, updatedModel)) {
255
+ await this.modelStore.save(updatedModel);
256
+ if ((0, EventProcessorSDK_1.isSDKInitialized)()) {
257
+ EventProcessorSDK_1.EventProcessorSDK.getInstance().emitModelChange("GroupTransactionModel", updatedModel);
258
+ }
259
+ }
231
260
  if (this.activityEventHandler) {
232
261
  await this.activityEventHandler.createActivityLog(event, existingModel, updatedModel);
233
262
  }
@@ -256,7 +285,12 @@ class GroupTransactionEventHandler {
256
285
  });
257
286
  await this.eventStore.addEvent(perspectiveEvent);
258
287
  const perspectiveModel = perspectiveEvent.apply(undefined);
259
- await this.modelStore.save(perspectiveModel);
288
+ if (!this.shouldSkipSave(undefined, perspectiveModel)) {
289
+ await this.modelStore.save(perspectiveModel);
290
+ if ((0, EventProcessorSDK_1.isSDKInitialized)()) {
291
+ EventProcessorSDK_1.EventProcessorSDK.getInstance().emitModelChange("GroupTransactionModel", perspectiveModel);
292
+ }
293
+ }
260
294
  if (this.activityEventHandler) {
261
295
  await this.activityEventHandler.createActivityLog(perspectiveEvent, undefined, perspectiveModel);
262
296
  }
@@ -273,7 +307,12 @@ class GroupTransactionEventHandler {
273
307
  const oldMembers = existingModel.originalTransaction.members;
274
308
  const newMembers = event.originalTransaction.members;
275
309
  const updatedModel = event.apply(existingModel);
276
- await this.modelStore.save(updatedModel);
310
+ if (!this.shouldSkipSave(existingModel, updatedModel)) {
311
+ await this.modelStore.save(updatedModel);
312
+ if ((0, EventProcessorSDK_1.isSDKInitialized)()) {
313
+ EventProcessorSDK_1.EventProcessorSDK.getInstance().emitModelChange("GroupTransactionModel", updatedModel);
314
+ }
315
+ }
277
316
  if (this.activityEventHandler) {
278
317
  await this.activityEventHandler.createActivityLog(event, existingModel, updatedModel);
279
318
  }
@@ -298,7 +337,12 @@ class GroupTransactionEventHandler {
298
337
  const existingPerspectiveModel = await this.modelStore.findByUserIdAndTransactionId(groupPerspective.userId, updatedModel.transactionId);
299
338
  if (existingPerspectiveModel) {
300
339
  const perspectiveModel = perspectiveEvent.apply(existingPerspectiveModel);
301
- await this.modelStore.save(perspectiveModel);
340
+ if (!this.shouldSkipSave(existingPerspectiveModel, perspectiveModel)) {
341
+ await this.modelStore.save(perspectiveModel);
342
+ if ((0, EventProcessorSDK_1.isSDKInitialized)()) {
343
+ EventProcessorSDK_1.EventProcessorSDK.getInstance().emitModelChange("GroupTransactionModel", perspectiveModel);
344
+ }
345
+ }
302
346
  if (this.activityEventHandler) {
303
347
  await this.activityEventHandler.createActivityLog(perspectiveEvent, existingPerspectiveModel, perspectiveModel);
304
348
  }
@@ -1 +1 @@
1
- {"version":3,"file":"GroupTransactionEvents.d.ts","sourceRoot":"","sources":["../src/GroupTransactionEvents.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"GroupTransactionEvents.d.ts","sourceRoot":"","sources":["../src/GroupTransactionEvents.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ import { Model } from "./common/Model";
2
+ import { Observable, Subscription } from "rxjs";
3
+ export interface ModelChange {
4
+ modelType: string;
5
+ model: Model;
6
+ }
7
+ export declare class ModelChangeEmitter {
8
+ private subject;
9
+ subscribe(next: (change: ModelChange) => void, error?: (error: Error) => void): Subscription;
10
+ asObservable(): Observable<ModelChange>;
11
+ emit(modelType: string, model: Model): void;
12
+ clear(): void;
13
+ hasListeners(): boolean;
14
+ }
15
+ //# sourceMappingURL=ModelChangeEmitter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ModelChangeEmitter.d.ts","sourceRoot":"","sources":["../src/ModelChangeEmitter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AACvC,OAAO,EAAE,UAAU,EAAW,YAAY,EAAE,MAAM,MAAM,CAAC;AAEzD,MAAM,WAAW,WAAW;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,KAAK,CAAC;CAChB;AAED,qBAAa,kBAAkB;IAC3B,OAAO,CAAC,OAAO,CAA8B;IAE7C,SAAS,CACL,IAAI,EAAE,CAAC,MAAM,EAAE,WAAW,KAAK,IAAI,EACnC,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,GAC/B,YAAY;IAIf,YAAY,IAAI,UAAU,CAAC,WAAW,CAAC;IAIvC,IAAI,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,GAAG,IAAI;IAW3C,KAAK,IAAI,IAAI;IAKb,YAAY,IAAI,OAAO;CAG1B"}
@@ -0,0 +1,31 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ModelChangeEmitter = void 0;
4
+ const rxjs_1 = require("rxjs");
5
+ class ModelChangeEmitter {
6
+ constructor() {
7
+ this.subject = new rxjs_1.Subject();
8
+ }
9
+ subscribe(next, error) {
10
+ return this.subject.subscribe({ next, error });
11
+ }
12
+ asObservable() {
13
+ return this.subject.asObservable();
14
+ }
15
+ emit(modelType, model) {
16
+ try {
17
+ this.subject.next({ modelType, model });
18
+ }
19
+ catch (error) {
20
+ console.error(`Error in ModelChangeEmitter listener for ${modelType}:`, error);
21
+ }
22
+ }
23
+ clear() {
24
+ this.subject.complete();
25
+ this.subject = new rxjs_1.Subject();
26
+ }
27
+ hasListeners() {
28
+ return this.subject.observed;
29
+ }
30
+ }
31
+ exports.ModelChangeEmitter = ModelChangeEmitter;
@@ -1,11 +1,13 @@
1
- import { TransactionEvent, TransactionEventStore, TransactionModel, TransactionModelStore, UserModelStore } from ".";
1
+ import { TransactionEvent, TransactionEventStore, TransactionModel, TransactionModelStore } from ".";
2
+ import { BaseEventHandler } from "./BaseEventHandler";
2
3
  import { ActivityEventHandler } from "./ActivityEventHandler";
3
- export declare class TransactionEventHandler {
4
+ export declare class TransactionEventHandler implements BaseEventHandler<TransactionEvent> {
4
5
  private modelStore;
5
6
  private eventStore;
6
- private txUserModelStore;
7
7
  private activityEventHandler?;
8
- constructor(modelStore: TransactionModelStore, eventStore: TransactionEventStore, txUserModelStore: UserModelStore, activityEventHandler?: ActivityEventHandler | undefined);
8
+ constructor(modelStore: TransactionModelStore, eventStore: TransactionEventStore, activityEventHandler?: ActivityEventHandler | undefined);
9
+ private shouldSkipSave;
10
+ handleClientEventFromRemoteListener(event: TransactionEvent): Promise<void>;
9
11
  handleEvent(event: TransactionEvent): Promise<TransactionModel>;
10
12
  private createMirrorEvent;
11
13
  }
@@ -1 +1 @@
1
- {"version":3,"file":"TransactionEventHandler.d.ts","sourceRoot":"","sources":["../src/TransactionEventHandler.ts"],"names":[],"mappings":"AAAA,OAAO,EASH,gBAAgB,EAChB,qBAAqB,EACrB,gBAAgB,EAChB,qBAAqB,EACrB,cAAc,EACjB,MAAM,GAAG,CAAC;AACX,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAS9D,qBAAa,uBAAuB;IAE5B,OAAO,CAAC,UAAU;IAClB,OAAO,CAAC,UAAU;IAClB,OAAO,CAAC,gBAAgB;IACxB,OAAO,CAAC,oBAAoB,CAAC;gBAHrB,UAAU,EAAE,qBAAqB,EACjC,UAAU,EAAE,qBAAqB,EACjC,gBAAgB,EAAE,cAAc,EAChC,oBAAoB,CAAC,EAAE,oBAAoB,YAAA;IAGjD,WAAW,CAAC,KAAK,EAAE,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,CAAC;YA6BvD,iBAAiB;CAgLlC"}
1
+ {"version":3,"file":"TransactionEventHandler.d.ts","sourceRoot":"","sources":["../src/TransactionEventHandler.ts"],"names":[],"mappings":"AAAA,OAAO,EAUH,gBAAgB,EAChB,qBAAqB,EACrB,gBAAgB,EAChB,qBAAqB,EACxB,MAAM,GAAG,CAAC;AACX,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAQ9D,qBAAa,uBACT,YAAW,gBAAgB,CAAC,gBAAgB,CAAC;IAGzC,OAAO,CAAC,UAAU;IAClB,OAAO,CAAC,UAAU;IAClB,OAAO,CAAC,oBAAoB,CAAC;gBAFrB,UAAU,EAAE,qBAAqB,EACjC,UAAU,EAAE,qBAAqB,EACjC,oBAAoB,CAAC,EAAE,oBAAoB,YAAA;IAGvD,OAAO,CAAC,cAAc;IAaT,mCAAmC,CAC5C,KAAK,EAAE,gBAAgB,GACxB,OAAO,CAAC,IAAI,CAAC;IAeV,WAAW,CAAC,KAAK,EAAE,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,CAAC;YA6BvD,iBAAiB;CA6KlC"}
@@ -2,40 +2,50 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.TransactionEventHandler = void 0;
4
4
  const _1 = require(".");
5
- const DomainEvents_1 = require("./common/DomainEvents");
6
5
  const splitTypeUtils_1 = require("./utils/splitTypeUtils");
7
- const userPathUtils_1 = require("./utils/userPathUtils");
8
6
  const uuid_1 = require("uuid");
7
+ const EventProcessorSDK_1 = require("./EventProcessorSDK");
9
8
  class TransactionEventHandler {
10
- constructor(modelStore, eventStore, txUserModelStore, activityEventHandler) {
9
+ constructor(modelStore, eventStore, activityEventHandler) {
11
10
  this.modelStore = modelStore;
12
11
  this.eventStore = eventStore;
13
- this.txUserModelStore = txUserModelStore;
14
12
  this.activityEventHandler = activityEventHandler;
15
13
  }
16
- async handleEvent(event) {
17
- const eventType = event.constructor.name;
18
- if (!(0, DomainEvents_1.isValidTransactionEventType)(eventType)) {
19
- throw new Error(`Unknown transaction event type: ${eventType}`);
14
+ shouldSkipSave(existingModel, updatedModel) {
15
+ if (!existingModel) {
16
+ return false;
20
17
  }
18
+ return (existingModel.streamId === updatedModel.streamId &&
19
+ existingModel.version === updatedModel.version);
20
+ }
21
+ async handleClientEventFromRemoteListener(event) {
21
22
  const existingModel = await this.modelStore.getByStreamIdWhereDeletedIsFalse(event.streamId);
22
23
  const model = event.apply(existingModel);
23
- await this.modelStore.save(model);
24
- if (_1.residence.isClient) {
25
- await this.eventStore.addEvent(event);
26
- if (this.activityEventHandler) {
27
- await this.activityEventHandler.createActivityLog(event, existingModel, model);
28
- }
24
+ if (!this.shouldSkipSave(existingModel, model)) {
25
+ await this.modelStore.save(model);
26
+ EventProcessorSDK_1.EventProcessorSDK.getInstance().emitModelChange("TransactionModel", model);
29
27
  }
30
- else {
31
- await this.createMirrorEvent(event, model);
28
+ }
29
+ async handleEvent(event) {
30
+ const existingModel = await this.modelStore.getByStreamIdWhereDeletedIsFalse(event.streamId);
31
+ const model = event.apply(existingModel);
32
+ if (!this.shouldSkipSave(existingModel, model)) {
33
+ await this.modelStore.save(model);
34
+ if (_1.residence.isClient) {
35
+ await this.eventStore.addEvent(event);
36
+ EventProcessorSDK_1.EventProcessorSDK.getInstance().emitModelChange("TransactionModel", model);
37
+ if (this.activityEventHandler) {
38
+ await this.activityEventHandler.createActivityLog(event, existingModel, model);
39
+ }
40
+ }
41
+ else {
42
+ await this.createMirrorEvent(event, model);
43
+ }
32
44
  }
33
45
  return model;
34
46
  }
35
47
  async createMirrorEvent(originalEvent, transactionModel) {
36
48
  const eventType = originalEvent.constructor.name;
37
- const recipientUserModel = await this.txUserModelStore.getByStreamId(transactionModel.recipientUserId);
38
- (0, userPathUtils_1.getUserEventPath)(recipientUserModel, transactionModel.recipientUserId);
39
49
  const existingMirrorModel = await this.modelStore.findByUserAndLogicalTransactionId(transactionModel.recipientUserId, transactionModel.userId, transactionModel.logicalTransactionId);
40
50
  const mirrorStreamId = existingMirrorModel
41
51
  ? existingMirrorModel.streamId
@@ -162,9 +172,11 @@ class TransactionEventHandler {
162
172
  }
163
173
  await this.eventStore.addEvent(mirrorEvent);
164
174
  const updatedModel = mirrorEvent.apply(existingMirrorModel);
165
- await this.modelStore.save(updatedModel);
166
- if (this.activityEventHandler) {
167
- await this.activityEventHandler.createActivityLog(mirrorEvent, existingMirrorModel, updatedModel);
175
+ if (!this.shouldSkipSave(existingMirrorModel, updatedModel)) {
176
+ await this.modelStore.save(updatedModel);
177
+ if (this.activityEventHandler) {
178
+ await this.activityEventHandler.createActivityLog(mirrorEvent, existingMirrorModel, updatedModel);
179
+ }
168
180
  }
169
181
  }
170
182
  }