@metabase/cli 0.1.5 → 0.1.6

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 (217) hide show
  1. package/README.md +115 -102
  2. package/dist/{add-collection-C_iovi9i.mjs → add-collection-BU8r3r2M.mjs} +9 -4
  3. package/dist/add-collection-C0w6ACQF.mjs +11 -0
  4. package/dist/{archive-Dvzrmdbk.mjs → archive-BNinrUak.mjs} +9 -8
  5. package/dist/{archive-WaEW85NB.mjs → archive-C1enZgKV.mjs} +8 -7
  6. package/dist/archive-CDA0KxL8.mjs +40 -0
  7. package/dist/{archive-BKPO8lEO.mjs → archive-CRhiBpPJ.mjs} +9 -8
  8. package/dist/{archive-DdaP94H3.mjs → archive-DMPS8Kih.mjs} +9 -8
  9. package/dist/archive-lWgqiFAt.mjs +40 -0
  10. package/dist/auth-CzXb_zB2.mjs +19 -0
  11. package/dist/{body-XtR7-uCO.mjs → body-DjdFxjpg.mjs} +4 -4
  12. package/dist/{branches-XUY4JY-X.mjs → branches-B1WRfG7-.mjs} +11 -7
  13. package/dist/{cancel-BrUVO_ax.mjs → cancel-Dl_Ho056.mjs} +7 -6
  14. package/dist/{cancel-task-oXheTOB6.mjs → cancel-task-CdigdCaO.mjs} +11 -7
  15. package/dist/capabilities-7e9MgquN.mjs +29 -0
  16. package/dist/card-DP4rfoOi.mjs +21 -0
  17. package/dist/{card-CQxvHeyP.mjs → card-DlCAaAPq.mjs} +1 -1
  18. package/dist/{cards-CONTTAG9.mjs → cards-BGiJS675.mjs} +8 -7
  19. package/dist/cli.mjs +264 -44
  20. package/dist/collection-tY18ezvn.mjs +21 -0
  21. package/dist/{predicates-CGO17Q15.mjs → command-augment-BH9qgQ5u.mjs} +66 -14
  22. package/dist/create-BNiva__H.mjs +52 -0
  23. package/dist/{create-Ca9lIDwP.mjs → create-BTcpaop_.mjs} +9 -8
  24. package/dist/{create-V-q2rU0T.mjs → create-BYlIju0b.mjs} +14 -12
  25. package/dist/{create-DZxUeqdf.mjs → create-Be_0Vier.mjs} +10 -9
  26. package/dist/{create-kYpjobrq.mjs → create-CHF313Qg.mjs} +13 -9
  27. package/dist/{create-swbIXdo5.mjs → create-CwGtmwqm.mjs} +14 -12
  28. package/dist/{create-Dq25vsMu.mjs → create-CzzrbL0u.mjs} +10 -9
  29. package/dist/{create-Le3Bqn7b.mjs → create-DGth_uOp.mjs} +14 -12
  30. package/dist/{create-branch-D5u14AxL.mjs → create-branch-DKZkoQ64.mjs} +11 -7
  31. package/dist/{create-Cs2xntFG.mjs → create-dhxPxfF3.mjs} +16 -14
  32. package/dist/{credentials-BIQ1cEzM.mjs → credentials-dzeq7ckm.mjs} +12 -11
  33. package/dist/{current-task-DCq7rk9V.mjs → current-task-CCRzm0_7.mjs} +11 -7
  34. package/dist/dashboard-ChM_Tu0l.mjs +22 -0
  35. package/dist/{dashboard-CnMD04PQ.mjs → dashboard-FY5UzJ_Z.mjs} +2 -1
  36. package/dist/{database-BSvzYlRe.mjs → database-CIXwHKjK.mjs} +3 -3
  37. package/dist/{database-vvig8k4x.mjs → database-lH-B3G1I.mjs} +1 -1
  38. package/dist/db-DrQn_i3W.mjs +22 -0
  39. package/dist/{remove-C6bS0Z6w.mjs → delete-CM3jnAeQ.mjs} +21 -20
  40. package/dist/{delete-CUx6RT9e.mjs → delete-Dimc-2y8.mjs} +9 -8
  41. package/dist/{delete-VTAS9EUt.mjs → delete-ZjnV35OJ.mjs} +9 -8
  42. package/dist/{delete-runtime-DfFMWJJ6.mjs → delete-runtime-B6RQo_pw.mjs} +5 -3
  43. package/dist/{delete-table-DzUneMKe.mjs → delete-table-agZJpivt.mjs} +9 -8
  44. package/dist/{deprovision-CpJfGgCt.mjs → deprovision-CwxcIT3k.mjs} +16 -12
  45. package/dist/{dirty-nkAOXxgC.mjs → dirty-D4d0yHqj.mjs} +11 -7
  46. package/dist/{docker-D5FTIoD0.mjs → docker-Oq80q3tu.mjs} +4 -4
  47. package/dist/{translate-Cqsd0Px5.mjs → eid-BXzaQh0o.mjs} +37 -22
  48. package/dist/error-C9S6PN3-.mjs +190 -0
  49. package/dist/{export-BWvY7X_G.mjs → export-DTygoXBP.mjs} +17 -16
  50. package/dist/field-Z6Pcxf4n.mjs +19 -0
  51. package/dist/{fields-dH16G5UV.mjs → fields-CoQi99gv.mjs} +9 -8
  52. package/dist/{get-BnBRKHr7.mjs → get-Bzys7vgp.mjs} +8 -7
  53. package/dist/{get-B7i_nYJB.mjs → get-C2p383Qc.mjs} +8 -7
  54. package/dist/{get-D96QEU49.mjs → get-C3HdQ91a.mjs} +8 -7
  55. package/dist/{get-DNN1X2gN.mjs → get-CP3Z3NiH.mjs} +9 -8
  56. package/dist/{get-CACaBFLt.mjs → get-C_w1kvN3.mjs} +9 -8
  57. package/dist/{get-D8e_RzZ0.mjs → get-CzuzeKSe.mjs} +10 -9
  58. package/dist/{get-C6SR3A9t.mjs → get-D3SbEQSE.mjs} +10 -9
  59. package/dist/{get-7macOPAI.mjs → get-DFxZXaKz.mjs} +7 -7
  60. package/dist/{get-DAWofnzK.mjs → get-DQTZG_NP.mjs} +8 -7
  61. package/dist/{get-BcqxMVC1.mjs → get-DSWFjy7O.mjs} +8 -7
  62. package/dist/{get-R7OaVL_t.mjs → get-Ddr0XLh7.mjs} +8 -7
  63. package/dist/{get-B08K82JV.mjs → get-Hc93A0Yz.mjs} +8 -7
  64. package/dist/{get-CKxlhMy1.mjs → get-lb7q3JYs.mjs} +7 -6
  65. package/dist/get-run-B7sKdaDU.mjs +38 -0
  66. package/dist/git-sync-CiGAad76.mjs +28 -0
  67. package/dist/{has-remote-changes-BAnIXQXU.mjs → has-remote-changes-BY10-nnE.mjs} +11 -7
  68. package/dist/{import-CfdPEMng.mjs → import-CiMz4Wz-.mjs} +17 -16
  69. package/dist/{input-BQ-BZA8h.mjs → input-cMSEqISy.mjs} +7 -4
  70. package/dist/{is-dirty-CZWcG0vj.mjs → is-dirty-BZOaryxT.mjs} +9 -4
  71. package/dist/is-dirty-Ume4oV0j.mjs +10 -0
  72. package/dist/{items-DqwahOKf.mjs → items-BWfvkY-J.mjs} +9 -8
  73. package/dist/key-C2XG394c.mjs +17 -0
  74. package/dist/license-Dxarh-gG.mjs +17 -0
  75. package/dist/{list-vF4EneaE.mjs → list--OYdUTtu.mjs} +7 -6
  76. package/dist/{list-yxVAE1S7.mjs → list-2j7GsXsl.mjs} +7 -6
  77. package/dist/{list-D41gfkKb.mjs → list-BI4zr8LW.mjs} +10 -8
  78. package/dist/{list-BpNU1neq.mjs → list-Brgh-Z2v.mjs} +8 -6
  79. package/dist/{list-ViT2KWhv.mjs → list-C3hfovHv.mjs} +7 -6
  80. package/dist/{list-CQkDqphl.mjs → list-CL7eCOQE.mjs} +7 -6
  81. package/dist/{list-L63TpX1t.mjs → list-Clz5igWg.mjs} +7 -7
  82. package/dist/list-D4sFiqX8.mjs +173 -0
  83. package/dist/{list-oftHLFbE.mjs → list-DXH7TlkU.mjs} +9 -7
  84. package/dist/{list-BqNMpIXy.mjs → list-DZ8fNUoQ.mjs} +9 -8
  85. package/dist/{list-Bkd7Nbds.mjs → list-SOG0whQ-.mjs} +7 -6
  86. package/dist/{list-J277Qtki.mjs → list-d58BprgJ.mjs} +7 -6
  87. package/dist/{list-DJcGwJ4W.mjs → list-sD5N3fGk.mjs} +9 -8
  88. package/dist/{list-DBOYoJtA.mjs → list-zSO0DMw-.mjs} +10 -6
  89. package/dist/{login-D1nZwgKv.mjs → login-Bm2AnCez.mjs} +65 -80
  90. package/dist/{logout-DD4q5whi.mjs → logout-BlyRJODO.mjs} +8 -7
  91. package/dist/{logs-Ci3mJE2z.mjs → logs-CywPikkL.mjs} +9 -8
  92. package/dist/{manifest-CGM7XNLC.mjs → manifest-BBR46KFM.mjs} +15 -15
  93. package/dist/measure-C44EK_xt.mjs +20 -0
  94. package/dist/{measure-BEQfnLdN.mjs → measure-ClESGxIb.mjs} +2 -2
  95. package/dist/{metadata-BDat-jN9.mjs → metadata-B8ZSF9LA.mjs} +10 -9
  96. package/dist/{metadata-29_qlqbz.mjs → metadata-DqiI2q9q.mjs} +9 -8
  97. package/dist/parse-enum-CrEWOhuY.mjs +11 -0
  98. package/dist/{parse-id-CysSaCbf.mjs → parse-id-lk_K-CEF.mjs} +1 -1
  99. package/dist/{parse-ref-D1yeDOn8.mjs → parse-ref-BiETXmvm.mjs} +1 -1
  100. package/dist/{parse-schemas-B10n01ez.mjs → parse-schemas-BqUdWUwq.mjs} +2 -2
  101. package/dist/{path-DLByFMMA.mjs → path-AEtZ3mBq.mjs} +7 -7
  102. package/dist/{poll-p9Y7-JEQ.mjs → poll-DHKDpCiq.mjs} +2 -2
  103. package/dist/{poll-task-BQe0NvJZ.mjs → poll-task-Cooi0lQV.mjs} +3 -20
  104. package/dist/{preflight-CvFu0Cct.mjs → preflight-aXV5LyDs.mjs} +4 -4
  105. package/dist/{process-zJeVJZTM.mjs → process-C7V8LJ-j.mjs} +1 -1
  106. package/dist/{prompt-DgDNy_Pc.mjs → prompt-CFKoys7k.mjs} +3 -1
  107. package/dist/{provision-BP-b4Are.mjs → provision-UWcNDoDe.mjs} +29 -24
  108. package/dist/{ps-BxQdpkr5.mjs → ps-CJU0EbrC.mjs} +5 -3
  109. package/dist/ps-DEroLgbI.mjs +11 -0
  110. package/dist/{query-CFH4nBlK.mjs → query-AaKzYnTY.mjs} +9 -8
  111. package/dist/{query-C7zTlFJA.mjs → query-BlsVNZpD.mjs} +15 -13
  112. package/dist/{remove-BuWxx3hY.mjs → remove-BFWun0e8.mjs} +9 -8
  113. package/dist/{remove-collection-Bc4roCq0.mjs → remove-collection-CoCmrrQs.mjs} +13 -9
  114. package/dist/{render-DuoDUTVL.mjs → render-CfznwleY.mjs} +15 -17
  115. package/dist/render-OQn3iRsI.mjs +32 -0
  116. package/dist/{rescan-values-DabyRYQ_.mjs → rescan-values-C0FDsjT7.mjs} +10 -9
  117. package/dist/{run-Cl-9RtC4.mjs → run-B4Wn43zm.mjs} +10 -9
  118. package/dist/{runs-BH6s1Zao.mjs → runs-Bbaszr18.mjs} +9 -8
  119. package/dist/{runtime-CDu6fykq.mjs → runtime-Dmv5VtUK.mjs} +657 -428
  120. package/dist/{schema-tables-i58wp_p3.mjs → schema-tables-CaWinbuK.mjs} +9 -8
  121. package/dist/{schemas-_m8RYRl9.mjs → schemas-DUgGpAyB.mjs} +7 -6
  122. package/dist/{search-DObOsjbP.mjs → search-BLrBXLUk.mjs} +12 -16
  123. package/dist/segment-B3Uwwcsm.mjs +20 -0
  124. package/dist/{set-CJA9dpK6.mjs → set-B8cUbRLD.mjs} +13 -12
  125. package/dist/{set-CwVWeAsi.mjs → set-DfGsta5O.mjs} +11 -10
  126. package/dist/{setting-Czy4ws6h.mjs → setting-D2p2MA7f.mjs} +3 -3
  127. package/dist/{setup-DqBOe3HZ.mjs → setup-C9ikBRw_.mjs} +9 -8
  128. package/dist/{skills-C2rTVj0n.mjs → skills-CUHIcQS6.mjs} +3 -3
  129. package/dist/{skills-CHU7uuDU.mjs → skills-CiN1OQ8W.mjs} +2 -2
  130. package/dist/snippet-B7D0uWlz.mjs +20 -0
  131. package/dist/{start-CfruN4wF.mjs → start-3PX3ahjT.mjs} +68 -37
  132. package/dist/{stash-CWuXKSZq.mjs → stash-EIDcSvpF.mjs} +17 -16
  133. package/dist/{status-D-RYZB9G.mjs → status-95ElRAu9.mjs} +12 -8
  134. package/dist/status-B0_MiZEf.mjs +100 -0
  135. package/dist/status-CEplmC44.mjs +34 -0
  136. package/dist/{stop-D8Hr4cKX.mjs → stop-CQ0XGrN8.mjs} +11 -10
  137. package/dist/{summary-Lt2XLBK9.mjs → summary-C12LiEuJ.mjs} +8 -7
  138. package/dist/{sync-schema-BDElSynU.mjs → sync-schema-Ba8M3DiX.mjs} +10 -9
  139. package/dist/{table-B-PYcgGb.mjs → table-C7a5V6Zn.mjs} +1 -1
  140. package/dist/table-e6h8SLVX.mjs +20 -0
  141. package/dist/transform-BMYh1lsC.mjs +25 -0
  142. package/dist/transform-job-Cm7z5TfH.mjs +20 -0
  143. package/dist/{transform-job-BrhOLO4M.mjs → transform-job-DeTDPMxt.mjs} +1 -1
  144. package/dist/{tree-DfvjDjmk.mjs → tree-Des2ZG9d.mjs} +6 -5
  145. package/dist/{update-CqnDMNtZ.mjs → update-Bx54nWEI.mjs} +17 -15
  146. package/dist/{update-D9Z8cL7h.mjs → update-CyIZdbIQ.mjs} +11 -10
  147. package/dist/{update-CVxOxmt6.mjs → update-DBi5U8zb.mjs} +16 -14
  148. package/dist/{update-BYduslhn.mjs → update-DHZubok3.mjs} +18 -14
  149. package/dist/{update-BgcroYkF.mjs → update-DSgceARZ.mjs} +11 -10
  150. package/dist/{update-zp7pCBZH.mjs → update-DzAN4SPj.mjs} +15 -13
  151. package/dist/{update-qnFY5IuC.mjs → update-F6DmZncY.mjs} +11 -10
  152. package/dist/{update-B0bjPqKC.mjs → update-_QfgNa53.mjs} +12 -11
  153. package/dist/{update-dashcard-CQ3kmmss.mjs → update-dashcard-wpSjv4M7.mjs} +11 -10
  154. package/dist/{update-DzgXF082.mjs → update-mYVnoYNV.mjs} +15 -13
  155. package/dist/{update-DuA8-cCq.mjs → update-njHe3j-s.mjs} +15 -13
  156. package/dist/{upgrade-CIgTr2CG.mjs → upgrade-iAuvhX-W.mjs} +9 -8
  157. package/dist/{url-B5MgZXzg.mjs → url-DWaT6WIZ.mjs} +11 -10
  158. package/dist/{uuid-CJz9TmHI.mjs → uuid-CMKnS8-z.mjs} +8 -6
  159. package/dist/{validate-CB0bu50i.mjs → validate-dPEOnOf8.mjs} +2 -1
  160. package/dist/{validate-query-CavIA0Q2.mjs → validate-query-Cw6WE5Y8.mjs} +3 -3
  161. package/dist/{values-BXN6tx1i.mjs → values-BfSTAbzc.mjs} +8 -7
  162. package/dist/verify-D5YtTqqp.mjs +79 -0
  163. package/dist/{wait-BFqBlg0y.mjs → wait-8yV9_WIo.mjs} +2 -2
  164. package/dist/{wait-tDp9ZOou.mjs → wait-Bv3Tsnv4.mjs} +12 -8
  165. package/dist/{wait-flags-CN-e9zNq.mjs → wait-flags-Dzq9BGQY.mjs} +20 -9
  166. package/dist/workspace-CKLZrR7l.mjs +26 -0
  167. package/dist/{workspace-credentials-4lIxxz4g.mjs → workspace-credentials-BXpABsNZ.mjs} +2 -2
  168. package/dist/{yaml-ECiog374.mjs → yaml-YTQiYJ9s.mjs} +1 -1
  169. package/package.json +2 -1
  170. package/skill-data/core/SKILL.md +55 -453
  171. package/skill-data/git-sync/SKILL.md +1 -1
  172. package/skill-data/mbql/SKILL.md +156 -0
  173. package/skill-data/mbql/references/operators.md +253 -0
  174. package/skill-data/transform/SKILL.md +2 -40
  175. package/skill-data/viz/SKILL.md +137 -0
  176. package/skill-data/viz/references/settings.md +312 -0
  177. package/skill-data/workspace/SKILL.md +45 -63
  178. package/skills/metabase-cli/SKILL.md +5 -26
  179. package/dist/add-collection-ucsyAMkV.mjs +0 -11
  180. package/dist/api-key-BENHbTbV.mjs +0 -13
  181. package/dist/auth-DICRtJDy.mjs +0 -19
  182. package/dist/card-l-UmrUIo.mjs +0 -20
  183. package/dist/collection-oV0olVY-.mjs +0 -19
  184. package/dist/command-augment-D9pI9Vbh.mjs +0 -11
  185. package/dist/create-CrUq6sib.mjs +0 -125
  186. package/dist/create-D3Z878yr.mjs +0 -50
  187. package/dist/dashboard-hbKDd36X.mjs +0 -20
  188. package/dist/db-qVK6NsdB.mjs +0 -22
  189. package/dist/eid-CDFXX_6H.mjs +0 -13
  190. package/dist/field-C0LE7RQI.mjs +0 -18
  191. package/dist/flag-pair-Fmcdkrfx.mjs +0 -17
  192. package/dist/get-run-CwFuR4Uw.mjs +0 -36
  193. package/dist/git-sync-DV7YjniX.mjs +0 -28
  194. package/dist/is-dirty-LxVbm2C5.mjs +0 -10
  195. package/dist/key-CCJdVWKc.mjs +0 -12
  196. package/dist/license-Cb6ewEJO.mjs +0 -17
  197. package/dist/list-DV6CONhp.mjs +0 -55
  198. package/dist/measure-XhJuL77y.mjs +0 -19
  199. package/dist/package-DFUprkSZ.mjs +0 -85
  200. package/dist/ps-Bk6unzaX.mjs +0 -11
  201. package/dist/segment-DfxZdJmR.mjs +0 -19
  202. package/dist/snippet-BCY4KHBU.mjs +0 -19
  203. package/dist/status-1oUnw803.mjs +0 -56
  204. package/dist/status-J9HIDcA5.mjs +0 -32
  205. package/dist/table-BwX3Ib5f.mjs +0 -19
  206. package/dist/transform-iaAi37V0.mjs +0 -24
  207. package/dist/transform-job-Bemonf82.mjs +0 -19
  208. package/dist/workspace-BBsT0H0g.mjs +0 -24
  209. /package/dist/{body-flags-BK7J6Daz.mjs → body-flags-D7q87Btw.mjs} +0 -0
  210. /package/dist/{field-B3gvaqpK.mjs → field-yomXlkvl.mjs} +0 -0
  211. /package/dist/{paginate-CTSfuYiF.mjs → paginate-Dfm9eO9A.mjs} +0 -0
  212. /package/dist/{revision-message-flag-oyq2xrDU.mjs → revision-message-flag-WmsIzUOM.mjs} +0 -0
  213. /package/dist/{segment-BMrUBz94.mjs → segment-Be2v4ilr.mjs} +0 -0
  214. /package/dist/{setting-CTaAeMci.mjs → setting-oL97SNeO.mjs} +0 -0
  215. /package/dist/{snippet-CSWqkslB.mjs → snippet-COggaWxx.mjs} +0 -0
  216. /package/dist/{transform-DR4ejuPM.mjs → transform-GTW3G-01.mjs} +0 -0
  217. /package/dist/{workspace-DUfqhPm5.mjs → workspace-BBXJczJK.mjs} +0 -0
@@ -1,10 +1,10 @@
1
- import "./package-DFUprkSZ.mjs";
2
- import "./command-augment-D9pI9Vbh.mjs";
3
- import { renderList } from "./render-DuoDUTVL.mjs";
4
- import "./predicates-CGO17Q15.mjs";
5
- import { connectionFlags, defineMetabaseCommand, listEnvelopeSchema, outputFlags, profileFlag, wrapList } from "./runtime-CDu6fykq.mjs";
6
- import { REMOTE_SYNC_PATHS } from "./poll-task-BQe0NvJZ.mjs";
7
- import "./poll-p9Y7-JEQ.mjs";
1
+ import "./command-augment-BH9qgQ5u.mjs";
2
+ import { connectionFlags, listEnvelopeSchema, outputFlags, profileFlag, wrapList } from "./error-C9S6PN3-.mjs";
3
+ import { defineMetabaseCommand } from "./runtime-Dmv5VtUK.mjs";
4
+ import "./capabilities-7e9MgquN.mjs";
5
+ import { renderList } from "./render-CfznwleY.mjs";
6
+ import { REMOTE_SYNC_PATHS } from "./poll-task-Cooi0lQV.mjs";
7
+ import "./poll-DHKDpCiq.mjs";
8
8
  import { z } from "zod";
9
9
 
10
10
  //#region src/commands/git-sync/branches.ts
@@ -23,6 +23,10 @@ var branches_default = defineMetabaseCommand({
23
23
  name: "branches",
24
24
  description: "List branches on the configured git remote"
25
25
  },
26
+ capabilities: {
27
+ minVersion: 60,
28
+ tokenFeature: "remote_sync"
29
+ },
26
30
  args: {
27
31
  ...outputFlags,
28
32
  ...profileFlag,
@@ -1,9 +1,9 @@
1
- import "./package-DFUprkSZ.mjs";
2
- import "./command-augment-D9pI9Vbh.mjs";
3
- import { renderItem } from "./render-DuoDUTVL.mjs";
4
- import "./predicates-CGO17Q15.mjs";
5
- import { connectionFlags, defineMetabaseCommand, outputFlags, profileFlag } from "./runtime-CDu6fykq.mjs";
6
- import { parseId } from "./parse-id-CysSaCbf.mjs";
1
+ import "./command-augment-BH9qgQ5u.mjs";
2
+ import { connectionFlags, outputFlags, profileFlag } from "./error-C9S6PN3-.mjs";
3
+ import { defineMetabaseCommand } from "./runtime-Dmv5VtUK.mjs";
4
+ import "./capabilities-7e9MgquN.mjs";
5
+ import { renderItem } from "./render-CfznwleY.mjs";
6
+ import { parseId } from "./parse-id-lk_K-CEF.mjs";
7
7
  import { z } from "zod";
8
8
 
9
9
  //#region src/commands/transform/cancel.ts
@@ -26,6 +26,7 @@ var cancel_default = defineMetabaseCommand({
26
26
  name: "cancel",
27
27
  description: "Cancel the current run for a transform"
28
28
  },
29
+ capabilities: { minVersion: 59 },
29
30
  args: {
30
31
  ...outputFlags,
31
32
  ...profileFlag,
@@ -1,10 +1,10 @@
1
- import "./package-DFUprkSZ.mjs";
2
- import "./command-augment-D9pI9Vbh.mjs";
3
- import { renderItem } from "./render-DuoDUTVL.mjs";
4
- import "./predicates-CGO17Q15.mjs";
5
- import { connectionFlags, defineMetabaseCommand, outputFlags, profileFlag } from "./runtime-CDu6fykq.mjs";
6
- import { REMOTE_SYNC_PATHS, SyncTask, syncTaskView } from "./poll-task-BQe0NvJZ.mjs";
7
- import "./poll-p9Y7-JEQ.mjs";
1
+ import "./command-augment-BH9qgQ5u.mjs";
2
+ import { connectionFlags, outputFlags, profileFlag } from "./error-C9S6PN3-.mjs";
3
+ import { defineMetabaseCommand } from "./runtime-Dmv5VtUK.mjs";
4
+ import "./capabilities-7e9MgquN.mjs";
5
+ import { renderItem } from "./render-CfznwleY.mjs";
6
+ import { REMOTE_SYNC_PATHS, SyncTask, syncTaskView } from "./poll-task-Cooi0lQV.mjs";
7
+ import "./poll-DHKDpCiq.mjs";
8
8
 
9
9
  //#region src/commands/git-sync/cancel-task.ts
10
10
  var cancel_task_default = defineMetabaseCommand({
@@ -12,6 +12,10 @@ var cancel_task_default = defineMetabaseCommand({
12
12
  name: "cancel-task",
13
13
  description: "Cancel the running git-sync task"
14
14
  },
15
+ capabilities: {
16
+ minVersion: 60,
17
+ tokenFeature: "remote_sync"
18
+ },
15
19
  args: {
16
20
  ...outputFlags,
17
21
  ...profileFlag,
@@ -0,0 +1,29 @@
1
+ import { z } from "zod";
2
+
3
+ //#region src/runtime/predicates.ts
4
+ function isPlainObject(value) {
5
+ return typeof value === "object" && value !== null && !Array.isArray(value);
6
+ }
7
+
8
+ //#endregion
9
+ //#region src/output/notice.ts
10
+ function warn(message) {
11
+ process.stderr.write(message + "\n");
12
+ }
13
+ function listTruncationNotice(bytes) {
14
+ return `… cut at ${bytes} bytes; rerun with --max-bytes 0`;
15
+ }
16
+ function itemOversizeMessage(bytes, maxBytes) {
17
+ return `output is ${bytes} bytes, over the ${maxBytes}-byte --max-bytes cap; narrow with --fields, or pass --max-bytes 0 to disable`;
18
+ }
19
+
20
+ //#endregion
21
+ //#region src/runtime/capabilities.ts
22
+ const Capabilities = z.object({
23
+ minVersion: z.number(),
24
+ tokenFeature: z.string().optional()
25
+ });
26
+ const BASELINE_CAPABILITIES = Object.freeze({ minVersion: 58 });
27
+
28
+ //#endregion
29
+ export { BASELINE_CAPABILITIES, Capabilities, isPlainObject, itemOversizeMessage, listTruncationNotice, warn };
@@ -0,0 +1,21 @@
1
+ import { defineCommand } from "citty";
2
+
3
+ //#region src/commands/card/index.ts
4
+ var card_default = defineCommand({
5
+ meta: {
6
+ name: "card",
7
+ alias: "cards",
8
+ description: "Manage Metabase cards (questions, models, metrics)"
9
+ },
10
+ subCommands: {
11
+ list: () => import("./list-BI4zr8LW.mjs").then((mod) => mod.default),
12
+ get: () => import("./get-CP3Z3NiH.mjs").then((mod) => mod.default),
13
+ query: () => import("./query-AaKzYnTY.mjs").then((mod) => mod.default),
14
+ create: () => import("./create-BNiva__H.mjs").then((mod) => mod.default),
15
+ update: () => import("./update-DBi5U8zb.mjs").then((mod) => mod.default),
16
+ archive: () => import("./archive-BNinrUak.mjs").then((mod) => mod.default)
17
+ }
18
+ });
19
+
20
+ //#endregion
21
+ export { card_default as default };
@@ -1,4 +1,4 @@
1
- import { FieldBaseType, FieldSemanticType } from "./field-B3gvaqpK.mjs";
1
+ import { FieldBaseType, FieldSemanticType } from "./field-yomXlkvl.mjs";
2
2
  import { z } from "zod";
3
3
 
4
4
  //#region src/domain/card.ts
@@ -1,10 +1,10 @@
1
- import "./package-DFUprkSZ.mjs";
2
- import "./command-augment-D9pI9Vbh.mjs";
3
- import { renderList } from "./render-DuoDUTVL.mjs";
4
- import "./predicates-CGO17Q15.mjs";
5
- import { connectionFlags, defineMetabaseCommand, listEnvelopeSchema, outputFlags, profileFlag, wrapList } from "./runtime-CDu6fykq.mjs";
6
- import { parseId } from "./parse-id-CysSaCbf.mjs";
7
- import { DashboardDetail, DashcardCompact, dashcardView } from "./dashboard-CnMD04PQ.mjs";
1
+ import "./command-augment-BH9qgQ5u.mjs";
2
+ import { connectionFlags, listEnvelopeSchema, outputFlags, profileFlag, wrapList } from "./error-C9S6PN3-.mjs";
3
+ import { defineMetabaseCommand } from "./runtime-Dmv5VtUK.mjs";
4
+ import "./capabilities-7e9MgquN.mjs";
5
+ import { renderList } from "./render-CfznwleY.mjs";
6
+ import { parseId } from "./parse-id-lk_K-CEF.mjs";
7
+ import { DashboardDetail, DashcardCompact, dashcardView } from "./dashboard-FY5UzJ_Z.mjs";
8
8
 
9
9
  //#region src/commands/dashboard/cards.ts
10
10
  const DashcardListEnvelope = listEnvelopeSchema(DashcardCompact);
@@ -13,6 +13,7 @@ var cards_default = defineMetabaseCommand({
13
13
  name: "cards",
14
14
  description: "List dashcards on a dashboard"
15
15
  },
16
+ capabilities: { minVersion: 58 },
16
17
  args: {
17
18
  ...outputFlags,
18
19
  ...profileFlag,
package/dist/cli.mjs CHANGED
@@ -1,8 +1,55 @@
1
1
  #!/usr/bin/env node
2
- import { package_default } from "./package-DFUprkSZ.mjs";
3
- import { getMetabaseAugment } from "./command-augment-D9pI9Vbh.mjs";
2
+ import { ConfigError, flagConsumesValue, getMetabaseAugment, normalizeFlag, resolveCitty, toAliasArray } from "./command-augment-BH9qgQ5u.mjs";
3
+ import { connectionFlags, outputFlags, package_default, profileFlag, reportError } from "./error-C9S6PN3-.mjs";
4
4
  import { defineCommand, renderUsage, runMain } from "citty";
5
5
 
6
+ //#region src/commands/global-flags.ts
7
+ const ARGUMENT_SEPARATOR = "--";
8
+ const NEGATION_PREFIX = "no-";
9
+ const GLOBAL_FLAG_ARGS = {
10
+ ...outputFlags,
11
+ ...profileFlag,
12
+ ...connectionFlags
13
+ };
14
+ const GLOBAL_FLAG_NAMES = buildGlobalFlagNames();
15
+ function buildGlobalFlagNames() {
16
+ const names = new Set();
17
+ for (const [key, def] of Object.entries(GLOBAL_FLAG_ARGS)) {
18
+ names.add(normalizeFlag(key));
19
+ if ("alias" in def) for (const alias of toAliasArray(def.alias)) names.add(normalizeFlag(alias));
20
+ }
21
+ return names;
22
+ }
23
+ function isGlobalFlag(token) {
24
+ if (!token.startsWith("-") || token === ARGUMENT_SEPARATOR) return false;
25
+ const raw = token.includes("=") ? token.slice(0, token.indexOf("=")) : token;
26
+ const name = normalizeFlag(raw);
27
+ if (GLOBAL_FLAG_NAMES.has(name)) return true;
28
+ const bare = raw.replace(/^-+/, "");
29
+ if (bare.startsWith(NEGATION_PREFIX)) return GLOBAL_FLAG_NAMES.has(normalizeFlag(bare.slice(NEGATION_PREFIX.length)));
30
+ return false;
31
+ }
32
+ function hoistGlobalFlags(rawArgs) {
33
+ const leading = [];
34
+ let index = 0;
35
+ while (index < rawArgs.length) {
36
+ const token = rawArgs[index];
37
+ if (token === void 0 || !isGlobalFlag(token)) break;
38
+ leading.push(token);
39
+ index += 1;
40
+ if (flagConsumesValue(token, GLOBAL_FLAG_ARGS) && index < rawArgs.length) {
41
+ const value = rawArgs[index];
42
+ if (value !== void 0) {
43
+ leading.push(value);
44
+ index += 1;
45
+ }
46
+ }
47
+ }
48
+ if (leading.length === 0) return [...rawArgs];
49
+ return [...rawArgs.slice(index), ...leading];
50
+ }
51
+
52
+ //#endregion
6
53
  //#region src/main.ts
7
54
  const main = defineCommand({
8
55
  meta: {
@@ -11,31 +58,29 @@ const main = defineCommand({
11
58
  description: package_default.description
12
59
  },
13
60
  subCommands: {
14
- auth: () => import("./auth-DICRtJDy.mjs").then((mod) => mod.default),
15
- license: () => import("./license-Cb6ewEJO.mjs").then((mod) => mod.default),
16
- db: () => import("./db-qVK6NsdB.mjs").then((mod) => mod.default),
17
- table: () => import("./table-BwX3Ib5f.mjs").then((mod) => mod.default),
18
- field: () => import("./field-C0LE7RQI.mjs").then((mod) => mod.default),
19
- card: () => import("./card-l-UmrUIo.mjs").then((mod) => mod.default),
20
- dashboard: () => import("./dashboard-hbKDd36X.mjs").then((mod) => mod.default),
21
- collection: () => import("./collection-oV0olVY-.mjs").then((mod) => mod.default),
22
- transform: () => import("./transform-iaAi37V0.mjs").then((mod) => mod.default),
23
- "transform-job": () => import("./transform-job-Bemonf82.mjs").then((mod) => mod.default),
24
- setting: () => import("./setting-Czy4ws6h.mjs").then((mod) => mod.default),
25
- search: () => import("./search-DObOsjbP.mjs").then((mod) => mod.default),
26
- "git-sync": () => import("./git-sync-DV7YjniX.mjs").then((mod) => mod.default),
27
- workspace: () => import("./workspace-BBsT0H0g.mjs").then((mod) => mod.default),
28
- setup: () => import("./setup-DqBOe3HZ.mjs").then((mod) => mod.default),
29
- "api-key": () => import("./api-key-BENHbTbV.mjs").then((mod) => mod.default),
30
- snippet: () => import("./snippet-BCY4KHBU.mjs").then((mod) => mod.default),
31
- segment: () => import("./segment-DfxZdJmR.mjs").then((mod) => mod.default),
32
- measure: () => import("./measure-XhJuL77y.mjs").then((mod) => mod.default),
33
- eid: () => import("./eid-CDFXX_6H.mjs").then((mod) => mod.default),
34
- query: () => import("./query-C7zTlFJA.mjs").then((mod) => mod.default),
35
- uuid: () => import("./uuid-CJz9TmHI.mjs").then((mod) => mod.default),
36
- upgrade: () => import("./upgrade-CIgTr2CG.mjs").then((mod) => mod.default),
37
- skills: () => import("./skills-C2rTVj0n.mjs").then((mod) => mod.default),
38
- __manifest: () => import("./manifest-CGM7XNLC.mjs").then((mod) => mod.createManifestCommand(main))
61
+ auth: () => import("./auth-CzXb_zB2.mjs").then((mod) => mod.default),
62
+ db: () => import("./db-DrQn_i3W.mjs").then((mod) => mod.default),
63
+ table: () => import("./table-e6h8SLVX.mjs").then((mod) => mod.default),
64
+ field: () => import("./field-Z6Pcxf4n.mjs").then((mod) => mod.default),
65
+ card: () => import("./card-DP4rfoOi.mjs").then((mod) => mod.default),
66
+ dashboard: () => import("./dashboard-ChM_Tu0l.mjs").then((mod) => mod.default),
67
+ collection: () => import("./collection-tY18ezvn.mjs").then((mod) => mod.default),
68
+ transform: () => import("./transform-BMYh1lsC.mjs").then((mod) => mod.default),
69
+ "transform-job": () => import("./transform-job-Cm7z5TfH.mjs").then((mod) => mod.default),
70
+ setting: () => import("./setting-D2p2MA7f.mjs").then((mod) => mod.default),
71
+ search: () => import("./search-BLrBXLUk.mjs").then((mod) => mod.default),
72
+ "git-sync": () => import("./git-sync-CiGAad76.mjs").then((mod) => mod.default),
73
+ workspace: () => import("./workspace-CKLZrR7l.mjs").then((mod) => mod.default),
74
+ setup: () => import("./setup-C9ikBRw_.mjs").then((mod) => mod.default),
75
+ snippet: () => import("./snippet-B7D0uWlz.mjs").then((mod) => mod.default),
76
+ segment: () => import("./segment-B3Uwwcsm.mjs").then((mod) => mod.default),
77
+ measure: () => import("./measure-C44EK_xt.mjs").then((mod) => mod.default),
78
+ eid: () => import("./eid-BXzaQh0o.mjs").then((mod) => mod.default),
79
+ query: () => import("./query-BlsVNZpD.mjs").then((mod) => mod.default),
80
+ uuid: () => import("./uuid-CMKnS8-z.mjs").then((mod) => mod.default),
81
+ upgrade: () => import("./upgrade-iAuvhX-W.mjs").then((mod) => mod.default),
82
+ skills: () => import("./skills-CUHIcQS6.mjs").then((mod) => mod.default),
83
+ __manifest: () => import("./manifest-BBR46KFM.mjs").then((mod) => mod.createManifestCommand(main))
39
84
  }
40
85
  });
41
86
  var main_default = main;
@@ -43,38 +88,213 @@ var main_default = main;
43
88
  //#endregion
44
89
  //#region src/output/help.ts
45
90
  const ANSI_ESC = String.fromCharCode(27);
46
- const BREADCRUMB_SUFFIX = new RegExp(` \\([^()]*\\)(${ANSI_ESC}\\[\\d+m)?\\s*$`);
91
+ const ANSI_PATTERN = new RegExp(`${ANSI_ESC}\\[[0-9;]*m`, "g");
92
+ const BREADCRUMB_SUFFIX = / \([^()]*\)\s*$/;
47
93
  const TRAILING_WHITESPACE = /[ \t]+$/;
48
- async function showUsage(cmd, parent) {
49
- const raw = await renderUsage(cmd, parent);
94
+ const ALIAS_PAIR = /-([a-z0-9]+(?:-[a-z0-9]+)+), --[A-Za-z0-9]+/g;
95
+ const USAGE_PREFIX = "USAGE ";
96
+ const OPTIONS_HEADER = "OPTIONS";
97
+ const LINE_PREFIX = " ";
98
+ const COLUMN_GAP = " ";
99
+ const COMMAND_PLACEHOLDER = "<command> [options]";
100
+ const MANIFEST_COMMAND = "__manifest";
101
+ const CLI_NAME = "mb";
102
+ const HELP_FLAG_SPEC = "-h, --help";
103
+ const HELP_FLAG_DESCRIPTION = "Show help for this command";
104
+ const GETTING_STARTED_HINT = `First time? Run \`${CLI_NAME} auth login\` to connect to a Metabase instance.`;
105
+ async function showUsage(cmd, parent, breadcrumb) {
106
+ const raw = (await renderUsage(cmd, parent)).replace(ANSI_PATTERN, "");
50
107
  const lines = raw.split("\n").map((line) => line.replace(TRAILING_WHITESPACE, ""));
108
+ const cmdMeta = await resolveCitty(cmd.meta);
109
+ const parentMeta = parent === void 0 ? void 0 : await resolveCitty(parent.meta);
110
+ const cmdName = cmdMeta?.name ?? "";
111
+ const cittyName = parentMeta?.name ? `${parentMeta.name} ${cmdName}` : cmdName;
112
+ const hasSubCommands = Boolean(cmd.subCommands);
113
+ const isRoot = parent === void 0 && hasSubCommands;
114
+ const isManifest = cmdName === MANIFEST_COMMAND;
115
+ const augment = getMetabaseAugment(cmd);
116
+ const details = augment?.details ?? null;
117
+ const examples = augment?.examples ?? [];
118
+ const transformed = transformBody(lines, {
119
+ cittyName,
120
+ breadcrumb: breadcrumb ?? cittyName,
121
+ hasSubCommands
122
+ });
123
+ const body = withDetails(transformed, details).join("\n").trimEnd();
124
+ const sections = [body];
125
+ if (examples.length > 0) sections.push(renderExamples(examples));
126
+ if (isRoot) sections.push(GETTING_STARTED_HINT);
127
+ if (!isManifest) sections.push(renderSchemaHint());
128
+ process.stdout.write(sections.join("\n\n") + "\n");
129
+ }
130
+ function transformBody(lines, rewrite) {
131
+ const mapped = lines.map((line, index) => {
132
+ if (index === 0) return line.replace(BREADCRUMB_SUFFIX, "");
133
+ if (line.startsWith(USAGE_PREFIX)) return rewriteUsageLine(line, rewrite);
134
+ return fixAliasRow(line);
135
+ });
136
+ return injectHelpOption(mapped);
137
+ }
138
+ function rewriteUsageLine(line, rewrite) {
139
+ if (rewrite.hasSubCommands) return `${USAGE_PREFIX}${rewrite.breadcrumb} ${COMMAND_PLACEHOLDER}`;
140
+ const content = line.slice(USAGE_PREFIX.length);
141
+ if (!content.startsWith(rewrite.cittyName)) return line;
142
+ const rest = content.slice(rewrite.cittyName.length);
143
+ return `${USAGE_PREFIX}${rewrite.breadcrumb}${rest}`;
144
+ }
145
+ function fixAliasRow(line) {
146
+ return line.replace(ALIAS_PAIR, (match, kebab) => `--${kebab}`.padStart(match.length));
147
+ }
148
+ function injectHelpOption(lines) {
149
+ const headerIndex = lines.indexOf(OPTIONS_HEADER);
150
+ if (headerIndex < 0) return lines;
151
+ let firstRowIndex = headerIndex + 1;
152
+ while (firstRowIndex < lines.length && lines[firstRowIndex] === "") firstRowIndex += 1;
153
+ const sample = lines[firstRowIndex];
154
+ if (sample === void 0) return lines;
155
+ const layout = optionLayout(sample);
156
+ if (layout === null) return lines;
157
+ let endIndex = firstRowIndex;
158
+ while (endIndex < lines.length && lines[endIndex] !== "") endIndex += 1;
159
+ const helpRow = HELP_FLAG_SPEC.padStart(layout.flagEnd).padEnd(layout.descStart) + HELP_FLAG_DESCRIPTION;
160
+ return [
161
+ ...lines.slice(0, endIndex),
162
+ helpRow,
163
+ ...lines.slice(endIndex)
164
+ ];
165
+ }
166
+ function optionLayout(row) {
167
+ const firstNonSpace = row.search(/\S/);
168
+ if (firstNonSpace < 0) return null;
169
+ const flagEnd = row.indexOf(COLUMN_GAP, firstNonSpace);
170
+ if (flagEnd < 0) return null;
171
+ const gapRemainder = row.slice(flagEnd).search(/\S/);
172
+ if (gapRemainder < 0) return null;
173
+ return {
174
+ flagEnd,
175
+ descStart: flagEnd + gapRemainder
176
+ };
177
+ }
178
+ function withDetails(lines, details) {
179
+ if (details === null) return lines;
51
180
  const [first, ...rest] = lines;
52
- const stripped = first === void 0 ? "" : first.replace(BREADCRUMB_SUFFIX, "$1");
53
- const body = [stripped, ...rest].join("\n");
54
- const examples = getMetabaseAugment(cmd)?.examples ?? [];
55
- process.stdout.write(body + renderExamples(examples) + renderSchemaHint() + "\n");
181
+ if (first === void 0) return lines;
182
+ return [
183
+ first,
184
+ "",
185
+ details,
186
+ ...rest
187
+ ];
56
188
  }
57
189
  function renderExamples(examples) {
58
- if (examples.length === 0) return "";
59
- const lines = [
60
- "",
190
+ return [
61
191
  "EXAMPLES",
62
- ""
63
- ];
64
- for (const example of examples) lines.push(` ${example}`);
65
- return lines.join("\n");
192
+ "",
193
+ ...examples.map((example) => `${LINE_PREFIX}${example}`)
194
+ ].join("\n");
66
195
  }
67
196
  function renderSchemaHint() {
68
197
  return [
69
- "",
70
198
  "SCHEMA",
71
199
  "",
72
- " mb __manifest # machine-readable command tree (flags, output, examples)"
200
+ `${LINE_PREFIX}${CLI_NAME} ${MANIFEST_COMMAND} # machine-readable command manifest (flags, output, examples)`
73
201
  ].join("\n");
74
202
  }
203
+ async function walkCommandPath(root, rawArgs) {
204
+ const rootMeta = await resolveCitty(root.meta);
205
+ const segments = rootMeta?.name === void 0 ? [] : [rootMeta.name];
206
+ let current = root;
207
+ let index = 0;
208
+ while (index < rawArgs.length) {
209
+ const subCommands = await resolveCitty(current.subCommands);
210
+ if (subCommands === void 0) break;
211
+ const argsDef = await resolveCitty(current.args) ?? {};
212
+ index = skipFlags(rawArgs, index, argsDef);
213
+ const token = rawArgs[index];
214
+ if (token === void 0) break;
215
+ const match = await findSubCommand(subCommands, token);
216
+ if (match === null) return {
217
+ segments,
218
+ unknownToken: token
219
+ };
220
+ segments.push(match.name);
221
+ current = match.command;
222
+ index += 1;
223
+ }
224
+ return {
225
+ segments,
226
+ unknownToken: null
227
+ };
228
+ }
229
+ async function resolveBreadcrumb(root, rawArgs) {
230
+ const { segments } = await walkCommandPath(root, rawArgs);
231
+ return segments.length > 0 ? segments.join(" ") : CLI_NAME;
232
+ }
233
+ async function findUnknownCommand(root, rawArgs) {
234
+ return (await walkCommandPath(root, rawArgs)).unknownToken;
235
+ }
236
+ function skipFlags(rawArgs, start, argsDef) {
237
+ let index = start;
238
+ while (index < rawArgs.length) {
239
+ const token = rawArgs[index];
240
+ if (token === void 0) return index;
241
+ if (token === "--") return rawArgs.length;
242
+ if (!token.startsWith("-")) return index;
243
+ if (flagConsumesValue(token, argsDef)) index += 1;
244
+ index += 1;
245
+ }
246
+ return index;
247
+ }
248
+ async function findSubCommand(subCommands, token) {
249
+ const direct = subCommands[token];
250
+ if (direct !== void 0) {
251
+ const command = await resolveCitty(direct);
252
+ if (command === void 0) return null;
253
+ const meta = await resolveCitty(command.meta);
254
+ return {
255
+ name: meta?.name ?? token,
256
+ command
257
+ };
258
+ }
259
+ for (const [key, loader] of Object.entries(subCommands)) {
260
+ const command = await resolveCitty(loader);
261
+ if (command === void 0) continue;
262
+ const meta = await resolveCitty(command.meta);
263
+ if (toAliasArray(meta?.alias).includes(token)) return {
264
+ name: meta?.name ?? key,
265
+ command
266
+ };
267
+ }
268
+ return null;
269
+ }
75
270
 
76
271
  //#endregion
77
272
  //#region src/cli.ts
78
- runMain(main_default, { showUsage });
273
+ const HELP_FLAGS = new Set(["--help", "-h"]);
274
+ async function run() {
275
+ const rawArgs = hoistGlobalFlags(process.argv.slice(2));
276
+ const showUsageWithBreadcrumb = async (cmd, parent) => {
277
+ const breadcrumb = await resolveBreadcrumb(main_default, rawArgs);
278
+ await showUsage(cmd, parent, breadcrumb);
279
+ };
280
+ if (rawArgs.length === 0) {
281
+ await showUsageWithBreadcrumb(main_default);
282
+ return;
283
+ }
284
+ if (!rawArgs.some((arg) => HELP_FLAGS.has(arg))) {
285
+ const unknown = await findUnknownCommand(main_default, rawArgs);
286
+ if (unknown !== null) {
287
+ reportError(new ConfigError(`unknown command: ${unknown}`));
288
+ return;
289
+ }
290
+ }
291
+ await runMain(main_default, {
292
+ showUsage: showUsageWithBreadcrumb,
293
+ rawArgs
294
+ });
295
+ }
296
+ run().catch((error) => {
297
+ reportError(error);
298
+ });
79
299
 
80
300
  //#endregion
@@ -0,0 +1,21 @@
1
+ import { defineCommand } from "citty";
2
+
3
+ //#region src/commands/collection/index.ts
4
+ var collection_default = defineCommand({
5
+ meta: {
6
+ name: "collection",
7
+ alias: "collections",
8
+ description: "Manage Metabase collections"
9
+ },
10
+ subCommands: {
11
+ list: () => import("./list-Brgh-Z2v.mjs").then((mod) => mod.default),
12
+ get: () => import("./get-lb7q3JYs.mjs").then((mod) => mod.default),
13
+ items: () => import("./items-BWfvkY-J.mjs").then((mod) => mod.default),
14
+ tree: () => import("./tree-Des2ZG9d.mjs").then((mod) => mod.default),
15
+ create: () => import("./create-BTcpaop_.mjs").then((mod) => mod.default),
16
+ archive: () => import("./archive-lWgqiFAt.mjs").then((mod) => mod.default)
17
+ }
18
+ });
19
+
20
+ //#endregion
21
+ export { collection_default as default };
@@ -1,6 +1,31 @@
1
1
  import { ZodError, core } from "zod";
2
2
  import { isCancel } from "@clack/prompts";
3
3
 
4
+ //#region src/runtime/citty.ts
5
+ async function resolveCitty(value) {
6
+ if (value === void 0) return void 0;
7
+ if (typeof value === "function") return value();
8
+ return value;
9
+ }
10
+ function toAliasArray(alias) {
11
+ if (alias === void 0) return [];
12
+ return Array.isArray(alias) ? alias : [alias];
13
+ }
14
+ function normalizeFlag(value) {
15
+ return value.replace(/^-+/, "").replace(/-/g, "").toLowerCase();
16
+ }
17
+ function flagConsumesValue(token, argsDef) {
18
+ if (token.includes("=")) return false;
19
+ const name = normalizeFlag(token);
20
+ for (const [key, def] of Object.entries(argsDef)) {
21
+ if (def.type !== "string" && def.type !== "enum") continue;
22
+ if (normalizeFlag(key) === name) return true;
23
+ if (toAliasArray(def.alias).some((alias) => normalizeFlag(alias) === name)) return true;
24
+ }
25
+ return false;
26
+ }
27
+
28
+ //#endregion
4
29
  //#region src/core/json-pointer.ts
5
30
  function escapeJsonPointerSegment(key) {
6
31
  if (typeof key === "number") return String(key);
@@ -51,23 +76,46 @@ var ValidationError = class extends MetabaseError {
51
76
  get userMessage() {
52
77
  const issues = this.developerDetail.zodIssues;
53
78
  if (issues.length === 0) return this.message;
54
- return `${this.message}\n${formatZodIssueList(issues)}`;
79
+ return `${this.message}\n${formatIssueLines(issues, VALIDATION_ISSUE_FORMAT)}`;
55
80
  }
56
81
  };
57
- const MAX_ISSUES_PRINTED = 10;
58
- function formatZodIssueList(issues) {
59
- const head = issues.slice(0, MAX_ISSUES_PRINTED).map(formatZodIssueLine);
60
- const overflow = issues.length - MAX_ISSUES_PRINTED;
61
- if (overflow > 0) head.push(` ... and ${overflow} more`);
62
- return head.join("\n");
63
- }
64
- function formatZodIssueLine(issue) {
65
- return ` ${formatZodIssuePointer(issue.path)}: ${issue.message}`;
82
+ const VALIDATION_MAX_ISSUES = 10;
83
+ const RESPONSE_SHAPE_MAX_ISSUES = 5;
84
+ const VALIDATION_ISSUE_FORMAT = {
85
+ max: VALIDATION_MAX_ISSUES,
86
+ formatIssue: (issue) => `${formatZodIssuePointer(issue.path)}: ${issue.message}`
87
+ };
88
+ const RESPONSE_SHAPE_ISSUE_FORMAT = {
89
+ max: RESPONSE_SHAPE_MAX_ISSUES,
90
+ formatIssue: formatZodIssue
91
+ };
92
+ function formatIssueLines(issues, format) {
93
+ const head = issues.slice(0, format.max).map(format.formatIssue);
94
+ const overflow = issues.length - format.max;
95
+ if (overflow > 0) head.push(`... and ${overflow} more`);
96
+ return head.map((line) => ` ${line}`).join("\n");
66
97
  }
67
98
  function formatZodIssuePointer(path) {
68
99
  if (path.length === 0) return "/";
69
100
  return path.map((key) => `/${escapeJsonPointerSegment(key)}`).join("");
70
101
  }
102
+ const RESPONSE_SHAPE_LEAD_UNKNOWN_VERSION = "Metabase returned unexpected response shape";
103
+ var ResponseShapeError = class extends MetabaseError {
104
+ category = "response-shape";
105
+ isRetryable = false;
106
+ exitCode = 1;
107
+ developerDetail;
108
+ constructor(developerDetail) {
109
+ super(formatResponseShapeMessage(developerDetail.zodIssues, developerDetail.serverTag));
110
+ this.name = "ResponseShapeError";
111
+ this.developerDetail = developerDetail;
112
+ }
113
+ };
114
+ function formatResponseShapeMessage(issues, serverTag) {
115
+ const lead = serverTag === null ? RESPONSE_SHAPE_LEAD_UNKNOWN_VERSION : `On Metabase ${serverTag} the response shape was unexpected`;
116
+ if (issues.length === 0) return lead;
117
+ return `${lead}:\n${formatIssueLines(issues, RESPONSE_SHAPE_ISSUE_FORMAT)}`;
118
+ }
71
119
  var ConfigError = class extends MetabaseError {
72
120
  category = "config";
73
121
  isRetryable = false;
@@ -144,10 +192,14 @@ function errorMessage(value) {
144
192
  }
145
193
 
146
194
  //#endregion
147
- //#region src/runtime/predicates.ts
148
- function isPlainObject(value) {
149
- return typeof value === "object" && value !== null && !Array.isArray(value);
195
+ //#region src/runtime/command-augment.ts
196
+ const augments = new WeakMap();
197
+ function setMetabaseAugment(cmd, augment) {
198
+ augments.set(cmd, augment);
199
+ }
200
+ function getMetabaseAugment(cmd) {
201
+ return augments.get(cmd) ?? null;
150
202
  }
151
203
 
152
204
  //#endregion
153
- export { AbortError, ChainedRequestError, ConfigError, MetabaseError, NetworkError, TimeoutError, UnknownError, VERBOSE_ENV, ValidationError, errorMessage, escapeJsonPointerSegment, isNotFoundError, isPlainObject, toMetabaseError };
205
+ export { AbortError, ChainedRequestError, ConfigError, MetabaseError, NetworkError, ResponseShapeError, TimeoutError, UnknownError, VERBOSE_ENV, ValidationError, errorMessage, escapeJsonPointerSegment, flagConsumesValue, getMetabaseAugment, isNotFoundError, normalizeFlag, resolveCitty, setMetabaseAugment, toAliasArray, toMetabaseError };