typekro 0.7.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 +39 -7
- 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 +4 -4
- package/dist/core/containers/build.d.ts.map +1 -1
- package/dist/core/containers/build.js +44 -16
- package/dist/core/containers/build.js.map +1 -1
- package/dist/core/containers/registries/types.d.ts +1 -1
- package/dist/core/containers/registries/types.d.ts.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 +136 -3
- package/dist/core/deployment/kro-factory.d.ts.map +1 -1
- package/dist/core/deployment/kro-factory.js +945 -268
- 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 +37 -3
- package/dist/core/expressions/composition/composition-analyzer-helpers.d.ts.map +1 -1
- package/dist/core/expressions/composition/composition-analyzer-helpers.js +370 -7
- 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 +264 -29
- 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 +78 -6
- package/dist/core/expressions/composition/composition-analyzer-traversal.js.map +1 -1
- package/dist/core/expressions/composition/composition-analyzer-types.d.ts +60 -0
- package/dist/core/expressions/composition/composition-analyzer-types.d.ts.map +1 -1
- package/dist/core/expressions/composition/composition-analyzer.d.ts +1 -1
- package/dist/core/expressions/composition/composition-analyzer.d.ts.map +1 -1
- package/dist/core/expressions/composition/composition-analyzer.js +158 -8
- 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 +70 -0
- package/dist/core/references/cel.d.ts.map +1 -1
- package/dist/core/references/cel.js +188 -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 +723 -145
- package/dist/core/serialization/cel-references.js.map +1 -1
- package/dist/core/serialization/core.d.ts +13 -8
- package/dist/core/serialization/core.d.ts.map +1 -1
- package/dist/core/serialization/core.js +973 -12
- package/dist/core/serialization/core.js.map +1 -1
- package/dist/core/serialization/kro-post-processing.d.ts +46 -0
- package/dist/core/serialization/kro-post-processing.d.ts.map +1 -0
- package/dist/core/serialization/kro-post-processing.js +150 -0
- package/dist/core/serialization/kro-post-processing.js.map +1 -0
- package/dist/core/serialization/schema.d.ts +62 -3
- package/dist/core/serialization/schema.d.ts.map +1 -1
- package/dist/core/serialization/schema.js +819 -6
- 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 +404 -56
- 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 +62 -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/config/secret.js +11 -1
- package/dist/factories/kubernetes/config/secret.js.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/index.d.ts +2 -0
- package/dist/factories/searxng/compositions/index.d.ts.map +1 -0
- package/dist/factories/searxng/compositions/index.js +2 -0
- package/dist/factories/searxng/compositions/index.js.map +1 -0
- package/dist/factories/searxng/compositions/searxng-bootstrap.d.ts +66 -0
- package/dist/factories/searxng/compositions/searxng-bootstrap.d.ts.map +1 -0
- package/dist/factories/searxng/compositions/searxng-bootstrap.js +275 -0
- package/dist/factories/searxng/compositions/searxng-bootstrap.js.map +1 -0
- package/dist/factories/searxng/index.d.ts +29 -0
- package/dist/factories/searxng/index.d.ts.map +1 -0
- package/dist/factories/searxng/index.js +27 -0
- package/dist/factories/searxng/index.js.map +1 -0
- package/dist/factories/searxng/resources/index.d.ts +2 -0
- package/dist/factories/searxng/resources/index.d.ts.map +1 -0
- package/dist/factories/searxng/resources/index.js +2 -0
- package/dist/factories/searxng/resources/index.js.map +1 -0
- package/dist/factories/searxng/resources/searxng.d.ts +65 -0
- package/dist/factories/searxng/resources/searxng.d.ts.map +1 -0
- package/dist/factories/searxng/resources/searxng.js +188 -0
- package/dist/factories/searxng/resources/searxng.js.map +1 -0
- package/dist/factories/searxng/types.d.ts +127 -0
- package/dist/factories/searxng/types.d.ts.map +1 -0
- package/dist/factories/searxng/types.js +177 -0
- package/dist/factories/searxng/types.js.map +1 -0
- package/dist/factories/searxng/utils/settings-builder.d.ts +47 -0
- package/dist/factories/searxng/utils/settings-builder.d.ts.map +1 -0
- package/dist/factories/searxng/utils/settings-builder.js +53 -0
- package/dist/factories/searxng/utils/settings-builder.js.map +1 -0
- 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/config/secret.js +28 -0
- package/dist/factories/simple/config/secret.js.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 +95 -12
- package/dist/factories/webapp/compositions/web-app-with-processing.d.ts.map +1 -1
- package/dist/factories/webapp/compositions/web-app-with-processing.js +185 -26
- 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 +7 -2
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SearXNG Deployment Factory
|
|
3
|
+
*
|
|
4
|
+
* Creates a SearXNG Deployment with a mounted settings ConfigMap,
|
|
5
|
+
* health probes at /healthz, and optional environment variables.
|
|
6
|
+
* The secret_key is injected via SEARXNG_SECRET env var (not in ConfigMap).
|
|
7
|
+
*/
|
|
8
|
+
import type { CelExpression, Composable, Enhanced } from '../../../core/types/index.js';
|
|
9
|
+
import { type SearxngConfig, type SearxngStatus } from '../types.js';
|
|
10
|
+
/**
|
|
11
|
+
* Relaxed spec type for the factory. The ArkType schema constrains
|
|
12
|
+
* `secretKeyRef.name` and `secretKeyRef.key` to plain strings, but the
|
|
13
|
+
* bootstrap composition needs to pass `CelExpression<string>` values in
|
|
14
|
+
* KRO mode (where the field values are CEL ternaries that KRO evaluates
|
|
15
|
+
* at reconcile time). At runtime `createResource` handles both concrete
|
|
16
|
+
* strings and CelExpression objects uniformly, so widening the type here
|
|
17
|
+
* is purely a TypeScript ergonomics fix — no runtime behavior change.
|
|
18
|
+
*/
|
|
19
|
+
type SearxngFactoryConfig = Omit<SearxngConfig, 'spec'> & {
|
|
20
|
+
spec: Omit<SearxngConfig['spec'], 'secretKeyRef'> & {
|
|
21
|
+
secretKeyRef?: {
|
|
22
|
+
name: string | CelExpression<string>;
|
|
23
|
+
key: string | CelExpression<string>;
|
|
24
|
+
};
|
|
25
|
+
};
|
|
26
|
+
};
|
|
27
|
+
/**
|
|
28
|
+
* Create a SearXNG Deployment resource.
|
|
29
|
+
*
|
|
30
|
+
* @example Recommended — mount an existing Secret via `secretKeyRef`
|
|
31
|
+
* ```typescript
|
|
32
|
+
* const search = searxng({
|
|
33
|
+
* name: 'my-searxng',
|
|
34
|
+
* namespace: 'search',
|
|
35
|
+
* spec: {
|
|
36
|
+
* instanceName: 'My Search',
|
|
37
|
+
* search: { formats: ['html', 'json'] },
|
|
38
|
+
* server: { limiter: false },
|
|
39
|
+
* // Secret is managed externally (Vault, external-secrets operator,
|
|
40
|
+
* // or created alongside this factory). The Deployment mounts
|
|
41
|
+
* // SEARXNG_SECRET via valueFrom.secretKeyRef — the plaintext
|
|
42
|
+
* // never enters the Deployment spec.
|
|
43
|
+
* secretKeyRef: { name: 'my-searxng-secret', key: 'secret_key' },
|
|
44
|
+
* },
|
|
45
|
+
* });
|
|
46
|
+
* ```
|
|
47
|
+
*
|
|
48
|
+
* @example Discouraged — plaintext `secret_key` in the config
|
|
49
|
+
* ```typescript
|
|
50
|
+
* // Works, but the secret appears in `kubectl get deploy -o yaml` as
|
|
51
|
+
* // Deployment.spec.template.spec.containers[0].env[].value. Prefer the
|
|
52
|
+
* // `secretKeyRef` path above or use the `searxngBootstrap` composition
|
|
53
|
+
* // which auto-creates a K8s Secret and wires it through for you.
|
|
54
|
+
* const search = searxng({
|
|
55
|
+
* name: 'my-searxng',
|
|
56
|
+
* spec: {
|
|
57
|
+
* server: { secret_key: process.env.SEARXNG_SECRET_KEY!, limiter: false },
|
|
58
|
+
* },
|
|
59
|
+
* });
|
|
60
|
+
* ```
|
|
61
|
+
*/
|
|
62
|
+
declare function createSearxngResource(config: Composable<SearxngFactoryConfig>): Enhanced<SearxngConfig['spec'], SearxngStatus>;
|
|
63
|
+
export declare const searxng: typeof createSearxngResource;
|
|
64
|
+
export {};
|
|
65
|
+
//# sourceMappingURL=searxng.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"searxng.d.ts","sourceRoot":"","sources":["../../../../src/factories/searxng/resources/searxng.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,KAAK,EACV,aAAa,EACb,UAAU,EACV,QAAQ,EAET,MAAM,8BAA8B,CAAC;AAItC,OAAO,EAGL,KAAK,aAAa,EAClB,KAAK,aAAa,EACnB,MAAM,aAAa,CAAC;AAErB;;;;;;;;GAQG;AACH,KAAK,oBAAoB,GAAG,IAAI,CAAC,aAAa,EAAE,MAAM,CAAC,GAAG;IACxD,IAAI,EAAE,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE,cAAc,CAAC,GAAG;QAClD,YAAY,CAAC,EAAE;YACb,IAAI,EAAE,MAAM,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC;YACrC,GAAG,EAAE,MAAM,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC;SACrC,CAAC;KACH,CAAC;CACH,CAAC;AA6BF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AACH,iBAAS,qBAAqB,CAC5B,MAAM,EAAE,UAAU,CAAC,oBAAoB,CAAC,GACvC,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE,aAAa,CAAC,CA6HhD;AAED,eAAO,MAAM,OAAO,8BAAwB,CAAC"}
|
|
@@ -0,0 +1,188 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SearXNG Deployment Factory
|
|
3
|
+
*
|
|
4
|
+
* Creates a SearXNG Deployment with a mounted settings ConfigMap,
|
|
5
|
+
* health probes at /healthz, and optional environment variables.
|
|
6
|
+
* The secret_key is injected via SEARXNG_SECRET env var (not in ConfigMap).
|
|
7
|
+
*/
|
|
8
|
+
import { getComponentLogger } from '../../../core/logging/index.js';
|
|
9
|
+
import { createResource } from '../../shared.js';
|
|
10
|
+
const readinessLogger = getComponentLogger('searxng-readiness');
|
|
11
|
+
import { DEFAULT_SEARXNG_IMAGE, DEFAULT_SEARXNG_PORT, } from '../types.js';
|
|
12
|
+
function searxngReadinessEvaluator(liveResource) {
|
|
13
|
+
try {
|
|
14
|
+
const resource = liveResource;
|
|
15
|
+
const desired = resource.spec?.replicas ?? 1;
|
|
16
|
+
const ready = resource.status?.readyReplicas ?? 0;
|
|
17
|
+
if (ready >= desired) {
|
|
18
|
+
return { ready: true, reason: 'DeploymentReady', message: `${ready}/${desired} replicas ready` };
|
|
19
|
+
}
|
|
20
|
+
return { ready: false, reason: 'ReplicasNotReady', message: `${ready}/${desired} replicas ready` };
|
|
21
|
+
}
|
|
22
|
+
catch (err) {
|
|
23
|
+
// Log the underlying error at debug level for diagnosability — the
|
|
24
|
+
// generic "EvaluationError" message is what the deployment engine
|
|
25
|
+
// surfaces to the user, but the actual cause (bad shape, type
|
|
26
|
+
// coercion failure, etc.) is only useful during debugging.
|
|
27
|
+
readinessLogger.debug('SearXNG readiness evaluation threw', {
|
|
28
|
+
error: err instanceof Error ? err.message : String(err),
|
|
29
|
+
stack: err instanceof Error ? err.stack : undefined,
|
|
30
|
+
});
|
|
31
|
+
return { ready: false, reason: 'EvaluationError', message: 'Failed to evaluate SearXNG readiness' };
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Create a SearXNG Deployment resource.
|
|
36
|
+
*
|
|
37
|
+
* @example Recommended — mount an existing Secret via `secretKeyRef`
|
|
38
|
+
* ```typescript
|
|
39
|
+
* const search = searxng({
|
|
40
|
+
* name: 'my-searxng',
|
|
41
|
+
* namespace: 'search',
|
|
42
|
+
* spec: {
|
|
43
|
+
* instanceName: 'My Search',
|
|
44
|
+
* search: { formats: ['html', 'json'] },
|
|
45
|
+
* server: { limiter: false },
|
|
46
|
+
* // Secret is managed externally (Vault, external-secrets operator,
|
|
47
|
+
* // or created alongside this factory). The Deployment mounts
|
|
48
|
+
* // SEARXNG_SECRET via valueFrom.secretKeyRef — the plaintext
|
|
49
|
+
* // never enters the Deployment spec.
|
|
50
|
+
* secretKeyRef: { name: 'my-searxng-secret', key: 'secret_key' },
|
|
51
|
+
* },
|
|
52
|
+
* });
|
|
53
|
+
* ```
|
|
54
|
+
*
|
|
55
|
+
* @example Discouraged — plaintext `secret_key` in the config
|
|
56
|
+
* ```typescript
|
|
57
|
+
* // Works, but the secret appears in `kubectl get deploy -o yaml` as
|
|
58
|
+
* // Deployment.spec.template.spec.containers[0].env[].value. Prefer the
|
|
59
|
+
* // `secretKeyRef` path above or use the `searxngBootstrap` composition
|
|
60
|
+
* // which auto-creates a K8s Secret and wires it through for you.
|
|
61
|
+
* const search = searxng({
|
|
62
|
+
* name: 'my-searxng',
|
|
63
|
+
* spec: {
|
|
64
|
+
* server: { secret_key: process.env.SEARXNG_SECRET_KEY!, limiter: false },
|
|
65
|
+
* },
|
|
66
|
+
* });
|
|
67
|
+
* ```
|
|
68
|
+
*/
|
|
69
|
+
function createSearxngResource(config) {
|
|
70
|
+
const image = config.spec.image ?? DEFAULT_SEARXNG_IMAGE;
|
|
71
|
+
const replicas = config.spec.replicas ?? 1;
|
|
72
|
+
const port = DEFAULT_SEARXNG_PORT;
|
|
73
|
+
const configMapName = config.spec.configMapName ?? `${config.name}-config`;
|
|
74
|
+
const env = [];
|
|
75
|
+
if (config.spec.instanceName) {
|
|
76
|
+
env.push({ name: 'INSTANCE_NAME', value: config.spec.instanceName });
|
|
77
|
+
}
|
|
78
|
+
if (config.spec.baseUrl) {
|
|
79
|
+
env.push({ name: 'BASE_URL', value: config.spec.baseUrl });
|
|
80
|
+
}
|
|
81
|
+
// SEARXNG_SECRET delivery — secret_key is NEVER written into the ConfigMap.
|
|
82
|
+
//
|
|
83
|
+
// Precedence:
|
|
84
|
+
// 1. secretKeyRef — mount an existing K8s Secret via valueFrom.secretKeyRef.
|
|
85
|
+
// This is the recommended production path: the secret never appears
|
|
86
|
+
// in Deployment spec, pod env dumps, or `kubectl get deploy -o yaml`.
|
|
87
|
+
// The bootstrap composition always uses this path.
|
|
88
|
+
// 2. server.secret_key (plaintext) — fallback for direct-mode callers who
|
|
89
|
+
// manage their own secret injection. Insecure: appears in
|
|
90
|
+
// Deployment.spec.template.spec.containers[].env[].value. Logged with
|
|
91
|
+
// a deprecation warning below; prefer secretKeyRef in new code.
|
|
92
|
+
if (config.spec.secretKeyRef) {
|
|
93
|
+
env.push({
|
|
94
|
+
name: 'SEARXNG_SECRET',
|
|
95
|
+
valueFrom: {
|
|
96
|
+
secretKeyRef: {
|
|
97
|
+
name: config.spec.secretKeyRef.name,
|
|
98
|
+
key: config.spec.secretKeyRef.key,
|
|
99
|
+
},
|
|
100
|
+
},
|
|
101
|
+
});
|
|
102
|
+
}
|
|
103
|
+
else if (config.spec.server?.secret_key) {
|
|
104
|
+
env.push({ name: 'SEARXNG_SECRET', value: config.spec.server.secret_key });
|
|
105
|
+
}
|
|
106
|
+
if (config.spec.env) {
|
|
107
|
+
for (const [key, value] of Object.entries(config.spec.env)) {
|
|
108
|
+
env.push({ name: key, value });
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
return createResource({
|
|
112
|
+
apiVersion: 'apps/v1',
|
|
113
|
+
kind: 'Deployment',
|
|
114
|
+
metadata: {
|
|
115
|
+
name: config.name,
|
|
116
|
+
...(config.namespace && { namespace: config.namespace }),
|
|
117
|
+
labels: {
|
|
118
|
+
'app.kubernetes.io/name': 'searxng',
|
|
119
|
+
'app.kubernetes.io/instance': config.name,
|
|
120
|
+
'app.kubernetes.io/managed-by': 'typekro',
|
|
121
|
+
},
|
|
122
|
+
},
|
|
123
|
+
spec: {
|
|
124
|
+
replicas,
|
|
125
|
+
selector: {
|
|
126
|
+
matchLabels: {
|
|
127
|
+
'app.kubernetes.io/name': 'searxng',
|
|
128
|
+
'app.kubernetes.io/instance': config.name,
|
|
129
|
+
},
|
|
130
|
+
},
|
|
131
|
+
template: {
|
|
132
|
+
metadata: {
|
|
133
|
+
labels: {
|
|
134
|
+
'app.kubernetes.io/name': 'searxng',
|
|
135
|
+
'app.kubernetes.io/instance': config.name,
|
|
136
|
+
},
|
|
137
|
+
},
|
|
138
|
+
spec: {
|
|
139
|
+
containers: [
|
|
140
|
+
{
|
|
141
|
+
name: 'searxng',
|
|
142
|
+
image,
|
|
143
|
+
...(config.spec.imagePullPolicy && { imagePullPolicy: config.spec.imagePullPolicy }),
|
|
144
|
+
ports: [{ name: 'http', containerPort: port, protocol: 'TCP' }],
|
|
145
|
+
...(env.length > 0 && { env }),
|
|
146
|
+
...(config.spec.resources && { resources: config.spec.resources }),
|
|
147
|
+
volumeMounts: [
|
|
148
|
+
{
|
|
149
|
+
name: 'searxng-config',
|
|
150
|
+
mountPath: '/etc/searxng/settings.yml',
|
|
151
|
+
subPath: 'settings.yml',
|
|
152
|
+
readOnly: true,
|
|
153
|
+
},
|
|
154
|
+
],
|
|
155
|
+
// SearXNG takes 10-20s to initialize engines.
|
|
156
|
+
// Use startupProbe to avoid premature liveness kills.
|
|
157
|
+
startupProbe: {
|
|
158
|
+
httpGet: { path: '/healthz', port: 'http' },
|
|
159
|
+
initialDelaySeconds: 5,
|
|
160
|
+
periodSeconds: 5,
|
|
161
|
+
failureThreshold: 6,
|
|
162
|
+
},
|
|
163
|
+
livenessProbe: {
|
|
164
|
+
httpGet: { path: '/healthz', port: 'http' },
|
|
165
|
+
periodSeconds: 10,
|
|
166
|
+
},
|
|
167
|
+
readinessProbe: {
|
|
168
|
+
httpGet: { path: '/healthz', port: 'http' },
|
|
169
|
+
periodSeconds: 5,
|
|
170
|
+
},
|
|
171
|
+
},
|
|
172
|
+
],
|
|
173
|
+
volumes: [
|
|
174
|
+
{
|
|
175
|
+
name: 'searxng-config',
|
|
176
|
+
configMap: { name: configMapName },
|
|
177
|
+
},
|
|
178
|
+
],
|
|
179
|
+
...(config.spec.nodeSelector && { nodeSelector: config.spec.nodeSelector }),
|
|
180
|
+
...(config.spec.tolerations && { tolerations: config.spec.tolerations }),
|
|
181
|
+
},
|
|
182
|
+
},
|
|
183
|
+
},
|
|
184
|
+
...(config.id && { id: config.id }),
|
|
185
|
+
}, { scope: 'namespaced' }).withReadinessEvaluator(searxngReadinessEvaluator);
|
|
186
|
+
}
|
|
187
|
+
export const searxng = createSearxngResource;
|
|
188
|
+
//# sourceMappingURL=searxng.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"searxng.js","sourceRoot":"","sources":["../../../../src/factories/searxng/resources/searxng.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AAOpE,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAEjD,MAAM,eAAe,GAAG,kBAAkB,CAAC,mBAAmB,CAAC,CAAC;AAChE,OAAO,EACL,qBAAqB,EACrB,oBAAoB,GAGrB,MAAM,aAAa,CAAC;AAoBrB,SAAS,yBAAyB,CAAC,YAAqB;IACtD,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,YAGhB,CAAC;QAEF,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAI,EAAE,QAAQ,IAAI,CAAC,CAAC;QAC7C,MAAM,KAAK,GAAG,QAAQ,CAAC,MAAM,EAAE,aAAa,IAAI,CAAC,CAAC;QAElD,IAAI,KAAK,IAAI,OAAO,EAAE,CAAC;YACrB,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,iBAAiB,EAAE,OAAO,EAAE,GAAG,KAAK,IAAI,OAAO,iBAAiB,EAAE,CAAC;QACnG,CAAC;QACD,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,kBAAkB,EAAE,OAAO,EAAE,GAAG,KAAK,IAAI,OAAO,iBAAiB,EAAE,CAAC;IACrG,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,mEAAmE;QACnE,kEAAkE;QAClE,8DAA8D;QAC9D,2DAA2D;QAC3D,eAAe,CAAC,KAAK,CAAC,oCAAoC,EAAE;YAC1D,KAAK,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;YACvD,KAAK,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS;SACpD,CAAC,CAAC;QACH,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,iBAAiB,EAAE,OAAO,EAAE,sCAAsC,EAAE,CAAC;IACtG,CAAC;AACH,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AACH,SAAS,qBAAqB,CAC5B,MAAwC;IAExC,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,IAAI,qBAAqB,CAAC;IACzD,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,CAAC;IAC3C,MAAM,IAAI,GAAG,oBAAoB,CAAC;IAClC,MAAM,aAAa,GAAG,MAAM,CAAC,IAAI,CAAC,aAAa,IAAI,GAAG,MAAM,CAAC,IAAI,SAAS,CAAC;IAE3E,MAAM,GAAG,GAAiE,EAAE,CAAC;IAE7E,IAAI,MAAM,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;QAC7B,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,eAAe,EAAE,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC;IACvE,CAAC;IACD,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;QACxB,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;IAC7D,CAAC;IACD,4EAA4E;IAC5E,EAAE;IACF,cAAc;IACd,+EAA+E;IAC/E,yEAAyE;IACzE,2EAA2E;IAC3E,wDAAwD;IACxD,4EAA4E;IAC5E,+DAA+D;IAC/D,2EAA2E;IAC3E,qEAAqE;IACrE,IAAI,MAAM,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;QAC7B,GAAG,CAAC,IAAI,CAAC;YACP,IAAI,EAAE,gBAAgB;YACtB,SAAS,EAAE;gBACT,YAAY,EAAE;oBACZ,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI;oBACnC,GAAG,EAAE,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG;iBAClC;aACF;SACF,CAAC,CAAC;IACL,CAAC;SAAM,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,UAAU,EAAE,CAAC;QAC1C,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,gBAAgB,EAAE,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC;IAC7E,CAAC;IACD,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;QACpB,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;YAC3D,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC;QACjC,CAAC;IACH,CAAC;IAED,OAAO,cAAc,CACnB;QACE,UAAU,EAAE,SAAS;QACrB,IAAI,EAAE,YAAY;QAClB,QAAQ,EAAE;YACR,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,GAAG,CAAC,MAAM,CAAC,SAAS,IAAI,EAAE,SAAS,EAAE,MAAM,CAAC,SAAS,EAAE,CAAC;YACxD,MAAM,EAAE;gBACN,wBAAwB,EAAE,SAAS;gBACnC,4BAA4B,EAAE,MAAM,CAAC,IAAI;gBACzC,8BAA8B,EAAE,SAAS;aAC1C;SACF;QACD,IAAI,EAAE;YACJ,QAAQ;YACR,QAAQ,EAAE;gBACR,WAAW,EAAE;oBACX,wBAAwB,EAAE,SAAS;oBACnC,4BAA4B,EAAE,MAAM,CAAC,IAAI;iBAC1C;aACF;YACD,QAAQ,EAAE;gBACR,QAAQ,EAAE;oBACR,MAAM,EAAE;wBACN,wBAAwB,EAAE,SAAS;wBACnC,4BAA4B,EAAE,MAAM,CAAC,IAAI;qBAC1C;iBACF;gBACD,IAAI,EAAE;oBACJ,UAAU,EAAE;wBACV;4BACE,IAAI,EAAE,SAAS;4BACf,KAAK;4BACL,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,eAAe,IAAI,EAAE,eAAe,EAAE,MAAM,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC;4BACpF,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,aAAa,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;4BAC/D,GAAG,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC;4BAC9B,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,IAAI,EAAE,SAAS,EAAE,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;4BAClE,YAAY,EAAE;gCACZ;oCACE,IAAI,EAAE,gBAAgB;oCACtB,SAAS,EAAE,2BAA2B;oCACtC,OAAO,EAAE,cAAc;oCACvB,QAAQ,EAAE,IAAI;iCACf;6BACF;4BACD,8CAA8C;4BAC9C,sDAAsD;4BACtD,YAAY,EAAE;gCACZ,OAAO,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,EAAE;gCAC3C,mBAAmB,EAAE,CAAC;gCACtB,aAAa,EAAE,CAAC;gCAChB,gBAAgB,EAAE,CAAC;6BACpB;4BACD,aAAa,EAAE;gCACb,OAAO,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,EAAE;gCAC3C,aAAa,EAAE,EAAE;6BAClB;4BACD,cAAc,EAAE;gCACd,OAAO,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,EAAE;gCAC3C,aAAa,EAAE,CAAC;6BACjB;yBACF;qBACF;oBACD,OAAO,EAAE;wBACP;4BACE,IAAI,EAAE,gBAAgB;4BACtB,SAAS,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE;yBACnC;qBACF;oBACD,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,IAAI,EAAE,YAAY,EAAE,MAAM,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;oBAC3E,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,IAAI,EAAE,WAAW,EAAE,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;iBACzE;aACF;SACF;QACD,GAAG,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC;KACpC,EACD,EAAE,KAAK,EAAE,YAAY,EAAE,CACxB,CAAC,sBAAsB,CAAC,yBAAyB,CAGjD,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,MAAM,OAAO,GAAG,qBAAqB,CAAC"}
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SearXNG Types
|
|
3
|
+
*
|
|
4
|
+
* Schema-first type definitions for the SearXNG metasearch engine integration.
|
|
5
|
+
* Config types are inferred from ArkType schemas. Status types are interfaces
|
|
6
|
+
* representing K8s API responses.
|
|
7
|
+
*
|
|
8
|
+
* SearXNG is a privacy-respecting metasearch engine that aggregates results
|
|
9
|
+
* from multiple search providers. It runs as a single container with a
|
|
10
|
+
* YAML configuration file.
|
|
11
|
+
*
|
|
12
|
+
* @module
|
|
13
|
+
*/
|
|
14
|
+
export declare const SearxngConfigSchema: import("arktype/internal/variants/object.ts").ObjectType<{
|
|
15
|
+
name: string;
|
|
16
|
+
spec: {
|
|
17
|
+
image?: string;
|
|
18
|
+
imagePullPolicy?: "Always" | "IfNotPresent" | "Never";
|
|
19
|
+
replicas?: number;
|
|
20
|
+
instanceName?: string;
|
|
21
|
+
baseUrl?: string;
|
|
22
|
+
configMapName?: string;
|
|
23
|
+
server?: {
|
|
24
|
+
secret_key?: string;
|
|
25
|
+
limiter?: boolean;
|
|
26
|
+
bind_address?: string;
|
|
27
|
+
method?: string;
|
|
28
|
+
};
|
|
29
|
+
secretKeyRef?: {
|
|
30
|
+
name: string;
|
|
31
|
+
key: string;
|
|
32
|
+
};
|
|
33
|
+
search?: {
|
|
34
|
+
formats?: string[];
|
|
35
|
+
default_lang?: string;
|
|
36
|
+
autocomplete?: string;
|
|
37
|
+
safe_search?: 0 | 1 | 2;
|
|
38
|
+
};
|
|
39
|
+
redisUrl?: string;
|
|
40
|
+
env?: Record<string, string>;
|
|
41
|
+
resources?: {
|
|
42
|
+
requests?: {
|
|
43
|
+
cpu?: string;
|
|
44
|
+
memory?: string;
|
|
45
|
+
};
|
|
46
|
+
limits?: {
|
|
47
|
+
cpu?: string;
|
|
48
|
+
memory?: string;
|
|
49
|
+
};
|
|
50
|
+
};
|
|
51
|
+
nodeSelector?: Record<string, string>;
|
|
52
|
+
tolerations?: {
|
|
53
|
+
key?: string;
|
|
54
|
+
operator?: "Exists" | "Equal";
|
|
55
|
+
value?: string;
|
|
56
|
+
effect?: "NoSchedule" | "PreferNoSchedule" | "NoExecute";
|
|
57
|
+
}[];
|
|
58
|
+
};
|
|
59
|
+
namespace?: string;
|
|
60
|
+
id?: string;
|
|
61
|
+
}, {}>;
|
|
62
|
+
export type SearxngConfig = typeof SearxngConfigSchema.infer;
|
|
63
|
+
export interface SearxngStatus {
|
|
64
|
+
/** Whether the deployment is ready. */
|
|
65
|
+
ready?: boolean;
|
|
66
|
+
/** Number of ready replicas. */
|
|
67
|
+
readyReplicas?: number;
|
|
68
|
+
/** Number of desired replicas. */
|
|
69
|
+
replicas?: number;
|
|
70
|
+
/** Standard K8s conditions. */
|
|
71
|
+
conditions?: Array<{
|
|
72
|
+
type: string;
|
|
73
|
+
status: string;
|
|
74
|
+
message?: string;
|
|
75
|
+
}>;
|
|
76
|
+
}
|
|
77
|
+
export declare const SearxngBootstrapConfigSchema: import("arktype/internal/variants/object.ts").ObjectType<{
|
|
78
|
+
name: string;
|
|
79
|
+
namespace?: string;
|
|
80
|
+
enabled?: boolean;
|
|
81
|
+
image?: string;
|
|
82
|
+
replicas?: number;
|
|
83
|
+
instanceName?: string;
|
|
84
|
+
baseUrl?: string;
|
|
85
|
+
server?: {
|
|
86
|
+
secret_key?: string;
|
|
87
|
+
limiter?: boolean;
|
|
88
|
+
bind_address?: string;
|
|
89
|
+
method?: string;
|
|
90
|
+
};
|
|
91
|
+
secretKeyRef?: {
|
|
92
|
+
name: string;
|
|
93
|
+
key: string;
|
|
94
|
+
};
|
|
95
|
+
search?: {
|
|
96
|
+
formats?: string[];
|
|
97
|
+
default_lang?: string;
|
|
98
|
+
autocomplete?: string;
|
|
99
|
+
safe_search?: 0 | 1 | 2;
|
|
100
|
+
};
|
|
101
|
+
redisUrl?: string;
|
|
102
|
+
settingsYaml?: string;
|
|
103
|
+
env?: Record<string, string>;
|
|
104
|
+
resources?: {
|
|
105
|
+
requests?: {
|
|
106
|
+
cpu?: string;
|
|
107
|
+
memory?: string;
|
|
108
|
+
};
|
|
109
|
+
limits?: {
|
|
110
|
+
cpu?: string;
|
|
111
|
+
memory?: string;
|
|
112
|
+
};
|
|
113
|
+
};
|
|
114
|
+
}, {}>;
|
|
115
|
+
export type SearxngBootstrapConfig = typeof SearxngBootstrapConfigSchema.infer;
|
|
116
|
+
export declare const SearxngBootstrapStatusSchema: import("arktype/internal/variants/object.ts").ObjectType<{
|
|
117
|
+
ready: boolean;
|
|
118
|
+
phase: "Ready" | "Installing" | "Disabled";
|
|
119
|
+
failed: boolean;
|
|
120
|
+
url: string;
|
|
121
|
+
}, {}>;
|
|
122
|
+
export type SearxngBootstrapStatus = typeof SearxngBootstrapStatusSchema.infer;
|
|
123
|
+
/** Default SearXNG image. Pinned to a specific version to avoid breaking config changes. */
|
|
124
|
+
export declare const DEFAULT_SEARXNG_IMAGE = "searxng/searxng:2026.3.29-7ac4ff39f";
|
|
125
|
+
/** Default SearXNG port. */
|
|
126
|
+
export declare const DEFAULT_SEARXNG_PORT = 8080;
|
|
127
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/factories/searxng/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAoCH,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAiE9B,CAAC;AAEH,MAAM,MAAM,aAAa,GAAG,OAAO,mBAAmB,CAAC,KAAK,CAAC;AAM7D,MAAM,WAAW,aAAa;IAC5B,uCAAuC;IACvC,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,gCAAgC;IAChC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,kCAAkC;IAClC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,+BAA+B;IAC/B,UAAU,CAAC,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACxE;AAMD,eAAO,MAAM,4BAA4B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAqDvC,CAAC;AAEH,MAAM,MAAM,sBAAsB,GAAG,OAAO,4BAA4B,CAAC,KAAK,CAAC;AAE/E,eAAO,MAAM,4BAA4B;;;;;MAMvC,CAAC;AAEH,MAAM,MAAM,sBAAsB,GAAG,OAAO,4BAA4B,CAAC,KAAK,CAAC;AAE/E,4FAA4F;AAC5F,eAAO,MAAM,qBAAqB,wCAAwC,CAAC;AAE3E,4BAA4B;AAC5B,eAAO,MAAM,oBAAoB,OAAO,CAAC"}
|
|
@@ -0,0 +1,177 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SearXNG Types
|
|
3
|
+
*
|
|
4
|
+
* Schema-first type definitions for the SearXNG metasearch engine integration.
|
|
5
|
+
* Config types are inferred from ArkType schemas. Status types are interfaces
|
|
6
|
+
* representing K8s API responses.
|
|
7
|
+
*
|
|
8
|
+
* SearXNG is a privacy-respecting metasearch engine that aggregates results
|
|
9
|
+
* from multiple search providers. It runs as a single container with a
|
|
10
|
+
* YAML configuration file.
|
|
11
|
+
*
|
|
12
|
+
* @module
|
|
13
|
+
*/
|
|
14
|
+
import { type } from 'arktype';
|
|
15
|
+
// ============================================================================
|
|
16
|
+
// Shared schema shapes
|
|
17
|
+
// ============================================================================
|
|
18
|
+
/** SearXNG server configuration shape. */
|
|
19
|
+
const serverConfigShape = {
|
|
20
|
+
/** Secret key for session encryption. */
|
|
21
|
+
'secret_key?': 'string',
|
|
22
|
+
/** Enable/disable the built-in rate limiter. */
|
|
23
|
+
'limiter?': 'boolean',
|
|
24
|
+
/** Bind address (default: '0.0.0.0:8080'). */
|
|
25
|
+
'bind_address?': 'string',
|
|
26
|
+
/** HTTP method (default: 'GET'). */
|
|
27
|
+
'method?': 'string',
|
|
28
|
+
};
|
|
29
|
+
/** SearXNG search configuration shape. */
|
|
30
|
+
const searchConfigShape = {
|
|
31
|
+
/** Enabled response formats. */
|
|
32
|
+
'formats?': 'string[]',
|
|
33
|
+
/** Default language. */
|
|
34
|
+
'default_lang?': 'string',
|
|
35
|
+
/** Autocomplete provider (e.g., 'google', 'duckduckgo', false to disable). */
|
|
36
|
+
'autocomplete?': 'string',
|
|
37
|
+
/** Safe search level (0=off, 1=moderate, 2=strict). */
|
|
38
|
+
'safe_search?': '0 | 1 | 2',
|
|
39
|
+
};
|
|
40
|
+
// ============================================================================
|
|
41
|
+
// SearXNG Deployment Config
|
|
42
|
+
// ============================================================================
|
|
43
|
+
export const SearxngConfigSchema = type({
|
|
44
|
+
/** Resource name. */
|
|
45
|
+
name: 'string',
|
|
46
|
+
/** Target namespace. */
|
|
47
|
+
'namespace?': 'string',
|
|
48
|
+
/** Composition resource ID. */
|
|
49
|
+
'id?': 'string',
|
|
50
|
+
spec: {
|
|
51
|
+
/** Container image (default: 'searxng/searxng:2026.3.29-7ac4ff39f'). */
|
|
52
|
+
'image?': 'string',
|
|
53
|
+
/** Image pull policy. */
|
|
54
|
+
'imagePullPolicy?': '"Always" | "Never" | "IfNotPresent"',
|
|
55
|
+
/** Number of replicas (default: 1). */
|
|
56
|
+
'replicas?': 'number',
|
|
57
|
+
/** SearXNG instance name shown in the UI. */
|
|
58
|
+
'instanceName?': 'string',
|
|
59
|
+
/** Base URL for the instance (used for redirects/links). */
|
|
60
|
+
'baseUrl?': 'string',
|
|
61
|
+
/** ConfigMap name for settings (default: '{name}-config'). */
|
|
62
|
+
'configMapName?': 'string',
|
|
63
|
+
/**
|
|
64
|
+
* Server configuration. `secret_key` is NEVER written into the ConfigMap.
|
|
65
|
+
* The preferred delivery channel is `secretKeyRef` (below) which mounts
|
|
66
|
+
* an existing Secret via `valueFrom.secretKeyRef` — that keeps the key
|
|
67
|
+
* out of Deployment spec and pod descriptions. Passing a plaintext
|
|
68
|
+
* `secret_key` directly is supported for direct-mode callers who manage
|
|
69
|
+
* their own secrets, but it results in the value appearing in
|
|
70
|
+
* `Deployment.spec.template.spec.containers[].env[].value` which is
|
|
71
|
+
* visible to anyone with `kubectl get deployment -o yaml`. Prefer
|
|
72
|
+
* `secretKeyRef` in production.
|
|
73
|
+
*/
|
|
74
|
+
'server?': serverConfigShape,
|
|
75
|
+
/**
|
|
76
|
+
* Reference to an existing K8s Secret containing the SearXNG secret key.
|
|
77
|
+
* When set, the Deployment mounts `SEARXNG_SECRET` via
|
|
78
|
+
* `valueFrom.secretKeyRef` and any plaintext `server.secret_key` is
|
|
79
|
+
* ignored. This is the recommended production pattern — pair it with
|
|
80
|
+
* an external-secrets operator (Vault, AWS SM, etc.) or create the
|
|
81
|
+
* Secret separately.
|
|
82
|
+
*/
|
|
83
|
+
'secretKeyRef?': {
|
|
84
|
+
name: 'string',
|
|
85
|
+
key: 'string',
|
|
86
|
+
},
|
|
87
|
+
/** Search configuration. */
|
|
88
|
+
'search?': searchConfigShape,
|
|
89
|
+
/** Redis/Valkey URL for the built-in rate limiter (e.g., 'redis://valkey:6379/0'). */
|
|
90
|
+
'redisUrl?': 'string',
|
|
91
|
+
/** Additional environment variables. */
|
|
92
|
+
'env?': 'Record<string, string>',
|
|
93
|
+
/** Resource requests and limits. */
|
|
94
|
+
'resources?': {
|
|
95
|
+
'requests?': { 'cpu?': 'string', 'memory?': 'string' },
|
|
96
|
+
'limits?': { 'cpu?': 'string', 'memory?': 'string' },
|
|
97
|
+
},
|
|
98
|
+
/** Node selector for scheduling. */
|
|
99
|
+
'nodeSelector?': 'Record<string, string>',
|
|
100
|
+
/** Tolerations for scheduling. */
|
|
101
|
+
'tolerations?': type({
|
|
102
|
+
'key?': 'string',
|
|
103
|
+
'operator?': '"Exists" | "Equal"',
|
|
104
|
+
'value?': 'string',
|
|
105
|
+
'effect?': '"NoSchedule" | "PreferNoSchedule" | "NoExecute"',
|
|
106
|
+
}).array(),
|
|
107
|
+
},
|
|
108
|
+
});
|
|
109
|
+
// ============================================================================
|
|
110
|
+
// Bootstrap Composition Config
|
|
111
|
+
// ============================================================================
|
|
112
|
+
export const SearxngBootstrapConfigSchema = type({
|
|
113
|
+
/** Instance name. */
|
|
114
|
+
name: 'string',
|
|
115
|
+
/** Target namespace (default: 'searxng'). */
|
|
116
|
+
'namespace?': 'string',
|
|
117
|
+
/** Whether to create SearXNG resources (default: true). */
|
|
118
|
+
'enabled?': 'boolean',
|
|
119
|
+
/** Container image (default: 'searxng/searxng:2026.3.29-7ac4ff39f'). */
|
|
120
|
+
'image?': 'string',
|
|
121
|
+
/** Number of replicas (default: 1). */
|
|
122
|
+
'replicas?': 'number',
|
|
123
|
+
/** SearXNG instance name shown in the UI. */
|
|
124
|
+
'instanceName?': 'string',
|
|
125
|
+
/** Base URL for the instance. */
|
|
126
|
+
'baseUrl?': 'string',
|
|
127
|
+
/**
|
|
128
|
+
* Server configuration. When `secretKeyRef` is NOT provided, the bootstrap
|
|
129
|
+
* composition requires `server.secret_key`, creates a dedicated K8s Secret
|
|
130
|
+
* (`{name}-secret`), and mounts it via `valueFrom.secretKeyRef` on the
|
|
131
|
+
* Deployment.
|
|
132
|
+
*/
|
|
133
|
+
'server?': serverConfigShape,
|
|
134
|
+
/**
|
|
135
|
+
* Reference to a pre-existing K8s Secret containing the SearXNG secret
|
|
136
|
+
* key. Use this with external-secrets-operator, Vault, or any workflow
|
|
137
|
+
* where the Secret's lifecycle is managed outside TypeKro. When set,
|
|
138
|
+
* the bootstrap SKIPS creating its own Secret and wires the existing
|
|
139
|
+
* one through to the Deployment via `valueFrom.secretKeyRef`. In KRO
|
|
140
|
+
* mode this is resolved via `has(schema.spec.secretKeyRef)` so the
|
|
141
|
+
* user can decide per-instance whether to provide an external ref or
|
|
142
|
+
* fall back to the auto-created Secret.
|
|
143
|
+
*/
|
|
144
|
+
'secretKeyRef?': {
|
|
145
|
+
name: 'string',
|
|
146
|
+
key: 'string',
|
|
147
|
+
},
|
|
148
|
+
/** Search configuration. */
|
|
149
|
+
'search?': searchConfigShape,
|
|
150
|
+
/** Redis/Valkey URL for the built-in rate limiter (e.g., 'redis://valkey:6379/0'). */
|
|
151
|
+
'redisUrl?': 'string',
|
|
152
|
+
/**
|
|
153
|
+
* Complete settings.yml content as a string. When provided in direct mode,
|
|
154
|
+
* this overrides the auto-generated settings. Use buildSearxngSettings()
|
|
155
|
+
* or read from a file.
|
|
156
|
+
*/
|
|
157
|
+
'settingsYaml?': 'string',
|
|
158
|
+
/** Additional environment variables. */
|
|
159
|
+
'env?': 'Record<string, string>',
|
|
160
|
+
/** Resource requests and limits. */
|
|
161
|
+
'resources?': {
|
|
162
|
+
'requests?': { 'cpu?': 'string', 'memory?': 'string' },
|
|
163
|
+
'limits?': { 'cpu?': 'string', 'memory?': 'string' },
|
|
164
|
+
},
|
|
165
|
+
});
|
|
166
|
+
export const SearxngBootstrapStatusSchema = type({
|
|
167
|
+
ready: 'boolean',
|
|
168
|
+
phase: '"Ready" | "Installing" | "Disabled"',
|
|
169
|
+
failed: 'boolean',
|
|
170
|
+
/** The internal service URL. */
|
|
171
|
+
url: 'string',
|
|
172
|
+
});
|
|
173
|
+
/** Default SearXNG image. Pinned to a specific version to avoid breaking config changes. */
|
|
174
|
+
export const DEFAULT_SEARXNG_IMAGE = 'searxng/searxng:2026.3.29-7ac4ff39f';
|
|
175
|
+
/** Default SearXNG port. */
|
|
176
|
+
export const DEFAULT_SEARXNG_PORT = 8080;
|
|
177
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/factories/searxng/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SearXNG Settings Builder
|
|
3
|
+
*
|
|
4
|
+
* Constructs a settings.yml string from typed configuration fields.
|
|
5
|
+
* Pass the result as `settingsYaml` to the bootstrap composition in direct
|
|
6
|
+
* mode when you need full control over the generated ConfigMap. KRO mode
|
|
7
|
+
* ignores `settingsYaml` from the schema because it is a proxy reference, not
|
|
8
|
+
* a concrete string available at RGD generation time.
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
* ```typescript
|
|
12
|
+
* import { buildSearxngSettings } from 'typekro/searxng';
|
|
13
|
+
*
|
|
14
|
+
* const settings = buildSearxngSettings({
|
|
15
|
+
* server: { limiter: false },
|
|
16
|
+
* search: { formats: ['html', 'json'] },
|
|
17
|
+
* redisUrl: 'redis://valkey:6379/0',
|
|
18
|
+
* });
|
|
19
|
+
* // Returns a valid settings.yml string
|
|
20
|
+
* ```
|
|
21
|
+
*/
|
|
22
|
+
export interface SearxngSettingsInput {
|
|
23
|
+
/** Server configuration. secret_key is stripped (use SEARXNG_SECRET env var). */
|
|
24
|
+
server?: {
|
|
25
|
+
secret_key?: string;
|
|
26
|
+
limiter?: boolean;
|
|
27
|
+
bind_address?: string;
|
|
28
|
+
method?: string;
|
|
29
|
+
};
|
|
30
|
+
/** Search configuration. */
|
|
31
|
+
search?: {
|
|
32
|
+
formats?: string[];
|
|
33
|
+
default_lang?: string;
|
|
34
|
+
autocomplete?: string;
|
|
35
|
+
safe_search?: 0 | 1 | 2;
|
|
36
|
+
};
|
|
37
|
+
/** Redis/Valkey URL for the built-in rate limiter. */
|
|
38
|
+
redisUrl?: string;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Build a SearXNG settings.yml string from typed configuration.
|
|
42
|
+
*
|
|
43
|
+
* The secret_key is automatically stripped — it should be injected
|
|
44
|
+
* via the SEARXNG_SECRET environment variable, not stored in the ConfigMap.
|
|
45
|
+
*/
|
|
46
|
+
export declare function buildSearxngSettings(input: SearxngSettingsInput): string;
|
|
47
|
+
//# sourceMappingURL=settings-builder.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"settings-builder.d.ts","sourceRoot":"","sources":["../../../../src/factories/searxng/utils/settings-builder.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAIH,MAAM,WAAW,oBAAoB;IACnC,iFAAiF;IACjF,MAAM,CAAC,EAAE;QACP,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,OAAO,CAAC,EAAE,OAAO,CAAC;QAClB,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB,CAAC;IACF,4BAA4B;IAC5B,MAAM,CAAC,EAAE;QACP,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;QACnB,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,WAAW,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;KACzB,CAAC;IACF,sDAAsD;IACtD,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,oBAAoB,GAAG,MAAM,CA0BxE"}
|