@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,49 @@
|
|
|
1
|
+
import { CredentialsService, OrgCredentialsService, UserCredentialsService } from '../credentials/index';
|
|
2
|
+
import type { WebhookEndpointRow } from './data/webhooks-db';
|
|
3
|
+
/** The columns of an endpoint the store addresses by. @stability experimental */
|
|
4
|
+
export type SecretAddress = Pick<WebhookEndpointRow, 'id' | 'scope' | 'orgId' | 'ownerUserId'>;
|
|
5
|
+
/**
|
|
6
|
+
* The credential name of one secret version.
|
|
7
|
+
*
|
|
8
|
+
* @param endpointId - the endpoint id.
|
|
9
|
+
* @param version - the secret version.
|
|
10
|
+
* @returns `endpoint:<id>:v<version>`.
|
|
11
|
+
*
|
|
12
|
+
* @stability experimental
|
|
13
|
+
*/
|
|
14
|
+
export declare function secretName(endpointId: string, version: number): string;
|
|
15
|
+
/**
|
|
16
|
+
* The signing-secret port. See the file header.
|
|
17
|
+
*
|
|
18
|
+
* @stability experimental
|
|
19
|
+
*/
|
|
20
|
+
export declare abstract class WebhookSecrets {
|
|
21
|
+
/** Stores version `version` of an endpoint's secret. */
|
|
22
|
+
abstract put(endpoint: SecretAddress, version: number, secret: string): Promise<void>;
|
|
23
|
+
/** Reads a version, or `null` when it is gone. */
|
|
24
|
+
abstract get(endpoint: SecretAddress, version: number): Promise<string | null>;
|
|
25
|
+
/** Deletes one version (a rotation's expired predecessor). */
|
|
26
|
+
abstract remove(endpoint: SecretAddress, version: number): Promise<void>;
|
|
27
|
+
/** Deletes versions `1..upTo` of an endpoint (its deletion). */
|
|
28
|
+
abstract removeAll(endpoint: SecretAddress, upTo: number): Promise<void>;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* The credentials-store implementation.
|
|
32
|
+
*
|
|
33
|
+
* @internal
|
|
34
|
+
*
|
|
35
|
+
* @stability experimental
|
|
36
|
+
*/
|
|
37
|
+
export declare class CredentialsWebhookSecrets extends WebhookSecrets {
|
|
38
|
+
private readonly userCredentials;
|
|
39
|
+
private readonly orgCredentials;
|
|
40
|
+
private readonly systemCredentials;
|
|
41
|
+
constructor(userCredentials: UserCredentialsService, orgCredentials: OrgCredentialsService, systemCredentials: CredentialsService);
|
|
42
|
+
put(endpoint: SecretAddress, version: number, secret: string): Promise<void>;
|
|
43
|
+
get(endpoint: SecretAddress, version: number): Promise<string | null>;
|
|
44
|
+
remove(endpoint: SecretAddress, version: number): Promise<void>;
|
|
45
|
+
removeAll(endpoint: SecretAddress, upTo: number): Promise<void>;
|
|
46
|
+
private owner;
|
|
47
|
+
private org;
|
|
48
|
+
}
|
|
49
|
+
//# sourceMappingURL=webhook-secrets.service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"webhook-secrets.service.d.ts","sourceRoot":"","sources":["../../src/webhooks/webhook-secrets.service.ts"],"names":[],"mappings":"AAkBA,OAAO,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AACzG,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAG7D,iFAAiF;AACjF,MAAM,MAAM,aAAa,GAAG,IAAI,CAAC,kBAAkB,EAAE,IAAI,GAAG,OAAO,GAAG,OAAO,GAAG,aAAa,CAAC,CAAC;AAE/F;;;;;;;;GAQG;AACH,wBAAgB,UAAU,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAEtE;AAED;;;;GAIG;AACH,8BAAsB,cAAc;IAClC,wDAAwD;IACxD,QAAQ,CAAC,GAAG,CAAC,QAAQ,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IACrF,kDAAkD;IAClD,QAAQ,CAAC,GAAG,CAAC,QAAQ,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAC9E,8DAA8D;IAC9D,QAAQ,CAAC,MAAM,CAAC,QAAQ,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IACxE,gEAAgE;IAChE,QAAQ,CAAC,SAAS,CAAC,QAAQ,EAAE,aAAa,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CACzE;AAED;;;;;;GAMG;AACH,qBACa,yBAA0B,SAAQ,cAAc;IAEzD,OAAO,CAAC,QAAQ,CAAC,eAAe;IAChC,OAAO,CAAC,QAAQ,CAAC,cAAc;IAC/B,OAAO,CAAC,QAAQ,CAAC,iBAAiB;gBAFjB,eAAe,EAAE,sBAAsB,EACvC,cAAc,EAAE,qBAAqB,EACrC,iBAAiB,EAAE,kBAAkB;IAKlD,GAAG,CAAC,QAAQ,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAQ5E,GAAG,CAAC,QAAQ,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAOrE,MAAM,CAAC,QAAQ,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAO/D,SAAS,CAAC,QAAQ,EAAE,aAAa,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIrE,OAAO,CAAC,KAAK;IAKb,OAAO,CAAC,GAAG;CAIZ"}
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// =============================================================================
|
|
3
|
+
// WebhookSecretsService: an endpoint's signing secrets (issue #1046)
|
|
4
|
+
// =============================================================================
|
|
5
|
+
//
|
|
6
|
+
// The secret is never a column and never in a delivery row. It lives in the
|
|
7
|
+
// encrypted credentials store, in the tier that matches the endpoint:
|
|
8
|
+
//
|
|
9
|
+
// user scope UserCredentialsService (the owner's own store)
|
|
10
|
+
// org scope OrgCredentialsService (the organization's store)
|
|
11
|
+
// system scope CredentialsService (the deployment's store)
|
|
12
|
+
//
|
|
13
|
+
// under the purpose `webhook_signing` and the name `endpoint:<id>:v<version>`.
|
|
14
|
+
// A rotation writes version N+1 and keeps N for the overlap window; the
|
|
15
|
+
// endpoint row's `secretVersion` says which is current.
|
|
16
|
+
// =============================================================================
|
|
17
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
18
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
19
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
20
|
+
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;
|
|
21
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
22
|
+
};
|
|
23
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
24
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
25
|
+
};
|
|
26
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
27
|
+
exports.CredentialsWebhookSecrets = exports.WebhookSecrets = void 0;
|
|
28
|
+
exports.secretName = secretName;
|
|
29
|
+
const common_1 = require("@nestjs/common");
|
|
30
|
+
const index_1 = require("../credentials/index");
|
|
31
|
+
const webhooks_constants_1 = require("./webhooks.constants");
|
|
32
|
+
/**
|
|
33
|
+
* The credential name of one secret version.
|
|
34
|
+
*
|
|
35
|
+
* @param endpointId - the endpoint id.
|
|
36
|
+
* @param version - the secret version.
|
|
37
|
+
* @returns `endpoint:<id>:v<version>`.
|
|
38
|
+
*
|
|
39
|
+
* @stability experimental
|
|
40
|
+
*/
|
|
41
|
+
function secretName(endpointId, version) {
|
|
42
|
+
return `endpoint:${endpointId}:v${version}`;
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* The signing-secret port. See the file header.
|
|
46
|
+
*
|
|
47
|
+
* @stability experimental
|
|
48
|
+
*/
|
|
49
|
+
class WebhookSecrets {
|
|
50
|
+
}
|
|
51
|
+
exports.WebhookSecrets = WebhookSecrets;
|
|
52
|
+
/**
|
|
53
|
+
* The credentials-store implementation.
|
|
54
|
+
*
|
|
55
|
+
* @internal
|
|
56
|
+
*
|
|
57
|
+
* @stability experimental
|
|
58
|
+
*/
|
|
59
|
+
let CredentialsWebhookSecrets = class CredentialsWebhookSecrets extends WebhookSecrets {
|
|
60
|
+
userCredentials;
|
|
61
|
+
orgCredentials;
|
|
62
|
+
systemCredentials;
|
|
63
|
+
constructor(userCredentials, orgCredentials, systemCredentials) {
|
|
64
|
+
super();
|
|
65
|
+
this.userCredentials = userCredentials;
|
|
66
|
+
this.orgCredentials = orgCredentials;
|
|
67
|
+
this.systemCredentials = systemCredentials;
|
|
68
|
+
}
|
|
69
|
+
async put(endpoint, version, secret) {
|
|
70
|
+
const name = secretName(endpoint.id, version);
|
|
71
|
+
const label = 'Webhook signing secret';
|
|
72
|
+
if (endpoint.scope === 'user')
|
|
73
|
+
await this.userCredentials.setSecret(this.owner(endpoint), webhooks_constants_1.WEBHOOK_SIGNING_PURPOSE, name, secret, { label });
|
|
74
|
+
else if (endpoint.scope === 'org')
|
|
75
|
+
await this.orgCredentials.setSecret(this.org(endpoint), webhooks_constants_1.WEBHOOK_SIGNING_PURPOSE, name, secret, { label });
|
|
76
|
+
else
|
|
77
|
+
await this.systemCredentials.setSecret(webhooks_constants_1.WEBHOOK_SIGNING_PURPOSE, name, secret, { label });
|
|
78
|
+
}
|
|
79
|
+
async get(endpoint, version) {
|
|
80
|
+
const name = secretName(endpoint.id, version);
|
|
81
|
+
if (endpoint.scope === 'user')
|
|
82
|
+
return this.userCredentials.getSecret(this.owner(endpoint), webhooks_constants_1.WEBHOOK_SIGNING_PURPOSE, name);
|
|
83
|
+
if (endpoint.scope === 'org')
|
|
84
|
+
return this.orgCredentials.getSecret(this.org(endpoint), webhooks_constants_1.WEBHOOK_SIGNING_PURPOSE, name);
|
|
85
|
+
return this.systemCredentials.getSecret(webhooks_constants_1.WEBHOOK_SIGNING_PURPOSE, name);
|
|
86
|
+
}
|
|
87
|
+
async remove(endpoint, version) {
|
|
88
|
+
const name = secretName(endpoint.id, version);
|
|
89
|
+
if (endpoint.scope === 'user')
|
|
90
|
+
await this.userCredentials.deleteSecret(this.owner(endpoint), webhooks_constants_1.WEBHOOK_SIGNING_PURPOSE, name);
|
|
91
|
+
else if (endpoint.scope === 'org')
|
|
92
|
+
await this.orgCredentials.deleteSecret(this.org(endpoint), webhooks_constants_1.WEBHOOK_SIGNING_PURPOSE, name);
|
|
93
|
+
else
|
|
94
|
+
await this.systemCredentials.deleteSecret(webhooks_constants_1.WEBHOOK_SIGNING_PURPOSE, name);
|
|
95
|
+
}
|
|
96
|
+
async removeAll(endpoint, upTo) {
|
|
97
|
+
for (let version = 1; version <= upTo; version += 1)
|
|
98
|
+
await this.remove(endpoint, version);
|
|
99
|
+
}
|
|
100
|
+
owner(endpoint) {
|
|
101
|
+
if (!endpoint.ownerUserId)
|
|
102
|
+
throw new Error('A user-scope webhook endpoint has no owner');
|
|
103
|
+
return endpoint.ownerUserId;
|
|
104
|
+
}
|
|
105
|
+
org(endpoint) {
|
|
106
|
+
if (!endpoint.orgId)
|
|
107
|
+
throw new Error('An org-scope webhook endpoint has no organization');
|
|
108
|
+
return endpoint.orgId;
|
|
109
|
+
}
|
|
110
|
+
};
|
|
111
|
+
exports.CredentialsWebhookSecrets = CredentialsWebhookSecrets;
|
|
112
|
+
exports.CredentialsWebhookSecrets = CredentialsWebhookSecrets = __decorate([
|
|
113
|
+
(0, common_1.Injectable)(),
|
|
114
|
+
__metadata("design:paramtypes", [index_1.UserCredentialsService,
|
|
115
|
+
index_1.OrgCredentialsService,
|
|
116
|
+
index_1.CredentialsService])
|
|
117
|
+
], CredentialsWebhookSecrets);
|
|
118
|
+
//# sourceMappingURL=webhook-secrets.service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"webhook-secrets.service.js","sourceRoot":"","sources":["../../src/webhooks/webhook-secrets.service.ts"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,qEAAqE;AACrE,gFAAgF;AAChF,EAAE;AACF,4EAA4E;AAC5E,sEAAsE;AACtE,EAAE;AACF,mEAAmE;AACnE,sEAAsE;AACtE,oEAAoE;AACpE,EAAE;AACF,+EAA+E;AAC/E,wEAAwE;AACxE,wDAAwD;AACxD,gFAAgF;;;;;;;;;;;;AAoBhF,gCAEC;AApBD,2CAA4C;AAE5C,gDAAyG;AAEzG,6DAA+D;AAK/D;;;;;;;;GAQG;AACH,SAAgB,UAAU,CAAC,UAAkB,EAAE,OAAe;IAC5D,OAAO,YAAY,UAAU,KAAK,OAAO,EAAE,CAAC;AAC9C,CAAC;AAED;;;;GAIG;AACH,MAAsB,cAAc;CASnC;AATD,wCASC;AAED;;;;;;GAMG;AAEI,IAAM,yBAAyB,GAA/B,MAAM,yBAA0B,SAAQ,cAAc;IAExC;IACA;IACA;IAHnB,YACmB,eAAuC,EACvC,cAAqC,EACrC,iBAAqC;QAEtD,KAAK,EAAE,CAAC;QAJS,oBAAe,GAAf,eAAe,CAAwB;QACvC,mBAAc,GAAd,cAAc,CAAuB;QACrC,sBAAiB,GAAjB,iBAAiB,CAAoB;IAGxD,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,QAAuB,EAAE,OAAe,EAAE,MAAc;QAChE,MAAM,IAAI,GAAG,UAAU,CAAC,QAAQ,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;QAC9C,MAAM,KAAK,GAAG,wBAAwB,CAAC;QACvC,IAAI,QAAQ,CAAC,KAAK,KAAK,MAAM;YAAE,MAAM,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,4CAAuB,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;aACvI,IAAI,QAAQ,CAAC,KAAK,KAAK,KAAK;YAAE,MAAM,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,4CAAuB,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;;YACxI,MAAM,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,4CAAuB,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;IAChG,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,QAAuB,EAAE,OAAe;QAChD,MAAM,IAAI,GAAG,UAAU,CAAC,QAAQ,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;QAC9C,IAAI,QAAQ,CAAC,KAAK,KAAK,MAAM;YAAE,OAAO,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,4CAAuB,EAAE,IAAI,CAAC,CAAC;QAC1H,IAAI,QAAQ,CAAC,KAAK,KAAK,KAAK;YAAE,OAAO,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,4CAAuB,EAAE,IAAI,CAAC,CAAC;QACtH,OAAO,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,4CAAuB,EAAE,IAAI,CAAC,CAAC;IACzE,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,QAAuB,EAAE,OAAe;QACnD,MAAM,IAAI,GAAG,UAAU,CAAC,QAAQ,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;QAC9C,IAAI,QAAQ,CAAC,KAAK,KAAK,MAAM;YAAE,MAAM,IAAI,CAAC,eAAe,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,4CAAuB,EAAE,IAAI,CAAC,CAAC;aACvH,IAAI,QAAQ,CAAC,KAAK,KAAK,KAAK;YAAE,MAAM,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,4CAAuB,EAAE,IAAI,CAAC,CAAC;;YACxH,MAAM,IAAI,CAAC,iBAAiB,CAAC,YAAY,CAAC,4CAAuB,EAAE,IAAI,CAAC,CAAC;IAChF,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,QAAuB,EAAE,IAAY;QACnD,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,IAAI,IAAI,EAAE,OAAO,IAAI,CAAC;YAAE,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAC5F,CAAC;IAEO,KAAK,CAAC,QAAuB;QACnC,IAAI,CAAC,QAAQ,CAAC,WAAW;YAAE,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAC;QACzF,OAAO,QAAQ,CAAC,WAAW,CAAC;IAC9B,CAAC;IAEO,GAAG,CAAC,QAAuB;QACjC,IAAI,CAAC,QAAQ,CAAC,KAAK;YAAE,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAC;QAC1F,OAAO,QAAQ,CAAC,KAAK,CAAC;IACxB,CAAC;CACF,CAAA;AA5CY,8DAAyB;oCAAzB,yBAAyB;IADrC,IAAA,mBAAU,GAAE;qCAGyB,8BAAsB;QACvB,6BAAqB;QAClB,0BAAkB;GAJ7C,yBAAyB,CA4CrC"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import type { WebhookDelivery, WebhookDeliveryDetail, WebhookEndpoint } from '@marinoscar/platform-contract/webhooks';
|
|
2
|
+
import type { WebhookDeliveryRow, WebhookEndpointRow } from './data/webhooks-db';
|
|
3
|
+
/**
|
|
4
|
+
* An endpoint row as the API serves it. There is no secret column to leak; the
|
|
5
|
+
* view lists exactly the contract's fields.
|
|
6
|
+
*
|
|
7
|
+
* @param row - the row.
|
|
8
|
+
* @returns the wire shape.
|
|
9
|
+
*
|
|
10
|
+
* @stability experimental
|
|
11
|
+
*/
|
|
12
|
+
export declare function toEndpointView(row: WebhookEndpointRow): WebhookEndpoint;
|
|
13
|
+
/**
|
|
14
|
+
* A delivery row as the list serves it (no payload).
|
|
15
|
+
*
|
|
16
|
+
* @param row - the row.
|
|
17
|
+
* @returns the wire shape.
|
|
18
|
+
*
|
|
19
|
+
* @stability experimental
|
|
20
|
+
*/
|
|
21
|
+
export declare function toDeliveryView(row: WebhookDeliveryRow): WebhookDelivery;
|
|
22
|
+
/**
|
|
23
|
+
* One delivery with its payload and the request headers that are stable across
|
|
24
|
+
* attempts. The signature and the timestamp are computed per attempt and never
|
|
25
|
+
* stored, so neither is shown.
|
|
26
|
+
*
|
|
27
|
+
* @param row - the row.
|
|
28
|
+
* @param userAgent - the `User-Agent` the slice sends.
|
|
29
|
+
* @returns the wire shape.
|
|
30
|
+
*
|
|
31
|
+
* @stability experimental
|
|
32
|
+
*/
|
|
33
|
+
export declare function toDeliveryDetail(row: WebhookDeliveryRow, userAgent: string): WebhookDeliveryDetail;
|
|
34
|
+
//# sourceMappingURL=webhook-views.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"webhook-views.d.ts","sourceRoot":"","sources":["../../src/webhooks/webhook-views.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACV,eAAe,EACf,qBAAqB,EACrB,eAAe,EAChB,MAAM,wCAAwC,CAAC;AAEhD,OAAO,KAAK,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAIjF;;;;;;;;GAQG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,kBAAkB,GAAG,eAAe,CAoBvE;AAED;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,kBAAkB,GAAG,eAAe,CAgBvE;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,kBAAkB,EAAE,SAAS,EAAE,MAAM,GAAG,qBAAqB,CAMlG"}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// =============================================================================
|
|
3
|
+
// Row to wire shape (issue #1046)
|
|
4
|
+
// =============================================================================
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.toEndpointView = toEndpointView;
|
|
7
|
+
exports.toDeliveryView = toDeliveryView;
|
|
8
|
+
exports.toDeliveryDetail = toDeliveryDetail;
|
|
9
|
+
const iso = (value) => (value ? value.toISOString() : null);
|
|
10
|
+
/**
|
|
11
|
+
* An endpoint row as the API serves it. There is no secret column to leak; the
|
|
12
|
+
* view lists exactly the contract's fields.
|
|
13
|
+
*
|
|
14
|
+
* @param row - the row.
|
|
15
|
+
* @returns the wire shape.
|
|
16
|
+
*
|
|
17
|
+
* @stability experimental
|
|
18
|
+
*/
|
|
19
|
+
function toEndpointView(row) {
|
|
20
|
+
return {
|
|
21
|
+
id: row.id,
|
|
22
|
+
scope: row.scope,
|
|
23
|
+
orgId: row.orgId,
|
|
24
|
+
ownerUserId: row.ownerUserId,
|
|
25
|
+
name: row.name,
|
|
26
|
+
description: row.description,
|
|
27
|
+
url: row.url,
|
|
28
|
+
eventKeys: [...row.eventKeys],
|
|
29
|
+
enabled: row.enabled,
|
|
30
|
+
disabledReason: row.disabledReason,
|
|
31
|
+
consecutiveFailures: row.consecutiveFailures,
|
|
32
|
+
secretVersion: row.secretVersion,
|
|
33
|
+
previousSecretUntil: iso(row.previousSecretUntil),
|
|
34
|
+
lastDeliveryAt: iso(row.lastDeliveryAt),
|
|
35
|
+
lastSuccessAt: iso(row.lastSuccessAt),
|
|
36
|
+
createdAt: row.createdAt.toISOString(),
|
|
37
|
+
updatedAt: row.updatedAt.toISOString(),
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* A delivery row as the list serves it (no payload).
|
|
42
|
+
*
|
|
43
|
+
* @param row - the row.
|
|
44
|
+
* @returns the wire shape.
|
|
45
|
+
*
|
|
46
|
+
* @stability experimental
|
|
47
|
+
*/
|
|
48
|
+
function toDeliveryView(row) {
|
|
49
|
+
return {
|
|
50
|
+
id: row.id,
|
|
51
|
+
endpointId: row.endpointId,
|
|
52
|
+
eventKey: row.eventKey,
|
|
53
|
+
eventId: row.eventId,
|
|
54
|
+
status: row.status,
|
|
55
|
+
attempt: row.attempt,
|
|
56
|
+
responseStatus: row.responseStatus,
|
|
57
|
+
responseSnippet: row.responseSnippet,
|
|
58
|
+
errorCode: row.errorCode,
|
|
59
|
+
durationMs: row.durationMs,
|
|
60
|
+
nextAttemptAt: iso(row.nextAttemptAt),
|
|
61
|
+
deliveredAt: iso(row.deliveredAt),
|
|
62
|
+
createdAt: row.createdAt.toISOString(),
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* One delivery with its payload and the request headers that are stable across
|
|
67
|
+
* attempts. The signature and the timestamp are computed per attempt and never
|
|
68
|
+
* stored, so neither is shown.
|
|
69
|
+
*
|
|
70
|
+
* @param row - the row.
|
|
71
|
+
* @param userAgent - the `User-Agent` the slice sends.
|
|
72
|
+
* @returns the wire shape.
|
|
73
|
+
*
|
|
74
|
+
* @stability experimental
|
|
75
|
+
*/
|
|
76
|
+
function toDeliveryDetail(row, userAgent) {
|
|
77
|
+
return {
|
|
78
|
+
...toDeliveryView(row),
|
|
79
|
+
payload: row.payload,
|
|
80
|
+
requestHeaders: { 'content-type': 'application/json', 'user-agent': userAgent, 'webhook-id': row.eventId },
|
|
81
|
+
};
|
|
82
|
+
}
|
|
83
|
+
//# sourceMappingURL=webhook-views.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"webhook-views.js","sourceRoot":"","sources":["../../src/webhooks/webhook-views.ts"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,kCAAkC;AAClC,gFAAgF;;AAqBhF,wCAoBC;AAUD,wCAgBC;AAaD,4CAMC;AA5ED,MAAM,GAAG,GAAG,CAAC,KAAkB,EAAiB,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AAExF;;;;;;;;GAQG;AACH,SAAgB,cAAc,CAAC,GAAuB;IACpD,OAAO;QACL,EAAE,EAAE,GAAG,CAAC,EAAE;QACV,KAAK,EAAE,GAAG,CAAC,KAAK;QAChB,KAAK,EAAE,GAAG,CAAC,KAAK;QAChB,WAAW,EAAE,GAAG,CAAC,WAAW;QAC5B,IAAI,EAAE,GAAG,CAAC,IAAI;QACd,WAAW,EAAE,GAAG,CAAC,WAAW;QAC5B,GAAG,EAAE,GAAG,CAAC,GAAG;QACZ,SAAS,EAAE,CAAC,GAAG,GAAG,CAAC,SAAS,CAAC;QAC7B,OAAO,EAAE,GAAG,CAAC,OAAO;QACpB,cAAc,EAAE,GAAG,CAAC,cAAc;QAClC,mBAAmB,EAAE,GAAG,CAAC,mBAAmB;QAC5C,aAAa,EAAE,GAAG,CAAC,aAAa;QAChC,mBAAmB,EAAE,GAAG,CAAC,GAAG,CAAC,mBAAmB,CAAC;QACjD,cAAc,EAAE,GAAG,CAAC,GAAG,CAAC,cAAc,CAAC;QACvC,aAAa,EAAE,GAAG,CAAC,GAAG,CAAC,aAAa,CAAC;QACrC,SAAS,EAAE,GAAG,CAAC,SAAS,CAAC,WAAW,EAAE;QACtC,SAAS,EAAE,GAAG,CAAC,SAAS,CAAC,WAAW,EAAE;KACvC,CAAC;AACJ,CAAC;AAED;;;;;;;GAOG;AACH,SAAgB,cAAc,CAAC,GAAuB;IACpD,OAAO;QACL,EAAE,EAAE,GAAG,CAAC,EAAE;QACV,UAAU,EAAE,GAAG,CAAC,UAAU;QAC1B,QAAQ,EAAE,GAAG,CAAC,QAAQ;QACtB,OAAO,EAAE,GAAG,CAAC,OAAO;QACpB,MAAM,EAAE,GAAG,CAAC,MAAM;QAClB,OAAO,EAAE,GAAG,CAAC,OAAO;QACpB,cAAc,EAAE,GAAG,CAAC,cAAc;QAClC,eAAe,EAAE,GAAG,CAAC,eAAe;QACpC,SAAS,EAAE,GAAG,CAAC,SAAS;QACxB,UAAU,EAAE,GAAG,CAAC,UAAU;QAC1B,aAAa,EAAE,GAAG,CAAC,GAAG,CAAC,aAAa,CAAC;QACrC,WAAW,EAAE,GAAG,CAAC,GAAG,CAAC,WAAW,CAAC;QACjC,SAAS,EAAE,GAAG,CAAC,SAAS,CAAC,WAAW,EAAE;KACvC,CAAC;AACJ,CAAC;AAED;;;;;;;;;;GAUG;AACH,SAAgB,gBAAgB,CAAC,GAAuB,EAAE,SAAiB;IACzE,OAAO;QACL,GAAG,cAAc,CAAC,GAAG,CAAC;QACtB,OAAO,EAAE,GAAG,CAAC,OAAO;QACpB,cAAc,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE,YAAY,EAAE,SAAS,EAAE,YAAY,EAAE,GAAG,CAAC,OAAO,EAAE;KAC3G,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { type WebhookScope } from '@marinoscar/platform-contract/webhooks';
|
|
2
|
+
import type { WebhookEndpointRow, WebhookUserRow } from './data/webhooks-db';
|
|
3
|
+
import type { WebhookEventDef } from './registry/webhook-event.registry';
|
|
4
|
+
/** The permission that lets someone read their own endpoints of `scope`. @stability experimental */
|
|
5
|
+
export declare function basePermissionFor(scope: WebhookScope): string;
|
|
6
|
+
/**
|
|
7
|
+
* Who owns an endpoint for the access check.
|
|
8
|
+
*
|
|
9
|
+
* @param endpoint - the endpoint.
|
|
10
|
+
* @returns the user id, or `null` when there is no owner to check.
|
|
11
|
+
*
|
|
12
|
+
* @stability experimental
|
|
13
|
+
*/
|
|
14
|
+
export declare function ownerIdOf(endpoint: Pick<WebhookEndpointRow, 'ownerUserId' | 'createdById'>): string | null;
|
|
15
|
+
/**
|
|
16
|
+
* Whether `owner` still holds what the endpoint needs: an active account, the
|
|
17
|
+
* scope's base permission in the endpoint's organization (system permissions
|
|
18
|
+
* only for a system endpoint) and the event's own permission, when it names one.
|
|
19
|
+
*
|
|
20
|
+
* @param owner - the owner loaded with roles and memberships; `null` when the account is gone.
|
|
21
|
+
* @param endpoint - the endpoint.
|
|
22
|
+
* @param event - the event being delivered.
|
|
23
|
+
* @returns `true` when the event may be delivered.
|
|
24
|
+
*
|
|
25
|
+
* @stability experimental
|
|
26
|
+
*/
|
|
27
|
+
export declare function ownerMayReceive(owner: WebhookUserRow | null, endpoint: Pick<WebhookEndpointRow, 'scope' | 'orgId'>, event: Pick<WebhookEventDef, 'permission'>): boolean;
|
|
28
|
+
//# sourceMappingURL=webhooks.access.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"webhooks.access.d.ts","sourceRoot":"","sources":["../../src/webhooks/webhooks.access.ts"],"names":[],"mappings":"AAYA,OAAO,EAAuB,KAAK,YAAY,EAAE,MAAM,wCAAwC,CAAC;AAGhG,OAAO,KAAK,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAC7E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAC;AAEzE,oGAAoG;AACpG,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,YAAY,GAAG,MAAM,CAE7D;AAED;;;;;;;GAOG;AACH,wBAAgB,SAAS,CAAC,QAAQ,EAAE,IAAI,CAAC,kBAAkB,EAAE,aAAa,GAAG,aAAa,CAAC,GAAG,MAAM,GAAG,IAAI,CAE1G;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,eAAe,CAC7B,KAAK,EAAE,cAAc,GAAG,IAAI,EAC5B,QAAQ,EAAE,IAAI,CAAC,kBAAkB,EAAE,OAAO,GAAG,OAAO,CAAC,EACrD,KAAK,EAAE,IAAI,CAAC,eAAe,EAAE,YAAY,CAAC,GACzC,OAAO,CAST"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// =============================================================================
|
|
3
|
+
// The owner's access to an endpoint's events (issue #1046)
|
|
4
|
+
// =============================================================================
|
|
5
|
+
//
|
|
6
|
+
// An endpoint is its owner's delegate: it may receive an event only while the
|
|
7
|
+
// person who set it up could read that event. The check is made at FAN-OUT time
|
|
8
|
+
// (not at creation), so revoking a permission, suspending the member or
|
|
9
|
+
// deactivating the account silences the endpoint at the next event. The owner
|
|
10
|
+
// is the user for a user-scope endpoint and the creator for an org or system
|
|
11
|
+
// endpoint; an endpoint whose creator no longer exists has no owner to check.
|
|
12
|
+
// =============================================================================
|
|
13
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
14
|
+
exports.basePermissionFor = basePermissionFor;
|
|
15
|
+
exports.ownerIdOf = ownerIdOf;
|
|
16
|
+
exports.ownerMayReceive = ownerMayReceive;
|
|
17
|
+
const webhooks_1 = require("@marinoscar/platform-contract/webhooks");
|
|
18
|
+
const index_1 = require("../identity/index");
|
|
19
|
+
/** The permission that lets someone read their own endpoints of `scope`. @stability experimental */
|
|
20
|
+
function basePermissionFor(scope) {
|
|
21
|
+
return scope === 'user' ? webhooks_1.WEBHOOK_PERMISSIONS.READ : scope === 'org' ? webhooks_1.WEBHOOK_PERMISSIONS.ORG_READ : webhooks_1.WEBHOOK_PERMISSIONS.SYSTEM_READ;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Who owns an endpoint for the access check.
|
|
25
|
+
*
|
|
26
|
+
* @param endpoint - the endpoint.
|
|
27
|
+
* @returns the user id, or `null` when there is no owner to check.
|
|
28
|
+
*
|
|
29
|
+
* @stability experimental
|
|
30
|
+
*/
|
|
31
|
+
function ownerIdOf(endpoint) {
|
|
32
|
+
return endpoint.ownerUserId ?? endpoint.createdById;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Whether `owner` still holds what the endpoint needs: an active account, the
|
|
36
|
+
* scope's base permission in the endpoint's organization (system permissions
|
|
37
|
+
* only for a system endpoint) and the event's own permission, when it names one.
|
|
38
|
+
*
|
|
39
|
+
* @param owner - the owner loaded with roles and memberships; `null` when the account is gone.
|
|
40
|
+
* @param endpoint - the endpoint.
|
|
41
|
+
* @param event - the event being delivered.
|
|
42
|
+
* @returns `true` when the event may be delivered.
|
|
43
|
+
*
|
|
44
|
+
* @stability experimental
|
|
45
|
+
*/
|
|
46
|
+
function ownerMayReceive(owner, endpoint, event) {
|
|
47
|
+
if (!owner || !owner.isActive)
|
|
48
|
+
return false;
|
|
49
|
+
const access = (0, index_1.resolveEffectiveAccess)({ userRoles: owner.userRoles, memberships: owner.memberships, activeOrgId: endpoint.orgId ?? null }, (0, index_1.currentTenancyMode)());
|
|
50
|
+
const held = new Set(access.permissions);
|
|
51
|
+
if (!held.has(basePermissionFor(endpoint.scope)))
|
|
52
|
+
return false;
|
|
53
|
+
return event.permission === undefined || held.has(event.permission);
|
|
54
|
+
}
|
|
55
|
+
//# sourceMappingURL=webhooks.access.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"webhooks.access.js","sourceRoot":"","sources":["../../src/webhooks/webhooks.access.ts"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,2DAA2D;AAC3D,gFAAgF;AAChF,EAAE;AACF,8EAA8E;AAC9E,gFAAgF;AAChF,wEAAwE;AACxE,8EAA8E;AAC9E,6EAA6E;AAC7E,8EAA8E;AAC9E,gFAAgF;;AAShF,8CAEC;AAUD,8BAEC;AAcD,0CAaC;AAhDD,qEAAgG;AAEhG,6CAA+E;AAI/E,oGAAoG;AACpG,SAAgB,iBAAiB,CAAC,KAAmB;IACnD,OAAO,KAAK,KAAK,MAAM,CAAC,CAAC,CAAC,8BAAmB,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,8BAAmB,CAAC,QAAQ,CAAC,CAAC,CAAC,8BAAmB,CAAC,WAAW,CAAC;AACxI,CAAC;AAED;;;;;;;GAOG;AACH,SAAgB,SAAS,CAAC,QAAiE;IACzF,OAAO,QAAQ,CAAC,WAAW,IAAI,QAAQ,CAAC,WAAW,CAAC;AACtD,CAAC;AAED;;;;;;;;;;;GAWG;AACH,SAAgB,eAAe,CAC7B,KAA4B,EAC5B,QAAqD,EACrD,KAA0C;IAE1C,IAAI,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,QAAQ;QAAE,OAAO,KAAK,CAAC;IAC5C,MAAM,MAAM,GAAG,IAAA,8BAAsB,EACnC,EAAE,SAAS,EAAE,KAAK,CAAC,SAAS,EAAE,WAAW,EAAE,KAAK,CAAC,WAAoB,EAAE,WAAW,EAAE,QAAQ,CAAC,KAAK,IAAI,IAAI,EAAE,EAC5G,IAAA,0BAAkB,GAAE,CACrB,CAAC;IACF,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;IACzC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,iBAAiB,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QAAE,OAAO,KAAK,CAAC;IAC/D,OAAO,KAAK,CAAC,UAAU,KAAK,SAAS,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;AACtE,CAAC"}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
/** The delivery job: one attempt of one delivery. PERMANENT once jobs of this type exist. @stability experimental */
|
|
2
|
+
export declare const WEBHOOK_DELIVER_JOB_TYPE = "webhooks.deliver";
|
|
3
|
+
/** The fan-out job: one emitted event to every matching endpoint. PERMANENT once jobs of this type exist. @stability experimental */
|
|
4
|
+
export declare const WEBHOOK_FANOUT_JOB_TYPE = "webhooks.fanout";
|
|
5
|
+
/** The daily retention job. PERMANENT once jobs of this type exist. @stability experimental */
|
|
6
|
+
export declare const WEBHOOK_PURGE_JOB_TYPE = "webhooks.deliveries_purge";
|
|
7
|
+
/** `subjectType` of a delivery job. @stability experimental */
|
|
8
|
+
export declare const WEBHOOK_DELIVERY_SUBJECT_TYPE = "webhook_delivery";
|
|
9
|
+
/** The credential purpose of an endpoint's signing secret, in all three tiers. @stability experimental */
|
|
10
|
+
export declare const WEBHOOK_SIGNING_PURPOSE = "webhook_signing";
|
|
11
|
+
/** The notification channel that carries user notifications to a user's webhook endpoints. @stability experimental */
|
|
12
|
+
export declare const WEBHOOK_NOTIFICATION_CHANNEL_ID = "webhook";
|
|
13
|
+
/** The notification event raised when an endpoint is disabled. @stability experimental */
|
|
14
|
+
export declare const WEBHOOK_ENDPOINT_DISABLED_EVENT_KEY = "webhooks.endpoint_disabled";
|
|
15
|
+
/** The email template of that event. @stability experimental */
|
|
16
|
+
export declare const WEBHOOK_ENDPOINT_DISABLED_EMAIL_TEMPLATE = "webhook-endpoint-disabled";
|
|
17
|
+
/** Prefix of the webhook event key a notification is exposed under (`notification.<eventKey>`). @stability experimental */
|
|
18
|
+
export declare const WEBHOOK_NOTIFICATION_EVENT_PREFIX = "notification.";
|
|
19
|
+
/** The system access reason every cross-organization (system-scope) webhook query names. @stability experimental */
|
|
20
|
+
export declare const WEBHOOKS_SYSTEM_ACCESS_REASON = "webhooks";
|
|
21
|
+
/**
|
|
22
|
+
* Registers the `webhooks` system access reason with core's registry, once.
|
|
23
|
+
* `WebhooksModule.forRoot()` calls it, and so does the repository's constructor,
|
|
24
|
+
* so code that builds the repository by hand (a database test) is covered too.
|
|
25
|
+
*
|
|
26
|
+
* @stability experimental
|
|
27
|
+
*/
|
|
28
|
+
export declare function registerWebhooksSystemAccessReason(): void;
|
|
29
|
+
/** The `apiVersion` of the envelope. @stability experimental */
|
|
30
|
+
export declare const WEBHOOK_ENVELOPE_API_VERSION = "2026-11-01";
|
|
31
|
+
/** The audit actions the slice writes. @stability experimental */
|
|
32
|
+
export declare const WEBHOOK_AUDIT_ACTIONS: {
|
|
33
|
+
readonly CREATE: "webhook.endpoint.create";
|
|
34
|
+
readonly UPDATE: "webhook.endpoint.update";
|
|
35
|
+
readonly DELETE: "webhook.endpoint.delete";
|
|
36
|
+
readonly ROTATE: "webhook.endpoint.rotate_secret";
|
|
37
|
+
readonly REDELIVER: "webhook.delivery.redeliver";
|
|
38
|
+
readonly DISABLE: "webhook.endpoint.disable";
|
|
39
|
+
};
|
|
40
|
+
/** The audit `targetType` of an endpoint. @stability experimental */
|
|
41
|
+
export declare const WEBHOOK_AUDIT_TARGET = "webhook_endpoint";
|
|
42
|
+
/** Why an endpoint was switched off by the platform. @stability experimental */
|
|
43
|
+
export declare const WEBHOOK_DISABLED_REASONS: {
|
|
44
|
+
readonly CIRCUIT_OPEN: "circuit_open";
|
|
45
|
+
readonly OWNER_LOST_ACCESS: "owner_lost_access";
|
|
46
|
+
readonly GONE: "gone";
|
|
47
|
+
};
|
|
48
|
+
/** Defaults of {@link WebhooksModuleOptions}. @stability experimental */
|
|
49
|
+
export declare const WEBHOOK_DEFAULTS: Readonly<{
|
|
50
|
+
readonly circuitBreakerThreshold: 20;
|
|
51
|
+
readonly rotationOverlapHours: 24;
|
|
52
|
+
readonly deliveryRetentionDays: 30;
|
|
53
|
+
readonly requestTimeoutMs: 10000;
|
|
54
|
+
readonly maxDeliveryAttempts: 10;
|
|
55
|
+
readonly limits: Readonly<{
|
|
56
|
+
user: 20;
|
|
57
|
+
org: 50;
|
|
58
|
+
system: 50;
|
|
59
|
+
}>;
|
|
60
|
+
}>;
|
|
61
|
+
/** The response body kept on a delivery row, in characters. @stability experimental */
|
|
62
|
+
export declare const WEBHOOK_SNIPPET_MAX = 1024;
|
|
63
|
+
/** Rows per batch of the retention purge. @stability experimental */
|
|
64
|
+
export declare const WEBHOOK_PURGE_BATCH = 2000;
|
|
65
|
+
/** Safety stop on the purge loop. @stability experimental */
|
|
66
|
+
export declare const WEBHOOK_PURGE_MAX_BATCHES = 500;
|
|
67
|
+
/** The retry schedule, in milliseconds, indexed by the attempt that just failed (1-based). The last entry repeats. @stability experimental */
|
|
68
|
+
export declare const WEBHOOK_RETRY_SCHEDULE_MS: readonly number[];
|
|
69
|
+
/** A server's `Retry-After` never delays a retry beyond this. @stability experimental */
|
|
70
|
+
export declare const WEBHOOK_RETRY_AFTER_CAP_MS: number;
|
|
71
|
+
/** The headers a stored delivery detail never shows (the signature is derived, not stored). @stability experimental */
|
|
72
|
+
export declare const WEBHOOK_REDACTED_HEADERS: readonly ["webhook-signature"];
|
|
73
|
+
//# sourceMappingURL=webhooks.constants.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"webhooks.constants.d.ts","sourceRoot":"","sources":["../../src/webhooks/webhooks.constants.ts"],"names":[],"mappings":"AAaA,qHAAqH;AACrH,eAAO,MAAM,wBAAwB,qBAAqB,CAAC;AAC3D,qIAAqI;AACrI,eAAO,MAAM,uBAAuB,oBAAoB,CAAC;AACzD,+FAA+F;AAC/F,eAAO,MAAM,sBAAsB,8BAA8B,CAAC;AAElE,+DAA+D;AAC/D,eAAO,MAAM,6BAA6B,qBAAqB,CAAC;AAEhE,0GAA0G;AAC1G,eAAO,MAAM,uBAAuB,oBAAoB,CAAC;AAEzD,sHAAsH;AACtH,eAAO,MAAM,+BAA+B,YAAY,CAAC;AAEzD,0FAA0F;AAC1F,eAAO,MAAM,mCAAmC,+BAA+B,CAAC;AAEhF,gEAAgE;AAChE,eAAO,MAAM,wCAAwC,8BAA8B,CAAC;AAEpF,2HAA2H;AAC3H,eAAO,MAAM,iCAAiC,kBAAkB,CAAC;AAEjE,oHAAoH;AACpH,eAAO,MAAM,6BAA6B,aAAa,CAAC;AAExD;;;;;;GAMG;AACH,wBAAgB,kCAAkC,IAAI,IAAI,CAMzD;AAED,gEAAgE;AAChE,eAAO,MAAM,4BAA4B,eAAsB,CAAC;AAEhE,kEAAkE;AAClE,eAAO,MAAM,qBAAqB;;;;;;;CAOxB,CAAC;AAEX,qEAAqE;AACrE,eAAO,MAAM,oBAAoB,qBAAqB,CAAC;AAEvD,gFAAgF;AAChF,eAAO,MAAM,wBAAwB;;;;CAI3B,CAAC;AAEX,yEAAyE;AACzE,eAAO,MAAM,gBAAgB;;;;;;;;;;;EAOlB,CAAC;AAEZ,uFAAuF;AACvF,eAAO,MAAM,mBAAmB,OAAO,CAAC;AAExC,qEAAqE;AACrE,eAAO,MAAM,mBAAmB,OAAO,CAAC;AAExC,6DAA6D;AAC7D,eAAO,MAAM,yBAAyB,MAAM,CAAC;AAE7C,8IAA8I;AAC9I,eAAO,MAAM,yBAAyB,EAAE,SAAS,MAAM,EAUrD,CAAC;AAEH,yFAAyF;AACzF,eAAO,MAAM,0BAA0B,QAAiB,CAAC;AAEzD,uHAAuH;AACvH,eAAO,MAAM,wBAAwB,gCAAiC,CAAC"}
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// =============================================================================
|
|
3
|
+
// The webhooks slice's constants (issue #1046)
|
|
4
|
+
// =============================================================================
|
|
5
|
+
//
|
|
6
|
+
// PERMANENT strings: the three job types, the credential purpose, the
|
|
7
|
+
// notification channel and event ids, the audit actions. Rename none once rows
|
|
8
|
+
// or preferences name it.
|
|
9
|
+
// =============================================================================
|
|
10
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
11
|
+
exports.WEBHOOK_REDACTED_HEADERS = exports.WEBHOOK_RETRY_AFTER_CAP_MS = exports.WEBHOOK_RETRY_SCHEDULE_MS = exports.WEBHOOK_PURGE_MAX_BATCHES = exports.WEBHOOK_PURGE_BATCH = exports.WEBHOOK_SNIPPET_MAX = exports.WEBHOOK_DEFAULTS = exports.WEBHOOK_DISABLED_REASONS = exports.WEBHOOK_AUDIT_TARGET = exports.WEBHOOK_AUDIT_ACTIONS = exports.WEBHOOK_ENVELOPE_API_VERSION = exports.WEBHOOKS_SYSTEM_ACCESS_REASON = exports.WEBHOOK_NOTIFICATION_EVENT_PREFIX = exports.WEBHOOK_ENDPOINT_DISABLED_EMAIL_TEMPLATE = exports.WEBHOOK_ENDPOINT_DISABLED_EVENT_KEY = exports.WEBHOOK_NOTIFICATION_CHANNEL_ID = exports.WEBHOOK_SIGNING_PURPOSE = exports.WEBHOOK_DELIVERY_SUBJECT_TYPE = exports.WEBHOOK_PURGE_JOB_TYPE = exports.WEBHOOK_FANOUT_JOB_TYPE = exports.WEBHOOK_DELIVER_JOB_TYPE = void 0;
|
|
12
|
+
exports.registerWebhooksSystemAccessReason = registerWebhooksSystemAccessReason;
|
|
13
|
+
const webhooks_1 = require("@marinoscar/platform-contract/webhooks");
|
|
14
|
+
const index_1 = require("../core/index");
|
|
15
|
+
/** The delivery job: one attempt of one delivery. PERMANENT once jobs of this type exist. @stability experimental */
|
|
16
|
+
exports.WEBHOOK_DELIVER_JOB_TYPE = 'webhooks.deliver';
|
|
17
|
+
/** The fan-out job: one emitted event to every matching endpoint. PERMANENT once jobs of this type exist. @stability experimental */
|
|
18
|
+
exports.WEBHOOK_FANOUT_JOB_TYPE = 'webhooks.fanout';
|
|
19
|
+
/** The daily retention job. PERMANENT once jobs of this type exist. @stability experimental */
|
|
20
|
+
exports.WEBHOOK_PURGE_JOB_TYPE = 'webhooks.deliveries_purge';
|
|
21
|
+
/** `subjectType` of a delivery job. @stability experimental */
|
|
22
|
+
exports.WEBHOOK_DELIVERY_SUBJECT_TYPE = 'webhook_delivery';
|
|
23
|
+
/** The credential purpose of an endpoint's signing secret, in all three tiers. @stability experimental */
|
|
24
|
+
exports.WEBHOOK_SIGNING_PURPOSE = 'webhook_signing';
|
|
25
|
+
/** The notification channel that carries user notifications to a user's webhook endpoints. @stability experimental */
|
|
26
|
+
exports.WEBHOOK_NOTIFICATION_CHANNEL_ID = 'webhook';
|
|
27
|
+
/** The notification event raised when an endpoint is disabled. @stability experimental */
|
|
28
|
+
exports.WEBHOOK_ENDPOINT_DISABLED_EVENT_KEY = 'webhooks.endpoint_disabled';
|
|
29
|
+
/** The email template of that event. @stability experimental */
|
|
30
|
+
exports.WEBHOOK_ENDPOINT_DISABLED_EMAIL_TEMPLATE = 'webhook-endpoint-disabled';
|
|
31
|
+
/** Prefix of the webhook event key a notification is exposed under (`notification.<eventKey>`). @stability experimental */
|
|
32
|
+
exports.WEBHOOK_NOTIFICATION_EVENT_PREFIX = 'notification.';
|
|
33
|
+
/** The system access reason every cross-organization (system-scope) webhook query names. @stability experimental */
|
|
34
|
+
exports.WEBHOOKS_SYSTEM_ACCESS_REASON = 'webhooks';
|
|
35
|
+
/**
|
|
36
|
+
* Registers the `webhooks` system access reason with core's registry, once.
|
|
37
|
+
* `WebhooksModule.forRoot()` calls it, and so does the repository's constructor,
|
|
38
|
+
* so code that builds the repository by hand (a database test) is covered too.
|
|
39
|
+
*
|
|
40
|
+
* @stability experimental
|
|
41
|
+
*/
|
|
42
|
+
function registerWebhooksSystemAccessReason() {
|
|
43
|
+
if (index_1.systemAccessReasonRegistry.has(exports.WEBHOOKS_SYSTEM_ACCESS_REASON))
|
|
44
|
+
return;
|
|
45
|
+
(0, index_1.registerSystemAccessReason)({
|
|
46
|
+
id: exports.WEBHOOKS_SYSTEM_ACCESS_REASON,
|
|
47
|
+
description: 'The webhooks slice: system-scope endpoints and their deliveries, which belong to no organization.',
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
/** The `apiVersion` of the envelope. @stability experimental */
|
|
51
|
+
exports.WEBHOOK_ENVELOPE_API_VERSION = webhooks_1.WEBHOOK_API_VERSION;
|
|
52
|
+
/** The audit actions the slice writes. @stability experimental */
|
|
53
|
+
exports.WEBHOOK_AUDIT_ACTIONS = {
|
|
54
|
+
CREATE: 'webhook.endpoint.create',
|
|
55
|
+
UPDATE: 'webhook.endpoint.update',
|
|
56
|
+
DELETE: 'webhook.endpoint.delete',
|
|
57
|
+
ROTATE: 'webhook.endpoint.rotate_secret',
|
|
58
|
+
REDELIVER: 'webhook.delivery.redeliver',
|
|
59
|
+
DISABLE: 'webhook.endpoint.disable',
|
|
60
|
+
};
|
|
61
|
+
/** The audit `targetType` of an endpoint. @stability experimental */
|
|
62
|
+
exports.WEBHOOK_AUDIT_TARGET = 'webhook_endpoint';
|
|
63
|
+
/** Why an endpoint was switched off by the platform. @stability experimental */
|
|
64
|
+
exports.WEBHOOK_DISABLED_REASONS = {
|
|
65
|
+
CIRCUIT_OPEN: 'circuit_open',
|
|
66
|
+
OWNER_LOST_ACCESS: 'owner_lost_access',
|
|
67
|
+
GONE: 'gone',
|
|
68
|
+
};
|
|
69
|
+
/** Defaults of {@link WebhooksModuleOptions}. @stability experimental */
|
|
70
|
+
exports.WEBHOOK_DEFAULTS = Object.freeze({
|
|
71
|
+
circuitBreakerThreshold: 20,
|
|
72
|
+
rotationOverlapHours: 24,
|
|
73
|
+
deliveryRetentionDays: 30,
|
|
74
|
+
requestTimeoutMs: 10_000,
|
|
75
|
+
maxDeliveryAttempts: 10,
|
|
76
|
+
limits: Object.freeze({ user: 20, org: 50, system: 50 }),
|
|
77
|
+
});
|
|
78
|
+
/** The response body kept on a delivery row, in characters. @stability experimental */
|
|
79
|
+
exports.WEBHOOK_SNIPPET_MAX = 1024;
|
|
80
|
+
/** Rows per batch of the retention purge. @stability experimental */
|
|
81
|
+
exports.WEBHOOK_PURGE_BATCH = 2000;
|
|
82
|
+
/** Safety stop on the purge loop. @stability experimental */
|
|
83
|
+
exports.WEBHOOK_PURGE_MAX_BATCHES = 500;
|
|
84
|
+
/** The retry schedule, in milliseconds, indexed by the attempt that just failed (1-based). The last entry repeats. @stability experimental */
|
|
85
|
+
exports.WEBHOOK_RETRY_SCHEDULE_MS = Object.freeze([
|
|
86
|
+
30_000,
|
|
87
|
+
2 * 60_000,
|
|
88
|
+
10 * 60_000,
|
|
89
|
+
30 * 60_000,
|
|
90
|
+
60 * 60_000,
|
|
91
|
+
2 * 3_600_000,
|
|
92
|
+
4 * 3_600_000,
|
|
93
|
+
6 * 3_600_000,
|
|
94
|
+
6 * 3_600_000,
|
|
95
|
+
]);
|
|
96
|
+
/** A server's `Retry-After` never delays a retry beyond this. @stability experimental */
|
|
97
|
+
exports.WEBHOOK_RETRY_AFTER_CAP_MS = 24 * 3_600_000;
|
|
98
|
+
/** The headers a stored delivery detail never shows (the signature is derived, not stored). @stability experimental */
|
|
99
|
+
exports.WEBHOOK_REDACTED_HEADERS = ['webhook-signature'];
|
|
100
|
+
//# sourceMappingURL=webhooks.constants.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"webhooks.constants.js","sourceRoot":"","sources":["../../src/webhooks/webhooks.constants.ts"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,+CAA+C;AAC/C,gFAAgF;AAChF,EAAE;AACF,sEAAsE;AACtE,+EAA+E;AAC/E,0BAA0B;AAC1B,gFAAgF;;;AAyChF,gFAMC;AA7CD,qEAA6E;AAE7E,yCAAuF;AAEvF,qHAAqH;AACxG,QAAA,wBAAwB,GAAG,kBAAkB,CAAC;AAC3D,qIAAqI;AACxH,QAAA,uBAAuB,GAAG,iBAAiB,CAAC;AACzD,+FAA+F;AAClF,QAAA,sBAAsB,GAAG,2BAA2B,CAAC;AAElE,+DAA+D;AAClD,QAAA,6BAA6B,GAAG,kBAAkB,CAAC;AAEhE,0GAA0G;AAC7F,QAAA,uBAAuB,GAAG,iBAAiB,CAAC;AAEzD,sHAAsH;AACzG,QAAA,+BAA+B,GAAG,SAAS,CAAC;AAEzD,0FAA0F;AAC7E,QAAA,mCAAmC,GAAG,4BAA4B,CAAC;AAEhF,gEAAgE;AACnD,QAAA,wCAAwC,GAAG,2BAA2B,CAAC;AAEpF,2HAA2H;AAC9G,QAAA,iCAAiC,GAAG,eAAe,CAAC;AAEjE,oHAAoH;AACvG,QAAA,6BAA6B,GAAG,UAAU,CAAC;AAExD;;;;;;GAMG;AACH,SAAgB,kCAAkC;IAChD,IAAI,kCAA0B,CAAC,GAAG,CAAC,qCAA6B,CAAC;QAAE,OAAO;IAC1E,IAAA,kCAA0B,EAAC;QACzB,EAAE,EAAE,qCAA6B;QACjC,WAAW,EAAE,mGAAmG;KACjH,CAAC,CAAC;AACL,CAAC;AAED,gEAAgE;AACnD,QAAA,4BAA4B,GAAG,8BAAmB,CAAC;AAEhE,kEAAkE;AACrD,QAAA,qBAAqB,GAAG;IACnC,MAAM,EAAE,yBAAyB;IACjC,MAAM,EAAE,yBAAyB;IACjC,MAAM,EAAE,yBAAyB;IACjC,MAAM,EAAE,gCAAgC;IACxC,SAAS,EAAE,4BAA4B;IACvC,OAAO,EAAE,0BAA0B;CAC3B,CAAC;AAEX,qEAAqE;AACxD,QAAA,oBAAoB,GAAG,kBAAkB,CAAC;AAEvD,gFAAgF;AACnE,QAAA,wBAAwB,GAAG;IACtC,YAAY,EAAE,cAAc;IAC5B,iBAAiB,EAAE,mBAAmB;IACtC,IAAI,EAAE,MAAM;CACJ,CAAC;AAEX,yEAAyE;AAC5D,QAAA,gBAAgB,GAAG,MAAM,CAAC,MAAM,CAAC;IAC5C,uBAAuB,EAAE,EAAE;IAC3B,oBAAoB,EAAE,EAAE;IACxB,qBAAqB,EAAE,EAAE;IACzB,gBAAgB,EAAE,MAAM;IACxB,mBAAmB,EAAE,EAAE;IACvB,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;CAChD,CAAC,CAAC;AAEZ,uFAAuF;AAC1E,QAAA,mBAAmB,GAAG,IAAI,CAAC;AAExC,qEAAqE;AACxD,QAAA,mBAAmB,GAAG,IAAI,CAAC;AAExC,6DAA6D;AAChD,QAAA,yBAAyB,GAAG,GAAG,CAAC;AAE7C,8IAA8I;AACjI,QAAA,yBAAyB,GAAsB,MAAM,CAAC,MAAM,CAAC;IACxE,MAAM;IACN,CAAC,GAAG,MAAM;IACV,EAAE,GAAG,MAAM;IACX,EAAE,GAAG,MAAM;IACX,EAAE,GAAG,MAAM;IACX,CAAC,GAAG,SAAS;IACb,CAAC,GAAG,SAAS;IACb,CAAC,GAAG,SAAS;IACb,CAAC,GAAG,SAAS;CACd,CAAC,CAAC;AAEH,yFAAyF;AAC5E,QAAA,0BAA0B,GAAG,EAAE,GAAG,SAAS,CAAC;AAEzD,uHAAuH;AAC1G,QAAA,wBAAwB,GAAG,CAAC,mBAAmB,CAAU,CAAC"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import type { CredentialPurposeDef, UserCredentialPurposeDef } from '../credentials/index';
|
|
2
|
+
/**
|
|
3
|
+
* The organization and deployment tiers of `webhook_signing`, for
|
|
4
|
+
* `registerCredentialPurpose`.
|
|
5
|
+
*
|
|
6
|
+
* @example
|
|
7
|
+
* ```ts
|
|
8
|
+
* registerCredentialPurpose(WEBHOOK_SIGNING_CREDENTIAL_PURPOSE_DEF);
|
|
9
|
+
* ```
|
|
10
|
+
*
|
|
11
|
+
* @extensionPoint registry
|
|
12
|
+
* @stability experimental
|
|
13
|
+
*/
|
|
14
|
+
export declare const WEBHOOK_SIGNING_CREDENTIAL_PURPOSE_DEF: CredentialPurposeDef;
|
|
15
|
+
/**
|
|
16
|
+
* The user tier of `webhook_signing`, for `registerUserCredentialPurpose`. No
|
|
17
|
+
* deployment or organization fallback: a member's secret is theirs alone.
|
|
18
|
+
*
|
|
19
|
+
* @example
|
|
20
|
+
* ```ts
|
|
21
|
+
* registerUserCredentialPurpose(WEBHOOK_SIGNING_USER_CREDENTIAL_PURPOSE_DEF);
|
|
22
|
+
* ```
|
|
23
|
+
*
|
|
24
|
+
* @extensionPoint registry
|
|
25
|
+
* @stability experimental
|
|
26
|
+
*/
|
|
27
|
+
export declare const WEBHOOK_SIGNING_USER_CREDENTIAL_PURPOSE_DEF: UserCredentialPurposeDef;
|
|
28
|
+
//# sourceMappingURL=webhooks.credentials.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"webhooks.credentials.d.ts","sourceRoot":"","sources":["../../src/webhooks/webhooks.credentials.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,oBAAoB,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAC;AAG3F;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,sCAAsC,EAAE,oBAKnD,CAAC;AAEH;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,2CAA2C,EAAE,wBAKxD,CAAC"}
|