nestlens 0.1.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.
- package/LICENSE +21 -0
- package/README.md +145 -0
- package/dist/__tests__/api/api.controller.spec.d.ts +2 -0
- package/dist/__tests__/api/api.controller.spec.d.ts.map +1 -0
- package/dist/__tests__/api/api.controller.spec.js +982 -0
- package/dist/__tests__/api/api.controller.spec.js.map +1 -0
- package/dist/__tests__/api/api.guard.spec.d.ts +2 -0
- package/dist/__tests__/api/api.guard.spec.d.ts.map +1 -0
- package/dist/__tests__/api/api.guard.spec.js +572 -0
- package/dist/__tests__/api/api.guard.spec.js.map +1 -0
- package/dist/__tests__/api/dashboard.controller.spec.d.ts +2 -0
- package/dist/__tests__/api/dashboard.controller.spec.d.ts.map +1 -0
- package/dist/__tests__/api/dashboard.controller.spec.js +474 -0
- package/dist/__tests__/api/dashboard.controller.spec.js.map +1 -0
- package/dist/__tests__/api/tag.controller.spec.d.ts +2 -0
- package/dist/__tests__/api/tag.controller.spec.d.ts.map +1 -0
- package/dist/__tests__/api/tag.controller.spec.js +280 -0
- package/dist/__tests__/api/tag.controller.spec.js.map +1 -0
- package/dist/__tests__/collector.service.spec.d.ts +2 -0
- package/dist/__tests__/collector.service.spec.d.ts.map +1 -0
- package/dist/__tests__/collector.service.spec.js +240 -0
- package/dist/__tests__/collector.service.spec.js.map +1 -0
- package/dist/__tests__/core/collector.service.spec.d.ts +2 -0
- package/dist/__tests__/core/collector.service.spec.d.ts.map +1 -0
- package/dist/__tests__/core/collector.service.spec.js +526 -0
- package/dist/__tests__/core/collector.service.spec.js.map +1 -0
- package/dist/__tests__/core/family-hash.service.spec.d.ts +2 -0
- package/dist/__tests__/core/family-hash.service.spec.d.ts.map +1 -0
- package/dist/__tests__/core/family-hash.service.spec.js +1117 -0
- package/dist/__tests__/core/family-hash.service.spec.js.map +1 -0
- package/dist/__tests__/core/pruning.service.spec.d.ts +2 -0
- package/dist/__tests__/core/pruning.service.spec.d.ts.map +1 -0
- package/dist/__tests__/core/pruning.service.spec.js +224 -0
- package/dist/__tests__/core/pruning.service.spec.js.map +1 -0
- package/dist/__tests__/core/storage/sqlite.storage.spec.d.ts +2 -0
- package/dist/__tests__/core/storage/sqlite.storage.spec.d.ts.map +1 -0
- package/dist/__tests__/core/storage/sqlite.storage.spec.js +853 -0
- package/dist/__tests__/core/storage/sqlite.storage.spec.js.map +1 -0
- package/dist/__tests__/core/tag.service.spec.d.ts +2 -0
- package/dist/__tests__/core/tag.service.spec.d.ts.map +1 -0
- package/dist/__tests__/core/tag.service.spec.js +994 -0
- package/dist/__tests__/core/tag.service.spec.js.map +1 -0
- package/dist/__tests__/family-hash.service.spec.d.ts +2 -0
- package/dist/__tests__/family-hash.service.spec.d.ts.map +1 -0
- package/dist/__tests__/family-hash.service.spec.js +325 -0
- package/dist/__tests__/family-hash.service.spec.js.map +1 -0
- package/dist/__tests__/filters/api-filters.spec.d.ts +2 -0
- package/dist/__tests__/filters/api-filters.spec.d.ts.map +1 -0
- package/dist/__tests__/filters/api-filters.spec.js +172 -0
- package/dist/__tests__/filters/api-filters.spec.js.map +1 -0
- package/dist/__tests__/filters/entry-factories.d.ts +20 -0
- package/dist/__tests__/filters/entry-factories.d.ts.map +1 -0
- package/dist/__tests__/filters/entry-factories.js +288 -0
- package/dist/__tests__/filters/entry-factories.js.map +1 -0
- package/dist/__tests__/filters/filter-contract.spec.d.ts +2 -0
- package/dist/__tests__/filters/filter-contract.spec.d.ts.map +1 -0
- package/dist/__tests__/filters/filter-contract.spec.js +230 -0
- package/dist/__tests__/filters/filter-contract.spec.js.map +1 -0
- package/dist/__tests__/filters/filter-test-data.d.ts +26 -0
- package/dist/__tests__/filters/filter-test-data.d.ts.map +1 -0
- package/dist/__tests__/filters/filter-test-data.js +374 -0
- package/dist/__tests__/filters/filter-test-data.js.map +1 -0
- package/dist/__tests__/filters/storage-filters.spec.d.ts +2 -0
- package/dist/__tests__/filters/storage-filters.spec.d.ts.map +1 -0
- package/dist/__tests__/filters/storage-filters.spec.js +699 -0
- package/dist/__tests__/filters/storage-filters.spec.js.map +1 -0
- package/dist/__tests__/filters/test-utils.d.ts +23 -0
- package/dist/__tests__/filters/test-utils.d.ts.map +1 -0
- package/dist/__tests__/filters/test-utils.js +54 -0
- package/dist/__tests__/filters/test-utils.js.map +1 -0
- package/dist/__tests__/nestlens.module.spec.d.ts +2 -0
- package/dist/__tests__/nestlens.module.spec.d.ts.map +1 -0
- package/dist/__tests__/nestlens.module.spec.js +620 -0
- package/dist/__tests__/nestlens.module.spec.js.map +1 -0
- package/dist/__tests__/pruning.service.spec.d.ts +2 -0
- package/dist/__tests__/pruning.service.spec.d.ts.map +1 -0
- package/dist/__tests__/pruning.service.spec.js +142 -0
- package/dist/__tests__/pruning.service.spec.js.map +1 -0
- package/dist/__tests__/setup.d.ts +7 -0
- package/dist/__tests__/setup.d.ts.map +1 -0
- package/dist/__tests__/setup.js +24 -0
- package/dist/__tests__/setup.js.map +1 -0
- package/dist/__tests__/tag.service.spec.d.ts +2 -0
- package/dist/__tests__/tag.service.spec.d.ts.map +1 -0
- package/dist/__tests__/tag.service.spec.js +482 -0
- package/dist/__tests__/tag.service.spec.js.map +1 -0
- package/dist/__tests__/watchers/batch.watcher.spec.d.ts +2 -0
- package/dist/__tests__/watchers/batch.watcher.spec.d.ts.map +1 -0
- package/dist/__tests__/watchers/batch.watcher.spec.js +515 -0
- package/dist/__tests__/watchers/batch.watcher.spec.js.map +1 -0
- package/dist/__tests__/watchers/cache.watcher.spec.d.ts +2 -0
- package/dist/__tests__/watchers/cache.watcher.spec.d.ts.map +1 -0
- package/dist/__tests__/watchers/cache.watcher.spec.js +395 -0
- package/dist/__tests__/watchers/cache.watcher.spec.js.map +1 -0
- package/dist/__tests__/watchers/command.watcher.spec.d.ts +2 -0
- package/dist/__tests__/watchers/command.watcher.spec.d.ts.map +1 -0
- package/dist/__tests__/watchers/command.watcher.spec.js +598 -0
- package/dist/__tests__/watchers/command.watcher.spec.js.map +1 -0
- package/dist/__tests__/watchers/dump.watcher.spec.d.ts +2 -0
- package/dist/__tests__/watchers/dump.watcher.spec.d.ts.map +1 -0
- package/dist/__tests__/watchers/dump.watcher.spec.js +724 -0
- package/dist/__tests__/watchers/dump.watcher.spec.js.map +1 -0
- package/dist/__tests__/watchers/event.watcher.spec.d.ts +2 -0
- package/dist/__tests__/watchers/event.watcher.spec.d.ts.map +1 -0
- package/dist/__tests__/watchers/event.watcher.spec.js +316 -0
- package/dist/__tests__/watchers/event.watcher.spec.js.map +1 -0
- package/dist/__tests__/watchers/exception.watcher.spec.d.ts +2 -0
- package/dist/__tests__/watchers/exception.watcher.spec.d.ts.map +1 -0
- package/dist/__tests__/watchers/exception.watcher.spec.js +495 -0
- package/dist/__tests__/watchers/exception.watcher.spec.js.map +1 -0
- package/dist/__tests__/watchers/gate.watcher.spec.d.ts +2 -0
- package/dist/__tests__/watchers/gate.watcher.spec.d.ts.map +1 -0
- package/dist/__tests__/watchers/gate.watcher.spec.js +683 -0
- package/dist/__tests__/watchers/gate.watcher.spec.js.map +1 -0
- package/dist/__tests__/watchers/http-client.watcher.spec.d.ts +2 -0
- package/dist/__tests__/watchers/http-client.watcher.spec.d.ts.map +1 -0
- package/dist/__tests__/watchers/http-client.watcher.spec.js +888 -0
- package/dist/__tests__/watchers/http-client.watcher.spec.js.map +1 -0
- package/dist/__tests__/watchers/job.watcher.spec.d.ts +2 -0
- package/dist/__tests__/watchers/job.watcher.spec.d.ts.map +1 -0
- package/dist/__tests__/watchers/job.watcher.spec.js +513 -0
- package/dist/__tests__/watchers/job.watcher.spec.js.map +1 -0
- package/dist/__tests__/watchers/log.watcher.spec.d.ts +2 -0
- package/dist/__tests__/watchers/log.watcher.spec.d.ts.map +1 -0
- package/dist/__tests__/watchers/log.watcher.spec.js +428 -0
- package/dist/__tests__/watchers/log.watcher.spec.js.map +1 -0
- package/dist/__tests__/watchers/mail.watcher.spec.d.ts +2 -0
- package/dist/__tests__/watchers/mail.watcher.spec.d.ts.map +1 -0
- package/dist/__tests__/watchers/mail.watcher.spec.js +425 -0
- package/dist/__tests__/watchers/mail.watcher.spec.js.map +1 -0
- package/dist/__tests__/watchers/model.watcher.spec.d.ts +2 -0
- package/dist/__tests__/watchers/model.watcher.spec.d.ts.map +1 -0
- package/dist/__tests__/watchers/model.watcher.spec.js +675 -0
- package/dist/__tests__/watchers/model.watcher.spec.js.map +1 -0
- package/dist/__tests__/watchers/notification.watcher.spec.d.ts +2 -0
- package/dist/__tests__/watchers/notification.watcher.spec.d.ts.map +1 -0
- package/dist/__tests__/watchers/notification.watcher.spec.js +595 -0
- package/dist/__tests__/watchers/notification.watcher.spec.js.map +1 -0
- package/dist/__tests__/watchers/query/types.spec.d.ts +2 -0
- package/dist/__tests__/watchers/query/types.spec.d.ts.map +1 -0
- package/dist/__tests__/watchers/query/types.spec.js +292 -0
- package/dist/__tests__/watchers/query/types.spec.js.map +1 -0
- package/dist/__tests__/watchers/query.watcher.spec.d.ts +2 -0
- package/dist/__tests__/watchers/query.watcher.spec.d.ts.map +1 -0
- package/dist/__tests__/watchers/query.watcher.spec.js +597 -0
- package/dist/__tests__/watchers/query.watcher.spec.js.map +1 -0
- package/dist/__tests__/watchers/redis.watcher.spec.d.ts +2 -0
- package/dist/__tests__/watchers/redis.watcher.spec.d.ts.map +1 -0
- package/dist/__tests__/watchers/redis.watcher.spec.js +634 -0
- package/dist/__tests__/watchers/redis.watcher.spec.js.map +1 -0
- package/dist/__tests__/watchers/request.watcher.spec.d.ts +2 -0
- package/dist/__tests__/watchers/request.watcher.spec.d.ts.map +1 -0
- package/dist/__tests__/watchers/request.watcher.spec.js +1017 -0
- package/dist/__tests__/watchers/request.watcher.spec.js.map +1 -0
- package/dist/__tests__/watchers/schedule.watcher.spec.d.ts +2 -0
- package/dist/__tests__/watchers/schedule.watcher.spec.d.ts.map +1 -0
- package/dist/__tests__/watchers/schedule.watcher.spec.js +338 -0
- package/dist/__tests__/watchers/schedule.watcher.spec.js.map +1 -0
- package/dist/__tests__/watchers/view.watcher.spec.d.ts +2 -0
- package/dist/__tests__/watchers/view.watcher.spec.d.ts.map +1 -0
- package/dist/__tests__/watchers/view.watcher.spec.js +564 -0
- package/dist/__tests__/watchers/view.watcher.spec.js.map +1 -0
- package/dist/api/api.controller.d.ts +193 -0
- package/dist/api/api.controller.d.ts.map +1 -0
- package/dist/api/api.controller.js +562 -0
- package/dist/api/api.controller.js.map +1 -0
- package/dist/api/api.guard.d.ts +77 -0
- package/dist/api/api.guard.d.ts.map +1 -0
- package/dist/api/api.guard.js +294 -0
- package/dist/api/api.guard.js.map +1 -0
- package/dist/api/dashboard.controller.d.ts +49 -0
- package/dist/api/dashboard.controller.d.ts.map +1 -0
- package/dist/api/dashboard.controller.js +472 -0
- package/dist/api/dashboard.controller.js.map +1 -0
- package/dist/api/index.d.ts +5 -0
- package/dist/api/index.d.ts.map +1 -0
- package/dist/api/index.js +21 -0
- package/dist/api/index.js.map +1 -0
- package/dist/api/tag.controller.d.ts +65 -0
- package/dist/api/tag.controller.d.ts.map +1 -0
- package/dist/api/tag.controller.js +149 -0
- package/dist/api/tag.controller.js.map +1 -0
- package/dist/core/collector.service.d.ts +80 -0
- package/dist/core/collector.service.d.ts.map +1 -0
- package/dist/core/collector.service.js +255 -0
- package/dist/core/collector.service.js.map +1 -0
- package/dist/core/family-hash.service.d.ts +64 -0
- package/dist/core/family-hash.service.d.ts.map +1 -0
- package/dist/core/family-hash.service.js +281 -0
- package/dist/core/family-hash.service.js.map +1 -0
- package/dist/core/index.d.ts +4 -0
- package/dist/core/index.d.ts.map +1 -0
- package/dist/core/index.js +20 -0
- package/dist/core/index.js.map +1 -0
- package/dist/core/pruning.service.d.ts +16 -0
- package/dist/core/pruning.service.d.ts.map +1 -0
- package/dist/core/pruning.service.js +71 -0
- package/dist/core/pruning.service.js.map +1 -0
- package/dist/core/storage/index.d.ts +3 -0
- package/dist/core/storage/index.d.ts.map +1 -0
- package/dist/core/storage/index.js +19 -0
- package/dist/core/storage/index.js.map +1 -0
- package/dist/core/storage/sqlite.storage.d.ts +60 -0
- package/dist/core/storage/sqlite.storage.d.ts.map +1 -0
- package/dist/core/storage/sqlite.storage.js +929 -0
- package/dist/core/storage/sqlite.storage.js.map +1 -0
- package/dist/core/storage/storage.interface.d.ts +122 -0
- package/dist/core/storage/storage.interface.d.ts.map +1 -0
- package/dist/core/storage/storage.interface.js +5 -0
- package/dist/core/storage/storage.interface.js.map +1 -0
- package/dist/core/tag.service.d.ts +71 -0
- package/dist/core/tag.service.d.ts.map +1 -0
- package/dist/core/tag.service.js +568 -0
- package/dist/core/tag.service.js.map +1 -0
- package/dist/dashboard/public/assets/BatchesPage-DFT4fKlJ.js +1 -0
- package/dist/dashboard/public/assets/CachePage-CRy1Tjb8.js +1 -0
- package/dist/dashboard/public/assets/ClickableBadge-CV5J3THx.js +1 -0
- package/dist/dashboard/public/assets/CommandsPage-DdRnTm-W.js +1 -0
- package/dist/dashboard/public/assets/DashboardPage-CjaRZXYy.js +26 -0
- package/dist/dashboard/public/assets/DataTable-B6o9H8lh.js +88 -0
- package/dist/dashboard/public/assets/DumpsPage-DO8y1RTg.js +1 -0
- package/dist/dashboard/public/assets/EntryDetailPage-By-YcAGL.js +125 -0
- package/dist/dashboard/public/assets/EventsPage-u-r4AiT4.js +1 -0
- package/dist/dashboard/public/assets/ExceptionsPage-DXUcARr1.js +6 -0
- package/dist/dashboard/public/assets/GatesPage-DpeP7CDZ.js +1 -0
- package/dist/dashboard/public/assets/HttpClientPage-BJ4-5E6t.js +1 -0
- package/dist/dashboard/public/assets/JobsPage-Dv3KaX2x.js +1 -0
- package/dist/dashboard/public/assets/LogsPage-D0Q3yDb1.js +1 -0
- package/dist/dashboard/public/assets/MailPage-Bf8C6WF6.js +1 -0
- package/dist/dashboard/public/assets/ModelsPage-BMHncI5y.js +1 -0
- package/dist/dashboard/public/assets/NotificationsPage-D5-I-Oxb.js +1 -0
- package/dist/dashboard/public/assets/QueriesPage-oNp0i6Gt.js +1 -0
- package/dist/dashboard/public/assets/RedisPage-_GeS2OD8.js +1 -0
- package/dist/dashboard/public/assets/RequestsPage-BCwqu9US.js +1 -0
- package/dist/dashboard/public/assets/SchedulePage-CR0P-oX6.js +1 -0
- package/dist/dashboard/public/assets/ViewsPage-Dsy5ECRA.js +1 -0
- package/dist/dashboard/public/assets/calendar-DfK3x-6B.js +6 -0
- package/dist/dashboard/public/assets/circle-check-big-DcsYW8y8.js +6 -0
- package/dist/dashboard/public/assets/format-BFldcnCk.js +1 -0
- package/dist/dashboard/public/assets/index-DmeA1maE.css +1 -0
- package/dist/dashboard/public/assets/index-rkbGYdU7.js +351 -0
- package/dist/dashboard/public/assets/types-Cldoe2db.js +1 -0
- package/dist/dashboard/public/assets/vendor-B2nVRih0.js +43 -0
- package/dist/dashboard/public/assets/zap-DqtRi0JM.js +6 -0
- package/dist/dashboard/public/index.html +15 -0
- package/dist/dashboard/public/nestlens-icon.svg +9 -0
- package/dist/index.d.ts +22 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +69 -0
- package/dist/index.js.map +1 -0
- package/dist/nestlens.config.d.ts +216 -0
- package/dist/nestlens.config.d.ts.map +1 -0
- package/dist/nestlens.config.js +57 -0
- package/dist/nestlens.config.js.map +1 -0
- package/dist/nestlens.module.d.ts +10 -0
- package/dist/nestlens.module.d.ts.map +1 -0
- package/dist/nestlens.module.js +211 -0
- package/dist/nestlens.module.js.map +1 -0
- package/dist/types/entry.types.d.ts +368 -0
- package/dist/types/entry.types.d.ts.map +1 -0
- package/dist/types/entry.types.js +3 -0
- package/dist/types/entry.types.js.map +1 -0
- package/dist/types/index.d.ts +4 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +20 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/request.types.d.ts +9 -0
- package/dist/types/request.types.d.ts.map +1 -0
- package/dist/types/request.types.js +3 -0
- package/dist/types/request.types.js.map +1 -0
- package/dist/types/tag.types.d.ts +32 -0
- package/dist/types/tag.types.d.ts.map +1 -0
- package/dist/types/tag.types.js +3 -0
- package/dist/types/tag.types.js.map +1 -0
- package/dist/watchers/batch.watcher.d.ts +48 -0
- package/dist/watchers/batch.watcher.d.ts.map +1 -0
- package/dist/watchers/batch.watcher.js +185 -0
- package/dist/watchers/batch.watcher.js.map +1 -0
- package/dist/watchers/cache.watcher.d.ts +19 -0
- package/dist/watchers/cache.watcher.d.ts.map +1 -0
- package/dist/watchers/cache.watcher.js +158 -0
- package/dist/watchers/cache.watcher.js.map +1 -0
- package/dist/watchers/command.watcher.d.ts +32 -0
- package/dist/watchers/command.watcher.d.ts.map +1 -0
- package/dist/watchers/command.watcher.js +174 -0
- package/dist/watchers/command.watcher.js.map +1 -0
- package/dist/watchers/dump.watcher.d.ts +52 -0
- package/dist/watchers/dump.watcher.d.ts.map +1 -0
- package/dist/watchers/dump.watcher.js +234 -0
- package/dist/watchers/dump.watcher.js.map +1 -0
- package/dist/watchers/event.watcher.d.ts +20 -0
- package/dist/watchers/event.watcher.d.ts.map +1 -0
- package/dist/watchers/event.watcher.js +123 -0
- package/dist/watchers/event.watcher.js.map +1 -0
- package/dist/watchers/exception.watcher.d.ts +15 -0
- package/dist/watchers/exception.watcher.d.ts.map +1 -0
- package/dist/watchers/exception.watcher.js +117 -0
- package/dist/watchers/exception.watcher.js.map +1 -0
- package/dist/watchers/gate.watcher.d.ts +40 -0
- package/dist/watchers/gate.watcher.d.ts.map +1 -0
- package/dist/watchers/gate.watcher.js +200 -0
- package/dist/watchers/gate.watcher.js.map +1 -0
- package/dist/watchers/http-client.watcher.d.ts +34 -0
- package/dist/watchers/http-client.watcher.d.ts.map +1 -0
- package/dist/watchers/http-client.watcher.js +259 -0
- package/dist/watchers/http-client.watcher.js.map +1 -0
- package/dist/watchers/index.d.ts +19 -0
- package/dist/watchers/index.d.ts.map +1 -0
- package/dist/watchers/index.js +35 -0
- package/dist/watchers/index.js.map +1 -0
- package/dist/watchers/job.watcher.d.ts +27 -0
- package/dist/watchers/job.watcher.d.ts.map +1 -0
- package/dist/watchers/job.watcher.js +190 -0
- package/dist/watchers/job.watcher.js.map +1 -0
- package/dist/watchers/log.watcher.d.ts +26 -0
- package/dist/watchers/log.watcher.d.ts.map +1 -0
- package/dist/watchers/log.watcher.js +122 -0
- package/dist/watchers/log.watcher.js.map +1 -0
- package/dist/watchers/mail.watcher.d.ts +26 -0
- package/dist/watchers/mail.watcher.d.ts.map +1 -0
- package/dist/watchers/mail.watcher.js +154 -0
- package/dist/watchers/mail.watcher.js.map +1 -0
- package/dist/watchers/model.watcher.d.ts +54 -0
- package/dist/watchers/model.watcher.d.ts.map +1 -0
- package/dist/watchers/model.watcher.js +343 -0
- package/dist/watchers/model.watcher.js.map +1 -0
- package/dist/watchers/notification.watcher.d.ts +48 -0
- package/dist/watchers/notification.watcher.d.ts.map +1 -0
- package/dist/watchers/notification.watcher.js +215 -0
- package/dist/watchers/notification.watcher.js.map +1 -0
- package/dist/watchers/query/index.d.ts +3 -0
- package/dist/watchers/query/index.d.ts.map +1 -0
- package/dist/watchers/query/index.js +19 -0
- package/dist/watchers/query/index.js.map +1 -0
- package/dist/watchers/query/query.watcher.d.ts +27 -0
- package/dist/watchers/query/query.watcher.d.ts.map +1 -0
- package/dist/watchers/query/query.watcher.js +167 -0
- package/dist/watchers/query/query.watcher.js.map +1 -0
- package/dist/watchers/query/types.d.ts +60 -0
- package/dist/watchers/query/types.d.ts.map +1 -0
- package/dist/watchers/query/types.js +55 -0
- package/dist/watchers/query/types.js.map +1 -0
- package/dist/watchers/redis.watcher.d.ts +43 -0
- package/dist/watchers/redis.watcher.d.ts.map +1 -0
- package/dist/watchers/redis.watcher.js +225 -0
- package/dist/watchers/redis.watcher.js.map +1 -0
- package/dist/watchers/request.watcher.d.ts +21 -0
- package/dist/watchers/request.watcher.d.ts.map +1 -0
- package/dist/watchers/request.watcher.js +287 -0
- package/dist/watchers/request.watcher.js.map +1 -0
- package/dist/watchers/schedule.watcher.d.ts +25 -0
- package/dist/watchers/schedule.watcher.d.ts.map +1 -0
- package/dist/watchers/schedule.watcher.js +168 -0
- package/dist/watchers/schedule.watcher.js.map +1 -0
- package/dist/watchers/view.watcher.d.ts +51 -0
- package/dist/watchers/view.watcher.d.ts.map +1 -0
- package/dist/watchers/view.watcher.js +219 -0
- package/dist/watchers/view.watcher.js.map +1 -0
- package/package.json +86 -0
|
@@ -0,0 +1,185 @@
|
|
|
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 __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
12
|
+
return function (target, key) { decorator(target, key, paramIndex); }
|
|
13
|
+
};
|
|
14
|
+
var BatchWatcher_1;
|
|
15
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
16
|
+
exports.BatchWatcher = exports.NESTLENS_BATCH_PROCESSOR = void 0;
|
|
17
|
+
const common_1 = require("@nestjs/common");
|
|
18
|
+
const collector_service_1 = require("../core/collector.service");
|
|
19
|
+
const nestlens_config_1 = require("../nestlens.config");
|
|
20
|
+
/**
|
|
21
|
+
* Token for injecting batch processor service
|
|
22
|
+
*/
|
|
23
|
+
exports.NESTLENS_BATCH_PROCESSOR = Symbol('NESTLENS_BATCH_PROCESSOR');
|
|
24
|
+
/**
|
|
25
|
+
* BatchWatcher tracks batch/bulk operations in NestJS applications.
|
|
26
|
+
* Monitors batch processing operations, capturing total/processed/failed items,
|
|
27
|
+
* duration, memory usage, and status.
|
|
28
|
+
*/
|
|
29
|
+
let BatchWatcher = BatchWatcher_1 = class BatchWatcher {
|
|
30
|
+
constructor(collector, nestlensConfig, batchProcessor) {
|
|
31
|
+
this.collector = collector;
|
|
32
|
+
this.nestlensConfig = nestlensConfig;
|
|
33
|
+
this.batchProcessor = batchProcessor;
|
|
34
|
+
this.logger = new common_1.Logger(BatchWatcher_1.name);
|
|
35
|
+
this.batchTracking = new Map();
|
|
36
|
+
const watcherConfig = nestlensConfig.watchers?.batch;
|
|
37
|
+
this.config =
|
|
38
|
+
typeof watcherConfig === 'object'
|
|
39
|
+
? watcherConfig
|
|
40
|
+
: { enabled: watcherConfig !== false };
|
|
41
|
+
}
|
|
42
|
+
onModuleInit() {
|
|
43
|
+
if (!this.config.enabled) {
|
|
44
|
+
return;
|
|
45
|
+
}
|
|
46
|
+
// Check if batch processor was provided
|
|
47
|
+
if (!this.batchProcessor) {
|
|
48
|
+
this.logger.debug('BatchWatcher: No batch processor found. ' +
|
|
49
|
+
'To enable batch tracking, provide a batch processor service or call trackBatch() manually.');
|
|
50
|
+
return;
|
|
51
|
+
}
|
|
52
|
+
this.setupInterceptors();
|
|
53
|
+
}
|
|
54
|
+
setupInterceptors() {
|
|
55
|
+
if (!this.batchProcessor)
|
|
56
|
+
return;
|
|
57
|
+
// Try to wrap common batch processing methods
|
|
58
|
+
this.wrapMethod('process');
|
|
59
|
+
this.wrapMethod('processBatch');
|
|
60
|
+
this.wrapMethod('bulk');
|
|
61
|
+
this.wrapMethod('bulkProcess');
|
|
62
|
+
this.logger.log('Batch interceptors installed');
|
|
63
|
+
}
|
|
64
|
+
wrapMethod(methodName) {
|
|
65
|
+
if (!this.batchProcessor || typeof this.batchProcessor[methodName] !== 'function') {
|
|
66
|
+
return;
|
|
67
|
+
}
|
|
68
|
+
const originalMethod = this.batchProcessor[methodName].bind(this.batchProcessor);
|
|
69
|
+
this.batchProcessor[methodName] = async (name, items, options) => {
|
|
70
|
+
const batchId = `${name}-${Date.now()}`;
|
|
71
|
+
const startTime = Date.now();
|
|
72
|
+
const startMemory = this.config.trackMemory !== false
|
|
73
|
+
? process.memoryUsage().heapUsed
|
|
74
|
+
: 0;
|
|
75
|
+
this.batchTracking.set(batchId, { startTime, startMemory });
|
|
76
|
+
try {
|
|
77
|
+
const result = await originalMethod(name, items, options);
|
|
78
|
+
const duration = Date.now() - startTime;
|
|
79
|
+
const memoryDelta = this.config.trackMemory !== false
|
|
80
|
+
? process.memoryUsage().heapUsed - startMemory
|
|
81
|
+
: undefined;
|
|
82
|
+
this.batchTracking.delete(batchId);
|
|
83
|
+
// Extract results from the result object
|
|
84
|
+
const { processed, failed, errors } = this.parseResult(result, items.length);
|
|
85
|
+
// Track batch completed
|
|
86
|
+
this.collectEntry(name, methodName, items.length, processed, failed, duration, this.getBatchSize(options), 'completed', errors, memoryDelta);
|
|
87
|
+
return result;
|
|
88
|
+
}
|
|
89
|
+
catch (error) {
|
|
90
|
+
const duration = Date.now() - startTime;
|
|
91
|
+
const memoryDelta = this.config.trackMemory !== false
|
|
92
|
+
? process.memoryUsage().heapUsed - startMemory
|
|
93
|
+
: undefined;
|
|
94
|
+
this.batchTracking.delete(batchId);
|
|
95
|
+
// Track batch failed
|
|
96
|
+
this.collectEntry(name, methodName, items.length, 0, items.length, duration, this.getBatchSize(options), 'failed', [error instanceof Error ? error.message : String(error)], memoryDelta);
|
|
97
|
+
throw error; // Re-throw to maintain original behavior
|
|
98
|
+
}
|
|
99
|
+
};
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* Manual tracking method for batch operations.
|
|
103
|
+
* Call this method to track batch operations that aren't automatically intercepted.
|
|
104
|
+
*
|
|
105
|
+
* @param name - Name of the batch operation
|
|
106
|
+
* @param operation - Type of operation (e.g., 'import', 'export', 'transform')
|
|
107
|
+
* @param totalItems - Total number of items to process
|
|
108
|
+
* @param processedItems - Number of items successfully processed
|
|
109
|
+
* @param failedItems - Number of items that failed
|
|
110
|
+
* @param duration - Duration in milliseconds
|
|
111
|
+
* @param options - Additional options (batchSize, errors, memory)
|
|
112
|
+
*/
|
|
113
|
+
trackBatch(name, operation, totalItems, processedItems, failedItems, duration, options) {
|
|
114
|
+
const status = failedItems === 0 ? 'completed' :
|
|
115
|
+
processedItems > 0 ? 'partial' :
|
|
116
|
+
'failed';
|
|
117
|
+
this.collectEntry(name, operation, totalItems, processedItems, failedItems, duration, options?.batchSize, status, options?.errors, options?.memory);
|
|
118
|
+
}
|
|
119
|
+
collectEntry(name, operation, totalItems, processedItems, failedItems, duration, batchSize, status = 'completed', errors, memory) {
|
|
120
|
+
const payload = {
|
|
121
|
+
name,
|
|
122
|
+
operation,
|
|
123
|
+
totalItems,
|
|
124
|
+
processedItems,
|
|
125
|
+
failedItems,
|
|
126
|
+
duration,
|
|
127
|
+
batchSize,
|
|
128
|
+
status,
|
|
129
|
+
errors,
|
|
130
|
+
memory,
|
|
131
|
+
};
|
|
132
|
+
this.collector.collect('batch', payload);
|
|
133
|
+
}
|
|
134
|
+
parseResult(result, totalItems) {
|
|
135
|
+
try {
|
|
136
|
+
if (typeof result === 'object' && result !== null) {
|
|
137
|
+
const r = result;
|
|
138
|
+
// Try to extract processed/failed counts
|
|
139
|
+
const processed = r.processed || r.successful || r.success || totalItems;
|
|
140
|
+
const errorsArray = Array.isArray(r.errors) ? r.errors : [];
|
|
141
|
+
const failed = r.failed || errorsArray.length || 0;
|
|
142
|
+
const errors = errorsArray.length > 0 ? errorsArray : (r.failures || []);
|
|
143
|
+
return {
|
|
144
|
+
processed: typeof processed === 'number' ? processed : totalItems,
|
|
145
|
+
failed: typeof failed === 'number' ? failed : 0,
|
|
146
|
+
errors: Array.isArray(errors) ? errors.map(String) : [],
|
|
147
|
+
};
|
|
148
|
+
}
|
|
149
|
+
// If result is not an object, assume all items were processed
|
|
150
|
+
return {
|
|
151
|
+
processed: totalItems,
|
|
152
|
+
failed: 0,
|
|
153
|
+
errors: [],
|
|
154
|
+
};
|
|
155
|
+
}
|
|
156
|
+
catch {
|
|
157
|
+
return {
|
|
158
|
+
processed: totalItems,
|
|
159
|
+
failed: 0,
|
|
160
|
+
errors: [],
|
|
161
|
+
};
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
getBatchSize(options) {
|
|
165
|
+
try {
|
|
166
|
+
if (typeof options === 'object' && options !== null) {
|
|
167
|
+
const o = options;
|
|
168
|
+
return (o.batchSize || o.chunkSize || o.size);
|
|
169
|
+
}
|
|
170
|
+
return undefined;
|
|
171
|
+
}
|
|
172
|
+
catch {
|
|
173
|
+
return undefined;
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
};
|
|
177
|
+
exports.BatchWatcher = BatchWatcher;
|
|
178
|
+
exports.BatchWatcher = BatchWatcher = BatchWatcher_1 = __decorate([
|
|
179
|
+
(0, common_1.Injectable)(),
|
|
180
|
+
__param(1, (0, common_1.Inject)(nestlens_config_1.NESTLENS_CONFIG)),
|
|
181
|
+
__param(2, (0, common_1.Optional)()),
|
|
182
|
+
__param(2, (0, common_1.Inject)(exports.NESTLENS_BATCH_PROCESSOR)),
|
|
183
|
+
__metadata("design:paramtypes", [collector_service_1.CollectorService, Object, Object])
|
|
184
|
+
], BatchWatcher);
|
|
185
|
+
//# sourceMappingURL=batch.watcher.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"batch.watcher.js","sourceRoot":"","sources":["../../src/watchers/batch.watcher.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { OnModuleInit } from '@nestjs/common';
|
|
2
|
+
import { CollectorService } from '../core/collector.service';
|
|
3
|
+
import { NestLensConfig } from '../nestlens.config';
|
|
4
|
+
type Cache = any;
|
|
5
|
+
export declare class CacheWatcher implements OnModuleInit {
|
|
6
|
+
private readonly collector;
|
|
7
|
+
private readonly nestlensConfig;
|
|
8
|
+
private readonly cacheManager?;
|
|
9
|
+
private readonly logger;
|
|
10
|
+
private readonly config;
|
|
11
|
+
private originalMethods?;
|
|
12
|
+
constructor(collector: CollectorService, nestlensConfig: NestLensConfig, cacheManager?: Cache | undefined);
|
|
13
|
+
onModuleInit(): void;
|
|
14
|
+
private setupInterceptors;
|
|
15
|
+
private collectEntry;
|
|
16
|
+
private captureValue;
|
|
17
|
+
}
|
|
18
|
+
export {};
|
|
19
|
+
//# sourceMappingURL=cache.watcher.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cache.watcher.d.ts","sourceRoot":"","sources":["../../src/watchers/cache.watcher.ts"],"names":[],"mappings":"AAAA,OAAO,EAA8B,YAAY,EAAY,MAAM,gBAAgB,CAAC;AACpF,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAC7D,OAAO,EAEL,cAAc,EAEf,MAAM,oBAAoB,CAAC;AAI5B,KAAK,KAAK,GAAG,GAAG,CAAC;AAYjB,qBACa,YAAa,YAAW,YAAY;IAW7C,OAAO,CAAC,QAAQ,CAAC,SAAS;IAE1B,OAAO,CAAC,QAAQ,CAAC,cAAc;IAG/B,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC;IAfhC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAiC;IACxD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAqB;IAC5C,OAAO,CAAC,eAAe,CAAC,CAKtB;gBAGiB,SAAS,EAAE,gBAAgB,EAE3B,cAAc,EAAE,cAAc,EAG9B,YAAY,CAAC,EAAE,KAAK,YAAA;IASvC,YAAY;IAiBZ,OAAO,CAAC,iBAAiB;IA8EzB,OAAO,CAAC,YAAY;IAoBpB,OAAO,CAAC,YAAY;CAerB"}
|
|
@@ -0,0 +1,158 @@
|
|
|
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 __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
12
|
+
return function (target, key) { decorator(target, key, paramIndex); }
|
|
13
|
+
};
|
|
14
|
+
var CacheWatcher_1;
|
|
15
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
16
|
+
exports.CacheWatcher = void 0;
|
|
17
|
+
const common_1 = require("@nestjs/common");
|
|
18
|
+
const collector_service_1 = require("../core/collector.service");
|
|
19
|
+
const nestlens_config_1 = require("../nestlens.config");
|
|
20
|
+
// Try to import CACHE_MANAGER, but make it optional
|
|
21
|
+
let CACHE_MANAGER = 'CACHE_MANAGER';
|
|
22
|
+
try {
|
|
23
|
+
// eslint-disable-next-line @typescript-eslint/no-var-requires
|
|
24
|
+
const cacheManager = require('@nestjs/cache-manager');
|
|
25
|
+
CACHE_MANAGER = cacheManager.CACHE_MANAGER;
|
|
26
|
+
}
|
|
27
|
+
catch {
|
|
28
|
+
// Module not installed, use string fallback
|
|
29
|
+
}
|
|
30
|
+
let CacheWatcher = CacheWatcher_1 = class CacheWatcher {
|
|
31
|
+
constructor(collector, nestlensConfig, cacheManager) {
|
|
32
|
+
this.collector = collector;
|
|
33
|
+
this.nestlensConfig = nestlensConfig;
|
|
34
|
+
this.cacheManager = cacheManager;
|
|
35
|
+
this.logger = new common_1.Logger(CacheWatcher_1.name);
|
|
36
|
+
const watcherConfig = nestlensConfig.watchers?.cache;
|
|
37
|
+
this.config =
|
|
38
|
+
typeof watcherConfig === 'object'
|
|
39
|
+
? watcherConfig
|
|
40
|
+
: { enabled: watcherConfig !== false };
|
|
41
|
+
}
|
|
42
|
+
onModuleInit() {
|
|
43
|
+
if (!this.config.enabled) {
|
|
44
|
+
return;
|
|
45
|
+
}
|
|
46
|
+
// Check if cache manager was provided
|
|
47
|
+
if (!this.cacheManager) {
|
|
48
|
+
this.logger.debug('CacheWatcher: No cache manager found. ' +
|
|
49
|
+
'To enable cache tracking, install and configure @nestjs/cache-manager.');
|
|
50
|
+
return;
|
|
51
|
+
}
|
|
52
|
+
this.setupInterceptors();
|
|
53
|
+
}
|
|
54
|
+
setupInterceptors() {
|
|
55
|
+
if (!this.cacheManager)
|
|
56
|
+
return;
|
|
57
|
+
// Store original methods
|
|
58
|
+
this.originalMethods = {
|
|
59
|
+
get: this.cacheManager.get?.bind(this.cacheManager),
|
|
60
|
+
set: this.cacheManager.set?.bind(this.cacheManager),
|
|
61
|
+
del: this.cacheManager.del?.bind(this.cacheManager),
|
|
62
|
+
reset: this.cacheManager.reset?.bind(this.cacheManager),
|
|
63
|
+
};
|
|
64
|
+
// Wrap get method
|
|
65
|
+
if (this.originalMethods.get) {
|
|
66
|
+
this.cacheManager.get = async (key) => {
|
|
67
|
+
const startTime = Date.now();
|
|
68
|
+
let hit = false;
|
|
69
|
+
let value;
|
|
70
|
+
try {
|
|
71
|
+
value = await this.originalMethods.get(key);
|
|
72
|
+
hit = value !== undefined && value !== null;
|
|
73
|
+
return value;
|
|
74
|
+
}
|
|
75
|
+
finally {
|
|
76
|
+
const duration = Date.now() - startTime;
|
|
77
|
+
this.collectEntry('get', key, hit, duration, value);
|
|
78
|
+
}
|
|
79
|
+
};
|
|
80
|
+
}
|
|
81
|
+
// Wrap set method
|
|
82
|
+
if (this.originalMethods.set) {
|
|
83
|
+
this.cacheManager.set = async (key, value, ttl) => {
|
|
84
|
+
const startTime = Date.now();
|
|
85
|
+
try {
|
|
86
|
+
return await this.originalMethods.set(key, value, ttl);
|
|
87
|
+
}
|
|
88
|
+
finally {
|
|
89
|
+
const duration = Date.now() - startTime;
|
|
90
|
+
this.collectEntry('set', key, undefined, duration, value, ttl);
|
|
91
|
+
}
|
|
92
|
+
};
|
|
93
|
+
}
|
|
94
|
+
// Wrap del method
|
|
95
|
+
if (this.originalMethods.del) {
|
|
96
|
+
this.cacheManager.del = async (key) => {
|
|
97
|
+
const startTime = Date.now();
|
|
98
|
+
try {
|
|
99
|
+
return await this.originalMethods.del(key);
|
|
100
|
+
}
|
|
101
|
+
finally {
|
|
102
|
+
const duration = Date.now() - startTime;
|
|
103
|
+
this.collectEntry('del', key, undefined, duration);
|
|
104
|
+
}
|
|
105
|
+
};
|
|
106
|
+
}
|
|
107
|
+
// Wrap reset method (clear all)
|
|
108
|
+
if (this.originalMethods.reset) {
|
|
109
|
+
this.cacheManager.reset = async () => {
|
|
110
|
+
const startTime = Date.now();
|
|
111
|
+
try {
|
|
112
|
+
return await this.originalMethods.reset();
|
|
113
|
+
}
|
|
114
|
+
finally {
|
|
115
|
+
const duration = Date.now() - startTime;
|
|
116
|
+
this.collectEntry('clear', '*', undefined, duration);
|
|
117
|
+
}
|
|
118
|
+
};
|
|
119
|
+
}
|
|
120
|
+
this.logger.log('Cache interceptors installed');
|
|
121
|
+
}
|
|
122
|
+
collectEntry(operation, key, hit, duration = 0, value, ttl) {
|
|
123
|
+
const payload = {
|
|
124
|
+
operation,
|
|
125
|
+
key,
|
|
126
|
+
hit,
|
|
127
|
+
value: this.captureValue(value),
|
|
128
|
+
ttl,
|
|
129
|
+
duration,
|
|
130
|
+
};
|
|
131
|
+
this.collector.collect('cache', payload);
|
|
132
|
+
}
|
|
133
|
+
captureValue(value) {
|
|
134
|
+
if (value === undefined || value === null)
|
|
135
|
+
return undefined;
|
|
136
|
+
try {
|
|
137
|
+
// Limit size to prevent huge cache values from bloating storage
|
|
138
|
+
const json = JSON.stringify(value);
|
|
139
|
+
const maxSize = 1024; // 1KB
|
|
140
|
+
if (json.length > maxSize) {
|
|
141
|
+
return { _truncated: true, _size: json.length };
|
|
142
|
+
}
|
|
143
|
+
return value;
|
|
144
|
+
}
|
|
145
|
+
catch {
|
|
146
|
+
return { _error: 'Unable to serialize value' };
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
};
|
|
150
|
+
exports.CacheWatcher = CacheWatcher;
|
|
151
|
+
exports.CacheWatcher = CacheWatcher = CacheWatcher_1 = __decorate([
|
|
152
|
+
(0, common_1.Injectable)(),
|
|
153
|
+
__param(1, (0, common_1.Inject)(nestlens_config_1.NESTLENS_CONFIG)),
|
|
154
|
+
__param(2, (0, common_1.Optional)()),
|
|
155
|
+
__param(2, (0, common_1.Inject)(CACHE_MANAGER)),
|
|
156
|
+
__metadata("design:paramtypes", [collector_service_1.CollectorService, Object, Object])
|
|
157
|
+
], CacheWatcher);
|
|
158
|
+
//# sourceMappingURL=cache.watcher.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cache.watcher.js","sourceRoot":"","sources":["../../src/watchers/cache.watcher.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { OnModuleInit } from '@nestjs/common';
|
|
2
|
+
import { CollectorService } from '../core/collector.service';
|
|
3
|
+
import { NestLensConfig } from '../nestlens.config';
|
|
4
|
+
type CommandBus = any;
|
|
5
|
+
/**
|
|
6
|
+
* Token for injecting NestJS CQRS CommandBus
|
|
7
|
+
*/
|
|
8
|
+
export declare const NESTLENS_COMMAND_BUS: unique symbol;
|
|
9
|
+
/**
|
|
10
|
+
* CommandWatcher tracks CQRS command execution in NestJS applications.
|
|
11
|
+
* Integrates with @nestjs/cqrs CommandBus to monitor command execution,
|
|
12
|
+
* capturing name, handler, status, duration, and results.
|
|
13
|
+
*/
|
|
14
|
+
export declare class CommandWatcher implements OnModuleInit {
|
|
15
|
+
private readonly collector;
|
|
16
|
+
private readonly nestlensConfig;
|
|
17
|
+
private readonly commandBus?;
|
|
18
|
+
private readonly logger;
|
|
19
|
+
private readonly config;
|
|
20
|
+
private originalExecute?;
|
|
21
|
+
private readonly commandTracking;
|
|
22
|
+
constructor(collector: CollectorService, nestlensConfig: NestLensConfig, commandBus?: CommandBus | undefined);
|
|
23
|
+
onModuleInit(): void;
|
|
24
|
+
private setupInterceptors;
|
|
25
|
+
private getCommandName;
|
|
26
|
+
private getHandlerName;
|
|
27
|
+
private collectEntry;
|
|
28
|
+
private captureData;
|
|
29
|
+
private extractMetadata;
|
|
30
|
+
}
|
|
31
|
+
export {};
|
|
32
|
+
//# sourceMappingURL=command.watcher.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"command.watcher.d.ts","sourceRoot":"","sources":["../../src/watchers/command.watcher.ts"],"names":[],"mappings":"AAAA,OAAO,EAA8B,YAAY,EAAY,MAAM,gBAAgB,CAAC;AACpF,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAC7D,OAAO,EAEL,cAAc,EAEf,MAAM,oBAAoB,CAAC;AAI5B,KAAK,UAAU,GAAG,GAAG,CAAC;AAEtB;;GAEG;AACH,eAAO,MAAM,oBAAoB,eAAiC,CAAC;AAEnE;;;;GAIG;AACH,qBACa,cAAe,YAAW,YAAY;IAO/C,OAAO,CAAC,QAAQ,CAAC,SAAS;IAE1B,OAAO,CAAC,QAAQ,CAAC,cAAc;IAG/B,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC;IAX9B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAmC;IAC1D,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAuB;IAC9C,OAAO,CAAC,eAAe,CAAC,CAAyC;IACjE,OAAO,CAAC,QAAQ,CAAC,eAAe,CAA6B;gBAG1C,SAAS,EAAE,gBAAgB,EAE3B,cAAc,EAAE,cAAc,EAG9B,UAAU,CAAC,EAAE,UAAU,YAAA;IAS1C,YAAY;IAiBZ,OAAO,CAAC,iBAAiB;IAkEzB,OAAO,CAAC,cAAc;IAWtB,OAAO,CAAC,cAAc;IAgBtB,OAAO,CAAC,YAAY;IAsBpB,OAAO,CAAC,WAAW;IAgBnB,OAAO,CAAC,eAAe;CAmBxB"}
|
|
@@ -0,0 +1,174 @@
|
|
|
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 __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
12
|
+
return function (target, key) { decorator(target, key, paramIndex); }
|
|
13
|
+
};
|
|
14
|
+
var CommandWatcher_1;
|
|
15
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
16
|
+
exports.CommandWatcher = exports.NESTLENS_COMMAND_BUS = void 0;
|
|
17
|
+
const common_1 = require("@nestjs/common");
|
|
18
|
+
const collector_service_1 = require("../core/collector.service");
|
|
19
|
+
const nestlens_config_1 = require("../nestlens.config");
|
|
20
|
+
/**
|
|
21
|
+
* Token for injecting NestJS CQRS CommandBus
|
|
22
|
+
*/
|
|
23
|
+
exports.NESTLENS_COMMAND_BUS = Symbol('NESTLENS_COMMAND_BUS');
|
|
24
|
+
/**
|
|
25
|
+
* CommandWatcher tracks CQRS command execution in NestJS applications.
|
|
26
|
+
* Integrates with @nestjs/cqrs CommandBus to monitor command execution,
|
|
27
|
+
* capturing name, handler, status, duration, and results.
|
|
28
|
+
*/
|
|
29
|
+
let CommandWatcher = CommandWatcher_1 = class CommandWatcher {
|
|
30
|
+
constructor(collector, nestlensConfig, commandBus) {
|
|
31
|
+
this.collector = collector;
|
|
32
|
+
this.nestlensConfig = nestlensConfig;
|
|
33
|
+
this.commandBus = commandBus;
|
|
34
|
+
this.logger = new common_1.Logger(CommandWatcher_1.name);
|
|
35
|
+
this.commandTracking = new Map(); // commandId -> startTime
|
|
36
|
+
const watcherConfig = nestlensConfig.watchers?.command;
|
|
37
|
+
this.config =
|
|
38
|
+
typeof watcherConfig === 'object'
|
|
39
|
+
? watcherConfig
|
|
40
|
+
: { enabled: watcherConfig !== false };
|
|
41
|
+
}
|
|
42
|
+
onModuleInit() {
|
|
43
|
+
if (!this.config.enabled) {
|
|
44
|
+
return;
|
|
45
|
+
}
|
|
46
|
+
// Check if command bus was provided
|
|
47
|
+
if (!this.commandBus) {
|
|
48
|
+
this.logger.debug('CommandWatcher: No command bus found. ' +
|
|
49
|
+
'To enable command tracking, install and configure @nestjs/cqrs and provide CommandBus.');
|
|
50
|
+
return;
|
|
51
|
+
}
|
|
52
|
+
this.setupInterceptors();
|
|
53
|
+
}
|
|
54
|
+
setupInterceptors() {
|
|
55
|
+
if (!this.commandBus)
|
|
56
|
+
return;
|
|
57
|
+
// Store original execute method
|
|
58
|
+
this.originalExecute = this.commandBus.execute?.bind(this.commandBus);
|
|
59
|
+
if (!this.originalExecute) {
|
|
60
|
+
this.logger.warn('CommandBus does not have execute method');
|
|
61
|
+
return;
|
|
62
|
+
}
|
|
63
|
+
// Wrap execute method
|
|
64
|
+
this.commandBus.execute = async (command) => {
|
|
65
|
+
const startTime = Date.now();
|
|
66
|
+
const commandName = this.getCommandName(command);
|
|
67
|
+
const commandId = `${commandName}-${startTime}`;
|
|
68
|
+
this.commandTracking.set(commandId, startTime);
|
|
69
|
+
// Track command started
|
|
70
|
+
this.collectEntry(commandName, 'executing', 0, command, undefined, undefined);
|
|
71
|
+
try {
|
|
72
|
+
const result = await this.originalExecute(command);
|
|
73
|
+
const duration = Date.now() - startTime;
|
|
74
|
+
this.commandTracking.delete(commandId);
|
|
75
|
+
// Track command completed
|
|
76
|
+
this.collectEntry(commandName, 'completed', duration, command, result, undefined);
|
|
77
|
+
return result;
|
|
78
|
+
}
|
|
79
|
+
catch (error) {
|
|
80
|
+
const duration = Date.now() - startTime;
|
|
81
|
+
this.commandTracking.delete(commandId);
|
|
82
|
+
// Track command failed
|
|
83
|
+
this.collectEntry(commandName, 'failed', duration, command, undefined, error instanceof Error ? error.message : String(error));
|
|
84
|
+
throw error; // Re-throw to maintain original behavior
|
|
85
|
+
}
|
|
86
|
+
};
|
|
87
|
+
this.logger.log('Command interceptors installed');
|
|
88
|
+
}
|
|
89
|
+
getCommandName(command) {
|
|
90
|
+
if (!command)
|
|
91
|
+
return 'UnknownCommand';
|
|
92
|
+
// Try to get the constructor name
|
|
93
|
+
if (typeof command === 'object' && command.constructor) {
|
|
94
|
+
return command.constructor.name;
|
|
95
|
+
}
|
|
96
|
+
return 'UnknownCommand';
|
|
97
|
+
}
|
|
98
|
+
getHandlerName(command) {
|
|
99
|
+
try {
|
|
100
|
+
if (typeof command === 'object' && command !== null) {
|
|
101
|
+
// Try to extract handler information if available
|
|
102
|
+
// This is a best-effort approach as handler info might not be directly accessible
|
|
103
|
+
const handler = command.handler;
|
|
104
|
+
if (handler && typeof handler === 'string') {
|
|
105
|
+
return handler;
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
return undefined;
|
|
109
|
+
}
|
|
110
|
+
catch {
|
|
111
|
+
return undefined;
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
collectEntry(name, status, duration, command, result, error) {
|
|
115
|
+
const payload = {
|
|
116
|
+
name,
|
|
117
|
+
handler: this.getHandlerName(command),
|
|
118
|
+
status,
|
|
119
|
+
duration: duration > 0 ? duration : undefined,
|
|
120
|
+
payload: this.config.capturePayload !== false ? this.captureData(command) : undefined,
|
|
121
|
+
result: this.config.captureResult !== false ? this.captureData(result) : undefined,
|
|
122
|
+
error,
|
|
123
|
+
metadata: this.extractMetadata(command),
|
|
124
|
+
};
|
|
125
|
+
this.collector.collect('command', payload);
|
|
126
|
+
}
|
|
127
|
+
captureData(data) {
|
|
128
|
+
if (data === undefined || data === null)
|
|
129
|
+
return undefined;
|
|
130
|
+
try {
|
|
131
|
+
// Limit size to prevent huge payloads from bloating storage
|
|
132
|
+
const json = JSON.stringify(data);
|
|
133
|
+
const maxSize = this.config.maxPayloadSize || 64 * 1024; // 64KB default
|
|
134
|
+
if (json.length > maxSize) {
|
|
135
|
+
return { _truncated: true, _size: json.length };
|
|
136
|
+
}
|
|
137
|
+
return data;
|
|
138
|
+
}
|
|
139
|
+
catch {
|
|
140
|
+
return { _error: 'Unable to serialize data' };
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
extractMetadata(command) {
|
|
144
|
+
try {
|
|
145
|
+
if (typeof command === 'object' && command !== null) {
|
|
146
|
+
const metadata = {};
|
|
147
|
+
// Extract common metadata fields if they exist
|
|
148
|
+
const cmd = command;
|
|
149
|
+
if (cmd.timestamp)
|
|
150
|
+
metadata.timestamp = cmd.timestamp;
|
|
151
|
+
if (cmd.userId)
|
|
152
|
+
metadata.userId = cmd.userId;
|
|
153
|
+
if (cmd.correlationId)
|
|
154
|
+
metadata.correlationId = cmd.correlationId;
|
|
155
|
+
if (cmd.version)
|
|
156
|
+
metadata.version = cmd.version;
|
|
157
|
+
return Object.keys(metadata).length > 0 ? metadata : undefined;
|
|
158
|
+
}
|
|
159
|
+
return undefined;
|
|
160
|
+
}
|
|
161
|
+
catch {
|
|
162
|
+
return undefined;
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
};
|
|
166
|
+
exports.CommandWatcher = CommandWatcher;
|
|
167
|
+
exports.CommandWatcher = CommandWatcher = CommandWatcher_1 = __decorate([
|
|
168
|
+
(0, common_1.Injectable)(),
|
|
169
|
+
__param(1, (0, common_1.Inject)(nestlens_config_1.NESTLENS_CONFIG)),
|
|
170
|
+
__param(2, (0, common_1.Optional)()),
|
|
171
|
+
__param(2, (0, common_1.Inject)(exports.NESTLENS_COMMAND_BUS)),
|
|
172
|
+
__metadata("design:paramtypes", [collector_service_1.CollectorService, Object, Object])
|
|
173
|
+
], CommandWatcher);
|
|
174
|
+
//# sourceMappingURL=command.watcher.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"command.watcher.js","sourceRoot":"","sources":["../../src/watchers/command.watcher.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { OnModuleInit } from '@nestjs/common';
|
|
2
|
+
import { CollectorService } from '../core/collector.service';
|
|
3
|
+
import { NestLensConfig } from '../nestlens.config';
|
|
4
|
+
type DumpService = any;
|
|
5
|
+
/**
|
|
6
|
+
* Token for injecting dump/export/import service
|
|
7
|
+
*/
|
|
8
|
+
export declare const NESTLENS_DUMP_SERVICE: unique symbol;
|
|
9
|
+
/**
|
|
10
|
+
* DumpWatcher tracks database dumps, exports, imports, and migrations.
|
|
11
|
+
* Monitors data transfer operations, capturing operation type, format,
|
|
12
|
+
* record counts, file sizes, compression, and encryption status.
|
|
13
|
+
*/
|
|
14
|
+
export declare class DumpWatcher implements OnModuleInit {
|
|
15
|
+
private readonly collector;
|
|
16
|
+
private readonly nestlensConfig;
|
|
17
|
+
private readonly dumpService?;
|
|
18
|
+
private readonly logger;
|
|
19
|
+
private readonly config;
|
|
20
|
+
private readonly dumpTracking;
|
|
21
|
+
constructor(collector: CollectorService, nestlensConfig: NestLensConfig, dumpService?: DumpService | undefined);
|
|
22
|
+
onModuleInit(): void;
|
|
23
|
+
private setupInterceptors;
|
|
24
|
+
private wrapMethod;
|
|
25
|
+
/**
|
|
26
|
+
* Manual tracking method for dump operations.
|
|
27
|
+
* Call this method to track dump/export/import operations that aren't automatically intercepted.
|
|
28
|
+
*
|
|
29
|
+
* @param operation - Type of operation ('export', 'import', 'backup', 'restore', 'migrate')
|
|
30
|
+
* @param format - Data format ('sql', 'json', 'csv', 'binary')
|
|
31
|
+
* @param options - Operation options (source, destination, recordCount, fileSize, etc.)
|
|
32
|
+
*/
|
|
33
|
+
trackDump(operation: 'export' | 'import' | 'backup' | 'restore' | 'migrate', format: 'sql' | 'json' | 'csv' | 'binary', duration: number, status: 'completed' | 'failed', options?: {
|
|
34
|
+
source?: string;
|
|
35
|
+
destination?: string;
|
|
36
|
+
recordCount?: number;
|
|
37
|
+
fileSize?: number;
|
|
38
|
+
compressed?: boolean;
|
|
39
|
+
encrypted?: boolean;
|
|
40
|
+
error?: string;
|
|
41
|
+
}): void;
|
|
42
|
+
private collectEntry;
|
|
43
|
+
private getOperationType;
|
|
44
|
+
private parseResult;
|
|
45
|
+
private parseOptions;
|
|
46
|
+
private extractFormat;
|
|
47
|
+
private extractString;
|
|
48
|
+
private extractNumber;
|
|
49
|
+
private extractBoolean;
|
|
50
|
+
}
|
|
51
|
+
export {};
|
|
52
|
+
//# sourceMappingURL=dump.watcher.d.ts.map
|