typekro 0.44.1 → 0.45.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 (459) hide show
  1. package/dist/core/kubernetes/bun-api-client.d.ts +0 -10
  2. package/dist/core/kubernetes/bun-api-client.d.ts.map +1 -1
  3. package/dist/core/kubernetes/bun-api-client.js +77 -3
  4. package/dist/core/kubernetes/bun-api-client.js.map +1 -1
  5. package/dist/core/references/schema-proxy.d.ts +17 -0
  6. package/dist/core/references/schema-proxy.d.ts.map +1 -1
  7. package/dist/core/references/schema-proxy.js +53 -3
  8. package/dist/core/references/schema-proxy.js.map +1 -1
  9. package/dist/core/serialization/schema.d.ts.map +1 -1
  10. package/dist/core/serialization/schema.js +52 -20
  11. package/dist/core/serialization/schema.js.map +1 -1
  12. package/dist/core/types/serialization.d.ts +5 -2
  13. package/dist/core/types/serialization.d.ts.map +1 -1
  14. package/dist/factories/apisix/resources/helm.d.ts +2 -2
  15. package/dist/factories/apisix/resources/helm.d.ts.map +1 -1
  16. package/dist/factories/apisix/resources/helm.js +7 -11
  17. package/dist/factories/apisix/resources/helm.js.map +1 -1
  18. package/dist/factories/aws-load-balancer-controller/compositions/bootstrap.d.ts +38 -0
  19. package/dist/factories/aws-load-balancer-controller/compositions/bootstrap.d.ts.map +1 -0
  20. package/dist/factories/aws-load-balancer-controller/compositions/bootstrap.js +101 -0
  21. package/dist/factories/aws-load-balancer-controller/compositions/bootstrap.js.map +1 -0
  22. package/dist/factories/aws-load-balancer-controller/compositions/helm-repository.d.ts +10 -0
  23. package/dist/factories/aws-load-balancer-controller/compositions/helm-repository.d.ts.map +1 -0
  24. package/dist/factories/aws-load-balancer-controller/compositions/helm-repository.js +25 -0
  25. package/dist/factories/aws-load-balancer-controller/compositions/helm-repository.js.map +1 -0
  26. package/dist/factories/aws-load-balancer-controller/compositions/index.d.ts +3 -0
  27. package/dist/factories/aws-load-balancer-controller/compositions/index.d.ts.map +1 -0
  28. package/dist/factories/aws-load-balancer-controller/compositions/index.js +3 -0
  29. package/dist/factories/aws-load-balancer-controller/compositions/index.js.map +1 -0
  30. package/dist/factories/aws-load-balancer-controller/constants.d.ts +21 -0
  31. package/dist/factories/aws-load-balancer-controller/constants.d.ts.map +1 -0
  32. package/dist/factories/aws-load-balancer-controller/constants.js +29 -0
  33. package/dist/factories/aws-load-balancer-controller/constants.js.map +1 -0
  34. package/dist/factories/aws-load-balancer-controller/index.d.ts +17 -0
  35. package/dist/factories/aws-load-balancer-controller/index.d.ts.map +1 -0
  36. package/dist/factories/aws-load-balancer-controller/index.js +16 -0
  37. package/dist/factories/aws-load-balancer-controller/index.js.map +1 -0
  38. package/dist/factories/aws-load-balancer-controller/resources/elbv2.d.ts +45 -0
  39. package/dist/factories/aws-load-balancer-controller/resources/elbv2.d.ts.map +1 -0
  40. package/dist/factories/aws-load-balancer-controller/resources/elbv2.js +148 -0
  41. package/dist/factories/aws-load-balancer-controller/resources/elbv2.js.map +1 -0
  42. package/dist/factories/aws-load-balancer-controller/resources/helm.d.ts +36 -0
  43. package/dist/factories/aws-load-balancer-controller/resources/helm.d.ts.map +1 -0
  44. package/dist/factories/aws-load-balancer-controller/resources/helm.js +96 -0
  45. package/dist/factories/aws-load-balancer-controller/resources/helm.js.map +1 -0
  46. package/dist/factories/aws-load-balancer-controller/resources/index.d.ts +3 -0
  47. package/dist/factories/aws-load-balancer-controller/resources/index.d.ts.map +1 -0
  48. package/dist/factories/aws-load-balancer-controller/resources/index.js +3 -0
  49. package/dist/factories/aws-load-balancer-controller/resources/index.js.map +1 -0
  50. package/dist/factories/aws-load-balancer-controller/types.d.ts +267 -0
  51. package/dist/factories/aws-load-balancer-controller/types.d.ts.map +1 -0
  52. package/dist/factories/aws-load-balancer-controller/types.js +81 -0
  53. package/dist/factories/aws-load-balancer-controller/types.js.map +1 -0
  54. package/dist/factories/aws-load-balancer-controller/utils/helm-values-mapper.d.ts +27 -0
  55. package/dist/factories/aws-load-balancer-controller/utils/helm-values-mapper.d.ts.map +1 -0
  56. package/dist/factories/aws-load-balancer-controller/utils/helm-values-mapper.js +171 -0
  57. package/dist/factories/aws-load-balancer-controller/utils/helm-values-mapper.js.map +1 -0
  58. package/dist/factories/aws-load-balancer-controller/utils/index.d.ts +2 -0
  59. package/dist/factories/aws-load-balancer-controller/utils/index.d.ts.map +1 -0
  60. package/dist/factories/aws-load-balancer-controller/utils/index.js +2 -0
  61. package/dist/factories/aws-load-balancer-controller/utils/index.js.map +1 -0
  62. package/dist/factories/cert-manager/compositions/cert-manager-bootstrap.d.ts +6 -4
  63. package/dist/factories/cert-manager/compositions/cert-manager-bootstrap.d.ts.map +1 -1
  64. package/dist/factories/cert-manager/compositions/cert-manager-bootstrap.js +22 -196
  65. package/dist/factories/cert-manager/compositions/cert-manager-bootstrap.js.map +1 -1
  66. package/dist/factories/cert-manager/resources/helm.d.ts.map +1 -1
  67. package/dist/factories/cert-manager/resources/helm.js +30 -51
  68. package/dist/factories/cert-manager/resources/helm.js.map +1 -1
  69. package/dist/factories/cert-manager/types.d.ts +54 -6
  70. package/dist/factories/cert-manager/types.d.ts.map +1 -1
  71. package/dist/factories/cert-manager/types.js +45 -12
  72. package/dist/factories/cert-manager/types.js.map +1 -1
  73. package/dist/factories/cert-manager/utils/helm-values-mapper.js +203 -76
  74. package/dist/factories/cert-manager/utils/helm-values-mapper.js.map +1 -1
  75. package/dist/factories/cilium/resources/helm.d.ts.map +1 -1
  76. package/dist/factories/cilium/resources/helm.js +23 -0
  77. package/dist/factories/cilium/resources/helm.js.map +1 -1
  78. package/dist/factories/cilium/types.d.ts +2 -1
  79. package/dist/factories/cilium/types.d.ts.map +1 -1
  80. package/dist/factories/cilium/types.js.map +1 -1
  81. package/dist/factories/clickhouse/resources/helm.d.ts.map +1 -1
  82. package/dist/factories/clickhouse/resources/helm.js +2 -1
  83. package/dist/factories/clickhouse/resources/helm.js.map +1 -1
  84. package/dist/factories/clickhouse/types.d.ts +2 -1
  85. package/dist/factories/clickhouse/types.d.ts.map +1 -1
  86. package/dist/factories/clickhouse/types.js.map +1 -1
  87. package/dist/factories/clickstack/resources/helm.d.ts.map +1 -1
  88. package/dist/factories/clickstack/resources/helm.js +3 -2
  89. package/dist/factories/clickstack/resources/helm.js.map +1 -1
  90. package/dist/factories/clickstack/types.d.ts +3 -3
  91. package/dist/factories/clickstack/types.d.ts.map +1 -1
  92. package/dist/factories/clickstack/types.js.map +1 -1
  93. package/dist/factories/cnpg/resources/helm.d.ts.map +1 -1
  94. package/dist/factories/cnpg/resources/helm.js +2 -1
  95. package/dist/factories/cnpg/resources/helm.js.map +1 -1
  96. package/dist/factories/cnpg/types.d.ts +2 -1
  97. package/dist/factories/cnpg/types.d.ts.map +1 -1
  98. package/dist/factories/cnpg/types.js.map +1 -1
  99. package/dist/factories/crowdsec/compositions/crowdsec-bootstrap.d.ts +33 -0
  100. package/dist/factories/crowdsec/compositions/crowdsec-bootstrap.d.ts.map +1 -0
  101. package/dist/factories/crowdsec/compositions/crowdsec-bootstrap.js +174 -0
  102. package/dist/factories/crowdsec/compositions/crowdsec-bootstrap.js.map +1 -0
  103. package/dist/factories/crowdsec/compositions/crowdsec-helm-repository.d.ts +10 -0
  104. package/dist/factories/crowdsec/compositions/crowdsec-helm-repository.d.ts.map +1 -0
  105. package/dist/factories/crowdsec/compositions/crowdsec-helm-repository.js +25 -0
  106. package/dist/factories/crowdsec/compositions/crowdsec-helm-repository.js.map +1 -0
  107. package/dist/factories/crowdsec/compositions/index.d.ts +3 -0
  108. package/dist/factories/crowdsec/compositions/index.d.ts.map +1 -0
  109. package/dist/factories/crowdsec/compositions/index.js +3 -0
  110. package/dist/factories/crowdsec/compositions/index.js.map +1 -0
  111. package/dist/factories/crowdsec/constants.d.ts +38 -0
  112. package/dist/factories/crowdsec/constants.d.ts.map +1 -0
  113. package/dist/factories/crowdsec/constants.js +42 -0
  114. package/dist/factories/crowdsec/constants.js.map +1 -0
  115. package/dist/factories/crowdsec/index.d.ts +12 -0
  116. package/dist/factories/crowdsec/index.d.ts.map +1 -0
  117. package/dist/factories/crowdsec/index.js +12 -0
  118. package/dist/factories/crowdsec/index.js.map +1 -0
  119. package/dist/factories/crowdsec/resources/helm.d.ts +52 -0
  120. package/dist/factories/crowdsec/resources/helm.d.ts.map +1 -0
  121. package/dist/factories/crowdsec/resources/helm.js +78 -0
  122. package/dist/factories/crowdsec/resources/helm.js.map +1 -0
  123. package/dist/factories/crowdsec/resources/index.d.ts +2 -0
  124. package/dist/factories/crowdsec/resources/index.d.ts.map +1 -0
  125. package/dist/factories/crowdsec/resources/index.js +2 -0
  126. package/dist/factories/crowdsec/resources/index.js.map +1 -0
  127. package/dist/factories/crowdsec/types.d.ts +266 -0
  128. package/dist/factories/crowdsec/types.d.ts.map +1 -0
  129. package/dist/factories/crowdsec/types.js +43 -0
  130. package/dist/factories/crowdsec/types.js.map +1 -0
  131. package/dist/factories/crowdsec/utils/helm-values-mapper.d.ts +40 -0
  132. package/dist/factories/crowdsec/utils/helm-values-mapper.d.ts.map +1 -0
  133. package/dist/factories/crowdsec/utils/helm-values-mapper.js +473 -0
  134. package/dist/factories/crowdsec/utils/helm-values-mapper.js.map +1 -0
  135. package/dist/factories/crowdsec/utils/index.d.ts +3 -0
  136. package/dist/factories/crowdsec/utils/index.d.ts.map +1 -0
  137. package/dist/factories/crowdsec/utils/index.js +3 -0
  138. package/dist/factories/crowdsec/utils/index.js.map +1 -0
  139. package/dist/factories/crowdsec/utils/net.js +68 -0
  140. package/dist/factories/crowdsec/utils/net.js.map +1 -0
  141. package/dist/factories/crowdsec/utils/traefik-bouncer.d.ts +48 -0
  142. package/dist/factories/crowdsec/utils/traefik-bouncer.d.ts.map +1 -0
  143. package/dist/factories/crowdsec/utils/traefik-bouncer.js +302 -0
  144. package/dist/factories/crowdsec/utils/traefik-bouncer.js.map +1 -0
  145. package/dist/factories/dagster/resources/helm.d.ts.map +1 -1
  146. package/dist/factories/dagster/resources/helm.js +2 -0
  147. package/dist/factories/dagster/resources/helm.js.map +1 -1
  148. package/dist/factories/dagster/types.d.ts +2 -2
  149. package/dist/factories/dagster/types.d.ts.map +1 -1
  150. package/dist/factories/dagster/types.js.map +1 -1
  151. package/dist/factories/envoy-ai-gateway/resources/helm.d.ts.map +1 -1
  152. package/dist/factories/envoy-ai-gateway/resources/helm.js +17 -14
  153. package/dist/factories/envoy-ai-gateway/resources/helm.js.map +1 -1
  154. package/dist/factories/envoy-ai-gateway/types.d.ts +2 -2
  155. package/dist/factories/envoy-ai-gateway/types.d.ts.map +1 -1
  156. package/dist/factories/external-dns/resources/helm.d.ts.map +1 -1
  157. package/dist/factories/external-dns/resources/helm.js +2 -0
  158. package/dist/factories/external-dns/resources/helm.js.map +1 -1
  159. package/dist/factories/external-dns/types.d.ts +2 -1
  160. package/dist/factories/external-dns/types.d.ts.map +1 -1
  161. package/dist/factories/external-dns/types.js.map +1 -1
  162. package/dist/factories/harbor/resources/helm.d.ts.map +1 -1
  163. package/dist/factories/harbor/resources/helm.js +11 -7
  164. package/dist/factories/harbor/resources/helm.js.map +1 -1
  165. package/dist/factories/harbor/types.d.ts +2 -1
  166. package/dist/factories/harbor/types.d.ts.map +1 -1
  167. package/dist/factories/harbor/types.js.map +1 -1
  168. package/dist/factories/hatchet/resources/helm.d.ts.map +1 -1
  169. package/dist/factories/hatchet/resources/helm.js +13 -10
  170. package/dist/factories/hatchet/resources/helm.js.map +1 -1
  171. package/dist/factories/hatchet/types.d.ts +2 -1
  172. package/dist/factories/hatchet/types.d.ts.map +1 -1
  173. package/dist/factories/hatchet/types.js.map +1 -1
  174. package/dist/factories/helm/helm-release.d.ts.map +1 -1
  175. package/dist/factories/helm/helm-release.js +3 -31
  176. package/dist/factories/helm/helm-release.js.map +1 -1
  177. package/dist/factories/helm/index.d.ts +3 -1
  178. package/dist/factories/helm/index.d.ts.map +1 -1
  179. package/dist/factories/helm/index.js +1 -0
  180. package/dist/factories/helm/index.js.map +1 -1
  181. package/dist/factories/helm/lifecycle.d.ts +32 -0
  182. package/dist/factories/helm/lifecycle.d.ts.map +1 -0
  183. package/dist/factories/helm/lifecycle.js +165 -0
  184. package/dist/factories/helm/lifecycle.js.map +1 -0
  185. package/dist/factories/helm/types.d.ts +22 -0
  186. package/dist/factories/helm/types.d.ts.map +1 -1
  187. package/dist/factories/inngest/resources/helm.d.ts.map +1 -1
  188. package/dist/factories/inngest/resources/helm.js +2 -0
  189. package/dist/factories/inngest/resources/helm.js.map +1 -1
  190. package/dist/factories/inngest/types.d.ts +2 -1
  191. package/dist/factories/inngest/types.d.ts.map +1 -1
  192. package/dist/factories/inngest/types.js.map +1 -1
  193. package/dist/factories/karpenter/compositions/index.d.ts +3 -0
  194. package/dist/factories/karpenter/compositions/index.d.ts.map +1 -0
  195. package/dist/factories/karpenter/compositions/index.js +3 -0
  196. package/dist/factories/karpenter/compositions/index.js.map +1 -0
  197. package/dist/factories/karpenter/compositions/karpenter-bootstrap.d.ts +34 -0
  198. package/dist/factories/karpenter/compositions/karpenter-bootstrap.d.ts.map +1 -0
  199. package/dist/factories/karpenter/compositions/karpenter-bootstrap.js +150 -0
  200. package/dist/factories/karpenter/compositions/karpenter-bootstrap.js.map +1 -0
  201. package/dist/factories/karpenter/compositions/karpenter-helm-repository.d.ts +10 -0
  202. package/dist/factories/karpenter/compositions/karpenter-helm-repository.d.ts.map +1 -0
  203. package/dist/factories/karpenter/compositions/karpenter-helm-repository.js +25 -0
  204. package/dist/factories/karpenter/compositions/karpenter-helm-repository.js.map +1 -0
  205. package/dist/factories/karpenter/constants.d.ts +67 -0
  206. package/dist/factories/karpenter/constants.d.ts.map +1 -0
  207. package/dist/factories/karpenter/constants.js +65 -0
  208. package/dist/factories/karpenter/constants.js.map +1 -0
  209. package/dist/factories/karpenter/index.d.ts +14 -0
  210. package/dist/factories/karpenter/index.d.ts.map +1 -0
  211. package/dist/factories/karpenter/index.js +14 -0
  212. package/dist/factories/karpenter/index.js.map +1 -0
  213. package/dist/factories/karpenter/resources/ec2-node-class.d.ts +26 -0
  214. package/dist/factories/karpenter/resources/ec2-node-class.d.ts.map +1 -0
  215. package/dist/factories/karpenter/resources/ec2-node-class.js +48 -0
  216. package/dist/factories/karpenter/resources/ec2-node-class.js.map +1 -0
  217. package/dist/factories/karpenter/resources/helm.d.ts +48 -0
  218. package/dist/factories/karpenter/resources/helm.d.ts.map +1 -0
  219. package/dist/factories/karpenter/resources/helm.js +117 -0
  220. package/dist/factories/karpenter/resources/helm.js.map +1 -0
  221. package/dist/factories/karpenter/resources/index.d.ts +5 -0
  222. package/dist/factories/karpenter/resources/index.d.ts.map +1 -0
  223. package/dist/factories/karpenter/resources/index.js +5 -0
  224. package/dist/factories/karpenter/resources/index.js.map +1 -0
  225. package/dist/factories/karpenter/resources/node-pool.d.ts +32 -0
  226. package/dist/factories/karpenter/resources/node-pool.d.ts.map +1 -0
  227. package/dist/factories/karpenter/resources/node-pool.js +80 -0
  228. package/dist/factories/karpenter/resources/node-pool.js.map +1 -0
  229. package/dist/factories/karpenter/resources/readiness.d.ts +21 -0
  230. package/dist/factories/karpenter/resources/readiness.d.ts.map +1 -0
  231. package/dist/factories/karpenter/resources/readiness.js +60 -0
  232. package/dist/factories/karpenter/resources/readiness.js.map +1 -0
  233. package/dist/factories/karpenter/types.d.ts +433 -0
  234. package/dist/factories/karpenter/types.d.ts.map +1 -0
  235. package/dist/factories/karpenter/types.js +59 -0
  236. package/dist/factories/karpenter/types.js.map +1 -0
  237. package/dist/factories/karpenter/utils/helm-values-mapper.d.ts +24 -0
  238. package/dist/factories/karpenter/utils/helm-values-mapper.d.ts.map +1 -0
  239. package/dist/factories/karpenter/utils/helm-values-mapper.js +89 -0
  240. package/dist/factories/karpenter/utils/helm-values-mapper.js.map +1 -0
  241. package/dist/factories/karpenter/utils/index.d.ts +3 -0
  242. package/dist/factories/karpenter/utils/index.d.ts.map +1 -0
  243. package/dist/factories/karpenter/utils/index.js +3 -0
  244. package/dist/factories/karpenter/utils/index.js.map +1 -0
  245. package/dist/factories/karpenter/utils/validation.d.ts +42 -0
  246. package/dist/factories/karpenter/utils/validation.d.ts.map +1 -0
  247. package/dist/factories/karpenter/utils/validation.js +441 -0
  248. package/dist/factories/karpenter/utils/validation.js.map +1 -0
  249. package/dist/factories/keda/compositions/index.d.ts +3 -0
  250. package/dist/factories/keda/compositions/index.d.ts.map +1 -0
  251. package/dist/factories/keda/compositions/index.js +3 -0
  252. package/dist/factories/keda/compositions/index.js.map +1 -0
  253. package/dist/factories/keda/compositions/keda-bootstrap.d.ts +30 -0
  254. package/dist/factories/keda/compositions/keda-bootstrap.d.ts.map +1 -0
  255. package/dist/factories/keda/compositions/keda-bootstrap.js +102 -0
  256. package/dist/factories/keda/compositions/keda-bootstrap.js.map +1 -0
  257. package/dist/factories/keda/compositions/keda-helm-repository.d.ts +10 -0
  258. package/dist/factories/keda/compositions/keda-helm-repository.d.ts.map +1 -0
  259. package/dist/factories/keda/compositions/keda-helm-repository.js +25 -0
  260. package/dist/factories/keda/compositions/keda-helm-repository.js.map +1 -0
  261. package/dist/factories/keda/constants.d.ts +27 -0
  262. package/dist/factories/keda/constants.d.ts.map +1 -0
  263. package/dist/factories/keda/constants.js +27 -0
  264. package/dist/factories/keda/constants.js.map +1 -0
  265. package/dist/factories/keda/index.d.ts +14 -0
  266. package/dist/factories/keda/index.d.ts.map +1 -0
  267. package/dist/factories/keda/index.js +14 -0
  268. package/dist/factories/keda/index.js.map +1 -0
  269. package/dist/factories/keda/resources/helm.d.ts +26 -0
  270. package/dist/factories/keda/resources/helm.d.ts.map +1 -0
  271. package/dist/factories/keda/resources/helm.js +84 -0
  272. package/dist/factories/keda/resources/helm.js.map +1 -0
  273. package/dist/factories/keda/resources/index.d.ts +7 -0
  274. package/dist/factories/keda/resources/index.d.ts.map +1 -0
  275. package/dist/factories/keda/resources/index.js +7 -0
  276. package/dist/factories/keda/resources/index.js.map +1 -0
  277. package/dist/factories/keda/resources/readiness.d.ts +28 -0
  278. package/dist/factories/keda/resources/readiness.d.ts.map +1 -0
  279. package/dist/factories/keda/resources/readiness.js +70 -0
  280. package/dist/factories/keda/resources/readiness.js.map +1 -0
  281. package/dist/factories/keda/resources/scaled-job.d.ts +23 -0
  282. package/dist/factories/keda/resources/scaled-job.d.ts.map +1 -0
  283. package/dist/factories/keda/resources/scaled-job.js +43 -0
  284. package/dist/factories/keda/resources/scaled-job.js.map +1 -0
  285. package/dist/factories/keda/resources/scaled-object.d.ts +33 -0
  286. package/dist/factories/keda/resources/scaled-object.d.ts.map +1 -0
  287. package/dist/factories/keda/resources/scaled-object.js +78 -0
  288. package/dist/factories/keda/resources/scaled-object.js.map +1 -0
  289. package/dist/factories/keda/resources/trigger-authentication.d.ts +28 -0
  290. package/dist/factories/keda/resources/trigger-authentication.d.ts.map +1 -0
  291. package/dist/factories/keda/resources/trigger-authentication.js +52 -0
  292. package/dist/factories/keda/resources/trigger-authentication.js.map +1 -0
  293. package/dist/factories/keda/resources/triggers.d.ts +17 -0
  294. package/dist/factories/keda/resources/triggers.d.ts.map +1 -0
  295. package/dist/factories/keda/resources/triggers.js +21 -0
  296. package/dist/factories/keda/resources/triggers.js.map +1 -0
  297. package/dist/factories/keda/types.d.ts +580 -0
  298. package/dist/factories/keda/types.d.ts.map +1 -0
  299. package/dist/factories/keda/types.js +75 -0
  300. package/dist/factories/keda/types.js.map +1 -0
  301. package/dist/factories/keda/utils/helm-values-mapper.d.ts +21 -0
  302. package/dist/factories/keda/utils/helm-values-mapper.d.ts.map +1 -0
  303. package/dist/factories/keda/utils/helm-values-mapper.js +130 -0
  304. package/dist/factories/keda/utils/helm-values-mapper.js.map +1 -0
  305. package/dist/factories/keda/utils/index.d.ts +3 -0
  306. package/dist/factories/keda/utils/index.d.ts.map +1 -0
  307. package/dist/factories/keda/utils/index.js +3 -0
  308. package/dist/factories/keda/utils/index.js.map +1 -0
  309. package/dist/factories/keda/utils/validation.d.ts +52 -0
  310. package/dist/factories/keda/utils/validation.d.ts.map +1 -0
  311. package/dist/factories/keda/utils/validation.js +482 -0
  312. package/dist/factories/keda/utils/validation.js.map +1 -0
  313. package/dist/factories/kubernetes/policy/limit-range.d.ts.map +1 -1
  314. package/dist/factories/kubernetes/policy/limit-range.js +27 -1
  315. package/dist/factories/kubernetes/policy/limit-range.js.map +1 -1
  316. package/dist/factories/nats/resources/helm.d.ts +2 -2
  317. package/dist/factories/nats/resources/helm.d.ts.map +1 -1
  318. package/dist/factories/nats/resources/helm.js +2 -1
  319. package/dist/factories/nats/resources/helm.js.map +1 -1
  320. package/dist/factories/opensearch/resources/helm.d.ts.map +1 -1
  321. package/dist/factories/opensearch/resources/helm.js +2 -1
  322. package/dist/factories/opensearch/resources/helm.js.map +1 -1
  323. package/dist/factories/opensearch/types.d.ts +2 -1
  324. package/dist/factories/opensearch/types.d.ts.map +1 -1
  325. package/dist/factories/opensearch/types.js.map +1 -1
  326. package/dist/factories/ory/resources/helm.d.ts.map +1 -1
  327. package/dist/factories/ory/resources/helm.js +2 -0
  328. package/dist/factories/ory/resources/helm.js.map +1 -1
  329. package/dist/factories/ory/types.d.ts +2 -2
  330. package/dist/factories/ory/types.d.ts.map +1 -1
  331. package/dist/factories/ory/types.js.map +1 -1
  332. package/dist/factories/pebble/resources/helm.d.ts.map +1 -1
  333. package/dist/factories/pebble/resources/helm.js +2 -0
  334. package/dist/factories/pebble/resources/helm.js.map +1 -1
  335. package/dist/factories/pebble/types.d.ts +2 -1
  336. package/dist/factories/pebble/types.d.ts.map +1 -1
  337. package/dist/factories/pebble/types.js.map +1 -1
  338. package/dist/factories/rook/resources/helm.d.ts.map +1 -1
  339. package/dist/factories/rook/resources/helm.js +3 -2
  340. package/dist/factories/rook/resources/helm.js.map +1 -1
  341. package/dist/factories/rook/types.d.ts +2 -1
  342. package/dist/factories/rook/types.d.ts.map +1 -1
  343. package/dist/factories/rook/types.js.map +1 -1
  344. package/dist/factories/traefik/compositions/traefik-bootstrap.d.ts +43 -36
  345. package/dist/factories/traefik/compositions/traefik-bootstrap.d.ts.map +1 -1
  346. package/dist/factories/traefik/compositions/traefik-bootstrap.js +70 -38
  347. package/dist/factories/traefik/compositions/traefik-bootstrap.js.map +1 -1
  348. package/dist/factories/traefik/constants.d.ts +6 -0
  349. package/dist/factories/traefik/constants.d.ts.map +1 -1
  350. package/dist/factories/traefik/constants.js +6 -0
  351. package/dist/factories/traefik/constants.js.map +1 -1
  352. package/dist/factories/traefik/resources/common.d.ts +1 -1
  353. package/dist/factories/traefik/resources/common.js +1 -1
  354. package/dist/factories/traefik/resources/helm.d.ts.map +1 -1
  355. package/dist/factories/traefik/resources/helm.js +14 -9
  356. package/dist/factories/traefik/resources/helm.js.map +1 -1
  357. package/dist/factories/traefik/resources/middleware.d.ts +35 -1
  358. package/dist/factories/traefik/resources/middleware.d.ts.map +1 -1
  359. package/dist/factories/traefik/resources/middleware.js +71 -0
  360. package/dist/factories/traefik/resources/middleware.js.map +1 -1
  361. package/dist/factories/traefik/resources/tls.d.ts +22 -1
  362. package/dist/factories/traefik/resources/tls.d.ts.map +1 -1
  363. package/dist/factories/traefik/resources/tls.js +40 -0
  364. package/dist/factories/traefik/resources/tls.js.map +1 -1
  365. package/dist/factories/traefik/types.d.ts +176 -9
  366. package/dist/factories/traefik/types.d.ts.map +1 -1
  367. package/dist/factories/traefik/types.js +111 -2
  368. package/dist/factories/traefik/types.js.map +1 -1
  369. package/dist/factories/traefik/utils/access-log.d.ts +18 -0
  370. package/dist/factories/traefik/utils/access-log.d.ts.map +1 -0
  371. package/dist/factories/traefik/utils/access-log.js +98 -0
  372. package/dist/factories/traefik/utils/access-log.js.map +1 -0
  373. package/dist/factories/traefik/utils/aws-nlb.d.ts +55 -0
  374. package/dist/factories/traefik/utils/aws-nlb.d.ts.map +1 -0
  375. package/dist/factories/traefik/utils/aws-nlb.js +121 -0
  376. package/dist/factories/traefik/utils/aws-nlb.js.map +1 -0
  377. package/dist/factories/traefik/utils/helm-values-mapper.d.ts +30 -40
  378. package/dist/factories/traefik/utils/helm-values-mapper.d.ts.map +1 -1
  379. package/dist/factories/traefik/utils/helm-values-mapper.js +308 -41
  380. package/dist/factories/traefik/utils/helm-values-mapper.js.map +1 -1
  381. package/dist/factories/traefik/utils/index.d.ts +5 -0
  382. package/dist/factories/traefik/utils/index.d.ts.map +1 -1
  383. package/dist/factories/traefik/utils/index.js +5 -0
  384. package/dist/factories/traefik/utils/index.js.map +1 -1
  385. package/dist/factories/traefik/utils/middleware-validation.d.ts +0 -17
  386. package/dist/factories/traefik/utils/middleware-validation.d.ts.map +1 -1
  387. package/dist/factories/traefik/utils/middleware-validation.js +15 -17
  388. package/dist/factories/traefik/utils/middleware-validation.js.map +1 -1
  389. package/dist/factories/traefik/utils/plugins.d.ts +38 -0
  390. package/dist/factories/traefik/utils/plugins.d.ts.map +1 -0
  391. package/dist/factories/traefik/utils/plugins.js +175 -0
  392. package/dist/factories/traefik/utils/plugins.js.map +1 -0
  393. package/dist/factories/traefik/utils/proxy-trust.d.ts +48 -0
  394. package/dist/factories/traefik/utils/proxy-trust.d.ts.map +1 -0
  395. package/dist/factories/traefik/utils/proxy-trust.js +514 -0
  396. package/dist/factories/traefik/utils/proxy-trust.js.map +1 -0
  397. package/dist/factories/traefik/utils/trusted-range.d.ts +29 -0
  398. package/dist/factories/traefik/utils/trusted-range.d.ts.map +1 -0
  399. package/dist/factories/traefik/utils/trusted-range.js +80 -0
  400. package/dist/factories/traefik/utils/trusted-range.js.map +1 -0
  401. package/dist/factories/valkey/resources/helm.d.ts.map +1 -1
  402. package/dist/factories/valkey/resources/helm.js +2 -1
  403. package/dist/factories/valkey/resources/helm.js.map +1 -1
  404. package/dist/factories/valkey/types.d.ts +2 -1
  405. package/dist/factories/valkey/types.d.ts.map +1 -1
  406. package/dist/factories/valkey/types.js.map +1 -1
  407. package/dist/factories/vpa/compositions/index.d.ts +3 -0
  408. package/dist/factories/vpa/compositions/index.d.ts.map +1 -0
  409. package/dist/factories/vpa/compositions/index.js +3 -0
  410. package/dist/factories/vpa/compositions/index.js.map +1 -0
  411. package/dist/factories/vpa/compositions/vpa-bootstrap.d.ts +30 -0
  412. package/dist/factories/vpa/compositions/vpa-bootstrap.d.ts.map +1 -0
  413. package/dist/factories/vpa/compositions/vpa-bootstrap.js +104 -0
  414. package/dist/factories/vpa/compositions/vpa-bootstrap.js.map +1 -0
  415. package/dist/factories/vpa/compositions/vpa-helm-repository.d.ts +10 -0
  416. package/dist/factories/vpa/compositions/vpa-helm-repository.d.ts.map +1 -0
  417. package/dist/factories/vpa/compositions/vpa-helm-repository.js +25 -0
  418. package/dist/factories/vpa/compositions/vpa-helm-repository.js.map +1 -0
  419. package/dist/factories/vpa/constants.d.ts +77 -0
  420. package/dist/factories/vpa/constants.d.ts.map +1 -0
  421. package/dist/factories/vpa/constants.js +67 -0
  422. package/dist/factories/vpa/constants.js.map +1 -0
  423. package/dist/factories/vpa/index.d.ts +14 -0
  424. package/dist/factories/vpa/index.d.ts.map +1 -0
  425. package/dist/factories/vpa/index.js +14 -0
  426. package/dist/factories/vpa/index.js.map +1 -0
  427. package/dist/factories/vpa/resources/helm.d.ts +28 -0
  428. package/dist/factories/vpa/resources/helm.d.ts.map +1 -0
  429. package/dist/factories/vpa/resources/helm.js +88 -0
  430. package/dist/factories/vpa/resources/helm.js.map +1 -0
  431. package/dist/factories/vpa/resources/index.d.ts +4 -0
  432. package/dist/factories/vpa/resources/index.d.ts.map +1 -0
  433. package/dist/factories/vpa/resources/index.js +4 -0
  434. package/dist/factories/vpa/resources/index.js.map +1 -0
  435. package/dist/factories/vpa/resources/readiness.d.ts +24 -0
  436. package/dist/factories/vpa/resources/readiness.d.ts.map +1 -0
  437. package/dist/factories/vpa/resources/readiness.js +66 -0
  438. package/dist/factories/vpa/resources/readiness.js.map +1 -0
  439. package/dist/factories/vpa/resources/vertical-pod-autoscaler.d.ts +42 -0
  440. package/dist/factories/vpa/resources/vertical-pod-autoscaler.d.ts.map +1 -0
  441. package/dist/factories/vpa/resources/vertical-pod-autoscaler.js +93 -0
  442. package/dist/factories/vpa/resources/vertical-pod-autoscaler.js.map +1 -0
  443. package/dist/factories/vpa/types.d.ts +312 -0
  444. package/dist/factories/vpa/types.d.ts.map +1 -0
  445. package/dist/factories/vpa/types.js +96 -0
  446. package/dist/factories/vpa/types.js.map +1 -0
  447. package/dist/factories/vpa/utils/helm-values-mapper.d.ts +18 -0
  448. package/dist/factories/vpa/utils/helm-values-mapper.d.ts.map +1 -0
  449. package/dist/factories/vpa/utils/helm-values-mapper.js +121 -0
  450. package/dist/factories/vpa/utils/helm-values-mapper.js.map +1 -0
  451. package/dist/factories/vpa/utils/index.d.ts +3 -0
  452. package/dist/factories/vpa/utils/index.d.ts.map +1 -0
  453. package/dist/factories/vpa/utils/index.js +3 -0
  454. package/dist/factories/vpa/utils/index.js.map +1 -0
  455. package/dist/factories/vpa/utils/validation.d.ts +42 -0
  456. package/dist/factories/vpa/utils/validation.d.ts.map +1 -0
  457. package/dist/factories/vpa/utils/validation.js +225 -0
  458. package/dist/factories/vpa/utils/validation.js.map +1 -0
  459. package/package.json +21 -1
@@ -0,0 +1,89 @@
1
+ // Karpenter Helm values mapping for the `karpenter` chart 1.14.1.
2
+ //
3
+ // Every spec field may be a schema reference in KRO mode, so the mapper only
4
+ // places values into the tree and never branches on them. Defaults go through
5
+ // `Cel.default`, never `??`: a schema proxy is a truthy object.
6
+ import { Cel } from '../../../core/references/cel.js';
7
+ import { isCelExpression, isKubernetesRef } from '../../../utils/type-guards.js';
8
+ import { KARPENTER_DEFAULT_RESOURCES, KARPENTER_DEFAULT_TOLERATIONS, KARPENTER_DEFAULT_TOPOLOGY_SPREAD_CONSTRAINTS, } from '../constants.js';
9
+ function isPlainObject(value) {
10
+ return (typeof value === 'object' &&
11
+ value !== null &&
12
+ !Array.isArray(value) &&
13
+ !isKubernetesRef(value) &&
14
+ !isCelExpression(value));
15
+ }
16
+ // Plain objects merge key by key; lists, primitives and graph values replace.
17
+ function deepMerge(base, override) {
18
+ const merged = { ...base };
19
+ for (const [key, value] of Object.entries(override)) {
20
+ if (key === '__proto__' || key === 'constructor' || key === 'prototype')
21
+ continue;
22
+ if (value === undefined)
23
+ continue;
24
+ const existing = merged[key];
25
+ merged[key] =
26
+ isPlainObject(existing) && isPlainObject(value) ? deepMerge(existing, value) : value;
27
+ }
28
+ return merged;
29
+ }
30
+ /**
31
+ * Map the bootstrap spec onto `karpenter` chart values.
32
+ *
33
+ * Map values (`nodeSelector`, `affinity`, service account annotations) are
34
+ * merged by Helm with the chart defaults; lists (`tolerations`,
35
+ * `topologySpreadConstraints`) replace them, so their fallbacks restate the
36
+ * chart defaults.
37
+ *
38
+ * @param config - The bootstrap spec. Any field may be a schema reference.
39
+ * @param rawValues - Concrete chart values deep-merged over the result.
40
+ *
41
+ * @example
42
+ * ```typescript
43
+ * mapKarpenterConfigToHelmValues({
44
+ * name: 'karpenter',
45
+ * clusterName: 'my-cluster',
46
+ * interruptionQueue: 'my-cluster',
47
+ * serviceAccount: { annotations: { 'eks.amazonaws.com/role-arn': 'arn:aws:iam::111122223333:role/KarpenterController' } },
48
+ * });
49
+ * ```
50
+ */
51
+ export function mapKarpenterConfigToHelmValues(config, rawValues = {}) {
52
+ const mapped = {
53
+ // Fixes the Deployment, ServiceAccount and RBAC names to the release name,
54
+ // so an EKS Pod Identity association can name the ServiceAccount.
55
+ fullnameOverride: config.name,
56
+ replicas: Cel.default(config.replicas, 2),
57
+ logLevel: Cel.default(config.logLevel, 'info'),
58
+ dnsPolicy: Cel.default(config.dnsPolicy, 'ClusterFirst'),
59
+ serviceAccount: {
60
+ create: true,
61
+ name: Cel.default(config.serviceAccount?.name, config.name),
62
+ annotations: Cel.default(config.serviceAccount?.annotations, {}),
63
+ },
64
+ podDisruptionBudget: {
65
+ maxUnavailable: Cel.default(config.podDisruptionBudget?.maxUnavailable, 1),
66
+ },
67
+ nodeSelector: Cel.default(config.nodeSelector, {}),
68
+ affinity: Cel.default(config.affinity, {}),
69
+ topologySpreadConstraints: Cel.default(config.topologySpreadConstraints, [
70
+ ...KARPENTER_DEFAULT_TOPOLOGY_SPREAD_CONSTRAINTS.map((constraint) => ({ ...constraint })),
71
+ ]),
72
+ tolerations: Cel.default(config.tolerations, [
73
+ ...KARPENTER_DEFAULT_TOLERATIONS.map((toleration) => ({ ...toleration })),
74
+ ]),
75
+ controller: {
76
+ resources: Cel.default(config.resources, {
77
+ requests: { ...KARPENTER_DEFAULT_RESOURCES.requests },
78
+ limits: { ...KARPENTER_DEFAULT_RESOURCES.limits },
79
+ }),
80
+ },
81
+ settings: {
82
+ clusterName: config.clusterName,
83
+ clusterEndpoint: Cel.default(config.clusterEndpoint, ''),
84
+ interruptionQueue: Cel.default(config.interruptionQueue, ''),
85
+ },
86
+ };
87
+ return deepMerge(mapped, rawValues);
88
+ }
89
+ //# sourceMappingURL=helm-values-mapper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"helm-values-mapper.js","sourceRoot":"","sources":["../../../../src/factories/karpenter/utils/helm-values-mapper.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export { mapKarpenterConfigToHelmValues } from './helm-values-mapper.js';
2
+ export { type KarpenterValidationIssue, validateEC2NodeClassSpec, validateKarpenterBootstrapConfig, validateNodePoolSpec, } from './validation.js';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/factories/karpenter/utils/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,8BAA8B,EAAE,MAAM,yBAAyB,CAAC;AACzE,OAAO,EACL,KAAK,wBAAwB,EAC7B,wBAAwB,EACxB,gCAAgC,EAChC,oBAAoB,GACrB,MAAM,iBAAiB,CAAC"}
@@ -0,0 +1,3 @@
1
+ export { mapKarpenterConfigToHelmValues } from './helm-values-mapper.js';
2
+ export { validateEC2NodeClassSpec, validateKarpenterBootstrapConfig, validateNodePoolSpec, } from './validation.js';
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/factories/karpenter/utils/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,8BAA8B,EAAE,MAAM,yBAAyB,CAAC;AACzE,OAAO,EAEL,wBAAwB,EACxB,gCAAgC,EAChC,oBAAoB,GACrB,MAAM,iBAAiB,CAAC"}
@@ -0,0 +1,42 @@
1
+ import type { EC2NodeClassSpec, KarpenterBootstrapConfig, NodePoolSpec } from '../types.js';
2
+ /** One finding from a Karpenter validator. */
3
+ export interface KarpenterValidationIssue {
4
+ severity: 'error' | 'warning';
5
+ /** Dotted path of the offending field, relative to `spec`. */
6
+ path: string;
7
+ message: string;
8
+ }
9
+ /**
10
+ * Validate a `NodePool` spec.
11
+ *
12
+ * @example
13
+ * ```typescript
14
+ * const errors = validateNodePoolSpec(spec).filter((issue) => issue.severity === 'error');
15
+ * ```
16
+ */
17
+ export declare function validateNodePoolSpec(spec: NodePoolSpec, name?: string): KarpenterValidationIssue[];
18
+ /**
19
+ * Validate an `EC2NodeClass` spec.
20
+ *
21
+ * @example
22
+ * ```typescript
23
+ * validateEC2NodeClassSpec({ ...spec, metadataOptions: { httpTokens: 'optional' } });
24
+ * // [{ severity: 'warning', path: 'metadataOptions.httpTokens', ... }]
25
+ * ```
26
+ */
27
+ export declare function validateEC2NodeClassSpec(spec: EC2NodeClassSpec, name?: string): KarpenterValidationIssue[];
28
+ /**
29
+ * Warnings for a `karpenterBootstrap` spec.
30
+ *
31
+ * @example
32
+ * ```typescript
33
+ * validateKarpenterBootstrapConfig({ name: 'karpenter', clusterName: 'demo' });
34
+ * // [{ severity: 'warning', path: 'interruptionQueue', ... }]
35
+ * ```
36
+ */
37
+ export declare function validateKarpenterBootstrapConfig(config: KarpenterBootstrapConfig): KarpenterValidationIssue[];
38
+ /** Log validator warnings, once per real composition run. Used by the factories. */
39
+ export declare function warnKarpenterIssues(source: string, issues: KarpenterValidationIssue[]): void;
40
+ /** Throw on validator errors. Used by the factories. */
41
+ export declare function assertNoKarpenterErrors(kind: string, name: unknown, issues: KarpenterValidationIssue[]): void;
42
+ //# sourceMappingURL=validation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../../../../src/factories/karpenter/utils/validation.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,gBAAgB,EAAE,wBAAwB,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE5F,8CAA8C;AAC9C,MAAM,WAAW,wBAAwB;IACvC,QAAQ,EAAE,OAAO,GAAG,SAAS,CAAC;IAC9B,8DAA8D;IAC9D,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB;AA6ID;;;;;;;GAOG;AACH,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,YAAY,EAClB,IAAI,CAAC,EAAE,MAAM,GACZ,wBAAwB,EAAE,CA6J5B;AAED;;;;;;;;GAQG;AACH,wBAAgB,wBAAwB,CACtC,IAAI,EAAE,gBAAgB,EACtB,IAAI,CAAC,EAAE,MAAM,GACZ,wBAAwB,EAAE,CAmL5B;AAED;;;;;;;;GAQG;AACH,wBAAgB,gCAAgC,CAC9C,MAAM,EAAE,wBAAwB,GAC/B,wBAAwB,EAAE,CAmC5B;AAED,oFAAoF;AACpF,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,wBAAwB,EAAE,GAAG,IAAI,CAK5F;AAED,wDAAwD;AACxD,wBAAgB,uBAAuB,CACrC,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,OAAO,EACb,MAAM,EAAE,wBAAwB,EAAE,GACjC,IAAI,CASN"}
@@ -0,0 +1,441 @@
1
+ // Checks for common Karpenter configuration mistakes.
2
+ //
3
+ // Errors are things the API server or Karpenter rejects; the factories throw
4
+ // on them. Warnings are legal but usually unintended. Values that are schema
5
+ // references or CEL expressions are only known at reconcile time and are
6
+ // skipped.
7
+ import { getCurrentCompositionContext } from '../../../core/composition/context.js';
8
+ import { TypeKroError } from '../../../core/errors.js';
9
+ import { getComponentLogger } from '../../../core/logging/index.js';
10
+ import { REQUIRED_FIELD_SENTINEL } from '../../../core/serialization/schema.js';
11
+ import { isCelExpression, isKubernetesRef } from '../../../utils/type-guards.js';
12
+ const RESTRICTED_LABELS = ['karpenter.sh/nodepool', 'kubernetes.io/hostname'];
13
+ // Keys in the restricted `karpenter.sh` and `karpenter.k8s.aws` label domains
14
+ // the pinned NodePool CRD still accepts in requirements and template labels.
15
+ const ALLOWED_KARPENTER_SH_LABELS = ['karpenter.sh/capacity-type', 'karpenter.sh/nodepool'];
16
+ const ALLOWED_KARPENTER_AWS_LABELS = [
17
+ 'instance-tenancy',
18
+ 'capacity-reservation-type',
19
+ 'capacity-reservation-id',
20
+ 'capacity-reservation-interruptible',
21
+ 'ec2nodeclass',
22
+ 'instance-encryption-in-transit-supported',
23
+ 'instance-category',
24
+ 'instance-hypervisor',
25
+ 'instance-family',
26
+ 'instance-generation',
27
+ 'instance-local-nvme',
28
+ 'instance-size',
29
+ 'instance-cpu',
30
+ 'instance-cpu-manufacturer',
31
+ 'instance-cpu-sustained-clock-speed-mhz',
32
+ 'instance-memory',
33
+ 'instance-ebs-bandwidth',
34
+ 'instance-network-bandwidth',
35
+ 'instance-gpu-name',
36
+ 'instance-gpu-manufacturer',
37
+ 'instance-gpu-count',
38
+ 'instance-gpu-memory',
39
+ 'instance-accelerator-name',
40
+ 'instance-accelerator-manufacturer',
41
+ 'instance-accelerator-count',
42
+ 'instance-capability-flex',
43
+ 'placement-group-id',
44
+ 'placement-group-partition',
45
+ ].map((name) => `karpenter.k8s.aws/${name}`);
46
+ // Duration patterns from the pinned NodePool CRD.
47
+ const EXPIRE_AFTER = /^(([0-9]+(s|m|h))+|Never)$/;
48
+ const CONSOLIDATE_AFTER = /^(([0-9]+(s|m|h))+|Never)$/;
49
+ const TERMINATION_GRACE_PERIOD = /^([0-9]+(s|m|h))+$/;
50
+ const BUDGET_DURATION = /^((([0-9]+(h|m))|([0-9]+h[0-9]+m))(0s)?)$/;
51
+ const BUDGET_NODES = /^((100|[0-9]{1,2})%|[0-9]+)$/;
52
+ // EC2NodeClass `spec.tags` keys the CRD reserves for EKS and Karpenter.
53
+ const RESTRICTED_TAGS = [
54
+ 'eks:eks-cluster-name',
55
+ 'karpenter.sh/nodepool',
56
+ 'karpenter.sh/nodeclaim',
57
+ 'karpenter.k8s.aws/ec2nodeclass',
58
+ ];
59
+ // Karpenter puts NodePool and EC2NodeClass names in label values on every
60
+ // NodeClaim and Node (`karpenter.sh/nodepool`, `karpenter.k8s.aws/ec2nodeclass`).
61
+ const MAX_LABEL_VALUE_NAME = 63;
62
+ // What a schema proxy stringifies to inside a template literal.
63
+ const KUBERNETES_REF_MARKER_PREFIX = '__KUBERNETES_REF_';
64
+ // What the CRD's `int(x) >= 0` accepts: cel-go's int() parses like Go's
65
+ // strconv.ParseInt into an int64, so a sign is allowed ('+5', and '-0', which
66
+ // is 0) and anything above int64 max is refused.
67
+ const SIGNED_INTEGER = /^[+-]?\d+$/;
68
+ const INT64_MAX = 9223372036854775807n;
69
+ function isNonNegativeInteger(value) {
70
+ return SIGNED_INTEGER.test(value) && BigInt(value) >= 0n && BigInt(value) <= INT64_MAX;
71
+ }
72
+ const VALUED_OPERATORS = ['In', 'Gt', 'Lt', 'Gte', 'Lte'];
73
+ // Alias family -> the amiFamily values the CRD accepts alongside it.
74
+ const ALIAS_FAMILIES = {
75
+ al2: 'AL2',
76
+ al2023: 'AL2023',
77
+ bottlerocket: 'Bottlerocket',
78
+ windows2019: 'Windows2019',
79
+ windows2022: 'Windows2022',
80
+ windows2025: 'Windows2025',
81
+ };
82
+ // amiSelectorTerms limits from the pinned EC2NodeClass CRD.
83
+ const MAX_AMI_SELECTOR_TERMS = 30;
84
+ const MAX_AMI_SELECTOR_TAGS = 20;
85
+ const MAX_ALIAS_LENGTH = 30;
86
+ const AMI_TERM_FIELDS = ['alias', 'id', 'ssmParameter', 'name', 'tags', 'owner'];
87
+ // The CRD's `pattern: ami-[0-9a-z]+` (OpenAPI patterns are unanchored).
88
+ const AMI_ID = /ami-[0-9a-z]+/;
89
+ const logger = getComponentLogger('karpenter-validation');
90
+ function isGraphValue(value) {
91
+ return isKubernetesRef(value) || isCelExpression(value);
92
+ }
93
+ /** A concrete array, or undefined when absent or only known at reconcile time. */
94
+ function concreteArray(value) {
95
+ return Array.isArray(value) && !isGraphValue(value) ? value : undefined;
96
+ }
97
+ function isConcreteString(value) {
98
+ return typeof value === 'string' && !isGraphValue(value);
99
+ }
100
+ /** A name a build-time check can judge (not a reference, template over one, or placeholder). */
101
+ function isConcreteName(value) {
102
+ return (isConcreteString(value) &&
103
+ !value.includes(KUBERNETES_REF_MARKER_PREFIX) &&
104
+ !value.includes(REQUIRED_FIELD_SENTINEL));
105
+ }
106
+ /** Why the CRD rejects this requirement or template label key, or undefined. */
107
+ function restrictedLabelReason(key) {
108
+ if (RESTRICTED_LABELS.includes(key))
109
+ return `${key} is reserved.`;
110
+ const domain = /^([^/]+)/.exec(key)?.[1] ?? '';
111
+ if (domain.endsWith('karpenter.sh') && !ALLOWED_KARPENTER_SH_LABELS.includes(key)) {
112
+ return `the label domain "karpenter.sh" is restricted (only karpenter.sh/capacity-type is allowed).`;
113
+ }
114
+ if (domain.endsWith('karpenter.k8s.aws') && !ALLOWED_KARPENTER_AWS_LABELS.includes(key)) {
115
+ return `the label domain "karpenter.k8s.aws" is restricted to Karpenter's well-known labels.`;
116
+ }
117
+ return undefined;
118
+ }
119
+ function checkName(kind, name, error) {
120
+ if (isConcreteName(name) && name.length > MAX_LABEL_VALUE_NAME) {
121
+ error('name', `${kind} name is ${name.length} characters; at most ${MAX_LABEL_VALUE_NAME}, because Karpenter puts it in a label value on every NodeClaim and Node.`);
122
+ }
123
+ }
124
+ function checkPattern(path, value, pattern, example, error) {
125
+ if (isConcreteString(value) && !pattern.test(value)) {
126
+ error(path, `"${value}" is not a valid value here, e.g. ${example}.`);
127
+ }
128
+ }
129
+ function hasAny(term, keys) {
130
+ return keys.some((key) => term[key] !== undefined);
131
+ }
132
+ /**
133
+ * Validate a `NodePool` spec.
134
+ *
135
+ * @example
136
+ * ```typescript
137
+ * const errors = validateNodePoolSpec(spec).filter((issue) => issue.severity === 'error');
138
+ * ```
139
+ */
140
+ export function validateNodePoolSpec(spec, name) {
141
+ const issues = [];
142
+ const error = (path, message) => issues.push({ severity: 'error', path, message });
143
+ const warn = (path, message) => issues.push({ severity: 'warning', path, message });
144
+ checkName('NodePool', name, error);
145
+ if (isGraphValue(spec))
146
+ return issues;
147
+ const template = spec?.template?.spec;
148
+ if (!template?.nodeClassRef) {
149
+ error('template.spec.nodeClassRef', 'A NodePool needs a nodeClassRef naming its EC2NodeClass.');
150
+ }
151
+ else if (isConcreteString(template.nodeClassRef.name) && template.nodeClassRef.name === '') {
152
+ error('template.spec.nodeClassRef.name', 'nodeClassRef.name must not be empty.');
153
+ }
154
+ const requirements = concreteArray(template?.requirements);
155
+ if (requirements?.length === 0) {
156
+ warn('template.spec.requirements', 'No requirements: Karpenter may launch any on-demand amd64 instance type, including very large ones. Constrain at least the capacity type and instance category or family.');
157
+ }
158
+ requirements?.forEach((requirement, index) => {
159
+ const path = `template.spec.requirements[${index}]`;
160
+ const values = concreteArray(requirement.values);
161
+ if (VALUED_OPERATORS.includes(requirement.operator) && requirement.values === undefined) {
162
+ error(`${path}.values`, `Operator '${requirement.operator}' needs values.`);
163
+ }
164
+ if (typeof requirement.minValues === 'number' &&
165
+ (requirement.minValues < 1 || requirement.minValues > 50)) {
166
+ error(`${path}.minValues`, 'minValues must be between 1 and 50.');
167
+ }
168
+ const restricted = isConcreteString(requirement.key)
169
+ ? restrictedLabelReason(requirement.key)
170
+ : undefined;
171
+ if (restricted) {
172
+ error(`${path}.key`, `${requirement.key} cannot be a requirement: ${restricted}`);
173
+ }
174
+ if (requirement.operator === 'In' && values?.length === 0) {
175
+ error(`${path}.values`, "Operator 'In' needs at least one value.");
176
+ }
177
+ if (['Gt', 'Lt', 'Gte', 'Lte'].includes(requirement.operator) && values) {
178
+ const [only] = values;
179
+ if (values.length !== 1 || !isConcreteString(only) || !isNonNegativeInteger(only)) {
180
+ error(`${path}.values`, `Operator '${requirement.operator}' needs exactly one non-negative integer value.`);
181
+ }
182
+ }
183
+ if (typeof requirement.minValues === 'number' &&
184
+ requirement.operator === 'In' &&
185
+ values &&
186
+ values.length < requirement.minValues) {
187
+ error(`${path}.minValues`, `minValues ${requirement.minValues} exceeds the ${values.length} values listed.`);
188
+ }
189
+ });
190
+ const labels = spec?.template?.metadata?.labels;
191
+ if (labels !== undefined && !isGraphValue(labels)) {
192
+ for (const key of Object.keys(labels)) {
193
+ const restricted = restrictedLabelReason(key);
194
+ if (restricted) {
195
+ error(`template.metadata.labels.${key}`, `${key} cannot be a template label: ${restricted}`);
196
+ }
197
+ }
198
+ }
199
+ checkPattern('template.spec.expireAfter', template?.expireAfter, EXPIRE_AFTER, "'720h' or 'Never'", error);
200
+ checkPattern('template.spec.terminationGracePeriod', template?.terminationGracePeriod, TERMINATION_GRACE_PERIOD, "'48h'", error);
201
+ // Static NodePools (`replicas` set; not typed, alpha) take neither weight nor
202
+ // limits other than `nodes`.
203
+ const replicas = spec?.replicas;
204
+ if (replicas !== undefined) {
205
+ if (spec.weight !== undefined)
206
+ error('weight', 'weight is not supported on static NodePools.');
207
+ const limitKeys = spec.limits !== undefined && !isGraphValue(spec.limits) ? Object.keys(spec.limits) : [];
208
+ if (limitKeys.some((key) => key !== 'nodes')) {
209
+ error('limits', 'Only limits.nodes is supported on static NodePools.');
210
+ }
211
+ }
212
+ if (replicas === undefined && spec?.limits === undefined) {
213
+ warn('limits', 'No limits: this NodePool can scale without bound. Set limits.cpu and limits.memory.');
214
+ }
215
+ if (spec?.disruption !== undefined &&
216
+ !isGraphValue(spec.disruption) &&
217
+ spec.disruption.consolidateAfter === undefined) {
218
+ error('disruption.consolidateAfter', "consolidateAfter is required when disruption is set (e.g. '0s' or '1m').");
219
+ }
220
+ if (spec?.disruption !== undefined && !isGraphValue(spec.disruption)) {
221
+ checkPattern('disruption.consolidateAfter', spec.disruption.consolidateAfter, CONSOLIDATE_AFTER, "'0s', '1m' or 'Never'", error);
222
+ }
223
+ concreteArray(spec?.disruption?.budgets)?.forEach((budget, index) => {
224
+ if ((budget.schedule === undefined) !== (budget.duration === undefined)) {
225
+ error(`disruption.budgets[${index}]`, 'A budget schedule and duration must be set together.');
226
+ }
227
+ checkPattern(`disruption.budgets[${index}].nodes`, budget.nodes, BUDGET_NODES, "'10%' or '5'", error);
228
+ checkPattern(`disruption.budgets[${index}].duration`, budget.duration, BUDGET_DURATION, "'8h' or '1h30m'", error);
229
+ });
230
+ if (typeof spec?.weight === 'number' && (spec.weight < 1 || spec.weight > 100)) {
231
+ error('weight', 'weight must be between 1 and 100.');
232
+ }
233
+ return issues;
234
+ }
235
+ /**
236
+ * Validate an `EC2NodeClass` spec.
237
+ *
238
+ * @example
239
+ * ```typescript
240
+ * validateEC2NodeClassSpec({ ...spec, metadataOptions: { httpTokens: 'optional' } });
241
+ * // [{ severity: 'warning', path: 'metadataOptions.httpTokens', ... }]
242
+ * ```
243
+ */
244
+ export function validateEC2NodeClassSpec(spec, name) {
245
+ const issues = [];
246
+ const error = (path, message) => issues.push({ severity: 'error', path, message });
247
+ checkName('EC2NodeClass', name, error);
248
+ if (isGraphValue(spec))
249
+ return issues;
250
+ if ((spec?.role === undefined) === (spec?.instanceProfile === undefined)) {
251
+ error('role', 'Set exactly one of role or instanceProfile.');
252
+ }
253
+ for (const field of ['role', 'instanceProfile']) {
254
+ if (isConcreteString(spec?.[field]) && spec[field] === '') {
255
+ error(field, `${field} must not be empty.`);
256
+ }
257
+ }
258
+ const tags = spec?.tags;
259
+ if (tags !== undefined && !isGraphValue(tags)) {
260
+ for (const key of Object.keys(tags)) {
261
+ if (key === '')
262
+ error('tags', 'Tag keys must not be empty.');
263
+ else if (RESTRICTED_TAGS.includes(key) || key.startsWith('kubernetes.io/cluster')) {
264
+ error(`tags.${key}`, `The tag ${key} is reserved for EKS and Karpenter.`);
265
+ }
266
+ }
267
+ }
268
+ // Mirrors the amiSelectorTerms rules of the pinned EC2NodeClass CRD, plus one
269
+ // stricter rule: alias, id and ssmParameter each resolve an AMI on their own,
270
+ // and Karpenter ignores every other field in that term (alias wins over
271
+ // everything; id wins over ssmParameter; ssmParameter wins over name, tags and
272
+ // owner). The CRD leaves ssmParameter out of its exclusion rules, so without
273
+ // this check those fields would be applied and then silently dropped.
274
+ const amiTerms = concreteArray(spec?.amiSelectorTerms);
275
+ if (amiTerms?.length === 0) {
276
+ error('amiSelectorTerms', 'At least one AMI selector term is required, e.g. { alias: "al2023@latest" }.');
277
+ }
278
+ if (amiTerms && amiTerms.length > MAX_AMI_SELECTOR_TERMS) {
279
+ error('amiSelectorTerms', `At most ${MAX_AMI_SELECTOR_TERMS} AMI selector terms are allowed (got ${amiTerms.length}).`);
280
+ }
281
+ if (amiTerms && amiTerms.length > 1 && amiTerms.some((term) => term.alias !== undefined)) {
282
+ error('amiSelectorTerms', 'An alias term must be the only AMI selector term.');
283
+ }
284
+ amiTerms?.forEach((term, index) => {
285
+ const path = `amiSelectorTerms[${index}]`;
286
+ if (!hasAny(term, ['alias', 'id', 'name', 'tags', 'ssmParameter'])) {
287
+ error(path, 'An AMI selector term needs alias, id, name, tags or ssmParameter.');
288
+ }
289
+ // Karpenter resolves the first of these that is set and ignores the rest.
290
+ const winner = ['alias', 'id', 'ssmParameter'].find((field) => term[field] !== undefined);
291
+ const ignored = AMI_TERM_FIELDS.filter((field) => field !== winner && term[field] !== undefined);
292
+ if (winner !== undefined && ignored.length > 0) {
293
+ error(path, `${winner} must be the only field in its AMI selector term; Karpenter would ignore ${ignored.join(', ')}.`);
294
+ }
295
+ if (isConcreteString(term.id) && !AMI_ID.test(term.id)) {
296
+ error(`${path}.id`, `AMI id "${term.id}" must look like ami-0123456789abcdef0.`);
297
+ }
298
+ if (term.tags !== undefined && !isGraphValue(term.tags)) {
299
+ const entries = Object.entries(term.tags);
300
+ if (entries.length > MAX_AMI_SELECTOR_TAGS) {
301
+ error(`${path}.tags`, `At most ${MAX_AMI_SELECTOR_TAGS} tags are allowed in one term.`);
302
+ }
303
+ if (entries.some(([key, value]) => key === '' || (isConcreteString(value) && value === ''))) {
304
+ error(`${path}.tags`, 'Tag keys and values must not be empty.');
305
+ }
306
+ }
307
+ if (isConcreteString(term.alias) && term.alias.length > MAX_ALIAS_LENGTH) {
308
+ error(`${path}.alias`, `An alias must be at most ${MAX_ALIAS_LENGTH} characters.`);
309
+ }
310
+ if (isConcreteString(term.alias)) {
311
+ const [family = '', version] = term.alias.split('@');
312
+ const amiFamily = ALIAS_FAMILIES[family];
313
+ if (!/^[a-zA-Z0-9]+@.+$/.test(term.alias) || amiFamily === undefined) {
314
+ error(`${path}.alias`, `Alias must be <family>@<version> with family one of ${Object.keys(ALIAS_FAMILIES).join(', ')}.`);
315
+ }
316
+ else if (family.startsWith('windows') && version !== 'latest') {
317
+ error(`${path}.alias`, 'Windows aliases only support @latest.');
318
+ }
319
+ else if (isConcreteString(spec.amiFamily) &&
320
+ spec.amiFamily !== 'Custom' &&
321
+ spec.amiFamily !== amiFamily) {
322
+ error('amiFamily', `amiFamily must be ${amiFamily} or Custom with alias ${term.alias}.`);
323
+ }
324
+ }
325
+ });
326
+ if (amiTerms?.length &&
327
+ !amiTerms.some((term) => term.alias !== undefined) &&
328
+ spec.amiFamily === undefined) {
329
+ error('amiFamily', 'amiFamily is required when amiSelectorTerms do not use an alias.');
330
+ }
331
+ // `precedence`: the provider resolves the first of these that is set and
332
+ // ignores the rest of the term (subnet.go / securitygroup.go getFilterSets).
333
+ const selectors = [
334
+ {
335
+ field: 'subnetSelectorTerms',
336
+ value: spec?.subnetSelectorTerms,
337
+ keys: ['tags', 'id'],
338
+ precedence: ['id'],
339
+ idPattern: /subnet-[0-9a-z]+/,
340
+ example: 'subnet-0123456789abcdef0',
341
+ },
342
+ {
343
+ field: 'securityGroupSelectorTerms',
344
+ value: spec?.securityGroupSelectorTerms,
345
+ keys: ['tags', 'id', 'name'],
346
+ precedence: ['id', 'name'],
347
+ idPattern: /sg-[0-9a-z]+/,
348
+ example: 'sg-0123456789abcdef0',
349
+ },
350
+ ];
351
+ for (const { field, value, keys, precedence, idPattern, example } of selectors) {
352
+ const terms = concreteArray(value);
353
+ if (terms?.length === 0)
354
+ error(field, `At least one ${field} entry is required.`);
355
+ terms?.forEach((term, index) => {
356
+ const path = `${field}[${index}]`;
357
+ if (!hasAny(term, keys))
358
+ error(path, `Each term needs one of: ${keys.join(', ')}.`);
359
+ const winner = precedence.find((key) => term[key] !== undefined);
360
+ const ignored = keys.filter((key) => key !== winner && term[key] !== undefined);
361
+ if (winner !== undefined && ignored.length > 0) {
362
+ error(path, `${winner} must be the only field in its term; Karpenter would ignore ${ignored.join(', ')}.`);
363
+ }
364
+ checkPattern(`${path}.id`, term.id, idPattern, example, error);
365
+ const termTags = term.tags;
366
+ if (termTags !== undefined &&
367
+ !isGraphValue(termTags) &&
368
+ Object.entries(termTags).some(([key, tag]) => key === '' || (isConcreteString(tag) && tag === ''))) {
369
+ error(`${path}.tags`, 'Tag keys and values must not be empty.');
370
+ }
371
+ });
372
+ }
373
+ if (spec?.metadataOptions?.httpTokens === 'optional') {
374
+ issues.push({
375
+ severity: 'warning',
376
+ path: 'metadataOptions.httpTokens',
377
+ message: 'httpTokens "optional" allows IMDSv1. Use "required" (IMDSv2 only).',
378
+ });
379
+ }
380
+ const mappings = concreteArray(spec?.blockDeviceMappings);
381
+ mappings?.forEach((mapping, index) => {
382
+ if (mapping.ebs &&
383
+ mapping.ebs.volumeSize === undefined &&
384
+ mapping.ebs.snapshotID === undefined) {
385
+ error(`blockDeviceMappings[${index}].ebs`, 'An EBS mapping needs volumeSize or snapshotID.');
386
+ }
387
+ });
388
+ const rootVolumes = mappings?.filter((mapping) => mapping.rootVolume);
389
+ if (rootVolumes && rootVolumes.length > 1) {
390
+ error('blockDeviceMappings', 'At most one block device mapping may set rootVolume.');
391
+ }
392
+ return issues;
393
+ }
394
+ /**
395
+ * Warnings for a `karpenterBootstrap` spec.
396
+ *
397
+ * @example
398
+ * ```typescript
399
+ * validateKarpenterBootstrapConfig({ name: 'karpenter', clusterName: 'demo' });
400
+ * // [{ severity: 'warning', path: 'interruptionQueue', ... }]
401
+ * ```
402
+ */
403
+ export function validateKarpenterBootstrapConfig(config) {
404
+ const issues = [];
405
+ const warn = (path, message) => issues.push({ severity: 'warning', path, message });
406
+ if (config.interruptionQueue === undefined || config.interruptionQueue === '') {
407
+ warn('interruptionQueue', 'No interruption queue: spot interruptions and scheduled maintenance will not drain nodes ahead of time.');
408
+ }
409
+ if (typeof config.replicas === 'number' && config.replicas < 2) {
410
+ warn('replicas', 'A single controller replica stops all provisioning while it restarts.');
411
+ }
412
+ if (config.affinity !== undefined &&
413
+ !isGraphValue(config.affinity) &&
414
+ !JSON.stringify(config.affinity).includes('karpenter.sh/nodepool')) {
415
+ warn('affinity', 'The affinity no longer excludes karpenter.sh/nodepool nodes, so the controller may be scheduled onto a node it manages.');
416
+ }
417
+ if (config.resources !== undefined &&
418
+ !isGraphValue(config.resources) &&
419
+ config.resources.requests === undefined) {
420
+ warn('resources.requests', 'No controller resource requests: a BestEffort controller is starved first and cannot reschedule onto the nodes it launches.');
421
+ }
422
+ return issues;
423
+ }
424
+ /** Log validator warnings, once per real composition run. Used by the factories. */
425
+ export function warnKarpenterIssues(source, issues) {
426
+ if (getCurrentCompositionContext()?.suppressResourceDiagnostics)
427
+ return;
428
+ for (const issue of issues) {
429
+ if (issue.severity === 'warning')
430
+ logger.warn(`${source}: ${issue.path}: ${issue.message}`);
431
+ }
432
+ }
433
+ /** Throw on validator errors. Used by the factories. */
434
+ export function assertNoKarpenterErrors(kind, name, issues) {
435
+ const errors = issues.filter((issue) => issue.severity === 'error');
436
+ if (errors.length === 0)
437
+ return;
438
+ const label = isConcreteString(name) ? ` "${name}"` : '';
439
+ throw new TypeKroError(`Invalid ${kind}${label}: ${errors.map((issue) => `${issue.path}: ${issue.message}`).join('; ')}`, 'KARPENTER_INVALID_SPEC', { kind, issues: errors });
440
+ }
441
+ //# sourceMappingURL=validation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validation.js","sourceRoot":"","sources":["../../../../src/factories/karpenter/utils/validation.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export { kedaBootstrap, makeKedaBootstrap } from './keda-bootstrap.js';
2
+ export { kedaHelmRepositoryBootstrap } from './keda-helm-repository.js';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/factories/keda/compositions/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACvE,OAAO,EAAE,2BAA2B,EAAE,MAAM,2BAA2B,CAAC"}