@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
package/dist/cli.mjs
CHANGED
|
@@ -120,15 +120,6 @@ var InternalError = class extends MetabaseError {
|
|
|
120
120
|
this.name = "InternalError";
|
|
121
121
|
}
|
|
122
122
|
};
|
|
123
|
-
var FailedResultError = class extends MetabaseError {
|
|
124
|
-
category = "failed";
|
|
125
|
-
isRetryable = false;
|
|
126
|
-
developerDetail = null;
|
|
127
|
-
constructor(message) {
|
|
128
|
-
super(message);
|
|
129
|
-
this.name = "FailedResultError";
|
|
130
|
-
}
|
|
131
|
-
};
|
|
132
123
|
var AbortError = class extends MetabaseError {
|
|
133
124
|
category = "abort";
|
|
134
125
|
isRetryable = false;
|
|
@@ -198,18 +189,283 @@ function toAliasArray(alias) {
|
|
|
198
189
|
if (alias === void 0) return [];
|
|
199
190
|
return Array.isArray(alias) ? alias : [alias];
|
|
200
191
|
}
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
192
|
+
const NEGATION_PREFIX = "--no-";
|
|
193
|
+
const INLINE_VALUE = "=";
|
|
194
|
+
const LONG_PREFIX = "--";
|
|
195
|
+
const SHORT_PREFIX = "-";
|
|
196
|
+
const SHORT_FLAG_LENGTH = 2;
|
|
197
|
+
const WORD_SEPARATORS = /* @__PURE__ */ new Set([
|
|
198
|
+
"-",
|
|
199
|
+
"_",
|
|
200
|
+
"/",
|
|
201
|
+
"."
|
|
202
|
+
]);
|
|
203
|
+
const NEGATIVE_NUMBER = /^-\.?\d/;
|
|
204
|
+
const DIGIT = /\d/;
|
|
205
|
+
function flagSpellings(argsDef) {
|
|
206
|
+
const spellings = /* @__PURE__ */ new Map();
|
|
207
207
|
for (const [key, def] of Object.entries(argsDef)) {
|
|
208
|
-
if (def.type
|
|
209
|
-
|
|
210
|
-
|
|
208
|
+
if (def.type === "positional") continue;
|
|
209
|
+
const takes = flagTakes(def);
|
|
210
|
+
const aliases = "alias" in def ? toAliasArray(def.alias) : [];
|
|
211
|
+
const words = splitWords(key);
|
|
212
|
+
for (const name of /* @__PURE__ */ new Set([
|
|
213
|
+
key,
|
|
214
|
+
camelCase(words),
|
|
215
|
+
kebabCase(words),
|
|
216
|
+
...aliases
|
|
217
|
+
])) {
|
|
218
|
+
spellings.set(`${LONG_PREFIX}${name}`, {
|
|
219
|
+
key,
|
|
220
|
+
negated: false,
|
|
221
|
+
takes
|
|
222
|
+
});
|
|
223
|
+
spellings.set(`${NEGATION_PREFIX}${name}`, {
|
|
224
|
+
key,
|
|
225
|
+
negated: true,
|
|
226
|
+
takes
|
|
227
|
+
});
|
|
228
|
+
}
|
|
229
|
+
for (const letter of aliases.filter((alias) => alias.length === 1)) spellings.set(`${SHORT_PREFIX}${letter}`, {
|
|
230
|
+
key,
|
|
231
|
+
negated: false,
|
|
232
|
+
takes
|
|
233
|
+
});
|
|
211
234
|
}
|
|
212
|
-
return
|
|
235
|
+
return spellings;
|
|
236
|
+
}
|
|
237
|
+
function flagTakes(def) {
|
|
238
|
+
if (def.type === "string" && "list" in def && def.list === true) return "list";
|
|
239
|
+
return def.type === "string" || def.type === "enum" ? "value" : "nothing";
|
|
240
|
+
}
|
|
241
|
+
function parseFlagToken(token, spellings) {
|
|
242
|
+
const equals = token.indexOf(INLINE_VALUE);
|
|
243
|
+
const name = equals === -1 ? token : token.slice(0, equals);
|
|
244
|
+
const inlineValue = equals === -1 ? null : readInlineValue(token, name);
|
|
245
|
+
const flag = spellings.get(name);
|
|
246
|
+
if (flag !== void 0) return {
|
|
247
|
+
name,
|
|
248
|
+
flag: flag.negated && inlineValue !== null ? null : flag,
|
|
249
|
+
inlineValue
|
|
250
|
+
};
|
|
251
|
+
const short = name.slice(0, SHORT_FLAG_LENGTH);
|
|
252
|
+
const shortFlag = name.startsWith(LONG_PREFIX) ? void 0 : spellings.get(short);
|
|
253
|
+
if (shortFlag !== void 0 && shortFlag.takes !== "nothing") return {
|
|
254
|
+
name: short,
|
|
255
|
+
flag: shortFlag,
|
|
256
|
+
inlineValue: readInlineValue(token, short)
|
|
257
|
+
};
|
|
258
|
+
return {
|
|
259
|
+
name,
|
|
260
|
+
flag: null,
|
|
261
|
+
inlineValue
|
|
262
|
+
};
|
|
263
|
+
}
|
|
264
|
+
function readInlineValue(token, name) {
|
|
265
|
+
const start = name.startsWith(LONG_PREFIX) ? name.length + 1 : name.length;
|
|
266
|
+
return token.slice(start);
|
|
267
|
+
}
|
|
268
|
+
function isFlagToken(token) {
|
|
269
|
+
return token.startsWith(SHORT_PREFIX) && token !== SHORT_PREFIX && !NEGATIVE_NUMBER.test(token);
|
|
270
|
+
}
|
|
271
|
+
function isNegativeNumber(token) {
|
|
272
|
+
return NEGATIVE_NUMBER.test(token);
|
|
273
|
+
}
|
|
274
|
+
function* readArgv(rawArgs, spellings, start = 0) {
|
|
275
|
+
let index = start;
|
|
276
|
+
while (index < rawArgs.length) {
|
|
277
|
+
const token = rawArgs[index];
|
|
278
|
+
if (token === void 0) return;
|
|
279
|
+
if (token === "--") {
|
|
280
|
+
yield {
|
|
281
|
+
kind: "separator",
|
|
282
|
+
index
|
|
283
|
+
};
|
|
284
|
+
for (const [offset, rest] of rawArgs.slice(index + 1).entries()) yield {
|
|
285
|
+
kind: "positional",
|
|
286
|
+
index: index + 1 + offset,
|
|
287
|
+
token: rest
|
|
288
|
+
};
|
|
289
|
+
return;
|
|
290
|
+
}
|
|
291
|
+
if (!isFlagToken(token)) {
|
|
292
|
+
yield {
|
|
293
|
+
kind: "positional",
|
|
294
|
+
index,
|
|
295
|
+
token
|
|
296
|
+
};
|
|
297
|
+
index += 1;
|
|
298
|
+
continue;
|
|
299
|
+
}
|
|
300
|
+
const item = readFlag(rawArgs, index, parseFlagToken(token, spellings));
|
|
301
|
+
yield item;
|
|
302
|
+
index = item.end;
|
|
303
|
+
}
|
|
304
|
+
}
|
|
305
|
+
function readFlag(rawArgs, index, parsed) {
|
|
306
|
+
const { flag } = parsed;
|
|
307
|
+
const consumesNext = flag !== null && flag.takes !== "nothing" && !flag.negated && parsed.inlineValue === null;
|
|
308
|
+
const next = consumesNext ? rawArgs[index + 1] : void 0;
|
|
309
|
+
const end = next === void 0 ? index + 1 : index + 2;
|
|
310
|
+
const value = consumesNext ? next ?? null : parsed.inlineValue;
|
|
311
|
+
return {
|
|
312
|
+
kind: "flag",
|
|
313
|
+
index,
|
|
314
|
+
...parsed,
|
|
315
|
+
consumesNext,
|
|
316
|
+
value,
|
|
317
|
+
end
|
|
318
|
+
};
|
|
319
|
+
}
|
|
320
|
+
function splitWords(name) {
|
|
321
|
+
const words = [];
|
|
322
|
+
let word = "";
|
|
323
|
+
let previousUpper = null;
|
|
324
|
+
for (const char of name) {
|
|
325
|
+
if (WORD_SEPARATORS.has(char)) {
|
|
326
|
+
words.push(word);
|
|
327
|
+
word = "";
|
|
328
|
+
previousUpper = null;
|
|
329
|
+
continue;
|
|
330
|
+
}
|
|
331
|
+
const upper = DIGIT.test(char) ? null : char !== char.toLowerCase();
|
|
332
|
+
if (previousUpper === false && upper === true) {
|
|
333
|
+
words.push(word);
|
|
334
|
+
word = char;
|
|
335
|
+
} else if (previousUpper === true && upper === false && word.length > 1) {
|
|
336
|
+
words.push(word.slice(0, -1));
|
|
337
|
+
word = `${word.slice(-1)}${char}`;
|
|
338
|
+
} else word += char;
|
|
339
|
+
previousUpper = upper;
|
|
340
|
+
}
|
|
341
|
+
words.push(word);
|
|
342
|
+
return words;
|
|
343
|
+
}
|
|
344
|
+
function camelCase(words) {
|
|
345
|
+
const pascal = words.map((word) => `${word.charAt(0).toUpperCase()}${word.slice(1)}`).join("");
|
|
346
|
+
return `${pascal.charAt(0).toLowerCase()}${pascal.slice(1)}`;
|
|
347
|
+
}
|
|
348
|
+
function kebabCase(words) {
|
|
349
|
+
return words.map((word) => word.toLowerCase()).join("-");
|
|
350
|
+
}
|
|
351
|
+
function parseCsv(raw) {
|
|
352
|
+
return raw.split(",").map((part) => part.trim()).filter((part) => part.length > 0);
|
|
353
|
+
}
|
|
354
|
+
function parseEnumCsv(raw, schema, flagName) {
|
|
355
|
+
if (raw === void 0) return;
|
|
356
|
+
const allowed = Object.values(schema.enum).join(", ");
|
|
357
|
+
const parts = parseCsv(raw);
|
|
358
|
+
if (parts.length === 0) throw new ConfigError(`invalid ${flagName} value: "${raw}" (expected one of: ${allowed})`);
|
|
359
|
+
const accepted = [];
|
|
360
|
+
const rejected = [];
|
|
361
|
+
for (const part of parts) {
|
|
362
|
+
const result = schema.safeParse(part);
|
|
363
|
+
if (result.success) accepted.push(result.data);
|
|
364
|
+
else rejected.push(part);
|
|
365
|
+
}
|
|
366
|
+
if (rejected.length > 0) throw new ConfigError(`invalid ${flagName} value: ${rejected.join(", ")} (expected one of: ${allowed})`);
|
|
367
|
+
return accepted;
|
|
368
|
+
}
|
|
369
|
+
function parseEnum(raw, schema, flagName) {
|
|
370
|
+
if (raw === void 0 || raw === "") return;
|
|
371
|
+
const result = schema.safeParse(raw);
|
|
372
|
+
if (!result.success) throw new ConfigError(`invalid ${flagName} value: "${raw}" (expected one of: ${Object.values(schema.enum).join(", ")})`);
|
|
373
|
+
return result.data;
|
|
374
|
+
}
|
|
375
|
+
//#endregion
|
|
376
|
+
//#region src/commands/argv.ts
|
|
377
|
+
const BUILTIN_FLAGS = [
|
|
378
|
+
"--help",
|
|
379
|
+
"-h",
|
|
380
|
+
"--version",
|
|
381
|
+
"-v"
|
|
382
|
+
];
|
|
383
|
+
const SHELL_SAFE_WORD = /^[\w.,:/@%+=-]+$/;
|
|
384
|
+
function commandSpellings(argsDef) {
|
|
385
|
+
const builtins = BUILTIN_FLAGS.map((flag) => [flag, {
|
|
386
|
+
key: flag,
|
|
387
|
+
negated: false,
|
|
388
|
+
takes: "nothing"
|
|
389
|
+
}]);
|
|
390
|
+
return new Map([...builtins, ...flagSpellings(argsDef)]);
|
|
391
|
+
}
|
|
392
|
+
function separatePositionals(rawArgs, argsDef) {
|
|
393
|
+
const flagTokens = [];
|
|
394
|
+
const positionals = [];
|
|
395
|
+
for (const item of readArgv(rawArgs, commandSpellings(argsDef))) if (item.kind === "flag") flagTokens.push(...rawArgs.slice(item.index, item.end));
|
|
396
|
+
else if (item.kind === "positional") positionals.push(item.token);
|
|
397
|
+
if (!positionals.some(isNegativeNumber)) return [...rawArgs];
|
|
398
|
+
return [
|
|
399
|
+
...flagTokens,
|
|
400
|
+
"--",
|
|
401
|
+
...positionals
|
|
402
|
+
];
|
|
403
|
+
}
|
|
404
|
+
function givenFlagKeys(rawArgs, argsDef) {
|
|
405
|
+
const keys = /* @__PURE__ */ new Set();
|
|
406
|
+
for (const item of readArgv(rawArgs, flagSpellings(argsDef))) if (item.kind === "flag" && item.flag !== null && !item.flag.negated) keys.add(item.flag.key);
|
|
407
|
+
return keys;
|
|
408
|
+
}
|
|
409
|
+
function assertArgv(rawArgs, argsDef) {
|
|
410
|
+
const spellings = commandSpellings(argsDef);
|
|
411
|
+
const valueFlags = [];
|
|
412
|
+
const positionals = [];
|
|
413
|
+
for (const item of readArgv(rawArgs, spellings)) if (item.kind === "positional") positionals.push(item.token);
|
|
414
|
+
else if (item.kind === "flag") {
|
|
415
|
+
const valueFlag = readValueFlag(item, spellings);
|
|
416
|
+
if (valueFlag !== null) valueFlags.push(valueFlag);
|
|
417
|
+
}
|
|
418
|
+
assertEachGivenOnce(valueFlags);
|
|
419
|
+
assertPositionalCount(positionals, argsDef);
|
|
420
|
+
}
|
|
421
|
+
function readValueFlag(item, spellings) {
|
|
422
|
+
const { flag, name } = item;
|
|
423
|
+
if (flag === null) throw new ConfigError(`unknown flag: ${name}`);
|
|
424
|
+
if (flag.takes === "nothing") return null;
|
|
425
|
+
if (flag.negated) throw new ConfigError(`${name}: ${`--${name.slice(5)}`} takes a value, so it cannot be negated`);
|
|
426
|
+
return {
|
|
427
|
+
name,
|
|
428
|
+
flag,
|
|
429
|
+
value: readFlagValue(item, spellings)
|
|
430
|
+
};
|
|
431
|
+
}
|
|
432
|
+
function assertPositionalCount(positionals, argsDef) {
|
|
433
|
+
const declared = Object.entries(argsDef).filter(([, def]) => def.type === "positional").map(([name]) => `<${name}>`);
|
|
434
|
+
const extra = positionals[declared.length];
|
|
435
|
+
if (extra === void 0) return;
|
|
436
|
+
throw new ConfigError(`unexpected argument: "${extra}" (${declared.length === 0 ? "this command takes no positional arguments" : `this command takes ${declared.join(" ")}; quote an argument that contains spaces`})`);
|
|
437
|
+
}
|
|
438
|
+
function assertEachGivenOnce(valueFlags) {
|
|
439
|
+
const first = /* @__PURE__ */ new Map();
|
|
440
|
+
for (const repeat of valueFlags) {
|
|
441
|
+
const earlier = first.get(repeat.flag.key);
|
|
442
|
+
if (earlier === void 0) {
|
|
443
|
+
first.set(repeat.flag.key, repeat);
|
|
444
|
+
continue;
|
|
445
|
+
}
|
|
446
|
+
const also = earlier.name === repeat.name ? "" : ` (also as ${earlier.name})`;
|
|
447
|
+
const joined = joinedSpelling(repeat, valueFlags);
|
|
448
|
+
throw new ConfigError(`${repeat.name} is given more than once${also}; pass it once${joined}`);
|
|
449
|
+
}
|
|
450
|
+
}
|
|
451
|
+
function joinedSpelling(repeat, valueFlags) {
|
|
452
|
+
if (repeat.flag.takes !== "list") return "";
|
|
453
|
+
const joined = valueFlags.filter((valueFlag) => valueFlag.flag.key === repeat.flag.key).map((valueFlag) => valueFlag.value).join(",");
|
|
454
|
+
return `, as --${repeat.flag.key}=${quoteForShell(joined)}`;
|
|
455
|
+
}
|
|
456
|
+
function quoteForShell(value) {
|
|
457
|
+
if (SHELL_SAFE_WORD.test(value)) return value;
|
|
458
|
+
return `'${value.replaceAll("'", `'\\''`)}'`;
|
|
459
|
+
}
|
|
460
|
+
function readFlagValue(item, spellings) {
|
|
461
|
+
const { name, value, consumesNext } = item;
|
|
462
|
+
if (value === null || consumesNext && value === "--") throw new ConfigError(`${name} needs a value`);
|
|
463
|
+
if (consumesNext && readsAsFlag(value, spellings)) throw new ConfigError(`${name} needs a value, but the flag ${parseFlagToken(value, spellings).name} follows it; write ${name}=<value> for a value that starts with "-"`);
|
|
464
|
+
return value;
|
|
465
|
+
}
|
|
466
|
+
function readsAsFlag(value, spellings) {
|
|
467
|
+
if (!isFlagToken(value)) return false;
|
|
468
|
+
return value.startsWith("--no-") || parseFlagToken(value, spellings).flag !== null;
|
|
213
469
|
}
|
|
214
470
|
//#endregion
|
|
215
471
|
//#region src/output/types.ts
|
|
@@ -240,7 +496,13 @@ function listEnvelopeShape(item) {
|
|
|
240
496
|
}
|
|
241
497
|
//#endregion
|
|
242
498
|
//#region src/commands/flags.ts
|
|
243
|
-
|
|
499
|
+
function listFlag(def) {
|
|
500
|
+
return {
|
|
501
|
+
...def,
|
|
502
|
+
list: true
|
|
503
|
+
};
|
|
504
|
+
}
|
|
505
|
+
const formatFlags = {
|
|
244
506
|
format: {
|
|
245
507
|
type: "string",
|
|
246
508
|
description: "auto | json | text",
|
|
@@ -249,15 +511,18 @@ const outputFlags = {
|
|
|
249
511
|
json: {
|
|
250
512
|
type: "boolean",
|
|
251
513
|
description: "Shorthand for --format json"
|
|
252
|
-
}
|
|
514
|
+
}
|
|
515
|
+
};
|
|
516
|
+
const outputFlags = {
|
|
517
|
+
...formatFlags,
|
|
253
518
|
full: {
|
|
254
519
|
type: "boolean",
|
|
255
520
|
description: "Return the full object (default: compact)"
|
|
256
521
|
},
|
|
257
|
-
fields: {
|
|
522
|
+
fields: listFlag({
|
|
258
523
|
type: "string",
|
|
259
524
|
description: "Dot-paths, comma separated (mutually exclusive with --full)"
|
|
260
|
-
},
|
|
525
|
+
}),
|
|
261
526
|
maxBytes: {
|
|
262
527
|
type: "string",
|
|
263
528
|
description: "Output size cap; 0 disables",
|
|
@@ -309,50 +574,32 @@ const connectionFlags = {
|
|
|
309
574
|
};
|
|
310
575
|
//#endregion
|
|
311
576
|
//#region src/commands/global-flags.ts
|
|
312
|
-
const
|
|
313
|
-
const NEGATION_PREFIX = "no-";
|
|
314
|
-
const GLOBAL_FLAG_ARGS = {
|
|
577
|
+
const GLOBAL_FLAG_SPELLINGS = flagSpellings({
|
|
315
578
|
...outputFlags,
|
|
316
579
|
...listFlags,
|
|
317
580
|
...profileFlag,
|
|
318
581
|
...connectionFlags
|
|
319
|
-
};
|
|
320
|
-
const GLOBAL_FLAG_NAMES = buildGlobalFlagNames();
|
|
321
|
-
function buildGlobalFlagNames() {
|
|
322
|
-
const names = /* @__PURE__ */ new Set();
|
|
323
|
-
for (const [key, def] of Object.entries(GLOBAL_FLAG_ARGS)) {
|
|
324
|
-
names.add(normalizeFlag(key));
|
|
325
|
-
if ("alias" in def) for (const alias of toAliasArray(def.alias)) names.add(normalizeFlag(alias));
|
|
326
|
-
}
|
|
327
|
-
return names;
|
|
328
|
-
}
|
|
329
|
-
function isGlobalFlag(token) {
|
|
330
|
-
if (!token.startsWith("-") || token === ARGUMENT_SEPARATOR) return false;
|
|
331
|
-
const raw = token.includes("=") ? token.slice(0, token.indexOf("=")) : token;
|
|
332
|
-
const name = normalizeFlag(raw);
|
|
333
|
-
if (GLOBAL_FLAG_NAMES.has(name)) return true;
|
|
334
|
-
const bare = raw.replace(/^-+/, "");
|
|
335
|
-
if (bare.startsWith(NEGATION_PREFIX)) return GLOBAL_FLAG_NAMES.has(normalizeFlag(bare.slice(3)));
|
|
336
|
-
return false;
|
|
337
|
-
}
|
|
582
|
+
});
|
|
338
583
|
function hoistGlobalFlags(rawArgs) {
|
|
339
|
-
const
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
584
|
+
const end = leadingGlobalFlagsEnd(rawArgs);
|
|
585
|
+
if (end === 0) return [...rawArgs];
|
|
586
|
+
const leading = rawArgs.slice(0, end);
|
|
587
|
+
const rest = rawArgs.slice(end);
|
|
588
|
+
const separator = rest.indexOf("--");
|
|
589
|
+
if (separator === -1) return [...rest, ...leading];
|
|
590
|
+
return [
|
|
591
|
+
...rest.slice(0, separator),
|
|
592
|
+
...leading,
|
|
593
|
+
...rest.slice(separator)
|
|
594
|
+
];
|
|
595
|
+
}
|
|
596
|
+
function leadingGlobalFlagsEnd(rawArgs) {
|
|
597
|
+
let end = 0;
|
|
598
|
+
for (const item of readArgv(rawArgs, GLOBAL_FLAG_SPELLINGS)) {
|
|
599
|
+
if (item.kind !== "flag" || item.flag === null) return end;
|
|
600
|
+
end = item.end;
|
|
353
601
|
}
|
|
354
|
-
|
|
355
|
-
return [...rawArgs.slice(index), ...leading];
|
|
602
|
+
return end;
|
|
356
603
|
}
|
|
357
604
|
//#endregion
|
|
358
605
|
//#region src/core/system-ca.ts
|
|
@@ -367,7 +614,7 @@ function trustSystemCa() {
|
|
|
367
614
|
//#endregion
|
|
368
615
|
//#region package.json
|
|
369
616
|
var name = "@metabase/cli";
|
|
370
|
-
var version = "0.
|
|
617
|
+
var version = "0.4.0";
|
|
371
618
|
var description = "Metabase CLI";
|
|
372
619
|
//#endregion
|
|
373
620
|
//#region src/runtime/command-augment.ts
|
|
@@ -387,37 +634,38 @@ const main = defineCommand({
|
|
|
387
634
|
description
|
|
388
635
|
},
|
|
389
636
|
subCommands: {
|
|
390
|
-
auth: () => import("./auth-
|
|
391
|
-
db: () => import("./db-
|
|
392
|
-
table: () => import("./table-
|
|
393
|
-
field: () => import("./field-
|
|
394
|
-
upload: () => import("./upload-
|
|
395
|
-
"content-translation": () => import("./content-translation-
|
|
396
|
-
card: () => import("./card-
|
|
397
|
-
dashboard: () => import("./dashboard-
|
|
398
|
-
subscription: () => import("./subscription-
|
|
399
|
-
alert: () => import("./alert-
|
|
400
|
-
collection: () => import("./collection-
|
|
401
|
-
library: () => import("./library-
|
|
402
|
-
document: () => import("./document-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
"transform-
|
|
406
|
-
"transform-
|
|
407
|
-
setting: () => import("./setting-
|
|
408
|
-
search: () => import("./search-
|
|
409
|
-
"git-sync": () => import("./git-sync-
|
|
410
|
-
setup: () => import("./setup-
|
|
411
|
-
snippet: () => import("./snippet-
|
|
412
|
-
segment: () => import("./segment-
|
|
413
|
-
measure: () => import("./measure-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
637
|
+
auth: () => import("./auth-DdLhXCn-.mjs").then((mod) => mod.default),
|
|
638
|
+
db: () => import("./db-BFSeETMO.mjs").then((mod) => mod.default),
|
|
639
|
+
table: () => import("./table-CZnT6d9x.mjs").then((mod) => mod.default),
|
|
640
|
+
field: () => import("./field-BARgq5I9.mjs").then((mod) => mod.default),
|
|
641
|
+
upload: () => import("./upload-BKxOpSz3.mjs").then((mod) => mod.default),
|
|
642
|
+
"content-translation": () => import("./content-translation-C19SqZWp.mjs").then((mod) => mod.default),
|
|
643
|
+
card: () => import("./card-CFd-GUEM.mjs").then((mod) => mod.default),
|
|
644
|
+
dashboard: () => import("./dashboard-AWrXqQ7a.mjs").then((mod) => mod.default),
|
|
645
|
+
subscription: () => import("./subscription-Dr-YHARg.mjs").then((mod) => mod.default),
|
|
646
|
+
alert: () => import("./alert-Dt6La9tK.mjs").then((mod) => mod.default),
|
|
647
|
+
collection: () => import("./collection-BKNShKcY.mjs").then((mod) => mod.default),
|
|
648
|
+
library: () => import("./library-B7wDH-Nc.mjs").then((mod) => mod.default),
|
|
649
|
+
document: () => import("./document-BRaba87v.mjs").then((mod) => mod.default),
|
|
650
|
+
glossary: () => import("./glossary-CWIX8Zh6.mjs").then((mod) => mod.default),
|
|
651
|
+
transform: () => import("./transform-g4-HHzDp.mjs").then((mod) => mod.default),
|
|
652
|
+
"transform-job": () => import("./transform-job-DqBtnTrG.mjs").then((mod) => mod.default),
|
|
653
|
+
"transform-tag": () => import("./transform-tag-nTb0Ivpj.mjs").then((mod) => mod.default),
|
|
654
|
+
setting: () => import("./setting-CPkvkc4H.mjs").then((mod) => mod.default),
|
|
655
|
+
search: () => import("./search-BrQQuNmh.mjs").then((mod) => mod.default),
|
|
656
|
+
"git-sync": () => import("./git-sync-DKcaddkV.mjs").then((mod) => mod.default),
|
|
657
|
+
setup: () => import("./setup-Be3xDXHi.mjs").then((mod) => mod.default),
|
|
658
|
+
snippet: () => import("./snippet-QirK70R_.mjs").then((mod) => mod.default),
|
|
659
|
+
segment: () => import("./segment-Bi6eqj3e.mjs").then((mod) => mod.default),
|
|
660
|
+
measure: () => import("./measure-D2qq5e8f.mjs").then((mod) => mod.default),
|
|
661
|
+
dependency: () => import("./dependency-DBUJwXqv.mjs").then((mod) => mod.default),
|
|
662
|
+
timeline: () => import("./timeline-CUzx6uXi.mjs").then((mod) => mod.default),
|
|
663
|
+
"timeline-event": () => import("./timeline-event-DpNm4dkn.mjs").then((mod) => mod.default),
|
|
664
|
+
eid: () => import("./eid-Dz-mP40j.mjs").then((mod) => mod.default),
|
|
665
|
+
query: () => import("./query-BJXTIDhy.mjs").then((mod) => mod.default),
|
|
666
|
+
uuid: () => import("./uuid-Blpv_e0S.mjs").then((mod) => mod.default),
|
|
667
|
+
upgrade: () => import("./upgrade-Tj_reACv.mjs").then((mod) => mod.default),
|
|
668
|
+
skills: () => import("./skills-DyiLycMY.mjs").then((mod) => mod.default)
|
|
421
669
|
}
|
|
422
670
|
});
|
|
423
671
|
setMetabaseAugment(main, {
|
|
@@ -590,6 +838,18 @@ function jsonByteLength(value) {
|
|
|
590
838
|
function isPlainObject(value) {
|
|
591
839
|
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
592
840
|
}
|
|
841
|
+
const JAVA_WHITESPACE = " \n\v\f\r \u2028\u2029 ";
|
|
842
|
+
const UNICODE_ESCAPE_DIGITS = 4;
|
|
843
|
+
function unicodeEscape(char) {
|
|
844
|
+
return `\\u${char.charCodeAt(0).toString(16).padStart(UNICODE_ESCAPE_DIGITS, "0")}`;
|
|
845
|
+
}
|
|
846
|
+
const JAVA_WHITESPACE_ESCAPED = [...JAVA_WHITESPACE].map(unicodeEscape).join("");
|
|
847
|
+
/** Matches a string Metabase reads as not blank: one holding a character that is not Java whitespace. */
|
|
848
|
+
const NOT_BLANK = new RegExp(`[^${JAVA_WHITESPACE_ESCAPED}]`);
|
|
849
|
+
/** Whether Metabase reads `value` as blank: empty, or Java whitespace only. */
|
|
850
|
+
function isBlank(value) {
|
|
851
|
+
return !NOT_BLANK.test(value);
|
|
852
|
+
}
|
|
593
853
|
//#endregion
|
|
594
854
|
//#region src/output/projection.ts
|
|
595
855
|
function projectForList(item, view, opts) {
|
|
@@ -682,7 +942,7 @@ function renderRows(head, rows) {
|
|
|
682
942
|
return table.toString();
|
|
683
943
|
}
|
|
684
944
|
function formatCell(row, column) {
|
|
685
|
-
const value = row[column.key];
|
|
945
|
+
const value = column.value === void 0 ? row[column.key] : column.value(row);
|
|
686
946
|
if (column.format !== void 0) return column.format(value);
|
|
687
947
|
return formatScalar(value);
|
|
688
948
|
}
|
|
@@ -825,7 +1085,6 @@ function exitCodeFor(category) {
|
|
|
825
1085
|
case "response-shape":
|
|
826
1086
|
case "timeout":
|
|
827
1087
|
case "internal":
|
|
828
|
-
case "failed":
|
|
829
1088
|
case "unknown": return FAILURE_EXIT_CODE;
|
|
830
1089
|
}
|
|
831
1090
|
}
|
|
@@ -891,6 +1150,11 @@ const FEATURE_RULES = {
|
|
|
891
1150
|
since: 63,
|
|
892
1151
|
tokenFeature: "remote_sync"
|
|
893
1152
|
},
|
|
1153
|
+
remoteSyncBranchGuard: { since: 63 },
|
|
1154
|
+
remoteSyncMerge: {
|
|
1155
|
+
since: 63,
|
|
1156
|
+
tokenFeature: "remote_sync"
|
|
1157
|
+
},
|
|
894
1158
|
contentTranslation: {
|
|
895
1159
|
since: 58,
|
|
896
1160
|
tokenFeature: "content_translation"
|
|
@@ -907,6 +1171,10 @@ const FEATURE_RULES = {
|
|
|
907
1171
|
transformJobRunIdIsNumeric: { since: 64 },
|
|
908
1172
|
transformCheckpointReset: { since: 60 },
|
|
909
1173
|
fieldDataSensitivity: { since: 64 },
|
|
1174
|
+
fieldRemappingAppendsDisplayColumns: {
|
|
1175
|
+
since: 58,
|
|
1176
|
+
until: 59
|
|
1177
|
+
},
|
|
910
1178
|
transformDagRuns: { since: 64 },
|
|
911
1179
|
unifiedTransformRuns: { since: 64 },
|
|
912
1180
|
transformTests: {
|
|
@@ -918,6 +1186,10 @@ const FEATURE_RULES = {
|
|
|
918
1186
|
invalidMbqlIsBadRequest: { since: 59 },
|
|
919
1187
|
boxplotDisplay: { since: 59 },
|
|
920
1188
|
nativeTableTemplateTag: { since: 59 },
|
|
1189
|
+
compiledQueryOmitsCollection: {
|
|
1190
|
+
since: 59,
|
|
1191
|
+
until: 62
|
|
1192
|
+
},
|
|
921
1193
|
smartLinkMeasureModel: { since: 60 },
|
|
922
1194
|
dashboardSubscriptionFilters: {
|
|
923
1195
|
since: 58,
|
|
@@ -931,15 +1203,22 @@ const FEATURE_RULES = {
|
|
|
931
1203
|
since: 59,
|
|
932
1204
|
tokenFeature: "dependencies"
|
|
933
1205
|
},
|
|
934
|
-
|
|
1206
|
+
dependencyAsyncBackfill: {
|
|
1207
|
+
since: 60,
|
|
1208
|
+
tokenFeature: "dependencies"
|
|
1209
|
+
},
|
|
1210
|
+
measureDependencyGraph: { since: 59 },
|
|
935
1211
|
tableListAccessFilters: { since: 59 },
|
|
936
1212
|
tableListTransformTargets: { since: 60 },
|
|
1213
|
+
tableListPublishedFilter: { since: 63 },
|
|
937
1214
|
tableUnusedFilter: {
|
|
938
1215
|
since: 58,
|
|
939
1216
|
tokenFeature: "dependencies"
|
|
940
1217
|
},
|
|
941
1218
|
tableDataLayerTiers: { since: 59 },
|
|
942
1219
|
bulkTableEdit: { since: 59 },
|
|
1220
|
+
tableUserValueWithdrawal: { since: 64 },
|
|
1221
|
+
bulkTableSync: { since: 59 },
|
|
943
1222
|
erd: {
|
|
944
1223
|
since: 62,
|
|
945
1224
|
tokenFeature: "schema-viewer"
|
|
@@ -963,7 +1242,8 @@ const FEATURE_RULES = {
|
|
|
963
1242
|
},
|
|
964
1243
|
metricDefinitionQuery: { since: 60 },
|
|
965
1244
|
metricDimensionListing: { since: 64 },
|
|
966
|
-
oauthFullAccessScope: { since: 63 }
|
|
1245
|
+
oauthFullAccessScope: { since: 63 },
|
|
1246
|
+
exportCsvByteOrderMark: { since: 63 }
|
|
967
1247
|
};
|
|
968
1248
|
function isFeatureName(name) {
|
|
969
1249
|
return Object.hasOwn(FEATURE_RULES, name);
|
|
@@ -1001,7 +1281,6 @@ const METHOD_REQUIREMENTS = {
|
|
|
1001
1281
|
"card.exportQuery": [],
|
|
1002
1282
|
"card.queryMetadata": [],
|
|
1003
1283
|
"collection.list": [],
|
|
1004
|
-
"collection.listWithLibrary": [],
|
|
1005
1284
|
"collection.get": [],
|
|
1006
1285
|
"collection.create": [],
|
|
1007
1286
|
"collection.update": [],
|
|
@@ -1045,6 +1324,7 @@ const METHOD_REQUIREMENTS = {
|
|
|
1045
1324
|
"erd.get": ["erd"],
|
|
1046
1325
|
"field.get": [],
|
|
1047
1326
|
"field.update": [],
|
|
1327
|
+
"field.setDataSensitivity": ["fieldDataSensitivity"],
|
|
1048
1328
|
"field.search": [],
|
|
1049
1329
|
"field.remapping": [],
|
|
1050
1330
|
"field.summary": [],
|
|
@@ -1064,6 +1344,7 @@ const METHOD_REQUIREMENTS = {
|
|
|
1064
1344
|
"gitSync.syncedCollections": ["remoteSync"],
|
|
1065
1345
|
"gitSync.remoteUrl": [],
|
|
1066
1346
|
"gitSync.branch": [],
|
|
1347
|
+
"gitSync.trackedBranch": [],
|
|
1067
1348
|
"gitSync.waitForTask": ["remoteSync"],
|
|
1068
1349
|
"glossary.list": [],
|
|
1069
1350
|
"glossary.create": [],
|
|
@@ -1127,7 +1408,11 @@ const METHOD_REQUIREMENTS = {
|
|
|
1127
1408
|
"table.fks": [],
|
|
1128
1409
|
"table.syncSchema": [],
|
|
1129
1410
|
"table.rescanValues": [],
|
|
1411
|
+
"table.discardValues": [],
|
|
1130
1412
|
"table.bulkEdit": ["bulkTableEdit"],
|
|
1413
|
+
"table.bulkSyncSchema": ["bulkTableSync"],
|
|
1414
|
+
"table.bulkRescanValues": ["bulkTableSync"],
|
|
1415
|
+
"table.bulkDiscardValues": ["bulkTableSync"],
|
|
1131
1416
|
"table.appendCsv": [],
|
|
1132
1417
|
"table.replaceCsv": [],
|
|
1133
1418
|
"timeline.list": [],
|
|
@@ -1464,7 +1749,9 @@ async function walkCommandPath(root, rawArgs) {
|
|
|
1464
1749
|
const match = await findSubCommand(subCommands, token);
|
|
1465
1750
|
if (match === null) return {
|
|
1466
1751
|
segments,
|
|
1467
|
-
unknownToken: token
|
|
1752
|
+
unknownToken: token,
|
|
1753
|
+
command: current,
|
|
1754
|
+
argsStart: index
|
|
1468
1755
|
};
|
|
1469
1756
|
segments.push(match.name);
|
|
1470
1757
|
current = match.command;
|
|
@@ -1472,7 +1759,17 @@ async function walkCommandPath(root, rawArgs) {
|
|
|
1472
1759
|
}
|
|
1473
1760
|
return {
|
|
1474
1761
|
segments,
|
|
1475
|
-
unknownToken: null
|
|
1762
|
+
unknownToken: null,
|
|
1763
|
+
command: current,
|
|
1764
|
+
argsStart: index
|
|
1765
|
+
};
|
|
1766
|
+
}
|
|
1767
|
+
async function resolveLeafArgv(root, rawArgs) {
|
|
1768
|
+
const path = await walkCommandPath(root, rawArgs);
|
|
1769
|
+
if (path.unknownToken !== null || await resolveCitty(path.command.subCommands) !== void 0) return null;
|
|
1770
|
+
return {
|
|
1771
|
+
argsDef: await resolveCitty(path.command.args) ?? {},
|
|
1772
|
+
argsStart: path.argsStart
|
|
1476
1773
|
};
|
|
1477
1774
|
}
|
|
1478
1775
|
async function resolveBreadcrumb(root, rawArgs) {
|
|
@@ -1483,16 +1780,11 @@ async function findUnknownCommand(root, rawArgs) {
|
|
|
1483
1780
|
return (await walkCommandPath(root, rawArgs)).unknownToken;
|
|
1484
1781
|
}
|
|
1485
1782
|
function skipFlags(rawArgs, start, argsDef) {
|
|
1486
|
-
|
|
1487
|
-
|
|
1488
|
-
|
|
1489
|
-
if (token === void 0) return index;
|
|
1490
|
-
if (token === "--") return rawArgs.length;
|
|
1491
|
-
if (!token.startsWith("-")) return index;
|
|
1492
|
-
if (flagConsumesValue(token, argsDef)) index += 1;
|
|
1493
|
-
index += 1;
|
|
1783
|
+
for (const item of readArgv(rawArgs, flagSpellings(argsDef), start)) {
|
|
1784
|
+
if (item.kind === "positional") return item.index;
|
|
1785
|
+
if (item.kind === "separator") return rawArgs.length;
|
|
1494
1786
|
}
|
|
1495
|
-
return
|
|
1787
|
+
return rawArgs.length;
|
|
1496
1788
|
}
|
|
1497
1789
|
async function findSubCommand(subCommands, token) {
|
|
1498
1790
|
const direct = subCommands[token];
|
|
@@ -1542,7 +1834,7 @@ const JSON_HELP_FLAG = "--json";
|
|
|
1542
1834
|
async function run() {
|
|
1543
1835
|
installInterruptHandler((code) => process.exit(code));
|
|
1544
1836
|
trustSystemCa();
|
|
1545
|
-
const rawArgs =
|
|
1837
|
+
const rawArgs = await normalizeArgv(process.argv.slice(2));
|
|
1546
1838
|
const wantsJsonHelp = rawArgs.includes(JSON_HELP_FLAG);
|
|
1547
1839
|
const showUsageWithBreadcrumb = async (cmd, parent) => {
|
|
1548
1840
|
const breadcrumb = await resolveBreadcrumb(main, rawArgs);
|
|
@@ -1568,8 +1860,15 @@ async function run() {
|
|
|
1568
1860
|
rawArgs
|
|
1569
1861
|
});
|
|
1570
1862
|
}
|
|
1863
|
+
async function normalizeArgv(argv) {
|
|
1864
|
+
const hoisted = hoistGlobalFlags(argv);
|
|
1865
|
+
const leaf = await resolveLeafArgv(main, hoisted);
|
|
1866
|
+
if (leaf === null) return hoisted;
|
|
1867
|
+
const leafArgs = separatePositionals(hoisted.slice(leaf.argsStart), leaf.argsDef);
|
|
1868
|
+
return [...hoisted.slice(0, leaf.argsStart), ...leafArgs];
|
|
1869
|
+
}
|
|
1571
1870
|
run().catch((error) => {
|
|
1572
1871
|
reportError(error);
|
|
1573
1872
|
});
|
|
1574
1873
|
//#endregion
|
|
1575
|
-
export {
|
|
1874
|
+
export { givenFlagKeys as $, ENV_API_KEY as A, name as B, isPlainObject as C, promptText as D, promptSelect as E, ENV_URL as F, listFlags as G, connectionFlags as H, consumeLegacyEnvWarnings as I, profileFlag as J, listFlagsWithDefaultLimit as K, readEnv as L, ENV_PROFILE as M, ENV_SKILLS_DIR as N, listTruncationNotice as O, ENV_SKIP_PREFLIGHT as P, assertArgv as Q, ProfileRefreshedError as R, isBlank as S, promptPassword as T, formatFlags as U, version as V, listFlag as W, listEnvelopeSchema as X, DEFAULT_MAX_BYTES as Y, listEnvelopeSchemaWithExtras as Z, MALFORMED_CELL as _, escapeJsonPointerSegment as _t, Features as a, ConfigError as at, projectForList as b, ruleGap as c, NetworkError as ct, renderList as d, UnknownError as dt, parseCsv as et, renderListWithExtras as f, ValidationError as ft, writeText as g, KNOWN_RANGE as gt, writeJson as h, isFileNotFoundError as ht, FEATURE_RULES as i, ChainedRequestError as it, ENV_DISABLE_KEYRING as j, warn as k, reportError as l, ResponseShapeError as lt, serializeJson as m, formatZodIssue as mt, methodRequirements as n, parseEnumCsv as nt, evaluateFeatures as o, InternalError as ot, renderSummary as p, errorMessage as pt, outputFlags as q, FEATURE_NAMES as r, AbortError as rt, isFeatureName as s, MetabaseError as st, interruptSignal as t, parseEnum as tt, renderItem as u, TimeoutError as ut, formatScalar as v, promptConfirm as w, NOT_BLANK as x, renderRows as y, setMetabaseAugment as z };
|