typekro 0.1.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 (620) hide show
  1. package/LICENSE +185 -0
  2. package/README.md +1137 -0
  3. package/dist/.tsbuildinfo +1 -0
  4. package/dist/alchemy/deployers.d.ts +39 -0
  5. package/dist/alchemy/deployers.d.ts.map +1 -0
  6. package/dist/alchemy/deployers.js +194 -0
  7. package/dist/alchemy/deployers.js.map +1 -0
  8. package/dist/alchemy/deployment.d.ts +12 -0
  9. package/dist/alchemy/deployment.d.ts.map +1 -0
  10. package/dist/alchemy/deployment.js +12 -0
  11. package/dist/alchemy/deployment.js.map +1 -0
  12. package/dist/alchemy/index.d.ts +17 -0
  13. package/dist/alchemy/index.d.ts.map +1 -0
  14. package/dist/alchemy/index.js +20 -0
  15. package/dist/alchemy/index.js.map +1 -0
  16. package/dist/alchemy/resolver.d.ts +127 -0
  17. package/dist/alchemy/resolver.d.ts.map +1 -0
  18. package/dist/alchemy/resolver.js +341 -0
  19. package/dist/alchemy/resolver.js.map +1 -0
  20. package/dist/alchemy/resource-registration.d.ts +22 -0
  21. package/dist/alchemy/resource-registration.d.ts.map +1 -0
  22. package/dist/alchemy/resource-registration.js +218 -0
  23. package/dist/alchemy/resource-registration.js.map +1 -0
  24. package/dist/alchemy/type-inference.d.ts +13 -0
  25. package/dist/alchemy/type-inference.d.ts.map +1 -0
  26. package/dist/alchemy/type-inference.js +67 -0
  27. package/dist/alchemy/type-inference.js.map +1 -0
  28. package/dist/alchemy/types.d.ts +92 -0
  29. package/dist/alchemy/types.d.ts.map +1 -0
  30. package/dist/alchemy/types.js +8 -0
  31. package/dist/alchemy/types.js.map +1 -0
  32. package/dist/alchemy/utilities.d.ts +12 -0
  33. package/dist/alchemy/utilities.d.ts.map +1 -0
  34. package/dist/alchemy/utilities.js +16 -0
  35. package/dist/alchemy/utilities.js.map +1 -0
  36. package/dist/alchemy/wrapper.d.ts +16 -0
  37. package/dist/alchemy/wrapper.d.ts.map +1 -0
  38. package/dist/alchemy/wrapper.js +23 -0
  39. package/dist/alchemy/wrapper.js.map +1 -0
  40. package/dist/core/composition/composition.d.ts +94 -0
  41. package/dist/core/composition/composition.d.ts.map +1 -0
  42. package/dist/core/composition/composition.js +230 -0
  43. package/dist/core/composition/composition.js.map +1 -0
  44. package/dist/core/composition/index.d.ts +12 -0
  45. package/dist/core/composition/index.d.ts.map +1 -0
  46. package/dist/core/composition/index.js +12 -0
  47. package/dist/core/composition/index.js.map +1 -0
  48. package/dist/core/composition/typekro-runtime/index.d.ts +3 -0
  49. package/dist/core/composition/typekro-runtime/index.d.ts.map +1 -0
  50. package/dist/core/composition/typekro-runtime/index.js +2 -0
  51. package/dist/core/composition/typekro-runtime/index.js.map +1 -0
  52. package/dist/core/composition/typekro-runtime/typekro-runtime.d.ts +39 -0
  53. package/dist/core/composition/typekro-runtime/typekro-runtime.d.ts.map +1 -0
  54. package/dist/core/composition/typekro-runtime/typekro-runtime.js +100 -0
  55. package/dist/core/composition/typekro-runtime/typekro-runtime.js.map +1 -0
  56. package/dist/core/composition/typekro-runtime/types.d.ts +16 -0
  57. package/dist/core/composition/typekro-runtime/types.d.ts.map +1 -0
  58. package/dist/core/composition/typekro-runtime/types.js +12 -0
  59. package/dist/core/composition/typekro-runtime/types.js.map +1 -0
  60. package/dist/core/composition/types.d.ts +264 -0
  61. package/dist/core/composition/types.d.ts.map +1 -0
  62. package/dist/core/composition/types.js +2 -0
  63. package/dist/core/composition/types.js.map +1 -0
  64. package/dist/core/constants/brands.d.ts +42 -0
  65. package/dist/core/constants/brands.d.ts.map +1 -0
  66. package/dist/core/constants/brands.js +51 -0
  67. package/dist/core/constants/brands.js.map +1 -0
  68. package/dist/core/dependencies/graph.d.ts +67 -0
  69. package/dist/core/dependencies/graph.d.ts.map +1 -0
  70. package/dist/core/dependencies/graph.js +220 -0
  71. package/dist/core/dependencies/graph.js.map +1 -0
  72. package/dist/core/dependencies/index.d.ts +7 -0
  73. package/dist/core/dependencies/index.d.ts.map +1 -0
  74. package/dist/core/dependencies/index.js +8 -0
  75. package/dist/core/dependencies/index.js.map +1 -0
  76. package/dist/core/dependencies/resolver.d.ts +53 -0
  77. package/dist/core/dependencies/resolver.d.ts.map +1 -0
  78. package/dist/core/dependencies/resolver.js +167 -0
  79. package/dist/core/dependencies/resolver.js.map +1 -0
  80. package/dist/core/dependencies/type-guards.d.ts +17 -0
  81. package/dist/core/dependencies/type-guards.d.ts.map +1 -0
  82. package/dist/core/dependencies/type-guards.js +35 -0
  83. package/dist/core/dependencies/type-guards.js.map +1 -0
  84. package/dist/core/deployment/deployment-strategies.d.ts +12 -0
  85. package/dist/core/deployment/deployment-strategies.d.ts.map +1 -0
  86. package/dist/core/deployment/deployment-strategies.js +11 -0
  87. package/dist/core/deployment/deployment-strategies.js.map +1 -0
  88. package/dist/core/deployment/direct-factory.d.ts +111 -0
  89. package/dist/core/deployment/direct-factory.d.ts.map +1 -0
  90. package/dist/core/deployment/direct-factory.js +627 -0
  91. package/dist/core/deployment/direct-factory.js.map +1 -0
  92. package/dist/core/deployment/engine.d.ts +128 -0
  93. package/dist/core/deployment/engine.d.ts.map +1 -0
  94. package/dist/core/deployment/engine.js +1408 -0
  95. package/dist/core/deployment/engine.js.map +1 -0
  96. package/dist/core/deployment/index.d.ts +14 -0
  97. package/dist/core/deployment/index.d.ts.map +1 -0
  98. package/dist/core/deployment/index.js +14 -0
  99. package/dist/core/deployment/index.js.map +1 -0
  100. package/dist/core/deployment/kro-factory.d.ts +143 -0
  101. package/dist/core/deployment/kro-factory.d.ts.map +1 -0
  102. package/dist/core/deployment/kro-factory.js +837 -0
  103. package/dist/core/deployment/kro-factory.js.map +1 -0
  104. package/dist/core/deployment/readiness.d.ts +54 -0
  105. package/dist/core/deployment/readiness.d.ts.map +1 -0
  106. package/dist/core/deployment/readiness.js +175 -0
  107. package/dist/core/deployment/readiness.js.map +1 -0
  108. package/dist/core/deployment/rollback-manager.d.ts +63 -0
  109. package/dist/core/deployment/rollback-manager.d.ts.map +1 -0
  110. package/dist/core/deployment/rollback-manager.js +225 -0
  111. package/dist/core/deployment/rollback-manager.js.map +1 -0
  112. package/dist/core/deployment/shared-utilities.d.ts +41 -0
  113. package/dist/core/deployment/shared-utilities.d.ts.map +1 -0
  114. package/dist/core/deployment/shared-utilities.js +100 -0
  115. package/dist/core/deployment/shared-utilities.js.map +1 -0
  116. package/dist/core/deployment/status-hydrator.d.ts +86 -0
  117. package/dist/core/deployment/status-hydrator.d.ts.map +1 -0
  118. package/dist/core/deployment/status-hydrator.js +262 -0
  119. package/dist/core/deployment/status-hydrator.js.map +1 -0
  120. package/dist/core/deployment/strategies/alchemy-strategy.d.ts +107 -0
  121. package/dist/core/deployment/strategies/alchemy-strategy.d.ts.map +1 -0
  122. package/dist/core/deployment/strategies/alchemy-strategy.js +446 -0
  123. package/dist/core/deployment/strategies/alchemy-strategy.js.map +1 -0
  124. package/dist/core/deployment/strategies/base-strategy.d.ts +50 -0
  125. package/dist/core/deployment/strategies/base-strategy.d.ts.map +1 -0
  126. package/dist/core/deployment/strategies/base-strategy.js +82 -0
  127. package/dist/core/deployment/strategies/base-strategy.js.map +1 -0
  128. package/dist/core/deployment/strategies/direct-strategy.d.ts +29 -0
  129. package/dist/core/deployment/strategies/direct-strategy.d.ts.map +1 -0
  130. package/dist/core/deployment/strategies/direct-strategy.js +80 -0
  131. package/dist/core/deployment/strategies/direct-strategy.js.map +1 -0
  132. package/dist/core/deployment/strategies/index.d.ts +12 -0
  133. package/dist/core/deployment/strategies/index.d.ts.map +1 -0
  134. package/dist/core/deployment/strategies/index.js +12 -0
  135. package/dist/core/deployment/strategies/index.js.map +1 -0
  136. package/dist/core/deployment/strategies/kro-strategy.d.ts +41 -0
  137. package/dist/core/deployment/strategies/kro-strategy.d.ts.map +1 -0
  138. package/dist/core/deployment/strategies/kro-strategy.js +270 -0
  139. package/dist/core/deployment/strategies/kro-strategy.js.map +1 -0
  140. package/dist/core/direct-deployment.d.ts +8 -0
  141. package/dist/core/direct-deployment.d.ts.map +1 -0
  142. package/dist/core/direct-deployment.js +9 -0
  143. package/dist/core/direct-deployment.js.map +1 -0
  144. package/dist/core/errors.d.ts +73 -0
  145. package/dist/core/errors.d.ts.map +1 -0
  146. package/dist/core/errors.js +250 -0
  147. package/dist/core/errors.js.map +1 -0
  148. package/dist/core/evaluation/cel-optimizer.d.ts +48 -0
  149. package/dist/core/evaluation/cel-optimizer.d.ts.map +1 -0
  150. package/dist/core/evaluation/cel-optimizer.js +176 -0
  151. package/dist/core/evaluation/cel-optimizer.js.map +1 -0
  152. package/dist/core/factory.d.ts +12 -0
  153. package/dist/core/factory.d.ts.map +1 -0
  154. package/dist/core/factory.js +13 -0
  155. package/dist/core/factory.js.map +1 -0
  156. package/dist/core/kubernetes/api.d.ts +43 -0
  157. package/dist/core/kubernetes/api.d.ts.map +1 -0
  158. package/dist/core/kubernetes/api.js +209 -0
  159. package/dist/core/kubernetes/api.js.map +1 -0
  160. package/dist/core/kubernetes/client-provider.d.ts +204 -0
  161. package/dist/core/kubernetes/client-provider.d.ts.map +1 -0
  162. package/dist/core/kubernetes/client-provider.js +421 -0
  163. package/dist/core/kubernetes/client-provider.js.map +1 -0
  164. package/dist/core/logging/config.d.ts +14 -0
  165. package/dist/core/logging/config.d.ts.map +1 -0
  166. package/dist/core/logging/config.js +57 -0
  167. package/dist/core/logging/config.js.map +1 -0
  168. package/dist/core/logging/index.d.ts +4 -0
  169. package/dist/core/logging/index.d.ts.map +1 -0
  170. package/dist/core/logging/index.js +4 -0
  171. package/dist/core/logging/index.js.map +1 -0
  172. package/dist/core/logging/logger.d.ts +26 -0
  173. package/dist/core/logging/logger.d.ts.map +1 -0
  174. package/dist/core/logging/logger.js +114 -0
  175. package/dist/core/logging/logger.js.map +1 -0
  176. package/dist/core/logging/types.d.ts +93 -0
  177. package/dist/core/logging/types.d.ts.map +1 -0
  178. package/dist/core/logging/types.js +2 -0
  179. package/dist/core/logging/types.js.map +1 -0
  180. package/dist/core/readiness/cluster-state.d.ts +229 -0
  181. package/dist/core/readiness/cluster-state.d.ts.map +1 -0
  182. package/dist/core/readiness/cluster-state.js +360 -0
  183. package/dist/core/readiness/cluster-state.js.map +1 -0
  184. package/dist/core/readiness/index.d.ts +5 -0
  185. package/dist/core/readiness/index.d.ts.map +1 -0
  186. package/dist/core/readiness/index.js +5 -0
  187. package/dist/core/readiness/index.js.map +1 -0
  188. package/dist/core/readiness/registry.d.ts +45 -0
  189. package/dist/core/readiness/registry.d.ts.map +1 -0
  190. package/dist/core/readiness/registry.js +62 -0
  191. package/dist/core/readiness/registry.js.map +1 -0
  192. package/dist/core/references/cel-evaluator.d.ts +102 -0
  193. package/dist/core/references/cel-evaluator.d.ts.map +1 -0
  194. package/dist/core/references/cel-evaluator.js +288 -0
  195. package/dist/core/references/cel-evaluator.js.map +1 -0
  196. package/dist/core/references/cel.d.ts +75 -0
  197. package/dist/core/references/cel.d.ts.map +1 -0
  198. package/dist/core/references/cel.js +213 -0
  199. package/dist/core/references/cel.js.map +1 -0
  200. package/dist/core/references/external-refs.d.ts +37 -0
  201. package/dist/core/references/external-refs.d.ts.map +1 -0
  202. package/dist/core/references/external-refs.js +53 -0
  203. package/dist/core/references/external-refs.js.map +1 -0
  204. package/dist/core/references/index.d.ts +15 -0
  205. package/dist/core/references/index.d.ts.map +1 -0
  206. package/dist/core/references/index.js +19 -0
  207. package/dist/core/references/index.js.map +1 -0
  208. package/dist/core/references/resolver.d.ts +117 -0
  209. package/dist/core/references/resolver.d.ts.map +1 -0
  210. package/dist/core/references/resolver.js +554 -0
  211. package/dist/core/references/resolver.js.map +1 -0
  212. package/dist/core/references/schema-proxy.d.ts +38 -0
  213. package/dist/core/references/schema-proxy.d.ts.map +1 -0
  214. package/dist/core/references/schema-proxy.js +163 -0
  215. package/dist/core/references/schema-proxy.js.map +1 -0
  216. package/dist/core/serialization/core.d.ts +15 -0
  217. package/dist/core/serialization/core.d.ts.map +1 -0
  218. package/dist/core/serialization/core.js +169 -0
  219. package/dist/core/serialization/core.js.map +1 -0
  220. package/dist/core/serialization/index.d.ts +9 -0
  221. package/dist/core/serialization/index.d.ts.map +1 -0
  222. package/dist/core/serialization/index.js +12 -0
  223. package/dist/core/serialization/index.js.map +1 -0
  224. package/dist/core/serialization/schema.d.ts +14 -0
  225. package/dist/core/serialization/schema.d.ts.map +1 -0
  226. package/dist/core/serialization/schema.js +33 -0
  227. package/dist/core/serialization/schema.js.map +1 -0
  228. package/dist/core/serialization/validation.d.ts +18 -0
  229. package/dist/core/serialization/validation.d.ts.map +1 -0
  230. package/dist/core/serialization/validation.js +165 -0
  231. package/dist/core/serialization/validation.js.map +1 -0
  232. package/dist/core/serialization/yaml.d.ts +10 -0
  233. package/dist/core/serialization/yaml.d.ts.map +1 -0
  234. package/dist/core/serialization/yaml.js +63 -0
  235. package/dist/core/serialization/yaml.js.map +1 -0
  236. package/dist/core/types/common.d.ts +41 -0
  237. package/dist/core/types/common.d.ts.map +1 -0
  238. package/dist/core/types/common.js +9 -0
  239. package/dist/core/types/common.js.map +1 -0
  240. package/dist/core/types/dependencies.d.ts +14 -0
  241. package/dist/core/types/dependencies.d.ts.map +1 -0
  242. package/dist/core/types/dependencies.js +5 -0
  243. package/dist/core/types/dependencies.js.map +1 -0
  244. package/dist/core/types/deployment.d.ts +265 -0
  245. package/dist/core/types/deployment.d.ts.map +1 -0
  246. package/dist/core/types/deployment.js +20 -0
  247. package/dist/core/types/deployment.js.map +1 -0
  248. package/dist/core/types/index.d.ts +19 -0
  249. package/dist/core/types/index.d.ts.map +1 -0
  250. package/dist/core/types/index.js +15 -0
  251. package/dist/core/types/index.js.map +1 -0
  252. package/dist/core/types/kubernetes.d.ts +352 -0
  253. package/dist/core/types/kubernetes.d.ts.map +1 -0
  254. package/dist/core/types/kubernetes.js +5 -0
  255. package/dist/core/types/kubernetes.js.map +1 -0
  256. package/dist/core/types/references.d.ts +54 -0
  257. package/dist/core/types/references.d.ts.map +1 -0
  258. package/dist/core/types/references.js +14 -0
  259. package/dist/core/types/references.js.map +1 -0
  260. package/dist/core/types/resource-graph.d.ts +93 -0
  261. package/dist/core/types/resource-graph.d.ts.map +1 -0
  262. package/dist/core/types/resource-graph.js +8 -0
  263. package/dist/core/types/resource-graph.js.map +1 -0
  264. package/dist/core/types/serialization.d.ts +210 -0
  265. package/dist/core/types/serialization.d.ts.map +1 -0
  266. package/dist/core/types/serialization.js +5 -0
  267. package/dist/core/types/serialization.js.map +1 -0
  268. package/dist/core/types/yaml.d.ts +92 -0
  269. package/dist/core/types/yaml.d.ts.map +1 -0
  270. package/dist/core/types/yaml.js +2 -0
  271. package/dist/core/types/yaml.js.map +1 -0
  272. package/dist/core/types.d.ts +8 -0
  273. package/dist/core/types.d.ts.map +1 -0
  274. package/dist/core/types.js +9 -0
  275. package/dist/core/types.js.map +1 -0
  276. package/dist/core/validation/cel-validator.d.ts +47 -0
  277. package/dist/core/validation/cel-validator.d.ts.map +1 -0
  278. package/dist/core/validation/cel-validator.js +200 -0
  279. package/dist/core/validation/cel-validator.js.map +1 -0
  280. package/dist/core/yaml/index.d.ts +5 -0
  281. package/dist/core/yaml/index.d.ts.map +1 -0
  282. package/dist/core/yaml/index.js +5 -0
  283. package/dist/core/yaml/index.js.map +1 -0
  284. package/dist/core/yaml/path-resolver.d.ts +122 -0
  285. package/dist/core/yaml/path-resolver.d.ts.map +1 -0
  286. package/dist/core/yaml/path-resolver.js +556 -0
  287. package/dist/core/yaml/path-resolver.js.map +1 -0
  288. package/dist/core.d.ts +30 -0
  289. package/dist/core.d.ts.map +1 -0
  290. package/dist/core.js +59 -0
  291. package/dist/core.js.map +1 -0
  292. package/dist/factories/flux/git-repository.d.ts +62 -0
  293. package/dist/factories/flux/git-repository.d.ts.map +1 -0
  294. package/dist/factories/flux/git-repository.js +34 -0
  295. package/dist/factories/flux/git-repository.js.map +1 -0
  296. package/dist/factories/flux/index.d.ts +10 -0
  297. package/dist/factories/flux/index.d.ts.map +1 -0
  298. package/dist/factories/flux/index.js +11 -0
  299. package/dist/factories/flux/index.js.map +1 -0
  300. package/dist/factories/flux/kustomize/index.d.ts +4 -0
  301. package/dist/factories/flux/kustomize/index.d.ts.map +1 -0
  302. package/dist/factories/flux/kustomize/index.js +3 -0
  303. package/dist/factories/flux/kustomize/index.js.map +1 -0
  304. package/dist/factories/flux/kustomize/kustomization.d.ts +178 -0
  305. package/dist/factories/flux/kustomize/kustomization.d.ts.map +1 -0
  306. package/dist/factories/flux/kustomize/kustomization.js +108 -0
  307. package/dist/factories/flux/kustomize/kustomization.js.map +1 -0
  308. package/dist/factories/flux/kustomize/readiness-evaluators.d.ts +9 -0
  309. package/dist/factories/flux/kustomize/readiness-evaluators.d.ts.map +1 -0
  310. package/dist/factories/flux/kustomize/readiness-evaluators.js +71 -0
  311. package/dist/factories/flux/kustomize/readiness-evaluators.js.map +1 -0
  312. package/dist/factories/flux/kustomize/types.d.ts +2 -0
  313. package/dist/factories/flux/kustomize/types.d.ts.map +1 -0
  314. package/dist/factories/flux/kustomize/types.js +2 -0
  315. package/dist/factories/flux/kustomize/types.js.map +1 -0
  316. package/dist/factories/helm/helm-release.d.ts +139 -0
  317. package/dist/factories/helm/helm-release.d.ts.map +1 -0
  318. package/dist/factories/helm/helm-release.js +180 -0
  319. package/dist/factories/helm/helm-release.js.map +1 -0
  320. package/dist/factories/helm/helm-repository.d.ts +24 -0
  321. package/dist/factories/helm/helm-repository.d.ts.map +1 -0
  322. package/dist/factories/helm/helm-repository.js +57 -0
  323. package/dist/factories/helm/helm-repository.js.map +1 -0
  324. package/dist/factories/helm/index.d.ts +8 -0
  325. package/dist/factories/helm/index.d.ts.map +1 -0
  326. package/dist/factories/helm/index.js +8 -0
  327. package/dist/factories/helm/index.js.map +1 -0
  328. package/dist/factories/helm/readiness-evaluators.d.ts +55 -0
  329. package/dist/factories/helm/readiness-evaluators.d.ts.map +1 -0
  330. package/dist/factories/helm/readiness-evaluators.js +295 -0
  331. package/dist/factories/helm/readiness-evaluators.js.map +1 -0
  332. package/dist/factories/helm/types.d.ts +21 -0
  333. package/dist/factories/helm/types.d.ts.map +1 -0
  334. package/dist/factories/helm/types.js +2 -0
  335. package/dist/factories/helm/types.js.map +1 -0
  336. package/dist/factories/index.d.ts +12 -0
  337. package/dist/factories/index.d.ts.map +1 -0
  338. package/dist/factories/index.js +31 -0
  339. package/dist/factories/index.js.map +1 -0
  340. package/dist/factories/kro/index.d.ts +11 -0
  341. package/dist/factories/kro/index.d.ts.map +1 -0
  342. package/dist/factories/kro/index.js +10 -0
  343. package/dist/factories/kro/index.js.map +1 -0
  344. package/dist/factories/kro/kro-crd.d.ts +14 -0
  345. package/dist/factories/kro/kro-crd.d.ts.map +1 -0
  346. package/dist/factories/kro/kro-crd.js +51 -0
  347. package/dist/factories/kro/kro-crd.js.map +1 -0
  348. package/dist/factories/kro/kro-custom-resource.d.ts +23 -0
  349. package/dist/factories/kro/kro-custom-resource.d.ts.map +1 -0
  350. package/dist/factories/kro/kro-custom-resource.js +153 -0
  351. package/dist/factories/kro/kro-custom-resource.js.map +1 -0
  352. package/dist/factories/kro/resource-graph-definition.d.ts +12 -0
  353. package/dist/factories/kro/resource-graph-definition.d.ts.map +1 -0
  354. package/dist/factories/kro/resource-graph-definition.js +94 -0
  355. package/dist/factories/kro/resource-graph-definition.js.map +1 -0
  356. package/dist/factories/kubernetes/admission/index.d.ts +9 -0
  357. package/dist/factories/kubernetes/admission/index.d.ts.map +1 -0
  358. package/dist/factories/kubernetes/admission/index.js +9 -0
  359. package/dist/factories/kubernetes/admission/index.js.map +1 -0
  360. package/dist/factories/kubernetes/admission/mutating-webhook-configuration.d.ts +5 -0
  361. package/dist/factories/kubernetes/admission/mutating-webhook-configuration.d.ts.map +1 -0
  362. package/dist/factories/kubernetes/admission/mutating-webhook-configuration.js +10 -0
  363. package/dist/factories/kubernetes/admission/mutating-webhook-configuration.js.map +1 -0
  364. package/dist/factories/kubernetes/admission/validating-webhook-configuration.d.ts +5 -0
  365. package/dist/factories/kubernetes/admission/validating-webhook-configuration.d.ts.map +1 -0
  366. package/dist/factories/kubernetes/admission/validating-webhook-configuration.js +10 -0
  367. package/dist/factories/kubernetes/admission/validating-webhook-configuration.js.map +1 -0
  368. package/dist/factories/kubernetes/autoscaling/horizontal-pod-autoscaler-v1.d.ts +6 -0
  369. package/dist/factories/kubernetes/autoscaling/horizontal-pod-autoscaler-v1.d.ts.map +1 -0
  370. package/dist/factories/kubernetes/autoscaling/horizontal-pod-autoscaler-v1.js +35 -0
  371. package/dist/factories/kubernetes/autoscaling/horizontal-pod-autoscaler-v1.js.map +1 -0
  372. package/dist/factories/kubernetes/autoscaling/horizontal-pod-autoscaler.d.ts +6 -0
  373. package/dist/factories/kubernetes/autoscaling/horizontal-pod-autoscaler.d.ts.map +1 -0
  374. package/dist/factories/kubernetes/autoscaling/horizontal-pod-autoscaler.js +31 -0
  375. package/dist/factories/kubernetes/autoscaling/horizontal-pod-autoscaler.js.map +1 -0
  376. package/dist/factories/kubernetes/autoscaling/index.d.ts +9 -0
  377. package/dist/factories/kubernetes/autoscaling/index.d.ts.map +1 -0
  378. package/dist/factories/kubernetes/autoscaling/index.js +9 -0
  379. package/dist/factories/kubernetes/autoscaling/index.js.map +1 -0
  380. package/dist/factories/kubernetes/certificates/certificate-signing-request.d.ts +6 -0
  381. package/dist/factories/kubernetes/certificates/certificate-signing-request.d.ts.map +1 -0
  382. package/dist/factories/kubernetes/certificates/certificate-signing-request.js +48 -0
  383. package/dist/factories/kubernetes/certificates/certificate-signing-request.js.map +1 -0
  384. package/dist/factories/kubernetes/certificates/index.d.ts +8 -0
  385. package/dist/factories/kubernetes/certificates/index.d.ts.map +1 -0
  386. package/dist/factories/kubernetes/certificates/index.js +8 -0
  387. package/dist/factories/kubernetes/certificates/index.js.map +1 -0
  388. package/dist/factories/kubernetes/config/config-map.d.ts +5 -0
  389. package/dist/factories/kubernetes/config/config-map.d.ts.map +1 -0
  390. package/dist/factories/kubernetes/config/config-map.js +16 -0
  391. package/dist/factories/kubernetes/config/config-map.js.map +1 -0
  392. package/dist/factories/kubernetes/config/index.d.ts +9 -0
  393. package/dist/factories/kubernetes/config/index.d.ts.map +1 -0
  394. package/dist/factories/kubernetes/config/index.js +9 -0
  395. package/dist/factories/kubernetes/config/index.js.map +1 -0
  396. package/dist/factories/kubernetes/config/secret.d.ts +5 -0
  397. package/dist/factories/kubernetes/config/secret.d.ts.map +1 -0
  398. package/dist/factories/kubernetes/config/secret.js +16 -0
  399. package/dist/factories/kubernetes/config/secret.js.map +1 -0
  400. package/dist/factories/kubernetes/coordination/index.d.ts +8 -0
  401. package/dist/factories/kubernetes/coordination/index.d.ts.map +1 -0
  402. package/dist/factories/kubernetes/coordination/index.js +8 -0
  403. package/dist/factories/kubernetes/coordination/index.js.map +1 -0
  404. package/dist/factories/kubernetes/coordination/lease.d.ts +5 -0
  405. package/dist/factories/kubernetes/coordination/lease.d.ts.map +1 -0
  406. package/dist/factories/kubernetes/coordination/lease.js +10 -0
  407. package/dist/factories/kubernetes/coordination/lease.js.map +1 -0
  408. package/dist/factories/kubernetes/core/component-status.d.ts +4 -0
  409. package/dist/factories/kubernetes/core/component-status.d.ts.map +1 -0
  410. package/dist/factories/kubernetes/core/component-status.js +25 -0
  411. package/dist/factories/kubernetes/core/component-status.js.map +1 -0
  412. package/dist/factories/kubernetes/core/index.d.ts +11 -0
  413. package/dist/factories/kubernetes/core/index.d.ts.map +1 -0
  414. package/dist/factories/kubernetes/core/index.js +11 -0
  415. package/dist/factories/kubernetes/core/index.js.map +1 -0
  416. package/dist/factories/kubernetes/core/namespace.d.ts +9 -0
  417. package/dist/factories/kubernetes/core/namespace.d.ts.map +1 -0
  418. package/dist/factories/kubernetes/core/namespace.js +48 -0
  419. package/dist/factories/kubernetes/core/namespace.js.map +1 -0
  420. package/dist/factories/kubernetes/core/node.d.ts +6 -0
  421. package/dist/factories/kubernetes/core/node.d.ts.map +1 -0
  422. package/dist/factories/kubernetes/core/node.js +34 -0
  423. package/dist/factories/kubernetes/core/node.js.map +1 -0
  424. package/dist/factories/kubernetes/core/pod.d.ts +6 -0
  425. package/dist/factories/kubernetes/core/pod.d.ts.map +1 -0
  426. package/dist/factories/kubernetes/core/pod.js +44 -0
  427. package/dist/factories/kubernetes/core/pod.js.map +1 -0
  428. package/dist/factories/kubernetes/extensions/custom-resource-definition.d.ts +6 -0
  429. package/dist/factories/kubernetes/extensions/custom-resource-definition.d.ts.map +1 -0
  430. package/dist/factories/kubernetes/extensions/custom-resource-definition.js +45 -0
  431. package/dist/factories/kubernetes/extensions/custom-resource-definition.js.map +1 -0
  432. package/dist/factories/kubernetes/extensions/custom-resource.d.ts +12 -0
  433. package/dist/factories/kubernetes/extensions/custom-resource.d.ts.map +1 -0
  434. package/dist/factories/kubernetes/extensions/custom-resource.js +17 -0
  435. package/dist/factories/kubernetes/extensions/custom-resource.js.map +1 -0
  436. package/dist/factories/kubernetes/extensions/index.d.ts +9 -0
  437. package/dist/factories/kubernetes/extensions/index.d.ts.map +1 -0
  438. package/dist/factories/kubernetes/extensions/index.js +9 -0
  439. package/dist/factories/kubernetes/extensions/index.js.map +1 -0
  440. package/dist/factories/kubernetes/index.d.ts +24 -0
  441. package/dist/factories/kubernetes/index.d.ts.map +1 -0
  442. package/dist/factories/kubernetes/index.js +75 -0
  443. package/dist/factories/kubernetes/index.js.map +1 -0
  444. package/dist/factories/kubernetes/networking/endpoint-slice.d.ts +4 -0
  445. package/dist/factories/kubernetes/networking/endpoint-slice.d.ts.map +1 -0
  446. package/dist/factories/kubernetes/networking/endpoint-slice.js +10 -0
  447. package/dist/factories/kubernetes/networking/endpoint-slice.js.map +1 -0
  448. package/dist/factories/kubernetes/networking/endpoints.d.ts +4 -0
  449. package/dist/factories/kubernetes/networking/endpoints.d.ts.map +1 -0
  450. package/dist/factories/kubernetes/networking/endpoints.js +39 -0
  451. package/dist/factories/kubernetes/networking/endpoints.js.map +1 -0
  452. package/dist/factories/kubernetes/networking/index.d.ts +13 -0
  453. package/dist/factories/kubernetes/networking/index.d.ts.map +1 -0
  454. package/dist/factories/kubernetes/networking/index.js +13 -0
  455. package/dist/factories/kubernetes/networking/index.js.map +1 -0
  456. package/dist/factories/kubernetes/networking/ingress-class.d.ts +5 -0
  457. package/dist/factories/kubernetes/networking/ingress-class.d.ts.map +1 -0
  458. package/dist/factories/kubernetes/networking/ingress-class.js +16 -0
  459. package/dist/factories/kubernetes/networking/ingress-class.js.map +1 -0
  460. package/dist/factories/kubernetes/networking/ingress.d.ts +5 -0
  461. package/dist/factories/kubernetes/networking/ingress.d.ts.map +1 -0
  462. package/dist/factories/kubernetes/networking/ingress.js +33 -0
  463. package/dist/factories/kubernetes/networking/ingress.js.map +1 -0
  464. package/dist/factories/kubernetes/networking/network-policy.d.ts +5 -0
  465. package/dist/factories/kubernetes/networking/network-policy.d.ts.map +1 -0
  466. package/dist/factories/kubernetes/networking/network-policy.js +17 -0
  467. package/dist/factories/kubernetes/networking/network-policy.js.map +1 -0
  468. package/dist/factories/kubernetes/networking/service.d.ts +5 -0
  469. package/dist/factories/kubernetes/networking/service.d.ts.map +1 -0
  470. package/dist/factories/kubernetes/networking/service.js +64 -0
  471. package/dist/factories/kubernetes/networking/service.js.map +1 -0
  472. package/dist/factories/kubernetes/policy/index.d.ts +10 -0
  473. package/dist/factories/kubernetes/policy/index.d.ts.map +1 -0
  474. package/dist/factories/kubernetes/policy/index.js +10 -0
  475. package/dist/factories/kubernetes/policy/index.js.map +1 -0
  476. package/dist/factories/kubernetes/policy/limit-range.d.ts +5 -0
  477. package/dist/factories/kubernetes/policy/limit-range.d.ts.map +1 -0
  478. package/dist/factories/kubernetes/policy/limit-range.js +17 -0
  479. package/dist/factories/kubernetes/policy/limit-range.js.map +1 -0
  480. package/dist/factories/kubernetes/policy/pod-disruption-budget.d.ts +6 -0
  481. package/dist/factories/kubernetes/policy/pod-disruption-budget.d.ts.map +1 -0
  482. package/dist/factories/kubernetes/policy/pod-disruption-budget.js +55 -0
  483. package/dist/factories/kubernetes/policy/pod-disruption-budget.js.map +1 -0
  484. package/dist/factories/kubernetes/policy/resource-quota.d.ts +6 -0
  485. package/dist/factories/kubernetes/policy/resource-quota.d.ts.map +1 -0
  486. package/dist/factories/kubernetes/policy/resource-quota.js +43 -0
  487. package/dist/factories/kubernetes/policy/resource-quota.js.map +1 -0
  488. package/dist/factories/kubernetes/rbac/cluster-role-binding.d.ts +4 -0
  489. package/dist/factories/kubernetes/rbac/cluster-role-binding.d.ts.map +1 -0
  490. package/dist/factories/kubernetes/rbac/cluster-role-binding.js +17 -0
  491. package/dist/factories/kubernetes/rbac/cluster-role-binding.js.map +1 -0
  492. package/dist/factories/kubernetes/rbac/cluster-role.d.ts +4 -0
  493. package/dist/factories/kubernetes/rbac/cluster-role.d.ts.map +1 -0
  494. package/dist/factories/kubernetes/rbac/cluster-role.js +17 -0
  495. package/dist/factories/kubernetes/rbac/cluster-role.js.map +1 -0
  496. package/dist/factories/kubernetes/rbac/index.d.ts +12 -0
  497. package/dist/factories/kubernetes/rbac/index.d.ts.map +1 -0
  498. package/dist/factories/kubernetes/rbac/index.js +12 -0
  499. package/dist/factories/kubernetes/rbac/index.js.map +1 -0
  500. package/dist/factories/kubernetes/rbac/role-binding.d.ts +4 -0
  501. package/dist/factories/kubernetes/rbac/role-binding.d.ts.map +1 -0
  502. package/dist/factories/kubernetes/rbac/role-binding.js +17 -0
  503. package/dist/factories/kubernetes/rbac/role-binding.js.map +1 -0
  504. package/dist/factories/kubernetes/rbac/role.d.ts +4 -0
  505. package/dist/factories/kubernetes/rbac/role.d.ts.map +1 -0
  506. package/dist/factories/kubernetes/rbac/role.js +17 -0
  507. package/dist/factories/kubernetes/rbac/role.js.map +1 -0
  508. package/dist/factories/kubernetes/rbac/service-account.d.ts +4 -0
  509. package/dist/factories/kubernetes/rbac/service-account.d.ts.map +1 -0
  510. package/dist/factories/kubernetes/rbac/service-account.js +17 -0
  511. package/dist/factories/kubernetes/rbac/service-account.js.map +1 -0
  512. package/dist/factories/kubernetes/scheduling/index.d.ts +9 -0
  513. package/dist/factories/kubernetes/scheduling/index.d.ts.map +1 -0
  514. package/dist/factories/kubernetes/scheduling/index.js +9 -0
  515. package/dist/factories/kubernetes/scheduling/index.js.map +1 -0
  516. package/dist/factories/kubernetes/scheduling/priority-class.d.ts +4 -0
  517. package/dist/factories/kubernetes/scheduling/priority-class.d.ts.map +1 -0
  518. package/dist/factories/kubernetes/scheduling/priority-class.js +16 -0
  519. package/dist/factories/kubernetes/scheduling/priority-class.js.map +1 -0
  520. package/dist/factories/kubernetes/scheduling/runtime-class.d.ts +5 -0
  521. package/dist/factories/kubernetes/scheduling/runtime-class.d.ts.map +1 -0
  522. package/dist/factories/kubernetes/scheduling/runtime-class.js +10 -0
  523. package/dist/factories/kubernetes/scheduling/runtime-class.js.map +1 -0
  524. package/dist/factories/kubernetes/storage/csi-driver.d.ts +5 -0
  525. package/dist/factories/kubernetes/storage/csi-driver.d.ts.map +1 -0
  526. package/dist/factories/kubernetes/storage/csi-driver.js +16 -0
  527. package/dist/factories/kubernetes/storage/csi-driver.js.map +1 -0
  528. package/dist/factories/kubernetes/storage/csi-node.d.ts +5 -0
  529. package/dist/factories/kubernetes/storage/csi-node.d.ts.map +1 -0
  530. package/dist/factories/kubernetes/storage/csi-node.js +10 -0
  531. package/dist/factories/kubernetes/storage/csi-node.js.map +1 -0
  532. package/dist/factories/kubernetes/storage/index.d.ts +13 -0
  533. package/dist/factories/kubernetes/storage/index.d.ts.map +1 -0
  534. package/dist/factories/kubernetes/storage/index.js +13 -0
  535. package/dist/factories/kubernetes/storage/index.js.map +1 -0
  536. package/dist/factories/kubernetes/storage/persistent-volume-claim.d.ts +6 -0
  537. package/dist/factories/kubernetes/storage/persistent-volume-claim.d.ts.map +1 -0
  538. package/dist/factories/kubernetes/storage/persistent-volume-claim.js +30 -0
  539. package/dist/factories/kubernetes/storage/persistent-volume-claim.js.map +1 -0
  540. package/dist/factories/kubernetes/storage/persistent-volume.d.ts +6 -0
  541. package/dist/factories/kubernetes/storage/persistent-volume.d.ts.map +1 -0
  542. package/dist/factories/kubernetes/storage/persistent-volume.js +47 -0
  543. package/dist/factories/kubernetes/storage/persistent-volume.js.map +1 -0
  544. package/dist/factories/kubernetes/storage/storage-class.d.ts +4 -0
  545. package/dist/factories/kubernetes/storage/storage-class.d.ts.map +1 -0
  546. package/dist/factories/kubernetes/storage/storage-class.js +17 -0
  547. package/dist/factories/kubernetes/storage/storage-class.js.map +1 -0
  548. package/dist/factories/kubernetes/storage/volume-attachment.d.ts +6 -0
  549. package/dist/factories/kubernetes/storage/volume-attachment.d.ts.map +1 -0
  550. package/dist/factories/kubernetes/storage/volume-attachment.js +10 -0
  551. package/dist/factories/kubernetes/storage/volume-attachment.js.map +1 -0
  552. package/dist/factories/kubernetes/types.d.ts +8 -0
  553. package/dist/factories/kubernetes/types.d.ts.map +1 -0
  554. package/dist/factories/kubernetes/types.js +8 -0
  555. package/dist/factories/kubernetes/types.js.map +1 -0
  556. package/dist/factories/kubernetes/workloads/cron-job.d.ts +6 -0
  557. package/dist/factories/kubernetes/workloads/cron-job.d.ts.map +1 -0
  558. package/dist/factories/kubernetes/workloads/cron-job.js +53 -0
  559. package/dist/factories/kubernetes/workloads/cron-job.js.map +1 -0
  560. package/dist/factories/kubernetes/workloads/daemon-set.d.ts +6 -0
  561. package/dist/factories/kubernetes/workloads/daemon-set.d.ts.map +1 -0
  562. package/dist/factories/kubernetes/workloads/daemon-set.js +32 -0
  563. package/dist/factories/kubernetes/workloads/daemon-set.js.map +1 -0
  564. package/dist/factories/kubernetes/workloads/deployment.d.ts +5 -0
  565. package/dist/factories/kubernetes/workloads/deployment.d.ts.map +1 -0
  566. package/dist/factories/kubernetes/workloads/deployment.js +59 -0
  567. package/dist/factories/kubernetes/workloads/deployment.js.map +1 -0
  568. package/dist/factories/kubernetes/workloads/index.d.ts +14 -0
  569. package/dist/factories/kubernetes/workloads/index.d.ts.map +1 -0
  570. package/dist/factories/kubernetes/workloads/index.js +14 -0
  571. package/dist/factories/kubernetes/workloads/index.js.map +1 -0
  572. package/dist/factories/kubernetes/workloads/job.d.ts +6 -0
  573. package/dist/factories/kubernetes/workloads/job.d.ts.map +1 -0
  574. package/dist/factories/kubernetes/workloads/job.js +105 -0
  575. package/dist/factories/kubernetes/workloads/job.js.map +1 -0
  576. package/dist/factories/kubernetes/workloads/replica-set.d.ts +6 -0
  577. package/dist/factories/kubernetes/workloads/replica-set.d.ts.map +1 -0
  578. package/dist/factories/kubernetes/workloads/replica-set.js +33 -0
  579. package/dist/factories/kubernetes/workloads/replica-set.js.map +1 -0
  580. package/dist/factories/kubernetes/workloads/replication-controller.d.ts +6 -0
  581. package/dist/factories/kubernetes/workloads/replication-controller.d.ts.map +1 -0
  582. package/dist/factories/kubernetes/workloads/replication-controller.js +56 -0
  583. package/dist/factories/kubernetes/workloads/replication-controller.js.map +1 -0
  584. package/dist/factories/kubernetes/workloads/stateful-set.d.ts +6 -0
  585. package/dist/factories/kubernetes/workloads/stateful-set.d.ts.map +1 -0
  586. package/dist/factories/kubernetes/workloads/stateful-set.js +81 -0
  587. package/dist/factories/kubernetes/workloads/stateful-set.js.map +1 -0
  588. package/dist/factories/kubernetes/yaml/index.d.ts +6 -0
  589. package/dist/factories/kubernetes/yaml/index.d.ts.map +1 -0
  590. package/dist/factories/kubernetes/yaml/index.js +6 -0
  591. package/dist/factories/kubernetes/yaml/index.js.map +1 -0
  592. package/dist/factories/kubernetes/yaml/yaml-directory.d.ts +54 -0
  593. package/dist/factories/kubernetes/yaml/yaml-directory.d.ts.map +1 -0
  594. package/dist/factories/kubernetes/yaml/yaml-directory.js +178 -0
  595. package/dist/factories/kubernetes/yaml/yaml-directory.js.map +1 -0
  596. package/dist/factories/kubernetes/yaml/yaml-file.d.ts +54 -0
  597. package/dist/factories/kubernetes/yaml/yaml-file.d.ts.map +1 -0
  598. package/dist/factories/kubernetes/yaml/yaml-file.js +181 -0
  599. package/dist/factories/kubernetes/yaml/yaml-file.js.map +1 -0
  600. package/dist/factories/shared.d.ts +11 -0
  601. package/dist/factories/shared.d.ts.map +1 -0
  602. package/dist/factories/shared.js +364 -0
  603. package/dist/factories/shared.js.map +1 -0
  604. package/dist/index.d.ts +9 -0
  605. package/dist/index.d.ts.map +1 -0
  606. package/dist/index.js +49 -0
  607. package/dist/index.js.map +1 -0
  608. package/dist/utils/helpers.d.ts +69 -0
  609. package/dist/utils/helpers.d.ts.map +1 -0
  610. package/dist/utils/helpers.js +405 -0
  611. package/dist/utils/helpers.js.map +1 -0
  612. package/dist/utils/index.d.ts +9 -0
  613. package/dist/utils/index.d.ts.map +1 -0
  614. package/dist/utils/index.js +11 -0
  615. package/dist/utils/index.js.map +1 -0
  616. package/dist/utils/type-guards.d.ts +34 -0
  617. package/dist/utils/type-guards.d.ts.map +1 -0
  618. package/dist/utils/type-guards.js +66 -0
  619. package/dist/utils/type-guards.js.map +1 -0
  620. package/package.json +109 -0
@@ -0,0 +1,163 @@
1
+ /**
2
+ * Schema Proxy Factory for Kro Factory Pattern
3
+ *
4
+ * This module provides functionality to create schema proxies that return
5
+ * KubernetesRef objects for field access, specifically marked as schema references.
6
+ */
7
+ import { KUBERNETES_REF_BRAND } from '../constants/brands.js';
8
+ /**
9
+ * Creates a KubernetesRef object specifically for schema references
10
+ * These are distinguished from external references by using a special resource ID prefix
11
+ */
12
+ function createSchemaRefFactory(fieldPath) {
13
+ const proxyTarget = () => {
14
+ // Empty function used as proxy target
15
+ };
16
+ Object.defineProperty(proxyTarget, KUBERNETES_REF_BRAND, { value: true, enumerable: false });
17
+ Object.defineProperty(proxyTarget, 'resourceId', { value: '__schema__', enumerable: false });
18
+ Object.defineProperty(proxyTarget, 'fieldPath', { value: fieldPath, enumerable: false });
19
+ return new Proxy(proxyTarget, {
20
+ get(target, prop) {
21
+ // Check for our defined properties first
22
+ if (prop === KUBERNETES_REF_BRAND || prop === 'resourceId' || prop === 'fieldPath') {
23
+ return target[prop];
24
+ }
25
+ // Only preserve essential function properties, not 'name' or other properties
26
+ // that might conflict with field names
27
+ if (prop === 'toString' ||
28
+ prop === 'valueOf' ||
29
+ prop === 'call' ||
30
+ prop === 'apply' ||
31
+ prop === 'bind') {
32
+ return target[prop];
33
+ }
34
+ // Only preserve essential function properties, not 'name' or other properties
35
+ // that might conflict with field names
36
+ if (prop === 'call' ||
37
+ prop === 'apply' ||
38
+ prop === 'bind') {
39
+ return target[prop];
40
+ }
41
+ // For any other property, create a new nested reference
42
+ return createSchemaRefFactory(`${fieldPath}.${String(prop)}`);
43
+ },
44
+ });
45
+ }
46
+ /**
47
+ * Creates a MagicProxy for a specific schema section (spec or status)
48
+ * that returns KubernetesRef objects for any accessed property
49
+ */
50
+ function createSchemaMagicProxy(basePath) {
51
+ // Create an empty target object that will serve as the proxy base
52
+ const target = {};
53
+ return new Proxy(target, {
54
+ get: (obj, prop) => {
55
+ if (typeof prop !== 'string') {
56
+ return obj[prop];
57
+ }
58
+ // Always return a schema reference for any string property access
59
+ return createSchemaRefFactory(`${basePath}.${prop}`);
60
+ },
61
+ });
62
+ }
63
+ /**
64
+ * Creates a schema proxy that provides type-safe access to spec and status fields
65
+ *
66
+ * @returns SchemaProxy with spec and status MagicProxy objects
67
+ *
68
+ * @example
69
+ * ```typescript
70
+ * interface MySpec { name: string; replicas: number; }
71
+ * interface MyStatus { ready: boolean; url: string; }
72
+ *
73
+ * const schema = createSchemaProxy<MySpec, MyStatus>();
74
+ *
75
+ * // These return KubernetesRef objects with schema marking
76
+ * const nameRef = schema.spec.name; // KubernetesRef with fieldPath: "spec.name"
77
+ * const readyRef = schema.status.ready; // KubernetesRef with fieldPath: "status.ready"
78
+ * ```
79
+ */
80
+ export function createSchemaProxy() {
81
+ return {
82
+ spec: createSchemaMagicProxy('spec'),
83
+ status: createSchemaMagicProxy('status'),
84
+ };
85
+ }
86
+ /**
87
+ * Utility function to check if a KubernetesRef is a schema reference
88
+ *
89
+ * @param ref - The KubernetesRef to check
90
+ * @returns true if the reference is a schema reference, false otherwise
91
+ */
92
+ export function isSchemaReference(ref) {
93
+ return ref.resourceId === '__schema__';
94
+ }
95
+ /**
96
+ * Create a magic proxy for resources in StatusBuilder
97
+ * This allows accessing resource.status.field as KubernetesRef objects while preserving types
98
+ */
99
+ export function createResourcesProxy(resources) {
100
+ const proxiedResources = {};
101
+ for (const [resourceKey, resource] of Object.entries(resources)) {
102
+ // Create a proxy that preserves the Enhanced resource structure
103
+ // but converts field access to resource references instead of schema references
104
+ proxiedResources[resourceKey] = new Proxy(resource, {
105
+ get(target, prop) {
106
+ if (prop === 'metadata') {
107
+ return resource.metadata;
108
+ }
109
+ if (prop === 'kind') {
110
+ return resource.kind;
111
+ }
112
+ if (prop === 'apiVersion') {
113
+ return resource.apiVersion;
114
+ }
115
+ if (prop === 'spec' || prop === 'status') {
116
+ // Return a proxy that converts the MagicProxy field access to resource references
117
+ return createResourceMagicProxy(resourceKey, prop, target[prop]);
118
+ }
119
+ // For all other properties, return the original value
120
+ return target[prop];
121
+ }
122
+ });
123
+ }
124
+ return proxiedResources;
125
+ }
126
+ /**
127
+ * Create a magic proxy that converts Enhanced MagicProxy field access to resource references
128
+ * Uses recursive proxy creation similar to createSchemaRefFactory for deep nesting support
129
+ */
130
+ function createResourceMagicProxy(resourceId, fieldType, _originalProxy) {
131
+ return createResourceRefFactory(resourceId, fieldType);
132
+ }
133
+ /**
134
+ * Creates a KubernetesRef object for resource references with recursive nesting support
135
+ * Similar to createSchemaRefFactory but for resource references instead of schema references
136
+ */
137
+ function createResourceRefFactory(resourceId, fieldPath) {
138
+ const proxyTarget = () => {
139
+ // Empty function used as proxy target
140
+ };
141
+ Object.defineProperty(proxyTarget, KUBERNETES_REF_BRAND, { value: true, enumerable: false });
142
+ Object.defineProperty(proxyTarget, 'resourceId', { value: resourceId, enumerable: false });
143
+ Object.defineProperty(proxyTarget, 'fieldPath', { value: fieldPath, enumerable: false });
144
+ return new Proxy(proxyTarget, {
145
+ get(target, prop) {
146
+ // Check for our defined properties first
147
+ if (prop === KUBERNETES_REF_BRAND || prop === 'resourceId' || prop === 'fieldPath') {
148
+ return target[prop];
149
+ }
150
+ // Preserve essential function properties
151
+ if (prop === 'toString' ||
152
+ prop === 'valueOf' ||
153
+ prop === 'call' ||
154
+ prop === 'apply' ||
155
+ prop === 'bind') {
156
+ return target[prop];
157
+ }
158
+ // For any other property, create a new nested reference
159
+ return createResourceRefFactory(resourceId, `${fieldPath}.${String(prop)}`);
160
+ },
161
+ });
162
+ }
163
+ //# sourceMappingURL=schema-proxy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema-proxy.js","sourceRoot":"","sources":["../../../src/core/references/schema-proxy.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Core serialization functionality for TypeKro
3
+ *
4
+ * This module provides the main serialization functions to convert
5
+ * TypeScript resource definitions to Kro ResourceGraphDefinition YAML manifests.
6
+ */
7
+ import type { TypedResourceGraph, DeploymentClosure } from '../types/deployment.js';
8
+ import type { MagicAssignableShape, ResourceGraphDefinition, SchemaProxy, SerializationOptions } from '../types/serialization.js';
9
+ import type { Enhanced, KroCompatibleType } from '../types.js';
10
+ /**
11
+ * Create a new typed resource graph with factory pattern support
12
+ * This is the new API with definition-first parameter and separate builder functions
13
+ */
14
+ export declare function toResourceGraph<TSpec extends KroCompatibleType, TStatus extends KroCompatibleType, TResources extends Record<string, Enhanced<any, any> | DeploymentClosure>>(definition: ResourceGraphDefinition<TSpec, TStatus>, resourceBuilder: (schema: SchemaProxy<TSpec, TStatus>) => TResources, statusBuilder: (schema: SchemaProxy<TSpec, TStatus>, resources: TResources) => MagicAssignableShape<TStatus>, options?: SerializationOptions): TypedResourceGraph<TSpec, TStatus>;
15
+ //# sourceMappingURL=core.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"core.d.ts","sourceRoot":"","sources":["../../../src/core/serialization/core.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAQH,OAAO,KAAK,EAKV,kBAAkB,EAClB,iBAAiB,EAClB,MAAM,wBAAwB,CAAC;AAChC,OAAO,KAAK,EACV,oBAAoB,EACpB,uBAAuB,EAEvB,WAAW,EACX,oBAAoB,EACrB,MAAM,2BAA2B,CAAC;AACnC,OAAO,KAAK,EAEV,QAAQ,EACR,iBAAiB,EAElB,MAAM,aAAa,CAAC;AA+DrB;;;GAGG;AACH,wBAAgB,eAAe,CAC7B,KAAK,SAAS,iBAAiB,EAC/B,OAAO,SAAS,iBAAiB,EAEjC,UAAU,SAAS,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,iBAAiB,CAAC,EAEzE,UAAU,EAAE,uBAAuB,CAAC,KAAK,EAAE,OAAO,CAAC,EAEnD,eAAe,EAAE,CAAC,MAAM,EAAE,WAAW,CAAC,KAAK,EAAE,OAAO,CAAC,KAAK,UAAU,EAEpE,aAAa,EAAE,CAAC,MAAM,EAAE,WAAW,CAAC,KAAK,EAAE,OAAO,CAAC,EAAE,SAAS,EAAE,UAAU,KAAK,oBAAoB,CAAC,OAAO,CAAC,EAC5G,OAAO,CAAC,EAAE,oBAAoB,GAC7B,kBAAkB,CAAC,KAAK,EAAE,OAAO,CAAC,CAGpC"}
@@ -0,0 +1,169 @@
1
+ /**
2
+ * Core serialization functionality for TypeKro
3
+ *
4
+ * This module provides the main serialization functions to convert
5
+ * TypeScript resource definitions to Kro ResourceGraphDefinition YAML manifests.
6
+ */
7
+ import { DependencyResolver } from '../dependencies/index.js';
8
+ import { createDirectResourceFactory } from '../deployment/direct-factory.js';
9
+ import { createKroResourceFactory } from '../deployment/kro-factory.js';
10
+ import { getComponentLogger } from '../logging/index.js';
11
+ import { createSchemaProxy } from '../references/index.js';
12
+ import { generateKroSchemaFromArktype } from './schema.js';
13
+ import { serializeResourceGraphToYaml } from './yaml.js';
14
+ import { validateResourceGraphDefinition } from '../validation/cel-validator.js';
15
+ import { optimizeStatusMappings } from '../evaluation/cel-optimizer.js';
16
+ /**
17
+ * Separate Enhanced<> resources from deployment closures in the builder result
18
+ */
19
+ function separateResourcesAndClosures(builderResult) {
20
+ const resources = {};
21
+ const closures = {};
22
+ for (const [key, value] of Object.entries(builderResult)) {
23
+ if (typeof value === 'function') {
24
+ // This is a deployment closure
25
+ closures[key] = value;
26
+ }
27
+ else if (value && typeof value === 'object' && 'kind' in value && 'apiVersion' in value) {
28
+ // This is an Enhanced<> resource
29
+ resources[key] = value;
30
+ }
31
+ else {
32
+ // Unknown type, treat as resource for backward compatibility
33
+ resources[key] = value;
34
+ }
35
+ }
36
+ return { resources, closures };
37
+ }
38
+ /**
39
+ * Create a ResourceGraph from resources for deployment
40
+ */
41
+ function _createResourceGraph(name, resources) {
42
+ const dependencyResolver = new DependencyResolver();
43
+ const resourceArray = Object.values(resources).map(resource => ({
44
+ ...resource,
45
+ id: resource.id || resource.metadata?.name || 'unknown',
46
+ }));
47
+ // Type assertion needed because we're converting KubernetesResource to DeployableK8sResource
48
+ // This is safe because the deployment engine handles the conversion internally
49
+ const deployableResources = resourceArray;
50
+ const dependencyGraph = dependencyResolver.buildDependencyGraph(deployableResources);
51
+ // Convert to ResourceGraphResource format
52
+ const resourceGraphResources = deployableResources.map(resource => ({
53
+ id: resource.id,
54
+ manifest: resource,
55
+ }));
56
+ return {
57
+ name,
58
+ resources: resourceGraphResources,
59
+ dependencyGraph,
60
+ };
61
+ }
62
+ // =============================================================================
63
+ // NEW FACTORY PATTERN API
64
+ // =============================================================================
65
+ /**
66
+ * Create a new typed resource graph with factory pattern support
67
+ * This is the new API with definition-first parameter and separate builder functions
68
+ */
69
+ export function toResourceGraph(definition,
70
+ // The resourceBuilder is now defined as returning that specific shape
71
+ resourceBuilder,
72
+ // The statusBuilder is now defined as ACCEPTING that specific shape
73
+ statusBuilder, options) {
74
+ // The implementation in createTypedResourceGraph must also be updated to match this signature.
75
+ return createTypedResourceGraph(definition, resourceBuilder, statusBuilder, options);
76
+ }
77
+ /**
78
+ * Create a typed resource graph implementation
79
+ */
80
+ function createTypedResourceGraph(definition, resourceBuilder, statusBuilder, options) {
81
+ const serializationLogger = getComponentLogger('resource-graph-serialization').child({
82
+ name: definition.name
83
+ });
84
+ // Validate resource graph name early
85
+ if (!definition.name || typeof definition.name !== 'string') {
86
+ throw new Error(`Invalid resource graph name: ${JSON.stringify(definition.name)}. Resource graph name must be a non-empty string.`);
87
+ }
88
+ const trimmedName = definition.name.trim();
89
+ if (trimmedName.length === 0) {
90
+ throw new Error(`Invalid resource graph name: Resource graph name cannot be empty or whitespace-only.`);
91
+ }
92
+ // Validate that the name will convert to a valid Kubernetes resource name
93
+ const kubernetesName = trimmedName
94
+ .replace(/([a-z])([A-Z])/g, '$1-$2')
95
+ .toLowerCase();
96
+ if (!/^[a-z0-9]([-a-z0-9]*[a-z0-9])?$/.test(kubernetesName)) {
97
+ 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.`);
98
+ }
99
+ if (kubernetesName.length > 253) {
100
+ throw new Error(`Invalid resource graph name: "${definition.name}" converts to "${kubernetesName}" which exceeds the 253 character limit for Kubernetes resource names.`);
101
+ }
102
+ // Apply default apiVersion if not specified
103
+ // Note: This should be just the version part (e.g., 'v1alpha1'), not the full API version
104
+ // The full API version (kro.run/v1alpha1) is constructed when creating instances
105
+ const schemaDefinition = {
106
+ apiVersion: definition.apiVersion || 'v1alpha1',
107
+ kind: definition.kind,
108
+ spec: definition.spec,
109
+ status: definition.status,
110
+ };
111
+ const schema = createSchemaProxy();
112
+ const builderResult = resourceBuilder(schema);
113
+ // Separate Enhanced<> resources from deployment closures
114
+ const { resources: resourcesWithKeys, closures } = separateResourcesAndClosures(builderResult);
115
+ // Pass Enhanced resources directly to StatusBuilder - they already have proper MagicProxy types
116
+ const statusMappings = statusBuilder(schema, resourcesWithKeys);
117
+ // Validate resource IDs and CEL expressions
118
+ const validation = validateResourceGraphDefinition(resourcesWithKeys, statusMappings);
119
+ if (!validation.isValid) {
120
+ const errorMessages = validation.errors.map(err => `${err.field}: ${err.error}`).join('\n');
121
+ throw new Error(`ResourceGraphDefinition validation failed:\n${errorMessages}`);
122
+ }
123
+ // Log warnings if any
124
+ if (validation.warnings.length > 0) {
125
+ serializationLogger.warn('ResourceGraphDefinition validation warnings', {
126
+ warnings: validation.warnings.map(w => ({
127
+ field: w.field,
128
+ error: w.error,
129
+ suggestion: w.suggestion
130
+ }))
131
+ });
132
+ }
133
+ // Evaluate and optimize CEL expressions
134
+ const evaluationContext = { resources: resourcesWithKeys, schema };
135
+ const { mappings: optimizedStatusMappings, optimizations } = optimizeStatusMappings(statusMappings, evaluationContext);
136
+ // Log optimizations if any
137
+ if (optimizations.length > 0) {
138
+ serializationLogger.info('CEL expression optimizations applied', { optimizations });
139
+ }
140
+ // schemaDefinition is already created above with default apiVersion handling
141
+ return {
142
+ name: definition.name,
143
+ resources: Object.values(resourcesWithKeys),
144
+ schema,
145
+ // Store closures for access during factory creation
146
+ closures,
147
+ async factory(mode, factoryOptions) {
148
+ if (mode === 'direct') {
149
+ const directFactory = createDirectResourceFactory(definition.name, resourcesWithKeys, schemaDefinition, { ...factoryOptions, closures } // Pass closures to factory
150
+ );
151
+ return directFactory;
152
+ }
153
+ else if (mode === 'kro') {
154
+ const kroFactory = createKroResourceFactory(definition.name, resourcesWithKeys, schemaDefinition, statusMappings, { ...factoryOptions, closures } // Pass closures to Kro factory for validation and execution
155
+ );
156
+ return kroFactory;
157
+ }
158
+ else {
159
+ throw new Error(`Unsupported factory mode: ${mode}`);
160
+ }
161
+ },
162
+ toYaml() {
163
+ // Generate ResourceGraphDefinition YAML with user-defined status mappings
164
+ const kroSchema = generateKroSchemaFromArktype(definition.name, schemaDefinition, resourcesWithKeys, optimizedStatusMappings);
165
+ return serializeResourceGraphToYaml(definition.name, resourcesWithKeys, options, kroSchema);
166
+ },
167
+ };
168
+ }
169
+ //# sourceMappingURL=core.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"core.js","sourceRoot":"","sources":["../../../src/core/serialization/core.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Serialization module exports
3
+ */
4
+ export type { ResourceBuilder, ResourceDependency, SchemaDefinition, SerializationContext, SerializationOptions, ValidationResult, } from '../types/serialization.js';
5
+ export { toResourceGraph } from './core.js';
6
+ export { generateKroSchema, generateKroSchemaFromArktype } from './schema.js';
7
+ export { getDependencyOrder, validateResourceGraph, visualizeDependencies, } from './validation.js';
8
+ export { serializeResourceGraphToYaml } from './yaml.js';
9
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/core/serialization/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,YAAY,EACV,eAAe,EACf,kBAAkB,EAClB,gBAAgB,EAChB,oBAAoB,EACpB,oBAAoB,EACpB,gBAAgB,GACjB,MAAM,2BAA2B,CAAC;AAEnC,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAE5C,OAAO,EAAE,iBAAiB,EAAE,4BAA4B,EAAE,MAAM,aAAa,CAAC;AAG9E,OAAO,EACL,kBAAkB,EAClB,qBAAqB,EACrB,qBAAqB,GACtB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EAAE,4BAA4B,EAAE,MAAM,WAAW,CAAC"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Serialization module exports
3
+ */
4
+ // Core serialization functions
5
+ export { toResourceGraph } from './core.js';
6
+ // Schema generation
7
+ export { generateKroSchema, generateKroSchemaFromArktype } from './schema.js';
8
+ // Validation and dependency analysis
9
+ export { getDependencyOrder, validateResourceGraph, visualizeDependencies, } from './validation.js';
10
+ // YAML generation
11
+ export { serializeResourceGraphToYaml } from './yaml.js';
12
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/core/serialization/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAWH,+BAA+B;AAC/B,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAC5C,oBAAoB;AACpB,OAAO,EAAE,iBAAiB,EAAE,4BAA4B,EAAE,MAAM,aAAa,CAAC;AAE9E,qCAAqC;AACrC,OAAO,EACL,kBAAkB,EAClB,qBAAqB,EACrB,qBAAqB,GACtB,MAAM,iBAAiB,CAAC;AACzB,kBAAkB;AAClB,OAAO,EAAE,4BAA4B,EAAE,MAAM,WAAW,CAAC"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Schema generation functionality for Kro ResourceGraphDefinitions
3
+ */
4
+ import type { SchemaDefinition } from '../types/serialization.js';
5
+ import type { KroCompatibleType, KroSimpleSchema, KubernetesResource } from '../types.js';
6
+ /**
7
+ * Generate Kro schema from resources
8
+ */
9
+ export declare function generateKroSchema(name: string, _resources: Record<string, KubernetesResource>): KroSimpleSchema;
10
+ /**
11
+ * Generate Kro schema from Arktype definition
12
+ */
13
+ export declare function generateKroSchemaFromArktype<TSpec extends KroCompatibleType, TStatus extends KroCompatibleType>(name: string, schemaDefinition: SchemaDefinition<TSpec, TStatus>, resources?: Record<string, KubernetesResource>, statusMappings?: any): KroSimpleSchema;
14
+ //# sourceMappingURL=schema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../src/core/serialization/schema.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAClE,OAAO,KAAK,EAAE,iBAAiB,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAE1F;;GAEG;AACH,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,kBAAkB,CAAC,GAC7C,eAAe,CAoBjB;AAED;;GAEG;AACH,wBAAgB,4BAA4B,CAC1C,KAAK,SAAS,iBAAiB,EAC/B,OAAO,SAAS,iBAAiB,EAEjC,IAAI,EAAE,MAAM,EACZ,gBAAgB,EAAE,gBAAgB,CAAC,KAAK,EAAE,OAAO,CAAC,EAClD,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,kBAAkB,CAAC,EAC9C,cAAc,CAAC,EAAE,GAAG,GACnB,eAAe,CAEjB"}
@@ -0,0 +1,33 @@
1
+ /**
2
+ * Schema generation functionality for Kro ResourceGraphDefinitions
3
+ */
4
+ import { arktypeToKroSchema, pascalCase } from '../../utils/index.js';
5
+ /**
6
+ * Generate Kro schema from resources
7
+ */
8
+ export function generateKroSchema(name, _resources) {
9
+ const pascalName = pascalCase(name);
10
+ // Generate spec fields based on resource names
11
+ // For now, we'll create a simple schema that doesn't require input parameters
12
+ // since our resources are fully defined in the ResourceGraphDefinition
13
+ const spec = {
14
+ // Add a simple name field that can be used for identification
15
+ name: `string | default="${name}"`,
16
+ };
17
+ return {
18
+ apiVersion: `v1alpha1`,
19
+ kind: pascalName,
20
+ spec,
21
+ status: {
22
+ // Empty status - Kro will automatically inject default fields
23
+ // (phase, message, observedGeneration, conditions, state)
24
+ },
25
+ };
26
+ }
27
+ /**
28
+ * Generate Kro schema from Arktype definition
29
+ */
30
+ export function generateKroSchemaFromArktype(name, schemaDefinition, resources, statusMappings) {
31
+ return arktypeToKroSchema(name, schemaDefinition, resources, statusMappings);
32
+ }
33
+ //# sourceMappingURL=schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../../src/core/serialization/schema.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,kBAAkB,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAItE;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAC/B,IAAY,EACZ,UAA8C;IAE9C,MAAM,UAAU,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;IAEpC,+CAA+C;IAC/C,8EAA8E;IAC9E,uEAAuE;IACvE,MAAM,IAAI,GAA2B;QACnC,8DAA8D;QAC9D,IAAI,EAAE,qBAAqB,IAAI,GAAG;KACnC,CAAC;IAEF,OAAO;QACL,UAAU,EAAE,UAAU;QACtB,IAAI,EAAE,UAAU;QAChB,IAAI;QACJ,MAAM,EAAE;QACN,8DAA8D;QAC9D,0DAA0D;SAC3D;KACF,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,4BAA4B,CAI1C,IAAY,EACZ,gBAAkD,EAClD,SAA8C,EAC9C,cAAoB;IAEpB,OAAO,kBAAkB,CAAC,IAAI,EAAE,gBAAgB,EAAE,SAAS,EAAE,cAAc,CAAC,CAAC;AAC/E,CAAC"}
@@ -0,0 +1,18 @@
1
+ /**
2
+ * Resource graph validation and dependency analysis
3
+ */
4
+ import type { ValidationResult } from '../types/serialization.js';
5
+ import type { KubernetesResource } from '../types.js';
6
+ /**
7
+ * Validate resource graph for cycles and missing dependencies
8
+ */
9
+ export declare function validateResourceGraph(resources: Record<string, KubernetesResource>): ValidationResult;
10
+ /**
11
+ * Get dependency order for resources (topological sort)
12
+ */
13
+ export declare function getDependencyOrder(resources: Record<string, KubernetesResource>): string[];
14
+ /**
15
+ * Debug utility to visualize resource dependencies
16
+ */
17
+ export declare function visualizeDependencies(resources: Record<string, KubernetesResource>): string;
18
+ //# sourceMappingURL=validation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../../../src/core/serialization/validation.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAClE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAEtD;;GAEG;AACH,wBAAgB,qBAAqB,CACnC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,kBAAkB,CAAC,GAC5C,gBAAgB,CA8ElB;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,kBAAkB,CAAC,GAAG,MAAM,EAAE,CA8E1F;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,kBAAkB,CAAC,GAAG,MAAM,CA2B3F"}
@@ -0,0 +1,165 @@
1
+ /**
2
+ * Resource graph validation and dependency analysis
3
+ */
4
+ import { extractResourceReferences, generateDeterministicResourceId } from '../../utils/index.js';
5
+ import { formatReferenceError } from '../errors.js';
6
+ /**
7
+ * Validate resource graph for cycles and missing dependencies
8
+ */
9
+ export function validateResourceGraph(resources) {
10
+ const errors = [];
11
+ // Extract all references and check for missing targets
12
+ const resourceIds = new Set();
13
+ const allReferences = [];
14
+ for (const [resourceName, resource] of Object.entries(resources)) {
15
+ // Use the embedded resource ID if available, otherwise generate deterministic one
16
+ const resourceId = resource.__resourceId ||
17
+ generateDeterministicResourceId(resource.kind, resource.metadata?.name || resourceName, resource.metadata?.namespace);
18
+ resourceIds.add(resourceId);
19
+ const refs = extractResourceReferences(resource);
20
+ for (const ref of refs) {
21
+ allReferences.push({
22
+ from: resourceId,
23
+ to: ref.resourceId,
24
+ field: ref.fieldPath,
25
+ });
26
+ }
27
+ }
28
+ // Check for missing dependencies with enhanced error messages
29
+ for (const ref of allReferences) {
30
+ if (!resourceIds.has(ref.to)) {
31
+ const availableResources = Array.from(resourceIds);
32
+ const referenceError = formatReferenceError(ref.from, ref.to, ref.field, availableResources);
33
+ errors.push(referenceError.message);
34
+ if (referenceError.suggestions) {
35
+ errors.push(...referenceError.suggestions.map((s) => ` Suggestion: ${s}`));
36
+ }
37
+ }
38
+ }
39
+ // Check for cycles using DFS
40
+ const visited = new Set();
41
+ const recursionStack = new Set();
42
+ function hasCycle(nodeId) {
43
+ if (recursionStack.has(nodeId)) {
44
+ return true;
45
+ }
46
+ if (visited.has(nodeId)) {
47
+ return false;
48
+ }
49
+ visited.add(nodeId);
50
+ recursionStack.add(nodeId);
51
+ // Find all dependencies of this node
52
+ const dependencies = allReferences.filter((ref) => ref.from === nodeId);
53
+ for (const dep of dependencies) {
54
+ if (hasCycle(dep.to)) {
55
+ return true;
56
+ }
57
+ }
58
+ recursionStack.delete(nodeId);
59
+ return false;
60
+ }
61
+ for (const resourceId of resourceIds) {
62
+ if (!visited.has(resourceId) && hasCycle(resourceId)) {
63
+ errors.push(`Circular dependency detected involving resource '${resourceId}'`);
64
+ break;
65
+ }
66
+ }
67
+ return {
68
+ valid: errors.length === 0,
69
+ errors,
70
+ };
71
+ }
72
+ /**
73
+ * Get dependency order for resources (topological sort)
74
+ */
75
+ export function getDependencyOrder(resources) {
76
+ const resourceIds = new Map();
77
+ const dependencies = [];
78
+ // Build dependency graph
79
+ for (const [resourceName, resource] of Object.entries(resources)) {
80
+ // Use the embedded resource ID if available, otherwise generate deterministic one
81
+ const resourceId = resource.__resourceId ||
82
+ generateDeterministicResourceId(resource.kind, resource.metadata?.name || resourceName, resource.metadata?.namespace);
83
+ resourceIds.set(resourceName, resourceId);
84
+ const refs = extractResourceReferences(resource);
85
+ for (const ref of refs) {
86
+ dependencies.push({
87
+ from: resourceId,
88
+ to: ref.resourceId,
89
+ });
90
+ }
91
+ }
92
+ // Topological sort using Kahn's algorithm
93
+ const inDegree = new Map();
94
+ const adjList = new Map();
95
+ // Initialize
96
+ for (const [resourceName] of Object.entries(resources)) {
97
+ const resourceId = resourceIds.get(resourceName);
98
+ if (resourceId) {
99
+ inDegree.set(resourceId, 0);
100
+ adjList.set(resourceId, []);
101
+ }
102
+ }
103
+ // Build adjacency list and calculate in-degrees
104
+ for (const dep of dependencies) {
105
+ adjList.get(dep.from)?.push(dep.to);
106
+ inDegree.set(dep.to, (inDegree.get(dep.to) || 0) + 1);
107
+ }
108
+ // Process nodes with no incoming edges
109
+ const queue = [];
110
+ const result = [];
111
+ for (const [resourceId, degree] of inDegree.entries()) {
112
+ if (degree === 0) {
113
+ queue.push(resourceId);
114
+ }
115
+ }
116
+ while (queue.length > 0) {
117
+ const current = queue.shift();
118
+ if (current) {
119
+ result.push(current);
120
+ const neighbors = adjList.get(current) || [];
121
+ for (const neighbor of neighbors) {
122
+ const newDegree = (inDegree.get(neighbor) || 0) - 1;
123
+ inDegree.set(neighbor, newDegree);
124
+ if (newDegree === 0) {
125
+ queue.push(neighbor);
126
+ }
127
+ }
128
+ }
129
+ }
130
+ // Convert back to resource names
131
+ const idToName = new Map();
132
+ for (const [name, id] of resourceIds.entries()) {
133
+ idToName.set(id, name);
134
+ }
135
+ return result.map((id) => idToName.get(id)).filter((name) => name !== undefined);
136
+ }
137
+ /**
138
+ * Debug utility to visualize resource dependencies
139
+ */
140
+ export function visualizeDependencies(resources) {
141
+ const lines = [];
142
+ lines.push('Resource Dependency Graph:');
143
+ lines.push('========================');
144
+ for (const [resourceName, resource] of Object.entries(resources)) {
145
+ const refs = extractResourceReferences(resource);
146
+ if (refs.length === 0) {
147
+ lines.push(`${resourceName} (no dependencies)`);
148
+ }
149
+ else {
150
+ lines.push(`${resourceName} depends on:`);
151
+ for (const ref of refs) {
152
+ lines.push(` - ${ref.resourceId}.${ref.fieldPath}`);
153
+ }
154
+ }
155
+ lines.push('');
156
+ }
157
+ const order = getDependencyOrder(resources);
158
+ lines.push('Deployment Order:');
159
+ lines.push('-----------------');
160
+ order.forEach((name, index) => {
161
+ lines.push(`${index + 1}. ${name}`);
162
+ });
163
+ return lines.join('\n');
164
+ }
165
+ //# sourceMappingURL=validation.js.map