@zeeshan60/event-processor 1.0.65 → 1.0.67

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 (85) hide show
  1. package/dist/GroupTransactionEventHandler.d.ts +2 -1
  2. package/dist/GroupTransactionEventHandler.d.ts.map +1 -1
  3. package/dist/GroupTransactionEventHandler.js +4 -0
  4. package/dist/GroupTransactionEventHandler.js.map +1 -1
  5. package/dist/GroupTransactionEvents.d.ts +12 -0
  6. package/dist/GroupTransactionEvents.d.ts.map +1 -1
  7. package/dist/GroupTransactionEvents.js +13 -1
  8. package/dist/GroupTransactionEvents.js.map +1 -1
  9. package/dist/TransactionEventHandler.d.ts +1 -0
  10. package/dist/TransactionEventHandler.d.ts.map +1 -1
  11. package/dist/TransactionEventHandler.js +15 -0
  12. package/dist/TransactionEventHandler.js.map +1 -1
  13. package/dist/TransactionEvents.d.ts +38 -0
  14. package/dist/TransactionEvents.d.ts.map +1 -1
  15. package/dist/TransactionEvents.js +46 -1
  16. package/dist/TransactionEvents.js.map +1 -1
  17. package/dist/client/controllers/ExpenseAccountController.d.ts.map +1 -1
  18. package/dist/client/controllers/ExpenseAccountController.js +2 -0
  19. package/dist/client/controllers/ExpenseAccountController.js.map +1 -1
  20. package/dist/client/controllers/ExpenseController.d.ts +2 -2
  21. package/dist/client/controllers/ExpenseController.d.ts.map +1 -1
  22. package/dist/client/controllers/ExpenseController.js +29 -10
  23. package/dist/client/controllers/ExpenseController.js.map +1 -1
  24. package/dist/client/controllers/FriendController.d.ts.map +1 -1
  25. package/dist/client/controllers/FriendController.js +2 -0
  26. package/dist/client/controllers/FriendController.js.map +1 -1
  27. package/dist/client/controllers/GroupController.d.ts.map +1 -1
  28. package/dist/client/controllers/GroupController.js +1 -0
  29. package/dist/client/controllers/GroupController.js.map +1 -1
  30. package/dist/client/controllers/GroupTransactionController.d.ts +1 -1
  31. package/dist/client/controllers/GroupTransactionController.d.ts.map +1 -1
  32. package/dist/client/controllers/GroupTransactionController.js +15 -4
  33. package/dist/client/controllers/GroupTransactionController.js.map +1 -1
  34. package/dist/client/controllers/TransactionController.d.ts +1 -1
  35. package/dist/client/controllers/TransactionController.d.ts.map +1 -1
  36. package/dist/client/controllers/TransactionController.js +34 -9
  37. package/dist/client/controllers/TransactionController.js.map +1 -1
  38. package/dist/common/EventTypes.d.ts +1 -0
  39. package/dist/common/EventTypes.d.ts.map +1 -1
  40. package/dist/common/EventTypes.js +1 -0
  41. package/dist/common/EventTypes.js.map +1 -1
  42. package/dist/contracts/expenses/index.d.ts +27 -1
  43. package/dist/contracts/expenses/index.d.ts.map +1 -1
  44. package/dist/contracts/expenses/index.js +31 -1
  45. package/dist/contracts/expenses/index.js.map +1 -1
  46. package/dist/contracts/friends/index.d.ts +2 -0
  47. package/dist/contracts/friends/index.d.ts.map +1 -1
  48. package/dist/contracts/groups/index.d.ts +32 -1
  49. package/dist/contracts/groups/index.d.ts.map +1 -1
  50. package/dist/contracts/groups/index.js +29 -0
  51. package/dist/contracts/groups/index.js.map +1 -1
  52. package/dist/contracts/transactions/index.d.ts +66 -5
  53. package/dist/contracts/transactions/index.d.ts.map +1 -1
  54. package/dist/contracts/transactions/index.js +47 -1
  55. package/dist/contracts/transactions/index.js.map +1 -1
  56. package/dist/converters/GroupTransactionConverters.d.ts.map +1 -1
  57. package/dist/converters/GroupTransactionConverters.js +8 -0
  58. package/dist/converters/GroupTransactionConverters.js.map +1 -1
  59. package/dist/converters/TransactionConverters.d.ts +5 -1
  60. package/dist/converters/TransactionConverters.d.ts.map +1 -1
  61. package/dist/converters/TransactionConverters.js +28 -1
  62. package/dist/converters/TransactionConverters.js.map +1 -1
  63. package/dist/converters/eventConverter.d.ts.map +1 -1
  64. package/dist/converters/eventConverter.js +2 -0
  65. package/dist/converters/eventConverter.js.map +1 -1
  66. package/dist/index.d.ts +1 -0
  67. package/dist/index.d.ts.map +1 -1
  68. package/dist/index.js +3 -1
  69. package/dist/index.js.map +1 -1
  70. package/dist/utils/GroupUtil.d.ts.map +1 -1
  71. package/dist/utils/GroupUtil.js +16 -2
  72. package/dist/utils/GroupUtil.js.map +1 -1
  73. package/dist/utils/TestDataUtil.d.ts +10 -0
  74. package/dist/utils/TestDataUtil.d.ts.map +1 -0
  75. package/dist/utils/TestDataUtil.js +248 -0
  76. package/dist/utils/TestDataUtil.js.map +1 -0
  77. package/dist/utils/searchUtil.d.ts +8 -0
  78. package/dist/utils/searchUtil.d.ts.map +1 -0
  79. package/dist/utils/searchUtil.js +28 -0
  80. package/dist/utils/searchUtil.js.map +1 -0
  81. package/dist/utils/sortUtil.d.ts +13 -0
  82. package/dist/utils/sortUtil.d.ts.map +1 -0
  83. package/dist/utils/sortUtil.js +22 -0
  84. package/dist/utils/sortUtil.js.map +1 -0
  85. package/package.json +2 -1
@@ -0,0 +1,10 @@
1
+ export declare class TestDataUtil {
2
+ private get sdk();
3
+ private get friendEventStore();
4
+ private get friendModelStore();
5
+ private get transactionEventStore();
6
+ private get transactionModelStore();
7
+ addTestFriends(userId: string, count?: number): Promise<string[]>;
8
+ addTestTransactions(userId: string, limit?: number): Promise<number>;
9
+ }
10
+ //# sourceMappingURL=TestDataUtil.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TestDataUtil.d.ts","sourceRoot":"","sources":["../../src/utils/TestDataUtil.ts"],"names":[],"mappings":"AA0HA,qBAAa,YAAY;IACvB,OAAO,KAAK,GAAG,GAEd;IAED,OAAO,KAAK,gBAAgB,GAE3B;IAED,OAAO,KAAK,gBAAgB,GAE3B;IAED,OAAO,KAAK,qBAAqB,GAEhC;IAED,OAAO,KAAK,qBAAqB,GAEhC;IAEK,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,SAAK,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IA4C7D,mBAAmB,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,SAAO,GAAG,OAAO,CAAC,MAAM,CAAC;CAuEzE"}
@@ -0,0 +1,248 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TestDataUtil = void 0;
4
+ const uuid_1 = require("uuid");
5
+ const __1 = require("..");
6
+ const EventProcessorSDK_1 = require("../EventProcessorSDK");
7
+ const FIRST_NAMES = [
8
+ "Emma",
9
+ "Liam",
10
+ "Olivia",
11
+ "Noah",
12
+ "Ava",
13
+ "Ethan",
14
+ "Sophia",
15
+ "Mason",
16
+ "Isabella",
17
+ "William",
18
+ "Mia",
19
+ "James",
20
+ "Charlotte",
21
+ "Benjamin",
22
+ "Amelia",
23
+ "Lucas",
24
+ "Harper",
25
+ "Henry",
26
+ "Evelyn",
27
+ "Alexander",
28
+ ];
29
+ const LAST_NAMES = [
30
+ "Smith",
31
+ "Johnson",
32
+ "Williams",
33
+ "Brown",
34
+ "Jones",
35
+ "Garcia",
36
+ "Miller",
37
+ "Davis",
38
+ "Rodriguez",
39
+ "Martinez",
40
+ "Hernandez",
41
+ "Lopez",
42
+ "Gonzalez",
43
+ "Wilson",
44
+ "Anderson",
45
+ "Thomas",
46
+ "Taylor",
47
+ "Moore",
48
+ "Jackson",
49
+ "Martin",
50
+ ];
51
+ const DESCRIPTIONS = [
52
+ "Lunch",
53
+ "Dinner",
54
+ "Coffee",
55
+ "Groceries",
56
+ "Uber",
57
+ "Movie tickets",
58
+ "Concert tickets",
59
+ "Gas",
60
+ "Parking",
61
+ "Drinks",
62
+ "Pizza",
63
+ "Sushi",
64
+ "Burgers",
65
+ "Thai food",
66
+ "Indian food",
67
+ "Chinese takeout",
68
+ "Brunch",
69
+ "Happy hour",
70
+ "Rent",
71
+ "Utilities",
72
+ "Internet bill",
73
+ "Phone bill",
74
+ "Netflix",
75
+ "Spotify",
76
+ "Gym membership",
77
+ "Dry cleaning",
78
+ "Haircut",
79
+ "Pet supplies",
80
+ "Birthday gift",
81
+ "Holiday gift",
82
+ "Home supplies",
83
+ "Office supplies",
84
+ "Books",
85
+ "Games",
86
+ "Sports equipment",
87
+ "Concert",
88
+ "Festival tickets",
89
+ "Airbnb",
90
+ "Hotel",
91
+ "Flight tickets",
92
+ "Train tickets",
93
+ "Taxi",
94
+ "Car rental",
95
+ "Bike rental",
96
+ "Scooter rental",
97
+ "Museum tickets",
98
+ "Theme park",
99
+ "Spa day",
100
+ "Massage",
101
+ "Yoga class",
102
+ ];
103
+ const CURRENCIES = ["USD", "EUR", "GBP", "CAD", "AUD", "PKR", "INR"];
104
+ const SPLIT_TYPES = [
105
+ __1.SplitTypeEnum.YouPaidSplitEqually,
106
+ __1.SplitTypeEnum.TheyPaidSplitEqually,
107
+ __1.SplitTypeEnum.TheyOweYouAll,
108
+ __1.SplitTypeEnum.YouOweThemAll,
109
+ __1.SplitTypeEnum.TheyPaidToSettle,
110
+ __1.SplitTypeEnum.YouPaidToSettle,
111
+ ];
112
+ class TestDataUtil {
113
+ get sdk() {
114
+ return EventProcessorSDK_1.EventProcessorSDK.getInstance();
115
+ }
116
+ get friendEventStore() {
117
+ return this.sdk.getStoreConfig().friendEventStore;
118
+ }
119
+ get friendModelStore() {
120
+ return this.sdk.getStoreConfig().friendModelStore;
121
+ }
122
+ get transactionEventStore() {
123
+ return this.sdk.getStoreConfig().transactionEventStore;
124
+ }
125
+ get transactionModelStore() {
126
+ return this.sdk.getStoreConfig().transactionModelStore;
127
+ }
128
+ async addTestFriends(userId, count = 20) {
129
+ const now = new Date();
130
+ const events = [];
131
+ const models = [];
132
+ for (let i = 0; i < count; i++) {
133
+ const firstName = FIRST_NAMES[i % FIRST_NAMES.length];
134
+ const lastName = LAST_NAMES[i % LAST_NAMES.length];
135
+ const displayName = `${firstName} ${lastName}`;
136
+ const email = `${firstName.toLowerCase()}.${lastName.toLowerCase()}${i}@test.com`;
137
+ const streamId = (0, uuid_1.v4)();
138
+ const event = new __1.FriendCreated({
139
+ eventId: (0, uuid_1.v4)(),
140
+ userId,
141
+ friendEmail: email,
142
+ friendPhoneNumber: undefined,
143
+ friendDisplayName: displayName,
144
+ photoUrl: undefined,
145
+ friendId: undefined,
146
+ groupId: undefined,
147
+ createdAt: now,
148
+ createdBy: userId,
149
+ streamId,
150
+ version: 1,
151
+ systemGenerated: false,
152
+ });
153
+ events.push(event);
154
+ models.push(event.apply());
155
+ }
156
+ await this.friendEventStore.addEvents(events);
157
+ await this.friendModelStore.saveAll(models);
158
+ this.sdk.emitModelChange(__1.EventMainType.FRIEND);
159
+ console.log("[TestDataUtil.addTestFriends] Test friends created", {
160
+ userId,
161
+ count: events.length,
162
+ });
163
+ return models.map((m) => m.streamId);
164
+ }
165
+ async addTestTransactions(userId, limit = 1000) {
166
+ const friends = await this.friendModelStore.findAllByUserIdWhereDeletedIsFalse(userId);
167
+ if (friends.length === 0) {
168
+ throw new Error("No friends found. Add friends first.");
169
+ }
170
+ const events = [];
171
+ const models = [];
172
+ const transactionsPerFriend = Math.ceil(limit / friends.length);
173
+ let createdCount = 0;
174
+ for (const friend of friends) {
175
+ const recipientUserId = friend.friendId ?? friend.streamId;
176
+ for (let i = 0; i < transactionsPerFriend && createdCount < limit; i++) {
177
+ const splitType = randomElement(SPLIT_TYPES);
178
+ const totalAmount = randomInt(5, 500);
179
+ const currency = randomElement(CURRENCIES);
180
+ const transactionDate = randomDate(365);
181
+ const { amount, isOwed } = calculateAmountAndIsOwed(splitType, totalAmount);
182
+ const streamId = (0, uuid_1.v4)();
183
+ const event = new __1.TransactionCreated({
184
+ eventId: (0, uuid_1.v4)(),
185
+ userId,
186
+ recipientUserId,
187
+ logicalTransactionId: (0, uuid_1.v4)(),
188
+ description: randomElement(DESCRIPTIONS),
189
+ currency,
190
+ splitType,
191
+ totalAmount,
192
+ amount,
193
+ isOwed,
194
+ transactionDate,
195
+ groupId: undefined,
196
+ groupTransactionId: undefined,
197
+ createdAt: transactionDate,
198
+ createdBy: userId,
199
+ streamId,
200
+ version: 1,
201
+ systemGenerated: false,
202
+ });
203
+ events.push(event);
204
+ models.push(event.apply());
205
+ createdCount++;
206
+ }
207
+ }
208
+ await this.transactionEventStore.addEvents(events);
209
+ await this.transactionModelStore.saveAll(models);
210
+ this.sdk.emitModelChange(__1.EventMainType.TRANSACTION);
211
+ console.log("[TestDataUtil.addTestTransactions] Test transactions created", {
212
+ userId,
213
+ count: createdCount,
214
+ friendCount: friends.length,
215
+ });
216
+ return createdCount;
217
+ }
218
+ }
219
+ exports.TestDataUtil = TestDataUtil;
220
+ function randomInt(min, max) {
221
+ return Math.floor(Math.random() * (max - min + 1)) + min;
222
+ }
223
+ function randomElement(arr) {
224
+ return arr[Math.floor(Math.random() * arr.length)];
225
+ }
226
+ function randomDate(daysBack) {
227
+ const now = new Date();
228
+ return new Date(now.getTime() - randomInt(0, daysBack) * 24 * 60 * 60 * 1000);
229
+ }
230
+ function calculateAmountAndIsOwed(splitType, totalAmount) {
231
+ switch (splitType) {
232
+ case __1.SplitTypeEnum.YouPaidSplitEqually:
233
+ return { amount: totalAmount / 2, isOwed: true };
234
+ case __1.SplitTypeEnum.TheyPaidSplitEqually:
235
+ return { amount: totalAmount / 2, isOwed: false };
236
+ case __1.SplitTypeEnum.TheyOweYouAll:
237
+ return { amount: totalAmount, isOwed: true };
238
+ case __1.SplitTypeEnum.YouOweThemAll:
239
+ return { amount: totalAmount, isOwed: false };
240
+ case __1.SplitTypeEnum.TheyPaidToSettle:
241
+ return { amount: totalAmount, isOwed: false };
242
+ case __1.SplitTypeEnum.YouPaidToSettle:
243
+ return { amount: totalAmount, isOwed: true };
244
+ default:
245
+ return { amount: totalAmount / 2, isOwed: true };
246
+ }
247
+ }
248
+ //# sourceMappingURL=TestDataUtil.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TestDataUtil.js","sourceRoot":"","sources":["../../src/utils/TestDataUtil.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ export interface SearchOptions<T> {
2
+ items: T[];
3
+ keys: (keyof T | string)[];
4
+ search: string;
5
+ threshold?: number;
6
+ }
7
+ export declare function fuzzySearch<T>(options: SearchOptions<T>): T[];
8
+ //# sourceMappingURL=searchUtil.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"searchUtil.d.ts","sourceRoot":"","sources":["../../src/utils/searchUtil.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,aAAa,CAAC,CAAC;IAC9B,KAAK,EAAE,CAAC,EAAE,CAAC;IACX,IAAI,EAAE,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC,EAAE,CAAC;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,WAAW,CAAC,CAAC,EAAE,OAAO,EAAE,aAAa,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAqB7D"}
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.fuzzySearch = fuzzySearch;
7
+ const fuse_js_1 = __importDefault(require("fuse.js"));
8
+ function fuzzySearch(options) {
9
+ const { items, keys, search, threshold = 0.4 } = options;
10
+ if (!search || search.trim() === "") {
11
+ return items;
12
+ }
13
+ const fuseOptions = {
14
+ keys: keys,
15
+ threshold,
16
+ ignoreLocation: true,
17
+ getFn: (obj, path) => {
18
+ const value = fuse_js_1.default.config.getFn(obj, path);
19
+ if (typeof value === "number")
20
+ return String(value);
21
+ return value;
22
+ },
23
+ };
24
+ const fuse = new fuse_js_1.default(items, fuseOptions);
25
+ const results = fuse.search(search.trim());
26
+ return results.map((r) => r.item);
27
+ }
28
+ //# sourceMappingURL=searchUtil.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"searchUtil.js","sourceRoot":"","sources":["../../src/utils/searchUtil.ts"],"names":[],"mappings":";;;;;AASA,kCAqBC;AA9BD,sDAA6C;AAS7C,SAAgB,WAAW,CAAI,OAAyB;IACtD,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,GAAG,GAAG,EAAE,GAAG,OAAO,CAAC;IAEzD,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;QACpC,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,WAAW,GAAoB;QACnC,IAAI,EAAE,IAAgB;QACtB,SAAS;QACT,cAAc,EAAE,IAAI;QACpB,KAAK,EAAE,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE;YACnB,MAAM,KAAK,GAAG,iBAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;YAC3C,IAAI,OAAO,KAAK,KAAK,QAAQ;gBAAE,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;YACpD,OAAO,KAAK,CAAC;QACf,CAAC;KACF,CAAC;IAEF,MAAM,IAAI,GAAG,IAAI,iBAAI,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;IAC1C,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;IAC3C,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AACpC,CAAC"}
@@ -0,0 +1,13 @@
1
+ export interface IAmount {
2
+ getAmount(): number;
3
+ isOwed(): boolean;
4
+ }
5
+ export interface IByMonthTransactions {
6
+ date: string;
7
+ transactions: IAmount[];
8
+ }
9
+ export declare class SortUtil {
10
+ static sortByAmount<T extends IAmount>(items: T[], ascending?: boolean): T[];
11
+ static sortTransactionsByAmount<T extends IByMonthTransactions>(items: T[], ascending?: boolean): T[];
12
+ }
13
+ //# sourceMappingURL=sortUtil.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sortUtil.d.ts","sourceRoot":"","sources":["../../src/utils/sortUtil.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,OAAO;IACtB,SAAS,IAAI,MAAM,CAAC;IACpB,MAAM,IAAI,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,OAAO,EAAE,CAAC;CACzB;AAED,qBAAa,QAAQ;IACnB,MAAM,CAAC,YAAY,CAAC,CAAC,SAAS,OAAO,EACnC,KAAK,EAAE,CAAC,EAAE,EACV,SAAS,GAAE,OAAc,GACxB,CAAC,EAAE;IAQN,MAAM,CAAC,wBAAwB,CAAC,CAAC,SAAS,oBAAoB,EAC5D,KAAK,EAAE,CAAC,EAAE,EACV,SAAS,GAAE,OAAc,GACxB,CAAC,EAAE;CAQP"}
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SortUtil = void 0;
4
+ class SortUtil {
5
+ static sortByAmount(items, ascending = true) {
6
+ return [...items].sort((a, b) => {
7
+ const amountA = a.isOwed() ? a.getAmount() : -a.getAmount();
8
+ const amountB = b.isOwed() ? b.getAmount() : -b.getAmount();
9
+ return ascending ? amountA - amountB : amountB - amountA;
10
+ });
11
+ }
12
+ static sortTransactionsByAmount(items, ascending = true) {
13
+ const allTransactions = items.flatMap(monthData => monthData.transactions);
14
+ const sortedTransactions = this.sortByAmount(allTransactions, ascending);
15
+ return [{
16
+ date: "sorted",
17
+ transactions: sortedTransactions,
18
+ }];
19
+ }
20
+ }
21
+ exports.SortUtil = SortUtil;
22
+ //# sourceMappingURL=sortUtil.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sortUtil.js","sourceRoot":"","sources":["../../src/utils/sortUtil.ts"],"names":[],"mappings":";;;AAUA,MAAa,QAAQ;IACnB,MAAM,CAAC,YAAY,CACjB,KAAU,EACV,YAAqB,IAAI;QAEzB,OAAO,CAAC,GAAG,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;YAC9B,MAAM,OAAO,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC;YAC5D,MAAM,OAAO,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC;YAC5D,OAAO,SAAS,CAAC,CAAC,CAAC,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC,OAAO,GAAG,OAAO,CAAC;QAC3D,CAAC,CAAC,CAAC;IACL,CAAC;IAED,MAAM,CAAC,wBAAwB,CAC7B,KAAU,EACV,YAAqB,IAAI;QAEzB,MAAM,eAAe,GAAG,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;QAC3E,MAAM,kBAAkB,GAAG,IAAI,CAAC,YAAY,CAAC,eAAe,EAAE,SAAS,CAAC,CAAC;QACzE,OAAO,CAAC;gBACN,IAAI,EAAE,QAAQ;gBACd,YAAY,EAAE,kBAAkB;aACjC,CAAQ,CAAC;IACZ,CAAC;CACF;AAvBD,4BAuBC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@zeeshan60/event-processor",
3
- "version": "1.0.65",
3
+ "version": "1.0.67",
4
4
  "description": "Shared event sourcing infrastructure for Loan Tracker projects",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -33,6 +33,7 @@
33
33
  "typescript": "^5.3.3"
34
34
  },
35
35
  "dependencies": {
36
+ "fuse.js": "^7.1.0",
36
37
  "lodash": "^4.17.21",
37
38
  "rxjs": "^7.8.1",
38
39
  "uuid": "^13.0.0"