@metabase/cli 0.5.1 → 0.5.3
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/README.md +1 -1
- package/dist/{add-collection-BnGPc0Vv.mjs → add-collection-c1dfnavz.mjs} +4 -4
- package/dist/{alert-DQkF8jYR.mjs → alert-BkpPdBQ_.mjs} +6 -6
- package/dist/{alerts-BncG7w1_.mjs → alerts-TDYiIxjs.mjs} +3 -3
- package/dist/api-key-9jVV67hF.mjs +38 -0
- package/dist/api-key-DbsqHlN6.mjs +31 -0
- package/dist/api-key-wGtJ8kYy.mjs +13 -0
- package/dist/{append-D4ekYCuD.mjs → append-CoeZRD6u.mjs} +3 -3
- package/dist/{archive-ULXc3xzI.mjs → archive-3fdIvMsf.mjs} +2 -2
- package/dist/{archive-v08JESCM.mjs → archive-9uzfWGuq.mjs} +2 -2
- package/dist/{archive-BQ4OA-R4.mjs → archive-CAJHrKwd.mjs} +2 -2
- package/dist/{archive-DpCP4yR1.mjs → archive-CH1h8jz5.mjs} +2 -2
- package/dist/{archive-BifJXCHF.mjs → archive-D-BJwRLc.mjs} +2 -2
- package/dist/{archive-BXr9kFNz.mjs → archive-DQRehboT.mjs} +5 -5
- package/dist/{archive-DjHLWUfC.mjs → archive-DY76wU2k.mjs} +2 -2
- package/dist/{archive-EhW6blNc.mjs → archive-DZDkfhdH.mjs} +4 -4
- package/dist/{archive-D2WCz3Oe.mjs → archive-DxUnaV4x.mjs} +2 -2
- package/dist/{archive-DocyUIME.mjs → archive-N3lp1o-k.mjs} +4 -4
- package/dist/{archive-CxNUeWII2.mjs → archive-NfFWXRx5.mjs} +4 -4
- package/dist/{archive-DnCF-Ecm.mjs → archive-f7wKQ7Uy.mjs} +2 -2
- package/dist/{auth-BPbsm8yV.mjs → auth-hgkvHPpH.mjs} +4 -4
- package/dist/{body-BkkQkGJg.mjs → body-M5qsJoub.mjs} +2 -2
- package/dist/{branch-flag-CTDvbaBa.mjs → branch-flag-CPTQ4wXp.mjs} +1 -1
- package/dist/{branches-lPHtM_xR.mjs → branches-B3gHAanU.mjs} +2 -2
- package/dist/{breaking-DjMlCD96.mjs → breaking-DuWIof4T.mjs} +5 -5
- package/dist/{broken-DUX3GWS5.mjs → broken-D2ST8sTx.mjs} +7 -7
- package/dist/{bulk-discard-values-Dl8Lzypf.mjs → bulk-discard-values-77khEfpj.mjs} +4 -4
- package/dist/{bulk-edit-N2xLVtfG.mjs → bulk-edit-girwcjY6.mjs} +5 -5
- package/dist/{bulk-rescan-values-BK2rH2Ik.mjs → bulk-rescan-values-Df8KK8um.mjs} +4 -4
- package/dist/{bulk-sync-schema-BKJc9Rzq.mjs → bulk-sync-schema-DEPUZ6MN.mjs} +4 -4
- package/dist/{cancel-DzkRVGIk.mjs → cancel-Oek5PJnu.mjs} +2 -2
- package/dist/{cancel-task-BiTlDY7a.mjs → cancel-task-rkqY0qLU.mjs} +3 -3
- package/dist/{card-CQNUT9pm.mjs → card-3NmUiU5F.mjs} +1 -1
- package/dist/{card-BTBDBsu-.mjs → card-BWTjCE93.mjs} +8 -8
- package/dist/{card-P5mBknsl.mjs → card-QR3zEu6E.mjs} +39 -16
- package/dist/{cards-CSL8ukS1.mjs → cards-DWJOtZoN.mjs} +5 -5
- package/dist/cli.mjs +172 -37
- package/dist/{client-BBwYPXDW.mjs → client-BFP2Ssqu.mjs} +221 -39
- package/dist/{collection-B19phRNU.mjs → collection-9_mj8rVX.mjs} +7 -7
- package/dist/{collection-CTnYZ2Jj.mjs → collection-D5vt2IJ_.mjs} +1 -1
- package/dist/{collection-B2wRXyTF.mjs → collection-DNmFKALA.mjs} +1 -0
- package/dist/{collection-namespace-B1OkM7p1.mjs → collection-namespace-Dl8_7xII.mjs} +1 -1
- package/dist/{content-translation-DoGTQnvH.mjs → content-translation-B3oARbgD.mjs} +2 -2
- package/dist/{copy-BYukQEtf.mjs → copy-BzBp5FaY.mjs} +5 -5
- package/dist/{copy-XlCT3gvG.mjs → copy-C7Rc4qM7.mjs} +3 -3
- package/dist/{copy-flags-ByB2MicL.mjs → copy-flags-CTM91pxH.mjs} +2 -2
- package/dist/{create-T4PZPVE9.mjs → create-71_DODbc.mjs} +3 -3
- package/dist/{create-jr4xJgSI.mjs → create-BKRD11i-.mjs} +3 -3
- package/dist/{create-k1Bo7h7g.mjs → create-Bc4ADRmU.mjs} +2 -2
- package/dist/{create-Bnb1abv_.mjs → create-Bh3q3eHg.mjs} +5 -5
- package/dist/{create-3_oY9KHY.mjs → create-ByeGK_BE.mjs} +2 -2
- package/dist/{create-DZJQp3r7.mjs → create-C-2ivjed.mjs} +2 -2
- package/dist/{create-CLZ7w83R.mjs → create-C0gmhNnk.mjs} +3 -3
- package/dist/create-C3H9ljex.mjs +34 -0
- package/dist/{create-DxMmIHI4.mjs → create-CGE1D0Ay.mjs} +2 -2
- package/dist/{create-CbT4SPHV.mjs → create-CGxxztoE.mjs} +2 -2
- package/dist/{create-CYoarNrb.mjs → create-CfXKNnkK.mjs} +2 -2
- package/dist/{create-Bl9sS7v7.mjs → create-CjGEkSFz.mjs} +6 -6
- package/dist/{create-Cdt8u1wF.mjs → create-DO4ic4Kx.mjs} +5 -5
- package/dist/{create-BP39g5Jk.mjs → create-DQJ9h86G.mjs} +2 -2
- package/dist/{create-DBNxy5rN.mjs → create-YBDXZgyP.mjs} +2 -2
- package/dist/{create-D5_c5SHo.mjs → create-YIC3Q0a-.mjs} +2 -2
- package/dist/create-_rOCx5b8.mjs +38 -0
- package/dist/{create-branch-CUNFdKyB.mjs → create-branch-DBCBMDWh.mjs} +4 -4
- package/dist/{create-CqF7vqXC.mjs → create-f0bBEfDI.mjs} +4 -4
- package/dist/{create-B3fm5I-l2.mjs → create-myJ8HR4B.mjs} +4 -4
- package/dist/{create-CrtIqtXN.mjs → create-vgP9K2eH2.mjs} +4 -4
- package/dist/{csv-CcnhKpuj.mjs → csv-Dtgy7sTg.mjs} +3 -3
- package/dist/{current-task-nl2z8sHI.mjs → current-task-AwQisIT9.mjs} +3 -3
- package/dist/{dashboard-BP0p62fp.mjs → dashboard-BZV-0Qjp.mjs} +11 -11
- package/dist/{dashboard-Phz3XpRM.mjs → dashboard-Chjy5GKR.mjs} +52 -5
- package/dist/{dashboard-XSTr9QCr.mjs → dashboard-D5E3fMKh.mjs} +1 -1
- package/dist/{data-action-Cr17CfgE.mjs → data-action-B7kRpvCH.mjs} +7 -7
- package/dist/data-app-BIAvvV2P.mjs +41 -0
- package/dist/data-app-BUW-HlUo.mjs +52 -0
- package/dist/data-app-Blz61mG5.mjs +29 -0
- package/dist/data-app-project-BL4xpu_m.mjs +57 -0
- package/dist/{database-2HYCdHqK.mjs → database-CxykzTAA.mjs} +14 -3
- package/dist/{database-BewllGR7.mjs → database-D8XzgJEz.mjs} +19 -2
- package/dist/{dataset-D-x2Ho2i.mjs → dataset-DIQLAp2P.mjs} +5 -4
- package/dist/db-wsSYKqCB.mjs +25 -0
- package/dist/delete-4v4_lDwD.mjs +44 -0
- package/dist/{delete-BOma6qIq.mjs → delete-BHX_F8Qu.mjs} +3 -3
- package/dist/{delete-DulVnxD_.mjs → delete-BP9-YS-f.mjs} +3 -3
- package/dist/delete-BSgxmR3y.mjs +40 -0
- package/dist/{delete-BUCh72Bq.mjs → delete-BegkpIGi.mjs} +3 -3
- package/dist/{delete-xf2n7SNg.mjs → delete-D9FB7qjX.mjs} +3 -3
- package/dist/{delete-QHsiWYay.mjs → delete-DmM5L0wO.mjs} +3 -3
- package/dist/{delete-BrbmJ3sn.mjs → delete-E-g5b-HU.mjs} +3 -3
- package/dist/{delete-Oc2GE170.mjs → delete-WrV9I9uw.mjs} +3 -3
- package/dist/delete-runtime-CJ7gMYA1.mjs +72 -0
- package/dist/{delete-table-LgJ17t6j.mjs → delete-table-CJq8JM5J.mjs} +3 -3
- package/dist/{delete-BXMc-g3Q.mjs → delete-wnHUWWjX.mjs} +3 -3
- package/dist/{dependencies-BE5QW7Lb.mjs → dependencies-CnW3RSoZ.mjs} +3 -3
- package/dist/{dependency-qP1hx2YN.mjs → dependency-CaC6XuTY.mjs} +2 -2
- package/dist/{dependency-BlTYysYG.mjs → dependency-DDRGBlFL.mjs} +5 -5
- package/dist/{dependency-BACk_cVP.mjs → dependency-Dxvb2Znu.mjs} +1 -1
- package/dist/{dependents-mbgHQNiv.mjs → dependents-DHXqJ3lo.mjs} +8 -8
- package/dist/{dirty-fYlA1N1e.mjs → dirty-BRPWPUYH.mjs} +4 -4
- package/dist/{discard-values-cIRBP5nT.mjs → discard-values-DBHfVN8o.mjs} +4 -4
- package/dist/{document-BaRQ5fBd.mjs → document-BeLf7NqP.mjs} +6 -6
- package/dist/{download-CokVpeK6.mjs → download-BFu9xYHX.mjs} +1 -1
- package/dist/{eid-CaumGUFD.mjs → eid-eKmbXRds.mjs} +3 -4
- package/dist/{entity-BHYJtRxp.mjs → entity-DjDkaMkB.mjs} +2 -2
- package/dist/{entry-flags-DjICpQkc.mjs → entry-flags-Cxn09krz.mjs} +3 -3
- package/dist/{events-jEo9fytL.mjs → events-CZL9MU64.mjs} +3 -3
- package/dist/{execute-H09Qus4_.mjs → execute-DBJGtHHG.mjs} +3 -3
- package/dist/{export-flags-DzW0Ktkh.mjs → export-flags-CpukgETM.mjs} +13 -5
- package/dist/{export-preflight-Db_TChn5.mjs → export-preflight-SM9zJkBp.mjs} +4 -4
- package/dist/{export-YtdZo7LZ.mjs → export-xn_-NaBd.mjs} +24 -12
- package/dist/{field-wmN6raOG.mjs → field-BVz4AS3f.mjs} +1 -1
- package/dist/{field-DktidTPB.mjs → field-CQDz-6DK.mjs} +7 -7
- package/dist/{field-5nivEfd6.mjs → field-DoWQUl7V.mjs} +58 -45
- package/dist/{fields-DUXlosmx.mjs → fields-CB06GFBW.mjs} +5 -5
- package/dist/{filter-flags-DTDcU7OI.mjs → filter-flags-DhE4olyf.mjs} +4 -4
- package/dist/{fks-Cl2sq-c0.mjs → fks-CSoS7xZ6.mjs} +5 -5
- package/dist/{get-C_rjxpoe.mjs → get--1qTpTIQ.mjs} +4 -4
- package/dist/{get-BilMWiFq.mjs → get-B8xQXMU6.mjs} +2 -2
- package/dist/{get-okEsnkvC.mjs → get-B8xrmipw.mjs} +2 -2
- package/dist/{get-DPiNYmXo.mjs → get-BIf6eFWZ.mjs} +2 -2
- package/dist/{get-DtcChy9h.mjs → get-BQ7SAJEz.mjs} +2 -2
- package/dist/{get-XS-6R81E.mjs → get-BSPxmP_W.mjs} +4 -4
- package/dist/{get-zPMv3kZE.mjs → get-BW3jSR3y.mjs} +2 -2
- package/dist/{get-DyK_bvg6.mjs → get-BYAzIaGG.mjs} +2 -2
- package/dist/{get-Cg0up9gm.mjs → get-BZDUOZxI.mjs} +2 -2
- package/dist/{get-oQNL6pLY.mjs → get-BZFyqZXa.mjs} +2 -2
- package/dist/{get-CVMWhbA82.mjs → get-BfFZCiZR.mjs} +4 -4
- package/dist/get-Bq_9VSTa.mjs +28 -0
- package/dist/{get-FxCF0rxc.mjs → get-Bt4C-oxh.mjs} +2 -2
- package/dist/{get-GuWW4J24.mjs → get-C1rCVUYw.mjs} +3 -3
- package/dist/{get-CqlNUyFY.mjs → get-Cc4-e-Q_.mjs} +4 -4
- package/dist/{get-CTtzccwr.mjs → get-Cl-O6dFs.mjs} +3 -3
- package/dist/{get-Bt_zhviQ.mjs → get-CtDZOoWy.mjs} +5 -5
- package/dist/{get-CWyRAHpz.mjs → get-CuSwArMS.mjs} +5 -5
- package/dist/{get-CM596pmP.mjs → get-DIfjxTP8.mjs} +2 -2
- package/dist/{get-B-WT6ess.mjs → get-DePbMmjc.mjs} +5 -5
- package/dist/{get-DTDvlLT3.mjs → get-eZEHipwA.mjs} +2 -2
- package/dist/{get-DySyvotk2.mjs → get-jbOgdCQg.mjs} +2 -2
- package/dist/{get-run-CFGxSm_S.mjs → get-run-C-CNDbv3.mjs} +2 -2
- package/dist/{git-sync-Ch1V1fEK.mjs → git-sync-D1aKczo6.mjs} +15 -8
- package/dist/{git-sync-COokpYgc.mjs → git-sync-DP4wQFzm.mjs} +18 -1
- package/dist/git-sync-D_T9oNC6.mjs +29 -0
- package/dist/{glossary-BSgRQ2HO.mjs → glossary-BVK5DaLV.mjs} +4 -4
- package/dist/{graph-Wf4e0XIa.mjs → graph-CqBe2J4N.mjs} +5 -5
- package/dist/{has-remote-changes-BsS3XB0P.mjs → has-remote-changes-CDe1teSb.mjs} +3 -3
- package/dist/{import-CXd5HdB0.mjs → import-B64gjryF.mjs} +7 -7
- package/dist/{is-dirty-TDcfeOde.mjs → is-dirty-DhR3Xqjk.mjs} +1 -1
- package/dist/{items-BxvhoxYm.mjs → items-CLl2QgS8.mjs} +5 -5
- package/dist/{key-CUPbYxkk.mjs → key-BYEv4Wgq.mjs} +2 -2
- package/dist/{library-DzejNMqX.mjs → library-C3eO2J07.mjs} +4 -4
- package/dist/{library-BKSFtIV9.mjs → library-DKIqzyUk.mjs} +2 -2
- package/dist/{library-DuIrR8LS.mjs → library-wUiD2jbw.mjs} +1 -1
- package/dist/{list-DA1Fo6S6.mjs → list-B7Yvz5vA.mjs} +2 -2
- package/dist/{list-DlgjWr4r.mjs → list-BIqqh3A-.mjs} +2 -2
- package/dist/{list-CRXTfEFk.mjs → list-BiSwl56L.mjs} +2 -2
- package/dist/{list-DpK3ioES.mjs → list-BmvitCWZ.mjs} +5 -5
- package/dist/{list-D7yH-64Z.mjs → list-C3GBocvB.mjs} +4 -4
- package/dist/{list-B8V_OESj.mjs → list-C7TFreS8.mjs} +2 -2
- package/dist/{list-6nGX0Rqc.mjs → list-CA939qkn.mjs} +5 -5
- package/dist/list-CFaJA317.mjs +48 -0
- package/dist/{list-3Dh5yeq-.mjs → list-CdcFNphE.mjs} +2 -2
- package/dist/{list-DjlfBd7W.mjs → list-CjpZCiks.mjs} +2 -2
- package/dist/{list-B5kRBn7k.mjs → list-Cu6ET_yD.mjs} +4 -4
- package/dist/{list-BUjI5G0_.mjs → list-D4HNG282.mjs} +4 -4
- package/dist/{list-Ba7u5Ai9.mjs → list-DDPvxfhe.mjs} +5 -5
- package/dist/{list-Cr5Hoq-E.mjs → list-DLLzMaS3.mjs} +2 -2
- package/dist/{list-D_fsrh8w.mjs → list-DLwby7YA.mjs} +2 -2
- package/dist/{list-B3Pngm2j.mjs → list-D_IT8l9B.mjs} +2 -2
- package/dist/{list-CCCy6cBI.mjs → list-DpfOh8-5.mjs} +3 -3
- package/dist/{list-DsR58aMq.mjs → list-DrIcKxXX.mjs} +3 -3
- package/dist/{list-D1Q8H3jn.mjs → list-DyFu5Wx1.mjs} +3 -3
- package/dist/{list-Cf6A9Csi.mjs → list-DyQNRVAf.mjs} +2 -2
- package/dist/list-YFwmHXGG.mjs +33 -0
- package/dist/{list-Do-Xnz0I.mjs → list-eGlqXJno.mjs} +2 -2
- package/dist/list-s9_LlXCV.mjs +29 -0
- package/dist/{login-CXbCAcuB.mjs → login-Bg7Z3jDy.mjs} +15 -8
- package/dist/{logout-B6IGzkpG.mjs → logout-CAmp7DcS.mjs} +2 -2
- package/dist/{measure-CbMgNhlG.mjs → measure-C31HLp1C.mjs} +5 -5
- package/dist/{moderation-review-BdqEH6N1.mjs → moderation-review-Bf9bPNQI.mjs} +1 -1
- package/dist/{parameter-Celg0wZa.mjs → parameter-DvRQMKd2.mjs} +6 -6
- package/dist/{parameter-values-IWi_DNhp.mjs → parameter-values-3eHpqznI.mjs} +21 -7
- package/dist/{parse-enum-B2rGiC6p.mjs → parse-enum-DAcTzG1q.mjs} +1 -1
- package/dist/{parse-id-Cv5eM7sg.mjs → parse-id-5BZGQ9Vd.mjs} +1 -1
- package/dist/{parse-ref-DW7ik6ny.mjs → parse-ref-ByXc-pls.mjs} +1 -1
- package/dist/{parse-text-CUCSWOeR.mjs → parse-text-FgX60vIg.mjs} +1 -1
- package/dist/{path-C9r9urRK.mjs → path-XwdHlC23.mjs} +3 -3
- package/dist/{poll-CX3jPtXb.mjs → poll-CgtcJopL.mjs} +2 -2
- package/dist/{preflight-CiTgqNUy.mjs → preflight-ChTKhB8Y.mjs} +2 -2
- package/dist/{process-DImdroix.mjs → process-aqXm5QgC.mjs} +1 -1
- package/dist/{publish-xH1n74gd.mjs → publish-C2-pK0cf.mjs} +4 -4
- package/dist/{pulse-Dz0ocv0l.mjs → pulse-CC81N2_0.mjs} +1 -1
- package/dist/{pulse-CFj1WfIC.mjs → pulse-JPrq6NFP.mjs} +1 -1
- package/dist/{query-CN3BW5WB.mjs → query-DkaUzmMa.mjs} +12 -12
- package/dist/{query-BOCw0FBK.mjs → query-pmw23KkL.mjs} +17 -7
- package/dist/{remapping-Dggq2Fv0.mjs → remapping-C3htTzJn.mjs} +4 -4
- package/dist/{remove-collection-cxSSFxza.mjs → remove-collection-p_t9rUUX.mjs} +4 -4
- package/dist/{render-Cb8Hct67.mjs → render-C50k8-jc.mjs} +2 -2
- package/dist/{replace-wVi_XDut.mjs → replace-BQBuFJ1B.mjs} +3 -3
- package/dist/{requirement-check-BE3PuGsC.mjs → requirement-check-CpiVuL0H.mjs} +1 -1
- package/dist/{rescan-values-DAp_avxY.mjs → rescan-values-Ctq8wpkI.mjs} +4 -4
- package/dist/{rescan-values-C7b1Ghy-.mjs → rescan-values-DOqXJ3qH.mjs} +4 -4
- package/dist/{run-CUGs7mok.mjs → run-2xgPRuKR.mjs} +4 -4
- package/dist/{run-DywhwjNG.mjs → run-CtMbObQI.mjs} +4 -4
- package/dist/{run-CE6ei7s7.mjs → run-Dn3e8G4x.mjs} +2 -2
- package/dist/{runs--14jim_0.mjs → runs-CgNoQW6M.mjs} +3 -3
- package/dist/{runtime-Ckns6TKK.mjs → runtime-Y4VFWmmr.mjs} +63 -80
- package/dist/scaffold-BuL0_ptz.mjs +50 -0
- package/dist/{schema-tables-CeW0kpA5.mjs → schema-tables-BdXuo_lG.mjs} +5 -5
- package/dist/{schemas-CHMD0HrY.mjs → schemas-Dap3KFwY.mjs} +3 -3
- package/dist/{search-CXRavT7G.mjs → search-1et9tv_s.mjs} +21 -4
- package/dist/{search-LmBQu1Jg.mjs → search-DUmFK5Sy.mjs} +5 -5
- package/dist/{search-DyC54bGf.mjs → search-Dxcejw_v.mjs} +20 -5
- package/dist/{segment-DeT_Yic6.mjs → segment-CebcXn2E.mjs} +5 -5
- package/dist/{send-BWSJMrDL.mjs → send-DYdwcPTb.mjs} +2 -2
- package/dist/{set-active-C5cLG4_O.mjs → set-active-CVI_DDQi.mjs} +2 -2
- package/dist/set-bundle-DX5HqDji.mjs +40 -0
- package/dist/set-data-actions-DAI1XCQ2.mjs +46 -0
- package/dist/set-enabled-0QI-CHAT.mjs +41 -0
- package/dist/{set-sensitivity-BMLKazua.mjs → set-sensitivity-DqGkiLSr.mjs} +5 -5
- package/dist/{set-r2xiXrT_.mjs → set-xs8Vyvy2.mjs} +3 -3
- package/dist/{setting-CDRusiqP.mjs → setting-Bmry-y_l.mjs} +3 -3
- package/dist/{setup-BZaJVww3.mjs → setup-UM8N9Vh3.mjs} +2 -2
- package/dist/{signal-4tpCIkqR.mjs → signal-D8MH3LMN.mjs} +1 -1
- package/dist/{skills-9ihLaSmM.mjs → skills-BiSfuDqA.mjs} +3 -3
- package/dist/{skills-y2iVfW9k.mjs → skills-CcLTm3_2.mjs} +2 -2
- package/dist/slug-qeARO25o.mjs +15 -0
- package/dist/{snippet-Ce0o33Rj.mjs → snippet-DKARah-L.mjs} +5 -5
- package/dist/{stash-Dj-mnIa4.mjs → stash-e5cSvnj3.mjs} +6 -6
- package/dist/{status-BtWz7Pzn.mjs → status-BHiO3YBe.mjs} +36 -15
- package/dist/{status-B2Xj_q8f.mjs → status-CH7BAWGe.mjs} +2 -2
- package/dist/{subscription-Dh--agqE.mjs → subscription-DWleULhN.mjs} +5 -5
- package/dist/{subscriptions-CJ8Jdp9A.mjs → subscriptions-DcCOA2p1.mjs} +4 -4
- package/dist/{summary-ccbkNDbC.mjs → summary-CipFA6M6.mjs} +4 -4
- package/dist/{sync-schema-CewUOkmm.mjs → sync-schema-C45WO4db.mjs} +5 -5
- package/dist/{sync-schema-HwQectZd.mjs → sync-schema-D7p-P8F6.mjs} +4 -4
- package/dist/{sync-task-DEzhiaU9.mjs → sync-task-DNKG9Bk4.mjs} +2 -2
- package/dist/{table-CFZU-BRg.mjs → table-BDsqRU7a.mjs} +2 -2
- package/dist/table-BPYHnzyV.mjs +26 -0
- package/dist/{table-zAdW5_3H.mjs → table-CF7zW9cI.mjs} +33 -20
- package/dist/{table-selector-flags-p4jun7-v.mjs → table-selector-flags-CHfrVpYQ.mjs} +3 -3
- package/dist/{timeline-DLaBypse.mjs → timeline-C2m_QHxn.mjs} +7 -7
- package/dist/{timeline-event-xAAR6b-v.mjs → timeline-event-BF1dqSnD.mjs} +5 -5
- package/dist/transform-N_elgRuh.mjs +28 -0
- package/dist/transform-job-CTV6KRP2.mjs +22 -0
- package/dist/{transform-tag-BXusFzMX.mjs → transform-tag-BYoguZfW.mjs} +4 -4
- package/dist/{transform-test-UsH1udc4.mjs → transform-test-jaBpHOM5.mjs} +6 -6
- package/dist/{transforms-CqV01bMM.mjs → transforms-C6MFnT4C.mjs} +3 -3
- package/dist/{transport-0qFZhEuP.mjs → transport-k_fabWdF.mjs} +4 -4
- package/dist/{tree-Td6rgyOa.mjs → tree-C4Igf6xs.mjs} +3 -3
- package/dist/typed-schema-Bo0Q6C0S.mjs +45 -0
- package/dist/{unpublish-D4XTZsFW.mjs → unpublish-EStytsEm.mjs} +2 -2
- package/dist/{unreferenced-cR-l4zXN.mjs → unreferenced-DtUuyBrr.mjs} +5 -5
- package/dist/{update-C8xdeYI2.mjs → update-B0Na11v-.mjs} +5 -5
- package/dist/{update-C7Wmom6x.mjs → update-B1UXRPN-.mjs} +7 -7
- package/dist/{update-dQeji6RA.mjs → update-BOg1jZ_s.mjs} +5 -5
- package/dist/{update-CpwWURTp.mjs → update-BXLY92om.mjs} +4 -4
- package/dist/{update-DrVc25R8.mjs → update-Bba_zPSE.mjs} +4 -4
- package/dist/{update-C4iu-vQm.mjs → update-BogvN2Mb.mjs} +3 -3
- package/dist/{update-nGURR-y6.mjs → update-CCLpNTPa.mjs} +3 -3
- package/dist/{update-CHB4kvz-.mjs → update-CciLWH_s.mjs} +7 -8
- package/dist/{update-BqkqMOVN.mjs → update-DAG8m5f4.mjs} +5 -5
- package/dist/{update-Dk0E66Va.mjs → update-DECiEVlk.mjs} +7 -7
- package/dist/update-DIBaY-fy.mjs +37 -0
- package/dist/{update-C7dZLbsf.mjs → update-DT2ViMFr.mjs} +3 -3
- package/dist/{update-CND9At61.mjs → update-DT8U29Kk.mjs} +3 -3
- package/dist/{update-Js0IiqCq.mjs → update-DhgfReDD.mjs} +5 -5
- package/dist/{update-DFK2iUSP.mjs → update-DkvIK-eL.mjs} +3 -3
- package/dist/{update-DZHgr6Gu.mjs → update-FfeHReec.mjs} +4 -4
- package/dist/{update-BJL5975i.mjs → update-HbggUPuy.mjs} +3 -3
- package/dist/{update-D-cTgmb0.mjs → update-VGgvQu7W.mjs} +3 -3
- package/dist/{update-dashcard-BmkfJ7t9.mjs → update-dashcard-m-hkIGUu.mjs} +6 -6
- package/dist/{update-DROjGe3Q.mjs → update-pk0b6vXU.mjs} +3 -3
- package/dist/{update-DqCZsbLh.mjs → update-z8ZGCg1r.mjs} +3 -3
- package/dist/{upgrade-B6V_1cUh.mjs → upgrade-iETJ8fH2.mjs} +4 -4
- package/dist/{upload-B6zBzMPW.mjs → upload-BF5pdKRN.mjs} +3 -3
- package/dist/{upload-CfYmBv51.mjs → upload-CoK5LnyA.mjs} +2 -2
- package/dist/{upload-Dvjfz16M.mjs → upload-CqSGEZQW.mjs} +3 -3
- package/dist/{uuid-B8ynbkqG.mjs → uuid-8Ha-8bDX.mjs} +2 -2
- package/dist/{validate-C7DGkwb-.mjs → validate-BQ7vI8_x.mjs} +1 -1
- package/dist/{validate-query-CYUvRvVM.mjs → validate-query-YtH3d5BP.mjs} +2 -2
- package/dist/{values-36bzf9cK.mjs → values-BsgA7-6h.mjs} +4 -4
- package/dist/{verify-C4Tml4fD.mjs → verify-CzBZbP4W.mjs} +4 -4
- package/dist/{verify-BdW-GExk.mjs → verify-cjUPMF_B.mjs} +4 -4
- package/dist/{verify-Cs9e28YA.mjs → verify-crIrbGZV.mjs} +3 -3
- package/dist/{verify-flags-CMpRkMPa.mjs → verify-flags-DEVMB9w0.mjs} +1 -1
- package/dist/{wait-flags-DjyK03cm.mjs → wait-flags-BnZ-dfE2.mjs} +2 -2
- package/dist/{wait-BV6JOdgi.mjs → wait-mFUfpSaj.mjs} +5 -5
- package/package.json +2 -2
- package/skill-data/core/SKILL.md +1 -1
- package/skill-data/data-action/SKILL.md +18 -7
- package/skill-data/data-app/SKILL.md +138 -0
- package/skill-data/data-app/template/.env.local.example +2 -0
- package/skill-data/data-app/template/LICENSE +21 -0
- package/skill-data/data-app/template/README.md +29 -0
- package/skill-data/data-app/template/gitignore +5 -0
- package/skill-data/data-app/template/package.json +25 -0
- package/skill-data/data-app/template/src/App.tsx +9 -0
- package/skill-data/data-app/template/src/index.tsx +14 -0
- package/skill-data/data-app/template/src/theme.ts +25 -0
- package/skill-data/data-app/template/tsconfig.json +25 -0
- package/skill-data/data-app/template/vite.config.ts +3 -0
- package/skill-data/data-app-actions/SKILL.md +96 -0
- package/skill-data/data-app-data/SKILL.md +158 -0
- package/skill-data/data-app-filters/SKILL.md +87 -0
- package/skill-data/data-app-ui/SKILL.md +120 -0
- package/skill-data/git-sync/SKILL.md +3 -3
- package/skill-data/transform/SKILL.md +1 -1
- package/dist/db-m5bQcXdn.mjs +0 -24
- package/dist/delete-runtime-CkNvZfFA.mjs +0 -55
- package/dist/embedding-i-KqpefC.mjs +0 -9
- package/dist/git-sync-BwkWeJAz.mjs +0 -29
- package/dist/input-AXP2LCOV.mjs +0 -61
- package/dist/list-CUj04tg3.mjs +0 -38
- package/dist/table-P9ovwcaB.mjs +0 -26
- package/dist/transform-10YE8j5K.mjs +0 -28
- package/dist/transform-job-D97AutnF.mjs +0 -22
|
@@ -1,27 +1,12 @@
|
|
|
1
|
-
import { $ as parseJsonResult, A as ENV_URL, B as Features, C as preflightUncheckedNotice,
|
|
1
|
+
import { $ as parseJsonResult, A as ENV_URL, B as Features, C as preflightUncheckedNotice, E as ENV_DISABLE_KEYRING, Et as NetworkError, Ft as isNonInterruptFailure, It as KNOWN_RANGE, K as isRetryableStatus, M as readEnv, Mt as errorMessage, N as ProfileRefreshedError, Ot as ResponseShapeError, Pt as isFileNotFoundError, S as preflightSkippedNotice, St as ConfigError, T as ENV_API_KEY, U as ruleGap, V as evaluateFeatures, W as HttpError, X as JSON_CONTENT_TYPE, _t as givenFlagKeys, dt as resolveOutputFormat, et as setMetabaseAugment, gt as assertArgv, i as reportError, j as consumeLegacyEnvWarnings, jt as ValidationError, kt as TimeoutError, nt as version, r as methodRequirements, t as interruptSignal, ut as resolveCommonFlags, w as warn, z as FEATURE_RULES } from "./cli.mjs";
|
|
2
2
|
import { defineCommand } from "citty";
|
|
3
3
|
import { z } from "zod";
|
|
4
|
+
import { readFile } from "node:fs/promises";
|
|
5
|
+
import { setTimeout } from "node:timers/promises";
|
|
4
6
|
import { Entry } from "@napi-rs/keyring";
|
|
5
7
|
import { promises } from "node:fs";
|
|
6
8
|
import { dirname, join } from "node:path";
|
|
7
9
|
import { homedir } from "node:os";
|
|
8
|
-
//#region src/commands/parse-integer.ts
|
|
9
|
-
const INTEGER_PATTERN = /^-?\d+$/;
|
|
10
|
-
function parseInteger(value, options) {
|
|
11
|
-
const trimmed = value.trim();
|
|
12
|
-
if (!INTEGER_PATTERN.test(trimmed)) {
|
|
13
|
-
const expected = options.expected ?? "integer";
|
|
14
|
-
throw new ConfigError(`invalid ${options.name}: "${value}" (expected ${expected})`);
|
|
15
|
-
}
|
|
16
|
-
const parsed = Number.parseInt(trimmed, 10);
|
|
17
|
-
if (parsed < options.min) throw new ConfigError(`invalid ${options.name}: ${parsed} (must be ≥ ${options.min})`);
|
|
18
|
-
return parsed;
|
|
19
|
-
}
|
|
20
|
-
function parseOptionalInteger(value, options) {
|
|
21
|
-
if (value === void 0) return null;
|
|
22
|
-
return parseInteger(value, options);
|
|
23
|
-
}
|
|
24
|
-
//#endregion
|
|
25
10
|
//#region ../client/src/domain/session-properties.ts
|
|
26
11
|
const ServerVersion$1 = z.object({
|
|
27
12
|
tag: z.string(),
|
|
@@ -610,6 +595,63 @@ async function revokeOAuthCredential(baseUrl, credential, userAgent) {
|
|
|
610
595
|
return true;
|
|
611
596
|
}
|
|
612
597
|
//#endregion
|
|
598
|
+
//#region src/runtime/input.ts
|
|
599
|
+
const DEFAULT_FLAG_NAME = "--body";
|
|
600
|
+
const SOURCE_LIST = `${DEFAULT_FLAG_NAME}, --file, stdin, or a positional argument`;
|
|
601
|
+
/** The value of a string flag, or `null` when it was left out or passed empty. */
|
|
602
|
+
function givenValue(value) {
|
|
603
|
+
return value === void 0 || value === "" ? null : value;
|
|
604
|
+
}
|
|
605
|
+
async function readInput(sources) {
|
|
606
|
+
if (sources.flag) return sources.flag;
|
|
607
|
+
if (sources.file) return await readFileSource(sources.file);
|
|
608
|
+
if (!process.stdin.isTTY) {
|
|
609
|
+
const piped = await readPipedStdin();
|
|
610
|
+
if (piped) return piped;
|
|
611
|
+
}
|
|
612
|
+
if (sources.positional) return sources.positional;
|
|
613
|
+
if (sources.required ?? true) throw new ConfigError(`input required: provide one of ${SOURCE_LIST}`);
|
|
614
|
+
return "";
|
|
615
|
+
}
|
|
616
|
+
async function readFileSource(path) {
|
|
617
|
+
if (path === "-") return await drainStdin();
|
|
618
|
+
try {
|
|
619
|
+
return await readFile(path, "utf8");
|
|
620
|
+
} catch (error) {
|
|
621
|
+
if (isFileNotFoundError(error)) throw fileNotFoundError(path);
|
|
622
|
+
throw error;
|
|
623
|
+
}
|
|
624
|
+
}
|
|
625
|
+
function fileNotFoundError(path) {
|
|
626
|
+
return new ConfigError(`--file not found: ${path}`);
|
|
627
|
+
}
|
|
628
|
+
async function drainStdin() {
|
|
629
|
+
let data = "";
|
|
630
|
+
for await (const chunk of process.stdin) data += chunk;
|
|
631
|
+
return data;
|
|
632
|
+
}
|
|
633
|
+
const STDIN_FIRST_CHUNK_TIMEOUT_MS = 500;
|
|
634
|
+
const STDIN_IDLE = Symbol("stdin-idle");
|
|
635
|
+
async function readPipedStdin() {
|
|
636
|
+
const iterator = process.stdin[Symbol.asyncIterator]();
|
|
637
|
+
const controller = new AbortController();
|
|
638
|
+
const idle = setTimeout(STDIN_FIRST_CHUNK_TIMEOUT_MS, STDIN_IDLE, { signal: controller.signal }).catch(() => STDIN_IDLE);
|
|
639
|
+
const first = await Promise.race([iterator.next(), idle]);
|
|
640
|
+
if (typeof first === "symbol") {
|
|
641
|
+
process.stdin.pause();
|
|
642
|
+
process.stdin.unref();
|
|
643
|
+
return null;
|
|
644
|
+
}
|
|
645
|
+
controller.abort();
|
|
646
|
+
let data = "";
|
|
647
|
+
let chunk = first;
|
|
648
|
+
while (chunk.done !== true) {
|
|
649
|
+
data += chunk.value;
|
|
650
|
+
chunk = await iterator.next();
|
|
651
|
+
}
|
|
652
|
+
return data;
|
|
653
|
+
}
|
|
654
|
+
//#endregion
|
|
613
655
|
//#region src/core/user-agent.ts
|
|
614
656
|
const USER_AGENT = `metabase-cli/${version}`;
|
|
615
657
|
const OAUTH_CLIENT_NAME = "Metabase CLI";
|
|
@@ -1012,6 +1054,7 @@ function readEnvCredentials() {
|
|
|
1012
1054
|
};
|
|
1013
1055
|
}
|
|
1014
1056
|
async function resolveConfig(flags) {
|
|
1057
|
+
if (flags.apiKey === "-") throw new ConfigError(`--api-key - reads stdin only for \`mb auth login\`; log in a profile or set ${ENV_API_KEY} instead`);
|
|
1015
1058
|
const profile = resolveProfileName(flags.profile);
|
|
1016
1059
|
const env = readEnvCredentials();
|
|
1017
1060
|
const hasUrl = Boolean(flags.url ?? env.url);
|
|
@@ -1139,66 +1182,6 @@ async function readCachedServerProfile(profileName) {
|
|
|
1139
1182
|
};
|
|
1140
1183
|
}
|
|
1141
1184
|
//#endregion
|
|
1142
|
-
//#region src/output/format.ts
|
|
1143
|
-
function resolveFormat({ json, format, isTty }) {
|
|
1144
|
-
const explicit = format !== void 0 && format !== "auto" ? format : null;
|
|
1145
|
-
if (explicit !== null && explicit !== "json" && explicit !== "text") throw new ConfigError(`invalid --format value: "${explicit}" (expected: auto, json, text)`);
|
|
1146
|
-
if (json && explicit !== null && explicit !== "json") throw new ConfigError(`--json conflicts with --format ${explicit}`);
|
|
1147
|
-
if (json) return "json";
|
|
1148
|
-
if (explicit !== null) return explicit;
|
|
1149
|
-
return isTty ? "text" : "json";
|
|
1150
|
-
}
|
|
1151
|
-
//#endregion
|
|
1152
|
-
//#region src/commands/context.ts
|
|
1153
|
-
function resolveOutputFormat(args, options = {}) {
|
|
1154
|
-
return resolveFormat({
|
|
1155
|
-
json: args.json,
|
|
1156
|
-
format: args.format,
|
|
1157
|
-
isTty: options.isTty ?? Boolean(process.stdout.isTTY)
|
|
1158
|
-
});
|
|
1159
|
-
}
|
|
1160
|
-
function resolveCommonFlags(args, options = {}) {
|
|
1161
|
-
const fields = parseFields(args.fields);
|
|
1162
|
-
const full = args.full === true;
|
|
1163
|
-
if (full && fields !== void 0) throw new ConfigError("--full conflicts with --fields (use one or neither)");
|
|
1164
|
-
return {
|
|
1165
|
-
format: resolveOutputFormat(args, options),
|
|
1166
|
-
full,
|
|
1167
|
-
fields,
|
|
1168
|
-
maxBytes: parseMaxBytes(args.maxBytes),
|
|
1169
|
-
maxBytesGiven: args.maxBytes !== void 0,
|
|
1170
|
-
range: parseRange(args.limit, args.offset),
|
|
1171
|
-
url: args.url,
|
|
1172
|
-
apiKey: args.apiKey,
|
|
1173
|
-
profile: args.profile,
|
|
1174
|
-
skipPreflight: args.skipPreflight
|
|
1175
|
-
};
|
|
1176
|
-
}
|
|
1177
|
-
function parseFields(value) {
|
|
1178
|
-
if (value === void 0 || value === "") return;
|
|
1179
|
-
const parts = parseCsv(value);
|
|
1180
|
-
return parts.length > 0 ? parts : void 0;
|
|
1181
|
-
}
|
|
1182
|
-
function parseMaxBytes(value) {
|
|
1183
|
-
return parseInteger(value ?? String(24576), {
|
|
1184
|
-
name: "--max-bytes",
|
|
1185
|
-
min: 0
|
|
1186
|
-
});
|
|
1187
|
-
}
|
|
1188
|
-
function parseRange(limit, offset) {
|
|
1189
|
-
const parsedLimit = parseOptionalInteger(limit, {
|
|
1190
|
-
name: "--limit",
|
|
1191
|
-
min: 1
|
|
1192
|
-
});
|
|
1193
|
-
return {
|
|
1194
|
-
offset: parseInteger(offset ?? "0", {
|
|
1195
|
-
name: "--offset",
|
|
1196
|
-
min: 0
|
|
1197
|
-
}),
|
|
1198
|
-
limit: parsedLimit === null ? void 0 : parsedLimit
|
|
1199
|
-
};
|
|
1200
|
-
}
|
|
1201
|
-
//#endregion
|
|
1202
1185
|
//#region src/commands/runtime.ts
|
|
1203
1186
|
function defineMetabaseCommand(def) {
|
|
1204
1187
|
const requirements = def.requires === null ? null : deriveRequirements(def.requires);
|
|
@@ -1229,7 +1212,7 @@ function defineMetabaseCommand(def) {
|
|
|
1229
1212
|
const probe = await readCachedProbe(resolved.profile, resolved.url);
|
|
1230
1213
|
const server = probe === null ? null : createServerProfile(probe);
|
|
1231
1214
|
const saveProbe = probe === null ? null : createProbeSaver(resolved.profile, probe);
|
|
1232
|
-
const { createClient } = await import("./client-
|
|
1215
|
+
const { createClient } = await import("./client-BFP2Ssqu.mjs").then((n) => n.t);
|
|
1233
1216
|
const client = createClient({
|
|
1234
1217
|
url: resolved.url,
|
|
1235
1218
|
credential: resolved.credential
|
|
@@ -1399,4 +1382,4 @@ function buildConfigFlags(ctx) {
|
|
|
1399
1382
|
return flags;
|
|
1400
1383
|
}
|
|
1401
1384
|
//#endregion
|
|
1402
|
-
export {
|
|
1385
|
+
export { featureGap as $, revokeOAuthCredential as A, probeServer as B, profileAuthMethod as C, fileNotFoundError as D, DEFAULT_FLAG_NAME as E, tryDiscoverMetadata as F, credentialSecrets as G, serverInfoFromProperties as H, buildNetworkError as I, normalizeUrl as J, oauthCredentialFromTokens as K, isConnectionClosed as L, discoverLoginMetadata as M, exchangeCode as N, givenValue as O, registerClient as P, createServerProfile as Q, PROBE_PATH as R, ProfileLastFailure as S, USER_AGENT as T, assertCredentialHeaderSafe as U, profileFromProperties as V, credentialAuthHeader as W, summarizeServer as X, ServerSummary as Y, Skew as Z, writeProbeFailure as _, readEnvCredentials as a, ProbedUser as b, clearProfile as c, keyringFallbackWarning as d, describeVersion as et, listProfileRecords as f, writeOAuthProfile as g, resolveRecordCredential as h, explicitProfileName as i, OAUTH_SCOPE as j, readInput as k, consumeKeychainResidualWarning as l, readProfileRecord as m, readCachedServerProfile as n, resolveProfileName as o, readProfileCredential as p, displayUrl as q, createCredentialRefresher as r, DEFAULT_PROFILE as s, defineMetabaseCommand as t, SessionProperties as tt, consumeKeyringDowngradeWarning as u, writeProbeResult as v, OAUTH_CLIENT_NAME as w, ProfileAuthMethod as x, writeProfile as y, probeBudget as z };
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { c as renderSummary, ct as outputFlags } from "./cli.mjs";
|
|
2
|
+
import { t as defineMetabaseCommand } from "./runtime-Y4VFWmmr.mjs";
|
|
3
|
+
import { n as findSkillByName, r as loadAllSkills } from "./skills-CcLTm3_2.mjs";
|
|
4
|
+
import { r as scaffoldDataAppProject } from "./data-app-project-BL4xpu_m.mjs";
|
|
5
|
+
import { z } from "zod";
|
|
6
|
+
import { join } from "node:path";
|
|
7
|
+
//#region src/commands/data-app/scaffold.ts
|
|
8
|
+
const TEMPLATE_SKILL = "data-app";
|
|
9
|
+
const TEMPLATE_DIR = "template";
|
|
10
|
+
const ScaffoldResult = z.object({ dir: z.string() });
|
|
11
|
+
const scaffoldResultView = {
|
|
12
|
+
compactPick: ScaffoldResult,
|
|
13
|
+
tableColumns: [{
|
|
14
|
+
key: "dir",
|
|
15
|
+
label: "Directory"
|
|
16
|
+
}]
|
|
17
|
+
};
|
|
18
|
+
var scaffold_default = defineMetabaseCommand({
|
|
19
|
+
meta: {
|
|
20
|
+
name: "scaffold",
|
|
21
|
+
description: "Copy the data app project template into a directory"
|
|
22
|
+
},
|
|
23
|
+
details: "Copies the Vite + React + TypeScript template into <dir> (the current directory by default), which must be missing or empty, and names the package after the directory (lowercase, dashes). It doesn't reach Metabase: create the app with `mb data-app create` and fetch its queries and actions with `mb data-app typed-schema <slug> --out src/metabase.ts`. Before `npm install`, install the SDK's beta tag for the instance's version, e.g. `npm install @metabase/embedding-sdk-react@66-beta` for v1.66.x: the template's `*` installs `latest`, which may not build the app.",
|
|
24
|
+
skills: [{
|
|
25
|
+
skill: "data-app",
|
|
26
|
+
purpose: "the steps after scaffolding"
|
|
27
|
+
}],
|
|
28
|
+
requires: null,
|
|
29
|
+
args: {
|
|
30
|
+
...outputFlags,
|
|
31
|
+
dir: {
|
|
32
|
+
type: "positional",
|
|
33
|
+
description: "Project directory",
|
|
34
|
+
required: false,
|
|
35
|
+
default: "."
|
|
36
|
+
}
|
|
37
|
+
},
|
|
38
|
+
outputSchema: ScaffoldResult,
|
|
39
|
+
examples: ["mb data-app scaffold sales-overview", "mb data-app scaffold ."],
|
|
40
|
+
async run({ args, ctx }) {
|
|
41
|
+
const templateDir = join(findSkillByName(loadAllSkills(), TEMPLATE_SKILL).dir, TEMPLATE_DIR);
|
|
42
|
+
await scaffoldDataAppProject({
|
|
43
|
+
dir: args.dir,
|
|
44
|
+
templateDir
|
|
45
|
+
});
|
|
46
|
+
renderSummary({ dir: args.dir }, scaffoldResultView, `Scaffolded a data app project in ${args.dir}.`, ctx);
|
|
47
|
+
}
|
|
48
|
+
});
|
|
49
|
+
//#endregion
|
|
50
|
+
export { scaffold_default as default };
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { ct as outputFlags,
|
|
2
|
-
import { t as
|
|
3
|
-
import { t as
|
|
1
|
+
import { ct as outputFlags, lt as profileFlag, mt as listEnvelopeSchema, o as renderList, ot as listFlags, rt as connectionFlags } from "./cli.mjs";
|
|
2
|
+
import { t as parseId } from "./parse-id-5BZGQ9Vd.mjs";
|
|
3
|
+
import { t as defineMetabaseCommand } from "./runtime-Y4VFWmmr.mjs";
|
|
4
4
|
import { n as windowList } from "./window-CfK_j6m1.mjs";
|
|
5
|
-
import { a as TableCompact } from "./table-
|
|
6
|
-
import { u as tableView } from "./table-
|
|
5
|
+
import { a as TableCompact } from "./table-CF7zW9cI.mjs";
|
|
6
|
+
import { u as tableView } from "./table-BDsqRU7a.mjs";
|
|
7
7
|
//#region src/commands/db/schema-tables.ts
|
|
8
8
|
const DatabaseSchemaTablesEnvelope = listEnvelopeSchema(TableCompact);
|
|
9
9
|
var schema_tables_default = defineMetabaseCommand({
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { ct as outputFlags,
|
|
2
|
-
import { t as
|
|
3
|
-
import { t as
|
|
1
|
+
import { ct as outputFlags, lt as profileFlag, mt as listEnvelopeSchema, o as renderList, ot as listFlags, rt as connectionFlags } from "./cli.mjs";
|
|
2
|
+
import { t as parseId } from "./parse-id-5BZGQ9Vd.mjs";
|
|
3
|
+
import { t as defineMetabaseCommand } from "./runtime-Y4VFWmmr.mjs";
|
|
4
4
|
import { n as windowList } from "./window-CfK_j6m1.mjs";
|
|
5
5
|
import { z } from "zod";
|
|
6
6
|
//#region src/commands/db/schemas.ts
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { i as ModerationStatus } from "./moderation-review-Bf9bPNQI.mjs";
|
|
1
2
|
import { z } from "zod";
|
|
2
3
|
//#region ../client/src/domain/search.ts
|
|
3
4
|
const SEARCH_MODELS = [
|
|
@@ -27,20 +28,36 @@ const SearchResultCollection = z.object({
|
|
|
27
28
|
authority_level: z.string().nullable(),
|
|
28
29
|
type: z.string().nullable()
|
|
29
30
|
}).loose();
|
|
31
|
+
const SearchResultDashboard = z.object({
|
|
32
|
+
id: z.number().int(),
|
|
33
|
+
name: z.string()
|
|
34
|
+
}).loose();
|
|
30
35
|
const SearchResult = z.object({
|
|
31
36
|
id: z.union([z.number().int(), z.string()]),
|
|
32
37
|
name: z.string(),
|
|
33
38
|
model: SearchModel,
|
|
34
|
-
description: z.string().nullable(),
|
|
39
|
+
description: z.string().nullable().optional(),
|
|
35
40
|
archived: z.boolean().nullable(),
|
|
36
41
|
collection: SearchResultCollection.nullable(),
|
|
37
|
-
result_metadata: z.array(z.unknown()).nullable().optional()
|
|
42
|
+
result_metadata: z.array(z.unknown()).nullable().optional(),
|
|
43
|
+
database_id: z.number().int().nullable().optional(),
|
|
44
|
+
database_name: z.string().nullable().optional(),
|
|
45
|
+
table_schema: z.string().nullable().optional(),
|
|
46
|
+
table_name: z.string().nullable().optional(),
|
|
47
|
+
moderated_status: ModerationStatus.nullable().optional(),
|
|
48
|
+
dashboard: SearchResultDashboard.nullable().optional()
|
|
38
49
|
}).loose();
|
|
39
50
|
const SearchResultCompact = SearchResult.pick({
|
|
40
51
|
id: true,
|
|
41
52
|
name: true,
|
|
42
53
|
model: true,
|
|
43
|
-
description: true
|
|
44
|
-
|
|
54
|
+
description: true,
|
|
55
|
+
database_name: true,
|
|
56
|
+
table_schema: true,
|
|
57
|
+
table_name: true
|
|
58
|
+
}).strip().extend({ dashboard: SearchResultDashboard.pick({
|
|
59
|
+
id: true,
|
|
60
|
+
name: true
|
|
61
|
+
}).strip().nullable().optional() });
|
|
45
62
|
//#endregion
|
|
46
63
|
export { SearchResultCompact as i, SearchModel as n, SearchResult as r, SEARCH_MODELS as t };
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { t as
|
|
3
|
-
import { t as
|
|
1
|
+
import { St as ConfigError, ct as outputFlags, lt as profileFlag, mt as listEnvelopeSchema, o as renderList, ot as listFlags, rt as connectionFlags } from "./cli.mjs";
|
|
2
|
+
import { t as parseId } from "./parse-id-5BZGQ9Vd.mjs";
|
|
3
|
+
import { t as defineMetabaseCommand } from "./runtime-Y4VFWmmr.mjs";
|
|
4
4
|
import { t as collectForOutput } from "./window-CfK_j6m1.mjs";
|
|
5
|
-
import { n as parseText } from "./parse-text-
|
|
6
|
-
import { n as FieldValueLabel, o as fieldValueLabelView, u as toValueLabel } from "./field-
|
|
5
|
+
import { n as parseText } from "./parse-text-FgX60vIg.mjs";
|
|
6
|
+
import { n as FieldValueLabel, o as fieldValueLabelView, u as toValueLabel } from "./field-BVz4AS3f.mjs";
|
|
7
7
|
//#region src/commands/field/search.ts
|
|
8
8
|
const FieldSearchListEnvelope = listEnvelopeSchema(FieldValueLabel);
|
|
9
9
|
function fieldSearchValue(value, limit) {
|
|
@@ -1,10 +1,20 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { t as
|
|
3
|
-
import {
|
|
1
|
+
import { St as ConfigError, at as listFlag, bt as parseEnumCsv, ct as outputFlags, lt as profileFlag, mt as listEnvelopeSchema, o as renderList, rt as connectionFlags, st as listFlagsWithDefaultLimit } from "./cli.mjs";
|
|
2
|
+
import { n as parseIdCsv, t as parseId } from "./parse-id-5BZGQ9Vd.mjs";
|
|
3
|
+
import { t as defineMetabaseCommand } from "./runtime-Y4VFWmmr.mjs";
|
|
4
4
|
import { r as windowServerPage } from "./window-CfK_j6m1.mjs";
|
|
5
|
-
import { i as SearchResultCompact, n as SearchModel, t as SEARCH_MODELS } from "./search-
|
|
6
|
-
import { t as parseOptionalText } from "./parse-text-
|
|
5
|
+
import { i as SearchResultCompact, n as SearchModel, t as SEARCH_MODELS } from "./search-1et9tv_s.mjs";
|
|
6
|
+
import { t as parseOptionalText } from "./parse-text-FgX60vIg.mjs";
|
|
7
7
|
//#region src/output/views/search.ts
|
|
8
|
+
function searchLocation(row) {
|
|
9
|
+
const tableName = row.table_name;
|
|
10
|
+
if (tableName !== void 0 && tableName !== null) {
|
|
11
|
+
const qualified = row.table_schema ? `${row.table_schema}.${tableName}` : tableName;
|
|
12
|
+
return row.database_name ? `${row.database_name}: ${qualified}` : qualified;
|
|
13
|
+
}
|
|
14
|
+
const dashboard = row.dashboard;
|
|
15
|
+
if (dashboard !== void 0 && dashboard !== null) return `dashboard ${dashboard.name}`;
|
|
16
|
+
return null;
|
|
17
|
+
}
|
|
8
18
|
const searchResultView = {
|
|
9
19
|
compactPick: SearchResultCompact,
|
|
10
20
|
tableColumns: [
|
|
@@ -19,6 +29,11 @@ const searchResultView = {
|
|
|
19
29
|
{
|
|
20
30
|
key: "name",
|
|
21
31
|
label: "Name"
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
key: "table_name",
|
|
35
|
+
label: "Location",
|
|
36
|
+
value: searchLocation
|
|
22
37
|
}
|
|
23
38
|
]
|
|
24
39
|
};
|
|
@@ -11,11 +11,11 @@ var segment_default = defineCommandGroup({
|
|
|
11
11
|
purpose: "define reusable segments"
|
|
12
12
|
}],
|
|
13
13
|
subCommands: {
|
|
14
|
-
list: () => import("./list-
|
|
15
|
-
get: () => import("./get-
|
|
16
|
-
create: () => import("./create-
|
|
17
|
-
update: () => import("./update-
|
|
18
|
-
archive: () => import("./archive-
|
|
14
|
+
list: () => import("./list-B7Yvz5vA.mjs").then((mod) => mod.default),
|
|
15
|
+
get: () => import("./get-BZFyqZXa.mjs").then((mod) => mod.default),
|
|
16
|
+
create: () => import("./create-C0gmhNnk.mjs").then((mod) => mod.default),
|
|
17
|
+
update: () => import("./update-Bba_zPSE.mjs").then((mod) => mod.default),
|
|
18
|
+
archive: () => import("./archive-CAJHrKwd.mjs").then((mod) => mod.default)
|
|
19
19
|
}
|
|
20
20
|
});
|
|
21
21
|
//#endregion
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { c as renderSummary, ct as outputFlags, lt as profileFlag, rt as connectionFlags } from "./cli.mjs";
|
|
2
|
-
import { t as
|
|
3
|
-
import { t as
|
|
2
|
+
import { t as parseId } from "./parse-id-5BZGQ9Vd.mjs";
|
|
3
|
+
import { t as defineMetabaseCommand } from "./runtime-Y4VFWmmr.mjs";
|
|
4
4
|
import { z } from "zod";
|
|
5
5
|
//#region src/commands/alert/send.ts
|
|
6
6
|
const AlertSendResult = z.object({
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { c as renderSummary, ct as outputFlags, lt as profileFlag, rt as connectionFlags } from "./cli.mjs";
|
|
2
|
-
import { t as defineMetabaseCommand } from "./runtime-
|
|
2
|
+
import { t as defineMetabaseCommand } from "./runtime-Y4VFWmmr.mjs";
|
|
3
3
|
import { n as TransformJobActiveResult } from "./transform-job-ClX8e5iO.mjs";
|
|
4
|
-
import { t as parseEnumFlag } from "./parse-enum-
|
|
4
|
+
import { t as parseEnumFlag } from "./parse-enum-DAcTzG1q.mjs";
|
|
5
5
|
import { z } from "zod";
|
|
6
6
|
//#region src/commands/transform-job/set-active.ts
|
|
7
7
|
const ActiveWord = z.enum(["true", "false"]);
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { c as renderSummary, ct as outputFlags, lt as profileFlag, rt as connectionFlags } from "./cli.mjs";
|
|
2
|
+
import { t as defineMetabaseCommand } from "./runtime-Y4VFWmmr.mjs";
|
|
3
|
+
import { t as DataApp } from "./data-app-BUW-HlUo.mjs";
|
|
4
|
+
import { t as dataAppView } from "./data-app-Blz61mG5.mjs";
|
|
5
|
+
import { n as slugArg, t as parseSlug } from "./slug-qeARO25o.mjs";
|
|
6
|
+
import { n as readBundle, t as DEFAULT_BUNDLE_PATH } from "./data-app-project-BL4xpu_m.mjs";
|
|
7
|
+
//#region src/commands/data-app/set-bundle.ts
|
|
8
|
+
var set_bundle_default = defineMetabaseCommand({
|
|
9
|
+
meta: {
|
|
10
|
+
name: "set-bundle",
|
|
11
|
+
description: "Replace a data app's bundle with a built one"
|
|
12
|
+
},
|
|
13
|
+
details: "Reads the built bundle (`npm run build` writes `dist/index.js`) and makes it the bundle Metabase serves at /apps/<slug>, at once. A new app is disabled, so only admins can open it: enable it with `mb data-app set-enabled <slug> true`.",
|
|
14
|
+
skills: [{
|
|
15
|
+
skill: "data-app",
|
|
16
|
+
purpose: "build and publish an app"
|
|
17
|
+
}],
|
|
18
|
+
requires: ["dataApp.replaceBundle"],
|
|
19
|
+
args: {
|
|
20
|
+
...outputFlags,
|
|
21
|
+
...profileFlag,
|
|
22
|
+
...connectionFlags,
|
|
23
|
+
...slugArg,
|
|
24
|
+
bundle: {
|
|
25
|
+
type: "string",
|
|
26
|
+
description: "Built bundle file",
|
|
27
|
+
default: DEFAULT_BUNDLE_PATH
|
|
28
|
+
}
|
|
29
|
+
},
|
|
30
|
+
outputSchema: DataApp,
|
|
31
|
+
examples: ["mb data-app set-bundle sales-overview", "mb data-app set-bundle sales-overview --bundle build/index.js"],
|
|
32
|
+
async run({ args, ctx, getClient }) {
|
|
33
|
+
const slug = parseSlug(args.slug);
|
|
34
|
+
const bundle = await readBundle(args.bundle);
|
|
35
|
+
const app = await (await getClient()).dataApp.replaceBundle(slug, bundle);
|
|
36
|
+
renderSummary(app, dataAppView, `Set the bundle of data app ${slug}; it is ${app.enabled ? `served at /apps/${slug}` : "disabled, so only admins can open it"}.`, ctx);
|
|
37
|
+
}
|
|
38
|
+
});
|
|
39
|
+
//#endregion
|
|
40
|
+
export { set_bundle_default as default };
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { c as renderSummary, ct as outputFlags, lt as profileFlag, rt as connectionFlags } from "./cli.mjs";
|
|
2
|
+
import { t as parseId } from "./parse-id-5BZGQ9Vd.mjs";
|
|
3
|
+
import { t as defineMetabaseCommand } from "./runtime-Y4VFWmmr.mjs";
|
|
4
|
+
import { c as DatabaseWithSettings } from "./database-CxykzTAA.mjs";
|
|
5
|
+
import { t as parseEnumFlag } from "./parse-enum-DAcTzG1q.mjs";
|
|
6
|
+
import { t as databaseDataActionsView } from "./database-D8XzgJEz.mjs";
|
|
7
|
+
import { z } from "zod";
|
|
8
|
+
//#region src/commands/db/set-data-actions.ts
|
|
9
|
+
const EnabledWord = z.enum(["true", "false"]);
|
|
10
|
+
var set_data_actions_default = defineMetabaseCommand({
|
|
11
|
+
meta: {
|
|
12
|
+
name: "set-data-actions",
|
|
13
|
+
description: "Enable or disable data actions for a database"
|
|
14
|
+
},
|
|
15
|
+
details: "The Data actions toggle of Admin → Databases (the `database-enable-actions` database setting): while it is off, data actions on the database can be neither created nor run. Needs an admin. The driver must support writes: `mb db get <id> --full --json` lists `actions` in `features`. Answers the database with its `settings`.",
|
|
16
|
+
skills: [{
|
|
17
|
+
skill: "data-action",
|
|
18
|
+
purpose: "author and run data actions on the database"
|
|
19
|
+
}],
|
|
20
|
+
requires: ["database.update"],
|
|
21
|
+
args: {
|
|
22
|
+
...outputFlags,
|
|
23
|
+
...profileFlag,
|
|
24
|
+
...connectionFlags,
|
|
25
|
+
id: {
|
|
26
|
+
type: "positional",
|
|
27
|
+
description: "Database id",
|
|
28
|
+
required: true
|
|
29
|
+
},
|
|
30
|
+
enabled: {
|
|
31
|
+
type: "positional",
|
|
32
|
+
description: "true to enable data actions, false to disable",
|
|
33
|
+
required: true
|
|
34
|
+
}
|
|
35
|
+
},
|
|
36
|
+
outputSchema: DatabaseWithSettings,
|
|
37
|
+
examples: ["mb db set-data-actions 2 true", "mb db set-data-actions 2 false --json"],
|
|
38
|
+
async run({ args, ctx, getClient }) {
|
|
39
|
+
const id = parseId(args.id);
|
|
40
|
+
const enabled = parseEnumFlag(args.enabled, EnabledWord, "enabled") === "true";
|
|
41
|
+
const database = await (await getClient()).database.update(id, { settings: { "database-enable-actions": enabled } });
|
|
42
|
+
renderSummary(database, databaseDataActionsView, `${enabled ? "Enabled" : "Disabled"} data actions for database ${database.id} "${database.name}".`, ctx);
|
|
43
|
+
}
|
|
44
|
+
});
|
|
45
|
+
//#endregion
|
|
46
|
+
export { set_data_actions_default as default };
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { c as renderSummary, ct as outputFlags, lt as profileFlag, rt as connectionFlags } from "./cli.mjs";
|
|
2
|
+
import { t as defineMetabaseCommand } from "./runtime-Y4VFWmmr.mjs";
|
|
3
|
+
import { t as DataApp } from "./data-app-BUW-HlUo.mjs";
|
|
4
|
+
import { t as parseEnumFlag } from "./parse-enum-DAcTzG1q.mjs";
|
|
5
|
+
import { t as dataAppView } from "./data-app-Blz61mG5.mjs";
|
|
6
|
+
import { n as slugArg, t as parseSlug } from "./slug-qeARO25o.mjs";
|
|
7
|
+
import { z } from "zod";
|
|
8
|
+
//#region src/commands/data-app/set-enabled.ts
|
|
9
|
+
const EnabledWord = z.enum(["true", "false"]);
|
|
10
|
+
var set_enabled_default = defineMetabaseCommand({
|
|
11
|
+
meta: {
|
|
12
|
+
name: "set-enabled",
|
|
13
|
+
description: "Enable or disable a data app"
|
|
14
|
+
},
|
|
15
|
+
details: "A new app is disabled. A disabled app is served only to admins; once enabled, it is served to the groups assigned to it.",
|
|
16
|
+
skills: [{
|
|
17
|
+
skill: "data-app",
|
|
18
|
+
purpose: "publish an app"
|
|
19
|
+
}],
|
|
20
|
+
requires: ["dataApp.update"],
|
|
21
|
+
args: {
|
|
22
|
+
...outputFlags,
|
|
23
|
+
...profileFlag,
|
|
24
|
+
...connectionFlags,
|
|
25
|
+
...slugArg,
|
|
26
|
+
enabled: {
|
|
27
|
+
type: "positional",
|
|
28
|
+
description: "true to enable the app, false to disable it",
|
|
29
|
+
required: true
|
|
30
|
+
}
|
|
31
|
+
},
|
|
32
|
+
outputSchema: DataApp,
|
|
33
|
+
examples: ["mb data-app set-enabled sales-overview true", "mb data-app set-enabled sales-overview false"],
|
|
34
|
+
async run({ args, ctx, getClient }) {
|
|
35
|
+
const slug = parseSlug(args.slug);
|
|
36
|
+
const enabled = parseEnumFlag(args.enabled, EnabledWord, "enabled") === "true";
|
|
37
|
+
renderSummary(await (await getClient()).dataApp.update(slug, { enabled }), dataAppView, `${enabled ? "Enabled" : "Disabled"} data app ${slug}.`, ctx);
|
|
38
|
+
}
|
|
39
|
+
});
|
|
40
|
+
//#endregion
|
|
41
|
+
export { set_enabled_default as default };
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { c as renderSummary, ct as outputFlags, lt as profileFlag, rt as connectionFlags } from "./cli.mjs";
|
|
2
|
-
import { t as
|
|
3
|
-
import { t as
|
|
4
|
-
import { f as FieldWithDataSensitivity, i as FieldDataSensitivity } from "./field-
|
|
5
|
-
import { t as parseEnumFlag } from "./parse-enum-
|
|
6
|
-
import { l as fieldWithDataSensitivityView } from "./field-
|
|
2
|
+
import { t as parseId } from "./parse-id-5BZGQ9Vd.mjs";
|
|
3
|
+
import { t as defineMetabaseCommand } from "./runtime-Y4VFWmmr.mjs";
|
|
4
|
+
import { f as FieldWithDataSensitivity, i as FieldDataSensitivity } from "./field-DoWQUl7V.mjs";
|
|
5
|
+
import { t as parseEnumFlag } from "./parse-enum-DAcTzG1q.mjs";
|
|
6
|
+
import { l as fieldWithDataSensitivityView } from "./field-BVz4AS3f.mjs";
|
|
7
7
|
import { z } from "zod";
|
|
8
8
|
//#region src/commands/field/set-sensitivity.ts
|
|
9
9
|
const NONE = "none";
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { c as renderSummary, ct as outputFlags, lt as profileFlag, m as formatScalar, rt as connectionFlags } from "./cli.mjs";
|
|
2
|
-
import { t as defineMetabaseCommand } from "./runtime-
|
|
3
|
-
import { t as readBody } from "./body-
|
|
2
|
+
import { t as defineMetabaseCommand } from "./runtime-Y4VFWmmr.mjs";
|
|
3
|
+
import { t as readBody } from "./body-M5qsJoub.mjs";
|
|
4
4
|
import { r as SettingValue } from "./setting-DTiLCW8g.mjs";
|
|
5
5
|
import { t as settingValueView } from "./setting-CwRYgHYN.mjs";
|
|
6
|
-
import { t as parseSettingKey } from "./key-
|
|
6
|
+
import { t as parseSettingKey } from "./key-BYEv4Wgq.mjs";
|
|
7
7
|
import { z } from "zod";
|
|
8
8
|
//#region src/commands/setting/set.ts
|
|
9
9
|
const SettingValueInput = z.unknown().describe("Any JSON value; the setting's own type constraints are enforced server-side");
|
|
@@ -8,9 +8,9 @@ var setting_default = defineCommandGroup({
|
|
|
8
8
|
purpose: "setting get/set JSON value quoting"
|
|
9
9
|
}],
|
|
10
10
|
subCommands: {
|
|
11
|
-
list: () => import("./list-
|
|
12
|
-
get: () => import("./get-
|
|
13
|
-
set: () => import("./set-
|
|
11
|
+
list: () => import("./list-DyQNRVAf.mjs").then((m) => m.default),
|
|
12
|
+
get: () => import("./get-BZDUOZxI.mjs").then((m) => m.default),
|
|
13
|
+
set: () => import("./set-xs8Vyvy2.mjs").then((m) => m.default)
|
|
14
14
|
}
|
|
15
15
|
});
|
|
16
16
|
//#endregion
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { c as renderSummary, ct as outputFlags, lt as profileFlag, rt as connectionFlags } from "./cli.mjs";
|
|
2
|
-
import { t as defineMetabaseCommand } from "./runtime-
|
|
3
|
-
import { t as readBody } from "./body-
|
|
2
|
+
import { t as defineMetabaseCommand } from "./runtime-Y4VFWmmr.mjs";
|
|
3
|
+
import { t as readBody } from "./body-M5qsJoub.mjs";
|
|
4
4
|
import { t as bodyInputFlags } from "./body-flags-AqKpN01Y.mjs";
|
|
5
5
|
import { n as SetupResult, r as SetupResultCompact, t as SetupInput } from "./setup-CO7QV-ao.mjs";
|
|
6
6
|
//#region src/output/views/setup.ts
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { Mt as errorMessage, Tt as MetabaseError, xt as AbortError } from "./cli.mjs";
|
|
2
2
|
//#region ../client/src/signal.ts
|
|
3
3
|
function combineAborts(...signals) {
|
|
4
4
|
return AbortSignal.any(signals.filter((signal) => signal !== void 0));
|
|
@@ -7,9 +7,9 @@ var skills_default = defineCommand({
|
|
|
7
7
|
},
|
|
8
8
|
default: "list",
|
|
9
9
|
subCommands: {
|
|
10
|
-
list: () => import("./list-
|
|
11
|
-
get: () => import("./get-
|
|
12
|
-
path: () => import("./path-
|
|
10
|
+
list: () => import("./list-DrIcKxXX.mjs").then((m) => m.default),
|
|
11
|
+
get: () => import("./get-C1rCVUYw.mjs").then((m) => m.default),
|
|
12
|
+
path: () => import("./path-XwdHlC23.mjs").then((m) => m.default)
|
|
13
13
|
}
|
|
14
14
|
});
|
|
15
15
|
//#endregion
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { H as isFeatureName, M as readEnv, O as ENV_SKILLS_DIR,
|
|
2
|
-
import { t as checkFeatures } from "./requirement-check-
|
|
1
|
+
import { H as isFeatureName, M as readEnv, Mt as errorMessage, O as ENV_SKILLS_DIR, Pt as isFileNotFoundError, R as FEATURE_NAMES, St as ConfigError, jt as ValidationError, vt as parseCsv } from "./cli.mjs";
|
|
2
|
+
import { t as checkFeatures } from "./requirement-check-CpiVuL0H.mjs";
|
|
3
3
|
import { z } from "zod";
|
|
4
4
|
import { closeSync, openSync, readFileSync, readSync, readdirSync, statSync } from "node:fs";
|
|
5
5
|
import { dirname, join, resolve } from "node:path";
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { St as ConfigError } from "./cli.mjs";
|
|
2
|
+
import { a as DataAppSlug } from "./data-app-BUW-HlUo.mjs";
|
|
3
|
+
//#region src/commands/data-app/slug.ts
|
|
4
|
+
const slugArg = { slug: {
|
|
5
|
+
type: "positional",
|
|
6
|
+
description: "Data app slug (its /apps/<slug> URL)",
|
|
7
|
+
required: true
|
|
8
|
+
} };
|
|
9
|
+
function parseSlug(raw) {
|
|
10
|
+
const result = DataAppSlug.safeParse(raw);
|
|
11
|
+
if (!result.success) throw new ConfigError(`slug "${raw}" ${result.error.issues.map((issue) => issue.message).join("; ")}`);
|
|
12
|
+
return result.data;
|
|
13
|
+
}
|
|
14
|
+
//#endregion
|
|
15
|
+
export { slugArg as n, parseSlug as t };
|