@metabase/cli 0.1.5 → 0.1.7

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 (228) hide show
  1. package/README.md +128 -115
  2. package/dist/add-collection-C9BdVBs2.mjs +11 -0
  3. package/dist/{add-collection-C_iovi9i.mjs → add-collection-DQjTlDNF.mjs} +12 -5
  4. package/dist/archive-B3qiL-kK.mjs +40 -0
  5. package/dist/{archive-DdaP94H3.mjs → archive-BXzghEQX.mjs} +10 -9
  6. package/dist/{archive-WaEW85NB.mjs → archive-CBGKzEAl.mjs} +9 -8
  7. package/dist/{archive-BKPO8lEO.mjs → archive-CuVk8iwN.mjs} +10 -9
  8. package/dist/archive-DTN9tLGT.mjs +40 -0
  9. package/dist/{archive-Dvzrmdbk.mjs → archive-De8jzzq7.mjs} +10 -9
  10. package/dist/auth-D9eAyVoG.mjs +19 -0
  11. package/dist/{body-XtR7-uCO.mjs → body-tcURGnGh.mjs} +4 -4
  12. package/dist/{branches-XUY4JY-X.mjs → branches-CIGkjXIk.mjs} +11 -7
  13. package/dist/{cancel-BrUVO_ax.mjs → cancel-pPsvgJ0Z.mjs} +9 -8
  14. package/dist/{cancel-task-oXheTOB6.mjs → cancel-task-BLGE4UlL.mjs} +12 -8
  15. package/dist/capabilities-7e9MgquN.mjs +29 -0
  16. package/dist/card-DDDrWcDU.mjs +20 -0
  17. package/dist/{card-CQxvHeyP.mjs → card-ezYiriML.mjs} +1 -1
  18. package/dist/{cards-CONTTAG9.mjs → cards-Dq3nx_9n.mjs} +8 -7
  19. package/dist/cli.mjs +264 -44
  20. package/dist/collection-DkEvCDar.mjs +20 -0
  21. package/dist/{predicates-CGO17Q15.mjs → command-augment-BH9qgQ5u.mjs} +66 -14
  22. package/dist/{create-Cs2xntFG.mjs → create-9DBTkbMq.mjs} +18 -16
  23. package/dist/{create-kYpjobrq.mjs → create-B1dyuL9Y.mjs} +16 -10
  24. package/dist/create-BIphz0kO.mjs +52 -0
  25. package/dist/create-BcgoukG4.mjs +50 -0
  26. package/dist/create-BdPoSk_7.mjs +50 -0
  27. package/dist/{create-DZxUeqdf.mjs → create-BrUqxreg.mjs} +11 -10
  28. package/dist/create-DHscDhRd.mjs +50 -0
  29. package/dist/{create-Dq25vsMu.mjs → create-aPaUEGdr.mjs} +11 -10
  30. package/dist/{create-branch-D5u14AxL.mjs → create-branch-DGoc9CUU.mjs} +12 -8
  31. package/dist/{create-Ca9lIDwP.mjs → create-w3mQg9n4.mjs} +11 -10
  32. package/dist/{credentials-BIQ1cEzM.mjs → credentials-qryRLUed.mjs} +12 -11
  33. package/dist/current-task-DZM28rnr.mjs +40 -0
  34. package/dist/{dashboard-CnMD04PQ.mjs → dashboard-B4bn3z6t.mjs} +2 -1
  35. package/dist/dashboard-BLf1RZlk.mjs +21 -0
  36. package/dist/{database-vvig8k4x.mjs → database-BXiue1in.mjs} +1 -1
  37. package/dist/{database-BSvzYlRe.mjs → database-Ce1gOJF7.mjs} +3 -3
  38. package/dist/db-CWTFe_FZ.mjs +22 -0
  39. package/dist/{delete-VTAS9EUt.mjs → delete-BPaFdHZP.mjs} +11 -8
  40. package/dist/{delete-CUx6RT9e.mjs → delete-BrJOotpW.mjs} +11 -8
  41. package/dist/{remove-C6bS0Z6w.mjs → delete-FFj1xQWO.mjs} +25 -20
  42. package/dist/{delete-runtime-DfFMWJJ6.mjs → delete-runtime-uuYbd4k2.mjs} +9 -7
  43. package/dist/{delete-table-DzUneMKe.mjs → delete-table-CNupWUO0.mjs} +11 -8
  44. package/dist/{deprovision-CpJfGgCt.mjs → deprovision-BNr9fPDY.mjs} +18 -12
  45. package/dist/{dirty-nkAOXxgC.mjs → dirty-BCkNOY8c.mjs} +11 -7
  46. package/dist/{docker-D5FTIoD0.mjs → docker-Ds252Mwc.mjs} +4 -4
  47. package/dist/{translate-Cqsd0Px5.mjs → eid-CLY5X0Uw.mjs} +43 -23
  48. package/dist/error-ZsFeevV2.mjs +191 -0
  49. package/dist/{export-BWvY7X_G.mjs → export-CgHgWW3I.mjs} +20 -18
  50. package/dist/{field-B3gvaqpK.mjs → field-E0IBy4Uw.mjs} +12 -3
  51. package/dist/field-LL6W_c-c.mjs +18 -0
  52. package/dist/{fields-dH16G5UV.mjs → fields-RkRWU-u9.mjs} +9 -8
  53. package/dist/{get-D96QEU49.mjs → get-42tJ7BNp.mjs} +8 -7
  54. package/dist/{get-C6SR3A9t.mjs → get-B8l4t4Pz.mjs} +10 -9
  55. package/dist/{get-BnBRKHr7.mjs → get-B9kwSs6U.mjs} +8 -7
  56. package/dist/{get-7macOPAI.mjs → get-Bo4Cpd_c.mjs} +7 -7
  57. package/dist/{get-BcqxMVC1.mjs → get-C9O_aEGo.mjs} +8 -7
  58. package/dist/{get-CKxlhMy1.mjs → get-CRvbChoX.mjs} +8 -7
  59. package/dist/{get-B7i_nYJB.mjs → get-CTDqioaj.mjs} +8 -7
  60. package/dist/{get-D8e_RzZ0.mjs → get-CiZrZJLt.mjs} +10 -9
  61. package/dist/{get-B08K82JV.mjs → get-CvmqPN30.mjs} +8 -7
  62. package/dist/{get-CACaBFLt.mjs → get-DmzgSgrl.mjs} +9 -8
  63. package/dist/{get-R7OaVL_t.mjs → get-DsqGHNHN.mjs} +8 -7
  64. package/dist/get-run-CBwcRc8E.mjs +38 -0
  65. package/dist/{get-DNN1X2gN.mjs → get-sMpa-X4E.mjs} +9 -8
  66. package/dist/{get-DAWofnzK.mjs → get-y17zJMnU.mjs} +8 -7
  67. package/dist/git-sync-CrWTo3YX.mjs +28 -0
  68. package/dist/{has-remote-changes-BAnIXQXU.mjs → has-remote-changes-CfRidwXT.mjs} +13 -8
  69. package/dist/{import-CfdPEMng.mjs → import-BZV0Z2KR.mjs} +21 -18
  70. package/dist/{input-BQ-BZA8h.mjs → input-cMSEqISy.mjs} +7 -4
  71. package/dist/is-dirty-CPzOnnH6.mjs +10 -0
  72. package/dist/{is-dirty-CZWcG0vj.mjs → is-dirty-hKcB4OH9.mjs} +9 -4
  73. package/dist/{items-DqwahOKf.mjs → items-C94eW2Yd.mjs} +10 -9
  74. package/dist/key-vkNkH82H.mjs +17 -0
  75. package/dist/license-B37055sr.mjs +17 -0
  76. package/dist/{list-L63TpX1t.mjs → list-B0V7FeL2.mjs} +7 -7
  77. package/dist/{list-Bkd7Nbds.mjs → list-BFlzLGlw.mjs} +7 -6
  78. package/dist/{list-yxVAE1S7.mjs → list-BJXaGk-z.mjs} +7 -6
  79. package/dist/{list-BqNMpIXy.mjs → list-BS_Bxejg.mjs} +9 -8
  80. package/dist/{list-J277Qtki.mjs → list-BmHoYJr7.mjs} +7 -6
  81. package/dist/list-C-oZe1_p.mjs +173 -0
  82. package/dist/{list-ViT2KWhv.mjs → list-CF1pMN4S.mjs} +7 -6
  83. package/dist/{list-BpNU1neq.mjs → list-CU6sOfI-.mjs} +9 -7
  84. package/dist/{list-oftHLFbE.mjs → list-CqN4gvCk.mjs} +9 -7
  85. package/dist/{list-DBOYoJtA.mjs → list-DUXdt0XI.mjs} +10 -6
  86. package/dist/{list-D41gfkKb.mjs → list-DfDZr55C.mjs} +10 -8
  87. package/dist/{list-vF4EneaE.mjs → list-DrINpVLM.mjs} +7 -6
  88. package/dist/{list-DJcGwJ4W.mjs → list-DuSoEk_J.mjs} +9 -8
  89. package/dist/{list-CQkDqphl.mjs → list-HS15y_WN.mjs} +7 -6
  90. package/dist/login-enh9Yimb.mjs +181 -0
  91. package/dist/{logout-DD4q5whi.mjs → logout-BWLPLDh8.mjs} +13 -11
  92. package/dist/{logs-Ci3mJE2z.mjs → logs-Cu3QtvPs.mjs} +9 -8
  93. package/dist/{manifest-CGM7XNLC.mjs → manifest-BNh0Lw6p.mjs} +15 -15
  94. package/dist/{measure-BEQfnLdN.mjs → measure-Bt3InQsA.mjs} +2 -2
  95. package/dist/measure-CDlEPFtB.mjs +19 -0
  96. package/dist/{metadata-BDat-jN9.mjs → metadata-BTTEBWdS.mjs} +10 -9
  97. package/dist/{metadata-29_qlqbz.mjs → metadata-D2TxboMm.mjs} +9 -8
  98. package/dist/parse-enum-CrEWOhuY.mjs +11 -0
  99. package/dist/{parse-id-CysSaCbf.mjs → parse-id-0_tOPvfI.mjs} +1 -1
  100. package/dist/{parse-ref-D1yeDOn8.mjs → parse-ref-DKag6a6I.mjs} +1 -1
  101. package/dist/{parse-schemas-B10n01ez.mjs → parse-schemas-D-qVLl4z.mjs} +2 -2
  102. package/dist/{path-DLByFMMA.mjs → path-C8GrBdgT.mjs} +7 -7
  103. package/dist/{poll-p9Y7-JEQ.mjs → poll-4eoh5J0r.mjs} +2 -2
  104. package/dist/{poll-task-BQe0NvJZ.mjs → poll-task-51WRdugU.mjs} +19 -20
  105. package/dist/{preflight-CvFu0Cct.mjs → preflight-BhsErYz3.mjs} +4 -4
  106. package/dist/{process-zJeVJZTM.mjs → process-CM7Uu5q_.mjs} +1 -1
  107. package/dist/{prompt-DgDNy_Pc.mjs → prompt-CFKoys7k.mjs} +3 -1
  108. package/dist/provision-Chf86BF0.mjs +83 -0
  109. package/dist/{ps-BxQdpkr5.mjs → ps-CEYtsKBj.mjs} +5 -3
  110. package/dist/ps-CIDwaubS.mjs +11 -0
  111. package/dist/{query-C7zTlFJA.mjs → query-BBCAF-tG.mjs} +17 -14
  112. package/dist/{query-CFH4nBlK.mjs → query-DYVBnu9d.mjs} +12 -9
  113. package/dist/query-result-ABPLz6I4.mjs +19 -0
  114. package/dist/{remove-BuWxx3hY.mjs → remove-2yInufA6.mjs} +14 -12
  115. package/dist/remove-collection-CBAHz0Dk.mjs +44 -0
  116. package/dist/{render-DuoDUTVL.mjs → render-0_GsapXa.mjs} +51 -23
  117. package/dist/render-khznBlla.mjs +32 -0
  118. package/dist/{rescan-values-DabyRYQ_.mjs → rescan-values-cfTSNQZo.mjs} +12 -11
  119. package/dist/{run-Cl-9RtC4.mjs → run-qgdEJv-I.mjs} +17 -15
  120. package/dist/{runs-BH6s1Zao.mjs → runs-BFIIH4GL.mjs} +9 -8
  121. package/dist/{runtime-CDu6fykq.mjs → runtime-Duawf5lE.mjs} +653 -428
  122. package/dist/{schema-tables-i58wp_p3.mjs → schema-tables-C2xM3dho.mjs} +9 -8
  123. package/dist/{schemas-_m8RYRl9.mjs → schemas-BP7xiktH.mjs} +7 -6
  124. package/dist/{search-DObOsjbP.mjs → search-DYP3lOlq.mjs} +12 -16
  125. package/dist/segment-B6HnNGDs.mjs +19 -0
  126. package/dist/{set-CwVWeAsi.mjs → set-DpRQqdo7.mjs} +13 -11
  127. package/dist/{set-CJA9dpK6.mjs → set-Tt-ioa4L.mjs} +14 -13
  128. package/dist/setting-DUa96KF3.mjs +17 -0
  129. package/dist/{setup-DqBOe3HZ.mjs → setup-BPlllnim.mjs} +10 -9
  130. package/dist/{skills-CHU7uuDU.mjs → skills-BkregMyb.mjs} +2 -2
  131. package/dist/{skills-C2rTVj0n.mjs → skills-SqbPo0BI.mjs} +3 -3
  132. package/dist/snippet-dJ68tGsl.mjs +19 -0
  133. package/dist/{start-CfruN4wF.mjs → start-DJZA67WF.mjs} +70 -38
  134. package/dist/{stash-CWuXKSZq.mjs → stash-C89zNKxo.mjs} +21 -18
  135. package/dist/{status-D-RYZB9G.mjs → status-B1EJ_jv0.mjs} +16 -9
  136. package/dist/status-BNvFPemM.mjs +100 -0
  137. package/dist/status-D5wSqYV_.mjs +34 -0
  138. package/dist/{stop-D8Hr4cKX.mjs → stop-5rCLmkCQ.mjs} +16 -11
  139. package/dist/{summary-Lt2XLBK9.mjs → summary-Cihbx0Qs.mjs} +8 -7
  140. package/dist/{sync-schema-BDElSynU.mjs → sync-schema-C3odu0ZH.mjs} +12 -11
  141. package/dist/table-J2f0STnB.mjs +19 -0
  142. package/dist/{table-B-PYcgGb.mjs → table-qDD2kApF.mjs} +1 -1
  143. package/dist/{transform-job-BrhOLO4M.mjs → transform-job-DjhoJbiV.mjs} +1 -1
  144. package/dist/transform-job-OW4SDhsQ.mjs +19 -0
  145. package/dist/transform-q1LYWQtW.mjs +24 -0
  146. package/dist/{tree-DfvjDjmk.mjs → tree-mvq9gM9w.mjs} +7 -6
  147. package/dist/{update-DzgXF082.mjs → update-BoIiuC70.mjs} +16 -14
  148. package/dist/{update-qnFY5IuC.mjs → update-C0jP0AKT.mjs} +12 -11
  149. package/dist/{update-zp7pCBZH.mjs → update-CbBnHz42.mjs} +16 -14
  150. package/dist/{update-B0bjPqKC.mjs → update-CtOo3LsX.mjs} +13 -12
  151. package/dist/{update-CVxOxmt6.mjs → update-DCrOQ1PW.mjs} +17 -15
  152. package/dist/{update-BYduslhn.mjs → update-DEZayTb4.mjs} +20 -15
  153. package/dist/{update-BgcroYkF.mjs → update-DwRxdflw.mjs} +12 -11
  154. package/dist/{update-D9Z8cL7h.mjs → update-Rr4usmCo.mjs} +12 -11
  155. package/dist/{update-DuA8-cCq.mjs → update-VvKMnwsM.mjs} +16 -14
  156. package/dist/{update-dashcard-CQ3kmmss.mjs → update-dashcard-DFvIz8Qj.mjs} +12 -11
  157. package/dist/{update-CqnDMNtZ.mjs → update-tRparnUs.mjs} +18 -16
  158. package/dist/{upgrade-CIgTr2CG.mjs → upgrade-D-Rl_fH9.mjs} +16 -29
  159. package/dist/{url-B5MgZXzg.mjs → url-BB6jeNQj.mjs} +11 -10
  160. package/dist/{uuid-CJz9TmHI.mjs → uuid-BSVUk8u2.mjs} +8 -6
  161. package/dist/{validate-CB0bu50i.mjs → validate-dPEOnOf8.mjs} +2 -1
  162. package/dist/{validate-query-CavIA0Q2.mjs → validate-query-CYvOP8Ld.mjs} +3 -3
  163. package/dist/values-D1RJE4H6.mjs +45 -0
  164. package/dist/verify-A7BWfBPZ.mjs +79 -0
  165. package/dist/{wait-BFqBlg0y.mjs → wait-B17I_pWy.mjs} +2 -2
  166. package/dist/{wait-tDp9ZOou.mjs → wait-DK5QDZ8n.mjs} +14 -10
  167. package/dist/{wait-flags-CN-e9zNq.mjs → wait-flags-DlfbIXHw.mjs} +20 -9
  168. package/dist/{workspace-credentials-4lIxxz4g.mjs → workspace-credentials-8CBMQJFz.mjs} +2 -2
  169. package/dist/workspace-ri6r3zWo.mjs +25 -0
  170. package/dist/{yaml-ECiog374.mjs → yaml-Gv6wRFMF.mjs} +1 -1
  171. package/package.json +2 -1
  172. package/skill-data/core/SKILL.md +55 -453
  173. package/skill-data/git-sync/SKILL.md +1 -1
  174. package/skill-data/mbql/SKILL.md +156 -0
  175. package/skill-data/mbql/references/operators.md +253 -0
  176. package/skill-data/transform/SKILL.md +2 -40
  177. package/skill-data/viz/SKILL.md +137 -0
  178. package/skill-data/viz/references/settings.md +312 -0
  179. package/skill-data/workspace/SKILL.md +45 -63
  180. package/skills/metabase-cli/SKILL.md +5 -26
  181. package/dist/add-collection-ucsyAMkV.mjs +0 -11
  182. package/dist/api-key-BENHbTbV.mjs +0 -13
  183. package/dist/auth-DICRtJDy.mjs +0 -19
  184. package/dist/card-l-UmrUIo.mjs +0 -20
  185. package/dist/collection-oV0olVY-.mjs +0 -19
  186. package/dist/command-augment-D9pI9Vbh.mjs +0 -11
  187. package/dist/create-CrUq6sib.mjs +0 -125
  188. package/dist/create-D3Z878yr.mjs +0 -50
  189. package/dist/create-Le3Bqn7b.mjs +0 -48
  190. package/dist/create-V-q2rU0T.mjs +0 -48
  191. package/dist/create-swbIXdo5.mjs +0 -48
  192. package/dist/current-task-DCq7rk9V.mjs +0 -36
  193. package/dist/dashboard-hbKDd36X.mjs +0 -20
  194. package/dist/db-qVK6NsdB.mjs +0 -22
  195. package/dist/eid-CDFXX_6H.mjs +0 -13
  196. package/dist/field-C0LE7RQI.mjs +0 -18
  197. package/dist/flag-pair-Fmcdkrfx.mjs +0 -17
  198. package/dist/get-run-CwFuR4Uw.mjs +0 -36
  199. package/dist/git-sync-DV7YjniX.mjs +0 -28
  200. package/dist/is-dirty-LxVbm2C5.mjs +0 -10
  201. package/dist/key-CCJdVWKc.mjs +0 -12
  202. package/dist/license-Cb6ewEJO.mjs +0 -17
  203. package/dist/list-DV6CONhp.mjs +0 -55
  204. package/dist/login-D1nZwgKv.mjs +0 -192
  205. package/dist/measure-XhJuL77y.mjs +0 -19
  206. package/dist/package-DFUprkSZ.mjs +0 -85
  207. package/dist/provision-BP-b4Are.mjs +0 -77
  208. package/dist/ps-Bk6unzaX.mjs +0 -11
  209. package/dist/remove-collection-Bc4roCq0.mjs +0 -38
  210. package/dist/segment-DfxZdJmR.mjs +0 -19
  211. package/dist/setting-Czy4ws6h.mjs +0 -18
  212. package/dist/snippet-BCY4KHBU.mjs +0 -19
  213. package/dist/status-1oUnw803.mjs +0 -56
  214. package/dist/status-J9HIDcA5.mjs +0 -32
  215. package/dist/table-BwX3Ib5f.mjs +0 -19
  216. package/dist/transform-iaAi37V0.mjs +0 -24
  217. package/dist/transform-job-Bemonf82.mjs +0 -19
  218. package/dist/values-BXN6tx1i.mjs +0 -36
  219. package/dist/workspace-BBsT0H0g.mjs +0 -24
  220. /package/dist/{body-flags-BK7J6Daz.mjs → body-flags-D7q87Btw.mjs} +0 -0
  221. /package/dist/{collection-B3sPXRLs.mjs → collection-Bcy8cWYH.mjs} +0 -0
  222. /package/dist/{paginate-CTSfuYiF.mjs → paginate-BexjkjbY.mjs} +0 -0
  223. /package/dist/{revision-message-flag-oyq2xrDU.mjs → revision-message-flag-DY29-cgz.mjs} +0 -0
  224. /package/dist/{segment-BMrUBz94.mjs → segment-DhBmcr_E.mjs} +0 -0
  225. /package/dist/{setting-CTaAeMci.mjs → setting-BzCng1Ub.mjs} +0 -0
  226. /package/dist/{snippet-CSWqkslB.mjs → snippet-bi_0XbNT.mjs} +0 -0
  227. /package/dist/{transform-DR4ejuPM.mjs → transform-BKahefz_.mjs} +0 -0
  228. /package/dist/{workspace-DUfqhPm5.mjs → workspace-D8HtUN0y.mjs} +0 -0
@@ -0,0 +1,44 @@
1
+ import "./command-augment-BH9qgQ5u.mjs";
2
+ import { connectionFlags, outputFlags, profileFlag } from "./error-ZsFeevV2.mjs";
3
+ import { defineMetabaseCommand } from "./runtime-Duawf5lE.mjs";
4
+ import "./capabilities-7e9MgquN.mjs";
5
+ import { renderSummary } from "./render-0_GsapXa.mjs";
6
+ import { parseId } from "./parse-id-0_tOPvfI.mjs";
7
+ import "./poll-task-51WRdugU.mjs";
8
+ import "./poll-4eoh5J0r.mjs";
9
+ import { SyncSettingsUpdateResult, setCollectionRemoteSynced, syncSettingsUpdateView } from "./add-collection-DQjTlDNF.mjs";
10
+
11
+ //#region src/commands/git-sync/remove-collection.ts
12
+ var remove_collection_default = defineMetabaseCommand({
13
+ meta: {
14
+ name: "remove-collection",
15
+ description: "Unmark a collection as git-synced; cascades to descendants by location prefix"
16
+ },
17
+ capabilities: {
18
+ minVersion: 60,
19
+ tokenFeature: "remote_sync"
20
+ },
21
+ args: {
22
+ ...outputFlags,
23
+ ...profileFlag,
24
+ ...connectionFlags,
25
+ id: {
26
+ type: "positional",
27
+ description: "Collection id (positive integer)",
28
+ required: true
29
+ }
30
+ },
31
+ outputSchema: SyncSettingsUpdateResult,
32
+ examples: ["mb git-sync remove-collection 12", "mb git-sync remove-collection 12 --json --profile prod"],
33
+ async run({ args, ctx, getClient }) {
34
+ const collectionId = parseId(args.id, "id");
35
+ const client = await getClient();
36
+ const result = await setCollectionRemoteSynced(client, collectionId, false);
37
+ const taskPart = result.task_id !== void 0 ? ` (task #${result.task_id})` : "";
38
+ const message = result.success ? `Collection ${collectionId} is no longer git-synced${taskPart}.` : `Could not update git-sync setting for collection ${collectionId}.`;
39
+ renderSummary(result, syncSettingsUpdateView, message, ctx);
40
+ }
41
+ });
42
+
43
+ //#endregion
44
+ export { remove_collection_default as default };
@@ -1,4 +1,5 @@
1
- import { ConfigError, isPlainObject } from "./predicates-CGO17Q15.mjs";
1
+ import { ConfigError } from "./command-augment-BH9qgQ5u.mjs";
2
+ import { isPlainObject, itemOversizeMessage, listTruncationNotice, warn } from "./capabilities-7e9MgquN.mjs";
2
3
  import Table from "cli-table3";
3
4
 
4
5
  //#region src/output/cap.ts
@@ -30,18 +31,6 @@ function jsonByteLength(value) {
30
31
  return Buffer.byteLength(JSON.stringify(value), "utf8");
31
32
  }
32
33
 
33
- //#endregion
34
- //#region src/output/notice.ts
35
- function warn(message) {
36
- process.stderr.write(message + "\n");
37
- }
38
- function listTruncationNotice(bytes) {
39
- return `… cut at ${bytes} bytes; rerun with --max-bytes 0`;
40
- }
41
- function itemOversizeNotice(bytes) {
42
- return `… item is ${bytes} bytes (exceeds --max-bytes); narrow with --fields, or pass --max-bytes 0`;
43
- }
44
-
45
34
  //#endregion
46
35
  //#region src/output/projection.ts
47
36
  function applyProjection(value, view, full, fields) {
@@ -92,17 +81,33 @@ function setPath(target, parts, value) {
92
81
 
93
82
  //#endregion
94
83
  //#region src/output/table.ts
84
+ const PLAIN_TABLE_STYLE = {
85
+ head: [],
86
+ border: []
87
+ };
95
88
  function renderTable(rows, columns) {
96
89
  const head = columns.map((column) => column.label ?? column.key);
97
90
  const widths = columns.map((column) => column.width ?? null);
98
91
  const hasWidth = widths.some((width) => width !== null);
99
92
  const table = new Table(hasWidth ? {
100
93
  head,
101
- colWidths: widths
102
- } : { head });
94
+ colWidths: widths,
95
+ style: PLAIN_TABLE_STYLE
96
+ } : {
97
+ head,
98
+ style: PLAIN_TABLE_STYLE
99
+ });
103
100
  for (const row of rows) table.push(columns.map((column) => formatCell(row, column)));
104
101
  return table.toString();
105
102
  }
103
+ function renderRows(head, rows) {
104
+ const table = new Table({
105
+ head: [...head],
106
+ style: PLAIN_TABLE_STYLE
107
+ });
108
+ for (const row of rows) table.push([...row]);
109
+ return table.toString();
110
+ }
106
111
  function formatCell(row, column) {
107
112
  const value = row[column.key];
108
113
  if (column.format !== void 0) return column.format(value);
@@ -125,11 +130,20 @@ function writeText(text) {
125
130
  function renderItem(item, view, opts) {
126
131
  const projected = applyProjection(item, view, opts.full, opts.fields);
127
132
  const body = renderItemBody(item, view, projected, opts) + "\n";
133
+ assertItemWithinMaxBytes(body, opts.maxBytes);
134
+ process.stdout.write(body);
135
+ }
136
+ function renderSummary(item, view, summaryText, opts) {
137
+ if (opts.format === "json" || opts.fields !== void 0 || opts.full) {
138
+ renderItem(item, view, opts);
139
+ return;
140
+ }
141
+ const body = (typeof summaryText === "function" ? summaryText() : summaryText) + "\n";
142
+ assertItemWithinMaxBytes(body, opts.maxBytes);
128
143
  process.stdout.write(body);
129
- emitItemOversizeNotice(body, opts.maxBytes);
130
144
  }
131
145
  function renderList(envelope, view, opts) {
132
- if (opts.format === "json" || opts.fields !== void 0) {
146
+ if (opts.format === "json") {
133
147
  renderJsonEnvelope(envelope, view, opts);
134
148
  return;
135
149
  }
@@ -137,10 +151,24 @@ function renderList(envelope, view, opts) {
137
151
  process.stdout.write("(no results)\n");
138
152
  return;
139
153
  }
154
+ if (opts.fields !== void 0) {
155
+ renderProjectedTable(envelope, view, opts.fields, opts.maxBytes);
156
+ return;
157
+ }
140
158
  const capped = capListEnvelope(envelope, opts.maxBytes);
141
159
  process.stdout.write(renderTable(capped.data, view.tableColumns) + "\n");
142
160
  if (capped.truncated !== void 0) warn(listTruncationNotice(capped.truncated.bytes));
143
161
  }
162
+ function renderProjectedTable(envelope, view, fields, maxBytes) {
163
+ const projectedItems = envelope.data.map((item) => applyProjection(item, view, false, fields));
164
+ const capped = capListEnvelope({
165
+ ...envelope,
166
+ data: projectedItems
167
+ }, maxBytes);
168
+ const rows = capped.data.map((item) => fields.map((path) => formatScalar(pickPath(item, path.split(".")))));
169
+ process.stdout.write(renderRows(fields, rows) + "\n");
170
+ if (capped.truncated !== void 0) warn(listTruncationNotice(capped.truncated.bytes));
171
+ }
144
172
  function renderJsonEnvelope(envelope, view, opts) {
145
173
  const projectedItems = envelope.data.map((item) => applyProjection(item, view, opts.full, opts.fields));
146
174
  const projectedEnvelope = {
@@ -152,9 +180,9 @@ function renderJsonEnvelope(envelope, view, opts) {
152
180
  if (capped.truncated !== void 0) warn(listTruncationNotice(capped.truncated.bytes));
153
181
  }
154
182
  function renderItemBody(item, view, projected, opts) {
155
- if (opts.format === "json" || opts.fields !== void 0) return JSON.stringify(projected, null, 2);
156
- if (!opts.full) return renderKeyValueLines(columnPairs(item, view.tableColumns));
157
- return renderKeyValueLines(objectPairs(projected));
183
+ if (opts.format === "json") return JSON.stringify(projected, null, 2);
184
+ if (opts.fields !== void 0 || opts.full) return renderKeyValueLines(objectPairs(projected));
185
+ return renderKeyValueLines(columnPairs(item, view.tableColumns));
158
186
  }
159
187
  function columnPairs(item, columns) {
160
188
  return columns.map((column) => [column.label ?? column.key, formatCell(item, column)]);
@@ -171,12 +199,12 @@ function renderKeyValueLines(pairs) {
171
199
  const padding = Math.max(...pairs.map(([label]) => label.length));
172
200
  return pairs.map(([label, value]) => `${label.padEnd(padding)} ${value}`).join("\n");
173
201
  }
174
- function emitItemOversizeNotice(body, maxBytes) {
202
+ function assertItemWithinMaxBytes(body, maxBytes) {
175
203
  if (maxBytes <= 0) return;
176
204
  const bytes = Buffer.byteLength(body, "utf8");
177
205
  if (bytes <= maxBytes) return;
178
- warn(itemOversizeNotice(bytes));
206
+ throw new ConfigError(itemOversizeMessage(bytes, maxBytes));
179
207
  }
180
208
 
181
209
  //#endregion
182
- export { renderItem, renderList, warn, writeJson, writeText };
210
+ export { formatScalar, renderItem, renderList, renderRows, renderSummary, writeJson, writeText };
@@ -0,0 +1,32 @@
1
+ //#region src/commands/auth/render.ts
2
+ const EMPTY_CELL = "—";
3
+ function pickProperty(value, key) {
4
+ if (typeof value !== "object" || value === null || !(key in value)) return void 0;
5
+ const inner = Reflect.get(value, key);
6
+ return inner;
7
+ }
8
+ function pickString(value, key) {
9
+ const inner = pickProperty(value, key);
10
+ return typeof inner === "string" ? inner : null;
11
+ }
12
+ function pickBoolean(value, key) {
13
+ const inner = pickProperty(value, key);
14
+ return typeof inner === "boolean" ? inner : null;
15
+ }
16
+ function renderUserName(value) {
17
+ return pickString(value, "name") ?? EMPTY_CELL;
18
+ }
19
+ function renderUserRole(value) {
20
+ const isAdmin = pickBoolean(value, "isAdmin");
21
+ if (isAdmin === null) return EMPTY_CELL;
22
+ return isAdmin ? "Admin" : "User";
23
+ }
24
+ function renderVersionTag(value) {
25
+ return pickString(value, "tag") ?? EMPTY_CELL;
26
+ }
27
+ function renderTimestamp(value) {
28
+ return typeof value === "string" ? value : EMPTY_CELL;
29
+ }
30
+
31
+ //#endregion
32
+ export { EMPTY_CELL, renderTimestamp, renderUserName, renderUserRole, renderVersionTag };
@@ -1,12 +1,12 @@
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";
7
- import "./field-B3gvaqpK.mjs";
8
- import "./table-B-PYcgGb.mjs";
9
- import { DatabaseSyncResult, databaseSyncResultView } from "./database-vvig8k4x.mjs";
1
+ import "./command-augment-BH9qgQ5u.mjs";
2
+ import { connectionFlags, outputFlags, profileFlag } from "./error-ZsFeevV2.mjs";
3
+ import { defineMetabaseCommand } from "./runtime-Duawf5lE.mjs";
4
+ import "./capabilities-7e9MgquN.mjs";
5
+ import { renderSummary } from "./render-0_GsapXa.mjs";
6
+ import "./field-E0IBy4Uw.mjs";
7
+ import { parseId } from "./parse-id-0_tOPvfI.mjs";
8
+ import "./table-qDD2kApF.mjs";
9
+ import { DatabaseSyncResult, databaseSyncResultView } from "./database-BXiue1in.mjs";
10
10
  import { z } from "zod";
11
11
 
12
12
  //#region src/commands/db/rescan-values.ts
@@ -16,6 +16,7 @@ var rescan_values_default = defineMetabaseCommand({
16
16
  name: "rescan-values",
17
17
  description: "Trigger a rescan of cached field values for a database"
18
18
  },
19
+ capabilities: { minVersion: 58 },
19
20
  args: {
20
21
  ...outputFlags,
21
22
  ...profileFlag,
@@ -32,10 +33,10 @@ var rescan_values_default = defineMetabaseCommand({
32
33
  const id = parseId(args.id);
33
34
  const client = await getClient();
34
35
  const response = await client.requestParsed(RescanValuesApiResponse, `/api/database/${id}/rescan_values`, { method: "POST" });
35
- renderItem({
36
+ renderSummary({
36
37
  id,
37
38
  status: response.status
38
- }, databaseSyncResultView, ctx);
39
+ }, databaseSyncResultView, `Field-values rescan queued for database ${id}.`, ctx);
39
40
  }
40
41
  });
41
42
 
@@ -1,12 +1,12 @@
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";
7
- import { pollUntil } from "./poll-p9Y7-JEQ.mjs";
8
- import { TransformRun } from "./transform-DR4ejuPM.mjs";
9
- import { parseWaitFlags, waitFlags } from "./wait-flags-CN-e9zNq.mjs";
1
+ import "./command-augment-BH9qgQ5u.mjs";
2
+ import { connectionFlags, outputFlags, profileFlag } from "./error-ZsFeevV2.mjs";
3
+ import { defineMetabaseCommand } from "./runtime-Duawf5lE.mjs";
4
+ import "./capabilities-7e9MgquN.mjs";
5
+ import { renderSummary } from "./render-0_GsapXa.mjs";
6
+ import { parseId } from "./parse-id-0_tOPvfI.mjs";
7
+ import { pollUntil } from "./poll-4eoh5J0r.mjs";
8
+ import { parseWaitFlags, waitFlags } from "./wait-flags-DlfbIXHw.mjs";
9
+ import { TransformRun } from "./transform-BKahefz_.mjs";
10
10
  import { z } from "zod";
11
11
 
12
12
  //#region src/commands/transform/run.ts
@@ -45,6 +45,7 @@ var run_default = defineMetabaseCommand({
45
45
  name: "run",
46
46
  description: "Trigger a transform run by id"
47
47
  },
48
+ capabilities: { minVersion: 59 },
48
49
  args: {
49
50
  ...outputFlags,
50
51
  ...profileFlag,
@@ -64,28 +65,29 @@ var run_default = defineMetabaseCommand({
64
65
  const client = await getClient();
65
66
  const kickoff = await client.requestParsed(TransformRunKickoff, `/api/transform/${id}/run`, { method: "POST" });
66
67
  if (!wait.enabled) {
67
- renderItem({
68
+ const started = kickoff.run_id === null ? kickoff.message : `Started run ${kickoff.run_id} for transform ${id}.`;
69
+ renderSummary({
68
70
  message: kickoff.message,
69
71
  run_id: kickoff.run_id,
70
72
  final: null
71
- }, transformRunResultView, ctx);
73
+ }, transformRunResultView, started, ctx);
72
74
  return;
73
75
  }
74
76
  if (kickoff.run_id === null) {
75
- renderItem({
77
+ renderSummary({
76
78
  message: kickoff.message,
77
79
  run_id: null,
78
80
  final: null
79
- }, transformRunResultView, ctx);
81
+ }, transformRunResultView, kickoff.message, ctx);
80
82
  throw new Error(`transform run did not start: ${kickoff.message}`);
81
83
  }
82
84
  const runId = kickoff.run_id;
83
85
  const final = await pollUntil(async () => client.requestParsed(TransformRun, `/api/transform/run/${runId}`), (run) => RUN_TERMINAL_STATUSES.has(run.status), wait.schedule);
84
- renderItem({
86
+ renderSummary({
85
87
  message: kickoff.message,
86
88
  run_id: runId,
87
89
  final
88
- }, transformRunResultView, ctx);
90
+ }, transformRunResultView, `Run ${runId} of transform ${id} ${final.status}.`, ctx);
89
91
  if (RUN_FAILURE_STATUSES.has(final.status)) throw new Error(`transform run ${runId} ${final.status}`);
90
92
  }
91
93
  });
@@ -1,11 +1,11 @@
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 } from "./runtime-CDu6fykq.mjs";
6
- import { parseId } from "./parse-id-CysSaCbf.mjs";
7
- import { collectPaginated } from "./paginate-CTSfuYiF.mjs";
8
- import { TransformRun, TransformRunCompact, transformRunView } from "./transform-DR4ejuPM.mjs";
1
+ import "./command-augment-BH9qgQ5u.mjs";
2
+ import { connectionFlags, listEnvelopeSchema, outputFlags, profileFlag } from "./error-ZsFeevV2.mjs";
3
+ import { defineMetabaseCommand } from "./runtime-Duawf5lE.mjs";
4
+ import "./capabilities-7e9MgquN.mjs";
5
+ import { renderList } from "./render-0_GsapXa.mjs";
6
+ import { parseId } from "./parse-id-0_tOPvfI.mjs";
7
+ import { collectPaginated } from "./paginate-BexjkjbY.mjs";
8
+ import { TransformRun, TransformRunCompact, transformRunView } from "./transform-BKahefz_.mjs";
9
9
 
10
10
  //#region src/commands/transform/runs.ts
11
11
  const TransformRunListEnvelope = listEnvelopeSchema(TransformRunCompact);
@@ -14,6 +14,7 @@ var runs_default = defineMetabaseCommand({
14
14
  name: "runs",
15
15
  description: "List recent transform runs"
16
16
  },
17
+ capabilities: { minVersion: 59 },
17
18
  args: {
18
19
  ...outputFlags,
19
20
  ...profileFlag,