@orizm/cli 2.2.7 → 3.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (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-6d3VNt1D.mjs +17 -0
  11. package/dist/bucket-6d3VNt1D.mjs.map +1 -0
  12. package/dist/bucket-DjbHz9_A.cjs +17 -0
  13. package/dist/bucket-DjbHz9_A.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 -27
  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-BBsH8b1j.cjs +18 -0
  44. package/dist/consumer-BBsH8b1j.cjs.map +1 -0
  45. package/dist/consumer-DqyRfpsl.mjs +18 -0
  46. package/dist/consumer-DqyRfpsl.mjs.map +1 -0
  47. package/dist/consumer-OF6Z_eTP.cjs +95 -0
  48. package/dist/consumer-OF6Z_eTP.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-BsoRmjis.mjs +20 -0
  52. package/dist/content-BsoRmjis.mjs.map +1 -0
  53. package/dist/content-Y-2Y0cyn.cjs +20 -0
  54. package/dist/content-Y-2Y0cyn.cjs.map +1 -0
  55. package/dist/create--1NYduI_.cjs +58 -0
  56. package/dist/create--1NYduI_.cjs.map +1 -0
  57. package/dist/create-B-PAOor6.mjs +66 -0
  58. package/dist/create-B-PAOor6.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-B_gsZCL-.cjs +54 -0
  62. package/dist/create-B_gsZCL-.cjs.map +1 -0
  63. package/dist/create-BqlxdhcR.mjs +81 -0
  64. package/dist/create-BqlxdhcR.mjs.map +1 -0
  65. package/dist/create-CC814ixh.mjs +66 -0
  66. package/dist/create-CC814ixh.mjs.map +1 -0
  67. package/dist/create-CkFBiEDH.mjs +58 -0
  68. package/dist/create-CkFBiEDH.mjs.map +1 -0
  69. package/dist/create-CykRHseR.cjs +81 -0
  70. package/dist/create-CykRHseR.cjs.map +1 -0
  71. package/dist/create-RLyp_dl6.mjs +54 -0
  72. package/dist/create-RLyp_dl6.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-BenBNL2p.mjs +56 -0
  82. package/dist/delete-BenBNL2p.mjs.map +1 -0
  83. package/dist/delete-Bx2oNROv.cjs +56 -0
  84. package/dist/delete-Bx2oNROv.cjs.map +1 -0
  85. package/dist/delete-CCTiCYIL.cjs +51 -0
  86. package/dist/delete-CCTiCYIL.cjs.map +1 -0
  87. package/dist/delete-CGW0VMK6.cjs +56 -0
  88. package/dist/delete-CGW0VMK6.cjs.map +1 -0
  89. package/dist/delete-CIYY59v_.cjs +48 -0
  90. package/dist/delete-CIYY59v_.cjs.map +1 -0
  91. package/dist/delete-CSSd0gmt.mjs +56 -0
  92. package/dist/delete-CSSd0gmt.mjs.map +1 -0
  93. package/dist/delete-CSs5Czlo.mjs +59 -0
  94. package/dist/delete-CSs5Czlo.mjs.map +1 -0
  95. package/dist/delete-CrOVRvMo.cjs +56 -0
  96. package/dist/delete-CrOVRvMo.cjs.map +1 -0
  97. package/dist/delete-DehKYCXh.mjs +56 -0
  98. package/dist/delete-DehKYCXh.mjs.map +1 -0
  99. package/dist/delete-DhSU-Lx2.mjs +51 -0
  100. package/dist/delete-DhSU-Lx2.mjs.map +1 -0
  101. package/dist/delete-DozSxZQ7.cjs +59 -0
  102. package/dist/delete-DozSxZQ7.cjs.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-BHniACk5.cjs +57 -0
  118. package/dist/get-BHniACk5.cjs.map +1 -0
  119. package/dist/get-BtmzDaVn.mjs +47 -0
  120. package/dist/get-BtmzDaVn.mjs.map +1 -0
  121. package/dist/get-CVV3h6HR.cjs +47 -0
  122. package/dist/get-CVV3h6HR.cjs.map +1 -0
  123. package/dist/get-CgEgETQa.mjs +52 -0
  124. package/dist/get-CgEgETQa.mjs.map +1 -0
  125. package/dist/get-DB80UNSR.mjs +47 -0
  126. package/dist/get-DB80UNSR.mjs.map +1 -0
  127. package/dist/get-DBxhbN1G.mjs +57 -0
  128. package/dist/get-DBxhbN1G.mjs.map +1 -0
  129. package/dist/get-DDB89cOs.mjs +48 -0
  130. package/dist/get-DDB89cOs.mjs.map +1 -0
  131. package/dist/get-DPGx1zU4.mjs +56 -0
  132. package/dist/get-DPGx1zU4.mjs.map +1 -0
  133. package/dist/get-IOU__2RP.cjs +52 -0
  134. package/dist/get-IOU__2RP.cjs.map +1 -0
  135. package/dist/get-KdWfYINc.cjs +47 -0
  136. package/dist/get-KdWfYINc.cjs.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-BEEzLxPX.mjs +36 -0
  140. package/dist/group-roles-BEEzLxPX.mjs.map +1 -0
  141. package/dist/group-roles-Bl_mEodO.cjs +59 -0
  142. package/dist/group-roles-Bl_mEodO.cjs.map +1 -0
  143. package/dist/invite-DsOCKGTJ.mjs +66 -0
  144. package/dist/invite-DsOCKGTJ.mjs.map +1 -0
  145. package/dist/invite-Dts9uNQL.cjs +66 -0
  146. package/dist/invite-Dts9uNQL.cjs.map +1 -0
  147. package/dist/key-BogfSiz_.mjs +17 -0
  148. package/dist/key-BogfSiz_.mjs.map +1 -0
  149. package/dist/key-Czwiu2pW.cjs +17 -0
  150. package/dist/key-Czwiu2pW.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-2BpPj4Z0.cjs +40 -0
  156. package/dist/list-2BpPj4Z0.cjs.map +1 -0
  157. package/dist/list-57TUfNFd.mjs +48 -0
  158. package/dist/list-57TUfNFd.mjs.map +1 -0
  159. package/dist/list-60NcDr0q.cjs +81 -0
  160. package/dist/list-60NcDr0q.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-BwfpuhmJ.cjs +37 -0
  164. package/dist/list-BwfpuhmJ.cjs.map +1 -0
  165. package/dist/list-CJuefq_I.cjs +82 -0
  166. package/dist/list-CJuefq_I.cjs.map +1 -0
  167. package/dist/list-CYE9Exi3.cjs +72 -0
  168. package/dist/list-CYE9Exi3.cjs.map +1 -0
  169. package/dist/list-CbvEh7eA.mjs +35 -0
  170. package/dist/list-CbvEh7eA.mjs.map +1 -0
  171. package/dist/list-CfIeReBx.mjs +82 -0
  172. package/dist/list-CfIeReBx.mjs.map +1 -0
  173. package/dist/list-CxHDoXjv.mjs +81 -0
  174. package/dist/list-CxHDoXjv.mjs.map +1 -0
  175. package/dist/list-D0-QrWmn.cjs +51 -0
  176. package/dist/list-D0-QrWmn.cjs.map +1 -0
  177. package/dist/list-D24J_Qbm.mjs +49 -0
  178. package/dist/list-D24J_Qbm.mjs.map +1 -0
  179. package/dist/list-D5PSDMWw.mjs +51 -0
  180. package/dist/list-D5PSDMWw.mjs.map +1 -0
  181. package/dist/list-DRKF2uKW.cjs +95 -0
  182. package/dist/list-DRKF2uKW.cjs.map +1 -0
  183. package/dist/list-DdJ05juK.mjs +72 -0
  184. package/dist/list-DdJ05juK.mjs.map +1 -0
  185. package/dist/list-DlJssPwy.cjs +48 -0
  186. package/dist/list-DlJssPwy.cjs.map +1 -0
  187. package/dist/list-V3W6hvOa.cjs +49 -0
  188. package/dist/list-V3W6hvOa.cjs.map +1 -0
  189. package/dist/list-rAn3uOA7.mjs +37 -0
  190. package/dist/list-rAn3uOA7.mjs.map +1 -0
  191. package/dist/list-syVDGkVR.mjs +40 -0
  192. package/dist/list-syVDGkVR.mjs.map +1 -0
  193. package/dist/list-yQZLzkC7.mjs +95 -0
  194. package/dist/list-yQZLzkC7.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-BaN1Nynl.mjs +19 -0
  204. package/dist/management-BaN1Nynl.mjs.map +1 -0
  205. package/dist/management-DHXxdCra.cjs +19 -0
  206. package/dist/management-DHXxdCra.cjs.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-BfUf8Y6w.mjs +20 -0
  216. package/dist/object-BfUf8Y6w.mjs.map +1 -0
  217. package/dist/object-DT7UEW9G.cjs +20 -0
  218. package/dist/object-DT7UEW9G.cjs.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-BeO2IwfI.cjs +229 -0
  228. package/dist/parse-BeO2IwfI.cjs.map +1 -0
  229. package/dist/parse-CA5fBB3x.mjs +150 -0
  230. package/dist/parse-CA5fBB3x.mjs.map +1 -0
  231. package/dist/project-CNr9xMny.cjs +20 -0
  232. package/dist/project-CNr9xMny.cjs.map +1 -0
  233. package/dist/project-DFoHcXi5.mjs +20 -0
  234. package/dist/project-DFoHcXi5.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-9D7Ey_Fu.mjs +20 -0
  240. package/dist/project-user-9D7Ey_Fu.mjs.map +1 -0
  241. package/dist/project-user-DTPFjyfZ.cjs +20 -0
  242. package/dist/project-user-DTPFjyfZ.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-DDzrgjkT.mjs +20 -0
  256. package/dist/schema-DDzrgjkT.mjs.map +1 -0
  257. package/dist/schema-DdhyEh81.cjs +20 -0
  258. package/dist/schema-DdhyEh81.cjs.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-C16cp9nq.mjs +72 -0
  272. package/dist/table-event-C16cp9nq.mjs.map +1 -0
  273. package/dist/table-event-D7PPuS7E.cjs +101 -0
  274. package/dist/table-event-D7PPuS7E.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-8e3u4jKa.mjs +109 -0
  280. package/dist/update-8e3u4jKa.mjs.map +1 -0
  281. package/dist/update-CDLviRuu.cjs +73 -0
  282. package/dist/update-CDLviRuu.cjs.map +1 -0
  283. package/dist/update-CSiOfiPL.mjs +117 -0
  284. package/dist/update-CSiOfiPL.mjs.map +1 -0
  285. package/dist/update-CjbcI8Qc.mjs +61 -0
  286. package/dist/update-CjbcI8Qc.mjs.map +1 -0
  287. package/dist/update-Cktd0zXA.cjs +109 -0
  288. package/dist/update-Cktd0zXA.cjs.map +1 -0
  289. package/dist/update-D-X32BVW.cjs +117 -0
  290. package/dist/update-D-X32BVW.cjs.map +1 -0
  291. package/dist/update-DfYV_TQb.mjs +171 -0
  292. package/dist/update-DfYV_TQb.mjs.map +1 -0
  293. package/dist/update-OWC5K8Ne.cjs +61 -0
  294. package/dist/update-OWC5K8Ne.cjs.map +1 -0
  295. package/dist/update-ap5Qv1Yl.cjs +171 -0
  296. package/dist/update-ap5Qv1Yl.cjs.map +1 -0
  297. package/dist/update-yscrx6WQ.mjs +73 -0
  298. package/dist/update-yscrx6WQ.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-3zs6Ulxd.mjs +20 -0
  308. package/dist/webhook-3zs6Ulxd.mjs.map +1 -0
  309. package/dist/webhook-BsygMMf-.cjs +20 -0
  310. package/dist/webhook-BsygMMf-.cjs.map +1 -0
  311. package/package.json +27 -16
  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 @@
1
+ {"version":3,"file":"mask-B1qD73jb.mjs","names":[],"sources":["../src/cli/commands/key/mask.ts"],"sourcesContent":["import type { ArgsDef } from \"citty\";\n\n// Orizm の key は発行後も API から常に平文で返る仕様だが、画面共有やログ転記での\n// 露出事故を防ぐため、--show-key が明示されない限りマスクして表示する。\n// 見せ方は apps/console の SecretTokenView (revealedPrefix + 残りを * 置換) に揃える。\nconst CONSUMER_KEY_PREFIX = \"x_consumer_\";\nconst MANAGEMENT_KEY_PREFIX = \"x_management_\";\n\nexport function maskConsumerKey(key: string): string {\n return maskWithPrefix(key, CONSUMER_KEY_PREFIX);\n}\n\nexport function maskManagementKey(key: string): string {\n return maskWithPrefix(key, MANAGEMENT_KEY_PREFIX);\n}\n\nfunction maskWithPrefix(key: string, prefix: string): string {\n // 想定外の形式の key で prefix.length 分を素通しすると本物の秘密文字が露出するため全マスク。\n if (!key.startsWith(prefix)) return key.replace(/./g, \"*\");\n return prefix + key.slice(prefix.length).replace(/./g, \"*\");\n}\n\nexport const showKeyArg = {\n \"show-key\": {\n type: \"boolean\",\n description: \"Show key values in plaintext instead of masking them\",\n default: false,\n },\n} satisfies ArgsDef;\n"],"mappings":";AAKA,MAAM,sBAAsB;AAC5B,MAAM,wBAAwB;AAE9B,SAAgB,gBAAgB,KAAqB;CACnD,OAAO,eAAe,KAAK,mBAAmB;AAChD;AAEA,SAAgB,kBAAkB,KAAqB;CACrD,OAAO,eAAe,KAAK,qBAAqB;AAClD;AAEA,SAAS,eAAe,KAAa,QAAwB;CAE3D,IAAI,CAAC,IAAI,WAAW,MAAM,GAAG,OAAO,IAAI,QAAQ,MAAM,GAAG;CACzD,OAAO,SAAS,IAAI,MAAM,OAAO,MAAM,CAAC,CAAC,QAAQ,MAAM,GAAG;AAC5D;AAEA,MAAa,aAAa,EACxB,YAAY;CACV,MAAM;CACN,aAAa;CACb,SAAS;AACX,EACF"}
@@ -0,0 +1,40 @@
1
+
2
+ //#region src/cli/commands/key/mask.ts
3
+ const CONSUMER_KEY_PREFIX = "x_consumer_";
4
+ const MANAGEMENT_KEY_PREFIX = "x_management_";
5
+ function maskConsumerKey(key) {
6
+ return maskWithPrefix(key, CONSUMER_KEY_PREFIX);
7
+ }
8
+ function maskManagementKey(key) {
9
+ return maskWithPrefix(key, MANAGEMENT_KEY_PREFIX);
10
+ }
11
+ function maskWithPrefix(key, prefix) {
12
+ if (!key.startsWith(prefix)) return key.replace(/./g, "*");
13
+ return prefix + key.slice(prefix.length).replace(/./g, "*");
14
+ }
15
+ const showKeyArg = { "show-key": {
16
+ type: "boolean",
17
+ description: "Show key values in plaintext instead of masking them",
18
+ default: false
19
+ } };
20
+
21
+ //#endregion
22
+ Object.defineProperty(exports, 'maskConsumerKey', {
23
+ enumerable: true,
24
+ get: function () {
25
+ return maskConsumerKey;
26
+ }
27
+ });
28
+ Object.defineProperty(exports, 'maskManagementKey', {
29
+ enumerable: true,
30
+ get: function () {
31
+ return maskManagementKey;
32
+ }
33
+ });
34
+ Object.defineProperty(exports, 'showKeyArg', {
35
+ enumerable: true,
36
+ get: function () {
37
+ return showKeyArg;
38
+ }
39
+ });
40
+ //# sourceMappingURL=mask-CqYLib9p.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mask-CqYLib9p.cjs","names":[],"sources":["../src/cli/commands/key/mask.ts"],"sourcesContent":["import type { ArgsDef } from \"citty\";\n\n// Orizm の key は発行後も API から常に平文で返る仕様だが、画面共有やログ転記での\n// 露出事故を防ぐため、--show-key が明示されない限りマスクして表示する。\n// 見せ方は apps/console の SecretTokenView (revealedPrefix + 残りを * 置換) に揃える。\nconst CONSUMER_KEY_PREFIX = \"x_consumer_\";\nconst MANAGEMENT_KEY_PREFIX = \"x_management_\";\n\nexport function maskConsumerKey(key: string): string {\n return maskWithPrefix(key, CONSUMER_KEY_PREFIX);\n}\n\nexport function maskManagementKey(key: string): string {\n return maskWithPrefix(key, MANAGEMENT_KEY_PREFIX);\n}\n\nfunction maskWithPrefix(key: string, prefix: string): string {\n // 想定外の形式の key で prefix.length 分を素通しすると本物の秘密文字が露出するため全マスク。\n if (!key.startsWith(prefix)) return key.replace(/./g, \"*\");\n return prefix + key.slice(prefix.length).replace(/./g, \"*\");\n}\n\nexport const showKeyArg = {\n \"show-key\": {\n type: \"boolean\",\n description: \"Show key values in plaintext instead of masking them\",\n default: false,\n },\n} satisfies ArgsDef;\n"],"mappings":";;AAKA,MAAM,sBAAsB;AAC5B,MAAM,wBAAwB;AAE9B,SAAgB,gBAAgB,KAAqB;CACnD,OAAO,eAAe,KAAK,mBAAmB;AAChD;AAEA,SAAgB,kBAAkB,KAAqB;CACrD,OAAO,eAAe,KAAK,qBAAqB;AAClD;AAEA,SAAS,eAAe,KAAa,QAAwB;CAE3D,IAAI,CAAC,IAAI,WAAW,MAAM,GAAG,OAAO,IAAI,QAAQ,MAAM,GAAG;CACzD,OAAO,SAAS,IAAI,MAAM,OAAO,MAAM,CAAC,CAAC,QAAQ,MAAM,GAAG;AAC5D;AAEA,MAAa,aAAa,EACxB,YAAY;CACV,MAAM;CACN,aAAa;CACb,SAAS;AACX,EACF"}
@@ -0,0 +1,170 @@
1
+ const require_cli_main = require('./cli/main.cjs');
2
+ let _praha_byethrow = require("@praha/byethrow");
3
+ let valibot = require("valibot");
4
+ valibot = require_cli_main.__toESM(valibot, 1);
5
+ let jose = require("jose");
6
+
7
+ //#region src/cli/auth/oauth-client.ts
8
+ const CLIENT_ID = "orizm-cli";
9
+ const SCOPES = [
10
+ "openid",
11
+ "offline_access",
12
+ "profile",
13
+ "email",
14
+ "content:read",
15
+ "content:write",
16
+ "schema:read",
17
+ "schema:write",
18
+ "project:read",
19
+ "project:write",
20
+ "project-users:read",
21
+ "project-users:write",
22
+ "api-keys:read",
23
+ "api-keys:write",
24
+ "organization:read",
25
+ "organization:write",
26
+ "profile:write",
27
+ "invitation:read",
28
+ "invitation:write"
29
+ ];
30
+ function authorizationEndpoint(issuerUrl) {
31
+ return `${issuerUrl}/oauth2/auth`;
32
+ }
33
+ function tokenEndpoint(issuerUrl) {
34
+ return `${issuerUrl}/oauth2/token`;
35
+ }
36
+ function revocationEndpoint(issuerUrl) {
37
+ return `${issuerUrl}/oauth2/revoke`;
38
+ }
39
+ function jwksUri(issuerUrl) {
40
+ return `${issuerUrl}/.well-known/jwks.json`;
41
+ }
42
+ function buildAuthorizationUrl(params) {
43
+ const url = new URL(authorizationEndpoint(params.issuerUrl));
44
+ url.searchParams.set("response_type", "code");
45
+ url.searchParams.set("client_id", CLIENT_ID);
46
+ url.searchParams.set("redirect_uri", params.redirectUri);
47
+ url.searchParams.set("scope", SCOPES.join(" "));
48
+ url.searchParams.set("state", params.state);
49
+ url.searchParams.set("code_challenge", params.codeChallenge);
50
+ url.searchParams.set("code_challenge_method", params.codeChallengeMethod);
51
+ return url.toString();
52
+ }
53
+ const TokenResponseSchema = valibot.pipe(valibot.object({
54
+ access_token: valibot.string(),
55
+ refresh_token: valibot.string(),
56
+ id_token: valibot.string(),
57
+ expires_in: valibot.number(),
58
+ scope: valibot.string()
59
+ }), valibot.transform((raw) => ({
60
+ accessToken: raw.access_token,
61
+ refreshToken: raw.refresh_token,
62
+ idToken: raw.id_token,
63
+ scope: raw.scope,
64
+ expiresAt: new Date(Date.now() + raw.expires_in * 1e3).toISOString()
65
+ })));
66
+ const OAuthErrorSchema = valibot.object({
67
+ error: valibot.optional(valibot.string()),
68
+ error_description: valibot.optional(valibot.string())
69
+ });
70
+ async function postToken(issuerUrl, body) {
71
+ const response = await fetch(tokenEndpoint(issuerUrl), {
72
+ method: "POST",
73
+ headers: { "content-type": "application/x-www-form-urlencoded" },
74
+ body
75
+ });
76
+ if (response.status >= 500) throw new Error(`Token endpoint returned ${response.status}`);
77
+ const json = await response.json().catch(() => void 0);
78
+ if (!response.ok) {
79
+ const reason = extractOAuthError(json) ?? `HTTP ${response.status}`;
80
+ return _praha_byethrow.Result.fail({
81
+ type: "token_exchange_failed",
82
+ reason
83
+ });
84
+ }
85
+ const parsed = valibot.safeParse(TokenResponseSchema, json);
86
+ if (!parsed.success) return _praha_byethrow.Result.fail({
87
+ type: "token_exchange_failed",
88
+ reason: "Token endpoint returned an unexpected payload"
89
+ });
90
+ return _praha_byethrow.Result.succeed(parsed.output);
91
+ }
92
+ function exchangeCode(params) {
93
+ const body = new URLSearchParams({
94
+ grant_type: "authorization_code",
95
+ code: params.code,
96
+ redirect_uri: params.redirectUri,
97
+ client_id: CLIENT_ID,
98
+ code_verifier: params.codeVerifier
99
+ });
100
+ return postToken(params.issuerUrl, body);
101
+ }
102
+ function refreshTokens(params) {
103
+ const body = new URLSearchParams({
104
+ grant_type: "refresh_token",
105
+ refresh_token: params.refreshToken,
106
+ client_id: CLIENT_ID
107
+ });
108
+ return postToken(params.issuerUrl, body);
109
+ }
110
+ async function verifyIdToken(issuerUrl, idToken) {
111
+ const { payload } = await (0, jose.jwtVerify)(idToken, (0, jose.createRemoteJWKSet)(new URL(jwksUri(issuerUrl))), {
112
+ issuer: issuerUrl,
113
+ audience: CLIENT_ID
114
+ });
115
+ return {
116
+ subject: payload.sub ?? "",
117
+ name: typeof payload.name === "string" ? payload.name : void 0,
118
+ email: typeof payload.email === "string" ? payload.email : void 0
119
+ };
120
+ }
121
+ async function revokeToken(issuerUrl, refreshToken) {
122
+ await fetch(revocationEndpoint(issuerUrl), {
123
+ method: "POST",
124
+ headers: { "content-type": "application/x-www-form-urlencoded" },
125
+ body: new URLSearchParams({
126
+ token: refreshToken,
127
+ client_id: CLIENT_ID
128
+ })
129
+ });
130
+ }
131
+ function extractOAuthError(value) {
132
+ const parsed = valibot.safeParse(OAuthErrorSchema, value);
133
+ if (!parsed.success) return void 0;
134
+ const { error, error_description } = parsed.output;
135
+ if (error == null && error_description == null) return void 0;
136
+ return [error, error_description].filter((part) => part != null).join(": ");
137
+ }
138
+
139
+ //#endregion
140
+ Object.defineProperty(exports, 'buildAuthorizationUrl', {
141
+ enumerable: true,
142
+ get: function () {
143
+ return buildAuthorizationUrl;
144
+ }
145
+ });
146
+ Object.defineProperty(exports, 'exchangeCode', {
147
+ enumerable: true,
148
+ get: function () {
149
+ return exchangeCode;
150
+ }
151
+ });
152
+ Object.defineProperty(exports, 'refreshTokens', {
153
+ enumerable: true,
154
+ get: function () {
155
+ return refreshTokens;
156
+ }
157
+ });
158
+ Object.defineProperty(exports, 'revokeToken', {
159
+ enumerable: true,
160
+ get: function () {
161
+ return revokeToken;
162
+ }
163
+ });
164
+ Object.defineProperty(exports, 'verifyIdToken', {
165
+ enumerable: true,
166
+ get: function () {
167
+ return verifyIdToken;
168
+ }
169
+ });
170
+ //# sourceMappingURL=oauth-client-CdD0evAV.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"oauth-client-CdD0evAV.cjs","names":["v","Result"],"sources":["../src/cli/auth/oauth-client.ts"],"sourcesContent":["import { createRemoteJWKSet, jwtVerify } from \"jose\";\nimport { Result } from \"@praha/byethrow\";\nimport * as v from \"valibot\";\n\nexport const CLIENT_ID = \"orizm-cli\";\n\n// orizm-cli client にサーバー側で登録されたスコープの複製。サーバーの登録内容と\n// 完全に一致している必要があり、ずれると認可リクエストが拒否されるので両方を揃えて変更する。\nexport const SCOPES = [\n \"openid\",\n \"offline_access\",\n \"profile\",\n \"email\",\n \"content:read\",\n \"content:write\",\n \"schema:read\",\n \"schema:write\",\n \"project:read\",\n \"project:write\",\n \"project-users:read\",\n \"project-users:write\",\n \"api-keys:read\",\n \"api-keys:write\",\n \"organization:read\",\n \"organization:write\",\n \"profile:write\",\n \"invitation:read\",\n \"invitation:write\",\n] as const;\n\nexport type IdTokenClaims = {\n subject: string;\n name?: string;\n email?: string;\n};\n\nexport type TokenSet = {\n accessToken: string;\n refreshToken: string;\n idToken: string;\n scope: string;\n expiresAt: string;\n};\n\nexport type TokenExchangeError = {\n type: \"token_exchange_failed\";\n reason: string;\n};\n\nfunction authorizationEndpoint(issuerUrl: string): string {\n return `${issuerUrl}/oauth2/auth`;\n}\n\nfunction tokenEndpoint(issuerUrl: string): string {\n return `${issuerUrl}/oauth2/token`;\n}\n\nfunction revocationEndpoint(issuerUrl: string): string {\n return `${issuerUrl}/oauth2/revoke`;\n}\n\nfunction jwksUri(issuerUrl: string): string {\n return `${issuerUrl}/.well-known/jwks.json`;\n}\n\nexport function buildAuthorizationUrl(params: {\n issuerUrl: string;\n redirectUri: string;\n codeChallenge: string;\n codeChallengeMethod: string;\n state: string;\n}): string {\n const url = new URL(authorizationEndpoint(params.issuerUrl));\n url.searchParams.set(\"response_type\", \"code\");\n url.searchParams.set(\"client_id\", CLIENT_ID);\n url.searchParams.set(\"redirect_uri\", params.redirectUri);\n url.searchParams.set(\"scope\", SCOPES.join(\" \"));\n url.searchParams.set(\"state\", params.state);\n url.searchParams.set(\"code_challenge\", params.codeChallenge);\n url.searchParams.set(\"code_challenge_method\", params.codeChallengeMethod);\n return url.toString();\n}\n\nconst TokenResponseSchema = v.pipe(\n v.object({\n access_token: v.string(),\n refresh_token: v.string(),\n id_token: v.string(),\n expires_in: v.number(),\n scope: v.string(),\n }),\n v.transform(\n (raw): TokenSet => ({\n accessToken: raw.access_token,\n refreshToken: raw.refresh_token,\n idToken: raw.id_token,\n scope: raw.scope,\n expiresAt: new Date(Date.now() + raw.expires_in * 1000).toISOString(),\n }),\n ),\n);\n\nconst OAuthErrorSchema = v.object({\n error: v.optional(v.string()),\n error_description: v.optional(v.string()),\n});\n\n// 4xx は呼び出し側が分岐で扱える予測可能エラーなので Result.fail、\n// 回復しようのない 5xx / network は throw して上位の共通ハンドラに任せる。\nasync function postToken(\n issuerUrl: string,\n body: URLSearchParams,\n): Promise<Result.Result<TokenSet, TokenExchangeError>> {\n const response = await fetch(tokenEndpoint(issuerUrl), {\n method: \"POST\",\n headers: { \"content-type\": \"application/x-www-form-urlencoded\" },\n body,\n });\n\n if (response.status >= 500) {\n throw new Error(`Token endpoint returned ${response.status}`);\n }\n\n const json: unknown = await response.json().catch(() => undefined);\n\n if (!response.ok) {\n const reason = extractOAuthError(json) ?? `HTTP ${response.status}`;\n return Result.fail({ type: \"token_exchange_failed\", reason });\n }\n\n const parsed = v.safeParse(TokenResponseSchema, json);\n if (!parsed.success) {\n return Result.fail({\n type: \"token_exchange_failed\",\n reason: \"Token endpoint returned an unexpected payload\",\n });\n }\n\n return Result.succeed(parsed.output);\n}\n\nexport function exchangeCode(params: {\n issuerUrl: string;\n code: string;\n redirectUri: string;\n codeVerifier: string;\n}): Promise<Result.Result<TokenSet, TokenExchangeError>> {\n const body = new URLSearchParams({\n grant_type: \"authorization_code\",\n code: params.code,\n redirect_uri: params.redirectUri,\n client_id: CLIENT_ID,\n code_verifier: params.codeVerifier,\n });\n return postToken(params.issuerUrl, body);\n}\n\nexport function refreshTokens(params: {\n issuerUrl: string;\n refreshToken: string;\n}): Promise<Result.Result<TokenSet, TokenExchangeError>> {\n const body = new URLSearchParams({\n grant_type: \"refresh_token\",\n refresh_token: params.refreshToken,\n client_id: CLIENT_ID,\n });\n return postToken(params.issuerUrl, body);\n}\n\nexport async function verifyIdToken(\n issuerUrl: string,\n idToken: string,\n): Promise<IdTokenClaims> {\n const jwks = createRemoteJWKSet(new URL(jwksUri(issuerUrl)));\n const { payload } = await jwtVerify(idToken, jwks, {\n issuer: issuerUrl,\n audience: CLIENT_ID,\n });\n return {\n subject: payload.sub ?? \"\",\n name: typeof payload.name === \"string\" ? payload.name : undefined,\n email: typeof payload.email === \"string\" ? payload.email : undefined,\n };\n}\n\n// refresh_token を Hydra 側でも無効化する。失敗してもログアウト自体は成立させる(best-effort)。\nexport async function revokeToken(\n issuerUrl: string,\n refreshToken: string,\n): Promise<void> {\n await fetch(revocationEndpoint(issuerUrl), {\n method: \"POST\",\n headers: { \"content-type\": \"application/x-www-form-urlencoded\" },\n body: new URLSearchParams({ token: refreshToken, client_id: CLIENT_ID }),\n });\n}\n\nfunction extractOAuthError(value: unknown): string | undefined {\n const parsed = v.safeParse(OAuthErrorSchema, value);\n if (!parsed.success) return undefined;\n const { error, error_description } = parsed.output;\n if (error == null && error_description == null) return undefined;\n return [error, error_description].filter((part) => part != null).join(\": \");\n}\n"],"mappings":"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"}
@@ -0,0 +1,139 @@
1
+ import { Result } from "@praha/byethrow";
2
+ import * as v from "valibot";
3
+ import { createRemoteJWKSet, jwtVerify } from "jose";
4
+
5
+ //#region src/cli/auth/oauth-client.ts
6
+ const CLIENT_ID = "orizm-cli";
7
+ const SCOPES = [
8
+ "openid",
9
+ "offline_access",
10
+ "profile",
11
+ "email",
12
+ "content:read",
13
+ "content:write",
14
+ "schema:read",
15
+ "schema:write",
16
+ "project:read",
17
+ "project:write",
18
+ "project-users:read",
19
+ "project-users:write",
20
+ "api-keys:read",
21
+ "api-keys:write",
22
+ "organization:read",
23
+ "organization:write",
24
+ "profile:write",
25
+ "invitation:read",
26
+ "invitation:write"
27
+ ];
28
+ function authorizationEndpoint(issuerUrl) {
29
+ return `${issuerUrl}/oauth2/auth`;
30
+ }
31
+ function tokenEndpoint(issuerUrl) {
32
+ return `${issuerUrl}/oauth2/token`;
33
+ }
34
+ function revocationEndpoint(issuerUrl) {
35
+ return `${issuerUrl}/oauth2/revoke`;
36
+ }
37
+ function jwksUri(issuerUrl) {
38
+ return `${issuerUrl}/.well-known/jwks.json`;
39
+ }
40
+ function buildAuthorizationUrl(params) {
41
+ const url = new URL(authorizationEndpoint(params.issuerUrl));
42
+ url.searchParams.set("response_type", "code");
43
+ url.searchParams.set("client_id", CLIENT_ID);
44
+ url.searchParams.set("redirect_uri", params.redirectUri);
45
+ url.searchParams.set("scope", SCOPES.join(" "));
46
+ url.searchParams.set("state", params.state);
47
+ url.searchParams.set("code_challenge", params.codeChallenge);
48
+ url.searchParams.set("code_challenge_method", params.codeChallengeMethod);
49
+ return url.toString();
50
+ }
51
+ const TokenResponseSchema = v.pipe(v.object({
52
+ access_token: v.string(),
53
+ refresh_token: v.string(),
54
+ id_token: v.string(),
55
+ expires_in: v.number(),
56
+ scope: v.string()
57
+ }), v.transform((raw) => ({
58
+ accessToken: raw.access_token,
59
+ refreshToken: raw.refresh_token,
60
+ idToken: raw.id_token,
61
+ scope: raw.scope,
62
+ expiresAt: new Date(Date.now() + raw.expires_in * 1e3).toISOString()
63
+ })));
64
+ const OAuthErrorSchema = v.object({
65
+ error: v.optional(v.string()),
66
+ error_description: v.optional(v.string())
67
+ });
68
+ async function postToken(issuerUrl, body) {
69
+ const response = await fetch(tokenEndpoint(issuerUrl), {
70
+ method: "POST",
71
+ headers: { "content-type": "application/x-www-form-urlencoded" },
72
+ body
73
+ });
74
+ if (response.status >= 500) throw new Error(`Token endpoint returned ${response.status}`);
75
+ const json = await response.json().catch(() => void 0);
76
+ if (!response.ok) {
77
+ const reason = extractOAuthError(json) ?? `HTTP ${response.status}`;
78
+ return Result.fail({
79
+ type: "token_exchange_failed",
80
+ reason
81
+ });
82
+ }
83
+ const parsed = v.safeParse(TokenResponseSchema, json);
84
+ if (!parsed.success) return Result.fail({
85
+ type: "token_exchange_failed",
86
+ reason: "Token endpoint returned an unexpected payload"
87
+ });
88
+ return Result.succeed(parsed.output);
89
+ }
90
+ function exchangeCode(params) {
91
+ const body = new URLSearchParams({
92
+ grant_type: "authorization_code",
93
+ code: params.code,
94
+ redirect_uri: params.redirectUri,
95
+ client_id: CLIENT_ID,
96
+ code_verifier: params.codeVerifier
97
+ });
98
+ return postToken(params.issuerUrl, body);
99
+ }
100
+ function refreshTokens(params) {
101
+ const body = new URLSearchParams({
102
+ grant_type: "refresh_token",
103
+ refresh_token: params.refreshToken,
104
+ client_id: CLIENT_ID
105
+ });
106
+ return postToken(params.issuerUrl, body);
107
+ }
108
+ async function verifyIdToken(issuerUrl, idToken) {
109
+ const { payload } = await jwtVerify(idToken, createRemoteJWKSet(new URL(jwksUri(issuerUrl))), {
110
+ issuer: issuerUrl,
111
+ audience: CLIENT_ID
112
+ });
113
+ return {
114
+ subject: payload.sub ?? "",
115
+ name: typeof payload.name === "string" ? payload.name : void 0,
116
+ email: typeof payload.email === "string" ? payload.email : void 0
117
+ };
118
+ }
119
+ async function revokeToken(issuerUrl, refreshToken) {
120
+ await fetch(revocationEndpoint(issuerUrl), {
121
+ method: "POST",
122
+ headers: { "content-type": "application/x-www-form-urlencoded" },
123
+ body: new URLSearchParams({
124
+ token: refreshToken,
125
+ client_id: CLIENT_ID
126
+ })
127
+ });
128
+ }
129
+ function extractOAuthError(value) {
130
+ const parsed = v.safeParse(OAuthErrorSchema, value);
131
+ if (!parsed.success) return void 0;
132
+ const { error, error_description } = parsed.output;
133
+ if (error == null && error_description == null) return void 0;
134
+ return [error, error_description].filter((part) => part != null).join(": ");
135
+ }
136
+
137
+ //#endregion
138
+ export { verifyIdToken as a, revokeToken as i, exchangeCode as n, refreshTokens as r, buildAuthorizationUrl as t };
139
+ //# sourceMappingURL=oauth-client-QHuDa4fW.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"oauth-client-QHuDa4fW.mjs","names":[],"sources":["../src/cli/auth/oauth-client.ts"],"sourcesContent":["import { createRemoteJWKSet, jwtVerify } from \"jose\";\nimport { Result } from \"@praha/byethrow\";\nimport * as v from \"valibot\";\n\nexport const CLIENT_ID = \"orizm-cli\";\n\n// orizm-cli client にサーバー側で登録されたスコープの複製。サーバーの登録内容と\n// 完全に一致している必要があり、ずれると認可リクエストが拒否されるので両方を揃えて変更する。\nexport const SCOPES = [\n \"openid\",\n \"offline_access\",\n \"profile\",\n \"email\",\n \"content:read\",\n \"content:write\",\n \"schema:read\",\n \"schema:write\",\n \"project:read\",\n \"project:write\",\n \"project-users:read\",\n \"project-users:write\",\n \"api-keys:read\",\n \"api-keys:write\",\n \"organization:read\",\n \"organization:write\",\n \"profile:write\",\n \"invitation:read\",\n \"invitation:write\",\n] as const;\n\nexport type IdTokenClaims = {\n subject: string;\n name?: string;\n email?: string;\n};\n\nexport type TokenSet = {\n accessToken: string;\n refreshToken: string;\n idToken: string;\n scope: string;\n expiresAt: string;\n};\n\nexport type TokenExchangeError = {\n type: \"token_exchange_failed\";\n reason: string;\n};\n\nfunction authorizationEndpoint(issuerUrl: string): string {\n return `${issuerUrl}/oauth2/auth`;\n}\n\nfunction tokenEndpoint(issuerUrl: string): string {\n return `${issuerUrl}/oauth2/token`;\n}\n\nfunction revocationEndpoint(issuerUrl: string): string {\n return `${issuerUrl}/oauth2/revoke`;\n}\n\nfunction jwksUri(issuerUrl: string): string {\n return `${issuerUrl}/.well-known/jwks.json`;\n}\n\nexport function buildAuthorizationUrl(params: {\n issuerUrl: string;\n redirectUri: string;\n codeChallenge: string;\n codeChallengeMethod: string;\n state: string;\n}): string {\n const url = new URL(authorizationEndpoint(params.issuerUrl));\n url.searchParams.set(\"response_type\", \"code\");\n url.searchParams.set(\"client_id\", CLIENT_ID);\n url.searchParams.set(\"redirect_uri\", params.redirectUri);\n url.searchParams.set(\"scope\", SCOPES.join(\" \"));\n url.searchParams.set(\"state\", params.state);\n url.searchParams.set(\"code_challenge\", params.codeChallenge);\n url.searchParams.set(\"code_challenge_method\", params.codeChallengeMethod);\n return url.toString();\n}\n\nconst TokenResponseSchema = v.pipe(\n v.object({\n access_token: v.string(),\n refresh_token: v.string(),\n id_token: v.string(),\n expires_in: v.number(),\n scope: v.string(),\n }),\n v.transform(\n (raw): TokenSet => ({\n accessToken: raw.access_token,\n refreshToken: raw.refresh_token,\n idToken: raw.id_token,\n scope: raw.scope,\n expiresAt: new Date(Date.now() + raw.expires_in * 1000).toISOString(),\n }),\n ),\n);\n\nconst OAuthErrorSchema = v.object({\n error: v.optional(v.string()),\n error_description: v.optional(v.string()),\n});\n\n// 4xx は呼び出し側が分岐で扱える予測可能エラーなので Result.fail、\n// 回復しようのない 5xx / network は throw して上位の共通ハンドラに任せる。\nasync function postToken(\n issuerUrl: string,\n body: URLSearchParams,\n): Promise<Result.Result<TokenSet, TokenExchangeError>> {\n const response = await fetch(tokenEndpoint(issuerUrl), {\n method: \"POST\",\n headers: { \"content-type\": \"application/x-www-form-urlencoded\" },\n body,\n });\n\n if (response.status >= 500) {\n throw new Error(`Token endpoint returned ${response.status}`);\n }\n\n const json: unknown = await response.json().catch(() => undefined);\n\n if (!response.ok) {\n const reason = extractOAuthError(json) ?? `HTTP ${response.status}`;\n return Result.fail({ type: \"token_exchange_failed\", reason });\n }\n\n const parsed = v.safeParse(TokenResponseSchema, json);\n if (!parsed.success) {\n return Result.fail({\n type: \"token_exchange_failed\",\n reason: \"Token endpoint returned an unexpected payload\",\n });\n }\n\n return Result.succeed(parsed.output);\n}\n\nexport function exchangeCode(params: {\n issuerUrl: string;\n code: string;\n redirectUri: string;\n codeVerifier: string;\n}): Promise<Result.Result<TokenSet, TokenExchangeError>> {\n const body = new URLSearchParams({\n grant_type: \"authorization_code\",\n code: params.code,\n redirect_uri: params.redirectUri,\n client_id: CLIENT_ID,\n code_verifier: params.codeVerifier,\n });\n return postToken(params.issuerUrl, body);\n}\n\nexport function refreshTokens(params: {\n issuerUrl: string;\n refreshToken: string;\n}): Promise<Result.Result<TokenSet, TokenExchangeError>> {\n const body = new URLSearchParams({\n grant_type: \"refresh_token\",\n refresh_token: params.refreshToken,\n client_id: CLIENT_ID,\n });\n return postToken(params.issuerUrl, body);\n}\n\nexport async function verifyIdToken(\n issuerUrl: string,\n idToken: string,\n): Promise<IdTokenClaims> {\n const jwks = createRemoteJWKSet(new URL(jwksUri(issuerUrl)));\n const { payload } = await jwtVerify(idToken, jwks, {\n issuer: issuerUrl,\n audience: CLIENT_ID,\n });\n return {\n subject: payload.sub ?? \"\",\n name: typeof payload.name === \"string\" ? payload.name : undefined,\n email: typeof payload.email === \"string\" ? payload.email : undefined,\n };\n}\n\n// refresh_token を Hydra 側でも無効化する。失敗してもログアウト自体は成立させる(best-effort)。\nexport async function revokeToken(\n issuerUrl: string,\n refreshToken: string,\n): Promise<void> {\n await fetch(revocationEndpoint(issuerUrl), {\n method: \"POST\",\n headers: { \"content-type\": \"application/x-www-form-urlencoded\" },\n body: new URLSearchParams({ token: refreshToken, client_id: CLIENT_ID }),\n });\n}\n\nfunction extractOAuthError(value: unknown): string | undefined {\n const parsed = v.safeParse(OAuthErrorSchema, value);\n if (!parsed.success) return undefined;\n const { error, error_description } = parsed.output;\n if (error == null && error_description == null) return undefined;\n return [error, error_description].filter((part) => part != null).join(\": \");\n}\n"],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ import { t as defineCommand } from "./cli/main.mjs";
2
+
3
+ //#region src/cli/commands/bucket/object/index.ts
4
+ var object_default = defineCommand({
5
+ meta: {
6
+ name: "object",
7
+ description: "Manage objects in a bucket"
8
+ },
9
+ subCommands: {
10
+ list: () => import("./list-CfIeReBx.mjs").then((m) => m.default),
11
+ get: () => import("./get-DBxhbN1G.mjs").then((m) => m.default),
12
+ upload: () => import("./upload-DGgJ1TQk.mjs").then((m) => m.default),
13
+ download: () => import("./download-oFGzg30E.mjs").then((m) => m.default),
14
+ delete: () => import("./delete-BSLIXrAh.mjs").then((m) => m.default)
15
+ }
16
+ });
17
+
18
+ //#endregion
19
+ export { object_default as default };
20
+ //# sourceMappingURL=object-BfUf8Y6w.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"object-BfUf8Y6w.mjs","names":[],"sources":["../src/cli/commands/bucket/object/index.ts"],"sourcesContent":["import { defineCommand } from \"../../define-command.js\";\n\nexport default defineCommand({\n meta: {\n name: \"object\",\n description: \"Manage objects in a bucket\",\n },\n subCommands: {\n list: () => import(\"./list.js\").then((m) => m.default),\n get: () => import(\"./get.js\").then((m) => m.default),\n upload: () => import(\"./upload.js\").then((m) => m.default),\n download: () => import(\"./download.js\").then((m) => m.default),\n delete: () => import(\"./delete.js\").then((m) => m.default),\n },\n});\n"],"mappings":";;;AAEA,qBAAe,cAAc;CAC3B,MAAM;EACJ,MAAM;EACN,aAAa;CACf;CACA,aAAa;EACX,YAAY,OAAO,sBAAY,CAAC,MAAM,MAAM,EAAE,OAAO;EACrD,WAAW,OAAO,qBAAW,CAAC,MAAM,MAAM,EAAE,OAAO;EACnD,cAAc,OAAO,wBAAc,CAAC,MAAM,MAAM,EAAE,OAAO;EACzD,gBAAgB,OAAO,0BAAgB,CAAC,MAAM,MAAM,EAAE,OAAO;EAC7D,cAAc,OAAO,wBAAc,CAAC,MAAM,MAAM,EAAE,OAAO;CAC3D;AACF,CAAC"}
@@ -0,0 +1,20 @@
1
+ const require_cli_main = require('./cli/main.cjs');
2
+
3
+ //#region src/cli/commands/bucket/object/index.ts
4
+ var object_default = require_cli_main.defineCommand({
5
+ meta: {
6
+ name: "object",
7
+ description: "Manage objects in a bucket"
8
+ },
9
+ subCommands: {
10
+ list: () => Promise.resolve().then(() => require("./list-CJuefq_I.cjs")).then((m) => m.default),
11
+ get: () => Promise.resolve().then(() => require("./get-jwXRlIBJ.cjs")).then((m) => m.default),
12
+ upload: () => Promise.resolve().then(() => require("./upload-C43ZXxyb.cjs")).then((m) => m.default),
13
+ download: () => Promise.resolve().then(() => require("./download-ogGbb3FU.cjs")).then((m) => m.default),
14
+ delete: () => Promise.resolve().then(() => require("./delete-DozSxZQ7.cjs")).then((m) => m.default)
15
+ }
16
+ });
17
+
18
+ //#endregion
19
+ exports.default = object_default;
20
+ //# sourceMappingURL=object-DT7UEW9G.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"object-DT7UEW9G.cjs","names":["defineCommand"],"sources":["../src/cli/commands/bucket/object/index.ts"],"sourcesContent":["import { defineCommand } from \"../../define-command.js\";\n\nexport default defineCommand({\n meta: {\n name: \"object\",\n description: \"Manage objects in a bucket\",\n },\n subCommands: {\n list: () => import(\"./list.js\").then((m) => m.default),\n get: () => import(\"./get.js\").then((m) => m.default),\n upload: () => import(\"./upload.js\").then((m) => m.default),\n download: () => import(\"./download.js\").then((m) => m.default),\n delete: () => import(\"./delete.js\").then((m) => m.default),\n },\n});\n"],"mappings":";;;AAEA,qBAAeA,+BAAc;CAC3B,MAAM;EACJ,MAAM;EACN,aAAa;CACf;CACA,aAAa;EACX,iDAAY,wBAAoB,MAAM,MAAM,EAAE,OAAO;EACrD,gDAAW,uBAAmB,MAAM,MAAM,EAAE,OAAO;EACnD,mDAAc,0BAAsB,MAAM,MAAM,EAAE,OAAO;EACzD,qDAAgB,4BAAwB,MAAM,MAAM,EAAE,OAAO;EAC7D,mDAAc,0BAAsB,MAAM,MAAM,EAAE,OAAO;CAC3D;AACF,CAAC"}
@@ -0,0 +1,14 @@
1
+ const require_cli_main = require('./cli/main.cjs');
2
+
3
+ //#region src/cli/commands/org/index.ts
4
+ var org_default = require_cli_main.defineCommand({
5
+ meta: {
6
+ name: "org",
7
+ description: "Work with organizations"
8
+ },
9
+ subCommands: { list: () => Promise.resolve().then(() => require("./list-BRh59EqI.cjs")).then((m) => m.default) }
10
+ });
11
+
12
+ //#endregion
13
+ exports.default = org_default;
14
+ //# sourceMappingURL=org-C4cVovOM.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"org-C4cVovOM.cjs","names":["defineCommand"],"sources":["../src/cli/commands/org/index.ts"],"sourcesContent":["import { defineCommand } from \"../define-command.js\";\n\nexport default defineCommand({\n meta: {\n name: \"org\",\n description: \"Work with organizations\",\n },\n subCommands: {\n list: () => import(\"./list.js\").then((m) => m.default),\n },\n});\n"],"mappings":";;;AAEA,kBAAeA,+BAAc;CAC3B,MAAM;EACJ,MAAM;EACN,aAAa;CACf;CACA,aAAa,EACX,iDAAY,wBAAoB,MAAM,MAAM,EAAE,OAAO,EACvD;AACF,CAAC"}
@@ -0,0 +1,14 @@
1
+ import { t as defineCommand } from "./cli/main.mjs";
2
+
3
+ //#region src/cli/commands/org/index.ts
4
+ var org_default = defineCommand({
5
+ meta: {
6
+ name: "org",
7
+ description: "Work with organizations"
8
+ },
9
+ subCommands: { list: () => import("./list-CbvEh7eA.mjs").then((m) => m.default) }
10
+ });
11
+
12
+ //#endregion
13
+ export { org_default as default };
14
+ //# sourceMappingURL=org-CPhTRTks.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"org-CPhTRTks.mjs","names":[],"sources":["../src/cli/commands/org/index.ts"],"sourcesContent":["import { defineCommand } from \"../define-command.js\";\n\nexport default defineCommand({\n meta: {\n name: \"org\",\n description: \"Work with organizations\",\n },\n subCommands: {\n list: () => import(\"./list.js\").then((m) => m.default),\n },\n});\n"],"mappings":";;;AAEA,kBAAe,cAAc;CAC3B,MAAM;EACJ,MAAM;EACN,aAAa;CACf;CACA,aAAa,EACX,YAAY,OAAO,sBAAY,CAAC,MAAM,MAAM,EAAE,OAAO,EACvD;AACF,CAAC"}
@@ -0,0 +1,30 @@
1
+ const require_run_with_context = require('./run-with-context-DJNnEigg.cjs');
2
+ let _praha_byethrow = require("@praha/byethrow");
3
+
4
+ //#region src/cli/commands/org-context.ts
5
+ async function resolveOrganizationIdFromArgs(params) {
6
+ const name = await require_run_with_context.resolveOrganizationName({
7
+ flag: params.flag,
8
+ cwd: params.cwd
9
+ });
10
+ if (_praha_byethrow.Result.isFailure(name)) switch (name.error.type) {
11
+ case "project_json_invalid": return _praha_byethrow.Result.fail({ message: `Invalid project file: ${name.error.path}` });
12
+ case "no_project_context":
13
+ case "no_organization_context": return _praha_byethrow.Result.fail({ message: "No organization selected. Run `orizm link` or pass --organization <name>." });
14
+ }
15
+ const id = await require_run_with_context.resolveOrganizationId(params.client, name.value);
16
+ if (_praha_byethrow.Result.isFailure(id)) {
17
+ if (id.error.type === "organization_not_found") return _praha_byethrow.Result.fail({ message: `Organization not found: ${id.error.name}` });
18
+ return require_run_with_context.apiErrorFailure(id.error);
19
+ }
20
+ return _praha_byethrow.Result.succeed(id.value);
21
+ }
22
+
23
+ //#endregion
24
+ Object.defineProperty(exports, 'resolveOrganizationIdFromArgs', {
25
+ enumerable: true,
26
+ get: function () {
27
+ return resolveOrganizationIdFromArgs;
28
+ }
29
+ });
30
+ //# sourceMappingURL=org-context-Bewx2NEW.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"org-context-Bewx2NEW.cjs","names":["resolveOrganizationName","Result","resolveOrganizationId","apiErrorFailure"],"sources":["../src/cli/commands/org-context.ts"],"sourcesContent":["import { Result } from \"@praha/byethrow\";\nimport type { DeveloperApiClient } from \"../api/client.js\";\nimport {\n resolveOrganizationId,\n type OrganizationId,\n} from \"../api/organizations.js\";\nimport { resolveOrganizationName } from \"../context/project.js\";\nimport { apiErrorFailure } from \"./api-errors.js\";\nimport type { CommandFailure } from \"./define-command.js\";\n\n// project list / create が --organization or .orizm/project.json から org id を解決する共通経路。\n// 解決失敗を user-facing メッセージへ畳む。\nexport async function resolveOrganizationIdFromArgs(params: {\n client: DeveloperApiClient;\n flag?: string;\n cwd?: string;\n}): Promise<Result.Result<OrganizationId, CommandFailure>> {\n const name = await resolveOrganizationName({\n flag: params.flag,\n cwd: params.cwd,\n });\n if (Result.isFailure(name)) {\n switch (name.error.type) {\n case \"project_json_invalid\":\n return Result.fail({\n message: `Invalid project file: ${name.error.path}`,\n });\n case \"no_project_context\":\n case \"no_organization_context\":\n return Result.fail({\n message:\n \"No organization selected. Run `orizm link` or pass --organization <name>.\",\n });\n }\n }\n\n const id = await resolveOrganizationId(params.client, name.value);\n if (Result.isFailure(id)) {\n if (id.error.type === \"organization_not_found\") {\n return Result.fail({\n message: `Organization not found: ${id.error.name}`,\n });\n }\n return apiErrorFailure(id.error);\n }\n return Result.succeed(id.value);\n}\n"],"mappings":";;;;AAYA,eAAsB,8BAA8B,QAIO;CACzD,MAAM,OAAO,MAAMA,iDAAwB;EACzC,MAAM,OAAO;EACb,KAAK,OAAO;CACd,CAAC;CACD,IAAIC,uBAAO,UAAU,IAAI,GACvB,QAAQ,KAAK,MAAM,MAAnB;EACE,KAAK,wBACH,OAAOA,uBAAO,KAAK,EACjB,SAAS,yBAAyB,KAAK,MAAM,OAC/C,CAAC;EACH,KAAK;EACL,KAAK,2BACH,OAAOA,uBAAO,KAAK,EACjB,SACE,4EACJ,CAAC;CACL;CAGF,MAAM,KAAK,MAAMC,+CAAsB,OAAO,QAAQ,KAAK,KAAK;CAChE,IAAID,uBAAO,UAAU,EAAE,GAAG;EACxB,IAAI,GAAG,MAAM,SAAS,0BACpB,OAAOA,uBAAO,KAAK,EACjB,SAAS,2BAA2B,GAAG,MAAM,OAC/C,CAAC;EAEH,OAAOE,yCAAgB,GAAG,KAAK;CACjC;CACA,OAAOF,uBAAO,QAAQ,GAAG,KAAK;AAChC"}
@@ -0,0 +1,25 @@
1
+ import { a as apiErrorFailure, d as resolveOrganizationName, l as resolveOrganizationId } from "./run-with-context-CVhmzAFZ.mjs";
2
+ import { Result } from "@praha/byethrow";
3
+
4
+ //#region src/cli/commands/org-context.ts
5
+ async function resolveOrganizationIdFromArgs(params) {
6
+ const name = await resolveOrganizationName({
7
+ flag: params.flag,
8
+ cwd: params.cwd
9
+ });
10
+ if (Result.isFailure(name)) switch (name.error.type) {
11
+ case "project_json_invalid": return Result.fail({ message: `Invalid project file: ${name.error.path}` });
12
+ case "no_project_context":
13
+ case "no_organization_context": return Result.fail({ message: "No organization selected. Run `orizm link` or pass --organization <name>." });
14
+ }
15
+ const id = await resolveOrganizationId(params.client, name.value);
16
+ if (Result.isFailure(id)) {
17
+ if (id.error.type === "organization_not_found") return Result.fail({ message: `Organization not found: ${id.error.name}` });
18
+ return apiErrorFailure(id.error);
19
+ }
20
+ return Result.succeed(id.value);
21
+ }
22
+
23
+ //#endregion
24
+ export { resolveOrganizationIdFromArgs as t };
25
+ //# sourceMappingURL=org-context-D0dwWC2M.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"org-context-D0dwWC2M.mjs","names":[],"sources":["../src/cli/commands/org-context.ts"],"sourcesContent":["import { Result } from \"@praha/byethrow\";\nimport type { DeveloperApiClient } from \"../api/client.js\";\nimport {\n resolveOrganizationId,\n type OrganizationId,\n} from \"../api/organizations.js\";\nimport { resolveOrganizationName } from \"../context/project.js\";\nimport { apiErrorFailure } from \"./api-errors.js\";\nimport type { CommandFailure } from \"./define-command.js\";\n\n// project list / create が --organization or .orizm/project.json から org id を解決する共通経路。\n// 解決失敗を user-facing メッセージへ畳む。\nexport async function resolveOrganizationIdFromArgs(params: {\n client: DeveloperApiClient;\n flag?: string;\n cwd?: string;\n}): Promise<Result.Result<OrganizationId, CommandFailure>> {\n const name = await resolveOrganizationName({\n flag: params.flag,\n cwd: params.cwd,\n });\n if (Result.isFailure(name)) {\n switch (name.error.type) {\n case \"project_json_invalid\":\n return Result.fail({\n message: `Invalid project file: ${name.error.path}`,\n });\n case \"no_project_context\":\n case \"no_organization_context\":\n return Result.fail({\n message:\n \"No organization selected. Run `orizm link` or pass --organization <name>.\",\n });\n }\n }\n\n const id = await resolveOrganizationId(params.client, name.value);\n if (Result.isFailure(id)) {\n if (id.error.type === \"organization_not_found\") {\n return Result.fail({\n message: `Organization not found: ${id.error.name}`,\n });\n }\n return apiErrorFailure(id.error);\n }\n return Result.succeed(id.value);\n}\n"],"mappings":";;;;AAYA,eAAsB,8BAA8B,QAIO;CACzD,MAAM,OAAO,MAAM,wBAAwB;EACzC,MAAM,OAAO;EACb,KAAK,OAAO;CACd,CAAC;CACD,IAAI,OAAO,UAAU,IAAI,GACvB,QAAQ,KAAK,MAAM,MAAnB;EACE,KAAK,wBACH,OAAO,OAAO,KAAK,EACjB,SAAS,yBAAyB,KAAK,MAAM,OAC/C,CAAC;EACH,KAAK;EACL,KAAK,2BACH,OAAO,OAAO,KAAK,EACjB,SACE,4EACJ,CAAC;CACL;CAGF,MAAM,KAAK,MAAM,sBAAsB,OAAO,QAAQ,KAAK,KAAK;CAChE,IAAI,OAAO,UAAU,EAAE,GAAG;EACxB,IAAI,GAAG,MAAM,SAAS,0BACpB,OAAO,OAAO,KAAK,EACjB,SAAS,2BAA2B,GAAG,MAAM,OAC/C,CAAC;EAEH,OAAO,gBAAgB,GAAG,KAAK;CACjC;CACA,OAAO,OAAO,QAAQ,GAAG,KAAK;AAChC"}