@metabase/cli 0.3.2-alpha.fix-transform-test-ee-path.8ac2a7a → 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.
- package/dist/{add-collection-B_-eMU_k.mjs → add-collection-CC6KSwjX.mjs} +5 -5
- package/dist/{alert-Dalin_DD.mjs → alert-Dt6La9tK.mjs} +7 -7
- package/dist/{alerts-DpBgrjPI.mjs → alerts-ClKnJqgB.mjs} +6 -6
- package/dist/{append-C1JNVALm.mjs → append-pnaQWP_A.mjs} +4 -4
- package/dist/{archive-B51prFgS.mjs → archive-By1pLYtO.mjs} +3 -3
- package/dist/{archive-CwITzj_j.mjs → archive-CLu2TGW5.mjs} +5 -5
- package/dist/{archive-52ZHbFDm2.mjs → archive-COP9joWU.mjs} +4 -4
- package/dist/{archive-cAdUa1-2.mjs → archive-CSnBFcQ_.mjs} +3 -3
- package/dist/{archive-DA3OiLEE.mjs → archive-Ct1eyolN.mjs} +3 -3
- package/dist/{archive-CdKf_Eqq.mjs → archive-D7nAQcCz.mjs} +3 -3
- package/dist/{archive-CISXgZAI.mjs → archive-DEDA48w3.mjs} +5 -5
- package/dist/{archive-DVHxeDKS.mjs → archive-DJAsSzCz.mjs} +5 -5
- package/dist/{archive-BkITQyWW.mjs → archive-DtabbPUk.mjs} +4 -4
- package/dist/{archive-DckxlWBt.mjs → archive-YNpa8daf.mjs} +3 -3
- package/dist/{archive-CicPYX27.mjs → archive-ewitrKdx.mjs} +5 -5
- package/dist/{auth-A96JOCQx.mjs → auth-DdLhXCn-.mjs} +5 -5
- package/dist/body-Dd-TwYYL.mjs +17 -0
- package/dist/branch-flag-pFQPNYKr.mjs +9 -0
- package/dist/{branches-CbcwWYL9.mjs → branches-ZvGNhed6.mjs} +3 -3
- package/dist/breaking-BLswgvkA.mjs +36 -0
- package/dist/broken-BN0nL2hf.mjs +37 -0
- package/dist/bulk-discard-values-DFJUjSnE.mjs +49 -0
- package/dist/bulk-edit-Brqr67bu.mjs +53 -0
- package/dist/bulk-rescan-values-DndXXi2N.mjs +28 -0
- package/dist/bulk-sync-schema-mO-t2QlL.mjs +28 -0
- package/dist/{cancel-DpDcVY7M.mjs → cancel-DP03dXBf.mjs} +3 -3
- package/dist/{cancel-task-B4RDvIYb.mjs → cancel-task-CELBfBPP.mjs} +4 -4
- package/dist/{card-voh1k4hl.mjs → card-Bv4ZN0oV.mjs} +5 -3
- package/dist/card-CFd-GUEM.mjs +25 -0
- package/dist/{card-CEkp1mcI.mjs → card-DSrgU7lT.mjs} +1 -1
- package/dist/{cards-BC0JX8Yg.mjs → cards-Cn2ywFTJ.mjs} +6 -6
- package/dist/cli.mjs +410 -111
- package/dist/{client-ClL6gf7G.mjs → client-ToLiPu9q.mjs} +785 -316
- package/dist/{collection-DYM0p3Xl.mjs → collection-BG3Ksea-.mjs} +1 -1
- package/dist/collection-BKNShKcY.mjs +21 -0
- package/dist/{collection-BxdPxD38.mjs → collection-D3KXhvnc.mjs} +7 -5
- package/dist/{collection-namespace-Dv0l-V9K.mjs → collection-namespace-CWW6hZxK.mjs} +2 -2
- package/dist/{content-translation-BXIXL4eW.mjs → content-translation-C19SqZWp.mjs} +3 -3
- package/dist/copy-BGK8Wz6d.mjs +55 -0
- package/dist/copy-COLUuiuF.mjs +36 -0
- package/dist/copy-flags-eU8aa0zj.mjs +32 -0
- package/dist/{create-BbjSOTN-.mjs → create-B2tuInV9.mjs} +4 -4
- package/dist/{create-Za1EskpV.mjs → create-B3TKri1E.mjs} +4 -4
- package/dist/{create--fiwuTWc.mjs → create-B4gXKDRr.mjs} +3 -3
- package/dist/create-B63JphYe.mjs +34 -0
- package/dist/{create-NCKHHdov.mjs → create-BH6kLjHS.mjs} +4 -4
- package/dist/{create-Dhai9zAt.mjs → create-BwifyhyL.mjs} +3 -3
- package/dist/{create-DWFJdyIr.mjs → create-Colz5bOO.mjs} +3 -3
- package/dist/{create-BcsVwXgS2.mjs → create-CulUZgN1.mjs} +4 -4
- package/dist/{create-D--Z1S3p2.mjs → create-Cxuqr3kT.mjs} +6 -6
- package/dist/{create-Bryrkb9g.mjs → create-CzW_UTE7.mjs} +6 -6
- package/dist/{create-kZIIEN2Y.mjs → create-DNR8RMvV.mjs} +6 -6
- package/dist/{create-DmN2gFc4.mjs → create-DSHeoV7e.mjs} +4 -4
- package/dist/{create-BVNhtAgF.mjs → create-DWbW2WSc.mjs} +6 -6
- package/dist/{create-CHr8MPPq.mjs → create-Dx8nfjGs.mjs} +3 -3
- package/dist/{create-B9qXQ_wV.mjs → create-XGomrTz5.mjs} +5 -5
- package/dist/{create-branch-CseVn3lp.mjs → create-branch-DxL7KUZp.mjs} +4 -4
- package/dist/{create-YetX69Re.mjs → create-g1f2yJ4s.mjs} +3 -3
- package/dist/{csv-DNzesu8y.mjs → csv-C6TEfLMi.mjs} +4 -4
- package/dist/{current-task-DRTKZcP9.mjs → current-task-CHs0zNFM.mjs} +4 -4
- package/dist/dashboard-AWrXqQ7a.mjs +35 -0
- package/dist/{dashboard-D0hwTC-f.mjs → dashboard-Phz3XpRM.mjs} +2 -1
- package/dist/{dashboard-DgK81azj.mjs → dashboard-XSTr9QCr.mjs} +6 -2
- package/dist/database-D-CRyRIv.mjs +45 -0
- package/dist/{database-C3E9PZSx.mjs → database-MlUPpitM.mjs} +1 -1
- package/dist/dataset-p5oNPQgL.mjs +66 -0
- package/dist/{db-BDijt81U.mjs → db-BFSeETMO.mjs} +7 -7
- package/dist/{delete-Dc8E5YwZ.mjs → delete-BUKgSJhh.mjs} +4 -4
- package/dist/{delete-BxjJ66BS.mjs → delete-CPBByycV.mjs} +4 -4
- package/dist/{delete-wFsy80db.mjs → delete-Cucqn4-V.mjs} +4 -4
- package/dist/{delete--15it-A8.mjs → delete-D79TlpcE.mjs} +4 -4
- package/dist/delete-DZJxBmdU.mjs +44 -0
- package/dist/{delete-BudvZkvK.mjs → delete-DndykJn2.mjs} +4 -4
- package/dist/delete-runtime-BbmRg_in.mjs +55 -0
- package/dist/{delete-table-5AQpn8OB.mjs → delete-table-CbsWcjh5.mjs} +4 -4
- package/dist/{dependencies-C1ogC3BV.mjs → dependencies-B-880phi.mjs} +5 -5
- package/dist/dependency-DBUJwXqv.mjs +15 -0
- package/dist/dependency-DKSjKT8P.mjs +165 -0
- package/dist/dependency-DSxKm9oS.mjs +111 -0
- package/dist/dependents-C_FDnpZs.mjs +52 -0
- package/dist/{dirty-CSLDYO-K.mjs → dirty-B-Is68--.mjs} +5 -5
- package/dist/discard-values-yzH-kIsr.mjs +55 -0
- package/dist/document-BRaba87v.mjs +20 -0
- package/dist/{document-CA0Q6lqu.mjs → document-C18b5rM6.mjs} +1 -1
- package/dist/{document-BHpLJbKU.mjs → document-DFCj1Az_.mjs} +2 -1
- package/dist/{download-Ddap1OAo.mjs → download-DluF-vnU.mjs} +2 -2
- package/dist/{eid-HnrWhPoe.mjs → eid-Dz-mP40j.mjs} +11 -10
- package/dist/entity-CA4zfRt4.mjs +20 -0
- package/dist/entry-flags-7x7bIyOQ.mjs +42 -0
- package/dist/{events-CXqetjcS.mjs → events-2sOk6H09.mjs} +4 -4
- package/dist/export-BKkAJOFb.mjs +74 -0
- package/dist/export-flags-NiZ7C3Gm.mjs +81 -0
- package/dist/export-preflight-CwJ_3-iX.mjs +35 -0
- package/dist/{field-CcN4oZy6.mjs → field-5nivEfd6.mjs} +33 -3
- package/dist/field-BARgq5I9.mjs +21 -0
- package/dist/field-wmN6raOG.mjs +128 -0
- package/dist/{fields-DxHxuxwO.mjs → fields-Bod0s_uV.mjs} +6 -6
- package/dist/filter-flags-BYcbB85j.mjs +71 -0
- package/dist/fks-IUw66K_Q.mjs +36 -0
- package/dist/{get-eJilYnHk.mjs → get-B8DUMrCw.mjs} +5 -5
- package/dist/{get-C3cuZNeW.mjs → get-BGqvoGQM.mjs} +3 -3
- package/dist/{get-DmKtPNOy.mjs → get-BSUsfysk.mjs} +3 -3
- package/dist/{get-DW7mCaGe.mjs → get-BXsLkoit.mjs} +5 -5
- package/dist/{get-Dtre5jzh.mjs → get-BXssHyJ1.mjs} +5 -5
- package/dist/get-Bct52yPw.mjs +36 -0
- package/dist/{get-BiPclcIP.mjs → get-Besqwy32.mjs} +3 -3
- package/dist/{get-BcoJ9Aha.mjs → get-BfSX-OeS.mjs} +3 -3
- package/dist/{get-BF2vdF3W.mjs → get-Biy4gOzu2.mjs} +3 -3
- package/dist/{get-C_tdSMwW2.mjs → get-CYIeiTZ9.mjs} +4 -4
- package/dist/{get-b0CoPz5B.mjs → get-CaEiQnSw.mjs} +4 -4
- package/dist/{get-CxUQyhte.mjs → get-Cl81y0Md.mjs} +5 -5
- package/dist/{get-B2pj2q3X.mjs → get-D1NjMXAH.mjs} +4 -4
- package/dist/{get-D_x-ENFe.mjs → get-D2cPuOPR.mjs} +5 -5
- package/dist/{get-DjlQhgD4.mjs → get-DITlshJH.mjs} +3 -3
- package/dist/{get-CE9_4Q7E.mjs → get-DLyg6Al9.mjs} +3 -3
- package/dist/{get-CDnmpfHQ.mjs → get-DQZfaVNq.mjs} +4 -4
- package/dist/{get-BGLvyOO3.mjs → get-DtBqoGTa.mjs} +5 -5
- package/dist/{get-H6kInHIx.mjs → get-_ik_5_lQ.mjs} +5 -5
- package/dist/{get-run-BE1HtJDW.mjs → get-run-CEc_tr5b.mjs} +4 -4
- package/dist/{git-sync-BwBRmEhE.mjs → git-sync-COokpYgc.mjs} +12 -3
- package/dist/git-sync-DKcaddkV.mjs +29 -0
- package/dist/git-sync-DspFahwV.mjs +165 -0
- package/dist/glossary-BlNCrYbw.mjs +30 -0
- package/dist/glossary-CWIX8Zh6.mjs +14 -0
- package/dist/glossary-LmZWwCNP.mjs +21 -0
- package/dist/graph-f6Bp1e8U.mjs +34 -0
- package/dist/{group-YQQ5GIcP.mjs → group-bpD_KcjA.mjs} +1 -1
- package/dist/{has-remote-changes-Cj1KhBOT.mjs → has-remote-changes-B8MmN6yh.mjs} +4 -4
- package/dist/{import-DLb9VN4l.mjs → import-Bhq15KgP.mjs} +19 -8
- package/dist/{input-D5tQEfqN.mjs → input-D8qW-KtR.mjs} +6 -2
- package/dist/{is-dirty-BxtgV2xF.mjs → is-dirty-CAsVuVx8.mjs} +2 -2
- package/dist/{items-DLUYc5-z.mjs → items-BZJomiDE.mjs} +8 -8
- package/dist/{key-PYetuQ13.mjs → key-BynJSK9u.mjs} +1 -1
- package/dist/{library-BNSxXOpc.mjs → library-B7wDH-Nc.mjs} +5 -5
- package/dist/{library-PGCfm0UA.mjs → library-BOv5SY24.mjs} +1 -1
- package/dist/{library-BPIzb3K_.mjs → library-Ck0EK5bi.mjs} +4 -2
- package/dist/{list-BUz6KOfw.mjs → list-B2uUl26x.mjs} +6 -6
- package/dist/{list-CERbeLbQ.mjs → list-B4luDSYj.mjs} +6 -6
- package/dist/{list-jhQSgh6i.mjs → list-B8ND9t2h.mjs} +3 -3
- package/dist/{list-M8J10Ozk.mjs → list-BT5t8ZOl.mjs} +4 -4
- package/dist/{list-Dat8QNcf.mjs → list-BT7xiUQe.mjs} +3 -3
- package/dist/{list-cIMww2Me.mjs → list-BWFCv_zk.mjs} +5 -5
- package/dist/{list-B1soS8QW.mjs → list-BtZVe1Nq.mjs} +6 -6
- package/dist/{list-C5mS_ehX.mjs → list-BwdSG-P5.mjs} +5 -5
- package/dist/{list-BQnOEB3W.mjs → list-C-A-2HFq.mjs} +3 -3
- package/dist/list-C9x--9Jq.mjs +101 -0
- package/dist/{list-CX9qZ-bx.mjs → list-CCdXig7b.mjs} +4 -4
- package/dist/{list-Sd7jGZoX.mjs → list-CJDFoOHb.mjs} +3 -3
- package/dist/{list-CzRzCbCY.mjs → list-CLFu3mQB.mjs} +3 -3
- package/dist/{list-CBLxhaNZ.mjs → list-Cd40Kr0R.mjs} +3 -3
- package/dist/{list-COLpwXW4.mjs → list-Cj_mTxbY.mjs} +4 -4
- package/dist/{list-CQbiSx26.mjs → list-CtS50R7m.mjs} +5 -5
- package/dist/{list-CehE6KBV.mjs → list-CvZyTwmV.mjs} +5 -5
- package/dist/list-DcnNlYQA.mjs +35 -0
- package/dist/{list-BcP1DTJH.mjs → list-DtgbtE3_.mjs} +3 -3
- package/dist/{login-BfLqBfCd.mjs → login-Bi_nGMJ9.mjs} +6 -6
- package/dist/{logout-BpRXB3Ze.mjs → logout-CiHQJWTu.mjs} +2 -2
- package/dist/{measure-Ds8O5Evr.mjs → measure-D2qq5e8f.mjs} +6 -6
- package/dist/moderation-review-BdqEH6N1.mjs +31 -0
- package/dist/{notification-DVrLkjFT.mjs → notification-DOYdl0ao.mjs} +1 -1
- package/dist/{parameter-values-DhrkLXoN.mjs → parameter-values-CZow98nb.mjs} +3 -3
- package/dist/{parse-enum-Dc0dMZ3P.mjs → parse-enum-CLIXMsd8.mjs} +1 -1
- package/dist/parse-id-BW09NysN.mjs +13 -0
- package/dist/{parse-ref-DTDld_LJ.mjs → parse-ref-Cw5fa4FI.mjs} +1 -1
- package/dist/parse-text-T0lTXzTZ.mjs +11 -0
- package/dist/{path-_GHFrTLx.mjs → path-K6LPLYPb.mjs} +4 -4
- package/dist/{poll-KLl4Eq8Y.mjs → poll-Dz4tUm2f.mjs} +2 -2
- package/dist/{preflight-BpYtF0IU.mjs → preflight-CX6cqB90.mjs} +3 -3
- package/dist/{process-CLtOWKBn.mjs → process-D0HdqZ3r.mjs} +1 -1
- package/dist/{publish-D-7Zlmuk.mjs → publish-COatW4Un.mjs} +4 -4
- package/dist/{pulse-x0gFxWfG.mjs → pulse-D1uh8UIU.mjs} +1 -1
- package/dist/query-BJXTIDhy.mjs +328 -0
- package/dist/{query-B1CZztxs.mjs → query-DmvkyDfo.mjs} +14 -33
- package/dist/remapping-CPAvDKHV.mjs +53 -0
- package/dist/{remove-collection-C4saCFxz.mjs → remove-collection-Bg-sNX3U.mjs} +5 -5
- package/dist/{render-6O_eF-P1.mjs → render-BSfDD6ip.mjs} +2 -2
- package/dist/{replace-BuR4f2Ai.mjs → replace-RCHeZLUT.mjs} +4 -4
- package/dist/{rescan-values-CNOiiWQ5.mjs → rescan-values-CpDGYZvf.mjs} +5 -5
- package/dist/rescan-values-PeMnpaFY.mjs +32 -0
- package/dist/{run-DijA_BXt.mjs → run-CaQ7kubO.mjs} +3 -3
- package/dist/{run-QEUbWNm7.mjs → run-DkRkZRgf.mjs} +7 -7
- package/dist/{runs-BSlhVeDO.mjs → runs-BDjoVJ0P.mjs} +5 -5
- package/dist/{runtime-Dtb93zKy.mjs → runtime-CZ5zh32z.mjs} +21 -82
- package/dist/{schema-tables-BE3rEb6I.mjs → schema-tables-C2qjLcPq.mjs} +6 -6
- package/dist/{schemas-yDjBiwlH.mjs → schemas-D8hfNduk.mjs} +4 -4
- package/dist/search-BrQQuNmh.mjs +131 -0
- package/dist/search-CnTXKJgx.mjs +85 -0
- package/dist/{segment-Cm6zQjJW.mjs → segment-Bi6eqj3e.mjs} +6 -6
- package/dist/{send-kC8oerkT.mjs → send-CAjgVNlA.mjs} +3 -3
- package/dist/{set-tFhPkxrL.mjs → set-BXTkYWid.mjs} +4 -4
- package/dist/{set-active-lDKhAlij.mjs → set-active-CBQVCePU.mjs} +3 -3
- package/dist/set-sensitivity-D39kGTob.mjs +57 -0
- package/dist/{setting-DrJXCaFE.mjs → setting-CPkvkc4H.mjs} +4 -4
- package/dist/{setup-BWY9M0iR.mjs → setup-Be3xDXHi.mjs} +3 -3
- package/dist/{signal-Csom0mt5.mjs → signal-CxWeLszu.mjs} +1 -1
- package/dist/{skill-list-CCes8pKe.mjs → skill-list-CBGq30sI.mjs} +2 -2
- package/dist/{skills-DE9ej5Rg.mjs → skills-CJ9eXouJ.mjs} +2 -2
- package/dist/{skills-DPRN2384.mjs → skills-DyiLycMY.mjs} +3 -3
- package/dist/snippet-QirK70R_.mjs +19 -0
- package/dist/{stash-C9oDvQ9P.mjs → stash-BVN3s5N_.mjs} +6 -6
- package/dist/{status-CkpujA26.mjs → status-BtbMmIWo.mjs} +7 -7
- package/dist/{status-DSdXmNC3.mjs → status-CxP6w3aL.mjs} +3 -3
- package/dist/{subscription-DKOKoHRG.mjs → subscription-Dr-YHARg.mjs} +6 -6
- package/dist/{subscriptions-C5SyJL4B.mjs → subscriptions-8tM8TTeQ.mjs} +6 -6
- package/dist/{summary-DTPgXsc0.mjs → summary-DKx6ptQe.mjs} +5 -5
- package/dist/sync-schema-B8RY0Ra4.mjs +32 -0
- package/dist/{sync-schema-DKKkNSR7.mjs → sync-schema-kNriXZjG.mjs} +6 -6
- package/dist/sync-task-CXFoqlpF.mjs +53 -0
- package/dist/table-CZnT6d9x.mjs +26 -0
- package/dist/{table-DfuY0N8e.mjs → table-Ci6bhZkb.mjs} +35 -12
- package/dist/table-CxvaDiIZ.mjs +155 -0
- package/dist/table-selector-flags-1bYkAKld.mjs +42 -0
- package/dist/text-DaNkPRwt.mjs +6 -0
- package/dist/timeline-CUzx6uXi.mjs +21 -0
- package/dist/{timeline-event-n4Lzet7l.mjs → timeline-event-DpNm4dkn.mjs} +6 -6
- package/dist/{transform-CtqB1WYo.mjs → transform-CNBIV7No.mjs} +1 -1
- package/dist/transform-g4-HHzDp.mjs +28 -0
- package/dist/transform-job-DqBtnTrG.mjs +22 -0
- package/dist/{transform-tag-D6NXqWaX.mjs → transform-tag-nTb0Ivpj.mjs} +5 -5
- package/dist/{transforms-O4NtXqFz.mjs → transforms-BSsAfwAg.mjs} +5 -5
- package/dist/tree-lMvw1jnZ.mjs +34 -0
- package/dist/{unpublish-DvWefKJi.mjs → unpublish-CYFDd828.mjs} +3 -3
- package/dist/unreferenced-8Xdq76Kw.mjs +36 -0
- package/dist/{update-AJ2JmwDl.mjs → update-6P_GYCLT.mjs} +5 -5
- package/dist/{update-76nzOc71.mjs → update-B28EJzrx.mjs} +13 -8
- package/dist/{update-To6A1Ugu.mjs → update-BDunZa7G.mjs} +4 -4
- package/dist/{update-2KIpYgyj.mjs → update-BT2yNB_g.mjs} +6 -6
- package/dist/{update-DmgRIp7o.mjs → update-BnMUSFYZ.mjs} +4 -4
- package/dist/update-BwrYeKso.mjs +41 -0
- package/dist/{update-DOdcflLH.mjs → update-C7DEMiu-.mjs} +7 -7
- package/dist/{update-CGJvIS-l.mjs → update-CITzAFG8.mjs} +4 -4
- package/dist/update-CLl8tE20.mjs +181 -0
- package/dist/{update-BB6Go_RX.mjs → update-CM5uuhjB.mjs} +4 -4
- package/dist/{update-xEegxIyH.mjs → update-CQXcsvaa.mjs} +5 -5
- package/dist/{update-DV54H3L5.mjs → update-Cs2zv_L2.mjs} +7 -7
- package/dist/{update-Bah7N8QX.mjs → update-D--Fw7-_.mjs} +5 -5
- package/dist/{update-H_fdjugs.mjs → update-D9p0N8ky.mjs} +4 -4
- package/dist/{update-7oKvP1HC.mjs → update-DAzRx0of.mjs} +5 -5
- package/dist/{update-DXmZuJho.mjs → update-D_DCOOAB.mjs} +6 -6
- package/dist/{update-D7dG7H-z.mjs → update-_sYM1GuU.mjs} +7 -7
- package/dist/{update-dashcard-DjT5QOkL.mjs → update-dashcard-VNnIqHDI.mjs} +6 -6
- package/dist/{upgrade-CuJx9fX4.mjs → upgrade-Tj_reACv.mjs} +4 -4
- package/dist/upload-BKxOpSz3.mjs +13 -0
- package/dist/{upload-DOO94rCQ.mjs → upload-C2fhpKkP.mjs} +2 -2
- package/dist/{upload-CboARPZm.mjs → upload-Dg91ldGg.mjs} +3 -3
- package/dist/{uuid-InwZlrpQ.mjs → uuid-Blpv_e0S.mjs} +2 -2
- package/dist/{validate-D6-Vg_kn.mjs → validate-D7e110oU.mjs} +1 -1
- package/dist/{validate-query-B90KYPQr.mjs → validate-query-C7LuKiUT.mjs} +2 -2
- package/dist/{values-CsZLk1Ls.mjs → values-PonkbYAK.mjs} +5 -5
- package/dist/verify-DixUBbd2.mjs +38 -0
- package/dist/verify-Dv7ER11c.mjs +38 -0
- package/dist/{verify-DrGjZwBM.mjs → verify-Mpb65a5v.mjs} +3 -3
- package/dist/verify-flags-CMpRkMPa.mjs +58 -0
- package/dist/{wait-BmzdarP9.mjs → wait-CaH6XHQV.mjs} +6 -6
- package/dist/{wait-flags-CiJGrTCT.mjs → wait-flags-rUU4NUrv.mjs} +2 -2
- package/dist/{window-DSb1tqSe.mjs → window-CI_QD04s.mjs} +1 -1
- package/package.json +1 -1
- package/skill-data/core/SKILL.md +24 -23
- package/skill-data/dashboard/SKILL.md +1 -1
- package/skill-data/document/SKILL.md +12 -1
- package/skill-data/git-sync/SKILL.md +61 -9
- package/skill-data/mbql/SKILL.md +5 -0
- package/skill-data/metadata/SKILL.md +36 -6
- package/skill-data/transform/SKILL.md +1 -63
- package/dist/body-CshgcV6U.mjs +0 -17
- package/dist/card-CefVYtF7.mjs +0 -24
- package/dist/collection-Be5AHVWP.mjs +0 -20
- package/dist/create-DiJ8bUb-.mjs +0 -34
- package/dist/dashboard-CMw13KXM.mjs +0 -33
- package/dist/database-JtHTqSpq.mjs +0 -26
- package/dist/delete-Bsdwqh7H.mjs +0 -44
- package/dist/delete-runtime-BKEzJn22.mjs +0 -49
- package/dist/document-BGzVip5_.mjs +0 -19
- package/dist/export-IFZdgYZ2.mjs +0 -63
- package/dist/field-BJ6HoLRd.mjs +0 -18
- package/dist/field-fDtIrY6D.mjs +0 -80
- package/dist/get-i0KInCw9.mjs +0 -32
- package/dist/get-jofVjU6e.mjs +0 -31
- package/dist/git-sync-TjX1r_wF.mjs +0 -136
- package/dist/git-sync-xKC1sqC4.mjs +0 -28
- package/dist/list-Cuhf2lKL.mjs +0 -35
- package/dist/list-D-SyhKFw.mjs +0 -34
- package/dist/parse-id-DtM6q9HU.mjs +0 -10
- package/dist/query-CxESKMve.mjs +0 -114
- package/dist/query-result-E4Q-Gra6.mjs +0 -15
- package/dist/run-FmRruANb.mjs +0 -64
- package/dist/search-CR_xNArA.mjs +0 -97
- package/dist/selectors-C-vgMcGK.mjs +0 -35
- package/dist/snippet-DWHTSo9c.mjs +0 -19
- package/dist/sync-task-BtDnTXCP.mjs +0 -38
- package/dist/table-C6h4tIRw.mjs +0 -37
- package/dist/table-I8NXSdUC.mjs +0 -18
- package/dist/timeline-B_ESH-6W.mjs +0 -21
- package/dist/transform-BNuNiH9d.mjs +0 -28
- package/dist/transform-job-B7yc6dfH.mjs +0 -22
- package/dist/transform-test-BjjCQ2xm.mjs +0 -169
- package/dist/transform-test-C1Oqtfb-.mjs +0 -16
- package/dist/transform-test-gzDcbypy.mjs +0 -25
- package/dist/transport-CyVo29u7.mjs +0 -313
- package/dist/tree-CuyF116R.mjs +0 -26
- package/dist/update-l3PyNQKG.mjs +0 -41
- package/dist/upload-2YFFBSln.mjs +0 -13
- package/skill-data/transform-test-plan/SKILL.md +0 -171
- package/skill-data/transform-test-plan/references/checklist.md +0 -81
- package/skill-data/transform-test-plan/references/checks.md +0 -263
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { H as
|
|
2
|
-
import {
|
|
3
|
-
import { t as parseId } from "./parse-id-
|
|
4
|
-
import { a as CardQueryResult
|
|
5
|
-
import { t as cardQueryView } from "./card-
|
|
6
|
-
import {
|
|
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
|
-
|
|
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
|
|
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
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
await pipeToStdout(await
|
|
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
|
-
|
|
65
|
-
pivot_results: args["pivot-results"]
|
|
51
|
+
...exportRequest.params
|
|
66
52
|
}));
|
|
67
53
|
return;
|
|
68
54
|
}
|
|
69
|
-
const limited = applyLimit(await
|
|
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
|
|
2
|
-
import { t as defineMetabaseCommand } from "./runtime-
|
|
3
|
-
import { t as parseId } from "./parse-id-
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
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 {
|
|
2
|
-
import {
|
|
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
|
|
2
|
-
import { t as defineMetabaseCommand } from "./runtime-
|
|
3
|
-
import { t as parseId } from "./parse-id-
|
|
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-
|
|
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
|
|
2
|
-
import { t as defineMetabaseCommand } from "./runtime-
|
|
3
|
-
import { t as parseId } from "./parse-id-
|
|
4
|
-
import { a as DatabaseSyncResult } from "./database-
|
|
5
|
-
import { t as databaseSyncResultView } from "./database-
|
|
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
|
|
2
|
-
import { t as defineMetabaseCommand } from "./runtime-
|
|
3
|
-
import { t as parseId } from "./parse-id-
|
|
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 {
|
|
2
|
-
import { t as defineMetabaseCommand } from "./runtime-
|
|
3
|
-
import { t as parseId } from "./parse-id-
|
|
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-
|
|
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,
|
|
@@ -26,7 +26,7 @@ var run_default = defineMetabaseCommand({
|
|
|
26
26
|
name: "run",
|
|
27
27
|
description: "Trigger a transform run by id"
|
|
28
28
|
},
|
|
29
|
-
details: "Starts a run and returns immediately. --wait polls the run to a terminal status. --sync additionally waits until the run's output table is registered and returns its `target_table_id`, so you can build MBQL cards against it — the run registers the table itself, so no separate `db sync-schema` is needed; --sync implies waiting for the run.
|
|
29
|
+
details: "Starts a run and returns immediately. --wait polls the run to a terminal status. --sync additionally waits until the run's output table is registered and returns its `target_table_id`, so you can build MBQL cards against it — the run registers the table itself, so no separate `db sync-schema` is needed; --sync implies waiting for the run.",
|
|
30
30
|
requires: ["transform.run"],
|
|
31
31
|
args: {
|
|
32
32
|
...outputFlags,
|
|
@@ -66,11 +66,11 @@ var run_default = defineMetabaseCommand({
|
|
|
66
66
|
}
|
|
67
67
|
if (result.run_id === null || result.final === null) {
|
|
68
68
|
renderSummary(result, transformRunResultView, result.message, ctx);
|
|
69
|
-
throw new
|
|
69
|
+
throw new Error(`transform run did not start: ${result.message}`);
|
|
70
70
|
}
|
|
71
71
|
const status = result.final.status;
|
|
72
72
|
renderSummary(result, transformRunResultView, summaryLine(id, result.run_id, status, syncTarget, result.target_table_id), ctx);
|
|
73
|
-
if (isTransformRunFailed(status)) throw new
|
|
73
|
+
if (isTransformRunFailed(status)) throw new Error(`transform run ${result.run_id} ${status}`);
|
|
74
74
|
}
|
|
75
75
|
});
|
|
76
76
|
function summaryLine(transformId, runId, status, syncTarget, targetTableId) {
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { t as defineMetabaseCommand } from "./runtime-
|
|
3
|
-
import { t as parseId } from "./parse-id-
|
|
4
|
-
import { t as collectForOutput } from "./window-
|
|
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-
|
|
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 {
|
|
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))
|
|
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 =
|
|
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-
|
|
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
|
|
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 {
|
|
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 {
|
|
2
|
-
import { t as defineMetabaseCommand } from "./runtime-
|
|
3
|
-
import { t as parseId } from "./parse-id-
|
|
4
|
-
import { n as windowList } from "./window-
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
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 {
|
|
2
|
-
import { t as defineMetabaseCommand } from "./runtime-
|
|
3
|
-
import { t as parseId } from "./parse-id-
|
|
4
|
-
import { n as windowList } from "./window-
|
|
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 };
|