@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.
- package/README.md +111 -4
- package/dist/array-update-CMFUoQEe.mjs +41 -0
- package/dist/array-update-CMFUoQEe.mjs.map +1 -0
- package/dist/array-update-Dch4e9tI.cjs +58 -0
- package/dist/array-update-Dch4e9tI.cjs.map +1 -0
- package/dist/auth-BGW072BP.mjs +18 -0
- package/dist/auth-BGW072BP.mjs.map +1 -0
- package/dist/auth-CNbONZuf.cjs +18 -0
- package/dist/auth-CNbONZuf.cjs.map +1 -0
- package/dist/bucket-6d3VNt1D.mjs +17 -0
- package/dist/bucket-6d3VNt1D.mjs.map +1 -0
- package/dist/bucket-DjbHz9_A.cjs +17 -0
- package/dist/bucket-DjbHz9_A.cjs.map +1 -0
- package/dist/cli/main.cjs +231 -0
- package/dist/cli/main.cjs.map +1 -0
- package/dist/cli/main.d.cts +1 -0
- package/dist/cli/main.d.mts +1 -0
- package/dist/cli/main.mjs +196 -0
- package/dist/cli/main.mjs.map +1 -0
- package/dist/cms-BJnovGYT.mjs +172 -0
- package/dist/cms-BJnovGYT.mjs.map +1 -0
- package/dist/cms-Cnx-lDGu.cjs +172 -0
- package/dist/cms-Cnx-lDGu.cjs.map +1 -0
- package/dist/codegen-BF5b-u46.cjs +17 -0
- package/dist/codegen-BF5b-u46.cjs.map +1 -0
- package/dist/codegen-DZOB4ttR.mjs +17 -0
- package/dist/codegen-DZOB4ttR.mjs.map +1 -0
- package/dist/config/index.cjs +49 -96
- package/dist/config/index.cjs.map +1 -1
- package/dist/config/index.d.cts +1 -53
- package/dist/config/{index.d.ts → index.d.mts} +29 -27
- package/dist/config/index.d.mts.map +1 -0
- package/dist/config/index.mjs +59 -0
- package/dist/config/index.mjs.map +1 -0
- package/dist/config-loader-BEgS869e.mjs +65 -0
- package/dist/config-loader-BEgS869e.mjs.map +1 -0
- package/dist/config-loader-D8x32gEU.cjs +78 -0
- package/dist/config-loader-D8x32gEU.cjs.map +1 -0
- package/dist/confirm-delete-B9o73U7B.cjs +19 -0
- package/dist/confirm-delete-B9o73U7B.cjs.map +1 -0
- package/dist/confirm-delete-CsWkW69-.mjs +14 -0
- package/dist/confirm-delete-CsWkW69-.mjs.map +1 -0
- package/dist/consumer-BBsH8b1j.cjs +18 -0
- package/dist/consumer-BBsH8b1j.cjs.map +1 -0
- package/dist/consumer-DqyRfpsl.mjs +18 -0
- package/dist/consumer-DqyRfpsl.mjs.map +1 -0
- package/dist/consumer-OF6Z_eTP.cjs +95 -0
- package/dist/consumer-OF6Z_eTP.cjs.map +1 -0
- package/dist/consumer-pU2HyiyA.mjs +95 -0
- package/dist/consumer-pU2HyiyA.mjs.map +1 -0
- package/dist/content-BsoRmjis.mjs +20 -0
- package/dist/content-BsoRmjis.mjs.map +1 -0
- package/dist/content-Y-2Y0cyn.cjs +20 -0
- package/dist/content-Y-2Y0cyn.cjs.map +1 -0
- package/dist/create--1NYduI_.cjs +58 -0
- package/dist/create--1NYduI_.cjs.map +1 -0
- package/dist/create-B-PAOor6.mjs +66 -0
- package/dist/create-B-PAOor6.mjs.map +1 -0
- package/dist/create-BNYWcyuQ.cjs +66 -0
- package/dist/create-BNYWcyuQ.cjs.map +1 -0
- package/dist/create-B_gsZCL-.cjs +54 -0
- package/dist/create-B_gsZCL-.cjs.map +1 -0
- package/dist/create-BqlxdhcR.mjs +81 -0
- package/dist/create-BqlxdhcR.mjs.map +1 -0
- package/dist/create-CC814ixh.mjs +66 -0
- package/dist/create-CC814ixh.mjs.map +1 -0
- package/dist/create-CkFBiEDH.mjs +58 -0
- package/dist/create-CkFBiEDH.mjs.map +1 -0
- package/dist/create-CykRHseR.cjs +81 -0
- package/dist/create-CykRHseR.cjs.map +1 -0
- package/dist/create-RLyp_dl6.mjs +54 -0
- package/dist/create-RLyp_dl6.mjs.map +1 -0
- package/dist/create-Z-z3LXNW.cjs +66 -0
- package/dist/create-Z-z3LXNW.cjs.map +1 -0
- package/dist/delete-8yZ3j0vX.cjs +59 -0
- package/dist/delete-8yZ3j0vX.cjs.map +1 -0
- package/dist/delete-BOUObrDw.mjs +48 -0
- package/dist/delete-BOUObrDw.mjs.map +1 -0
- package/dist/delete-BSLIXrAh.mjs +59 -0
- package/dist/delete-BSLIXrAh.mjs.map +1 -0
- package/dist/delete-BenBNL2p.mjs +56 -0
- package/dist/delete-BenBNL2p.mjs.map +1 -0
- package/dist/delete-Bx2oNROv.cjs +56 -0
- package/dist/delete-Bx2oNROv.cjs.map +1 -0
- package/dist/delete-CCTiCYIL.cjs +51 -0
- package/dist/delete-CCTiCYIL.cjs.map +1 -0
- package/dist/delete-CGW0VMK6.cjs +56 -0
- package/dist/delete-CGW0VMK6.cjs.map +1 -0
- package/dist/delete-CIYY59v_.cjs +48 -0
- package/dist/delete-CIYY59v_.cjs.map +1 -0
- package/dist/delete-CSSd0gmt.mjs +56 -0
- package/dist/delete-CSSd0gmt.mjs.map +1 -0
- package/dist/delete-CSs5Czlo.mjs +59 -0
- package/dist/delete-CSs5Czlo.mjs.map +1 -0
- package/dist/delete-CrOVRvMo.cjs +56 -0
- package/dist/delete-CrOVRvMo.cjs.map +1 -0
- package/dist/delete-DehKYCXh.mjs +56 -0
- package/dist/delete-DehKYCXh.mjs.map +1 -0
- package/dist/delete-DhSU-Lx2.mjs +51 -0
- package/dist/delete-DhSU-Lx2.mjs.map +1 -0
- package/dist/delete-DozSxZQ7.cjs +59 -0
- package/dist/delete-DozSxZQ7.cjs.map +1 -0
- package/dist/detail-8CXNIhKw.cjs +16 -0
- package/dist/detail-8CXNIhKw.cjs.map +1 -0
- package/dist/detail-DN5jCQ4N.mjs +10 -0
- package/dist/detail-DN5jCQ4N.mjs.map +1 -0
- package/dist/download-oFGzg30E.mjs +68 -0
- package/dist/download-oFGzg30E.mjs.map +1 -0
- package/dist/download-ogGbb3FU.cjs +68 -0
- package/dist/download-ogGbb3FU.cjs.map +1 -0
- package/dist/erd-lKC5NB2l.cjs +124 -0
- package/dist/erd-lKC5NB2l.cjs.map +1 -0
- package/dist/erd-zDoF6I_y.mjs +123 -0
- package/dist/erd-zDoF6I_y.mjs.map +1 -0
- package/dist/get-BBOKSXkh.cjs +48 -0
- package/dist/get-BBOKSXkh.cjs.map +1 -0
- package/dist/get-BHniACk5.cjs +57 -0
- package/dist/get-BHniACk5.cjs.map +1 -0
- package/dist/get-BtmzDaVn.mjs +47 -0
- package/dist/get-BtmzDaVn.mjs.map +1 -0
- package/dist/get-CVV3h6HR.cjs +47 -0
- package/dist/get-CVV3h6HR.cjs.map +1 -0
- package/dist/get-CgEgETQa.mjs +52 -0
- package/dist/get-CgEgETQa.mjs.map +1 -0
- package/dist/get-DB80UNSR.mjs +47 -0
- package/dist/get-DB80UNSR.mjs.map +1 -0
- package/dist/get-DBxhbN1G.mjs +57 -0
- package/dist/get-DBxhbN1G.mjs.map +1 -0
- package/dist/get-DDB89cOs.mjs +48 -0
- package/dist/get-DDB89cOs.mjs.map +1 -0
- package/dist/get-DPGx1zU4.mjs +56 -0
- package/dist/get-DPGx1zU4.mjs.map +1 -0
- package/dist/get-IOU__2RP.cjs +52 -0
- package/dist/get-IOU__2RP.cjs.map +1 -0
- package/dist/get-KdWfYINc.cjs +47 -0
- package/dist/get-KdWfYINc.cjs.map +1 -0
- package/dist/get-jwXRlIBJ.cjs +57 -0
- package/dist/get-jwXRlIBJ.cjs.map +1 -0
- package/dist/group-roles-BEEzLxPX.mjs +36 -0
- package/dist/group-roles-BEEzLxPX.mjs.map +1 -0
- package/dist/group-roles-Bl_mEodO.cjs +59 -0
- package/dist/group-roles-Bl_mEodO.cjs.map +1 -0
- package/dist/invite-DsOCKGTJ.mjs +66 -0
- package/dist/invite-DsOCKGTJ.mjs.map +1 -0
- package/dist/invite-Dts9uNQL.cjs +66 -0
- package/dist/invite-Dts9uNQL.cjs.map +1 -0
- package/dist/key-BogfSiz_.mjs +17 -0
- package/dist/key-BogfSiz_.mjs.map +1 -0
- package/dist/key-Czwiu2pW.cjs +17 -0
- package/dist/key-Czwiu2pW.cjs.map +1 -0
- package/dist/link-BluFyxEL.mjs +42 -0
- package/dist/link-BluFyxEL.mjs.map +1 -0
- package/dist/link-DYu1Vjlw.cjs +42 -0
- package/dist/link-DYu1Vjlw.cjs.map +1 -0
- package/dist/list-2BpPj4Z0.cjs +40 -0
- package/dist/list-2BpPj4Z0.cjs.map +1 -0
- package/dist/list-57TUfNFd.mjs +48 -0
- package/dist/list-57TUfNFd.mjs.map +1 -0
- package/dist/list-60NcDr0q.cjs +81 -0
- package/dist/list-60NcDr0q.cjs.map +1 -0
- package/dist/list-BRh59EqI.cjs +35 -0
- package/dist/list-BRh59EqI.cjs.map +1 -0
- package/dist/list-BwfpuhmJ.cjs +37 -0
- package/dist/list-BwfpuhmJ.cjs.map +1 -0
- package/dist/list-CJuefq_I.cjs +82 -0
- package/dist/list-CJuefq_I.cjs.map +1 -0
- package/dist/list-CYE9Exi3.cjs +72 -0
- package/dist/list-CYE9Exi3.cjs.map +1 -0
- package/dist/list-CbvEh7eA.mjs +35 -0
- package/dist/list-CbvEh7eA.mjs.map +1 -0
- package/dist/list-CfIeReBx.mjs +82 -0
- package/dist/list-CfIeReBx.mjs.map +1 -0
- package/dist/list-CxHDoXjv.mjs +81 -0
- package/dist/list-CxHDoXjv.mjs.map +1 -0
- package/dist/list-D0-QrWmn.cjs +51 -0
- package/dist/list-D0-QrWmn.cjs.map +1 -0
- package/dist/list-D24J_Qbm.mjs +49 -0
- package/dist/list-D24J_Qbm.mjs.map +1 -0
- package/dist/list-D5PSDMWw.mjs +51 -0
- package/dist/list-D5PSDMWw.mjs.map +1 -0
- package/dist/list-DRKF2uKW.cjs +95 -0
- package/dist/list-DRKF2uKW.cjs.map +1 -0
- package/dist/list-DdJ05juK.mjs +72 -0
- package/dist/list-DdJ05juK.mjs.map +1 -0
- package/dist/list-DlJssPwy.cjs +48 -0
- package/dist/list-DlJssPwy.cjs.map +1 -0
- package/dist/list-V3W6hvOa.cjs +49 -0
- package/dist/list-V3W6hvOa.cjs.map +1 -0
- package/dist/list-rAn3uOA7.mjs +37 -0
- package/dist/list-rAn3uOA7.mjs.map +1 -0
- package/dist/list-syVDGkVR.mjs +40 -0
- package/dist/list-syVDGkVR.mjs.map +1 -0
- package/dist/list-yQZLzkC7.mjs +95 -0
- package/dist/list-yQZLzkC7.mjs.map +1 -0
- package/dist/login-2XcHd4wn.cjs +212 -0
- package/dist/login-2XcHd4wn.cjs.map +1 -0
- package/dist/login-FE_dbWMo.mjs +211 -0
- package/dist/login-FE_dbWMo.mjs.map +1 -0
- package/dist/logout-BDbWrGBm.mjs +35 -0
- package/dist/logout-BDbWrGBm.mjs.map +1 -0
- package/dist/logout-DC5TMJ5_.cjs +35 -0
- package/dist/logout-DC5TMJ5_.cjs.map +1 -0
- package/dist/management-BaN1Nynl.mjs +19 -0
- package/dist/management-BaN1Nynl.mjs.map +1 -0
- package/dist/management-DHXxdCra.cjs +19 -0
- package/dist/management-DHXxdCra.cjs.map +1 -0
- package/dist/mask-B1qD73jb.mjs +22 -0
- package/dist/mask-B1qD73jb.mjs.map +1 -0
- package/dist/mask-CqYLib9p.cjs +40 -0
- package/dist/mask-CqYLib9p.cjs.map +1 -0
- package/dist/oauth-client-CdD0evAV.cjs +170 -0
- package/dist/oauth-client-CdD0evAV.cjs.map +1 -0
- package/dist/oauth-client-QHuDa4fW.mjs +139 -0
- package/dist/oauth-client-QHuDa4fW.mjs.map +1 -0
- package/dist/object-BfUf8Y6w.mjs +20 -0
- package/dist/object-BfUf8Y6w.mjs.map +1 -0
- package/dist/object-DT7UEW9G.cjs +20 -0
- package/dist/object-DT7UEW9G.cjs.map +1 -0
- package/dist/org-C4cVovOM.cjs +14 -0
- package/dist/org-C4cVovOM.cjs.map +1 -0
- package/dist/org-CPhTRTks.mjs +14 -0
- package/dist/org-CPhTRTks.mjs.map +1 -0
- package/dist/org-context-Bewx2NEW.cjs +30 -0
- package/dist/org-context-Bewx2NEW.cjs.map +1 -0
- package/dist/org-context-D0dwWC2M.mjs +25 -0
- package/dist/org-context-D0dwWC2M.mjs.map +1 -0
- package/dist/parse-BeO2IwfI.cjs +229 -0
- package/dist/parse-BeO2IwfI.cjs.map +1 -0
- package/dist/parse-CA5fBB3x.mjs +150 -0
- package/dist/parse-CA5fBB3x.mjs.map +1 -0
- package/dist/project-CNr9xMny.cjs +20 -0
- package/dist/project-CNr9xMny.cjs.map +1 -0
- package/dist/project-DFoHcXi5.mjs +20 -0
- package/dist/project-DFoHcXi5.mjs.map +1 -0
- package/dist/project-name-CEoM-OL4.cjs +18 -0
- package/dist/project-name-CEoM-OL4.cjs.map +1 -0
- package/dist/project-name-DNMejnzZ.mjs +12 -0
- package/dist/project-name-DNMejnzZ.mjs.map +1 -0
- package/dist/project-user-9D7Ey_Fu.mjs +20 -0
- package/dist/project-user-9D7Ey_Fu.mjs.map +1 -0
- package/dist/project-user-DTPFjyfZ.cjs +20 -0
- package/dist/project-user-DTPFjyfZ.cjs.map +1 -0
- package/dist/push-0u6PDz4E.cjs +166 -0
- package/dist/push-0u6PDz4E.cjs.map +1 -0
- package/dist/push-D7co0keA.mjs +166 -0
- package/dist/push-D7co0keA.mjs.map +1 -0
- package/dist/run-codegen-Ceeosw5x.cjs +272 -0
- package/dist/run-codegen-Ceeosw5x.cjs.map +1 -0
- package/dist/run-codegen-DgaFaIQ1.mjs +190 -0
- package/dist/run-codegen-DgaFaIQ1.mjs.map +1 -0
- package/dist/run-with-context-CVhmzAFZ.mjs +876 -0
- package/dist/run-with-context-CVhmzAFZ.mjs.map +1 -0
- package/dist/run-with-context-DJNnEigg.cjs +943 -0
- package/dist/run-with-context-DJNnEigg.cjs.map +1 -0
- package/dist/schema-DDzrgjkT.mjs +20 -0
- package/dist/schema-DDzrgjkT.mjs.map +1 -0
- package/dist/schema-DdhyEh81.cjs +20 -0
- package/dist/schema-DdhyEh81.cjs.map +1 -0
- package/dist/shared-CZZimGxc.mjs +35 -0
- package/dist/shared-CZZimGxc.mjs.map +1 -0
- package/dist/shared-DHRPzzKl.cjs +59 -0
- package/dist/shared-DHRPzzKl.cjs.map +1 -0
- package/dist/status-Dq_NJE71.cjs +49 -0
- package/dist/status-Dq_NJE71.cjs.map +1 -0
- package/dist/status-fWqXzV0P.mjs +49 -0
- package/dist/status-fWqXzV0P.mjs.map +1 -0
- package/dist/table-C74eOSh8.cjs +27 -0
- package/dist/table-C74eOSh8.cjs.map +1 -0
- package/dist/table-MHEfbnWO.mjs +20 -0
- package/dist/table-MHEfbnWO.mjs.map +1 -0
- package/dist/table-event-C16cp9nq.mjs +72 -0
- package/dist/table-event-C16cp9nq.mjs.map +1 -0
- package/dist/table-event-D7PPuS7E.cjs +101 -0
- package/dist/table-event-D7PPuS7E.cjs.map +1 -0
- package/dist/token-store--9GYVL7N.cjs +139 -0
- package/dist/token-store--9GYVL7N.cjs.map +1 -0
- package/dist/token-store-reCGF86F.mjs +124 -0
- package/dist/token-store-reCGF86F.mjs.map +1 -0
- package/dist/update-8e3u4jKa.mjs +109 -0
- package/dist/update-8e3u4jKa.mjs.map +1 -0
- package/dist/update-CDLviRuu.cjs +73 -0
- package/dist/update-CDLviRuu.cjs.map +1 -0
- package/dist/update-CSiOfiPL.mjs +117 -0
- package/dist/update-CSiOfiPL.mjs.map +1 -0
- package/dist/update-CjbcI8Qc.mjs +61 -0
- package/dist/update-CjbcI8Qc.mjs.map +1 -0
- package/dist/update-Cktd0zXA.cjs +109 -0
- package/dist/update-Cktd0zXA.cjs.map +1 -0
- package/dist/update-D-X32BVW.cjs +117 -0
- package/dist/update-D-X32BVW.cjs.map +1 -0
- package/dist/update-DfYV_TQb.mjs +171 -0
- package/dist/update-DfYV_TQb.mjs.map +1 -0
- package/dist/update-OWC5K8Ne.cjs +61 -0
- package/dist/update-OWC5K8Ne.cjs.map +1 -0
- package/dist/update-ap5Qv1Yl.cjs +171 -0
- package/dist/update-ap5Qv1Yl.cjs.map +1 -0
- package/dist/update-yscrx6WQ.mjs +73 -0
- package/dist/update-yscrx6WQ.mjs.map +1 -0
- package/dist/upload-C43ZXxyb.cjs +95 -0
- package/dist/upload-C43ZXxyb.cjs.map +1 -0
- package/dist/upload-DGgJ1TQk.mjs +94 -0
- package/dist/upload-DGgJ1TQk.mjs.map +1 -0
- package/dist/validate-BpxZ8LTl.cjs +31 -0
- package/dist/validate-BpxZ8LTl.cjs.map +1 -0
- package/dist/validate-Ca0CRo16.mjs +31 -0
- package/dist/validate-Ca0CRo16.mjs.map +1 -0
- package/dist/webhook-3zs6Ulxd.mjs +20 -0
- package/dist/webhook-3zs6Ulxd.mjs.map +1 -0
- package/dist/webhook-BsygMMf-.cjs +20 -0
- package/dist/webhook-BsygMMf-.cjs.map +1 -0
- package/package.json +27 -16
- package/bin/index.js +0 -3
- package/dist/cli.cjs +0 -1978
- package/dist/cli.cjs.map +0 -1
- package/dist/cli.d.cts +0 -2
- package/dist/cli.d.ts +0 -2
- package/dist/cli.js +0 -1954
- package/dist/cli.js.map +0 -1
- package/dist/config/index.js +0 -81
- package/dist/config/index.js.map +0 -1
|
@@ -0,0 +1,229 @@
|
|
|
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 node_fs_promises = require("node:fs/promises");
|
|
6
|
+
|
|
7
|
+
//#region src/cli/commands/parse.ts
|
|
8
|
+
function parseNonNegativeInteger(flag, value) {
|
|
9
|
+
if (typeof value === "string" && /^\d+$/.test(value)) return _praha_byethrow.Result.succeed(Number.parseInt(value, 10));
|
|
10
|
+
return _praha_byethrow.Result.fail({ message: `Invalid --${flag} value: ${String(value)}. Expected a non-negative integer.` });
|
|
11
|
+
}
|
|
12
|
+
function parsePositiveInteger(flag, value) {
|
|
13
|
+
if (typeof value === "string" && /^\d+$/.test(value)) {
|
|
14
|
+
const parsed = Number.parseInt(value, 10);
|
|
15
|
+
if (parsed >= 1) return _praha_byethrow.Result.succeed(parsed);
|
|
16
|
+
}
|
|
17
|
+
return _praha_byethrow.Result.fail({ message: `Invalid --${flag} value: ${String(value)}. Expected a positive integer.` });
|
|
18
|
+
}
|
|
19
|
+
function parseBooleanFlag(flag, value) {
|
|
20
|
+
if (value === void 0) return _praha_byethrow.Result.succeed(void 0);
|
|
21
|
+
if (value === "true" || value === "1") return _praha_byethrow.Result.succeed(true);
|
|
22
|
+
if (value === "false" || value === "0") return _praha_byethrow.Result.succeed(false);
|
|
23
|
+
return _praha_byethrow.Result.fail({ message: `Invalid --${flag} value: ${String(value)}. Expected true, false, 1, or 0.` });
|
|
24
|
+
}
|
|
25
|
+
function parseIntegerChoice(flag, value, allowed) {
|
|
26
|
+
if (typeof value === "string" && /^\d+$/.test(value)) {
|
|
27
|
+
const parsed = Number.parseInt(value, 10);
|
|
28
|
+
if (allowed.includes(parsed)) return _praha_byethrow.Result.succeed(parsed);
|
|
29
|
+
}
|
|
30
|
+
return _praha_byethrow.Result.fail({ message: `Invalid --${flag} value: ${String(value)}. Valid values: ${allowed.join(", ")}.` });
|
|
31
|
+
}
|
|
32
|
+
function parsePositionalId(label, value) {
|
|
33
|
+
if (!/^\d+$/.test(value)) return _praha_byethrow.Result.fail({ message: `Invalid ${label}: ${value}. Expected a non-negative integer.` });
|
|
34
|
+
return _praha_byethrow.Result.succeed(Number.parseInt(value, 10));
|
|
35
|
+
}
|
|
36
|
+
function parseHttpUrl(flag, value) {
|
|
37
|
+
if (typeof value !== "string" || value === "") return _praha_byethrow.Result.fail({ message: `Missing --${flag}.` });
|
|
38
|
+
let protocol;
|
|
39
|
+
try {
|
|
40
|
+
protocol = new URL(value).protocol;
|
|
41
|
+
} catch {
|
|
42
|
+
return _praha_byethrow.Result.fail({ message: `Invalid --${flag} value: ${value}. Expected an http or https URL.` });
|
|
43
|
+
}
|
|
44
|
+
if (protocol !== "http:" && protocol !== "https:") return _praha_byethrow.Result.fail({ message: `Invalid --${flag} value: ${value}. Expected an http or https URL.` });
|
|
45
|
+
return _praha_byethrow.Result.succeed(value);
|
|
46
|
+
}
|
|
47
|
+
function toCamelCase(value) {
|
|
48
|
+
return value.replace(/-([a-z])/g, (_, char) => char.toUpperCase());
|
|
49
|
+
}
|
|
50
|
+
function collectRepeatableFlag(rawArgs, flag) {
|
|
51
|
+
const names = new Set([`--${flag}`, `--${toCamelCase(flag)}`]);
|
|
52
|
+
const values = [];
|
|
53
|
+
let seen = false;
|
|
54
|
+
for (let i = 0; i < rawArgs.length; i++) {
|
|
55
|
+
const arg = rawArgs[i];
|
|
56
|
+
if (arg === "--") break;
|
|
57
|
+
const eq = arg.indexOf("=");
|
|
58
|
+
if (eq !== -1 && names.has(arg.slice(0, eq))) {
|
|
59
|
+
seen = true;
|
|
60
|
+
values.push(arg.slice(eq + 1));
|
|
61
|
+
continue;
|
|
62
|
+
}
|
|
63
|
+
if (names.has(arg)) {
|
|
64
|
+
seen = true;
|
|
65
|
+
const next = rawArgs[i + 1];
|
|
66
|
+
if (next !== void 0 && !next.startsWith("-")) {
|
|
67
|
+
values.push(next);
|
|
68
|
+
i++;
|
|
69
|
+
} else values.push("");
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
return seen ? values : void 0;
|
|
73
|
+
}
|
|
74
|
+
function parseRepeatableFlag(flag, value) {
|
|
75
|
+
if (value === void 0) return _praha_byethrow.Result.succeed([]);
|
|
76
|
+
const raw = Array.isArray(value) ? value : [value];
|
|
77
|
+
const items = [];
|
|
78
|
+
for (const item of raw) {
|
|
79
|
+
if (typeof item !== "string") return _praha_byethrow.Result.fail({ message: `Invalid --${flag} value: ${String(item)}. Expected a string.` });
|
|
80
|
+
items.push(item);
|
|
81
|
+
}
|
|
82
|
+
return _praha_byethrow.Result.succeed(items);
|
|
83
|
+
}
|
|
84
|
+
function splitColonPair(flag, item, hint, options) {
|
|
85
|
+
const index = item.indexOf(":");
|
|
86
|
+
const hasEmptyValue = index === item.length - 1;
|
|
87
|
+
if (index <= 0 || hasEmptyValue && options?.allowEmptyValue !== true) return _praha_byethrow.Result.fail({ message: `Invalid --${flag} value: ${item}. Expected ${hint}.` });
|
|
88
|
+
return _praha_byethrow.Result.succeed([item.slice(0, index), item.slice(index + 1)]);
|
|
89
|
+
}
|
|
90
|
+
function parseHeaders(flag, value) {
|
|
91
|
+
if (value === void 0) return _praha_byethrow.Result.succeed(void 0);
|
|
92
|
+
const items = parseRepeatableFlag(flag, value);
|
|
93
|
+
if (_praha_byethrow.Result.isFailure(items)) return items;
|
|
94
|
+
const headers = [];
|
|
95
|
+
for (const item of items.value) {
|
|
96
|
+
const pair = splitColonPair(flag, item, "<key>:<value>", { allowEmptyValue: true });
|
|
97
|
+
if (_praha_byethrow.Result.isFailure(pair)) return pair;
|
|
98
|
+
headers.push({
|
|
99
|
+
key: pair.value[0],
|
|
100
|
+
value: pair.value[1]
|
|
101
|
+
});
|
|
102
|
+
}
|
|
103
|
+
return _praha_byethrow.Result.succeed(headers);
|
|
104
|
+
}
|
|
105
|
+
const DataObjectSchema = valibot.record(valibot.string(), valibot.unknown());
|
|
106
|
+
async function parseDataOption(value) {
|
|
107
|
+
if (typeof value !== "string") return _praha_byethrow.Result.fail({ message: "Missing --data. Pass a JSON object string or @path/to/file.json." });
|
|
108
|
+
let text = value;
|
|
109
|
+
if (value.startsWith("@")) {
|
|
110
|
+
const path = value.slice(1);
|
|
111
|
+
try {
|
|
112
|
+
text = await (0, node_fs_promises.readFile)(path, "utf8");
|
|
113
|
+
} catch {
|
|
114
|
+
return _praha_byethrow.Result.fail({ message: `Could not read --data file: ${path}` });
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
let parsed;
|
|
118
|
+
try {
|
|
119
|
+
parsed = JSON.parse(text);
|
|
120
|
+
} catch (error) {
|
|
121
|
+
return _praha_byethrow.Result.fail({ message: `Invalid --data: ${error instanceof Error ? error.message : "not valid JSON"}` });
|
|
122
|
+
}
|
|
123
|
+
if (Array.isArray(parsed)) return _praha_byethrow.Result.fail({ message: "Invalid --data: expected a JSON object, got an array." });
|
|
124
|
+
const object = valibot.safeParse(DataObjectSchema, parsed);
|
|
125
|
+
if (!object.success) return _praha_byethrow.Result.fail({ message: "Invalid --data: expected a JSON object." });
|
|
126
|
+
return _praha_byethrow.Result.succeed(object.output);
|
|
127
|
+
}
|
|
128
|
+
function parseJsonObjectFlag(flag, value) {
|
|
129
|
+
if (value === void 0) return _praha_byethrow.Result.succeed(void 0);
|
|
130
|
+
if (typeof value !== "string") return _praha_byethrow.Result.fail({ message: `Invalid --${flag} value: ${String(value)}. Expected a JSON object string.` });
|
|
131
|
+
const parsed = tryParseJson(value);
|
|
132
|
+
if (_praha_byethrow.Result.isFailure(parsed) || typeof parsed.value !== "object" || parsed.value === null || Array.isArray(parsed.value)) return _praha_byethrow.Result.fail({ message: `Invalid --${flag} value: ${value}. Expected a JSON object string.` });
|
|
133
|
+
return _praha_byethrow.Result.succeed(value);
|
|
134
|
+
}
|
|
135
|
+
function parseJsonObjectOrArrayFlag(flag, value) {
|
|
136
|
+
if (value === void 0) return _praha_byethrow.Result.succeed(void 0);
|
|
137
|
+
if (typeof value !== "string") return _praha_byethrow.Result.fail({ message: `Invalid --${flag} value: ${String(value)}. Expected a JSON object or array string.` });
|
|
138
|
+
const parsed = tryParseJson(value);
|
|
139
|
+
if (_praha_byethrow.Result.isFailure(parsed) || typeof parsed.value !== "object" || parsed.value === null) return _praha_byethrow.Result.fail({ message: `Invalid --${flag} value: ${value}. Expected a JSON object or array string.` });
|
|
140
|
+
return _praha_byethrow.Result.succeed(value);
|
|
141
|
+
}
|
|
142
|
+
function tryParseJson(text) {
|
|
143
|
+
try {
|
|
144
|
+
return _praha_byethrow.Result.succeed(JSON.parse(text));
|
|
145
|
+
} catch {
|
|
146
|
+
return _praha_byethrow.Result.fail(void 0);
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
//#endregion
|
|
151
|
+
Object.defineProperty(exports, 'collectRepeatableFlag', {
|
|
152
|
+
enumerable: true,
|
|
153
|
+
get: function () {
|
|
154
|
+
return collectRepeatableFlag;
|
|
155
|
+
}
|
|
156
|
+
});
|
|
157
|
+
Object.defineProperty(exports, 'parseBooleanFlag', {
|
|
158
|
+
enumerable: true,
|
|
159
|
+
get: function () {
|
|
160
|
+
return parseBooleanFlag;
|
|
161
|
+
}
|
|
162
|
+
});
|
|
163
|
+
Object.defineProperty(exports, 'parseDataOption', {
|
|
164
|
+
enumerable: true,
|
|
165
|
+
get: function () {
|
|
166
|
+
return parseDataOption;
|
|
167
|
+
}
|
|
168
|
+
});
|
|
169
|
+
Object.defineProperty(exports, 'parseHeaders', {
|
|
170
|
+
enumerable: true,
|
|
171
|
+
get: function () {
|
|
172
|
+
return parseHeaders;
|
|
173
|
+
}
|
|
174
|
+
});
|
|
175
|
+
Object.defineProperty(exports, 'parseHttpUrl', {
|
|
176
|
+
enumerable: true,
|
|
177
|
+
get: function () {
|
|
178
|
+
return parseHttpUrl;
|
|
179
|
+
}
|
|
180
|
+
});
|
|
181
|
+
Object.defineProperty(exports, 'parseIntegerChoice', {
|
|
182
|
+
enumerable: true,
|
|
183
|
+
get: function () {
|
|
184
|
+
return parseIntegerChoice;
|
|
185
|
+
}
|
|
186
|
+
});
|
|
187
|
+
Object.defineProperty(exports, 'parseJsonObjectFlag', {
|
|
188
|
+
enumerable: true,
|
|
189
|
+
get: function () {
|
|
190
|
+
return parseJsonObjectFlag;
|
|
191
|
+
}
|
|
192
|
+
});
|
|
193
|
+
Object.defineProperty(exports, 'parseJsonObjectOrArrayFlag', {
|
|
194
|
+
enumerable: true,
|
|
195
|
+
get: function () {
|
|
196
|
+
return parseJsonObjectOrArrayFlag;
|
|
197
|
+
}
|
|
198
|
+
});
|
|
199
|
+
Object.defineProperty(exports, 'parseNonNegativeInteger', {
|
|
200
|
+
enumerable: true,
|
|
201
|
+
get: function () {
|
|
202
|
+
return parseNonNegativeInteger;
|
|
203
|
+
}
|
|
204
|
+
});
|
|
205
|
+
Object.defineProperty(exports, 'parsePositionalId', {
|
|
206
|
+
enumerable: true,
|
|
207
|
+
get: function () {
|
|
208
|
+
return parsePositionalId;
|
|
209
|
+
}
|
|
210
|
+
});
|
|
211
|
+
Object.defineProperty(exports, 'parsePositiveInteger', {
|
|
212
|
+
enumerable: true,
|
|
213
|
+
get: function () {
|
|
214
|
+
return parsePositiveInteger;
|
|
215
|
+
}
|
|
216
|
+
});
|
|
217
|
+
Object.defineProperty(exports, 'parseRepeatableFlag', {
|
|
218
|
+
enumerable: true,
|
|
219
|
+
get: function () {
|
|
220
|
+
return parseRepeatableFlag;
|
|
221
|
+
}
|
|
222
|
+
});
|
|
223
|
+
Object.defineProperty(exports, 'splitColonPair', {
|
|
224
|
+
enumerable: true,
|
|
225
|
+
get: function () {
|
|
226
|
+
return splitColonPair;
|
|
227
|
+
}
|
|
228
|
+
});
|
|
229
|
+
//# sourceMappingURL=parse-BeO2IwfI.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parse-BeO2IwfI.cjs","names":["Result","v"],"sources":["../src/cli/commands/parse.ts"],"sourcesContent":["import { readFile } from \"node:fs/promises\";\nimport { Result } from \"@praha/byethrow\";\nimport * as v from \"valibot\";\nimport type { CommandFailure } from \"./define-command.js\";\n\nexport function parseNonNegativeInteger(\n flag: string,\n value: unknown,\n): Result.Result<number, CommandFailure> {\n if (typeof value === \"string\" && /^\\d+$/.test(value)) {\n return Result.succeed(Number.parseInt(value, 10));\n }\n return Result.fail({\n message: `Invalid --${flag} value: ${String(value)}. Expected a non-negative integer.`,\n });\n}\n\n// limit など 1 以上を要求するフラグ向け。0 を渡すとサーバーの 400 まで気づけないため CLI 側で弾く。\nexport function parsePositiveInteger(\n flag: string,\n value: unknown,\n): Result.Result<number, CommandFailure> {\n if (typeof value === \"string\" && /^\\d+$/.test(value)) {\n const parsed = Number.parseInt(value, 10);\n if (parsed >= 1) return Result.succeed(parsed);\n }\n return Result.fail({\n message: `Invalid --${flag} value: ${String(value)}. Expected a positive integer.`,\n });\n}\n\nexport function parseBooleanFlag(\n flag: string,\n value: unknown,\n): Result.Result<boolean | undefined, CommandFailure> {\n if (value === undefined) return Result.succeed(undefined);\n if (value === \"true\" || value === \"1\") return Result.succeed(true);\n if (value === \"false\" || value === \"0\") return Result.succeed(false);\n return Result.fail({\n message: `Invalid --${flag} value: ${String(value)}. Expected true, false, 1, or 0.`,\n });\n}\n\n// サーバーが受け付ける値が離散的なフラグ(limit の 50/100/200 など)向け。\n// 任意の整数を通すとサーバーの 400 まで気づけないため、CLI 側で先に弾く。\nexport function parseIntegerChoice(\n flag: string,\n value: unknown,\n allowed: number[],\n): Result.Result<number, CommandFailure> {\n if (typeof value === \"string\" && /^\\d+$/.test(value)) {\n const parsed = Number.parseInt(value, 10);\n if (allowed.includes(parsed)) return Result.succeed(parsed);\n }\n return Result.fail({\n message: `Invalid --${flag} value: ${String(value)}. Valid values: ${allowed.join(\", \")}.`,\n });\n}\n\n// parseInt は \"12abc\" → 12 のように前方一致で読んでしまうため、整数文字列全体を検証する。\nexport function parsePositionalId(\n label: string,\n value: string,\n): Result.Result<number, CommandFailure> {\n if (!/^\\d+$/.test(value)) {\n return Result.fail({\n message: `Invalid ${label}: ${value}. Expected a non-negative integer.`,\n });\n }\n return Result.succeed(Number.parseInt(value, 10));\n}\n\n// new URL() は scheme を問わず通すため http/https 限定のフラグでは ftp: / javascript: などを弾けない。\n// 明示的に scheme を絞り、確実に 400 になるリクエストを送らずに済ませる。\nexport function parseHttpUrl(\n flag: string,\n value: unknown,\n): Result.Result<string, CommandFailure> {\n if (typeof value !== \"string\" || value === \"\") {\n return Result.fail({ message: `Missing --${flag}.` });\n }\n let protocol: string;\n try {\n protocol = new URL(value).protocol;\n } catch {\n return Result.fail({\n message: `Invalid --${flag} value: ${value}. Expected an http or https URL.`,\n });\n }\n if (protocol !== \"http:\" && protocol !== \"https:\") {\n return Result.fail({\n message: `Invalid --${flag} value: ${value}. Expected an http or https URL.`,\n });\n }\n return Result.succeed(value);\n}\n\nfunction toCamelCase(value: string): string {\n return value.replace(/-([a-z])/g, (_, char: string) => char.toUpperCase());\n}\n\n// citty 0.2.x は node:util.parseArgs ベースになり、同じフラグの複数指定を配列化せず最後の値だけ\n// 残す。repeatable フラグは citty が捨てた指定値も含め rawArgs から自前で集める。\nexport function collectRepeatableFlag(\n rawArgs: string[],\n flag: string,\n): string[] | undefined {\n // citty は kebab/camel を相互エイリアスするため両表記を受ける\n const names = new Set([`--${flag}`, `--${toCamelCase(flag)}`]);\n const values: string[] = [];\n let seen = false;\n for (let i = 0; i < rawArgs.length; i++) {\n const arg = rawArgs[i];\n if (arg === \"--\") break;\n const eq = arg.indexOf(\"=\");\n if (eq !== -1 && names.has(arg.slice(0, eq))) {\n seen = true;\n values.push(arg.slice(eq + 1));\n continue;\n }\n if (names.has(arg)) {\n seen = true;\n const next = rawArgs[i + 1];\n // 受理する値(header/group-role/status 等)はいずれも \"-\" 始まりにならないため、\n // 次トークンが別フラグなら値なし(空文字)として検証側に弾かせる\n if (next !== undefined && !next.startsWith(\"-\")) {\n values.push(next);\n i++;\n } else {\n values.push(\"\");\n }\n }\n }\n // 「フラグ未指定」と「空配列」を区別する既存の undefined セマンティクスを維持する\n return seen ? values : undefined;\n}\n\n// collectRepeatableFlag が集めた配列、もしくは単一値を受け、文字列の配列に統一して検証する。\nexport function parseRepeatableFlag(\n flag: string,\n value: unknown,\n): Result.Result<string[], CommandFailure> {\n if (value === undefined) return Result.succeed([]);\n const raw = Array.isArray(value) ? value : [value];\n const items: string[] = [];\n for (const item of raw) {\n if (typeof item !== \"string\") {\n return Result.fail({\n message: `Invalid --${flag} value: ${String(item)}. Expected a string.`,\n });\n }\n items.push(item);\n }\n return Result.succeed(items);\n}\n\n// value 側に \":\" を含められるよう(URL ヘッダ値など)、最初の \":\" でのみ分割する。\n// HTTP ヘッダ値は空でも有効なため、header 経路だけ allowEmptyValue で空 value を許す。\nexport function splitColonPair(\n flag: string,\n item: string,\n hint: string,\n options?: { allowEmptyValue?: boolean },\n): Result.Result<[string, string], CommandFailure> {\n const index = item.indexOf(\":\");\n const hasEmptyValue = index === item.length - 1;\n if (index <= 0 || (hasEmptyValue && options?.allowEmptyValue !== true)) {\n return Result.fail({\n message: `Invalid --${flag} value: ${item}. Expected ${hint}.`,\n });\n }\n return Result.succeed([item.slice(0, index), item.slice(index + 1)]);\n}\n\nexport function parseHeaders(\n flag: string,\n value: unknown,\n): Result.Result<{ key: string; value: string }[] | 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 headers: { key: string; value: string }[] = [];\n for (const item of items.value) {\n const pair = splitColonPair(flag, item, \"<key>:<value>\", {\n allowEmptyValue: true,\n });\n if (Result.isFailure(pair)) return pair;\n headers.push({ key: pair.value[0], value: pair.value[1] });\n }\n return Result.succeed(headers);\n}\n\nconst DataObjectSchema = v.record(v.string(), v.unknown());\n\nexport async function parseDataOption(\n value: unknown,\n): Promise<Result.Result<Record<string, unknown>, CommandFailure>> {\n if (typeof value !== \"string\") {\n return Result.fail({\n message:\n \"Missing --data. Pass a JSON object string or @path/to/file.json.\",\n });\n }\n\n let text = value;\n if (value.startsWith(\"@\")) {\n const path = value.slice(1);\n try {\n text = await readFile(path, \"utf8\");\n } catch {\n return Result.fail({ message: `Could not read --data file: ${path}` });\n }\n }\n\n let parsed: unknown;\n try {\n parsed = JSON.parse(text);\n } catch (error) {\n return Result.fail({\n message: `Invalid --data: ${error instanceof Error ? error.message : \"not valid JSON\"}`,\n });\n }\n // valibot の record はオブジェクト以外を弾くが、配列は通すため明示的に弾く\n if (Array.isArray(parsed)) {\n return Result.fail({\n message: \"Invalid --data: expected a JSON object, got an array.\",\n });\n }\n const object = v.safeParse(DataObjectSchema, parsed);\n if (!object.success) {\n return Result.fail({ message: \"Invalid --data: expected a JSON object.\" });\n }\n return Result.succeed(object.output);\n}\n\n// サーバーは filter / order を「JSON.parse できる文字列クエリ」として受けるため、\n// ここでは構文検証だけ行い、再 serialize せず生文字列をそのまま送る。\nexport function parseJsonObjectFlag(\n flag: string,\n value: unknown,\n): Result.Result<string | undefined, CommandFailure> {\n if (value === undefined) return Result.succeed(undefined);\n if (typeof value !== \"string\") {\n return Result.fail({\n message: `Invalid --${flag} value: ${String(value)}. Expected a JSON object string.`,\n });\n }\n const parsed = tryParseJson(value);\n if (\n Result.isFailure(parsed) ||\n typeof parsed.value !== \"object\" ||\n parsed.value === null ||\n Array.isArray(parsed.value)\n ) {\n return Result.fail({\n message: `Invalid --${flag} value: ${value}. Expected a JSON object string.`,\n });\n }\n return Result.succeed(value);\n}\n\nexport function parseJsonObjectOrArrayFlag(\n flag: string,\n value: unknown,\n): Result.Result<string | undefined, CommandFailure> {\n if (value === undefined) return Result.succeed(undefined);\n if (typeof value !== \"string\") {\n return Result.fail({\n message: `Invalid --${flag} value: ${String(value)}. Expected a JSON object or array string.`,\n });\n }\n const parsed = tryParseJson(value);\n if (\n Result.isFailure(parsed) ||\n typeof parsed.value !== \"object\" ||\n parsed.value === null\n ) {\n return Result.fail({\n message: `Invalid --${flag} value: ${value}. Expected a JSON object or array string.`,\n });\n }\n return Result.succeed(value);\n}\n\nfunction tryParseJson(text: string): Result.Result<unknown, undefined> {\n try {\n return Result.succeed(JSON.parse(text));\n } catch {\n return Result.fail(undefined);\n }\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
import { Result } from "@praha/byethrow";
|
|
2
|
+
import * as v from "valibot";
|
|
3
|
+
import { readFile } from "node:fs/promises";
|
|
4
|
+
|
|
5
|
+
//#region src/cli/commands/parse.ts
|
|
6
|
+
function parseNonNegativeInteger(flag, value) {
|
|
7
|
+
if (typeof value === "string" && /^\d+$/.test(value)) return Result.succeed(Number.parseInt(value, 10));
|
|
8
|
+
return Result.fail({ message: `Invalid --${flag} value: ${String(value)}. Expected a non-negative integer.` });
|
|
9
|
+
}
|
|
10
|
+
function parsePositiveInteger(flag, value) {
|
|
11
|
+
if (typeof value === "string" && /^\d+$/.test(value)) {
|
|
12
|
+
const parsed = Number.parseInt(value, 10);
|
|
13
|
+
if (parsed >= 1) return Result.succeed(parsed);
|
|
14
|
+
}
|
|
15
|
+
return Result.fail({ message: `Invalid --${flag} value: ${String(value)}. Expected a positive integer.` });
|
|
16
|
+
}
|
|
17
|
+
function parseBooleanFlag(flag, value) {
|
|
18
|
+
if (value === void 0) return Result.succeed(void 0);
|
|
19
|
+
if (value === "true" || value === "1") return Result.succeed(true);
|
|
20
|
+
if (value === "false" || value === "0") return Result.succeed(false);
|
|
21
|
+
return Result.fail({ message: `Invalid --${flag} value: ${String(value)}. Expected true, false, 1, or 0.` });
|
|
22
|
+
}
|
|
23
|
+
function parseIntegerChoice(flag, value, allowed) {
|
|
24
|
+
if (typeof value === "string" && /^\d+$/.test(value)) {
|
|
25
|
+
const parsed = Number.parseInt(value, 10);
|
|
26
|
+
if (allowed.includes(parsed)) return Result.succeed(parsed);
|
|
27
|
+
}
|
|
28
|
+
return Result.fail({ message: `Invalid --${flag} value: ${String(value)}. Valid values: ${allowed.join(", ")}.` });
|
|
29
|
+
}
|
|
30
|
+
function parsePositionalId(label, value) {
|
|
31
|
+
if (!/^\d+$/.test(value)) return Result.fail({ message: `Invalid ${label}: ${value}. Expected a non-negative integer.` });
|
|
32
|
+
return Result.succeed(Number.parseInt(value, 10));
|
|
33
|
+
}
|
|
34
|
+
function parseHttpUrl(flag, value) {
|
|
35
|
+
if (typeof value !== "string" || value === "") return Result.fail({ message: `Missing --${flag}.` });
|
|
36
|
+
let protocol;
|
|
37
|
+
try {
|
|
38
|
+
protocol = new URL(value).protocol;
|
|
39
|
+
} catch {
|
|
40
|
+
return Result.fail({ message: `Invalid --${flag} value: ${value}. Expected an http or https URL.` });
|
|
41
|
+
}
|
|
42
|
+
if (protocol !== "http:" && protocol !== "https:") return Result.fail({ message: `Invalid --${flag} value: ${value}. Expected an http or https URL.` });
|
|
43
|
+
return Result.succeed(value);
|
|
44
|
+
}
|
|
45
|
+
function toCamelCase(value) {
|
|
46
|
+
return value.replace(/-([a-z])/g, (_, char) => char.toUpperCase());
|
|
47
|
+
}
|
|
48
|
+
function collectRepeatableFlag(rawArgs, flag) {
|
|
49
|
+
const names = new Set([`--${flag}`, `--${toCamelCase(flag)}`]);
|
|
50
|
+
const values = [];
|
|
51
|
+
let seen = false;
|
|
52
|
+
for (let i = 0; i < rawArgs.length; i++) {
|
|
53
|
+
const arg = rawArgs[i];
|
|
54
|
+
if (arg === "--") break;
|
|
55
|
+
const eq = arg.indexOf("=");
|
|
56
|
+
if (eq !== -1 && names.has(arg.slice(0, eq))) {
|
|
57
|
+
seen = true;
|
|
58
|
+
values.push(arg.slice(eq + 1));
|
|
59
|
+
continue;
|
|
60
|
+
}
|
|
61
|
+
if (names.has(arg)) {
|
|
62
|
+
seen = true;
|
|
63
|
+
const next = rawArgs[i + 1];
|
|
64
|
+
if (next !== void 0 && !next.startsWith("-")) {
|
|
65
|
+
values.push(next);
|
|
66
|
+
i++;
|
|
67
|
+
} else values.push("");
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
return seen ? values : void 0;
|
|
71
|
+
}
|
|
72
|
+
function parseRepeatableFlag(flag, value) {
|
|
73
|
+
if (value === void 0) return Result.succeed([]);
|
|
74
|
+
const raw = Array.isArray(value) ? value : [value];
|
|
75
|
+
const items = [];
|
|
76
|
+
for (const item of raw) {
|
|
77
|
+
if (typeof item !== "string") return Result.fail({ message: `Invalid --${flag} value: ${String(item)}. Expected a string.` });
|
|
78
|
+
items.push(item);
|
|
79
|
+
}
|
|
80
|
+
return Result.succeed(items);
|
|
81
|
+
}
|
|
82
|
+
function splitColonPair(flag, item, hint, options) {
|
|
83
|
+
const index = item.indexOf(":");
|
|
84
|
+
const hasEmptyValue = index === item.length - 1;
|
|
85
|
+
if (index <= 0 || hasEmptyValue && options?.allowEmptyValue !== true) return Result.fail({ message: `Invalid --${flag} value: ${item}. Expected ${hint}.` });
|
|
86
|
+
return Result.succeed([item.slice(0, index), item.slice(index + 1)]);
|
|
87
|
+
}
|
|
88
|
+
function parseHeaders(flag, value) {
|
|
89
|
+
if (value === void 0) return Result.succeed(void 0);
|
|
90
|
+
const items = parseRepeatableFlag(flag, value);
|
|
91
|
+
if (Result.isFailure(items)) return items;
|
|
92
|
+
const headers = [];
|
|
93
|
+
for (const item of items.value) {
|
|
94
|
+
const pair = splitColonPair(flag, item, "<key>:<value>", { allowEmptyValue: true });
|
|
95
|
+
if (Result.isFailure(pair)) return pair;
|
|
96
|
+
headers.push({
|
|
97
|
+
key: pair.value[0],
|
|
98
|
+
value: pair.value[1]
|
|
99
|
+
});
|
|
100
|
+
}
|
|
101
|
+
return Result.succeed(headers);
|
|
102
|
+
}
|
|
103
|
+
const DataObjectSchema = v.record(v.string(), v.unknown());
|
|
104
|
+
async function parseDataOption(value) {
|
|
105
|
+
if (typeof value !== "string") return Result.fail({ message: "Missing --data. Pass a JSON object string or @path/to/file.json." });
|
|
106
|
+
let text = value;
|
|
107
|
+
if (value.startsWith("@")) {
|
|
108
|
+
const path = value.slice(1);
|
|
109
|
+
try {
|
|
110
|
+
text = await readFile(path, "utf8");
|
|
111
|
+
} catch {
|
|
112
|
+
return Result.fail({ message: `Could not read --data file: ${path}` });
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
let parsed;
|
|
116
|
+
try {
|
|
117
|
+
parsed = JSON.parse(text);
|
|
118
|
+
} catch (error) {
|
|
119
|
+
return Result.fail({ message: `Invalid --data: ${error instanceof Error ? error.message : "not valid JSON"}` });
|
|
120
|
+
}
|
|
121
|
+
if (Array.isArray(parsed)) return Result.fail({ message: "Invalid --data: expected a JSON object, got an array." });
|
|
122
|
+
const object = v.safeParse(DataObjectSchema, parsed);
|
|
123
|
+
if (!object.success) return Result.fail({ message: "Invalid --data: expected a JSON object." });
|
|
124
|
+
return Result.succeed(object.output);
|
|
125
|
+
}
|
|
126
|
+
function parseJsonObjectFlag(flag, value) {
|
|
127
|
+
if (value === void 0) return Result.succeed(void 0);
|
|
128
|
+
if (typeof value !== "string") return Result.fail({ message: `Invalid --${flag} value: ${String(value)}. Expected a JSON object string.` });
|
|
129
|
+
const parsed = tryParseJson(value);
|
|
130
|
+
if (Result.isFailure(parsed) || typeof parsed.value !== "object" || parsed.value === null || Array.isArray(parsed.value)) return Result.fail({ message: `Invalid --${flag} value: ${value}. Expected a JSON object string.` });
|
|
131
|
+
return Result.succeed(value);
|
|
132
|
+
}
|
|
133
|
+
function parseJsonObjectOrArrayFlag(flag, value) {
|
|
134
|
+
if (value === void 0) return Result.succeed(void 0);
|
|
135
|
+
if (typeof value !== "string") return Result.fail({ message: `Invalid --${flag} value: ${String(value)}. Expected a JSON object or array string.` });
|
|
136
|
+
const parsed = tryParseJson(value);
|
|
137
|
+
if (Result.isFailure(parsed) || typeof parsed.value !== "object" || parsed.value === null) return Result.fail({ message: `Invalid --${flag} value: ${value}. Expected a JSON object or array string.` });
|
|
138
|
+
return Result.succeed(value);
|
|
139
|
+
}
|
|
140
|
+
function tryParseJson(text) {
|
|
141
|
+
try {
|
|
142
|
+
return Result.succeed(JSON.parse(text));
|
|
143
|
+
} catch {
|
|
144
|
+
return Result.fail(void 0);
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
//#endregion
|
|
149
|
+
export { parseHttpUrl as a, parseJsonObjectOrArrayFlag as c, parsePositiveInteger as d, parseRepeatableFlag as f, parseHeaders as i, parseNonNegativeInteger as l, parseBooleanFlag as n, parseIntegerChoice as o, splitColonPair as p, parseDataOption as r, parseJsonObjectFlag as s, collectRepeatableFlag as t, parsePositionalId as u };
|
|
150
|
+
//# sourceMappingURL=parse-CA5fBB3x.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parse-CA5fBB3x.mjs","names":[],"sources":["../src/cli/commands/parse.ts"],"sourcesContent":["import { readFile } from \"node:fs/promises\";\nimport { Result } from \"@praha/byethrow\";\nimport * as v from \"valibot\";\nimport type { CommandFailure } from \"./define-command.js\";\n\nexport function parseNonNegativeInteger(\n flag: string,\n value: unknown,\n): Result.Result<number, CommandFailure> {\n if (typeof value === \"string\" && /^\\d+$/.test(value)) {\n return Result.succeed(Number.parseInt(value, 10));\n }\n return Result.fail({\n message: `Invalid --${flag} value: ${String(value)}. Expected a non-negative integer.`,\n });\n}\n\n// limit など 1 以上を要求するフラグ向け。0 を渡すとサーバーの 400 まで気づけないため CLI 側で弾く。\nexport function parsePositiveInteger(\n flag: string,\n value: unknown,\n): Result.Result<number, CommandFailure> {\n if (typeof value === \"string\" && /^\\d+$/.test(value)) {\n const parsed = Number.parseInt(value, 10);\n if (parsed >= 1) return Result.succeed(parsed);\n }\n return Result.fail({\n message: `Invalid --${flag} value: ${String(value)}. Expected a positive integer.`,\n });\n}\n\nexport function parseBooleanFlag(\n flag: string,\n value: unknown,\n): Result.Result<boolean | undefined, CommandFailure> {\n if (value === undefined) return Result.succeed(undefined);\n if (value === \"true\" || value === \"1\") return Result.succeed(true);\n if (value === \"false\" || value === \"0\") return Result.succeed(false);\n return Result.fail({\n message: `Invalid --${flag} value: ${String(value)}. Expected true, false, 1, or 0.`,\n });\n}\n\n// サーバーが受け付ける値が離散的なフラグ(limit の 50/100/200 など)向け。\n// 任意の整数を通すとサーバーの 400 まで気づけないため、CLI 側で先に弾く。\nexport function parseIntegerChoice(\n flag: string,\n value: unknown,\n allowed: number[],\n): Result.Result<number, CommandFailure> {\n if (typeof value === \"string\" && /^\\d+$/.test(value)) {\n const parsed = Number.parseInt(value, 10);\n if (allowed.includes(parsed)) return Result.succeed(parsed);\n }\n return Result.fail({\n message: `Invalid --${flag} value: ${String(value)}. Valid values: ${allowed.join(\", \")}.`,\n });\n}\n\n// parseInt は \"12abc\" → 12 のように前方一致で読んでしまうため、整数文字列全体を検証する。\nexport function parsePositionalId(\n label: string,\n value: string,\n): Result.Result<number, CommandFailure> {\n if (!/^\\d+$/.test(value)) {\n return Result.fail({\n message: `Invalid ${label}: ${value}. Expected a non-negative integer.`,\n });\n }\n return Result.succeed(Number.parseInt(value, 10));\n}\n\n// new URL() は scheme を問わず通すため http/https 限定のフラグでは ftp: / javascript: などを弾けない。\n// 明示的に scheme を絞り、確実に 400 になるリクエストを送らずに済ませる。\nexport function parseHttpUrl(\n flag: string,\n value: unknown,\n): Result.Result<string, CommandFailure> {\n if (typeof value !== \"string\" || value === \"\") {\n return Result.fail({ message: `Missing --${flag}.` });\n }\n let protocol: string;\n try {\n protocol = new URL(value).protocol;\n } catch {\n return Result.fail({\n message: `Invalid --${flag} value: ${value}. Expected an http or https URL.`,\n });\n }\n if (protocol !== \"http:\" && protocol !== \"https:\") {\n return Result.fail({\n message: `Invalid --${flag} value: ${value}. Expected an http or https URL.`,\n });\n }\n return Result.succeed(value);\n}\n\nfunction toCamelCase(value: string): string {\n return value.replace(/-([a-z])/g, (_, char: string) => char.toUpperCase());\n}\n\n// citty 0.2.x は node:util.parseArgs ベースになり、同じフラグの複数指定を配列化せず最後の値だけ\n// 残す。repeatable フラグは citty が捨てた指定値も含め rawArgs から自前で集める。\nexport function collectRepeatableFlag(\n rawArgs: string[],\n flag: string,\n): string[] | undefined {\n // citty は kebab/camel を相互エイリアスするため両表記を受ける\n const names = new Set([`--${flag}`, `--${toCamelCase(flag)}`]);\n const values: string[] = [];\n let seen = false;\n for (let i = 0; i < rawArgs.length; i++) {\n const arg = rawArgs[i];\n if (arg === \"--\") break;\n const eq = arg.indexOf(\"=\");\n if (eq !== -1 && names.has(arg.slice(0, eq))) {\n seen = true;\n values.push(arg.slice(eq + 1));\n continue;\n }\n if (names.has(arg)) {\n seen = true;\n const next = rawArgs[i + 1];\n // 受理する値(header/group-role/status 等)はいずれも \"-\" 始まりにならないため、\n // 次トークンが別フラグなら値なし(空文字)として検証側に弾かせる\n if (next !== undefined && !next.startsWith(\"-\")) {\n values.push(next);\n i++;\n } else {\n values.push(\"\");\n }\n }\n }\n // 「フラグ未指定」と「空配列」を区別する既存の undefined セマンティクスを維持する\n return seen ? values : undefined;\n}\n\n// collectRepeatableFlag が集めた配列、もしくは単一値を受け、文字列の配列に統一して検証する。\nexport function parseRepeatableFlag(\n flag: string,\n value: unknown,\n): Result.Result<string[], CommandFailure> {\n if (value === undefined) return Result.succeed([]);\n const raw = Array.isArray(value) ? value : [value];\n const items: string[] = [];\n for (const item of raw) {\n if (typeof item !== \"string\") {\n return Result.fail({\n message: `Invalid --${flag} value: ${String(item)}. Expected a string.`,\n });\n }\n items.push(item);\n }\n return Result.succeed(items);\n}\n\n// value 側に \":\" を含められるよう(URL ヘッダ値など)、最初の \":\" でのみ分割する。\n// HTTP ヘッダ値は空でも有効なため、header 経路だけ allowEmptyValue で空 value を許す。\nexport function splitColonPair(\n flag: string,\n item: string,\n hint: string,\n options?: { allowEmptyValue?: boolean },\n): Result.Result<[string, string], CommandFailure> {\n const index = item.indexOf(\":\");\n const hasEmptyValue = index === item.length - 1;\n if (index <= 0 || (hasEmptyValue && options?.allowEmptyValue !== true)) {\n return Result.fail({\n message: `Invalid --${flag} value: ${item}. Expected ${hint}.`,\n });\n }\n return Result.succeed([item.slice(0, index), item.slice(index + 1)]);\n}\n\nexport function parseHeaders(\n flag: string,\n value: unknown,\n): Result.Result<{ key: string; value: string }[] | 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 headers: { key: string; value: string }[] = [];\n for (const item of items.value) {\n const pair = splitColonPair(flag, item, \"<key>:<value>\", {\n allowEmptyValue: true,\n });\n if (Result.isFailure(pair)) return pair;\n headers.push({ key: pair.value[0], value: pair.value[1] });\n }\n return Result.succeed(headers);\n}\n\nconst DataObjectSchema = v.record(v.string(), v.unknown());\n\nexport async function parseDataOption(\n value: unknown,\n): Promise<Result.Result<Record<string, unknown>, CommandFailure>> {\n if (typeof value !== \"string\") {\n return Result.fail({\n message:\n \"Missing --data. Pass a JSON object string or @path/to/file.json.\",\n });\n }\n\n let text = value;\n if (value.startsWith(\"@\")) {\n const path = value.slice(1);\n try {\n text = await readFile(path, \"utf8\");\n } catch {\n return Result.fail({ message: `Could not read --data file: ${path}` });\n }\n }\n\n let parsed: unknown;\n try {\n parsed = JSON.parse(text);\n } catch (error) {\n return Result.fail({\n message: `Invalid --data: ${error instanceof Error ? error.message : \"not valid JSON\"}`,\n });\n }\n // valibot の record はオブジェクト以外を弾くが、配列は通すため明示的に弾く\n if (Array.isArray(parsed)) {\n return Result.fail({\n message: \"Invalid --data: expected a JSON object, got an array.\",\n });\n }\n const object = v.safeParse(DataObjectSchema, parsed);\n if (!object.success) {\n return Result.fail({ message: \"Invalid --data: expected a JSON object.\" });\n }\n return Result.succeed(object.output);\n}\n\n// サーバーは filter / order を「JSON.parse できる文字列クエリ」として受けるため、\n// ここでは構文検証だけ行い、再 serialize せず生文字列をそのまま送る。\nexport function parseJsonObjectFlag(\n flag: string,\n value: unknown,\n): Result.Result<string | undefined, CommandFailure> {\n if (value === undefined) return Result.succeed(undefined);\n if (typeof value !== \"string\") {\n return Result.fail({\n message: `Invalid --${flag} value: ${String(value)}. Expected a JSON object string.`,\n });\n }\n const parsed = tryParseJson(value);\n if (\n Result.isFailure(parsed) ||\n typeof parsed.value !== \"object\" ||\n parsed.value === null ||\n Array.isArray(parsed.value)\n ) {\n return Result.fail({\n message: `Invalid --${flag} value: ${value}. Expected a JSON object string.`,\n });\n }\n return Result.succeed(value);\n}\n\nexport function parseJsonObjectOrArrayFlag(\n flag: string,\n value: unknown,\n): Result.Result<string | undefined, CommandFailure> {\n if (value === undefined) return Result.succeed(undefined);\n if (typeof value !== \"string\") {\n return Result.fail({\n message: `Invalid --${flag} value: ${String(value)}. Expected a JSON object or array string.`,\n });\n }\n const parsed = tryParseJson(value);\n if (\n Result.isFailure(parsed) ||\n typeof parsed.value !== \"object\" ||\n parsed.value === null\n ) {\n return Result.fail({\n message: `Invalid --${flag} value: ${value}. Expected a JSON object or array string.`,\n });\n }\n return Result.succeed(value);\n}\n\nfunction tryParseJson(text: string): Result.Result<unknown, undefined> {\n try {\n return Result.succeed(JSON.parse(text));\n } catch {\n return Result.fail(undefined);\n }\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
const require_cli_main = require('./cli/main.cjs');
|
|
2
|
+
|
|
3
|
+
//#region src/cli/commands/project/index.ts
|
|
4
|
+
var project_default = require_cli_main.defineCommand({
|
|
5
|
+
meta: {
|
|
6
|
+
name: "project",
|
|
7
|
+
description: "Manage projects"
|
|
8
|
+
},
|
|
9
|
+
subCommands: {
|
|
10
|
+
list: () => Promise.resolve().then(() => require("./list-D0-QrWmn.cjs")).then((m) => m.default),
|
|
11
|
+
get: () => Promise.resolve().then(() => require("./get-BBOKSXkh.cjs")).then((m) => m.default),
|
|
12
|
+
create: () => Promise.resolve().then(() => require("./create-Z-z3LXNW.cjs")).then((m) => m.default),
|
|
13
|
+
update: () => Promise.resolve().then(() => require("./update-CDLviRuu.cjs")).then((m) => m.default),
|
|
14
|
+
delete: () => Promise.resolve().then(() => require("./delete-CIYY59v_.cjs")).then((m) => m.default)
|
|
15
|
+
}
|
|
16
|
+
});
|
|
17
|
+
|
|
18
|
+
//#endregion
|
|
19
|
+
exports.default = project_default;
|
|
20
|
+
//# sourceMappingURL=project-CNr9xMny.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"project-CNr9xMny.cjs","names":["defineCommand"],"sources":["../src/cli/commands/project/index.ts"],"sourcesContent":["import { defineCommand } from \"../define-command.js\";\n\nexport default defineCommand({\n meta: {\n name: \"project\",\n description: \"Manage projects\",\n },\n subCommands: {\n list: () => import(\"./list.js\").then((m) => m.default),\n get: () => import(\"./get.js\").then((m) => m.default),\n create: () => import(\"./create.js\").then((m) => m.default),\n update: () => import(\"./update.js\").then((m) => m.default),\n delete: () => import(\"./delete.js\").then((m) => m.default),\n },\n});\n"],"mappings":";;;AAEA,sBAAeA,+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,mDAAc,0BAAsB,MAAM,MAAM,EAAE,OAAO;EACzD,mDAAc,0BAAsB,MAAM,MAAM,EAAE,OAAO;CAC3D;AACF,CAAC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { t as defineCommand } from "./cli/main.mjs";
|
|
2
|
+
|
|
3
|
+
//#region src/cli/commands/project/index.ts
|
|
4
|
+
var project_default = defineCommand({
|
|
5
|
+
meta: {
|
|
6
|
+
name: "project",
|
|
7
|
+
description: "Manage projects"
|
|
8
|
+
},
|
|
9
|
+
subCommands: {
|
|
10
|
+
list: () => import("./list-D5PSDMWw.mjs").then((m) => m.default),
|
|
11
|
+
get: () => import("./get-DDB89cOs.mjs").then((m) => m.default),
|
|
12
|
+
create: () => import("./create-B-PAOor6.mjs").then((m) => m.default),
|
|
13
|
+
update: () => import("./update-yscrx6WQ.mjs").then((m) => m.default),
|
|
14
|
+
delete: () => import("./delete-BOUObrDw.mjs").then((m) => m.default)
|
|
15
|
+
}
|
|
16
|
+
});
|
|
17
|
+
|
|
18
|
+
//#endregion
|
|
19
|
+
export { project_default as default };
|
|
20
|
+
//# sourceMappingURL=project-DFoHcXi5.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"project-DFoHcXi5.mjs","names":[],"sources":["../src/cli/commands/project/index.ts"],"sourcesContent":["import { defineCommand } from \"../define-command.js\";\n\nexport default defineCommand({\n meta: {\n name: \"project\",\n description: \"Manage projects\",\n },\n subCommands: {\n list: () => import(\"./list.js\").then((m) => m.default),\n get: () => import(\"./get.js\").then((m) => m.default),\n create: () => import(\"./create.js\").then((m) => m.default),\n update: () => import(\"./update.js\").then((m) => m.default),\n delete: () => import(\"./delete.js\").then((m) => m.default),\n },\n});\n"],"mappings":";;;AAEA,sBAAe,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,cAAc,OAAO,wBAAc,CAAC,MAAM,MAAM,EAAE,OAAO;EACzD,cAAc,OAAO,wBAAc,CAAC,MAAM,MAAM,EAAE,OAAO;CAC3D;AACF,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
|
|
2
|
+
//#region src/cli/commands/project/project-name.ts
|
|
3
|
+
function projectNameOverride(args) {
|
|
4
|
+
const name = typeof args.name === "string" && args.name !== "" ? args.name : void 0;
|
|
5
|
+
return {
|
|
6
|
+
...args,
|
|
7
|
+
project: name ?? args.project
|
|
8
|
+
};
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
//#endregion
|
|
12
|
+
Object.defineProperty(exports, 'projectNameOverride', {
|
|
13
|
+
enumerable: true,
|
|
14
|
+
get: function () {
|
|
15
|
+
return projectNameOverride;
|
|
16
|
+
}
|
|
17
|
+
});
|
|
18
|
+
//# sourceMappingURL=project-name-CEoM-OL4.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"project-name-CEoM-OL4.cjs","names":[],"sources":["../src/cli/commands/project/project-name.ts"],"sourcesContent":["// positional <name> を Project context より優先させるため、runWithContext が読む project フラグへ畳む。\nexport function projectNameOverride(\n args: Record<string, unknown>,\n): Record<string, unknown> {\n const name =\n typeof args.name === \"string\" && args.name !== \"\" ? args.name : undefined;\n return { ...args, project: name ?? args.project };\n}\n"],"mappings":";;AACA,SAAgB,oBACd,MACyB;CACzB,MAAM,OACJ,OAAO,KAAK,SAAS,YAAY,KAAK,SAAS,KAAK,KAAK,OAAO;CAClE,OAAO;EAAE,GAAG;EAAM,SAAS,QAAQ,KAAK;CAAQ;AAClD"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
//#region src/cli/commands/project/project-name.ts
|
|
2
|
+
function projectNameOverride(args) {
|
|
3
|
+
const name = typeof args.name === "string" && args.name !== "" ? args.name : void 0;
|
|
4
|
+
return {
|
|
5
|
+
...args,
|
|
6
|
+
project: name ?? args.project
|
|
7
|
+
};
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
//#endregion
|
|
11
|
+
export { projectNameOverride as t };
|
|
12
|
+
//# sourceMappingURL=project-name-DNMejnzZ.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"project-name-DNMejnzZ.mjs","names":[],"sources":["../src/cli/commands/project/project-name.ts"],"sourcesContent":["// positional <name> を Project context より優先させるため、runWithContext が読む project フラグへ畳む。\nexport function projectNameOverride(\n args: Record<string, unknown>,\n): Record<string, unknown> {\n const name =\n typeof args.name === \"string\" && args.name !== \"\" ? args.name : undefined;\n return { ...args, project: name ?? args.project };\n}\n"],"mappings":";AACA,SAAgB,oBACd,MACyB;CACzB,MAAM,OACJ,OAAO,KAAK,SAAS,YAAY,KAAK,SAAS,KAAK,KAAK,OAAO;CAClE,OAAO;EAAE,GAAG;EAAM,SAAS,QAAQ,KAAK;CAAQ;AAClD"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { t as defineCommand } from "./cli/main.mjs";
|
|
2
|
+
|
|
3
|
+
//#region src/cli/commands/project-user/index.ts
|
|
4
|
+
var project_user_default = defineCommand({
|
|
5
|
+
meta: {
|
|
6
|
+
name: "project-user",
|
|
7
|
+
description: "Manage project users (RBAC)"
|
|
8
|
+
},
|
|
9
|
+
subCommands: {
|
|
10
|
+
list: () => import("./list-DdJ05juK.mjs").then((m) => m.default),
|
|
11
|
+
get: () => import("./get-BtmzDaVn.mjs").then((m) => m.default),
|
|
12
|
+
invite: () => import("./invite-DsOCKGTJ.mjs").then((m) => m.default),
|
|
13
|
+
update: () => import("./update-8e3u4jKa.mjs").then((m) => m.default),
|
|
14
|
+
delete: () => import("./delete-DhSU-Lx2.mjs").then((m) => m.default)
|
|
15
|
+
}
|
|
16
|
+
});
|
|
17
|
+
|
|
18
|
+
//#endregion
|
|
19
|
+
export { project_user_default as default };
|
|
20
|
+
//# sourceMappingURL=project-user-9D7Ey_Fu.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"project-user-9D7Ey_Fu.mjs","names":[],"sources":["../src/cli/commands/project-user/index.ts"],"sourcesContent":["import { defineCommand } from \"../define-command.js\";\n\nexport default defineCommand({\n meta: {\n name: \"project-user\",\n description: \"Manage project users (RBAC)\",\n },\n subCommands: {\n list: () => import(\"./list.js\").then((m) => m.default),\n get: () => import(\"./get.js\").then((m) => m.default),\n invite: () => import(\"./invite.js\").then((m) => m.default),\n update: () => import(\"./update.js\").then((m) => m.default),\n delete: () => import(\"./delete.js\").then((m) => m.default),\n },\n});\n"],"mappings":";;;AAEA,2BAAe,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,cAAc,OAAO,wBAAc,CAAC,MAAM,MAAM,EAAE,OAAO;EACzD,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/project-user/index.ts
|
|
4
|
+
var project_user_default = require_cli_main.defineCommand({
|
|
5
|
+
meta: {
|
|
6
|
+
name: "project-user",
|
|
7
|
+
description: "Manage project users (RBAC)"
|
|
8
|
+
},
|
|
9
|
+
subCommands: {
|
|
10
|
+
list: () => Promise.resolve().then(() => require("./list-CYE9Exi3.cjs")).then((m) => m.default),
|
|
11
|
+
get: () => Promise.resolve().then(() => require("./get-CVV3h6HR.cjs")).then((m) => m.default),
|
|
12
|
+
invite: () => Promise.resolve().then(() => require("./invite-Dts9uNQL.cjs")).then((m) => m.default),
|
|
13
|
+
update: () => Promise.resolve().then(() => require("./update-Cktd0zXA.cjs")).then((m) => m.default),
|
|
14
|
+
delete: () => Promise.resolve().then(() => require("./delete-CCTiCYIL.cjs")).then((m) => m.default)
|
|
15
|
+
}
|
|
16
|
+
});
|
|
17
|
+
|
|
18
|
+
//#endregion
|
|
19
|
+
exports.default = project_user_default;
|
|
20
|
+
//# sourceMappingURL=project-user-DTPFjyfZ.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"project-user-DTPFjyfZ.cjs","names":["defineCommand"],"sources":["../src/cli/commands/project-user/index.ts"],"sourcesContent":["import { defineCommand } from \"../define-command.js\";\n\nexport default defineCommand({\n meta: {\n name: \"project-user\",\n description: \"Manage project users (RBAC)\",\n },\n subCommands: {\n list: () => import(\"./list.js\").then((m) => m.default),\n get: () => import(\"./get.js\").then((m) => m.default),\n invite: () => import(\"./invite.js\").then((m) => m.default),\n update: () => import(\"./update.js\").then((m) => m.default),\n delete: () => import(\"./delete.js\").then((m) => m.default),\n },\n});\n"],"mappings":";;;AAEA,2BAAeA,+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,mDAAc,0BAAsB,MAAM,MAAM,EAAE,OAAO;EACzD,mDAAc,0BAAsB,MAAM,MAAM,EAAE,OAAO;CAC3D;AACF,CAAC"}
|