k8ts 0.13.2 → 0.14.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 (585) hide show
  1. package/dist/common-world.d.ts +3 -8
  2. package/dist/common-world.d.ts.map +1 -1
  3. package/dist/common-world.js +6 -9
  4. package/dist/common-world.js.map +1 -1
  5. package/dist/env/env.d.ts +7 -7
  6. package/dist/env/env.d.ts.map +1 -1
  7. package/dist/env/env.js +21 -23
  8. package/dist/env/env.js.map +1 -1
  9. package/dist/env/error.d.ts +5 -0
  10. package/dist/env/error.d.ts.map +1 -0
  11. package/dist/env/error.js +12 -0
  12. package/dist/env/error.js.map +1 -0
  13. package/dist/env/index.d.ts +1 -1
  14. package/dist/env/index.d.ts.map +1 -1
  15. package/dist/env/types.d.ts +5 -5
  16. package/dist/env/types.d.ts.map +1 -1
  17. package/dist/gvks/apps.d.ts +29 -0
  18. package/dist/gvks/apps.d.ts.map +1 -0
  19. package/dist/gvks/apps.js.map +1 -0
  20. package/dist/gvks/batch.d.ts +17 -0
  21. package/dist/gvks/batch.d.ts.map +1 -0
  22. package/dist/gvks/batch.js.map +1 -0
  23. package/dist/gvks/default.d.ts +73 -0
  24. package/dist/gvks/default.d.ts.map +1 -0
  25. package/dist/gvks/default.js.map +1 -0
  26. package/dist/gvks/gateway.d.ts +29 -0
  27. package/dist/gvks/gateway.d.ts.map +1 -0
  28. package/dist/gvks/gateway.js.map +1 -0
  29. package/dist/gvks/index.d.ts.map +1 -0
  30. package/dist/gvks/index.js.map +1 -0
  31. package/dist/gvks/metrics.d.ts +17 -0
  32. package/dist/gvks/metrics.d.ts.map +1 -0
  33. package/dist/gvks/metrics.js.map +1 -0
  34. package/dist/gvks/networking.d.ts +13 -0
  35. package/dist/gvks/networking.d.ts.map +1 -0
  36. package/dist/gvks/networking.js.map +1 -0
  37. package/dist/gvks/rbac.d.ts +25 -0
  38. package/dist/gvks/rbac.d.ts.map +1 -0
  39. package/dist/gvks/rbac.js.map +1 -0
  40. package/dist/gvks/storage.d.ts +17 -0
  41. package/dist/gvks/storage.d.ts.map +1 -0
  42. package/dist/gvks/storage.js.map +1 -0
  43. package/dist/index.d.ts +2 -2
  44. package/dist/index.d.ts.map +1 -1
  45. package/dist/index.js +2 -2
  46. package/dist/index.js.map +1 -1
  47. package/dist/kinds.d.ts +2 -0
  48. package/dist/kinds.d.ts.map +1 -0
  49. package/dist/kinds.js +18 -0
  50. package/dist/kinds.js.map +1 -0
  51. package/dist/origins/file/file.d.ts +13 -14
  52. package/dist/origins/file/file.d.ts.map +1 -1
  53. package/dist/origins/file/file.js +14 -17
  54. package/dist/origins/file/file.js.map +1 -1
  55. package/dist/origins/file/index.d.ts +0 -1
  56. package/dist/origins/file/index.d.ts.map +1 -1
  57. package/dist/origins/file/index.js +0 -1
  58. package/dist/origins/file/index.js.map +1 -1
  59. package/dist/origins/file/section.d.ts +11 -11
  60. package/dist/origins/file/section.d.ts.map +1 -1
  61. package/dist/origins/file/section.js +15 -13
  62. package/dist/origins/file/section.js.map +1 -1
  63. package/dist/origins/world.d.ts +6 -5
  64. package/dist/origins/world.d.ts.map +1 -1
  65. package/dist/origins/world.js +9 -5
  66. package/dist/origins/world.js.map +1 -1
  67. package/dist/resources/annotations.d.ts +2 -0
  68. package/dist/resources/annotations.d.ts.map +1 -0
  69. package/dist/resources/{persistent/block-mode.js → annotations.js} +1 -1
  70. package/dist/resources/annotations.js.map +1 -0
  71. package/dist/resources/config/configmap.d.ts +7 -7
  72. package/dist/resources/config/configmap.d.ts.map +1 -1
  73. package/dist/resources/config/configmap.js +7 -6
  74. package/dist/resources/config/configmap.js.map +1 -1
  75. package/dist/resources/config/index.d.ts +0 -1
  76. package/dist/resources/config/index.d.ts.map +1 -1
  77. package/dist/resources/config/index.js +0 -1
  78. package/dist/resources/config/index.js.map +1 -1
  79. package/dist/resources/config/resolver.d.ts +2 -2
  80. package/dist/resources/config/resolver.d.ts.map +1 -1
  81. package/dist/resources/config/resolver.js +4 -3
  82. package/dist/resources/config/resolver.js.map +1 -1
  83. package/dist/resources/config/secret.d.ts +7 -14
  84. package/dist/resources/config/secret.d.ts.map +1 -1
  85. package/dist/resources/config/secret.js +6 -4
  86. package/dist/resources/config/secret.js.map +1 -1
  87. package/dist/resources/errors.d.ts +7 -0
  88. package/dist/resources/errors.d.ts.map +1 -0
  89. package/dist/resources/errors.js +12 -0
  90. package/dist/resources/errors.js.map +1 -0
  91. package/dist/resources/hostpath.d.ts +1 -1
  92. package/dist/resources/hostpath.d.ts.map +1 -1
  93. package/dist/resources/index.d.ts +2 -5
  94. package/dist/resources/index.d.ts.map +1 -1
  95. package/dist/resources/index.js +2 -5
  96. package/dist/resources/index.js.map +1 -1
  97. package/dist/resources/namespace/namespace.d.ts +7 -9
  98. package/dist/resources/namespace/namespace.d.ts.map +1 -1
  99. package/dist/resources/namespace/namespace.js +7 -4
  100. package/dist/resources/namespace/namespace.js.map +1 -1
  101. package/dist/resources/network/http-route/http-route.d.ts +19 -0
  102. package/dist/resources/network/http-route/http-route.d.ts.map +1 -0
  103. package/dist/resources/network/http-route/http-route.js +51 -0
  104. package/dist/resources/network/http-route/http-route.js.map +1 -0
  105. package/dist/resources/network/http-route/index.d.ts.map +1 -0
  106. package/dist/resources/network/http-route/index.js.map +1 -0
  107. package/dist/resources/network/index.d.ts +3 -0
  108. package/dist/resources/network/index.d.ts.map +1 -0
  109. package/dist/resources/network/index.js +19 -0
  110. package/dist/resources/network/index.js.map +1 -0
  111. package/dist/resources/network/service/index.d.ts.map +1 -0
  112. package/dist/resources/network/service/index.js.map +1 -0
  113. package/dist/resources/network/service/service-port.d.ts +12 -0
  114. package/dist/resources/network/service/service-port.d.ts.map +1 -0
  115. package/dist/resources/{service → network/service}/service-port.js +5 -5
  116. package/dist/resources/network/service/service-port.js.map +1 -0
  117. package/dist/resources/network/service/service.d.ts +46 -0
  118. package/dist/resources/network/service/service.d.ts.map +1 -0
  119. package/dist/resources/{service → network/service}/service.js +34 -22
  120. package/dist/resources/network/service/service.js.map +1 -0
  121. package/dist/resources/network/service/utils.d.ts +5 -0
  122. package/dist/resources/network/service/utils.d.ts.map +1 -0
  123. package/dist/resources/network/service/utils.js +22 -0
  124. package/dist/resources/network/service/utils.js.map +1 -0
  125. package/dist/resources/persistent/access-mode.d.ts +4 -7
  126. package/dist/resources/persistent/access-mode.d.ts.map +1 -1
  127. package/dist/resources/persistent/access-mode.js +20 -24
  128. package/dist/resources/persistent/access-mode.js.map +1 -1
  129. package/dist/resources/persistent/claim/pvc.d.ts +17 -20
  130. package/dist/resources/persistent/claim/pvc.d.ts.map +1 -1
  131. package/dist/resources/persistent/claim/pvc.js +22 -28
  132. package/dist/resources/persistent/claim/pvc.js.map +1 -1
  133. package/dist/resources/persistent/index.d.ts +1 -1
  134. package/dist/resources/persistent/index.d.ts.map +1 -1
  135. package/dist/resources/persistent/index.js +1 -1
  136. package/dist/resources/persistent/index.js.map +1 -1
  137. package/dist/resources/persistent/volume/parse-backend.d.ts +1 -1
  138. package/dist/resources/persistent/volume/parse-backend.js +3 -3
  139. package/dist/resources/persistent/volume/parse-backend.js.map +1 -1
  140. package/dist/resources/persistent/volume/pv.d.ts +23 -25
  141. package/dist/resources/persistent/volume/pv.d.ts.map +1 -1
  142. package/dist/resources/persistent/volume/pv.js +23 -29
  143. package/dist/resources/persistent/volume/pv.js.map +1 -1
  144. package/dist/resources/persistent/volume-mode.d.ts +2 -0
  145. package/dist/resources/persistent/volume-mode.d.ts.map +1 -0
  146. package/dist/resources/persistent/volume-mode.js +3 -0
  147. package/dist/resources/persistent/volume-mode.js.map +1 -0
  148. package/dist/resources/rbac/cluster-role-binding.d.ts +12 -12
  149. package/dist/resources/rbac/cluster-role-binding.d.ts.map +1 -1
  150. package/dist/resources/rbac/cluster-role-binding.js +12 -10
  151. package/dist/resources/rbac/cluster-role-binding.js.map +1 -1
  152. package/dist/resources/rbac/cluster-role.d.ts +6 -23
  153. package/dist/resources/rbac/cluster-role.d.ts.map +1 -1
  154. package/dist/resources/rbac/cluster-role.js +9 -18
  155. package/dist/resources/rbac/cluster-role.js.map +1 -1
  156. package/dist/resources/rbac/role-props.d.ts +20 -0
  157. package/dist/resources/rbac/role-props.d.ts.map +1 -0
  158. package/dist/resources/rbac/role-props.js +17 -0
  159. package/dist/resources/rbac/role-props.js.map +1 -0
  160. package/dist/resources/rbac/service-account.d.ts +8 -8
  161. package/dist/resources/rbac/service-account.d.ts.map +1 -1
  162. package/dist/resources/rbac/service-account.js +8 -6
  163. package/dist/resources/rbac/service-account.js.map +1 -1
  164. package/dist/resources/workload/cronjob/index.d.ts +21 -0
  165. package/dist/resources/workload/cronjob/index.d.ts.map +1 -0
  166. package/dist/resources/workload/cronjob/index.js +98 -0
  167. package/dist/resources/workload/cronjob/index.js.map +1 -0
  168. package/dist/resources/workload/daemonset/daemonset.d.ts +16 -0
  169. package/dist/resources/workload/daemonset/daemonset.d.ts.map +1 -0
  170. package/dist/resources/workload/daemonset/daemonset.js +117 -0
  171. package/dist/resources/workload/daemonset/daemonset.js.map +1 -0
  172. package/dist/resources/workload/daemonset/index.d.ts +2 -0
  173. package/dist/resources/workload/daemonset/index.d.ts.map +1 -0
  174. package/dist/resources/workload/daemonset/index.js +18 -0
  175. package/dist/resources/workload/daemonset/index.js.map +1 -0
  176. package/dist/resources/workload/daemonset/props.d.ts +15 -0
  177. package/dist/resources/workload/daemonset/props.d.ts.map +1 -0
  178. package/dist/resources/{pod/container/mounts.js → workload/daemonset/props.js} +1 -1
  179. package/dist/resources/workload/daemonset/props.js.map +1 -0
  180. package/dist/resources/workload/deployment/deployment.d.ts +16 -0
  181. package/dist/resources/workload/deployment/deployment.d.ts.map +1 -0
  182. package/dist/resources/{deployment → workload/deployment}/deployment.js +39 -34
  183. package/dist/resources/workload/deployment/deployment.js.map +1 -0
  184. package/dist/resources/workload/deployment/index.d.ts.map +1 -0
  185. package/dist/resources/workload/deployment/index.js.map +1 -0
  186. package/dist/resources/workload/deployment/props.d.ts +17 -0
  187. package/dist/resources/workload/deployment/props.d.ts.map +1 -0
  188. package/dist/{_type/prefix$.js → resources/workload/deployment/props.js} +1 -1
  189. package/dist/resources/workload/deployment/props.js.map +1 -0
  190. package/dist/resources/workload/index.d.ts +7 -0
  191. package/dist/resources/workload/index.d.ts.map +1 -0
  192. package/dist/resources/{pod → workload}/index.js +6 -3
  193. package/dist/resources/workload/index.js.map +1 -0
  194. package/dist/resources/workload/pod/container/container.d.ts +47 -0
  195. package/dist/resources/workload/pod/container/container.d.ts.map +1 -0
  196. package/dist/resources/{pod → workload/pod}/container/container.js +46 -38
  197. package/dist/resources/workload/pod/container/container.js.map +1 -0
  198. package/dist/resources/workload/pod/container/index.d.ts +3 -0
  199. package/dist/resources/workload/pod/container/index.d.ts.map +1 -0
  200. package/dist/resources/{pod → workload/pod}/container/index.js +1 -0
  201. package/dist/resources/workload/pod/container/index.js.map +1 -0
  202. package/dist/resources/workload/pod/container/mounts/device.d.ts +17 -0
  203. package/dist/resources/workload/pod/container/mounts/device.d.ts.map +1 -0
  204. package/dist/resources/workload/pod/container/mounts/device.js +29 -0
  205. package/dist/resources/workload/pod/container/mounts/device.js.map +1 -0
  206. package/dist/resources/workload/pod/container/mounts/volume.d.ts +21 -0
  207. package/dist/resources/workload/pod/container/mounts/volume.d.ts.map +1 -0
  208. package/dist/resources/{pod → workload/pod}/container/mounts/volume.js +9 -7
  209. package/dist/resources/workload/pod/container/mounts/volume.js.map +1 -0
  210. package/dist/resources/workload/pod/container/ref.d.ts +6 -0
  211. package/dist/resources/workload/pod/container/ref.d.ts.map +1 -0
  212. package/dist/{runner/exporter/meta.js → resources/workload/pod/container/ref.js} +1 -1
  213. package/dist/resources/workload/pod/container/ref.js.map +1 -0
  214. package/dist/resources/workload/pod/container/scope.d.ts +25 -0
  215. package/dist/resources/workload/pod/container/scope.d.ts.map +1 -0
  216. package/dist/resources/workload/pod/container/scope.js +50 -0
  217. package/dist/resources/workload/pod/container/scope.js.map +1 -0
  218. package/dist/resources/workload/pod/container/utils.d.ts +5 -0
  219. package/dist/resources/workload/pod/container/utils.d.ts.map +1 -0
  220. package/dist/resources/workload/pod/container/utils.js +18 -0
  221. package/dist/resources/workload/pod/container/utils.js.map +1 -0
  222. package/dist/resources/workload/pod/pod.d.ts +27 -0
  223. package/dist/resources/workload/pod/pod.d.ts.map +1 -0
  224. package/dist/resources/workload/pod/pod.js +78 -0
  225. package/dist/resources/workload/pod/pod.js.map +1 -0
  226. package/dist/resources/workload/pod/volume/devices.d.ts +24 -0
  227. package/dist/resources/workload/pod/volume/devices.d.ts.map +1 -0
  228. package/dist/resources/{pod → workload/pod}/volume/devices.js +11 -9
  229. package/dist/resources/workload/pod/volume/devices.js.map +1 -0
  230. package/dist/resources/workload/pod/volume/index.d.ts +3 -0
  231. package/dist/resources/workload/pod/volume/index.d.ts.map +1 -0
  232. package/dist/resources/workload/pod/volume/index.js +8 -0
  233. package/dist/resources/workload/pod/volume/index.js.map +1 -0
  234. package/dist/resources/workload/pod/volume/volumes.d.ts +74 -0
  235. package/dist/resources/workload/pod/volume/volumes.d.ts.map +1 -0
  236. package/dist/resources/workload/pod/volume/volumes.js +111 -0
  237. package/dist/resources/workload/pod/volume/volumes.js.map +1 -0
  238. package/dist/resources/workload/statefulset/index.d.ts +2 -0
  239. package/dist/resources/workload/statefulset/index.d.ts.map +1 -0
  240. package/dist/resources/workload/statefulset/index.js +18 -0
  241. package/dist/resources/workload/statefulset/index.js.map +1 -0
  242. package/dist/resources/workload/statefulset/props.d.ts +24 -0
  243. package/dist/resources/workload/statefulset/props.d.ts.map +1 -0
  244. package/dist/{runner/proverbs.js → resources/workload/statefulset/props.js} +1 -1
  245. package/dist/resources/workload/statefulset/props.js.map +1 -0
  246. package/dist/resources/workload/statefulset/scope.d.ts +13 -0
  247. package/dist/resources/workload/statefulset/scope.d.ts.map +1 -0
  248. package/dist/resources/workload/statefulset/scope.js +26 -0
  249. package/dist/resources/workload/statefulset/scope.js.map +1 -0
  250. package/dist/resources/workload/statefulset/statefulset.d.ts +22 -0
  251. package/dist/resources/workload/statefulset/statefulset.d.ts.map +1 -0
  252. package/dist/resources/workload/statefulset/statefulset.js +110 -0
  253. package/dist/resources/workload/statefulset/statefulset.js.map +1 -0
  254. package/dist/resources/workload/util.d.ts +4 -0
  255. package/dist/resources/workload/util.d.ts.map +1 -0
  256. package/dist/resources/workload/util.js +10 -0
  257. package/dist/resources/workload/util.js.map +1 -0
  258. package/dist/resources/workload/workload-ref.d.ts +5 -0
  259. package/dist/resources/workload/workload-ref.d.ts.map +1 -0
  260. package/dist/resources/workload/workload-ref.js +3 -0
  261. package/dist/resources/workload/workload-ref.js.map +1 -0
  262. package/dist/runner/{exporter → engine}/assembler.d.ts +15 -14
  263. package/dist/runner/engine/assembler.d.ts.map +1 -0
  264. package/dist/runner/{exporter → engine}/assembler.js +63 -40
  265. package/dist/runner/engine/assembler.js.map +1 -0
  266. package/dist/runner/engine/index.d.ts +3 -0
  267. package/dist/runner/engine/index.d.ts.map +1 -0
  268. package/dist/runner/{exporter → engine}/index.js +1 -1
  269. package/dist/runner/engine/index.js.map +1 -0
  270. package/dist/runner/engine/loader.d.ts +19 -0
  271. package/dist/runner/engine/loader.d.ts.map +1 -0
  272. package/dist/runner/{exporter → engine}/loader.js +18 -19
  273. package/dist/runner/engine/loader.js.map +1 -0
  274. package/dist/runner/{exporter → engine}/manifester.d.ts +8 -8
  275. package/dist/runner/engine/manifester.d.ts.map +1 -0
  276. package/dist/runner/{exporter → engine}/manifester.js +4 -25
  277. package/dist/runner/engine/manifester.js.map +1 -0
  278. package/dist/runner/{exporter → engine}/saver.d.ts +5 -4
  279. package/dist/runner/engine/saver.d.ts.map +1 -0
  280. package/dist/runner/{exporter → engine}/saver.js +5 -10
  281. package/dist/runner/engine/saver.js.map +1 -0
  282. package/dist/runner/engine/serializer.d.ts +20 -0
  283. package/dist/runner/engine/serializer.d.ts.map +1 -0
  284. package/dist/runner/{exporter → engine}/serializer.js +8 -17
  285. package/dist/runner/engine/serializer.js.map +1 -0
  286. package/dist/runner/{exporter → engine}/stage.d.ts +2 -2
  287. package/dist/runner/engine/stage.d.ts.map +1 -0
  288. package/dist/runner/{exporter → engine}/stage.js +10 -10
  289. package/dist/runner/engine/stage.js.map +1 -0
  290. package/dist/runner/error.d.ts +7 -0
  291. package/dist/runner/error.d.ts.map +1 -0
  292. package/dist/runner/error.js +12 -0
  293. package/dist/runner/error.js.map +1 -0
  294. package/dist/runner/index.d.ts +1 -1
  295. package/dist/runner/index.d.ts.map +1 -1
  296. package/dist/runner/index.js +3 -15
  297. package/dist/runner/index.js.map +1 -1
  298. package/dist/runner/runner.d.ts +8 -6
  299. package/dist/runner/runner.d.ts.map +1 -1
  300. package/dist/runner/runner.js +27 -22
  301. package/dist/runner/runner.js.map +1 -1
  302. package/dist/runner/viz/progress-shower.d.ts +11 -0
  303. package/dist/runner/viz/progress-shower.d.ts.map +1 -0
  304. package/dist/runner/viz/progress-shower.js +63 -0
  305. package/dist/runner/viz/progress-shower.js.map +1 -0
  306. package/dist/runner/{summarizer.d.ts → viz/summarizer.d.ts} +5 -5
  307. package/dist/runner/viz/summarizer.d.ts.map +1 -0
  308. package/dist/runner/{summarizer.js → viz/summarizer.js} +9 -10
  309. package/dist/runner/viz/summarizer.js.map +1 -0
  310. package/dist/util/merge.d.ts +2 -0
  311. package/dist/util/merge.d.ts.map +1 -0
  312. package/dist/util/merge.js +3 -0
  313. package/dist/util/merge.js.map +1 -0
  314. package/package.json +12 -12
  315. package/src/common-world.ts +10 -11
  316. package/src/env/env.ts +33 -35
  317. package/src/env/error.ts +7 -0
  318. package/src/env/index.ts +1 -1
  319. package/src/env/types.ts +5 -5
  320. package/src/index.ts +2 -2
  321. package/src/kinds.ts +1 -0
  322. package/src/origins/file/file.ts +25 -33
  323. package/src/origins/file/index.ts +0 -1
  324. package/src/origins/file/section.ts +17 -16
  325. package/src/origins/world.ts +19 -13
  326. package/src/resources/config/configmap.ts +14 -13
  327. package/src/resources/config/index.ts +0 -1
  328. package/src/resources/config/resolver.ts +8 -5
  329. package/src/resources/config/secret.ts +11 -7
  330. package/src/resources/errors.ts +7 -0
  331. package/src/resources/hostpath.ts +1 -1
  332. package/src/resources/index.ts +2 -5
  333. package/src/resources/namespace/namespace.ts +11 -8
  334. package/src/resources/network/http-route/http-route.ts +62 -0
  335. package/src/resources/network/index.ts +2 -0
  336. package/src/resources/network/service/service-port.ts +17 -0
  337. package/src/resources/network/service/service.ts +135 -0
  338. package/src/resources/network/service/utils.ts +20 -0
  339. package/src/resources/persistent/access-mode.ts +20 -24
  340. package/src/resources/persistent/claim/pvc.ts +41 -43
  341. package/src/resources/persistent/index.ts +1 -1
  342. package/src/resources/persistent/volume/parse-backend.ts +3 -3
  343. package/src/resources/persistent/volume/pv.ts +55 -51
  344. package/src/resources/persistent/volume-mode.ts +1 -0
  345. package/src/resources/rbac/cluster-role-binding.ts +19 -17
  346. package/src/resources/rbac/cluster-role.ts +13 -62
  347. package/src/resources/rbac/role-props.ts +26 -0
  348. package/src/resources/rbac/service-account.ts +14 -12
  349. package/src/resources/workload/cronjob/index.ts +74 -0
  350. package/src/resources/workload/daemonset/daemonset.ts +82 -0
  351. package/src/resources/workload/daemonset/index.ts +1 -0
  352. package/src/resources/workload/daemonset/props.ts +19 -0
  353. package/src/resources/workload/deployment/deployment.ts +79 -0
  354. package/src/resources/workload/deployment/props.ts +19 -0
  355. package/src/resources/workload/index.ts +6 -0
  356. package/src/resources/workload/pod/container/container.ts +227 -0
  357. package/src/resources/{pod → workload/pod}/container/index.ts +1 -0
  358. package/src/resources/workload/pod/container/mounts/device.ts +41 -0
  359. package/src/resources/workload/pod/container/mounts/volume.ts +46 -0
  360. package/src/resources/workload/pod/container/ref.ts +6 -0
  361. package/src/resources/workload/pod/container/scope.ts +83 -0
  362. package/src/resources/workload/pod/container/utils.ts +16 -0
  363. package/src/resources/workload/pod/pod.ts +96 -0
  364. package/src/resources/workload/pod/volume/devices.ts +56 -0
  365. package/src/resources/workload/pod/volume/index.ts +2 -0
  366. package/src/resources/workload/pod/volume/volumes.ts +203 -0
  367. package/src/resources/workload/statefulset/index.ts +1 -0
  368. package/src/resources/workload/statefulset/props.ts +34 -0
  369. package/src/resources/workload/statefulset/scope.ts +25 -0
  370. package/src/resources/workload/statefulset/statefulset.ts +137 -0
  371. package/src/resources/workload/util.ts +8 -0
  372. package/src/resources/workload/workload-ref.ts +5 -0
  373. package/src/runner/{exporter → engine}/assembler.ts +83 -54
  374. package/src/runner/engine/index.ts +2 -0
  375. package/src/runner/{exporter → engine}/loader.ts +32 -29
  376. package/src/runner/{exporter → engine}/manifester.ts +20 -32
  377. package/src/runner/{exporter → engine}/saver.ts +8 -9
  378. package/src/runner/{exporter → engine}/serializer.ts +21 -20
  379. package/src/runner/{exporter → engine}/stage.ts +5 -5
  380. package/src/runner/error.ts +7 -0
  381. package/src/runner/index.ts +1 -1
  382. package/src/runner/runner.ts +44 -29
  383. package/src/runner/{exporter → viz}/progress-shower.ts +21 -21
  384. package/src/runner/{summarizer.ts → viz/summarizer.ts} +21 -21
  385. package/dist/_type/prefix$.d.ts +0 -4
  386. package/dist/_type/prefix$.d.ts.map +0 -1
  387. package/dist/_type/prefix$.js.map +0 -1
  388. package/dist/kinds/apps.d.ts +0 -29
  389. package/dist/kinds/apps.d.ts.map +0 -1
  390. package/dist/kinds/apps.js.map +0 -1
  391. package/dist/kinds/batch.d.ts +0 -17
  392. package/dist/kinds/batch.d.ts.map +0 -1
  393. package/dist/kinds/batch.js.map +0 -1
  394. package/dist/kinds/default.d.ts +0 -73
  395. package/dist/kinds/default.d.ts.map +0 -1
  396. package/dist/kinds/default.js.map +0 -1
  397. package/dist/kinds/gateway.d.ts +0 -29
  398. package/dist/kinds/gateway.d.ts.map +0 -1
  399. package/dist/kinds/gateway.js.map +0 -1
  400. package/dist/kinds/index.d.ts.map +0 -1
  401. package/dist/kinds/index.js.map +0 -1
  402. package/dist/kinds/metrics.d.ts +0 -17
  403. package/dist/kinds/metrics.d.ts.map +0 -1
  404. package/dist/kinds/metrics.js.map +0 -1
  405. package/dist/kinds/networking.d.ts +0 -13
  406. package/dist/kinds/networking.d.ts.map +0 -1
  407. package/dist/kinds/networking.js.map +0 -1
  408. package/dist/kinds/rbac.d.ts +0 -25
  409. package/dist/kinds/rbac.d.ts.map +0 -1
  410. package/dist/kinds/rbac.js.map +0 -1
  411. package/dist/kinds/storage.d.ts +0 -17
  412. package/dist/kinds/storage.d.ts.map +0 -1
  413. package/dist/kinds/storage.js.map +0 -1
  414. package/dist/origins/file/modifier.d.ts +0 -10
  415. package/dist/origins/file/modifier.d.ts.map +0 -1
  416. package/dist/origins/file/modifier.js +0 -21
  417. package/dist/origins/file/modifier.js.map +0 -1
  418. package/dist/resources/config/config-keys-of.d.ts +0 -2
  419. package/dist/resources/config/config-keys-of.d.ts.map +0 -1
  420. package/dist/resources/config/config-keys-of.js +0 -3
  421. package/dist/resources/config/config-keys-of.js.map +0 -1
  422. package/dist/resources/config/key-ref.d.ts +0 -7
  423. package/dist/resources/config/key-ref.d.ts.map +0 -1
  424. package/dist/resources/config/key-ref.js +0 -13
  425. package/dist/resources/config/key-ref.js.map +0 -1
  426. package/dist/resources/cronjob/index.d.ts +0 -20
  427. package/dist/resources/cronjob/index.d.ts.map +0 -1
  428. package/dist/resources/cronjob/index.js +0 -37
  429. package/dist/resources/cronjob/index.js.map +0 -1
  430. package/dist/resources/deployment/deployment.d.ts +0 -30
  431. package/dist/resources/deployment/deployment.d.ts.map +0 -1
  432. package/dist/resources/deployment/deployment.js.map +0 -1
  433. package/dist/resources/deployment/index.d.ts.map +0 -1
  434. package/dist/resources/deployment/index.js.map +0 -1
  435. package/dist/resources/http-route/http-route.d.ts +0 -21
  436. package/dist/resources/http-route/http-route.d.ts.map +0 -1
  437. package/dist/resources/http-route/http-route.js +0 -45
  438. package/dist/resources/http-route/http-route.js.map +0 -1
  439. package/dist/resources/http-route/index.d.ts.map +0 -1
  440. package/dist/resources/http-route/index.js.map +0 -1
  441. package/dist/resources/persistent/block-mode.d.ts +0 -2
  442. package/dist/resources/persistent/block-mode.d.ts.map +0 -1
  443. package/dist/resources/persistent/block-mode.js.map +0 -1
  444. package/dist/resources/pod/container/container.d.ts +0 -47
  445. package/dist/resources/pod/container/container.d.ts.map +0 -1
  446. package/dist/resources/pod/container/container.js.map +0 -1
  447. package/dist/resources/pod/container/index.d.ts +0 -2
  448. package/dist/resources/pod/container/index.d.ts.map +0 -1
  449. package/dist/resources/pod/container/index.js.map +0 -1
  450. package/dist/resources/pod/container/mounts/device.d.ts +0 -17
  451. package/dist/resources/pod/container/mounts/device.d.ts.map +0 -1
  452. package/dist/resources/pod/container/mounts/device.js +0 -27
  453. package/dist/resources/pod/container/mounts/device.js.map +0 -1
  454. package/dist/resources/pod/container/mounts/volume.d.ts +0 -21
  455. package/dist/resources/pod/container/mounts/volume.d.ts.map +0 -1
  456. package/dist/resources/pod/container/mounts/volume.js.map +0 -1
  457. package/dist/resources/pod/container/mounts.d.ts +0 -3
  458. package/dist/resources/pod/container/mounts.d.ts.map +0 -1
  459. package/dist/resources/pod/container/mounts.js.map +0 -1
  460. package/dist/resources/pod/index.d.ts +0 -4
  461. package/dist/resources/pod/index.d.ts.map +0 -1
  462. package/dist/resources/pod/index.js.map +0 -1
  463. package/dist/resources/pod/pod-template.d.ts +0 -54
  464. package/dist/resources/pod/pod-template.d.ts.map +0 -1
  465. package/dist/resources/pod/pod-template.js +0 -119
  466. package/dist/resources/pod/pod-template.js.map +0 -1
  467. package/dist/resources/pod/volume/devices.d.ts +0 -24
  468. package/dist/resources/pod/volume/devices.d.ts.map +0 -1
  469. package/dist/resources/pod/volume/devices.js.map +0 -1
  470. package/dist/resources/pod/volume/index.d.ts +0 -3
  471. package/dist/resources/pod/volume/index.d.ts.map +0 -1
  472. package/dist/resources/pod/volume/index.js +0 -8
  473. package/dist/resources/pod/volume/index.js.map +0 -1
  474. package/dist/resources/pod/volume/volumes.d.ts +0 -66
  475. package/dist/resources/pod/volume/volumes.d.ts.map +0 -1
  476. package/dist/resources/pod/volume/volumes.js +0 -97
  477. package/dist/resources/pod/volume/volumes.js.map +0 -1
  478. package/dist/resources/service/index.d.ts.map +0 -1
  479. package/dist/resources/service/index.js.map +0 -1
  480. package/dist/resources/service/service-port.d.ts +0 -12
  481. package/dist/resources/service/service-port.d.ts.map +0 -1
  482. package/dist/resources/service/service-port.js.map +0 -1
  483. package/dist/resources/service/service.d.ts +0 -39
  484. package/dist/resources/service/service.d.ts.map +0 -1
  485. package/dist/resources/service/service.js.map +0 -1
  486. package/dist/resources/utils/adapters.d.ts +0 -7
  487. package/dist/resources/utils/adapters.d.ts.map +0 -1
  488. package/dist/resources/utils/adapters.js +0 -32
  489. package/dist/resources/utils/adapters.js.map +0 -1
  490. package/dist/runner/exporter/assembler.d.ts.map +0 -1
  491. package/dist/runner/exporter/assembler.js.map +0 -1
  492. package/dist/runner/exporter/index.d.ts +0 -3
  493. package/dist/runner/exporter/index.d.ts.map +0 -1
  494. package/dist/runner/exporter/index.js.map +0 -1
  495. package/dist/runner/exporter/loader.d.ts +0 -18
  496. package/dist/runner/exporter/loader.d.ts.map +0 -1
  497. package/dist/runner/exporter/loader.js.map +0 -1
  498. package/dist/runner/exporter/manifester.d.ts.map +0 -1
  499. package/dist/runner/exporter/manifester.js.map +0 -1
  500. package/dist/runner/exporter/meta.d.ts +0 -2
  501. package/dist/runner/exporter/meta.d.ts.map +0 -1
  502. package/dist/runner/exporter/meta.js.map +0 -1
  503. package/dist/runner/exporter/progress-shower.d.ts +0 -11
  504. package/dist/runner/exporter/progress-shower.d.ts.map +0 -1
  505. package/dist/runner/exporter/progress-shower.js +0 -69
  506. package/dist/runner/exporter/progress-shower.js.map +0 -1
  507. package/dist/runner/exporter/saver.d.ts.map +0 -1
  508. package/dist/runner/exporter/saver.js.map +0 -1
  509. package/dist/runner/exporter/serializer.d.ts +0 -19
  510. package/dist/runner/exporter/serializer.d.ts.map +0 -1
  511. package/dist/runner/exporter/serializer.js.map +0 -1
  512. package/dist/runner/exporter/stage.d.ts.map +0 -1
  513. package/dist/runner/exporter/stage.js.map +0 -1
  514. package/dist/runner/exporter/validator.d.ts +0 -16
  515. package/dist/runner/exporter/validator.d.ts.map +0 -1
  516. package/dist/runner/exporter/validator.js +0 -12
  517. package/dist/runner/exporter/validator.js.map +0 -1
  518. package/dist/runner/paths.d.ts +0 -2
  519. package/dist/runner/paths.d.ts.map +0 -1
  520. package/dist/runner/paths.js +0 -5
  521. package/dist/runner/paths.js.map +0 -1
  522. package/dist/runner/proverbs.d.ts +0 -2
  523. package/dist/runner/proverbs.d.ts.map +0 -1
  524. package/dist/runner/proverbs.js.map +0 -1
  525. package/dist/runner/silly/proverbs.d.ts +0 -7
  526. package/dist/runner/silly/proverbs.d.ts.map +0 -1
  527. package/dist/runner/silly/proverbs.js +0 -21
  528. package/dist/runner/silly/proverbs.js.map +0 -1
  529. package/dist/runner/summarizer.d.ts.map +0 -1
  530. package/dist/runner/summarizer.js.map +0 -1
  531. package/proverbs.txt +0 -20
  532. package/src/_type/prefix$.ts +0 -3
  533. package/src/origins/file/modifier.ts +0 -21
  534. package/src/resources/config/key-ref.ts +0 -8
  535. package/src/resources/cronjob/index.ts +0 -50
  536. package/src/resources/deployment/deployment.ts +0 -95
  537. package/src/resources/http-route/http-route.ts +0 -60
  538. package/src/resources/persistent/block-mode.ts +0 -1
  539. package/src/resources/pod/container/container.ts +0 -215
  540. package/src/resources/pod/container/mounts/device.ts +0 -33
  541. package/src/resources/pod/container/mounts/volume.ts +0 -38
  542. package/src/resources/pod/container/mounts.ts +0 -2
  543. package/src/resources/pod/index.ts +0 -3
  544. package/src/resources/pod/pod-template.ts +0 -166
  545. package/src/resources/pod/volume/devices.ts +0 -55
  546. package/src/resources/pod/volume/index.ts +0 -2
  547. package/src/resources/pod/volume/volumes.ts +0 -170
  548. package/src/resources/service/service-port.ts +0 -17
  549. package/src/resources/service/service.ts +0 -101
  550. package/src/resources/utils/adapters.ts +0 -29
  551. package/src/runner/exporter/index.ts +0 -2
  552. package/src/runner/exporter/validator.ts +0 -13
  553. package/src/runner/paths.ts +0 -1
  554. package/src/runner/proverbs.ts +0 -0
  555. package/src/runner/silly/proverbs.ts +0 -14
  556. /package/dist/{kinds → gvks}/apps.js +0 -0
  557. /package/dist/{kinds → gvks}/batch.js +0 -0
  558. /package/dist/{kinds → gvks}/default.js +0 -0
  559. /package/dist/{kinds → gvks}/gateway.js +0 -0
  560. /package/dist/{kinds → gvks}/index.d.ts +0 -0
  561. /package/dist/{kinds → gvks}/index.js +0 -0
  562. /package/dist/{kinds → gvks}/metrics.js +0 -0
  563. /package/dist/{kinds → gvks}/networking.js +0 -0
  564. /package/dist/{kinds → gvks}/rbac.js +0 -0
  565. /package/dist/{kinds → gvks}/storage.js +0 -0
  566. /package/dist/resources/{http-route → network/http-route}/index.d.ts +0 -0
  567. /package/dist/resources/{http-route → network/http-route}/index.js +0 -0
  568. /package/dist/resources/{service → network/service}/index.d.ts +0 -0
  569. /package/dist/resources/{service → network/service}/index.js +0 -0
  570. /package/dist/resources/{deployment → workload/deployment}/index.d.ts +0 -0
  571. /package/dist/resources/{deployment → workload/deployment}/index.js +0 -0
  572. /package/src/{kinds → gvks}/apps.ts +0 -0
  573. /package/src/{kinds → gvks}/batch.ts +0 -0
  574. /package/src/{kinds → gvks}/default.ts +0 -0
  575. /package/src/{kinds → gvks}/gateway.ts +0 -0
  576. /package/src/{kinds → gvks}/index.ts +0 -0
  577. /package/src/{kinds → gvks}/metrics.ts +0 -0
  578. /package/src/{kinds → gvks}/networking.ts +0 -0
  579. /package/src/{kinds → gvks}/rbac.ts +0 -0
  580. /package/src/{kinds → gvks}/storage.ts +0 -0
  581. /package/src/resources/{config/config-keys-of.ts → annotations.ts} +0 -0
  582. /package/src/resources/{http-route → network/http-route}/index.ts +0 -0
  583. /package/src/resources/{service → network/service}/index.ts +0 -0
  584. /package/src/resources/{deployment → workload/deployment}/index.ts +0 -0
  585. /package/src/{runner/exporter/meta.ts → util/merge.ts} +0 -0
@@ -0,0 +1,137 @@
1
+ import { K8sResource, ResourceRef, TemplateOrigin } from "@k8ts/instruments"
2
+ import { K8S } from "@k8ts/sample-interfaces"
3
+ import { doddle, seq } from "doddle"
4
+ import { merge, omit } from "lodash"
5
+ import { Pvc } from "../../.."
6
+ import { apps } from "../../../gvks/apps"
7
+ import { K8tsResourceError } from "../../errors"
8
+ import { Service } from "../../network"
9
+ import type { Pod_Scope } from "../pod/container/scope"
10
+ import { Pod } from "../pod/pod"
11
+ import { createSelectionMetadata } from "../util"
12
+ import type { Workload_Ref } from "../workload-ref"
13
+ import type { StatefulSet_Props } from "./props"
14
+ import { StatefulSet_Scope } from "./scope"
15
+ export class StatefulSet<
16
+ Name extends string = string,
17
+ SvcName extends string = string,
18
+ Ports extends string = string,
19
+ SvcPorts extends NoInfer<Ports> = Ports
20
+ >
21
+ extends K8sResource<Name, StatefulSet_Props<Ports, SvcPorts, SvcName>>
22
+ implements Workload_Ref<Ports>
23
+ {
24
+ private readonly _template = new TemplateOrigin(`${this.ident.name}_template`, {
25
+ owner: this
26
+ })
27
+ readonly Service = new Service(
28
+ this.props.$service.name,
29
+ {
30
+ ...this.props.$service,
31
+ $backend: this,
32
+ $frontend: {
33
+ type: "Headless"
34
+ }
35
+ },
36
+ {
37
+ metadata: {
38
+ "^k8ts.org/auto-created-by": this.__entity_id__
39
+ }
40
+ }
41
+ )
42
+ get kind() {
43
+ return apps.v1.StatefulSet._
44
+ }
45
+
46
+ protected __needs__(): Record<string, ResourceRef> {
47
+ return {
48
+ service: this.Service
49
+ }
50
+ }
51
+
52
+ get selectorLabels() {
53
+ return createSelectionMetadata(this)
54
+ }
55
+
56
+ private _podTemplate = doddle(() => {
57
+ const self = this
58
+ const wrappedContainers = (podScope: Pod_Scope) => {
59
+ return this.props.$template.containers$(new StatefulSet_Scope(podScope, self._template))
60
+ }
61
+ const resource = new Pod(
62
+ `${self.ident.name}`,
63
+ {
64
+ ...self.props.$template,
65
+ containers$: wrappedContainers
66
+ },
67
+ {
68
+ origins: {
69
+ own: self._template,
70
+ subscope: self["__origin__"]
71
+ },
72
+ metadata: this.selectorLabels
73
+ }
74
+ )
75
+
76
+ return resource
77
+ })
78
+
79
+ protected __kids__(): Iterable<ResourceRef> {
80
+ this._podTemplate.pull()
81
+ return [...this.PvcTemplates, this.PodTemplate]
82
+ }
83
+
84
+ protected async __body__(): Promise<K8S.KubeStatefulSetProps> {
85
+ const self = this
86
+ const template = await self.PodTemplate["__manifest__"]()
87
+ const noKindFields = omit(template, ["kind", "apiVersion"])
88
+ const spec = {
89
+ replicas: self.props.$replicas,
90
+ selector: {
91
+ matchLabels: this.selectorLabels.labels
92
+ },
93
+ serviceName: self.Service.ident.name,
94
+ template: noKindFields,
95
+ volumeClaimTemplates: await Promise.all(
96
+ seq(self.PvcTemplates).map(pvc => pvc["__manifest__"]())
97
+ ),
98
+ updateStrategy: self._updateStrategy
99
+ } satisfies K8S.StatefulSetSpec
100
+ const spec2 = merge(spec, self.props.$$manifest)
101
+ return {
102
+ spec: spec2
103
+ }
104
+ }
105
+
106
+ private get _updateStrategy() {
107
+ const strategy = this.props.$updateStrategy
108
+ if (!strategy) {
109
+ return undefined
110
+ }
111
+ if (strategy.type === "OnDelete") {
112
+ return { type: "OnDelete" }
113
+ }
114
+ if (strategy.type === "RollingUpdate") {
115
+ return {
116
+ type: "RollingUpdate",
117
+ rollingUpdate: omit(strategy, "type")
118
+ }
119
+ }
120
+ throw new K8tsResourceError(`Invalid update strategy type: ${strategy}`)
121
+ }
122
+
123
+ get PodTemplate() {
124
+ return this._podTemplate.pull()
125
+ }
126
+
127
+ get PvcTemplates() {
128
+ this._podTemplate.pull()
129
+ return seq(this._template.resources)
130
+ .filter(x => x.is(Pvc))
131
+ .toIterable()
132
+ }
133
+
134
+ get ports() {
135
+ return this.PodTemplate.ports
136
+ }
137
+ }
@@ -0,0 +1,8 @@
1
+ import type { K8sResource } from "@k8ts/instruments"
2
+ import { Metadata } from "@k8ts/metadata"
3
+
4
+ export function createSelectionMetadata(r: K8sResource) {
5
+ return new Metadata({
6
+ "%k8ts.org/owner": r["__entity_id__"]
7
+ })
8
+ }
@@ -0,0 +1,5 @@
1
+ import type { PortExports, ResourceRef } from "@k8ts/instruments"
2
+
3
+ export type Workload_Ref<Ports extends string> = ResourceRef & {
4
+ ports: PortExports<Ports>
5
+ }
@@ -1,66 +1,102 @@
1
- import { OriginNode, type Origin_Exporter } from "@k8ts/instruments"
2
- import { Meta } from "@k8ts/metadata"
1
+ import { OriginVertex, type ExporterOrigin, type ResourceVertex } from "@k8ts/instruments"
2
+ import { Metadata, type Metadata_Input } from "@k8ts/metadata"
3
3
  import { aseq } from "doddle"
4
- import Emittery from "emittery"
4
+ import EventEmitter from "eventemitter3"
5
5
  import { cloneDeep } from "lodash"
6
- import { Assembler_RscLoader, type Assembler_RscLoaderEvents } from "./loader"
7
- import { Manifester, NodeManifest, type ManifesterEventsTable } from "./manifester"
8
- import { ManifestSaver, type ManifestSaverEventsTable } from "./saver"
9
- import { YamlSerializer, type SerializerEventsTable } from "./serializer"
10
- import { NodeGraphValidator, ValidatorEventsTable } from "./validator"
6
+ import path from "path"
7
+ import { version } from "../../version"
8
+ import { Engine_ResourceLoader, type AssemblerRscLoaderEvents } from "./loader"
9
+ import { Engine_Manifester, NodeManifest, type ManifesterEventsTable } from "./manifester"
10
+ import { Engine_Saver, type ManifestSaverEventsTable } from "./saver"
11
+ import { Engine_Serializer_Yaml, type SerializerEventsTable } from "./serializer"
11
12
 
12
- export class Assembler extends Emittery<AssemblerEventsTable> {
13
- constructor(private readonly _options: AssemblerOptions) {
14
- super()
13
+ export const assemblerEventNames = (() => {
14
+ const rec: Record<keyof AssemblerEventsTable, true> = {
15
+ purge: true,
16
+ stage: true,
17
+ load: true,
18
+ manifest: true,
19
+ serialize: true,
20
+ save: true
15
21
  }
22
+ return Object.keys(rec) as (keyof AssemblerEventsTable)[]
23
+ })()
24
+ export class Assembler {
25
+ private _emitter: EventEmitter<AssemblerEventsTable> = new EventEmitter()
26
+ constructor(private readonly _options: AssemblerOptions) {}
16
27
 
17
- async assemble(inFiles: Iterable<Origin_Exporter>) {
18
- const _emit = async <Name extends keyof AssemblerEventsTable>(
19
- event: Name,
28
+ on<Name extends keyof AssemblerEventsTable>(
29
+ event: Name,
30
+ listener: (payload: AssemblerEventsTable[Name]) => void
31
+ ) {
32
+ this._emitter.on(event, listener as any)
33
+ return this
34
+ }
35
+
36
+ onAny(
37
+ handler: <Name extends keyof AssemblerEventsTable>(
38
+ name: Name,
20
39
  payload: AssemblerEventsTable[Name]
21
- ) => {
22
- return await this.emit(event, payload)
40
+ ) => void
41
+ ) {
42
+ for (const eventName of assemblerEventNames) {
43
+ this._emitter.on(eventName, (payload: unknown) => {
44
+ handler(eventName, payload as any)
45
+ })
23
46
  }
24
- const validator = new NodeGraphValidator({})
25
- const loader = new Assembler_RscLoader({})
26
- loader.onAny(_emit)
27
- const generator = new Manifester({
28
- cwd: this._options.cwd
47
+ return this
48
+ }
49
+ private _attachProductionAnnotations(resource: ResourceVertex) {
50
+ const loc = resource.trace.format({
51
+ cwd: this._options.displayCwd || this._options.cwd
52
+ })
53
+ resource.metadata!.add(`build.k8ts.org/`, {
54
+ "^constructed-at": loc,
55
+ "^produced-by": `k8ts@${version}`
56
+ })
57
+ }
58
+ async assemble(inFiles: Iterable<ExporterOrigin>) {
59
+ const emitter = this._emitter
60
+ const loader = new Engine_ResourceLoader({
61
+ emitter
62
+ })
63
+ emitter.on("load", ({ resource }) => {
64
+ this._attachProductionAnnotations(resource)
29
65
  })
30
- generator.onAny(_emit)
31
- const serializer = new YamlSerializer({})
32
- serializer.onAny(_emit)
33
- const saver = new ManifestSaver({
34
- outdir: this._options.outdir
66
+ const generator = new Engine_Manifester({
67
+ cwd: this._options.cwd,
68
+ emitter
69
+ })
70
+ const serializer = new Engine_Serializer_Yaml({ emitter })
71
+ const saver = new Engine_Saver({
72
+ outdir: path.resolve(this._options.cwd ?? ".", this._options.outdir),
73
+ emitter
35
74
  })
36
- saver.onAny(_emit)
37
75
  const reports = aseq(inFiles)
38
- .map(x => x.node)
76
+ .map(x => x.__vertex__)
39
77
  .before(async () => {
40
- await _emit("stage", { stage: "gathering" })
41
- })
42
- .each(async file => {
43
- await _emit("received-file", { file: file })
78
+ emitter.emit("stage", { stage: "gathering" })
44
79
  })
80
+
45
81
  .after(async () => {
46
- await _emit("stage", { stage: "loading" })
82
+ emitter.emit("stage", { stage: "loading" })
47
83
  })
48
84
  .collect()
49
85
  .map(async file => {
50
86
  const loaded = await loader.load(file)
51
- loaded.forEach(r => r.meta!.add(this._options.meta))
87
+ loaded.forEach(r => r.metadata!.add(this._options.metadata))
52
88
  return {
53
89
  file: file,
54
- resources: loaded.filter(x => !x.isExternal)
90
+ resources: loaded.filter(x => !x.noEmit)
55
91
  }
56
92
  })
57
93
  .after(async () => {
58
- await _emit("stage", { stage: "manifesting" })
94
+ emitter.emit("stage", { stage: "manifesting" })
59
95
  })
60
96
  .collect()
61
97
  .map(async ({ file, resources }) => {
62
98
  const manifests = await aseq(resources)
63
- .filter(x => !x.disabled)
99
+ .filter(x => !x.noEmit)
64
100
  .map(async resource => {
65
101
  return await generator.generate(resource)
66
102
  })
@@ -72,17 +108,11 @@ export class Assembler extends Emittery<AssemblerEventsTable> {
72
108
  resources: manifests
73
109
  } satisfies FileNodes
74
110
  })
111
+
75
112
  .after(async () => {
76
- await _emit("stage", { stage: "validating" })
77
- })
78
- .chunk(1000000)
79
- .concatMap(async x => {
80
- validator.validate(x)
81
- return x
82
- })
83
- .after(async () => {
84
- await _emit("stage", { stage: "serializing" })
113
+ emitter.emit("stage", { stage: "serializing" })
85
114
  })
115
+ .collect()
86
116
  .map(async ({ file, resources }) => {
87
117
  const artifacts = await aseq(resources)
88
118
  .map(async obj => {
@@ -100,7 +130,7 @@ export class Assembler extends Emittery<AssemblerEventsTable> {
100
130
  }
101
131
  })
102
132
  .after(async () => {
103
- await _emit("stage", { stage: "saving" })
133
+ emitter.emit("stage", { stage: "saving" })
104
134
  })
105
135
  .after(async () => {
106
136
  await saver.prepareOnce()
@@ -120,7 +150,7 @@ export class Assembler extends Emittery<AssemblerEventsTable> {
120
150
  }
121
151
  })
122
152
  .after(async () => {
123
- await _emit("stage", { stage: "done" })
153
+ emitter.emit("stage", { stage: "done" })
124
154
  })
125
155
  .collect()
126
156
  .toArray()
@@ -132,14 +162,14 @@ export class Assembler extends Emittery<AssemblerEventsTable> {
132
162
  }
133
163
  }
134
164
  export interface FileNodes {
135
- file: OriginNode
165
+ file: OriginVertex
136
166
  resources: NodeManifest[]
137
167
  }
138
168
  export interface Artifact extends NodeManifest {
139
169
  yaml: string
140
170
  }
141
171
  export interface AssembledFile {
142
- file: OriginNode
172
+ file: OriginVertex
143
173
  path: string
144
174
  filename: string
145
175
  bytes: number
@@ -150,10 +180,11 @@ export interface AssembledResult {
150
180
  options: AssemblerOptions
151
181
  }
152
182
  export interface AssemblerOptions {
183
+ displayCwd?: string
153
184
  cwd?: string
154
185
  printOptions?: boolean
155
186
  outdir: string
156
- meta?: Omit<Meta.Input, "name" | "namespace"> | Meta
187
+ metadata?: Omit<Metadata_Input, "name" | "namespace"> | Metadata
157
188
  }
158
189
  export type AssemblyStage =
159
190
  | "loading"
@@ -169,9 +200,7 @@ export interface AssemblerEventsTable
169
200
  extends ManifestSaverEventsTable,
170
201
  SerializerEventsTable,
171
202
  ManifesterEventsTable,
172
- Assembler_RscLoaderEvents,
173
- ValidatorEventsTable {
174
- ["received-file"]: { file: OriginNode }
203
+ AssemblerRscLoaderEvents {
175
204
  ["stage"]: { stage: AssemblyStage }
176
205
  }
177
206
  export type AnyAssemblerEvent = {
@@ -0,0 +1,2 @@
1
+ export * from "../viz/progress-shower"
2
+ export * from "./assembler"
@@ -1,26 +1,24 @@
1
- import { OriginNode, Rsc_Node, type Node, type Rsc_Top } from "@k8ts/instruments"
2
- import Emittery from "emittery"
3
- import { MakeError } from "../../error"
4
- export class Assembler_RscLoader extends Emittery<Assembler_RscLoaderEvents> {
5
- constructor(private readonly _options: Assembler_RscLoaderOptions) {
6
- super()
7
- }
1
+ import { OriginVertex, ResourceVertex, type K8sResource, type Vertex } from "@k8ts/instruments"
2
+ import type EventEmitter from "eventemitter3"
3
+ import { K8tsEngineError } from "../error"
4
+ export class Engine_ResourceLoader {
5
+ constructor(private readonly _options: AssemblerRscLoaderOptions) {}
8
6
 
9
- private _checkNames(resources: Rsc_Node[]) {
10
- let names = new Map<string, Rsc_Node>()
7
+ private _checkNames(resources: ResourceVertex[]) {
8
+ let names = new Map<string, ResourceVertex>()
11
9
  const nameRegexp = /^[a-zA-Z0-9][a-zA-Z0-9_-]*$/
12
10
  for (const resource of resources) {
13
- const name = [resource.kind.name, resource.namespace, resource.name]
11
+ const name = [resource.kind.value, resource.namespace, resource.name]
14
12
  .filter(Boolean)
15
13
  .join("/")
16
14
  const existing = names.get(name)
17
15
  if (existing) {
18
- throw new MakeError(
16
+ throw new K8tsEngineError(
19
17
  `Duplicate resource designation ${name}. Existing: ${existing.format("source")}, new: ${resource.format("source")}`
20
18
  )
21
19
  }
22
20
  if (!nameRegexp.test(resource.name)) {
23
- throw new MakeError(
21
+ throw new K8tsEngineError(
24
22
  `Invalid resource name ${resource.name}. Must match ${nameRegexp}`
25
23
  )
26
24
  }
@@ -28,13 +26,16 @@ export class Assembler_RscLoader extends Emittery<Assembler_RscLoaderEvents> {
28
26
  }
29
27
  }
30
28
 
31
- async load(input: OriginNode) {
29
+ async load(input: OriginVertex) {
30
+ if (input.noEmit) {
31
+ return []
32
+ }
32
33
  // TODO: Handle ORIGINS that are referenced but not passed to the runner
33
- let resources = [] as Rsc_Node[]
34
+ let resources = [] as ResourceVertex[]
34
35
 
35
- const addResource = async (res: Node) => {
36
- if (!(res instanceof Rsc_Node)) {
37
- throw new Error(`Expected ResourceNode, got ${res.constructor.name}`)
36
+ const addResource = async (res: Vertex) => {
37
+ if (!(res instanceof ResourceVertex)) {
38
+ throw new K8tsEngineError(`Expected ResourceNode, got ${res.constructor.name}`)
38
39
  }
39
40
  if (resources.some(r => r.equals(res))) {
40
41
  return
@@ -42,29 +43,29 @@ export class Assembler_RscLoader extends Emittery<Assembler_RscLoaderEvents> {
42
43
  if (!res.isRoot) {
43
44
  return
44
45
  }
46
+ if (res.hasInheritedNoEmit) {
47
+ return
48
+ }
45
49
  const origin = res.origin
46
-
47
50
  if (!origin.isChildOf(input)) {
48
51
  return
49
52
  }
50
53
  const event = {
51
- isExported: res.meta!.has(`#k8ts.org/is-exported`),
54
+ isExported: res.metadata!.has(`#k8ts.org/exported`),
52
55
  resource: res
53
56
  } as const
54
57
 
55
- await this.emit("load", event)
56
- const resourceOriginMetas = res.origin.inheritedMeta
58
+ this._options.emitter?.emit("load", event)
57
59
 
58
- res.meta!.add(resourceOriginMetas)
59
60
  origin.entity["__emit__"]("resource/loaded", {
60
61
  origin: origin.entity,
61
- resource: res.entity as Rsc_Top
62
+ resource: res.entity as K8sResource
62
63
  })
63
64
  resources.push(res)
64
65
  }
65
66
 
66
67
  for (const resource of input.resources) {
67
- await addResource(resource.node)
68
+ await addResource(resource.__vertex__)
68
69
  }
69
70
 
70
71
  // Some resources might appear as dependencies to sub-resources that
@@ -79,13 +80,15 @@ export class Assembler_RscLoader extends Emittery<Assembler_RscLoaderEvents> {
79
80
  return [...resources]
80
81
  }
81
82
  }
82
- export interface Assembler_RscLoadedEvent {
83
+ export interface AssemblerRscLoadedEvent {
83
84
  isExported: boolean
84
- resource: Rsc_Node
85
+ resource: ResourceVertex
85
86
  }
86
87
 
87
- export interface Assembler_RscLoaderEvents {
88
- load: Assembler_RscLoadedEvent
88
+ export interface AssemblerRscLoaderEvents {
89
+ load: AssemblerRscLoadedEvent
89
90
  }
90
91
 
91
- export interface Assembler_RscLoaderOptions {}
92
+ export interface AssemblerRscLoaderOptions {
93
+ emitter?: EventEmitter<any>
94
+ }
@@ -1,16 +1,19 @@
1
- import { Manifest, ManifestSourceEmbedder, Rsc_Node, Rsc_Top } from "@k8ts/instruments"
2
- import Emittery from "emittery"
1
+ import {
2
+ K8sResource,
3
+ K8tsManifest,
4
+ ManifestSourceEmbedder,
5
+ ResourceVertex
6
+ } from "@k8ts/instruments"
7
+ import type EventEmitter from "eventemitter3"
3
8
  import { cloneDeep, cloneDeepWith, isEmpty, unset } from "lodash"
4
- import { version } from "../../version"
5
9
  export interface ManifesterOptions {
6
10
  cwd?: string
11
+ emitter?: EventEmitter<any>
7
12
  }
8
13
 
9
- export class Manifester extends Emittery<ManifesterEventsTable> {
10
- constructor(private readonly _options: ManifesterOptions) {
11
- super()
12
- }
13
- private _cleanSpecificEmptyObjects(manifest: Manifest) {
14
+ export class Engine_Manifester {
15
+ constructor(private readonly _options: ManifesterOptions) {}
16
+ private _cleanSpecificEmptyObjects(manifest: K8tsManifest) {
14
17
  const clone = cloneDeepWith(manifest, (value, key) => {
15
18
  if (key !== "metadata") {
16
19
  return
@@ -25,7 +28,7 @@ export class Manifester extends Emittery<ManifesterEventsTable> {
25
28
  })
26
29
  return clone
27
30
  }
28
- private _cleanNullishValues(manifest: Manifest) {
31
+ private _cleanNullishValues(manifest: K8tsManifest) {
29
32
  const _cleanKeys = (obj: any) => {
30
33
  if (typeof obj !== "object") {
31
34
  return obj
@@ -42,7 +45,7 @@ export class Manifester extends Emittery<ManifesterEventsTable> {
42
45
  return cloneDeepWith(clone, _cleanKeys)
43
46
  }
44
47
 
45
- private async _generate(resource: Rsc_Top): Promise<Manifest> {
48
+ private async _generate(resource: K8sResource): Promise<K8tsManifest> {
46
49
  const manifest = await resource["__manifest__"]()
47
50
 
48
51
  const noNullish = this._cleanNullishValues(manifest)
@@ -50,26 +53,11 @@ export class Manifester extends Emittery<ManifesterEventsTable> {
50
53
  return noEmpty
51
54
  }
52
55
 
53
- private _attachProductionAnnotations(resource: Rsc_Node) {
54
- const loc = resource.trace.format({
55
- cwd: this._options.cwd
56
- })
57
- resource.meta!.add(`build.k8ts.org/`, {
58
- "^constructed-at": loc,
59
- "^produced-by": `k8ts@${version}`
60
- })
61
- }
62
-
63
- async generate(res: Rsc_Node): Promise<NodeManifest> {
64
- this._attachProductionAnnotations(res)
65
- await this.emit("manifest", { resource: res })
66
- const manifest = await this._generate(res.entity as Rsc_Top)
56
+ async generate(res: ResourceVertex): Promise<NodeManifest> {
57
+ this._options.emitter?.emit("manifest", { resource: res })
58
+ const manifest = await this._generate(res.entity as K8sResource)
67
59
  ManifestSourceEmbedder.add(manifest, res.entity)
68
- res.origin.entity["__emit__"]("resource/manifested", {
69
- origin: res.origin.entity,
70
- manifest,
71
- resource: res.entity as Rsc_Top
72
- })
60
+
73
61
  return {
74
62
  node: res,
75
63
  manifest: manifest
@@ -78,11 +66,11 @@ export class Manifester extends Emittery<ManifesterEventsTable> {
78
66
  }
79
67
 
80
68
  export interface NodeManifest {
81
- node: Rsc_Node
82
- manifest: Manifest
69
+ node: ResourceVertex
70
+ manifest: K8tsManifest
83
71
  }
84
72
  export interface ManifesterManifestEvent {
85
- resource: Rsc_Node
73
+ resource: ResourceVertex
86
74
  }
87
75
 
88
76
  export interface ManifesterEventsTable {
@@ -1,19 +1,17 @@
1
- import type { OriginNode } from "@k8ts/instruments"
2
- import Emittery from "emittery"
1
+ import type { OriginVertex } from "@k8ts/instruments"
2
+ import type EventEmitter from "eventemitter3"
3
3
  import { glob, mkdir, rm, writeFile } from "fs/promises"
4
4
  import { join, resolve } from "path"
5
- export class ManifestSaver extends Emittery<ManifestSaverEventsTable> {
5
+ export class Engine_Saver {
6
6
  private _encoder = new TextEncoder()
7
- constructor(private readonly _options: ManifestSaverOptions) {
8
- super()
9
- }
7
+ constructor(private readonly _options: ManifestSaverOptions) {}
10
8
 
11
9
  _splat(manifests: string[]) {
12
10
  return manifests.join("\n---\n")
13
11
  }
14
12
 
15
13
  async prepareOnce() {
16
- await this.emit("purge", {
14
+ this._options.emitter?.emit("purge", {
17
15
  outdir: this._options.outdir
18
16
  })
19
17
  await mkdir(this._options.outdir, { recursive: true })
@@ -28,7 +26,7 @@ export class ManifestSaver extends Emittery<ManifestSaverEventsTable> {
28
26
  }
29
27
  }
30
28
 
31
- async save(origin: OriginNode, manifests: string[]) {
29
+ async save(origin: OriginVertex, manifests: string[]) {
32
30
  const content = this._splat(manifests)
33
31
  const filename = `${origin.name}`
34
32
  const encoded = this._encoder.encode(content)
@@ -40,7 +38,7 @@ export class ManifestSaver extends Emittery<ManifestSaverEventsTable> {
40
38
  bytes: encoded.byteLength
41
39
  }
42
40
 
43
- await this.emit("save", e)
41
+ this._options.emitter?.emit("save", e)
44
42
  await mkdir(this._options.outdir, { recursive: true })
45
43
  await writeFile(join(this._options.outdir, filename), encoded)
46
44
  return e
@@ -62,4 +60,5 @@ export interface ManifestSaverEventsTable {
62
60
 
63
61
  export interface ManifestSaverOptions {
64
62
  outdir: string
63
+ emitter?: EventEmitter<any>
65
64
  }