typekro 0.1.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/LICENSE +185 -0
- package/README.md +1137 -0
- package/dist/.tsbuildinfo +1 -0
- package/dist/alchemy/deployers.d.ts +39 -0
- package/dist/alchemy/deployers.d.ts.map +1 -0
- package/dist/alchemy/deployers.js +194 -0
- package/dist/alchemy/deployers.js.map +1 -0
- package/dist/alchemy/deployment.d.ts +12 -0
- package/dist/alchemy/deployment.d.ts.map +1 -0
- package/dist/alchemy/deployment.js +12 -0
- package/dist/alchemy/deployment.js.map +1 -0
- package/dist/alchemy/index.d.ts +17 -0
- package/dist/alchemy/index.d.ts.map +1 -0
- package/dist/alchemy/index.js +20 -0
- package/dist/alchemy/index.js.map +1 -0
- package/dist/alchemy/resolver.d.ts +127 -0
- package/dist/alchemy/resolver.d.ts.map +1 -0
- package/dist/alchemy/resolver.js +341 -0
- package/dist/alchemy/resolver.js.map +1 -0
- package/dist/alchemy/resource-registration.d.ts +22 -0
- package/dist/alchemy/resource-registration.d.ts.map +1 -0
- package/dist/alchemy/resource-registration.js +218 -0
- package/dist/alchemy/resource-registration.js.map +1 -0
- package/dist/alchemy/type-inference.d.ts +13 -0
- package/dist/alchemy/type-inference.d.ts.map +1 -0
- package/dist/alchemy/type-inference.js +67 -0
- package/dist/alchemy/type-inference.js.map +1 -0
- package/dist/alchemy/types.d.ts +92 -0
- package/dist/alchemy/types.d.ts.map +1 -0
- package/dist/alchemy/types.js +8 -0
- package/dist/alchemy/types.js.map +1 -0
- package/dist/alchemy/utilities.d.ts +12 -0
- package/dist/alchemy/utilities.d.ts.map +1 -0
- package/dist/alchemy/utilities.js +16 -0
- package/dist/alchemy/utilities.js.map +1 -0
- package/dist/alchemy/wrapper.d.ts +16 -0
- package/dist/alchemy/wrapper.d.ts.map +1 -0
- package/dist/alchemy/wrapper.js +23 -0
- package/dist/alchemy/wrapper.js.map +1 -0
- package/dist/core/composition/composition.d.ts +94 -0
- package/dist/core/composition/composition.d.ts.map +1 -0
- package/dist/core/composition/composition.js +230 -0
- package/dist/core/composition/composition.js.map +1 -0
- package/dist/core/composition/index.d.ts +12 -0
- package/dist/core/composition/index.d.ts.map +1 -0
- package/dist/core/composition/index.js +12 -0
- package/dist/core/composition/index.js.map +1 -0
- package/dist/core/composition/typekro-runtime/index.d.ts +3 -0
- package/dist/core/composition/typekro-runtime/index.d.ts.map +1 -0
- package/dist/core/composition/typekro-runtime/index.js +2 -0
- package/dist/core/composition/typekro-runtime/index.js.map +1 -0
- package/dist/core/composition/typekro-runtime/typekro-runtime.d.ts +39 -0
- package/dist/core/composition/typekro-runtime/typekro-runtime.d.ts.map +1 -0
- package/dist/core/composition/typekro-runtime/typekro-runtime.js +100 -0
- package/dist/core/composition/typekro-runtime/typekro-runtime.js.map +1 -0
- package/dist/core/composition/typekro-runtime/types.d.ts +16 -0
- package/dist/core/composition/typekro-runtime/types.d.ts.map +1 -0
- package/dist/core/composition/typekro-runtime/types.js +12 -0
- package/dist/core/composition/typekro-runtime/types.js.map +1 -0
- package/dist/core/composition/types.d.ts +264 -0
- package/dist/core/composition/types.d.ts.map +1 -0
- package/dist/core/composition/types.js +2 -0
- package/dist/core/composition/types.js.map +1 -0
- package/dist/core/constants/brands.d.ts +42 -0
- package/dist/core/constants/brands.d.ts.map +1 -0
- package/dist/core/constants/brands.js +51 -0
- package/dist/core/constants/brands.js.map +1 -0
- package/dist/core/dependencies/graph.d.ts +67 -0
- package/dist/core/dependencies/graph.d.ts.map +1 -0
- package/dist/core/dependencies/graph.js +220 -0
- package/dist/core/dependencies/graph.js.map +1 -0
- package/dist/core/dependencies/index.d.ts +7 -0
- package/dist/core/dependencies/index.d.ts.map +1 -0
- package/dist/core/dependencies/index.js +8 -0
- package/dist/core/dependencies/index.js.map +1 -0
- package/dist/core/dependencies/resolver.d.ts +53 -0
- package/dist/core/dependencies/resolver.d.ts.map +1 -0
- package/dist/core/dependencies/resolver.js +167 -0
- package/dist/core/dependencies/resolver.js.map +1 -0
- package/dist/core/dependencies/type-guards.d.ts +17 -0
- package/dist/core/dependencies/type-guards.d.ts.map +1 -0
- package/dist/core/dependencies/type-guards.js +35 -0
- package/dist/core/dependencies/type-guards.js.map +1 -0
- package/dist/core/deployment/deployment-strategies.d.ts +12 -0
- package/dist/core/deployment/deployment-strategies.d.ts.map +1 -0
- package/dist/core/deployment/deployment-strategies.js +11 -0
- package/dist/core/deployment/deployment-strategies.js.map +1 -0
- package/dist/core/deployment/direct-factory.d.ts +111 -0
- package/dist/core/deployment/direct-factory.d.ts.map +1 -0
- package/dist/core/deployment/direct-factory.js +627 -0
- package/dist/core/deployment/direct-factory.js.map +1 -0
- package/dist/core/deployment/engine.d.ts +128 -0
- package/dist/core/deployment/engine.d.ts.map +1 -0
- package/dist/core/deployment/engine.js +1408 -0
- package/dist/core/deployment/engine.js.map +1 -0
- package/dist/core/deployment/index.d.ts +14 -0
- package/dist/core/deployment/index.d.ts.map +1 -0
- package/dist/core/deployment/index.js +14 -0
- package/dist/core/deployment/index.js.map +1 -0
- package/dist/core/deployment/kro-factory.d.ts +143 -0
- package/dist/core/deployment/kro-factory.d.ts.map +1 -0
- package/dist/core/deployment/kro-factory.js +837 -0
- package/dist/core/deployment/kro-factory.js.map +1 -0
- package/dist/core/deployment/readiness.d.ts +54 -0
- package/dist/core/deployment/readiness.d.ts.map +1 -0
- package/dist/core/deployment/readiness.js +175 -0
- package/dist/core/deployment/readiness.js.map +1 -0
- package/dist/core/deployment/rollback-manager.d.ts +63 -0
- package/dist/core/deployment/rollback-manager.d.ts.map +1 -0
- package/dist/core/deployment/rollback-manager.js +225 -0
- package/dist/core/deployment/rollback-manager.js.map +1 -0
- package/dist/core/deployment/shared-utilities.d.ts +41 -0
- package/dist/core/deployment/shared-utilities.d.ts.map +1 -0
- package/dist/core/deployment/shared-utilities.js +100 -0
- package/dist/core/deployment/shared-utilities.js.map +1 -0
- package/dist/core/deployment/status-hydrator.d.ts +86 -0
- package/dist/core/deployment/status-hydrator.d.ts.map +1 -0
- package/dist/core/deployment/status-hydrator.js +262 -0
- package/dist/core/deployment/status-hydrator.js.map +1 -0
- package/dist/core/deployment/strategies/alchemy-strategy.d.ts +107 -0
- package/dist/core/deployment/strategies/alchemy-strategy.d.ts.map +1 -0
- package/dist/core/deployment/strategies/alchemy-strategy.js +446 -0
- package/dist/core/deployment/strategies/alchemy-strategy.js.map +1 -0
- package/dist/core/deployment/strategies/base-strategy.d.ts +50 -0
- package/dist/core/deployment/strategies/base-strategy.d.ts.map +1 -0
- package/dist/core/deployment/strategies/base-strategy.js +82 -0
- package/dist/core/deployment/strategies/base-strategy.js.map +1 -0
- package/dist/core/deployment/strategies/direct-strategy.d.ts +29 -0
- package/dist/core/deployment/strategies/direct-strategy.d.ts.map +1 -0
- package/dist/core/deployment/strategies/direct-strategy.js +80 -0
- package/dist/core/deployment/strategies/direct-strategy.js.map +1 -0
- package/dist/core/deployment/strategies/index.d.ts +12 -0
- package/dist/core/deployment/strategies/index.d.ts.map +1 -0
- package/dist/core/deployment/strategies/index.js +12 -0
- package/dist/core/deployment/strategies/index.js.map +1 -0
- package/dist/core/deployment/strategies/kro-strategy.d.ts +41 -0
- package/dist/core/deployment/strategies/kro-strategy.d.ts.map +1 -0
- package/dist/core/deployment/strategies/kro-strategy.js +270 -0
- package/dist/core/deployment/strategies/kro-strategy.js.map +1 -0
- package/dist/core/direct-deployment.d.ts +8 -0
- package/dist/core/direct-deployment.d.ts.map +1 -0
- package/dist/core/direct-deployment.js +9 -0
- package/dist/core/direct-deployment.js.map +1 -0
- package/dist/core/errors.d.ts +73 -0
- package/dist/core/errors.d.ts.map +1 -0
- package/dist/core/errors.js +250 -0
- package/dist/core/errors.js.map +1 -0
- package/dist/core/evaluation/cel-optimizer.d.ts +48 -0
- package/dist/core/evaluation/cel-optimizer.d.ts.map +1 -0
- package/dist/core/evaluation/cel-optimizer.js +176 -0
- package/dist/core/evaluation/cel-optimizer.js.map +1 -0
- package/dist/core/factory.d.ts +12 -0
- package/dist/core/factory.d.ts.map +1 -0
- package/dist/core/factory.js +13 -0
- package/dist/core/factory.js.map +1 -0
- package/dist/core/kubernetes/api.d.ts +43 -0
- package/dist/core/kubernetes/api.d.ts.map +1 -0
- package/dist/core/kubernetes/api.js +209 -0
- package/dist/core/kubernetes/api.js.map +1 -0
- package/dist/core/kubernetes/client-provider.d.ts +204 -0
- package/dist/core/kubernetes/client-provider.d.ts.map +1 -0
- package/dist/core/kubernetes/client-provider.js +421 -0
- package/dist/core/kubernetes/client-provider.js.map +1 -0
- package/dist/core/logging/config.d.ts +14 -0
- package/dist/core/logging/config.d.ts.map +1 -0
- package/dist/core/logging/config.js +57 -0
- package/dist/core/logging/config.js.map +1 -0
- package/dist/core/logging/index.d.ts +4 -0
- package/dist/core/logging/index.d.ts.map +1 -0
- package/dist/core/logging/index.js +4 -0
- package/dist/core/logging/index.js.map +1 -0
- package/dist/core/logging/logger.d.ts +26 -0
- package/dist/core/logging/logger.d.ts.map +1 -0
- package/dist/core/logging/logger.js +114 -0
- package/dist/core/logging/logger.js.map +1 -0
- package/dist/core/logging/types.d.ts +93 -0
- package/dist/core/logging/types.d.ts.map +1 -0
- package/dist/core/logging/types.js +2 -0
- package/dist/core/logging/types.js.map +1 -0
- package/dist/core/readiness/cluster-state.d.ts +229 -0
- package/dist/core/readiness/cluster-state.d.ts.map +1 -0
- package/dist/core/readiness/cluster-state.js +360 -0
- package/dist/core/readiness/cluster-state.js.map +1 -0
- package/dist/core/readiness/index.d.ts +5 -0
- package/dist/core/readiness/index.d.ts.map +1 -0
- package/dist/core/readiness/index.js +5 -0
- package/dist/core/readiness/index.js.map +1 -0
- package/dist/core/readiness/registry.d.ts +45 -0
- package/dist/core/readiness/registry.d.ts.map +1 -0
- package/dist/core/readiness/registry.js +62 -0
- package/dist/core/readiness/registry.js.map +1 -0
- package/dist/core/references/cel-evaluator.d.ts +102 -0
- package/dist/core/references/cel-evaluator.d.ts.map +1 -0
- package/dist/core/references/cel-evaluator.js +288 -0
- package/dist/core/references/cel-evaluator.js.map +1 -0
- package/dist/core/references/cel.d.ts +75 -0
- package/dist/core/references/cel.d.ts.map +1 -0
- package/dist/core/references/cel.js +213 -0
- package/dist/core/references/cel.js.map +1 -0
- package/dist/core/references/external-refs.d.ts +37 -0
- package/dist/core/references/external-refs.d.ts.map +1 -0
- package/dist/core/references/external-refs.js +53 -0
- package/dist/core/references/external-refs.js.map +1 -0
- package/dist/core/references/index.d.ts +15 -0
- package/dist/core/references/index.d.ts.map +1 -0
- package/dist/core/references/index.js +19 -0
- package/dist/core/references/index.js.map +1 -0
- package/dist/core/references/resolver.d.ts +117 -0
- package/dist/core/references/resolver.d.ts.map +1 -0
- package/dist/core/references/resolver.js +554 -0
- package/dist/core/references/resolver.js.map +1 -0
- package/dist/core/references/schema-proxy.d.ts +38 -0
- package/dist/core/references/schema-proxy.d.ts.map +1 -0
- package/dist/core/references/schema-proxy.js +163 -0
- package/dist/core/references/schema-proxy.js.map +1 -0
- package/dist/core/serialization/core.d.ts +15 -0
- package/dist/core/serialization/core.d.ts.map +1 -0
- package/dist/core/serialization/core.js +169 -0
- package/dist/core/serialization/core.js.map +1 -0
- package/dist/core/serialization/index.d.ts +9 -0
- package/dist/core/serialization/index.d.ts.map +1 -0
- package/dist/core/serialization/index.js +12 -0
- package/dist/core/serialization/index.js.map +1 -0
- package/dist/core/serialization/schema.d.ts +14 -0
- package/dist/core/serialization/schema.d.ts.map +1 -0
- package/dist/core/serialization/schema.js +33 -0
- package/dist/core/serialization/schema.js.map +1 -0
- package/dist/core/serialization/validation.d.ts +18 -0
- package/dist/core/serialization/validation.d.ts.map +1 -0
- package/dist/core/serialization/validation.js +165 -0
- package/dist/core/serialization/validation.js.map +1 -0
- package/dist/core/serialization/yaml.d.ts +10 -0
- package/dist/core/serialization/yaml.d.ts.map +1 -0
- package/dist/core/serialization/yaml.js +63 -0
- package/dist/core/serialization/yaml.js.map +1 -0
- package/dist/core/types/common.d.ts +41 -0
- package/dist/core/types/common.d.ts.map +1 -0
- package/dist/core/types/common.js +9 -0
- package/dist/core/types/common.js.map +1 -0
- package/dist/core/types/dependencies.d.ts +14 -0
- package/dist/core/types/dependencies.d.ts.map +1 -0
- package/dist/core/types/dependencies.js +5 -0
- package/dist/core/types/dependencies.js.map +1 -0
- package/dist/core/types/deployment.d.ts +265 -0
- package/dist/core/types/deployment.d.ts.map +1 -0
- package/dist/core/types/deployment.js +20 -0
- package/dist/core/types/deployment.js.map +1 -0
- package/dist/core/types/index.d.ts +19 -0
- package/dist/core/types/index.d.ts.map +1 -0
- package/dist/core/types/index.js +15 -0
- package/dist/core/types/index.js.map +1 -0
- package/dist/core/types/kubernetes.d.ts +352 -0
- package/dist/core/types/kubernetes.d.ts.map +1 -0
- package/dist/core/types/kubernetes.js +5 -0
- package/dist/core/types/kubernetes.js.map +1 -0
- package/dist/core/types/references.d.ts +54 -0
- package/dist/core/types/references.d.ts.map +1 -0
- package/dist/core/types/references.js +14 -0
- package/dist/core/types/references.js.map +1 -0
- package/dist/core/types/resource-graph.d.ts +93 -0
- package/dist/core/types/resource-graph.d.ts.map +1 -0
- package/dist/core/types/resource-graph.js +8 -0
- package/dist/core/types/resource-graph.js.map +1 -0
- package/dist/core/types/serialization.d.ts +210 -0
- package/dist/core/types/serialization.d.ts.map +1 -0
- package/dist/core/types/serialization.js +5 -0
- package/dist/core/types/serialization.js.map +1 -0
- package/dist/core/types/yaml.d.ts +92 -0
- package/dist/core/types/yaml.d.ts.map +1 -0
- package/dist/core/types/yaml.js +2 -0
- package/dist/core/types/yaml.js.map +1 -0
- package/dist/core/types.d.ts +8 -0
- package/dist/core/types.d.ts.map +1 -0
- package/dist/core/types.js +9 -0
- package/dist/core/types.js.map +1 -0
- package/dist/core/validation/cel-validator.d.ts +47 -0
- package/dist/core/validation/cel-validator.d.ts.map +1 -0
- package/dist/core/validation/cel-validator.js +200 -0
- package/dist/core/validation/cel-validator.js.map +1 -0
- package/dist/core/yaml/index.d.ts +5 -0
- package/dist/core/yaml/index.d.ts.map +1 -0
- package/dist/core/yaml/index.js +5 -0
- package/dist/core/yaml/index.js.map +1 -0
- package/dist/core/yaml/path-resolver.d.ts +122 -0
- package/dist/core/yaml/path-resolver.d.ts.map +1 -0
- package/dist/core/yaml/path-resolver.js +556 -0
- package/dist/core/yaml/path-resolver.js.map +1 -0
- package/dist/core.d.ts +30 -0
- package/dist/core.d.ts.map +1 -0
- package/dist/core.js +59 -0
- package/dist/core.js.map +1 -0
- package/dist/factories/flux/git-repository.d.ts +62 -0
- package/dist/factories/flux/git-repository.d.ts.map +1 -0
- package/dist/factories/flux/git-repository.js +34 -0
- package/dist/factories/flux/git-repository.js.map +1 -0
- package/dist/factories/flux/index.d.ts +10 -0
- package/dist/factories/flux/index.d.ts.map +1 -0
- package/dist/factories/flux/index.js +11 -0
- package/dist/factories/flux/index.js.map +1 -0
- package/dist/factories/flux/kustomize/index.d.ts +4 -0
- package/dist/factories/flux/kustomize/index.d.ts.map +1 -0
- package/dist/factories/flux/kustomize/index.js +3 -0
- package/dist/factories/flux/kustomize/index.js.map +1 -0
- package/dist/factories/flux/kustomize/kustomization.d.ts +178 -0
- package/dist/factories/flux/kustomize/kustomization.d.ts.map +1 -0
- package/dist/factories/flux/kustomize/kustomization.js +108 -0
- package/dist/factories/flux/kustomize/kustomization.js.map +1 -0
- package/dist/factories/flux/kustomize/readiness-evaluators.d.ts +9 -0
- package/dist/factories/flux/kustomize/readiness-evaluators.d.ts.map +1 -0
- package/dist/factories/flux/kustomize/readiness-evaluators.js +71 -0
- package/dist/factories/flux/kustomize/readiness-evaluators.js.map +1 -0
- package/dist/factories/flux/kustomize/types.d.ts +2 -0
- package/dist/factories/flux/kustomize/types.d.ts.map +1 -0
- package/dist/factories/flux/kustomize/types.js +2 -0
- package/dist/factories/flux/kustomize/types.js.map +1 -0
- package/dist/factories/helm/helm-release.d.ts +139 -0
- package/dist/factories/helm/helm-release.d.ts.map +1 -0
- package/dist/factories/helm/helm-release.js +180 -0
- package/dist/factories/helm/helm-release.js.map +1 -0
- package/dist/factories/helm/helm-repository.d.ts +24 -0
- package/dist/factories/helm/helm-repository.d.ts.map +1 -0
- package/dist/factories/helm/helm-repository.js +57 -0
- package/dist/factories/helm/helm-repository.js.map +1 -0
- package/dist/factories/helm/index.d.ts +8 -0
- package/dist/factories/helm/index.d.ts.map +1 -0
- package/dist/factories/helm/index.js +8 -0
- package/dist/factories/helm/index.js.map +1 -0
- package/dist/factories/helm/readiness-evaluators.d.ts +55 -0
- package/dist/factories/helm/readiness-evaluators.d.ts.map +1 -0
- package/dist/factories/helm/readiness-evaluators.js +295 -0
- package/dist/factories/helm/readiness-evaluators.js.map +1 -0
- package/dist/factories/helm/types.d.ts +21 -0
- package/dist/factories/helm/types.d.ts.map +1 -0
- package/dist/factories/helm/types.js +2 -0
- package/dist/factories/helm/types.js.map +1 -0
- package/dist/factories/index.d.ts +12 -0
- package/dist/factories/index.d.ts.map +1 -0
- package/dist/factories/index.js +31 -0
- package/dist/factories/index.js.map +1 -0
- package/dist/factories/kro/index.d.ts +11 -0
- package/dist/factories/kro/index.d.ts.map +1 -0
- package/dist/factories/kro/index.js +10 -0
- package/dist/factories/kro/index.js.map +1 -0
- package/dist/factories/kro/kro-crd.d.ts +14 -0
- package/dist/factories/kro/kro-crd.d.ts.map +1 -0
- package/dist/factories/kro/kro-crd.js +51 -0
- package/dist/factories/kro/kro-crd.js.map +1 -0
- package/dist/factories/kro/kro-custom-resource.d.ts +23 -0
- package/dist/factories/kro/kro-custom-resource.d.ts.map +1 -0
- package/dist/factories/kro/kro-custom-resource.js +153 -0
- package/dist/factories/kro/kro-custom-resource.js.map +1 -0
- package/dist/factories/kro/resource-graph-definition.d.ts +12 -0
- package/dist/factories/kro/resource-graph-definition.d.ts.map +1 -0
- package/dist/factories/kro/resource-graph-definition.js +94 -0
- package/dist/factories/kro/resource-graph-definition.js.map +1 -0
- package/dist/factories/kubernetes/admission/index.d.ts +9 -0
- package/dist/factories/kubernetes/admission/index.d.ts.map +1 -0
- package/dist/factories/kubernetes/admission/index.js +9 -0
- package/dist/factories/kubernetes/admission/index.js.map +1 -0
- package/dist/factories/kubernetes/admission/mutating-webhook-configuration.d.ts +5 -0
- package/dist/factories/kubernetes/admission/mutating-webhook-configuration.d.ts.map +1 -0
- package/dist/factories/kubernetes/admission/mutating-webhook-configuration.js +10 -0
- package/dist/factories/kubernetes/admission/mutating-webhook-configuration.js.map +1 -0
- package/dist/factories/kubernetes/admission/validating-webhook-configuration.d.ts +5 -0
- package/dist/factories/kubernetes/admission/validating-webhook-configuration.d.ts.map +1 -0
- package/dist/factories/kubernetes/admission/validating-webhook-configuration.js +10 -0
- package/dist/factories/kubernetes/admission/validating-webhook-configuration.js.map +1 -0
- package/dist/factories/kubernetes/autoscaling/horizontal-pod-autoscaler-v1.d.ts +6 -0
- package/dist/factories/kubernetes/autoscaling/horizontal-pod-autoscaler-v1.d.ts.map +1 -0
- package/dist/factories/kubernetes/autoscaling/horizontal-pod-autoscaler-v1.js +35 -0
- package/dist/factories/kubernetes/autoscaling/horizontal-pod-autoscaler-v1.js.map +1 -0
- package/dist/factories/kubernetes/autoscaling/horizontal-pod-autoscaler.d.ts +6 -0
- package/dist/factories/kubernetes/autoscaling/horizontal-pod-autoscaler.d.ts.map +1 -0
- package/dist/factories/kubernetes/autoscaling/horizontal-pod-autoscaler.js +31 -0
- package/dist/factories/kubernetes/autoscaling/horizontal-pod-autoscaler.js.map +1 -0
- package/dist/factories/kubernetes/autoscaling/index.d.ts +9 -0
- package/dist/factories/kubernetes/autoscaling/index.d.ts.map +1 -0
- package/dist/factories/kubernetes/autoscaling/index.js +9 -0
- package/dist/factories/kubernetes/autoscaling/index.js.map +1 -0
- package/dist/factories/kubernetes/certificates/certificate-signing-request.d.ts +6 -0
- package/dist/factories/kubernetes/certificates/certificate-signing-request.d.ts.map +1 -0
- package/dist/factories/kubernetes/certificates/certificate-signing-request.js +48 -0
- package/dist/factories/kubernetes/certificates/certificate-signing-request.js.map +1 -0
- package/dist/factories/kubernetes/certificates/index.d.ts +8 -0
- package/dist/factories/kubernetes/certificates/index.d.ts.map +1 -0
- package/dist/factories/kubernetes/certificates/index.js +8 -0
- package/dist/factories/kubernetes/certificates/index.js.map +1 -0
- package/dist/factories/kubernetes/config/config-map.d.ts +5 -0
- package/dist/factories/kubernetes/config/config-map.d.ts.map +1 -0
- package/dist/factories/kubernetes/config/config-map.js +16 -0
- package/dist/factories/kubernetes/config/config-map.js.map +1 -0
- package/dist/factories/kubernetes/config/index.d.ts +9 -0
- package/dist/factories/kubernetes/config/index.d.ts.map +1 -0
- package/dist/factories/kubernetes/config/index.js +9 -0
- package/dist/factories/kubernetes/config/index.js.map +1 -0
- package/dist/factories/kubernetes/config/secret.d.ts +5 -0
- package/dist/factories/kubernetes/config/secret.d.ts.map +1 -0
- package/dist/factories/kubernetes/config/secret.js +16 -0
- package/dist/factories/kubernetes/config/secret.js.map +1 -0
- package/dist/factories/kubernetes/coordination/index.d.ts +8 -0
- package/dist/factories/kubernetes/coordination/index.d.ts.map +1 -0
- package/dist/factories/kubernetes/coordination/index.js +8 -0
- package/dist/factories/kubernetes/coordination/index.js.map +1 -0
- package/dist/factories/kubernetes/coordination/lease.d.ts +5 -0
- package/dist/factories/kubernetes/coordination/lease.d.ts.map +1 -0
- package/dist/factories/kubernetes/coordination/lease.js +10 -0
- package/dist/factories/kubernetes/coordination/lease.js.map +1 -0
- package/dist/factories/kubernetes/core/component-status.d.ts +4 -0
- package/dist/factories/kubernetes/core/component-status.d.ts.map +1 -0
- package/dist/factories/kubernetes/core/component-status.js +25 -0
- package/dist/factories/kubernetes/core/component-status.js.map +1 -0
- package/dist/factories/kubernetes/core/index.d.ts +11 -0
- package/dist/factories/kubernetes/core/index.d.ts.map +1 -0
- package/dist/factories/kubernetes/core/index.js +11 -0
- package/dist/factories/kubernetes/core/index.js.map +1 -0
- package/dist/factories/kubernetes/core/namespace.d.ts +9 -0
- package/dist/factories/kubernetes/core/namespace.d.ts.map +1 -0
- package/dist/factories/kubernetes/core/namespace.js +48 -0
- package/dist/factories/kubernetes/core/namespace.js.map +1 -0
- package/dist/factories/kubernetes/core/node.d.ts +6 -0
- package/dist/factories/kubernetes/core/node.d.ts.map +1 -0
- package/dist/factories/kubernetes/core/node.js +34 -0
- package/dist/factories/kubernetes/core/node.js.map +1 -0
- package/dist/factories/kubernetes/core/pod.d.ts +6 -0
- package/dist/factories/kubernetes/core/pod.d.ts.map +1 -0
- package/dist/factories/kubernetes/core/pod.js +44 -0
- package/dist/factories/kubernetes/core/pod.js.map +1 -0
- package/dist/factories/kubernetes/extensions/custom-resource-definition.d.ts +6 -0
- package/dist/factories/kubernetes/extensions/custom-resource-definition.d.ts.map +1 -0
- package/dist/factories/kubernetes/extensions/custom-resource-definition.js +45 -0
- package/dist/factories/kubernetes/extensions/custom-resource-definition.js.map +1 -0
- package/dist/factories/kubernetes/extensions/custom-resource.d.ts +12 -0
- package/dist/factories/kubernetes/extensions/custom-resource.d.ts.map +1 -0
- package/dist/factories/kubernetes/extensions/custom-resource.js +17 -0
- package/dist/factories/kubernetes/extensions/custom-resource.js.map +1 -0
- package/dist/factories/kubernetes/extensions/index.d.ts +9 -0
- package/dist/factories/kubernetes/extensions/index.d.ts.map +1 -0
- package/dist/factories/kubernetes/extensions/index.js +9 -0
- package/dist/factories/kubernetes/extensions/index.js.map +1 -0
- package/dist/factories/kubernetes/index.d.ts +24 -0
- package/dist/factories/kubernetes/index.d.ts.map +1 -0
- package/dist/factories/kubernetes/index.js +75 -0
- package/dist/factories/kubernetes/index.js.map +1 -0
- package/dist/factories/kubernetes/networking/endpoint-slice.d.ts +4 -0
- package/dist/factories/kubernetes/networking/endpoint-slice.d.ts.map +1 -0
- package/dist/factories/kubernetes/networking/endpoint-slice.js +10 -0
- package/dist/factories/kubernetes/networking/endpoint-slice.js.map +1 -0
- package/dist/factories/kubernetes/networking/endpoints.d.ts +4 -0
- package/dist/factories/kubernetes/networking/endpoints.d.ts.map +1 -0
- package/dist/factories/kubernetes/networking/endpoints.js +39 -0
- package/dist/factories/kubernetes/networking/endpoints.js.map +1 -0
- package/dist/factories/kubernetes/networking/index.d.ts +13 -0
- package/dist/factories/kubernetes/networking/index.d.ts.map +1 -0
- package/dist/factories/kubernetes/networking/index.js +13 -0
- package/dist/factories/kubernetes/networking/index.js.map +1 -0
- package/dist/factories/kubernetes/networking/ingress-class.d.ts +5 -0
- package/dist/factories/kubernetes/networking/ingress-class.d.ts.map +1 -0
- package/dist/factories/kubernetes/networking/ingress-class.js +16 -0
- package/dist/factories/kubernetes/networking/ingress-class.js.map +1 -0
- package/dist/factories/kubernetes/networking/ingress.d.ts +5 -0
- package/dist/factories/kubernetes/networking/ingress.d.ts.map +1 -0
- package/dist/factories/kubernetes/networking/ingress.js +33 -0
- package/dist/factories/kubernetes/networking/ingress.js.map +1 -0
- package/dist/factories/kubernetes/networking/network-policy.d.ts +5 -0
- package/dist/factories/kubernetes/networking/network-policy.d.ts.map +1 -0
- package/dist/factories/kubernetes/networking/network-policy.js +17 -0
- package/dist/factories/kubernetes/networking/network-policy.js.map +1 -0
- package/dist/factories/kubernetes/networking/service.d.ts +5 -0
- package/dist/factories/kubernetes/networking/service.d.ts.map +1 -0
- package/dist/factories/kubernetes/networking/service.js +64 -0
- package/dist/factories/kubernetes/networking/service.js.map +1 -0
- package/dist/factories/kubernetes/policy/index.d.ts +10 -0
- package/dist/factories/kubernetes/policy/index.d.ts.map +1 -0
- package/dist/factories/kubernetes/policy/index.js +10 -0
- package/dist/factories/kubernetes/policy/index.js.map +1 -0
- package/dist/factories/kubernetes/policy/limit-range.d.ts +5 -0
- package/dist/factories/kubernetes/policy/limit-range.d.ts.map +1 -0
- package/dist/factories/kubernetes/policy/limit-range.js +17 -0
- package/dist/factories/kubernetes/policy/limit-range.js.map +1 -0
- package/dist/factories/kubernetes/policy/pod-disruption-budget.d.ts +6 -0
- package/dist/factories/kubernetes/policy/pod-disruption-budget.d.ts.map +1 -0
- package/dist/factories/kubernetes/policy/pod-disruption-budget.js +55 -0
- package/dist/factories/kubernetes/policy/pod-disruption-budget.js.map +1 -0
- package/dist/factories/kubernetes/policy/resource-quota.d.ts +6 -0
- package/dist/factories/kubernetes/policy/resource-quota.d.ts.map +1 -0
- package/dist/factories/kubernetes/policy/resource-quota.js +43 -0
- package/dist/factories/kubernetes/policy/resource-quota.js.map +1 -0
- package/dist/factories/kubernetes/rbac/cluster-role-binding.d.ts +4 -0
- package/dist/factories/kubernetes/rbac/cluster-role-binding.d.ts.map +1 -0
- package/dist/factories/kubernetes/rbac/cluster-role-binding.js +17 -0
- package/dist/factories/kubernetes/rbac/cluster-role-binding.js.map +1 -0
- package/dist/factories/kubernetes/rbac/cluster-role.d.ts +4 -0
- package/dist/factories/kubernetes/rbac/cluster-role.d.ts.map +1 -0
- package/dist/factories/kubernetes/rbac/cluster-role.js +17 -0
- package/dist/factories/kubernetes/rbac/cluster-role.js.map +1 -0
- package/dist/factories/kubernetes/rbac/index.d.ts +12 -0
- package/dist/factories/kubernetes/rbac/index.d.ts.map +1 -0
- package/dist/factories/kubernetes/rbac/index.js +12 -0
- package/dist/factories/kubernetes/rbac/index.js.map +1 -0
- package/dist/factories/kubernetes/rbac/role-binding.d.ts +4 -0
- package/dist/factories/kubernetes/rbac/role-binding.d.ts.map +1 -0
- package/dist/factories/kubernetes/rbac/role-binding.js +17 -0
- package/dist/factories/kubernetes/rbac/role-binding.js.map +1 -0
- package/dist/factories/kubernetes/rbac/role.d.ts +4 -0
- package/dist/factories/kubernetes/rbac/role.d.ts.map +1 -0
- package/dist/factories/kubernetes/rbac/role.js +17 -0
- package/dist/factories/kubernetes/rbac/role.js.map +1 -0
- package/dist/factories/kubernetes/rbac/service-account.d.ts +4 -0
- package/dist/factories/kubernetes/rbac/service-account.d.ts.map +1 -0
- package/dist/factories/kubernetes/rbac/service-account.js +17 -0
- package/dist/factories/kubernetes/rbac/service-account.js.map +1 -0
- package/dist/factories/kubernetes/scheduling/index.d.ts +9 -0
- package/dist/factories/kubernetes/scheduling/index.d.ts.map +1 -0
- package/dist/factories/kubernetes/scheduling/index.js +9 -0
- package/dist/factories/kubernetes/scheduling/index.js.map +1 -0
- package/dist/factories/kubernetes/scheduling/priority-class.d.ts +4 -0
- package/dist/factories/kubernetes/scheduling/priority-class.d.ts.map +1 -0
- package/dist/factories/kubernetes/scheduling/priority-class.js +16 -0
- package/dist/factories/kubernetes/scheduling/priority-class.js.map +1 -0
- package/dist/factories/kubernetes/scheduling/runtime-class.d.ts +5 -0
- package/dist/factories/kubernetes/scheduling/runtime-class.d.ts.map +1 -0
- package/dist/factories/kubernetes/scheduling/runtime-class.js +10 -0
- package/dist/factories/kubernetes/scheduling/runtime-class.js.map +1 -0
- package/dist/factories/kubernetes/storage/csi-driver.d.ts +5 -0
- package/dist/factories/kubernetes/storage/csi-driver.d.ts.map +1 -0
- package/dist/factories/kubernetes/storage/csi-driver.js +16 -0
- package/dist/factories/kubernetes/storage/csi-driver.js.map +1 -0
- package/dist/factories/kubernetes/storage/csi-node.d.ts +5 -0
- package/dist/factories/kubernetes/storage/csi-node.d.ts.map +1 -0
- package/dist/factories/kubernetes/storage/csi-node.js +10 -0
- package/dist/factories/kubernetes/storage/csi-node.js.map +1 -0
- package/dist/factories/kubernetes/storage/index.d.ts +13 -0
- package/dist/factories/kubernetes/storage/index.d.ts.map +1 -0
- package/dist/factories/kubernetes/storage/index.js +13 -0
- package/dist/factories/kubernetes/storage/index.js.map +1 -0
- package/dist/factories/kubernetes/storage/persistent-volume-claim.d.ts +6 -0
- package/dist/factories/kubernetes/storage/persistent-volume-claim.d.ts.map +1 -0
- package/dist/factories/kubernetes/storage/persistent-volume-claim.js +30 -0
- package/dist/factories/kubernetes/storage/persistent-volume-claim.js.map +1 -0
- package/dist/factories/kubernetes/storage/persistent-volume.d.ts +6 -0
- package/dist/factories/kubernetes/storage/persistent-volume.d.ts.map +1 -0
- package/dist/factories/kubernetes/storage/persistent-volume.js +47 -0
- package/dist/factories/kubernetes/storage/persistent-volume.js.map +1 -0
- package/dist/factories/kubernetes/storage/storage-class.d.ts +4 -0
- package/dist/factories/kubernetes/storage/storage-class.d.ts.map +1 -0
- package/dist/factories/kubernetes/storage/storage-class.js +17 -0
- package/dist/factories/kubernetes/storage/storage-class.js.map +1 -0
- package/dist/factories/kubernetes/storage/volume-attachment.d.ts +6 -0
- package/dist/factories/kubernetes/storage/volume-attachment.d.ts.map +1 -0
- package/dist/factories/kubernetes/storage/volume-attachment.js +10 -0
- package/dist/factories/kubernetes/storage/volume-attachment.js.map +1 -0
- package/dist/factories/kubernetes/types.d.ts +8 -0
- package/dist/factories/kubernetes/types.d.ts.map +1 -0
- package/dist/factories/kubernetes/types.js +8 -0
- package/dist/factories/kubernetes/types.js.map +1 -0
- package/dist/factories/kubernetes/workloads/cron-job.d.ts +6 -0
- package/dist/factories/kubernetes/workloads/cron-job.d.ts.map +1 -0
- package/dist/factories/kubernetes/workloads/cron-job.js +53 -0
- package/dist/factories/kubernetes/workloads/cron-job.js.map +1 -0
- package/dist/factories/kubernetes/workloads/daemon-set.d.ts +6 -0
- package/dist/factories/kubernetes/workloads/daemon-set.d.ts.map +1 -0
- package/dist/factories/kubernetes/workloads/daemon-set.js +32 -0
- package/dist/factories/kubernetes/workloads/daemon-set.js.map +1 -0
- package/dist/factories/kubernetes/workloads/deployment.d.ts +5 -0
- package/dist/factories/kubernetes/workloads/deployment.d.ts.map +1 -0
- package/dist/factories/kubernetes/workloads/deployment.js +59 -0
- package/dist/factories/kubernetes/workloads/deployment.js.map +1 -0
- package/dist/factories/kubernetes/workloads/index.d.ts +14 -0
- package/dist/factories/kubernetes/workloads/index.d.ts.map +1 -0
- package/dist/factories/kubernetes/workloads/index.js +14 -0
- package/dist/factories/kubernetes/workloads/index.js.map +1 -0
- package/dist/factories/kubernetes/workloads/job.d.ts +6 -0
- package/dist/factories/kubernetes/workloads/job.d.ts.map +1 -0
- package/dist/factories/kubernetes/workloads/job.js +105 -0
- package/dist/factories/kubernetes/workloads/job.js.map +1 -0
- package/dist/factories/kubernetes/workloads/replica-set.d.ts +6 -0
- package/dist/factories/kubernetes/workloads/replica-set.d.ts.map +1 -0
- package/dist/factories/kubernetes/workloads/replica-set.js +33 -0
- package/dist/factories/kubernetes/workloads/replica-set.js.map +1 -0
- package/dist/factories/kubernetes/workloads/replication-controller.d.ts +6 -0
- package/dist/factories/kubernetes/workloads/replication-controller.d.ts.map +1 -0
- package/dist/factories/kubernetes/workloads/replication-controller.js +56 -0
- package/dist/factories/kubernetes/workloads/replication-controller.js.map +1 -0
- package/dist/factories/kubernetes/workloads/stateful-set.d.ts +6 -0
- package/dist/factories/kubernetes/workloads/stateful-set.d.ts.map +1 -0
- package/dist/factories/kubernetes/workloads/stateful-set.js +81 -0
- package/dist/factories/kubernetes/workloads/stateful-set.js.map +1 -0
- package/dist/factories/kubernetes/yaml/index.d.ts +6 -0
- package/dist/factories/kubernetes/yaml/index.d.ts.map +1 -0
- package/dist/factories/kubernetes/yaml/index.js +6 -0
- package/dist/factories/kubernetes/yaml/index.js.map +1 -0
- package/dist/factories/kubernetes/yaml/yaml-directory.d.ts +54 -0
- package/dist/factories/kubernetes/yaml/yaml-directory.d.ts.map +1 -0
- package/dist/factories/kubernetes/yaml/yaml-directory.js +178 -0
- package/dist/factories/kubernetes/yaml/yaml-directory.js.map +1 -0
- package/dist/factories/kubernetes/yaml/yaml-file.d.ts +54 -0
- package/dist/factories/kubernetes/yaml/yaml-file.d.ts.map +1 -0
- package/dist/factories/kubernetes/yaml/yaml-file.js +181 -0
- package/dist/factories/kubernetes/yaml/yaml-file.js.map +1 -0
- package/dist/factories/shared.d.ts +11 -0
- package/dist/factories/shared.d.ts.map +1 -0
- package/dist/factories/shared.js +364 -0
- package/dist/factories/shared.js.map +1 -0
- package/dist/index.d.ts +9 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +49 -0
- package/dist/index.js.map +1 -0
- package/dist/utils/helpers.d.ts +69 -0
- package/dist/utils/helpers.d.ts.map +1 -0
- package/dist/utils/helpers.js +405 -0
- package/dist/utils/helpers.js.map +1 -0
- package/dist/utils/index.d.ts +9 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +11 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/type-guards.d.ts +34 -0
- package/dist/utils/type-guards.d.ts.map +1 -0
- package/dist/utils/type-guards.js +66 -0
- package/dist/utils/type-guards.js.map +1 -0
- package/package.json +109 -0
|
@@ -0,0 +1,405 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* General utility functions for TypeKro
|
|
3
|
+
*
|
|
4
|
+
* This module contains helper functions that are used across the codebase
|
|
5
|
+
* for common operations like string manipulation, ID generation, and
|
|
6
|
+
* data processing.
|
|
7
|
+
*/
|
|
8
|
+
import { isKubernetesRef, isCelExpression } from './type-guards.js';
|
|
9
|
+
import { ReadinessEvaluatorRegistry } from '../core/readiness/index.js';
|
|
10
|
+
/**
|
|
11
|
+
* Generate deterministic resource ID based on resource metadata
|
|
12
|
+
* This ensures stable IDs across multiple applications for GitOps workflows
|
|
13
|
+
*/
|
|
14
|
+
export function generateDeterministicResourceId(kind, name, _namespace) {
|
|
15
|
+
const cleanKind = kind.toLowerCase().replace(/[^a-zA-Z0-9]/g, '');
|
|
16
|
+
// Handle case where name is a KubernetesRef (schema reference)
|
|
17
|
+
if (isKubernetesRef(name)) {
|
|
18
|
+
// For schema references, we can't generate a deterministic ID without evaluation
|
|
19
|
+
// Throw an error suggesting the user provide an explicit ID
|
|
20
|
+
throw new Error(`Cannot generate deterministic resource ID for ${kind} with KubernetesRef name. ` +
|
|
21
|
+
`Please provide an explicit 'id' field in the resource config, e.g.: ` +
|
|
22
|
+
`simpleDeployment({ name: schema.spec.name, image: 'nginx', id: 'my-deployment' })`);
|
|
23
|
+
}
|
|
24
|
+
// Handle case where name is a CEL expression
|
|
25
|
+
if (isCelExpression(name)) {
|
|
26
|
+
// For CEL expressions, we can't generate a deterministic ID without evaluation
|
|
27
|
+
// Throw an error suggesting the user provide an explicit ID
|
|
28
|
+
throw new Error(`Cannot generate deterministic resource ID for ${kind} with CEL expression name. ` +
|
|
29
|
+
`Please provide an explicit 'id' field in the resource config, e.g.: ` +
|
|
30
|
+
`simpleDeployment({ name: Cel.expr('my-', schema.spec.name), image: 'nginx', id: 'my-deployment' })`);
|
|
31
|
+
}
|
|
32
|
+
// Handle normal string names - these are safe for deterministic ID generation
|
|
33
|
+
const nameStr = name;
|
|
34
|
+
// Check if the name contains template expressions (legacy string templates)
|
|
35
|
+
if (nameStr.includes('${') || nameStr.includes('{{')) {
|
|
36
|
+
throw new Error(`Cannot generate deterministic resource ID for ${kind} with template expression in name: "${nameStr}". ` +
|
|
37
|
+
`Please either use static names or provide an explicit 'id' in the resource factory options.`);
|
|
38
|
+
}
|
|
39
|
+
// For static names, generate a clean, deterministic ID
|
|
40
|
+
// If the name already contains the kind, just use the name
|
|
41
|
+
if (nameStr.toLowerCase().includes(cleanKind)) {
|
|
42
|
+
return toCamelCase(nameStr);
|
|
43
|
+
}
|
|
44
|
+
// Otherwise, prefix with kind for clarity
|
|
45
|
+
return toCamelCase(`${cleanKind}-${nameStr}`);
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Converts a kebab-case or snake_case string to camelCase
|
|
49
|
+
*/
|
|
50
|
+
export function toCamelCase(str) {
|
|
51
|
+
// Return early for empty strings to avoid errors.
|
|
52
|
+
if (!str) {
|
|
53
|
+
return '';
|
|
54
|
+
}
|
|
55
|
+
return str
|
|
56
|
+
.split(/[-_]/)
|
|
57
|
+
.map((word, index) => {
|
|
58
|
+
// If it's the first word, just lowercase the first letter and keep the rest.
|
|
59
|
+
if (index === 0) {
|
|
60
|
+
return word.charAt(0).toLowerCase() + word.slice(1);
|
|
61
|
+
}
|
|
62
|
+
// For all subsequent words, capitalize the first letter and lowercase the rest.
|
|
63
|
+
return word.charAt(0).toUpperCase() + word.slice(1).toLowerCase();
|
|
64
|
+
})
|
|
65
|
+
.join('');
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Generates a unique resource ID (legacy random version for development)
|
|
69
|
+
*/
|
|
70
|
+
export function generateResourceId(name) {
|
|
71
|
+
const timestamp = Date.now().toString(36);
|
|
72
|
+
const random = Math.random().toString(36).substring(2, 8);
|
|
73
|
+
return name
|
|
74
|
+
? `${name.replace(/[^a-zA-Z0-9-]/g, '')}-${timestamp}-${random}`
|
|
75
|
+
: `resource-${timestamp}-${random}`;
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Converts a string to PascalCase.
|
|
79
|
+
*/
|
|
80
|
+
export function pascalCase(str) {
|
|
81
|
+
return str
|
|
82
|
+
.split(/[-_\s]+/)
|
|
83
|
+
.map((word) => word.charAt(0).toUpperCase() + word.slice(1).toLowerCase())
|
|
84
|
+
.join('');
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Generate CEL expression with configurable context.
|
|
88
|
+
* This now uses the shared helper function from cel.ts.
|
|
89
|
+
*/
|
|
90
|
+
function generateCelExpression(ref, _context) {
|
|
91
|
+
// Use the single, authoritative function to get the correct path.
|
|
92
|
+
const expression = getInnerCelPath(ref);
|
|
93
|
+
return `\${${expression}}`;
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Generate inner CEL reference without ${} wrapper for building expressions
|
|
97
|
+
*/
|
|
98
|
+
export function generateCelReference(ref) {
|
|
99
|
+
const resourceId = ref.resourceId === '__schema__' ? 'schema' : ref.resourceId;
|
|
100
|
+
return `${resourceId}.${ref.fieldPath}`;
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Gets the inner CEL path for a KubernetesRef, handling special cases like schema refs.
|
|
104
|
+
* This is the new, authoritative function.
|
|
105
|
+
*/
|
|
106
|
+
export function getInnerCelPath(ref) {
|
|
107
|
+
const resourceId = ref.resourceId === '__schema__' ? 'schema' : ref.resourceId;
|
|
108
|
+
return `${resourceId}.${ref.fieldPath}`;
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* Recursively replaces all KubernetesRef objects with CEL expressions for Kro.
|
|
112
|
+
* This is the ONLY function that should perform this transformation.
|
|
113
|
+
*/
|
|
114
|
+
export function processResourceReferences(obj, context) {
|
|
115
|
+
if (isKubernetesRef(obj)) {
|
|
116
|
+
// Use configurable CEL expression format instead of hardcoded "resources."
|
|
117
|
+
return generateCelExpression(obj, context);
|
|
118
|
+
}
|
|
119
|
+
if (isCelExpression(obj)) {
|
|
120
|
+
// Check if this is a template expression (mixed string with embedded CEL)
|
|
121
|
+
if (obj.__isTemplate) {
|
|
122
|
+
// Template expressions already contain ${...} placeholders, don't wrap again
|
|
123
|
+
return obj.expression;
|
|
124
|
+
}
|
|
125
|
+
// Regular CEL expressions need to be wrapped with ${} for Kro
|
|
126
|
+
return `\${${obj.expression}}`;
|
|
127
|
+
}
|
|
128
|
+
if (Array.isArray(obj)) {
|
|
129
|
+
return obj.map((item) => processResourceReferences(item, context));
|
|
130
|
+
}
|
|
131
|
+
if (obj && typeof obj === 'object') {
|
|
132
|
+
const result = {};
|
|
133
|
+
// Use Object.entries to get enumerable properties
|
|
134
|
+
for (const [key, value] of Object.entries(obj)) {
|
|
135
|
+
// Exclude the hidden resourceId property and id field from the final template
|
|
136
|
+
if (key === '__resourceId' || key === 'id')
|
|
137
|
+
continue;
|
|
138
|
+
result[key] = processResourceReferences(value, context);
|
|
139
|
+
}
|
|
140
|
+
// Preserve the readinessEvaluator function if it exists (it's non-enumerable)
|
|
141
|
+
const originalObj = obj;
|
|
142
|
+
if (originalObj.readinessEvaluator && typeof originalObj.readinessEvaluator === 'function') {
|
|
143
|
+
Object.defineProperty(result, 'readinessEvaluator', {
|
|
144
|
+
value: originalObj.readinessEvaluator,
|
|
145
|
+
enumerable: false,
|
|
146
|
+
configurable: true,
|
|
147
|
+
writable: false,
|
|
148
|
+
});
|
|
149
|
+
}
|
|
150
|
+
return result;
|
|
151
|
+
}
|
|
152
|
+
return obj;
|
|
153
|
+
}
|
|
154
|
+
/**
|
|
155
|
+
* Converts an Arktype JSON AST node into a Kro-compatible type string.
|
|
156
|
+
* This is the final version, corrected to handle single-quoted literals.
|
|
157
|
+
* @param node The Arktype JSON AST node.
|
|
158
|
+
* @returns A string representing the Kro type.
|
|
159
|
+
*/
|
|
160
|
+
function getKroTypeFromJson(node) {
|
|
161
|
+
// Case 1: The node is an object describing a type.
|
|
162
|
+
if (typeof node === 'object' && node !== null && !Array.isArray(node)) {
|
|
163
|
+
const nodeObj = node;
|
|
164
|
+
if (nodeObj.proto === 'Array' && nodeObj.sequence) {
|
|
165
|
+
return `[]${getKroTypeFromJson(nodeObj.sequence)}`;
|
|
166
|
+
}
|
|
167
|
+
if (nodeObj.domain === 'number' && nodeObj.divisor === 1) {
|
|
168
|
+
return 'integer';
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
// Case 2: The node is an array, representing a union of literals.
|
|
172
|
+
if (Array.isArray(node)) {
|
|
173
|
+
if (node.length === 2 &&
|
|
174
|
+
node.some((branch) => branch.unit === true) &&
|
|
175
|
+
node.some((branch) => branch.unit === false)) {
|
|
176
|
+
return 'boolean';
|
|
177
|
+
}
|
|
178
|
+
// Handle literal unions - use Kro Simple Schema enum format
|
|
179
|
+
const enumValues = node.map((branch) => {
|
|
180
|
+
if (typeof branch.unit === 'string') {
|
|
181
|
+
return branch.unit;
|
|
182
|
+
}
|
|
183
|
+
return String(branch.unit);
|
|
184
|
+
});
|
|
185
|
+
// Return as Kro Simple Schema enum format: string | enum="value1,value2,value3"
|
|
186
|
+
return `string | enum="${enumValues.join(',')}"`;
|
|
187
|
+
}
|
|
188
|
+
// Case 3: The node is a simple string representing a primitive type.
|
|
189
|
+
if (typeof node === 'string') {
|
|
190
|
+
if (node.includes('%')) {
|
|
191
|
+
const [domain] = node.split('%');
|
|
192
|
+
if (domain === 'number')
|
|
193
|
+
return 'integer';
|
|
194
|
+
}
|
|
195
|
+
switch (node) {
|
|
196
|
+
case 'number':
|
|
197
|
+
return 'integer';
|
|
198
|
+
case 'string':
|
|
199
|
+
case 'boolean':
|
|
200
|
+
return node;
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
// Fallback for safety.
|
|
204
|
+
return 'string';
|
|
205
|
+
}
|
|
206
|
+
function arktypeJsonToKroFields(node, prefix = '') {
|
|
207
|
+
let fields = {};
|
|
208
|
+
// Handle case where node doesn't have required/optional structure
|
|
209
|
+
if (!node || typeof node !== 'object') {
|
|
210
|
+
return fields;
|
|
211
|
+
}
|
|
212
|
+
const nodeObj = node;
|
|
213
|
+
if (!nodeObj.required && !nodeObj.optional) {
|
|
214
|
+
return fields;
|
|
215
|
+
}
|
|
216
|
+
const required = Array.isArray(nodeObj.required) ? nodeObj.required : [];
|
|
217
|
+
const optional = Array.isArray(nodeObj.optional) ? nodeObj.optional : [];
|
|
218
|
+
const props = [...required, ...optional];
|
|
219
|
+
for (const prop of props) {
|
|
220
|
+
// THIS IS THE CORRECTED LOGIC FOR CREATING THE KEY
|
|
221
|
+
// It correctly joins camelCased keys like "connection" and "poolSize".
|
|
222
|
+
const newKey = prefix
|
|
223
|
+
? `${prefix}${prop.key.charAt(0).toUpperCase() + prop.key.slice(1)}`
|
|
224
|
+
: prop.key;
|
|
225
|
+
const childNode = prop.value;
|
|
226
|
+
if (typeof childNode === 'object' &&
|
|
227
|
+
childNode !== null &&
|
|
228
|
+
(childNode.required || childNode.optional)) {
|
|
229
|
+
const nestedFields = arktypeJsonToKroFields(childNode, newKey);
|
|
230
|
+
fields = { ...fields, ...nestedFields };
|
|
231
|
+
}
|
|
232
|
+
else {
|
|
233
|
+
fields[newKey] = getKroTypeFromJson(childNode);
|
|
234
|
+
}
|
|
235
|
+
}
|
|
236
|
+
return fields;
|
|
237
|
+
}
|
|
238
|
+
/**
|
|
239
|
+
* Serialize user-defined status mappings to CEL expressions for Kro schema
|
|
240
|
+
* Only processes dynamic fields that require Kro resolution
|
|
241
|
+
*/
|
|
242
|
+
function serializeStatusMappingsToCel(statusMappings) {
|
|
243
|
+
const celExpressions = {};
|
|
244
|
+
function serializeValue(value) {
|
|
245
|
+
// Handle KubernetesRef objects (can be functions due to proxy)
|
|
246
|
+
if (isKubernetesRef(value)) {
|
|
247
|
+
return `\${${value.resourceId}.${value.fieldPath}}`;
|
|
248
|
+
}
|
|
249
|
+
// Handle CelExpression objects
|
|
250
|
+
if (isCelExpression(value)) {
|
|
251
|
+
// Check if this is a template expression (mixed string with embedded CEL)
|
|
252
|
+
if (value.__isTemplate) {
|
|
253
|
+
// Template expressions already contain ${...} placeholders, don't wrap again
|
|
254
|
+
return value.expression;
|
|
255
|
+
}
|
|
256
|
+
return `\${${value.expression}}`;
|
|
257
|
+
}
|
|
258
|
+
// Handle nested objects recursively
|
|
259
|
+
if (value && typeof value === 'object' && !Array.isArray(value)) {
|
|
260
|
+
const nestedExpressions = {};
|
|
261
|
+
for (const [key, nestedValue] of Object.entries(value)) {
|
|
262
|
+
nestedExpressions[key] = serializeValue(nestedValue);
|
|
263
|
+
}
|
|
264
|
+
return nestedExpressions; // Return as any for nested objects
|
|
265
|
+
}
|
|
266
|
+
// Handle primitive values
|
|
267
|
+
if (typeof value === 'string') {
|
|
268
|
+
return `\${"${value}"}`;
|
|
269
|
+
}
|
|
270
|
+
if (typeof value === 'number') {
|
|
271
|
+
return `\${${value}}`;
|
|
272
|
+
}
|
|
273
|
+
if (typeof value === 'boolean') {
|
|
274
|
+
return `\${${value}}`;
|
|
275
|
+
}
|
|
276
|
+
// Fallback for unknown types
|
|
277
|
+
return `\${""}`;
|
|
278
|
+
}
|
|
279
|
+
for (const [fieldName, fieldValue] of Object.entries(statusMappings)) {
|
|
280
|
+
celExpressions[fieldName] = serializeValue(fieldValue);
|
|
281
|
+
}
|
|
282
|
+
return celExpressions;
|
|
283
|
+
}
|
|
284
|
+
/**
|
|
285
|
+
* Determines if a status field value requires Kro resolution (contains Kubernetes references or CEL expressions)
|
|
286
|
+
*/
|
|
287
|
+
function _requiresKroResolution(value) {
|
|
288
|
+
if (isKubernetesRef(value)) {
|
|
289
|
+
return true;
|
|
290
|
+
}
|
|
291
|
+
if (isCelExpression(value)) {
|
|
292
|
+
// Check if the CEL expression contains resource references
|
|
293
|
+
const expression = value.expression;
|
|
294
|
+
const resourceRefPattern = /([a-zA-Z][a-zA-Z0-9]*)\.(status|spec|metadata)\./;
|
|
295
|
+
return resourceRefPattern.test(expression);
|
|
296
|
+
}
|
|
297
|
+
if (value && typeof value === 'object' && !Array.isArray(value) && !isCelExpression(value)) {
|
|
298
|
+
// Recursively check nested objects
|
|
299
|
+
return Object.values(value).some(_requiresKroResolution);
|
|
300
|
+
}
|
|
301
|
+
return false;
|
|
302
|
+
}
|
|
303
|
+
/**
|
|
304
|
+
* Convert kebab-case or snake_case to camelCase and ensure a readiness evaluator by using the appropriate factory function
|
|
305
|
+
* This leverages existing factory functions that already have readiness evaluators defined
|
|
306
|
+
*/
|
|
307
|
+
export function ensureReadinessEvaluator(resource) {
|
|
308
|
+
// First: Check if resource already has attached evaluator
|
|
309
|
+
if (typeof resource.readinessEvaluator === 'function') {
|
|
310
|
+
return resource;
|
|
311
|
+
}
|
|
312
|
+
// Second: Look up in registry by KIND
|
|
313
|
+
const registry = ReadinessEvaluatorRegistry.getInstance();
|
|
314
|
+
const evaluator = registry.getEvaluatorForKind(resource.kind);
|
|
315
|
+
if (evaluator) {
|
|
316
|
+
// Attach the registry evaluator to this resource instance
|
|
317
|
+
Object.defineProperty(resource, 'readinessEvaluator', {
|
|
318
|
+
value: evaluator,
|
|
319
|
+
enumerable: false,
|
|
320
|
+
configurable: true,
|
|
321
|
+
writable: false,
|
|
322
|
+
});
|
|
323
|
+
return resource;
|
|
324
|
+
}
|
|
325
|
+
// Third: No evaluator found anywhere
|
|
326
|
+
throw new Error(`No readiness evaluator found for ${resource.kind}/${resource.metadata?.name}. ` +
|
|
327
|
+
`Use a factory function like deployment(), configMap(), etc., or call .withReadinessEvaluator().`);
|
|
328
|
+
}
|
|
329
|
+
/**
|
|
330
|
+
* Recursively converts an Enhanced resource proxy into a plain JavaScript object.
|
|
331
|
+
* This is a safe way to serialize the object for the Kubernetes client, preserving
|
|
332
|
+
* all nested properties and stripping any remaining proxy logic.
|
|
333
|
+
* @param obj The object to convert.
|
|
334
|
+
* @param visited A set to track circular references.
|
|
335
|
+
* @returns A plain JavaScript object.
|
|
336
|
+
*/
|
|
337
|
+
export function toPlainObject(obj, visited = new Set()) {
|
|
338
|
+
if (obj === null || typeof obj !== 'object') {
|
|
339
|
+
return obj;
|
|
340
|
+
}
|
|
341
|
+
if (visited.has(obj)) {
|
|
342
|
+
return obj; // Avoid circular loops
|
|
343
|
+
}
|
|
344
|
+
visited.add(obj);
|
|
345
|
+
// Handle arrays by converting each item
|
|
346
|
+
if (Array.isArray(obj)) {
|
|
347
|
+
const plainArray = obj.map((item) => toPlainObject(item, visited));
|
|
348
|
+
visited.delete(obj);
|
|
349
|
+
return plainArray;
|
|
350
|
+
}
|
|
351
|
+
// Use getOwnPropertyNames and getOwnPropertySymbols to capture all keys,
|
|
352
|
+
// including non-enumerable ones (like our brand symbols) if needed.
|
|
353
|
+
const plainObj = {};
|
|
354
|
+
const keys = Reflect.ownKeys(obj);
|
|
355
|
+
for (const key of keys) {
|
|
356
|
+
const value = obj[key];
|
|
357
|
+
// Preserve readinessEvaluator function as-is
|
|
358
|
+
if (key === 'readinessEvaluator') {
|
|
359
|
+
plainObj[key] = value;
|
|
360
|
+
}
|
|
361
|
+
// Skip other functions like 'withReadinessEvaluator'
|
|
362
|
+
else if (typeof value !== 'function') {
|
|
363
|
+
plainObj[key] = toPlainObject(value, visited);
|
|
364
|
+
}
|
|
365
|
+
}
|
|
366
|
+
visited.delete(obj);
|
|
367
|
+
return plainObj;
|
|
368
|
+
}
|
|
369
|
+
/**
|
|
370
|
+
* Converts an Arktype schema to a Kro-compatible schema definition
|
|
371
|
+
*
|
|
372
|
+
* IMPORTANT: Status fields in Kro now use user-defined mappings from the StatusBuilder function
|
|
373
|
+
* instead of auto-generated CEL expressions.
|
|
374
|
+
*/
|
|
375
|
+
export function arktypeToKroSchema(name, schemaDefinition, _resources, statusMappings) {
|
|
376
|
+
const specFields = arktypeJsonToKroFields(schemaDefinition.spec.json);
|
|
377
|
+
if (!specFields.name) {
|
|
378
|
+
specFields.name = `string | default="${name}"`;
|
|
379
|
+
}
|
|
380
|
+
// Separate static and dynamic status fields
|
|
381
|
+
const { dynamicFields } = statusMappings
|
|
382
|
+
? separateStatusFields(statusMappings)
|
|
383
|
+
: { dynamicFields: {} };
|
|
384
|
+
// Only serialize dynamic fields that need Kro resolution
|
|
385
|
+
const statusCelExpressions = Object.keys(dynamicFields).length > 0 ? serializeStatusMappingsToCel(dynamicFields) : {};
|
|
386
|
+
// Extract just the version part for the schema (Kro expects v1alpha1, not kro.run/v1alpha1)
|
|
387
|
+
const schemaApiVersion = schemaDefinition.apiVersion.includes('/')
|
|
388
|
+
? schemaDefinition.apiVersion.split('/')[1] || schemaDefinition.apiVersion
|
|
389
|
+
: schemaDefinition.apiVersion;
|
|
390
|
+
return {
|
|
391
|
+
apiVersion: schemaApiVersion,
|
|
392
|
+
kind: schemaDefinition.kind,
|
|
393
|
+
spec: specFields,
|
|
394
|
+
status: {
|
|
395
|
+
// Only dynamic status field mappings as CEL expressions
|
|
396
|
+
// Static fields will be hydrated directly by TypeKro
|
|
397
|
+
// Kro automatically injects default fields (phase, message, observedGeneration, conditions, state)
|
|
398
|
+
...statusCelExpressions,
|
|
399
|
+
},
|
|
400
|
+
};
|
|
401
|
+
}
|
|
402
|
+
// Function removed - status mappings are now user-defined via StatusBuilder
|
|
403
|
+
// Import type guards from the type-guards module (removed duplicate import)
|
|
404
|
+
import { separateStatusFields } from '../core/validation/cel-validator.js';
|
|
405
|
+
//# sourceMappingURL=helpers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../src/utils/helpers.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Utilities Module
|
|
3
|
+
*
|
|
4
|
+
* This module provides general utility functions and type guards
|
|
5
|
+
* that are used throughout the TypeKro codebase.
|
|
6
|
+
*/
|
|
7
|
+
export { arktypeToKroSchema, generateCelReference, generateDeterministicResourceId, generateResourceId, getInnerCelPath, pascalCase, processResourceReferences, } from './helpers.js';
|
|
8
|
+
export { extractResourceReferences, isCelExpression, isKubernetesRef, isResourceReference, } from './type-guards.js';
|
|
9
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EACL,kBAAkB,EAClB,oBAAoB,EACpB,+BAA+B,EAC/B,kBAAkB,EAClB,eAAe,EACf,UAAU,EACV,yBAAyB,GAC1B,MAAM,cAAc,CAAC;AAGtB,OAAO,EACL,yBAAyB,EACzB,eAAe,EACf,eAAe,EACf,mBAAmB,GACpB,MAAM,kBAAkB,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Utilities Module
|
|
3
|
+
*
|
|
4
|
+
* This module provides general utility functions and type guards
|
|
5
|
+
* that are used throughout the TypeKro codebase.
|
|
6
|
+
*/
|
|
7
|
+
// Export helper functions
|
|
8
|
+
export { arktypeToKroSchema, generateCelReference, generateDeterministicResourceId, generateResourceId, getInnerCelPath, pascalCase, processResourceReferences, } from './helpers.js';
|
|
9
|
+
// Export type guard functions
|
|
10
|
+
export { extractResourceReferences, isCelExpression, isKubernetesRef, isResourceReference, } from './type-guards.js';
|
|
11
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,0BAA0B;AAC1B,OAAO,EACL,kBAAkB,EAClB,oBAAoB,EACpB,+BAA+B,EAC/B,kBAAkB,EAClB,eAAe,EACf,UAAU,EACV,yBAAyB,GAC1B,MAAM,cAAc,CAAC;AAEtB,8BAA8B;AAC9B,OAAO,EACL,yBAAyB,EACzB,eAAe,EACf,eAAe,EACf,mBAAmB,GACpB,MAAM,kBAAkB,CAAC"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Type guard functions for TypeKro
|
|
3
|
+
*
|
|
4
|
+
* This module contains type guard functions that are used throughout
|
|
5
|
+
* the codebase to safely check and narrow types at runtime.
|
|
6
|
+
*/
|
|
7
|
+
import type { CelExpression, KubernetesRef, ResourceReference } from '../core/types.js';
|
|
8
|
+
import { MIXED_TEMPLATE_BRAND } from '../core/constants/brands.js';
|
|
9
|
+
/**
|
|
10
|
+
* Type guard to check if a value is a compile-time KubernetesRef.
|
|
11
|
+
* Note: At runtime, these are the objects created by the proxy.
|
|
12
|
+
*/
|
|
13
|
+
export declare function isKubernetesRef(obj: unknown): obj is KubernetesRef<unknown>;
|
|
14
|
+
/**
|
|
15
|
+
* Type guard to check if a value is a runtime ResourceReference.
|
|
16
|
+
* This is what the serializer looks for.
|
|
17
|
+
*/
|
|
18
|
+
export declare function isResourceReference(obj: unknown): obj is ResourceReference<unknown>;
|
|
19
|
+
/**
|
|
20
|
+
* Type guard to check if a value is a CEL expression
|
|
21
|
+
*/
|
|
22
|
+
export declare function isCelExpression<T = unknown>(value: unknown): value is CelExpression<T>;
|
|
23
|
+
/**
|
|
24
|
+
* Type guard to check if a value is a mixed template (literal string with embedded CEL)
|
|
25
|
+
*/
|
|
26
|
+
export declare function isMixedTemplate(value: unknown): value is {
|
|
27
|
+
[MIXED_TEMPLATE_BRAND]: true;
|
|
28
|
+
expression: string;
|
|
29
|
+
};
|
|
30
|
+
/**
|
|
31
|
+
* Recursively extracts all KubernetesRef objects from a resource definition.
|
|
32
|
+
*/
|
|
33
|
+
export declare function extractResourceReferences(obj: unknown): KubernetesRef<unknown>[];
|
|
34
|
+
//# sourceMappingURL=type-guards.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"type-guards.d.ts","sourceRoot":"","sources":["../../src/utils/type-guards.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAExF,OAAO,EAA8C,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AAE/G;;;GAGG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,OAAO,GAAG,GAAG,IAAI,aAAa,CAAC,OAAO,CAAC,CAS3E;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,OAAO,GAAG,GAAG,IAAI,iBAAiB,CAAC,OAAO,CAAC,CAInF;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,CAAC,GAAG,OAAO,EAAE,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,aAAa,CAAC,CAAC,CAAC,CAOtF;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI;IAAE,CAAC,oBAAoB,CAAC,EAAE,IAAI,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,CAO7G;AAED;;GAEG;AACH,wBAAgB,yBAAyB,CAAC,GAAG,EAAE,OAAO,GAAG,aAAa,CAAC,OAAO,CAAC,EAAE,CAmBhF"}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Type guard functions for TypeKro
|
|
3
|
+
*
|
|
4
|
+
* This module contains type guard functions that are used throughout
|
|
5
|
+
* the codebase to safely check and narrow types at runtime.
|
|
6
|
+
*/
|
|
7
|
+
import { KUBERNETES_REF_BRAND, CEL_EXPRESSION_BRAND, MIXED_TEMPLATE_BRAND } from '../core/constants/brands.js';
|
|
8
|
+
/**
|
|
9
|
+
* Type guard to check if a value is a compile-time KubernetesRef.
|
|
10
|
+
* Note: At runtime, these are the objects created by the proxy.
|
|
11
|
+
*/
|
|
12
|
+
export function isKubernetesRef(obj) {
|
|
13
|
+
// A KubernetesRef is an object that has our specific brand property.
|
|
14
|
+
// We check for the function type as well, since our ref factory is a proxy around a function.
|
|
15
|
+
// Note: We access the property directly since it's defined as non-enumerable
|
|
16
|
+
return ((typeof obj === 'object' || typeof obj === 'function') &&
|
|
17
|
+
obj !== null &&
|
|
18
|
+
KUBERNETES_REF_BRAND in obj);
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Type guard to check if a value is a runtime ResourceReference.
|
|
22
|
+
* This is what the serializer looks for.
|
|
23
|
+
*/
|
|
24
|
+
export function isResourceReference(obj) {
|
|
25
|
+
return (obj !== null && typeof obj === 'object' && '__type' in obj && obj.__type === 'ResourceReference');
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Type guard to check if a value is a CEL expression
|
|
29
|
+
*/
|
|
30
|
+
export function isCelExpression(value) {
|
|
31
|
+
return Boolean(value &&
|
|
32
|
+
typeof value === 'object' &&
|
|
33
|
+
value !== null &&
|
|
34
|
+
CEL_EXPRESSION_BRAND in value);
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Type guard to check if a value is a mixed template (literal string with embedded CEL)
|
|
38
|
+
*/
|
|
39
|
+
export function isMixedTemplate(value) {
|
|
40
|
+
return Boolean(value &&
|
|
41
|
+
typeof value === 'object' &&
|
|
42
|
+
value !== null &&
|
|
43
|
+
MIXED_TEMPLATE_BRAND in value);
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Recursively extracts all KubernetesRef objects from a resource definition.
|
|
47
|
+
*/
|
|
48
|
+
export function extractResourceReferences(obj) {
|
|
49
|
+
const refs = [];
|
|
50
|
+
if (isKubernetesRef(obj)) {
|
|
51
|
+
refs.push(obj);
|
|
52
|
+
return refs;
|
|
53
|
+
}
|
|
54
|
+
if (Array.isArray(obj)) {
|
|
55
|
+
obj.forEach((item) => {
|
|
56
|
+
refs.push(...extractResourceReferences(item));
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
else if (obj && typeof obj === 'object') {
|
|
60
|
+
for (const value of Object.values(obj)) {
|
|
61
|
+
refs.push(...extractResourceReferences(value));
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
return refs;
|
|
65
|
+
}
|
|
66
|
+
//# sourceMappingURL=type-guards.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"type-guards.js","sourceRoot":"","sources":["../../src/utils/type-guards.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AAE/G;;;GAGG;AACH,MAAM,UAAU,eAAe,CAAC,GAAY;IAC1C,qEAAqE;IACrE,8FAA8F;IAC9F,6EAA6E;IAC7E,OAAO,CACL,CAAC,OAAO,GAAG,KAAK,QAAQ,IAAI,OAAO,GAAG,KAAK,UAAU,CAAC;QACtD,GAAG,KAAK,IAAI;QACZ,oBAAoB,IAAI,GAAG,CAC5B,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,mBAAmB,CAAC,GAAY;IAC9C,OAAO,CACL,GAAG,KAAK,IAAI,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,QAAQ,IAAI,GAAG,IAAI,GAAG,CAAC,MAAM,KAAK,mBAAmB,CACjG,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,eAAe,CAAc,KAAc;IACzD,OAAO,OAAO,CACZ,KAAK;QACH,OAAO,KAAK,KAAK,QAAQ;QACzB,KAAK,KAAK,IAAI;QACd,oBAAoB,IAAI,KAAK,CAChC,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,eAAe,CAAC,KAAc;IAC5C,OAAO,OAAO,CACZ,KAAK;QACH,OAAO,KAAK,KAAK,QAAQ;QACzB,KAAK,KAAK,IAAI;QACd,oBAAoB,IAAI,KAAK,CAChC,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,yBAAyB,CAAC,GAAY;IACpD,MAAM,IAAI,GAA6B,EAAE,CAAC;IAE1C,IAAI,eAAe,CAAC,GAAG,CAAC,EAAE,CAAC;QACzB,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACf,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QACvB,GAAG,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;YACnB,IAAI,CAAC,IAAI,CAAC,GAAG,yBAAyB,CAAC,IAAI,CAAC,CAAC,CAAC;QAChD,CAAC,CAAC,CAAC;IACL,CAAC;SAAM,IAAI,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;QAC1C,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;YACvC,IAAI,CAAC,IAAI,CAAC,GAAG,yBAAyB,CAAC,KAAK,CAAC,CAAC,CAAC;QACjD,CAAC;IACH,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC"}
|