@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,56 @@
1
+ import { t as defineCommand } from "./cli/main.mjs";
2
+ import { r as contextArgs } from "./shared-CZZimGxc.mjs";
3
+ import { a as apiErrorFailure, n as runWithContext, u as toResult } from "./run-with-context-CVhmzAFZ.mjs";
4
+ import { t as renderDetail } from "./detail-DN5jCQ4N.mjs";
5
+ import { u as parsePositionalId } from "./parse-DA0k5AHa.mjs";
6
+ import { n as formatTableEvents } from "./table-event-C7gORNlb.mjs";
7
+ import { Result } from "@praha/byethrow";
8
+
9
+ //#region src/cli/commands/webhook/get.ts
10
+ function formatCustomHeaders(customHeaders) {
11
+ return customHeaders.map((header) => `${header.key}:${header.value}`).join(", ");
12
+ }
13
+ async function webhookGetHandler(ctx, options) {
14
+ const webhook = toResult(await ctx.client.GET("/projects/{projectName}/webhooks/{webhookId}", { params: { path: {
15
+ projectName: ctx.projectName,
16
+ webhookId: options.webhookId
17
+ } } }));
18
+ if (Result.isFailure(webhook)) return apiErrorFailure(webhook.error);
19
+ const value = webhook.value;
20
+ return Result.succeed({
21
+ json: value,
22
+ text: () => renderDetail([
23
+ ["ID", String(value.id)],
24
+ ["Name", value.name],
25
+ ["URL", value.url],
26
+ ["Table events", formatTableEvents(value.tableEvents)],
27
+ ["Custom headers", formatCustomHeaders(value.customHeaders)],
28
+ ["Created at", value.createdAt],
29
+ ["Updated at", value.updatedAt]
30
+ ])
31
+ });
32
+ }
33
+ const getArgs = {
34
+ ...contextArgs,
35
+ id: {
36
+ type: "positional",
37
+ required: true,
38
+ description: "Numeric webhook ID"
39
+ }
40
+ };
41
+ var get_default = defineCommand({
42
+ meta: {
43
+ name: "get",
44
+ description: "Show a webhook"
45
+ },
46
+ args: getArgs,
47
+ run: async ({ args }) => {
48
+ const webhookId = parsePositionalId("webhook ID", args.id);
49
+ if (Result.isFailure(webhookId)) return webhookId;
50
+ return runWithContext(args, (ctx) => webhookGetHandler(ctx, { webhookId: webhookId.value }));
51
+ }
52
+ });
53
+
54
+ //#endregion
55
+ export { get_default as default, formatCustomHeaders };
56
+ //# sourceMappingURL=get-RpxdnCKR.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-RpxdnCKR.mjs","names":[],"sources":["../src/cli/commands/webhook/get.ts"],"sourcesContent":["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 } from \"../shared.js\";\nimport { runWithContext, type CommandContext } from \"../run-with-context.js\";\nimport { apiErrorFailure } from \"../api-errors.js\";\nimport { toResult } from \"../../api/errors.js\";\nimport { renderDetail } from \"../../ui/detail.js\";\nimport { parsePositionalId } from \"../parse.js\";\nimport { formatTableEvents } from \"./table-event.js\";\n\nexport function formatCustomHeaders(\n customHeaders: { key: string; value: string }[],\n): string {\n return customHeaders\n .map((header) => `${header.key}:${header.value}`)\n .join(\", \");\n}\n\nexport async function webhookGetHandler(\n ctx: CommandContext,\n options: { webhookId: number },\n): Promise<Result.Result<CommandOutput | undefined, CommandFailure>> {\n const webhook = toResult(\n await ctx.client.GET(\"/projects/{projectName}/webhooks/{webhookId}\", {\n params: {\n path: { projectName: ctx.projectName, webhookId: options.webhookId },\n },\n }),\n );\n if (Result.isFailure(webhook)) return apiErrorFailure(webhook.error);\n\n const value = webhook.value;\n return Result.succeed({\n json: value,\n text: () =>\n renderDetail([\n [\"ID\", String(value.id)],\n [\"Name\", value.name],\n [\"URL\", value.url],\n [\"Table events\", formatTableEvents(value.tableEvents)],\n [\"Custom headers\", formatCustomHeaders(value.customHeaders)],\n [\"Created at\", value.createdAt],\n [\"Updated at\", value.updatedAt],\n ]),\n });\n}\n\nconst getArgs = {\n ...contextArgs,\n id: {\n type: \"positional\",\n required: true,\n description: \"Numeric webhook ID\",\n },\n} satisfies ArgsDef;\n\nexport default defineCommand({\n meta: {\n name: \"get\",\n description: \"Show a webhook\",\n },\n args: getArgs,\n run: async ({ args }) => {\n const webhookId = parsePositionalId(\"webhook ID\", args.id);\n if (Result.isFailure(webhookId)) return webhookId;\n\n return runWithContext(args, (ctx) =>\n webhookGetHandler(ctx, { webhookId: webhookId.value }),\n );\n },\n});\n"],"mappings":";;;;;;;;;AAeA,SAAgB,oBACd,eACQ;CACR,OAAO,cACJ,KAAK,WAAW,GAAG,OAAO,IAAI,GAAG,OAAO,OAAO,CAAC,CAChD,KAAK,IAAI;AACd;AAEA,eAAsB,kBACpB,KACA,SACmE;CACnE,MAAM,UAAU,SACd,MAAM,IAAI,OAAO,IAAI,gDAAgD,EACnE,QAAQ,EACN,MAAM;EAAE,aAAa,IAAI;EAAa,WAAW,QAAQ;CAAU,EACrE,EACF,CAAC,CACH;CACA,IAAI,OAAO,UAAU,OAAO,GAAG,OAAO,gBAAgB,QAAQ,KAAK;CAEnE,MAAM,QAAQ,QAAQ;CACtB,OAAO,OAAO,QAAQ;EACpB,MAAM;EACN,YACE,aAAa;GACX,CAAC,MAAM,OAAO,MAAM,EAAE,CAAC;GACvB,CAAC,QAAQ,MAAM,IAAI;GACnB,CAAC,OAAO,MAAM,GAAG;GACjB,CAAC,gBAAgB,kBAAkB,MAAM,WAAW,CAAC;GACrD,CAAC,kBAAkB,oBAAoB,MAAM,aAAa,CAAC;GAC3D,CAAC,cAAc,MAAM,SAAS;GAC9B,CAAC,cAAc,MAAM,SAAS;EAChC,CAAC;CACL,CAAC;AACH;AAEA,MAAM,UAAU;CACd,GAAG;CACH,IAAI;EACF,MAAM;EACN,UAAU;EACV,aAAa;CACf;AACF;AAEA,kBAAe,cAAc;CAC3B,MAAM;EACJ,MAAM;EACN,aAAa;CACf;CACA,MAAM;CACN,KAAK,OAAO,EAAE,WAAW;EACvB,MAAM,YAAY,kBAAkB,cAAc,KAAK,EAAE;EACzD,IAAI,OAAO,UAAU,SAAS,GAAG,OAAO;EAExC,OAAO,eAAe,OAAO,QAC3B,kBAAkB,KAAK,EAAE,WAAW,UAAU,MAAM,CAAC,CACvD;CACF;AACF,CAAC"}
@@ -0,0 +1,57 @@
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_detail = require('./detail-8CXNIhKw.cjs');
5
+ let _praha_byethrow = require("@praha/byethrow");
6
+
7
+ //#region src/cli/commands/bucket/object/get.ts
8
+ async function bucketObjectGetHandler(ctx, options) {
9
+ const object = require_run_with_context.toResult(await ctx.client.GET("/projects/{projectName}/buckets/{bucketName}/objects/{objectKey}", { params: { path: {
10
+ projectName: ctx.projectName,
11
+ bucketName: options.bucket,
12
+ objectKey: options.key
13
+ } } }));
14
+ if (_praha_byethrow.Result.isFailure(object)) return require_run_with_context.apiErrorFailure(object.error);
15
+ const value = object.value;
16
+ return _praha_byethrow.Result.succeed({
17
+ json: value,
18
+ text: () => require_detail.renderDetail([
19
+ ["Key", value.key],
20
+ ["Original filename", value.originalFilename],
21
+ ["Size", String(value.size)],
22
+ ["Type", value.type],
23
+ ["Group", value.group ?? "-"],
24
+ ["Public URL", value.publicUrl ?? "-"],
25
+ ["Protected URL", value.protectedUrl],
26
+ ["Created at", value.createdAt]
27
+ ])
28
+ });
29
+ }
30
+ const getArgs = {
31
+ ...require_shared.contextArgs,
32
+ bucket: {
33
+ type: "positional",
34
+ required: true,
35
+ description: "Bucket name"
36
+ },
37
+ key: {
38
+ type: "positional",
39
+ required: true,
40
+ description: "Object key"
41
+ }
42
+ };
43
+ var get_default = require_cli_main.defineCommand({
44
+ meta: {
45
+ name: "get",
46
+ description: "Show a bucket object's metadata"
47
+ },
48
+ args: getArgs,
49
+ run: ({ args }) => require_run_with_context.runWithContext(args, (ctx) => bucketObjectGetHandler(ctx, {
50
+ bucket: args.bucket,
51
+ key: args.key
52
+ }))
53
+ });
54
+
55
+ //#endregion
56
+ exports.default = get_default;
57
+ //# sourceMappingURL=get-jwXRlIBJ.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-jwXRlIBJ.cjs","names":["toResult","Result","apiErrorFailure","renderDetail","contextArgs","defineCommand","runWithContext"],"sources":["../src/cli/commands/bucket/object/get.ts"],"sourcesContent":["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 } from \"../../shared.js\";\nimport { runWithContext, type CommandContext } from \"../../run-with-context.js\";\nimport { apiErrorFailure } from \"../../api-errors.js\";\nimport { toResult } from \"../../../api/errors.js\";\nimport { renderDetail } from \"../../../ui/detail.js\";\n\nexport async function bucketObjectGetHandler(\n ctx: CommandContext,\n options: { bucket: string; key: string },\n): Promise<Result.Result<CommandOutput | undefined, CommandFailure>> {\n const object = toResult(\n await ctx.client.GET(\n \"/projects/{projectName}/buckets/{bucketName}/objects/{objectKey}\",\n {\n params: {\n path: {\n projectName: ctx.projectName,\n bucketName: options.bucket,\n objectKey: options.key,\n },\n },\n },\n ),\n );\n if (Result.isFailure(object)) return apiErrorFailure(object.error);\n\n const value = object.value;\n return Result.succeed({\n json: value,\n text: () =>\n renderDetail([\n [\"Key\", value.key],\n [\"Original filename\", value.originalFilename],\n [\"Size\", String(value.size)],\n [\"Type\", value.type],\n [\"Group\", value.group ?? \"-\"],\n [\"Public URL\", value.publicUrl ?? \"-\"],\n [\"Protected URL\", value.protectedUrl],\n [\"Created at\", value.createdAt],\n ]),\n });\n}\n\nconst getArgs = {\n ...contextArgs,\n bucket: {\n type: \"positional\",\n required: true,\n description: \"Bucket name\",\n },\n key: {\n type: \"positional\",\n required: true,\n description: \"Object key\",\n },\n} satisfies ArgsDef;\n\nexport default defineCommand({\n meta: {\n name: \"get\",\n description: \"Show a bucket object's metadata\",\n },\n args: getArgs,\n run: ({ args }) =>\n runWithContext(args, (ctx) =>\n bucketObjectGetHandler(ctx, { bucket: args.bucket, key: args.key }),\n ),\n});\n"],"mappings":";;;;;;;AAaA,eAAsB,uBACpB,KACA,SACmE;CACnE,MAAM,SAASA,kCACb,MAAM,IAAI,OAAO,IACf,oEACA,EACE,QAAQ,EACN,MAAM;EACJ,aAAa,IAAI;EACjB,YAAY,QAAQ;EACpB,WAAW,QAAQ;CACrB,EACF,EACF,CACF,CACF;CACA,IAAIC,uBAAO,UAAU,MAAM,GAAG,OAAOC,yCAAgB,OAAO,KAAK;CAEjE,MAAM,QAAQ,OAAO;CACrB,OAAOD,uBAAO,QAAQ;EACpB,MAAM;EACN,YACEE,4BAAa;GACX,CAAC,OAAO,MAAM,GAAG;GACjB,CAAC,qBAAqB,MAAM,gBAAgB;GAC5C,CAAC,QAAQ,OAAO,MAAM,IAAI,CAAC;GAC3B,CAAC,QAAQ,MAAM,IAAI;GACnB,CAAC,SAAS,MAAM,SAAS,GAAG;GAC5B,CAAC,cAAc,MAAM,aAAa,GAAG;GACrC,CAAC,iBAAiB,MAAM,YAAY;GACpC,CAAC,cAAc,MAAM,SAAS;EAChC,CAAC;CACL,CAAC;AACH;AAEA,MAAM,UAAU;CACd,GAAGC;CACH,QAAQ;EACN,MAAM;EACN,UAAU;EACV,aAAa;CACf;CACA,KAAK;EACH,MAAM;EACN,UAAU;EACV,aAAa;CACf;AACF;AAEA,kBAAeC,+BAAc;CAC3B,MAAM;EACJ,MAAM;EACN,aAAa;CACf;CACA,MAAM;CACN,MAAM,EAAE,WACNC,wCAAe,OAAO,QACpB,uBAAuB,KAAK;EAAE,QAAQ,KAAK;EAAQ,KAAK,KAAK;CAAI,CAAC,CACpE;AACJ,CAAC"}
@@ -0,0 +1,36 @@
1
+ import { o as warn } from "./cli/main.mjs";
2
+ import { f as parseRepeatableFlag, p as splitColonPair } from "./parse-DA0k5AHa.mjs";
3
+ import { n as findDuplicateKey, t as applyKeyedEdits } from "./array-update-CMFUoQEe.mjs";
4
+ import { Result } from "@praha/byethrow";
5
+
6
+ //#region src/cli/commands/group-roles.ts
7
+ function parseGroupRoles(flag, value) {
8
+ if (value === void 0) return Result.succeed(void 0);
9
+ const items = parseRepeatableFlag(flag, value);
10
+ if (Result.isFailure(items)) return items;
11
+ const groupRoles = [];
12
+ for (const item of items.value) {
13
+ const pair = splitColonPair(flag, item, "<group>:<role>");
14
+ if (Result.isFailure(pair)) return pair;
15
+ groupRoles.push({
16
+ group: pair.value[0],
17
+ role: pair.value[1]
18
+ });
19
+ }
20
+ const duplicate = findDuplicateKey(groupRoles, (groupRole) => groupRole.group);
21
+ if (duplicate !== void 0) return Result.fail({ message: `Invalid --${flag}: group "${duplicate}" is specified multiple times.` });
22
+ return Result.succeed(groupRoles);
23
+ }
24
+ function applyGroupRoleEdits(current, edits) {
25
+ return applyKeyedEdits(current, edits, (groupRole) => groupRole.group);
26
+ }
27
+ function warnMissingGroupRemovals(current, removals) {
28
+ for (const group of removals) if (!current.some((groupRole) => groupRole.group === group)) warn(`Group "${group}" is not assigned; skipped removing it.`);
29
+ }
30
+ function formatGroupRoles(groupRoles) {
31
+ return groupRoles.map((groupRole) => `${groupRole.group}:${groupRole.role}`).join(", ");
32
+ }
33
+
34
+ //#endregion
35
+ export { warnMissingGroupRemovals as i, formatGroupRoles as n, parseGroupRoles as r, applyGroupRoleEdits as t };
36
+ //# sourceMappingURL=group-roles-BIH7q8tf.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"group-roles-BIH7q8tf.mjs","names":[],"sources":["../src/cli/commands/group-roles.ts"],"sourcesContent":["import { Result } from \"@praha/byethrow\";\nimport { warn } from \"../ui/output.js\";\nimport type { CommandFailure } from \"./define-command.js\";\nimport { parseRepeatableFlag, splitColonPair } from \"./parse.js\";\nimport { applyKeyedEdits, findDuplicateKey } from \"./array-update.js\";\n\nexport type GroupRole = { group: string; role: string };\n\nexport function parseGroupRoles(\n flag: string,\n value: unknown,\n): Result.Result<GroupRole[] | undefined, CommandFailure> {\n if (value === undefined) return Result.succeed(undefined);\n\n const items = parseRepeatableFlag(flag, value);\n if (Result.isFailure(items)) return items;\n\n const groupRoles: GroupRole[] = [];\n for (const item of items.value) {\n const pair = splitColonPair(flag, item, \"<group>:<role>\");\n if (Result.isFailure(pair)) return pair;\n groupRoles.push({ group: pair.value[0], role: pair.value[1] });\n }\n // API が group の一意性を拒否する入力を黙って畳まず、矛盾した指定として弾く\n const duplicate = findDuplicateKey(\n groupRoles,\n (groupRole) => groupRole.group,\n );\n if (duplicate !== undefined) {\n return Result.fail({\n message: `Invalid --${flag}: group \"${duplicate}\" is specified multiple times.`,\n });\n }\n return Result.succeed(groupRoles);\n}\n\n// API が groupRoles 内の group の一意性を検証する (同じ group に複数 role は持てない) ため、\n// group をキーとして add は role の置き換え、remove は group 名指定で行う。\nexport function applyGroupRoleEdits(\n current: GroupRole[],\n edits: { add: GroupRole[]; remove: string[] },\n): GroupRole[] {\n return applyKeyedEdits(current, edits, (groupRole) => groupRole.group);\n}\n\n// 存在しない group の remove は冪等に無視する (エラーにしない) が、タイポに気づけるよう警告は出す。\nexport function warnMissingGroupRemovals(\n current: GroupRole[],\n removals: string[],\n): void {\n for (const group of removals) {\n if (!current.some((groupRole) => groupRole.group === group)) {\n warn(`Group \"${group}\" is not assigned; skipped removing it.`);\n }\n }\n}\n\nexport function formatGroupRoles(groupRoles: GroupRole[]): string {\n return groupRoles\n .map((groupRole) => `${groupRole.group}:${groupRole.role}`)\n .join(\", \");\n}\n"],"mappings":";;;;;;AAQA,SAAgB,gBACd,MACA,OACwD;CACxD,IAAI,UAAU,QAAW,OAAO,OAAO,QAAQ,MAAS;CAExD,MAAM,QAAQ,oBAAoB,MAAM,KAAK;CAC7C,IAAI,OAAO,UAAU,KAAK,GAAG,OAAO;CAEpC,MAAM,aAA0B,CAAC;CACjC,KAAK,MAAM,QAAQ,MAAM,OAAO;EAC9B,MAAM,OAAO,eAAe,MAAM,MAAM,gBAAgB;EACxD,IAAI,OAAO,UAAU,IAAI,GAAG,OAAO;EACnC,WAAW,KAAK;GAAE,OAAO,KAAK,MAAM;GAAI,MAAM,KAAK,MAAM;EAAG,CAAC;CAC/D;CAEA,MAAM,YAAY,iBAChB,aACC,cAAc,UAAU,KAC3B;CACA,IAAI,cAAc,QAChB,OAAO,OAAO,KAAK,EACjB,SAAS,aAAa,KAAK,WAAW,UAAU,gCAClD,CAAC;CAEH,OAAO,OAAO,QAAQ,UAAU;AAClC;AAIA,SAAgB,oBACd,SACA,OACa;CACb,OAAO,gBAAgB,SAAS,QAAQ,cAAc,UAAU,KAAK;AACvE;AAGA,SAAgB,yBACd,SACA,UACM;CACN,KAAK,MAAM,SAAS,UAClB,IAAI,CAAC,QAAQ,MAAM,cAAc,UAAU,UAAU,KAAK,GACxD,KAAK,UAAU,MAAM,wCAAwC;AAGnE;AAEA,SAAgB,iBAAiB,YAAiC;CAChE,OAAO,WACJ,KAAK,cAAc,GAAG,UAAU,MAAM,GAAG,UAAU,MAAM,CAAC,CAC1D,KAAK,IAAI;AACd"}
@@ -0,0 +1,59 @@
1
+ const require_cli_main = require('./cli/main.cjs');
2
+ const require_parse = require('./parse-C8oHgQXx.cjs');
3
+ const require_array_update = require('./array-update-Dch4e9tI.cjs');
4
+ let _praha_byethrow = require("@praha/byethrow");
5
+
6
+ //#region src/cli/commands/group-roles.ts
7
+ function parseGroupRoles(flag, value) {
8
+ if (value === void 0) return _praha_byethrow.Result.succeed(void 0);
9
+ const items = require_parse.parseRepeatableFlag(flag, value);
10
+ if (_praha_byethrow.Result.isFailure(items)) return items;
11
+ const groupRoles = [];
12
+ for (const item of items.value) {
13
+ const pair = require_parse.splitColonPair(flag, item, "<group>:<role>");
14
+ if (_praha_byethrow.Result.isFailure(pair)) return pair;
15
+ groupRoles.push({
16
+ group: pair.value[0],
17
+ role: pair.value[1]
18
+ });
19
+ }
20
+ const duplicate = require_array_update.findDuplicateKey(groupRoles, (groupRole) => groupRole.group);
21
+ if (duplicate !== void 0) return _praha_byethrow.Result.fail({ message: `Invalid --${flag}: group "${duplicate}" is specified multiple times.` });
22
+ return _praha_byethrow.Result.succeed(groupRoles);
23
+ }
24
+ function applyGroupRoleEdits(current, edits) {
25
+ return require_array_update.applyKeyedEdits(current, edits, (groupRole) => groupRole.group);
26
+ }
27
+ function warnMissingGroupRemovals(current, removals) {
28
+ for (const group of removals) if (!current.some((groupRole) => groupRole.group === group)) require_cli_main.warn(`Group "${group}" is not assigned; skipped removing it.`);
29
+ }
30
+ function formatGroupRoles(groupRoles) {
31
+ return groupRoles.map((groupRole) => `${groupRole.group}:${groupRole.role}`).join(", ");
32
+ }
33
+
34
+ //#endregion
35
+ Object.defineProperty(exports, 'applyGroupRoleEdits', {
36
+ enumerable: true,
37
+ get: function () {
38
+ return applyGroupRoleEdits;
39
+ }
40
+ });
41
+ Object.defineProperty(exports, 'formatGroupRoles', {
42
+ enumerable: true,
43
+ get: function () {
44
+ return formatGroupRoles;
45
+ }
46
+ });
47
+ Object.defineProperty(exports, 'parseGroupRoles', {
48
+ enumerable: true,
49
+ get: function () {
50
+ return parseGroupRoles;
51
+ }
52
+ });
53
+ Object.defineProperty(exports, 'warnMissingGroupRemovals', {
54
+ enumerable: true,
55
+ get: function () {
56
+ return warnMissingGroupRemovals;
57
+ }
58
+ });
59
+ //# sourceMappingURL=group-roles-B_iAZog-.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"group-roles-B_iAZog-.cjs","names":["Result","parseRepeatableFlag","splitColonPair","findDuplicateKey","applyKeyedEdits"],"sources":["../src/cli/commands/group-roles.ts"],"sourcesContent":["import { Result } from \"@praha/byethrow\";\nimport { warn } from \"../ui/output.js\";\nimport type { CommandFailure } from \"./define-command.js\";\nimport { parseRepeatableFlag, splitColonPair } from \"./parse.js\";\nimport { applyKeyedEdits, findDuplicateKey } from \"./array-update.js\";\n\nexport type GroupRole = { group: string; role: string };\n\nexport function parseGroupRoles(\n flag: string,\n value: unknown,\n): Result.Result<GroupRole[] | undefined, CommandFailure> {\n if (value === undefined) return Result.succeed(undefined);\n\n const items = parseRepeatableFlag(flag, value);\n if (Result.isFailure(items)) return items;\n\n const groupRoles: GroupRole[] = [];\n for (const item of items.value) {\n const pair = splitColonPair(flag, item, \"<group>:<role>\");\n if (Result.isFailure(pair)) return pair;\n groupRoles.push({ group: pair.value[0], role: pair.value[1] });\n }\n // API が group の一意性を拒否する入力を黙って畳まず、矛盾した指定として弾く\n const duplicate = findDuplicateKey(\n groupRoles,\n (groupRole) => groupRole.group,\n );\n if (duplicate !== undefined) {\n return Result.fail({\n message: `Invalid --${flag}: group \"${duplicate}\" is specified multiple times.`,\n });\n }\n return Result.succeed(groupRoles);\n}\n\n// API が groupRoles 内の group の一意性を検証する (同じ group に複数 role は持てない) ため、\n// group をキーとして add は role の置き換え、remove は group 名指定で行う。\nexport function applyGroupRoleEdits(\n current: GroupRole[],\n edits: { add: GroupRole[]; remove: string[] },\n): GroupRole[] {\n return applyKeyedEdits(current, edits, (groupRole) => groupRole.group);\n}\n\n// 存在しない group の remove は冪等に無視する (エラーにしない) が、タイポに気づけるよう警告は出す。\nexport function warnMissingGroupRemovals(\n current: GroupRole[],\n removals: string[],\n): void {\n for (const group of removals) {\n if (!current.some((groupRole) => groupRole.group === group)) {\n warn(`Group \"${group}\" is not assigned; skipped removing it.`);\n }\n }\n}\n\nexport function formatGroupRoles(groupRoles: GroupRole[]): string {\n return groupRoles\n .map((groupRole) => `${groupRole.group}:${groupRole.role}`)\n .join(\", \");\n}\n"],"mappings":";;;;;;AAQA,SAAgB,gBACd,MACA,OACwD;CACxD,IAAI,UAAU,QAAW,OAAOA,uBAAO,QAAQ,MAAS;CAExD,MAAM,QAAQC,kCAAoB,MAAM,KAAK;CAC7C,IAAID,uBAAO,UAAU,KAAK,GAAG,OAAO;CAEpC,MAAM,aAA0B,CAAC;CACjC,KAAK,MAAM,QAAQ,MAAM,OAAO;EAC9B,MAAM,OAAOE,6BAAe,MAAM,MAAM,gBAAgB;EACxD,IAAIF,uBAAO,UAAU,IAAI,GAAG,OAAO;EACnC,WAAW,KAAK;GAAE,OAAO,KAAK,MAAM;GAAI,MAAM,KAAK,MAAM;EAAG,CAAC;CAC/D;CAEA,MAAM,YAAYG,sCAChB,aACC,cAAc,UAAU,KAC3B;CACA,IAAI,cAAc,QAChB,OAAOH,uBAAO,KAAK,EACjB,SAAS,aAAa,KAAK,WAAW,UAAU,gCAClD,CAAC;CAEH,OAAOA,uBAAO,QAAQ,UAAU;AAClC;AAIA,SAAgB,oBACd,SACA,OACa;CACb,OAAOI,qCAAgB,SAAS,QAAQ,cAAc,UAAU,KAAK;AACvE;AAGA,SAAgB,yBACd,SACA,UACM;CACN,KAAK,MAAM,SAAS,UAClB,IAAI,CAAC,QAAQ,MAAM,cAAc,UAAU,UAAU,KAAK,GACxD,sBAAK,UAAU,MAAM,wCAAwC;AAGnE;AAEA,SAAgB,iBAAiB,YAAiC;CAChE,OAAO,WACJ,KAAK,cAAc,GAAG,UAAU,MAAM,GAAG,UAAU,MAAM,CAAC,CAC1D,KAAK,IAAI;AACd"}
@@ -0,0 +1,66 @@
1
+ import { t as defineCommand } from "./cli/main.mjs";
2
+ import { r as contextArgs } from "./shared-CZZimGxc.mjs";
3
+ import { a as apiErrorFailure, n as runWithContext, u as toResult } from "./run-with-context-CVhmzAFZ.mjs";
4
+ import { t as renderDetail } from "./detail-DN5jCQ4N.mjs";
5
+ import { t as collectRepeatableFlag } from "./parse-DA0k5AHa.mjs";
6
+ import { n as formatGroupRoles, r as parseGroupRoles } from "./group-roles-BIH7q8tf.mjs";
7
+ import { Result } from "@praha/byethrow";
8
+
9
+ //#region src/cli/commands/project-user/invite.ts
10
+ async function projectUserInviteHandler(ctx, options) {
11
+ const invited = toResult(await ctx.client.POST("/projects/{projectName}/users", {
12
+ params: { path: { projectName: ctx.projectName } },
13
+ body: {
14
+ email: options.email,
15
+ ...options.name !== void 0 ? { name: options.name } : {},
16
+ ...options.groupRoles !== void 0 ? { groupRoles: options.groupRoles } : {}
17
+ }
18
+ }));
19
+ if (Result.isFailure(invited)) return apiErrorFailure(invited.error);
20
+ const value = invited.value;
21
+ return Result.succeed({
22
+ json: value,
23
+ text: () => renderDetail([
24
+ ["Invited", value.email],
25
+ ["ID", value.id],
26
+ ["Name", value.name],
27
+ ["Group roles", formatGroupRoles(value.groupRoles)]
28
+ ])
29
+ });
30
+ }
31
+ const inviteArgs = {
32
+ ...contextArgs,
33
+ email: {
34
+ type: "positional",
35
+ required: true,
36
+ description: "Email address to invite"
37
+ },
38
+ name: {
39
+ type: "string",
40
+ description: "Display name for the invited user"
41
+ },
42
+ "group-role": {
43
+ type: "string",
44
+ description: "RBAC assignment as <group>:<role>; repeatable"
45
+ }
46
+ };
47
+ var invite_default = defineCommand({
48
+ meta: {
49
+ name: "invite",
50
+ description: "Invite a user to the project by email"
51
+ },
52
+ args: inviteArgs,
53
+ run: async ({ args, rawArgs }) => {
54
+ const groupRoles = parseGroupRoles("group-role", collectRepeatableFlag(rawArgs, "group-role"));
55
+ if (Result.isFailure(groupRoles)) return groupRoles;
56
+ return runWithContext(args, (ctx) => projectUserInviteHandler(ctx, {
57
+ email: args.email,
58
+ name: typeof args.name === "string" ? args.name : void 0,
59
+ groupRoles: groupRoles.value
60
+ }));
61
+ }
62
+ });
63
+
64
+ //#endregion
65
+ export { invite_default as default };
66
+ //# sourceMappingURL=invite-D66DSMvq.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"invite-D66DSMvq.mjs","names":[],"sources":["../src/cli/commands/project-user/invite.ts"],"sourcesContent":["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 } from \"../shared.js\";\nimport { runWithContext, type CommandContext } from \"../run-with-context.js\";\nimport { apiErrorFailure } from \"../api-errors.js\";\nimport { toResult } from \"../../api/errors.js\";\nimport { renderDetail } from \"../../ui/detail.js\";\nimport {\n formatGroupRoles,\n parseGroupRoles,\n type GroupRole,\n} from \"../group-roles.js\";\nimport { collectRepeatableFlag } from \"../parse.js\";\n\nexport async function projectUserInviteHandler(\n ctx: CommandContext,\n options: { email: string; name?: string; groupRoles?: GroupRole[] },\n): Promise<Result.Result<CommandOutput | undefined, CommandFailure>> {\n const invited = toResult(\n await ctx.client.POST(\"/projects/{projectName}/users\", {\n params: { path: { projectName: ctx.projectName } },\n body: {\n email: options.email,\n ...(options.name !== undefined ? { name: options.name } : {}),\n ...(options.groupRoles !== undefined\n ? { groupRoles: options.groupRoles }\n : {}),\n },\n }),\n );\n if (Result.isFailure(invited)) return apiErrorFailure(invited.error);\n\n const value = invited.value;\n return Result.succeed({\n json: value,\n text: () =>\n renderDetail([\n [\"Invited\", value.email],\n [\"ID\", value.id],\n [\"Name\", value.name],\n [\"Group roles\", formatGroupRoles(value.groupRoles)],\n ]),\n });\n}\n\nconst inviteArgs = {\n ...contextArgs,\n email: {\n type: \"positional\",\n required: true,\n description: \"Email address to invite\",\n },\n name: {\n type: \"string\",\n description: \"Display name for the invited user\",\n },\n \"group-role\": {\n type: \"string\",\n description: \"RBAC assignment as <group>:<role>; repeatable\",\n },\n} satisfies ArgsDef;\n\nexport default defineCommand({\n meta: {\n name: \"invite\",\n description: \"Invite a user to the project by email\",\n },\n args: inviteArgs,\n run: async ({ args, rawArgs }) => {\n const groupRoles = parseGroupRoles(\n \"group-role\",\n collectRepeatableFlag(rawArgs, \"group-role\"),\n );\n if (Result.isFailure(groupRoles)) return groupRoles;\n\n return runWithContext(args, (ctx) =>\n projectUserInviteHandler(ctx, {\n email: args.email,\n name: typeof args.name === \"string\" ? args.name : undefined,\n groupRoles: groupRoles.value,\n }),\n );\n },\n});\n"],"mappings":";;;;;;;;;AAmBA,eAAsB,yBACpB,KACA,SACmE;CACnE,MAAM,UAAU,SACd,MAAM,IAAI,OAAO,KAAK,iCAAiC;EACrD,QAAQ,EAAE,MAAM,EAAE,aAAa,IAAI,YAAY,EAAE;EACjD,MAAM;GACJ,OAAO,QAAQ;GACf,GAAI,QAAQ,SAAS,SAAY,EAAE,MAAM,QAAQ,KAAK,IAAI,CAAC;GAC3D,GAAI,QAAQ,eAAe,SACvB,EAAE,YAAY,QAAQ,WAAW,IACjC,CAAC;EACP;CACF,CAAC,CACH;CACA,IAAI,OAAO,UAAU,OAAO,GAAG,OAAO,gBAAgB,QAAQ,KAAK;CAEnE,MAAM,QAAQ,QAAQ;CACtB,OAAO,OAAO,QAAQ;EACpB,MAAM;EACN,YACE,aAAa;GACX,CAAC,WAAW,MAAM,KAAK;GACvB,CAAC,MAAM,MAAM,EAAE;GACf,CAAC,QAAQ,MAAM,IAAI;GACnB,CAAC,eAAe,iBAAiB,MAAM,UAAU,CAAC;EACpD,CAAC;CACL,CAAC;AACH;AAEA,MAAM,aAAa;CACjB,GAAG;CACH,OAAO;EACL,MAAM;EACN,UAAU;EACV,aAAa;CACf;CACA,MAAM;EACJ,MAAM;EACN,aAAa;CACf;CACA,cAAc;EACZ,MAAM;EACN,aAAa;CACf;AACF;AAEA,qBAAe,cAAc;CAC3B,MAAM;EACJ,MAAM;EACN,aAAa;CACf;CACA,MAAM;CACN,KAAK,OAAO,EAAE,MAAM,cAAc;EAChC,MAAM,aAAa,gBACjB,cACA,sBAAsB,SAAS,YAAY,CAC7C;EACA,IAAI,OAAO,UAAU,UAAU,GAAG,OAAO;EAEzC,OAAO,eAAe,OAAO,QAC3B,yBAAyB,KAAK;GAC5B,OAAO,KAAK;GACZ,MAAM,OAAO,KAAK,SAAS,WAAW,KAAK,OAAO;GAClD,YAAY,WAAW;EACzB,CAAC,CACH;CACF;AACF,CAAC"}
@@ -0,0 +1,66 @@
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_detail = require('./detail-8CXNIhKw.cjs');
5
+ const require_parse = require('./parse-C8oHgQXx.cjs');
6
+ const require_group_roles = require('./group-roles-B_iAZog-.cjs');
7
+ let _praha_byethrow = require("@praha/byethrow");
8
+
9
+ //#region src/cli/commands/project-user/invite.ts
10
+ async function projectUserInviteHandler(ctx, options) {
11
+ const invited = require_run_with_context.toResult(await ctx.client.POST("/projects/{projectName}/users", {
12
+ params: { path: { projectName: ctx.projectName } },
13
+ body: {
14
+ email: options.email,
15
+ ...options.name !== void 0 ? { name: options.name } : {},
16
+ ...options.groupRoles !== void 0 ? { groupRoles: options.groupRoles } : {}
17
+ }
18
+ }));
19
+ if (_praha_byethrow.Result.isFailure(invited)) return require_run_with_context.apiErrorFailure(invited.error);
20
+ const value = invited.value;
21
+ return _praha_byethrow.Result.succeed({
22
+ json: value,
23
+ text: () => require_detail.renderDetail([
24
+ ["Invited", value.email],
25
+ ["ID", value.id],
26
+ ["Name", value.name],
27
+ ["Group roles", require_group_roles.formatGroupRoles(value.groupRoles)]
28
+ ])
29
+ });
30
+ }
31
+ const inviteArgs = {
32
+ ...require_shared.contextArgs,
33
+ email: {
34
+ type: "positional",
35
+ required: true,
36
+ description: "Email address to invite"
37
+ },
38
+ name: {
39
+ type: "string",
40
+ description: "Display name for the invited user"
41
+ },
42
+ "group-role": {
43
+ type: "string",
44
+ description: "RBAC assignment as <group>:<role>; repeatable"
45
+ }
46
+ };
47
+ var invite_default = require_cli_main.defineCommand({
48
+ meta: {
49
+ name: "invite",
50
+ description: "Invite a user to the project by email"
51
+ },
52
+ args: inviteArgs,
53
+ run: async ({ args, rawArgs }) => {
54
+ const groupRoles = require_group_roles.parseGroupRoles("group-role", require_parse.collectRepeatableFlag(rawArgs, "group-role"));
55
+ if (_praha_byethrow.Result.isFailure(groupRoles)) return groupRoles;
56
+ return require_run_with_context.runWithContext(args, (ctx) => projectUserInviteHandler(ctx, {
57
+ email: args.email,
58
+ name: typeof args.name === "string" ? args.name : void 0,
59
+ groupRoles: groupRoles.value
60
+ }));
61
+ }
62
+ });
63
+
64
+ //#endregion
65
+ exports.default = invite_default;
66
+ //# sourceMappingURL=invite-DPygtCoO.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"invite-DPygtCoO.cjs","names":["toResult","Result","apiErrorFailure","renderDetail","formatGroupRoles","contextArgs","defineCommand","parseGroupRoles","collectRepeatableFlag","runWithContext"],"sources":["../src/cli/commands/project-user/invite.ts"],"sourcesContent":["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 } from \"../shared.js\";\nimport { runWithContext, type CommandContext } from \"../run-with-context.js\";\nimport { apiErrorFailure } from \"../api-errors.js\";\nimport { toResult } from \"../../api/errors.js\";\nimport { renderDetail } from \"../../ui/detail.js\";\nimport {\n formatGroupRoles,\n parseGroupRoles,\n type GroupRole,\n} from \"../group-roles.js\";\nimport { collectRepeatableFlag } from \"../parse.js\";\n\nexport async function projectUserInviteHandler(\n ctx: CommandContext,\n options: { email: string; name?: string; groupRoles?: GroupRole[] },\n): Promise<Result.Result<CommandOutput | undefined, CommandFailure>> {\n const invited = toResult(\n await ctx.client.POST(\"/projects/{projectName}/users\", {\n params: { path: { projectName: ctx.projectName } },\n body: {\n email: options.email,\n ...(options.name !== undefined ? { name: options.name } : {}),\n ...(options.groupRoles !== undefined\n ? { groupRoles: options.groupRoles }\n : {}),\n },\n }),\n );\n if (Result.isFailure(invited)) return apiErrorFailure(invited.error);\n\n const value = invited.value;\n return Result.succeed({\n json: value,\n text: () =>\n renderDetail([\n [\"Invited\", value.email],\n [\"ID\", value.id],\n [\"Name\", value.name],\n [\"Group roles\", formatGroupRoles(value.groupRoles)],\n ]),\n });\n}\n\nconst inviteArgs = {\n ...contextArgs,\n email: {\n type: \"positional\",\n required: true,\n description: \"Email address to invite\",\n },\n name: {\n type: \"string\",\n description: \"Display name for the invited user\",\n },\n \"group-role\": {\n type: \"string\",\n description: \"RBAC assignment as <group>:<role>; repeatable\",\n },\n} satisfies ArgsDef;\n\nexport default defineCommand({\n meta: {\n name: \"invite\",\n description: \"Invite a user to the project by email\",\n },\n args: inviteArgs,\n run: async ({ args, rawArgs }) => {\n const groupRoles = parseGroupRoles(\n \"group-role\",\n collectRepeatableFlag(rawArgs, \"group-role\"),\n );\n if (Result.isFailure(groupRoles)) return groupRoles;\n\n return runWithContext(args, (ctx) =>\n projectUserInviteHandler(ctx, {\n email: args.email,\n name: typeof args.name === \"string\" ? args.name : undefined,\n groupRoles: groupRoles.value,\n }),\n );\n },\n});\n"],"mappings":";;;;;;;;;AAmBA,eAAsB,yBACpB,KACA,SACmE;CACnE,MAAM,UAAUA,kCACd,MAAM,IAAI,OAAO,KAAK,iCAAiC;EACrD,QAAQ,EAAE,MAAM,EAAE,aAAa,IAAI,YAAY,EAAE;EACjD,MAAM;GACJ,OAAO,QAAQ;GACf,GAAI,QAAQ,SAAS,SAAY,EAAE,MAAM,QAAQ,KAAK,IAAI,CAAC;GAC3D,GAAI,QAAQ,eAAe,SACvB,EAAE,YAAY,QAAQ,WAAW,IACjC,CAAC;EACP;CACF,CAAC,CACH;CACA,IAAIC,uBAAO,UAAU,OAAO,GAAG,OAAOC,yCAAgB,QAAQ,KAAK;CAEnE,MAAM,QAAQ,QAAQ;CACtB,OAAOD,uBAAO,QAAQ;EACpB,MAAM;EACN,YACEE,4BAAa;GACX,CAAC,WAAW,MAAM,KAAK;GACvB,CAAC,MAAM,MAAM,EAAE;GACf,CAAC,QAAQ,MAAM,IAAI;GACnB,CAAC,eAAeC,qCAAiB,MAAM,UAAU,CAAC;EACpD,CAAC;CACL,CAAC;AACH;AAEA,MAAM,aAAa;CACjB,GAAGC;CACH,OAAO;EACL,MAAM;EACN,UAAU;EACV,aAAa;CACf;CACA,MAAM;EACJ,MAAM;EACN,aAAa;CACf;CACA,cAAc;EACZ,MAAM;EACN,aAAa;CACf;AACF;AAEA,qBAAeC,+BAAc;CAC3B,MAAM;EACJ,MAAM;EACN,aAAa;CACf;CACA,MAAM;CACN,KAAK,OAAO,EAAE,MAAM,cAAc;EAChC,MAAM,aAAaC,oCACjB,cACAC,oCAAsB,SAAS,YAAY,CAC7C;EACA,IAAIP,uBAAO,UAAU,UAAU,GAAG,OAAO;EAEzC,OAAOQ,wCAAe,OAAO,QAC3B,yBAAyB,KAAK;GAC5B,OAAO,KAAK;GACZ,MAAM,OAAO,KAAK,SAAS,WAAW,KAAK,OAAO;GAClD,YAAY,WAAW;EACzB,CAAC,CACH;CACF;AACF,CAAC"}
@@ -0,0 +1,17 @@
1
+ import { t as defineCommand } from "./cli/main.mjs";
2
+
3
+ //#region src/cli/commands/key/index.ts
4
+ var key_default = defineCommand({
5
+ meta: {
6
+ name: "key",
7
+ description: "Manage project API keys"
8
+ },
9
+ subCommands: {
10
+ consumer: () => import("./consumer-C4WiGHWG.mjs").then((m) => m.default),
11
+ management: () => import("./management-DDACMgbU.mjs").then((m) => m.default)
12
+ }
13
+ });
14
+
15
+ //#endregion
16
+ export { key_default as default };
17
+ //# sourceMappingURL=key-C71Ffll9.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"key-C71Ffll9.mjs","names":[],"sources":["../src/cli/commands/key/index.ts"],"sourcesContent":["import { defineCommand } from \"../define-command.js\";\n\nexport default defineCommand({\n meta: {\n name: \"key\",\n description: \"Manage project API keys\",\n },\n subCommands: {\n consumer: () => import(\"./consumer/index.js\").then((m) => m.default),\n management: () => import(\"./management/index.js\").then((m) => m.default),\n },\n});\n"],"mappings":";;;AAEA,kBAAe,cAAc;CAC3B,MAAM;EACJ,MAAM;EACN,aAAa;CACf;CACA,aAAa;EACX,gBAAgB,OAAO,0BAAsB,CAAC,MAAM,MAAM,EAAE,OAAO;EACnE,kBAAkB,OAAO,4BAAwB,CAAC,MAAM,MAAM,EAAE,OAAO;CACzE;AACF,CAAC"}
@@ -0,0 +1,17 @@
1
+ const require_cli_main = require('./cli/main.cjs');
2
+
3
+ //#region src/cli/commands/key/index.ts
4
+ var key_default = require_cli_main.defineCommand({
5
+ meta: {
6
+ name: "key",
7
+ description: "Manage project API keys"
8
+ },
9
+ subCommands: {
10
+ consumer: () => Promise.resolve().then(() => require("./consumer-l-8wUK8E.cjs")).then((m) => m.default),
11
+ management: () => Promise.resolve().then(() => require("./management-BGYcZB4c.cjs")).then((m) => m.default)
12
+ }
13
+ });
14
+
15
+ //#endregion
16
+ exports.default = key_default;
17
+ //# sourceMappingURL=key-DQr7qRL2.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"key-DQr7qRL2.cjs","names":["defineCommand"],"sources":["../src/cli/commands/key/index.ts"],"sourcesContent":["import { defineCommand } from \"../define-command.js\";\n\nexport default defineCommand({\n meta: {\n name: \"key\",\n description: \"Manage project API keys\",\n },\n subCommands: {\n consumer: () => import(\"./consumer/index.js\").then((m) => m.default),\n management: () => import(\"./management/index.js\").then((m) => m.default),\n },\n});\n"],"mappings":";;;AAEA,kBAAeA,+BAAc;CAC3B,MAAM;EACJ,MAAM;EACN,aAAa;CACf;CACA,aAAa;EACX,qDAAgB,4BAA8B,MAAM,MAAM,EAAE,OAAO;EACnE,uDAAkB,8BAAgC,MAAM,MAAM,EAAE,OAAO;CACzE;AACF,CAAC"}
@@ -0,0 +1,42 @@
1
+ import { t as defineCommand } from "./cli/main.mjs";
2
+ import { i as globalArgs } from "./shared-CZZimGxc.mjs";
3
+ import { i as runLinkFlow, r as defaultLinkPrompts, t as runWithAuth } from "./run-with-context-CVhmzAFZ.mjs";
4
+ import { Result } from "@praha/byethrow";
5
+
6
+ //#region src/cli/commands/link.ts
7
+ async function linkHandler(ctx, options) {
8
+ const flow = await runLinkFlow(ctx, options);
9
+ if (Result.isFailure(flow)) return flow;
10
+ const value = flow.value;
11
+ if (!value.linked) return Result.succeed({
12
+ json: { linked: false },
13
+ text: () => "Canceled."
14
+ });
15
+ return Result.succeed({
16
+ json: {
17
+ linked: true,
18
+ projectName: value.projectName,
19
+ organizationName: value.organizationName,
20
+ file: value.file
21
+ },
22
+ text: () => [`Linked to project ${value.projectName} (organization ${value.organizationName}).`, value.gitignoreNote].filter((line) => line !== "").join("\n")
23
+ });
24
+ }
25
+ var link_default = defineCommand({
26
+ meta: {
27
+ name: "link",
28
+ description: "Link the current directory to a project (.orizm/project.json)"
29
+ },
30
+ args: { ...globalArgs },
31
+ run: () => {
32
+ if (process.stdin.isTTY !== true) return Promise.resolve(Result.fail({ message: "`orizm link` needs an interactive terminal. Pass --project or set ORIZM_PROJECT instead." }));
33
+ return runWithAuth((ctx) => linkHandler(ctx, {
34
+ cwd: process.cwd(),
35
+ prompts: defaultLinkPrompts()
36
+ }));
37
+ }
38
+ });
39
+
40
+ //#endregion
41
+ export { link_default as default };
42
+ //# sourceMappingURL=link-BluFyxEL.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"link-BluFyxEL.mjs","names":[],"sources":["../src/cli/commands/link.ts"],"sourcesContent":["import { Result } from \"@praha/byethrow\";\nimport {\n defaultLinkPrompts,\n runLinkFlow,\n type LinkPrompts,\n} from \"./link-flow.js\";\nimport { runWithAuth, type AuthContext } from \"./run-with-context.js\";\nimport { globalArgs } from \"./shared.js\";\nimport {\n defineCommand,\n type CommandFailure,\n type CommandOutput,\n} from \"./define-command.js\";\n\nexport async function linkHandler(\n ctx: AuthContext,\n options: { cwd: string; prompts: LinkPrompts },\n): Promise<Result.Result<CommandOutput | undefined, CommandFailure>> {\n const flow = await runLinkFlow(ctx, options);\n if (Result.isFailure(flow)) return flow;\n\n const value = flow.value;\n if (!value.linked) {\n return Result.succeed({ json: { linked: false }, text: () => \"Canceled.\" });\n }\n\n return Result.succeed({\n json: {\n linked: true,\n projectName: value.projectName,\n organizationName: value.organizationName,\n file: value.file,\n },\n text: () =>\n [\n `Linked to project ${value.projectName} (organization ${value.organizationName}).`,\n value.gitignoreNote,\n ]\n .filter((line) => line !== \"\")\n .join(\"\\n\"),\n });\n}\n\nexport default defineCommand({\n meta: {\n name: \"link\",\n description:\n \"Link the current directory to a project (.orizm/project.json)\",\n },\n args: { ...globalArgs },\n run: () => {\n if (process.stdin.isTTY !== true) {\n return Promise.resolve(\n Result.fail({\n message:\n \"`orizm link` needs an interactive terminal. Pass --project or set ORIZM_PROJECT instead.\",\n }),\n );\n }\n\n return runWithAuth((ctx) =>\n linkHandler(ctx, { cwd: process.cwd(), prompts: defaultLinkPrompts() }),\n );\n },\n});\n"],"mappings":";;;;;;AAcA,eAAsB,YACpB,KACA,SACmE;CACnE,MAAM,OAAO,MAAM,YAAY,KAAK,OAAO;CAC3C,IAAI,OAAO,UAAU,IAAI,GAAG,OAAO;CAEnC,MAAM,QAAQ,KAAK;CACnB,IAAI,CAAC,MAAM,QACT,OAAO,OAAO,QAAQ;EAAE,MAAM,EAAE,QAAQ,MAAM;EAAG,YAAY;CAAY,CAAC;CAG5E,OAAO,OAAO,QAAQ;EACpB,MAAM;GACJ,QAAQ;GACR,aAAa,MAAM;GACnB,kBAAkB,MAAM;GACxB,MAAM,MAAM;EACd;EACA,YACE,CACE,qBAAqB,MAAM,YAAY,iBAAiB,MAAM,iBAAiB,KAC/E,MAAM,aACR,CAAC,CACE,QAAQ,SAAS,SAAS,EAAE,CAAC,CAC7B,KAAK,IAAI;CAChB,CAAC;AACH;AAEA,mBAAe,cAAc;CAC3B,MAAM;EACJ,MAAM;EACN,aACE;CACJ;CACA,MAAM,EAAE,GAAG,WAAW;CACtB,WAAW;EACT,IAAI,QAAQ,MAAM,UAAU,MAC1B,OAAO,QAAQ,QACb,OAAO,KAAK,EACV,SACE,2FACJ,CAAC,CACH;EAGF,OAAO,aAAa,QAClB,YAAY,KAAK;GAAE,KAAK,QAAQ,IAAI;GAAG,SAAS,mBAAmB;EAAE,CAAC,CACxE;CACF;AACF,CAAC"}
@@ -0,0 +1,42 @@
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
+ let _praha_byethrow = require("@praha/byethrow");
5
+
6
+ //#region src/cli/commands/link.ts
7
+ async function linkHandler(ctx, options) {
8
+ const flow = await require_run_with_context.runLinkFlow(ctx, options);
9
+ if (_praha_byethrow.Result.isFailure(flow)) return flow;
10
+ const value = flow.value;
11
+ if (!value.linked) return _praha_byethrow.Result.succeed({
12
+ json: { linked: false },
13
+ text: () => "Canceled."
14
+ });
15
+ return _praha_byethrow.Result.succeed({
16
+ json: {
17
+ linked: true,
18
+ projectName: value.projectName,
19
+ organizationName: value.organizationName,
20
+ file: value.file
21
+ },
22
+ text: () => [`Linked to project ${value.projectName} (organization ${value.organizationName}).`, value.gitignoreNote].filter((line) => line !== "").join("\n")
23
+ });
24
+ }
25
+ var link_default = require_cli_main.defineCommand({
26
+ meta: {
27
+ name: "link",
28
+ description: "Link the current directory to a project (.orizm/project.json)"
29
+ },
30
+ args: { ...require_shared.globalArgs },
31
+ run: () => {
32
+ if (process.stdin.isTTY !== true) return Promise.resolve(_praha_byethrow.Result.fail({ message: "`orizm link` needs an interactive terminal. Pass --project or set ORIZM_PROJECT instead." }));
33
+ return require_run_with_context.runWithAuth((ctx) => linkHandler(ctx, {
34
+ cwd: process.cwd(),
35
+ prompts: require_run_with_context.defaultLinkPrompts()
36
+ }));
37
+ }
38
+ });
39
+
40
+ //#endregion
41
+ exports.default = link_default;
42
+ //# sourceMappingURL=link-DYu1Vjlw.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"link-DYu1Vjlw.cjs","names":["runLinkFlow","Result","defineCommand","globalArgs","runWithAuth","defaultLinkPrompts"],"sources":["../src/cli/commands/link.ts"],"sourcesContent":["import { Result } from \"@praha/byethrow\";\nimport {\n defaultLinkPrompts,\n runLinkFlow,\n type LinkPrompts,\n} from \"./link-flow.js\";\nimport { runWithAuth, type AuthContext } from \"./run-with-context.js\";\nimport { globalArgs } from \"./shared.js\";\nimport {\n defineCommand,\n type CommandFailure,\n type CommandOutput,\n} from \"./define-command.js\";\n\nexport async function linkHandler(\n ctx: AuthContext,\n options: { cwd: string; prompts: LinkPrompts },\n): Promise<Result.Result<CommandOutput | undefined, CommandFailure>> {\n const flow = await runLinkFlow(ctx, options);\n if (Result.isFailure(flow)) return flow;\n\n const value = flow.value;\n if (!value.linked) {\n return Result.succeed({ json: { linked: false }, text: () => \"Canceled.\" });\n }\n\n return Result.succeed({\n json: {\n linked: true,\n projectName: value.projectName,\n organizationName: value.organizationName,\n file: value.file,\n },\n text: () =>\n [\n `Linked to project ${value.projectName} (organization ${value.organizationName}).`,\n value.gitignoreNote,\n ]\n .filter((line) => line !== \"\")\n .join(\"\\n\"),\n });\n}\n\nexport default defineCommand({\n meta: {\n name: \"link\",\n description:\n \"Link the current directory to a project (.orizm/project.json)\",\n },\n args: { ...globalArgs },\n run: () => {\n if (process.stdin.isTTY !== true) {\n return Promise.resolve(\n Result.fail({\n message:\n \"`orizm link` needs an interactive terminal. Pass --project or set ORIZM_PROJECT instead.\",\n }),\n );\n }\n\n return runWithAuth((ctx) =>\n linkHandler(ctx, { cwd: process.cwd(), prompts: defaultLinkPrompts() }),\n );\n },\n});\n"],"mappings":";;;;;;AAcA,eAAsB,YACpB,KACA,SACmE;CACnE,MAAM,OAAO,MAAMA,qCAAY,KAAK,OAAO;CAC3C,IAAIC,uBAAO,UAAU,IAAI,GAAG,OAAO;CAEnC,MAAM,QAAQ,KAAK;CACnB,IAAI,CAAC,MAAM,QACT,OAAOA,uBAAO,QAAQ;EAAE,MAAM,EAAE,QAAQ,MAAM;EAAG,YAAY;CAAY,CAAC;CAG5E,OAAOA,uBAAO,QAAQ;EACpB,MAAM;GACJ,QAAQ;GACR,aAAa,MAAM;GACnB,kBAAkB,MAAM;GACxB,MAAM,MAAM;EACd;EACA,YACE,CACE,qBAAqB,MAAM,YAAY,iBAAiB,MAAM,iBAAiB,KAC/E,MAAM,aACR,CAAC,CACE,QAAQ,SAAS,SAAS,EAAE,CAAC,CAC7B,KAAK,IAAI;CAChB,CAAC;AACH;AAEA,mBAAeC,+BAAc;CAC3B,MAAM;EACJ,MAAM;EACN,aACE;CACJ;CACA,MAAM,EAAE,GAAGC,0BAAW;CACtB,WAAW;EACT,IAAI,QAAQ,MAAM,UAAU,MAC1B,OAAO,QAAQ,QACbF,uBAAO,KAAK,EACV,SACE,2FACJ,CAAC,CACH;EAGF,OAAOG,sCAAa,QAClB,YAAY,KAAK;GAAE,KAAK,QAAQ,IAAI;GAAG,SAASC,4CAAmB;EAAE,CAAC,CACxE;CACF;AACF,CAAC"}
@@ -0,0 +1,48 @@
1
+ import { r as getOutputState, t as defineCommand } from "./cli/main.mjs";
2
+ import { r as contextArgs } from "./shared-CZZimGxc.mjs";
3
+ import { a as apiErrorFailure, n as runWithContext, u as toResult } from "./run-with-context-CVhmzAFZ.mjs";
4
+ import { t as renderTable } from "./table-MHEfbnWO.mjs";
5
+ import { r as showKeyArg, t as maskConsumerKey } from "./mask-B1qD73jb.mjs";
6
+ import { Result } from "@praha/byethrow";
7
+
8
+ //#region src/cli/commands/key/consumer/list.ts
9
+ async function keyConsumerListHandler(ctx, options) {
10
+ const keys = toResult(await ctx.client.GET("/projects/{projectName}/consumer-keys", { params: { path: { projectName: ctx.projectName } } }));
11
+ if (Result.isFailure(keys)) return apiErrorFailure(keys.error);
12
+ const value = keys.value.map((item) => options.showKey ? item : {
13
+ ...item,
14
+ key: maskConsumerKey(item.key)
15
+ });
16
+ return Result.succeed({
17
+ json: value,
18
+ text: () => renderTable([
19
+ "ID",
20
+ "KEY",
21
+ "DESCRIPTION",
22
+ "CAN READ DRAFTS",
23
+ "CREATED AT"
24
+ ], value.map((item) => ({ cells: [
25
+ String(item.id),
26
+ item.key,
27
+ item.description,
28
+ String(item.canReadDrafts),
29
+ item.createdAt
30
+ ] })), getOutputState().color)
31
+ });
32
+ }
33
+ const listArgs = {
34
+ ...contextArgs,
35
+ ...showKeyArg
36
+ };
37
+ var list_default = defineCommand({
38
+ meta: {
39
+ name: "list",
40
+ description: "List consumer keys"
41
+ },
42
+ args: listArgs,
43
+ run: ({ args }) => runWithContext(args, (ctx) => keyConsumerListHandler(ctx, { showKey: args["show-key"] === true }))
44
+ });
45
+
46
+ //#endregion
47
+ export { list_default as default };
48
+ //# sourceMappingURL=list-57TUfNFd.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list-57TUfNFd.mjs","names":[],"sources":["../src/cli/commands/key/consumer/list.ts"],"sourcesContent":["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 } from \"../../shared.js\";\nimport { runWithContext, type CommandContext } from \"../../run-with-context.js\";\nimport { apiErrorFailure } from \"../../api-errors.js\";\nimport { toResult } from \"../../../api/errors.js\";\nimport { getOutputState } from \"../../../ui/output.js\";\nimport { renderTable } from \"../../../ui/table.js\";\nimport { maskConsumerKey, showKeyArg } from \"../mask.js\";\n\nexport async function keyConsumerListHandler(\n ctx: CommandContext,\n options: { showKey: boolean },\n): Promise<Result.Result<CommandOutput | undefined, CommandFailure>> {\n const keys = toResult(\n await ctx.client.GET(\"/projects/{projectName}/consumer-keys\", {\n params: { path: { projectName: ctx.projectName } },\n }),\n );\n if (Result.isFailure(keys)) return apiErrorFailure(keys.error);\n\n // --json でもマスクを効かせるため、表示用データ自体を書き換える\n const value = keys.value.map((item) =>\n options.showKey ? item : { ...item, key: maskConsumerKey(item.key) },\n );\n return Result.succeed({\n json: value,\n text: () =>\n renderTable(\n [\"ID\", \"KEY\", \"DESCRIPTION\", \"CAN READ DRAFTS\", \"CREATED AT\"],\n value.map((item) => ({\n cells: [\n String(item.id),\n item.key,\n item.description,\n String(item.canReadDrafts),\n item.createdAt,\n ],\n })),\n getOutputState().color,\n ),\n });\n}\n\nconst listArgs = {\n ...contextArgs,\n ...showKeyArg,\n} satisfies ArgsDef;\n\nexport default defineCommand({\n meta: {\n name: \"list\",\n description: \"List consumer keys\",\n },\n args: listArgs,\n run: ({ args }) =>\n runWithContext(args, (ctx) =>\n keyConsumerListHandler(ctx, { showKey: args[\"show-key\"] === true }),\n ),\n});\n"],"mappings":";;;;;;;;AAeA,eAAsB,uBACpB,KACA,SACmE;CACnE,MAAM,OAAO,SACX,MAAM,IAAI,OAAO,IAAI,yCAAyC,EAC5D,QAAQ,EAAE,MAAM,EAAE,aAAa,IAAI,YAAY,EAAE,EACnD,CAAC,CACH;CACA,IAAI,OAAO,UAAU,IAAI,GAAG,OAAO,gBAAgB,KAAK,KAAK;CAG7D,MAAM,QAAQ,KAAK,MAAM,KAAK,SAC5B,QAAQ,UAAU,OAAO;EAAE,GAAG;EAAM,KAAK,gBAAgB,KAAK,GAAG;CAAE,CACrE;CACA,OAAO,OAAO,QAAQ;EACpB,MAAM;EACN,YACE,YACE;GAAC;GAAM;GAAO;GAAe;GAAmB;EAAY,GAC5D,MAAM,KAAK,UAAU,EACnB,OAAO;GACL,OAAO,KAAK,EAAE;GACd,KAAK;GACL,KAAK;GACL,OAAO,KAAK,aAAa;GACzB,KAAK;EACP,EACF,EAAE,GACF,eAAe,CAAC,CAAC,KACnB;CACJ,CAAC;AACH;AAEA,MAAM,WAAW;CACf,GAAG;CACH,GAAG;AACL;AAEA,mBAAe,cAAc;CAC3B,MAAM;EACJ,MAAM;EACN,aAAa;CACf;CACA,MAAM;CACN,MAAM,EAAE,WACN,eAAe,OAAO,QACpB,uBAAuB,KAAK,EAAE,SAAS,KAAK,gBAAgB,KAAK,CAAC,CACpE;AACJ,CAAC"}