nestlens 0.1.2 → 0.2.0

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 (39) hide show
  1. package/dist/__tests__/core/storage/memory.storage.spec.d.ts +2 -0
  2. package/dist/__tests__/core/storage/memory.storage.spec.d.ts.map +1 -0
  3. package/dist/__tests__/core/storage/memory.storage.spec.js +450 -0
  4. package/dist/__tests__/core/storage/memory.storage.spec.js.map +1 -0
  5. package/dist/__tests__/core/storage/redis.storage.spec.d.ts +10 -0
  6. package/dist/__tests__/core/storage/redis.storage.spec.d.ts.map +1 -0
  7. package/dist/__tests__/core/storage/redis.storage.spec.js +660 -0
  8. package/dist/__tests__/core/storage/redis.storage.spec.js.map +1 -0
  9. package/dist/__tests__/core/storage/storage.factory.spec.d.ts +2 -0
  10. package/dist/__tests__/core/storage/storage.factory.spec.d.ts.map +1 -0
  11. package/dist/__tests__/core/storage/storage.factory.spec.js +151 -0
  12. package/dist/__tests__/core/storage/storage.factory.spec.js.map +1 -0
  13. package/dist/core/storage/index.d.ts +2 -1
  14. package/dist/core/storage/index.d.ts.map +1 -1
  15. package/dist/core/storage/index.js +17 -1
  16. package/dist/core/storage/index.js.map +1 -1
  17. package/dist/core/storage/memory.storage.d.ts +59 -0
  18. package/dist/core/storage/memory.storage.d.ts.map +1 -0
  19. package/dist/core/storage/memory.storage.js +629 -0
  20. package/dist/core/storage/memory.storage.js.map +1 -0
  21. package/dist/core/storage/redis.storage.d.ts +77 -0
  22. package/dist/core/storage/redis.storage.d.ts.map +1 -0
  23. package/dist/core/storage/redis.storage.js +595 -0
  24. package/dist/core/storage/redis.storage.js.map +1 -0
  25. package/dist/core/storage/storage.factory.d.ts +28 -0
  26. package/dist/core/storage/storage.factory.d.ts.map +1 -0
  27. package/dist/core/storage/storage.factory.js +169 -0
  28. package/dist/core/storage/storage.factory.js.map +1 -0
  29. package/dist/index.d.ts +3 -1
  30. package/dist/index.d.ts.map +1 -1
  31. package/dist/index.js +5 -1
  32. package/dist/index.js.map +1 -1
  33. package/dist/nestlens.config.d.ts +54 -0
  34. package/dist/nestlens.config.d.ts.map +1 -1
  35. package/dist/nestlens.config.js +16 -2
  36. package/dist/nestlens.config.js.map +1 -1
  37. package/dist/nestlens.module.js +3 -3
  38. package/dist/nestlens.module.js.map +1 -1
  39. package/package.json +16 -3
@@ -0,0 +1,629 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ var MemoryStorage_1;
12
+ Object.defineProperty(exports, "__esModule", { value: true });
13
+ exports.MemoryStorage = void 0;
14
+ const common_1 = require("@nestjs/common");
15
+ /**
16
+ * In-memory storage implementation for NestLens.
17
+ * Zero dependencies, works everywhere including Docker.
18
+ * Ideal for testing, development, and containerized environments.
19
+ */
20
+ let MemoryStorage = MemoryStorage_1 = class MemoryStorage {
21
+ constructor(config = {}) {
22
+ this.logger = new common_1.Logger(MemoryStorage_1.name);
23
+ // Main storage
24
+ this.entries = new Map();
25
+ this.nextId = 1;
26
+ // Tag storage
27
+ this.entryTags = new Map(); // entryId -> tags
28
+ this.tagIndex = new Map(); // tag -> entryIds
29
+ // Monitored tags
30
+ this.monitoredTags = new Map();
31
+ this.nextMonitoredTagId = 1;
32
+ this.maxEntries = config.maxEntries ?? 10000;
33
+ }
34
+ async initialize() {
35
+ this.logger.log(`In-memory storage initialized (maxEntries: ${this.maxEntries})`);
36
+ }
37
+ // ==================== Core CRUD Operations ====================
38
+ async save(entry) {
39
+ const id = this.nextId++;
40
+ const savedEntry = {
41
+ ...entry,
42
+ id,
43
+ createdAt: new Date().toISOString(),
44
+ };
45
+ this.entries.set(id, savedEntry);
46
+ this.enforceMaxEntries();
47
+ return savedEntry;
48
+ }
49
+ async saveBatch(entries) {
50
+ const savedEntries = [];
51
+ for (const entry of entries) {
52
+ const saved = await this.save(entry);
53
+ savedEntries.push(saved);
54
+ }
55
+ return savedEntries;
56
+ }
57
+ async find(filter) {
58
+ let results = Array.from(this.entries.values());
59
+ // Apply filters
60
+ if (filter.type) {
61
+ results = results.filter((e) => e.type === filter.type);
62
+ }
63
+ if (filter.requestId) {
64
+ results = results.filter((e) => e.requestId === filter.requestId);
65
+ }
66
+ if (filter.from) {
67
+ const fromTime = filter.from.getTime();
68
+ results = results.filter((e) => new Date(e.createdAt).getTime() >= fromTime);
69
+ }
70
+ if (filter.to) {
71
+ const toTime = filter.to.getTime();
72
+ results = results.filter((e) => new Date(e.createdAt).getTime() <= toTime);
73
+ }
74
+ // Sort by createdAt DESC (newest first)
75
+ results.sort((a, b) => new Date(b.createdAt).getTime() - new Date(a.createdAt).getTime());
76
+ // Apply pagination
77
+ if (filter.offset) {
78
+ results = results.slice(filter.offset);
79
+ }
80
+ if (filter.limit) {
81
+ results = results.slice(0, filter.limit);
82
+ }
83
+ // Hydrate with tags
84
+ return this.hydrateEntriesWithTags(results);
85
+ }
86
+ async findWithCursor(type, params) {
87
+ const limit = params.limit ?? 50;
88
+ let results = Array.from(this.entries.values());
89
+ // Filter by type
90
+ if (type) {
91
+ results = results.filter((e) => e.type === type);
92
+ }
93
+ // Apply cursor pagination
94
+ if (params.beforeSequence !== undefined) {
95
+ results = results.filter((e) => e.id < params.beforeSequence);
96
+ }
97
+ if (params.afterSequence !== undefined) {
98
+ results = results.filter((e) => e.id > params.afterSequence);
99
+ }
100
+ // Apply advanced filters
101
+ if (params.filters) {
102
+ results = this.applyAdvancedFilters(results, params.filters);
103
+ }
104
+ // Sort
105
+ if (params.afterSequence !== undefined) {
106
+ results.sort((a, b) => a.id - b.id);
107
+ }
108
+ else {
109
+ results.sort((a, b) => b.id - a.id);
110
+ }
111
+ // Check for more entries
112
+ const hasMore = results.length > limit;
113
+ results = results.slice(0, limit);
114
+ // Reverse if using afterSequence
115
+ if (params.afterSequence !== undefined) {
116
+ results.reverse();
117
+ }
118
+ // Get total count with filters
119
+ const total = await this.countWithFilters(type, params.filters);
120
+ const hydratedResults = this.hydrateEntriesWithTags(results);
121
+ return {
122
+ data: hydratedResults,
123
+ meta: {
124
+ hasMore,
125
+ oldestSequence: hydratedResults.length > 0 ? hydratedResults[hydratedResults.length - 1].id : null,
126
+ newestSequence: hydratedResults.length > 0 ? hydratedResults[0].id : null,
127
+ total,
128
+ },
129
+ };
130
+ }
131
+ async findById(id) {
132
+ const entry = this.entries.get(id);
133
+ if (!entry)
134
+ return null;
135
+ const [hydrated] = this.hydrateEntriesWithTags([entry]);
136
+ return hydrated;
137
+ }
138
+ async count(type) {
139
+ if (!type)
140
+ return this.entries.size;
141
+ return Array.from(this.entries.values()).filter((e) => e.type === type).length;
142
+ }
143
+ async clear() {
144
+ this.entries.clear();
145
+ this.entryTags.clear();
146
+ this.tagIndex.clear();
147
+ this.nextId = 1;
148
+ this.logger.log('Storage cleared');
149
+ }
150
+ async close() {
151
+ this.logger.log('In-memory storage closed');
152
+ }
153
+ // ==================== Statistics ====================
154
+ async getLatestSequence(type) {
155
+ const entries = Array.from(this.entries.values()).filter((e) => !type || e.type === type);
156
+ if (entries.length === 0)
157
+ return null;
158
+ return Math.max(...entries.map((e) => e.id));
159
+ }
160
+ async hasEntriesAfter(sequence, type) {
161
+ return Array.from(this.entries.values()).filter((e) => e.id > sequence && (!type || e.type === type)).length;
162
+ }
163
+ async getStats() {
164
+ const entries = Array.from(this.entries.values());
165
+ const byType = {};
166
+ for (const entry of entries) {
167
+ byType[entry.type] = (byType[entry.type] || 0) + 1;
168
+ }
169
+ // Calculate average response time from request entries
170
+ const requests = entries.filter((e) => e.type === 'request');
171
+ const durations = requests
172
+ .map((e) => e.payload.duration)
173
+ .filter((d) => d !== undefined);
174
+ const avgResponseTime = durations.length > 0 ? durations.reduce((a, b) => a + b, 0) / durations.length : undefined;
175
+ // Count slow queries
176
+ const slowQueries = entries.filter((e) => e.type === 'query' && e.payload.slow === true).length;
177
+ // Count unresolved exceptions
178
+ const unresolvedExceptions = entries.filter((e) => e.type === 'exception' && !e.resolvedAt).length;
179
+ return {
180
+ total: entries.length,
181
+ byType,
182
+ avgResponseTime,
183
+ slowQueries,
184
+ exceptions: byType.exception || 0,
185
+ unresolvedExceptions,
186
+ };
187
+ }
188
+ async getStorageStats() {
189
+ const entries = Array.from(this.entries.values());
190
+ const byType = {};
191
+ for (const entry of entries) {
192
+ byType[entry.type] = (byType[entry.type] || 0) + 1;
193
+ }
194
+ const sorted = [...entries].sort((a, b) => a.id - b.id);
195
+ return {
196
+ total: entries.length,
197
+ byType,
198
+ oldestEntry: sorted[0]?.createdAt || null,
199
+ newestEntry: sorted[sorted.length - 1]?.createdAt || null,
200
+ databaseSize: undefined, // Memory storage doesn't have file size
201
+ };
202
+ }
203
+ // ==================== Pruning ====================
204
+ async prune(before) {
205
+ const beforeTime = before.getTime();
206
+ let deleted = 0;
207
+ for (const [id, entry] of this.entries) {
208
+ if (new Date(entry.createdAt).getTime() < beforeTime) {
209
+ this.entries.delete(id);
210
+ this.removeEntryTagsInternal(id);
211
+ deleted++;
212
+ }
213
+ }
214
+ if (deleted > 0) {
215
+ this.logger.log(`Pruned ${deleted} entries older than ${before.toISOString()}`);
216
+ }
217
+ return deleted;
218
+ }
219
+ async pruneByType(type, before) {
220
+ const beforeTime = before.getTime();
221
+ let deleted = 0;
222
+ for (const [id, entry] of this.entries) {
223
+ if (entry.type === type && new Date(entry.createdAt).getTime() < beforeTime) {
224
+ this.entries.delete(id);
225
+ this.removeEntryTagsInternal(id);
226
+ deleted++;
227
+ }
228
+ }
229
+ return deleted;
230
+ }
231
+ // ==================== Tag Methods ====================
232
+ async addTags(entryId, tags) {
233
+ if (!this.entryTags.has(entryId)) {
234
+ this.entryTags.set(entryId, new Set());
235
+ }
236
+ const entryTagSet = this.entryTags.get(entryId);
237
+ for (const tag of tags) {
238
+ entryTagSet.add(tag);
239
+ if (!this.tagIndex.has(tag)) {
240
+ this.tagIndex.set(tag, new Set());
241
+ }
242
+ this.tagIndex.get(tag).add(entryId);
243
+ }
244
+ }
245
+ async removeTags(entryId, tags) {
246
+ const entryTagSet = this.entryTags.get(entryId);
247
+ if (!entryTagSet)
248
+ return;
249
+ for (const tag of tags) {
250
+ entryTagSet.delete(tag);
251
+ this.tagIndex.get(tag)?.delete(entryId);
252
+ // Clean up empty tag index entries
253
+ if (this.tagIndex.get(tag)?.size === 0) {
254
+ this.tagIndex.delete(tag);
255
+ }
256
+ }
257
+ }
258
+ async getEntryTags(entryId) {
259
+ const tags = this.entryTags.get(entryId);
260
+ return tags ? Array.from(tags).sort() : [];
261
+ }
262
+ async getAllTags() {
263
+ const result = [];
264
+ for (const [tag, entryIds] of this.tagIndex) {
265
+ if (entryIds.size > 0) {
266
+ result.push({ tag, count: entryIds.size });
267
+ }
268
+ }
269
+ return result.sort((a, b) => b.count - a.count || a.tag.localeCompare(b.tag));
270
+ }
271
+ async findByTags(tags, logic = 'OR', limit = 50) {
272
+ if (tags.length === 0)
273
+ return [];
274
+ let matchingIds;
275
+ if (logic === 'OR') {
276
+ matchingIds = new Set();
277
+ for (const tag of tags) {
278
+ const ids = this.tagIndex.get(tag);
279
+ if (ids) {
280
+ for (const id of ids)
281
+ matchingIds.add(id);
282
+ }
283
+ }
284
+ }
285
+ else {
286
+ // AND logic - entries must have ALL specified tags
287
+ const tagSets = tags.map((tag) => this.tagIndex.get(tag) || new Set());
288
+ if (tagSets.length === 0 || tagSets.some((set) => set.size === 0)) {
289
+ return [];
290
+ }
291
+ matchingIds = new Set(tagSets[0]);
292
+ for (let i = 1; i < tagSets.length; i++) {
293
+ matchingIds = new Set([...matchingIds].filter((id) => tagSets[i].has(id)));
294
+ }
295
+ }
296
+ const entries = Array.from(matchingIds)
297
+ .map((id) => this.entries.get(id))
298
+ .filter((e) => e !== undefined)
299
+ .sort((a, b) => b.id - a.id)
300
+ .slice(0, limit);
301
+ return this.hydrateEntriesWithTags(entries);
302
+ }
303
+ // ==================== Monitored Tags ====================
304
+ async addMonitoredTag(tag) {
305
+ const existing = this.monitoredTags.get(tag);
306
+ if (existing) {
307
+ return existing;
308
+ }
309
+ const monitored = {
310
+ id: this.nextMonitoredTagId++,
311
+ tag,
312
+ createdAt: new Date().toISOString(),
313
+ };
314
+ this.monitoredTags.set(tag, monitored);
315
+ return monitored;
316
+ }
317
+ async removeMonitoredTag(tag) {
318
+ this.monitoredTags.delete(tag);
319
+ }
320
+ async getMonitoredTags() {
321
+ return Array.from(this.monitoredTags.values()).sort((a, b) => a.tag.localeCompare(b.tag));
322
+ }
323
+ // ==================== Resolution ====================
324
+ async resolveEntry(id) {
325
+ const entry = this.entries.get(id);
326
+ if (entry) {
327
+ entry.resolvedAt = new Date().toISOString();
328
+ }
329
+ }
330
+ async unresolveEntry(id) {
331
+ const entry = this.entries.get(id);
332
+ if (entry) {
333
+ entry.resolvedAt = undefined;
334
+ }
335
+ }
336
+ // ==================== Family Hash ====================
337
+ async updateFamilyHash(id, familyHash) {
338
+ const entry = this.entries.get(id);
339
+ if (entry) {
340
+ entry.familyHash = familyHash;
341
+ }
342
+ }
343
+ async findByFamilyHash(familyHash, limit = 50) {
344
+ const entries = Array.from(this.entries.values())
345
+ .filter((e) => e.familyHash === familyHash)
346
+ .sort((a, b) => b.id - a.id)
347
+ .slice(0, limit);
348
+ return this.hydrateEntriesWithTags(entries);
349
+ }
350
+ async getGroupedByFamilyHash(type, limit = 50) {
351
+ const groups = new Map();
352
+ for (const entry of this.entries.values()) {
353
+ if (!entry.familyHash)
354
+ continue;
355
+ if (type && entry.type !== type)
356
+ continue;
357
+ if (!groups.has(entry.familyHash)) {
358
+ groups.set(entry.familyHash, []);
359
+ }
360
+ groups.get(entry.familyHash).push(entry);
361
+ }
362
+ const result = [];
363
+ for (const [familyHash, entries] of groups) {
364
+ entries.sort((a, b) => b.id - a.id);
365
+ const [latestEntry] = this.hydrateEntriesWithTags([entries[0]]);
366
+ result.push({
367
+ familyHash,
368
+ count: entries.length,
369
+ latestEntry,
370
+ });
371
+ }
372
+ return result.sort((a, b) => b.count - a.count || b.latestEntry.id - a.latestEntry.id).slice(0, limit);
373
+ }
374
+ // ==================== Lifecycle ====================
375
+ onModuleDestroy() {
376
+ // Nothing to clean up for memory storage
377
+ }
378
+ // ==================== Private Helpers ====================
379
+ hydrateEntriesWithTags(entries) {
380
+ return entries.map((entry) => ({
381
+ ...entry,
382
+ tags: Array.from(this.entryTags.get(entry.id) || []),
383
+ }));
384
+ }
385
+ removeEntryTagsInternal(entryId) {
386
+ const tags = this.entryTags.get(entryId);
387
+ if (tags) {
388
+ for (const tag of tags) {
389
+ this.tagIndex.get(tag)?.delete(entryId);
390
+ if (this.tagIndex.get(tag)?.size === 0) {
391
+ this.tagIndex.delete(tag);
392
+ }
393
+ }
394
+ this.entryTags.delete(entryId);
395
+ }
396
+ }
397
+ enforceMaxEntries() {
398
+ if (this.entries.size > this.maxEntries) {
399
+ // Remove oldest entries (lowest IDs)
400
+ const sorted = Array.from(this.entries.keys()).sort((a, b) => a - b);
401
+ const toRemove = sorted.slice(0, this.entries.size - this.maxEntries);
402
+ for (const id of toRemove) {
403
+ this.entries.delete(id);
404
+ this.removeEntryTagsInternal(id);
405
+ }
406
+ this.logger.debug(`Enforced max entries limit, removed ${toRemove.length} oldest entries`);
407
+ }
408
+ }
409
+ async countWithFilters(type, filters) {
410
+ let results = Array.from(this.entries.values());
411
+ if (type) {
412
+ results = results.filter((e) => e.type === type);
413
+ }
414
+ if (filters) {
415
+ results = this.applyAdvancedFilters(results, filters);
416
+ }
417
+ return results.length;
418
+ }
419
+ applyAdvancedFilters(entries, filters) {
420
+ if (!filters)
421
+ return entries;
422
+ return entries.filter((entry) => {
423
+ const payload = entry.payload;
424
+ // Log filters
425
+ if (filters.levels?.length && entry.type === 'log') {
426
+ if (!filters.levels.includes(payload.level))
427
+ return false;
428
+ }
429
+ if (filters.contexts?.length && entry.type === 'log') {
430
+ if (!filters.contexts.includes(payload.context))
431
+ return false;
432
+ }
433
+ // Query filters
434
+ if (filters.queryTypes?.length && entry.type === 'query') {
435
+ const query = payload.query || '';
436
+ if (!filters.queryTypes.some((qt) => query.toUpperCase().startsWith(qt)))
437
+ return false;
438
+ }
439
+ if (filters.sources?.length) {
440
+ if (!filters.sources.includes(payload.source))
441
+ return false;
442
+ }
443
+ if (filters.slow !== undefined && entry.type === 'query') {
444
+ if (payload.slow !== filters.slow)
445
+ return false;
446
+ }
447
+ // Exception filters
448
+ if (filters.names?.length && entry.type === 'exception') {
449
+ const name = payload.name;
450
+ if (!filters.names.some((n) => name?.includes(n)))
451
+ return false;
452
+ }
453
+ if (filters.resolved !== undefined) {
454
+ const isResolved = !!entry.resolvedAt;
455
+ if (isResolved !== filters.resolved)
456
+ return false;
457
+ }
458
+ // Request filters
459
+ if (filters.methods?.length) {
460
+ const method = payload.method || payload.request?.method;
461
+ if (!method || !filters.methods.includes(method))
462
+ return false;
463
+ }
464
+ if (filters.paths?.length) {
465
+ const path = payload.path || payload.request?.url || '';
466
+ if (!filters.paths.some((p) => {
467
+ const pattern = p.replace(/\*/g, '.*');
468
+ return new RegExp(pattern).test(path);
469
+ }))
470
+ return false;
471
+ }
472
+ if (filters.statuses?.length) {
473
+ const status = payload.statusCode;
474
+ const hasErr = filters.statuses.includes('ERR');
475
+ const numericStatuses = filters.statuses.filter((s) => s !== 'ERR');
476
+ if (status === undefined || status === null) {
477
+ if (!hasErr)
478
+ return false;
479
+ }
480
+ else {
481
+ if (!numericStatuses.includes(status))
482
+ return false;
483
+ }
484
+ }
485
+ if (filters.hostnames?.length) {
486
+ const host = payload.headers?.host ||
487
+ payload.headers?.Host ||
488
+ payload.hostname;
489
+ if (!host || !filters.hostnames.some((h) => host.includes(h)))
490
+ return false;
491
+ }
492
+ if (filters.controllers?.length) {
493
+ if (!filters.controllers.includes(payload.controllerAction))
494
+ return false;
495
+ }
496
+ if (filters.ips?.length) {
497
+ if (!filters.ips.includes(payload.ip))
498
+ return false;
499
+ }
500
+ // Schedule filters
501
+ if (filters.scheduleStatuses?.length && entry.type === 'schedule') {
502
+ if (!filters.scheduleStatuses.includes(payload.status))
503
+ return false;
504
+ }
505
+ // Job filters
506
+ if (filters.jobStatuses?.length && entry.type === 'job') {
507
+ if (!filters.jobStatuses.includes(payload.status))
508
+ return false;
509
+ }
510
+ if (filters.queues?.length && entry.type === 'job') {
511
+ if (!filters.queues.includes(payload.queue))
512
+ return false;
513
+ }
514
+ // Cache filters
515
+ if (filters.cacheOperations?.length && entry.type === 'cache') {
516
+ if (!filters.cacheOperations.includes(payload.operation))
517
+ return false;
518
+ }
519
+ // Mail filters
520
+ if (filters.mailStatuses?.length && entry.type === 'mail') {
521
+ if (!filters.mailStatuses.includes(payload.status))
522
+ return false;
523
+ }
524
+ // Redis filters
525
+ if (filters.redisStatuses?.length && entry.type === 'redis') {
526
+ if (!filters.redisStatuses.includes(payload.status))
527
+ return false;
528
+ }
529
+ if (filters.redisCommands?.length && entry.type === 'redis') {
530
+ if (!filters.redisCommands.includes(payload.command))
531
+ return false;
532
+ }
533
+ // Model filters
534
+ if (filters.modelActions?.length && entry.type === 'model') {
535
+ if (!filters.modelActions.includes(payload.action))
536
+ return false;
537
+ }
538
+ if (filters.entities?.length && entry.type === 'model') {
539
+ if (!filters.entities.includes(payload.entity))
540
+ return false;
541
+ }
542
+ if (filters.modelSources?.length && entry.type === 'model') {
543
+ if (!filters.modelSources.includes(payload.source))
544
+ return false;
545
+ }
546
+ // Notification filters
547
+ if (filters.notificationTypes?.length && entry.type === 'notification') {
548
+ if (!filters.notificationTypes.includes(payload.type))
549
+ return false;
550
+ }
551
+ if (filters.notificationStatuses?.length && entry.type === 'notification') {
552
+ if (!filters.notificationStatuses.includes(payload.status))
553
+ return false;
554
+ }
555
+ // View filters
556
+ if (filters.viewFormats?.length && entry.type === 'view') {
557
+ if (!filters.viewFormats.includes(payload.format))
558
+ return false;
559
+ }
560
+ if (filters.viewStatuses?.length && entry.type === 'view') {
561
+ if (!filters.viewStatuses.includes(payload.status))
562
+ return false;
563
+ }
564
+ // Command filters
565
+ if (filters.commandStatuses?.length && entry.type === 'command') {
566
+ if (!filters.commandStatuses.includes(payload.status))
567
+ return false;
568
+ }
569
+ if (filters.commandNames?.length && entry.type === 'command') {
570
+ const name = payload.name;
571
+ if (!filters.commandNames.some((n) => name?.includes(n)))
572
+ return false;
573
+ }
574
+ // Gate filters
575
+ if (filters.gateNames?.length && entry.type === 'gate') {
576
+ const gate = payload.gate;
577
+ if (!filters.gateNames.some((n) => gate?.includes(n)))
578
+ return false;
579
+ }
580
+ if (filters.gateResults?.length && entry.type === 'gate') {
581
+ const allowed = payload.allowed;
582
+ const result = allowed ? 'allowed' : 'denied';
583
+ if (!filters.gateResults.includes(result))
584
+ return false;
585
+ }
586
+ // Batch filters
587
+ if (filters.batchStatuses?.length && entry.type === 'batch') {
588
+ if (!filters.batchStatuses.includes(payload.status))
589
+ return false;
590
+ }
591
+ if (filters.batchOperations?.length && entry.type === 'batch') {
592
+ if (!filters.batchOperations.includes(payload.operation))
593
+ return false;
594
+ }
595
+ // Dump filters
596
+ if (filters.dumpStatuses?.length && entry.type === 'dump') {
597
+ if (!filters.dumpStatuses.includes(payload.status))
598
+ return false;
599
+ }
600
+ if (filters.dumpOperations?.length && entry.type === 'dump') {
601
+ if (!filters.dumpOperations.includes(payload.operation))
602
+ return false;
603
+ }
604
+ if (filters.dumpFormats?.length && entry.type === 'dump') {
605
+ if (!filters.dumpFormats.includes(payload.format))
606
+ return false;
607
+ }
608
+ // Tag filter
609
+ if (filters.tags?.length) {
610
+ const entryTagSet = this.entryTags.get(entry.id);
611
+ if (!entryTagSet || !filters.tags.some((t) => entryTagSet.has(t)))
612
+ return false;
613
+ }
614
+ // Search filter
615
+ if (filters.search) {
616
+ const payloadStr = JSON.stringify(payload).toLowerCase();
617
+ if (!payloadStr.includes(filters.search.toLowerCase()))
618
+ return false;
619
+ }
620
+ return true;
621
+ });
622
+ }
623
+ };
624
+ exports.MemoryStorage = MemoryStorage;
625
+ exports.MemoryStorage = MemoryStorage = MemoryStorage_1 = __decorate([
626
+ (0, common_1.Injectable)(),
627
+ __metadata("design:paramtypes", [Object])
628
+ ], MemoryStorage);
629
+ //# sourceMappingURL=memory.storage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memory.storage.js","sourceRoot":"","sources":["../../../src/core/storage/memory.storage.ts"],"names":[],"mappings":"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"}