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,169 @@
1
+ /**
2
+ * Traefik `Middleware` resources.
3
+ *
4
+ * One factory, {@link traefikMiddleware}, covers the whole OSS middleware set
5
+ * through a discriminated union whose variants are mutually exclusive at the
6
+ * type level. On top of it sit typed builders for the middlewares an edge
7
+ * almost always needs, each of which carries the secure defaults from #172.
8
+ */
9
+ import type { Composable, Enhanced } from '../../../core/types/index.js';
10
+ import type { TraefikBufferingMiddlewareConfig, TraefikChainMiddlewareConfig, TraefikForwardAuthMiddlewareConfig, TraefikHeadersMiddlewareConfig, TraefikInFlightReqMiddlewareConfig, TraefikMiddlewareSpec, TraefikRateLimitMiddlewareConfig, TraefikRedirectSchemeMiddlewareConfig } from '../types.js';
11
+ import { type TraefikResourceConfig } from './common.js';
12
+ import type { TraefikNoStatus } from './routing.js';
13
+ /**
14
+ * The builders' configuration types.
15
+ *
16
+ * They are DECLARED in `../types.js`, next to the ArkType schemas they are
17
+ * inferred from — the guide keeps every schema in one file — and re-exported
18
+ * here so the public import path stays `resources/middleware.js`.
19
+ */
20
+ export type { TraefikBufferingMiddlewareConfig, TraefikChainMiddlewareConfig, TraefikForwardAuthMiddlewareConfig, TraefikHeadersMiddlewareConfig, TraefikInFlightReqMiddlewareConfig, TraefikMiddlewareMetadata, TraefikRateLimitMiddlewareConfig, TraefikRedirectSchemeMiddlewareConfig, } from '../types.js';
21
+ /**
22
+ * Create a Traefik `Middleware`.
23
+ *
24
+ * `spec` accepts exactly one middleware key. Setting two is a compile error,
25
+ * and is re-checked here because Traefik resolves such an object by applying
26
+ * one middleware and silently dropping the other.
27
+ *
28
+ * @throws {TypeKroError} `TRAEFIK_MIDDLEWARE_INVALID_SPEC` when the spec sets
29
+ * zero, several, or unknown middleware keys.
30
+ *
31
+ * @example
32
+ * ```typescript
33
+ * traefikMiddleware({
34
+ * name: 'strip-v1',
35
+ * namespace: 'edge',
36
+ * spec: { stripPrefix: { prefixes: ['/v1'] } },
37
+ * id: 'stripV1',
38
+ * });
39
+ * ```
40
+ */
41
+ export declare function traefikMiddleware(config: Composable<TraefikResourceConfig<TraefikMiddlewareSpec>>): Enhanced<TraefikMiddlewareSpec, TraefikNoStatus>;
42
+ /**
43
+ * Create a `forwardAuth` `Middleware` with the secure edge defaults.
44
+ *
45
+ * `trustForwardHeader` is `false` unless explicitly overridden, and
46
+ * `authResponseHeaders` is an explicit allowlist.
47
+ *
48
+ * @example The Example orders-api authorizer, returning principal/tier/customer
49
+ * ```typescript
50
+ * traefikForwardAuthMiddleware({
51
+ * name: 'orders-api-authz',
52
+ * namespace: 'edge',
53
+ * address: 'http://orders-authorizer.edge.svc.cluster.local:8080/authorize',
54
+ * authResponseHeaders: ['X-Edge-Principal', 'X-Edge-Tier', 'X-Edge-Customer'],
55
+ * authRequestHeaders: ['Authorization', 'X-Edge-Api-Key'],
56
+ * id: 'ordersApiAuthz',
57
+ * });
58
+ * ```
59
+ */
60
+ export declare function traefikForwardAuthMiddleware(config: Composable<TraefikForwardAuthMiddlewareConfig>): Enhanced<TraefikMiddlewareSpec, TraefikNoStatus>;
61
+ /**
62
+ * Create a `rateLimit` `Middleware`.
63
+ *
64
+ * @example Per-principal budget shared across replicas through Valkey
65
+ * ```typescript
66
+ * traefikRateLimitMiddleware({
67
+ * name: 'orders-api-rate-limit',
68
+ * namespace: 'edge',
69
+ * average: 50,
70
+ * burst: 100,
71
+ * period: '1s',
72
+ * requestHeaderName: 'X-Edge-Principal',
73
+ * redis: {
74
+ * endpoints: ['valkey-primary.edge.svc.cluster.local:6379'],
75
+ * secret: 'valkey-auth',
76
+ * db: 3,
77
+ * },
78
+ * id: 'ordersApiRateLimit',
79
+ * });
80
+ * ```
81
+ */
82
+ export declare function traefikRateLimitMiddleware(config: Composable<TraefikRateLimitMiddlewareConfig>): Enhanced<TraefikMiddlewareSpec, TraefikNoStatus>;
83
+ /**
84
+ * Create an `inFlightReq` `Middleware` — a concurrency cap that protects an
85
+ * upstream from a slow-request pile-up that a rate limit alone would allow.
86
+ *
87
+ * @example
88
+ * ```typescript
89
+ * traefikInFlightReqMiddleware({
90
+ * name: 'orders-api-concurrency',
91
+ * namespace: 'edge',
92
+ * amount: 20,
93
+ * requestHeaderName: 'X-Edge-Customer',
94
+ * id: 'ordersApiConcurrency',
95
+ * });
96
+ * ```
97
+ */
98
+ export declare function traefikInFlightReqMiddleware(config: Composable<TraefikInFlightReqMiddlewareConfig>): Enhanced<TraefikMiddlewareSpec, TraefikNoStatus>;
99
+ /**
100
+ * Create a `headers` `Middleware` for CORS and browser security headers.
101
+ *
102
+ * @example
103
+ * ```typescript
104
+ * traefikHeadersMiddleware({
105
+ * name: 'orders-api-headers',
106
+ * namespace: 'edge',
107
+ * headers: {
108
+ * accessControlAllowOriginList: ['https://console.example.com'],
109
+ * accessControlAllowMethods: ['GET', 'POST', 'OPTIONS'],
110
+ * accessControlAllowHeaders: ['authorization', 'content-type'],
111
+ * accessControlAllowCredentials: true,
112
+ * accessControlMaxAge: 600,
113
+ * addVaryHeader: true,
114
+ * frameDeny: true,
115
+ * contentTypeNosniff: true,
116
+ * referrerPolicy: 'strict-origin-when-cross-origin',
117
+ * stsSeconds: 31_536_000,
118
+ * stsIncludeSubdomains: true,
119
+ * },
120
+ * id: 'ordersApiHeaders',
121
+ * });
122
+ * ```
123
+ */
124
+ export declare function traefikHeadersMiddleware(config: Composable<TraefikHeadersMiddlewareConfig>): Enhanced<TraefikMiddlewareSpec, TraefikNoStatus>;
125
+ /**
126
+ * Create a `redirectScheme` `Middleware`, the route-level counterpart to the
127
+ * entrypoint-level `web` → `websecure` redirect.
128
+ *
129
+ * Prefer the entrypoint redirect (`entrypoints.web.redirectToWebsecure` on the
130
+ * bootstrap spec) for a blanket policy; use this middleware when only some
131
+ * routes should redirect.
132
+ */
133
+ export declare function traefikRedirectSchemeMiddleware(config: Composable<TraefikRedirectSchemeMiddlewareConfig>): Enhanced<TraefikMiddlewareSpec, TraefikNoStatus>;
134
+ /**
135
+ * Create a `buffering` `Middleware` enforcing request/response body limits.
136
+ *
137
+ * @example A 1 MiB request-body cap
138
+ * ```typescript
139
+ * traefikBufferingMiddleware({
140
+ * name: 'orders-api-body-limit',
141
+ * namespace: 'edge',
142
+ * buffering: { maxRequestBodyBytes: 1_048_576, memRequestBodyBytes: 262_144 },
143
+ * id: 'ordersApiBodyLimit',
144
+ * });
145
+ * ```
146
+ */
147
+ export declare function traefikBufferingMiddleware(config: Composable<TraefikBufferingMiddlewareConfig>): Enhanced<TraefikMiddlewareSpec, TraefikNoStatus>;
148
+ /**
149
+ * Create a `chain` `Middleware` bundling an ordered middleware list into one
150
+ * reference, so several routes can share the same edge policy.
151
+ *
152
+ * @example
153
+ * ```typescript
154
+ * traefikChainMiddleware({
155
+ * name: 'orders-api-edge',
156
+ * namespace: 'edge',
157
+ * middlewares: [
158
+ * { name: 'orders-api-headers' },
159
+ * { name: 'orders-api-authz' },
160
+ * { name: 'orders-api-rate-limit' },
161
+ * { name: 'orders-api-concurrency' },
162
+ * { name: 'orders-api-body-limit' },
163
+ * ],
164
+ * id: 'ordersApiEdgeChain',
165
+ * });
166
+ * ```
167
+ */
168
+ export declare function traefikChainMiddleware(config: Composable<TraefikChainMiddlewareConfig>): Enhanced<TraefikMiddlewareSpec, TraefikNoStatus>;
169
+ //# sourceMappingURL=middleware.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"middleware.d.ts","sourceRoot":"","sources":["../../../../src/factories/traefik/resources/middleware.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAC;AAGzE,OAAO,KAAK,EACV,gCAAgC,EAEhC,4BAA4B,EAE5B,kCAAkC,EAClC,8BAA8B,EAE9B,kCAAkC,EAElC,qBAAqB,EAErB,gCAAgC,EAEhC,qCAAqC,EACtC,MAAM,aAAa,CAAC;AAErB,OAAO,EACL,KAAK,qBAAqB,EAG3B,MAAM,aAAa,CAAC;AACrB,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAEpD;;;;;;GAMG;AACH,YAAY,EACV,gCAAgC,EAChC,4BAA4B,EAC5B,kCAAkC,EAClC,8BAA8B,EAC9B,kCAAkC,EAClC,yBAAyB,EACzB,gCAAgC,EAChC,qCAAqC,GACtC,MAAM,aAAa,CAAC;AASrB;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,UAAU,CAAC,qBAAqB,CAAC,qBAAqB,CAAC,CAAC,GAC/D,QAAQ,CAAC,qBAAqB,EAAE,eAAe,CAAC,CAMlD;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,4BAA4B,CAC1C,MAAM,EAAE,UAAU,CAAC,kCAAkC,CAAC,GACrD,QAAQ,CAAC,qBAAqB,EAAE,eAAe,CAAC,CAYlD;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,0BAA0B,CACxC,MAAM,EAAE,UAAU,CAAC,gCAAgC,CAAC,GACnD,QAAQ,CAAC,qBAAqB,EAAE,eAAe,CAAC,CAclD;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,4BAA4B,CAC1C,MAAM,EAAE,UAAU,CAAC,kCAAkC,CAAC,GACrD,QAAQ,CAAC,qBAAqB,EAAE,eAAe,CAAC,CAWlD;AAED;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,UAAU,CAAC,8BAA8B,CAAC,GACjD,QAAQ,CAAC,qBAAqB,EAAE,eAAe,CAAC,CAElD;AAED;;;;;;;GAOG;AACH,wBAAgB,+BAA+B,CAC7C,MAAM,EAAE,UAAU,CAAC,qCAAqC,CAAC,GACxD,QAAQ,CAAC,qBAAqB,EAAE,eAAe,CAAC,CAOlD;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,0BAA0B,CACxC,MAAM,EAAE,UAAU,CAAC,gCAAgC,CAAC,GACnD,QAAQ,CAAC,qBAAqB,EAAE,eAAe,CAAC,CAElD;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,UAAU,CAAC,4BAA4B,CAAC,GAC/C,QAAQ,CAAC,qBAAqB,EAAE,eAAe,CAAC,CAGlD"}
@@ -0,0 +1,225 @@
1
+ /**
2
+ * Traefik `Middleware` resources.
3
+ *
4
+ * One factory, {@link traefikMiddleware}, covers the whole OSS middleware set
5
+ * through a discriminated union whose variants are mutually exclusive at the
6
+ * type level. On top of it sit typed builders for the middlewares an edge
7
+ * almost always needs, each of which carries the secure defaults from #172.
8
+ */
9
+ import { createResource } from '../../shared.js';
10
+ import { TRAEFIK_API_VERSION } from '../constants.js';
11
+ import { assertTraefikMiddlewareSpec } from '../utils/middleware-validation.js';
12
+ import { traefikResourceDefinition, traefikStatuslessReadinessEvaluator, } from './common.js';
13
+ function middlewareResource(metadata, spec) {
14
+ return traefikMiddleware({ ...metadata, spec });
15
+ }
16
+ /**
17
+ * Create a Traefik `Middleware`.
18
+ *
19
+ * `spec` accepts exactly one middleware key. Setting two is a compile error,
20
+ * and is re-checked here because Traefik resolves such an object by applying
21
+ * one middleware and silently dropping the other.
22
+ *
23
+ * @throws {TypeKroError} `TRAEFIK_MIDDLEWARE_INVALID_SPEC` when the spec sets
24
+ * zero, several, or unknown middleware keys.
25
+ *
26
+ * @example
27
+ * ```typescript
28
+ * traefikMiddleware({
29
+ * name: 'strip-v1',
30
+ * namespace: 'edge',
31
+ * spec: { stripPrefix: { prefixes: ['/v1'] } },
32
+ * id: 'stripV1',
33
+ * });
34
+ * ```
35
+ */
36
+ export function traefikMiddleware(config) {
37
+ assertTraefikMiddlewareSpec(config.spec, config.name);
38
+ return createResource(traefikResourceDefinition(TRAEFIK_API_VERSION, 'Middleware', config), { scope: 'namespaced' }).withReadinessEvaluator(traefikStatuslessReadinessEvaluator('Middleware'));
39
+ }
40
+ /**
41
+ * Create a `forwardAuth` `Middleware` with the secure edge defaults.
42
+ *
43
+ * `trustForwardHeader` is `false` unless explicitly overridden, and
44
+ * `authResponseHeaders` is an explicit allowlist.
45
+ *
46
+ * @example The Example orders-api authorizer, returning principal/tier/customer
47
+ * ```typescript
48
+ * traefikForwardAuthMiddleware({
49
+ * name: 'orders-api-authz',
50
+ * namespace: 'edge',
51
+ * address: 'http://orders-authorizer.edge.svc.cluster.local:8080/authorize',
52
+ * authResponseHeaders: ['X-Edge-Principal', 'X-Edge-Tier', 'X-Edge-Customer'],
53
+ * authRequestHeaders: ['Authorization', 'X-Edge-Api-Key'],
54
+ * id: 'ordersApiAuthz',
55
+ * });
56
+ * ```
57
+ */
58
+ export function traefikForwardAuthMiddleware(config) {
59
+ const forwardAuth = {
60
+ address: config.address,
61
+ // @security Never inherit the client's own X-Forwarded-* by default.
62
+ trustForwardHeader: config.trustForwardHeader ?? false,
63
+ authResponseHeaders: [...config.authResponseHeaders],
64
+ ...(config.authRequestHeaders ? { authRequestHeaders: [...config.authRequestHeaders] } : {}),
65
+ ...(config.forwardBody === undefined ? {} : { forwardBody: config.forwardBody }),
66
+ ...(config.maxBodySize === undefined ? {} : { maxBodySize: config.maxBodySize }),
67
+ ...(config.tls ? { tls: config.tls } : {}),
68
+ };
69
+ return middlewareResource(metadataOf(config), { forwardAuth });
70
+ }
71
+ /**
72
+ * Create a `rateLimit` `Middleware`.
73
+ *
74
+ * @example Per-principal budget shared across replicas through Valkey
75
+ * ```typescript
76
+ * traefikRateLimitMiddleware({
77
+ * name: 'orders-api-rate-limit',
78
+ * namespace: 'edge',
79
+ * average: 50,
80
+ * burst: 100,
81
+ * period: '1s',
82
+ * requestHeaderName: 'X-Edge-Principal',
83
+ * redis: {
84
+ * endpoints: ['valkey-primary.edge.svc.cluster.local:6379'],
85
+ * secret: 'valkey-auth',
86
+ * db: 3,
87
+ * },
88
+ * id: 'ordersApiRateLimit',
89
+ * });
90
+ * ```
91
+ */
92
+ export function traefikRateLimitMiddleware(config) {
93
+ const sourceCriterion = config.sourceCriterion ??
94
+ (config.requestHeaderName === undefined
95
+ ? undefined
96
+ : { requestHeaderName: config.requestHeaderName });
97
+ const rateLimit = {
98
+ average: config.average,
99
+ burst: config.burst,
100
+ period: config.period ?? '1s',
101
+ ...(sourceCriterion ? { sourceCriterion } : {}),
102
+ ...(config.redis ? { redis: config.redis } : {}),
103
+ };
104
+ return middlewareResource(metadataOf(config), { rateLimit });
105
+ }
106
+ /**
107
+ * Create an `inFlightReq` `Middleware` — a concurrency cap that protects an
108
+ * upstream from a slow-request pile-up that a rate limit alone would allow.
109
+ *
110
+ * @example
111
+ * ```typescript
112
+ * traefikInFlightReqMiddleware({
113
+ * name: 'orders-api-concurrency',
114
+ * namespace: 'edge',
115
+ * amount: 20,
116
+ * requestHeaderName: 'X-Edge-Customer',
117
+ * id: 'ordersApiConcurrency',
118
+ * });
119
+ * ```
120
+ */
121
+ export function traefikInFlightReqMiddleware(config) {
122
+ const sourceCriterion = config.sourceCriterion ??
123
+ (config.requestHeaderName === undefined
124
+ ? undefined
125
+ : { requestHeaderName: config.requestHeaderName });
126
+ const inFlightReq = {
127
+ amount: config.amount,
128
+ ...(sourceCriterion ? { sourceCriterion } : {}),
129
+ };
130
+ return middlewareResource(metadataOf(config), { inFlightReq });
131
+ }
132
+ /**
133
+ * Create a `headers` `Middleware` for CORS and browser security headers.
134
+ *
135
+ * @example
136
+ * ```typescript
137
+ * traefikHeadersMiddleware({
138
+ * name: 'orders-api-headers',
139
+ * namespace: 'edge',
140
+ * headers: {
141
+ * accessControlAllowOriginList: ['https://console.example.com'],
142
+ * accessControlAllowMethods: ['GET', 'POST', 'OPTIONS'],
143
+ * accessControlAllowHeaders: ['authorization', 'content-type'],
144
+ * accessControlAllowCredentials: true,
145
+ * accessControlMaxAge: 600,
146
+ * addVaryHeader: true,
147
+ * frameDeny: true,
148
+ * contentTypeNosniff: true,
149
+ * referrerPolicy: 'strict-origin-when-cross-origin',
150
+ * stsSeconds: 31_536_000,
151
+ * stsIncludeSubdomains: true,
152
+ * },
153
+ * id: 'ordersApiHeaders',
154
+ * });
155
+ * ```
156
+ */
157
+ export function traefikHeadersMiddleware(config) {
158
+ return middlewareResource(metadataOf(config), { headers: config.headers });
159
+ }
160
+ /**
161
+ * Create a `redirectScheme` `Middleware`, the route-level counterpart to the
162
+ * entrypoint-level `web` → `websecure` redirect.
163
+ *
164
+ * Prefer the entrypoint redirect (`entrypoints.web.redirectToWebsecure` on the
165
+ * bootstrap spec) for a blanket policy; use this middleware when only some
166
+ * routes should redirect.
167
+ */
168
+ export function traefikRedirectSchemeMiddleware(config) {
169
+ const redirectScheme = {
170
+ scheme: config.scheme ?? 'https',
171
+ permanent: config.permanent ?? true,
172
+ ...(config.port === undefined ? {} : { port: config.port }),
173
+ };
174
+ return middlewareResource(metadataOf(config), { redirectScheme });
175
+ }
176
+ /**
177
+ * Create a `buffering` `Middleware` enforcing request/response body limits.
178
+ *
179
+ * @example A 1 MiB request-body cap
180
+ * ```typescript
181
+ * traefikBufferingMiddleware({
182
+ * name: 'orders-api-body-limit',
183
+ * namespace: 'edge',
184
+ * buffering: { maxRequestBodyBytes: 1_048_576, memRequestBodyBytes: 262_144 },
185
+ * id: 'ordersApiBodyLimit',
186
+ * });
187
+ * ```
188
+ */
189
+ export function traefikBufferingMiddleware(config) {
190
+ return middlewareResource(metadataOf(config), { buffering: config.buffering });
191
+ }
192
+ /**
193
+ * Create a `chain` `Middleware` bundling an ordered middleware list into one
194
+ * reference, so several routes can share the same edge policy.
195
+ *
196
+ * @example
197
+ * ```typescript
198
+ * traefikChainMiddleware({
199
+ * name: 'orders-api-edge',
200
+ * namespace: 'edge',
201
+ * middlewares: [
202
+ * { name: 'orders-api-headers' },
203
+ * { name: 'orders-api-authz' },
204
+ * { name: 'orders-api-rate-limit' },
205
+ * { name: 'orders-api-concurrency' },
206
+ * { name: 'orders-api-body-limit' },
207
+ * ],
208
+ * id: 'ordersApiEdgeChain',
209
+ * });
210
+ * ```
211
+ */
212
+ export function traefikChainMiddleware(config) {
213
+ const chain = { middlewares: [...config.middlewares] };
214
+ return middlewareResource(metadataOf(config), { chain });
215
+ }
216
+ function metadataOf(config) {
217
+ return {
218
+ name: config.name,
219
+ namespace: config.namespace,
220
+ ...(config.labels ? { labels: config.labels } : {}),
221
+ ...(config.annotations ? { annotations: config.annotations } : {}),
222
+ ...(config.id ? { id: config.id } : {}),
223
+ };
224
+ }
225
+ //# sourceMappingURL=middleware.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"middleware.js","sourceRoot":"","sources":["../../../../src/factories/traefik/resources/middleware.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAiBtD,OAAO,EAAE,2BAA2B,EAAE,MAAM,mCAAmC,CAAC;AAChF,OAAO,EAEL,yBAAyB,EACzB,mCAAmC,GACpC,MAAM,aAAa,CAAC;AAqBrB,SAAS,kBAAkB,CACzB,QAA+C,EAC/C,IAAuC;IAEvC,OAAO,iBAAiB,CAAC,EAAE,GAAG,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;AAClD,CAAC;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,UAAU,iBAAiB,CAC/B,MAAgE;IAEhE,2BAA2B,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;IACtD,OAAO,cAAc,CACnB,yBAAyB,CAAC,mBAAmB,EAAE,YAAY,EAAE,MAAM,CAAC,EACpE,EAAE,KAAK,EAAE,YAAY,EAAE,CACxB,CAAC,sBAAsB,CAAC,mCAAmC,CAAC,YAAY,CAAC,CAAC,CAAC;AAC9E,CAAC;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,UAAU,4BAA4B,CAC1C,MAAsD;IAEtD,MAAM,WAAW,GAA6C;QAC5D,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,qEAAqE;QACrE,kBAAkB,EAAE,MAAM,CAAC,kBAAkB,IAAI,KAAK;QACtD,mBAAmB,EAAE,CAAC,GAAG,MAAM,CAAC,mBAAmB,CAAC;QACpD,GAAG,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC,CAAC,EAAE,kBAAkB,EAAE,CAAC,GAAG,MAAM,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC5F,GAAG,CAAC,MAAM,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,MAAM,CAAC,WAAW,EAAE,CAAC;QAChF,GAAG,CAAC,MAAM,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,MAAM,CAAC,WAAW,EAAE,CAAC;QAChF,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC3C,CAAC;IACF,OAAO,kBAAkB,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,EAAE,WAAW,EAAE,CAAC,CAAC;AACjE,CAAC;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,UAAU,0BAA0B,CACxC,MAAoD;IAEpD,MAAM,eAAe,GACnB,MAAM,CAAC,eAAe;QACtB,CAAC,MAAM,CAAC,iBAAiB,KAAK,SAAS;YACrC,CAAC,CAAC,SAAS;YACX,CAAC,CAAC,EAAE,iBAAiB,EAAE,MAAM,CAAC,iBAAiB,EAAE,CAAC,CAAC;IACvD,MAAM,SAAS,GAA2C;QACxD,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,KAAK,EAAE,MAAM,CAAC,KAAK;QACnB,MAAM,EAAE,MAAM,CAAC,MAAM,IAAI,IAAI;QAC7B,GAAG,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE,eAAe,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC/C,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACjD,CAAC;IACF,OAAO,kBAAkB,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC;AAC/D,CAAC;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,4BAA4B,CAC1C,MAAsD;IAEtD,MAAM,eAAe,GACnB,MAAM,CAAC,eAAe;QACtB,CAAC,MAAM,CAAC,iBAAiB,KAAK,SAAS;YACrC,CAAC,CAAC,SAAS;YACX,CAAC,CAAC,EAAE,iBAAiB,EAAE,MAAM,CAAC,iBAAiB,EAAE,CAAC,CAAC;IACvD,MAAM,WAAW,GAA6C;QAC5D,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,GAAG,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE,eAAe,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAChD,CAAC;IACF,OAAO,kBAAkB,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,EAAE,WAAW,EAAE,CAAC,CAAC;AACjE,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,MAAM,UAAU,wBAAwB,CACtC,MAAkD;IAElD,OAAO,kBAAkB,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;AAC7E,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,+BAA+B,CAC7C,MAAyD;IAEzD,MAAM,cAAc,GAAgD;QAClE,MAAM,EAAE,MAAM,CAAC,MAAM,IAAI,OAAO;QAChC,SAAS,EAAE,MAAM,CAAC,SAAS,IAAI,IAAI;QACnC,GAAG,CAAC,MAAM,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC;KAC5D,CAAC;IACF,OAAO,kBAAkB,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,EAAE,cAAc,EAAE,CAAC,CAAC;AACpE,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,0BAA0B,CACxC,MAAoD;IAEpD,OAAO,kBAAkB,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,EAAE,SAAS,EAAE,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC;AACjF,CAAC;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,UAAU,sBAAsB,CACpC,MAAgD;IAEhD,MAAM,KAAK,GAAuC,EAAE,WAAW,EAAE,CAAC,GAAG,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC;IAC3F,OAAO,kBAAkB,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;AAC3D,CAAC;AAED,SAAS,UAAU,CACjB,MAA6C;IAE7C,OAAO;QACL,IAAI,EAAE,MAAM,CAAC,IAAI;QACjB,SAAS,EAAE,MAAM,CAAC,SAAS;QAC3B,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACnD,GAAG,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAClE,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACxC,CAAC;AACJ,CAAC"}
@@ -0,0 +1,113 @@
1
+ /**
2
+ * Traefik routing resources: `IngressRoute`, `IngressRouteTCP`,
3
+ * `TraefikService` and `ServersTransport`.
4
+ *
5
+ * Every one of these kinds is status-less; see
6
+ * {@link traefikStatuslessReadinessEvaluator} for why they are registered as
7
+ * always-ready rather than condition-based.
8
+ */
9
+ import type { Composable, Enhanced } from '../../../core/types/index.js';
10
+ import type { TraefikIngressRouteSpec, TraefikIngressRouteTCPSpec, TraefikServersTransportSpec, TraefikServiceSpec } from '../types.js';
11
+ import { type TraefikResourceConfig } from './common.js';
12
+ /** Traefik CRDs have no status subresource, so their status type is empty. */
13
+ export type TraefikNoStatus = Record<string, never>;
14
+ /**
15
+ * Create a Traefik `IngressRoute`.
16
+ *
17
+ * The HTTP router: it binds rule expressions on one or more entrypoints to
18
+ * backend services, with an ordered middleware chain and optional TLS.
19
+ *
20
+ * Set `ingressClassName` whenever the installation sets
21
+ * `providers.kubernetesCRD.ingressClass` — `traefikBootstrap` does, from
22
+ * `spec.ingressClass`. Traefik then processes only the CRDs whose class
23
+ * matches, which is what keeps two installations from stealing each other's
24
+ * routes; a route without it is silently ignored and the edge answers `404`.
25
+ *
26
+ * @example An authenticated, rate-limited API route terminating TLS
27
+ * ```typescript
28
+ * traefikIngressRoute({
29
+ * name: 'orders-api',
30
+ * namespace: 'edge',
31
+ * spec: {
32
+ * entryPoints: ['websecure'],
33
+ * ingressClassName: 'traefik',
34
+ * routes: [
35
+ * {
36
+ * match: 'Host(`api.example.com`) && PathPrefix(`/v1`)',
37
+ * kind: 'Rule',
38
+ * middlewares: [{ name: 'orders-api-authz' }, { name: 'orders-api-rate-limit' }],
39
+ * services: [{ name: 'orders-api', port: 8080 }],
40
+ * },
41
+ * ],
42
+ * tls: { secretName: 'orders-api-tls' },
43
+ * },
44
+ * id: 'ordersApiRoute',
45
+ * });
46
+ * ```
47
+ */
48
+ export declare function traefikIngressRoute(config: Composable<TraefikResourceConfig<TraefikIngressRouteSpec>>): Enhanced<TraefikIngressRouteSpec, TraefikNoStatus>;
49
+ /**
50
+ * Create a Traefik `IngressRouteTCP`.
51
+ *
52
+ * The TCP router, matched on SNI. Use `tls.passthrough` to hand the TLS
53
+ * handshake to the backend instead of terminating it at the edge.
54
+ *
55
+ * @example
56
+ * ```typescript
57
+ * traefikIngressRouteTCP({
58
+ * name: 'postgres',
59
+ * namespace: 'edge',
60
+ * spec: {
61
+ * entryPoints: ['postgres'],
62
+ * routes: [{ match: 'HostSNI(`db.example.com`)', services: [{ name: 'pg-rw', port: 5432 }] }],
63
+ * tls: { passthrough: true },
64
+ * },
65
+ * id: 'postgresRoute',
66
+ * });
67
+ * ```
68
+ */
69
+ export declare function traefikIngressRouteTCP(config: Composable<TraefikResourceConfig<TraefikIngressRouteTCPSpec>>): Enhanced<TraefikIngressRouteTCPSpec, TraefikNoStatus>;
70
+ /**
71
+ * Create a Traefik `TraefikService`.
72
+ *
73
+ * A composed backend — weighted round-robin, mirroring, failover, or highest
74
+ * random weight — referenced from a route with `kind: 'TraefikService'`.
75
+ *
76
+ * @example Canary split between two Deployments
77
+ * ```typescript
78
+ * traefikService({
79
+ * name: 'orders-api-canary',
80
+ * namespace: 'edge',
81
+ * spec: {
82
+ * weighted: {
83
+ * services: [
84
+ * { name: 'orders-api', port: 8080, weight: 9 },
85
+ * { name: 'orders-api-next', port: 8080, weight: 1 },
86
+ * ],
87
+ * },
88
+ * },
89
+ * id: 'ordersApiCanary',
90
+ * });
91
+ * ```
92
+ */
93
+ export declare function traefikService(config: Composable<TraefikResourceConfig<TraefikServiceSpec>>): Enhanced<TraefikServiceSpec, TraefikNoStatus>;
94
+ /**
95
+ * Create a Traefik `ServersTransport`.
96
+ *
97
+ * Controls how Traefik dials the upstream: TLS trust, connection pooling and
98
+ * the forwarding timeouts. An edge fronting requests longer than Traefik's 60s
99
+ * default must raise `forwardingTimeouts.responseHeaderTimeout` here as well
100
+ * as the entrypoint's `respondingTimeouts`.
101
+ *
102
+ * @example
103
+ * ```typescript
104
+ * traefikServersTransport({
105
+ * name: 'orders-api-slow',
106
+ * namespace: 'edge',
107
+ * spec: { forwardingTimeouts: { responseHeaderTimeout: '120s', idleConnTimeout: '150s' } },
108
+ * id: 'ordersApiTransport',
109
+ * });
110
+ * ```
111
+ */
112
+ export declare function traefikServersTransport(config: Composable<TraefikResourceConfig<TraefikServersTransportSpec>>): Enhanced<TraefikServersTransportSpec, TraefikNoStatus>;
113
+ //# sourceMappingURL=routing.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"routing.d.ts","sourceRoot":"","sources":["../../../../src/factories/traefik/resources/routing.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAC;AAGzE,OAAO,KAAK,EACV,uBAAuB,EACvB,0BAA0B,EAC1B,2BAA2B,EAC3B,kBAAkB,EACnB,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,KAAK,qBAAqB,EAG3B,MAAM,aAAa,CAAC;AAErB,8EAA8E;AAC9E,MAAM,MAAM,eAAe,GAAG,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;AAEpD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,UAAU,CAAC,qBAAqB,CAAC,uBAAuB,CAAC,CAAC,GACjE,QAAQ,CAAC,uBAAuB,EAAE,eAAe,CAAC,CAKpD;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,UAAU,CAAC,qBAAqB,CAAC,0BAA0B,CAAC,CAAC,GACpE,QAAQ,CAAC,0BAA0B,EAAE,eAAe,CAAC,CAKvD;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,cAAc,CAC5B,MAAM,EAAE,UAAU,CAAC,qBAAqB,CAAC,kBAAkB,CAAC,CAAC,GAC5D,QAAQ,CAAC,kBAAkB,EAAE,eAAe,CAAC,CAK/C;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,UAAU,CAAC,qBAAqB,CAAC,2BAA2B,CAAC,CAAC,GACrE,QAAQ,CAAC,2BAA2B,EAAE,eAAe,CAAC,CAKxD"}
@@ -0,0 +1,119 @@
1
+ /**
2
+ * Traefik routing resources: `IngressRoute`, `IngressRouteTCP`,
3
+ * `TraefikService` and `ServersTransport`.
4
+ *
5
+ * Every one of these kinds is status-less; see
6
+ * {@link traefikStatuslessReadinessEvaluator} for why they are registered as
7
+ * always-ready rather than condition-based.
8
+ */
9
+ import { createResource } from '../../shared.js';
10
+ import { TRAEFIK_API_VERSION } from '../constants.js';
11
+ import { traefikResourceDefinition, traefikStatuslessReadinessEvaluator, } from './common.js';
12
+ /**
13
+ * Create a Traefik `IngressRoute`.
14
+ *
15
+ * The HTTP router: it binds rule expressions on one or more entrypoints to
16
+ * backend services, with an ordered middleware chain and optional TLS.
17
+ *
18
+ * Set `ingressClassName` whenever the installation sets
19
+ * `providers.kubernetesCRD.ingressClass` — `traefikBootstrap` does, from
20
+ * `spec.ingressClass`. Traefik then processes only the CRDs whose class
21
+ * matches, which is what keeps two installations from stealing each other's
22
+ * routes; a route without it is silently ignored and the edge answers `404`.
23
+ *
24
+ * @example An authenticated, rate-limited API route terminating TLS
25
+ * ```typescript
26
+ * traefikIngressRoute({
27
+ * name: 'orders-api',
28
+ * namespace: 'edge',
29
+ * spec: {
30
+ * entryPoints: ['websecure'],
31
+ * ingressClassName: 'traefik',
32
+ * routes: [
33
+ * {
34
+ * match: 'Host(`api.example.com`) && PathPrefix(`/v1`)',
35
+ * kind: 'Rule',
36
+ * middlewares: [{ name: 'orders-api-authz' }, { name: 'orders-api-rate-limit' }],
37
+ * services: [{ name: 'orders-api', port: 8080 }],
38
+ * },
39
+ * ],
40
+ * tls: { secretName: 'orders-api-tls' },
41
+ * },
42
+ * id: 'ordersApiRoute',
43
+ * });
44
+ * ```
45
+ */
46
+ export function traefikIngressRoute(config) {
47
+ return createResource(traefikResourceDefinition(TRAEFIK_API_VERSION, 'IngressRoute', config), { scope: 'namespaced' }).withReadinessEvaluator(traefikStatuslessReadinessEvaluator('IngressRoute'));
48
+ }
49
+ /**
50
+ * Create a Traefik `IngressRouteTCP`.
51
+ *
52
+ * The TCP router, matched on SNI. Use `tls.passthrough` to hand the TLS
53
+ * handshake to the backend instead of terminating it at the edge.
54
+ *
55
+ * @example
56
+ * ```typescript
57
+ * traefikIngressRouteTCP({
58
+ * name: 'postgres',
59
+ * namespace: 'edge',
60
+ * spec: {
61
+ * entryPoints: ['postgres'],
62
+ * routes: [{ match: 'HostSNI(`db.example.com`)', services: [{ name: 'pg-rw', port: 5432 }] }],
63
+ * tls: { passthrough: true },
64
+ * },
65
+ * id: 'postgresRoute',
66
+ * });
67
+ * ```
68
+ */
69
+ export function traefikIngressRouteTCP(config) {
70
+ return createResource(traefikResourceDefinition(TRAEFIK_API_VERSION, 'IngressRouteTCP', config), { scope: 'namespaced' }).withReadinessEvaluator(traefikStatuslessReadinessEvaluator('IngressRouteTCP'));
71
+ }
72
+ /**
73
+ * Create a Traefik `TraefikService`.
74
+ *
75
+ * A composed backend — weighted round-robin, mirroring, failover, or highest
76
+ * random weight — referenced from a route with `kind: 'TraefikService'`.
77
+ *
78
+ * @example Canary split between two Deployments
79
+ * ```typescript
80
+ * traefikService({
81
+ * name: 'orders-api-canary',
82
+ * namespace: 'edge',
83
+ * spec: {
84
+ * weighted: {
85
+ * services: [
86
+ * { name: 'orders-api', port: 8080, weight: 9 },
87
+ * { name: 'orders-api-next', port: 8080, weight: 1 },
88
+ * ],
89
+ * },
90
+ * },
91
+ * id: 'ordersApiCanary',
92
+ * });
93
+ * ```
94
+ */
95
+ export function traefikService(config) {
96
+ return createResource(traefikResourceDefinition(TRAEFIK_API_VERSION, 'TraefikService', config), { scope: 'namespaced' }).withReadinessEvaluator(traefikStatuslessReadinessEvaluator('TraefikService'));
97
+ }
98
+ /**
99
+ * Create a Traefik `ServersTransport`.
100
+ *
101
+ * Controls how Traefik dials the upstream: TLS trust, connection pooling and
102
+ * the forwarding timeouts. An edge fronting requests longer than Traefik's 60s
103
+ * default must raise `forwardingTimeouts.responseHeaderTimeout` here as well
104
+ * as the entrypoint's `respondingTimeouts`.
105
+ *
106
+ * @example
107
+ * ```typescript
108
+ * traefikServersTransport({
109
+ * name: 'orders-api-slow',
110
+ * namespace: 'edge',
111
+ * spec: { forwardingTimeouts: { responseHeaderTimeout: '120s', idleConnTimeout: '150s' } },
112
+ * id: 'ordersApiTransport',
113
+ * });
114
+ * ```
115
+ */
116
+ export function traefikServersTransport(config) {
117
+ return createResource(traefikResourceDefinition(TRAEFIK_API_VERSION, 'ServersTransport', config), { scope: 'namespaced' }).withReadinessEvaluator(traefikStatuslessReadinessEvaluator('ServersTransport'));
118
+ }
119
+ //# sourceMappingURL=routing.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"routing.js","sourceRoot":"","sources":["../../../../src/factories/traefik/resources/routing.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAOtD,OAAO,EAEL,yBAAyB,EACzB,mCAAmC,GACpC,MAAM,aAAa,CAAC;AAKrB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,MAAM,UAAU,mBAAmB,CACjC,MAAkE;IAElE,OAAO,cAAc,CACnB,yBAAyB,CAAC,mBAAmB,EAAE,cAAc,EAAE,MAAM,CAAC,EACtE,EAAE,KAAK,EAAE,YAAY,EAAE,CACxB,CAAC,sBAAsB,CAAC,mCAAmC,CAAC,cAAc,CAAC,CAAC,CAAC;AAChF,CAAC;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,UAAU,sBAAsB,CACpC,MAAqE;IAErE,OAAO,cAAc,CACnB,yBAAyB,CAAC,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,CAAC,EACzE,EAAE,KAAK,EAAE,YAAY,EAAE,CACxB,CAAC,sBAAsB,CAAC,mCAAmC,CAAC,iBAAiB,CAAC,CAAC,CAAC;AACnF,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,MAAM,UAAU,cAAc,CAC5B,MAA6D;IAE7D,OAAO,cAAc,CACnB,yBAAyB,CAAC,mBAAmB,EAAE,gBAAgB,EAAE,MAAM,CAAC,EACxE,EAAE,KAAK,EAAE,YAAY,EAAE,CACxB,CAAC,sBAAsB,CAAC,mCAAmC,CAAC,gBAAgB,CAAC,CAAC,CAAC;AAClF,CAAC;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,UAAU,uBAAuB,CACrC,MAAsE;IAEtE,OAAO,cAAc,CACnB,yBAAyB,CAAC,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,CAAC,EAC1E,EAAE,KAAK,EAAE,YAAY,EAAE,CACxB,CAAC,sBAAsB,CAAC,mCAAmC,CAAC,kBAAkB,CAAC,CAAC,CAAC;AACpF,CAAC"}