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
|
@@ -1,6 +1,26 @@
|
|
|
1
|
-
/**
|
|
1
|
+
/**
|
|
2
|
+
* Preserve offsets while hiding quoted CEL data from reference scanners.
|
|
3
|
+
*
|
|
4
|
+
* "Preserve offsets" is the whole contract, and it is a contract about UTF-16
|
|
5
|
+
* **code units**, because that is what `String.prototype.indexOf`, `slice`,
|
|
6
|
+
* `length` and every `RegExpExecArray.index` in the callers are counted in. So
|
|
7
|
+
* the walk is by code unit — `split('')` — and every blanked unit becomes one
|
|
8
|
+
* space, which makes `maskCelStringLiterals(x).length === x.length` for every
|
|
9
|
+
* input.
|
|
10
|
+
*
|
|
11
|
+
* Iterating by *code point* (`[...expression]`, `Array.from`, `for…of`, a `/u`
|
|
12
|
+
* regex replacing each match with a single space) breaks it silently: an astral
|
|
13
|
+
* character — an emoji, anything above U+FFFF — is one code point and two code
|
|
14
|
+
* units, so blanking it emits one space where the original had two units, and
|
|
15
|
+
* every offset after it drifts by one between the mask and the text it is
|
|
16
|
+
* supposed to index. A caller then slices a fragment one character short, reads
|
|
17
|
+
* a bracket index that points between two tokens, or re-lexes a literal from
|
|
18
|
+
* the wrong place — and only for expressions that happen to contain an emoji
|
|
19
|
+
* inside a string, which is exactly the bug that does not show up in a test
|
|
20
|
+
* suite written in ASCII.
|
|
21
|
+
*/
|
|
2
22
|
export function maskCelStringLiterals(expression) {
|
|
3
|
-
const characters =
|
|
23
|
+
const characters = expression.split('');
|
|
4
24
|
let quote;
|
|
5
25
|
let escaped = false;
|
|
6
26
|
for (let index = 0; index < characters.length; index += 1) {
|
|
@@ -25,6 +45,180 @@ export function maskCelStringLiterals(expression) {
|
|
|
25
45
|
}
|
|
26
46
|
return characters.join('');
|
|
27
47
|
}
|
|
48
|
+
/** CEL `IDENT ::= [_a-zA-Z][_a-zA-Z0-9]*` — first character, then the rest. */
|
|
49
|
+
const CEL_IDENT_START = /[A-Za-z_]/;
|
|
50
|
+
const IDENT_CHARACTER = /[A-Za-z0-9_]/;
|
|
51
|
+
/** The four `STRING_LIT` delimiters, longest first so `"""` beats `"`. */
|
|
52
|
+
const CEL_STRING_DELIMITERS = ['"""', "'''", '"', "'"];
|
|
53
|
+
/**
|
|
54
|
+
* End of the `STRING_LIT`/`BYTES_LIT` token starting at `at`, or `at` for none.
|
|
55
|
+
*
|
|
56
|
+
* The langdef lexis (cel-spec `doc/langdef.md`) is
|
|
57
|
+
* `STRING_LIT ::= [rR]? ( '"' ~('"'|NEWLINE)* '"' | "'" ~("'"|NEWLINE)* "'"`
|
|
58
|
+
* `| '"""' ~'"""'* '"""' | "'''" ~"'''"* "'''" )` and
|
|
59
|
+
* `BYTES_LIT ::= [bB] STRING_LIT`. cel-go accepts the two prefix letters in
|
|
60
|
+
* either order and in either case, so at most one of each is taken. A prefix
|
|
61
|
+
* letter with no quote behind it is not a string at all and is handed back for
|
|
62
|
+
* `IDENT` to consume, which is what makes `b + "x"` an identifier, an operator
|
|
63
|
+
* and a string rather than a bytes literal.
|
|
64
|
+
*
|
|
65
|
+
* Escapes are lexed in the NON-raw forms only: cel-go's lexer spells the raw
|
|
66
|
+
* forms `RAW '"' ~["\n\r]* '"'`, with no `ESC_SEQ` alternative, so the `"` in
|
|
67
|
+
* `r"a\"` CLOSES the literal. A single-delimiter form cannot span a newline; a
|
|
68
|
+
* triple-quoted one can, and closes at the first matching triple. An
|
|
69
|
+
* unterminated literal is not a token — the caller then steps over the opening
|
|
70
|
+
* quote as ordinary text, which is the behaviour marker-laden template text
|
|
71
|
+
* depends on.
|
|
72
|
+
*
|
|
73
|
+
* This is the STRING-ONLY entry point: it knows nothing about `//` comments, so
|
|
74
|
+
* a caller that runs over text which is not wholly CEL — KRO mixed templates,
|
|
75
|
+
* where `http://` must not read as a comment — can lex the literal family
|
|
76
|
+
* completely without inheriting comment masking. Callers that ARE looking at
|
|
77
|
+
* whole CEL expressions want {@link maskClosedCelLiteralsAndComments} instead.
|
|
78
|
+
*/
|
|
79
|
+
export function celStringLiteralEnd(text, at) {
|
|
80
|
+
let index = at;
|
|
81
|
+
let raw = false;
|
|
82
|
+
let bytes = false;
|
|
83
|
+
for (let take = 0; take < 2; take += 1) {
|
|
84
|
+
const character = text[index];
|
|
85
|
+
if (!raw && (character === 'r' || character === 'R')) {
|
|
86
|
+
raw = true;
|
|
87
|
+
index += 1;
|
|
88
|
+
}
|
|
89
|
+
else if (!bytes && (character === 'b' || character === 'B')) {
|
|
90
|
+
bytes = true;
|
|
91
|
+
index += 1;
|
|
92
|
+
}
|
|
93
|
+
else
|
|
94
|
+
break;
|
|
95
|
+
}
|
|
96
|
+
const delimiter = CEL_STRING_DELIMITERS.find((candidate) => text.startsWith(candidate, index));
|
|
97
|
+
if (delimiter === undefined)
|
|
98
|
+
return at;
|
|
99
|
+
for (let scan = index + delimiter.length; scan < text.length; scan += 1) {
|
|
100
|
+
const character = text[scan];
|
|
101
|
+
if (!raw && character === '\\') {
|
|
102
|
+
if (scan + 1 >= text.length)
|
|
103
|
+
return at;
|
|
104
|
+
scan += 1;
|
|
105
|
+
continue;
|
|
106
|
+
}
|
|
107
|
+
if (delimiter.length === 1 && (character === '\n' || character === '\r'))
|
|
108
|
+
return at;
|
|
109
|
+
if (text.startsWith(delimiter, scan))
|
|
110
|
+
return scan + delimiter.length;
|
|
111
|
+
}
|
|
112
|
+
return at;
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* End of the `COMMENT ::= '//' ~NEWLINE*` starting at `at`, or `at` for none.
|
|
116
|
+
*
|
|
117
|
+
* The comment stops BEFORE its newline, so masking one never disturbs the line
|
|
118
|
+
* structure of a multi-line expression.
|
|
119
|
+
*
|
|
120
|
+
* Exported as the comment half of this lexis, the sibling of
|
|
121
|
+
* {@link celStringLiteralEnd}, for callers that walk a REGION of CEL rather
|
|
122
|
+
* than a whole expression and so cannot use the whole-text masks below. Such a
|
|
123
|
+
* caller owes itself the ordering rule {@link celLiteralRegions} encodes: ask
|
|
124
|
+
* this question and the string question at the same index, in one source-ordered
|
|
125
|
+
* walk, so that a `//` inside a literal opens no comment and a quote inside a
|
|
126
|
+
* comment opens no literal.
|
|
127
|
+
*/
|
|
128
|
+
export function celLineCommentEnd(text, at) {
|
|
129
|
+
if (text[at] !== '/' || text[at + 1] !== '/')
|
|
130
|
+
return at;
|
|
131
|
+
const newline = text.slice(at).search(/[\r\n]/);
|
|
132
|
+
return newline < 0 ? text.length : at + newline;
|
|
133
|
+
}
|
|
134
|
+
/**
|
|
135
|
+
* Locate every closed string literal AND every line comment, in ONE
|
|
136
|
+
* source-ordered walk.
|
|
137
|
+
*
|
|
138
|
+
* Two orderings are what a strings-only scan gets wrong, and both fall out of
|
|
139
|
+
* walking in source order: a `//` INSIDE a string literal is part of the
|
|
140
|
+
* literal and opens no comment (`"a // b"` is a string), and a quote INSIDE a
|
|
141
|
+
* comment is part of the comment and opens no literal (`// it's` does not open
|
|
142
|
+
* one, where a strings-only scan would flip the masking of everything after
|
|
143
|
+
* that apostrophe).
|
|
144
|
+
*/
|
|
145
|
+
function celLiteralRegions(expression) {
|
|
146
|
+
const regions = [];
|
|
147
|
+
let index = 0;
|
|
148
|
+
while (index < expression.length) {
|
|
149
|
+
const commentEnd = celLineCommentEnd(expression, index);
|
|
150
|
+
if (commentEnd > index) {
|
|
151
|
+
regions.push({ kind: 'comment', start: index, end: commentEnd });
|
|
152
|
+
index = commentEnd;
|
|
153
|
+
continue;
|
|
154
|
+
}
|
|
155
|
+
const literalEnd = celStringLiteralEnd(expression, index);
|
|
156
|
+
if (literalEnd > index) {
|
|
157
|
+
regions.push({ kind: 'string', start: index, end: literalEnd });
|
|
158
|
+
index = literalEnd;
|
|
159
|
+
continue;
|
|
160
|
+
}
|
|
161
|
+
if (CEL_IDENT_START.test(expression[index])) {
|
|
162
|
+
index += 1;
|
|
163
|
+
while (index < expression.length && IDENT_CHARACTER.test(expression[index])) {
|
|
164
|
+
index += 1;
|
|
165
|
+
}
|
|
166
|
+
continue;
|
|
167
|
+
}
|
|
168
|
+
index += 1;
|
|
169
|
+
}
|
|
170
|
+
return regions;
|
|
171
|
+
}
|
|
172
|
+
/** Blank `regions` out of `expression`, one space per UTF-16 code unit. */
|
|
173
|
+
function blankRegions(expression, regions) {
|
|
174
|
+
if (regions.length === 0)
|
|
175
|
+
return expression;
|
|
176
|
+
const characters = expression.split('');
|
|
177
|
+
for (const region of regions) {
|
|
178
|
+
for (let index = region.start; index < region.end; index += 1) {
|
|
179
|
+
characters[index] = ' ';
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
return characters.join('');
|
|
183
|
+
}
|
|
184
|
+
/**
|
|
185
|
+
* Locate every CLOSED CEL string literal in `expression`, in source order.
|
|
186
|
+
*
|
|
187
|
+
* The whole `STRING_LIT`/`BYTES_LIT` family is recognised — `r`/`R`/`b`/`B`
|
|
188
|
+
* prefixes in either order, the two triple-quoted forms, escapes in the non-raw
|
|
189
|
+
* forms — and the span INCLUDES the prefix letters, because they are part of
|
|
190
|
+
* the token.
|
|
191
|
+
*
|
|
192
|
+
* The walk is source-ordered and consumes an `IDENT` whole, which is what keeps
|
|
193
|
+
* a prefix letter that merely ENDS an identifier from opening a literal:
|
|
194
|
+
* `ab"x"` is the identifier `ab` followed by a string, never a bytes literal.
|
|
195
|
+
* Restarting the scan at every character cannot make that distinction. A quote
|
|
196
|
+
* inside a `//` comment opens no literal — see {@link celLiteralRegions}.
|
|
197
|
+
*
|
|
198
|
+
* A quote that is never terminated is NOT reported as a literal: callers run
|
|
199
|
+
* over text that is not always well-formed CEL — marker-laden strings derived
|
|
200
|
+
* from template literals may carry a bare apostrophe (`it's ready`) — and
|
|
201
|
+
* swallowing the rest of such a string would silently suppress substitutions
|
|
202
|
+
* in real expression text. Offsets index UTF-16 code units so a caller can
|
|
203
|
+
* splice by them.
|
|
204
|
+
*/
|
|
205
|
+
export function celStringLiteralSpans(expression) {
|
|
206
|
+
return celLiteralRegions(expression)
|
|
207
|
+
.filter((region) => region.kind === 'string')
|
|
208
|
+
.map(({ start, end }) => ({ start, end }));
|
|
209
|
+
}
|
|
210
|
+
/**
|
|
211
|
+
* Blank out every CLOSED CEL string literal AND every `//` line comment.
|
|
212
|
+
*
|
|
213
|
+
* This is what a scanner that REWRITES an expression must read: a token inside
|
|
214
|
+
* quoted data is not a reference, and neither is one inside a comment. Offsets
|
|
215
|
+
* and length are preserved exactly — one space per UTF-16 code unit, newlines
|
|
216
|
+
* left in place — so a caller may match over the masked copy and splice
|
|
217
|
+
* replacements into the original text at the reported offsets.
|
|
218
|
+
*/
|
|
219
|
+
export function maskClosedCelLiteralsAndComments(expression) {
|
|
220
|
+
return blankRegions(expression, celLiteralRegions(expression));
|
|
221
|
+
}
|
|
28
222
|
/**
|
|
29
223
|
* Locate each lexical CEL collection-macro body without treating a lambda
|
|
30
224
|
* identifier as expression-global.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cel-lexical-scanner.js","sourceRoot":"","sources":["../../../src/core/references/cel-lexical-scanner.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"cel-lexical-scanner.js","sourceRoot":"","sources":["../../../src/core/references/cel-lexical-scanner.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { CelExpression, RefOrValue } from '../types.js';
|
|
1
|
+
import type { CelExpression, KubernetesRef, RefOrValue } from '../types.js';
|
|
2
2
|
/**
|
|
3
3
|
* Build a CEL expression from parts. Accepts resource references (`schema.spec.*`,
|
|
4
4
|
* `resources.*.status.*`), other CEL expressions, and literal strings/numbers/booleans.
|
|
@@ -118,6 +118,240 @@ declare function cond<T = unknown>(condition: RefOrValue<unknown>, trueValue: Re
|
|
|
118
118
|
*/
|
|
119
119
|
declare function defaultValue<T extends CelValue>(value: RefOrValue<T>, fallback: RefOrValue<NonNullable<T>>): CelExpression<NonNullable<T>> & NonNullable<T>;
|
|
120
120
|
declare function defaultValue<T extends object | null | undefined>(value: RefOrValue<T>, fallback: RefOrValue<NonNullable<T>>): CelExpression<NonNullable<T>> & NonNullable<T>;
|
|
121
|
+
declare const UNSAFE_CEL_LIST_PATH: unique symbol;
|
|
122
|
+
/**
|
|
123
|
+
* A CEL path to a list, written out by hand instead of selected.
|
|
124
|
+
*
|
|
125
|
+
* Produced only by {@link unsafeListPath}. It is a distinct type rather than a
|
|
126
|
+
* bare `string` so that the guarded-list helpers can accept a hand-written path
|
|
127
|
+
* where one is genuinely needed, while still rejecting an arbitrary string that
|
|
128
|
+
* was passed by mistake.
|
|
129
|
+
*/
|
|
130
|
+
export interface UnsafeCelListPath<TElement = unknown> {
|
|
131
|
+
readonly [UNSAFE_CEL_LIST_PATH]: string;
|
|
132
|
+
/** Phantom: carries the declared element type, never present at runtime. */
|
|
133
|
+
readonly __element?: TElement;
|
|
134
|
+
}
|
|
135
|
+
/**
|
|
136
|
+
* A selectable reference to a list-typed field.
|
|
137
|
+
*
|
|
138
|
+
* The ordinary way to produce one is to read the field off a resource or schema
|
|
139
|
+
* proxy — `service.status.loadBalancer.ingress` — which gives the helpers both
|
|
140
|
+
* the CEL path and the element type. `TElement` is inferred from it, so the
|
|
141
|
+
* `field` argument can be checked against the element's own keys.
|
|
142
|
+
*
|
|
143
|
+
* A hand-written path is accepted only in the {@link UnsafeCelListPath} form, so
|
|
144
|
+
* it has to be asked for by name.
|
|
145
|
+
*/
|
|
146
|
+
export type CelListSelector<TElement> = readonly TElement[] | undefined | KubernetesRef<readonly TElement[]> | KubernetesRef<readonly TElement[] | undefined> | UnsafeCelListPath<TElement>;
|
|
147
|
+
/**
|
|
148
|
+
* What projecting `TField` off an entry of a `TElement` list yields.
|
|
149
|
+
*
|
|
150
|
+
* Written out rather than left as an inferrable type parameter on purpose: a
|
|
151
|
+
* free `TResult` would be inferred from the *contextual* type at the call site —
|
|
152
|
+
* the status field's own declared type — so a loosely typed status field would
|
|
153
|
+
* silently widen the projection back to whatever it declares, which is exactly
|
|
154
|
+
* the type safety this signature exists to provide.
|
|
155
|
+
*/
|
|
156
|
+
export type CelFieldProjection<TElement, TField extends keyof TElement> = CelExpression<NonNullable<TElement[TField]>> & NonNullable<TElement[TField]>;
|
|
157
|
+
/** What projecting the first entry of a `TElement` list yields. */
|
|
158
|
+
export type CelEntryProjection<TElement> = CelExpression<NonNullable<TElement>> & NonNullable<TElement>;
|
|
159
|
+
/**
|
|
160
|
+
* The trailing `fallback` parameter of a projection helper, constrained to the
|
|
161
|
+
* type being projected.
|
|
162
|
+
*
|
|
163
|
+
* Two things are being said at once, which is why this is a parameter *list*
|
|
164
|
+
* rather than a parameter type:
|
|
165
|
+
*
|
|
166
|
+
* - **The fallback has the projected type.** A projection is typed as the field
|
|
167
|
+
* it projects, so a fallback of any other type makes that type a lie. Worse,
|
|
168
|
+
* the helpers emit the fallback as the `else` branch of a CEL ternary, and a
|
|
169
|
+
* ternary whose branches have different types is rejected outright by cel-go
|
|
170
|
+
* when KRO admits the ResourceGraphDefinition — while cel-js evaluates it
|
|
171
|
+
* happily, so the mismatch survives every direct-mode test and surfaces only
|
|
172
|
+
* on a cluster.
|
|
173
|
+
* - **The default is available exactly where the projected type admits it.**
|
|
174
|
+
* The default is not "some string", it is the empty string, so the question
|
|
175
|
+
* is `'' extends T` — whether `''` itself is assignable to `T`. The narrower
|
|
176
|
+
* `string extends T` asks whether `T` admits *any* string, which is a
|
|
177
|
+
* different question and the wrong one: a literal union like
|
|
178
|
+
* `'' | 'Ready' | 'Failed'` admits the default perfectly well, yet fails
|
|
179
|
+
* `string extends T` and so used to force the author to restate `''` by hand.
|
|
180
|
+
* The two tests agree everywhere else that matters — both true for `string`
|
|
181
|
+
* and for a union containing it, both false for `number`, for `boolean`, for
|
|
182
|
+
* a string-literal union `''` is not a member of, and for a template-literal
|
|
183
|
+
* type such as `` `${number}px` `` that no empty string inhabits. Where the
|
|
184
|
+
* test is false the argument is required, so a numeric field with no fallback
|
|
185
|
+
* is a compile error rather than a silent `''` that KRO will reject.
|
|
186
|
+
*
|
|
187
|
+
* `RefOrValue` is kept, so a `KubernetesRef` or a CEL expression of the right
|
|
188
|
+
* type is still accepted in place of a literal.
|
|
189
|
+
*
|
|
190
|
+
* **Structured projections are included in all of this.** A projection of an
|
|
191
|
+
* object- or list-typed field takes an object or array fallback, `{}` and `[]`
|
|
192
|
+
* included, and it is rendered as the CEL map or list literal of that shape —
|
|
193
|
+
* see {@link projectionFallback}. Nothing special is needed at the type level to
|
|
194
|
+
* say so, and that is the point: `''` is not assignable to an object type, so
|
|
195
|
+
* such a projection requires its fallback, and neither `null` nor `undefined` is
|
|
196
|
+
* assignable to `RefOrValue<T>` for a `NonNullable` `T`, so neither can be
|
|
197
|
+
* passed. The runtime rejects `null` as well, for callers with no types.
|
|
198
|
+
*/
|
|
199
|
+
export type CelFallbackArgs<T> = '' extends T ? [fallback?: RefOrValue<T>] : [fallback: RefOrValue<T>];
|
|
200
|
+
/**
|
|
201
|
+
* Name a list by its CEL path, when there is no proxy to select it from.
|
|
202
|
+
*
|
|
203
|
+
* **Unsafe** in one specific sense: nothing checks the path. Not that the named
|
|
204
|
+
* resource is in the graph, not that the path reaches a list, and not that the
|
|
205
|
+
* elements are what `TElement` says they are. Get any of that wrong and the
|
|
206
|
+
* mistake surfaces on a cluster rather than at compile time, which is exactly
|
|
207
|
+
* what selecting the field off a proxy avoids.
|
|
208
|
+
*
|
|
209
|
+
* Reach for it only where the proxy genuinely is not in scope — a bootstrap
|
|
210
|
+
* composition that names a graph resource by id because the resource is created
|
|
211
|
+
* by a Helm chart rather than declared in the composition, for instance. The
|
|
212
|
+
* element type is still declared and still checked, so `field` keeps its
|
|
213
|
+
* `keyof` check even here.
|
|
214
|
+
*
|
|
215
|
+
* @example
|
|
216
|
+
* ```typescript
|
|
217
|
+
* // The Gateway is created by its controller; only its resource id is in scope.
|
|
218
|
+
* Cel.firstWhereHas(
|
|
219
|
+
* Cel.unsafeListPath<{ value: string }>(`${resourceId}.status.addresses`),
|
|
220
|
+
* 'value'
|
|
221
|
+
* )
|
|
222
|
+
* ```
|
|
223
|
+
*/
|
|
224
|
+
declare function unsafeListPath<TElement = unknown>(path: string): UnsafeCelListPath<TElement>;
|
|
225
|
+
/**
|
|
226
|
+
* Project the first entry of an optional nested list that actually carries a
|
|
227
|
+
* field, in the one CEL form both engines accept.
|
|
228
|
+
*
|
|
229
|
+
* ## Why this helper exists
|
|
230
|
+
*
|
|
231
|
+
* An optional nested list — `service.status.loadBalancer.ingress`,
|
|
232
|
+
* `helmRelease.status.history` — is absent until a controller fills it in, and
|
|
233
|
+
* the two CEL engines TypeKro emits for disagree about how to guard it:
|
|
234
|
+
*
|
|
235
|
+
* - **`has()` on an index expression** (`has(list[0].field)`) is rejected by
|
|
236
|
+
* cel-js: "has() does not support atomic expressions".
|
|
237
|
+
* - **`"field" in list[0]`** is rejected by cel-go under KRO's type env, which
|
|
238
|
+
* types a list entry as a message rather than a map.
|
|
239
|
+
* - **A `has()` guard on the *right* of `&&`** (`size(list) > 0 && has(list)`)
|
|
240
|
+
* is absorbed by cel-go but propagates in cel-js, which evaluates operands
|
|
241
|
+
* left to right.
|
|
242
|
+
*
|
|
243
|
+
* The form both engines accept is `list.filter(entry, has(entry.field))` inside
|
|
244
|
+
* a **lazy ternary**, which is exactly what this helper emits:
|
|
245
|
+
*
|
|
246
|
+
* ```
|
|
247
|
+
* has(a.status) && has(a.status.list)
|
|
248
|
+
* ? (size(<matching>) > 0 ? <matching>[0].<field> : <fallback>)
|
|
249
|
+
* : <fallback>
|
|
250
|
+
* ```
|
|
251
|
+
*
|
|
252
|
+
* ## Selecting the list
|
|
253
|
+
*
|
|
254
|
+
* `list` is a list-typed field read off a resource or schema proxy, which gives
|
|
255
|
+
* this helper the element type and lets `field` be checked against the element's
|
|
256
|
+
* own keys — `Cel.firstWhereHas(service.status.loadBalancer.ingress, 'hostnmae')`
|
|
257
|
+
* is a compile error rather than a status field that is permanently `''`. Where
|
|
258
|
+
* no proxy is in scope, name the path with {@link unsafeListPath}.
|
|
259
|
+
*
|
|
260
|
+
* @param list The list to read, selected from a resource or schema proxy.
|
|
261
|
+
* @param field The field an entry must carry to be selected. Must be a key of
|
|
262
|
+
* the list's element type.
|
|
263
|
+
* @param fallback Value used when the list is absent, empty, or has no entry
|
|
264
|
+
* carrying `field`. Has the type of the projected field — both because the
|
|
265
|
+
* projection is typed as that field, and because cel-go rejects a ternary
|
|
266
|
+
* whose branches disagree. Defaults to the empty string only where that field
|
|
267
|
+
* type admits `''`; elsewhere it is required, structured fields included — an
|
|
268
|
+
* object- or list-typed field takes an object or array literal, a
|
|
269
|
+
* `KubernetesRef`, or a CEL expression of that type. See
|
|
270
|
+
* {@link CelFallbackArgs} and {@link projectionFallback}.
|
|
271
|
+
*
|
|
272
|
+
* @example
|
|
273
|
+
* ```typescript
|
|
274
|
+
* // First ingress entry that reports a hostname, or '' while none does.
|
|
275
|
+
* hostname: Cel.firstWhereHas(service.status.loadBalancer.ingress, 'hostname')
|
|
276
|
+
*
|
|
277
|
+
* // Naming a graph resource by id, as bootstrap compositions do.
|
|
278
|
+
* version: Cel.firstWhereHas(
|
|
279
|
+
* Cel.unsafeListPath<{ chartVersion: string }>('release.status.history'),
|
|
280
|
+
* 'chartVersion'
|
|
281
|
+
* )
|
|
282
|
+
* ```
|
|
283
|
+
*/
|
|
284
|
+
declare function firstWhereHas<TElement extends object, TField extends Extract<keyof TElement, string>>(list: CelListSelector<TElement>, field: TField, ...fallback: CelFallbackArgs<NonNullable<TElement[TField]>>): CelFieldProjection<TElement, TField>;
|
|
285
|
+
/**
|
|
286
|
+
* First entry of an optional nested list of scalars, with the same
|
|
287
|
+
* dual-dialect-safe guard as {@link firstWhereHas}.
|
|
288
|
+
*
|
|
289
|
+
* Use this when list entries are plain values (`status.endpoints.secure` is a
|
|
290
|
+
* list of URLs) and there is therefore no field to filter on. Every hop of the
|
|
291
|
+
* path is guarded, so an absent intermediate object yields the fallback instead
|
|
292
|
+
* of the cel-js "Identifier not found" error that a single `has()` on the full
|
|
293
|
+
* path produces.
|
|
294
|
+
*
|
|
295
|
+
* As with {@link firstWhereHas}, the list is selected from a resource or schema
|
|
296
|
+
* proxy; a hand-written path has to go through {@link unsafeListPath}.
|
|
297
|
+
*
|
|
298
|
+
* @param list The list to read, selected from a resource or schema proxy.
|
|
299
|
+
* @param fallback Value used when the list is absent or empty. Has the element
|
|
300
|
+
* type, and is optional only where that type admits `''` — so a list of
|
|
301
|
+
* objects requires an object fallback. See {@link CelFallbackArgs} and
|
|
302
|
+
* {@link projectionFallback}.
|
|
303
|
+
*
|
|
304
|
+
* @example
|
|
305
|
+
* ```typescript
|
|
306
|
+
* endpoint: Cel.firstOf(Cel.unsafeListPath<string>('objectStore.status.endpoints.secure'))
|
|
307
|
+
* ```
|
|
308
|
+
*/
|
|
309
|
+
declare function firstOf<TElement>(list: CelListSelector<TElement>, ...fallback: CelFallbackArgs<NonNullable<TElement>>): CelEntryProjection<TElement>;
|
|
310
|
+
/** One entry of a Service's `status.loadBalancer.ingress`. */
|
|
311
|
+
export interface LoadBalancerIngressEntry {
|
|
312
|
+
readonly ip?: string | undefined;
|
|
313
|
+
readonly hostname?: string | undefined;
|
|
314
|
+
}
|
|
315
|
+
/**
|
|
316
|
+
* A Service whose `status.loadBalancer.ingress` can be projected.
|
|
317
|
+
*
|
|
318
|
+
* The Service itself, selected from the graph — not its resource id. Where only
|
|
319
|
+
* the id is in scope, project the ingress list directly with
|
|
320
|
+
* {@link firstWhereHas} over a {@link unsafeListPath}.
|
|
321
|
+
*/
|
|
322
|
+
export interface LoadBalancerServiceRef {
|
|
323
|
+
readonly status: {
|
|
324
|
+
readonly loadBalancer: {
|
|
325
|
+
readonly ingress?: readonly LoadBalancerIngressEntry[] | undefined;
|
|
326
|
+
};
|
|
327
|
+
};
|
|
328
|
+
}
|
|
329
|
+
/**
|
|
330
|
+
* Project a Service's load balancer address in the one CEL form both engines
|
|
331
|
+
* accept.
|
|
332
|
+
*
|
|
333
|
+
* A `LoadBalancer` Service reports its address as `status.loadBalancer.ingress`,
|
|
334
|
+
* a list that does not exist until the cloud provider assigns one, and whose
|
|
335
|
+
* entries carry `ip` **or** `hostname` depending on the provider. This is
|
|
336
|
+
* {@link firstWhereHas} bound to that shape, so factories stop hand-rolling the
|
|
337
|
+
* guard.
|
|
338
|
+
*
|
|
339
|
+
* Yields the fallback (default `''`) while the Service has no address, and for
|
|
340
|
+
* the field the provider does not report.
|
|
341
|
+
*
|
|
342
|
+
* @param service The Service resource, selected from the graph.
|
|
343
|
+
* @param field `'ip'` for L4 load balancers, `'hostname'` for name-based ones.
|
|
344
|
+
* @param fallback Value while no matching entry exists. Defaults to `''`.
|
|
345
|
+
*
|
|
346
|
+
* @example
|
|
347
|
+
* ```typescript
|
|
348
|
+
* loadBalancer: {
|
|
349
|
+
* ip: Cel.loadBalancerAddress(gatewayService, 'ip'),
|
|
350
|
+
* hostname: Cel.loadBalancerAddress(gatewayService, 'hostname'),
|
|
351
|
+
* }
|
|
352
|
+
* ```
|
|
353
|
+
*/
|
|
354
|
+
declare function loadBalancerAddress(service: LoadBalancerServiceRef, field?: 'ip' | 'hostname', fallback?: RefOrValue<string>): CelExpression<string> & string;
|
|
121
355
|
/**
|
|
122
356
|
* Creates a mixed string template that combines literal strings with CEL expressions
|
|
123
357
|
*
|
|
@@ -191,6 +425,20 @@ export declare const Cel: {
|
|
|
191
425
|
concat: typeof concat;
|
|
192
426
|
has: typeof has;
|
|
193
427
|
not: typeof not;
|
|
428
|
+
/**
|
|
429
|
+
* First entry of an optional nested list that carries `field`, in the one
|
|
430
|
+
* guard form cel-js and cel-go both accept.
|
|
431
|
+
*/
|
|
432
|
+
firstWhereHas: typeof firstWhereHas;
|
|
433
|
+
/** First entry of an optional nested list of scalars, dual-dialect safe. */
|
|
434
|
+
firstOf: typeof firstOf;
|
|
435
|
+
/**
|
|
436
|
+
* Name a list by its CEL path where no proxy is in scope. Nothing about the
|
|
437
|
+
* path is checked — prefer selecting the field off a resource or schema proxy.
|
|
438
|
+
*/
|
|
439
|
+
unsafeListPath: typeof unsafeListPath;
|
|
440
|
+
/** A Service's load balancer `ip`/`hostname`, dual-dialect safe. */
|
|
441
|
+
loadBalancerAddress: typeof loadBalancerAddress;
|
|
194
442
|
/** Tagged template literal for CEL expressions. Alias: standalone `cel` export. */
|
|
195
443
|
tag: typeof cel;
|
|
196
444
|
/** Create a boolean CEL expression. Shorthand for Cel.expr<boolean>(...). */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cel.d.ts","sourceRoot":"","sources":["../../../src/core/references/cel.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"cel.d.ts","sourceRoot":"","sources":["../../../src/core/references/cel.ts"],"names":[],"mappings":"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"}
|