@zeeshan60/event-processor 1.0.115 → 1.0.116

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 (74) hide show
  1. package/dist/BudgetEventHandler.d.ts +22 -0
  2. package/dist/BudgetEventHandler.d.ts.map +1 -0
  3. package/dist/BudgetEventHandler.js +154 -0
  4. package/dist/BudgetEventHandler.js.map +1 -0
  5. package/dist/BudgetEvents.d.ts +155 -0
  6. package/dist/BudgetEvents.d.ts.map +1 -0
  7. package/dist/BudgetEvents.js +223 -0
  8. package/dist/BudgetEvents.js.map +1 -0
  9. package/dist/EventProcessorSDK.d.ts +12 -1
  10. package/dist/EventProcessorSDK.d.ts.map +1 -1
  11. package/dist/EventProcessorSDK.js +21 -0
  12. package/dist/EventProcessorSDK.js.map +1 -1
  13. package/dist/__tests__/test-helpers/IMBudgetEventStore.d.ts +11 -0
  14. package/dist/__tests__/test-helpers/IMBudgetEventStore.d.ts.map +1 -0
  15. package/dist/__tests__/test-helpers/IMBudgetEventStore.js +28 -0
  16. package/dist/__tests__/test-helpers/IMBudgetEventStore.js.map +1 -0
  17. package/dist/__tests__/test-helpers/IMBudgetModelStore.d.ts +19 -0
  18. package/dist/__tests__/test-helpers/IMBudgetModelStore.d.ts.map +1 -0
  19. package/dist/__tests__/test-helpers/IMBudgetModelStore.js +102 -0
  20. package/dist/__tests__/test-helpers/IMBudgetModelStore.js.map +1 -0
  21. package/dist/client/controllers/BudgetController.d.ts +25 -0
  22. package/dist/client/controllers/BudgetController.d.ts.map +1 -0
  23. package/dist/client/controllers/BudgetController.js +223 -0
  24. package/dist/client/controllers/BudgetController.js.map +1 -0
  25. package/dist/client/controllers/ExpenseController.d.ts +2 -1
  26. package/dist/client/controllers/ExpenseController.d.ts.map +1 -1
  27. package/dist/client/controllers/ExpenseController.js +75 -0
  28. package/dist/client/controllers/ExpenseController.js.map +1 -1
  29. package/dist/client/controllers/TransactionController.d.ts +2 -1
  30. package/dist/client/controllers/TransactionController.d.ts.map +1 -1
  31. package/dist/client/controllers/TransactionController.js +94 -0
  32. package/dist/client/controllers/TransactionController.js.map +1 -1
  33. package/dist/common/DomainEvents.d.ts +2 -0
  34. package/dist/common/DomainEvents.d.ts.map +1 -1
  35. package/dist/common/EventTypes.d.ts +4 -0
  36. package/dist/common/EventTypes.d.ts.map +1 -1
  37. package/dist/common/EventTypes.js +5 -0
  38. package/dist/common/EventTypes.js.map +1 -1
  39. package/dist/contracts/budgets/index.d.ts +47 -0
  40. package/dist/contracts/budgets/index.d.ts.map +1 -0
  41. package/dist/contracts/budgets/index.js +3 -0
  42. package/dist/contracts/budgets/index.js.map +1 -0
  43. package/dist/contracts/expenses/index.d.ts +12 -0
  44. package/dist/contracts/expenses/index.d.ts.map +1 -1
  45. package/dist/contracts/expenses/index.js.map +1 -1
  46. package/dist/contracts/index.d.ts +1 -0
  47. package/dist/contracts/index.d.ts.map +1 -1
  48. package/dist/contracts/index.js +1 -0
  49. package/dist/contracts/index.js.map +1 -1
  50. package/dist/contracts/transactions/index.d.ts +9 -0
  51. package/dist/contracts/transactions/index.d.ts.map +1 -1
  52. package/dist/converters/eventConverter.d.ts.map +1 -1
  53. package/dist/converters/eventConverter.js +20 -0
  54. package/dist/converters/eventConverter.js.map +1 -1
  55. package/dist/events.d.ts +4 -0
  56. package/dist/events.d.ts.map +1 -1
  57. package/dist/events.js +6 -1
  58. package/dist/events.js.map +1 -1
  59. package/dist/index.d.ts +5 -4
  60. package/dist/index.d.ts.map +1 -1
  61. package/dist/index.js +6 -2
  62. package/dist/index.js.map +1 -1
  63. package/dist/store/BudgetEventStore.d.ts +5 -0
  64. package/dist/store/BudgetEventStore.d.ts.map +1 -0
  65. package/dist/store/BudgetEventStore.js +3 -0
  66. package/dist/store/BudgetEventStore.js.map +1 -0
  67. package/dist/store/BudgetModelStore.d.ts +15 -0
  68. package/dist/store/BudgetModelStore.d.ts.map +1 -0
  69. package/dist/store/BudgetModelStore.js +5 -0
  70. package/dist/store/BudgetModelStore.js.map +1 -0
  71. package/dist/store/ExpenseModelStore.d.ts +1 -0
  72. package/dist/store/ExpenseModelStore.d.ts.map +1 -1
  73. package/dist/store/ExpenseModelStore.js.map +1 -1
  74. package/package.json +1 -1
@@ -0,0 +1,22 @@
1
+ import { BudgetCreated, BudgetDeleted, BudgetUpdated } from "./BudgetEvents";
2
+ import { BudgetEvent } from "./common/DomainEvents";
3
+ import { BudgetEventStore } from "./store/BudgetEventStore";
4
+ import { BudgetModelStore } from "./store/BudgetModelStore";
5
+ import { BaseEventHandler } from "./BaseEventHandler";
6
+ import { ActivityEventHandler } from "./ActivityEventHandler";
7
+ import { ModelChangeEmitter } from "./ModelChangeEmitter";
8
+ import { LoggingContext } from "./common/LoggingContext";
9
+ import { ClientType } from "./EventProcessorSDK";
10
+ export declare class BudgetEventHandler extends BaseEventHandler<BudgetEvent> {
11
+ private modelStore;
12
+ private budgetEventStore;
13
+ private activityEventHandler?;
14
+ constructor(modelStore: BudgetModelStore, budgetEventStore: BudgetEventStore, isClient: boolean, clientType: ClientType, modelChangeEmitter?: ModelChangeEmitter, activityEventHandler?: ActivityEventHandler | undefined);
15
+ getModelStore(): BudgetModelStore;
16
+ getEventStore(): BudgetEventStore;
17
+ handleEvent(event: BudgetEvent, _context?: LoggingContext): Promise<void>;
18
+ handleBudgetCreated(event: BudgetCreated): Promise<void>;
19
+ handleBudgetUpdated(event: BudgetUpdated): Promise<void>;
20
+ handleBudgetDeleted(event: BudgetDeleted): Promise<void>;
21
+ }
22
+ //# sourceMappingURL=BudgetEventHandler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BudgetEventHandler.d.ts","sourceRoot":"","sources":["../src/BudgetEventHandler.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,EACb,aAAa,EAEb,aAAa,EACd,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAE5D,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAEjD,qBAAa,kBAAmB,SAAQ,gBAAgB,CAAC,WAAW,CAAC;IAEjE,OAAO,CAAC,UAAU;IAClB,OAAO,CAAC,gBAAgB;IAIxB,OAAO,CAAC,oBAAoB,CAAC;gBALrB,UAAU,EAAE,gBAAgB,EAC5B,gBAAgB,EAAE,gBAAgB,EAC1C,QAAQ,EAAE,OAAO,EACjB,UAAU,EAAE,UAAU,EACtB,kBAAkB,CAAC,EAAE,kBAAkB,EAC/B,oBAAoB,CAAC,EAAE,oBAAoB,YAAA;IAK9C,aAAa,IAAI,gBAAgB;IAIjC,aAAa,IAAI,gBAAgB;IAIlC,WAAW,CACf,KAAK,EAAE,WAAW,EAClB,QAAQ,CAAC,EAAE,cAAc,GACxB,OAAO,CAAC,IAAI,CAAC;IA4BV,mBAAmB,CAAC,KAAK,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;IAoDxD,mBAAmB,CAAC,KAAK,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;IAmDxD,mBAAmB,CAAC,KAAK,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;CAiD/D"}
@@ -0,0 +1,154 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.BudgetEventHandler = void 0;
4
+ const EventTypes_1 = require("./common/EventTypes");
5
+ const BaseEventHandler_1 = require("./BaseEventHandler");
6
+ class BudgetEventHandler extends BaseEventHandler_1.BaseEventHandler {
7
+ constructor(modelStore, budgetEventStore, isClient, clientType, modelChangeEmitter, activityEventHandler) {
8
+ super(isClient, clientType, modelChangeEmitter);
9
+ this.modelStore = modelStore;
10
+ this.budgetEventStore = budgetEventStore;
11
+ this.activityEventHandler = activityEventHandler;
12
+ }
13
+ getModelStore() {
14
+ return this.modelStore;
15
+ }
16
+ getEventStore() {
17
+ return this.budgetEventStore;
18
+ }
19
+ async handleEvent(event, _context) {
20
+ const eventType = event.eventType;
21
+ console.log("[BudgetEventHandler] Routing event", {
22
+ eventType,
23
+ eventId: event.eventId,
24
+ userId: event.userId,
25
+ streamId: event.streamId,
26
+ version: event.version,
27
+ systemGenerated: event.systemGenerated,
28
+ isClient: this.isClient,
29
+ });
30
+ switch (eventType) {
31
+ case EventTypes_1.EventType.BUDGET_CREATED:
32
+ return await this.handleBudgetCreated(event);
33
+ case EventTypes_1.EventType.BUDGET_UPDATED:
34
+ return await this.handleBudgetUpdated(event);
35
+ case EventTypes_1.EventType.BUDGET_DELETED:
36
+ return await this.handleBudgetDeleted(event);
37
+ default:
38
+ console.log("[BudgetEventHandler] Unknown event type", {
39
+ eventType,
40
+ streamId: event.streamId,
41
+ });
42
+ }
43
+ }
44
+ async handleBudgetCreated(event) {
45
+ console.log("[BudgetCreated] START", {
46
+ eventId: event.eventId,
47
+ userId: event.userId,
48
+ streamId: event.streamId,
49
+ version: event.version,
50
+ budgetId: event.budgetId,
51
+ title: event.title,
52
+ systemGenerated: event.systemGenerated,
53
+ isClient: this.isClient,
54
+ });
55
+ const existingModel = await this.modelStore.getByStreamIdWhereDeletedIsFalse(event.streamId);
56
+ if (this.shouldSkipSave(existingModel, event)) {
57
+ console.log("[BudgetCreated] Skipping save (shouldSkipSave returned true)", { streamId: event.streamId });
58
+ return;
59
+ }
60
+ const updatedModel = event.apply(existingModel);
61
+ console.log("[BudgetCreated] Event applied to model", {
62
+ streamId: event.streamId,
63
+ updatedVersion: updatedModel.version,
64
+ });
65
+ await this.modelStore.save(updatedModel);
66
+ console.log("[BudgetCreated] Updated model saved", {
67
+ streamId: event.streamId,
68
+ });
69
+ if (this.isClient) {
70
+ await this.budgetEventStore.addEvent(event);
71
+ this.modelChangeEmitter?.emit(event.eventMainType);
72
+ if (this.activityEventHandler) {
73
+ await this.activityEventHandler.createActivityLog(event, existingModel, updatedModel);
74
+ }
75
+ console.log("[BudgetCreated] Client-side processing complete", {
76
+ streamId: event.streamId,
77
+ });
78
+ }
79
+ console.log("[BudgetCreated] END", { streamId: event.streamId });
80
+ }
81
+ async handleBudgetUpdated(event) {
82
+ console.log("[BudgetUpdated] START", {
83
+ eventId: event.eventId,
84
+ userId: event.userId,
85
+ streamId: event.streamId,
86
+ version: event.version,
87
+ title: event.title,
88
+ amount: event.amount,
89
+ isClient: this.isClient,
90
+ });
91
+ const existingModel = await this.modelStore.getByStreamIdWhereDeletedIsFalse(event.streamId);
92
+ if (this.shouldSkipSave(existingModel, event)) {
93
+ console.log("[BudgetUpdated] Skipping save (shouldSkipSave returned true)", { streamId: event.streamId });
94
+ return;
95
+ }
96
+ const updatedModel = event.apply(existingModel);
97
+ console.log("[BudgetUpdated] Event applied to model", {
98
+ streamId: event.streamId,
99
+ updatedVersion: updatedModel.version,
100
+ });
101
+ await this.modelStore.save(updatedModel);
102
+ console.log("[BudgetUpdated] Updated model saved", {
103
+ streamId: event.streamId,
104
+ });
105
+ if (this.isClient) {
106
+ await this.budgetEventStore.addEvent(event);
107
+ this.modelChangeEmitter?.emit(event.eventMainType);
108
+ if (this.activityEventHandler) {
109
+ await this.activityEventHandler.createActivityLog(event, existingModel, updatedModel);
110
+ }
111
+ console.log("[BudgetUpdated] Client-side processing complete", {
112
+ streamId: event.streamId,
113
+ });
114
+ }
115
+ console.log("[BudgetUpdated] END", { streamId: event.streamId });
116
+ }
117
+ async handleBudgetDeleted(event) {
118
+ console.log("[BudgetDeleted] START", {
119
+ eventId: event.eventId,
120
+ userId: event.userId,
121
+ streamId: event.streamId,
122
+ version: event.version,
123
+ isClient: this.isClient,
124
+ });
125
+ const existingModel = await this.modelStore.getByStreamIdWhereDeletedIsFalse(event.streamId);
126
+ if (this.shouldSkipSave(existingModel, event)) {
127
+ console.log("[BudgetDeleted] Skipping save (shouldSkipSave returned true)", { streamId: event.streamId });
128
+ return;
129
+ }
130
+ const updatedModel = event.apply(existingModel);
131
+ console.log("[BudgetDeleted] Event applied to model", {
132
+ streamId: event.streamId,
133
+ updatedVersion: updatedModel.version,
134
+ deleted: updatedModel.deleted,
135
+ });
136
+ await this.modelStore.save(updatedModel);
137
+ console.log("[BudgetDeleted] Updated model saved", {
138
+ streamId: event.streamId,
139
+ });
140
+ if (this.isClient) {
141
+ await this.budgetEventStore.addEvent(event);
142
+ this.modelChangeEmitter?.emit(event.eventMainType);
143
+ if (this.activityEventHandler) {
144
+ await this.activityEventHandler.createActivityLog(event, existingModel, updatedModel);
145
+ }
146
+ console.log("[BudgetDeleted] Client-side processing complete", {
147
+ streamId: event.streamId,
148
+ });
149
+ }
150
+ console.log("[BudgetDeleted] END", { streamId: event.streamId });
151
+ }
152
+ }
153
+ exports.BudgetEventHandler = BudgetEventHandler;
154
+ //# sourceMappingURL=BudgetEventHandler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BudgetEventHandler.js","sourceRoot":"","sources":["../src/BudgetEventHandler.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,155 @@
1
+ import { BudgetEvent } from "./common/DomainEvents";
2
+ import { Model, ModelProps } from "./common/Model";
3
+ import { ActivityLogCreatedProps } from "./ActivityLogEvents";
4
+ export type BudgetPeriod = (typeof BudgetPeriodEnum)[keyof typeof BudgetPeriodEnum];
5
+ export declare const BudgetPeriodEnum: {
6
+ readonly MONTHLY: "MONTHLY";
7
+ readonly ALL_TIME: "ALL_TIME";
8
+ };
9
+ export interface BudgetModelProps extends ModelProps {
10
+ budgetId: string;
11
+ title: string;
12
+ amount: number;
13
+ currency: string;
14
+ period: BudgetPeriod;
15
+ accountId?: string;
16
+ category?: string;
17
+ paymentMethod?: string;
18
+ rollover: boolean;
19
+ rolloverAmount: number;
20
+ isActive: boolean;
21
+ createdAt: number;
22
+ createdBy: string;
23
+ updatedBy?: string;
24
+ }
25
+ export declare class BudgetModel implements BudgetModelProps {
26
+ userId: string;
27
+ streamId: string;
28
+ version: number;
29
+ deleted: boolean;
30
+ updatedAt: number;
31
+ synced: boolean;
32
+ budgetId: string;
33
+ title: string;
34
+ amount: number;
35
+ currency: string;
36
+ period: BudgetPeriod;
37
+ accountId?: string;
38
+ category?: string;
39
+ paymentMethod?: string;
40
+ rollover: boolean;
41
+ rolloverAmount: number;
42
+ isActive: boolean;
43
+ createdAt: number;
44
+ createdBy: string;
45
+ updatedBy?: string;
46
+ constructor(props: BudgetModelProps);
47
+ }
48
+ export interface BudgetCreatedProps {
49
+ eventId: string;
50
+ userId: string;
51
+ budgetId: string;
52
+ title: string;
53
+ amount: number;
54
+ currency: string;
55
+ period: BudgetPeriod;
56
+ accountId?: string;
57
+ category?: string;
58
+ paymentMethod?: string;
59
+ rollover: boolean;
60
+ createdAt: number;
61
+ createdBy: string;
62
+ streamId: string;
63
+ version: number;
64
+ systemGenerated: boolean;
65
+ }
66
+ export declare class BudgetCreated implements BudgetEvent {
67
+ readonly eventMainType: "budget";
68
+ readonly eventType: "BudgetCreated";
69
+ eventId: string;
70
+ userId: string;
71
+ budgetId: string;
72
+ title: string;
73
+ amount: number;
74
+ currency: string;
75
+ period: BudgetPeriod;
76
+ accountId?: string;
77
+ category?: string;
78
+ paymentMethod?: string;
79
+ rollover: boolean;
80
+ createdAt: number;
81
+ createdBy: string;
82
+ streamId: string;
83
+ version: number;
84
+ systemGenerated: boolean;
85
+ constructor(props: BudgetCreatedProps);
86
+ apply(_existing?: Model): BudgetModel;
87
+ activityLog(_existing?: Model, actorName?: string): ActivityLogCreatedProps | undefined;
88
+ }
89
+ export interface BudgetUpdatedProps {
90
+ eventId: string;
91
+ userId: string;
92
+ title?: string;
93
+ amount?: number;
94
+ currency?: string;
95
+ period?: BudgetPeriod;
96
+ accountId?: string;
97
+ category?: string;
98
+ paymentMethod?: string;
99
+ rollover?: boolean;
100
+ rolloverAmount?: number;
101
+ isActive?: boolean;
102
+ createdAt: number;
103
+ createdBy: string;
104
+ streamId: string;
105
+ version: number;
106
+ systemGenerated: boolean;
107
+ }
108
+ export declare class BudgetUpdated implements BudgetEvent {
109
+ readonly eventMainType: "budget";
110
+ readonly eventType: "BudgetUpdated";
111
+ eventId: string;
112
+ userId: string;
113
+ title?: string;
114
+ amount?: number;
115
+ currency?: string;
116
+ period?: BudgetPeriod;
117
+ accountId?: string;
118
+ category?: string;
119
+ paymentMethod?: string;
120
+ rollover?: boolean;
121
+ rolloverAmount?: number;
122
+ isActive?: boolean;
123
+ createdAt: number;
124
+ createdBy: string;
125
+ streamId: string;
126
+ version: number;
127
+ systemGenerated: boolean;
128
+ constructor(props: BudgetUpdatedProps);
129
+ apply(existing?: Model): BudgetModel;
130
+ activityLog(existing?: Model, actorName?: string): ActivityLogCreatedProps | undefined;
131
+ }
132
+ export interface BudgetDeletedProps {
133
+ eventId: string;
134
+ userId: string;
135
+ createdAt: number;
136
+ createdBy: string;
137
+ streamId: string;
138
+ version: number;
139
+ systemGenerated: boolean;
140
+ }
141
+ export declare class BudgetDeleted implements BudgetEvent {
142
+ readonly eventMainType: "budget";
143
+ readonly eventType: "BudgetDeleted";
144
+ eventId: string;
145
+ userId: string;
146
+ createdAt: number;
147
+ createdBy: string;
148
+ streamId: string;
149
+ version: number;
150
+ systemGenerated: boolean;
151
+ constructor(props: BudgetDeletedProps);
152
+ apply(existing?: Model): BudgetModel;
153
+ activityLog(existing?: Model, actorName?: string): ActivityLogCreatedProps | undefined;
154
+ }
155
+ //# sourceMappingURL=BudgetEvents.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BudgetEvents.d.ts","sourceRoot":"","sources":["../src/BudgetEvents.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,223 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.BudgetDeleted = exports.BudgetUpdated = exports.BudgetCreated = exports.BudgetModel = exports.BudgetPeriodEnum = void 0;
4
+ const uuid_1 = require("uuid");
5
+ const EventTypes_1 = require("./common/EventTypes");
6
+ exports.BudgetPeriodEnum = {
7
+ MONTHLY: "MONTHLY",
8
+ ALL_TIME: "ALL_TIME",
9
+ };
10
+ class BudgetModel {
11
+ constructor(props) {
12
+ this.userId = props.userId;
13
+ this.streamId = props.streamId;
14
+ this.version = props.version;
15
+ this.deleted = props.deleted;
16
+ this.updatedAt = props.updatedAt;
17
+ this.synced = props.synced ?? false;
18
+ this.budgetId = props.budgetId;
19
+ this.title = props.title;
20
+ this.amount = props.amount;
21
+ this.currency = props.currency;
22
+ this.period = props.period;
23
+ this.accountId = props.accountId;
24
+ this.category = props.category;
25
+ this.paymentMethod = props.paymentMethod;
26
+ this.rollover = props.rollover;
27
+ this.rolloverAmount = props.rolloverAmount;
28
+ this.isActive = props.isActive;
29
+ this.createdAt = props.createdAt;
30
+ this.createdBy = props.createdBy;
31
+ this.updatedBy = props.updatedBy;
32
+ }
33
+ }
34
+ exports.BudgetModel = BudgetModel;
35
+ class BudgetCreated {
36
+ constructor(props) {
37
+ this.eventMainType = EventTypes_1.EventMainType.BUDGET;
38
+ this.eventType = EventTypes_1.EventType.BUDGET_CREATED;
39
+ this.eventId = props.eventId;
40
+ this.userId = props.userId;
41
+ this.budgetId = props.budgetId;
42
+ this.title = props.title;
43
+ this.amount = props.amount;
44
+ this.currency = props.currency;
45
+ this.period = props.period;
46
+ this.accountId = props.accountId;
47
+ this.category = props.category;
48
+ this.paymentMethod = props.paymentMethod;
49
+ this.rollover = props.rollover;
50
+ this.createdAt = props.createdAt;
51
+ this.createdBy = props.createdBy;
52
+ this.streamId = props.streamId;
53
+ this.version = props.version;
54
+ this.systemGenerated = props.systemGenerated;
55
+ }
56
+ apply(_existing) {
57
+ return new BudgetModel({
58
+ streamId: this.streamId,
59
+ userId: this.userId,
60
+ budgetId: this.budgetId,
61
+ title: this.title,
62
+ amount: this.amount,
63
+ currency: this.currency,
64
+ period: this.period,
65
+ accountId: this.accountId,
66
+ category: this.category,
67
+ paymentMethod: this.paymentMethod,
68
+ rollover: this.rollover,
69
+ rolloverAmount: 0,
70
+ isActive: true,
71
+ createdAt: this.createdAt,
72
+ updatedAt: this.createdAt,
73
+ createdBy: this.createdBy,
74
+ version: this.version,
75
+ deleted: false,
76
+ synced: this.systemGenerated,
77
+ });
78
+ }
79
+ activityLog(_existing, actorName) {
80
+ if (this.systemGenerated) {
81
+ return undefined;
82
+ }
83
+ const actor = actorName ?? "You";
84
+ const logMessage = `${actor} created budget "${this.title}"`;
85
+ return {
86
+ eventId: (0, uuid_1.v4)(),
87
+ userId: this.userId,
88
+ activityByUid: this.createdBy,
89
+ sourceType: EventTypes_1.EventMainType.BUDGET,
90
+ sourceEventType: this.eventType,
91
+ sourceId: this.streamId,
92
+ logMessage,
93
+ date: this.createdAt,
94
+ createdAt: this.createdAt,
95
+ createdBy: this.createdBy,
96
+ streamId: (0, uuid_1.v4)(),
97
+ version: 1,
98
+ systemGenerated: true,
99
+ };
100
+ }
101
+ }
102
+ exports.BudgetCreated = BudgetCreated;
103
+ class BudgetUpdated {
104
+ constructor(props) {
105
+ this.eventMainType = EventTypes_1.EventMainType.BUDGET;
106
+ this.eventType = EventTypes_1.EventType.BUDGET_UPDATED;
107
+ this.eventId = props.eventId;
108
+ this.userId = props.userId;
109
+ this.title = props.title;
110
+ this.amount = props.amount;
111
+ this.currency = props.currency;
112
+ this.period = props.period;
113
+ this.accountId = props.accountId;
114
+ this.category = props.category;
115
+ this.paymentMethod = props.paymentMethod;
116
+ this.rollover = props.rollover;
117
+ this.rolloverAmount = props.rolloverAmount;
118
+ this.isActive = props.isActive;
119
+ this.createdAt = props.createdAt;
120
+ this.createdBy = props.createdBy;
121
+ this.streamId = props.streamId;
122
+ this.version = props.version;
123
+ this.systemGenerated = props.systemGenerated;
124
+ }
125
+ apply(existing) {
126
+ if (!existing) {
127
+ throw new Error("Budget must exist to update");
128
+ }
129
+ const existingBudget = existing;
130
+ return new BudgetModel({
131
+ ...existingBudget,
132
+ title: this.title ?? existingBudget.title,
133
+ amount: this.amount ?? existingBudget.amount,
134
+ currency: this.currency ?? existingBudget.currency,
135
+ period: this.period ?? existingBudget.period,
136
+ accountId: this.accountId ?? existingBudget.accountId,
137
+ category: this.category ?? existingBudget.category,
138
+ paymentMethod: this.paymentMethod ?? existingBudget.paymentMethod,
139
+ rollover: this.rollover ?? existingBudget.rollover,
140
+ rolloverAmount: this.rolloverAmount ?? existingBudget.rolloverAmount,
141
+ isActive: this.isActive ?? existingBudget.isActive,
142
+ updatedAt: this.createdAt,
143
+ updatedBy: this.createdBy,
144
+ version: this.version,
145
+ synced: this.systemGenerated,
146
+ });
147
+ }
148
+ activityLog(existing, actorName) {
149
+ if (!existing) {
150
+ return undefined;
151
+ }
152
+ const existingBudget = existing;
153
+ const actor = actorName ?? "You";
154
+ const budgetTitle = this.title ?? existingBudget.title;
155
+ const logMessage = `${actor} updated budget "${budgetTitle}"`;
156
+ return {
157
+ eventId: (0, uuid_1.v4)(),
158
+ userId: existingBudget.userId,
159
+ activityByUid: this.createdBy,
160
+ sourceType: EventTypes_1.EventMainType.BUDGET,
161
+ sourceEventType: this.eventType,
162
+ sourceId: this.streamId,
163
+ logMessage,
164
+ date: this.createdAt,
165
+ createdAt: this.createdAt,
166
+ createdBy: this.createdBy,
167
+ streamId: (0, uuid_1.v4)(),
168
+ version: 1,
169
+ systemGenerated: true,
170
+ };
171
+ }
172
+ }
173
+ exports.BudgetUpdated = BudgetUpdated;
174
+ class BudgetDeleted {
175
+ constructor(props) {
176
+ this.eventMainType = EventTypes_1.EventMainType.BUDGET;
177
+ this.eventType = EventTypes_1.EventType.BUDGET_DELETED;
178
+ this.eventId = props.eventId;
179
+ this.userId = props.userId;
180
+ this.createdAt = props.createdAt;
181
+ this.createdBy = props.createdBy;
182
+ this.streamId = props.streamId;
183
+ this.version = props.version;
184
+ this.systemGenerated = props.systemGenerated;
185
+ }
186
+ apply(existing) {
187
+ if (!existing) {
188
+ throw new Error("Budget must exist to delete");
189
+ }
190
+ const existingBudget = existing;
191
+ return new BudgetModel({
192
+ ...existingBudget,
193
+ updatedAt: this.createdAt,
194
+ version: this.version,
195
+ deleted: true,
196
+ });
197
+ }
198
+ activityLog(existing, actorName) {
199
+ if (!existing) {
200
+ return undefined;
201
+ }
202
+ const existingBudget = existing;
203
+ const actor = actorName ?? "You";
204
+ const logMessage = `${actor} deleted budget "${existingBudget.title}"`;
205
+ return {
206
+ eventId: (0, uuid_1.v4)(),
207
+ userId: existingBudget.userId,
208
+ activityByUid: this.createdBy,
209
+ sourceType: EventTypes_1.EventMainType.BUDGET,
210
+ sourceEventType: this.eventType,
211
+ sourceId: this.streamId,
212
+ logMessage,
213
+ date: this.createdAt,
214
+ createdAt: this.createdAt,
215
+ createdBy: this.createdBy,
216
+ streamId: (0, uuid_1.v4)(),
217
+ version: 1,
218
+ systemGenerated: true,
219
+ };
220
+ }
221
+ }
222
+ exports.BudgetDeleted = BudgetDeleted;
223
+ //# sourceMappingURL=BudgetEvents.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BudgetEvents.js","sourceRoot":"","sources":["../src/BudgetEvents.ts"],"names":[],"mappings":"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"}
@@ -21,6 +21,8 @@ import { TagModelStore } from "./store/TagModelStore";
21
21
  import { TagEventStore } from "./store/TagEventStore";
22
22
  import { NotificationModelStore } from "./store/NotificationModelStore";
23
23
  import { NotificationEventStore } from "./store/NotificationEventStore";
24
+ import { BudgetModelStore } from "./store/BudgetModelStore";
25
+ import { BudgetEventStore } from "./store/BudgetEventStore";
24
26
  import { UserController } from "./client/controllers/UserController";
25
27
  import { FriendController } from "./client/controllers/FriendController";
26
28
  import { TransactionController } from "./client/controllers/TransactionController";
@@ -31,9 +33,10 @@ import { GroupController } from "./client/controllers/GroupController";
31
33
  import { CategoryController } from "./client/controllers/CategoryController";
32
34
  import { TagController } from "./client/controllers/TagController";
33
35
  import { NotificationController } from "./client/controllers/NotificationController";
36
+ import { BudgetController } from "./client/controllers/BudgetController";
34
37
  import { UIEventHandler } from "./client/handlers/UIEventHandler";
35
38
  import type { FirestoreEventData } from "./converters/eventConverter";
36
- import { ActivityEventHandler, Event, FriendEventHandler, GroupEventHandler, GroupTransactionEventHandler, TransactionEventHandler, UserEventHandler, ExpenseAccountEventHandler, ExpenseEventHandler, CategoryEventHandler, TagEventHandler, NotificationEventHandler } from "./events";
39
+ import { ActivityEventHandler, Event, FriendEventHandler, GroupEventHandler, GroupTransactionEventHandler, TransactionEventHandler, UserEventHandler, ExpenseAccountEventHandler, ExpenseEventHandler, CategoryEventHandler, TagEventHandler, NotificationEventHandler, BudgetEventHandler } from "./events";
37
40
  import { ModelChange } from "./ModelChangeEmitter";
38
41
  import { Observable } from "rxjs";
39
42
  import { EventMainTypeValue } from "./common/EventTypes";
@@ -70,6 +73,8 @@ export type StoreConfig = {
70
73
  tagEventStore: TagEventStore;
71
74
  notificationModelStore: NotificationModelStore;
72
75
  notificationEventStore: NotificationEventStore;
76
+ budgetModelStore: BudgetModelStore;
77
+ budgetEventStore: BudgetEventStore;
73
78
  currencyStore: CurrencyStore;
74
79
  isClient?: boolean;
75
80
  clientType: ClientType;
@@ -104,6 +109,8 @@ export declare class EventProcessorSDK {
104
109
  private tagEventHandlerInstance;
105
110
  private notificationControllerInstance;
106
111
  private notificationEventHandlerInstance;
112
+ private budgetControllerInstance;
113
+ private budgetEventHandlerInstance;
107
114
  private transactionMigrationUtilInstance;
108
115
  private readonly modelChangeEmitter;
109
116
  private constructor();
@@ -142,6 +149,8 @@ export declare class EventProcessorSDK {
142
149
  getTagEventHandler(): TagEventHandler;
143
150
  getNotificationController(): NotificationController;
144
151
  getNotificationEventHandler(): NotificationEventHandler;
152
+ getBudgetController(): BudgetController;
153
+ getBudgetEventHandler(): BudgetEventHandler;
145
154
  getCurrencyStore(): CurrencyStore;
146
155
  getModelChangeObservable(): Observable<ModelChange>;
147
156
  emitModelChange(modelType: EventMainTypeValue): void;
@@ -170,6 +179,8 @@ export declare function getTagController(): TagController;
170
179
  export declare function getTagEventHandler(): TagEventHandler;
171
180
  export declare function getNotificationController(): NotificationController;
172
181
  export declare function getNotificationEventHandler(): NotificationEventHandler;
182
+ export declare function getBudgetController(): BudgetController;
183
+ export declare function getBudgetEventHandler(): BudgetEventHandler;
173
184
  export declare function getCurrencyStore(): CurrencyStore;
174
185
  export declare function getModelChangeObservable(): Observable<ModelChange>;
175
186
  export declare function eventToFirestore(event: Event): FirestoreEventData;