typekro 0.33.9 → 0.34.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 (352) hide show
  1. package/dist/.tsbuildinfo +1 -1
  2. package/dist/compositions/typekro-runtime/typekro-runtime.d.ts +0 -33
  3. package/dist/compositions/typekro-runtime/typekro-runtime.d.ts.map +1 -1
  4. package/dist/compositions/typekro-runtime/typekro-runtime.js +63 -1
  5. package/dist/compositions/typekro-runtime/typekro-runtime.js.map +1 -1
  6. package/dist/compositions/typekro-runtime/types.d.ts +8 -0
  7. package/dist/compositions/typekro-runtime/types.d.ts.map +1 -1
  8. package/dist/compositions/typekro-runtime/types.js +1 -0
  9. package/dist/compositions/typekro-runtime/types.js.map +1 -1
  10. package/dist/core/aspects/values-merge.d.ts +17 -0
  11. package/dist/core/aspects/values-merge.d.ts.map +1 -1
  12. package/dist/core/aspects/values-merge.js +67 -8
  13. package/dist/core/aspects/values-merge.js.map +1 -1
  14. package/dist/core/deployment/direct-factory.d.ts +9 -0
  15. package/dist/core/deployment/direct-factory.d.ts.map +1 -1
  16. package/dist/core/deployment/direct-factory.js +37 -3
  17. package/dist/core/deployment/direct-factory.js.map +1 -1
  18. package/dist/core/deployment/engine.d.ts +34 -0
  19. package/dist/core/deployment/engine.d.ts.map +1 -1
  20. package/dist/core/deployment/engine.js +173 -29
  21. package/dist/core/deployment/engine.js.map +1 -1
  22. package/dist/core/deployment/index.d.ts +2 -0
  23. package/dist/core/deployment/index.d.ts.map +1 -1
  24. package/dist/core/deployment/index.js +1 -0
  25. package/dist/core/deployment/index.js.map +1 -1
  26. package/dist/core/deployment/k8s-helpers.d.ts +73 -0
  27. package/dist/core/deployment/k8s-helpers.d.ts.map +1 -1
  28. package/dist/core/deployment/k8s-helpers.js +198 -4
  29. package/dist/core/deployment/k8s-helpers.js.map +1 -1
  30. package/dist/core/deployment/kro-factory.d.ts.map +1 -1
  31. package/dist/core/deployment/kro-factory.js +21 -1
  32. package/dist/core/deployment/kro-factory.js.map +1 -1
  33. package/dist/core/deployment/status-leaf-resolution.d.ts +101 -0
  34. package/dist/core/deployment/status-leaf-resolution.d.ts.map +1 -0
  35. package/dist/core/deployment/status-leaf-resolution.js +232 -0
  36. package/dist/core/deployment/status-leaf-resolution.js.map +1 -0
  37. package/dist/core/deployment/strategies/base-strategy.d.ts.map +1 -1
  38. package/dist/core/deployment/strategies/base-strategy.js +31 -3
  39. package/dist/core/deployment/strategies/base-strategy.js.map +1 -1
  40. package/dist/core/deployment/strategies/kro-strategy.d.ts.map +1 -1
  41. package/dist/core/deployment/strategies/kro-strategy.js +8 -1
  42. package/dist/core/deployment/strategies/kro-strategy.js.map +1 -1
  43. package/dist/core/expressions/composition/composition-analyzer-helpers.d.ts.map +1 -1
  44. package/dist/core/expressions/composition/composition-analyzer-helpers.js +20 -2
  45. package/dist/core/expressions/composition/composition-analyzer-helpers.js.map +1 -1
  46. package/dist/core/kro/index.d.ts +6 -0
  47. package/dist/core/kro/index.d.ts.map +1 -0
  48. package/dist/core/kro/index.js +6 -0
  49. package/dist/core/kro/index.js.map +1 -0
  50. package/dist/core/kro/label-guard-capability.d.ts +141 -0
  51. package/dist/core/kro/label-guard-capability.d.ts.map +1 -0
  52. package/dist/core/kro/label-guard-capability.js +257 -0
  53. package/dist/core/kro/label-guard-capability.js.map +1 -0
  54. package/dist/core/kro/labels.d.ts +56 -0
  55. package/dist/core/kro/labels.d.ts.map +1 -0
  56. package/dist/core/kro/labels.js +62 -0
  57. package/dist/core/kro/labels.js.map +1 -0
  58. package/dist/core/kubernetes/api-capability.d.ts +196 -0
  59. package/dist/core/kubernetes/api-capability.d.ts.map +1 -0
  60. package/dist/core/kubernetes/api-capability.js +301 -0
  61. package/dist/core/kubernetes/api-capability.js.map +1 -0
  62. package/dist/core/kubernetes/index.d.ts +2 -0
  63. package/dist/core/kubernetes/index.d.ts.map +1 -1
  64. package/dist/core/kubernetes/index.js +2 -0
  65. package/dist/core/kubernetes/index.js.map +1 -1
  66. package/dist/core/kubernetes/naming.d.ts +100 -0
  67. package/dist/core/kubernetes/naming.d.ts.map +1 -0
  68. package/dist/core/kubernetes/naming.js +93 -0
  69. package/dist/core/kubernetes/naming.js.map +1 -0
  70. package/dist/core/planning/direct-runtime-adapter.d.ts.map +1 -1
  71. package/dist/core/planning/direct-runtime-adapter.js +54 -17
  72. package/dist/core/planning/direct-runtime-adapter.js.map +1 -1
  73. package/dist/core/planning/planner.d.ts.map +1 -1
  74. package/dist/core/planning/planner.js +17 -0
  75. package/dist/core/planning/planner.js.map +1 -1
  76. package/dist/core/planning/schema.d.ts.map +1 -1
  77. package/dist/core/planning/schema.js +7 -3
  78. package/dist/core/planning/schema.js.map +1 -1
  79. package/dist/core/references/cel-lexical-scanner.d.ts +100 -1
  80. package/dist/core/references/cel-lexical-scanner.d.ts.map +1 -1
  81. package/dist/core/references/cel-lexical-scanner.js +196 -2
  82. package/dist/core/references/cel-lexical-scanner.js.map +1 -1
  83. package/dist/core/references/cel.d.ts +249 -1
  84. package/dist/core/references/cel.d.ts.map +1 -1
  85. package/dist/core/references/cel.js +289 -8
  86. package/dist/core/references/cel.js.map +1 -1
  87. package/dist/core/serialization/arktype-ast.d.ts +21 -0
  88. package/dist/core/serialization/arktype-ast.d.ts.map +1 -0
  89. package/dist/core/serialization/arktype-ast.js +29 -0
  90. package/dist/core/serialization/arktype-ast.js.map +1 -0
  91. package/dist/core/serialization/cel-references.d.ts +133 -32
  92. package/dist/core/serialization/cel-references.d.ts.map +1 -1
  93. package/dist/core/serialization/cel-references.js +908 -109
  94. package/dist/core/serialization/cel-references.js.map +1 -1
  95. package/dist/core/serialization/core.d.ts.map +1 -1
  96. package/dist/core/serialization/core.js +13 -2
  97. package/dist/core/serialization/core.js.map +1 -1
  98. package/dist/core/serialization/schema.d.ts +16 -2
  99. package/dist/core/serialization/schema.d.ts.map +1 -1
  100. package/dist/core/serialization/schema.js +113 -21
  101. package/dist/core/serialization/schema.js.map +1 -1
  102. package/dist/core/types/composable.d.ts +7 -1
  103. package/dist/core/types/composable.d.ts.map +1 -1
  104. package/dist/core/types/deployment.d.ts +32 -2
  105. package/dist/core/types/deployment.d.ts.map +1 -1
  106. package/dist/core/types/serialization.d.ts +37 -0
  107. package/dist/core/types/serialization.d.ts.map +1 -1
  108. package/dist/core/validation/cel-dialect.d.ts +246 -0
  109. package/dist/core/validation/cel-dialect.d.ts.map +1 -0
  110. package/dist/core/validation/cel-dialect.js +1997 -0
  111. package/dist/core/validation/cel-dialect.js.map +1 -0
  112. package/dist/core/validation/cel-validator.d.ts.map +1 -1
  113. package/dist/core/validation/cel-validator.js +8 -1
  114. package/dist/core/validation/cel-validator.js.map +1 -1
  115. package/dist/core/validation/literal-status.d.ts +107 -0
  116. package/dist/core/validation/literal-status.d.ts.map +1 -0
  117. package/dist/core/validation/literal-status.js +346 -0
  118. package/dist/core/validation/literal-status.js.map +1 -0
  119. package/dist/core/validation/structural-spec-dependence.d.ts +179 -0
  120. package/dist/core/validation/structural-spec-dependence.d.ts.map +1 -0
  121. package/dist/core/validation/structural-spec-dependence.js +911 -0
  122. package/dist/core/validation/structural-spec-dependence.js.map +1 -0
  123. package/dist/factories/apisix/compositions/apisix-bootstrap.d.ts.map +1 -1
  124. package/dist/factories/apisix/compositions/apisix-bootstrap.js +9 -0
  125. package/dist/factories/apisix/compositions/apisix-bootstrap.js.map +1 -1
  126. package/dist/factories/clickhouse/compositions/clickhouse-cluster.d.ts +6 -0
  127. package/dist/factories/clickhouse/compositions/clickhouse-cluster.d.ts.map +1 -1
  128. package/dist/factories/clickhouse/compositions/clickhouse-cluster.js +273 -23
  129. package/dist/factories/clickhouse/compositions/clickhouse-cluster.js.map +1 -1
  130. package/dist/factories/clickhouse/resources/index.d.ts +1 -0
  131. package/dist/factories/clickhouse/resources/index.d.ts.map +1 -1
  132. package/dist/factories/clickhouse/resources/index.js +1 -0
  133. package/dist/factories/clickhouse/resources/index.js.map +1 -1
  134. package/dist/factories/clickhouse/resources/installation.d.ts.map +1 -1
  135. package/dist/factories/clickhouse/resources/installation.js +31 -4
  136. package/dist/factories/clickhouse/resources/installation.js.map +1 -1
  137. package/dist/factories/clickhouse/resources/s3-backup.d.ts +215 -0
  138. package/dist/factories/clickhouse/resources/s3-backup.d.ts.map +1 -0
  139. package/dist/factories/clickhouse/resources/s3-backup.js +410 -0
  140. package/dist/factories/clickhouse/resources/s3-backup.js.map +1 -0
  141. package/dist/factories/clickhouse/types.d.ts +416 -20
  142. package/dist/factories/clickhouse/types.d.ts.map +1 -1
  143. package/dist/factories/clickhouse/types.js +235 -11
  144. package/dist/factories/clickhouse/types.js.map +1 -1
  145. package/dist/factories/clickhouse/utils/helm-values-mapper.d.ts +42 -0
  146. package/dist/factories/clickhouse/utils/helm-values-mapper.d.ts.map +1 -1
  147. package/dist/factories/clickhouse/utils/helm-values-mapper.js +48 -0
  148. package/dist/factories/clickhouse/utils/helm-values-mapper.js.map +1 -1
  149. package/dist/factories/clickhouse/utils/index.d.ts +2 -0
  150. package/dist/factories/clickhouse/utils/index.d.ts.map +1 -1
  151. package/dist/factories/clickhouse/utils/index.js +2 -0
  152. package/dist/factories/clickhouse/utils/index.js.map +1 -1
  153. package/dist/factories/clickhouse/utils/s3-storage.d.ts +503 -0
  154. package/dist/factories/clickhouse/utils/s3-storage.d.ts.map +1 -0
  155. package/dist/factories/clickhouse/utils/s3-storage.js +1139 -0
  156. package/dist/factories/clickhouse/utils/s3-storage.js.map +1 -0
  157. package/dist/factories/clickhouse/utils/validation.d.ts +103 -0
  158. package/dist/factories/clickhouse/utils/validation.d.ts.map +1 -1
  159. package/dist/factories/clickhouse/utils/validation.js +129 -0
  160. package/dist/factories/clickhouse/utils/validation.js.map +1 -1
  161. package/dist/factories/clickhouse/utils/xml.d.ts +87 -0
  162. package/dist/factories/clickhouse/utils/xml.d.ts.map +1 -0
  163. package/dist/factories/clickhouse/utils/xml.js +151 -0
  164. package/dist/factories/clickhouse/utils/xml.js.map +1 -0
  165. package/dist/factories/clickstack/compositions/clickstack-bootstrap.d.ts +57 -0
  166. package/dist/factories/clickstack/compositions/clickstack-bootstrap.d.ts.map +1 -1
  167. package/dist/factories/clickstack/compositions/clickstack-bootstrap.js +266 -7
  168. package/dist/factories/clickstack/compositions/clickstack-bootstrap.js.map +1 -1
  169. package/dist/factories/clickstack/types.d.ts +205 -26
  170. package/dist/factories/clickstack/types.d.ts.map +1 -1
  171. package/dist/factories/clickstack/types.js +106 -8
  172. package/dist/factories/clickstack/types.js.map +1 -1
  173. package/dist/factories/clickstack/utils/collector-config.d.ts +104 -0
  174. package/dist/factories/clickstack/utils/collector-config.d.ts.map +1 -0
  175. package/dist/factories/clickstack/utils/collector-config.js +266 -0
  176. package/dist/factories/clickstack/utils/collector-config.js.map +1 -0
  177. package/dist/factories/clickstack/utils/helm-values-mapper.d.ts +26 -0
  178. package/dist/factories/clickstack/utils/helm-values-mapper.d.ts.map +1 -1
  179. package/dist/factories/clickstack/utils/helm-values-mapper.js +53 -12
  180. package/dist/factories/clickstack/utils/helm-values-mapper.js.map +1 -1
  181. package/dist/factories/clickstack/utils/index.d.ts +2 -0
  182. package/dist/factories/clickstack/utils/index.d.ts.map +1 -1
  183. package/dist/factories/clickstack/utils/index.js +2 -0
  184. package/dist/factories/clickstack/utils/index.js.map +1 -1
  185. package/dist/factories/clickstack/utils/storage.d.ts +449 -0
  186. package/dist/factories/clickstack/utils/storage.d.ts.map +1 -0
  187. package/dist/factories/clickstack/utils/storage.js +698 -0
  188. package/dist/factories/clickstack/utils/storage.js.map +1 -0
  189. package/dist/factories/cnpg/resources/helm.d.ts.map +1 -1
  190. package/dist/factories/cnpg/resources/helm.js +4 -4
  191. package/dist/factories/cnpg/resources/helm.js.map +1 -1
  192. package/dist/factories/cnpg/types.d.ts +10 -1
  193. package/dist/factories/cnpg/types.d.ts.map +1 -1
  194. package/dist/factories/cnpg/types.js.map +1 -1
  195. package/dist/factories/cnpg/utils/helm-values-mapper.d.ts +19 -2
  196. package/dist/factories/cnpg/utils/helm-values-mapper.d.ts.map +1 -1
  197. package/dist/factories/cnpg/utils/helm-values-mapper.js +22 -4
  198. package/dist/factories/cnpg/utils/helm-values-mapper.js.map +1 -1
  199. package/dist/factories/envoy-ai-gateway/compositions/gateway.d.ts.map +1 -1
  200. package/dist/factories/envoy-ai-gateway/compositions/gateway.js +16 -3
  201. package/dist/factories/envoy-ai-gateway/compositions/gateway.js.map +1 -1
  202. package/dist/factories/envoy-ai-gateway/constants.d.ts +5 -2
  203. package/dist/factories/envoy-ai-gateway/constants.d.ts.map +1 -1
  204. package/dist/factories/envoy-ai-gateway/constants.js +5 -2
  205. package/dist/factories/envoy-ai-gateway/constants.js.map +1 -1
  206. package/dist/factories/envoy-ai-gateway/resources/gateway.d.ts +12 -0
  207. package/dist/factories/envoy-ai-gateway/resources/gateway.d.ts.map +1 -1
  208. package/dist/factories/envoy-ai-gateway/resources/gateway.js +27 -104
  209. package/dist/factories/envoy-ai-gateway/resources/gateway.js.map +1 -1
  210. package/dist/factories/envoy-ai-gateway/types.d.ts +15 -47
  211. package/dist/factories/envoy-ai-gateway/types.d.ts.map +1 -1
  212. package/dist/factories/envoy-ai-gateway/types.js.map +1 -1
  213. package/dist/factories/gateway-api/constants.d.ts +27 -0
  214. package/dist/factories/gateway-api/constants.d.ts.map +1 -0
  215. package/dist/factories/gateway-api/constants.js +27 -0
  216. package/dist/factories/gateway-api/constants.js.map +1 -0
  217. package/dist/factories/gateway-api/index.d.ts +14 -0
  218. package/dist/factories/gateway-api/index.d.ts.map +1 -0
  219. package/dist/factories/gateway-api/index.js +14 -0
  220. package/dist/factories/gateway-api/index.js.map +1 -0
  221. package/dist/factories/gateway-api/readiness.d.ts +67 -0
  222. package/dist/factories/gateway-api/readiness.d.ts.map +1 -0
  223. package/dist/factories/gateway-api/readiness.js +213 -0
  224. package/dist/factories/gateway-api/readiness.js.map +1 -0
  225. package/dist/factories/gateway-api/resources/gateway.d.ts +91 -0
  226. package/dist/factories/gateway-api/resources/gateway.d.ts.map +1 -0
  227. package/dist/factories/gateway-api/resources/gateway.js +99 -0
  228. package/dist/factories/gateway-api/resources/gateway.js.map +1 -0
  229. package/dist/factories/gateway-api/resources/index.d.ts +2 -0
  230. package/dist/factories/gateway-api/resources/index.d.ts.map +1 -0
  231. package/dist/factories/gateway-api/resources/index.js +2 -0
  232. package/dist/factories/gateway-api/resources/index.js.map +1 -0
  233. package/dist/factories/gateway-api/types.d.ts +1269 -0
  234. package/dist/factories/gateway-api/types.d.ts.map +1 -0
  235. package/dist/factories/gateway-api/types.js +417 -0
  236. package/dist/factories/gateway-api/types.js.map +1 -0
  237. package/dist/factories/helm/readiness-evaluators.d.ts +21 -3
  238. package/dist/factories/helm/readiness-evaluators.d.ts.map +1 -1
  239. package/dist/factories/helm/readiness-evaluators.js +117 -11
  240. package/dist/factories/helm/readiness-evaluators.js.map +1 -1
  241. package/dist/factories/helm/types.d.ts +28 -0
  242. package/dist/factories/helm/types.d.ts.map +1 -1
  243. package/dist/factories/index.d.ts +2 -0
  244. package/dist/factories/index.d.ts.map +1 -1
  245. package/dist/factories/index.js +8 -0
  246. package/dist/factories/index.js.map +1 -1
  247. package/dist/factories/inngest/compositions/inngest-bootstrap.d.ts.map +1 -1
  248. package/dist/factories/inngest/compositions/inngest-bootstrap.js +10 -0
  249. package/dist/factories/inngest/compositions/inngest-bootstrap.js.map +1 -1
  250. package/dist/factories/kubernetes/admission/index.d.ts +2 -0
  251. package/dist/factories/kubernetes/admission/index.d.ts.map +1 -1
  252. package/dist/factories/kubernetes/admission/index.js +2 -0
  253. package/dist/factories/kubernetes/admission/index.js.map +1 -1
  254. package/dist/factories/kubernetes/admission/label-propagation-guard.d.ts +108 -0
  255. package/dist/factories/kubernetes/admission/label-propagation-guard.d.ts.map +1 -0
  256. package/dist/factories/kubernetes/admission/label-propagation-guard.js +247 -0
  257. package/dist/factories/kubernetes/admission/label-propagation-guard.js.map +1 -0
  258. package/dist/factories/kubernetes/admission/mutating-admission-policy.d.ts +286 -0
  259. package/dist/factories/kubernetes/admission/mutating-admission-policy.d.ts.map +1 -0
  260. package/dist/factories/kubernetes/admission/mutating-admission-policy.js +157 -0
  261. package/dist/factories/kubernetes/admission/mutating-admission-policy.js.map +1 -0
  262. package/dist/factories/opensearch/compositions/cluster.d.ts.map +1 -1
  263. package/dist/factories/opensearch/compositions/cluster.js +6 -1
  264. package/dist/factories/opensearch/compositions/cluster.js.map +1 -1
  265. package/dist/factories/ory/compositions/ory-identity-stack.d.ts +8 -8
  266. package/dist/factories/ory/types.d.ts +16 -16
  267. package/dist/factories/rook/compositions/object-storage-claim.d.ts +1 -1
  268. package/dist/factories/rook/compositions/rook-ceph-platform.js +8 -1
  269. package/dist/factories/rook/compositions/rook-ceph-platform.js.map +1 -1
  270. package/dist/factories/rook/types.d.ts +1 -1
  271. package/dist/factories/searxng/compositions/searxng-bootstrap.d.ts +1 -1
  272. package/dist/factories/searxng/compositions/searxng-bootstrap.d.ts.map +1 -1
  273. package/dist/factories/searxng/compositions/searxng-bootstrap.js +18 -13
  274. package/dist/factories/searxng/compositions/searxng-bootstrap.js.map +1 -1
  275. package/dist/factories/searxng/index.d.ts +3 -0
  276. package/dist/factories/searxng/index.d.ts.map +1 -1
  277. package/dist/factories/searxng/index.js +3 -0
  278. package/dist/factories/searxng/index.js.map +1 -1
  279. package/dist/factories/searxng/types.js +1 -1
  280. package/dist/factories/searxng/types.js.map +1 -1
  281. package/dist/factories/traefik/compositions/index.d.ts +6 -0
  282. package/dist/factories/traefik/compositions/index.d.ts.map +1 -0
  283. package/dist/factories/traefik/compositions/index.js +6 -0
  284. package/dist/factories/traefik/compositions/index.js.map +1 -0
  285. package/dist/factories/traefik/compositions/traefik-bootstrap.d.ts +185 -0
  286. package/dist/factories/traefik/compositions/traefik-bootstrap.d.ts.map +1 -0
  287. package/dist/factories/traefik/compositions/traefik-bootstrap.js +339 -0
  288. package/dist/factories/traefik/compositions/traefik-bootstrap.js.map +1 -0
  289. package/dist/factories/traefik/compositions/traefik-helm-repository.d.ts +16 -0
  290. package/dist/factories/traefik/compositions/traefik-helm-repository.d.ts.map +1 -0
  291. package/dist/factories/traefik/compositions/traefik-helm-repository.js +31 -0
  292. package/dist/factories/traefik/compositions/traefik-helm-repository.js.map +1 -0
  293. package/dist/factories/traefik/constants.d.ts +78 -0
  294. package/dist/factories/traefik/constants.d.ts.map +1 -0
  295. package/dist/factories/traefik/constants.js +104 -0
  296. package/dist/factories/traefik/constants.js.map +1 -0
  297. package/dist/factories/traefik/index.d.ts +25 -0
  298. package/dist/factories/traefik/index.d.ts.map +1 -0
  299. package/dist/factories/traefik/index.js +25 -0
  300. package/dist/factories/traefik/index.js.map +1 -0
  301. package/dist/factories/traefik/resources/common.d.ts +68 -0
  302. package/dist/factories/traefik/resources/common.d.ts.map +1 -0
  303. package/dist/factories/traefik/resources/common.js +59 -0
  304. package/dist/factories/traefik/resources/common.js.map +1 -0
  305. package/dist/factories/traefik/resources/gateway.d.ts +85 -0
  306. package/dist/factories/traefik/resources/gateway.d.ts.map +1 -0
  307. package/dist/factories/traefik/resources/gateway.js +109 -0
  308. package/dist/factories/traefik/resources/gateway.js.map +1 -0
  309. package/dist/factories/traefik/resources/helm.d.ts +56 -0
  310. package/dist/factories/traefik/resources/helm.d.ts.map +1 -0
  311. package/dist/factories/traefik/resources/helm.js +131 -0
  312. package/dist/factories/traefik/resources/helm.js.map +1 -0
  313. package/dist/factories/traefik/resources/index.d.ts +10 -0
  314. package/dist/factories/traefik/resources/index.d.ts.map +1 -0
  315. package/dist/factories/traefik/resources/index.js +10 -0
  316. package/dist/factories/traefik/resources/index.js.map +1 -0
  317. package/dist/factories/traefik/resources/middleware.d.ts +169 -0
  318. package/dist/factories/traefik/resources/middleware.d.ts.map +1 -0
  319. package/dist/factories/traefik/resources/middleware.js +225 -0
  320. package/dist/factories/traefik/resources/middleware.js.map +1 -0
  321. package/dist/factories/traefik/resources/routing.d.ts +113 -0
  322. package/dist/factories/traefik/resources/routing.d.ts.map +1 -0
  323. package/dist/factories/traefik/resources/routing.js +119 -0
  324. package/dist/factories/traefik/resources/routing.js.map +1 -0
  325. package/dist/factories/traefik/resources/tls.d.ts +85 -0
  326. package/dist/factories/traefik/resources/tls.d.ts.map +1 -0
  327. package/dist/factories/traefik/resources/tls.js +93 -0
  328. package/dist/factories/traefik/resources/tls.js.map +1 -0
  329. package/dist/factories/traefik/types.d.ts +2690 -0
  330. package/dist/factories/traefik/types.d.ts.map +1 -0
  331. package/dist/factories/traefik/types.js +1084 -0
  332. package/dist/factories/traefik/types.js.map +1 -0
  333. package/dist/factories/traefik/utils/helm-values-mapper.d.ts +198 -0
  334. package/dist/factories/traefik/utils/helm-values-mapper.d.ts.map +1 -0
  335. package/dist/factories/traefik/utils/helm-values-mapper.js +372 -0
  336. package/dist/factories/traefik/utils/helm-values-mapper.js.map +1 -0
  337. package/dist/factories/traefik/utils/index.d.ts +6 -0
  338. package/dist/factories/traefik/utils/index.d.ts.map +1 -0
  339. package/dist/factories/traefik/utils/index.js +6 -0
  340. package/dist/factories/traefik/utils/index.js.map +1 -0
  341. package/dist/factories/traefik/utils/middleware-validation.d.ts +42 -0
  342. package/dist/factories/traefik/utils/middleware-validation.d.ts.map +1 -0
  343. package/dist/factories/traefik/utils/middleware-validation.js +78 -0
  344. package/dist/factories/traefik/utils/middleware-validation.js.map +1 -0
  345. package/dist/factories/webapp/compositions/web-app-with-processing.d.ts.map +1 -1
  346. package/dist/factories/webapp/compositions/web-app-with-processing.js +10 -0
  347. package/dist/factories/webapp/compositions/web-app-with-processing.js.map +1 -1
  348. package/dist/index.d.ts +4 -3
  349. package/dist/index.d.ts.map +1 -1
  350. package/dist/index.js +3 -1
  351. package/dist/index.js.map +1 -1
  352. package/package.json +9 -1
@@ -0,0 +1,339 @@
1
+ /**
2
+ * `traefikBootstrap` — the composition that stands Traefik up as a cluster edge.
3
+ *
4
+ * It owns the whole install: the (optional) namespace, the Flux `HelmRelease`,
5
+ * the entrypoint `Service`, and optionally the cluster-default
6
+ * `TLSOption`/`TLSStore`. The shared chart `HelmRepository` is delegated to a
7
+ * singleton composition so one instance's teardown cannot break another's
8
+ * chart source.
9
+ *
10
+ * **Why the entrypoint Service is owned rather than observed.** The status
11
+ * contract publishes the edge's load-balancer address, which means projecting
12
+ * the entrypoint Service's `status.loadBalancer`. A projection requires the
13
+ * resource to be in the graph. Observing the chart-created Service instead
14
+ * (`observedResource`) made every FRESH direct deployment fail: the direct
15
+ * engine resolves external references before it applies anything, so it read a
16
+ * `Service` that the release had not created yet and treated the `404` as
17
+ * fatal — and `dependsOn` cannot reorder that, because the read happens before
18
+ * the dependency graph is walked. So the chart's Service is disabled through
19
+ * values and this composition creates a typed one selecting the chart's pods.
20
+ * The graph therefore has no external reference to any Kubernetes API object.
21
+ *
22
+ * **Build-time vs runtime.** Options that decide WHICH resources exist — the
23
+ * namespace lifecycle, the default TLS resources, the `web` → `websecure`
24
+ * redirect, raw chart values — are arguments to {@link makeTraefikBootstrap}
25
+ * and are always concrete, so plain JavaScript branches on them are safe. The
26
+ * runtime spec carries only values, which may arrive as schema references in
27
+ * KRO mode and are therefore only ever placed into the values tree, never
28
+ * branched on. This is the ClickStack convention.
29
+ *
30
+ * @security The dashboard and the insecure API are not reachable through this
31
+ * contract: the spec's `dashboard` field is typed as the literal `false`, and
32
+ * `mapTraefikConfigToHelmValues` pins `api.dashboard`, `api.insecure`,
33
+ * `api.debug` and the dashboard `IngressRoute` off after every other values
34
+ * source has been merged.
35
+ */
36
+ import { kubernetesComposition } from '../../../core/composition/imperative.js';
37
+ import { DEFAULT_FLUX_NAMESPACE } from '../../../core/config/defaults.js';
38
+ import { Cel } from '../../../core/references/cel.js';
39
+ import { singleton } from '../../../core/singleton/singleton.js';
40
+ import { helmReleaseConditionSummary } from '../../helm/status.js';
41
+ import { namespace } from '../../kubernetes/core/namespace.js';
42
+ import { service } from '../../kubernetes/networking/service.js';
43
+ import { DEFAULT_TRAEFIK_CHART_VERSION, DEFAULT_TRAEFIK_CRDS_POLICY, DEFAULT_TRAEFIK_NAMESPACE, DEFAULT_TRAEFIK_REPOSITORY_NAME, DEFAULT_TRAEFIK_REPOSITORY_URL, DEFAULT_TRAEFIK_WEB_PORT, DEFAULT_TRAEFIK_WEBSECURE_PORT, TRAEFIK_DEFAULT_TLS_OPTION_NAME, TRAEFIK_DEFAULT_TLS_STORE_NAME, TRAEFIK_POD_NAME_LABEL_VALUE, TRAEFIK_WEB_ENTRYPOINT, TRAEFIK_WEBSECURE_ENTRYPOINT, } from '../constants.js';
44
+ import { traefikHelmRelease } from '../resources/helm.js';
45
+ import { traefikTLSOption, traefikTLSStore } from '../resources/tls.js';
46
+ import { TraefikBootstrapConfigSchema, TraefikBootstrapStatusSchema, } from '../types.js';
47
+ import { mapTraefikConfigToHelmValues, traefikEntrypointServiceType, } from '../utils/helm-values-mapper.js';
48
+ import { traefikHelmRepositoryBootstrap } from './traefik-helm-repository.js';
49
+ /**
50
+ * CEL reading one field of the first load-balancer address the entrypoint
51
+ * Service reports that carries it, falling back to `''`.
52
+ *
53
+ * Written as an explicit expression rather than a JavaScript optional chain
54
+ * because every hop is genuinely absent for a `ClusterIP`/`NodePort` Service
55
+ * and while a cloud controller is still provisioning: `status.loadBalancer` may
56
+ * be missing, `ingress` may be missing, it may be empty, and an entry carries
57
+ * either `ip` or `hostname` but rarely both.
58
+ *
59
+ * Two details of the shape are load-bearing, both of them about satisfying the
60
+ * two CEL engines this one string has to run on — KRO's cel-go and the `cel-js`
61
+ * evaluator direct mode uses:
62
+ *
63
+ * 1. **A ternary, not one `&&` chain.** `size()` on an absent `ingress` is an
64
+ * evaluation error. cel-go absorbs an error in one operand of `&&` when the
65
+ * other operand is false; cel-js evaluates both operands and propagates the
66
+ * error. A ternary is lazy in both, so the guard is actually reached before
67
+ * the access it protects. Without this, a plain `ClusterIP` Service took the
68
+ * WHOLE status object down to unresolved — `ready` and `phase` included, not
69
+ * just this field.
70
+ * 2. **`filter(...)` rather than a guard on `ingress[0]`.** The obvious
71
+ * `has(ingress[0].hostname)` is rejected by cel-js ("has() does not support
72
+ * atomic expressions" — its operand is an index expression), and the obvious
73
+ * workaround `"hostname" in ingress[0]` is rejected by KRO, which types an
74
+ * ingress entry as a message rather than a map ("no matching overload for
75
+ * '@in'"). Selecting the entries that carry the field is accepted by both —
76
+ * and says what is actually meant: an entry carries `ip` or `hostname`, and
77
+ * a load balancer may report more than one.
78
+ */
79
+ function loadBalancerAddressExpression(resourceId, field) {
80
+ const base = `${resourceId}.status.loadBalancer`;
81
+ const matching = `${base}.ingress.filter(entry, has(entry.${field}))`;
82
+ return (`has(${base}) && has(${base}.ingress) ` +
83
+ `? (size(${matching}) > 0 ? ${matching}[0].${field} : "") ` +
84
+ `: ""`);
85
+ }
86
+ /**
87
+ * CEL reading the chart version Flux actually installed off the owned
88
+ * `HelmRelease`.
89
+ *
90
+ * This is a RESOURCE PROJECTION, deliberately not a literal: KRO drops literal
91
+ * status fields (#188), and echoing `schema.spec.chartVersion` would report a
92
+ * version the release may never have managed to install. `status.history[]` is
93
+ * Flux's own record of its releases, newest first, so entry 0 is the live one.
94
+ *
95
+ * The shape mirrors {@link loadBalancerAddressExpression}, for the same two
96
+ * reasons — both about running on KRO's cel-go AND the `cel-js` evaluator
97
+ * direct mode uses. A lazy ternary rather than an `&&` chain, because `size()`
98
+ * over an absent `history` is an evaluation error that cel-js propagates; and
99
+ * `filter(...)` rather than `has(history[0].chartVersion)`, which cel-js
100
+ * rejects as `has()` over an index expression while KRO rejects the
101
+ * `"chartVersion" in history[0]` workaround. Reports `''` until Flux has
102
+ * recorded its first release.
103
+ */
104
+ function chartVersionExpression(resourceId) {
105
+ const history = `${resourceId}.status.history`;
106
+ const matching = `${history}.filter(entry, has(entry.chartVersion))`;
107
+ return `has(${history}) ? (size(${matching}) > 0 ? ${matching}[0].chartVersion : "") : ""`;
108
+ }
109
+ /**
110
+ * Build a Traefik bootstrap composition.
111
+ *
112
+ * Use this when the defaults of {@link traefikBootstrap} are not enough — to
113
+ * adopt an externally managed namespace, to own the cluster-default TLS
114
+ * resources, to disable the HTTP→HTTPS redirect, or to pass chart values this
115
+ * factory does not model.
116
+ *
117
+ * @param options - Build-time options. Must be concrete values.
118
+ *
119
+ * @example An edge that owns its default TLS store, fed by cert-manager
120
+ * ```typescript
121
+ * const edge = makeTraefikBootstrap({
122
+ * name: 'traefik-edge',
123
+ * kind: 'TraefikEdge',
124
+ * defaultTlsStore: { defaultCertificateSecretName: 'edge-wildcard-tls' },
125
+ * defaultTlsOption: { minVersion: 'VersionTLS13' },
126
+ * });
127
+ *
128
+ * await edge.factory('direct', { kubeConfig, waitForReady: true }).deploy({
129
+ * name: 'traefik',
130
+ * namespace: 'traefik',
131
+ * service: { type: 'LoadBalancer' },
132
+ * });
133
+ * ```
134
+ */
135
+ export function makeTraefikBootstrap(options = {}) {
136
+ const ownsNamespace = (options.namespaceOwnership ?? 'owned') === 'owned';
137
+ const redirectWebToWebsecure = options.redirectWebToWebsecure ?? true;
138
+ const defaultTlsOption = options.defaultTlsOption;
139
+ const defaultTlsStore = options.defaultTlsStore;
140
+ const crdsPolicy = options.crds ?? DEFAULT_TRAEFIK_CRDS_POLICY;
141
+ return kubernetesComposition({
142
+ name: options.name ?? 'traefik-bootstrap',
143
+ kind: options.kind ?? 'TraefikBootstrap',
144
+ spec: TraefikBootstrapConfigSchema,
145
+ status: TraefikBootstrapStatusSchema,
146
+ }, (spec) => {
147
+ const installNamespace = Cel.default(spec.namespace, DEFAULT_TRAEFIK_NAMESPACE);
148
+ const chartVersion = Cel.default(spec.chartVersion, DEFAULT_TRAEFIK_CHART_VERSION);
149
+ if (ownsNamespace) {
150
+ namespace({
151
+ metadata: {
152
+ name: installNamespace,
153
+ labels: {
154
+ 'app.kubernetes.io/name': TRAEFIK_POD_NAME_LABEL_VALUE,
155
+ 'app.kubernetes.io/instance': spec.name,
156
+ 'app.kubernetes.io/managed-by': 'typekro',
157
+ },
158
+ },
159
+ id: 'traefikNamespace',
160
+ });
161
+ }
162
+ // The official chart source is shared by every Traefik installation, so
163
+ // its ownership stays outside any consumer instance.
164
+ singleton(traefikHelmRepositoryBootstrap, {
165
+ id: 'traefikHelmRepository',
166
+ spec: {
167
+ name: DEFAULT_TRAEFIK_REPOSITORY_NAME,
168
+ namespace: DEFAULT_FLUX_NAMESPACE,
169
+ url: DEFAULT_TRAEFIK_REPOSITORY_URL,
170
+ },
171
+ });
172
+ const values = mapTraefikConfigToHelmValues(spec, {
173
+ redirectWebToWebsecure,
174
+ targetNamespace: installNamespace,
175
+ ...(options.values ? { baseValues: options.values } : {}),
176
+ });
177
+ // Chart 41.5.0 ships the traefik.io CRDs in its own crds/ directory, so
178
+ // this single release installs the CRDs and the proxy together.
179
+ const release = traefikHelmRelease({
180
+ name: spec.name,
181
+ namespace: DEFAULT_FLUX_NAMESPACE,
182
+ targetNamespace: installNamespace,
183
+ version: chartVersion,
184
+ repositoryName: DEFAULT_TRAEFIK_REPOSITORY_NAME,
185
+ repositoryNamespace: DEFAULT_FLUX_NAMESPACE,
186
+ // Flux creates the namespace only when this composition does not.
187
+ createNamespace: !ownsNamespace,
188
+ crds: crdsPolicy,
189
+ values,
190
+ id: 'traefikHelmRelease',
191
+ });
192
+ if (defaultTlsOption) {
193
+ const tlsOption = traefikTLSOption({
194
+ name: defaultTlsOption.name ?? TRAEFIK_DEFAULT_TLS_OPTION_NAME,
195
+ namespace: installNamespace,
196
+ spec: {
197
+ ...(defaultTlsOption.minVersion ? { minVersion: defaultTlsOption.minVersion } : {}),
198
+ ...(defaultTlsOption.sniStrict === undefined
199
+ ? {}
200
+ : { sniStrict: defaultTlsOption.sniStrict }),
201
+ ...(defaultTlsOption.cipherSuites
202
+ ? { cipherSuites: [...defaultTlsOption.cipherSuites] }
203
+ : {}),
204
+ ...(defaultTlsOption.curvePreferences
205
+ ? { curvePreferences: [...defaultTlsOption.curvePreferences] }
206
+ : {}),
207
+ ...(defaultTlsOption.clientAuth ? { clientAuth: defaultTlsOption.clientAuth } : {}),
208
+ },
209
+ id: 'traefikDefaultTlsOption',
210
+ });
211
+ // The TLSOption CRD arrives with the release.
212
+ tlsOption.dependsOn(release);
213
+ }
214
+ if (defaultTlsStore) {
215
+ const tlsStore = traefikTLSStore({
216
+ name: defaultTlsStore.name ?? TRAEFIK_DEFAULT_TLS_STORE_NAME,
217
+ namespace: installNamespace,
218
+ spec: {
219
+ defaultCertificate: { secretName: defaultTlsStore.defaultCertificateSecretName },
220
+ },
221
+ id: 'traefikDefaultTlsStore',
222
+ });
223
+ tlsStore.dependsOn(release);
224
+ }
225
+ // The entrypoint Service this composition OWNS. The chart's own Service
226
+ // is pinned off by the values mapper; this one carries the same name
227
+ // (`fullnameOverride` is pinned to `spec.name`) and the same selector, so
228
+ // nothing downstream — `providers.kubernetesIngress.publishedService`
229
+ // included — has to know which of the two created it.
230
+ //
231
+ // `targetPort` is the container port NAME, exactly as the chart's own
232
+ // Service template does it: the chart names every container port after
233
+ // its entrypoint, so the names survive a change of container port.
234
+ service({
235
+ metadata: {
236
+ name: spec.name,
237
+ namespace: installNamespace,
238
+ labels: {
239
+ 'app.kubernetes.io/name': TRAEFIK_POD_NAME_LABEL_VALUE,
240
+ 'app.kubernetes.io/instance': spec.name,
241
+ 'app.kubernetes.io/managed-by': 'typekro',
242
+ },
243
+ // `Cel.default`, never a JavaScript branch: a schema proxy is a truthy
244
+ // object, so `spec.service?.annotations ? ... : {}` would always take
245
+ // the first arm in KRO mode and disagree with direct mode.
246
+ annotations: Cel.default(spec.service?.annotations, {}),
247
+ },
248
+ spec: {
249
+ type: traefikEntrypointServiceType(spec),
250
+ // The chart stamps these two labels on the Traefik pods, and the
251
+ // values mapper pins both of their sources (`nameOverride`,
252
+ // `instanceLabelOverride`) so this selector is exact.
253
+ selector: {
254
+ 'app.kubernetes.io/name': TRAEFIK_POD_NAME_LABEL_VALUE,
255
+ 'app.kubernetes.io/instance': spec.name,
256
+ },
257
+ // @security The internal `traefik` entrypoint serves /ping, metrics
258
+ // and the (pinned off) dashboard. Owning the Service is what makes
259
+ // its absence here a structural guarantee rather than a chart value.
260
+ ports: [
261
+ {
262
+ name: TRAEFIK_WEB_ENTRYPOINT,
263
+ port: Cel.default(spec.entrypoints?.web?.exposedPort, DEFAULT_TRAEFIK_WEB_PORT),
264
+ targetPort: TRAEFIK_WEB_ENTRYPOINT,
265
+ protocol: 'TCP',
266
+ },
267
+ {
268
+ name: TRAEFIK_WEBSECURE_ENTRYPOINT,
269
+ port: Cel.default(spec.entrypoints?.websecure?.exposedPort, DEFAULT_TRAEFIK_WEBSECURE_PORT),
270
+ targetPort: TRAEFIK_WEBSECURE_ENTRYPOINT,
271
+ protocol: 'TCP',
272
+ },
273
+ ],
274
+ },
275
+ id: 'traefikService',
276
+ });
277
+ // Deliberately no `dependsOn`. Ordering against the owned namespace is
278
+ // already implicit — the dependency resolver adds an edge from any
279
+ // resource whose `metadata.namespace` matches a `Namespace` in the same
280
+ // graph — and the Service must NOT wait for the release: a Service with
281
+ // no endpoints is valid, and creating it first lets a cloud
282
+ // load-balancer controller provision while Helm is still installing.
283
+ // An explicit `dependsOn` would also force TypeKro to inject ordering
284
+ // annotations into `metadata.annotations`, which cannot be merged into an
285
+ // annotation map that arrives as one schema reference.
286
+ const releaseStatus = helmReleaseConditionSummary(release);
287
+ return {
288
+ ready: releaseStatus.ready,
289
+ failed: releaseStatus.failed,
290
+ phase: releaseStatus.phase,
291
+ loadBalancer: {
292
+ hostname: Cel.expr(loadBalancerAddressExpression('traefikService', 'hostname')),
293
+ ip: Cel.expr(loadBalancerAddressExpression('traefikService', 'ip')),
294
+ },
295
+ // Read back from the owned Service rather than echoing the spec. The
296
+ // resource-scoped CEL form is deliberate: a `schema.spec` reference in
297
+ // a status field is not a resource projection and KRO drops it.
298
+ serviceName: Cel.expr('traefikService.metadata.name'),
299
+ // The chart version Flux INSTALLED, off the owned release's history —
300
+ // the same reasoning as `serviceName`, and the reason `version` is not
301
+ // a deploy-time literal here (#188).
302
+ version: Cel.expr(chartVersionExpression('traefikHelmRelease')),
303
+ };
304
+ });
305
+ }
306
+ /**
307
+ * The default Traefik bootstrap composition.
308
+ *
309
+ * Owns its install namespace, redirects `web` to `websecure`, and creates no
310
+ * default TLS resources. Use {@link makeTraefikBootstrap} for anything else.
311
+ *
312
+ * @example
313
+ * ```typescript
314
+ * const factory = traefikBootstrap.factory('direct', {
315
+ * namespace: 'flux-system',
316
+ * waitForReady: true,
317
+ * timeout: 600_000,
318
+ * kubeConfig,
319
+ * });
320
+ *
321
+ * const instance = await factory.deploy({
322
+ * name: 'traefik',
323
+ * namespace: 'traefik',
324
+ * replicas: 2,
325
+ * service: {
326
+ * type: 'LoadBalancer',
327
+ * annotations: {
328
+ * 'service.beta.kubernetes.io/aws-load-balancer-type': 'external',
329
+ * 'service.beta.kubernetes.io/aws-load-balancer-nlb-target-type': 'ip',
330
+ * 'service.beta.kubernetes.io/aws-load-balancer-scheme': 'internet-facing',
331
+ * },
332
+ * },
333
+ * providers: { crd: true },
334
+ * accessLogs: true,
335
+ * });
336
+ * ```
337
+ */
338
+ export const traefikBootstrap = makeTraefikBootstrap();
339
+ //# sourceMappingURL=traefik-bootstrap.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"traefik-bootstrap.js","sourceRoot":"","sources":["../../../../src/factories/traefik/compositions/traefik-bootstrap.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Shared Traefik `HelmRepository` singleton.
3
+ *
4
+ * Every Traefik release consumes the same official chart source. Keeping that
5
+ * source outside consumer ownership prevents one installation's teardown from
6
+ * deleting or relabeling the repository another `HelmRelease` still resolves
7
+ * against.
8
+ */
9
+ export declare const traefikHelmRepositoryBootstrap: import("../../../index.js").CallableComposition<{
10
+ name: string;
11
+ namespace: string;
12
+ url: string;
13
+ }, {
14
+ ready: boolean;
15
+ }>;
16
+ //# sourceMappingURL=traefik-helm-repository.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"traefik-helm-repository.d.ts","sourceRoot":"","sources":["../../../../src/factories/traefik/compositions/traefik-helm-repository.ts"],"names":[],"mappings":"AAQA;;;;;;;GAOG;AACH,eAAO,MAAM,8BAA8B;;;;;;EAwB1C,CAAC"}
@@ -0,0 +1,31 @@
1
+ import { kubernetesComposition } from '../../../core/composition/imperative.js';
2
+ import { Cel } from '../../../core/references/cel.js';
3
+ import { traefikHelmRepository } from '../resources/helm.js';
4
+ import { TraefikHelmRepositorySingletonSpecSchema, TraefikHelmRepositorySingletonStatusSchema, } from '../types.js';
5
+ /**
6
+ * Shared Traefik `HelmRepository` singleton.
7
+ *
8
+ * Every Traefik release consumes the same official chart source. Keeping that
9
+ * source outside consumer ownership prevents one installation's teardown from
10
+ * deleting or relabeling the repository another `HelmRelease` still resolves
11
+ * against.
12
+ */
13
+ export const traefikHelmRepositoryBootstrap = kubernetesComposition({
14
+ name: 'traefik-helm-repository',
15
+ kind: 'TraefikHelmRepository',
16
+ spec: TraefikHelmRepositorySingletonSpecSchema,
17
+ status: TraefikHelmRepositorySingletonStatusSchema,
18
+ }, (spec) => {
19
+ const repository = traefikHelmRepository({
20
+ name: spec.name,
21
+ namespace: spec.namespace,
22
+ url: spec.url,
23
+ id: 'repository',
24
+ });
25
+ return {
26
+ // The official repository is a classic (non-OCI) Helm repository, so Flux
27
+ // publishes a real Ready condition for it.
28
+ ready: Cel.expr(repository.status.conditions, '.exists(c, c.type == "Ready" && c.status == "True")'),
29
+ };
30
+ });
31
+ //# sourceMappingURL=traefik-helm-repository.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"traefik-helm-repository.js","sourceRoot":"","sources":["../../../../src/factories/traefik/compositions/traefik-helm-repository.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,yCAAyC,CAAC;AAChF,OAAO,EAAE,GAAG,EAAE,MAAM,iCAAiC,CAAC;AACtD,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EACL,wCAAwC,EACxC,0CAA0C,GAC3C,MAAM,aAAa,CAAC;AAErB;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,8BAA8B,GAAG,qBAAqB,CACjE;IACE,IAAI,EAAE,yBAAyB;IAC/B,IAAI,EAAE,uBAAuB;IAC7B,IAAI,EAAE,wCAAwC;IAC9C,MAAM,EAAE,0CAA0C;CACnD,EACD,CAAC,IAAI,EAAE,EAAE;IACP,MAAM,UAAU,GAAG,qBAAqB,CAAC;QACvC,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,SAAS,EAAE,IAAI,CAAC,SAAS;QACzB,GAAG,EAAE,IAAI,CAAC,GAAG;QACb,EAAE,EAAE,YAAY;KACjB,CAAC,CAAC;IAEH,OAAO;QACL,0EAA0E;QAC1E,2CAA2C;QAC3C,KAAK,EAAE,GAAG,CAAC,IAAI,CACb,UAAU,CAAC,MAAM,CAAC,UAAU,EAC5B,qDAAqD,CACtD;KACF,CAAC;AACJ,CAAC,CACF,CAAC"}
@@ -0,0 +1,78 @@
1
+ /**
2
+ * Traefik factory constants.
3
+ *
4
+ * Compatibility tuple verified against the official Traefik Helm chart
5
+ * `traefik` 41.5.0 (appVersion `v3.7.13`, `kubeVersion >=1.25.0-0`) published on
6
+ * https://traefik.github.io/charts. That chart ships the `traefik.io/v1alpha1`
7
+ * CRDs in its own `crds/` directory, so one HelmRelease installs both the CRDs
8
+ * and the proxy.
9
+ */
10
+ /** API group/version of every Traefik CRD this factory creates. */
11
+ export declare const TRAEFIK_API_VERSION = "traefik.io/v1alpha1";
12
+ /** Pinned official chart version. */
13
+ export declare const DEFAULT_TRAEFIK_CHART_VERSION = "41.5.0";
14
+ /** Traefik Proxy version bundled with {@link DEFAULT_TRAEFIK_CHART_VERSION}. */
15
+ export declare const DEFAULT_TRAEFIK_APP_VERSION = "v3.7.13";
16
+ /** Chart name inside the official repository. */
17
+ export declare const DEFAULT_TRAEFIK_CHART_NAME = "traefik";
18
+ /** Official classic (non-OCI) Helm repository. */
19
+ export declare const DEFAULT_TRAEFIK_REPOSITORY_URL = "https://traefik.github.io/charts";
20
+ /** `HelmRepository` name the bootstrap composition owns as a singleton. */
21
+ export declare const DEFAULT_TRAEFIK_REPOSITORY_NAME = "traefik-repo";
22
+ /** Namespace Traefik is installed into by default. */
23
+ export declare const DEFAULT_TRAEFIK_NAMESPACE = "traefik";
24
+ /** `IngressClass` / `providers.kubernetesCRD.ingressClass` value. */
25
+ export declare const DEFAULT_TRAEFIK_INGRESS_CLASS = "traefik";
26
+ /**
27
+ * Controller name Traefik v3 claims for Gateway API `GatewayClass` resources.
28
+ *
29
+ * Passed to the shared `src/factories/gateway-api` factories so a Traefik edge
30
+ * and an Envoy AI Gateway can coexist in one cluster.
31
+ */
32
+ export declare const TRAEFIK_GATEWAY_CONTROLLER_NAME = "traefik.io/gateway-controller";
33
+ /** Plain-HTTP entrypoint name. */
34
+ export declare const TRAEFIK_WEB_ENTRYPOINT = "web";
35
+ /** TLS entrypoint name. */
36
+ export declare const TRAEFIK_WEBSECURE_ENTRYPOINT = "websecure";
37
+ /** Internal entrypoint serving `/ping`, metrics and (when enabled) the dashboard. */
38
+ export declare const TRAEFIK_INTERNAL_ENTRYPOINT = "traefik";
39
+ /**
40
+ * `app.kubernetes.io/name` the chart stamps on the Traefik pods.
41
+ *
42
+ * The chart derives this label from `nameOverride`, defaulting to the chart
43
+ * name. The values mapper pins `nameOverride` to this constant so the
44
+ * entrypoint Service this factory OWNS can select the chart's pods by an
45
+ * exactly known label rather than by whatever the chart's template computed.
46
+ */
47
+ export declare const TRAEFIK_POD_NAME_LABEL_VALUE = "traefik";
48
+ /**
49
+ * Flux CRD policy this factory applies to install AND upgrade.
50
+ *
51
+ * Chart 41.5.0 ships the `traefik.io/v1alpha1` CRDs in its own `crds/`
52
+ * directory, and the helm-controller SKIPS `crds/` on upgrade by default — so a
53
+ * chart bump would otherwise keep serving the CRD schemas the release was
54
+ * first installed with.
55
+ *
56
+ * @see https://fluxcd.io/flux/components/helm/api/v2/
57
+ */
58
+ export declare const DEFAULT_TRAEFIK_CRDS_POLICY = "CreateReplace";
59
+ /** Externally published port of the `web` entrypoint. */
60
+ export declare const DEFAULT_TRAEFIK_WEB_PORT = 80;
61
+ /** Externally published port of the `websecure` entrypoint. */
62
+ export declare const DEFAULT_TRAEFIK_WEBSECURE_PORT = 443;
63
+ /** Container port backing the `web` entrypoint. */
64
+ export declare const DEFAULT_TRAEFIK_WEB_CONTAINER_PORT = 8000;
65
+ /** Container port backing the `websecure` entrypoint. */
66
+ export declare const DEFAULT_TRAEFIK_WEBSECURE_CONTAINER_PORT = 8443;
67
+ /** Name of the cluster-wide default `TLSOption`, per Traefik's convention. */
68
+ export declare const TRAEFIK_DEFAULT_TLS_OPTION_NAME = "default";
69
+ /** Name of the cluster-wide default `TLSStore`, per Traefik's convention. */
70
+ export declare const TRAEFIK_DEFAULT_TLS_STORE_NAME = "default";
71
+ /**
72
+ * Every OSS Traefik middleware key, in CRD order.
73
+ *
74
+ * A `Middleware` must set exactly one of these, which the middleware factory
75
+ * enforces at the type level and re-checks before serialization.
76
+ */
77
+ export declare const TRAEFIK_MIDDLEWARE_KINDS: readonly ["addPrefix", "basicAuth", "buffering", "chain", "circuitBreaker", "compress", "contentType", "digestAuth", "encodedCharacters", "errors", "forwardAuth", "grpcWeb", "headers", "inFlightReq", "ipAllowList", "passTLSClientCert", "plugin", "rateLimit", "redirectRegex", "redirectScheme", "replacePath", "replacePathRegex", "retry", "stripPrefix", "stripPrefixRegex"];
78
+ //# sourceMappingURL=constants.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../src/factories/traefik/constants.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,mEAAmE;AACnE,eAAO,MAAM,mBAAmB,wBAAwB,CAAC;AAEzD,qCAAqC;AACrC,eAAO,MAAM,6BAA6B,WAAW,CAAC;AACtD,gFAAgF;AAChF,eAAO,MAAM,2BAA2B,YAAY,CAAC;AACrD,iDAAiD;AACjD,eAAO,MAAM,0BAA0B,YAAY,CAAC;AACpD,kDAAkD;AAClD,eAAO,MAAM,8BAA8B,qCAAqC,CAAC;AACjF,2EAA2E;AAC3E,eAAO,MAAM,+BAA+B,iBAAiB,CAAC;AAE9D,sDAAsD;AACtD,eAAO,MAAM,yBAAyB,YAAY,CAAC;AACnD,qEAAqE;AACrE,eAAO,MAAM,6BAA6B,YAAY,CAAC;AAEvD;;;;;GAKG;AACH,eAAO,MAAM,+BAA+B,kCAAkC,CAAC;AAE/E,kCAAkC;AAClC,eAAO,MAAM,sBAAsB,QAAQ,CAAC;AAC5C,2BAA2B;AAC3B,eAAO,MAAM,4BAA4B,cAAc,CAAC;AACxD,qFAAqF;AACrF,eAAO,MAAM,2BAA2B,YAAY,CAAC;AAErD;;;;;;;GAOG;AACH,eAAO,MAAM,4BAA4B,YAAY,CAAC;AAEtD;;;;;;;;;GASG;AACH,eAAO,MAAM,2BAA2B,kBAAkB,CAAC;AAE3D,yDAAyD;AACzD,eAAO,MAAM,wBAAwB,KAAK,CAAC;AAC3C,+DAA+D;AAC/D,eAAO,MAAM,8BAA8B,MAAM,CAAC;AAClD,mDAAmD;AACnD,eAAO,MAAM,kCAAkC,OAAO,CAAC;AACvD,yDAAyD;AACzD,eAAO,MAAM,wCAAwC,OAAO,CAAC;AAE7D,8EAA8E;AAC9E,eAAO,MAAM,+BAA+B,YAAY,CAAC;AACzD,6EAA6E;AAC7E,eAAO,MAAM,8BAA8B,YAAY,CAAC;AAExD;;;;;GAKG;AACH,eAAO,MAAM,wBAAwB,sXA0B3B,CAAC"}
@@ -0,0 +1,104 @@
1
+ /**
2
+ * Traefik factory constants.
3
+ *
4
+ * Compatibility tuple verified against the official Traefik Helm chart
5
+ * `traefik` 41.5.0 (appVersion `v3.7.13`, `kubeVersion >=1.25.0-0`) published on
6
+ * https://traefik.github.io/charts. That chart ships the `traefik.io/v1alpha1`
7
+ * CRDs in its own `crds/` directory, so one HelmRelease installs both the CRDs
8
+ * and the proxy.
9
+ */
10
+ /** API group/version of every Traefik CRD this factory creates. */
11
+ export const TRAEFIK_API_VERSION = 'traefik.io/v1alpha1';
12
+ /** Pinned official chart version. */
13
+ export const DEFAULT_TRAEFIK_CHART_VERSION = '41.5.0';
14
+ /** Traefik Proxy version bundled with {@link DEFAULT_TRAEFIK_CHART_VERSION}. */
15
+ export const DEFAULT_TRAEFIK_APP_VERSION = 'v3.7.13';
16
+ /** Chart name inside the official repository. */
17
+ export const DEFAULT_TRAEFIK_CHART_NAME = 'traefik';
18
+ /** Official classic (non-OCI) Helm repository. */
19
+ export const DEFAULT_TRAEFIK_REPOSITORY_URL = 'https://traefik.github.io/charts';
20
+ /** `HelmRepository` name the bootstrap composition owns as a singleton. */
21
+ export const DEFAULT_TRAEFIK_REPOSITORY_NAME = 'traefik-repo';
22
+ /** Namespace Traefik is installed into by default. */
23
+ export const DEFAULT_TRAEFIK_NAMESPACE = 'traefik';
24
+ /** `IngressClass` / `providers.kubernetesCRD.ingressClass` value. */
25
+ export const DEFAULT_TRAEFIK_INGRESS_CLASS = 'traefik';
26
+ /**
27
+ * Controller name Traefik v3 claims for Gateway API `GatewayClass` resources.
28
+ *
29
+ * Passed to the shared `src/factories/gateway-api` factories so a Traefik edge
30
+ * and an Envoy AI Gateway can coexist in one cluster.
31
+ */
32
+ export const TRAEFIK_GATEWAY_CONTROLLER_NAME = 'traefik.io/gateway-controller';
33
+ /** Plain-HTTP entrypoint name. */
34
+ export const TRAEFIK_WEB_ENTRYPOINT = 'web';
35
+ /** TLS entrypoint name. */
36
+ export const TRAEFIK_WEBSECURE_ENTRYPOINT = 'websecure';
37
+ /** Internal entrypoint serving `/ping`, metrics and (when enabled) the dashboard. */
38
+ export const TRAEFIK_INTERNAL_ENTRYPOINT = 'traefik';
39
+ /**
40
+ * `app.kubernetes.io/name` the chart stamps on the Traefik pods.
41
+ *
42
+ * The chart derives this label from `nameOverride`, defaulting to the chart
43
+ * name. The values mapper pins `nameOverride` to this constant so the
44
+ * entrypoint Service this factory OWNS can select the chart's pods by an
45
+ * exactly known label rather than by whatever the chart's template computed.
46
+ */
47
+ export const TRAEFIK_POD_NAME_LABEL_VALUE = 'traefik';
48
+ /**
49
+ * Flux CRD policy this factory applies to install AND upgrade.
50
+ *
51
+ * Chart 41.5.0 ships the `traefik.io/v1alpha1` CRDs in its own `crds/`
52
+ * directory, and the helm-controller SKIPS `crds/` on upgrade by default — so a
53
+ * chart bump would otherwise keep serving the CRD schemas the release was
54
+ * first installed with.
55
+ *
56
+ * @see https://fluxcd.io/flux/components/helm/api/v2/
57
+ */
58
+ export const DEFAULT_TRAEFIK_CRDS_POLICY = 'CreateReplace';
59
+ /** Externally published port of the `web` entrypoint. */
60
+ export const DEFAULT_TRAEFIK_WEB_PORT = 80;
61
+ /** Externally published port of the `websecure` entrypoint. */
62
+ export const DEFAULT_TRAEFIK_WEBSECURE_PORT = 443;
63
+ /** Container port backing the `web` entrypoint. */
64
+ export const DEFAULT_TRAEFIK_WEB_CONTAINER_PORT = 8000;
65
+ /** Container port backing the `websecure` entrypoint. */
66
+ export const DEFAULT_TRAEFIK_WEBSECURE_CONTAINER_PORT = 8443;
67
+ /** Name of the cluster-wide default `TLSOption`, per Traefik's convention. */
68
+ export const TRAEFIK_DEFAULT_TLS_OPTION_NAME = 'default';
69
+ /** Name of the cluster-wide default `TLSStore`, per Traefik's convention. */
70
+ export const TRAEFIK_DEFAULT_TLS_STORE_NAME = 'default';
71
+ /**
72
+ * Every OSS Traefik middleware key, in CRD order.
73
+ *
74
+ * A `Middleware` must set exactly one of these, which the middleware factory
75
+ * enforces at the type level and re-checks before serialization.
76
+ */
77
+ export const TRAEFIK_MIDDLEWARE_KINDS = [
78
+ 'addPrefix',
79
+ 'basicAuth',
80
+ 'buffering',
81
+ 'chain',
82
+ 'circuitBreaker',
83
+ 'compress',
84
+ 'contentType',
85
+ 'digestAuth',
86
+ 'encodedCharacters',
87
+ 'errors',
88
+ 'forwardAuth',
89
+ 'grpcWeb',
90
+ 'headers',
91
+ 'inFlightReq',
92
+ 'ipAllowList',
93
+ 'passTLSClientCert',
94
+ 'plugin',
95
+ 'rateLimit',
96
+ 'redirectRegex',
97
+ 'redirectScheme',
98
+ 'replacePath',
99
+ 'replacePathRegex',
100
+ 'retry',
101
+ 'stripPrefix',
102
+ 'stripPrefixRegex',
103
+ ];
104
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../src/factories/traefik/constants.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,mEAAmE;AACnE,MAAM,CAAC,MAAM,mBAAmB,GAAG,qBAAqB,CAAC;AAEzD,qCAAqC;AACrC,MAAM,CAAC,MAAM,6BAA6B,GAAG,QAAQ,CAAC;AACtD,gFAAgF;AAChF,MAAM,CAAC,MAAM,2BAA2B,GAAG,SAAS,CAAC;AACrD,iDAAiD;AACjD,MAAM,CAAC,MAAM,0BAA0B,GAAG,SAAS,CAAC;AACpD,kDAAkD;AAClD,MAAM,CAAC,MAAM,8BAA8B,GAAG,kCAAkC,CAAC;AACjF,2EAA2E;AAC3E,MAAM,CAAC,MAAM,+BAA+B,GAAG,cAAc,CAAC;AAE9D,sDAAsD;AACtD,MAAM,CAAC,MAAM,yBAAyB,GAAG,SAAS,CAAC;AACnD,qEAAqE;AACrE,MAAM,CAAC,MAAM,6BAA6B,GAAG,SAAS,CAAC;AAEvD;;;;;GAKG;AACH,MAAM,CAAC,MAAM,+BAA+B,GAAG,+BAA+B,CAAC;AAE/E,kCAAkC;AAClC,MAAM,CAAC,MAAM,sBAAsB,GAAG,KAAK,CAAC;AAC5C,2BAA2B;AAC3B,MAAM,CAAC,MAAM,4BAA4B,GAAG,WAAW,CAAC;AACxD,qFAAqF;AACrF,MAAM,CAAC,MAAM,2BAA2B,GAAG,SAAS,CAAC;AAErD;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG,SAAS,CAAC;AAEtD;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG,eAAe,CAAC;AAE3D,yDAAyD;AACzD,MAAM,CAAC,MAAM,wBAAwB,GAAG,EAAE,CAAC;AAC3C,+DAA+D;AAC/D,MAAM,CAAC,MAAM,8BAA8B,GAAG,GAAG,CAAC;AAClD,mDAAmD;AACnD,MAAM,CAAC,MAAM,kCAAkC,GAAG,IAAI,CAAC;AACvD,yDAAyD;AACzD,MAAM,CAAC,MAAM,wCAAwC,GAAG,IAAI,CAAC;AAE7D,8EAA8E;AAC9E,MAAM,CAAC,MAAM,+BAA+B,GAAG,SAAS,CAAC;AACzD,6EAA6E;AAC7E,MAAM,CAAC,MAAM,8BAA8B,GAAG,SAAS,CAAC;AAExD;;;;;GAKG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG;IACtC,WAAW;IACX,WAAW;IACX,WAAW;IACX,OAAO;IACP,gBAAgB;IAChB,UAAU;IACV,aAAa;IACb,YAAY;IACZ,mBAAmB;IACnB,QAAQ;IACR,aAAa;IACb,SAAS;IACT,SAAS;IACT,aAAa;IACb,aAAa;IACb,mBAAmB;IACnB,QAAQ;IACR,WAAW;IACX,eAAe;IACf,gBAAgB;IAChB,aAAa;IACb,kBAAkB;IAClB,OAAO;IACP,aAAa;IACb,kBAAkB;CACV,CAAC"}
@@ -0,0 +1,25 @@
1
+ /**
2
+ * Traefik v3 factory.
3
+ *
4
+ * Stands Traefik up as a cluster edge — the Helm repository, the Helm release
5
+ * and a status contract — and exposes its `traefik.io/v1alpha1` CRDs as typed
6
+ * factories: `IngressRoute`, `IngressRouteTCP`, `Middleware` (the OSS
7
+ * middleware set as a discriminated union), `TLSOption`, `TLSStore`,
8
+ * `ServersTransport` and `TraefikService`.
9
+ *
10
+ * Traefik's Gateway API support comes from the shared
11
+ * `src/factories/gateway-api` module rather than a Traefik-specific copy of the
12
+ * upstream kinds.
13
+ *
14
+ * @security Secure by construction: the dashboard and the insecure API cannot
15
+ * be enabled through this factory, `forwardAuth` defaults to
16
+ * `trustForwardHeader: false` with an explicit `authResponseHeaders`
17
+ * allowlist, `TLSOption` defaults to TLS 1.2 with `sniStrict`, and the proxy
18
+ * runs non-root with a read-only root filesystem.
19
+ */
20
+ export * from './compositions/index.js';
21
+ export * from './constants.js';
22
+ export * from './resources/index.js';
23
+ export * from './types.js';
24
+ export * from './utils/index.js';
25
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/factories/traefik/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AACH,cAAc,yBAAyB,CAAC;AACxC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,sBAAsB,CAAC;AACrC,cAAc,YAAY,CAAC;AAC3B,cAAc,kBAAkB,CAAC"}