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

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 +16 -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 +332 -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,18 @@
1
+ import { JobsService } from '../../jobs/index';
2
+ /**
3
+ * Queues `alerts.evaluate` every minute. It DECIDES nothing and DOES nothing
4
+ * else: the evaluation is the handler's, on a worker slot, observable as a job.
5
+ * The housekeeping helper keeps one in flight, so a slow evaluation never
6
+ * stacks a second behind it.
7
+ *
8
+ * @stability experimental
9
+ */
10
+ export declare class AlertsEvaluateTask {
11
+ private readonly jobs;
12
+ private readonly prisma;
13
+ private readonly logger;
14
+ constructor(jobs: JobsService, prisma: unknown);
15
+ /** The cron tick. */
16
+ handleCron(): Promise<void>;
17
+ }
18
+ //# sourceMappingURL=alerts-evaluate.task.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"alerts-evaluate.task.d.ts","sourceRoot":"","sources":["../../../src/alerts/tasks/alerts-evaluate.task.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,WAAW,EAA2C,MAAM,kBAAkB,CAAC;AAGxF;;;;;;;GAOG;AACH,qBACa,kBAAkB;IAI3B,OAAO,CAAC,QAAQ,CAAC,IAAI;IACI,OAAO,CAAC,QAAQ,CAAC,MAAM;IAJlD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAuC;gBAG3C,IAAI,EAAE,WAAW,EACQ,MAAM,EAAE,OAAO;IAG3D,qBAAqB;IAEf,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;CASlC"}
@@ -0,0 +1,61 @@
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 AlertsEvaluateTask_1;
15
+ Object.defineProperty(exports, "__esModule", { value: true });
16
+ exports.AlertsEvaluateTask = void 0;
17
+ const common_1 = require("@nestjs/common");
18
+ const schedule_1 = require("@nestjs/schedule");
19
+ const index_1 = require("../../core/index");
20
+ const index_2 = require("../../jobs/index");
21
+ const alerts_constants_1 = require("../alerts.constants");
22
+ /**
23
+ * Queues `alerts.evaluate` every minute. It DECIDES nothing and DOES nothing
24
+ * else: the evaluation is the handler's, on a worker slot, observable as a job.
25
+ * The housekeeping helper keeps one in flight, so a slow evaluation never
26
+ * stacks a second behind it.
27
+ *
28
+ * @stability experimental
29
+ */
30
+ let AlertsEvaluateTask = AlertsEvaluateTask_1 = class AlertsEvaluateTask {
31
+ jobs;
32
+ prisma;
33
+ logger = new common_1.Logger(AlertsEvaluateTask_1.name);
34
+ constructor(jobs, prisma) {
35
+ this.jobs = jobs;
36
+ this.prisma = prisma;
37
+ }
38
+ /** The cron tick. */
39
+ async handleCron() {
40
+ await (0, index_2.enqueueHousekeepingJob)({
41
+ jobs: this.jobs,
42
+ prisma: this.prisma,
43
+ logger: this.logger,
44
+ type: alerts_constants_1.ALERTS_EVALUATE_TYPE,
45
+ what: 'alert evaluation',
46
+ });
47
+ }
48
+ };
49
+ exports.AlertsEvaluateTask = AlertsEvaluateTask;
50
+ __decorate([
51
+ (0, schedule_1.Cron)(schedule_1.CronExpression.EVERY_MINUTE),
52
+ __metadata("design:type", Function),
53
+ __metadata("design:paramtypes", []),
54
+ __metadata("design:returntype", Promise)
55
+ ], AlertsEvaluateTask.prototype, "handleCron", null);
56
+ exports.AlertsEvaluateTask = AlertsEvaluateTask = AlertsEvaluateTask_1 = __decorate([
57
+ (0, common_1.Injectable)(),
58
+ __param(1, (0, common_1.Inject)(index_1.PLATFORM_PRISMA)),
59
+ __metadata("design:paramtypes", [index_2.JobsService, Object])
60
+ ], AlertsEvaluateTask);
61
+ //# sourceMappingURL=alerts-evaluate.task.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"alerts-evaluate.task.js","sourceRoot":"","sources":["../../../src/alerts/tasks/alerts-evaluate.task.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,2CAA4D;AAC5D,+CAAwD;AAExD,4CAAmD;AACnD,4CAAwF;AACxF,0DAA2D;AAE3D;;;;;;;GAOG;AAEI,IAAM,kBAAkB,0BAAxB,MAAM,kBAAkB;IAIV;IACyB;IAJ3B,MAAM,GAAG,IAAI,eAAM,CAAC,oBAAkB,CAAC,IAAI,CAAC,CAAC;IAE9D,YACmB,IAAiB,EACQ,MAAe;QADxC,SAAI,GAAJ,IAAI,CAAa;QACQ,WAAM,GAAN,MAAM,CAAS;IACxD,CAAC;IAEJ,qBAAqB;IAEf,AAAN,KAAK,CAAC,UAAU;QACd,MAAM,IAAA,8BAAsB,EAAC;YAC3B,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,MAAM,EAAE,IAAI,CAAC,MAAoB;YACjC,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,IAAI,EAAE,uCAAoB;YAC1B,IAAI,EAAE,kBAAkB;SACzB,CAAC,CAAC;IACL,CAAC;CACF,CAAA;AAnBY,gDAAkB;AAUvB;IADL,IAAA,eAAI,EAAC,yBAAc,CAAC,YAAY,CAAC;;;;oDASjC;6BAlBU,kBAAkB;IAD9B,IAAA,mBAAU,GAAE;IAMR,WAAA,IAAA,eAAM,EAAC,uBAAe,CAAC,CAAA;qCADD,mBAAW;GAJzB,kBAAkB,CAmB9B"}
@@ -0,0 +1,15 @@
1
+ import { JobsService } from '../../jobs/index';
2
+ /**
3
+ * Queues `alerts.incidents_purge` daily. Enqueue only.
4
+ *
5
+ * @stability experimental
6
+ */
7
+ export declare class AlertsPurgeTask {
8
+ private readonly jobs;
9
+ private readonly prisma;
10
+ private readonly logger;
11
+ constructor(jobs: JobsService, prisma: unknown);
12
+ /** The cron tick (03:17 UTC). */
13
+ handleCron(): Promise<void>;
14
+ }
15
+ //# sourceMappingURL=alerts-purge.task.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"alerts-purge.task.d.ts","sourceRoot":"","sources":["../../../src/alerts/tasks/alerts-purge.task.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,WAAW,EAA2C,MAAM,kBAAkB,CAAC;AAGxF;;;;GAIG;AACH,qBACa,eAAe;IAIxB,OAAO,CAAC,QAAQ,CAAC,IAAI;IACI,OAAO,CAAC,QAAQ,CAAC,MAAM;IAJlD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAoC;gBAGxC,IAAI,EAAE,WAAW,EACQ,MAAM,EAAE,OAAO;IAG3D,iCAAiC;IAE3B,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;CASlC"}
@@ -0,0 +1,58 @@
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 AlertsPurgeTask_1;
15
+ Object.defineProperty(exports, "__esModule", { value: true });
16
+ exports.AlertsPurgeTask = void 0;
17
+ const common_1 = require("@nestjs/common");
18
+ const schedule_1 = require("@nestjs/schedule");
19
+ const index_1 = require("../../core/index");
20
+ const index_2 = require("../../jobs/index");
21
+ const alerts_constants_1 = require("../alerts.constants");
22
+ /**
23
+ * Queues `alerts.incidents_purge` daily. Enqueue only.
24
+ *
25
+ * @stability experimental
26
+ */
27
+ let AlertsPurgeTask = AlertsPurgeTask_1 = class AlertsPurgeTask {
28
+ jobs;
29
+ prisma;
30
+ logger = new common_1.Logger(AlertsPurgeTask_1.name);
31
+ constructor(jobs, prisma) {
32
+ this.jobs = jobs;
33
+ this.prisma = prisma;
34
+ }
35
+ /** The cron tick (03:17 UTC). */
36
+ async handleCron() {
37
+ await (0, index_2.enqueueHousekeepingJob)({
38
+ jobs: this.jobs,
39
+ prisma: this.prisma,
40
+ logger: this.logger,
41
+ type: alerts_constants_1.ALERTS_INCIDENTS_PURGE_TYPE,
42
+ what: 'alert incident purge',
43
+ });
44
+ }
45
+ };
46
+ exports.AlertsPurgeTask = AlertsPurgeTask;
47
+ __decorate([
48
+ (0, schedule_1.Cron)('17 3 * * *'),
49
+ __metadata("design:type", Function),
50
+ __metadata("design:paramtypes", []),
51
+ __metadata("design:returntype", Promise)
52
+ ], AlertsPurgeTask.prototype, "handleCron", null);
53
+ exports.AlertsPurgeTask = AlertsPurgeTask = AlertsPurgeTask_1 = __decorate([
54
+ (0, common_1.Injectable)(),
55
+ __param(1, (0, common_1.Inject)(index_1.PLATFORM_PRISMA)),
56
+ __metadata("design:paramtypes", [index_2.JobsService, Object])
57
+ ], AlertsPurgeTask);
58
+ //# sourceMappingURL=alerts-purge.task.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"alerts-purge.task.js","sourceRoot":"","sources":["../../../src/alerts/tasks/alerts-purge.task.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,2CAA4D;AAC5D,+CAAwC;AAExC,4CAAmD;AACnD,4CAAwF;AACxF,0DAAkE;AAElE;;;;GAIG;AAEI,IAAM,eAAe,uBAArB,MAAM,eAAe;IAIP;IACyB;IAJ3B,MAAM,GAAG,IAAI,eAAM,CAAC,iBAAe,CAAC,IAAI,CAAC,CAAC;IAE3D,YACmB,IAAiB,EACQ,MAAe;QADxC,SAAI,GAAJ,IAAI,CAAa;QACQ,WAAM,GAAN,MAAM,CAAS;IACxD,CAAC;IAEJ,iCAAiC;IAE3B,AAAN,KAAK,CAAC,UAAU;QACd,MAAM,IAAA,8BAAsB,EAAC;YAC3B,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,MAAM,EAAE,IAAI,CAAC,MAAoB;YACjC,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,IAAI,EAAE,8CAA2B;YACjC,IAAI,EAAE,sBAAsB;SAC7B,CAAC,CAAC;IACL,CAAC;CACF,CAAA;AAnBY,0CAAe;AAUpB;IADL,IAAA,eAAI,EAAC,YAAY,CAAC;;;;iDASlB;0BAlBU,eAAe;IAD3B,IAAA,mBAAU,GAAE;IAMR,WAAA,IAAA,eAAM,EAAC,uBAAe,CAAC,CAAA;qCADD,mBAAW;GAJzB,eAAe,CAmB3B"}
@@ -0,0 +1,58 @@
1
+ import type { ConformanceFinding, ConformanceSuite } from '../../testing/index';
2
+ declare module '../../testing/index' {
3
+ interface PlatformConformanceSuiteOptions {
4
+ /** The alerts slice's suite: its options, or `false` to opt out. Registered by importing `@marinoscar/platform-api/alerts/testing`. */
5
+ alerts?: AlertsConformanceOptions | false;
6
+ }
7
+ }
8
+ /**
9
+ * What the `alerts` suite takes: the app's data, never its code.
10
+ *
11
+ * @stability experimental
12
+ */
13
+ export interface AlertsConformanceOptions {
14
+ /** The names of the raw-SQL indexes the app's migrations install, so the suite proves the one-open-incident index is on the list. */
15
+ readonly rawSqlIndexNames: readonly string[];
16
+ }
17
+ /**
18
+ * One route of the slice, as the suite sees it.
19
+ *
20
+ * @stability experimental
21
+ */
22
+ export interface AlertsRoute {
23
+ /** `Controller#handler`. */
24
+ readonly id: string;
25
+ /** The HTTP method name. */
26
+ readonly method: string;
27
+ /** Whether it is `@Public()`. */
28
+ readonly isPublic: boolean;
29
+ /** Whether `@Auth(...)` put a guard on it. */
30
+ readonly authenticated: boolean;
31
+ /** The permissions it requires. */
32
+ readonly permissions: readonly string[];
33
+ }
34
+ /**
35
+ * The routes of the slice's controller, read from its metadata.
36
+ *
37
+ * @returns every handler.
38
+ *
39
+ * @stability experimental
40
+ */
41
+ export declare function discoverAlertsRoutes(): AlertsRoute[];
42
+ /**
43
+ * The static invariants of the slice, as findings.
44
+ *
45
+ * @param options - the suite's options.
46
+ * @returns one finding per problem.
47
+ *
48
+ * @stability experimental
49
+ */
50
+ export declare function checkAlertsStatic(options: AlertsConformanceOptions): ConformanceFinding[];
51
+ /**
52
+ * The `alerts` conformance suite.
53
+ *
54
+ * @extensionPoint registry
55
+ * @stability experimental
56
+ */
57
+ export declare const alertsConformanceSuite: ConformanceSuite<AlertsConformanceOptions>;
58
+ //# sourceMappingURL=conformance.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"conformance.d.ts","sourceRoot":"","sources":["../../../src/alerts/testing/conformance.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAmB,kBAAkB,EAAqB,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAgBpH,OAAO,QAAQ,qBAAqB,CAAC;IACnC,UAAU,+BAA+B;QACvC,uIAAuI;QACvI,MAAM,CAAC,EAAE,wBAAwB,GAAG,KAAK,CAAC;KAC3C;CACF;AAED;;;;GAIG;AACH,MAAM,WAAW,wBAAwB;IACvC,qIAAqI;IACrI,QAAQ,CAAC,gBAAgB,EAAE,SAAS,MAAM,EAAE,CAAC;CAC9C;AAED;;;;GAIG;AACH,MAAM,WAAW,WAAW;IAC1B,4BAA4B;IAC5B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,4BAA4B;IAC5B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,iCAAiC;IACjC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,8CAA8C;IAC9C,QAAQ,CAAC,aAAa,EAAE,OAAO,CAAC;IAChC,mCAAmC;IACnC,QAAQ,CAAC,WAAW,EAAE,SAAS,MAAM,EAAE,CAAC;CACzC;AAED;;;;;;GAMG;AACH,wBAAgB,oBAAoB,IAAI,WAAW,EAAE,CAmBpD;AAED;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,wBAAwB,GAAG,kBAAkB,EAAE,CAiCzF;AAmBD;;;;;GAKG;AACH,eAAO,MAAM,sBAAsB,EAAE,gBAAgB,CAAC,wBAAwB,CAwE7E,CAAC"}
@@ -0,0 +1,198 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.alertsConformanceSuite = void 0;
4
+ exports.discoverAlertsRoutes = discoverAlertsRoutes;
5
+ exports.checkAlertsStatic = checkAlertsStatic;
6
+ const constants_1 = require("@nestjs/common/constants");
7
+ const common_1 = require("@nestjs/common");
8
+ const alerts_1 = require("@marinoscar/platform-contract/alerts");
9
+ const index_1 = require("../../identity/index");
10
+ const index_2 = require("../../testing/index");
11
+ const alerts_admin_controller_1 = require("../alerts-admin.controller");
12
+ const alerts_context_service_1 = require("../alerts-context.service");
13
+ const alerts_dispatch_service_1 = require("../alerts-dispatch.service");
14
+ const alerts_evaluation_service_1 = require("../alerts-evaluation.service");
15
+ const alerts_seed_service_1 = require("../alerts-seed.service");
16
+ const alerts_constants_1 = require("../alerts.constants");
17
+ const alerts_metrics_1 = require("../alerts.metrics");
18
+ const alerts_options_1 = require("../alerts.options");
19
+ const alert_kind_registry_1 = require("../kinds/alert-kind.registry");
20
+ const builtin_kinds_1 = require("../kinds/builtin-kinds");
21
+ const alerts_event_listener_1 = require("../alerts-event.listener");
22
+ const starter_rules_1 = require("../starter-rules");
23
+ const fakes_1 = require("./fakes");
24
+ /**
25
+ * The routes of the slice's controller, read from its metadata.
26
+ *
27
+ * @returns every handler.
28
+ *
29
+ * @stability experimental
30
+ */
31
+ function discoverAlertsRoutes() {
32
+ const controller = alerts_admin_controller_1.AlertsAdminController;
33
+ const prototype = controller.prototype;
34
+ const routes = [];
35
+ for (const name of Object.getOwnPropertyNames(prototype)) {
36
+ const handler = prototype[name];
37
+ if (name === 'constructor' || typeof handler !== 'function')
38
+ continue;
39
+ const method = Reflect.getMetadata(constants_1.METHOD_METADATA, handler);
40
+ if (method === undefined || Reflect.getMetadata(constants_1.PATH_METADATA, handler) === undefined)
41
+ continue;
42
+ const guards = [...(Reflect.getMetadata(constants_1.GUARDS_METADATA, controller) ?? []), ...(Reflect.getMetadata(constants_1.GUARDS_METADATA, handler) ?? [])];
43
+ routes.push({
44
+ id: `${controller.name}#${name}`,
45
+ method: common_1.RequestMethod[method] ?? String(method),
46
+ isPublic: Reflect.getMetadata(index_1.IS_PUBLIC_KEY, handler) === true || Reflect.getMetadata(index_1.IS_PUBLIC_KEY, controller) === true,
47
+ authenticated: guards.length > 0,
48
+ permissions: [...(Reflect.getMetadata(index_1.PERMISSIONS_KEY, handler) ?? [])],
49
+ });
50
+ }
51
+ return routes;
52
+ }
53
+ /**
54
+ * The static invariants of the slice, as findings.
55
+ *
56
+ * @param options - the suite's options.
57
+ * @returns one finding per problem.
58
+ *
59
+ * @stability experimental
60
+ */
61
+ function checkAlertsStatic(options) {
62
+ const findings = [];
63
+ for (const route of discoverAlertsRoutes()) {
64
+ if (route.isPublic)
65
+ findings.push({ file: route.id, message: 'no alerts route may be public' });
66
+ if (!route.authenticated)
67
+ findings.push({ file: route.id, message: 'declares no @Auth(...)' });
68
+ const wanted = route.method === 'GET' ? alerts_1.ALERT_PERMISSIONS.READ : alerts_1.ALERT_PERMISSIONS.WRITE;
69
+ if (route.permissions.length !== 1 || route.permissions[0] !== wanted) {
70
+ findings.push({ file: route.id, message: `must require exactly ${wanted} (got ${route.permissions.join(', ') || 'none'})` });
71
+ }
72
+ }
73
+ (0, builtin_kinds_1.registerBuiltinAlertKinds)();
74
+ for (const id of Object.values(alerts_1.ALERT_KIND_IDS)) {
75
+ if (!alert_kind_registry_1.alertRuleKindRegistry.has(id))
76
+ findings.push({ file: 'kinds', message: `built-in kind ${id} is not registered` });
77
+ }
78
+ const seen = new Set();
79
+ for (const { key, rule } of starter_rules_1.STARTER_ALERT_RULES) {
80
+ if (seen.has(key))
81
+ findings.push({ file: 'starter-rules', message: `duplicate starter key ${key}` });
82
+ seen.add(key);
83
+ if ('enabled' in rule && rule.enabled)
84
+ findings.push({ file: 'starter-rules', message: `${key} must be seeded disabled` });
85
+ const kind = alert_kind_registry_1.alertRuleKindRegistry.get(rule.kind);
86
+ if (!kind)
87
+ findings.push({ file: 'starter-rules', message: `${key} uses unregistered kind ${rule.kind}` });
88
+ else if (!kind.configSchema.safeParse(rule.config).success)
89
+ findings.push({ file: 'starter-rules', message: `${key} has a config its kind refuses` });
90
+ }
91
+ if (!options.rawSqlIndexNames.includes(alerts_constants_1.ALERT_OPEN_INCIDENT_INDEX)) {
92
+ findings.push({ file: 'raw-sql-indexes', message: `${alerts_constants_1.ALERT_OPEN_INCIDENT_INDEX} is not on the raw-SQL index list` });
93
+ }
94
+ for (const cls of [alerts_evaluation_service_1.AlertsEvaluationService, alerts_dispatch_service_1.AlertsDispatchService]) {
95
+ if (/\$transaction|runInOrg/.test(cls.toString()))
96
+ findings.push({ file: cls.name, message: 'must not open a transaction: a dispatch follows a committed write' });
97
+ }
98
+ if (/\b(fetch|spawn|exec|readFile|writeFile|\.download\(|\.upload\()\b/.test(alerts_event_listener_1.AlertsEventListener.toString())) {
99
+ findings.push({ file: 'AlertsEventListener', message: 'a node event listener only enqueues a job; it does no I/O of its own' });
100
+ }
101
+ return findings;
102
+ }
103
+ const STALE_NODE = { id: '11111111-1111-4111-8111-111111111111', name: 'node-a', status: 'online', lastHeartbeatAt: new Date(0) };
104
+ function rig() {
105
+ const prisma = (0, fakes_1.createInMemoryAlertsPrisma)();
106
+ prisma.nodes.push({ ...STALE_NODE });
107
+ const metrics = new alerts_metrics_1.AlertsMetrics(prisma);
108
+ const log = [];
109
+ const notifications = {
110
+ notifyPermissionHolders: async (event) => {
111
+ log.push(`notify:${event}:${prisma.incidents.filter((i) => i.state === 'firing').length}`);
112
+ },
113
+ };
114
+ const dispatcher = new alerts_dispatch_service_1.AlertsDispatchService(metrics, notifications);
115
+ const evaluation = new alerts_evaluation_service_1.AlertsEvaluationService(prisma, new alerts_context_service_1.AlertContextService(prisma), dispatcher, (0, alerts_options_1.resolveAlertsModuleOptions)());
116
+ return { prisma, evaluation, log };
117
+ }
118
+ /**
119
+ * The `alerts` conformance suite.
120
+ *
121
+ * @extensionPoint registry
122
+ * @stability experimental
123
+ */
124
+ exports.alertsConformanceSuite = {
125
+ id: 'alerts',
126
+ title: 'the alerts slice keeps its invariants',
127
+ description: 'every route requires exactly alerts:read (GET) or alerts:write and none is public, the built-in kinds and valid disabled starter rules exist, the one-open-incident index is on the raw-SQL list, nothing opens a transaction, an evaluation is idempotent, a dispatch follows the committed write, and seeding never overwrites an edit.',
128
+ check(_context, options) {
129
+ const routes = discoverAlertsRoutes();
130
+ return { scanned: { routes: routes.length }, scannedFiles: { routes: routes.map((r) => r.id) }, findings: checkAlertsStatic(options) };
131
+ },
132
+ cases() {
133
+ return [
134
+ {
135
+ name: 'routes: authenticated, never public, exactly alerts:read / alerts:write',
136
+ run: (report, expect) => {
137
+ expect(report.findings.filter((f) => f.file.startsWith('AlertsAdminController'))).toEqual([]);
138
+ },
139
+ },
140
+ {
141
+ name: 'kinds and starter rules: built-ins registered, starter rules valid and disabled',
142
+ run: (report, expect) => {
143
+ expect(report.findings.filter((f) => f.file === 'kinds' || f.file === 'starter-rules')).toEqual([]);
144
+ },
145
+ },
146
+ {
147
+ name: 'data: the one-open-incident index is on the raw-SQL index list',
148
+ run: (report, expect) => {
149
+ expect(report.findings.filter((f) => f.file === 'raw-sql-indexes')).toEqual([]);
150
+ },
151
+ },
152
+ {
153
+ name: 'no transaction around a dispatch; the listener only enqueues',
154
+ run: (report, expect) => {
155
+ expect(report.findings.filter((f) => ['AlertsEvaluationService', 'AlertsDispatchService', 'AlertsEventListener'].includes(f.file))).toEqual([]);
156
+ },
157
+ },
158
+ {
159
+ name: 'evaluation is idempotent: two passes over the same data leave one incident',
160
+ run: async (_report, expect) => {
161
+ (0, builtin_kinds_1.registerBuiltinAlertKinds)();
162
+ const { prisma, evaluation } = rig();
163
+ const rule = prisma.addRule({ kind: alerts_1.ALERT_KIND_IDS.NODE_OFFLINE, config: {} });
164
+ await evaluation.evaluateRule(rule);
165
+ await evaluation.evaluateRule(rule);
166
+ expect(prisma.incidents.filter((i) => i.state === 'firing').length).toEqual(1);
167
+ },
168
+ },
169
+ {
170
+ name: 'dispatch follows the committed write: the incident is firing when the notification is raised',
171
+ run: async (_report, expect) => {
172
+ (0, builtin_kinds_1.registerBuiltinAlertKinds)();
173
+ const { prisma, evaluation, log } = rig();
174
+ const rule = prisma.addRule({ kind: alerts_1.ALERT_KIND_IDS.NODE_OFFLINE, config: {} });
175
+ await evaluation.evaluateRule(rule);
176
+ expect(log).toEqual(['notify:alerts.alert_fired:1']);
177
+ },
178
+ },
179
+ {
180
+ name: 'starter rules are seeded disabled and never overwrite an edit',
181
+ run: async (_report, expect) => {
182
+ (0, builtin_kinds_1.registerBuiltinAlertKinds)();
183
+ const prisma = (0, fakes_1.createInMemoryAlertsPrisma)();
184
+ const seed = new alerts_seed_service_1.AlertsSeedService(prisma, (0, alerts_options_1.resolveAlertsModuleOptions)());
185
+ expect(await seed.seed()).toEqual(starter_rules_1.STARTER_ALERT_RULES.length);
186
+ expect(prisma.rules.filter((r) => r.enabled).length).toEqual(0);
187
+ prisma.rules[0].enabled = true;
188
+ prisma.rules[0].name = 'Edited by an administrator';
189
+ expect(await seed.seed()).toEqual(0);
190
+ expect([prisma.rules[0].enabled, prisma.rules[0].name]).toEqual([true, 'Edited by an administrator']);
191
+ },
192
+ },
193
+ ];
194
+ },
195
+ };
196
+ if (!index_2.conformanceSuites.has(exports.alertsConformanceSuite.id))
197
+ index_2.conformanceSuites.register(exports.alertsConformanceSuite);
198
+ //# sourceMappingURL=conformance.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"conformance.js","sourceRoot":"","sources":["../../../src/alerts/testing/conformance.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,80 @@
1
+ import type { AlertIncidentRow, AlertNodeEventRow, AlertNodeRow, AlertRuleRow, AlertsPrisma } from '../data/alerts-db';
2
+ import type { AlertEvaluationContext, AlertMetricTable, AlertRuleKind, AlertTelemetryAccess, AlertVerdict } from '../alerts.types';
3
+ /**
4
+ * The in-memory client: the typed {@link AlertsPrisma} plus the backing arrays.
5
+ *
6
+ * @stability experimental
7
+ */
8
+ export interface InMemoryAlertsPrisma extends AlertsPrisma {
9
+ /** `alert_rules`. */
10
+ readonly rules: AlertRuleRow[];
11
+ /** `alert_incidents`. */
12
+ readonly incidents: AlertIncidentRow[];
13
+ /** `worker_node_events`. */
14
+ readonly nodeEvents: AlertNodeEventRow[];
15
+ /** `worker_nodes`. */
16
+ readonly nodes: AlertNodeRow[];
17
+ /** Adds a rule with sensible defaults; returns the stored row. */
18
+ addRule(partial: Partial<AlertRuleRow> & Pick<AlertRuleRow, 'kind'>): AlertRuleRow;
19
+ }
20
+ /**
21
+ * Builds the in-memory client.
22
+ *
23
+ * @returns an empty client.
24
+ *
25
+ * @stability experimental
26
+ */
27
+ export declare function createInMemoryAlertsPrisma(): InMemoryAlertsPrisma;
28
+ /**
29
+ * A scripted kind for tests: `evaluate` returns what `script.next` holds, or
30
+ * throws it when it is an Error.
31
+ *
32
+ * @stability experimental
33
+ */
34
+ export interface FakeKindScript {
35
+ /** What the next evaluation returns (an Error is thrown). */
36
+ next: ReadonlyArray<import('../alerts.types').AlertObservation> | Error;
37
+ /** How many times it ran. */
38
+ calls: number;
39
+ }
40
+ /**
41
+ * A scripted kind and its script.
42
+ *
43
+ * @stability experimental
44
+ */
45
+ export interface FakeKind {
46
+ /** The kind, ready for `registerAlertRuleKind`. */
47
+ kind: AlertRuleKind;
48
+ /** What it returns next, and how often it ran. */
49
+ script: FakeKindScript;
50
+ }
51
+ /**
52
+ * Builds a scripted rule kind, `eventDriven` when asked.
53
+ *
54
+ * @param id - the kind id.
55
+ * @param configSchema - the config schema (any object by default).
56
+ * @returns the kind and its script.
57
+ *
58
+ * @stability experimental
59
+ */
60
+ export declare function createFakeKind(id: string, configSchema: AlertRuleKind['configSchema'], options?: {
61
+ eventDriven?: boolean;
62
+ }): FakeKind;
63
+ /**
64
+ * An evaluation context over the given database and fakes; every optional
65
+ * source throws `AlertStoreUnavailableError` unless supplied.
66
+ *
67
+ * @param db - the database.
68
+ * @param parts - what the test supplies.
69
+ * @returns the context.
70
+ *
71
+ * @stability experimental
72
+ */
73
+ export declare function createFakeContext(db: AlertsPrisma, parts?: {
74
+ now?: Date;
75
+ telemetry?: AlertTelemetryAccess;
76
+ verdict?: AlertVerdict;
77
+ staleHeartbeatSeconds?: number;
78
+ tables?: AlertMetricTable[];
79
+ }): AlertEvaluationContext;
80
+ //# sourceMappingURL=fakes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fakes.d.ts","sourceRoot":"","sources":["../../../src/alerts/testing/fakes.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,gBAAgB,EAChB,iBAAiB,EACjB,YAAY,EACZ,YAAY,EACZ,YAAY,EACb,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EAAE,sBAAsB,EAAE,gBAAgB,EAAE,aAAa,EAAE,oBAAoB,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAkHnI;;;;GAIG;AACH,MAAM,WAAW,oBAAqB,SAAQ,YAAY;IACxD,qBAAqB;IACrB,QAAQ,CAAC,KAAK,EAAE,YAAY,EAAE,CAAC;IAC/B,yBAAyB;IACzB,QAAQ,CAAC,SAAS,EAAE,gBAAgB,EAAE,CAAC;IACvC,4BAA4B;IAC5B,QAAQ,CAAC,UAAU,EAAE,iBAAiB,EAAE,CAAC;IACzC,sBAAsB;IACtB,QAAQ,CAAC,KAAK,EAAE,YAAY,EAAE,CAAC;IAC/B,kEAAkE;IAClE,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,YAAY,CAAC,GAAG,IAAI,CAAC,YAAY,EAAE,MAAM,CAAC,GAAG,YAAY,CAAC;CACpF;AAED;;;;;;GAMG;AACH,wBAAgB,0BAA0B,IAAI,oBAAoB,CA4DjE;AAED;;;;;GAKG;AACH,MAAM,WAAW,cAAc;IAC7B,6DAA6D;IAC7D,IAAI,EAAE,aAAa,CAAC,OAAO,iBAAiB,EAAE,gBAAgB,CAAC,GAAG,KAAK,CAAC;IACxE,6BAA6B;IAC7B,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;;;GAIG;AACH,MAAM,WAAW,QAAQ;IACvB,mDAAmD;IACnD,IAAI,EAAE,aAAa,CAAC;IACpB,kDAAkD;IAClD,MAAM,EAAE,cAAc,CAAC;CACxB;AAED;;;;;;;;GAQG;AACH,wBAAgB,cAAc,CAC5B,EAAE,EAAE,MAAM,EACV,YAAY,EAAE,aAAa,CAAC,cAAc,CAAC,EAC3C,OAAO,GAAE;IAAE,WAAW,CAAC,EAAE,OAAO,CAAA;CAAO,GACtC,QAAQ,CAgBV;AAED;;;;;;;;;GASG;AACH,wBAAgB,iBAAiB,CAC/B,EAAE,EAAE,YAAY,EAChB,KAAK,GAAE;IAAE,GAAG,CAAC,EAAE,IAAI,CAAC;IAAC,SAAS,CAAC,EAAE,oBAAoB,CAAC;IAAC,OAAO,CAAC,EAAE,YAAY,CAAC;IAAC,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,gBAAgB,EAAE,CAAA;CAAO,GAChJ,sBAAsB,CAexB"}