@zeeshan60/event-processor 1.0.14 → 1.0.16

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 (148) hide show
  1. package/README.md +29 -22
  2. package/dist/ActivityEventHandler.d.ts +5 -6
  3. package/dist/ActivityEventHandler.d.ts.map +1 -1
  4. package/dist/ActivityEventHandler.js +16 -8
  5. package/dist/ActivityLogEvents.d.ts.map +1 -1
  6. package/dist/BaseEventHandler.d.ts +8 -0
  7. package/dist/BaseEventHandler.d.ts.map +1 -0
  8. package/dist/BaseEventHandler.js +13 -0
  9. package/dist/EventProcessorSDK.d.ts +10 -2
  10. package/dist/EventProcessorSDK.d.ts.map +1 -1
  11. package/dist/EventProcessorSDK.js +21 -5
  12. package/dist/FriendEventHandler.d.ts +6 -2
  13. package/dist/FriendEventHandler.d.ts.map +1 -1
  14. package/dist/FriendEventHandler.js +50 -45
  15. package/dist/GroupEventHandler.d.ts +5 -8
  16. package/dist/GroupEventHandler.d.ts.map +1 -1
  17. package/dist/GroupEventHandler.js +241 -186
  18. package/dist/GroupEvents.d.ts.map +1 -1
  19. package/dist/GroupTransactionEventHandler.d.ts +3 -2
  20. package/dist/GroupTransactionEventHandler.d.ts.map +1 -1
  21. package/dist/GroupTransactionEventHandler.js +11 -10
  22. package/dist/GroupTransactionEvents.d.ts.map +1 -1
  23. package/dist/ModelChangeEmitter.d.ts +1 -1
  24. package/dist/ModelChangeEmitter.d.ts.map +1 -1
  25. package/dist/TransactionEventHandler.d.ts +5 -5
  26. package/dist/TransactionEventHandler.d.ts.map +1 -1
  27. package/dist/TransactionEventHandler.js +19 -30
  28. package/dist/TransactionEvents.d.ts.map +1 -1
  29. package/dist/UserEventHandler.d.ts +4 -3
  30. package/dist/UserEventHandler.d.ts.map +1 -1
  31. package/dist/UserEventHandler.js +16 -40
  32. package/dist/UserEvents.d.ts.map +1 -1
  33. package/dist/__tests__/test-helpers/IMActivityLogEventStore.d.ts +1 -2
  34. package/dist/__tests__/test-helpers/IMActivityLogEventStore.d.ts.map +1 -1
  35. package/dist/__tests__/test-helpers/IMActivityLogModelStore.d.ts +1 -2
  36. package/dist/__tests__/test-helpers/IMActivityLogModelStore.d.ts.map +1 -1
  37. package/dist/__tests__/test-helpers/IMCurrencyStore.d.ts +8 -0
  38. package/dist/__tests__/test-helpers/IMCurrencyStore.d.ts.map +1 -0
  39. package/dist/__tests__/test-helpers/IMCurrencyStore.js +16 -0
  40. package/dist/__tests__/test-helpers/IMFriendEventStore.d.ts +1 -2
  41. package/dist/__tests__/test-helpers/IMFriendEventStore.d.ts.map +1 -1
  42. package/dist/__tests__/test-helpers/IMFriendModelStore.d.ts +1 -2
  43. package/dist/__tests__/test-helpers/IMFriendModelStore.d.ts.map +1 -1
  44. package/dist/__tests__/test-helpers/IMGroupEventStore.d.ts +1 -2
  45. package/dist/__tests__/test-helpers/IMGroupEventStore.d.ts.map +1 -1
  46. package/dist/__tests__/test-helpers/IMGroupModelStore.d.ts +1 -2
  47. package/dist/__tests__/test-helpers/IMGroupModelStore.d.ts.map +1 -1
  48. package/dist/__tests__/test-helpers/IMGroupTransactionEventStore.d.ts +1 -2
  49. package/dist/__tests__/test-helpers/IMGroupTransactionEventStore.d.ts.map +1 -1
  50. package/dist/__tests__/test-helpers/IMGroupTransactionModelStore.d.ts +1 -2
  51. package/dist/__tests__/test-helpers/IMGroupTransactionModelStore.d.ts.map +1 -1
  52. package/dist/__tests__/test-helpers/IMTransactionEventStore.d.ts +1 -2
  53. package/dist/__tests__/test-helpers/IMTransactionEventStore.d.ts.map +1 -1
  54. package/dist/__tests__/test-helpers/IMTransactionModelStore.d.ts +3 -2
  55. package/dist/__tests__/test-helpers/IMTransactionModelStore.d.ts.map +1 -1
  56. package/dist/__tests__/test-helpers/IMTransactionModelStore.js +20 -0
  57. package/dist/__tests__/test-helpers/IMUserEventStore.d.ts +1 -2
  58. package/dist/__tests__/test-helpers/IMUserEventStore.d.ts.map +1 -1
  59. package/dist/__tests__/test-helpers/IMUserModelStore.d.ts +4 -2
  60. package/dist/__tests__/test-helpers/IMUserModelStore.d.ts.map +1 -1
  61. package/dist/__tests__/test-helpers/IMUserModelStore.js +10 -0
  62. package/dist/client/controllers/FriendController.d.ts +4 -0
  63. package/dist/client/controllers/FriendController.d.ts.map +1 -1
  64. package/dist/client/controllers/FriendController.js +45 -15
  65. package/dist/client/controllers/TransactionController.d.ts +18 -0
  66. package/dist/client/controllers/TransactionController.d.ts.map +1 -0
  67. package/dist/client/controllers/TransactionController.js +275 -0
  68. package/dist/client/handlers/UIEventHandler.d.ts +0 -1
  69. package/dist/client/handlers/UIEventHandler.d.ts.map +1 -1
  70. package/dist/client/handlers/UIEventHandler.js +4 -62
  71. package/dist/common/CurrencyRate.d.ts +7 -0
  72. package/dist/common/CurrencyRate.d.ts.map +1 -0
  73. package/dist/common/CurrencyRate.js +2 -0
  74. package/dist/common/DomainEvents.d.ts +0 -70
  75. package/dist/common/DomainEvents.d.ts.map +1 -1
  76. package/dist/common/DomainEvents.js +0 -89
  77. package/dist/contracts/expenses/index.d.ts.map +1 -1
  78. package/dist/contracts/friends/index.d.ts +1 -9
  79. package/dist/contracts/friends/index.d.ts.map +1 -1
  80. package/dist/contracts/groups/index.d.ts.map +1 -1
  81. package/dist/contracts/transactions/index.d.ts +1 -1
  82. package/dist/contracts/transactions/index.d.ts.map +1 -1
  83. package/dist/converters/ActivityLogConverters.d.ts +9 -0
  84. package/dist/converters/ActivityLogConverters.d.ts.map +1 -0
  85. package/dist/converters/ActivityLogConverters.js +39 -0
  86. package/dist/converters/EventConverterCore.d.ts +67 -0
  87. package/dist/converters/EventConverterCore.d.ts.map +1 -0
  88. package/dist/converters/EventConverterCore.js +59 -0
  89. package/dist/converters/FriendConverters.d.ts +33 -0
  90. package/dist/converters/FriendConverters.d.ts.map +1 -0
  91. package/dist/converters/FriendConverters.js +142 -0
  92. package/dist/converters/GroupConverters.d.ts +39 -0
  93. package/dist/converters/GroupConverters.d.ts.map +1 -0
  94. package/dist/converters/GroupConverters.js +160 -0
  95. package/dist/converters/GroupTransactionConverters.d.ts +57 -0
  96. package/dist/converters/GroupTransactionConverters.d.ts.map +1 -0
  97. package/dist/converters/GroupTransactionConverters.js +249 -0
  98. package/dist/converters/TransactionConverters.d.ts +51 -0
  99. package/dist/converters/TransactionConverters.d.ts.map +1 -0
  100. package/dist/converters/TransactionConverters.js +234 -0
  101. package/dist/converters/UserConverters.d.ts +51 -0
  102. package/dist/converters/UserConverters.d.ts.map +1 -0
  103. package/dist/converters/UserConverters.js +226 -0
  104. package/dist/converters/eventConverter.d.ts +10 -15
  105. package/dist/converters/eventConverter.d.ts.map +1 -1
  106. package/dist/converters/eventConverter.js +96 -377
  107. package/dist/environment.d.ts +12 -0
  108. package/dist/environment.d.ts.map +1 -0
  109. package/dist/environment.js +50 -0
  110. package/dist/events.d.ts +2 -1
  111. package/dist/events.d.ts.map +1 -1
  112. package/dist/events.js +7 -3
  113. package/dist/index.d.ts +7 -7
  114. package/dist/index.d.ts.map +1 -1
  115. package/dist/index.js +13 -31
  116. package/dist/store/ActivityLogModelStore.d.ts.map +1 -1
  117. package/dist/store/CurrencyStore.d.ts +5 -0
  118. package/dist/store/CurrencyStore.d.ts.map +1 -0
  119. package/dist/store/CurrencyStore.js +6 -0
  120. package/dist/store/FriendModelStore.d.ts.map +1 -1
  121. package/dist/store/GroupModelStore.d.ts.map +1 -1
  122. package/dist/store/GroupTransactionModelStore.d.ts.map +1 -1
  123. package/dist/store/TransactionModelStore.d.ts +2 -0
  124. package/dist/store/TransactionModelStore.d.ts.map +1 -1
  125. package/dist/store/UserModelStore.d.ts +1 -0
  126. package/dist/store/UserModelStore.d.ts.map +1 -1
  127. package/dist/utils/BalanceUtil.d.ts +13 -0
  128. package/dist/utils/BalanceUtil.d.ts.map +1 -0
  129. package/dist/utils/BalanceUtil.js +97 -0
  130. package/package.json +1 -1
  131. package/dist/client/handlers/UIFriendEventHandler.d.ts +0 -16
  132. package/dist/client/handlers/UIFriendEventHandler.d.ts.map +0 -1
  133. package/dist/client/handlers/UIFriendEventHandler.js +0 -27
  134. package/dist/client/handlers/UIGroupEventHandler.d.ts +0 -18
  135. package/dist/client/handlers/UIGroupEventHandler.d.ts.map +0 -1
  136. package/dist/client/handlers/UIGroupEventHandler.js +0 -28
  137. package/dist/client/handlers/UIGroupTransactionEventHandler.d.ts +0 -18
  138. package/dist/client/handlers/UIGroupTransactionEventHandler.d.ts.map +0 -1
  139. package/dist/client/handlers/UIGroupTransactionEventHandler.js +0 -28
  140. package/dist/client/handlers/UITransactionEventHandler.d.ts +0 -14
  141. package/dist/client/handlers/UITransactionEventHandler.d.ts.map +0 -1
  142. package/dist/client/handlers/UITransactionEventHandler.js +0 -26
  143. package/dist/client/handlers/UIUserEventHandler.d.ts +0 -12
  144. package/dist/client/handlers/UIUserEventHandler.d.ts.map +0 -1
  145. package/dist/client/handlers/UIUserEventHandler.js +0 -29
  146. package/dist/utils/userPathUtils.d.ts +0 -6
  147. package/dist/utils/userPathUtils.d.ts.map +0 -1
  148. package/dist/utils/userPathUtils.js +0 -16
package/dist/index.js CHANGED
@@ -14,53 +14,29 @@ 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.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;
17
+ exports.residence = exports.__resetSDKForTesting = exports.EventConverterFactory = exports.CurrencyStore = exports.ModelChangeEmitter = exports.isSDKInitialized = exports.firestoreToEvent = exports.eventToFirestore = exports.getModelChangeObservable = exports.getCurrencyStore = exports.getFirebaseAdapter = exports.getActivityEventHandler = exports.getGroupTransactionEventHandler = exports.getGroupEventHandler = exports.getTransactionEventHandler = exports.getFriendEventHandler = exports.getUserEventHandler = exports.getUIEventHandler = exports.getTransactionController = exports.getFriendController = exports.getUserController = exports.initializeSDK = exports.EventProcessorSDK = exports.UIEventHandler = exports.TransactionController = exports.FriendController = exports.UserController = exports.BaseEventHandler = void 0;
18
18
  // Export all backend event definitions here
19
19
  __exportStar(require("./events"), exports);
20
- // Export domain-specific event interfaces, types, and validation
21
- var DomainEvents_1 = require("./common/DomainEvents");
22
- Object.defineProperty(exports, "UserEventTypes", { enumerable: true, get: function () { return DomainEvents_1.UserEventTypes; } });
23
- Object.defineProperty(exports, "FriendEventTypes", { enumerable: true, get: function () { return DomainEvents_1.FriendEventTypes; } });
24
- Object.defineProperty(exports, "TransactionEventTypes", { enumerable: true, get: function () { return DomainEvents_1.TransactionEventTypes; } });
25
- Object.defineProperty(exports, "GroupEventTypes", { enumerable: true, get: function () { return DomainEvents_1.GroupEventTypes; } });
26
- Object.defineProperty(exports, "GroupTransactionEventTypes", { enumerable: true, get: function () { return DomainEvents_1.GroupTransactionEventTypes; } });
27
- Object.defineProperty(exports, "ActivityLogEventTypes", { enumerable: true, get: function () { return DomainEvents_1.ActivityLogEventTypes; } });
28
- Object.defineProperty(exports, "VALID_USER_EVENT_TYPES", { enumerable: true, get: function () { return DomainEvents_1.VALID_USER_EVENT_TYPES; } });
29
- Object.defineProperty(exports, "VALID_FRIEND_EVENT_TYPES", { enumerable: true, get: function () { return DomainEvents_1.VALID_FRIEND_EVENT_TYPES; } });
30
- Object.defineProperty(exports, "VALID_TRANSACTION_EVENT_TYPES", { enumerable: true, get: function () { return DomainEvents_1.VALID_TRANSACTION_EVENT_TYPES; } });
31
- Object.defineProperty(exports, "VALID_GROUP_EVENT_TYPES", { enumerable: true, get: function () { return DomainEvents_1.VALID_GROUP_EVENT_TYPES; } });
32
- Object.defineProperty(exports, "VALID_GROUP_TRANSACTION_EVENT_TYPES", { enumerable: true, get: function () { return DomainEvents_1.VALID_GROUP_TRANSACTION_EVENT_TYPES; } });
33
- Object.defineProperty(exports, "VALID_ACTIVITY_LOG_EVENT_TYPES", { enumerable: true, get: function () { return DomainEvents_1.VALID_ACTIVITY_LOG_EVENT_TYPES; } });
34
- Object.defineProperty(exports, "isValidUserEventType", { enumerable: true, get: function () { return DomainEvents_1.isValidUserEventType; } });
35
- Object.defineProperty(exports, "isValidFriendEventType", { enumerable: true, get: function () { return DomainEvents_1.isValidFriendEventType; } });
36
- Object.defineProperty(exports, "isValidTransactionEventType", { enumerable: true, get: function () { return DomainEvents_1.isValidTransactionEventType; } });
37
- Object.defineProperty(exports, "isValidGroupEventType", { enumerable: true, get: function () { return DomainEvents_1.isValidGroupEventType; } });
38
- Object.defineProperty(exports, "isValidGroupTransactionEventType", { enumerable: true, get: function () { return DomainEvents_1.isValidGroupTransactionEventType; } });
39
- Object.defineProperty(exports, "isValidActivityLogEventType", { enumerable: true, get: function () { return DomainEvents_1.isValidActivityLogEventType; } });
20
+ // Export base event handler interface
21
+ var BaseEventHandler_1 = require("./BaseEventHandler");
22
+ Object.defineProperty(exports, "BaseEventHandler", { enumerable: true, get: function () { return BaseEventHandler_1.BaseEventHandler; } });
40
23
  // Export controllers
41
24
  var UserController_1 = require("./client/controllers/UserController");
42
25
  Object.defineProperty(exports, "UserController", { enumerable: true, get: function () { return UserController_1.UserController; } });
43
26
  var FriendController_1 = require("./client/controllers/FriendController");
44
27
  Object.defineProperty(exports, "FriendController", { enumerable: true, get: function () { return FriendController_1.FriendController; } });
28
+ var TransactionController_1 = require("./client/controllers/TransactionController");
29
+ Object.defineProperty(exports, "TransactionController", { enumerable: true, get: function () { return TransactionController_1.TransactionController; } });
45
30
  // Export client handlers
46
31
  var UIEventHandler_1 = require("./client/handlers/UIEventHandler");
47
32
  Object.defineProperty(exports, "UIEventHandler", { enumerable: true, get: function () { return UIEventHandler_1.UIEventHandler; } });
48
- var UIUserEventHandler_1 = require("./client/handlers/UIUserEventHandler");
49
- Object.defineProperty(exports, "UIUserEventHandler", { enumerable: true, get: function () { return UIUserEventHandler_1.UIUserEventHandler; } });
50
- var UITransactionEventHandler_1 = require("./client/handlers/UITransactionEventHandler");
51
- Object.defineProperty(exports, "UITransactionEventHandler", { enumerable: true, get: function () { return UITransactionEventHandler_1.UITransactionEventHandler; } });
52
- var UIFriendEventHandler_1 = require("./client/handlers/UIFriendEventHandler");
53
- Object.defineProperty(exports, "UIFriendEventHandler", { enumerable: true, get: function () { return UIFriendEventHandler_1.UIFriendEventHandler; } });
54
- var UIGroupEventHandler_1 = require("./client/handlers/UIGroupEventHandler");
55
- Object.defineProperty(exports, "UIGroupEventHandler", { enumerable: true, get: function () { return UIGroupEventHandler_1.UIGroupEventHandler; } });
56
- var UIGroupTransactionEventHandler_1 = require("./client/handlers/UIGroupTransactionEventHandler");
57
- Object.defineProperty(exports, "UIGroupTransactionEventHandler", { enumerable: true, get: function () { return UIGroupTransactionEventHandler_1.UIGroupTransactionEventHandler; } });
58
33
  // Export SDK initialization
59
34
  var EventProcessorSDK_1 = require("./EventProcessorSDK");
60
35
  Object.defineProperty(exports, "EventProcessorSDK", { enumerable: true, get: function () { return EventProcessorSDK_1.EventProcessorSDK; } });
61
36
  Object.defineProperty(exports, "initializeSDK", { enumerable: true, get: function () { return EventProcessorSDK_1.initializeSDK; } });
62
37
  Object.defineProperty(exports, "getUserController", { enumerable: true, get: function () { return EventProcessorSDK_1.getUserController; } });
63
38
  Object.defineProperty(exports, "getFriendController", { enumerable: true, get: function () { return EventProcessorSDK_1.getFriendController; } });
39
+ Object.defineProperty(exports, "getTransactionController", { enumerable: true, get: function () { return EventProcessorSDK_1.getTransactionController; } });
64
40
  Object.defineProperty(exports, "getUIEventHandler", { enumerable: true, get: function () { return EventProcessorSDK_1.getUIEventHandler; } });
65
41
  Object.defineProperty(exports, "getUserEventHandler", { enumerable: true, get: function () { return EventProcessorSDK_1.getUserEventHandler; } });
66
42
  Object.defineProperty(exports, "getFriendEventHandler", { enumerable: true, get: function () { return EventProcessorSDK_1.getFriendEventHandler; } });
@@ -69,6 +45,7 @@ Object.defineProperty(exports, "getGroupEventHandler", { enumerable: true, get:
69
45
  Object.defineProperty(exports, "getGroupTransactionEventHandler", { enumerable: true, get: function () { return EventProcessorSDK_1.getGroupTransactionEventHandler; } });
70
46
  Object.defineProperty(exports, "getActivityEventHandler", { enumerable: true, get: function () { return EventProcessorSDK_1.getActivityEventHandler; } });
71
47
  Object.defineProperty(exports, "getFirebaseAdapter", { enumerable: true, get: function () { return EventProcessorSDK_1.getFirebaseAdapter; } });
48
+ Object.defineProperty(exports, "getCurrencyStore", { enumerable: true, get: function () { return EventProcessorSDK_1.getCurrencyStore; } });
72
49
  Object.defineProperty(exports, "getModelChangeObservable", { enumerable: true, get: function () { return EventProcessorSDK_1.getModelChangeObservable; } });
73
50
  Object.defineProperty(exports, "eventToFirestore", { enumerable: true, get: function () { return EventProcessorSDK_1.eventToFirestore; } });
74
51
  Object.defineProperty(exports, "firestoreToEvent", { enumerable: true, get: function () { return EventProcessorSDK_1.firestoreToEvent; } });
@@ -76,6 +53,11 @@ Object.defineProperty(exports, "isSDKInitialized", { enumerable: true, get: func
76
53
  // Export ModelChangeEmitter
77
54
  var ModelChangeEmitter_1 = require("./ModelChangeEmitter");
78
55
  Object.defineProperty(exports, "ModelChangeEmitter", { enumerable: true, get: function () { return ModelChangeEmitter_1.ModelChangeEmitter; } });
56
+ // Export currency store and types
57
+ var CurrencyStore_1 = require("./store/CurrencyStore");
58
+ Object.defineProperty(exports, "CurrencyStore", { enumerable: true, get: function () { return CurrencyStore_1.CurrencyStore; } });
59
+ var eventConverter_1 = require("./converters/eventConverter");
60
+ Object.defineProperty(exports, "EventConverterFactory", { enumerable: true, get: function () { return eventConverter_1.EventConverterFactory; } });
79
61
  // Export singleton utilities for testing
80
62
  var EventProcessorSDK_2 = require("./EventProcessorSDK");
81
63
  Object.defineProperty(exports, "__resetSDKForTesting", { enumerable: true, get: function () { return EventProcessorSDK_2.__resetSDKForTesting; } });
@@ -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,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
+ {"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,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,GAAG,SAAS,CAAC,CAAC;IACvE,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"}
@@ -0,0 +1,5 @@
1
+ import { CurrencyRate } from "../common/CurrencyRate";
2
+ export declare abstract class CurrencyStore {
3
+ abstract getCurrencyRates(): Promise<CurrencyRate | undefined>;
4
+ }
5
+ //# sourceMappingURL=CurrencyStore.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CurrencyStore.d.ts","sourceRoot":"","sources":["../../src/store/CurrencyStore.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAEtD,8BAAsB,aAAa;IAC/B,QAAQ,CAAC,gBAAgB,IAAI,OAAO,CAAC,YAAY,GAAG,SAAS,CAAC;CACjE"}
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CurrencyStore = void 0;
4
+ class CurrencyStore {
5
+ }
6
+ exports.CurrencyStore = CurrencyStore;
@@ -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,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
+ {"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,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;CAC9E"}
@@ -1 +1 @@
1
- {"version":3,"file":"GroupModelStore.d.ts","sourceRoot":"","sources":["../../src/store/GroupModelStore.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAChC,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C,MAAM,WAAW,eAAgB,SAAQ,UAAU;IAC/C,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,GAAG,SAAS,CAAC,CAAC;IAEjE,gCAAgC,CAC5B,QAAQ,EAAE,MAAM,GACjB,OAAO,CAAC,UAAU,GAAG,SAAS,CAAC,CAAC;IAEnC,IAAI,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEvC,uCAAuC,CACnC,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,GAChB,OAAO,CAAC,UAAU,GAAG,SAAS,CAAC,CAAC;IAEnC,iCAAiC,CAC7B,OAAO,EAAE,MAAM,GAChB,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC;CAC5B"}
1
+ {"version":3,"file":"GroupModelStore.d.ts","sourceRoot":"","sources":["../../src/store/GroupModelStore.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAChC,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C,MAAM,WAAW,eAAgB,SAAQ,UAAU;IAC/C,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,GAAG,SAAS,CAAC,CAAC;IAEjE,gCAAgC,CAC5B,QAAQ,EAAE,MAAM,GACjB,OAAO,CAAC,UAAU,GAAG,SAAS,CAAC,CAAC;IAEnC,IAAI,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEvC,uCAAuC,CACnC,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,GAChB,OAAO,CAAC,UAAU,GAAG,SAAS,CAAC,CAAC;IAEnC,iCAAiC,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC;CAC7E"}
@@ -1 +1 @@
1
- {"version":3,"file":"GroupTransactionModelStore.d.ts","sourceRoot":"","sources":["../../src/store/GroupTransactionModelStore.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,IAAI,CAAC;AAC3C,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C,MAAM,WAAW,0BAA2B,SAAQ,UAAU;IAC1D,aAAa,CACT,QAAQ,EAAE,MAAM,GACjB,OAAO,CAAC,qBAAqB,GAAG,SAAS,CAAC,CAAC;IAE9C,gCAAgC,CAC5B,QAAQ,EAAE,MAAM,GACjB,OAAO,CAAC,qBAAqB,GAAG,SAAS,CAAC,CAAC;IAE9C,iDAAiD,CAC7C,OAAO,EAAE,MAAM,EACf,aAAa,EAAE,MAAM,GACtB,OAAO,CAAC,qBAAqB,EAAE,CAAC,CAAC;IAEpC,4BAA4B,CACxB,MAAM,EAAE,MAAM,EACd,aAAa,EAAE,MAAM,GACtB,OAAO,CAAC,qBAAqB,GAAG,SAAS,CAAC,CAAC;IAE9C,IAAI,CAAC,KAAK,EAAE,qBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACrD"}
1
+ {"version":3,"file":"GroupTransactionModelStore.d.ts","sourceRoot":"","sources":["../../src/store/GroupTransactionModelStore.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,IAAI,CAAC;AAC3C,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C,MAAM,WAAW,0BAA2B,SAAQ,UAAU;IAC1D,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,qBAAqB,GAAG,SAAS,CAAC,CAAC;IAE5E,gCAAgC,CAC5B,QAAQ,EAAE,MAAM,GACjB,OAAO,CAAC,qBAAqB,GAAG,SAAS,CAAC,CAAC;IAE9C,iDAAiD,CAC7C,OAAO,EAAE,MAAM,EACf,aAAa,EAAE,MAAM,GACtB,OAAO,CAAC,qBAAqB,EAAE,CAAC,CAAC;IAEpC,4BAA4B,CACxB,MAAM,EAAE,MAAM,EACd,aAAa,EAAE,MAAM,GACtB,OAAO,CAAC,qBAAqB,GAAG,SAAS,CAAC,CAAC;IAE9C,IAAI,CAAC,KAAK,EAAE,qBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACrD"}
@@ -5,6 +5,8 @@ export interface TransactionModelStore extends ModelStore {
5
5
  getByStreamIdWhereDeletedIsFalse(streamId: string): Promise<TransactionModel | undefined>;
6
6
  findByUserAndLogicalTransactionId(userId: string, recipientUserId: string, logicalTransactionId: string): Promise<TransactionModel | undefined>;
7
7
  findByGroupTransactionId(userId: string, groupTransactionId: string): Promise<TransactionModel[]>;
8
+ findByUserIdAndRecipientUserIdWhereDeletedIsFalse(userId: string, recipientUserId: string): Promise<TransactionModel[]>;
9
+ findAllByUserIdWhereDeletedIsFalse(userId: string): Promise<TransactionModel[]>;
8
10
  save(model: TransactionModel): Promise<void>;
9
11
  }
10
12
  //# sourceMappingURL=TransactionModelStore.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"TransactionModelStore.d.ts","sourceRoot":"","sources":["../../src/store/TransactionModelStore.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;IAEzC,gCAAgC,CAC5B,QAAQ,EAAE,MAAM,GACjB,OAAO,CAAC,gBAAgB,GAAG,SAAS,CAAC,CAAC;IAEzC,iCAAiC,CAC7B,MAAM,EAAE,MAAM,EACd,eAAe,EAAE,MAAM,EACvB,oBAAoB,EAAE,MAAM,GAC7B,OAAO,CAAC,gBAAgB,GAAG,SAAS,CAAC,CAAC;IAEzC,wBAAwB,CACpB,MAAM,EAAE,MAAM,EACd,kBAAkB,EAAE,MAAM,GAC3B,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAAC;IAE/B,IAAI,CAAC,KAAK,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAChD"}
1
+ {"version":3,"file":"TransactionModelStore.d.ts","sourceRoot":"","sources":["../../src/store/TransactionModelStore.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,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,GAAG,SAAS,CAAC,CAAC;IAEvE,gCAAgC,CAC5B,QAAQ,EAAE,MAAM,GACjB,OAAO,CAAC,gBAAgB,GAAG,SAAS,CAAC,CAAC;IAEzC,iCAAiC,CAC7B,MAAM,EAAE,MAAM,EACd,eAAe,EAAE,MAAM,EACvB,oBAAoB,EAAE,MAAM,GAC7B,OAAO,CAAC,gBAAgB,GAAG,SAAS,CAAC,CAAC;IAEzC,wBAAwB,CACpB,MAAM,EAAE,MAAM,EACd,kBAAkB,EAAE,MAAM,GAC3B,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAAC;IAE/B,iDAAiD,CAC7C,MAAM,EAAE,MAAM,EACd,eAAe,EAAE,MAAM,GACxB,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAAC;IAE/B,kCAAkC,CAC9B,MAAM,EAAE,MAAM,GACf,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAAC;IAE/B,IAAI,CAAC,KAAK,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAChD"}
@@ -7,5 +7,6 @@ export interface UserModelStore extends ModelStore {
7
7
  findByEmail(email: string): Promise<UserModel | undefined>;
8
8
  findByPhone(phone: string): Promise<UserModel | undefined>;
9
9
  findByFirebaseUid(uid: string): Promise<UserModel | undefined>;
10
+ appUser(): Promise<UserModel>;
10
11
  }
11
12
  //# sourceMappingURL=UserModelStore.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"UserModelStore.d.ts","sourceRoot":"","sources":["../../src/store/UserModelStore.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,IAAI,CAAC;AAC/B,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C,MAAM,WAAW,cAAe,SAAQ,UAAU;IAC9C,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,GAAG,SAAS,CAAC,CAAC;IAEhE,gCAAgC,CAC5B,QAAQ,EAAE,MAAM,GACjB,OAAO,CAAC,SAAS,GAAG,SAAS,CAAC,CAAC;IAElC,IAAI,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEtC,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,GAAG,SAAS,CAAC,CAAC;IAE3D,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,GAAG,SAAS,CAAC,CAAC;IAE3D,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,GAAG,SAAS,CAAC,CAAC;CAClE"}
1
+ {"version":3,"file":"UserModelStore.d.ts","sourceRoot":"","sources":["../../src/store/UserModelStore.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,IAAI,CAAC;AAC/B,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C,MAAM,WAAW,cAAe,SAAQ,UAAU;IAC9C,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,GAAG,SAAS,CAAC,CAAC;IAEhE,gCAAgC,CAC5B,QAAQ,EAAE,MAAM,GACjB,OAAO,CAAC,SAAS,GAAG,SAAS,CAAC,CAAC;IAElC,IAAI,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEtC,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,GAAG,SAAS,CAAC,CAAC;IAE3D,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,GAAG,SAAS,CAAC,CAAC;IAE3D,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,GAAG,SAAS,CAAC,CAAC;IAE/D,OAAO,IAAI,OAAO,CAAC,SAAS,CAAC,CAAC;CACjC"}
@@ -0,0 +1,13 @@
1
+ import { TransactionModel } from "../TransactionEvents";
2
+ import { UserModelStore } from "../store/UserModelStore";
3
+ import { CurrencyStore } from "../store/CurrencyStore";
4
+ import { BalanceResponse } from "../contracts/shared";
5
+ export declare class BalanceUtil {
6
+ private userModelStore;
7
+ private currencyStore;
8
+ constructor(userModelStore: UserModelStore, currencyStore: CurrencyStore);
9
+ calculateBalance(transactions: TransactionModel[], userId: string): Promise<BalanceResponse>;
10
+ private calculateCurrencyBalances;
11
+ private convertCurrency;
12
+ }
13
+ //# sourceMappingURL=BalanceUtil.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BalanceUtil.d.ts","sourceRoot":"","sources":["../../src/utils/BalanceUtil.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAEH,eAAe,EAElB,MAAM,qBAAqB,CAAC;AAE7B,qBAAa,WAAW;IAEhB,OAAO,CAAC,cAAc;IACtB,OAAO,CAAC,aAAa;gBADb,cAAc,EAAE,cAAc,EAC9B,aAAa,EAAE,aAAa;IAGlC,gBAAgB,CAClB,YAAY,EAAE,gBAAgB,EAAE,EAChC,MAAM,EAAE,MAAM,GACf,OAAO,CAAC,eAAe,CAAC;IAmE3B,OAAO,CAAC,yBAAyB;IAwCjC,OAAO,CAAC,eAAe;CAmB1B"}
@@ -0,0 +1,97 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.BalanceUtil = void 0;
4
+ class BalanceUtil {
5
+ constructor(userModelStore, currencyStore) {
6
+ this.userModelStore = userModelStore;
7
+ this.currencyStore = currencyStore;
8
+ }
9
+ async calculateBalance(transactions, userId) {
10
+ if (transactions.length === 0) {
11
+ return {
12
+ main: undefined,
13
+ other: [],
14
+ };
15
+ }
16
+ const user = await this.userModelStore.getByStreamIdWhereDeletedIsFalse(userId);
17
+ const baseCurrency = user?.currency;
18
+ const currencyBalances = this.calculateCurrencyBalances(transactions);
19
+ if (!baseCurrency || currencyBalances.size === 0) {
20
+ return {
21
+ main: undefined,
22
+ other: [],
23
+ };
24
+ }
25
+ const currencyRates = await this.currencyStore.getCurrencyRates();
26
+ const other = [];
27
+ let totalConvertedAmount = 0;
28
+ let mainIsOwed = false;
29
+ for (const [currency, balance] of currencyBalances.entries()) {
30
+ const convertedAmount = this.convertCurrency(balance.amount, currency, baseCurrency, currencyRates?.rates);
31
+ other.push({
32
+ amount: {
33
+ amount: Math.abs(balance.amount),
34
+ currency: currency,
35
+ isOwed: balance.amount < 0,
36
+ },
37
+ convertedAmount: {
38
+ amount: Math.abs(convertedAmount),
39
+ currency: baseCurrency,
40
+ isOwed: convertedAmount < 0,
41
+ },
42
+ });
43
+ totalConvertedAmount += convertedAmount;
44
+ }
45
+ if (totalConvertedAmount < 0) {
46
+ mainIsOwed = true;
47
+ }
48
+ const main = {
49
+ amount: Math.abs(totalConvertedAmount),
50
+ currency: baseCurrency,
51
+ isOwed: mainIsOwed,
52
+ };
53
+ return {
54
+ main,
55
+ other,
56
+ };
57
+ }
58
+ calculateCurrencyBalances(transactions) {
59
+ const balances = new Map();
60
+ for (const transaction of transactions) {
61
+ if (transaction.deleted) {
62
+ continue;
63
+ }
64
+ const existingBalance = balances.get(transaction.currency) || {
65
+ amount: 0,
66
+ isOwed: false,
67
+ };
68
+ const signedAmount = transaction.isOwed
69
+ ? -transaction.amount
70
+ : transaction.amount;
71
+ const newAmount = existingBalance.amount + signedAmount;
72
+ balances.set(transaction.currency, {
73
+ amount: newAmount,
74
+ isOwed: newAmount < 0,
75
+ });
76
+ }
77
+ const nonZeroBalances = new Map();
78
+ for (const [currency, balance] of balances.entries()) {
79
+ if (balance.amount !== 0) {
80
+ nonZeroBalances.set(currency, balance);
81
+ }
82
+ }
83
+ return nonZeroBalances;
84
+ }
85
+ convertCurrency(amount, fromCurrency, toCurrency, rates) {
86
+ if (fromCurrency === toCurrency) {
87
+ return amount;
88
+ }
89
+ if (!rates || !rates[fromCurrency] || !rates[toCurrency]) {
90
+ return amount;
91
+ }
92
+ const amountInBase = amount / rates[fromCurrency];
93
+ const convertedAmount = amountInBase * rates[toCurrency];
94
+ return convertedAmount;
95
+ }
96
+ }
97
+ exports.BalanceUtil = BalanceUtil;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@zeeshan60/event-processor",
3
- "version": "1.0.14",
3
+ "version": "1.0.16",
4
4
  "description": "Shared event sourcing infrastructure for Loan Tracker projects",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -1,16 +0,0 @@
1
- import { FriendModel, FriendEvent } from "../..";
2
- import { FriendModelStore } from "../..";
3
- import { UserModelStore } from "../..";
4
- import { FriendEventStore } from "../..";
5
- import { UserEventStore } from "../..";
6
- import { ActivityEventHandler } from "../../ActivityEventHandler";
7
- export declare class UIFriendEventHandler {
8
- private modelStore;
9
- private userModelStore;
10
- private friendEventStore;
11
- private userEventStore;
12
- private activityEventHandler?;
13
- constructor(modelStore: FriendModelStore, userModelStore: UserModelStore, friendEventStore: FriendEventStore, userEventStore: UserEventStore, activityEventHandler?: ActivityEventHandler | undefined);
14
- handleEvent(event: FriendEvent): Promise<FriendModel>;
15
- }
16
- //# sourceMappingURL=UIFriendEventHandler.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"UIFriendEventHandler.d.ts","sourceRoot":"","sources":["../../../src/client/handlers/UIFriendEventHandler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,OAAO,CAAC;AACzC,OAAO,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,EAAE,gBAAgB,EAAE,MAAM,OAAO,CAAC;AACzC,OAAO,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAGlE,qBAAa,oBAAoB;IAEzB,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;CAsB9D"}
@@ -1,27 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.UIFriendEventHandler = void 0;
4
- const DomainEvents_1 = require("../../common/DomainEvents");
5
- class UIFriendEventHandler {
6
- constructor(modelStore, userModelStore, friendEventStore, userEventStore, activityEventHandler) {
7
- this.modelStore = modelStore;
8
- this.userModelStore = userModelStore;
9
- this.friendEventStore = friendEventStore;
10
- this.userEventStore = userEventStore;
11
- this.activityEventHandler = activityEventHandler;
12
- }
13
- async handleEvent(event) {
14
- const eventType = event.constructor.name;
15
- if (!(0, DomainEvents_1.isValidFriendEventType)(eventType)) {
16
- throw new Error(`Unknown friend event type: ${eventType}`);
17
- }
18
- const existingModel = await this.modelStore.getByStreamIdWhereDeletedIsFalse(event.streamId);
19
- const updatedModel = event.apply(existingModel);
20
- await this.modelStore.save(updatedModel);
21
- if (this.activityEventHandler) {
22
- await this.activityEventHandler.createActivityLog(event, existingModel, updatedModel);
23
- }
24
- return updatedModel;
25
- }
26
- }
27
- exports.UIFriendEventHandler = UIFriendEventHandler;
@@ -1,18 +0,0 @@
1
- import { GroupModel, GroupEvent } from "../..";
2
- import { GroupModelStore } from "../..";
3
- import { FriendModelStore } from "../..";
4
- import { UserModelStore } from "../..";
5
- import { GroupEventStore } from "../..";
6
- import { FriendEventStore } from "../..";
7
- import { ActivityEventHandler } from "../../ActivityEventHandler";
8
- export declare class UIGroupEventHandler {
9
- private modelStore;
10
- private friendModelStore;
11
- private userModelStore;
12
- private groupEventStore;
13
- private friendEventStore;
14
- private activityEventHandler?;
15
- constructor(modelStore: GroupModelStore, friendModelStore: FriendModelStore, userModelStore: UserModelStore, groupEventStore: GroupEventStore, friendEventStore: FriendEventStore, activityEventHandler?: ActivityEventHandler | undefined);
16
- handleEvent(event: GroupEvent): Promise<GroupModel>;
17
- }
18
- //# sourceMappingURL=UIGroupEventHandler.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"UIGroupEventHandler.d.ts","sourceRoot":"","sources":["../../../src/client/handlers/UIGroupEventHandler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AAC/C,OAAO,EAAE,eAAe,EAAE,MAAM,OAAO,CAAC;AACxC,OAAO,EAAE,gBAAgB,EAAE,MAAM,OAAO,CAAC;AACzC,OAAO,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,EAAE,eAAe,EAAE,MAAM,OAAO,CAAC;AACxC,OAAO,EAAE,gBAAgB,EAAE,MAAM,OAAO,CAAC;AACzC,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAGlE,qBAAa,mBAAmB;IAExB,OAAO,CAAC,UAAU;IAClB,OAAO,CAAC,gBAAgB;IACxB,OAAO,CAAC,cAAc;IACtB,OAAO,CAAC,eAAe;IACvB,OAAO,CAAC,gBAAgB;IACxB,OAAO,CAAC,oBAAoB,CAAC;gBALrB,UAAU,EAAE,eAAe,EAC3B,gBAAgB,EAAE,gBAAgB,EAClC,cAAc,EAAE,cAAc,EAC9B,eAAe,EAAE,eAAe,EAChC,gBAAgB,EAAE,gBAAgB,EAClC,oBAAoB,CAAC,EAAE,oBAAoB,YAAA;IAGjD,WAAW,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC;CAsB5D"}
@@ -1,28 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.UIGroupEventHandler = void 0;
4
- const DomainEvents_1 = require("../../common/DomainEvents");
5
- class UIGroupEventHandler {
6
- constructor(modelStore, friendModelStore, userModelStore, groupEventStore, friendEventStore, activityEventHandler) {
7
- this.modelStore = modelStore;
8
- this.friendModelStore = friendModelStore;
9
- this.userModelStore = userModelStore;
10
- this.groupEventStore = groupEventStore;
11
- this.friendEventStore = friendEventStore;
12
- this.activityEventHandler = activityEventHandler;
13
- }
14
- async handleEvent(event) {
15
- const eventType = event.constructor.name;
16
- if (!(0, DomainEvents_1.isValidGroupEventType)(eventType)) {
17
- throw new Error(`Unknown group event type: ${eventType}`);
18
- }
19
- const existingModel = await this.modelStore.getByStreamIdWhereDeletedIsFalse(event.streamId);
20
- const updatedModel = event.apply(existingModel);
21
- await this.modelStore.save(updatedModel);
22
- if (this.activityEventHandler) {
23
- await this.activityEventHandler.createActivityLog(event, existingModel, updatedModel);
24
- }
25
- return updatedModel;
26
- }
27
- }
28
- exports.UIGroupEventHandler = UIGroupEventHandler;
@@ -1,18 +0,0 @@
1
- import { GroupTransactionModel, GroupTransactionEvent } from "../..";
2
- import { GroupTransactionModelStore } from "../..";
3
- import { GroupTransactionEventStore } from "../..";
4
- import { GroupModelStore } from "../..";
5
- import { TransactionEventStore } from "../..";
6
- import { TransactionModelStore } from "../..";
7
- import { ActivityEventHandler } from "../../ActivityEventHandler";
8
- export declare class UIGroupTransactionEventHandler {
9
- private modelStore;
10
- private eventStore;
11
- private groupModelStore;
12
- private transactionEventStore;
13
- private transactionModelStore;
14
- private activityEventHandler?;
15
- constructor(modelStore: GroupTransactionModelStore, eventStore: GroupTransactionEventStore, groupModelStore: GroupModelStore, transactionEventStore: TransactionEventStore, transactionModelStore: TransactionModelStore, activityEventHandler?: ActivityEventHandler | undefined);
16
- handleEvent(event: GroupTransactionEvent): Promise<GroupTransactionModel>;
17
- }
18
- //# sourceMappingURL=UIGroupTransactionEventHandler.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"UIGroupTransactionEventHandler.d.ts","sourceRoot":"","sources":["../../../src/client/handlers/UIGroupTransactionEventHandler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,MAAM,OAAO,CAAC;AACrE,OAAO,EAAE,0BAA0B,EAAE,MAAM,OAAO,CAAC;AACnD,OAAO,EAAE,0BAA0B,EAAE,MAAM,OAAO,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,OAAO,CAAC;AACxC,OAAO,EAAE,qBAAqB,EAAE,MAAM,OAAO,CAAC;AAC9C,OAAO,EAAE,qBAAqB,EAAE,MAAM,OAAO,CAAC;AAC9C,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAGlE,qBAAa,8BAA8B;IAEnC,OAAO,CAAC,UAAU;IAClB,OAAO,CAAC,UAAU;IAClB,OAAO,CAAC,eAAe;IACvB,OAAO,CAAC,qBAAqB;IAC7B,OAAO,CAAC,qBAAqB;IAC7B,OAAO,CAAC,oBAAoB,CAAC;gBALrB,UAAU,EAAE,0BAA0B,EACtC,UAAU,EAAE,0BAA0B,EACtC,eAAe,EAAE,eAAe,EAChC,qBAAqB,EAAE,qBAAqB,EAC5C,qBAAqB,EAAE,qBAAqB,EAC5C,oBAAoB,CAAC,EAAE,oBAAoB,YAAA;IAGjD,WAAW,CACb,KAAK,EAAE,qBAAqB,GAC7B,OAAO,CAAC,qBAAqB,CAAC;CA0BpC"}
@@ -1,28 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.UIGroupTransactionEventHandler = void 0;
4
- const DomainEvents_1 = require("../../common/DomainEvents");
5
- class UIGroupTransactionEventHandler {
6
- constructor(modelStore, eventStore, groupModelStore, transactionEventStore, transactionModelStore, activityEventHandler) {
7
- this.modelStore = modelStore;
8
- this.eventStore = eventStore;
9
- this.groupModelStore = groupModelStore;
10
- this.transactionEventStore = transactionEventStore;
11
- this.transactionModelStore = transactionModelStore;
12
- this.activityEventHandler = activityEventHandler;
13
- }
14
- async handleEvent(event) {
15
- const eventType = event.constructor.name;
16
- if (!(0, DomainEvents_1.isValidGroupTransactionEventType)(eventType)) {
17
- throw new Error(`Unknown group transaction event type: ${eventType}`);
18
- }
19
- const existingModel = await this.modelStore.getByStreamIdWhereDeletedIsFalse(event.streamId);
20
- const updatedModel = event.apply(existingModel);
21
- await this.modelStore.save(updatedModel);
22
- if (this.activityEventHandler) {
23
- await this.activityEventHandler.createActivityLog(event, existingModel, updatedModel);
24
- }
25
- return updatedModel;
26
- }
27
- }
28
- exports.UIGroupTransactionEventHandler = UIGroupTransactionEventHandler;
@@ -1,14 +0,0 @@
1
- import { TransactionModel, TransactionEvent } from "../..";
2
- import { TransactionModelStore } from "../..";
3
- import { TransactionEventStore } from "../..";
4
- import { UserModelStore } from "../..";
5
- import { ActivityEventHandler } from "../../ActivityEventHandler";
6
- export declare class UITransactionEventHandler {
7
- private modelStore;
8
- private eventStore;
9
- private txUserModelStore;
10
- private activityEventHandler?;
11
- constructor(modelStore: TransactionModelStore, eventStore: TransactionEventStore, txUserModelStore: UserModelStore, activityEventHandler?: ActivityEventHandler | undefined);
12
- handleEvent(event: TransactionEvent): Promise<TransactionModel>;
13
- }
14
- //# sourceMappingURL=UITransactionEventHandler.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"UITransactionEventHandler.d.ts","sourceRoot":"","sources":["../../../src/client/handlers/UITransactionEventHandler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,OAAO,CAAC;AAC3D,OAAO,EAAE,qBAAqB,EAAE,MAAM,OAAO,CAAC;AAC9C,OAAO,EAAE,qBAAqB,EAAE,MAAM,OAAO,CAAC;AAC9C,OAAO,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAGlE,qBAAa,yBAAyB;IAE9B,OAAO,CAAC,UAAU;IAClB,OAAO,CAAC,UAAU;IAClB,OAAO,CAAC,gBAAgB;IACxB,OAAO,CAAC,oBAAoB,CAAC;gBAHrB,UAAU,EAAE,qBAAqB,EACjC,UAAU,EAAE,qBAAqB,EACjC,gBAAgB,EAAE,cAAc,EAChC,oBAAoB,CAAC,EAAE,oBAAoB,YAAA;IAGjD,WAAW,CAAC,KAAK,EAAE,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,CAAC;CAsBxE"}
@@ -1,26 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.UITransactionEventHandler = void 0;
4
- const DomainEvents_1 = require("../../common/DomainEvents");
5
- class UITransactionEventHandler {
6
- constructor(modelStore, eventStore, txUserModelStore, activityEventHandler) {
7
- this.modelStore = modelStore;
8
- this.eventStore = eventStore;
9
- this.txUserModelStore = txUserModelStore;
10
- this.activityEventHandler = activityEventHandler;
11
- }
12
- async handleEvent(event) {
13
- const eventType = event.constructor.name;
14
- if (!(0, DomainEvents_1.isValidTransactionEventType)(eventType)) {
15
- throw new Error(`Unknown transaction event type: ${eventType}`);
16
- }
17
- const existingModel = await this.modelStore.getByStreamIdWhereDeletedIsFalse(event.streamId);
18
- const model = event.apply(existingModel);
19
- await this.modelStore.save(model);
20
- if (this.activityEventHandler) {
21
- await this.activityEventHandler.createActivityLog(event, existingModel, model);
22
- }
23
- return model;
24
- }
25
- }
26
- exports.UITransactionEventHandler = UITransactionEventHandler;
@@ -1,12 +0,0 @@
1
- import { UserModel, UserEvent } from "../..";
2
- import { UserModelStore } from "../..";
3
- import { UserEventStore } from "../..";
4
- import { ActivityEventHandler } from "../../ActivityEventHandler";
5
- export declare class UIUserEventHandler {
6
- private modelStore;
7
- private eventStore;
8
- private activityEventHandler?;
9
- constructor(modelStore: UserModelStore, eventStore: UserEventStore, activityEventHandler?: ActivityEventHandler | undefined);
10
- handleEvent(event: UserEvent): Promise<UserModel>;
11
- }
12
- //# sourceMappingURL=UIUserEventHandler.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"UIUserEventHandler.d.ts","sourceRoot":"","sources":["../../../src/client/handlers/UIUserEventHandler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAC7C,OAAO,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAGlE,qBAAa,kBAAkB;IAEvB,OAAO,CAAC,UAAU;IAClB,OAAO,CAAC,UAAU;IAClB,OAAO,CAAC,oBAAoB,CAAC;gBAFrB,UAAU,EAAE,cAAc,EAC1B,UAAU,EAAE,cAAc,EAC1B,oBAAoB,CAAC,EAAE,oBAAoB,YAAA;IAGjD,WAAW,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;CA8B1D"}
@@ -1,29 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.UIUserEventHandler = void 0;
4
- const DomainEvents_1 = require("../../common/DomainEvents");
5
- class UIUserEventHandler {
6
- constructor(modelStore, eventStore, activityEventHandler) {
7
- this.modelStore = modelStore;
8
- this.eventStore = eventStore;
9
- this.activityEventHandler = activityEventHandler;
10
- }
11
- async handleEvent(event) {
12
- const eventType = event.constructor.name;
13
- if (!(0, DomainEvents_1.isValidUserEventType)(eventType)) {
14
- throw new Error(`Unknown user event type: ${eventType}`);
15
- }
16
- const existingModel = await this.modelStore.getByStreamIdWhereDeletedIsFalse(event.streamId);
17
- if (!existingModel?.uid) {
18
- throw new Error(`User model not found or missing uid for streamId: ${event.streamId}`);
19
- }
20
- await this.eventStore.addEvent(event);
21
- const updatedModel = event.apply(existingModel);
22
- await this.modelStore.save(updatedModel);
23
- if (this.activityEventHandler) {
24
- await this.activityEventHandler.createActivityLog(event, existingModel, updatedModel);
25
- }
26
- return updatedModel;
27
- }
28
- }
29
- exports.UIUserEventHandler = UIUserEventHandler;
@@ -1,6 +0,0 @@
1
- import { UserModel } from "..";
2
- export declare function getUserEventPath(userModel: UserModel | undefined, recipientStreamId: string): {
3
- path: string;
4
- userId: string;
5
- };
6
- //# sourceMappingURL=userPathUtils.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"userPathUtils.d.ts","sourceRoot":"","sources":["../../src/utils/userPathUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,IAAI,CAAC;AAE/B,wBAAgB,gBAAgB,CAC5B,SAAS,EAAE,SAAS,GAAG,SAAS,EAChC,iBAAiB,EAAE,MAAM,GAC1B;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAUlC"}
@@ -1,16 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getUserEventPath = getUserEventPath;
4
- function getUserEventPath(userModel, recipientStreamId) {
5
- if (userModel) {
6
- if (userModel.uid) {
7
- return { path: "users", userId: userModel.uid };
8
- }
9
- else {
10
- return { path: "placeholders", userId: userModel.streamId };
11
- }
12
- }
13
- else {
14
- return { path: "placeholders", userId: recipientStreamId };
15
- }
16
- }