@metabase/cli 0.3.2 → 0.4.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 (291) hide show
  1. package/dist/{add-collection-BjVAdZ1n.mjs → add-collection-CC6KSwjX.mjs} +5 -5
  2. package/dist/{alert-DCLhfwdv.mjs → alert-Dt6La9tK.mjs} +7 -7
  3. package/dist/{alerts-DRin_wt2.mjs → alerts-ClKnJqgB.mjs} +6 -6
  4. package/dist/{append-DQ9rPJHZ.mjs → append-pnaQWP_A.mjs} +4 -4
  5. package/dist/{archive-D6xzHaM3.mjs → archive-By1pLYtO.mjs} +3 -3
  6. package/dist/{archive-xcgoVPwv.mjs → archive-CLu2TGW5.mjs} +5 -5
  7. package/dist/{archive-HeRygdKz2.mjs → archive-COP9joWU.mjs} +4 -4
  8. package/dist/{archive-COFQAHAL.mjs → archive-CSnBFcQ_.mjs} +3 -3
  9. package/dist/{archive-1YVo-Wsu.mjs → archive-Ct1eyolN.mjs} +3 -3
  10. package/dist/{archive-_c-ISZmi.mjs → archive-D7nAQcCz.mjs} +3 -3
  11. package/dist/{archive-BzVxRqpL.mjs → archive-DEDA48w3.mjs} +5 -5
  12. package/dist/{archive-BVRKE9Ev.mjs → archive-DJAsSzCz.mjs} +5 -5
  13. package/dist/{archive-BPCgmLcV.mjs → archive-DtabbPUk.mjs} +4 -4
  14. package/dist/{archive-o5cWV3vZ.mjs → archive-YNpa8daf.mjs} +3 -3
  15. package/dist/{archive-D3yPvUtz.mjs → archive-ewitrKdx.mjs} +5 -5
  16. package/dist/{auth-DJn5T6zA.mjs → auth-DdLhXCn-.mjs} +5 -5
  17. package/dist/body-Dd-TwYYL.mjs +17 -0
  18. package/dist/branch-flag-pFQPNYKr.mjs +9 -0
  19. package/dist/{branches-CUyPxeeW.mjs → branches-ZvGNhed6.mjs} +3 -3
  20. package/dist/breaking-BLswgvkA.mjs +36 -0
  21. package/dist/broken-BN0nL2hf.mjs +37 -0
  22. package/dist/bulk-discard-values-DFJUjSnE.mjs +49 -0
  23. package/dist/bulk-edit-Brqr67bu.mjs +53 -0
  24. package/dist/bulk-rescan-values-DndXXi2N.mjs +28 -0
  25. package/dist/bulk-sync-schema-mO-t2QlL.mjs +28 -0
  26. package/dist/{cancel-BNuVls58.mjs → cancel-DP03dXBf.mjs} +3 -3
  27. package/dist/{cancel-task-DUmlQQpi.mjs → cancel-task-CELBfBPP.mjs} +4 -4
  28. package/dist/{card-voh1k4hl.mjs → card-Bv4ZN0oV.mjs} +5 -3
  29. package/dist/card-CFd-GUEM.mjs +25 -0
  30. package/dist/{card-CEkp1mcI.mjs → card-DSrgU7lT.mjs} +1 -1
  31. package/dist/{cards-_gbvw3wp.mjs → cards-Cn2ywFTJ.mjs} +6 -6
  32. package/dist/cli.mjs +410 -100
  33. package/dist/{client-BnK0evYf.mjs → client-ToLiPu9q.mjs} +316 -316
  34. package/dist/{collection-DYM0p3Xl.mjs → collection-BG3Ksea-.mjs} +1 -1
  35. package/dist/collection-BKNShKcY.mjs +21 -0
  36. package/dist/{collection-BxdPxD38.mjs → collection-D3KXhvnc.mjs} +7 -5
  37. package/dist/{collection-namespace-DM90lA8C.mjs → collection-namespace-CWW6hZxK.mjs} +2 -2
  38. package/dist/{content-translation-CqB3peU9.mjs → content-translation-C19SqZWp.mjs} +3 -3
  39. package/dist/copy-BGK8Wz6d.mjs +55 -0
  40. package/dist/copy-COLUuiuF.mjs +36 -0
  41. package/dist/copy-flags-eU8aa0zj.mjs +32 -0
  42. package/dist/{create-CnJKj9Nl.mjs → create-B2tuInV9.mjs} +4 -4
  43. package/dist/{create-D4Y69cDF.mjs → create-B3TKri1E.mjs} +4 -4
  44. package/dist/{create-BSvTs-EV.mjs → create-B4gXKDRr.mjs} +3 -3
  45. package/dist/create-B63JphYe.mjs +34 -0
  46. package/dist/{create-IFjwHs0G.mjs → create-BH6kLjHS.mjs} +4 -4
  47. package/dist/{create-BIUVvIGH.mjs → create-BwifyhyL.mjs} +3 -3
  48. package/dist/{create-CwXUMOMd.mjs → create-Colz5bOO.mjs} +3 -3
  49. package/dist/{create-Cm9Z-rfe2.mjs → create-CulUZgN1.mjs} +4 -4
  50. package/dist/{create-DNx9TGHs.mjs → create-Cxuqr3kT.mjs} +6 -6
  51. package/dist/{create-CUHpxANR.mjs → create-CzW_UTE7.mjs} +6 -6
  52. package/dist/{create-BMKuihoI.mjs → create-DNR8RMvV.mjs} +6 -6
  53. package/dist/{create-DMVw9nrZ.mjs → create-DSHeoV7e.mjs} +4 -4
  54. package/dist/{create-DVo8-IzZ.mjs → create-DWbW2WSc.mjs} +6 -6
  55. package/dist/{create-va8bByVt.mjs → create-Dx8nfjGs.mjs} +3 -3
  56. package/dist/{create-B7S5fCkD.mjs → create-XGomrTz5.mjs} +5 -5
  57. package/dist/{create-branch-Cw-uXows.mjs → create-branch-DxL7KUZp.mjs} +4 -4
  58. package/dist/{create-B48rmY8v.mjs → create-g1f2yJ4s.mjs} +3 -3
  59. package/dist/{csv-CaKx1oFZ.mjs → csv-C6TEfLMi.mjs} +4 -4
  60. package/dist/{current-task-lGh69Z1i.mjs → current-task-CHs0zNFM.mjs} +4 -4
  61. package/dist/dashboard-AWrXqQ7a.mjs +35 -0
  62. package/dist/{dashboard-D0hwTC-f.mjs → dashboard-Phz3XpRM.mjs} +2 -1
  63. package/dist/{dashboard-DgK81azj.mjs → dashboard-XSTr9QCr.mjs} +6 -2
  64. package/dist/database-D-CRyRIv.mjs +45 -0
  65. package/dist/{database-C3E9PZSx.mjs → database-MlUPpitM.mjs} +1 -1
  66. package/dist/dataset-p5oNPQgL.mjs +66 -0
  67. package/dist/{db-BRHPjshe.mjs → db-BFSeETMO.mjs} +7 -7
  68. package/dist/{delete-DMETa-37.mjs → delete-BUKgSJhh.mjs} +4 -4
  69. package/dist/{delete-CQWCfqHf.mjs → delete-CPBByycV.mjs} +4 -4
  70. package/dist/{delete-Ci0aDYpf.mjs → delete-Cucqn4-V.mjs} +4 -4
  71. package/dist/{delete-BxBadE3q.mjs → delete-D79TlpcE.mjs} +4 -4
  72. package/dist/delete-DZJxBmdU.mjs +44 -0
  73. package/dist/{delete-G6EiGn2Q.mjs → delete-DndykJn2.mjs} +4 -4
  74. package/dist/delete-runtime-BbmRg_in.mjs +55 -0
  75. package/dist/{delete-table-N4rZtt1T.mjs → delete-table-CbsWcjh5.mjs} +4 -4
  76. package/dist/{dependencies-edN0P1SS.mjs → dependencies-B-880phi.mjs} +5 -5
  77. package/dist/dependency-DBUJwXqv.mjs +15 -0
  78. package/dist/dependency-DKSjKT8P.mjs +165 -0
  79. package/dist/dependency-DSxKm9oS.mjs +111 -0
  80. package/dist/dependents-C_FDnpZs.mjs +52 -0
  81. package/dist/{dirty-U51bMoCP.mjs → dirty-B-Is68--.mjs} +5 -5
  82. package/dist/discard-values-yzH-kIsr.mjs +55 -0
  83. package/dist/document-BRaba87v.mjs +20 -0
  84. package/dist/{document-CA0Q6lqu.mjs → document-C18b5rM6.mjs} +1 -1
  85. package/dist/{document-BHpLJbKU.mjs → document-DFCj1Az_.mjs} +2 -1
  86. package/dist/{download-BJA6k-e6.mjs → download-DluF-vnU.mjs} +2 -2
  87. package/dist/{eid-BtlRU1E0.mjs → eid-Dz-mP40j.mjs} +11 -10
  88. package/dist/entity-CA4zfRt4.mjs +20 -0
  89. package/dist/entry-flags-7x7bIyOQ.mjs +42 -0
  90. package/dist/{events-B5rnOo-L.mjs → events-2sOk6H09.mjs} +4 -4
  91. package/dist/export-BKkAJOFb.mjs +74 -0
  92. package/dist/export-flags-NiZ7C3Gm.mjs +81 -0
  93. package/dist/export-preflight-CwJ_3-iX.mjs +35 -0
  94. package/dist/{field-CcN4oZy6.mjs → field-5nivEfd6.mjs} +33 -3
  95. package/dist/field-BARgq5I9.mjs +21 -0
  96. package/dist/field-wmN6raOG.mjs +128 -0
  97. package/dist/{fields-zQ6O_W_H.mjs → fields-Bod0s_uV.mjs} +6 -6
  98. package/dist/filter-flags-BYcbB85j.mjs +71 -0
  99. package/dist/fks-IUw66K_Q.mjs +36 -0
  100. package/dist/{get-BDrmBZ1z.mjs → get-B8DUMrCw.mjs} +5 -5
  101. package/dist/{get-is8x5f2n.mjs → get-BGqvoGQM.mjs} +3 -3
  102. package/dist/{get-CekXFP3x.mjs → get-BSUsfysk.mjs} +3 -3
  103. package/dist/{get-CeSQptdl.mjs → get-BXsLkoit.mjs} +5 -5
  104. package/dist/{get-DhpMuTSt.mjs → get-BXssHyJ1.mjs} +5 -5
  105. package/dist/get-Bct52yPw.mjs +36 -0
  106. package/dist/{get-DXwlZjw0.mjs → get-Besqwy32.mjs} +3 -3
  107. package/dist/{get-BLjcCXp8.mjs → get-BfSX-OeS.mjs} +3 -3
  108. package/dist/{get-BLcS4il2.mjs → get-Biy4gOzu2.mjs} +3 -3
  109. package/dist/{get-BSoMWp4t2.mjs → get-CYIeiTZ9.mjs} +4 -4
  110. package/dist/{get-CwiJWeH4.mjs → get-CaEiQnSw.mjs} +4 -4
  111. package/dist/{get-xPv7e5Ez.mjs → get-Cl81y0Md.mjs} +5 -5
  112. package/dist/{get-Cf6a4fFN.mjs → get-D1NjMXAH.mjs} +4 -4
  113. package/dist/{get-EFsmL4le.mjs → get-D2cPuOPR.mjs} +5 -5
  114. package/dist/{get-Dg-S07ri.mjs → get-DITlshJH.mjs} +3 -3
  115. package/dist/{get-CTp5l7aU.mjs → get-DLyg6Al9.mjs} +3 -3
  116. package/dist/{get-93wuhTn2.mjs → get-DQZfaVNq.mjs} +4 -4
  117. package/dist/{get-CG6G-mzV.mjs → get-DtBqoGTa.mjs} +5 -5
  118. package/dist/{get-DC_huYD8.mjs → get-_ik_5_lQ.mjs} +5 -5
  119. package/dist/{get-run-DwY4sFGy.mjs → get-run-CEc_tr5b.mjs} +4 -4
  120. package/dist/{git-sync-BwBRmEhE.mjs → git-sync-COokpYgc.mjs} +12 -3
  121. package/dist/git-sync-DKcaddkV.mjs +29 -0
  122. package/dist/git-sync-DspFahwV.mjs +165 -0
  123. package/dist/glossary-BlNCrYbw.mjs +30 -0
  124. package/dist/glossary-CWIX8Zh6.mjs +14 -0
  125. package/dist/glossary-LmZWwCNP.mjs +21 -0
  126. package/dist/graph-f6Bp1e8U.mjs +34 -0
  127. package/dist/{group-YQQ5GIcP.mjs → group-bpD_KcjA.mjs} +1 -1
  128. package/dist/{has-remote-changes-DE2_14FK.mjs → has-remote-changes-B8MmN6yh.mjs} +4 -4
  129. package/dist/{import-Cs7wk058.mjs → import-Bhq15KgP.mjs} +19 -8
  130. package/dist/{input-DEvkIjGr.mjs → input-D8qW-KtR.mjs} +6 -2
  131. package/dist/{is-dirty-XqDfqXGi.mjs → is-dirty-CAsVuVx8.mjs} +2 -2
  132. package/dist/{items-BloAjPwA.mjs → items-BZJomiDE.mjs} +8 -8
  133. package/dist/{key-PYetuQ13.mjs → key-BynJSK9u.mjs} +1 -1
  134. package/dist/{library-Dgq_5BFh.mjs → library-B7wDH-Nc.mjs} +5 -5
  135. package/dist/{library-PGCfm0UA.mjs → library-BOv5SY24.mjs} +1 -1
  136. package/dist/{library-BPIzb3K_.mjs → library-Ck0EK5bi.mjs} +4 -2
  137. package/dist/{list-CZCaqPoo.mjs → list-B2uUl26x.mjs} +6 -6
  138. package/dist/{list-3ErmGdY0.mjs → list-B4luDSYj.mjs} +6 -6
  139. package/dist/{list-D04uiS3F.mjs → list-B8ND9t2h.mjs} +3 -3
  140. package/dist/{list-CghNKfYJ.mjs → list-BT5t8ZOl.mjs} +4 -4
  141. package/dist/{list-VzrtA9lt.mjs → list-BT7xiUQe.mjs} +3 -3
  142. package/dist/{list-D9d5ocYi.mjs → list-BWFCv_zk.mjs} +5 -5
  143. package/dist/{list-DboUvg-Y.mjs → list-BtZVe1Nq.mjs} +6 -6
  144. package/dist/{list-sdCIS2Df.mjs → list-BwdSG-P5.mjs} +5 -5
  145. package/dist/{list-yV6CyPzn.mjs → list-C-A-2HFq.mjs} +3 -3
  146. package/dist/list-C9x--9Jq.mjs +101 -0
  147. package/dist/{list-CUJ1wem9.mjs → list-CCdXig7b.mjs} +4 -4
  148. package/dist/{list-BfLo1xI8.mjs → list-CJDFoOHb.mjs} +3 -3
  149. package/dist/{list-Bzm5mXRo.mjs → list-CLFu3mQB.mjs} +3 -3
  150. package/dist/{list-BZnf3RmA.mjs → list-Cd40Kr0R.mjs} +3 -3
  151. package/dist/{list-CUXlZiS1.mjs → list-Cj_mTxbY.mjs} +4 -4
  152. package/dist/{list-f8Csdjyc.mjs → list-CtS50R7m.mjs} +5 -5
  153. package/dist/{list-vsXIMssK.mjs → list-CvZyTwmV.mjs} +5 -5
  154. package/dist/list-DcnNlYQA.mjs +35 -0
  155. package/dist/{list-DuJezLm_.mjs → list-DtgbtE3_.mjs} +3 -3
  156. package/dist/{login-Vw51Gts5.mjs → login-Bi_nGMJ9.mjs} +6 -6
  157. package/dist/{logout-BDIqoVhv.mjs → logout-CiHQJWTu.mjs} +2 -2
  158. package/dist/{measure-LY9Tp9QZ.mjs → measure-D2qq5e8f.mjs} +6 -6
  159. package/dist/moderation-review-BdqEH6N1.mjs +31 -0
  160. package/dist/{notification-DVrLkjFT.mjs → notification-DOYdl0ao.mjs} +1 -1
  161. package/dist/{parameter-values-DWjmO7Ai.mjs → parameter-values-CZow98nb.mjs} +3 -3
  162. package/dist/{parse-enum-Dc0dMZ3P.mjs → parse-enum-CLIXMsd8.mjs} +1 -1
  163. package/dist/parse-id-BW09NysN.mjs +13 -0
  164. package/dist/{parse-ref-DTDld_LJ.mjs → parse-ref-Cw5fa4FI.mjs} +1 -1
  165. package/dist/parse-text-T0lTXzTZ.mjs +11 -0
  166. package/dist/{path-BUUAGYO5.mjs → path-K6LPLYPb.mjs} +4 -4
  167. package/dist/{poll-CZeXepUQ.mjs → poll-Dz4tUm2f.mjs} +2 -2
  168. package/dist/{preflight-DcULqq8E.mjs → preflight-CX6cqB90.mjs} +3 -3
  169. package/dist/{process-CTrfxxaC.mjs → process-D0HdqZ3r.mjs} +1 -1
  170. package/dist/{publish-qVFmJQ1E.mjs → publish-COatW4Un.mjs} +4 -4
  171. package/dist/{pulse-x0gFxWfG.mjs → pulse-D1uh8UIU.mjs} +1 -1
  172. package/dist/query-BJXTIDhy.mjs +328 -0
  173. package/dist/{query-Cq1lmqL5.mjs → query-DmvkyDfo.mjs} +14 -33
  174. package/dist/remapping-CPAvDKHV.mjs +53 -0
  175. package/dist/{remove-collection-DBqh2Lqm.mjs → remove-collection-Bg-sNX3U.mjs} +5 -5
  176. package/dist/{render-Gx1hR7IF.mjs → render-BSfDD6ip.mjs} +2 -2
  177. package/dist/{replace-CujInVY9.mjs → replace-RCHeZLUT.mjs} +4 -4
  178. package/dist/{rescan-values-HypqBCSK.mjs → rescan-values-CpDGYZvf.mjs} +5 -5
  179. package/dist/rescan-values-PeMnpaFY.mjs +32 -0
  180. package/dist/{run-DEkQSOQa.mjs → run-CaQ7kubO.mjs} +3 -3
  181. package/dist/{run-b3jyF29q.mjs → run-DkRkZRgf.mjs} +4 -4
  182. package/dist/{runs-GHqHLGy4.mjs → runs-BDjoVJ0P.mjs} +5 -5
  183. package/dist/{runtime-nCPku2nN.mjs → runtime-CZ5zh32z.mjs} +21 -82
  184. package/dist/{schema-tables-B5L05Y1L.mjs → schema-tables-C2qjLcPq.mjs} +6 -6
  185. package/dist/{schemas-Clx26p_4.mjs → schemas-D8hfNduk.mjs} +4 -4
  186. package/dist/search-BrQQuNmh.mjs +131 -0
  187. package/dist/search-CnTXKJgx.mjs +85 -0
  188. package/dist/{segment-DiRJcbam.mjs → segment-Bi6eqj3e.mjs} +6 -6
  189. package/dist/{send-DIHkDNBN.mjs → send-CAjgVNlA.mjs} +3 -3
  190. package/dist/{set-D77qUZML.mjs → set-BXTkYWid.mjs} +4 -4
  191. package/dist/{set-active-DCdFgD0O.mjs → set-active-CBQVCePU.mjs} +3 -3
  192. package/dist/set-sensitivity-D39kGTob.mjs +57 -0
  193. package/dist/{setting-DR9bj232.mjs → setting-CPkvkc4H.mjs} +4 -4
  194. package/dist/{setup-DGa2LLEp.mjs → setup-Be3xDXHi.mjs} +3 -3
  195. package/dist/{signal-k7cm5N6h.mjs → signal-CxWeLszu.mjs} +1 -1
  196. package/dist/{skill-list-DAvGGHzS.mjs → skill-list-CBGq30sI.mjs} +2 -2
  197. package/dist/{skills-CqtNuSXM.mjs → skills-CJ9eXouJ.mjs} +2 -2
  198. package/dist/{skills-CCn7cyMP.mjs → skills-DyiLycMY.mjs} +3 -3
  199. package/dist/snippet-QirK70R_.mjs +19 -0
  200. package/dist/{stash-BTtsV0AG.mjs → stash-BVN3s5N_.mjs} +6 -6
  201. package/dist/{status-CW7Dt-nV.mjs → status-BtbMmIWo.mjs} +7 -7
  202. package/dist/{status-XgSS3StV.mjs → status-CxP6w3aL.mjs} +3 -3
  203. package/dist/{subscription-CofRU47d.mjs → subscription-Dr-YHARg.mjs} +6 -6
  204. package/dist/{subscriptions-DCuuPF6U.mjs → subscriptions-8tM8TTeQ.mjs} +6 -6
  205. package/dist/{summary-uGlgKE3C.mjs → summary-DKx6ptQe.mjs} +5 -5
  206. package/dist/sync-schema-B8RY0Ra4.mjs +32 -0
  207. package/dist/{sync-schema-Cu9rD3eH.mjs → sync-schema-kNriXZjG.mjs} +6 -6
  208. package/dist/sync-task-CXFoqlpF.mjs +53 -0
  209. package/dist/table-CZnT6d9x.mjs +26 -0
  210. package/dist/{table-DfuY0N8e.mjs → table-Ci6bhZkb.mjs} +35 -12
  211. package/dist/table-CxvaDiIZ.mjs +155 -0
  212. package/dist/table-selector-flags-1bYkAKld.mjs +42 -0
  213. package/dist/text-DaNkPRwt.mjs +6 -0
  214. package/dist/timeline-CUzx6uXi.mjs +21 -0
  215. package/dist/{timeline-event-D-h0A_oh.mjs → timeline-event-DpNm4dkn.mjs} +6 -6
  216. package/dist/{transform-CtqB1WYo.mjs → transform-CNBIV7No.mjs} +1 -1
  217. package/dist/transform-g4-HHzDp.mjs +28 -0
  218. package/dist/transform-job-DqBtnTrG.mjs +22 -0
  219. package/dist/{transform-tag-BLp_p9J-.mjs → transform-tag-nTb0Ivpj.mjs} +5 -5
  220. package/dist/{transforms-n2IwEcbU.mjs → transforms-BSsAfwAg.mjs} +5 -5
  221. package/dist/tree-lMvw1jnZ.mjs +34 -0
  222. package/dist/{unpublish-DVQCAa3g.mjs → unpublish-CYFDd828.mjs} +3 -3
  223. package/dist/unreferenced-8Xdq76Kw.mjs +36 -0
  224. package/dist/{update-oQeQyqKO.mjs → update-6P_GYCLT.mjs} +5 -5
  225. package/dist/{update-DFdBeJwc.mjs → update-B28EJzrx.mjs} +13 -8
  226. package/dist/{update-DffrdV4b.mjs → update-BDunZa7G.mjs} +4 -4
  227. package/dist/{update-DKO9HF1f.mjs → update-BT2yNB_g.mjs} +6 -6
  228. package/dist/{update-rFRPLlb6.mjs → update-BnMUSFYZ.mjs} +4 -4
  229. package/dist/update-BwrYeKso.mjs +41 -0
  230. package/dist/{update-B7CikkI0.mjs → update-C7DEMiu-.mjs} +7 -7
  231. package/dist/{update-CAsqNhDC.mjs → update-CITzAFG8.mjs} +4 -4
  232. package/dist/update-CLl8tE20.mjs +181 -0
  233. package/dist/{update-C05J2nZ2.mjs → update-CM5uuhjB.mjs} +4 -4
  234. package/dist/{update-ChpOukqq.mjs → update-CQXcsvaa.mjs} +5 -5
  235. package/dist/{update-D4ggtuG4.mjs → update-Cs2zv_L2.mjs} +7 -7
  236. package/dist/{update-NGq0yXZk.mjs → update-D--Fw7-_.mjs} +5 -5
  237. package/dist/{update-D9H6Lh5U.mjs → update-D9p0N8ky.mjs} +4 -4
  238. package/dist/{update-CKDRuduL.mjs → update-DAzRx0of.mjs} +5 -5
  239. package/dist/{update-CnkPYL2i.mjs → update-D_DCOOAB.mjs} +6 -6
  240. package/dist/{update-DScUzKLI.mjs → update-_sYM1GuU.mjs} +7 -7
  241. package/dist/{update-dashcard-DvPqLJ3N.mjs → update-dashcard-VNnIqHDI.mjs} +6 -6
  242. package/dist/{upgrade-BRgw0fvn.mjs → upgrade-Tj_reACv.mjs} +4 -4
  243. package/dist/upload-BKxOpSz3.mjs +13 -0
  244. package/dist/{upload-Do2PBSeH.mjs → upload-C2fhpKkP.mjs} +2 -2
  245. package/dist/{upload-BrfbcbBW.mjs → upload-Dg91ldGg.mjs} +3 -3
  246. package/dist/{uuid-B4eij1d7.mjs → uuid-Blpv_e0S.mjs} +2 -2
  247. package/dist/{validate-xR_MHBNR.mjs → validate-D7e110oU.mjs} +1 -1
  248. package/dist/{validate-query-D6_ad-Gi.mjs → validate-query-C7LuKiUT.mjs} +2 -2
  249. package/dist/{values-xgOftPq5.mjs → values-PonkbYAK.mjs} +5 -5
  250. package/dist/verify-DixUBbd2.mjs +38 -0
  251. package/dist/verify-Dv7ER11c.mjs +38 -0
  252. package/dist/{verify-DTOA_wVM.mjs → verify-Mpb65a5v.mjs} +3 -3
  253. package/dist/verify-flags-CMpRkMPa.mjs +58 -0
  254. package/dist/{wait-BjeFgR13.mjs → wait-CaH6XHQV.mjs} +6 -6
  255. package/dist/{wait-flags-BCeCnaz3.mjs → wait-flags-rUU4NUrv.mjs} +2 -2
  256. package/dist/{window-DSb1tqSe.mjs → window-CI_QD04s.mjs} +1 -1
  257. package/package.json +1 -1
  258. package/skill-data/core/SKILL.md +18 -11
  259. package/skill-data/dashboard/SKILL.md +1 -1
  260. package/skill-data/document/SKILL.md +12 -1
  261. package/skill-data/git-sync/SKILL.md +61 -9
  262. package/skill-data/mbql/SKILL.md +5 -0
  263. package/skill-data/metadata/SKILL.md +36 -6
  264. package/dist/body-Cu94pH4P.mjs +0 -17
  265. package/dist/card-ByOzVxpI.mjs +0 -24
  266. package/dist/collection-BGbW7u_Q.mjs +0 -20
  267. package/dist/dashboard-Bzjz2v6u.mjs +0 -33
  268. package/dist/database-JtHTqSpq.mjs +0 -26
  269. package/dist/delete-runtime-BKEzJn22.mjs +0 -49
  270. package/dist/document-DqJ7Cysa.mjs +0 -19
  271. package/dist/export-DO2josC0.mjs +0 -63
  272. package/dist/field-CHZByaXa.mjs +0 -18
  273. package/dist/field-fDtIrY6D.mjs +0 -80
  274. package/dist/get-yHIEezeG.mjs +0 -31
  275. package/dist/git-sync-NhfLSZA6.mjs +0 -28
  276. package/dist/git-sync-TjX1r_wF.mjs +0 -136
  277. package/dist/list-DgteFn01.mjs +0 -34
  278. package/dist/parse-id-whJX4DAb.mjs +0 -10
  279. package/dist/query-BPtIy79s.mjs +0 -114
  280. package/dist/query-result-E4Q-Gra6.mjs +0 -15
  281. package/dist/search-DxiuY5EV.mjs +0 -97
  282. package/dist/selectors-rEFuyXPZ.mjs +0 -35
  283. package/dist/snippet-g9JTDxqu.mjs +0 -19
  284. package/dist/sync-task-BXeWuARG.mjs +0 -37
  285. package/dist/table-C6h4tIRw.mjs +0 -37
  286. package/dist/table-Di-EY7pg.mjs +0 -18
  287. package/dist/timeline-D7EsWZm6.mjs +0 -21
  288. package/dist/transform-8XK1LIgC.mjs +0 -28
  289. package/dist/transform-job-CTizQkWy.mjs +0 -22
  290. package/dist/tree-cqxiDh2b.mjs +0 -26
  291. package/dist/upload-VXBFKzLT.mjs +0 -13
@@ -1,9 +1,9 @@
1
- import { H as outputFlags, Q as ConfigError, U as profileFlag, p as renderSummary, z as connectionFlags } from "./cli.mjs";
2
- import { V as parseJson, it as parseOptionalInteger, t as defineMetabaseCommand } from "./runtime-nCPku2nN.mjs";
3
- import { t as parseId } from "./parse-id-whJX4DAb.mjs";
4
- import { a as CardQueryResult, u as ExportFormat } from "./card-voh1k4hl.mjs";
5
- import { t as cardQueryView } from "./card-CEkp1mcI.mjs";
6
- import { t as formatQueryResult } from "./query-result-E4Q-Gra6.mjs";
1
+ import { H as connectionFlags, J as profileFlag, p as renderSummary, q as outputFlags } from "./cli.mjs";
2
+ import { R as parseJson, nt as parseOptionalInteger, t as defineMetabaseCommand } from "./runtime-CZ5zh32z.mjs";
3
+ import { t as parseId } from "./parse-id-BW09NysN.mjs";
4
+ import { a as CardQueryResult } from "./card-Bv4ZN0oV.mjs";
5
+ import { t as cardQueryView } from "./card-DSrgU7lT.mjs";
6
+ import { i as formatQueryResult, n as exportFlags, r as readExportRequest, t as assertStreamedOutput } from "./export-flags-NiZ7C3Gm.mjs";
7
7
  import { t as pipeToStdout } from "./stream-McixcoUl.mjs";
8
8
  import { z } from "zod";
9
9
  //#region src/commands/card/query.ts
@@ -23,27 +23,14 @@ var query_default = defineMetabaseCommand({
23
23
  description: "Card id",
24
24
  required: true
25
25
  },
26
- "export-format": {
27
- type: "string",
28
- description: `Bypass JSON envelope and stream raw export: ${ExportFormat.options.join(" | ")}`
29
- },
26
+ ...exportFlags,
30
27
  parameters: {
31
28
  type: "string",
32
29
  description: "JSON array of Metabase parameter objects to pass with the query"
33
30
  },
34
31
  limit: {
35
32
  type: "string",
36
- description: "Cap rows kept in the JSON envelope (no effect on streamed exports)"
37
- },
38
- "format-rows": {
39
- type: "boolean",
40
- description: "Streamed exports only: apply visualization-settings formatting to values (default false)",
41
- default: false
42
- },
43
- "pivot-results": {
44
- type: "boolean",
45
- description: "Streamed exports only: emit the pivoted output for pivot questions (default false)",
46
- default: false
33
+ description: "Cap rows kept in the JSON envelope; refused with --export-format"
47
34
  }
48
35
  },
49
36
  outputSchema: CardQueryResult,
@@ -56,17 +43,16 @@ var query_default = defineMetabaseCommand({
56
43
  async run({ args, ctx, getClient }) {
57
44
  const id = parseId(args.id);
58
45
  const parameters = parseParameters(args.parameters);
59
- const client = await getClient();
60
- const exportFormatRaw = args["export-format"];
61
- if (exportFormatRaw !== void 0 && exportFormatRaw !== "") {
62
- await pipeToStdout(await client.card.exportQuery(id, parseExportFormat(exportFormatRaw), {
46
+ const exportRequest = readExportRequest(args);
47
+ if (exportRequest !== null) {
48
+ assertStreamedOutput(ctx);
49
+ await pipeToStdout(await (await getClient()).card.exportQuery(id, exportRequest.format, {
63
50
  parameters,
64
- format_rows: args["format-rows"],
65
- pivot_results: args["pivot-results"]
51
+ ...exportRequest.params
66
52
  }));
67
53
  return;
68
54
  }
69
- const limited = applyLimit(await client.card.query(id, { parameters }), parseOptionalInteger(args.limit, {
55
+ const limited = applyLimit(await (await getClient()).card.query(id, { parameters }), parseOptionalInteger(args.limit, {
70
56
  name: "--limit",
71
57
  min: 1
72
58
  }));
@@ -77,11 +63,6 @@ function parseParameters(raw) {
77
63
  if (raw === void 0 || raw === "") return [];
78
64
  return parseJson(raw, QueryParameters, { source: "--parameters" });
79
65
  }
80
- function parseExportFormat(raw) {
81
- const result = ExportFormat.safeParse(raw);
82
- if (!result.success) throw new ConfigError(`invalid --export-format: "${raw}" (expected: ${ExportFormat.options.join(", ")})`);
83
- return result.data;
84
- }
85
66
  function applyLimit(result, limit) {
86
67
  if (limit === null || result.data === void 0 || result.data.rows.length <= limit) return result;
87
68
  return {
@@ -0,0 +1,53 @@
1
+ import { H as connectionFlags, J as profileFlag, p as renderSummary, q as outputFlags, v as formatScalar } from "./cli.mjs";
2
+ import { t as defineMetabaseCommand } from "./runtime-CZ5zh32z.mjs";
3
+ import { t as parseId } from "./parse-id-BW09NysN.mjs";
4
+ import { n as parseText } from "./parse-text-T0lTXzTZ.mjs";
5
+ import { i as fieldRemappingMissView, r as fieldRemappingMatchView, t as FieldRemappingResult, u as toValueLabel } from "./field-wmN6raOG.mjs";
6
+ //#region src/commands/field/remapping.ts
7
+ var remapping_default = defineMetabaseCommand({
8
+ meta: {
9
+ name: "remapping",
10
+ description: "Look up another field's value on the row where a field equals a value"
11
+ },
12
+ details: "Answers `{ found: true, value, label }` with `label` the value of `<remapped-id>` on the one row where `<id>` equals `<value>`, or `{ found: false }` when no row does. A FK `<id>` is followed to the key it points at, and `<remapped-id>` must be on that key's table: the server answers a pair that is not, and any failure of the warehouse query, as `{ found: false }` rather than an error. When `<id>` is numeric the server reads the leading number of `<value>` and ignores any text after it (`20abc` looks up 20), failing only a value with no leading number; a value starting with `-` goes after `--` (`mb field remapping 100 101 -- -5`). In text mode the label prints bare so the result composes in a shell; an empty line means either no row matched or the matched label is empty, which `--json` tells apart.",
13
+ requires: ["field.remapping"],
14
+ args: {
15
+ ...outputFlags,
16
+ ...profileFlag,
17
+ ...connectionFlags,
18
+ id: {
19
+ type: "positional",
20
+ description: "Field id the value belongs to",
21
+ required: true
22
+ },
23
+ "remapped-id": {
24
+ type: "positional",
25
+ description: "Field id whose value on that row is answered",
26
+ required: true
27
+ },
28
+ value: {
29
+ type: "positional",
30
+ description: "Value of <id> to look up",
31
+ required: true
32
+ }
33
+ },
34
+ outputSchema: FieldRemappingResult,
35
+ examples: ["mb field remapping 100 101 20", "mb field remapping 100 101 20 --json"],
36
+ async run({ args, ctx, getClient }) {
37
+ const id = parseId(args.id);
38
+ const remappedId = parseId(args["remapped-id"], "remapped-id");
39
+ const value = parseText(args.value, "value");
40
+ const pair = await (await getClient()).field.remapping(id, remappedId, { value });
41
+ if (pair === null) {
42
+ renderSummary({ found: false }, fieldRemappingMissView, "", ctx);
43
+ return;
44
+ }
45
+ const match = {
46
+ found: true,
47
+ ...toValueLabel(pair)
48
+ };
49
+ renderSummary(match, fieldRemappingMatchView, formatScalar(match.label), ctx);
50
+ }
51
+ });
52
+ //#endregion
53
+ export { remapping_default as default };
@@ -1,8 +1,8 @@
1
- import { H as outputFlags, U as profileFlag, p as renderSummary, z as connectionFlags } from "./cli.mjs";
2
- import { t as defineMetabaseCommand } from "./runtime-nCPku2nN.mjs";
3
- import { t as parseId } from "./parse-id-whJX4DAb.mjs";
4
- import { c as SyncSettingsUpdateResult } from "./git-sync-BwBRmEhE.mjs";
5
- import { o as syncSettingsUpdateView } from "./git-sync-TjX1r_wF.mjs";
1
+ import { H as connectionFlags, J as profileFlag, p as renderSummary, q as outputFlags } from "./cli.mjs";
2
+ import { t as defineMetabaseCommand } from "./runtime-CZ5zh32z.mjs";
3
+ import { t as parseId } from "./parse-id-BW09NysN.mjs";
4
+ import { l as SyncSettingsUpdateResult } from "./git-sync-COokpYgc.mjs";
5
+ import { c as syncSettingsUpdateView } from "./git-sync-DspFahwV.mjs";
6
6
  //#region src/commands/git-sync/remove-collection.ts
7
7
  var remove_collection_default = defineMetabaseCommand({
8
8
  meta: {
@@ -1,5 +1,5 @@
1
- import { ct as KNOWN_RANGE } from "./cli.mjs";
2
- import { Q as Skew } from "./runtime-nCPku2nN.mjs";
1
+ import { gt as KNOWN_RANGE } from "./cli.mjs";
2
+ import { Y as Skew } from "./runtime-CZ5zh32z.mjs";
3
3
  //#region src/commands/auth/render.ts
4
4
  const SKEW_LABEL = Object.freeze({
5
5
  supported: "supported",
@@ -1,8 +1,8 @@
1
- import { H as outputFlags, U as profileFlag, p as renderSummary, z as connectionFlags } from "./cli.mjs";
2
- import { t as defineMetabaseCommand } from "./runtime-nCPku2nN.mjs";
3
- import { t as parseId } from "./parse-id-whJX4DAb.mjs";
1
+ import { H as connectionFlags, J as profileFlag, p as renderSummary, q as outputFlags } from "./cli.mjs";
2
+ import { t as defineMetabaseCommand } from "./runtime-CZ5zh32z.mjs";
3
+ import { t as parseId } from "./parse-id-BW09NysN.mjs";
4
4
  import { n as UploadUpdateResult } from "./upload-DAtxBBms.mjs";
5
- import { n as requireUploadFilePath, t as readCsvFile } from "./upload-Do2PBSeH.mjs";
5
+ import { n as requireUploadFilePath, t as readCsvFile } from "./upload-C2fhpKkP.mjs";
6
6
  import { n as uploadUpdateResultView } from "./upload-C3z5ZaXA.mjs";
7
7
  //#region src/commands/upload/replace.ts
8
8
  var replace_default = defineMetabaseCommand({
@@ -1,8 +1,8 @@
1
- import { H as outputFlags, U as profileFlag, p as renderSummary, z as connectionFlags } from "./cli.mjs";
2
- import { t as defineMetabaseCommand } from "./runtime-nCPku2nN.mjs";
3
- import { t as parseId } from "./parse-id-whJX4DAb.mjs";
4
- import { a as DatabaseSyncResult } from "./database-JtHTqSpq.mjs";
5
- import { t as databaseSyncResultView } from "./database-C3E9PZSx.mjs";
1
+ import { H as connectionFlags, J as profileFlag, p as renderSummary, q as outputFlags } from "./cli.mjs";
2
+ import { t as defineMetabaseCommand } from "./runtime-CZ5zh32z.mjs";
3
+ import { t as parseId } from "./parse-id-BW09NysN.mjs";
4
+ import { a as DatabaseSyncResult } from "./database-D-CRyRIv.mjs";
5
+ import { t as databaseSyncResultView } from "./database-MlUPpitM.mjs";
6
6
  //#region src/commands/db/rescan-values.ts
7
7
  var rescan_values_default = defineMetabaseCommand({
8
8
  meta: {
@@ -0,0 +1,32 @@
1
+ import { H as connectionFlags, J as profileFlag, p as renderSummary, q as outputFlags } from "./cli.mjs";
2
+ import { t as defineMetabaseCommand } from "./runtime-CZ5zh32z.mjs";
3
+ import { t as parseId } from "./parse-id-BW09NysN.mjs";
4
+ import { l as TableFieldValuesResult } from "./table-Ci6bhZkb.mjs";
5
+ import { i as tableFieldValuesResultView } from "./table-CxvaDiIZ.mjs";
6
+ //#region src/commands/table/rescan-values.ts
7
+ var rescan_values_default = defineMetabaseCommand({
8
+ meta: {
9
+ name: "rescan-values",
10
+ description: "Trigger a rescan of cached field values for one table"
11
+ },
12
+ details: "Queues an async rescan of the distinct values behind this table's filter dropdowns and returns immediately with the server's `success` acknowledgement. Only the sets already cached and read in the last 14 days are refreshed; a set never read, discarded, or unread for longer is skipped until a read rebuilds or revives it. To rescan a set of tables use `mb table bulk-rescan-values`.",
13
+ requires: ["table.rescanValues"],
14
+ args: {
15
+ ...outputFlags,
16
+ ...profileFlag,
17
+ ...connectionFlags,
18
+ id: {
19
+ type: "positional",
20
+ description: "Table id",
21
+ required: true
22
+ }
23
+ },
24
+ outputSchema: TableFieldValuesResult,
25
+ examples: ["mb table rescan-values 42", "mb table rescan-values 42 --json"],
26
+ async run({ args, ctx, getClient }) {
27
+ const id = parseId(args.id);
28
+ renderSummary(await (await getClient()).table.rescanValues(id), tableFieldValuesResultView, `Field-values rescan queued for table ${id}.`, ctx);
29
+ }
30
+ });
31
+ //#endregion
32
+ export { rescan_values_default as default };
@@ -1,6 +1,6 @@
1
- import { H as outputFlags, U as profileFlag, p as renderSummary, z as connectionFlags } from "./cli.mjs";
2
- import { t as defineMetabaseCommand } from "./runtime-nCPku2nN.mjs";
3
- import { t as parseId } from "./parse-id-whJX4DAb.mjs";
1
+ import { H as connectionFlags, J as profileFlag, p as renderSummary, q as outputFlags } from "./cli.mjs";
2
+ import { t as defineMetabaseCommand } from "./runtime-CZ5zh32z.mjs";
3
+ import { t as parseId } from "./parse-id-BW09NysN.mjs";
4
4
  import { a as TransformJobRunResult } from "./transform-job-CCguL6LP.mjs";
5
5
  //#region src/commands/transform-job/run.ts
6
6
  const transformJobRunResultView = {
@@ -1,8 +1,8 @@
1
- import { H as outputFlags, U as profileFlag, p as renderSummary, z as connectionFlags } from "./cli.mjs";
2
- import { t as defineMetabaseCommand } from "./runtime-nCPku2nN.mjs";
3
- import { t as parseId } from "./parse-id-whJX4DAb.mjs";
1
+ import { H as connectionFlags, J as profileFlag, p as renderSummary, q as outputFlags } from "./cli.mjs";
2
+ import { t as defineMetabaseCommand } from "./runtime-CZ5zh32z.mjs";
3
+ import { t as parseId } from "./parse-id-BW09NysN.mjs";
4
4
  import { c as TransformRunResult, p as isTransformRunFailed } from "./transform-DiW7bREn.mjs";
5
- import { i as waitFlags, n as parseWaitFlags } from "./wait-flags-BCeCnaz3.mjs";
5
+ import { i as waitFlags, n as parseWaitFlags } from "./wait-flags-rUU4NUrv.mjs";
6
6
  //#region src/commands/transform/run.ts
7
7
  const transformRunResultView = {
8
8
  compactPick: TransformRunResult,
@@ -1,9 +1,9 @@
1
- import { B as listFlags, G as listEnvelopeSchema, H as outputFlags, U as profileFlag, d as renderList, z as connectionFlags } from "./cli.mjs";
2
- import { t as defineMetabaseCommand } from "./runtime-nCPku2nN.mjs";
3
- import { t as parseId } from "./parse-id-whJX4DAb.mjs";
4
- import { t as collectForOutput } from "./window-DSb1tqSe.mjs";
1
+ import { G as listFlags, H as connectionFlags, J as profileFlag, X as listEnvelopeSchema, d as renderList, q as outputFlags } from "./cli.mjs";
2
+ import { t as defineMetabaseCommand } from "./runtime-CZ5zh32z.mjs";
3
+ import { t as parseId } from "./parse-id-BW09NysN.mjs";
4
+ import { t as collectForOutput } from "./window-CI_QD04s.mjs";
5
5
  import { s as TransformRunCompact } from "./transform-DiW7bREn.mjs";
6
- import { t as transformRunView } from "./transform-CtqB1WYo.mjs";
6
+ import { t as transformRunView } from "./transform-CNBIV7No.mjs";
7
7
  //#region src/commands/transform/runs.ts
8
8
  const TransformRunListEnvelope = listEnvelopeSchema(TransformRunCompact);
9
9
  var runs_default = defineMetabaseCommand({
@@ -1,4 +1,4 @@
1
- import { D as ENV_API_KEY, E as warn, F as ProfileRefreshedError, I as setMetabaseAugment, J as normalizeFlag, M as ENV_URL, N as consumeLegacyEnvWarnings, O as ENV_DISABLE_KEYRING, P as readEnv, Q as ConfigError, R as version, Y as toAliasArray, Z as ChainedRequestError, a as Features, at as ValidationError, b as isPlainObject, c as ruleGap, ct as KNOWN_RANGE, et as MetabaseError, i as FEATURE_RULES, j as ENV_SKIP_PREFLIGHT, l as reportError, n as methodRequirements, nt as ResponseShapeError, o as evaluateFeatures, ot as errorMessage, q as flagConsumesValue, r as FEATURE_NAMES, rt as TimeoutError, st as isFileNotFoundError, t as interruptSignal, tt as NetworkError } from "./cli.mjs";
1
+ import { $ as givenFlagKeys, A as ENV_API_KEY, C as isPlainObject, F as ENV_URL, I as consumeLegacyEnvWarnings, L as readEnv, P as ENV_SKIP_PREFLIGHT, Q as assertArgv, R as ProfileRefreshedError, V as version, a as Features, at as ConfigError, c as ruleGap, ct as NetworkError, et as parseCsv, ft as ValidationError, gt as KNOWN_RANGE, ht as isFileNotFoundError, i as FEATURE_RULES, it as ChainedRequestError, j as ENV_DISABLE_KEYRING, k as warn, l as reportError, lt as ResponseShapeError, n as methodRequirements, o as evaluateFeatures, pt as errorMessage, r as FEATURE_NAMES, st as MetabaseError, t as interruptSignal, ut as TimeoutError, z as setMetabaseAugment } from "./cli.mjs";
2
2
  import { defineCommand } from "citty";
3
3
  import { z } from "zod";
4
4
  import { Entry } from "@napi-rs/keyring";
@@ -9,7 +9,10 @@ import { homedir } from "node:os";
9
9
  const INTEGER_PATTERN = /^-?\d+$/;
10
10
  function parseInteger(value, options) {
11
11
  const trimmed = value.trim();
12
- if (!INTEGER_PATTERN.test(trimmed)) throw new ConfigError(`invalid ${options.name}: "${value}" (expected integer)`);
12
+ if (!INTEGER_PATTERN.test(trimmed)) {
13
+ const expected = options.expected ?? "integer";
14
+ throw new ConfigError(`invalid ${options.name}: "${value}" (expected ${expected})`);
15
+ }
13
16
  const parsed = Number.parseInt(trimmed, 10);
14
17
  if (parsed < options.min) throw new ConfigError(`invalid ${options.name}: ${parsed} (must be ≥ ${options.min})`);
15
18
  return parsed;
@@ -1462,34 +1465,6 @@ function resolveFormat({ json, format, isTty }) {
1462
1465
  return isTty ? "text" : "json";
1463
1466
  }
1464
1467
  //#endregion
1465
- //#region src/runtime/csv.ts
1466
- function parseCsv(raw) {
1467
- return raw.split(",").map((part) => part.trim()).filter((part) => part.length > 0);
1468
- }
1469
- function parseEnumCsv(raw, schema, flagName) {
1470
- if (raw === void 0 || raw === "") return;
1471
- const parts = parseCsv(raw);
1472
- if (parts.length === 0) return;
1473
- const accepted = [];
1474
- const rejected = [];
1475
- for (const part of parts) {
1476
- const result = schema.safeParse(part);
1477
- if (result.success) accepted.push(result.data);
1478
- else rejected.push(part);
1479
- }
1480
- if (rejected.length > 0) {
1481
- const allowed = Object.values(schema.enum).join(", ");
1482
- throw new ConfigError(`invalid ${flagName} value: ${rejected.join(", ")} (expected one of: ${allowed})`);
1483
- }
1484
- return accepted;
1485
- }
1486
- function parseEnum(raw, schema, flagName) {
1487
- if (raw === void 0 || raw === "") return;
1488
- const result = schema.safeParse(raw);
1489
- if (!result.success) throw new ConfigError(`invalid ${flagName} value: "${raw}" (expected one of: ${Object.values(schema.enum).join(", ")})`);
1490
- return result.data;
1491
- }
1492
- //#endregion
1493
1468
  //#region src/commands/context.ts
1494
1469
  function resolveOutputFormat(args, options = {}) {
1495
1470
  return resolveFormat({
@@ -1507,6 +1482,7 @@ function resolveCommonFlags(args, options = {}) {
1507
1482
  full,
1508
1483
  fields,
1509
1484
  maxBytes: parseMaxBytes(args.maxBytes),
1485
+ maxBytesGiven: args.maxBytes !== void 0,
1510
1486
  range: parseRange(args.limit, args.offset),
1511
1487
  url: args.url,
1512
1488
  apiKey: args.apiKey,
@@ -1539,51 +1515,6 @@ function parseRange(limit, offset) {
1539
1515
  };
1540
1516
  }
1541
1517
  //#endregion
1542
- //#region src/commands/known-flags.ts
1543
- const ARGUMENT_SEPARATOR = "--";
1544
- const NEGATION_PREFIX = "no-";
1545
- const BUILTIN_FLAGS = [
1546
- "help",
1547
- "h",
1548
- "version",
1549
- "v"
1550
- ];
1551
- function assertKnownFlags(rawArgs, argsDef) {
1552
- const allowed = allowedFlagKeys(argsDef);
1553
- let index = 0;
1554
- while (index < rawArgs.length) {
1555
- const token = rawArgs[index];
1556
- if (token === void 0 || token === ARGUMENT_SEPARATOR) return;
1557
- if (!isFlagToken(token)) {
1558
- index += 1;
1559
- continue;
1560
- }
1561
- if (!flagCandidates(token).some((candidate) => allowed.has(candidate))) throw new ConfigError(`unknown flag: ${displayFlag(token)}`);
1562
- index += flagConsumesValue(token, argsDef) ? 2 : 1;
1563
- }
1564
- }
1565
- function allowedFlagKeys(argsDef) {
1566
- const keys = new Set(BUILTIN_FLAGS.map(normalizeFlag));
1567
- for (const [name, def] of Object.entries(argsDef)) {
1568
- keys.add(normalizeFlag(name));
1569
- if ("alias" in def) for (const alias of toAliasArray(def.alias)) keys.add(normalizeFlag(alias));
1570
- }
1571
- return keys;
1572
- }
1573
- function isFlagToken(token) {
1574
- return token.startsWith("-") && token !== "-";
1575
- }
1576
- function displayFlag(token) {
1577
- const equals = token.indexOf("=");
1578
- return equals === -1 ? token : token.slice(0, equals);
1579
- }
1580
- function flagCandidates(token) {
1581
- const name = displayFlag(token).replace(/^-+/, "");
1582
- const candidates = [normalizeFlag(name)];
1583
- if (name.startsWith(NEGATION_PREFIX)) candidates.push(normalizeFlag(name.slice(3)));
1584
- return candidates;
1585
- }
1586
- //#endregion
1587
1518
  //#region src/commands/runtime.ts
1588
1519
  function defineMetabaseCommand(def) {
1589
1520
  const requirements = def.requires === null ? null : deriveRequirements(def.requires);
@@ -1591,12 +1522,12 @@ function defineMetabaseCommand(def) {
1591
1522
  meta: def.meta,
1592
1523
  args: def.args,
1593
1524
  async run({ args, rawArgs }) {
1594
- const commonArgs = pickCommonArgs(args);
1525
+ const commonArgs = pickCommonArgs(args, givenFlagKeys(rawArgs, def.args));
1595
1526
  let reportFormat;
1596
1527
  try {
1597
- reportFormat = resolveOutputFormat(commonArgs);
1528
+ reportFormat = resolveReportFormat(commonArgs, rawArgs, def.args);
1529
+ assertArgv(rawArgs, def.args);
1598
1530
  const ctx = resolveCommonFlags(commonArgs);
1599
- assertKnownFlags(rawArgs, def.args);
1600
1531
  let cachedConfig = null;
1601
1532
  let cachedClient = null;
1602
1533
  const getResolvedConfig = async () => {
@@ -1611,7 +1542,7 @@ function defineMetabaseCommand(def) {
1611
1542
  const resolved = await getResolvedConfig();
1612
1543
  const probe = await readCachedProbe(resolved.profile, resolved.url);
1613
1544
  const server = probe === null ? null : createServerProfile(probe);
1614
- const { createClient } = await import("./client-BnK0evYf.mjs").then((n) => n.t);
1545
+ const { createClient } = await import("./client-ToLiPu9q.mjs").then((n) => n.t);
1615
1546
  cachedClient = createClient({
1616
1547
  url: resolved.url,
1617
1548
  credential: resolved.credential
@@ -1723,13 +1654,21 @@ async function refreshChangedProbe(cached) {
1723
1654
  });
1724
1655
  return note;
1725
1656
  }
1726
- function pickCommonArgs(args) {
1657
+ function resolveReportFormat(commonArgs, rawArgs, argsDef) {
1658
+ try {
1659
+ return resolveOutputFormat(commonArgs);
1660
+ } catch (error) {
1661
+ assertArgv(rawArgs, argsDef);
1662
+ throw error;
1663
+ }
1664
+ }
1665
+ function pickCommonArgs(args, given) {
1727
1666
  const out = {};
1728
1667
  if (typeof args["format"] === "string") out.format = args["format"];
1729
1668
  if (typeof args["json"] === "boolean") out.json = args["json"];
1730
1669
  if (typeof args["full"] === "boolean") out.full = args["full"];
1731
1670
  if (typeof args["fields"] === "string") out.fields = args["fields"];
1732
- if (typeof args["maxBytes"] === "string") out.maxBytes = args["maxBytes"];
1671
+ if (typeof args["maxBytes"] === "string" && given.has("maxBytes")) out.maxBytes = args["maxBytes"];
1733
1672
  if (typeof args["limit"] === "string") out.limit = args["limit"];
1734
1673
  if (typeof args["offset"] === "string") out.offset = args["offset"];
1735
1674
  if (typeof args["profile"] === "string") out.profile = args["profile"];
@@ -1746,4 +1685,4 @@ function buildConfigFlags(ctx) {
1746
1685
  return flags;
1747
1686
  }
1748
1687
  //#endregion
1749
- export { createServerProfile as $, OAUTH_SCOPE as A, JSON_CONTENT_TYPE as B, ProbedUser as C, OAUTH_CLIENT_NAME as D, profileAuthMethod as E, buildNetworkError as F, credentialSecrets as G, parseJsonOrPlain as H, isConnectionClosed as I, normalizeUrl as J, oauthCredentialFromTokens as K, HttpError as L, exchangeCode as M, registerClient as N, USER_AGENT as O, tryDiscoverMetadata as P, Skew as Q, chainRequestFailure as R, writeProfile as S, ProfileLastFailure as T, assertCredentialHeaderSafe as U, parseJson as V, credentialAuthHeader as W, summarizeServer as X, ServerSummary as Y, checkFeatures as Z, readProfileRecord as _, readCachedServerProfile as a, writeProbeFailure as b, readEnvCredentials as c, clearProfile as d, probeServer as et, consumeKeychainResidualWarning as f, readProfileCredential as g, listProfileRecords as h, parseEnumCsv as i, parseOptionalInteger as it, discoverLoginMetadata as j, revokeOAuthCredential as k, resolveProfileName as l, keyringFallbackWarning as m, parseCsv as n, RequirementFailure as nt, createCredentialRefresher as o, consumeKeyringDowngradeWarning as p, displayUrl as q, parseEnum as r, parseInteger as rt, explicitProfileName as s, defineMetabaseCommand as t, CapabilityError as tt, DEFAULT_PROFILE as u, resolveRecordCredential as v, ProfileAuthMethod as w, writeProbeResult as x, writeOAuthProfile as y, isRetryableStatus as z };
1688
+ export { CapabilityError as $, registerClient as A, assertCredentialHeaderSafe as B, profileAuthMethod as C, OAUTH_SCOPE as D, revokeOAuthCredential as E, chainRequestFailure as F, normalizeUrl as G, credentialSecrets as H, isRetryableStatus as I, checkFeatures as J, ServerSummary as K, JSON_CONTENT_TYPE as L, buildNetworkError as M, isConnectionClosed as N, discoverLoginMetadata as O, HttpError as P, probeServer as Q, parseJson as R, ProfileLastFailure as S, USER_AGENT as T, oauthCredentialFromTokens as U, credentialAuthHeader as V, displayUrl as W, createServerProfile as X, Skew as Y, PROBE_PATH as Z, writeProbeFailure as _, readEnvCredentials as a, ProbedUser as b, clearProfile as c, keyringFallbackWarning as d, RequirementFailure as et, listProfileRecords as f, writeOAuthProfile as g, resolveRecordCredential as h, explicitProfileName as i, tryDiscoverMetadata as j, exchangeCode as k, consumeKeychainResidualWarning as l, readProfileRecord as m, readCachedServerProfile as n, parseOptionalInteger as nt, resolveProfileName as o, readProfileCredential as p, summarizeServer as q, createCredentialRefresher as r, DEFAULT_PROFILE as s, defineMetabaseCommand as t, parseInteger as tt, consumeKeyringDowngradeWarning as u, writeProbeResult as v, OAUTH_CLIENT_NAME as w, ProfileAuthMethod as x, writeProfile as y, parseJsonOrPlain as z };
@@ -1,9 +1,9 @@
1
- import { B as listFlags, G as listEnvelopeSchema, H as outputFlags, U as profileFlag, d as renderList, z as connectionFlags } from "./cli.mjs";
2
- import { t as defineMetabaseCommand } from "./runtime-nCPku2nN.mjs";
3
- import { t as parseId } from "./parse-id-whJX4DAb.mjs";
4
- import { n as windowList } from "./window-DSb1tqSe.mjs";
5
- import { n as TableCompact } from "./table-DfuY0N8e.mjs";
6
- import { t as tableView } from "./table-C6h4tIRw.mjs";
1
+ import { G as listFlags, H as connectionFlags, J as profileFlag, X as listEnvelopeSchema, d as renderList, q as outputFlags } from "./cli.mjs";
2
+ import { t as defineMetabaseCommand } from "./runtime-CZ5zh32z.mjs";
3
+ import { t as parseId } from "./parse-id-BW09NysN.mjs";
4
+ import { n as windowList } from "./window-CI_QD04s.mjs";
5
+ import { a as TableCompact } from "./table-Ci6bhZkb.mjs";
6
+ import { u as tableView } from "./table-CxvaDiIZ.mjs";
7
7
  //#region src/commands/db/schema-tables.ts
8
8
  const DatabaseSchemaTablesEnvelope = listEnvelopeSchema(TableCompact);
9
9
  var schema_tables_default = defineMetabaseCommand({
@@ -1,7 +1,7 @@
1
- import { B as listFlags, G as listEnvelopeSchema, H as outputFlags, U as profileFlag, d as renderList, z as connectionFlags } from "./cli.mjs";
2
- import { t as defineMetabaseCommand } from "./runtime-nCPku2nN.mjs";
3
- import { t as parseId } from "./parse-id-whJX4DAb.mjs";
4
- import { n as windowList } from "./window-DSb1tqSe.mjs";
1
+ import { G as listFlags, H as connectionFlags, J as profileFlag, X as listEnvelopeSchema, d as renderList, q as outputFlags } from "./cli.mjs";
2
+ import { t as defineMetabaseCommand } from "./runtime-CZ5zh32z.mjs";
3
+ import { t as parseId } from "./parse-id-BW09NysN.mjs";
4
+ import { n as windowList } from "./window-CI_QD04s.mjs";
5
5
  import { z } from "zod";
6
6
  //#region src/commands/db/schemas.ts
7
7
  const SchemaName = z.object({ name: z.string() });
@@ -0,0 +1,131 @@
1
+ import { H as connectionFlags, J as profileFlag, K as listFlagsWithDefaultLimit, W as listFlag, X as listEnvelopeSchema, at as ConfigError, d as renderList, nt as parseEnumCsv, q as outputFlags } from "./cli.mjs";
2
+ import { t as defineMetabaseCommand } from "./runtime-CZ5zh32z.mjs";
3
+ import { n as parseIdCsv, t as parseId } from "./parse-id-BW09NysN.mjs";
4
+ import { r as windowServerPage } from "./window-CI_QD04s.mjs";
5
+ import { i as SearchResultCompact, n as SearchModel, t as SEARCH_MODELS } from "./search-BAXg-EJw.mjs";
6
+ import { t as parseOptionalText } from "./parse-text-T0lTXzTZ.mjs";
7
+ //#region src/output/views/search.ts
8
+ const searchResultView = {
9
+ compactPick: SearchResultCompact,
10
+ tableColumns: [
11
+ {
12
+ key: "id",
13
+ label: "ID"
14
+ },
15
+ {
16
+ key: "model",
17
+ label: "Model"
18
+ },
19
+ {
20
+ key: "name",
21
+ label: "Name"
22
+ }
23
+ ]
24
+ };
25
+ //#endregion
26
+ //#region src/commands/search.ts
27
+ const DEFAULT_LIMIT = 20;
28
+ const SEARCH_MODELS_DESCRIPTION = `Comma-separated model filter: ${SEARCH_MODELS.join(",")}`;
29
+ const RESULT_METADATA = "result_metadata";
30
+ const SearchListEnvelope = listEnvelopeSchema(SearchResultCompact);
31
+ var search_default = defineMetabaseCommand({
32
+ meta: {
33
+ name: "search",
34
+ description: "Search Metabase content (cards, dashboards, collections, …)"
35
+ },
36
+ details: "Ranks content against a query string. To simply enumerate a resource, prefer its `… list` verb.",
37
+ skills: [{
38
+ skill: "core",
39
+ purpose: "search vs. list"
40
+ }],
41
+ requires: ["search.query"],
42
+ args: {
43
+ ...outputFlags,
44
+ ...listFlagsWithDefaultLimit(DEFAULT_LIMIT),
45
+ ...profileFlag,
46
+ ...connectionFlags,
47
+ query: {
48
+ type: "positional",
49
+ description: "Search query string",
50
+ required: false
51
+ },
52
+ models: listFlag({
53
+ type: "string",
54
+ description: SEARCH_MODELS_DESCRIPTION,
55
+ alias: "m"
56
+ }),
57
+ archived: {
58
+ type: "boolean",
59
+ description: "Search only archived items (instead of only active ones)",
60
+ default: false
61
+ },
62
+ "db-id": {
63
+ type: "string",
64
+ description: "Restrict to items on a given database id"
65
+ },
66
+ verified: {
67
+ type: "boolean",
68
+ description: "Only verified content"
69
+ },
70
+ collection: {
71
+ type: "string",
72
+ description: "Restrict to one collection by id: its own row, subcollections and the content filed under them, never segments, measures or transforms (dashboard questions need --include-dashboard-questions)"
73
+ },
74
+ "created-by": listFlag({
75
+ type: "string",
76
+ description: "Comma-separated user ids; matches items created by any of them (drops models with no creator)"
77
+ }),
78
+ "search-native-query": {
79
+ type: "boolean",
80
+ description: "Also match native query text; narrows to cards, models, metrics, actions and transforms"
81
+ },
82
+ "include-metadata": {
83
+ type: "boolean",
84
+ description: "Attach result_metadata to card, model and metric rows (needs --json --full, or --fields naming result_metadata)"
85
+ },
86
+ "include-dashboard-questions": {
87
+ type: "boolean",
88
+ description: "Also match questions saved into a dashboard (excluded by default)"
89
+ }
90
+ },
91
+ outputSchema: SearchListEnvelope,
92
+ examples: [
93
+ "mb search orders",
94
+ "mb search --models card,dashboard --limit 10 --json",
95
+ "mb search products --archived",
96
+ "mb search --collection 12 --created-by 3,7 --include-dashboard-questions --json",
97
+ "mb search revenue --search-native-query --include-metadata --full --json"
98
+ ],
99
+ async run({ args, ctx, getClient }) {
100
+ const tableDbIdRaw = args["db-id"];
101
+ const tableDbId = tableDbIdRaw === void 0 ? void 0 : parseId(tableDbIdRaw, "--db-id");
102
+ const models = parseEnumCsv(args.models, SearchModel, "--models");
103
+ const collection = args.collection === void 0 ? void 0 : parseId(args.collection, "--collection");
104
+ const createdByRaw = args["created-by"];
105
+ const createdBy = createdByRaw === void 0 ? void 0 : parseIdCsv(createdByRaw, "--created-by");
106
+ const includeMetadata = args["include-metadata"] === true;
107
+ if (includeMetadata && !printsResultMetadata(ctx)) throw new ConfigError("--include-metadata needs --json --full, or --fields naming result_metadata: every other output drops it");
108
+ const q = parseOptionalText(args.query, "query");
109
+ const { data, total } = await (await getClient()).search.query({
110
+ q,
111
+ models,
112
+ archived: args.archived ? true : void 0,
113
+ limit: ctx.range.limit,
114
+ offset: ctx.range.offset,
115
+ table_db_id: tableDbId,
116
+ verified: args.verified ? true : void 0,
117
+ collection,
118
+ created_by: createdBy,
119
+ search_native_query: args["search-native-query"] ? true : void 0,
120
+ include_metadata: includeMetadata ? true : void 0,
121
+ include_dashboard_questions: args["include-dashboard-questions"] ? true : void 0
122
+ });
123
+ renderList(windowServerPage(data, total, ctx.range), searchResultView, ctx);
124
+ }
125
+ });
126
+ function printsResultMetadata(ctx) {
127
+ if (ctx.fields !== void 0) return ctx.fields.some((path) => path === RESULT_METADATA || path.startsWith(`${RESULT_METADATA}.`));
128
+ return ctx.full && ctx.format === "json";
129
+ }
130
+ //#endregion
131
+ export { search_default as default };