typekro 0.8.0 → 0.9.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/alchemy/deployers.d.ts +16 -1
- package/dist/alchemy/deployers.d.ts.map +1 -1
- package/dist/alchemy/deployers.js +131 -18
- package/dist/alchemy/deployers.js.map +1 -1
- package/dist/alchemy/deployment.d.ts +1 -1
- package/dist/alchemy/deployment.d.ts.map +1 -1
- package/dist/alchemy/deployment.js +1 -1
- package/dist/alchemy/deployment.js.map +1 -1
- package/dist/alchemy/kro-delete.d.ts +66 -0
- package/dist/alchemy/kro-delete.d.ts.map +1 -0
- package/dist/alchemy/kro-delete.js +183 -0
- package/dist/alchemy/kro-delete.js.map +1 -0
- package/dist/alchemy/resource-registration.d.ts +16 -0
- package/dist/alchemy/resource-registration.d.ts.map +1 -1
- package/dist/alchemy/resource-registration.js +138 -24
- package/dist/alchemy/resource-registration.js.map +1 -1
- package/dist/alchemy/types.d.ts +8 -4
- package/dist/alchemy/types.d.ts.map +1 -1
- package/dist/compositions/typekro-runtime/typekro-runtime.d.ts +1 -1
- package/dist/compositions/typekro-runtime/typekro-runtime.d.ts.map +1 -1
- package/dist/compositions/typekro-runtime/typekro-runtime.js +27 -9
- package/dist/compositions/typekro-runtime/typekro-runtime.js.map +1 -1
- package/dist/core/composition/context.d.ts +58 -2
- package/dist/core/composition/context.d.ts.map +1 -1
- package/dist/core/composition/context.js +4 -0
- package/dist/core/composition/context.js.map +1 -1
- package/dist/core/composition/imperative.d.ts +9 -0
- package/dist/core/composition/imperative.d.ts.map +1 -1
- package/dist/core/composition/imperative.js +538 -54
- package/dist/core/composition/imperative.js.map +1 -1
- package/dist/core/composition/nested-status-cel.d.ts +34 -1
- package/dist/core/composition/nested-status-cel.d.ts.map +1 -1
- package/dist/core/composition/nested-status-cel.js +379 -41
- package/dist/core/composition/nested-status-cel.js.map +1 -1
- package/dist/core/composition-debugger.d.ts +1 -1
- package/dist/core/composition-debugger.d.ts.map +1 -1
- package/dist/core/composition-debugger.js.map +1 -1
- package/dist/core/constants/brands.d.ts +1 -1
- package/dist/core/constants/brands.d.ts.map +1 -1
- package/dist/core/constants/brands.js +1 -1
- package/dist/core/constants/brands.js.map +1 -1
- package/dist/core/containers/build.d.ts.map +1 -1
- package/dist/core/containers/build.js +40 -12
- package/dist/core/containers/build.js.map +1 -1
- package/dist/core/dependencies/resolver.d.ts +19 -0
- package/dist/core/dependencies/resolver.d.ts.map +1 -1
- package/dist/core/dependencies/resolver.js +261 -1
- package/dist/core/dependencies/resolver.js.map +1 -1
- package/dist/core/deployment/client-provider-manager.d.ts +9 -3
- package/dist/core/deployment/client-provider-manager.d.ts.map +1 -1
- package/dist/core/deployment/client-provider-manager.js +12 -0
- package/dist/core/deployment/client-provider-manager.js.map +1 -1
- package/dist/core/deployment/crd-manager.d.ts +24 -0
- package/dist/core/deployment/crd-manager.d.ts.map +1 -1
- package/dist/core/deployment/crd-manager.js +79 -1
- package/dist/core/deployment/crd-manager.js.map +1 -1
- package/dist/core/deployment/deployment-state-discovery.d.ts +116 -0
- package/dist/core/deployment/deployment-state-discovery.d.ts.map +1 -0
- package/dist/core/deployment/deployment-state-discovery.js +400 -0
- package/dist/core/deployment/deployment-state-discovery.js.map +1 -0
- package/dist/core/deployment/direct-factory.d.ts +65 -6
- package/dist/core/deployment/direct-factory.d.ts.map +1 -1
- package/dist/core/deployment/direct-factory.js +551 -56
- package/dist/core/deployment/direct-factory.js.map +1 -1
- package/dist/core/deployment/engine.d.ts +64 -3
- package/dist/core/deployment/engine.d.ts.map +1 -1
- package/dist/core/deployment/engine.js +194 -27
- package/dist/core/deployment/engine.js.map +1 -1
- package/dist/core/deployment/event-filter.js +1 -1
- package/dist/core/deployment/event-filter.js.map +1 -1
- package/dist/core/deployment/event-monitor.d.ts +11 -0
- package/dist/core/deployment/event-monitor.d.ts.map +1 -1
- package/dist/core/deployment/event-monitor.js +14 -0
- package/dist/core/deployment/event-monitor.js.map +1 -1
- package/dist/core/deployment/handle-tracing.d.ts +14 -0
- package/dist/core/deployment/handle-tracing.d.ts.map +1 -0
- package/dist/core/deployment/handle-tracing.js +38 -0
- package/dist/core/deployment/handle-tracing.js.map +1 -0
- package/dist/core/deployment/kro-factory.d.ts +115 -3
- package/dist/core/deployment/kro-factory.d.ts.map +1 -1
- package/dist/core/deployment/kro-factory.js +906 -265
- package/dist/core/deployment/kro-factory.js.map +1 -1
- package/dist/core/deployment/kro-readiness.d.ts.map +1 -1
- package/dist/core/deployment/kro-readiness.js +21 -12
- package/dist/core/deployment/kro-readiness.js.map +1 -1
- package/dist/core/deployment/nested-composition-status.d.ts +1 -1
- package/dist/core/deployment/nested-composition-status.d.ts.map +1 -1
- package/dist/core/deployment/nested-composition-status.js +96 -53
- package/dist/core/deployment/nested-composition-status.js.map +1 -1
- package/dist/core/deployment/resource-applier.d.ts +15 -2
- package/dist/core/deployment/resource-applier.d.ts.map +1 -1
- package/dist/core/deployment/resource-applier.js +75 -25
- package/dist/core/deployment/resource-applier.js.map +1 -1
- package/dist/core/deployment/resource-tagging.d.ts +220 -0
- package/dist/core/deployment/resource-tagging.d.ts.map +1 -0
- package/dist/core/deployment/resource-tagging.js +292 -0
- package/dist/core/deployment/resource-tagging.js.map +1 -0
- package/dist/core/deployment/rollback-manager.d.ts +25 -4
- package/dist/core/deployment/rollback-manager.d.ts.map +1 -1
- package/dist/core/deployment/rollback-manager.js +70 -57
- package/dist/core/deployment/rollback-manager.js.map +1 -1
- package/dist/core/deployment/shared-utilities.d.ts +6 -0
- package/dist/core/deployment/shared-utilities.d.ts.map +1 -1
- package/dist/core/deployment/shared-utilities.js +32 -2
- package/dist/core/deployment/shared-utilities.js.map +1 -1
- package/dist/core/deployment/singleton-owner-drift.d.ts +16 -0
- package/dist/core/deployment/singleton-owner-drift.d.ts.map +1 -0
- package/dist/core/deployment/singleton-owner-drift.js +54 -0
- package/dist/core/deployment/singleton-owner-drift.js.map +1 -0
- package/dist/core/deployment/strategies/alchemy-strategy.d.ts +3 -1
- package/dist/core/deployment/strategies/alchemy-strategy.d.ts.map +1 -1
- package/dist/core/deployment/strategies/alchemy-strategy.js +121 -18
- package/dist/core/deployment/strategies/alchemy-strategy.js.map +1 -1
- package/dist/core/deployment/strategies/base-strategy.d.ts +9 -3
- package/dist/core/deployment/strategies/base-strategy.d.ts.map +1 -1
- package/dist/core/deployment/strategies/base-strategy.js +32 -4
- package/dist/core/deployment/strategies/base-strategy.js.map +1 -1
- package/dist/core/deployment/strategies/direct-strategy.d.ts +12 -4
- package/dist/core/deployment/strategies/direct-strategy.d.ts.map +1 -1
- package/dist/core/deployment/strategies/direct-strategy.js +112 -8
- package/dist/core/deployment/strategies/direct-strategy.js.map +1 -1
- package/dist/core/errors.d.ts +2 -2
- package/dist/core/errors.d.ts.map +1 -1
- package/dist/core/errors.js.map +1 -1
- package/dist/core/expressions/analysis/cache.d.ts +2 -2
- package/dist/core/expressions/analysis/cache.d.ts.map +1 -1
- package/dist/core/expressions/analysis/cache.js +4 -0
- package/dist/core/expressions/analysis/cache.js.map +1 -1
- package/dist/core/expressions/analysis/fn-toString-self-test.d.ts.map +1 -1
- package/dist/core/expressions/analysis/fn-toString-self-test.js +0 -1
- package/dist/core/expressions/analysis/fn-toString-self-test.js.map +1 -1
- package/dist/core/expressions/analysis/shared-types.d.ts +2 -2
- package/dist/core/expressions/analysis/shared-types.d.ts.map +1 -1
- package/dist/core/expressions/analysis/source-map.d.ts.map +1 -1
- package/dist/core/expressions/analysis/source-map.js +1 -0
- package/dist/core/expressions/analysis/source-map.js.map +1 -1
- package/dist/core/expressions/analysis/types.d.ts +7 -7
- package/dist/core/expressions/analysis/types.d.ts.map +1 -1
- package/dist/core/expressions/composition/composition-analyzer-helpers.d.ts +29 -1
- package/dist/core/expressions/composition/composition-analyzer-helpers.d.ts.map +1 -1
- package/dist/core/expressions/composition/composition-analyzer-helpers.js +348 -17
- package/dist/core/expressions/composition/composition-analyzer-helpers.js.map +1 -1
- package/dist/core/expressions/composition/composition-analyzer-ternary.d.ts +2 -2
- package/dist/core/expressions/composition/composition-analyzer-ternary.d.ts.map +1 -1
- package/dist/core/expressions/composition/composition-analyzer-ternary.js +221 -10
- package/dist/core/expressions/composition/composition-analyzer-ternary.js.map +1 -1
- package/dist/core/expressions/composition/composition-analyzer-traversal.d.ts.map +1 -1
- package/dist/core/expressions/composition/composition-analyzer-traversal.js +67 -2
- package/dist/core/expressions/composition/composition-analyzer-traversal.js.map +1 -1
- package/dist/core/expressions/composition/composition-analyzer-types.d.ts +52 -0
- package/dist/core/expressions/composition/composition-analyzer-types.d.ts.map +1 -1
- package/dist/core/expressions/composition/composition-analyzer.d.ts.map +1 -1
- package/dist/core/expressions/composition/composition-analyzer.js +150 -6
- package/dist/core/expressions/composition/composition-analyzer.js.map +1 -1
- package/dist/core/expressions/composition/expression-analyzer.d.ts.map +1 -1
- package/dist/core/expressions/composition/expression-analyzer.js +21 -4
- package/dist/core/expressions/composition/expression-analyzer.js.map +1 -1
- package/dist/core/expressions/composition/imperative-analyzer.d.ts +1 -1
- package/dist/core/expressions/composition/imperative-analyzer.d.ts.map +1 -1
- package/dist/core/expressions/composition/imperative-analyzer.js +31 -7
- package/dist/core/expressions/composition/imperative-analyzer.js.map +1 -1
- package/dist/core/expressions/composition/scope-manager.d.ts +2 -2
- package/dist/core/expressions/composition/scope-manager.d.ts.map +1 -1
- package/dist/core/expressions/composition/scope-manager.js.map +1 -1
- package/dist/core/expressions/conditional/conditional-expression-processor.d.ts +3 -3
- package/dist/core/expressions/conditional/conditional-expression-processor.d.ts.map +1 -1
- package/dist/core/expressions/conditional/conditional-expression-processor.js.map +1 -1
- package/dist/core/expressions/conditional/conditional-integration.d.ts.map +1 -1
- package/dist/core/expressions/conditional/conditional-integration.js.map +1 -1
- package/dist/core/expressions/context/context-aware-generator.d.ts +5 -5
- package/dist/core/expressions/context/context-aware-generator.d.ts.map +1 -1
- package/dist/core/expressions/context/context-aware-generator.js.map +1 -1
- package/dist/core/expressions/context/context-detector.d.ts +3 -3
- package/dist/core/expressions/context/context-detector.d.ts.map +1 -1
- package/dist/core/expressions/context/context-detector.js.map +1 -1
- package/dist/core/expressions/context/context-validator.d.ts +6 -6
- package/dist/core/expressions/context/context-validator.d.ts.map +1 -1
- package/dist/core/expressions/context/context-validator.js +2 -2
- package/dist/core/expressions/context/context-validator.js.map +1 -1
- package/dist/core/expressions/factory/cel-conversion-engine.d.ts +4 -4
- package/dist/core/expressions/factory/cel-conversion-engine.d.ts.map +1 -1
- package/dist/core/expressions/factory/cel-conversion-engine.js.map +1 -1
- package/dist/core/expressions/factory/dependency-tracker.d.ts +2 -2
- package/dist/core/expressions/factory/dependency-tracker.d.ts.map +1 -1
- package/dist/core/expressions/factory/dependency-tracker.js +21 -5
- package/dist/core/expressions/factory/dependency-tracker.js.map +1 -1
- package/dist/core/expressions/factory/factory-integration.d.ts +2 -4
- package/dist/core/expressions/factory/factory-integration.d.ts.map +1 -1
- package/dist/core/expressions/factory/factory-integration.js +0 -6
- package/dist/core/expressions/factory/factory-integration.js.map +1 -1
- package/dist/core/expressions/factory/factory-pattern-handler.d.ts +3 -3
- package/dist/core/expressions/factory/factory-pattern-handler.d.ts.map +1 -1
- package/dist/core/expressions/factory/factory-pattern-handler.js +1 -0
- package/dist/core/expressions/factory/factory-pattern-handler.js.map +1 -1
- package/dist/core/expressions/factory/migration-helpers.js.map +1 -1
- package/dist/core/expressions/factory/resource-analyzer.d.ts +4 -4
- package/dist/core/expressions/factory/resource-analyzer.d.ts.map +1 -1
- package/dist/core/expressions/factory/resource-analyzer.js.map +1 -1
- package/dist/core/expressions/factory/resource-type-validator.d.ts +5 -5
- package/dist/core/expressions/factory/resource-type-validator.d.ts.map +1 -1
- package/dist/core/expressions/factory/resource-type-validator.js.map +1 -1
- package/dist/core/expressions/factory/status-builder-analyzer.d.ts +6 -7
- package/dist/core/expressions/factory/status-builder-analyzer.d.ts.map +1 -1
- package/dist/core/expressions/factory/status-builder-analyzer.js +0 -3
- package/dist/core/expressions/factory/status-builder-analyzer.js.map +1 -1
- package/dist/core/expressions/factory/status-builder-types.d.ts +1 -1
- package/dist/core/expressions/factory/status-builder-types.d.ts.map +1 -1
- package/dist/core/expressions/factory/status-cel-generation.d.ts +1 -1
- package/dist/core/expressions/factory/status-cel-generation.d.ts.map +1 -1
- package/dist/core/expressions/factory/status-cel-generation.js +1 -1
- package/dist/core/expressions/factory/status-cel-generation.js.map +1 -1
- package/dist/core/expressions/factory/status-field-analysis.d.ts +3 -3
- package/dist/core/expressions/factory/status-field-analysis.d.ts.map +1 -1
- package/dist/core/expressions/factory/status-field-analysis.js.map +1 -1
- package/dist/core/expressions/magic-proxy/magic-assignable-analyzer.d.ts +5 -5
- package/dist/core/expressions/magic-proxy/magic-assignable-analyzer.d.ts.map +1 -1
- package/dist/core/expressions/magic-proxy/magic-assignable-analyzer.js +1 -1
- package/dist/core/expressions/magic-proxy/magic-assignable-analyzer.js.map +1 -1
- package/dist/core/expressions/magic-proxy/magic-proxy-analyzer.d.ts +10 -10
- package/dist/core/expressions/magic-proxy/magic-proxy-analyzer.d.ts.map +1 -1
- package/dist/core/expressions/magic-proxy/magic-proxy-analyzer.js +5 -1
- package/dist/core/expressions/magic-proxy/magic-proxy-analyzer.js.map +1 -1
- package/dist/core/expressions/magic-proxy/magic-proxy-ast.d.ts +2 -2
- package/dist/core/expressions/magic-proxy/magic-proxy-ast.d.ts.map +1 -1
- package/dist/core/expressions/magic-proxy/magic-proxy-ast.js.map +1 -1
- package/dist/core/expressions/magic-proxy/magic-proxy-detector.d.ts +5 -5
- package/dist/core/expressions/magic-proxy/magic-proxy-detector.d.ts.map +1 -1
- package/dist/core/expressions/magic-proxy/magic-proxy-detector.js.map +1 -1
- package/dist/core/expressions/magic-proxy/magic-proxy-types.d.ts +2 -2
- package/dist/core/expressions/magic-proxy/magic-proxy-types.d.ts.map +1 -1
- package/dist/core/expressions/magic-proxy/optionality-handler.d.ts +1 -2
- package/dist/core/expressions/magic-proxy/optionality-handler.d.ts.map +1 -1
- package/dist/core/expressions/magic-proxy/optionality-handler.js +2 -15
- package/dist/core/expressions/magic-proxy/optionality-handler.js.map +1 -1
- package/dist/core/expressions/validation/compile-time-checker.d.ts +1 -1
- package/dist/core/expressions/validation/compile-time-checker.d.ts.map +1 -1
- package/dist/core/expressions/validation/compile-time-checker.js.map +1 -1
- package/dist/core/expressions/validation/compile-time-types.d.ts +2 -2
- package/dist/core/expressions/validation/compile-time-types.d.ts.map +1 -1
- package/dist/core/expressions/validation/kubernetes-field-types.d.ts +4 -4
- package/dist/core/expressions/validation/kubernetes-field-types.d.ts.map +1 -1
- package/dist/core/expressions/validation/kubernetes-field-types.js.map +1 -1
- package/dist/core/expressions/validation/resource-field-utils.d.ts +10 -10
- package/dist/core/expressions/validation/resource-field-utils.d.ts.map +1 -1
- package/dist/core/expressions/validation/resource-field-utils.js.map +1 -1
- package/dist/core/expressions/validation/resource-validation.d.ts +3 -3
- package/dist/core/expressions/validation/resource-validation.d.ts.map +1 -1
- package/dist/core/expressions/validation/resource-validation.js.map +1 -1
- package/dist/core/expressions/validation/type-inference-types.d.ts +2 -2
- package/dist/core/expressions/validation/type-inference-types.d.ts.map +1 -1
- package/dist/core/expressions/validation/type-safety.d.ts +2 -2
- package/dist/core/expressions/validation/type-safety.d.ts.map +1 -1
- package/dist/core/expressions/validation/type-safety.js +1 -0
- package/dist/core/expressions/validation/type-safety.js.map +1 -1
- package/dist/core/kubernetes/bun-api-client.js.map +1 -1
- package/dist/core/kubernetes/bun-http-library.d.ts.map +1 -1
- package/dist/core/kubernetes/bun-http-library.js +29 -3
- package/dist/core/kubernetes/bun-http-library.js.map +1 -1
- package/dist/core/kubernetes/client-provider.d.ts +12 -0
- package/dist/core/kubernetes/client-provider.d.ts.map +1 -1
- package/dist/core/kubernetes/client-provider.js +35 -0
- package/dist/core/kubernetes/client-provider.js.map +1 -1
- package/dist/core/metadata/resource-metadata.d.ts +46 -1
- package/dist/core/metadata/resource-metadata.d.ts.map +1 -1
- package/dist/core/metadata/resource-metadata.js.map +1 -1
- package/dist/core/proxy/create-resource.d.ts +15 -0
- package/dist/core/proxy/create-resource.d.ts.map +1 -1
- package/dist/core/proxy/create-resource.js +56 -2
- package/dist/core/proxy/create-resource.js.map +1 -1
- package/dist/core/readiness/registry.js +2 -2
- package/dist/core/readiness/registry.js.map +1 -1
- package/dist/core/references/cel-evaluator.d.ts +1 -4
- package/dist/core/references/cel-evaluator.d.ts.map +1 -1
- package/dist/core/references/cel-evaluator.js +3 -7
- package/dist/core/references/cel-evaluator.js.map +1 -1
- package/dist/core/references/cel.d.ts +22 -0
- package/dist/core/references/cel.d.ts.map +1 -1
- package/dist/core/references/cel.js +106 -8
- package/dist/core/references/cel.js.map +1 -1
- package/dist/core/references/external-refs.d.ts.map +1 -1
- package/dist/core/references/external-refs.js +3 -0
- package/dist/core/references/external-refs.js.map +1 -1
- package/dist/core/references/resolver.d.ts.map +1 -1
- package/dist/core/references/resolver.js +28 -17
- package/dist/core/references/resolver.js.map +1 -1
- package/dist/core/references/schema-proxy.d.ts +18 -10
- package/dist/core/references/schema-proxy.d.ts.map +1 -1
- package/dist/core/references/schema-proxy.js +174 -23
- package/dist/core/references/schema-proxy.js.map +1 -1
- package/dist/core/runtime-patches/crd-schema-fix.d.ts.map +1 -1
- package/dist/core/runtime-patches/crd-schema-fix.js +4 -1
- package/dist/core/runtime-patches/crd-schema-fix.js.map +1 -1
- package/dist/core/serialization/cel-optimizer.d.ts.map +1 -1
- package/dist/core/serialization/cel-optimizer.js +2 -0
- package/dist/core/serialization/cel-optimizer.js.map +1 -1
- package/dist/core/serialization/cel-references.d.ts +75 -1
- package/dist/core/serialization/cel-references.d.ts.map +1 -1
- package/dist/core/serialization/cel-references.js +692 -156
- package/dist/core/serialization/cel-references.js.map +1 -1
- package/dist/core/serialization/core.d.ts +8 -8
- package/dist/core/serialization/core.d.ts.map +1 -1
- package/dist/core/serialization/core.js +638 -90
- package/dist/core/serialization/core.js.map +1 -1
- package/dist/core/serialization/kro-post-processing.d.ts +1 -1
- package/dist/core/serialization/kro-post-processing.d.ts.map +1 -1
- package/dist/core/serialization/kro-post-processing.js +69 -22
- package/dist/core/serialization/kro-post-processing.js.map +1 -1
- package/dist/core/serialization/schema.d.ts +1 -0
- package/dist/core/serialization/schema.d.ts.map +1 -1
- package/dist/core/serialization/schema.js +378 -50
- package/dist/core/serialization/schema.js.map +1 -1
- package/dist/core/serialization/status-analysis-pipeline.d.ts +1 -1
- package/dist/core/serialization/status-analysis-pipeline.d.ts.map +1 -1
- package/dist/core/serialization/status-analysis-pipeline.js.map +1 -1
- package/dist/core/serialization/yaml.d.ts +3 -2
- package/dist/core/serialization/yaml.d.ts.map +1 -1
- package/dist/core/serialization/yaml.js +385 -55
- package/dist/core/serialization/yaml.js.map +1 -1
- package/dist/core/singleton/singleton.d.ts +16 -0
- package/dist/core/singleton/singleton.d.ts.map +1 -0
- package/dist/core/singleton/singleton.js +135 -0
- package/dist/core/singleton/singleton.js.map +1 -0
- package/dist/core/types/common.d.ts +2 -2
- package/dist/core/types/common.d.ts.map +1 -1
- package/dist/core/types/composable.d.ts +1 -1
- package/dist/core/types/composable.d.ts.map +1 -1
- package/dist/core/types/deployment.d.ts +126 -6
- package/dist/core/types/deployment.d.ts.map +1 -1
- package/dist/core/types/deployment.js +1 -1
- package/dist/core/types/deployment.js.map +1 -1
- package/dist/core/types/kubernetes.d.ts +25 -17
- package/dist/core/types/kubernetes.d.ts.map +1 -1
- package/dist/core/types/references.d.ts +1 -1
- package/dist/core/types/references.d.ts.map +1 -1
- package/dist/core/types/references.js.map +1 -1
- package/dist/core/types/resource-graph.d.ts +1 -1
- package/dist/core/types/resource-graph.d.ts.map +1 -1
- package/dist/core/types/schema.d.ts +1 -1
- package/dist/core/types/schema.d.ts.map +1 -1
- package/dist/core/types/serialization.d.ts +24 -6
- package/dist/core/types/serialization.d.ts.map +1 -1
- package/dist/core/validation/cel-validator.d.ts +15 -2
- package/dist/core/validation/cel-validator.d.ts.map +1 -1
- package/dist/core/validation/cel-validator.js +144 -63
- package/dist/core/validation/cel-validator.js.map +1 -1
- package/dist/factories/apisix/compositions/apisix-bootstrap.d.ts +2 -41
- package/dist/factories/apisix/compositions/apisix-bootstrap.d.ts.map +1 -1
- package/dist/factories/apisix/compositions/apisix-bootstrap.js +262 -217
- package/dist/factories/apisix/compositions/apisix-bootstrap.js.map +1 -1
- package/dist/factories/apisix/index.d.ts +2 -2
- package/dist/factories/apisix/index.js +2 -2
- package/dist/factories/apisix/resources/helm.d.ts +2 -2
- package/dist/factories/apisix/resources/helm.d.ts.map +1 -1
- package/dist/factories/apisix/resources/helm.js.map +1 -1
- package/dist/factories/apisix/types.d.ts +21 -11
- package/dist/factories/apisix/types.d.ts.map +1 -1
- package/dist/factories/apisix/types.js +106 -4
- package/dist/factories/apisix/types.js.map +1 -1
- package/dist/factories/apisix/utils/admin-credentials.d.ts +5 -3
- package/dist/factories/apisix/utils/admin-credentials.d.ts.map +1 -1
- package/dist/factories/apisix/utils/admin-credentials.js +14 -10
- package/dist/factories/apisix/utils/admin-credentials.js.map +1 -1
- package/dist/factories/apisix/utils/helm-values-mapper.d.ts.map +1 -1
- package/dist/factories/apisix/utils/helm-values-mapper.js +4 -2
- package/dist/factories/apisix/utils/helm-values-mapper.js.map +1 -1
- package/dist/factories/cert-manager/resources/challenges.js.map +1 -1
- package/dist/factories/cert-manager/types.d.ts +3 -3
- package/dist/factories/cert-manager/types.d.ts.map +1 -1
- package/dist/factories/cilium/compositions/cilium-bootstrap.d.ts +4 -4
- package/dist/factories/cilium/types.d.ts +3 -3
- package/dist/factories/cilium/types.d.ts.map +1 -1
- package/dist/factories/cnpg/compositions/cnpg-bootstrap.d.ts +1 -0
- package/dist/factories/cnpg/compositions/cnpg-bootstrap.d.ts.map +1 -1
- package/dist/factories/cnpg/compositions/cnpg-bootstrap.js +48 -0
- package/dist/factories/cnpg/compositions/cnpg-bootstrap.js.map +1 -1
- package/dist/factories/cnpg/resources/cluster.js +1 -1
- package/dist/factories/cnpg/resources/cluster.js.map +1 -1
- package/dist/factories/cnpg/resources/helm.d.ts.map +1 -1
- package/dist/factories/cnpg/resources/helm.js +1 -0
- package/dist/factories/cnpg/resources/helm.js.map +1 -1
- package/dist/factories/cnpg/resources/pooler.js +1 -1
- package/dist/factories/cnpg/resources/pooler.js.map +1 -1
- package/dist/factories/cnpg/types.d.ts +9 -8
- package/dist/factories/cnpg/types.d.ts.map +1 -1
- package/dist/factories/cnpg/types.js +11 -0
- package/dist/factories/cnpg/types.js.map +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 +153 -41
- package/dist/factories/external-dns/compositions/external-dns-bootstrap.js.map +1 -1
- package/dist/factories/external-dns/resources/dns-endpoint.js +1 -1
- package/dist/factories/external-dns/resources/dns-endpoint.js.map +1 -1
- package/dist/factories/external-dns/resources/helm.d.ts +1 -1
- package/dist/factories/external-dns/resources/helm.d.ts.map +1 -1
- package/dist/factories/external-dns/resources/helm.js +17 -10
- package/dist/factories/external-dns/resources/helm.js.map +1 -1
- package/dist/factories/external-dns/types.d.ts +5 -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.map +1 -1
- package/dist/factories/flux/git-repository.js +1 -1
- package/dist/factories/flux/git-repository.js.map +1 -1
- package/dist/factories/flux/kustomize/kustomization.d.ts +2 -2
- package/dist/factories/flux/kustomize/kustomization.d.ts.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 +1 -1
- package/dist/factories/flux/kustomize/readiness-evaluators.js.map +1 -1
- package/dist/factories/helm/helm-release.d.ts +3 -2
- package/dist/factories/helm/helm-release.d.ts.map +1 -1
- package/dist/factories/helm/helm-release.js +1 -0
- package/dist/factories/helm/helm-release.js.map +1 -1
- package/dist/factories/helm/helm-repository.d.ts +1 -1
- package/dist/factories/helm/helm-repository.d.ts.map +1 -1
- package/dist/factories/helm/helm-repository.js +6 -4
- package/dist/factories/helm/helm-repository.js.map +1 -1
- package/dist/factories/helm/readiness-evaluators.d.ts +6 -6
- package/dist/factories/helm/readiness-evaluators.d.ts.map +1 -1
- package/dist/factories/helm/readiness-evaluators.js +15 -9
- package/dist/factories/helm/readiness-evaluators.js.map +1 -1
- package/dist/factories/helm/types.d.ts +5 -1
- package/dist/factories/helm/types.d.ts.map +1 -1
- package/dist/factories/inngest/compositions/inngest-bootstrap.d.ts +1 -0
- package/dist/factories/inngest/compositions/inngest-bootstrap.d.ts.map +1 -1
- package/dist/factories/inngest/compositions/inngest-bootstrap.js +4 -3
- package/dist/factories/inngest/compositions/inngest-bootstrap.js.map +1 -1
- package/dist/factories/inngest/resources/helm.js +1 -1
- package/dist/factories/inngest/resources/helm.js.map +1 -1
- package/dist/factories/inngest/types.d.ts +5 -4
- package/dist/factories/inngest/types.d.ts.map +1 -1
- package/dist/factories/inngest/types.js +2 -0
- package/dist/factories/inngest/types.js.map +1 -1
- package/dist/factories/kro/kro-custom-resource.js +1 -1
- package/dist/factories/kro/kro-custom-resource.js.map +1 -1
- package/dist/factories/kubernetes/config/config-map.d.ts +2 -2
- package/dist/factories/kubernetes/config/config-map.d.ts.map +1 -1
- package/dist/factories/kubernetes/config/secret.d.ts +2 -2
- package/dist/factories/kubernetes/config/secret.d.ts.map +1 -1
- package/dist/factories/kubernetes/networking/service.js +1 -1
- package/dist/factories/kubernetes/networking/service.js.map +1 -1
- package/dist/factories/kubernetes/yaml/yaml-directory.d.ts.map +1 -1
- package/dist/factories/kubernetes/yaml/yaml-directory.js +9 -0
- package/dist/factories/kubernetes/yaml/yaml-directory.js.map +1 -1
- package/dist/factories/kubernetes/yaml/yaml-file.d.ts.map +1 -1
- package/dist/factories/kubernetes/yaml/yaml-file.js +9 -0
- package/dist/factories/kubernetes/yaml/yaml-file.js.map +1 -1
- package/dist/factories/pebble/resources/helm.js.map +1 -1
- package/dist/factories/pebble/types.d.ts +2 -2
- package/dist/factories/searxng/compositions/searxng-bootstrap.d.ts +3 -2
- package/dist/factories/searxng/compositions/searxng-bootstrap.d.ts.map +1 -1
- package/dist/factories/searxng/compositions/searxng-bootstrap.js +205 -167
- package/dist/factories/searxng/compositions/searxng-bootstrap.js.map +1 -1
- package/dist/factories/searxng/resources/searxng.d.ts +1 -1
- package/dist/factories/searxng/resources/searxng.js +1 -1
- package/dist/factories/searxng/types.d.ts +5 -4
- package/dist/factories/searxng/types.d.ts.map +1 -1
- package/dist/factories/searxng/types.js +8 -7
- package/dist/factories/searxng/types.js.map +1 -1
- package/dist/factories/searxng/utils/settings-builder.d.ts +4 -3
- package/dist/factories/searxng/utils/settings-builder.d.ts.map +1 -1
- package/dist/factories/searxng/utils/settings-builder.js +4 -3
- package/dist/factories/searxng/utils/settings-builder.js.map +1 -1
- package/dist/factories/simple/config/config-map.d.ts +2 -2
- package/dist/factories/simple/config/config-map.d.ts.map +1 -1
- package/dist/factories/simple/config/secret.d.ts +2 -2
- package/dist/factories/simple/config/secret.d.ts.map +1 -1
- package/dist/factories/simple/helm/index.d.ts +1 -1
- package/dist/factories/simple/helm/index.d.ts.map +1 -1
- package/dist/factories/simple/helm/index.js.map +1 -1
- package/dist/factories/simple/storage/persistent-volume.js.map +1 -1
- package/dist/factories/simple/types.d.ts +11 -1
- package/dist/factories/simple/types.d.ts.map +1 -1
- package/dist/factories/simple/workloads/deployment.d.ts.map +1 -1
- package/dist/factories/simple/workloads/deployment.js +3 -0
- package/dist/factories/simple/workloads/deployment.js.map +1 -1
- package/dist/factories/valkey/compositions/valkey-bootstrap.d.ts +1 -0
- package/dist/factories/valkey/compositions/valkey-bootstrap.d.ts.map +1 -1
- package/dist/factories/valkey/compositions/valkey-bootstrap.js +116 -0
- package/dist/factories/valkey/compositions/valkey-bootstrap.js.map +1 -1
- package/dist/factories/valkey/resources/valkey.js +1 -1
- package/dist/factories/valkey/resources/valkey.js.map +1 -1
- package/dist/factories/valkey/types.d.ts +6 -5
- package/dist/factories/valkey/types.d.ts.map +1 -1
- package/dist/factories/valkey/types.js +10 -0
- package/dist/factories/valkey/types.js.map +1 -1
- package/dist/factories/webapp/compositions/web-app-with-processing.d.ts +90 -6
- package/dist/factories/webapp/compositions/web-app-with-processing.d.ts.map +1 -1
- package/dist/factories/webapp/compositions/web-app-with-processing.js +180 -20
- package/dist/factories/webapp/compositions/web-app-with-processing.js.map +1 -1
- package/dist/factories/webapp/index.d.ts +3 -4
- package/dist/factories/webapp/index.d.ts.map +1 -1
- package/dist/factories/webapp/index.js +3 -4
- package/dist/factories/webapp/index.js.map +1 -1
- package/dist/factories/webapp/types.d.ts +60 -2
- package/dist/factories/webapp/types.d.ts.map +1 -1
- package/dist/factories/webapp/types.js +80 -3
- package/dist/factories/webapp/types.js.map +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/shared/brands.d.ts +18 -8
- package/dist/shared/brands.d.ts.map +1 -1
- package/dist/shared/brands.js +19 -9
- package/dist/shared/brands.js.map +1 -1
- package/dist/utils/cel-escape.d.ts +12 -0
- package/dist/utils/cel-escape.d.ts.map +1 -0
- package/dist/utils/cel-escape.js +19 -0
- package/dist/utils/cel-escape.js.map +1 -0
- package/package.json +3 -2
|
@@ -1,23 +1,46 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Full-Stack Web Application with Background Processing
|
|
3
3
|
*
|
|
4
|
-
* Deploys a complete application stack
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
4
|
+
* Deploys a complete, self-contained application stack. The composition
|
|
5
|
+
* installs its own operators AND the application resources managed by
|
|
6
|
+
* those operators — callers don't need to pre-install anything other
|
|
7
|
+
* than the TypeKro runtime (Flux + KRO) on the target cluster.
|
|
8
|
+
*
|
|
9
|
+
* **Operators** (installed by nested bootstraps):
|
|
10
|
+
* 1. **CloudNativePG operator** (via `cnpgBootstrap`) — manages the
|
|
11
|
+
* PostgreSQL cluster. Installs into `cnpg-system` by default.
|
|
12
|
+
* 2. **Hyperspike Valkey operator** (via `valkeyBootstrap`) — manages
|
|
13
|
+
* the Valkey cache cluster. Installs into `valkey-operator-system`
|
|
14
|
+
* by default.
|
|
15
|
+
* 3. **Inngest** (via `inngestBootstrap`) — the workflow engine itself
|
|
16
|
+
* is installed via a Helm release alongside the app. Bundled
|
|
17
|
+
* Postgres/Redis are disabled; Inngest uses the CNPG and Valkey
|
|
18
|
+
* instances from this composition.
|
|
19
|
+
*
|
|
20
|
+
* **Application resources** (created in the app namespace, managed by
|
|
21
|
+
* the operators above):
|
|
22
|
+
* 1. **PostgreSQL cluster** (CNPG `Cluster`) + PgBouncer `Pooler`
|
|
23
|
+
* 2. **Valkey cache cluster** (Hyperspike `Valkey` CR) + explicit
|
|
24
|
+
* ClusterIP Service (KRO prunes unowned Services otherwise)
|
|
25
|
+
* 3. **Application** `Deployment` + `Service`
|
|
9
26
|
*
|
|
10
27
|
* All connection strings are automatically wired into the app's environment:
|
|
11
28
|
* - `DATABASE_URL` — points to the PgBouncer pooler
|
|
12
29
|
* - `VALKEY_URL` / `REDIS_URL` — points to the Valkey service
|
|
13
30
|
* - `INNGEST_BASE_URL` — points to the Inngest server
|
|
14
|
-
* - `INNGEST_EVENT_KEY` / `INNGEST_SIGNING_KEY` — from
|
|
31
|
+
* - `INNGEST_EVENT_KEY` / `INNGEST_SIGNING_KEY` — injected from a generated Secret via envFrom
|
|
15
32
|
*
|
|
16
33
|
* Resource dependencies are expressed through proxy references:
|
|
17
34
|
* - Inngest references `cache.metadata.name` for the redis URI → deploys after Valkey
|
|
18
35
|
* - Inngest references `database.status.writeService` for the postgres URI → deploys after CNPG
|
|
19
36
|
* - App references service names derived from resource names → deploys after all infra
|
|
20
37
|
*
|
|
38
|
+
* Operator install settings can be overridden per-deployment via
|
|
39
|
+
* `spec.cnpgOperator` and `spec.valkeyOperator` — e.g., to pin chart
|
|
40
|
+
* versions or change the install namespace. Both fields are optional;
|
|
41
|
+
* defaults install the latest pinned version into each operator's
|
|
42
|
+
* system namespace.
|
|
43
|
+
*
|
|
21
44
|
* @example
|
|
22
45
|
* ```typescript
|
|
23
46
|
* import { webAppWithProcessing } from 'typekro/webapp';
|
|
@@ -50,6 +73,9 @@
|
|
|
50
73
|
* signingKey: 'deadbeef0123456789abcdef0123456789abcdef0123456789abcdef01234567',
|
|
51
74
|
* sdkUrl: ['http://my-app:3000/api/inngest'],
|
|
52
75
|
* },
|
|
76
|
+
* // Operators install with sensible defaults; override only if
|
|
77
|
+
* // you need a specific chart version or custom install namespace.
|
|
78
|
+
* cnpgOperator: { version: '0.23.0' },
|
|
53
79
|
* });
|
|
54
80
|
* ```
|
|
55
81
|
*/
|
|
@@ -60,6 +86,21 @@ export declare const webAppWithProcessing: import("../../../index.js").CallableC
|
|
|
60
86
|
port?: number;
|
|
61
87
|
replicas?: number;
|
|
62
88
|
env?: Record<string, string>;
|
|
89
|
+
envFrom?: ({
|
|
90
|
+
secretRef: {
|
|
91
|
+
name: string;
|
|
92
|
+
optional?: boolean;
|
|
93
|
+
};
|
|
94
|
+
prefix?: string;
|
|
95
|
+
configMapRef?: never;
|
|
96
|
+
} | {
|
|
97
|
+
configMapRef: {
|
|
98
|
+
name: string;
|
|
99
|
+
optional?: boolean;
|
|
100
|
+
};
|
|
101
|
+
prefix?: string;
|
|
102
|
+
secretRef?: never;
|
|
103
|
+
})[];
|
|
63
104
|
};
|
|
64
105
|
database: {
|
|
65
106
|
storageSize: string;
|
|
@@ -73,6 +114,16 @@ export declare const webAppWithProcessing: import("../../../index.js").CallableC
|
|
|
73
114
|
signingKey: string;
|
|
74
115
|
sdkUrl?: string[];
|
|
75
116
|
replicas?: number;
|
|
117
|
+
resources?: {
|
|
118
|
+
requests?: {
|
|
119
|
+
cpu?: string;
|
|
120
|
+
memory?: string;
|
|
121
|
+
};
|
|
122
|
+
limits?: {
|
|
123
|
+
cpu?: string;
|
|
124
|
+
memory?: string;
|
|
125
|
+
};
|
|
126
|
+
};
|
|
76
127
|
};
|
|
77
128
|
namespace?: string;
|
|
78
129
|
cache?: {
|
|
@@ -81,10 +132,43 @@ export declare const webAppWithProcessing: import("../../../index.js").CallableC
|
|
|
81
132
|
volumePermissions?: boolean;
|
|
82
133
|
storageSize?: string;
|
|
83
134
|
};
|
|
135
|
+
cnpgOperator?: {
|
|
136
|
+
name?: string;
|
|
137
|
+
namespace?: string;
|
|
138
|
+
version?: string;
|
|
139
|
+
installCRDs?: boolean;
|
|
140
|
+
replicaCount?: number;
|
|
141
|
+
monitoring?: {
|
|
142
|
+
enabled?: boolean;
|
|
143
|
+
};
|
|
144
|
+
resources?: {
|
|
145
|
+
requests?: {
|
|
146
|
+
cpu?: string;
|
|
147
|
+
memory?: string;
|
|
148
|
+
};
|
|
149
|
+
limits?: {
|
|
150
|
+
cpu?: string;
|
|
151
|
+
memory?: string;
|
|
152
|
+
};
|
|
153
|
+
};
|
|
154
|
+
customValues?: Record<string, unknown>;
|
|
155
|
+
shared?: boolean;
|
|
156
|
+
};
|
|
157
|
+
valkeyOperator?: {
|
|
158
|
+
name?: string;
|
|
159
|
+
namespace?: string;
|
|
160
|
+
version?: string;
|
|
161
|
+
customValues?: Record<string, unknown>;
|
|
162
|
+
shared?: boolean;
|
|
163
|
+
};
|
|
84
164
|
}, {
|
|
85
165
|
ready: boolean;
|
|
86
166
|
databaseUrl: string;
|
|
167
|
+
databaseHost: string;
|
|
168
|
+
databasePort: number;
|
|
87
169
|
cacheUrl: string;
|
|
170
|
+
cacheHost: string;
|
|
171
|
+
cachePort: number;
|
|
88
172
|
inngestUrl: string;
|
|
89
173
|
appUrl: string;
|
|
90
174
|
components: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"web-app-with-processing.d.ts","sourceRoot":"","sources":["../../../../src/factories/webapp/compositions/web-app-with-processing.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"web-app-with-processing.d.ts","sourceRoot":"","sources":["../../../../src/factories/webapp/compositions/web-app-with-processing.ts"],"names":[],"mappings":"AAkBA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgFG;AACH,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAsThC,CAAC"}
|
|
@@ -1,30 +1,58 @@
|
|
|
1
1
|
import { kubernetesComposition } from '../../../core/composition/imperative.js';
|
|
2
|
+
import { singleton } from '../../../core/singleton/singleton.js';
|
|
3
|
+
import { isKubernetesRef } from '../../../utils/type-guards.js';
|
|
4
|
+
import { cnpgBootstrap } from '../../cnpg/compositions/cnpg-bootstrap.js';
|
|
2
5
|
import { cluster } from '../../cnpg/resources/cluster.js';
|
|
6
|
+
import { secret } from '../../kubernetes/config/secret.js';
|
|
3
7
|
import { pooler } from '../../cnpg/resources/pooler.js';
|
|
4
8
|
import { inngestBootstrap } from '../../inngest/compositions/inngest-bootstrap.js';
|
|
5
9
|
import { simple } from '../../simple/index.js';
|
|
10
|
+
import { valkeyBootstrap } from '../../valkey/compositions/valkey-bootstrap.js';
|
|
6
11
|
import { valkey } from '../../valkey/resources/valkey.js';
|
|
7
12
|
import { WebAppWithProcessingConfigSchema, WebAppWithProcessingStatusSchema, } from '../types.js';
|
|
8
13
|
/**
|
|
9
14
|
* Full-Stack Web Application with Background Processing
|
|
10
15
|
*
|
|
11
|
-
* Deploys a complete application stack
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
-
*
|
|
16
|
+
* Deploys a complete, self-contained application stack. The composition
|
|
17
|
+
* installs its own operators AND the application resources managed by
|
|
18
|
+
* those operators — callers don't need to pre-install anything other
|
|
19
|
+
* than the TypeKro runtime (Flux + KRO) on the target cluster.
|
|
20
|
+
*
|
|
21
|
+
* **Operators** (installed by nested bootstraps):
|
|
22
|
+
* 1. **CloudNativePG operator** (via `cnpgBootstrap`) — manages the
|
|
23
|
+
* PostgreSQL cluster. Installs into `cnpg-system` by default.
|
|
24
|
+
* 2. **Hyperspike Valkey operator** (via `valkeyBootstrap`) — manages
|
|
25
|
+
* the Valkey cache cluster. Installs into `valkey-operator-system`
|
|
26
|
+
* by default.
|
|
27
|
+
* 3. **Inngest** (via `inngestBootstrap`) — the workflow engine itself
|
|
28
|
+
* is installed via a Helm release alongside the app. Bundled
|
|
29
|
+
* Postgres/Redis are disabled; Inngest uses the CNPG and Valkey
|
|
30
|
+
* instances from this composition.
|
|
31
|
+
*
|
|
32
|
+
* **Application resources** (created in the app namespace, managed by
|
|
33
|
+
* the operators above):
|
|
34
|
+
* 1. **PostgreSQL cluster** (CNPG `Cluster`) + PgBouncer `Pooler`
|
|
35
|
+
* 2. **Valkey cache cluster** (Hyperspike `Valkey` CR) + explicit
|
|
36
|
+
* ClusterIP Service (KRO prunes unowned Services otherwise)
|
|
37
|
+
* 3. **Application** `Deployment` + `Service`
|
|
16
38
|
*
|
|
17
39
|
* All connection strings are automatically wired into the app's environment:
|
|
18
40
|
* - `DATABASE_URL` — points to the PgBouncer pooler
|
|
19
41
|
* - `VALKEY_URL` / `REDIS_URL` — points to the Valkey service
|
|
20
42
|
* - `INNGEST_BASE_URL` — points to the Inngest server
|
|
21
|
-
* - `INNGEST_EVENT_KEY` / `INNGEST_SIGNING_KEY` — from
|
|
43
|
+
* - `INNGEST_EVENT_KEY` / `INNGEST_SIGNING_KEY` — injected from a generated Secret via envFrom
|
|
22
44
|
*
|
|
23
45
|
* Resource dependencies are expressed through proxy references:
|
|
24
46
|
* - Inngest references `cache.metadata.name` for the redis URI → deploys after Valkey
|
|
25
47
|
* - Inngest references `database.status.writeService` for the postgres URI → deploys after CNPG
|
|
26
48
|
* - App references service names derived from resource names → deploys after all infra
|
|
27
49
|
*
|
|
50
|
+
* Operator install settings can be overridden per-deployment via
|
|
51
|
+
* `spec.cnpgOperator` and `spec.valkeyOperator` — e.g., to pin chart
|
|
52
|
+
* versions or change the install namespace. Both fields are optional;
|
|
53
|
+
* defaults install the latest pinned version into each operator's
|
|
54
|
+
* system namespace.
|
|
55
|
+
*
|
|
28
56
|
* @example
|
|
29
57
|
* ```typescript
|
|
30
58
|
* import { webAppWithProcessing } from 'typekro/webapp';
|
|
@@ -57,6 +85,9 @@ import { WebAppWithProcessingConfigSchema, WebAppWithProcessingStatusSchema, } f
|
|
|
57
85
|
* signingKey: 'deadbeef0123456789abcdef0123456789abcdef0123456789abcdef01234567',
|
|
58
86
|
* sdkUrl: ['http://my-app:3000/api/inngest'],
|
|
59
87
|
* },
|
|
88
|
+
* // Operators install with sensible defaults; override only if
|
|
89
|
+
* // you need a specific chart version or custom install namespace.
|
|
90
|
+
* cnpgOperator: { version: '0.23.0' },
|
|
60
91
|
* });
|
|
61
92
|
* ```
|
|
62
93
|
*/
|
|
@@ -70,8 +101,55 @@ export const webAppWithProcessing = kubernetesComposition({
|
|
|
70
101
|
const appPort = spec.app.port ?? 3000;
|
|
71
102
|
const appReplicas = spec.app.replicas ?? 1;
|
|
72
103
|
const inngestReplicas = spec.processing.replicas ?? 1;
|
|
73
|
-
|
|
104
|
+
// Defaults for optional DB fields. These literals are picked up by
|
|
105
|
+
// `extractNullishDefaults` and propagated to the outer KRO schema as
|
|
106
|
+
// `| default="..."` annotations (see schema.ts). Using schema-ref
|
|
107
|
+
// fallbacks (e.g., `spec.name`) does NOT work in KRO mode because
|
|
108
|
+
// the schema proxy is truthy and `??` never fires — KRO also has
|
|
109
|
+
// no way to express a cross-field schema default statically.
|
|
110
|
+
const dbName = spec.database.database ?? 'app';
|
|
74
111
|
const dbOwner = spec.database.owner ?? 'app';
|
|
112
|
+
// ── Operator bootstraps ────────────────────────────────────────────
|
|
113
|
+
//
|
|
114
|
+
// Install the CNPG and Valkey operators as part of the composition
|
|
115
|
+
// so consumers get a fully self-contained stack. The bootstraps run
|
|
116
|
+
// in their own system namespaces (not the app namespace) and install
|
|
117
|
+
// cluster-scoped operators; the later `cluster()`/`valkey()` calls
|
|
118
|
+
// create instances in the app namespace managed by those operators.
|
|
119
|
+
//
|
|
120
|
+
// Operators are cluster-scoped infrastructure — one install per
|
|
121
|
+
// cluster serves every consumer. Use singleton(...) so KRO-mode
|
|
122
|
+
// consumers reference the shared operator boundary instead of
|
|
123
|
+
// inlining the operator bootstrap resources into every app graph.
|
|
124
|
+
//
|
|
125
|
+
// Users who need a dedicated per-instance operator (multi-tenancy,
|
|
126
|
+
// version testing, isolated failure domains) can override any
|
|
127
|
+
// combination of fields via `spec.cnpgOperator` / `spec.valkeyOperator` —
|
|
128
|
+
// e.g., `{ name: 'testapp-cnpg', namespace: 'testapp-cnpg-system', shared: false }`.
|
|
129
|
+
// The spread puts user overrides AFTER the defaults so they win.
|
|
130
|
+
// Operator bootstrap config: merge user overrides AFTER defaults.
|
|
131
|
+
// Use explicit ?? fallbacks for name/namespace instead of relying on
|
|
132
|
+
// object-literal-before-spread ordering — the spread of an optional
|
|
133
|
+
// spec field produces schema refs that get wrapped with omit(), but
|
|
134
|
+
// metadata.name is required and cannot be omitted. The ?? ensures
|
|
135
|
+
// the default is expressed as a KRO orValue/default, not omit().
|
|
136
|
+
const _cnpg = singleton(cnpgBootstrap, {
|
|
137
|
+
id: 'cnpg-operator',
|
|
138
|
+
spec: {
|
|
139
|
+
...spec.cnpgOperator,
|
|
140
|
+
name: spec.cnpgOperator?.name ?? 'cnpg-operator',
|
|
141
|
+
namespace: spec.cnpgOperator?.namespace ?? 'cnpg-system',
|
|
142
|
+
installCRDs: spec.cnpgOperator?.installCRDs ?? true,
|
|
143
|
+
},
|
|
144
|
+
});
|
|
145
|
+
const _valkeyOp = singleton(valkeyBootstrap, {
|
|
146
|
+
id: 'valkey-operator',
|
|
147
|
+
spec: {
|
|
148
|
+
...spec.valkeyOperator,
|
|
149
|
+
name: spec.valkeyOperator?.name ?? 'valkey-operator',
|
|
150
|
+
namespace: spec.valkeyOperator?.namespace ?? 'valkey-operator-system',
|
|
151
|
+
},
|
|
152
|
+
});
|
|
75
153
|
// ── PostgreSQL (CNPG) ──────────────────────────────────────────────
|
|
76
154
|
const database = cluster({
|
|
77
155
|
name: `${spec.name}-db`,
|
|
@@ -116,9 +194,24 @@ export const webAppWithProcessing = kubernetesComposition({
|
|
|
116
194
|
},
|
|
117
195
|
id: 'cache',
|
|
118
196
|
});
|
|
119
|
-
//
|
|
120
|
-
//
|
|
121
|
-
//
|
|
197
|
+
// KRO applyset pruning workaround (upstream: kubernetes-sigs/kro#1153).
|
|
198
|
+
//
|
|
199
|
+
// The Hyperspike Valkey operator copies ALL parent labels to child
|
|
200
|
+
// resources. KRO stamps applyset labels on the Valkey CR, so the
|
|
201
|
+
// operator propagates them to children (ConfigMap, headless Service,
|
|
202
|
+
// etc.). KRO's pruner then treats those children as applyset members
|
|
203
|
+
// and deletes any whose GK is already in `contains-group-kinds` but
|
|
204
|
+
// whose UID isn't in `keepUIDs` — creating an infinite create/delete
|
|
205
|
+
// loop. KRO closed this as "expected behavior"; the fix belongs on
|
|
206
|
+
// the operator side, but Hyperspike has no label-propagation opt-out.
|
|
207
|
+
//
|
|
208
|
+
// Workaround: pre-declare the operator-created resources as typekro
|
|
209
|
+
// graph nodes so KRO claims them with their own `kro.run/node-id`
|
|
210
|
+
// label. The operator's upsert then patches the existing resource
|
|
211
|
+
// instead of creating a new one with inherited applyset labels.
|
|
212
|
+
//
|
|
213
|
+
// TODO: remove when migrating to valkey-io/valkey-operator, which
|
|
214
|
+
// is unlikely to have this label-copying behavior.
|
|
122
215
|
simple.Service({
|
|
123
216
|
name: `${spec.name}-cache`,
|
|
124
217
|
namespace: ns,
|
|
@@ -129,6 +222,12 @@ export const webAppWithProcessing = kubernetesComposition({
|
|
|
129
222
|
ports: [{ port: 6379, targetPort: 6379 }],
|
|
130
223
|
id: 'cacheService',
|
|
131
224
|
});
|
|
225
|
+
simple.ConfigMap({
|
|
226
|
+
name: `${spec.name}-cache`,
|
|
227
|
+
namespace: ns,
|
|
228
|
+
data: {},
|
|
229
|
+
id: 'cacheConfigMap',
|
|
230
|
+
});
|
|
132
231
|
// ── Database credentials ──────────────────────────────────────────────
|
|
133
232
|
// CNPG auto-generates a Secret named {cluster}-{owner} during bootstrap.
|
|
134
233
|
// Validated against CNPG v1.25 (cloudnative-pg chart 0.23.0).
|
|
@@ -136,30 +235,53 @@ export const webAppWithProcessing = kubernetesComposition({
|
|
|
136
235
|
// KRO reconciliation (KRO waits for external refs to exist before creating
|
|
137
236
|
// dependent resources, but the Secret only exists after CNPG bootstraps).
|
|
138
237
|
const dbSecretName = `${spec.name}-db-${dbOwner}`;
|
|
238
|
+
const inngestRepositoryName = `${spec.name}-${ns}-inngest-repo`;
|
|
139
239
|
// ── Inngest (with external DB + cache) ──────────────────────────────
|
|
140
|
-
//
|
|
141
|
-
//
|
|
142
|
-
//
|
|
143
|
-
//
|
|
144
|
-
const
|
|
240
|
+
// The actual postgres credentials are injected via the CNPG Secret
|
|
241
|
+
// (secretKeyRef below). Use the deterministic pooler host here instead of
|
|
242
|
+
// database.status.writeService so nested compositions do not leak an inner
|
|
243
|
+
// resource status marker into the parent deployment graph.
|
|
244
|
+
const inngestBootstrapApp = inngestBootstrap({
|
|
145
245
|
name: `${spec.name}-inngest`,
|
|
146
246
|
namespace: ns,
|
|
247
|
+
repositoryName: inngestRepositoryName,
|
|
147
248
|
inngest: {
|
|
148
249
|
eventKey: spec.processing.eventKey,
|
|
149
250
|
signingKey: spec.processing.signingKey,
|
|
150
|
-
postgres: { uri: `postgresql://${dbOwner}@${
|
|
251
|
+
postgres: { uri: `postgresql://${dbOwner}@${dbPooler.metadata.name}:5432/${dbName}` },
|
|
151
252
|
redis: { uri: `redis://${cache.metadata.name}:6379` },
|
|
152
253
|
sdkUrl: spec.processing.sdkUrl,
|
|
153
254
|
},
|
|
154
255
|
postgresql: { enabled: false },
|
|
155
256
|
redis: { enabled: false },
|
|
156
257
|
replicaCount: inngestReplicas,
|
|
258
|
+
...(spec.processing.resources ? { resources: spec.processing.resources } : {}),
|
|
157
259
|
// Deploy Inngest pods in the same namespace as CNPG (for Secret access)
|
|
158
260
|
// and inject the real postgres URI from the CNPG Secret via secretKeyRef.
|
|
159
261
|
customValues: {
|
|
160
262
|
namespace: { create: false, name: ns },
|
|
161
263
|
inngest: {
|
|
264
|
+
eventKey: undefined,
|
|
265
|
+
signingKey: undefined,
|
|
162
266
|
extraEnv: [
|
|
267
|
+
{
|
|
268
|
+
name: 'INNGEST_EVENT_KEY',
|
|
269
|
+
valueFrom: {
|
|
270
|
+
secretKeyRef: {
|
|
271
|
+
name: `${spec.name}-inngest-credentials`,
|
|
272
|
+
key: 'INNGEST_EVENT_KEY',
|
|
273
|
+
},
|
|
274
|
+
},
|
|
275
|
+
},
|
|
276
|
+
{
|
|
277
|
+
name: 'INNGEST_SIGNING_KEY',
|
|
278
|
+
valueFrom: {
|
|
279
|
+
secretKeyRef: {
|
|
280
|
+
name: `${spec.name}-inngest-credentials`,
|
|
281
|
+
key: 'INNGEST_SIGNING_KEY',
|
|
282
|
+
},
|
|
283
|
+
},
|
|
284
|
+
},
|
|
163
285
|
{
|
|
164
286
|
name: 'INNGEST_POSTGRES_URI',
|
|
165
287
|
valueFrom: {
|
|
@@ -173,16 +295,49 @@ export const webAppWithProcessing = kubernetesComposition({
|
|
|
173
295
|
},
|
|
174
296
|
},
|
|
175
297
|
});
|
|
298
|
+
// Inngest needs cache to be ready before it can connect to Redis.
|
|
299
|
+
// cache.metadata.name is deterministic and gets inlined to a schema
|
|
300
|
+
// ref, so KRO sees no implicit dependency. dependsOn creates an
|
|
301
|
+
// explicit readyWhen on inngest's leaf resource.
|
|
302
|
+
inngestBootstrapApp.dependsOn?.(cache);
|
|
303
|
+
inngestBootstrapApp.dependsOn?.(database);
|
|
304
|
+
inngestBootstrapApp.dependsOn?.(dbPooler);
|
|
305
|
+
// ── Inngest credentials Secret ──────────────────────────────────────
|
|
306
|
+
//
|
|
307
|
+
// The Inngest event key and signing key are sensitive — store them
|
|
308
|
+
// in a K8s Secret rather than plaintext in the Deployment env.
|
|
309
|
+
// Both the app and the Inngest server need these: the app sends
|
|
310
|
+
// events with the event key and validates webhooks with the signing
|
|
311
|
+
// key; the Inngest server uses them to authenticate SDK connections.
|
|
312
|
+
const inngestSecretName = `${spec.name}-inngest-credentials`;
|
|
313
|
+
secret({
|
|
314
|
+
metadata: {
|
|
315
|
+
name: inngestSecretName,
|
|
316
|
+
namespace: ns,
|
|
317
|
+
},
|
|
318
|
+
stringData: {
|
|
319
|
+
INNGEST_EVENT_KEY: spec.processing.eventKey,
|
|
320
|
+
INNGEST_SIGNING_KEY: spec.processing.signingKey,
|
|
321
|
+
},
|
|
322
|
+
id: 'inngestCredentials',
|
|
323
|
+
});
|
|
176
324
|
// ── Application ─────────────────────────────────────────────────────
|
|
177
325
|
const appEnv = {
|
|
178
326
|
DATABASE_URL: `postgresql://${dbOwner}@${dbPooler.metadata.name}:5432/${dbName}`,
|
|
179
327
|
VALKEY_URL: `redis://${cache.metadata.name}:6379`,
|
|
180
328
|
REDIS_URL: `redis://${cache.metadata.name}:6379`,
|
|
181
329
|
INNGEST_BASE_URL: `http://${spec.name}-inngest:8288`,
|
|
182
|
-
INNGEST_EVENT_KEY
|
|
183
|
-
|
|
330
|
+
// INNGEST_EVENT_KEY and INNGEST_SIGNING_KEY injected via the
|
|
331
|
+
// inngest credentials Secret (envFrom below) — not plaintext.
|
|
184
332
|
...spec.app.env,
|
|
185
333
|
};
|
|
334
|
+
// The inngest Secret is listed FIRST so user-provided envFrom sources can
|
|
335
|
+
// override INNGEST_EVENT_KEY / INNGEST_SIGNING_KEY if they provide their
|
|
336
|
+
// own Secret containing those keys (last-write-wins in K8s envFrom ordering).
|
|
337
|
+
const userAppEnvFrom = spec.app.envFrom;
|
|
338
|
+
const appEnvFrom = isKubernetesRef(userAppEnvFrom)
|
|
339
|
+
? [{ secretRef: { name: inngestSecretName } }]
|
|
340
|
+
: [{ secretRef: { name: inngestSecretName } }, ...(userAppEnvFrom ?? [])];
|
|
186
341
|
const app = simple.Deployment({
|
|
187
342
|
name: spec.name,
|
|
188
343
|
namespace: ns,
|
|
@@ -190,6 +345,7 @@ export const webAppWithProcessing = kubernetesComposition({
|
|
|
190
345
|
replicas: appReplicas,
|
|
191
346
|
ports: [{ containerPort: appPort }],
|
|
192
347
|
env: appEnv,
|
|
348
|
+
envFrom: appEnvFrom,
|
|
193
349
|
id: 'app',
|
|
194
350
|
});
|
|
195
351
|
simple.Service({
|
|
@@ -204,16 +360,20 @@ export const webAppWithProcessing = kubernetesComposition({
|
|
|
204
360
|
ready: app.status.readyReplicas >= appReplicas &&
|
|
205
361
|
database.status.readyInstances >= (spec.database.instances ?? 1) &&
|
|
206
362
|
cache.status.ready &&
|
|
207
|
-
|
|
363
|
+
inngestBootstrapApp.status.ready,
|
|
208
364
|
databaseUrl: `postgresql://${dbOwner}@${dbPooler.metadata.name}:5432/${dbName}`,
|
|
365
|
+
databaseHost: `${dbPooler.metadata.name}`,
|
|
366
|
+
databasePort: 5432,
|
|
209
367
|
cacheUrl: `redis://${cache.metadata.name}:6379`,
|
|
368
|
+
cacheHost: `${cache.metadata.name}`,
|
|
369
|
+
cachePort: 6379,
|
|
210
370
|
inngestUrl: `http://${spec.name}-inngest:8288`,
|
|
211
371
|
appUrl: `http://${spec.name}:${appPort}`,
|
|
212
372
|
components: {
|
|
213
373
|
app: app.status.readyReplicas >= appReplicas,
|
|
214
374
|
database: database.status.readyInstances >= (spec.database.instances ?? 1),
|
|
215
375
|
cache: cache.status.ready,
|
|
216
|
-
inngest:
|
|
376
|
+
inngest: inngestBootstrapApp.status.ready,
|
|
217
377
|
},
|
|
218
378
|
};
|
|
219
379
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"web-app-with-processing.js","sourceRoot":"","sources":["../../../../src/factories/webapp/compositions/web-app-with-processing.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"web-app-with-processing.js","sourceRoot":"","sources":["../../../../src/factories/webapp/compositions/web-app-with-processing.ts"],"names":[],"mappings":"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"}
|
|
@@ -13,10 +13,9 @@
|
|
|
13
13
|
* exposes these URLs for debugging or wiring additional services.
|
|
14
14
|
*
|
|
15
15
|
* ## Prerequisites
|
|
16
|
-
*
|
|
17
|
-
*
|
|
18
|
-
*
|
|
19
|
-
* - Flux CD (for Inngest HelmRelease)
|
|
16
|
+
* Install the TypeKro runtime (Flux + KRO). The composition bootstraps the
|
|
17
|
+
* CloudNativePG and Hyperspike Valkey operators itself as shared singleton
|
|
18
|
+
* dependencies.
|
|
20
19
|
*
|
|
21
20
|
* @example
|
|
22
21
|
* ```typescript
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/factories/webapp/index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/factories/webapp/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgDG;AACH,cAAc,yBAAyB,CAAC;AACxC,cAAc,YAAY,CAAC"}
|
|
@@ -13,10 +13,9 @@
|
|
|
13
13
|
* exposes these URLs for debugging or wiring additional services.
|
|
14
14
|
*
|
|
15
15
|
* ## Prerequisites
|
|
16
|
-
*
|
|
17
|
-
*
|
|
18
|
-
*
|
|
19
|
-
* - Flux CD (for Inngest HelmRelease)
|
|
16
|
+
* Install the TypeKro runtime (Flux + KRO). The composition bootstraps the
|
|
17
|
+
* CloudNativePG and Hyperspike Valkey operators itself as shared singleton
|
|
18
|
+
* dependencies.
|
|
20
19
|
*
|
|
21
20
|
* @example
|
|
22
21
|
* ```typescript
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/factories/webapp/index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/factories/webapp/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgDG;AACH,cAAc,yBAAyB,CAAC;AACxC,cAAc,YAAY,CAAC"}
|
|
@@ -16,13 +16,28 @@
|
|
|
16
16
|
* Deploys: App + CNPG PostgreSQL + Valkey cache + Inngest workflow engine.
|
|
17
17
|
* All connection strings are automatically wired into the app's environment.
|
|
18
18
|
*/
|
|
19
|
-
export declare const WebAppWithProcessingConfigSchema: import("arktype/internal/
|
|
19
|
+
export declare const WebAppWithProcessingConfigSchema: import("arktype/internal/variants/object.ts").ObjectType<{
|
|
20
20
|
name: string;
|
|
21
21
|
app: {
|
|
22
22
|
image: string;
|
|
23
23
|
port?: number;
|
|
24
24
|
replicas?: number;
|
|
25
25
|
env?: Record<string, string>;
|
|
26
|
+
envFrom?: ({
|
|
27
|
+
secretRef: {
|
|
28
|
+
name: string;
|
|
29
|
+
optional?: boolean;
|
|
30
|
+
};
|
|
31
|
+
prefix?: string;
|
|
32
|
+
configMapRef?: never;
|
|
33
|
+
} | {
|
|
34
|
+
configMapRef: {
|
|
35
|
+
name: string;
|
|
36
|
+
optional?: boolean;
|
|
37
|
+
};
|
|
38
|
+
prefix?: string;
|
|
39
|
+
secretRef?: never;
|
|
40
|
+
})[];
|
|
26
41
|
};
|
|
27
42
|
database: {
|
|
28
43
|
storageSize: string;
|
|
@@ -36,6 +51,16 @@ export declare const WebAppWithProcessingConfigSchema: import("arktype/internal/
|
|
|
36
51
|
signingKey: string;
|
|
37
52
|
sdkUrl?: string[];
|
|
38
53
|
replicas?: number;
|
|
54
|
+
resources?: {
|
|
55
|
+
requests?: {
|
|
56
|
+
cpu?: string;
|
|
57
|
+
memory?: string;
|
|
58
|
+
};
|
|
59
|
+
limits?: {
|
|
60
|
+
cpu?: string;
|
|
61
|
+
memory?: string;
|
|
62
|
+
};
|
|
63
|
+
};
|
|
39
64
|
};
|
|
40
65
|
namespace?: string;
|
|
41
66
|
cache?: {
|
|
@@ -44,6 +69,35 @@ export declare const WebAppWithProcessingConfigSchema: import("arktype/internal/
|
|
|
44
69
|
volumePermissions?: boolean;
|
|
45
70
|
storageSize?: string;
|
|
46
71
|
};
|
|
72
|
+
cnpgOperator?: {
|
|
73
|
+
name?: string;
|
|
74
|
+
namespace?: string;
|
|
75
|
+
version?: string;
|
|
76
|
+
installCRDs?: boolean;
|
|
77
|
+
replicaCount?: number;
|
|
78
|
+
monitoring?: {
|
|
79
|
+
enabled?: boolean;
|
|
80
|
+
};
|
|
81
|
+
resources?: {
|
|
82
|
+
requests?: {
|
|
83
|
+
cpu?: string;
|
|
84
|
+
memory?: string;
|
|
85
|
+
};
|
|
86
|
+
limits?: {
|
|
87
|
+
cpu?: string;
|
|
88
|
+
memory?: string;
|
|
89
|
+
};
|
|
90
|
+
};
|
|
91
|
+
customValues?: Record<string, unknown>;
|
|
92
|
+
shared?: boolean;
|
|
93
|
+
};
|
|
94
|
+
valkeyOperator?: {
|
|
95
|
+
name?: string;
|
|
96
|
+
namespace?: string;
|
|
97
|
+
version?: string;
|
|
98
|
+
customValues?: Record<string, unknown>;
|
|
99
|
+
shared?: boolean;
|
|
100
|
+
};
|
|
47
101
|
}, {}>;
|
|
48
102
|
/** Inferred config type — no separate interface needed. */
|
|
49
103
|
export type WebAppWithProcessingConfig = typeof WebAppWithProcessingConfigSchema.infer;
|
|
@@ -51,10 +105,14 @@ export type WebAppWithProcessingConfig = typeof WebAppWithProcessingConfigSchema
|
|
|
51
105
|
* Status schema for the full-stack web application deployment.
|
|
52
106
|
* Exposes connection URLs and readiness for each component.
|
|
53
107
|
*/
|
|
54
|
-
export declare const WebAppWithProcessingStatusSchema: import("arktype/internal/
|
|
108
|
+
export declare const WebAppWithProcessingStatusSchema: import("arktype/internal/variants/object.ts").ObjectType<{
|
|
55
109
|
ready: boolean;
|
|
56
110
|
databaseUrl: string;
|
|
111
|
+
databaseHost: string;
|
|
112
|
+
databasePort: number;
|
|
57
113
|
cacheUrl: string;
|
|
114
|
+
cacheHost: string;
|
|
115
|
+
cachePort: number;
|
|
58
116
|
inngestUrl: string;
|
|
59
117
|
appUrl: string;
|
|
60
118
|
components: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/factories/webapp/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/factories/webapp/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAyBH;;;;;GAKG;AACH,eAAO,MAAM,gCAAgC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MA6G3C,CAAC;AAEH,2DAA2D;AAC3D,MAAM,MAAM,0BAA0B,GAAG,OAAO,gCAAgC,CAAC,KAAK,CAAC;AAEvF;;;GAGG;AACH,eAAO,MAAM,gCAAgC;;;;;;;;;;;;;;;;MAgB3C,CAAC;AAEH,4BAA4B;AAC5B,MAAM,MAAM,0BAA0B,GAAG,OAAO,gCAAgC,CAAC,KAAK,CAAC"}
|