@zeeshan60/event-processor 1.0.13 → 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 (146) hide show
  1. package/dist/ActivityEventHandler.d.ts +1 -0
  2. package/dist/ActivityEventHandler.d.ts.map +1 -1
  3. package/dist/ActivityEventHandler.js +14 -1
  4. package/dist/EventProcessorSDK.d.ts +26 -1
  5. package/dist/EventProcessorSDK.d.ts.map +1 -1
  6. package/dist/EventProcessorSDK.js +75 -1
  7. package/dist/FriendEventHandler.d.ts +1 -0
  8. package/dist/FriendEventHandler.d.ts.map +1 -1
  9. package/dist/FriendEventHandler.js +50 -7
  10. package/dist/GroupEventHandler.d.ts +1 -0
  11. package/dist/GroupEventHandler.d.ts.map +1 -1
  12. package/dist/GroupEventHandler.js +86 -14
  13. package/dist/GroupTransactionEventHandler.d.ts +1 -0
  14. package/dist/GroupTransactionEventHandler.d.ts.map +1 -1
  15. package/dist/GroupTransactionEventHandler.js +47 -9
  16. package/dist/ModelChangeEmitter.d.ts +15 -0
  17. package/dist/ModelChangeEmitter.d.ts.map +1 -0
  18. package/dist/ModelChangeEmitter.js +31 -0
  19. package/dist/TransactionEventHandler.d.ts +1 -0
  20. package/dist/TransactionEventHandler.d.ts.map +1 -1
  21. package/dist/TransactionEventHandler.js +20 -2
  22. package/dist/UserEventHandler.d.ts +1 -0
  23. package/dist/UserEventHandler.d.ts.map +1 -1
  24. package/dist/UserEventHandler.js +26 -3
  25. package/dist/__tests__/test-helpers/IMActivityLogEventStore.d.ts +1 -1
  26. package/dist/__tests__/test-helpers/IMActivityLogEventStore.d.ts.map +1 -1
  27. package/dist/__tests__/test-helpers/IMActivityLogEventStore.js +1 -3
  28. package/dist/__tests__/test-helpers/IMActivityLogModelStore.d.ts +1 -1
  29. package/dist/__tests__/test-helpers/IMActivityLogModelStore.d.ts.map +1 -1
  30. package/dist/__tests__/test-helpers/IMActivityLogModelStore.js +1 -3
  31. package/dist/__tests__/test-helpers/IMFriendEventStore.d.ts +1 -1
  32. package/dist/__tests__/test-helpers/IMFriendEventStore.d.ts.map +1 -1
  33. package/dist/__tests__/test-helpers/IMFriendEventStore.js +1 -3
  34. package/dist/__tests__/test-helpers/IMFriendModelStore.d.ts +1 -1
  35. package/dist/__tests__/test-helpers/IMFriendModelStore.d.ts.map +1 -1
  36. package/dist/__tests__/test-helpers/IMFriendModelStore.js +1 -3
  37. package/dist/__tests__/test-helpers/IMGroupEventStore.d.ts +1 -1
  38. package/dist/__tests__/test-helpers/IMGroupEventStore.d.ts.map +1 -1
  39. package/dist/__tests__/test-helpers/IMGroupEventStore.js +1 -3
  40. package/dist/__tests__/test-helpers/IMGroupModelStore.d.ts +1 -1
  41. package/dist/__tests__/test-helpers/IMGroupModelStore.d.ts.map +1 -1
  42. package/dist/__tests__/test-helpers/IMGroupModelStore.js +1 -3
  43. package/dist/__tests__/test-helpers/IMGroupTransactionEventStore.d.ts +1 -1
  44. package/dist/__tests__/test-helpers/IMGroupTransactionEventStore.d.ts.map +1 -1
  45. package/dist/__tests__/test-helpers/IMGroupTransactionEventStore.js +1 -3
  46. package/dist/__tests__/test-helpers/IMGroupTransactionModelStore.d.ts +1 -1
  47. package/dist/__tests__/test-helpers/IMGroupTransactionModelStore.d.ts.map +1 -1
  48. package/dist/__tests__/test-helpers/IMGroupTransactionModelStore.js +1 -3
  49. package/dist/__tests__/test-helpers/IMTransactionEventStore.d.ts +1 -1
  50. package/dist/__tests__/test-helpers/IMTransactionEventStore.d.ts.map +1 -1
  51. package/dist/__tests__/test-helpers/IMTransactionEventStore.js +1 -3
  52. package/dist/__tests__/test-helpers/IMTransactionModelStore.d.ts +1 -1
  53. package/dist/__tests__/test-helpers/IMTransactionModelStore.d.ts.map +1 -1
  54. package/dist/__tests__/test-helpers/IMTransactionModelStore.js +1 -3
  55. package/dist/__tests__/test-helpers/IMUserEventStore.d.ts +1 -1
  56. package/dist/__tests__/test-helpers/IMUserEventStore.d.ts.map +1 -1
  57. package/dist/__tests__/test-helpers/IMUserEventStore.js +1 -3
  58. package/dist/__tests__/test-helpers/IMUserModelStore.d.ts +1 -1
  59. package/dist/__tests__/test-helpers/IMUserModelStore.d.ts.map +1 -1
  60. package/dist/__tests__/test-helpers/IMUserModelStore.js +1 -3
  61. package/dist/client/controllers/FriendController.d.ts +6 -5
  62. package/dist/client/controllers/FriendController.d.ts.map +1 -1
  63. package/dist/client/controllers/FriendController.js +23 -12
  64. package/dist/client/controllers/UserController.d.ts.map +1 -1
  65. package/dist/client/controllers/UserController.js +3 -23
  66. package/dist/client/handlers/UIEventHandler.d.ts +4 -22
  67. package/dist/client/handlers/UIEventHandler.d.ts.map +1 -1
  68. package/dist/client/handlers/UIEventHandler.js +59 -40
  69. package/dist/converters/eventConverter.d.ts.map +1 -1
  70. package/dist/converters/eventConverter.js +26 -1
  71. package/dist/index.d.ts +2 -2
  72. package/dist/index.d.ts.map +1 -1
  73. package/dist/index.js +11 -3
  74. package/dist/store/ActivityLogEventStore.d.ts +2 -2
  75. package/dist/store/ActivityLogEventStore.d.ts.map +1 -1
  76. package/dist/store/ActivityLogEventStore.js +0 -4
  77. package/dist/store/ActivityLogModelStore.d.ts +4 -4
  78. package/dist/store/ActivityLogModelStore.d.ts.map +1 -1
  79. package/dist/store/ActivityLogModelStore.js +0 -5
  80. package/dist/store/FriendEventStore.d.ts +2 -2
  81. package/dist/store/FriendEventStore.d.ts.map +1 -1
  82. package/dist/store/FriendEventStore.js +0 -4
  83. package/dist/store/FriendModelStore.d.ts +9 -9
  84. package/dist/store/FriendModelStore.d.ts.map +1 -1
  85. package/dist/store/FriendModelStore.js +0 -5
  86. package/dist/store/GroupEventStore.d.ts +2 -2
  87. package/dist/store/GroupEventStore.d.ts.map +1 -1
  88. package/dist/store/GroupEventStore.js +0 -4
  89. package/dist/store/GroupModelStore.d.ts +6 -6
  90. package/dist/store/GroupModelStore.d.ts.map +1 -1
  91. package/dist/store/GroupModelStore.js +0 -5
  92. package/dist/store/GroupTransactionEventStore.d.ts +2 -2
  93. package/dist/store/GroupTransactionEventStore.d.ts.map +1 -1
  94. package/dist/store/GroupTransactionEventStore.js +0 -4
  95. package/dist/store/GroupTransactionModelStore.d.ts +6 -6
  96. package/dist/store/GroupTransactionModelStore.d.ts.map +1 -1
  97. package/dist/store/GroupTransactionModelStore.js +0 -5
  98. package/dist/store/ModelStore.d.ts +4 -4
  99. package/dist/store/ModelStore.d.ts.map +1 -1
  100. package/dist/store/ModelStore.js +0 -4
  101. package/dist/store/TransactionEventStore.d.ts +2 -2
  102. package/dist/store/TransactionEventStore.d.ts.map +1 -1
  103. package/dist/store/TransactionEventStore.js +0 -4
  104. package/dist/store/TransactionModelStore.d.ts +6 -6
  105. package/dist/store/TransactionModelStore.d.ts.map +1 -1
  106. package/dist/store/TransactionModelStore.js +0 -5
  107. package/dist/store/UserEventStore.d.ts +2 -2
  108. package/dist/store/UserEventStore.d.ts.map +1 -1
  109. package/dist/store/UserEventStore.js +0 -4
  110. package/dist/store/UserModelStore.d.ts +7 -7
  111. package/dist/store/UserModelStore.d.ts.map +1 -1
  112. package/dist/store/UserModelStore.js +0 -5
  113. package/package.json +1 -1
  114. package/dist/__tests__/e2e/setup/firebaseEmulator.d.ts +0 -3
  115. package/dist/__tests__/e2e/setup/firebaseEmulator.d.ts.map +0 -1
  116. package/dist/__tests__/e2e/setup/firebaseEmulator.js +0 -87
  117. package/dist/__tests__/e2e/setup/firestoreStores.d.ts +0 -28
  118. package/dist/__tests__/e2e/setup/firestoreStores.d.ts.map +0 -1
  119. package/dist/__tests__/e2e/setup/firestoreStores.js +0 -276
  120. package/dist/__tests__/e2e/setup/firestoreTestHelpers.d.ts +0 -15
  121. package/dist/__tests__/e2e/setup/firestoreTestHelpers.d.ts.map +0 -1
  122. package/dist/__tests__/e2e/setup/firestoreTestHelpers.js +0 -167
  123. package/dist/adapters/FirebaseAdminAdapter.d.ts +0 -8
  124. package/dist/adapters/FirebaseAdminAdapter.d.ts.map +0 -1
  125. package/dist/adapters/FirebaseAdminAdapter.js +0 -21
  126. package/dist/adapters/FirebaseClientAdapter.d.ts +0 -8
  127. package/dist/adapters/FirebaseClientAdapter.d.ts.map +0 -1
  128. package/dist/adapters/FirebaseClientAdapter.js +0 -22
  129. package/dist/client/handlers/UIActivityEventHandler.d.ts +0 -12
  130. package/dist/client/handlers/UIActivityEventHandler.d.ts.map +0 -1
  131. package/dist/client/handlers/UIActivityEventHandler.js +0 -14
  132. package/dist/common/EventBus.d.ts +0 -12
  133. package/dist/common/EventBus.d.ts.map +0 -1
  134. package/dist/common/EventBus.js +0 -26
  135. package/dist/common/EventBusSingleton.d.ts +0 -4
  136. package/dist/common/EventBusSingleton.d.ts.map +0 -1
  137. package/dist/common/EventBusSingleton.js +0 -18
  138. package/dist/config/environment.d.ts +0 -25
  139. package/dist/config/environment.d.ts.map +0 -1
  140. package/dist/config/environment.js +0 -77
  141. package/dist/controllers/UIEventHandler.d.ts +0 -25
  142. package/dist/controllers/UIEventHandler.d.ts.map +0 -1
  143. package/dist/controllers/UIEventHandler.js +0 -50
  144. package/dist/controllers/UserController.d.ts +0 -9
  145. package/dist/controllers/UserController.d.ts.map +0 -1
  146. package/dist/controllers/UserController.js +0 -36
@@ -1 +1 @@
1
- {"version":3,"file":"IMUserEventStore.d.ts","sourceRoot":"","sources":["../../../src/__tests__/test-helpers/IMUserEventStore.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAElC,qBAAa,gBAAiB,SAAQ,cAAc;IAChD,OAAO,CAAC,MAAM,CAAmB;IAE3B,QAAQ,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;IAI/C,SAAS,IAAI,SAAS,EAAE;IAIxB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,EAAE;IAIlD,KAAK,IAAI,IAAI;CAGhB"}
1
+ {"version":3,"file":"IMUserEventStore.d.ts","sourceRoot":"","sources":["../../../src/__tests__/test-helpers/IMUserEventStore.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAElC,qBAAa,gBAAiB,YAAW,cAAc;IACnD,OAAO,CAAC,MAAM,CAAmB;IAE3B,QAAQ,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;IAI/C,SAAS,IAAI,SAAS,EAAE;IAIxB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,EAAE;IAIlD,KAAK,IAAI,IAAI;CAGhB"}
@@ -1,10 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.IMUserEventStore = void 0;
4
- const __1 = require("../..");
5
- class IMUserEventStore extends __1.UserEventStore {
4
+ class IMUserEventStore {
6
5
  constructor() {
7
- super(...arguments);
8
6
  this.events = [];
9
7
  }
10
8
  async addEvent(event) {
@@ -1,6 +1,6 @@
1
1
  import { UserModelStore } from "../..";
2
2
  import { UserModel } from "../..";
3
- export declare class IMUserModelStore extends UserModelStore {
3
+ export declare class IMUserModelStore implements UserModelStore {
4
4
  private models;
5
5
  getByStreamId(streamId: string): Promise<UserModel | undefined>;
6
6
  getByStreamIdWhereDeletedIsFalse(streamId: string): Promise<UserModel | undefined>;
@@ -1 +1 @@
1
- {"version":3,"file":"IMUserModelStore.d.ts","sourceRoot":"","sources":["../../../src/__tests__/test-helpers/IMUserModelStore.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAElC,qBAAa,gBAAiB,SAAQ,cAAc;IAChD,OAAO,CAAC,MAAM,CAAqC;IAE7C,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,GAAG,SAAS,CAAC;IAK/D,gCAAgC,CAClC,QAAQ,EAAE,MAAM,GACjB,OAAO,CAAC,SAAS,GAAG,SAAS,CAAC;IAQ3B,IAAI,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;IAIrC,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,GAAG,SAAS,CAAC;IAS1D,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,GAAG,SAAS,CAAC;IAS1D,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,GAAG,SAAS,CAAC;IASpE,MAAM,IAAI,SAAS,EAAE;IAIrB,yBAAyB,IAAI,SAAS,EAAE;IAMxC,KAAK,IAAI,IAAI;CAGhB"}
1
+ {"version":3,"file":"IMUserModelStore.d.ts","sourceRoot":"","sources":["../../../src/__tests__/test-helpers/IMUserModelStore.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAElC,qBAAa,gBAAiB,YAAW,cAAc;IACnD,OAAO,CAAC,MAAM,CAAqC;IAE7C,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,GAAG,SAAS,CAAC;IAK/D,gCAAgC,CAClC,QAAQ,EAAE,MAAM,GACjB,OAAO,CAAC,SAAS,GAAG,SAAS,CAAC;IAQ3B,IAAI,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;IAIrC,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,GAAG,SAAS,CAAC;IAS1D,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,GAAG,SAAS,CAAC;IAS1D,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,GAAG,SAAS,CAAC;IASpE,MAAM,IAAI,SAAS,EAAE;IAIrB,yBAAyB,IAAI,SAAS,EAAE;IAMxC,KAAK,IAAI,IAAI;CAGhB"}
@@ -1,10 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.IMUserModelStore = void 0;
4
- const __1 = require("../..");
5
- class IMUserModelStore extends __1.UserModelStore {
4
+ class IMUserModelStore {
6
5
  constructor() {
7
- super(...arguments);
8
6
  this.models = new Map();
9
7
  }
10
8
  async getByStreamId(streamId) {
@@ -1,12 +1,13 @@
1
- import { FriendRequest, FriendResponse, UpdateFriendRequest } from "../../contracts/friends";
1
+ import { FriendRequest, FriendResponse, FriendsResponse, UpdateFriendRequest } from "../../contracts/friends";
2
2
  export declare class FriendController {
3
3
  private get modelStore();
4
- private get eventStore();
5
- addFriend(userId: string, request: FriendRequest): Promise<FriendResponse>;
6
- updateFriend(userId: string, friendId: string, request: UpdateFriendRequest): Promise<FriendResponse>;
4
+ private get friendEventHandler();
5
+ addFriend(userId: string, request: FriendRequest): Promise<string>;
6
+ updateFriend(userId: string, friendId: string, request: UpdateFriendRequest): Promise<void>;
7
7
  deleteFriend(userId: string, friendId: string): Promise<void>;
8
8
  getFriend(userId: string, friendId: string): Promise<FriendResponse>;
9
- getAllFriends(userId: string): Promise<FriendResponse[]>;
9
+ getFriendByStreamId(streamId: string): Promise<FriendResponse>;
10
+ getAllFriends(userId: string): Promise<FriendsResponse>;
10
11
  private toFriendResponse;
11
12
  }
12
13
  //# sourceMappingURL=FriendController.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"FriendController.d.ts","sourceRoot":"","sources":["../../../src/client/controllers/FriendController.ts"],"names":[],"mappings":"AAMA,OAAO,EACH,aAAa,EACb,cAAc,EACd,mBAAmB,EACtB,MAAM,yBAAyB,CAAC;AAKjC,qBAAa,gBAAgB;IACzB,OAAO,KAAK,UAAU,GAGrB;IAED,OAAO,KAAK,UAAU,GAGrB;IAEK,SAAS,CACX,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,aAAa,GACvB,OAAO,CAAC,cAAc,CAAC;IA6BpB,YAAY,CACd,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,mBAAmB,GAC7B,OAAO,CAAC,cAAc,CAAC;IAkDpB,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAwB7D,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;IAapE,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;IAS9D,OAAO,CAAC,gBAAgB;CAkB3B"}
1
+ {"version":3,"file":"FriendController.d.ts","sourceRoot":"","sources":["../../../src/client/controllers/FriendController.ts"],"names":[],"mappings":"AAMA,OAAO,EACH,aAAa,EACb,cAAc,EACd,eAAe,EACf,mBAAmB,EACtB,MAAM,yBAAyB,CAAC;AAKjC,qBAAa,gBAAgB;IACzB,OAAO,KAAK,UAAU,GAGrB;IAED,OAAO,KAAK,kBAAkB,GAE7B;IAEK,SAAS,CACX,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,aAAa,GACvB,OAAO,CAAC,MAAM,CAAC;IA2BZ,YAAY,CACd,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,mBAAmB,GAC7B,OAAO,CAAC,IAAI,CAAC;IA+CV,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAwB7D,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;IAapE,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;IAU9D,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC;IAmB7D,OAAO,CAAC,gBAAgB;CAkB3B"}
@@ -9,9 +9,8 @@ class FriendController {
9
9
  return EventProcessorSDK_1.EventProcessorSDK.getInstance().getStoreConfig()
10
10
  .friendModelStore;
11
11
  }
12
- get eventStore() {
13
- return EventProcessorSDK_1.EventProcessorSDK.getInstance().getStoreConfig()
14
- .friendEventStore;
12
+ get friendEventHandler() {
13
+ return EventProcessorSDK_1.EventProcessorSDK.getInstance().getFriendEventHandler();
15
14
  }
16
15
  async addFriend(userId, request) {
17
16
  if (!request.email && !request.phoneNumber) {
@@ -33,9 +32,8 @@ class FriendController {
33
32
  version: 1,
34
33
  systemGenerated: false,
35
34
  });
36
- await this.eventStore.addEvent(event);
37
- const friendModel = event.apply(undefined);
38
- return this.toFriendResponse(friendModel);
35
+ await this.friendEventHandler.handleEvent(event);
36
+ return streamId;
39
37
  }
40
38
  async updateFriend(userId, friendId, request) {
41
39
  const friendModel = await this.modelStore.findByUserIdAndFriendIdAndDeletedIsFalse(userId, friendId);
@@ -52,7 +50,7 @@ class FriendController {
52
50
  request.name.trim() !== "" &&
53
51
  request.name !== friendModel.friendDisplayName);
54
52
  if (!hasChanges) {
55
- return this.toFriendResponse(friendModel);
53
+ return;
56
54
  }
57
55
  const createdAt = new Date();
58
56
  const event = new FriendEvents_1.FriendUpdated({
@@ -69,9 +67,7 @@ class FriendController {
69
67
  version: friendModel.version + 1,
70
68
  systemGenerated: false,
71
69
  });
72
- await this.eventStore.addEvent(event);
73
- const updatedModel = event.apply(friendModel);
74
- return this.toFriendResponse(updatedModel);
70
+ await this.friendEventHandler.handleEvent(event);
75
71
  }
76
72
  async deleteFriend(userId, friendId) {
77
73
  const friendModel = await this.modelStore.findByUserIdAndFriendIdAndDeletedIsFalse(userId, friendId);
@@ -88,7 +84,7 @@ class FriendController {
88
84
  version: friendModel.version + 1,
89
85
  systemGenerated: false,
90
86
  });
91
- await this.eventStore.addEvent(event);
87
+ await this.friendEventHandler.handleEvent(event);
92
88
  }
93
89
  async getFriend(userId, friendId) {
94
90
  const friendModel = await this.modelStore.findByUserIdAndFriendIdAndDeletedIsFalse(userId, friendId);
@@ -97,9 +93,24 @@ class FriendController {
97
93
  }
98
94
  return this.toFriendResponse(friendModel);
99
95
  }
96
+ async getFriendByStreamId(streamId) {
97
+ const friendModel = await this.modelStore.getByStreamIdWhereDeletedIsFalse(streamId);
98
+ if (!friendModel) {
99
+ throw new Error(`Friend not found: ${streamId}`);
100
+ }
101
+ return this.toFriendResponse(friendModel);
102
+ }
100
103
  async getAllFriends(userId) {
101
104
  const friendModels = await this.modelStore.findAllByUserIdWhereDeletedIsFalse(userId);
102
- return friendModels.map((friendModel) => this.toFriendResponse(friendModel));
105
+ const friends = friendModels.map((friendModel) => this.toFriendResponse(friendModel));
106
+ const emptyBalance = {
107
+ main: undefined,
108
+ other: [],
109
+ };
110
+ return {
111
+ friends,
112
+ balance: emptyBalance,
113
+ };
103
114
  }
104
115
  toFriendResponse(friendModel) {
105
116
  const emptyBalance = {
@@ -1 +1 @@
1
- {"version":3,"file":"UserController.d.ts","sourceRoot":"","sources":["../../../src/client/controllers/UserController.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAKxE,qBAAa,cAAc;IACvB,OAAO,KAAK,UAAU,GAErB;IAED,OAAO,KAAK,UAAU,GAErB;IAEK,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAsC5C,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IAU9C,UAAU,CACZ,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,iBAAiB,GAC3B,OAAO,CAAC,YAAY,CAAC;IAyExB,OAAO,CAAC,cAAc;CAiBzB"}
1
+ {"version":3,"file":"UserController.d.ts","sourceRoot":"","sources":["../../../src/client/controllers/UserController.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAIxE,qBAAa,cAAc;IACvB,OAAO,KAAK,UAAU,GAErB;IAED,OAAO,KAAK,UAAU,GAErB;IAEK,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAQ5C,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IAU9C,UAAU,CACZ,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,iBAAiB,GAC3B,OAAO,CAAC,YAAY,CAAC;IAyExB,OAAO,CAAC,cAAc;CAiBzB"}
@@ -1,9 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.UserController = void 0;
4
- const EventBusSingleton_1 = require("../../common/EventBusSingleton");
5
4
  const UserEvents_1 = require("../../UserEvents");
6
- const rxjs_1 = require("rxjs");
7
5
  const EventProcessorSDK_1 = require("../../EventProcessorSDK");
8
6
  const uuid_1 = require("uuid");
9
7
  class UserController {
@@ -15,28 +13,10 @@ class UserController {
15
13
  }
16
14
  async loginUser(userFSId) {
17
15
  const existingUser = await this.modelStore.findByFirebaseUid(userFSId);
18
- if (existingUser) {
19
- return existingUser.userId;
20
- }
21
- const eventBus = (0, EventBusSingleton_1.getEventBus)();
22
- const isUserCreatedForFirebaseUid = (event) => {
23
- return (event instanceof UserEvents_1.UserCreated && event.firebaseUid === userFSId);
24
- };
25
- try {
26
- const event = await (0, rxjs_1.firstValueFrom)(eventBus
27
- .observable(isUserCreatedForFirebaseUid)
28
- .pipe((0, rxjs_1.timeout)(10000)));
29
- if (!event.userId) {
30
- throw new Error("UserCreated event missing userId");
31
- }
32
- return event.userId;
33
- }
34
- catch (error) {
35
- if (error.name === "TimeoutError") {
36
- throw new Error(`Timeout waiting for UserCreated event for firebaseUid: ${userFSId}`);
37
- }
38
- throw error;
16
+ if (!existingUser) {
17
+ throw new Error(`User not found for firebaseUid: ${userFSId}`);
39
18
  }
19
+ return existingUser.userId;
40
20
  }
41
21
  async getUser(userId) {
42
22
  const userModel = await this.modelStore.getByStreamIdWhereDeletedIsFalse(userId);
@@ -1,25 +1,7 @@
1
- import { UserModelStore } from "../../store/UserModelStore";
2
- interface FirestoreTimestamp {
3
- toDate(): Date;
4
- seconds: number;
5
- nanoseconds: number;
6
- }
7
- interface ClientFirestoreEventData {
8
- id: string;
9
- eventType: string;
10
- streamId: string;
11
- version: number;
12
- createdAt: FirestoreTimestamp | Date;
13
- createdBy: string;
14
- systemGenerated?: boolean;
15
- [key: string]: any;
16
- }
1
+ import { Event } from "../../index";
17
2
  export declare class UIEventHandler {
18
- private userModelStore;
19
- constructor(userModelStore: UserModelStore);
20
- handleFirestoreEvent(eventData: ClientFirestoreEventData): Promise<void>;
21
- private firestoreToEvent;
22
- private toDate;
3
+ constructor();
4
+ private shouldSkipSave;
5
+ handleFirestoreEvent(event: Event): Promise<void>;
23
6
  }
24
- export {};
25
7
  //# sourceMappingURL=UIEventHandler.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"UIEventHandler.d.ts","sourceRoot":"","sources":["../../../src/client/handlers/UIEventHandler.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAI5D,UAAU,kBAAkB;IACxB,MAAM,IAAI,IAAI,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;CACvB;AAED,UAAU,wBAAwB;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,kBAAkB,GAAG,IAAI,CAAC;IACrC,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACtB;AAED,qBAAa,cAAc;IACX,OAAO,CAAC,cAAc;gBAAd,cAAc,EAAE,cAAc;IAE5C,oBAAoB,CACtB,SAAS,EAAE,wBAAwB,GACpC,OAAO,CAAC,IAAI,CAAC;IAchB,OAAO,CAAC,gBAAgB;IAyBxB,OAAO,CAAC,MAAM;CASjB"}
1
+ {"version":3,"file":"UIEventHandler.d.ts","sourceRoot":"","sources":["../../../src/client/handlers/UIEventHandler.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,KAAK,EAOR,MAAM,aAAa,CAAC;AAWrB,qBAAa,cAAc;;IAGvB,OAAO,CAAC,cAAc;IA0BhB,oBAAoB,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC;CAwF1D"}
@@ -1,52 +1,71 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.UIEventHandler = void 0;
4
- const index_1 = require("../../index");
5
- const EventBusSingleton_1 = require("../../common/EventBusSingleton");
6
- const uuid_1 = require("uuid");
4
+ const DomainEvents_1 = require("../../common/DomainEvents");
5
+ const EventProcessorSDK_1 = require("../../EventProcessorSDK");
7
6
  class UIEventHandler {
8
- constructor(userModelStore) {
9
- this.userModelStore = userModelStore;
7
+ constructor() { }
8
+ shouldSkipSave(existingModel, updatedModel) {
9
+ if (!existingModel) {
10
+ return false;
11
+ }
12
+ return (existingModel.streamId === updatedModel.streamId &&
13
+ existingModel.version === updatedModel.version);
10
14
  }
11
- async handleFirestoreEvent(eventData) {
12
- const event = this.firestoreToEvent(eventData);
13
- if (event instanceof index_1.UserCreated) {
14
- const existingModel = await this.userModelStore.getByStreamIdWhereDeletedIsFalse(event.streamId);
15
+ async handleFirestoreEvent(event) {
16
+ const storeConfig = EventProcessorSDK_1.EventProcessorSDK.getInstance().getStoreConfig();
17
+ const eventType = event.constructor.name;
18
+ if ((0, DomainEvents_1.isValidUserEventType)(eventType)) {
19
+ const existingModel = await storeConfig.userModelStore.getByStreamIdWhereDeletedIsFalse(event.streamId);
15
20
  const updatedModel = event.apply(existingModel);
16
- await this.userModelStore.save(updatedModel);
17
- (0, EventBusSingleton_1.getEventBus)().publish(event);
21
+ if (!this.shouldSkipSave(existingModel, updatedModel)) {
22
+ await storeConfig.userModelStore.save(updatedModel);
23
+ EventProcessorSDK_1.EventProcessorSDK.getInstance().emitModelChange("UserModel", updatedModel);
24
+ }
18
25
  }
19
- }
20
- firestoreToEvent(data) {
21
- const eventType = data.eventType;
22
- const createdAt = this.toDate(data.createdAt);
23
- if (eventType === "UserCreated") {
24
- return new index_1.UserCreated({
25
- eventId: (0, uuid_1.v4)(),
26
- userId: data.userId,
27
- firebaseUid: data.firebaseUid,
28
- displayName: data.displayName,
29
- phoneNumber: data.phoneNumber,
30
- email: data.email,
31
- photoUrl: data.photoUrl,
32
- emailVerified: data.emailVerified,
33
- createdAt,
34
- createdBy: data.createdBy,
35
- streamId: data.streamId,
36
- version: data.version,
37
- systemGenerated: data.systemGenerated ?? false,
38
- });
39
- }
40
- throw new Error(`Unsupported event type: ${eventType}`);
41
- }
42
- toDate(timestamp) {
43
- if (timestamp instanceof Date) {
44
- return timestamp;
26
+ else if ((0, DomainEvents_1.isValidFriendEventType)(eventType)) {
27
+ const existingModel = await storeConfig.friendModelStore.getByStreamIdWhereDeletedIsFalse(event.streamId);
28
+ const updatedModel = event.apply(existingModel);
29
+ if (!this.shouldSkipSave(existingModel, updatedModel)) {
30
+ await storeConfig.friendModelStore.save(updatedModel);
31
+ EventProcessorSDK_1.EventProcessorSDK.getInstance().emitModelChange("FriendModel", updatedModel);
32
+ }
33
+ }
34
+ else if ((0, DomainEvents_1.isValidTransactionEventType)(eventType)) {
35
+ const existingModel = await storeConfig.transactionModelStore.getByStreamIdWhereDeletedIsFalse(event.streamId);
36
+ const updatedModel = event.apply(existingModel);
37
+ if (!this.shouldSkipSave(existingModel, updatedModel)) {
38
+ await storeConfig.transactionModelStore.save(updatedModel);
39
+ EventProcessorSDK_1.EventProcessorSDK.getInstance().emitModelChange("TransactionModel", updatedModel);
40
+ }
41
+ }
42
+ else if ((0, DomainEvents_1.isValidGroupEventType)(eventType)) {
43
+ const existingModel = await storeConfig.groupModelStore.getByStreamIdWhereDeletedIsFalse(event.streamId);
44
+ const updatedModel = event.apply(existingModel);
45
+ if (!this.shouldSkipSave(existingModel, updatedModel)) {
46
+ await storeConfig.groupModelStore.save(updatedModel);
47
+ EventProcessorSDK_1.EventProcessorSDK.getInstance().emitModelChange("GroupModel", updatedModel);
48
+ }
49
+ }
50
+ else if ((0, DomainEvents_1.isValidGroupTransactionEventType)(eventType)) {
51
+ const existingModel = await storeConfig.groupTransactionModelStore.getByStreamIdWhereDeletedIsFalse(event.streamId);
52
+ const updatedModel = event.apply(existingModel);
53
+ if (!this.shouldSkipSave(existingModel, updatedModel)) {
54
+ await storeConfig.groupTransactionModelStore.save(updatedModel);
55
+ EventProcessorSDK_1.EventProcessorSDK.getInstance().emitModelChange("GroupTransactionModel", updatedModel);
56
+ }
57
+ }
58
+ else if ((0, DomainEvents_1.isValidActivityLogEventType)(eventType)) {
59
+ const existingModel = await storeConfig.activityLogModelStore.getByStreamIdWhereDeletedIsFalse(event.streamId);
60
+ const updatedModel = event.apply(existingModel);
61
+ if (!this.shouldSkipSave(existingModel, updatedModel)) {
62
+ await storeConfig.activityLogModelStore.save(updatedModel);
63
+ EventProcessorSDK_1.EventProcessorSDK.getInstance().emitModelChange("ActivityLogModel", updatedModel);
64
+ }
45
65
  }
46
- if (typeof timestamp === "object" && "toDate" in timestamp) {
47
- return timestamp.toDate();
66
+ else {
67
+ throw new Error(`Unsupported event type: ${eventType}`);
48
68
  }
49
- return new Date(timestamp);
50
69
  }
51
70
  }
52
71
  exports.UIEventHandler = UIEventHandler;
@@ -1 +1 @@
1
- {"version":3,"file":"eventConverter.d.ts","sourceRoot":"","sources":["../../src/converters/eventConverter.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,KAAK,EAkBR,MAAM,WAAW,CAAC;AACnB,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAE9D,MAAM,WAAW,kBAAkB;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,GAAG,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACtB;AAwCD,wBAAgB,gBAAgB,CAC5B,KAAK,EAAE,KAAK,EACZ,eAAe,EAAE,eAAe,GACjC,kBAAkB,CA0GpB;AAED,wBAAgB,gBAAgB,CAC5B,IAAI,EAAE,kBAAkB,EACxB,eAAe,EAAE,eAAe,GACjC,KAAK,CAyPP"}
1
+ {"version":3,"file":"eventConverter.d.ts","sourceRoot":"","sources":["../../src/converters/eventConverter.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,KAAK,EAkBR,MAAM,WAAW,CAAC;AAEnB,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAE9D,MAAM,WAAW,kBAAkB;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,GAAG,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACtB;AAwCD,wBAAgB,gBAAgB,CAC5B,KAAK,EAAE,KAAK,EACZ,eAAe,EAAE,eAAe,GACjC,kBAAkB,CAmHpB;AAED,wBAAgB,gBAAgB,CAC5B,IAAI,EAAE,kBAAkB,EACxB,eAAe,EAAE,eAAe,GACjC,KAAK,CA0QP"}
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.eventToFirestore = eventToFirestore;
4
4
  exports.firestoreToEvent = firestoreToEvent;
5
5
  const events_1 = require("../events");
6
+ const ActivityLogEvents_1 = require("../ActivityLogEvents");
6
7
  const MAIN_TYPE_TO_EVENT_TYPES = {
7
8
  transaction: [
8
9
  "TransactionCreated",
@@ -49,7 +50,7 @@ function eventToFirestore(event, firebaseAdapter) {
49
50
  createdBy: event.createdBy,
50
51
  eventType,
51
52
  eventMainType,
52
- systemGenerated: true,
53
+ systemGenerated: event.systemGenerated,
53
54
  };
54
55
  if (eventType === "TransactionCreated") {
55
56
  const txEvent = event;
@@ -125,6 +126,14 @@ function eventToFirestore(event, firebaseAdapter) {
125
126
  const friendEvent = event;
126
127
  eventData.friendId = friendEvent.friendId;
127
128
  }
129
+ if (eventType === "ActivityLogCreated") {
130
+ const activityLogEvent = event;
131
+ eventData.activityByUid = activityLogEvent.activityByUid;
132
+ eventData.sourceStreamId = activityLogEvent.sourceStreamId;
133
+ eventData.sourceType = activityLogEvent.sourceType;
134
+ eventData.logMessage = activityLogEvent.logMessage;
135
+ eventData.date = firebaseAdapter.fromDate(activityLogEvent.date);
136
+ }
128
137
  return eventData;
129
138
  }
130
139
  function firestoreToEvent(data, firebaseAdapter) {
@@ -357,5 +366,21 @@ function firestoreToEvent(data, firebaseAdapter) {
357
366
  systemGenerated: data.systemGenerated ?? true,
358
367
  });
359
368
  }
369
+ if (eventType === "ActivityLogCreated") {
370
+ return new ActivityLogEvents_1.ActivityLogCreated({
371
+ eventId: data.eventId,
372
+ userId: data.userId,
373
+ activityByUid: data.activityByUid,
374
+ sourceStreamId: data.sourceStreamId,
375
+ sourceType: data.sourceType,
376
+ logMessage: data.logMessage,
377
+ date: firebaseAdapter.toDate(data.date),
378
+ createdAt: firebaseAdapter.toDate(data.createdAt),
379
+ createdBy: data.createdBy,
380
+ streamId: data.streamId,
381
+ version: data.version,
382
+ systemGenerated: data.systemGenerated ?? true,
383
+ });
384
+ }
360
385
  throw new Error(`Unknown event type: ${eventType}`);
361
386
  }
package/dist/index.d.ts CHANGED
@@ -8,10 +8,10 @@ export { UITransactionEventHandler } from "./client/handlers/UITransactionEventH
8
8
  export { UIFriendEventHandler } from "./client/handlers/UIFriendEventHandler";
9
9
  export { UIGroupEventHandler } from "./client/handlers/UIGroupEventHandler";
10
10
  export { UIGroupTransactionEventHandler } from "./client/handlers/UIGroupTransactionEventHandler";
11
- export { EventProcessorSDK, initializeSDK, getUserController, getFriendController, getUIEventHandler, getFirebaseAdapter, eventToFirestore, firestoreToEvent, isSDKInitialized, StoreConfig, } from "./EventProcessorSDK";
11
+ export { EventProcessorSDK, initializeSDK, getUserController, getFriendController, getUIEventHandler, getUserEventHandler, getFriendEventHandler, getTransactionEventHandler, getGroupEventHandler, getGroupTransactionEventHandler, getActivityEventHandler, getFirebaseAdapter, getModelChangeObservable, eventToFirestore, firestoreToEvent, isSDKInitialized, StoreConfig, } from "./EventProcessorSDK";
12
+ export { ModelChangeEmitter, ModelChange } from "./ModelChangeEmitter";
12
13
  export { FirebaseAdapter } from "./adapters/FirebaseAdapter";
13
14
  export type { FirestoreEventData } from "./converters/eventConverter";
14
- export { resetEventBus } from "./common/EventBusSingleton";
15
15
  export { __resetSDKForTesting } from "./EventProcessorSDK";
16
16
  export declare const residence: {
17
17
  isClient: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,cAAc,UAAU,CAAC;AAGzB,OAAO,EACH,gBAAgB,EAChB,SAAS,EACT,WAAW,EACX,UAAU,EACV,qBAAqB,EACrB,gBAAgB,EAChB,cAAc,EACd,gBAAgB,EAChB,qBAAqB,EACrB,eAAe,EACf,0BAA0B,EAC1B,qBAAqB,EACrB,sBAAsB,EACtB,wBAAwB,EACxB,6BAA6B,EAC7B,uBAAuB,EACvB,mCAAmC,EACnC,8BAA8B,EAC9B,oBAAoB,EACpB,sBAAsB,EACtB,2BAA2B,EAC3B,qBAAqB,EACrB,gCAAgC,EAChC,2BAA2B,GAC9B,MAAM,uBAAuB,CAAC;AAG/B,OAAO,EAAE,cAAc,EAAE,MAAM,qCAAqC,CAAC;AACrE,OAAO,EAAE,gBAAgB,EAAE,MAAM,uCAAuC,CAAC;AAGzE,OAAO,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAC;AAClE,OAAO,EAAE,kBAAkB,EAAE,MAAM,sCAAsC,CAAC;AAC1E,OAAO,EAAE,yBAAyB,EAAE,MAAM,6CAA6C,CAAC;AACxF,OAAO,EAAE,oBAAoB,EAAE,MAAM,wCAAwC,CAAC;AAC9E,OAAO,EAAE,mBAAmB,EAAE,MAAM,uCAAuC,CAAC;AAC5E,OAAO,EAAE,8BAA8B,EAAE,MAAM,kDAAkD,CAAC;AAGlG,OAAO,EACH,iBAAiB,EACjB,aAAa,EACb,iBAAiB,EACjB,mBAAmB,EACnB,iBAAiB,EACjB,kBAAkB,EAClB,gBAAgB,EAChB,gBAAgB,EAChB,gBAAgB,EAChB,WAAW,GACd,MAAM,qBAAqB,CAAC;AAG7B,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAG7D,YAAY,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AAGtE,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAG3D,eAAO,MAAM,SAAS;;CAErB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,cAAc,UAAU,CAAC;AAGzB,OAAO,EACH,gBAAgB,EAChB,SAAS,EACT,WAAW,EACX,UAAU,EACV,qBAAqB,EACrB,gBAAgB,EAChB,cAAc,EACd,gBAAgB,EAChB,qBAAqB,EACrB,eAAe,EACf,0BAA0B,EAC1B,qBAAqB,EACrB,sBAAsB,EACtB,wBAAwB,EACxB,6BAA6B,EAC7B,uBAAuB,EACvB,mCAAmC,EACnC,8BAA8B,EAC9B,oBAAoB,EACpB,sBAAsB,EACtB,2BAA2B,EAC3B,qBAAqB,EACrB,gCAAgC,EAChC,2BAA2B,GAC9B,MAAM,uBAAuB,CAAC;AAG/B,OAAO,EAAE,cAAc,EAAE,MAAM,qCAAqC,CAAC;AACrE,OAAO,EAAE,gBAAgB,EAAE,MAAM,uCAAuC,CAAC;AAGzE,OAAO,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAC;AAClE,OAAO,EAAE,kBAAkB,EAAE,MAAM,sCAAsC,CAAC;AAC1E,OAAO,EAAE,yBAAyB,EAAE,MAAM,6CAA6C,CAAC;AACxF,OAAO,EAAE,oBAAoB,EAAE,MAAM,wCAAwC,CAAC;AAC9E,OAAO,EAAE,mBAAmB,EAAE,MAAM,uCAAuC,CAAC;AAC5E,OAAO,EAAE,8BAA8B,EAAE,MAAM,kDAAkD,CAAC;AAGlG,OAAO,EACH,iBAAiB,EACjB,aAAa,EACb,iBAAiB,EACjB,mBAAmB,EACnB,iBAAiB,EACjB,mBAAmB,EACnB,qBAAqB,EACrB,0BAA0B,EAC1B,oBAAoB,EACpB,+BAA+B,EAC/B,uBAAuB,EACvB,kBAAkB,EAClB,wBAAwB,EACxB,gBAAgB,EAChB,gBAAgB,EAChB,gBAAgB,EAChB,WAAW,GACd,MAAM,qBAAqB,CAAC;AAG7B,OAAO,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAGvE,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAG7D,YAAY,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AAGtE,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAG3D,eAAO,MAAM,SAAS;;CAErB,CAAC"}
package/dist/index.js CHANGED
@@ -14,7 +14,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
14
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
- exports.residence = exports.__resetSDKForTesting = exports.resetEventBus = exports.isSDKInitialized = exports.firestoreToEvent = exports.eventToFirestore = exports.getFirebaseAdapter = exports.getUIEventHandler = exports.getFriendController = exports.getUserController = exports.initializeSDK = exports.EventProcessorSDK = exports.UIGroupTransactionEventHandler = exports.UIGroupEventHandler = exports.UIFriendEventHandler = exports.UITransactionEventHandler = exports.UIUserEventHandler = exports.UIEventHandler = exports.FriendController = exports.UserController = exports.isValidActivityLogEventType = exports.isValidGroupTransactionEventType = exports.isValidGroupEventType = exports.isValidTransactionEventType = exports.isValidFriendEventType = exports.isValidUserEventType = exports.VALID_ACTIVITY_LOG_EVENT_TYPES = exports.VALID_GROUP_TRANSACTION_EVENT_TYPES = exports.VALID_GROUP_EVENT_TYPES = exports.VALID_TRANSACTION_EVENT_TYPES = exports.VALID_FRIEND_EVENT_TYPES = exports.VALID_USER_EVENT_TYPES = exports.ActivityLogEventTypes = exports.GroupTransactionEventTypes = exports.GroupEventTypes = exports.TransactionEventTypes = exports.FriendEventTypes = exports.UserEventTypes = void 0;
17
+ exports.residence = exports.__resetSDKForTesting = exports.ModelChangeEmitter = exports.isSDKInitialized = exports.firestoreToEvent = exports.eventToFirestore = exports.getModelChangeObservable = exports.getFirebaseAdapter = exports.getActivityEventHandler = exports.getGroupTransactionEventHandler = exports.getGroupEventHandler = exports.getTransactionEventHandler = exports.getFriendEventHandler = exports.getUserEventHandler = exports.getUIEventHandler = exports.getFriendController = exports.getUserController = exports.initializeSDK = exports.EventProcessorSDK = exports.UIGroupTransactionEventHandler = exports.UIGroupEventHandler = exports.UIFriendEventHandler = exports.UITransactionEventHandler = exports.UIUserEventHandler = exports.UIEventHandler = exports.FriendController = exports.UserController = exports.isValidActivityLogEventType = exports.isValidGroupTransactionEventType = exports.isValidGroupEventType = exports.isValidTransactionEventType = exports.isValidFriendEventType = exports.isValidUserEventType = exports.VALID_ACTIVITY_LOG_EVENT_TYPES = exports.VALID_GROUP_TRANSACTION_EVENT_TYPES = exports.VALID_GROUP_EVENT_TYPES = exports.VALID_TRANSACTION_EVENT_TYPES = exports.VALID_FRIEND_EVENT_TYPES = exports.VALID_USER_EVENT_TYPES = exports.ActivityLogEventTypes = exports.GroupTransactionEventTypes = exports.GroupEventTypes = exports.TransactionEventTypes = exports.FriendEventTypes = exports.UserEventTypes = void 0;
18
18
  // Export all backend event definitions here
19
19
  __exportStar(require("./events"), exports);
20
20
  // Export domain-specific event interfaces, types, and validation
@@ -62,13 +62,21 @@ Object.defineProperty(exports, "initializeSDK", { enumerable: true, get: functio
62
62
  Object.defineProperty(exports, "getUserController", { enumerable: true, get: function () { return EventProcessorSDK_1.getUserController; } });
63
63
  Object.defineProperty(exports, "getFriendController", { enumerable: true, get: function () { return EventProcessorSDK_1.getFriendController; } });
64
64
  Object.defineProperty(exports, "getUIEventHandler", { enumerable: true, get: function () { return EventProcessorSDK_1.getUIEventHandler; } });
65
+ Object.defineProperty(exports, "getUserEventHandler", { enumerable: true, get: function () { return EventProcessorSDK_1.getUserEventHandler; } });
66
+ Object.defineProperty(exports, "getFriendEventHandler", { enumerable: true, get: function () { return EventProcessorSDK_1.getFriendEventHandler; } });
67
+ Object.defineProperty(exports, "getTransactionEventHandler", { enumerable: true, get: function () { return EventProcessorSDK_1.getTransactionEventHandler; } });
68
+ Object.defineProperty(exports, "getGroupEventHandler", { enumerable: true, get: function () { return EventProcessorSDK_1.getGroupEventHandler; } });
69
+ Object.defineProperty(exports, "getGroupTransactionEventHandler", { enumerable: true, get: function () { return EventProcessorSDK_1.getGroupTransactionEventHandler; } });
70
+ Object.defineProperty(exports, "getActivityEventHandler", { enumerable: true, get: function () { return EventProcessorSDK_1.getActivityEventHandler; } });
65
71
  Object.defineProperty(exports, "getFirebaseAdapter", { enumerable: true, get: function () { return EventProcessorSDK_1.getFirebaseAdapter; } });
72
+ Object.defineProperty(exports, "getModelChangeObservable", { enumerable: true, get: function () { return EventProcessorSDK_1.getModelChangeObservable; } });
66
73
  Object.defineProperty(exports, "eventToFirestore", { enumerable: true, get: function () { return EventProcessorSDK_1.eventToFirestore; } });
67
74
  Object.defineProperty(exports, "firestoreToEvent", { enumerable: true, get: function () { return EventProcessorSDK_1.firestoreToEvent; } });
68
75
  Object.defineProperty(exports, "isSDKInitialized", { enumerable: true, get: function () { return EventProcessorSDK_1.isSDKInitialized; } });
76
+ // Export ModelChangeEmitter
77
+ var ModelChangeEmitter_1 = require("./ModelChangeEmitter");
78
+ Object.defineProperty(exports, "ModelChangeEmitter", { enumerable: true, get: function () { return ModelChangeEmitter_1.ModelChangeEmitter; } });
69
79
  // Export singleton utilities for testing
70
- var EventBusSingleton_1 = require("./common/EventBusSingleton");
71
- Object.defineProperty(exports, "resetEventBus", { enumerable: true, get: function () { return EventBusSingleton_1.resetEventBus; } });
72
80
  var EventProcessorSDK_2 = require("./EventProcessorSDK");
73
81
  Object.defineProperty(exports, "__resetSDKForTesting", { enumerable: true, get: function () { return EventProcessorSDK_2.__resetSDKForTesting; } });
74
82
  // Export environment context
@@ -1,5 +1,5 @@
1
1
  import { ActivityLogEvent } from "../common/DomainEvents";
2
- export declare abstract class ActivityLogEventStore {
3
- abstract addEvent(event: ActivityLogEvent): Promise<void>;
2
+ export interface ActivityLogEventStore {
3
+ addEvent(event: ActivityLogEvent): Promise<void>;
4
4
  }
5
5
  //# sourceMappingURL=ActivityLogEventStore.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ActivityLogEventStore.d.ts","sourceRoot":"","sources":["../../src/store/ActivityLogEventStore.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAE1D,8BAAsB,qBAAqB;IACvC,QAAQ,CAAC,QAAQ,CAAC,KAAK,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;CAC5D"}
1
+ {"version":3,"file":"ActivityLogEventStore.d.ts","sourceRoot":"","sources":["../../src/store/ActivityLogEventStore.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAE1D,MAAM,WAAW,qBAAqB;IAClC,QAAQ,CAAC,KAAK,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACpD"}
@@ -1,6 +1,2 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ActivityLogEventStore = void 0;
4
- class ActivityLogEventStore {
5
- }
6
- exports.ActivityLogEventStore = ActivityLogEventStore;
@@ -1,8 +1,8 @@
1
1
  import { ActivityLogModel } from "..";
2
2
  import { ModelStore } from "./ModelStore";
3
- export declare abstract class ActivityLogModelStore extends ModelStore {
4
- abstract getByStreamId(streamId: string): Promise<ActivityLogModel | undefined>;
5
- abstract getByStreamIdWhereDeletedIsFalse(streamId: string): Promise<ActivityLogModel | undefined>;
6
- abstract save(model: ActivityLogModel): Promise<void>;
3
+ export interface ActivityLogModelStore extends ModelStore {
4
+ getByStreamId(streamId: string): Promise<ActivityLogModel | undefined>;
5
+ getByStreamIdWhereDeletedIsFalse(streamId: string): Promise<ActivityLogModel | undefined>;
6
+ save(model: ActivityLogModel): Promise<void>;
7
7
  }
8
8
  //# sourceMappingURL=ActivityLogModelStore.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ActivityLogModelStore.d.ts","sourceRoot":"","sources":["../../src/store/ActivityLogModelStore.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,IAAI,CAAC;AACtC,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C,8BAAsB,qBAAsB,SAAQ,UAAU;IAC1D,QAAQ,CAAC,aAAa,CAClB,QAAQ,EAAE,MAAM,GACjB,OAAO,CAAC,gBAAgB,GAAG,SAAS,CAAC;IACxC,QAAQ,CAAC,gCAAgC,CACrC,QAAQ,EAAE,MAAM,GACjB,OAAO,CAAC,gBAAgB,GAAG,SAAS,CAAC;IACxC,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;CACxD"}
1
+ {"version":3,"file":"ActivityLogModelStore.d.ts","sourceRoot":"","sources":["../../src/store/ActivityLogModelStore.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,IAAI,CAAC;AACtC,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C,MAAM,WAAW,qBAAsB,SAAQ,UAAU;IACrD,aAAa,CACT,QAAQ,EAAE,MAAM,GACjB,OAAO,CAAC,gBAAgB,GAAG,SAAS,CAAC,CAAC;IACzC,gCAAgC,CAC5B,QAAQ,EAAE,MAAM,GACjB,OAAO,CAAC,gBAAgB,GAAG,SAAS,CAAC,CAAC;IACzC,IAAI,CAAC,KAAK,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAChD"}
@@ -1,7 +1,2 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ActivityLogModelStore = void 0;
4
- const ModelStore_1 = require("./ModelStore");
5
- class ActivityLogModelStore extends ModelStore_1.ModelStore {
6
- }
7
- exports.ActivityLogModelStore = ActivityLogModelStore;
@@ -1,5 +1,5 @@
1
1
  import { FriendEvent } from "../common/DomainEvents";
2
- export declare abstract class FriendEventStore {
3
- abstract addEvent(event: FriendEvent): Promise<void>;
2
+ export interface FriendEventStore {
3
+ addEvent(event: FriendEvent): Promise<void>;
4
4
  }
5
5
  //# sourceMappingURL=FriendEventStore.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"FriendEventStore.d.ts","sourceRoot":"","sources":["../../src/store/FriendEventStore.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAErD,8BAAsB,gBAAgB;IAClC,QAAQ,CAAC,QAAQ,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;CACvD"}
1
+ {"version":3,"file":"FriendEventStore.d.ts","sourceRoot":"","sources":["../../src/store/FriendEventStore.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAErD,MAAM,WAAW,gBAAgB;IAC7B,QAAQ,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC/C"}
@@ -1,6 +1,2 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.FriendEventStore = void 0;
4
- class FriendEventStore {
5
- }
6
- exports.FriendEventStore = FriendEventStore;
@@ -1,13 +1,13 @@
1
1
  import { FriendModel } from "..";
2
2
  import { ModelStore } from "./ModelStore";
3
- export declare abstract class FriendModelStore extends ModelStore {
4
- abstract getByStreamId(streamId: string): Promise<FriendModel | undefined>;
5
- abstract getByStreamIdWhereDeletedIsFalse(streamId: string): Promise<FriendModel | undefined>;
6
- abstract save(model: FriendModel): Promise<void>;
7
- abstract findByUserIdAndStreamIdAndDeletedIsFalse(userId: string, streamId: string): Promise<FriendModel | undefined>;
8
- abstract findByUserIdAndFriendIdAndDeletedIsFalse(userId: string, friendId: string): Promise<FriendModel | undefined>;
9
- abstract findByUserIdAndFriendEmailAndDeletedIsFalse(userId: string, email: string): Promise<FriendModel | undefined>;
10
- abstract findByUserIdAndFriendPhoneNumberAndDeletedIsFalse(userId: string, phoneNumber: string): Promise<FriendModel | undefined>;
11
- abstract findAllByUserIdWhereDeletedIsFalse(userId: string): Promise<FriendModel[]>;
3
+ export interface FriendModelStore extends ModelStore {
4
+ getByStreamId(streamId: string): Promise<FriendModel | undefined>;
5
+ getByStreamIdWhereDeletedIsFalse(streamId: string): Promise<FriendModel | undefined>;
6
+ save(model: FriendModel): Promise<void>;
7
+ findByUserIdAndStreamIdAndDeletedIsFalse(userId: string, streamId: string): Promise<FriendModel | undefined>;
8
+ findByUserIdAndFriendIdAndDeletedIsFalse(userId: string, friendId: string): Promise<FriendModel | undefined>;
9
+ findByUserIdAndFriendEmailAndDeletedIsFalse(userId: string, email: string): Promise<FriendModel | undefined>;
10
+ findByUserIdAndFriendPhoneNumberAndDeletedIsFalse(userId: string, phoneNumber: string): Promise<FriendModel | undefined>;
11
+ findAllByUserIdWhereDeletedIsFalse(userId: string): Promise<FriendModel[]>;
12
12
  }
13
13
  //# sourceMappingURL=FriendModelStore.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"FriendModelStore.d.ts","sourceRoot":"","sources":["../../src/store/FriendModelStore.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,IAAI,CAAC;AACjC,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C,8BAAsB,gBAAiB,SAAQ,UAAU;IACrD,QAAQ,CAAC,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,GAAG,SAAS,CAAC;IAE1E,QAAQ,CAAC,gCAAgC,CACrC,QAAQ,EAAE,MAAM,GACjB,OAAO,CAAC,WAAW,GAAG,SAAS,CAAC;IAEnC,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IAEhD,QAAQ,CAAC,wCAAwC,CAC7C,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,GACjB,OAAO,CAAC,WAAW,GAAG,SAAS,CAAC;IAEnC,QAAQ,CAAC,wCAAwC,CAC7C,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,GACjB,OAAO,CAAC,WAAW,GAAG,SAAS,CAAC;IAEnC,QAAQ,CAAC,2CAA2C,CAChD,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,GACd,OAAO,CAAC,WAAW,GAAG,SAAS,CAAC;IAEnC,QAAQ,CAAC,iDAAiD,CACtD,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,MAAM,GACpB,OAAO,CAAC,WAAW,GAAG,SAAS,CAAC;IAEnC,QAAQ,CAAC,kCAAkC,CACvC,MAAM,EAAE,MAAM,GACf,OAAO,CAAC,WAAW,EAAE,CAAC;CAC5B"}
1
+ {"version":3,"file":"FriendModelStore.d.ts","sourceRoot":"","sources":["../../src/store/FriendModelStore.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,IAAI,CAAC;AACjC,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C,MAAM,WAAW,gBAAiB,SAAQ,UAAU;IAChD,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,GAAG,SAAS,CAAC,CAAC;IAElE,gCAAgC,CAC5B,QAAQ,EAAE,MAAM,GACjB,OAAO,CAAC,WAAW,GAAG,SAAS,CAAC,CAAC;IAEpC,IAAI,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAExC,wCAAwC,CACpC,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,GACjB,OAAO,CAAC,WAAW,GAAG,SAAS,CAAC,CAAC;IAEpC,wCAAwC,CACpC,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,GACjB,OAAO,CAAC,WAAW,GAAG,SAAS,CAAC,CAAC;IAEpC,2CAA2C,CACvC,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,GACd,OAAO,CAAC,WAAW,GAAG,SAAS,CAAC,CAAC;IAEpC,iDAAiD,CAC7C,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,MAAM,GACpB,OAAO,CAAC,WAAW,GAAG,SAAS,CAAC,CAAC;IAEpC,kCAAkC,CAC9B,MAAM,EAAE,MAAM,GACf,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;CAC7B"}
@@ -1,7 +1,2 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.FriendModelStore = void 0;
4
- const ModelStore_1 = require("./ModelStore");
5
- class FriendModelStore extends ModelStore_1.ModelStore {
6
- }
7
- exports.FriendModelStore = FriendModelStore;
@@ -1,5 +1,5 @@
1
1
  import { GroupEvent } from "../common/DomainEvents";
2
- export declare abstract class GroupEventStore {
3
- abstract addEvent(event: GroupEvent): Promise<void>;
2
+ export interface GroupEventStore {
3
+ addEvent(event: GroupEvent): Promise<void>;
4
4
  }
5
5
  //# sourceMappingURL=GroupEventStore.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"GroupEventStore.d.ts","sourceRoot":"","sources":["../../src/store/GroupEventStore.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAEpD,8BAAsB,eAAe;IACjC,QAAQ,CAAC,QAAQ,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;CACtD"}
1
+ {"version":3,"file":"GroupEventStore.d.ts","sourceRoot":"","sources":["../../src/store/GroupEventStore.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAEpD,MAAM,WAAW,eAAe;IAC5B,QAAQ,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC9C"}
@@ -1,6 +1,2 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.GroupEventStore = void 0;
4
- class GroupEventStore {
5
- }
6
- exports.GroupEventStore = GroupEventStore;