typekro 0.4.0 → 0.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/.tsbuildinfo +1 -1
- package/dist/advanced/index.d.ts +52 -0
- package/dist/advanced/index.d.ts.map +1 -0
- package/dist/advanced/index.js +60 -0
- package/dist/advanced/index.js.map +1 -0
- package/dist/alchemy/deployers.d.ts.map +1 -1
- package/dist/alchemy/deployers.js +12 -28
- package/dist/alchemy/deployers.js.map +1 -1
- package/dist/alchemy/index.d.ts +8 -8
- package/dist/alchemy/index.d.ts.map +1 -1
- package/dist/alchemy/index.js +12 -11
- package/dist/alchemy/index.js.map +1 -1
- package/dist/alchemy/resolver.d.ts.map +1 -1
- package/dist/alchemy/resolver.js +6 -5
- package/dist/alchemy/resolver.js.map +1 -1
- package/dist/alchemy/resource-registration.d.ts.map +1 -1
- package/dist/alchemy/resource-registration.js +20 -8
- package/dist/alchemy/resource-registration.js.map +1 -1
- package/dist/alchemy/type-inference.d.ts.map +1 -1
- package/dist/alchemy/type-inference.js +6 -5
- package/dist/alchemy/type-inference.js.map +1 -1
- package/dist/alchemy/types.d.ts +1 -1
- package/dist/alchemy/types.d.ts.map +1 -1
- package/dist/alchemy/utilities.d.ts.map +1 -1
- package/dist/alchemy/utilities.js +1 -1
- package/dist/alchemy/utilities.js.map +1 -1
- package/dist/alchemy/wrapper.d.ts +4 -2
- package/dist/alchemy/wrapper.d.ts.map +1 -1
- package/dist/alchemy/wrapper.js +2 -1
- package/dist/alchemy/wrapper.js.map +1 -1
- package/dist/compositions/typekro-runtime/index.d.ts +3 -0
- package/dist/compositions/typekro-runtime/index.d.ts.map +1 -0
- package/dist/compositions/typekro-runtime/index.js.map +1 -0
- package/dist/{core/composition → compositions}/typekro-runtime/typekro-runtime.d.ts +7 -2
- package/dist/compositions/typekro-runtime/typekro-runtime.d.ts.map +1 -0
- package/dist/compositions/typekro-runtime/typekro-runtime.js +404 -0
- package/dist/compositions/typekro-runtime/typekro-runtime.js.map +1 -0
- package/dist/compositions/typekro-runtime/types.d.ts +45 -0
- package/dist/compositions/typekro-runtime/types.d.ts.map +1 -0
- package/dist/compositions/typekro-runtime/types.js.map +1 -0
- package/dist/core/composition/context.d.ts +91 -0
- package/dist/core/composition/context.d.ts.map +1 -0
- package/dist/core/composition/context.js +125 -0
- package/dist/core/composition/context.js.map +1 -0
- package/dist/core/composition/imperative.d.ts +36 -10
- package/dist/core/composition/imperative.d.ts.map +1 -1
- package/dist/core/composition/imperative.js +127 -115
- package/dist/core/composition/imperative.js.map +1 -1
- package/dist/core/composition/index.d.ts +2 -4
- package/dist/core/composition/index.d.ts.map +1 -1
- package/dist/core/composition/index.js +1 -4
- package/dist/core/composition/index.js.map +1 -1
- package/dist/core/composition-debugger.d.ts +78 -0
- package/dist/core/composition-debugger.d.ts.map +1 -0
- package/dist/core/composition-debugger.js +142 -0
- package/dist/core/composition-debugger.js.map +1 -0
- package/dist/core/config/defaults.d.ts +109 -0
- package/dist/core/config/defaults.d.ts.map +1 -0
- package/dist/core/config/defaults.js +150 -0
- package/dist/core/config/defaults.js.map +1 -0
- package/dist/core/config/env.d.ts +12 -0
- package/dist/core/config/env.d.ts.map +1 -0
- package/dist/core/config/env.js +16 -0
- package/dist/core/config/env.js.map +1 -0
- package/dist/core/config/index.d.ts +3 -0
- package/dist/core/config/index.d.ts.map +1 -0
- package/dist/core/config/index.js +3 -0
- package/dist/core/config/index.js.map +1 -0
- package/dist/core/constants/brands.d.ts +4 -57
- package/dist/core/constants/brands.d.ts.map +1 -1
- package/dist/core/constants/brands.js +4 -60
- package/dist/core/constants/brands.js.map +1 -1
- package/dist/core/dependencies/graph.d.ts.map +1 -1
- package/dist/core/dependencies/graph.js +4 -4
- package/dist/core/dependencies/graph.js.map +1 -1
- package/dist/core/dependencies/resolver.d.ts.map +1 -1
- package/dist/core/dependencies/resolver.js +3 -3
- package/dist/core/dependencies/resolver.js.map +1 -1
- package/dist/core/deployment/client-provider-manager.d.ts +40 -0
- package/dist/core/deployment/client-provider-manager.d.ts.map +1 -0
- package/dist/core/deployment/client-provider-manager.js +63 -0
- package/dist/core/deployment/client-provider-manager.js.map +1 -0
- package/dist/core/deployment/closure-planner.d.ts +20 -0
- package/dist/core/deployment/closure-planner.d.ts.map +1 -0
- package/dist/core/deployment/closure-planner.js +96 -0
- package/dist/core/deployment/closure-planner.js.map +1 -0
- package/dist/core/deployment/crd-manager.d.ts +52 -0
- package/dist/core/deployment/crd-manager.d.ts.map +1 -0
- package/dist/core/deployment/crd-manager.js +227 -0
- package/dist/core/deployment/crd-manager.js.map +1 -0
- package/dist/core/deployment/debug-logger.d.ts +3 -14
- package/dist/core/deployment/debug-logger.d.ts.map +1 -1
- package/dist/core/deployment/debug-logger.js +41 -12
- package/dist/core/deployment/debug-logger.js.map +1 -1
- package/dist/core/deployment/direct-factory.d.ts +23 -8
- package/dist/core/deployment/direct-factory.d.ts.map +1 -1
- package/dist/core/deployment/direct-factory.js +256 -164
- package/dist/core/deployment/direct-factory.js.map +1 -1
- package/dist/core/deployment/engine.d.ts +85 -65
- package/dist/core/deployment/engine.d.ts.map +1 -1
- package/dist/core/deployment/engine.js +505 -1703
- package/dist/core/deployment/engine.js.map +1 -1
- package/dist/core/deployment/errors.d.ts +30 -0
- package/dist/core/deployment/errors.d.ts.map +1 -0
- package/dist/core/deployment/errors.js +84 -0
- package/dist/core/deployment/errors.js.map +1 -0
- package/dist/core/deployment/event-filter.d.ts.map +1 -1
- package/dist/core/deployment/event-filter.js +16 -12
- package/dist/core/deployment/event-filter.js.map +1 -1
- package/dist/core/deployment/event-monitor.d.ts +3 -3
- package/dist/core/deployment/event-monitor.d.ts.map +1 -1
- package/dist/core/deployment/event-monitor.js +127 -49
- package/dist/core/deployment/event-monitor.js.map +1 -1
- package/dist/core/deployment/index.d.ts +5 -2
- package/dist/core/deployment/index.d.ts.map +1 -1
- package/dist/core/deployment/index.js +5 -3
- package/dist/core/deployment/index.js.map +1 -1
- package/dist/core/deployment/k8s-helpers.d.ts +44 -0
- package/dist/core/deployment/k8s-helpers.d.ts.map +1 -0
- package/dist/core/deployment/k8s-helpers.js +109 -0
- package/dist/core/deployment/k8s-helpers.js.map +1 -0
- package/dist/core/deployment/kro-factory.d.ts +28 -22
- package/dist/core/deployment/kro-factory.d.ts.map +1 -1
- package/dist/core/deployment/kro-factory.js +247 -366
- package/dist/core/deployment/kro-factory.js.map +1 -1
- package/dist/core/deployment/kro-readiness.d.ts +54 -0
- package/dist/core/deployment/kro-readiness.d.ts.map +1 -0
- package/dist/core/deployment/kro-readiness.js +140 -0
- package/dist/core/deployment/kro-readiness.js.map +1 -0
- package/dist/core/deployment/readiness-waiter.d.ts +60 -0
- package/dist/core/deployment/readiness-waiter.d.ts.map +1 -0
- package/dist/core/deployment/readiness-waiter.js +245 -0
- package/dist/core/deployment/readiness-waiter.js.map +1 -0
- package/dist/core/deployment/readiness.d.ts +3 -9
- package/dist/core/deployment/readiness.d.ts.map +1 -1
- package/dist/core/deployment/readiness.js +12 -28
- package/dist/core/deployment/readiness.js.map +1 -1
- package/dist/core/deployment/resource-applier.d.ts +58 -0
- package/dist/core/deployment/resource-applier.d.ts.map +1 -0
- package/dist/core/deployment/resource-applier.js +385 -0
- package/dist/core/deployment/resource-applier.js.map +1 -0
- package/dist/core/deployment/rollback-manager.d.ts +19 -2
- package/dist/core/deployment/rollback-manager.d.ts.map +1 -1
- package/dist/core/deployment/rollback-manager.js +127 -11
- package/dist/core/deployment/rollback-manager.js.map +1 -1
- package/dist/core/deployment/shared-utilities.d.ts +38 -9
- package/dist/core/deployment/shared-utilities.d.ts.map +1 -1
- package/dist/core/deployment/shared-utilities.js +92 -22
- package/dist/core/deployment/shared-utilities.js.map +1 -1
- package/dist/core/deployment/status-hydrator.d.ts.map +1 -1
- package/dist/core/deployment/status-hydrator.js +13 -10
- package/dist/core/deployment/status-hydrator.js.map +1 -1
- package/dist/core/deployment/strategies/alchemy-strategy.d.ts.map +1 -1
- package/dist/core/deployment/strategies/alchemy-strategy.js +16 -9
- package/dist/core/deployment/strategies/alchemy-strategy.js.map +1 -1
- package/dist/core/deployment/strategies/base-strategy.d.ts +14 -0
- package/dist/core/deployment/strategies/base-strategy.d.ts.map +1 -1
- package/dist/core/deployment/strategies/base-strategy.js +325 -244
- package/dist/core/deployment/strategies/base-strategy.js.map +1 -1
- package/dist/core/deployment/strategies/direct-strategy.d.ts +4 -4
- package/dist/core/deployment/strategies/direct-strategy.d.ts.map +1 -1
- package/dist/core/deployment/strategies/direct-strategy.js +12 -3
- package/dist/core/deployment/strategies/direct-strategy.js.map +1 -1
- package/dist/core/deployment/strategies/kro-strategy.d.ts +13 -8
- package/dist/core/deployment/strategies/kro-strategy.d.ts.map +1 -1
- package/dist/core/deployment/strategies/kro-strategy.js +51 -148
- package/dist/core/deployment/strategies/kro-strategy.js.map +1 -1
- package/dist/core/errors.d.ts +134 -83
- package/dist/core/errors.d.ts.map +1 -1
- package/dist/core/errors.js +177 -300
- package/dist/core/errors.js.map +1 -1
- package/dist/core/expressions/analysis/analyzer.d.ts +155 -0
- package/dist/core/expressions/analysis/analyzer.d.ts.map +1 -0
- package/dist/core/expressions/analysis/analyzer.js +540 -0
- package/dist/core/expressions/analysis/analyzer.js.map +1 -0
- package/dist/core/expressions/analysis/array-method-converters.d.ts +19 -0
- package/dist/core/expressions/analysis/array-method-converters.d.ts.map +1 -0
- package/dist/core/expressions/analysis/array-method-converters.js +175 -0
- package/dist/core/expressions/analysis/array-method-converters.js.map +1 -0
- package/dist/core/expressions/analysis/ast-helpers.d.ts +49 -0
- package/dist/core/expressions/analysis/ast-helpers.d.ts.map +1 -0
- package/dist/core/expressions/analysis/ast-helpers.js +106 -0
- package/dist/core/expressions/analysis/ast-helpers.js.map +1 -0
- package/dist/core/expressions/analysis/ast-node-converters.d.ts +15 -0
- package/dist/core/expressions/analysis/ast-node-converters.d.ts.map +1 -0
- package/dist/core/expressions/analysis/ast-node-converters.js +123 -0
- package/dist/core/expressions/analysis/ast-node-converters.js.map +1 -0
- package/dist/core/expressions/analysis/ast-type-guards.d.ts +14 -0
- package/dist/core/expressions/analysis/ast-type-guards.d.ts.map +1 -0
- package/dist/core/expressions/analysis/ast-type-guards.js +15 -0
- package/dist/core/expressions/analysis/ast-type-guards.js.map +1 -0
- package/dist/core/expressions/{cache.d.ts → analysis/cache.d.ts} +1 -1
- package/dist/core/expressions/analysis/cache.d.ts.map +1 -0
- package/dist/core/expressions/{cache.js → analysis/cache.js} +13 -13
- package/dist/core/expressions/analysis/cache.js.map +1 -0
- package/dist/core/expressions/analysis/call-expression-converters.d.ts +18 -0
- package/dist/core/expressions/analysis/call-expression-converters.d.ts.map +1 -0
- package/dist/core/expressions/analysis/call-expression-converters.js +220 -0
- package/dist/core/expressions/analysis/call-expression-converters.js.map +1 -0
- package/dist/core/expressions/analysis/cel-emitter.d.ts +85 -0
- package/dist/core/expressions/analysis/cel-emitter.d.ts.map +1 -0
- package/dist/core/expressions/analysis/cel-emitter.js +455 -0
- package/dist/core/expressions/analysis/cel-emitter.js.map +1 -0
- package/dist/core/expressions/analysis/expression-classifier.d.ts +77 -0
- package/dist/core/expressions/analysis/expression-classifier.d.ts.map +1 -0
- package/dist/core/expressions/analysis/expression-classifier.js +487 -0
- package/dist/core/expressions/analysis/expression-classifier.js.map +1 -0
- package/dist/core/expressions/analysis/fn-toString-self-test.d.ts +146 -0
- package/dist/core/expressions/analysis/fn-toString-self-test.d.ts.map +1 -0
- package/dist/core/expressions/analysis/fn-toString-self-test.js +243 -0
- package/dist/core/expressions/analysis/fn-toString-self-test.js.map +1 -0
- package/dist/core/expressions/analysis/operator-utils.d.ts +35 -0
- package/dist/core/expressions/analysis/operator-utils.d.ts.map +1 -0
- package/dist/core/expressions/analysis/operator-utils.js +167 -0
- package/dist/core/expressions/analysis/operator-utils.js.map +1 -0
- package/dist/core/expressions/analysis/parse-core.d.ts +63 -0
- package/dist/core/expressions/analysis/parse-core.d.ts.map +1 -0
- package/dist/core/expressions/analysis/parse-core.js +115 -0
- package/dist/core/expressions/analysis/parse-core.js.map +1 -0
- package/dist/core/expressions/{parser.d.ts → analysis/parser.d.ts} +2 -38
- package/dist/core/expressions/analysis/parser.d.ts.map +1 -0
- package/dist/core/expressions/{parser.js → analysis/parser.js} +20 -80
- package/dist/core/expressions/analysis/parser.js.map +1 -0
- package/dist/core/expressions/analysis/scope-resolver.d.ts +57 -0
- package/dist/core/expressions/analysis/scope-resolver.d.ts.map +1 -0
- package/dist/core/expressions/analysis/scope-resolver.js +440 -0
- package/dist/core/expressions/analysis/scope-resolver.js.map +1 -0
- package/dist/core/expressions/analysis/shared-types.d.ts +132 -0
- package/dist/core/expressions/analysis/shared-types.d.ts.map +1 -0
- package/dist/core/expressions/analysis/shared-types.js +13 -0
- package/dist/core/expressions/analysis/shared-types.js.map +1 -0
- package/dist/core/expressions/analysis/source-map.d.ts.map +1 -0
- package/dist/core/expressions/{source-map.js → analysis/source-map.js} +16 -17
- package/dist/core/expressions/analysis/source-map.js.map +1 -0
- package/dist/core/expressions/analysis/string-method-converters.d.ts +27 -0
- package/dist/core/expressions/analysis/string-method-converters.d.ts.map +1 -0
- package/dist/core/expressions/analysis/string-method-converters.js +208 -0
- package/dist/core/expressions/analysis/string-method-converters.js.map +1 -0
- package/dist/core/expressions/{types.d.ts → analysis/types.d.ts} +5 -5
- package/dist/core/expressions/analysis/types.d.ts.map +1 -0
- package/dist/core/expressions/analysis/types.js.map +1 -0
- package/dist/core/expressions/composition/composition-analyzer-helpers.d.ts +92 -0
- package/dist/core/expressions/composition/composition-analyzer-helpers.d.ts.map +1 -0
- package/dist/core/expressions/composition/composition-analyzer-helpers.js +301 -0
- package/dist/core/expressions/composition/composition-analyzer-helpers.js.map +1 -0
- package/dist/core/expressions/composition/composition-analyzer-ternary.d.ts +77 -0
- package/dist/core/expressions/composition/composition-analyzer-ternary.d.ts.map +1 -0
- package/dist/core/expressions/composition/composition-analyzer-ternary.js +364 -0
- package/dist/core/expressions/composition/composition-analyzer-ternary.js.map +1 -0
- package/dist/core/expressions/composition/composition-analyzer-traversal.d.ts +37 -0
- package/dist/core/expressions/composition/composition-analyzer-traversal.d.ts.map +1 -0
- package/dist/core/expressions/composition/composition-analyzer-traversal.js +375 -0
- package/dist/core/expressions/composition/composition-analyzer-traversal.js.map +1 -0
- package/dist/core/expressions/composition/composition-analyzer-types.d.ts +140 -0
- package/dist/core/expressions/composition/composition-analyzer-types.d.ts.map +1 -0
- package/dist/core/expressions/composition/composition-analyzer-types.js +8 -0
- package/dist/core/expressions/composition/composition-analyzer-types.js.map +1 -0
- package/dist/core/expressions/composition/composition-analyzer.d.ts +39 -0
- package/dist/core/expressions/composition/composition-analyzer.d.ts.map +1 -0
- package/dist/core/expressions/composition/composition-analyzer.js +144 -0
- package/dist/core/expressions/composition/composition-analyzer.js.map +1 -0
- package/dist/core/expressions/composition/context-tracker.d.ts +39 -0
- package/dist/core/expressions/composition/context-tracker.d.ts.map +1 -0
- package/dist/core/expressions/composition/context-tracker.js +64 -0
- package/dist/core/expressions/composition/context-tracker.js.map +1 -0
- package/dist/core/expressions/composition/expression-analyzer.d.ts +101 -0
- package/dist/core/expressions/composition/expression-analyzer.d.ts.map +1 -0
- package/dist/core/expressions/composition/expression-analyzer.js +425 -0
- package/dist/core/expressions/composition/expression-analyzer.js.map +1 -0
- package/dist/core/expressions/{imperative-analyzer.d.ts → composition/imperative-analyzer.d.ts} +3 -3
- package/dist/core/expressions/composition/imperative-analyzer.d.ts.map +1 -0
- package/dist/core/expressions/{imperative-analyzer.js → composition/imperative-analyzer.js} +15 -7
- package/dist/core/expressions/composition/imperative-analyzer.js.map +1 -0
- package/dist/core/expressions/composition/index.d.ts +17 -0
- package/dist/core/expressions/composition/index.d.ts.map +1 -0
- package/dist/core/expressions/composition/index.js +18 -0
- package/dist/core/expressions/composition/index.js.map +1 -0
- package/dist/core/expressions/composition/integration-hooks.d.ts +71 -0
- package/dist/core/expressions/composition/integration-hooks.d.ts.map +1 -0
- package/dist/core/expressions/composition/integration-hooks.js +248 -0
- package/dist/core/expressions/composition/integration-hooks.js.map +1 -0
- package/dist/core/expressions/composition/scope-manager.d.ts +93 -0
- package/dist/core/expressions/composition/scope-manager.d.ts.map +1 -0
- package/dist/core/expressions/composition/scope-manager.js +215 -0
- package/dist/core/expressions/composition/scope-manager.js.map +1 -0
- package/dist/core/expressions/composition/types.d.ts +41 -0
- package/dist/core/expressions/composition/types.d.ts.map +1 -0
- package/dist/core/expressions/composition/types.js +7 -0
- package/dist/core/expressions/composition/types.js.map +1 -0
- package/dist/core/expressions/{conditional-expression-processor.d.ts → conditional/conditional-expression-processor.d.ts} +3 -3
- package/dist/core/expressions/conditional/conditional-expression-processor.d.ts.map +1 -0
- package/dist/core/expressions/{conditional-expression-processor.js → conditional/conditional-expression-processor.js} +59 -50
- package/dist/core/expressions/conditional/conditional-expression-processor.js.map +1 -0
- package/dist/core/expressions/{conditional-integration.d.ts → conditional/conditional-integration.d.ts} +13 -35
- package/dist/core/expressions/conditional/conditional-integration.d.ts.map +1 -0
- package/dist/core/expressions/{conditional-integration.js → conditional/conditional-integration.js} +92 -86
- package/dist/core/expressions/conditional/conditional-integration.js.map +1 -0
- package/dist/core/expressions/{context-aware-generator.d.ts → context/context-aware-generator.d.ts} +4 -28
- package/dist/core/expressions/context/context-aware-generator.d.ts.map +1 -0
- package/dist/core/expressions/{context-aware-generator.js → context/context-aware-generator.js} +27 -121
- package/dist/core/expressions/context/context-aware-generator.js.map +1 -0
- package/dist/core/expressions/{context-detector.d.ts → context/context-detector.d.ts} +7 -13
- package/dist/core/expressions/context/context-detector.d.ts.map +1 -0
- package/dist/core/expressions/{context-detector.js → context/context-detector.js} +45 -63
- package/dist/core/expressions/context/context-detector.js.map +1 -0
- package/dist/core/expressions/{context-validator.d.ts → context/context-validator.d.ts} +5 -36
- package/dist/core/expressions/context/context-validator.d.ts.map +1 -0
- package/dist/core/expressions/{context-validator.js → context/context-validator.js} +55 -124
- package/dist/core/expressions/context/context-validator.js.map +1 -0
- package/dist/core/expressions/{cel-conversion-engine.d.ts → factory/cel-conversion-engine.d.ts} +3 -3
- package/dist/core/expressions/factory/cel-conversion-engine.d.ts.map +1 -0
- package/dist/core/expressions/{cel-conversion-engine.js → factory/cel-conversion-engine.js} +10 -9
- package/dist/core/expressions/factory/cel-conversion-engine.js.map +1 -0
- package/dist/core/expressions/factory/dependency-tracker.d.ts +222 -0
- package/dist/core/expressions/factory/dependency-tracker.d.ts.map +1 -0
- package/dist/core/expressions/factory/dependency-tracker.js +512 -0
- package/dist/core/expressions/factory/dependency-tracker.js.map +1 -0
- package/dist/core/expressions/{factory-integration.d.ts → factory/factory-integration.d.ts} +3 -18
- package/dist/core/expressions/factory/factory-integration.d.ts.map +1 -0
- package/dist/core/expressions/{factory-integration.js → factory/factory-integration.js} +28 -29
- package/dist/core/expressions/factory/factory-integration.js.map +1 -0
- package/dist/core/expressions/{factory-pattern-handler.d.ts → factory/factory-pattern-handler.d.ts} +8 -8
- package/dist/core/expressions/factory/factory-pattern-handler.d.ts.map +1 -0
- package/dist/core/expressions/{factory-pattern-handler.js → factory/factory-pattern-handler.js} +101 -73
- package/dist/core/expressions/factory/factory-pattern-handler.js.map +1 -0
- package/dist/core/expressions/{migration-helpers.d.ts → factory/migration-helpers.d.ts} +4 -4
- package/dist/core/expressions/factory/migration-helpers.d.ts.map +1 -0
- package/dist/core/expressions/{migration-helpers.js → factory/migration-helpers.js} +28 -26
- package/dist/core/expressions/factory/migration-helpers.js.map +1 -0
- package/dist/core/expressions/factory/resource-analyzer.d.ts +139 -0
- package/dist/core/expressions/factory/resource-analyzer.d.ts.map +1 -0
- package/dist/core/expressions/factory/resource-analyzer.js +286 -0
- package/dist/core/expressions/factory/resource-analyzer.js.map +1 -0
- package/dist/core/expressions/factory/resource-type-validator.d.ts +149 -0
- package/dist/core/expressions/factory/resource-type-validator.d.ts.map +1 -0
- package/dist/core/expressions/factory/resource-type-validator.js +318 -0
- package/dist/core/expressions/factory/resource-type-validator.js.map +1 -0
- package/dist/core/expressions/factory/status-ast-utils.d.ts +36 -0
- package/dist/core/expressions/factory/status-ast-utils.d.ts.map +1 -0
- package/dist/core/expressions/factory/status-ast-utils.js +320 -0
- package/dist/core/expressions/factory/status-ast-utils.js.map +1 -0
- package/dist/core/expressions/factory/status-builder-analyzer.d.ts +91 -0
- package/dist/core/expressions/factory/status-builder-analyzer.d.ts.map +1 -0
- package/dist/core/expressions/factory/status-builder-analyzer.js +374 -0
- package/dist/core/expressions/factory/status-builder-analyzer.js.map +1 -0
- package/dist/core/expressions/factory/status-builder-types.d.ts +166 -0
- package/dist/core/expressions/factory/status-builder-types.d.ts.map +1 -0
- package/dist/core/expressions/factory/status-builder-types.js +8 -0
- package/dist/core/expressions/factory/status-builder-types.js.map +1 -0
- package/dist/core/expressions/factory/status-cel-generation.d.ts +67 -0
- package/dist/core/expressions/factory/status-cel-generation.d.ts.map +1 -0
- package/dist/core/expressions/factory/status-cel-generation.js +330 -0
- package/dist/core/expressions/factory/status-cel-generation.js.map +1 -0
- package/dist/core/expressions/factory/status-field-analysis.d.ts +57 -0
- package/dist/core/expressions/factory/status-field-analysis.d.ts.map +1 -0
- package/dist/core/expressions/factory/status-field-analysis.js +475 -0
- package/dist/core/expressions/factory/status-field-analysis.js.map +1 -0
- package/dist/core/expressions/index.d.ts +39 -51
- package/dist/core/expressions/index.d.ts.map +1 -1
- package/dist/core/expressions/index.js +46 -47
- package/dist/core/expressions/index.js.map +1 -1
- package/dist/core/expressions/{magic-assignable-analyzer.d.ts → magic-proxy/magic-assignable-analyzer.d.ts} +5 -5
- package/dist/core/expressions/magic-proxy/magic-assignable-analyzer.d.ts.map +1 -0
- package/dist/core/expressions/{magic-assignable-analyzer.js → magic-proxy/magic-assignable-analyzer.js} +29 -24
- package/dist/core/expressions/magic-proxy/magic-assignable-analyzer.js.map +1 -0
- package/dist/core/expressions/{magic-proxy-analyzer.d.ts → magic-proxy/magic-proxy-analyzer.d.ts} +15 -68
- package/dist/core/expressions/magic-proxy/magic-proxy-analyzer.d.ts.map +1 -0
- package/dist/core/expressions/{magic-proxy-analyzer.js → magic-proxy/magic-proxy-analyzer.js} +45 -196
- package/dist/core/expressions/magic-proxy/magic-proxy-analyzer.js.map +1 -0
- package/dist/core/expressions/magic-proxy/magic-proxy-ast.d.ts +44 -0
- package/dist/core/expressions/magic-proxy/magic-proxy-ast.d.ts.map +1 -0
- package/dist/core/expressions/magic-proxy/magic-proxy-ast.js +175 -0
- package/dist/core/expressions/magic-proxy/magic-proxy-ast.js.map +1 -0
- package/dist/core/expressions/{magic-proxy-detector.d.ts → magic-proxy/magic-proxy-detector.d.ts} +7 -7
- package/dist/core/expressions/magic-proxy/magic-proxy-detector.d.ts.map +1 -0
- package/dist/core/expressions/{magic-proxy-detector.js → magic-proxy/magic-proxy-detector.js} +36 -28
- package/dist/core/expressions/magic-proxy/magic-proxy-detector.js.map +1 -0
- package/dist/core/expressions/magic-proxy/magic-proxy-types.d.ts +36 -0
- package/dist/core/expressions/magic-proxy/magic-proxy-types.d.ts.map +1 -0
- package/dist/core/expressions/magic-proxy/magic-proxy-types.js +8 -0
- package/dist/core/expressions/magic-proxy/magic-proxy-types.js.map +1 -0
- package/dist/core/expressions/magic-proxy/optionality-analysis.d.ts +54 -0
- package/dist/core/expressions/magic-proxy/optionality-analysis.d.ts.map +1 -0
- package/dist/core/expressions/magic-proxy/optionality-analysis.js +239 -0
- package/dist/core/expressions/magic-proxy/optionality-analysis.js.map +1 -0
- package/dist/core/expressions/magic-proxy/optionality-cel-generation.d.ts +51 -0
- package/dist/core/expressions/magic-proxy/optionality-cel-generation.d.ts.map +1 -0
- package/dist/core/expressions/magic-proxy/optionality-cel-generation.js +201 -0
- package/dist/core/expressions/magic-proxy/optionality-cel-generation.js.map +1 -0
- package/dist/core/expressions/magic-proxy/optionality-handler.d.ts +119 -0
- package/dist/core/expressions/magic-proxy/optionality-handler.d.ts.map +1 -0
- package/dist/core/expressions/magic-proxy/optionality-handler.js +321 -0
- package/dist/core/expressions/magic-proxy/optionality-handler.js.map +1 -0
- package/dist/core/expressions/magic-proxy/optionality-hydration.d.ts +84 -0
- package/dist/core/expressions/magic-proxy/optionality-hydration.d.ts.map +1 -0
- package/dist/core/expressions/magic-proxy/optionality-hydration.js +378 -0
- package/dist/core/expressions/magic-proxy/optionality-hydration.js.map +1 -0
- package/dist/core/expressions/magic-proxy/optionality-optional-chaining.d.ts +61 -0
- package/dist/core/expressions/magic-proxy/optionality-optional-chaining.d.ts.map +1 -0
- package/dist/core/expressions/magic-proxy/optionality-optional-chaining.js +218 -0
- package/dist/core/expressions/magic-proxy/optionality-optional-chaining.js.map +1 -0
- package/dist/core/expressions/magic-proxy/optionality-types.d.ts +206 -0
- package/dist/core/expressions/magic-proxy/optionality-types.d.ts.map +1 -0
- package/dist/core/expressions/magic-proxy/optionality-types.js +9 -0
- package/dist/core/expressions/magic-proxy/optionality-types.js.map +1 -0
- package/dist/core/expressions/validation/compile-time-checker.d.ts +74 -0
- package/dist/core/expressions/validation/compile-time-checker.d.ts.map +1 -0
- package/dist/core/expressions/{compile-time-validation.js → validation/compile-time-checker.js} +44 -91
- package/dist/core/expressions/validation/compile-time-checker.js.map +1 -0
- package/dist/core/expressions/validation/compile-time-errors.d.ts +70 -0
- package/dist/core/expressions/validation/compile-time-errors.d.ts.map +1 -0
- package/dist/core/expressions/validation/compile-time-errors.js +63 -0
- package/dist/core/expressions/validation/compile-time-errors.js.map +1 -0
- package/dist/core/expressions/validation/compile-time-types.d.ts +147 -0
- package/dist/core/expressions/validation/compile-time-types.d.ts.map +1 -0
- package/dist/core/expressions/validation/compile-time-types.js +8 -0
- package/dist/core/expressions/validation/compile-time-types.js.map +1 -0
- package/dist/core/expressions/validation/compile-time-validation.d.ts +13 -0
- package/dist/core/expressions/validation/compile-time-validation.d.ts.map +1 -0
- package/dist/core/expressions/validation/compile-time-validation.js +14 -0
- package/dist/core/expressions/validation/compile-time-validation.js.map +1 -0
- package/dist/core/expressions/validation/kubernetes-field-types.d.ts +35 -0
- package/dist/core/expressions/validation/kubernetes-field-types.d.ts.map +1 -0
- package/dist/core/expressions/validation/kubernetes-field-types.js +230 -0
- package/dist/core/expressions/validation/kubernetes-field-types.js.map +1 -0
- package/dist/core/expressions/validation/resource-field-utils.d.ts +69 -0
- package/dist/core/expressions/validation/resource-field-utils.d.ts.map +1 -0
- package/dist/core/expressions/validation/resource-field-utils.js +280 -0
- package/dist/core/expressions/validation/resource-field-utils.js.map +1 -0
- package/dist/core/expressions/{resource-validation.d.ts → validation/resource-validation-types.d.ts} +6 -63
- package/dist/core/expressions/validation/resource-validation-types.d.ts.map +1 -0
- package/dist/core/expressions/validation/resource-validation-types.js +69 -0
- package/dist/core/expressions/validation/resource-validation-types.js.map +1 -0
- package/dist/core/expressions/validation/resource-validation.d.ts +49 -0
- package/dist/core/expressions/validation/resource-validation.d.ts.map +1 -0
- package/dist/core/expressions/validation/resource-validation.js +288 -0
- package/dist/core/expressions/validation/resource-validation.js.map +1 -0
- package/dist/core/expressions/{type-inference.d.ts → validation/type-inference-types.d.ts} +34 -88
- package/dist/core/expressions/validation/type-inference-types.d.ts.map +1 -0
- package/dist/core/expressions/validation/type-inference-types.js +52 -0
- package/dist/core/expressions/validation/type-inference-types.js.map +1 -0
- package/dist/core/expressions/validation/type-inference.d.ts +86 -0
- package/dist/core/expressions/validation/type-inference.d.ts.map +1 -0
- package/dist/core/expressions/{type-inference.js → validation/type-inference.js} +66 -299
- package/dist/core/expressions/validation/type-inference.js.map +1 -0
- package/dist/core/expressions/{type-safety.d.ts → validation/type-safety.d.ts} +6 -5
- package/dist/core/expressions/validation/type-safety.d.ts.map +1 -0
- package/dist/core/expressions/{type-safety.js → validation/type-safety.js} +34 -19
- package/dist/core/expressions/validation/type-safety.js.map +1 -0
- package/dist/core/kubernetes/api.d.ts.map +1 -1
- package/dist/core/kubernetes/api.js +21 -12
- package/dist/core/kubernetes/api.js.map +1 -1
- package/dist/core/kubernetes/bun-api-client.d.ts +36 -14
- package/dist/core/kubernetes/bun-api-client.d.ts.map +1 -1
- package/dist/core/kubernetes/bun-api-client.js +47 -24
- package/dist/core/kubernetes/bun-api-client.js.map +1 -1
- package/dist/core/kubernetes/bun-http-library.d.ts +69 -3
- package/dist/core/kubernetes/bun-http-library.d.ts.map +1 -1
- package/dist/core/kubernetes/bun-http-library.js +118 -11
- package/dist/core/kubernetes/bun-http-library.js.map +1 -1
- package/dist/core/kubernetes/client-provider.d.ts +121 -35
- package/dist/core/kubernetes/client-provider.d.ts.map +1 -1
- package/dist/core/kubernetes/client-provider.js +181 -65
- package/dist/core/kubernetes/client-provider.js.map +1 -1
- package/dist/core/kubernetes/errors.d.ts +5 -5
- package/dist/core/kubernetes/errors.js +5 -5
- package/dist/core/kubernetes/index.d.ts +8 -7
- package/dist/core/kubernetes/index.d.ts.map +1 -1
- package/dist/core/kubernetes/index.js +8 -8
- package/dist/core/kubernetes/index.js.map +1 -1
- package/dist/core/kubernetes/type-guards.d.ts +1 -1
- package/dist/core/kubernetes/type-guards.js +1 -1
- package/dist/core/logging/config.d.ts.map +1 -1
- package/dist/core/logging/config.js +20 -4
- package/dist/core/logging/config.js.map +1 -1
- package/dist/core/logging/logger.d.ts +3 -3
- package/dist/core/logging/logger.d.ts.map +1 -1
- package/dist/core/logging/logger.js +18 -18
- package/dist/core/logging/logger.js.map +1 -1
- package/dist/core/logging/types.d.ts +13 -8
- package/dist/core/logging/types.d.ts.map +1 -1
- package/dist/core/metadata/index.d.ts +9 -0
- package/dist/core/metadata/index.d.ts.map +1 -0
- package/dist/core/metadata/index.js +9 -0
- package/dist/core/metadata/index.js.map +1 -0
- package/dist/core/metadata/resource-metadata.d.ts +116 -0
- package/dist/core/metadata/resource-metadata.d.ts.map +1 -0
- package/dist/core/metadata/resource-metadata.js +217 -0
- package/dist/core/metadata/resource-metadata.js.map +1 -0
- package/dist/core/proxy/create-resource.d.ts +50 -0
- package/dist/core/proxy/create-resource.d.ts.map +1 -0
- package/dist/core/proxy/create-resource.js +393 -0
- package/dist/core/proxy/create-resource.js.map +1 -0
- package/dist/core/proxy/index.d.ts +8 -0
- package/dist/core/proxy/index.d.ts.map +1 -0
- package/dist/core/proxy/index.js +7 -0
- package/dist/core/proxy/index.js.map +1 -0
- package/dist/core/proxy/known-status-fields.d.ts +27 -0
- package/dist/core/proxy/known-status-fields.d.ts.map +1 -0
- package/dist/core/proxy/known-status-fields.js +185 -0
- package/dist/core/proxy/known-status-fields.js.map +1 -0
- package/dist/core/readiness/evaluator-factories.d.ts +100 -0
- package/dist/core/readiness/evaluator-factories.d.ts.map +1 -0
- package/dist/core/readiness/evaluator-factories.js +168 -0
- package/dist/core/readiness/evaluator-factories.js.map +1 -0
- package/dist/core/readiness/evaluator.d.ts +21 -0
- package/dist/core/readiness/evaluator.d.ts.map +1 -0
- package/dist/core/readiness/evaluator.js +38 -0
- package/dist/core/readiness/evaluator.js.map +1 -0
- package/dist/core/readiness/index.d.ts +3 -0
- package/dist/core/readiness/index.d.ts.map +1 -1
- package/dist/core/readiness/index.js +2 -0
- package/dist/core/readiness/index.js.map +1 -1
- package/dist/core/readiness/registry.d.ts +3 -3
- package/dist/core/readiness/registry.d.ts.map +1 -1
- package/dist/core/readiness/registry.js +2 -0
- package/dist/core/readiness/registry.js.map +1 -1
- package/dist/core/references/cel-evaluator.d.ts +11 -0
- package/dist/core/references/cel-evaluator.d.ts.map +1 -1
- package/dist/core/references/cel-evaluator.js +65 -27
- package/dist/core/references/cel-evaluator.js.map +1 -1
- package/dist/core/references/cel.d.ts +66 -23
- package/dist/core/references/cel.d.ts.map +1 -1
- package/dist/core/references/cel.js +184 -117
- package/dist/core/references/cel.js.map +1 -1
- package/dist/core/references/external-refs.d.ts +39 -21
- package/dist/core/references/external-refs.d.ts.map +1 -1
- package/dist/core/references/external-refs.js +70 -30
- package/dist/core/references/external-refs.js.map +1 -1
- package/dist/core/references/index.d.ts +5 -4
- package/dist/core/references/index.d.ts.map +1 -1
- package/dist/core/references/index.js +6 -6
- package/dist/core/references/index.js.map +1 -1
- package/dist/core/references/resolver.d.ts +3 -7
- package/dist/core/references/resolver.d.ts.map +1 -1
- package/dist/core/references/resolver.js +53 -92
- package/dist/core/references/resolver.js.map +1 -1
- package/dist/core/references/schema-proxy.d.ts.map +1 -1
- package/dist/core/references/schema-proxy.js +92 -10
- package/dist/core/references/schema-proxy.js.map +1 -1
- package/dist/core/resources/factory-registry.d.ts +99 -0
- package/dist/core/resources/factory-registry.d.ts.map +1 -0
- package/dist/core/resources/factory-registry.js +166 -0
- package/dist/core/resources/factory-registry.js.map +1 -0
- package/dist/core/resources/id.d.ts +44 -0
- package/dist/core/resources/id.d.ts.map +1 -0
- package/dist/core/resources/id.js +78 -0
- package/dist/core/resources/id.js.map +1 -0
- package/dist/core/resources/index.d.ts +7 -0
- package/dist/core/resources/index.d.ts.map +1 -0
- package/dist/core/resources/index.js +6 -0
- package/dist/core/resources/index.js.map +1 -0
- package/dist/core/{utils → runtime-patches}/crd-patcher.d.ts +1 -1
- package/dist/core/runtime-patches/crd-patcher.d.ts.map +1 -0
- package/dist/core/runtime-patches/crd-patcher.js +124 -0
- package/dist/core/runtime-patches/crd-patcher.js.map +1 -0
- package/dist/core/{utils → runtime-patches}/crd-schema-fix.d.ts +39 -2
- package/dist/core/runtime-patches/crd-schema-fix.d.ts.map +1 -0
- package/dist/core/{utils → runtime-patches}/crd-schema-fix.js +130 -26
- package/dist/core/runtime-patches/crd-schema-fix.js.map +1 -0
- package/dist/core/runtime-patches/index.d.ts +8 -0
- package/dist/core/runtime-patches/index.d.ts.map +1 -0
- package/dist/core/runtime-patches/index.js +8 -0
- package/dist/core/runtime-patches/index.js.map +1 -0
- package/dist/core/{evaluation → serialization}/cel-optimizer.d.ts +2 -2
- package/dist/core/serialization/cel-optimizer.d.ts.map +1 -0
- package/dist/core/{evaluation → serialization}/cel-optimizer.js +11 -23
- package/dist/core/serialization/cel-optimizer.js.map +1 -0
- package/dist/core/serialization/cel-references.d.ts +36 -0
- package/dist/core/serialization/cel-references.d.ts.map +1 -0
- package/dist/core/serialization/cel-references.js +183 -0
- package/dist/core/serialization/cel-references.js.map +1 -0
- package/dist/core/serialization/core.d.ts +169 -4
- package/dist/core/serialization/core.d.ts.map +1 -1
- package/dist/core/serialization/core.js +387 -710
- package/dist/core/serialization/core.js.map +1 -1
- package/dist/core/serialization/index.d.ts +3 -1
- package/dist/core/serialization/index.d.ts.map +1 -1
- package/dist/core/serialization/index.js +5 -1
- package/dist/core/serialization/index.js.map +1 -1
- package/dist/core/serialization/schema.d.ts +34 -3
- package/dist/core/serialization/schema.d.ts.map +1 -1
- package/dist/core/serialization/schema.js +141 -11
- package/dist/core/serialization/schema.js.map +1 -1
- package/dist/core/serialization/status-analysis-helpers.d.ts +68 -0
- package/dist/core/serialization/status-analysis-helpers.d.ts.map +1 -0
- package/dist/core/serialization/status-analysis-helpers.js +284 -0
- package/dist/core/serialization/status-analysis-helpers.js.map +1 -0
- package/dist/core/serialization/status-analysis-pipeline.d.ts +63 -0
- package/dist/core/serialization/status-analysis-pipeline.d.ts.map +1 -0
- package/dist/core/serialization/status-analysis-pipeline.js +419 -0
- package/dist/core/serialization/status-analysis-pipeline.js.map +1 -0
- package/dist/core/serialization/validation.d.ts.map +1 -1
- package/dist/core/serialization/validation.js +5 -3
- package/dist/core/serialization/validation.js.map +1 -1
- package/dist/core/serialization/yaml.d.ts +14 -3
- package/dist/core/serialization/yaml.d.ts.map +1 -1
- package/dist/core/serialization/yaml.js +453 -13
- package/dist/core/serialization/yaml.js.map +1 -1
- package/dist/core/types/common.d.ts +43 -8
- package/dist/core/types/common.d.ts.map +1 -1
- package/dist/core/types/deployment.d.ts +235 -94
- package/dist/core/types/deployment.d.ts.map +1 -1
- package/dist/core/types/deployment.js +1 -40
- package/dist/core/types/deployment.js.map +1 -1
- package/dist/core/types/index.d.ts +6 -10
- package/dist/core/types/index.d.ts.map +1 -1
- package/dist/core/types/index.js +32 -4
- package/dist/core/types/index.js.map +1 -1
- package/dist/core/types/kubernetes.d.ts +226 -16
- package/dist/core/types/kubernetes.d.ts.map +1 -1
- package/dist/core/types/kubernetes.js +11 -1
- package/dist/core/types/kubernetes.js.map +1 -1
- package/dist/core/types/references.d.ts +27 -1
- package/dist/core/types/references.d.ts.map +1 -1
- package/dist/core/types/references.js +3 -2
- package/dist/core/types/references.js.map +1 -1
- package/dist/core/types/resource-graph.d.ts +9 -33
- package/dist/core/types/resource-graph.d.ts.map +1 -1
- package/dist/core/types/resource-graph.js +2 -2
- package/dist/core/types/schema.d.ts +51 -0
- package/dist/core/types/schema.d.ts.map +1 -0
- package/dist/core/types/schema.js +9 -0
- package/dist/core/types/schema.js.map +1 -0
- package/dist/core/types/serialization.d.ts +104 -45
- package/dist/core/types/serialization.d.ts.map +1 -1
- package/dist/core/types/yaml.d.ts +0 -24
- package/dist/core/types/yaml.d.ts.map +1 -1
- package/dist/core/validation/cel-validator.d.ts +5 -5
- package/dist/core/validation/cel-validator.d.ts.map +1 -1
- package/dist/core/validation/cel-validator.js +35 -11
- package/dist/core/validation/cel-validator.js.map +1 -1
- package/dist/core/yaml/path-resolver.d.ts +21 -6
- package/dist/core/yaml/path-resolver.d.ts.map +1 -1
- package/dist/core/yaml/path-resolver.js +404 -38
- package/dist/core/yaml/path-resolver.js.map +1 -1
- package/dist/factories/apisix/compositions/apisix-bootstrap.d.ts +19 -15
- package/dist/factories/apisix/compositions/apisix-bootstrap.d.ts.map +1 -1
- package/dist/factories/apisix/compositions/apisix-bootstrap.js +99 -112
- package/dist/factories/apisix/compositions/apisix-bootstrap.js.map +1 -1
- package/dist/factories/apisix/resources/helm.d.ts +8 -8
- package/dist/factories/apisix/resources/helm.d.ts.map +1 -1
- package/dist/factories/apisix/resources/helm.js +20 -47
- package/dist/factories/apisix/resources/helm.js.map +1 -1
- package/dist/factories/apisix/types.d.ts +35 -2
- package/dist/factories/apisix/types.d.ts.map +1 -1
- package/dist/factories/apisix/types.js.map +1 -1
- package/dist/factories/apisix/utils/admin-credentials.d.ts +43 -0
- package/dist/factories/apisix/utils/admin-credentials.d.ts.map +1 -0
- package/dist/factories/apisix/utils/admin-credentials.js +82 -0
- package/dist/factories/apisix/utils/admin-credentials.js.map +1 -0
- package/dist/factories/apisix/utils/helm-values-mapper.d.ts.map +1 -1
- package/dist/factories/apisix/utils/helm-values-mapper.js +33 -35
- package/dist/factories/apisix/utils/helm-values-mapper.js.map +1 -1
- package/dist/factories/apisix/utils/index.d.ts +1 -0
- package/dist/factories/apisix/utils/index.d.ts.map +1 -1
- package/dist/factories/apisix/utils/index.js +1 -0
- package/dist/factories/apisix/utils/index.js.map +1 -1
- package/dist/factories/cert-manager/compositions/cert-manager-bootstrap.d.ts +2 -2
- package/dist/factories/cert-manager/compositions/cert-manager-bootstrap.d.ts.map +1 -1
- package/dist/factories/cert-manager/compositions/cert-manager-bootstrap.js +49 -63
- package/dist/factories/cert-manager/compositions/cert-manager-bootstrap.js.map +1 -1
- package/dist/factories/cert-manager/resources/certificates.d.ts.map +1 -1
- package/dist/factories/cert-manager/resources/certificates.js +12 -47
- package/dist/factories/cert-manager/resources/certificates.js.map +1 -1
- package/dist/factories/cert-manager/resources/helm.d.ts +2 -22
- package/dist/factories/cert-manager/resources/helm.d.ts.map +1 -1
- package/dist/factories/cert-manager/resources/helm.js +30 -167
- package/dist/factories/cert-manager/resources/helm.js.map +1 -1
- package/dist/factories/cert-manager/resources/issuers.d.ts.map +1 -1
- package/dist/factories/cert-manager/resources/issuers.js +9 -104
- package/dist/factories/cert-manager/resources/issuers.js.map +1 -1
- package/dist/factories/cert-manager/types.d.ts +5 -78
- package/dist/factories/cert-manager/types.d.ts.map +1 -1
- package/dist/factories/cert-manager/types.js +2 -22
- package/dist/factories/cert-manager/types.js.map +1 -1
- package/dist/factories/cert-manager/utils/helm-values-mapper.d.ts +8 -4
- package/dist/factories/cert-manager/utils/helm-values-mapper.d.ts.map +1 -1
- package/dist/factories/cert-manager/utils/helm-values-mapper.js +55 -56
- package/dist/factories/cert-manager/utils/helm-values-mapper.js.map +1 -1
- package/dist/factories/cert-manager/utils/index.d.ts +1 -1
- package/dist/factories/cert-manager/utils/index.d.ts.map +1 -1
- package/dist/factories/cert-manager/utils/index.js +1 -1
- package/dist/factories/cert-manager/utils/index.js.map +1 -1
- package/dist/factories/cilium/compositions/cilium-bootstrap.d.ts +3 -3
- package/dist/factories/cilium/compositions/cilium-bootstrap.d.ts.map +1 -1
- package/dist/factories/cilium/compositions/cilium-bootstrap.js +62 -34
- package/dist/factories/cilium/compositions/cilium-bootstrap.js.map +1 -1
- package/dist/factories/cilium/errors.d.ts +41 -0
- package/dist/factories/cilium/errors.d.ts.map +1 -0
- package/dist/factories/cilium/errors.js +75 -0
- package/dist/factories/cilium/errors.js.map +1 -0
- package/dist/factories/cilium/index.d.ts +1 -0
- package/dist/factories/cilium/index.d.ts.map +1 -1
- package/dist/factories/cilium/index.js +4 -0
- package/dist/factories/cilium/index.js.map +1 -1
- package/dist/factories/cilium/resources/gateway.d.ts.map +1 -1
- package/dist/factories/cilium/resources/gateway.js +3 -5
- package/dist/factories/cilium/resources/gateway.js.map +1 -1
- package/dist/factories/cilium/resources/helm.d.ts +2 -2
- package/dist/factories/cilium/resources/helm.d.ts.map +1 -1
- package/dist/factories/cilium/resources/helm.js +8 -16
- package/dist/factories/cilium/resources/helm.js.map +1 -1
- package/dist/factories/cilium/resources/index.d.ts +1 -5
- package/dist/factories/cilium/resources/index.d.ts.map +1 -1
- package/dist/factories/cilium/resources/index.js +4 -20
- package/dist/factories/cilium/resources/index.js.map +1 -1
- package/dist/factories/cilium/resources/networking.d.ts +9 -13
- package/dist/factories/cilium/resources/networking.d.ts.map +1 -1
- package/dist/factories/cilium/resources/networking.js +152 -251
- package/dist/factories/cilium/resources/networking.js.map +1 -1
- package/dist/factories/cilium/types.d.ts +3 -47
- package/dist/factories/cilium/types.d.ts.map +1 -1
- package/dist/factories/cilium/types.js +2 -71
- package/dist/factories/cilium/types.js.map +1 -1
- package/dist/factories/external-dns/compositions/external-dns-bootstrap.d.ts +1 -1
- package/dist/factories/external-dns/compositions/external-dns-bootstrap.d.ts.map +1 -1
- package/dist/factories/external-dns/compositions/external-dns-bootstrap.js +5 -11
- package/dist/factories/external-dns/compositions/external-dns-bootstrap.js.map +1 -1
- package/dist/factories/external-dns/resources/helm.d.ts +2 -2
- package/dist/factories/external-dns/resources/helm.d.ts.map +1 -1
- package/dist/factories/external-dns/resources/helm.js +66 -61
- package/dist/factories/external-dns/resources/helm.js.map +1 -1
- package/dist/factories/external-dns/types.d.ts +2 -2
- package/dist/factories/external-dns/types.d.ts.map +1 -1
- package/dist/factories/external-dns/types.js.map +1 -1
- package/dist/factories/flux/git-repository.d.ts +12 -2
- package/dist/factories/flux/git-repository.d.ts.map +1 -1
- package/dist/factories/flux/git-repository.js +33 -0
- package/dist/factories/flux/git-repository.js.map +1 -1
- package/dist/factories/flux/kustomize/kustomization.d.ts +2 -0
- package/dist/factories/flux/kustomize/kustomization.d.ts.map +1 -1
- package/dist/factories/flux/kustomize/kustomization.js.map +1 -1
- package/dist/factories/flux/kustomize/readiness-evaluators.d.ts +1 -1
- package/dist/factories/flux/kustomize/readiness-evaluators.d.ts.map +1 -1
- package/dist/factories/flux/kustomize/readiness-evaluators.js +3 -1
- package/dist/factories/flux/kustomize/readiness-evaluators.js.map +1 -1
- package/dist/factories/helm/helm-release.d.ts +13 -0
- package/dist/factories/helm/helm-release.d.ts.map +1 -1
- package/dist/factories/helm/helm-release.js +35 -16
- package/dist/factories/helm/helm-release.js.map +1 -1
- package/dist/factories/helm/helm-repository.d.ts +26 -1
- package/dist/factories/helm/helm-repository.d.ts.map +1 -1
- package/dist/factories/helm/helm-repository.js +30 -17
- package/dist/factories/helm/helm-repository.js.map +1 -1
- package/dist/factories/helm/index.d.ts +10 -4
- package/dist/factories/helm/index.d.ts.map +1 -1
- package/dist/factories/helm/index.js +10 -4
- package/dist/factories/helm/index.js.map +1 -1
- package/dist/factories/helm/readiness-evaluators.d.ts +21 -8
- package/dist/factories/helm/readiness-evaluators.d.ts.map +1 -1
- package/dist/factories/helm/readiness-evaluators.js +98 -82
- package/dist/factories/helm/readiness-evaluators.js.map +1 -1
- package/dist/factories/helm/types.d.ts +13 -0
- package/dist/factories/helm/types.d.ts.map +1 -1
- package/dist/factories/index.d.ts +7 -8
- package/dist/factories/index.d.ts.map +1 -1
- package/dist/factories/index.js +24 -20
- package/dist/factories/index.js.map +1 -1
- package/dist/factories/kro/kro-crd.d.ts.map +1 -1
- package/dist/factories/kro/kro-crd.js +3 -2
- package/dist/factories/kro/kro-crd.js.map +1 -1
- package/dist/factories/kro/kro-custom-resource.d.ts.map +1 -1
- package/dist/factories/kro/kro-custom-resource.js +3 -2
- package/dist/factories/kro/kro-custom-resource.js.map +1 -1
- package/dist/factories/kro/resource-graph-definition.d.ts +29 -1
- package/dist/factories/kro/resource-graph-definition.d.ts.map +1 -1
- package/dist/factories/kro/resource-graph-definition.js +26 -8
- package/dist/factories/kro/resource-graph-definition.js.map +1 -1
- package/dist/factories/kubernetes/admission/mutating-webhook-configuration.d.ts +3 -2
- package/dist/factories/kubernetes/admission/mutating-webhook-configuration.d.ts.map +1 -1
- package/dist/factories/kubernetes/admission/mutating-webhook-configuration.js +3 -2
- package/dist/factories/kubernetes/admission/mutating-webhook-configuration.js.map +1 -1
- package/dist/factories/kubernetes/admission/validating-webhook-configuration.d.ts +3 -2
- package/dist/factories/kubernetes/admission/validating-webhook-configuration.d.ts.map +1 -1
- package/dist/factories/kubernetes/admission/validating-webhook-configuration.js +3 -2
- package/dist/factories/kubernetes/admission/validating-webhook-configuration.js.map +1 -1
- package/dist/factories/kubernetes/autoscaling/horizontal-pod-autoscaler-v1.d.ts +3 -1
- package/dist/factories/kubernetes/autoscaling/horizontal-pod-autoscaler-v1.d.ts.map +1 -1
- package/dist/factories/kubernetes/autoscaling/horizontal-pod-autoscaler-v1.js.map +1 -1
- package/dist/factories/kubernetes/autoscaling/horizontal-pod-autoscaler.d.ts +3 -1
- package/dist/factories/kubernetes/autoscaling/horizontal-pod-autoscaler.d.ts.map +1 -1
- package/dist/factories/kubernetes/autoscaling/horizontal-pod-autoscaler.js +2 -1
- package/dist/factories/kubernetes/autoscaling/horizontal-pod-autoscaler.js.map +1 -1
- package/dist/factories/kubernetes/certificates/certificate-signing-request.d.ts +3 -1
- package/dist/factories/kubernetes/certificates/certificate-signing-request.d.ts.map +1 -1
- package/dist/factories/kubernetes/certificates/certificate-signing-request.js.map +1 -1
- package/dist/factories/kubernetes/config/config-map.d.ts +14 -1
- package/dist/factories/kubernetes/config/config-map.d.ts.map +1 -1
- package/dist/factories/kubernetes/config/config-map.js +21 -7
- package/dist/factories/kubernetes/config/config-map.js.map +1 -1
- package/dist/factories/kubernetes/config/secret.d.ts +17 -0
- package/dist/factories/kubernetes/config/secret.d.ts.map +1 -1
- package/dist/factories/kubernetes/config/secret.js +27 -7
- package/dist/factories/kubernetes/config/secret.js.map +1 -1
- package/dist/factories/kubernetes/coordination/lease.d.ts +3 -1
- package/dist/factories/kubernetes/coordination/lease.d.ts.map +1 -1
- package/dist/factories/kubernetes/coordination/lease.js +2 -1
- package/dist/factories/kubernetes/coordination/lease.js.map +1 -1
- package/dist/factories/kubernetes/core/component-status.d.ts +3 -1
- package/dist/factories/kubernetes/core/component-status.d.ts.map +1 -1
- package/dist/factories/kubernetes/core/component-status.js.map +1 -1
- package/dist/factories/kubernetes/core/namespace.d.ts +10 -0
- package/dist/factories/kubernetes/core/namespace.d.ts.map +1 -1
- package/dist/factories/kubernetes/core/namespace.js +13 -2
- package/dist/factories/kubernetes/core/namespace.js.map +1 -1
- package/dist/factories/kubernetes/core/node.d.ts +3 -1
- package/dist/factories/kubernetes/core/node.d.ts.map +1 -1
- package/dist/factories/kubernetes/core/node.js.map +1 -1
- package/dist/factories/kubernetes/core/pod.d.ts +3 -1
- package/dist/factories/kubernetes/core/pod.d.ts.map +1 -1
- package/dist/factories/kubernetes/core/pod.js +2 -1
- package/dist/factories/kubernetes/core/pod.js.map +1 -1
- package/dist/factories/kubernetes/extensions/custom-resource-definition.d.ts +3 -1
- package/dist/factories/kubernetes/extensions/custom-resource-definition.d.ts.map +1 -1
- package/dist/factories/kubernetes/extensions/custom-resource-definition.js.map +1 -1
- package/dist/factories/kubernetes/extensions/custom-resource.d.ts +1 -0
- package/dist/factories/kubernetes/extensions/custom-resource.d.ts.map +1 -1
- package/dist/factories/kubernetes/extensions/custom-resource.js +5 -1
- package/dist/factories/kubernetes/extensions/custom-resource.js.map +1 -1
- package/dist/factories/kubernetes/index.d.ts +0 -2
- package/dist/factories/kubernetes/index.d.ts.map +1 -1
- package/dist/factories/kubernetes/index.js +3 -8
- package/dist/factories/kubernetes/index.js.map +1 -1
- package/dist/factories/kubernetes/networking/endpoint-slice.d.ts +3 -1
- package/dist/factories/kubernetes/networking/endpoint-slice.d.ts.map +1 -1
- package/dist/factories/kubernetes/networking/endpoint-slice.js.map +1 -1
- package/dist/factories/kubernetes/networking/endpoints.d.ts +3 -1
- package/dist/factories/kubernetes/networking/endpoints.d.ts.map +1 -1
- package/dist/factories/kubernetes/networking/endpoints.js +3 -2
- package/dist/factories/kubernetes/networking/endpoints.js.map +1 -1
- package/dist/factories/kubernetes/networking/ingress-class.d.ts +3 -1
- package/dist/factories/kubernetes/networking/ingress-class.d.ts.map +1 -1
- package/dist/factories/kubernetes/networking/ingress-class.js +2 -7
- package/dist/factories/kubernetes/networking/ingress-class.js.map +1 -1
- package/dist/factories/kubernetes/networking/ingress.d.ts +15 -2
- package/dist/factories/kubernetes/networking/ingress.d.ts.map +1 -1
- package/dist/factories/kubernetes/networking/ingress.js +64 -11
- package/dist/factories/kubernetes/networking/ingress.js.map +1 -1
- package/dist/factories/kubernetes/networking/network-policy.d.ts +3 -1
- package/dist/factories/kubernetes/networking/network-policy.d.ts.map +1 -1
- package/dist/factories/kubernetes/networking/network-policy.js +2 -8
- package/dist/factories/kubernetes/networking/network-policy.js.map +1 -1
- package/dist/factories/kubernetes/networking/service.d.ts +14 -1
- package/dist/factories/kubernetes/networking/service.d.ts.map +1 -1
- package/dist/factories/kubernetes/networking/service.js +22 -2
- package/dist/factories/kubernetes/networking/service.js.map +1 -1
- package/dist/factories/kubernetes/policy/limit-range.d.ts +3 -1
- package/dist/factories/kubernetes/policy/limit-range.d.ts.map +1 -1
- package/dist/factories/kubernetes/policy/limit-range.js +2 -8
- package/dist/factories/kubernetes/policy/limit-range.js.map +1 -1
- package/dist/factories/kubernetes/policy/pod-disruption-budget.d.ts +3 -1
- package/dist/factories/kubernetes/policy/pod-disruption-budget.d.ts.map +1 -1
- package/dist/factories/kubernetes/policy/pod-disruption-budget.js +3 -2
- package/dist/factories/kubernetes/policy/pod-disruption-budget.js.map +1 -1
- package/dist/factories/kubernetes/policy/resource-quota.d.ts +3 -1
- package/dist/factories/kubernetes/policy/resource-quota.d.ts.map +1 -1
- package/dist/factories/kubernetes/policy/resource-quota.js +3 -2
- package/dist/factories/kubernetes/policy/resource-quota.js.map +1 -1
- package/dist/factories/kubernetes/rbac/cluster-role-binding.d.ts +20 -1
- package/dist/factories/kubernetes/rbac/cluster-role-binding.d.ts.map +1 -1
- package/dist/factories/kubernetes/rbac/cluster-role-binding.js +19 -8
- package/dist/factories/kubernetes/rbac/cluster-role-binding.js.map +1 -1
- package/dist/factories/kubernetes/rbac/cluster-role.d.ts +3 -1
- package/dist/factories/kubernetes/rbac/cluster-role.d.ts.map +1 -1
- package/dist/factories/kubernetes/rbac/cluster-role.js +2 -8
- package/dist/factories/kubernetes/rbac/cluster-role.js.map +1 -1
- package/dist/factories/kubernetes/rbac/role-binding.d.ts +3 -1
- package/dist/factories/kubernetes/rbac/role-binding.d.ts.map +1 -1
- package/dist/factories/kubernetes/rbac/role-binding.js +2 -8
- package/dist/factories/kubernetes/rbac/role-binding.js.map +1 -1
- package/dist/factories/kubernetes/rbac/role.d.ts +3 -1
- package/dist/factories/kubernetes/rbac/role.d.ts.map +1 -1
- package/dist/factories/kubernetes/rbac/role.js +2 -8
- package/dist/factories/kubernetes/rbac/role.js.map +1 -1
- package/dist/factories/kubernetes/rbac/service-account.d.ts +3 -1
- package/dist/factories/kubernetes/rbac/service-account.d.ts.map +1 -1
- package/dist/factories/kubernetes/rbac/service-account.js +2 -8
- package/dist/factories/kubernetes/rbac/service-account.js.map +1 -1
- package/dist/factories/kubernetes/scheduling/priority-class.d.ts +3 -1
- package/dist/factories/kubernetes/scheduling/priority-class.d.ts.map +1 -1
- package/dist/factories/kubernetes/scheduling/priority-class.js +2 -7
- package/dist/factories/kubernetes/scheduling/priority-class.js.map +1 -1
- package/dist/factories/kubernetes/scheduling/runtime-class.d.ts +3 -2
- package/dist/factories/kubernetes/scheduling/runtime-class.d.ts.map +1 -1
- package/dist/factories/kubernetes/scheduling/runtime-class.js +2 -1
- package/dist/factories/kubernetes/scheduling/runtime-class.js.map +1 -1
- package/dist/factories/kubernetes/storage/csi-driver.d.ts +3 -1
- package/dist/factories/kubernetes/storage/csi-driver.d.ts.map +1 -1
- package/dist/factories/kubernetes/storage/csi-driver.js +2 -7
- package/dist/factories/kubernetes/storage/csi-driver.js.map +1 -1
- package/dist/factories/kubernetes/storage/csi-node.d.ts +3 -1
- package/dist/factories/kubernetes/storage/csi-node.d.ts.map +1 -1
- package/dist/factories/kubernetes/storage/csi-node.js +2 -1
- package/dist/factories/kubernetes/storage/csi-node.js.map +1 -1
- package/dist/factories/kubernetes/storage/persistent-volume-claim.d.ts +14 -1
- package/dist/factories/kubernetes/storage/persistent-volume-claim.d.ts.map +1 -1
- package/dist/factories/kubernetes/storage/persistent-volume-claim.js +13 -1
- package/dist/factories/kubernetes/storage/persistent-volume-claim.js.map +1 -1
- package/dist/factories/kubernetes/storage/persistent-volume.d.ts +3 -1
- package/dist/factories/kubernetes/storage/persistent-volume.d.ts.map +1 -1
- package/dist/factories/kubernetes/storage/persistent-volume.js +3 -2
- package/dist/factories/kubernetes/storage/persistent-volume.js.map +1 -1
- package/dist/factories/kubernetes/storage/storage-class.d.ts +3 -1
- package/dist/factories/kubernetes/storage/storage-class.d.ts.map +1 -1
- package/dist/factories/kubernetes/storage/storage-class.js +2 -8
- package/dist/factories/kubernetes/storage/storage-class.js.map +1 -1
- package/dist/factories/kubernetes/storage/volume-attachment.d.ts +3 -1
- package/dist/factories/kubernetes/storage/volume-attachment.d.ts.map +1 -1
- package/dist/factories/kubernetes/storage/volume-attachment.js +10 -0
- package/dist/factories/kubernetes/storage/volume-attachment.js.map +1 -1
- package/dist/factories/kubernetes/workloads/cron-job.d.ts +14 -1
- package/dist/factories/kubernetes/workloads/cron-job.d.ts.map +1 -1
- package/dist/factories/kubernetes/workloads/cron-job.js +14 -2
- package/dist/factories/kubernetes/workloads/cron-job.js.map +1 -1
- package/dist/factories/kubernetes/workloads/daemon-set.d.ts +14 -1
- package/dist/factories/kubernetes/workloads/daemon-set.d.ts.map +1 -1
- package/dist/factories/kubernetes/workloads/daemon-set.js +13 -1
- package/dist/factories/kubernetes/workloads/daemon-set.js.map +1 -1
- package/dist/factories/kubernetes/workloads/deployment.d.ts +14 -1
- package/dist/factories/kubernetes/workloads/deployment.d.ts.map +1 -1
- package/dist/factories/kubernetes/workloads/deployment.js +27 -2
- package/dist/factories/kubernetes/workloads/deployment.js.map +1 -1
- package/dist/factories/kubernetes/workloads/job.d.ts +14 -1
- package/dist/factories/kubernetes/workloads/job.d.ts.map +1 -1
- package/dist/factories/kubernetes/workloads/job.js +19 -2
- package/dist/factories/kubernetes/workloads/job.js.map +1 -1
- package/dist/factories/kubernetes/workloads/replica-set.d.ts +3 -1
- package/dist/factories/kubernetes/workloads/replica-set.d.ts.map +1 -1
- package/dist/factories/kubernetes/workloads/replica-set.js +2 -1
- package/dist/factories/kubernetes/workloads/replica-set.js.map +1 -1
- package/dist/factories/kubernetes/workloads/replication-controller.d.ts +3 -1
- package/dist/factories/kubernetes/workloads/replication-controller.d.ts.map +1 -1
- package/dist/factories/kubernetes/workloads/replication-controller.js +3 -2
- package/dist/factories/kubernetes/workloads/replication-controller.js.map +1 -1
- package/dist/factories/kubernetes/workloads/stateful-set.d.ts +14 -1
- package/dist/factories/kubernetes/workloads/stateful-set.d.ts.map +1 -1
- package/dist/factories/kubernetes/workloads/stateful-set.js +22 -2
- package/dist/factories/kubernetes/workloads/stateful-set.js.map +1 -1
- package/dist/factories/kubernetes/yaml/conflict-handler.d.ts +23 -0
- package/dist/factories/kubernetes/yaml/conflict-handler.d.ts.map +1 -0
- package/dist/factories/kubernetes/yaml/conflict-handler.js +83 -0
- package/dist/factories/kubernetes/yaml/conflict-handler.js.map +1 -0
- package/dist/factories/kubernetes/yaml/yaml-directory.d.ts +6 -11
- package/dist/factories/kubernetes/yaml/yaml-directory.d.ts.map +1 -1
- package/dist/factories/kubernetes/yaml/yaml-directory.js +10 -75
- package/dist/factories/kubernetes/yaml/yaml-directory.js.map +1 -1
- package/dist/factories/kubernetes/yaml/yaml-file.d.ts +42 -13
- package/dist/factories/kubernetes/yaml/yaml-file.d.ts.map +1 -1
- package/dist/factories/kubernetes/yaml/yaml-file.js +206 -99
- package/dist/factories/kubernetes/yaml/yaml-file.js.map +1 -1
- package/dist/factories/pebble/compositions/pebble-bootstrap.d.ts +1 -1
- package/dist/factories/pebble/compositions/pebble-bootstrap.d.ts.map +1 -1
- package/dist/factories/pebble/compositions/pebble-bootstrap.js +15 -17
- package/dist/factories/pebble/compositions/pebble-bootstrap.js.map +1 -1
- package/dist/factories/pebble/resources/helm.d.ts +2 -2
- package/dist/factories/pebble/resources/helm.d.ts.map +1 -1
- package/dist/factories/pebble/resources/helm.js +9 -28
- package/dist/factories/pebble/resources/helm.js.map +1 -1
- package/dist/factories/shared.d.ts +12 -71
- package/dist/factories/shared.d.ts.map +1 -1
- package/dist/factories/shared.js +10 -531
- package/dist/factories/shared.js.map +1 -1
- package/dist/factories/simple/autoscaling/horizontal-pod-autoscaler.d.ts +11 -0
- package/dist/factories/simple/autoscaling/horizontal-pod-autoscaler.d.ts.map +1 -1
- package/dist/factories/simple/autoscaling/horizontal-pod-autoscaler.js +12 -0
- package/dist/factories/simple/autoscaling/horizontal-pod-autoscaler.js.map +1 -1
- package/dist/factories/simple/compositions/web-service.d.ts +35 -0
- package/dist/factories/simple/compositions/web-service.d.ts.map +1 -0
- package/dist/{core/composition/composition.js → factories/simple/compositions/web-service.js} +15 -2
- package/dist/factories/simple/compositions/web-service.js.map +1 -0
- package/dist/factories/simple/config/config-map.d.ts +11 -0
- package/dist/factories/simple/config/config-map.d.ts.map +1 -1
- package/dist/factories/simple/config/config-map.js +11 -0
- package/dist/factories/simple/config/config-map.js.map +1 -1
- package/dist/factories/simple/config/secret.d.ts +11 -0
- package/dist/factories/simple/config/secret.d.ts.map +1 -1
- package/dist/factories/simple/config/secret.js +17 -3
- package/dist/factories/simple/config/secret.js.map +1 -1
- package/dist/factories/simple/helm/index.d.ts +10 -0
- package/dist/factories/simple/helm/index.d.ts.map +1 -1
- package/dist/factories/simple/helm/index.js +10 -0
- package/dist/factories/simple/helm/index.js.map +1 -1
- package/dist/factories/simple/index.d.ts +1 -1
- package/dist/factories/simple/networking/ingress.d.ts +14 -2
- package/dist/factories/simple/networking/ingress.d.ts.map +1 -1
- package/dist/factories/simple/networking/ingress.js +12 -0
- package/dist/factories/simple/networking/ingress.js.map +1 -1
- package/dist/factories/simple/networking/network-policy.d.ts +11 -1
- package/dist/factories/simple/networking/network-policy.d.ts.map +1 -1
- package/dist/factories/simple/networking/network-policy.js +10 -0
- package/dist/factories/simple/networking/network-policy.js.map +1 -1
- package/dist/factories/simple/networking/service.d.ts +10 -0
- package/dist/factories/simple/networking/service.d.ts.map +1 -1
- package/dist/factories/simple/networking/service.js +10 -0
- package/dist/factories/simple/networking/service.js.map +1 -1
- package/dist/factories/simple/storage/persistent-volume-claim.d.ts +10 -0
- package/dist/factories/simple/storage/persistent-volume-claim.d.ts.map +1 -1
- package/dist/factories/simple/storage/persistent-volume-claim.js +10 -0
- package/dist/factories/simple/storage/persistent-volume-claim.js.map +1 -1
- package/dist/factories/simple/storage/persistent-volume.d.ts +11 -0
- package/dist/factories/simple/storage/persistent-volume.d.ts.map +1 -1
- package/dist/factories/simple/storage/persistent-volume.js +12 -0
- package/dist/factories/simple/storage/persistent-volume.js.map +1 -1
- package/dist/factories/simple/types.d.ts +16 -0
- package/dist/factories/simple/types.d.ts.map +1 -1
- package/dist/factories/simple/workloads/cron-job.d.ts +10 -0
- package/dist/factories/simple/workloads/cron-job.d.ts.map +1 -1
- package/dist/factories/simple/workloads/cron-job.js +11 -0
- package/dist/factories/simple/workloads/cron-job.js.map +1 -1
- package/dist/factories/simple/workloads/daemon-set.d.ts +9 -0
- package/dist/factories/simple/workloads/daemon-set.d.ts.map +1 -1
- package/dist/factories/simple/workloads/daemon-set.js +9 -0
- package/dist/factories/simple/workloads/daemon-set.js.map +1 -1
- package/dist/factories/simple/workloads/deployment.d.ts +11 -1
- package/dist/factories/simple/workloads/deployment.d.ts.map +1 -1
- package/dist/factories/simple/workloads/deployment.js +19 -9
- package/dist/factories/simple/workloads/deployment.js.map +1 -1
- package/dist/factories/simple/workloads/job.d.ts +10 -0
- package/dist/factories/simple/workloads/job.d.ts.map +1 -1
- package/dist/factories/simple/workloads/job.js +11 -0
- package/dist/factories/simple/workloads/job.js.map +1 -1
- package/dist/factories/simple/workloads/stateful-set.d.ts +11 -0
- package/dist/factories/simple/workloads/stateful-set.d.ts.map +1 -1
- package/dist/factories/simple/workloads/stateful-set.js +12 -0
- package/dist/factories/simple/workloads/stateful-set.js.map +1 -1
- package/dist/factories/simple/yaml/index.d.ts +8 -0
- package/dist/factories/simple/yaml/index.d.ts.map +1 -1
- package/dist/factories/simple/yaml/index.js +8 -0
- package/dist/factories/simple/yaml/index.js.map +1 -1
- package/dist/index.d.ts +105 -6
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +115 -42
- package/dist/index.js.map +1 -1
- package/dist/shared/brands.d.ts +32 -0
- package/dist/shared/brands.d.ts.map +1 -0
- package/dist/shared/brands.js +32 -0
- package/dist/shared/brands.js.map +1 -0
- package/dist/utils/helpers.d.ts +31 -57
- package/dist/utils/helpers.d.ts.map +1 -1
- package/dist/utils/helpers.js +46 -494
- package/dist/utils/helpers.js.map +1 -1
- package/dist/utils/index.d.ts +5 -4
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +8 -6
- package/dist/utils/index.js.map +1 -1
- package/dist/utils/string.d.ts +31 -0
- package/dist/utils/string.d.ts.map +1 -0
- package/dist/utils/string.js +82 -0
- package/dist/utils/string.js.map +1 -0
- package/dist/utils/type-guards.d.ts +20 -11
- package/dist/utils/type-guards.d.ts.map +1 -1
- package/dist/utils/type-guards.js +78 -26
- package/dist/utils/type-guards.js.map +1 -1
- package/package.json +19 -13
- package/dist/core/composition/composition.d.ts +0 -10
- package/dist/core/composition/composition.d.ts.map +0 -1
- package/dist/core/composition/composition.js.map +0 -1
- package/dist/core/composition/typekro-runtime/index.d.ts +0 -3
- package/dist/core/composition/typekro-runtime/index.d.ts.map +0 -1
- package/dist/core/composition/typekro-runtime/index.js.map +0 -1
- package/dist/core/composition/typekro-runtime/typekro-runtime.d.ts.map +0 -1
- package/dist/core/composition/typekro-runtime/typekro-runtime.js +0 -165
- package/dist/core/composition/typekro-runtime/typekro-runtime.js.map +0 -1
- package/dist/core/composition/typekro-runtime/types.d.ts +0 -19
- package/dist/core/composition/typekro-runtime/types.d.ts.map +0 -1
- package/dist/core/composition/typekro-runtime/types.js.map +0 -1
- package/dist/core/composition/types.d.ts +0 -27
- package/dist/core/composition/types.d.ts.map +0 -1
- package/dist/core/composition/types.js +0 -8
- package/dist/core/composition/types.js.map +0 -1
- package/dist/core/dependencies/type-guards.d.ts +0 -17
- package/dist/core/dependencies/type-guards.d.ts.map +0 -1
- package/dist/core/dependencies/type-guards.js +0 -40
- package/dist/core/dependencies/type-guards.js.map +0 -1
- package/dist/core/deployment/deployment-strategies.d.ts +0 -12
- package/dist/core/deployment/deployment-strategies.d.ts.map +0 -1
- package/dist/core/deployment/deployment-strategies.js +0 -11
- package/dist/core/deployment/deployment-strategies.js.map +0 -1
- package/dist/core/deployment/event-streamer.d.ts +0 -112
- package/dist/core/deployment/event-streamer.d.ts.map +0 -1
- package/dist/core/deployment/event-streamer.js +0 -348
- package/dist/core/deployment/event-streamer.js.map +0 -1
- package/dist/core/direct-deployment.d.ts +0 -8
- package/dist/core/direct-deployment.d.ts.map +0 -1
- package/dist/core/direct-deployment.js +0 -9
- package/dist/core/direct-deployment.js.map +0 -1
- package/dist/core/evaluation/cel-optimizer.d.ts.map +0 -1
- package/dist/core/evaluation/cel-optimizer.js.map +0 -1
- package/dist/core/expressions/analyzer.d.ts +0 -584
- package/dist/core/expressions/analyzer.d.ts.map +0 -1
- package/dist/core/expressions/analyzer.js +0 -2921
- package/dist/core/expressions/analyzer.js.map +0 -1
- package/dist/core/expressions/cache.d.ts.map +0 -1
- package/dist/core/expressions/cache.js.map +0 -1
- package/dist/core/expressions/cel-conversion-engine.d.ts.map +0 -1
- package/dist/core/expressions/cel-conversion-engine.js.map +0 -1
- package/dist/core/expressions/compile-time-validation.d.ts +0 -270
- package/dist/core/expressions/compile-time-validation.d.ts.map +0 -1
- package/dist/core/expressions/compile-time-validation.js.map +0 -1
- package/dist/core/expressions/composition-integration.d.ts +0 -315
- package/dist/core/expressions/composition-integration.d.ts.map +0 -1
- package/dist/core/expressions/composition-integration.js +0 -944
- package/dist/core/expressions/composition-integration.js.map +0 -1
- package/dist/core/expressions/conditional-expression-processor.d.ts.map +0 -1
- package/dist/core/expressions/conditional-expression-processor.js.map +0 -1
- package/dist/core/expressions/conditional-integration.d.ts.map +0 -1
- package/dist/core/expressions/conditional-integration.js.map +0 -1
- package/dist/core/expressions/conditional-validation.d.ts +0 -181
- package/dist/core/expressions/conditional-validation.d.ts.map +0 -1
- package/dist/core/expressions/conditional-validation.js +0 -460
- package/dist/core/expressions/conditional-validation.js.map +0 -1
- package/dist/core/expressions/context-aware-generator.d.ts.map +0 -1
- package/dist/core/expressions/context-aware-generator.js.map +0 -1
- package/dist/core/expressions/context-detector.d.ts.map +0 -1
- package/dist/core/expressions/context-detector.js.map +0 -1
- package/dist/core/expressions/context-switcher.d.ts +0 -185
- package/dist/core/expressions/context-switcher.d.ts.map +0 -1
- package/dist/core/expressions/context-switcher.js +0 -515
- package/dist/core/expressions/context-switcher.js.map +0 -1
- package/dist/core/expressions/context-validator.d.ts.map +0 -1
- package/dist/core/expressions/context-validator.js.map +0 -1
- package/dist/core/expressions/custom-context-manager.d.ts +0 -194
- package/dist/core/expressions/custom-context-manager.d.ts.map +0 -1
- package/dist/core/expressions/custom-context-manager.js +0 -390
- package/dist/core/expressions/custom-context-manager.js.map +0 -1
- package/dist/core/expressions/expression-proxy.d.ts +0 -80
- package/dist/core/expressions/expression-proxy.d.ts.map +0 -1
- package/dist/core/expressions/expression-proxy.js +0 -227
- package/dist/core/expressions/expression-proxy.js.map +0 -1
- package/dist/core/expressions/factory-integration.d.ts.map +0 -1
- package/dist/core/expressions/factory-integration.js.map +0 -1
- package/dist/core/expressions/factory-pattern-handler.d.ts.map +0 -1
- package/dist/core/expressions/factory-pattern-handler.js.map +0 -1
- package/dist/core/expressions/field-hydration-processor.d.ts +0 -191
- package/dist/core/expressions/field-hydration-processor.d.ts.map +0 -1
- package/dist/core/expressions/field-hydration-processor.js +0 -561
- package/dist/core/expressions/field-hydration-processor.js.map +0 -1
- package/dist/core/expressions/imperative-analyzer.d.ts.map +0 -1
- package/dist/core/expressions/imperative-analyzer.js.map +0 -1
- package/dist/core/expressions/lazy-analysis.d.ts +0 -1128
- package/dist/core/expressions/lazy-analysis.d.ts.map +0 -1
- package/dist/core/expressions/lazy-analysis.js +0 -2443
- package/dist/core/expressions/lazy-analysis.js.map +0 -1
- package/dist/core/expressions/magic-assignable-analyzer.d.ts.map +0 -1
- package/dist/core/expressions/magic-assignable-analyzer.js.map +0 -1
- package/dist/core/expressions/magic-proxy-analyzer.d.ts.map +0 -1
- package/dist/core/expressions/magic-proxy-analyzer.js.map +0 -1
- package/dist/core/expressions/magic-proxy-detector.d.ts.map +0 -1
- package/dist/core/expressions/magic-proxy-detector.js.map +0 -1
- package/dist/core/expressions/migration-helpers.d.ts.map +0 -1
- package/dist/core/expressions/migration-helpers.js.map +0 -1
- package/dist/core/expressions/optionality-handler.d.ts +0 -503
- package/dist/core/expressions/optionality-handler.d.ts.map +0 -1
- package/dist/core/expressions/optionality-handler.js +0 -1306
- package/dist/core/expressions/optionality-handler.js.map +0 -1
- package/dist/core/expressions/parser.d.ts.map +0 -1
- package/dist/core/expressions/parser.js.map +0 -1
- package/dist/core/expressions/readiness-integration.d.ts +0 -119
- package/dist/core/expressions/readiness-integration.d.ts.map +0 -1
- package/dist/core/expressions/readiness-integration.js +0 -386
- package/dist/core/expressions/readiness-integration.js.map +0 -1
- package/dist/core/expressions/resource-analyzer.d.ts +0 -486
- package/dist/core/expressions/resource-analyzer.d.ts.map +0 -1
- package/dist/core/expressions/resource-analyzer.js +0 -1086
- package/dist/core/expressions/resource-analyzer.js.map +0 -1
- package/dist/core/expressions/resource-validation.d.ts.map +0 -1
- package/dist/core/expressions/resource-validation.js +0 -552
- package/dist/core/expressions/resource-validation.js.map +0 -1
- package/dist/core/expressions/runtime-error-mapper.d.ts +0 -138
- package/dist/core/expressions/runtime-error-mapper.d.ts.map +0 -1
- package/dist/core/expressions/runtime-error-mapper.js +0 -412
- package/dist/core/expressions/runtime-error-mapper.js.map +0 -1
- package/dist/core/expressions/source-map.d.ts.map +0 -1
- package/dist/core/expressions/source-map.js.map +0 -1
- package/dist/core/expressions/status-builder-analyzer.d.ts +0 -353
- package/dist/core/expressions/status-builder-analyzer.d.ts.map +0 -1
- package/dist/core/expressions/status-builder-analyzer.js +0 -1311
- package/dist/core/expressions/status-builder-analyzer.js.map +0 -1
- package/dist/core/expressions/type-inference.d.ts.map +0 -1
- package/dist/core/expressions/type-inference.js.map +0 -1
- package/dist/core/expressions/type-safety.d.ts.map +0 -1
- package/dist/core/expressions/type-safety.js.map +0 -1
- package/dist/core/expressions/types.d.ts.map +0 -1
- package/dist/core/expressions/types.js.map +0 -1
- package/dist/core/factory.d.ts +0 -12
- package/dist/core/factory.d.ts.map +0 -1
- package/dist/core/factory.js +0 -13
- package/dist/core/factory.js.map +0 -1
- package/dist/core/readiness/cluster-state.d.ts +0 -229
- package/dist/core/readiness/cluster-state.d.ts.map +0 -1
- package/dist/core/readiness/cluster-state.js +0 -368
- package/dist/core/readiness/cluster-state.js.map +0 -1
- package/dist/core/scope/resolver.d.ts +0 -16
- package/dist/core/scope/resolver.d.ts.map +0 -1
- package/dist/core/scope/resolver.js +0 -45
- package/dist/core/scope/resolver.js.map +0 -1
- package/dist/core/types/factory-scope.d.ts +0 -42
- package/dist/core/types/factory-scope.d.ts.map +0 -1
- package/dist/core/types/factory-scope.js +0 -14
- package/dist/core/types/factory-scope.js.map +0 -1
- package/dist/core/utils/crd-patcher.d.ts.map +0 -1
- package/dist/core/utils/crd-patcher.js +0 -198
- package/dist/core/utils/crd-patcher.js.map +0 -1
- package/dist/core/utils/crd-schema-fix.d.ts.map +0 -1
- package/dist/core/utils/crd-schema-fix.js.map +0 -1
- package/dist/core/utils/index.d.ts +0 -12
- package/dist/core/utils/index.d.ts.map +0 -1
- package/dist/core/utils/index.js +0 -12
- package/dist/core/utils/index.js.map +0 -1
- package/dist/core/utils/minimal-connection-reset-suppression.d.ts +0 -16
- package/dist/core/utils/minimal-connection-reset-suppression.d.ts.map +0 -1
- package/dist/core/utils/minimal-connection-reset-suppression.js +0 -72
- package/dist/core/utils/minimal-connection-reset-suppression.js.map +0 -1
- package/dist/core/utils/output-filter.d.ts +0 -16
- package/dist/core/utils/output-filter.d.ts.map +0 -1
- package/dist/core/utils/output-filter.js +0 -90
- package/dist/core/utils/output-filter.js.map +0 -1
- package/dist/core/utils/scoped-error-suppression.d.ts +0 -25
- package/dist/core/utils/scoped-error-suppression.d.ts.map +0 -1
- package/dist/core/utils/scoped-error-suppression.js +0 -226
- package/dist/core/utils/scoped-error-suppression.js.map +0 -1
- package/dist/core.d.ts +0 -30
- package/dist/core.d.ts.map +0 -1
- package/dist/core.js +0 -59
- package/dist/core.js.map +0 -1
- package/dist/factories/cilium/resources/bgp.d.ts +0 -10
- package/dist/factories/cilium/resources/bgp.d.ts.map +0 -1
- package/dist/factories/cilium/resources/bgp.js +0 -14
- package/dist/factories/cilium/resources/bgp.js.map +0 -1
- package/dist/factories/cilium/resources/load-balancer.d.ts +0 -9
- package/dist/factories/cilium/resources/load-balancer.d.ts.map +0 -1
- package/dist/factories/cilium/resources/load-balancer.js +0 -12
- package/dist/factories/cilium/resources/load-balancer.js.map +0 -1
- package/dist/factories/cilium/resources/observability.d.ts +0 -9
- package/dist/factories/cilium/resources/observability.d.ts.map +0 -1
- package/dist/factories/cilium/resources/observability.js +0 -11
- package/dist/factories/cilium/resources/observability.js.map +0 -1
- package/dist/factories/cilium/resources/security.d.ts +0 -10
- package/dist/factories/cilium/resources/security.d.ts.map +0 -1
- package/dist/factories/cilium/resources/security.js +0 -14
- package/dist/factories/cilium/resources/security.js.map +0 -1
- /package/dist/{core/composition → compositions}/typekro-runtime/index.js +0 -0
- /package/dist/{core/composition → compositions}/typekro-runtime/types.js +0 -0
- /package/dist/core/expressions/{source-map.d.ts → analysis/source-map.d.ts} +0 -0
- /package/dist/core/expressions/{types.js → analysis/types.js} +0 -0
|
@@ -4,22 +4,20 @@
|
|
|
4
4
|
* This module provides the main serialization functions to convert
|
|
5
5
|
* TypeScript resource definitions to Kro ResourceGraphDefinition YAML manifests.
|
|
6
6
|
*/
|
|
7
|
-
import { DependencyResolver } from '../dependencies/index.js';
|
|
8
7
|
import { createDirectResourceFactory } from '../deployment/direct-factory.js';
|
|
9
8
|
import { createKroResourceFactory } from '../deployment/kro-factory.js';
|
|
10
|
-
import {
|
|
11
|
-
import {
|
|
12
|
-
import {
|
|
9
|
+
import { ensureError, ValidationError } from '../errors.js';
|
|
10
|
+
import { analyzeCompositionBody, applyAnalysisToResources, } from '../expressions/composition/composition-analyzer.js';
|
|
11
|
+
import { StatusBuilderAnalyzer } from '../expressions/factory/status-builder-analyzer.js';
|
|
13
12
|
import { getComponentLogger } from '../logging/index.js';
|
|
14
|
-
import {
|
|
13
|
+
import { setResourceId } from '../metadata/index.js';
|
|
14
|
+
import { createExternalRefWithoutRegistration, createSchemaProxy } from '../references/index.js';
|
|
15
|
+
import { getKindInfo, getSemanticCandidateKinds } from '../resources/factory-registry.js';
|
|
15
16
|
import { validateResourceGraphDefinition } from '../validation/cel-validator.js';
|
|
17
|
+
import { optimizeStatusMappings } from './cel-optimizer.js';
|
|
16
18
|
import { generateKroSchemaFromArktype } from './schema.js';
|
|
19
|
+
import { runStatusAnalysisPipeline } from './status-analysis-pipeline.js';
|
|
17
20
|
import { serializeResourceGraphToYaml } from './yaml.js';
|
|
18
|
-
import { StatusBuilderAnalyzer } from '../expressions/status-builder-analyzer.js';
|
|
19
|
-
import { containsKubernetesRefs } from '../../utils/type-guards.js';
|
|
20
|
-
import { isCelExpression } from '../../utils/type-guards.js';
|
|
21
|
-
import { CelToJavaScriptMigrationHelper } from '../expressions/migration-helpers.js';
|
|
22
|
-
import { CelConversionEngine } from '../expressions/cel-conversion-engine.js';
|
|
23
21
|
/**
|
|
24
22
|
* Separate Enhanced<> resources from deployment closures in the builder result
|
|
25
23
|
*/
|
|
@@ -43,310 +41,361 @@ function separateResourcesAndClosures(builderResult) {
|
|
|
43
41
|
return { resources, closures };
|
|
44
42
|
}
|
|
45
43
|
/**
|
|
46
|
-
*
|
|
44
|
+
* Create a minimal stub resource object for factory calls that were detected
|
|
45
|
+
* by AST analysis but didn't execute at runtime.
|
|
47
46
|
*
|
|
48
|
-
* This
|
|
49
|
-
*
|
|
47
|
+
* This happens when a factory call is inside an if-branch that wasn't taken
|
|
48
|
+
* because the schema proxy's `Symbol.toPrimitive` value didn't match the comparison.
|
|
49
|
+
* The stub contains just enough info for YAML serialization to produce a valid
|
|
50
|
+
* resource entry with includeWhen/forEach directives.
|
|
50
51
|
*/
|
|
51
|
-
function
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
}
|
|
64
|
-
else if (value && typeof value === 'object' && !Array.isArray(value)) {
|
|
65
|
-
// Recursively check nested objects
|
|
66
|
-
const nestedResult = detectAndPreserveCelExpressions(value, preservedMappings, currentPath);
|
|
67
|
-
hasExistingCel = hasExistingCel || nestedResult.hasExistingCel;
|
|
68
|
-
Object.assign(preservedMappings, nestedResult.preservedMappings);
|
|
69
|
-
}
|
|
70
|
-
}
|
|
71
|
-
return { hasExistingCel, preservedMappings };
|
|
52
|
+
function createStubResource(factoryName, resourceId) {
|
|
53
|
+
const kindInfo = getKindInfo(factoryName);
|
|
54
|
+
if (!kindInfo)
|
|
55
|
+
return null;
|
|
56
|
+
const stub = {
|
|
57
|
+
apiVersion: kindInfo.apiVersion,
|
|
58
|
+
kind: kindInfo.kind,
|
|
59
|
+
metadata: { name: resourceId, labels: {} },
|
|
60
|
+
};
|
|
61
|
+
// Store resource ID in WeakMap metadata
|
|
62
|
+
setResourceId(stub, resourceId);
|
|
63
|
+
return stub;
|
|
72
64
|
}
|
|
65
|
+
// =============================================================================
|
|
66
|
+
// Re-exported helpers (canonical source: status-analysis-helpers.ts)
|
|
67
|
+
// =============================================================================
|
|
68
|
+
import { analyzeStatusMappingTypes, analyzeValueType, detectAndPreserveCelExpressions, isLikelyStaticObject, mergePreservedCelExpressions, } from './status-analysis-helpers.js';
|
|
69
|
+
// =============================================================================
|
|
70
|
+
// Internal helpers exported for testing
|
|
71
|
+
// =============================================================================
|
|
72
|
+
/** @internal Exported for testing only */
|
|
73
|
+
export { separateResourcesAndClosures, createStubResource, detectAndPreserveCelExpressions, mergePreservedCelExpressions, analyzeStatusMappingTypes, analyzeValueType, isLikelyStaticObject, validateResourceGraphName, findResourceByKey, analyzeAndConvertStatusMappings, processCompositionBodyAnalysis, reanalyzeStatusForDirectFactory, wrapWithResourceGraphProxy, };
|
|
74
|
+
// =============================================================================
|
|
75
|
+
// Extracted helper: Resource graph name validation
|
|
76
|
+
// =============================================================================
|
|
73
77
|
/**
|
|
74
|
-
*
|
|
78
|
+
* Validate a resource graph name and return the Kubernetes-compatible form.
|
|
79
|
+
*
|
|
80
|
+
* @throws {ValidationError} if the name is empty, whitespace-only, not DNS-compliant,
|
|
81
|
+
* or exceeds the 253-character Kubernetes limit.
|
|
82
|
+
* @returns The validated, lowercase-hyphenated Kubernetes name.
|
|
83
|
+
*
|
|
84
|
+
* @internal Exported for testing only
|
|
75
85
|
*/
|
|
76
|
-
function
|
|
77
|
-
if (
|
|
78
|
-
|
|
86
|
+
function validateResourceGraphName(name) {
|
|
87
|
+
if (!name || typeof name !== 'string') {
|
|
88
|
+
throw new ValidationError(`Invalid resource graph name: ${JSON.stringify(name)}. Resource graph name must be a non-empty string.`, 'ResourceGraphDefinition', String(name), 'name', ['Provide a non-empty string for the resource graph name']);
|
|
79
89
|
}
|
|
80
|
-
|
|
81
|
-
|
|
90
|
+
const trimmedName = name.trim();
|
|
91
|
+
if (trimmedName.length === 0) {
|
|
92
|
+
throw new ValidationError(`Invalid resource graph name: Resource graph name cannot be empty or whitespace-only.`, 'ResourceGraphDefinition', name, 'name', ['Provide a non-whitespace resource graph name']);
|
|
82
93
|
}
|
|
83
|
-
|
|
84
|
-
|
|
94
|
+
const kubernetesName = trimmedName.replace(/([a-z])([A-Z])/g, '$1-$2').toLowerCase();
|
|
95
|
+
if (!/^[a-z0-9]([-a-z0-9]*[a-z0-9])?$/.test(kubernetesName)) {
|
|
96
|
+
throw new ValidationError(`Invalid resource graph name: "${name}" converts to "${kubernetesName}" which is not a valid Kubernetes resource name. Names must consist of lowercase alphanumeric characters or '-', and must start and end with an alphanumeric character.`, 'ResourceGraphDefinition', name, 'name', [
|
|
97
|
+
'Use lowercase alphanumeric characters and hyphens only',
|
|
98
|
+
'Must start and end with an alphanumeric character',
|
|
99
|
+
]);
|
|
85
100
|
}
|
|
86
|
-
|
|
101
|
+
if (kubernetesName.length > 253) {
|
|
102
|
+
throw new ValidationError(`Invalid resource graph name: "${name}" converts to "${kubernetesName}" which exceeds the 253 character limit for Kubernetes resource names.`, 'ResourceGraphDefinition', name, 'name', ['Shorten the resource graph name to stay under 253 characters']);
|
|
103
|
+
}
|
|
104
|
+
return kubernetesName;
|
|
87
105
|
}
|
|
106
|
+
// =============================================================================
|
|
107
|
+
// Extracted helper: Resource key lookup (cross-composition access)
|
|
108
|
+
// =============================================================================
|
|
88
109
|
/**
|
|
89
|
-
*
|
|
110
|
+
* Find a resource by key name in a resources map.
|
|
90
111
|
*
|
|
91
|
-
*
|
|
92
|
-
*
|
|
112
|
+
* Implements multiple matching strategies for cross-composition magic proxy
|
|
113
|
+
* access (e.g. `composition.database`):
|
|
114
|
+
* 1. Direct match by generated resource ID (exact)
|
|
115
|
+
* 2. Smart pattern matching — name parts + kind-based (fuzzy, logged)
|
|
116
|
+
* 3. Case-insensitive match on resource ID (fuzzy, logged)
|
|
117
|
+
* 4. Partial matching — key parts contained in resource ID (fuzzy, logged)
|
|
118
|
+
*
|
|
119
|
+
* Strategies 2-4 emit a debug-level warning so users can diagnose unexpected
|
|
120
|
+
* cross-composition references. Strategy 1 is the only silent/exact match.
|
|
121
|
+
*
|
|
122
|
+
* @internal Exported for testing only
|
|
93
123
|
*/
|
|
94
|
-
function
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
124
|
+
function findResourceByKey(key, resourcesWithKeys, logger) {
|
|
125
|
+
if (typeof key !== 'string')
|
|
126
|
+
return undefined;
|
|
127
|
+
// Strategy 1: Direct match by generated resource ID (exact — no warning)
|
|
128
|
+
if (resourcesWithKeys[key]) {
|
|
129
|
+
return resourcesWithKeys[key];
|
|
130
|
+
}
|
|
131
|
+
// Strategy 2: Smart pattern matching for common cases
|
|
132
|
+
const keyLower = key.toLowerCase();
|
|
133
|
+
const keyParts = key.split(/[-_]/).map((p) => p.toLowerCase());
|
|
134
|
+
for (const [resourceId, resource] of Object.entries(resourcesWithKeys)) {
|
|
135
|
+
const kind = resource.kind.toLowerCase();
|
|
136
|
+
let name = '';
|
|
137
|
+
if (resource.metadata.name && typeof resource.metadata.name === 'string') {
|
|
138
|
+
name = resource.metadata.name.toLowerCase();
|
|
139
|
+
}
|
|
140
|
+
else if (resource.metadata.name && typeof resource.metadata.name === 'object') {
|
|
141
|
+
continue;
|
|
142
|
+
}
|
|
143
|
+
const resourceIdLower = resourceId.toLowerCase();
|
|
144
|
+
const nameParts = name.split(/[-_]/).map((p) => p.toLowerCase());
|
|
145
|
+
const hasCommonParts = keyParts.some((keyPart) => nameParts.some((namePart) => keyPart.includes(namePart) || namePart.includes(keyPart)));
|
|
146
|
+
if (hasCommonParts) {
|
|
147
|
+
if (keyParts.includes(kind) ||
|
|
148
|
+
(keyParts.includes('deployment') && kind === 'deployment') ||
|
|
149
|
+
(keyParts.includes('service') && kind === 'service')) {
|
|
150
|
+
logger?.debug('findResourceByKey: fuzzy match (strategy 2: pattern+kind)', {
|
|
151
|
+
requestedKey: key,
|
|
152
|
+
matchedResourceId: resourceId,
|
|
153
|
+
matchedKind: resource.kind,
|
|
154
|
+
});
|
|
155
|
+
return resource;
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
if (keyParts.includes(kind)) {
|
|
159
|
+
const nameInResourceId = nameParts.some((part) => resourceIdLower.includes(part));
|
|
160
|
+
if (nameInResourceId) {
|
|
161
|
+
logger?.debug('findResourceByKey: fuzzy match (strategy 2: kind+name)', {
|
|
162
|
+
requestedKey: key,
|
|
163
|
+
matchedResourceId: resourceId,
|
|
164
|
+
matchedKind: resource.kind,
|
|
165
|
+
});
|
|
166
|
+
return resource;
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
// Semantic alias matching — delegated to the central FactoryRegistry.
|
|
170
|
+
// Custom factories can register their own aliases via registerFactory().
|
|
171
|
+
for (const part of keyParts) {
|
|
172
|
+
const candidateKinds = getSemanticCandidateKinds(part);
|
|
173
|
+
if (candidateKinds?.includes(kind)) {
|
|
174
|
+
logger?.debug('findResourceByKey: fuzzy match (strategy 2: semantic pattern)', {
|
|
175
|
+
requestedKey: key,
|
|
176
|
+
matchedResourceId: resourceId,
|
|
177
|
+
matchedKind: resource.kind,
|
|
178
|
+
semanticPattern: part,
|
|
179
|
+
});
|
|
180
|
+
return resource;
|
|
107
181
|
}
|
|
108
|
-
current = current[part];
|
|
109
182
|
}
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
183
|
+
}
|
|
184
|
+
// Strategy 3: Case-insensitive match on generated resource ID
|
|
185
|
+
for (const [resourceKey, resource] of Object.entries(resourcesWithKeys)) {
|
|
186
|
+
if (resourceKey.toLowerCase() === keyLower) {
|
|
187
|
+
logger?.debug('findResourceByKey: fuzzy match (strategy 3: case-insensitive)', {
|
|
188
|
+
requestedKey: key,
|
|
189
|
+
matchedResourceId: resourceKey,
|
|
190
|
+
matchedKind: resource.kind,
|
|
191
|
+
});
|
|
192
|
+
return resource;
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
// Strategy 4: Partial matching - find resources that contain key parts in their ID
|
|
196
|
+
for (const [resourceKey, resource] of Object.entries(resourcesWithKeys)) {
|
|
197
|
+
const resourceKeyLower = resourceKey.toLowerCase();
|
|
198
|
+
if (keyParts.some((part) => part.length > 2 && resourceKeyLower.includes(part))) {
|
|
199
|
+
logger?.debug('findResourceByKey: fuzzy match (strategy 4: partial key)', {
|
|
200
|
+
requestedKey: key,
|
|
201
|
+
matchedResourceId: resourceKey,
|
|
202
|
+
matchedKind: resource.kind,
|
|
203
|
+
});
|
|
204
|
+
return resource;
|
|
113
205
|
}
|
|
114
206
|
}
|
|
115
|
-
return
|
|
207
|
+
return undefined;
|
|
116
208
|
}
|
|
117
209
|
/**
|
|
118
|
-
*
|
|
210
|
+
* Analyze a status builder function and convert JavaScript expressions to CEL.
|
|
119
211
|
*
|
|
120
|
-
* This
|
|
121
|
-
*
|
|
122
|
-
*
|
|
123
|
-
*
|
|
124
|
-
*
|
|
212
|
+
* This encapsulates the full pipeline:
|
|
213
|
+
* 1. Execute the status builder in a context that returns KubernetesRef objects
|
|
214
|
+
* 2. If imperative, try status builder analysis or fall back to imperative analysis
|
|
215
|
+
* 3. If declarative, analyze directly
|
|
216
|
+
* 4. Detect and preserve existing CEL expressions
|
|
217
|
+
* 5. Convert KubernetesRef objects to CEL via CelConversionEngine
|
|
218
|
+
* 6. Log migration opportunities
|
|
219
|
+
*
|
|
220
|
+
* @internal Exported for testing only
|
|
125
221
|
*/
|
|
126
|
-
function
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
const complexExpressionFields = [];
|
|
131
|
-
const analysisDetails = {};
|
|
132
|
-
if (!statusMappings || typeof statusMappings !== 'object') {
|
|
133
|
-
return {
|
|
134
|
-
kubernetesRefFields,
|
|
135
|
-
celExpressionFields,
|
|
136
|
-
staticValueFields,
|
|
137
|
-
complexExpressionFields,
|
|
138
|
-
analysisDetails,
|
|
139
|
-
};
|
|
140
|
-
}
|
|
141
|
-
for (const [key, value] of Object.entries(statusMappings)) {
|
|
142
|
-
const currentPath = path ? `${path}.${key}` : key;
|
|
143
|
-
// Analyze the value type and requirements
|
|
144
|
-
const analysis = analyzeValueType(value);
|
|
145
|
-
analysisDetails[currentPath] = analysis;
|
|
146
|
-
switch (analysis.type) {
|
|
147
|
-
case 'kubernetesRef':
|
|
148
|
-
kubernetesRefFields.push(currentPath);
|
|
149
|
-
break;
|
|
150
|
-
case 'celExpression':
|
|
151
|
-
celExpressionFields.push(currentPath);
|
|
152
|
-
break;
|
|
153
|
-
case 'staticValue':
|
|
154
|
-
staticValueFields.push(currentPath);
|
|
155
|
-
break;
|
|
156
|
-
case 'complexExpression':
|
|
157
|
-
complexExpressionFields.push(currentPath);
|
|
158
|
-
break;
|
|
159
|
-
}
|
|
160
|
-
// Recursively analyze nested objects
|
|
161
|
-
if (value &&
|
|
162
|
-
typeof value === 'object' &&
|
|
163
|
-
!Array.isArray(value) &&
|
|
164
|
-
!isCelExpression(value) &&
|
|
165
|
-
!containsKubernetesRefs(value)) {
|
|
166
|
-
const nestedAnalysis = analyzeStatusMappingTypes(value, currentPath);
|
|
167
|
-
kubernetesRefFields.push(...nestedAnalysis.kubernetesRefFields);
|
|
168
|
-
celExpressionFields.push(...nestedAnalysis.celExpressionFields);
|
|
169
|
-
staticValueFields.push(...nestedAnalysis.staticValueFields);
|
|
170
|
-
complexExpressionFields.push(...nestedAnalysis.complexExpressionFields);
|
|
171
|
-
Object.assign(analysisDetails, nestedAnalysis.analysisDetails);
|
|
172
|
-
}
|
|
173
|
-
}
|
|
174
|
-
return {
|
|
175
|
-
kubernetesRefFields,
|
|
176
|
-
celExpressionFields,
|
|
177
|
-
staticValueFields,
|
|
178
|
-
complexExpressionFields,
|
|
179
|
-
analysisDetails,
|
|
180
|
-
};
|
|
222
|
+
function analyzeAndConvertStatusMappings(definition, statusBuilder, schema, resourcesWithKeys, serializationLogger) {
|
|
223
|
+
// Delegate to the decomposed pipeline (Phase 2.9).
|
|
224
|
+
// The pipeline produces the same result shape as the original function.
|
|
225
|
+
return runStatusAnalysisPipeline(definition, statusBuilder, schema, resourcesWithKeys, serializationLogger);
|
|
181
226
|
}
|
|
182
227
|
/**
|
|
183
|
-
* Analyze
|
|
228
|
+
* Analyze the composition function body for control flow patterns
|
|
229
|
+
* (if-statements -> includeWhen, for-of loops -> forEach, ternary -> template overrides,
|
|
230
|
+
* collection aggregates -> status overrides).
|
|
231
|
+
*
|
|
232
|
+
* This MUST run before validation because:
|
|
233
|
+
* 1. Stub resources need to exist before resource ID validation
|
|
234
|
+
* 2. Status overrides (e.g. .map().join()) need to replace raw marker strings
|
|
235
|
+
* before CEL expression validation
|
|
236
|
+
*
|
|
237
|
+
* @internal Exported for testing only
|
|
184
238
|
*/
|
|
185
|
-
function
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
typeof value === 'string' ||
|
|
208
|
-
typeof value === 'number' ||
|
|
209
|
-
typeof value === 'boolean') {
|
|
210
|
-
return {
|
|
211
|
-
type: 'staticValue',
|
|
212
|
-
value,
|
|
213
|
-
requiresConversion: false,
|
|
214
|
-
confidence: 1.0,
|
|
215
|
-
};
|
|
216
|
-
}
|
|
217
|
-
// Check for arrays of static values
|
|
218
|
-
if (Array.isArray(value)) {
|
|
219
|
-
const hasKubernetesRefs = value.some((item) => containsKubernetesRefs(item));
|
|
220
|
-
const hasCelExpressions = value.some((item) => isCelExpression(item));
|
|
221
|
-
if (hasKubernetesRefs) {
|
|
222
|
-
return {
|
|
223
|
-
type: 'kubernetesRef',
|
|
224
|
-
value,
|
|
225
|
-
requiresConversion: true,
|
|
226
|
-
confidence: 0.9,
|
|
227
|
-
};
|
|
228
|
-
}
|
|
229
|
-
else if (hasCelExpressions) {
|
|
230
|
-
return {
|
|
231
|
-
type: 'celExpression',
|
|
232
|
-
value,
|
|
233
|
-
requiresConversion: false,
|
|
234
|
-
confidence: 0.9,
|
|
235
|
-
};
|
|
236
|
-
}
|
|
237
|
-
else {
|
|
238
|
-
return {
|
|
239
|
-
type: 'staticValue',
|
|
240
|
-
value,
|
|
241
|
-
requiresConversion: false,
|
|
242
|
-
confidence: 0.8,
|
|
243
|
-
};
|
|
244
|
-
}
|
|
245
|
-
}
|
|
246
|
-
// Check for plain objects (might be complex expressions or static data)
|
|
247
|
-
if (value && typeof value === 'object') {
|
|
248
|
-
const hasKubernetesRefs = containsKubernetesRefs(value);
|
|
249
|
-
const hasCelExpressions = Object.values(value).some((v) => isCelExpression(v));
|
|
250
|
-
if (hasKubernetesRefs) {
|
|
251
|
-
return {
|
|
252
|
-
type: 'kubernetesRef',
|
|
253
|
-
value,
|
|
254
|
-
requiresConversion: true,
|
|
255
|
-
confidence: 0.8,
|
|
256
|
-
};
|
|
257
|
-
}
|
|
258
|
-
else if (hasCelExpressions) {
|
|
259
|
-
return {
|
|
260
|
-
type: 'celExpression',
|
|
261
|
-
value,
|
|
262
|
-
requiresConversion: false,
|
|
263
|
-
confidence: 0.8,
|
|
264
|
-
};
|
|
265
|
-
}
|
|
266
|
-
else {
|
|
267
|
-
// Could be static data or complex expression - analyze further
|
|
268
|
-
const isLikelyStatic = isLikelyStaticObject(value);
|
|
269
|
-
if (isLikelyStatic) {
|
|
270
|
-
return {
|
|
271
|
-
type: 'staticValue',
|
|
272
|
-
value,
|
|
273
|
-
requiresConversion: false,
|
|
274
|
-
confidence: 0.7,
|
|
275
|
-
};
|
|
239
|
+
function processCompositionBodyAnalysis(statusMappings, resourcesWithKeys, analyzedStatusMappings, serializationLogger) {
|
|
240
|
+
let compositionAnalysis = null;
|
|
241
|
+
const analysisState = { appliedToResources: false };
|
|
242
|
+
const originalCompositionFnForAnalysis = statusMappings
|
|
243
|
+
?.__originalCompositionFn;
|
|
244
|
+
if (originalCompositionFnForAnalysis) {
|
|
245
|
+
try {
|
|
246
|
+
const resourceIds = new Set(Object.keys(resourcesWithKeys));
|
|
247
|
+
compositionAnalysis = analyzeCompositionBody(originalCompositionFnForAnalysis, resourceIds);
|
|
248
|
+
// Create stub resources for factory calls that weren't registered at runtime
|
|
249
|
+
for (const unregistered of compositionAnalysis.unregisteredFactories) {
|
|
250
|
+
if (!resourceIds.has(unregistered.resourceId)) {
|
|
251
|
+
const stub = createStubResource(unregistered.factoryName, unregistered.resourceId);
|
|
252
|
+
if (stub) {
|
|
253
|
+
resourcesWithKeys[unregistered.resourceId] = stub;
|
|
254
|
+
resourceIds.add(unregistered.resourceId);
|
|
255
|
+
serializationLogger.debug('Created stub resource for unregistered factory', {
|
|
256
|
+
resourceId: unregistered.resourceId,
|
|
257
|
+
factoryName: unregistered.factoryName,
|
|
258
|
+
});
|
|
259
|
+
}
|
|
260
|
+
}
|
|
276
261
|
}
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
262
|
+
// Apply status overrides before validation
|
|
263
|
+
if (compositionAnalysis.statusOverrides.length > 0) {
|
|
264
|
+
for (const override of compositionAnalysis.statusOverrides) {
|
|
265
|
+
analyzedStatusMappings[override.propertyPath] = override.celExpression;
|
|
266
|
+
serializationLogger.debug('Applied status override before validation', {
|
|
267
|
+
propertyPath: override.propertyPath,
|
|
268
|
+
celExpression: override.celExpression,
|
|
269
|
+
});
|
|
270
|
+
}
|
|
284
271
|
}
|
|
285
272
|
}
|
|
273
|
+
catch (analysisError) {
|
|
274
|
+
serializationLogger.debug('Composition body analysis failed (non-fatal), proceeding without control flow detection', { error: ensureError(analysisError).message });
|
|
275
|
+
}
|
|
286
276
|
}
|
|
287
|
-
|
|
288
|
-
return {
|
|
289
|
-
type: 'complexExpression',
|
|
290
|
-
value,
|
|
291
|
-
requiresConversion: false,
|
|
292
|
-
confidence: 0.3,
|
|
293
|
-
};
|
|
277
|
+
return { compositionAnalysis, analysisState };
|
|
294
278
|
}
|
|
279
|
+
// =============================================================================
|
|
280
|
+
// Extracted helper: Direct factory status re-analysis
|
|
281
|
+
// =============================================================================
|
|
295
282
|
/**
|
|
296
|
-
*
|
|
283
|
+
* Re-analyze status mappings specifically for the direct factory pattern.
|
|
284
|
+
*
|
|
285
|
+
* When the factory mode is `'direct'`, the status mappings may need different
|
|
286
|
+
* treatment than the Kro pattern (which is the default analysis target).
|
|
287
|
+
*
|
|
288
|
+
* @internal Exported for testing only
|
|
297
289
|
*/
|
|
298
|
-
function
|
|
299
|
-
if (!
|
|
300
|
-
return
|
|
290
|
+
function reanalyzeStatusForDirectFactory(analysisResults, analyzedStatusMappings, resourcesWithKeys, schema, serializationLogger) {
|
|
291
|
+
if (!analysisResults.hasKubernetesRefs) {
|
|
292
|
+
return analyzedStatusMappings;
|
|
301
293
|
}
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
294
|
+
try {
|
|
295
|
+
serializationLogger.debug('Re-analyzing status mappings for direct factory pattern');
|
|
296
|
+
const directStatusAnalyzer = new StatusBuilderAnalyzer(undefined, {
|
|
297
|
+
factoryType: 'direct',
|
|
298
|
+
performOptionalityAnalysis: true,
|
|
299
|
+
includeSourceMapping: true,
|
|
300
|
+
});
|
|
301
|
+
const directAnalysisResult = directStatusAnalyzer.analyzeReturnObjectWithMagicProxy(analysisResults.statusMappings, resourcesWithKeys, schema);
|
|
302
|
+
if (directAnalysisResult.errors.length === 0) {
|
|
303
|
+
const { preservedMappings: directPreservedMappings } = detectAndPreserveCelExpressions(analysisResults.statusMappings);
|
|
304
|
+
const result = mergePreservedCelExpressions(directAnalysisResult.statusMappings, directPreservedMappings);
|
|
305
|
+
serializationLogger.debug('Successfully re-analyzed status mappings for direct factory');
|
|
306
|
+
return result;
|
|
307
|
+
}
|
|
308
|
+
}
|
|
309
|
+
catch (error) {
|
|
310
|
+
serializationLogger.error('Failed to re-analyze status mappings for direct factory, using default analysis', ensureError(error));
|
|
311
311
|
}
|
|
312
|
-
|
|
313
|
-
const keys = Object.keys(obj);
|
|
314
|
-
const hasCommonStaticKeys = keys.some((key) => ['name', 'id', 'type', 'kind', 'version', 'label', 'tag'].includes(key.toLowerCase()));
|
|
315
|
-
return hasCommonStaticKeys && values.length <= 10; // Reasonable size for static config
|
|
312
|
+
return analyzedStatusMappings;
|
|
316
313
|
}
|
|
314
|
+
// =============================================================================
|
|
315
|
+
// Extracted helper: Cross-composition magic proxy
|
|
316
|
+
// =============================================================================
|
|
317
317
|
/**
|
|
318
|
-
*
|
|
318
|
+
* Wrap a base resource graph object with a Proxy that enables cross-composition
|
|
319
|
+
* resource access (e.g. `composition.database`).
|
|
320
|
+
*
|
|
321
|
+
* The Proxy intercepts property access for unknown keys and delegates to
|
|
322
|
+
* `findResourceByKey` to locate matching resources, then creates an external
|
|
323
|
+
* ref for them.
|
|
324
|
+
*
|
|
325
|
+
* @internal Exported for testing only
|
|
319
326
|
*/
|
|
320
|
-
function
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
327
|
+
function wrapWithResourceGraphProxy(baseResourceGraph, resourcesWithKeys, logger) {
|
|
328
|
+
return new Proxy(baseResourceGraph, {
|
|
329
|
+
get(target, prop, receiver) {
|
|
330
|
+
if (prop in target) {
|
|
331
|
+
return Reflect.get(target, prop, receiver);
|
|
332
|
+
}
|
|
333
|
+
const matchingResource = findResourceByKey(prop, resourcesWithKeys, logger);
|
|
334
|
+
if (matchingResource?.metadata.name) {
|
|
335
|
+
return createExternalRefWithoutRegistration(matchingResource.apiVersion, matchingResource.kind, matchingResource.metadata.name, matchingResource.metadata.namespace);
|
|
336
|
+
}
|
|
337
|
+
return undefined;
|
|
338
|
+
},
|
|
339
|
+
ownKeys(target) {
|
|
340
|
+
return Reflect.ownKeys(target);
|
|
341
|
+
},
|
|
342
|
+
getOwnPropertyDescriptor(target, prop) {
|
|
343
|
+
if (prop in target) {
|
|
344
|
+
return Reflect.getOwnPropertyDescriptor(target, prop);
|
|
345
|
+
}
|
|
346
|
+
const matchingResource = findResourceByKey(prop, resourcesWithKeys, logger);
|
|
347
|
+
if (matchingResource) {
|
|
348
|
+
return {
|
|
349
|
+
configurable: true,
|
|
350
|
+
enumerable: false,
|
|
351
|
+
value: undefined,
|
|
352
|
+
};
|
|
353
|
+
}
|
|
354
|
+
return undefined;
|
|
355
|
+
},
|
|
356
|
+
});
|
|
343
357
|
}
|
|
344
358
|
// =============================================================================
|
|
345
359
|
// NEW FACTORY PATTERN API
|
|
346
360
|
// =============================================================================
|
|
347
361
|
/**
|
|
348
|
-
* Create a
|
|
349
|
-
*
|
|
362
|
+
* Create a typed ResourceGraphDefinition (RGD) from a declarative definition,
|
|
363
|
+
* a resource builder, and a status builder.
|
|
364
|
+
*
|
|
365
|
+
* This is the primary API for defining Kubernetes compositions in TypeKro.
|
|
366
|
+
* The returned object contains the serialized YAML for the RGD and can be
|
|
367
|
+
* deployed via `deploy()` in both Direct and Kro modes.
|
|
368
|
+
*
|
|
369
|
+
* @typeParam TSpec - The arktype schema for the custom resource's spec
|
|
370
|
+
* @typeParam TStatus - The arktype schema for the custom resource's status
|
|
371
|
+
* @typeParam TResources - The shape of resources returned by the resource builder
|
|
372
|
+
*
|
|
373
|
+
* @param definition - The RGD metadata: name, apiVersion, kind, spec schema, status schema
|
|
374
|
+
* @param resourceBuilder - Function receiving a schema proxy, returns Kubernetes resources
|
|
375
|
+
* @param statusBuilder - Function receiving schema proxy + resources, returns status shape
|
|
376
|
+
* @param options - Optional serialization options (e.g., custom CEL prefix)
|
|
377
|
+
* @returns A `TypedResourceGraph` containing the serialized RGD and deploy/toYaml methods
|
|
378
|
+
*
|
|
379
|
+
* @example
|
|
380
|
+
* ```typescript
|
|
381
|
+
* const webapp = toResourceGraph(
|
|
382
|
+
* {
|
|
383
|
+
* name: 'webapp',
|
|
384
|
+
* apiVersion: 'apps.example.com/v1alpha1',
|
|
385
|
+
* kind: 'WebApp',
|
|
386
|
+
* spec: type({ name: 'string', replicas: 'number' }),
|
|
387
|
+
* status: type({ ready: 'boolean', url: 'string' }),
|
|
388
|
+
* },
|
|
389
|
+
* (schema) => ({
|
|
390
|
+
* deploy: Deployment({ name: schema.spec.name, replicas: schema.spec.replicas }),
|
|
391
|
+
* svc: Service({ name: schema.spec.name }),
|
|
392
|
+
* }),
|
|
393
|
+
* (schema, resources) => ({
|
|
394
|
+
* ready: Cel.expr<boolean>(resources.deploy.status.readyReplicas, ' > 0'),
|
|
395
|
+
* url: Cel.template('https://%s', schema.spec.name),
|
|
396
|
+
* }),
|
|
397
|
+
* );
|
|
398
|
+
* ```
|
|
350
399
|
*/
|
|
351
400
|
export function toResourceGraph(definition,
|
|
352
401
|
// The resourceBuilder is now defined as returning that specific shape
|
|
@@ -357,31 +406,24 @@ statusBuilder, options) {
|
|
|
357
406
|
return createTypedResourceGraph(definition, resourceBuilder, statusBuilder, options);
|
|
358
407
|
}
|
|
359
408
|
/**
|
|
360
|
-
* Create a typed resource graph implementation
|
|
409
|
+
* Create a typed resource graph implementation.
|
|
410
|
+
*
|
|
411
|
+
* Orchestrates the full pipeline:
|
|
412
|
+
* 1. Validate definition name
|
|
413
|
+
* 2. Execute resource builder to get Enhanced<> resources and closures
|
|
414
|
+
* 3. Analyze status builder and convert JS expressions to CEL
|
|
415
|
+
* 4. Analyze composition body for control flow (includeWhen/forEach)
|
|
416
|
+
* 5. Validate and optimize CEL expressions
|
|
417
|
+
* 6. Build the TypedResourceGraph result object
|
|
418
|
+
* 7. Wrap with cross-composition magic proxy
|
|
361
419
|
*/
|
|
362
420
|
function createTypedResourceGraph(definition, resourceBuilder, statusBuilder, options) {
|
|
363
421
|
const serializationLogger = getComponentLogger('resource-graph-serialization').child({
|
|
364
422
|
name: definition.name,
|
|
365
423
|
});
|
|
366
|
-
// Validate
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
}
|
|
370
|
-
const trimmedName = definition.name.trim();
|
|
371
|
-
if (trimmedName.length === 0) {
|
|
372
|
-
throw new Error(`Invalid resource graph name: Resource graph name cannot be empty or whitespace-only.`);
|
|
373
|
-
}
|
|
374
|
-
// Validate that the name will convert to a valid Kubernetes resource name
|
|
375
|
-
const kubernetesName = trimmedName.replace(/([a-z])([A-Z])/g, '$1-$2').toLowerCase();
|
|
376
|
-
if (!/^[a-z0-9]([-a-z0-9]*[a-z0-9])?$/.test(kubernetesName)) {
|
|
377
|
-
throw new Error(`Invalid resource graph name: "${definition.name}" converts to "${kubernetesName}" which is not a valid Kubernetes resource name. Names must consist of lowercase alphanumeric characters or '-', and must start and end with an alphanumeric character.`);
|
|
378
|
-
}
|
|
379
|
-
if (kubernetesName.length > 253) {
|
|
380
|
-
throw new Error(`Invalid resource graph name: "${definition.name}" converts to "${kubernetesName}" which exceeds the 253 character limit for Kubernetes resource names.`);
|
|
381
|
-
}
|
|
382
|
-
// Apply default apiVersion if not specified
|
|
383
|
-
// Note: This should be just the version part (e.g., 'v1alpha1'), not the full API version
|
|
384
|
-
// The full API version (kro.run/v1alpha1) is constructed when creating instances
|
|
424
|
+
// 1. Validate name
|
|
425
|
+
validateResourceGraphName(definition.name);
|
|
426
|
+
// 2. Build schema definition and execute resource builder
|
|
385
427
|
const schemaDefinition = {
|
|
386
428
|
apiVersion: definition.apiVersion || 'v1alpha1',
|
|
387
429
|
kind: definition.kind,
|
|
@@ -390,270 +432,17 @@ function createTypedResourceGraph(definition, resourceBuilder, statusBuilder, op
|
|
|
390
432
|
};
|
|
391
433
|
const schema = createSchemaProxy();
|
|
392
434
|
const builderResult = resourceBuilder(schema);
|
|
393
|
-
// Separate Enhanced<> resources from deployment closures
|
|
394
435
|
const { resources: resourcesWithKeys, closures } = separateResourcesAndClosures(builderResult);
|
|
395
|
-
//
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
try {
|
|
401
|
-
// Execute the status builder to get the return object
|
|
402
|
-
globalThis.__TYPEKRO_STATUS_BUILDER_CONTEXT__ = true;
|
|
403
|
-
try {
|
|
404
|
-
statusMappings = statusBuilder(schema, resourcesWithKeys);
|
|
405
|
-
}
|
|
406
|
-
finally {
|
|
407
|
-
delete globalThis.__TYPEKRO_STATUS_BUILDER_CONTEXT__;
|
|
408
|
-
}
|
|
409
|
-
// Check if this is from an imperative composition with original expressions
|
|
410
|
-
const originalCompositionFn = statusMappings.__originalCompositionFn;
|
|
411
|
-
// Debug logging removed for cleaner output
|
|
412
|
-
if (originalCompositionFn) {
|
|
413
|
-
serializationLogger.debug('Detected imperative composition, checking for existing KubernetesRef objects');
|
|
414
|
-
// First, check if the status object already contains KubernetesRef objects or CelExpression objects
|
|
415
|
-
// If so, we can use those directly instead of parsing the JavaScript source code
|
|
416
|
-
let hasKubernetesRefs = containsKubernetesRefs(statusMappings);
|
|
417
|
-
let hasCelExpressions = containsCelExpressions(statusMappings);
|
|
418
|
-
const needsPreAnalysis = statusMappings.__needsPreAnalysis === true;
|
|
419
|
-
serializationLogger.debug('Imperative composition analysis', {
|
|
420
|
-
hasKubernetesRefs,
|
|
421
|
-
hasCelExpressions,
|
|
422
|
-
needsPreAnalysis,
|
|
423
|
-
statusMappings: JSON.stringify(statusMappings, null, 2),
|
|
424
|
-
});
|
|
425
|
-
if (hasKubernetesRefs || hasCelExpressions || needsPreAnalysis) {
|
|
426
|
-
serializationLogger.debug('Status object already contains KubernetesRef objects or CelExpression objects, using direct analysis');
|
|
427
|
-
// Use the status builder analyzer to process the existing KubernetesRef objects
|
|
428
|
-
try {
|
|
429
|
-
const statusBuilderAnalysis = analyzeStatusBuilderForToResourceGraph(statusBuilder, resourcesWithKeys, schema, 'kro');
|
|
430
|
-
if (statusBuilderAnalysis.requiresConversion) {
|
|
431
|
-
analyzedStatusMappings = statusBuilderAnalysis.statusMappings;
|
|
432
|
-
imperativeAnalysisSucceeded = true;
|
|
433
|
-
serializationLogger.debug('Using status builder analysis for imperative composition', {
|
|
434
|
-
fieldCount: Object.keys(analyzedStatusMappings).length,
|
|
435
|
-
});
|
|
436
|
-
}
|
|
437
|
-
else {
|
|
438
|
-
analyzedStatusMappings = statusMappings;
|
|
439
|
-
serializationLogger.debug('No conversion required, using original status mappings');
|
|
440
|
-
}
|
|
441
|
-
}
|
|
442
|
-
catch (statusAnalysisError) {
|
|
443
|
-
serializationLogger.debug('Status builder analysis failed, falling back to imperative analysis', {
|
|
444
|
-
error: statusAnalysisError.message,
|
|
445
|
-
});
|
|
446
|
-
// Fall back to imperative analysis
|
|
447
|
-
hasKubernetesRefs = false;
|
|
448
|
-
hasCelExpressions = false;
|
|
449
|
-
}
|
|
450
|
-
}
|
|
451
|
-
if (!hasKubernetesRefs && !hasCelExpressions) {
|
|
452
|
-
serializationLogger.debug('No KubernetesRef objects or CelExpression objects found, analyzing original composition function');
|
|
453
|
-
// For imperative compositions, we need to analyze the original composition function
|
|
454
|
-
// to detect JavaScript expressions that should be converted to CEL
|
|
455
|
-
try {
|
|
456
|
-
const imperativeAnalysis = analyzeImperativeComposition(originalCompositionFn, resourcesWithKeys, { factoryType: 'kro' });
|
|
457
|
-
serializationLogger.debug('Imperative analysis result', {
|
|
458
|
-
statusFieldCount: Object.keys(imperativeAnalysis.statusMappings).length,
|
|
459
|
-
hasJavaScriptExpressions: imperativeAnalysis.hasJavaScriptExpressions,
|
|
460
|
-
errorCount: imperativeAnalysis.errors.length,
|
|
461
|
-
});
|
|
462
|
-
serializationLogger.debug('Imperative composition analysis complete', {
|
|
463
|
-
statusFieldCount: Object.keys(imperativeAnalysis.statusMappings).length,
|
|
464
|
-
hasJavaScriptExpressions: imperativeAnalysis.hasJavaScriptExpressions,
|
|
465
|
-
});
|
|
466
|
-
if (imperativeAnalysis.hasJavaScriptExpressions) {
|
|
467
|
-
analyzedStatusMappings = imperativeAnalysis.statusMappings;
|
|
468
|
-
imperativeAnalysisSucceeded = true;
|
|
469
|
-
serializationLogger.debug('Using analyzed imperative composition mappings with CEL expressions', {
|
|
470
|
-
fieldCount: Object.keys(analyzedStatusMappings).length,
|
|
471
|
-
});
|
|
472
|
-
}
|
|
473
|
-
else {
|
|
474
|
-
analyzedStatusMappings = statusMappings;
|
|
475
|
-
serializationLogger.debug('No JavaScript expressions found, using original status mappings');
|
|
476
|
-
}
|
|
477
|
-
}
|
|
478
|
-
catch (imperativeAnalysisError) {
|
|
479
|
-
serializationLogger.debug('Imperative composition analysis failed, using executed status mappings', {
|
|
480
|
-
error: imperativeAnalysisError.message,
|
|
481
|
-
});
|
|
482
|
-
analyzedStatusMappings = statusMappings;
|
|
483
|
-
}
|
|
484
|
-
}
|
|
485
|
-
}
|
|
486
|
-
else {
|
|
487
|
-
// Regular status builder - try to analyze it directly
|
|
488
|
-
try {
|
|
489
|
-
const statusBuilderAnalysis = analyzeStatusBuilderForToResourceGraph(statusBuilder, resourcesWithKeys, schema, 'kro');
|
|
490
|
-
serializationLogger.debug('Status builder analysis complete', {
|
|
491
|
-
statusFieldCount: Object.keys(statusBuilderAnalysis.statusMappings).length,
|
|
492
|
-
dependencyCount: statusBuilderAnalysis.dependencies.length,
|
|
493
|
-
hasJavaScriptExpressions: statusBuilderAnalysis.dependencies.length > 0,
|
|
494
|
-
});
|
|
495
|
-
if (statusBuilderAnalysis.dependencies.length > 0) {
|
|
496
|
-
analyzedStatusMappings = statusBuilderAnalysis.statusMappings;
|
|
497
|
-
serializationLogger.debug('Using analyzed status mappings with CEL expressions', {
|
|
498
|
-
fieldCount: Object.keys(analyzedStatusMappings).length,
|
|
499
|
-
});
|
|
500
|
-
}
|
|
501
|
-
else {
|
|
502
|
-
analyzedStatusMappings = statusMappings;
|
|
503
|
-
}
|
|
504
|
-
}
|
|
505
|
-
catch (analysisError) {
|
|
506
|
-
serializationLogger.debug('Status builder analysis failed, using executed status mappings', {
|
|
507
|
-
error: analysisError.message,
|
|
508
|
-
});
|
|
509
|
-
analyzedStatusMappings = statusMappings;
|
|
510
|
-
}
|
|
511
|
-
}
|
|
512
|
-
// COMPREHENSIVE ANALYSIS: Analyze the final status mappings
|
|
513
|
-
mappingAnalysis = analyzeStatusMappingTypes(analyzedStatusMappings);
|
|
514
|
-
serializationLogger.debug('Final mapping analysis result', {
|
|
515
|
-
kubernetesRefFields: mappingAnalysis.kubernetesRefFields.length,
|
|
516
|
-
celExpressionFields: mappingAnalysis.celExpressionFields.length,
|
|
517
|
-
staticValueFields: mappingAnalysis.staticValueFields.length,
|
|
518
|
-
complexExpressionFields: mappingAnalysis.complexExpressionFields.length,
|
|
519
|
-
});
|
|
520
|
-
serializationLogger.debug('Status mapping analysis complete', {
|
|
521
|
-
kubernetesRefFields: mappingAnalysis.kubernetesRefFields.length,
|
|
522
|
-
celExpressionFields: mappingAnalysis.celExpressionFields.length,
|
|
523
|
-
staticValueFields: mappingAnalysis.staticValueFields.length,
|
|
524
|
-
complexExpressionFields: mappingAnalysis.complexExpressionFields.length,
|
|
525
|
-
});
|
|
526
|
-
// BACKWARD COMPATIBILITY: Detect and preserve existing CEL expressions
|
|
527
|
-
const { hasExistingCel, preservedMappings } = detectAndPreserveCelExpressions(statusMappings);
|
|
528
|
-
if (hasExistingCel) {
|
|
529
|
-
serializationLogger.debug('Found existing CEL expressions, preserving for backward compatibility', {
|
|
530
|
-
preservedCount: Object.keys(preservedMappings).length,
|
|
531
|
-
});
|
|
532
|
-
// MIGRATION HELPER: Provide migration suggestions for existing CEL expressions
|
|
533
|
-
try {
|
|
534
|
-
const migrationHelper = new CelToJavaScriptMigrationHelper();
|
|
535
|
-
const migrationAnalysis = migrationHelper.analyzeMigrationOpportunities(statusMappings);
|
|
536
|
-
if (migrationAnalysis.migrationFeasibility.migratableExpressions > 0) {
|
|
537
|
-
serializationLogger.info('Migration opportunities detected for CEL expressions', {
|
|
538
|
-
totalExpressions: migrationAnalysis.migrationFeasibility.totalExpressions,
|
|
539
|
-
migratableExpressions: migrationAnalysis.migrationFeasibility.migratableExpressions,
|
|
540
|
-
overallConfidence: Math.round(migrationAnalysis.migrationFeasibility.overallConfidence * 100),
|
|
541
|
-
});
|
|
542
|
-
// Log migration suggestions for high-confidence migrations
|
|
543
|
-
const highConfidenceSuggestions = migrationAnalysis.suggestions.filter((s) => s.confidence >= 0.8 && s.isSafe);
|
|
544
|
-
if (highConfidenceSuggestions.length > 0) {
|
|
545
|
-
serializationLogger.info('High-confidence migration suggestions available', {
|
|
546
|
-
suggestions: highConfidenceSuggestions.map((s) => ({
|
|
547
|
-
original: s.originalCel,
|
|
548
|
-
suggested: s.suggestedJavaScript,
|
|
549
|
-
confidence: Math.round(s.confidence * 100),
|
|
550
|
-
})),
|
|
551
|
-
});
|
|
552
|
-
}
|
|
553
|
-
}
|
|
554
|
-
}
|
|
555
|
-
catch (migrationError) {
|
|
556
|
-
serializationLogger.warn('Failed to analyze migration opportunities', migrationError);
|
|
557
|
-
}
|
|
558
|
-
}
|
|
559
|
-
// The issue is that JavaScript expressions are evaluated before we can analyze them
|
|
560
|
-
// We need to re-execute the status builder with a special proxy that intercepts expressions
|
|
561
|
-
// and converts them to CEL expressions before evaluation
|
|
562
|
-
// For now, let's use a simpler approach: detect KubernetesRef objects in the raw status mappings
|
|
563
|
-
// and convert them directly to CEL expressions
|
|
564
|
-
const celConversionEngine = new CelConversionEngine();
|
|
565
|
-
// Convert the status mappings to CEL expressions for Kro factories
|
|
566
|
-
const convertedStatusMappings = {};
|
|
567
|
-
let hasConversions = false;
|
|
568
|
-
for (const [fieldName, fieldValue] of Object.entries(statusMappings)) {
|
|
569
|
-
// Check if this field contains KubernetesRef objects
|
|
570
|
-
if (containsKubernetesRefs(fieldValue)) {
|
|
571
|
-
// Convert to CEL expression
|
|
572
|
-
const conversionResult = celConversionEngine.convertValue(fieldValue, { factoryType: 'kro', factoryName: definition.name, analysisEnabled: true }, { factoryType: 'kro', preserveStatic: false });
|
|
573
|
-
if (conversionResult.wasConverted) {
|
|
574
|
-
convertedStatusMappings[fieldName] = conversionResult.converted;
|
|
575
|
-
hasConversions = true;
|
|
576
|
-
serializationLogger.debug('Converted field to CEL expression', {
|
|
577
|
-
fieldName,
|
|
578
|
-
strategy: conversionResult.strategy,
|
|
579
|
-
referencesConverted: conversionResult.metrics.referencesConverted,
|
|
580
|
-
});
|
|
581
|
-
}
|
|
582
|
-
else {
|
|
583
|
-
convertedStatusMappings[fieldName] = fieldValue;
|
|
584
|
-
}
|
|
585
|
-
}
|
|
586
|
-
else {
|
|
587
|
-
// Keep static values as-is
|
|
588
|
-
convertedStatusMappings[fieldName] = fieldValue;
|
|
589
|
-
}
|
|
590
|
-
}
|
|
591
|
-
if (hasConversions) {
|
|
592
|
-
// Only overwrite if imperative analysis hasn't already provided CEL expressions
|
|
593
|
-
if (!imperativeAnalysisSucceeded) {
|
|
594
|
-
// Merge converted CEL expressions with preserved ones (preserved take precedence)
|
|
595
|
-
analyzedStatusMappings = mergePreservedCelExpressions(convertedStatusMappings, preservedMappings);
|
|
596
|
-
}
|
|
597
|
-
serializationLogger.debug('Successfully converted JavaScript expressions to CEL', {
|
|
598
|
-
convertedFields: Object.keys(convertedStatusMappings).filter((key) => convertedStatusMappings[key] !== statusMappings[key]).length,
|
|
599
|
-
preservedFields: Object.keys(preservedMappings).length,
|
|
600
|
-
staticFields: mappingAnalysis.staticValueFields.length,
|
|
601
|
-
});
|
|
602
|
-
}
|
|
603
|
-
else {
|
|
604
|
-
// No KubernetesRef objects found, but may have existing CEL expressions or static values
|
|
605
|
-
if (hasExistingCel) {
|
|
606
|
-
// Only overwrite if imperative analysis hasn't already provided CEL expressions
|
|
607
|
-
if (!imperativeAnalysisSucceeded) {
|
|
608
|
-
// Merge original mappings with preserved CEL expressions
|
|
609
|
-
analyzedStatusMappings = mergePreservedCelExpressions(statusMappings, preservedMappings);
|
|
610
|
-
}
|
|
611
|
-
serializationLogger.debug('Preserved existing CEL expressions without conversion', {
|
|
612
|
-
preservedFields: Object.keys(preservedMappings).length,
|
|
613
|
-
staticFields: mappingAnalysis.staticValueFields.length,
|
|
614
|
-
complexFields: mappingAnalysis.complexExpressionFields.length,
|
|
615
|
-
});
|
|
616
|
-
}
|
|
617
|
-
else {
|
|
618
|
-
// No KubernetesRef objects or CEL expressions, use status mappings as-is
|
|
619
|
-
if (!imperativeAnalysisSucceeded) {
|
|
620
|
-
analyzedStatusMappings = statusMappings;
|
|
621
|
-
}
|
|
622
|
-
serializationLogger.debug('Status builder contains only static values and complex expressions', {
|
|
623
|
-
staticFields: mappingAnalysis.staticValueFields.length,
|
|
624
|
-
complexFields: mappingAnalysis.complexExpressionFields.length,
|
|
625
|
-
totalFields: Object.keys(mappingAnalysis.analysisDetails).length,
|
|
626
|
-
});
|
|
627
|
-
}
|
|
628
|
-
}
|
|
629
|
-
}
|
|
630
|
-
catch (error) {
|
|
631
|
-
serializationLogger.error('Failed to analyze status builder', error);
|
|
632
|
-
// Fallback to executing status builder normally
|
|
633
|
-
globalThis.__TYPEKRO_STATUS_BUILDER_CONTEXT__ = true;
|
|
634
|
-
try {
|
|
635
|
-
statusMappings = statusBuilder(schema, resourcesWithKeys);
|
|
636
|
-
}
|
|
637
|
-
finally {
|
|
638
|
-
delete globalThis.__TYPEKRO_STATUS_BUILDER_CONTEXT__;
|
|
639
|
-
}
|
|
640
|
-
analyzedStatusMappings = statusMappings;
|
|
641
|
-
// Create empty analysis for fallback
|
|
642
|
-
mappingAnalysis = {
|
|
643
|
-
kubernetesRefFields: [],
|
|
644
|
-
celExpressionFields: [],
|
|
645
|
-
staticValueFields: [],
|
|
646
|
-
complexExpressionFields: [],
|
|
647
|
-
analysisDetails: {},
|
|
648
|
-
};
|
|
649
|
-
}
|
|
650
|
-
// Validate resource IDs and CEL expressions
|
|
436
|
+
// 3. Analyze status builder and convert JS expressions to CEL
|
|
437
|
+
const { statusMappings, analyzedStatusMappings, mappingAnalysis } = analyzeAndConvertStatusMappings(definition, statusBuilder, schema, resourcesWithKeys, serializationLogger);
|
|
438
|
+
// 4. Analyze composition body for control flow patterns (must run before validation)
|
|
439
|
+
const { compositionAnalysis, analysisState } = processCompositionBodyAnalysis(statusMappings, resourcesWithKeys, analyzedStatusMappings, serializationLogger);
|
|
440
|
+
// 5. Validate resource IDs and CEL expressions
|
|
651
441
|
const validation = validateResourceGraphDefinition(resourcesWithKeys, analyzedStatusMappings);
|
|
652
442
|
if (!validation.isValid) {
|
|
653
443
|
const errorMessages = validation.errors.map((err) => `${err.field}: ${err.error}`).join('\n');
|
|
654
|
-
throw new
|
|
444
|
+
throw new ValidationError(`ResourceGraphDefinition validation failed:\n${errorMessages}`, 'ResourceGraphDefinition', definition.name, undefined, ['Fix the validation errors listed above']);
|
|
655
445
|
}
|
|
656
|
-
// Log warnings if any
|
|
657
446
|
if (validation.warnings.length > 0) {
|
|
658
447
|
serializationLogger.warn('ResourceGraphDefinition validation warnings', {
|
|
659
448
|
warnings: validation.warnings.map((w) => ({
|
|
@@ -666,100 +455,24 @@ function createTypedResourceGraph(definition, resourceBuilder, statusBuilder, op
|
|
|
666
455
|
// Evaluate and optimize CEL expressions
|
|
667
456
|
const evaluationContext = { resources: resourcesWithKeys, schema };
|
|
668
457
|
const { mappings: optimizedStatusMappings, optimizations } = optimizeStatusMappings(analyzedStatusMappings, evaluationContext);
|
|
669
|
-
// Log optimizations if any
|
|
670
458
|
if (optimizations.length > 0) {
|
|
671
459
|
serializationLogger.info('CEL expression optimizations applied', { optimizations });
|
|
672
460
|
}
|
|
673
|
-
//
|
|
674
|
-
|
|
675
|
-
|
|
676
|
-
|
|
677
|
-
|
|
678
|
-
|
|
679
|
-
|
|
680
|
-
return undefined;
|
|
681
|
-
// Strategy 1: Direct match by generated resource ID
|
|
682
|
-
if (resourcesWithKeys[key]) {
|
|
683
|
-
return resourcesWithKeys[key];
|
|
684
|
-
}
|
|
685
|
-
// Strategy 2: Smart pattern matching for common cases
|
|
686
|
-
const keyLower = key.toLowerCase();
|
|
687
|
-
const keyParts = key.split(/[-_]/).map((p) => p.toLowerCase()); // Split on hyphens and underscores
|
|
688
|
-
for (const [resourceId, resource] of Object.entries(resourcesWithKeys)) {
|
|
689
|
-
const kind = resource.kind.toLowerCase();
|
|
690
|
-
// Handle case where metadata.name might be a KubernetesRef object
|
|
691
|
-
let name = '';
|
|
692
|
-
if (resource.metadata.name && typeof resource.metadata.name === 'string') {
|
|
693
|
-
name = resource.metadata.name.toLowerCase();
|
|
694
|
-
}
|
|
695
|
-
else if (resource.metadata.name && typeof resource.metadata.name === 'object') {
|
|
696
|
-
// Skip resources with unresolved references for now
|
|
697
|
-
continue;
|
|
698
|
-
}
|
|
699
|
-
const resourceIdLower = resourceId.toLowerCase();
|
|
700
|
-
// Pattern 1: Key parts match resource name parts
|
|
701
|
-
// e.g., 'my-deployment' matches 'test-deployment' if 'deployment' appears in both
|
|
702
|
-
const nameParts = name.split(/[-_]/).map((p) => p.toLowerCase());
|
|
703
|
-
const hasCommonParts = keyParts.some((keyPart) => nameParts.some((namePart) => keyPart.includes(namePart) || namePart.includes(keyPart)));
|
|
704
|
-
if (hasCommonParts) {
|
|
705
|
-
// Also check if the kinds match logically
|
|
706
|
-
if (keyParts.includes(kind) ||
|
|
707
|
-
(keyParts.includes('deployment') && kind === 'deployment') ||
|
|
708
|
-
(keyParts.includes('service') && kind === 'service')) {
|
|
709
|
-
return resource;
|
|
710
|
-
}
|
|
711
|
-
}
|
|
712
|
-
// Pattern 2: Key contains kind and resource ID contains resource name parts
|
|
713
|
-
if (keyParts.includes(kind)) {
|
|
714
|
-
const nameInResourceId = nameParts.some((part) => resourceIdLower.includes(part));
|
|
715
|
-
if (nameInResourceId) {
|
|
716
|
-
return resource;
|
|
717
|
-
}
|
|
718
|
-
}
|
|
719
|
-
// Pattern 3: Common semantic patterns
|
|
720
|
-
const semanticPatterns = {
|
|
721
|
-
database: ['deployment', 'statefulset'],
|
|
722
|
-
db: ['deployment', 'statefulset'],
|
|
723
|
-
cache: ['deployment', 'statefulset'],
|
|
724
|
-
redis: ['deployment', 'statefulset'],
|
|
725
|
-
service: ['service'],
|
|
726
|
-
svc: ['service'],
|
|
727
|
-
ingress: ['ingress'],
|
|
728
|
-
configmap: ['configmap'],
|
|
729
|
-
secret: ['secret'],
|
|
730
|
-
};
|
|
731
|
-
for (const [pattern, kinds] of Object.entries(semanticPatterns)) {
|
|
732
|
-
if (keyParts.includes(pattern) && kinds.includes(kind)) {
|
|
733
|
-
return resource;
|
|
734
|
-
}
|
|
735
|
-
}
|
|
736
|
-
}
|
|
737
|
-
// Strategy 3: Case-insensitive match on generated resource ID
|
|
738
|
-
for (const [resourceKey, resource] of Object.entries(resourcesWithKeys)) {
|
|
739
|
-
if (resourceKey.toLowerCase() === keyLower) {
|
|
740
|
-
return resource;
|
|
741
|
-
}
|
|
742
|
-
}
|
|
743
|
-
// Strategy 4: Partial matching - find resources that contain key parts in their ID
|
|
744
|
-
for (const [resourceKey, resource] of Object.entries(resourcesWithKeys)) {
|
|
745
|
-
const resourceKeyLower = resourceKey.toLowerCase();
|
|
746
|
-
if (keyParts.some((part) => part.length > 2 && resourceKeyLower.includes(part))) {
|
|
747
|
-
return resource;
|
|
748
|
-
}
|
|
749
|
-
}
|
|
750
|
-
return undefined;
|
|
751
|
-
}
|
|
752
|
-
// Create the base TypedResourceGraph object
|
|
753
|
-
// Deduplicate resources by reference (same resource may have multiple keys)
|
|
754
|
-
// This happens when resources are returned in status with variable names that differ from IDs
|
|
461
|
+
// 6. Build the composition re-execution function for direct factory
|
|
462
|
+
const declarativeCompositionFn = (spec) => {
|
|
463
|
+
const actualSchema = { spec, status: {} };
|
|
464
|
+
const resources = resourceBuilder(actualSchema);
|
|
465
|
+
return statusBuilder(actualSchema, resources);
|
|
466
|
+
};
|
|
467
|
+
// 7. Assemble the TypedResourceGraph result object
|
|
755
468
|
const uniqueResourcesSet = new Set(Object.values(resourcesWithKeys));
|
|
756
469
|
const baseResourceGraph = {
|
|
757
470
|
name: definition.name,
|
|
758
471
|
resources: Array.from(uniqueResourcesSet),
|
|
759
472
|
schema,
|
|
760
|
-
// Store closures for access during factory creation
|
|
761
473
|
closures,
|
|
762
|
-
|
|
474
|
+
_compositionFn: declarativeCompositionFn,
|
|
475
|
+
_definition: definition,
|
|
763
476
|
_analysisResults: {
|
|
764
477
|
mappingAnalysis,
|
|
765
478
|
hasKubernetesRefs: mappingAnalysis.kubernetesRefFields.length > 0,
|
|
@@ -768,96 +481,60 @@ function createTypedResourceGraph(definition, resourceBuilder, statusBuilder, op
|
|
|
768
481
|
},
|
|
769
482
|
factory(mode, factoryOptions) {
|
|
770
483
|
if (mode === 'direct') {
|
|
771
|
-
|
|
772
|
-
|
|
773
|
-
if (this._analysisResults.hasKubernetesRefs) {
|
|
774
|
-
try {
|
|
775
|
-
serializationLogger.debug('Re-analyzing status mappings for direct factory pattern');
|
|
776
|
-
const directStatusAnalyzer = new StatusBuilderAnalyzer(undefined, {
|
|
777
|
-
factoryType: 'direct',
|
|
778
|
-
performOptionalityAnalysis: true,
|
|
779
|
-
includeSourceMapping: true,
|
|
780
|
-
});
|
|
781
|
-
const directAnalysisResult = directStatusAnalyzer.analyzeReturnObjectWithMagicProxy(this._analysisResults.statusMappings, resourcesWithKeys, schema);
|
|
782
|
-
if (directAnalysisResult.errors.length === 0) {
|
|
783
|
-
// Merge with preserved CEL expressions
|
|
784
|
-
const { preservedMappings: directPreservedMappings } = detectAndPreserveCelExpressions(this._analysisResults.statusMappings);
|
|
785
|
-
directStatusMappings = mergePreservedCelExpressions(directAnalysisResult.statusMappings, directPreservedMappings);
|
|
786
|
-
serializationLogger.debug('Successfully re-analyzed status mappings for direct factory');
|
|
787
|
-
}
|
|
788
|
-
}
|
|
789
|
-
catch (error) {
|
|
790
|
-
serializationLogger.warn('Failed to re-analyze status mappings for direct factory, using default analysis', error);
|
|
791
|
-
}
|
|
792
|
-
}
|
|
793
|
-
const directFactory = createDirectResourceFactory(definition.name, resourcesWithKeys, schemaDefinition, statusBuilder, {
|
|
484
|
+
const directStatusMappings = reanalyzeStatusForDirectFactory(this._analysisResults, analyzedStatusMappings, resourcesWithKeys, schema, serializationLogger);
|
|
485
|
+
return createDirectResourceFactory(definition.name, resourcesWithKeys, schemaDefinition, statusBuilder, {
|
|
794
486
|
...factoryOptions,
|
|
795
487
|
closures,
|
|
796
|
-
// Pass the factory-specific status mappings
|
|
797
488
|
statusMappings: directStatusMappings,
|
|
798
|
-
|
|
799
|
-
|
|
800
|
-
compositionDefinition: this._definition,
|
|
801
|
-
compositionOptions: this._options,
|
|
489
|
+
compositionFn: declarativeCompositionFn,
|
|
490
|
+
compositionDefinition: definition,
|
|
802
491
|
});
|
|
803
|
-
return directFactory;
|
|
804
492
|
}
|
|
805
493
|
else if (mode === 'kro') {
|
|
806
|
-
|
|
807
|
-
const kroFactory = createKroResourceFactory(definition.name, resourcesWithKeys, schemaDefinition, analyzedStatusMappings, {
|
|
494
|
+
return createKroResourceFactory(definition.name, resourcesWithKeys, schemaDefinition, analyzedStatusMappings, {
|
|
808
495
|
...factoryOptions,
|
|
809
496
|
closures,
|
|
810
|
-
// Indicate this is for Kro factory pattern
|
|
811
497
|
factoryType: 'kro',
|
|
812
498
|
});
|
|
813
|
-
return kroFactory;
|
|
814
499
|
}
|
|
815
500
|
else {
|
|
816
|
-
throw new
|
|
501
|
+
throw new ValidationError(`Unsupported factory mode: ${mode}`, 'ResourceGraphDefinition', definition.name, 'mode', ['Use "kro" or "direct" as the factory mode']);
|
|
817
502
|
}
|
|
818
503
|
},
|
|
819
504
|
toYaml() {
|
|
820
|
-
//
|
|
821
|
-
|
|
822
|
-
|
|
823
|
-
|
|
824
|
-
|
|
825
|
-
|
|
826
|
-
|
|
827
|
-
|
|
828
|
-
|
|
829
|
-
|
|
830
|
-
|
|
831
|
-
|
|
832
|
-
// For unknown properties, check if it's a resource key and create external ref
|
|
833
|
-
const matchingResource = findResourceByKey(prop);
|
|
834
|
-
if (matchingResource?.metadata.name) {
|
|
835
|
-
return externalRef(matchingResource.apiVersion, matchingResource.kind, matchingResource.metadata.name, matchingResource.metadata.namespace);
|
|
505
|
+
// Apply composition body analysis results (guard: only once)
|
|
506
|
+
if (compositionAnalysis && !analysisState.appliedToResources) {
|
|
507
|
+
analysisState.appliedToResources = true;
|
|
508
|
+
if (compositionAnalysis.resources.size > 0 ||
|
|
509
|
+
compositionAnalysis.templateOverrides.size > 0) {
|
|
510
|
+
applyAnalysisToResources(resourcesWithKeys, compositionAnalysis);
|
|
511
|
+
serializationLogger.debug('Applied composition body analysis', {
|
|
512
|
+
analyzedResources: compositionAnalysis.resources.size,
|
|
513
|
+
templateOverrides: compositionAnalysis.templateOverrides.size,
|
|
514
|
+
errors: compositionAnalysis.errors.length,
|
|
515
|
+
});
|
|
516
|
+
}
|
|
836
517
|
}
|
|
837
|
-
|
|
838
|
-
|
|
839
|
-
|
|
840
|
-
// Ensure proper enumeration of properties
|
|
841
|
-
ownKeys(target) {
|
|
842
|
-
return Reflect.ownKeys(target);
|
|
843
|
-
},
|
|
844
|
-
// Ensure proper property descriptor handling
|
|
845
|
-
getOwnPropertyDescriptor(target, prop) {
|
|
846
|
-
// For existing properties, return normal descriptor
|
|
847
|
-
if (prop in target) {
|
|
848
|
-
return Reflect.getOwnPropertyDescriptor(target, prop);
|
|
518
|
+
const kroSchema = generateKroSchemaFromArktype(definition.name, schemaDefinition, resourcesWithKeys, optimizedStatusMappings);
|
|
519
|
+
if (definition.group) {
|
|
520
|
+
kroSchema.group = definition.group;
|
|
849
521
|
}
|
|
850
|
-
//
|
|
851
|
-
|
|
852
|
-
|
|
853
|
-
|
|
854
|
-
|
|
855
|
-
|
|
856
|
-
|
|
857
|
-
|
|
522
|
+
// Inject status overrides into schema status section.
|
|
523
|
+
// Convert "..." to '...' in CEL string literals for YAML compatibility.
|
|
524
|
+
const statusOverrides = compositionAnalysis?.statusOverrides ?? [];
|
|
525
|
+
if (statusOverrides.length > 0) {
|
|
526
|
+
if (!kroSchema.status) {
|
|
527
|
+
kroSchema.status = {};
|
|
528
|
+
}
|
|
529
|
+
for (const override of statusOverrides) {
|
|
530
|
+
const yamlSafe = override.celExpression.replace(/"([^"\\]*)"/g, "'$1'");
|
|
531
|
+
kroSchema.status[override.propertyPath] = yamlSafe;
|
|
532
|
+
}
|
|
858
533
|
}
|
|
859
|
-
return
|
|
534
|
+
return serializeResourceGraphToYaml(definition.name, resourcesWithKeys, options, kroSchema);
|
|
860
535
|
},
|
|
861
|
-
}
|
|
536
|
+
};
|
|
537
|
+
// 8. Wrap with cross-composition magic proxy
|
|
538
|
+
return wrapWithResourceGraphProxy(baseResourceGraph, resourcesWithKeys, serializationLogger);
|
|
862
539
|
}
|
|
863
540
|
//# sourceMappingURL=core.js.map
|