typekro 0.5.0 → 0.8.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 +1 -1
- package/dist/compositions/typekro-runtime/typekro-runtime.d.ts.map +1 -1
- package/dist/compositions/typekro-runtime/typekro-runtime.js +16 -2
- package/dist/compositions/typekro-runtime/typekro-runtime.js.map +1 -1
- package/dist/core/composition/context.d.ts +14 -0
- package/dist/core/composition/context.d.ts.map +1 -1
- package/dist/core/composition/context.js.map +1 -1
- package/dist/core/composition/imperative.d.ts.map +1 -1
- package/dist/core/composition/imperative.js +59 -30
- package/dist/core/composition/imperative.js.map +1 -1
- package/dist/core/composition/nested-status-cel.d.ts +50 -0
- package/dist/core/composition/nested-status-cel.d.ts.map +1 -0
- package/dist/core/composition/nested-status-cel.js +169 -0
- package/dist/core/composition/nested-status-cel.js.map +1 -0
- package/dist/core/constants/brands.d.ts +1 -1
- package/dist/core/constants/brands.d.ts.map +1 -1
- package/dist/core/constants/brands.js +1 -1
- package/dist/core/constants/brands.js.map +1 -1
- package/dist/core/containers/build.d.ts +50 -0
- package/dist/core/containers/build.d.ts.map +1 -0
- package/dist/core/containers/build.js +146 -0
- package/dist/core/containers/build.js.map +1 -0
- package/dist/core/containers/errors.d.ts +14 -0
- package/dist/core/containers/errors.d.ts.map +1 -0
- package/dist/core/containers/errors.js +48 -0
- package/dist/core/containers/errors.js.map +1 -0
- package/dist/core/containers/exec.d.ts +36 -0
- package/dist/core/containers/exec.d.ts.map +1 -0
- package/dist/core/containers/exec.js +110 -0
- package/dist/core/containers/exec.js.map +1 -0
- package/dist/core/containers/index.d.ts +21 -0
- package/dist/core/containers/index.d.ts.map +1 -0
- package/dist/core/containers/index.js +20 -0
- package/dist/core/containers/index.js.map +1 -0
- package/dist/core/containers/registries/ecr.d.ts +22 -0
- package/dist/core/containers/registries/ecr.d.ts.map +1 -0
- package/dist/core/containers/registries/ecr.js +118 -0
- package/dist/core/containers/registries/ecr.js.map +1 -0
- package/dist/core/containers/registries/index.d.ts +9 -0
- package/dist/core/containers/registries/index.d.ts.map +1 -0
- package/dist/core/containers/registries/index.js +23 -0
- package/dist/core/containers/registries/index.js.map +1 -0
- package/dist/core/containers/registries/orbstack.d.ts +14 -0
- package/dist/core/containers/registries/orbstack.d.ts.map +1 -0
- package/dist/core/containers/registries/orbstack.js +24 -0
- package/dist/core/containers/registries/orbstack.js.map +1 -0
- package/dist/core/containers/registries/types.d.ts +94 -0
- package/dist/core/containers/registries/types.d.ts.map +1 -0
- package/dist/core/containers/registries/types.js +11 -0
- package/dist/core/containers/registries/types.js.map +1 -0
- package/dist/core/dependencies/graph.d.ts +4 -0
- package/dist/core/dependencies/graph.d.ts.map +1 -1
- package/dist/core/dependencies/graph.js +6 -0
- package/dist/core/dependencies/graph.js.map +1 -1
- package/dist/core/dependencies/resolver.d.ts +28 -0
- package/dist/core/dependencies/resolver.d.ts.map +1 -1
- package/dist/core/dependencies/resolver.js +138 -5
- package/dist/core/dependencies/resolver.js.map +1 -1
- package/dist/core/deployment/direct-factory.d.ts +13 -0
- package/dist/core/deployment/direct-factory.d.ts.map +1 -1
- package/dist/core/deployment/direct-factory.js +99 -0
- package/dist/core/deployment/direct-factory.js.map +1 -1
- package/dist/core/deployment/engine.d.ts.map +1 -1
- package/dist/core/deployment/engine.js +45 -2
- package/dist/core/deployment/engine.js.map +1 -1
- package/dist/core/deployment/kro-factory.d.ts +28 -0
- package/dist/core/deployment/kro-factory.d.ts.map +1 -1
- package/dist/core/deployment/kro-factory.js +243 -13
- package/dist/core/deployment/kro-factory.js.map +1 -1
- package/dist/core/deployment/kro-readiness.d.ts.map +1 -1
- package/dist/core/deployment/kro-readiness.js +10 -1
- package/dist/core/deployment/kro-readiness.js.map +1 -1
- package/dist/core/deployment/nested-composition-status.d.ts +33 -0
- package/dist/core/deployment/nested-composition-status.d.ts.map +1 -0
- package/dist/core/deployment/nested-composition-status.js +101 -0
- package/dist/core/deployment/nested-composition-status.js.map +1 -0
- package/dist/core/deployment/readiness-waiter.d.ts.map +1 -1
- package/dist/core/deployment/readiness-waiter.js +23 -6
- package/dist/core/deployment/readiness-waiter.js.map +1 -1
- package/dist/core/deployment/rollback-manager.d.ts.map +1 -1
- package/dist/core/deployment/rollback-manager.js +19 -0
- package/dist/core/deployment/rollback-manager.js.map +1 -1
- package/dist/core/deployment/strategies/direct-strategy.d.ts +6 -0
- package/dist/core/deployment/strategies/direct-strategy.d.ts.map +1 -1
- package/dist/core/deployment/strategies/direct-strategy.js +133 -35
- package/dist/core/deployment/strategies/direct-strategy.js.map +1 -1
- package/dist/core/expressions/composition/composition-analyzer-helpers.d.ts +8 -2
- package/dist/core/expressions/composition/composition-analyzer-helpers.d.ts.map +1 -1
- package/dist/core/expressions/composition/composition-analyzer-helpers.js +34 -2
- package/dist/core/expressions/composition/composition-analyzer-helpers.js.map +1 -1
- package/dist/core/expressions/composition/composition-analyzer-ternary.d.ts.map +1 -1
- package/dist/core/expressions/composition/composition-analyzer-ternary.js +52 -28
- package/dist/core/expressions/composition/composition-analyzer-ternary.js.map +1 -1
- package/dist/core/expressions/composition/composition-analyzer-traversal.d.ts.map +1 -1
- package/dist/core/expressions/composition/composition-analyzer-traversal.js +11 -4
- package/dist/core/expressions/composition/composition-analyzer-traversal.js.map +1 -1
- package/dist/core/expressions/composition/composition-analyzer-types.d.ts +8 -0
- package/dist/core/expressions/composition/composition-analyzer-types.d.ts.map +1 -1
- package/dist/core/expressions/composition/composition-analyzer.d.ts +1 -1
- package/dist/core/expressions/composition/composition-analyzer.d.ts.map +1 -1
- package/dist/core/expressions/composition/composition-analyzer.js +8 -2
- package/dist/core/expressions/composition/composition-analyzer.js.map +1 -1
- package/dist/core/expressions/composition/imperative-analyzer.d.ts +8 -0
- package/dist/core/expressions/composition/imperative-analyzer.d.ts.map +1 -1
- package/dist/core/expressions/composition/imperative-analyzer.js +111 -16
- package/dist/core/expressions/composition/imperative-analyzer.js.map +1 -1
- package/dist/core/metadata/resource-metadata.d.ts +4 -0
- package/dist/core/metadata/resource-metadata.d.ts.map +1 -1
- package/dist/core/metadata/resource-metadata.js.map +1 -1
- package/dist/core/proxy/create-resource.d.ts.map +1 -1
- package/dist/core/proxy/create-resource.js +63 -21
- package/dist/core/proxy/create-resource.js.map +1 -1
- package/dist/core/references/cel.d.ts +48 -0
- package/dist/core/references/cel.d.ts.map +1 -1
- package/dist/core/references/cel.js +82 -0
- package/dist/core/references/cel.js.map +1 -1
- package/dist/core/references/external-refs.d.ts +2 -0
- package/dist/core/references/external-refs.d.ts.map +1 -1
- package/dist/core/references/external-refs.js +3 -0
- package/dist/core/references/external-refs.js.map +1 -1
- package/dist/core/references/resolver.d.ts +12 -4
- package/dist/core/references/resolver.d.ts.map +1 -1
- package/dist/core/references/resolver.js +152 -69
- package/dist/core/references/resolver.js.map +1 -1
- package/dist/core/references/schema-proxy.d.ts.map +1 -1
- package/dist/core/references/schema-proxy.js +5 -4
- package/dist/core/references/schema-proxy.js.map +1 -1
- package/dist/core/serialization/cel-references.d.ts +1 -1
- package/dist/core/serialization/cel-references.d.ts.map +1 -1
- package/dist/core/serialization/cel-references.js +191 -24
- package/dist/core/serialization/cel-references.js.map +1 -1
- package/dist/core/serialization/core.d.ts +8 -1
- package/dist/core/serialization/core.d.ts.map +1 -1
- package/dist/core/serialization/core.js +434 -7
- package/dist/core/serialization/core.js.map +1 -1
- package/dist/core/serialization/kro-post-processing.d.ts +46 -0
- package/dist/core/serialization/kro-post-processing.d.ts.map +1 -0
- package/dist/core/serialization/kro-post-processing.js +103 -0
- package/dist/core/serialization/kro-post-processing.js.map +1 -0
- package/dist/core/serialization/schema.d.ts +61 -3
- package/dist/core/serialization/schema.d.ts.map +1 -1
- package/dist/core/serialization/schema.js +520 -18
- package/dist/core/serialization/schema.js.map +1 -1
- package/dist/core/serialization/status-analysis-pipeline.d.ts +4 -0
- package/dist/core/serialization/status-analysis-pipeline.d.ts.map +1 -1
- package/dist/core/serialization/status-analysis-pipeline.js +127 -10
- package/dist/core/serialization/status-analysis-pipeline.js.map +1 -1
- package/dist/core/serialization/yaml.d.ts.map +1 -1
- package/dist/core/serialization/yaml.js +27 -4
- package/dist/core/serialization/yaml.js.map +1 -1
- package/dist/core/types/composable.d.ts +62 -0
- package/dist/core/types/composable.d.ts.map +1 -0
- package/dist/core/types/composable.js +51 -0
- package/dist/core/types/composable.js.map +1 -0
- package/dist/core/types/deployment.d.ts +2 -1
- package/dist/core/types/deployment.d.ts.map +1 -1
- package/dist/core/types/index.d.ts +1 -0
- package/dist/core/types/index.d.ts.map +1 -1
- package/dist/core/types/index.js +1 -0
- package/dist/core/types/index.js.map +1 -1
- package/dist/core/types/serialization.d.ts +40 -1
- package/dist/core/types/serialization.d.ts.map +1 -1
- package/dist/core/validation/cel-validator.d.ts.map +1 -1
- package/dist/core/validation/cel-validator.js +55 -31
- package/dist/core/validation/cel-validator.js.map +1 -1
- package/dist/factories/cnpg/compositions/cnpg-bootstrap.d.ts +55 -0
- package/dist/factories/cnpg/compositions/cnpg-bootstrap.d.ts.map +1 -0
- package/dist/factories/cnpg/compositions/cnpg-bootstrap.js +92 -0
- package/dist/factories/cnpg/compositions/cnpg-bootstrap.js.map +1 -0
- package/dist/factories/cnpg/compositions/index.d.ts +2 -0
- package/dist/factories/cnpg/compositions/index.d.ts.map +1 -0
- package/dist/factories/cnpg/compositions/index.js +2 -0
- package/dist/factories/cnpg/compositions/index.js.map +1 -0
- package/dist/factories/cnpg/index.d.ts +42 -0
- package/dist/factories/cnpg/index.d.ts.map +1 -0
- package/dist/factories/cnpg/index.js +42 -0
- package/dist/factories/cnpg/index.js.map +1 -0
- package/dist/factories/cnpg/resources/backup.d.ts +34 -0
- package/dist/factories/cnpg/resources/backup.d.ts.map +1 -0
- package/dist/factories/cnpg/resources/backup.js +87 -0
- package/dist/factories/cnpg/resources/backup.js.map +1 -0
- package/dist/factories/cnpg/resources/cluster.d.ts +55 -0
- package/dist/factories/cnpg/resources/cluster.d.ts.map +1 -0
- package/dist/factories/cnpg/resources/cluster.js +123 -0
- package/dist/factories/cnpg/resources/cluster.js.map +1 -0
- package/dist/factories/cnpg/resources/helm.d.ts +45 -0
- package/dist/factories/cnpg/resources/helm.d.ts.map +1 -0
- package/dist/factories/cnpg/resources/helm.js +78 -0
- package/dist/factories/cnpg/resources/helm.js.map +1 -0
- package/dist/factories/cnpg/resources/index.d.ts +6 -0
- package/dist/factories/cnpg/resources/index.d.ts.map +1 -0
- package/dist/factories/cnpg/resources/index.js +6 -0
- package/dist/factories/cnpg/resources/index.js.map +1 -0
- package/dist/factories/cnpg/resources/pooler.d.ts +38 -0
- package/dist/factories/cnpg/resources/pooler.d.ts.map +1 -0
- package/dist/factories/cnpg/resources/pooler.js +97 -0
- package/dist/factories/cnpg/resources/pooler.js.map +1 -0
- package/dist/factories/cnpg/resources/scheduled-backup.d.ts +35 -0
- package/dist/factories/cnpg/resources/scheduled-backup.d.ts.map +1 -0
- package/dist/factories/cnpg/resources/scheduled-backup.js +68 -0
- package/dist/factories/cnpg/resources/scheduled-backup.js.map +1 -0
- package/dist/factories/cnpg/types.d.ts +507 -0
- package/dist/factories/cnpg/types.d.ts.map +1 -0
- package/dist/factories/cnpg/types.js +398 -0
- package/dist/factories/cnpg/types.js.map +1 -0
- package/dist/factories/cnpg/utils/helm-values-mapper.d.ts +70 -0
- package/dist/factories/cnpg/utils/helm-values-mapper.d.ts.map +1 -0
- package/dist/factories/cnpg/utils/helm-values-mapper.js +79 -0
- package/dist/factories/cnpg/utils/helm-values-mapper.js.map +1 -0
- package/dist/factories/cnpg/utils/index.d.ts +2 -0
- package/dist/factories/cnpg/utils/index.d.ts.map +1 -0
- package/dist/factories/cnpg/utils/index.js +2 -0
- package/dist/factories/cnpg/utils/index.js.map +1 -0
- package/dist/factories/helm/helm-release.d.ts.map +1 -1
- package/dist/factories/helm/helm-release.js +4 -0
- package/dist/factories/helm/helm-release.js.map +1 -1
- package/dist/factories/helm/types.d.ts +2 -0
- package/dist/factories/helm/types.d.ts.map +1 -1
- package/dist/factories/inngest/compositions/index.d.ts +2 -0
- package/dist/factories/inngest/compositions/index.d.ts.map +1 -0
- package/dist/factories/inngest/compositions/index.js +2 -0
- package/dist/factories/inngest/compositions/index.js.map +1 -0
- package/dist/factories/inngest/compositions/inngest-bootstrap.d.ts +150 -0
- package/dist/factories/inngest/compositions/inngest-bootstrap.d.ts.map +1 -0
- package/dist/factories/inngest/compositions/inngest-bootstrap.js +90 -0
- package/dist/factories/inngest/compositions/inngest-bootstrap.js.map +1 -0
- package/dist/factories/inngest/index.d.ts +45 -0
- package/dist/factories/inngest/index.d.ts.map +1 -0
- package/dist/factories/inngest/index.js +45 -0
- package/dist/factories/inngest/index.js.map +1 -0
- package/dist/factories/inngest/resources/helm.d.ts +53 -0
- package/dist/factories/inngest/resources/helm.d.ts.map +1 -0
- package/dist/factories/inngest/resources/helm.js +88 -0
- package/dist/factories/inngest/resources/helm.js.map +1 -0
- package/dist/factories/inngest/resources/index.d.ts +2 -0
- package/dist/factories/inngest/resources/index.d.ts.map +1 -0
- package/dist/factories/inngest/resources/index.js +2 -0
- package/dist/factories/inngest/resources/index.js.map +1 -0
- package/dist/factories/inngest/types.d.ts +177 -0
- package/dist/factories/inngest/types.d.ts.map +1 -0
- package/dist/factories/inngest/types.js +189 -0
- package/dist/factories/inngest/types.js.map +1 -0
- package/dist/factories/inngest/utils/helm-values-mapper.d.ts +127 -0
- package/dist/factories/inngest/utils/helm-values-mapper.d.ts.map +1 -0
- package/dist/factories/inngest/utils/helm-values-mapper.js +116 -0
- package/dist/factories/inngest/utils/helm-values-mapper.js.map +1 -0
- package/dist/factories/inngest/utils/index.d.ts +2 -0
- package/dist/factories/inngest/utils/index.d.ts.map +1 -0
- package/dist/factories/inngest/utils/index.js +2 -0
- package/dist/factories/inngest/utils/index.js.map +1 -0
- package/dist/factories/kubernetes/config/secret.d.ts.map +1 -1
- package/dist/factories/kubernetes/config/secret.js +11 -1
- package/dist/factories/kubernetes/config/secret.js.map +1 -1
- package/dist/factories/kubernetes/core/namespace.d.ts.map +1 -1
- package/dist/factories/kubernetes/core/namespace.js +1 -1
- package/dist/factories/kubernetes/core/namespace.js.map +1 -1
- package/dist/factories/searxng/compositions/index.d.ts +2 -0
- package/dist/factories/searxng/compositions/index.d.ts.map +1 -0
- package/dist/factories/searxng/compositions/index.js +2 -0
- package/dist/factories/searxng/compositions/index.js.map +1 -0
- package/dist/factories/searxng/compositions/searxng-bootstrap.d.ts +65 -0
- package/dist/factories/searxng/compositions/searxng-bootstrap.d.ts.map +1 -0
- package/dist/factories/searxng/compositions/searxng-bootstrap.js +237 -0
- package/dist/factories/searxng/compositions/searxng-bootstrap.js.map +1 -0
- package/dist/factories/searxng/index.d.ts +29 -0
- package/dist/factories/searxng/index.d.ts.map +1 -0
- package/dist/factories/searxng/index.js +27 -0
- package/dist/factories/searxng/index.js.map +1 -0
- package/dist/factories/searxng/resources/index.d.ts +2 -0
- package/dist/factories/searxng/resources/index.d.ts.map +1 -0
- package/dist/factories/searxng/resources/index.js +2 -0
- package/dist/factories/searxng/resources/index.js.map +1 -0
- package/dist/factories/searxng/resources/searxng.d.ts +65 -0
- package/dist/factories/searxng/resources/searxng.d.ts.map +1 -0
- package/dist/factories/searxng/resources/searxng.js +188 -0
- package/dist/factories/searxng/resources/searxng.js.map +1 -0
- package/dist/factories/searxng/types.d.ts +126 -0
- package/dist/factories/searxng/types.d.ts.map +1 -0
- package/dist/factories/searxng/types.js +176 -0
- package/dist/factories/searxng/types.js.map +1 -0
- package/dist/factories/searxng/utils/settings-builder.d.ts +46 -0
- package/dist/factories/searxng/utils/settings-builder.d.ts.map +1 -0
- package/dist/factories/searxng/utils/settings-builder.js +52 -0
- package/dist/factories/searxng/utils/settings-builder.js.map +1 -0
- package/dist/factories/simple/config/secret.d.ts.map +1 -1
- package/dist/factories/simple/config/secret.js +28 -0
- package/dist/factories/simple/config/secret.js.map +1 -1
- package/dist/factories/valkey/compositions/index.d.ts +2 -0
- package/dist/factories/valkey/compositions/index.d.ts.map +1 -0
- package/dist/factories/valkey/compositions/index.js +2 -0
- package/dist/factories/valkey/compositions/index.js.map +1 -0
- package/dist/factories/valkey/compositions/valkey-bootstrap.d.ts +41 -0
- package/dist/factories/valkey/compositions/valkey-bootstrap.d.ts.map +1 -0
- package/dist/factories/valkey/compositions/valkey-bootstrap.js +105 -0
- package/dist/factories/valkey/compositions/valkey-bootstrap.js.map +1 -0
- package/dist/factories/valkey/index.d.ts +50 -0
- package/dist/factories/valkey/index.d.ts.map +1 -0
- package/dist/factories/valkey/index.js +50 -0
- package/dist/factories/valkey/index.js.map +1 -0
- package/dist/factories/valkey/resources/helm.d.ts +53 -0
- package/dist/factories/valkey/resources/helm.d.ts.map +1 -0
- package/dist/factories/valkey/resources/helm.js +82 -0
- package/dist/factories/valkey/resources/helm.js.map +1 -0
- package/dist/factories/valkey/resources/index.d.ts +3 -0
- package/dist/factories/valkey/resources/index.d.ts.map +1 -0
- package/dist/factories/valkey/resources/index.js +3 -0
- package/dist/factories/valkey/resources/index.js.map +1 -0
- package/dist/factories/valkey/resources/valkey.d.ts +46 -0
- package/dist/factories/valkey/resources/valkey.d.ts.map +1 -0
- package/dist/factories/valkey/resources/valkey.js +123 -0
- package/dist/factories/valkey/resources/valkey.js.map +1 -0
- package/dist/factories/valkey/types.d.ts +185 -0
- package/dist/factories/valkey/types.d.ts.map +1 -0
- package/dist/factories/valkey/types.js +204 -0
- package/dist/factories/valkey/types.js.map +1 -0
- package/dist/factories/valkey/utils/helm-values-mapper.d.ts +32 -0
- package/dist/factories/valkey/utils/helm-values-mapper.d.ts.map +1 -0
- package/dist/factories/valkey/utils/helm-values-mapper.js +58 -0
- package/dist/factories/valkey/utils/helm-values-mapper.js.map +1 -0
- package/dist/factories/valkey/utils/index.d.ts +2 -0
- package/dist/factories/valkey/utils/index.d.ts.map +1 -0
- package/dist/factories/valkey/utils/index.js +2 -0
- package/dist/factories/valkey/utils/index.js.map +1 -0
- package/dist/factories/webapp/compositions/index.d.ts +2 -0
- package/dist/factories/webapp/compositions/index.d.ts.map +1 -0
- package/dist/factories/webapp/compositions/index.js +2 -0
- package/dist/factories/webapp/compositions/index.js.map +1 -0
- package/dist/factories/webapp/compositions/web-app-with-processing.d.ts +97 -0
- package/dist/factories/webapp/compositions/web-app-with-processing.d.ts.map +1 -0
- package/dist/factories/webapp/compositions/web-app-with-processing.js +220 -0
- package/dist/factories/webapp/compositions/web-app-with-processing.js.map +1 -0
- package/dist/factories/webapp/index.d.ts +53 -0
- package/dist/factories/webapp/index.d.ts.map +1 -0
- package/dist/factories/webapp/index.js +53 -0
- package/dist/factories/webapp/index.js.map +1 -0
- package/dist/factories/webapp/types.d.ts +69 -0
- package/dist/factories/webapp/types.d.ts.map +1 -0
- package/dist/factories/webapp/types.js +92 -0
- package/dist/factories/webapp/types.js.map +1 -0
- package/dist/shared/brands.d.ts +16 -0
- package/dist/shared/brands.d.ts.map +1 -1
- package/dist/shared/brands.js +16 -0
- package/dist/shared/brands.js.map +1 -1
- package/package.json +29 -1
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* KRO YAML Post-Processing Utilities
|
|
3
|
+
*
|
|
4
|
+
* Shared helpers for applying ternary conditionals to resource data before
|
|
5
|
+
* YAML serialization. Used by both the toResourceGraph pipeline (core.ts)
|
|
6
|
+
* and the KRO factory deployment path (kro-factory.ts).
|
|
7
|
+
*
|
|
8
|
+
* Extracted to avoid circular dependencies between core.ts and kro-factory.ts.
|
|
9
|
+
*
|
|
10
|
+
* Note: KRO 0.9+ omit() wrapping for optional fields is NOT in this module —
|
|
11
|
+
* it's applied inline during ref-to-CEL conversion via
|
|
12
|
+
* `SerializationContext.omitFields` in `cel-references.ts`. That keeps
|
|
13
|
+
* `has() ? ... : omit()` generation as a structured operation on
|
|
14
|
+
* KubernetesRef objects instead of a post-hoc regex rewrite of the
|
|
15
|
+
* serialized YAML string.
|
|
16
|
+
*/
|
|
17
|
+
/**
|
|
18
|
+
* Apply ternary conditionals to resource data by replacing raw marker sections
|
|
19
|
+
* with CEL conditional expressions. This runs BEFORE processResourceReferences
|
|
20
|
+
* so that the markers within the truthy branch get converted to mixed-template
|
|
21
|
+
* CEL format by the normal pipeline.
|
|
22
|
+
*
|
|
23
|
+
* For `spec.redisUrl ? \`redis:\n url: ${spec.redisUrl}\` : ''`, the raw
|
|
24
|
+
* settings.yml string contains the redis section with a __KUBERNETES_REF__
|
|
25
|
+
* marker. This function replaces that section with a CEL conditional that
|
|
26
|
+
* processResourceReferences will then convert to the final mixed-template form.
|
|
27
|
+
*
|
|
28
|
+
* FRAGILE: operates on raw string values inside resource data by substring
|
|
29
|
+
* matching. The `proxySection` must be byte-identical to what was extracted
|
|
30
|
+
* by `extractTernaryConditionals` in schema.ts — meaning the composition's
|
|
31
|
+
* string construction (typically a template literal) and the re-execution
|
|
32
|
+
* pass both need to produce the same newline/indentation layout. If a
|
|
33
|
+
* composition author post-processes the settings string, interpolates it
|
|
34
|
+
* through another templating layer, or if the extraction heuristic in
|
|
35
|
+
* schema.ts is updated to include/exclude different surrounding context,
|
|
36
|
+
* the match will fail silently and the ternary will not be applied.
|
|
37
|
+
*
|
|
38
|
+
* Tracked for replacement with AST-based detection in
|
|
39
|
+
* https://github.com/yehudacohen/typekro/issues/57
|
|
40
|
+
*/
|
|
41
|
+
export function applyTernaryConditionalsToResources(resources, conditionals) {
|
|
42
|
+
for (const { proxySection, conditionField } of conditionals) {
|
|
43
|
+
replaceInResources(resources, proxySection, (matchedSection) => {
|
|
44
|
+
// Split the matched section on markers so we can separately handle
|
|
45
|
+
// LITERAL text (needs CEL string-literal escaping) and CEL REFERENCES
|
|
46
|
+
// (must NOT be escaped — they're emitted as `string(ref)` concatenation).
|
|
47
|
+
const markerRe = /__KUBERNETES_REF_(__schema__|[^_]+)_([a-zA-Z0-9.$]+)__/g;
|
|
48
|
+
let celTruthy = '';
|
|
49
|
+
let lastIndex = 0;
|
|
50
|
+
let m = markerRe.exec(matchedSection);
|
|
51
|
+
while (m !== null) {
|
|
52
|
+
if (m.index > lastIndex) {
|
|
53
|
+
celTruthy += escapeCelStringLiteral(matchedSection.slice(lastIndex, m.index));
|
|
54
|
+
}
|
|
55
|
+
const resourceId = m[1];
|
|
56
|
+
const fieldPath = m[2];
|
|
57
|
+
const celPath = resourceId === '__schema__' ? `schema.${fieldPath}` : `${resourceId}.${fieldPath}`;
|
|
58
|
+
celTruthy += `" + string(${celPath}) + "`;
|
|
59
|
+
lastIndex = m.index + m[0].length;
|
|
60
|
+
m = markerRe.exec(matchedSection);
|
|
61
|
+
}
|
|
62
|
+
if (lastIndex < matchedSection.length) {
|
|
63
|
+
celTruthy += escapeCelStringLiteral(matchedSection.slice(lastIndex));
|
|
64
|
+
}
|
|
65
|
+
return `\${has(schema.spec.${conditionField}) ? "${celTruthy}" : ""}`;
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Escape a literal text chunk for inclusion inside a CEL double-quoted
|
|
71
|
+
* string. Must handle backslash, double quote, newline, carriage return,
|
|
72
|
+
* and tab — in that order, so that the backslash escape doesn't re-escape
|
|
73
|
+
* the backslashes introduced by later substitutions.
|
|
74
|
+
*
|
|
75
|
+
* Previous implementation only escaped newlines, which left literal `"` and
|
|
76
|
+
* `\` characters unescaped. That was a latent bug: any composition that
|
|
77
|
+
* emitted quoted YAML values or Windows-style paths inside a ternary branch
|
|
78
|
+
* would produce malformed CEL and the KRO reconciler would reject the RGD.
|
|
79
|
+
*/
|
|
80
|
+
function escapeCelStringLiteral(literal) {
|
|
81
|
+
return literal
|
|
82
|
+
.replace(/\\/g, '\\\\')
|
|
83
|
+
.replace(/"/g, '\\"')
|
|
84
|
+
.replace(/\n/g, '\\n')
|
|
85
|
+
.replace(/\r/g, '\\r')
|
|
86
|
+
.replace(/\t/g, '\\t');
|
|
87
|
+
}
|
|
88
|
+
/** Recursively find and replace string sections in resource data. */
|
|
89
|
+
function replaceInResources(obj, section, replacer) {
|
|
90
|
+
if (!obj || typeof obj !== 'object')
|
|
91
|
+
return;
|
|
92
|
+
const record = obj;
|
|
93
|
+
for (const key of Object.keys(record)) {
|
|
94
|
+
const val = record[key];
|
|
95
|
+
if (typeof val === 'string' && val.includes(section)) {
|
|
96
|
+
record[key] = val.replaceAll(section, replacer(section));
|
|
97
|
+
}
|
|
98
|
+
else if (typeof val === 'object' && val !== null) {
|
|
99
|
+
replaceInResources(val, section, replacer);
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
//# sourceMappingURL=kro-post-processing.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"kro-post-processing.js","sourceRoot":"","sources":["../../../src/core/serialization/kro-post-processing.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,8 +6,66 @@
|
|
|
6
6
|
* from resource maps.
|
|
7
7
|
*/
|
|
8
8
|
import type { Type } from 'arktype';
|
|
9
|
-
import type { SchemaDefinition } from '../types/serialization.js';
|
|
9
|
+
import type { KroSimpleSchemaWithMetadata, SchemaDefinition } from '../types/serialization.js';
|
|
10
10
|
import type { KroCompatibleType, KroSimpleSchema, KubernetesResource } from '../types.js';
|
|
11
|
+
/**
|
|
12
|
+
* Extract literal default values from `spec.field ?? literalValue` patterns
|
|
13
|
+
* in a composition function's source code.
|
|
14
|
+
*
|
|
15
|
+
* **FAST PATH — NOT AUTHORITATIVE.** This regex-based extraction runs first
|
|
16
|
+
* to catch the common case where a composition uses `spec.X ?? 'literal'`
|
|
17
|
+
* with a literal right-hand side. It is intentionally conservative:
|
|
18
|
+
*
|
|
19
|
+
* - Both `??` and the literal must be on the same source line.
|
|
20
|
+
* - The literal must be a string, number, boolean, or minified !0/!1 form.
|
|
21
|
+
* - The right-hand side cannot be a constant, variable, template literal,
|
|
22
|
+
* function call, or expression involving other spec fields.
|
|
23
|
+
*
|
|
24
|
+
* Anything this regex misses is caught by {@link resolveDefaultsByReExecution}
|
|
25
|
+
* (Phase 2), which actually executes the composition function with optional
|
|
26
|
+
* fields set to `undefined` and observes the concrete resolved values. Phase 2
|
|
27
|
+
* is the authoritative source; this function only exists to short-circuit
|
|
28
|
+
* the common case so the heavy re-execution doesn't need to compare every
|
|
29
|
+
* field for every composition.
|
|
30
|
+
*
|
|
31
|
+
* In KRO mode, `??` doesn't trigger for proxy objects (they're truthy).
|
|
32
|
+
* Instead, we detect these patterns via fn.toString() and add
|
|
33
|
+
* `| default=<value>` annotations to the KRO SimpleSchema so that KRO
|
|
34
|
+
* uses the intended default when the field isn't provided in the CR.
|
|
35
|
+
*
|
|
36
|
+
* NOTE: `.orValue()` is NOT supported in KRO resource templates (only in
|
|
37
|
+
* status CEL). Schema `| default=` is the correct mechanism for resource
|
|
38
|
+
* template defaults.
|
|
39
|
+
*
|
|
40
|
+
* Handles:
|
|
41
|
+
* - `spec.field ?? 'string'` or `spec.field ?? "string"`
|
|
42
|
+
* - `spec.field ?? 123` (numbers)
|
|
43
|
+
* - `spec.field ?? true/false` (booleans, including minified !0/!1)
|
|
44
|
+
* - `spec.parent?.child ?? value` (optional chaining)
|
|
45
|
+
*/
|
|
46
|
+
export declare function extractNullishDefaults(fnSource: string): Record<string, string | number | boolean>;
|
|
47
|
+
/**
|
|
48
|
+
* Placeholder value passed in place of required spec fields during the
|
|
49
|
+
* defaults-extraction re-execution. Any captured leaf value that IS this
|
|
50
|
+
* string, CONTAINS this string as a substring (from template-literal
|
|
51
|
+
* interpolation), or is NaN (from arithmetic coercion of the string) is
|
|
52
|
+
* filtered out by the sentinel-detection logic in `extractDefaultsByComparison`
|
|
53
|
+
* so it never gets recorded as a real schema default.
|
|
54
|
+
*
|
|
55
|
+
* The choice of a string (rather than a Symbol or object) is deliberate:
|
|
56
|
+
* - String concatenation preserves the token so template-literal usage
|
|
57
|
+
* produces a clearly-identifiable captured value (e.g. `"__typekro_default__-cfg"`).
|
|
58
|
+
* - Truthiness matches the real proxy behavior (proxies are truthy), so
|
|
59
|
+
* `if (spec.requiredField)` takes the same branch in both runs.
|
|
60
|
+
* - Numeric contexts coerce to NaN in both runs (proxies also coerce to
|
|
61
|
+
* NaN because functions have no numeric value), so arithmetic-derived
|
|
62
|
+
* NaN values are symmetric across runs and don't produce spurious defaults.
|
|
63
|
+
*
|
|
64
|
+
* If the propagation ever drifts out of this sentinel's shape (e.g. someone
|
|
65
|
+
* introduces a Symbol-based sentinel), update `isSentinelDerivedValue` below
|
|
66
|
+
* to match.
|
|
67
|
+
*/
|
|
68
|
+
export declare const REQUIRED_FIELD_SENTINEL = "__typekro_default__";
|
|
11
69
|
/**
|
|
12
70
|
* Convert an Arktype schema to a Kro-compatible schema definition.
|
|
13
71
|
*
|
|
@@ -22,7 +80,7 @@ export declare function arktypeToKroSchema(name: string, schemaDefinition: {
|
|
|
22
80
|
kind: string;
|
|
23
81
|
spec: Type;
|
|
24
82
|
status: Type;
|
|
25
|
-
},
|
|
83
|
+
}, resources?: Record<string, KubernetesResource>, statusMappings?: Record<string, unknown>, nestedStatusCel?: Record<string, string>): KroSimpleSchemaWithMetadata;
|
|
26
84
|
/**
|
|
27
85
|
* Generate a minimal Kro schema from a resource map (no Arktype).
|
|
28
86
|
*
|
|
@@ -41,5 +99,5 @@ export declare function generateKroSchema(name: string, _resources: Record<strin
|
|
|
41
99
|
* @see {@link arktypeToKroSchema} for the low-level variant.
|
|
42
100
|
* @see {@link generateKroSchema} for a simple variant without Arktype.
|
|
43
101
|
*/
|
|
44
|
-
export declare function generateKroSchemaFromArktype<TSpec extends KroCompatibleType, TStatus extends KroCompatibleType>(name: string, schemaDefinition: SchemaDefinition<TSpec, TStatus>, resources?: Record<string, KubernetesResource>, statusMappings?: Record<string, unknown>):
|
|
102
|
+
export declare function generateKroSchemaFromArktype<TSpec extends KroCompatibleType, TStatus extends KroCompatibleType>(name: string, schemaDefinition: SchemaDefinition<TSpec, TStatus>, resources?: Record<string, KubernetesResource>, statusMappings?: Record<string, unknown>, nestedStatusCel?: Record<string, string>): KroSimpleSchemaWithMetadata;
|
|
45
103
|
//# sourceMappingURL=schema.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../src/core/serialization/schema.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../src/core/serialization/schema.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AAIpC,OAAO,KAAK,EACV,2BAA2B,EAC3B,gBAAgB,EAEjB,MAAM,2BAA2B,CAAC;AACnC,OAAO,KAAK,EAAE,iBAAiB,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AA4G1F;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AACH,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,CA0BlG;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,eAAO,MAAM,uBAAuB,wBAAwB,CAAC;AA8a7D;;;;;;;;GAQG;AACH,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,MAAM,EACZ,gBAAgB,EAAE;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,IAAI,CAAC;IACX,MAAM,EAAE,IAAI,CAAC;CACd,EACD,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,kBAAkB,CAAC,EAC9C,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACxC,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GACvC,2BAA2B,CA0G7B;AAED;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,kBAAkB,CAAC,GAC7C,eAAe,CAajB;AAED;;;;;;;;;GASG;AACH,wBAAgB,4BAA4B,CAC1C,KAAK,SAAS,iBAAiB,EAC/B,OAAO,SAAS,iBAAiB,EAEjC,IAAI,EAAE,MAAM,EACZ,gBAAgB,EAAE,gBAAgB,CAAC,KAAK,EAAE,OAAO,CAAC,EAClD,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,kBAAkB,CAAC,EAC9C,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACxC,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GACvC,2BAA2B,CAE7B"}
|