@orizm/cli 2.2.7 → 3.0.1

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 (320) hide show
  1. package/README.md +111 -4
  2. package/dist/array-update-CMFUoQEe.mjs +41 -0
  3. package/dist/array-update-CMFUoQEe.mjs.map +1 -0
  4. package/dist/array-update-Dch4e9tI.cjs +58 -0
  5. package/dist/array-update-Dch4e9tI.cjs.map +1 -0
  6. package/dist/auth-BGW072BP.mjs +18 -0
  7. package/dist/auth-BGW072BP.mjs.map +1 -0
  8. package/dist/auth-CNbONZuf.cjs +18 -0
  9. package/dist/auth-CNbONZuf.cjs.map +1 -0
  10. package/dist/bucket-DqW-WEYb.mjs +17 -0
  11. package/dist/bucket-DqW-WEYb.mjs.map +1 -0
  12. package/dist/bucket-mg5QQORh.cjs +17 -0
  13. package/dist/bucket-mg5QQORh.cjs.map +1 -0
  14. package/dist/cli/main.cjs +231 -0
  15. package/dist/cli/main.cjs.map +1 -0
  16. package/dist/cli/main.d.cts +1 -0
  17. package/dist/cli/main.d.mts +1 -0
  18. package/dist/cli/main.mjs +196 -0
  19. package/dist/cli/main.mjs.map +1 -0
  20. package/dist/cms-BJnovGYT.mjs +172 -0
  21. package/dist/cms-BJnovGYT.mjs.map +1 -0
  22. package/dist/cms-Cnx-lDGu.cjs +172 -0
  23. package/dist/cms-Cnx-lDGu.cjs.map +1 -0
  24. package/dist/codegen-BF5b-u46.cjs +17 -0
  25. package/dist/codegen-BF5b-u46.cjs.map +1 -0
  26. package/dist/codegen-DZOB4ttR.mjs +17 -0
  27. package/dist/codegen-DZOB4ttR.mjs.map +1 -0
  28. package/dist/config/index.cjs +49 -96
  29. package/dist/config/index.cjs.map +1 -1
  30. package/dist/config/index.d.cts +1 -53
  31. package/dist/config/{index.d.ts → index.d.mts} +29 -28
  32. package/dist/config/index.d.mts.map +1 -0
  33. package/dist/config/index.mjs +59 -0
  34. package/dist/config/index.mjs.map +1 -0
  35. package/dist/config-loader-BEgS869e.mjs +65 -0
  36. package/dist/config-loader-BEgS869e.mjs.map +1 -0
  37. package/dist/config-loader-D8x32gEU.cjs +78 -0
  38. package/dist/config-loader-D8x32gEU.cjs.map +1 -0
  39. package/dist/confirm-delete-B9o73U7B.cjs +19 -0
  40. package/dist/confirm-delete-B9o73U7B.cjs.map +1 -0
  41. package/dist/confirm-delete-CsWkW69-.mjs +14 -0
  42. package/dist/confirm-delete-CsWkW69-.mjs.map +1 -0
  43. package/dist/consumer-C4WiGHWG.mjs +18 -0
  44. package/dist/consumer-C4WiGHWG.mjs.map +1 -0
  45. package/dist/consumer-OF6Z_eTP.cjs +95 -0
  46. package/dist/consumer-OF6Z_eTP.cjs.map +1 -0
  47. package/dist/consumer-l-8wUK8E.cjs +18 -0
  48. package/dist/consumer-l-8wUK8E.cjs.map +1 -0
  49. package/dist/consumer-pU2HyiyA.mjs +95 -0
  50. package/dist/consumer-pU2HyiyA.mjs.map +1 -0
  51. package/dist/content-BOb6NC8M.mjs +20 -0
  52. package/dist/content-BOb6NC8M.mjs.map +1 -0
  53. package/dist/content-DMjSwor1.cjs +20 -0
  54. package/dist/content-DMjSwor1.cjs.map +1 -0
  55. package/dist/create-B-PAOor6.mjs +66 -0
  56. package/dist/create-B-PAOor6.mjs.map +1 -0
  57. package/dist/create-B1ZBOqcV.mjs +58 -0
  58. package/dist/create-B1ZBOqcV.mjs.map +1 -0
  59. package/dist/create-BNYWcyuQ.cjs +66 -0
  60. package/dist/create-BNYWcyuQ.cjs.map +1 -0
  61. package/dist/create-Belwettw.mjs +54 -0
  62. package/dist/create-Belwettw.mjs.map +1 -0
  63. package/dist/create-BvERyMKa.cjs +81 -0
  64. package/dist/create-BvERyMKa.cjs.map +1 -0
  65. package/dist/create-CC814ixh.mjs +66 -0
  66. package/dist/create-CC814ixh.mjs.map +1 -0
  67. package/dist/create-CmOriwGo.cjs +58 -0
  68. package/dist/create-CmOriwGo.cjs.map +1 -0
  69. package/dist/create-DJY71sp9.cjs +54 -0
  70. package/dist/create-DJY71sp9.cjs.map +1 -0
  71. package/dist/create-Dups0gV2.mjs +81 -0
  72. package/dist/create-Dups0gV2.mjs.map +1 -0
  73. package/dist/create-Z-z3LXNW.cjs +66 -0
  74. package/dist/create-Z-z3LXNW.cjs.map +1 -0
  75. package/dist/delete-8yZ3j0vX.cjs +59 -0
  76. package/dist/delete-8yZ3j0vX.cjs.map +1 -0
  77. package/dist/delete-BOUObrDw.mjs +48 -0
  78. package/dist/delete-BOUObrDw.mjs.map +1 -0
  79. package/dist/delete-BSLIXrAh.mjs +59 -0
  80. package/dist/delete-BSLIXrAh.mjs.map +1 -0
  81. package/dist/delete-CCTiCYIL.cjs +51 -0
  82. package/dist/delete-CCTiCYIL.cjs.map +1 -0
  83. package/dist/delete-CIYY59v_.cjs +48 -0
  84. package/dist/delete-CIYY59v_.cjs.map +1 -0
  85. package/dist/delete-CSs5Czlo.mjs +59 -0
  86. package/dist/delete-CSs5Czlo.mjs.map +1 -0
  87. package/dist/delete-D4r1ve4v.cjs +56 -0
  88. package/dist/delete-D4r1ve4v.cjs.map +1 -0
  89. package/dist/delete-DVrafka1.cjs +56 -0
  90. package/dist/delete-DVrafka1.cjs.map +1 -0
  91. package/dist/delete-DhSU-Lx2.mjs +51 -0
  92. package/dist/delete-DhSU-Lx2.mjs.map +1 -0
  93. package/dist/delete-DozSxZQ7.cjs +59 -0
  94. package/dist/delete-DozSxZQ7.cjs.map +1 -0
  95. package/dist/delete-WpMIIvjj.cjs +56 -0
  96. package/dist/delete-WpMIIvjj.cjs.map +1 -0
  97. package/dist/delete-XWJRhBFs.mjs +56 -0
  98. package/dist/delete-XWJRhBFs.mjs.map +1 -0
  99. package/dist/delete-YYh_0khQ.mjs +56 -0
  100. package/dist/delete-YYh_0khQ.mjs.map +1 -0
  101. package/dist/delete-ZIifaG0i.mjs +56 -0
  102. package/dist/delete-ZIifaG0i.mjs.map +1 -0
  103. package/dist/detail-8CXNIhKw.cjs +16 -0
  104. package/dist/detail-8CXNIhKw.cjs.map +1 -0
  105. package/dist/detail-DN5jCQ4N.mjs +10 -0
  106. package/dist/detail-DN5jCQ4N.mjs.map +1 -0
  107. package/dist/download-oFGzg30E.mjs +68 -0
  108. package/dist/download-oFGzg30E.mjs.map +1 -0
  109. package/dist/download-ogGbb3FU.cjs +68 -0
  110. package/dist/download-ogGbb3FU.cjs.map +1 -0
  111. package/dist/erd-lKC5NB2l.cjs +124 -0
  112. package/dist/erd-lKC5NB2l.cjs.map +1 -0
  113. package/dist/erd-zDoF6I_y.mjs +123 -0
  114. package/dist/erd-zDoF6I_y.mjs.map +1 -0
  115. package/dist/get-BBOKSXkh.cjs +48 -0
  116. package/dist/get-BBOKSXkh.cjs.map +1 -0
  117. package/dist/get-BiPEF_m-.cjs +57 -0
  118. package/dist/get-BiPEF_m-.cjs.map +1 -0
  119. package/dist/get-C7dKoSIc.mjs +47 -0
  120. package/dist/get-C7dKoSIc.mjs.map +1 -0
  121. package/dist/get-CgEgETQa.mjs +52 -0
  122. package/dist/get-CgEgETQa.mjs.map +1 -0
  123. package/dist/get-DB80UNSR.mjs +47 -0
  124. package/dist/get-DB80UNSR.mjs.map +1 -0
  125. package/dist/get-DBxhbN1G.mjs +57 -0
  126. package/dist/get-DBxhbN1G.mjs.map +1 -0
  127. package/dist/get-DDB89cOs.mjs +48 -0
  128. package/dist/get-DDB89cOs.mjs.map +1 -0
  129. package/dist/get-DjRyK0hJ.cjs +47 -0
  130. package/dist/get-DjRyK0hJ.cjs.map +1 -0
  131. package/dist/get-IOU__2RP.cjs +52 -0
  132. package/dist/get-IOU__2RP.cjs.map +1 -0
  133. package/dist/get-KdWfYINc.cjs +47 -0
  134. package/dist/get-KdWfYINc.cjs.map +1 -0
  135. package/dist/get-RpxdnCKR.mjs +56 -0
  136. package/dist/get-RpxdnCKR.mjs.map +1 -0
  137. package/dist/get-jwXRlIBJ.cjs +57 -0
  138. package/dist/get-jwXRlIBJ.cjs.map +1 -0
  139. package/dist/group-roles-BIH7q8tf.mjs +36 -0
  140. package/dist/group-roles-BIH7q8tf.mjs.map +1 -0
  141. package/dist/group-roles-B_iAZog-.cjs +59 -0
  142. package/dist/group-roles-B_iAZog-.cjs.map +1 -0
  143. package/dist/invite-D66DSMvq.mjs +66 -0
  144. package/dist/invite-D66DSMvq.mjs.map +1 -0
  145. package/dist/invite-DPygtCoO.cjs +66 -0
  146. package/dist/invite-DPygtCoO.cjs.map +1 -0
  147. package/dist/key-C71Ffll9.mjs +17 -0
  148. package/dist/key-C71Ffll9.mjs.map +1 -0
  149. package/dist/key-DQr7qRL2.cjs +17 -0
  150. package/dist/key-DQr7qRL2.cjs.map +1 -0
  151. package/dist/link-BluFyxEL.mjs +42 -0
  152. package/dist/link-BluFyxEL.mjs.map +1 -0
  153. package/dist/link-DYu1Vjlw.cjs +42 -0
  154. package/dist/link-DYu1Vjlw.cjs.map +1 -0
  155. package/dist/list-57TUfNFd.mjs +48 -0
  156. package/dist/list-57TUfNFd.mjs.map +1 -0
  157. package/dist/list-B0N4-Q-5.mjs +81 -0
  158. package/dist/list-B0N4-Q-5.mjs.map +1 -0
  159. package/dist/list-BHvURTWd.cjs +40 -0
  160. package/dist/list-BHvURTWd.cjs.map +1 -0
  161. package/dist/list-BRh59EqI.cjs +35 -0
  162. package/dist/list-BRh59EqI.cjs.map +1 -0
  163. package/dist/list-Br6Cmi9S.cjs +95 -0
  164. package/dist/list-Br6Cmi9S.cjs.map +1 -0
  165. package/dist/list-BsYYq9wT.mjs +40 -0
  166. package/dist/list-BsYYq9wT.mjs.map +1 -0
  167. package/dist/list-BwfpuhmJ.cjs +37 -0
  168. package/dist/list-BwfpuhmJ.cjs.map +1 -0
  169. package/dist/list-BzLraBnA.cjs +82 -0
  170. package/dist/list-BzLraBnA.cjs.map +1 -0
  171. package/dist/list-CFwW0G9f.cjs +49 -0
  172. package/dist/list-CFwW0G9f.cjs.map +1 -0
  173. package/dist/list-CU42ERNY.cjs +81 -0
  174. package/dist/list-CU42ERNY.cjs.map +1 -0
  175. package/dist/list-CbvEh7eA.mjs +35 -0
  176. package/dist/list-CbvEh7eA.mjs.map +1 -0
  177. package/dist/list-D0-QrWmn.cjs +51 -0
  178. package/dist/list-D0-QrWmn.cjs.map +1 -0
  179. package/dist/list-D5PSDMWw.mjs +51 -0
  180. package/dist/list-D5PSDMWw.mjs.map +1 -0
  181. package/dist/list-DexBclfb.cjs +72 -0
  182. package/dist/list-DexBclfb.cjs.map +1 -0
  183. package/dist/list-DlJssPwy.cjs +48 -0
  184. package/dist/list-DlJssPwy.cjs.map +1 -0
  185. package/dist/list-DrZYlidZ.mjs +72 -0
  186. package/dist/list-DrZYlidZ.mjs.map +1 -0
  187. package/dist/list-ocfd7631.mjs +49 -0
  188. package/dist/list-ocfd7631.mjs.map +1 -0
  189. package/dist/list-rAn3uOA7.mjs +37 -0
  190. package/dist/list-rAn3uOA7.mjs.map +1 -0
  191. package/dist/list-sQk00GV5.mjs +95 -0
  192. package/dist/list-sQk00GV5.mjs.map +1 -0
  193. package/dist/list-vbMaOiza.mjs +82 -0
  194. package/dist/list-vbMaOiza.mjs.map +1 -0
  195. package/dist/login-2XcHd4wn.cjs +212 -0
  196. package/dist/login-2XcHd4wn.cjs.map +1 -0
  197. package/dist/login-FE_dbWMo.mjs +211 -0
  198. package/dist/login-FE_dbWMo.mjs.map +1 -0
  199. package/dist/logout-BDbWrGBm.mjs +35 -0
  200. package/dist/logout-BDbWrGBm.mjs.map +1 -0
  201. package/dist/logout-DC5TMJ5_.cjs +35 -0
  202. package/dist/logout-DC5TMJ5_.cjs.map +1 -0
  203. package/dist/management-BGYcZB4c.cjs +19 -0
  204. package/dist/management-BGYcZB4c.cjs.map +1 -0
  205. package/dist/management-DDACMgbU.mjs +19 -0
  206. package/dist/management-DDACMgbU.mjs.map +1 -0
  207. package/dist/mask-B1qD73jb.mjs +22 -0
  208. package/dist/mask-B1qD73jb.mjs.map +1 -0
  209. package/dist/mask-CqYLib9p.cjs +40 -0
  210. package/dist/mask-CqYLib9p.cjs.map +1 -0
  211. package/dist/oauth-client-CdD0evAV.cjs +170 -0
  212. package/dist/oauth-client-CdD0evAV.cjs.map +1 -0
  213. package/dist/oauth-client-QHuDa4fW.mjs +139 -0
  214. package/dist/oauth-client-QHuDa4fW.mjs.map +1 -0
  215. package/dist/object-DVqidsEc.cjs +20 -0
  216. package/dist/object-DVqidsEc.cjs.map +1 -0
  217. package/dist/object-qdBdEghr.mjs +20 -0
  218. package/dist/object-qdBdEghr.mjs.map +1 -0
  219. package/dist/org-C4cVovOM.cjs +14 -0
  220. package/dist/org-C4cVovOM.cjs.map +1 -0
  221. package/dist/org-CPhTRTks.mjs +14 -0
  222. package/dist/org-CPhTRTks.mjs.map +1 -0
  223. package/dist/org-context-Bewx2NEW.cjs +30 -0
  224. package/dist/org-context-Bewx2NEW.cjs.map +1 -0
  225. package/dist/org-context-D0dwWC2M.mjs +25 -0
  226. package/dist/org-context-D0dwWC2M.mjs.map +1 -0
  227. package/dist/parse-C8oHgQXx.cjs +229 -0
  228. package/dist/parse-C8oHgQXx.cjs.map +1 -0
  229. package/dist/parse-DA0k5AHa.mjs +150 -0
  230. package/dist/parse-DA0k5AHa.mjs.map +1 -0
  231. package/dist/project-BX7zvWB1.cjs +20 -0
  232. package/dist/project-BX7zvWB1.cjs.map +1 -0
  233. package/dist/project-CaXD3QBs.mjs +20 -0
  234. package/dist/project-CaXD3QBs.mjs.map +1 -0
  235. package/dist/project-name-CEoM-OL4.cjs +18 -0
  236. package/dist/project-name-CEoM-OL4.cjs.map +1 -0
  237. package/dist/project-name-DNMejnzZ.mjs +12 -0
  238. package/dist/project-name-DNMejnzZ.mjs.map +1 -0
  239. package/dist/project-user-Cp7i6orv.mjs +20 -0
  240. package/dist/project-user-Cp7i6orv.mjs.map +1 -0
  241. package/dist/project-user-Dm0qR-sh.cjs +20 -0
  242. package/dist/project-user-Dm0qR-sh.cjs.map +1 -0
  243. package/dist/push-0u6PDz4E.cjs +166 -0
  244. package/dist/push-0u6PDz4E.cjs.map +1 -0
  245. package/dist/push-D7co0keA.mjs +166 -0
  246. package/dist/push-D7co0keA.mjs.map +1 -0
  247. package/dist/run-codegen-Ceeosw5x.cjs +272 -0
  248. package/dist/run-codegen-Ceeosw5x.cjs.map +1 -0
  249. package/dist/run-codegen-DgaFaIQ1.mjs +190 -0
  250. package/dist/run-codegen-DgaFaIQ1.mjs.map +1 -0
  251. package/dist/run-with-context-CVhmzAFZ.mjs +876 -0
  252. package/dist/run-with-context-CVhmzAFZ.mjs.map +1 -0
  253. package/dist/run-with-context-DJNnEigg.cjs +943 -0
  254. package/dist/run-with-context-DJNnEigg.cjs.map +1 -0
  255. package/dist/schema-B3iRqvYK.cjs +20 -0
  256. package/dist/schema-B3iRqvYK.cjs.map +1 -0
  257. package/dist/schema-exG250MU.mjs +20 -0
  258. package/dist/schema-exG250MU.mjs.map +1 -0
  259. package/dist/shared-CZZimGxc.mjs +35 -0
  260. package/dist/shared-CZZimGxc.mjs.map +1 -0
  261. package/dist/shared-DHRPzzKl.cjs +59 -0
  262. package/dist/shared-DHRPzzKl.cjs.map +1 -0
  263. package/dist/status-Dq_NJE71.cjs +49 -0
  264. package/dist/status-Dq_NJE71.cjs.map +1 -0
  265. package/dist/status-fWqXzV0P.mjs +49 -0
  266. package/dist/status-fWqXzV0P.mjs.map +1 -0
  267. package/dist/table-C74eOSh8.cjs +27 -0
  268. package/dist/table-C74eOSh8.cjs.map +1 -0
  269. package/dist/table-MHEfbnWO.mjs +20 -0
  270. package/dist/table-MHEfbnWO.mjs.map +1 -0
  271. package/dist/table-event-C7gORNlb.mjs +72 -0
  272. package/dist/table-event-C7gORNlb.mjs.map +1 -0
  273. package/dist/table-event-DXkCK29f.cjs +101 -0
  274. package/dist/table-event-DXkCK29f.cjs.map +1 -0
  275. package/dist/token-store--9GYVL7N.cjs +139 -0
  276. package/dist/token-store--9GYVL7N.cjs.map +1 -0
  277. package/dist/token-store-reCGF86F.mjs +124 -0
  278. package/dist/token-store-reCGF86F.mjs.map +1 -0
  279. package/dist/update-B4lv4dAz.mjs +109 -0
  280. package/dist/update-B4lv4dAz.mjs.map +1 -0
  281. package/dist/update-BXhSosHG.cjs +171 -0
  282. package/dist/update-BXhSosHG.cjs.map +1 -0
  283. package/dist/update-CIH6sSVk.cjs +109 -0
  284. package/dist/update-CIH6sSVk.cjs.map +1 -0
  285. package/dist/update-CQ4n4Xuf.mjs +117 -0
  286. package/dist/update-CQ4n4Xuf.mjs.map +1 -0
  287. package/dist/update-CuPRoVw3.mjs +171 -0
  288. package/dist/update-CuPRoVw3.mjs.map +1 -0
  289. package/dist/update-Cx_2GkQj.cjs +61 -0
  290. package/dist/update-Cx_2GkQj.cjs.map +1 -0
  291. package/dist/update-DRnN1kiu.cjs +117 -0
  292. package/dist/update-DRnN1kiu.cjs.map +1 -0
  293. package/dist/update-Do9HHWzs.cjs +73 -0
  294. package/dist/update-Do9HHWzs.cjs.map +1 -0
  295. package/dist/update-mEmULIau.mjs +73 -0
  296. package/dist/update-mEmULIau.mjs.map +1 -0
  297. package/dist/update-rzij1b_o.mjs +61 -0
  298. package/dist/update-rzij1b_o.mjs.map +1 -0
  299. package/dist/upload-C43ZXxyb.cjs +95 -0
  300. package/dist/upload-C43ZXxyb.cjs.map +1 -0
  301. package/dist/upload-DGgJ1TQk.mjs +94 -0
  302. package/dist/upload-DGgJ1TQk.mjs.map +1 -0
  303. package/dist/validate-BpxZ8LTl.cjs +31 -0
  304. package/dist/validate-BpxZ8LTl.cjs.map +1 -0
  305. package/dist/validate-Ca0CRo16.mjs +31 -0
  306. package/dist/validate-Ca0CRo16.mjs.map +1 -0
  307. package/dist/webhook-CVFmch5W.cjs +20 -0
  308. package/dist/webhook-CVFmch5W.cjs.map +1 -0
  309. package/dist/webhook-Cy850dNs.mjs +20 -0
  310. package/dist/webhook-Cy850dNs.mjs.map +1 -0
  311. package/package.json +28 -17
  312. package/bin/index.js +0 -3
  313. package/dist/cli.cjs +0 -1978
  314. package/dist/cli.cjs.map +0 -1
  315. package/dist/cli.d.cts +0 -2
  316. package/dist/cli.d.ts +0 -2
  317. package/dist/cli.js +0 -1954
  318. package/dist/cli.js.map +0 -1
  319. package/dist/config/index.js +0 -81
  320. package/dist/config/index.js.map +0 -1
@@ -0,0 +1,166 @@
1
+ const require_cli_main = require('./cli/main.cjs');
2
+ const require_shared = require('./shared-DHRPzzKl.cjs');
3
+ const require_run_with_context = require('./run-with-context-DJNnEigg.cjs');
4
+ const require_table = require('./table-C74eOSh8.cjs');
5
+ const require_config_loader = require('./config-loader-D8x32gEU.cjs');
6
+ let _praha_byethrow = require("@praha/byethrow");
7
+
8
+ //#region src/cli/schema/change-events.ts
9
+ function hasChanges(events) {
10
+ return events.tableChangeEvents.length > 0 || events.bucketChangeEvents.length > 0 || events.authorityChangeEvents.length > 0;
11
+ }
12
+ function renderChangeEvents(events, color) {
13
+ return [
14
+ ...renderTableSections(events.tableChangeEvents, color),
15
+ ...renderBucketSection(events.bucketChangeEvents, color),
16
+ ...renderAuthoritySection(events.authorityChangeEvents, color)
17
+ ].join("\n\n");
18
+ }
19
+ function renderTableSections(tableChangeEvents, color) {
20
+ const eventsByTable = /* @__PURE__ */ new Map();
21
+ for (const event of tableChangeEvents) {
22
+ const grouped = eventsByTable.get(event.tableDef.name) ?? [];
23
+ grouped.push(event);
24
+ eventsByTable.set(event.tableDef.name, grouped);
25
+ }
26
+ return [...eventsByTable.entries()].map(([tableName, events]) => {
27
+ return `⚫︎Table: ${tableName}\n${require_table.renderTable([
28
+ "Type",
29
+ "Name",
30
+ "Event",
31
+ "Detail"
32
+ ], events.map(tableEventRow), color)}`;
33
+ });
34
+ }
35
+ function renderBucketSection(bucketChangeEvents, color) {
36
+ if (bucketChangeEvents.length === 0) return [];
37
+ return [`⚫︎Buckets\n${require_table.renderTable([
38
+ "Type",
39
+ "Name",
40
+ "Event",
41
+ "Detail"
42
+ ], bucketChangeEvents.map(bucketEventRow), color)}`];
43
+ }
44
+ function renderAuthoritySection(authorityChangeEvents, color) {
45
+ if (authorityChangeEvents.length === 0) return [];
46
+ return [`⚫︎Authorities\n${require_table.renderTable([
47
+ "Type",
48
+ "Event",
49
+ "Detail"
50
+ ], authorityChangeEvents.map((event) => ({
51
+ cells: [
52
+ "authority",
53
+ event.event,
54
+ JSON.stringify(event.authorityDef)
55
+ ],
56
+ color: "green"
57
+ })), color)}`];
58
+ }
59
+ function tableEventRow(event) {
60
+ switch (event.event) {
61
+ case "table:create":
62
+ case "table:update": return row("table", event.tableDef.name, event.event, "", "green");
63
+ case "table:delete": return row("table", event.tableDef.name, event.event, "", "red");
64
+ case "column:create":
65
+ case "column:update": return row("column", event.columnDef.name, event.event, JSON.stringify(event.columnDef), "green");
66
+ case "column:delete": return row("column", event.columnDef.name, event.event, JSON.stringify(event.columnDef), "red");
67
+ case "index:create":
68
+ case "index:update": return row("index", event.indexDef.columns.join(", "), event.event, JSON.stringify(event.indexDef), "green");
69
+ case "index:delete": return row("index", event.indexDef.columns.join(", "), event.event, JSON.stringify(event.indexDef), "red");
70
+ case "module:create":
71
+ case "module:update": return row("module", event.columnDef.name, event.event, JSON.stringify(event.columnDef), "green");
72
+ case "module:delete": return row("module", event.columnDef.name, event.event, JSON.stringify(event.columnDef), "red");
73
+ case "search:enable":
74
+ case "search:update":
75
+ case "history:enable":
76
+ case "draft:enable":
77
+ case "formSubmissions:create":
78
+ case "formSubmissions:update": return row("table", event.tableDef.name, event.event, "", "green");
79
+ case "search:disable":
80
+ case "history:disable":
81
+ case "draft:disable":
82
+ case "formSubmissions:delete": return row("table", event.tableDef.name, event.event, "", "red");
83
+ }
84
+ }
85
+ function bucketEventRow(event) {
86
+ const color = event.event === "bucket:delete" ? "red" : "green";
87
+ return row("bucket", event.bucketDef.name, event.event, JSON.stringify(event.bucketDef), color);
88
+ }
89
+ function row(type, name, event, detail, color) {
90
+ return {
91
+ cells: [
92
+ type,
93
+ name,
94
+ event,
95
+ detail
96
+ ],
97
+ color
98
+ };
99
+ }
100
+
101
+ //#endregion
102
+ //#region src/cli/commands/schema/push.ts
103
+ async function pushHandler(ctx, options) {
104
+ const loaded = await require_config_loader.loadConfig(options.configFile);
105
+ if (_praha_byethrow.Result.isFailure(loaded)) return require_config_loader.configLoadFailure(loaded.error);
106
+ const events = require_run_with_context.toResult(await ctx.client.POST("/projects/{projectName}/definitions/dry-run", {
107
+ params: { path: { projectName: ctx.projectName } },
108
+ body: { definition: loaded.value }
109
+ }));
110
+ if (_praha_byethrow.Result.isFailure(events)) return require_run_with_context.apiErrorFailure(events.error);
111
+ if (!hasChanges(events.value)) return _praha_byethrow.Result.succeed({
112
+ json: events.value,
113
+ text: () => "No changes to apply."
114
+ });
115
+ if (options.dryRun) return _praha_byethrow.Result.succeed({
116
+ json: events.value,
117
+ text: () => renderChangeEvents(events.value, require_cli_main.getOutputState().color)
118
+ });
119
+ require_cli_main.notice(renderChangeEvents(events.value, require_cli_main.getOutputState().color));
120
+ if (!options.yes) {
121
+ if (process.stdin.isTTY !== true) return _praha_byethrow.Result.fail({ message: "Refusing to apply without confirmation in a non-interactive shell. Re-run with --yes." });
122
+ if (!await require_run_with_context.confirm("Apply these changes?")) return _praha_byethrow.Result.succeed({
123
+ json: { applied: false },
124
+ text: () => "Canceled."
125
+ });
126
+ }
127
+ const applied = require_run_with_context.toResult(await ctx.client.POST("/projects/{projectName}/definitions", {
128
+ params: { path: { projectName: ctx.projectName } },
129
+ body: { definition: loaded.value }
130
+ }));
131
+ if (_praha_byethrow.Result.isFailure(applied)) return require_run_with_context.apiErrorFailure(applied.error);
132
+ return _praha_byethrow.Result.succeed({
133
+ json: applied.value,
134
+ text: () => "Schema applied."
135
+ });
136
+ }
137
+ const pushArgs = {
138
+ ...require_shared.contextArgs,
139
+ "config-file": require_shared.configFileArg,
140
+ "dry-run": {
141
+ type: "boolean",
142
+ description: "Show change events without applying them",
143
+ default: false
144
+ },
145
+ yes: {
146
+ type: "boolean",
147
+ description: "Apply without the confirmation prompt",
148
+ default: false
149
+ }
150
+ };
151
+ var push_default = require_cli_main.defineCommand({
152
+ meta: {
153
+ name: "push",
154
+ description: "Build orizm.config.ts and apply the schema to the project"
155
+ },
156
+ args: pushArgs,
157
+ run: ({ args }) => require_run_with_context.runWithContext(args, (ctx) => pushHandler(ctx, {
158
+ configFile: args["config-file"] ?? "orizm.config.ts",
159
+ dryRun: args["dry-run"] === true,
160
+ yes: args.yes === true
161
+ }))
162
+ });
163
+
164
+ //#endregion
165
+ exports.default = push_default;
166
+ //# sourceMappingURL=push-0u6PDz4E.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"push-0u6PDz4E.cjs","names":["renderTable","loadConfig","Result","configLoadFailure","toResult","apiErrorFailure","getOutputState","confirm","contextArgs","configFileArg","defineCommand","runWithContext"],"sources":["../src/cli/schema/change-events.ts","../src/cli/commands/schema/push.ts"],"sourcesContent":["import type { components } from \"@orizm/internal-shared/api-clients/dev-v2\";\nimport { renderTable, type RowColor, type TableRow } from \"../ui/table.js\";\n\ntype ChangeEvents = components[\"schemas\"][\"OrizmConfigChangeEvents\"];\ntype TableChangeEvent = ChangeEvents[\"tableChangeEvents\"][number];\ntype BucketChangeEvent = ChangeEvents[\"bucketChangeEvents\"][number];\ntype AuthorityChangeEvent = ChangeEvents[\"authorityChangeEvents\"][number];\n\nexport function hasChanges(events: ChangeEvents): boolean {\n return (\n events.tableChangeEvents.length > 0 ||\n events.bucketChangeEvents.length > 0 ||\n events.authorityChangeEvents.length > 0\n );\n}\n\nexport function renderChangeEvents(\n events: ChangeEvents,\n color: boolean,\n): string {\n const sections = [\n ...renderTableSections(events.tableChangeEvents, color),\n ...renderBucketSection(events.bucketChangeEvents, color),\n ...renderAuthoritySection(events.authorityChangeEvents, color),\n ];\n return sections.join(\"\\n\\n\");\n}\n\nfunction renderTableSections(\n tableChangeEvents: TableChangeEvent[],\n color: boolean,\n): string[] {\n // 1 テーブルにつき 1 ブロックを出すため、対象テーブル名でまとめる。\n const eventsByTable = new Map<string, TableChangeEvent[]>();\n for (const event of tableChangeEvents) {\n const grouped = eventsByTable.get(event.tableDef.name) ?? [];\n grouped.push(event);\n eventsByTable.set(event.tableDef.name, grouped);\n }\n\n return [...eventsByTable.entries()].map(([tableName, events]) => {\n const rows = events.map(tableEventRow);\n return `⚫︎Table: ${tableName}\\n${renderTable(\n [\"Type\", \"Name\", \"Event\", \"Detail\"],\n rows,\n color,\n )}`;\n });\n}\n\nfunction renderBucketSection(\n bucketChangeEvents: BucketChangeEvent[],\n color: boolean,\n): string[] {\n if (bucketChangeEvents.length === 0) return [];\n const rows = bucketChangeEvents.map(bucketEventRow);\n return [\n `⚫︎Buckets\\n${renderTable(\n [\"Type\", \"Name\", \"Event\", \"Detail\"],\n rows,\n color,\n )}`,\n ];\n}\n\nfunction renderAuthoritySection(\n authorityChangeEvents: AuthorityChangeEvent[],\n color: boolean,\n): string[] {\n if (authorityChangeEvents.length === 0) return [];\n const rows = authorityChangeEvents.map(\n (event): TableRow => ({\n cells: [\"authority\", event.event, JSON.stringify(event.authorityDef)],\n color: \"green\",\n }),\n );\n return [\n `⚫︎Authorities\\n${renderTable([\"Type\", \"Event\", \"Detail\"], rows, color)}`,\n ];\n}\n\n// create / update / enable は安全な変更なので緑、delete / disable はデータを失う危険な操作なので赤。\nfunction tableEventRow(event: TableChangeEvent): TableRow {\n switch (event.event) {\n case \"table:create\":\n case \"table:update\":\n return row(\"table\", event.tableDef.name, event.event, \"\", \"green\");\n case \"table:delete\":\n return row(\"table\", event.tableDef.name, event.event, \"\", \"red\");\n case \"column:create\":\n case \"column:update\":\n return row(\n \"column\",\n event.columnDef.name,\n event.event,\n JSON.stringify(event.columnDef),\n \"green\",\n );\n case \"column:delete\":\n return row(\n \"column\",\n event.columnDef.name,\n event.event,\n JSON.stringify(event.columnDef),\n \"red\",\n );\n case \"index:create\":\n case \"index:update\":\n return row(\n \"index\",\n event.indexDef.columns.join(\", \"),\n event.event,\n JSON.stringify(event.indexDef),\n \"green\",\n );\n case \"index:delete\":\n return row(\n \"index\",\n event.indexDef.columns.join(\", \"),\n event.event,\n JSON.stringify(event.indexDef),\n \"red\",\n );\n case \"module:create\":\n case \"module:update\":\n return row(\n \"module\",\n event.columnDef.name,\n event.event,\n JSON.stringify(event.columnDef),\n \"green\",\n );\n case \"module:delete\":\n return row(\n \"module\",\n event.columnDef.name,\n event.event,\n JSON.stringify(event.columnDef),\n \"red\",\n );\n case \"search:enable\":\n case \"search:update\":\n case \"history:enable\":\n case \"draft:enable\":\n case \"formSubmissions:create\":\n case \"formSubmissions:update\":\n return row(\"table\", event.tableDef.name, event.event, \"\", \"green\");\n case \"search:disable\":\n case \"history:disable\":\n case \"draft:disable\":\n case \"formSubmissions:delete\":\n return row(\"table\", event.tableDef.name, event.event, \"\", \"red\");\n }\n}\n\nfunction bucketEventRow(event: BucketChangeEvent): TableRow {\n const color: RowColor = event.event === \"bucket:delete\" ? \"red\" : \"green\";\n return row(\n \"bucket\",\n event.bucketDef.name,\n event.event,\n JSON.stringify(event.bucketDef),\n color,\n );\n}\n\nfunction row(\n type: string,\n name: string,\n event: string,\n detail: string,\n color: RowColor,\n): TableRow {\n return { cells: [type, name, event, detail], color };\n}\n","import type { ArgsDef } from \"citty\";\nimport { Result } from \"@praha/byethrow\";\nimport {\n defineCommand,\n type CommandFailure,\n type CommandOutput,\n} from \"../define-command.js\";\nimport { contextArgs, configFileArg, DEFAULT_CONFIG_FILE } from \"../shared.js\";\nimport { runWithContext, type CommandContext } from \"../run-with-context.js\";\nimport { configLoadFailure } from \"../config-errors.js\";\nimport { apiErrorFailure } from \"../api-errors.js\";\nimport { loadConfig } from \"../../config-loader.js\";\nimport { toResult } from \"../../api/errors.js\";\nimport { getOutputState, notice } from \"../../ui/output.js\";\nimport { confirm } from \"../../ui/prompt.js\";\nimport { hasChanges, renderChangeEvents } from \"../../schema/change-events.js\";\n\nexport type PushOptions = {\n configFile: string;\n dryRun: boolean;\n yes: boolean;\n};\n\nexport async function pushHandler(\n ctx: CommandContext,\n options: PushOptions,\n): Promise<Result.Result<CommandOutput | undefined, CommandFailure>> {\n const loaded = await loadConfig(options.configFile);\n if (Result.isFailure(loaded)) return configLoadFailure(loaded.error);\n\n const dryRun = await ctx.client.POST(\n \"/projects/{projectName}/definitions/dry-run\",\n {\n params: { path: { projectName: ctx.projectName } },\n body: { definition: loaded.value },\n },\n );\n const events = toResult(dryRun);\n if (Result.isFailure(events)) return apiErrorFailure(events.error);\n\n if (!hasChanges(events.value)) {\n return Result.succeed({\n json: events.value,\n text: () => \"No changes to apply.\",\n });\n }\n\n if (options.dryRun) {\n return Result.succeed({\n json: events.value,\n text: () => renderChangeEvents(events.value, getOutputState().color),\n });\n }\n\n notice(renderChangeEvents(events.value, getOutputState().color));\n\n if (!options.yes) {\n if (process.stdin.isTTY !== true) {\n return Result.fail({\n message:\n \"Refusing to apply without confirmation in a non-interactive shell. Re-run with --yes.\",\n });\n }\n const approved = await confirm(\"Apply these changes?\");\n if (!approved) {\n return Result.succeed({\n json: { applied: false },\n text: () => \"Canceled.\",\n });\n }\n }\n\n const applyResponse = await ctx.client.POST(\n \"/projects/{projectName}/definitions\",\n {\n params: { path: { projectName: ctx.projectName } },\n body: { definition: loaded.value },\n },\n );\n const applied = toResult(applyResponse);\n if (Result.isFailure(applied)) return apiErrorFailure(applied.error);\n\n return Result.succeed({\n json: applied.value,\n text: () => \"Schema applied.\",\n });\n}\n\nconst pushArgs = {\n ...contextArgs,\n \"config-file\": configFileArg,\n \"dry-run\": {\n type: \"boolean\",\n description: \"Show change events without applying them\",\n default: false,\n },\n yes: {\n type: \"boolean\",\n description: \"Apply without the confirmation prompt\",\n default: false,\n },\n} satisfies ArgsDef;\n\nexport default defineCommand({\n meta: {\n name: \"push\",\n description: \"Build orizm.config.ts and apply the schema to the project\",\n },\n args: pushArgs,\n run: ({ args }) =>\n runWithContext(args, (ctx) =>\n pushHandler(ctx, {\n configFile: args[\"config-file\"] ?? DEFAULT_CONFIG_FILE,\n dryRun: args[\"dry-run\"] === true,\n yes: args.yes === true,\n }),\n ),\n});\n"],"mappings":"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"}
@@ -0,0 +1,166 @@
1
+ import { a as notice, r as getOutputState, t as defineCommand } from "./cli/main.mjs";
2
+ import { n as configFileArg, r as contextArgs, t as DEFAULT_CONFIG_FILE } from "./shared-CZZimGxc.mjs";
3
+ import { a as apiErrorFailure, n as runWithContext, o as confirm, u as toResult } from "./run-with-context-CVhmzAFZ.mjs";
4
+ import { t as renderTable } from "./table-MHEfbnWO.mjs";
5
+ import { n as configLoadFailure, t as loadConfig } from "./config-loader-BEgS869e.mjs";
6
+ import { Result } from "@praha/byethrow";
7
+
8
+ //#region src/cli/schema/change-events.ts
9
+ function hasChanges(events) {
10
+ return events.tableChangeEvents.length > 0 || events.bucketChangeEvents.length > 0 || events.authorityChangeEvents.length > 0;
11
+ }
12
+ function renderChangeEvents(events, color) {
13
+ return [
14
+ ...renderTableSections(events.tableChangeEvents, color),
15
+ ...renderBucketSection(events.bucketChangeEvents, color),
16
+ ...renderAuthoritySection(events.authorityChangeEvents, color)
17
+ ].join("\n\n");
18
+ }
19
+ function renderTableSections(tableChangeEvents, color) {
20
+ const eventsByTable = /* @__PURE__ */ new Map();
21
+ for (const event of tableChangeEvents) {
22
+ const grouped = eventsByTable.get(event.tableDef.name) ?? [];
23
+ grouped.push(event);
24
+ eventsByTable.set(event.tableDef.name, grouped);
25
+ }
26
+ return [...eventsByTable.entries()].map(([tableName, events]) => {
27
+ return `⚫︎Table: ${tableName}\n${renderTable([
28
+ "Type",
29
+ "Name",
30
+ "Event",
31
+ "Detail"
32
+ ], events.map(tableEventRow), color)}`;
33
+ });
34
+ }
35
+ function renderBucketSection(bucketChangeEvents, color) {
36
+ if (bucketChangeEvents.length === 0) return [];
37
+ return [`⚫︎Buckets\n${renderTable([
38
+ "Type",
39
+ "Name",
40
+ "Event",
41
+ "Detail"
42
+ ], bucketChangeEvents.map(bucketEventRow), color)}`];
43
+ }
44
+ function renderAuthoritySection(authorityChangeEvents, color) {
45
+ if (authorityChangeEvents.length === 0) return [];
46
+ return [`⚫︎Authorities\n${renderTable([
47
+ "Type",
48
+ "Event",
49
+ "Detail"
50
+ ], authorityChangeEvents.map((event) => ({
51
+ cells: [
52
+ "authority",
53
+ event.event,
54
+ JSON.stringify(event.authorityDef)
55
+ ],
56
+ color: "green"
57
+ })), color)}`];
58
+ }
59
+ function tableEventRow(event) {
60
+ switch (event.event) {
61
+ case "table:create":
62
+ case "table:update": return row("table", event.tableDef.name, event.event, "", "green");
63
+ case "table:delete": return row("table", event.tableDef.name, event.event, "", "red");
64
+ case "column:create":
65
+ case "column:update": return row("column", event.columnDef.name, event.event, JSON.stringify(event.columnDef), "green");
66
+ case "column:delete": return row("column", event.columnDef.name, event.event, JSON.stringify(event.columnDef), "red");
67
+ case "index:create":
68
+ case "index:update": return row("index", event.indexDef.columns.join(", "), event.event, JSON.stringify(event.indexDef), "green");
69
+ case "index:delete": return row("index", event.indexDef.columns.join(", "), event.event, JSON.stringify(event.indexDef), "red");
70
+ case "module:create":
71
+ case "module:update": return row("module", event.columnDef.name, event.event, JSON.stringify(event.columnDef), "green");
72
+ case "module:delete": return row("module", event.columnDef.name, event.event, JSON.stringify(event.columnDef), "red");
73
+ case "search:enable":
74
+ case "search:update":
75
+ case "history:enable":
76
+ case "draft:enable":
77
+ case "formSubmissions:create":
78
+ case "formSubmissions:update": return row("table", event.tableDef.name, event.event, "", "green");
79
+ case "search:disable":
80
+ case "history:disable":
81
+ case "draft:disable":
82
+ case "formSubmissions:delete": return row("table", event.tableDef.name, event.event, "", "red");
83
+ }
84
+ }
85
+ function bucketEventRow(event) {
86
+ const color = event.event === "bucket:delete" ? "red" : "green";
87
+ return row("bucket", event.bucketDef.name, event.event, JSON.stringify(event.bucketDef), color);
88
+ }
89
+ function row(type, name, event, detail, color) {
90
+ return {
91
+ cells: [
92
+ type,
93
+ name,
94
+ event,
95
+ detail
96
+ ],
97
+ color
98
+ };
99
+ }
100
+
101
+ //#endregion
102
+ //#region src/cli/commands/schema/push.ts
103
+ async function pushHandler(ctx, options) {
104
+ const loaded = await loadConfig(options.configFile);
105
+ if (Result.isFailure(loaded)) return configLoadFailure(loaded.error);
106
+ const events = toResult(await ctx.client.POST("/projects/{projectName}/definitions/dry-run", {
107
+ params: { path: { projectName: ctx.projectName } },
108
+ body: { definition: loaded.value }
109
+ }));
110
+ if (Result.isFailure(events)) return apiErrorFailure(events.error);
111
+ if (!hasChanges(events.value)) return Result.succeed({
112
+ json: events.value,
113
+ text: () => "No changes to apply."
114
+ });
115
+ if (options.dryRun) return Result.succeed({
116
+ json: events.value,
117
+ text: () => renderChangeEvents(events.value, getOutputState().color)
118
+ });
119
+ notice(renderChangeEvents(events.value, getOutputState().color));
120
+ if (!options.yes) {
121
+ if (process.stdin.isTTY !== true) return Result.fail({ message: "Refusing to apply without confirmation in a non-interactive shell. Re-run with --yes." });
122
+ if (!await confirm("Apply these changes?")) return Result.succeed({
123
+ json: { applied: false },
124
+ text: () => "Canceled."
125
+ });
126
+ }
127
+ const applied = toResult(await ctx.client.POST("/projects/{projectName}/definitions", {
128
+ params: { path: { projectName: ctx.projectName } },
129
+ body: { definition: loaded.value }
130
+ }));
131
+ if (Result.isFailure(applied)) return apiErrorFailure(applied.error);
132
+ return Result.succeed({
133
+ json: applied.value,
134
+ text: () => "Schema applied."
135
+ });
136
+ }
137
+ const pushArgs = {
138
+ ...contextArgs,
139
+ "config-file": configFileArg,
140
+ "dry-run": {
141
+ type: "boolean",
142
+ description: "Show change events without applying them",
143
+ default: false
144
+ },
145
+ yes: {
146
+ type: "boolean",
147
+ description: "Apply without the confirmation prompt",
148
+ default: false
149
+ }
150
+ };
151
+ var push_default = defineCommand({
152
+ meta: {
153
+ name: "push",
154
+ description: "Build orizm.config.ts and apply the schema to the project"
155
+ },
156
+ args: pushArgs,
157
+ run: ({ args }) => runWithContext(args, (ctx) => pushHandler(ctx, {
158
+ configFile: args["config-file"] ?? "orizm.config.ts",
159
+ dryRun: args["dry-run"] === true,
160
+ yes: args.yes === true
161
+ }))
162
+ });
163
+
164
+ //#endregion
165
+ export { push_default as default };
166
+ //# sourceMappingURL=push-D7co0keA.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"push-D7co0keA.mjs","names":[],"sources":["../src/cli/schema/change-events.ts","../src/cli/commands/schema/push.ts"],"sourcesContent":["import type { components } from \"@orizm/internal-shared/api-clients/dev-v2\";\nimport { renderTable, type RowColor, type TableRow } from \"../ui/table.js\";\n\ntype ChangeEvents = components[\"schemas\"][\"OrizmConfigChangeEvents\"];\ntype TableChangeEvent = ChangeEvents[\"tableChangeEvents\"][number];\ntype BucketChangeEvent = ChangeEvents[\"bucketChangeEvents\"][number];\ntype AuthorityChangeEvent = ChangeEvents[\"authorityChangeEvents\"][number];\n\nexport function hasChanges(events: ChangeEvents): boolean {\n return (\n events.tableChangeEvents.length > 0 ||\n events.bucketChangeEvents.length > 0 ||\n events.authorityChangeEvents.length > 0\n );\n}\n\nexport function renderChangeEvents(\n events: ChangeEvents,\n color: boolean,\n): string {\n const sections = [\n ...renderTableSections(events.tableChangeEvents, color),\n ...renderBucketSection(events.bucketChangeEvents, color),\n ...renderAuthoritySection(events.authorityChangeEvents, color),\n ];\n return sections.join(\"\\n\\n\");\n}\n\nfunction renderTableSections(\n tableChangeEvents: TableChangeEvent[],\n color: boolean,\n): string[] {\n // 1 テーブルにつき 1 ブロックを出すため、対象テーブル名でまとめる。\n const eventsByTable = new Map<string, TableChangeEvent[]>();\n for (const event of tableChangeEvents) {\n const grouped = eventsByTable.get(event.tableDef.name) ?? [];\n grouped.push(event);\n eventsByTable.set(event.tableDef.name, grouped);\n }\n\n return [...eventsByTable.entries()].map(([tableName, events]) => {\n const rows = events.map(tableEventRow);\n return `⚫︎Table: ${tableName}\\n${renderTable(\n [\"Type\", \"Name\", \"Event\", \"Detail\"],\n rows,\n color,\n )}`;\n });\n}\n\nfunction renderBucketSection(\n bucketChangeEvents: BucketChangeEvent[],\n color: boolean,\n): string[] {\n if (bucketChangeEvents.length === 0) return [];\n const rows = bucketChangeEvents.map(bucketEventRow);\n return [\n `⚫︎Buckets\\n${renderTable(\n [\"Type\", \"Name\", \"Event\", \"Detail\"],\n rows,\n color,\n )}`,\n ];\n}\n\nfunction renderAuthoritySection(\n authorityChangeEvents: AuthorityChangeEvent[],\n color: boolean,\n): string[] {\n if (authorityChangeEvents.length === 0) return [];\n const rows = authorityChangeEvents.map(\n (event): TableRow => ({\n cells: [\"authority\", event.event, JSON.stringify(event.authorityDef)],\n color: \"green\",\n }),\n );\n return [\n `⚫︎Authorities\\n${renderTable([\"Type\", \"Event\", \"Detail\"], rows, color)}`,\n ];\n}\n\n// create / update / enable は安全な変更なので緑、delete / disable はデータを失う危険な操作なので赤。\nfunction tableEventRow(event: TableChangeEvent): TableRow {\n switch (event.event) {\n case \"table:create\":\n case \"table:update\":\n return row(\"table\", event.tableDef.name, event.event, \"\", \"green\");\n case \"table:delete\":\n return row(\"table\", event.tableDef.name, event.event, \"\", \"red\");\n case \"column:create\":\n case \"column:update\":\n return row(\n \"column\",\n event.columnDef.name,\n event.event,\n JSON.stringify(event.columnDef),\n \"green\",\n );\n case \"column:delete\":\n return row(\n \"column\",\n event.columnDef.name,\n event.event,\n JSON.stringify(event.columnDef),\n \"red\",\n );\n case \"index:create\":\n case \"index:update\":\n return row(\n \"index\",\n event.indexDef.columns.join(\", \"),\n event.event,\n JSON.stringify(event.indexDef),\n \"green\",\n );\n case \"index:delete\":\n return row(\n \"index\",\n event.indexDef.columns.join(\", \"),\n event.event,\n JSON.stringify(event.indexDef),\n \"red\",\n );\n case \"module:create\":\n case \"module:update\":\n return row(\n \"module\",\n event.columnDef.name,\n event.event,\n JSON.stringify(event.columnDef),\n \"green\",\n );\n case \"module:delete\":\n return row(\n \"module\",\n event.columnDef.name,\n event.event,\n JSON.stringify(event.columnDef),\n \"red\",\n );\n case \"search:enable\":\n case \"search:update\":\n case \"history:enable\":\n case \"draft:enable\":\n case \"formSubmissions:create\":\n case \"formSubmissions:update\":\n return row(\"table\", event.tableDef.name, event.event, \"\", \"green\");\n case \"search:disable\":\n case \"history:disable\":\n case \"draft:disable\":\n case \"formSubmissions:delete\":\n return row(\"table\", event.tableDef.name, event.event, \"\", \"red\");\n }\n}\n\nfunction bucketEventRow(event: BucketChangeEvent): TableRow {\n const color: RowColor = event.event === \"bucket:delete\" ? \"red\" : \"green\";\n return row(\n \"bucket\",\n event.bucketDef.name,\n event.event,\n JSON.stringify(event.bucketDef),\n color,\n );\n}\n\nfunction row(\n type: string,\n name: string,\n event: string,\n detail: string,\n color: RowColor,\n): TableRow {\n return { cells: [type, name, event, detail], color };\n}\n","import type { ArgsDef } from \"citty\";\nimport { Result } from \"@praha/byethrow\";\nimport {\n defineCommand,\n type CommandFailure,\n type CommandOutput,\n} from \"../define-command.js\";\nimport { contextArgs, configFileArg, DEFAULT_CONFIG_FILE } from \"../shared.js\";\nimport { runWithContext, type CommandContext } from \"../run-with-context.js\";\nimport { configLoadFailure } from \"../config-errors.js\";\nimport { apiErrorFailure } from \"../api-errors.js\";\nimport { loadConfig } from \"../../config-loader.js\";\nimport { toResult } from \"../../api/errors.js\";\nimport { getOutputState, notice } from \"../../ui/output.js\";\nimport { confirm } from \"../../ui/prompt.js\";\nimport { hasChanges, renderChangeEvents } from \"../../schema/change-events.js\";\n\nexport type PushOptions = {\n configFile: string;\n dryRun: boolean;\n yes: boolean;\n};\n\nexport async function pushHandler(\n ctx: CommandContext,\n options: PushOptions,\n): Promise<Result.Result<CommandOutput | undefined, CommandFailure>> {\n const loaded = await loadConfig(options.configFile);\n if (Result.isFailure(loaded)) return configLoadFailure(loaded.error);\n\n const dryRun = await ctx.client.POST(\n \"/projects/{projectName}/definitions/dry-run\",\n {\n params: { path: { projectName: ctx.projectName } },\n body: { definition: loaded.value },\n },\n );\n const events = toResult(dryRun);\n if (Result.isFailure(events)) return apiErrorFailure(events.error);\n\n if (!hasChanges(events.value)) {\n return Result.succeed({\n json: events.value,\n text: () => \"No changes to apply.\",\n });\n }\n\n if (options.dryRun) {\n return Result.succeed({\n json: events.value,\n text: () => renderChangeEvents(events.value, getOutputState().color),\n });\n }\n\n notice(renderChangeEvents(events.value, getOutputState().color));\n\n if (!options.yes) {\n if (process.stdin.isTTY !== true) {\n return Result.fail({\n message:\n \"Refusing to apply without confirmation in a non-interactive shell. Re-run with --yes.\",\n });\n }\n const approved = await confirm(\"Apply these changes?\");\n if (!approved) {\n return Result.succeed({\n json: { applied: false },\n text: () => \"Canceled.\",\n });\n }\n }\n\n const applyResponse = await ctx.client.POST(\n \"/projects/{projectName}/definitions\",\n {\n params: { path: { projectName: ctx.projectName } },\n body: { definition: loaded.value },\n },\n );\n const applied = toResult(applyResponse);\n if (Result.isFailure(applied)) return apiErrorFailure(applied.error);\n\n return Result.succeed({\n json: applied.value,\n text: () => \"Schema applied.\",\n });\n}\n\nconst pushArgs = {\n ...contextArgs,\n \"config-file\": configFileArg,\n \"dry-run\": {\n type: \"boolean\",\n description: \"Show change events without applying them\",\n default: false,\n },\n yes: {\n type: \"boolean\",\n description: \"Apply without the confirmation prompt\",\n default: false,\n },\n} satisfies ArgsDef;\n\nexport default defineCommand({\n meta: {\n name: \"push\",\n description: \"Build orizm.config.ts and apply the schema to the project\",\n },\n args: pushArgs,\n run: ({ args }) =>\n runWithContext(args, (ctx) =>\n pushHandler(ctx, {\n configFile: args[\"config-file\"] ?? DEFAULT_CONFIG_FILE,\n dryRun: args[\"dry-run\"] === true,\n yes: args.yes === true,\n }),\n ),\n});\n"],"mappings":"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"}
@@ -0,0 +1,272 @@
1
+ const require_cli_main = require('./cli/main.cjs');
2
+ const require_run_with_context = require('./run-with-context-DJNnEigg.cjs');
3
+ const require_config_loader = require('./config-loader-D8x32gEU.cjs');
4
+ let _praha_byethrow = require("@praha/byethrow");
5
+ let valibot = require("valibot");
6
+ valibot = require_cli_main.__toESM(valibot, 1);
7
+ let node_fs_promises = require("node:fs/promises");
8
+ let node_path = require("node:path");
9
+ node_path = require_cli_main.__toESM(node_path, 1);
10
+ let prettier_standalone = require("prettier/standalone");
11
+ prettier_standalone = require_cli_main.__toESM(prettier_standalone, 1);
12
+ let prettier_plugins_estree_js = require("prettier/plugins/estree.js");
13
+ prettier_plugins_estree_js = require_cli_main.__toESM(prettier_plugins_estree_js, 1);
14
+ let prettier_plugins_typescript_js = require("prettier/plugins/typescript.js");
15
+ prettier_plugins_typescript_js = require_cli_main.__toESM(prettier_plugins_typescript_js, 1);
16
+ let _orizm_common_config_validator = require("@orizm/common/config-validator");
17
+
18
+ //#region src/cli/codegen/format.ts
19
+ function formatTsWithPrettier(code) {
20
+ return prettier_standalone.format(code, {
21
+ parser: "typescript",
22
+ plugins: [prettier_plugins_estree_js.default, prettier_plugins_typescript_js.default]
23
+ });
24
+ }
25
+
26
+ //#endregion
27
+ //#region src/cli/codegen/render.ts
28
+ const AUTOGEN_HEADER = "// This file was automatically generated and should not be edited.";
29
+ const UTILITIES = `// Utilities
30
+ type _ModuleRef<T> = T & _ModuleDescriptor;
31
+ type _ModuleDescriptor = {
32
+ isModule: true;
33
+ };
34
+ type _ArrayModuleRef<T> = T & _ArrayModuleDescriptor;
35
+ type _ArrayModuleDescriptor = {
36
+ isModuleArray: true;
37
+ };`;
38
+ function toCodeTypeName(str) {
39
+ return (str.charAt(0).toUpperCase() + str.slice(1)).replace(/_([a-z])/g, (g) => g[1].toUpperCase());
40
+ }
41
+ function typeName(column, moduleSuffix = "") {
42
+ switch (column.type) {
43
+ case "reference": return "string";
44
+ case "module": return toCodeTypeName(column.moduleName ?? "") + moduleSuffix;
45
+ case "module-array": return toCodeTypeName(column.moduleName ?? "") + moduleSuffix + "[]";
46
+ case "json": return "unknown";
47
+ case "storage": return "StorageItemType";
48
+ default: return column.type;
49
+ }
50
+ }
51
+ function nullableSuffix(column) {
52
+ return !column.required && column.type !== "module-array" ? " | null" : "";
53
+ }
54
+ function filterRefColumns(columns) {
55
+ return columns.filter((c) => c.type === "reference" && c.tableName !== void 0 && c.includeName !== void 0 && c.includeName !== "" || c.type === "module" && c.moduleName !== void 0 || c.type === "module-array" && c.moduleName !== void 0);
56
+ }
57
+ function getIncludeName(column) {
58
+ return column.type === "reference" ? column.includeName || column.name : column.name;
59
+ }
60
+ function getIncludeType(column) {
61
+ if (column.type === "reference" && column.tableName) return toCodeTypeName(column.tableName) + "__Descriptor";
62
+ if (column.type === "module" && column.moduleName) return `_ModuleRef<${toCodeTypeName(column.moduleName)}__Descriptor>`;
63
+ if (column.type === "module-array" && column.moduleName) return `_ArrayModuleRef<${toCodeTypeName(column.moduleName)}__Descriptor>`;
64
+ return "";
65
+ }
66
+ function renderColumnField(col, options) {
67
+ const optional = options?.optional === true ? "?" : "";
68
+ const suffix = options?.suffix ?? "";
69
+ return `${col.name}${optional}: ${typeName(col, suffix)}${nullableSuffix(col)};`;
70
+ }
71
+ function renderTypeBlock(name, fields) {
72
+ return `export type ${name} = {\n${fields.join("\n")}\n};`;
73
+ }
74
+ function renderRefsFieldLines(columns) {
75
+ const refCols = filterRefColumns(columns);
76
+ if (refCols.length === 0) return ["refs: object;"];
77
+ return [
78
+ "refs: {",
79
+ ...refCols.map((c) => `${getIncludeName(c)}: ${getIncludeType(c)};`),
80
+ "}"
81
+ ];
82
+ }
83
+ function renderUniqueFieldLines(table) {
84
+ const uniqueIndexes = (table.indexes ?? []).filter((i) => i.unique);
85
+ if (uniqueIndexes.length === 0) return ["unique: [];"];
86
+ return [
87
+ "unique: [",
88
+ ...uniqueIndexes.map((index) => {
89
+ return `{ ${index.columns.map((colName) => {
90
+ const col = table.columns.find((c) => c.name === colName);
91
+ if (!col) throw new Error(`column ${colName} not found`);
92
+ const nullable = !col.required && index.nullsNotDistinct ? " | null" : "";
93
+ return `${col.name}:${typeName(col)}${nullable},`;
94
+ }).join("")} },`;
95
+ }),
96
+ "]"
97
+ ];
98
+ }
99
+ function renderModuleRowTypeBlock(mod) {
100
+ return renderTypeBlock(toCodeTypeName(mod.name), ["id: string;", ...mod.columns.map((col) => renderColumnField(col))]);
101
+ }
102
+ function renderModuleDescriptorBlock(mod) {
103
+ const name = toCodeTypeName(mod.name);
104
+ return renderTypeBlock(`${name}__Descriptor`, [
105
+ `row: ${name};`,
106
+ ...renderRefsFieldLines(mod.columns),
107
+ "unique: [];"
108
+ ]);
109
+ }
110
+ function renderSection(title, blocks) {
111
+ if (blocks.length === 0) return "";
112
+ return `// ${title}\n${blocks.join("\n\n")}`;
113
+ }
114
+ function renderWebhookTypesSection(tables) {
115
+ const lines = [
116
+ "// Webhook types",
117
+ "export type WebhookEvent = \"content.create\" | \"content.update\" | \"content.delete\";",
118
+ "",
119
+ "type WebhookPayloadBase = {",
120
+ " event: WebhookEvent;",
121
+ " timestamp: string;",
122
+ " project: string;",
123
+ "};",
124
+ ""
125
+ ];
126
+ if (tables.length > 0) {
127
+ const unionMembers = tables.map((t) => {
128
+ const name = toCodeTypeName(t.name);
129
+ return `| {\n table: "${t.name}";\n content: ${name};\n old?: ${name};\n}`;
130
+ }).join("\n");
131
+ lines.push(`export type WebhookPayload = WebhookPayloadBase & (\n${unionMembers}\n);`);
132
+ } else lines.push("export type WebhookPayload = WebhookPayloadBase;");
133
+ return lines.join("\n");
134
+ }
135
+
136
+ //#endregion
137
+ //#region src/cli/codegen/write.ts
138
+ function resolveOutputFile(output) {
139
+ return output.endsWith(".ts") ? output : node_path.default.join(output, "index.ts");
140
+ }
141
+ async function writeGeneratedFile(output, content) {
142
+ const target = resolveOutputFile(output);
143
+ await (0, node_fs_promises.mkdir)(node_path.default.dirname(target), { recursive: true });
144
+ await (0, node_fs_promises.writeFile)(target, content, "utf-8");
145
+ return target;
146
+ }
147
+
148
+ //#endregion
149
+ //#region src/cli/codegen/pull.ts
150
+ async function pullCurrentDefinition(ctx) {
151
+ const definition = require_run_with_context.toResult(await ctx.client.GET("/projects/{projectName}/definitions/current", { params: { path: { projectName: ctx.projectName } } }));
152
+ if (_praha_byethrow.Result.isFailure(definition)) return definition;
153
+ const parsed = valibot.safeParse(_orizm_common_config_validator.OrizmConfigDef, safeJsonParse(definition.value.raw));
154
+ if (!parsed.success) return _praha_byethrow.Result.fail({
155
+ type: "definition_schema_violation",
156
+ issues: parsed.issues
157
+ });
158
+ return _praha_byethrow.Result.succeed(parsed.output);
159
+ }
160
+ function safeJsonParse(raw) {
161
+ try {
162
+ return JSON.parse(raw);
163
+ } catch {
164
+ return;
165
+ }
166
+ }
167
+
168
+ //#endregion
169
+ //#region src/cli/commands/codegen/run-codegen.ts
170
+ async function runCodegen(params) {
171
+ if (params.pull) return require_run_with_context.runWithContext(params.args, async (ctx) => {
172
+ const pulled = await pullCurrentDefinition(ctx);
173
+ if (_praha_byethrow.Result.isFailure(pulled)) return pullFailure(pulled.error);
174
+ return generate(pulled.value, params);
175
+ });
176
+ const loaded = await require_config_loader.loadConfig(params.configFile);
177
+ if (_praha_byethrow.Result.isFailure(loaded)) return require_config_loader.configLoadFailure(loaded.error);
178
+ return generate(loaded.value, params);
179
+ }
180
+ async function generate(config, params) {
181
+ const content = await params.render(config);
182
+ const target = await writeGeneratedFile(params.output, content);
183
+ return _praha_byethrow.Result.succeed({
184
+ json: { output: target },
185
+ text: () => `Generated ${params.label} types to ${target}`
186
+ });
187
+ }
188
+ function pullFailure(error) {
189
+ if (error.type === "definition_schema_violation") return _praha_byethrow.Result.fail({ message: `The applied definition is invalid (${error.issues.length} problem(s)).\n${require_cli_main.formatValibotIssues(error.issues, require_cli_main.getOutputState().color)}` });
190
+ return require_run_with_context.apiErrorFailure(error);
191
+ }
192
+
193
+ //#endregion
194
+ Object.defineProperty(exports, 'AUTOGEN_HEADER', {
195
+ enumerable: true,
196
+ get: function () {
197
+ return AUTOGEN_HEADER;
198
+ }
199
+ });
200
+ Object.defineProperty(exports, 'UTILITIES', {
201
+ enumerable: true,
202
+ get: function () {
203
+ return UTILITIES;
204
+ }
205
+ });
206
+ Object.defineProperty(exports, 'formatTsWithPrettier', {
207
+ enumerable: true,
208
+ get: function () {
209
+ return formatTsWithPrettier;
210
+ }
211
+ });
212
+ Object.defineProperty(exports, 'renderColumnField', {
213
+ enumerable: true,
214
+ get: function () {
215
+ return renderColumnField;
216
+ }
217
+ });
218
+ Object.defineProperty(exports, 'renderModuleDescriptorBlock', {
219
+ enumerable: true,
220
+ get: function () {
221
+ return renderModuleDescriptorBlock;
222
+ }
223
+ });
224
+ Object.defineProperty(exports, 'renderModuleRowTypeBlock', {
225
+ enumerable: true,
226
+ get: function () {
227
+ return renderModuleRowTypeBlock;
228
+ }
229
+ });
230
+ Object.defineProperty(exports, 'renderRefsFieldLines', {
231
+ enumerable: true,
232
+ get: function () {
233
+ return renderRefsFieldLines;
234
+ }
235
+ });
236
+ Object.defineProperty(exports, 'renderSection', {
237
+ enumerable: true,
238
+ get: function () {
239
+ return renderSection;
240
+ }
241
+ });
242
+ Object.defineProperty(exports, 'renderTypeBlock', {
243
+ enumerable: true,
244
+ get: function () {
245
+ return renderTypeBlock;
246
+ }
247
+ });
248
+ Object.defineProperty(exports, 'renderUniqueFieldLines', {
249
+ enumerable: true,
250
+ get: function () {
251
+ return renderUniqueFieldLines;
252
+ }
253
+ });
254
+ Object.defineProperty(exports, 'renderWebhookTypesSection', {
255
+ enumerable: true,
256
+ get: function () {
257
+ return renderWebhookTypesSection;
258
+ }
259
+ });
260
+ Object.defineProperty(exports, 'runCodegen', {
261
+ enumerable: true,
262
+ get: function () {
263
+ return runCodegen;
264
+ }
265
+ });
266
+ Object.defineProperty(exports, 'toCodeTypeName', {
267
+ enumerable: true,
268
+ get: function () {
269
+ return toCodeTypeName;
270
+ }
271
+ });
272
+ //# sourceMappingURL=run-codegen-Ceeosw5x.cjs.map