@zeeshan60/event-processor 1.0.10 → 1.0.12
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/README.md +42 -0
- package/dist/ActivityEventHandler.js +1 -1
- package/dist/ActivityLogEvents.d.ts +2 -2
- package/dist/ActivityLogEvents.d.ts.map +1 -1
- package/dist/EventProcessorSDK.d.ts +56 -0
- package/dist/EventProcessorSDK.d.ts.map +1 -0
- package/dist/EventProcessorSDK.js +80 -0
- package/dist/FriendEventHandler.d.ts +2 -2
- package/dist/FriendEventHandler.d.ts.map +1 -1
- package/dist/FriendEventHandler.js +7 -13
- package/dist/FriendEvents.d.ts +14 -21
- package/dist/FriendEvents.d.ts.map +1 -1
- package/dist/FriendEvents.js +1 -9
- package/dist/GroupEventHandler.d.ts +2 -2
- package/dist/GroupEventHandler.d.ts.map +1 -1
- package/dist/GroupEventHandler.js +10 -17
- package/dist/GroupEvents.d.ts +17 -25
- package/dist/GroupEvents.d.ts.map +1 -1
- package/dist/GroupEvents.js +1 -10
- package/dist/GroupTransactionEventHandler.d.ts +2 -2
- package/dist/GroupTransactionEventHandler.d.ts.map +1 -1
- package/dist/GroupTransactionEventHandler.js +14 -12
- package/dist/GroupTransactionEvents.d.ts +28 -39
- package/dist/GroupTransactionEvents.d.ts.map +1 -1
- package/dist/GroupTransactionEvents.js +1 -16
- package/dist/TransactionEventHandler.d.ts +2 -2
- package/dist/TransactionEventHandler.d.ts.map +1 -1
- package/dist/TransactionEventHandler.js +9 -30
- package/dist/TransactionEvents.d.ts +25 -16
- package/dist/TransactionEvents.d.ts.map +1 -1
- package/dist/TransactionEvents.js +8 -13
- package/dist/UserEventHandler.d.ts.map +1 -1
- package/dist/UserEventHandler.js +2 -5
- package/dist/UserEvents.d.ts +25 -35
- package/dist/UserEvents.d.ts.map +1 -1
- package/dist/UserEvents.js +1 -22
- package/dist/__tests__/test-helpers/IMActivityLogEventStore.d.ts +3 -3
- package/dist/__tests__/test-helpers/IMActivityLogEventStore.d.ts.map +1 -1
- package/dist/__tests__/test-helpers/IMActivityLogEventStore.js +1 -1
- package/dist/__tests__/test-helpers/IMFriendEventStore.d.ts +3 -3
- package/dist/__tests__/test-helpers/IMFriendEventStore.d.ts.map +1 -1
- package/dist/__tests__/test-helpers/IMFriendEventStore.js +1 -1
- package/dist/__tests__/test-helpers/IMGroupEventStore.d.ts +3 -3
- package/dist/__tests__/test-helpers/IMGroupEventStore.d.ts.map +1 -1
- package/dist/__tests__/test-helpers/IMGroupEventStore.js +1 -1
- package/dist/__tests__/test-helpers/IMGroupTransactionEventStore.d.ts +3 -3
- package/dist/__tests__/test-helpers/IMGroupTransactionEventStore.d.ts.map +1 -1
- package/dist/__tests__/test-helpers/IMGroupTransactionEventStore.js +3 -3
- package/dist/__tests__/test-helpers/IMTransactionEventStore.d.ts +4 -4
- package/dist/__tests__/test-helpers/IMTransactionEventStore.d.ts.map +1 -1
- package/dist/__tests__/test-helpers/IMTransactionEventStore.js +1 -1
- package/dist/__tests__/test-helpers/IMUserEventStore.d.ts +4 -4
- package/dist/__tests__/test-helpers/IMUserEventStore.d.ts.map +1 -1
- package/dist/__tests__/test-helpers/IMUserEventStore.js +1 -1
- package/dist/__tests__/test-helpers/MockFirebaseAdapter.d.ts +6 -0
- package/dist/__tests__/test-helpers/MockFirebaseAdapter.d.ts.map +1 -0
- package/dist/__tests__/test-helpers/MockFirebaseAdapter.js +18 -0
- package/dist/adapters/FirebaseAdapter.d.ts +5 -0
- package/dist/adapters/FirebaseAdapter.d.ts.map +1 -0
- package/dist/adapters/FirebaseAdapter.js +2 -0
- package/dist/adapters/FirebaseAdminAdapter.d.ts +8 -0
- package/dist/adapters/FirebaseAdminAdapter.d.ts.map +1 -0
- package/dist/adapters/FirebaseAdminAdapter.js +21 -0
- package/dist/adapters/FirebaseClientAdapter.d.ts +8 -0
- package/dist/adapters/FirebaseClientAdapter.d.ts.map +1 -0
- package/dist/adapters/FirebaseClientAdapter.js +22 -0
- package/dist/client/controllers/UserController.d.ts +9 -0
- package/dist/client/controllers/UserController.d.ts.map +1 -0
- package/dist/client/controllers/UserController.js +36 -0
- package/dist/client/handlers/UIActivityEventHandler.d.ts +12 -0
- package/dist/client/handlers/UIActivityEventHandler.d.ts.map +1 -0
- package/dist/client/handlers/UIActivityEventHandler.js +14 -0
- package/dist/client/handlers/UIEventHandler.d.ts +25 -0
- package/dist/client/handlers/UIEventHandler.d.ts.map +1 -0
- package/dist/client/handlers/UIEventHandler.js +50 -0
- package/dist/client/handlers/UIFriendEventHandler.d.ts +16 -0
- package/dist/client/handlers/UIFriendEventHandler.d.ts.map +1 -0
- package/dist/client/handlers/UIFriendEventHandler.js +27 -0
- package/dist/client/handlers/UIGroupEventHandler.d.ts +18 -0
- package/dist/client/handlers/UIGroupEventHandler.d.ts.map +1 -0
- package/dist/client/handlers/UIGroupEventHandler.js +28 -0
- package/dist/client/handlers/UIGroupTransactionEventHandler.d.ts +18 -0
- package/dist/client/handlers/UIGroupTransactionEventHandler.d.ts.map +1 -0
- package/dist/client/handlers/UIGroupTransactionEventHandler.js +28 -0
- package/dist/client/handlers/UITransactionEventHandler.d.ts +14 -0
- package/dist/client/handlers/UITransactionEventHandler.d.ts.map +1 -0
- package/dist/client/handlers/UITransactionEventHandler.js +26 -0
- package/dist/client/handlers/UIUserEventHandler.d.ts +12 -0
- package/dist/client/handlers/UIUserEventHandler.d.ts.map +1 -0
- package/dist/client/handlers/UIUserEventHandler.js +29 -0
- package/dist/common/DomainEvents.d.ts +87 -0
- package/dist/common/DomainEvents.d.ts.map +1 -0
- package/dist/common/DomainEvents.js +91 -0
- package/dist/common/Event.d.ts +1 -0
- package/dist/common/Event.d.ts.map +1 -1
- package/dist/contracts/common/index.d.ts +7 -0
- package/dist/contracts/common/index.d.ts.map +1 -0
- package/dist/contracts/common/index.js +2 -0
- package/dist/contracts/expenses/index.d.ts +148 -0
- package/dist/contracts/expenses/index.d.ts.map +1 -0
- package/dist/contracts/expenses/index.js +30 -0
- package/dist/contracts/friends/index.d.ts +82 -0
- package/dist/contracts/friends/index.d.ts.map +1 -0
- package/dist/contracts/friends/index.js +2 -0
- package/dist/contracts/groups/index.d.ts +139 -0
- package/dist/contracts/groups/index.d.ts.map +1 -0
- package/dist/contracts/groups/index.js +2 -0
- package/dist/contracts/index.d.ts +7 -0
- package/dist/contracts/index.d.ts.map +1 -0
- package/dist/contracts/index.js +22 -0
- package/dist/contracts/shared/index.d.ts +12 -0
- package/dist/contracts/shared/index.d.ts.map +1 -0
- package/dist/contracts/shared/index.js +2 -0
- package/dist/contracts/transactions/index.d.ts +154 -0
- package/dist/contracts/transactions/index.d.ts.map +1 -0
- package/dist/contracts/transactions/index.js +19 -0
- package/dist/converters/eventConverter.d.ts +17 -0
- package/dist/converters/eventConverter.d.ts.map +1 -0
- package/dist/converters/eventConverter.js +344 -0
- package/dist/events.d.ts +0 -1
- package/dist/events.d.ts.map +1 -1
- package/dist/events.js +1 -11
- package/dist/index.d.ts +14 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +48 -3
- package/dist/store/ActivityLogEventStore.d.ts +2 -2
- package/dist/store/ActivityLogEventStore.d.ts.map +1 -1
- package/dist/store/FriendEventStore.d.ts +2 -2
- package/dist/store/FriendEventStore.d.ts.map +1 -1
- package/dist/store/GroupEventStore.d.ts +2 -2
- package/dist/store/GroupEventStore.d.ts.map +1 -1
- package/dist/store/GroupTransactionEventStore.d.ts +2 -2
- package/dist/store/GroupTransactionEventStore.d.ts.map +1 -1
- package/dist/store/TransactionEventStore.d.ts +2 -2
- package/dist/store/TransactionEventStore.d.ts.map +1 -1
- package/dist/store/UserEventStore.d.ts +2 -2
- package/dist/store/UserEventStore.d.ts.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -27,6 +27,47 @@ This package is used internally within the monorepo. Reference it in your projec
|
|
|
27
27
|
|
|
28
28
|
## Usage
|
|
29
29
|
|
|
30
|
+
### SDK Initialization (Recommended)
|
|
31
|
+
|
|
32
|
+
The event-processor SDK provides a centralized way to initialize all store implementations at once:
|
|
33
|
+
|
|
34
|
+
```typescript
|
|
35
|
+
import {
|
|
36
|
+
initializeSDK,
|
|
37
|
+
getUserController,
|
|
38
|
+
getUIEventHandler,
|
|
39
|
+
StoreConfig
|
|
40
|
+
} from '@zeeshan60/event-processor';
|
|
41
|
+
import { MyUserModelStore } from './stores/MyUserModelStore';
|
|
42
|
+
import { MyUserEventStore } from './stores/MyUserEventStore';
|
|
43
|
+
|
|
44
|
+
// Initialize SDK once at app startup with ALL required stores
|
|
45
|
+
const sdk = initializeSDK({
|
|
46
|
+
userModelStore: new MyUserModelStore(),
|
|
47
|
+
userEventStore: new MyUserEventStore(),
|
|
48
|
+
friendModelStore: new MyFriendModelStore(),
|
|
49
|
+
friendEventStore: new MyFriendEventStore(),
|
|
50
|
+
transactionModelStore: new MyTransactionModelStore(),
|
|
51
|
+
transactionEventStore: new MyTransactionEventStore(),
|
|
52
|
+
groupModelStore: new MyGroupModelStore(),
|
|
53
|
+
groupEventStore: new MyGroupEventStore(),
|
|
54
|
+
groupTransactionModelStore: new MyGroupTransactionModelStore(),
|
|
55
|
+
groupTransactionEventStore: new MyGroupTransactionEventStore(),
|
|
56
|
+
activityLogModelStore: new MyActivityLogModelStore(),
|
|
57
|
+
activityLogEventStore: new MyActivityLogEventStore(),
|
|
58
|
+
});
|
|
59
|
+
|
|
60
|
+
// Use controllers anywhere in your app
|
|
61
|
+
const userController = getUserController();
|
|
62
|
+
const userId = await userController.loginUser(firebaseUid);
|
|
63
|
+
|
|
64
|
+
// Handle UI events
|
|
65
|
+
const uiEventHandler = getUIEventHandler();
|
|
66
|
+
await uiEventHandler.handleFirestoreEvent(eventData);
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
For detailed SDK usage, see [SDK_USAGE.md](./SDK_USAGE.md).
|
|
70
|
+
|
|
30
71
|
### Basic Event Sourcing
|
|
31
72
|
|
|
32
73
|
```typescript
|
|
@@ -101,6 +142,7 @@ For detailed environment configuration, see [ENVIRONMENT_CONFIG.md](./ENVIRONMEN
|
|
|
101
142
|
|
|
102
143
|
### 📚 Essential Reading
|
|
103
144
|
|
|
145
|
+
- **[SDK_USAGE.md](./SDK_USAGE.md)** - 📦 Complete SDK initialization guide with examples and best practices
|
|
104
146
|
- **[DUAL_CONTEXT_FLOW.md](./DUAL_CONTEXT_FLOW.md)** - 🎯 **START HERE!** Comprehensive guide explaining how the package operates in client vs Google Cloud Functions contexts, complete with diagrams and examples
|
|
105
147
|
- **[QUICK_REFERENCE.md](./QUICK_REFERENCE.md)** - Quick reference cheat sheet for common patterns, troubleshooting, and best practices
|
|
106
148
|
- **[ENVIRONMENT_CONFIG.md](./ENVIRONMENT_CONFIG.md)** - Environment configuration details
|
|
@@ -28,7 +28,7 @@ class ActivityEventHandler {
|
|
|
28
28
|
}
|
|
29
29
|
const activityLogEvent = new _1.ActivityLogCreated(activityLogProps);
|
|
30
30
|
const activityLogModel = activityLogEvent.apply();
|
|
31
|
-
await this.activityLogEventStore.addEvent(
|
|
31
|
+
await this.activityLogEventStore.addEvent(activityLogEvent);
|
|
32
32
|
await this.activityLogModelStore.save(activityLogModel);
|
|
33
33
|
}
|
|
34
34
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { ActivityLogEvent } from './common/DomainEvents';
|
|
2
2
|
import { Model } from './common/Model';
|
|
3
3
|
export declare enum SourceType {
|
|
4
4
|
Transaction = "Transaction",
|
|
@@ -27,7 +27,7 @@ export interface ActivityLogCreatedProps {
|
|
|
27
27
|
version: number;
|
|
28
28
|
systemGenerated: boolean;
|
|
29
29
|
}
|
|
30
|
-
export declare class ActivityLogCreated implements
|
|
30
|
+
export declare class ActivityLogCreated implements ActivityLogEvent {
|
|
31
31
|
userId: string;
|
|
32
32
|
activityByUid: string;
|
|
33
33
|
sourceStreamId: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ActivityLogEvents.d.ts","sourceRoot":"","sources":["../src/ActivityLogEvents.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ActivityLogEvents.d.ts","sourceRoot":"","sources":["../src/ActivityLogEvents.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,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,gBAAgB;IAClD,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"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { UserModelStore } from './store/UserModelStore';
|
|
2
|
+
import { UserEventStore } from './store/UserEventStore';
|
|
3
|
+
import { FriendModelStore } from './store/FriendModelStore';
|
|
4
|
+
import { FriendEventStore } from './store/FriendEventStore';
|
|
5
|
+
import { TransactionModelStore } from './store/TransactionModelStore';
|
|
6
|
+
import { TransactionEventStore } from './store/TransactionEventStore';
|
|
7
|
+
import { GroupModelStore } from './store/GroupModelStore';
|
|
8
|
+
import { GroupEventStore } from './store/GroupEventStore';
|
|
9
|
+
import { GroupTransactionModelStore } from './store/GroupTransactionModelStore';
|
|
10
|
+
import { GroupTransactionEventStore } from './store/GroupTransactionEventStore';
|
|
11
|
+
import { ActivityLogModelStore } from './store/ActivityLogModelStore';
|
|
12
|
+
import { ActivityLogEventStore } from './store/ActivityLogEventStore';
|
|
13
|
+
import { UserController } from './client/controllers/UserController';
|
|
14
|
+
import { UIEventHandler } from './client/handlers/UIEventHandler';
|
|
15
|
+
import { FirebaseAdapter } from './adapters/FirebaseAdapter';
|
|
16
|
+
import type { Event } from './events';
|
|
17
|
+
import type { FirestoreEventData } from './converters/eventConverter';
|
|
18
|
+
export type StoreConfig = {
|
|
19
|
+
firebaseAdapter: FirebaseAdapter;
|
|
20
|
+
userModelStore: UserModelStore;
|
|
21
|
+
userEventStore: UserEventStore;
|
|
22
|
+
friendModelStore: FriendModelStore;
|
|
23
|
+
friendEventStore: FriendEventStore;
|
|
24
|
+
transactionModelStore: TransactionModelStore;
|
|
25
|
+
transactionEventStore: TransactionEventStore;
|
|
26
|
+
groupModelStore: GroupModelStore;
|
|
27
|
+
groupEventStore: GroupEventStore;
|
|
28
|
+
groupTransactionModelStore: GroupTransactionModelStore;
|
|
29
|
+
groupTransactionEventStore: GroupTransactionEventStore;
|
|
30
|
+
activityLogModelStore: ActivityLogModelStore;
|
|
31
|
+
activityLogEventStore: ActivityLogEventStore;
|
|
32
|
+
};
|
|
33
|
+
export declare class EventProcessorSDK {
|
|
34
|
+
private static instance;
|
|
35
|
+
private readonly storeConfig;
|
|
36
|
+
private userControllerInstance;
|
|
37
|
+
private uiEventHandlerInstance;
|
|
38
|
+
private constructor();
|
|
39
|
+
static initialize(config: StoreConfig): EventProcessorSDK;
|
|
40
|
+
static getInstance(): EventProcessorSDK;
|
|
41
|
+
static isInitialized(): boolean;
|
|
42
|
+
static __resetForTesting(): void;
|
|
43
|
+
getStoreConfig(): StoreConfig;
|
|
44
|
+
getUserController(): UserController;
|
|
45
|
+
getUIEventHandler(): UIEventHandler;
|
|
46
|
+
getFirebaseAdapter(): FirebaseAdapter;
|
|
47
|
+
}
|
|
48
|
+
export declare function initializeSDK(config: StoreConfig): EventProcessorSDK;
|
|
49
|
+
export declare function getUserController(): UserController;
|
|
50
|
+
export declare function getUIEventHandler(): UIEventHandler;
|
|
51
|
+
export declare function getFirebaseAdapter(): FirebaseAdapter;
|
|
52
|
+
export declare function eventToFirestore(event: Event, eventId: string): FirestoreEventData;
|
|
53
|
+
export declare function firestoreToEvent(data: FirestoreEventData): Event;
|
|
54
|
+
export declare function isSDKInitialized(): boolean;
|
|
55
|
+
export declare function __resetSDKForTesting(): void;
|
|
56
|
+
//# sourceMappingURL=EventProcessorSDK.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EventProcessorSDK.d.ts","sourceRoot":"","sources":["../src/EventProcessorSDK.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,cAAc,EAAC,MAAM,wBAAwB,CAAC;AACtD,OAAO,EAAC,cAAc,EAAC,MAAM,wBAAwB,CAAC;AACtD,OAAO,EAAC,gBAAgB,EAAC,MAAM,0BAA0B,CAAC;AAC1D,OAAO,EAAC,gBAAgB,EAAC,MAAM,0BAA0B,CAAC;AAC1D,OAAO,EAAC,qBAAqB,EAAC,MAAM,+BAA+B,CAAC;AACpE,OAAO,EAAC,qBAAqB,EAAC,MAAM,+BAA+B,CAAC;AACpE,OAAO,EAAC,eAAe,EAAC,MAAM,yBAAyB,CAAC;AACxD,OAAO,EAAC,eAAe,EAAC,MAAM,yBAAyB,CAAC;AACxD,OAAO,EAAC,0BAA0B,EAAC,MAAM,oCAAoC,CAAC;AAC9E,OAAO,EAAC,0BAA0B,EAAC,MAAM,oCAAoC,CAAC;AAC9E,OAAO,EAAC,qBAAqB,EAAC,MAAM,+BAA+B,CAAC;AACpE,OAAO,EAAC,qBAAqB,EAAC,MAAM,+BAA+B,CAAC;AACpE,OAAO,EAAC,cAAc,EAAC,MAAM,qCAAqC,CAAC;AACnE,OAAO,EAAC,cAAc,EAAC,MAAM,kCAAkC,CAAC;AAChE,OAAO,EAAC,eAAe,EAAC,MAAM,4BAA4B,CAAC;AAK3D,OAAO,KAAK,EAAC,KAAK,EAAC,MAAM,UAAU,CAAC;AACpC,OAAO,KAAK,EAAC,kBAAkB,EAAC,MAAM,6BAA6B,CAAC;AAEpE,MAAM,MAAM,WAAW,GAAG;IACtB,eAAe,EAAE,eAAe,CAAC;IACjC,cAAc,EAAE,cAAc,CAAC;IAC/B,cAAc,EAAE,cAAc,CAAC;IAC/B,gBAAgB,EAAE,gBAAgB,CAAC;IACnC,gBAAgB,EAAE,gBAAgB,CAAC;IACnC,qBAAqB,EAAE,qBAAqB,CAAC;IAC7C,qBAAqB,EAAE,qBAAqB,CAAC;IAC7C,eAAe,EAAE,eAAe,CAAC;IACjC,eAAe,EAAE,eAAe,CAAC;IACjC,0BAA0B,EAAE,0BAA0B,CAAC;IACvD,0BAA0B,EAAE,0BAA0B,CAAC;IACvD,qBAAqB,EAAE,qBAAqB,CAAC;IAC7C,qBAAqB,EAAE,qBAAqB,CAAC;CAChD,CAAC;AAEF,qBAAa,iBAAiB;IAC1B,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAgC;IACvD,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAc;IAC1C,OAAO,CAAC,sBAAsB,CAA6B;IAC3D,OAAO,CAAC,sBAAsB,CAA6B;IAE3D,OAAO;IAIP,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,WAAW,GAAG,iBAAiB;IAKzD,MAAM,CAAC,WAAW,IAAI,iBAAiB;IAOvC,MAAM,CAAC,aAAa,IAAI,OAAO;IAI/B,MAAM,CAAC,iBAAiB,IAAI,IAAI;IAIhC,cAAc,IAAI,WAAW;IAI7B,iBAAiB,IAAI,cAAc;IAWnC,iBAAiB,IAAI,cAAc;IAUnC,kBAAkB,IAAI,eAAe;CAGxC;AAED,wBAAgB,aAAa,CAAC,MAAM,EAAE,WAAW,GAAG,iBAAiB,CAEpE;AAED,wBAAgB,iBAAiB,IAAI,cAAc,CAElD;AAED,wBAAgB,iBAAiB,IAAI,cAAc,CAElD;AAED,wBAAgB,kBAAkB,IAAI,eAAe,CAEpD;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,GAAG,kBAAkB,CAGlF;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,kBAAkB,GAAG,KAAK,CAGhE;AAED,wBAAgB,gBAAgB,IAAI,OAAO,CAE1C;AAED,wBAAgB,oBAAoB,IAAI,IAAI,CAE3C"}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.EventProcessorSDK = void 0;
|
|
4
|
+
exports.initializeSDK = initializeSDK;
|
|
5
|
+
exports.getUserController = getUserController;
|
|
6
|
+
exports.getUIEventHandler = getUIEventHandler;
|
|
7
|
+
exports.getFirebaseAdapter = getFirebaseAdapter;
|
|
8
|
+
exports.eventToFirestore = eventToFirestore;
|
|
9
|
+
exports.firestoreToEvent = firestoreToEvent;
|
|
10
|
+
exports.isSDKInitialized = isSDKInitialized;
|
|
11
|
+
exports.__resetSDKForTesting = __resetSDKForTesting;
|
|
12
|
+
const UserController_1 = require("./client/controllers/UserController");
|
|
13
|
+
const UIEventHandler_1 = require("./client/handlers/UIEventHandler");
|
|
14
|
+
const eventConverter_1 = require("./converters/eventConverter");
|
|
15
|
+
class EventProcessorSDK {
|
|
16
|
+
constructor(config) {
|
|
17
|
+
this.storeConfig = config;
|
|
18
|
+
}
|
|
19
|
+
static initialize(config) {
|
|
20
|
+
EventProcessorSDK.instance = new EventProcessorSDK(config);
|
|
21
|
+
return EventProcessorSDK.instance;
|
|
22
|
+
}
|
|
23
|
+
static getInstance() {
|
|
24
|
+
if (!EventProcessorSDK.instance) {
|
|
25
|
+
throw new Error('EventProcessorSDK not initialized. Call EventProcessorSDK.initialize() first.');
|
|
26
|
+
}
|
|
27
|
+
return EventProcessorSDK.instance;
|
|
28
|
+
}
|
|
29
|
+
static isInitialized() {
|
|
30
|
+
return EventProcessorSDK.instance !== undefined;
|
|
31
|
+
}
|
|
32
|
+
static __resetForTesting() {
|
|
33
|
+
EventProcessorSDK.instance = undefined;
|
|
34
|
+
}
|
|
35
|
+
getStoreConfig() {
|
|
36
|
+
return this.storeConfig;
|
|
37
|
+
}
|
|
38
|
+
getUserController() {
|
|
39
|
+
if (!this.userControllerInstance) {
|
|
40
|
+
this.userControllerInstance = new UserController_1.UserController(this.storeConfig.userModelStore, this.storeConfig.userEventStore);
|
|
41
|
+
}
|
|
42
|
+
return this.userControllerInstance;
|
|
43
|
+
}
|
|
44
|
+
getUIEventHandler() {
|
|
45
|
+
if (!this.uiEventHandlerInstance) {
|
|
46
|
+
this.uiEventHandlerInstance = new UIEventHandler_1.UIEventHandler(this.storeConfig.userModelStore);
|
|
47
|
+
}
|
|
48
|
+
return this.uiEventHandlerInstance;
|
|
49
|
+
}
|
|
50
|
+
getFirebaseAdapter() {
|
|
51
|
+
return this.storeConfig.firebaseAdapter;
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
exports.EventProcessorSDK = EventProcessorSDK;
|
|
55
|
+
function initializeSDK(config) {
|
|
56
|
+
return EventProcessorSDK.initialize(config);
|
|
57
|
+
}
|
|
58
|
+
function getUserController() {
|
|
59
|
+
return EventProcessorSDK.getInstance().getUserController();
|
|
60
|
+
}
|
|
61
|
+
function getUIEventHandler() {
|
|
62
|
+
return EventProcessorSDK.getInstance().getUIEventHandler();
|
|
63
|
+
}
|
|
64
|
+
function getFirebaseAdapter() {
|
|
65
|
+
return EventProcessorSDK.getInstance().getFirebaseAdapter();
|
|
66
|
+
}
|
|
67
|
+
function eventToFirestore(event, eventId) {
|
|
68
|
+
const adapter = getFirebaseAdapter();
|
|
69
|
+
return (0, eventConverter_1.eventToFirestore)(event, eventId, adapter);
|
|
70
|
+
}
|
|
71
|
+
function firestoreToEvent(data) {
|
|
72
|
+
const adapter = getFirebaseAdapter();
|
|
73
|
+
return (0, eventConverter_1.firestoreToEvent)(data, adapter);
|
|
74
|
+
}
|
|
75
|
+
function isSDKInitialized() {
|
|
76
|
+
return EventProcessorSDK.isInitialized();
|
|
77
|
+
}
|
|
78
|
+
function __resetSDKForTesting() {
|
|
79
|
+
EventProcessorSDK.__resetForTesting();
|
|
80
|
+
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { FriendCreated, FriendDeleted, FriendIdAdded, FriendIdRemoved, FriendModel, FriendUpdated,
|
|
1
|
+
import { FriendCreated, FriendDeleted, FriendIdAdded, FriendIdRemoved, FriendModel, FriendUpdated, FriendEvent } from '.';
|
|
2
2
|
import { FriendModelStore } from '.';
|
|
3
3
|
import { UserModelStore } from '.';
|
|
4
4
|
import { FriendEventStore } from '.';
|
|
@@ -11,7 +11,7 @@ export declare class FriendEventHandler {
|
|
|
11
11
|
private userEventStore;
|
|
12
12
|
private activityEventHandler?;
|
|
13
13
|
constructor(modelStore: FriendModelStore, userModelStore: UserModelStore, friendEventStore: FriendEventStore, userEventStore: UserEventStore, activityEventHandler?: ActivityEventHandler | undefined);
|
|
14
|
-
handleEvent(event:
|
|
14
|
+
handleEvent(event: FriendEvent): Promise<FriendModel>;
|
|
15
15
|
handleFriendCreated(event: FriendCreated): Promise<FriendModel>;
|
|
16
16
|
handleFriendUpdated(event: FriendUpdated): Promise<FriendModel>;
|
|
17
17
|
handleFriendDeleted(event: FriendDeleted): Promise<FriendModel>;
|
|
@@ -1 +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,
|
|
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,WAAW,EACd,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;AAI5D,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,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;IAsBrD,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"}
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.FriendEventHandler = void 0;
|
|
4
4
|
const _1 = require(".");
|
|
5
|
+
const DomainEvents_1 = require("./common/DomainEvents");
|
|
5
6
|
const uuid_1 = require("uuid");
|
|
6
7
|
class FriendEventHandler {
|
|
7
8
|
constructor(modelStore, userModelStore, friendEventStore, userEventStore, activityEventHandler) {
|
|
@@ -12,15 +13,8 @@ class FriendEventHandler {
|
|
|
12
13
|
this.activityEventHandler = activityEventHandler;
|
|
13
14
|
}
|
|
14
15
|
async handleEvent(event) {
|
|
15
|
-
const validEventTypes = [
|
|
16
|
-
'FriendCreated',
|
|
17
|
-
'FriendUpdated',
|
|
18
|
-
'FriendDeleted',
|
|
19
|
-
'FriendIdAdded',
|
|
20
|
-
'FriendIdRemoved'
|
|
21
|
-
];
|
|
22
16
|
const eventType = event.constructor.name;
|
|
23
|
-
if (!
|
|
17
|
+
if (!(0, DomainEvents_1.isValidFriendEventType)(eventType)) {
|
|
24
18
|
throw new Error(`Unknown friend event type: ${eventType}`);
|
|
25
19
|
}
|
|
26
20
|
switch (eventType) {
|
|
@@ -62,7 +56,7 @@ class FriendEventHandler {
|
|
|
62
56
|
version: updatedModel.version + 1,
|
|
63
57
|
systemGenerated: true,
|
|
64
58
|
});
|
|
65
|
-
await this.friendEventStore.addEvent(
|
|
59
|
+
await this.friendEventStore.addEvent(friendIdAddedEvent);
|
|
66
60
|
const modelWithFriendId = friendIdAddedEvent.apply(updatedModel);
|
|
67
61
|
await this.modelStore.save(modelWithFriendId);
|
|
68
62
|
const primaryUser = await this.userModelStore.getByStreamIdWhereDeletedIsFalse(event.userId);
|
|
@@ -80,7 +74,7 @@ class FriendEventHandler {
|
|
|
80
74
|
version: 1,
|
|
81
75
|
systemGenerated: true,
|
|
82
76
|
});
|
|
83
|
-
await this.friendEventStore.addEvent(
|
|
77
|
+
await this.friendEventStore.addEvent(reciprocalFriendCreated);
|
|
84
78
|
const reciprocalModel = reciprocalFriendCreated.apply(undefined);
|
|
85
79
|
await this.modelStore.save(reciprocalModel);
|
|
86
80
|
}
|
|
@@ -100,7 +94,7 @@ class FriendEventHandler {
|
|
|
100
94
|
version: 1,
|
|
101
95
|
systemGenerated: true,
|
|
102
96
|
});
|
|
103
|
-
await this.userEventStore.addEvent(
|
|
97
|
+
await this.userEventStore.addEvent(placeholderUserCreated);
|
|
104
98
|
const placeholderUser = placeholderUserCreated.apply(undefined);
|
|
105
99
|
await this.userModelStore.save(placeholderUser);
|
|
106
100
|
// Link primary user to placeholder
|
|
@@ -113,7 +107,7 @@ class FriendEventHandler {
|
|
|
113
107
|
version: updatedModel.version + 1,
|
|
114
108
|
systemGenerated: true,
|
|
115
109
|
});
|
|
116
|
-
await this.friendEventStore.addEvent(
|
|
110
|
+
await this.friendEventStore.addEvent(friendIdAddedEvent);
|
|
117
111
|
const modelWithPlaceholderId = friendIdAddedEvent.apply(updatedModel);
|
|
118
112
|
await this.modelStore.save(modelWithPlaceholderId);
|
|
119
113
|
// Create reciprocal friendship for placeholder user
|
|
@@ -133,7 +127,7 @@ class FriendEventHandler {
|
|
|
133
127
|
version: 1,
|
|
134
128
|
systemGenerated: true,
|
|
135
129
|
});
|
|
136
|
-
await this.friendEventStore.addEvent(
|
|
130
|
+
await this.friendEventStore.addEvent(reciprocalFriendCreated);
|
|
137
131
|
const reciprocalModel = reciprocalFriendCreated.apply(undefined);
|
|
138
132
|
await this.modelStore.save(reciprocalModel);
|
|
139
133
|
}
|
package/dist/FriendEvents.d.ts
CHANGED
|
@@ -1,13 +1,6 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { FriendEvent } from './common/DomainEvents';
|
|
2
2
|
import { Model } from './common/Model';
|
|
3
3
|
import { ActivityLogCreatedProps } from './ActivityLogEvents';
|
|
4
|
-
export declare enum FriendEventType {
|
|
5
|
-
FRIEND_CREATED = "FRIEND_CREATED",
|
|
6
|
-
FRIEND_UPDATED = "FRIEND_UPDATED",
|
|
7
|
-
FRIEND_DELETED = "FRIEND_DELETED",
|
|
8
|
-
FRIEND_ID_ADDED = "FRIEND_ID_ADDED",
|
|
9
|
-
FRIEND_ID_REMOVED = "FRIEND_ID_REMOVED"
|
|
10
|
-
}
|
|
11
4
|
export interface FriendModel extends Model {
|
|
12
5
|
friendId?: string;
|
|
13
6
|
friendEmail?: string;
|
|
@@ -30,7 +23,7 @@ export interface FriendCreatedProps {
|
|
|
30
23
|
version: number;
|
|
31
24
|
systemGenerated: boolean;
|
|
32
25
|
}
|
|
33
|
-
export declare class FriendCreated implements
|
|
26
|
+
export declare class FriendCreated implements FriendEvent {
|
|
34
27
|
userId: string;
|
|
35
28
|
friendEmail?: string;
|
|
36
29
|
friendPhoneNumber?: string;
|
|
@@ -47,7 +40,7 @@ export declare class FriendCreated implements Event {
|
|
|
47
40
|
activityLog(_existing?: Model, actorName?: string): ActivityLogCreatedProps | undefined;
|
|
48
41
|
}
|
|
49
42
|
export interface FriendUpdatedProps {
|
|
50
|
-
userId
|
|
43
|
+
userId: string;
|
|
51
44
|
friendEmail?: string;
|
|
52
45
|
friendPhoneNumber?: string;
|
|
53
46
|
friendDisplayName?: string;
|
|
@@ -57,8 +50,8 @@ export interface FriendUpdatedProps {
|
|
|
57
50
|
version: number;
|
|
58
51
|
systemGenerated: boolean;
|
|
59
52
|
}
|
|
60
|
-
export declare class FriendUpdated implements
|
|
61
|
-
userId
|
|
53
|
+
export declare class FriendUpdated implements FriendEvent {
|
|
54
|
+
userId: string;
|
|
62
55
|
friendEmail?: string;
|
|
63
56
|
friendPhoneNumber?: string;
|
|
64
57
|
friendDisplayName?: string;
|
|
@@ -72,15 +65,15 @@ export declare class FriendUpdated implements Event {
|
|
|
72
65
|
activityLog(existing?: Model, actorName?: string): ActivityLogCreatedProps | undefined;
|
|
73
66
|
}
|
|
74
67
|
export interface FriendDeletedProps {
|
|
75
|
-
userId
|
|
68
|
+
userId: string;
|
|
76
69
|
createdAt: Date;
|
|
77
70
|
createdBy: string;
|
|
78
71
|
streamId: string;
|
|
79
72
|
version: number;
|
|
80
73
|
systemGenerated: boolean;
|
|
81
74
|
}
|
|
82
|
-
export declare class FriendDeleted implements
|
|
83
|
-
userId
|
|
75
|
+
export declare class FriendDeleted implements FriendEvent {
|
|
76
|
+
userId: string;
|
|
84
77
|
createdAt: Date;
|
|
85
78
|
createdBy: string;
|
|
86
79
|
streamId: string;
|
|
@@ -91,7 +84,7 @@ export declare class FriendDeleted implements Event {
|
|
|
91
84
|
activityLog(existing?: Model, actorName?: string): ActivityLogCreatedProps | undefined;
|
|
92
85
|
}
|
|
93
86
|
export interface FriendIdAddedProps {
|
|
94
|
-
userId
|
|
87
|
+
userId: string;
|
|
95
88
|
friendId: string;
|
|
96
89
|
createdAt: Date;
|
|
97
90
|
createdBy: string;
|
|
@@ -99,8 +92,8 @@ export interface FriendIdAddedProps {
|
|
|
99
92
|
version: number;
|
|
100
93
|
systemGenerated: boolean;
|
|
101
94
|
}
|
|
102
|
-
export declare class FriendIdAdded implements
|
|
103
|
-
userId
|
|
95
|
+
export declare class FriendIdAdded implements FriendEvent {
|
|
96
|
+
userId: string;
|
|
104
97
|
friendId: string;
|
|
105
98
|
createdAt: Date;
|
|
106
99
|
createdBy: string;
|
|
@@ -112,15 +105,15 @@ export declare class FriendIdAdded implements Event {
|
|
|
112
105
|
activityLog(existing?: Model, _actorName?: string): ActivityLogCreatedProps | undefined;
|
|
113
106
|
}
|
|
114
107
|
export interface FriendIdRemovedProps {
|
|
115
|
-
userId
|
|
108
|
+
userId: string;
|
|
116
109
|
createdAt: Date;
|
|
117
110
|
createdBy: string;
|
|
118
111
|
streamId: string;
|
|
119
112
|
version: number;
|
|
120
113
|
systemGenerated: boolean;
|
|
121
114
|
}
|
|
122
|
-
export declare class FriendIdRemoved implements
|
|
123
|
-
userId
|
|
115
|
+
export declare class FriendIdRemoved implements FriendEvent {
|
|
116
|
+
userId: string;
|
|
124
117
|
createdAt: Date;
|
|
125
118
|
createdBy: string;
|
|
126
119
|
streamId: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FriendEvents.d.ts","sourceRoot":"","sources":["../src/FriendEvents.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"FriendEvents.d.ts","sourceRoot":"","sources":["../src/FriendEvents.ts"],"names":[],"mappings":"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"}
|
package/dist/FriendEvents.js
CHANGED
|
@@ -1,16 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.FriendIdRemoved = exports.FriendIdAdded = exports.FriendDeleted = exports.FriendUpdated = exports.FriendCreated =
|
|
3
|
+
exports.FriendIdRemoved = exports.FriendIdAdded = exports.FriendDeleted = exports.FriendUpdated = exports.FriendCreated = void 0;
|
|
4
4
|
const ActivityLogEvents_1 = require("./ActivityLogEvents");
|
|
5
5
|
const uuid_1 = require("uuid");
|
|
6
|
-
var FriendEventType;
|
|
7
|
-
(function (FriendEventType) {
|
|
8
|
-
FriendEventType["FRIEND_CREATED"] = "FRIEND_CREATED";
|
|
9
|
-
FriendEventType["FRIEND_UPDATED"] = "FRIEND_UPDATED";
|
|
10
|
-
FriendEventType["FRIEND_DELETED"] = "FRIEND_DELETED";
|
|
11
|
-
FriendEventType["FRIEND_ID_ADDED"] = "FRIEND_ID_ADDED";
|
|
12
|
-
FriendEventType["FRIEND_ID_REMOVED"] = "FRIEND_ID_REMOVED";
|
|
13
|
-
})(FriendEventType || (exports.FriendEventType = FriendEventType = {}));
|
|
14
6
|
class FriendCreated {
|
|
15
7
|
constructor(props) {
|
|
16
8
|
this.userId = props.userId;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { GroupCreated, GroupNameChanged, GroupDescriptionChanged, GroupMembersAdded, GroupMembersRemoved, GroupDeleted, GroupModel,
|
|
1
|
+
import { GroupCreated, GroupNameChanged, GroupDescriptionChanged, GroupMembersAdded, GroupMembersRemoved, GroupDeleted, GroupModel, GroupEvent } from '.';
|
|
2
2
|
import { GroupModelStore } from '.';
|
|
3
3
|
import { FriendModelStore } from '.';
|
|
4
4
|
import { UserModelStore } from '.';
|
|
@@ -13,7 +13,7 @@ export declare class GroupEventHandler {
|
|
|
13
13
|
private friendEventStore;
|
|
14
14
|
private activityEventHandler?;
|
|
15
15
|
constructor(modelStore: GroupModelStore, friendModelStore: FriendModelStore, userModelStore: UserModelStore, groupEventStore: GroupEventStore, friendEventStore: FriendEventStore, activityEventHandler?: ActivityEventHandler | undefined);
|
|
16
|
-
handleEvent(event:
|
|
16
|
+
handleEvent(event: GroupEvent): Promise<GroupModel>;
|
|
17
17
|
private ensureBidirectionalFriendship;
|
|
18
18
|
handleGroupCreated(event: GroupCreated): Promise<GroupModel>;
|
|
19
19
|
handleGroupNameChanged(event: GroupNameChanged): Promise<GroupModel>;
|
|
@@ -1 +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,
|
|
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,UAAU,EACb,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;AAI5D,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,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC;YAwB3C,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"}
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.GroupEventHandler = void 0;
|
|
4
4
|
const _1 = require(".");
|
|
5
|
+
const DomainEvents_1 = require("./common/DomainEvents");
|
|
5
6
|
const uuid_1 = require("uuid");
|
|
6
7
|
class GroupEventHandler {
|
|
7
8
|
constructor(modelStore, friendModelStore, userModelStore, groupEventStore, friendEventStore, activityEventHandler) {
|
|
@@ -13,16 +14,8 @@ class GroupEventHandler {
|
|
|
13
14
|
this.activityEventHandler = activityEventHandler;
|
|
14
15
|
}
|
|
15
16
|
async handleEvent(event) {
|
|
16
|
-
const validEventTypes = [
|
|
17
|
-
'GroupCreated',
|
|
18
|
-
'GroupNameChanged',
|
|
19
|
-
'GroupDescriptionChanged',
|
|
20
|
-
'GroupMembersAdded',
|
|
21
|
-
'GroupMembersRemoved',
|
|
22
|
-
'GroupDeleted'
|
|
23
|
-
];
|
|
24
17
|
const eventType = event.constructor.name;
|
|
25
|
-
if (!
|
|
18
|
+
if (!(0, DomainEvents_1.isValidGroupEventType)(eventType)) {
|
|
26
19
|
throw new Error(`Unknown group event type: ${eventType}`);
|
|
27
20
|
}
|
|
28
21
|
switch (eventType) {
|
|
@@ -65,7 +58,7 @@ class GroupEventHandler {
|
|
|
65
58
|
version: 1,
|
|
66
59
|
systemGenerated: true,
|
|
67
60
|
});
|
|
68
|
-
await this.friendEventStore.addEvent(
|
|
61
|
+
await this.friendEventStore.addEvent(friendCreatedEvent);
|
|
69
62
|
const friendModel = friendCreatedEvent.apply(undefined);
|
|
70
63
|
await this.friendModelStore.save(friendModel);
|
|
71
64
|
}
|
|
@@ -85,7 +78,7 @@ class GroupEventHandler {
|
|
|
85
78
|
version: 1,
|
|
86
79
|
systemGenerated: true,
|
|
87
80
|
});
|
|
88
|
-
await this.friendEventStore.addEvent(
|
|
81
|
+
await this.friendEventStore.addEvent(friendCreatedEvent);
|
|
89
82
|
const friendModel = friendCreatedEvent.apply(undefined);
|
|
90
83
|
await this.friendModelStore.save(friendModel);
|
|
91
84
|
}
|
|
@@ -120,7 +113,7 @@ class GroupEventHandler {
|
|
|
120
113
|
version: 1,
|
|
121
114
|
systemGenerated: true,
|
|
122
115
|
});
|
|
123
|
-
await this.groupEventStore.addEvent(
|
|
116
|
+
await this.groupEventStore.addEvent(perspectiveGroupCreated);
|
|
124
117
|
const perspectiveModel = perspectiveGroupCreated.apply(undefined);
|
|
125
118
|
await this.modelStore.save(perspectiveModel);
|
|
126
119
|
}
|
|
@@ -145,7 +138,7 @@ class GroupEventHandler {
|
|
|
145
138
|
version: perspective.version + 1,
|
|
146
139
|
systemGenerated: true,
|
|
147
140
|
});
|
|
148
|
-
await this.groupEventStore.addEvent(
|
|
141
|
+
await this.groupEventStore.addEvent(perspectiveEvent);
|
|
149
142
|
const updatedPerspective = perspectiveEvent.apply(perspective);
|
|
150
143
|
await this.modelStore.save(updatedPerspective);
|
|
151
144
|
}
|
|
@@ -171,7 +164,7 @@ class GroupEventHandler {
|
|
|
171
164
|
version: perspective.version + 1,
|
|
172
165
|
systemGenerated: true,
|
|
173
166
|
});
|
|
174
|
-
await this.groupEventStore.addEvent(
|
|
167
|
+
await this.groupEventStore.addEvent(perspectiveEvent);
|
|
175
168
|
const updatedPerspective = perspectiveEvent.apply(perspective);
|
|
176
169
|
await this.modelStore.save(updatedPerspective);
|
|
177
170
|
}
|
|
@@ -213,7 +206,7 @@ class GroupEventHandler {
|
|
|
213
206
|
version: 1,
|
|
214
207
|
systemGenerated: true,
|
|
215
208
|
});
|
|
216
|
-
await this.groupEventStore.addEvent(
|
|
209
|
+
await this.groupEventStore.addEvent(perspectiveGroupCreated);
|
|
217
210
|
const perspectiveModel = perspectiveGroupCreated.apply(undefined);
|
|
218
211
|
await this.modelStore.save(perspectiveModel);
|
|
219
212
|
}
|
|
@@ -229,7 +222,7 @@ class GroupEventHandler {
|
|
|
229
222
|
version: perspective.version + 1,
|
|
230
223
|
systemGenerated: true,
|
|
231
224
|
});
|
|
232
|
-
await this.groupEventStore.addEvent(
|
|
225
|
+
await this.groupEventStore.addEvent(perspectiveEvent);
|
|
233
226
|
const updatedPerspective = perspectiveEvent.apply(perspective);
|
|
234
227
|
await this.modelStore.save(updatedPerspective);
|
|
235
228
|
}
|
|
@@ -255,7 +248,7 @@ class GroupEventHandler {
|
|
|
255
248
|
version: perspective.version + 1,
|
|
256
249
|
systemGenerated: true,
|
|
257
250
|
});
|
|
258
|
-
await this.groupEventStore.addEvent(
|
|
251
|
+
await this.groupEventStore.addEvent(perspectiveEvent);
|
|
259
252
|
const updatedPerspective = perspectiveEvent.apply(perspective);
|
|
260
253
|
await this.modelStore.save(updatedPerspective);
|
|
261
254
|
}
|