@zeeshan60/event-processor 1.0.4 → 1.0.6

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 (97) hide show
  1. package/dist/ActivityEventHandler.d.ts +12 -0
  2. package/dist/ActivityEventHandler.d.ts.map +1 -0
  3. package/dist/ActivityEventHandler.js +35 -0
  4. package/dist/ActivityLogEvents.d.ts +2 -0
  5. package/dist/ActivityLogEvents.d.ts.map +1 -1
  6. package/dist/ActivityLogEvents.js +1 -0
  7. package/dist/FriendEventHandler.d.ts +21 -0
  8. package/dist/FriendEventHandler.d.ts.map +1 -0
  9. package/dist/FriendEventHandler.js +180 -0
  10. package/dist/FriendEvents.d.ts +10 -0
  11. package/dist/FriendEvents.d.ts.map +1 -1
  12. package/dist/FriendEvents.js +9 -0
  13. package/dist/GroupEventHandler.d.ts +25 -0
  14. package/dist/GroupEventHandler.d.ts.map +1 -0
  15. package/dist/GroupEventHandler.js +278 -0
  16. package/dist/GroupEvents.d.ts +12 -0
  17. package/dist/GroupEvents.d.ts.map +1 -1
  18. package/dist/GroupEvents.js +12 -0
  19. package/dist/GroupTransactionEventHandler.d.ts +25 -0
  20. package/dist/GroupTransactionEventHandler.d.ts.map +1 -0
  21. package/dist/GroupTransactionEventHandler.js +303 -0
  22. package/dist/GroupTransactionEvents.d.ts +18 -0
  23. package/dist/GroupTransactionEvents.d.ts.map +1 -1
  24. package/dist/GroupTransactionEvents.js +18 -0
  25. package/dist/TransactionEventHandler.d.ts +11 -7
  26. package/dist/TransactionEventHandler.d.ts.map +1 -1
  27. package/dist/TransactionEventHandler.js +146 -10
  28. package/dist/TransactionEvents.d.ts +16 -0
  29. package/dist/TransactionEvents.d.ts.map +1 -1
  30. package/dist/TransactionEvents.js +16 -0
  31. package/dist/UserEventHandler.d.ts +17 -0
  32. package/dist/UserEventHandler.d.ts.map +1 -0
  33. package/dist/UserEventHandler.js +82 -0
  34. package/dist/UserEvents.d.ts +16 -0
  35. package/dist/UserEvents.d.ts.map +1 -1
  36. package/dist/UserEvents.js +12 -0
  37. package/dist/__tests__/test-helpers/IMActivityLogEventStore.d.ts +9 -0
  38. package/dist/__tests__/test-helpers/IMActivityLogEventStore.d.ts.map +1 -0
  39. package/dist/__tests__/test-helpers/IMActivityLogEventStore.js +21 -0
  40. package/dist/__tests__/test-helpers/IMActivityLogModelStore.d.ts +11 -0
  41. package/dist/__tests__/test-helpers/IMActivityLogModelStore.d.ts.map +1 -0
  42. package/dist/{store/InMemoryModelStore.js → __tests__/test-helpers/IMActivityLogModelStore.js} +14 -13
  43. package/dist/__tests__/test-helpers/IMFriendEventStore.d.ts +9 -0
  44. package/dist/__tests__/test-helpers/IMFriendEventStore.d.ts.map +1 -0
  45. package/dist/__tests__/test-helpers/IMFriendEventStore.js +20 -0
  46. package/dist/__tests__/test-helpers/IMFriendModelStore.d.ts +16 -0
  47. package/dist/__tests__/test-helpers/IMFriendModelStore.d.ts.map +1 -0
  48. package/dist/__tests__/test-helpers/IMFriendModelStore.js +74 -0
  49. package/dist/__tests__/test-helpers/IMGroupEventStore.d.ts +9 -0
  50. package/dist/__tests__/test-helpers/IMGroupEventStore.d.ts.map +1 -0
  51. package/dist/__tests__/test-helpers/IMGroupEventStore.js +20 -0
  52. package/dist/__tests__/test-helpers/IMGroupModelStore.d.ts +14 -0
  53. package/dist/__tests__/test-helpers/IMGroupModelStore.d.ts.map +1 -0
  54. package/dist/__tests__/test-helpers/IMGroupModelStore.js +53 -0
  55. package/dist/__tests__/test-helpers/IMGroupTransactionEventStore.d.ts +9 -0
  56. package/dist/__tests__/test-helpers/IMGroupTransactionEventStore.d.ts.map +1 -0
  57. package/dist/__tests__/test-helpers/IMGroupTransactionEventStore.js +22 -0
  58. package/dist/__tests__/test-helpers/IMGroupTransactionModelStore.d.ts +14 -0
  59. package/dist/__tests__/test-helpers/IMGroupTransactionModelStore.d.ts.map +1 -0
  60. package/dist/__tests__/test-helpers/IMGroupTransactionModelStore.js +55 -0
  61. package/dist/__tests__/test-helpers/IMTransactionEventStore.d.ts +10 -0
  62. package/dist/__tests__/test-helpers/IMTransactionEventStore.d.ts.map +1 -0
  63. package/dist/__tests__/test-helpers/IMTransactionEventStore.js +23 -0
  64. package/dist/__tests__/test-helpers/IMTransactionModelStore.d.ts +14 -0
  65. package/dist/__tests__/test-helpers/IMTransactionModelStore.d.ts.map +1 -0
  66. package/dist/__tests__/test-helpers/IMTransactionModelStore.js +56 -0
  67. package/dist/__tests__/test-helpers/IMUserEventStore.d.ts +10 -0
  68. package/dist/__tests__/test-helpers/IMUserEventStore.d.ts.map +1 -0
  69. package/dist/{store/InMemoryEventStore.js → __tests__/test-helpers/IMUserEventStore.js} +5 -5
  70. package/dist/__tests__/test-helpers/IMUserModelStore.d.ts +15 -0
  71. package/dist/__tests__/test-helpers/IMUserModelStore.d.ts.map +1 -0
  72. package/dist/__tests__/test-helpers/IMUserModelStore.js +58 -0
  73. package/dist/common/Event.d.ts +1 -0
  74. package/dist/common/Event.d.ts.map +1 -1
  75. package/dist/events.d.ts +30 -0
  76. package/dist/events.d.ts.map +1 -0
  77. package/dist/events.js +60 -0
  78. package/dist/index.d.ts +1 -21
  79. package/dist/index.d.ts.map +1 -1
  80. package/dist/index.js +16 -86
  81. package/dist/utils/splitTypeUtils.d.ts +7 -0
  82. package/dist/utils/splitTypeUtils.d.ts.map +1 -0
  83. package/dist/utils/splitTypeUtils.js +45 -0
  84. package/dist/utils/userPathUtils.d.ts +6 -0
  85. package/dist/utils/userPathUtils.d.ts.map +1 -0
  86. package/dist/utils/userPathUtils.js +16 -0
  87. package/package.json +1 -1
  88. package/dist/common/EventStore.d.ts +0 -5
  89. package/dist/common/EventStore.d.ts.map +0 -1
  90. package/dist/common/EventStore.js +0 -6
  91. package/dist/common/ModelStore.d.ts +0 -6
  92. package/dist/common/ModelStore.d.ts.map +0 -1
  93. package/dist/common/ModelStore.js +0 -6
  94. package/dist/store/InMemoryEventStore.d.ts +0 -10
  95. package/dist/store/InMemoryEventStore.d.ts.map +0 -1
  96. package/dist/store/InMemoryModelStore.d.ts +0 -11
  97. package/dist/store/InMemoryModelStore.d.ts.map +0 -1
@@ -0,0 +1,12 @@
1
+ import { Event, Model } from '.';
2
+ import { ActivityLogModelStore } from '.';
3
+ import { ActivityLogEventStore } from '.';
4
+ import { UserModelStore } from '.';
5
+ export declare class ActivityEventHandler {
6
+ private activityLogModelStore;
7
+ private activityLogEventStore;
8
+ private userModelStore;
9
+ constructor(activityLogModelStore: ActivityLogModelStore, activityLogEventStore: ActivityLogEventStore, userModelStore: UserModelStore);
10
+ createActivityLog(event: Event, existingModel: Model | undefined, updatedModel: Model): Promise<void>;
11
+ }
12
+ //# sourceMappingURL=ActivityEventHandler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ActivityEventHandler.d.ts","sourceRoot":"","sources":["../src/ActivityEventHandler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,KAAK,EAAE,KAAK,EAA8C,MAAM,GAAG,CAAC;AAC5E,OAAO,EAAC,qBAAqB,EAAC,MAAM,GAAG,CAAC;AACxC,OAAO,EAAC,qBAAqB,EAAC,MAAM,GAAG,CAAC;AACxC,OAAO,EAAC,cAAc,EAAC,MAAM,GAAG,CAAC;AAEjC,qBAAa,oBAAoB;IAEzB,OAAO,CAAC,qBAAqB;IAC7B,OAAO,CAAC,qBAAqB;IAC7B,OAAO,CAAC,cAAc;gBAFd,qBAAqB,EAAE,qBAAqB,EAC5C,qBAAqB,EAAE,qBAAqB,EAC5C,cAAc,EAAE,cAAc;IAGpC,iBAAiB,CAAC,KAAK,EAAE,KAAK,EAAE,aAAa,EAAE,KAAK,GAAG,SAAS,EAAE,YAAY,EAAE,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC;CA2B9G"}
@@ -0,0 +1,35 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ActivityEventHandler = void 0;
4
+ const _1 = require(".");
5
+ class ActivityEventHandler {
6
+ constructor(activityLogModelStore, activityLogEventStore, userModelStore) {
7
+ this.activityLogModelStore = activityLogModelStore;
8
+ this.activityLogEventStore = activityLogEventStore;
9
+ this.userModelStore = userModelStore;
10
+ }
11
+ async createActivityLog(event, existingModel, updatedModel) {
12
+ if (!event.activityLog) {
13
+ return;
14
+ }
15
+ let actorName;
16
+ if (event.createdBy !== updatedModel.userId) {
17
+ const actorUser = await this.userModelStore.getByStreamId(event.createdBy);
18
+ if (actorUser) {
19
+ actorName = actorUser.displayName;
20
+ }
21
+ else {
22
+ actorName = event.createdBy;
23
+ }
24
+ }
25
+ const activityLogProps = event.activityLog(existingModel, actorName);
26
+ if (!activityLogProps) {
27
+ return;
28
+ }
29
+ const activityLogEvent = new _1.ActivityLogCreated(activityLogProps);
30
+ const activityLogModel = activityLogEvent.apply();
31
+ await this.activityLogEventStore.addEvent(updatedModel.userId, activityLogEvent);
32
+ await this.activityLogModelStore.save(activityLogModel);
33
+ }
34
+ }
35
+ exports.ActivityEventHandler = ActivityEventHandler;
@@ -25,6 +25,7 @@ export interface ActivityLogCreatedProps {
25
25
  createdBy: string;
26
26
  streamId: string;
27
27
  version: number;
28
+ systemGenerated: boolean;
28
29
  }
29
30
  export declare class ActivityLogCreated implements Event {
30
31
  userId: string;
@@ -37,6 +38,7 @@ export declare class ActivityLogCreated implements Event {
37
38
  createdBy: string;
38
39
  streamId: string;
39
40
  version: number;
41
+ systemGenerated: boolean;
40
42
  constructor(props: ActivityLogCreatedProps);
41
43
  apply(_existing?: Model): ActivityLogModel;
42
44
  }
@@ -1 +1 @@
1
- {"version":3,"file":"ActivityLogEvents.d.ts","sourceRoot":"","sources":["../src/ActivityLogEvents.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AACvC,OAAO,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAEvC,oBAAY,UAAU;IACpB,WAAW,gBAAgB;IAC3B,IAAI,SAAS;IACb,MAAM,WAAW;IACjB,KAAK,UAAU;IACf,gBAAgB,qBAAqB;CACtC;AAED,MAAM,WAAW,gBAAiB,SAAQ,KAAK;IAC7C,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;IACvB,UAAU,EAAE,UAAU,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,IAAI,CAAC;CACZ;AAED,MAAM,WAAW,uBAAuB;IACtC,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;IACvB,UAAU,EAAE,UAAU,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,IAAI,CAAC;IACX,SAAS,EAAE,IAAI,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,qBAAa,kBAAmB,YAAW,KAAK;IACvC,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;IACvB,UAAU,EAAE,UAAU,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,IAAI,CAAC;IACX,SAAS,EAAE,IAAI,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;gBAEX,KAAK,EAAE,uBAAuB;IAa1C,KAAK,CAAC,SAAS,CAAC,EAAE,KAAK,GAAG,gBAAgB;CAa3C"}
1
+ {"version":3,"file":"ActivityLogEvents.d.ts","sourceRoot":"","sources":["../src/ActivityLogEvents.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AACvC,OAAO,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAEvC,oBAAY,UAAU;IACpB,WAAW,gBAAgB;IAC3B,IAAI,SAAS;IACb,MAAM,WAAW;IACjB,KAAK,UAAU;IACf,gBAAgB,qBAAqB;CACtC;AAED,MAAM,WAAW,gBAAiB,SAAQ,KAAK;IAC7C,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;IACvB,UAAU,EAAE,UAAU,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,IAAI,CAAC;CACZ;AAED,MAAM,WAAW,uBAAuB;IACtC,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;IACvB,UAAU,EAAE,UAAU,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,IAAI,CAAC;IACX,SAAS,EAAE,IAAI,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,eAAe,EAAE,OAAO,CAAC;CAC1B;AAED,qBAAa,kBAAmB,YAAW,KAAK;IACvC,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;IACvB,UAAU,EAAE,UAAU,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,IAAI,CAAC;IACX,SAAS,EAAE,IAAI,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,eAAe,EAAE,OAAO,CAAC;gBAEpB,KAAK,EAAE,uBAAuB;IAc1C,KAAK,CAAC,SAAS,CAAC,EAAE,KAAK,GAAG,gBAAgB;CAa3C"}
@@ -21,6 +21,7 @@ class ActivityLogCreated {
21
21
  this.createdBy = props.createdBy;
22
22
  this.streamId = props.streamId;
23
23
  this.version = props.version;
24
+ this.systemGenerated = props.systemGenerated;
24
25
  }
25
26
  apply(_existing) {
26
27
  return {
@@ -0,0 +1,21 @@
1
+ import { FriendCreated, FriendDeleted, FriendIdAdded, FriendIdRemoved, FriendModel, FriendUpdated, Event } 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 FriendEventHandler {
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: Event): Promise<FriendModel>;
15
+ handleFriendCreated(event: FriendCreated): Promise<FriendModel>;
16
+ handleFriendUpdated(event: FriendUpdated): Promise<FriendModel>;
17
+ handleFriendDeleted(event: FriendDeleted): Promise<FriendModel>;
18
+ handleFriendIdAdded(event: FriendIdAdded): Promise<FriendModel>;
19
+ handleFriendIdRemoved(event: FriendIdRemoved): Promise<FriendModel>;
20
+ }
21
+ //# sourceMappingURL=FriendEventHandler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FriendEventHandler.d.ts","sourceRoot":"","sources":["../src/FriendEventHandler.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,aAAa,EACb,aAAa,EACb,aAAa,EACb,eAAe,EACf,WAAW,EACX,aAAa,EAGb,KAAK,EACR,MAAM,GAAG,CAAC;AACX,OAAO,EAAC,gBAAgB,EAAC,MAAM,GAAG,CAAC;AACnC,OAAO,EAAC,cAAc,EAAC,MAAM,GAAG,CAAC;AACjC,OAAO,EAAC,gBAAgB,EAAC,MAAM,GAAG,CAAC;AACnC,OAAO,EAAC,cAAc,EAAC,MAAM,GAAG,CAAC;AACjC,OAAO,EAAC,oBAAoB,EAAC,MAAM,wBAAwB,CAAC;AAG5D,qBAAa,kBAAkB;IAEvB,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,KAAK,GAAG,OAAO,CAAC,WAAW,CAAC;IA8B/C,mBAAmB,CAAC,KAAK,EAAE,aAAa,GAAG,OAAO,CAAC,WAAW,CAAC;IA6G/D,mBAAmB,CAAC,KAAK,EAAE,aAAa,GAAG,OAAO,CAAC,WAAW,CAAC;IAU/D,mBAAmB,CAAC,KAAK,EAAE,aAAa,GAAG,OAAO,CAAC,WAAW,CAAC;IAU/D,mBAAmB,CAAC,KAAK,EAAE,aAAa,GAAG,OAAO,CAAC,WAAW,CAAC;IAU/D,qBAAqB,CAAC,KAAK,EAAE,eAAe,GAAG,OAAO,CAAC,WAAW,CAAC;CAS5E"}
@@ -0,0 +1,180 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.FriendEventHandler = void 0;
4
+ const _1 = require(".");
5
+ const uuid_1 = require("uuid");
6
+ class FriendEventHandler {
7
+ constructor(modelStore, userModelStore, friendEventStore, userEventStore, activityEventHandler) {
8
+ this.modelStore = modelStore;
9
+ this.userModelStore = userModelStore;
10
+ this.friendEventStore = friendEventStore;
11
+ this.userEventStore = userEventStore;
12
+ this.activityEventHandler = activityEventHandler;
13
+ }
14
+ async handleEvent(event) {
15
+ const validEventTypes = [
16
+ 'FriendCreated',
17
+ 'FriendUpdated',
18
+ 'FriendDeleted',
19
+ 'FriendIdAdded',
20
+ 'FriendIdRemoved'
21
+ ];
22
+ const eventType = event.constructor.name;
23
+ if (!validEventTypes.includes(eventType)) {
24
+ throw new Error(`Unknown friend event type: ${eventType}`);
25
+ }
26
+ switch (eventType) {
27
+ case 'FriendCreated':
28
+ return await this.handleFriendCreated(event);
29
+ case 'FriendUpdated':
30
+ return await this.handleFriendUpdated(event);
31
+ case 'FriendDeleted':
32
+ return await this.handleFriendDeleted(event);
33
+ case 'FriendIdAdded':
34
+ return await this.handleFriendIdAdded(event);
35
+ case 'FriendIdRemoved':
36
+ return await this.handleFriendIdRemoved(event);
37
+ default:
38
+ throw new Error(`Unknown friend event type: ${eventType}`);
39
+ }
40
+ }
41
+ async handleFriendCreated(event) {
42
+ const existingModel = await this.modelStore.getByStreamIdWhereDeletedIsFalse(event.streamId);
43
+ const updatedModel = event.apply(existingModel);
44
+ await this.modelStore.save(updatedModel);
45
+ // Check if friend is already a user (try phone first, then email)
46
+ let friendUser = null;
47
+ if (event.friendPhoneNumber) {
48
+ friendUser = await this.userModelStore.findByPhone(event.friendPhoneNumber);
49
+ }
50
+ if (!friendUser && event.friendEmail) {
51
+ friendUser = await this.userModelStore.findByEmail(event.friendEmail);
52
+ }
53
+ // If friend is a user, link them and create reciprocal friendship
54
+ if (friendUser) {
55
+ // Create FriendIdAdded event for current user
56
+ const friendIdAddedEvent = new _1.FriendIdAdded({
57
+ userId: event.userId,
58
+ friendId: friendUser.userId,
59
+ createdAt: new Date(),
60
+ createdBy: event.userId,
61
+ streamId: event.streamId,
62
+ version: updatedModel.version + 1,
63
+ systemGenerated: true,
64
+ });
65
+ await this.friendEventStore.addEvent(event.userId, friendIdAddedEvent);
66
+ const modelWithFriendId = friendIdAddedEvent.apply(updatedModel);
67
+ await this.modelStore.save(modelWithFriendId);
68
+ const primaryUser = await this.userModelStore.getByStreamIdWhereDeletedIsFalse(event.userId);
69
+ if (primaryUser) {
70
+ const reciprocalFriendCreated = new _1.FriendCreated({
71
+ userId: friendUser.userId,
72
+ friendEmail: primaryUser.email,
73
+ friendPhoneNumber: primaryUser.phoneNumber,
74
+ friendDisplayName: primaryUser.displayName,
75
+ friendId: event.userId,
76
+ groupId: event.groupId,
77
+ createdAt: new Date(),
78
+ createdBy: friendUser.userId,
79
+ streamId: `stream-${(0, uuid_1.v4)()}`,
80
+ version: 1,
81
+ systemGenerated: true,
82
+ });
83
+ await this.friendEventStore.addEvent(friendUser.userId, reciprocalFriendCreated);
84
+ const reciprocalModel = reciprocalFriendCreated.apply(undefined);
85
+ await this.modelStore.save(reciprocalModel);
86
+ }
87
+ return modelWithFriendId;
88
+ }
89
+ else {
90
+ // Friend user not found - create placeholder user
91
+ const placeholderStreamId = `stream-${(0, uuid_1.v4)()}`;
92
+ const placeholderUserCreated = new _1.PlaceholderUserCreated({
93
+ userId: placeholderStreamId,
94
+ displayName: event.friendDisplayName,
95
+ phoneNumber: event.friendPhoneNumber,
96
+ email: event.friendEmail,
97
+ createdAt: new Date(),
98
+ createdBy: event.userId,
99
+ streamId: placeholderStreamId,
100
+ version: 1,
101
+ systemGenerated: true,
102
+ });
103
+ await this.userEventStore.addEvent(placeholderStreamId, placeholderUserCreated);
104
+ const placeholderUser = placeholderUserCreated.apply(undefined);
105
+ await this.userModelStore.save(placeholderUser);
106
+ // Link primary user to placeholder
107
+ const friendIdAddedEvent = new _1.FriendIdAdded({
108
+ userId: event.userId,
109
+ friendId: placeholderStreamId,
110
+ createdAt: new Date(),
111
+ createdBy: event.userId,
112
+ streamId: event.streamId,
113
+ version: updatedModel.version + 1,
114
+ systemGenerated: true,
115
+ });
116
+ await this.friendEventStore.addEvent(event.userId, friendIdAddedEvent);
117
+ const modelWithPlaceholderId = friendIdAddedEvent.apply(updatedModel);
118
+ await this.modelStore.save(modelWithPlaceholderId);
119
+ // Create reciprocal friendship for placeholder user
120
+ const primaryUser = await this.userModelStore.getByStreamIdWhereDeletedIsFalse(event.userId);
121
+ if (primaryUser) {
122
+ const primaryUserModel = primaryUser;
123
+ const reciprocalFriendCreated = new _1.FriendCreated({
124
+ userId: placeholderStreamId,
125
+ friendEmail: primaryUserModel.email,
126
+ friendPhoneNumber: primaryUserModel.phoneNumber,
127
+ friendDisplayName: primaryUserModel.displayName,
128
+ friendId: event.userId,
129
+ groupId: event.groupId,
130
+ createdAt: new Date(),
131
+ createdBy: placeholderStreamId,
132
+ streamId: `stream-${(0, uuid_1.v4)()}`,
133
+ version: 1,
134
+ systemGenerated: true,
135
+ });
136
+ await this.friendEventStore.addEvent(placeholderStreamId, reciprocalFriendCreated);
137
+ const reciprocalModel = reciprocalFriendCreated.apply(undefined);
138
+ await this.modelStore.save(reciprocalModel);
139
+ }
140
+ return modelWithPlaceholderId;
141
+ }
142
+ }
143
+ async handleFriendUpdated(event) {
144
+ const existingModel = await this.modelStore.getByStreamIdWhereDeletedIsFalse(event.streamId);
145
+ const updatedModel = event.apply(existingModel);
146
+ await this.modelStore.save(updatedModel);
147
+ if (this.activityEventHandler) {
148
+ await this.activityEventHandler.createActivityLog(event, existingModel, updatedModel);
149
+ }
150
+ return updatedModel;
151
+ }
152
+ async handleFriendDeleted(event) {
153
+ const existingModel = await this.modelStore.getByStreamIdWhereDeletedIsFalse(event.streamId);
154
+ const updatedModel = event.apply(existingModel);
155
+ await this.modelStore.save(updatedModel);
156
+ if (this.activityEventHandler) {
157
+ await this.activityEventHandler.createActivityLog(event, existingModel, updatedModel);
158
+ }
159
+ return updatedModel;
160
+ }
161
+ async handleFriendIdAdded(event) {
162
+ const existingModel = await this.modelStore.getByStreamIdWhereDeletedIsFalse(event.streamId);
163
+ const updatedModel = event.apply(existingModel);
164
+ await this.modelStore.save(updatedModel);
165
+ if (this.activityEventHandler) {
166
+ await this.activityEventHandler.createActivityLog(event, existingModel, updatedModel);
167
+ }
168
+ return updatedModel;
169
+ }
170
+ async handleFriendIdRemoved(event) {
171
+ const existingModel = await this.modelStore.getByStreamIdWhereDeletedIsFalse(event.streamId);
172
+ const updatedModel = event.apply(existingModel);
173
+ await this.modelStore.save(updatedModel);
174
+ if (this.activityEventHandler) {
175
+ await this.activityEventHandler.createActivityLog(event, existingModel, updatedModel);
176
+ }
177
+ return updatedModel;
178
+ }
179
+ }
180
+ exports.FriendEventHandler = FriendEventHandler;
@@ -28,6 +28,7 @@ export interface FriendCreatedProps {
28
28
  createdBy: string;
29
29
  streamId: string;
30
30
  version: number;
31
+ systemGenerated: boolean;
31
32
  }
32
33
  export declare class FriendCreated implements Event {
33
34
  userId: string;
@@ -40,6 +41,7 @@ export declare class FriendCreated implements Event {
40
41
  createdBy: string;
41
42
  streamId: string;
42
43
  version: number;
44
+ systemGenerated: boolean;
43
45
  constructor(props: FriendCreatedProps);
44
46
  apply(_existing?: Model): FriendModel;
45
47
  activityLog(_existing?: Model, actorName?: string): ActivityLogCreatedProps | undefined;
@@ -53,6 +55,7 @@ export interface FriendUpdatedProps {
53
55
  createdBy: string;
54
56
  streamId: string;
55
57
  version: number;
58
+ systemGenerated: boolean;
56
59
  }
57
60
  export declare class FriendUpdated implements Event {
58
61
  userId?: string;
@@ -63,6 +66,7 @@ export declare class FriendUpdated implements Event {
63
66
  createdBy: string;
64
67
  streamId: string;
65
68
  version: number;
69
+ systemGenerated: boolean;
66
70
  constructor(props: FriendUpdatedProps);
67
71
  apply(existing?: Model): FriendModel;
68
72
  activityLog(existing?: Model, actorName?: string): ActivityLogCreatedProps | undefined;
@@ -73,6 +77,7 @@ export interface FriendDeletedProps {
73
77
  createdBy: string;
74
78
  streamId: string;
75
79
  version: number;
80
+ systemGenerated: boolean;
76
81
  }
77
82
  export declare class FriendDeleted implements Event {
78
83
  userId?: string;
@@ -80,6 +85,7 @@ export declare class FriendDeleted implements Event {
80
85
  createdBy: string;
81
86
  streamId: string;
82
87
  version: number;
88
+ systemGenerated: boolean;
83
89
  constructor(props: FriendDeletedProps);
84
90
  apply(existing?: Model): FriendModel;
85
91
  activityLog(existing?: Model, actorName?: string): ActivityLogCreatedProps | undefined;
@@ -91,6 +97,7 @@ export interface FriendIdAddedProps {
91
97
  createdBy: string;
92
98
  streamId: string;
93
99
  version: number;
100
+ systemGenerated: boolean;
94
101
  }
95
102
  export declare class FriendIdAdded implements Event {
96
103
  userId?: string;
@@ -99,6 +106,7 @@ export declare class FriendIdAdded implements Event {
99
106
  createdBy: string;
100
107
  streamId: string;
101
108
  version: number;
109
+ systemGenerated: boolean;
102
110
  constructor(props: FriendIdAddedProps);
103
111
  apply(existing?: Model): FriendModel;
104
112
  activityLog(existing?: Model, _actorName?: string): ActivityLogCreatedProps | undefined;
@@ -109,6 +117,7 @@ export interface FriendIdRemovedProps {
109
117
  createdBy: string;
110
118
  streamId: string;
111
119
  version: number;
120
+ systemGenerated: boolean;
112
121
  }
113
122
  export declare class FriendIdRemoved implements Event {
114
123
  userId?: string;
@@ -116,6 +125,7 @@ export declare class FriendIdRemoved implements Event {
116
125
  createdBy: string;
117
126
  streamId: string;
118
127
  version: number;
128
+ systemGenerated: boolean;
119
129
  constructor(props: FriendIdRemovedProps);
120
130
  apply(existing?: Model): FriendModel;
121
131
  }
@@ -1 +1 @@
1
- {"version":3,"file":"FriendEvents.d.ts","sourceRoot":"","sources":["../src/FriendEvents.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"FriendEvents.d.ts","sourceRoot":"","sources":["../src/FriendEvents.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AACvC,OAAO,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AACvC,OAAO,EAAE,uBAAuB,EAAc,MAAM,qBAAqB,CAAC;AAG1E,oBAAY,eAAe;IACzB,cAAc,mBAAmB;IACjC,cAAc,mBAAmB;IACjC,cAAc,mBAAmB;IACjC,eAAe,oBAAoB;IACnC,iBAAiB,sBAAsB;CACxC;AAED,MAAM,WAAW,WAAY,SAAQ,KAAK;IACxC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,SAAS,EAAE,IAAI,CAAC;IAChB,SAAS,EAAE,IAAI,CAAC;CACjB;AAED,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,IAAI,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,eAAe,EAAE,OAAO,CAAC;CAC1B;AAED,qBAAa,aAAc,YAAW,KAAK;IAClC,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,IAAI,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,eAAe,EAAE,OAAO,CAAC;gBAEpB,KAAK,EAAE,kBAAkB;IAcrC,KAAK,CAAC,SAAS,CAAC,EAAE,KAAK,GAAG,WAAW;IAgBrC,WAAW,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,uBAAuB,GAAG,SAAS;CAkBxF;AAED,MAAM,WAAW,kBAAkB;IACjC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,SAAS,EAAE,IAAI,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,eAAe,EAAE,OAAO,CAAC;CAC1B;AAED,qBAAa,aAAc,YAAW,KAAK;IAClC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,SAAS,EAAE,IAAI,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,eAAe,EAAE,OAAO,CAAC;gBAEpB,KAAK,EAAE,kBAAkB;IAYrC,KAAK,CAAC,QAAQ,CAAC,EAAE,KAAK,GAAG,WAAW;IAepC,WAAW,CAAC,QAAQ,CAAC,EAAE,KAAK,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,uBAAuB,GAAG,SAAS;CAwBvF;AAED,MAAM,WAAW,kBAAkB;IACjC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,IAAI,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,eAAe,EAAE,OAAO,CAAC;CAC1B;AAED,qBAAa,aAAc,YAAW,KAAK;IAClC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,IAAI,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,eAAe,EAAE,OAAO,CAAC;gBAEpB,KAAK,EAAE,kBAAkB;IASrC,KAAK,CAAC,QAAQ,CAAC,EAAE,KAAK,GAAG,WAAW;IAapC,WAAW,CAAC,QAAQ,CAAC,EAAE,KAAK,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,uBAAuB,GAAG,SAAS;CAuBvF;AAED,MAAM,WAAW,kBAAkB;IACjC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,IAAI,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,eAAe,EAAE,OAAO,CAAC;CAC1B;AAED,qBAAa,aAAc,YAAW,KAAK;IAClC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,IAAI,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,eAAe,EAAE,OAAO,CAAC;gBAEpB,KAAK,EAAE,kBAAkB;IAUrC,KAAK,CAAC,QAAQ,CAAC,EAAE,KAAK,GAAG,WAAW;IAapC,WAAW,CAAC,QAAQ,CAAC,EAAE,KAAK,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,uBAAuB,GAAG,SAAS;CAsBxF;AAED,MAAM,WAAW,oBAAoB;IACnC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,IAAI,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,eAAe,EAAE,OAAO,CAAC;CAC1B;AAED,qBAAa,eAAgB,YAAW,KAAK;IACpC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,IAAI,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,eAAe,EAAE,OAAO,CAAC;gBAEpB,KAAK,EAAE,oBAAoB;IASvC,KAAK,CAAC,QAAQ,CAAC,EAAE,KAAK,GAAG,WAAW;CAYrC"}
@@ -23,6 +23,7 @@ class FriendCreated {
23
23
  this.createdBy = props.createdBy;
24
24
  this.streamId = props.streamId;
25
25
  this.version = props.version;
26
+ this.systemGenerated = props.systemGenerated;
26
27
  }
27
28
  apply(_existing) {
28
29
  return {
@@ -53,6 +54,7 @@ class FriendCreated {
53
54
  createdBy: this.createdBy,
54
55
  streamId: (0, uuid_1.v4)(),
55
56
  version: 1,
57
+ systemGenerated: true,
56
58
  };
57
59
  }
58
60
  }
@@ -67,6 +69,7 @@ class FriendUpdated {
67
69
  this.createdBy = props.createdBy;
68
70
  this.streamId = props.streamId;
69
71
  this.version = props.version;
72
+ this.systemGenerated = props.systemGenerated;
70
73
  }
71
74
  apply(existing) {
72
75
  if (!existing) {
@@ -101,6 +104,7 @@ class FriendUpdated {
101
104
  createdBy: this.createdBy,
102
105
  streamId: (0, uuid_1.v4)(),
103
106
  version: 1,
107
+ systemGenerated: true,
104
108
  };
105
109
  }
106
110
  }
@@ -112,6 +116,7 @@ class FriendDeleted {
112
116
  this.createdBy = props.createdBy;
113
117
  this.streamId = props.streamId;
114
118
  this.version = props.version;
119
+ this.systemGenerated = props.systemGenerated;
115
120
  }
116
121
  apply(existing) {
117
122
  if (!existing) {
@@ -143,6 +148,7 @@ class FriendDeleted {
143
148
  createdBy: this.createdBy,
144
149
  streamId: (0, uuid_1.v4)(),
145
150
  version: 1,
151
+ systemGenerated: true,
146
152
  };
147
153
  }
148
154
  }
@@ -155,6 +161,7 @@ class FriendIdAdded {
155
161
  this.createdBy = props.createdBy;
156
162
  this.streamId = props.streamId;
157
163
  this.version = props.version;
164
+ this.systemGenerated = props.systemGenerated;
158
165
  }
159
166
  apply(existing) {
160
167
  if (!existing) {
@@ -185,6 +192,7 @@ class FriendIdAdded {
185
192
  createdBy: this.createdBy,
186
193
  streamId: (0, uuid_1.v4)(),
187
194
  version: 1,
195
+ systemGenerated: true,
188
196
  };
189
197
  }
190
198
  }
@@ -196,6 +204,7 @@ class FriendIdRemoved {
196
204
  this.createdBy = props.createdBy;
197
205
  this.streamId = props.streamId;
198
206
  this.version = props.version;
207
+ this.systemGenerated = props.systemGenerated;
199
208
  }
200
209
  apply(existing) {
201
210
  if (!existing) {
@@ -0,0 +1,25 @@
1
+ import { GroupCreated, GroupNameChanged, GroupDescriptionChanged, GroupMembersAdded, GroupMembersRemoved, GroupDeleted, GroupModel, Event } 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 GroupEventHandler {
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: Event): Promise<GroupModel>;
17
+ private ensureBidirectionalFriendship;
18
+ handleGroupCreated(event: GroupCreated): Promise<GroupModel>;
19
+ handleGroupNameChanged(event: GroupNameChanged): Promise<GroupModel>;
20
+ handleGroupDescriptionChanged(event: GroupDescriptionChanged): Promise<GroupModel>;
21
+ handleGroupMembersAdded(event: GroupMembersAdded): Promise<GroupModel>;
22
+ handleGroupMembersRemoved(event: GroupMembersRemoved): Promise<GroupModel>;
23
+ handleGroupDeleted(event: GroupDeleted): Promise<GroupModel>;
24
+ }
25
+ //# sourceMappingURL=GroupEventHandler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GroupEventHandler.d.ts","sourceRoot":"","sources":["../src/GroupEventHandler.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,YAAY,EACZ,gBAAgB,EAChB,uBAAuB,EACvB,iBAAiB,EACjB,mBAAmB,EACnB,YAAY,EACZ,UAAU,EAEV,KAAK,EACR,MAAM,GAAG,CAAC;AACX,OAAO,EAAC,eAAe,EAAC,MAAM,GAAG,CAAC;AAClC,OAAO,EAAC,gBAAgB,EAAC,MAAM,GAAG,CAAC;AACnC,OAAO,EAAC,cAAc,EAAC,MAAM,GAAG,CAAC;AACjC,OAAO,EAAC,eAAe,EAAC,MAAM,GAAG,CAAC;AAClC,OAAO,EAAC,gBAAgB,EAAC,MAAM,GAAG,CAAC;AACnC,OAAO,EAAC,oBAAoB,EAAC,MAAM,wBAAwB,CAAC;AAG5D,qBAAa,iBAAiB;IAEtB,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,KAAK,GAAG,OAAO,CAAC,UAAU,CAAC;YAiCtC,6BAA6B;IAgErC,kBAAkB,CAAC,KAAK,EAAE,YAAY,GAAG,OAAO,CAAC,UAAU,CAAC;IA+C5D,sBAAsB,CAAC,KAAK,EAAE,gBAAgB,GAAG,OAAO,CAAC,UAAU,CAAC;IA+BpE,6BAA6B,CAAC,KAAK,EAAE,uBAAuB,GAAG,OAAO,CAAC,UAAU,CAAC;IA+BlF,uBAAuB,CAAC,KAAK,EAAE,iBAAiB,GAAG,OAAO,CAAC,UAAU,CAAC;IAsEtE,yBAAyB,CAAC,KAAK,EAAE,mBAAmB,GAAG,OAAO,CAAC,UAAU,CAAC;IA+B1E,kBAAkB,CAAC,KAAK,EAAE,YAAY,GAAG,OAAO,CAAC,UAAU,CAAC;CAWrE"}