@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,222 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* How a deployment isolates its users: one organisation everyone auto-joins
|
|
3
|
+
* (`'single'`) or one organisation per customer (`'multi'`).
|
|
4
|
+
*
|
|
5
|
+
* A deployment setting, not a code path: the same code and the same tables
|
|
6
|
+
* serve both modes. This type only names the two values; parsing the setting
|
|
7
|
+
* is not part of this contract.
|
|
8
|
+
*
|
|
9
|
+
* @stability experimental
|
|
10
|
+
* @example
|
|
11
|
+
* ```ts
|
|
12
|
+
* const mode: TenancyMode = 'single';
|
|
13
|
+
* ```
|
|
14
|
+
*/
|
|
15
|
+
export type TenancyMode = 'single' | 'multi';
|
|
16
|
+
/**
|
|
17
|
+
* How the request authenticated. One value per credential family the
|
|
18
|
+
* authentication guard accepts:
|
|
19
|
+
*
|
|
20
|
+
* - `'session'`: a browser access JWT (`Authorization: Bearer <jwt>`) whose
|
|
21
|
+
* payload has no `did` claim.
|
|
22
|
+
* - `'device'`: an access JWT carrying `did`, issued by the device
|
|
23
|
+
* authorization flow. A device flow that issued a `pat_` presents a PAT and
|
|
24
|
+
* is `'pat'`: the kind names the credential presented, not the flow that
|
|
25
|
+
* minted it.
|
|
26
|
+
* - `'pat'`: a `pat_` personal access token.
|
|
27
|
+
* - `'node'`: a `nod_` worker-node credential, confined to `/api/nodes`.
|
|
28
|
+
*
|
|
29
|
+
* Small and closed, so unlike an org id it is safe as a metric label.
|
|
30
|
+
*
|
|
31
|
+
* @stability experimental
|
|
32
|
+
* @example
|
|
33
|
+
* ```ts
|
|
34
|
+
* const kind: CredentialKind = payload.did ? 'device' : 'session';
|
|
35
|
+
* ```
|
|
36
|
+
*/
|
|
37
|
+
export type CredentialKind = 'session' | 'device' | 'pat' | 'node';
|
|
38
|
+
/**
|
|
39
|
+
* Discriminant of {@link Principal}: a human user (directly or through a
|
|
40
|
+
* credential they delegated) or an unattended worker node.
|
|
41
|
+
*
|
|
42
|
+
* @stability experimental
|
|
43
|
+
*/
|
|
44
|
+
export type PrincipalKind = 'user' | 'node';
|
|
45
|
+
/**
|
|
46
|
+
* One organisation a principal belongs to.
|
|
47
|
+
*
|
|
48
|
+
* @stability experimental
|
|
49
|
+
* @example
|
|
50
|
+
* ```ts
|
|
51
|
+
* const membership: OrgMembership = { orgId: 'org_1', role: 'member' };
|
|
52
|
+
* ```
|
|
53
|
+
*/
|
|
54
|
+
export interface OrgMembership {
|
|
55
|
+
/** The organisation's id. */
|
|
56
|
+
readonly orgId: string;
|
|
57
|
+
/** Org-scoped role name (spec: "Org roles"), e.g. `'org_admin'`, `'member'`. */
|
|
58
|
+
readonly role: string;
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* One group a principal belongs to. A group is a set of users inside one
|
|
62
|
+
* organisation that can own and share content; it is never a tenant.
|
|
63
|
+
*
|
|
64
|
+
* @stability experimental
|
|
65
|
+
* @example
|
|
66
|
+
* ```ts
|
|
67
|
+
* const group: GroupMembership = { groupId: 'grp_1', orgId: 'org_1', role: 'member' };
|
|
68
|
+
* ```
|
|
69
|
+
*/
|
|
70
|
+
export interface GroupMembership {
|
|
71
|
+
/** The group's id. */
|
|
72
|
+
readonly groupId: string;
|
|
73
|
+
/** The organisation the group lives in. */
|
|
74
|
+
readonly orgId: string;
|
|
75
|
+
/** The member's role inside the group, e.g. `'owner'`, `'member'`. */
|
|
76
|
+
readonly role: string;
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Fields every principal carries. Not exported: build a {@link UserPrincipal}
|
|
80
|
+
* or a {@link NodePrincipal}.
|
|
81
|
+
*/
|
|
82
|
+
interface PrincipalBase {
|
|
83
|
+
/** Discriminant; narrow on it. */
|
|
84
|
+
readonly kind: PrincipalKind;
|
|
85
|
+
/**
|
|
86
|
+
* The user whose authority is exercised. For a node principal, the owner of
|
|
87
|
+
* the node credential.
|
|
88
|
+
*/
|
|
89
|
+
readonly userId: string;
|
|
90
|
+
/** That user's email, for logs and audit. */
|
|
91
|
+
readonly email: string;
|
|
92
|
+
/** How the request authenticated. */
|
|
93
|
+
readonly credential: CredentialKind;
|
|
94
|
+
/**
|
|
95
|
+
* System role names (spec: "System roles operate the deployment"). Today
|
|
96
|
+
* every role is a system role.
|
|
97
|
+
*/
|
|
98
|
+
readonly roles: readonly string[];
|
|
99
|
+
/** Effective permission strings, deduplicated. */
|
|
100
|
+
readonly permissions: readonly string[];
|
|
101
|
+
/**
|
|
102
|
+
* The active organisation. ABSENT until organisations exist; afterwards
|
|
103
|
+
* always present on a user principal (single mode: the default org) and
|
|
104
|
+
* never present on a node principal, which stays system-scoped. Carried in
|
|
105
|
+
* the access token; switching org re-issues the token.
|
|
106
|
+
*/
|
|
107
|
+
readonly activeOrgId?: string;
|
|
108
|
+
/** Every organisation the user belongs to. Absent until organisations exist. */
|
|
109
|
+
readonly memberships?: readonly OrgMembership[];
|
|
110
|
+
/** Every group the user belongs to. Absent until groups exist. */
|
|
111
|
+
readonly groups?: readonly GroupMembership[];
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* A human caller: a browser session, a device-flow token or a personal
|
|
115
|
+
* access token. A snapshot for one request; every field is readonly and a
|
|
116
|
+
* change (for example switching org) produces a new principal on the next
|
|
117
|
+
* request.
|
|
118
|
+
*
|
|
119
|
+
* There is no `isActive`: an inactive user never becomes a principal.
|
|
120
|
+
*
|
|
121
|
+
* @stability experimental
|
|
122
|
+
* @example
|
|
123
|
+
* ```ts
|
|
124
|
+
* const principal: UserPrincipal = {
|
|
125
|
+
* kind: 'user',
|
|
126
|
+
* userId: requestUser.id,
|
|
127
|
+
* email: requestUser.email,
|
|
128
|
+
* credential: 'session',
|
|
129
|
+
* roles: requestUser.roles,
|
|
130
|
+
* permissions: requestUser.permissions,
|
|
131
|
+
* };
|
|
132
|
+
* ```
|
|
133
|
+
*/
|
|
134
|
+
export interface UserPrincipal extends PrincipalBase {
|
|
135
|
+
readonly kind: 'user';
|
|
136
|
+
readonly credential: 'session' | 'device' | 'pat';
|
|
137
|
+
}
|
|
138
|
+
/**
|
|
139
|
+
* An unattended worker process authenticated with a `nod_` credential. It
|
|
140
|
+
* acts with its owning user's roles and permissions and is confined to
|
|
141
|
+
* `/api/nodes` by the authentication guard.
|
|
142
|
+
*
|
|
143
|
+
* @stability experimental
|
|
144
|
+
* @example
|
|
145
|
+
* ```ts
|
|
146
|
+
* const principal: NodePrincipal = {
|
|
147
|
+
* kind: 'node',
|
|
148
|
+
* userId: owner.id,
|
|
149
|
+
* email: owner.email,
|
|
150
|
+
* credential: 'node',
|
|
151
|
+
* roles: owner.roles,
|
|
152
|
+
* permissions: owner.permissions,
|
|
153
|
+
* };
|
|
154
|
+
* ```
|
|
155
|
+
*/
|
|
156
|
+
export interface NodePrincipal extends PrincipalBase {
|
|
157
|
+
readonly kind: 'node';
|
|
158
|
+
readonly credential: 'node';
|
|
159
|
+
/** The worker node the credential is enrolled as, when known. */
|
|
160
|
+
readonly nodeId?: string;
|
|
161
|
+
}
|
|
162
|
+
/**
|
|
163
|
+
* Who is calling. Narrow on `kind` (or `credential`) before reading the
|
|
164
|
+
* variant-specific fields.
|
|
165
|
+
*
|
|
166
|
+
* @stability experimental
|
|
167
|
+
* @example
|
|
168
|
+
* ```ts
|
|
169
|
+
* function describe(principal: Principal): string {
|
|
170
|
+
* return principal.kind === 'node' ? `node ${principal.nodeId ?? '?'}` : principal.email;
|
|
171
|
+
* }
|
|
172
|
+
* ```
|
|
173
|
+
*/
|
|
174
|
+
export type Principal = UserPrincipal | NodePrincipal;
|
|
175
|
+
/**
|
|
176
|
+
* The data boundary one operation runs in.
|
|
177
|
+
*
|
|
178
|
+
* Derived from a {@link Principal}, NEVER from request input (path, query or
|
|
179
|
+
* body): `userId = principal.userId`, `orgId = principal.activeOrgId`,
|
|
180
|
+
* `groupIds` = the principal's group ids, optionally narrowed by the
|
|
181
|
+
* operation, never widened.
|
|
182
|
+
*
|
|
183
|
+
* - `userId` is always required.
|
|
184
|
+
* - `orgId` is required once organisations exist; it is what row-level
|
|
185
|
+
* security's transaction-local `app.org_id` setting will carry.
|
|
186
|
+
* - `groupIds` narrows to groups the principal belongs to (sharing).
|
|
187
|
+
*
|
|
188
|
+
* @stability experimental
|
|
189
|
+
* @example
|
|
190
|
+
* ```ts
|
|
191
|
+
* const scope: Scope = { userId: principal.userId, orgId: principal.activeOrgId };
|
|
192
|
+
* ```
|
|
193
|
+
*/
|
|
194
|
+
export interface Scope {
|
|
195
|
+
/** The user the operation acts for: always `principal.userId`. */
|
|
196
|
+
readonly userId: string;
|
|
197
|
+
/** The organisation: `principal.activeOrgId`. Required once organisations exist. */
|
|
198
|
+
readonly orgId?: string;
|
|
199
|
+
/** Groups to narrow to, each one the principal belongs to; never widened. */
|
|
200
|
+
readonly groupIds?: readonly string[];
|
|
201
|
+
}
|
|
202
|
+
/**
|
|
203
|
+
* An explicit, named escape from scoping for system work (backups, purges,
|
|
204
|
+
* the Doctor). The only way to run unscoped. Never derived from a request.
|
|
205
|
+
*
|
|
206
|
+
* @stability experimental
|
|
207
|
+
* @example
|
|
208
|
+
* ```ts
|
|
209
|
+
* const actor: SystemActor = { kind: 'system', reason: 'retention.purge' };
|
|
210
|
+
* ```
|
|
211
|
+
*/
|
|
212
|
+
export interface SystemActor {
|
|
213
|
+
/** Discriminant: always `'system'`. */
|
|
214
|
+
readonly kind: 'system';
|
|
215
|
+
/**
|
|
216
|
+
* Short, greppable reason, e.g. `'retention.purge'`, `'db.backup.run'`.
|
|
217
|
+
* Logged and put on spans.
|
|
218
|
+
*/
|
|
219
|
+
readonly reason: string;
|
|
220
|
+
}
|
|
221
|
+
export {};
|
|
222
|
+
//# sourceMappingURL=principal.types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"principal.types.d.ts","sourceRoot":"","sources":["../../../src/core/principal/principal.types.ts"],"names":[],"mappings":"AAoBA;;;;;;;;;;;;;GAaG;AACH,MAAM,MAAM,WAAW,GAAG,QAAQ,GAAG,OAAO,CAAC;AAE7C;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,MAAM,cAAc,GACtB,SAAS,GACT,QAAQ,GACR,KAAK,GACL,MAAM,CAAC;AAEX;;;;;GAKG;AACH,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,MAAM,CAAC;AAE5C;;;;;;;;GAQG;AACH,MAAM,WAAW,aAAa;IAC5B,6BAA6B;IAC7B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,gFAAgF;IAChF,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB;AAED;;;;;;;;;GASG;AACH,MAAM,WAAW,eAAe;IAC9B,sBAAsB;IACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,2CAA2C;IAC3C,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,sEAAsE;IACtE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB;AAED;;;GAGG;AACH,UAAU,aAAa;IACrB,kCAAkC;IAClC,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAC;IAC7B;;;OAGG;IACH,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,6CAA6C;IAC7C,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,qCAAqC;IACrC,QAAQ,CAAC,UAAU,EAAE,cAAc,CAAC;IACpC;;;OAGG;IACH,QAAQ,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;IAClC,kDAAkD;IAClD,QAAQ,CAAC,WAAW,EAAE,SAAS,MAAM,EAAE,CAAC;IACxC;;;;;OAKG;IACH,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,gFAAgF;IAChF,QAAQ,CAAC,WAAW,CAAC,EAAE,SAAS,aAAa,EAAE,CAAC;IAChD,kEAAkE;IAClE,QAAQ,CAAC,MAAM,CAAC,EAAE,SAAS,eAAe,EAAE,CAAC;CAC9C;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,WAAW,aAAc,SAAQ,aAAa;IAClD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,UAAU,EAAE,SAAS,GAAG,QAAQ,GAAG,KAAK,CAAC;CACnD;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,WAAW,aAAc,SAAQ,aAAa;IAClD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,iEAAiE;IACjE,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED;;;;;;;;;;;GAWG;AACH,MAAM,MAAM,SAAS,GAAG,aAAa,GAAG,aAAa,CAAC;AAEtD;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,WAAW,KAAK;IACpB,kEAAkE;IAClE,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,oFAAoF;IACpF,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,6EAA6E;IAC7E,QAAQ,CAAC,QAAQ,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CACvC;AAED;;;;;;;;;GASG;AACH,MAAM,WAAW,WAAW;IAC1B,uCAAuC;IACvC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IACxB;;;OAGG;IACH,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// =============================================================================
|
|
3
|
+
// The org-aware principal and scope contract (ADR 0001)
|
|
4
|
+
// =============================================================================
|
|
5
|
+
//
|
|
6
|
+
// TYPES ONLY. This file has no runtime exports and imports nothing: not
|
|
7
|
+
// `@prisma/client`, not `@nestjs/*`, not an app module. It was written that
|
|
8
|
+
// way in the app (issue #687) so it could move into
|
|
9
|
+
// `@marinoscar/platform-api/core` unchanged, which it did (issue #698). Both
|
|
10
|
+
// properties are pinned by `test/core/principal.spec.ts` in this package.
|
|
11
|
+
//
|
|
12
|
+
// Nothing in the reference app consumes it yet. Requests still carry the
|
|
13
|
+
// app's `RequestUser` (`apps/api/src/auth/interfaces/authenticated-user.interface.ts`);
|
|
14
|
+
// attaching a `Principal` to the request, the runtime `toPrincipal()` mapper
|
|
15
|
+
// and `@CurrentPrincipal()` arrive later (issue #724). The derivation rules
|
|
16
|
+
// this contract is built on (credential mapping, scope derivation, tenancy
|
|
17
|
+
// modes, `SystemActor`) are written down in
|
|
18
|
+
// docs/adr/0001-org-aware-principal-and-scope.md. Read it before changing a
|
|
19
|
+
// field here.
|
|
20
|
+
// =============================================================================
|
|
21
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
22
|
+
//# sourceMappingURL=principal.types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"principal.types.js","sourceRoot":"","sources":["../../../src/core/principal/principal.types.ts"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,wDAAwD;AACxD,gFAAgF;AAChF,EAAE;AACF,wEAAwE;AACxE,4EAA4E;AAC5E,oDAAoD;AACpD,6EAA6E;AAC7E,0EAA0E;AAC1E,EAAE;AACF,yEAAyE;AACzE,wFAAwF;AACxF,6EAA6E;AAC7E,4EAA4E;AAC5E,2EAA2E;AAC3E,4CAA4C;AAC5C,4EAA4E;AAC5E,cAAc;AACd,gFAAgF"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export { DEFAULT_REGISTRY_ID_PATTERN, REGISTRY_ID_MAX_LENGTH, Registry, RegistryError, defineRegistry, freezeDefinedRegistries, listDefinedRegistries, } from './registry';
|
|
2
|
+
export type { RegistryErrorCode, RegistryOptions, RegistrySnapshot } from './registry';
|
|
3
|
+
export { withTemporaryEntries } from './testing';
|
|
4
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/core/registry/index.ts"],"names":[],"mappings":"AAMA,OAAO,EACL,2BAA2B,EAC3B,sBAAsB,EACtB,QAAQ,EACR,aAAa,EACb,cAAc,EACd,uBAAuB,EACvB,qBAAqB,GACtB,MAAM,YAAY,CAAC;AACpB,YAAY,EAAE,iBAAiB,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AACvF,OAAO,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// The framework-free registry primitive (issue #675). Recipe: ./README.md.
|
|
3
|
+
//
|
|
4
|
+
// `RegistryFreezeService` is deliberately NOT re-exported: this barrel must stay
|
|
5
|
+
// importable where no Nest container exists (prisma/seed.ts, storage-purge.main.ts,
|
|
6
|
+
// module-evaluation-time DTOs). Import the service from './registry-freeze.service'.
|
|
7
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
|
+
exports.withTemporaryEntries = exports.listDefinedRegistries = exports.freezeDefinedRegistries = exports.defineRegistry = exports.RegistryError = exports.Registry = exports.REGISTRY_ID_MAX_LENGTH = exports.DEFAULT_REGISTRY_ID_PATTERN = void 0;
|
|
9
|
+
var registry_1 = require("./registry");
|
|
10
|
+
Object.defineProperty(exports, "DEFAULT_REGISTRY_ID_PATTERN", { enumerable: true, get: function () { return registry_1.DEFAULT_REGISTRY_ID_PATTERN; } });
|
|
11
|
+
Object.defineProperty(exports, "REGISTRY_ID_MAX_LENGTH", { enumerable: true, get: function () { return registry_1.REGISTRY_ID_MAX_LENGTH; } });
|
|
12
|
+
Object.defineProperty(exports, "Registry", { enumerable: true, get: function () { return registry_1.Registry; } });
|
|
13
|
+
Object.defineProperty(exports, "RegistryError", { enumerable: true, get: function () { return registry_1.RegistryError; } });
|
|
14
|
+
Object.defineProperty(exports, "defineRegistry", { enumerable: true, get: function () { return registry_1.defineRegistry; } });
|
|
15
|
+
Object.defineProperty(exports, "freezeDefinedRegistries", { enumerable: true, get: function () { return registry_1.freezeDefinedRegistries; } });
|
|
16
|
+
Object.defineProperty(exports, "listDefinedRegistries", { enumerable: true, get: function () { return registry_1.listDefinedRegistries; } });
|
|
17
|
+
var testing_1 = require("./testing");
|
|
18
|
+
Object.defineProperty(exports, "withTemporaryEntries", { enumerable: true, get: function () { return testing_1.withTemporaryEntries; } });
|
|
19
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/core/registry/index.ts"],"names":[],"mappings":";AAAA,2EAA2E;AAC3E,EAAE;AACF,iFAAiF;AACjF,oFAAoF;AACpF,qFAAqF;;;AAErF,uCAQoB;AAPlB,uHAAA,2BAA2B,OAAA;AAC3B,kHAAA,sBAAsB,OAAA;AACtB,oGAAA,QAAQ,OAAA;AACR,yGAAA,aAAa,OAAA;AACb,0GAAA,cAAc,OAAA;AACd,mHAAA,uBAAuB,OAAA;AACvB,iHAAA,qBAAqB,OAAA;AAGvB,qCAAiD;AAAxC,+GAAA,oBAAoB,OAAA"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { OnApplicationBootstrap } from '@nestjs/common';
|
|
2
|
+
/**
|
|
3
|
+
* Freezes every registry made with `defineRegistry` once the Nest application
|
|
4
|
+
* has bootstrapped. Provide it in a module of the app (the base provides it in
|
|
5
|
+
* `CommonModule`).
|
|
6
|
+
*
|
|
7
|
+
* @stability stable
|
|
8
|
+
*/
|
|
9
|
+
export declare class RegistryFreezeService implements OnApplicationBootstrap {
|
|
10
|
+
private readonly logger;
|
|
11
|
+
/** Freezes every registry created with `defineRegistry` and logs their sizes. */
|
|
12
|
+
onApplicationBootstrap(): void;
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=registry-freeze.service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registry-freeze.service.d.ts","sourceRoot":"","sources":["../../../src/core/registry/registry-freeze.service.ts"],"names":[],"mappings":"AAsBA,OAAO,EAAsB,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AAI5E;;;;;;GAMG;AACH,qBACa,qBAAsB,YAAW,sBAAsB;IAClE,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA0C;IAEjE,iFAAiF;IACjF,sBAAsB,IAAI,IAAI;CAO/B"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// =============================================================================
|
|
3
|
+
// RegistryFreezeService (issue #675, PP-1.3)
|
|
4
|
+
// =============================================================================
|
|
5
|
+
//
|
|
6
|
+
// Static registries (`defineRegistry`) fill at import time, from their
|
|
7
|
+
// manifests, so every entry is present before Nest instantiates a single
|
|
8
|
+
// provider. Once the application has bootstrapped, a late `register()` can only
|
|
9
|
+
// be a mistake: some consumer may already have read the list (a DTO built its
|
|
10
|
+
// enum, the seed ran, a guard cached a lookup). Freezing turns that mistake into
|
|
11
|
+
// a loud `FROZEN` error instead of a list that differs depending on timing.
|
|
12
|
+
//
|
|
13
|
+
// `onApplicationBootstrap`, not `onModuleInit`, so the freeze runs after every
|
|
14
|
+
// module's init hook, the same lifecycle point `jobs/job.worker.ts` starts work
|
|
15
|
+
// at. Not `main.ts`: integration specs bootstrap through
|
|
16
|
+
// `Test.createTestingModule({ imports: [AppModule] })` and would never exercise
|
|
17
|
+
// it. `npm run openapi:dump` (Nest preview mode) never bootstraps, so nothing
|
|
18
|
+
// freezes there, which is fine: nothing registers there either.
|
|
19
|
+
//
|
|
20
|
+
// Freezing is idempotent, so the second Nest application a Jest worker creates
|
|
21
|
+
// simply finds the registries already frozen.
|
|
22
|
+
// =============================================================================
|
|
23
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
24
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
25
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
26
|
+
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;
|
|
27
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
28
|
+
};
|
|
29
|
+
var RegistryFreezeService_1;
|
|
30
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
31
|
+
exports.RegistryFreezeService = void 0;
|
|
32
|
+
const common_1 = require("@nestjs/common");
|
|
33
|
+
const registry_1 = require("./registry");
|
|
34
|
+
/**
|
|
35
|
+
* Freezes every registry made with `defineRegistry` once the Nest application
|
|
36
|
+
* has bootstrapped. Provide it in a module of the app (the base provides it in
|
|
37
|
+
* `CommonModule`).
|
|
38
|
+
*
|
|
39
|
+
* @stability stable
|
|
40
|
+
*/
|
|
41
|
+
let RegistryFreezeService = RegistryFreezeService_1 = class RegistryFreezeService {
|
|
42
|
+
logger = new common_1.Logger(RegistryFreezeService_1.name);
|
|
43
|
+
/** Freezes every registry created with `defineRegistry` and logs their sizes. */
|
|
44
|
+
onApplicationBootstrap() {
|
|
45
|
+
(0, registry_1.freezeDefinedRegistries)();
|
|
46
|
+
const registries = (0, registry_1.listDefinedRegistries)();
|
|
47
|
+
const summary = registries.map((r) => `${r.name}(${r.size})`).join(', ');
|
|
48
|
+
this.logger.debug(`Froze ${registries.length} static registries: ${summary || '(none)'}`);
|
|
49
|
+
}
|
|
50
|
+
};
|
|
51
|
+
exports.RegistryFreezeService = RegistryFreezeService;
|
|
52
|
+
exports.RegistryFreezeService = RegistryFreezeService = RegistryFreezeService_1 = __decorate([
|
|
53
|
+
(0, common_1.Injectable)()
|
|
54
|
+
], RegistryFreezeService);
|
|
55
|
+
//# sourceMappingURL=registry-freeze.service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registry-freeze.service.js","sourceRoot":"","sources":["../../../src/core/registry/registry-freeze.service.ts"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,6CAA6C;AAC7C,gFAAgF;AAChF,EAAE;AACF,uEAAuE;AACvE,yEAAyE;AACzE,gFAAgF;AAChF,8EAA8E;AAC9E,iFAAiF;AACjF,4EAA4E;AAC5E,EAAE;AACF,+EAA+E;AAC/E,gFAAgF;AAChF,yDAAyD;AACzD,gFAAgF;AAChF,8EAA8E;AAC9E,gEAAgE;AAChE,EAAE;AACF,+EAA+E;AAC/E,8CAA8C;AAC9C,gFAAgF;;;;;;;;;;AAEhF,2CAA4E;AAE5E,yCAA4E;AAE5E;;;;;;GAMG;AAEI,IAAM,qBAAqB,6BAA3B,MAAM,qBAAqB;IACf,MAAM,GAAG,IAAI,eAAM,CAAC,uBAAqB,CAAC,IAAI,CAAC,CAAC;IAEjE,iFAAiF;IACjF,sBAAsB;QACpB,IAAA,kCAAuB,GAAE,CAAC;QAE1B,MAAM,UAAU,GAAG,IAAA,gCAAqB,GAAE,CAAC;QAC3C,MAAM,OAAO,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACzE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,UAAU,CAAC,MAAM,uBAAuB,OAAO,IAAI,QAAQ,EAAE,CAAC,CAAC;IAC5F,CAAC;CACF,CAAA;AAXY,sDAAqB;gCAArB,qBAAqB;IADjC,IAAA,mBAAU,GAAE;GACA,qBAAqB,CAWjC"}
|
|
@@ -0,0 +1,268 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The default pattern every registry id must match: a letter or digit first,
|
|
3
|
+
* then letters, digits and `. _ : / @ -`.
|
|
4
|
+
*
|
|
5
|
+
* It admits every id shape the codebase already uses (`db.connection`,
|
|
6
|
+
* `jobs:read`, `auth.initial-admin`, `coach/weekly-review`) and rejects whitespace and a
|
|
7
|
+
* leading separator. Override it per registry with {@link RegistryOptions.idPattern}.
|
|
8
|
+
*
|
|
9
|
+
* @stability stable
|
|
10
|
+
*/
|
|
11
|
+
export declare const DEFAULT_REGISTRY_ID_PATTERN: RegExp;
|
|
12
|
+
/**
|
|
13
|
+
* The longest id any registry accepts, in UTF-16 code units.
|
|
14
|
+
*
|
|
15
|
+
* @stability stable
|
|
16
|
+
*/
|
|
17
|
+
export declare const REGISTRY_ID_MAX_LENGTH = 128;
|
|
18
|
+
/**
|
|
19
|
+
* Why a registry refused an operation. Stable: callers may switch on it.
|
|
20
|
+
*
|
|
21
|
+
* - `INVALID_ID`: the id is not a string, is empty, is longer than
|
|
22
|
+
* {@link REGISTRY_ID_MAX_LENGTH}, or fails the registry's id pattern.
|
|
23
|
+
* - `INVALID_ENTRY`: the registry's `validate` hook threw.
|
|
24
|
+
* - `DUPLICATE_ID`: the id is already registered and the policy is `'throw'`.
|
|
25
|
+
* - `FROZEN`: a write after {@link Registry.freeze}.
|
|
26
|
+
* - `UNKNOWN_ID`: {@link Registry.require} found no entry.
|
|
27
|
+
* - `DUPLICATE_REGISTRY`: {@link defineRegistry} was given a name already in use.
|
|
28
|
+
*
|
|
29
|
+
* @stability stable
|
|
30
|
+
*/
|
|
31
|
+
export type RegistryErrorCode = 'INVALID_ID' | 'INVALID_ENTRY' | 'DUPLICATE_ID' | 'FROZEN' | 'UNKNOWN_ID' | 'DUPLICATE_REGISTRY';
|
|
32
|
+
/**
|
|
33
|
+
* The single error type every registry operation throws.
|
|
34
|
+
*
|
|
35
|
+
* @example
|
|
36
|
+
* ```ts
|
|
37
|
+
* try {
|
|
38
|
+
* permissions.register(entry);
|
|
39
|
+
* } catch (err) {
|
|
40
|
+
* if (err instanceof RegistryError && err.code === 'DUPLICATE_ID') { ... }
|
|
41
|
+
* }
|
|
42
|
+
* ```
|
|
43
|
+
*
|
|
44
|
+
* @stability stable
|
|
45
|
+
*/
|
|
46
|
+
export declare class RegistryError extends Error {
|
|
47
|
+
/** Machine-readable reason; see {@link RegistryErrorCode}. */
|
|
48
|
+
readonly code: RegistryErrorCode;
|
|
49
|
+
/** The `name` of the registry that refused the operation. */
|
|
50
|
+
readonly registry: string;
|
|
51
|
+
/** The entry id involved, when there is one. */
|
|
52
|
+
readonly id?: string;
|
|
53
|
+
/**
|
|
54
|
+
* @param code - why the operation was refused.
|
|
55
|
+
* @param registry - the refusing registry's name.
|
|
56
|
+
* @param message - human-readable explanation.
|
|
57
|
+
* @param details - the id involved and, for `INVALID_ENTRY`, the original error as `cause`.
|
|
58
|
+
*/
|
|
59
|
+
constructor(code: RegistryErrorCode, registry: string, message: string, details?: {
|
|
60
|
+
id?: string;
|
|
61
|
+
cause?: unknown;
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* How a registry identifies, checks, de-duplicates and orders its entries.
|
|
66
|
+
*
|
|
67
|
+
* @typeParam T - the entry type.
|
|
68
|
+
*
|
|
69
|
+
* @stability stable
|
|
70
|
+
*/
|
|
71
|
+
export interface RegistryOptions<T> {
|
|
72
|
+
/**
|
|
73
|
+
* Name used in errors and introspection, e.g. `'permissions'`. Must be unique
|
|
74
|
+
* among registries created with {@link defineRegistry}.
|
|
75
|
+
*/
|
|
76
|
+
name: string;
|
|
77
|
+
/** Extracts the entry's id. Called once per registration. */
|
|
78
|
+
idOf: (entry: T) => string;
|
|
79
|
+
/**
|
|
80
|
+
* Pattern every id must match. Default {@link DEFAULT_REGISTRY_ID_PATTERN}.
|
|
81
|
+
* A `g` or `y` flag is ignored, so matching never depends on `lastIndex`.
|
|
82
|
+
*/
|
|
83
|
+
idPattern?: RegExp;
|
|
84
|
+
/**
|
|
85
|
+
* Rejects an entry by throwing (any value). The throw is wrapped as
|
|
86
|
+
* `INVALID_ENTRY`, keeping the original message and the original error as
|
|
87
|
+
* `cause`. Runs after the id check and before the duplicate check. During
|
|
88
|
+
* {@link Registry.registerAll} the registry passed in does not yet contain the
|
|
89
|
+
* batch's earlier entries.
|
|
90
|
+
*/
|
|
91
|
+
validate?: (entry: T, registry: Registry<T>) => void;
|
|
92
|
+
/**
|
|
93
|
+
* What a second entry with an existing id does. Default `'throw'`
|
|
94
|
+
* (`DUPLICATE_ID`). `'replace'` keeps the NEW entry at the OLD entry's
|
|
95
|
+
* position and calls {@link RegistryOptions.onReplace}.
|
|
96
|
+
*/
|
|
97
|
+
onDuplicate?: 'throw' | 'replace';
|
|
98
|
+
/**
|
|
99
|
+
* Called for each replacement under `onDuplicate: 'replace'`, after the write
|
|
100
|
+
* has been committed (never for a batch that was rejected).
|
|
101
|
+
*/
|
|
102
|
+
onReplace?: (previous: T, next: T) => void;
|
|
103
|
+
/**
|
|
104
|
+
* Custom `DUPLICATE_ID` message. Default:
|
|
105
|
+
* `Duplicate id "<id>" in registry "<name>".`
|
|
106
|
+
*/
|
|
107
|
+
describeDuplicate?: (existing: T, incoming: T) => string;
|
|
108
|
+
/**
|
|
109
|
+
* The order of {@link Registry.list} and {@link Registry.ids}. Default
|
|
110
|
+
* `'registration'`. `'id'` sorts by id in code-unit order (locale-independent,
|
|
111
|
+
* so `'B'` sorts before `'a'`). A comparator sorts entries; ties keep
|
|
112
|
+
* registration order.
|
|
113
|
+
*/
|
|
114
|
+
order?: 'registration' | 'id' | ((a: T, b: T) => number);
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* The introspection shape of {@link Registry.snapshot}.
|
|
118
|
+
*
|
|
119
|
+
* @stability stable
|
|
120
|
+
*/
|
|
121
|
+
export interface RegistrySnapshot {
|
|
122
|
+
/** The registry's name. */
|
|
123
|
+
name: string;
|
|
124
|
+
/** Whether writes are refused. */
|
|
125
|
+
frozen: boolean;
|
|
126
|
+
/** Every id, in {@link Registry.list} order. */
|
|
127
|
+
ids: string[];
|
|
128
|
+
}
|
|
129
|
+
/** Opaque saved state; see {@link Registry._captureState}. @internal */
|
|
130
|
+
export interface RegistryState<T> {
|
|
131
|
+
readonly entries: ReadonlyMap<string, T>;
|
|
132
|
+
readonly frozen: boolean;
|
|
133
|
+
}
|
|
134
|
+
/**
|
|
135
|
+
* An additive, typed, string-keyed list with a duplicate policy, deterministic
|
|
136
|
+
* order and an optional freeze.
|
|
137
|
+
*
|
|
138
|
+
* Entries are stored as given (never cloned); {@link list} and {@link ids}
|
|
139
|
+
* return fresh arrays, so mutating them never changes the registry. Because the
|
|
140
|
+
* registry holds references, entries should be `as const` or `Object.freeze`d
|
|
141
|
+
* data.
|
|
142
|
+
*
|
|
143
|
+
* @typeParam T - the entry type.
|
|
144
|
+
*
|
|
145
|
+
* @example
|
|
146
|
+
* ```ts
|
|
147
|
+
* const colours = new Registry<{ id: string; hex: string }>({
|
|
148
|
+
* name: 'colours',
|
|
149
|
+
* idOf: (c) => c.id,
|
|
150
|
+
* validate: (c) => {
|
|
151
|
+
* if (!/^#[0-9a-f]{6}$/i.test(c.hex)) throw new Error(`bad hex ${c.hex}`);
|
|
152
|
+
* },
|
|
153
|
+
* });
|
|
154
|
+
* colours.register({ id: 'brand', hex: '#3366ff' });
|
|
155
|
+
* colours.require('brand').hex; // '#3366ff'
|
|
156
|
+
* ```
|
|
157
|
+
*
|
|
158
|
+
* @extensionPoint registry
|
|
159
|
+
* @stability stable
|
|
160
|
+
*/
|
|
161
|
+
export declare class Registry<T> {
|
|
162
|
+
private readonly options;
|
|
163
|
+
/** The registry's name, as given in {@link RegistryOptions.name}. */
|
|
164
|
+
readonly name: string;
|
|
165
|
+
private entries;
|
|
166
|
+
private isFrozen;
|
|
167
|
+
private readonly idPattern;
|
|
168
|
+
/**
|
|
169
|
+
* @param options - see {@link RegistryOptions}.
|
|
170
|
+
* @throws RegistryError `INVALID_ID` when `options.name` is empty.
|
|
171
|
+
*/
|
|
172
|
+
constructor(options: RegistryOptions<T>);
|
|
173
|
+
/**
|
|
174
|
+
* Adds one entry.
|
|
175
|
+
*
|
|
176
|
+
* @throws RegistryError `FROZEN`, `INVALID_ID`, `INVALID_ENTRY` or
|
|
177
|
+
* `DUPLICATE_ID` (see {@link RegistryErrorCode}); the registry is unchanged
|
|
178
|
+
* when it throws.
|
|
179
|
+
*/
|
|
180
|
+
register(entry: T): void;
|
|
181
|
+
/**
|
|
182
|
+
* Adds every entry, all or nothing: each entry is checked (id, `validate`,
|
|
183
|
+
* duplicates against the registry AND earlier entries of the same batch)
|
|
184
|
+
* before any is added, so one bad entry rejects the whole batch and leaves the
|
|
185
|
+
* registry unchanged.
|
|
186
|
+
*
|
|
187
|
+
* @throws RegistryError as {@link register}; the first failing entry wins.
|
|
188
|
+
*/
|
|
189
|
+
registerAll(entries: readonly T[]): void;
|
|
190
|
+
/** The entry registered under `id`, or `undefined`. */
|
|
191
|
+
get(id: string): T | undefined;
|
|
192
|
+
/**
|
|
193
|
+
* The entry registered under `id`.
|
|
194
|
+
*
|
|
195
|
+
* @throws RegistryError `UNKNOWN_ID` when there is none.
|
|
196
|
+
*/
|
|
197
|
+
require(id: string): T;
|
|
198
|
+
/** Whether an entry is registered under `id`. */
|
|
199
|
+
has(id: string): boolean;
|
|
200
|
+
/** Every id, as a fresh array, in {@link list} order. */
|
|
201
|
+
ids(): string[];
|
|
202
|
+
/** Every entry, as a fresh array, in the order {@link RegistryOptions.order} names. */
|
|
203
|
+
list(): T[];
|
|
204
|
+
/** How many entries are registered. */
|
|
205
|
+
get size(): number;
|
|
206
|
+
/** Refuses every later write with `FROZEN`. Reads keep working. Idempotent. */
|
|
207
|
+
freeze(): void;
|
|
208
|
+
/** Whether {@link freeze} has been called. */
|
|
209
|
+
get frozen(): boolean;
|
|
210
|
+
/** Name, frozen state and ids, for logs, diagnostics and snapshot tests. */
|
|
211
|
+
snapshot(): RegistrySnapshot;
|
|
212
|
+
/**
|
|
213
|
+
* Saves the entries and frozen state. For `testing.ts` only.
|
|
214
|
+
* @internal
|
|
215
|
+
*/
|
|
216
|
+
_captureState(): RegistryState<T>;
|
|
217
|
+
/**
|
|
218
|
+
* Restores a state saved by {@link _captureState}. For `testing.ts` only.
|
|
219
|
+
* @internal
|
|
220
|
+
*/
|
|
221
|
+
_restoreState(state: RegistryState<T>): void;
|
|
222
|
+
/**
|
|
223
|
+
* Allows writes again. For `testing.ts` only.
|
|
224
|
+
* @internal
|
|
225
|
+
*/
|
|
226
|
+
_unfreeze(): void;
|
|
227
|
+
private assertWritable;
|
|
228
|
+
private checkedId;
|
|
229
|
+
private sortedEntries;
|
|
230
|
+
}
|
|
231
|
+
/**
|
|
232
|
+
* Creates a module-level ("static") registry and records it in the catalogue,
|
|
233
|
+
* so {@link freezeDefinedRegistries} (called by `RegistryFreezeService` after
|
|
234
|
+
* bootstrap) freezes it and {@link listDefinedRegistries} reports it.
|
|
235
|
+
*
|
|
236
|
+
* Call it once, at module scope, in the registry's own file; fill it from the
|
|
237
|
+
* registry's manifest (see README.md next to this file).
|
|
238
|
+
*
|
|
239
|
+
* @param options - see {@link RegistryOptions}.
|
|
240
|
+
* @returns the new registry.
|
|
241
|
+
* @throws RegistryError `DUPLICATE_REGISTRY` when a defined registry already has that name.
|
|
242
|
+
*
|
|
243
|
+
* @example
|
|
244
|
+
* ```ts
|
|
245
|
+
* // apps/api/src/common/permissions/permission.registry.ts
|
|
246
|
+
* export const permissionRegistry = defineRegistry<PermissionDefinition>({
|
|
247
|
+
* name: 'permissions',
|
|
248
|
+
* idOf: (p) => p.id,
|
|
249
|
+
* });
|
|
250
|
+
* ```
|
|
251
|
+
*
|
|
252
|
+
* @extensionPoint registry
|
|
253
|
+
* @stability stable
|
|
254
|
+
*/
|
|
255
|
+
export declare function defineRegistry<T>(options: RegistryOptions<T>): Registry<T>;
|
|
256
|
+
/**
|
|
257
|
+
* Every registry created with {@link defineRegistry}, in definition order.
|
|
258
|
+
*
|
|
259
|
+
* @stability stable
|
|
260
|
+
*/
|
|
261
|
+
export declare function listDefinedRegistries(): ReadonlyArray<Registry<unknown>>;
|
|
262
|
+
/**
|
|
263
|
+
* Freezes every registry created with {@link defineRegistry}. Idempotent.
|
|
264
|
+
*
|
|
265
|
+
* @stability stable
|
|
266
|
+
*/
|
|
267
|
+
export declare function freezeDefinedRegistries(): void;
|
|
268
|
+
//# sourceMappingURL=registry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../../src/core/registry/registry.ts"],"names":[],"mappings":"AA+BA;;;;;;;;;GASG;AACH,eAAO,MAAM,2BAA2B,QAAoC,CAAC;AAE7E;;;;GAIG;AACH,eAAO,MAAM,sBAAsB,MAAM,CAAC;AAE1C;;;;;;;;;;;;GAYG;AACH,MAAM,MAAM,iBAAiB,GACzB,YAAY,GACZ,eAAe,GACf,cAAc,GACd,QAAQ,GACR,YAAY,GACZ,oBAAoB,CAAC;AAEzB;;;;;;;;;;;;;GAaG;AACH,qBAAa,aAAc,SAAQ,KAAK;IACtC,8DAA8D;IAC9D,QAAQ,CAAC,IAAI,EAAE,iBAAiB,CAAC;IACjC,6DAA6D;IAC7D,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,gDAAgD;IAChD,QAAQ,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC;IAErB;;;;;OAKG;gBAED,IAAI,EAAE,iBAAiB,EACvB,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,EACf,OAAO,GAAE;QAAE,EAAE,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,OAAO,CAAA;KAAO;CAQjD;AAED;;;;;;GAMG;AACH,MAAM,WAAW,eAAe,CAAC,CAAC;IAChC;;;OAGG;IACH,IAAI,EAAE,MAAM,CAAC;IACb,6DAA6D;IAC7D,IAAI,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,MAAM,CAAC;IAC3B;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;;;;OAMG;IACH,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC;IACrD;;;;OAIG;IACH,WAAW,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAClC;;;OAGG;IACH,SAAS,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,KAAK,IAAI,CAAC;IAC3C;;;OAGG;IACH,iBAAiB,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,KAAK,MAAM,CAAC;IACzD;;;;;OAKG;IACH,KAAK,CAAC,EAAE,cAAc,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,MAAM,CAAC,CAAC;CAC1D;AAED;;;;GAIG;AACH,MAAM,WAAW,gBAAgB;IAC/B,2BAA2B;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,kCAAkC;IAClC,MAAM,EAAE,OAAO,CAAC;IAChB,gDAAgD;IAChD,GAAG,EAAE,MAAM,EAAE,CAAC;CACf;AAED,wEAAwE;AACxE,MAAM,WAAW,aAAa,CAAC,CAAC;IAC9B,QAAQ,CAAC,OAAO,EAAE,WAAW,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IACzC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;CAC1B;AAUD;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,qBAAa,QAAQ,CAAC,CAAC;IAYT,OAAO,CAAC,QAAQ,CAAC,OAAO;IAXpC,qEAAqE;IACrE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAEtB,OAAO,CAAC,OAAO,CAAwB;IACvC,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IAEnC;;;OAGG;gBAC0B,OAAO,EAAE,eAAe,CAAC,CAAC,CAAC;IASxD;;;;;;OAMG;IACH,QAAQ,CAAC,KAAK,EAAE,CAAC,GAAG,IAAI;IAIxB;;;;;;;OAOG;IACH,WAAW,CAAC,OAAO,EAAE,SAAS,CAAC,EAAE,GAAG,IAAI;IA6CxC,uDAAuD;IACvD,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,CAAC,GAAG,SAAS;IAI9B;;;;OAIG;IACH,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,CAAC;IAetB,iDAAiD;IACjD,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO;IAIxB,yDAAyD;IACzD,GAAG,IAAI,MAAM,EAAE;IAIf,uFAAuF;IACvF,IAAI,IAAI,CAAC,EAAE;IAIX,uCAAuC;IACvC,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,+EAA+E;IAC/E,MAAM,IAAI,IAAI;IAId,8CAA8C;IAC9C,IAAI,MAAM,IAAI,OAAO,CAEpB;IAED,4EAA4E;IAC5E,QAAQ,IAAI,gBAAgB;IAI5B;;;OAGG;IACH,aAAa,IAAI,aAAa,CAAC,CAAC,CAAC;IAIjC;;;OAGG;IACH,aAAa,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC,GAAG,IAAI;IAK5C;;;OAGG;IACH,SAAS,IAAI,IAAI;IAIjB,OAAO,CAAC,cAAc;IAUtB,OAAO,CAAC,SAAS;IAejB,OAAO,CAAC,aAAa;CAUtB;AAQD;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,cAAc,CAAC,CAAC,EAAE,OAAO,EAAE,eAAe,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAW1E;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,IAAI,aAAa,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAExE;AAED;;;;GAIG;AACH,wBAAgB,uBAAuB,IAAI,IAAI,CAE9C"}
|