@marinoscar/platform-api 0.0.0-stage → 0.1.0-next.3
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 +54 -0
- package/LICENSE +21 -0
- package/README.md +106 -2
- package/dist/core/crypto/encryption-key-startup-check.d.ts +29 -0
- package/dist/core/crypto/encryption-key-startup-check.d.ts.map +1 -0
- package/dist/core/crypto/encryption-key-startup-check.js +221 -0
- package/dist/core/crypto/encryption-key-startup-check.js.map +1 -0
- package/dist/core/crypto/secret-cipher.d.ts +151 -0
- package/dist/core/crypto/secret-cipher.d.ts.map +1 -0
- package/dist/core/crypto/secret-cipher.js +452 -0
- package/dist/core/crypto/secret-cipher.js.map +1 -0
- package/dist/core/data-access/index.d.ts +6 -0
- package/dist/core/data-access/index.d.ts.map +1 -0
- package/dist/core/data-access/index.js +19 -0
- package/dist/core/data-access/index.js.map +1 -0
- package/dist/core/data-access/scoped-access.error.d.ts +35 -0
- package/dist/core/data-access/scoped-access.error.d.ts.map +1 -0
- package/dist/core/data-access/scoped-access.error.js +43 -0
- package/dist/core/data-access/scoped-access.error.js.map +1 -0
- package/dist/core/data-access/scoped-client.d.ts +104 -0
- package/dist/core/data-access/scoped-client.d.ts.map +1 -0
- package/dist/core/data-access/scoped-client.js +270 -0
- package/dist/core/data-access/scoped-client.js.map +1 -0
- package/dist/core/data-access/types.d.ts +85 -0
- package/dist/core/data-access/types.d.ts.map +1 -0
- package/dist/core/data-access/types.js +12 -0
- package/dist/core/data-access/types.js.map +1 -0
- package/dist/core/data-access/user-owned-data.registry.d.ts +60 -0
- package/dist/core/data-access/user-owned-data.registry.d.ts.map +1 -0
- package/dist/core/data-access/user-owned-data.registry.js +140 -0
- package/dist/core/data-access/user-owned-data.registry.js.map +1 -0
- package/dist/core/errors/database-seed.exception.d.ts +23 -0
- package/dist/core/errors/database-seed.exception.d.ts.map +1 -0
- package/dist/core/errors/database-seed.exception.js +49 -0
- package/dist/core/errors/database-seed.exception.js.map +1 -0
- package/dist/core/errors/error.dto.d.ts +47 -0
- package/dist/core/errors/error.dto.d.ts.map +1 -0
- package/dist/core/errors/error.dto.js +121 -0
- package/dist/core/errors/error.dto.js.map +1 -0
- package/dist/core/errors/http-exception.filter.d.ts +63 -0
- package/dist/core/errors/http-exception.filter.d.ts.map +1 -0
- package/dist/core/errors/http-exception.filter.js +234 -0
- package/dist/core/errors/http-exception.filter.js.map +1 -0
- package/dist/core/errors/verbatim-error-body.exception.d.ts +46 -0
- package/dist/core/errors/verbatim-error-body.exception.d.ts.map +1 -0
- package/dist/core/errors/verbatim-error-body.exception.js +135 -0
- package/dist/core/errors/verbatim-error-body.exception.js.map +1 -0
- package/dist/core/host/index.d.ts +7 -0
- package/dist/core/host/index.d.ts.map +1 -0
- package/dist/core/host/index.js +14 -0
- package/dist/core/host/index.js.map +1 -0
- package/dist/core/host/platform-host.d.ts +58 -0
- package/dist/core/host/platform-host.d.ts.map +1 -0
- package/dist/core/host/platform-host.js +104 -0
- package/dist/core/host/platform-host.js.map +1 -0
- package/dist/core/host/platform-host.module.d.ts +53 -0
- package/dist/core/host/platform-host.module.d.ts.map +1 -0
- package/dist/core/host/platform-host.module.js +90 -0
- package/dist/core/host/platform-host.module.js.map +1 -0
- package/dist/core/host/ports.d.ts +132 -0
- package/dist/core/host/ports.d.ts.map +1 -0
- package/dist/core/host/ports.js +48 -0
- package/dist/core/host/ports.js.map +1 -0
- package/dist/core/index.d.ts +15 -0
- package/dist/core/index.d.ts.map +1 -0
- package/dist/core/index.js +77 -0
- package/dist/core/index.js.map +1 -0
- package/dist/core/openapi/openapi-tag.registry.d.ts +80 -0
- package/dist/core/openapi/openapi-tag.registry.d.ts.map +1 -0
- package/dist/core/openapi/openapi-tag.registry.js +72 -0
- package/dist/core/openapi/openapi-tag.registry.js.map +1 -0
- package/dist/core/principal/index.d.ts +6 -0
- package/dist/core/principal/index.d.ts.map +1 -0
- package/dist/core/principal/index.js +3 -0
- package/dist/core/principal/index.js.map +1 -0
- package/dist/core/principal/principal.types.d.ts +222 -0
- package/dist/core/principal/principal.types.d.ts.map +1 -0
- package/dist/core/principal/principal.types.js +22 -0
- package/dist/core/principal/principal.types.js.map +1 -0
- package/dist/core/registry/index.d.ts +4 -0
- package/dist/core/registry/index.d.ts.map +1 -0
- package/dist/core/registry/index.js +19 -0
- package/dist/core/registry/index.js.map +1 -0
- package/dist/core/registry/registry-freeze.service.d.ts +14 -0
- package/dist/core/registry/registry-freeze.service.d.ts.map +1 -0
- package/dist/core/registry/registry-freeze.service.js +55 -0
- package/dist/core/registry/registry-freeze.service.js.map +1 -0
- package/dist/core/registry/registry.d.ts +268 -0
- package/dist/core/registry/registry.d.ts.map +1 -0
- package/dist/core/registry/registry.js +351 -0
- package/dist/core/registry/registry.js.map +1 -0
- package/dist/core/registry/testing.d.ts +29 -0
- package/dist/core/registry/testing.d.ts.map +1 -0
- package/dist/core/registry/testing.js +63 -0
- package/dist/core/registry/testing.js.map +1 -0
- package/dist/doctor/doctor-check.interface.d.ts +100 -0
- package/dist/doctor/doctor-check.interface.d.ts.map +1 -0
- package/dist/doctor/doctor-check.interface.js +95 -0
- package/dist/doctor/doctor-check.interface.js.map +1 -0
- package/dist/doctor/doctor-check.registry.d.ts +37 -0
- package/dist/doctor/doctor-check.registry.d.ts.map +1 -0
- package/dist/doctor/doctor-check.registry.js +96 -0
- package/dist/doctor/doctor-check.registry.js.map +1 -0
- package/dist/doctor/doctor.controller.factory.d.ts +29 -0
- package/dist/doctor/doctor.controller.factory.d.ts.map +1 -0
- package/dist/doctor/doctor.controller.factory.js +121 -0
- package/dist/doctor/doctor.controller.factory.js.map +1 -0
- package/dist/doctor/doctor.module.d.ts +78 -0
- package/dist/doctor/doctor.module.d.ts.map +1 -0
- package/dist/doctor/doctor.module.js +158 -0
- package/dist/doctor/doctor.module.js.map +1 -0
- package/dist/doctor/doctor.options.d.ts +39 -0
- package/dist/doctor/doctor.options.d.ts.map +1 -0
- package/dist/doctor/doctor.options.js +21 -0
- package/dist/doctor/doctor.options.js.map +1 -0
- package/dist/doctor/doctor.service.d.ts +80 -0
- package/dist/doctor/doctor.service.d.ts.map +1 -0
- package/dist/doctor/doctor.service.js +301 -0
- package/dist/doctor/doctor.service.js.map +1 -0
- package/dist/doctor/dto/doctor-query.dto.d.ts +15 -0
- package/dist/doctor/dto/doctor-query.dto.d.ts.map +1 -0
- package/dist/doctor/dto/doctor-query.dto.js +16 -0
- package/dist/doctor/dto/doctor-query.dto.js.map +1 -0
- package/dist/doctor/dto/doctor-report.dto.d.ts +27 -0
- package/dist/doctor/dto/doctor-report.dto.d.ts.map +1 -0
- package/dist/doctor/dto/doctor-report.dto.js +23 -0
- package/dist/doctor/dto/doctor-report.dto.js.map +1 -0
- package/dist/doctor/egress/classify-host.d.ts +73 -0
- package/dist/doctor/egress/classify-host.d.ts.map +1 -0
- package/dist/doctor/egress/classify-host.js +210 -0
- package/dist/doctor/egress/classify-host.js.map +1 -0
- package/dist/doctor/egress/egress.registry.d.ts +34 -0
- package/dist/doctor/egress/egress.registry.d.ts.map +1 -0
- package/dist/doctor/egress/egress.registry.js +70 -0
- package/dist/doctor/egress/egress.registry.js.map +1 -0
- package/dist/doctor/egress/egress.types.d.ts +135 -0
- package/dist/doctor/egress/egress.types.d.ts.map +1 -0
- package/dist/doctor/egress/egress.types.js +42 -0
- package/dist/doctor/egress/egress.types.js.map +1 -0
- package/dist/doctor/egress/index.d.ts +6 -0
- package/dist/doctor/egress/index.d.ts.map +1 -0
- package/dist/doctor/egress/index.js +23 -0
- package/dist/doctor/egress/index.js.map +1 -0
- package/dist/doctor/egress/network-egress.doctor-check.d.ts +78 -0
- package/dist/doctor/egress/network-egress.doctor-check.d.ts.map +1 -0
- package/dist/doctor/egress/network-egress.doctor-check.js +226 -0
- package/dist/doctor/egress/network-egress.doctor-check.js.map +1 -0
- package/dist/doctor/index.d.ts +19 -0
- package/dist/doctor/index.d.ts.map +1 -0
- package/dist/doctor/index.js +66 -0
- package/dist/doctor/index.js.map +1 -0
- package/dist/doctor/support-bundle/index.d.ts +12 -0
- package/dist/doctor/support-bundle/index.d.ts.map +1 -0
- package/dist/doctor/support-bundle/index.js +32 -0
- package/dist/doctor/support-bundle/index.js.map +1 -0
- package/dist/doctor/support-bundle/redact.d.ts +76 -0
- package/dist/doctor/support-bundle/redact.d.ts.map +1 -0
- package/dist/doctor/support-bundle/redact.js +236 -0
- package/dist/doctor/support-bundle/redact.js.map +1 -0
- package/dist/doctor/support-bundle/sections/doctor.section.d.ts +81 -0
- package/dist/doctor/support-bundle/sections/doctor.section.d.ts.map +1 -0
- package/dist/doctor/support-bundle/sections/doctor.section.js +83 -0
- package/dist/doctor/support-bundle/sections/doctor.section.js.map +1 -0
- package/dist/doctor/support-bundle/sections/egress.section.d.ts +73 -0
- package/dist/doctor/support-bundle/sections/egress.section.d.ts.map +1 -0
- package/dist/doctor/support-bundle/sections/egress.section.js +97 -0
- package/dist/doctor/support-bundle/sections/egress.section.js.map +1 -0
- package/dist/doctor/support-bundle/sections/meta.section.d.ts +39 -0
- package/dist/doctor/support-bundle/sections/meta.section.d.ts.map +1 -0
- package/dist/doctor/support-bundle/sections/meta.section.js +89 -0
- package/dist/doctor/support-bundle/sections/meta.section.js.map +1 -0
- package/dist/doctor/support-bundle/support-bundle-section.interface.d.ts +100 -0
- package/dist/doctor/support-bundle/support-bundle-section.interface.d.ts.map +1 -0
- package/dist/doctor/support-bundle/support-bundle-section.interface.js +59 -0
- package/dist/doctor/support-bundle/support-bundle-section.interface.js.map +1 -0
- package/dist/doctor/support-bundle/support-bundle.controller.d.ts +57 -0
- package/dist/doctor/support-bundle/support-bundle.controller.d.ts.map +1 -0
- package/dist/doctor/support-bundle/support-bundle.controller.js +141 -0
- package/dist/doctor/support-bundle/support-bundle.controller.js.map +1 -0
- package/dist/doctor/support-bundle/support-bundle.options.d.ts +92 -0
- package/dist/doctor/support-bundle/support-bundle.options.d.ts.map +1 -0
- package/dist/doctor/support-bundle/support-bundle.options.js +100 -0
- package/dist/doctor/support-bundle/support-bundle.options.js.map +1 -0
- package/dist/doctor/support-bundle/support-bundle.registry.d.ts +38 -0
- package/dist/doctor/support-bundle/support-bundle.registry.d.ts.map +1 -0
- package/dist/doctor/support-bundle/support-bundle.registry.js +90 -0
- package/dist/doctor/support-bundle/support-bundle.registry.js.map +1 -0
- package/dist/doctor/support-bundle/support-bundle.service.d.ts +63 -0
- package/dist/doctor/support-bundle/support-bundle.service.d.ts.map +1 -0
- package/dist/doctor/support-bundle/support-bundle.service.js +244 -0
- package/dist/doctor/support-bundle/support-bundle.service.js.map +1 -0
- package/dist/index.d.ts +11 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +14 -0
- package/dist/index.js.map +1 -0
- package/dist/otel-core/index.d.ts +9 -0
- package/dist/otel-core/index.d.ts.map +1 -0
- package/dist/otel-core/index.js +58 -0
- package/dist/otel-core/index.js.map +1 -0
- package/dist/otel-core/metrics/gauge-provider.d.ts +44 -0
- package/dist/otel-core/metrics/gauge-provider.d.ts.map +1 -0
- package/dist/otel-core/metrics/gauge-provider.js +37 -0
- package/dist/otel-core/metrics/gauge-provider.js.map +1 -0
- package/dist/otel-core/metrics/labels.d.ts +79 -0
- package/dist/otel-core/metrics/labels.d.ts.map +1 -0
- package/dist/otel-core/metrics/labels.js +135 -0
- package/dist/otel-core/metrics/labels.js.map +1 -0
- package/dist/otel-core/metrics/metric-name.registry.d.ts +130 -0
- package/dist/otel-core/metrics/metric-name.registry.d.ts.map +1 -0
- package/dist/otel-core/metrics/metric-name.registry.js +134 -0
- package/dist/otel-core/metrics/metric-name.registry.js.map +1 -0
- package/dist/otel-core/metrics/metrics-host.service.d.ts +163 -0
- package/dist/otel-core/metrics/metrics-host.service.d.ts.map +1 -0
- package/dist/otel-core/metrics/metrics-host.service.js +344 -0
- package/dist/otel-core/metrics/metrics-host.service.js.map +1 -0
- package/dist/otel-core/metrics/otel-metrics.module.d.ts +54 -0
- package/dist/otel-core/metrics/otel-metrics.module.d.ts.map +1 -0
- package/dist/otel-core/metrics/otel-metrics.module.js +83 -0
- package/dist/otel-core/metrics/otel-metrics.module.js.map +1 -0
- package/dist/otel-core/sdk/index.d.ts +5 -0
- package/dist/otel-core/sdk/index.d.ts.map +1 -0
- package/dist/otel-core/sdk/index.js +27 -0
- package/dist/otel-core/sdk/index.js.map +1 -0
- package/dist/otel-core/sdk/initialize-otel.d.ts +126 -0
- package/dist/otel-core/sdk/initialize-otel.d.ts.map +1 -0
- package/dist/otel-core/sdk/initialize-otel.js +204 -0
- package/dist/otel-core/sdk/initialize-otel.js.map +1 -0
- package/dist/otel-core/sdk/instance-id.d.ts +29 -0
- package/dist/otel-core/sdk/instance-id.d.ts.map +1 -0
- package/dist/otel-core/sdk/instance-id.js +65 -0
- package/dist/otel-core/sdk/instance-id.js.map +1 -0
- package/dist/otel-core/sdk/service-name.d.ts +28 -0
- package/dist/otel-core/sdk/service-name.d.ts.map +1 -0
- package/dist/otel-core/sdk/service-name.js +63 -0
- package/dist/otel-core/sdk/service-name.js.map +1 -0
- package/dist/otel-core/sdk/telemetry-gate.d.ts +116 -0
- package/dist/otel-core/sdk/telemetry-gate.d.ts.map +1 -0
- package/dist/otel-core/sdk/telemetry-gate.js +297 -0
- package/dist/otel-core/sdk/telemetry-gate.js.map +1 -0
- package/dist/otel-core/spans/request-span-attributes.d.ts +58 -0
- package/dist/otel-core/spans/request-span-attributes.d.ts.map +1 -0
- package/dist/otel-core/spans/request-span-attributes.js +155 -0
- package/dist/otel-core/spans/request-span-attributes.js.map +1 -0
- package/dist/otel-core/spans/trace.decorator.d.ts +36 -0
- package/dist/otel-core/spans/trace.decorator.d.ts.map +1 -0
- package/dist/otel-core/spans/trace.decorator.js +74 -0
- package/dist/otel-core/spans/trace.decorator.js.map +1 -0
- package/dist/telemetry/assistant/telemetry-ai-enabled.guard.d.ts +15 -0
- package/dist/telemetry/assistant/telemetry-ai-enabled.guard.d.ts.map +1 -0
- package/dist/telemetry/assistant/telemetry-ai-enabled.guard.js +50 -0
- package/dist/telemetry/assistant/telemetry-ai-enabled.guard.js.map +1 -0
- package/dist/telemetry/assistant/telemetry-assistant.controller.d.ts +14 -0
- package/dist/telemetry/assistant/telemetry-assistant.controller.d.ts.map +1 -0
- package/dist/telemetry/assistant/telemetry-assistant.controller.js +178 -0
- package/dist/telemetry/assistant/telemetry-assistant.controller.js.map +1 -0
- package/dist/telemetry/assistant/telemetry-assistant.metrics.d.ts +147 -0
- package/dist/telemetry/assistant/telemetry-assistant.metrics.d.ts.map +1 -0
- package/dist/telemetry/assistant/telemetry-assistant.metrics.js +495 -0
- package/dist/telemetry/assistant/telemetry-assistant.metrics.js.map +1 -0
- package/dist/telemetry/assistant/telemetry-assistant.service.d.ts +216 -0
- package/dist/telemetry/assistant/telemetry-assistant.service.d.ts.map +1 -0
- package/dist/telemetry/assistant/telemetry-assistant.service.js +1256 -0
- package/dist/telemetry/assistant/telemetry-assistant.service.js.map +1 -0
- package/dist/telemetry/assistant/telemetry-assistant.sql.d.ts +69 -0
- package/dist/telemetry/assistant/telemetry-assistant.sql.d.ts.map +1 -0
- package/dist/telemetry/assistant/telemetry-assistant.sql.js +471 -0
- package/dist/telemetry/assistant/telemetry-assistant.sql.js.map +1 -0
- package/dist/telemetry/assistant/telemetry-assistant.sse.d.ts +15 -0
- package/dist/telemetry/assistant/telemetry-assistant.sse.d.ts.map +1 -0
- package/dist/telemetry/assistant/telemetry-assistant.sse.js +68 -0
- package/dist/telemetry/assistant/telemetry-assistant.sse.js.map +1 -0
- package/dist/telemetry/connection/dto/telemetry-connection.dto.d.ts +92 -0
- package/dist/telemetry/connection/dto/telemetry-connection.dto.d.ts.map +1 -0
- package/dist/telemetry/connection/dto/telemetry-connection.dto.js +41 -0
- package/dist/telemetry/connection/dto/telemetry-connection.dto.js.map +1 -0
- package/dist/telemetry/connection/telemetry-connection-admin.service.d.ts +45 -0
- package/dist/telemetry/connection/telemetry-connection-admin.service.d.ts.map +1 -0
- package/dist/telemetry/connection/telemetry-connection-admin.service.js +303 -0
- package/dist/telemetry/connection/telemetry-connection-admin.service.js.map +1 -0
- package/dist/telemetry/connection/telemetry-connection-test.service.d.ts +41 -0
- package/dist/telemetry/connection/telemetry-connection-test.service.d.ts.map +1 -0
- package/dist/telemetry/connection/telemetry-connection-test.service.js +187 -0
- package/dist/telemetry/connection/telemetry-connection-test.service.js.map +1 -0
- package/dist/telemetry/connection/telemetry-connection.controller.d.ts +14 -0
- package/dist/telemetry/connection/telemetry-connection.controller.d.ts.map +1 -0
- package/dist/telemetry/connection/telemetry-connection.controller.js +192 -0
- package/dist/telemetry/connection/telemetry-connection.controller.js.map +1 -0
- package/dist/telemetry/connection/telemetry-connection.schema.d.ts +28 -0
- package/dist/telemetry/connection/telemetry-connection.schema.d.ts.map +1 -0
- package/dist/telemetry/connection/telemetry-connection.schema.js +106 -0
- package/dist/telemetry/connection/telemetry-connection.schema.js.map +1 -0
- package/dist/telemetry/connection/telemetry-connection.service.d.ts +197 -0
- package/dist/telemetry/connection/telemetry-connection.service.d.ts.map +1 -0
- package/dist/telemetry/connection/telemetry-connection.service.js +461 -0
- package/dist/telemetry/connection/telemetry-connection.service.js.map +1 -0
- package/dist/telemetry/dashboard/sql-literals.d.ts +19 -0
- package/dist/telemetry/dashboard/sql-literals.d.ts.map +1 -0
- package/dist/telemetry/dashboard/sql-literals.js +75 -0
- package/dist/telemetry/dashboard/sql-literals.js.map +1 -0
- package/dist/telemetry/dashboard/telemetry-dashboard.controller.d.ts +14 -0
- package/dist/telemetry/dashboard/telemetry-dashboard.controller.d.ts.map +1 -0
- package/dist/telemetry/dashboard/telemetry-dashboard.controller.js +277 -0
- package/dist/telemetry/dashboard/telemetry-dashboard.controller.js.map +1 -0
- package/dist/telemetry/dashboard/telemetry-dashboard.service.d.ts +112 -0
- package/dist/telemetry/dashboard/telemetry-dashboard.service.d.ts.map +1 -0
- package/dist/telemetry/dashboard/telemetry-dashboard.service.js +904 -0
- package/dist/telemetry/dashboard/telemetry-dashboard.service.js.map +1 -0
- package/dist/telemetry/dashboard/telemetry-dashboard.sql.d.ts +212 -0
- package/dist/telemetry/dashboard/telemetry-dashboard.sql.d.ts.map +1 -0
- package/dist/telemetry/dashboard/telemetry-dashboard.sql.js +486 -0
- package/dist/telemetry/dashboard/telemetry-dashboard.sql.js.map +1 -0
- package/dist/telemetry/dashboard/telemetry-dashboard.verdict.d.ts +235 -0
- package/dist/telemetry/dashboard/telemetry-dashboard.verdict.d.ts.map +1 -0
- package/dist/telemetry/dashboard/telemetry-dashboard.verdict.js +269 -0
- package/dist/telemetry/dashboard/telemetry-dashboard.verdict.js.map +1 -0
- package/dist/telemetry/dashboard/verdict-policy.d.ts +51 -0
- package/dist/telemetry/dashboard/verdict-policy.d.ts.map +1 -0
- package/dist/telemetry/dashboard/verdict-policy.js +77 -0
- package/dist/telemetry/dashboard/verdict-policy.js.map +1 -0
- package/dist/telemetry/doctor/egress/greptimedb.egress.contributor.d.ts +21 -0
- package/dist/telemetry/doctor/egress/greptimedb.egress.contributor.d.ts.map +1 -0
- package/dist/telemetry/doctor/egress/greptimedb.egress.contributor.js +59 -0
- package/dist/telemetry/doctor/egress/greptimedb.egress.contributor.js.map +1 -0
- package/dist/telemetry/doctor/telemetry-connection.doctor-check.d.ts +23 -0
- package/dist/telemetry/doctor/telemetry-connection.doctor-check.d.ts.map +1 -0
- package/dist/telemetry/doctor/telemetry-connection.doctor-check.js +69 -0
- package/dist/telemetry/doctor/telemetry-connection.doctor-check.js.map +1 -0
- package/dist/telemetry/doctor/telemetry-export.doctor-check.d.ts +33 -0
- package/dist/telemetry/doctor/telemetry-export.doctor-check.d.ts.map +1 -0
- package/dist/telemetry/doctor/telemetry-export.doctor-check.js +105 -0
- package/dist/telemetry/doctor/telemetry-export.doctor-check.js.map +1 -0
- package/dist/telemetry/doctor/telemetry-freshness.doctor-check.d.ts +38 -0
- package/dist/telemetry/doctor/telemetry-freshness.doctor-check.d.ts.map +1 -0
- package/dist/telemetry/doctor/telemetry-freshness.doctor-check.js +104 -0
- package/dist/telemetry/doctor/telemetry-freshness.doctor-check.js.map +1 -0
- package/dist/telemetry/doctor/telemetry-reachable.doctor-check.d.ts +23 -0
- package/dist/telemetry/doctor/telemetry-reachable.doctor-check.d.ts.map +1 -0
- package/dist/telemetry/doctor/telemetry-reachable.doctor-check.js +65 -0
- package/dist/telemetry/doctor/telemetry-reachable.doctor-check.js.map +1 -0
- package/dist/telemetry/doctor/telemetry-tables.doctor-check.d.ts +23 -0
- package/dist/telemetry/doctor/telemetry-tables.doctor-check.d.ts.map +1 -0
- package/dist/telemetry/doctor/telemetry-tables.doctor-check.js +91 -0
- package/dist/telemetry/doctor/telemetry-tables.doctor-check.js.map +1 -0
- package/dist/telemetry/dto/telemetry-assistant.dto.d.ts +14 -0
- package/dist/telemetry/dto/telemetry-assistant.dto.d.ts.map +1 -0
- package/dist/telemetry/dto/telemetry-assistant.dto.js +29 -0
- package/dist/telemetry/dto/telemetry-assistant.dto.js.map +1 -0
- package/dist/telemetry/dto/telemetry-config.dto.d.ts +59 -0
- package/dist/telemetry/dto/telemetry-config.dto.d.ts.map +1 -0
- package/dist/telemetry/dto/telemetry-config.dto.js +18 -0
- package/dist/telemetry/dto/telemetry-config.dto.js.map +1 -0
- package/dist/telemetry/dto/telemetry-dashboard.dto.d.ts +397 -0
- package/dist/telemetry/dto/telemetry-dashboard.dto.d.ts.map +1 -0
- package/dist/telemetry/dto/telemetry-dashboard.dto.js +118 -0
- package/dist/telemetry/dto/telemetry-dashboard.dto.js.map +1 -0
- package/dist/telemetry/dto/telemetry-query.dto.d.ts +44 -0
- package/dist/telemetry/dto/telemetry-query.dto.d.ts.map +1 -0
- package/dist/telemetry/dto/telemetry-query.dto.js +42 -0
- package/dist/telemetry/dto/telemetry-query.dto.js.map +1 -0
- package/dist/telemetry/dto/telemetry-status.dto.d.ts +22 -0
- package/dist/telemetry/dto/telemetry-status.dto.d.ts.map +1 -0
- package/dist/telemetry/dto/telemetry-status.dto.js +12 -0
- package/dist/telemetry/dto/telemetry-status.dto.js.map +1 -0
- package/dist/telemetry/export/parquet-writer.loader.d.ts +13 -0
- package/dist/telemetry/export/parquet-writer.loader.d.ts.map +1 -0
- package/dist/telemetry/export/parquet-writer.loader.js +29 -0
- package/dist/telemetry/export/parquet-writer.loader.js.map +1 -0
- package/dist/telemetry/export/telemetry-export.service.d.ts +39 -0
- package/dist/telemetry/export/telemetry-export.service.d.ts.map +1 -0
- package/dist/telemetry/export/telemetry-export.service.js +185 -0
- package/dist/telemetry/export/telemetry-export.service.js.map +1 -0
- package/dist/telemetry/greptime/greptime-host.d.ts +44 -0
- package/dist/telemetry/greptime/greptime-host.d.ts.map +1 -0
- package/dist/telemetry/greptime/greptime-host.js +114 -0
- package/dist/telemetry/greptime/greptime-host.js.map +1 -0
- package/dist/telemetry/greptime/greptime.client.d.ts +171 -0
- package/dist/telemetry/greptime/greptime.client.d.ts.map +1 -0
- package/dist/telemetry/greptime/greptime.client.js +352 -0
- package/dist/telemetry/greptime/greptime.client.js.map +1 -0
- package/dist/telemetry/greptime/greptime.errors.d.ts +59 -0
- package/dist/telemetry/greptime/greptime.errors.d.ts.map +1 -0
- package/dist/telemetry/greptime/greptime.errors.js +100 -0
- package/dist/telemetry/greptime/greptime.errors.js.map +1 -0
- package/dist/telemetry/handlers/telemetry-retention.handler.d.ts +27 -0
- package/dist/telemetry/handlers/telemetry-retention.handler.d.ts.map +1 -0
- package/dist/telemetry/handlers/telemetry-retention.handler.js +123 -0
- package/dist/telemetry/handlers/telemetry-retention.handler.js.map +1 -0
- package/dist/telemetry/index.d.ts +37 -0
- package/dist/telemetry/index.d.ts.map +1 -0
- package/dist/telemetry/index.js +97 -0
- package/dist/telemetry/index.js.map +1 -0
- package/dist/telemetry/internal/blank-secret.d.ts +3 -0
- package/dist/telemetry/internal/blank-secret.d.ts.map +1 -0
- package/dist/telemetry/internal/blank-secret.js +14 -0
- package/dist/telemetry/internal/blank-secret.js.map +1 -0
- package/dist/telemetry/internal/csv.d.ts +9 -0
- package/dist/telemetry/internal/csv.d.ts.map +1 -0
- package/dist/telemetry/internal/csv.js +23 -0
- package/dist/telemetry/internal/csv.js.map +1 -0
- package/dist/telemetry/internal/sse.d.ts +23 -0
- package/dist/telemetry/internal/sse.d.ts.map +1 -0
- package/dist/telemetry/internal/sse.js +43 -0
- package/dist/telemetry/internal/sse.js.map +1 -0
- package/dist/telemetry/metrics/groups/database.metric-group.d.ts +7 -0
- package/dist/telemetry/metrics/groups/database.metric-group.d.ts.map +1 -0
- package/dist/telemetry/metrics/groups/database.metric-group.js +159 -0
- package/dist/telemetry/metrics/groups/database.metric-group.js.map +1 -0
- package/dist/telemetry/metrics/groups/host.metric-group.d.ts +7 -0
- package/dist/telemetry/metrics/groups/host.metric-group.d.ts.map +1 -0
- package/dist/telemetry/metrics/groups/host.metric-group.js +146 -0
- package/dist/telemetry/metrics/groups/host.metric-group.js.map +1 -0
- package/dist/telemetry/metrics/groups/nodes.metric-group.d.ts +7 -0
- package/dist/telemetry/metrics/groups/nodes.metric-group.d.ts.map +1 -0
- package/dist/telemetry/metrics/groups/nodes.metric-group.js +159 -0
- package/dist/telemetry/metrics/groups/nodes.metric-group.js.map +1 -0
- package/dist/telemetry/metrics/groups/pipeline.metric-group.d.ts +7 -0
- package/dist/telemetry/metrics/groups/pipeline.metric-group.d.ts.map +1 -0
- package/dist/telemetry/metrics/groups/pipeline.metric-group.js +144 -0
- package/dist/telemetry/metrics/groups/pipeline.metric-group.js.map +1 -0
- package/dist/telemetry/metrics/groups/queue.metric-group.d.ts +7 -0
- package/dist/telemetry/metrics/groups/queue.metric-group.d.ts.map +1 -0
- package/dist/telemetry/metrics/groups/queue.metric-group.js +163 -0
- package/dist/telemetry/metrics/groups/queue.metric-group.js.map +1 -0
- package/dist/telemetry/metrics/groups/uptime.metric-group.d.ts +7 -0
- package/dist/telemetry/metrics/groups/uptime.metric-group.d.ts.map +1 -0
- package/dist/telemetry/metrics/groups/uptime.metric-group.js +103 -0
- package/dist/telemetry/metrics/groups/uptime.metric-group.js.map +1 -0
- package/dist/telemetry/metrics/metric-catalog.d.ts +324 -0
- package/dist/telemetry/metrics/metric-catalog.d.ts.map +1 -0
- package/dist/telemetry/metrics/metric-catalog.helpers.d.ts +30 -0
- package/dist/telemetry/metrics/metric-catalog.helpers.d.ts.map +1 -0
- package/dist/telemetry/metrics/metric-catalog.helpers.js +37 -0
- package/dist/telemetry/metrics/metric-catalog.helpers.js.map +1 -0
- package/dist/telemetry/metrics/metric-catalog.js +180 -0
- package/dist/telemetry/metrics/metric-catalog.js.map +1 -0
- package/dist/telemetry/metrics/metric-group-registry.service.d.ts +59 -0
- package/dist/telemetry/metrics/metric-group-registry.service.d.ts.map +1 -0
- package/dist/telemetry/metrics/metric-group-registry.service.js +99 -0
- package/dist/telemetry/metrics/metric-group-registry.service.js.map +1 -0
- package/dist/telemetry/metrics/metric-group.d.ts +113 -0
- package/dist/telemetry/metrics/metric-group.d.ts.map +1 -0
- package/dist/telemetry/metrics/metric-group.js +647 -0
- package/dist/telemetry/metrics/metric-group.js.map +1 -0
- package/dist/telemetry/metrics/metric-group.manifest.d.ts +2 -0
- package/dist/telemetry/metrics/metric-group.manifest.d.ts.map +1 -0
- package/dist/telemetry/metrics/metric-group.manifest.js +30 -0
- package/dist/telemetry/metrics/metric-group.manifest.js.map +1 -0
- package/dist/telemetry/metrics/metric-group.registry.d.ts +109 -0
- package/dist/telemetry/metrics/metric-group.registry.d.ts.map +1 -0
- package/dist/telemetry/metrics/metric-group.registry.js +181 -0
- package/dist/telemetry/metrics/metric-group.registry.js.map +1 -0
- package/dist/telemetry/metrics/metric-sql.d.ts +98 -0
- package/dist/telemetry/metrics/metric-sql.d.ts.map +1 -0
- package/dist/telemetry/metrics/metric-sql.js +259 -0
- package/dist/telemetry/metrics/metric-sql.js.map +1 -0
- package/dist/telemetry/metrics/metric-values.d.ts +19 -0
- package/dist/telemetry/metrics/metric-values.d.ts.map +1 -0
- package/dist/telemetry/metrics/metric-values.js +97 -0
- package/dist/telemetry/metrics/metric-values.js.map +1 -0
- package/dist/telemetry/metrics/metric-verdict.d.ts +20 -0
- package/dist/telemetry/metrics/metric-verdict.d.ts.map +1 -0
- package/dist/telemetry/metrics/metric-verdict.js +218 -0
- package/dist/telemetry/metrics/metric-verdict.js.map +1 -0
- package/dist/telemetry/ports.d.ts +575 -0
- package/dist/telemetry/ports.d.ts.map +1 -0
- package/dist/telemetry/ports.js +78 -0
- package/dist/telemetry/ports.js.map +1 -0
- package/dist/telemetry/query/sql-guard.d.ts +71 -0
- package/dist/telemetry/query/sql-guard.d.ts.map +1 -0
- package/dist/telemetry/query/sql-guard.js +258 -0
- package/dist/telemetry/query/sql-guard.js.map +1 -0
- package/dist/telemetry/query/telemetry-availability.d.ts +11 -0
- package/dist/telemetry/query/telemetry-availability.d.ts.map +1 -0
- package/dist/telemetry/query/telemetry-availability.js +55 -0
- package/dist/telemetry/query/telemetry-availability.js.map +1 -0
- package/dist/telemetry/query/telemetry-query.errors.d.ts +48 -0
- package/dist/telemetry/query/telemetry-query.errors.d.ts.map +1 -0
- package/dist/telemetry/query/telemetry-query.errors.js +100 -0
- package/dist/telemetry/query/telemetry-query.errors.js.map +1 -0
- package/dist/telemetry/query/telemetry-query.service.d.ts +57 -0
- package/dist/telemetry/query/telemetry-query.service.d.ts.map +1 -0
- package/dist/telemetry/query/telemetry-query.service.js +194 -0
- package/dist/telemetry/query/telemetry-query.service.js.map +1 -0
- package/dist/telemetry/query/telemetry-schema.service.d.ts +36 -0
- package/dist/telemetry/query/telemetry-schema.service.d.ts.map +1 -0
- package/dist/telemetry/query/telemetry-schema.service.js +154 -0
- package/dist/telemetry/query/telemetry-schema.service.js.map +1 -0
- package/dist/telemetry/stack/dto/telemetry-stack.dto.d.ts +29 -0
- package/dist/telemetry/stack/dto/telemetry-stack.dto.d.ts.map +1 -0
- package/dist/telemetry/stack/dto/telemetry-stack.dto.js +27 -0
- package/dist/telemetry/stack/dto/telemetry-stack.dto.js.map +1 -0
- package/dist/telemetry/stack/stack-agent.client.d.ts +76 -0
- package/dist/telemetry/stack/stack-agent.client.d.ts.map +1 -0
- package/dist/telemetry/stack/stack-agent.client.js +208 -0
- package/dist/telemetry/stack/stack-agent.client.js.map +1 -0
- package/dist/telemetry/stack/telemetry-stack-deploy.handler.d.ts +43 -0
- package/dist/telemetry/stack/telemetry-stack-deploy.handler.d.ts.map +1 -0
- package/dist/telemetry/stack/telemetry-stack-deploy.handler.js +159 -0
- package/dist/telemetry/stack/telemetry-stack-deploy.handler.js.map +1 -0
- package/dist/telemetry/stack/telemetry-stack.controller.d.ts +14 -0
- package/dist/telemetry/stack/telemetry-stack.controller.d.ts.map +1 -0
- package/dist/telemetry/stack/telemetry-stack.controller.js +107 -0
- package/dist/telemetry/stack/telemetry-stack.controller.js.map +1 -0
- package/dist/telemetry/stack/telemetry-stack.service.d.ts +19 -0
- package/dist/telemetry/stack/telemetry-stack.service.d.ts.map +1 -0
- package/dist/telemetry/stack/telemetry-stack.service.js +122 -0
- package/dist/telemetry/stack/telemetry-stack.service.js.map +1 -0
- package/dist/telemetry/tasks/telemetry-retention.task.d.ts +8 -0
- package/dist/telemetry/tasks/telemetry-retention.task.d.ts.map +1 -0
- package/dist/telemetry/tasks/telemetry-retention.task.js +61 -0
- package/dist/telemetry/tasks/telemetry-retention.task.js.map +1 -0
- package/dist/telemetry/telemetry-admin.controller.d.ts +14 -0
- package/dist/telemetry/telemetry-admin.controller.d.ts.map +1 -0
- package/dist/telemetry/telemetry-admin.controller.js +148 -0
- package/dist/telemetry/telemetry-admin.controller.js.map +1 -0
- package/dist/telemetry/telemetry-config.controller.d.ts +14 -0
- package/dist/telemetry/telemetry-config.controller.d.ts.map +1 -0
- package/dist/telemetry/telemetry-config.controller.js +73 -0
- package/dist/telemetry/telemetry-config.controller.js.map +1 -0
- package/dist/telemetry/telemetry-explorer.controller.d.ts +14 -0
- package/dist/telemetry/telemetry-explorer.controller.d.ts.map +1 -0
- package/dist/telemetry/telemetry-explorer.controller.js +193 -0
- package/dist/telemetry/telemetry-explorer.controller.js.map +1 -0
- package/dist/telemetry/telemetry-settings.service.d.ts +85 -0
- package/dist/telemetry/telemetry-settings.service.d.ts.map +1 -0
- package/dist/telemetry/telemetry-settings.service.js +278 -0
- package/dist/telemetry/telemetry-settings.service.js.map +1 -0
- package/dist/telemetry/telemetry-status.service.d.ts +28 -0
- package/dist/telemetry/telemetry-status.service.d.ts.map +1 -0
- package/dist/telemetry/telemetry-status.service.js +185 -0
- package/dist/telemetry/telemetry-status.service.js.map +1 -0
- package/dist/telemetry/telemetry-support-bundle.section.d.ts +163 -0
- package/dist/telemetry/telemetry-support-bundle.section.d.ts.map +1 -0
- package/dist/telemetry/telemetry-support-bundle.section.js +187 -0
- package/dist/telemetry/telemetry-support-bundle.section.js.map +1 -0
- package/dist/telemetry/telemetry.module.d.ts +35 -0
- package/dist/telemetry/telemetry.module.d.ts.map +1 -0
- package/dist/telemetry/telemetry.module.js +210 -0
- package/dist/telemetry/telemetry.module.js.map +1 -0
- package/dist/telemetry/telemetry.options.d.ts +176 -0
- package/dist/telemetry/telemetry.options.d.ts.map +1 -0
- package/dist/telemetry/telemetry.options.js +246 -0
- package/dist/telemetry/telemetry.options.js.map +1 -0
- package/dist/telemetry/telemetry.permissions.d.ts +76 -0
- package/dist/telemetry/telemetry.permissions.d.ts.map +1 -0
- package/dist/telemetry/telemetry.permissions.js +85 -0
- package/dist/telemetry/telemetry.permissions.js.map +1 -0
- package/dist/telemetry/telemetry.settings.d.ts +79 -0
- package/dist/telemetry/telemetry.settings.d.ts.map +1 -0
- package/dist/telemetry/telemetry.settings.js +92 -0
- package/dist/telemetry/telemetry.settings.js.map +1 -0
- package/dist/telemetry/testing/coach-metric-group.fixture.d.ts +17 -0
- package/dist/telemetry/testing/coach-metric-group.fixture.d.ts.map +1 -0
- package/dist/telemetry/testing/coach-metric-group.fixture.js +128 -0
- package/dist/telemetry/testing/coach-metric-group.fixture.js.map +1 -0
- package/dist/telemetry/testing/conformance.d.ts +257 -0
- package/dist/telemetry/testing/conformance.d.ts.map +1 -0
- package/dist/telemetry/testing/conformance.js +626 -0
- package/dist/telemetry/testing/conformance.js.map +1 -0
- package/dist/telemetry/testing/index.d.ts +10 -0
- package/dist/telemetry/testing/index.d.ts.map +1 -0
- package/dist/telemetry/testing/index.js +41 -0
- package/dist/telemetry/testing/index.js.map +1 -0
- package/dist/telemetry/testing/metric-schema.fixture.d.ts +73 -0
- package/dist/telemetry/testing/metric-schema.fixture.d.ts.map +1 -0
- package/dist/telemetry/testing/metric-schema.fixture.js +362 -0
- package/dist/telemetry/testing/metric-schema.fixture.js.map +1 -0
- package/dist/telemetry/testing/stub-ports.d.ts +46 -0
- package/dist/telemetry/testing/stub-ports.d.ts.map +1 -0
- package/dist/telemetry/testing/stub-ports.js +119 -0
- package/dist/telemetry/testing/stub-ports.js.map +1 -0
- package/dist/testing/conformance-suite.d.ts +106 -0
- package/dist/testing/conformance-suite.d.ts.map +1 -0
- package/dist/testing/conformance-suite.js +8 -0
- package/dist/testing/conformance-suite.js.map +1 -0
- package/dist/testing/conformance-suites.d.ts +14 -0
- package/dist/testing/conformance-suites.d.ts.map +1 -0
- package/dist/testing/conformance-suites.js +27 -0
- package/dist/testing/conformance-suites.js.map +1 -0
- package/dist/testing/host/in-memory-audit-sink.d.ts +23 -0
- package/dist/testing/host/in-memory-audit-sink.d.ts.map +1 -0
- package/dist/testing/host/in-memory-audit-sink.js +30 -0
- package/dist/testing/host/in-memory-audit-sink.js.map +1 -0
- package/dist/testing/host/in-memory-system-settings-store.d.ts +31 -0
- package/dist/testing/host/in-memory-system-settings-store.d.ts.map +1 -0
- package/dist/testing/host/in-memory-system-settings-store.js +54 -0
- package/dist/testing/host/in-memory-system-settings-store.js.map +1 -0
- package/dist/testing/host/index.d.ts +4 -0
- package/dist/testing/host/index.d.ts.map +1 -0
- package/dist/testing/host/index.js +13 -0
- package/dist/testing/host/index.js.map +1 -0
- package/dist/testing/host/test-platform-host.d.ts +35 -0
- package/dist/testing/host/test-platform-host.d.ts.map +1 -0
- package/dist/testing/host/test-platform-host.js +81 -0
- package/dist/testing/host/test-platform-host.js.map +1 -0
- package/dist/testing/index.d.ts +12 -0
- package/dist/testing/index.d.ts.map +1 -0
- package/dist/testing/index.js +32 -0
- package/dist/testing/index.js.map +1 -0
- package/dist/testing/prisma-schema.d.ts +99 -0
- package/dist/testing/prisma-schema.d.ts.map +1 -0
- package/dist/testing/prisma-schema.js +175 -0
- package/dist/testing/prisma-schema.js.map +1 -0
- package/dist/testing/run-platform-conformance.d.ts +70 -0
- package/dist/testing/run-platform-conformance.d.ts.map +1 -0
- package/dist/testing/run-platform-conformance.js +77 -0
- package/dist/testing/run-platform-conformance.js.map +1 -0
- package/dist/testing/suites/cron-enqueue-only.d.ts +46 -0
- package/dist/testing/suites/cron-enqueue-only.d.ts.map +1 -0
- package/dist/testing/suites/cron-enqueue-only.js +177 -0
- package/dist/testing/suites/cron-enqueue-only.js.map +1 -0
- package/dist/testing/suites/user-owned-data.d.ts +86 -0
- package/dist/testing/suites/user-owned-data.d.ts.map +1 -0
- package/dist/testing/suites/user-owned-data.js +329 -0
- package/dist/testing/suites/user-owned-data.js.map +1 -0
- package/package.json +129 -4
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// =============================================================================
|
|
3
|
+
// User-owned data registry (issue #688 PP-1.9, moved to core by #699)
|
|
4
|
+
// =============================================================================
|
|
5
|
+
//
|
|
6
|
+
// Every Prisma model holding a foreign key to `User` is registered here, with
|
|
7
|
+
// the role of each such key (OWNER: the row belongs to the user; ACTOR: the
|
|
8
|
+
// row only names a user who acted), what happens to the row when the user's
|
|
9
|
+
// data is purged, and whether the user's data export includes it.
|
|
10
|
+
//
|
|
11
|
+
// Two things read it:
|
|
12
|
+
//
|
|
13
|
+
// - the `userOwnedData` conformance suite (`@marinoscar/platform-api/testing`):
|
|
14
|
+
// fails when a model gains a `User` relation without an entry, when an
|
|
15
|
+
// entry names a model or field that does not exist, or when a purge policy
|
|
16
|
+
// contradicts the relation's `onDelete`;
|
|
17
|
+
// - the scoped client (./scoped-client.ts): confines a scoped client's
|
|
18
|
+
// queries on a registered owner model to the scope's user, and refuses
|
|
19
|
+
// every other model.
|
|
20
|
+
//
|
|
21
|
+
// ⚠ FRAMEWORK-FREE ON PURPOSE, like the registry primitive: seeds and
|
|
22
|
+
// standalone scripts may read it without a Nest container. The app fills it
|
|
23
|
+
// from one manifest (platform entries, then its own); a packaged slice
|
|
24
|
+
// registers its own models when it is extracted.
|
|
25
|
+
// =============================================================================
|
|
26
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
27
|
+
exports.userOwnedModelRegistry = void 0;
|
|
28
|
+
exports.registerUserOwnedModels = registerUserOwnedModels;
|
|
29
|
+
exports.ownerFieldOf = ownerFieldOf;
|
|
30
|
+
exports.ownerRelationOf = ownerRelationOf;
|
|
31
|
+
const registry_1 = require("../registry/registry");
|
|
32
|
+
function validate(def) {
|
|
33
|
+
const actors = def.actorFields ?? [];
|
|
34
|
+
if (def.ownerField === undefined && actors.length === 0) {
|
|
35
|
+
throw new Error('declare an ownerField, actorFields, or both');
|
|
36
|
+
}
|
|
37
|
+
if (def.ownerField !== undefined && def.ownerField.trim() === '') {
|
|
38
|
+
throw new Error('ownerField must not be empty');
|
|
39
|
+
}
|
|
40
|
+
if (actors.some((field) => typeof field !== 'string' || field.trim() === '')) {
|
|
41
|
+
throw new Error('actorFields must be non-empty strings');
|
|
42
|
+
}
|
|
43
|
+
if (new Set(actors).size !== actors.length) {
|
|
44
|
+
throw new Error('actorFields must not repeat a field');
|
|
45
|
+
}
|
|
46
|
+
if (def.ownerField !== undefined && actors.includes(def.ownerField)) {
|
|
47
|
+
throw new Error(`"${def.ownerField}" cannot be both the ownerField and an actor field`);
|
|
48
|
+
}
|
|
49
|
+
if (def.ownerRelation !== undefined && def.ownerField === undefined) {
|
|
50
|
+
throw new Error('ownerRelation requires an ownerField');
|
|
51
|
+
}
|
|
52
|
+
if (!['delete', 'detach', 'retain'].includes(def.purge)) {
|
|
53
|
+
throw new Error(`purge must be 'delete', 'detach' or 'retain', not ${JSON.stringify(def.purge)}`);
|
|
54
|
+
}
|
|
55
|
+
if (def.purge === 'retain' && def.ownerField !== undefined) {
|
|
56
|
+
throw new Error("purge 'retain' is only for actor-only models: a user's own rows are deleted or detached");
|
|
57
|
+
}
|
|
58
|
+
if (!['include', 'exclude'].includes(def.export)) {
|
|
59
|
+
throw new Error(`export must be 'include' or 'exclude', not ${JSON.stringify(def.export)}`);
|
|
60
|
+
}
|
|
61
|
+
if (def.exportOmit !== undefined && def.export === 'exclude' && def.exportOmit.length > 0) {
|
|
62
|
+
throw new Error("exportOmit is meaningless when export is 'exclude'");
|
|
63
|
+
}
|
|
64
|
+
if (typeof def.rationale !== 'string' || def.rationale.trim() === '') {
|
|
65
|
+
throw new Error('rationale is required');
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* The static registry of models holding a foreign key to `User`, keyed by
|
|
70
|
+
* model name. One per process: the app fills it from a manifest imported
|
|
71
|
+
* before bootstrap, and `RegistryFreezeService` freezes it with every other
|
|
72
|
+
* `defineRegistry` registry.
|
|
73
|
+
*
|
|
74
|
+
* @stability experimental
|
|
75
|
+
* @extensionPoint registry
|
|
76
|
+
* @example
|
|
77
|
+
* ```ts
|
|
78
|
+
* // apps/api/src/prisma/ownership/user-owned-model.manifest.ts
|
|
79
|
+
* registerUserOwnedModels(PLATFORM_USER_OWNED_MODELS);
|
|
80
|
+
* registerUserOwnedModels(APP_USER_OWNED_MODELS);
|
|
81
|
+
*
|
|
82
|
+
* userOwnedModelRegistry.get('UserCredential')?.ownerField; // 'userId'
|
|
83
|
+
* ```
|
|
84
|
+
*/
|
|
85
|
+
exports.userOwnedModelRegistry = (0, registry_1.defineRegistry)({
|
|
86
|
+
name: 'user-owned-models',
|
|
87
|
+
idOf: (def) => def.model,
|
|
88
|
+
// A Prisma model name: PascalCase identifier.
|
|
89
|
+
idPattern: /^[A-Z][A-Za-z0-9_]*$/,
|
|
90
|
+
validate,
|
|
91
|
+
});
|
|
92
|
+
/**
|
|
93
|
+
* Registers a batch of definitions in {@link userOwnedModelRegistry}, all or
|
|
94
|
+
* nothing.
|
|
95
|
+
*
|
|
96
|
+
* @param defs - the definitions; an app may type them with its own model names.
|
|
97
|
+
* @throws RegistryError `INVALID_ENTRY`, `DUPLICATE_ID` or `FROZEN`.
|
|
98
|
+
*
|
|
99
|
+
* @stability experimental
|
|
100
|
+
* @example
|
|
101
|
+
* ```ts
|
|
102
|
+
* registerUserOwnedModels([
|
|
103
|
+
* { model: 'Workout', ownerField: 'userId', purge: 'delete', export: 'include', rationale: "The user's own log." },
|
|
104
|
+
* ]);
|
|
105
|
+
* ```
|
|
106
|
+
*/
|
|
107
|
+
function registerUserOwnedModels(defs) {
|
|
108
|
+
exports.userOwnedModelRegistry.registerAll(defs);
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* The owner field of a registered model, or `undefined` (actor-only or
|
|
112
|
+
* unregistered).
|
|
113
|
+
*
|
|
114
|
+
* @param model - the Prisma model name.
|
|
115
|
+
* @stability experimental
|
|
116
|
+
* @example
|
|
117
|
+
* ```ts
|
|
118
|
+
* ownerFieldOf('StorageObject'); // 'uploadedById'
|
|
119
|
+
* ```
|
|
120
|
+
*/
|
|
121
|
+
function ownerFieldOf(model) {
|
|
122
|
+
return exports.userOwnedModelRegistry.get(model)?.ownerField;
|
|
123
|
+
}
|
|
124
|
+
/**
|
|
125
|
+
* The relation field backing a definition's owner field: `ownerRelation`
|
|
126
|
+
* when given, otherwise the owner field without its trailing `Id`.
|
|
127
|
+
*
|
|
128
|
+
* @param def - a registered (or candidate) definition.
|
|
129
|
+
* @stability experimental
|
|
130
|
+
* @example
|
|
131
|
+
* ```ts
|
|
132
|
+
* ownerRelationOf({ model: 'WorkerNode', ownerField: 'createdById', purge: 'delete', export: 'exclude', rationale: 'x' }); // 'createdBy'
|
|
133
|
+
* ```
|
|
134
|
+
*/
|
|
135
|
+
function ownerRelationOf(def) {
|
|
136
|
+
if (def.ownerField === undefined)
|
|
137
|
+
return undefined;
|
|
138
|
+
return def.ownerRelation ?? def.ownerField.replace(/Id$/, '');
|
|
139
|
+
}
|
|
140
|
+
//# sourceMappingURL=user-owned-data.registry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"user-owned-data.registry.js","sourceRoot":"","sources":["../../../src/core/data-access/user-owned-data.registry.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { InternalServerErrorException } from '@nestjs/common';
|
|
2
|
+
/**
|
|
3
|
+
* Exception thrown when required database seed data is missing.
|
|
4
|
+
* This indicates the database migrations have been run but seeds have not.
|
|
5
|
+
*
|
|
6
|
+
* A 500 whose envelope `details` carries `missingData`, `seedCommand` and
|
|
7
|
+
* operator `instructions`; the response `code` is `INTERNAL_ERROR` like any
|
|
8
|
+
* other 500 (see {@link HttpExceptionFilter}).
|
|
9
|
+
*
|
|
10
|
+
* @stability stable
|
|
11
|
+
* @example
|
|
12
|
+
* ```ts
|
|
13
|
+
* if (!defaultRole) throw new DatabaseSeedException('default role "Viewer"');
|
|
14
|
+
* ```
|
|
15
|
+
*/
|
|
16
|
+
export declare class DatabaseSeedException extends InternalServerErrorException {
|
|
17
|
+
/**
|
|
18
|
+
* @param missingData - What is missing, for the message and `details.missingData`.
|
|
19
|
+
* @param seedCommand - The command that seeds it; defaults to `npm run prisma:seed`.
|
|
20
|
+
*/
|
|
21
|
+
constructor(missingData: string, seedCommand?: string);
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=database-seed.exception.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"database-seed.exception.d.ts","sourceRoot":"","sources":["../../../src/core/errors/database-seed.exception.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,4BAA4B,EAAE,MAAM,gBAAgB,CAAC;AAE9D;;;;;;;;;;;;;GAaG;AACH,qBAAa,qBAAsB,SAAQ,4BAA4B;IACrE;;;OAGG;gBACS,WAAW,EAAE,MAAM,EAAE,WAAW,SAAwB;CAuBrE"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DatabaseSeedException = void 0;
|
|
4
|
+
const common_1 = require("@nestjs/common");
|
|
5
|
+
/**
|
|
6
|
+
* Exception thrown when required database seed data is missing.
|
|
7
|
+
* This indicates the database migrations have been run but seeds have not.
|
|
8
|
+
*
|
|
9
|
+
* A 500 whose envelope `details` carries `missingData`, `seedCommand` and
|
|
10
|
+
* operator `instructions`; the response `code` is `INTERNAL_ERROR` like any
|
|
11
|
+
* other 500 (see {@link HttpExceptionFilter}).
|
|
12
|
+
*
|
|
13
|
+
* @stability stable
|
|
14
|
+
* @example
|
|
15
|
+
* ```ts
|
|
16
|
+
* if (!defaultRole) throw new DatabaseSeedException('default role "Viewer"');
|
|
17
|
+
* ```
|
|
18
|
+
*/
|
|
19
|
+
class DatabaseSeedException extends common_1.InternalServerErrorException {
|
|
20
|
+
/**
|
|
21
|
+
* @param missingData - What is missing, for the message and `details.missingData`.
|
|
22
|
+
* @param seedCommand - The command that seeds it; defaults to `npm run prisma:seed`.
|
|
23
|
+
*/
|
|
24
|
+
constructor(missingData, seedCommand = 'npm run prisma:seed') {
|
|
25
|
+
const message = `Database seed data missing: ${missingData}. Please run: ${seedCommand}`;
|
|
26
|
+
super({
|
|
27
|
+
// NOT on the wire. `HttpExceptionFilter` always derives the response's
|
|
28
|
+
// `code` from the HTTP status (500 -> INTERNAL_ERROR) and ignores any
|
|
29
|
+
// `code` on the payload — that is the published contract in
|
|
30
|
+
// `./error.dto.ts`, whose `code` is a closed enum of the
|
|
31
|
+
// status-derived values. Kept here as the internal name for this failure,
|
|
32
|
+
// which is what the log line and `details.missingData` identify it by.
|
|
33
|
+
// Do not add a client that branches on seeing it in a response (#153).
|
|
34
|
+
code: 'DATABASE_SEED_REQUIRED',
|
|
35
|
+
message,
|
|
36
|
+
details: {
|
|
37
|
+
missingData,
|
|
38
|
+
seedCommand,
|
|
39
|
+
instructions: [
|
|
40
|
+
'Database migrations have been run but seed data is missing',
|
|
41
|
+
`Run the following command: ${seedCommand}`,
|
|
42
|
+
'This will populate required data like roles and permissions',
|
|
43
|
+
],
|
|
44
|
+
},
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
exports.DatabaseSeedException = DatabaseSeedException;
|
|
49
|
+
//# sourceMappingURL=database-seed.exception.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"database-seed.exception.js","sourceRoot":"","sources":["../../../src/core/errors/database-seed.exception.ts"],"names":[],"mappings":";;;AAAA,2CAA8D;AAE9D;;;;;;;;;;;;;GAaG;AACH,MAAa,qBAAsB,SAAQ,qCAA4B;IACrE;;;OAGG;IACH,YAAY,WAAmB,EAAE,WAAW,GAAG,qBAAqB;QAClE,MAAM,OAAO,GAAG,+BAA+B,WAAW,iBAAiB,WAAW,EAAE,CAAC;QACzF,KAAK,CAAC;YACJ,uEAAuE;YACvE,sEAAsE;YACtE,4DAA4D;YAC5D,yDAAyD;YACzD,0EAA0E;YAC1E,uEAAuE;YACvE,uEAAuE;YACvE,IAAI,EAAE,wBAAwB;YAC9B,OAAO;YACP,OAAO,EAAE;gBACP,WAAW;gBACX,WAAW;gBACX,YAAY,EAAE;oBACZ,4DAA4D;oBAC5D,8BAA8B,WAAW,EAAE;oBAC3C,6DAA6D;iBAC9D;aACF;SACF,CAAC,CAAC;IACL,CAAC;CACF;AA5BD,sDA4BC"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The error body this API returns for every endpoint but one.
|
|
3
|
+
*
|
|
4
|
+
* `HttpExceptionFilter` rebuilds error responses from a fixed key allowlist —
|
|
5
|
+
* `statusCode`, `code`, `message`, `details`, `timestamp`, `path` and nothing
|
|
6
|
+
* else — so this class is not an approximation of the wire format, it is the
|
|
7
|
+
* complete set of keys that can appear. In particular a custom top-level field
|
|
8
|
+
* on a thrown `HttpException` payload is silently dropped; endpoint-specific
|
|
9
|
+
* data belongs under {@link details}.
|
|
10
|
+
*
|
|
11
|
+
* THE ONE EXCEPTION (#153): an endpoint whose error body is fixed by an
|
|
12
|
+
* external standard can opt out of this envelope entirely, by branding its
|
|
13
|
+
* exception with `withVerbatimErrorBody`
|
|
14
|
+
* (`./verbatim-error-body.exception.ts`). Its body is then sent
|
|
15
|
+
* exactly as thrown, with none of the keys below. Today the only user is
|
|
16
|
+
* `POST /auth/device/token`, which RFC 8628 §3.5 requires to answer with
|
|
17
|
+
* `{ error, error_description }` — see `DeviceTokenErrorDto`, which the
|
|
18
|
+
* operation declares for its 400 and 401 responses. That opt-out is deliberately
|
|
19
|
+
* hard to reach and rare; assume this envelope unless an operation documents
|
|
20
|
+
* otherwise.
|
|
21
|
+
*
|
|
22
|
+
* Kept as an `@ApiProperty` class rather than a zod DTO because nothing
|
|
23
|
+
* validates it — it is documentation-only, produced by the filter and never
|
|
24
|
+
* parsed on the way in. The OpenAPI schema name is `ErrorDto`; it is
|
|
25
|
+
* published, so the class name does not change.
|
|
26
|
+
*
|
|
27
|
+
* @stability stable
|
|
28
|
+
* @example
|
|
29
|
+
* ```ts
|
|
30
|
+
* @ApiResponse({ status: 409, description: 'Already exists', type: ErrorDto })
|
|
31
|
+
* ```
|
|
32
|
+
*/
|
|
33
|
+
export declare class ErrorDto {
|
|
34
|
+
/** HTTP status code, repeated in the body. */
|
|
35
|
+
statusCode: number;
|
|
36
|
+
/** Status-derived machine-readable code (closed enum, see the property's `@ApiProperty`). */
|
|
37
|
+
code: string;
|
|
38
|
+
/** Human-readable description of what went wrong. */
|
|
39
|
+
message: string;
|
|
40
|
+
/** Endpoint-specific structured data, when the failure carried any. */
|
|
41
|
+
details?: unknown;
|
|
42
|
+
/** When the error was produced, ISO 8601 UTC. */
|
|
43
|
+
timestamp: string;
|
|
44
|
+
/** Request path that produced the error. */
|
|
45
|
+
path: string;
|
|
46
|
+
}
|
|
47
|
+
//# sourceMappingURL=error.dto.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"error.dto.d.ts","sourceRoot":"","sources":["../../../src/core/errors/error.dto.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,qBAAa,QAAQ;IACnB,8CAA8C;IAK9C,UAAU,EAAG,MAAM,CAAC;IAEpB,6FAA6F;IAsB7F,IAAI,EAAG,MAAM,CAAC;IAEd,qDAAqD;IAKrD,OAAO,EAAG,MAAM,CAAC;IAEjB,uEAAuE;IAQvE,OAAO,CAAC,EAAE,OAAO,CAAC;IAElB,iDAAiD;IAKjD,SAAS,EAAG,MAAM,CAAC;IAEnB,4CAA4C;IAK5C,IAAI,EAAG,MAAM,CAAC;CACf"}
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.ErrorDto = void 0;
|
|
13
|
+
const swagger_1 = require("@nestjs/swagger");
|
|
14
|
+
/**
|
|
15
|
+
* The error body this API returns for every endpoint but one.
|
|
16
|
+
*
|
|
17
|
+
* `HttpExceptionFilter` rebuilds error responses from a fixed key allowlist —
|
|
18
|
+
* `statusCode`, `code`, `message`, `details`, `timestamp`, `path` and nothing
|
|
19
|
+
* else — so this class is not an approximation of the wire format, it is the
|
|
20
|
+
* complete set of keys that can appear. In particular a custom top-level field
|
|
21
|
+
* on a thrown `HttpException` payload is silently dropped; endpoint-specific
|
|
22
|
+
* data belongs under {@link details}.
|
|
23
|
+
*
|
|
24
|
+
* THE ONE EXCEPTION (#153): an endpoint whose error body is fixed by an
|
|
25
|
+
* external standard can opt out of this envelope entirely, by branding its
|
|
26
|
+
* exception with `withVerbatimErrorBody`
|
|
27
|
+
* (`./verbatim-error-body.exception.ts`). Its body is then sent
|
|
28
|
+
* exactly as thrown, with none of the keys below. Today the only user is
|
|
29
|
+
* `POST /auth/device/token`, which RFC 8628 §3.5 requires to answer with
|
|
30
|
+
* `{ error, error_description }` — see `DeviceTokenErrorDto`, which the
|
|
31
|
+
* operation declares for its 400 and 401 responses. That opt-out is deliberately
|
|
32
|
+
* hard to reach and rare; assume this envelope unless an operation documents
|
|
33
|
+
* otherwise.
|
|
34
|
+
*
|
|
35
|
+
* Kept as an `@ApiProperty` class rather than a zod DTO because nothing
|
|
36
|
+
* validates it — it is documentation-only, produced by the filter and never
|
|
37
|
+
* parsed on the way in. The OpenAPI schema name is `ErrorDto`; it is
|
|
38
|
+
* published, so the class name does not change.
|
|
39
|
+
*
|
|
40
|
+
* @stability stable
|
|
41
|
+
* @example
|
|
42
|
+
* ```ts
|
|
43
|
+
* @ApiResponse({ status: 409, description: 'Already exists', type: ErrorDto })
|
|
44
|
+
* ```
|
|
45
|
+
*/
|
|
46
|
+
class ErrorDto {
|
|
47
|
+
/** HTTP status code, repeated in the body. */
|
|
48
|
+
statusCode;
|
|
49
|
+
/** Status-derived machine-readable code (closed enum, see the property's `@ApiProperty`). */
|
|
50
|
+
code;
|
|
51
|
+
/** Human-readable description of what went wrong. */
|
|
52
|
+
message;
|
|
53
|
+
/** Endpoint-specific structured data, when the failure carried any. */
|
|
54
|
+
details;
|
|
55
|
+
/** When the error was produced, ISO 8601 UTC. */
|
|
56
|
+
timestamp;
|
|
57
|
+
/** Request path that produced the error. */
|
|
58
|
+
path;
|
|
59
|
+
}
|
|
60
|
+
exports.ErrorDto = ErrorDto;
|
|
61
|
+
__decorate([
|
|
62
|
+
(0, swagger_1.ApiProperty)({
|
|
63
|
+
description: 'HTTP status code, repeated in the body so a logged payload is self-describing.',
|
|
64
|
+
example: 409,
|
|
65
|
+
}),
|
|
66
|
+
__metadata("design:type", Number)
|
|
67
|
+
], ErrorDto.prototype, "statusCode", void 0);
|
|
68
|
+
__decorate([
|
|
69
|
+
(0, swagger_1.ApiProperty)({
|
|
70
|
+
description: 'Stable machine-readable code. Derived from the status by the exception filter, which ' +
|
|
71
|
+
'overwrites any `code` a thrown exception supplied — so it is always one of the values ' +
|
|
72
|
+
'below. Prefer branching on this over matching `message`, which is prose and may change.',
|
|
73
|
+
example: 'CONFLICT',
|
|
74
|
+
// Mirrors `HttpExceptionFilter.getCodeFromStatus`: the mapped statuses,
|
|
75
|
+
// plus the `ERROR` fallback an unmapped status produces.
|
|
76
|
+
enum: [
|
|
77
|
+
'BAD_REQUEST',
|
|
78
|
+
'UNAUTHORIZED',
|
|
79
|
+
'FORBIDDEN',
|
|
80
|
+
'NOT_FOUND',
|
|
81
|
+
'CONFLICT',
|
|
82
|
+
'PRECONDITION_FAILED',
|
|
83
|
+
'UNPROCESSABLE_ENTITY',
|
|
84
|
+
'TOO_MANY_REQUESTS',
|
|
85
|
+
'INTERNAL_ERROR',
|
|
86
|
+
'ERROR',
|
|
87
|
+
],
|
|
88
|
+
}),
|
|
89
|
+
__metadata("design:type", String)
|
|
90
|
+
], ErrorDto.prototype, "code", void 0);
|
|
91
|
+
__decorate([
|
|
92
|
+
(0, swagger_1.ApiProperty)({
|
|
93
|
+
description: 'Human-readable description of what went wrong.',
|
|
94
|
+
example: 'Email already in allowlist',
|
|
95
|
+
}),
|
|
96
|
+
__metadata("design:type", String)
|
|
97
|
+
], ErrorDto.prototype, "message", void 0);
|
|
98
|
+
__decorate([
|
|
99
|
+
(0, swagger_1.ApiPropertyOptional)({
|
|
100
|
+
description: 'Endpoint-specific structured data — the only place a custom field survives the exception ' +
|
|
101
|
+
'filter. Omitted when the failure carried none. Shape varies by endpoint and is documented ' +
|
|
102
|
+
'on the operation that returns it.',
|
|
103
|
+
example: { field: 'email' },
|
|
104
|
+
}),
|
|
105
|
+
__metadata("design:type", Object)
|
|
106
|
+
], ErrorDto.prototype, "details", void 0);
|
|
107
|
+
__decorate([
|
|
108
|
+
(0, swagger_1.ApiProperty)({
|
|
109
|
+
description: 'When the error was produced, ISO 8601 UTC.',
|
|
110
|
+
example: '2026-08-17T04:37:58.000Z',
|
|
111
|
+
}),
|
|
112
|
+
__metadata("design:type", String)
|
|
113
|
+
], ErrorDto.prototype, "timestamp", void 0);
|
|
114
|
+
__decorate([
|
|
115
|
+
(0, swagger_1.ApiProperty)({
|
|
116
|
+
description: 'Request path that produced the error.',
|
|
117
|
+
example: '/api/allowlist',
|
|
118
|
+
}),
|
|
119
|
+
__metadata("design:type", String)
|
|
120
|
+
], ErrorDto.prototype, "path", void 0);
|
|
121
|
+
//# sourceMappingURL=error.dto.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"error.dto.js","sourceRoot":"","sources":["../../../src/core/errors/error.dto.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,6CAAmE;AAEnE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,MAAa,QAAQ;IACnB,8CAA8C;IAK9C,UAAU,CAAU;IAEpB,6FAA6F;IAsB7F,IAAI,CAAU;IAEd,qDAAqD;IAKrD,OAAO,CAAU;IAEjB,uEAAuE;IAQvE,OAAO,CAAW;IAElB,iDAAiD;IAKjD,SAAS,CAAU;IAEnB,4CAA4C;IAK5C,IAAI,CAAU;CACf;AA9DD,4BA8DC;AAxDC;IAJC,IAAA,qBAAW,EAAC;QACX,WAAW,EAAE,gFAAgF;QAC7F,OAAO,EAAE,GAAG;KACb,CAAC;;4CACkB;AAwBpB;IArBC,IAAA,qBAAW,EAAC;QACX,WAAW,EACT,uFAAuF;YACvF,wFAAwF;YACxF,yFAAyF;QAC3F,OAAO,EAAE,UAAU;QACnB,wEAAwE;QACxE,yDAAyD;QACzD,IAAI,EAAE;YACJ,aAAa;YACb,cAAc;YACd,WAAW;YACX,WAAW;YACX,UAAU;YACV,qBAAqB;YACrB,sBAAsB;YACtB,mBAAmB;YACnB,gBAAgB;YAChB,OAAO;SACR;KACF,CAAC;;sCACY;AAOd;IAJC,IAAA,qBAAW,EAAC;QACX,WAAW,EAAE,gDAAgD;QAC7D,OAAO,EAAE,4BAA4B;KACtC,CAAC;;yCACe;AAUjB;IAPC,IAAA,6BAAmB,EAAC;QACnB,WAAW,EACT,2FAA2F;YAC3F,4FAA4F;YAC5F,mCAAmC;QACrC,OAAO,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE;KAC5B,CAAC;;yCACgB;AAOlB;IAJC,IAAA,qBAAW,EAAC;QACX,WAAW,EAAE,4CAA4C;QACzD,OAAO,EAAE,0BAA0B;KACpC,CAAC;;2CACiB;AAOnB;IAJC,IAAA,qBAAW,EAAC;QACX,WAAW,EAAE,uCAAuC;QACpD,OAAO,EAAE,gBAAgB;KAC1B,CAAC;;sCACY"}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import { ExceptionFilter, ArgumentsHost } from '@nestjs/common';
|
|
2
|
+
/**
|
|
3
|
+
* The application-wide exception filter: turns every thrown value into the one
|
|
4
|
+
* error envelope (`{ statusCode, code, message, details?, timestamp, path }`,
|
|
5
|
+
* documented by {@link ErrorDto}) on a Fastify reply, and logs one line per
|
|
6
|
+
* failure (`warn` below 500, `error` with the stack from 500 up).
|
|
7
|
+
*
|
|
8
|
+
* `code` is always derived from the HTTP status; a `code` on the thrown
|
|
9
|
+
* payload is ignored. `details` is the only place endpoint-specific data
|
|
10
|
+
* survives. An exception branded with {@link withVerbatimErrorBody} skips the
|
|
11
|
+
* envelope and is sent exactly as thrown. A 429 whose `details.retryAfterMs`
|
|
12
|
+
* is a positive number also gets a `Retry-After` header (whole seconds,
|
|
13
|
+
* rounded up). A `ZodValidationException` without explicit details answers
|
|
14
|
+
* `details.issues` (`[{ path, message }]`), never the submitted value. A
|
|
15
|
+
* non-`HttpException` error is a 500 whose `details` carries the stack unless
|
|
16
|
+
* `NODE_ENV` is `production`.
|
|
17
|
+
*
|
|
18
|
+
* Register it once, as an `APP_FILTER` provider of the root module. There is
|
|
19
|
+
* no module to import and nothing to configure.
|
|
20
|
+
*
|
|
21
|
+
* @stability stable
|
|
22
|
+
* @extensionPoint component
|
|
23
|
+
* @example
|
|
24
|
+
* ```ts
|
|
25
|
+
* import { APP_FILTER } from '@nestjs/core';
|
|
26
|
+
* import { HttpExceptionFilter } from '@marinoscar/platform-api/core';
|
|
27
|
+
*
|
|
28
|
+
* @Module({ providers: [{ provide: APP_FILTER, useClass: HttpExceptionFilter }] })
|
|
29
|
+
* export class AppModule {}
|
|
30
|
+
* ```
|
|
31
|
+
*/
|
|
32
|
+
export declare class HttpExceptionFilter implements ExceptionFilter {
|
|
33
|
+
private readonly logger;
|
|
34
|
+
/**
|
|
35
|
+
* Nest's `ExceptionFilter` hook: write the error response for `exception`
|
|
36
|
+
* on the HTTP reply of `host`. Called by Nest, not by application code.
|
|
37
|
+
*
|
|
38
|
+
* @param exception - Whatever was thrown.
|
|
39
|
+
* @param host - The Nest arguments host of the failed request (HTTP only).
|
|
40
|
+
*/
|
|
41
|
+
catch(exception: unknown, host: ArgumentsHost): void;
|
|
42
|
+
/**
|
|
43
|
+
* One log line per handled failure, identical for enveloped and verbatim
|
|
44
|
+
* responses. Extracted so the verbatim early-return above cannot silently
|
|
45
|
+
* skip logging — a device-flow `slow_down` storm has to be visible in the
|
|
46
|
+
* logs like any other 4xx.
|
|
47
|
+
*/
|
|
48
|
+
private logOutcome;
|
|
49
|
+
/**
|
|
50
|
+
* A short log-only description of a verbatim body.
|
|
51
|
+
*
|
|
52
|
+
* Reading `error` here is for the LOG LINE ONLY and shapes nothing — an RFC
|
|
53
|
+
* body's `error` is the single most useful thing to see in operations
|
|
54
|
+
* (`slow_down` and `access_denied` mean very different things at 3am), and
|
|
55
|
+
* without it every device-flow failure logs as an indistinguishable 400. The
|
|
56
|
+
* body itself is never stringified into the log: a verbatim payload is
|
|
57
|
+
* whatever the spec says it is, and this filter should not assume the rest of
|
|
58
|
+
* it is safe to print.
|
|
59
|
+
*/
|
|
60
|
+
private summarize;
|
|
61
|
+
private getCodeFromStatus;
|
|
62
|
+
}
|
|
63
|
+
//# sourceMappingURL=http-exception.filter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"http-exception.filter.d.ts","sourceRoot":"","sources":["../../../src/core/errors/http-exception.filter.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,eAAe,EAEf,aAAa,EAId,MAAM,gBAAgB,CAAC;AAaxB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,qBACa,mBAAoB,YAAW,eAAe;IACzD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAwC;IAE/D;;;;;;OAMG;IACH,KAAK,CAAC,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE,aAAa;IAmI7C;;;;;OAKG;IACH,OAAO,CAAC,UAAU;IAkBlB;;;;;;;;;;OAUG;IACH,OAAO,CAAC,SAAS;IAKjB,OAAO,CAAC,iBAAiB;CAe1B"}
|