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.
Files changed (532) hide show
  1. package/dist/.tsbuildinfo +1 -1
  2. package/dist/alchemy/deployers.d.ts +16 -1
  3. package/dist/alchemy/deployers.d.ts.map +1 -1
  4. package/dist/alchemy/deployers.js +131 -18
  5. package/dist/alchemy/deployers.js.map +1 -1
  6. package/dist/alchemy/deployment.d.ts +1 -1
  7. package/dist/alchemy/deployment.d.ts.map +1 -1
  8. package/dist/alchemy/deployment.js +1 -1
  9. package/dist/alchemy/deployment.js.map +1 -1
  10. package/dist/alchemy/kro-delete.d.ts +66 -0
  11. package/dist/alchemy/kro-delete.d.ts.map +1 -0
  12. package/dist/alchemy/kro-delete.js +183 -0
  13. package/dist/alchemy/kro-delete.js.map +1 -0
  14. package/dist/alchemy/resource-registration.d.ts +16 -0
  15. package/dist/alchemy/resource-registration.d.ts.map +1 -1
  16. package/dist/alchemy/resource-registration.js +138 -24
  17. package/dist/alchemy/resource-registration.js.map +1 -1
  18. package/dist/alchemy/types.d.ts +8 -4
  19. package/dist/alchemy/types.d.ts.map +1 -1
  20. package/dist/compositions/typekro-runtime/typekro-runtime.d.ts +1 -1
  21. package/dist/compositions/typekro-runtime/typekro-runtime.d.ts.map +1 -1
  22. package/dist/compositions/typekro-runtime/typekro-runtime.js +39 -7
  23. package/dist/compositions/typekro-runtime/typekro-runtime.js.map +1 -1
  24. package/dist/core/composition/context.d.ts +58 -2
  25. package/dist/core/composition/context.d.ts.map +1 -1
  26. package/dist/core/composition/context.js +4 -0
  27. package/dist/core/composition/context.js.map +1 -1
  28. package/dist/core/composition/imperative.d.ts +9 -0
  29. package/dist/core/composition/imperative.d.ts.map +1 -1
  30. package/dist/core/composition/imperative.js +538 -54
  31. package/dist/core/composition/imperative.js.map +1 -1
  32. package/dist/core/composition/nested-status-cel.d.ts +34 -1
  33. package/dist/core/composition/nested-status-cel.d.ts.map +1 -1
  34. package/dist/core/composition/nested-status-cel.js +379 -41
  35. package/dist/core/composition/nested-status-cel.js.map +1 -1
  36. package/dist/core/composition-debugger.d.ts +1 -1
  37. package/dist/core/composition-debugger.d.ts.map +1 -1
  38. package/dist/core/composition-debugger.js.map +1 -1
  39. package/dist/core/constants/brands.d.ts +1 -1
  40. package/dist/core/constants/brands.d.ts.map +1 -1
  41. package/dist/core/constants/brands.js +1 -1
  42. package/dist/core/constants/brands.js.map +1 -1
  43. package/dist/core/containers/build.d.ts +4 -4
  44. package/dist/core/containers/build.d.ts.map +1 -1
  45. package/dist/core/containers/build.js +44 -16
  46. package/dist/core/containers/build.js.map +1 -1
  47. package/dist/core/containers/registries/types.d.ts +1 -1
  48. package/dist/core/containers/registries/types.d.ts.map +1 -1
  49. package/dist/core/dependencies/resolver.d.ts +19 -0
  50. package/dist/core/dependencies/resolver.d.ts.map +1 -1
  51. package/dist/core/dependencies/resolver.js +261 -1
  52. package/dist/core/dependencies/resolver.js.map +1 -1
  53. package/dist/core/deployment/client-provider-manager.d.ts +9 -3
  54. package/dist/core/deployment/client-provider-manager.d.ts.map +1 -1
  55. package/dist/core/deployment/client-provider-manager.js +12 -0
  56. package/dist/core/deployment/client-provider-manager.js.map +1 -1
  57. package/dist/core/deployment/crd-manager.d.ts +24 -0
  58. package/dist/core/deployment/crd-manager.d.ts.map +1 -1
  59. package/dist/core/deployment/crd-manager.js +79 -1
  60. package/dist/core/deployment/crd-manager.js.map +1 -1
  61. package/dist/core/deployment/deployment-state-discovery.d.ts +116 -0
  62. package/dist/core/deployment/deployment-state-discovery.d.ts.map +1 -0
  63. package/dist/core/deployment/deployment-state-discovery.js +400 -0
  64. package/dist/core/deployment/deployment-state-discovery.js.map +1 -0
  65. package/dist/core/deployment/direct-factory.d.ts +65 -6
  66. package/dist/core/deployment/direct-factory.d.ts.map +1 -1
  67. package/dist/core/deployment/direct-factory.js +551 -56
  68. package/dist/core/deployment/direct-factory.js.map +1 -1
  69. package/dist/core/deployment/engine.d.ts +64 -3
  70. package/dist/core/deployment/engine.d.ts.map +1 -1
  71. package/dist/core/deployment/engine.js +194 -27
  72. package/dist/core/deployment/engine.js.map +1 -1
  73. package/dist/core/deployment/event-filter.js +1 -1
  74. package/dist/core/deployment/event-filter.js.map +1 -1
  75. package/dist/core/deployment/event-monitor.d.ts +11 -0
  76. package/dist/core/deployment/event-monitor.d.ts.map +1 -1
  77. package/dist/core/deployment/event-monitor.js +14 -0
  78. package/dist/core/deployment/event-monitor.js.map +1 -1
  79. package/dist/core/deployment/handle-tracing.d.ts +14 -0
  80. package/dist/core/deployment/handle-tracing.d.ts.map +1 -0
  81. package/dist/core/deployment/handle-tracing.js +38 -0
  82. package/dist/core/deployment/handle-tracing.js.map +1 -0
  83. package/dist/core/deployment/kro-factory.d.ts +136 -3
  84. package/dist/core/deployment/kro-factory.d.ts.map +1 -1
  85. package/dist/core/deployment/kro-factory.js +945 -268
  86. package/dist/core/deployment/kro-factory.js.map +1 -1
  87. package/dist/core/deployment/kro-readiness.d.ts.map +1 -1
  88. package/dist/core/deployment/kro-readiness.js +21 -12
  89. package/dist/core/deployment/kro-readiness.js.map +1 -1
  90. package/dist/core/deployment/nested-composition-status.d.ts +1 -1
  91. package/dist/core/deployment/nested-composition-status.d.ts.map +1 -1
  92. package/dist/core/deployment/nested-composition-status.js +96 -53
  93. package/dist/core/deployment/nested-composition-status.js.map +1 -1
  94. package/dist/core/deployment/resource-applier.d.ts +15 -2
  95. package/dist/core/deployment/resource-applier.d.ts.map +1 -1
  96. package/dist/core/deployment/resource-applier.js +75 -25
  97. package/dist/core/deployment/resource-applier.js.map +1 -1
  98. package/dist/core/deployment/resource-tagging.d.ts +220 -0
  99. package/dist/core/deployment/resource-tagging.d.ts.map +1 -0
  100. package/dist/core/deployment/resource-tagging.js +292 -0
  101. package/dist/core/deployment/resource-tagging.js.map +1 -0
  102. package/dist/core/deployment/rollback-manager.d.ts +25 -4
  103. package/dist/core/deployment/rollback-manager.d.ts.map +1 -1
  104. package/dist/core/deployment/rollback-manager.js +70 -57
  105. package/dist/core/deployment/rollback-manager.js.map +1 -1
  106. package/dist/core/deployment/shared-utilities.d.ts +6 -0
  107. package/dist/core/deployment/shared-utilities.d.ts.map +1 -1
  108. package/dist/core/deployment/shared-utilities.js +32 -2
  109. package/dist/core/deployment/shared-utilities.js.map +1 -1
  110. package/dist/core/deployment/singleton-owner-drift.d.ts +16 -0
  111. package/dist/core/deployment/singleton-owner-drift.d.ts.map +1 -0
  112. package/dist/core/deployment/singleton-owner-drift.js +54 -0
  113. package/dist/core/deployment/singleton-owner-drift.js.map +1 -0
  114. package/dist/core/deployment/strategies/alchemy-strategy.d.ts +3 -1
  115. package/dist/core/deployment/strategies/alchemy-strategy.d.ts.map +1 -1
  116. package/dist/core/deployment/strategies/alchemy-strategy.js +121 -18
  117. package/dist/core/deployment/strategies/alchemy-strategy.js.map +1 -1
  118. package/dist/core/deployment/strategies/base-strategy.d.ts +9 -3
  119. package/dist/core/deployment/strategies/base-strategy.d.ts.map +1 -1
  120. package/dist/core/deployment/strategies/base-strategy.js +32 -4
  121. package/dist/core/deployment/strategies/base-strategy.js.map +1 -1
  122. package/dist/core/deployment/strategies/direct-strategy.d.ts +12 -4
  123. package/dist/core/deployment/strategies/direct-strategy.d.ts.map +1 -1
  124. package/dist/core/deployment/strategies/direct-strategy.js +112 -8
  125. package/dist/core/deployment/strategies/direct-strategy.js.map +1 -1
  126. package/dist/core/errors.d.ts +2 -2
  127. package/dist/core/errors.d.ts.map +1 -1
  128. package/dist/core/errors.js.map +1 -1
  129. package/dist/core/expressions/analysis/cache.d.ts +2 -2
  130. package/dist/core/expressions/analysis/cache.d.ts.map +1 -1
  131. package/dist/core/expressions/analysis/cache.js +4 -0
  132. package/dist/core/expressions/analysis/cache.js.map +1 -1
  133. package/dist/core/expressions/analysis/fn-toString-self-test.d.ts.map +1 -1
  134. package/dist/core/expressions/analysis/fn-toString-self-test.js +0 -1
  135. package/dist/core/expressions/analysis/fn-toString-self-test.js.map +1 -1
  136. package/dist/core/expressions/analysis/shared-types.d.ts +2 -2
  137. package/dist/core/expressions/analysis/shared-types.d.ts.map +1 -1
  138. package/dist/core/expressions/analysis/source-map.d.ts.map +1 -1
  139. package/dist/core/expressions/analysis/source-map.js +1 -0
  140. package/dist/core/expressions/analysis/source-map.js.map +1 -1
  141. package/dist/core/expressions/analysis/types.d.ts +7 -7
  142. package/dist/core/expressions/analysis/types.d.ts.map +1 -1
  143. package/dist/core/expressions/composition/composition-analyzer-helpers.d.ts +37 -3
  144. package/dist/core/expressions/composition/composition-analyzer-helpers.d.ts.map +1 -1
  145. package/dist/core/expressions/composition/composition-analyzer-helpers.js +370 -7
  146. package/dist/core/expressions/composition/composition-analyzer-helpers.js.map +1 -1
  147. package/dist/core/expressions/composition/composition-analyzer-ternary.d.ts +2 -2
  148. package/dist/core/expressions/composition/composition-analyzer-ternary.d.ts.map +1 -1
  149. package/dist/core/expressions/composition/composition-analyzer-ternary.js +264 -29
  150. package/dist/core/expressions/composition/composition-analyzer-ternary.js.map +1 -1
  151. package/dist/core/expressions/composition/composition-analyzer-traversal.d.ts.map +1 -1
  152. package/dist/core/expressions/composition/composition-analyzer-traversal.js +78 -6
  153. package/dist/core/expressions/composition/composition-analyzer-traversal.js.map +1 -1
  154. package/dist/core/expressions/composition/composition-analyzer-types.d.ts +60 -0
  155. package/dist/core/expressions/composition/composition-analyzer-types.d.ts.map +1 -1
  156. package/dist/core/expressions/composition/composition-analyzer.d.ts +1 -1
  157. package/dist/core/expressions/composition/composition-analyzer.d.ts.map +1 -1
  158. package/dist/core/expressions/composition/composition-analyzer.js +158 -8
  159. package/dist/core/expressions/composition/composition-analyzer.js.map +1 -1
  160. package/dist/core/expressions/composition/expression-analyzer.d.ts.map +1 -1
  161. package/dist/core/expressions/composition/expression-analyzer.js +21 -4
  162. package/dist/core/expressions/composition/expression-analyzer.js.map +1 -1
  163. package/dist/core/expressions/composition/imperative-analyzer.d.ts +1 -1
  164. package/dist/core/expressions/composition/imperative-analyzer.d.ts.map +1 -1
  165. package/dist/core/expressions/composition/imperative-analyzer.js +31 -7
  166. package/dist/core/expressions/composition/imperative-analyzer.js.map +1 -1
  167. package/dist/core/expressions/composition/scope-manager.d.ts +2 -2
  168. package/dist/core/expressions/composition/scope-manager.d.ts.map +1 -1
  169. package/dist/core/expressions/composition/scope-manager.js.map +1 -1
  170. package/dist/core/expressions/conditional/conditional-expression-processor.d.ts +3 -3
  171. package/dist/core/expressions/conditional/conditional-expression-processor.d.ts.map +1 -1
  172. package/dist/core/expressions/conditional/conditional-expression-processor.js.map +1 -1
  173. package/dist/core/expressions/conditional/conditional-integration.d.ts.map +1 -1
  174. package/dist/core/expressions/conditional/conditional-integration.js.map +1 -1
  175. package/dist/core/expressions/context/context-aware-generator.d.ts +5 -5
  176. package/dist/core/expressions/context/context-aware-generator.d.ts.map +1 -1
  177. package/dist/core/expressions/context/context-aware-generator.js.map +1 -1
  178. package/dist/core/expressions/context/context-detector.d.ts +3 -3
  179. package/dist/core/expressions/context/context-detector.d.ts.map +1 -1
  180. package/dist/core/expressions/context/context-detector.js.map +1 -1
  181. package/dist/core/expressions/context/context-validator.d.ts +6 -6
  182. package/dist/core/expressions/context/context-validator.d.ts.map +1 -1
  183. package/dist/core/expressions/context/context-validator.js +2 -2
  184. package/dist/core/expressions/context/context-validator.js.map +1 -1
  185. package/dist/core/expressions/factory/cel-conversion-engine.d.ts +4 -4
  186. package/dist/core/expressions/factory/cel-conversion-engine.d.ts.map +1 -1
  187. package/dist/core/expressions/factory/cel-conversion-engine.js.map +1 -1
  188. package/dist/core/expressions/factory/dependency-tracker.d.ts +2 -2
  189. package/dist/core/expressions/factory/dependency-tracker.d.ts.map +1 -1
  190. package/dist/core/expressions/factory/dependency-tracker.js +21 -5
  191. package/dist/core/expressions/factory/dependency-tracker.js.map +1 -1
  192. package/dist/core/expressions/factory/factory-integration.d.ts +2 -4
  193. package/dist/core/expressions/factory/factory-integration.d.ts.map +1 -1
  194. package/dist/core/expressions/factory/factory-integration.js +0 -6
  195. package/dist/core/expressions/factory/factory-integration.js.map +1 -1
  196. package/dist/core/expressions/factory/factory-pattern-handler.d.ts +3 -3
  197. package/dist/core/expressions/factory/factory-pattern-handler.d.ts.map +1 -1
  198. package/dist/core/expressions/factory/factory-pattern-handler.js +1 -0
  199. package/dist/core/expressions/factory/factory-pattern-handler.js.map +1 -1
  200. package/dist/core/expressions/factory/migration-helpers.js.map +1 -1
  201. package/dist/core/expressions/factory/resource-analyzer.d.ts +4 -4
  202. package/dist/core/expressions/factory/resource-analyzer.d.ts.map +1 -1
  203. package/dist/core/expressions/factory/resource-analyzer.js.map +1 -1
  204. package/dist/core/expressions/factory/resource-type-validator.d.ts +5 -5
  205. package/dist/core/expressions/factory/resource-type-validator.d.ts.map +1 -1
  206. package/dist/core/expressions/factory/resource-type-validator.js.map +1 -1
  207. package/dist/core/expressions/factory/status-builder-analyzer.d.ts +6 -7
  208. package/dist/core/expressions/factory/status-builder-analyzer.d.ts.map +1 -1
  209. package/dist/core/expressions/factory/status-builder-analyzer.js +0 -3
  210. package/dist/core/expressions/factory/status-builder-analyzer.js.map +1 -1
  211. package/dist/core/expressions/factory/status-builder-types.d.ts +1 -1
  212. package/dist/core/expressions/factory/status-builder-types.d.ts.map +1 -1
  213. package/dist/core/expressions/factory/status-cel-generation.d.ts +1 -1
  214. package/dist/core/expressions/factory/status-cel-generation.d.ts.map +1 -1
  215. package/dist/core/expressions/factory/status-cel-generation.js +1 -1
  216. package/dist/core/expressions/factory/status-cel-generation.js.map +1 -1
  217. package/dist/core/expressions/factory/status-field-analysis.d.ts +3 -3
  218. package/dist/core/expressions/factory/status-field-analysis.d.ts.map +1 -1
  219. package/dist/core/expressions/factory/status-field-analysis.js.map +1 -1
  220. package/dist/core/expressions/magic-proxy/magic-assignable-analyzer.d.ts +5 -5
  221. package/dist/core/expressions/magic-proxy/magic-assignable-analyzer.d.ts.map +1 -1
  222. package/dist/core/expressions/magic-proxy/magic-assignable-analyzer.js +1 -1
  223. package/dist/core/expressions/magic-proxy/magic-assignable-analyzer.js.map +1 -1
  224. package/dist/core/expressions/magic-proxy/magic-proxy-analyzer.d.ts +10 -10
  225. package/dist/core/expressions/magic-proxy/magic-proxy-analyzer.d.ts.map +1 -1
  226. package/dist/core/expressions/magic-proxy/magic-proxy-analyzer.js +5 -1
  227. package/dist/core/expressions/magic-proxy/magic-proxy-analyzer.js.map +1 -1
  228. package/dist/core/expressions/magic-proxy/magic-proxy-ast.d.ts +2 -2
  229. package/dist/core/expressions/magic-proxy/magic-proxy-ast.d.ts.map +1 -1
  230. package/dist/core/expressions/magic-proxy/magic-proxy-ast.js.map +1 -1
  231. package/dist/core/expressions/magic-proxy/magic-proxy-detector.d.ts +5 -5
  232. package/dist/core/expressions/magic-proxy/magic-proxy-detector.d.ts.map +1 -1
  233. package/dist/core/expressions/magic-proxy/magic-proxy-detector.js.map +1 -1
  234. package/dist/core/expressions/magic-proxy/magic-proxy-types.d.ts +2 -2
  235. package/dist/core/expressions/magic-proxy/magic-proxy-types.d.ts.map +1 -1
  236. package/dist/core/expressions/magic-proxy/optionality-handler.d.ts +1 -2
  237. package/dist/core/expressions/magic-proxy/optionality-handler.d.ts.map +1 -1
  238. package/dist/core/expressions/magic-proxy/optionality-handler.js +2 -15
  239. package/dist/core/expressions/magic-proxy/optionality-handler.js.map +1 -1
  240. package/dist/core/expressions/validation/compile-time-checker.d.ts +1 -1
  241. package/dist/core/expressions/validation/compile-time-checker.d.ts.map +1 -1
  242. package/dist/core/expressions/validation/compile-time-checker.js.map +1 -1
  243. package/dist/core/expressions/validation/compile-time-types.d.ts +2 -2
  244. package/dist/core/expressions/validation/compile-time-types.d.ts.map +1 -1
  245. package/dist/core/expressions/validation/kubernetes-field-types.d.ts +4 -4
  246. package/dist/core/expressions/validation/kubernetes-field-types.d.ts.map +1 -1
  247. package/dist/core/expressions/validation/kubernetes-field-types.js.map +1 -1
  248. package/dist/core/expressions/validation/resource-field-utils.d.ts +10 -10
  249. package/dist/core/expressions/validation/resource-field-utils.d.ts.map +1 -1
  250. package/dist/core/expressions/validation/resource-field-utils.js.map +1 -1
  251. package/dist/core/expressions/validation/resource-validation.d.ts +3 -3
  252. package/dist/core/expressions/validation/resource-validation.d.ts.map +1 -1
  253. package/dist/core/expressions/validation/resource-validation.js.map +1 -1
  254. package/dist/core/expressions/validation/type-inference-types.d.ts +2 -2
  255. package/dist/core/expressions/validation/type-inference-types.d.ts.map +1 -1
  256. package/dist/core/expressions/validation/type-safety.d.ts +2 -2
  257. package/dist/core/expressions/validation/type-safety.d.ts.map +1 -1
  258. package/dist/core/expressions/validation/type-safety.js +1 -0
  259. package/dist/core/expressions/validation/type-safety.js.map +1 -1
  260. package/dist/core/kubernetes/bun-api-client.js.map +1 -1
  261. package/dist/core/kubernetes/bun-http-library.d.ts.map +1 -1
  262. package/dist/core/kubernetes/bun-http-library.js +29 -3
  263. package/dist/core/kubernetes/bun-http-library.js.map +1 -1
  264. package/dist/core/kubernetes/client-provider.d.ts +12 -0
  265. package/dist/core/kubernetes/client-provider.d.ts.map +1 -1
  266. package/dist/core/kubernetes/client-provider.js +35 -0
  267. package/dist/core/kubernetes/client-provider.js.map +1 -1
  268. package/dist/core/metadata/resource-metadata.d.ts +46 -1
  269. package/dist/core/metadata/resource-metadata.d.ts.map +1 -1
  270. package/dist/core/metadata/resource-metadata.js.map +1 -1
  271. package/dist/core/proxy/create-resource.d.ts +15 -0
  272. package/dist/core/proxy/create-resource.d.ts.map +1 -1
  273. package/dist/core/proxy/create-resource.js +56 -2
  274. package/dist/core/proxy/create-resource.js.map +1 -1
  275. package/dist/core/readiness/registry.js +2 -2
  276. package/dist/core/readiness/registry.js.map +1 -1
  277. package/dist/core/references/cel-evaluator.d.ts +1 -4
  278. package/dist/core/references/cel-evaluator.d.ts.map +1 -1
  279. package/dist/core/references/cel-evaluator.js +3 -7
  280. package/dist/core/references/cel-evaluator.js.map +1 -1
  281. package/dist/core/references/cel.d.ts +70 -0
  282. package/dist/core/references/cel.d.ts.map +1 -1
  283. package/dist/core/references/cel.js +188 -8
  284. package/dist/core/references/cel.js.map +1 -1
  285. package/dist/core/references/external-refs.d.ts.map +1 -1
  286. package/dist/core/references/external-refs.js +3 -0
  287. package/dist/core/references/external-refs.js.map +1 -1
  288. package/dist/core/references/resolver.d.ts.map +1 -1
  289. package/dist/core/references/resolver.js +28 -17
  290. package/dist/core/references/resolver.js.map +1 -1
  291. package/dist/core/references/schema-proxy.d.ts +18 -10
  292. package/dist/core/references/schema-proxy.d.ts.map +1 -1
  293. package/dist/core/references/schema-proxy.js +174 -23
  294. package/dist/core/references/schema-proxy.js.map +1 -1
  295. package/dist/core/runtime-patches/crd-schema-fix.d.ts.map +1 -1
  296. package/dist/core/runtime-patches/crd-schema-fix.js +4 -1
  297. package/dist/core/runtime-patches/crd-schema-fix.js.map +1 -1
  298. package/dist/core/serialization/cel-optimizer.d.ts.map +1 -1
  299. package/dist/core/serialization/cel-optimizer.js +2 -0
  300. package/dist/core/serialization/cel-optimizer.js.map +1 -1
  301. package/dist/core/serialization/cel-references.d.ts +75 -1
  302. package/dist/core/serialization/cel-references.d.ts.map +1 -1
  303. package/dist/core/serialization/cel-references.js +723 -145
  304. package/dist/core/serialization/cel-references.js.map +1 -1
  305. package/dist/core/serialization/core.d.ts +13 -8
  306. package/dist/core/serialization/core.d.ts.map +1 -1
  307. package/dist/core/serialization/core.js +973 -12
  308. package/dist/core/serialization/core.js.map +1 -1
  309. package/dist/core/serialization/kro-post-processing.d.ts +46 -0
  310. package/dist/core/serialization/kro-post-processing.d.ts.map +1 -0
  311. package/dist/core/serialization/kro-post-processing.js +150 -0
  312. package/dist/core/serialization/kro-post-processing.js.map +1 -0
  313. package/dist/core/serialization/schema.d.ts +62 -3
  314. package/dist/core/serialization/schema.d.ts.map +1 -1
  315. package/dist/core/serialization/schema.js +819 -6
  316. package/dist/core/serialization/schema.js.map +1 -1
  317. package/dist/core/serialization/status-analysis-pipeline.d.ts +1 -1
  318. package/dist/core/serialization/status-analysis-pipeline.d.ts.map +1 -1
  319. package/dist/core/serialization/status-analysis-pipeline.js.map +1 -1
  320. package/dist/core/serialization/yaml.d.ts +3 -2
  321. package/dist/core/serialization/yaml.d.ts.map +1 -1
  322. package/dist/core/serialization/yaml.js +404 -56
  323. package/dist/core/serialization/yaml.js.map +1 -1
  324. package/dist/core/singleton/singleton.d.ts +16 -0
  325. package/dist/core/singleton/singleton.d.ts.map +1 -0
  326. package/dist/core/singleton/singleton.js +135 -0
  327. package/dist/core/singleton/singleton.js.map +1 -0
  328. package/dist/core/types/common.d.ts +2 -2
  329. package/dist/core/types/common.d.ts.map +1 -1
  330. package/dist/core/types/composable.d.ts +1 -1
  331. package/dist/core/types/composable.d.ts.map +1 -1
  332. package/dist/core/types/deployment.d.ts +126 -6
  333. package/dist/core/types/deployment.d.ts.map +1 -1
  334. package/dist/core/types/deployment.js +1 -1
  335. package/dist/core/types/deployment.js.map +1 -1
  336. package/dist/core/types/kubernetes.d.ts +25 -17
  337. package/dist/core/types/kubernetes.d.ts.map +1 -1
  338. package/dist/core/types/references.d.ts +1 -1
  339. package/dist/core/types/references.d.ts.map +1 -1
  340. package/dist/core/types/references.js.map +1 -1
  341. package/dist/core/types/resource-graph.d.ts +1 -1
  342. package/dist/core/types/resource-graph.d.ts.map +1 -1
  343. package/dist/core/types/schema.d.ts +1 -1
  344. package/dist/core/types/schema.d.ts.map +1 -1
  345. package/dist/core/types/serialization.d.ts +62 -6
  346. package/dist/core/types/serialization.d.ts.map +1 -1
  347. package/dist/core/validation/cel-validator.d.ts +15 -2
  348. package/dist/core/validation/cel-validator.d.ts.map +1 -1
  349. package/dist/core/validation/cel-validator.js +144 -63
  350. package/dist/core/validation/cel-validator.js.map +1 -1
  351. package/dist/factories/apisix/compositions/apisix-bootstrap.d.ts +2 -41
  352. package/dist/factories/apisix/compositions/apisix-bootstrap.d.ts.map +1 -1
  353. package/dist/factories/apisix/compositions/apisix-bootstrap.js +262 -217
  354. package/dist/factories/apisix/compositions/apisix-bootstrap.js.map +1 -1
  355. package/dist/factories/apisix/index.d.ts +2 -2
  356. package/dist/factories/apisix/index.js +2 -2
  357. package/dist/factories/apisix/resources/helm.d.ts +2 -2
  358. package/dist/factories/apisix/resources/helm.d.ts.map +1 -1
  359. package/dist/factories/apisix/resources/helm.js.map +1 -1
  360. package/dist/factories/apisix/types.d.ts +21 -11
  361. package/dist/factories/apisix/types.d.ts.map +1 -1
  362. package/dist/factories/apisix/types.js +106 -4
  363. package/dist/factories/apisix/types.js.map +1 -1
  364. package/dist/factories/apisix/utils/admin-credentials.d.ts +5 -3
  365. package/dist/factories/apisix/utils/admin-credentials.d.ts.map +1 -1
  366. package/dist/factories/apisix/utils/admin-credentials.js +14 -10
  367. package/dist/factories/apisix/utils/admin-credentials.js.map +1 -1
  368. package/dist/factories/apisix/utils/helm-values-mapper.d.ts.map +1 -1
  369. package/dist/factories/apisix/utils/helm-values-mapper.js +4 -2
  370. package/dist/factories/apisix/utils/helm-values-mapper.js.map +1 -1
  371. package/dist/factories/cert-manager/resources/challenges.js.map +1 -1
  372. package/dist/factories/cert-manager/types.d.ts +3 -3
  373. package/dist/factories/cert-manager/types.d.ts.map +1 -1
  374. package/dist/factories/cilium/compositions/cilium-bootstrap.d.ts +4 -4
  375. package/dist/factories/cilium/types.d.ts +3 -3
  376. package/dist/factories/cilium/types.d.ts.map +1 -1
  377. package/dist/factories/cnpg/compositions/cnpg-bootstrap.d.ts +1 -0
  378. package/dist/factories/cnpg/compositions/cnpg-bootstrap.d.ts.map +1 -1
  379. package/dist/factories/cnpg/compositions/cnpg-bootstrap.js +48 -0
  380. package/dist/factories/cnpg/compositions/cnpg-bootstrap.js.map +1 -1
  381. package/dist/factories/cnpg/resources/cluster.js +1 -1
  382. package/dist/factories/cnpg/resources/cluster.js.map +1 -1
  383. package/dist/factories/cnpg/resources/helm.d.ts.map +1 -1
  384. package/dist/factories/cnpg/resources/helm.js +1 -0
  385. package/dist/factories/cnpg/resources/helm.js.map +1 -1
  386. package/dist/factories/cnpg/resources/pooler.js +1 -1
  387. package/dist/factories/cnpg/resources/pooler.js.map +1 -1
  388. package/dist/factories/cnpg/types.d.ts +9 -8
  389. package/dist/factories/cnpg/types.d.ts.map +1 -1
  390. package/dist/factories/cnpg/types.js +11 -0
  391. package/dist/factories/cnpg/types.js.map +1 -1
  392. package/dist/factories/external-dns/compositions/external-dns-bootstrap.d.ts.map +1 -1
  393. package/dist/factories/external-dns/compositions/external-dns-bootstrap.js +153 -41
  394. package/dist/factories/external-dns/compositions/external-dns-bootstrap.js.map +1 -1
  395. package/dist/factories/external-dns/resources/dns-endpoint.js +1 -1
  396. package/dist/factories/external-dns/resources/dns-endpoint.js.map +1 -1
  397. package/dist/factories/external-dns/resources/helm.d.ts +1 -1
  398. package/dist/factories/external-dns/resources/helm.d.ts.map +1 -1
  399. package/dist/factories/external-dns/resources/helm.js +17 -10
  400. package/dist/factories/external-dns/resources/helm.js.map +1 -1
  401. package/dist/factories/external-dns/types.d.ts +5 -2
  402. package/dist/factories/external-dns/types.d.ts.map +1 -1
  403. package/dist/factories/external-dns/types.js.map +1 -1
  404. package/dist/factories/flux/git-repository.d.ts.map +1 -1
  405. package/dist/factories/flux/git-repository.js +1 -1
  406. package/dist/factories/flux/git-repository.js.map +1 -1
  407. package/dist/factories/flux/kustomize/kustomization.d.ts +2 -2
  408. package/dist/factories/flux/kustomize/kustomization.d.ts.map +1 -1
  409. package/dist/factories/flux/kustomize/readiness-evaluators.d.ts +1 -1
  410. package/dist/factories/flux/kustomize/readiness-evaluators.d.ts.map +1 -1
  411. package/dist/factories/flux/kustomize/readiness-evaluators.js +1 -1
  412. package/dist/factories/flux/kustomize/readiness-evaluators.js.map +1 -1
  413. package/dist/factories/helm/helm-release.d.ts +3 -2
  414. package/dist/factories/helm/helm-release.d.ts.map +1 -1
  415. package/dist/factories/helm/helm-release.js +1 -0
  416. package/dist/factories/helm/helm-release.js.map +1 -1
  417. package/dist/factories/helm/helm-repository.d.ts +1 -1
  418. package/dist/factories/helm/helm-repository.d.ts.map +1 -1
  419. package/dist/factories/helm/helm-repository.js +6 -4
  420. package/dist/factories/helm/helm-repository.js.map +1 -1
  421. package/dist/factories/helm/readiness-evaluators.d.ts +6 -6
  422. package/dist/factories/helm/readiness-evaluators.d.ts.map +1 -1
  423. package/dist/factories/helm/readiness-evaluators.js +15 -9
  424. package/dist/factories/helm/readiness-evaluators.js.map +1 -1
  425. package/dist/factories/helm/types.d.ts +5 -1
  426. package/dist/factories/helm/types.d.ts.map +1 -1
  427. package/dist/factories/inngest/compositions/inngest-bootstrap.d.ts +1 -0
  428. package/dist/factories/inngest/compositions/inngest-bootstrap.d.ts.map +1 -1
  429. package/dist/factories/inngest/compositions/inngest-bootstrap.js +4 -3
  430. package/dist/factories/inngest/compositions/inngest-bootstrap.js.map +1 -1
  431. package/dist/factories/inngest/resources/helm.js +1 -1
  432. package/dist/factories/inngest/resources/helm.js.map +1 -1
  433. package/dist/factories/inngest/types.d.ts +5 -4
  434. package/dist/factories/inngest/types.d.ts.map +1 -1
  435. package/dist/factories/inngest/types.js +2 -0
  436. package/dist/factories/inngest/types.js.map +1 -1
  437. package/dist/factories/kro/kro-custom-resource.js +1 -1
  438. package/dist/factories/kro/kro-custom-resource.js.map +1 -1
  439. package/dist/factories/kubernetes/config/config-map.d.ts +2 -2
  440. package/dist/factories/kubernetes/config/config-map.d.ts.map +1 -1
  441. package/dist/factories/kubernetes/config/secret.d.ts +2 -2
  442. package/dist/factories/kubernetes/config/secret.d.ts.map +1 -1
  443. package/dist/factories/kubernetes/config/secret.js +11 -1
  444. package/dist/factories/kubernetes/config/secret.js.map +1 -1
  445. package/dist/factories/kubernetes/networking/service.js +1 -1
  446. package/dist/factories/kubernetes/networking/service.js.map +1 -1
  447. package/dist/factories/kubernetes/yaml/yaml-directory.d.ts.map +1 -1
  448. package/dist/factories/kubernetes/yaml/yaml-directory.js +9 -0
  449. package/dist/factories/kubernetes/yaml/yaml-directory.js.map +1 -1
  450. package/dist/factories/kubernetes/yaml/yaml-file.d.ts.map +1 -1
  451. package/dist/factories/kubernetes/yaml/yaml-file.js +9 -0
  452. package/dist/factories/kubernetes/yaml/yaml-file.js.map +1 -1
  453. package/dist/factories/pebble/resources/helm.js.map +1 -1
  454. package/dist/factories/pebble/types.d.ts +2 -2
  455. package/dist/factories/searxng/compositions/index.d.ts +2 -0
  456. package/dist/factories/searxng/compositions/index.d.ts.map +1 -0
  457. package/dist/factories/searxng/compositions/index.js +2 -0
  458. package/dist/factories/searxng/compositions/index.js.map +1 -0
  459. package/dist/factories/searxng/compositions/searxng-bootstrap.d.ts +66 -0
  460. package/dist/factories/searxng/compositions/searxng-bootstrap.d.ts.map +1 -0
  461. package/dist/factories/searxng/compositions/searxng-bootstrap.js +275 -0
  462. package/dist/factories/searxng/compositions/searxng-bootstrap.js.map +1 -0
  463. package/dist/factories/searxng/index.d.ts +29 -0
  464. package/dist/factories/searxng/index.d.ts.map +1 -0
  465. package/dist/factories/searxng/index.js +27 -0
  466. package/dist/factories/searxng/index.js.map +1 -0
  467. package/dist/factories/searxng/resources/index.d.ts +2 -0
  468. package/dist/factories/searxng/resources/index.d.ts.map +1 -0
  469. package/dist/factories/searxng/resources/index.js +2 -0
  470. package/dist/factories/searxng/resources/index.js.map +1 -0
  471. package/dist/factories/searxng/resources/searxng.d.ts +65 -0
  472. package/dist/factories/searxng/resources/searxng.d.ts.map +1 -0
  473. package/dist/factories/searxng/resources/searxng.js +188 -0
  474. package/dist/factories/searxng/resources/searxng.js.map +1 -0
  475. package/dist/factories/searxng/types.d.ts +127 -0
  476. package/dist/factories/searxng/types.d.ts.map +1 -0
  477. package/dist/factories/searxng/types.js +177 -0
  478. package/dist/factories/searxng/types.js.map +1 -0
  479. package/dist/factories/searxng/utils/settings-builder.d.ts +47 -0
  480. package/dist/factories/searxng/utils/settings-builder.d.ts.map +1 -0
  481. package/dist/factories/searxng/utils/settings-builder.js +53 -0
  482. package/dist/factories/searxng/utils/settings-builder.js.map +1 -0
  483. package/dist/factories/simple/config/config-map.d.ts +2 -2
  484. package/dist/factories/simple/config/config-map.d.ts.map +1 -1
  485. package/dist/factories/simple/config/secret.d.ts +2 -2
  486. package/dist/factories/simple/config/secret.d.ts.map +1 -1
  487. package/dist/factories/simple/config/secret.js +28 -0
  488. package/dist/factories/simple/config/secret.js.map +1 -1
  489. package/dist/factories/simple/helm/index.d.ts +1 -1
  490. package/dist/factories/simple/helm/index.d.ts.map +1 -1
  491. package/dist/factories/simple/helm/index.js.map +1 -1
  492. package/dist/factories/simple/storage/persistent-volume.js.map +1 -1
  493. package/dist/factories/simple/types.d.ts +11 -1
  494. package/dist/factories/simple/types.d.ts.map +1 -1
  495. package/dist/factories/simple/workloads/deployment.d.ts.map +1 -1
  496. package/dist/factories/simple/workloads/deployment.js +3 -0
  497. package/dist/factories/simple/workloads/deployment.js.map +1 -1
  498. package/dist/factories/valkey/compositions/valkey-bootstrap.d.ts +1 -0
  499. package/dist/factories/valkey/compositions/valkey-bootstrap.d.ts.map +1 -1
  500. package/dist/factories/valkey/compositions/valkey-bootstrap.js +116 -0
  501. package/dist/factories/valkey/compositions/valkey-bootstrap.js.map +1 -1
  502. package/dist/factories/valkey/resources/valkey.js +1 -1
  503. package/dist/factories/valkey/resources/valkey.js.map +1 -1
  504. package/dist/factories/valkey/types.d.ts +6 -5
  505. package/dist/factories/valkey/types.d.ts.map +1 -1
  506. package/dist/factories/valkey/types.js +10 -0
  507. package/dist/factories/valkey/types.js.map +1 -1
  508. package/dist/factories/webapp/compositions/web-app-with-processing.d.ts +95 -12
  509. package/dist/factories/webapp/compositions/web-app-with-processing.d.ts.map +1 -1
  510. package/dist/factories/webapp/compositions/web-app-with-processing.js +185 -26
  511. package/dist/factories/webapp/compositions/web-app-with-processing.js.map +1 -1
  512. package/dist/factories/webapp/index.d.ts +3 -4
  513. package/dist/factories/webapp/index.d.ts.map +1 -1
  514. package/dist/factories/webapp/index.js +3 -4
  515. package/dist/factories/webapp/index.js.map +1 -1
  516. package/dist/factories/webapp/types.d.ts +60 -2
  517. package/dist/factories/webapp/types.d.ts.map +1 -1
  518. package/dist/factories/webapp/types.js +80 -3
  519. package/dist/factories/webapp/types.js.map +1 -1
  520. package/dist/index.d.ts +2 -0
  521. package/dist/index.d.ts.map +1 -1
  522. package/dist/index.js +1 -0
  523. package/dist/index.js.map +1 -1
  524. package/dist/shared/brands.d.ts +18 -8
  525. package/dist/shared/brands.d.ts.map +1 -1
  526. package/dist/shared/brands.js +19 -9
  527. package/dist/shared/brands.js.map +1 -1
  528. package/dist/utils/cel-escape.d.ts +12 -0
  529. package/dist/utils/cel-escape.d.ts.map +1 -0
  530. package/dist/utils/cel-escape.js +19 -0
  531. package/dist/utils/cel-escape.js.map +1 -0
  532. 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":"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"}
@@ -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"}