typekro 0.4.0 → 0.5.0

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