@marinoscar/platform-api 0.1.0-next.19 → 0.1.0-next.21

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 (437) hide show
  1. package/CHANGELOG.md +24 -0
  2. package/README.md +1 -0
  3. package/dist/alerts/alerts-admin.controller.d.ts +40 -0
  4. package/dist/alerts/alerts-admin.controller.d.ts.map +1 -0
  5. package/dist/alerts/alerts-admin.controller.js +297 -0
  6. package/dist/alerts/alerts-admin.controller.js.map +1 -0
  7. package/dist/alerts/alerts-context.service.d.ts +64 -0
  8. package/dist/alerts/alerts-context.service.d.ts.map +1 -0
  9. package/dist/alerts/alerts-context.service.js +190 -0
  10. package/dist/alerts/alerts-context.service.js.map +1 -0
  11. package/dist/alerts/alerts-dispatch.service.d.ts +53 -0
  12. package/dist/alerts/alerts-dispatch.service.d.ts.map +1 -0
  13. package/dist/alerts/alerts-dispatch.service.js +135 -0
  14. package/dist/alerts/alerts-dispatch.service.js.map +1 -0
  15. package/dist/alerts/alerts-evaluation.service.d.ts +88 -0
  16. package/dist/alerts/alerts-evaluation.service.d.ts.map +1 -0
  17. package/dist/alerts/alerts-evaluation.service.js +296 -0
  18. package/dist/alerts/alerts-evaluation.service.js.map +1 -0
  19. package/dist/alerts/alerts-event.listener.d.ts +22 -0
  20. package/dist/alerts/alerts-event.listener.d.ts.map +1 -0
  21. package/dist/alerts/alerts-event.listener.js +72 -0
  22. package/dist/alerts/alerts-event.listener.js.map +1 -0
  23. package/dist/alerts/alerts-incidents.service.d.ts +86 -0
  24. package/dist/alerts/alerts-incidents.service.d.ts.map +1 -0
  25. package/dist/alerts/alerts-incidents.service.js +144 -0
  26. package/dist/alerts/alerts-incidents.service.js.map +1 -0
  27. package/dist/alerts/alerts-rules.service.d.ts +73 -0
  28. package/dist/alerts/alerts-rules.service.d.ts.map +1 -0
  29. package/dist/alerts/alerts-rules.service.js +205 -0
  30. package/dist/alerts/alerts-rules.service.js.map +1 -0
  31. package/dist/alerts/alerts-seed.service.d.ts +25 -0
  32. package/dist/alerts/alerts-seed.service.d.ts.map +1 -0
  33. package/dist/alerts/alerts-seed.service.js +82 -0
  34. package/dist/alerts/alerts-seed.service.js.map +1 -0
  35. package/dist/alerts/alerts.constants.d.ts +53 -0
  36. package/dist/alerts/alerts.constants.d.ts.map +1 -0
  37. package/dist/alerts/alerts.constants.js +57 -0
  38. package/dist/alerts/alerts.constants.js.map +1 -0
  39. package/dist/alerts/alerts.errors.d.ts +44 -0
  40. package/dist/alerts/alerts.errors.d.ts.map +1 -0
  41. package/dist/alerts/alerts.errors.js +47 -0
  42. package/dist/alerts/alerts.errors.js.map +1 -0
  43. package/dist/alerts/alerts.metrics.d.ts +60 -0
  44. package/dist/alerts/alerts.metrics.d.ts.map +1 -0
  45. package/dist/alerts/alerts.metrics.js +135 -0
  46. package/dist/alerts/alerts.metrics.js.map +1 -0
  47. package/dist/alerts/alerts.module.d.ts +35 -0
  48. package/dist/alerts/alerts.module.d.ts.map +1 -0
  49. package/dist/alerts/alerts.module.js +96 -0
  50. package/dist/alerts/alerts.module.js.map +1 -0
  51. package/dist/alerts/alerts.options.d.ts +64 -0
  52. package/dist/alerts/alerts.options.d.ts.map +1 -0
  53. package/dist/alerts/alerts.options.js +34 -0
  54. package/dist/alerts/alerts.options.js.map +1 -0
  55. package/dist/alerts/alerts.permissions.d.ts +27 -0
  56. package/dist/alerts/alerts.permissions.d.ts.map +1 -0
  57. package/dist/alerts/alerts.permissions.js +29 -0
  58. package/dist/alerts/alerts.permissions.js.map +1 -0
  59. package/dist/alerts/alerts.types.d.ts +182 -0
  60. package/dist/alerts/alerts.types.d.ts.map +1 -0
  61. package/dist/alerts/alerts.types.js +3 -0
  62. package/dist/alerts/alerts.types.js.map +1 -0
  63. package/dist/alerts/data/alerts-db.d.ts +169 -0
  64. package/dist/alerts/data/alerts-db.d.ts.map +1 -0
  65. package/dist/alerts/data/alerts-db.js +18 -0
  66. package/dist/alerts/data/alerts-db.js.map +1 -0
  67. package/dist/alerts/dto/alerts.dto.d.ts +132 -0
  68. package/dist/alerts/dto/alerts.dto.d.ts.map +1 -0
  69. package/dist/alerts/dto/alerts.dto.js +42 -0
  70. package/dist/alerts/dto/alerts.dto.js.map +1 -0
  71. package/dist/alerts/handlers/alerts-evaluate-event.handler.d.ts +23 -0
  72. package/dist/alerts/handlers/alerts-evaluate-event.handler.d.ts.map +1 -0
  73. package/dist/alerts/handlers/alerts-evaluate-event.handler.js +71 -0
  74. package/dist/alerts/handlers/alerts-evaluate-event.handler.js.map +1 -0
  75. package/dist/alerts/handlers/alerts-evaluate.handler.d.ts +25 -0
  76. package/dist/alerts/handlers/alerts-evaluate.handler.d.ts.map +1 -0
  77. package/dist/alerts/handlers/alerts-evaluate.handler.js +54 -0
  78. package/dist/alerts/handlers/alerts-evaluate.handler.js.map +1 -0
  79. package/dist/alerts/handlers/alerts-incidents-purge.handler.d.ts +29 -0
  80. package/dist/alerts/handlers/alerts-incidents-purge.handler.d.ts.map +1 -0
  81. package/dist/alerts/handlers/alerts-incidents-purge.handler.js +76 -0
  82. package/dist/alerts/handlers/alerts-incidents-purge.handler.js.map +1 -0
  83. package/dist/alerts/index.d.ts +45 -0
  84. package/dist/alerts/index.d.ts.map +1 -0
  85. package/dist/alerts/index.js +108 -0
  86. package/dist/alerts/index.js.map +1 -0
  87. package/dist/alerts/kinds/alert-kind.registry.d.ts +33 -0
  88. package/dist/alerts/kinds/alert-kind.registry.d.ts.map +1 -0
  89. package/dist/alerts/kinds/alert-kind.registry.js +63 -0
  90. package/dist/alerts/kinds/alert-kind.registry.js.map +1 -0
  91. package/dist/alerts/kinds/builtin-kinds.d.ts +18 -0
  92. package/dist/alerts/kinds/builtin-kinds.d.ts.map +1 -0
  93. package/dist/alerts/kinds/builtin-kinds.js +33 -0
  94. package/dist/alerts/kinds/builtin-kinds.js.map +1 -0
  95. package/dist/alerts/kinds/metric-threshold.kind.d.ts +11 -0
  96. package/dist/alerts/kinds/metric-threshold.kind.d.ts.map +1 -0
  97. package/dist/alerts/kinds/metric-threshold.kind.js +63 -0
  98. package/dist/alerts/kinds/metric-threshold.kind.js.map +1 -0
  99. package/dist/alerts/kinds/metric-threshold.sql.d.ts +41 -0
  100. package/dist/alerts/kinds/metric-threshold.sql.d.ts.map +1 -0
  101. package/dist/alerts/kinds/metric-threshold.sql.js +124 -0
  102. package/dist/alerts/kinds/metric-threshold.sql.js.map +1 -0
  103. package/dist/alerts/kinds/node-event.kind.d.ts +44 -0
  104. package/dist/alerts/kinds/node-event.kind.d.ts.map +1 -0
  105. package/dist/alerts/kinds/node-event.kind.js +113 -0
  106. package/dist/alerts/kinds/node-event.kind.js.map +1 -0
  107. package/dist/alerts/kinds/node-offline.kind.d.ts +11 -0
  108. package/dist/alerts/kinds/node-offline.kind.d.ts.map +1 -0
  109. package/dist/alerts/kinds/node-offline.kind.js +41 -0
  110. package/dist/alerts/kinds/node-offline.kind.js.map +1 -0
  111. package/dist/alerts/kinds/telemetry-unavailable.kind.d.ts +11 -0
  112. package/dist/alerts/kinds/telemetry-unavailable.kind.d.ts.map +1 -0
  113. package/dist/alerts/kinds/telemetry-unavailable.kind.js +40 -0
  114. package/dist/alerts/kinds/telemetry-unavailable.kind.js.map +1 -0
  115. package/dist/alerts/kinds/verdict.kind.d.ts +13 -0
  116. package/dist/alerts/kinds/verdict.kind.d.ts.map +1 -0
  117. package/dist/alerts/kinds/verdict.kind.js +34 -0
  118. package/dist/alerts/kinds/verdict.kind.js.map +1 -0
  119. package/dist/alerts/notifications/alerts.notifications.d.ts +77 -0
  120. package/dist/alerts/notifications/alerts.notifications.d.ts.map +1 -0
  121. package/dist/alerts/notifications/alerts.notifications.js +145 -0
  122. package/dist/alerts/notifications/alerts.notifications.js.map +1 -0
  123. package/dist/alerts/starter-rules.d.ts +21 -0
  124. package/dist/alerts/starter-rules.d.ts.map +1 -0
  125. package/dist/alerts/starter-rules.js +141 -0
  126. package/dist/alerts/starter-rules.js.map +1 -0
  127. package/dist/alerts/state/alert-state-machine.d.ts +92 -0
  128. package/dist/alerts/state/alert-state-machine.d.ts.map +1 -0
  129. package/dist/alerts/state/alert-state-machine.js +96 -0
  130. package/dist/alerts/state/alert-state-machine.js.map +1 -0
  131. package/dist/alerts/tasks/alerts-evaluate.task.d.ts +18 -0
  132. package/dist/alerts/tasks/alerts-evaluate.task.d.ts.map +1 -0
  133. package/dist/alerts/tasks/alerts-evaluate.task.js +61 -0
  134. package/dist/alerts/tasks/alerts-evaluate.task.js.map +1 -0
  135. package/dist/alerts/tasks/alerts-purge.task.d.ts +15 -0
  136. package/dist/alerts/tasks/alerts-purge.task.d.ts.map +1 -0
  137. package/dist/alerts/tasks/alerts-purge.task.js +58 -0
  138. package/dist/alerts/tasks/alerts-purge.task.js.map +1 -0
  139. package/dist/alerts/testing/conformance.d.ts +58 -0
  140. package/dist/alerts/testing/conformance.d.ts.map +1 -0
  141. package/dist/alerts/testing/conformance.js +198 -0
  142. package/dist/alerts/testing/conformance.js.map +1 -0
  143. package/dist/alerts/testing/fakes.d.ts +80 -0
  144. package/dist/alerts/testing/fakes.d.ts.map +1 -0
  145. package/dist/alerts/testing/fakes.js +230 -0
  146. package/dist/alerts/testing/fakes.js.map +1 -0
  147. package/dist/alerts/testing/index.d.ts +5 -0
  148. package/dist/alerts/testing/index.d.ts.map +1 -0
  149. package/dist/alerts/testing/index.js +15 -0
  150. package/dist/alerts/testing/index.js.map +1 -0
  151. package/dist/core/index.d.ts +1 -0
  152. package/dist/core/index.d.ts.map +1 -1
  153. package/dist/core/index.js +8 -2
  154. package/dist/core/index.js.map +1 -1
  155. package/dist/core/net/ip-classify.d.ts +39 -0
  156. package/dist/core/net/ip-classify.d.ts.map +1 -0
  157. package/dist/core/net/ip-classify.js +196 -0
  158. package/dist/core/net/ip-classify.js.map +1 -0
  159. package/dist/credentials/testing/conformance.d.ts.map +1 -1
  160. package/dist/credentials/testing/conformance.js +1 -0
  161. package/dist/credentials/testing/conformance.js.map +1 -1
  162. package/dist/jobs/data/jobs-db.d.ts +26 -0
  163. package/dist/jobs/data/jobs-db.d.ts.map +1 -1
  164. package/dist/jobs/index.d.ts +1 -1
  165. package/dist/jobs/index.d.ts.map +1 -1
  166. package/dist/jobs/index.js.map +1 -1
  167. package/dist/manifest/platform-model-ownership.d.ts +1 -1
  168. package/dist/manifest/platform-model-ownership.d.ts.map +1 -1
  169. package/dist/manifest/platform-model-ownership.js +30 -1
  170. package/dist/manifest/platform-model-ownership.js.map +1 -1
  171. package/dist/manifest/platform-permissions.d.ts +6 -2
  172. package/dist/manifest/platform-permissions.d.ts.map +1 -1
  173. package/dist/manifest/platform-permissions.js +56 -44
  174. package/dist/manifest/platform-permissions.js.map +1 -1
  175. package/dist/manifest/platform-user-owned-models.d.ts.map +1 -1
  176. package/dist/manifest/platform-user-owned-models.js +16 -0
  177. package/dist/manifest/platform-user-owned-models.js.map +1 -1
  178. package/dist/nodes/dto/node-admin.dto.d.ts +5 -0
  179. package/dist/nodes/dto/node-admin.dto.d.ts.map +1 -1
  180. package/dist/nodes/dto/node-admin.dto.js +19 -0
  181. package/dist/nodes/dto/node-admin.dto.js.map +1 -1
  182. package/dist/nodes/dto/node-control-plane.dto.d.ts +26 -0
  183. package/dist/nodes/dto/node-control-plane.dto.d.ts.map +1 -1
  184. package/dist/nodes/dto/node-event.dto.d.ts +100 -0
  185. package/dist/nodes/dto/node-event.dto.d.ts.map +1 -0
  186. package/dist/nodes/dto/node-event.dto.js +239 -0
  187. package/dist/nodes/dto/node-event.dto.js.map +1 -0
  188. package/dist/nodes/dto/node-response.dto.d.ts +21 -0
  189. package/dist/nodes/dto/node-response.dto.d.ts.map +1 -1
  190. package/dist/nodes/dto/node-response.dto.js +42 -1
  191. package/dist/nodes/dto/node-response.dto.js.map +1 -1
  192. package/dist/nodes/events/node-event.event.d.ts +41 -0
  193. package/dist/nodes/events/node-event.event.d.ts.map +1 -0
  194. package/dist/nodes/events/node-event.event.js +69 -0
  195. package/dist/nodes/events/node-event.event.js.map +1 -0
  196. package/dist/nodes/handlers/node-events-purge.handler.d.ts +31 -0
  197. package/dist/nodes/handlers/node-events-purge.handler.d.ts.map +1 -0
  198. package/dist/nodes/handlers/node-events-purge.handler.js +91 -0
  199. package/dist/nodes/handlers/node-events-purge.handler.js.map +1 -0
  200. package/dist/nodes/index.d.ts +11 -4
  201. package/dist/nodes/index.d.ts.map +1 -1
  202. package/dist/nodes/index.js +20 -1
  203. package/dist/nodes/index.js.map +1 -1
  204. package/dist/nodes/node-events.service.d.ts +87 -0
  205. package/dist/nodes/node-events.service.d.ts.map +1 -0
  206. package/dist/nodes/node-events.service.js +271 -0
  207. package/dist/nodes/node-events.service.js.map +1 -0
  208. package/dist/nodes/node-fleet-metrics.service.d.ts +10 -1
  209. package/dist/nodes/node-fleet-metrics.service.d.ts.map +1 -1
  210. package/dist/nodes/node-fleet-metrics.service.js +31 -0
  211. package/dist/nodes/node-fleet-metrics.service.js.map +1 -1
  212. package/dist/nodes/node-lifecycle.service.d.ts +16 -1
  213. package/dist/nodes/node-lifecycle.service.d.ts.map +1 -1
  214. package/dist/nodes/node-lifecycle.service.js +7 -0
  215. package/dist/nodes/node-lifecycle.service.js.map +1 -1
  216. package/dist/nodes/nodes-admin.controller.d.ts +5 -1
  217. package/dist/nodes/nodes-admin.controller.d.ts.map +1 -1
  218. package/dist/nodes/nodes-admin.controller.js +32 -2
  219. package/dist/nodes/nodes-admin.controller.js.map +1 -1
  220. package/dist/nodes/nodes.controller.d.ts +7 -3
  221. package/dist/nodes/nodes.controller.d.ts.map +1 -1
  222. package/dist/nodes/nodes.controller.js +46 -6
  223. package/dist/nodes/nodes.controller.js.map +1 -1
  224. package/dist/nodes/nodes.metrics.d.ts +23 -1
  225. package/dist/nodes/nodes.metrics.d.ts.map +1 -1
  226. package/dist/nodes/nodes.metrics.js +80 -1
  227. package/dist/nodes/nodes.metrics.js.map +1 -1
  228. package/dist/nodes/nodes.module.d.ts.map +1 -1
  229. package/dist/nodes/nodes.module.js +6 -0
  230. package/dist/nodes/nodes.module.js.map +1 -1
  231. package/dist/nodes/nodes.options.d.ts +17 -0
  232. package/dist/nodes/nodes.options.d.ts.map +1 -1
  233. package/dist/nodes/nodes.options.js +13 -2
  234. package/dist/nodes/nodes.options.js.map +1 -1
  235. package/dist/nodes/nodes.service.d.ts +3 -1
  236. package/dist/nodes/nodes.service.d.ts.map +1 -1
  237. package/dist/nodes/nodes.service.js +14 -3
  238. package/dist/nodes/nodes.service.js.map +1 -1
  239. package/dist/nodes/tasks/node-events-purge.task.d.ts +13 -0
  240. package/dist/nodes/tasks/node-events-purge.task.d.ts.map +1 -0
  241. package/dist/nodes/tasks/node-events-purge.task.js +73 -0
  242. package/dist/nodes/tasks/node-events-purge.task.js.map +1 -0
  243. package/dist/telemetry/dashboard/telemetry-dashboard.service.d.ts +30 -8
  244. package/dist/telemetry/dashboard/telemetry-dashboard.service.d.ts.map +1 -1
  245. package/dist/telemetry/dashboard/telemetry-dashboard.service.js +12 -0
  246. package/dist/telemetry/dashboard/telemetry-dashboard.service.js.map +1 -1
  247. package/dist/telemetry/dashboard/telemetry-dashboard.verdict.d.ts +15 -0
  248. package/dist/telemetry/dashboard/telemetry-dashboard.verdict.d.ts.map +1 -1
  249. package/dist/telemetry/dashboard/telemetry-dashboard.verdict.js +17 -2
  250. package/dist/telemetry/dashboard/telemetry-dashboard.verdict.js.map +1 -1
  251. package/dist/telemetry/dto/telemetry-dashboard.dto.d.ts +3 -3
  252. package/dist/telemetry/index.d.ts +4 -2
  253. package/dist/telemetry/index.d.ts.map +1 -1
  254. package/dist/telemetry/index.js +4 -1
  255. package/dist/telemetry/index.js.map +1 -1
  256. package/dist/telemetry/metrics/groups/nodes.metric-group.d.ts.map +1 -1
  257. package/dist/telemetry/metrics/groups/nodes.metric-group.js +77 -0
  258. package/dist/telemetry/metrics/groups/nodes.metric-group.js.map +1 -1
  259. package/dist/telemetry/metrics/metric-verdict.d.ts +1 -1
  260. package/dist/telemetry/metrics/metric-verdict.d.ts.map +1 -1
  261. package/dist/telemetry/metrics/metric-verdict.js +15 -1
  262. package/dist/telemetry/metrics/metric-verdict.js.map +1 -1
  263. package/dist/telemetry/query/telemetry-query-facade.d.ts +1 -1
  264. package/dist/telemetry/query/telemetry-query-facade.d.ts.map +1 -1
  265. package/dist/telemetry/query/telemetry-query-facade.js.map +1 -1
  266. package/dist/telemetry/query/telemetry-query.service.d.ts +2 -2
  267. package/dist/telemetry/query/telemetry-query.service.d.ts.map +1 -1
  268. package/dist/telemetry/query/telemetry-query.service.js +4 -0
  269. package/dist/telemetry/query/telemetry-query.service.js.map +1 -1
  270. package/dist/telemetry/stack/dto/telemetry-stack.dto.d.ts +1 -1
  271. package/dist/telemetry/telemetry-support-bundle.section.d.ts +4 -4
  272. package/dist/telemetry/telemetry.module.d.ts.map +1 -1
  273. package/dist/telemetry/telemetry.module.js +1 -0
  274. package/dist/telemetry/telemetry.module.js.map +1 -1
  275. package/dist/telemetry/testing/metric-schema.fixture.d.ts.map +1 -1
  276. package/dist/telemetry/testing/metric-schema.fixture.js +56 -0
  277. package/dist/telemetry/testing/metric-schema.fixture.js.map +1 -1
  278. package/dist/user-data/platform-user-data.d.ts.map +1 -1
  279. package/dist/user-data/platform-user-data.js +2 -0
  280. package/dist/user-data/platform-user-data.js.map +1 -1
  281. package/dist/webhooks/data/webhooks-db.d.ts +176 -0
  282. package/dist/webhooks/data/webhooks-db.d.ts.map +1 -0
  283. package/dist/webhooks/data/webhooks-db.js +14 -0
  284. package/dist/webhooks/data/webhooks-db.js.map +1 -0
  285. package/dist/webhooks/egress/egress-guard.d.ts +99 -0
  286. package/dist/webhooks/egress/egress-guard.d.ts.map +1 -0
  287. package/dist/webhooks/egress/egress-guard.js +172 -0
  288. package/dist/webhooks/egress/egress-guard.js.map +1 -0
  289. package/dist/webhooks/egress/transport.d.ts +58 -0
  290. package/dist/webhooks/egress/transport.d.ts.map +1 -0
  291. package/dist/webhooks/egress/transport.js +115 -0
  292. package/dist/webhooks/egress/transport.js.map +1 -0
  293. package/dist/webhooks/handlers/webhook-deliver.handler.d.ts +76 -0
  294. package/dist/webhooks/handlers/webhook-deliver.handler.d.ts.map +1 -0
  295. package/dist/webhooks/handlers/webhook-deliver.handler.js +333 -0
  296. package/dist/webhooks/handlers/webhook-deliver.handler.js.map +1 -0
  297. package/dist/webhooks/handlers/webhook-fanout.handler.d.ts +28 -0
  298. package/dist/webhooks/handlers/webhook-fanout.handler.d.ts.map +1 -0
  299. package/dist/webhooks/handlers/webhook-fanout.handler.js +73 -0
  300. package/dist/webhooks/handlers/webhook-fanout.handler.js.map +1 -0
  301. package/dist/webhooks/handlers/webhook-purge.handler.d.ts +33 -0
  302. package/dist/webhooks/handlers/webhook-purge.handler.d.ts.map +1 -0
  303. package/dist/webhooks/handlers/webhook-purge.handler.js +77 -0
  304. package/dist/webhooks/handlers/webhook-purge.handler.js.map +1 -0
  305. package/dist/webhooks/http/admin-webhooks.controller.d.ts +36 -0
  306. package/dist/webhooks/http/admin-webhooks.controller.d.ts.map +1 -0
  307. package/dist/webhooks/http/admin-webhooks.controller.js +250 -0
  308. package/dist/webhooks/http/admin-webhooks.controller.js.map +1 -0
  309. package/dist/webhooks/http/org-webhooks.controller.d.ts +36 -0
  310. package/dist/webhooks/http/org-webhooks.controller.d.ts.map +1 -0
  311. package/dist/webhooks/http/org-webhooks.controller.js +249 -0
  312. package/dist/webhooks/http/org-webhooks.controller.js.map +1 -0
  313. package/dist/webhooks/http/scope-context.d.ts +17 -0
  314. package/dist/webhooks/http/scope-context.d.ts.map +1 -0
  315. package/dist/webhooks/http/scope-context.js +28 -0
  316. package/dist/webhooks/http/scope-context.js.map +1 -0
  317. package/dist/webhooks/http/webhook.dto.d.ts +174 -0
  318. package/dist/webhooks/http/webhook.dto.d.ts.map +1 -0
  319. package/dist/webhooks/http/webhook.dto.js +58 -0
  320. package/dist/webhooks/http/webhook.dto.js.map +1 -0
  321. package/dist/webhooks/http/webhooks.controller.d.ts +36 -0
  322. package/dist/webhooks/http/webhooks.controller.d.ts.map +1 -0
  323. package/dist/webhooks/http/webhooks.controller.js +243 -0
  324. package/dist/webhooks/http/webhooks.controller.js.map +1 -0
  325. package/dist/webhooks/index.d.ts +43 -0
  326. package/dist/webhooks/index.d.ts.map +1 -0
  327. package/dist/webhooks/index.js +147 -0
  328. package/dist/webhooks/index.js.map +1 -0
  329. package/dist/webhooks/listeners/webhook-event.listeners.d.ts +23 -0
  330. package/dist/webhooks/listeners/webhook-event.listeners.d.ts.map +1 -0
  331. package/dist/webhooks/listeners/webhook-event.listeners.js +120 -0
  332. package/dist/webhooks/listeners/webhook-event.listeners.js.map +1 -0
  333. package/dist/webhooks/notifications/webhook-notification.channel.d.ts +31 -0
  334. package/dist/webhooks/notifications/webhook-notification.channel.d.ts.map +1 -0
  335. package/dist/webhooks/notifications/webhook-notification.channel.js +127 -0
  336. package/dist/webhooks/notifications/webhook-notification.channel.js.map +1 -0
  337. package/dist/webhooks/notifications/webhook-notifications.d.ts +98 -0
  338. package/dist/webhooks/notifications/webhook-notifications.d.ts.map +1 -0
  339. package/dist/webhooks/notifications/webhook-notifications.js +150 -0
  340. package/dist/webhooks/notifications/webhook-notifications.js.map +1 -0
  341. package/dist/webhooks/ports.d.ts +29 -0
  342. package/dist/webhooks/ports.d.ts.map +1 -0
  343. package/dist/webhooks/ports.js +23 -0
  344. package/dist/webhooks/ports.js.map +1 -0
  345. package/dist/webhooks/registry/builtin-events.d.ts +57 -0
  346. package/dist/webhooks/registry/builtin-events.d.ts.map +1 -0
  347. package/dist/webhooks/registry/builtin-events.js +113 -0
  348. package/dist/webhooks/registry/builtin-events.js.map +1 -0
  349. package/dist/webhooks/registry/webhook-catalog.d.ts +63 -0
  350. package/dist/webhooks/registry/webhook-catalog.d.ts.map +1 -0
  351. package/dist/webhooks/registry/webhook-catalog.js +123 -0
  352. package/dist/webhooks/registry/webhook-catalog.js.map +1 -0
  353. package/dist/webhooks/registry/webhook-event.registry.d.ts +116 -0
  354. package/dist/webhooks/registry/webhook-event.registry.d.ts.map +1 -0
  355. package/dist/webhooks/registry/webhook-event.registry.js +152 -0
  356. package/dist/webhooks/registry/webhook-event.registry.js.map +1 -0
  357. package/dist/webhooks/signing.d.ts +31 -0
  358. package/dist/webhooks/signing.d.ts.map +1 -0
  359. package/dist/webhooks/signing.js +48 -0
  360. package/dist/webhooks/signing.js.map +1 -0
  361. package/dist/webhooks/tasks/webhook-purge.task.d.ts +17 -0
  362. package/dist/webhooks/tasks/webhook-purge.task.d.ts.map +1 -0
  363. package/dist/webhooks/tasks/webhook-purge.task.js +68 -0
  364. package/dist/webhooks/tasks/webhook-purge.task.js.map +1 -0
  365. package/dist/webhooks/testing/conformance.d.ts +61 -0
  366. package/dist/webhooks/testing/conformance.d.ts.map +1 -0
  367. package/dist/webhooks/testing/conformance.js +316 -0
  368. package/dist/webhooks/testing/conformance.js.map +1 -0
  369. package/dist/webhooks/testing/in-memory.d.ts +156 -0
  370. package/dist/webhooks/testing/in-memory.d.ts.map +1 -0
  371. package/dist/webhooks/testing/in-memory.js +323 -0
  372. package/dist/webhooks/testing/in-memory.js.map +1 -0
  373. package/dist/webhooks/testing/index.d.ts +7 -0
  374. package/dist/webhooks/testing/index.d.ts.map +1 -0
  375. package/dist/webhooks/testing/index.js +25 -0
  376. package/dist/webhooks/testing/index.js.map +1 -0
  377. package/dist/webhooks/testing/kit.d.ts +86 -0
  378. package/dist/webhooks/testing/kit.d.ts.map +1 -0
  379. package/dist/webhooks/testing/kit.js +113 -0
  380. package/dist/webhooks/testing/kit.js.map +1 -0
  381. package/dist/webhooks/webhook-endpoints.service.d.ts +142 -0
  382. package/dist/webhooks/webhook-endpoints.service.d.ts.map +1 -0
  383. package/dist/webhooks/webhook-endpoints.service.js +366 -0
  384. package/dist/webhooks/webhook-endpoints.service.js.map +1 -0
  385. package/dist/webhooks/webhook-envelope.d.ts +36 -0
  386. package/dist/webhooks/webhook-envelope.d.ts.map +1 -0
  387. package/dist/webhooks/webhook-envelope.js +46 -0
  388. package/dist/webhooks/webhook-envelope.js.map +1 -0
  389. package/dist/webhooks/webhook-secrets.service.d.ts +49 -0
  390. package/dist/webhooks/webhook-secrets.service.d.ts.map +1 -0
  391. package/dist/webhooks/webhook-secrets.service.js +118 -0
  392. package/dist/webhooks/webhook-secrets.service.js.map +1 -0
  393. package/dist/webhooks/webhook-views.d.ts +34 -0
  394. package/dist/webhooks/webhook-views.d.ts.map +1 -0
  395. package/dist/webhooks/webhook-views.js +83 -0
  396. package/dist/webhooks/webhook-views.js.map +1 -0
  397. package/dist/webhooks/webhooks.access.d.ts +28 -0
  398. package/dist/webhooks/webhooks.access.d.ts.map +1 -0
  399. package/dist/webhooks/webhooks.access.js +55 -0
  400. package/dist/webhooks/webhooks.access.js.map +1 -0
  401. package/dist/webhooks/webhooks.constants.d.ts +73 -0
  402. package/dist/webhooks/webhooks.constants.d.ts.map +1 -0
  403. package/dist/webhooks/webhooks.constants.js +100 -0
  404. package/dist/webhooks/webhooks.constants.js.map +1 -0
  405. package/dist/webhooks/webhooks.credentials.d.ts +28 -0
  406. package/dist/webhooks/webhooks.credentials.d.ts.map +1 -0
  407. package/dist/webhooks/webhooks.credentials.js +51 -0
  408. package/dist/webhooks/webhooks.credentials.js.map +1 -0
  409. package/dist/webhooks/webhooks.errors.d.ts +25 -0
  410. package/dist/webhooks/webhooks.errors.d.ts.map +1 -0
  411. package/dist/webhooks/webhooks.errors.js +65 -0
  412. package/dist/webhooks/webhooks.errors.js.map +1 -0
  413. package/dist/webhooks/webhooks.metrics.d.ts +24 -0
  414. package/dist/webhooks/webhooks.metrics.d.ts.map +1 -0
  415. package/dist/webhooks/webhooks.metrics.js +70 -0
  416. package/dist/webhooks/webhooks.metrics.js.map +1 -0
  417. package/dist/webhooks/webhooks.module.d.ts +29 -0
  418. package/dist/webhooks/webhooks.module.d.ts.map +1 -0
  419. package/dist/webhooks/webhooks.module.js +108 -0
  420. package/dist/webhooks/webhooks.module.js.map +1 -0
  421. package/dist/webhooks/webhooks.options.d.ts +119 -0
  422. package/dist/webhooks/webhooks.options.d.ts.map +1 -0
  423. package/dist/webhooks/webhooks.options.js +80 -0
  424. package/dist/webhooks/webhooks.options.js.map +1 -0
  425. package/dist/webhooks/webhooks.permissions.d.ts +47 -0
  426. package/dist/webhooks/webhooks.permissions.d.ts.map +1 -0
  427. package/dist/webhooks/webhooks.permissions.js +83 -0
  428. package/dist/webhooks/webhooks.permissions.js.map +1 -0
  429. package/dist/webhooks/webhooks.repository.d.ts +162 -0
  430. package/dist/webhooks/webhooks.repository.d.ts.map +1 -0
  431. package/dist/webhooks/webhooks.repository.js +246 -0
  432. package/dist/webhooks/webhooks.repository.js.map +1 -0
  433. package/dist/webhooks/webhooks.service.d.ts +91 -0
  434. package/dist/webhooks/webhooks.service.d.ts.map +1 -0
  435. package/dist/webhooks/webhooks.service.js +216 -0
  436. package/dist/webhooks/webhooks.service.js.map +1 -0
  437. package/package.json +19 -3
@@ -0,0 +1,190 @@
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 AlertContextService_1;
15
+ Object.defineProperty(exports, "__esModule", { value: true });
16
+ exports.AlertContextService = void 0;
17
+ exports.toAlertStoreError = toAlertStoreError;
18
+ exports.metricTablesOfSchema = metricTablesOfSchema;
19
+ const common_1 = require("@nestjs/common");
20
+ const index_1 = require("../core/index");
21
+ const index_2 = require("../jobs/index");
22
+ const index_3 = require("../nodes/index");
23
+ const index_4 = require("../telemetry/index");
24
+ const alerts_errors_1 = require("./alerts.errors");
25
+ /** Statements one rule evaluation may run. */
26
+ const STATEMENTS_PER_EVALUATION = 5;
27
+ const UNAVAILABLE_REASONS = new Set([
28
+ index_4.TELEMETRY_ERROR_REASONS.NOT_CONFIGURED,
29
+ index_4.TELEMETRY_ERROR_REASONS.DISABLED,
30
+ index_4.TELEMETRY_ERROR_REASONS.UNREACHABLE,
31
+ index_4.TELEMETRY_ERROR_REASONS.QUERY_TIMEOUT,
32
+ ]);
33
+ /**
34
+ * Maps a telemetry failure to the evaluator's vocabulary: a store that cannot
35
+ * be reached is `AlertStoreUnavailableError` (the rule's incidents are left
36
+ * alone); anything else (a refused or failed statement) is the rule's own bug
37
+ * and surfaces as itself.
38
+ *
39
+ * @param error - what the telemetry slice threw.
40
+ * @returns the error to throw.
41
+ *
42
+ * @stability experimental
43
+ */
44
+ function toAlertStoreError(error) {
45
+ if (error instanceof alerts_errors_1.AlertStoreUnavailableError)
46
+ return error;
47
+ if (error instanceof index_4.TelemetryHttpError && UNAVAILABLE_REASONS.has(error.reason)) {
48
+ return new alerts_errors_1.AlertStoreUnavailableError(describe(error), error);
49
+ }
50
+ return error;
51
+ }
52
+ function describe(error) {
53
+ if (error instanceof index_4.TelemetryHttpError) {
54
+ const body = error.getResponse();
55
+ return body?.message ?? error.message;
56
+ }
57
+ return error instanceof Error ? error.message : String(error);
58
+ }
59
+ /**
60
+ * Derives the metric tables of a store schema: tables with the dialect's time
61
+ * and value columns, and their tag columns.
62
+ *
63
+ * @param schema - the store's schema.
64
+ * @param dialect - the store's SQL spelling.
65
+ * @returns the tables by name.
66
+ *
67
+ * @stability experimental
68
+ */
69
+ function metricTablesOfSchema(schema, dialect) {
70
+ const tables = new Map();
71
+ for (const table of schema.tables) {
72
+ const names = new Set(table.columns.map((c) => c.name));
73
+ if (!names.has(dialect.timestampColumn) || !names.has(dialect.valueColumn))
74
+ continue;
75
+ const reported = table.columns.some((c) => c.semanticType);
76
+ const tags = table.columns
77
+ .filter((c) => reported ? String(c.semanticType).toUpperCase() === 'TAG' : c.name !== dialect.timestampColumn && c.name !== dialect.valueColumn)
78
+ .map((c) => c.name)
79
+ .sort();
80
+ tables.set(table.name, { name: table.name, columns: names, tags });
81
+ }
82
+ return tables;
83
+ }
84
+ /**
85
+ * Builds the {@link AlertEvaluationContext} of one rule evaluation from the
86
+ * app's services. The telemetry, nodes and dashboard services are optional: a
87
+ * kind that needs one that is not installed gets `AlertStoreUnavailableError`.
88
+ *
89
+ * @stability experimental
90
+ */
91
+ let AlertContextService = AlertContextService_1 = class AlertContextService {
92
+ prisma;
93
+ queries;
94
+ schema;
95
+ dialect;
96
+ dashboard;
97
+ lifecycle;
98
+ logger = new common_1.Logger(AlertContextService_1.name);
99
+ constructor(prisma, queries, schema, dialect, dashboard, lifecycle) {
100
+ this.prisma = prisma;
101
+ this.queries = queries;
102
+ this.schema = schema;
103
+ this.dialect = dialect;
104
+ this.dashboard = dashboard;
105
+ this.lifecycle = lifecycle;
106
+ }
107
+ /**
108
+ * The context for one evaluation.
109
+ *
110
+ * @param signal - aborted when the rule's time budget is spent.
111
+ * @param now - the instant the evaluation is for.
112
+ * @returns the context; its lazy members memoise per context.
113
+ */
114
+ create(signal, now = new Date()) {
115
+ let telemetry = null;
116
+ let verdict = null;
117
+ let stale = null;
118
+ return {
119
+ now,
120
+ signal,
121
+ db: this.prisma,
122
+ telemetry: () => (telemetry ??= this.openTelemetry(signal)),
123
+ verdict: () => (verdict ??= this.readVerdict()),
124
+ staleHeartbeatSeconds: () => (stale ??= this.readStale()),
125
+ };
126
+ }
127
+ async openTelemetry(signal) {
128
+ if (!this.queries || !this.schema || !this.dialect) {
129
+ throw new alerts_errors_1.AlertStoreUnavailableError('The telemetry slice is not installed in this application.');
130
+ }
131
+ try {
132
+ const schema = await this.schema.getSchema();
133
+ const inner = (0, index_4.createQueryFacade)(this.queries, null, {
134
+ source: 'alert',
135
+ dialect: this.dialect,
136
+ signal,
137
+ maxStatements: STATEMENTS_PER_EVALUATION,
138
+ });
139
+ const query = Object.freeze({
140
+ sql: inner.sql,
141
+ dialect: inner.dialect,
142
+ query: async (sql, options) => {
143
+ try {
144
+ return await inner.query(sql, options);
145
+ }
146
+ catch (error) {
147
+ throw toAlertStoreError(error);
148
+ }
149
+ },
150
+ });
151
+ return { query, tables: metricTablesOfSchema(schema, this.dialect) };
152
+ }
153
+ catch (error) {
154
+ throw toAlertStoreError(error);
155
+ }
156
+ }
157
+ async readVerdict() {
158
+ if (!this.dashboard)
159
+ throw new alerts_errors_1.AlertStoreUnavailableError('The telemetry slice is not installed in this application.');
160
+ try {
161
+ const summary = await this.dashboard.summary(null, {});
162
+ return { level: summary.verdict.level, reasons: summary.verdict.reasons };
163
+ }
164
+ catch (error) {
165
+ throw toAlertStoreError(error);
166
+ }
167
+ }
168
+ async readStale() {
169
+ if (!this.lifecycle) {
170
+ this.logger.debug('NodeLifecycleService is not available; using the shipped stale window.');
171
+ return index_2.DEFAULT_NODES_POLICY.staleHeartbeatSeconds;
172
+ }
173
+ return (await this.lifecycle.getPolicy()).staleHeartbeatSeconds;
174
+ }
175
+ };
176
+ exports.AlertContextService = AlertContextService;
177
+ exports.AlertContextService = AlertContextService = AlertContextService_1 = __decorate([
178
+ (0, common_1.Injectable)(),
179
+ __param(0, (0, common_1.Inject)(index_1.PLATFORM_PRISMA)),
180
+ __param(1, (0, common_1.Optional)()),
181
+ __param(2, (0, common_1.Optional)()),
182
+ __param(3, (0, common_1.Optional)()),
183
+ __param(3, (0, common_1.Inject)(index_4.TELEMETRY_SQL_DIALECT)),
184
+ __param(4, (0, common_1.Optional)()),
185
+ __param(5, (0, common_1.Optional)()),
186
+ __metadata("design:paramtypes", [Object, index_4.TelemetryQueryService,
187
+ index_4.TelemetrySchemaService, Object, index_4.TelemetryDashboardService,
188
+ index_3.NodeLifecycleService])
189
+ ], AlertContextService);
190
+ //# sourceMappingURL=alerts-context.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"alerts-context.service.js","sourceRoot":"","sources":["../../src/alerts/alerts-context.service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,53 @@
1
+ import { ConfigService } from '@nestjs/config';
2
+ import { NotificationsService } from '../notifications/index';
3
+ import { AlertsMetrics } from './alerts.metrics';
4
+ import type { AlertsWebhookEmitter } from './alerts.types';
5
+ import type { AlertIncidentRow, AlertRuleRow } from './data/alerts-db';
6
+ /**
7
+ * One webhook event the slice emits.
8
+ *
9
+ * @stability experimental
10
+ */
11
+ export interface AlertWebhookEventDef {
12
+ /** The event key. */
13
+ readonly key: string;
14
+ /** The label a webhooks catalog shows. */
15
+ readonly label: string;
16
+ /** One sentence on when it is emitted. */
17
+ readonly description: string;
18
+ }
19
+ /**
20
+ * The webhook event keys the slice emits, with the labels a webhooks slice
21
+ * shows in its catalog.
22
+ *
23
+ * @stability experimental
24
+ */
25
+ export declare const ALERT_WEBHOOK_EVENT_DEFS: readonly AlertWebhookEventDef[];
26
+ /**
27
+ * Sends the two things a fired or resolved incident causes: the notification
28
+ * to the holders of `alerts:read` and the optional webhook. Called AFTER the
29
+ * incident write committed (the evaluator never opens a transaction), and it
30
+ * never throws: a failed dispatch is logged and the incident stands.
31
+ *
32
+ * @stability experimental
33
+ */
34
+ export declare class AlertsDispatchService {
35
+ private readonly metrics;
36
+ private readonly notifications?;
37
+ private readonly webhooks?;
38
+ private readonly config?;
39
+ private readonly logger;
40
+ constructor(metrics: AlertsMetrics, notifications?: NotificationsService | undefined, webhooks?: AlertsWebhookEmitter | undefined, config?: ConfigService | undefined);
41
+ /**
42
+ * Dispatches one transition.
43
+ *
44
+ * @param to - `fired` or `resolved`.
45
+ * @param rule - the rule.
46
+ * @param incident - the incident as just written.
47
+ * @param notify - whether the notification is sent (false inside a cooldown); the webhook and the metric follow the transition regardless.
48
+ */
49
+ dispatch(to: 'fired' | 'resolved', rule: AlertRuleRow, incident: AlertIncidentRow, notify: boolean): Promise<void>;
50
+ private notify;
51
+ private emitWebhook;
52
+ }
53
+ //# sourceMappingURL=alerts-dispatch.service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"alerts-dispatch.service.d.ts","sourceRoot":"","sources":["../../src/alerts/alerts-dispatch.service.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAG/C,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAM9D,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAC3D,OAAO,KAAK,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAGvE;;;;GAIG;AACH,MAAM,WAAW,oBAAoB;IACnC,qBAAqB;IACrB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,0CAA0C;IAC1C,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,0CAA0C;IAC1C,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;CAC9B;AAED;;;;;GAKG;AACH,eAAO,MAAM,wBAAwB,EAAE,SAAS,oBAAoB,EAGnE,CAAC;AAOF;;;;;;;GAOG;AACH,qBACa,qBAAqB;IAI9B,OAAO,CAAC,QAAQ,CAAC,OAAO;IACZ,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAC;IACC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC;IAC1D,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC;IANtC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA0C;gBAG9C,OAAO,EAAE,aAAa,EACV,aAAa,CAAC,EAAE,oBAAoB,YAAA,EACJ,QAAQ,CAAC,EAAE,oBAAoB,YAAA,EAC/D,MAAM,CAAC,EAAE,aAAa,YAAA;IASrD;;;;;;;OAOG;IACG,QAAQ,CAAC,EAAE,EAAE,OAAO,GAAG,UAAU,EAAE,IAAI,EAAE,YAAY,EAAE,QAAQ,EAAE,gBAAgB,EAAE,MAAM,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAMxH,OAAO,CAAC,MAAM;YAgCA,WAAW;CAiB1B"}
@@ -0,0 +1,135 @@
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 AlertsDispatchService_1;
15
+ Object.defineProperty(exports, "__esModule", { value: true });
16
+ exports.AlertsDispatchService = exports.ALERT_WEBHOOK_EVENT_DEFS = void 0;
17
+ const common_1 = require("@nestjs/common");
18
+ const config_1 = require("@nestjs/config");
19
+ const alerts_1 = require("@marinoscar/platform-contract/alerts");
20
+ const index_1 = require("../notifications/index");
21
+ const alerts_constants_1 = require("./alerts.constants");
22
+ const alerts_metrics_1 = require("./alerts.metrics");
23
+ /**
24
+ * The webhook event keys the slice emits, with the labels a webhooks slice
25
+ * shows in its catalog.
26
+ *
27
+ * @stability experimental
28
+ */
29
+ exports.ALERT_WEBHOOK_EVENT_DEFS = [
30
+ { key: alerts_1.ALERT_WEBHOOK_EVENTS.FIRED, label: 'Alert fired', description: 'An alert rule started firing.' },
31
+ { key: alerts_1.ALERT_WEBHOOK_EVENTS.RESOLVED, label: 'Alert resolved', description: 'A firing alert cleared.' },
32
+ ];
33
+ function labelsOf(incident) {
34
+ const raw = incident.labels;
35
+ return raw && typeof raw === 'object' ? raw : {};
36
+ }
37
+ /**
38
+ * Sends the two things a fired or resolved incident causes: the notification
39
+ * to the holders of `alerts:read` and the optional webhook. Called AFTER the
40
+ * incident write committed (the evaluator never opens a transaction), and it
41
+ * never throws: a failed dispatch is logged and the incident stands.
42
+ *
43
+ * @stability experimental
44
+ */
45
+ let AlertsDispatchService = AlertsDispatchService_1 = class AlertsDispatchService {
46
+ metrics;
47
+ notifications;
48
+ webhooks;
49
+ config;
50
+ logger = new common_1.Logger(AlertsDispatchService_1.name);
51
+ constructor(metrics, notifications, webhooks, config) {
52
+ this.metrics = metrics;
53
+ this.notifications = notifications;
54
+ this.webhooks = webhooks;
55
+ this.config = config;
56
+ try {
57
+ this.webhooks?.registerEvents?.(exports.ALERT_WEBHOOK_EVENT_DEFS);
58
+ }
59
+ catch (error) {
60
+ this.logger.warn(`The webhook emitter refused the alert events: ${error instanceof Error ? error.message : String(error)}`);
61
+ }
62
+ }
63
+ /**
64
+ * Dispatches one transition.
65
+ *
66
+ * @param to - `fired` or `resolved`.
67
+ * @param rule - the rule.
68
+ * @param incident - the incident as just written.
69
+ * @param notify - whether the notification is sent (false inside a cooldown); the webhook and the metric follow the transition regardless.
70
+ */
71
+ async dispatch(to, rule, incident, notify) {
72
+ this.metrics.transition(to, incident.severity);
73
+ if (notify)
74
+ this.notify(to, rule, incident);
75
+ await this.emitWebhook(to, rule, incident);
76
+ }
77
+ notify(to, rule, incident) {
78
+ if (!this.notifications)
79
+ return;
80
+ try {
81
+ const appUrl = this.config?.get('appUrl');
82
+ const data = {
83
+ incidentId: incident.id,
84
+ ruleId: rule.id,
85
+ ruleName: rule.name,
86
+ severity: incident.severity,
87
+ state: to,
88
+ summary: incident.summary,
89
+ labels: labelsOf(incident),
90
+ value: incident.lastValue,
91
+ firedAt: incident.firedAt,
92
+ resolvedAt: incident.resolvedAt,
93
+ ...(appUrl ? { appUrl: appUrl.replace(/\/+$/, '') } : {}),
94
+ };
95
+ void this.notifications
96
+ .notifyPermissionHolders(to === 'fired' ? alerts_constants_1.ALERT_FIRED_NOTIFICATION : alerts_constants_1.ALERT_RESOLVED_NOTIFICATION, alerts_1.ALERT_PERMISSIONS.READ, data, rule.notifyChannels.length > 0 ? { channels: rule.notifyChannels } : undefined)
97
+ .catch((error) => {
98
+ this.logger.error(`Dispatching the '${to}' alert notification for incident ${incident.id} rejected: ${error instanceof Error ? error.message : String(error)}`);
99
+ });
100
+ }
101
+ catch (error) {
102
+ this.logger.error(`Could not raise the '${to}' alert notification for incident ${incident.id}: ${error instanceof Error ? error.message : String(error)}`);
103
+ }
104
+ }
105
+ async emitWebhook(to, rule, incident) {
106
+ if (!this.webhooks || !rule.webhook)
107
+ return;
108
+ try {
109
+ const data = {
110
+ incidentId: incident.id,
111
+ rule: { id: rule.id, key: rule.key, name: rule.name, kind: rule.kind, severity: rule.severity },
112
+ labels: labelsOf(incident),
113
+ value: incident.lastValue,
114
+ summary: incident.summary,
115
+ firedAt: incident.firedAt ? incident.firedAt.toISOString() : null,
116
+ resolvedAt: incident.resolvedAt ? incident.resolvedAt.toISOString() : null,
117
+ };
118
+ await this.webhooks.emit(to === 'fired' ? alerts_1.ALERT_WEBHOOK_EVENTS.FIRED : alerts_1.ALERT_WEBHOOK_EVENTS.RESOLVED, data, { orgId: null });
119
+ }
120
+ catch (error) {
121
+ this.logger.error(`Could not emit the '${to}' alert webhook for incident ${incident.id}: ${error instanceof Error ? error.message : String(error)}`);
122
+ }
123
+ }
124
+ };
125
+ exports.AlertsDispatchService = AlertsDispatchService;
126
+ exports.AlertsDispatchService = AlertsDispatchService = AlertsDispatchService_1 = __decorate([
127
+ (0, common_1.Injectable)(),
128
+ __param(1, (0, common_1.Optional)()),
129
+ __param(2, (0, common_1.Optional)()),
130
+ __param(2, (0, common_1.Inject)(alerts_constants_1.ALERTS_WEBHOOK_EMITTER)),
131
+ __param(3, (0, common_1.Optional)()),
132
+ __metadata("design:paramtypes", [alerts_metrics_1.AlertsMetrics,
133
+ index_1.NotificationsService, Object, config_1.ConfigService])
134
+ ], AlertsDispatchService);
135
+ //# sourceMappingURL=alerts-dispatch.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"alerts-dispatch.service.js","sourceRoot":"","sources":["../../src/alerts/alerts-dispatch.service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,88 @@
1
+ import type { AlertObservation } from '@marinoscar/platform-contract/alerts';
2
+ import { AlertContextService } from './alerts-context.service';
3
+ import { AlertsDispatchService } from './alerts-dispatch.service';
4
+ import type { ResolvedAlertsModuleOptions } from './alerts.options';
5
+ import type { AlertNodeEventPayload } from './alerts.types';
6
+ import type { AlertRuleRow, AlertsPrisma } from './data/alerts-db';
7
+ /**
8
+ * What one rule's evaluation did.
9
+ *
10
+ * @stability experimental
11
+ */
12
+ export interface AlertEvaluationOutcome {
13
+ /** The rule. */
14
+ readonly ruleId: string;
15
+ /** `ok`, or `error` (the kind failed, timed out or is not registered; incidents were left alone). */
16
+ readonly status: 'ok' | 'error';
17
+ /** The error message when `status` is `error`. */
18
+ readonly error: string | null;
19
+ /** Incidents created. */
20
+ readonly opened: number;
21
+ /** Incidents that moved to firing (now or on creation). */
22
+ readonly fired: number;
23
+ /** Incidents that resolved. */
24
+ readonly resolved: number;
25
+ }
26
+ /**
27
+ * Whether `error` is a unique-constraint violation (Prisma `P2002`).
28
+ *
29
+ * @param error - what a write threw.
30
+ * @returns whether it is `P2002`.
31
+ *
32
+ * @stability experimental
33
+ */
34
+ export declare function isUniqueViolation(error: unknown): boolean;
35
+ /**
36
+ * Runs the enabled rules: evaluates each kind, isolates failures per rule,
37
+ * then applies the state machine to the observations. Evaluation is
38
+ * IDEMPOTENT: two passes over the same data leave one incident (the partial
39
+ * unique index arbitrates a race), and every state change is a conditional
40
+ * write so a concurrent pass cannot dispatch the same transition twice.
41
+ *
42
+ * It never opens a transaction, so a dispatch always follows a committed write.
43
+ *
44
+ * @stability experimental
45
+ */
46
+ export declare class AlertsEvaluationService {
47
+ private readonly prisma;
48
+ private readonly contexts;
49
+ private readonly dispatcher;
50
+ private readonly options;
51
+ private readonly logger;
52
+ constructor(prisma: AlertsPrisma, contexts: AlertContextService, dispatcher: AlertsDispatchService, options: ResolvedAlertsModuleOptions);
53
+ /**
54
+ * Evaluates every enabled rule (or only the event-driven ones that `event`
55
+ * can change).
56
+ *
57
+ * @param scope - `{ event }` restricts to rules of event-driven kinds whose kind says the event matters.
58
+ * @returns one outcome per rule evaluated.
59
+ */
60
+ evaluateEnabled(scope?: {
61
+ event?: AlertNodeEventPayload;
62
+ }): Promise<AlertEvaluationOutcome[]>;
63
+ /**
64
+ * Evaluates one rule and applies its observations. Never throws: a failure
65
+ * is recorded on the rule (`lastError`) and returned.
66
+ *
67
+ * @param rule - the rule row.
68
+ * @param now - the instant (a test seam).
69
+ * @returns what happened.
70
+ */
71
+ evaluateRule(rule: AlertRuleRow, now?: Date): Promise<AlertEvaluationOutcome>;
72
+ /**
73
+ * Evaluates a rule WITHOUT touching state or dispatching: the dry run behind
74
+ * `POST /rules/:id/test`.
75
+ *
76
+ * @param rule - the rule row.
77
+ * @param now - the instant.
78
+ * @returns the observations.
79
+ * @throws whatever the kind throws (the caller reports it).
80
+ */
81
+ observe(rule: AlertRuleRow, now?: Date): Promise<AlertObservation[]>;
82
+ private stamp;
83
+ private apply;
84
+ private create;
85
+ private fired;
86
+ private previousResolvedAt;
87
+ }
88
+ //# sourceMappingURL=alerts-evaluation.service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"alerts-evaluation.service.d.ts","sourceRoot":"","sources":["../../src/alerts/alerts-evaluation.service.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sCAAsC,CAAC;AAG7E,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAGlE,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,kBAAkB,CAAC;AACpE,OAAO,KAAK,EAAE,qBAAqB,EAAiB,MAAM,gBAAgB,CAAC;AAC3E,OAAO,KAAK,EAAoB,YAAY,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAIrF;;;;GAIG;AACH,MAAM,WAAW,sBAAsB;IACrC,gBAAgB;IAChB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,qGAAqG;IACrG,QAAQ,CAAC,MAAM,EAAE,IAAI,GAAG,OAAO,CAAC;IAChC,kDAAkD;IAClD,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,yBAAyB;IACzB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,2DAA2D;IAC3D,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,+BAA+B;IAC/B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;CAC3B;AAED;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAEzD;AAUD;;;;;;;;;;GAUG;AACH,qBACa,uBAAuB;IAIP,OAAO,CAAC,QAAQ,CAAC,MAAM;IAChD,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,UAAU;IACH,OAAO,CAAC,QAAQ,CAAC,OAAO;IANlD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA4C;gBAGvB,MAAM,EAAE,YAAY,EAC7C,QAAQ,EAAE,mBAAmB,EAC7B,UAAU,EAAE,qBAAqB,EACT,OAAO,EAAE,2BAA2B;IAG/E;;;;;;OAMG;IACG,eAAe,CAAC,KAAK,GAAE;QAAE,KAAK,CAAC,EAAE,qBAAqB,CAAA;KAAO,GAAG,OAAO,CAAC,sBAAsB,EAAE,CAAC;IAgBvG;;;;;;;OAOG;IACG,YAAY,CAAC,IAAI,EAAE,YAAY,EAAE,GAAG,GAAE,IAAiB,GAAG,OAAO,CAAC,sBAAsB,CAAC;IAyB/F;;;;;;;;OAQG;IACH,OAAO,CAAC,IAAI,EAAE,YAAY,EAAE,GAAG,GAAE,IAAiB,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC;YA6BlE,KAAK;YAQL,KAAK;YAyFL,MAAM;YA4BN,KAAK;YAKL,kBAAkB;CAQjC"}