@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
|
@@ -0,0 +1,34 @@
|
|
|
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 readBody } from "./body-M5qsJoub.mjs";
|
|
4
|
+
import { t as bodyInputFlags } from "./body-flags-AqKpN01Y.mjs";
|
|
5
|
+
import { i as CreatedApiKey, r as ApiKeyCreateInput } from "./api-key-DbsqHlN6.mjs";
|
|
6
|
+
import { n as createdApiKeyView } from "./api-key-9jVV67hF.mjs";
|
|
7
|
+
//#region src/commands/api-key/create.ts
|
|
8
|
+
var create_default = defineMetabaseCommand({
|
|
9
|
+
meta: {
|
|
10
|
+
name: "create",
|
|
11
|
+
description: "Create an API key acting as a member of a group"
|
|
12
|
+
},
|
|
13
|
+
details: "The JSON body needs `name` and `group_id` (2 is Administrators). The key is printed once, as `unmasked_key` under --json, and no later read returns it: store it where it is needed and never paste it into chat.",
|
|
14
|
+
requires: ["apiKey.create"],
|
|
15
|
+
args: {
|
|
16
|
+
...outputFlags,
|
|
17
|
+
...profileFlag,
|
|
18
|
+
...connectionFlags,
|
|
19
|
+
...bodyInputFlags
|
|
20
|
+
},
|
|
21
|
+
inputSchema: ApiKeyCreateInput,
|
|
22
|
+
outputSchema: CreatedApiKey,
|
|
23
|
+
examples: ["mb api-key create --body '{\"name\":\"ci\",\"group_id\":2}' --json"],
|
|
24
|
+
async run({ args, ctx, getClient }) {
|
|
25
|
+
const body = await readBody({
|
|
26
|
+
flag: args.body,
|
|
27
|
+
file: args.file
|
|
28
|
+
}, ApiKeyCreateInput);
|
|
29
|
+
const created = await (await getClient()).apiKey.create(body);
|
|
30
|
+
renderSummary(created, createdApiKeyView, `Created API key ${created.id} "${created.name}": ${created.unmasked_key}`, ctx);
|
|
31
|
+
}
|
|
32
|
+
});
|
|
33
|
+
//#endregion
|
|
34
|
+
export { create_default as default };
|
|
@@ -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 { r as DocumentCreateInput, t as Document } from "./document-UMG6me2P.mjs";
|
|
6
6
|
import { t as documentView } from "./document-DVIu3Vj4.mjs";
|
|
@@ -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 { i as TransformJobCreateInput, t as TransformJob } from "./transform-job-ClX8e5iO.mjs";
|
|
6
6
|
import { t as transformJobView } from "./transform-job-BBZ5L46v.mjs";
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { c as renderSummary, ct as outputFlags, lt as profileFlag, rt as connectionFlags } from "./cli.mjs";
|
|
2
2
|
import { a as NotificationCreateInput, n as Notification } from "./notification-DaA4bBHW.mjs";
|
|
3
3
|
import { t as notificationView } from "./notification-W2SVssyY.mjs";
|
|
4
|
-
import { t as defineMetabaseCommand } from "./runtime-
|
|
4
|
+
import { t as defineMetabaseCommand } from "./runtime-Y4VFWmmr.mjs";
|
|
5
5
|
import { t as describeAlert } from "./summary-BytbDz6e.mjs";
|
|
6
|
-
import { t as readBody } from "./body-
|
|
6
|
+
import { t as readBody } from "./body-M5qsJoub.mjs";
|
|
7
7
|
import { t as bodyInputFlags } from "./body-flags-AqKpN01Y.mjs";
|
|
8
8
|
//#region src/commands/alert/create.ts
|
|
9
9
|
var create_default = defineMetabaseCommand({
|
|
@@ -1,10 +1,10 @@
|
|
|
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
|
-
import {
|
|
6
|
-
import { n as cardView } from "./card-
|
|
7
|
-
import { o as preflightMbql5Query, s as skipValidateFlag, t as CARD_DATASET_QUERY_LABELS } from "./validate-query-
|
|
5
|
+
import { i as CardDetail, r as CardCreateInput } from "./card-QR3zEu6E.mjs";
|
|
6
|
+
import { n as cardView } from "./card-3NmUiU5F.mjs";
|
|
7
|
+
import { o as preflightMbql5Query, s as skipValidateFlag, t as CARD_DATASET_QUERY_LABELS } from "./validate-query-YtH3d5BP.mjs";
|
|
8
8
|
//#region src/commands/card/create.ts
|
|
9
9
|
var create_default = defineMetabaseCommand({
|
|
10
10
|
meta: {
|
|
@@ -35,7 +35,7 @@ var create_default = defineMetabaseCommand({
|
|
|
35
35
|
...skipValidateFlag
|
|
36
36
|
},
|
|
37
37
|
inputSchema: CardCreateInput,
|
|
38
|
-
outputSchema:
|
|
38
|
+
outputSchema: CardDetail,
|
|
39
39
|
examples: [
|
|
40
40
|
"cat card.json | mb card create",
|
|
41
41
|
"mb card create --file card.json",
|
|
@@ -1,10 +1,10 @@
|
|
|
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
|
-
import { f as CollectionNamespace, o as CollectionCreateInput, r as Collection } from "./collection-
|
|
6
|
-
import { t as parseEnumFlag } from "./parse-enum-
|
|
7
|
-
import { n as collectionView } from "./collection-
|
|
5
|
+
import { f as CollectionNamespace, o as CollectionCreateInput, r as Collection } from "./collection-DNmFKALA.mjs";
|
|
6
|
+
import { t as parseEnumFlag } from "./parse-enum-DAcTzG1q.mjs";
|
|
7
|
+
import { n as collectionView } from "./collection-D5vt2IJ_.mjs";
|
|
8
8
|
//#region src/commands/collection/create.ts
|
|
9
9
|
var create_default = defineMetabaseCommand({
|
|
10
10
|
meta: {
|
|
@@ -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 { i as TimelineEvent, o as TimelineEventCreateInput } from "./timeline-DcsCXNUt.mjs";
|
|
6
6
|
import { t as timelineEventView } from "./timeline-BgWz8DYK.mjs";
|
|
@@ -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 { r as TimelineCreateInput, t as Timeline } from "./timeline-DcsCXNUt.mjs";
|
|
6
6
|
import { n as timelineView } from "./timeline-BgWz8DYK.mjs";
|
|
@@ -1,8 +1,8 @@
|
|
|
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 { r as GlossaryCreateInput, t as Glossary } from "./glossary-QN-hHfOT.mjs";
|
|
4
4
|
import { t as glossaryView } from "./glossary-BkGmCI4X.mjs";
|
|
5
|
-
import { n as readEntryInput, t as entryFlags } from "./entry-flags-
|
|
5
|
+
import { n as readEntryInput, t as entryFlags } from "./entry-flags-Cxn09krz.mjs";
|
|
6
6
|
//#region src/commands/glossary/create.ts
|
|
7
7
|
var create_default = defineMetabaseCommand({
|
|
8
8
|
meta: {
|
|
@@ -0,0 +1,38 @@
|
|
|
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 readBody } from "./body-M5qsJoub.mjs";
|
|
4
|
+
import { t as bodyInputFlags } from "./body-flags-AqKpN01Y.mjs";
|
|
5
|
+
import { r as DataAppCreateInput, t as DataApp } from "./data-app-BUW-HlUo.mjs";
|
|
6
|
+
import { t as dataAppView } from "./data-app-Blz61mG5.mjs";
|
|
7
|
+
//#region src/commands/data-app/create.ts
|
|
8
|
+
var create_default = defineMetabaseCommand({
|
|
9
|
+
meta: {
|
|
10
|
+
name: "create",
|
|
11
|
+
description: "Create a data app and its collection from JSON"
|
|
12
|
+
},
|
|
13
|
+
details: "The JSON body needs `name`, the slug. Optional: `display_name` (the slug by default), `description`, `allowed_hosts`, `enabled` (false by default), `bundle_path` and `version`. The app starts with an empty bundle; `mb data-app set-bundle` replaces it. The answer's `resource_collection_id` is the app's collection, where its questions and actions go. `mb data-app scaffold` copies the project template.",
|
|
14
|
+
skills: [{
|
|
15
|
+
skill: "data-app",
|
|
16
|
+
purpose: "how an app is created, built and published"
|
|
17
|
+
}],
|
|
18
|
+
requires: ["dataApp.create"],
|
|
19
|
+
args: {
|
|
20
|
+
...outputFlags,
|
|
21
|
+
...profileFlag,
|
|
22
|
+
...connectionFlags,
|
|
23
|
+
...bodyInputFlags
|
|
24
|
+
},
|
|
25
|
+
inputSchema: DataAppCreateInput,
|
|
26
|
+
outputSchema: DataApp,
|
|
27
|
+
examples: ["mb data-app create --body '{\"name\":\"sales-overview\",\"display_name\":\"Sales overview\"}'", "mb data-app create --file app.json --json"],
|
|
28
|
+
async run({ args, ctx, getClient }) {
|
|
29
|
+
const body = await readBody({
|
|
30
|
+
flag: args.body,
|
|
31
|
+
file: args.file
|
|
32
|
+
}, DataAppCreateInput);
|
|
33
|
+
const created = await (await getClient()).dataApp.create(body);
|
|
34
|
+
renderSummary(created, dataAppView, `Created data app ${created.name} with collection ${created.resource_collection_id}.`, ctx);
|
|
35
|
+
}
|
|
36
|
+
});
|
|
37
|
+
//#endregion
|
|
38
|
+
export { create_default as default };
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { c as renderSummary, ct as outputFlags, lt as profileFlag, rt as connectionFlags
|
|
2
|
-
import { t as defineMetabaseCommand } from "./runtime-
|
|
3
|
-
import {
|
|
4
|
-
import { n as syncBranchCreatedView } from "./git-sync-
|
|
1
|
+
import { St as ConfigError, 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 { n as SyncBranchCreated } from "./git-sync-DP4wQFzm.mjs";
|
|
4
|
+
import { n as syncBranchCreatedView } from "./git-sync-D1aKczo6.mjs";
|
|
5
5
|
//#region src/commands/git-sync/create-branch.ts
|
|
6
6
|
var create_branch_default = defineMetabaseCommand({
|
|
7
7
|
meta: {
|
|
@@ -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 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 { r as DataActionCreateInput, t as DataAction } from "./data-action-DZxVB_hD.mjs";
|
|
6
|
-
import { n as DATA_ACTION_DATASET_QUERY_LABELS, o as preflightMbql5Query, s as skipValidateFlag } from "./validate-query-
|
|
6
|
+
import { n as DATA_ACTION_DATASET_QUERY_LABELS, o as preflightMbql5Query, s as skipValidateFlag } from "./validate-query-YtH3d5BP.mjs";
|
|
7
7
|
import { n as dataActionView } from "./data-action-R9qxJDPA.mjs";
|
|
8
8
|
//#region src/commands/data-action/create.ts
|
|
9
9
|
var create_default = defineMetabaseCommand({
|
|
@@ -11,7 +11,7 @@ var create_default = defineMetabaseCommand({
|
|
|
11
11
|
name: "create",
|
|
12
12
|
description: "Create a data action from JSON"
|
|
13
13
|
},
|
|
14
|
-
details: "A data action is a parameterized native query that writes to a database, filed in a collection. The JSON body needs `name`, `type: \"query\"`, `database_id`, a native `dataset_query` whose `{{tag}}` placeholders are its inputs, and `parameters` targeting those tags; `collection_id` picks
|
|
14
|
+
details: "A data action is a parameterized native query that writes to a database, filed in a collection. The JSON body needs `name`, `type: \"query\"`, `database_id`, a native `dataset_query` whose `{{tag}}` placeholders are its inputs, and `parameters` targeting those tags; `collection_id` picks a collection in the `data-actions` or `data-apps` namespace (omit for the data actions root; a regular collection is refused). Data actions must be enabled on the database (`mb db set-data-actions <id> true`). An MBQL 5 `dataset_query` is checked against a bundled JSON Schema before sending; pass --skip-validate to bypass.",
|
|
15
15
|
skills: [{
|
|
16
16
|
skill: "data-action",
|
|
17
17
|
purpose: "author a data action and its parameters"
|
|
@@ -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 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
|
-
import { i as PulseCreateInput, t as Pulse } from "./pulse-
|
|
6
|
-
import { t as pulseView } from "./pulse-
|
|
5
|
+
import { i as PulseCreateInput, t as Pulse } from "./pulse-CC81N2_0.mjs";
|
|
6
|
+
import { t as pulseView } from "./pulse-JPrq6NFP.mjs";
|
|
7
7
|
//#region src/commands/subscription/create.ts
|
|
8
8
|
var create_default = defineMetabaseCommand({
|
|
9
9
|
meta: {
|
|
@@ -1,11 +1,11 @@
|
|
|
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 { r as TransformCreateInput, t as Transform } from "./transform-DiW7bREn.mjs";
|
|
6
|
-
import { a as TRANSFORM_SOURCE_QUERY_LABELS, o as preflightMbql5Query, s as skipValidateFlag } from "./validate-query-
|
|
6
|
+
import { a as TRANSFORM_SOURCE_QUERY_LABELS, o as preflightMbql5Query, s as skipValidateFlag } from "./validate-query-YtH3d5BP.mjs";
|
|
7
7
|
import { n as transformView } from "./transform-CWGJB8N_.mjs";
|
|
8
|
-
import { t as enrichTransformCollectionError } from "./collection-namespace-
|
|
8
|
+
import { t as enrichTransformCollectionError } from "./collection-namespace-Dl8_7xII.mjs";
|
|
9
9
|
//#region src/commands/transform/create.ts
|
|
10
10
|
var create_default = defineMetabaseCommand({
|
|
11
11
|
meta: {
|
|
@@ -1,8 +1,8 @@
|
|
|
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 { t as UploadResult } from "./upload-DAtxBBms.mjs";
|
|
5
|
-
import { n as requireUploadFilePath, t as readCsvFile } from "./upload-
|
|
5
|
+
import { n as requireUploadFilePath, t as readCsvFile } from "./upload-BF5pdKRN.mjs";
|
|
6
6
|
import { t as uploadResultView } from "./upload-C3z5ZaXA.mjs";
|
|
7
7
|
//#region src/commands/upload/csv.ts
|
|
8
8
|
const ROOT_COLLECTION = "root";
|
|
@@ -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-
|
|
3
|
-
import { u as syncTaskView } from "./git-sync-
|
|
4
|
-
import { n as formatSyncTask, r as syncTaskIdleView, t as SyncTaskOrIdle } from "./sync-task-
|
|
2
|
+
import { t as defineMetabaseCommand } from "./runtime-Y4VFWmmr.mjs";
|
|
3
|
+
import { u as syncTaskView } from "./git-sync-D1aKczo6.mjs";
|
|
4
|
+
import { n as formatSyncTask, r as syncTaskIdleView, t as SyncTaskOrIdle } from "./sync-task-DNKG9Bk4.mjs";
|
|
5
5
|
//#region src/commands/git-sync/current-task.ts
|
|
6
6
|
const CurrentTaskResult = SyncTaskOrIdle;
|
|
7
7
|
var current_task_default = defineMetabaseCommand({
|
|
@@ -18,17 +18,17 @@ var dashboard_default = defineCommandGroup({
|
|
|
18
18
|
}
|
|
19
19
|
],
|
|
20
20
|
subCommands: {
|
|
21
|
-
list: () => import("./list-
|
|
22
|
-
get: () => import("./get
|
|
23
|
-
cards: () => import("./cards-
|
|
24
|
-
"parameter-values": () => import("./parameter-values-
|
|
25
|
-
subscriptions: () => import("./subscriptions-
|
|
26
|
-
create: () => import("./create-
|
|
27
|
-
update: () => import("./update-
|
|
28
|
-
"update-dashcard": () => import("./update-dashcard-
|
|
29
|
-
copy: () => import("./copy-
|
|
30
|
-
verify: () => import("./verify-
|
|
31
|
-
archive: () => import("./archive-
|
|
21
|
+
list: () => import("./list-CA939qkn.mjs").then((mod) => mod.default),
|
|
22
|
+
get: () => import("./get--1qTpTIQ.mjs").then((mod) => mod.default),
|
|
23
|
+
cards: () => import("./cards-DWJOtZoN.mjs").then((mod) => mod.default),
|
|
24
|
+
"parameter-values": () => import("./parameter-values-3eHpqznI.mjs").then((mod) => mod.default),
|
|
25
|
+
subscriptions: () => import("./subscriptions-DcCOA2p1.mjs").then((mod) => mod.default),
|
|
26
|
+
create: () => import("./create-Bh3q3eHg.mjs").then((mod) => mod.default),
|
|
27
|
+
update: () => import("./update-B1UXRPN-.mjs").then((mod) => mod.default),
|
|
28
|
+
"update-dashcard": () => import("./update-dashcard-m-hkIGUu.mjs").then((mod) => mod.default),
|
|
29
|
+
copy: () => import("./copy-BzBp5FaY.mjs").then((mod) => mod.default),
|
|
30
|
+
verify: () => import("./verify-cjUPMF_B.mjs").then((mod) => mod.default),
|
|
31
|
+
archive: () => import("./archive-DZDkfhdH.mjs").then((mod) => mod.default)
|
|
32
32
|
}
|
|
33
33
|
});
|
|
34
34
|
//#endregion
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { t as EmbeddingParams } from "./
|
|
2
|
-
import { n as ParameterMapping, t as Parameter } from "./parameter-
|
|
1
|
+
import { t as Card, u as EmbeddingParams } from "./card-QR3zEu6E.mjs";
|
|
2
|
+
import { n as ParameterMapping, t as Parameter } from "./parameter-DvRQMKd2.mjs";
|
|
3
3
|
import { z } from "zod";
|
|
4
4
|
//#region ../client/src/domain/dashboard.ts
|
|
5
5
|
const DashboardWidth = z.enum(["fixed", "full"]);
|
|
@@ -30,8 +30,44 @@ const DashcardCompact = Dashcard.pick({
|
|
|
30
30
|
row: true,
|
|
31
31
|
col: true,
|
|
32
32
|
size_x: true,
|
|
33
|
-
size_y: true
|
|
33
|
+
size_y: true,
|
|
34
|
+
parameter_mappings: true
|
|
34
35
|
}).strip();
|
|
36
|
+
/**
|
|
37
|
+
* What a dashcard that is not a chart of a card shows. `display` names it: `text`, `heading`,
|
|
38
|
+
* `link`, `iframe`, `placeholder`, or `action` for an action button. The server stores the
|
|
39
|
+
* settings without checking them, so `display` is an open string another client may leave out.
|
|
40
|
+
*/
|
|
41
|
+
const DashcardVirtualCard = z.object({ display: z.string().optional() }).loose();
|
|
42
|
+
/**
|
|
43
|
+
* A dashcard's visualization settings. Every key is free-form except the two that say what a
|
|
44
|
+
* dashcard is when it is not a chart: `virtual_card`, and `text`, the Markdown a text or heading
|
|
45
|
+
* dashcard shows.
|
|
46
|
+
*/
|
|
47
|
+
const DashcardVisualizationSettings = z.object({
|
|
48
|
+
virtual_card: DashcardVirtualCard.nullable().optional(),
|
|
49
|
+
text: z.string().nullable().optional()
|
|
50
|
+
}).loose();
|
|
51
|
+
/**
|
|
52
|
+
* A card the caller cannot read. The server cuts it down to its `id` before answering, so a
|
|
53
|
+
* dashboard the caller can read still lists it; a readable card always carries its `name`, which is
|
|
54
|
+
* what tells the two apart.
|
|
55
|
+
*/
|
|
56
|
+
const UnreadableCard = z.object({
|
|
57
|
+
id: z.number().int(),
|
|
58
|
+
name: z.never().optional()
|
|
59
|
+
}).loose();
|
|
60
|
+
/**
|
|
61
|
+
* A dashcard as a dashboard read or write returns it, with its card whole in `card`. An action
|
|
62
|
+
* button bound to a model carries the model there and the action in `action_id`. A dashcard bound to
|
|
63
|
+
* no card (a text, heading, link, iframe or placeholder dashcard, or an action button bound to no
|
|
64
|
+
* model, which `visualization_settings.virtual_card` names) has `card_id` and `card` both `null`.
|
|
65
|
+
*/
|
|
66
|
+
const DashcardDetail = Dashcard.extend({
|
|
67
|
+
action_id: z.number().int().nullable(),
|
|
68
|
+
visualization_settings: DashcardVisualizationSettings,
|
|
69
|
+
card: z.union([Card, UnreadableCard]).nullable()
|
|
70
|
+
});
|
|
35
71
|
const DashboardTab = z.object({
|
|
36
72
|
id: z.number().int(),
|
|
37
73
|
dashboard_id: z.number().int(),
|
|
@@ -58,13 +94,14 @@ const Dashboard = z.object({
|
|
|
58
94
|
enable_embedding: z.boolean(),
|
|
59
95
|
public_uuid: z.string().nullable(),
|
|
60
96
|
cache_ttl: z.number().int().nullable(),
|
|
97
|
+
collection_position: z.number().int().nullable(),
|
|
61
98
|
parameters: z.array(Parameter).nullable(),
|
|
62
99
|
dashcards: z.array(Dashcard).optional(),
|
|
63
100
|
tabs: z.array(DashboardTab).optional()
|
|
64
101
|
}).loose();
|
|
65
102
|
const DashboardDetail = Dashboard.extend({
|
|
66
103
|
parameters: z.array(Parameter),
|
|
67
|
-
dashcards: z.array(
|
|
104
|
+
dashcards: z.array(DashcardDetail),
|
|
68
105
|
tabs: z.array(DashboardTab)
|
|
69
106
|
});
|
|
70
107
|
const DashboardCompact = Dashboard.pick({
|
|
@@ -142,5 +179,15 @@ z.object({
|
|
|
142
179
|
const DashboardUncopiedCard = z.object({ id: z.number().int() }).loose();
|
|
143
180
|
const DashboardCopy = Dashboard.extend({ uncopied: z.array(DashboardUncopiedCard).optional() });
|
|
144
181
|
const DashboardCopyCompact = DashboardCompact.extend({ uncopied: z.array(DashboardUncopiedCard.pick({ id: true }).strip()).optional() });
|
|
182
|
+
const ParameterConstraintValue = z.union([
|
|
183
|
+
z.string(),
|
|
184
|
+
z.number(),
|
|
185
|
+
z.boolean()
|
|
186
|
+
]);
|
|
187
|
+
/**
|
|
188
|
+
* Values of other parameters on a dashboard, by parameter id, that narrow the values a linked
|
|
189
|
+
* parameter offers. An array sets several values for one parameter.
|
|
190
|
+
*/
|
|
191
|
+
const DashboardParameterConstraints = z.record(z.string().min(1), z.union([ParameterConstraintValue, z.array(ParameterConstraintValue)]));
|
|
145
192
|
//#endregion
|
|
146
|
-
export { DashboardCreateInput as a,
|
|
193
|
+
export { DashboardCreateInput as a, DashboardParameterConstraints as c, DashcardCompact as d, DashcardDetail as f, DashboardCopyCompact as i, DashboardUpdateInput as l, DashboardCompact as n, DashboardDetail as o, DashcardPatchInput as p, DashboardCopy as r, DashboardListFilter as s, Dashboard as t, Dashcard as u };
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { d as DashcardCompact, i as DashboardCopyCompact, n as DashboardCompact } from "./dashboard-Chjy5GKR.mjs";
|
|
2
2
|
//#region src/output/views/dashboard.ts
|
|
3
3
|
const dashcardView = {
|
|
4
4
|
compactPick: DashcardCompact,
|
|
@@ -11,13 +11,13 @@ var data_action_default = defineCommandGroup({
|
|
|
11
11
|
purpose: "the data action's native query and its template tags"
|
|
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-
|
|
19
|
-
delete: () => import("./delete-
|
|
20
|
-
execute: () => import("./execute-
|
|
14
|
+
list: () => import("./list-BiSwl56L.mjs").then((mod) => mod.default),
|
|
15
|
+
get: () => import("./get-B8xrmipw.mjs").then((mod) => mod.default),
|
|
16
|
+
create: () => import("./create-f0bBEfDI.mjs").then((mod) => mod.default),
|
|
17
|
+
update: () => import("./update-FfeHReec.mjs").then((mod) => mod.default),
|
|
18
|
+
archive: () => import("./archive-3fdIvMsf.mjs").then((mod) => mod.default),
|
|
19
|
+
delete: () => import("./delete-BHX_F8Qu.mjs").then((mod) => mod.default),
|
|
20
|
+
execute: () => import("./execute-DBJGtHHG.mjs").then((mod) => mod.default)
|
|
21
21
|
}
|
|
22
22
|
});
|
|
23
23
|
//#endregion
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { t as defineCommandGroup } from "./group-81zoQcEP.mjs";
|
|
2
|
+
//#region src/commands/data-app/index.ts
|
|
3
|
+
var data_app_default = defineCommandGroup({
|
|
4
|
+
name: "data-app",
|
|
5
|
+
description: "Manage Metabase data apps",
|
|
6
|
+
skills: [
|
|
7
|
+
{
|
|
8
|
+
skill: "data-app",
|
|
9
|
+
purpose: "create, preview, build and publish a data app"
|
|
10
|
+
},
|
|
11
|
+
{
|
|
12
|
+
skill: "data-app-ui",
|
|
13
|
+
purpose: "the app's UI: sandbox, layout, theme, charts, pages"
|
|
14
|
+
},
|
|
15
|
+
{
|
|
16
|
+
skill: "data-app-data",
|
|
17
|
+
purpose: "the questions a data app runs, and its read hooks"
|
|
18
|
+
},
|
|
19
|
+
{
|
|
20
|
+
skill: "data-app-filters",
|
|
21
|
+
purpose: "filter controls and date ranges"
|
|
22
|
+
},
|
|
23
|
+
{
|
|
24
|
+
skill: "data-app-actions",
|
|
25
|
+
purpose: "writes: actions, forms and refresh"
|
|
26
|
+
}
|
|
27
|
+
],
|
|
28
|
+
subCommands: {
|
|
29
|
+
scaffold: () => import("./scaffold-BuL0_ptz.mjs").then((mod) => mod.default),
|
|
30
|
+
list: () => import("./list-YFwmHXGG.mjs").then((mod) => mod.default),
|
|
31
|
+
get: () => import("./get-Bq_9VSTa.mjs").then((mod) => mod.default),
|
|
32
|
+
create: () => import("./create-_rOCx5b8.mjs").then((mod) => mod.default),
|
|
33
|
+
update: () => import("./update-DIBaY-fy.mjs").then((mod) => mod.default),
|
|
34
|
+
"typed-schema": () => import("./typed-schema-Bo0Q6C0S.mjs").then((mod) => mod.default),
|
|
35
|
+
"set-bundle": () => import("./set-bundle-DX5HqDji.mjs").then((mod) => mod.default),
|
|
36
|
+
"set-enabled": () => import("./set-enabled-0QI-CHAT.mjs").then((mod) => mod.default),
|
|
37
|
+
delete: () => import("./delete-BSgxmR3y.mjs").then((mod) => mod.default)
|
|
38
|
+
}
|
|
39
|
+
});
|
|
40
|
+
//#endregion
|
|
41
|
+
export { data_app_default as default };
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
//#region ../client/src/domain/data-app.ts
|
|
3
|
+
const DATA_APP_SLUG_MAX_LENGTH = 100;
|
|
4
|
+
const RESERVED_DATA_APP_SLUGS = /* @__PURE__ */ new Set(["repo-status", "sandbox-host"]);
|
|
5
|
+
const DataAppSlug = z.string().max(DATA_APP_SLUG_MAX_LENGTH, `must be at most ${DATA_APP_SLUG_MAX_LENGTH} characters`).regex(/^[a-z0-9]+(?:-[a-z0-9]+)*$/, "must be dash-cased: a-z, 0-9 and single dashes").refine((slug) => !RESERVED_DATA_APP_SLUGS.has(slug), "is reserved by Metabase");
|
|
6
|
+
const DataApp = z.object({
|
|
7
|
+
id: z.number().int(),
|
|
8
|
+
name: z.string(),
|
|
9
|
+
display_name: z.string(),
|
|
10
|
+
description: z.string().nullable(),
|
|
11
|
+
version: z.number().int(),
|
|
12
|
+
outdated: z.boolean(),
|
|
13
|
+
bundle_path: z.string(),
|
|
14
|
+
enabled: z.boolean(),
|
|
15
|
+
allowed_hosts: z.array(z.string()),
|
|
16
|
+
resource_collection_id: z.number().int(),
|
|
17
|
+
bundle_hash: z.string().nullable(),
|
|
18
|
+
created_at: z.string(),
|
|
19
|
+
updated_at: z.string()
|
|
20
|
+
}).loose();
|
|
21
|
+
const DataAppSummary = z.object({
|
|
22
|
+
name: z.string(),
|
|
23
|
+
display_name: z.string()
|
|
24
|
+
}).strict();
|
|
25
|
+
const DataAppEntry = z.union([DataApp, DataAppSummary]);
|
|
26
|
+
const DataAppCompact = DataApp.pick({
|
|
27
|
+
name: true,
|
|
28
|
+
display_name: true,
|
|
29
|
+
enabled: true,
|
|
30
|
+
resource_collection_id: true,
|
|
31
|
+
outdated: true
|
|
32
|
+
}).strip().partial({
|
|
33
|
+
enabled: true,
|
|
34
|
+
resource_collection_id: true,
|
|
35
|
+
outdated: true
|
|
36
|
+
});
|
|
37
|
+
z.object({ available: z.boolean().optional() }).strict();
|
|
38
|
+
const DataAppFields = {
|
|
39
|
+
display_name: z.string().min(1).optional(),
|
|
40
|
+
description: z.string().nullable().optional(),
|
|
41
|
+
version: z.number().int().positive().optional(),
|
|
42
|
+
bundle_path: z.string().min(1).optional(),
|
|
43
|
+
allowed_hosts: z.array(z.string()).optional(),
|
|
44
|
+
enabled: z.boolean().optional()
|
|
45
|
+
};
|
|
46
|
+
const DataAppCreateInput = z.object({
|
|
47
|
+
name: DataAppSlug,
|
|
48
|
+
...DataAppFields
|
|
49
|
+
}).strict();
|
|
50
|
+
const DataAppUpdateInput = z.object(DataAppFields).strict();
|
|
51
|
+
//#endregion
|
|
52
|
+
export { DataAppSlug as a, DataAppEntry as i, DataAppCompact as n, DataAppUpdateInput as o, DataAppCreateInput as r, DataApp as t };
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { n as DataAppCompact } from "./data-app-BUW-HlUo.mjs";
|
|
2
|
+
//#region src/output/views/data-app.ts
|
|
3
|
+
const dataAppView = {
|
|
4
|
+
compactPick: DataAppCompact,
|
|
5
|
+
tableColumns: [
|
|
6
|
+
{
|
|
7
|
+
key: "name",
|
|
8
|
+
label: "Slug"
|
|
9
|
+
},
|
|
10
|
+
{
|
|
11
|
+
key: "display_name",
|
|
12
|
+
label: "Name"
|
|
13
|
+
},
|
|
14
|
+
{
|
|
15
|
+
key: "enabled",
|
|
16
|
+
label: "Enabled"
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
key: "resource_collection_id",
|
|
20
|
+
label: "Collection"
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
key: "outdated",
|
|
24
|
+
label: "Outdated"
|
|
25
|
+
}
|
|
26
|
+
]
|
|
27
|
+
};
|
|
28
|
+
//#endregion
|
|
29
|
+
export { dataAppView as t };
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { Pt as isFileNotFoundError, St as ConfigError, Z as parseJson } from "./cli.mjs";
|
|
2
|
+
import { z } from "zod";
|
|
3
|
+
import { cp, mkdir, readFile, readdir, rename, stat, writeFile } from "node:fs/promises";
|
|
4
|
+
import { basename, dirname, join, resolve } from "node:path";
|
|
5
|
+
//#region src/runtime/data-app-project.ts
|
|
6
|
+
const DEFAULT_BUNDLE_PATH = "dist/index.js";
|
|
7
|
+
const PackageManifest = z.object({}).loose();
|
|
8
|
+
const SHIPPED_GITIGNORE = "gitignore";
|
|
9
|
+
async function readBundle(path) {
|
|
10
|
+
try {
|
|
11
|
+
return await readFile(path, "utf8");
|
|
12
|
+
} catch (error) {
|
|
13
|
+
if (isFileNotFoundError(error)) throw new ConfigError(`bundle not found: ${path} — build the app first (npm run build)`);
|
|
14
|
+
throw error;
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
async function writeProjectFile(path, text) {
|
|
18
|
+
await mkdir(dirname(path), { recursive: true });
|
|
19
|
+
await writeFile(path, text, "utf8");
|
|
20
|
+
}
|
|
21
|
+
async function statOrNull(path) {
|
|
22
|
+
try {
|
|
23
|
+
return await stat(path);
|
|
24
|
+
} catch (error) {
|
|
25
|
+
if (isFileNotFoundError(error)) return null;
|
|
26
|
+
throw error;
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
async function isMissingOrEmpty(dir) {
|
|
30
|
+
const entry = await statOrNull(dir);
|
|
31
|
+
if (entry === null) return true;
|
|
32
|
+
if (!entry.isDirectory()) throw new ConfigError(`${dir} is not a directory — scaffold into a new or empty directory`);
|
|
33
|
+
return (await readdir(dir)).length === 0;
|
|
34
|
+
}
|
|
35
|
+
function packageNameFor(dir) {
|
|
36
|
+
const name = basename(resolve(dir)).toLowerCase().replace(/[^a-z0-9._~-]+/g, "-").replace(/^[-._]+/, "").replace(/-+$/, "");
|
|
37
|
+
if (name === "") throw new ConfigError(`cannot name the package after ${dir} — scaffold into a directory whose name has a letter or a digit`);
|
|
38
|
+
return name;
|
|
39
|
+
}
|
|
40
|
+
async function renamePackage(dir, name) {
|
|
41
|
+
const path = join(dir, "package.json");
|
|
42
|
+
const manifest = parseJson(await readFile(path, "utf8"), PackageManifest);
|
|
43
|
+
await writeFile(path, `${JSON.stringify({
|
|
44
|
+
...manifest,
|
|
45
|
+
name
|
|
46
|
+
}, null, 2)}\n`, "utf8");
|
|
47
|
+
}
|
|
48
|
+
/** Copies the app template into `dir`, which must be missing or empty, and names its package after `dir`. */
|
|
49
|
+
async function scaffoldDataAppProject({ dir, templateDir }) {
|
|
50
|
+
const packageName = packageNameFor(dir);
|
|
51
|
+
if (!await isMissingOrEmpty(dir)) throw new ConfigError(`${dir} is not empty — scaffold into a new or empty directory`);
|
|
52
|
+
await cp(templateDir, dir, { recursive: true });
|
|
53
|
+
await rename(join(dir, SHIPPED_GITIGNORE), join(dir, ".gitignore"));
|
|
54
|
+
await renamePackage(dir, packageName);
|
|
55
|
+
}
|
|
56
|
+
//#endregion
|
|
57
|
+
export { writeProjectFile as i, readBundle as n, scaffoldDataAppProject as r, DEFAULT_BUNDLE_PATH as t };
|