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,220 @@
1
+ /**
2
+ * Dependency Graph Data Structure
3
+ *
4
+ * Represents dependencies between Kubernetes resources and provides
5
+ * efficient traversal and topological sorting capabilities.
6
+ */
7
+ import { CircularDependencyError } from '../errors.js';
8
+ export class DependencyGraph {
9
+ nodes = new Map();
10
+ /**
11
+ * Add a node to the dependency graph
12
+ */
13
+ addNode(id, resource) {
14
+ if (this.nodes.has(id)) {
15
+ throw new Error(`Node with id '${id}' already exists in dependency graph`);
16
+ }
17
+ this.nodes.set(id, {
18
+ id,
19
+ resource,
20
+ dependencies: new Set(),
21
+ dependents: new Set(),
22
+ });
23
+ }
24
+ /**
25
+ * Add a dependency edge from dependent to dependency
26
+ * @param dependentId - The resource that depends on another
27
+ * @param dependencyId - The resource being depended upon
28
+ */
29
+ addEdge(dependentId, dependencyId) {
30
+ const dependent = this.nodes.get(dependentId);
31
+ const dependency = this.nodes.get(dependencyId);
32
+ if (!dependent) {
33
+ throw new Error(`Dependent node '${dependentId}' not found in graph`);
34
+ }
35
+ if (!dependency) {
36
+ throw new Error(`Dependency node '${dependencyId}' not found in graph`);
37
+ }
38
+ dependent.dependencies.add(dependencyId);
39
+ dependency.dependents.add(dependentId);
40
+ }
41
+ /**
42
+ * Get all nodes in the graph
43
+ */
44
+ getNodes() {
45
+ return new Map(this.nodes);
46
+ }
47
+ /**
48
+ * Get a specific node by ID
49
+ */
50
+ getNode(id) {
51
+ return this.nodes.get(id);
52
+ }
53
+ /**
54
+ * Get all dependencies of a node
55
+ */
56
+ getDependencies(id) {
57
+ const node = this.nodes.get(id);
58
+ return node ? Array.from(node.dependencies) : [];
59
+ }
60
+ /**
61
+ * Get all dependents of a node
62
+ */
63
+ getDependents(id) {
64
+ const node = this.nodes.get(id);
65
+ return node ? Array.from(node.dependents) : [];
66
+ }
67
+ /**
68
+ * Check if the graph has any cycles
69
+ */
70
+ hasCycles() {
71
+ try {
72
+ this.getTopologicalOrder();
73
+ return false;
74
+ }
75
+ catch (error) {
76
+ return error instanceof CircularDependencyError;
77
+ }
78
+ }
79
+ /**
80
+ * Find cycles in the graph
81
+ */
82
+ findCycles() {
83
+ const visited = new Set();
84
+ const recursionStack = new Set();
85
+ const cycles = [];
86
+ const dfs = (nodeId, path) => {
87
+ if (recursionStack.has(nodeId)) {
88
+ // Found a cycle
89
+ const cycleStart = path.indexOf(nodeId);
90
+ cycles.push(path.slice(cycleStart).concat(nodeId));
91
+ return;
92
+ }
93
+ if (visited.has(nodeId)) {
94
+ return;
95
+ }
96
+ visited.add(nodeId);
97
+ recursionStack.add(nodeId);
98
+ path.push(nodeId);
99
+ const node = this.nodes.get(nodeId);
100
+ if (node) {
101
+ for (const dependencyId of node.dependencies) {
102
+ dfs(dependencyId, [...path]);
103
+ }
104
+ }
105
+ recursionStack.delete(nodeId);
106
+ path.pop();
107
+ };
108
+ for (const nodeId of this.nodes.keys()) {
109
+ if (!visited.has(nodeId)) {
110
+ dfs(nodeId, []);
111
+ }
112
+ }
113
+ return cycles;
114
+ }
115
+ /**
116
+ * Get topological ordering of nodes
117
+ * Throws CircularDependencyError if cycles are detected
118
+ */
119
+ getTopologicalOrder() {
120
+ const inDegree = new Map();
121
+ const queue = [];
122
+ const result = [];
123
+ // Initialize in-degree count
124
+ for (const [nodeId, node] of this.nodes) {
125
+ inDegree.set(nodeId, node.dependencies.size);
126
+ if (node.dependencies.size === 0) {
127
+ queue.push(nodeId);
128
+ }
129
+ }
130
+ // Process nodes with no dependencies
131
+ while (queue.length > 0) {
132
+ const nodeId = queue.shift();
133
+ if (!nodeId)
134
+ break;
135
+ result.push(nodeId);
136
+ const node = this.nodes.get(nodeId);
137
+ if (!node)
138
+ continue;
139
+ for (const dependentId of node.dependents) {
140
+ const currentInDegree = inDegree.get(dependentId);
141
+ if (currentInDegree === undefined)
142
+ continue;
143
+ const newInDegree = currentInDegree - 1;
144
+ inDegree.set(dependentId, newInDegree);
145
+ if (newInDegree === 0) {
146
+ queue.push(dependentId);
147
+ }
148
+ }
149
+ }
150
+ // Check for cycles
151
+ if (result.length !== this.nodes.size) {
152
+ const cycles = this.findCycles();
153
+ const cycle = cycles[0] || [];
154
+ const cycleStr = `${cycle.join(' -> ')} -> ${cycle[0]}`;
155
+ throw new CircularDependencyError(`Circular dependency detected: ${cycleStr}`, cycle);
156
+ }
157
+ return result;
158
+ }
159
+ /**
160
+ * Get nodes that have no dependencies (can be deployed first)
161
+ */
162
+ getRootNodes() {
163
+ return Array.from(this.nodes.entries())
164
+ .filter(([_, node]) => node.dependencies.size === 0)
165
+ .map(([id, _]) => id);
166
+ }
167
+ /**
168
+ * Get nodes that have no dependents (can be deleted first during rollback)
169
+ */
170
+ getLeafNodes() {
171
+ return Array.from(this.nodes.entries())
172
+ .filter(([_, node]) => node.dependents.size === 0)
173
+ .map(([id, _]) => id);
174
+ }
175
+ /**
176
+ * Clone the dependency graph
177
+ */
178
+ clone() {
179
+ const cloned = new DependencyGraph();
180
+ // Add all nodes
181
+ for (const [id, node] of this.nodes) {
182
+ cloned.addNode(id, node.resource);
183
+ }
184
+ // Add all edges
185
+ for (const [id, node] of this.nodes) {
186
+ for (const dependencyId of node.dependencies) {
187
+ cloned.addEdge(id, dependencyId);
188
+ }
189
+ }
190
+ return cloned;
191
+ }
192
+ /**
193
+ * Get a subgraph containing only the specified nodes and their relationships
194
+ */
195
+ getSubgraph(nodeIds) {
196
+ const subgraph = new DependencyGraph();
197
+ const nodeIdSet = new Set(nodeIds);
198
+ // Add nodes that exist in the original graph
199
+ for (const nodeId of nodeIds) {
200
+ const node = this.nodes.get(nodeId);
201
+ if (node) {
202
+ subgraph.addNode(nodeId, node.resource);
203
+ }
204
+ }
205
+ // Add edges between nodes in the subgraph
206
+ for (const nodeId of nodeIds) {
207
+ const node = this.nodes.get(nodeId);
208
+ if (node) {
209
+ for (const dependencyId of node.dependencies) {
210
+ if (nodeIdSet.has(dependencyId)) {
211
+ subgraph.addEdge(nodeId, dependencyId);
212
+ }
213
+ }
214
+ }
215
+ }
216
+ return subgraph;
217
+ }
218
+ }
219
+ // CircularDependencyError is now imported from ../errors.js
220
+ //# sourceMappingURL=graph.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"graph.js","sourceRoot":"","sources":["../../../src/core/dependencies/graph.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Dependencies module exports
3
+ */
4
+ export type { DependencyNode } from '../types/dependencies.js';
5
+ export { DependencyGraph } from './graph.js';
6
+ export { DependencyResolver } from './resolver.js';
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/core/dependencies/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,YAAY,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAE/D,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAE7C,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Dependencies module exports
3
+ */
4
+ // Dependency graph
5
+ export { DependencyGraph } from './graph.js';
6
+ // Dependency resolution
7
+ export { DependencyResolver } from './resolver.js';
8
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/core/dependencies/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,mBAAmB;AACnB,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAC7C,wBAAwB;AACxB,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC"}
@@ -0,0 +1,53 @@
1
+ /**
2
+ * Dependency Resolution Engine
3
+ *
4
+ * Analyzes Kubernetes resources to build dependency graphs and provides
5
+ * topological ordering for deployment.
6
+ */
7
+ import type { DeployableK8sResource, Enhanced } from '../types/kubernetes.js';
8
+ import { DependencyGraph } from './graph.js';
9
+ export declare class DependencyResolver {
10
+ private logger;
11
+ /**
12
+ * Build a dependency graph from a collection of Kubernetes resources
13
+ */
14
+ buildDependencyGraph(resources: DeployableK8sResource<Enhanced<unknown, unknown>>[]): DependencyGraph;
15
+ /**
16
+ * Get topological ordering of resources for deployment
17
+ */
18
+ getTopologicalOrder(graph: DependencyGraph): string[];
19
+ /**
20
+ * Validate that the dependency graph has no cycles
21
+ */
22
+ validateNoCycles(graph: DependencyGraph): void;
23
+ /**
24
+ * Extract all references from a resource
25
+ */
26
+ private extractReferences;
27
+ /**
28
+ * Parse CEL expressions to extract resource references
29
+ */
30
+ private parseCelReferences;
31
+ /**
32
+ * Analyze deployment order and identify parallelizable resources
33
+ */
34
+ analyzeDeploymentOrder(graph: DependencyGraph): DeploymentPlan;
35
+ /**
36
+ * Get rollback order (reverse of deployment order)
37
+ */
38
+ getRollbackOrder(graph: DependencyGraph): string[];
39
+ /**
40
+ * Find resources that can be deployed independently
41
+ */
42
+ findIndependentResources(graph: DependencyGraph): string[];
43
+ /**
44
+ * Find resources that nothing else depends on
45
+ */
46
+ findTerminalResources(graph: DependencyGraph): string[];
47
+ }
48
+ export interface DeploymentPlan {
49
+ levels: string[][];
50
+ totalResources: number;
51
+ maxParallelism: number;
52
+ }
53
+ //# sourceMappingURL=resolver.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolver.d.ts","sourceRoot":"","sources":["../../../src/core/dependencies/resolver.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAOH,OAAO,KAAK,EAAE,qBAAqB,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAC9E,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAE7C,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,MAAM,CAA6C;IAE3D;;OAEG;IACH,oBAAoB,CAClB,SAAS,EAAE,qBAAqB,CAAC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,EAAE,GAC7D,eAAe;IAgClB;;OAEG;IACH,mBAAmB,CAAC,KAAK,EAAE,eAAe,GAAG,MAAM,EAAE;IAIrD;;OAEG;IACH,gBAAgB,CAAC,KAAK,EAAE,eAAe,GAAG,IAAI;IAS9C;;OAEG;IACH,OAAO,CAAC,iBAAiB;IA+BzB;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAuB1B;;OAEG;IACH,sBAAsB,CAAC,KAAK,EAAE,eAAe,GAAG,cAAc;IAsC9D;;OAEG;IACH,gBAAgB,CAAC,KAAK,EAAE,eAAe,GAAG,MAAM,EAAE;IAKlD;;OAEG;IACH,wBAAwB,CAAC,KAAK,EAAE,eAAe,GAAG,MAAM,EAAE;IAI1D;;OAEG;IACH,qBAAqB,CAAC,KAAK,EAAE,eAAe,GAAG,MAAM,EAAE;CAGxD;AAED,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,MAAM,EAAE,EAAE,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;CACxB"}
@@ -0,0 +1,167 @@
1
+ /**
2
+ * Dependency Resolution Engine
3
+ *
4
+ * Analyzes Kubernetes resources to build dependency graphs and provides
5
+ * topological ordering for deployment.
6
+ */
7
+ import { isCelExpression, isKubernetesRef } from './type-guards.js';
8
+ import { CircularDependencyError } from '../errors.js';
9
+ import { getComponentLogger } from '../logging/index.js';
10
+ import { KUBERNETES_REF_BRAND } from '../constants/brands.js';
11
+ import { DependencyGraph } from './graph.js';
12
+ export class DependencyResolver {
13
+ logger = getComponentLogger('dependency-resolver');
14
+ /**
15
+ * Build a dependency graph from a collection of Kubernetes resources
16
+ */
17
+ buildDependencyGraph(resources) {
18
+ const graph = new DependencyGraph();
19
+ // Add all resources as nodes first
20
+ for (const resource of resources) {
21
+ graph.addNode(resource.id, resource);
22
+ }
23
+ // Analyze each resource for references and add edges
24
+ for (const resource of resources) {
25
+ const references = this.extractReferences(resource);
26
+ for (const ref of references) {
27
+ // Skip schema references (these are internal TypeKro references)
28
+ if (ref.resourceId !== '__schema__') {
29
+ try {
30
+ graph.addEdge(resource.id, ref.resourceId);
31
+ }
32
+ catch {
33
+ // Log warning if referenced resource doesn't exist in the graph
34
+ // This might be an external reference that will be resolved at runtime
35
+ this.logger.warn('Reference to unknown resource', {
36
+ referencedResourceId: ref.resourceId,
37
+ sourceResourceId: resource.id
38
+ });
39
+ }
40
+ }
41
+ }
42
+ }
43
+ return graph;
44
+ }
45
+ /**
46
+ * Get topological ordering of resources for deployment
47
+ */
48
+ getTopologicalOrder(graph) {
49
+ return graph.getTopologicalOrder();
50
+ }
51
+ /**
52
+ * Validate that the dependency graph has no cycles
53
+ */
54
+ validateNoCycles(graph) {
55
+ if (graph.hasCycles()) {
56
+ const cycles = graph.findCycles();
57
+ const cycle = cycles[0] || [];
58
+ const cycleStr = `${cycle.join(' -> ')} -> ${cycle[0]}`;
59
+ throw new CircularDependencyError(`Circular dependency detected: ${cycleStr}`, cycle);
60
+ }
61
+ }
62
+ /**
63
+ * Extract all references from a resource
64
+ */
65
+ extractReferences(resource) {
66
+ const refs = [];
67
+ const traverse = (obj, path = '') => {
68
+ if (obj === null || obj === undefined) {
69
+ return;
70
+ }
71
+ if (isKubernetesRef(obj)) {
72
+ refs.push(obj);
73
+ }
74
+ else if (isCelExpression(obj)) {
75
+ // Parse CEL expression for references
76
+ const celRefs = this.parseCelReferences(obj.expression);
77
+ refs.push(...celRefs);
78
+ }
79
+ else if (Array.isArray(obj)) {
80
+ obj.forEach((item, index) => {
81
+ traverse(item, `${path}[${index}]`);
82
+ });
83
+ }
84
+ else if (typeof obj === 'object') {
85
+ for (const [key, value] of Object.entries(obj)) {
86
+ traverse(value, path ? `${path}.${key}` : key);
87
+ }
88
+ }
89
+ };
90
+ traverse(resource);
91
+ return refs;
92
+ }
93
+ /**
94
+ * Parse CEL expressions to extract resource references
95
+ */
96
+ parseCelReferences(expression) {
97
+ const refs = [];
98
+ // Simple regex to find resource references in CEL expressions
99
+ // Pattern: resourceId.section.field (e.g., database.status.endpoint)
100
+ const refPattern = /(\w+)\.(\w+)\.(\w+)/g;
101
+ let match = refPattern.exec(expression);
102
+ while (match !== null) {
103
+ const [, resourceId, section, field] = match;
104
+ refs.push({
105
+ [KUBERNETES_REF_BRAND]: true,
106
+ resourceId,
107
+ fieldPath: `${section}.${field}`,
108
+ });
109
+ match = refPattern.exec(expression);
110
+ }
111
+ return refs;
112
+ }
113
+ /**
114
+ * Analyze deployment order and identify parallelizable resources
115
+ */
116
+ analyzeDeploymentOrder(graph) {
117
+ const topologicalOrder = graph.getTopologicalOrder();
118
+ const levels = [];
119
+ const processed = new Set();
120
+ // Group resources by dependency level
121
+ while (processed.size < topologicalOrder.length) {
122
+ const currentLevel = [];
123
+ for (const resourceId of topologicalOrder) {
124
+ if (processed.has(resourceId)) {
125
+ continue;
126
+ }
127
+ // Check if all dependencies are already processed
128
+ const dependencies = graph.getDependencies(resourceId);
129
+ const allDependenciesProcessed = dependencies.every((dep) => processed.has(dep));
130
+ if (allDependenciesProcessed) {
131
+ currentLevel.push(resourceId);
132
+ }
133
+ }
134
+ if (currentLevel.length === 0) {
135
+ throw new Error('Unable to determine deployment order - possible circular dependency');
136
+ }
137
+ levels.push(currentLevel);
138
+ currentLevel.forEach((id) => processed.add(id));
139
+ }
140
+ return {
141
+ levels,
142
+ totalResources: topologicalOrder.length,
143
+ maxParallelism: Math.max(...levels.map((level) => level.length)),
144
+ };
145
+ }
146
+ /**
147
+ * Get rollback order (reverse of deployment order)
148
+ */
149
+ getRollbackOrder(graph) {
150
+ const deploymentOrder = graph.getTopologicalOrder();
151
+ return deploymentOrder.reverse();
152
+ }
153
+ /**
154
+ * Find resources that can be deployed independently
155
+ */
156
+ findIndependentResources(graph) {
157
+ return graph.getRootNodes();
158
+ }
159
+ /**
160
+ * Find resources that nothing else depends on
161
+ */
162
+ findTerminalResources(graph) {
163
+ return graph.getLeafNodes();
164
+ }
165
+ }
166
+ // CircularDependencyError is now imported from ../errors.js
167
+ //# sourceMappingURL=resolver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolver.js","sourceRoot":"","sources":["../../../src/core/dependencies/resolver.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Type Guards for Dependency Resolution
3
+ *
4
+ * This module provides type guard functions specifically for dependency resolution
5
+ * without importing from core types to avoid circular dependencies.
6
+ */
7
+ import type { KubernetesRef, CelExpression } from '../types/common.js';
8
+ /**
9
+ * Type guard to check if a value is a compile-time KubernetesRef.
10
+ * Note: At runtime, these are the objects created by the proxy.
11
+ */
12
+ export declare function isKubernetesRef(obj: unknown): obj is KubernetesRef<unknown>;
13
+ /**
14
+ * Type guard to check if a value is a CelExpression
15
+ */
16
+ export declare function isCelExpression(value: unknown): value is CelExpression;
17
+ //# sourceMappingURL=type-guards.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"type-guards.d.ts","sourceRoot":"","sources":["../../../src/core/dependencies/type-guards.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAEvE;;;EAGE;AACF,wBAAgB,eAAe,CAAC,GAAG,EAAE,OAAO,GAAG,GAAG,IAAI,aAAa,CAAC,OAAO,CAAC,CAS3E;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,aAAa,CAatE"}
@@ -0,0 +1,35 @@
1
+ /**
2
+ * Type Guards for Dependency Resolution
3
+ *
4
+ * This module provides type guard functions specifically for dependency resolution
5
+ * without importing from core types to avoid circular dependencies.
6
+ */
7
+ import { KUBERNETES_REF_BRAND, CEL_EXPRESSION_BRAND } from '../constants/brands.js';
8
+ /**
9
+ * Type guard to check if a value is a compile-time KubernetesRef.
10
+ * Note: At runtime, these are the objects created by the proxy.
11
+ */
12
+ export function isKubernetesRef(obj) {
13
+ // A KubernetesRef is an object that has our specific brand property.
14
+ // We check for the function type as well, since our ref factory is a proxy around a function.
15
+ // Note: We access the property directly since it's defined as non-enumerable
16
+ // FIX: Use Reflect.get to reliably trigger the proxy's 'get' trap instead of relying on the 'in' operator, which needs a 'has' trap.
17
+ if ((typeof obj !== 'object' && typeof obj !== 'function') || obj === null) {
18
+ return false;
19
+ }
20
+ return Reflect.get(obj, KUBERNETES_REF_BRAND) === true;
21
+ }
22
+ /**
23
+ * Type guard to check if a value is a CelExpression
24
+ */
25
+ export function isCelExpression(value) {
26
+ if (typeof value !== 'object' || value === null) {
27
+ return false;
28
+ }
29
+ const obj = value;
30
+ return (CEL_EXPRESSION_BRAND in obj &&
31
+ obj[CEL_EXPRESSION_BRAND] === true &&
32
+ 'expression' in obj &&
33
+ typeof obj.expression === 'string');
34
+ }
35
+ //# sourceMappingURL=type-guards.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"type-guards.js","sourceRoot":"","sources":["../../../src/core/dependencies/type-guards.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAGpF;;;EAGE;AACF,MAAM,UAAU,eAAe,CAAC,GAAY;IAC1C,qEAAqE;IACvE,8FAA8F;IAC5F,6EAA6E;IAC7E,qIAAqI;IACrI,IAAI,CAAC,OAAO,GAAG,KAAK,QAAQ,IAAI,OAAO,GAAG,KAAK,UAAU,CAAC,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;QAC3E,OAAO,KAAK,CAAC;IACf,CAAC;IACD,OAAO,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,oBAAoB,CAAC,KAAK,IAAI,CAAC;AACzD,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,eAAe,CAAC,KAAc;IAC5C,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;QAChD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,GAAG,GAAG,KAAyC,CAAC;IAEtD,OAAO,CACL,oBAAoB,IAAI,GAAG;QAC3B,GAAG,CAAC,oBAAoB,CAAC,KAAK,IAAI;QAClC,YAAY,IAAI,GAAG;QACnB,OAAO,GAAG,CAAC,UAAU,KAAK,QAAQ,CACnC,CAAC;AACJ,CAAC"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Deployment Strategies
3
+ *
4
+ * This module provides a strategy pattern for different deployment modes,
5
+ * consolidating the common deployment orchestration logic.
6
+ *
7
+ * This is now a re-export module that imports from focused strategy modules
8
+ * to maintain backward compatibility while improving code organization.
9
+ */
10
+ export type { DeploymentStrategy } from './strategies/index.js';
11
+ export { BaseDeploymentStrategy, DirectDeploymentStrategy, KroDeploymentStrategy, AlchemyDeploymentStrategy } from './strategies/index.js';
12
+ //# sourceMappingURL=deployment-strategies.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deployment-strategies.d.ts","sourceRoot":"","sources":["../../../src/core/deployment/deployment-strategies.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,YAAY,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAChE,OAAO,EACL,sBAAsB,EACtB,wBAAwB,EACxB,qBAAqB,EACrB,yBAAyB,EAC1B,MAAM,uBAAuB,CAAC"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Deployment Strategies
3
+ *
4
+ * This module provides a strategy pattern for different deployment modes,
5
+ * consolidating the common deployment orchestration logic.
6
+ *
7
+ * This is now a re-export module that imports from focused strategy modules
8
+ * to maintain backward compatibility while improving code organization.
9
+ */
10
+ export { BaseDeploymentStrategy, DirectDeploymentStrategy, KroDeploymentStrategy, AlchemyDeploymentStrategy } from './strategies/index.js';
11
+ //# sourceMappingURL=deployment-strategies.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deployment-strategies.js","sourceRoot":"","sources":["../../../src/core/deployment/deployment-strategies.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,OAAO,EACL,sBAAsB,EACtB,wBAAwB,EACxB,qBAAqB,EACrB,yBAAyB,EAC1B,MAAM,uBAAuB,CAAC"}