typekro 0.33.9 → 0.34.0
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/dist/.tsbuildinfo +1 -1
- package/dist/compositions/typekro-runtime/typekro-runtime.d.ts +0 -33
- package/dist/compositions/typekro-runtime/typekro-runtime.d.ts.map +1 -1
- package/dist/compositions/typekro-runtime/typekro-runtime.js +63 -1
- package/dist/compositions/typekro-runtime/typekro-runtime.js.map +1 -1
- package/dist/compositions/typekro-runtime/types.d.ts +8 -0
- package/dist/compositions/typekro-runtime/types.d.ts.map +1 -1
- package/dist/compositions/typekro-runtime/types.js +1 -0
- package/dist/compositions/typekro-runtime/types.js.map +1 -1
- package/dist/core/aspects/values-merge.d.ts +17 -0
- package/dist/core/aspects/values-merge.d.ts.map +1 -1
- package/dist/core/aspects/values-merge.js +67 -8
- package/dist/core/aspects/values-merge.js.map +1 -1
- package/dist/core/deployment/direct-factory.d.ts +9 -0
- package/dist/core/deployment/direct-factory.d.ts.map +1 -1
- package/dist/core/deployment/direct-factory.js +37 -3
- package/dist/core/deployment/direct-factory.js.map +1 -1
- package/dist/core/deployment/engine.d.ts +34 -0
- package/dist/core/deployment/engine.d.ts.map +1 -1
- package/dist/core/deployment/engine.js +173 -29
- package/dist/core/deployment/engine.js.map +1 -1
- package/dist/core/deployment/index.d.ts +2 -0
- package/dist/core/deployment/index.d.ts.map +1 -1
- package/dist/core/deployment/index.js +1 -0
- package/dist/core/deployment/index.js.map +1 -1
- package/dist/core/deployment/k8s-helpers.d.ts +73 -0
- package/dist/core/deployment/k8s-helpers.d.ts.map +1 -1
- package/dist/core/deployment/k8s-helpers.js +198 -4
- package/dist/core/deployment/k8s-helpers.js.map +1 -1
- package/dist/core/deployment/kro-factory.d.ts.map +1 -1
- package/dist/core/deployment/kro-factory.js +21 -1
- package/dist/core/deployment/kro-factory.js.map +1 -1
- package/dist/core/deployment/status-leaf-resolution.d.ts +101 -0
- package/dist/core/deployment/status-leaf-resolution.d.ts.map +1 -0
- package/dist/core/deployment/status-leaf-resolution.js +232 -0
- package/dist/core/deployment/status-leaf-resolution.js.map +1 -0
- package/dist/core/deployment/strategies/base-strategy.d.ts.map +1 -1
- package/dist/core/deployment/strategies/base-strategy.js +31 -3
- package/dist/core/deployment/strategies/base-strategy.js.map +1 -1
- package/dist/core/deployment/strategies/kro-strategy.d.ts.map +1 -1
- package/dist/core/deployment/strategies/kro-strategy.js +8 -1
- package/dist/core/deployment/strategies/kro-strategy.js.map +1 -1
- package/dist/core/expressions/composition/composition-analyzer-helpers.d.ts.map +1 -1
- package/dist/core/expressions/composition/composition-analyzer-helpers.js +20 -2
- package/dist/core/expressions/composition/composition-analyzer-helpers.js.map +1 -1
- package/dist/core/kro/index.d.ts +6 -0
- package/dist/core/kro/index.d.ts.map +1 -0
- package/dist/core/kro/index.js +6 -0
- package/dist/core/kro/index.js.map +1 -0
- package/dist/core/kro/label-guard-capability.d.ts +141 -0
- package/dist/core/kro/label-guard-capability.d.ts.map +1 -0
- package/dist/core/kro/label-guard-capability.js +257 -0
- package/dist/core/kro/label-guard-capability.js.map +1 -0
- package/dist/core/kro/labels.d.ts +56 -0
- package/dist/core/kro/labels.d.ts.map +1 -0
- package/dist/core/kro/labels.js +62 -0
- package/dist/core/kro/labels.js.map +1 -0
- package/dist/core/kubernetes/api-capability.d.ts +196 -0
- package/dist/core/kubernetes/api-capability.d.ts.map +1 -0
- package/dist/core/kubernetes/api-capability.js +301 -0
- package/dist/core/kubernetes/api-capability.js.map +1 -0
- package/dist/core/kubernetes/index.d.ts +2 -0
- package/dist/core/kubernetes/index.d.ts.map +1 -1
- package/dist/core/kubernetes/index.js +2 -0
- package/dist/core/kubernetes/index.js.map +1 -1
- package/dist/core/kubernetes/naming.d.ts +100 -0
- package/dist/core/kubernetes/naming.d.ts.map +1 -0
- package/dist/core/kubernetes/naming.js +93 -0
- package/dist/core/kubernetes/naming.js.map +1 -0
- package/dist/core/planning/direct-runtime-adapter.d.ts.map +1 -1
- package/dist/core/planning/direct-runtime-adapter.js +54 -17
- package/dist/core/planning/direct-runtime-adapter.js.map +1 -1
- package/dist/core/planning/planner.d.ts.map +1 -1
- package/dist/core/planning/planner.js +17 -0
- package/dist/core/planning/planner.js.map +1 -1
- package/dist/core/planning/schema.d.ts.map +1 -1
- package/dist/core/planning/schema.js +7 -3
- package/dist/core/planning/schema.js.map +1 -1
- package/dist/core/references/cel-lexical-scanner.d.ts +100 -1
- package/dist/core/references/cel-lexical-scanner.d.ts.map +1 -1
- package/dist/core/references/cel-lexical-scanner.js +196 -2
- package/dist/core/references/cel-lexical-scanner.js.map +1 -1
- package/dist/core/references/cel.d.ts +249 -1
- package/dist/core/references/cel.d.ts.map +1 -1
- package/dist/core/references/cel.js +289 -8
- package/dist/core/references/cel.js.map +1 -1
- package/dist/core/serialization/arktype-ast.d.ts +21 -0
- package/dist/core/serialization/arktype-ast.d.ts.map +1 -0
- package/dist/core/serialization/arktype-ast.js +29 -0
- package/dist/core/serialization/arktype-ast.js.map +1 -0
- package/dist/core/serialization/cel-references.d.ts +133 -32
- package/dist/core/serialization/cel-references.d.ts.map +1 -1
- package/dist/core/serialization/cel-references.js +908 -109
- package/dist/core/serialization/cel-references.js.map +1 -1
- package/dist/core/serialization/core.d.ts.map +1 -1
- package/dist/core/serialization/core.js +13 -2
- package/dist/core/serialization/core.js.map +1 -1
- package/dist/core/serialization/schema.d.ts +16 -2
- package/dist/core/serialization/schema.d.ts.map +1 -1
- package/dist/core/serialization/schema.js +113 -21
- package/dist/core/serialization/schema.js.map +1 -1
- package/dist/core/types/composable.d.ts +7 -1
- package/dist/core/types/composable.d.ts.map +1 -1
- package/dist/core/types/deployment.d.ts +32 -2
- package/dist/core/types/deployment.d.ts.map +1 -1
- package/dist/core/types/serialization.d.ts +37 -0
- package/dist/core/types/serialization.d.ts.map +1 -1
- package/dist/core/validation/cel-dialect.d.ts +246 -0
- package/dist/core/validation/cel-dialect.d.ts.map +1 -0
- package/dist/core/validation/cel-dialect.js +1997 -0
- package/dist/core/validation/cel-dialect.js.map +1 -0
- package/dist/core/validation/cel-validator.d.ts.map +1 -1
- package/dist/core/validation/cel-validator.js +8 -1
- package/dist/core/validation/cel-validator.js.map +1 -1
- package/dist/core/validation/literal-status.d.ts +107 -0
- package/dist/core/validation/literal-status.d.ts.map +1 -0
- package/dist/core/validation/literal-status.js +346 -0
- package/dist/core/validation/literal-status.js.map +1 -0
- package/dist/core/validation/structural-spec-dependence.d.ts +179 -0
- package/dist/core/validation/structural-spec-dependence.d.ts.map +1 -0
- package/dist/core/validation/structural-spec-dependence.js +911 -0
- package/dist/core/validation/structural-spec-dependence.js.map +1 -0
- package/dist/factories/apisix/compositions/apisix-bootstrap.d.ts.map +1 -1
- package/dist/factories/apisix/compositions/apisix-bootstrap.js +9 -0
- package/dist/factories/apisix/compositions/apisix-bootstrap.js.map +1 -1
- package/dist/factories/clickhouse/compositions/clickhouse-cluster.d.ts +6 -0
- package/dist/factories/clickhouse/compositions/clickhouse-cluster.d.ts.map +1 -1
- package/dist/factories/clickhouse/compositions/clickhouse-cluster.js +273 -23
- package/dist/factories/clickhouse/compositions/clickhouse-cluster.js.map +1 -1
- package/dist/factories/clickhouse/resources/index.d.ts +1 -0
- package/dist/factories/clickhouse/resources/index.d.ts.map +1 -1
- package/dist/factories/clickhouse/resources/index.js +1 -0
- package/dist/factories/clickhouse/resources/index.js.map +1 -1
- package/dist/factories/clickhouse/resources/installation.d.ts.map +1 -1
- package/dist/factories/clickhouse/resources/installation.js +31 -4
- package/dist/factories/clickhouse/resources/installation.js.map +1 -1
- package/dist/factories/clickhouse/resources/s3-backup.d.ts +215 -0
- package/dist/factories/clickhouse/resources/s3-backup.d.ts.map +1 -0
- package/dist/factories/clickhouse/resources/s3-backup.js +410 -0
- package/dist/factories/clickhouse/resources/s3-backup.js.map +1 -0
- package/dist/factories/clickhouse/types.d.ts +416 -20
- package/dist/factories/clickhouse/types.d.ts.map +1 -1
- package/dist/factories/clickhouse/types.js +235 -11
- package/dist/factories/clickhouse/types.js.map +1 -1
- package/dist/factories/clickhouse/utils/helm-values-mapper.d.ts +42 -0
- package/dist/factories/clickhouse/utils/helm-values-mapper.d.ts.map +1 -1
- package/dist/factories/clickhouse/utils/helm-values-mapper.js +48 -0
- package/dist/factories/clickhouse/utils/helm-values-mapper.js.map +1 -1
- package/dist/factories/clickhouse/utils/index.d.ts +2 -0
- package/dist/factories/clickhouse/utils/index.d.ts.map +1 -1
- package/dist/factories/clickhouse/utils/index.js +2 -0
- package/dist/factories/clickhouse/utils/index.js.map +1 -1
- package/dist/factories/clickhouse/utils/s3-storage.d.ts +503 -0
- package/dist/factories/clickhouse/utils/s3-storage.d.ts.map +1 -0
- package/dist/factories/clickhouse/utils/s3-storage.js +1139 -0
- package/dist/factories/clickhouse/utils/s3-storage.js.map +1 -0
- package/dist/factories/clickhouse/utils/validation.d.ts +103 -0
- package/dist/factories/clickhouse/utils/validation.d.ts.map +1 -1
- package/dist/factories/clickhouse/utils/validation.js +129 -0
- package/dist/factories/clickhouse/utils/validation.js.map +1 -1
- package/dist/factories/clickhouse/utils/xml.d.ts +87 -0
- package/dist/factories/clickhouse/utils/xml.d.ts.map +1 -0
- package/dist/factories/clickhouse/utils/xml.js +151 -0
- package/dist/factories/clickhouse/utils/xml.js.map +1 -0
- package/dist/factories/clickstack/compositions/clickstack-bootstrap.d.ts +57 -0
- package/dist/factories/clickstack/compositions/clickstack-bootstrap.d.ts.map +1 -1
- package/dist/factories/clickstack/compositions/clickstack-bootstrap.js +266 -7
- package/dist/factories/clickstack/compositions/clickstack-bootstrap.js.map +1 -1
- package/dist/factories/clickstack/types.d.ts +205 -26
- package/dist/factories/clickstack/types.d.ts.map +1 -1
- package/dist/factories/clickstack/types.js +106 -8
- package/dist/factories/clickstack/types.js.map +1 -1
- package/dist/factories/clickstack/utils/collector-config.d.ts +104 -0
- package/dist/factories/clickstack/utils/collector-config.d.ts.map +1 -0
- package/dist/factories/clickstack/utils/collector-config.js +266 -0
- package/dist/factories/clickstack/utils/collector-config.js.map +1 -0
- package/dist/factories/clickstack/utils/helm-values-mapper.d.ts +26 -0
- package/dist/factories/clickstack/utils/helm-values-mapper.d.ts.map +1 -1
- package/dist/factories/clickstack/utils/helm-values-mapper.js +53 -12
- package/dist/factories/clickstack/utils/helm-values-mapper.js.map +1 -1
- package/dist/factories/clickstack/utils/index.d.ts +2 -0
- package/dist/factories/clickstack/utils/index.d.ts.map +1 -1
- package/dist/factories/clickstack/utils/index.js +2 -0
- package/dist/factories/clickstack/utils/index.js.map +1 -1
- package/dist/factories/clickstack/utils/storage.d.ts +449 -0
- package/dist/factories/clickstack/utils/storage.d.ts.map +1 -0
- package/dist/factories/clickstack/utils/storage.js +698 -0
- package/dist/factories/clickstack/utils/storage.js.map +1 -0
- package/dist/factories/cnpg/resources/helm.d.ts.map +1 -1
- package/dist/factories/cnpg/resources/helm.js +4 -4
- package/dist/factories/cnpg/resources/helm.js.map +1 -1
- package/dist/factories/cnpg/types.d.ts +10 -1
- package/dist/factories/cnpg/types.d.ts.map +1 -1
- package/dist/factories/cnpg/types.js.map +1 -1
- package/dist/factories/cnpg/utils/helm-values-mapper.d.ts +19 -2
- package/dist/factories/cnpg/utils/helm-values-mapper.d.ts.map +1 -1
- package/dist/factories/cnpg/utils/helm-values-mapper.js +22 -4
- package/dist/factories/cnpg/utils/helm-values-mapper.js.map +1 -1
- package/dist/factories/envoy-ai-gateway/compositions/gateway.d.ts.map +1 -1
- package/dist/factories/envoy-ai-gateway/compositions/gateway.js +16 -3
- package/dist/factories/envoy-ai-gateway/compositions/gateway.js.map +1 -1
- package/dist/factories/envoy-ai-gateway/constants.d.ts +5 -2
- package/dist/factories/envoy-ai-gateway/constants.d.ts.map +1 -1
- package/dist/factories/envoy-ai-gateway/constants.js +5 -2
- package/dist/factories/envoy-ai-gateway/constants.js.map +1 -1
- package/dist/factories/envoy-ai-gateway/resources/gateway.d.ts +12 -0
- package/dist/factories/envoy-ai-gateway/resources/gateway.d.ts.map +1 -1
- package/dist/factories/envoy-ai-gateway/resources/gateway.js +27 -104
- package/dist/factories/envoy-ai-gateway/resources/gateway.js.map +1 -1
- package/dist/factories/envoy-ai-gateway/types.d.ts +15 -47
- package/dist/factories/envoy-ai-gateway/types.d.ts.map +1 -1
- package/dist/factories/envoy-ai-gateway/types.js.map +1 -1
- package/dist/factories/gateway-api/constants.d.ts +27 -0
- package/dist/factories/gateway-api/constants.d.ts.map +1 -0
- package/dist/factories/gateway-api/constants.js +27 -0
- package/dist/factories/gateway-api/constants.js.map +1 -0
- package/dist/factories/gateway-api/index.d.ts +14 -0
- package/dist/factories/gateway-api/index.d.ts.map +1 -0
- package/dist/factories/gateway-api/index.js +14 -0
- package/dist/factories/gateway-api/index.js.map +1 -0
- package/dist/factories/gateway-api/readiness.d.ts +67 -0
- package/dist/factories/gateway-api/readiness.d.ts.map +1 -0
- package/dist/factories/gateway-api/readiness.js +213 -0
- package/dist/factories/gateway-api/readiness.js.map +1 -0
- package/dist/factories/gateway-api/resources/gateway.d.ts +91 -0
- package/dist/factories/gateway-api/resources/gateway.d.ts.map +1 -0
- package/dist/factories/gateway-api/resources/gateway.js +99 -0
- package/dist/factories/gateway-api/resources/gateway.js.map +1 -0
- package/dist/factories/gateway-api/resources/index.d.ts +2 -0
- package/dist/factories/gateway-api/resources/index.d.ts.map +1 -0
- package/dist/factories/gateway-api/resources/index.js +2 -0
- package/dist/factories/gateway-api/resources/index.js.map +1 -0
- package/dist/factories/gateway-api/types.d.ts +1269 -0
- package/dist/factories/gateway-api/types.d.ts.map +1 -0
- package/dist/factories/gateway-api/types.js +417 -0
- package/dist/factories/gateway-api/types.js.map +1 -0
- package/dist/factories/helm/readiness-evaluators.d.ts +21 -3
- package/dist/factories/helm/readiness-evaluators.d.ts.map +1 -1
- package/dist/factories/helm/readiness-evaluators.js +117 -11
- package/dist/factories/helm/readiness-evaluators.js.map +1 -1
- package/dist/factories/helm/types.d.ts +28 -0
- package/dist/factories/helm/types.d.ts.map +1 -1
- package/dist/factories/index.d.ts +2 -0
- package/dist/factories/index.d.ts.map +1 -1
- package/dist/factories/index.js +8 -0
- package/dist/factories/index.js.map +1 -1
- package/dist/factories/inngest/compositions/inngest-bootstrap.d.ts.map +1 -1
- package/dist/factories/inngest/compositions/inngest-bootstrap.js +10 -0
- package/dist/factories/inngest/compositions/inngest-bootstrap.js.map +1 -1
- package/dist/factories/kubernetes/admission/index.d.ts +2 -0
- package/dist/factories/kubernetes/admission/index.d.ts.map +1 -1
- package/dist/factories/kubernetes/admission/index.js +2 -0
- package/dist/factories/kubernetes/admission/index.js.map +1 -1
- package/dist/factories/kubernetes/admission/label-propagation-guard.d.ts +108 -0
- package/dist/factories/kubernetes/admission/label-propagation-guard.d.ts.map +1 -0
- package/dist/factories/kubernetes/admission/label-propagation-guard.js +247 -0
- package/dist/factories/kubernetes/admission/label-propagation-guard.js.map +1 -0
- package/dist/factories/kubernetes/admission/mutating-admission-policy.d.ts +286 -0
- package/dist/factories/kubernetes/admission/mutating-admission-policy.d.ts.map +1 -0
- package/dist/factories/kubernetes/admission/mutating-admission-policy.js +157 -0
- package/dist/factories/kubernetes/admission/mutating-admission-policy.js.map +1 -0
- package/dist/factories/opensearch/compositions/cluster.d.ts.map +1 -1
- package/dist/factories/opensearch/compositions/cluster.js +6 -1
- package/dist/factories/opensearch/compositions/cluster.js.map +1 -1
- package/dist/factories/ory/compositions/ory-identity-stack.d.ts +8 -8
- package/dist/factories/ory/types.d.ts +16 -16
- package/dist/factories/rook/compositions/object-storage-claim.d.ts +1 -1
- package/dist/factories/rook/compositions/rook-ceph-platform.js +8 -1
- package/dist/factories/rook/compositions/rook-ceph-platform.js.map +1 -1
- package/dist/factories/rook/types.d.ts +1 -1
- package/dist/factories/searxng/compositions/searxng-bootstrap.d.ts +1 -1
- package/dist/factories/searxng/compositions/searxng-bootstrap.d.ts.map +1 -1
- package/dist/factories/searxng/compositions/searxng-bootstrap.js +18 -13
- package/dist/factories/searxng/compositions/searxng-bootstrap.js.map +1 -1
- package/dist/factories/searxng/index.d.ts +3 -0
- package/dist/factories/searxng/index.d.ts.map +1 -1
- package/dist/factories/searxng/index.js +3 -0
- package/dist/factories/searxng/index.js.map +1 -1
- package/dist/factories/searxng/types.js +1 -1
- package/dist/factories/searxng/types.js.map +1 -1
- package/dist/factories/traefik/compositions/index.d.ts +6 -0
- package/dist/factories/traefik/compositions/index.d.ts.map +1 -0
- package/dist/factories/traefik/compositions/index.js +6 -0
- package/dist/factories/traefik/compositions/index.js.map +1 -0
- package/dist/factories/traefik/compositions/traefik-bootstrap.d.ts +185 -0
- package/dist/factories/traefik/compositions/traefik-bootstrap.d.ts.map +1 -0
- package/dist/factories/traefik/compositions/traefik-bootstrap.js +339 -0
- package/dist/factories/traefik/compositions/traefik-bootstrap.js.map +1 -0
- package/dist/factories/traefik/compositions/traefik-helm-repository.d.ts +16 -0
- package/dist/factories/traefik/compositions/traefik-helm-repository.d.ts.map +1 -0
- package/dist/factories/traefik/compositions/traefik-helm-repository.js +31 -0
- package/dist/factories/traefik/compositions/traefik-helm-repository.js.map +1 -0
- package/dist/factories/traefik/constants.d.ts +78 -0
- package/dist/factories/traefik/constants.d.ts.map +1 -0
- package/dist/factories/traefik/constants.js +104 -0
- package/dist/factories/traefik/constants.js.map +1 -0
- package/dist/factories/traefik/index.d.ts +25 -0
- package/dist/factories/traefik/index.d.ts.map +1 -0
- package/dist/factories/traefik/index.js +25 -0
- package/dist/factories/traefik/index.js.map +1 -0
- package/dist/factories/traefik/resources/common.d.ts +68 -0
- package/dist/factories/traefik/resources/common.d.ts.map +1 -0
- package/dist/factories/traefik/resources/common.js +59 -0
- package/dist/factories/traefik/resources/common.js.map +1 -0
- package/dist/factories/traefik/resources/gateway.d.ts +85 -0
- package/dist/factories/traefik/resources/gateway.d.ts.map +1 -0
- package/dist/factories/traefik/resources/gateway.js +109 -0
- package/dist/factories/traefik/resources/gateway.js.map +1 -0
- package/dist/factories/traefik/resources/helm.d.ts +56 -0
- package/dist/factories/traefik/resources/helm.d.ts.map +1 -0
- package/dist/factories/traefik/resources/helm.js +131 -0
- package/dist/factories/traefik/resources/helm.js.map +1 -0
- package/dist/factories/traefik/resources/index.d.ts +10 -0
- package/dist/factories/traefik/resources/index.d.ts.map +1 -0
- package/dist/factories/traefik/resources/index.js +10 -0
- package/dist/factories/traefik/resources/index.js.map +1 -0
- package/dist/factories/traefik/resources/middleware.d.ts +169 -0
- package/dist/factories/traefik/resources/middleware.d.ts.map +1 -0
- package/dist/factories/traefik/resources/middleware.js +225 -0
- package/dist/factories/traefik/resources/middleware.js.map +1 -0
- package/dist/factories/traefik/resources/routing.d.ts +113 -0
- package/dist/factories/traefik/resources/routing.d.ts.map +1 -0
- package/dist/factories/traefik/resources/routing.js +119 -0
- package/dist/factories/traefik/resources/routing.js.map +1 -0
- package/dist/factories/traefik/resources/tls.d.ts +85 -0
- package/dist/factories/traefik/resources/tls.d.ts.map +1 -0
- package/dist/factories/traefik/resources/tls.js +93 -0
- package/dist/factories/traefik/resources/tls.js.map +1 -0
- package/dist/factories/traefik/types.d.ts +2690 -0
- package/dist/factories/traefik/types.d.ts.map +1 -0
- package/dist/factories/traefik/types.js +1084 -0
- package/dist/factories/traefik/types.js.map +1 -0
- package/dist/factories/traefik/utils/helm-values-mapper.d.ts +198 -0
- package/dist/factories/traefik/utils/helm-values-mapper.d.ts.map +1 -0
- package/dist/factories/traefik/utils/helm-values-mapper.js +372 -0
- package/dist/factories/traefik/utils/helm-values-mapper.js.map +1 -0
- package/dist/factories/traefik/utils/index.d.ts +6 -0
- package/dist/factories/traefik/utils/index.d.ts.map +1 -0
- package/dist/factories/traefik/utils/index.js +6 -0
- package/dist/factories/traefik/utils/index.js.map +1 -0
- package/dist/factories/traefik/utils/middleware-validation.d.ts +42 -0
- package/dist/factories/traefik/utils/middleware-validation.d.ts.map +1 -0
- package/dist/factories/traefik/utils/middleware-validation.js +78 -0
- package/dist/factories/traefik/utils/middleware-validation.js.map +1 -0
- package/dist/factories/webapp/compositions/web-app-with-processing.d.ts.map +1 -1
- package/dist/factories/webapp/compositions/web-app-with-processing.js +10 -0
- package/dist/factories/webapp/compositions/web-app-with-processing.js.map +1 -1
- package/dist/index.d.ts +4 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -1
- package/dist/index.js.map +1 -1
- package/package.json +9 -1
|
@@ -19,7 +19,8 @@
|
|
|
19
19
|
import { registerPortableReadinessEvaluator } from '../../../core/readiness/index.js';
|
|
20
20
|
import { isCelExpression, isKubernetesRef } from '../../../utils/type-guards.js';
|
|
21
21
|
import { createResource } from '../../shared.js';
|
|
22
|
-
import {
|
|
22
|
+
import { clickHouseS3ConfigurationFiles, clickHouseS3ConfigurationSettings, clickHouseS3ContainerEnv, clickHouseS3ServiceAccountName, resolveClickHouseStorage, } from '../utils/s3-storage.js';
|
|
23
|
+
import { assertClickHouseClusterName, assertPositiveIntegerCount, } from '../utils/validation.js';
|
|
23
24
|
import { compileZonePinnedLayout } from '../utils/zone-layout.js';
|
|
24
25
|
/**
|
|
25
26
|
* Known CHI/CHK reconcile status strings.
|
|
@@ -187,15 +188,34 @@ function compileInstallationSpec(config) {
|
|
|
187
188
|
assertPositiveIntegerCount('clickHouseInstallation', 'shards', shards);
|
|
188
189
|
assertPositiveIntegerCount('clickHouseInstallation', 'replicas', replicas);
|
|
189
190
|
const clusterName = config.clusterName ?? DEFAULT_CHI_CLUSTER_NAME;
|
|
191
|
+
// Concrete names only — a schema reference passes through untouched and is
|
|
192
|
+
// constrained by the generated KRO schema instead (see
|
|
193
|
+
// `ClickHouseClusterNameSchema`). The value is a fragment of every object
|
|
194
|
+
// name the operator generates AND the `ON CLUSTER` target of the backup.
|
|
195
|
+
assertClickHouseClusterName('clickHouseInstallation', 'clusterName', clusterName);
|
|
190
196
|
const image = config.image ?? `${DEFAULT_CLICKHOUSE_IMAGE_REPOSITORY}:${config.version}`;
|
|
191
197
|
const zones = config.zones ?? [];
|
|
198
|
+
// Storage resolution happens BEFORE the pod spec: in S3 mode it contributes
|
|
199
|
+
// container env (Secret-backed keys) and a ServiceAccount (IRSA), and it is
|
|
200
|
+
// where PVC/S3 option mixing is rejected.
|
|
201
|
+
const storage = resolveClickHouseStorage('clickHouseInstallation', config.storage, config.version);
|
|
202
|
+
if (storage.mode === 's3' && storage.diskType === 's3_plain_rewritable' && replicas > 1) {
|
|
203
|
+
throw new Error(`clickHouseInstallation: storage.diskType 's3_plain_rewritable' does not support table ` +
|
|
204
|
+
`replication (ClickHouse documents mutations and replication as unsupported for the ` +
|
|
205
|
+
`plain_rewritable metadata type), so it requires a SINGLE replica (got ${replicas}). ` +
|
|
206
|
+
`Use diskType: 's3' with a backup schedule for a replicated cluster.`);
|
|
207
|
+
}
|
|
208
|
+
const s3Env = storage.mode === 's3' ? clickHouseS3ContainerEnv(storage) : [];
|
|
209
|
+
const s3ServiceAccountName = storage.mode === 's3' ? clickHouseS3ServiceAccountName(storage, config.name) : undefined;
|
|
192
210
|
// Shared ClickHouse server pod spec (per-zone templates add affinity).
|
|
193
211
|
const podSpec = {
|
|
212
|
+
...(s3ServiceAccountName !== undefined && { serviceAccountName: s3ServiceAccountName }),
|
|
194
213
|
containers: [
|
|
195
214
|
{
|
|
196
215
|
name: 'clickhouse',
|
|
197
216
|
image,
|
|
198
217
|
...(config.podResources && { resources: config.podResources }),
|
|
218
|
+
...(s3Env.length > 0 && { env: s3Env }),
|
|
199
219
|
},
|
|
200
220
|
],
|
|
201
221
|
};
|
|
@@ -271,12 +291,19 @@ function compileInstallationSpec(config) {
|
|
|
271
291
|
// The operator's `zookeeper` section serves clickhouse-keeper too.
|
|
272
292
|
...(config.keeper && {
|
|
273
293
|
zookeeper: {
|
|
274
|
-
nodes: [
|
|
275
|
-
{ host: config.keeper.host, port: config.keeper.port ?? 2181 },
|
|
276
|
-
],
|
|
294
|
+
nodes: [{ host: config.keeper.host, port: config.keeper.port ?? 2181 }],
|
|
277
295
|
},
|
|
278
296
|
}),
|
|
279
297
|
...(config.users && { users: compileUsers(config.users) }),
|
|
298
|
+
// S3 mode: the rendered storage_configuration lands in
|
|
299
|
+
// `configuration.files` (`config.d/storage.xml`) and the policy becomes
|
|
300
|
+
// the MergeTree DEFAULT via `configuration.settings`, so tables created
|
|
301
|
+
// by tooling outside TypeKro (HyperDX/OTel goose migrations, SigNoz's
|
|
302
|
+
// migrator) go to object storage with no per-table DDL.
|
|
303
|
+
...(storage.mode === 's3' && {
|
|
304
|
+
settings: clickHouseS3ConfigurationSettings(storage),
|
|
305
|
+
files: clickHouseS3ConfigurationFiles(storage),
|
|
306
|
+
}),
|
|
280
307
|
},
|
|
281
308
|
templates: {
|
|
282
309
|
podTemplates,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"installation.js","sourceRoot":"","sources":["../../../../src/factories/clickhouse/resources/installation.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAGH,OAAO,EAAE,kCAAkC,EAAE,MAAM,kCAAkC,CAAC;AACtF,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AACjF,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAOjD,OAAO,
|
|
1
|
+
{"version":3,"file":"installation.js","sourceRoot":"","sources":["../../../../src/factories/clickhouse/resources/installation.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,215 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Scheduled `BACKUP ... TO S3(...)` CronJob for an S3-backed ClickHouse.
|
|
3
|
+
*
|
|
4
|
+
* WHY this exists: with `storage.diskType: 's3'` the bucket holds the part
|
|
5
|
+
* DATA but the part METADATA lives on the node's local disk, so the bucket is
|
|
6
|
+
* not self-describing — losing the node loses the map to the objects. That
|
|
7
|
+
* makes durability a backup story, and an "S3-backed" cluster with no backup
|
|
8
|
+
* is a trap. This factory renders that backup explicitly rather than leaving
|
|
9
|
+
* it to a README.
|
|
10
|
+
*
|
|
11
|
+
* SHAPE OF THE JOB
|
|
12
|
+
* - A timestamped backup name (`%Y%m%d%H%M%S`) is generated per run, so each
|
|
13
|
+
* run is a separate, independently restorable backup under
|
|
14
|
+
* `s3://<bucket>/<prefix>/<timestamp>`.
|
|
15
|
+
* - The `BACKUP` statement carries NO credentials: it executes SERVER-side, and
|
|
16
|
+
* the server picks the destination credentials up from the `<s3>` section the
|
|
17
|
+
* storage compiler renders into `config.d/storage.xml` (matched by endpoint
|
|
18
|
+
* prefix). Keys therefore never reach the query text — and never reach
|
|
19
|
+
* `system.query_log`.
|
|
20
|
+
* - With `retention.days`, the backup runs as an initContainer and a prune
|
|
21
|
+
* container follows it, deleting expired timestamped prefixes. The prune step
|
|
22
|
+
* needs S3 `DeleteObject` on the backup prefix (see the IAM policy in the
|
|
23
|
+
* docs).
|
|
24
|
+
*
|
|
25
|
+
* SHARDED CLUSTERS — WHY `ON CLUSTER` IS NOT OPTIONAL
|
|
26
|
+
* A plain `BACKUP DATABASE db TO S3(...)` is executed by the ONE server the
|
|
27
|
+
* client happened to connect to, and that server only holds its own shard's
|
|
28
|
+
* parts. On a multi-shard cluster that silently produces a PARTIAL backup: it
|
|
29
|
+
* succeeds, it is restorable, and it is missing every other shard's data.
|
|
30
|
+
* ClickHouse's answer is `BACKUP ... ON CLUSTER '<cluster>' TO S3(...)`, which
|
|
31
|
+
* fans the statement out to every host of the cluster and coordinates them
|
|
32
|
+
* through [Zoo]Keeper so that all of them contribute to ONE backup at ONE
|
|
33
|
+
* destination path (the `backup_restore_keeper_*` settings in the BACKUP/
|
|
34
|
+
* RESTORE reference exist for exactly this coordination). No `{shard}` /
|
|
35
|
+
* `{replica}` macros belong in the destination: that convention produces N
|
|
36
|
+
* INDEPENDENT per-shard backups, which is a different (external-tool) design
|
|
37
|
+
* and would need N restore statements.
|
|
38
|
+
*
|
|
39
|
+
* Because the coordination is Keeper-based, `ON CLUSTER` is only rendered for
|
|
40
|
+
* topologies that actually have a Keeper — {@link makeClickHouseCluster}
|
|
41
|
+
* REJECTS a multi-shard/multi-replica topology with a backup schedule and no
|
|
42
|
+
* keeper at construction rather than emitting a statement that would back up
|
|
43
|
+
* one shard.
|
|
44
|
+
*
|
|
45
|
+
* RESTORE is deliberately NOT automated — restoring over a live database is a
|
|
46
|
+
* decision, not a schedule. The procedure is documented in
|
|
47
|
+
* `docs/api/clickhouse/index.md`; in short (matching the backup's own shape):
|
|
48
|
+
* `RESTORE DATABASE <db> [ON CLUSTER '<cluster>'] FROM S3('<endpoint>/<timestamp>')`.
|
|
49
|
+
*/
|
|
50
|
+
import type { V1CronJobSpec, V1CronJobStatus } from '@kubernetes/client-node';
|
|
51
|
+
import type { Composable, Enhanced } from '../../../core/types/index.js';
|
|
52
|
+
import type { ResolvedClickHouseS3Storage } from '../utils/s3-storage.js';
|
|
53
|
+
/**
|
|
54
|
+
* What `storage` has to be, quoted into the ArkType error on a bad value.
|
|
55
|
+
*
|
|
56
|
+
* Re-exported from `utils/s3-storage.ts`, where it is attached to the `mode`
|
|
57
|
+
* discriminant of the resolved-storage schema; kept on this module's surface
|
|
58
|
+
* because that is where callers of the backup factory look for it.
|
|
59
|
+
*/
|
|
60
|
+
export { RESOLVED_S3_STORAGE_REQUIREMENT } from '../utils/s3-storage.js';
|
|
61
|
+
/** Image used for the prune step (the ClickHouse image has no AWS CLI). */
|
|
62
|
+
export declare const DEFAULT_S3_PRUNE_IMAGE = "amazon/aws-cli:2.22.35";
|
|
63
|
+
/**
|
|
64
|
+
* The composition-facing form of {@link ClickHouseS3BackupCronJobConfig}.
|
|
65
|
+
*
|
|
66
|
+
* `Composable<T>` everywhere EXCEPT `storage`: the resolved S3 storage is
|
|
67
|
+
* build-time concrete by construction (`resolveClickHouseStorage` rejects a
|
|
68
|
+
* schema reference in S3 mode, because the values compile into a
|
|
69
|
+
* `storage_configuration` XML document), so loosening it into proxy form would
|
|
70
|
+
* describe a value this factory can never receive — and would make every
|
|
71
|
+
* optional field of the resolution nullable for no reason. The RUNTIME fields
|
|
72
|
+
* (`name`, `namespace`, `version`, `clusterName`) are exactly the ones that may
|
|
73
|
+
* be schema references, and they are the ones `Composable` covers here.
|
|
74
|
+
*/
|
|
75
|
+
export type ComposableClickHouseS3BackupCronJobConfig = Composable<Omit<ClickHouseS3BackupCronJobConfig, 'storage'>> & {
|
|
76
|
+
storage: ResolvedClickHouseS3Storage;
|
|
77
|
+
};
|
|
78
|
+
/**
|
|
79
|
+
* The `storage` input: an already-RESOLVED S3 storage.
|
|
80
|
+
*
|
|
81
|
+
* It IS {@link ResolvedClickHouseS3StorageSchema} — the one description of a
|
|
82
|
+
* resolved S3 storage, which `resolveClickHouseStorage()` also asserts its own
|
|
83
|
+
* output against. There is deliberately no second, looser shape here: this
|
|
84
|
+
* factory field-selects `storage.backup.*`, `storage.bucket`, `storage.region`
|
|
85
|
+
* and `storage.auth` to build the CronJob, so the structure it reads has to be
|
|
86
|
+
* one that runtime validation ESTABLISHES rather than one a predicate claims.
|
|
87
|
+
*
|
|
88
|
+
* Re-exported under the old name so `ClickHouseS3BackupCronJobConfigSchema`
|
|
89
|
+
* reads as a schema of its own fields.
|
|
90
|
+
*/
|
|
91
|
+
export declare const ClickHouseS3BackupStorageSchema: import("arktype/internal/variants/object.ts").ObjectType<{
|
|
92
|
+
mode: "s3";
|
|
93
|
+
bucket: string;
|
|
94
|
+
prefix: string;
|
|
95
|
+
diskType: "s3" | "s3_plain_rewritable";
|
|
96
|
+
policyName: string;
|
|
97
|
+
cacheMaxSizeBytes: number;
|
|
98
|
+
cachePath: string;
|
|
99
|
+
auth: {
|
|
100
|
+
kind: "irsa";
|
|
101
|
+
roleArn: string;
|
|
102
|
+
serviceAccountName?: string;
|
|
103
|
+
} | {
|
|
104
|
+
kind: "secretRef";
|
|
105
|
+
secretName: string;
|
|
106
|
+
accessKeyIdKey: string;
|
|
107
|
+
secretAccessKeyKey: string;
|
|
108
|
+
};
|
|
109
|
+
endpointUrl: string;
|
|
110
|
+
region?: string;
|
|
111
|
+
endpoint?: string;
|
|
112
|
+
backup?: {
|
|
113
|
+
schedule: string;
|
|
114
|
+
bucket: string;
|
|
115
|
+
prefix: string;
|
|
116
|
+
database: string;
|
|
117
|
+
endpointUrl: string;
|
|
118
|
+
retentionDays?: number;
|
|
119
|
+
auth?: {
|
|
120
|
+
secretName: string;
|
|
121
|
+
usernameKey: string;
|
|
122
|
+
passwordKey: string;
|
|
123
|
+
};
|
|
124
|
+
};
|
|
125
|
+
}, {}>;
|
|
126
|
+
/**
|
|
127
|
+
* ArkType schema for ClickHouseS3BackupCronJobConfig.
|
|
128
|
+
*
|
|
129
|
+
* Configuration for {@link clickHouseS3BackupCronJob}.
|
|
130
|
+
*/
|
|
131
|
+
export declare const ClickHouseS3BackupCronJobConfigSchema: import("arktype/internal/variants/object.ts").ObjectType<{
|
|
132
|
+
name: string;
|
|
133
|
+
namespace: string;
|
|
134
|
+
version: string;
|
|
135
|
+
storage: {
|
|
136
|
+
mode: "s3";
|
|
137
|
+
bucket: string;
|
|
138
|
+
prefix: string;
|
|
139
|
+
diskType: "s3" | "s3_plain_rewritable";
|
|
140
|
+
policyName: string;
|
|
141
|
+
cacheMaxSizeBytes: number;
|
|
142
|
+
cachePath: string;
|
|
143
|
+
auth: {
|
|
144
|
+
kind: "irsa";
|
|
145
|
+
roleArn: string;
|
|
146
|
+
serviceAccountName?: string;
|
|
147
|
+
} | {
|
|
148
|
+
kind: "secretRef";
|
|
149
|
+
secretName: string;
|
|
150
|
+
accessKeyIdKey: string;
|
|
151
|
+
secretAccessKeyKey: string;
|
|
152
|
+
};
|
|
153
|
+
endpointUrl: string;
|
|
154
|
+
region?: string;
|
|
155
|
+
endpoint?: string;
|
|
156
|
+
backup?: {
|
|
157
|
+
schedule: string;
|
|
158
|
+
bucket: string;
|
|
159
|
+
prefix: string;
|
|
160
|
+
database: string;
|
|
161
|
+
endpointUrl: string;
|
|
162
|
+
retentionDays?: number;
|
|
163
|
+
auth?: {
|
|
164
|
+
secretName: string;
|
|
165
|
+
usernameKey: string;
|
|
166
|
+
passwordKey: string;
|
|
167
|
+
};
|
|
168
|
+
};
|
|
169
|
+
};
|
|
170
|
+
nativePort: number;
|
|
171
|
+
clusterName?: string;
|
|
172
|
+
onCluster?: boolean;
|
|
173
|
+
id?: string;
|
|
174
|
+
}, {}>;
|
|
175
|
+
/**
|
|
176
|
+
* Configuration for {@link clickHouseS3BackupCronJob}.
|
|
177
|
+
*
|
|
178
|
+
* INFERRED WHOLE from {@link ClickHouseS3BackupCronJobConfigSchema}, including
|
|
179
|
+
* `storage` — a field cannot exist in the type without existing in the schema
|
|
180
|
+
* that validates it.
|
|
181
|
+
*/
|
|
182
|
+
export type ClickHouseS3BackupCronJobConfig = typeof ClickHouseS3BackupCronJobConfigSchema.infer;
|
|
183
|
+
/**
|
|
184
|
+
* Env var carrying the `ON CLUSTER` target into the backup container.
|
|
185
|
+
*
|
|
186
|
+
* `CLICKHOUSE_CLUSTER` is NOT a name `clickhouse-client` interprets, so it
|
|
187
|
+
* cannot collide with the client's own configuration.
|
|
188
|
+
*/
|
|
189
|
+
export declare const BACKUP_CLUSTER_ENV = "CLICKHOUSE_CLUSTER";
|
|
190
|
+
/**
|
|
191
|
+
* Create the scheduled backup CronJob for an S3-backed ClickHouse cluster.
|
|
192
|
+
*
|
|
193
|
+
* @param config - Backup CronJob configuration
|
|
194
|
+
* @returns Enhanced CronJob resource with schedule-based readiness evaluation
|
|
195
|
+
* @throws Error when the resolved storage carries no `backup` schedule, when
|
|
196
|
+
* `onCluster` is set without a `clusterName`, or when a concrete
|
|
197
|
+
* `clusterName` is not a bare identifier
|
|
198
|
+
*
|
|
199
|
+
* @example
|
|
200
|
+
* ```typescript
|
|
201
|
+
* const backup = clickHouseS3BackupCronJob({
|
|
202
|
+
* name: 'observability',
|
|
203
|
+
* namespace: 'observability',
|
|
204
|
+
* version: '25.12.5',
|
|
205
|
+
* storage: resolved,
|
|
206
|
+
* nativePort: 9000,
|
|
207
|
+
* // Sharded/replicated topology: back up EVERY shard, coordinated by Keeper.
|
|
208
|
+
* onCluster: true,
|
|
209
|
+
* clusterName: 'cluster',
|
|
210
|
+
* id: 'clickhouseBackup',
|
|
211
|
+
* });
|
|
212
|
+
* ```
|
|
213
|
+
*/
|
|
214
|
+
export declare function clickHouseS3BackupCronJob(config: ComposableClickHouseS3BackupCronJobConfig): Enhanced<V1CronJobSpec, V1CronJobStatus>;
|
|
215
|
+
//# sourceMappingURL=s3-backup.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"s3-backup.d.ts","sourceRoot":"","sources":["../../../../src/factories/clickhouse/resources/s3-backup.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgDG;AAEH,OAAO,KAAK,EAEV,aAAa,EACb,eAAe,EAEhB,MAAM,yBAAyB,CAAC;AAEjC,OAAO,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAC;AAEzE,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,wBAAwB,CAAC;AAU1E;;;;;;GAMG;AACH,OAAO,EAAE,+BAA+B,EAAE,MAAM,wBAAwB,CAAC;AAEzE,2EAA2E;AAC3E,eAAO,MAAM,sBAAsB,2BAA2B,CAAC;AAE/D;;;;;;;;;;;GAWG;AACH,MAAM,MAAM,yCAAyC,GAAG,UAAU,CAChE,IAAI,CAAC,+BAA+B,EAAE,SAAS,CAAC,CACjD,GAAG;IACF,OAAO,EAAE,2BAA2B,CAAC;CACtC,CAAC;AAEF;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,+BAA+B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAAoC,CAAC;AAEjF;;;;GAIG;AACH,eAAO,MAAM,qCAAqC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MA4BhD,CAAC;AAEH;;;;;;GAMG;AACH,MAAM,MAAM,+BAA+B,GACzC,OAAO,qCAAqC,CAAC,KAAK,CAAC;AAErD;;;;;GAKG;AACH,eAAO,MAAM,kBAAkB,uBAAuB,CAAC;AA0MvD;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,yBAAyB,CACvC,MAAM,EAAE,yCAAyC,GAChD,QAAQ,CAAC,aAAa,EAAE,eAAe,CAAC,CAuF1C"}
|