@marinoscar/platform-api 0.1.0-next.19 → 0.1.0-next.21
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +24 -0
- package/README.md +1 -0
- package/dist/alerts/alerts-admin.controller.d.ts +40 -0
- package/dist/alerts/alerts-admin.controller.d.ts.map +1 -0
- package/dist/alerts/alerts-admin.controller.js +297 -0
- package/dist/alerts/alerts-admin.controller.js.map +1 -0
- package/dist/alerts/alerts-context.service.d.ts +64 -0
- package/dist/alerts/alerts-context.service.d.ts.map +1 -0
- package/dist/alerts/alerts-context.service.js +190 -0
- package/dist/alerts/alerts-context.service.js.map +1 -0
- package/dist/alerts/alerts-dispatch.service.d.ts +53 -0
- package/dist/alerts/alerts-dispatch.service.d.ts.map +1 -0
- package/dist/alerts/alerts-dispatch.service.js +135 -0
- package/dist/alerts/alerts-dispatch.service.js.map +1 -0
- package/dist/alerts/alerts-evaluation.service.d.ts +88 -0
- package/dist/alerts/alerts-evaluation.service.d.ts.map +1 -0
- package/dist/alerts/alerts-evaluation.service.js +296 -0
- package/dist/alerts/alerts-evaluation.service.js.map +1 -0
- package/dist/alerts/alerts-event.listener.d.ts +22 -0
- package/dist/alerts/alerts-event.listener.d.ts.map +1 -0
- package/dist/alerts/alerts-event.listener.js +72 -0
- package/dist/alerts/alerts-event.listener.js.map +1 -0
- package/dist/alerts/alerts-incidents.service.d.ts +86 -0
- package/dist/alerts/alerts-incidents.service.d.ts.map +1 -0
- package/dist/alerts/alerts-incidents.service.js +144 -0
- package/dist/alerts/alerts-incidents.service.js.map +1 -0
- package/dist/alerts/alerts-rules.service.d.ts +73 -0
- package/dist/alerts/alerts-rules.service.d.ts.map +1 -0
- package/dist/alerts/alerts-rules.service.js +205 -0
- package/dist/alerts/alerts-rules.service.js.map +1 -0
- package/dist/alerts/alerts-seed.service.d.ts +25 -0
- package/dist/alerts/alerts-seed.service.d.ts.map +1 -0
- package/dist/alerts/alerts-seed.service.js +82 -0
- package/dist/alerts/alerts-seed.service.js.map +1 -0
- package/dist/alerts/alerts.constants.d.ts +53 -0
- package/dist/alerts/alerts.constants.d.ts.map +1 -0
- package/dist/alerts/alerts.constants.js +57 -0
- package/dist/alerts/alerts.constants.js.map +1 -0
- package/dist/alerts/alerts.errors.d.ts +44 -0
- package/dist/alerts/alerts.errors.d.ts.map +1 -0
- package/dist/alerts/alerts.errors.js +47 -0
- package/dist/alerts/alerts.errors.js.map +1 -0
- package/dist/alerts/alerts.metrics.d.ts +60 -0
- package/dist/alerts/alerts.metrics.d.ts.map +1 -0
- package/dist/alerts/alerts.metrics.js +135 -0
- package/dist/alerts/alerts.metrics.js.map +1 -0
- package/dist/alerts/alerts.module.d.ts +35 -0
- package/dist/alerts/alerts.module.d.ts.map +1 -0
- package/dist/alerts/alerts.module.js +96 -0
- package/dist/alerts/alerts.module.js.map +1 -0
- package/dist/alerts/alerts.options.d.ts +64 -0
- package/dist/alerts/alerts.options.d.ts.map +1 -0
- package/dist/alerts/alerts.options.js +34 -0
- package/dist/alerts/alerts.options.js.map +1 -0
- package/dist/alerts/alerts.permissions.d.ts +27 -0
- package/dist/alerts/alerts.permissions.d.ts.map +1 -0
- package/dist/alerts/alerts.permissions.js +29 -0
- package/dist/alerts/alerts.permissions.js.map +1 -0
- package/dist/alerts/alerts.types.d.ts +182 -0
- package/dist/alerts/alerts.types.d.ts.map +1 -0
- package/dist/alerts/alerts.types.js +3 -0
- package/dist/alerts/alerts.types.js.map +1 -0
- package/dist/alerts/data/alerts-db.d.ts +169 -0
- package/dist/alerts/data/alerts-db.d.ts.map +1 -0
- package/dist/alerts/data/alerts-db.js +18 -0
- package/dist/alerts/data/alerts-db.js.map +1 -0
- package/dist/alerts/dto/alerts.dto.d.ts +132 -0
- package/dist/alerts/dto/alerts.dto.d.ts.map +1 -0
- package/dist/alerts/dto/alerts.dto.js +42 -0
- package/dist/alerts/dto/alerts.dto.js.map +1 -0
- package/dist/alerts/handlers/alerts-evaluate-event.handler.d.ts +23 -0
- package/dist/alerts/handlers/alerts-evaluate-event.handler.d.ts.map +1 -0
- package/dist/alerts/handlers/alerts-evaluate-event.handler.js +71 -0
- package/dist/alerts/handlers/alerts-evaluate-event.handler.js.map +1 -0
- package/dist/alerts/handlers/alerts-evaluate.handler.d.ts +25 -0
- package/dist/alerts/handlers/alerts-evaluate.handler.d.ts.map +1 -0
- package/dist/alerts/handlers/alerts-evaluate.handler.js +54 -0
- package/dist/alerts/handlers/alerts-evaluate.handler.js.map +1 -0
- package/dist/alerts/handlers/alerts-incidents-purge.handler.d.ts +29 -0
- package/dist/alerts/handlers/alerts-incidents-purge.handler.d.ts.map +1 -0
- package/dist/alerts/handlers/alerts-incidents-purge.handler.js +76 -0
- package/dist/alerts/handlers/alerts-incidents-purge.handler.js.map +1 -0
- package/dist/alerts/index.d.ts +45 -0
- package/dist/alerts/index.d.ts.map +1 -0
- package/dist/alerts/index.js +108 -0
- package/dist/alerts/index.js.map +1 -0
- package/dist/alerts/kinds/alert-kind.registry.d.ts +33 -0
- package/dist/alerts/kinds/alert-kind.registry.d.ts.map +1 -0
- package/dist/alerts/kinds/alert-kind.registry.js +63 -0
- package/dist/alerts/kinds/alert-kind.registry.js.map +1 -0
- package/dist/alerts/kinds/builtin-kinds.d.ts +18 -0
- package/dist/alerts/kinds/builtin-kinds.d.ts.map +1 -0
- package/dist/alerts/kinds/builtin-kinds.js +33 -0
- package/dist/alerts/kinds/builtin-kinds.js.map +1 -0
- package/dist/alerts/kinds/metric-threshold.kind.d.ts +11 -0
- package/dist/alerts/kinds/metric-threshold.kind.d.ts.map +1 -0
- package/dist/alerts/kinds/metric-threshold.kind.js +63 -0
- package/dist/alerts/kinds/metric-threshold.kind.js.map +1 -0
- package/dist/alerts/kinds/metric-threshold.sql.d.ts +41 -0
- package/dist/alerts/kinds/metric-threshold.sql.d.ts.map +1 -0
- package/dist/alerts/kinds/metric-threshold.sql.js +124 -0
- package/dist/alerts/kinds/metric-threshold.sql.js.map +1 -0
- package/dist/alerts/kinds/node-event.kind.d.ts +44 -0
- package/dist/alerts/kinds/node-event.kind.d.ts.map +1 -0
- package/dist/alerts/kinds/node-event.kind.js +113 -0
- package/dist/alerts/kinds/node-event.kind.js.map +1 -0
- package/dist/alerts/kinds/node-offline.kind.d.ts +11 -0
- package/dist/alerts/kinds/node-offline.kind.d.ts.map +1 -0
- package/dist/alerts/kinds/node-offline.kind.js +41 -0
- package/dist/alerts/kinds/node-offline.kind.js.map +1 -0
- package/dist/alerts/kinds/telemetry-unavailable.kind.d.ts +11 -0
- package/dist/alerts/kinds/telemetry-unavailable.kind.d.ts.map +1 -0
- package/dist/alerts/kinds/telemetry-unavailable.kind.js +40 -0
- package/dist/alerts/kinds/telemetry-unavailable.kind.js.map +1 -0
- package/dist/alerts/kinds/verdict.kind.d.ts +13 -0
- package/dist/alerts/kinds/verdict.kind.d.ts.map +1 -0
- package/dist/alerts/kinds/verdict.kind.js +34 -0
- package/dist/alerts/kinds/verdict.kind.js.map +1 -0
- package/dist/alerts/notifications/alerts.notifications.d.ts +77 -0
- package/dist/alerts/notifications/alerts.notifications.d.ts.map +1 -0
- package/dist/alerts/notifications/alerts.notifications.js +145 -0
- package/dist/alerts/notifications/alerts.notifications.js.map +1 -0
- package/dist/alerts/starter-rules.d.ts +21 -0
- package/dist/alerts/starter-rules.d.ts.map +1 -0
- package/dist/alerts/starter-rules.js +141 -0
- package/dist/alerts/starter-rules.js.map +1 -0
- package/dist/alerts/state/alert-state-machine.d.ts +92 -0
- package/dist/alerts/state/alert-state-machine.d.ts.map +1 -0
- package/dist/alerts/state/alert-state-machine.js +96 -0
- package/dist/alerts/state/alert-state-machine.js.map +1 -0
- package/dist/alerts/tasks/alerts-evaluate.task.d.ts +18 -0
- package/dist/alerts/tasks/alerts-evaluate.task.d.ts.map +1 -0
- package/dist/alerts/tasks/alerts-evaluate.task.js +61 -0
- package/dist/alerts/tasks/alerts-evaluate.task.js.map +1 -0
- package/dist/alerts/tasks/alerts-purge.task.d.ts +15 -0
- package/dist/alerts/tasks/alerts-purge.task.d.ts.map +1 -0
- package/dist/alerts/tasks/alerts-purge.task.js +58 -0
- package/dist/alerts/tasks/alerts-purge.task.js.map +1 -0
- package/dist/alerts/testing/conformance.d.ts +58 -0
- package/dist/alerts/testing/conformance.d.ts.map +1 -0
- package/dist/alerts/testing/conformance.js +198 -0
- package/dist/alerts/testing/conformance.js.map +1 -0
- package/dist/alerts/testing/fakes.d.ts +80 -0
- package/dist/alerts/testing/fakes.d.ts.map +1 -0
- package/dist/alerts/testing/fakes.js +230 -0
- package/dist/alerts/testing/fakes.js.map +1 -0
- package/dist/alerts/testing/index.d.ts +5 -0
- package/dist/alerts/testing/index.d.ts.map +1 -0
- package/dist/alerts/testing/index.js +15 -0
- package/dist/alerts/testing/index.js.map +1 -0
- package/dist/core/index.d.ts +1 -0
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js +8 -2
- package/dist/core/index.js.map +1 -1
- package/dist/core/net/ip-classify.d.ts +39 -0
- package/dist/core/net/ip-classify.d.ts.map +1 -0
- package/dist/core/net/ip-classify.js +196 -0
- package/dist/core/net/ip-classify.js.map +1 -0
- package/dist/credentials/testing/conformance.d.ts.map +1 -1
- package/dist/credentials/testing/conformance.js +1 -0
- package/dist/credentials/testing/conformance.js.map +1 -1
- package/dist/jobs/data/jobs-db.d.ts +26 -0
- package/dist/jobs/data/jobs-db.d.ts.map +1 -1
- package/dist/jobs/index.d.ts +1 -1
- package/dist/jobs/index.d.ts.map +1 -1
- package/dist/jobs/index.js.map +1 -1
- package/dist/manifest/platform-model-ownership.d.ts +1 -1
- package/dist/manifest/platform-model-ownership.d.ts.map +1 -1
- package/dist/manifest/platform-model-ownership.js +30 -1
- package/dist/manifest/platform-model-ownership.js.map +1 -1
- package/dist/manifest/platform-permissions.d.ts +6 -2
- package/dist/manifest/platform-permissions.d.ts.map +1 -1
- package/dist/manifest/platform-permissions.js +56 -44
- package/dist/manifest/platform-permissions.js.map +1 -1
- package/dist/manifest/platform-user-owned-models.d.ts.map +1 -1
- package/dist/manifest/platform-user-owned-models.js +16 -0
- package/dist/manifest/platform-user-owned-models.js.map +1 -1
- package/dist/nodes/dto/node-admin.dto.d.ts +5 -0
- package/dist/nodes/dto/node-admin.dto.d.ts.map +1 -1
- package/dist/nodes/dto/node-admin.dto.js +19 -0
- package/dist/nodes/dto/node-admin.dto.js.map +1 -1
- package/dist/nodes/dto/node-control-plane.dto.d.ts +26 -0
- package/dist/nodes/dto/node-control-plane.dto.d.ts.map +1 -1
- package/dist/nodes/dto/node-event.dto.d.ts +100 -0
- package/dist/nodes/dto/node-event.dto.d.ts.map +1 -0
- package/dist/nodes/dto/node-event.dto.js +239 -0
- package/dist/nodes/dto/node-event.dto.js.map +1 -0
- package/dist/nodes/dto/node-response.dto.d.ts +21 -0
- package/dist/nodes/dto/node-response.dto.d.ts.map +1 -1
- package/dist/nodes/dto/node-response.dto.js +42 -1
- package/dist/nodes/dto/node-response.dto.js.map +1 -1
- package/dist/nodes/events/node-event.event.d.ts +41 -0
- package/dist/nodes/events/node-event.event.d.ts.map +1 -0
- package/dist/nodes/events/node-event.event.js +69 -0
- package/dist/nodes/events/node-event.event.js.map +1 -0
- package/dist/nodes/handlers/node-events-purge.handler.d.ts +31 -0
- package/dist/nodes/handlers/node-events-purge.handler.d.ts.map +1 -0
- package/dist/nodes/handlers/node-events-purge.handler.js +91 -0
- package/dist/nodes/handlers/node-events-purge.handler.js.map +1 -0
- package/dist/nodes/index.d.ts +11 -4
- package/dist/nodes/index.d.ts.map +1 -1
- package/dist/nodes/index.js +20 -1
- package/dist/nodes/index.js.map +1 -1
- package/dist/nodes/node-events.service.d.ts +87 -0
- package/dist/nodes/node-events.service.d.ts.map +1 -0
- package/dist/nodes/node-events.service.js +271 -0
- package/dist/nodes/node-events.service.js.map +1 -0
- package/dist/nodes/node-fleet-metrics.service.d.ts +10 -1
- package/dist/nodes/node-fleet-metrics.service.d.ts.map +1 -1
- package/dist/nodes/node-fleet-metrics.service.js +31 -0
- package/dist/nodes/node-fleet-metrics.service.js.map +1 -1
- package/dist/nodes/node-lifecycle.service.d.ts +16 -1
- package/dist/nodes/node-lifecycle.service.d.ts.map +1 -1
- package/dist/nodes/node-lifecycle.service.js +7 -0
- package/dist/nodes/node-lifecycle.service.js.map +1 -1
- package/dist/nodes/nodes-admin.controller.d.ts +5 -1
- package/dist/nodes/nodes-admin.controller.d.ts.map +1 -1
- package/dist/nodes/nodes-admin.controller.js +32 -2
- package/dist/nodes/nodes-admin.controller.js.map +1 -1
- package/dist/nodes/nodes.controller.d.ts +7 -3
- package/dist/nodes/nodes.controller.d.ts.map +1 -1
- package/dist/nodes/nodes.controller.js +46 -6
- package/dist/nodes/nodes.controller.js.map +1 -1
- package/dist/nodes/nodes.metrics.d.ts +23 -1
- package/dist/nodes/nodes.metrics.d.ts.map +1 -1
- package/dist/nodes/nodes.metrics.js +80 -1
- package/dist/nodes/nodes.metrics.js.map +1 -1
- package/dist/nodes/nodes.module.d.ts.map +1 -1
- package/dist/nodes/nodes.module.js +6 -0
- package/dist/nodes/nodes.module.js.map +1 -1
- package/dist/nodes/nodes.options.d.ts +17 -0
- package/dist/nodes/nodes.options.d.ts.map +1 -1
- package/dist/nodes/nodes.options.js +13 -2
- package/dist/nodes/nodes.options.js.map +1 -1
- package/dist/nodes/nodes.service.d.ts +3 -1
- package/dist/nodes/nodes.service.d.ts.map +1 -1
- package/dist/nodes/nodes.service.js +14 -3
- package/dist/nodes/nodes.service.js.map +1 -1
- package/dist/nodes/tasks/node-events-purge.task.d.ts +13 -0
- package/dist/nodes/tasks/node-events-purge.task.d.ts.map +1 -0
- package/dist/nodes/tasks/node-events-purge.task.js +73 -0
- package/dist/nodes/tasks/node-events-purge.task.js.map +1 -0
- package/dist/telemetry/dashboard/telemetry-dashboard.service.d.ts +30 -8
- package/dist/telemetry/dashboard/telemetry-dashboard.service.d.ts.map +1 -1
- package/dist/telemetry/dashboard/telemetry-dashboard.service.js +12 -0
- package/dist/telemetry/dashboard/telemetry-dashboard.service.js.map +1 -1
- package/dist/telemetry/dashboard/telemetry-dashboard.verdict.d.ts +15 -0
- package/dist/telemetry/dashboard/telemetry-dashboard.verdict.d.ts.map +1 -1
- package/dist/telemetry/dashboard/telemetry-dashboard.verdict.js +17 -2
- package/dist/telemetry/dashboard/telemetry-dashboard.verdict.js.map +1 -1
- package/dist/telemetry/dto/telemetry-dashboard.dto.d.ts +3 -3
- package/dist/telemetry/index.d.ts +4 -2
- package/dist/telemetry/index.d.ts.map +1 -1
- package/dist/telemetry/index.js +4 -1
- package/dist/telemetry/index.js.map +1 -1
- package/dist/telemetry/metrics/groups/nodes.metric-group.d.ts.map +1 -1
- package/dist/telemetry/metrics/groups/nodes.metric-group.js +77 -0
- package/dist/telemetry/metrics/groups/nodes.metric-group.js.map +1 -1
- package/dist/telemetry/metrics/metric-verdict.d.ts +1 -1
- package/dist/telemetry/metrics/metric-verdict.d.ts.map +1 -1
- package/dist/telemetry/metrics/metric-verdict.js +15 -1
- package/dist/telemetry/metrics/metric-verdict.js.map +1 -1
- package/dist/telemetry/query/telemetry-query-facade.d.ts +1 -1
- package/dist/telemetry/query/telemetry-query-facade.d.ts.map +1 -1
- package/dist/telemetry/query/telemetry-query-facade.js.map +1 -1
- package/dist/telemetry/query/telemetry-query.service.d.ts +2 -2
- package/dist/telemetry/query/telemetry-query.service.d.ts.map +1 -1
- package/dist/telemetry/query/telemetry-query.service.js +4 -0
- package/dist/telemetry/query/telemetry-query.service.js.map +1 -1
- package/dist/telemetry/stack/dto/telemetry-stack.dto.d.ts +1 -1
- package/dist/telemetry/telemetry-support-bundle.section.d.ts +4 -4
- package/dist/telemetry/telemetry.module.d.ts.map +1 -1
- package/dist/telemetry/telemetry.module.js +1 -0
- package/dist/telemetry/telemetry.module.js.map +1 -1
- package/dist/telemetry/testing/metric-schema.fixture.d.ts.map +1 -1
- package/dist/telemetry/testing/metric-schema.fixture.js +56 -0
- package/dist/telemetry/testing/metric-schema.fixture.js.map +1 -1
- package/dist/user-data/platform-user-data.d.ts.map +1 -1
- package/dist/user-data/platform-user-data.js +2 -0
- package/dist/user-data/platform-user-data.js.map +1 -1
- package/dist/webhooks/data/webhooks-db.d.ts +176 -0
- package/dist/webhooks/data/webhooks-db.d.ts.map +1 -0
- package/dist/webhooks/data/webhooks-db.js +14 -0
- package/dist/webhooks/data/webhooks-db.js.map +1 -0
- package/dist/webhooks/egress/egress-guard.d.ts +99 -0
- package/dist/webhooks/egress/egress-guard.d.ts.map +1 -0
- package/dist/webhooks/egress/egress-guard.js +172 -0
- package/dist/webhooks/egress/egress-guard.js.map +1 -0
- package/dist/webhooks/egress/transport.d.ts +58 -0
- package/dist/webhooks/egress/transport.d.ts.map +1 -0
- package/dist/webhooks/egress/transport.js +115 -0
- package/dist/webhooks/egress/transport.js.map +1 -0
- package/dist/webhooks/handlers/webhook-deliver.handler.d.ts +76 -0
- package/dist/webhooks/handlers/webhook-deliver.handler.d.ts.map +1 -0
- package/dist/webhooks/handlers/webhook-deliver.handler.js +333 -0
- package/dist/webhooks/handlers/webhook-deliver.handler.js.map +1 -0
- package/dist/webhooks/handlers/webhook-fanout.handler.d.ts +28 -0
- package/dist/webhooks/handlers/webhook-fanout.handler.d.ts.map +1 -0
- package/dist/webhooks/handlers/webhook-fanout.handler.js +73 -0
- package/dist/webhooks/handlers/webhook-fanout.handler.js.map +1 -0
- package/dist/webhooks/handlers/webhook-purge.handler.d.ts +33 -0
- package/dist/webhooks/handlers/webhook-purge.handler.d.ts.map +1 -0
- package/dist/webhooks/handlers/webhook-purge.handler.js +77 -0
- package/dist/webhooks/handlers/webhook-purge.handler.js.map +1 -0
- package/dist/webhooks/http/admin-webhooks.controller.d.ts +36 -0
- package/dist/webhooks/http/admin-webhooks.controller.d.ts.map +1 -0
- package/dist/webhooks/http/admin-webhooks.controller.js +250 -0
- package/dist/webhooks/http/admin-webhooks.controller.js.map +1 -0
- package/dist/webhooks/http/org-webhooks.controller.d.ts +36 -0
- package/dist/webhooks/http/org-webhooks.controller.d.ts.map +1 -0
- package/dist/webhooks/http/org-webhooks.controller.js +249 -0
- package/dist/webhooks/http/org-webhooks.controller.js.map +1 -0
- package/dist/webhooks/http/scope-context.d.ts +17 -0
- package/dist/webhooks/http/scope-context.d.ts.map +1 -0
- package/dist/webhooks/http/scope-context.js +28 -0
- package/dist/webhooks/http/scope-context.js.map +1 -0
- package/dist/webhooks/http/webhook.dto.d.ts +174 -0
- package/dist/webhooks/http/webhook.dto.d.ts.map +1 -0
- package/dist/webhooks/http/webhook.dto.js +58 -0
- package/dist/webhooks/http/webhook.dto.js.map +1 -0
- package/dist/webhooks/http/webhooks.controller.d.ts +36 -0
- package/dist/webhooks/http/webhooks.controller.d.ts.map +1 -0
- package/dist/webhooks/http/webhooks.controller.js +243 -0
- package/dist/webhooks/http/webhooks.controller.js.map +1 -0
- package/dist/webhooks/index.d.ts +43 -0
- package/dist/webhooks/index.d.ts.map +1 -0
- package/dist/webhooks/index.js +147 -0
- package/dist/webhooks/index.js.map +1 -0
- package/dist/webhooks/listeners/webhook-event.listeners.d.ts +23 -0
- package/dist/webhooks/listeners/webhook-event.listeners.d.ts.map +1 -0
- package/dist/webhooks/listeners/webhook-event.listeners.js +120 -0
- package/dist/webhooks/listeners/webhook-event.listeners.js.map +1 -0
- package/dist/webhooks/notifications/webhook-notification.channel.d.ts +31 -0
- package/dist/webhooks/notifications/webhook-notification.channel.d.ts.map +1 -0
- package/dist/webhooks/notifications/webhook-notification.channel.js +127 -0
- package/dist/webhooks/notifications/webhook-notification.channel.js.map +1 -0
- package/dist/webhooks/notifications/webhook-notifications.d.ts +98 -0
- package/dist/webhooks/notifications/webhook-notifications.d.ts.map +1 -0
- package/dist/webhooks/notifications/webhook-notifications.js +150 -0
- package/dist/webhooks/notifications/webhook-notifications.js.map +1 -0
- package/dist/webhooks/ports.d.ts +29 -0
- package/dist/webhooks/ports.d.ts.map +1 -0
- package/dist/webhooks/ports.js +23 -0
- package/dist/webhooks/ports.js.map +1 -0
- package/dist/webhooks/registry/builtin-events.d.ts +57 -0
- package/dist/webhooks/registry/builtin-events.d.ts.map +1 -0
- package/dist/webhooks/registry/builtin-events.js +113 -0
- package/dist/webhooks/registry/builtin-events.js.map +1 -0
- package/dist/webhooks/registry/webhook-catalog.d.ts +63 -0
- package/dist/webhooks/registry/webhook-catalog.d.ts.map +1 -0
- package/dist/webhooks/registry/webhook-catalog.js +123 -0
- package/dist/webhooks/registry/webhook-catalog.js.map +1 -0
- package/dist/webhooks/registry/webhook-event.registry.d.ts +116 -0
- package/dist/webhooks/registry/webhook-event.registry.d.ts.map +1 -0
- package/dist/webhooks/registry/webhook-event.registry.js +152 -0
- package/dist/webhooks/registry/webhook-event.registry.js.map +1 -0
- package/dist/webhooks/signing.d.ts +31 -0
- package/dist/webhooks/signing.d.ts.map +1 -0
- package/dist/webhooks/signing.js +48 -0
- package/dist/webhooks/signing.js.map +1 -0
- package/dist/webhooks/tasks/webhook-purge.task.d.ts +17 -0
- package/dist/webhooks/tasks/webhook-purge.task.d.ts.map +1 -0
- package/dist/webhooks/tasks/webhook-purge.task.js +68 -0
- package/dist/webhooks/tasks/webhook-purge.task.js.map +1 -0
- package/dist/webhooks/testing/conformance.d.ts +61 -0
- package/dist/webhooks/testing/conformance.d.ts.map +1 -0
- package/dist/webhooks/testing/conformance.js +316 -0
- package/dist/webhooks/testing/conformance.js.map +1 -0
- package/dist/webhooks/testing/in-memory.d.ts +156 -0
- package/dist/webhooks/testing/in-memory.d.ts.map +1 -0
- package/dist/webhooks/testing/in-memory.js +323 -0
- package/dist/webhooks/testing/in-memory.js.map +1 -0
- package/dist/webhooks/testing/index.d.ts +7 -0
- package/dist/webhooks/testing/index.d.ts.map +1 -0
- package/dist/webhooks/testing/index.js +25 -0
- package/dist/webhooks/testing/index.js.map +1 -0
- package/dist/webhooks/testing/kit.d.ts +86 -0
- package/dist/webhooks/testing/kit.d.ts.map +1 -0
- package/dist/webhooks/testing/kit.js +113 -0
- package/dist/webhooks/testing/kit.js.map +1 -0
- package/dist/webhooks/webhook-endpoints.service.d.ts +142 -0
- package/dist/webhooks/webhook-endpoints.service.d.ts.map +1 -0
- package/dist/webhooks/webhook-endpoints.service.js +366 -0
- package/dist/webhooks/webhook-endpoints.service.js.map +1 -0
- package/dist/webhooks/webhook-envelope.d.ts +36 -0
- package/dist/webhooks/webhook-envelope.d.ts.map +1 -0
- package/dist/webhooks/webhook-envelope.js +46 -0
- package/dist/webhooks/webhook-envelope.js.map +1 -0
- package/dist/webhooks/webhook-secrets.service.d.ts +49 -0
- package/dist/webhooks/webhook-secrets.service.d.ts.map +1 -0
- package/dist/webhooks/webhook-secrets.service.js +118 -0
- package/dist/webhooks/webhook-secrets.service.js.map +1 -0
- package/dist/webhooks/webhook-views.d.ts +34 -0
- package/dist/webhooks/webhook-views.d.ts.map +1 -0
- package/dist/webhooks/webhook-views.js +83 -0
- package/dist/webhooks/webhook-views.js.map +1 -0
- package/dist/webhooks/webhooks.access.d.ts +28 -0
- package/dist/webhooks/webhooks.access.d.ts.map +1 -0
- package/dist/webhooks/webhooks.access.js +55 -0
- package/dist/webhooks/webhooks.access.js.map +1 -0
- package/dist/webhooks/webhooks.constants.d.ts +73 -0
- package/dist/webhooks/webhooks.constants.d.ts.map +1 -0
- package/dist/webhooks/webhooks.constants.js +100 -0
- package/dist/webhooks/webhooks.constants.js.map +1 -0
- package/dist/webhooks/webhooks.credentials.d.ts +28 -0
- package/dist/webhooks/webhooks.credentials.d.ts.map +1 -0
- package/dist/webhooks/webhooks.credentials.js +51 -0
- package/dist/webhooks/webhooks.credentials.js.map +1 -0
- package/dist/webhooks/webhooks.errors.d.ts +25 -0
- package/dist/webhooks/webhooks.errors.d.ts.map +1 -0
- package/dist/webhooks/webhooks.errors.js +65 -0
- package/dist/webhooks/webhooks.errors.js.map +1 -0
- package/dist/webhooks/webhooks.metrics.d.ts +24 -0
- package/dist/webhooks/webhooks.metrics.d.ts.map +1 -0
- package/dist/webhooks/webhooks.metrics.js +70 -0
- package/dist/webhooks/webhooks.metrics.js.map +1 -0
- package/dist/webhooks/webhooks.module.d.ts +29 -0
- package/dist/webhooks/webhooks.module.d.ts.map +1 -0
- package/dist/webhooks/webhooks.module.js +108 -0
- package/dist/webhooks/webhooks.module.js.map +1 -0
- package/dist/webhooks/webhooks.options.d.ts +119 -0
- package/dist/webhooks/webhooks.options.d.ts.map +1 -0
- package/dist/webhooks/webhooks.options.js +80 -0
- package/dist/webhooks/webhooks.options.js.map +1 -0
- package/dist/webhooks/webhooks.permissions.d.ts +47 -0
- package/dist/webhooks/webhooks.permissions.d.ts.map +1 -0
- package/dist/webhooks/webhooks.permissions.js +83 -0
- package/dist/webhooks/webhooks.permissions.js.map +1 -0
- package/dist/webhooks/webhooks.repository.d.ts +162 -0
- package/dist/webhooks/webhooks.repository.d.ts.map +1 -0
- package/dist/webhooks/webhooks.repository.js +246 -0
- package/dist/webhooks/webhooks.repository.js.map +1 -0
- package/dist/webhooks/webhooks.service.d.ts +91 -0
- package/dist/webhooks/webhooks.service.d.ts.map +1 -0
- package/dist/webhooks/webhooks.service.js +216 -0
- package/dist/webhooks/webhooks.service.js.map +1 -0
- package/package.json +19 -3
|
@@ -0,0 +1,190 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
12
|
+
return function (target, key) { decorator(target, key, paramIndex); }
|
|
13
|
+
};
|
|
14
|
+
var AlertContextService_1;
|
|
15
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
16
|
+
exports.AlertContextService = void 0;
|
|
17
|
+
exports.toAlertStoreError = toAlertStoreError;
|
|
18
|
+
exports.metricTablesOfSchema = metricTablesOfSchema;
|
|
19
|
+
const common_1 = require("@nestjs/common");
|
|
20
|
+
const index_1 = require("../core/index");
|
|
21
|
+
const index_2 = require("../jobs/index");
|
|
22
|
+
const index_3 = require("../nodes/index");
|
|
23
|
+
const index_4 = require("../telemetry/index");
|
|
24
|
+
const alerts_errors_1 = require("./alerts.errors");
|
|
25
|
+
/** Statements one rule evaluation may run. */
|
|
26
|
+
const STATEMENTS_PER_EVALUATION = 5;
|
|
27
|
+
const UNAVAILABLE_REASONS = new Set([
|
|
28
|
+
index_4.TELEMETRY_ERROR_REASONS.NOT_CONFIGURED,
|
|
29
|
+
index_4.TELEMETRY_ERROR_REASONS.DISABLED,
|
|
30
|
+
index_4.TELEMETRY_ERROR_REASONS.UNREACHABLE,
|
|
31
|
+
index_4.TELEMETRY_ERROR_REASONS.QUERY_TIMEOUT,
|
|
32
|
+
]);
|
|
33
|
+
/**
|
|
34
|
+
* Maps a telemetry failure to the evaluator's vocabulary: a store that cannot
|
|
35
|
+
* be reached is `AlertStoreUnavailableError` (the rule's incidents are left
|
|
36
|
+
* alone); anything else (a refused or failed statement) is the rule's own bug
|
|
37
|
+
* and surfaces as itself.
|
|
38
|
+
*
|
|
39
|
+
* @param error - what the telemetry slice threw.
|
|
40
|
+
* @returns the error to throw.
|
|
41
|
+
*
|
|
42
|
+
* @stability experimental
|
|
43
|
+
*/
|
|
44
|
+
function toAlertStoreError(error) {
|
|
45
|
+
if (error instanceof alerts_errors_1.AlertStoreUnavailableError)
|
|
46
|
+
return error;
|
|
47
|
+
if (error instanceof index_4.TelemetryHttpError && UNAVAILABLE_REASONS.has(error.reason)) {
|
|
48
|
+
return new alerts_errors_1.AlertStoreUnavailableError(describe(error), error);
|
|
49
|
+
}
|
|
50
|
+
return error;
|
|
51
|
+
}
|
|
52
|
+
function describe(error) {
|
|
53
|
+
if (error instanceof index_4.TelemetryHttpError) {
|
|
54
|
+
const body = error.getResponse();
|
|
55
|
+
return body?.message ?? error.message;
|
|
56
|
+
}
|
|
57
|
+
return error instanceof Error ? error.message : String(error);
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Derives the metric tables of a store schema: tables with the dialect's time
|
|
61
|
+
* and value columns, and their tag columns.
|
|
62
|
+
*
|
|
63
|
+
* @param schema - the store's schema.
|
|
64
|
+
* @param dialect - the store's SQL spelling.
|
|
65
|
+
* @returns the tables by name.
|
|
66
|
+
*
|
|
67
|
+
* @stability experimental
|
|
68
|
+
*/
|
|
69
|
+
function metricTablesOfSchema(schema, dialect) {
|
|
70
|
+
const tables = new Map();
|
|
71
|
+
for (const table of schema.tables) {
|
|
72
|
+
const names = new Set(table.columns.map((c) => c.name));
|
|
73
|
+
if (!names.has(dialect.timestampColumn) || !names.has(dialect.valueColumn))
|
|
74
|
+
continue;
|
|
75
|
+
const reported = table.columns.some((c) => c.semanticType);
|
|
76
|
+
const tags = table.columns
|
|
77
|
+
.filter((c) => reported ? String(c.semanticType).toUpperCase() === 'TAG' : c.name !== dialect.timestampColumn && c.name !== dialect.valueColumn)
|
|
78
|
+
.map((c) => c.name)
|
|
79
|
+
.sort();
|
|
80
|
+
tables.set(table.name, { name: table.name, columns: names, tags });
|
|
81
|
+
}
|
|
82
|
+
return tables;
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Builds the {@link AlertEvaluationContext} of one rule evaluation from the
|
|
86
|
+
* app's services. The telemetry, nodes and dashboard services are optional: a
|
|
87
|
+
* kind that needs one that is not installed gets `AlertStoreUnavailableError`.
|
|
88
|
+
*
|
|
89
|
+
* @stability experimental
|
|
90
|
+
*/
|
|
91
|
+
let AlertContextService = AlertContextService_1 = class AlertContextService {
|
|
92
|
+
prisma;
|
|
93
|
+
queries;
|
|
94
|
+
schema;
|
|
95
|
+
dialect;
|
|
96
|
+
dashboard;
|
|
97
|
+
lifecycle;
|
|
98
|
+
logger = new common_1.Logger(AlertContextService_1.name);
|
|
99
|
+
constructor(prisma, queries, schema, dialect, dashboard, lifecycle) {
|
|
100
|
+
this.prisma = prisma;
|
|
101
|
+
this.queries = queries;
|
|
102
|
+
this.schema = schema;
|
|
103
|
+
this.dialect = dialect;
|
|
104
|
+
this.dashboard = dashboard;
|
|
105
|
+
this.lifecycle = lifecycle;
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* The context for one evaluation.
|
|
109
|
+
*
|
|
110
|
+
* @param signal - aborted when the rule's time budget is spent.
|
|
111
|
+
* @param now - the instant the evaluation is for.
|
|
112
|
+
* @returns the context; its lazy members memoise per context.
|
|
113
|
+
*/
|
|
114
|
+
create(signal, now = new Date()) {
|
|
115
|
+
let telemetry = null;
|
|
116
|
+
let verdict = null;
|
|
117
|
+
let stale = null;
|
|
118
|
+
return {
|
|
119
|
+
now,
|
|
120
|
+
signal,
|
|
121
|
+
db: this.prisma,
|
|
122
|
+
telemetry: () => (telemetry ??= this.openTelemetry(signal)),
|
|
123
|
+
verdict: () => (verdict ??= this.readVerdict()),
|
|
124
|
+
staleHeartbeatSeconds: () => (stale ??= this.readStale()),
|
|
125
|
+
};
|
|
126
|
+
}
|
|
127
|
+
async openTelemetry(signal) {
|
|
128
|
+
if (!this.queries || !this.schema || !this.dialect) {
|
|
129
|
+
throw new alerts_errors_1.AlertStoreUnavailableError('The telemetry slice is not installed in this application.');
|
|
130
|
+
}
|
|
131
|
+
try {
|
|
132
|
+
const schema = await this.schema.getSchema();
|
|
133
|
+
const inner = (0, index_4.createQueryFacade)(this.queries, null, {
|
|
134
|
+
source: 'alert',
|
|
135
|
+
dialect: this.dialect,
|
|
136
|
+
signal,
|
|
137
|
+
maxStatements: STATEMENTS_PER_EVALUATION,
|
|
138
|
+
});
|
|
139
|
+
const query = Object.freeze({
|
|
140
|
+
sql: inner.sql,
|
|
141
|
+
dialect: inner.dialect,
|
|
142
|
+
query: async (sql, options) => {
|
|
143
|
+
try {
|
|
144
|
+
return await inner.query(sql, options);
|
|
145
|
+
}
|
|
146
|
+
catch (error) {
|
|
147
|
+
throw toAlertStoreError(error);
|
|
148
|
+
}
|
|
149
|
+
},
|
|
150
|
+
});
|
|
151
|
+
return { query, tables: metricTablesOfSchema(schema, this.dialect) };
|
|
152
|
+
}
|
|
153
|
+
catch (error) {
|
|
154
|
+
throw toAlertStoreError(error);
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
async readVerdict() {
|
|
158
|
+
if (!this.dashboard)
|
|
159
|
+
throw new alerts_errors_1.AlertStoreUnavailableError('The telemetry slice is not installed in this application.');
|
|
160
|
+
try {
|
|
161
|
+
const summary = await this.dashboard.summary(null, {});
|
|
162
|
+
return { level: summary.verdict.level, reasons: summary.verdict.reasons };
|
|
163
|
+
}
|
|
164
|
+
catch (error) {
|
|
165
|
+
throw toAlertStoreError(error);
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
async readStale() {
|
|
169
|
+
if (!this.lifecycle) {
|
|
170
|
+
this.logger.debug('NodeLifecycleService is not available; using the shipped stale window.');
|
|
171
|
+
return index_2.DEFAULT_NODES_POLICY.staleHeartbeatSeconds;
|
|
172
|
+
}
|
|
173
|
+
return (await this.lifecycle.getPolicy()).staleHeartbeatSeconds;
|
|
174
|
+
}
|
|
175
|
+
};
|
|
176
|
+
exports.AlertContextService = AlertContextService;
|
|
177
|
+
exports.AlertContextService = AlertContextService = AlertContextService_1 = __decorate([
|
|
178
|
+
(0, common_1.Injectable)(),
|
|
179
|
+
__param(0, (0, common_1.Inject)(index_1.PLATFORM_PRISMA)),
|
|
180
|
+
__param(1, (0, common_1.Optional)()),
|
|
181
|
+
__param(2, (0, common_1.Optional)()),
|
|
182
|
+
__param(3, (0, common_1.Optional)()),
|
|
183
|
+
__param(3, (0, common_1.Inject)(index_4.TELEMETRY_SQL_DIALECT)),
|
|
184
|
+
__param(4, (0, common_1.Optional)()),
|
|
185
|
+
__param(5, (0, common_1.Optional)()),
|
|
186
|
+
__metadata("design:paramtypes", [Object, index_4.TelemetryQueryService,
|
|
187
|
+
index_4.TelemetrySchemaService, Object, index_4.TelemetryDashboardService,
|
|
188
|
+
index_3.NodeLifecycleService])
|
|
189
|
+
], AlertContextService);
|
|
190
|
+
//# sourceMappingURL=alerts-context.service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"alerts-context.service.js","sourceRoot":"","sources":["../../src/alerts/alerts-context.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import { ConfigService } from '@nestjs/config';
|
|
2
|
+
import { NotificationsService } from '../notifications/index';
|
|
3
|
+
import { AlertsMetrics } from './alerts.metrics';
|
|
4
|
+
import type { AlertsWebhookEmitter } from './alerts.types';
|
|
5
|
+
import type { AlertIncidentRow, AlertRuleRow } from './data/alerts-db';
|
|
6
|
+
/**
|
|
7
|
+
* One webhook event the slice emits.
|
|
8
|
+
*
|
|
9
|
+
* @stability experimental
|
|
10
|
+
*/
|
|
11
|
+
export interface AlertWebhookEventDef {
|
|
12
|
+
/** The event key. */
|
|
13
|
+
readonly key: string;
|
|
14
|
+
/** The label a webhooks catalog shows. */
|
|
15
|
+
readonly label: string;
|
|
16
|
+
/** One sentence on when it is emitted. */
|
|
17
|
+
readonly description: string;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* The webhook event keys the slice emits, with the labels a webhooks slice
|
|
21
|
+
* shows in its catalog.
|
|
22
|
+
*
|
|
23
|
+
* @stability experimental
|
|
24
|
+
*/
|
|
25
|
+
export declare const ALERT_WEBHOOK_EVENT_DEFS: readonly AlertWebhookEventDef[];
|
|
26
|
+
/**
|
|
27
|
+
* Sends the two things a fired or resolved incident causes: the notification
|
|
28
|
+
* to the holders of `alerts:read` and the optional webhook. Called AFTER the
|
|
29
|
+
* incident write committed (the evaluator never opens a transaction), and it
|
|
30
|
+
* never throws: a failed dispatch is logged and the incident stands.
|
|
31
|
+
*
|
|
32
|
+
* @stability experimental
|
|
33
|
+
*/
|
|
34
|
+
export declare class AlertsDispatchService {
|
|
35
|
+
private readonly metrics;
|
|
36
|
+
private readonly notifications?;
|
|
37
|
+
private readonly webhooks?;
|
|
38
|
+
private readonly config?;
|
|
39
|
+
private readonly logger;
|
|
40
|
+
constructor(metrics: AlertsMetrics, notifications?: NotificationsService | undefined, webhooks?: AlertsWebhookEmitter | undefined, config?: ConfigService | undefined);
|
|
41
|
+
/**
|
|
42
|
+
* Dispatches one transition.
|
|
43
|
+
*
|
|
44
|
+
* @param to - `fired` or `resolved`.
|
|
45
|
+
* @param rule - the rule.
|
|
46
|
+
* @param incident - the incident as just written.
|
|
47
|
+
* @param notify - whether the notification is sent (false inside a cooldown); the webhook and the metric follow the transition regardless.
|
|
48
|
+
*/
|
|
49
|
+
dispatch(to: 'fired' | 'resolved', rule: AlertRuleRow, incident: AlertIncidentRow, notify: boolean): Promise<void>;
|
|
50
|
+
private notify;
|
|
51
|
+
private emitWebhook;
|
|
52
|
+
}
|
|
53
|
+
//# sourceMappingURL=alerts-dispatch.service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"alerts-dispatch.service.d.ts","sourceRoot":"","sources":["../../src/alerts/alerts-dispatch.service.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAG/C,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAM9D,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAC3D,OAAO,KAAK,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAGvE;;;;GAIG;AACH,MAAM,WAAW,oBAAoB;IACnC,qBAAqB;IACrB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,0CAA0C;IAC1C,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,0CAA0C;IAC1C,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;CAC9B;AAED;;;;;GAKG;AACH,eAAO,MAAM,wBAAwB,EAAE,SAAS,oBAAoB,EAGnE,CAAC;AAOF;;;;;;;GAOG;AACH,qBACa,qBAAqB;IAI9B,OAAO,CAAC,QAAQ,CAAC,OAAO;IACZ,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAC;IACC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC;IAC1D,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC;IANtC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA0C;gBAG9C,OAAO,EAAE,aAAa,EACV,aAAa,CAAC,EAAE,oBAAoB,YAAA,EACJ,QAAQ,CAAC,EAAE,oBAAoB,YAAA,EAC/D,MAAM,CAAC,EAAE,aAAa,YAAA;IASrD;;;;;;;OAOG;IACG,QAAQ,CAAC,EAAE,EAAE,OAAO,GAAG,UAAU,EAAE,IAAI,EAAE,YAAY,EAAE,QAAQ,EAAE,gBAAgB,EAAE,MAAM,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAMxH,OAAO,CAAC,MAAM;YAgCA,WAAW;CAiB1B"}
|
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
12
|
+
return function (target, key) { decorator(target, key, paramIndex); }
|
|
13
|
+
};
|
|
14
|
+
var AlertsDispatchService_1;
|
|
15
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
16
|
+
exports.AlertsDispatchService = exports.ALERT_WEBHOOK_EVENT_DEFS = void 0;
|
|
17
|
+
const common_1 = require("@nestjs/common");
|
|
18
|
+
const config_1 = require("@nestjs/config");
|
|
19
|
+
const alerts_1 = require("@marinoscar/platform-contract/alerts");
|
|
20
|
+
const index_1 = require("../notifications/index");
|
|
21
|
+
const alerts_constants_1 = require("./alerts.constants");
|
|
22
|
+
const alerts_metrics_1 = require("./alerts.metrics");
|
|
23
|
+
/**
|
|
24
|
+
* The webhook event keys the slice emits, with the labels a webhooks slice
|
|
25
|
+
* shows in its catalog.
|
|
26
|
+
*
|
|
27
|
+
* @stability experimental
|
|
28
|
+
*/
|
|
29
|
+
exports.ALERT_WEBHOOK_EVENT_DEFS = [
|
|
30
|
+
{ key: alerts_1.ALERT_WEBHOOK_EVENTS.FIRED, label: 'Alert fired', description: 'An alert rule started firing.' },
|
|
31
|
+
{ key: alerts_1.ALERT_WEBHOOK_EVENTS.RESOLVED, label: 'Alert resolved', description: 'A firing alert cleared.' },
|
|
32
|
+
];
|
|
33
|
+
function labelsOf(incident) {
|
|
34
|
+
const raw = incident.labels;
|
|
35
|
+
return raw && typeof raw === 'object' ? raw : {};
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Sends the two things a fired or resolved incident causes: the notification
|
|
39
|
+
* to the holders of `alerts:read` and the optional webhook. Called AFTER the
|
|
40
|
+
* incident write committed (the evaluator never opens a transaction), and it
|
|
41
|
+
* never throws: a failed dispatch is logged and the incident stands.
|
|
42
|
+
*
|
|
43
|
+
* @stability experimental
|
|
44
|
+
*/
|
|
45
|
+
let AlertsDispatchService = AlertsDispatchService_1 = class AlertsDispatchService {
|
|
46
|
+
metrics;
|
|
47
|
+
notifications;
|
|
48
|
+
webhooks;
|
|
49
|
+
config;
|
|
50
|
+
logger = new common_1.Logger(AlertsDispatchService_1.name);
|
|
51
|
+
constructor(metrics, notifications, webhooks, config) {
|
|
52
|
+
this.metrics = metrics;
|
|
53
|
+
this.notifications = notifications;
|
|
54
|
+
this.webhooks = webhooks;
|
|
55
|
+
this.config = config;
|
|
56
|
+
try {
|
|
57
|
+
this.webhooks?.registerEvents?.(exports.ALERT_WEBHOOK_EVENT_DEFS);
|
|
58
|
+
}
|
|
59
|
+
catch (error) {
|
|
60
|
+
this.logger.warn(`The webhook emitter refused the alert events: ${error instanceof Error ? error.message : String(error)}`);
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Dispatches one transition.
|
|
65
|
+
*
|
|
66
|
+
* @param to - `fired` or `resolved`.
|
|
67
|
+
* @param rule - the rule.
|
|
68
|
+
* @param incident - the incident as just written.
|
|
69
|
+
* @param notify - whether the notification is sent (false inside a cooldown); the webhook and the metric follow the transition regardless.
|
|
70
|
+
*/
|
|
71
|
+
async dispatch(to, rule, incident, notify) {
|
|
72
|
+
this.metrics.transition(to, incident.severity);
|
|
73
|
+
if (notify)
|
|
74
|
+
this.notify(to, rule, incident);
|
|
75
|
+
await this.emitWebhook(to, rule, incident);
|
|
76
|
+
}
|
|
77
|
+
notify(to, rule, incident) {
|
|
78
|
+
if (!this.notifications)
|
|
79
|
+
return;
|
|
80
|
+
try {
|
|
81
|
+
const appUrl = this.config?.get('appUrl');
|
|
82
|
+
const data = {
|
|
83
|
+
incidentId: incident.id,
|
|
84
|
+
ruleId: rule.id,
|
|
85
|
+
ruleName: rule.name,
|
|
86
|
+
severity: incident.severity,
|
|
87
|
+
state: to,
|
|
88
|
+
summary: incident.summary,
|
|
89
|
+
labels: labelsOf(incident),
|
|
90
|
+
value: incident.lastValue,
|
|
91
|
+
firedAt: incident.firedAt,
|
|
92
|
+
resolvedAt: incident.resolvedAt,
|
|
93
|
+
...(appUrl ? { appUrl: appUrl.replace(/\/+$/, '') } : {}),
|
|
94
|
+
};
|
|
95
|
+
void this.notifications
|
|
96
|
+
.notifyPermissionHolders(to === 'fired' ? alerts_constants_1.ALERT_FIRED_NOTIFICATION : alerts_constants_1.ALERT_RESOLVED_NOTIFICATION, alerts_1.ALERT_PERMISSIONS.READ, data, rule.notifyChannels.length > 0 ? { channels: rule.notifyChannels } : undefined)
|
|
97
|
+
.catch((error) => {
|
|
98
|
+
this.logger.error(`Dispatching the '${to}' alert notification for incident ${incident.id} rejected: ${error instanceof Error ? error.message : String(error)}`);
|
|
99
|
+
});
|
|
100
|
+
}
|
|
101
|
+
catch (error) {
|
|
102
|
+
this.logger.error(`Could not raise the '${to}' alert notification for incident ${incident.id}: ${error instanceof Error ? error.message : String(error)}`);
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
async emitWebhook(to, rule, incident) {
|
|
106
|
+
if (!this.webhooks || !rule.webhook)
|
|
107
|
+
return;
|
|
108
|
+
try {
|
|
109
|
+
const data = {
|
|
110
|
+
incidentId: incident.id,
|
|
111
|
+
rule: { id: rule.id, key: rule.key, name: rule.name, kind: rule.kind, severity: rule.severity },
|
|
112
|
+
labels: labelsOf(incident),
|
|
113
|
+
value: incident.lastValue,
|
|
114
|
+
summary: incident.summary,
|
|
115
|
+
firedAt: incident.firedAt ? incident.firedAt.toISOString() : null,
|
|
116
|
+
resolvedAt: incident.resolvedAt ? incident.resolvedAt.toISOString() : null,
|
|
117
|
+
};
|
|
118
|
+
await this.webhooks.emit(to === 'fired' ? alerts_1.ALERT_WEBHOOK_EVENTS.FIRED : alerts_1.ALERT_WEBHOOK_EVENTS.RESOLVED, data, { orgId: null });
|
|
119
|
+
}
|
|
120
|
+
catch (error) {
|
|
121
|
+
this.logger.error(`Could not emit the '${to}' alert webhook for incident ${incident.id}: ${error instanceof Error ? error.message : String(error)}`);
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
};
|
|
125
|
+
exports.AlertsDispatchService = AlertsDispatchService;
|
|
126
|
+
exports.AlertsDispatchService = AlertsDispatchService = AlertsDispatchService_1 = __decorate([
|
|
127
|
+
(0, common_1.Injectable)(),
|
|
128
|
+
__param(1, (0, common_1.Optional)()),
|
|
129
|
+
__param(2, (0, common_1.Optional)()),
|
|
130
|
+
__param(2, (0, common_1.Inject)(alerts_constants_1.ALERTS_WEBHOOK_EMITTER)),
|
|
131
|
+
__param(3, (0, common_1.Optional)()),
|
|
132
|
+
__metadata("design:paramtypes", [alerts_metrics_1.AlertsMetrics,
|
|
133
|
+
index_1.NotificationsService, Object, config_1.ConfigService])
|
|
134
|
+
], AlertsDispatchService);
|
|
135
|
+
//# sourceMappingURL=alerts-dispatch.service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"alerts-dispatch.service.js","sourceRoot":"","sources":["../../src/alerts/alerts-dispatch.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
import type { AlertObservation } from '@marinoscar/platform-contract/alerts';
|
|
2
|
+
import { AlertContextService } from './alerts-context.service';
|
|
3
|
+
import { AlertsDispatchService } from './alerts-dispatch.service';
|
|
4
|
+
import type { ResolvedAlertsModuleOptions } from './alerts.options';
|
|
5
|
+
import type { AlertNodeEventPayload } from './alerts.types';
|
|
6
|
+
import type { AlertRuleRow, AlertsPrisma } from './data/alerts-db';
|
|
7
|
+
/**
|
|
8
|
+
* What one rule's evaluation did.
|
|
9
|
+
*
|
|
10
|
+
* @stability experimental
|
|
11
|
+
*/
|
|
12
|
+
export interface AlertEvaluationOutcome {
|
|
13
|
+
/** The rule. */
|
|
14
|
+
readonly ruleId: string;
|
|
15
|
+
/** `ok`, or `error` (the kind failed, timed out or is not registered; incidents were left alone). */
|
|
16
|
+
readonly status: 'ok' | 'error';
|
|
17
|
+
/** The error message when `status` is `error`. */
|
|
18
|
+
readonly error: string | null;
|
|
19
|
+
/** Incidents created. */
|
|
20
|
+
readonly opened: number;
|
|
21
|
+
/** Incidents that moved to firing (now or on creation). */
|
|
22
|
+
readonly fired: number;
|
|
23
|
+
/** Incidents that resolved. */
|
|
24
|
+
readonly resolved: number;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Whether `error` is a unique-constraint violation (Prisma `P2002`).
|
|
28
|
+
*
|
|
29
|
+
* @param error - what a write threw.
|
|
30
|
+
* @returns whether it is `P2002`.
|
|
31
|
+
*
|
|
32
|
+
* @stability experimental
|
|
33
|
+
*/
|
|
34
|
+
export declare function isUniqueViolation(error: unknown): boolean;
|
|
35
|
+
/**
|
|
36
|
+
* Runs the enabled rules: evaluates each kind, isolates failures per rule,
|
|
37
|
+
* then applies the state machine to the observations. Evaluation is
|
|
38
|
+
* IDEMPOTENT: two passes over the same data leave one incident (the partial
|
|
39
|
+
* unique index arbitrates a race), and every state change is a conditional
|
|
40
|
+
* write so a concurrent pass cannot dispatch the same transition twice.
|
|
41
|
+
*
|
|
42
|
+
* It never opens a transaction, so a dispatch always follows a committed write.
|
|
43
|
+
*
|
|
44
|
+
* @stability experimental
|
|
45
|
+
*/
|
|
46
|
+
export declare class AlertsEvaluationService {
|
|
47
|
+
private readonly prisma;
|
|
48
|
+
private readonly contexts;
|
|
49
|
+
private readonly dispatcher;
|
|
50
|
+
private readonly options;
|
|
51
|
+
private readonly logger;
|
|
52
|
+
constructor(prisma: AlertsPrisma, contexts: AlertContextService, dispatcher: AlertsDispatchService, options: ResolvedAlertsModuleOptions);
|
|
53
|
+
/**
|
|
54
|
+
* Evaluates every enabled rule (or only the event-driven ones that `event`
|
|
55
|
+
* can change).
|
|
56
|
+
*
|
|
57
|
+
* @param scope - `{ event }` restricts to rules of event-driven kinds whose kind says the event matters.
|
|
58
|
+
* @returns one outcome per rule evaluated.
|
|
59
|
+
*/
|
|
60
|
+
evaluateEnabled(scope?: {
|
|
61
|
+
event?: AlertNodeEventPayload;
|
|
62
|
+
}): Promise<AlertEvaluationOutcome[]>;
|
|
63
|
+
/**
|
|
64
|
+
* Evaluates one rule and applies its observations. Never throws: a failure
|
|
65
|
+
* is recorded on the rule (`lastError`) and returned.
|
|
66
|
+
*
|
|
67
|
+
* @param rule - the rule row.
|
|
68
|
+
* @param now - the instant (a test seam).
|
|
69
|
+
* @returns what happened.
|
|
70
|
+
*/
|
|
71
|
+
evaluateRule(rule: AlertRuleRow, now?: Date): Promise<AlertEvaluationOutcome>;
|
|
72
|
+
/**
|
|
73
|
+
* Evaluates a rule WITHOUT touching state or dispatching: the dry run behind
|
|
74
|
+
* `POST /rules/:id/test`.
|
|
75
|
+
*
|
|
76
|
+
* @param rule - the rule row.
|
|
77
|
+
* @param now - the instant.
|
|
78
|
+
* @returns the observations.
|
|
79
|
+
* @throws whatever the kind throws (the caller reports it).
|
|
80
|
+
*/
|
|
81
|
+
observe(rule: AlertRuleRow, now?: Date): Promise<AlertObservation[]>;
|
|
82
|
+
private stamp;
|
|
83
|
+
private apply;
|
|
84
|
+
private create;
|
|
85
|
+
private fired;
|
|
86
|
+
private previousResolvedAt;
|
|
87
|
+
}
|
|
88
|
+
//# sourceMappingURL=alerts-evaluation.service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"alerts-evaluation.service.d.ts","sourceRoot":"","sources":["../../src/alerts/alerts-evaluation.service.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sCAAsC,CAAC;AAG7E,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAGlE,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,kBAAkB,CAAC;AACpE,OAAO,KAAK,EAAE,qBAAqB,EAAiB,MAAM,gBAAgB,CAAC;AAC3E,OAAO,KAAK,EAAoB,YAAY,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAIrF;;;;GAIG;AACH,MAAM,WAAW,sBAAsB;IACrC,gBAAgB;IAChB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,qGAAqG;IACrG,QAAQ,CAAC,MAAM,EAAE,IAAI,GAAG,OAAO,CAAC;IAChC,kDAAkD;IAClD,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,yBAAyB;IACzB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,2DAA2D;IAC3D,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,+BAA+B;IAC/B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;CAC3B;AAED;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAEzD;AAUD;;;;;;;;;;GAUG;AACH,qBACa,uBAAuB;IAIP,OAAO,CAAC,QAAQ,CAAC,MAAM;IAChD,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,UAAU;IACH,OAAO,CAAC,QAAQ,CAAC,OAAO;IANlD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA4C;gBAGvB,MAAM,EAAE,YAAY,EAC7C,QAAQ,EAAE,mBAAmB,EAC7B,UAAU,EAAE,qBAAqB,EACT,OAAO,EAAE,2BAA2B;IAG/E;;;;;;OAMG;IACG,eAAe,CAAC,KAAK,GAAE;QAAE,KAAK,CAAC,EAAE,qBAAqB,CAAA;KAAO,GAAG,OAAO,CAAC,sBAAsB,EAAE,CAAC;IAgBvG;;;;;;;OAOG;IACG,YAAY,CAAC,IAAI,EAAE,YAAY,EAAE,GAAG,GAAE,IAAiB,GAAG,OAAO,CAAC,sBAAsB,CAAC;IAyB/F;;;;;;;;OAQG;IACH,OAAO,CAAC,IAAI,EAAE,YAAY,EAAE,GAAG,GAAE,IAAiB,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC;YA6BlE,KAAK;YAQL,KAAK;YAyFL,MAAM;YA4BN,KAAK;YAKL,kBAAkB;CAQjC"}
|