@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,47 @@
1
+ import type { PermissionDeclaration } from '../core/index';
2
+ /** A permission declaration of this slice. @stability experimental */
3
+ export type WebhooksPermissionDeclaration<Id extends string = string> = PermissionDeclaration<Id>;
4
+ /**
5
+ * `webhooks:read` and `webhooks:write`, ORG scope, granted to every org role:
6
+ * a member manages the endpoints they own in the active organization. The
7
+ * service pins every query to the caller, so another member's endpoint is a 404.
8
+ *
9
+ * @example
10
+ * ```ts
11
+ * registerPermissions(WEBHOOKS_PERMISSIONS);
12
+ * ```
13
+ *
14
+ * @stability experimental
15
+ */
16
+ export declare const WEBHOOKS_PERMISSIONS: {
17
+ /** `webhooks:read`: list and read one's own endpoints and deliveries. */
18
+ readonly WEBHOOKS_READ: WebhooksPermissionDeclaration<'webhooks:read'>;
19
+ /** `webhooks:write`: create, change, delete, rotate and test one's own endpoints; redeliver. */
20
+ readonly WEBHOOKS_WRITE: WebhooksPermissionDeclaration<'webhooks:write'>;
21
+ };
22
+ /**
23
+ * `org_webhooks:read` and `org_webhooks:write`, ORG scope, granted to
24
+ * `org_admin`: the active organization's shared endpoints.
25
+ *
26
+ * @stability experimental
27
+ */
28
+ export declare const ORG_WEBHOOKS_PERMISSIONS: {
29
+ /** `org_webhooks:read`: the organization's endpoints and deliveries. */
30
+ readonly ORG_WEBHOOKS_READ: WebhooksPermissionDeclaration<'org_webhooks:read'>;
31
+ /** `org_webhooks:write`: manage them. */
32
+ readonly ORG_WEBHOOKS_WRITE: WebhooksPermissionDeclaration<'org_webhooks:write'>;
33
+ };
34
+ /**
35
+ * `system_webhooks:read` and `system_webhooks:write`, SYSTEM scope, granted to
36
+ * `admin`: the deployment's endpoints (platform events such as node and job
37
+ * failures).
38
+ *
39
+ * @stability experimental
40
+ */
41
+ export declare const SYSTEM_WEBHOOKS_PERMISSIONS: {
42
+ /** `system_webhooks:read`: the deployment's endpoints and deliveries. */
43
+ readonly SYSTEM_WEBHOOKS_READ: WebhooksPermissionDeclaration<'system_webhooks:read'>;
44
+ /** `system_webhooks:write`: manage them. */
45
+ readonly SYSTEM_WEBHOOKS_WRITE: WebhooksPermissionDeclaration<'system_webhooks:write'>;
46
+ };
47
+ //# sourceMappingURL=webhooks.permissions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"webhooks.permissions.d.ts","sourceRoot":"","sources":["../../src/webhooks/webhooks.permissions.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AAE3D,sEAAsE;AACtE,MAAM,MAAM,6BAA6B,CAAC,EAAE,SAAS,MAAM,GAAG,MAAM,IAAI,qBAAqB,CAAC,EAAE,CAAC,CAAC;AAElG;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,oBAAoB,EAAE;IACjC,yEAAyE;IACzE,QAAQ,CAAC,aAAa,EAAE,6BAA6B,CAAC,eAAe,CAAC,CAAC;IACvE,gGAAgG;IAChG,QAAQ,CAAC,cAAc,EAAE,6BAA6B,CAAC,gBAAgB,CAAC,CAAC;CAc1E,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,wBAAwB,EAAE;IACrC,wEAAwE;IACxE,QAAQ,CAAC,iBAAiB,EAAE,6BAA6B,CAAC,mBAAmB,CAAC,CAAC;IAC/E,yCAAyC;IACzC,QAAQ,CAAC,kBAAkB,EAAE,6BAA6B,CAAC,oBAAoB,CAAC,CAAC;CAclF,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,2BAA2B,EAAE;IACxC,yEAAyE;IACzE,QAAQ,CAAC,oBAAoB,EAAE,6BAA6B,CAAC,sBAAsB,CAAC,CAAC;IACrF,4CAA4C;IAC5C,QAAQ,CAAC,qBAAqB,EAAE,6BAA6B,CAAC,uBAAuB,CAAC,CAAC;CAcxF,CAAC"}
@@ -0,0 +1,83 @@
1
+ "use strict";
2
+ // =============================================================================
3
+ // The webhooks slice's permissions (issue #1046)
4
+ // =============================================================================
5
+ //
6
+ // Three tiers, one string each way, declared beside the controllers that
7
+ // enforce them:
8
+ //
9
+ // webhooks:read / :write ORG scope, every org role (a member manages
10
+ // their OWN endpoints; the service scopes by owner)
11
+ // org_webhooks:read / :write ORG scope, `org_admin` (the organization's endpoints)
12
+ // system_webhooks:read / :write SYSTEM scope, `admin` (the deployment's endpoints)
13
+ // =============================================================================
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.SYSTEM_WEBHOOKS_PERMISSIONS = exports.ORG_WEBHOOKS_PERMISSIONS = exports.WEBHOOKS_PERMISSIONS = void 0;
16
+ /**
17
+ * `webhooks:read` and `webhooks:write`, ORG scope, granted to every org role:
18
+ * a member manages the endpoints they own in the active organization. The
19
+ * service pins every query to the caller, so another member's endpoint is a 404.
20
+ *
21
+ * @example
22
+ * ```ts
23
+ * registerPermissions(WEBHOOKS_PERMISSIONS);
24
+ * ```
25
+ *
26
+ * @stability experimental
27
+ */
28
+ exports.WEBHOOKS_PERMISSIONS = {
29
+ WEBHOOKS_READ: {
30
+ id: 'webhooks:read',
31
+ description: 'View your own webhook endpoints and their deliveries',
32
+ scope: 'org',
33
+ defaultGrants: ['org_admin', 'contributor', 'viewer'],
34
+ },
35
+ WEBHOOKS_WRITE: {
36
+ id: 'webhooks:write',
37
+ description: 'Create, change, delete, rotate and test your own webhook endpoints',
38
+ scope: 'org',
39
+ defaultGrants: ['org_admin', 'contributor', 'viewer'],
40
+ },
41
+ };
42
+ /**
43
+ * `org_webhooks:read` and `org_webhooks:write`, ORG scope, granted to
44
+ * `org_admin`: the active organization's shared endpoints.
45
+ *
46
+ * @stability experimental
47
+ */
48
+ exports.ORG_WEBHOOKS_PERMISSIONS = {
49
+ ORG_WEBHOOKS_READ: {
50
+ id: 'org_webhooks:read',
51
+ description: "View the active organization's webhook endpoints and their deliveries",
52
+ scope: 'org',
53
+ defaultGrants: ['org_admin'],
54
+ },
55
+ ORG_WEBHOOKS_WRITE: {
56
+ id: 'org_webhooks:write',
57
+ description: "Create, change, delete, rotate and test the active organization's webhook endpoints",
58
+ scope: 'org',
59
+ defaultGrants: ['org_admin'],
60
+ },
61
+ };
62
+ /**
63
+ * `system_webhooks:read` and `system_webhooks:write`, SYSTEM scope, granted to
64
+ * `admin`: the deployment's endpoints (platform events such as node and job
65
+ * failures).
66
+ *
67
+ * @stability experimental
68
+ */
69
+ exports.SYSTEM_WEBHOOKS_PERMISSIONS = {
70
+ SYSTEM_WEBHOOKS_READ: {
71
+ id: 'system_webhooks:read',
72
+ description: "View the deployment's webhook endpoints and their deliveries",
73
+ scope: 'system',
74
+ defaultGrants: ['admin'],
75
+ },
76
+ SYSTEM_WEBHOOKS_WRITE: {
77
+ id: 'system_webhooks:write',
78
+ description: "Create, change, delete, rotate and test the deployment's webhook endpoints",
79
+ scope: 'system',
80
+ defaultGrants: ['admin'],
81
+ },
82
+ };
83
+ //# sourceMappingURL=webhooks.permissions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"webhooks.permissions.js","sourceRoot":"","sources":["../../src/webhooks/webhooks.permissions.ts"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,iDAAiD;AACjD,gFAAgF;AAChF,EAAE;AACF,yEAAyE;AACzE,gBAAgB;AAChB,EAAE;AACF,iFAAiF;AACjF,uFAAuF;AACvF,2FAA2F;AAC3F,wFAAwF;AACxF,gFAAgF;;;AAOhF;;;;;;;;;;;GAWG;AACU,QAAA,oBAAoB,GAK7B;IACF,aAAa,EAAE;QACb,EAAE,EAAE,eAAe;QACnB,WAAW,EAAE,sDAAsD;QACnE,KAAK,EAAE,KAAK;QACZ,aAAa,EAAE,CAAC,WAAW,EAAE,aAAa,EAAE,QAAQ,CAAC;KACtD;IACD,cAAc,EAAE;QACd,EAAE,EAAE,gBAAgB;QACpB,WAAW,EAAE,oEAAoE;QACjF,KAAK,EAAE,KAAK;QACZ,aAAa,EAAE,CAAC,WAAW,EAAE,aAAa,EAAE,QAAQ,CAAC;KACtD;CACF,CAAC;AAEF;;;;;GAKG;AACU,QAAA,wBAAwB,GAKjC;IACF,iBAAiB,EAAE;QACjB,EAAE,EAAE,mBAAmB;QACvB,WAAW,EAAE,uEAAuE;QACpF,KAAK,EAAE,KAAK;QACZ,aAAa,EAAE,CAAC,WAAW,CAAC;KAC7B;IACD,kBAAkB,EAAE;QAClB,EAAE,EAAE,oBAAoB;QACxB,WAAW,EAAE,qFAAqF;QAClG,KAAK,EAAE,KAAK;QACZ,aAAa,EAAE,CAAC,WAAW,CAAC;KAC7B;CACF,CAAC;AAEF;;;;;;GAMG;AACU,QAAA,2BAA2B,GAKpC;IACF,oBAAoB,EAAE;QACpB,EAAE,EAAE,sBAAsB;QAC1B,WAAW,EAAE,8DAA8D;QAC3E,KAAK,EAAE,QAAQ;QACf,aAAa,EAAE,CAAC,OAAO,CAAC;KACzB;IACD,qBAAqB,EAAE;QACrB,EAAE,EAAE,uBAAuB;QAC3B,WAAW,EAAE,4EAA4E;QACzF,KAAK,EAAE,QAAQ;QACf,aAAa,EAAE,CAAC,OAAO,CAAC;KACzB;CACF,CAAC"}
@@ -0,0 +1,162 @@
1
+ import type { WebhookScope } from '@marinoscar/platform-contract/webhooks';
2
+ import { JobsService } from '../jobs/index';
3
+ import type { WebhookDeliveryRow, WebhookEndpointRow, WebhookUserRow } from './data/webhooks-db';
4
+ import { type WebhooksPrisma, type WebhooksSystemPrisma } from './ports';
5
+ /** Which endpoints a query is about: a scope, and for user scope the owner. @stability experimental */
6
+ export interface EndpointFilter {
7
+ /** The scope. */
8
+ readonly scope: WebhookScope;
9
+ /** User scope: the owner. */
10
+ readonly ownerUserId?: string;
11
+ }
12
+ /** A new endpoint row. @stability experimental */
13
+ export interface NewEndpoint {
14
+ /** Scope. */
15
+ readonly scope: WebhookScope;
16
+ /** Owner user id. */
17
+ readonly ownerUserId: string | null;
18
+ /** Created by id. */
19
+ readonly createdById: string | null;
20
+ /** Name. */
21
+ readonly name: string;
22
+ /** Description. */
23
+ readonly description: string | null;
24
+ /** Url. */
25
+ readonly url: string;
26
+ /** Event keys. */
27
+ readonly eventKeys: string[];
28
+ /** Enabled. */
29
+ readonly enabled: boolean;
30
+ }
31
+ /** The columns an update may set. @stability experimental */
32
+ export type EndpointPatch = Partial<Pick<WebhookEndpointRow, 'name' | 'description' | 'url' | 'eventKeys' | 'enabled' | 'secretVersion' | 'previousSecretUntil' | 'disabledReason' | 'consecutiveFailures'>>;
33
+ /** A delivery row to insert. @stability experimental */
34
+ export interface NewDelivery {
35
+ /** Endpoint id. */
36
+ readonly endpointId: string;
37
+ /** Event key. */
38
+ readonly eventKey: string;
39
+ /** Event id. */
40
+ readonly eventId: string;
41
+ /** Payload. */
42
+ readonly payload: unknown;
43
+ }
44
+ /** One page request of a delivery list. @stability experimental */
45
+ export interface DeliveryQuery {
46
+ /** Page. */
47
+ readonly page: number;
48
+ /** Page size. */
49
+ readonly pageSize: number;
50
+ /** Status. */
51
+ readonly status?: WebhookDeliveryRow['status'];
52
+ /** Event key. */
53
+ readonly eventKey?: string;
54
+ }
55
+ /** A delivery with its endpoint, for the job. @stability experimental */
56
+ export interface LoadedDelivery {
57
+ /** The delivery. */
58
+ delivery: WebhookDeliveryRow;
59
+ /** Its endpoint, or `null` when it is gone. */
60
+ endpoint: WebhookEndpointRow | null;
61
+ }
62
+ /** One page of deliveries. @stability experimental */
63
+ export interface DeliveryPage {
64
+ /** The rows of the page, newest first. */
65
+ items: WebhookDeliveryRow[];
66
+ /** All rows matching the filter. */
67
+ total: number;
68
+ }
69
+ /** What one attempt settled to. @stability experimental */
70
+ export interface AttemptOutcome {
71
+ /** The delivery's new state. */
72
+ readonly delivery: Partial<Pick<WebhookDeliveryRow, 'status' | 'attempt' | 'responseStatus' | 'responseSnippet' | 'errorCode' | 'durationMs' | 'nextAttemptAt' | 'deliveredAt'>>;
73
+ /** `success` resets the endpoint's failure counter; `failure` counts one; `neutral` leaves it (the endpoint was already gone). */
74
+ readonly endpoint: 'success' | 'failure' | 'neutral';
75
+ /** Failures at which the endpoint is switched off. */
76
+ readonly threshold: number;
77
+ /** Disable at once, with this reason (a 410). */
78
+ readonly disableNow?: string;
79
+ /** When set, a retry job is enqueued for this time. */
80
+ readonly retryAt?: Date;
81
+ }
82
+ /** What {@link WebhooksRepository.settleAttempt} reports. @stability experimental */
83
+ export interface SettledAttempt {
84
+ /** The endpoint after the update, or `null` when it no longer exists. */
85
+ readonly endpoint: WebhookEndpointRow | null;
86
+ /** Whether THIS call switched the endpoint off (so the owner is told exactly once). */
87
+ readonly disabled: boolean;
88
+ }
89
+ /**
90
+ * The slice's data port. See the file header.
91
+ *
92
+ * @stability experimental
93
+ */
94
+ export declare abstract class WebhooksRepository {
95
+ /** The endpoints matching `filter`, newest first. */
96
+ abstract listEndpoints(orgId: string | null, filter: EndpointFilter): Promise<WebhookEndpointRow[]>;
97
+ /** One endpoint of `filter`, or `null` (also when it is another owner's or organization's). */
98
+ abstract findEndpoint(orgId: string | null, id: string, filter: EndpointFilter): Promise<WebhookEndpointRow | null>;
99
+ /** How many endpoints `filter` has. */
100
+ abstract countEndpoints(orgId: string | null, filter: EndpointFilter): Promise<number>;
101
+ /** Inserts an endpoint. */
102
+ abstract createEndpoint(orgId: string | null, data: NewEndpoint): Promise<WebhookEndpointRow>;
103
+ /** Updates an endpoint by id. */
104
+ abstract updateEndpoint(orgId: string | null, id: string, patch: EndpointPatch): Promise<WebhookEndpointRow>;
105
+ /** Deletes an endpoint (its deliveries cascade). */
106
+ abstract deleteEndpoint(orgId: string | null, id: string): Promise<void>;
107
+ /** The enabled endpoints an event of `filter` may reach. */
108
+ abstract enabledEndpoints(orgId: string | null, filter: EndpointFilter): Promise<WebhookEndpointRow[]>;
109
+ /** Switches an endpoint off with a reason; `true` when it was enabled. */
110
+ abstract disableEndpoint(orgId: string | null, id: string, reason: string): Promise<boolean>;
111
+ /** The user, with the role graph, for the owner's permission re-check. */
112
+ abstract loadOwner(orgId: string | null, userId: string): Promise<WebhookUserRow | null>;
113
+ /** Inserts the rows (skipping an `(endpointId, eventId)` that exists) and enqueues one job per inserted row, in one transaction. */
114
+ abstract insertDeliveries(orgId: string | null, rows: readonly NewDelivery[]): Promise<WebhookDeliveryRow[]>;
115
+ /** One delivery of `filter`'s endpoints, or `null`. */
116
+ abstract findDelivery(orgId: string | null, id: string, filter: EndpointFilter): Promise<WebhookDeliveryRow | null>;
117
+ /** One delivery by id with its endpoint, for the job (no owner filter: the job is trusted). */
118
+ abstract loadDeliveryForJob(orgId: string | null, id: string): Promise<LoadedDelivery | null>;
119
+ /** A page of one endpoint's deliveries, newest first. */
120
+ abstract listDeliveries(orgId: string | null, endpointId: string, query: DeliveryQuery): Promise<DeliveryPage>;
121
+ /** Marks the delivery `delivering` and counts the attempt. */
122
+ abstract markDelivering(orgId: string | null, id: string): Promise<WebhookDeliveryRow>;
123
+ /** Writes an attempt's outcome to the delivery and the endpoint; optionally enqueues the retry. */
124
+ abstract settleAttempt(orgId: string | null, deliveryId: string, endpointId: string, outcome: AttemptOutcome): Promise<SettledAttempt>;
125
+ /** Resets a delivery to `pending` and enqueues it again. */
126
+ abstract resetForRedelivery(orgId: string | null, id: string): Promise<WebhookDeliveryRow>;
127
+ /** Deletes deliveries created before `cutoff`, in batches; returns how many. */
128
+ abstract purgeDeliveriesBefore(cutoff: Date): Promise<number>;
129
+ }
130
+ /**
131
+ * The Prisma implementation. See the file header.
132
+ *
133
+ * @internal
134
+ *
135
+ * @stability experimental
136
+ */
137
+ export declare class PrismaWebhooksRepository extends WebhooksRepository {
138
+ private readonly prisma;
139
+ private readonly system;
140
+ private readonly jobs;
141
+ constructor(prisma: WebhooksPrisma, system: WebhooksSystemPrisma, jobs: JobsService);
142
+ private run;
143
+ listEndpoints(orgId: string | null, filter: EndpointFilter): Promise<WebhookEndpointRow[]>;
144
+ findEndpoint(orgId: string | null, id: string, filter: EndpointFilter): Promise<WebhookEndpointRow | null>;
145
+ countEndpoints(orgId: string | null, filter: EndpointFilter): Promise<number>;
146
+ createEndpoint(orgId: string | null, data: NewEndpoint): Promise<WebhookEndpointRow>;
147
+ updateEndpoint(orgId: string | null, id: string, patch: EndpointPatch): Promise<WebhookEndpointRow>;
148
+ deleteEndpoint(orgId: string | null, id: string): Promise<void>;
149
+ enabledEndpoints(orgId: string | null, filter: EndpointFilter): Promise<WebhookEndpointRow[]>;
150
+ disableEndpoint(orgId: string | null, id: string, reason: string): Promise<boolean>;
151
+ loadOwner(orgId: string | null, userId: string): Promise<WebhookUserRow | null>;
152
+ insertDeliveries(orgId: string | null, rows: readonly NewDelivery[]): Promise<WebhookDeliveryRow[]>;
153
+ private enqueue;
154
+ findDelivery(orgId: string | null, id: string, filter: EndpointFilter): Promise<WebhookDeliveryRow | null>;
155
+ loadDeliveryForJob(orgId: string | null, id: string): Promise<LoadedDelivery | null>;
156
+ listDeliveries(orgId: string | null, endpointId: string, query: DeliveryQuery): Promise<DeliveryPage>;
157
+ markDelivering(orgId: string | null, id: string): Promise<WebhookDeliveryRow>;
158
+ settleAttempt(orgId: string | null, deliveryId: string, endpointId: string, outcome: AttemptOutcome): Promise<SettledAttempt>;
159
+ resetForRedelivery(orgId: string | null, id: string): Promise<WebhookDeliveryRow>;
160
+ purgeDeliveriesBefore(cutoff: Date): Promise<number>;
161
+ }
162
+ //# sourceMappingURL=webhooks.repository.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"webhooks.repository.d.ts","sourceRoot":"","sources":["../../src/webhooks/webhooks.repository.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,246 @@
1
+ "use strict";
2
+ // =============================================================================
3
+ // WebhooksRepository: every read and write of the two webhook tables
4
+ // (issue #1046)
5
+ // =============================================================================
6
+ //
7
+ // ONE PLACE decides which client touches which row, so row-level security is
8
+ // never an afterthought of a caller:
9
+ //
10
+ // - an organization's rows (`orgId` set: user and org scope) run in
11
+ // `runInOrg(PLATFORM_PRISMA, { orgId }, ...)`, the transaction-local
12
+ // `app.org_id` the policy reads;
13
+ // - a system-scope row has NO organization (`orgId` null); the policy shows
14
+ // it to the bypass client only, so those run in `WEBHOOKS_SYSTEM_PRISMA`
15
+ // with the registered reason `webhooks` (the purge uses `retention`).
16
+ //
17
+ // Every method takes the row's `orgId` (null = system) as its first argument
18
+ // and every query also filters on it, so a mis-routed call finds nothing.
19
+ //
20
+ // Fan-out and redelivery insert the delivery rows and enqueue their jobs in ONE
21
+ // transaction (`JobsService.enqueueWithin`): a delivery without a job, or a job
22
+ // without a delivery, cannot exist.
23
+ //
24
+ // `WebhooksRepository` is an abstract class used as the injection token; the
25
+ // slice's testing entry has an in-memory implementation.
26
+ // =============================================================================
27
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
28
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
29
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
30
+ 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;
31
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
32
+ };
33
+ var __metadata = (this && this.__metadata) || function (k, v) {
34
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
35
+ };
36
+ var __param = (this && this.__param) || function (paramIndex, decorator) {
37
+ return function (target, key) { decorator(target, key, paramIndex); }
38
+ };
39
+ Object.defineProperty(exports, "__esModule", { value: true });
40
+ exports.PrismaWebhooksRepository = exports.WebhooksRepository = void 0;
41
+ const common_1 = require("@nestjs/common");
42
+ const index_1 = require("../core/index");
43
+ const index_2 = require("../identity/index");
44
+ const index_3 = require("../jobs/index");
45
+ const ports_1 = require("./ports");
46
+ const webhooks_constants_1 = require("./webhooks.constants");
47
+ /**
48
+ * The slice's data port. See the file header.
49
+ *
50
+ * @stability experimental
51
+ */
52
+ class WebhooksRepository {
53
+ }
54
+ exports.WebhooksRepository = WebhooksRepository;
55
+ const SYSTEM_RETENTION_REASON = 'retention';
56
+ function endpointWhere(orgId, filter) {
57
+ return {
58
+ orgId,
59
+ scope: filter.scope,
60
+ ...(filter.scope === 'user' && filter.ownerUserId !== undefined ? { ownerUserId: filter.ownerUserId } : {}),
61
+ };
62
+ }
63
+ /**
64
+ * The Prisma implementation. See the file header.
65
+ *
66
+ * @internal
67
+ *
68
+ * @stability experimental
69
+ */
70
+ let PrismaWebhooksRepository = class PrismaWebhooksRepository extends WebhooksRepository {
71
+ prisma;
72
+ system;
73
+ jobs;
74
+ constructor(prisma, system, jobs) {
75
+ super();
76
+ this.prisma = prisma;
77
+ this.system = system;
78
+ this.jobs = jobs;
79
+ (0, webhooks_constants_1.registerWebhooksSystemAccessReason)();
80
+ }
81
+ run(orgId, fn) {
82
+ if (orgId === null)
83
+ return this.system.runAsSystem(webhooks_constants_1.WEBHOOKS_SYSTEM_ACCESS_REASON, fn);
84
+ return (0, index_1.runInOrg)(this.prisma, { orgId }, (tx) => fn(tx));
85
+ }
86
+ listEndpoints(orgId, filter) {
87
+ return this.run(orgId, (tx) => tx.webhookEndpoint.findMany({ where: endpointWhere(orgId, filter), orderBy: { createdAt: 'desc' } }));
88
+ }
89
+ findEndpoint(orgId, id, filter) {
90
+ return this.run(orgId, (tx) => tx.webhookEndpoint.findFirst({ where: { id, ...endpointWhere(orgId, filter) } }));
91
+ }
92
+ countEndpoints(orgId, filter) {
93
+ return this.run(orgId, (tx) => tx.webhookEndpoint.count({ where: endpointWhere(orgId, filter) }));
94
+ }
95
+ createEndpoint(orgId, data) {
96
+ return this.run(orgId, (tx) => tx.webhookEndpoint.create({ data: { ...data, orgId } }));
97
+ }
98
+ updateEndpoint(orgId, id, patch) {
99
+ return this.run(orgId, async (tx) => {
100
+ const result = await tx.webhookEndpoint.updateMany({ where: { id, orgId }, data: patch });
101
+ if (result.count !== 1)
102
+ throw new Error('Webhook endpoint not found');
103
+ return (await tx.webhookEndpoint.findFirst({ where: { id, orgId } }));
104
+ });
105
+ }
106
+ async deleteEndpoint(orgId, id) {
107
+ await this.run(orgId, (tx) => tx.webhookEndpoint.deleteMany({ where: { id, orgId } }));
108
+ }
109
+ enabledEndpoints(orgId, filter) {
110
+ return this.run(orgId, (tx) => tx.webhookEndpoint.findMany({ where: { ...endpointWhere(orgId, filter), enabled: true } }));
111
+ }
112
+ disableEndpoint(orgId, id, reason) {
113
+ return this.run(orgId, async (tx) => {
114
+ const result = await tx.webhookEndpoint.updateMany({ where: { id, orgId, enabled: true }, data: { enabled: false, disabledReason: reason } });
115
+ return result.count === 1;
116
+ });
117
+ }
118
+ loadOwner(orgId, userId) {
119
+ return this.run(orgId, (tx) => tx.user.findUnique({ where: { id: userId }, include: index_2.PRINCIPAL_USER_INCLUDE }));
120
+ }
121
+ insertDeliveries(orgId, rows) {
122
+ if (rows.length === 0)
123
+ return Promise.resolve([]);
124
+ return this.run(orgId, async (tx) => {
125
+ const inserted = await tx.webhookDelivery.createManyAndReturn({
126
+ data: rows.map((row) => ({ ...row, orgId, payload: row.payload })),
127
+ skipDuplicates: true,
128
+ });
129
+ for (const delivery of inserted)
130
+ await this.enqueue(tx, orgId, delivery.id, 'upload', undefined);
131
+ return inserted;
132
+ });
133
+ }
134
+ enqueue(tx, orgId, deliveryId, reason, scheduledFor) {
135
+ return this.jobs.enqueueWithin(tx, {
136
+ type: webhooks_constants_1.WEBHOOK_DELIVER_JOB_TYPE,
137
+ reason,
138
+ subjectType: webhooks_constants_1.WEBHOOK_DELIVERY_SUBJECT_TYPE,
139
+ subjectId: deliveryId,
140
+ orgId,
141
+ payload: { deliveryId },
142
+ ...(scheduledFor ? { scheduledFor } : {}),
143
+ // A retry is enqueued while the current attempt's job is still running: the dedup key (type + subject) would collapse onto it.
144
+ skipDedup: true,
145
+ });
146
+ }
147
+ findDelivery(orgId, id, filter) {
148
+ return this.run(orgId, (tx) => tx.webhookDelivery.findFirst({
149
+ where: {
150
+ id,
151
+ orgId,
152
+ endpoint: { is: { ...endpointWhere(orgId, filter) } },
153
+ },
154
+ }));
155
+ }
156
+ loadDeliveryForJob(orgId, id) {
157
+ return this.run(orgId, async (tx) => {
158
+ const delivery = await tx.webhookDelivery.findFirst({ where: { id, orgId } });
159
+ if (!delivery)
160
+ return null;
161
+ const endpoint = await tx.webhookEndpoint.findFirst({ where: { id: delivery.endpointId, orgId } });
162
+ return { delivery, endpoint };
163
+ });
164
+ }
165
+ listDeliveries(orgId, endpointId, query) {
166
+ const where = {
167
+ orgId,
168
+ endpointId,
169
+ ...(query.status ? { status: query.status } : {}),
170
+ ...(query.eventKey ? { eventKey: query.eventKey } : {}),
171
+ };
172
+ return this.run(orgId, async (tx) => {
173
+ const [items, total] = [
174
+ await tx.webhookDelivery.findMany({ where, orderBy: { createdAt: 'desc' }, skip: (query.page - 1) * query.pageSize, take: query.pageSize }),
175
+ await tx.webhookDelivery.count({ where }),
176
+ ];
177
+ return { items, total };
178
+ });
179
+ }
180
+ markDelivering(orgId, id) {
181
+ return this.run(orgId, async (tx) => {
182
+ await tx.webhookDelivery.updateMany({ where: { id, orgId }, data: { status: 'delivering', attempt: { increment: 1 }, nextAttemptAt: null } });
183
+ return (await tx.webhookDelivery.findFirst({ where: { id, orgId } }));
184
+ });
185
+ }
186
+ settleAttempt(orgId, deliveryId, endpointId, outcome) {
187
+ return this.run(orgId, async (tx) => {
188
+ await tx.webhookDelivery.updateMany({ where: { id: deliveryId, orgId }, data: outcome.delivery });
189
+ const now = new Date();
190
+ let endpoint = null;
191
+ let disabled = false;
192
+ if (outcome.endpoint === 'success') {
193
+ await tx.webhookEndpoint.updateMany({ where: { id: endpointId, orgId }, data: { consecutiveFailures: 0, lastDeliveryAt: now, lastSuccessAt: now } });
194
+ endpoint = await tx.webhookEndpoint.findFirst({ where: { id: endpointId, orgId } });
195
+ }
196
+ else if (outcome.endpoint === 'failure') {
197
+ await tx.webhookEndpoint.updateMany({ where: { id: endpointId, orgId }, data: { consecutiveFailures: { increment: 1 }, lastDeliveryAt: now } });
198
+ endpoint = await tx.webhookEndpoint.findFirst({ where: { id: endpointId, orgId } });
199
+ const reason = outcome.disableNow ?? (endpoint && endpoint.consecutiveFailures >= outcome.threshold ? 'circuit_open' : undefined);
200
+ if (endpoint && reason) {
201
+ const result = await tx.webhookEndpoint.updateMany({ where: { id: endpointId, orgId, enabled: true }, data: { enabled: false, disabledReason: reason } });
202
+ disabled = result.count === 1;
203
+ if (disabled)
204
+ endpoint = await tx.webhookEndpoint.findFirst({ where: { id: endpointId, orgId } });
205
+ }
206
+ }
207
+ if (outcome.retryAt)
208
+ await this.enqueue(tx, orgId, deliveryId, 'rerun', outcome.retryAt);
209
+ return { endpoint, disabled };
210
+ });
211
+ }
212
+ resetForRedelivery(orgId, id) {
213
+ return this.run(orgId, async (tx) => {
214
+ await tx.webhookDelivery.updateMany({
215
+ where: { id, orgId },
216
+ data: { status: 'pending', attempt: 0, responseStatus: null, responseSnippet: null, errorCode: null, durationMs: null, nextAttemptAt: null, deliveredAt: null },
217
+ });
218
+ await this.enqueue(tx, orgId, id, 'rerun', undefined);
219
+ return (await tx.webhookDelivery.findFirst({ where: { id, orgId } }));
220
+ });
221
+ }
222
+ async purgeDeliveriesBefore(cutoff) {
223
+ let deleted = 0;
224
+ for (let batch = 0; batch < webhooks_constants_1.WEBHOOK_PURGE_MAX_BATCHES; batch += 1) {
225
+ const count = await this.system.runAsSystem(SYSTEM_RETENTION_REASON, async (tx) => {
226
+ const rows = await tx.webhookDelivery.findMany({ where: { createdAt: { lt: cutoff } }, select: { id: true }, orderBy: { createdAt: 'asc' }, take: webhooks_constants_1.WEBHOOK_PURGE_BATCH });
227
+ if (rows.length === 0)
228
+ return 0;
229
+ const result = await tx.webhookDelivery.deleteMany({ where: { id: { in: rows.map((row) => row.id) } } });
230
+ return result.count;
231
+ });
232
+ deleted += count;
233
+ if (count < webhooks_constants_1.WEBHOOK_PURGE_BATCH)
234
+ break;
235
+ }
236
+ return deleted;
237
+ }
238
+ };
239
+ exports.PrismaWebhooksRepository = PrismaWebhooksRepository;
240
+ exports.PrismaWebhooksRepository = PrismaWebhooksRepository = __decorate([
241
+ (0, common_1.Injectable)(),
242
+ __param(0, (0, common_1.Inject)(index_1.PLATFORM_PRISMA)),
243
+ __param(1, (0, common_1.Inject)(ports_1.WEBHOOKS_SYSTEM_PRISMA)),
244
+ __metadata("design:paramtypes", [Object, Object, index_3.JobsService])
245
+ ], PrismaWebhooksRepository);
246
+ //# sourceMappingURL=webhooks.repository.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"webhooks.repository.js","sourceRoot":"","sources":["../../src/webhooks/webhooks.repository.ts"],"names":[],"mappings":"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"}