@marinoscar/platform-api 0.1.0-next.18 → 0.1.0-next.20
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +28 -0
- package/README.md +1 -0
- package/dist/ai/runtime/ai-limits.service.d.ts.map +1 -1
- package/dist/ai/runtime/ai-limits.service.js +8 -1
- package/dist/ai/runtime/ai-limits.service.js.map +1 -1
- package/dist/ai/usage/ai-usage-admin.controller.d.ts +6 -3
- package/dist/ai/usage/ai-usage-admin.controller.d.ts.map +1 -1
- package/dist/ai/usage/ai-usage-admin.controller.js +31 -17
- package/dist/ai/usage/ai-usage-admin.controller.js.map +1 -1
- package/dist/ai/usage/ai-usage.controller.d.ts +5 -2
- package/dist/ai/usage/ai-usage.controller.d.ts.map +1 -1
- package/dist/ai/usage/ai-usage.controller.js +18 -11
- package/dist/ai/usage/ai-usage.controller.js.map +1 -1
- package/dist/ai/usage/ai-usage.service.d.ts +19 -4
- package/dist/ai/usage/ai-usage.service.d.ts.map +1 -1
- package/dist/ai/usage/ai-usage.service.js +84 -43
- package/dist/ai/usage/ai-usage.service.js.map +1 -1
- package/dist/ai/usage/dto/ai-usage.dto.d.ts +8 -0
- package/dist/ai/usage/dto/ai-usage.dto.d.ts.map +1 -1
- package/dist/ai/usage/dto/ai-usage.dto.js +16 -5
- package/dist/ai/usage/dto/ai-usage.dto.js.map +1 -1
- 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 +3 -0
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js +13 -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/core/timezone/request-time-zone.d.ts +61 -0
- package/dist/core/timezone/request-time-zone.d.ts.map +1 -0
- package/dist/core/timezone/request-time-zone.js +71 -0
- package/dist/core/timezone/request-time-zone.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/email/email-settings.controller.d.ts +5 -2
- package/dist/email/email-settings.controller.d.ts.map +1 -1
- package/dist/email/email-settings.controller.js +11 -5
- package/dist/email/email-settings.controller.js.map +1 -1
- package/dist/email/email-test-send.service.d.ts +11 -1
- package/dist/email/email-test-send.service.d.ts.map +1 -1
- package/dist/email/email-test-send.service.js +17 -3
- package/dist/email/email-test-send.service.js.map +1 -1
- package/dist/email/index.d.ts +2 -2
- package/dist/email/index.d.ts.map +1 -1
- package/dist/email/index.js +3 -1
- package/dist/email/index.js.map +1 -1
- package/dist/email/templates/backup-failed.email.d.ts.map +1 -1
- package/dist/email/templates/backup-failed.email.js +9 -5
- package/dist/email/templates/backup-failed.email.js.map +1 -1
- package/dist/email/templates/format-date.d.ts +39 -0
- package/dist/email/templates/format-date.d.ts.map +1 -0
- package/dist/email/templates/format-date.js +103 -0
- package/dist/email/templates/format-date.js.map +1 -0
- package/dist/email/templates/index.d.ts +2 -0
- package/dist/email/templates/index.d.ts.map +1 -1
- package/dist/email/templates/index.js +4 -1
- package/dist/email/templates/index.js.map +1 -1
- package/dist/email/templates/job-failed.email.d.ts +1 -1
- package/dist/email/templates/job-failed.email.d.ts.map +1 -1
- package/dist/email/templates/job-failed.email.js +6 -6
- package/dist/email/templates/job-failed.email.js.map +1 -1
- package/dist/email/templates/node-offline.email.d.ts.map +1 -1
- package/dist/email/templates/node-offline.email.js +11 -7
- package/dist/email/templates/node-offline.email.js.map +1 -1
- package/dist/email/templates/render-context.d.ts +5 -0
- package/dist/email/templates/render-context.d.ts.map +1 -1
- package/dist/email/templates/render-context.js.map +1 -1
- package/dist/email/templates/restore-completed.email.d.ts.map +1 -1
- package/dist/email/templates/restore-completed.email.js +9 -5
- package/dist/email/templates/restore-completed.email.js.map +1 -1
- package/dist/email/templates/role-changed.email.d.ts +1 -1
- package/dist/email/templates/role-changed.email.d.ts.map +1 -1
- package/dist/email/templates/role-changed.email.js +6 -7
- package/dist/email/templates/role-changed.email.js.map +1 -1
- package/dist/email/templates/test-email.email.d.ts +1 -1
- package/dist/email/templates/test-email.email.d.ts.map +1 -1
- package/dist/email/templates/test-email.email.js +6 -11
- package/dist/email/templates/test-email.email.js.map +1 -1
- package/dist/exports/export-job.d.ts +1 -0
- package/dist/exports/export-job.d.ts.map +1 -1
- package/dist/exports/export-job.js +2 -0
- package/dist/exports/export-job.js.map +1 -1
- package/dist/exports/export.types.d.ts +8 -0
- package/dist/exports/export.types.d.ts.map +1 -1
- package/dist/exports/exports.controller.d.ts +4 -2
- package/dist/exports/exports.controller.d.ts.map +1 -1
- package/dist/exports/exports.controller.js +15 -6
- package/dist/exports/exports.controller.js.map +1 -1
- package/dist/exports/exports.service.d.ts +5 -0
- package/dist/exports/exports.service.d.ts.map +1 -1
- package/dist/exports/exports.service.js +3 -0
- package/dist/exports/exports.service.js.map +1 -1
- package/dist/exports/handlers/export-run.handler.d.ts.map +1 -1
- package/dist/exports/handlers/export-run.handler.js +4 -1
- package/dist/exports/handlers/export-run.handler.js.map +1 -1
- package/dist/exports/index.d.ts +1 -0
- package/dist/exports/index.d.ts.map +1 -1
- package/dist/exports/index.js +7 -2
- package/dist/exports/index.js.map +1 -1
- package/dist/exports/testing/conformance.d.ts.map +1 -1
- package/dist/exports/testing/conformance.js +1 -0
- package/dist/exports/testing/conformance.js.map +1 -1
- package/dist/host/http/cors-options.d.ts +5 -1
- package/dist/host/http/cors-options.d.ts.map +1 -1
- package/dist/host/http/cors-options.js.map +1 -1
- package/dist/identity/pat/pat.controller.d.ts +4 -3
- package/dist/identity/pat/pat.controller.d.ts.map +1 -1
- package/dist/identity/pat/pat.controller.js +19 -5
- package/dist/identity/pat/pat.controller.js.map +1 -1
- package/dist/identity/pat/pat.service.d.ts +21 -0
- package/dist/identity/pat/pat.service.d.ts.map +1 -1
- package/dist/identity/pat/pat.service.js +27 -10
- package/dist/identity/pat/pat.service.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/notifications/channels/browser-notification.channel.js +1 -1
- package/dist/notifications/channels/browser-notification.channel.js.map +1 -1
- package/dist/notifications/channels/browser-templates.d.ts +12 -1
- package/dist/notifications/channels/browser-templates.d.ts.map +1 -1
- package/dist/notifications/channels/browser-templates.js +5 -4
- package/dist/notifications/channels/browser-templates.js.map +1 -1
- package/dist/notifications/channels/email-notification.channel.d.ts.map +1 -1
- package/dist/notifications/channels/email-notification.channel.js +3 -3
- package/dist/notifications/channels/email-notification.channel.js.map +1 -1
- package/dist/notifications/channels/push-notification.channel.js +1 -1
- package/dist/notifications/channels/push-notification.channel.js.map +1 -1
- package/dist/notifications/index.d.ts +1 -1
- package/dist/notifications/index.d.ts.map +1 -1
- package/dist/notifications/notification.types.d.ts +15 -0
- package/dist/notifications/notification.types.d.ts.map +1 -1
- package/dist/notifications/notification.types.js.map +1 -1
- package/dist/notifications/notifications.service.d.ts.map +1 -1
- package/dist/notifications/notifications.service.js +8 -0
- package/dist/notifications/notifications.service.js.map +1 -1
- package/dist/notifications/push-config.controller.d.ts +5 -2
- package/dist/notifications/push-config.controller.d.ts.map +1 -1
- package/dist/notifications/push-config.controller.js +11 -5
- package/dist/notifications/push-config.controller.js.map +1 -1
- package/dist/notifications/push-test.service.d.ts +1 -1
- package/dist/notifications/push-test.service.d.ts.map +1 -1
- package/dist/notifications/push-test.service.js +6 -4
- package/dist/notifications/push-test.service.js.map +1 -1
- package/dist/settings/settings-resolver.d.ts +28 -1
- package/dist/settings/settings-resolver.d.ts.map +1 -1
- package/dist/settings/settings-resolver.js +41 -0
- package/dist/settings/settings-resolver.js.map +1 -1
- package/dist/settings/settings.module.d.ts.map +1 -1
- package/dist/settings/settings.module.js +9 -4
- package/dist/settings/settings.module.js.map +1 -1
- package/dist/settings/user-settings/user-settings.service.d.ts.map +1 -1
- package/dist/settings/user-settings/user-settings.service.js +2 -4
- package/dist/settings/user-settings/user-settings.service.js.map +1 -1
- package/dist/sharing/grants/grants.service.js +2 -2
- package/dist/sharing/grants/grants.service.js.map +1 -1
- package/dist/sharing/groups/group-invites.service.js +1 -1
- package/dist/sharing/groups/group-invites.service.js.map +1 -1
- package/dist/sharing/groups/sharing-effects.d.ts +2 -1
- package/dist/sharing/groups/sharing-effects.d.ts.map +1 -1
- package/dist/sharing/groups/sharing-effects.js +4 -4
- package/dist/sharing/groups/sharing-effects.js.map +1 -1
- package/dist/sharing/index.d.ts +1 -1
- package/dist/sharing/index.d.ts.map +1 -1
- package/dist/sharing/index.js.map +1 -1
- package/dist/sharing/notifications/group-invitation.templates.d.ts +23 -0
- package/dist/sharing/notifications/group-invitation.templates.d.ts.map +1 -1
- package/dist/sharing/notifications/group-invitation.templates.js +17 -2
- package/dist/sharing/notifications/group-invitation.templates.js.map +1 -1
- package/dist/sharing/notifications/shared-with-you.templates.d.ts +1 -1
- package/dist/sharing/notifications/shared-with-you.templates.d.ts.map +1 -1
- package/dist/sharing/notifications/shared-with-you.templates.js +3 -2
- package/dist/sharing/notifications/shared-with-you.templates.js.map +1 -1
- package/dist/sharing/ports.d.ts +15 -2
- package/dist/sharing/ports.d.ts.map +1 -1
- package/dist/sharing/ports.js.map +1 -1
- 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 +332 -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,116 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { WEBHOOK_EVENT_KEY_PATTERN, type WebhookScope } from '@marinoscar/platform-contract/webhooks';
|
|
3
|
+
/**
|
|
4
|
+
* One event an endpoint can subscribe to.
|
|
5
|
+
*
|
|
6
|
+
* @stability experimental
|
|
7
|
+
*/
|
|
8
|
+
export interface WebhookEventDef {
|
|
9
|
+
/** `area.entity.action`, lower snake case segments, at least two (`nodes.node.offline`). PERMANENT. */
|
|
10
|
+
readonly key: string;
|
|
11
|
+
/** A short name for the event picker. */
|
|
12
|
+
readonly label: string;
|
|
13
|
+
/** One sentence: when the event fires. */
|
|
14
|
+
readonly description: string;
|
|
15
|
+
/** The picker's group heading (`Nodes`). */
|
|
16
|
+
readonly group: string;
|
|
17
|
+
/**
|
|
18
|
+
* Who may subscribe: `user` (a member's own endpoints; the event is about
|
|
19
|
+
* that member), `org` (an organization's endpoints) or `system` (the
|
|
20
|
+
* deployment's endpoints). An endpoint of a scope receives only events whose
|
|
21
|
+
* audience is that scope.
|
|
22
|
+
*/
|
|
23
|
+
readonly audience: WebhookScope;
|
|
24
|
+
/**
|
|
25
|
+
* The permission the endpoint's OWNER must hold when the event fans out
|
|
26
|
+
* (re-read every time, so revoking it silences the endpoint). Absent: none.
|
|
27
|
+
*/
|
|
28
|
+
readonly permission?: string;
|
|
29
|
+
/** Validates the event's `data`; exported as JSON Schema by `GET .../events`. */
|
|
30
|
+
readonly payloadSchema: z.ZodType;
|
|
31
|
+
/** A sample `data` for the catalog and the docs. */
|
|
32
|
+
readonly example?: unknown;
|
|
33
|
+
/** Who registered it (`platform` or a slice or app id). */
|
|
34
|
+
readonly source: string;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* The registered events.
|
|
38
|
+
*
|
|
39
|
+
* @stability experimental
|
|
40
|
+
*/
|
|
41
|
+
export declare const webhookEventRegistry: import("../../core/index").Registry<WebhookEventDef>;
|
|
42
|
+
/**
|
|
43
|
+
* Adds an event to the catalog. Registering the same definition again (the
|
|
44
|
+
* same object) is a no-op, so a module that composes twice in one process
|
|
45
|
+
* (Jest workers) does not fail.
|
|
46
|
+
*
|
|
47
|
+
* @param def - the event.
|
|
48
|
+
* @throws RegistryError when the key is malformed, the definition invalid, or another definition owns the key.
|
|
49
|
+
*
|
|
50
|
+
* @example
|
|
51
|
+
* ```ts
|
|
52
|
+
* registerWebhookEvent({
|
|
53
|
+
* key: 'invoices.invoice.paid', label: 'Invoice paid', description: 'An invoice was paid.',
|
|
54
|
+
* group: 'Invoices', audience: 'org', permission: 'org_webhooks:read',
|
|
55
|
+
* payloadSchema: z.object({ invoiceId: z.string() }), source: 'invoices',
|
|
56
|
+
* });
|
|
57
|
+
* ```
|
|
58
|
+
*
|
|
59
|
+
* @extensionPoint registry
|
|
60
|
+
* @stability experimental
|
|
61
|
+
*/
|
|
62
|
+
export declare function registerWebhookEvent(def: WebhookEventDef): void;
|
|
63
|
+
/**
|
|
64
|
+
* The event definition for a key, or `undefined`.
|
|
65
|
+
*
|
|
66
|
+
* @param key - an exact event key.
|
|
67
|
+
* @returns the definition.
|
|
68
|
+
*
|
|
69
|
+
* @stability experimental
|
|
70
|
+
*/
|
|
71
|
+
export declare function findWebhookEvent(key: string): WebhookEventDef | undefined;
|
|
72
|
+
/**
|
|
73
|
+
* The registered events whose audience is `scope`, in registration order.
|
|
74
|
+
*
|
|
75
|
+
* @param scope - the endpoint scope.
|
|
76
|
+
* @returns the definitions.
|
|
77
|
+
*
|
|
78
|
+
* @stability experimental
|
|
79
|
+
*/
|
|
80
|
+
export declare function webhookEventsForScope(scope: WebhookScope): WebhookEventDef[];
|
|
81
|
+
/**
|
|
82
|
+
* Whether a subscription entry (`exact`, `group.*` or `*`) matches an event key.
|
|
83
|
+
*
|
|
84
|
+
* @param pattern - one entry of an endpoint's `eventKeys`.
|
|
85
|
+
* @param eventKey - the emitted event's key.
|
|
86
|
+
* @returns `true` when it matches.
|
|
87
|
+
*
|
|
88
|
+
* @stability experimental
|
|
89
|
+
*/
|
|
90
|
+
export declare function subscriptionMatches(pattern: string, eventKey: string): boolean;
|
|
91
|
+
/**
|
|
92
|
+
* Whether any entry of `patterns` matches `eventKey`.
|
|
93
|
+
*
|
|
94
|
+
* @param patterns - an endpoint's `eventKeys`.
|
|
95
|
+
* @param eventKey - the emitted event's key.
|
|
96
|
+
* @returns `true` when subscribed.
|
|
97
|
+
*
|
|
98
|
+
* @stability experimental
|
|
99
|
+
*/
|
|
100
|
+
export declare function isSubscribed(patterns: readonly string[], eventKey: string): boolean;
|
|
101
|
+
/**
|
|
102
|
+
* Whether a subscription entry could ever match a registered event of `scope`
|
|
103
|
+
* (an exact key that is registered for the scope, a wildcard that matches at
|
|
104
|
+
* least one, or `*`).
|
|
105
|
+
*
|
|
106
|
+
* @param pattern - one entry.
|
|
107
|
+
* @param scope - the endpoint scope.
|
|
108
|
+
* @returns `true` when it names something subscribable.
|
|
109
|
+
*
|
|
110
|
+
* @stability experimental
|
|
111
|
+
*/
|
|
112
|
+
export declare function patternHasEventsForScope(pattern: string, scope: WebhookScope): boolean;
|
|
113
|
+
/** The JSON Schema of an event's `data`, or an open object when conversion is not possible. */
|
|
114
|
+
export declare function jsonSchemaOf(event: WebhookEventDef): Record<string, unknown>;
|
|
115
|
+
export { WEBHOOK_EVENT_KEY_PATTERN };
|
|
116
|
+
//# sourceMappingURL=webhook-event.registry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"webhook-event.registry.d.ts","sourceRoot":"","sources":["../../../src/webhooks/registry/webhook-event.registry.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAEL,yBAAyB,EAEzB,KAAK,YAAY,EAClB,MAAM,wCAAwC,CAAC;AAIhD;;;;GAIG;AACH,MAAM,WAAW,eAAe;IAC9B,uGAAuG;IACvG,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,yCAAyC;IACzC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,0CAA0C;IAC1C,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,4CAA4C;IAC5C,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB;;;;;OAKG;IACH,QAAQ,CAAC,QAAQ,EAAE,YAAY,CAAC;IAChC;;;OAGG;IACH,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,iFAAiF;IACjF,QAAQ,CAAC,aAAa,EAAE,CAAC,CAAC,OAAO,CAAC;IAClC,oDAAoD;IACpD,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;IAC3B,2DAA2D;IAC3D,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAID;;;;GAIG;AACH,eAAO,MAAM,oBAAoB,sDAoB/B,CAAC;AAEH;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,eAAe,GAAG,IAAI,CAG/D;AAED;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,eAAe,GAAG,SAAS,CAEzE;AAED;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,YAAY,GAAG,eAAe,EAAE,CAE5E;AAED;;;;;;;;GAQG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAI9E;AAED;;;;;;;;GAQG;AACH,wBAAgB,YAAY,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAEnF;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,GAAG,OAAO,CAEtF;AAED,+FAA+F;AAC/F,wBAAgB,YAAY,CAAC,KAAK,EAAE,eAAe,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAM5E;AAED,OAAO,EAAE,yBAAyB,EAAE,CAAC"}
|
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// =============================================================================
|
|
3
|
+
// The webhook event catalog (issue #1046)
|
|
4
|
+
// =============================================================================
|
|
5
|
+
//
|
|
6
|
+
// An OPEN vocabulary: an event key is a string, registered with
|
|
7
|
+
// `registerWebhookEvent` from the slice that raises it (the nodes and jobs
|
|
8
|
+
// bridges below are the platform's own; the alerts slice registers its two the
|
|
9
|
+
// same way). A key is permanent once an endpoint subscribes to it. Framework-
|
|
10
|
+
// free, like every registry: no Nest, so the catalog loads in a seed or a script.
|
|
11
|
+
// =============================================================================
|
|
12
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
13
|
+
exports.WEBHOOK_EVENT_KEY_PATTERN = exports.webhookEventRegistry = void 0;
|
|
14
|
+
exports.registerWebhookEvent = registerWebhookEvent;
|
|
15
|
+
exports.findWebhookEvent = findWebhookEvent;
|
|
16
|
+
exports.webhookEventsForScope = webhookEventsForScope;
|
|
17
|
+
exports.subscriptionMatches = subscriptionMatches;
|
|
18
|
+
exports.isSubscribed = isSubscribed;
|
|
19
|
+
exports.patternHasEventsForScope = patternHasEventsForScope;
|
|
20
|
+
exports.jsonSchemaOf = jsonSchemaOf;
|
|
21
|
+
const zod_1 = require("zod");
|
|
22
|
+
const webhooks_1 = require("@marinoscar/platform-contract/webhooks");
|
|
23
|
+
Object.defineProperty(exports, "WEBHOOK_EVENT_KEY_PATTERN", { enumerable: true, get: function () { return webhooks_1.WEBHOOK_EVENT_KEY_PATTERN; } });
|
|
24
|
+
const index_1 = require("../../core/index");
|
|
25
|
+
const KEY_FULL = new RegExp(`^${webhooks_1.WEBHOOK_EVENT_KEY_REGEX_SOURCE}$`);
|
|
26
|
+
/**
|
|
27
|
+
* The registered events.
|
|
28
|
+
*
|
|
29
|
+
* @stability experimental
|
|
30
|
+
*/
|
|
31
|
+
exports.webhookEventRegistry = (0, index_1.defineRegistry)({
|
|
32
|
+
name: 'webhook-events',
|
|
33
|
+
idOf: (event) => event.key,
|
|
34
|
+
idPattern: KEY_FULL,
|
|
35
|
+
order: 'registration',
|
|
36
|
+
validate: (event) => {
|
|
37
|
+
if (event.key.length > webhooks_1.WEBHOOK_EVENT_KEY_MAX)
|
|
38
|
+
throw new Error(`key must be at most ${webhooks_1.WEBHOOK_EVENT_KEY_MAX} characters`);
|
|
39
|
+
for (const field of ['label', 'description', 'group', 'source']) {
|
|
40
|
+
if (typeof event[field] !== 'string' || event[field].trim() === '')
|
|
41
|
+
throw new Error(`${field} must be a non-empty string`);
|
|
42
|
+
}
|
|
43
|
+
if (!['user', 'org', 'system'].includes(event.audience))
|
|
44
|
+
throw new Error(`audience must be user, org or system (got ${String(event.audience)})`);
|
|
45
|
+
if (event.permission !== undefined && (typeof event.permission !== 'string' || event.permission === '')) {
|
|
46
|
+
throw new Error('permission must be a non-empty string when present');
|
|
47
|
+
}
|
|
48
|
+
if (!event.payloadSchema || typeof event.payloadSchema.safeParse !== 'function') {
|
|
49
|
+
throw new Error('payloadSchema must be a zod schema');
|
|
50
|
+
}
|
|
51
|
+
},
|
|
52
|
+
describeDuplicate: (existing, incoming) => `Webhook event "${incoming.key}" is already registered by "${existing.source}"; "${incoming.source}" cannot claim it too. An event key is permanent once an endpoint subscribes to it.`,
|
|
53
|
+
});
|
|
54
|
+
/**
|
|
55
|
+
* Adds an event to the catalog. Registering the same definition again (the
|
|
56
|
+
* same object) is a no-op, so a module that composes twice in one process
|
|
57
|
+
* (Jest workers) does not fail.
|
|
58
|
+
*
|
|
59
|
+
* @param def - the event.
|
|
60
|
+
* @throws RegistryError when the key is malformed, the definition invalid, or another definition owns the key.
|
|
61
|
+
*
|
|
62
|
+
* @example
|
|
63
|
+
* ```ts
|
|
64
|
+
* registerWebhookEvent({
|
|
65
|
+
* key: 'invoices.invoice.paid', label: 'Invoice paid', description: 'An invoice was paid.',
|
|
66
|
+
* group: 'Invoices', audience: 'org', permission: 'org_webhooks:read',
|
|
67
|
+
* payloadSchema: z.object({ invoiceId: z.string() }), source: 'invoices',
|
|
68
|
+
* });
|
|
69
|
+
* ```
|
|
70
|
+
*
|
|
71
|
+
* @extensionPoint registry
|
|
72
|
+
* @stability experimental
|
|
73
|
+
*/
|
|
74
|
+
function registerWebhookEvent(def) {
|
|
75
|
+
if (exports.webhookEventRegistry.get(def.key) === def)
|
|
76
|
+
return;
|
|
77
|
+
exports.webhookEventRegistry.register(def);
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* The event definition for a key, or `undefined`.
|
|
81
|
+
*
|
|
82
|
+
* @param key - an exact event key.
|
|
83
|
+
* @returns the definition.
|
|
84
|
+
*
|
|
85
|
+
* @stability experimental
|
|
86
|
+
*/
|
|
87
|
+
function findWebhookEvent(key) {
|
|
88
|
+
return exports.webhookEventRegistry.get(key);
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* The registered events whose audience is `scope`, in registration order.
|
|
92
|
+
*
|
|
93
|
+
* @param scope - the endpoint scope.
|
|
94
|
+
* @returns the definitions.
|
|
95
|
+
*
|
|
96
|
+
* @stability experimental
|
|
97
|
+
*/
|
|
98
|
+
function webhookEventsForScope(scope) {
|
|
99
|
+
return exports.webhookEventRegistry.list().filter((event) => event.audience === scope);
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* Whether a subscription entry (`exact`, `group.*` or `*`) matches an event key.
|
|
103
|
+
*
|
|
104
|
+
* @param pattern - one entry of an endpoint's `eventKeys`.
|
|
105
|
+
* @param eventKey - the emitted event's key.
|
|
106
|
+
* @returns `true` when it matches.
|
|
107
|
+
*
|
|
108
|
+
* @stability experimental
|
|
109
|
+
*/
|
|
110
|
+
function subscriptionMatches(pattern, eventKey) {
|
|
111
|
+
if (pattern === '*')
|
|
112
|
+
return true;
|
|
113
|
+
if (pattern.endsWith('.*'))
|
|
114
|
+
return eventKey.startsWith(pattern.slice(0, -1));
|
|
115
|
+
return pattern === eventKey;
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* Whether any entry of `patterns` matches `eventKey`.
|
|
119
|
+
*
|
|
120
|
+
* @param patterns - an endpoint's `eventKeys`.
|
|
121
|
+
* @param eventKey - the emitted event's key.
|
|
122
|
+
* @returns `true` when subscribed.
|
|
123
|
+
*
|
|
124
|
+
* @stability experimental
|
|
125
|
+
*/
|
|
126
|
+
function isSubscribed(patterns, eventKey) {
|
|
127
|
+
return patterns.some((pattern) => subscriptionMatches(pattern, eventKey));
|
|
128
|
+
}
|
|
129
|
+
/**
|
|
130
|
+
* Whether a subscription entry could ever match a registered event of `scope`
|
|
131
|
+
* (an exact key that is registered for the scope, a wildcard that matches at
|
|
132
|
+
* least one, or `*`).
|
|
133
|
+
*
|
|
134
|
+
* @param pattern - one entry.
|
|
135
|
+
* @param scope - the endpoint scope.
|
|
136
|
+
* @returns `true` when it names something subscribable.
|
|
137
|
+
*
|
|
138
|
+
* @stability experimental
|
|
139
|
+
*/
|
|
140
|
+
function patternHasEventsForScope(pattern, scope) {
|
|
141
|
+
return webhookEventsForScope(scope).some((event) => subscriptionMatches(pattern, event.key));
|
|
142
|
+
}
|
|
143
|
+
/** The JSON Schema of an event's `data`, or an open object when conversion is not possible. */
|
|
144
|
+
function jsonSchemaOf(event) {
|
|
145
|
+
try {
|
|
146
|
+
return zod_1.z.toJSONSchema(event.payloadSchema, { unrepresentable: 'any' });
|
|
147
|
+
}
|
|
148
|
+
catch {
|
|
149
|
+
return { type: 'object' };
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
//# sourceMappingURL=webhook-event.registry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"webhook-event.registry.js","sourceRoot":"","sources":["../../../src/webhooks/registry/webhook-event.registry.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A fresh signing secret: `whsec_` and 32 random bytes in base64.
|
|
3
|
+
*
|
|
4
|
+
* @returns the secret. Shown once to its owner; stored only in the credentials store.
|
|
5
|
+
*
|
|
6
|
+
* @stability experimental
|
|
7
|
+
*/
|
|
8
|
+
export declare function generateWebhookSecret(): string;
|
|
9
|
+
/** What {@link signedHeaders} takes. @stability experimental */
|
|
10
|
+
export interface SignedHeadersInput {
|
|
11
|
+
/** The `webhook-id`: the event id, identical across retries. */
|
|
12
|
+
readonly id: string;
|
|
13
|
+
/** Unix seconds at signing time. */
|
|
14
|
+
readonly timestamp: number;
|
|
15
|
+
/** The exact body. */
|
|
16
|
+
readonly body: string;
|
|
17
|
+
/** The current secret first, then the previous one while the overlap lasts. */
|
|
18
|
+
readonly secrets: readonly string[];
|
|
19
|
+
/** The `User-Agent`. */
|
|
20
|
+
readonly userAgent: string;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* The request headers of one delivery attempt, including `webhook-signature`.
|
|
24
|
+
*
|
|
25
|
+
* @param input - see {@link SignedHeadersInput}.
|
|
26
|
+
* @returns the headers.
|
|
27
|
+
*
|
|
28
|
+
* @stability experimental
|
|
29
|
+
*/
|
|
30
|
+
export declare function signedHeaders(input: SignedHeadersInput): Promise<Record<string, string>>;
|
|
31
|
+
//# sourceMappingURL=signing.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"signing.d.ts","sourceRoot":"","sources":["../../src/webhooks/signing.ts"],"names":[],"mappings":"AAeA;;;;;;GAMG;AACH,wBAAgB,qBAAqB,IAAI,MAAM,CAE9C;AAED,gEAAgE;AAChE,MAAM,WAAW,kBAAkB;IACjC,gEAAgE;IAChE,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,oCAAoC;IACpC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,sBAAsB;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,+EAA+E;IAC/E,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;IACpC,wBAAwB;IACxB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B;AAED;;;;;;;GAOG;AACH,wBAAsB,aAAa,CAAC,KAAK,EAAE,kBAAkB,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAY9F"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// =============================================================================
|
|
3
|
+
// Signing (issue #1046)
|
|
4
|
+
// =============================================================================
|
|
5
|
+
//
|
|
6
|
+
// Standard Webhooks, scheme v1, through the contract's `signWebhookPayload`
|
|
7
|
+
// (the same helper a receiver verifies with). The slice never invents a second
|
|
8
|
+
// implementation: what is signed here is what `verifyWebhookSignature` checks.
|
|
9
|
+
// During a rotation overlap the header carries two space-separated signatures,
|
|
10
|
+
// the current secret's first.
|
|
11
|
+
// =============================================================================
|
|
12
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
13
|
+
exports.generateWebhookSecret = generateWebhookSecret;
|
|
14
|
+
exports.signedHeaders = signedHeaders;
|
|
15
|
+
const node_crypto_1 = require("node:crypto");
|
|
16
|
+
const webhooks_1 = require("@marinoscar/platform-contract/webhooks");
|
|
17
|
+
/**
|
|
18
|
+
* A fresh signing secret: `whsec_` and 32 random bytes in base64.
|
|
19
|
+
*
|
|
20
|
+
* @returns the secret. Shown once to its owner; stored only in the credentials store.
|
|
21
|
+
*
|
|
22
|
+
* @stability experimental
|
|
23
|
+
*/
|
|
24
|
+
function generateWebhookSecret() {
|
|
25
|
+
return `${webhooks_1.WEBHOOK_SECRET_PREFIX}${(0, node_crypto_1.randomBytes)(32).toString('base64')}`;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* The request headers of one delivery attempt, including `webhook-signature`.
|
|
29
|
+
*
|
|
30
|
+
* @param input - see {@link SignedHeadersInput}.
|
|
31
|
+
* @returns the headers.
|
|
32
|
+
*
|
|
33
|
+
* @stability experimental
|
|
34
|
+
*/
|
|
35
|
+
async function signedHeaders(input) {
|
|
36
|
+
const signatures = [];
|
|
37
|
+
for (const secret of input.secrets) {
|
|
38
|
+
signatures.push(await (0, webhooks_1.signWebhookPayload)({ secret, id: input.id, timestamp: input.timestamp, body: input.body }));
|
|
39
|
+
}
|
|
40
|
+
return {
|
|
41
|
+
'content-type': 'application/json',
|
|
42
|
+
'user-agent': input.userAgent,
|
|
43
|
+
[webhooks_1.WEBHOOK_HEADERS.ID]: input.id,
|
|
44
|
+
[webhooks_1.WEBHOOK_HEADERS.TIMESTAMP]: String(input.timestamp),
|
|
45
|
+
[webhooks_1.WEBHOOK_HEADERS.SIGNATURE]: signatures.join(' '),
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
//# sourceMappingURL=signing.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"signing.js","sourceRoot":"","sources":["../../src/webhooks/signing.ts"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,wBAAwB;AACxB,gFAAgF;AAChF,EAAE;AACF,4EAA4E;AAC5E,+EAA+E;AAC/E,+EAA+E;AAC/E,+EAA+E;AAC/E,8BAA8B;AAC9B,gFAAgF;;AAahF,sDAEC;AAwBD,sCAYC;AAjDD,6CAA0C;AAE1C,qEAAoH;AAEpH;;;;;;GAMG;AACH,SAAgB,qBAAqB;IACnC,OAAO,GAAG,gCAAqB,GAAG,IAAA,yBAAW,EAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;AACzE,CAAC;AAgBD;;;;;;;GAOG;AACI,KAAK,UAAU,aAAa,CAAC,KAAyB;IAC3D,MAAM,UAAU,GAAa,EAAE,CAAC;IAChC,KAAK,MAAM,MAAM,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;QACnC,UAAU,CAAC,IAAI,CAAC,MAAM,IAAA,6BAAkB,EAAC,EAAE,MAAM,EAAE,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,SAAS,EAAE,KAAK,CAAC,SAAS,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IACpH,CAAC;IACD,OAAO;QACL,cAAc,EAAE,kBAAkB;QAClC,YAAY,EAAE,KAAK,CAAC,SAAS;QAC7B,CAAC,0BAAe,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,EAAE;QAC9B,CAAC,0BAAe,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC;QACpD,CAAC,0BAAe,CAAC,SAAS,CAAC,EAAE,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC;KAClD,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { JobsService, type JobsPrisma } from '../../jobs/index';
|
|
2
|
+
/**
|
|
3
|
+
* The daily `@Cron` that enqueues `webhooks.deliveries_purge` (enqueue only).
|
|
4
|
+
*
|
|
5
|
+
* @internal
|
|
6
|
+
*
|
|
7
|
+
* @stability experimental
|
|
8
|
+
*/
|
|
9
|
+
export declare class WebhookPurgeTask {
|
|
10
|
+
private readonly jobs;
|
|
11
|
+
private readonly prisma;
|
|
12
|
+
private readonly logger;
|
|
13
|
+
constructor(jobs: JobsService, prisma: JobsPrisma);
|
|
14
|
+
/** Enqueues today's purge, unless one is already pending. 04:17 UTC, off the hour. */
|
|
15
|
+
handleCron(): Promise<void>;
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=webhook-purge.task.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"webhook-purge.task.d.ts","sourceRoot":"","sources":["../../../src/webhooks/tasks/webhook-purge.task.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,WAAW,EAA0B,KAAK,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAGxF;;;;;;GAMG;AACH,qBACa,gBAAgB;IAIzB,OAAO,CAAC,QAAQ,CAAC,IAAI;IACI,OAAO,CAAC,QAAQ,CAAC,MAAM;IAJlD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAqC;gBAGzC,IAAI,EAAE,WAAW,EACQ,MAAM,EAAE,UAAU;IAG9D,sFAAsF;IAEhF,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;CASlC"}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// =============================================================================
|
|
3
|
+
// WebhookPurgeTask: queues the daily delivery purge (issue #1046)
|
|
4
|
+
// =============================================================================
|
|
5
|
+
//
|
|
6
|
+
// ⚠ THIS TASK DELETES NOTHING. A `@Cron` decides and enqueues, nothing more
|
|
7
|
+
// (the `cron-enqueue-only` conformance suite). The deleting is
|
|
8
|
+
// `webhooks.deliveries_purge`'s work, on a worker slot, retried by the queue.
|
|
9
|
+
// =============================================================================
|
|
10
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
11
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
12
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
13
|
+
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;
|
|
14
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
15
|
+
};
|
|
16
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
17
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
18
|
+
};
|
|
19
|
+
var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
20
|
+
return function (target, key) { decorator(target, key, paramIndex); }
|
|
21
|
+
};
|
|
22
|
+
var WebhookPurgeTask_1;
|
|
23
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
24
|
+
exports.WebhookPurgeTask = void 0;
|
|
25
|
+
const common_1 = require("@nestjs/common");
|
|
26
|
+
const schedule_1 = require("@nestjs/schedule");
|
|
27
|
+
const index_1 = require("../../core/index");
|
|
28
|
+
const index_2 = require("../../jobs/index");
|
|
29
|
+
const webhooks_constants_1 = require("../webhooks.constants");
|
|
30
|
+
/**
|
|
31
|
+
* The daily `@Cron` that enqueues `webhooks.deliveries_purge` (enqueue only).
|
|
32
|
+
*
|
|
33
|
+
* @internal
|
|
34
|
+
*
|
|
35
|
+
* @stability experimental
|
|
36
|
+
*/
|
|
37
|
+
let WebhookPurgeTask = WebhookPurgeTask_1 = class WebhookPurgeTask {
|
|
38
|
+
jobs;
|
|
39
|
+
prisma;
|
|
40
|
+
logger = new common_1.Logger(WebhookPurgeTask_1.name);
|
|
41
|
+
constructor(jobs, prisma) {
|
|
42
|
+
this.jobs = jobs;
|
|
43
|
+
this.prisma = prisma;
|
|
44
|
+
}
|
|
45
|
+
/** Enqueues today's purge, unless one is already pending. 04:17 UTC, off the hour. */
|
|
46
|
+
async handleCron() {
|
|
47
|
+
await (0, index_2.enqueueHousekeepingJob)({
|
|
48
|
+
jobs: this.jobs,
|
|
49
|
+
prisma: this.prisma,
|
|
50
|
+
logger: this.logger,
|
|
51
|
+
type: webhooks_constants_1.WEBHOOK_PURGE_JOB_TYPE,
|
|
52
|
+
what: 'webhook delivery purge',
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
};
|
|
56
|
+
exports.WebhookPurgeTask = WebhookPurgeTask;
|
|
57
|
+
__decorate([
|
|
58
|
+
(0, schedule_1.Cron)('17 4 * * *'),
|
|
59
|
+
__metadata("design:type", Function),
|
|
60
|
+
__metadata("design:paramtypes", []),
|
|
61
|
+
__metadata("design:returntype", Promise)
|
|
62
|
+
], WebhookPurgeTask.prototype, "handleCron", null);
|
|
63
|
+
exports.WebhookPurgeTask = WebhookPurgeTask = WebhookPurgeTask_1 = __decorate([
|
|
64
|
+
(0, common_1.Injectable)(),
|
|
65
|
+
__param(1, (0, common_1.Inject)(index_1.PLATFORM_PRISMA)),
|
|
66
|
+
__metadata("design:paramtypes", [index_2.JobsService, Object])
|
|
67
|
+
], WebhookPurgeTask);
|
|
68
|
+
//# sourceMappingURL=webhook-purge.task.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"webhook-purge.task.js","sourceRoot":"","sources":["../../../src/webhooks/tasks/webhook-purge.task.ts"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,kEAAkE;AAClE,gFAAgF;AAChF,EAAE;AACF,4EAA4E;AAC5E,+DAA+D;AAC/D,8EAA8E;AAC9E,gFAAgF;;;;;;;;;;;;;;;;AAEhF,2CAA4D;AAC5D,+CAAwC;AAExC,4CAAmD;AACnD,4CAAwF;AACxF,8DAA+D;AAE/D;;;;;;GAMG;AAEI,IAAM,gBAAgB,wBAAtB,MAAM,gBAAgB;IAIR;IACyB;IAJ3B,MAAM,GAAG,IAAI,eAAM,CAAC,kBAAgB,CAAC,IAAI,CAAC,CAAC;IAE5D,YACmB,IAAiB,EACQ,MAAkB;QAD3C,SAAI,GAAJ,IAAI,CAAa;QACQ,WAAM,GAAN,MAAM,CAAY;IAC3D,CAAC;IAEJ,sFAAsF;IAEhF,AAAN,KAAK,CAAC,UAAU;QACd,MAAM,IAAA,8BAAsB,EAAC;YAC3B,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,IAAI,EAAE,2CAAsB;YAC5B,IAAI,EAAE,wBAAwB;SAC/B,CAAC,CAAC;IACL,CAAC;CACF,CAAA;AAnBY,4CAAgB;AAUrB;IADL,IAAA,eAAI,EAAC,YAAY,CAAC;;;;kDASlB;2BAlBU,gBAAgB;IAD5B,IAAA,mBAAU,GAAE;IAMR,WAAA,IAAA,eAAM,EAAC,uBAAe,CAAC,CAAA;qCADD,mBAAW;GAJzB,gBAAgB,CAmB5B"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import type { ConformanceAppSuite, ConformanceTestApi } from '../../testing/index';
|
|
2
|
+
declare module '../../testing/index' {
|
|
3
|
+
interface PlatformConformanceSuiteOptions {
|
|
4
|
+
/** The webhooks slice's suite: its options (an empty object runs it), or a skip with a reason. Registered by importing `@marinoscar/platform-api/webhooks/testing`. */
|
|
5
|
+
webhooks?: WebhooksConformanceOptions | false;
|
|
6
|
+
}
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* What the `webhooks` suite takes.
|
|
10
|
+
*
|
|
11
|
+
* @stability experimental
|
|
12
|
+
*/
|
|
13
|
+
export interface WebhooksConformanceOptions {
|
|
14
|
+
/** Extra addresses the egress case must also see refused (an app's own internal ranges). */
|
|
15
|
+
readonly extraBlockedAddresses?: readonly string[];
|
|
16
|
+
}
|
|
17
|
+
/** One route, as the suite sees it. @stability experimental */
|
|
18
|
+
export interface WebhookRoute {
|
|
19
|
+
/** `Controller#handler`. */
|
|
20
|
+
readonly id: string;
|
|
21
|
+
/** The HTTP method. */
|
|
22
|
+
readonly method: string;
|
|
23
|
+
/** Whether it is `@Public()`. */
|
|
24
|
+
readonly isPublic: boolean;
|
|
25
|
+
/** Whether a guard protects it. */
|
|
26
|
+
readonly authenticated: boolean;
|
|
27
|
+
/** The permissions it requires. */
|
|
28
|
+
readonly permissions: readonly string[];
|
|
29
|
+
}
|
|
30
|
+
/** One route with the pair of permission strings its tier enforces. @stability experimental */
|
|
31
|
+
export interface WebhookControllerRoute extends WebhookRoute {
|
|
32
|
+
/** The permission a `GET` of the tier requires. */
|
|
33
|
+
readonly read: string;
|
|
34
|
+
/** The permission every other method of the tier requires. */
|
|
35
|
+
readonly write: string;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* The routes of the three controllers, read from their metadata.
|
|
39
|
+
*
|
|
40
|
+
* @returns every handler, with the tier it belongs to.
|
|
41
|
+
*
|
|
42
|
+
* @stability experimental
|
|
43
|
+
*/
|
|
44
|
+
export declare function discoverWebhookRoutes(): WebhookControllerRoute[];
|
|
45
|
+
/**
|
|
46
|
+
* Registers the suite's cases with the test API.
|
|
47
|
+
*
|
|
48
|
+
* @param api - the runner's test API.
|
|
49
|
+
* @param options - the suite's options.
|
|
50
|
+
*
|
|
51
|
+
* @stability experimental
|
|
52
|
+
*/
|
|
53
|
+
export declare function registerWebhooksConformance(api: ConformanceTestApi, options: WebhooksConformanceOptions): void;
|
|
54
|
+
/**
|
|
55
|
+
* The `webhooks` conformance suite.
|
|
56
|
+
*
|
|
57
|
+
* @extensionPoint registry
|
|
58
|
+
* @stability experimental
|
|
59
|
+
*/
|
|
60
|
+
export declare const webhooksConformanceSuite: ConformanceAppSuite<WebhooksConformanceOptions>;
|
|
61
|
+
//# sourceMappingURL=conformance.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"conformance.d.ts","sourceRoot":"","sources":["../../../src/webhooks/testing/conformance.ts"],"names":[],"mappings":"AAoCA,OAAO,KAAK,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AASnF,OAAO,QAAQ,qBAAqB,CAAC;IACnC,UAAU,+BAA+B;QACvC,uKAAuK;QACvK,QAAQ,CAAC,EAAE,0BAA0B,GAAG,KAAK,CAAC;KAC/C;CACF;AAED;;;;GAIG;AACH,MAAM,WAAW,0BAA0B;IACzC,4FAA4F;IAC5F,QAAQ,CAAC,qBAAqB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CACpD;AAED,+DAA+D;AAC/D,MAAM,WAAW,YAAY;IAC3B,4BAA4B;IAC5B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,uBAAuB;IACvB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,iCAAiC;IACjC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,mCAAmC;IACnC,QAAQ,CAAC,aAAa,EAAE,OAAO,CAAC;IAChC,mCAAmC;IACnC,QAAQ,CAAC,WAAW,EAAE,SAAS,MAAM,EAAE,CAAC;CACzC;AAED,+FAA+F;AAC/F,MAAM,WAAW,sBAAuB,SAAQ,YAAY;IAC1D,mDAAmD;IACnD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,8DAA8D;IAC9D,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB;AAgCD;;;;;;GAMG;AACH,wBAAgB,qBAAqB,IAAI,sBAAsB,EAAE,CAsBhE;AAiCD;;;;;;;GAOG;AACH,wBAAgB,2BAA2B,CAAC,GAAG,EAAE,kBAAkB,EAAE,OAAO,EAAE,0BAA0B,GAAG,IAAI,CAiK9G;AAED;;;;;GAKG;AACH,eAAO,MAAM,wBAAwB,EAAE,mBAAmB,CAAC,0BAA0B,CAQpF,CAAC"}
|