k8ts 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (385) hide show
  1. package/LICENSE.md +7 -0
  2. package/README.md +3 -0
  3. package/dist/.imports.tsbuildinfo +1 -0
  4. package/dist/_imports/_mix.d.ts +4 -0
  5. package/dist/_imports/_mix.d.ts.map +1 -0
  6. package/dist/_imports/_mix.js +20 -0
  7. package/dist/_imports/_mix.js.map +1 -0
  8. package/dist/_imports/acme.cert-manager.io.d.ts +4832 -0
  9. package/dist/_imports/acme.cert-manager.io.d.ts.map +1 -0
  10. package/dist/_imports/acme.cert-manager.io.js +2476 -0
  11. package/dist/_imports/acme.cert-manager.io.js.map +1 -0
  12. package/dist/_imports/gateway.networking.k8s.io.d.ts +8786 -0
  13. package/dist/_imports/gateway.networking.k8s.io.d.ts.map +1 -0
  14. package/dist/_imports/gateway.networking.k8s.io.js +3668 -0
  15. package/dist/_imports/gateway.networking.k8s.io.js.map +1 -0
  16. package/dist/_imports/index.d.ts +3 -0
  17. package/dist/_imports/index.d.ts.map +1 -0
  18. package/dist/_imports/index.js +39 -0
  19. package/dist/_imports/index.js.map +1 -0
  20. package/dist/_imports/k8s.d.ts +18782 -0
  21. package/dist/_imports/k8s.d.ts.map +1 -0
  22. package/dist/_imports/k8s.js +12173 -0
  23. package/dist/_imports/k8s.js.map +1 -0
  24. package/dist/api-versions.d.ts +5 -0
  25. package/dist/api-versions.d.ts.map +1 -0
  26. package/dist/api-versions.js +8 -0
  27. package/dist/api-versions.js.map +1 -0
  28. package/dist/error.d.ts +5 -0
  29. package/dist/error.d.ts.map +1 -0
  30. package/dist/error.js +12 -0
  31. package/dist/error.js.map +1 -0
  32. package/dist/external/index.d.ts +13 -0
  33. package/dist/external/index.d.ts.map +1 -0
  34. package/dist/external/index.js +81 -0
  35. package/dist/external/index.js.map +1 -0
  36. package/dist/file/exports.d.ts +20 -0
  37. package/dist/file/exports.d.ts.map +1 -0
  38. package/dist/file/exports.js +62 -0
  39. package/dist/file/exports.js.map +1 -0
  40. package/dist/file/factory.d.ts +34 -0
  41. package/dist/file/factory.d.ts.map +1 -0
  42. package/dist/file/factory.js +171 -0
  43. package/dist/file/factory.js.map +1 -0
  44. package/dist/file/file.d.ts +17 -0
  45. package/dist/file/file.d.ts.map +1 -0
  46. package/dist/file/file.js +21 -0
  47. package/dist/file/file.js.map +1 -0
  48. package/dist/file/index.d.ts +2 -0
  49. package/dist/file/index.d.ts.map +1 -0
  50. package/dist/file/index.js +18 -0
  51. package/dist/file/index.js.map +1 -0
  52. package/dist/file/origin.d.ts +18 -0
  53. package/dist/file/origin.d.ts.map +1 -0
  54. package/dist/file/origin.js +27 -0
  55. package/dist/file/origin.js.map +1 -0
  56. package/dist/index.d.ts +9 -0
  57. package/dist/index.d.ts.map +1 -0
  58. package/dist/index.js +49 -0
  59. package/dist/index.js.map +1 -0
  60. package/dist/k8ts-sys-kind.d.ts +3 -0
  61. package/dist/k8ts-sys-kind.d.ts.map +1 -0
  62. package/dist/k8ts-sys-kind.js +8 -0
  63. package/dist/k8ts-sys-kind.js.map +1 -0
  64. package/dist/kind-map.d.ts +11 -0
  65. package/dist/kind-map.d.ts.map +1 -0
  66. package/dist/kind-map.js +29 -0
  67. package/dist/kind-map.js.map +1 -0
  68. package/dist/meta/k8ts-section.d.ts +3 -0
  69. package/dist/meta/k8ts-section.d.ts.map +1 -0
  70. package/dist/meta/k8ts-section.js +10 -0
  71. package/dist/meta/k8ts-section.js.map +1 -0
  72. package/dist/node/abs-resource.d.ts +15 -0
  73. package/dist/node/abs-resource.d.ts.map +1 -0
  74. package/dist/node/abs-resource.js +76 -0
  75. package/dist/node/abs-resource.js.map +1 -0
  76. package/dist/node/dependencies.d.ts +1 -0
  77. package/dist/node/dependencies.d.ts.map +1 -0
  78. package/dist/node/dependencies.js +2 -0
  79. package/dist/node/dependencies.js.map +1 -0
  80. package/dist/node/index.d.ts +2 -0
  81. package/dist/node/index.d.ts.map +1 -0
  82. package/dist/node/index.js +6 -0
  83. package/dist/node/index.js.map +1 -0
  84. package/dist/node/manifest-resource.d.ts +11 -0
  85. package/dist/node/manifest-resource.d.ts.map +1 -0
  86. package/dist/node/manifest-resource.js +19 -0
  87. package/dist/node/manifest-resource.js.map +1 -0
  88. package/dist/node/sub-resource.d.ts +8 -0
  89. package/dist/node/sub-resource.d.ts.map +1 -0
  90. package/dist/node/sub-resource.js +72 -0
  91. package/dist/node/sub-resource.js.map +1 -0
  92. package/dist/node/top-resource.d.ts +7 -0
  93. package/dist/node/top-resource.d.ts.map +1 -0
  94. package/dist/node/top-resource.js +8 -0
  95. package/dist/node/top-resource.js.map +1 -0
  96. package/dist/paths.d.ts +2 -0
  97. package/dist/paths.d.ts.map +1 -0
  98. package/dist/paths.js +5 -0
  99. package/dist/paths.js.map +1 -0
  100. package/dist/resources/configmap/configmap.d.ts +12 -0
  101. package/dist/resources/configmap/configmap.d.ts.map +1 -0
  102. package/dist/resources/configmap/configmap.js +79 -0
  103. package/dist/resources/configmap/configmap.js.map +1 -0
  104. package/dist/resources/configmap/index.d.ts +2 -0
  105. package/dist/resources/configmap/index.d.ts.map +1 -0
  106. package/dist/resources/configmap/index.js +18 -0
  107. package/dist/resources/configmap/index.js.map +1 -0
  108. package/dist/resources/deployment/deployment.d.ts +18 -0
  109. package/dist/resources/deployment/deployment.d.ts.map +1 -0
  110. package/dist/resources/deployment/deployment.js +99 -0
  111. package/dist/resources/deployment/deployment.js.map +1 -0
  112. package/dist/resources/deployment/index.d.ts +2 -0
  113. package/dist/resources/deployment/index.d.ts.map +1 -0
  114. package/dist/resources/deployment/index.js +18 -0
  115. package/dist/resources/deployment/index.js.map +1 -0
  116. package/dist/resources/http-route/http-route.d.ts +17 -0
  117. package/dist/resources/http-route/http-route.d.ts.map +1 -0
  118. package/dist/resources/http-route/http-route.js +93 -0
  119. package/dist/resources/http-route/http-route.js.map +1 -0
  120. package/dist/resources/http-route/index.d.ts +2 -0
  121. package/dist/resources/http-route/index.d.ts.map +1 -0
  122. package/dist/resources/http-route/index.js +18 -0
  123. package/dist/resources/http-route/index.js.map +1 -0
  124. package/dist/resources/index.d.ts +9 -0
  125. package/dist/resources/index.d.ts.map +1 -0
  126. package/dist/resources/index.js +25 -0
  127. package/dist/resources/index.js.map +1 -0
  128. package/dist/resources/namespace/index.d.ts +2 -0
  129. package/dist/resources/namespace/index.d.ts.map +1 -0
  130. package/dist/resources/namespace/index.js +18 -0
  131. package/dist/resources/namespace/index.js.map +1 -0
  132. package/dist/resources/namespace/namespace.d.ts +13 -0
  133. package/dist/resources/namespace/namespace.d.ts.map +1 -0
  134. package/dist/resources/namespace/namespace.js +79 -0
  135. package/dist/resources/namespace/namespace.js.map +1 -0
  136. package/dist/resources/persistent/access-mode.d.ts +8 -0
  137. package/dist/resources/persistent/access-mode.d.ts.map +1 -0
  138. package/dist/resources/persistent/access-mode.js +29 -0
  139. package/dist/resources/persistent/access-mode.js.map +1 -0
  140. package/dist/resources/persistent/block-mode.d.ts +2 -0
  141. package/dist/resources/persistent/block-mode.d.ts.map +1 -0
  142. package/dist/resources/persistent/block-mode.js +3 -0
  143. package/dist/resources/persistent/block-mode.js.map +1 -0
  144. package/dist/resources/persistent/claim/index.d.ts +2 -0
  145. package/dist/resources/persistent/claim/index.d.ts.map +1 -0
  146. package/dist/resources/persistent/claim/index.js +18 -0
  147. package/dist/resources/persistent/claim/index.js.map +1 -0
  148. package/dist/resources/persistent/claim/pvc.d.ts +23 -0
  149. package/dist/resources/persistent/claim/pvc.d.ts.map +1 -0
  150. package/dist/resources/persistent/claim/pvc.js +99 -0
  151. package/dist/resources/persistent/claim/pvc.js.map +1 -0
  152. package/dist/resources/persistent/index.d.ts +11 -0
  153. package/dist/resources/persistent/index.d.ts.map +1 -0
  154. package/dist/resources/persistent/index.js +13 -0
  155. package/dist/resources/persistent/index.js.map +1 -0
  156. package/dist/resources/persistent/volume/backend.d.ts +13 -0
  157. package/dist/resources/persistent/volume/backend.d.ts.map +1 -0
  158. package/dist/resources/persistent/volume/backend.js +3 -0
  159. package/dist/resources/persistent/volume/backend.js.map +1 -0
  160. package/dist/resources/persistent/volume/index.d.ts +2 -0
  161. package/dist/resources/persistent/volume/index.d.ts.map +1 -0
  162. package/dist/resources/persistent/volume/index.js +18 -0
  163. package/dist/resources/persistent/volume/index.js.map +1 -0
  164. package/dist/resources/persistent/volume/parse-backend.d.ts +14 -0
  165. package/dist/resources/persistent/volume/parse-backend.d.ts.map +1 -0
  166. package/dist/resources/persistent/volume/parse-backend.js +26 -0
  167. package/dist/resources/persistent/volume/parse-backend.js.map +1 -0
  168. package/dist/resources/persistent/volume/pv.d.ts +26 -0
  169. package/dist/resources/persistent/volume/pv.d.ts.map +1 -0
  170. package/dist/resources/persistent/volume/pv.js +95 -0
  171. package/dist/resources/persistent/volume/pv.js.map +1 -0
  172. package/dist/resources/pod/container/container.d.ts +44 -0
  173. package/dist/resources/pod/container/container.d.ts.map +1 -0
  174. package/dist/resources/pod/container/container.js +156 -0
  175. package/dist/resources/pod/container/container.js.map +1 -0
  176. package/dist/resources/pod/container/index.d.ts +2 -0
  177. package/dist/resources/pod/container/index.d.ts.map +1 -0
  178. package/dist/resources/pod/container/index.js +18 -0
  179. package/dist/resources/pod/container/index.js.map +1 -0
  180. package/dist/resources/pod/container/mounts.d.ts +27 -0
  181. package/dist/resources/pod/container/mounts.d.ts.map +1 -0
  182. package/dist/resources/pod/container/mounts.js +40 -0
  183. package/dist/resources/pod/container/mounts.js.map +1 -0
  184. package/dist/resources/pod/index.d.ts +4 -0
  185. package/dist/resources/pod/index.d.ts.map +1 -0
  186. package/dist/resources/pod/index.js +20 -0
  187. package/dist/resources/pod/index.js.map +1 -0
  188. package/dist/resources/pod/pod-template.d.ts +29 -0
  189. package/dist/resources/pod/pod-template.d.ts.map +1 -0
  190. package/dist/resources/pod/pod-template.js +123 -0
  191. package/dist/resources/pod/pod-template.js.map +1 -0
  192. package/dist/resources/pod/volume/devices.d.ts +23 -0
  193. package/dist/resources/pod/volume/devices.d.ts.map +1 -0
  194. package/dist/resources/pod/volume/devices.js +94 -0
  195. package/dist/resources/pod/volume/devices.js.map +1 -0
  196. package/dist/resources/pod/volume/index.d.ts +4 -0
  197. package/dist/resources/pod/volume/index.d.ts.map +1 -0
  198. package/dist/resources/pod/volume/index.js +10 -0
  199. package/dist/resources/pod/volume/index.js.map +1 -0
  200. package/dist/resources/pod/volume/volumes.d.ts +30 -0
  201. package/dist/resources/pod/volume/volumes.d.ts.map +1 -0
  202. package/dist/resources/pod/volume/volumes.js +124 -0
  203. package/dist/resources/pod/volume/volumes.js.map +1 -0
  204. package/dist/resources/secret/index.d.ts +4 -0
  205. package/dist/resources/secret/index.d.ts.map +1 -0
  206. package/dist/resources/secret/index.js +39 -0
  207. package/dist/resources/secret/index.js.map +1 -0
  208. package/dist/resources/secret/secret.d.ts +9 -0
  209. package/dist/resources/secret/secret.d.ts.map +1 -0
  210. package/dist/resources/secret/secret.js +77 -0
  211. package/dist/resources/secret/secret.js.map +1 -0
  212. package/dist/resources/service/frontend.d.ts +11 -0
  213. package/dist/resources/service/frontend.d.ts.map +1 -0
  214. package/dist/resources/service/frontend.js +3 -0
  215. package/dist/resources/service/frontend.js.map +1 -0
  216. package/dist/resources/service/index.d.ts +2 -0
  217. package/dist/resources/service/index.d.ts.map +1 -0
  218. package/dist/resources/service/index.js +18 -0
  219. package/dist/resources/service/index.js.map +1 -0
  220. package/dist/resources/service/service-port.d.ts +19 -0
  221. package/dist/resources/service/service-port.d.ts.map +1 -0
  222. package/dist/resources/service/service-port.js +21 -0
  223. package/dist/resources/service/service-port.js.map +1 -0
  224. package/dist/resources/service/service.d.ts +21 -0
  225. package/dist/resources/service/service.d.ts.map +1 -0
  226. package/dist/resources/service/service.js +99 -0
  227. package/dist/resources/service/service.js.map +1 -0
  228. package/dist/resources/utils/adapters.d.ts +8 -0
  229. package/dist/resources/utils/adapters.d.ts.map +1 -0
  230. package/dist/resources/utils/adapters.js +38 -0
  231. package/dist/resources/utils/adapters.js.map +1 -0
  232. package/dist/runner/exporter/assembler.d.ts +50 -0
  233. package/dist/runner/exporter/assembler.d.ts.map +1 -0
  234. package/dist/runner/exporter/assembler.js +122 -0
  235. package/dist/runner/exporter/assembler.js.map +1 -0
  236. package/dist/runner/exporter/index.d.ts +3 -0
  237. package/dist/runner/exporter/index.d.ts.map +1 -0
  238. package/dist/runner/exporter/index.js +19 -0
  239. package/dist/runner/exporter/index.js.map +1 -0
  240. package/dist/runner/exporter/loader.d.ts +19 -0
  241. package/dist/runner/exporter/loader.d.ts.map +1 -0
  242. package/dist/runner/exporter/loader.js +47 -0
  243. package/dist/runner/exporter/loader.js.map +1 -0
  244. package/dist/runner/exporter/manifester.d.ts +21 -0
  245. package/dist/runner/exporter/manifester.d.ts.map +1 -0
  246. package/dist/runner/exporter/manifester.js +72 -0
  247. package/dist/runner/exporter/manifester.js.map +1 -0
  248. package/dist/runner/exporter/meta.d.ts +2 -0
  249. package/dist/runner/exporter/meta.d.ts.map +1 -0
  250. package/dist/runner/exporter/meta.js +5 -0
  251. package/dist/runner/exporter/meta.js.map +1 -0
  252. package/dist/runner/exporter/progress-shower.d.ts +11 -0
  253. package/dist/runner/exporter/progress-shower.d.ts.map +1 -0
  254. package/dist/runner/exporter/progress-shower.js +68 -0
  255. package/dist/runner/exporter/progress-shower.js.map +1 -0
  256. package/dist/runner/exporter/saver.d.ts +27 -0
  257. package/dist/runner/exporter/saver.d.ts.map +1 -0
  258. package/dist/runner/exporter/saver.js +49 -0
  259. package/dist/runner/exporter/saver.js.map +1 -0
  260. package/dist/runner/exporter/serializer.d.ts +18 -0
  261. package/dist/runner/exporter/serializer.d.ts.map +1 -0
  262. package/dist/runner/exporter/serializer.js +47 -0
  263. package/dist/runner/exporter/serializer.js.map +1 -0
  264. package/dist/runner/exporter/stage.d.ts +9 -0
  265. package/dist/runner/exporter/stage.d.ts.map +1 -0
  266. package/dist/runner/exporter/stage.js +94 -0
  267. package/dist/runner/exporter/stage.js.map +1 -0
  268. package/dist/runner/exporter/trace-embedder.d.ts +1 -0
  269. package/dist/runner/exporter/trace-embedder.d.ts.map +1 -0
  270. package/dist/runner/exporter/trace-embedder.js +2 -0
  271. package/dist/runner/exporter/trace-embedder.js.map +1 -0
  272. package/dist/runner/index.d.ts +2 -0
  273. package/dist/runner/index.d.ts.map +1 -0
  274. package/dist/runner/index.js +18 -0
  275. package/dist/runner/index.js.map +1 -0
  276. package/dist/runner/proverbs.d.ts +1 -0
  277. package/dist/runner/proverbs.d.ts.map +1 -0
  278. package/dist/runner/proverbs.js +2 -0
  279. package/dist/runner/proverbs.js.map +1 -0
  280. package/dist/runner/runner.d.ts +13 -0
  281. package/dist/runner/runner.d.ts.map +1 -0
  282. package/dist/runner/runner.js +51 -0
  283. package/dist/runner/runner.js.map +1 -0
  284. package/dist/runner/silly/proverbs.d.ts +7 -0
  285. package/dist/runner/silly/proverbs.d.ts.map +1 -0
  286. package/dist/runner/silly/proverbs.js +20 -0
  287. package/dist/runner/silly/proverbs.js.map +1 -0
  288. package/dist/runner/summarizer.d.ts +23 -0
  289. package/dist/runner/summarizer.d.ts.map +1 -0
  290. package/dist/runner/summarizer.js +115 -0
  291. package/dist/runner/summarizer.js.map +1 -0
  292. package/dist/src.tsbuildinfo +1 -0
  293. package/dist/test.tsbuildinfo +1 -0
  294. package/dist/version.d.ts +2 -0
  295. package/dist/version.d.ts.map +1 -0
  296. package/dist/version.js +5 -0
  297. package/dist/version.js.map +1 -0
  298. package/dist/world/index.d.ts +2 -0
  299. package/dist/world/index.d.ts.map +1 -0
  300. package/dist/world/index.js +18 -0
  301. package/dist/world/index.js.map +1 -0
  302. package/dist/world/world.d.ts +28 -0
  303. package/dist/world/world.d.ts.map +1 -0
  304. package/dist/world/world.js +41 -0
  305. package/dist/world/world.js.map +1 -0
  306. package/package.json +106 -0
  307. package/proverbs.txt +23 -0
  308. package/src/_imports/_mix.ts +3 -0
  309. package/src/_imports/acme.cert-manager.io.ts +8202 -0
  310. package/src/_imports/gateway.networking.k8s.io.ts +12226 -0
  311. package/src/_imports/index.ts +2 -0
  312. package/src/_imports/k8s.ts +31028 -0
  313. package/src/_imports/tsconfig.json +22 -0
  314. package/src/api-versions.ts +5 -0
  315. package/src/error.ts +7 -0
  316. package/src/external/index.ts +34 -0
  317. package/src/file/exports.ts +63 -0
  318. package/src/file/factory.ts +150 -0
  319. package/src/file/file.ts +34 -0
  320. package/src/file/index.ts +1 -0
  321. package/src/file/origin.ts +38 -0
  322. package/src/index.ts +8 -0
  323. package/src/k8ts-sys-kind.ts +4 -0
  324. package/src/kind-map.ts +39 -0
  325. package/src/meta/k8ts-section.ts +6 -0
  326. package/src/node/abs-resource.ts +32 -0
  327. package/src/node/dependencies.ts +0 -0
  328. package/src/node/index.ts +1 -0
  329. package/src/node/manifest-resource.ts +19 -0
  330. package/src/node/sub-resource.ts +20 -0
  331. package/src/node/top-resource.ts +7 -0
  332. package/src/paths.ts +1 -0
  333. package/src/resources/configmap/configmap.ts +26 -0
  334. package/src/resources/configmap/index.ts +1 -0
  335. package/src/resources/deployment/deployment.ts +54 -0
  336. package/src/resources/deployment/index.ts +1 -0
  337. package/src/resources/http-route/http-route.ts +45 -0
  338. package/src/resources/http-route/index.ts +1 -0
  339. package/src/resources/index.ts +8 -0
  340. package/src/resources/namespace/index.ts +1 -0
  341. package/src/resources/namespace/namespace.ts +26 -0
  342. package/src/resources/persistent/access-mode.ts +29 -0
  343. package/src/resources/persistent/block-mode.ts +1 -0
  344. package/src/resources/persistent/claim/index.ts +1 -0
  345. package/src/resources/persistent/claim/pvc.ts +52 -0
  346. package/src/resources/persistent/index.ts +10 -0
  347. package/src/resources/persistent/volume/backend.ts +14 -0
  348. package/src/resources/persistent/volume/index.ts +1 -0
  349. package/src/resources/persistent/volume/parse-backend.ts +23 -0
  350. package/src/resources/persistent/volume/pv.ts +56 -0
  351. package/src/resources/pod/container/container.ts +137 -0
  352. package/src/resources/pod/container/index.ts +1 -0
  353. package/src/resources/pod/container/mounts.ts +45 -0
  354. package/src/resources/pod/index.ts +3 -0
  355. package/src/resources/pod/pod-template.ts +73 -0
  356. package/src/resources/pod/volume/devices.ts +50 -0
  357. package/src/resources/pod/volume/index.ts +3 -0
  358. package/src/resources/pod/volume/volumes.ts +90 -0
  359. package/src/resources/secret/index.ts +3 -0
  360. package/src/resources/secret/secret.ts +25 -0
  361. package/src/resources/service/frontend.ts +11 -0
  362. package/src/resources/service/index.ts +1 -0
  363. package/src/resources/service/service-port.ts +24 -0
  364. package/src/resources/service/service.ts +53 -0
  365. package/src/resources/utils/adapters.ts +36 -0
  366. package/src/runner/exporter/FILE xyz.md +47 -0
  367. package/src/runner/exporter/assembler.ts +170 -0
  368. package/src/runner/exporter/index.ts +2 -0
  369. package/src/runner/exporter/loader.ts +54 -0
  370. package/src/runner/exporter/manifester.ts +77 -0
  371. package/src/runner/exporter/meta.ts +1 -0
  372. package/src/runner/exporter/progress-shower.ts +77 -0
  373. package/src/runner/exporter/saver.ts +62 -0
  374. package/src/runner/exporter/serializer.ts +49 -0
  375. package/src/runner/exporter/stage.ts +36 -0
  376. package/src/runner/exporter/trace-embedder.ts +0 -0
  377. package/src/runner/index.ts +1 -0
  378. package/src/runner/proverbs.ts +0 -0
  379. package/src/runner/runner.ts +53 -0
  380. package/src/runner/silly/proverbs.ts +14 -0
  381. package/src/runner/summarizer.ts +133 -0
  382. package/src/tsconfig.json +16 -0
  383. package/src/version.ts +1 -0
  384. package/src/world/index.ts +1 -0
  385. package/src/world/world.ts +62 -0
@@ -0,0 +1,26 @@
1
+ import { manifest, relations, type Origin } from "@k8ts/instruments"
2
+ import { Meta, MutableMeta } from "@k8ts/metadata"
3
+ import type { CDK } from "../../_imports"
4
+ import { v1 } from "../../api-versions"
5
+ import { k8ts } from "../../kind-map"
6
+ import { ManifestResource } from "../../node/manifest-resource"
7
+ export type Namespace = Namespace.Namespace
8
+ export namespace Namespace {
9
+ export interface Props {}
10
+ const ident = v1.kind("Namespace")
11
+ @k8ts(ident)
12
+ @relations("none")
13
+ @manifest({
14
+ body(self): CDK.KubeNamespaceProps {
15
+ return {
16
+ spec: {}
17
+ }
18
+ }
19
+ })
20
+ export class Namespace extends ManifestResource<Props> {
21
+ override kind = ident
22
+ constructor(origin: Origin, meta: Meta | MutableMeta, props?: Props) {
23
+ super(origin, meta.toMutable(), props ?? {})
24
+ }
25
+ }
26
+ }
@@ -0,0 +1,29 @@
1
+ export type Access = Access.Inputs
2
+
3
+ export namespace Access {
4
+ export type Mode = "ReadWriteOnce" | "ReadOnlyMany" | "ReadWriteMany"
5
+ export type Input = Mode | "RWX" | "ROX" | "RWO"
6
+ export type Inputs = Input | Input[]
7
+
8
+ function parseOne(mode: Input): Mode {
9
+ switch (mode) {
10
+ case "RWX":
11
+ case "ReadWriteMany":
12
+ return "ReadWriteMany"
13
+ case "ROX":
14
+ case "ReadOnlyMany":
15
+ return "ReadOnlyMany"
16
+ case "RWO":
17
+ case "ReadWriteOnce":
18
+ return "ReadWriteOnce"
19
+ }
20
+ }
21
+
22
+ export function parse(modes: Inputs): Mode[] {
23
+ if (Array.isArray(modes)) {
24
+ return modes.map(parseOne)
25
+ } else {
26
+ return [parseOne(modes)]
27
+ }
28
+ }
29
+ }
@@ -0,0 +1 @@
1
+ export type DataMode = "Block" | "Filesystem"
@@ -0,0 +1 @@
1
+ export * from "./pvc"
@@ -0,0 +1,52 @@
1
+ import { manifest, relations, ResourcesSpec, Unit } from "@k8ts/instruments"
2
+ import type { CDK } from "../../../_imports"
3
+ import { v1 } from "../../../api-versions"
4
+ import { k8ts } from "../../../kind-map"
5
+ import { ManifestResource } from "../../../node"
6
+ import { Access } from "../access-mode"
7
+ import type { DataMode } from "../block-mode"
8
+ import type { Volume } from "../volume"
9
+
10
+ export type Claim<T extends DataMode = DataMode> = Claim.Claim<T>
11
+ export namespace Claim {
12
+ const pvc_ResourcesSpec = ResourcesSpec.make({
13
+ storage: Unit.Data
14
+ })
15
+ type PvcResourceSpec = typeof pvc_ResourcesSpec
16
+ type PvcResources = PvcResourceSpec["__INPUT__"]
17
+ export interface Props<Mode extends DataMode> extends PvcResources {
18
+ accessModes: Access
19
+ mode?: Mode
20
+ bind: Volume.Volume<Mode>
21
+ }
22
+
23
+ const ident = v1.kind("PersistentVolumeClaim")
24
+ @k8ts(ident)
25
+ @relations({
26
+ needs: self => ({
27
+ bind: self.props.bind
28
+ })
29
+ })
30
+ @manifest({
31
+ body(self): CDK.KubePersistentVolumeClaimProps {
32
+ const { storage, accessModes, mode } = self.props
33
+ const nAccessModes = Access.parse(accessModes)
34
+ return {
35
+ spec: {
36
+ accessModes: nAccessModes,
37
+ volumeName: self.props.bind!.name,
38
+ volumeMode: mode,
39
+ resources: pvc_ResourcesSpec
40
+ .parse({
41
+ storage
42
+ })
43
+ .toObject(),
44
+ storageClassName: "standard"
45
+ }
46
+ }
47
+ }
48
+ })
49
+ export class Claim<Mode extends DataMode = DataMode> extends ManifestResource<Props<Mode>> {
50
+ kind = ident
51
+ }
52
+ }
@@ -0,0 +1,10 @@
1
+ import { Access as Access_ } from "./access-mode"
2
+ import { DataMode as DataMode_ } from "./block-mode"
3
+ import { Claim as Claim_ } from "./claim"
4
+ import { Volume as Volume_ } from "./volume"
5
+ export namespace Persistent {
6
+ export import Claim = Claim_
7
+ export import Volume = Volume_
8
+ export import Access = Access_
9
+ export type DataMode = DataMode_
10
+ }
@@ -0,0 +1,14 @@
1
+ export namespace Backend {
2
+ export interface HostPath {
3
+ type: "HostPath"
4
+ path: string
5
+ }
6
+ export interface Local {
7
+ type: "Local"
8
+ path: string
9
+ }
10
+
11
+ export type Backend = HostPath | Local
12
+ }
13
+
14
+ export type Backend = Backend.Backend
@@ -0,0 +1 @@
1
+ export * from "./pv"
@@ -0,0 +1,23 @@
1
+ import { MakeError } from "../../../error"
2
+ import { Backend } from "./backend"
3
+ export function parseBackend(backend: Backend) {
4
+ switch (backend.type) {
5
+ case "HostPath":
6
+ return {
7
+ hostPath: {
8
+ path: backend.path,
9
+ type: backend.type
10
+ }
11
+ }
12
+ case "Local":
13
+ return {
14
+ local: {
15
+ path: backend.path
16
+ }
17
+ }
18
+ default:
19
+ throw new MakeError(`Unknown backend kind!`, {
20
+ backend
21
+ })
22
+ }
23
+ }
@@ -0,0 +1,56 @@
1
+ import { manifest, relations, type Unit } from "@k8ts/instruments"
2
+ import { CDK } from "../../../_imports"
3
+ import { v1 } from "../../../api-versions"
4
+ import { k8ts } from "../../../kind-map"
5
+ import { ManifestResource } from "../../../node/manifest-resource"
6
+ import { Access } from "../access-mode"
7
+ import type { DataMode } from "../block-mode"
8
+ import { Backend as Backend_ } from "./backend"
9
+ import { parseBackend } from "./parse-backend"
10
+
11
+ export type Volume<T extends DataMode = DataMode> = Volume.Volume<T>
12
+ export namespace Volume {
13
+ export import Backend = Backend_
14
+ export interface Props<Mode extends DataMode = DataMode> {
15
+ accessModes: Access
16
+ storageClassName?: string
17
+ mode?: Mode
18
+ reclaimPolicy?: Reclaim
19
+ capacity?: Unit.Data
20
+ backend: Backend
21
+ nodeAffinity?: CDK.VolumeNodeAffinity
22
+ }
23
+ export type Reclaim = "Retain" | "Delete" | "Recycle"
24
+
25
+ const ident = v1.kind("PersistentVolume")
26
+
27
+ @manifest({
28
+ body(self) {
29
+ const pvProps = self.props
30
+ const accessModes = Access.parse(pvProps.accessModes)
31
+ let base: CDK.PersistentVolumeSpec = {
32
+ accessModes,
33
+ storageClassName: pvProps.storageClassName,
34
+ capacity: pvProps.capacity
35
+ ? {
36
+ storage: CDK.Quantity.fromString(pvProps.capacity)
37
+ }
38
+ : undefined,
39
+ volumeMode: pvProps.mode ?? "Filesystem",
40
+ persistentVolumeReclaimPolicy: pvProps.reclaimPolicy ?? "Retain"
41
+ }
42
+ base = {
43
+ ...base,
44
+ ...parseBackend(pvProps.backend)
45
+ }
46
+ return {
47
+ spec: base
48
+ }
49
+ }
50
+ })
51
+ @k8ts(ident)
52
+ @relations("none")
53
+ export class Volume<Mode extends DataMode = DataMode> extends ManifestResource<Props<Mode>> {
54
+ declare readonly kind: typeof ident
55
+ }
56
+ }
@@ -0,0 +1,137 @@
1
+ import {
2
+ Env,
3
+ PortSet,
4
+ relations,
5
+ ResourcesSpec,
6
+ Unit,
7
+ type CmdBuilder,
8
+ type InputEnvMapping,
9
+ type InputPortSetRecord,
10
+ type TaggedImage
11
+ } from "@k8ts/instruments"
12
+ import { Map } from "immutable"
13
+ import type { CDK } from "../../../_imports"
14
+ import { toContainerPorts, toEnvVars } from "../../utils/adapters"
15
+
16
+ import { seq } from "doddle"
17
+ import { mapKeys, mapValues } from "lodash"
18
+ import type { ManifestResource } from "../../../node"
19
+ import { SubResource } from "../../../node/sub-resource"
20
+ import { Mount as Mount_ } from "./mounts"
21
+ export type Container<Ports extends string> = Container.Container<Ports>
22
+ export namespace Container {
23
+ export import Mount = Mount_
24
+ const container_ResourcesSpec = ResourcesSpec.make({
25
+ cpu: Unit.Cpu,
26
+ memory: Unit.Data
27
+ })
28
+
29
+ type Resources = (typeof container_ResourcesSpec)["__INPUT__"]
30
+ export type Mounts = {
31
+ [key: string]: Mount.ContainerDeviceMount | Mount.ContainerVolumeMount
32
+ }
33
+ export interface Props<Ports extends string> {
34
+ image: TaggedImage
35
+ ports: InputPortSetRecord<Ports>
36
+ command?: CmdBuilder
37
+ mounts?: Mounts
38
+ env?: InputEnvMapping
39
+ securityContext?: CDK.SecurityContext
40
+ resources?: Resources
41
+ }
42
+ @relations({
43
+ needs: self => {
44
+ const a = self.mounts
45
+ return mapValues(
46
+ mapKeys(a, x => x.path),
47
+ x => x.mount.parent
48
+ )
49
+ }
50
+ })
51
+ export class Container<Ports extends string> extends SubResource<Props<Ports>> {
52
+ get kind() {
53
+ return this.parent.kind.subkind("Container")
54
+ }
55
+ get mounts() {
56
+ return Map(this.props.mounts ?? {})
57
+ .mapEntries(([path, mount]) => {
58
+ return [
59
+ mount,
60
+ {
61
+ mount,
62
+ path: path as string
63
+ }
64
+ ]
65
+ })
66
+ .valueSeq()
67
+ .toArray()
68
+ }
69
+
70
+ get volumes() {
71
+ return seq(this.mounts.map(x => x.mount.parent))
72
+ .uniq()
73
+ .toArray()
74
+ .pull()
75
+ }
76
+ get ports() {
77
+ return PortSet.make(this.props.ports)
78
+ }
79
+ submanifest(): CDK.Container {
80
+ const self = this
81
+ const { image, ports, command, env, securityContext } = self.props
82
+ const container: CDK.Container = {
83
+ name: self.name,
84
+ image: image.text,
85
+ ports: toContainerPorts(PortSet.make(ports)).valueSeq().toArray(),
86
+ resources: self._resources()?.toObject(),
87
+ command: command?.toArray(),
88
+ env: toEnvVars(Env(env)).valueSeq().toArray(),
89
+ securityContext,
90
+ ...self._groupedMounts()
91
+ }
92
+ return container
93
+ }
94
+ constructor(
95
+ parent: ManifestResource,
96
+ name: string,
97
+ readonly subtype: "init" | "main",
98
+ override readonly props: Props<Ports>
99
+ ) {
100
+ super(parent, name, props)
101
+ }
102
+
103
+ private _groupedMounts() {
104
+ const x = {
105
+ volumeMounts: [],
106
+ volumeDevices: []
107
+ } as Pick<CDK.Container, "volumeMounts" | "volumeDevices">
108
+ for (const [path, mount] of Object.entries(this.props.mounts ?? {})) {
109
+ if (mount instanceof Mount.ContainerDeviceMount) {
110
+ x.volumeDevices!.push(mount.submanifest(path))
111
+ } else {
112
+ x.volumeMounts!.push(mount.submanifest(path))
113
+ }
114
+ }
115
+ return x
116
+ }
117
+ private _resources() {
118
+ if (!this.props.resources) {
119
+ return undefined
120
+ }
121
+ const { cpu, memory } = this.props.resources
122
+ return container_ResourcesSpec.parse({
123
+ cpu: cpu,
124
+ memory: memory
125
+ })
126
+ }
127
+ }
128
+
129
+ export function make<Ports extends string>(
130
+ parent: ManifestResource,
131
+ name: string,
132
+ subtype: "init" | "main",
133
+ props: Props<Ports>
134
+ ) {
135
+ return new Container(parent, name, subtype, props)
136
+ }
137
+ }
@@ -0,0 +1 @@
1
+ export * from "./container"
@@ -0,0 +1,45 @@
1
+ import type { CDK } from "../../../_imports"
2
+ import type { Device } from "../volume/devices"
3
+ import type { Volume } from "../volume/volumes"
4
+ export type Mount = Mount.ContainerVolumeMount | Mount.ContainerDeviceMount
5
+ export namespace Mount {
6
+ type Path_Rooted = `/${string}`
7
+ export type Path = `${"" | "." | ".."}${Path_Rooted}`
8
+
9
+ export interface Options {
10
+ readOnly?: boolean
11
+ subPath?: string
12
+ }
13
+ export class ContainerVolumeMount {
14
+ get kind() {
15
+ return this.parent.kind.parent.subkind("ContainerVolumeMount")
16
+ }
17
+ constructor(
18
+ readonly parent: Volume.PodVolume,
19
+ readonly props: Options
20
+ ) {}
21
+
22
+ submanifest(mountPath: string): CDK.VolumeMount {
23
+ return {
24
+ name: this.parent.name,
25
+ mountPath: mountPath,
26
+ readOnly: this.props.readOnly,
27
+ subPath: this.props.subPath
28
+ }
29
+ }
30
+ }
31
+
32
+ export class ContainerDeviceMount {
33
+ get kind() {
34
+ return this.parent.kind.parent.subkind("ContainerDeviceMount")
35
+ }
36
+ constructor(readonly parent: Device.PodDevice) {}
37
+
38
+ submanifest(devicePath: string): CDK.VolumeDevice {
39
+ return {
40
+ devicePath: devicePath,
41
+ name: this.parent.name
42
+ }
43
+ }
44
+ }
45
+ }
@@ -0,0 +1,3 @@
1
+ export * from "./container"
2
+ export * from "./pod-template"
3
+ export * from "./volume"
@@ -0,0 +1,73 @@
1
+ import { manifest, relations } from "@k8ts/instruments"
2
+ import { seq } from "doddle"
3
+ import { omit } from "lodash"
4
+ import { CDK } from "../../_imports"
5
+ import { apps_v1 } from "../../api-versions"
6
+ import { k8ts } from "../../kind-map"
7
+ import { ManifestResource } from "../../node/manifest-resource"
8
+ import { Container } from "./container"
9
+ import { Device, Volume } from "./volume"
10
+ export type PodTemplate<Ports extends string> = PodTemplate.PodTemplate<Ports>
11
+ export namespace PodTemplate {
12
+ export type Props<Ports extends string> = Omit<
13
+ CDK.PodSpec,
14
+ "containers" | "initContainers" | "volumes"
15
+ > & {
16
+ POD(scope: PodScope): Iterable<Container.Container<Ports>>
17
+ }
18
+ const ident = apps_v1.kind("PodTemplate")
19
+ @k8ts(ident)
20
+ @relations({
21
+ kids: s => [...s.containers, ...s.volumes]
22
+ })
23
+ @manifest({
24
+ body(self): CDK.PodTemplateSpec {
25
+ const { meta, props } = self
26
+ const containers = self.containers
27
+ const initContainers = containers
28
+ .filter(c => c.subtype === "init")
29
+ .map(x => x.submanifest())
30
+ .toArray()
31
+ const mainContainers = containers
32
+ .filter(c => c.subtype === "main")
33
+ .map(x => x.submanifest())
34
+ .toArray()
35
+
36
+ const volumes = self.volumes.map(x => x.submanifest()).toArray()
37
+ return {
38
+ spec: {
39
+ ...omit(props, "POD"),
40
+ containers: mainContainers.pull(),
41
+ initContainers: initContainers.pull(),
42
+ volumes: volumes.pull()
43
+ }
44
+ }
45
+ }
46
+ })
47
+ export class PodTemplate<Ports extends string = string> extends ManifestResource<Props<Ports>> {
48
+ kind = ident
49
+ readonly containers = seq(() => this.props.POD(new PodScope(this))).cache()
50
+ readonly mounts = seq(() => this.containers.concatMap(x => x.mounts)).cache()
51
+ readonly volumes = seq(() => this.containers.concatMap(x => x.volumes)).uniq()
52
+ readonly ports = seq(() => this.containers.map(x => x.ports)).reduce((a, b) => a.union(b))
53
+ }
54
+
55
+ export class PodScope {
56
+ constructor(private readonly _parent: PodTemplate) {}
57
+ Container<Ports extends string>(
58
+ name: string,
59
+ options: Container.Props<Ports>
60
+ ): Container<Ports> {
61
+ return Container.make(this._parent, name, "main", options)
62
+ }
63
+ InitContainer(name: string, options: Container.Props<never>): Container<never> {
64
+ return Container.make(this._parent, name, "init", options)
65
+ }
66
+ Volume(name: string, options: Volume.Backend) {
67
+ return Volume.make(this._parent, name, options)
68
+ }
69
+ Device(name: string, options: Device.Backend): Device {
70
+ return Device.make(this._parent, name, options)
71
+ }
72
+ }
73
+ }
@@ -0,0 +1,50 @@
1
+ import { relations } from "@k8ts/instruments"
2
+ import type { CDK } from "../../../_imports"
3
+ import type { ManifestResource } from "../../../node"
4
+ import { SubResource } from "../../../node/sub-resource"
5
+ import { Persistent } from "../../persistent"
6
+ import { Mount } from "../container/mounts"
7
+ export type Device = Device.PodDevice
8
+ export namespace Device {
9
+ interface PodDevice_Backend_Pvc {
10
+ backend: Persistent.Claim<"Block">
11
+ readOnly?: boolean
12
+ }
13
+
14
+ export type Backend = PodDevice_Backend_Pvc
15
+ @relations({
16
+ needs: self => ({
17
+ backend: self.backend.backend
18
+ })
19
+ })
20
+ export class PodDevice extends SubResource<PodDevice_Backend_Pvc> {
21
+ get kind() {
22
+ return this.parent.kind.subkind("Device")
23
+ }
24
+ constructor(
25
+ parent: ManifestResource,
26
+ name: string,
27
+ readonly backend: PodDevice_Backend_Pvc
28
+ ) {
29
+ super(parent, name, backend)
30
+ }
31
+
32
+ submanifest(): CDK.Volume {
33
+ return {
34
+ name: this.name,
35
+ persistentVolumeClaim: {
36
+ claimName: this.backend.backend.name,
37
+ readOnly: this.backend.readOnly
38
+ }
39
+ }
40
+ }
41
+
42
+ mount() {
43
+ return new Mount.ContainerDeviceMount(this)
44
+ }
45
+ }
46
+
47
+ export function make(parent: ManifestResource, name: string, input: Backend) {
48
+ return new PodDevice(parent, name, input)
49
+ }
50
+ }
@@ -0,0 +1,3 @@
1
+ export { Mount } from "../container/mounts"
2
+ export { Device } from "./devices"
3
+ export { Volume } from "./volumes"
@@ -0,0 +1,90 @@
1
+ import type { CDK } from "../../../_imports"
2
+
3
+ import { relations } from "@k8ts/instruments"
4
+ import type { ManifestResource } from "../../../node"
5
+ import { SubResource } from "../../../node/sub-resource"
6
+ import type { ConfigMap } from "../../configmap"
7
+ import type { Persistent } from "../../persistent"
8
+ import type { Secret } from "../../secret"
9
+ import { Mount } from "../container/mounts"
10
+ export type Volume<Props extends Volume.Backend = Volume.Backend> = Volume.PodVolume<Props>
11
+ export namespace Volume {
12
+ interface PodVolume_Backend_Pvc {
13
+ backend: Persistent.Claim<"Filesystem">
14
+ readOnly?: boolean
15
+ }
16
+
17
+ interface PodVolume_Backend_ConfigMap {
18
+ backend: ConfigMap
19
+ }
20
+ interface PodVolume_Backend_Secret {
21
+ backend: Secret
22
+ }
23
+ export type Backend =
24
+ | PodVolume_Backend_Pvc
25
+ | PodVolume_Backend_ConfigMap
26
+ | PodVolume_Backend_Secret
27
+ @relations({
28
+ needs: self => ({
29
+ backend: self.props.backend
30
+ })
31
+ })
32
+ export abstract class PodVolume<Props extends Backend = Backend> extends SubResource<Props> {
33
+ private KIND = "Volume" as const
34
+ get kind() {
35
+ return this.parent.kind.subkind("Volume")
36
+ }
37
+
38
+ abstract submanifest(): CDK.Volume
39
+
40
+ Mount(options?: Mount.Options) {
41
+ return new Mount.ContainerVolumeMount(this as any, options ?? {})
42
+ }
43
+ }
44
+
45
+ class PvcPodVolume extends PodVolume<PodVolume_Backend_Pvc> {
46
+ override submanifest(): CDK.Volume {
47
+ return {
48
+ name: this.name,
49
+ persistentVolumeClaim: {
50
+ claimName: this.props.backend.name,
51
+ readOnly: this.props.readOnly
52
+ }
53
+ }
54
+ }
55
+ }
56
+
57
+ class ConfigMapPodVolume extends PodVolume<PodVolume_Backend_ConfigMap> {
58
+ override submanifest(): CDK.Volume {
59
+ return {
60
+ name: this.name,
61
+ configMap: {
62
+ name: this.props.backend.name
63
+ }
64
+ }
65
+ }
66
+ }
67
+
68
+ class SecretPodVolume extends PodVolume<PodVolume_Backend_Secret> {
69
+ override submanifest(): CDK.Volume {
70
+ return {
71
+ name: this.name,
72
+ secret: {
73
+ secretName: this.props.backend.name
74
+ }
75
+ }
76
+ }
77
+ }
78
+
79
+ export function make(parent: ManifestResource, name: string, input: Backend): PodVolume {
80
+ const { backend } = input
81
+ switch (backend.kind.name) {
82
+ case "PersistentVolumeClaim":
83
+ return new PvcPodVolume(parent, name, input as PodVolume_Backend_Pvc)
84
+ case "ConfigMap":
85
+ return new ConfigMapPodVolume(parent, name, input as PodVolume_Backend_ConfigMap)
86
+ case "Secret":
87
+ return new SecretPodVolume(parent, name, input as PodVolume_Backend_Secret)
88
+ }
89
+ }
90
+ }
@@ -0,0 +1,3 @@
1
+ import * as Secret from "./secret"
2
+ type Secret = Secret.Secret
3
+ export { Secret }
@@ -0,0 +1,25 @@
1
+ import { manifest, relations } from "@k8ts/instruments"
2
+ import { CDK } from "../../_imports"
3
+ import { v1 } from "../../api-versions"
4
+ import { k8ts } from "../../kind-map"
5
+ import { ManifestResource } from "../../node/manifest-resource"
6
+
7
+ export interface Props {
8
+ data: Record<string, string>
9
+ stringData: Record<string, string>
10
+ }
11
+
12
+ const ident = v1.kind("Secret")
13
+ @k8ts(ident)
14
+ @relations("none")
15
+ @manifest({
16
+ body(self): CDK.KubeSecretProps {
17
+ return {
18
+ data: self.props.data,
19
+ stringData: self.props.stringData
20
+ }
21
+ }
22
+ })
23
+ export class Secret extends ManifestResource<Props> {
24
+ kind = ident
25
+ }
@@ -0,0 +1,11 @@
1
+ export namespace Frontend {
2
+ export interface ClusterIp {
3
+ type: "ClusterIP"
4
+ }
5
+
6
+ export interface LoadBalancer {
7
+ type: "LoadBalancer"
8
+ loadBalancerIP?: string
9
+ }
10
+ }
11
+ export type Frontend = Frontend.ClusterIp | Frontend.LoadBalancer