@zeeshan60/event-processor 1.0.161 → 1.0.163

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 (77) hide show
  1. package/README.md +4 -4
  2. package/dist/EventProcessorSDK.d.ts +12 -1
  3. package/dist/EventProcessorSDK.d.ts.map +1 -1
  4. package/dist/EventProcessorSDK.js +25 -0
  5. package/dist/EventProcessorSDK.js.map +1 -1
  6. package/dist/ExpenseAccountEventHandler.d.ts.map +1 -1
  7. package/dist/ExpenseAccountEventHandler.js +1 -0
  8. package/dist/ExpenseAccountEventHandler.js.map +1 -1
  9. package/dist/ExpenseEventHandler.d.ts +2 -1
  10. package/dist/ExpenseEventHandler.d.ts.map +1 -1
  11. package/dist/ExpenseEventHandler.js +103 -16
  12. package/dist/ExpenseEventHandler.js.map +1 -1
  13. package/dist/ExpenseEvents.d.ts +6 -8
  14. package/dist/ExpenseEvents.d.ts.map +1 -1
  15. package/dist/ExpenseEvents.js +3 -4
  16. package/dist/ExpenseEvents.js.map +1 -1
  17. package/dist/ReminderEventHandler.d.ts +38 -0
  18. package/dist/ReminderEventHandler.d.ts.map +1 -0
  19. package/dist/ReminderEventHandler.js +190 -0
  20. package/dist/ReminderEventHandler.js.map +1 -0
  21. package/dist/ReminderEvents.d.ts +50 -0
  22. package/dist/ReminderEvents.d.ts.map +1 -0
  23. package/dist/ReminderEvents.js +51 -0
  24. package/dist/ReminderEvents.js.map +1 -0
  25. package/dist/TransactionEventHandler.d.ts +2 -0
  26. package/dist/TransactionEventHandler.d.ts.map +1 -1
  27. package/dist/TransactionEventHandler.js +94 -6
  28. package/dist/TransactionEventHandler.js.map +1 -1
  29. package/dist/TransactionEvents.d.ts +6 -14
  30. package/dist/TransactionEvents.d.ts.map +1 -1
  31. package/dist/TransactionEvents.js +3 -8
  32. package/dist/TransactionEvents.js.map +1 -1
  33. package/dist/client/controllers/ExpenseController.d.ts +5 -1
  34. package/dist/client/controllers/ExpenseController.d.ts.map +1 -1
  35. package/dist/client/controllers/ExpenseController.js +64 -6
  36. package/dist/client/controllers/ExpenseController.js.map +1 -1
  37. package/dist/client/controllers/ReminderController.d.ts +10 -0
  38. package/dist/client/controllers/ReminderController.d.ts.map +1 -0
  39. package/dist/client/controllers/ReminderController.js +63 -0
  40. package/dist/client/controllers/ReminderController.js.map +1 -0
  41. package/dist/client/controllers/SuggestionController.js +1 -1
  42. package/dist/client/controllers/SuggestionController.js.map +1 -1
  43. package/dist/client/controllers/TransactionController.d.ts +5 -15
  44. package/dist/client/controllers/TransactionController.d.ts.map +1 -1
  45. package/dist/client/controllers/TransactionController.js +74 -74
  46. package/dist/client/controllers/TransactionController.js.map +1 -1
  47. package/dist/common/DomainEvents.d.ts +4 -0
  48. package/dist/common/DomainEvents.d.ts.map +1 -1
  49. package/dist/common/EventTypes.d.ts +3 -0
  50. package/dist/common/EventTypes.d.ts.map +1 -1
  51. package/dist/common/EventTypes.js +4 -0
  52. package/dist/common/EventTypes.js.map +1 -1
  53. package/dist/contracts/expenses/index.d.ts +2 -2
  54. package/dist/contracts/expenses/index.d.ts.map +1 -1
  55. package/dist/contracts/transactions/index.d.ts +2 -0
  56. package/dist/contracts/transactions/index.d.ts.map +1 -1
  57. package/dist/contracts/transactions/index.js.map +1 -1
  58. package/dist/converters/eventConverter.d.ts.map +1 -1
  59. package/dist/converters/eventConverter.js +7 -0
  60. package/dist/converters/eventConverter.js.map +1 -1
  61. package/dist/events.d.ts +4 -0
  62. package/dist/events.d.ts.map +1 -1
  63. package/dist/events.js +6 -1
  64. package/dist/events.js.map +1 -1
  65. package/dist/index.d.ts +3 -2
  66. package/dist/index.d.ts.map +1 -1
  67. package/dist/index.js +6 -2
  68. package/dist/index.js.map +1 -1
  69. package/dist/store/ReminderEventStore.d.ts +5 -0
  70. package/dist/store/ReminderEventStore.d.ts.map +1 -0
  71. package/dist/store/ReminderEventStore.js +3 -0
  72. package/dist/store/ReminderEventStore.js.map +1 -0
  73. package/dist/store/ReminderModelStore.d.ts +11 -0
  74. package/dist/store/ReminderModelStore.d.ts.map +1 -0
  75. package/dist/store/ReminderModelStore.js +5 -0
  76. package/dist/store/ReminderModelStore.js.map +1 -0
  77. package/package.json +1 -1
@@ -0,0 +1,190 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ReminderEventHandler = void 0;
4
+ const NotificationEvents_1 = require("./NotificationEvents");
5
+ const EventTypes_1 = require("./common/EventTypes");
6
+ const BaseEventHandler_1 = require("./BaseEventHandler");
7
+ const BalanceUtil_1 = require("./utils/BalanceUtil");
8
+ const uuid_1 = require("uuid");
9
+ const contracts_1 = require("./contracts");
10
+ class ReminderEventHandler extends BaseEventHandler_1.BaseEventHandler {
11
+ constructor(modelStore, reminderEventStore, transactionModelStore, groupTransactionModelStore, friendModelStore, userModelStore, groupModelStore, currencyStore, notificationEventHandler, isClient, clientType, modelChangeEmitter, notificationPublisher, logger) {
12
+ super(isClient, clientType, modelChangeEmitter, logger);
13
+ this.modelStore = modelStore;
14
+ this.reminderEventStore = reminderEventStore;
15
+ this.transactionModelStore = transactionModelStore;
16
+ this.groupTransactionModelStore = groupTransactionModelStore;
17
+ this.friendModelStore = friendModelStore;
18
+ this.userModelStore = userModelStore;
19
+ this.groupModelStore = groupModelStore;
20
+ this.currencyStore = currencyStore;
21
+ this.notificationEventHandler = notificationEventHandler;
22
+ this.notificationPublisher = notificationPublisher;
23
+ }
24
+ getModelStore() {
25
+ return this.modelStore;
26
+ }
27
+ getEventStore() {
28
+ return this.reminderEventStore;
29
+ }
30
+ async handleEvent(event, _context) {
31
+ switch (event.eventType) {
32
+ case EventTypes_1.EventType.SETTLE_UP_REMINDER_TRIGGERED:
33
+ return await this.handleSettleUpReminderTriggered(event, _context);
34
+ default:
35
+ throw new Error(`Unknown reminder event type: ${event.eventType}`);
36
+ }
37
+ }
38
+ async handleSettleUpReminderTriggered(event, context) {
39
+ this.logger.log("[debug] handleSettleUpReminderTriggered START", {
40
+ streamId: event.streamId,
41
+ userId: event.userId,
42
+ recipientUserId: event.recipientUserId,
43
+ groupId: event.groupId,
44
+ isClient: this.isClient,
45
+ });
46
+ const existingModel = await this.modelStore.getByStreamIdWhereDeletedIsFalse(event.streamId);
47
+ if (this.shouldSkipSave(existingModel, event)) {
48
+ this.logger.log("[debug] skipping save (already processed)");
49
+ return existingModel;
50
+ }
51
+ const updatedModel = event.apply(existingModel);
52
+ if (this.isNotAIClient()) {
53
+ await this.modelStore.save(updatedModel);
54
+ this.logger.log("[debug] model saved");
55
+ }
56
+ if (this.isClient) {
57
+ await this.reminderEventStore.addEvent(event);
58
+ this.modelChangeEmitter?.emit(event.eventMainType);
59
+ this.logger.log("[debug] client path done, event stored");
60
+ return updatedModel;
61
+ }
62
+ if (event.groupId) {
63
+ this.logger.log("[debug] routing to handleGroupReminder");
64
+ await this.handleGroupReminder(event, context);
65
+ }
66
+ else {
67
+ this.logger.log("[debug] routing to handleFriendReminder");
68
+ await this.handleFriendReminder(event, context);
69
+ }
70
+ return updatedModel;
71
+ }
72
+ async handleFriendReminder(event, context) {
73
+ if (!this.notificationPublisher) {
74
+ this.logger.log("[debug] handleFriendReminder: no notificationPublisher, returning");
75
+ return;
76
+ }
77
+ const transactions = await this.transactionModelStore.findByUserIdAndRecipientUserIdWhereDeletedIsFalse(event.userId, event.recipientUserId);
78
+ this.logger.log("[debug] handleFriendReminder: transactions found", {
79
+ count: transactions.length,
80
+ });
81
+ if (transactions.length === 0)
82
+ return;
83
+ const balanceUtil = new BalanceUtil_1.BalanceUtil(this.userModelStore, this.currencyStore);
84
+ const balance = await balanceUtil.calculateBalance(transactions, event.recipientUserId);
85
+ this.logger.log("[debug] handleFriendReminder: balance calculated", {
86
+ hasMain: !!balance.main,
87
+ amount: balance.main?.amount,
88
+ isOwed: balance.main?.isOwed,
89
+ currency: balance.main?.currency,
90
+ });
91
+ if (!balance.main || balance.main.amount <= 0 || !balance.main.isOwed)
92
+ return;
93
+ const senderUser = await this.userModelStore.getByStreamIdWhereDeletedIsFalse(event.userId);
94
+ const senderName = senderUser?.displayName || "Someone";
95
+ const formattedAmount = balance.main.amount.toFixed(2);
96
+ const title = "Settle Up Reminder";
97
+ const body = `${senderName} is reminding you to settle up ${formattedAmount} ${balance.main.currency}`;
98
+ try {
99
+ await this.notificationPublisher.sendNotificationToUser(event.recipientUserId, { title, body });
100
+ await this.createNotificationEvent(event.recipientUserId, event.userId, title, body, event.streamId);
101
+ }
102
+ catch (error) {
103
+ this.logger.error("[ReminderEventHandler] Failed to send friend reminder notification", {
104
+ streamId: event.streamId,
105
+ recipientUserId: event.recipientUserId,
106
+ error: error instanceof Error ? error.message : String(error),
107
+ });
108
+ }
109
+ }
110
+ async handleGroupReminder(event, context) {
111
+ if (!this.notificationPublisher || !event.groupId)
112
+ return;
113
+ const groupModel = await this.groupModelStore.findByUserIdAndGroupIdAndDeletedIsFalse(event.userId, event.groupId);
114
+ if (!groupModel)
115
+ return;
116
+ const groupTransactions = await this.groupTransactionModelStore.findByUserIdAndGroupIdWhereDeletedIsFalse(event.userId, event.groupId);
117
+ if (groupTransactions.length === 0)
118
+ return;
119
+ const memberBalances = new Map();
120
+ for (const tx of groupTransactions) {
121
+ for (const owe of tx.whoOweYou) {
122
+ if (!memberBalances.has(owe.memberId)) {
123
+ memberBalances.set(owe.memberId, new Map());
124
+ }
125
+ const currencyMap = memberBalances.get(owe.memberId);
126
+ const existing = currencyMap.get(tx.currency) || 0;
127
+ currencyMap.set(tx.currency, existing + owe.amount);
128
+ }
129
+ for (const owe of tx.whoYouOwe) {
130
+ if (!memberBalances.has(owe.memberId)) {
131
+ memberBalances.set(owe.memberId, new Map());
132
+ }
133
+ const currencyMap = memberBalances.get(owe.memberId);
134
+ const existing = currencyMap.get(tx.currency) || 0;
135
+ currencyMap.set(tx.currency, existing - owe.amount);
136
+ }
137
+ }
138
+ const senderUser = await this.userModelStore.getByStreamIdWhereDeletedIsFalse(event.userId);
139
+ const senderName = senderUser?.displayName || "Someone";
140
+ const currencyRates = (await this.currencyStore.getCurrencyRates())?.rates ?? {};
141
+ for (const [memberId, currencyMap] of memberBalances) {
142
+ const memberUser = await this.userModelStore.getByStreamIdWhereDeletedIsFalse(memberId);
143
+ const memberCurrency = memberUser?.currency ?? "USD";
144
+ let totalOwed = 0;
145
+ for (const [currency, balance] of currencyMap) {
146
+ if (balance > 0) {
147
+ totalOwed += (0, contracts_1.convertCurrency)(balance, currency, memberCurrency, currencyRates);
148
+ }
149
+ }
150
+ if (totalOwed <= 0)
151
+ continue;
152
+ const formattedAmount = totalOwed.toFixed(2);
153
+ const title = "Settle Up Reminder";
154
+ const body = `${senderName} is reminding you to settle up ${formattedAmount} ${memberCurrency} in ${groupModel.name}`;
155
+ try {
156
+ await this.notificationPublisher.sendNotificationToUser(memberId, {
157
+ title,
158
+ body,
159
+ });
160
+ await this.createNotificationEvent(memberId, event.userId, title, body, event.streamId);
161
+ }
162
+ catch (error) {
163
+ this.logger.error("[ReminderEventHandler] Failed to send group reminder notification", {
164
+ streamId: event.streamId,
165
+ memberId,
166
+ error: error instanceof Error ? error.message : String(error),
167
+ });
168
+ }
169
+ }
170
+ }
171
+ async createNotificationEvent(recipientUserId, createdBy, title, body, sourceId) {
172
+ const notificationEvent = new NotificationEvents_1.NotificationCreated({
173
+ eventId: (0, uuid_1.v4)(),
174
+ userId: recipientUserId,
175
+ streamId: (0, uuid_1.v4)(),
176
+ version: 1,
177
+ createdAt: Date.now(),
178
+ createdBy,
179
+ systemGenerated: true,
180
+ title,
181
+ body,
182
+ sourceEventType: EventTypes_1.EventType.SETTLE_UP_REMINDER_TRIGGERED,
183
+ sourceType: EventTypes_1.EventMainType.REMINDER,
184
+ sourceId,
185
+ });
186
+ await this.notificationEventHandler.handleBackendEvent(notificationEvent);
187
+ }
188
+ }
189
+ exports.ReminderEventHandler = ReminderEventHandler;
190
+ //# sourceMappingURL=ReminderEventHandler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ReminderEventHandler.js","sourceRoot":"","sources":["../src/ReminderEventHandler.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,50 @@
1
+ import { ReminderEvent } from "./common/DomainEvents";
2
+ import { Model, ModelProps } from "./common/Model";
3
+ export interface ReminderModelProps extends ModelProps {
4
+ recipientUserId: string;
5
+ groupId?: string;
6
+ createdAt: number;
7
+ createdBy: string;
8
+ }
9
+ export declare class ReminderModel implements ReminderModelProps {
10
+ userId: string;
11
+ streamId: string;
12
+ version: number;
13
+ deleted: boolean;
14
+ updatedAt: number;
15
+ synced: boolean;
16
+ recipientUserId: string;
17
+ groupId?: string;
18
+ createdAt: number;
19
+ createdBy: string;
20
+ constructor(props: ReminderModelProps);
21
+ }
22
+ export interface SettleUpReminderTriggeredProps {
23
+ eventId: string;
24
+ userId: string;
25
+ streamId: string;
26
+ version: number;
27
+ createdAt: number;
28
+ createdBy: string;
29
+ systemGenerated: boolean;
30
+ skipNotify?: boolean;
31
+ recipientUserId: string;
32
+ groupId?: string;
33
+ }
34
+ export declare class SettleUpReminderTriggered implements ReminderEvent {
35
+ readonly eventMainType: "reminder";
36
+ readonly eventType: "SettleUpReminderTriggered";
37
+ eventId: string;
38
+ userId: string;
39
+ streamId: string;
40
+ version: number;
41
+ createdAt: number;
42
+ createdBy: string;
43
+ systemGenerated: boolean;
44
+ skipNotify?: boolean;
45
+ recipientUserId: string;
46
+ groupId?: string;
47
+ constructor(props: SettleUpReminderTriggeredProps);
48
+ apply(_existing?: Model): ReminderModel;
49
+ }
50
+ //# sourceMappingURL=ReminderEvents.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ReminderEvents.d.ts","sourceRoot":"","sources":["../src/ReminderEvents.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAGnD,MAAM,WAAW,kBAAmB,SAAQ,UAAU;IACpD,eAAe,EAAE,MAAM,CAAC;IACxB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,qBAAa,aAAc,YAAW,kBAAkB;IACtD,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,OAAO,CAAC;IAChB,eAAe,EAAE,MAAM,CAAC;IACxB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;gBAEN,KAAK,EAAE,kBAAkB;CAYtC;AAED,MAAM,WAAW,8BAA8B;IAC7C,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,EAAE,OAAO,CAAC;IACzB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,eAAe,EAAE,MAAM,CAAC;IACxB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,qBAAa,yBAA0B,YAAW,aAAa;IAC7D,SAAgB,aAAa,aAA0B;IACvD,SAAgB,SAAS,8BAA0C;IAC5D,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,EAAE,OAAO,CAAC;IACzB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,eAAe,EAAE,MAAM,CAAC;IACxB,OAAO,CAAC,EAAE,MAAM,CAAC;gBAEZ,KAAK,EAAE,8BAA8B;IAajD,KAAK,CAAC,SAAS,CAAC,EAAE,KAAK,GAAG,aAAa;CAcxC"}
@@ -0,0 +1,51 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SettleUpReminderTriggered = exports.ReminderModel = void 0;
4
+ const EventTypes_1 = require("./common/EventTypes");
5
+ class ReminderModel {
6
+ constructor(props) {
7
+ this.userId = props.userId;
8
+ this.streamId = props.streamId;
9
+ this.version = props.version;
10
+ this.deleted = props.deleted;
11
+ this.updatedAt = props.updatedAt;
12
+ this.synced = props.synced ?? false;
13
+ this.recipientUserId = props.recipientUserId;
14
+ this.groupId = props.groupId;
15
+ this.createdAt = props.createdAt;
16
+ this.createdBy = props.createdBy;
17
+ }
18
+ }
19
+ exports.ReminderModel = ReminderModel;
20
+ class SettleUpReminderTriggered {
21
+ constructor(props) {
22
+ this.eventMainType = EventTypes_1.EventMainType.REMINDER;
23
+ this.eventType = EventTypes_1.EventType.SETTLE_UP_REMINDER_TRIGGERED;
24
+ this.eventId = props.eventId;
25
+ this.userId = props.userId;
26
+ this.streamId = props.streamId;
27
+ this.version = props.version;
28
+ this.createdAt = props.createdAt;
29
+ this.createdBy = props.createdBy;
30
+ this.systemGenerated = props.systemGenerated;
31
+ this.skipNotify = props.skipNotify;
32
+ this.recipientUserId = props.recipientUserId;
33
+ this.groupId = props.groupId;
34
+ }
35
+ apply(_existing) {
36
+ return new ReminderModel({
37
+ streamId: this.streamId,
38
+ userId: this.userId,
39
+ version: this.version,
40
+ deleted: false,
41
+ updatedAt: this.createdAt,
42
+ synced: this.systemGenerated,
43
+ recipientUserId: this.recipientUserId,
44
+ groupId: this.groupId,
45
+ createdAt: this.createdAt,
46
+ createdBy: this.createdBy,
47
+ });
48
+ }
49
+ }
50
+ exports.SettleUpReminderTriggered = SettleUpReminderTriggered;
51
+ //# sourceMappingURL=ReminderEvents.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ReminderEvents.js","sourceRoot":"","sources":["../src/ReminderEvents.ts"],"names":[],"mappings":";;;AAEA,oDAA+D;AAS/D,MAAa,aAAa;IAYxB,YAAY,KAAyB;QACnC,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;QAC3B,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC;QAC/B,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;QAC7B,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;QAC7B,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC;QACjC,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC;QACpC,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC,eAAe,CAAC;QAC7C,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;QAC7B,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC;QACjC,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC;IACnC,CAAC;CACF;AAxBD,sCAwBC;AAeD,MAAa,yBAAyB;IAcpC,YAAY,KAAqC;QAbjC,kBAAa,GAAG,0BAAa,CAAC,QAAQ,CAAC;QACvC,cAAS,GAAG,sBAAS,CAAC,4BAA4B,CAAC;QAajE,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;QAC7B,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;QAC3B,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC;QAC/B,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;QAC7B,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC;QACjC,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC;QACjC,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC,eAAe,CAAC;QAC7C,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC,UAAU,CAAC;QACnC,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC,eAAe,CAAC;QAC7C,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;IAC/B,CAAC;IAED,KAAK,CAAC,SAAiB;QACrB,OAAO,IAAI,aAAa,CAAC;YACvB,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,OAAO,EAAE,KAAK;YACd,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,MAAM,EAAE,IAAI,CAAC,eAAe;YAC5B,eAAe,EAAE,IAAI,CAAC,eAAe;YACrC,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,SAAS,EAAE,IAAI,CAAC,SAAS;SAC1B,CAAC,CAAC;IACL,CAAC;CACF;AAzCD,8DAyCC"}
@@ -19,5 +19,7 @@ export declare class TransactionEventHandler extends BaseEventHandler<Transactio
19
19
  getEventStore(): TransactionEventStore;
20
20
  handleEvent(event: TransactionEvent, context?: LoggingContext, emitChanges?: boolean): Promise<TransactionModel>;
21
21
  private createMirrorEvent;
22
+ bulkHandleClientEvents(events: TransactionEvent[]): Promise<TransactionModel[]>;
23
+ createBulkOperationSummary(userId: string, recipientUserId: string, count: number, operationType: "created" | "updated" | "deleted", bulkOperationId: string): Promise<void>;
22
24
  }
23
25
  //# sourceMappingURL=TransactionEventHandler.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"TransactionEventHandler.d.ts","sourceRoot":"","sources":["../src/TransactionEventHandler.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,qBAAqB,EAGrB,gBAAgB,EAChB,qBAAqB,EACrB,gBAAgB,EAChB,qBAAqB,EAEtB,MAAM,GAAG,CAAC;AACX,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AAOtE,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAEzD,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAE5C,qBAAa,uBAAwB,SAAQ,gBAAgB,CAAC,gBAAgB,CAAC;IAE3E,OAAO,CAAC,UAAU;IAClB,OAAO,CAAC,UAAU;IAClB,OAAO,CAAC,gBAAgB;IACxB,OAAO,CAAC,wBAAwB;IAIhC,OAAO,CAAC,qBAAqB,CAAC;IAC9B,OAAO,CAAC,oBAAoB,CAAC;gBARrB,UAAU,EAAE,qBAAqB,EACjC,UAAU,EAAE,qBAAqB,EACjC,gBAAgB,EAAE,gBAAgB,EAClC,wBAAwB,EAAE,wBAAwB,EAC1D,QAAQ,EAAE,OAAO,EACjB,UAAU,EAAE,UAAU,EACtB,kBAAkB,CAAC,EAAE,kBAAkB,EAC/B,qBAAqB,CAAC,EAAE,qBAAqB,YAAA,EAC7C,oBAAoB,CAAC,EAAE,oBAAoB,YAAA,EACnD,MAAM,CAAC,EAAE,MAAM;IAKV,aAAa,IAAI,qBAAqB;IAItC,aAAa,IAAI,qBAAqB;IAIvC,WAAW,CACf,KAAK,EAAE,gBAAgB,EACvB,OAAO,CAAC,EAAE,cAAc,EACxB,WAAW,GAAE,OAAc,GAC1B,OAAO,CAAC,gBAAgB,CAAC;YAkCd,iBAAiB;CAgLhC"}
1
+ {"version":3,"file":"TransactionEventHandler.d.ts","sourceRoot":"","sources":["../src/TransactionEventHandler.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,qBAAqB,EAGrB,gBAAgB,EAChB,qBAAqB,EACrB,gBAAgB,EAChB,qBAAqB,EAEtB,MAAM,GAAG,CAAC;AACX,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAE9D,OAAO,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AAOtE,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAEzD,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAE5C,qBAAa,uBAAwB,SAAQ,gBAAgB,CAAC,gBAAgB,CAAC;IAE3E,OAAO,CAAC,UAAU;IAClB,OAAO,CAAC,UAAU;IAClB,OAAO,CAAC,gBAAgB;IACxB,OAAO,CAAC,wBAAwB;IAIhC,OAAO,CAAC,qBAAqB,CAAC;IAC9B,OAAO,CAAC,oBAAoB,CAAC;gBARrB,UAAU,EAAE,qBAAqB,EACjC,UAAU,EAAE,qBAAqB,EACjC,gBAAgB,EAAE,gBAAgB,EAClC,wBAAwB,EAAE,wBAAwB,EAC1D,QAAQ,EAAE,OAAO,EACjB,UAAU,EAAE,UAAU,EACtB,kBAAkB,CAAC,EAAE,kBAAkB,EAC/B,qBAAqB,CAAC,EAAE,qBAAqB,YAAA,EAC7C,oBAAoB,CAAC,EAAE,oBAAoB,YAAA,EACnD,MAAM,CAAC,EAAE,MAAM;IAKV,aAAa,IAAI,qBAAqB;IAItC,aAAa,IAAI,qBAAqB;IAIvC,WAAW,CACf,KAAK,EAAE,gBAAgB,EACvB,OAAO,CAAC,EAAE,cAAc,EACxB,WAAW,GAAE,OAAc,GAC1B,OAAO,CAAC,gBAAgB,CAAC;YAkCd,iBAAiB;IAwLzB,sBAAsB,CAC1B,MAAM,EAAE,gBAAgB,EAAE,GACzB,OAAO,CAAC,gBAAgB,EAAE,CAAC;IA+BxB,0BAA0B,CAC9B,MAAM,EAAE,MAAM,EACd,eAAe,EAAE,MAAM,EACvB,KAAK,EAAE,MAAM,EACb,aAAa,EAAE,SAAS,GAAG,SAAS,GAAG,SAAS,EAChD,eAAe,EAAE,MAAM,GACtB,OAAO,CAAC,IAAI,CAAC;CAiFjB"}
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.TransactionEventHandler = void 0;
4
4
  const _1 = require(".");
5
5
  const BaseEventHandler_1 = require("./BaseEventHandler");
6
+ const ActivityLogEvents_1 = require("./ActivityLogEvents");
6
7
  const NotificationEvents_1 = require("./NotificationEvents");
7
8
  const splitTypeUtils_1 = require("./utils/splitTypeUtils");
8
9
  const uuid_1 = require("uuid");
@@ -38,7 +39,7 @@ class TransactionEventHandler extends BaseEventHandler_1.BaseEventHandler {
38
39
  if (emitChanges) {
39
40
  this.modelChangeEmitter?.emit(event.eventMainType);
40
41
  }
41
- if (this.activityEventHandler) {
42
+ if (this.activityEventHandler && !event.bulkOperationId) {
42
43
  await this.activityEventHandler.createActivityLog(event, existingModel, model);
43
44
  }
44
45
  }
@@ -61,9 +62,11 @@ class TransactionEventHandler extends BaseEventHandler_1.BaseEventHandler {
61
62
  ? existingMirrorModel.version + 1
62
63
  : 1;
63
64
  let mirrorEvent;
65
+ let bulkOpId;
64
66
  switch (eventType) {
65
67
  case EventTypes_1.EventType.TRANSACTION_CREATED: {
66
68
  const txEvent = originalEvent;
69
+ bulkOpId = txEvent.bulkOperationId;
67
70
  const { amount, isOwed } = (0, splitTypeUtils_1.calculateMirrorAmountAndIsOwed)(txEvent.totalAmount, txEvent.amount, txEvent.splitType, txEvent.isOwed);
68
71
  mirrorEvent = new _1.TransactionCreated({
69
72
  eventId: (0, uuid_1.v4)(),
@@ -84,11 +87,13 @@ class TransactionEventHandler extends BaseEventHandler_1.BaseEventHandler {
84
87
  streamId: mirrorStreamId,
85
88
  version: mirrorVersion,
86
89
  systemGenerated: true,
90
+ bulkOperationId: bulkOpId,
87
91
  });
88
92
  break;
89
93
  }
90
94
  case EventTypes_1.EventType.TRANSACTION_DELETED: {
91
95
  const txEvent = originalEvent;
96
+ bulkOpId = txEvent.bulkOperationId;
92
97
  mirrorEvent = new _1.TransactionDeleted({
93
98
  eventId: (0, uuid_1.v4)(),
94
99
  userId: transactionModel.recipientUserId,
@@ -97,11 +102,13 @@ class TransactionEventHandler extends BaseEventHandler_1.BaseEventHandler {
97
102
  streamId: mirrorStreamId,
98
103
  version: mirrorVersion,
99
104
  systemGenerated: true,
105
+ bulkOperationId: bulkOpId,
100
106
  });
101
107
  break;
102
108
  }
103
109
  case EventTypes_1.EventType.TRANSACTION_UPDATED: {
104
110
  const txEvent = originalEvent;
111
+ bulkOpId = txEvent.bulkOperationId;
105
112
  const { amount, isOwed } = (0, splitTypeUtils_1.calculateMirrorAmountAndIsOwed)(txEvent.totalAmount, txEvent.amount, txEvent.splitType, txEvent.isOwed);
106
113
  mirrorEvent = new _1.TransactionUpdated({
107
114
  eventId: (0, uuid_1.v4)(),
@@ -118,6 +125,7 @@ class TransactionEventHandler extends BaseEventHandler_1.BaseEventHandler {
118
125
  streamId: mirrorStreamId,
119
126
  version: mirrorVersion,
120
127
  systemGenerated: true,
128
+ bulkOperationId: bulkOpId,
121
129
  });
122
130
  break;
123
131
  }
@@ -130,15 +138,15 @@ class TransactionEventHandler extends BaseEventHandler_1.BaseEventHandler {
130
138
  }
131
139
  const updatedModel = mirrorEvent.apply(existingMirrorModel);
132
140
  await this.modelStore.save(updatedModel);
133
- if (this.activityEventHandler) {
141
+ if (this.activityEventHandler && !bulkOpId) {
134
142
  await this.activityEventHandler.createActivityLog(mirrorEvent, existingMirrorModel, updatedModel);
135
143
  }
136
- if (this.notificationPublisher && !originalEvent.skipNotify) {
144
+ if (this.notificationPublisher && !bulkOpId) {
137
145
  try {
138
146
  const nameMap = {};
139
147
  const recipientUserId = updatedModel.userId;
140
- const actorUserId = mirrorEvent.createdBy;
141
- const friendModel = await this.friendModelStore.findByUserIdAndFriendIdAndDeletedIsFalse(recipientUserId, actorUserId);
148
+ const actorUserId = updatedModel.createdBy;
149
+ const friendModel = await this.friendModelStore.findByUserIdAndFriendIdAndDeletedIsFalse(recipientUserId, updatedModel.recipientUserId);
142
150
  if (friendModel?.friendDisplayName) {
143
151
  nameMap[actorUserId] = friendModel.friendDisplayName;
144
152
  }
@@ -151,7 +159,7 @@ class TransactionEventHandler extends BaseEventHandler_1.BaseEventHandler {
151
159
  streamId: (0, uuid_1.v4)(),
152
160
  version: 1,
153
161
  createdAt: Date.now(),
154
- createdBy: actorUserId,
162
+ createdBy: updatedModel.createdBy,
155
163
  systemGenerated: true,
156
164
  title: payload.title,
157
165
  body: payload.body,
@@ -175,6 +183,86 @@ class TransactionEventHandler extends BaseEventHandler_1.BaseEventHandler {
175
183
  }
176
184
  }
177
185
  }
186
+ async bulkHandleClientEvents(events) {
187
+ this.logger.log(`[bulkHandleClientEvents] Processing ${events.length} transaction events in bulk`);
188
+ const models = [];
189
+ for (const event of events) {
190
+ const existingModel = await this.modelStore.getByStreamId(event.streamId);
191
+ const updatedModel = event.apply(existingModel);
192
+ models.push(updatedModel);
193
+ }
194
+ this.logger.log(`[bulkHandleClientEvents] Saving ${events.length} transaction events in bulk to Firestore`);
195
+ await this.eventStore.addEvents(events);
196
+ if (this.isNotAIClient()) {
197
+ this.logger.log(`[bulkHandleClientEvents] Saving ${models.length} transaction models in bulk (isNotAIClient=true)`);
198
+ await this.modelStore.saveAll(models);
199
+ }
200
+ this.logger.log(`[bulkHandleClientEvents] Bulk transaction operation completed successfully`);
201
+ return models;
202
+ }
203
+ async createBulkOperationSummary(userId, recipientUserId, count, operationType, bulkOperationId) {
204
+ const friendModel = await this.friendModelStore.findByUserIdAndFriendIdAndDeletedIsFalse(recipientUserId, userId);
205
+ const creatorName = friendModel?.friendDisplayName ?? "Someone";
206
+ const verb = operationType === "created"
207
+ ? "added"
208
+ : operationType === "updated"
209
+ ? "updated"
210
+ : "deleted";
211
+ const title = `${creatorName} ${verb} ${count} transactions`;
212
+ const body = `${count} transactions ${verb}`;
213
+ try {
214
+ if (this.notificationPublisher) {
215
+ const payload = {
216
+ title,
217
+ body,
218
+ sourceEventType: EventTypes_1.EventType.BULK_OPERATION,
219
+ sourceType: EventTypes_1.EventMainType.TRANSACTION,
220
+ sourceId: userId,
221
+ sourceListItemId: bulkOperationId,
222
+ };
223
+ await this.notificationPublisher.sendNotificationToUser(recipientUserId, payload);
224
+ const notificationEvent = new NotificationEvents_1.NotificationCreated({
225
+ eventId: (0, uuid_1.v4)(),
226
+ userId: recipientUserId,
227
+ streamId: (0, uuid_1.v4)(),
228
+ version: 1,
229
+ createdAt: Date.now(),
230
+ createdBy: userId,
231
+ systemGenerated: true,
232
+ title: payload.title,
233
+ body: payload.body,
234
+ sourceEventType: payload.sourceEventType,
235
+ sourceType: payload.sourceType,
236
+ sourceId: payload.sourceId,
237
+ sourceListItemId: payload.sourceListItemId,
238
+ });
239
+ await this.notificationEventHandler.handleBackendEvent(notificationEvent);
240
+ }
241
+ if (this.activityEventHandler) {
242
+ const logMessage = `${creatorName} ${verb} ${count} transactions`;
243
+ const activityEvent = new ActivityLogEvents_1.ActivityLogCreated({
244
+ eventId: (0, uuid_1.v4)(),
245
+ userId: recipientUserId,
246
+ activityByUid: userId,
247
+ sourceType: EventTypes_1.EventMainType.TRANSACTION,
248
+ sourceEventType: EventTypes_1.EventType.BULK_OPERATION,
249
+ sourceId: userId,
250
+ sourceListItemId: bulkOperationId,
251
+ logMessage,
252
+ date: Date.now(),
253
+ createdAt: Date.now(),
254
+ createdBy: userId,
255
+ streamId: (0, uuid_1.v4)(),
256
+ systemGenerated: true,
257
+ version: 1,
258
+ });
259
+ await this.activityEventHandler.handleBackendEvent(activityEvent);
260
+ }
261
+ }
262
+ catch (error) {
263
+ this.logger.error(`[createBulkOperationSummary] Failed for recipient ${recipientUserId}:`, error);
264
+ }
265
+ }
178
266
  }
179
267
  exports.TransactionEventHandler = TransactionEventHandler;
180
268
  //# sourceMappingURL=TransactionEventHandler.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"TransactionEventHandler.js","sourceRoot":"","sources":["../src/TransactionEventHandler.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"TransactionEventHandler.js","sourceRoot":"","sources":["../src/TransactionEventHandler.ts"],"names":[],"mappings":"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"}
@@ -75,9 +75,6 @@ export interface TransactionModelProps extends ModelProps {
75
75
  tags?: string[];
76
76
  category?: string;
77
77
  attachmentsUrls?: string[];
78
- associatedExpenseAccountId?: string;
79
- associatedExpenseId?: string;
80
- associatedRecurringManagementId?: string;
81
78
  synced: boolean;
82
79
  }
83
80
  export declare class TransactionModel implements TransactionModelProps {
@@ -105,9 +102,6 @@ export declare class TransactionModel implements TransactionModelProps {
105
102
  tags?: string[];
106
103
  category?: string;
107
104
  attachmentsUrls?: string[];
108
- associatedExpenseAccountId?: string;
109
- associatedExpenseId?: string;
110
- associatedRecurringManagementId?: string;
111
105
  synced: boolean;
112
106
  constructor(props: TransactionModelProps);
113
107
  }
@@ -130,11 +124,11 @@ export interface TransactionCreatedProps {
130
124
  streamId: string;
131
125
  version: number;
132
126
  systemGenerated: boolean;
133
- skipNotify?: boolean;
134
127
  recurringId?: string;
135
128
  tags?: string[];
136
129
  category?: string;
137
130
  attachmentsUrls?: string[];
131
+ bulkOperationId?: string;
138
132
  }
139
133
  export declare class TransactionCreated implements TransactionEvent {
140
134
  readonly eventMainType: "transaction";
@@ -157,11 +151,11 @@ export declare class TransactionCreated implements TransactionEvent {
157
151
  streamId: string;
158
152
  version: number;
159
153
  systemGenerated: boolean;
160
- skipNotify?: boolean;
161
154
  recurringId?: string;
162
155
  tags?: string[];
163
156
  category?: string;
164
157
  attachmentsUrls?: string[];
158
+ bulkOperationId?: string;
165
159
  constructor(props: TransactionCreatedProps);
166
160
  apply(_existing?: Model): TransactionModel;
167
161
  activityLog(_existing?: Model, actorName?: string): ActivityLogCreatedProps | undefined;
@@ -175,7 +169,7 @@ export interface TransactionDeletedProps {
175
169
  createdAt: number;
176
170
  createdBy: string;
177
171
  systemGenerated: boolean;
178
- skipNotify?: boolean;
172
+ bulkOperationId?: string;
179
173
  }
180
174
  export declare class TransactionDeleted implements TransactionEvent {
181
175
  readonly eventMainType: "transaction";
@@ -187,7 +181,7 @@ export declare class TransactionDeleted implements TransactionEvent {
187
181
  createdAt: number;
188
182
  createdBy: string;
189
183
  systemGenerated: boolean;
190
- skipNotify?: boolean;
184
+ bulkOperationId?: string;
191
185
  constructor(props: TransactionDeletedProps);
192
186
  apply(existing?: Model): TransactionModel;
193
187
  activityLog(existing?: Model, actorName?: string): ActivityLogCreatedProps | undefined;
@@ -208,11 +202,11 @@ export interface TransactionUpdatedProps {
208
202
  streamId: string;
209
203
  version: number;
210
204
  systemGenerated: boolean;
211
- skipNotify?: boolean;
212
205
  recurringId?: string;
213
206
  tags?: string[];
214
207
  category?: string;
215
208
  attachmentsUrls?: string[];
209
+ bulkOperationId?: string;
216
210
  }
217
211
  export declare class TransactionUpdated implements TransactionEvent {
218
212
  readonly eventMainType: "transaction";
@@ -231,11 +225,11 @@ export declare class TransactionUpdated implements TransactionEvent {
231
225
  streamId: string;
232
226
  version: number;
233
227
  systemGenerated: boolean;
234
- skipNotify?: boolean;
235
228
  recurringId?: string;
236
229
  tags?: string[];
237
230
  category?: string;
238
231
  attachmentsUrls?: string[];
232
+ bulkOperationId?: string;
239
233
  constructor(props: TransactionUpdatedProps);
240
234
  apply(existing?: Model): TransactionModel;
241
235
  activityLog(existing?: Model, actorName?: string): ActivityLogCreatedProps | undefined;
@@ -249,7 +243,6 @@ export interface TransactionSyncedProps {
249
243
  createdAt: number;
250
244
  createdBy: string;
251
245
  systemGenerated: boolean;
252
- skipNotify?: boolean;
253
246
  }
254
247
  export declare class TransactionSynced implements TransactionEvent {
255
248
  readonly eventMainType: "transaction";
@@ -261,7 +254,6 @@ export declare class TransactionSynced implements TransactionEvent {
261
254
  createdAt: number;
262
255
  createdBy: string;
263
256
  systemGenerated: boolean;
264
- skipNotify?: boolean;
265
257
  constructor(props: TransactionSyncedProps);
266
258
  apply(existing?: Model): TransactionModel;
267
259
  activityLog(): undefined;