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,341 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Alchemy-aware Reference Resolver
|
|
3
|
+
*
|
|
4
|
+
* This module provides utilities for handling alchemy promises in resource references
|
|
5
|
+
* and provides deferred resolution capabilities for mixed dependency scenarios.
|
|
6
|
+
*/
|
|
7
|
+
import { isCelExpression, isKubernetesRef } from '../utils/type-guards.js';
|
|
8
|
+
import { generateDeterministicResourceId } from '../utils/helpers.js';
|
|
9
|
+
// Alchemy resource symbols for identification
|
|
10
|
+
const ALCHEMY_PROMISE_SYMBOL = Symbol.for('alchemy::promise');
|
|
11
|
+
const RESOURCE_ID_SYMBOL = Symbol.for('alchemy::resourceId');
|
|
12
|
+
const RESOURCE_TYPE_SYMBOL = Symbol.for('alchemy::resourceType');
|
|
13
|
+
const RESOURCE_FQN_SYMBOL = Symbol.for('alchemy::resourceFQN');
|
|
14
|
+
/**
|
|
15
|
+
* Check if a value is an alchemy resource
|
|
16
|
+
*/
|
|
17
|
+
export function isAlchemyResource(value) {
|
|
18
|
+
return Boolean(value &&
|
|
19
|
+
typeof value === 'object' &&
|
|
20
|
+
'__alchemyResource' in value &&
|
|
21
|
+
value.__alchemyResource === true);
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Check if a value is an alchemy promise/resource
|
|
25
|
+
*/
|
|
26
|
+
export function isAlchemyPromise(value) {
|
|
27
|
+
return Boolean(value &&
|
|
28
|
+
typeof value === 'object' &&
|
|
29
|
+
(
|
|
30
|
+
// Check for explicit alchemy promise marker
|
|
31
|
+
('__alchemyPromise' in value && value.__alchemyPromise === true) ||
|
|
32
|
+
// Check for promise-like interface with alchemy symbols
|
|
33
|
+
('then' in value &&
|
|
34
|
+
typeof value.then === 'function' &&
|
|
35
|
+
(ALCHEMY_PROMISE_SYMBOL in value ||
|
|
36
|
+
RESOURCE_ID_SYMBOL in value ||
|
|
37
|
+
RESOURCE_TYPE_SYMBOL in value ||
|
|
38
|
+
RESOURCE_FQN_SYMBOL in value))));
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Resolve references with alchemy promise awareness
|
|
42
|
+
*
|
|
43
|
+
* @param obj - Object containing references to resolve
|
|
44
|
+
* @param context - Resolution context with alchemy options
|
|
45
|
+
* @returns Resolved object with alchemy promises handled according to context
|
|
46
|
+
*/
|
|
47
|
+
export async function resolveReferencesWithAlchemy(obj, context) {
|
|
48
|
+
if (context.deferAlchemyResolution) {
|
|
49
|
+
// Preserve alchemy promises, only resolve TypeKro references
|
|
50
|
+
return resolveTypeKroReferencesOnly(obj, context);
|
|
51
|
+
}
|
|
52
|
+
else {
|
|
53
|
+
// Resolve all references including alchemy promises
|
|
54
|
+
return resolveAllReferences(obj, context);
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Resolve only TypeKro references, preserving alchemy promises
|
|
59
|
+
*
|
|
60
|
+
* This is used when building resource graphs that will be processed by alchemy,
|
|
61
|
+
* where alchemy promises should be preserved for later resolution within the
|
|
62
|
+
* alchemy provider context.
|
|
63
|
+
*/
|
|
64
|
+
export async function resolveTypeKroReferencesOnly(obj, context) {
|
|
65
|
+
if (obj === null || obj === undefined) {
|
|
66
|
+
return obj;
|
|
67
|
+
}
|
|
68
|
+
// Preserve alchemy promises
|
|
69
|
+
if (isAlchemyPromise(obj)) {
|
|
70
|
+
return obj;
|
|
71
|
+
}
|
|
72
|
+
// For TypeKro references, we would need to use the actual ReferenceResolver
|
|
73
|
+
// For now, just return the object as-is since this is a simplified implementation
|
|
74
|
+
// In a full implementation, this would use the ReferenceResolver
|
|
75
|
+
// Recursively process arrays and objects
|
|
76
|
+
if (Array.isArray(obj)) {
|
|
77
|
+
const objArray = obj;
|
|
78
|
+
const resolved = await Promise.all(objArray.map(item => resolveTypeKroReferencesOnly(item, context)));
|
|
79
|
+
return resolved;
|
|
80
|
+
}
|
|
81
|
+
if (typeof obj === 'object') {
|
|
82
|
+
const resolved = {};
|
|
83
|
+
for (const [key, value] of Object.entries(obj)) {
|
|
84
|
+
resolved[key] = await resolveTypeKroReferencesOnly(value, context);
|
|
85
|
+
}
|
|
86
|
+
return resolved;
|
|
87
|
+
}
|
|
88
|
+
return obj;
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Resolve all references including alchemy promises
|
|
92
|
+
*
|
|
93
|
+
* This is used within alchemy provider contexts where all references
|
|
94
|
+
* should be fully resolved to their final values.
|
|
95
|
+
*/
|
|
96
|
+
export async function resolveAllReferences(obj, context) {
|
|
97
|
+
if (obj === null || obj === undefined) {
|
|
98
|
+
return obj;
|
|
99
|
+
}
|
|
100
|
+
// Resolve alchemy promises
|
|
101
|
+
if (isAlchemyPromise(obj)) {
|
|
102
|
+
return resolveAlchemyPromise(obj, context);
|
|
103
|
+
}
|
|
104
|
+
// For TypeKro references, we would use the ReferenceResolver here
|
|
105
|
+
// For now, just handle arrays and objects recursively
|
|
106
|
+
// Recursively process arrays and objects
|
|
107
|
+
if (Array.isArray(obj)) {
|
|
108
|
+
const objArray = obj;
|
|
109
|
+
const resolved = await Promise.all(objArray.map(item => resolveAllReferences(item, context)));
|
|
110
|
+
return resolved;
|
|
111
|
+
}
|
|
112
|
+
if (typeof obj === 'object') {
|
|
113
|
+
const resolved = {};
|
|
114
|
+
for (const [key, value] of Object.entries(obj)) {
|
|
115
|
+
resolved[key] = await resolveAllReferences(value, context);
|
|
116
|
+
}
|
|
117
|
+
return resolved;
|
|
118
|
+
}
|
|
119
|
+
return obj;
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* Resolve an alchemy promise to its final value
|
|
123
|
+
*/
|
|
124
|
+
export async function resolveAlchemyPromise(promise, context) {
|
|
125
|
+
// Check cache first
|
|
126
|
+
const resourceId = getAlchemyResourceId(promise);
|
|
127
|
+
if (context.alchemyResourceCache?.has(resourceId)) {
|
|
128
|
+
return context.alchemyResourceCache.get(resourceId);
|
|
129
|
+
}
|
|
130
|
+
try {
|
|
131
|
+
// Await the alchemy promise to get the resolved resource
|
|
132
|
+
const resolvedResource = await promise;
|
|
133
|
+
// Cache the resolved value
|
|
134
|
+
if (!context.alchemyResourceCache) {
|
|
135
|
+
context.alchemyResourceCache = new Map();
|
|
136
|
+
}
|
|
137
|
+
context.alchemyResourceCache.set(resourceId, resolvedResource);
|
|
138
|
+
return resolvedResource;
|
|
139
|
+
}
|
|
140
|
+
catch (error) {
|
|
141
|
+
throw new Error(`Failed to resolve alchemy resource ${resourceId}: ${error instanceof Error ? error.message : String(error)}`);
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
/**
|
|
145
|
+
* Get a deterministic identifier for an alchemy resource
|
|
146
|
+
*/
|
|
147
|
+
function getAlchemyResourceId(resource) {
|
|
148
|
+
// Try to get the resource ID from alchemy symbols
|
|
149
|
+
if (RESOURCE_ID_SYMBOL in resource) {
|
|
150
|
+
return resource[RESOURCE_ID_SYMBOL];
|
|
151
|
+
}
|
|
152
|
+
if (RESOURCE_FQN_SYMBOL in resource) {
|
|
153
|
+
return resource[RESOURCE_FQN_SYMBOL];
|
|
154
|
+
}
|
|
155
|
+
// For alchemy promises, try to get the resourceId property
|
|
156
|
+
if ('resourceId' in resource && typeof resource.resourceId === 'string') {
|
|
157
|
+
return resource.resourceId;
|
|
158
|
+
}
|
|
159
|
+
// Try to extract kind and name from the resource for deterministic ID
|
|
160
|
+
const kind = RESOURCE_TYPE_SYMBOL in resource ? resource[RESOURCE_TYPE_SYMBOL] :
|
|
161
|
+
('resourceType' in resource && typeof resource.resourceType === 'string') ? resource.resourceType : 'Resource';
|
|
162
|
+
// Try to get name from resource metadata or properties
|
|
163
|
+
let name = 'unknown';
|
|
164
|
+
if (resource && typeof resource === 'object') {
|
|
165
|
+
const resourceObj = resource;
|
|
166
|
+
if (resourceObj.metadata?.name) {
|
|
167
|
+
name = resourceObj.metadata.name;
|
|
168
|
+
}
|
|
169
|
+
else if (resourceObj.name) {
|
|
170
|
+
name = resourceObj.name;
|
|
171
|
+
}
|
|
172
|
+
else if (resourceObj.id) {
|
|
173
|
+
name = resourceObj.id;
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
// Use the same deterministic ID generation as TypeKro resources
|
|
177
|
+
try {
|
|
178
|
+
return generateDeterministicResourceId(kind, name);
|
|
179
|
+
}
|
|
180
|
+
catch (_error) {
|
|
181
|
+
// Fallback to a simple deterministic approach if generation fails
|
|
182
|
+
const cleanKind = kind.toLowerCase().replace(/[^a-zA-Z0-9]/g, '');
|
|
183
|
+
const cleanName = name.toLowerCase().replace(/[^a-zA-Z0-9]/g, '');
|
|
184
|
+
return `${cleanKind}-${cleanName}`;
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
/**
|
|
188
|
+
* Build a resource graph with deferred alchemy resolution
|
|
189
|
+
*
|
|
190
|
+
* This creates a resource graph where alchemy promises are preserved,
|
|
191
|
+
* allowing them to be resolved later within the alchemy provider context.
|
|
192
|
+
*/
|
|
193
|
+
export async function buildResourceGraphWithDeferredResolution(resources, context) {
|
|
194
|
+
const deferredContext = {
|
|
195
|
+
...context,
|
|
196
|
+
deferAlchemyResolution: true,
|
|
197
|
+
};
|
|
198
|
+
const resolvedResources = {};
|
|
199
|
+
for (const [key, resource] of Object.entries(resources)) {
|
|
200
|
+
resolvedResources[key] = await resolveReferencesWithAlchemy(resource, deferredContext);
|
|
201
|
+
}
|
|
202
|
+
return resolvedResources;
|
|
203
|
+
}
|
|
204
|
+
/**
|
|
205
|
+
* Resolve all references within an alchemy provider context
|
|
206
|
+
*
|
|
207
|
+
* This fully resolves all references including alchemy promises,
|
|
208
|
+
* typically used within alchemy resource providers.
|
|
209
|
+
*/
|
|
210
|
+
export async function resolveAllReferencesInAlchemyContext(resources, context) {
|
|
211
|
+
const fullResolutionContext = {
|
|
212
|
+
...context,
|
|
213
|
+
deferAlchemyResolution: false,
|
|
214
|
+
};
|
|
215
|
+
const resolvedResources = {};
|
|
216
|
+
for (const [key, resource] of Object.entries(resources)) {
|
|
217
|
+
resolvedResources[key] = await resolveReferencesWithAlchemy(resource, fullResolutionContext);
|
|
218
|
+
}
|
|
219
|
+
return resolvedResources;
|
|
220
|
+
}
|
|
221
|
+
/**
|
|
222
|
+
* Check if an object contains any alchemy promises
|
|
223
|
+
*/
|
|
224
|
+
export function containsAlchemyPromises(obj) {
|
|
225
|
+
if (obj === null || obj === undefined) {
|
|
226
|
+
return false;
|
|
227
|
+
}
|
|
228
|
+
if (isAlchemyPromise(obj)) {
|
|
229
|
+
return true;
|
|
230
|
+
}
|
|
231
|
+
if (Array.isArray(obj)) {
|
|
232
|
+
const objArray = obj;
|
|
233
|
+
return objArray.some(item => containsAlchemyPromises(item));
|
|
234
|
+
}
|
|
235
|
+
if (typeof obj === 'object') {
|
|
236
|
+
return Object.values(obj).some(value => containsAlchemyPromises(value));
|
|
237
|
+
}
|
|
238
|
+
return false;
|
|
239
|
+
}
|
|
240
|
+
/**
|
|
241
|
+
* Extract all alchemy promises from an object
|
|
242
|
+
*/
|
|
243
|
+
export function extractAlchemyPromises(obj) {
|
|
244
|
+
const promises = [];
|
|
245
|
+
const extract = (value) => {
|
|
246
|
+
if (value === null || value === undefined) {
|
|
247
|
+
return;
|
|
248
|
+
}
|
|
249
|
+
if (isAlchemyPromise(value)) {
|
|
250
|
+
promises.push(value);
|
|
251
|
+
return;
|
|
252
|
+
}
|
|
253
|
+
if (Array.isArray(value)) {
|
|
254
|
+
const valueArray = value;
|
|
255
|
+
valueArray.forEach(extract);
|
|
256
|
+
return;
|
|
257
|
+
}
|
|
258
|
+
if (typeof value === 'object') {
|
|
259
|
+
Object.values(value).forEach(extract);
|
|
260
|
+
}
|
|
261
|
+
};
|
|
262
|
+
extract(obj);
|
|
263
|
+
return promises;
|
|
264
|
+
}
|
|
265
|
+
/**
|
|
266
|
+
* Create an alchemy-aware reference resolver context
|
|
267
|
+
*/
|
|
268
|
+
export function createAlchemyReferenceResolver() {
|
|
269
|
+
return {
|
|
270
|
+
deployedResources: [],
|
|
271
|
+
kubeClient: {}, // Would be properly initialized in real usage
|
|
272
|
+
deferAlchemyResolution: false,
|
|
273
|
+
alchemyResourceCache: new Map(),
|
|
274
|
+
};
|
|
275
|
+
}
|
|
276
|
+
/**
|
|
277
|
+
* Utility function to check if a resource graph contains mixed dependencies
|
|
278
|
+
* (both alchemy promises and TypeKro references)
|
|
279
|
+
*/
|
|
280
|
+
export function hasMixedDependencies(resources) {
|
|
281
|
+
let hasAlchemyPromises = false;
|
|
282
|
+
let hasTypeKroReferences = false;
|
|
283
|
+
for (const resource of Object.values(resources)) {
|
|
284
|
+
if (containsAlchemyPromises(resource)) {
|
|
285
|
+
hasAlchemyPromises = true;
|
|
286
|
+
}
|
|
287
|
+
// Check for TypeKro references using proper type guards
|
|
288
|
+
const hasTypeKroRefs = hasTypeKroReferencesRecursive(resource);
|
|
289
|
+
if (hasTypeKroRefs) {
|
|
290
|
+
hasTypeKroReferences = true;
|
|
291
|
+
}
|
|
292
|
+
}
|
|
293
|
+
return hasAlchemyPromises && hasTypeKroReferences;
|
|
294
|
+
}
|
|
295
|
+
/**
|
|
296
|
+
* Recursively check if an object contains TypeKro references
|
|
297
|
+
*/
|
|
298
|
+
function hasTypeKroReferencesRecursive(obj) {
|
|
299
|
+
if (isKubernetesRef(obj) || isCelExpression(obj)) {
|
|
300
|
+
return true;
|
|
301
|
+
}
|
|
302
|
+
if (Array.isArray(obj)) {
|
|
303
|
+
return obj.some(item => hasTypeKroReferencesRecursive(item));
|
|
304
|
+
}
|
|
305
|
+
if (obj && typeof obj === 'object') {
|
|
306
|
+
return Object.values(obj).some(value => hasTypeKroReferencesRecursive(value));
|
|
307
|
+
}
|
|
308
|
+
return false;
|
|
309
|
+
}
|
|
310
|
+
/**
|
|
311
|
+
* Create a deterministic alchemy resource configuration from a Kubernetes resource
|
|
312
|
+
* This ensures alchemy resources have consistent IDs and types that match the Kubernetes resource
|
|
313
|
+
*/
|
|
314
|
+
export function createAlchemyResourceConfig(kubernetesResource, resourceId) {
|
|
315
|
+
const kind = kubernetesResource.kind || 'Resource';
|
|
316
|
+
const name = kubernetesResource.metadata?.name || 'unnamed';
|
|
317
|
+
// Use provided resourceId or generate deterministic one
|
|
318
|
+
const id = resourceId || generateDeterministicResourceId(kind, name);
|
|
319
|
+
// Type should match the Kubernetes kind for consistency
|
|
320
|
+
const type = kind;
|
|
321
|
+
return {
|
|
322
|
+
id,
|
|
323
|
+
type,
|
|
324
|
+
config: kubernetesResource,
|
|
325
|
+
};
|
|
326
|
+
}
|
|
327
|
+
/**
|
|
328
|
+
* Create multiple alchemy resource configurations from a resource graph
|
|
329
|
+
* This ensures all resources in a graph have consistent, deterministic IDs
|
|
330
|
+
*/
|
|
331
|
+
export function createAlchemyResourceConfigs(resources) {
|
|
332
|
+
const configs = {};
|
|
333
|
+
for (const [resourceKey, kubernetesResource] of Object.entries(resources)) {
|
|
334
|
+
// Use the resource key as the base for ID generation if no explicit ID
|
|
335
|
+
const kind = kubernetesResource.kind || 'Resource';
|
|
336
|
+
const name = kubernetesResource.metadata?.name || resourceKey;
|
|
337
|
+
configs[resourceKey] = createAlchemyResourceConfig(kubernetesResource, generateDeterministicResourceId(kind, name));
|
|
338
|
+
}
|
|
339
|
+
return configs;
|
|
340
|
+
}
|
|
341
|
+
//# sourceMappingURL=resolver.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolver.js","sourceRoot":"","sources":["../../src/alchemy/resolver.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Alchemy Resource Type Registration
|
|
3
|
+
*
|
|
4
|
+
* This module handles dynamic resource type registration for TypeKro
|
|
5
|
+
* resources with alchemy's resource management system.
|
|
6
|
+
*
|
|
7
|
+
* Uses ensureResourceTypeRegistered() to avoid "Resource already exists" errors
|
|
8
|
+
* and provides centralized type registration logic.
|
|
9
|
+
*/
|
|
10
|
+
import type { Enhanced } from '../core/types/kubernetes.js';
|
|
11
|
+
/**
|
|
12
|
+
* Dynamic registration function with full type safety
|
|
13
|
+
*
|
|
14
|
+
* This function ensures each resource type is registered only once,
|
|
15
|
+
* avoiding "Resource already exists" errors while maintaining type safety.
|
|
16
|
+
*/
|
|
17
|
+
export declare function ensureResourceTypeRegistered<T extends Enhanced<unknown, unknown>>(resource: T): any;
|
|
18
|
+
/**
|
|
19
|
+
* Clear the registered types cache (useful for testing)
|
|
20
|
+
*/
|
|
21
|
+
export declare function clearRegisteredTypes(): void;
|
|
22
|
+
//# sourceMappingURL=resource-registration.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resource-registration.d.ts","sourceRoot":"","sources":["../../src/alchemy/resource-registration.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAOH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AAS5D;;;;;GAKG;AACH,wBAAgB,4BAA4B,CAAC,CAAC,SAAS,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,EAC7E,QAAQ,EAAE,CAAC,GACZ,GAAG,CAiEL;AAsLD;;GAEG;AACH,wBAAgB,oBAAoB,IAAI,IAAI,CAE3C"}
|
|
@@ -0,0 +1,218 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Alchemy Resource Type Registration
|
|
3
|
+
*
|
|
4
|
+
* This module handles dynamic resource type registration for TypeKro
|
|
5
|
+
* resources with alchemy's resource management system.
|
|
6
|
+
*
|
|
7
|
+
* Uses ensureResourceTypeRegistered() to avoid "Resource already exists" errors
|
|
8
|
+
* and provides centralized type registration logic.
|
|
9
|
+
*/
|
|
10
|
+
import { Resource, PROVIDERS } from 'alchemy';
|
|
11
|
+
import { getComponentLogger } from '../core/logging/index.js';
|
|
12
|
+
import { createKubernetesClientProvider, } from '../core/kubernetes/client-provider.js';
|
|
13
|
+
import { DirectTypeKroDeployer, KroTypeKroDeployer } from './deployers.js';
|
|
14
|
+
import { inferAlchemyTypeFromTypeKroResource } from './type-inference.js';
|
|
15
|
+
// Global registry to track registered resource types
|
|
16
|
+
const REGISTERED_TYPES = new Map();
|
|
17
|
+
/**
|
|
18
|
+
* Dynamic registration function with full type safety
|
|
19
|
+
*
|
|
20
|
+
* This function ensures each resource type is registered only once,
|
|
21
|
+
* avoiding "Resource already exists" errors while maintaining type safety.
|
|
22
|
+
*/
|
|
23
|
+
export function ensureResourceTypeRegistered(resource) {
|
|
24
|
+
const alchemyType = inferAlchemyTypeFromTypeKroResource(resource);
|
|
25
|
+
// Check if already registered in our local cache
|
|
26
|
+
if (REGISTERED_TYPES.has(alchemyType)) {
|
|
27
|
+
return REGISTERED_TYPES.get(alchemyType);
|
|
28
|
+
}
|
|
29
|
+
// Check if already registered in alchemy's global registry
|
|
30
|
+
if (PROVIDERS.has(alchemyType)) {
|
|
31
|
+
const existingProvider = PROVIDERS.get(alchemyType);
|
|
32
|
+
REGISTERED_TYPES.set(alchemyType, existingProvider);
|
|
33
|
+
return existingProvider;
|
|
34
|
+
}
|
|
35
|
+
// Register new resource type following alchemy's pseudo-class pattern
|
|
36
|
+
const ResourceProvider = Resource(alchemyType, async function (_id, props) {
|
|
37
|
+
const alchemyLogger = getComponentLogger('alchemy-deployment').child({ alchemyType });
|
|
38
|
+
// Log the context details for debugging
|
|
39
|
+
alchemyLogger.debug('Alchemy resource handler called', {
|
|
40
|
+
alchemyType,
|
|
41
|
+
resourceId: _id,
|
|
42
|
+
phase: this.phase,
|
|
43
|
+
contextId: this.id,
|
|
44
|
+
contextFqn: this.fqn,
|
|
45
|
+
resourceKind: props.resource.kind,
|
|
46
|
+
resourceName: props.resource.metadata?.name,
|
|
47
|
+
});
|
|
48
|
+
// Handle deletion phase
|
|
49
|
+
if (this.phase === 'delete') {
|
|
50
|
+
return await _handleResourceDeletion(this, props, alchemyLogger);
|
|
51
|
+
}
|
|
52
|
+
try {
|
|
53
|
+
// Create kubeconfig and deployer using centralized provider
|
|
54
|
+
const kc = _createClientProvider(props, 'deployment');
|
|
55
|
+
const deployer = await _createDeployer(kc, props.deploymentStrategy);
|
|
56
|
+
// Deploy resource and create result
|
|
57
|
+
const { resourceProperties } = await _deployAndCreateResult(props, deployer);
|
|
58
|
+
// Log deployment success
|
|
59
|
+
_logDeploymentSuccess(alchemyLogger, alchemyType, props, resourceProperties, this);
|
|
60
|
+
// Execute Alchemy context function
|
|
61
|
+
return _executeAlchemyContext(this, resourceProperties, alchemyLogger, alchemyType);
|
|
62
|
+
}
|
|
63
|
+
catch (error) {
|
|
64
|
+
alchemyLogger.error('Error deploying resource through Alchemy', error);
|
|
65
|
+
throw error;
|
|
66
|
+
}
|
|
67
|
+
});
|
|
68
|
+
// Cache the registered provider
|
|
69
|
+
REGISTERED_TYPES.set(alchemyType, ResourceProvider);
|
|
70
|
+
return ResourceProvider;
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Create KubernetesClientProvider using centralized configuration management
|
|
74
|
+
* Eliminates complex multi-stage fallback logic and consolidates TLS handling
|
|
75
|
+
*/
|
|
76
|
+
function _createClientProvider(props, phase) {
|
|
77
|
+
const alchemyLogger = getComponentLogger('alchemy-deployment');
|
|
78
|
+
alchemyLogger.debug(`Creating KubernetesClientProvider for alchemy handler (${phase} phase)`, {
|
|
79
|
+
hasKubeConfigOptions: !!props.kubeConfigOptions,
|
|
80
|
+
skipTLSVerify: props.kubeConfigOptions?.skipTLSVerify,
|
|
81
|
+
hasCluster: !!props.kubeConfigOptions?.cluster,
|
|
82
|
+
hasUser: !!props.kubeConfigOptions?.user,
|
|
83
|
+
});
|
|
84
|
+
// Use the centralized KubernetesClientProvider with the provided configuration
|
|
85
|
+
const clientProvider = createKubernetesClientProvider(props.kubeConfigOptions);
|
|
86
|
+
// Get the configured KubeConfig from the provider
|
|
87
|
+
const kubeConfig = clientProvider.getKubeConfig();
|
|
88
|
+
alchemyLogger.debug(`KubernetesClientProvider created successfully (${phase} phase)`, {
|
|
89
|
+
currentContext: kubeConfig.getCurrentContext(),
|
|
90
|
+
server: kubeConfig.getCurrentCluster()?.server,
|
|
91
|
+
skipTLSVerify: kubeConfig.getCurrentCluster()?.skipTLSVerify,
|
|
92
|
+
});
|
|
93
|
+
return kubeConfig;
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Create the appropriate deployer based on the deployment strategy
|
|
97
|
+
*/
|
|
98
|
+
async function _createDeployer(kc, strategy) {
|
|
99
|
+
// Use dynamic import to avoid circular dependencies
|
|
100
|
+
const { DirectDeploymentEngine } = await import('../core/deployment/engine.js');
|
|
101
|
+
const engine = new DirectDeploymentEngine(kc);
|
|
102
|
+
if (strategy === 'direct') {
|
|
103
|
+
return new DirectTypeKroDeployer(engine);
|
|
104
|
+
}
|
|
105
|
+
else {
|
|
106
|
+
return new KroTypeKroDeployer(engine);
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* Handle resource deletion phase
|
|
111
|
+
*/
|
|
112
|
+
async function _handleResourceDeletion(context, props, logger) {
|
|
113
|
+
try {
|
|
114
|
+
const kc = _createClientProvider(props, 'delete');
|
|
115
|
+
const deployer = await _createDeployer(kc, props.deploymentStrategy);
|
|
116
|
+
await deployer.delete(props.resource, {
|
|
117
|
+
mode: 'alchemy',
|
|
118
|
+
namespace: props.namespace,
|
|
119
|
+
...props.options
|
|
120
|
+
});
|
|
121
|
+
}
|
|
122
|
+
catch (error) {
|
|
123
|
+
logger.error('Error deleting resource', error);
|
|
124
|
+
}
|
|
125
|
+
return context.destroy();
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* Deploy resource and create deployment result
|
|
129
|
+
*/
|
|
130
|
+
async function _deployAndCreateResult(props, deployer) {
|
|
131
|
+
// Deploy using the created deployer - pass the original resource with KubernetesRef objects
|
|
132
|
+
// The deployer will handle reference resolution internally
|
|
133
|
+
const deployedResource = await deployer.deploy(props.resource, {
|
|
134
|
+
mode: 'alchemy',
|
|
135
|
+
namespace: props.namespace,
|
|
136
|
+
waitForReady: props.options?.waitForReady ?? true,
|
|
137
|
+
timeout: props.options?.timeout ?? 300000,
|
|
138
|
+
});
|
|
139
|
+
// Create clean, serializable versions for Alchemy storage
|
|
140
|
+
// Only serialize the data that Alchemy needs to store, not the functional parts
|
|
141
|
+
const cleanResource = JSON.parse(JSON.stringify(props.resource));
|
|
142
|
+
const cleanDeployedResource = JSON.parse(JSON.stringify(deployedResource));
|
|
143
|
+
// Create the resource properties for Alchemy
|
|
144
|
+
const resourceProperties = {
|
|
145
|
+
resource: cleanResource,
|
|
146
|
+
namespace: props.namespace,
|
|
147
|
+
deployedResource: cleanDeployedResource,
|
|
148
|
+
ready: true,
|
|
149
|
+
deployedAt: Date.now(),
|
|
150
|
+
};
|
|
151
|
+
return { resourceProperties };
|
|
152
|
+
}
|
|
153
|
+
/**
|
|
154
|
+
* Log deployment success and context details
|
|
155
|
+
*/
|
|
156
|
+
function _logDeploymentSuccess(logger, alchemyType, props, resourceProperties, context) {
|
|
157
|
+
// Log successful deployment
|
|
158
|
+
logger.debug('Successfully deployed resource through Alchemy', {
|
|
159
|
+
alchemyType,
|
|
160
|
+
resourceKind: props.resource.kind,
|
|
161
|
+
resourceName: props.resource.metadata?.name,
|
|
162
|
+
namespace: props.namespace,
|
|
163
|
+
resourceProperties: {
|
|
164
|
+
hasResource: !!resourceProperties.resource,
|
|
165
|
+
hasNamespace: !!resourceProperties.namespace,
|
|
166
|
+
hasDeployedResource: !!resourceProperties.deployedResource,
|
|
167
|
+
ready: resourceProperties.ready,
|
|
168
|
+
deployedAt: resourceProperties.deployedAt,
|
|
169
|
+
},
|
|
170
|
+
});
|
|
171
|
+
// Log the exact data we're about to pass to Alchemy's context function
|
|
172
|
+
logger.debug('About to call Alchemy context function', {
|
|
173
|
+
alchemyType,
|
|
174
|
+
contextPhase: context.phase,
|
|
175
|
+
contextId: context.id,
|
|
176
|
+
contextFqn: context.fqn,
|
|
177
|
+
resourcePropertiesKeys: Object.keys(resourceProperties),
|
|
178
|
+
resourcePropertiesStringified: JSON.stringify(resourceProperties, (_key, value) => {
|
|
179
|
+
// Handle circular references and complex objects
|
|
180
|
+
if (typeof value === 'object' && value !== null) {
|
|
181
|
+
if (value.constructor && value.constructor.name !== 'Object') {
|
|
182
|
+
return `[${value.constructor.name}]`;
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
return value;
|
|
186
|
+
}, 2),
|
|
187
|
+
});
|
|
188
|
+
}
|
|
189
|
+
/**
|
|
190
|
+
* Execute Alchemy context function with proper error handling
|
|
191
|
+
*/
|
|
192
|
+
function _executeAlchemyContext(context, resourceProperties, logger, alchemyType) {
|
|
193
|
+
try {
|
|
194
|
+
const result = context(resourceProperties);
|
|
195
|
+
logger.debug('Alchemy context function returned successfully', {
|
|
196
|
+
alchemyType,
|
|
197
|
+
resultType: typeof result,
|
|
198
|
+
resultKeys: result ? Object.keys(result) : [],
|
|
199
|
+
hasAlchemySymbols: result ? Object.getOwnPropertySymbols(result).length > 0 : false,
|
|
200
|
+
});
|
|
201
|
+
return result;
|
|
202
|
+
}
|
|
203
|
+
catch (contextError) {
|
|
204
|
+
logger.error('Alchemy context function failed', contextError, {
|
|
205
|
+
alchemyType,
|
|
206
|
+
errorMessage: contextError.message,
|
|
207
|
+
errorStack: contextError.stack,
|
|
208
|
+
});
|
|
209
|
+
throw contextError;
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
/**
|
|
213
|
+
* Clear the registered types cache (useful for testing)
|
|
214
|
+
*/
|
|
215
|
+
export function clearRegisteredTypes() {
|
|
216
|
+
REGISTERED_TYPES.clear();
|
|
217
|
+
}
|
|
218
|
+
//# sourceMappingURL=resource-registration.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resource-registration.js","sourceRoot":"","sources":["../../src/alchemy/resource-registration.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Alchemy Type Inference
|
|
3
|
+
*
|
|
4
|
+
* This module provides type-safe inference functions that determine
|
|
5
|
+
* alchemy resource types from TypeKro resources with proper validation.
|
|
6
|
+
*/
|
|
7
|
+
import type { Enhanced } from '../core/types/kubernetes.js';
|
|
8
|
+
/**
|
|
9
|
+
* Type-safe inference function that determines alchemy type from TypeKro resource
|
|
10
|
+
* Enhanced to handle individual Kubernetes resources with proper validation
|
|
11
|
+
*/
|
|
12
|
+
export declare function inferAlchemyTypeFromTypeKroResource<T extends Enhanced<any, any>>(resource: T): string;
|
|
13
|
+
//# sourceMappingURL=type-inference.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"type-inference.d.ts","sourceRoot":"","sources":["../../src/alchemy/type-inference.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AA6C5D;;;GAGG;AACH,wBAAgB,mCAAmC,CAAC,CAAC,SAAS,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC,EAC5E,QAAQ,EAAE,CAAC,GACZ,MAAM,CAsBR"}
|