@orizm/cli 3.0.0 → 3.1.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 (142) hide show
  1. package/dist/{bucket-6d3VNt1D.mjs → bucket-DqW-WEYb.mjs} +2 -2
  2. package/dist/{bucket-6d3VNt1D.mjs.map → bucket-DqW-WEYb.mjs.map} +1 -1
  3. package/dist/{bucket-DjbHz9_A.cjs → bucket-mg5QQORh.cjs} +2 -2
  4. package/dist/{bucket-DjbHz9_A.cjs.map → bucket-mg5QQORh.cjs.map} +1 -1
  5. package/dist/cli/main.cjs +8 -8
  6. package/dist/cli/main.d.mts +1 -1
  7. package/dist/cli/main.mjs +8 -8
  8. package/dist/config/index.d.mts +0 -1
  9. package/dist/config/index.d.mts.map +1 -1
  10. package/dist/{consumer-DqyRfpsl.mjs → consumer-C4WiGHWG.mjs} +2 -2
  11. package/dist/{consumer-DqyRfpsl.mjs.map → consumer-C4WiGHWG.mjs.map} +1 -1
  12. package/dist/{consumer-BBsH8b1j.cjs → consumer-l-8wUK8E.cjs} +2 -2
  13. package/dist/{consumer-BBsH8b1j.cjs.map → consumer-l-8wUK8E.cjs.map} +1 -1
  14. package/dist/{content-BsoRmjis.mjs → content-BOb6NC8M.mjs} +4 -4
  15. package/dist/{content-BsoRmjis.mjs.map → content-BOb6NC8M.mjs.map} +1 -1
  16. package/dist/{content-Y-2Y0cyn.cjs → content-DMjSwor1.cjs} +4 -4
  17. package/dist/{content-Y-2Y0cyn.cjs.map → content-DMjSwor1.cjs.map} +1 -1
  18. package/dist/{create-CkFBiEDH.mjs → create-B1ZBOqcV.mjs} +2 -2
  19. package/dist/{create-CkFBiEDH.mjs.map → create-B1ZBOqcV.mjs.map} +1 -1
  20. package/dist/{create-RLyp_dl6.mjs → create-Belwettw.mjs} +2 -2
  21. package/dist/{create-RLyp_dl6.mjs.map → create-Belwettw.mjs.map} +1 -1
  22. package/dist/{create-CykRHseR.cjs → create-CCsn7yp5.cjs} +4 -4
  23. package/dist/{create-CykRHseR.cjs.map → create-CCsn7yp5.cjs.map} +1 -1
  24. package/dist/{create--1NYduI_.cjs → create-CmOriwGo.cjs} +2 -2
  25. package/dist/{create--1NYduI_.cjs.map → create-CmOriwGo.cjs.map} +1 -1
  26. package/dist/{create-BqlxdhcR.mjs → create-D5suBd3J.mjs} +4 -4
  27. package/dist/{create-BqlxdhcR.mjs.map → create-D5suBd3J.mjs.map} +1 -1
  28. package/dist/{create-B_gsZCL-.cjs → create-DJY71sp9.cjs} +2 -2
  29. package/dist/{create-B_gsZCL-.cjs.map → create-DJY71sp9.cjs.map} +1 -1
  30. package/dist/{delete-CrOVRvMo.cjs → delete-D4r1ve4v.cjs} +2 -2
  31. package/dist/{delete-CrOVRvMo.cjs.map → delete-D4r1ve4v.cjs.map} +1 -1
  32. package/dist/{delete-Bx2oNROv.cjs → delete-DVrafka1.cjs} +2 -2
  33. package/dist/{delete-Bx2oNROv.cjs.map → delete-DVrafka1.cjs.map} +1 -1
  34. package/dist/{delete-CGW0VMK6.cjs → delete-WpMIIvjj.cjs} +2 -2
  35. package/dist/{delete-CGW0VMK6.cjs.map → delete-WpMIIvjj.cjs.map} +1 -1
  36. package/dist/{delete-BenBNL2p.mjs → delete-XWJRhBFs.mjs} +2 -2
  37. package/dist/{delete-BenBNL2p.mjs.map → delete-XWJRhBFs.mjs.map} +1 -1
  38. package/dist/{delete-DehKYCXh.mjs → delete-YYh_0khQ.mjs} +2 -2
  39. package/dist/{delete-DehKYCXh.mjs.map → delete-YYh_0khQ.mjs.map} +1 -1
  40. package/dist/{delete-CSSd0gmt.mjs → delete-ZIifaG0i.mjs} +2 -2
  41. package/dist/{delete-CSSd0gmt.mjs.map → delete-ZIifaG0i.mjs.map} +1 -1
  42. package/dist/{get-DPGx1zU4.mjs → get-B6vBaq_D.mjs} +4 -3
  43. package/dist/get-B6vBaq_D.mjs.map +1 -0
  44. package/dist/{get-BtmzDaVn.mjs → get-C7dKoSIc.mjs} +2 -2
  45. package/dist/{get-BtmzDaVn.mjs.map → get-C7dKoSIc.mjs.map} +1 -1
  46. package/dist/{get-CVV3h6HR.cjs → get-DjRyK0hJ.cjs} +2 -2
  47. package/dist/{get-CVV3h6HR.cjs.map → get-DjRyK0hJ.cjs.map} +1 -1
  48. package/dist/{get-BHniACk5.cjs → get-DwtzBjGV.cjs} +4 -3
  49. package/dist/get-DwtzBjGV.cjs.map +1 -0
  50. package/dist/{group-roles-BEEzLxPX.mjs → group-roles-BIH7q8tf.mjs} +2 -2
  51. package/dist/{group-roles-BEEzLxPX.mjs.map → group-roles-BIH7q8tf.mjs.map} +1 -1
  52. package/dist/{group-roles-Bl_mEodO.cjs → group-roles-B_iAZog-.cjs} +2 -2
  53. package/dist/{group-roles-Bl_mEodO.cjs.map → group-roles-B_iAZog-.cjs.map} +1 -1
  54. package/dist/{invite-DsOCKGTJ.mjs → invite-D66DSMvq.mjs} +3 -3
  55. package/dist/{invite-DsOCKGTJ.mjs.map → invite-D66DSMvq.mjs.map} +1 -1
  56. package/dist/{invite-Dts9uNQL.cjs → invite-DPygtCoO.cjs} +3 -3
  57. package/dist/{invite-Dts9uNQL.cjs.map → invite-DPygtCoO.cjs.map} +1 -1
  58. package/dist/{key-BogfSiz_.mjs → key-C71Ffll9.mjs} +3 -3
  59. package/dist/{key-BogfSiz_.mjs.map → key-C71Ffll9.mjs.map} +1 -1
  60. package/dist/{key-Czwiu2pW.cjs → key-DQr7qRL2.cjs} +3 -3
  61. package/dist/{key-Czwiu2pW.cjs.map → key-DQr7qRL2.cjs.map} +1 -1
  62. package/dist/{list-CxHDoXjv.mjs → list-B0N4-Q-5.mjs} +2 -2
  63. package/dist/{list-CxHDoXjv.mjs.map → list-B0N4-Q-5.mjs.map} +1 -1
  64. package/dist/{list-2BpPj4Z0.cjs → list-BHvURTWd.cjs} +2 -2
  65. package/dist/{list-2BpPj4Z0.cjs.map → list-BHvURTWd.cjs.map} +1 -1
  66. package/dist/{list-DRKF2uKW.cjs → list-Br6Cmi9S.cjs} +2 -2
  67. package/dist/{list-DRKF2uKW.cjs.map → list-Br6Cmi9S.cjs.map} +1 -1
  68. package/dist/{list-syVDGkVR.mjs → list-BsYYq9wT.mjs} +2 -2
  69. package/dist/{list-syVDGkVR.mjs.map → list-BsYYq9wT.mjs.map} +1 -1
  70. package/dist/{list-CJuefq_I.cjs → list-BzLraBnA.cjs} +2 -2
  71. package/dist/{list-CJuefq_I.cjs.map → list-BzLraBnA.cjs.map} +1 -1
  72. package/dist/{list-V3W6hvOa.cjs → list-CFwW0G9f.cjs} +2 -2
  73. package/dist/{list-V3W6hvOa.cjs.map → list-CFwW0G9f.cjs.map} +1 -1
  74. package/dist/{list-60NcDr0q.cjs → list-CU42ERNY.cjs} +2 -2
  75. package/dist/{list-60NcDr0q.cjs.map → list-CU42ERNY.cjs.map} +1 -1
  76. package/dist/{list-CYE9Exi3.cjs → list-DexBclfb.cjs} +3 -3
  77. package/dist/{list-CYE9Exi3.cjs.map → list-DexBclfb.cjs.map} +1 -1
  78. package/dist/{list-DdJ05juK.mjs → list-DrZYlidZ.mjs} +3 -3
  79. package/dist/{list-DdJ05juK.mjs.map → list-DrZYlidZ.mjs.map} +1 -1
  80. package/dist/{list-D24J_Qbm.mjs → list-ocfd7631.mjs} +2 -2
  81. package/dist/{list-D24J_Qbm.mjs.map → list-ocfd7631.mjs.map} +1 -1
  82. package/dist/{list-yQZLzkC7.mjs → list-sQk00GV5.mjs} +2 -2
  83. package/dist/{list-yQZLzkC7.mjs.map → list-sQk00GV5.mjs.map} +1 -1
  84. package/dist/{list-CfIeReBx.mjs → list-vbMaOiza.mjs} +2 -2
  85. package/dist/{list-CfIeReBx.mjs.map → list-vbMaOiza.mjs.map} +1 -1
  86. package/dist/{management-DHXxdCra.cjs → management-BGYcZB4c.cjs} +5 -5
  87. package/dist/{management-DHXxdCra.cjs.map → management-BGYcZB4c.cjs.map} +1 -1
  88. package/dist/{management-BaN1Nynl.mjs → management-DDACMgbU.mjs} +5 -5
  89. package/dist/{management-BaN1Nynl.mjs.map → management-DDACMgbU.mjs.map} +1 -1
  90. package/dist/{object-DT7UEW9G.cjs → object-DVqidsEc.cjs} +2 -2
  91. package/dist/{object-DT7UEW9G.cjs.map → object-DVqidsEc.cjs.map} +1 -1
  92. package/dist/{object-BfUf8Y6w.mjs → object-qdBdEghr.mjs} +2 -2
  93. package/dist/{object-BfUf8Y6w.mjs.map → object-qdBdEghr.mjs.map} +1 -1
  94. package/dist/{parse-BeO2IwfI.cjs → parse-C8oHgQXx.cjs} +2 -2
  95. package/dist/{parse-BeO2IwfI.cjs.map → parse-C8oHgQXx.cjs.map} +1 -1
  96. package/dist/{parse-CA5fBB3x.mjs → parse-DA0k5AHa.mjs} +2 -2
  97. package/dist/{parse-CA5fBB3x.mjs.map → parse-DA0k5AHa.mjs.map} +1 -1
  98. package/dist/{project-CNr9xMny.cjs → project-BX7zvWB1.cjs} +2 -2
  99. package/dist/{project-CNr9xMny.cjs.map → project-BX7zvWB1.cjs.map} +1 -1
  100. package/dist/{project-DFoHcXi5.mjs → project-CaXD3QBs.mjs} +2 -2
  101. package/dist/{project-DFoHcXi5.mjs.map → project-CaXD3QBs.mjs.map} +1 -1
  102. package/dist/{project-user-9D7Ey_Fu.mjs → project-user-Cp7i6orv.mjs} +5 -5
  103. package/dist/{project-user-9D7Ey_Fu.mjs.map → project-user-Cp7i6orv.mjs.map} +1 -1
  104. package/dist/{project-user-DTPFjyfZ.cjs → project-user-Dm0qR-sh.cjs} +5 -5
  105. package/dist/{project-user-DTPFjyfZ.cjs.map → project-user-Dm0qR-sh.cjs.map} +1 -1
  106. package/dist/{schema-DdhyEh81.cjs → schema-B3iRqvYK.cjs} +2 -2
  107. package/dist/{schema-DdhyEh81.cjs.map → schema-B3iRqvYK.cjs.map} +1 -1
  108. package/dist/{schema-DDzrgjkT.mjs → schema-exG250MU.mjs} +2 -2
  109. package/dist/{schema-DDzrgjkT.mjs.map → schema-exG250MU.mjs.map} +1 -1
  110. package/dist/{table-event-C16cp9nq.mjs → table-event-C7gORNlb.mjs} +2 -2
  111. package/dist/{table-event-C16cp9nq.mjs.map → table-event-C7gORNlb.mjs.map} +1 -1
  112. package/dist/{table-event-D7PPuS7E.cjs → table-event-DXkCK29f.cjs} +2 -2
  113. package/dist/{table-event-D7PPuS7E.cjs.map → table-event-DXkCK29f.cjs.map} +1 -1
  114. package/dist/{update-8e3u4jKa.mjs → update-B4lv4dAz.mjs} +3 -3
  115. package/dist/{update-8e3u4jKa.mjs.map → update-B4lv4dAz.mjs.map} +1 -1
  116. package/dist/{update-Cktd0zXA.cjs → update-CIH6sSVk.cjs} +3 -3
  117. package/dist/{update-Cktd0zXA.cjs.map → update-CIH6sSVk.cjs.map} +1 -1
  118. package/dist/{update-ap5Qv1Yl.cjs → update-CJgEmSWJ.cjs} +4 -4
  119. package/dist/{update-ap5Qv1Yl.cjs.map → update-CJgEmSWJ.cjs.map} +1 -1
  120. package/dist/{update-CSiOfiPL.mjs → update-CQ4n4Xuf.mjs} +3 -3
  121. package/dist/{update-CSiOfiPL.mjs.map → update-CQ4n4Xuf.mjs.map} +1 -1
  122. package/dist/{update-OWC5K8Ne.cjs → update-Cx_2GkQj.cjs} +2 -2
  123. package/dist/{update-OWC5K8Ne.cjs.map → update-Cx_2GkQj.cjs.map} +1 -1
  124. package/dist/{update-D-X32BVW.cjs → update-DRnN1kiu.cjs} +3 -3
  125. package/dist/{update-D-X32BVW.cjs.map → update-DRnN1kiu.cjs.map} +1 -1
  126. package/dist/{update-CDLviRuu.cjs → update-Do9HHWzs.cjs} +2 -2
  127. package/dist/{update-CDLviRuu.cjs.map → update-Do9HHWzs.cjs.map} +1 -1
  128. package/dist/{update-DfYV_TQb.mjs → update-Dyo4vuZs.mjs} +4 -4
  129. package/dist/{update-DfYV_TQb.mjs.map → update-Dyo4vuZs.mjs.map} +1 -1
  130. package/dist/{update-yscrx6WQ.mjs → update-mEmULIau.mjs} +2 -2
  131. package/dist/{update-yscrx6WQ.mjs.map → update-mEmULIau.mjs.map} +1 -1
  132. package/dist/{update-CjbcI8Qc.mjs → update-rzij1b_o.mjs} +2 -2
  133. package/dist/{update-CjbcI8Qc.mjs.map → update-rzij1b_o.mjs.map} +1 -1
  134. package/dist/webhook-CbL4QaR5.cjs +20 -0
  135. package/dist/{webhook-BsygMMf-.cjs.map → webhook-CbL4QaR5.cjs.map} +1 -1
  136. package/dist/webhook-CpZ1-Ho5.mjs +20 -0
  137. package/dist/{webhook-3zs6Ulxd.mjs.map → webhook-CpZ1-Ho5.mjs.map} +1 -1
  138. package/package.json +15 -15
  139. package/dist/get-BHniACk5.cjs.map +0 -1
  140. package/dist/get-DPGx1zU4.mjs.map +0 -1
  141. package/dist/webhook-3zs6Ulxd.mjs +0 -20
  142. package/dist/webhook-BsygMMf-.cjs +0 -20
@@ -1 +1 @@
1
- {"version":3,"file":"list-syVDGkVR.mjs","names":[],"sources":["../src/cli/commands/webhook/list.ts"],"sourcesContent":["import type { ArgsDef } from \"citty\";\nimport { Result } from \"@praha/byethrow\";\nimport {\n defineCommand,\n type CommandFailure,\n type CommandOutput,\n} from \"../define-command.js\";\nimport { contextArgs } from \"../shared.js\";\nimport { runWithContext, type CommandContext } from \"../run-with-context.js\";\nimport { apiErrorFailure } from \"../api-errors.js\";\nimport { toResult } from \"../../api/errors.js\";\nimport { getOutputState } from \"../../ui/output.js\";\nimport { renderTable } from \"../../ui/table.js\";\nimport { formatTableEvents } from \"./table-event.js\";\n\nexport async function webhookListHandler(\n ctx: CommandContext,\n): Promise<Result.Result<CommandOutput | undefined, CommandFailure>> {\n const webhooks = toResult(\n await ctx.client.GET(\"/projects/{projectName}/webhooks\", {\n params: { path: { projectName: ctx.projectName } },\n }),\n );\n if (Result.isFailure(webhooks)) return apiErrorFailure(webhooks.error);\n\n const value = webhooks.value;\n return Result.succeed({\n json: value,\n text: () =>\n renderTable(\n [\"ID\", \"NAME\", \"URL\", \"TABLE EVENTS\"],\n value.map((webhook) => ({\n cells: [\n String(webhook.id),\n webhook.name,\n webhook.url,\n formatTableEvents(webhook.tableEvents),\n ],\n })),\n getOutputState().color,\n ),\n });\n}\n\nconst listArgs = {\n ...contextArgs,\n} satisfies ArgsDef;\n\nexport default defineCommand({\n meta: {\n name: \"list\",\n description: \"List webhooks\",\n },\n args: listArgs,\n run: ({ args }) => runWithContext(args, (ctx) => webhookListHandler(ctx)),\n});\n"],"mappings":";;;;;;;;AAeA,eAAsB,mBACpB,KACmE;CACnE,MAAM,WAAW,SACf,MAAM,IAAI,OAAO,IAAI,oCAAoC,EACvD,QAAQ,EAAE,MAAM,EAAE,aAAa,IAAI,YAAY,EAAE,EACnD,CAAC,CACH;CACA,IAAI,OAAO,UAAU,QAAQ,GAAG,OAAO,gBAAgB,SAAS,KAAK;CAErE,MAAM,QAAQ,SAAS;CACvB,OAAO,OAAO,QAAQ;EACpB,MAAM;EACN,YACE,YACE;GAAC;GAAM;GAAQ;GAAO;EAAc,GACpC,MAAM,KAAK,aAAa,EACtB,OAAO;GACL,OAAO,QAAQ,EAAE;GACjB,QAAQ;GACR,QAAQ;GACR,kBAAkB,QAAQ,WAAW;EACvC,EACF,EAAE,GACF,eAAe,CAAC,CAAC,KACnB;CACJ,CAAC;AACH;AAEA,MAAM,WAAW,EACf,GAAG,YACL;AAEA,mBAAe,cAAc;CAC3B,MAAM;EACJ,MAAM;EACN,aAAa;CACf;CACA,MAAM;CACN,MAAM,EAAE,WAAW,eAAe,OAAO,QAAQ,mBAAmB,GAAG,CAAC;AAC1E,CAAC"}
1
+ {"version":3,"file":"list-BsYYq9wT.mjs","names":[],"sources":["../src/cli/commands/webhook/list.ts"],"sourcesContent":["import type { ArgsDef } from \"citty\";\nimport { Result } from \"@praha/byethrow\";\nimport {\n defineCommand,\n type CommandFailure,\n type CommandOutput,\n} from \"../define-command.js\";\nimport { contextArgs } from \"../shared.js\";\nimport { runWithContext, type CommandContext } from \"../run-with-context.js\";\nimport { apiErrorFailure } from \"../api-errors.js\";\nimport { toResult } from \"../../api/errors.js\";\nimport { getOutputState } from \"../../ui/output.js\";\nimport { renderTable } from \"../../ui/table.js\";\nimport { formatTableEvents } from \"./table-event.js\";\n\nexport async function webhookListHandler(\n ctx: CommandContext,\n): Promise<Result.Result<CommandOutput | undefined, CommandFailure>> {\n const webhooks = toResult(\n await ctx.client.GET(\"/projects/{projectName}/webhooks\", {\n params: { path: { projectName: ctx.projectName } },\n }),\n );\n if (Result.isFailure(webhooks)) return apiErrorFailure(webhooks.error);\n\n const value = webhooks.value;\n return Result.succeed({\n json: value,\n text: () =>\n renderTable(\n [\"ID\", \"NAME\", \"URL\", \"TABLE EVENTS\"],\n value.map((webhook) => ({\n cells: [\n String(webhook.id),\n webhook.name,\n webhook.url,\n formatTableEvents(webhook.tableEvents),\n ],\n })),\n getOutputState().color,\n ),\n });\n}\n\nconst listArgs = {\n ...contextArgs,\n} satisfies ArgsDef;\n\nexport default defineCommand({\n meta: {\n name: \"list\",\n description: \"List webhooks\",\n },\n args: listArgs,\n run: ({ args }) => runWithContext(args, (ctx) => webhookListHandler(ctx)),\n});\n"],"mappings":";;;;;;;;AAeA,eAAsB,mBACpB,KACmE;CACnE,MAAM,WAAW,SACf,MAAM,IAAI,OAAO,IAAI,oCAAoC,EACvD,QAAQ,EAAE,MAAM,EAAE,aAAa,IAAI,YAAY,EAAE,EACnD,CAAC,CACH;CACA,IAAI,OAAO,UAAU,QAAQ,GAAG,OAAO,gBAAgB,SAAS,KAAK;CAErE,MAAM,QAAQ,SAAS;CACvB,OAAO,OAAO,QAAQ;EACpB,MAAM;EACN,YACE,YACE;GAAC;GAAM;GAAQ;GAAO;EAAc,GACpC,MAAM,KAAK,aAAa,EACtB,OAAO;GACL,OAAO,QAAQ,EAAE;GACjB,QAAQ;GACR,QAAQ;GACR,kBAAkB,QAAQ,WAAW;EACvC,EACF,EAAE,GACF,eAAe,CAAC,CAAC,KACnB;CACJ,CAAC;AACH;AAEA,MAAM,WAAW,EACf,GAAG,YACL;AAEA,mBAAe,cAAc;CAC3B,MAAM;EACJ,MAAM;EACN,aAAa;CACf;CACA,MAAM;CACN,MAAM,EAAE,WAAW,eAAe,OAAO,QAAQ,mBAAmB,GAAG,CAAC;AAC1E,CAAC"}
@@ -2,7 +2,7 @@ const require_cli_main = require('./cli/main.cjs');
2
2
  const require_shared = require('./shared-DHRPzzKl.cjs');
3
3
  const require_run_with_context = require('./run-with-context-DJNnEigg.cjs');
4
4
  const require_table = require('./table-C74eOSh8.cjs');
5
- const require_parse = require('./parse-BeO2IwfI.cjs');
5
+ const require_parse = require('./parse-C8oHgQXx.cjs');
6
6
  let _praha_byethrow = require("@praha/byethrow");
7
7
 
8
8
  //#region src/cli/commands/bucket/object/list.ts
@@ -79,4 +79,4 @@ var list_default = require_cli_main.defineCommand({
79
79
 
80
80
  //#endregion
81
81
  exports.default = list_default;
82
- //# sourceMappingURL=list-CJuefq_I.cjs.map
82
+ //# sourceMappingURL=list-BzLraBnA.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"list-CJuefq_I.cjs","names":["toResult","Result","apiErrorFailure","renderTable","getOutputState","contextArgs","defineCommand","parseIntegerChoice","runWithContext"],"sources":["../src/cli/commands/bucket/object/list.ts"],"sourcesContent":["import type { ArgsDef } from \"citty\";\nimport { Result } from \"@praha/byethrow\";\nimport {\n defineCommand,\n type CommandFailure,\n type CommandOutput,\n} from \"../../define-command.js\";\nimport { contextArgs } from \"../../shared.js\";\nimport { runWithContext, type CommandContext } from \"../../run-with-context.js\";\nimport { apiErrorFailure } from \"../../api-errors.js\";\nimport { toResult } from \"../../../api/errors.js\";\nimport { getOutputState } from \"../../../ui/output.js\";\nimport { renderTable } from \"../../../ui/table.js\";\nimport { parseIntegerChoice } from \"../../parse.js\";\n\nexport async function bucketObjectListHandler(\n ctx: CommandContext,\n options: { bucket: string; limit: number; cursor?: string },\n): Promise<Result.Result<CommandOutput | undefined, CommandFailure>> {\n const objects = toResult(\n await ctx.client.GET(\n \"/projects/{projectName}/buckets/{bucketName}/objects\",\n {\n params: {\n path: { projectName: ctx.projectName, bucketName: options.bucket },\n query: {\n limit: options.limit,\n ...(options.cursor !== undefined ? { cursor: options.cursor } : {}),\n },\n },\n },\n ),\n );\n if (Result.isFailure(objects)) return apiErrorFailure(objects.error);\n\n const value = objects.value;\n return Result.succeed({\n json: value,\n text: () => {\n const table = renderTable(\n [\"KEY\", \"ORIGINAL FILENAME\", \"SIZE\", \"TYPE\", \"CREATED AT\"],\n value.objects.map((object) => ({\n cells: [\n object.key,\n object.originalFilename,\n String(object.size),\n object.type,\n object.createdAt,\n ],\n })),\n getOutputState().color,\n );\n return value.pagination.nextCursor === null\n ? table\n : `${table}\\nNext cursor: ${value.pagination.nextCursor}`;\n },\n });\n}\n\nconst listArgs = {\n ...contextArgs,\n bucket: {\n type: \"positional\",\n required: true,\n description: \"Bucket name\",\n },\n limit: {\n type: \"string\",\n description: \"Max number of objects to return (50, 100, or 200)\",\n default: \"100\",\n },\n cursor: {\n type: \"string\",\n description: \"Cursor returned by the previous page\",\n },\n} satisfies ArgsDef;\n\nexport default defineCommand({\n meta: {\n name: \"list\",\n description: \"List objects in a bucket\",\n },\n args: listArgs,\n run: async ({ args }) => {\n const limit = parseIntegerChoice(\"limit\", args.limit, [50, 100, 200]);\n if (Result.isFailure(limit)) return limit;\n\n return runWithContext(args, (ctx) =>\n bucketObjectListHandler(ctx, {\n bucket: args.bucket,\n limit: limit.value,\n cursor: typeof args.cursor === \"string\" ? args.cursor : undefined,\n }),\n );\n },\n});\n"],"mappings":";;;;;;;;AAeA,eAAsB,wBACpB,KACA,SACmE;CACnE,MAAM,UAAUA,kCACd,MAAM,IAAI,OAAO,IACf,wDACA,EACE,QAAQ;EACN,MAAM;GAAE,aAAa,IAAI;GAAa,YAAY,QAAQ;EAAO;EACjE,OAAO;GACL,OAAO,QAAQ;GACf,GAAI,QAAQ,WAAW,SAAY,EAAE,QAAQ,QAAQ,OAAO,IAAI,CAAC;EACnE;CACF,EACF,CACF,CACF;CACA,IAAIC,uBAAO,UAAU,OAAO,GAAG,OAAOC,yCAAgB,QAAQ,KAAK;CAEnE,MAAM,QAAQ,QAAQ;CACtB,OAAOD,uBAAO,QAAQ;EACpB,MAAM;EACN,YAAY;GACV,MAAM,QAAQE,0BACZ;IAAC;IAAO;IAAqB;IAAQ;IAAQ;GAAY,GACzD,MAAM,QAAQ,KAAK,YAAY,EAC7B,OAAO;IACL,OAAO;IACP,OAAO;IACP,OAAO,OAAO,IAAI;IAClB,OAAO;IACP,OAAO;GACT,EACF,EAAE,GACFC,gCAAe,CAAC,CAAC,KACnB;GACA,OAAO,MAAM,WAAW,eAAe,OACnC,QACA,GAAG,MAAM,iBAAiB,MAAM,WAAW;EACjD;CACF,CAAC;AACH;AAEA,MAAM,WAAW;CACf,GAAGC;CACH,QAAQ;EACN,MAAM;EACN,UAAU;EACV,aAAa;CACf;CACA,OAAO;EACL,MAAM;EACN,aAAa;EACb,SAAS;CACX;CACA,QAAQ;EACN,MAAM;EACN,aAAa;CACf;AACF;AAEA,mBAAeC,+BAAc;CAC3B,MAAM;EACJ,MAAM;EACN,aAAa;CACf;CACA,MAAM;CACN,KAAK,OAAO,EAAE,WAAW;EACvB,MAAM,QAAQC,iCAAmB,SAAS,KAAK,OAAO;GAAC;GAAI;GAAK;EAAG,CAAC;EACpE,IAAIN,uBAAO,UAAU,KAAK,GAAG,OAAO;EAEpC,OAAOO,wCAAe,OAAO,QAC3B,wBAAwB,KAAK;GAC3B,QAAQ,KAAK;GACb,OAAO,MAAM;GACb,QAAQ,OAAO,KAAK,WAAW,WAAW,KAAK,SAAS;EAC1D,CAAC,CACH;CACF;AACF,CAAC"}
1
+ {"version":3,"file":"list-BzLraBnA.cjs","names":["toResult","Result","apiErrorFailure","renderTable","getOutputState","contextArgs","defineCommand","parseIntegerChoice","runWithContext"],"sources":["../src/cli/commands/bucket/object/list.ts"],"sourcesContent":["import type { ArgsDef } from \"citty\";\nimport { Result } from \"@praha/byethrow\";\nimport {\n defineCommand,\n type CommandFailure,\n type CommandOutput,\n} from \"../../define-command.js\";\nimport { contextArgs } from \"../../shared.js\";\nimport { runWithContext, type CommandContext } from \"../../run-with-context.js\";\nimport { apiErrorFailure } from \"../../api-errors.js\";\nimport { toResult } from \"../../../api/errors.js\";\nimport { getOutputState } from \"../../../ui/output.js\";\nimport { renderTable } from \"../../../ui/table.js\";\nimport { parseIntegerChoice } from \"../../parse.js\";\n\nexport async function bucketObjectListHandler(\n ctx: CommandContext,\n options: { bucket: string; limit: number; cursor?: string },\n): Promise<Result.Result<CommandOutput | undefined, CommandFailure>> {\n const objects = toResult(\n await ctx.client.GET(\n \"/projects/{projectName}/buckets/{bucketName}/objects\",\n {\n params: {\n path: { projectName: ctx.projectName, bucketName: options.bucket },\n query: {\n limit: options.limit,\n ...(options.cursor !== undefined ? { cursor: options.cursor } : {}),\n },\n },\n },\n ),\n );\n if (Result.isFailure(objects)) return apiErrorFailure(objects.error);\n\n const value = objects.value;\n return Result.succeed({\n json: value,\n text: () => {\n const table = renderTable(\n [\"KEY\", \"ORIGINAL FILENAME\", \"SIZE\", \"TYPE\", \"CREATED AT\"],\n value.objects.map((object) => ({\n cells: [\n object.key,\n object.originalFilename,\n String(object.size),\n object.type,\n object.createdAt,\n ],\n })),\n getOutputState().color,\n );\n return value.pagination.nextCursor === null\n ? table\n : `${table}\\nNext cursor: ${value.pagination.nextCursor}`;\n },\n });\n}\n\nconst listArgs = {\n ...contextArgs,\n bucket: {\n type: \"positional\",\n required: true,\n description: \"Bucket name\",\n },\n limit: {\n type: \"string\",\n description: \"Max number of objects to return (50, 100, or 200)\",\n default: \"100\",\n },\n cursor: {\n type: \"string\",\n description: \"Cursor returned by the previous page\",\n },\n} satisfies ArgsDef;\n\nexport default defineCommand({\n meta: {\n name: \"list\",\n description: \"List objects in a bucket\",\n },\n args: listArgs,\n run: async ({ args }) => {\n const limit = parseIntegerChoice(\"limit\", args.limit, [50, 100, 200]);\n if (Result.isFailure(limit)) return limit;\n\n return runWithContext(args, (ctx) =>\n bucketObjectListHandler(ctx, {\n bucket: args.bucket,\n limit: limit.value,\n cursor: typeof args.cursor === \"string\" ? args.cursor : undefined,\n }),\n );\n },\n});\n"],"mappings":";;;;;;;;AAeA,eAAsB,wBACpB,KACA,SACmE;CACnE,MAAM,UAAUA,kCACd,MAAM,IAAI,OAAO,IACf,wDACA,EACE,QAAQ;EACN,MAAM;GAAE,aAAa,IAAI;GAAa,YAAY,QAAQ;EAAO;EACjE,OAAO;GACL,OAAO,QAAQ;GACf,GAAI,QAAQ,WAAW,SAAY,EAAE,QAAQ,QAAQ,OAAO,IAAI,CAAC;EACnE;CACF,EACF,CACF,CACF;CACA,IAAIC,uBAAO,UAAU,OAAO,GAAG,OAAOC,yCAAgB,QAAQ,KAAK;CAEnE,MAAM,QAAQ,QAAQ;CACtB,OAAOD,uBAAO,QAAQ;EACpB,MAAM;EACN,YAAY;GACV,MAAM,QAAQE,0BACZ;IAAC;IAAO;IAAqB;IAAQ;IAAQ;GAAY,GACzD,MAAM,QAAQ,KAAK,YAAY,EAC7B,OAAO;IACL,OAAO;IACP,OAAO;IACP,OAAO,OAAO,IAAI;IAClB,OAAO;IACP,OAAO;GACT,EACF,EAAE,GACFC,gCAAe,CAAC,CAAC,KACnB;GACA,OAAO,MAAM,WAAW,eAAe,OACnC,QACA,GAAG,MAAM,iBAAiB,MAAM,WAAW;EACjD;CACF,CAAC;AACH;AAEA,MAAM,WAAW;CACf,GAAGC;CACH,QAAQ;EACN,MAAM;EACN,UAAU;EACV,aAAa;CACf;CACA,OAAO;EACL,MAAM;EACN,aAAa;EACb,SAAS;CACX;CACA,QAAQ;EACN,MAAM;EACN,aAAa;CACf;AACF;AAEA,mBAAeC,+BAAc;CAC3B,MAAM;EACJ,MAAM;EACN,aAAa;CACf;CACA,MAAM;CACN,KAAK,OAAO,EAAE,WAAW;EACvB,MAAM,QAAQC,iCAAmB,SAAS,KAAK,OAAO;GAAC;GAAI;GAAK;EAAG,CAAC;EACpE,IAAIN,uBAAO,UAAU,KAAK,GAAG,OAAO;EAEpC,OAAOO,wCAAe,OAAO,QAC3B,wBAAwB,KAAK;GAC3B,QAAQ,KAAK;GACb,OAAO,MAAM;GACb,QAAQ,OAAO,KAAK,WAAW,WAAW,KAAK,SAAS;EAC1D,CAAC,CACH;CACF;AACF,CAAC"}
@@ -3,7 +3,7 @@ const require_shared = require('./shared-DHRPzzKl.cjs');
3
3
  const require_run_with_context = require('./run-with-context-DJNnEigg.cjs');
4
4
  const require_table = require('./table-C74eOSh8.cjs');
5
5
  const require_mask = require('./mask-CqYLib9p.cjs');
6
- const require_group_roles = require('./group-roles-Bl_mEodO.cjs');
6
+ const require_group_roles = require('./group-roles-B_iAZog-.cjs');
7
7
  let _praha_byethrow = require("@praha/byethrow");
8
8
 
9
9
  //#region src/cli/commands/key/management/list.ts
@@ -46,4 +46,4 @@ var list_default = require_cli_main.defineCommand({
46
46
 
47
47
  //#endregion
48
48
  exports.default = list_default;
49
- //# sourceMappingURL=list-V3W6hvOa.cjs.map
49
+ //# sourceMappingURL=list-CFwW0G9f.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"list-V3W6hvOa.cjs","names":["toResult","Result","apiErrorFailure","maskManagementKey","renderTable","formatGroupRoles","getOutputState","contextArgs","showKeyArg","defineCommand","runWithContext"],"sources":["../src/cli/commands/key/management/list.ts"],"sourcesContent":["import type { ArgsDef } from \"citty\";\nimport { Result } from \"@praha/byethrow\";\nimport {\n defineCommand,\n type CommandFailure,\n type CommandOutput,\n} from \"../../define-command.js\";\nimport { contextArgs } from \"../../shared.js\";\nimport { runWithContext, type CommandContext } from \"../../run-with-context.js\";\nimport { apiErrorFailure } from \"../../api-errors.js\";\nimport { toResult } from \"../../../api/errors.js\";\nimport { getOutputState } from \"../../../ui/output.js\";\nimport { renderTable } from \"../../../ui/table.js\";\nimport { formatGroupRoles } from \"../../group-roles.js\";\nimport { maskManagementKey, showKeyArg } from \"../mask.js\";\n\nexport async function keyManagementListHandler(\n ctx: CommandContext,\n options: { showKey: boolean },\n): Promise<Result.Result<CommandOutput | undefined, CommandFailure>> {\n const keys = toResult(\n await ctx.client.GET(\"/projects/{projectName}/management-keys\", {\n params: { path: { projectName: ctx.projectName } },\n }),\n );\n if (Result.isFailure(keys)) return apiErrorFailure(keys.error);\n\n // --json でもマスクを効かせるため、表示用データ自体を書き換える\n const value = keys.value.map((item) =>\n options.showKey ? item : { ...item, key: maskManagementKey(item.key) },\n );\n return Result.succeed({\n json: value,\n text: () =>\n renderTable(\n [\"ID\", \"KEY\", \"DESCRIPTION\", \"GROUP ROLES\", \"CREATED AT\"],\n value.map((item) => ({\n cells: [\n String(item.id),\n item.key,\n item.description,\n formatGroupRoles(item.groupRoles),\n item.createdAt,\n ],\n })),\n getOutputState().color,\n ),\n });\n}\n\nconst listArgs = {\n ...contextArgs,\n ...showKeyArg,\n} satisfies ArgsDef;\n\nexport default defineCommand({\n meta: {\n name: \"list\",\n description: \"List management keys\",\n },\n args: listArgs,\n run: ({ args }) =>\n runWithContext(args, (ctx) =>\n keyManagementListHandler(ctx, { showKey: args[\"show-key\"] === true }),\n ),\n});\n"],"mappings":";;;;;;;;;AAgBA,eAAsB,yBACpB,KACA,SACmE;CACnE,MAAM,OAAOA,kCACX,MAAM,IAAI,OAAO,IAAI,2CAA2C,EAC9D,QAAQ,EAAE,MAAM,EAAE,aAAa,IAAI,YAAY,EAAE,EACnD,CAAC,CACH;CACA,IAAIC,uBAAO,UAAU,IAAI,GAAG,OAAOC,yCAAgB,KAAK,KAAK;CAG7D,MAAM,QAAQ,KAAK,MAAM,KAAK,SAC5B,QAAQ,UAAU,OAAO;EAAE,GAAG;EAAM,KAAKC,+BAAkB,KAAK,GAAG;CAAE,CACvE;CACA,OAAOF,uBAAO,QAAQ;EACpB,MAAM;EACN,YACEG,0BACE;GAAC;GAAM;GAAO;GAAe;GAAe;EAAY,GACxD,MAAM,KAAK,UAAU,EACnB,OAAO;GACL,OAAO,KAAK,EAAE;GACd,KAAK;GACL,KAAK;GACLC,qCAAiB,KAAK,UAAU;GAChC,KAAK;EACP,EACF,EAAE,GACFC,gCAAe,CAAC,CAAC,KACnB;CACJ,CAAC;AACH;AAEA,MAAM,WAAW;CACf,GAAGC;CACH,GAAGC;AACL;AAEA,mBAAeC,+BAAc;CAC3B,MAAM;EACJ,MAAM;EACN,aAAa;CACf;CACA,MAAM;CACN,MAAM,EAAE,WACNC,wCAAe,OAAO,QACpB,yBAAyB,KAAK,EAAE,SAAS,KAAK,gBAAgB,KAAK,CAAC,CACtE;AACJ,CAAC"}
1
+ {"version":3,"file":"list-CFwW0G9f.cjs","names":["toResult","Result","apiErrorFailure","maskManagementKey","renderTable","formatGroupRoles","getOutputState","contextArgs","showKeyArg","defineCommand","runWithContext"],"sources":["../src/cli/commands/key/management/list.ts"],"sourcesContent":["import type { ArgsDef } from \"citty\";\nimport { Result } from \"@praha/byethrow\";\nimport {\n defineCommand,\n type CommandFailure,\n type CommandOutput,\n} from \"../../define-command.js\";\nimport { contextArgs } from \"../../shared.js\";\nimport { runWithContext, type CommandContext } from \"../../run-with-context.js\";\nimport { apiErrorFailure } from \"../../api-errors.js\";\nimport { toResult } from \"../../../api/errors.js\";\nimport { getOutputState } from \"../../../ui/output.js\";\nimport { renderTable } from \"../../../ui/table.js\";\nimport { formatGroupRoles } from \"../../group-roles.js\";\nimport { maskManagementKey, showKeyArg } from \"../mask.js\";\n\nexport async function keyManagementListHandler(\n ctx: CommandContext,\n options: { showKey: boolean },\n): Promise<Result.Result<CommandOutput | undefined, CommandFailure>> {\n const keys = toResult(\n await ctx.client.GET(\"/projects/{projectName}/management-keys\", {\n params: { path: { projectName: ctx.projectName } },\n }),\n );\n if (Result.isFailure(keys)) return apiErrorFailure(keys.error);\n\n // --json でもマスクを効かせるため、表示用データ自体を書き換える\n const value = keys.value.map((item) =>\n options.showKey ? item : { ...item, key: maskManagementKey(item.key) },\n );\n return Result.succeed({\n json: value,\n text: () =>\n renderTable(\n [\"ID\", \"KEY\", \"DESCRIPTION\", \"GROUP ROLES\", \"CREATED AT\"],\n value.map((item) => ({\n cells: [\n String(item.id),\n item.key,\n item.description,\n formatGroupRoles(item.groupRoles),\n item.createdAt,\n ],\n })),\n getOutputState().color,\n ),\n });\n}\n\nconst listArgs = {\n ...contextArgs,\n ...showKeyArg,\n} satisfies ArgsDef;\n\nexport default defineCommand({\n meta: {\n name: \"list\",\n description: \"List management keys\",\n },\n args: listArgs,\n run: ({ args }) =>\n runWithContext(args, (ctx) =>\n keyManagementListHandler(ctx, { showKey: args[\"show-key\"] === true }),\n ),\n});\n"],"mappings":";;;;;;;;;AAgBA,eAAsB,yBACpB,KACA,SACmE;CACnE,MAAM,OAAOA,kCACX,MAAM,IAAI,OAAO,IAAI,2CAA2C,EAC9D,QAAQ,EAAE,MAAM,EAAE,aAAa,IAAI,YAAY,EAAE,EACnD,CAAC,CACH;CACA,IAAIC,uBAAO,UAAU,IAAI,GAAG,OAAOC,yCAAgB,KAAK,KAAK;CAG7D,MAAM,QAAQ,KAAK,MAAM,KAAK,SAC5B,QAAQ,UAAU,OAAO;EAAE,GAAG;EAAM,KAAKC,+BAAkB,KAAK,GAAG;CAAE,CACvE;CACA,OAAOF,uBAAO,QAAQ;EACpB,MAAM;EACN,YACEG,0BACE;GAAC;GAAM;GAAO;GAAe;GAAe;EAAY,GACxD,MAAM,KAAK,UAAU,EACnB,OAAO;GACL,OAAO,KAAK,EAAE;GACd,KAAK;GACL,KAAK;GACLC,qCAAiB,KAAK,UAAU;GAChC,KAAK;EACP,EACF,EAAE,GACFC,gCAAe,CAAC,CAAC,KACnB;CACJ,CAAC;AACH;AAEA,MAAM,WAAW;CACf,GAAGC;CACH,GAAGC;AACL;AAEA,mBAAeC,+BAAc;CAC3B,MAAM;EACJ,MAAM;EACN,aAAa;CACf;CACA,MAAM;CACN,MAAM,EAAE,WACNC,wCAAe,OAAO,QACpB,yBAAyB,KAAK,EAAE,SAAS,KAAK,gBAAgB,KAAK,CAAC,CACtE;AACJ,CAAC"}
@@ -1,7 +1,7 @@
1
1
  const require_cli_main = require('./cli/main.cjs');
2
2
  const require_shared = require('./shared-DHRPzzKl.cjs');
3
3
  const require_run_with_context = require('./run-with-context-DJNnEigg.cjs');
4
- const require_parse = require('./parse-BeO2IwfI.cjs');
4
+ const require_parse = require('./parse-C8oHgQXx.cjs');
5
5
  let _praha_byethrow = require("@praha/byethrow");
6
6
 
7
7
  //#region src/cli/commands/content/list.ts
@@ -78,4 +78,4 @@ var list_default = require_cli_main.defineCommand({
78
78
 
79
79
  //#endregion
80
80
  exports.default = list_default;
81
- //# sourceMappingURL=list-60NcDr0q.cjs.map
81
+ //# sourceMappingURL=list-CU42ERNY.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"list-60NcDr0q.cjs","names":["toResult","Result","apiErrorFailure","contextArgs","defineCommand","parseJsonObjectFlag","parseJsonObjectOrArrayFlag","parsePositiveInteger","parseNonNegativeInteger","runWithContext"],"sources":["../src/cli/commands/content/list.ts"],"sourcesContent":["import type { ArgsDef } from \"citty\";\nimport { Result } from \"@praha/byethrow\";\nimport {\n defineCommand,\n type CommandFailure,\n type CommandOutput,\n} from \"../define-command.js\";\nimport { contextArgs } from \"../shared.js\";\nimport { runWithContext, type CommandContext } from \"../run-with-context.js\";\nimport { apiErrorFailure } from \"../api-errors.js\";\nimport { toResult } from \"../../api/errors.js\";\nimport {\n parseJsonObjectFlag,\n parseJsonObjectOrArrayFlag,\n parseNonNegativeInteger,\n parsePositiveInteger,\n} from \"../parse.js\";\n\nexport async function contentListHandler(\n ctx: CommandContext,\n options: {\n table: string;\n filter?: string;\n order?: string;\n limit: number;\n offset: number;\n },\n): Promise<Result.Result<CommandOutput | undefined, CommandFailure>> {\n const contents = toResult(\n await ctx.client.GET(\"/projects/{projectName}/tables/{tableName}\", {\n params: {\n path: { projectName: ctx.projectName, tableName: options.table },\n query: {\n limit: options.limit,\n offset: options.offset,\n ...(options.filter !== undefined ? { filter: options.filter } : {}),\n ...(options.order !== undefined ? { order: options.order } : {}),\n },\n },\n }),\n );\n if (Result.isFailure(contents)) return apiErrorFailure(contents.error);\n\n const value = contents.value;\n return Result.succeed({\n json: value,\n // コンテンツのスキーマは orizm.config.ts 次第で固定カラムにできないため、テーブルではなく整形 JSON で出す\n text: () => JSON.stringify(value, null, 2),\n });\n}\n\nconst listArgs = {\n ...contextArgs,\n table: {\n type: \"positional\",\n required: true,\n description: \"Table name\",\n },\n filter: {\n type: \"string\",\n description: \"Filter expression as a JSON object string\",\n },\n order: {\n type: \"string\",\n description: \"Order expression as a JSON object or array string\",\n },\n limit: {\n type: \"string\",\n description: \"Max number of contents to return\",\n default: \"100\",\n },\n offset: {\n type: \"string\",\n description: \"Pagination offset\",\n default: \"0\",\n },\n} satisfies ArgsDef;\n\nexport default defineCommand({\n meta: {\n name: \"list\",\n description: \"List contents of a table\",\n },\n args: listArgs,\n run: async ({ args }) => {\n const filter = parseJsonObjectFlag(\"filter\", args.filter);\n if (Result.isFailure(filter)) return filter;\n const order = parseJsonObjectOrArrayFlag(\"order\", args.order);\n if (Result.isFailure(order)) return order;\n const limit = parsePositiveInteger(\"limit\", args.limit);\n if (Result.isFailure(limit)) return limit;\n const offset = parseNonNegativeInteger(\"offset\", args.offset);\n if (Result.isFailure(offset)) return offset;\n\n return runWithContext(args, (ctx) =>\n contentListHandler(ctx, {\n table: args.table,\n filter: filter.value,\n order: order.value,\n limit: limit.value,\n offset: offset.value,\n }),\n );\n },\n});\n"],"mappings":";;;;;;;AAkBA,eAAsB,mBACpB,KACA,SAOmE;CACnE,MAAM,WAAWA,kCACf,MAAM,IAAI,OAAO,IAAI,8CAA8C,EACjE,QAAQ;EACN,MAAM;GAAE,aAAa,IAAI;GAAa,WAAW,QAAQ;EAAM;EAC/D,OAAO;GACL,OAAO,QAAQ;GACf,QAAQ,QAAQ;GAChB,GAAI,QAAQ,WAAW,SAAY,EAAE,QAAQ,QAAQ,OAAO,IAAI,CAAC;GACjE,GAAI,QAAQ,UAAU,SAAY,EAAE,OAAO,QAAQ,MAAM,IAAI,CAAC;EAChE;CACF,EACF,CAAC,CACH;CACA,IAAIC,uBAAO,UAAU,QAAQ,GAAG,OAAOC,yCAAgB,SAAS,KAAK;CAErE,MAAM,QAAQ,SAAS;CACvB,OAAOD,uBAAO,QAAQ;EACpB,MAAM;EAEN,YAAY,KAAK,UAAU,OAAO,MAAM,CAAC;CAC3C,CAAC;AACH;AAEA,MAAM,WAAW;CACf,GAAGE;CACH,OAAO;EACL,MAAM;EACN,UAAU;EACV,aAAa;CACf;CACA,QAAQ;EACN,MAAM;EACN,aAAa;CACf;CACA,OAAO;EACL,MAAM;EACN,aAAa;CACf;CACA,OAAO;EACL,MAAM;EACN,aAAa;EACb,SAAS;CACX;CACA,QAAQ;EACN,MAAM;EACN,aAAa;EACb,SAAS;CACX;AACF;AAEA,mBAAeC,+BAAc;CAC3B,MAAM;EACJ,MAAM;EACN,aAAa;CACf;CACA,MAAM;CACN,KAAK,OAAO,EAAE,WAAW;EACvB,MAAM,SAASC,kCAAoB,UAAU,KAAK,MAAM;EACxD,IAAIJ,uBAAO,UAAU,MAAM,GAAG,OAAO;EACrC,MAAM,QAAQK,yCAA2B,SAAS,KAAK,KAAK;EAC5D,IAAIL,uBAAO,UAAU,KAAK,GAAG,OAAO;EACpC,MAAM,QAAQM,mCAAqB,SAAS,KAAK,KAAK;EACtD,IAAIN,uBAAO,UAAU,KAAK,GAAG,OAAO;EACpC,MAAM,SAASO,sCAAwB,UAAU,KAAK,MAAM;EAC5D,IAAIP,uBAAO,UAAU,MAAM,GAAG,OAAO;EAErC,OAAOQ,wCAAe,OAAO,QAC3B,mBAAmB,KAAK;GACtB,OAAO,KAAK;GACZ,QAAQ,OAAO;GACf,OAAO,MAAM;GACb,OAAO,MAAM;GACb,QAAQ,OAAO;EACjB,CAAC,CACH;CACF;AACF,CAAC"}
1
+ {"version":3,"file":"list-CU42ERNY.cjs","names":["toResult","Result","apiErrorFailure","contextArgs","defineCommand","parseJsonObjectFlag","parseJsonObjectOrArrayFlag","parsePositiveInteger","parseNonNegativeInteger","runWithContext"],"sources":["../src/cli/commands/content/list.ts"],"sourcesContent":["import type { ArgsDef } from \"citty\";\nimport { Result } from \"@praha/byethrow\";\nimport {\n defineCommand,\n type CommandFailure,\n type CommandOutput,\n} from \"../define-command.js\";\nimport { contextArgs } from \"../shared.js\";\nimport { runWithContext, type CommandContext } from \"../run-with-context.js\";\nimport { apiErrorFailure } from \"../api-errors.js\";\nimport { toResult } from \"../../api/errors.js\";\nimport {\n parseJsonObjectFlag,\n parseJsonObjectOrArrayFlag,\n parseNonNegativeInteger,\n parsePositiveInteger,\n} from \"../parse.js\";\n\nexport async function contentListHandler(\n ctx: CommandContext,\n options: {\n table: string;\n filter?: string;\n order?: string;\n limit: number;\n offset: number;\n },\n): Promise<Result.Result<CommandOutput | undefined, CommandFailure>> {\n const contents = toResult(\n await ctx.client.GET(\"/projects/{projectName}/tables/{tableName}\", {\n params: {\n path: { projectName: ctx.projectName, tableName: options.table },\n query: {\n limit: options.limit,\n offset: options.offset,\n ...(options.filter !== undefined ? { filter: options.filter } : {}),\n ...(options.order !== undefined ? { order: options.order } : {}),\n },\n },\n }),\n );\n if (Result.isFailure(contents)) return apiErrorFailure(contents.error);\n\n const value = contents.value;\n return Result.succeed({\n json: value,\n // コンテンツのスキーマは orizm.config.ts 次第で固定カラムにできないため、テーブルではなく整形 JSON で出す\n text: () => JSON.stringify(value, null, 2),\n });\n}\n\nconst listArgs = {\n ...contextArgs,\n table: {\n type: \"positional\",\n required: true,\n description: \"Table name\",\n },\n filter: {\n type: \"string\",\n description: \"Filter expression as a JSON object string\",\n },\n order: {\n type: \"string\",\n description: \"Order expression as a JSON object or array string\",\n },\n limit: {\n type: \"string\",\n description: \"Max number of contents to return\",\n default: \"100\",\n },\n offset: {\n type: \"string\",\n description: \"Pagination offset\",\n default: \"0\",\n },\n} satisfies ArgsDef;\n\nexport default defineCommand({\n meta: {\n name: \"list\",\n description: \"List contents of a table\",\n },\n args: listArgs,\n run: async ({ args }) => {\n const filter = parseJsonObjectFlag(\"filter\", args.filter);\n if (Result.isFailure(filter)) return filter;\n const order = parseJsonObjectOrArrayFlag(\"order\", args.order);\n if (Result.isFailure(order)) return order;\n const limit = parsePositiveInteger(\"limit\", args.limit);\n if (Result.isFailure(limit)) return limit;\n const offset = parseNonNegativeInteger(\"offset\", args.offset);\n if (Result.isFailure(offset)) return offset;\n\n return runWithContext(args, (ctx) =>\n contentListHandler(ctx, {\n table: args.table,\n filter: filter.value,\n order: order.value,\n limit: limit.value,\n offset: offset.value,\n }),\n );\n },\n});\n"],"mappings":";;;;;;;AAkBA,eAAsB,mBACpB,KACA,SAOmE;CACnE,MAAM,WAAWA,kCACf,MAAM,IAAI,OAAO,IAAI,8CAA8C,EACjE,QAAQ;EACN,MAAM;GAAE,aAAa,IAAI;GAAa,WAAW,QAAQ;EAAM;EAC/D,OAAO;GACL,OAAO,QAAQ;GACf,QAAQ,QAAQ;GAChB,GAAI,QAAQ,WAAW,SAAY,EAAE,QAAQ,QAAQ,OAAO,IAAI,CAAC;GACjE,GAAI,QAAQ,UAAU,SAAY,EAAE,OAAO,QAAQ,MAAM,IAAI,CAAC;EAChE;CACF,EACF,CAAC,CACH;CACA,IAAIC,uBAAO,UAAU,QAAQ,GAAG,OAAOC,yCAAgB,SAAS,KAAK;CAErE,MAAM,QAAQ,SAAS;CACvB,OAAOD,uBAAO,QAAQ;EACpB,MAAM;EAEN,YAAY,KAAK,UAAU,OAAO,MAAM,CAAC;CAC3C,CAAC;AACH;AAEA,MAAM,WAAW;CACf,GAAGE;CACH,OAAO;EACL,MAAM;EACN,UAAU;EACV,aAAa;CACf;CACA,QAAQ;EACN,MAAM;EACN,aAAa;CACf;CACA,OAAO;EACL,MAAM;EACN,aAAa;CACf;CACA,OAAO;EACL,MAAM;EACN,aAAa;EACb,SAAS;CACX;CACA,QAAQ;EACN,MAAM;EACN,aAAa;EACb,SAAS;CACX;AACF;AAEA,mBAAeC,+BAAc;CAC3B,MAAM;EACJ,MAAM;EACN,aAAa;CACf;CACA,MAAM;CACN,KAAK,OAAO,EAAE,WAAW;EACvB,MAAM,SAASC,kCAAoB,UAAU,KAAK,MAAM;EACxD,IAAIJ,uBAAO,UAAU,MAAM,GAAG,OAAO;EACrC,MAAM,QAAQK,yCAA2B,SAAS,KAAK,KAAK;EAC5D,IAAIL,uBAAO,UAAU,KAAK,GAAG,OAAO;EACpC,MAAM,QAAQM,mCAAqB,SAAS,KAAK,KAAK;EACtD,IAAIN,uBAAO,UAAU,KAAK,GAAG,OAAO;EACpC,MAAM,SAASO,sCAAwB,UAAU,KAAK,MAAM;EAC5D,IAAIP,uBAAO,UAAU,MAAM,GAAG,OAAO;EAErC,OAAOQ,wCAAe,OAAO,QAC3B,mBAAmB,KAAK;GACtB,OAAO,KAAK;GACZ,QAAQ,OAAO;GACf,OAAO,MAAM;GACb,OAAO,MAAM;GACb,QAAQ,OAAO;EACjB,CAAC,CACH;CACF;AACF,CAAC"}
@@ -2,8 +2,8 @@ const require_cli_main = require('./cli/main.cjs');
2
2
  const require_shared = require('./shared-DHRPzzKl.cjs');
3
3
  const require_run_with_context = require('./run-with-context-DJNnEigg.cjs');
4
4
  const require_table = require('./table-C74eOSh8.cjs');
5
- const require_parse = require('./parse-BeO2IwfI.cjs');
6
- const require_group_roles = require('./group-roles-Bl_mEodO.cjs');
5
+ const require_parse = require('./parse-C8oHgQXx.cjs');
6
+ const require_group_roles = require('./group-roles-B_iAZog-.cjs');
7
7
  let _praha_byethrow = require("@praha/byethrow");
8
8
 
9
9
  //#region src/cli/commands/project-user/list.ts
@@ -69,4 +69,4 @@ var list_default = require_cli_main.defineCommand({
69
69
 
70
70
  //#endregion
71
71
  exports.default = list_default;
72
- //# sourceMappingURL=list-CYE9Exi3.cjs.map
72
+ //# sourceMappingURL=list-DexBclfb.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"list-CYE9Exi3.cjs","names":["toResult","Result","apiErrorFailure","renderTable","formatGroupRoles","getOutputState","contextArgs","defineCommand","parseIntegerChoice","parseNonNegativeInteger","runWithContext"],"sources":["../src/cli/commands/project-user/list.ts"],"sourcesContent":["import type { ArgsDef } from \"citty\";\nimport { Result } from \"@praha/byethrow\";\nimport {\n defineCommand,\n type CommandFailure,\n type CommandOutput,\n} from \"../define-command.js\";\nimport { contextArgs } from \"../shared.js\";\nimport { runWithContext, type CommandContext } from \"../run-with-context.js\";\nimport { apiErrorFailure } from \"../api-errors.js\";\nimport { toResult } from \"../../api/errors.js\";\nimport { getOutputState } from \"../../ui/output.js\";\nimport { renderTable } from \"../../ui/table.js\";\nimport { parseIntegerChoice, parseNonNegativeInteger } from \"../parse.js\";\nimport { formatGroupRoles } from \"../group-roles.js\";\n\nexport async function projectUserListHandler(\n ctx: CommandContext,\n options: { limit: number; offset: number },\n): Promise<Result.Result<CommandOutput | undefined, CommandFailure>> {\n const users = toResult(\n await ctx.client.GET(\"/projects/{projectName}/users\", {\n params: {\n path: { projectName: ctx.projectName },\n query: { limit: options.limit, offset: options.offset },\n },\n }),\n );\n if (Result.isFailure(users)) return apiErrorFailure(users.error);\n\n const value = users.value;\n return Result.succeed({\n json: value,\n text: () =>\n renderTable(\n [\"ID\", \"NAME\", \"EMAIL\", \"GROUP ROLES\"],\n value.projectUsers.map((user) => ({\n cells: [\n user.id,\n user.name,\n user.email,\n formatGroupRoles(user.groupRoles),\n ],\n })),\n getOutputState().color,\n ),\n });\n}\n\nconst listArgs = {\n ...contextArgs,\n limit: {\n type: \"string\",\n description: \"Max number of users to return (50, 100, or 200)\",\n default: \"50\",\n },\n offset: {\n type: \"string\",\n description: \"Pagination offset\",\n default: \"0\",\n },\n} satisfies ArgsDef;\n\nexport default defineCommand({\n meta: {\n name: \"list\",\n description: \"List project users\",\n },\n args: listArgs,\n run: async ({ args }) => {\n const limit = parseIntegerChoice(\"limit\", args.limit, [50, 100, 200]);\n if (Result.isFailure(limit)) return limit;\n const offset = parseNonNegativeInteger(\"offset\", args.offset);\n if (Result.isFailure(offset)) return offset;\n\n return runWithContext(args, (ctx) =>\n projectUserListHandler(ctx, {\n limit: limit.value,\n offset: offset.value,\n }),\n );\n },\n});\n"],"mappings":";;;;;;;;;AAgBA,eAAsB,uBACpB,KACA,SACmE;CACnE,MAAM,QAAQA,kCACZ,MAAM,IAAI,OAAO,IAAI,iCAAiC,EACpD,QAAQ;EACN,MAAM,EAAE,aAAa,IAAI,YAAY;EACrC,OAAO;GAAE,OAAO,QAAQ;GAAO,QAAQ,QAAQ;EAAO;CACxD,EACF,CAAC,CACH;CACA,IAAIC,uBAAO,UAAU,KAAK,GAAG,OAAOC,yCAAgB,MAAM,KAAK;CAE/D,MAAM,QAAQ,MAAM;CACpB,OAAOD,uBAAO,QAAQ;EACpB,MAAM;EACN,YACEE,0BACE;GAAC;GAAM;GAAQ;GAAS;EAAa,GACrC,MAAM,aAAa,KAAK,UAAU,EAChC,OAAO;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACLC,qCAAiB,KAAK,UAAU;EAClC,EACF,EAAE,GACFC,gCAAe,CAAC,CAAC,KACnB;CACJ,CAAC;AACH;AAEA,MAAM,WAAW;CACf,GAAGC;CACH,OAAO;EACL,MAAM;EACN,aAAa;EACb,SAAS;CACX;CACA,QAAQ;EACN,MAAM;EACN,aAAa;EACb,SAAS;CACX;AACF;AAEA,mBAAeC,+BAAc;CAC3B,MAAM;EACJ,MAAM;EACN,aAAa;CACf;CACA,MAAM;CACN,KAAK,OAAO,EAAE,WAAW;EACvB,MAAM,QAAQC,iCAAmB,SAAS,KAAK,OAAO;GAAC;GAAI;GAAK;EAAG,CAAC;EACpE,IAAIP,uBAAO,UAAU,KAAK,GAAG,OAAO;EACpC,MAAM,SAASQ,sCAAwB,UAAU,KAAK,MAAM;EAC5D,IAAIR,uBAAO,UAAU,MAAM,GAAG,OAAO;EAErC,OAAOS,wCAAe,OAAO,QAC3B,uBAAuB,KAAK;GAC1B,OAAO,MAAM;GACb,QAAQ,OAAO;EACjB,CAAC,CACH;CACF;AACF,CAAC"}
1
+ {"version":3,"file":"list-DexBclfb.cjs","names":["toResult","Result","apiErrorFailure","renderTable","formatGroupRoles","getOutputState","contextArgs","defineCommand","parseIntegerChoice","parseNonNegativeInteger","runWithContext"],"sources":["../src/cli/commands/project-user/list.ts"],"sourcesContent":["import type { ArgsDef } from \"citty\";\nimport { Result } from \"@praha/byethrow\";\nimport {\n defineCommand,\n type CommandFailure,\n type CommandOutput,\n} from \"../define-command.js\";\nimport { contextArgs } from \"../shared.js\";\nimport { runWithContext, type CommandContext } from \"../run-with-context.js\";\nimport { apiErrorFailure } from \"../api-errors.js\";\nimport { toResult } from \"../../api/errors.js\";\nimport { getOutputState } from \"../../ui/output.js\";\nimport { renderTable } from \"../../ui/table.js\";\nimport { parseIntegerChoice, parseNonNegativeInteger } from \"../parse.js\";\nimport { formatGroupRoles } from \"../group-roles.js\";\n\nexport async function projectUserListHandler(\n ctx: CommandContext,\n options: { limit: number; offset: number },\n): Promise<Result.Result<CommandOutput | undefined, CommandFailure>> {\n const users = toResult(\n await ctx.client.GET(\"/projects/{projectName}/users\", {\n params: {\n path: { projectName: ctx.projectName },\n query: { limit: options.limit, offset: options.offset },\n },\n }),\n );\n if (Result.isFailure(users)) return apiErrorFailure(users.error);\n\n const value = users.value;\n return Result.succeed({\n json: value,\n text: () =>\n renderTable(\n [\"ID\", \"NAME\", \"EMAIL\", \"GROUP ROLES\"],\n value.projectUsers.map((user) => ({\n cells: [\n user.id,\n user.name,\n user.email,\n formatGroupRoles(user.groupRoles),\n ],\n })),\n getOutputState().color,\n ),\n });\n}\n\nconst listArgs = {\n ...contextArgs,\n limit: {\n type: \"string\",\n description: \"Max number of users to return (50, 100, or 200)\",\n default: \"50\",\n },\n offset: {\n type: \"string\",\n description: \"Pagination offset\",\n default: \"0\",\n },\n} satisfies ArgsDef;\n\nexport default defineCommand({\n meta: {\n name: \"list\",\n description: \"List project users\",\n },\n args: listArgs,\n run: async ({ args }) => {\n const limit = parseIntegerChoice(\"limit\", args.limit, [50, 100, 200]);\n if (Result.isFailure(limit)) return limit;\n const offset = parseNonNegativeInteger(\"offset\", args.offset);\n if (Result.isFailure(offset)) return offset;\n\n return runWithContext(args, (ctx) =>\n projectUserListHandler(ctx, {\n limit: limit.value,\n offset: offset.value,\n }),\n );\n },\n});\n"],"mappings":";;;;;;;;;AAgBA,eAAsB,uBACpB,KACA,SACmE;CACnE,MAAM,QAAQA,kCACZ,MAAM,IAAI,OAAO,IAAI,iCAAiC,EACpD,QAAQ;EACN,MAAM,EAAE,aAAa,IAAI,YAAY;EACrC,OAAO;GAAE,OAAO,QAAQ;GAAO,QAAQ,QAAQ;EAAO;CACxD,EACF,CAAC,CACH;CACA,IAAIC,uBAAO,UAAU,KAAK,GAAG,OAAOC,yCAAgB,MAAM,KAAK;CAE/D,MAAM,QAAQ,MAAM;CACpB,OAAOD,uBAAO,QAAQ;EACpB,MAAM;EACN,YACEE,0BACE;GAAC;GAAM;GAAQ;GAAS;EAAa,GACrC,MAAM,aAAa,KAAK,UAAU,EAChC,OAAO;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACLC,qCAAiB,KAAK,UAAU;EAClC,EACF,EAAE,GACFC,gCAAe,CAAC,CAAC,KACnB;CACJ,CAAC;AACH;AAEA,MAAM,WAAW;CACf,GAAGC;CACH,OAAO;EACL,MAAM;EACN,aAAa;EACb,SAAS;CACX;CACA,QAAQ;EACN,MAAM;EACN,aAAa;EACb,SAAS;CACX;AACF;AAEA,mBAAeC,+BAAc;CAC3B,MAAM;EACJ,MAAM;EACN,aAAa;CACf;CACA,MAAM;CACN,KAAK,OAAO,EAAE,WAAW;EACvB,MAAM,QAAQC,iCAAmB,SAAS,KAAK,OAAO;GAAC;GAAI;GAAK;EAAG,CAAC;EACpE,IAAIP,uBAAO,UAAU,KAAK,GAAG,OAAO;EACpC,MAAM,SAASQ,sCAAwB,UAAU,KAAK,MAAM;EAC5D,IAAIR,uBAAO,UAAU,MAAM,GAAG,OAAO;EAErC,OAAOS,wCAAe,OAAO,QAC3B,uBAAuB,KAAK;GAC1B,OAAO,MAAM;GACb,QAAQ,OAAO;EACjB,CAAC,CACH;CACF;AACF,CAAC"}
@@ -2,8 +2,8 @@ import { r as getOutputState, t as defineCommand } from "./cli/main.mjs";
2
2
  import { r as contextArgs } from "./shared-CZZimGxc.mjs";
3
3
  import { a as apiErrorFailure, n as runWithContext, u as toResult } from "./run-with-context-CVhmzAFZ.mjs";
4
4
  import { t as renderTable } from "./table-MHEfbnWO.mjs";
5
- import { l as parseNonNegativeInteger, o as parseIntegerChoice } from "./parse-CA5fBB3x.mjs";
6
- import { n as formatGroupRoles } from "./group-roles-BEEzLxPX.mjs";
5
+ import { l as parseNonNegativeInteger, o as parseIntegerChoice } from "./parse-DA0k5AHa.mjs";
6
+ import { n as formatGroupRoles } from "./group-roles-BIH7q8tf.mjs";
7
7
  import { Result } from "@praha/byethrow";
8
8
 
9
9
  //#region src/cli/commands/project-user/list.ts
@@ -69,4 +69,4 @@ var list_default = defineCommand({
69
69
 
70
70
  //#endregion
71
71
  export { list_default as default };
72
- //# sourceMappingURL=list-DdJ05juK.mjs.map
72
+ //# sourceMappingURL=list-DrZYlidZ.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"list-DdJ05juK.mjs","names":[],"sources":["../src/cli/commands/project-user/list.ts"],"sourcesContent":["import type { ArgsDef } from \"citty\";\nimport { Result } from \"@praha/byethrow\";\nimport {\n defineCommand,\n type CommandFailure,\n type CommandOutput,\n} from \"../define-command.js\";\nimport { contextArgs } from \"../shared.js\";\nimport { runWithContext, type CommandContext } from \"../run-with-context.js\";\nimport { apiErrorFailure } from \"../api-errors.js\";\nimport { toResult } from \"../../api/errors.js\";\nimport { getOutputState } from \"../../ui/output.js\";\nimport { renderTable } from \"../../ui/table.js\";\nimport { parseIntegerChoice, parseNonNegativeInteger } from \"../parse.js\";\nimport { formatGroupRoles } from \"../group-roles.js\";\n\nexport async function projectUserListHandler(\n ctx: CommandContext,\n options: { limit: number; offset: number },\n): Promise<Result.Result<CommandOutput | undefined, CommandFailure>> {\n const users = toResult(\n await ctx.client.GET(\"/projects/{projectName}/users\", {\n params: {\n path: { projectName: ctx.projectName },\n query: { limit: options.limit, offset: options.offset },\n },\n }),\n );\n if (Result.isFailure(users)) return apiErrorFailure(users.error);\n\n const value = users.value;\n return Result.succeed({\n json: value,\n text: () =>\n renderTable(\n [\"ID\", \"NAME\", \"EMAIL\", \"GROUP ROLES\"],\n value.projectUsers.map((user) => ({\n cells: [\n user.id,\n user.name,\n user.email,\n formatGroupRoles(user.groupRoles),\n ],\n })),\n getOutputState().color,\n ),\n });\n}\n\nconst listArgs = {\n ...contextArgs,\n limit: {\n type: \"string\",\n description: \"Max number of users to return (50, 100, or 200)\",\n default: \"50\",\n },\n offset: {\n type: \"string\",\n description: \"Pagination offset\",\n default: \"0\",\n },\n} satisfies ArgsDef;\n\nexport default defineCommand({\n meta: {\n name: \"list\",\n description: \"List project users\",\n },\n args: listArgs,\n run: async ({ args }) => {\n const limit = parseIntegerChoice(\"limit\", args.limit, [50, 100, 200]);\n if (Result.isFailure(limit)) return limit;\n const offset = parseNonNegativeInteger(\"offset\", args.offset);\n if (Result.isFailure(offset)) return offset;\n\n return runWithContext(args, (ctx) =>\n projectUserListHandler(ctx, {\n limit: limit.value,\n offset: offset.value,\n }),\n );\n },\n});\n"],"mappings":";;;;;;;;;AAgBA,eAAsB,uBACpB,KACA,SACmE;CACnE,MAAM,QAAQ,SACZ,MAAM,IAAI,OAAO,IAAI,iCAAiC,EACpD,QAAQ;EACN,MAAM,EAAE,aAAa,IAAI,YAAY;EACrC,OAAO;GAAE,OAAO,QAAQ;GAAO,QAAQ,QAAQ;EAAO;CACxD,EACF,CAAC,CACH;CACA,IAAI,OAAO,UAAU,KAAK,GAAG,OAAO,gBAAgB,MAAM,KAAK;CAE/D,MAAM,QAAQ,MAAM;CACpB,OAAO,OAAO,QAAQ;EACpB,MAAM;EACN,YACE,YACE;GAAC;GAAM;GAAQ;GAAS;EAAa,GACrC,MAAM,aAAa,KAAK,UAAU,EAChC,OAAO;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,iBAAiB,KAAK,UAAU;EAClC,EACF,EAAE,GACF,eAAe,CAAC,CAAC,KACnB;CACJ,CAAC;AACH;AAEA,MAAM,WAAW;CACf,GAAG;CACH,OAAO;EACL,MAAM;EACN,aAAa;EACb,SAAS;CACX;CACA,QAAQ;EACN,MAAM;EACN,aAAa;EACb,SAAS;CACX;AACF;AAEA,mBAAe,cAAc;CAC3B,MAAM;EACJ,MAAM;EACN,aAAa;CACf;CACA,MAAM;CACN,KAAK,OAAO,EAAE,WAAW;EACvB,MAAM,QAAQ,mBAAmB,SAAS,KAAK,OAAO;GAAC;GAAI;GAAK;EAAG,CAAC;EACpE,IAAI,OAAO,UAAU,KAAK,GAAG,OAAO;EACpC,MAAM,SAAS,wBAAwB,UAAU,KAAK,MAAM;EAC5D,IAAI,OAAO,UAAU,MAAM,GAAG,OAAO;EAErC,OAAO,eAAe,OAAO,QAC3B,uBAAuB,KAAK;GAC1B,OAAO,MAAM;GACb,QAAQ,OAAO;EACjB,CAAC,CACH;CACF;AACF,CAAC"}
1
+ {"version":3,"file":"list-DrZYlidZ.mjs","names":[],"sources":["../src/cli/commands/project-user/list.ts"],"sourcesContent":["import type { ArgsDef } from \"citty\";\nimport { Result } from \"@praha/byethrow\";\nimport {\n defineCommand,\n type CommandFailure,\n type CommandOutput,\n} from \"../define-command.js\";\nimport { contextArgs } from \"../shared.js\";\nimport { runWithContext, type CommandContext } from \"../run-with-context.js\";\nimport { apiErrorFailure } from \"../api-errors.js\";\nimport { toResult } from \"../../api/errors.js\";\nimport { getOutputState } from \"../../ui/output.js\";\nimport { renderTable } from \"../../ui/table.js\";\nimport { parseIntegerChoice, parseNonNegativeInteger } from \"../parse.js\";\nimport { formatGroupRoles } from \"../group-roles.js\";\n\nexport async function projectUserListHandler(\n ctx: CommandContext,\n options: { limit: number; offset: number },\n): Promise<Result.Result<CommandOutput | undefined, CommandFailure>> {\n const users = toResult(\n await ctx.client.GET(\"/projects/{projectName}/users\", {\n params: {\n path: { projectName: ctx.projectName },\n query: { limit: options.limit, offset: options.offset },\n },\n }),\n );\n if (Result.isFailure(users)) return apiErrorFailure(users.error);\n\n const value = users.value;\n return Result.succeed({\n json: value,\n text: () =>\n renderTable(\n [\"ID\", \"NAME\", \"EMAIL\", \"GROUP ROLES\"],\n value.projectUsers.map((user) => ({\n cells: [\n user.id,\n user.name,\n user.email,\n formatGroupRoles(user.groupRoles),\n ],\n })),\n getOutputState().color,\n ),\n });\n}\n\nconst listArgs = {\n ...contextArgs,\n limit: {\n type: \"string\",\n description: \"Max number of users to return (50, 100, or 200)\",\n default: \"50\",\n },\n offset: {\n type: \"string\",\n description: \"Pagination offset\",\n default: \"0\",\n },\n} satisfies ArgsDef;\n\nexport default defineCommand({\n meta: {\n name: \"list\",\n description: \"List project users\",\n },\n args: listArgs,\n run: async ({ args }) => {\n const limit = parseIntegerChoice(\"limit\", args.limit, [50, 100, 200]);\n if (Result.isFailure(limit)) return limit;\n const offset = parseNonNegativeInteger(\"offset\", args.offset);\n if (Result.isFailure(offset)) return offset;\n\n return runWithContext(args, (ctx) =>\n projectUserListHandler(ctx, {\n limit: limit.value,\n offset: offset.value,\n }),\n );\n },\n});\n"],"mappings":";;;;;;;;;AAgBA,eAAsB,uBACpB,KACA,SACmE;CACnE,MAAM,QAAQ,SACZ,MAAM,IAAI,OAAO,IAAI,iCAAiC,EACpD,QAAQ;EACN,MAAM,EAAE,aAAa,IAAI,YAAY;EACrC,OAAO;GAAE,OAAO,QAAQ;GAAO,QAAQ,QAAQ;EAAO;CACxD,EACF,CAAC,CACH;CACA,IAAI,OAAO,UAAU,KAAK,GAAG,OAAO,gBAAgB,MAAM,KAAK;CAE/D,MAAM,QAAQ,MAAM;CACpB,OAAO,OAAO,QAAQ;EACpB,MAAM;EACN,YACE,YACE;GAAC;GAAM;GAAQ;GAAS;EAAa,GACrC,MAAM,aAAa,KAAK,UAAU,EAChC,OAAO;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,iBAAiB,KAAK,UAAU;EAClC,EACF,EAAE,GACF,eAAe,CAAC,CAAC,KACnB;CACJ,CAAC;AACH;AAEA,MAAM,WAAW;CACf,GAAG;CACH,OAAO;EACL,MAAM;EACN,aAAa;EACb,SAAS;CACX;CACA,QAAQ;EACN,MAAM;EACN,aAAa;EACb,SAAS;CACX;AACF;AAEA,mBAAe,cAAc;CAC3B,MAAM;EACJ,MAAM;EACN,aAAa;CACf;CACA,MAAM;CACN,KAAK,OAAO,EAAE,WAAW;EACvB,MAAM,QAAQ,mBAAmB,SAAS,KAAK,OAAO;GAAC;GAAI;GAAK;EAAG,CAAC;EACpE,IAAI,OAAO,UAAU,KAAK,GAAG,OAAO;EACpC,MAAM,SAAS,wBAAwB,UAAU,KAAK,MAAM;EAC5D,IAAI,OAAO,UAAU,MAAM,GAAG,OAAO;EAErC,OAAO,eAAe,OAAO,QAC3B,uBAAuB,KAAK;GAC1B,OAAO,MAAM;GACb,QAAQ,OAAO;EACjB,CAAC,CACH;CACF;AACF,CAAC"}
@@ -3,7 +3,7 @@ import { r as contextArgs } from "./shared-CZZimGxc.mjs";
3
3
  import { a as apiErrorFailure, n as runWithContext, u as toResult } from "./run-with-context-CVhmzAFZ.mjs";
4
4
  import { t as renderTable } from "./table-MHEfbnWO.mjs";
5
5
  import { n as maskManagementKey, r as showKeyArg } from "./mask-B1qD73jb.mjs";
6
- import { n as formatGroupRoles } from "./group-roles-BEEzLxPX.mjs";
6
+ import { n as formatGroupRoles } from "./group-roles-BIH7q8tf.mjs";
7
7
  import { Result } from "@praha/byethrow";
8
8
 
9
9
  //#region src/cli/commands/key/management/list.ts
@@ -46,4 +46,4 @@ var list_default = defineCommand({
46
46
 
47
47
  //#endregion
48
48
  export { list_default as default };
49
- //# sourceMappingURL=list-D24J_Qbm.mjs.map
49
+ //# sourceMappingURL=list-ocfd7631.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"list-D24J_Qbm.mjs","names":[],"sources":["../src/cli/commands/key/management/list.ts"],"sourcesContent":["import type { ArgsDef } from \"citty\";\nimport { Result } from \"@praha/byethrow\";\nimport {\n defineCommand,\n type CommandFailure,\n type CommandOutput,\n} from \"../../define-command.js\";\nimport { contextArgs } from \"../../shared.js\";\nimport { runWithContext, type CommandContext } from \"../../run-with-context.js\";\nimport { apiErrorFailure } from \"../../api-errors.js\";\nimport { toResult } from \"../../../api/errors.js\";\nimport { getOutputState } from \"../../../ui/output.js\";\nimport { renderTable } from \"../../../ui/table.js\";\nimport { formatGroupRoles } from \"../../group-roles.js\";\nimport { maskManagementKey, showKeyArg } from \"../mask.js\";\n\nexport async function keyManagementListHandler(\n ctx: CommandContext,\n options: { showKey: boolean },\n): Promise<Result.Result<CommandOutput | undefined, CommandFailure>> {\n const keys = toResult(\n await ctx.client.GET(\"/projects/{projectName}/management-keys\", {\n params: { path: { projectName: ctx.projectName } },\n }),\n );\n if (Result.isFailure(keys)) return apiErrorFailure(keys.error);\n\n // --json でもマスクを効かせるため、表示用データ自体を書き換える\n const value = keys.value.map((item) =>\n options.showKey ? item : { ...item, key: maskManagementKey(item.key) },\n );\n return Result.succeed({\n json: value,\n text: () =>\n renderTable(\n [\"ID\", \"KEY\", \"DESCRIPTION\", \"GROUP ROLES\", \"CREATED AT\"],\n value.map((item) => ({\n cells: [\n String(item.id),\n item.key,\n item.description,\n formatGroupRoles(item.groupRoles),\n item.createdAt,\n ],\n })),\n getOutputState().color,\n ),\n });\n}\n\nconst listArgs = {\n ...contextArgs,\n ...showKeyArg,\n} satisfies ArgsDef;\n\nexport default defineCommand({\n meta: {\n name: \"list\",\n description: \"List management keys\",\n },\n args: listArgs,\n run: ({ args }) =>\n runWithContext(args, (ctx) =>\n keyManagementListHandler(ctx, { showKey: args[\"show-key\"] === true }),\n ),\n});\n"],"mappings":";;;;;;;;;AAgBA,eAAsB,yBACpB,KACA,SACmE;CACnE,MAAM,OAAO,SACX,MAAM,IAAI,OAAO,IAAI,2CAA2C,EAC9D,QAAQ,EAAE,MAAM,EAAE,aAAa,IAAI,YAAY,EAAE,EACnD,CAAC,CACH;CACA,IAAI,OAAO,UAAU,IAAI,GAAG,OAAO,gBAAgB,KAAK,KAAK;CAG7D,MAAM,QAAQ,KAAK,MAAM,KAAK,SAC5B,QAAQ,UAAU,OAAO;EAAE,GAAG;EAAM,KAAK,kBAAkB,KAAK,GAAG;CAAE,CACvE;CACA,OAAO,OAAO,QAAQ;EACpB,MAAM;EACN,YACE,YACE;GAAC;GAAM;GAAO;GAAe;GAAe;EAAY,GACxD,MAAM,KAAK,UAAU,EACnB,OAAO;GACL,OAAO,KAAK,EAAE;GACd,KAAK;GACL,KAAK;GACL,iBAAiB,KAAK,UAAU;GAChC,KAAK;EACP,EACF,EAAE,GACF,eAAe,CAAC,CAAC,KACnB;CACJ,CAAC;AACH;AAEA,MAAM,WAAW;CACf,GAAG;CACH,GAAG;AACL;AAEA,mBAAe,cAAc;CAC3B,MAAM;EACJ,MAAM;EACN,aAAa;CACf;CACA,MAAM;CACN,MAAM,EAAE,WACN,eAAe,OAAO,QACpB,yBAAyB,KAAK,EAAE,SAAS,KAAK,gBAAgB,KAAK,CAAC,CACtE;AACJ,CAAC"}
1
+ {"version":3,"file":"list-ocfd7631.mjs","names":[],"sources":["../src/cli/commands/key/management/list.ts"],"sourcesContent":["import type { ArgsDef } from \"citty\";\nimport { Result } from \"@praha/byethrow\";\nimport {\n defineCommand,\n type CommandFailure,\n type CommandOutput,\n} from \"../../define-command.js\";\nimport { contextArgs } from \"../../shared.js\";\nimport { runWithContext, type CommandContext } from \"../../run-with-context.js\";\nimport { apiErrorFailure } from \"../../api-errors.js\";\nimport { toResult } from \"../../../api/errors.js\";\nimport { getOutputState } from \"../../../ui/output.js\";\nimport { renderTable } from \"../../../ui/table.js\";\nimport { formatGroupRoles } from \"../../group-roles.js\";\nimport { maskManagementKey, showKeyArg } from \"../mask.js\";\n\nexport async function keyManagementListHandler(\n ctx: CommandContext,\n options: { showKey: boolean },\n): Promise<Result.Result<CommandOutput | undefined, CommandFailure>> {\n const keys = toResult(\n await ctx.client.GET(\"/projects/{projectName}/management-keys\", {\n params: { path: { projectName: ctx.projectName } },\n }),\n );\n if (Result.isFailure(keys)) return apiErrorFailure(keys.error);\n\n // --json でもマスクを効かせるため、表示用データ自体を書き換える\n const value = keys.value.map((item) =>\n options.showKey ? item : { ...item, key: maskManagementKey(item.key) },\n );\n return Result.succeed({\n json: value,\n text: () =>\n renderTable(\n [\"ID\", \"KEY\", \"DESCRIPTION\", \"GROUP ROLES\", \"CREATED AT\"],\n value.map((item) => ({\n cells: [\n String(item.id),\n item.key,\n item.description,\n formatGroupRoles(item.groupRoles),\n item.createdAt,\n ],\n })),\n getOutputState().color,\n ),\n });\n}\n\nconst listArgs = {\n ...contextArgs,\n ...showKeyArg,\n} satisfies ArgsDef;\n\nexport default defineCommand({\n meta: {\n name: \"list\",\n description: \"List management keys\",\n },\n args: listArgs,\n run: ({ args }) =>\n runWithContext(args, (ctx) =>\n keyManagementListHandler(ctx, { showKey: args[\"show-key\"] === true }),\n ),\n});\n"],"mappings":";;;;;;;;;AAgBA,eAAsB,yBACpB,KACA,SACmE;CACnE,MAAM,OAAO,SACX,MAAM,IAAI,OAAO,IAAI,2CAA2C,EAC9D,QAAQ,EAAE,MAAM,EAAE,aAAa,IAAI,YAAY,EAAE,EACnD,CAAC,CACH;CACA,IAAI,OAAO,UAAU,IAAI,GAAG,OAAO,gBAAgB,KAAK,KAAK;CAG7D,MAAM,QAAQ,KAAK,MAAM,KAAK,SAC5B,QAAQ,UAAU,OAAO;EAAE,GAAG;EAAM,KAAK,kBAAkB,KAAK,GAAG;CAAE,CACvE;CACA,OAAO,OAAO,QAAQ;EACpB,MAAM;EACN,YACE,YACE;GAAC;GAAM;GAAO;GAAe;GAAe;EAAY,GACxD,MAAM,KAAK,UAAU,EACnB,OAAO;GACL,OAAO,KAAK,EAAE;GACd,KAAK;GACL,KAAK;GACL,iBAAiB,KAAK,UAAU;GAChC,KAAK;EACP,EACF,EAAE,GACF,eAAe,CAAC,CAAC,KACnB;CACJ,CAAC;AACH;AAEA,MAAM,WAAW;CACf,GAAG;CACH,GAAG;AACL;AAEA,mBAAe,cAAc;CAC3B,MAAM;EACJ,MAAM;EACN,aAAa;CACf;CACA,MAAM;CACN,MAAM,EAAE,WACN,eAAe,OAAO,QACpB,yBAAyB,KAAK,EAAE,SAAS,KAAK,gBAAgB,KAAK,CAAC,CACtE;AACJ,CAAC"}
@@ -2,7 +2,7 @@ import { r as getOutputState, t as defineCommand } from "./cli/main.mjs";
2
2
  import { r as contextArgs } from "./shared-CZZimGxc.mjs";
3
3
  import { a as apiErrorFailure, n as runWithContext, u as toResult } from "./run-with-context-CVhmzAFZ.mjs";
4
4
  import { t as renderTable } from "./table-MHEfbnWO.mjs";
5
- import { l as parseNonNegativeInteger, o as parseIntegerChoice, t as collectRepeatableFlag } from "./parse-CA5fBB3x.mjs";
5
+ import { l as parseNonNegativeInteger, o as parseIntegerChoice, t as collectRepeatableFlag } from "./parse-DA0k5AHa.mjs";
6
6
  import { Result } from "@praha/byethrow";
7
7
 
8
8
  //#region src/cli/commands/schema/list.ts
@@ -92,4 +92,4 @@ var list_default = defineCommand({
92
92
 
93
93
  //#endregion
94
94
  export { list_default as default };
95
- //# sourceMappingURL=list-yQZLzkC7.mjs.map
95
+ //# sourceMappingURL=list-sQk00GV5.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"list-yQZLzkC7.mjs","names":[],"sources":["../src/cli/commands/schema/list.ts"],"sourcesContent":["import type { ArgsDef } from \"citty\";\nimport { Result } from \"@praha/byethrow\";\nimport {\n defineCommand,\n type CommandFailure,\n type CommandOutput,\n} from \"../define-command.js\";\nimport { contextArgs } from \"../shared.js\";\nimport { runWithContext, type CommandContext } from \"../run-with-context.js\";\nimport { apiErrorFailure } from \"../api-errors.js\";\nimport {\n collectRepeatableFlag,\n parseIntegerChoice,\n parseNonNegativeInteger,\n} from \"../parse.js\";\nimport { toResult } from \"../../api/errors.js\";\nimport { getOutputState } from \"../../ui/output.js\";\nimport { renderTable } from \"../../ui/table.js\";\n\ntype DefinitionStatus = \"pending\" | \"failed\" | \"success\";\n\nexport async function schemaListHandler(\n ctx: CommandContext,\n options: { status?: DefinitionStatus[]; limit: number; offset: number },\n): Promise<Result.Result<CommandOutput | undefined, CommandFailure>> {\n const definitions = toResult(\n await ctx.client.GET(\"/projects/{projectName}/definitions\", {\n params: {\n path: { projectName: ctx.projectName },\n query: {\n limit: options.limit,\n offset: options.offset,\n ...(options.status !== undefined ? { status: options.status } : {}),\n },\n },\n }),\n );\n if (Result.isFailure(definitions)) return apiErrorFailure(definitions.error);\n\n const value = definitions.value;\n return Result.succeed({\n json: value,\n text: () =>\n renderTable(\n [\"ID\", \"STATUS\", \"VERSION\", \"CREATED AT\"],\n value.definitions.map((definition) => ({\n cells: [\n String(definition.id),\n definition.status,\n String(definition.definitionVersion),\n definition.createdAt,\n ],\n })),\n getOutputState().color,\n ),\n });\n}\n\nconst VALID_STATUSES: DefinitionStatus[] = [\"pending\", \"failed\", \"success\"];\n\n// 不正値を黙って読み替えるとフィルタなしの全件取得など別の意味のクエリになるため、\n// normalize ではなく validate してエラーで弾く。\nexport function parseStatusFilter(\n value: unknown,\n): Result.Result<DefinitionStatus[] | undefined, CommandFailure> {\n if (value === undefined) return Result.succeed(undefined);\n\n const raw = Array.isArray(value) ? value : [value];\n const statuses: DefinitionStatus[] = [];\n for (const item of raw) {\n const matched = VALID_STATUSES.find((status) => status === item);\n if (matched === undefined) {\n return Result.fail({\n message: `Invalid --status value: ${String(item)}. Valid values: ${VALID_STATUSES.join(\", \")}.`,\n });\n }\n statuses.push(matched);\n }\n return Result.succeed(statuses);\n}\n\nconst listArgs = {\n ...contextArgs,\n status: {\n type: \"string\",\n description: \"Filter by status (pending, failed, success); repeatable\",\n },\n limit: {\n type: \"string\",\n description: \"Max number of definitions to return (50, 100, or 200)\",\n default: \"50\",\n },\n offset: {\n type: \"string\",\n description: \"Pagination offset\",\n default: \"0\",\n },\n} satisfies ArgsDef;\n\nexport default defineCommand({\n meta: {\n name: \"list\",\n description: \"List schema definition versions\",\n },\n args: listArgs,\n run: async ({ args, rawArgs }) => {\n const status = parseStatusFilter(collectRepeatableFlag(rawArgs, \"status\"));\n if (Result.isFailure(status)) return status;\n const limit = parseIntegerChoice(\"limit\", args.limit, [50, 100, 200]);\n if (Result.isFailure(limit)) return limit;\n const offset = parseNonNegativeInteger(\"offset\", args.offset);\n if (Result.isFailure(offset)) return offset;\n\n return runWithContext(args, (ctx) =>\n schemaListHandler(ctx, {\n status: status.value,\n limit: limit.value,\n offset: offset.value,\n }),\n );\n },\n});\n"],"mappings":";;;;;;;;AAqBA,eAAsB,kBACpB,KACA,SACmE;CACnE,MAAM,cAAc,SAClB,MAAM,IAAI,OAAO,IAAI,uCAAuC,EAC1D,QAAQ;EACN,MAAM,EAAE,aAAa,IAAI,YAAY;EACrC,OAAO;GACL,OAAO,QAAQ;GACf,QAAQ,QAAQ;GAChB,GAAI,QAAQ,WAAW,SAAY,EAAE,QAAQ,QAAQ,OAAO,IAAI,CAAC;EACnE;CACF,EACF,CAAC,CACH;CACA,IAAI,OAAO,UAAU,WAAW,GAAG,OAAO,gBAAgB,YAAY,KAAK;CAE3E,MAAM,QAAQ,YAAY;CAC1B,OAAO,OAAO,QAAQ;EACpB,MAAM;EACN,YACE,YACE;GAAC;GAAM;GAAU;GAAW;EAAY,GACxC,MAAM,YAAY,KAAK,gBAAgB,EACrC,OAAO;GACL,OAAO,WAAW,EAAE;GACpB,WAAW;GACX,OAAO,WAAW,iBAAiB;GACnC,WAAW;EACb,EACF,EAAE,GACF,eAAe,CAAC,CAAC,KACnB;CACJ,CAAC;AACH;AAEA,MAAM,iBAAqC;CAAC;CAAW;CAAU;AAAS;AAI1E,SAAgB,kBACd,OAC+D;CAC/D,IAAI,UAAU,QAAW,OAAO,OAAO,QAAQ,MAAS;CAExD,MAAM,MAAM,MAAM,QAAQ,KAAK,IAAI,QAAQ,CAAC,KAAK;CACjD,MAAM,WAA+B,CAAC;CACtC,KAAK,MAAM,QAAQ,KAAK;EACtB,MAAM,UAAU,eAAe,MAAM,WAAW,WAAW,IAAI;EAC/D,IAAI,YAAY,QACd,OAAO,OAAO,KAAK,EACjB,SAAS,2BAA2B,OAAO,IAAI,EAAE,kBAAkB,eAAe,KAAK,IAAI,EAAE,GAC/F,CAAC;EAEH,SAAS,KAAK,OAAO;CACvB;CACA,OAAO,OAAO,QAAQ,QAAQ;AAChC;AAEA,MAAM,WAAW;CACf,GAAG;CACH,QAAQ;EACN,MAAM;EACN,aAAa;CACf;CACA,OAAO;EACL,MAAM;EACN,aAAa;EACb,SAAS;CACX;CACA,QAAQ;EACN,MAAM;EACN,aAAa;EACb,SAAS;CACX;AACF;AAEA,mBAAe,cAAc;CAC3B,MAAM;EACJ,MAAM;EACN,aAAa;CACf;CACA,MAAM;CACN,KAAK,OAAO,EAAE,MAAM,cAAc;EAChC,MAAM,SAAS,kBAAkB,sBAAsB,SAAS,QAAQ,CAAC;EACzE,IAAI,OAAO,UAAU,MAAM,GAAG,OAAO;EACrC,MAAM,QAAQ,mBAAmB,SAAS,KAAK,OAAO;GAAC;GAAI;GAAK;EAAG,CAAC;EACpE,IAAI,OAAO,UAAU,KAAK,GAAG,OAAO;EACpC,MAAM,SAAS,wBAAwB,UAAU,KAAK,MAAM;EAC5D,IAAI,OAAO,UAAU,MAAM,GAAG,OAAO;EAErC,OAAO,eAAe,OAAO,QAC3B,kBAAkB,KAAK;GACrB,QAAQ,OAAO;GACf,OAAO,MAAM;GACb,QAAQ,OAAO;EACjB,CAAC,CACH;CACF;AACF,CAAC"}
1
+ {"version":3,"file":"list-sQk00GV5.mjs","names":[],"sources":["../src/cli/commands/schema/list.ts"],"sourcesContent":["import type { ArgsDef } from \"citty\";\nimport { Result } from \"@praha/byethrow\";\nimport {\n defineCommand,\n type CommandFailure,\n type CommandOutput,\n} from \"../define-command.js\";\nimport { contextArgs } from \"../shared.js\";\nimport { runWithContext, type CommandContext } from \"../run-with-context.js\";\nimport { apiErrorFailure } from \"../api-errors.js\";\nimport {\n collectRepeatableFlag,\n parseIntegerChoice,\n parseNonNegativeInteger,\n} from \"../parse.js\";\nimport { toResult } from \"../../api/errors.js\";\nimport { getOutputState } from \"../../ui/output.js\";\nimport { renderTable } from \"../../ui/table.js\";\n\ntype DefinitionStatus = \"pending\" | \"failed\" | \"success\";\n\nexport async function schemaListHandler(\n ctx: CommandContext,\n options: { status?: DefinitionStatus[]; limit: number; offset: number },\n): Promise<Result.Result<CommandOutput | undefined, CommandFailure>> {\n const definitions = toResult(\n await ctx.client.GET(\"/projects/{projectName}/definitions\", {\n params: {\n path: { projectName: ctx.projectName },\n query: {\n limit: options.limit,\n offset: options.offset,\n ...(options.status !== undefined ? { status: options.status } : {}),\n },\n },\n }),\n );\n if (Result.isFailure(definitions)) return apiErrorFailure(definitions.error);\n\n const value = definitions.value;\n return Result.succeed({\n json: value,\n text: () =>\n renderTable(\n [\"ID\", \"STATUS\", \"VERSION\", \"CREATED AT\"],\n value.definitions.map((definition) => ({\n cells: [\n String(definition.id),\n definition.status,\n String(definition.definitionVersion),\n definition.createdAt,\n ],\n })),\n getOutputState().color,\n ),\n });\n}\n\nconst VALID_STATUSES: DefinitionStatus[] = [\"pending\", \"failed\", \"success\"];\n\n// 不正値を黙って読み替えるとフィルタなしの全件取得など別の意味のクエリになるため、\n// normalize ではなく validate してエラーで弾く。\nexport function parseStatusFilter(\n value: unknown,\n): Result.Result<DefinitionStatus[] | undefined, CommandFailure> {\n if (value === undefined) return Result.succeed(undefined);\n\n const raw = Array.isArray(value) ? value : [value];\n const statuses: DefinitionStatus[] = [];\n for (const item of raw) {\n const matched = VALID_STATUSES.find((status) => status === item);\n if (matched === undefined) {\n return Result.fail({\n message: `Invalid --status value: ${String(item)}. Valid values: ${VALID_STATUSES.join(\", \")}.`,\n });\n }\n statuses.push(matched);\n }\n return Result.succeed(statuses);\n}\n\nconst listArgs = {\n ...contextArgs,\n status: {\n type: \"string\",\n description: \"Filter by status (pending, failed, success); repeatable\",\n },\n limit: {\n type: \"string\",\n description: \"Max number of definitions to return (50, 100, or 200)\",\n default: \"50\",\n },\n offset: {\n type: \"string\",\n description: \"Pagination offset\",\n default: \"0\",\n },\n} satisfies ArgsDef;\n\nexport default defineCommand({\n meta: {\n name: \"list\",\n description: \"List schema definition versions\",\n },\n args: listArgs,\n run: async ({ args, rawArgs }) => {\n const status = parseStatusFilter(collectRepeatableFlag(rawArgs, \"status\"));\n if (Result.isFailure(status)) return status;\n const limit = parseIntegerChoice(\"limit\", args.limit, [50, 100, 200]);\n if (Result.isFailure(limit)) return limit;\n const offset = parseNonNegativeInteger(\"offset\", args.offset);\n if (Result.isFailure(offset)) return offset;\n\n return runWithContext(args, (ctx) =>\n schemaListHandler(ctx, {\n status: status.value,\n limit: limit.value,\n offset: offset.value,\n }),\n );\n },\n});\n"],"mappings":";;;;;;;;AAqBA,eAAsB,kBACpB,KACA,SACmE;CACnE,MAAM,cAAc,SAClB,MAAM,IAAI,OAAO,IAAI,uCAAuC,EAC1D,QAAQ;EACN,MAAM,EAAE,aAAa,IAAI,YAAY;EACrC,OAAO;GACL,OAAO,QAAQ;GACf,QAAQ,QAAQ;GAChB,GAAI,QAAQ,WAAW,SAAY,EAAE,QAAQ,QAAQ,OAAO,IAAI,CAAC;EACnE;CACF,EACF,CAAC,CACH;CACA,IAAI,OAAO,UAAU,WAAW,GAAG,OAAO,gBAAgB,YAAY,KAAK;CAE3E,MAAM,QAAQ,YAAY;CAC1B,OAAO,OAAO,QAAQ;EACpB,MAAM;EACN,YACE,YACE;GAAC;GAAM;GAAU;GAAW;EAAY,GACxC,MAAM,YAAY,KAAK,gBAAgB,EACrC,OAAO;GACL,OAAO,WAAW,EAAE;GACpB,WAAW;GACX,OAAO,WAAW,iBAAiB;GACnC,WAAW;EACb,EACF,EAAE,GACF,eAAe,CAAC,CAAC,KACnB;CACJ,CAAC;AACH;AAEA,MAAM,iBAAqC;CAAC;CAAW;CAAU;AAAS;AAI1E,SAAgB,kBACd,OAC+D;CAC/D,IAAI,UAAU,QAAW,OAAO,OAAO,QAAQ,MAAS;CAExD,MAAM,MAAM,MAAM,QAAQ,KAAK,IAAI,QAAQ,CAAC,KAAK;CACjD,MAAM,WAA+B,CAAC;CACtC,KAAK,MAAM,QAAQ,KAAK;EACtB,MAAM,UAAU,eAAe,MAAM,WAAW,WAAW,IAAI;EAC/D,IAAI,YAAY,QACd,OAAO,OAAO,KAAK,EACjB,SAAS,2BAA2B,OAAO,IAAI,EAAE,kBAAkB,eAAe,KAAK,IAAI,EAAE,GAC/F,CAAC;EAEH,SAAS,KAAK,OAAO;CACvB;CACA,OAAO,OAAO,QAAQ,QAAQ;AAChC;AAEA,MAAM,WAAW;CACf,GAAG;CACH,QAAQ;EACN,MAAM;EACN,aAAa;CACf;CACA,OAAO;EACL,MAAM;EACN,aAAa;EACb,SAAS;CACX;CACA,QAAQ;EACN,MAAM;EACN,aAAa;EACb,SAAS;CACX;AACF;AAEA,mBAAe,cAAc;CAC3B,MAAM;EACJ,MAAM;EACN,aAAa;CACf;CACA,MAAM;CACN,KAAK,OAAO,EAAE,MAAM,cAAc;EAChC,MAAM,SAAS,kBAAkB,sBAAsB,SAAS,QAAQ,CAAC;EACzE,IAAI,OAAO,UAAU,MAAM,GAAG,OAAO;EACrC,MAAM,QAAQ,mBAAmB,SAAS,KAAK,OAAO;GAAC;GAAI;GAAK;EAAG,CAAC;EACpE,IAAI,OAAO,UAAU,KAAK,GAAG,OAAO;EACpC,MAAM,SAAS,wBAAwB,UAAU,KAAK,MAAM;EAC5D,IAAI,OAAO,UAAU,MAAM,GAAG,OAAO;EAErC,OAAO,eAAe,OAAO,QAC3B,kBAAkB,KAAK;GACrB,QAAQ,OAAO;GACf,OAAO,MAAM;GACb,QAAQ,OAAO;EACjB,CAAC,CACH;CACF;AACF,CAAC"}
@@ -2,7 +2,7 @@ import { r as getOutputState, t as defineCommand } from "./cli/main.mjs";
2
2
  import { r as contextArgs } from "./shared-CZZimGxc.mjs";
3
3
  import { a as apiErrorFailure, n as runWithContext, u as toResult } from "./run-with-context-CVhmzAFZ.mjs";
4
4
  import { t as renderTable } from "./table-MHEfbnWO.mjs";
5
- import { o as parseIntegerChoice } from "./parse-CA5fBB3x.mjs";
5
+ import { o as parseIntegerChoice } from "./parse-DA0k5AHa.mjs";
6
6
  import { Result } from "@praha/byethrow";
7
7
 
8
8
  //#region src/cli/commands/bucket/object/list.ts
@@ -79,4 +79,4 @@ var list_default = defineCommand({
79
79
 
80
80
  //#endregion
81
81
  export { list_default as default };
82
- //# sourceMappingURL=list-CfIeReBx.mjs.map
82
+ //# sourceMappingURL=list-vbMaOiza.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"list-CfIeReBx.mjs","names":[],"sources":["../src/cli/commands/bucket/object/list.ts"],"sourcesContent":["import type { ArgsDef } from \"citty\";\nimport { Result } from \"@praha/byethrow\";\nimport {\n defineCommand,\n type CommandFailure,\n type CommandOutput,\n} from \"../../define-command.js\";\nimport { contextArgs } from \"../../shared.js\";\nimport { runWithContext, type CommandContext } from \"../../run-with-context.js\";\nimport { apiErrorFailure } from \"../../api-errors.js\";\nimport { toResult } from \"../../../api/errors.js\";\nimport { getOutputState } from \"../../../ui/output.js\";\nimport { renderTable } from \"../../../ui/table.js\";\nimport { parseIntegerChoice } from \"../../parse.js\";\n\nexport async function bucketObjectListHandler(\n ctx: CommandContext,\n options: { bucket: string; limit: number; cursor?: string },\n): Promise<Result.Result<CommandOutput | undefined, CommandFailure>> {\n const objects = toResult(\n await ctx.client.GET(\n \"/projects/{projectName}/buckets/{bucketName}/objects\",\n {\n params: {\n path: { projectName: ctx.projectName, bucketName: options.bucket },\n query: {\n limit: options.limit,\n ...(options.cursor !== undefined ? { cursor: options.cursor } : {}),\n },\n },\n },\n ),\n );\n if (Result.isFailure(objects)) return apiErrorFailure(objects.error);\n\n const value = objects.value;\n return Result.succeed({\n json: value,\n text: () => {\n const table = renderTable(\n [\"KEY\", \"ORIGINAL FILENAME\", \"SIZE\", \"TYPE\", \"CREATED AT\"],\n value.objects.map((object) => ({\n cells: [\n object.key,\n object.originalFilename,\n String(object.size),\n object.type,\n object.createdAt,\n ],\n })),\n getOutputState().color,\n );\n return value.pagination.nextCursor === null\n ? table\n : `${table}\\nNext cursor: ${value.pagination.nextCursor}`;\n },\n });\n}\n\nconst listArgs = {\n ...contextArgs,\n bucket: {\n type: \"positional\",\n required: true,\n description: \"Bucket name\",\n },\n limit: {\n type: \"string\",\n description: \"Max number of objects to return (50, 100, or 200)\",\n default: \"100\",\n },\n cursor: {\n type: \"string\",\n description: \"Cursor returned by the previous page\",\n },\n} satisfies ArgsDef;\n\nexport default defineCommand({\n meta: {\n name: \"list\",\n description: \"List objects in a bucket\",\n },\n args: listArgs,\n run: async ({ args }) => {\n const limit = parseIntegerChoice(\"limit\", args.limit, [50, 100, 200]);\n if (Result.isFailure(limit)) return limit;\n\n return runWithContext(args, (ctx) =>\n bucketObjectListHandler(ctx, {\n bucket: args.bucket,\n limit: limit.value,\n cursor: typeof args.cursor === \"string\" ? args.cursor : undefined,\n }),\n );\n },\n});\n"],"mappings":";;;;;;;;AAeA,eAAsB,wBACpB,KACA,SACmE;CACnE,MAAM,UAAU,SACd,MAAM,IAAI,OAAO,IACf,wDACA,EACE,QAAQ;EACN,MAAM;GAAE,aAAa,IAAI;GAAa,YAAY,QAAQ;EAAO;EACjE,OAAO;GACL,OAAO,QAAQ;GACf,GAAI,QAAQ,WAAW,SAAY,EAAE,QAAQ,QAAQ,OAAO,IAAI,CAAC;EACnE;CACF,EACF,CACF,CACF;CACA,IAAI,OAAO,UAAU,OAAO,GAAG,OAAO,gBAAgB,QAAQ,KAAK;CAEnE,MAAM,QAAQ,QAAQ;CACtB,OAAO,OAAO,QAAQ;EACpB,MAAM;EACN,YAAY;GACV,MAAM,QAAQ,YACZ;IAAC;IAAO;IAAqB;IAAQ;IAAQ;GAAY,GACzD,MAAM,QAAQ,KAAK,YAAY,EAC7B,OAAO;IACL,OAAO;IACP,OAAO;IACP,OAAO,OAAO,IAAI;IAClB,OAAO;IACP,OAAO;GACT,EACF,EAAE,GACF,eAAe,CAAC,CAAC,KACnB;GACA,OAAO,MAAM,WAAW,eAAe,OACnC,QACA,GAAG,MAAM,iBAAiB,MAAM,WAAW;EACjD;CACF,CAAC;AACH;AAEA,MAAM,WAAW;CACf,GAAG;CACH,QAAQ;EACN,MAAM;EACN,UAAU;EACV,aAAa;CACf;CACA,OAAO;EACL,MAAM;EACN,aAAa;EACb,SAAS;CACX;CACA,QAAQ;EACN,MAAM;EACN,aAAa;CACf;AACF;AAEA,mBAAe,cAAc;CAC3B,MAAM;EACJ,MAAM;EACN,aAAa;CACf;CACA,MAAM;CACN,KAAK,OAAO,EAAE,WAAW;EACvB,MAAM,QAAQ,mBAAmB,SAAS,KAAK,OAAO;GAAC;GAAI;GAAK;EAAG,CAAC;EACpE,IAAI,OAAO,UAAU,KAAK,GAAG,OAAO;EAEpC,OAAO,eAAe,OAAO,QAC3B,wBAAwB,KAAK;GAC3B,QAAQ,KAAK;GACb,OAAO,MAAM;GACb,QAAQ,OAAO,KAAK,WAAW,WAAW,KAAK,SAAS;EAC1D,CAAC,CACH;CACF;AACF,CAAC"}
1
+ {"version":3,"file":"list-vbMaOiza.mjs","names":[],"sources":["../src/cli/commands/bucket/object/list.ts"],"sourcesContent":["import type { ArgsDef } from \"citty\";\nimport { Result } from \"@praha/byethrow\";\nimport {\n defineCommand,\n type CommandFailure,\n type CommandOutput,\n} from \"../../define-command.js\";\nimport { contextArgs } from \"../../shared.js\";\nimport { runWithContext, type CommandContext } from \"../../run-with-context.js\";\nimport { apiErrorFailure } from \"../../api-errors.js\";\nimport { toResult } from \"../../../api/errors.js\";\nimport { getOutputState } from \"../../../ui/output.js\";\nimport { renderTable } from \"../../../ui/table.js\";\nimport { parseIntegerChoice } from \"../../parse.js\";\n\nexport async function bucketObjectListHandler(\n ctx: CommandContext,\n options: { bucket: string; limit: number; cursor?: string },\n): Promise<Result.Result<CommandOutput | undefined, CommandFailure>> {\n const objects = toResult(\n await ctx.client.GET(\n \"/projects/{projectName}/buckets/{bucketName}/objects\",\n {\n params: {\n path: { projectName: ctx.projectName, bucketName: options.bucket },\n query: {\n limit: options.limit,\n ...(options.cursor !== undefined ? { cursor: options.cursor } : {}),\n },\n },\n },\n ),\n );\n if (Result.isFailure(objects)) return apiErrorFailure(objects.error);\n\n const value = objects.value;\n return Result.succeed({\n json: value,\n text: () => {\n const table = renderTable(\n [\"KEY\", \"ORIGINAL FILENAME\", \"SIZE\", \"TYPE\", \"CREATED AT\"],\n value.objects.map((object) => ({\n cells: [\n object.key,\n object.originalFilename,\n String(object.size),\n object.type,\n object.createdAt,\n ],\n })),\n getOutputState().color,\n );\n return value.pagination.nextCursor === null\n ? table\n : `${table}\\nNext cursor: ${value.pagination.nextCursor}`;\n },\n });\n}\n\nconst listArgs = {\n ...contextArgs,\n bucket: {\n type: \"positional\",\n required: true,\n description: \"Bucket name\",\n },\n limit: {\n type: \"string\",\n description: \"Max number of objects to return (50, 100, or 200)\",\n default: \"100\",\n },\n cursor: {\n type: \"string\",\n description: \"Cursor returned by the previous page\",\n },\n} satisfies ArgsDef;\n\nexport default defineCommand({\n meta: {\n name: \"list\",\n description: \"List objects in a bucket\",\n },\n args: listArgs,\n run: async ({ args }) => {\n const limit = parseIntegerChoice(\"limit\", args.limit, [50, 100, 200]);\n if (Result.isFailure(limit)) return limit;\n\n return runWithContext(args, (ctx) =>\n bucketObjectListHandler(ctx, {\n bucket: args.bucket,\n limit: limit.value,\n cursor: typeof args.cursor === \"string\" ? args.cursor : undefined,\n }),\n );\n },\n});\n"],"mappings":";;;;;;;;AAeA,eAAsB,wBACpB,KACA,SACmE;CACnE,MAAM,UAAU,SACd,MAAM,IAAI,OAAO,IACf,wDACA,EACE,QAAQ;EACN,MAAM;GAAE,aAAa,IAAI;GAAa,YAAY,QAAQ;EAAO;EACjE,OAAO;GACL,OAAO,QAAQ;GACf,GAAI,QAAQ,WAAW,SAAY,EAAE,QAAQ,QAAQ,OAAO,IAAI,CAAC;EACnE;CACF,EACF,CACF,CACF;CACA,IAAI,OAAO,UAAU,OAAO,GAAG,OAAO,gBAAgB,QAAQ,KAAK;CAEnE,MAAM,QAAQ,QAAQ;CACtB,OAAO,OAAO,QAAQ;EACpB,MAAM;EACN,YAAY;GACV,MAAM,QAAQ,YACZ;IAAC;IAAO;IAAqB;IAAQ;IAAQ;GAAY,GACzD,MAAM,QAAQ,KAAK,YAAY,EAC7B,OAAO;IACL,OAAO;IACP,OAAO;IACP,OAAO,OAAO,IAAI;IAClB,OAAO;IACP,OAAO;GACT,EACF,EAAE,GACF,eAAe,CAAC,CAAC,KACnB;GACA,OAAO,MAAM,WAAW,eAAe,OACnC,QACA,GAAG,MAAM,iBAAiB,MAAM,WAAW;EACjD;CACF,CAAC;AACH;AAEA,MAAM,WAAW;CACf,GAAG;CACH,QAAQ;EACN,MAAM;EACN,UAAU;EACV,aAAa;CACf;CACA,OAAO;EACL,MAAM;EACN,aAAa;EACb,SAAS;CACX;CACA,QAAQ;EACN,MAAM;EACN,aAAa;CACf;AACF;AAEA,mBAAe,cAAc;CAC3B,MAAM;EACJ,MAAM;EACN,aAAa;CACf;CACA,MAAM;CACN,KAAK,OAAO,EAAE,WAAW;EACvB,MAAM,QAAQ,mBAAmB,SAAS,KAAK,OAAO;GAAC;GAAI;GAAK;EAAG,CAAC;EACpE,IAAI,OAAO,UAAU,KAAK,GAAG,OAAO;EAEpC,OAAO,eAAe,OAAO,QAC3B,wBAAwB,KAAK;GAC3B,QAAQ,KAAK;GACb,OAAO,MAAM;GACb,QAAQ,OAAO,KAAK,WAAW,WAAW,KAAK,SAAS;EAC1D,CAAC,CACH;CACF;AACF,CAAC"}
@@ -7,13 +7,13 @@ var management_default = require_cli_main.defineCommand({
7
7
  description: "Manage management keys (content CRUD with RBAC)"
8
8
  },
9
9
  subCommands: {
10
- list: () => Promise.resolve().then(() => require("./list-V3W6hvOa.cjs")).then((m) => m.default),
11
- create: () => Promise.resolve().then(() => require("./create--1NYduI_.cjs")).then((m) => m.default),
12
- update: () => Promise.resolve().then(() => require("./update-D-X32BVW.cjs")).then((m) => m.default),
13
- delete: () => Promise.resolve().then(() => require("./delete-CGW0VMK6.cjs")).then((m) => m.default)
10
+ list: () => Promise.resolve().then(() => require("./list-CFwW0G9f.cjs")).then((m) => m.default),
11
+ create: () => Promise.resolve().then(() => require("./create-CmOriwGo.cjs")).then((m) => m.default),
12
+ update: () => Promise.resolve().then(() => require("./update-DRnN1kiu.cjs")).then((m) => m.default),
13
+ delete: () => Promise.resolve().then(() => require("./delete-WpMIIvjj.cjs")).then((m) => m.default)
14
14
  }
15
15
  });
16
16
 
17
17
  //#endregion
18
18
  exports.default = management_default;
19
- //# sourceMappingURL=management-DHXxdCra.cjs.map
19
+ //# sourceMappingURL=management-BGYcZB4c.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"management-DHXxdCra.cjs","names":["defineCommand"],"sources":["../src/cli/commands/key/management/index.ts"],"sourcesContent":["import { defineCommand } from \"../../define-command.js\";\n\nexport default defineCommand({\n meta: {\n name: \"management\",\n description: \"Manage management keys (content CRUD with RBAC)\",\n },\n subCommands: {\n list: () => import(\"./list.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,yBAAeA,+BAAc;CAC3B,MAAM;EACJ,MAAM;EACN,aAAa;CACf;CACA,aAAa;EACX,iDAAY,wBAAoB,MAAM,MAAM,EAAE,OAAO;EACrD,mDAAc,0BAAsB,MAAM,MAAM,EAAE,OAAO;EACzD,mDAAc,0BAAsB,MAAM,MAAM,EAAE,OAAO;EACzD,mDAAc,0BAAsB,MAAM,MAAM,EAAE,OAAO;CAC3D;AACF,CAAC"}
1
+ {"version":3,"file":"management-BGYcZB4c.cjs","names":["defineCommand"],"sources":["../src/cli/commands/key/management/index.ts"],"sourcesContent":["import { defineCommand } from \"../../define-command.js\";\n\nexport default defineCommand({\n meta: {\n name: \"management\",\n description: \"Manage management keys (content CRUD with RBAC)\",\n },\n subCommands: {\n list: () => import(\"./list.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,yBAAeA,+BAAc;CAC3B,MAAM;EACJ,MAAM;EACN,aAAa;CACf;CACA,aAAa;EACX,iDAAY,wBAAoB,MAAM,MAAM,EAAE,OAAO;EACrD,mDAAc,0BAAsB,MAAM,MAAM,EAAE,OAAO;EACzD,mDAAc,0BAAsB,MAAM,MAAM,EAAE,OAAO;EACzD,mDAAc,0BAAsB,MAAM,MAAM,EAAE,OAAO;CAC3D;AACF,CAAC"}
@@ -7,13 +7,13 @@ var management_default = defineCommand({
7
7
  description: "Manage management keys (content CRUD with RBAC)"
8
8
  },
9
9
  subCommands: {
10
- list: () => import("./list-D24J_Qbm.mjs").then((m) => m.default),
11
- create: () => import("./create-CkFBiEDH.mjs").then((m) => m.default),
12
- update: () => import("./update-CSiOfiPL.mjs").then((m) => m.default),
13
- delete: () => import("./delete-BenBNL2p.mjs").then((m) => m.default)
10
+ list: () => import("./list-ocfd7631.mjs").then((m) => m.default),
11
+ create: () => import("./create-B1ZBOqcV.mjs").then((m) => m.default),
12
+ update: () => import("./update-CQ4n4Xuf.mjs").then((m) => m.default),
13
+ delete: () => import("./delete-XWJRhBFs.mjs").then((m) => m.default)
14
14
  }
15
15
  });
16
16
 
17
17
  //#endregion
18
18
  export { management_default as default };
19
- //# sourceMappingURL=management-BaN1Nynl.mjs.map
19
+ //# sourceMappingURL=management-DDACMgbU.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"management-BaN1Nynl.mjs","names":[],"sources":["../src/cli/commands/key/management/index.ts"],"sourcesContent":["import { defineCommand } from \"../../define-command.js\";\n\nexport default defineCommand({\n meta: {\n name: \"management\",\n description: \"Manage management keys (content CRUD with RBAC)\",\n },\n subCommands: {\n list: () => import(\"./list.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,yBAAe,cAAc;CAC3B,MAAM;EACJ,MAAM;EACN,aAAa;CACf;CACA,aAAa;EACX,YAAY,OAAO,sBAAY,CAAC,MAAM,MAAM,EAAE,OAAO;EACrD,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"}
1
+ {"version":3,"file":"management-DDACMgbU.mjs","names":[],"sources":["../src/cli/commands/key/management/index.ts"],"sourcesContent":["import { defineCommand } from \"../../define-command.js\";\n\nexport default defineCommand({\n meta: {\n name: \"management\",\n description: \"Manage management keys (content CRUD with RBAC)\",\n },\n subCommands: {\n list: () => import(\"./list.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,yBAAe,cAAc;CAC3B,MAAM;EACJ,MAAM;EACN,aAAa;CACf;CACA,aAAa;EACX,YAAY,OAAO,sBAAY,CAAC,MAAM,MAAM,EAAE,OAAO;EACrD,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"}
@@ -7,7 +7,7 @@ var object_default = require_cli_main.defineCommand({
7
7
  description: "Manage objects in a bucket"
8
8
  },
9
9
  subCommands: {
10
- list: () => Promise.resolve().then(() => require("./list-CJuefq_I.cjs")).then((m) => m.default),
10
+ list: () => Promise.resolve().then(() => require("./list-BzLraBnA.cjs")).then((m) => m.default),
11
11
  get: () => Promise.resolve().then(() => require("./get-jwXRlIBJ.cjs")).then((m) => m.default),
12
12
  upload: () => Promise.resolve().then(() => require("./upload-C43ZXxyb.cjs")).then((m) => m.default),
13
13
  download: () => Promise.resolve().then(() => require("./download-ogGbb3FU.cjs")).then((m) => m.default),
@@ -17,4 +17,4 @@ var object_default = require_cli_main.defineCommand({
17
17
 
18
18
  //#endregion
19
19
  exports.default = object_default;
20
- //# sourceMappingURL=object-DT7UEW9G.cjs.map
20
+ //# sourceMappingURL=object-DVqidsEc.cjs.map
@@ -1 +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"}
1
+ {"version":3,"file":"object-DVqidsEc.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"}
@@ -7,7 +7,7 @@ var object_default = defineCommand({
7
7
  description: "Manage objects in a bucket"
8
8
  },
9
9
  subCommands: {
10
- list: () => import("./list-CfIeReBx.mjs").then((m) => m.default),
10
+ list: () => import("./list-vbMaOiza.mjs").then((m) => m.default),
11
11
  get: () => import("./get-DBxhbN1G.mjs").then((m) => m.default),
12
12
  upload: () => import("./upload-DGgJ1TQk.mjs").then((m) => m.default),
13
13
  download: () => import("./download-oFGzg30E.mjs").then((m) => m.default),
@@ -17,4 +17,4 @@ var object_default = defineCommand({
17
17
 
18
18
  //#endregion
19
19
  export { object_default as default };
20
- //# sourceMappingURL=object-BfUf8Y6w.mjs.map
20
+ //# sourceMappingURL=object-qdBdEghr.mjs.map
@@ -1 +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"}
1
+ {"version":3,"file":"object-qdBdEghr.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"}
@@ -48,7 +48,7 @@ function toCamelCase(value) {
48
48
  return value.replace(/-([a-z])/g, (_, char) => char.toUpperCase());
49
49
  }
50
50
  function collectRepeatableFlag(rawArgs, flag) {
51
- const names = new Set([`--${flag}`, `--${toCamelCase(flag)}`]);
51
+ const names = /* @__PURE__ */ new Set([`--${flag}`, `--${toCamelCase(flag)}`]);
52
52
  const values = [];
53
53
  let seen = false;
54
54
  for (let i = 0; i < rawArgs.length; i++) {
@@ -226,4 +226,4 @@ Object.defineProperty(exports, 'splitColonPair', {
226
226
  return splitColonPair;
227
227
  }
228
228
  });
229
- //# sourceMappingURL=parse-BeO2IwfI.cjs.map
229
+ //# sourceMappingURL=parse-C8oHgQXx.cjs.map
@@ -1 +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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"}
1
+ {"version":3,"file":"parse-C8oHgQXx.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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"}
@@ -46,7 +46,7 @@ function toCamelCase(value) {
46
46
  return value.replace(/-([a-z])/g, (_, char) => char.toUpperCase());
47
47
  }
48
48
  function collectRepeatableFlag(rawArgs, flag) {
49
- const names = new Set([`--${flag}`, `--${toCamelCase(flag)}`]);
49
+ const names = /* @__PURE__ */ new Set([`--${flag}`, `--${toCamelCase(flag)}`]);
50
50
  const values = [];
51
51
  let seen = false;
52
52
  for (let i = 0; i < rawArgs.length; i++) {
@@ -147,4 +147,4 @@ function tryParseJson(text) {
147
147
 
148
148
  //#endregion
149
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
150
+ //# sourceMappingURL=parse-DA0k5AHa.mjs.map