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.
Files changed (359) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +145 -0
  3. package/dist/__tests__/api/api.controller.spec.d.ts +2 -0
  4. package/dist/__tests__/api/api.controller.spec.d.ts.map +1 -0
  5. package/dist/__tests__/api/api.controller.spec.js +982 -0
  6. package/dist/__tests__/api/api.controller.spec.js.map +1 -0
  7. package/dist/__tests__/api/api.guard.spec.d.ts +2 -0
  8. package/dist/__tests__/api/api.guard.spec.d.ts.map +1 -0
  9. package/dist/__tests__/api/api.guard.spec.js +572 -0
  10. package/dist/__tests__/api/api.guard.spec.js.map +1 -0
  11. package/dist/__tests__/api/dashboard.controller.spec.d.ts +2 -0
  12. package/dist/__tests__/api/dashboard.controller.spec.d.ts.map +1 -0
  13. package/dist/__tests__/api/dashboard.controller.spec.js +474 -0
  14. package/dist/__tests__/api/dashboard.controller.spec.js.map +1 -0
  15. package/dist/__tests__/api/tag.controller.spec.d.ts +2 -0
  16. package/dist/__tests__/api/tag.controller.spec.d.ts.map +1 -0
  17. package/dist/__tests__/api/tag.controller.spec.js +280 -0
  18. package/dist/__tests__/api/tag.controller.spec.js.map +1 -0
  19. package/dist/__tests__/collector.service.spec.d.ts +2 -0
  20. package/dist/__tests__/collector.service.spec.d.ts.map +1 -0
  21. package/dist/__tests__/collector.service.spec.js +240 -0
  22. package/dist/__tests__/collector.service.spec.js.map +1 -0
  23. package/dist/__tests__/core/collector.service.spec.d.ts +2 -0
  24. package/dist/__tests__/core/collector.service.spec.d.ts.map +1 -0
  25. package/dist/__tests__/core/collector.service.spec.js +526 -0
  26. package/dist/__tests__/core/collector.service.spec.js.map +1 -0
  27. package/dist/__tests__/core/family-hash.service.spec.d.ts +2 -0
  28. package/dist/__tests__/core/family-hash.service.spec.d.ts.map +1 -0
  29. package/dist/__tests__/core/family-hash.service.spec.js +1117 -0
  30. package/dist/__tests__/core/family-hash.service.spec.js.map +1 -0
  31. package/dist/__tests__/core/pruning.service.spec.d.ts +2 -0
  32. package/dist/__tests__/core/pruning.service.spec.d.ts.map +1 -0
  33. package/dist/__tests__/core/pruning.service.spec.js +224 -0
  34. package/dist/__tests__/core/pruning.service.spec.js.map +1 -0
  35. package/dist/__tests__/core/storage/sqlite.storage.spec.d.ts +2 -0
  36. package/dist/__tests__/core/storage/sqlite.storage.spec.d.ts.map +1 -0
  37. package/dist/__tests__/core/storage/sqlite.storage.spec.js +853 -0
  38. package/dist/__tests__/core/storage/sqlite.storage.spec.js.map +1 -0
  39. package/dist/__tests__/core/tag.service.spec.d.ts +2 -0
  40. package/dist/__tests__/core/tag.service.spec.d.ts.map +1 -0
  41. package/dist/__tests__/core/tag.service.spec.js +994 -0
  42. package/dist/__tests__/core/tag.service.spec.js.map +1 -0
  43. package/dist/__tests__/family-hash.service.spec.d.ts +2 -0
  44. package/dist/__tests__/family-hash.service.spec.d.ts.map +1 -0
  45. package/dist/__tests__/family-hash.service.spec.js +325 -0
  46. package/dist/__tests__/family-hash.service.spec.js.map +1 -0
  47. package/dist/__tests__/filters/api-filters.spec.d.ts +2 -0
  48. package/dist/__tests__/filters/api-filters.spec.d.ts.map +1 -0
  49. package/dist/__tests__/filters/api-filters.spec.js +172 -0
  50. package/dist/__tests__/filters/api-filters.spec.js.map +1 -0
  51. package/dist/__tests__/filters/entry-factories.d.ts +20 -0
  52. package/dist/__tests__/filters/entry-factories.d.ts.map +1 -0
  53. package/dist/__tests__/filters/entry-factories.js +288 -0
  54. package/dist/__tests__/filters/entry-factories.js.map +1 -0
  55. package/dist/__tests__/filters/filter-contract.spec.d.ts +2 -0
  56. package/dist/__tests__/filters/filter-contract.spec.d.ts.map +1 -0
  57. package/dist/__tests__/filters/filter-contract.spec.js +230 -0
  58. package/dist/__tests__/filters/filter-contract.spec.js.map +1 -0
  59. package/dist/__tests__/filters/filter-test-data.d.ts +26 -0
  60. package/dist/__tests__/filters/filter-test-data.d.ts.map +1 -0
  61. package/dist/__tests__/filters/filter-test-data.js +374 -0
  62. package/dist/__tests__/filters/filter-test-data.js.map +1 -0
  63. package/dist/__tests__/filters/storage-filters.spec.d.ts +2 -0
  64. package/dist/__tests__/filters/storage-filters.spec.d.ts.map +1 -0
  65. package/dist/__tests__/filters/storage-filters.spec.js +699 -0
  66. package/dist/__tests__/filters/storage-filters.spec.js.map +1 -0
  67. package/dist/__tests__/filters/test-utils.d.ts +23 -0
  68. package/dist/__tests__/filters/test-utils.d.ts.map +1 -0
  69. package/dist/__tests__/filters/test-utils.js +54 -0
  70. package/dist/__tests__/filters/test-utils.js.map +1 -0
  71. package/dist/__tests__/nestlens.module.spec.d.ts +2 -0
  72. package/dist/__tests__/nestlens.module.spec.d.ts.map +1 -0
  73. package/dist/__tests__/nestlens.module.spec.js +620 -0
  74. package/dist/__tests__/nestlens.module.spec.js.map +1 -0
  75. package/dist/__tests__/pruning.service.spec.d.ts +2 -0
  76. package/dist/__tests__/pruning.service.spec.d.ts.map +1 -0
  77. package/dist/__tests__/pruning.service.spec.js +142 -0
  78. package/dist/__tests__/pruning.service.spec.js.map +1 -0
  79. package/dist/__tests__/setup.d.ts +7 -0
  80. package/dist/__tests__/setup.d.ts.map +1 -0
  81. package/dist/__tests__/setup.js +24 -0
  82. package/dist/__tests__/setup.js.map +1 -0
  83. package/dist/__tests__/tag.service.spec.d.ts +2 -0
  84. package/dist/__tests__/tag.service.spec.d.ts.map +1 -0
  85. package/dist/__tests__/tag.service.spec.js +482 -0
  86. package/dist/__tests__/tag.service.spec.js.map +1 -0
  87. package/dist/__tests__/watchers/batch.watcher.spec.d.ts +2 -0
  88. package/dist/__tests__/watchers/batch.watcher.spec.d.ts.map +1 -0
  89. package/dist/__tests__/watchers/batch.watcher.spec.js +515 -0
  90. package/dist/__tests__/watchers/batch.watcher.spec.js.map +1 -0
  91. package/dist/__tests__/watchers/cache.watcher.spec.d.ts +2 -0
  92. package/dist/__tests__/watchers/cache.watcher.spec.d.ts.map +1 -0
  93. package/dist/__tests__/watchers/cache.watcher.spec.js +395 -0
  94. package/dist/__tests__/watchers/cache.watcher.spec.js.map +1 -0
  95. package/dist/__tests__/watchers/command.watcher.spec.d.ts +2 -0
  96. package/dist/__tests__/watchers/command.watcher.spec.d.ts.map +1 -0
  97. package/dist/__tests__/watchers/command.watcher.spec.js +598 -0
  98. package/dist/__tests__/watchers/command.watcher.spec.js.map +1 -0
  99. package/dist/__tests__/watchers/dump.watcher.spec.d.ts +2 -0
  100. package/dist/__tests__/watchers/dump.watcher.spec.d.ts.map +1 -0
  101. package/dist/__tests__/watchers/dump.watcher.spec.js +724 -0
  102. package/dist/__tests__/watchers/dump.watcher.spec.js.map +1 -0
  103. package/dist/__tests__/watchers/event.watcher.spec.d.ts +2 -0
  104. package/dist/__tests__/watchers/event.watcher.spec.d.ts.map +1 -0
  105. package/dist/__tests__/watchers/event.watcher.spec.js +316 -0
  106. package/dist/__tests__/watchers/event.watcher.spec.js.map +1 -0
  107. package/dist/__tests__/watchers/exception.watcher.spec.d.ts +2 -0
  108. package/dist/__tests__/watchers/exception.watcher.spec.d.ts.map +1 -0
  109. package/dist/__tests__/watchers/exception.watcher.spec.js +495 -0
  110. package/dist/__tests__/watchers/exception.watcher.spec.js.map +1 -0
  111. package/dist/__tests__/watchers/gate.watcher.spec.d.ts +2 -0
  112. package/dist/__tests__/watchers/gate.watcher.spec.d.ts.map +1 -0
  113. package/dist/__tests__/watchers/gate.watcher.spec.js +683 -0
  114. package/dist/__tests__/watchers/gate.watcher.spec.js.map +1 -0
  115. package/dist/__tests__/watchers/http-client.watcher.spec.d.ts +2 -0
  116. package/dist/__tests__/watchers/http-client.watcher.spec.d.ts.map +1 -0
  117. package/dist/__tests__/watchers/http-client.watcher.spec.js +888 -0
  118. package/dist/__tests__/watchers/http-client.watcher.spec.js.map +1 -0
  119. package/dist/__tests__/watchers/job.watcher.spec.d.ts +2 -0
  120. package/dist/__tests__/watchers/job.watcher.spec.d.ts.map +1 -0
  121. package/dist/__tests__/watchers/job.watcher.spec.js +513 -0
  122. package/dist/__tests__/watchers/job.watcher.spec.js.map +1 -0
  123. package/dist/__tests__/watchers/log.watcher.spec.d.ts +2 -0
  124. package/dist/__tests__/watchers/log.watcher.spec.d.ts.map +1 -0
  125. package/dist/__tests__/watchers/log.watcher.spec.js +428 -0
  126. package/dist/__tests__/watchers/log.watcher.spec.js.map +1 -0
  127. package/dist/__tests__/watchers/mail.watcher.spec.d.ts +2 -0
  128. package/dist/__tests__/watchers/mail.watcher.spec.d.ts.map +1 -0
  129. package/dist/__tests__/watchers/mail.watcher.spec.js +425 -0
  130. package/dist/__tests__/watchers/mail.watcher.spec.js.map +1 -0
  131. package/dist/__tests__/watchers/model.watcher.spec.d.ts +2 -0
  132. package/dist/__tests__/watchers/model.watcher.spec.d.ts.map +1 -0
  133. package/dist/__tests__/watchers/model.watcher.spec.js +675 -0
  134. package/dist/__tests__/watchers/model.watcher.spec.js.map +1 -0
  135. package/dist/__tests__/watchers/notification.watcher.spec.d.ts +2 -0
  136. package/dist/__tests__/watchers/notification.watcher.spec.d.ts.map +1 -0
  137. package/dist/__tests__/watchers/notification.watcher.spec.js +595 -0
  138. package/dist/__tests__/watchers/notification.watcher.spec.js.map +1 -0
  139. package/dist/__tests__/watchers/query/types.spec.d.ts +2 -0
  140. package/dist/__tests__/watchers/query/types.spec.d.ts.map +1 -0
  141. package/dist/__tests__/watchers/query/types.spec.js +292 -0
  142. package/dist/__tests__/watchers/query/types.spec.js.map +1 -0
  143. package/dist/__tests__/watchers/query.watcher.spec.d.ts +2 -0
  144. package/dist/__tests__/watchers/query.watcher.spec.d.ts.map +1 -0
  145. package/dist/__tests__/watchers/query.watcher.spec.js +597 -0
  146. package/dist/__tests__/watchers/query.watcher.spec.js.map +1 -0
  147. package/dist/__tests__/watchers/redis.watcher.spec.d.ts +2 -0
  148. package/dist/__tests__/watchers/redis.watcher.spec.d.ts.map +1 -0
  149. package/dist/__tests__/watchers/redis.watcher.spec.js +634 -0
  150. package/dist/__tests__/watchers/redis.watcher.spec.js.map +1 -0
  151. package/dist/__tests__/watchers/request.watcher.spec.d.ts +2 -0
  152. package/dist/__tests__/watchers/request.watcher.spec.d.ts.map +1 -0
  153. package/dist/__tests__/watchers/request.watcher.spec.js +1017 -0
  154. package/dist/__tests__/watchers/request.watcher.spec.js.map +1 -0
  155. package/dist/__tests__/watchers/schedule.watcher.spec.d.ts +2 -0
  156. package/dist/__tests__/watchers/schedule.watcher.spec.d.ts.map +1 -0
  157. package/dist/__tests__/watchers/schedule.watcher.spec.js +338 -0
  158. package/dist/__tests__/watchers/schedule.watcher.spec.js.map +1 -0
  159. package/dist/__tests__/watchers/view.watcher.spec.d.ts +2 -0
  160. package/dist/__tests__/watchers/view.watcher.spec.d.ts.map +1 -0
  161. package/dist/__tests__/watchers/view.watcher.spec.js +564 -0
  162. package/dist/__tests__/watchers/view.watcher.spec.js.map +1 -0
  163. package/dist/api/api.controller.d.ts +193 -0
  164. package/dist/api/api.controller.d.ts.map +1 -0
  165. package/dist/api/api.controller.js +562 -0
  166. package/dist/api/api.controller.js.map +1 -0
  167. package/dist/api/api.guard.d.ts +77 -0
  168. package/dist/api/api.guard.d.ts.map +1 -0
  169. package/dist/api/api.guard.js +294 -0
  170. package/dist/api/api.guard.js.map +1 -0
  171. package/dist/api/dashboard.controller.d.ts +49 -0
  172. package/dist/api/dashboard.controller.d.ts.map +1 -0
  173. package/dist/api/dashboard.controller.js +472 -0
  174. package/dist/api/dashboard.controller.js.map +1 -0
  175. package/dist/api/index.d.ts +5 -0
  176. package/dist/api/index.d.ts.map +1 -0
  177. package/dist/api/index.js +21 -0
  178. package/dist/api/index.js.map +1 -0
  179. package/dist/api/tag.controller.d.ts +65 -0
  180. package/dist/api/tag.controller.d.ts.map +1 -0
  181. package/dist/api/tag.controller.js +149 -0
  182. package/dist/api/tag.controller.js.map +1 -0
  183. package/dist/core/collector.service.d.ts +80 -0
  184. package/dist/core/collector.service.d.ts.map +1 -0
  185. package/dist/core/collector.service.js +255 -0
  186. package/dist/core/collector.service.js.map +1 -0
  187. package/dist/core/family-hash.service.d.ts +64 -0
  188. package/dist/core/family-hash.service.d.ts.map +1 -0
  189. package/dist/core/family-hash.service.js +281 -0
  190. package/dist/core/family-hash.service.js.map +1 -0
  191. package/dist/core/index.d.ts +4 -0
  192. package/dist/core/index.d.ts.map +1 -0
  193. package/dist/core/index.js +20 -0
  194. package/dist/core/index.js.map +1 -0
  195. package/dist/core/pruning.service.d.ts +16 -0
  196. package/dist/core/pruning.service.d.ts.map +1 -0
  197. package/dist/core/pruning.service.js +71 -0
  198. package/dist/core/pruning.service.js.map +1 -0
  199. package/dist/core/storage/index.d.ts +3 -0
  200. package/dist/core/storage/index.d.ts.map +1 -0
  201. package/dist/core/storage/index.js +19 -0
  202. package/dist/core/storage/index.js.map +1 -0
  203. package/dist/core/storage/sqlite.storage.d.ts +60 -0
  204. package/dist/core/storage/sqlite.storage.d.ts.map +1 -0
  205. package/dist/core/storage/sqlite.storage.js +929 -0
  206. package/dist/core/storage/sqlite.storage.js.map +1 -0
  207. package/dist/core/storage/storage.interface.d.ts +122 -0
  208. package/dist/core/storage/storage.interface.d.ts.map +1 -0
  209. package/dist/core/storage/storage.interface.js +5 -0
  210. package/dist/core/storage/storage.interface.js.map +1 -0
  211. package/dist/core/tag.service.d.ts +71 -0
  212. package/dist/core/tag.service.d.ts.map +1 -0
  213. package/dist/core/tag.service.js +568 -0
  214. package/dist/core/tag.service.js.map +1 -0
  215. package/dist/dashboard/public/assets/BatchesPage-DFT4fKlJ.js +1 -0
  216. package/dist/dashboard/public/assets/CachePage-CRy1Tjb8.js +1 -0
  217. package/dist/dashboard/public/assets/ClickableBadge-CV5J3THx.js +1 -0
  218. package/dist/dashboard/public/assets/CommandsPage-DdRnTm-W.js +1 -0
  219. package/dist/dashboard/public/assets/DashboardPage-CjaRZXYy.js +26 -0
  220. package/dist/dashboard/public/assets/DataTable-B6o9H8lh.js +88 -0
  221. package/dist/dashboard/public/assets/DumpsPage-DO8y1RTg.js +1 -0
  222. package/dist/dashboard/public/assets/EntryDetailPage-By-YcAGL.js +125 -0
  223. package/dist/dashboard/public/assets/EventsPage-u-r4AiT4.js +1 -0
  224. package/dist/dashboard/public/assets/ExceptionsPage-DXUcARr1.js +6 -0
  225. package/dist/dashboard/public/assets/GatesPage-DpeP7CDZ.js +1 -0
  226. package/dist/dashboard/public/assets/HttpClientPage-BJ4-5E6t.js +1 -0
  227. package/dist/dashboard/public/assets/JobsPage-Dv3KaX2x.js +1 -0
  228. package/dist/dashboard/public/assets/LogsPage-D0Q3yDb1.js +1 -0
  229. package/dist/dashboard/public/assets/MailPage-Bf8C6WF6.js +1 -0
  230. package/dist/dashboard/public/assets/ModelsPage-BMHncI5y.js +1 -0
  231. package/dist/dashboard/public/assets/NotificationsPage-D5-I-Oxb.js +1 -0
  232. package/dist/dashboard/public/assets/QueriesPage-oNp0i6Gt.js +1 -0
  233. package/dist/dashboard/public/assets/RedisPage-_GeS2OD8.js +1 -0
  234. package/dist/dashboard/public/assets/RequestsPage-BCwqu9US.js +1 -0
  235. package/dist/dashboard/public/assets/SchedulePage-CR0P-oX6.js +1 -0
  236. package/dist/dashboard/public/assets/ViewsPage-Dsy5ECRA.js +1 -0
  237. package/dist/dashboard/public/assets/calendar-DfK3x-6B.js +6 -0
  238. package/dist/dashboard/public/assets/circle-check-big-DcsYW8y8.js +6 -0
  239. package/dist/dashboard/public/assets/format-BFldcnCk.js +1 -0
  240. package/dist/dashboard/public/assets/index-DmeA1maE.css +1 -0
  241. package/dist/dashboard/public/assets/index-rkbGYdU7.js +351 -0
  242. package/dist/dashboard/public/assets/types-Cldoe2db.js +1 -0
  243. package/dist/dashboard/public/assets/vendor-B2nVRih0.js +43 -0
  244. package/dist/dashboard/public/assets/zap-DqtRi0JM.js +6 -0
  245. package/dist/dashboard/public/index.html +15 -0
  246. package/dist/dashboard/public/nestlens-icon.svg +9 -0
  247. package/dist/index.d.ts +22 -0
  248. package/dist/index.d.ts.map +1 -0
  249. package/dist/index.js +69 -0
  250. package/dist/index.js.map +1 -0
  251. package/dist/nestlens.config.d.ts +216 -0
  252. package/dist/nestlens.config.d.ts.map +1 -0
  253. package/dist/nestlens.config.js +57 -0
  254. package/dist/nestlens.config.js.map +1 -0
  255. package/dist/nestlens.module.d.ts +10 -0
  256. package/dist/nestlens.module.d.ts.map +1 -0
  257. package/dist/nestlens.module.js +211 -0
  258. package/dist/nestlens.module.js.map +1 -0
  259. package/dist/types/entry.types.d.ts +368 -0
  260. package/dist/types/entry.types.d.ts.map +1 -0
  261. package/dist/types/entry.types.js +3 -0
  262. package/dist/types/entry.types.js.map +1 -0
  263. package/dist/types/index.d.ts +4 -0
  264. package/dist/types/index.d.ts.map +1 -0
  265. package/dist/types/index.js +20 -0
  266. package/dist/types/index.js.map +1 -0
  267. package/dist/types/request.types.d.ts +9 -0
  268. package/dist/types/request.types.d.ts.map +1 -0
  269. package/dist/types/request.types.js +3 -0
  270. package/dist/types/request.types.js.map +1 -0
  271. package/dist/types/tag.types.d.ts +32 -0
  272. package/dist/types/tag.types.d.ts.map +1 -0
  273. package/dist/types/tag.types.js +3 -0
  274. package/dist/types/tag.types.js.map +1 -0
  275. package/dist/watchers/batch.watcher.d.ts +48 -0
  276. package/dist/watchers/batch.watcher.d.ts.map +1 -0
  277. package/dist/watchers/batch.watcher.js +185 -0
  278. package/dist/watchers/batch.watcher.js.map +1 -0
  279. package/dist/watchers/cache.watcher.d.ts +19 -0
  280. package/dist/watchers/cache.watcher.d.ts.map +1 -0
  281. package/dist/watchers/cache.watcher.js +158 -0
  282. package/dist/watchers/cache.watcher.js.map +1 -0
  283. package/dist/watchers/command.watcher.d.ts +32 -0
  284. package/dist/watchers/command.watcher.d.ts.map +1 -0
  285. package/dist/watchers/command.watcher.js +174 -0
  286. package/dist/watchers/command.watcher.js.map +1 -0
  287. package/dist/watchers/dump.watcher.d.ts +52 -0
  288. package/dist/watchers/dump.watcher.d.ts.map +1 -0
  289. package/dist/watchers/dump.watcher.js +234 -0
  290. package/dist/watchers/dump.watcher.js.map +1 -0
  291. package/dist/watchers/event.watcher.d.ts +20 -0
  292. package/dist/watchers/event.watcher.d.ts.map +1 -0
  293. package/dist/watchers/event.watcher.js +123 -0
  294. package/dist/watchers/event.watcher.js.map +1 -0
  295. package/dist/watchers/exception.watcher.d.ts +15 -0
  296. package/dist/watchers/exception.watcher.d.ts.map +1 -0
  297. package/dist/watchers/exception.watcher.js +117 -0
  298. package/dist/watchers/exception.watcher.js.map +1 -0
  299. package/dist/watchers/gate.watcher.d.ts +40 -0
  300. package/dist/watchers/gate.watcher.d.ts.map +1 -0
  301. package/dist/watchers/gate.watcher.js +200 -0
  302. package/dist/watchers/gate.watcher.js.map +1 -0
  303. package/dist/watchers/http-client.watcher.d.ts +34 -0
  304. package/dist/watchers/http-client.watcher.d.ts.map +1 -0
  305. package/dist/watchers/http-client.watcher.js +259 -0
  306. package/dist/watchers/http-client.watcher.js.map +1 -0
  307. package/dist/watchers/index.d.ts +19 -0
  308. package/dist/watchers/index.d.ts.map +1 -0
  309. package/dist/watchers/index.js +35 -0
  310. package/dist/watchers/index.js.map +1 -0
  311. package/dist/watchers/job.watcher.d.ts +27 -0
  312. package/dist/watchers/job.watcher.d.ts.map +1 -0
  313. package/dist/watchers/job.watcher.js +190 -0
  314. package/dist/watchers/job.watcher.js.map +1 -0
  315. package/dist/watchers/log.watcher.d.ts +26 -0
  316. package/dist/watchers/log.watcher.d.ts.map +1 -0
  317. package/dist/watchers/log.watcher.js +122 -0
  318. package/dist/watchers/log.watcher.js.map +1 -0
  319. package/dist/watchers/mail.watcher.d.ts +26 -0
  320. package/dist/watchers/mail.watcher.d.ts.map +1 -0
  321. package/dist/watchers/mail.watcher.js +154 -0
  322. package/dist/watchers/mail.watcher.js.map +1 -0
  323. package/dist/watchers/model.watcher.d.ts +54 -0
  324. package/dist/watchers/model.watcher.d.ts.map +1 -0
  325. package/dist/watchers/model.watcher.js +343 -0
  326. package/dist/watchers/model.watcher.js.map +1 -0
  327. package/dist/watchers/notification.watcher.d.ts +48 -0
  328. package/dist/watchers/notification.watcher.d.ts.map +1 -0
  329. package/dist/watchers/notification.watcher.js +215 -0
  330. package/dist/watchers/notification.watcher.js.map +1 -0
  331. package/dist/watchers/query/index.d.ts +3 -0
  332. package/dist/watchers/query/index.d.ts.map +1 -0
  333. package/dist/watchers/query/index.js +19 -0
  334. package/dist/watchers/query/index.js.map +1 -0
  335. package/dist/watchers/query/query.watcher.d.ts +27 -0
  336. package/dist/watchers/query/query.watcher.d.ts.map +1 -0
  337. package/dist/watchers/query/query.watcher.js +167 -0
  338. package/dist/watchers/query/query.watcher.js.map +1 -0
  339. package/dist/watchers/query/types.d.ts +60 -0
  340. package/dist/watchers/query/types.d.ts.map +1 -0
  341. package/dist/watchers/query/types.js +55 -0
  342. package/dist/watchers/query/types.js.map +1 -0
  343. package/dist/watchers/redis.watcher.d.ts +43 -0
  344. package/dist/watchers/redis.watcher.d.ts.map +1 -0
  345. package/dist/watchers/redis.watcher.js +225 -0
  346. package/dist/watchers/redis.watcher.js.map +1 -0
  347. package/dist/watchers/request.watcher.d.ts +21 -0
  348. package/dist/watchers/request.watcher.d.ts.map +1 -0
  349. package/dist/watchers/request.watcher.js +287 -0
  350. package/dist/watchers/request.watcher.js.map +1 -0
  351. package/dist/watchers/schedule.watcher.d.ts +25 -0
  352. package/dist/watchers/schedule.watcher.d.ts.map +1 -0
  353. package/dist/watchers/schedule.watcher.js +168 -0
  354. package/dist/watchers/schedule.watcher.js.map +1 -0
  355. package/dist/watchers/view.watcher.d.ts +51 -0
  356. package/dist/watchers/view.watcher.d.ts.map +1 -0
  357. package/dist/watchers/view.watcher.js +219 -0
  358. package/dist/watchers/view.watcher.js.map +1 -0
  359. package/package.json +86 -0
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./query.watcher"), exports);
18
+ __exportStar(require("./types"), exports);
19
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/watchers/query/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,kDAAgC;AAChC,0CAAwB"}
@@ -0,0 +1,27 @@
1
+ import { OnModuleInit } from '@nestjs/common';
2
+ import { CollectorService } from '../../core/collector.service';
3
+ import { NestLensConfig } from '../../nestlens.config';
4
+ export interface QueryData {
5
+ query: string;
6
+ parameters?: unknown[];
7
+ duration: number;
8
+ source: string;
9
+ connection?: string;
10
+ requestId?: string;
11
+ }
12
+ export declare class QueryWatcher implements OnModuleInit {
13
+ private readonly collector;
14
+ private readonly nestlensConfig;
15
+ private readonly logger;
16
+ private readonly config;
17
+ constructor(collector: CollectorService, nestlensConfig: NestLensConfig);
18
+ onModuleInit(): Promise<void>;
19
+ private initializeTypeORM;
20
+ private findTypeORMDataSources;
21
+ private attachTypeORMLogger;
22
+ private initializePrisma;
23
+ private attachPrismaMiddleware;
24
+ private handleQuery;
25
+ private formatQuery;
26
+ }
27
+ //# sourceMappingURL=query.watcher.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"query.watcher.d.ts","sourceRoot":"","sources":["../../../src/watchers/query/query.watcher.ts"],"names":[],"mappings":"AAAA,OAAO,EAA8B,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC1E,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAChE,OAAO,EACL,cAAc,EAGf,MAAM,uBAAuB,CAAC;AAa/B,MAAM,WAAW,SAAS;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,OAAO,EAAE,CAAC;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,qBACa,YAAa,YAAW,YAAY;IAK7C,OAAO,CAAC,QAAQ,CAAC,SAAS;IAE1B,OAAO,CAAC,QAAQ,CAAC,cAAc;IANjC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAiC;IACxD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAqB;gBAGzB,SAAS,EAAE,gBAAgB,EAE3B,cAAc,EAAE,cAAc;IAS3C,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;YAgBrB,iBAAiB;IA8B/B,OAAO,CAAC,sBAAsB;IAwB9B,OAAO,CAAC,mBAAmB;YAwBb,gBAAgB;IAe9B,OAAO,CAAC,sBAAsB;IAmB9B,OAAO,CAAC,WAAW;IAoBnB,OAAO,CAAC,WAAW;CAGpB"}
@@ -0,0 +1,167 @@
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 QueryWatcher_1;
15
+ Object.defineProperty(exports, "__esModule", { value: true });
16
+ exports.QueryWatcher = 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
+ const types_1 = require("./types");
21
+ let QueryWatcher = QueryWatcher_1 = class QueryWatcher {
22
+ constructor(collector, nestlensConfig) {
23
+ this.collector = collector;
24
+ this.nestlensConfig = nestlensConfig;
25
+ this.logger = new common_1.Logger(QueryWatcher_1.name);
26
+ const watcherConfig = nestlensConfig.watchers?.query;
27
+ this.config =
28
+ typeof watcherConfig === 'object'
29
+ ? watcherConfig
30
+ : { enabled: watcherConfig !== false, slowThreshold: 100 };
31
+ }
32
+ async onModuleInit() {
33
+ if (!this.config.enabled) {
34
+ return;
35
+ }
36
+ // Initialize TypeORM adapter
37
+ if ((0, types_1.isModuleAvailable)('typeorm')) {
38
+ await this.initializeTypeORM();
39
+ }
40
+ // Initialize Prisma adapter
41
+ if ((0, types_1.isModuleAvailable)('@prisma/client')) {
42
+ await this.initializePrisma();
43
+ }
44
+ }
45
+ async initializeTypeORM() {
46
+ try {
47
+ const typeorm = (0, types_1.tryRequire)('typeorm');
48
+ if (!typeorm)
49
+ return;
50
+ // Try to get the default DataSource from TypeORM's global storage
51
+ const dataSources = this.findTypeORMDataSources(typeorm);
52
+ for (const dataSource of dataSources) {
53
+ if (dataSource.isInitialized) {
54
+ this.attachTypeORMLogger(dataSource);
55
+ }
56
+ else {
57
+ // Wait for initialization
58
+ const originalInitialize = dataSource.initialize.bind(dataSource);
59
+ dataSource.initialize = async () => {
60
+ const result = await originalInitialize();
61
+ this.attachTypeORMLogger(dataSource);
62
+ return result;
63
+ };
64
+ }
65
+ }
66
+ if (dataSources.length > 0) {
67
+ this.logger.log('TypeORM query logging initialized');
68
+ }
69
+ }
70
+ catch (error) {
71
+ this.logger.debug(`TypeORM initialization skipped: ${error}`);
72
+ }
73
+ }
74
+ findTypeORMDataSources(typeorm) {
75
+ const dataSources = [];
76
+ // TypeORM exports getDataSources() function to get all registered data sources
77
+ // Use Object.getOwnPropertyDescriptor for type-safe property access
78
+ const getDataSourcesDescriptor = Object.getOwnPropertyDescriptor(typeorm, 'getDataSources');
79
+ if (getDataSourcesDescriptor && typeof getDataSourcesDescriptor.value === 'function') {
80
+ try {
81
+ const getDataSources = getDataSourcesDescriptor.value;
82
+ const sources = getDataSources();
83
+ for (const source of sources) {
84
+ if ((0, types_1.isTypeORMDataSource)(source)) {
85
+ dataSources.push(source);
86
+ }
87
+ }
88
+ }
89
+ catch {
90
+ // Registry not available
91
+ }
92
+ }
93
+ return dataSources;
94
+ }
95
+ attachTypeORMLogger(dataSource) {
96
+ const driver = dataSource.driver;
97
+ const originalAfterQuery = driver.afterQuery;
98
+ driver.afterQuery = (query, parameters, _result, time) => {
99
+ if (originalAfterQuery) {
100
+ originalAfterQuery.call(driver, query, parameters, _result, time);
101
+ }
102
+ this.handleQuery({
103
+ query: this.formatQuery(query),
104
+ parameters,
105
+ duration: time,
106
+ source: 'typeorm',
107
+ connection: dataSource.options.name ?? 'default',
108
+ });
109
+ };
110
+ }
111
+ async initializePrisma() {
112
+ try {
113
+ // Prisma clients are typically instantiated by the user
114
+ // We can hook into the global Prisma instance if it exists
115
+ const globalPrisma = global['prisma'];
116
+ if ((0, types_1.isPrismaClient)(globalPrisma)) {
117
+ this.attachPrismaMiddleware(globalPrisma);
118
+ this.logger.log('Prisma query logging initialized (global instance)');
119
+ }
120
+ }
121
+ catch (error) {
122
+ this.logger.debug(`Prisma initialization skipped: ${error}`);
123
+ }
124
+ }
125
+ attachPrismaMiddleware(client) {
126
+ if (!client.$use)
127
+ return;
128
+ client.$use(async (params, next) => {
129
+ const start = Date.now();
130
+ const result = await next(params);
131
+ const duration = Date.now() - start;
132
+ this.handleQuery({
133
+ query: `${params.model ?? 'unknown'}.${params.action}`,
134
+ parameters: params.args ? [params.args] : undefined,
135
+ duration,
136
+ source: 'prisma',
137
+ });
138
+ return result;
139
+ });
140
+ }
141
+ handleQuery(data) {
142
+ if (this.config.ignorePatterns?.some((p) => p.test(data.query))) {
143
+ return;
144
+ }
145
+ const slowThreshold = this.config.slowThreshold || 100;
146
+ const isSlow = data.duration > slowThreshold;
147
+ const payload = {
148
+ query: data.query,
149
+ parameters: data.parameters,
150
+ duration: data.duration,
151
+ slow: isSlow,
152
+ source: data.source,
153
+ connection: data.connection,
154
+ };
155
+ this.collector.collect('query', payload, data.requestId);
156
+ }
157
+ formatQuery(query) {
158
+ return query.replace(/\s+/g, ' ').trim();
159
+ }
160
+ };
161
+ exports.QueryWatcher = QueryWatcher;
162
+ exports.QueryWatcher = QueryWatcher = QueryWatcher_1 = __decorate([
163
+ (0, common_1.Injectable)(),
164
+ __param(1, (0, common_1.Inject)(nestlens_config_1.NESTLENS_CONFIG)),
165
+ __metadata("design:paramtypes", [collector_service_1.CollectorService, Object])
166
+ ], QueryWatcher);
167
+ //# sourceMappingURL=query.watcher.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"query.watcher.js","sourceRoot":"","sources":["../../../src/watchers/query/query.watcher.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,60 @@
1
+ /**
2
+ * Type definitions for optional ORM dependencies
3
+ * These interfaces define the minimum contract we need from each ORM
4
+ * without requiring the actual packages to be installed
5
+ */
6
+ export interface TypeORMDataSource {
7
+ isInitialized: boolean;
8
+ options: TypeORMDataSourceOptions;
9
+ driver: TypeORMDriver;
10
+ initialize(): Promise<this>;
11
+ }
12
+ export interface TypeORMDataSourceOptions {
13
+ name?: string;
14
+ type: string;
15
+ }
16
+ export interface TypeORMDriver {
17
+ afterQuery?: TypeORMAfterQueryFn;
18
+ }
19
+ export type TypeORMAfterQueryFn = (query: string, parameters: unknown[] | undefined, result: unknown, time: number) => void;
20
+ export interface PrismaClient {
21
+ $on?: PrismaOnFn;
22
+ $use?: PrismaUseFn;
23
+ }
24
+ export type PrismaOnFn = (event: 'query', callback: (event: PrismaQueryEvent) => void) => void;
25
+ export type PrismaUseFn = (middleware: PrismaMiddleware) => void;
26
+ export type PrismaMiddleware = (params: PrismaMiddlewareParams, next: (params: PrismaMiddlewareParams) => Promise<unknown>) => Promise<unknown>;
27
+ export interface PrismaQueryEvent {
28
+ query: string;
29
+ params: string;
30
+ duration: number;
31
+ target: string;
32
+ }
33
+ export interface PrismaMiddlewareParams {
34
+ model?: string;
35
+ action: string;
36
+ args: unknown;
37
+ dataPath: string[];
38
+ runInTransaction: boolean;
39
+ }
40
+ export declare function isTypeORMDataSource(obj: unknown): obj is TypeORMDataSource;
41
+ export declare function isPrismaClient(obj: unknown): obj is PrismaClient;
42
+ export interface TypeORMModule {
43
+ DataSource: new (options: TypeORMDataSourceOptions) => TypeORMDataSource;
44
+ }
45
+ export interface NestJSTypeORMModule {
46
+ getDataSourceToken: (name?: string) => string | symbol;
47
+ }
48
+ export interface PrismaModule {
49
+ PrismaClient: new () => PrismaClient;
50
+ }
51
+ /**
52
+ * Safe synchronous module loader for optional peer dependencies.
53
+ * Uses require() instead of dynamic import() because:
54
+ * 1. Synchronous loading is needed for initialization
55
+ * 2. Optional dependencies may not exist at runtime
56
+ * 3. This is the standard pattern for optional peer deps in Node.js
57
+ */
58
+ export declare function tryRequire<T>(moduleName: string): T | null;
59
+ export declare function isModuleAvailable(moduleName: string): boolean;
60
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/watchers/query/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,MAAM,WAAW,iBAAiB;IAChC,aAAa,EAAE,OAAO,CAAC;IACvB,OAAO,EAAE,wBAAwB,CAAC;IAClC,MAAM,EAAE,aAAa,CAAC;IACtB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CAC7B;AAED,MAAM,WAAW,wBAAwB;IACvC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,aAAa;IAC5B,UAAU,CAAC,EAAE,mBAAmB,CAAC;CAClC;AAED,MAAM,MAAM,mBAAmB,GAAG,CAChC,KAAK,EAAE,MAAM,EACb,UAAU,EAAE,OAAO,EAAE,GAAG,SAAS,EACjC,MAAM,EAAE,OAAO,EACf,IAAI,EAAE,MAAM,KACT,IAAI,CAAC;AAGV,MAAM,WAAW,YAAY;IAC3B,GAAG,CAAC,EAAE,UAAU,CAAC;IACjB,IAAI,CAAC,EAAE,WAAW,CAAC;CACpB;AAED,MAAM,MAAM,UAAU,GAAG,CACvB,KAAK,EAAE,OAAO,EACd,QAAQ,EAAE,CAAC,KAAK,EAAE,gBAAgB,KAAK,IAAI,KACxC,IAAI,CAAC;AAEV,MAAM,MAAM,WAAW,GAAG,CACxB,UAAU,EAAE,gBAAgB,KACzB,IAAI,CAAC;AAEV,MAAM,MAAM,gBAAgB,GAAG,CAC7B,MAAM,EAAE,sBAAsB,EAC9B,IAAI,EAAE,CAAC,MAAM,EAAE,sBAAsB,KAAK,OAAO,CAAC,OAAO,CAAC,KACvD,OAAO,CAAC,OAAO,CAAC,CAAC;AAEtB,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,sBAAsB;IACrC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,OAAO,CAAC;IACd,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,gBAAgB,EAAE,OAAO,CAAC;CAC3B;AAGD,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,OAAO,GAAG,GAAG,IAAI,iBAAiB,CAS1E;AAED,wBAAgB,cAAc,CAAC,GAAG,EAAE,OAAO,GAAG,GAAG,IAAI,YAAY,CAOhE;AAGD,MAAM,WAAW,aAAa;IAC5B,UAAU,EAAE,KAAK,OAAO,EAAE,wBAAwB,KAAK,iBAAiB,CAAC;CAC1E;AAED,MAAM,WAAW,mBAAmB;IAClC,kBAAkB,EAAE,CAAC,IAAI,CAAC,EAAE,MAAM,KAAK,MAAM,GAAG,MAAM,CAAC;CACxD;AAED,MAAM,WAAW,YAAY;IAC3B,YAAY,EAAE,UAAU,YAAY,CAAC;CACtC;AAED;;;;;;GAMG;AACH,wBAAgB,UAAU,CAAC,CAAC,EAAE,UAAU,EAAE,MAAM,GAAG,CAAC,GAAG,IAAI,CAQ1D;AAED,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAO7D"}
@@ -0,0 +1,55 @@
1
+ "use strict";
2
+ /**
3
+ * Type definitions for optional ORM dependencies
4
+ * These interfaces define the minimum contract we need from each ORM
5
+ * without requiring the actual packages to be installed
6
+ */
7
+ Object.defineProperty(exports, "__esModule", { value: true });
8
+ exports.isTypeORMDataSource = isTypeORMDataSource;
9
+ exports.isPrismaClient = isPrismaClient;
10
+ exports.tryRequire = tryRequire;
11
+ exports.isModuleAvailable = isModuleAvailable;
12
+ // Type guards
13
+ function isTypeORMDataSource(obj) {
14
+ if (!obj || typeof obj !== 'object')
15
+ return false;
16
+ const candidate = obj;
17
+ return ('isInitialized' in candidate &&
18
+ 'options' in candidate &&
19
+ 'driver' in candidate &&
20
+ typeof candidate.isInitialized === 'boolean');
21
+ }
22
+ function isPrismaClient(obj) {
23
+ if (!obj || typeof obj !== 'object')
24
+ return false;
25
+ const candidate = obj;
26
+ return (typeof candidate.$on === 'function' ||
27
+ typeof candidate.$use === 'function');
28
+ }
29
+ /**
30
+ * Safe synchronous module loader for optional peer dependencies.
31
+ * Uses require() instead of dynamic import() because:
32
+ * 1. Synchronous loading is needed for initialization
33
+ * 2. Optional dependencies may not exist at runtime
34
+ * 3. This is the standard pattern for optional peer deps in Node.js
35
+ */
36
+ function tryRequire(moduleName) {
37
+ try {
38
+ // Using require for synchronous optional dependency loading
39
+ // eslint-disable-next-line @typescript-eslint/no-var-requires
40
+ return require(moduleName);
41
+ }
42
+ catch {
43
+ return null;
44
+ }
45
+ }
46
+ function isModuleAvailable(moduleName) {
47
+ try {
48
+ require.resolve(moduleName);
49
+ return true;
50
+ }
51
+ catch {
52
+ return false;
53
+ }
54
+ }
55
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/watchers/query/types.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;AA8DH,kDASC;AAED,wCAOC;AAsBD,gCAQC;AAED,8CAOC;AA1DD,cAAc;AACd,SAAgB,mBAAmB,CAAC,GAAY;IAC9C,IAAI,CAAC,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAClD,MAAM,SAAS,GAAG,GAA8B,CAAC;IACjD,OAAO,CACL,eAAe,IAAI,SAAS;QAC5B,SAAS,IAAI,SAAS;QACtB,QAAQ,IAAI,SAAS;QACrB,OAAO,SAAS,CAAC,aAAa,KAAK,SAAS,CAC7C,CAAC;AACJ,CAAC;AAED,SAAgB,cAAc,CAAC,GAAY;IACzC,IAAI,CAAC,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAClD,MAAM,SAAS,GAAG,GAA8B,CAAC;IACjD,OAAO,CACL,OAAO,SAAS,CAAC,GAAG,KAAK,UAAU;QACnC,OAAO,SAAS,CAAC,IAAI,KAAK,UAAU,CACrC,CAAC;AACJ,CAAC;AAeD;;;;;;GAMG;AACH,SAAgB,UAAU,CAAI,UAAkB;IAC9C,IAAI,CAAC;QACH,4DAA4D;QAC5D,8DAA8D;QAC9D,OAAO,OAAO,CAAC,UAAU,CAAM,CAAC;IAClC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,SAAgB,iBAAiB,CAAC,UAAkB;IAClD,IAAI,CAAC;QACH,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QAC5B,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC"}
@@ -0,0 +1,43 @@
1
+ import { OnModuleInit } from '@nestjs/common';
2
+ import { CollectorService } from '../core/collector.service';
3
+ import { NestLensConfig } from '../nestlens.config';
4
+ type RedisClient = any;
5
+ /**
6
+ * Token for injecting Redis client
7
+ */
8
+ export declare const NESTLENS_REDIS_CLIENT: unique symbol;
9
+ /**
10
+ * RedisWatcher monitors Redis operations and tracks command execution,
11
+ * performance metrics, and results while masking sensitive data.
12
+ */
13
+ export declare class RedisWatcher implements OnModuleInit {
14
+ private readonly collector;
15
+ private readonly nestlensConfig;
16
+ private readonly redisClient?;
17
+ private readonly logger;
18
+ private readonly config;
19
+ private originalMethods?;
20
+ constructor(collector: CollectorService, nestlensConfig: NestLensConfig, redisClient?: RedisClient | undefined);
21
+ onModuleInit(): void;
22
+ private setupInterceptors;
23
+ private wrapCommand;
24
+ private collectEntry;
25
+ /**
26
+ * Extract the key pattern from command arguments
27
+ */
28
+ private extractKeyPattern;
29
+ /**
30
+ * Check if a key contains sensitive information
31
+ */
32
+ private isSensitiveKey;
33
+ /**
34
+ * Capture and potentially mask command arguments
35
+ */
36
+ private captureArgs;
37
+ /**
38
+ * Capture and potentially mask result data
39
+ */
40
+ private captureResult;
41
+ }
42
+ export {};
43
+ //# sourceMappingURL=redis.watcher.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"redis.watcher.d.ts","sourceRoot":"","sources":["../../src/watchers/redis.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,WAAW,GAAG,GAAG,CAAC;AAEvB;;GAEG;AACH,eAAO,MAAM,qBAAqB,eAAkC,CAAC;AAerE;;;GAGG;AACH,qBACa,YAAa,YAAW,YAAY;IAM7C,OAAO,CAAC,QAAQ,CAAC,SAAS;IAE1B,OAAO,CAAC,QAAQ,CAAC,cAAc;IAG/B,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC;IAV/B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAiC;IACxD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAqB;IAC5C,OAAO,CAAC,eAAe,CAAC,CAAwB;gBAG7B,SAAS,EAAE,gBAAgB,EAE3B,cAAc,EAAE,cAAc,EAG9B,WAAW,CAAC,EAAE,WAAW,YAAA;IAS5C,YAAY;IAiBZ,OAAO,CAAC,iBAAiB;IA2DzB,OAAO,CAAC,WAAW;IAqBnB,OAAO,CAAC,YAAY;IAwBpB;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAczB;;OAEG;IACH,OAAO,CAAC,cAAc;IAStB;;OAEG;IACH,OAAO,CAAC,WAAW;IAwBnB;;OAEG;IACH,OAAO,CAAC,aAAa;CAmBtB"}
@@ -0,0 +1,225 @@
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 RedisWatcher_1;
15
+ Object.defineProperty(exports, "__esModule", { value: true });
16
+ exports.RedisWatcher = exports.NESTLENS_REDIS_CLIENT = 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 Redis client
22
+ */
23
+ exports.NESTLENS_REDIS_CLIENT = Symbol('NESTLENS_REDIS_CLIENT');
24
+ /**
25
+ * Sensitive key patterns that should be masked in results
26
+ */
27
+ const SENSITIVE_KEY_PATTERNS = [
28
+ 'password',
29
+ 'token',
30
+ 'secret',
31
+ 'auth',
32
+ 'key',
33
+ 'credential',
34
+ 'session',
35
+ ];
36
+ /**
37
+ * RedisWatcher monitors Redis operations and tracks command execution,
38
+ * performance metrics, and results while masking sensitive data.
39
+ */
40
+ let RedisWatcher = RedisWatcher_1 = class RedisWatcher {
41
+ constructor(collector, nestlensConfig, redisClient) {
42
+ this.collector = collector;
43
+ this.nestlensConfig = nestlensConfig;
44
+ this.redisClient = redisClient;
45
+ this.logger = new common_1.Logger(RedisWatcher_1.name);
46
+ const watcherConfig = nestlensConfig.watchers?.redis;
47
+ this.config =
48
+ typeof watcherConfig === 'object'
49
+ ? watcherConfig
50
+ : { enabled: watcherConfig !== false };
51
+ }
52
+ onModuleInit() {
53
+ if (!this.config.enabled) {
54
+ return;
55
+ }
56
+ // Check if Redis client was provided
57
+ if (!this.redisClient) {
58
+ this.logger.debug('RedisWatcher: No Redis client found. ' +
59
+ 'To enable Redis tracking, inject your Redis client with the NESTLENS_REDIS_CLIENT token.');
60
+ return;
61
+ }
62
+ this.setupInterceptors();
63
+ }
64
+ setupInterceptors() {
65
+ if (!this.redisClient)
66
+ return;
67
+ this.originalMethods = new Map();
68
+ // Common Redis commands to track
69
+ const commandsToTrack = [
70
+ 'get',
71
+ 'set',
72
+ 'del',
73
+ 'exists',
74
+ 'expire',
75
+ 'ttl',
76
+ 'incr',
77
+ 'decr',
78
+ 'lpush',
79
+ 'rpush',
80
+ 'lpop',
81
+ 'rpop',
82
+ 'lrange',
83
+ 'hget',
84
+ 'hset',
85
+ 'hdel',
86
+ 'hgetall',
87
+ 'sadd',
88
+ 'srem',
89
+ 'smembers',
90
+ 'zadd',
91
+ 'zrem',
92
+ 'zrange',
93
+ 'mget',
94
+ 'mset',
95
+ ];
96
+ for (const command of commandsToTrack) {
97
+ // Skip if command doesn't exist or should be ignored
98
+ if (!this.redisClient[command] ||
99
+ this.config.ignoreCommands?.includes(command)) {
100
+ continue;
101
+ }
102
+ // Store original method
103
+ this.originalMethods.set(command, this.redisClient[command].bind(this.redisClient));
104
+ // Wrap the command
105
+ this.redisClient[command] = this.wrapCommand(command, this.originalMethods.get(command));
106
+ }
107
+ this.logger.log('Redis interceptors installed');
108
+ }
109
+ wrapCommand(command, originalMethod) {
110
+ return async (...args) => {
111
+ const startTime = Date.now();
112
+ let status = 'success';
113
+ let result;
114
+ let error;
115
+ try {
116
+ result = await originalMethod(...args);
117
+ return result;
118
+ }
119
+ catch (err) {
120
+ status = 'error';
121
+ error = err instanceof Error ? err.message : String(err);
122
+ throw err;
123
+ }
124
+ finally {
125
+ const duration = Date.now() - startTime;
126
+ this.collectEntry(command, args, duration, status, result, error);
127
+ }
128
+ };
129
+ }
130
+ collectEntry(command, args, duration, status, result, error) {
131
+ const keyPattern = this.extractKeyPattern(command, args);
132
+ const isSensitive = this.isSensitiveKey(keyPattern);
133
+ const payload = {
134
+ command,
135
+ args: this.captureArgs(args, isSensitive),
136
+ duration,
137
+ keyPattern,
138
+ status,
139
+ result: this.captureResult(result, isSensitive),
140
+ error,
141
+ };
142
+ this.collector.collect('redis', payload);
143
+ }
144
+ /**
145
+ * Extract the key pattern from command arguments
146
+ */
147
+ extractKeyPattern(command, args) {
148
+ if (args.length === 0)
149
+ return undefined;
150
+ const key = args[0];
151
+ if (typeof key !== 'string')
152
+ return undefined;
153
+ // For multi-key commands
154
+ if (['mget', 'mset', 'del'].includes(command)) {
155
+ return `${command}(${args.length} keys)`;
156
+ }
157
+ return key;
158
+ }
159
+ /**
160
+ * Check if a key contains sensitive information
161
+ */
162
+ isSensitiveKey(keyPattern) {
163
+ if (!keyPattern)
164
+ return false;
165
+ const lowerKey = keyPattern.toLowerCase();
166
+ return SENSITIVE_KEY_PATTERNS.some((pattern) => lowerKey.includes(pattern));
167
+ }
168
+ /**
169
+ * Capture and potentially mask command arguments
170
+ */
171
+ captureArgs(args, isSensitive) {
172
+ if (isSensitive) {
173
+ return args.map((arg, index) => {
174
+ // Keep the key visible but mask values
175
+ if (index === 0 && typeof arg === 'string') {
176
+ return arg; // Keep key visible
177
+ }
178
+ return '***MASKED***';
179
+ });
180
+ }
181
+ try {
182
+ // Limit size to prevent huge arguments from bloating storage
183
+ const json = JSON.stringify(args);
184
+ const maxSize = this.config.maxResultSize || 1024; // 1KB default
185
+ if (json.length > maxSize) {
186
+ return [{ _truncated: true, _size: json.length }];
187
+ }
188
+ return args;
189
+ }
190
+ catch {
191
+ return [{ _error: 'Unable to serialize arguments' }];
192
+ }
193
+ }
194
+ /**
195
+ * Capture and potentially mask result data
196
+ */
197
+ captureResult(result, isSensitive) {
198
+ if (result === undefined || result === null)
199
+ return undefined;
200
+ if (isSensitive) {
201
+ return '***MASKED***';
202
+ }
203
+ try {
204
+ // Limit size to prevent huge results from bloating storage
205
+ const json = JSON.stringify(result);
206
+ const maxSize = this.config.maxResultSize || 1024; // 1KB default
207
+ if (json.length > maxSize) {
208
+ return { _truncated: true, _size: json.length };
209
+ }
210
+ return result;
211
+ }
212
+ catch {
213
+ return { _error: 'Unable to serialize result' };
214
+ }
215
+ }
216
+ };
217
+ exports.RedisWatcher = RedisWatcher;
218
+ exports.RedisWatcher = RedisWatcher = RedisWatcher_1 = __decorate([
219
+ (0, common_1.Injectable)(),
220
+ __param(1, (0, common_1.Inject)(nestlens_config_1.NESTLENS_CONFIG)),
221
+ __param(2, (0, common_1.Optional)()),
222
+ __param(2, (0, common_1.Inject)(exports.NESTLENS_REDIS_CLIENT)),
223
+ __metadata("design:paramtypes", [collector_service_1.CollectorService, Object, Object])
224
+ ], RedisWatcher);
225
+ //# sourceMappingURL=redis.watcher.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"redis.watcher.js","sourceRoot":"","sources":["../../src/watchers/redis.watcher.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ import { CallHandler, ExecutionContext, NestInterceptor } from '@nestjs/common';
2
+ import { Observable } from 'rxjs';
3
+ import { CollectorService } from '../core/collector.service';
4
+ import { NestLensConfig } from '../nestlens.config';
5
+ export declare const REQUEST_ID_HEADER = "x-nestlens-request-id";
6
+ export declare class RequestWatcher implements NestInterceptor {
7
+ private readonly collector;
8
+ private readonly nestlensConfig;
9
+ private readonly config;
10
+ constructor(collector: CollectorService, nestlensConfig: NestLensConfig);
11
+ intercept(context: ExecutionContext, next: CallHandler): Observable<unknown>;
12
+ private captureHeaders;
13
+ private captureBody;
14
+ private getClientIp;
15
+ private captureControllerInfo;
16
+ private captureUser;
17
+ private captureSession;
18
+ private captureResponseHeaders;
19
+ private captureTags;
20
+ }
21
+ //# sourceMappingURL=request.watcher.d.ts.map