@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,12 +1,13 @@
1
- import { Event, Model } from '.';
2
- import { ActivityLogModelStore } from '.';
3
- import { ActivityLogEventStore } from '.';
4
- import { UserModelStore } from '.';
1
+ import { Event, Model } from ".";
2
+ import { ActivityLogModelStore } from ".";
3
+ import { ActivityLogEventStore } from ".";
4
+ import { UserModelStore } from ".";
5
5
  export declare class ActivityEventHandler {
6
6
  private activityLogModelStore;
7
7
  private activityLogEventStore;
8
8
  private userModelStore;
9
9
  constructor(activityLogModelStore: ActivityLogModelStore, activityLogEventStore: ActivityLogEventStore, userModelStore: UserModelStore);
10
+ private shouldSkipSave;
10
11
  createActivityLog(event: Event, existingModel: Model | undefined, updatedModel: Model): Promise<void>;
11
12
  }
12
13
  //# sourceMappingURL=ActivityEventHandler.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ActivityEventHandler.d.ts","sourceRoot":"","sources":["../src/ActivityEventHandler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,KAAK,EAAE,KAAK,EAA8C,MAAM,GAAG,CAAC;AAC5E,OAAO,EAAC,qBAAqB,EAAC,MAAM,GAAG,CAAC;AACxC,OAAO,EAAC,qBAAqB,EAAC,MAAM,GAAG,CAAC;AACxC,OAAO,EAAC,cAAc,EAAC,MAAM,GAAG,CAAC;AAEjC,qBAAa,oBAAoB;IAEzB,OAAO,CAAC,qBAAqB;IAC7B,OAAO,CAAC,qBAAqB;IAC7B,OAAO,CAAC,cAAc;gBAFd,qBAAqB,EAAE,qBAAqB,EAC5C,qBAAqB,EAAE,qBAAqB,EAC5C,cAAc,EAAE,cAAc;IAGpC,iBAAiB,CAAC,KAAK,EAAE,KAAK,EAAE,aAAa,EAAE,KAAK,GAAG,SAAS,EAAE,YAAY,EAAE,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC;CA2B9G"}
1
+ {"version":3,"file":"ActivityEventHandler.d.ts","sourceRoot":"","sources":["../src/ActivityEventHandler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,KAAK,EAA+C,MAAM,GAAG,CAAC;AAC9E,OAAO,EAAE,qBAAqB,EAAE,MAAM,GAAG,CAAC;AAC1C,OAAO,EAAE,qBAAqB,EAAE,MAAM,GAAG,CAAC;AAC1C,OAAO,EAAE,cAAc,EAAE,MAAM,GAAG,CAAC;AAGnC,qBAAa,oBAAoB;IAEzB,OAAO,CAAC,qBAAqB;IAC7B,OAAO,CAAC,qBAAqB;IAC7B,OAAO,CAAC,cAAc;gBAFd,qBAAqB,EAAE,qBAAqB,EAC5C,qBAAqB,EAAE,qBAAqB,EAC5C,cAAc,EAAE,cAAc;IAG1C,OAAO,CAAC,cAAc;IAahB,iBAAiB,CACnB,KAAK,EAAE,KAAK,EACZ,aAAa,EAAE,KAAK,GAAG,SAAS,EAChC,YAAY,EAAE,KAAK,GACpB,OAAO,CAAC,IAAI,CAAC;CAsCnB"}
@@ -2,12 +2,20 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.ActivityEventHandler = void 0;
4
4
  const _1 = require(".");
5
+ const EventProcessorSDK_1 = require("./EventProcessorSDK");
5
6
  class ActivityEventHandler {
6
7
  constructor(activityLogModelStore, activityLogEventStore, userModelStore) {
7
8
  this.activityLogModelStore = activityLogModelStore;
8
9
  this.activityLogEventStore = activityLogEventStore;
9
10
  this.userModelStore = userModelStore;
10
11
  }
12
+ shouldSkipSave(existingModel, updatedModel) {
13
+ if (!existingModel) {
14
+ return false;
15
+ }
16
+ return (existingModel.streamId === updatedModel.streamId &&
17
+ existingModel.version === updatedModel.version);
18
+ }
11
19
  async createActivityLog(event, existingModel, updatedModel) {
12
20
  if (!event.activityLog) {
13
21
  return;
@@ -29,7 +37,12 @@ class ActivityEventHandler {
29
37
  const activityLogEvent = new _1.ActivityLogCreated(activityLogProps);
30
38
  const activityLogModel = activityLogEvent.apply();
31
39
  await this.activityLogEventStore.addEvent(activityLogEvent);
32
- await this.activityLogModelStore.save(activityLogModel);
40
+ if (!this.shouldSkipSave(undefined, activityLogModel)) {
41
+ await this.activityLogModelStore.save(activityLogModel);
42
+ if ((0, EventProcessorSDK_1.isSDKInitialized)()) {
43
+ EventProcessorSDK_1.EventProcessorSDK.getInstance().emitModelChange("ActivityLogModel", activityLogModel);
44
+ }
45
+ }
33
46
  }
34
47
  }
35
48
  exports.ActivityEventHandler = ActivityEventHandler;
@@ -1,5 +1,5 @@
1
- import { ActivityLogEvent } from './common/DomainEvents';
2
- import { Model } from './common/Model';
1
+ import { ActivityLogEvent } from "./common/DomainEvents";
2
+ import { Model } from "./common/Model";
3
3
  export declare enum SourceType {
4
4
  Transaction = "Transaction",
5
5
  User = "User",
@@ -15,6 +15,7 @@ export interface ActivityLogModel extends Model {
15
15
  date: Date;
16
16
  }
17
17
  export interface ActivityLogCreatedProps {
18
+ eventId: string;
18
19
  userId: string;
19
20
  activityByUid: string;
20
21
  sourceStreamId: string;
@@ -28,6 +29,7 @@ export interface ActivityLogCreatedProps {
28
29
  systemGenerated: boolean;
29
30
  }
30
31
  export declare class ActivityLogCreated implements ActivityLogEvent {
32
+ eventId: string;
31
33
  userId: string;
32
34
  activityByUid: string;
33
35
  sourceStreamId: string;
@@ -1 +1 @@
1
- {"version":3,"file":"ActivityLogEvents.d.ts","sourceRoot":"","sources":["../src/ActivityLogEvents.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAEvC,oBAAY,UAAU;IACpB,WAAW,gBAAgB;IAC3B,IAAI,SAAS;IACb,MAAM,WAAW;IACjB,KAAK,UAAU;IACf,gBAAgB,qBAAqB;CACtC;AAED,MAAM,WAAW,gBAAiB,SAAQ,KAAK;IAC7C,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;IACvB,UAAU,EAAE,UAAU,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,IAAI,CAAC;CACZ;AAED,MAAM,WAAW,uBAAuB;IACtC,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;IACvB,UAAU,EAAE,UAAU,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,IAAI,CAAC;IACX,SAAS,EAAE,IAAI,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,eAAe,EAAE,OAAO,CAAC;CAC1B;AAED,qBAAa,kBAAmB,YAAW,gBAAgB;IAClD,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;IACvB,UAAU,EAAE,UAAU,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,IAAI,CAAC;IACX,SAAS,EAAE,IAAI,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,eAAe,EAAE,OAAO,CAAC;gBAEpB,KAAK,EAAE,uBAAuB;IAc1C,KAAK,CAAC,SAAS,CAAC,EAAE,KAAK,GAAG,gBAAgB;CAa3C"}
1
+ {"version":3,"file":"ActivityLogEvents.d.ts","sourceRoot":"","sources":["../src/ActivityLogEvents.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAEvC,oBAAY,UAAU;IAClB,WAAW,gBAAgB;IAC3B,IAAI,SAAS;IACb,MAAM,WAAW;IACjB,KAAK,UAAU;IACf,gBAAgB,qBAAqB;CACxC;AAED,MAAM,WAAW,gBAAiB,SAAQ,KAAK;IAC3C,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;IACvB,UAAU,EAAE,UAAU,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,IAAI,CAAC;CACd;AAED,MAAM,WAAW,uBAAuB;IACpC,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;IACvB,UAAU,EAAE,UAAU,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,IAAI,CAAC;IACX,SAAS,EAAE,IAAI,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,eAAe,EAAE,OAAO,CAAC;CAC5B;AAED,qBAAa,kBAAmB,YAAW,gBAAgB;IAChD,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;IACvB,UAAU,EAAE,UAAU,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,IAAI,CAAC;IACX,SAAS,EAAE,IAAI,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,eAAe,EAAE,OAAO,CAAC;gBAEpB,KAAK,EAAE,uBAAuB;IAe1C,KAAK,CAAC,SAAS,CAAC,EAAE,KAAK,GAAG,gBAAgB;CAa7C"}
@@ -11,6 +11,7 @@ var SourceType;
11
11
  })(SourceType || (exports.SourceType = SourceType = {}));
12
12
  class ActivityLogCreated {
13
13
  constructor(props) {
14
+ this.eventId = props.eventId;
14
15
  this.userId = props.userId;
15
16
  this.activityByUid = props.activityByUid;
16
17
  this.sourceStreamId = props.sourceStreamId;
@@ -1,20 +1,24 @@
1
- import { UserModelStore } from './store/UserModelStore';
2
- import { UserEventStore } from './store/UserEventStore';
3
- import { FriendModelStore } from './store/FriendModelStore';
4
- import { FriendEventStore } from './store/FriendEventStore';
5
- import { TransactionModelStore } from './store/TransactionModelStore';
6
- import { TransactionEventStore } from './store/TransactionEventStore';
7
- import { GroupModelStore } from './store/GroupModelStore';
8
- import { GroupEventStore } from './store/GroupEventStore';
9
- import { GroupTransactionModelStore } from './store/GroupTransactionModelStore';
10
- import { GroupTransactionEventStore } from './store/GroupTransactionEventStore';
11
- import { ActivityLogModelStore } from './store/ActivityLogModelStore';
12
- import { ActivityLogEventStore } from './store/ActivityLogEventStore';
13
- import { UserController } from './client/controllers/UserController';
14
- import { UIEventHandler } from './client/handlers/UIEventHandler';
15
- import { FirebaseAdapter } from './adapters/FirebaseAdapter';
16
- import type { Event } from './events';
17
- import type { FirestoreEventData } from './converters/eventConverter';
1
+ import { UserModelStore } from "./store/UserModelStore";
2
+ import { UserEventStore } from "./store/UserEventStore";
3
+ import { FriendModelStore } from "./store/FriendModelStore";
4
+ import { FriendEventStore } from "./store/FriendEventStore";
5
+ import { TransactionModelStore } from "./store/TransactionModelStore";
6
+ import { TransactionEventStore } from "./store/TransactionEventStore";
7
+ import { GroupModelStore } from "./store/GroupModelStore";
8
+ import { GroupEventStore } from "./store/GroupEventStore";
9
+ import { GroupTransactionModelStore } from "./store/GroupTransactionModelStore";
10
+ import { GroupTransactionEventStore } from "./store/GroupTransactionEventStore";
11
+ import { ActivityLogModelStore } from "./store/ActivityLogModelStore";
12
+ import { ActivityLogEventStore } from "./store/ActivityLogEventStore";
13
+ import { UserController } from "./client/controllers/UserController";
14
+ import { FriendController } from "./client/controllers/FriendController";
15
+ import { UIEventHandler } from "./client/handlers/UIEventHandler";
16
+ import { FirebaseAdapter } from "./adapters/FirebaseAdapter";
17
+ import { Event, FriendEventHandler, UserEventHandler, TransactionEventHandler, GroupEventHandler, GroupTransactionEventHandler, ActivityEventHandler } from "./events";
18
+ import { Model } from "./common/Model";
19
+ import type { FirestoreEventData } from "./converters/eventConverter";
20
+ import { ModelChange } from "./ModelChangeEmitter";
21
+ import { Observable } from "rxjs";
18
22
  export type StoreConfig = {
19
23
  firebaseAdapter: FirebaseAdapter;
20
24
  userModelStore: UserModelStore;
@@ -34,7 +38,15 @@ export declare class EventProcessorSDK {
34
38
  private static instance;
35
39
  private readonly storeConfig;
36
40
  private userControllerInstance;
41
+ private friendControllerInstance;
37
42
  private uiEventHandlerInstance;
43
+ private userEventHandlerInstance;
44
+ private friendEventHandlerInstance;
45
+ private transactionEventHandlerInstance;
46
+ private groupEventHandlerInstance;
47
+ private groupTransactionEventHandlerInstance;
48
+ private activityEventHandlerInstance;
49
+ private readonly modelChangeEmitter;
38
50
  private constructor();
39
51
  static initialize(config: StoreConfig): EventProcessorSDK;
40
52
  static getInstance(): EventProcessorSDK;
@@ -42,14 +54,31 @@ export declare class EventProcessorSDK {
42
54
  static __resetForTesting(): void;
43
55
  getStoreConfig(): StoreConfig;
44
56
  getUserController(): UserController;
57
+ getFriendController(): FriendController;
45
58
  getUIEventHandler(): UIEventHandler;
59
+ getUserEventHandler(): UserEventHandler;
60
+ getFriendEventHandler(): FriendEventHandler;
61
+ getTransactionEventHandler(): TransactionEventHandler;
62
+ getGroupEventHandler(): GroupEventHandler;
63
+ getGroupTransactionEventHandler(): GroupTransactionEventHandler;
64
+ getActivityEventHandler(): ActivityEventHandler;
46
65
  getFirebaseAdapter(): FirebaseAdapter;
66
+ getModelChangeObservable(): Observable<ModelChange>;
67
+ emitModelChange(modelType: string, model: Model): void;
47
68
  }
48
69
  export declare function initializeSDK(config: StoreConfig): EventProcessorSDK;
49
70
  export declare function getUserController(): UserController;
71
+ export declare function getFriendController(): FriendController;
50
72
  export declare function getUIEventHandler(): UIEventHandler;
73
+ export declare function getUserEventHandler(): UserEventHandler;
74
+ export declare function getFriendEventHandler(): FriendEventHandler;
75
+ export declare function getTransactionEventHandler(): TransactionEventHandler;
76
+ export declare function getGroupEventHandler(): GroupEventHandler;
77
+ export declare function getGroupTransactionEventHandler(): GroupTransactionEventHandler;
78
+ export declare function getActivityEventHandler(): ActivityEventHandler;
51
79
  export declare function getFirebaseAdapter(): FirebaseAdapter;
52
- export declare function eventToFirestore(event: Event, eventId: string): FirestoreEventData;
80
+ export declare function getModelChangeObservable(): Observable<ModelChange>;
81
+ export declare function eventToFirestore(event: Event): FirestoreEventData;
53
82
  export declare function firestoreToEvent(data: FirestoreEventData): Event;
54
83
  export declare function isSDKInitialized(): boolean;
55
84
  export declare function __resetSDKForTesting(): void;
@@ -1 +1 @@
1
- {"version":3,"file":"EventProcessorSDK.d.ts","sourceRoot":"","sources":["../src/EventProcessorSDK.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,cAAc,EAAC,MAAM,wBAAwB,CAAC;AACtD,OAAO,EAAC,cAAc,EAAC,MAAM,wBAAwB,CAAC;AACtD,OAAO,EAAC,gBAAgB,EAAC,MAAM,0BAA0B,CAAC;AAC1D,OAAO,EAAC,gBAAgB,EAAC,MAAM,0BAA0B,CAAC;AAC1D,OAAO,EAAC,qBAAqB,EAAC,MAAM,+BAA+B,CAAC;AACpE,OAAO,EAAC,qBAAqB,EAAC,MAAM,+BAA+B,CAAC;AACpE,OAAO,EAAC,eAAe,EAAC,MAAM,yBAAyB,CAAC;AACxD,OAAO,EAAC,eAAe,EAAC,MAAM,yBAAyB,CAAC;AACxD,OAAO,EAAC,0BAA0B,EAAC,MAAM,oCAAoC,CAAC;AAC9E,OAAO,EAAC,0BAA0B,EAAC,MAAM,oCAAoC,CAAC;AAC9E,OAAO,EAAC,qBAAqB,EAAC,MAAM,+BAA+B,CAAC;AACpE,OAAO,EAAC,qBAAqB,EAAC,MAAM,+BAA+B,CAAC;AACpE,OAAO,EAAC,cAAc,EAAC,MAAM,qCAAqC,CAAC;AACnE,OAAO,EAAC,cAAc,EAAC,MAAM,kCAAkC,CAAC;AAChE,OAAO,EAAC,eAAe,EAAC,MAAM,4BAA4B,CAAC;AAK3D,OAAO,KAAK,EAAC,KAAK,EAAC,MAAM,UAAU,CAAC;AACpC,OAAO,KAAK,EAAC,kBAAkB,EAAC,MAAM,6BAA6B,CAAC;AAEpE,MAAM,MAAM,WAAW,GAAG;IACtB,eAAe,EAAE,eAAe,CAAC;IACjC,cAAc,EAAE,cAAc,CAAC;IAC/B,cAAc,EAAE,cAAc,CAAC;IAC/B,gBAAgB,EAAE,gBAAgB,CAAC;IACnC,gBAAgB,EAAE,gBAAgB,CAAC;IACnC,qBAAqB,EAAE,qBAAqB,CAAC;IAC7C,qBAAqB,EAAE,qBAAqB,CAAC;IAC7C,eAAe,EAAE,eAAe,CAAC;IACjC,eAAe,EAAE,eAAe,CAAC;IACjC,0BAA0B,EAAE,0BAA0B,CAAC;IACvD,0BAA0B,EAAE,0BAA0B,CAAC;IACvD,qBAAqB,EAAE,qBAAqB,CAAC;IAC7C,qBAAqB,EAAE,qBAAqB,CAAC;CAChD,CAAC;AAEF,qBAAa,iBAAiB;IAC1B,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAgC;IACvD,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAc;IAC1C,OAAO,CAAC,sBAAsB,CAA6B;IAC3D,OAAO,CAAC,sBAAsB,CAA6B;IAE3D,OAAO;IAIP,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,WAAW,GAAG,iBAAiB;IAKzD,MAAM,CAAC,WAAW,IAAI,iBAAiB;IAOvC,MAAM,CAAC,aAAa,IAAI,OAAO;IAI/B,MAAM,CAAC,iBAAiB,IAAI,IAAI;IAIhC,cAAc,IAAI,WAAW;IAI7B,iBAAiB,IAAI,cAAc;IAWnC,iBAAiB,IAAI,cAAc;IAUnC,kBAAkB,IAAI,eAAe;CAGxC;AAED,wBAAgB,aAAa,CAAC,MAAM,EAAE,WAAW,GAAG,iBAAiB,CAEpE;AAED,wBAAgB,iBAAiB,IAAI,cAAc,CAElD;AAED,wBAAgB,iBAAiB,IAAI,cAAc,CAElD;AAED,wBAAgB,kBAAkB,IAAI,eAAe,CAEpD;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,GAAG,kBAAkB,CAGlF;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,kBAAkB,GAAG,KAAK,CAGhE;AAED,wBAAgB,gBAAgB,IAAI,OAAO,CAE1C;AAED,wBAAgB,oBAAoB,IAAI,IAAI,CAE3C"}
1
+ {"version":3,"file":"EventProcessorSDK.d.ts","sourceRoot":"","sources":["../src/EventProcessorSDK.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AACtE,OAAO,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AACtE,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,0BAA0B,EAAE,MAAM,oCAAoC,CAAC;AAChF,OAAO,EAAE,0BAA0B,EAAE,MAAM,oCAAoC,CAAC;AAChF,OAAO,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AACtE,OAAO,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AACtE,OAAO,EAAE,cAAc,EAAE,MAAM,qCAAqC,CAAC;AACrE,OAAO,EAAE,gBAAgB,EAAE,MAAM,uCAAuC,CAAC;AACzE,OAAO,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAC;AAClE,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAK7D,OAAO,EACH,KAAK,EACL,kBAAkB,EAClB,gBAAgB,EAChB,uBAAuB,EACvB,iBAAiB,EACjB,4BAA4B,EAC5B,oBAAoB,EACvB,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AACvC,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AACtE,OAAO,EAAsB,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACvE,OAAO,EAAE,UAAU,EAAE,MAAM,MAAM,CAAC;AAElC,MAAM,MAAM,WAAW,GAAG;IACtB,eAAe,EAAE,eAAe,CAAC;IACjC,cAAc,EAAE,cAAc,CAAC;IAC/B,cAAc,EAAE,cAAc,CAAC;IAC/B,gBAAgB,EAAE,gBAAgB,CAAC;IACnC,gBAAgB,EAAE,gBAAgB,CAAC;IACnC,qBAAqB,EAAE,qBAAqB,CAAC;IAC7C,qBAAqB,EAAE,qBAAqB,CAAC;IAC7C,eAAe,EAAE,eAAe,CAAC;IACjC,eAAe,EAAE,eAAe,CAAC;IACjC,0BAA0B,EAAE,0BAA0B,CAAC;IACvD,0BAA0B,EAAE,0BAA0B,CAAC;IACvD,qBAAqB,EAAE,qBAAqB,CAAC;IAC7C,qBAAqB,EAAE,qBAAqB,CAAC;CAChD,CAAC;AAEF,qBAAa,iBAAiB;IAC1B,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAgC;IACvD,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAc;IAC1C,OAAO,CAAC,sBAAsB,CAA6B;IAC3D,OAAO,CAAC,wBAAwB,CAA+B;IAC/D,OAAO,CAAC,sBAAsB,CAA6B;IAC3D,OAAO,CAAC,wBAAwB,CAA+B;IAC/D,OAAO,CAAC,0BAA0B,CAAiC;IACnE,OAAO,CAAC,+BAA+B,CAAsC;IAC7E,OAAO,CAAC,yBAAyB,CAAgC;IACjE,OAAO,CAAC,oCAAoC,CAE5B;IAChB,OAAO,CAAC,4BAA4B,CAAmC;IACvE,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAqB;IAExD,OAAO;IAKP,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,WAAW,GAAG,iBAAiB;IAKzD,MAAM,CAAC,WAAW,IAAI,iBAAiB;IASvC,MAAM,CAAC,aAAa,IAAI,OAAO;IAI/B,MAAM,CAAC,iBAAiB,IAAI,IAAI;IAIhC,cAAc,IAAI,WAAW;IAI7B,iBAAiB,IAAI,cAAc;IAQnC,mBAAmB,IAAI,gBAAgB;IAQvC,iBAAiB,IAAI,cAAc;IAQnC,mBAAmB,IAAI,gBAAgB;IAYvC,qBAAqB,IAAI,kBAAkB;IAc3C,0BAA0B,IAAI,uBAAuB;IAarD,oBAAoB,IAAI,iBAAiB;IAezC,+BAA+B,IAAI,4BAA4B;IAgB/D,uBAAuB,IAAI,oBAAoB;IAY/C,kBAAkB,IAAI,eAAe;IAIrC,wBAAwB,IAAI,UAAU,CAAC,WAAW,CAAC;IAInD,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,GAAG,IAAI;CAGzD;AAED,wBAAgB,aAAa,CAAC,MAAM,EAAE,WAAW,GAAG,iBAAiB,CAEpE;AAED,wBAAgB,iBAAiB,IAAI,cAAc,CAElD;AAED,wBAAgB,mBAAmB,IAAI,gBAAgB,CAEtD;AAED,wBAAgB,iBAAiB,IAAI,cAAc,CAElD;AAED,wBAAgB,mBAAmB,IAAI,gBAAgB,CAEtD;AAED,wBAAgB,qBAAqB,IAAI,kBAAkB,CAE1D;AAED,wBAAgB,0BAA0B,IAAI,uBAAuB,CAEpE;AAED,wBAAgB,oBAAoB,IAAI,iBAAiB,CAExD;AAED,wBAAgB,+BAA+B,IAAI,4BAA4B,CAE9E;AAED,wBAAgB,uBAAuB,IAAI,oBAAoB,CAE9D;AAED,wBAAgB,kBAAkB,IAAI,eAAe,CAEpD;AAED,wBAAgB,wBAAwB,IAAI,UAAU,CAAC,WAAW,CAAC,CAElE;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,KAAK,GAAG,kBAAkB,CAGjE;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,kBAAkB,GAAG,KAAK,CAGhE;AAED,wBAAgB,gBAAgB,IAAI,OAAO,CAE1C;AAED,wBAAgB,oBAAoB,IAAI,IAAI,CAE3C"}
@@ -3,18 +3,30 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.EventProcessorSDK = void 0;
4
4
  exports.initializeSDK = initializeSDK;
5
5
  exports.getUserController = getUserController;
6
+ exports.getFriendController = getFriendController;
6
7
  exports.getUIEventHandler = getUIEventHandler;
8
+ exports.getUserEventHandler = getUserEventHandler;
9
+ exports.getFriendEventHandler = getFriendEventHandler;
10
+ exports.getTransactionEventHandler = getTransactionEventHandler;
11
+ exports.getGroupEventHandler = getGroupEventHandler;
12
+ exports.getGroupTransactionEventHandler = getGroupTransactionEventHandler;
13
+ exports.getActivityEventHandler = getActivityEventHandler;
7
14
  exports.getFirebaseAdapter = getFirebaseAdapter;
15
+ exports.getModelChangeObservable = getModelChangeObservable;
8
16
  exports.eventToFirestore = eventToFirestore;
9
17
  exports.firestoreToEvent = firestoreToEvent;
10
18
  exports.isSDKInitialized = isSDKInitialized;
11
19
  exports.__resetSDKForTesting = __resetSDKForTesting;
12
20
  const UserController_1 = require("./client/controllers/UserController");
21
+ const FriendController_1 = require("./client/controllers/FriendController");
13
22
  const UIEventHandler_1 = require("./client/handlers/UIEventHandler");
14
23
  const eventConverter_1 = require("./converters/eventConverter");
24
+ const events_1 = require("./events");
25
+ const ModelChangeEmitter_1 = require("./ModelChangeEmitter");
15
26
  class EventProcessorSDK {
16
27
  constructor(config) {
17
28
  this.storeConfig = config;
29
+ this.modelChangeEmitter = new ModelChangeEmitter_1.ModelChangeEmitter();
18
30
  }
19
31
  static initialize(config) {
20
32
  EventProcessorSDK.instance = new EventProcessorSDK(config);
@@ -22,7 +34,7 @@ class EventProcessorSDK {
22
34
  }
23
35
  static getInstance() {
24
36
  if (!EventProcessorSDK.instance) {
25
- throw new Error('EventProcessorSDK not initialized. Call EventProcessorSDK.initialize() first.');
37
+ throw new Error("EventProcessorSDK not initialized. Call EventProcessorSDK.initialize() first.");
26
38
  }
27
39
  return EventProcessorSDK.instance;
28
40
  }
@@ -37,19 +49,68 @@ class EventProcessorSDK {
37
49
  }
38
50
  getUserController() {
39
51
  if (!this.userControllerInstance) {
40
- this.userControllerInstance = new UserController_1.UserController(this.storeConfig.userModelStore, this.storeConfig.userEventStore);
52
+ this.userControllerInstance = new UserController_1.UserController();
41
53
  }
42
54
  return this.userControllerInstance;
43
55
  }
56
+ getFriendController() {
57
+ if (!this.friendControllerInstance) {
58
+ this.friendControllerInstance = new FriendController_1.FriendController();
59
+ }
60
+ return this.friendControllerInstance;
61
+ }
44
62
  getUIEventHandler() {
45
63
  if (!this.uiEventHandlerInstance) {
46
- this.uiEventHandlerInstance = new UIEventHandler_1.UIEventHandler(this.storeConfig.userModelStore);
64
+ this.uiEventHandlerInstance = new UIEventHandler_1.UIEventHandler();
47
65
  }
48
66
  return this.uiEventHandlerInstance;
49
67
  }
68
+ getUserEventHandler() {
69
+ if (!this.userEventHandlerInstance) {
70
+ this.userEventHandlerInstance = new events_1.UserEventHandler(this.storeConfig.userModelStore, this.storeConfig.userEventStore, this.getActivityEventHandler());
71
+ }
72
+ return this.userEventHandlerInstance;
73
+ }
74
+ getFriendEventHandler() {
75
+ if (!this.friendEventHandlerInstance) {
76
+ this.friendEventHandlerInstance = new events_1.FriendEventHandler(this.storeConfig.friendModelStore, this.storeConfig.userModelStore, this.storeConfig.friendEventStore, this.storeConfig.userEventStore, this.getActivityEventHandler());
77
+ }
78
+ return this.friendEventHandlerInstance;
79
+ }
80
+ getTransactionEventHandler() {
81
+ if (!this.transactionEventHandlerInstance) {
82
+ this.transactionEventHandlerInstance = new events_1.TransactionEventHandler(this.storeConfig.transactionModelStore, this.storeConfig.transactionEventStore, this.storeConfig.userModelStore, this.getActivityEventHandler());
83
+ }
84
+ return this.transactionEventHandlerInstance;
85
+ }
86
+ getGroupEventHandler() {
87
+ if (!this.groupEventHandlerInstance) {
88
+ this.groupEventHandlerInstance = new events_1.GroupEventHandler(this.storeConfig.groupModelStore, this.storeConfig.friendModelStore, this.storeConfig.userModelStore, this.storeConfig.groupEventStore, this.storeConfig.friendEventStore, this.getActivityEventHandler());
89
+ }
90
+ return this.groupEventHandlerInstance;
91
+ }
92
+ getGroupTransactionEventHandler() {
93
+ if (!this.groupTransactionEventHandlerInstance) {
94
+ this.groupTransactionEventHandlerInstance =
95
+ new events_1.GroupTransactionEventHandler(this.storeConfig.groupTransactionModelStore, this.storeConfig.groupTransactionEventStore, this.storeConfig.groupModelStore, this.storeConfig.transactionEventStore, this.storeConfig.transactionModelStore, this.getActivityEventHandler());
96
+ }
97
+ return this.groupTransactionEventHandlerInstance;
98
+ }
99
+ getActivityEventHandler() {
100
+ if (!this.activityEventHandlerInstance) {
101
+ this.activityEventHandlerInstance = new events_1.ActivityEventHandler(this.storeConfig.activityLogModelStore, this.storeConfig.activityLogEventStore, this.storeConfig.userModelStore);
102
+ }
103
+ return this.activityEventHandlerInstance;
104
+ }
50
105
  getFirebaseAdapter() {
51
106
  return this.storeConfig.firebaseAdapter;
52
107
  }
108
+ getModelChangeObservable() {
109
+ return this.modelChangeEmitter.asObservable();
110
+ }
111
+ emitModelChange(modelType, model) {
112
+ this.modelChangeEmitter.emit(modelType, model);
113
+ }
53
114
  }
54
115
  exports.EventProcessorSDK = EventProcessorSDK;
55
116
  function initializeSDK(config) {
@@ -58,15 +119,39 @@ function initializeSDK(config) {
58
119
  function getUserController() {
59
120
  return EventProcessorSDK.getInstance().getUserController();
60
121
  }
122
+ function getFriendController() {
123
+ return EventProcessorSDK.getInstance().getFriendController();
124
+ }
61
125
  function getUIEventHandler() {
62
126
  return EventProcessorSDK.getInstance().getUIEventHandler();
63
127
  }
128
+ function getUserEventHandler() {
129
+ return EventProcessorSDK.getInstance().getUserEventHandler();
130
+ }
131
+ function getFriendEventHandler() {
132
+ return EventProcessorSDK.getInstance().getFriendEventHandler();
133
+ }
134
+ function getTransactionEventHandler() {
135
+ return EventProcessorSDK.getInstance().getTransactionEventHandler();
136
+ }
137
+ function getGroupEventHandler() {
138
+ return EventProcessorSDK.getInstance().getGroupEventHandler();
139
+ }
140
+ function getGroupTransactionEventHandler() {
141
+ return EventProcessorSDK.getInstance().getGroupTransactionEventHandler();
142
+ }
143
+ function getActivityEventHandler() {
144
+ return EventProcessorSDK.getInstance().getActivityEventHandler();
145
+ }
64
146
  function getFirebaseAdapter() {
65
147
  return EventProcessorSDK.getInstance().getFirebaseAdapter();
66
148
  }
67
- function eventToFirestore(event, eventId) {
149
+ function getModelChangeObservable() {
150
+ return EventProcessorSDK.getInstance().getModelChangeObservable();
151
+ }
152
+ function eventToFirestore(event) {
68
153
  const adapter = getFirebaseAdapter();
69
- return (0, eventConverter_1.eventToFirestore)(event, eventId, adapter);
154
+ return (0, eventConverter_1.eventToFirestore)(event, adapter);
70
155
  }
71
156
  function firestoreToEvent(data) {
72
157
  const adapter = getFirebaseAdapter();
@@ -1,9 +1,5 @@
1
- import { FriendCreated, FriendDeleted, FriendIdAdded, FriendIdRemoved, FriendModel, FriendUpdated, FriendEvent } from '.';
2
- import { FriendModelStore } from '.';
3
- import { UserModelStore } from '.';
4
- import { FriendEventStore } from '.';
5
- import { UserEventStore } from '.';
6
- import { ActivityEventHandler } from './ActivityEventHandler';
1
+ import { FriendCreated, FriendEvent, FriendEventStore, FriendModelStore, UserEventStore, UserModelStore } from ".";
2
+ import { ActivityEventHandler } from "./ActivityEventHandler";
7
3
  export declare class FriendEventHandler {
8
4
  private modelStore;
9
5
  private userModelStore;
@@ -11,11 +7,8 @@ export declare class FriendEventHandler {
11
7
  private userEventStore;
12
8
  private activityEventHandler?;
13
9
  constructor(modelStore: FriendModelStore, userModelStore: UserModelStore, friendEventStore: FriendEventStore, userEventStore: UserEventStore, activityEventHandler?: ActivityEventHandler | undefined);
14
- handleEvent(event: FriendEvent): Promise<FriendModel>;
15
- handleFriendCreated(event: FriendCreated): Promise<FriendModel>;
16
- handleFriendUpdated(event: FriendUpdated): Promise<FriendModel>;
17
- handleFriendDeleted(event: FriendDeleted): Promise<FriendModel>;
18
- handleFriendIdAdded(event: FriendIdAdded): Promise<FriendModel>;
19
- handleFriendIdRemoved(event: FriendIdRemoved): Promise<FriendModel>;
10
+ private shouldSkipSave;
11
+ handleEvent(event: FriendEvent): Promise<void>;
12
+ handleFriendCreated(event: FriendCreated): Promise<void>;
20
13
  }
21
14
  //# sourceMappingURL=FriendEventHandler.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"FriendEventHandler.d.ts","sourceRoot":"","sources":["../src/FriendEventHandler.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,aAAa,EACb,aAAa,EACb,aAAa,EACb,eAAe,EACf,WAAW,EACX,aAAa,EAGb,WAAW,EACd,MAAM,GAAG,CAAC;AACX,OAAO,EAAC,gBAAgB,EAAC,MAAM,GAAG,CAAC;AACnC,OAAO,EAAC,cAAc,EAAC,MAAM,GAAG,CAAC;AACjC,OAAO,EAAC,gBAAgB,EAAC,MAAM,GAAG,CAAC;AACnC,OAAO,EAAC,cAAc,EAAC,MAAM,GAAG,CAAC;AACjC,OAAO,EAAC,oBAAoB,EAAC,MAAM,wBAAwB,CAAC;AAI5D,qBAAa,kBAAkB;IAEvB,OAAO,CAAC,UAAU;IAClB,OAAO,CAAC,cAAc;IACtB,OAAO,CAAC,gBAAgB;IACxB,OAAO,CAAC,cAAc;IACtB,OAAO,CAAC,oBAAoB,CAAC;gBAJrB,UAAU,EAAE,gBAAgB,EAC5B,cAAc,EAAE,cAAc,EAC9B,gBAAgB,EAAE,gBAAgB,EAClC,cAAc,EAAE,cAAc,EAC9B,oBAAoB,CAAC,EAAE,oBAAoB,YAAA;IAGjD,WAAW,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;IAsBrD,mBAAmB,CAAC,KAAK,EAAE,aAAa,GAAG,OAAO,CAAC,WAAW,CAAC;IA6G/D,mBAAmB,CAAC,KAAK,EAAE,aAAa,GAAG,OAAO,CAAC,WAAW,CAAC;IAU/D,mBAAmB,CAAC,KAAK,EAAE,aAAa,GAAG,OAAO,CAAC,WAAW,CAAC;IAU/D,mBAAmB,CAAC,KAAK,EAAE,aAAa,GAAG,OAAO,CAAC,WAAW,CAAC;IAU/D,qBAAqB,CAAC,KAAK,EAAE,eAAe,GAAG,OAAO,CAAC,WAAW,CAAC;CAS5E"}
1
+ {"version":3,"file":"FriendEventHandler.d.ts","sourceRoot":"","sources":["../src/FriendEventHandler.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,aAAa,EACb,WAAW,EACX,gBAAgB,EAGhB,gBAAgB,EAGhB,cAAc,EAEd,cAAc,EAEjB,MAAM,GAAG,CAAC;AACX,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAK9D,qBAAa,kBAAkB;IAEvB,OAAO,CAAC,UAAU;IAClB,OAAO,CAAC,cAAc;IACtB,OAAO,CAAC,gBAAgB;IACxB,OAAO,CAAC,cAAc;IACtB,OAAO,CAAC,oBAAoB,CAAC;gBAJrB,UAAU,EAAE,gBAAgB,EAC5B,cAAc,EAAE,cAAc,EAC9B,gBAAgB,EAAE,gBAAgB,EAClC,cAAc,EAAE,cAAc,EAC9B,oBAAoB,CAAC,EAAE,oBAAoB,YAAA;IAGvD,OAAO,CAAC,cAAc;IAahB,WAAW,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IAoC9C,mBAAmB,CAAC,KAAK,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;CA0LjE"}
@@ -4,6 +4,7 @@ exports.FriendEventHandler = void 0;
4
4
  const _1 = require(".");
5
5
  const DomainEvents_1 = require("./common/DomainEvents");
6
6
  const uuid_1 = require("uuid");
7
+ const EventProcessorSDK_1 = require("./EventProcessorSDK");
7
8
  class FriendEventHandler {
8
9
  constructor(modelStore, userModelStore, friendEventStore, userEventStore, activityEventHandler) {
9
10
  this.modelStore = modelStore;
@@ -12,30 +13,45 @@ class FriendEventHandler {
12
13
  this.userEventStore = userEventStore;
13
14
  this.activityEventHandler = activityEventHandler;
14
15
  }
16
+ shouldSkipSave(existingModel, updatedModel) {
17
+ if (!existingModel) {
18
+ return false;
19
+ }
20
+ return (existingModel.streamId === updatedModel.streamId &&
21
+ existingModel.version === updatedModel.version);
22
+ }
15
23
  async handleEvent(event) {
16
24
  const eventType = event.constructor.name;
17
25
  if (!(0, DomainEvents_1.isValidFriendEventType)(eventType)) {
18
26
  throw new Error(`Unknown friend event type: ${eventType}`);
19
27
  }
20
- switch (eventType) {
21
- case 'FriendCreated':
22
- return await this.handleFriendCreated(event);
23
- case 'FriendUpdated':
24
- return await this.handleFriendUpdated(event);
25
- case 'FriendDeleted':
26
- return await this.handleFriendDeleted(event);
27
- case 'FriendIdAdded':
28
- return await this.handleFriendIdAdded(event);
29
- case 'FriendIdRemoved':
30
- return await this.handleFriendIdRemoved(event);
31
- default:
32
- throw new Error(`Unknown friend event type: ${eventType}`);
28
+ if (!_1.residence.isClient && eventType === "FriendCreated") {
29
+ return await this.handleFriendCreated(event);
30
+ }
31
+ const existingModel = await this.modelStore.getByStreamIdWhereDeletedIsFalse(event.streamId);
32
+ const updatedModel = event.apply(existingModel);
33
+ if (!this.shouldSkipSave(existingModel, updatedModel)) {
34
+ await this.modelStore.save(updatedModel);
35
+ if ((0, EventProcessorSDK_1.isSDKInitialized)()) {
36
+ EventProcessorSDK_1.EventProcessorSDK.getInstance().emitModelChange("FriendModel", updatedModel);
37
+ }
38
+ }
39
+ if (_1.residence.isClient) {
40
+ await this.friendEventStore.addEvent(event);
41
+ if (this.activityEventHandler) {
42
+ await this.activityEventHandler.createActivityLog(event, existingModel, updatedModel);
43
+ }
33
44
  }
34
45
  }
35
46
  async handleFriendCreated(event) {
36
47
  const existingModel = await this.modelStore.getByStreamIdWhereDeletedIsFalse(event.streamId);
37
48
  const updatedModel = event.apply(existingModel);
38
- await this.modelStore.save(updatedModel);
49
+ if (!this.shouldSkipSave(existingModel, updatedModel)) {
50
+ await this.modelStore.save(updatedModel);
51
+ if ((0, EventProcessorSDK_1.isSDKInitialized)()) {
52
+ EventProcessorSDK_1.EventProcessorSDK.getInstance().emitModelChange("FriendModel", updatedModel);
53
+ }
54
+ }
39
55
  // Check if friend is already a user (try phone first, then email)
40
56
  let friendUser = null;
41
57
  if (event.friendPhoneNumber) {
@@ -48,6 +64,7 @@ class FriendEventHandler {
48
64
  if (friendUser) {
49
65
  // Create FriendIdAdded event for current user
50
66
  const friendIdAddedEvent = new _1.FriendIdAdded({
67
+ eventId: (0, uuid_1.v4)(),
51
68
  userId: event.userId,
52
69
  friendId: friendUser.userId,
53
70
  createdAt: new Date(),
@@ -58,10 +75,16 @@ class FriendEventHandler {
58
75
  });
59
76
  await this.friendEventStore.addEvent(friendIdAddedEvent);
60
77
  const modelWithFriendId = friendIdAddedEvent.apply(updatedModel);
61
- await this.modelStore.save(modelWithFriendId);
78
+ if (!this.shouldSkipSave(updatedModel, modelWithFriendId)) {
79
+ await this.modelStore.save(modelWithFriendId);
80
+ if ((0, EventProcessorSDK_1.isSDKInitialized)()) {
81
+ EventProcessorSDK_1.EventProcessorSDK.getInstance().emitModelChange("FriendModel", modelWithFriendId);
82
+ }
83
+ }
62
84
  const primaryUser = await this.userModelStore.getByStreamIdWhereDeletedIsFalse(event.userId);
63
85
  if (primaryUser) {
64
86
  const reciprocalFriendCreated = new _1.FriendCreated({
87
+ eventId: (0, uuid_1.v4)(),
65
88
  userId: friendUser.userId,
66
89
  friendEmail: primaryUser.email,
67
90
  friendPhoneNumber: primaryUser.phoneNumber,
@@ -70,20 +93,28 @@ class FriendEventHandler {
70
93
  groupId: event.groupId,
71
94
  createdAt: new Date(),
72
95
  createdBy: friendUser.userId,
73
- streamId: `stream-${(0, uuid_1.v4)()}`,
96
+ streamId: (0, uuid_1.v4)(),
74
97
  version: 1,
75
98
  systemGenerated: true,
76
99
  });
77
100
  await this.friendEventStore.addEvent(reciprocalFriendCreated);
78
101
  const reciprocalModel = reciprocalFriendCreated.apply(undefined);
79
- await this.modelStore.save(reciprocalModel);
102
+ if (!this.shouldSkipSave(undefined, reciprocalModel)) {
103
+ await this.modelStore.save(reciprocalModel);
104
+ if ((0, EventProcessorSDK_1.isSDKInitialized)()) {
105
+ EventProcessorSDK_1.EventProcessorSDK.getInstance().emitModelChange("FriendModel", reciprocalModel);
106
+ }
107
+ }
108
+ if (this.activityEventHandler) {
109
+ await this.activityEventHandler.createActivityLog(reciprocalFriendCreated, undefined, reciprocalModel);
110
+ }
80
111
  }
81
- return modelWithFriendId;
82
112
  }
83
113
  else {
84
114
  // Friend user not found - create placeholder user
85
- const placeholderStreamId = `stream-${(0, uuid_1.v4)()}`;
115
+ const placeholderStreamId = (0, uuid_1.v4)();
86
116
  const placeholderUserCreated = new _1.PlaceholderUserCreated({
117
+ eventId: (0, uuid_1.v4)(),
87
118
  userId: placeholderStreamId,
88
119
  displayName: event.friendDisplayName,
89
120
  phoneNumber: event.friendPhoneNumber,
@@ -96,9 +127,12 @@ class FriendEventHandler {
96
127
  });
97
128
  await this.userEventStore.addEvent(placeholderUserCreated);
98
129
  const placeholderUser = placeholderUserCreated.apply(undefined);
99
- await this.userModelStore.save(placeholderUser);
130
+ if (!this.shouldSkipSave(undefined, placeholderUser)) {
131
+ await this.userModelStore.save(placeholderUser);
132
+ }
100
133
  // Link primary user to placeholder
101
134
  const friendIdAddedEvent = new _1.FriendIdAdded({
135
+ eventId: (0, uuid_1.v4)(),
102
136
  userId: event.userId,
103
137
  friendId: placeholderStreamId,
104
138
  createdAt: new Date(),
@@ -109,12 +143,18 @@ class FriendEventHandler {
109
143
  });
110
144
  await this.friendEventStore.addEvent(friendIdAddedEvent);
111
145
  const modelWithPlaceholderId = friendIdAddedEvent.apply(updatedModel);
112
- await this.modelStore.save(modelWithPlaceholderId);
146
+ if (!this.shouldSkipSave(updatedModel, modelWithPlaceholderId)) {
147
+ await this.modelStore.save(modelWithPlaceholderId);
148
+ if ((0, EventProcessorSDK_1.isSDKInitialized)()) {
149
+ EventProcessorSDK_1.EventProcessorSDK.getInstance().emitModelChange("FriendModel", modelWithPlaceholderId);
150
+ }
151
+ }
113
152
  // Create reciprocal friendship for placeholder user
114
153
  const primaryUser = await this.userModelStore.getByStreamIdWhereDeletedIsFalse(event.userId);
115
154
  if (primaryUser) {
116
155
  const primaryUserModel = primaryUser;
117
156
  const reciprocalFriendCreated = new _1.FriendCreated({
157
+ eventId: (0, uuid_1.v4)(),
118
158
  userId: placeholderStreamId,
119
159
  friendEmail: primaryUserModel.email,
120
160
  friendPhoneNumber: primaryUserModel.phoneNumber,
@@ -123,52 +163,23 @@ class FriendEventHandler {
123
163
  groupId: event.groupId,
124
164
  createdAt: new Date(),
125
165
  createdBy: placeholderStreamId,
126
- streamId: `stream-${(0, uuid_1.v4)()}`,
166
+ streamId: (0, uuid_1.v4)(),
127
167
  version: 1,
128
168
  systemGenerated: true,
129
169
  });
130
170
  await this.friendEventStore.addEvent(reciprocalFriendCreated);
131
171
  const reciprocalModel = reciprocalFriendCreated.apply(undefined);
132
- await this.modelStore.save(reciprocalModel);
172
+ if (!this.shouldSkipSave(undefined, reciprocalModel)) {
173
+ await this.modelStore.save(reciprocalModel);
174
+ if ((0, EventProcessorSDK_1.isSDKInitialized)()) {
175
+ EventProcessorSDK_1.EventProcessorSDK.getInstance().emitModelChange("FriendModel", reciprocalModel);
176
+ }
177
+ }
178
+ if (this.activityEventHandler) {
179
+ await this.activityEventHandler.createActivityLog(reciprocalFriendCreated, undefined, reciprocalModel);
180
+ }
133
181
  }
134
- return modelWithPlaceholderId;
135
- }
136
- }
137
- async handleFriendUpdated(event) {
138
- const existingModel = await this.modelStore.getByStreamIdWhereDeletedIsFalse(event.streamId);
139
- const updatedModel = event.apply(existingModel);
140
- await this.modelStore.save(updatedModel);
141
- if (this.activityEventHandler) {
142
- await this.activityEventHandler.createActivityLog(event, existingModel, updatedModel);
143
- }
144
- return updatedModel;
145
- }
146
- async handleFriendDeleted(event) {
147
- const existingModel = await this.modelStore.getByStreamIdWhereDeletedIsFalse(event.streamId);
148
- const updatedModel = event.apply(existingModel);
149
- await this.modelStore.save(updatedModel);
150
- if (this.activityEventHandler) {
151
- await this.activityEventHandler.createActivityLog(event, existingModel, updatedModel);
152
- }
153
- return updatedModel;
154
- }
155
- async handleFriendIdAdded(event) {
156
- const existingModel = await this.modelStore.getByStreamIdWhereDeletedIsFalse(event.streamId);
157
- const updatedModel = event.apply(existingModel);
158
- await this.modelStore.save(updatedModel);
159
- if (this.activityEventHandler) {
160
- await this.activityEventHandler.createActivityLog(event, existingModel, updatedModel);
161
- }
162
- return updatedModel;
163
- }
164
- async handleFriendIdRemoved(event) {
165
- const existingModel = await this.modelStore.getByStreamIdWhereDeletedIsFalse(event.streamId);
166
- const updatedModel = event.apply(existingModel);
167
- await this.modelStore.save(updatedModel);
168
- if (this.activityEventHandler) {
169
- await this.activityEventHandler.createActivityLog(event, existingModel, updatedModel);
170
182
  }
171
- return updatedModel;
172
183
  }
173
184
  }
174
185
  exports.FriendEventHandler = FriendEventHandler;