@zeeshan60/event-processor 1.0.15 → 1.0.17

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 (122) hide show
  1. package/README.md +29 -22
  2. package/dist/ActivityEventHandler.d.ts +7 -4
  3. package/dist/ActivityEventHandler.d.ts.map +1 -1
  4. package/dist/ActivityEventHandler.js +24 -13
  5. package/dist/ActivityLogEvents.d.ts.map +1 -1
  6. package/dist/ActivityLogEvents.js +1 -0
  7. package/dist/BaseEventHandler.d.ts +12 -3
  8. package/dist/BaseEventHandler.d.ts.map +1 -1
  9. package/dist/BaseEventHandler.js +15 -0
  10. package/dist/EventProcessorSDK.d.ts +8 -0
  11. package/dist/EventProcessorSDK.d.ts.map +1 -1
  12. package/dist/EventProcessorSDK.js +20 -6
  13. package/dist/FriendEventHandler.d.ts +8 -3
  14. package/dist/FriendEventHandler.d.ts.map +1 -1
  15. package/dist/FriendEventHandler.js +65 -39
  16. package/dist/GroupEventHandler.d.ts +6 -3
  17. package/dist/GroupEventHandler.d.ts.map +1 -1
  18. package/dist/GroupEventHandler.js +254 -189
  19. package/dist/GroupTransactionEventHandler.d.ts +5 -8
  20. package/dist/GroupTransactionEventHandler.d.ts.map +1 -1
  21. package/dist/GroupTransactionEventHandler.js +26 -298
  22. package/dist/TransactionEventHandler.d.ts +5 -3
  23. package/dist/TransactionEventHandler.d.ts.map +1 -1
  24. package/dist/TransactionEventHandler.js +26 -13
  25. package/dist/TransactionEvents.d.ts +10 -9
  26. package/dist/TransactionEvents.d.ts.map +1 -1
  27. package/dist/TransactionEvents.js +10 -12
  28. package/dist/UserEventHandler.d.ts +5 -3
  29. package/dist/UserEventHandler.d.ts.map +1 -1
  30. package/dist/UserEventHandler.js +27 -14
  31. package/dist/__tests__/test-helpers/IMActivityLogEventStore.d.ts +1 -0
  32. package/dist/__tests__/test-helpers/IMActivityLogEventStore.d.ts.map +1 -1
  33. package/dist/__tests__/test-helpers/IMActivityLogEventStore.js +3 -0
  34. package/dist/__tests__/test-helpers/IMActivityLogModelStore.d.ts +2 -0
  35. package/dist/__tests__/test-helpers/IMActivityLogModelStore.d.ts.map +1 -1
  36. package/dist/__tests__/test-helpers/IMActivityLogModelStore.js +10 -0
  37. package/dist/__tests__/test-helpers/IMCurrencyStore.d.ts +9 -0
  38. package/dist/__tests__/test-helpers/IMCurrencyStore.d.ts.map +1 -0
  39. package/dist/__tests__/test-helpers/IMCurrencyStore.js +19 -0
  40. package/dist/__tests__/test-helpers/IMFriendModelStore.d.ts +1 -0
  41. package/dist/__tests__/test-helpers/IMFriendModelStore.d.ts.map +1 -1
  42. package/dist/__tests__/test-helpers/IMFriendModelStore.js +7 -0
  43. package/dist/__tests__/test-helpers/IMGroupModelStore.d.ts +1 -0
  44. package/dist/__tests__/test-helpers/IMGroupModelStore.d.ts.map +1 -1
  45. package/dist/__tests__/test-helpers/IMGroupModelStore.js +7 -0
  46. package/dist/__tests__/test-helpers/IMGroupTransactionEventStore.d.ts +2 -0
  47. package/dist/__tests__/test-helpers/IMGroupTransactionEventStore.d.ts.map +1 -1
  48. package/dist/__tests__/test-helpers/IMGroupTransactionEventStore.js +18 -0
  49. package/dist/__tests__/test-helpers/IMGroupTransactionModelStore.d.ts +1 -0
  50. package/dist/__tests__/test-helpers/IMGroupTransactionModelStore.d.ts.map +1 -1
  51. package/dist/__tests__/test-helpers/IMGroupTransactionModelStore.js +7 -0
  52. package/dist/__tests__/test-helpers/IMTransactionEventStore.d.ts +2 -0
  53. package/dist/__tests__/test-helpers/IMTransactionEventStore.d.ts.map +1 -1
  54. package/dist/__tests__/test-helpers/IMTransactionEventStore.js +6 -0
  55. package/dist/__tests__/test-helpers/IMTransactionModelStore.d.ts +3 -0
  56. package/dist/__tests__/test-helpers/IMTransactionModelStore.d.ts.map +1 -1
  57. package/dist/__tests__/test-helpers/IMTransactionModelStore.js +27 -0
  58. package/dist/__tests__/test-helpers/IMUserModelStore.d.ts +4 -0
  59. package/dist/__tests__/test-helpers/IMUserModelStore.d.ts.map +1 -1
  60. package/dist/__tests__/test-helpers/IMUserModelStore.js +17 -0
  61. package/dist/client/controllers/FriendController.d.ts +4 -0
  62. package/dist/client/controllers/FriendController.d.ts.map +1 -1
  63. package/dist/client/controllers/FriendController.js +81 -15
  64. package/dist/client/controllers/TransactionController.d.ts +13 -2
  65. package/dist/client/controllers/TransactionController.d.ts.map +1 -1
  66. package/dist/client/controllers/TransactionController.js +150 -16
  67. package/dist/client/handlers/UIEventHandler.d.ts +3 -0
  68. package/dist/client/handlers/UIEventHandler.d.ts.map +1 -1
  69. package/dist/client/handlers/UIEventHandler.js +36 -0
  70. package/dist/common/CurrencyRate.d.ts +7 -0
  71. package/dist/common/CurrencyRate.d.ts.map +1 -0
  72. package/dist/common/CurrencyRate.js +2 -0
  73. package/dist/common/Model.d.ts +1 -0
  74. package/dist/common/Model.d.ts.map +1 -1
  75. package/dist/contracts/friends/index.d.ts +2 -9
  76. package/dist/contracts/friends/index.d.ts.map +1 -1
  77. package/dist/contracts/groups/index.d.ts +1 -1
  78. package/dist/contracts/groups/index.d.ts.map +1 -1
  79. package/dist/contracts/transactions/index.d.ts +33 -23
  80. package/dist/contracts/transactions/index.d.ts.map +1 -1
  81. package/dist/contracts/transactions/index.js +14 -11
  82. package/dist/converters/ActivityLogConverters.d.ts.map +1 -1
  83. package/dist/converters/ActivityLogConverters.js +3 -1
  84. package/dist/events.d.ts +2 -0
  85. package/dist/events.d.ts.map +1 -1
  86. package/dist/events.js +7 -1
  87. package/dist/index.d.ts +3 -4
  88. package/dist/index.d.ts.map +1 -1
  89. package/dist/index.js +8 -5
  90. package/dist/store/CurrencyStore.d.ts +6 -0
  91. package/dist/store/CurrencyStore.d.ts.map +1 -0
  92. package/dist/store/CurrencyStore.js +6 -0
  93. package/dist/store/ModelStore.d.ts +1 -0
  94. package/dist/store/ModelStore.d.ts.map +1 -1
  95. package/dist/store/TransactionModelStore.d.ts +2 -0
  96. package/dist/store/TransactionModelStore.d.ts.map +1 -1
  97. package/dist/store/UserModelStore.d.ts +1 -0
  98. package/dist/store/UserModelStore.d.ts.map +1 -1
  99. package/dist/utils/BalanceUtil.d.ts +17 -0
  100. package/dist/utils/BalanceUtil.d.ts.map +1 -0
  101. package/dist/utils/BalanceUtil.js +105 -0
  102. package/dist/utils/splitTypeUtils.d.ts.map +1 -1
  103. package/dist/utils/splitTypeUtils.js +21 -21
  104. package/package.json +1 -1
  105. package/dist/client/handlers/UIFriendEventHandler.d.ts +0 -16
  106. package/dist/client/handlers/UIFriendEventHandler.d.ts.map +0 -1
  107. package/dist/client/handlers/UIFriendEventHandler.js +0 -27
  108. package/dist/client/handlers/UIGroupEventHandler.d.ts +0 -18
  109. package/dist/client/handlers/UIGroupEventHandler.d.ts.map +0 -1
  110. package/dist/client/handlers/UIGroupEventHandler.js +0 -28
  111. package/dist/client/handlers/UIGroupTransactionEventHandler.d.ts +0 -18
  112. package/dist/client/handlers/UIGroupTransactionEventHandler.d.ts.map +0 -1
  113. package/dist/client/handlers/UIGroupTransactionEventHandler.js +0 -28
  114. package/dist/client/handlers/UITransactionEventHandler.d.ts +0 -14
  115. package/dist/client/handlers/UITransactionEventHandler.d.ts.map +0 -1
  116. package/dist/client/handlers/UITransactionEventHandler.js +0 -26
  117. package/dist/client/handlers/UIUserEventHandler.d.ts +0 -12
  118. package/dist/client/handlers/UIUserEventHandler.d.ts.map +0 -1
  119. package/dist/client/handlers/UIUserEventHandler.js +0 -29
  120. package/dist/utils/userPathUtils.d.ts +0 -6
  121. package/dist/utils/userPathUtils.d.ts.map +0 -1
  122. package/dist/utils/userPathUtils.js +0 -16
@@ -2,27 +2,40 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.UserEventHandler = void 0;
4
4
  const _1 = require(".");
5
+ const BaseEventHandler_1 = require("./BaseEventHandler");
5
6
  const uuid_1 = require("uuid");
6
- const EventProcessorSDK_1 = require("./EventProcessorSDK");
7
- class UserEventHandler {
8
- constructor(modelStore, eventStore, activityEventHandler) {
7
+ class UserEventHandler extends BaseEventHandler_1.BaseEventHandler {
8
+ constructor(modelStore, eventStore, isClient, modelChangeEmitter, activityEventHandler) {
9
+ super(isClient, modelChangeEmitter);
9
10
  this.modelStore = modelStore;
10
11
  this.eventStore = eventStore;
11
12
  this.activityEventHandler = activityEventHandler;
12
13
  }
13
- shouldSkipSave(existingModel, updatedModel) {
14
- if (!existingModel) {
15
- return false;
16
- }
17
- return (existingModel.streamId === updatedModel.streamId &&
18
- existingModel.version === updatedModel.version);
14
+ getModelStore() {
15
+ return this.modelStore;
19
16
  }
20
17
  async handleClientEventFromRemoteListener(event) {
21
- const existingModel = await this.modelStore.getByStreamIdWhereDeletedIsFalse(event.streamId);
18
+ const existingModel = await this.modelStore.getByStreamId(event.streamId);
22
19
  const updatedModel = event.apply(existingModel);
23
20
  if (!this.shouldSkipSave(existingModel, updatedModel)) {
24
21
  await this.modelStore.save(updatedModel);
25
- EventProcessorSDK_1.EventProcessorSDK.getInstance().emitModelChange("UserModel", updatedModel);
22
+ this.modelChangeEmitter?.emit("UserModel", updatedModel);
23
+ }
24
+ }
25
+ async handleClientEventsFromRemoteListenerBulk(events) {
26
+ const updatedModels = [];
27
+ for (const event of events) {
28
+ const existingModel = await this.modelStore.getByStreamId(event.streamId);
29
+ const updatedModel = event.apply(existingModel);
30
+ if (!this.shouldSkipSave(existingModel, updatedModel)) {
31
+ await this.modelStore.save(updatedModel);
32
+ updatedModels.push(updatedModel);
33
+ }
34
+ }
35
+ if (this.modelChangeEmitter && updatedModels.length > 0) {
36
+ for (const model of updatedModels) {
37
+ this.modelChangeEmitter.emit("UserModel", model);
38
+ }
26
39
  }
27
40
  }
28
41
  async handleEvent(event) {
@@ -35,9 +48,9 @@ class UserEventHandler {
35
48
  const updatedModel = event.apply(existingModel);
36
49
  if (!this.shouldSkipSave(existingModel, updatedModel)) {
37
50
  await this.modelStore.save(updatedModel);
38
- if (_1.residence.isClient) {
51
+ if (this.isClient) {
39
52
  await this.eventStore.addEvent(event);
40
- EventProcessorSDK_1.EventProcessorSDK.getInstance().emitModelChange("UserModel", updatedModel);
53
+ this.modelChangeEmitter?.emit("UserModel", updatedModel);
41
54
  if (this.activityEventHandler) {
42
55
  await this.activityEventHandler.createActivityLog(event, existingModel, updatedModel);
43
56
  }
@@ -47,7 +60,7 @@ class UserEventHandler {
47
60
  }
48
61
  }
49
62
  async handleUserCreatedBackend(event) {
50
- if (_1.residence.isClient) {
63
+ if (this.isClient) {
51
64
  throw new Error("handleUserCreated should not be called on client side");
52
65
  }
53
66
  let placeholderUser;
@@ -3,6 +3,7 @@ export declare class IMActivityLogEventStore implements ActivityLogEventStore {
3
3
  private events;
4
4
  addEvent(event: ActivityLogEvent): Promise<void>;
5
5
  getAllEvents(): ActivityLogEvent[];
6
+ getAll(): ActivityLogEvent[];
6
7
  clear(): void;
7
8
  }
8
9
  //# sourceMappingURL=IMActivityLogEventStore.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"IMActivityLogEventStore.d.ts","sourceRoot":"","sources":["../../../src/__tests__/test-helpers/IMActivityLogEventStore.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,MAAM,OAAO,CAAC;AAEhE,qBAAa,uBAAwB,YAAW,qBAAqB;IACjE,OAAO,CAAC,MAAM,CAA0B;IAElC,QAAQ,CAAC,KAAK,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;IAKtD,YAAY,IAAI,gBAAgB,EAAE;IAIlC,KAAK,IAAI,IAAI;CAGhB"}
1
+ {"version":3,"file":"IMActivityLogEventStore.d.ts","sourceRoot":"","sources":["../../../src/__tests__/test-helpers/IMActivityLogEventStore.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,MAAM,OAAO,CAAC;AAEhE,qBAAa,uBAAwB,YAAW,qBAAqB;IACjE,OAAO,CAAC,MAAM,CAA0B;IAElC,QAAQ,CAAC,KAAK,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;IAKtD,YAAY,IAAI,gBAAgB,EAAE;IAIlC,MAAM,IAAI,gBAAgB,EAAE;IAI5B,KAAK,IAAI,IAAI;CAGhB"}
@@ -12,6 +12,9 @@ class IMActivityLogEventStore {
12
12
  getAllEvents() {
13
13
  return [...this.events];
14
14
  }
15
+ getAll() {
16
+ return this.getAllEvents();
17
+ }
15
18
  clear() {
16
19
  this.events = [];
17
20
  }
@@ -3,8 +3,10 @@ export declare class IMActivityLogModelStore implements ActivityLogModelStore {
3
3
  private models;
4
4
  getByStreamId(streamId: string): Promise<ActivityLogModel | undefined>;
5
5
  getByStreamIdWhereDeletedIsFalse(streamId: string): Promise<ActivityLogModel | undefined>;
6
+ getLatestByUpdatedAt(): Promise<ActivityLogModel | undefined>;
6
7
  save(model: ActivityLogModel): Promise<void>;
7
8
  clear(): void;
8
9
  getAllModels(): ActivityLogModel[];
10
+ getAll(): ActivityLogModel[];
9
11
  }
10
12
  //# sourceMappingURL=IMActivityLogModelStore.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"IMActivityLogModelStore.d.ts","sourceRoot":"","sources":["../../../src/__tests__/test-helpers/IMActivityLogModelStore.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,MAAM,OAAO,CAAC;AAEhE,qBAAa,uBAAwB,YAAW,qBAAqB;IACjE,OAAO,CAAC,MAAM,CAA4C;IAEpD,aAAa,CACf,QAAQ,EAAE,MAAM,GACjB,OAAO,CAAC,gBAAgB,GAAG,SAAS,CAAC;IAIlC,gCAAgC,CAClC,QAAQ,EAAE,MAAM,GACjB,OAAO,CAAC,gBAAgB,GAAG,SAAS,CAAC;IAQlC,IAAI,CAAC,KAAK,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;IAKlD,KAAK,IAAI,IAAI;IAIb,YAAY,IAAI,gBAAgB,EAAE;CAGrC"}
1
+ {"version":3,"file":"IMActivityLogModelStore.d.ts","sourceRoot":"","sources":["../../../src/__tests__/test-helpers/IMActivityLogModelStore.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,MAAM,OAAO,CAAC;AAEhE,qBAAa,uBAAwB,YAAW,qBAAqB;IACjE,OAAO,CAAC,MAAM,CAA4C;IAEpD,aAAa,CACf,QAAQ,EAAE,MAAM,GACjB,OAAO,CAAC,gBAAgB,GAAG,SAAS,CAAC;IAIlC,gCAAgC,CAClC,QAAQ,EAAE,MAAM,GACjB,OAAO,CAAC,gBAAgB,GAAG,SAAS,CAAC;IAQlC,oBAAoB,IAAI,OAAO,CAAC,gBAAgB,GAAG,SAAS,CAAC;IAU7D,IAAI,CAAC,KAAK,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;IAKlD,KAAK,IAAI,IAAI;IAIb,YAAY,IAAI,gBAAgB,EAAE;IAIlC,MAAM,IAAI,gBAAgB,EAAE;CAG/B"}
@@ -15,6 +15,13 @@ class IMActivityLogModelStore {
15
15
  }
16
16
  return undefined;
17
17
  }
18
+ async getLatestByUpdatedAt() {
19
+ const models = Array.from(this.models.values());
20
+ if (models.length === 0) {
21
+ return undefined;
22
+ }
23
+ return models.reduce((latest, current) => current.updatedAt > latest.updatedAt ? current : latest);
24
+ }
18
25
  async save(model) {
19
26
  this.models.set(model.streamId, model);
20
27
  }
@@ -25,5 +32,8 @@ class IMActivityLogModelStore {
25
32
  getAllModels() {
26
33
  return Array.from(this.models.values());
27
34
  }
35
+ getAll() {
36
+ return this.getAllModels();
37
+ }
28
38
  }
29
39
  exports.IMActivityLogModelStore = IMActivityLogModelStore;
@@ -0,0 +1,9 @@
1
+ import { CurrencyRate, CurrencyStore } from "../..";
2
+ export declare class IMCurrencyStore extends CurrencyStore {
3
+ private currencyRate;
4
+ getCurrencyRates(): Promise<CurrencyRate | undefined>;
5
+ saveCurrencyRates(rates: CurrencyRate): Promise<void>;
6
+ setCurrencyRates(rate: CurrencyRate): void;
7
+ clear(): void;
8
+ }
9
+ //# sourceMappingURL=IMCurrencyStore.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IMCurrencyStore.d.ts","sourceRoot":"","sources":["../../../src/__tests__/test-helpers/IMCurrencyStore.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAEpD,qBAAa,eAAgB,SAAQ,aAAa;IAC9C,OAAO,CAAC,YAAY,CAA2B;IAEzC,gBAAgB,IAAI,OAAO,CAAC,YAAY,GAAG,SAAS,CAAC;IAIrD,iBAAiB,CAAC,KAAK,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IAI3D,gBAAgB,CAAC,IAAI,EAAE,YAAY,GAAG,IAAI;IAI1C,KAAK,IAAI,IAAI;CAGhB"}
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.IMCurrencyStore = void 0;
4
+ const __1 = require("../..");
5
+ class IMCurrencyStore extends __1.CurrencyStore {
6
+ async getCurrencyRates() {
7
+ return this.currencyRate;
8
+ }
9
+ async saveCurrencyRates(rates) {
10
+ this.currencyRate = rates;
11
+ }
12
+ setCurrencyRates(rate) {
13
+ this.currencyRate = rate;
14
+ }
15
+ clear() {
16
+ this.currencyRate = undefined;
17
+ }
18
+ }
19
+ exports.IMCurrencyStore = IMCurrencyStore;
@@ -3,6 +3,7 @@ export declare class IMFriendModelStore implements FriendModelStore {
3
3
  private models;
4
4
  getByStreamId(streamId: string): Promise<FriendModel | undefined>;
5
5
  getByStreamIdWhereDeletedIsFalse(streamId: string): Promise<FriendModel | undefined>;
6
+ getLatestByUpdatedAt(): Promise<FriendModel | undefined>;
6
7
  findByUserIdAndStreamIdAndDeletedIsFalse(userId: string, streamId: string): Promise<FriendModel | undefined>;
7
8
  findByUserIdAndFriendIdAndDeletedIsFalse(userId: string, friendId: string): Promise<FriendModel | undefined>;
8
9
  findByUserIdAndFriendEmailAndDeletedIsFalse(userId: string, email: string): Promise<FriendModel | undefined>;
@@ -1 +1 @@
1
- {"version":3,"file":"IMFriendModelStore.d.ts","sourceRoot":"","sources":["../../../src/__tests__/test-helpers/IMFriendModelStore.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,OAAO,CAAC;AAEtD,qBAAa,kBAAmB,YAAW,gBAAgB;IACvD,OAAO,CAAC,MAAM,CAAuC;IAE/C,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,GAAG,SAAS,CAAC;IAKjE,gCAAgC,CAClC,QAAQ,EAAE,MAAM,GACjB,OAAO,CAAC,WAAW,GAAG,SAAS,CAAC;IAQ7B,wCAAwC,CAC1C,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,GACjB,OAAO,CAAC,WAAW,GAAG,SAAS,CAAC;IAa7B,wCAAwC,CAC1C,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,GACjB,OAAO,CAAC,WAAW,GAAG,SAAS,CAAC;IAa7B,2CAA2C,CAC7C,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,GACd,OAAO,CAAC,WAAW,GAAG,SAAS,CAAC;IAa7B,iDAAiD,CACnD,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,MAAM,GACpB,OAAO,CAAC,WAAW,GAAG,SAAS,CAAC;IAa7B,kCAAkC,CACpC,MAAM,EAAE,MAAM,GACf,OAAO,CAAC,WAAW,EAAE,CAAC;IAUnB,IAAI,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IAI7C,MAAM,IAAI,WAAW,EAAE;IAIvB,yBAAyB,IAAI,WAAW,EAAE;IAM1C,KAAK,IAAI,IAAI;CAGhB"}
1
+ {"version":3,"file":"IMFriendModelStore.d.ts","sourceRoot":"","sources":["../../../src/__tests__/test-helpers/IMFriendModelStore.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,OAAO,CAAC;AAEtD,qBAAa,kBAAmB,YAAW,gBAAgB;IACvD,OAAO,CAAC,MAAM,CAAuC;IAE/C,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,GAAG,SAAS,CAAC;IAKjE,gCAAgC,CAClC,QAAQ,EAAE,MAAM,GACjB,OAAO,CAAC,WAAW,GAAG,SAAS,CAAC;IAQ7B,oBAAoB,IAAI,OAAO,CAAC,WAAW,GAAG,SAAS,CAAC;IAUxD,wCAAwC,CAC1C,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,GACjB,OAAO,CAAC,WAAW,GAAG,SAAS,CAAC;IAa7B,wCAAwC,CAC1C,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,GACjB,OAAO,CAAC,WAAW,GAAG,SAAS,CAAC;IAa7B,2CAA2C,CAC7C,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,GACd,OAAO,CAAC,WAAW,GAAG,SAAS,CAAC;IAa7B,iDAAiD,CACnD,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,MAAM,GACpB,OAAO,CAAC,WAAW,GAAG,SAAS,CAAC;IAa7B,kCAAkC,CACpC,MAAM,EAAE,MAAM,GACf,OAAO,CAAC,WAAW,EAAE,CAAC;IAUnB,IAAI,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IAI7C,MAAM,IAAI,WAAW,EAAE;IAIvB,yBAAyB,IAAI,WAAW,EAAE;IAM1C,KAAK,IAAI,IAAI;CAGhB"}
@@ -16,6 +16,13 @@ class IMFriendModelStore {
16
16
  }
17
17
  return model;
18
18
  }
19
+ async getLatestByUpdatedAt() {
20
+ const models = Array.from(this.models.values());
21
+ if (models.length === 0) {
22
+ return undefined;
23
+ }
24
+ return models.reduce((latest, current) => current.updatedAt > latest.updatedAt ? current : latest);
25
+ }
19
26
  async findByUserIdAndStreamIdAndDeletedIsFalse(userId, streamId) {
20
27
  for (const model of this.models.values()) {
21
28
  if (model.userId === userId &&
@@ -3,6 +3,7 @@ export declare class IMGroupModelStore implements GroupModelStore {
3
3
  private models;
4
4
  getByStreamId(streamId: string): Promise<GroupModel | undefined>;
5
5
  getByStreamIdWhereDeletedIsFalse(streamId: string): Promise<GroupModel | undefined>;
6
+ getLatestByUpdatedAt(): Promise<GroupModel | undefined>;
6
7
  findByUserIdAndGroupIdAndDeletedIsFalse(userId: string, groupId: string): Promise<GroupModel | undefined>;
7
8
  findAllByGroupIdAndDeletedIsFalse(groupId: string): Promise<GroupModel[]>;
8
9
  save(model: GroupModel): Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"IMGroupModelStore.d.ts","sourceRoot":"","sources":["../../../src/__tests__/test-helpers/IMGroupModelStore.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,OAAO,CAAC;AAEpD,qBAAa,iBAAkB,YAAW,eAAe;IACrD,OAAO,CAAC,MAAM,CAAsC;IAE9C,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,GAAG,SAAS,CAAC;IAKhE,gCAAgC,CAClC,QAAQ,EAAE,MAAM,GACjB,OAAO,CAAC,UAAU,GAAG,SAAS,CAAC;IAQ5B,uCAAuC,CACzC,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,GAChB,OAAO,CAAC,UAAU,GAAG,SAAS,CAAC;IAa5B,iCAAiC,CACnC,OAAO,EAAE,MAAM,GAChB,OAAO,CAAC,UAAU,EAAE,CAAC;IAUlB,IAAI,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAI5C,MAAM,IAAI,UAAU,EAAE;IAItB,yBAAyB,IAAI,UAAU,EAAE;IAMzC,KAAK,IAAI,IAAI;CAGhB"}
1
+ {"version":3,"file":"IMGroupModelStore.d.ts","sourceRoot":"","sources":["../../../src/__tests__/test-helpers/IMGroupModelStore.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,OAAO,CAAC;AAEpD,qBAAa,iBAAkB,YAAW,eAAe;IACrD,OAAO,CAAC,MAAM,CAAsC;IAE9C,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,GAAG,SAAS,CAAC;IAKhE,gCAAgC,CAClC,QAAQ,EAAE,MAAM,GACjB,OAAO,CAAC,UAAU,GAAG,SAAS,CAAC;IAQ5B,oBAAoB,IAAI,OAAO,CAAC,UAAU,GAAG,SAAS,CAAC;IAUvD,uCAAuC,CACzC,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,GAChB,OAAO,CAAC,UAAU,GAAG,SAAS,CAAC;IAa5B,iCAAiC,CACnC,OAAO,EAAE,MAAM,GAChB,OAAO,CAAC,UAAU,EAAE,CAAC;IAUlB,IAAI,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAI5C,MAAM,IAAI,UAAU,EAAE;IAItB,yBAAyB,IAAI,UAAU,EAAE;IAMzC,KAAK,IAAI,IAAI;CAGhB"}
@@ -16,6 +16,13 @@ class IMGroupModelStore {
16
16
  }
17
17
  return model;
18
18
  }
19
+ async getLatestByUpdatedAt() {
20
+ const models = Array.from(this.models.values());
21
+ if (models.length === 0) {
22
+ return undefined;
23
+ }
24
+ return models.reduce((latest, current) => current.updatedAt > latest.updatedAt ? current : latest);
25
+ }
19
26
  async findByUserIdAndGroupIdAndDeletedIsFalse(userId, groupId) {
20
27
  for (const model of this.models.values()) {
21
28
  if (model.userId === userId &&
@@ -3,6 +3,8 @@ export declare class IMGroupTransactionEventStore implements GroupTransactionEve
3
3
  private events;
4
4
  addEvent(event: GroupTransactionEvent): Promise<void>;
5
5
  getEvents(userId: string): GroupTransactionEvent[];
6
+ getAll(): GroupTransactionEvent[];
7
+ clearSystemGenerated(): void;
6
8
  clear(): void;
7
9
  }
8
10
  //# sourceMappingURL=IMGroupTransactionEventStore.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"IMGroupTransactionEventStore.d.ts","sourceRoot":"","sources":["../../../src/__tests__/test-helpers/IMGroupTransactionEventStore.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,0BAA0B,EAAE,MAAM,OAAO,CAAC;AAE1E,qBAAa,4BACT,YAAW,0BAA0B;IAErC,OAAO,CAAC,MAAM,CAAmD;IAE3D,QAAQ,CAAC,KAAK,EAAE,qBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC;IAM3D,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,qBAAqB,EAAE;IAIlD,KAAK,IAAI,IAAI;CAGhB"}
1
+ {"version":3,"file":"IMGroupTransactionEventStore.d.ts","sourceRoot":"","sources":["../../../src/__tests__/test-helpers/IMGroupTransactionEventStore.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,0BAA0B,EAAE,MAAM,OAAO,CAAC;AAE1E,qBAAa,4BACT,YAAW,0BAA0B;IAErC,OAAO,CAAC,MAAM,CAAmD;IAE3D,QAAQ,CAAC,KAAK,EAAE,qBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC;IAM3D,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,qBAAqB,EAAE;IAIlD,MAAM,IAAI,qBAAqB,EAAE;IAQjC,oBAAoB,IAAI,IAAI;IAa5B,KAAK,IAAI,IAAI;CAGhB"}
@@ -13,6 +13,24 @@ class IMGroupTransactionEventStore {
13
13
  getEvents(userId) {
14
14
  return this.events.get(userId) || [];
15
15
  }
16
+ getAll() {
17
+ const allEvents = [];
18
+ for (const userEvents of this.events.values()) {
19
+ allEvents.push(...userEvents);
20
+ }
21
+ return allEvents;
22
+ }
23
+ clearSystemGenerated() {
24
+ for (const [userId, userEvents] of this.events.entries()) {
25
+ const filtered = userEvents.filter((e) => e.systemGenerated !== true);
26
+ if (filtered.length > 0) {
27
+ this.events.set(userId, filtered);
28
+ }
29
+ else {
30
+ this.events.delete(userId);
31
+ }
32
+ }
33
+ }
16
34
  clear() {
17
35
  this.events.clear();
18
36
  }
@@ -3,6 +3,7 @@ export declare class IMGroupTransactionModelStore implements GroupTransactionMod
3
3
  private models;
4
4
  getByStreamId(streamId: string): Promise<GroupTransactionModel | undefined>;
5
5
  getByStreamIdWhereDeletedIsFalse(streamId: string): Promise<GroupTransactionModel | undefined>;
6
+ getLatestByUpdatedAt(): Promise<GroupTransactionModel | undefined>;
6
7
  findAllByGroupIdAndTransactionIdAndDeletedIsFalse(groupId: string, transactionId: string): Promise<GroupTransactionModel[]>;
7
8
  findByUserIdAndTransactionId(userId: string, transactionId: string): Promise<GroupTransactionModel | undefined>;
8
9
  save(model: GroupTransactionModel): Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"IMGroupTransactionModelStore.d.ts","sourceRoot":"","sources":["../../../src/__tests__/test-helpers/IMGroupTransactionModelStore.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,0BAA0B,EAAE,MAAM,OAAO,CAAC;AAE1E,qBAAa,4BACT,YAAW,0BAA0B;IAErC,OAAO,CAAC,MAAM,CAAiD;IAEzD,aAAa,CACf,QAAQ,EAAE,MAAM,GACjB,OAAO,CAAC,qBAAqB,GAAG,SAAS,CAAC;IAKvC,gCAAgC,CAClC,QAAQ,EAAE,MAAM,GACjB,OAAO,CAAC,qBAAqB,GAAG,SAAS,CAAC;IAQvC,iDAAiD,CACnD,OAAO,EAAE,MAAM,EACf,aAAa,EAAE,MAAM,GACtB,OAAO,CAAC,qBAAqB,EAAE,CAAC;IAc7B,4BAA4B,CAC9B,MAAM,EAAE,MAAM,EACd,aAAa,EAAE,MAAM,GACtB,OAAO,CAAC,qBAAqB,GAAG,SAAS,CAAC;IAavC,IAAI,CAAC,KAAK,EAAE,qBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC;IAIvD,MAAM,IAAI,qBAAqB,EAAE;IAIjC,yBAAyB,IAAI,qBAAqB,EAAE;IAMpD,KAAK,IAAI,IAAI;CAGhB"}
1
+ {"version":3,"file":"IMGroupTransactionModelStore.d.ts","sourceRoot":"","sources":["../../../src/__tests__/test-helpers/IMGroupTransactionModelStore.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,0BAA0B,EAAE,MAAM,OAAO,CAAC;AAE1E,qBAAa,4BACT,YAAW,0BAA0B;IAErC,OAAO,CAAC,MAAM,CAAiD;IAEzD,aAAa,CACf,QAAQ,EAAE,MAAM,GACjB,OAAO,CAAC,qBAAqB,GAAG,SAAS,CAAC;IAKvC,gCAAgC,CAClC,QAAQ,EAAE,MAAM,GACjB,OAAO,CAAC,qBAAqB,GAAG,SAAS,CAAC;IAQvC,oBAAoB,IAAI,OAAO,CAAC,qBAAqB,GAAG,SAAS,CAAC;IAUlE,iDAAiD,CACnD,OAAO,EAAE,MAAM,EACf,aAAa,EAAE,MAAM,GACtB,OAAO,CAAC,qBAAqB,EAAE,CAAC;IAc7B,4BAA4B,CAC9B,MAAM,EAAE,MAAM,EACd,aAAa,EAAE,MAAM,GACtB,OAAO,CAAC,qBAAqB,GAAG,SAAS,CAAC;IAavC,IAAI,CAAC,KAAK,EAAE,qBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC;IAIvD,MAAM,IAAI,qBAAqB,EAAE;IAIjC,yBAAyB,IAAI,qBAAqB,EAAE;IAMpD,KAAK,IAAI,IAAI;CAGhB"}
@@ -16,6 +16,13 @@ class IMGroupTransactionModelStore {
16
16
  }
17
17
  return model;
18
18
  }
19
+ async getLatestByUpdatedAt() {
20
+ const models = Array.from(this.models.values());
21
+ if (models.length === 0) {
22
+ return undefined;
23
+ }
24
+ return models.reduce((latest, current) => current.updatedAt > latest.updatedAt ? current : latest);
25
+ }
19
26
  async findAllByGroupIdAndTransactionIdAndDeletedIsFalse(groupId, transactionId) {
20
27
  const results = [];
21
28
  for (const model of this.models.values()) {
@@ -3,7 +3,9 @@ export declare class IMTransactionEventStore implements TransactionEventStore {
3
3
  private events;
4
4
  addEvent(event: TransactionEvent): Promise<void>;
5
5
  getEvents(): TransactionEvent[];
6
+ getAll(): TransactionEvent[];
6
7
  getEventsByStreamId(streamId: string): TransactionEvent[];
8
+ clearSystemGenerated(): void;
7
9
  clear(): void;
8
10
  }
9
11
  //# sourceMappingURL=IMTransactionEventStore.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"IMTransactionEventStore.d.ts","sourceRoot":"","sources":["../../../src/__tests__/test-helpers/IMTransactionEventStore.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,MAAM,OAAO,CAAC;AAEhE,qBAAa,uBAAwB,YAAW,qBAAqB;IACjE,OAAO,CAAC,MAAM,CAA0B;IAElC,QAAQ,CAAC,KAAK,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;IAItD,SAAS,IAAI,gBAAgB,EAAE;IAI/B,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,gBAAgB,EAAE;IAIzD,KAAK,IAAI,IAAI;CAGhB"}
1
+ {"version":3,"file":"IMTransactionEventStore.d.ts","sourceRoot":"","sources":["../../../src/__tests__/test-helpers/IMTransactionEventStore.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,MAAM,OAAO,CAAC;AAEhE,qBAAa,uBAAwB,YAAW,qBAAqB;IACjE,OAAO,CAAC,MAAM,CAA0B;IAElC,QAAQ,CAAC,KAAK,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;IAItD,SAAS,IAAI,gBAAgB,EAAE;IAI/B,MAAM,IAAI,gBAAgB,EAAE;IAI5B,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,gBAAgB,EAAE;IAIzD,oBAAoB,IAAI,IAAI;IAI5B,KAAK,IAAI,IAAI;CAGhB"}
@@ -11,9 +11,15 @@ class IMTransactionEventStore {
11
11
  getEvents() {
12
12
  return [...this.events];
13
13
  }
14
+ getAll() {
15
+ return this.getEvents();
16
+ }
14
17
  getEventsByStreamId(streamId) {
15
18
  return this.events.filter((event) => event.streamId === streamId);
16
19
  }
20
+ clearSystemGenerated() {
21
+ this.events = this.events.filter((e) => e.systemGenerated !== true);
22
+ }
17
23
  clear() {
18
24
  this.events = [];
19
25
  }
@@ -3,8 +3,11 @@ export declare class IMTransactionModelStore implements TransactionModelStore {
3
3
  private models;
4
4
  getByStreamId(streamId: string): Promise<TransactionModel | undefined>;
5
5
  getByStreamIdWhereDeletedIsFalse(streamId: string): Promise<TransactionModel | undefined>;
6
+ getLatestByUpdatedAt(): Promise<TransactionModel | undefined>;
6
7
  findByUserAndLogicalTransactionId(userId: string, recipientUserId: string, logicalTransactionId: string): Promise<TransactionModel | undefined>;
7
8
  findByGroupTransactionId(userId: string, groupTransactionId: string): Promise<TransactionModel[]>;
9
+ findByUserIdAndRecipientUserIdWhereDeletedIsFalse(userId: string, recipientUserId: string): Promise<TransactionModel[]>;
10
+ findAllByUserIdWhereDeletedIsFalse(userId: string): Promise<TransactionModel[]>;
8
11
  save(model: TransactionModel): Promise<void>;
9
12
  getAll(): TransactionModel[];
10
13
  getAllWhereDeletedIsFalse(): TransactionModel[];
@@ -1 +1 @@
1
- {"version":3,"file":"IMTransactionModelStore.d.ts","sourceRoot":"","sources":["../../../src/__tests__/test-helpers/IMTransactionModelStore.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,MAAM,OAAO,CAAC;AAEhE,qBAAa,uBAAwB,YAAW,qBAAqB;IACjE,OAAO,CAAC,MAAM,CAA4C;IAEpD,aAAa,CACf,QAAQ,EAAE,MAAM,GACjB,OAAO,CAAC,gBAAgB,GAAG,SAAS,CAAC;IAKlC,gCAAgC,CAClC,QAAQ,EAAE,MAAM,GACjB,OAAO,CAAC,gBAAgB,GAAG,SAAS,CAAC;IAQlC,iCAAiC,CACnC,MAAM,EAAE,MAAM,EACd,eAAe,EAAE,MAAM,EACvB,oBAAoB,EAAE,MAAM,GAC7B,OAAO,CAAC,gBAAgB,GAAG,SAAS,CAAC;IAclC,wBAAwB,CAC1B,MAAM,EAAE,MAAM,EACd,kBAAkB,EAAE,MAAM,GAC3B,OAAO,CAAC,gBAAgB,EAAE,CAAC;IAcxB,IAAI,CAAC,KAAK,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;IAIlD,MAAM,IAAI,gBAAgB,EAAE;IAI5B,yBAAyB,IAAI,gBAAgB,EAAE;IAM/C,KAAK,IAAI,IAAI;CAGhB"}
1
+ {"version":3,"file":"IMTransactionModelStore.d.ts","sourceRoot":"","sources":["../../../src/__tests__/test-helpers/IMTransactionModelStore.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,MAAM,OAAO,CAAC;AAEhE,qBAAa,uBAAwB,YAAW,qBAAqB;IACjE,OAAO,CAAC,MAAM,CAA4C;IAEpD,aAAa,CACf,QAAQ,EAAE,MAAM,GACjB,OAAO,CAAC,gBAAgB,GAAG,SAAS,CAAC;IAKlC,gCAAgC,CAClC,QAAQ,EAAE,MAAM,GACjB,OAAO,CAAC,gBAAgB,GAAG,SAAS,CAAC;IAQlC,oBAAoB,IAAI,OAAO,CAAC,gBAAgB,GAAG,SAAS,CAAC;IAU7D,iCAAiC,CACnC,MAAM,EAAE,MAAM,EACd,eAAe,EAAE,MAAM,EACvB,oBAAoB,EAAE,MAAM,GAC7B,OAAO,CAAC,gBAAgB,GAAG,SAAS,CAAC;IAclC,wBAAwB,CAC1B,MAAM,EAAE,MAAM,EACd,kBAAkB,EAAE,MAAM,GAC3B,OAAO,CAAC,gBAAgB,EAAE,CAAC;IAcxB,iDAAiD,CACnD,MAAM,EAAE,MAAM,EACd,eAAe,EAAE,MAAM,GACxB,OAAO,CAAC,gBAAgB,EAAE,CAAC;IAcxB,kCAAkC,CACpC,MAAM,EAAE,MAAM,GACf,OAAO,CAAC,gBAAgB,EAAE,CAAC;IAUxB,IAAI,CAAC,KAAK,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;IAIlD,MAAM,IAAI,gBAAgB,EAAE;IAI5B,yBAAyB,IAAI,gBAAgB,EAAE;IAM/C,KAAK,IAAI,IAAI;CAGhB"}
@@ -16,6 +16,13 @@ class IMTransactionModelStore {
16
16
  }
17
17
  return model;
18
18
  }
19
+ async getLatestByUpdatedAt() {
20
+ const models = Array.from(this.models.values());
21
+ if (models.length === 0) {
22
+ return undefined;
23
+ }
24
+ return models.reduce((latest, current) => current.updatedAt > latest.updatedAt ? current : latest);
25
+ }
19
26
  async findByUserAndLogicalTransactionId(userId, recipientUserId, logicalTransactionId) {
20
27
  for (const model of this.models.values()) {
21
28
  if (model.userId === userId &&
@@ -38,6 +45,26 @@ class IMTransactionModelStore {
38
45
  }
39
46
  return results;
40
47
  }
48
+ async findByUserIdAndRecipientUserIdWhereDeletedIsFalse(userId, recipientUserId) {
49
+ const results = [];
50
+ for (const model of this.models.values()) {
51
+ if (model.userId === userId &&
52
+ model.recipientUserId === recipientUserId &&
53
+ !model.deleted) {
54
+ results.push(model);
55
+ }
56
+ }
57
+ return results;
58
+ }
59
+ async findAllByUserIdWhereDeletedIsFalse(userId) {
60
+ const results = [];
61
+ for (const model of this.models.values()) {
62
+ if (model.userId === userId && !model.deleted) {
63
+ results.push(model);
64
+ }
65
+ }
66
+ return results;
67
+ }
41
68
  async save(model) {
42
69
  this.models.set(model.streamId, model);
43
70
  }
@@ -1,8 +1,10 @@
1
1
  import { UserModel, UserModelStore } from "../..";
2
2
  export declare class IMUserModelStore implements UserModelStore {
3
3
  private models;
4
+ private currentUser;
4
5
  getByStreamId(streamId: string): Promise<UserModel | undefined>;
5
6
  getByStreamIdWhereDeletedIsFalse(streamId: string): Promise<UserModel | undefined>;
7
+ getLatestByUpdatedAt(): Promise<UserModel | undefined>;
6
8
  save(model: UserModel): Promise<void>;
7
9
  findByEmail(email: string): Promise<UserModel | undefined>;
8
10
  findByPhone(phone: string): Promise<UserModel | undefined>;
@@ -10,5 +12,7 @@ export declare class IMUserModelStore implements UserModelStore {
10
12
  getAll(): UserModel[];
11
13
  getAllWhereDeletedIsFalse(): UserModel[];
12
14
  clear(): void;
15
+ setCurrentUser(user: UserModel): void;
16
+ appUser(): Promise<UserModel>;
13
17
  }
14
18
  //# sourceMappingURL=IMUserModelStore.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"IMUserModelStore.d.ts","sourceRoot":"","sources":["../../../src/__tests__/test-helpers/IMUserModelStore.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AAElD,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
+ {"version":3,"file":"IMUserModelStore.d.ts","sourceRoot":"","sources":["../../../src/__tests__/test-helpers/IMUserModelStore.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AAElD,qBAAa,gBAAiB,YAAW,cAAc;IACnD,OAAO,CAAC,MAAM,CAAqC;IACnD,OAAO,CAAC,WAAW,CAAwB;IAErC,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,oBAAoB,IAAI,OAAO,CAAC,SAAS,GAAG,SAAS,CAAC;IAUtD,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;IAIb,cAAc,CAAC,IAAI,EAAE,SAAS,GAAG,IAAI;IAI/B,OAAO,IAAI,OAAO,CAAC,SAAS,CAAC;CAOtC"}
@@ -16,6 +16,13 @@ class IMUserModelStore {
16
16
  }
17
17
  return model;
18
18
  }
19
+ async getLatestByUpdatedAt() {
20
+ const models = Array.from(this.models.values());
21
+ if (models.length === 0) {
22
+ return undefined;
23
+ }
24
+ return models.reduce((latest, current) => current.updatedAt > latest.updatedAt ? current : latest);
25
+ }
19
26
  async save(model) {
20
27
  this.models.set(model.streamId, model);
21
28
  }
@@ -52,5 +59,15 @@ class IMUserModelStore {
52
59
  clear() {
53
60
  this.models.clear();
54
61
  }
62
+ setCurrentUser(user) {
63
+ this.currentUser = user;
64
+ }
65
+ async appUser() {
66
+ const users = this.getAllWhereDeletedIsFalse();
67
+ if (users.length === 0) {
68
+ throw new Error("No user found in store.");
69
+ }
70
+ return users[0];
71
+ }
55
72
  }
56
73
  exports.IMUserModelStore = IMUserModelStore;
@@ -1,7 +1,11 @@
1
1
  import { FriendRequest, FriendResponse, FriendsResponse, UpdateFriendRequest } from "../../contracts/friends";
2
2
  export declare class FriendController {
3
3
  private get modelStore();
4
+ private get transactionModelStore();
5
+ private get userModelStore();
6
+ private get currencyStore();
4
7
  private get friendEventHandler();
8
+ private get balanceUtil();
5
9
  addFriend(userId: string, request: FriendRequest): Promise<string>;
6
10
  updateFriend(userId: string, friendId: string, request: UpdateFriendRequest): Promise<void>;
7
11
  deleteFriend(userId: string, friendId: string): Promise<void>;
@@ -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,eAAe,EACf,mBAAmB,EACtB,MAAM,yBAAyB,CAAC;AAKjC,qBAAa,gBAAgB;IACzB,OAAO,KAAK,UAAU,GAGrB;IAED,OAAO,KAAK,kBAAkB,GAE7B;IAEK,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,MAAM,CAAC;IA2BlE,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"}
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;AAMjC,qBAAa,gBAAgB;IACzB,OAAO,KAAK,UAAU,GAGrB;IAED,OAAO,KAAK,qBAAqB,GAGhC;IAED,OAAO,KAAK,cAAc,GAEzB;IAED,OAAO,KAAK,aAAa,GAExB;IAED,OAAO,KAAK,kBAAkB,GAE7B;IAED,OAAO,KAAK,WAAW,GAEtB;IAEK,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,MAAM,CAAC;IAqDlE,YAAY,CACd,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,mBAAmB,GAC7B,OAAO,CAAC,IAAI,CAAC;IAgGV,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAkC7D,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;IAkCpE,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;IAU9D,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC;IA4C7D,OAAO,CAAC,gBAAgB;CAoB3B"}