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,562 @@
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
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.NestLensApiController = void 0;
16
+ const common_1 = require("@nestjs/common");
17
+ const storage_interface_1 = require("../core/storage/storage.interface");
18
+ const pruning_service_1 = require("../core/pruning.service");
19
+ const collector_service_1 = require("../core/collector.service");
20
+ const nestlens_config_1 = require("../nestlens.config");
21
+ const api_guard_1 = require("./api.guard");
22
+ // Pagination limits to prevent DoS
23
+ const MAX_LIMIT = 1000;
24
+ const DEFAULT_LIMIT = 50;
25
+ let NestLensApiController = class NestLensApiController {
26
+ /**
27
+ * Safely parse and bound pagination limit
28
+ */
29
+ parseLimit(limit) {
30
+ if (!limit)
31
+ return DEFAULT_LIMIT;
32
+ const parsed = parseInt(limit, 10);
33
+ if (isNaN(parsed) || parsed < 1)
34
+ return DEFAULT_LIMIT;
35
+ return Math.min(parsed, MAX_LIMIT);
36
+ }
37
+ /**
38
+ * Safely parse pagination offset
39
+ */
40
+ parseOffset(offset) {
41
+ if (!offset)
42
+ return 0;
43
+ const parsed = parseInt(offset, 10);
44
+ return isNaN(parsed) || parsed < 0 ? 0 : parsed;
45
+ }
46
+ constructor(storage, config, pruningService, collectorService) {
47
+ this.storage = storage;
48
+ this.config = config;
49
+ this.pruningService = pruningService;
50
+ this.collectorService = collectorService;
51
+ this.lastPruneRun = null;
52
+ this.nextPruneRun = null;
53
+ // Calculate next prune run
54
+ const intervalMinutes = this.config.pruning?.interval || 60;
55
+ this.nextPruneRun = new Date(Date.now() + intervalMinutes * 60 * 1000);
56
+ }
57
+ async getEntries(type, requestId, limit, offset, from, to) {
58
+ const parsedLimit = this.parseLimit(limit);
59
+ const parsedOffset = this.parseOffset(offset);
60
+ const entries = await this.storage.find({
61
+ type,
62
+ requestId,
63
+ limit: parsedLimit,
64
+ offset: parsedOffset,
65
+ from: from ? new Date(from) : undefined,
66
+ to: to ? new Date(to) : undefined,
67
+ });
68
+ const total = await this.storage.count(type);
69
+ return {
70
+ data: entries,
71
+ meta: {
72
+ total,
73
+ limit: parsedLimit,
74
+ offset: parsedOffset,
75
+ },
76
+ };
77
+ }
78
+ /**
79
+ * Cursor-based pagination endpoints
80
+ * NOTE: These must come BEFORE @Get('entries/:id') to avoid route conflicts
81
+ */
82
+ async getEntriesWithCursor(type, limit, beforeSequence, afterSequence, levels, contexts, queryTypes, sources, slow, names, methods, paths, resolved, statuses, hostnames, controllers, ips, scheduleStatuses, jobStatuses, queues, cacheOperations, mailStatuses, redisStatuses, redisCommands, modelActions, entities, modelSources, notificationTypes, notificationStatuses, viewFormats, viewStatuses, commandStatuses, commandNames, gateNames, gateResults, batchStatuses, batchOperations, dumpStatuses, dumpOperations, dumpFormats, tags, search) {
83
+ // Build filters object from query params
84
+ const filters = {};
85
+ if (levels)
86
+ filters.levels = levels.split(',').filter(Boolean);
87
+ if (contexts)
88
+ filters.contexts = contexts.split(',').filter(Boolean);
89
+ if (queryTypes)
90
+ filters.queryTypes = queryTypes.split(',').filter(Boolean);
91
+ if (sources)
92
+ filters.sources = sources.split(',').filter(Boolean);
93
+ if (slow !== undefined)
94
+ filters.slow = slow === 'true';
95
+ if (names)
96
+ filters.names = names.split(',').filter(Boolean);
97
+ if (methods)
98
+ filters.methods = methods.split(',').filter(Boolean);
99
+ if (paths)
100
+ filters.paths = paths.split(',').filter(Boolean);
101
+ if (resolved !== undefined)
102
+ filters.resolved = resolved === 'true';
103
+ if (statuses) {
104
+ filters.statuses = statuses.split(',').filter(Boolean).map(s => s.toUpperCase() === 'ERR' ? 'ERR' : parseInt(s, 10));
105
+ }
106
+ if (hostnames)
107
+ filters.hostnames = hostnames.split(',').filter(Boolean);
108
+ if (controllers)
109
+ filters.controllers = controllers.split(',').filter(Boolean);
110
+ if (ips)
111
+ filters.ips = ips.split(',').filter(Boolean);
112
+ if (scheduleStatuses)
113
+ filters.scheduleStatuses = scheduleStatuses.split(',').filter(Boolean);
114
+ if (jobStatuses)
115
+ filters.jobStatuses = jobStatuses.split(',').filter(Boolean);
116
+ if (queues)
117
+ filters.queues = queues.split(',').filter(Boolean);
118
+ if (cacheOperations)
119
+ filters.cacheOperations = cacheOperations.split(',').filter(Boolean);
120
+ if (mailStatuses)
121
+ filters.mailStatuses = mailStatuses.split(',').filter(Boolean);
122
+ // New entry type filters
123
+ if (redisStatuses)
124
+ filters.redisStatuses = redisStatuses.split(',').filter(Boolean);
125
+ if (redisCommands)
126
+ filters.redisCommands = redisCommands.split(',').filter(Boolean);
127
+ if (modelActions)
128
+ filters.modelActions = modelActions.split(',').filter(Boolean);
129
+ if (entities)
130
+ filters.entities = entities.split(',').filter(Boolean);
131
+ if (modelSources)
132
+ filters.modelSources = modelSources.split(',').filter(Boolean);
133
+ if (notificationTypes)
134
+ filters.notificationTypes = notificationTypes.split(',').filter(Boolean);
135
+ if (notificationStatuses)
136
+ filters.notificationStatuses = notificationStatuses.split(',').filter(Boolean);
137
+ if (viewFormats)
138
+ filters.viewFormats = viewFormats.split(',').filter(Boolean);
139
+ if (viewStatuses)
140
+ filters.viewStatuses = viewStatuses.split(',').filter(Boolean);
141
+ if (commandStatuses)
142
+ filters.commandStatuses = commandStatuses.split(',').filter(Boolean);
143
+ if (commandNames)
144
+ filters.commandNames = commandNames.split(',').filter(Boolean);
145
+ if (gateNames)
146
+ filters.gateNames = gateNames.split(',').filter(Boolean);
147
+ if (gateResults)
148
+ filters.gateResults = gateResults.split(',').filter(Boolean);
149
+ if (batchStatuses)
150
+ filters.batchStatuses = batchStatuses.split(',').filter(Boolean);
151
+ if (batchOperations)
152
+ filters.batchOperations = batchOperations.split(',').filter(Boolean);
153
+ if (dumpStatuses)
154
+ filters.dumpStatuses = dumpStatuses.split(',').filter(Boolean);
155
+ if (dumpOperations)
156
+ filters.dumpOperations = dumpOperations.split(',').filter(Boolean);
157
+ if (dumpFormats)
158
+ filters.dumpFormats = dumpFormats.split(',').filter(Boolean);
159
+ if (tags)
160
+ filters.tags = tags.split(',').filter(Boolean);
161
+ if (search)
162
+ filters.search = search;
163
+ // Only include filters if at least one is set
164
+ const hasFilters = Object.keys(filters).length > 0;
165
+ return this.storage.findWithCursor(type, {
166
+ limit: this.parseLimit(limit),
167
+ beforeSequence: beforeSequence ? parseInt(beforeSequence, 10) : undefined,
168
+ afterSequence: afterSequence ? parseInt(afterSequence, 10) : undefined,
169
+ filters: hasFilters ? filters : undefined,
170
+ });
171
+ }
172
+ async getLatestSequence(type) {
173
+ const sequence = await this.storage.getLatestSequence(type);
174
+ return { data: sequence };
175
+ }
176
+ async checkNewEntries(afterSequence, type) {
177
+ const seq = parseInt(afterSequence, 10);
178
+ const count = await this.storage.hasEntriesAfter(seq, type);
179
+ return { data: { count, hasNew: count > 0 } };
180
+ }
181
+ /**
182
+ * Get entries grouped by family hash
183
+ * NOTE: Must come BEFORE @Get('entries/:id') to avoid route conflict
184
+ */
185
+ async getGroupedEntries(type, limit) {
186
+ const groups = await this.storage.getGroupedByFamilyHash(type, this.parseLimit(limit));
187
+ return { data: groups };
188
+ }
189
+ /**
190
+ * Get all entries with the same family hash
191
+ * NOTE: Must come BEFORE @Get('entries/:id') to avoid route conflict
192
+ */
193
+ async getEntriesByFamilyHash(hash, limit) {
194
+ const entries = await this.storage.findByFamilyHash(hash, this.parseLimit(limit));
195
+ return { data: entries };
196
+ }
197
+ async getEntry(id) {
198
+ const entry = await this.storage.findById(id);
199
+ if (!entry) {
200
+ return { data: null, error: 'Entry not found' };
201
+ }
202
+ // If it's a request entry, also get related queries, exceptions, logs
203
+ if (entry.type === 'request' && entry.requestId) {
204
+ const related = await this.storage.find({
205
+ requestId: entry.requestId,
206
+ limit: 100,
207
+ });
208
+ return {
209
+ data: entry,
210
+ related: related.filter((e) => e.id !== entry.id),
211
+ };
212
+ }
213
+ return { data: entry };
214
+ }
215
+ async getStats() {
216
+ const stats = await this.storage.getStats();
217
+ return { data: stats };
218
+ }
219
+ async getRequests(limit, offset) {
220
+ return this.getEntries('request', undefined, limit, offset);
221
+ }
222
+ async getQueries(limit, offset, slow) {
223
+ const parsedLimit = this.parseLimit(limit);
224
+ const parsedOffset = this.parseOffset(offset);
225
+ const entries = await this.storage.find({
226
+ type: 'query',
227
+ limit: parsedLimit,
228
+ offset: parsedOffset,
229
+ });
230
+ // Filter slow queries if requested
231
+ const filtered = slow === 'true'
232
+ ? entries.filter((e) => e.type === 'query' && e.payload.slow)
233
+ : entries;
234
+ const total = await this.storage.count('query');
235
+ return {
236
+ data: filtered,
237
+ meta: {
238
+ total,
239
+ limit: parsedLimit,
240
+ offset: parsedOffset,
241
+ },
242
+ };
243
+ }
244
+ async getExceptions(limit, offset) {
245
+ return this.getEntries('exception', undefined, limit, offset);
246
+ }
247
+ async getLogs(limit, offset, level) {
248
+ const parsedLimit = this.parseLimit(limit);
249
+ const parsedOffset = this.parseOffset(offset);
250
+ const entries = await this.storage.find({
251
+ type: 'log',
252
+ limit: parsedLimit,
253
+ offset: parsedOffset,
254
+ });
255
+ // Filter by level if requested
256
+ const filtered = level
257
+ ? entries.filter((e) => e.type === 'log' && e.payload.level === level)
258
+ : entries;
259
+ const total = await this.storage.count('log');
260
+ return {
261
+ data: filtered,
262
+ meta: {
263
+ total,
264
+ limit: parsedLimit,
265
+ offset: parsedOffset,
266
+ },
267
+ };
268
+ }
269
+ /**
270
+ * Storage stats endpoint
271
+ */
272
+ async getStorageStats() {
273
+ const stats = await this.storage.getStorageStats();
274
+ return { data: stats };
275
+ }
276
+ /**
277
+ * Pruning endpoints
278
+ */
279
+ async getPruningStatus() {
280
+ const config = this.config.pruning;
281
+ const storageStats = await this.storage.getStorageStats();
282
+ return {
283
+ data: {
284
+ enabled: config?.enabled !== false,
285
+ maxAge: config?.maxAge || 24,
286
+ interval: config?.interval || 60,
287
+ lastRun: this.lastPruneRun?.toISOString() || null,
288
+ nextRun: this.nextPruneRun?.toISOString() || null,
289
+ totalEntries: storageStats.total,
290
+ oldestEntry: storageStats.oldestEntry,
291
+ newestEntry: storageStats.newestEntry,
292
+ databaseSize: storageStats.databaseSize,
293
+ },
294
+ };
295
+ }
296
+ async runPruning() {
297
+ const maxAgeHours = this.config.pruning?.maxAge || 24;
298
+ const before = new Date(Date.now() - maxAgeHours * 60 * 60 * 1000);
299
+ const deleted = await this.storage.prune(before);
300
+ this.lastPruneRun = new Date();
301
+ const intervalMinutes = this.config.pruning?.interval || 60;
302
+ this.nextPruneRun = new Date(Date.now() + intervalMinutes * 60 * 1000);
303
+ return {
304
+ success: true,
305
+ data: {
306
+ deleted,
307
+ lastRun: this.lastPruneRun.toISOString(),
308
+ nextRun: this.nextPruneRun.toISOString(),
309
+ },
310
+ };
311
+ }
312
+ async clearEntries() {
313
+ await this.storage.clear();
314
+ return { success: true, message: 'All entries cleared' };
315
+ }
316
+ // ==================== Resolution Endpoints ====================
317
+ /**
318
+ * Mark an entry (exception) as resolved
319
+ */
320
+ async resolveEntry(id) {
321
+ await this.storage.resolveEntry(id);
322
+ const entry = await this.storage.findById(id);
323
+ return { success: true, data: entry };
324
+ }
325
+ /**
326
+ * Mark an entry as unresolved
327
+ */
328
+ async unresolveEntry(id) {
329
+ await this.storage.unresolveEntry(id);
330
+ const entry = await this.storage.findById(id);
331
+ return { success: true, data: entry };
332
+ }
333
+ // ==================== Recording Control Endpoints ====================
334
+ /**
335
+ * Pause recording
336
+ */
337
+ async pauseRecording(body) {
338
+ this.collectorService.pause(body.reason);
339
+ const status = this.collectorService.getRecordingStatus();
340
+ return { success: true, data: status };
341
+ }
342
+ /**
343
+ * Resume recording
344
+ */
345
+ async resumeRecording() {
346
+ this.collectorService.resume();
347
+ const status = this.collectorService.getRecordingStatus();
348
+ return { success: true, data: status };
349
+ }
350
+ /**
351
+ * Get recording status
352
+ */
353
+ async getRecordingStatus() {
354
+ const status = this.collectorService.getRecordingStatus();
355
+ return { data: status };
356
+ }
357
+ };
358
+ exports.NestLensApiController = NestLensApiController;
359
+ __decorate([
360
+ (0, common_1.Get)('entries'),
361
+ __param(0, (0, common_1.Query)('type')),
362
+ __param(1, (0, common_1.Query)('requestId')),
363
+ __param(2, (0, common_1.Query)('limit')),
364
+ __param(3, (0, common_1.Query)('offset')),
365
+ __param(4, (0, common_1.Query)('from')),
366
+ __param(5, (0, common_1.Query)('to')),
367
+ __metadata("design:type", Function),
368
+ __metadata("design:paramtypes", [String, String, String, String, String, String]),
369
+ __metadata("design:returntype", Promise)
370
+ ], NestLensApiController.prototype, "getEntries", null);
371
+ __decorate([
372
+ (0, common_1.Get)('entries/cursor'),
373
+ __param(0, (0, common_1.Query)('type')),
374
+ __param(1, (0, common_1.Query)('limit')),
375
+ __param(2, (0, common_1.Query)('beforeSequence')),
376
+ __param(3, (0, common_1.Query)('afterSequence')),
377
+ __param(4, (0, common_1.Query)('levels')),
378
+ __param(5, (0, common_1.Query)('contexts')),
379
+ __param(6, (0, common_1.Query)('queryTypes')),
380
+ __param(7, (0, common_1.Query)('sources')),
381
+ __param(8, (0, common_1.Query)('slow')),
382
+ __param(9, (0, common_1.Query)('names')),
383
+ __param(10, (0, common_1.Query)('methods')),
384
+ __param(11, (0, common_1.Query)('paths')),
385
+ __param(12, (0, common_1.Query)('resolved')),
386
+ __param(13, (0, common_1.Query)('statuses')),
387
+ __param(14, (0, common_1.Query)('hostnames')),
388
+ __param(15, (0, common_1.Query)('controllers')),
389
+ __param(16, (0, common_1.Query)('ips')),
390
+ __param(17, (0, common_1.Query)('scheduleStatuses')),
391
+ __param(18, (0, common_1.Query)('jobStatuses')),
392
+ __param(19, (0, common_1.Query)('queues')),
393
+ __param(20, (0, common_1.Query)('cacheOperations')),
394
+ __param(21, (0, common_1.Query)('mailStatuses')),
395
+ __param(22, (0, common_1.Query)('redisStatuses')),
396
+ __param(23, (0, common_1.Query)('redisCommands')),
397
+ __param(24, (0, common_1.Query)('modelActions')),
398
+ __param(25, (0, common_1.Query)('entities')),
399
+ __param(26, (0, common_1.Query)('modelSources')),
400
+ __param(27, (0, common_1.Query)('notificationTypes')),
401
+ __param(28, (0, common_1.Query)('notificationStatuses')),
402
+ __param(29, (0, common_1.Query)('viewFormats')),
403
+ __param(30, (0, common_1.Query)('viewStatuses')),
404
+ __param(31, (0, common_1.Query)('commandStatuses')),
405
+ __param(32, (0, common_1.Query)('commandNames')),
406
+ __param(33, (0, common_1.Query)('gateNames')),
407
+ __param(34, (0, common_1.Query)('gateResults')),
408
+ __param(35, (0, common_1.Query)('batchStatuses')),
409
+ __param(36, (0, common_1.Query)('batchOperations')),
410
+ __param(37, (0, common_1.Query)('dumpStatuses')),
411
+ __param(38, (0, common_1.Query)('dumpOperations')),
412
+ __param(39, (0, common_1.Query)('dumpFormats')),
413
+ __param(40, (0, common_1.Query)('tags')),
414
+ __param(41, (0, common_1.Query)('search')),
415
+ __metadata("design:type", Function),
416
+ __metadata("design:paramtypes", [String, String, String, String, String, String, String, String, String, String, String, String, String, String, String, String, String, String, String, String, String, String, String, String, String, String, String, String, String, String, String, String, String, String, String, String, String, String, String, String, String, String]),
417
+ __metadata("design:returntype", Promise)
418
+ ], NestLensApiController.prototype, "getEntriesWithCursor", null);
419
+ __decorate([
420
+ (0, common_1.Get)('entries/latest-sequence'),
421
+ __param(0, (0, common_1.Query)('type')),
422
+ __metadata("design:type", Function),
423
+ __metadata("design:paramtypes", [String]),
424
+ __metadata("design:returntype", Promise)
425
+ ], NestLensApiController.prototype, "getLatestSequence", null);
426
+ __decorate([
427
+ (0, common_1.Get)('entries/check-new'),
428
+ __param(0, (0, common_1.Query)('afterSequence')),
429
+ __param(1, (0, common_1.Query)('type')),
430
+ __metadata("design:type", Function),
431
+ __metadata("design:paramtypes", [String, String]),
432
+ __metadata("design:returntype", Promise)
433
+ ], NestLensApiController.prototype, "checkNewEntries", null);
434
+ __decorate([
435
+ (0, common_1.Get)('entries/grouped'),
436
+ __param(0, (0, common_1.Query)('type')),
437
+ __param(1, (0, common_1.Query)('limit')),
438
+ __metadata("design:type", Function),
439
+ __metadata("design:paramtypes", [String, String]),
440
+ __metadata("design:returntype", Promise)
441
+ ], NestLensApiController.prototype, "getGroupedEntries", null);
442
+ __decorate([
443
+ (0, common_1.Get)('entries/family/:hash'),
444
+ __param(0, (0, common_1.Param)('hash')),
445
+ __param(1, (0, common_1.Query)('limit')),
446
+ __metadata("design:type", Function),
447
+ __metadata("design:paramtypes", [String, String]),
448
+ __metadata("design:returntype", Promise)
449
+ ], NestLensApiController.prototype, "getEntriesByFamilyHash", null);
450
+ __decorate([
451
+ (0, common_1.Get)('entries/:id'),
452
+ __param(0, (0, common_1.Param)('id', common_1.ParseIntPipe)),
453
+ __metadata("design:type", Function),
454
+ __metadata("design:paramtypes", [Number]),
455
+ __metadata("design:returntype", Promise)
456
+ ], NestLensApiController.prototype, "getEntry", null);
457
+ __decorate([
458
+ (0, common_1.Get)('stats'),
459
+ __metadata("design:type", Function),
460
+ __metadata("design:paramtypes", []),
461
+ __metadata("design:returntype", Promise)
462
+ ], NestLensApiController.prototype, "getStats", null);
463
+ __decorate([
464
+ (0, common_1.Get)('requests'),
465
+ __param(0, (0, common_1.Query)('limit')),
466
+ __param(1, (0, common_1.Query)('offset')),
467
+ __metadata("design:type", Function),
468
+ __metadata("design:paramtypes", [String, String]),
469
+ __metadata("design:returntype", Promise)
470
+ ], NestLensApiController.prototype, "getRequests", null);
471
+ __decorate([
472
+ (0, common_1.Get)('queries'),
473
+ __param(0, (0, common_1.Query)('limit')),
474
+ __param(1, (0, common_1.Query)('offset')),
475
+ __param(2, (0, common_1.Query)('slow')),
476
+ __metadata("design:type", Function),
477
+ __metadata("design:paramtypes", [String, String, String]),
478
+ __metadata("design:returntype", Promise)
479
+ ], NestLensApiController.prototype, "getQueries", null);
480
+ __decorate([
481
+ (0, common_1.Get)('exceptions'),
482
+ __param(0, (0, common_1.Query)('limit')),
483
+ __param(1, (0, common_1.Query)('offset')),
484
+ __metadata("design:type", Function),
485
+ __metadata("design:paramtypes", [String, String]),
486
+ __metadata("design:returntype", Promise)
487
+ ], NestLensApiController.prototype, "getExceptions", null);
488
+ __decorate([
489
+ (0, common_1.Get)('logs'),
490
+ __param(0, (0, common_1.Query)('limit')),
491
+ __param(1, (0, common_1.Query)('offset')),
492
+ __param(2, (0, common_1.Query)('level')),
493
+ __metadata("design:type", Function),
494
+ __metadata("design:paramtypes", [String, String, String]),
495
+ __metadata("design:returntype", Promise)
496
+ ], NestLensApiController.prototype, "getLogs", null);
497
+ __decorate([
498
+ (0, common_1.Get)('storage/stats'),
499
+ __metadata("design:type", Function),
500
+ __metadata("design:paramtypes", []),
501
+ __metadata("design:returntype", Promise)
502
+ ], NestLensApiController.prototype, "getStorageStats", null);
503
+ __decorate([
504
+ (0, common_1.Get)('pruning/status'),
505
+ __metadata("design:type", Function),
506
+ __metadata("design:paramtypes", []),
507
+ __metadata("design:returntype", Promise)
508
+ ], NestLensApiController.prototype, "getPruningStatus", null);
509
+ __decorate([
510
+ (0, common_1.Post)('pruning/run'),
511
+ __metadata("design:type", Function),
512
+ __metadata("design:paramtypes", []),
513
+ __metadata("design:returntype", Promise)
514
+ ], NestLensApiController.prototype, "runPruning", null);
515
+ __decorate([
516
+ (0, common_1.Delete)('entries'),
517
+ __metadata("design:type", Function),
518
+ __metadata("design:paramtypes", []),
519
+ __metadata("design:returntype", Promise)
520
+ ], NestLensApiController.prototype, "clearEntries", null);
521
+ __decorate([
522
+ (0, common_1.Patch)('entries/:id/resolve'),
523
+ __param(0, (0, common_1.Param)('id', common_1.ParseIntPipe)),
524
+ __metadata("design:type", Function),
525
+ __metadata("design:paramtypes", [Number]),
526
+ __metadata("design:returntype", Promise)
527
+ ], NestLensApiController.prototype, "resolveEntry", null);
528
+ __decorate([
529
+ (0, common_1.Patch)('entries/:id/unresolve'),
530
+ __param(0, (0, common_1.Param)('id', common_1.ParseIntPipe)),
531
+ __metadata("design:type", Function),
532
+ __metadata("design:paramtypes", [Number]),
533
+ __metadata("design:returntype", Promise)
534
+ ], NestLensApiController.prototype, "unresolveEntry", null);
535
+ __decorate([
536
+ (0, common_1.Post)('recording/pause'),
537
+ __param(0, (0, common_1.Body)()),
538
+ __metadata("design:type", Function),
539
+ __metadata("design:paramtypes", [Object]),
540
+ __metadata("design:returntype", Promise)
541
+ ], NestLensApiController.prototype, "pauseRecording", null);
542
+ __decorate([
543
+ (0, common_1.Post)('recording/resume'),
544
+ __metadata("design:type", Function),
545
+ __metadata("design:paramtypes", []),
546
+ __metadata("design:returntype", Promise)
547
+ ], NestLensApiController.prototype, "resumeRecording", null);
548
+ __decorate([
549
+ (0, common_1.Get)('recording/status'),
550
+ __metadata("design:type", Function),
551
+ __metadata("design:paramtypes", []),
552
+ __metadata("design:returntype", Promise)
553
+ ], NestLensApiController.prototype, "getRecordingStatus", null);
554
+ exports.NestLensApiController = NestLensApiController = __decorate([
555
+ (0, common_1.Controller)(`${nestlens_config_1.NESTLENS_API_PREFIX}/api`),
556
+ (0, common_1.UseGuards)(api_guard_1.NestLensGuard),
557
+ __param(0, (0, common_1.Inject)(storage_interface_1.STORAGE)),
558
+ __param(1, (0, common_1.Inject)(nestlens_config_1.NESTLENS_CONFIG)),
559
+ __metadata("design:paramtypes", [Object, Object, pruning_service_1.PruningService,
560
+ collector_service_1.CollectorService])
561
+ ], NestLensApiController);
562
+ //# sourceMappingURL=api.controller.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api.controller.js","sourceRoot":"","sources":["../../src/api/api.controller.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,77 @@
1
+ import { CanActivate, ExecutionContext } from '@nestjs/common';
2
+ import { Request } from 'express';
3
+ import { AuthUser, NestLensConfig } from '../nestlens.config';
4
+ /**
5
+ * Extended Request type with NestLens auth user
6
+ */
7
+ export interface NestLensRequest extends Request {
8
+ nestlensUser?: AuthUser;
9
+ }
10
+ export declare class NestLensGuard implements CanActivate {
11
+ private readonly config;
12
+ private readonly logger;
13
+ /**
14
+ * In-memory rate limit store
15
+ * Key: IP address, Value: request count and reset time
16
+ */
17
+ private readonly rateLimitStore;
18
+ /**
19
+ * Cleanup interval for expired entries (every 5 minutes)
20
+ */
21
+ private readonly cleanupInterval;
22
+ constructor(config: NestLensConfig);
23
+ canActivate(context: ExecutionContext): Promise<boolean>;
24
+ /**
25
+ * Merge legacy config options with new authorization config
26
+ */
27
+ private getMergedAuthConfig;
28
+ /**
29
+ * Check if current environment is allowed
30
+ */
31
+ private isEnvironmentAllowed;
32
+ /**
33
+ * Get current environment from configured variable
34
+ */
35
+ private getCurrentEnvironment;
36
+ /**
37
+ * Evaluate canAccess function
38
+ */
39
+ private evaluateCanAccess;
40
+ /**
41
+ * Check if user has all required roles
42
+ */
43
+ private hasRequiredRoles;
44
+ /**
45
+ * Get client IP from request
46
+ */
47
+ private getClientIp;
48
+ /**
49
+ * Check if IP matches allowed patterns
50
+ * Uses safe wildcard matching instead of regex to prevent ReDoS attacks
51
+ */
52
+ private isIpAllowed;
53
+ /**
54
+ * Safe wildcard matching without regex (prevents ReDoS)
55
+ * Supports only '*' as wildcard for IP segments
56
+ * Example: '192.168.1.*' matches '192.168.1.100'
57
+ */
58
+ private matchWildcard;
59
+ /**
60
+ * Get rate limit configuration from config or use defaults
61
+ */
62
+ private getRateLimitConfig;
63
+ /**
64
+ * Check if request is within rate limit
65
+ * Returns true if allowed, false if rate limited
66
+ */
67
+ private checkRateLimit;
68
+ /**
69
+ * Get time until rate limit resets (in ms)
70
+ */
71
+ private getRateLimitResetTime;
72
+ /**
73
+ * Cleanup expired rate limit entries to prevent memory leaks
74
+ */
75
+ private cleanupExpiredEntries;
76
+ }
77
+ //# sourceMappingURL=api.guard.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api.guard.d.ts","sourceRoot":"","sources":["../../src/api/api.guard.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,WAAW,EACX,gBAAgB,EAOjB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EACL,QAAQ,EAER,cAAc,EAEf,MAAM,oBAAoB,CAAC;AAE5B;;GAEG;AACH,MAAM,WAAW,eAAgB,SAAQ,OAAO;IAC9C,YAAY,CAAC,EAAE,QAAQ,CAAC;CACzB;AAkBD,qBACa,aAAc,YAAW,WAAW;IAgB7C,OAAO,CAAC,QAAQ,CAAC,MAAM;IAfzB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAkC;IAEzD;;;OAGG;IACH,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAqC;IAEpE;;OAEG;IACH,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAiC;gBAI9C,MAAM,EAAE,cAAc;IAanC,WAAW,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,OAAO,CAAC;IAuE9D;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAa3B;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAiB5B;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAK7B;;OAEG;YACW,iBAAiB;IAa/B;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAOxB;;OAEG;IACH,OAAO,CAAC,WAAW;IAWnB;;;OAGG;IACH,OAAO,CAAC,WAAW;IAwBnB;;;;OAIG;IACH,OAAO,CAAC,aAAa;IA+BrB;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAkB1B;;;OAGG;IACH,OAAO,CAAC,cAAc;IA0BtB;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAQ7B;;OAEG;IACH,OAAO,CAAC,qBAAqB;CAe9B"}