@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,104 @@
|
|
|
1
|
+
import { Prisma } from '@prisma/client/extension';
|
|
2
|
+
import type { Scope, SystemActor } from '../principal/index';
|
|
3
|
+
import type { UserOwnedModelLookup } from './types';
|
|
4
|
+
/**
|
|
5
|
+
* The arguments a user-scoped client passes to Prisma for one call. Pure: it
|
|
6
|
+
* never mutates `args`, and it throws {@link ScopedAccessError} instead of
|
|
7
|
+
* returning when the call is outside the scope.
|
|
8
|
+
*
|
|
9
|
+
* Not exported from the package entry point; the package's unit tests import
|
|
10
|
+
* it from this file.
|
|
11
|
+
*
|
|
12
|
+
* @param call - `model` is `undefined` for raw SQL (`$queryRaw` and friends).
|
|
13
|
+
* @param scope - only `userId` is applied (see the file header).
|
|
14
|
+
* @param registry - the user-owned model registry; tests pass a fixture.
|
|
15
|
+
* @internal
|
|
16
|
+
*/
|
|
17
|
+
export declare function scopeQueryArgs(call: {
|
|
18
|
+
model?: string;
|
|
19
|
+
operation: string;
|
|
20
|
+
args: unknown;
|
|
21
|
+
}, scope: Scope, registry?: UserOwnedModelLookup): unknown;
|
|
22
|
+
/**
|
|
23
|
+
* The Prisma client extension {@link userScopeExtension} returns: a function
|
|
24
|
+
* of a client, as `Prisma.defineExtension` builds it, that adds no models,
|
|
25
|
+
* results or client methods (all four type arguments empty), so the extended
|
|
26
|
+
* client keeps the app's generated types.
|
|
27
|
+
*
|
|
28
|
+
* @stability experimental
|
|
29
|
+
*/
|
|
30
|
+
export type UserScopeExtension = ReturnType<typeof Prisma.defineExtension<{}, {}, {}, {}>>;
|
|
31
|
+
/**
|
|
32
|
+
* The extension behind {@link forUser}: confines queries on registered owner
|
|
33
|
+
* models to `scope.userId` and refuses every other model and raw SQL. Pass it
|
|
34
|
+
* to the app's own client with `$extends` when the call site needs the app's
|
|
35
|
+
* generated types (the reference app's `PrismaService.forUser`).
|
|
36
|
+
*
|
|
37
|
+
* @param scope - only `userId` is applied; `orgId` and `groupIds` are accepted and ignored until #725 and #729.
|
|
38
|
+
* @param registry - defaults to {@link userOwnedModelRegistry}.
|
|
39
|
+
* @throws ScopedAccessError when `scope.userId` is empty.
|
|
40
|
+
*
|
|
41
|
+
* @stability experimental
|
|
42
|
+
* @example
|
|
43
|
+
* ```ts
|
|
44
|
+
* // apps/api/src/prisma/prisma.service.ts
|
|
45
|
+
* forUser(scope: Scope) {
|
|
46
|
+
* return this.$extends(userScopeExtension(scope));
|
|
47
|
+
* }
|
|
48
|
+
* ```
|
|
49
|
+
*/
|
|
50
|
+
export declare function userScopeExtension(scope: Scope, registry?: UserOwnedModelLookup): UserScopeExtension;
|
|
51
|
+
/**
|
|
52
|
+
* The structural shape {@link forUser} needs from a client: `$extends`. The
|
|
53
|
+
* app's generated `PrismaClient` and the `PLATFORM_PRISMA` host port's
|
|
54
|
+
* `PrismaClientLike` both satisfy it.
|
|
55
|
+
*
|
|
56
|
+
* @stability experimental
|
|
57
|
+
*/
|
|
58
|
+
export interface ExtendableClient {
|
|
59
|
+
/** Prisma's client-extension entry point. */
|
|
60
|
+
$extends(extension: never): unknown;
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* A client whose queries on registered owner models are confined to
|
|
64
|
+
* `scope.userId`, and which refuses every other model and raw SQL.
|
|
65
|
+
*
|
|
66
|
+
* Built per call; `$extends` shares the underlying connection pool, so this is
|
|
67
|
+
* cheap. Interactive transactions on the returned client stay scoped. The
|
|
68
|
+
* return type is whatever the client's `$extends` returns; an app that wants
|
|
69
|
+
* its generated model types back uses {@link userScopeExtension} on its own
|
|
70
|
+
* client instead.
|
|
71
|
+
*
|
|
72
|
+
* @param client - the app's Prisma client (or the `PLATFORM_PRISMA` port).
|
|
73
|
+
* @param scope - derived from the principal, never from request input.
|
|
74
|
+
* @param registry - defaults to {@link userOwnedModelRegistry}.
|
|
75
|
+
* @throws ScopedAccessError when `scope.userId` is empty.
|
|
76
|
+
*
|
|
77
|
+
* @stability experimental
|
|
78
|
+
* @example
|
|
79
|
+
* ```ts
|
|
80
|
+
* const db = forUser(prisma, { userId: principal.userId });
|
|
81
|
+
* await db.userCredential.findMany(); // only that user's rows
|
|
82
|
+
* ```
|
|
83
|
+
*/
|
|
84
|
+
export declare function forUser<C extends ExtendableClient>(client: C, scope: Scope, registry?: UserOwnedModelLookup): ReturnType<C['$extends']>;
|
|
85
|
+
/**
|
|
86
|
+
* The explicit, greppable marker for deliberately unscoped work (backups,
|
|
87
|
+
* purges, the Doctor, cross-user admin reads, actor-only tables). Returns
|
|
88
|
+
* `client` unchanged after checking the actor, and sets
|
|
89
|
+
* `db.access.scope = 'system'` and `db.access.reason` on the active span. The
|
|
90
|
+
* reason is never a metric label (cardinality).
|
|
91
|
+
*
|
|
92
|
+
* @param client - the unscoped client to hand back.
|
|
93
|
+
* @param actor - `{ kind: 'system', reason }` with a short, non-empty reason.
|
|
94
|
+
* @throws ScopedAccessError when the actor is not a system actor with a reason.
|
|
95
|
+
*
|
|
96
|
+
* @stability experimental
|
|
97
|
+
* @example
|
|
98
|
+
* ```ts
|
|
99
|
+
* const db = asSystem(prisma, { kind: 'system', reason: 'retention.purge' });
|
|
100
|
+
* await db.notification.deleteMany({ where: { createdAt: { lt: cutoff } } });
|
|
101
|
+
* ```
|
|
102
|
+
*/
|
|
103
|
+
export declare function asSystem<C>(client: C, actor: SystemActor): C;
|
|
104
|
+
//# sourceMappingURL=scoped-client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scoped-client.d.ts","sourceRoot":"","sources":["../../../src/core/data-access/scoped-client.ts"],"names":[],"mappings":"AA+CA,OAAO,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAC;AAElD,OAAO,KAAK,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAE7D,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAC;AAyGpD;;;;;;;;;;;;GAYG;AACH,wBAAgB,cAAc,CAC5B,IAAI,EAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,OAAO,CAAA;CAAE,EAC1D,KAAK,EAAE,KAAK,EACZ,QAAQ,GAAE,oBAA6C,GACtD,OAAO,CAsCT;AAQD;;;;;;;GAOG;AACH,MAAM,MAAM,kBAAkB,GAAG,UAAU,CAAC,OAAO,MAAM,CAAC,eAAe,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;AAE3F;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,GAAE,oBAA6C,GAAG,kBAAkB,CAW5H;AAED;;;;;;GAMG;AACH,MAAM,WAAW,gBAAgB;IAC/B,6CAA6C;IAC7C,QAAQ,CAAC,SAAS,EAAE,KAAK,GAAG,OAAO,CAAC;CACrC;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,OAAO,CAAC,CAAC,SAAS,gBAAgB,EAChD,MAAM,EAAE,CAAC,EACT,KAAK,EAAE,KAAK,EACZ,QAAQ,GAAE,oBAA6C,GACtD,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAG3B;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,QAAQ,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,WAAW,GAAG,CAAC,CAS5D"}
|
|
@@ -0,0 +1,270 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// =============================================================================
|
|
3
|
+
// Scoped data access: forUser() and asSystem() (issue #688 PP-1.9, moved to
|
|
4
|
+
// core by #699)
|
|
5
|
+
// =============================================================================
|
|
6
|
+
//
|
|
7
|
+
// `forUser(client, scope)` returns a Prisma client extension whose queries on
|
|
8
|
+
// REGISTERED OWNER MODELS (./user-owned-data.registry.ts) are confined to the
|
|
9
|
+
// scope's user. Everything else through that client throws `ScopedAccessError`:
|
|
10
|
+
// actor-only models, unregistered models and raw SQL. A path that needs a
|
|
11
|
+
// system table says so with `asSystem(client, { kind: 'system', reason })`,
|
|
12
|
+
// which returns the client unchanged and records the reason on the active span.
|
|
13
|
+
//
|
|
14
|
+
// SCHEMA-INDEPENDENT: the extension is built with `Prisma.defineExtension` from
|
|
15
|
+
// `@prisma/client/extension`, which does not depend on any generated client.
|
|
16
|
+
// Model names are strings looked up in the registry the app fills; nothing
|
|
17
|
+
// here imports a generated model type. The app's client is passed in at call
|
|
18
|
+
// time (in a packaged slice: the `PLATFORM_PRISMA` host port).
|
|
19
|
+
//
|
|
20
|
+
// Defence in depth, never a replacement for authorization: every route still
|
|
21
|
+
// declares its access, and a service still decides WHICH user it acts for.
|
|
22
|
+
// What this adds is that, once it has decided, a forgotten `where: { userId }`
|
|
23
|
+
// cannot read or change another user's rows.
|
|
24
|
+
//
|
|
25
|
+
// What the extension does per operation, for owner field O and user U:
|
|
26
|
+
//
|
|
27
|
+
// findFirst(OrThrow), findMany, count, aggregate, groupBy,
|
|
28
|
+
// updateMany(AndReturn), deleteMany
|
|
29
|
+
// where := { AND: [where ?? {}, { O: U }] }
|
|
30
|
+
// findUnique(OrThrow), update, delete, upsert
|
|
31
|
+
// where := { ...where, AND: [...where.AND, { O: U }] } (a unique where
|
|
32
|
+
// accepts extra filters; another user's row is "not found", never 403)
|
|
33
|
+
// create, createMany(AndReturn), upsert.create
|
|
34
|
+
// O absent: set to U. O present and different: throw. The owner given
|
|
35
|
+
// as the relation instead (`user: { connect: { id } }`) is accepted only
|
|
36
|
+
// when the id is U.
|
|
37
|
+
// update, updateMany(AndReturn), upsert.update
|
|
38
|
+
// data may not move the row to another owner (throw).
|
|
39
|
+
//
|
|
40
|
+
// NOT REWRITTEN: nested writes and `include`/`select` of relations. A nested
|
|
41
|
+
// write into another user-owned model must go through that model's own
|
|
42
|
+
// scoped call. See README.md next to this folder.
|
|
43
|
+
//
|
|
44
|
+
// `Scope.orgId` and `Scope.groupIds` are accepted and ignored: org scoping
|
|
45
|
+
// arrives with row-level security (#725) and group grants with #729.
|
|
46
|
+
// =============================================================================
|
|
47
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
48
|
+
exports.scopeQueryArgs = scopeQueryArgs;
|
|
49
|
+
exports.userScopeExtension = userScopeExtension;
|
|
50
|
+
exports.forUser = forUser;
|
|
51
|
+
exports.asSystem = asSystem;
|
|
52
|
+
const api_1 = require("@opentelemetry/api");
|
|
53
|
+
const extension_1 = require("@prisma/client/extension");
|
|
54
|
+
const scoped_access_error_1 = require("./scoped-access.error");
|
|
55
|
+
const user_owned_data_registry_1 = require("./user-owned-data.registry");
|
|
56
|
+
/** Operations whose `where` is a filter: the owner condition is ANDed in. */
|
|
57
|
+
const FILTER_OPERATIONS = new Set([
|
|
58
|
+
'findFirst',
|
|
59
|
+
'findFirstOrThrow',
|
|
60
|
+
'findMany',
|
|
61
|
+
'count',
|
|
62
|
+
'aggregate',
|
|
63
|
+
'groupBy',
|
|
64
|
+
'updateMany',
|
|
65
|
+
'updateManyAndReturn',
|
|
66
|
+
'deleteMany',
|
|
67
|
+
]);
|
|
68
|
+
/** Operations whose `where` is a unique where: the owner condition is added to it. */
|
|
69
|
+
const UNIQUE_OPERATIONS = new Set(['findUnique', 'findUniqueOrThrow', 'update', 'delete', 'upsert']);
|
|
70
|
+
/** Operations whose `data` creates rows. */
|
|
71
|
+
const CREATE_OPERATIONS = new Set(['create', 'createMany', 'createManyAndReturn']);
|
|
72
|
+
/** Operations whose `data` updates rows. */
|
|
73
|
+
const UPDATE_OPERATIONS = new Set(['update', 'updateMany', 'updateManyAndReturn']);
|
|
74
|
+
function isRecord(value) {
|
|
75
|
+
return typeof value === 'object' && value !== null && !Array.isArray(value);
|
|
76
|
+
}
|
|
77
|
+
function refuse(pin, message) {
|
|
78
|
+
throw new scoped_access_error_1.ScopedAccessError(message, { model: pin.model, operation: pin.operation });
|
|
79
|
+
}
|
|
80
|
+
function ownerCondition(pin) {
|
|
81
|
+
return { [pin.field]: pin.userId };
|
|
82
|
+
}
|
|
83
|
+
function scopeFilterWhere(where, pin) {
|
|
84
|
+
return { AND: [isRecord(where) ? where : {}, ownerCondition(pin)] };
|
|
85
|
+
}
|
|
86
|
+
function scopeUniqueWhere(where, pin) {
|
|
87
|
+
const base = isRecord(where) ? where : {};
|
|
88
|
+
const existing = base.AND === undefined ? [] : Array.isArray(base.AND) ? base.AND : [base.AND];
|
|
89
|
+
return { ...base, AND: [...existing, ownerCondition(pin)] };
|
|
90
|
+
}
|
|
91
|
+
/** The scalar value an update or create assigns, unwrapping `{ set: v }`. */
|
|
92
|
+
function assignedValue(value) {
|
|
93
|
+
return isRecord(value) && 'set' in value ? value.set : value;
|
|
94
|
+
}
|
|
95
|
+
/** Whether a relation write points exactly at the scope's user: `{ connect: { id: U } }`. */
|
|
96
|
+
function isConnectToScopeUser(value, pin) {
|
|
97
|
+
if (!isRecord(value))
|
|
98
|
+
return false;
|
|
99
|
+
const keys = Object.keys(value);
|
|
100
|
+
if (keys.length !== 1 || keys[0] !== 'connect' || !isRecord(value.connect))
|
|
101
|
+
return false;
|
|
102
|
+
const connect = value.connect;
|
|
103
|
+
return Object.keys(connect).length === 1 && connect.id === pin.userId;
|
|
104
|
+
}
|
|
105
|
+
function scopeCreateData(data, pin) {
|
|
106
|
+
if (!isRecord(data))
|
|
107
|
+
refuse(pin, `${pin.model}.${pin.operation}: create data must be an object.`);
|
|
108
|
+
if (pin.field in data) {
|
|
109
|
+
if (assignedValue(data[pin.field]) !== pin.userId) {
|
|
110
|
+
refuse(pin, `${pin.model}.${pin.operation}: ${pin.field} names another user; a scoped client only writes its own user's rows.`);
|
|
111
|
+
}
|
|
112
|
+
return data;
|
|
113
|
+
}
|
|
114
|
+
if (pin.relation !== undefined && pin.relation in data) {
|
|
115
|
+
if (!isConnectToScopeUser(data[pin.relation], pin)) {
|
|
116
|
+
refuse(pin, `${pin.model}.${pin.operation}: ${pin.relation} must be { connect: { id: <scope user> } }; a scoped client only writes its own user's rows.`);
|
|
117
|
+
}
|
|
118
|
+
return data;
|
|
119
|
+
}
|
|
120
|
+
return { ...data, [pin.field]: pin.userId };
|
|
121
|
+
}
|
|
122
|
+
function assertUpdateKeepsOwner(data, pin) {
|
|
123
|
+
if (!isRecord(data))
|
|
124
|
+
return;
|
|
125
|
+
if (pin.field in data && assignedValue(data[pin.field]) !== pin.userId) {
|
|
126
|
+
refuse(pin, `${pin.model}.${pin.operation}: a scoped client cannot move a row to another owner (${pin.field}).`);
|
|
127
|
+
}
|
|
128
|
+
if (pin.relation !== undefined && pin.relation in data && !isConnectToScopeUser(data[pin.relation], pin)) {
|
|
129
|
+
refuse(pin, `${pin.model}.${pin.operation}: a scoped client cannot change a row's owner (${pin.relation}).`);
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
/**
|
|
133
|
+
* The arguments a user-scoped client passes to Prisma for one call. Pure: it
|
|
134
|
+
* never mutates `args`, and it throws {@link ScopedAccessError} instead of
|
|
135
|
+
* returning when the call is outside the scope.
|
|
136
|
+
*
|
|
137
|
+
* Not exported from the package entry point; the package's unit tests import
|
|
138
|
+
* it from this file.
|
|
139
|
+
*
|
|
140
|
+
* @param call - `model` is `undefined` for raw SQL (`$queryRaw` and friends).
|
|
141
|
+
* @param scope - only `userId` is applied (see the file header).
|
|
142
|
+
* @param registry - the user-owned model registry; tests pass a fixture.
|
|
143
|
+
* @internal
|
|
144
|
+
*/
|
|
145
|
+
function scopeQueryArgs(call, scope, registry = user_owned_data_registry_1.userOwnedModelRegistry) {
|
|
146
|
+
const { model, operation } = call;
|
|
147
|
+
if (model === undefined) {
|
|
148
|
+
refuse({ model: '(raw)', operation }, `${operation} is not allowed on a user-scoped client: raw SQL is system-only; use asSystem() with a reason.`);
|
|
149
|
+
}
|
|
150
|
+
const def = registry.get(model);
|
|
151
|
+
const field = def?.ownerField;
|
|
152
|
+
if (def === undefined || field === undefined) {
|
|
153
|
+
refuse({ model, operation }, `${model} is not user-owned; use asSystem() with a reason.`);
|
|
154
|
+
}
|
|
155
|
+
const pin = { model, operation, field, relation: (0, user_owned_data_registry_1.ownerRelationOf)(def), userId: scope.userId };
|
|
156
|
+
const args = isRecord(call.args) ? { ...call.args } : {};
|
|
157
|
+
if (FILTER_OPERATIONS.has(operation)) {
|
|
158
|
+
args.where = scopeFilterWhere(args.where, pin);
|
|
159
|
+
}
|
|
160
|
+
else if (UNIQUE_OPERATIONS.has(operation)) {
|
|
161
|
+
args.where = scopeUniqueWhere(args.where, pin);
|
|
162
|
+
}
|
|
163
|
+
else if (!CREATE_OPERATIONS.has(operation)) {
|
|
164
|
+
refuse(pin, `${model}.${operation} is not supported on a user-scoped client; use asSystem() with a reason.`);
|
|
165
|
+
}
|
|
166
|
+
if (CREATE_OPERATIONS.has(operation)) {
|
|
167
|
+
args.data = Array.isArray(args.data)
|
|
168
|
+
? args.data.map((row) => scopeCreateData(row, pin))
|
|
169
|
+
: scopeCreateData(args.data, pin);
|
|
170
|
+
}
|
|
171
|
+
if (UPDATE_OPERATIONS.has(operation)) {
|
|
172
|
+
assertUpdateKeepsOwner(args.data, pin);
|
|
173
|
+
}
|
|
174
|
+
if (operation === 'upsert') {
|
|
175
|
+
args.create = scopeCreateData(args.create, pin);
|
|
176
|
+
assertUpdateKeepsOwner(args.update, pin);
|
|
177
|
+
}
|
|
178
|
+
return args;
|
|
179
|
+
}
|
|
180
|
+
function assertScope(scope) {
|
|
181
|
+
if (typeof scope?.userId !== 'string' || scope.userId.trim() === '') {
|
|
182
|
+
throw new scoped_access_error_1.ScopedAccessError('A scope must name a user: scope.userId is empty.');
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
/**
|
|
186
|
+
* The extension behind {@link forUser}: confines queries on registered owner
|
|
187
|
+
* models to `scope.userId` and refuses every other model and raw SQL. Pass it
|
|
188
|
+
* to the app's own client with `$extends` when the call site needs the app's
|
|
189
|
+
* generated types (the reference app's `PrismaService.forUser`).
|
|
190
|
+
*
|
|
191
|
+
* @param scope - only `userId` is applied; `orgId` and `groupIds` are accepted and ignored until #725 and #729.
|
|
192
|
+
* @param registry - defaults to {@link userOwnedModelRegistry}.
|
|
193
|
+
* @throws ScopedAccessError when `scope.userId` is empty.
|
|
194
|
+
*
|
|
195
|
+
* @stability experimental
|
|
196
|
+
* @example
|
|
197
|
+
* ```ts
|
|
198
|
+
* // apps/api/src/prisma/prisma.service.ts
|
|
199
|
+
* forUser(scope: Scope) {
|
|
200
|
+
* return this.$extends(userScopeExtension(scope));
|
|
201
|
+
* }
|
|
202
|
+
* ```
|
|
203
|
+
*/
|
|
204
|
+
function userScopeExtension(scope, registry = user_owned_data_registry_1.userOwnedModelRegistry) {
|
|
205
|
+
assertScope(scope);
|
|
206
|
+
const pinned = { userId: scope.userId };
|
|
207
|
+
return extension_1.Prisma.defineExtension({
|
|
208
|
+
name: 'user-scope',
|
|
209
|
+
query: {
|
|
210
|
+
$allOperations({ model, operation, args, query }) {
|
|
211
|
+
return query(scopeQueryArgs({ model, operation, args }, pinned, registry));
|
|
212
|
+
},
|
|
213
|
+
},
|
|
214
|
+
});
|
|
215
|
+
}
|
|
216
|
+
/**
|
|
217
|
+
* A client whose queries on registered owner models are confined to
|
|
218
|
+
* `scope.userId`, and which refuses every other model and raw SQL.
|
|
219
|
+
*
|
|
220
|
+
* Built per call; `$extends` shares the underlying connection pool, so this is
|
|
221
|
+
* cheap. Interactive transactions on the returned client stay scoped. The
|
|
222
|
+
* return type is whatever the client's `$extends` returns; an app that wants
|
|
223
|
+
* its generated model types back uses {@link userScopeExtension} on its own
|
|
224
|
+
* client instead.
|
|
225
|
+
*
|
|
226
|
+
* @param client - the app's Prisma client (or the `PLATFORM_PRISMA` port).
|
|
227
|
+
* @param scope - derived from the principal, never from request input.
|
|
228
|
+
* @param registry - defaults to {@link userOwnedModelRegistry}.
|
|
229
|
+
* @throws ScopedAccessError when `scope.userId` is empty.
|
|
230
|
+
*
|
|
231
|
+
* @stability experimental
|
|
232
|
+
* @example
|
|
233
|
+
* ```ts
|
|
234
|
+
* const db = forUser(prisma, { userId: principal.userId });
|
|
235
|
+
* await db.userCredential.findMany(); // only that user's rows
|
|
236
|
+
* ```
|
|
237
|
+
*/
|
|
238
|
+
function forUser(client, scope, registry = user_owned_data_registry_1.userOwnedModelRegistry) {
|
|
239
|
+
const extension = userScopeExtension(scope, registry);
|
|
240
|
+
return client.$extends(extension);
|
|
241
|
+
}
|
|
242
|
+
/**
|
|
243
|
+
* The explicit, greppable marker for deliberately unscoped work (backups,
|
|
244
|
+
* purges, the Doctor, cross-user admin reads, actor-only tables). Returns
|
|
245
|
+
* `client` unchanged after checking the actor, and sets
|
|
246
|
+
* `db.access.scope = 'system'` and `db.access.reason` on the active span. The
|
|
247
|
+
* reason is never a metric label (cardinality).
|
|
248
|
+
*
|
|
249
|
+
* @param client - the unscoped client to hand back.
|
|
250
|
+
* @param actor - `{ kind: 'system', reason }` with a short, non-empty reason.
|
|
251
|
+
* @throws ScopedAccessError when the actor is not a system actor with a reason.
|
|
252
|
+
*
|
|
253
|
+
* @stability experimental
|
|
254
|
+
* @example
|
|
255
|
+
* ```ts
|
|
256
|
+
* const db = asSystem(prisma, { kind: 'system', reason: 'retention.purge' });
|
|
257
|
+
* await db.notification.deleteMany({ where: { createdAt: { lt: cutoff } } });
|
|
258
|
+
* ```
|
|
259
|
+
*/
|
|
260
|
+
function asSystem(client, actor) {
|
|
261
|
+
if (actor?.kind !== 'system' || typeof actor.reason !== 'string' || actor.reason.trim() === '') {
|
|
262
|
+
throw new scoped_access_error_1.ScopedAccessError('asSystem() needs { kind: "system", reason } with a non-empty reason.');
|
|
263
|
+
}
|
|
264
|
+
api_1.trace.getActiveSpan()?.setAttributes({
|
|
265
|
+
'db.access.scope': 'system',
|
|
266
|
+
'db.access.reason': actor.reason,
|
|
267
|
+
});
|
|
268
|
+
return client;
|
|
269
|
+
}
|
|
270
|
+
//# sourceMappingURL=scoped-client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scoped-client.js","sourceRoot":"","sources":["../../../src/core/data-access/scoped-client.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* What happens to a registered row when its user's data is purged.
|
|
3
|
+
*
|
|
4
|
+
* Each value names the database behaviour the relation's `onDelete` already
|
|
5
|
+
* implements; the `userOwnedData` conformance suite checks the two agree.
|
|
6
|
+
*
|
|
7
|
+
* - `'delete'`: the row is deleted with the user's data (`onDelete: Cascade`).
|
|
8
|
+
* - `'detach'`: the row survives and the user reference is nulled
|
|
9
|
+
* (`onDelete: SetNull`).
|
|
10
|
+
* - `'retain'`: the row survives untouched and the user cannot be deleted
|
|
11
|
+
* while it exists (`onDelete: Restrict` or `NoAction`). Only for actor
|
|
12
|
+
* fields on rows another owner controls, and the rationale must say why.
|
|
13
|
+
*
|
|
14
|
+
* @stability experimental
|
|
15
|
+
*/
|
|
16
|
+
export type PurgePolicy = 'delete' | 'detach' | 'retain';
|
|
17
|
+
/**
|
|
18
|
+
* Whether a user's data export includes the row.
|
|
19
|
+
*
|
|
20
|
+
* @stability experimental
|
|
21
|
+
*/
|
|
22
|
+
export type ExportPolicy = 'include' | 'exclude';
|
|
23
|
+
/**
|
|
24
|
+
* One registered model: every model holding a foreign key to `User` has one,
|
|
25
|
+
* naming the role of each such key, a purge and an export policy.
|
|
26
|
+
*
|
|
27
|
+
* @typeParam TModel - the model-name type. Apps pass their generated
|
|
28
|
+
* `Prisma.ModelName` so a misspelt model fails to compile; the registry itself
|
|
29
|
+
* stores plain strings.
|
|
30
|
+
*
|
|
31
|
+
* @stability experimental
|
|
32
|
+
* @example
|
|
33
|
+
* ```ts
|
|
34
|
+
* const def: UserOwnedModelDef = {
|
|
35
|
+
* model: 'UserCredential',
|
|
36
|
+
* ownerField: 'userId',
|
|
37
|
+
* purge: 'delete',
|
|
38
|
+
* export: 'include',
|
|
39
|
+
* exportOmit: ['secret'],
|
|
40
|
+
* rationale: "A user's own encrypted key; the ciphertext never leaves the server.",
|
|
41
|
+
* };
|
|
42
|
+
* ```
|
|
43
|
+
*/
|
|
44
|
+
export interface UserOwnedModelDef<TModel extends string = string> {
|
|
45
|
+
/** The Prisma model name, PascalCase, e.g. `'UserCredential'`. */
|
|
46
|
+
readonly model: TModel;
|
|
47
|
+
/**
|
|
48
|
+
* The scalar foreign key naming the row's owner, e.g. `'userId'`. Absent for
|
|
49
|
+
* actor-only models. A model with an owner field is what a scoped client
|
|
50
|
+
* may read and write.
|
|
51
|
+
*/
|
|
52
|
+
readonly ownerField?: string;
|
|
53
|
+
/**
|
|
54
|
+
* The relation field backing {@link UserOwnedModelDef.ownerField}, used when
|
|
55
|
+
* a create passes the owner as `{ connect: { id } }` instead of the scalar.
|
|
56
|
+
* Defaults to the owner field without its trailing `Id` (`userId` → `user`,
|
|
57
|
+
* `createdById` → `createdBy`); the conformance suite checks it against the
|
|
58
|
+
* schema.
|
|
59
|
+
*/
|
|
60
|
+
readonly ownerRelation?: string;
|
|
61
|
+
/** Scalar foreign keys to `User` that record who acted, not who owns. */
|
|
62
|
+
readonly actorFields?: readonly string[];
|
|
63
|
+
/**
|
|
64
|
+
* Applies to the owner field, or to every actor field when there is no
|
|
65
|
+
* owner. See {@link PurgePolicy}.
|
|
66
|
+
*/
|
|
67
|
+
readonly purge: PurgePolicy;
|
|
68
|
+
/** See {@link ExportPolicy}. */
|
|
69
|
+
readonly export: ExportPolicy;
|
|
70
|
+
/** Columns never exported even when `export` is `'include'` (secrets, hashes). */
|
|
71
|
+
readonly exportOmit?: readonly string[];
|
|
72
|
+
/** One or two sentences: why this role and these policies. Rendered in docs. */
|
|
73
|
+
readonly rationale: string;
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* The one capability a scoped client needs from a registry: look a model up.
|
|
77
|
+
* {@link userOwnedModelRegistry} satisfies it; tests pass a fixture.
|
|
78
|
+
*
|
|
79
|
+
* @stability experimental
|
|
80
|
+
*/
|
|
81
|
+
export interface UserOwnedModelLookup {
|
|
82
|
+
/** The registered definition of `model`, or `undefined`. */
|
|
83
|
+
get(model: string): UserOwnedModelDef | undefined;
|
|
84
|
+
}
|
|
85
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/core/data-access/types.ts"],"names":[],"mappings":"AAUA;;;;;;;;;;;;;;GAcG;AACH,MAAM,MAAM,WAAW,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAEzD;;;;GAIG;AACH,MAAM,MAAM,YAAY,GAAG,SAAS,GAAG,SAAS,CAAC;AAEjD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,WAAW,iBAAiB,CAAC,MAAM,SAAS,MAAM,GAAG,MAAM;IAC/D,kEAAkE;IAClE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB;;;;OAIG;IACH,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B;;;;;;OAMG;IACH,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAChC,yEAAyE;IACzE,QAAQ,CAAC,WAAW,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACzC;;;OAGG;IACH,QAAQ,CAAC,KAAK,EAAE,WAAW,CAAC;IAC5B,gCAAgC;IAChC,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAC;IAC9B,kFAAkF;IAClF,QAAQ,CAAC,UAAU,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACxC,gFAAgF;IAChF,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B;AAED;;;;;GAKG;AACH,MAAM,WAAW,oBAAoB;IACnC,4DAA4D;IAC5D,GAAG,CAAC,KAAK,EAAE,MAAM,GAAG,iBAAiB,GAAG,SAAS,CAAC;CACnD"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// =============================================================================
|
|
3
|
+
// User-owned data: policy types (issue #688 PP-1.9, moved to core by #699)
|
|
4
|
+
// =============================================================================
|
|
5
|
+
//
|
|
6
|
+
// Schema-independent on purpose: a model is a string. An app narrows it to its
|
|
7
|
+
// own generated `Prisma.ModelName` with the type parameter, so a typo in a
|
|
8
|
+
// registration still fails its typecheck while the package never sees the
|
|
9
|
+
// app's generated types.
|
|
10
|
+
// =============================================================================
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/core/data-access/types.ts"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,2EAA2E;AAC3E,gFAAgF;AAChF,EAAE;AACF,+EAA+E;AAC/E,2EAA2E;AAC3E,0EAA0E;AAC1E,yBAAyB;AACzB,gFAAgF"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import type { UserOwnedModelDef } from './types';
|
|
2
|
+
/**
|
|
3
|
+
* The static registry of models holding a foreign key to `User`, keyed by
|
|
4
|
+
* model name. One per process: the app fills it from a manifest imported
|
|
5
|
+
* before bootstrap, and `RegistryFreezeService` freezes it with every other
|
|
6
|
+
* `defineRegistry` registry.
|
|
7
|
+
*
|
|
8
|
+
* @stability experimental
|
|
9
|
+
* @extensionPoint registry
|
|
10
|
+
* @example
|
|
11
|
+
* ```ts
|
|
12
|
+
* // apps/api/src/prisma/ownership/user-owned-model.manifest.ts
|
|
13
|
+
* registerUserOwnedModels(PLATFORM_USER_OWNED_MODELS);
|
|
14
|
+
* registerUserOwnedModels(APP_USER_OWNED_MODELS);
|
|
15
|
+
*
|
|
16
|
+
* userOwnedModelRegistry.get('UserCredential')?.ownerField; // 'userId'
|
|
17
|
+
* ```
|
|
18
|
+
*/
|
|
19
|
+
export declare const userOwnedModelRegistry: import("../registry/registry").Registry<UserOwnedModelDef<string>>;
|
|
20
|
+
/**
|
|
21
|
+
* Registers a batch of definitions in {@link userOwnedModelRegistry}, all or
|
|
22
|
+
* nothing.
|
|
23
|
+
*
|
|
24
|
+
* @param defs - the definitions; an app may type them with its own model names.
|
|
25
|
+
* @throws RegistryError `INVALID_ENTRY`, `DUPLICATE_ID` or `FROZEN`.
|
|
26
|
+
*
|
|
27
|
+
* @stability experimental
|
|
28
|
+
* @example
|
|
29
|
+
* ```ts
|
|
30
|
+
* registerUserOwnedModels([
|
|
31
|
+
* { model: 'Workout', ownerField: 'userId', purge: 'delete', export: 'include', rationale: "The user's own log." },
|
|
32
|
+
* ]);
|
|
33
|
+
* ```
|
|
34
|
+
*/
|
|
35
|
+
export declare function registerUserOwnedModels<TModel extends string>(defs: readonly UserOwnedModelDef<TModel>[]): void;
|
|
36
|
+
/**
|
|
37
|
+
* The owner field of a registered model, or `undefined` (actor-only or
|
|
38
|
+
* unregistered).
|
|
39
|
+
*
|
|
40
|
+
* @param model - the Prisma model name.
|
|
41
|
+
* @stability experimental
|
|
42
|
+
* @example
|
|
43
|
+
* ```ts
|
|
44
|
+
* ownerFieldOf('StorageObject'); // 'uploadedById'
|
|
45
|
+
* ```
|
|
46
|
+
*/
|
|
47
|
+
export declare function ownerFieldOf(model: string): string | undefined;
|
|
48
|
+
/**
|
|
49
|
+
* The relation field backing a definition's owner field: `ownerRelation`
|
|
50
|
+
* when given, otherwise the owner field without its trailing `Id`.
|
|
51
|
+
*
|
|
52
|
+
* @param def - a registered (or candidate) definition.
|
|
53
|
+
* @stability experimental
|
|
54
|
+
* @example
|
|
55
|
+
* ```ts
|
|
56
|
+
* ownerRelationOf({ model: 'WorkerNode', ownerField: 'createdById', purge: 'delete', export: 'exclude', rationale: 'x' }); // 'createdBy'
|
|
57
|
+
* ```
|
|
58
|
+
*/
|
|
59
|
+
export declare function ownerRelationOf(def: UserOwnedModelDef): string | undefined;
|
|
60
|
+
//# sourceMappingURL=user-owned-data.registry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"user-owned-data.registry.d.ts","sourceRoot":"","sources":["../../../src/core/data-access/user-owned-data.registry.ts"],"names":[],"mappings":"AA0BA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAuCjD;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,sBAAsB,oEAMjC,CAAC;AAEH;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,uBAAuB,CAAC,MAAM,SAAS,MAAM,EAAE,IAAI,EAAE,SAAS,iBAAiB,CAAC,MAAM,CAAC,EAAE,GAAG,IAAI,CAE/G;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAE9D;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,iBAAiB,GAAG,MAAM,GAAG,SAAS,CAG1E"}
|