@zeeshan60/event-processor 1.0.12 → 1.0.13
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.
- package/dist/ActivityEventHandler.d.ts +4 -4
- package/dist/ActivityEventHandler.d.ts.map +1 -1
- package/dist/ActivityLogEvents.d.ts +4 -2
- package/dist/ActivityLogEvents.d.ts.map +1 -1
- package/dist/ActivityLogEvents.js +1 -0
- package/dist/EventProcessorSDK.d.ts +22 -18
- package/dist/EventProcessorSDK.d.ts.map +1 -1
- package/dist/EventProcessorSDK.js +15 -4
- package/dist/FriendEventHandler.d.ts +4 -12
- package/dist/FriendEventHandler.d.ts.map +1 -1
- package/dist/FriendEventHandler.js +22 -54
- package/dist/FriendEvents.d.ts +13 -3
- package/dist/FriendEvents.d.ts.map +1 -1
- package/dist/FriendEvents.js +16 -7
- package/dist/GroupEventHandler.d.ts +7 -7
- package/dist/GroupEventHandler.d.ts.map +1 -1
- package/dist/GroupEventHandler.js +21 -12
- package/dist/GroupEvents.d.ts +15 -3
- package/dist/GroupEvents.d.ts.map +1 -1
- package/dist/GroupEvents.js +25 -13
- package/dist/GroupTransactionEventHandler.d.ts +7 -7
- package/dist/GroupTransactionEventHandler.d.ts.map +1 -1
- package/dist/GroupTransactionEventHandler.js +22 -15
- package/dist/GroupTransactionEvents.d.ts +22 -4
- package/dist/GroupTransactionEvents.d.ts.map +1 -1
- package/dist/GroupTransactionEvents.js +39 -21
- package/dist/TransactionEventHandler.d.ts +2 -5
- package/dist/TransactionEventHandler.d.ts.map +1 -1
- package/dist/TransactionEventHandler.js +29 -13
- package/dist/TransactionEvents.d.ts +24 -8
- package/dist/TransactionEvents.d.ts.map +1 -1
- package/dist/TransactionEvents.js +38 -22
- package/dist/UserEventHandler.d.ts +3 -11
- package/dist/UserEventHandler.d.ts.map +1 -1
- package/dist/UserEventHandler.js +64 -62
- package/dist/UserEvents.d.ts +20 -3
- package/dist/UserEvents.d.ts.map +1 -1
- package/dist/UserEvents.js +53 -18
- package/dist/__tests__/e2e/setup/firebaseEmulator.d.ts +3 -0
- package/dist/__tests__/e2e/setup/firebaseEmulator.d.ts.map +1 -0
- package/dist/__tests__/e2e/setup/firebaseEmulator.js +87 -0
- package/dist/__tests__/e2e/setup/firestoreStores.d.ts +28 -0
- package/dist/__tests__/e2e/setup/firestoreStores.d.ts.map +1 -0
- package/dist/__tests__/e2e/setup/firestoreStores.js +276 -0
- package/dist/__tests__/e2e/setup/firestoreTestHelpers.d.ts +15 -0
- package/dist/__tests__/e2e/setup/firestoreTestHelpers.d.ts.map +1 -0
- package/dist/__tests__/e2e/setup/firestoreTestHelpers.js +167 -0
- package/dist/__tests__/test-helpers/IMActivityLogEventStore.d.ts +2 -2
- package/dist/__tests__/test-helpers/IMActivityLogEventStore.d.ts.map +1 -1
- package/dist/__tests__/test-helpers/IMActivityLogModelStore.d.ts +2 -2
- package/dist/__tests__/test-helpers/IMActivityLogModelStore.d.ts.map +1 -1
- package/dist/__tests__/test-helpers/IMFriendEventStore.d.ts +2 -2
- package/dist/__tests__/test-helpers/IMFriendEventStore.d.ts.map +1 -1
- package/dist/__tests__/test-helpers/IMFriendModelStore.d.ts +3 -2
- package/dist/__tests__/test-helpers/IMFriendModelStore.d.ts.map +1 -1
- package/dist/__tests__/test-helpers/IMFriendModelStore.js +9 -0
- package/dist/__tests__/test-helpers/IMGroupEventStore.d.ts +2 -2
- package/dist/__tests__/test-helpers/IMGroupEventStore.d.ts.map +1 -1
- package/dist/__tests__/test-helpers/IMGroupModelStore.d.ts +2 -2
- package/dist/__tests__/test-helpers/IMGroupModelStore.d.ts.map +1 -1
- package/dist/__tests__/test-helpers/IMGroupTransactionEventStore.d.ts +2 -2
- package/dist/__tests__/test-helpers/IMGroupTransactionEventStore.d.ts.map +1 -1
- package/dist/__tests__/test-helpers/IMGroupTransactionModelStore.d.ts +2 -2
- package/dist/__tests__/test-helpers/IMGroupTransactionModelStore.d.ts.map +1 -1
- package/dist/__tests__/test-helpers/IMTransactionEventStore.d.ts +2 -2
- package/dist/__tests__/test-helpers/IMTransactionEventStore.d.ts.map +1 -1
- package/dist/__tests__/test-helpers/IMTransactionModelStore.d.ts +2 -2
- package/dist/__tests__/test-helpers/IMTransactionModelStore.d.ts.map +1 -1
- package/dist/__tests__/test-helpers/IMUserEventStore.d.ts +2 -2
- package/dist/__tests__/test-helpers/IMUserEventStore.d.ts.map +1 -1
- package/dist/__tests__/test-helpers/IMUserModelStore.d.ts +2 -2
- package/dist/__tests__/test-helpers/IMUserModelStore.d.ts.map +1 -1
- package/dist/__tests__/test-helpers/MockFirebaseAdapter.d.ts +2 -1
- package/dist/__tests__/test-helpers/MockFirebaseAdapter.d.ts.map +1 -1
- package/dist/__tests__/test-helpers/MockFirebaseAdapter.js +5 -1
- package/dist/client/controllers/FriendController.d.ts +12 -0
- package/dist/client/controllers/FriendController.d.ts.map +1 -0
- package/dist/client/controllers/FriendController.js +122 -0
- package/dist/client/controllers/UserController.d.ts +6 -5
- package/dist/client/controllers/UserController.d.ts.map +1 -1
- package/dist/client/controllers/UserController.js +94 -7
- package/dist/client/handlers/UIEventHandler.d.ts +1 -1
- package/dist/client/handlers/UIEventHandler.d.ts.map +1 -1
- package/dist/client/handlers/UIEventHandler.js +4 -2
- package/dist/client/handlers/UIFriendEventHandler.d.ts +6 -6
- package/dist/client/handlers/UIFriendEventHandler.d.ts.map +1 -1
- package/dist/client/handlers/UIGroupEventHandler.d.ts +7 -7
- package/dist/client/handlers/UIGroupEventHandler.d.ts.map +1 -1
- package/dist/client/handlers/UIGroupTransactionEventHandler.d.ts +7 -7
- package/dist/client/handlers/UIGroupTransactionEventHandler.d.ts.map +1 -1
- package/dist/client/handlers/UITransactionEventHandler.d.ts +5 -5
- package/dist/client/handlers/UITransactionEventHandler.d.ts.map +1 -1
- package/dist/client/handlers/UIUserEventHandler.d.ts +4 -4
- package/dist/client/handlers/UIUserEventHandler.d.ts.map +1 -1
- package/dist/common/DomainEvents.d.ts +1 -1
- package/dist/common/DomainEvents.d.ts.map +1 -1
- package/dist/common/DomainEvents.js +37 -37
- package/dist/common/Event.d.ts +3 -2
- package/dist/common/Event.d.ts.map +1 -1
- package/dist/common/EventBus.d.ts +2 -2
- package/dist/common/EventBus.d.ts.map +1 -1
- package/dist/common/EventBusSingleton.d.ts +1 -1
- package/dist/common/Model.d.ts.map +1 -1
- package/dist/common/index.d.ts +2 -2
- package/dist/contracts/common/index.d.ts.map +1 -1
- package/dist/contracts/expenses/index.d.ts.map +1 -1
- package/dist/contracts/friends/index.d.ts.map +1 -1
- package/dist/contracts/groups/index.d.ts.map +1 -1
- package/dist/contracts/index.d.ts +1 -0
- package/dist/contracts/index.d.ts.map +1 -1
- package/dist/contracts/index.js +1 -0
- package/dist/contracts/shared/index.d.ts.map +1 -1
- package/dist/contracts/transactions/index.d.ts.map +1 -1
- package/dist/contracts/users/index.d.ts +15 -0
- package/dist/contracts/users/index.d.ts.map +1 -0
- package/dist/contracts/users/index.js +2 -0
- package/dist/converters/eventConverter.d.ts +3 -3
- package/dist/converters/eventConverter.d.ts.map +1 -1
- package/dist/converters/eventConverter.js +67 -50
- package/dist/events.d.ts +29 -29
- package/dist/events.d.ts.map +1 -1
- package/dist/index.d.ts +15 -13
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +7 -2
- package/dist/store/ActivityLogEventStore.d.ts +1 -1
- package/dist/store/ActivityLogEventStore.d.ts.map +1 -1
- package/dist/store/ActivityLogModelStore.d.ts +2 -2
- package/dist/store/ActivityLogModelStore.d.ts.map +1 -1
- package/dist/store/FriendEventStore.d.ts +1 -1
- package/dist/store/FriendEventStore.d.ts.map +1 -1
- package/dist/store/FriendModelStore.d.ts +3 -2
- package/dist/store/FriendModelStore.d.ts.map +1 -1
- package/dist/store/GroupEventStore.d.ts +1 -1
- package/dist/store/GroupEventStore.d.ts.map +1 -1
- package/dist/store/GroupModelStore.d.ts +2 -2
- package/dist/store/GroupModelStore.d.ts.map +1 -1
- package/dist/store/GroupTransactionEventStore.d.ts +1 -1
- package/dist/store/GroupTransactionEventStore.d.ts.map +1 -1
- package/dist/store/GroupTransactionModelStore.d.ts +2 -2
- package/dist/store/GroupTransactionModelStore.d.ts.map +1 -1
- package/dist/store/ModelStore.d.ts +1 -1
- package/dist/store/ModelStore.d.ts.map +1 -1
- package/dist/store/TransactionEventStore.d.ts +1 -1
- package/dist/store/TransactionEventStore.d.ts.map +1 -1
- package/dist/store/TransactionModelStore.d.ts +2 -2
- package/dist/store/TransactionModelStore.d.ts.map +1 -1
- package/dist/store/UserEventStore.d.ts +1 -1
- package/dist/store/UserEventStore.d.ts.map +1 -1
- package/dist/store/UserModelStore.d.ts +2 -2
- package/dist/store/UserModelStore.d.ts.map +1 -1
- package/dist/utils/splitTypeUtils.d.ts +1 -1
- package/dist/utils/splitTypeUtils.d.ts.map +1 -1
- package/dist/utils/userPathUtils.d.ts +1 -1
- package/dist/utils/userPathUtils.d.ts.map +1 -1
- package/dist/utils/userPathUtils.js +3 -3
- package/package.json +1 -1
|
@@ -19,17 +19,17 @@ class GroupEventHandler {
|
|
|
19
19
|
throw new Error(`Unknown group event type: ${eventType}`);
|
|
20
20
|
}
|
|
21
21
|
switch (eventType) {
|
|
22
|
-
case
|
|
22
|
+
case "GroupCreated":
|
|
23
23
|
return await this.handleGroupCreated(event);
|
|
24
|
-
case
|
|
24
|
+
case "GroupNameChanged":
|
|
25
25
|
return await this.handleGroupNameChanged(event);
|
|
26
|
-
case
|
|
26
|
+
case "GroupDescriptionChanged":
|
|
27
27
|
return await this.handleGroupDescriptionChanged(event);
|
|
28
|
-
case
|
|
28
|
+
case "GroupMembersAdded":
|
|
29
29
|
return await this.handleGroupMembersAdded(event);
|
|
30
|
-
case
|
|
30
|
+
case "GroupMembersRemoved":
|
|
31
31
|
return await this.handleGroupMembersRemoved(event);
|
|
32
|
-
case
|
|
32
|
+
case "GroupDeleted":
|
|
33
33
|
return await this.handleGroupDeleted(event);
|
|
34
34
|
default:
|
|
35
35
|
throw new Error(`Unknown group event type: ${eventType}`);
|
|
@@ -44,8 +44,9 @@ class GroupEventHandler {
|
|
|
44
44
|
}
|
|
45
45
|
const existingFriend1to2 = await this.friendModelStore.findByUserIdAndFriendIdAndDeletedIsFalse(userId1, userId2);
|
|
46
46
|
if (!existingFriend1to2) {
|
|
47
|
-
const friendStreamId =
|
|
47
|
+
const friendStreamId = (0, uuid_1.v4)();
|
|
48
48
|
const friendCreatedEvent = new _1.FriendCreated({
|
|
49
|
+
eventId: (0, uuid_1.v4)(),
|
|
49
50
|
userId: userId1,
|
|
50
51
|
friendEmail: user2.email,
|
|
51
52
|
friendPhoneNumber: user2.phoneNumber,
|
|
@@ -64,8 +65,9 @@ class GroupEventHandler {
|
|
|
64
65
|
}
|
|
65
66
|
const existingFriend2to1 = await this.friendModelStore.findByUserIdAndFriendIdAndDeletedIsFalse(userId2, userId1);
|
|
66
67
|
if (!existingFriend2to1) {
|
|
67
|
-
const friendStreamId =
|
|
68
|
+
const friendStreamId = (0, uuid_1.v4)();
|
|
68
69
|
const friendCreatedEvent = new _1.FriendCreated({
|
|
70
|
+
eventId: (0, uuid_1.v4)(),
|
|
69
71
|
userId: userId2,
|
|
70
72
|
friendEmail: user1.email,
|
|
71
73
|
friendPhoneNumber: user1.phoneNumber,
|
|
@@ -88,7 +90,7 @@ class GroupEventHandler {
|
|
|
88
90
|
const updatedModel = event.apply(existingModel);
|
|
89
91
|
await this.modelStore.save(updatedModel);
|
|
90
92
|
const allMemberIds = event.members ?? [];
|
|
91
|
-
const otherMembers = allMemberIds.filter(id => id !== event.userId);
|
|
93
|
+
const otherMembers = allMemberIds.filter((id) => id !== event.userId);
|
|
92
94
|
for (const memberId of otherMembers) {
|
|
93
95
|
const memberUser = await this.userModelStore.getByStreamIdWhereDeletedIsFalse(memberId);
|
|
94
96
|
if (!memberUser) {
|
|
@@ -100,8 +102,9 @@ class GroupEventHandler {
|
|
|
100
102
|
await this.ensureBidirectionalFriendship(memberId, otherMemberId, event.groupId);
|
|
101
103
|
}
|
|
102
104
|
}
|
|
103
|
-
const perspectiveGroupStreamId =
|
|
105
|
+
const perspectiveGroupStreamId = (0, uuid_1.v4)();
|
|
104
106
|
const perspectiveGroupCreated = new _1.GroupCreated({
|
|
107
|
+
eventId: (0, uuid_1.v4)(),
|
|
105
108
|
userId: memberId,
|
|
106
109
|
groupId: event.groupId,
|
|
107
110
|
name: event.name,
|
|
@@ -130,6 +133,7 @@ class GroupEventHandler {
|
|
|
130
133
|
for (const perspective of allPerspectives) {
|
|
131
134
|
if (perspective.streamId !== event.streamId) {
|
|
132
135
|
const perspectiveEvent = new _1.GroupNameChanged({
|
|
136
|
+
eventId: (0, uuid_1.v4)(),
|
|
133
137
|
userId: perspective.userId,
|
|
134
138
|
name: event.name,
|
|
135
139
|
createdAt: new Date(),
|
|
@@ -156,6 +160,7 @@ class GroupEventHandler {
|
|
|
156
160
|
for (const perspective of allPerspectives) {
|
|
157
161
|
if (perspective.streamId !== event.streamId) {
|
|
158
162
|
const perspectiveEvent = new _1.GroupDescriptionChanged({
|
|
163
|
+
eventId: (0, uuid_1.v4)(),
|
|
159
164
|
userId: perspective.userId,
|
|
160
165
|
description: event.description,
|
|
161
166
|
createdAt: new Date(),
|
|
@@ -193,8 +198,9 @@ class GroupEventHandler {
|
|
|
193
198
|
await this.ensureBidirectionalFriendship(memberId, otherMemberId, existingModel.groupId);
|
|
194
199
|
}
|
|
195
200
|
}
|
|
196
|
-
const perspectiveGroupStreamId =
|
|
201
|
+
const perspectiveGroupStreamId = (0, uuid_1.v4)();
|
|
197
202
|
const perspectiveGroupCreated = new _1.GroupCreated({
|
|
203
|
+
eventId: (0, uuid_1.v4)(),
|
|
198
204
|
userId: memberId,
|
|
199
205
|
groupId: existingModel.groupId,
|
|
200
206
|
name: existingModel.name,
|
|
@@ -212,8 +218,10 @@ class GroupEventHandler {
|
|
|
212
218
|
}
|
|
213
219
|
const allPerspectives = await this.modelStore.findAllByGroupIdAndDeletedIsFalse(updatedModel.groupId);
|
|
214
220
|
for (const perspective of allPerspectives) {
|
|
215
|
-
if (perspective.streamId !== event.streamId &&
|
|
221
|
+
if (perspective.streamId !== event.streamId &&
|
|
222
|
+
!event.members.includes(perspective.userId)) {
|
|
216
223
|
const perspectiveEvent = new _1.GroupMembersAdded({
|
|
224
|
+
eventId: (0, uuid_1.v4)(),
|
|
217
225
|
userId: perspective.userId,
|
|
218
226
|
members: event.members,
|
|
219
227
|
createdAt: new Date(),
|
|
@@ -240,6 +248,7 @@ class GroupEventHandler {
|
|
|
240
248
|
for (const perspective of allPerspectives) {
|
|
241
249
|
if (perspective.streamId !== event.streamId) {
|
|
242
250
|
const perspectiveEvent = new _1.GroupMembersRemoved({
|
|
251
|
+
eventId: (0, uuid_1.v4)(),
|
|
243
252
|
userId: perspective.userId,
|
|
244
253
|
members: event.members,
|
|
245
254
|
createdAt: new Date(),
|
package/dist/GroupEvents.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { GroupEvent } from
|
|
2
|
-
import { Model } from
|
|
3
|
-
import { ActivityLogCreatedProps } from
|
|
1
|
+
import { GroupEvent } from "./common/DomainEvents";
|
|
2
|
+
import { Model } from "./common/Model";
|
|
3
|
+
import { ActivityLogCreatedProps } from "./ActivityLogEvents";
|
|
4
4
|
export interface GroupModel extends Model {
|
|
5
5
|
groupId: string;
|
|
6
6
|
name: string;
|
|
@@ -12,6 +12,7 @@ export interface GroupModel extends Model {
|
|
|
12
12
|
updatedBy: string;
|
|
13
13
|
}
|
|
14
14
|
export interface GroupCreatedProps {
|
|
15
|
+
eventId: string;
|
|
15
16
|
userId: string;
|
|
16
17
|
groupId: string;
|
|
17
18
|
name: string;
|
|
@@ -24,6 +25,7 @@ export interface GroupCreatedProps {
|
|
|
24
25
|
systemGenerated: boolean;
|
|
25
26
|
}
|
|
26
27
|
export declare class GroupCreated implements GroupEvent {
|
|
28
|
+
eventId: string;
|
|
27
29
|
userId: string;
|
|
28
30
|
groupId: string;
|
|
29
31
|
name: string;
|
|
@@ -39,6 +41,7 @@ export declare class GroupCreated implements GroupEvent {
|
|
|
39
41
|
activityLog(_existing?: Model, actorName?: string): ActivityLogCreatedProps | undefined;
|
|
40
42
|
}
|
|
41
43
|
export interface GroupNameChangedProps {
|
|
44
|
+
eventId: string;
|
|
42
45
|
userId: string;
|
|
43
46
|
name: string;
|
|
44
47
|
createdAt: Date;
|
|
@@ -48,6 +51,7 @@ export interface GroupNameChangedProps {
|
|
|
48
51
|
systemGenerated: boolean;
|
|
49
52
|
}
|
|
50
53
|
export declare class GroupNameChanged implements GroupEvent {
|
|
54
|
+
eventId: string;
|
|
51
55
|
userId: string;
|
|
52
56
|
name: string;
|
|
53
57
|
createdAt: Date;
|
|
@@ -60,6 +64,7 @@ export declare class GroupNameChanged implements GroupEvent {
|
|
|
60
64
|
activityLog(existing?: Model, actorName?: string): ActivityLogCreatedProps | undefined;
|
|
61
65
|
}
|
|
62
66
|
export interface GroupDescriptionChangedProps {
|
|
67
|
+
eventId: string;
|
|
63
68
|
userId: string;
|
|
64
69
|
description?: string;
|
|
65
70
|
createdAt: Date;
|
|
@@ -69,6 +74,7 @@ export interface GroupDescriptionChangedProps {
|
|
|
69
74
|
systemGenerated: boolean;
|
|
70
75
|
}
|
|
71
76
|
export declare class GroupDescriptionChanged implements GroupEvent {
|
|
77
|
+
eventId: string;
|
|
72
78
|
userId: string;
|
|
73
79
|
description?: string;
|
|
74
80
|
createdAt: Date;
|
|
@@ -81,6 +87,7 @@ export declare class GroupDescriptionChanged implements GroupEvent {
|
|
|
81
87
|
activityLog(existing?: Model, actorName?: string): ActivityLogCreatedProps | undefined;
|
|
82
88
|
}
|
|
83
89
|
export interface GroupMembersAddedProps {
|
|
90
|
+
eventId: string;
|
|
84
91
|
userId: string;
|
|
85
92
|
members: string[];
|
|
86
93
|
createdAt: Date;
|
|
@@ -90,6 +97,7 @@ export interface GroupMembersAddedProps {
|
|
|
90
97
|
systemGenerated: boolean;
|
|
91
98
|
}
|
|
92
99
|
export declare class GroupMembersAdded implements GroupEvent {
|
|
100
|
+
eventId: string;
|
|
93
101
|
userId: string;
|
|
94
102
|
members: string[];
|
|
95
103
|
createdAt: Date;
|
|
@@ -102,6 +110,7 @@ export declare class GroupMembersAdded implements GroupEvent {
|
|
|
102
110
|
activityLog(existing?: Model, actorName?: string): ActivityLogCreatedProps | undefined;
|
|
103
111
|
}
|
|
104
112
|
export interface GroupMembersRemovedProps {
|
|
113
|
+
eventId: string;
|
|
105
114
|
userId: string;
|
|
106
115
|
members: string[];
|
|
107
116
|
createdAt: Date;
|
|
@@ -111,6 +120,7 @@ export interface GroupMembersRemovedProps {
|
|
|
111
120
|
systemGenerated: boolean;
|
|
112
121
|
}
|
|
113
122
|
export declare class GroupMembersRemoved implements GroupEvent {
|
|
123
|
+
eventId: string;
|
|
114
124
|
userId: string;
|
|
115
125
|
members: string[];
|
|
116
126
|
createdAt: Date;
|
|
@@ -123,6 +133,7 @@ export declare class GroupMembersRemoved implements GroupEvent {
|
|
|
123
133
|
activityLog(existing?: Model, actorName?: string): ActivityLogCreatedProps | undefined;
|
|
124
134
|
}
|
|
125
135
|
export interface GroupDeletedProps {
|
|
136
|
+
eventId: string;
|
|
126
137
|
userId: string;
|
|
127
138
|
createdAt: Date;
|
|
128
139
|
createdBy: string;
|
|
@@ -131,6 +142,7 @@ export interface GroupDeletedProps {
|
|
|
131
142
|
systemGenerated: boolean;
|
|
132
143
|
}
|
|
133
144
|
export declare class GroupDeleted implements GroupEvent {
|
|
145
|
+
eventId: string;
|
|
134
146
|
userId: string;
|
|
135
147
|
createdAt: Date;
|
|
136
148
|
createdBy: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GroupEvents.d.ts","sourceRoot":"","sources":["../src/GroupEvents.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAmB,MAAM,uBAAuB,CAAC;AACpE,OAAO,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AACvC,OAAO,EAAE,uBAAuB,EAAc,MAAM,qBAAqB,CAAC;AAG1E,MAAM,WAAW,UAAW,SAAQ,KAAK;
|
|
1
|
+
{"version":3,"file":"GroupEvents.d.ts","sourceRoot":"","sources":["../src/GroupEvents.ts"],"names":[],"mappings":"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"}
|
package/dist/GroupEvents.js
CHANGED
|
@@ -5,6 +5,7 @@ const ActivityLogEvents_1 = require("./ActivityLogEvents");
|
|
|
5
5
|
const uuid_1 = require("uuid");
|
|
6
6
|
class GroupCreated {
|
|
7
7
|
constructor(props) {
|
|
8
|
+
this.eventId = props.eventId;
|
|
8
9
|
this.userId = props.userId;
|
|
9
10
|
this.groupId = props.groupId;
|
|
10
11
|
this.name = props.name;
|
|
@@ -33,9 +34,10 @@ class GroupCreated {
|
|
|
33
34
|
};
|
|
34
35
|
}
|
|
35
36
|
activityLog(_existing, actorName) {
|
|
36
|
-
const actor = actorName ??
|
|
37
|
+
const actor = actorName ?? "You";
|
|
37
38
|
const logMessage = `${actor} created group "${this.name}"`;
|
|
38
39
|
return {
|
|
40
|
+
eventId: (0, uuid_1.v4)(),
|
|
39
41
|
userId: this.userId,
|
|
40
42
|
activityByUid: this.createdBy,
|
|
41
43
|
sourceStreamId: this.streamId,
|
|
@@ -53,6 +55,7 @@ class GroupCreated {
|
|
|
53
55
|
exports.GroupCreated = GroupCreated;
|
|
54
56
|
class GroupNameChanged {
|
|
55
57
|
constructor(props) {
|
|
58
|
+
this.eventId = props.eventId;
|
|
56
59
|
this.userId = props.userId;
|
|
57
60
|
this.name = props.name;
|
|
58
61
|
this.createdAt = props.createdAt;
|
|
@@ -63,7 +66,7 @@ class GroupNameChanged {
|
|
|
63
66
|
}
|
|
64
67
|
apply(existing) {
|
|
65
68
|
if (!existing) {
|
|
66
|
-
throw new Error(
|
|
69
|
+
throw new Error("Group must exist to change name");
|
|
67
70
|
}
|
|
68
71
|
const existingGroup = existing;
|
|
69
72
|
return {
|
|
@@ -79,9 +82,10 @@ class GroupNameChanged {
|
|
|
79
82
|
return undefined;
|
|
80
83
|
}
|
|
81
84
|
const existingGroup = existing;
|
|
82
|
-
const actor = actorName ??
|
|
85
|
+
const actor = actorName ?? "You";
|
|
83
86
|
const logMessage = `${actor} changed group name from "${existingGroup.name}" to "${this.name}"`;
|
|
84
87
|
return {
|
|
88
|
+
eventId: (0, uuid_1.v4)(),
|
|
85
89
|
userId: existingGroup.userId,
|
|
86
90
|
activityByUid: this.createdBy,
|
|
87
91
|
sourceStreamId: this.streamId,
|
|
@@ -99,6 +103,7 @@ class GroupNameChanged {
|
|
|
99
103
|
exports.GroupNameChanged = GroupNameChanged;
|
|
100
104
|
class GroupDescriptionChanged {
|
|
101
105
|
constructor(props) {
|
|
106
|
+
this.eventId = props.eventId;
|
|
102
107
|
this.userId = props.userId;
|
|
103
108
|
this.description = props.description;
|
|
104
109
|
this.createdAt = props.createdAt;
|
|
@@ -109,7 +114,7 @@ class GroupDescriptionChanged {
|
|
|
109
114
|
}
|
|
110
115
|
apply(existing) {
|
|
111
116
|
if (!existing) {
|
|
112
|
-
throw new Error(
|
|
117
|
+
throw new Error("Group must exist to change description");
|
|
113
118
|
}
|
|
114
119
|
const existingGroup = existing;
|
|
115
120
|
return {
|
|
@@ -125,9 +130,10 @@ class GroupDescriptionChanged {
|
|
|
125
130
|
return undefined;
|
|
126
131
|
}
|
|
127
132
|
const existingGroup = existing;
|
|
128
|
-
const actor = actorName ??
|
|
133
|
+
const actor = actorName ?? "You";
|
|
129
134
|
const logMessage = `${actor} updated group "${existingGroup.name}" description`;
|
|
130
135
|
return {
|
|
136
|
+
eventId: (0, uuid_1.v4)(),
|
|
131
137
|
userId: existingGroup.userId,
|
|
132
138
|
activityByUid: this.createdBy,
|
|
133
139
|
sourceStreamId: this.streamId,
|
|
@@ -145,6 +151,7 @@ class GroupDescriptionChanged {
|
|
|
145
151
|
exports.GroupDescriptionChanged = GroupDescriptionChanged;
|
|
146
152
|
class GroupMembersAdded {
|
|
147
153
|
constructor(props) {
|
|
154
|
+
this.eventId = props.eventId;
|
|
148
155
|
this.userId = props.userId;
|
|
149
156
|
this.members = props.members;
|
|
150
157
|
this.createdAt = props.createdAt;
|
|
@@ -155,7 +162,7 @@ class GroupMembersAdded {
|
|
|
155
162
|
}
|
|
156
163
|
apply(existing) {
|
|
157
164
|
if (!existing) {
|
|
158
|
-
throw new Error(
|
|
165
|
+
throw new Error("Group must exist to add members");
|
|
159
166
|
}
|
|
160
167
|
const existingGroup = existing;
|
|
161
168
|
const existingMembers = existingGroup.members ?? [];
|
|
@@ -174,11 +181,12 @@ class GroupMembersAdded {
|
|
|
174
181
|
return undefined;
|
|
175
182
|
}
|
|
176
183
|
const existingGroup = existing;
|
|
177
|
-
const actor = actorName ??
|
|
184
|
+
const actor = actorName ?? "You";
|
|
178
185
|
const count = this.members.length;
|
|
179
|
-
const memberWord = count === 1 ?
|
|
186
|
+
const memberWord = count === 1 ? "member" : "members";
|
|
180
187
|
const logMessage = `${actor} added ${count} ${memberWord} to group "${existingGroup.name}"`;
|
|
181
188
|
return {
|
|
189
|
+
eventId: (0, uuid_1.v4)(),
|
|
182
190
|
userId: existingGroup.userId,
|
|
183
191
|
activityByUid: this.createdBy,
|
|
184
192
|
sourceStreamId: this.streamId,
|
|
@@ -196,6 +204,7 @@ class GroupMembersAdded {
|
|
|
196
204
|
exports.GroupMembersAdded = GroupMembersAdded;
|
|
197
205
|
class GroupMembersRemoved {
|
|
198
206
|
constructor(props) {
|
|
207
|
+
this.eventId = props.eventId;
|
|
199
208
|
this.userId = props.userId;
|
|
200
209
|
this.members = props.members;
|
|
201
210
|
this.createdAt = props.createdAt;
|
|
@@ -206,7 +215,7 @@ class GroupMembersRemoved {
|
|
|
206
215
|
}
|
|
207
216
|
apply(existing) {
|
|
208
217
|
if (!existing) {
|
|
209
|
-
throw new Error(
|
|
218
|
+
throw new Error("Group must exist to remove members");
|
|
210
219
|
}
|
|
211
220
|
const existingGroup = existing;
|
|
212
221
|
const existingMembers = existingGroup.members ?? [];
|
|
@@ -225,11 +234,12 @@ class GroupMembersRemoved {
|
|
|
225
234
|
return undefined;
|
|
226
235
|
}
|
|
227
236
|
const existingGroup = existing;
|
|
228
|
-
const actor = actorName ??
|
|
237
|
+
const actor = actorName ?? "You";
|
|
229
238
|
const count = this.members.length;
|
|
230
|
-
const memberWord = count === 1 ?
|
|
239
|
+
const memberWord = count === 1 ? "member" : "members";
|
|
231
240
|
const logMessage = `${actor} removed ${count} ${memberWord} from group "${existingGroup.name}"`;
|
|
232
241
|
return {
|
|
242
|
+
eventId: (0, uuid_1.v4)(),
|
|
233
243
|
userId: existingGroup.userId,
|
|
234
244
|
activityByUid: this.createdBy,
|
|
235
245
|
sourceStreamId: this.streamId,
|
|
@@ -247,6 +257,7 @@ class GroupMembersRemoved {
|
|
|
247
257
|
exports.GroupMembersRemoved = GroupMembersRemoved;
|
|
248
258
|
class GroupDeleted {
|
|
249
259
|
constructor(props) {
|
|
260
|
+
this.eventId = props.eventId;
|
|
250
261
|
this.userId = props.userId;
|
|
251
262
|
this.createdAt = props.createdAt;
|
|
252
263
|
this.createdBy = props.createdBy;
|
|
@@ -256,7 +267,7 @@ class GroupDeleted {
|
|
|
256
267
|
}
|
|
257
268
|
apply(existing) {
|
|
258
269
|
if (!existing) {
|
|
259
|
-
throw new Error(
|
|
270
|
+
throw new Error("Group must exist to delete");
|
|
260
271
|
}
|
|
261
272
|
const existingGroup = existing;
|
|
262
273
|
return {
|
|
@@ -272,9 +283,10 @@ class GroupDeleted {
|
|
|
272
283
|
return undefined;
|
|
273
284
|
}
|
|
274
285
|
const existingGroup = existing;
|
|
275
|
-
const actor = actorName ??
|
|
286
|
+
const actor = actorName ?? "You";
|
|
276
287
|
const logMessage = `${actor} deleted group "${existingGroup.name}"`;
|
|
277
288
|
return {
|
|
289
|
+
eventId: (0, uuid_1.v4)(),
|
|
278
290
|
userId: existingGroup.userId,
|
|
279
291
|
activityByUid: this.createdBy,
|
|
280
292
|
sourceStreamId: this.streamId,
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import { GroupTransactionCreated, GroupTransactionSplitDetailsChanged, 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
|
|
1
|
+
import { GroupTransactionCreated, GroupTransactionSplitDetailsChanged, 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
8
|
export declare class GroupTransactionEventHandler {
|
|
9
9
|
private modelStore;
|
|
10
10
|
private eventStore;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GroupTransactionEventHandler.d.ts","sourceRoot":"","sources":["../src/GroupTransactionEventHandler.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,uBAAuB,EACvB,mCAAmC,EACnC,qBAAqB,EAIrB,qBAAqB,EAIxB,MAAM,GAAG,CAAC;AACX,OAAO,
|
|
1
|
+
{"version":3,"file":"GroupTransactionEventHandler.d.ts","sourceRoot":"","sources":["../src/GroupTransactionEventHandler.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,uBAAuB,EACvB,mCAAmC,EACnC,qBAAqB,EAIrB,qBAAqB,EAIxB,MAAM,GAAG,CAAC;AACX,OAAO,EAAE,0BAA0B,EAAE,MAAM,GAAG,CAAC;AAC/C,OAAO,EAAE,0BAA0B,EAAE,MAAM,GAAG,CAAC;AAC/C,OAAO,EAAE,eAAe,EAAE,MAAM,GAAG,CAAC;AACpC,OAAO,EAAE,qBAAqB,EAAE,MAAM,GAAG,CAAC;AAC1C,OAAO,EAAE,qBAAqB,EAAE,MAAM,GAAG,CAAC;AAC1C,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAK9D,qBAAa,4BAA4B;IAEjC,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;IA2BjC,OAAO,CAAC,oBAAoB;YAad,wBAAwB;YA0FxB,wBAAwB;IAatC,OAAO,CAAC,6BAA6B;YAsDvB,gCAAgC;IA+FxC,6BAA6B,CAC/B,KAAK,EAAE,uBAAuB,GAC/B,OAAO,CAAC,qBAAqB,CAAC;IAkE3B,yCAAyC,CAC3C,KAAK,EAAE,mCAAmC,GAC3C,OAAO,CAAC,qBAAqB,CAAC;CAiFpC"}
|
|
@@ -23,9 +23,9 @@ class GroupTransactionEventHandler {
|
|
|
23
23
|
throw new Error(`Unknown group transaction event type: ${eventType}`);
|
|
24
24
|
}
|
|
25
25
|
switch (eventType) {
|
|
26
|
-
case
|
|
26
|
+
case "GroupTransactionCreated":
|
|
27
27
|
return await this.handleGroupTransactionCreated(event);
|
|
28
|
-
case
|
|
28
|
+
case "GroupTransactionSplitDetailsChanged":
|
|
29
29
|
return await this.handleGroupTransactionSplitDetailsChanged(event);
|
|
30
30
|
default:
|
|
31
31
|
throw new Error(`Unknown group transaction event type: ${eventType}`);
|
|
@@ -55,12 +55,13 @@ class GroupTransactionEventHandler {
|
|
|
55
55
|
for (const debtor of debtors) {
|
|
56
56
|
if (creditor.amount > 0 && debtor.amount > 0) {
|
|
57
57
|
const transactionAmount = Math.min(creditor.amount, debtor.amount);
|
|
58
|
-
const creditorStreamId =
|
|
58
|
+
const creditorStreamId = (0, uuid_1.v4)();
|
|
59
59
|
const creditorTransactionEvent = new _1.TransactionCreated({
|
|
60
|
+
eventId: (0, uuid_1.v4)(),
|
|
60
61
|
userId: creditor.memberId,
|
|
61
62
|
recipientUserId: debtor.memberId,
|
|
62
63
|
logicalTransactionId: groupTransactionEvent.transactionId,
|
|
63
|
-
description: groupTransactionEvent.description ??
|
|
64
|
+
description: groupTransactionEvent.description ?? "",
|
|
64
65
|
currency: groupTransactionEvent.currency,
|
|
65
66
|
splitType: _1.SplitType.SpecificAmounts,
|
|
66
67
|
totalAmount: transactionAmount,
|
|
@@ -78,12 +79,13 @@ class GroupTransactionEventHandler {
|
|
|
78
79
|
await this.transactionEventStore.addEvent(creditorTransactionEvent);
|
|
79
80
|
const creditorModel = creditorTransactionEvent.apply(undefined);
|
|
80
81
|
await this.transactionModelStore.save(creditorModel);
|
|
81
|
-
const debtorStreamId =
|
|
82
|
+
const debtorStreamId = (0, uuid_1.v4)();
|
|
82
83
|
const debtorTransactionEvent = new _1.TransactionCreated({
|
|
84
|
+
eventId: (0, uuid_1.v4)(),
|
|
83
85
|
userId: debtor.memberId,
|
|
84
86
|
recipientUserId: creditor.memberId,
|
|
85
87
|
logicalTransactionId: groupTransactionEvent.transactionId,
|
|
86
|
-
description: groupTransactionEvent.description ??
|
|
88
|
+
description: groupTransactionEvent.description ?? "",
|
|
87
89
|
currency: groupTransactionEvent.currency,
|
|
88
90
|
splitType: _1.SplitType.SpecificAmounts,
|
|
89
91
|
totalAmount: transactionAmount,
|
|
@@ -131,13 +133,13 @@ class GroupTransactionEventHandler {
|
|
|
131
133
|
requiredTransactions.set(creditorKey, {
|
|
132
134
|
recipientUserId: debtor.memberId,
|
|
133
135
|
amount: transactionAmount,
|
|
134
|
-
isOwed: false
|
|
136
|
+
isOwed: false,
|
|
135
137
|
});
|
|
136
138
|
const debtorKey = `${debtor.memberId}-${creditor.memberId}`;
|
|
137
139
|
requiredTransactions.set(debtorKey, {
|
|
138
140
|
recipientUserId: creditor.memberId,
|
|
139
141
|
amount: transactionAmount,
|
|
140
|
-
isOwed: true
|
|
142
|
+
isOwed: true,
|
|
141
143
|
});
|
|
142
144
|
creditor.amount -= transactionAmount;
|
|
143
145
|
debtor.amount -= transactionAmount;
|
|
@@ -148,8 +150,8 @@ class GroupTransactionEventHandler {
|
|
|
148
150
|
}
|
|
149
151
|
async updateExistingFriendTransactions(event, existingModel, newMembers) {
|
|
150
152
|
const requiredTransactions = this.calculateRequiredTransactions(newMembers);
|
|
151
|
-
const oldMemberIds = new Set(existingModel.originalTransaction.members.map(m => m.memberId));
|
|
152
|
-
const newMemberIds = new Set(newMembers.map(m => m.memberId));
|
|
153
|
+
const oldMemberIds = new Set(existingModel.originalTransaction.members.map((m) => m.memberId));
|
|
154
|
+
const newMemberIds = new Set(newMembers.map((m) => m.memberId));
|
|
153
155
|
const allMemberIds = new Set([...oldMemberIds, ...newMemberIds]);
|
|
154
156
|
for (const memberId of allMemberIds) {
|
|
155
157
|
const existingTransactions = await this.transactionModelStore.findByGroupTransactionId(memberId, existingModel.transactionId);
|
|
@@ -161,6 +163,7 @@ class GroupTransactionEventHandler {
|
|
|
161
163
|
existingTx.totalAmount !== requiredTx.amount ||
|
|
162
164
|
existingTx.isOwed !== requiredTx.isOwed) {
|
|
163
165
|
const updateEvent = new _1.TransactionDetailsChanged({
|
|
166
|
+
eventId: (0, uuid_1.v4)(),
|
|
164
167
|
userId: existingTx.userId,
|
|
165
168
|
totalAmount: requiredTx.amount,
|
|
166
169
|
amount: requiredTx.amount,
|
|
@@ -179,6 +182,7 @@ class GroupTransactionEventHandler {
|
|
|
179
182
|
}
|
|
180
183
|
else {
|
|
181
184
|
const deleteEvent = new _1.TransactionDeleted({
|
|
185
|
+
eventId: (0, uuid_1.v4)(),
|
|
182
186
|
userId: existingTx.userId,
|
|
183
187
|
createdAt: new Date(),
|
|
184
188
|
createdBy: event.createdBy,
|
|
@@ -193,13 +197,14 @@ class GroupTransactionEventHandler {
|
|
|
193
197
|
}
|
|
194
198
|
}
|
|
195
199
|
for (const [key, txDetails] of requiredTransactions.entries()) {
|
|
196
|
-
const [userId, recipientUserId] = key.split(
|
|
197
|
-
const streamId =
|
|
200
|
+
const [userId, recipientUserId] = key.split("-");
|
|
201
|
+
const streamId = (0, uuid_1.v4)();
|
|
198
202
|
const createEvent = new _1.TransactionCreated({
|
|
203
|
+
eventId: (0, uuid_1.v4)(),
|
|
199
204
|
userId: userId,
|
|
200
205
|
recipientUserId: recipientUserId,
|
|
201
206
|
logicalTransactionId: existingModel.transactionId,
|
|
202
|
-
description: existingModel.description ??
|
|
207
|
+
description: existingModel.description ?? "",
|
|
203
208
|
currency: existingModel.currency,
|
|
204
209
|
splitType: _1.SplitType.SpecificAmounts,
|
|
205
210
|
totalAmount: txDetails.amount,
|
|
@@ -229,9 +234,10 @@ class GroupTransactionEventHandler {
|
|
|
229
234
|
const allGroupPerspectives = await this.groupModelStore.findAllByGroupIdAndDeletedIsFalse(event.groupId);
|
|
230
235
|
for (const groupPerspective of allGroupPerspectives) {
|
|
231
236
|
if (groupPerspective.userId !== event.userId) {
|
|
232
|
-
const perspectiveStreamId =
|
|
237
|
+
const perspectiveStreamId = (0, uuid_1.v4)();
|
|
233
238
|
const perspectiveSplitType = (0, splitTypeUtils_1.reverseSplitType)(event.splitType);
|
|
234
239
|
const perspectiveEvent = new _1.GroupTransactionCreated({
|
|
240
|
+
eventId: (0, uuid_1.v4)(),
|
|
235
241
|
userId: groupPerspective.userId,
|
|
236
242
|
groupId: event.groupId,
|
|
237
243
|
transactionId: event.transactionId,
|
|
@@ -262,7 +268,7 @@ class GroupTransactionEventHandler {
|
|
|
262
268
|
async handleGroupTransactionSplitDetailsChanged(event) {
|
|
263
269
|
const existingModel = await this.modelStore.getByStreamIdWhereDeletedIsFalse(event.streamId);
|
|
264
270
|
if (!existingModel) {
|
|
265
|
-
throw new Error(
|
|
271
|
+
throw new Error("GroupTransaction must exist to change split details");
|
|
266
272
|
}
|
|
267
273
|
const oldMembers = existingModel.originalTransaction.members;
|
|
268
274
|
const newMembers = event.originalTransaction.members;
|
|
@@ -277,6 +283,7 @@ class GroupTransactionEventHandler {
|
|
|
277
283
|
const perspectiveStreamId = updatedModel.streamId;
|
|
278
284
|
const perspectiveSplitType = (0, splitTypeUtils_1.reverseSplitType)(event.splitType);
|
|
279
285
|
const perspectiveEvent = new _1.GroupTransactionSplitDetailsChanged({
|
|
286
|
+
eventId: (0, uuid_1.v4)(),
|
|
280
287
|
userId: groupPerspective.userId,
|
|
281
288
|
totalAmount: event.totalAmount,
|
|
282
289
|
splitType: perspectiveSplitType,
|