typekro 0.5.0 → 0.8.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 (345) hide show
  1. package/dist/.tsbuildinfo +1 -1
  2. package/dist/compositions/typekro-runtime/typekro-runtime.d.ts +1 -1
  3. package/dist/compositions/typekro-runtime/typekro-runtime.d.ts.map +1 -1
  4. package/dist/compositions/typekro-runtime/typekro-runtime.js +16 -2
  5. package/dist/compositions/typekro-runtime/typekro-runtime.js.map +1 -1
  6. package/dist/core/composition/context.d.ts +14 -0
  7. package/dist/core/composition/context.d.ts.map +1 -1
  8. package/dist/core/composition/context.js.map +1 -1
  9. package/dist/core/composition/imperative.d.ts.map +1 -1
  10. package/dist/core/composition/imperative.js +59 -30
  11. package/dist/core/composition/imperative.js.map +1 -1
  12. package/dist/core/composition/nested-status-cel.d.ts +50 -0
  13. package/dist/core/composition/nested-status-cel.d.ts.map +1 -0
  14. package/dist/core/composition/nested-status-cel.js +169 -0
  15. package/dist/core/composition/nested-status-cel.js.map +1 -0
  16. package/dist/core/constants/brands.d.ts +1 -1
  17. package/dist/core/constants/brands.d.ts.map +1 -1
  18. package/dist/core/constants/brands.js +1 -1
  19. package/dist/core/constants/brands.js.map +1 -1
  20. package/dist/core/containers/build.d.ts +50 -0
  21. package/dist/core/containers/build.d.ts.map +1 -0
  22. package/dist/core/containers/build.js +146 -0
  23. package/dist/core/containers/build.js.map +1 -0
  24. package/dist/core/containers/errors.d.ts +14 -0
  25. package/dist/core/containers/errors.d.ts.map +1 -0
  26. package/dist/core/containers/errors.js +48 -0
  27. package/dist/core/containers/errors.js.map +1 -0
  28. package/dist/core/containers/exec.d.ts +36 -0
  29. package/dist/core/containers/exec.d.ts.map +1 -0
  30. package/dist/core/containers/exec.js +110 -0
  31. package/dist/core/containers/exec.js.map +1 -0
  32. package/dist/core/containers/index.d.ts +21 -0
  33. package/dist/core/containers/index.d.ts.map +1 -0
  34. package/dist/core/containers/index.js +20 -0
  35. package/dist/core/containers/index.js.map +1 -0
  36. package/dist/core/containers/registries/ecr.d.ts +22 -0
  37. package/dist/core/containers/registries/ecr.d.ts.map +1 -0
  38. package/dist/core/containers/registries/ecr.js +118 -0
  39. package/dist/core/containers/registries/ecr.js.map +1 -0
  40. package/dist/core/containers/registries/index.d.ts +9 -0
  41. package/dist/core/containers/registries/index.d.ts.map +1 -0
  42. package/dist/core/containers/registries/index.js +23 -0
  43. package/dist/core/containers/registries/index.js.map +1 -0
  44. package/dist/core/containers/registries/orbstack.d.ts +14 -0
  45. package/dist/core/containers/registries/orbstack.d.ts.map +1 -0
  46. package/dist/core/containers/registries/orbstack.js +24 -0
  47. package/dist/core/containers/registries/orbstack.js.map +1 -0
  48. package/dist/core/containers/registries/types.d.ts +94 -0
  49. package/dist/core/containers/registries/types.d.ts.map +1 -0
  50. package/dist/core/containers/registries/types.js +11 -0
  51. package/dist/core/containers/registries/types.js.map +1 -0
  52. package/dist/core/dependencies/graph.d.ts +4 -0
  53. package/dist/core/dependencies/graph.d.ts.map +1 -1
  54. package/dist/core/dependencies/graph.js +6 -0
  55. package/dist/core/dependencies/graph.js.map +1 -1
  56. package/dist/core/dependencies/resolver.d.ts +28 -0
  57. package/dist/core/dependencies/resolver.d.ts.map +1 -1
  58. package/dist/core/dependencies/resolver.js +138 -5
  59. package/dist/core/dependencies/resolver.js.map +1 -1
  60. package/dist/core/deployment/direct-factory.d.ts +13 -0
  61. package/dist/core/deployment/direct-factory.d.ts.map +1 -1
  62. package/dist/core/deployment/direct-factory.js +99 -0
  63. package/dist/core/deployment/direct-factory.js.map +1 -1
  64. package/dist/core/deployment/engine.d.ts.map +1 -1
  65. package/dist/core/deployment/engine.js +45 -2
  66. package/dist/core/deployment/engine.js.map +1 -1
  67. package/dist/core/deployment/kro-factory.d.ts +28 -0
  68. package/dist/core/deployment/kro-factory.d.ts.map +1 -1
  69. package/dist/core/deployment/kro-factory.js +243 -13
  70. package/dist/core/deployment/kro-factory.js.map +1 -1
  71. package/dist/core/deployment/kro-readiness.d.ts.map +1 -1
  72. package/dist/core/deployment/kro-readiness.js +10 -1
  73. package/dist/core/deployment/kro-readiness.js.map +1 -1
  74. package/dist/core/deployment/nested-composition-status.d.ts +33 -0
  75. package/dist/core/deployment/nested-composition-status.d.ts.map +1 -0
  76. package/dist/core/deployment/nested-composition-status.js +101 -0
  77. package/dist/core/deployment/nested-composition-status.js.map +1 -0
  78. package/dist/core/deployment/readiness-waiter.d.ts.map +1 -1
  79. package/dist/core/deployment/readiness-waiter.js +23 -6
  80. package/dist/core/deployment/readiness-waiter.js.map +1 -1
  81. package/dist/core/deployment/rollback-manager.d.ts.map +1 -1
  82. package/dist/core/deployment/rollback-manager.js +19 -0
  83. package/dist/core/deployment/rollback-manager.js.map +1 -1
  84. package/dist/core/deployment/strategies/direct-strategy.d.ts +6 -0
  85. package/dist/core/deployment/strategies/direct-strategy.d.ts.map +1 -1
  86. package/dist/core/deployment/strategies/direct-strategy.js +133 -35
  87. package/dist/core/deployment/strategies/direct-strategy.js.map +1 -1
  88. package/dist/core/expressions/composition/composition-analyzer-helpers.d.ts +8 -2
  89. package/dist/core/expressions/composition/composition-analyzer-helpers.d.ts.map +1 -1
  90. package/dist/core/expressions/composition/composition-analyzer-helpers.js +34 -2
  91. package/dist/core/expressions/composition/composition-analyzer-helpers.js.map +1 -1
  92. package/dist/core/expressions/composition/composition-analyzer-ternary.d.ts.map +1 -1
  93. package/dist/core/expressions/composition/composition-analyzer-ternary.js +52 -28
  94. package/dist/core/expressions/composition/composition-analyzer-ternary.js.map +1 -1
  95. package/dist/core/expressions/composition/composition-analyzer-traversal.d.ts.map +1 -1
  96. package/dist/core/expressions/composition/composition-analyzer-traversal.js +11 -4
  97. package/dist/core/expressions/composition/composition-analyzer-traversal.js.map +1 -1
  98. package/dist/core/expressions/composition/composition-analyzer-types.d.ts +8 -0
  99. package/dist/core/expressions/composition/composition-analyzer-types.d.ts.map +1 -1
  100. package/dist/core/expressions/composition/composition-analyzer.d.ts +1 -1
  101. package/dist/core/expressions/composition/composition-analyzer.d.ts.map +1 -1
  102. package/dist/core/expressions/composition/composition-analyzer.js +8 -2
  103. package/dist/core/expressions/composition/composition-analyzer.js.map +1 -1
  104. package/dist/core/expressions/composition/imperative-analyzer.d.ts +8 -0
  105. package/dist/core/expressions/composition/imperative-analyzer.d.ts.map +1 -1
  106. package/dist/core/expressions/composition/imperative-analyzer.js +111 -16
  107. package/dist/core/expressions/composition/imperative-analyzer.js.map +1 -1
  108. package/dist/core/metadata/resource-metadata.d.ts +4 -0
  109. package/dist/core/metadata/resource-metadata.d.ts.map +1 -1
  110. package/dist/core/metadata/resource-metadata.js.map +1 -1
  111. package/dist/core/proxy/create-resource.d.ts.map +1 -1
  112. package/dist/core/proxy/create-resource.js +63 -21
  113. package/dist/core/proxy/create-resource.js.map +1 -1
  114. package/dist/core/references/cel.d.ts +48 -0
  115. package/dist/core/references/cel.d.ts.map +1 -1
  116. package/dist/core/references/cel.js +82 -0
  117. package/dist/core/references/cel.js.map +1 -1
  118. package/dist/core/references/external-refs.d.ts +2 -0
  119. package/dist/core/references/external-refs.d.ts.map +1 -1
  120. package/dist/core/references/external-refs.js +3 -0
  121. package/dist/core/references/external-refs.js.map +1 -1
  122. package/dist/core/references/resolver.d.ts +12 -4
  123. package/dist/core/references/resolver.d.ts.map +1 -1
  124. package/dist/core/references/resolver.js +152 -69
  125. package/dist/core/references/resolver.js.map +1 -1
  126. package/dist/core/references/schema-proxy.d.ts.map +1 -1
  127. package/dist/core/references/schema-proxy.js +5 -4
  128. package/dist/core/references/schema-proxy.js.map +1 -1
  129. package/dist/core/serialization/cel-references.d.ts +1 -1
  130. package/dist/core/serialization/cel-references.d.ts.map +1 -1
  131. package/dist/core/serialization/cel-references.js +191 -24
  132. package/dist/core/serialization/cel-references.js.map +1 -1
  133. package/dist/core/serialization/core.d.ts +8 -1
  134. package/dist/core/serialization/core.d.ts.map +1 -1
  135. package/dist/core/serialization/core.js +434 -7
  136. package/dist/core/serialization/core.js.map +1 -1
  137. package/dist/core/serialization/kro-post-processing.d.ts +46 -0
  138. package/dist/core/serialization/kro-post-processing.d.ts.map +1 -0
  139. package/dist/core/serialization/kro-post-processing.js +103 -0
  140. package/dist/core/serialization/kro-post-processing.js.map +1 -0
  141. package/dist/core/serialization/schema.d.ts +61 -3
  142. package/dist/core/serialization/schema.d.ts.map +1 -1
  143. package/dist/core/serialization/schema.js +520 -18
  144. package/dist/core/serialization/schema.js.map +1 -1
  145. package/dist/core/serialization/status-analysis-pipeline.d.ts +4 -0
  146. package/dist/core/serialization/status-analysis-pipeline.d.ts.map +1 -1
  147. package/dist/core/serialization/status-analysis-pipeline.js +127 -10
  148. package/dist/core/serialization/status-analysis-pipeline.js.map +1 -1
  149. package/dist/core/serialization/yaml.d.ts.map +1 -1
  150. package/dist/core/serialization/yaml.js +27 -4
  151. package/dist/core/serialization/yaml.js.map +1 -1
  152. package/dist/core/types/composable.d.ts +62 -0
  153. package/dist/core/types/composable.d.ts.map +1 -0
  154. package/dist/core/types/composable.js +51 -0
  155. package/dist/core/types/composable.js.map +1 -0
  156. package/dist/core/types/deployment.d.ts +2 -1
  157. package/dist/core/types/deployment.d.ts.map +1 -1
  158. package/dist/core/types/index.d.ts +1 -0
  159. package/dist/core/types/index.d.ts.map +1 -1
  160. package/dist/core/types/index.js +1 -0
  161. package/dist/core/types/index.js.map +1 -1
  162. package/dist/core/types/serialization.d.ts +40 -1
  163. package/dist/core/types/serialization.d.ts.map +1 -1
  164. package/dist/core/validation/cel-validator.d.ts.map +1 -1
  165. package/dist/core/validation/cel-validator.js +55 -31
  166. package/dist/core/validation/cel-validator.js.map +1 -1
  167. package/dist/factories/cnpg/compositions/cnpg-bootstrap.d.ts +55 -0
  168. package/dist/factories/cnpg/compositions/cnpg-bootstrap.d.ts.map +1 -0
  169. package/dist/factories/cnpg/compositions/cnpg-bootstrap.js +92 -0
  170. package/dist/factories/cnpg/compositions/cnpg-bootstrap.js.map +1 -0
  171. package/dist/factories/cnpg/compositions/index.d.ts +2 -0
  172. package/dist/factories/cnpg/compositions/index.d.ts.map +1 -0
  173. package/dist/factories/cnpg/compositions/index.js +2 -0
  174. package/dist/factories/cnpg/compositions/index.js.map +1 -0
  175. package/dist/factories/cnpg/index.d.ts +42 -0
  176. package/dist/factories/cnpg/index.d.ts.map +1 -0
  177. package/dist/factories/cnpg/index.js +42 -0
  178. package/dist/factories/cnpg/index.js.map +1 -0
  179. package/dist/factories/cnpg/resources/backup.d.ts +34 -0
  180. package/dist/factories/cnpg/resources/backup.d.ts.map +1 -0
  181. package/dist/factories/cnpg/resources/backup.js +87 -0
  182. package/dist/factories/cnpg/resources/backup.js.map +1 -0
  183. package/dist/factories/cnpg/resources/cluster.d.ts +55 -0
  184. package/dist/factories/cnpg/resources/cluster.d.ts.map +1 -0
  185. package/dist/factories/cnpg/resources/cluster.js +123 -0
  186. package/dist/factories/cnpg/resources/cluster.js.map +1 -0
  187. package/dist/factories/cnpg/resources/helm.d.ts +45 -0
  188. package/dist/factories/cnpg/resources/helm.d.ts.map +1 -0
  189. package/dist/factories/cnpg/resources/helm.js +78 -0
  190. package/dist/factories/cnpg/resources/helm.js.map +1 -0
  191. package/dist/factories/cnpg/resources/index.d.ts +6 -0
  192. package/dist/factories/cnpg/resources/index.d.ts.map +1 -0
  193. package/dist/factories/cnpg/resources/index.js +6 -0
  194. package/dist/factories/cnpg/resources/index.js.map +1 -0
  195. package/dist/factories/cnpg/resources/pooler.d.ts +38 -0
  196. package/dist/factories/cnpg/resources/pooler.d.ts.map +1 -0
  197. package/dist/factories/cnpg/resources/pooler.js +97 -0
  198. package/dist/factories/cnpg/resources/pooler.js.map +1 -0
  199. package/dist/factories/cnpg/resources/scheduled-backup.d.ts +35 -0
  200. package/dist/factories/cnpg/resources/scheduled-backup.d.ts.map +1 -0
  201. package/dist/factories/cnpg/resources/scheduled-backup.js +68 -0
  202. package/dist/factories/cnpg/resources/scheduled-backup.js.map +1 -0
  203. package/dist/factories/cnpg/types.d.ts +507 -0
  204. package/dist/factories/cnpg/types.d.ts.map +1 -0
  205. package/dist/factories/cnpg/types.js +398 -0
  206. package/dist/factories/cnpg/types.js.map +1 -0
  207. package/dist/factories/cnpg/utils/helm-values-mapper.d.ts +70 -0
  208. package/dist/factories/cnpg/utils/helm-values-mapper.d.ts.map +1 -0
  209. package/dist/factories/cnpg/utils/helm-values-mapper.js +79 -0
  210. package/dist/factories/cnpg/utils/helm-values-mapper.js.map +1 -0
  211. package/dist/factories/cnpg/utils/index.d.ts +2 -0
  212. package/dist/factories/cnpg/utils/index.d.ts.map +1 -0
  213. package/dist/factories/cnpg/utils/index.js +2 -0
  214. package/dist/factories/cnpg/utils/index.js.map +1 -0
  215. package/dist/factories/helm/helm-release.d.ts.map +1 -1
  216. package/dist/factories/helm/helm-release.js +4 -0
  217. package/dist/factories/helm/helm-release.js.map +1 -1
  218. package/dist/factories/helm/types.d.ts +2 -0
  219. package/dist/factories/helm/types.d.ts.map +1 -1
  220. package/dist/factories/inngest/compositions/index.d.ts +2 -0
  221. package/dist/factories/inngest/compositions/index.d.ts.map +1 -0
  222. package/dist/factories/inngest/compositions/index.js +2 -0
  223. package/dist/factories/inngest/compositions/index.js.map +1 -0
  224. package/dist/factories/inngest/compositions/inngest-bootstrap.d.ts +150 -0
  225. package/dist/factories/inngest/compositions/inngest-bootstrap.d.ts.map +1 -0
  226. package/dist/factories/inngest/compositions/inngest-bootstrap.js +90 -0
  227. package/dist/factories/inngest/compositions/inngest-bootstrap.js.map +1 -0
  228. package/dist/factories/inngest/index.d.ts +45 -0
  229. package/dist/factories/inngest/index.d.ts.map +1 -0
  230. package/dist/factories/inngest/index.js +45 -0
  231. package/dist/factories/inngest/index.js.map +1 -0
  232. package/dist/factories/inngest/resources/helm.d.ts +53 -0
  233. package/dist/factories/inngest/resources/helm.d.ts.map +1 -0
  234. package/dist/factories/inngest/resources/helm.js +88 -0
  235. package/dist/factories/inngest/resources/helm.js.map +1 -0
  236. package/dist/factories/inngest/resources/index.d.ts +2 -0
  237. package/dist/factories/inngest/resources/index.d.ts.map +1 -0
  238. package/dist/factories/inngest/resources/index.js +2 -0
  239. package/dist/factories/inngest/resources/index.js.map +1 -0
  240. package/dist/factories/inngest/types.d.ts +177 -0
  241. package/dist/factories/inngest/types.d.ts.map +1 -0
  242. package/dist/factories/inngest/types.js +189 -0
  243. package/dist/factories/inngest/types.js.map +1 -0
  244. package/dist/factories/inngest/utils/helm-values-mapper.d.ts +127 -0
  245. package/dist/factories/inngest/utils/helm-values-mapper.d.ts.map +1 -0
  246. package/dist/factories/inngest/utils/helm-values-mapper.js +116 -0
  247. package/dist/factories/inngest/utils/helm-values-mapper.js.map +1 -0
  248. package/dist/factories/inngest/utils/index.d.ts +2 -0
  249. package/dist/factories/inngest/utils/index.d.ts.map +1 -0
  250. package/dist/factories/inngest/utils/index.js +2 -0
  251. package/dist/factories/inngest/utils/index.js.map +1 -0
  252. package/dist/factories/kubernetes/config/secret.d.ts.map +1 -1
  253. package/dist/factories/kubernetes/config/secret.js +11 -1
  254. package/dist/factories/kubernetes/config/secret.js.map +1 -1
  255. package/dist/factories/kubernetes/core/namespace.d.ts.map +1 -1
  256. package/dist/factories/kubernetes/core/namespace.js +1 -1
  257. package/dist/factories/kubernetes/core/namespace.js.map +1 -1
  258. package/dist/factories/searxng/compositions/index.d.ts +2 -0
  259. package/dist/factories/searxng/compositions/index.d.ts.map +1 -0
  260. package/dist/factories/searxng/compositions/index.js +2 -0
  261. package/dist/factories/searxng/compositions/index.js.map +1 -0
  262. package/dist/factories/searxng/compositions/searxng-bootstrap.d.ts +65 -0
  263. package/dist/factories/searxng/compositions/searxng-bootstrap.d.ts.map +1 -0
  264. package/dist/factories/searxng/compositions/searxng-bootstrap.js +237 -0
  265. package/dist/factories/searxng/compositions/searxng-bootstrap.js.map +1 -0
  266. package/dist/factories/searxng/index.d.ts +29 -0
  267. package/dist/factories/searxng/index.d.ts.map +1 -0
  268. package/dist/factories/searxng/index.js +27 -0
  269. package/dist/factories/searxng/index.js.map +1 -0
  270. package/dist/factories/searxng/resources/index.d.ts +2 -0
  271. package/dist/factories/searxng/resources/index.d.ts.map +1 -0
  272. package/dist/factories/searxng/resources/index.js +2 -0
  273. package/dist/factories/searxng/resources/index.js.map +1 -0
  274. package/dist/factories/searxng/resources/searxng.d.ts +65 -0
  275. package/dist/factories/searxng/resources/searxng.d.ts.map +1 -0
  276. package/dist/factories/searxng/resources/searxng.js +188 -0
  277. package/dist/factories/searxng/resources/searxng.js.map +1 -0
  278. package/dist/factories/searxng/types.d.ts +126 -0
  279. package/dist/factories/searxng/types.d.ts.map +1 -0
  280. package/dist/factories/searxng/types.js +176 -0
  281. package/dist/factories/searxng/types.js.map +1 -0
  282. package/dist/factories/searxng/utils/settings-builder.d.ts +46 -0
  283. package/dist/factories/searxng/utils/settings-builder.d.ts.map +1 -0
  284. package/dist/factories/searxng/utils/settings-builder.js +52 -0
  285. package/dist/factories/searxng/utils/settings-builder.js.map +1 -0
  286. package/dist/factories/simple/config/secret.d.ts.map +1 -1
  287. package/dist/factories/simple/config/secret.js +28 -0
  288. package/dist/factories/simple/config/secret.js.map +1 -1
  289. package/dist/factories/valkey/compositions/index.d.ts +2 -0
  290. package/dist/factories/valkey/compositions/index.d.ts.map +1 -0
  291. package/dist/factories/valkey/compositions/index.js +2 -0
  292. package/dist/factories/valkey/compositions/index.js.map +1 -0
  293. package/dist/factories/valkey/compositions/valkey-bootstrap.d.ts +41 -0
  294. package/dist/factories/valkey/compositions/valkey-bootstrap.d.ts.map +1 -0
  295. package/dist/factories/valkey/compositions/valkey-bootstrap.js +105 -0
  296. package/dist/factories/valkey/compositions/valkey-bootstrap.js.map +1 -0
  297. package/dist/factories/valkey/index.d.ts +50 -0
  298. package/dist/factories/valkey/index.d.ts.map +1 -0
  299. package/dist/factories/valkey/index.js +50 -0
  300. package/dist/factories/valkey/index.js.map +1 -0
  301. package/dist/factories/valkey/resources/helm.d.ts +53 -0
  302. package/dist/factories/valkey/resources/helm.d.ts.map +1 -0
  303. package/dist/factories/valkey/resources/helm.js +82 -0
  304. package/dist/factories/valkey/resources/helm.js.map +1 -0
  305. package/dist/factories/valkey/resources/index.d.ts +3 -0
  306. package/dist/factories/valkey/resources/index.d.ts.map +1 -0
  307. package/dist/factories/valkey/resources/index.js +3 -0
  308. package/dist/factories/valkey/resources/index.js.map +1 -0
  309. package/dist/factories/valkey/resources/valkey.d.ts +46 -0
  310. package/dist/factories/valkey/resources/valkey.d.ts.map +1 -0
  311. package/dist/factories/valkey/resources/valkey.js +123 -0
  312. package/dist/factories/valkey/resources/valkey.js.map +1 -0
  313. package/dist/factories/valkey/types.d.ts +185 -0
  314. package/dist/factories/valkey/types.d.ts.map +1 -0
  315. package/dist/factories/valkey/types.js +204 -0
  316. package/dist/factories/valkey/types.js.map +1 -0
  317. package/dist/factories/valkey/utils/helm-values-mapper.d.ts +32 -0
  318. package/dist/factories/valkey/utils/helm-values-mapper.d.ts.map +1 -0
  319. package/dist/factories/valkey/utils/helm-values-mapper.js +58 -0
  320. package/dist/factories/valkey/utils/helm-values-mapper.js.map +1 -0
  321. package/dist/factories/valkey/utils/index.d.ts +2 -0
  322. package/dist/factories/valkey/utils/index.d.ts.map +1 -0
  323. package/dist/factories/valkey/utils/index.js +2 -0
  324. package/dist/factories/valkey/utils/index.js.map +1 -0
  325. package/dist/factories/webapp/compositions/index.d.ts +2 -0
  326. package/dist/factories/webapp/compositions/index.d.ts.map +1 -0
  327. package/dist/factories/webapp/compositions/index.js +2 -0
  328. package/dist/factories/webapp/compositions/index.js.map +1 -0
  329. package/dist/factories/webapp/compositions/web-app-with-processing.d.ts +97 -0
  330. package/dist/factories/webapp/compositions/web-app-with-processing.d.ts.map +1 -0
  331. package/dist/factories/webapp/compositions/web-app-with-processing.js +220 -0
  332. package/dist/factories/webapp/compositions/web-app-with-processing.js.map +1 -0
  333. package/dist/factories/webapp/index.d.ts +53 -0
  334. package/dist/factories/webapp/index.d.ts.map +1 -0
  335. package/dist/factories/webapp/index.js +53 -0
  336. package/dist/factories/webapp/index.js.map +1 -0
  337. package/dist/factories/webapp/types.d.ts +69 -0
  338. package/dist/factories/webapp/types.d.ts.map +1 -0
  339. package/dist/factories/webapp/types.js +92 -0
  340. package/dist/factories/webapp/types.js.map +1 -0
  341. package/dist/shared/brands.d.ts +16 -0
  342. package/dist/shared/brands.d.ts.map +1 -1
  343. package/dist/shared/brands.js +16 -0
  344. package/dist/shared/brands.js.map +1 -1
  345. package/package.json +29 -1
@@ -0,0 +1,97 @@
1
+ /**
2
+ * Full-Stack Web Application with Background Processing
3
+ *
4
+ * Deploys a complete application stack:
5
+ * 1. **PostgreSQL** (via CNPG) — cluster + PgBouncer pooler
6
+ * 2. **Valkey** cache cluster
7
+ * 3. **Inngest** workflow engine (with external DB/cache, not bundled)
8
+ * 4. **Application** Deployment + Service
9
+ *
10
+ * All connection strings are automatically wired into the app's environment:
11
+ * - `DATABASE_URL` — points to the PgBouncer pooler
12
+ * - `VALKEY_URL` / `REDIS_URL` — points to the Valkey service
13
+ * - `INNGEST_BASE_URL` — points to the Inngest server
14
+ * - `INNGEST_EVENT_KEY` / `INNGEST_SIGNING_KEY` — from config
15
+ *
16
+ * Resource dependencies are expressed through proxy references:
17
+ * - Inngest references `cache.metadata.name` for the redis URI → deploys after Valkey
18
+ * - Inngest references `database.status.writeService` for the postgres URI → deploys after CNPG
19
+ * - App references service names derived from resource names → deploys after all infra
20
+ *
21
+ * @example
22
+ * ```typescript
23
+ * import { webAppWithProcessing } from 'typekro/webapp';
24
+ *
25
+ * const factory = webAppWithProcessing.factory('kro', {
26
+ * namespace: 'production',
27
+ * waitForReady: true,
28
+ * });
29
+ *
30
+ * await factory.deploy({
31
+ * name: 'my-app',
32
+ * namespace: 'production',
33
+ * app: {
34
+ * image: 'my-app:latest',
35
+ * port: 3000,
36
+ * replicas: 2,
37
+ * env: {
38
+ * NODE_ENV: 'production',
39
+ * },
40
+ * },
41
+ * database: {
42
+ * instances: 3,
43
+ * storageSize: '50Gi',
44
+ * storageClass: 'gp3',
45
+ * database: 'myapp',
46
+ * },
47
+ * cache: { shards: 3, replicas: 1 },
48
+ * processing: {
49
+ * eventKey: 'deadbeef0123456789abcdef01234567',
50
+ * signingKey: 'deadbeef0123456789abcdef0123456789abcdef0123456789abcdef01234567',
51
+ * sdkUrl: ['http://my-app:3000/api/inngest'],
52
+ * },
53
+ * });
54
+ * ```
55
+ */
56
+ export declare const webAppWithProcessing: import("../../../index.js").CallableComposition<{
57
+ name: string;
58
+ app: {
59
+ image: string;
60
+ port?: number;
61
+ replicas?: number;
62
+ env?: Record<string, string>;
63
+ };
64
+ database: {
65
+ storageSize: string;
66
+ instances?: number;
67
+ storageClass?: string;
68
+ database?: string;
69
+ owner?: string;
70
+ };
71
+ processing: {
72
+ eventKey: string;
73
+ signingKey: string;
74
+ sdkUrl?: string[];
75
+ replicas?: number;
76
+ };
77
+ namespace?: string;
78
+ cache?: {
79
+ shards?: number;
80
+ replicas?: number;
81
+ volumePermissions?: boolean;
82
+ storageSize?: string;
83
+ };
84
+ }, {
85
+ ready: boolean;
86
+ databaseUrl: string;
87
+ cacheUrl: string;
88
+ inngestUrl: string;
89
+ appUrl: string;
90
+ components: {
91
+ app: boolean;
92
+ database: boolean;
93
+ cache: boolean;
94
+ inngest: boolean;
95
+ };
96
+ }>;
97
+ //# sourceMappingURL=web-app-with-processing.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"web-app-with-processing.d.ts","sourceRoot":"","sources":["../../../../src/factories/webapp/compositions/web-app-with-processing.ts"],"names":[],"mappings":"AAYA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsDG;AACH,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAgLhC,CAAC"}
@@ -0,0 +1,220 @@
1
+ import { kubernetesComposition } from '../../../core/composition/imperative.js';
2
+ import { cluster } from '../../cnpg/resources/cluster.js';
3
+ import { pooler } from '../../cnpg/resources/pooler.js';
4
+ import { inngestBootstrap } from '../../inngest/compositions/inngest-bootstrap.js';
5
+ import { simple } from '../../simple/index.js';
6
+ import { valkey } from '../../valkey/resources/valkey.js';
7
+ import { WebAppWithProcessingConfigSchema, WebAppWithProcessingStatusSchema, } from '../types.js';
8
+ /**
9
+ * Full-Stack Web Application with Background Processing
10
+ *
11
+ * Deploys a complete application stack:
12
+ * 1. **PostgreSQL** (via CNPG) — cluster + PgBouncer pooler
13
+ * 2. **Valkey** cache cluster
14
+ * 3. **Inngest** workflow engine (with external DB/cache, not bundled)
15
+ * 4. **Application** Deployment + Service
16
+ *
17
+ * All connection strings are automatically wired into the app's environment:
18
+ * - `DATABASE_URL` — points to the PgBouncer pooler
19
+ * - `VALKEY_URL` / `REDIS_URL` — points to the Valkey service
20
+ * - `INNGEST_BASE_URL` — points to the Inngest server
21
+ * - `INNGEST_EVENT_KEY` / `INNGEST_SIGNING_KEY` — from config
22
+ *
23
+ * Resource dependencies are expressed through proxy references:
24
+ * - Inngest references `cache.metadata.name` for the redis URI → deploys after Valkey
25
+ * - Inngest references `database.status.writeService` for the postgres URI → deploys after CNPG
26
+ * - App references service names derived from resource names → deploys after all infra
27
+ *
28
+ * @example
29
+ * ```typescript
30
+ * import { webAppWithProcessing } from 'typekro/webapp';
31
+ *
32
+ * const factory = webAppWithProcessing.factory('kro', {
33
+ * namespace: 'production',
34
+ * waitForReady: true,
35
+ * });
36
+ *
37
+ * await factory.deploy({
38
+ * name: 'my-app',
39
+ * namespace: 'production',
40
+ * app: {
41
+ * image: 'my-app:latest',
42
+ * port: 3000,
43
+ * replicas: 2,
44
+ * env: {
45
+ * NODE_ENV: 'production',
46
+ * },
47
+ * },
48
+ * database: {
49
+ * instances: 3,
50
+ * storageSize: '50Gi',
51
+ * storageClass: 'gp3',
52
+ * database: 'myapp',
53
+ * },
54
+ * cache: { shards: 3, replicas: 1 },
55
+ * processing: {
56
+ * eventKey: 'deadbeef0123456789abcdef01234567',
57
+ * signingKey: 'deadbeef0123456789abcdef0123456789abcdef0123456789abcdef01234567',
58
+ * sdkUrl: ['http://my-app:3000/api/inngest'],
59
+ * },
60
+ * });
61
+ * ```
62
+ */
63
+ export const webAppWithProcessing = kubernetesComposition({
64
+ name: 'web-app-with-processing',
65
+ kind: 'WebAppWithProcessing',
66
+ spec: WebAppWithProcessingConfigSchema,
67
+ status: WebAppWithProcessingStatusSchema,
68
+ }, (spec) => {
69
+ const ns = spec.namespace ?? 'default';
70
+ const appPort = spec.app.port ?? 3000;
71
+ const appReplicas = spec.app.replicas ?? 1;
72
+ const inngestReplicas = spec.processing.replicas ?? 1;
73
+ const dbName = spec.database.database ?? spec.name;
74
+ const dbOwner = spec.database.owner ?? 'app';
75
+ // ── PostgreSQL (CNPG) ──────────────────────────────────────────────
76
+ const database = cluster({
77
+ name: `${spec.name}-db`,
78
+ namespace: ns,
79
+ spec: {
80
+ instances: spec.database.instances,
81
+ storage: {
82
+ size: spec.database.storageSize,
83
+ ...(spec.database.storageClass ? { storageClass: spec.database.storageClass } : {}),
84
+ },
85
+ bootstrap: {
86
+ initdb: { database: dbName, owner: dbOwner },
87
+ },
88
+ },
89
+ id: 'database',
90
+ });
91
+ const dbPooler = pooler({
92
+ name: `${spec.name}-db-pooler`,
93
+ namespace: ns,
94
+ spec: {
95
+ cluster: { name: `${spec.name}-db` },
96
+ type: 'rw',
97
+ pgbouncer: { poolMode: 'transaction' },
98
+ },
99
+ id: 'dbPooler',
100
+ });
101
+ // ── Valkey Cache ────────────────────────────────────────────────────
102
+ const cache = valkey({
103
+ name: `${spec.name}-cache`,
104
+ namespace: ns,
105
+ spec: {
106
+ volumePermissions: spec.cache?.volumePermissions ?? true,
107
+ anonymousAuth: true,
108
+ ...(spec.cache?.shards != null ? { shards: spec.cache.shards } : {}),
109
+ ...(spec.cache?.replicas != null ? { replicas: spec.cache.replicas } : {}),
110
+ storage: {
111
+ spec: {
112
+ accessModes: ['ReadWriteOnce'],
113
+ resources: { requests: { storage: spec.cache?.storageSize ?? '1Gi' } },
114
+ },
115
+ },
116
+ },
117
+ id: 'cache',
118
+ });
119
+ // The Valkey operator creates a client Service for each Valkey CR, but KRO's
120
+ // applyset pruning deletes Services it doesn't manage. Declare the cache
121
+ // Service explicitly so KRO includes it in its applyset and doesn't prune it.
122
+ simple.Service({
123
+ name: `${spec.name}-cache`,
124
+ namespace: ns,
125
+ selector: {
126
+ 'app.kubernetes.io/name': 'valkey',
127
+ 'app.kubernetes.io/instance': `${spec.name}-cache`,
128
+ },
129
+ ports: [{ port: 6379, targetPort: 6379 }],
130
+ id: 'cacheService',
131
+ });
132
+ // ── Database credentials ──────────────────────────────────────────────
133
+ // CNPG auto-generates a Secret named {cluster}-{owner} during bootstrap.
134
+ // Validated against CNPG v1.25 (cloudnative-pg chart 0.23.0).
135
+ // The name is deterministic — no need for an externalRef which would block
136
+ // KRO reconciliation (KRO waits for external refs to exist before creating
137
+ // dependent resources, but the Secret only exists after CNPG bootstraps).
138
+ const dbSecretName = `${spec.name}-db-${dbOwner}`;
139
+ // ── Inngest (with external DB + cache) ──────────────────────────────
140
+ // database.status.writeService creates an implicit deployment dependency:
141
+ // the dependency resolver detects the reference and adds a DAG edge,
142
+ // ensuring the database is ready BEFORE Inngest deploys. The actual
143
+ // postgres credentials are injected via the CNPG Secret (secretKeyRef below).
144
+ const inngest = inngestBootstrap({
145
+ name: `${spec.name}-inngest`,
146
+ namespace: ns,
147
+ inngest: {
148
+ eventKey: spec.processing.eventKey,
149
+ signingKey: spec.processing.signingKey,
150
+ postgres: { uri: `postgresql://${dbOwner}@${database.status.writeService}:5432/${dbName}` },
151
+ redis: { uri: `redis://${cache.metadata.name}:6379` },
152
+ sdkUrl: spec.processing.sdkUrl,
153
+ },
154
+ postgresql: { enabled: false },
155
+ redis: { enabled: false },
156
+ replicaCount: inngestReplicas,
157
+ // Deploy Inngest pods in the same namespace as CNPG (for Secret access)
158
+ // and inject the real postgres URI from the CNPG Secret via secretKeyRef.
159
+ customValues: {
160
+ namespace: { create: false, name: ns },
161
+ inngest: {
162
+ extraEnv: [
163
+ {
164
+ name: 'INNGEST_POSTGRES_URI',
165
+ valueFrom: {
166
+ secretKeyRef: {
167
+ name: dbSecretName,
168
+ key: 'uri',
169
+ },
170
+ },
171
+ },
172
+ ],
173
+ },
174
+ },
175
+ });
176
+ // ── Application ─────────────────────────────────────────────────────
177
+ const appEnv = {
178
+ DATABASE_URL: `postgresql://${dbOwner}@${dbPooler.metadata.name}:5432/${dbName}`,
179
+ VALKEY_URL: `redis://${cache.metadata.name}:6379`,
180
+ REDIS_URL: `redis://${cache.metadata.name}:6379`,
181
+ INNGEST_BASE_URL: `http://${spec.name}-inngest:8288`,
182
+ INNGEST_EVENT_KEY: spec.processing.eventKey,
183
+ INNGEST_SIGNING_KEY: spec.processing.signingKey,
184
+ ...spec.app.env,
185
+ };
186
+ const app = simple.Deployment({
187
+ name: spec.name,
188
+ namespace: ns,
189
+ image: spec.app.image,
190
+ replicas: appReplicas,
191
+ ports: [{ containerPort: appPort }],
192
+ env: appEnv,
193
+ id: 'app',
194
+ });
195
+ simple.Service({
196
+ name: spec.name,
197
+ namespace: ns,
198
+ selector: { app: spec.name },
199
+ ports: [{ port: appPort, targetPort: appPort }],
200
+ id: 'appService',
201
+ });
202
+ // ── Status ──────────────────────────────────────────────────────────
203
+ return {
204
+ ready: app.status.readyReplicas >= appReplicas &&
205
+ database.status.readyInstances >= (spec.database.instances ?? 1) &&
206
+ cache.status.ready &&
207
+ inngest.status.ready,
208
+ databaseUrl: `postgresql://${dbOwner}@${dbPooler.metadata.name}:5432/${dbName}`,
209
+ cacheUrl: `redis://${cache.metadata.name}:6379`,
210
+ inngestUrl: `http://${spec.name}-inngest:8288`,
211
+ appUrl: `http://${spec.name}:${appPort}`,
212
+ components: {
213
+ app: app.status.readyReplicas >= appReplicas,
214
+ database: database.status.readyInstances >= (spec.database.instances ?? 1),
215
+ cache: cache.status.ready,
216
+ inngest: inngest.status.ready,
217
+ },
218
+ };
219
+ });
220
+ //# sourceMappingURL=web-app-with-processing.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"web-app-with-processing.js","sourceRoot":"","sources":["../../../../src/factories/webapp/compositions/web-app-with-processing.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,53 @@
1
+ /**
2
+ * Web Application Compositions for TypeKro
3
+ *
4
+ * Higher-level compositions that wire together databases, caches,
5
+ * workflow engines, and application deployments with automatic
6
+ * environment variable injection.
7
+ *
8
+ * ## Compositions
9
+ * - `webAppWithProcessing` — Full-stack: App + CNPG PostgreSQL + Valkey + Inngest
10
+ *
11
+ * All connection URLs (DATABASE_URL, VALKEY_URL, INNGEST_BASE_URL) are
12
+ * automatically injected into the application's environment. The status
13
+ * exposes these URLs for debugging or wiring additional services.
14
+ *
15
+ * ## Prerequisites
16
+ * The following operators must be installed in the cluster:
17
+ * - CloudNativePG operator (`typekro/cnpg` bootstrap)
18
+ * - Hyperspike Valkey operator (`typekro/valkey` bootstrap)
19
+ * - Flux CD (for Inngest HelmRelease)
20
+ *
21
+ * @example
22
+ * ```typescript
23
+ * import { webAppWithProcessing } from 'typekro/webapp';
24
+ *
25
+ * const factory = webAppWithProcessing.factory('kro', {
26
+ * namespace: 'production',
27
+ * });
28
+ *
29
+ * const instance = await factory.deploy({
30
+ * name: 'my-app',
31
+ * namespace: 'production',
32
+ * app: { image: 'my-app:latest', port: 3000 },
33
+ * database: { storageSize: '50Gi', database: 'mydb' },
34
+ * processing: {
35
+ * eventKey: 'deadbeef...',
36
+ * signingKey: 'deadbeef...',
37
+ * },
38
+ * });
39
+ *
40
+ * // Connection details available on status
41
+ * console.log(instance.status.databaseUrl);
42
+ * console.log(instance.status.cacheUrl);
43
+ * console.log(instance.status.inngestUrl);
44
+ * ```
45
+ *
46
+ * @see https://typekro.run/api/cnpg/ — PostgreSQL integration
47
+ * @see https://typekro.run/api/valkey/ — Valkey integration
48
+ * @see https://typekro.run/api/inngest/ — Inngest integration
49
+ * @module
50
+ */
51
+ export * from './compositions/index.js';
52
+ export * from './types.js';
53
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/factories/webapp/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiDG;AACH,cAAc,yBAAyB,CAAC;AACxC,cAAc,YAAY,CAAC"}
@@ -0,0 +1,53 @@
1
+ /**
2
+ * Web Application Compositions for TypeKro
3
+ *
4
+ * Higher-level compositions that wire together databases, caches,
5
+ * workflow engines, and application deployments with automatic
6
+ * environment variable injection.
7
+ *
8
+ * ## Compositions
9
+ * - `webAppWithProcessing` — Full-stack: App + CNPG PostgreSQL + Valkey + Inngest
10
+ *
11
+ * All connection URLs (DATABASE_URL, VALKEY_URL, INNGEST_BASE_URL) are
12
+ * automatically injected into the application's environment. The status
13
+ * exposes these URLs for debugging or wiring additional services.
14
+ *
15
+ * ## Prerequisites
16
+ * The following operators must be installed in the cluster:
17
+ * - CloudNativePG operator (`typekro/cnpg` bootstrap)
18
+ * - Hyperspike Valkey operator (`typekro/valkey` bootstrap)
19
+ * - Flux CD (for Inngest HelmRelease)
20
+ *
21
+ * @example
22
+ * ```typescript
23
+ * import { webAppWithProcessing } from 'typekro/webapp';
24
+ *
25
+ * const factory = webAppWithProcessing.factory('kro', {
26
+ * namespace: 'production',
27
+ * });
28
+ *
29
+ * const instance = await factory.deploy({
30
+ * name: 'my-app',
31
+ * namespace: 'production',
32
+ * app: { image: 'my-app:latest', port: 3000 },
33
+ * database: { storageSize: '50Gi', database: 'mydb' },
34
+ * processing: {
35
+ * eventKey: 'deadbeef...',
36
+ * signingKey: 'deadbeef...',
37
+ * },
38
+ * });
39
+ *
40
+ * // Connection details available on status
41
+ * console.log(instance.status.databaseUrl);
42
+ * console.log(instance.status.cacheUrl);
43
+ * console.log(instance.status.inngestUrl);
44
+ * ```
45
+ *
46
+ * @see https://typekro.run/api/cnpg/ — PostgreSQL integration
47
+ * @see https://typekro.run/api/valkey/ — Valkey integration
48
+ * @see https://typekro.run/api/inngest/ — Inngest integration
49
+ * @module
50
+ */
51
+ export * from './compositions/index.js';
52
+ export * from './types.js';
53
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/factories/webapp/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiDG;AACH,cAAc,yBAAyB,CAAC;AACxC,cAAc,YAAY,CAAC"}
@@ -0,0 +1,69 @@
1
+ /**
2
+ * Web Application Composition Types
3
+ *
4
+ * Higher-level compositions that wire together CNPG, Valkey, Inngest,
5
+ * and application deployments with automatic environment variable injection.
6
+ *
7
+ * All config types are inferred from ArkType schemas — the schema is the
8
+ * single source of truth. Status types remain as interfaces since they
9
+ * represent k8s API responses, not validated input.
10
+ *
11
+ * @module
12
+ */
13
+ /**
14
+ * Full-stack web application with background processing.
15
+ *
16
+ * Deploys: App + CNPG PostgreSQL + Valkey cache + Inngest workflow engine.
17
+ * All connection strings are automatically wired into the app's environment.
18
+ */
19
+ export declare const WebAppWithProcessingConfigSchema: import("arktype/internal/methods/object.ts").ObjectType<{
20
+ name: string;
21
+ app: {
22
+ image: string;
23
+ port?: number;
24
+ replicas?: number;
25
+ env?: Record<string, string>;
26
+ };
27
+ database: {
28
+ storageSize: string;
29
+ instances?: number;
30
+ storageClass?: string;
31
+ database?: string;
32
+ owner?: string;
33
+ };
34
+ processing: {
35
+ eventKey: string;
36
+ signingKey: string;
37
+ sdkUrl?: string[];
38
+ replicas?: number;
39
+ };
40
+ namespace?: string;
41
+ cache?: {
42
+ shards?: number;
43
+ replicas?: number;
44
+ volumePermissions?: boolean;
45
+ storageSize?: string;
46
+ };
47
+ }, {}>;
48
+ /** Inferred config type — no separate interface needed. */
49
+ export type WebAppWithProcessingConfig = typeof WebAppWithProcessingConfigSchema.infer;
50
+ /**
51
+ * Status schema for the full-stack web application deployment.
52
+ * Exposes connection URLs and readiness for each component.
53
+ */
54
+ export declare const WebAppWithProcessingStatusSchema: import("arktype/internal/methods/object.ts").ObjectType<{
55
+ ready: boolean;
56
+ databaseUrl: string;
57
+ cacheUrl: string;
58
+ inngestUrl: string;
59
+ appUrl: string;
60
+ components: {
61
+ app: boolean;
62
+ database: boolean;
63
+ cache: boolean;
64
+ inngest: boolean;
65
+ };
66
+ }, {}>;
67
+ /** Inferred status type. */
68
+ export type WebAppWithProcessingStatus = typeof WebAppWithProcessingStatusSchema.infer;
69
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/factories/webapp/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAQH;;;;;GAKG;AACH,eAAO,MAAM,gCAAgC;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAmD3C,CAAC;AAEH,2DAA2D;AAC3D,MAAM,MAAM,0BAA0B,GAAG,OAAO,gCAAgC,CAAC,KAAK,CAAC;AAEvF;;;GAGG;AACH,eAAO,MAAM,gCAAgC;;;;;;;;;;;;MAY3C,CAAC;AAEH,4BAA4B;AAC5B,MAAM,MAAM,0BAA0B,GAAG,OAAO,gCAAgC,CAAC,KAAK,CAAC"}
@@ -0,0 +1,92 @@
1
+ /**
2
+ * Web Application Composition Types
3
+ *
4
+ * Higher-level compositions that wire together CNPG, Valkey, Inngest,
5
+ * and application deployments with automatic environment variable injection.
6
+ *
7
+ * All config types are inferred from ArkType schemas — the schema is the
8
+ * single source of truth. Status types remain as interfaces since they
9
+ * represent k8s API responses, not validated input.
10
+ *
11
+ * @module
12
+ */
13
+ import { type } from 'arktype';
14
+ // ============================================================================
15
+ // Config Schemas (source of truth) + Inferred Types
16
+ // ============================================================================
17
+ /**
18
+ * Full-stack web application with background processing.
19
+ *
20
+ * Deploys: App + CNPG PostgreSQL + Valkey cache + Inngest workflow engine.
21
+ * All connection strings are automatically wired into the app's environment.
22
+ */
23
+ export const WebAppWithProcessingConfigSchema = type({
24
+ /** Application name (used as prefix for all resources). */
25
+ name: 'string',
26
+ /** Target namespace. */
27
+ 'namespace?': 'string',
28
+ /** Application deployment settings. */
29
+ app: {
30
+ /** Container image (e.g., 'myapp:latest'). */
31
+ image: 'string',
32
+ /** Container port (default: 3000). */
33
+ 'port?': 'number',
34
+ /** Number of replicas (default: 1). */
35
+ 'replicas?': 'number',
36
+ /** Additional environment variables. */
37
+ 'env?': 'Record<string, string>',
38
+ },
39
+ /** PostgreSQL database settings. */
40
+ database: {
41
+ /** Number of PostgreSQL instances (default: 1). */
42
+ 'instances?': 'number',
43
+ /** Storage size (e.g., '10Gi', '50Gi'). */
44
+ storageSize: 'string',
45
+ /** Storage class name (e.g. 'gp3', 'local-path'). */
46
+ 'storageClass?': 'string',
47
+ /** Database name to create (default: derived from app name). */
48
+ 'database?': 'string',
49
+ /** Database owner (default: 'app'). */
50
+ 'owner?': 'string',
51
+ },
52
+ /** Valkey cache settings. Always deployed (omitting uses defaults, does not skip cache). */
53
+ 'cache?': {
54
+ /** Number of Valkey shards (default: 3). */
55
+ 'shards?': 'number',
56
+ /** Replicas per shard (default: 0). */
57
+ 'replicas?': 'number',
58
+ /** Enable volume permissions init container. */
59
+ 'volumePermissions?': 'boolean',
60
+ /** Storage size per shard (default: '1Gi'). */
61
+ 'storageSize?': 'string',
62
+ },
63
+ /** Inngest background processing settings. */
64
+ processing: {
65
+ /** Inngest event authentication key (hex string, required). */
66
+ eventKey: 'string',
67
+ /** Inngest request signing key (hex string, required). */
68
+ signingKey: 'string',
69
+ /** SDK URLs to auto-sync functions from. */
70
+ 'sdkUrl?': 'string[]',
71
+ /** Number of Inngest server replicas (default: 1). */
72
+ 'replicas?': 'number',
73
+ },
74
+ });
75
+ /**
76
+ * Status schema for the full-stack web application deployment.
77
+ * Exposes connection URLs and readiness for each component.
78
+ */
79
+ export const WebAppWithProcessingStatusSchema = type({
80
+ ready: 'boolean',
81
+ databaseUrl: 'string',
82
+ cacheUrl: 'string',
83
+ inngestUrl: 'string',
84
+ appUrl: 'string',
85
+ components: {
86
+ app: 'boolean',
87
+ database: 'boolean',
88
+ cache: 'boolean',
89
+ inngest: 'boolean',
90
+ },
91
+ });
92
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/factories/webapp/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AAE/B,+EAA+E;AAC/E,oDAAoD;AACpD,+EAA+E;AAE/E;;;;;GAKG;AACH,MAAM,CAAC,MAAM,gCAAgC,GAAG,IAAI,CAAC;IACnD,2DAA2D;IAC3D,IAAI,EAAE,QAAQ;IACd,wBAAwB;IACxB,YAAY,EAAE,QAAQ;IACtB,uCAAuC;IACvC,GAAG,EAAE;QACH,8CAA8C;QAC9C,KAAK,EAAE,QAAQ;QACf,sCAAsC;QACtC,OAAO,EAAE,QAAQ;QACjB,uCAAuC;QACvC,WAAW,EAAE,QAAQ;QACrB,wCAAwC;QACxC,MAAM,EAAE,wBAAwB;KACjC;IACD,oCAAoC;IACpC,QAAQ,EAAE;QACR,mDAAmD;QACnD,YAAY,EAAE,QAAQ;QACtB,2CAA2C;QAC3C,WAAW,EAAE,QAAQ;QACrB,qDAAqD;QACrD,eAAe,EAAE,QAAQ;QACzB,gEAAgE;QAChE,WAAW,EAAE,QAAQ;QACrB,uCAAuC;QACvC,QAAQ,EAAE,QAAQ;KACnB;IACD,4FAA4F;IAC5F,QAAQ,EAAE;QACR,4CAA4C;QAC5C,SAAS,EAAE,QAAQ;QACnB,uCAAuC;QACvC,WAAW,EAAE,QAAQ;QACrB,gDAAgD;QAChD,oBAAoB,EAAE,SAAS;QAC/B,+CAA+C;QAC/C,cAAc,EAAE,QAAQ;KACzB;IACD,8CAA8C;IAC9C,UAAU,EAAE;QACV,+DAA+D;QAC/D,QAAQ,EAAE,QAAQ;QAClB,0DAA0D;QAC1D,UAAU,EAAE,QAAQ;QACpB,4CAA4C;QAC5C,SAAS,EAAE,UAAU;QACrB,sDAAsD;QACtD,WAAW,EAAE,QAAQ;KACtB;CACF,CAAC,CAAC;AAKH;;;GAGG;AACH,MAAM,CAAC,MAAM,gCAAgC,GAAG,IAAI,CAAC;IACnD,KAAK,EAAE,SAAS;IAChB,WAAW,EAAE,QAAQ;IACrB,QAAQ,EAAE,QAAQ;IAClB,UAAU,EAAE,QAAQ;IACpB,MAAM,EAAE,QAAQ;IAChB,UAAU,EAAE;QACV,GAAG,EAAE,SAAS;QACd,QAAQ,EAAE,SAAS;QACnB,KAAK,EAAE,SAAS;QAChB,OAAO,EAAE,SAAS;KACnB;CACF,CAAC,CAAC"}
@@ -29,4 +29,20 @@ export declare const NESTED_COMPOSITION_BRAND: unique symbol;
29
29
  * Brand symbol for CallableComposition objects
30
30
  */
31
31
  export declare const CALLABLE_COMPOSITION_BRAND: unique symbol;
32
+ /**
33
+ * Regex pattern for matching __KUBERNETES_REF__ marker strings in values.
34
+ *
35
+ * Format: __KUBERNETES_REF_{resourceId}_{fieldPath}__
36
+ * - resourceId: camelCase with optional hyphens/digits (e.g., 'database', 'inngestBootstrap1')
37
+ * Hyphens are allowed for backward compatibility with older ID formats, though
38
+ * current convention enforces camelCase (toCamelCase in executeNestedCompositionWithSpec).
39
+ * - fieldPath: dot-separated path with optional $ for iteration (e.g., 'status.ready', 'spec.workers.$item.name')
40
+ * - Excludes __schema__ refs via negative lookahead
41
+ *
42
+ * This pattern is the single source of truth — all marker detection/resolution
43
+ * code must use this constant to stay in sync. Callers must create their own
44
+ * RegExp via `new RegExp(KUBERNETES_REF_MARKER_PATTERN.source, 'g')` to avoid
45
+ * stateful lastIndex issues with the global flag.
46
+ */
47
+ export declare const KUBERNETES_REF_MARKER_PATTERN: RegExp;
32
48
  //# sourceMappingURL=brands.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"brands.d.ts","sourceRoot":"","sources":["../../src/shared/brands.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH;;GAEG;AACH,eAAO,MAAM,oBAAoB,eAAsC,CAAC;AAExE;;GAEG;AACH,eAAO,MAAM,oBAAoB,eAAsC,CAAC;AAExE;;GAEG;AACH,eAAO,MAAM,oBAAoB,eAAsC,CAAC;AAExE;;GAEG;AACH,eAAO,MAAM,wBAAwB,eAA0C,CAAC;AAEhF;;GAEG;AACH,eAAO,MAAM,0BAA0B,eAA4C,CAAC"}
1
+ {"version":3,"file":"brands.d.ts","sourceRoot":"","sources":["../../src/shared/brands.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH;;GAEG;AACH,eAAO,MAAM,oBAAoB,eAAsC,CAAC;AAExE;;GAEG;AACH,eAAO,MAAM,oBAAoB,eAAsC,CAAC;AAExE;;GAEG;AACH,eAAO,MAAM,oBAAoB,eAAsC,CAAC;AAExE;;GAEG;AACH,eAAO,MAAM,wBAAwB,eAA0C,CAAC;AAEhF;;GAEG;AACH,eAAO,MAAM,0BAA0B,eAA4C,CAAC;AAEpF;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,6BAA6B,QAAyE,CAAC"}
@@ -29,4 +29,20 @@ export const NESTED_COMPOSITION_BRAND = Symbol.for('TypeKro.NestedComposition');
29
29
  * Brand symbol for CallableComposition objects
30
30
  */
31
31
  export const CALLABLE_COMPOSITION_BRAND = Symbol.for('TypeKro.CallableComposition');
32
+ /**
33
+ * Regex pattern for matching __KUBERNETES_REF__ marker strings in values.
34
+ *
35
+ * Format: __KUBERNETES_REF_{resourceId}_{fieldPath}__
36
+ * - resourceId: camelCase with optional hyphens/digits (e.g., 'database', 'inngestBootstrap1')
37
+ * Hyphens are allowed for backward compatibility with older ID formats, though
38
+ * current convention enforces camelCase (toCamelCase in executeNestedCompositionWithSpec).
39
+ * - fieldPath: dot-separated path with optional $ for iteration (e.g., 'status.ready', 'spec.workers.$item.name')
40
+ * - Excludes __schema__ refs via negative lookahead
41
+ *
42
+ * This pattern is the single source of truth — all marker detection/resolution
43
+ * code must use this constant to stay in sync. Callers must create their own
44
+ * RegExp via `new RegExp(KUBERNETES_REF_MARKER_PATTERN.source, 'g')` to avoid
45
+ * stateful lastIndex issues with the global flag.
46
+ */
47
+ export const KUBERNETES_REF_MARKER_PATTERN = /(?:__KUBERNETES_REF_)(?!_schema__)([a-zA-Z0-9-]+)_([a-zA-Z0-9.$]+)__/;
32
48
  //# sourceMappingURL=brands.js.map