@metabase/cli 0.2.1-alpha.trust-system-ca.541e4e0 → 0.2.2-alpha.extract-api-client.27e2241
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 +4 -1715
- package/dist/add-collection-B3Ty8SzB.mjs +36 -0
- package/dist/alert-DT-ee7yf.mjs +23 -0
- package/dist/alerts-Bf2RH_p_.mjs +43 -0
- package/dist/{append-Cak5jykn.mjs → append-DFzQRPMd.mjs} +7 -12
- package/dist/{archive-BVY_jD_g.mjs → archive-4tmm946K.mjs} +8 -17
- package/dist/{archive-CytCvQpn.mjs → archive-B6eXiyER.mjs} +7 -13
- package/dist/{archive-op9pJRpg.mjs → archive-BxNPHxOY.mjs} +7 -13
- package/dist/archive-ByvA49Kz.mjs +34 -0
- package/dist/{archive-DfbI8DRB.mjs → archive-C7w49Grr.mjs} +7 -16
- package/dist/{archive-CPgWNCG3.mjs → archive-Cd29QC0c.mjs} +7 -13
- package/dist/{archive-BIEnBoE8.mjs → archive-ChORH5JH.mjs} +7 -13
- package/dist/archive-CwAdlv63.mjs +33 -0
- package/dist/{archive-CaKhG58H.mjs → archive-Dr9Xnx_Z.mjs} +7 -15
- package/dist/{archive-CjnCAM61.mjs → archive-gid9Y09v.mjs} +8 -17
- package/dist/{archive-BMbx6lt8.mjs → archive-lQqs13Uz.mjs} +7 -13
- package/dist/auth-Dltxua89.mjs +19 -0
- package/dist/{body-BW_CiL1d.mjs → body-Cur4NJt9.mjs} +5 -8
- package/dist/{body-flags-CgHgJBRC.mjs → body-flags-AqKpN01Y.mjs} +1 -2
- package/dist/{branches-gVRwKne4.mjs → branches-DchlyU0i.mjs} +7 -13
- package/dist/{cancel-CBOJSslz.mjs → cancel-BMQa5R1Z.mjs} +5 -12
- package/dist/{cancel-task-Djancczz.mjs → cancel-task-C5CU1pxU.mjs} +6 -10
- package/dist/card-CHI2bmds.mjs +24 -0
- package/dist/{card-B8G5jQQT.mjs → card-DZxRmver.mjs} +21 -48
- package/dist/card-zyUkr2nS.mjs +44 -0
- package/dist/cards-SccWvRQD.mjs +34 -0
- package/dist/cli.mjs +664 -83
- package/dist/client-BqhzKdLM.mjs +2194 -0
- package/dist/collection-CGoVLvcD.mjs +58 -0
- package/dist/collection-CY0AB99E.mjs +20 -0
- package/dist/{collection-C52Ndi_O.mjs → collection-CfulNRBG.mjs} +16 -61
- package/dist/{collection-namespace-w1y5D0Uh.mjs → collection-namespace-GwydWBF3.mjs} +3 -5
- package/dist/{create-VA58AF6A.mjs → create-BNQ_DytP.mjs} +8 -15
- package/dist/{create-CnT-L03B.mjs → create-BOLwWt8Q.mjs} +9 -17
- package/dist/{create-BkvdOecg.mjs → create-Beh-2uoN.mjs} +8 -15
- package/dist/{create-CvptjYVb.mjs → create-C79vErX0.mjs} +9 -20
- package/dist/{create-C_fyIHZU.mjs → create-CAQV2g6V.mjs} +9 -17
- package/dist/{create-q2QqkwEN.mjs → create-CAWytBE5.mjs} +9 -17
- package/dist/{create-CGsTL5aE.mjs → create-CCh_LyW9.mjs} +8 -15
- package/dist/{create-ldvT5L0W.mjs → create-CD008jdE.mjs} +13 -28
- package/dist/create-CHQx7jq4.mjs +45 -0
- package/dist/create-DF4QtgDL.mjs +44 -0
- package/dist/{create-D_eiLBqR.mjs → create-DJmXXQoq.mjs} +10 -18
- package/dist/{create-DbHIjWio.mjs → create-DV-Ln5Mo.mjs} +8 -15
- package/dist/create-branch-CYo6jZth.mjs +35 -0
- package/dist/{create-DZBtbGqj.mjs → create-i14Wv3Tj.mjs} +8 -15
- package/dist/{create-CnqGhtuF.mjs → create-tQbnuz-I.mjs} +8 -15
- package/dist/{create-BRK8TBzp.mjs → create-zeveFdnd.mjs} +6 -11
- package/dist/cron-LKRffEC-.mjs +5 -0
- package/dist/{csv-C3O1wTQ8.mjs → csv-B2Jgb1GM.mjs} +7 -19
- package/dist/{current-task-CZsZPe0o.mjs → current-task-MpBFGttd.mjs} +7 -12
- package/dist/{dashboard-BLihjDXg.mjs → dashboard-BCpSq_G-.mjs} +9 -60
- package/dist/dashboard-BHJBoaG7.mjs +33 -0
- package/dist/dashboard-CsIFFpzK.mjs +58 -0
- package/dist/database-B19qlLKZ.mjs +38 -0
- package/dist/database-C8G6ZKG0.mjs +26 -0
- package/dist/db-DsfojyeH.mjs +24 -0
- package/dist/{delete-BmT5C6eK.mjs → delete-B8e01xAG.mjs} +6 -11
- package/dist/{delete-Dkfu4e5K.mjs → delete-BApOjQvl.mjs} +6 -11
- package/dist/{delete-JeRzVISE.mjs → delete-Ck0q4Dzp.mjs} +6 -11
- package/dist/{delete-cF97pfFX.mjs → delete-DFmX7jTp.mjs} +6 -11
- package/dist/{delete-DgI03U43.mjs → delete-Ob06PPie.mjs} +6 -11
- package/dist/{delete-runtime-DiqKOEqi.mjs → delete-runtime-D74s6vhu.mjs} +6 -13
- package/dist/{delete-table-dnQs_Twm.mjs → delete-table-DuyhGrvA.mjs} +6 -11
- package/dist/{dependencies-BsMwFSxP.mjs → dependencies-Bj3QrGIm.mjs} +10 -13
- package/dist/dirty-DNYoM6Bp.mjs +31 -0
- package/dist/document-BbskZPTT.mjs +19 -0
- package/dist/{document-D4zB-5a0.mjs → document-Cd2mmqCp.mjs} +5 -33
- package/dist/document-D6OybtP2.mjs +29 -0
- package/dist/{eid-60sCZhQV.mjs → eid-WTZmDdsr.mjs} +12 -54
- package/dist/eid-translation-zEHtr5Oc.mjs +35 -0
- package/dist/{embedding-CKdw8q7p.mjs → embedding-i-KqpefC.mjs} +2 -4
- package/dist/events-Bn7jh5lP.mjs +39 -0
- package/dist/export-BjfoZRDJ.mjs +66 -0
- package/dist/field-BPsNa-TO.mjs +80 -0
- package/dist/{field-DsXTeqBy.mjs → field-Cr2DPUG9.mjs} +2 -81
- package/dist/field-Zau6Hc6X.mjs +18 -0
- package/dist/fields-CBBa-Prp.mjs +34 -0
- package/dist/{get-CaosV7j8.mjs → get-00lyLv6R.mjs} +7 -11
- package/dist/{get-DxAx-2C0.mjs → get-B7sMgsFs.mjs} +7 -11
- package/dist/get-B_xdF1kq.mjs +31 -0
- package/dist/{get-B_EinsrO.mjs → get-ByBOq30r.mjs} +7 -11
- package/dist/get-Bz99dAxK.mjs +35 -0
- package/dist/get-C2-Q3iQ5.mjs +31 -0
- package/dist/get-CDJFVvhj.mjs +35 -0
- package/dist/get-CDMGbgrh.mjs +31 -0
- package/dist/get-CnbUCzDM.mjs +31 -0
- package/dist/{get-L8c_h5EP.mjs → get-CvI--9S_.mjs} +16 -12
- package/dist/{get-CRXEqpar.mjs → get-DRvsATp-.mjs} +7 -11
- package/dist/{get-BNBRMNtC.mjs → get-DY03Azx9.mjs} +6 -11
- package/dist/get-DYO1kywc.mjs +32 -0
- package/dist/{get-CKnHNxak.mjs → get-D_h-G9bn.mjs} +7 -11
- package/dist/get-DdsoHaKH.mjs +31 -0
- package/dist/{get-Ct5TnofS.mjs → get-DkWO0EI0.mjs} +7 -11
- package/dist/{get-fGOQA0GF.mjs → get-Dmj9Ygz1.mjs} +7 -17
- package/dist/get-DmpB6J9g.mjs +31 -0
- package/dist/{get-Csa7Dz36.mjs → get-Dn9ZiSZr.mjs} +8 -16
- package/dist/{get-run-DqwPQRMJ.mjs → get-run-Cnux9ln0.mjs} +7 -11
- package/dist/git-sync-BDnxPrqU.mjs +104 -0
- package/dist/git-sync-DxD_ng48.mjs +136 -0
- package/dist/git-sync-MQQYRYLg.mjs +28 -0
- package/dist/{group-CILtQqCL.mjs → group-DBM87IgC.mjs} +2 -4
- package/dist/has-remote-changes-C684Redh.mjs +35 -0
- package/dist/import-Rmmttboo.mjs +56 -0
- package/dist/{input-D2-H-QKX.mjs → input-DH9i67x_.mjs} +6 -11
- package/dist/{is-dirty-B87YMLV2.mjs → is-dirty-DYeJYhBz.mjs} +4 -8
- package/dist/{items-DrP1b4Qj.mjs → items-CQlPXBXE.mjs} +13 -29
- package/dist/key-BEhqIzIQ.mjs +10 -0
- package/dist/{library-bUBWlweP.mjs → library-Bsm5KsFF.mjs} +6 -9
- package/dist/library-ClLgrAXy.mjs +19 -0
- package/dist/library-DfYAT2Ep.mjs +21 -0
- package/dist/{list-B8zgT05M.mjs → list-B4hJuMhA.mjs} +11 -27
- package/dist/list-B8nAGwP4.mjs +48 -0
- package/dist/list-BOET6zhP.mjs +36 -0
- package/dist/list-BP3MPq-M.mjs +36 -0
- package/dist/list-BpFp9Wre.mjs +28 -0
- package/dist/list-BtkWNtvY.mjs +34 -0
- package/dist/list-BtmsNOEn.mjs +28 -0
- package/dist/list-BzVTHOoH.mjs +28 -0
- package/dist/list-C5Zs8nrb.mjs +28 -0
- package/dist/list-CKK-s3Ty.mjs +28 -0
- package/dist/list-CMpoc2TN.mjs +70 -0
- package/dist/list-CNUiF8Z7.mjs +28 -0
- package/dist/list-CQDprvW0.mjs +39 -0
- package/dist/{list-DCl7zHCp.mjs → list-CQwOgIlj.mjs} +10 -24
- package/dist/list-DE9FM957.mjs +28 -0
- package/dist/{list-F_hMRbsa.mjs → list-DF2rvoO1.mjs} +22 -14
- package/dist/list-DMKDsBRd.mjs +38 -0
- package/dist/{list-TibX1b8i.mjs → list-UhpKG6_m.mjs} +15 -15
- package/dist/{login-C5Ug3BVC.mjs → login-CGHeSjlP.mjs} +47 -52
- package/dist/{logout-B_N1N2DV.mjs → logout-DAxOlbv4.mjs} +7 -12
- package/dist/measure-4P0bOlZ3.mjs +29 -0
- package/dist/measure-BsYv0p26.mjs +22 -0
- package/dist/{measure-ByY4U3ZK.mjs → measure-CtfjqJFP.mjs} +3 -30
- package/dist/network-error-CEb9ymDW.mjs +423 -0
- package/dist/notification-DaA4bBHW.mjs +138 -0
- package/dist/notification-Fcq1fIPw.mjs +67 -0
- package/dist/{parameter-BZ6y-Gfs.mjs → parameter-DUKR8NXo.mjs} +2 -11
- package/dist/{parameter-values-ZXKECrJk.mjs → parameter-values-CJTdqd8c.mjs} +17 -11
- package/dist/{parse-enum-D5h-JePs.mjs → parse-enum-D0Jfm_Bz.mjs} +2 -4
- package/dist/{parse-id-ySsF4nA3.mjs → parse-id-C_jmKFaa.mjs} +2 -4
- package/dist/{parse-ref-Ds8VxdKb.mjs → parse-ref-ibKVB0J4.mjs} +3 -5
- package/dist/{path-C6ucgeYs.mjs → path-B5gHvrYL.mjs} +8 -9
- package/dist/{poll-CgzD9_RH.mjs → poll-75SvT7Zv.mjs} +11 -15
- package/dist/predicates-Bkm2IoeX.mjs +170 -0
- package/dist/preflight-YpPQo-sa.mjs +29 -0
- package/dist/{process-jjR_DX5G.mjs → process-DBOOrmET.mjs} +4 -6
- package/dist/{publish-F-QbufXr.mjs → publish-DijrxaCW.mjs} +29 -24
- package/dist/pulse-BmsDenXm.mjs +133 -0
- package/dist/pulse-DhG6I9mI.mjs +57 -0
- package/dist/{query-DX4r0-uz.mjs → query-BbqECzmF.mjs} +20 -44
- package/dist/{query-DGBzATpV.mjs → query-Dc__-KJH.mjs} +13 -24
- package/dist/{query-result-D5J3Dlpn.mjs → query-result-DBDwk8TS.mjs} +4 -8
- package/dist/remove-collection-BOnxYvhj.mjs +36 -0
- package/dist/{render-CkuFkWlQ.mjs → render-CI93iP0I.mjs} +9 -11
- package/dist/{replace-xlQv9yl_.mjs → replace-Cq4CxVa-.mjs} +7 -12
- package/dist/rescan-values-Dr_j416g.mjs +31 -0
- package/dist/revision-message-flag-8TCHYJV6.mjs +8 -0
- package/dist/run-C3DkS6NP.mjs +82 -0
- package/dist/{run-opQkYIaT.mjs → run-DdGJ544X.mjs} +8 -18
- package/dist/runs-CUNWiidL.mjs +38 -0
- package/dist/runtime-DiKyBxOw.mjs +1007 -0
- package/dist/{schema-tables-8FjtkFIt.mjs → schema-tables-CV386fnC.mjs} +10 -14
- package/dist/{schemas-L9kMsEJL.mjs → schemas-DM-UqZBQ.mjs} +8 -12
- package/dist/search-DFBwUc6d.mjs +44 -0
- package/dist/{search-Csbb-u-_.mjs → search-DmGScXs8.mjs} +14 -73
- package/dist/segment-BzUGM2Fr.mjs +22 -0
- package/dist/segment-C_gl5ag6.mjs +29 -0
- package/dist/{segment-eeGhLo7_.mjs → segment-OsrbUDzw.mjs} +3 -30
- package/dist/{selectors-D34gXjQa.mjs → selectors-DGDn0Hto.mjs} +4 -6
- package/dist/send-CVxxEpDB.mjs +49 -0
- package/dist/{set-CfwncOI_.mjs → set-DFolTjbd.mjs} +10 -20
- package/dist/{set-active-gP4mjVDY.mjs → set-active-BD8L1lPX.mjs} +7 -18
- package/dist/setting-CwRYgHYN.mjs +35 -0
- package/dist/setting-DTiLCW8g.mjs +22 -0
- package/dist/setting-DyhaeICs.mjs +17 -0
- package/dist/setup-BbDQN8fe.mjs +44 -0
- package/dist/setup-CO7QV-ao.mjs +21 -0
- package/dist/signal-CMd0EFUa.mjs +16 -0
- package/dist/{skills-DvSQOPWg.mjs → skills--vK6J-e4.mjs} +4 -6
- package/dist/{skills-aRQfUvCq.mjs → skills-DTCrMcix.mjs} +13 -19
- package/dist/{snippet-CdjEhVCT.mjs → snippet-CyKAgIZl.mjs} +3 -32
- package/dist/snippet-DRwKb2x7.mjs +19 -0
- package/dist/snippet-oJLaYW9V.mjs +29 -0
- package/dist/stash-D0S4JmAz.mjs +61 -0
- package/dist/{status-BsEPyknG.mjs → status-BhswxJL1.mjs} +23 -23
- package/dist/{status-D1vtL5eW.mjs → status-hL1am-HV.mjs} +6 -8
- package/dist/subscription-_d5fB45F.mjs +22 -0
- package/dist/subscriptions-s4TF6Ax3.mjs +42 -0
- package/dist/summary-BytbDz6e.mjs +7 -0
- package/dist/summary-CsPvcUwW.mjs +31 -0
- package/dist/sync-schema-DaZ_MV-u.mjs +35 -0
- package/dist/sync-task-BACcrs0i.mjs +37 -0
- package/dist/{table-3onHpwcb.mjs → table-CeeTJgQb.mjs} +4 -38
- package/dist/table-CsIJNPFf.mjs +37 -0
- package/dist/table-DYoC1kPn.mjs +18 -0
- package/dist/{timeline-2ShuGr4f.mjs → timeline-CCSU2qOS.mjs} +2 -66
- package/dist/timeline-event-CNQdCTDg.mjs +19 -0
- package/dist/timeline-uDCmwGFT.mjs +66 -0
- package/dist/timeline-xlDbEKWg.mjs +21 -0
- package/dist/transform-Bs0EWijQ.mjs +28 -0
- package/dist/{transform-DNSMm1dV.mjs → transform-D3QX0jxA.mjs} +28 -74
- package/dist/transform-DoTyyXAu.mjs +74 -0
- package/dist/transform-job-50GZHhKH.mjs +37 -0
- package/dist/transform-job-BcLChRup.mjs +22 -0
- package/dist/{transform-job-CvE0MBBo.mjs → transform-job-DRrK28IH.mjs} +14 -41
- package/dist/{transform-tag-xdxjlDcD.mjs → transform-tag-CcElGp3C.mjs} +2 -21
- package/dist/transform-tag-Dmb4u3-Q.mjs +21 -0
- package/dist/transform-tag-_tgwlsdB.mjs +18 -0
- package/dist/{transforms-BQkmsPUR.mjs → transforms-oU4zizbO.mjs} +10 -13
- package/dist/{tree-CtufTBZY.mjs → tree-CH-f3bjP.mjs} +6 -10
- package/dist/{unpublish-CnLXPYR8.mjs → unpublish-BUl9RU5C.mjs} +7 -18
- package/dist/{update-BC-MLtiG.mjs → update-BCS5FxKr.mjs} +11 -19
- package/dist/{update-CqQj32ol.mjs → update-BZPllQoR.mjs} +9 -16
- package/dist/{update-DmQJqGvX.mjs → update-BiFDBcEH.mjs} +9 -16
- package/dist/update-BzMDeZiU.mjs +50 -0
- package/dist/{update-Dt9-3Tqf.mjs → update-C4YJQFDS.mjs} +9 -16
- package/dist/{update-C4P_YtGW.mjs → update-CHNSUHK4.mjs} +9 -16
- package/dist/{update-bz-FKwuR.mjs → update-CO4m4wH3.mjs} +10 -21
- package/dist/{update-BZxLyBVm.mjs → update-CVPAwJaH.mjs} +10 -18
- package/dist/{update-dJ2mlCXm.mjs → update-CmDTljK-.mjs} +9 -16
- package/dist/{update-DcYwxb-R.mjs → update-CvOO8TED.mjs} +9 -17
- package/dist/{update-QNuvGuS3.mjs → update-D-NE60AV.mjs} +9 -16
- package/dist/{update-DshCe-bl.mjs → update-Nfi44RrE.mjs} +10 -18
- package/dist/update-bD_Jh5-s.mjs +51 -0
- package/dist/{update-D6blsNGY.mjs → update-cYkvbqK8.mjs} +9 -16
- package/dist/update-dashcard-C3TuYO_k.mjs +50 -0
- package/dist/{update-CE-Z6E8V.mjs → update-tX9mKBN_.mjs} +10 -21
- package/dist/{upgrade--_g3bacj.mjs → upgrade-DXMV4AyP.mjs} +37 -44
- package/dist/upload-CH632qW6.mjs +46 -0
- package/dist/upload-DAtxBBms.mjs +13 -0
- package/dist/upload-Dey_8rLf.mjs +13 -0
- package/dist/{uuid-DBKkosBq.mjs → uuid-BJkDWj9p.mjs} +5 -7
- package/dist/validate-BWchyW0V.mjs +1469 -0
- package/dist/{validate-query-tECK019A.mjs → validate-query-DaGYSmpQ.mjs} +4 -5
- package/dist/{values-BAhMnVh6.mjs → values-Dxf1JEoA.mjs} +8 -13
- package/dist/verify-K96rItG5.mjs +89 -0
- package/dist/{wait-BJ_87Yz0.mjs → wait-DoMDH226.mjs} +10 -18
- package/dist/{wait-flags-DEn-3mjb.mjs → wait-flags-DWEF9tX4.mjs} +14 -11
- package/dist/window-BkvrP0gB.mjs +64 -0
- package/package.json +5 -35
- package/skill-data/core/SKILL.md +30 -25
- package/skill-data/dashboard/SKILL.md +6 -2
- package/skill-data/document/SKILL.md +2 -2
- package/skill-data/notification/SKILL.md +157 -0
- package/skill-data/transform/SKILL.md +1 -1
- package/.claude-plugin/marketplace.json +0 -19
- package/dist/add-collection-BZAVH5Wk.mjs +0 -60
- package/dist/add-collection-DByJYvGO.mjs +0 -9
- package/dist/auth-XfuGXI2K.mjs +0 -22
- package/dist/capabilities-CSjeWyLV.mjs +0 -684
- package/dist/card-B_kiDDil.mjs +0 -26
- package/dist/cards-23FtfL4S.mjs +0 -38
- package/dist/cli.d.mts +0 -1
- package/dist/collection-DNzM3u7n.mjs +0 -23
- package/dist/command-augment-D9pI9Vbh.mjs +0 -11
- package/dist/create-branch-BtqOfSRb.mjs +0 -57
- package/dist/dashboard-kb1oz7Z3.mjs +0 -35
- package/dist/database-BOqzcexD.mjs +0 -61
- package/dist/db-CHnqeJCo.mjs +0 -27
- package/dist/dirty-CN6sGKX3.mjs +0 -35
- package/dist/document-Y_DZNi4D.mjs +0 -22
- package/dist/events-CSZEAgs0.mjs +0 -44
- package/dist/export-CAxUJer6.mjs +0 -103
- package/dist/field-DAB2gImv.mjs +0 -21
- package/dist/fields-CLWtUlpR.mjs +0 -37
- package/dist/get-B22wjDxr.mjs +0 -38
- package/dist/get-BIHtWl2x.mjs +0 -35
- package/dist/get-B_QKP1vR.mjs +0 -35
- package/dist/get-Ca30K5_W.mjs +0 -35
- package/dist/get-DTjeTNGb.mjs +0 -49
- package/dist/get-DU8V-7S2.mjs +0 -35
- package/dist/get-H3X5e5-Y.mjs +0 -41
- package/dist/git-sync-BhhdNjq5.mjs +0 -31
- package/dist/has-remote-changes-D0ZIBHSk.mjs +0 -67
- package/dist/import-BcIcDPl9.mjs +0 -94
- package/dist/is-dirty-CXTS25Tk.mjs +0 -8
- package/dist/key-GP1gxZZD.mjs +0 -17
- package/dist/list-B-_PTqKw.mjs +0 -53
- package/dist/list-B8212eUr.mjs +0 -39
- package/dist/list-BhCahBEO.mjs +0 -39
- package/dist/list-CWQYaCp8.mjs +0 -31
- package/dist/list-Cbhx7N_t.mjs +0 -31
- package/dist/list-CoXeBm66.mjs +0 -49
- package/dist/list-D1pHJX7w.mjs +0 -31
- package/dist/list-DhT42e0q.mjs +0 -31
- package/dist/list-GeqRHx8g.mjs +0 -31
- package/dist/list-MPePXEWe.mjs +0 -31
- package/dist/list-TJjExx6e.mjs +0 -31
- package/dist/list-TQghfc-u.mjs +0 -39
- package/dist/listing-wFZuS5li.mjs +0 -10
- package/dist/measure-D9rKeA6Z.mjs +0 -25
- package/dist/paginate-FVZUxL4J.mjs +0 -49
- package/dist/poll-task-DF9xJl13.mjs +0 -194
- package/dist/preflight-Co2grgX_.mjs +0 -90
- package/dist/prompt-BSqji7Fo.mjs +0 -52
- package/dist/remove-collection-C-msSyas.mjs +0 -42
- package/dist/requests-COuEPJxE.mjs +0 -96
- package/dist/rescan-values-BC2SVtY6.mjs +0 -40
- package/dist/resolve-8iT-dXgX.mjs +0 -91
- package/dist/revision-message-flag-vt_V8ACy.mjs +0 -11
- package/dist/run-Cg6k3kHo.mjs +0 -135
- package/dist/runs-Cbqm1HYG.mjs +0 -53
- package/dist/runtime-MGH96fhp.mjs +0 -1695
- package/dist/segment-DCeafJwX.mjs +0 -25
- package/dist/setting-D5Y9sJha.mjs +0 -20
- package/dist/setting-DADuiF5W.mjs +0 -55
- package/dist/setup-D9HNfS7W.mjs +0 -71
- package/dist/snippet-CwRiMCfE.mjs +0 -22
- package/dist/stash-C_k1uZlf.mjs +0 -108
- package/dist/summary-h20AjhcO.mjs +0 -40
- package/dist/sync-schema-D67cYLhd.mjs +0 -54
- package/dist/sync-scope-CKx6xeF6.mjs +0 -55
- package/dist/table-CmKFWPvJ.mjs +0 -21
- package/dist/timeline-1ZphX3zj.mjs +0 -24
- package/dist/timeline-event-C6aKZ4EO.mjs +0 -22
- package/dist/transform-CvsBOTqB.mjs +0 -31
- package/dist/transform-job-D_8Kp772.mjs +0 -25
- package/dist/transform-tag-DhDnvbmq.mjs +0 -21
- package/dist/update-dashcard-CQP-qd6a.mjs +0 -73
- package/dist/upload-BOFc_eZD.mjs +0 -16
- package/dist/validate-Bpqt3ntH.mjs +0 -1496
- package/dist/verify-RLb2DoOX.mjs +0 -79
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
|
-
|
|
3
|
-
//#region src/domain/parameter.ts
|
|
2
|
+
//#region ../client/src/domain/parameter.ts
|
|
4
3
|
const ParameterType = z.enum([
|
|
5
4
|
"number",
|
|
6
5
|
"text",
|
|
@@ -106,13 +105,5 @@ const ParameterValuesCompact = ParameterValues.pick({
|
|
|
106
105
|
values: true,
|
|
107
106
|
has_more_values: true
|
|
108
107
|
}).strip();
|
|
109
|
-
const parameterValuesView = {
|
|
110
|
-
compactPick: ParameterValuesCompact,
|
|
111
|
-
tableColumns: [{
|
|
112
|
-
key: "has_more_values",
|
|
113
|
-
label: "More available"
|
|
114
|
-
}]
|
|
115
|
-
};
|
|
116
|
-
|
|
117
108
|
//#endregion
|
|
118
|
-
export {
|
|
109
|
+
export { ParameterValuesCompact as i, ParameterMapping as n, ParameterValues as r, Parameter as t };
|
|
@@ -1,9 +1,17 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import "./
|
|
3
|
-
import { defineMetabaseCommand } from "./runtime-
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
|
|
1
|
+
import { i as ConfigError } from "./predicates-Bkm2IoeX.mjs";
|
|
2
|
+
import { F as outputFlags, I as profileFlag, M as connectionFlags, c as renderSummary } from "./cli.mjs";
|
|
3
|
+
import { t as defineMetabaseCommand } from "./runtime-DiKyBxOw.mjs";
|
|
4
|
+
import { t as parseId } from "./parse-id-C_jmKFaa.mjs";
|
|
5
|
+
import { i as ParameterValuesCompact, r as ParameterValues } from "./parameter-DUKR8NXo.mjs";
|
|
6
|
+
//#region src/output/views/parameter.ts
|
|
7
|
+
const parameterValuesView = {
|
|
8
|
+
compactPick: ParameterValuesCompact,
|
|
9
|
+
tableColumns: [{
|
|
10
|
+
key: "has_more_values",
|
|
11
|
+
label: "More available"
|
|
12
|
+
}]
|
|
13
|
+
};
|
|
14
|
+
//#endregion
|
|
7
15
|
//#region src/commands/dashboard/parameter-values.ts
|
|
8
16
|
var parameter_values_default = defineMetabaseCommand({
|
|
9
17
|
meta: {
|
|
@@ -42,13 +50,11 @@ var parameter_values_default = defineMetabaseCommand({
|
|
|
42
50
|
const parameterId = args["parameter-id"];
|
|
43
51
|
if (parameterId === "") throw new ConfigError("parameter-id must not be empty");
|
|
44
52
|
const client = await getClient();
|
|
45
|
-
const
|
|
46
|
-
const
|
|
47
|
-
const result = await client.requestParsed(ParameterValues, path);
|
|
53
|
+
const search = args.query === void 0 || args.query === "" ? null : args.query;
|
|
54
|
+
const result = search === null ? await client.dashboard.parameterValues(dashboardId, parameterId) : await client.dashboard.searchParameterValues(dashboardId, parameterId, search);
|
|
48
55
|
const more = result.has_more_values ? " (more available — narrow with --query)" : "";
|
|
49
56
|
renderSummary(result, parameterValuesView, `${result.values.length} value(s)${more}.`, ctx);
|
|
50
57
|
}
|
|
51
58
|
});
|
|
52
|
-
|
|
53
59
|
//#endregion
|
|
54
|
-
export { parameter_values_default as default };
|
|
60
|
+
export { parameter_values_default as default };
|
|
@@ -1,11 +1,9 @@
|
|
|
1
|
-
import { ConfigError } from "./
|
|
2
|
-
|
|
1
|
+
import { i as ConfigError } from "./predicates-Bkm2IoeX.mjs";
|
|
3
2
|
//#region src/commands/parse-enum.ts
|
|
4
3
|
function parseEnumFlag(value, schema, name) {
|
|
5
4
|
const result = schema.safeParse(value);
|
|
6
5
|
if (result.success) return result.data;
|
|
7
6
|
throw new ConfigError(`invalid ${name}: "${value}" (expected one of: ${schema.options.join(", ")})`);
|
|
8
7
|
}
|
|
9
|
-
|
|
10
8
|
//#endregion
|
|
11
|
-
export { parseEnumFlag };
|
|
9
|
+
export { parseEnumFlag as t };
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
import { parseInteger } from "./runtime-
|
|
2
|
-
|
|
1
|
+
import { R as parseInteger } from "./runtime-DiKyBxOw.mjs";
|
|
3
2
|
//#region src/commands/parse-id.ts
|
|
4
3
|
function parseId(value, name = "id") {
|
|
5
4
|
return parseInteger(value, {
|
|
@@ -7,6 +6,5 @@ function parseId(value, name = "id") {
|
|
|
7
6
|
min: 1
|
|
8
7
|
});
|
|
9
8
|
}
|
|
10
|
-
|
|
11
9
|
//#endregion
|
|
12
|
-
export { parseId };
|
|
10
|
+
export { parseId as t };
|
|
@@ -1,7 +1,6 @@
|
|
|
1
|
-
import { ConfigError } from "./
|
|
2
|
-
|
|
1
|
+
import { i as ConfigError } from "./predicates-Bkm2IoeX.mjs";
|
|
3
2
|
//#region src/commands/collection/parse-ref.ts
|
|
4
|
-
const SPECIAL_TOKENS = new Set(["root", "trash"]);
|
|
3
|
+
const SPECIAL_TOKENS = /* @__PURE__ */ new Set(["root", "trash"]);
|
|
5
4
|
const POSITIVE_INTEGER_PATTERN = /^[1-9]\d*$/;
|
|
6
5
|
const NANO_ID_PATTERN = /^[A-Za-z0-9_-]{21}$/;
|
|
7
6
|
const FORMAT_HINT = "expected integer, \"root\", \"trash\", or 21-char entity id";
|
|
@@ -12,6 +11,5 @@ function parseCollectionRef(raw) {
|
|
|
12
11
|
if (POSITIVE_INTEGER_PATTERN.test(trimmed) || NANO_ID_PATTERN.test(trimmed)) return trimmed;
|
|
13
12
|
throw new ConfigError(`invalid id: ${JSON.stringify(raw)} (${FORMAT_HINT})`);
|
|
14
13
|
}
|
|
15
|
-
|
|
16
14
|
//#endregion
|
|
17
|
-
export { parseCollectionRef };
|
|
15
|
+
export { parseCollectionRef as t };
|
|
@@ -1,9 +1,8 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import "./
|
|
3
|
-
import {
|
|
4
|
-
import { findSkillByName, loadAllSkills
|
|
1
|
+
import { F as outputFlags, N as listFlags, R as listEnvelopeSchema, s as renderList } from "./cli.mjs";
|
|
2
|
+
import { t as defineMetabaseCommand } from "./runtime-DiKyBxOw.mjs";
|
|
3
|
+
import { n as windowList } from "./window-BkvrP0gB.mjs";
|
|
4
|
+
import { i as loadVisibleSkills, n as findSkillByName, r as loadAllSkills } from "./skills-DTCrMcix.mjs";
|
|
5
5
|
import { z } from "zod";
|
|
6
|
-
|
|
7
6
|
//#region src/commands/skills/path.ts
|
|
8
7
|
const SkillPath = z.object({
|
|
9
8
|
name: z.string(),
|
|
@@ -25,8 +24,10 @@ var path_default = defineMetabaseCommand({
|
|
|
25
24
|
name: "path",
|
|
26
25
|
description: "Print the absolute path to a skill (or all skills). Useful when an agent needs to read the SKILL.md or its references with the Read tool directly."
|
|
27
26
|
},
|
|
27
|
+
capabilities: null,
|
|
28
28
|
args: {
|
|
29
29
|
...outputFlags,
|
|
30
|
+
...listFlags,
|
|
30
31
|
name: {
|
|
31
32
|
type: "positional",
|
|
32
33
|
description: "Skill name (omit to list every non-hidden skill)",
|
|
@@ -40,8 +41,7 @@ var path_default = defineMetabaseCommand({
|
|
|
40
41
|
"mb skills path core --json"
|
|
41
42
|
],
|
|
42
43
|
run({ args, ctx }) {
|
|
43
|
-
|
|
44
|
-
renderList(wrapList(items), skillPathView, ctx);
|
|
44
|
+
renderList(windowList(args.name === void 0 ? loadVisibleSkills().map(toSkillPath) : [toSkillPath(findSkillByName(loadAllSkills(), args.name))], ctx.range), skillPathView, ctx);
|
|
45
45
|
}
|
|
46
46
|
});
|
|
47
47
|
function toSkillPath(info) {
|
|
@@ -50,6 +50,5 @@ function toSkillPath(info) {
|
|
|
50
50
|
dir: info.dir
|
|
51
51
|
};
|
|
52
52
|
}
|
|
53
|
-
|
|
54
53
|
//#endregion
|
|
55
|
-
export { path_default as default };
|
|
54
|
+
export { path_default as default };
|
|
@@ -1,28 +1,25 @@
|
|
|
1
|
-
import { TimeoutError } from "./
|
|
2
|
-
import {
|
|
1
|
+
import { l as TimeoutError } from "./predicates-Bkm2IoeX.mjs";
|
|
2
|
+
import { n as throwIfAborted, t as combineAborts } from "./signal-CMd0EFUa.mjs";
|
|
3
3
|
import { setTimeout } from "node:timers/promises";
|
|
4
|
-
|
|
5
|
-
//#region src/runtime/poll.ts
|
|
4
|
+
//#region ../client/src/poll.ts
|
|
6
5
|
const DEFAULT_INTERVAL_MS = 2e3;
|
|
7
|
-
const DEFAULT_MAX_INTERVAL_MS = 3e4;
|
|
8
6
|
const DEFAULT_TIMEOUT_MS = 6e5;
|
|
9
7
|
async function pollUntil(fn, done, opts = {}) {
|
|
10
|
-
const intervalMs = opts.intervalMs ??
|
|
11
|
-
const maxIntervalMs = opts.maxIntervalMs ??
|
|
12
|
-
const timeoutMs = opts.timeoutMs ??
|
|
8
|
+
const intervalMs = opts.intervalMs ?? 2e3;
|
|
9
|
+
const maxIntervalMs = opts.maxIntervalMs ?? 3e4;
|
|
10
|
+
const timeoutMs = opts.timeoutMs ?? 6e5;
|
|
13
11
|
const backoff = opts.backoff ?? "fixed";
|
|
14
|
-
const
|
|
15
|
-
const { combined, processSignal } = combineAborts(timeoutSignal, opts.signal);
|
|
12
|
+
const combined = combineAborts(AbortSignal.timeout(timeoutMs), opts.signal);
|
|
16
13
|
let interval = intervalMs;
|
|
17
14
|
let attempts = 0;
|
|
18
15
|
while (true) {
|
|
19
|
-
throwIfAborted(
|
|
16
|
+
throwIfAborted(opts.signal);
|
|
20
17
|
if (combined.aborted) throw pollTimeout(timeoutMs, attempts);
|
|
21
18
|
let value;
|
|
22
19
|
try {
|
|
23
20
|
value = await fn(combined);
|
|
24
21
|
} catch (error) {
|
|
25
|
-
throwIfAborted(
|
|
22
|
+
throwIfAborted(opts.signal);
|
|
26
23
|
if (combined.aborted) throw pollTimeout(timeoutMs, attempts);
|
|
27
24
|
throw error;
|
|
28
25
|
}
|
|
@@ -31,7 +28,7 @@ async function pollUntil(fn, done, opts = {}) {
|
|
|
31
28
|
try {
|
|
32
29
|
await setTimeout(interval, void 0, { signal: combined });
|
|
33
30
|
} catch (error) {
|
|
34
|
-
throwIfAborted(
|
|
31
|
+
throwIfAborted(opts.signal);
|
|
35
32
|
if (combined.aborted) throw pollTimeout(timeoutMs, attempts);
|
|
36
33
|
throw error;
|
|
37
34
|
}
|
|
@@ -45,6 +42,5 @@ function pollTimeout(timeoutMs, attempts) {
|
|
|
45
42
|
attempts
|
|
46
43
|
});
|
|
47
44
|
}
|
|
48
|
-
|
|
49
45
|
//#endregion
|
|
50
|
-
export {
|
|
46
|
+
export { DEFAULT_TIMEOUT_MS as n, pollUntil as r, DEFAULT_INTERVAL_MS as t };
|
|
@@ -0,0 +1,170 @@
|
|
|
1
|
+
import { ZodError, core } from "zod";
|
|
2
|
+
//#region ../client/src/json-pointer.ts
|
|
3
|
+
function escapeJsonPointerSegment(key) {
|
|
4
|
+
if (typeof key === "number") return String(key);
|
|
5
|
+
return (typeof key === "symbol" ? key.toString() : key).replaceAll("~", "~0").replaceAll("/", "~1");
|
|
6
|
+
}
|
|
7
|
+
//#endregion
|
|
8
|
+
//#region ../client/src/errors.ts
|
|
9
|
+
var MetabaseError = class extends Error {
|
|
10
|
+
get userMessage() {
|
|
11
|
+
return this.message;
|
|
12
|
+
}
|
|
13
|
+
};
|
|
14
|
+
var NetworkError = class extends MetabaseError {
|
|
15
|
+
category = "network";
|
|
16
|
+
isRetryable = true;
|
|
17
|
+
developerDetail;
|
|
18
|
+
constructor(message, developerDetail) {
|
|
19
|
+
super(message);
|
|
20
|
+
this.name = "NetworkError";
|
|
21
|
+
this.developerDetail = developerDetail;
|
|
22
|
+
}
|
|
23
|
+
};
|
|
24
|
+
var TimeoutError = class extends MetabaseError {
|
|
25
|
+
category = "timeout";
|
|
26
|
+
isRetryable = true;
|
|
27
|
+
developerDetail;
|
|
28
|
+
constructor(message, developerDetail) {
|
|
29
|
+
super(message);
|
|
30
|
+
this.name = "TimeoutError";
|
|
31
|
+
this.developerDetail = developerDetail;
|
|
32
|
+
}
|
|
33
|
+
};
|
|
34
|
+
var ValidationError = class extends MetabaseError {
|
|
35
|
+
category = "validation";
|
|
36
|
+
isRetryable = false;
|
|
37
|
+
developerDetail;
|
|
38
|
+
constructor(message, developerDetail) {
|
|
39
|
+
super(message);
|
|
40
|
+
this.name = "ValidationError";
|
|
41
|
+
this.developerDetail = developerDetail;
|
|
42
|
+
}
|
|
43
|
+
get userMessage() {
|
|
44
|
+
const issues = this.developerDetail.zodIssues;
|
|
45
|
+
if (issues.length === 0) return this.message;
|
|
46
|
+
return `${this.message}\n${formatIssueLines(issues, VALIDATION_ISSUE_FORMAT)}`;
|
|
47
|
+
}
|
|
48
|
+
};
|
|
49
|
+
const VALIDATION_MAX_ISSUES = 10;
|
|
50
|
+
const RESPONSE_SHAPE_MAX_ISSUES = 5;
|
|
51
|
+
const VALIDATION_ISSUE_FORMAT = {
|
|
52
|
+
max: VALIDATION_MAX_ISSUES,
|
|
53
|
+
formatIssue: (issue) => `${formatZodIssuePointer(issue.path)}: ${issue.message}`
|
|
54
|
+
};
|
|
55
|
+
const RESPONSE_SHAPE_ISSUE_FORMAT = {
|
|
56
|
+
max: RESPONSE_SHAPE_MAX_ISSUES,
|
|
57
|
+
formatIssue: formatZodIssue
|
|
58
|
+
};
|
|
59
|
+
function formatIssueLines(issues, format) {
|
|
60
|
+
const head = issues.slice(0, format.max).map(format.formatIssue);
|
|
61
|
+
const overflow = issues.length - format.max;
|
|
62
|
+
if (overflow > 0) head.push(`... and ${overflow} more`);
|
|
63
|
+
return head.map((line) => ` ${line}`).join("\n");
|
|
64
|
+
}
|
|
65
|
+
function formatZodIssuePointer(path) {
|
|
66
|
+
if (path.length === 0) return "/";
|
|
67
|
+
return path.map((key) => `/${escapeJsonPointerSegment(key)}`).join("");
|
|
68
|
+
}
|
|
69
|
+
const RESPONSE_SHAPE_LEAD_UNKNOWN_VERSION = "Metabase returned unexpected response shape";
|
|
70
|
+
var ResponseShapeError = class ResponseShapeError extends MetabaseError {
|
|
71
|
+
category = "response-shape";
|
|
72
|
+
isRetryable = false;
|
|
73
|
+
developerDetail;
|
|
74
|
+
constructor(message, developerDetail) {
|
|
75
|
+
super(message);
|
|
76
|
+
this.name = "ResponseShapeError";
|
|
77
|
+
this.developerDetail = developerDetail;
|
|
78
|
+
}
|
|
79
|
+
static fromZodIssues(developerDetail) {
|
|
80
|
+
return new ResponseShapeError(formatResponseShapeMessage(developerDetail.zodIssues, developerDetail.serverTag), developerDetail);
|
|
81
|
+
}
|
|
82
|
+
};
|
|
83
|
+
function formatResponseShapeMessage(issues, serverTag) {
|
|
84
|
+
const lead = serverTag === null ? RESPONSE_SHAPE_LEAD_UNKNOWN_VERSION : `On Metabase ${serverTag} the response shape was unexpected`;
|
|
85
|
+
if (issues.length === 0) return lead;
|
|
86
|
+
return `${lead}:\n${formatIssueLines(issues, RESPONSE_SHAPE_ISSUE_FORMAT)}`;
|
|
87
|
+
}
|
|
88
|
+
var ConfigError = class extends MetabaseError {
|
|
89
|
+
category = "config";
|
|
90
|
+
isRetryable = false;
|
|
91
|
+
developerDetail = null;
|
|
92
|
+
constructor(message) {
|
|
93
|
+
super(message);
|
|
94
|
+
this.name = "ConfigError";
|
|
95
|
+
}
|
|
96
|
+
};
|
|
97
|
+
var InternalError = class extends MetabaseError {
|
|
98
|
+
category = "internal";
|
|
99
|
+
isRetryable = false;
|
|
100
|
+
developerDetail = null;
|
|
101
|
+
constructor(message) {
|
|
102
|
+
super(message);
|
|
103
|
+
this.name = "InternalError";
|
|
104
|
+
}
|
|
105
|
+
};
|
|
106
|
+
var AbortError = class extends MetabaseError {
|
|
107
|
+
category = "abort";
|
|
108
|
+
isRetryable = false;
|
|
109
|
+
developerDetail = null;
|
|
110
|
+
constructor(message = "aborted") {
|
|
111
|
+
super(message);
|
|
112
|
+
this.name = "AbortError";
|
|
113
|
+
}
|
|
114
|
+
};
|
|
115
|
+
var ChainedRequestError = class extends MetabaseError {
|
|
116
|
+
cause;
|
|
117
|
+
constructor(message, cause) {
|
|
118
|
+
super(message);
|
|
119
|
+
this.name = "ChainedRequestError";
|
|
120
|
+
this.cause = cause;
|
|
121
|
+
}
|
|
122
|
+
get category() {
|
|
123
|
+
return this.cause.category;
|
|
124
|
+
}
|
|
125
|
+
get isRetryable() {
|
|
126
|
+
return this.cause.isRetryable;
|
|
127
|
+
}
|
|
128
|
+
get developerDetail() {
|
|
129
|
+
return this.cause.developerDetail;
|
|
130
|
+
}
|
|
131
|
+
};
|
|
132
|
+
var UnknownError = class extends MetabaseError {
|
|
133
|
+
category = "unknown";
|
|
134
|
+
isRetryable = false;
|
|
135
|
+
developerDetail;
|
|
136
|
+
constructor(input) {
|
|
137
|
+
super(input.originalMessage);
|
|
138
|
+
this.name = "UnknownError";
|
|
139
|
+
this.developerDetail = input;
|
|
140
|
+
}
|
|
141
|
+
};
|
|
142
|
+
function toMetabaseError(error) {
|
|
143
|
+
if (error instanceof MetabaseError) return error;
|
|
144
|
+
if (error instanceof ZodError) return new ConfigError(error.issues.map(formatZodIssue).join("; "));
|
|
145
|
+
if (error instanceof Error) return new UnknownError({
|
|
146
|
+
originalMessage: error.message,
|
|
147
|
+
stack: error.stack ?? null
|
|
148
|
+
});
|
|
149
|
+
return new UnknownError({
|
|
150
|
+
originalMessage: String(error),
|
|
151
|
+
stack: null
|
|
152
|
+
});
|
|
153
|
+
}
|
|
154
|
+
function formatZodIssue(issue) {
|
|
155
|
+
const path = core.toDotPath(issue.path);
|
|
156
|
+
return path === "" ? issue.message : `${path}: ${issue.message}`;
|
|
157
|
+
}
|
|
158
|
+
function isFileNotFoundError(value) {
|
|
159
|
+
return value instanceof Error && "code" in value && value.code === "ENOENT";
|
|
160
|
+
}
|
|
161
|
+
function errorMessage(value) {
|
|
162
|
+
return value instanceof Error ? value.message : String(value);
|
|
163
|
+
}
|
|
164
|
+
//#endregion
|
|
165
|
+
//#region ../client/src/predicates.ts
|
|
166
|
+
function isPlainObject(value) {
|
|
167
|
+
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
168
|
+
}
|
|
169
|
+
//#endregion
|
|
170
|
+
export { InternalError as a, ResponseShapeError as c, ValidationError as d, errorMessage as f, escapeJsonPointerSegment as h, ConfigError as i, TimeoutError as l, toMetabaseError as m, AbortError as n, MetabaseError as o, isFileNotFoundError as p, ChainedRequestError as r, NetworkError as s, isPlainObject as t, UnknownError as u };
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { i as ConfigError, o as MetabaseError } from "./predicates-Bkm2IoeX.mjs";
|
|
2
|
+
import { l as writeJson } from "./cli.mjs";
|
|
3
|
+
import { i as chainRequestFailure } from "./network-error-CEb9ymDW.mjs";
|
|
4
|
+
import "./validate-BWchyW0V.mjs";
|
|
5
|
+
//#region src/commands/dashboard/preflight.ts
|
|
6
|
+
async function preflightDashcardCardReferences(client, dashcards) {
|
|
7
|
+
const issues = await client.dashboard.checkCardReferences(dashcards);
|
|
8
|
+
if (issues.length === 0) return;
|
|
9
|
+
const errors = issues.map((issue) => ({
|
|
10
|
+
path: issue.path,
|
|
11
|
+
message: describeIssue(issue)
|
|
12
|
+
}));
|
|
13
|
+
writeJson({
|
|
14
|
+
ok: false,
|
|
15
|
+
errors
|
|
16
|
+
});
|
|
17
|
+
throw new ConfigError(`dashboard card-reference pre-flight failed: ${errors.length} error(s) — fix the dashcard card_id values listed above`);
|
|
18
|
+
}
|
|
19
|
+
function wrapChainedDashboardWriteError(error, dashboardId) {
|
|
20
|
+
if (!(error instanceof MetabaseError)) return error;
|
|
21
|
+
return chainRequestFailure(error, `${`dashboard ${dashboardId} created but the follow-up update to dashboard ${dashboardId} failed`}: ${error.userMessage}; dashcards not applied`);
|
|
22
|
+
}
|
|
23
|
+
function describeIssue(issue) {
|
|
24
|
+
if (issue.problem.reason === "missing") return `card ${issue.cardId} not found`;
|
|
25
|
+
if (issue.problem.reason === "archived") return `card ${issue.cardId} is archived`;
|
|
26
|
+
return `card ${issue.cardId} is not readable: ${issue.problem.detail}`;
|
|
27
|
+
}
|
|
28
|
+
//#endregion
|
|
29
|
+
export { wrapChainedDashboardWriteError as n, preflightDashcardCardReferences as t };
|
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { p as isFileNotFoundError } from "./predicates-Bkm2IoeX.mjs";
|
|
2
2
|
import { spawn } from "node:child_process";
|
|
3
|
-
|
|
4
3
|
//#region src/runtime/process.ts
|
|
5
4
|
var ProcessNotFoundError = class extends Error {
|
|
6
5
|
command;
|
|
@@ -10,7 +9,7 @@ var ProcessNotFoundError = class extends Error {
|
|
|
10
9
|
this.command = command;
|
|
11
10
|
}
|
|
12
11
|
};
|
|
13
|
-
|
|
12
|
+
new TextDecoder("utf-8");
|
|
14
13
|
function streamProcess(command, args, options = {}) {
|
|
15
14
|
return new Promise((resolve, reject) => {
|
|
16
15
|
const child = spawn(command, args, {
|
|
@@ -18,7 +17,7 @@ function streamProcess(command, args, options = {}) {
|
|
|
18
17
|
...options.shell === true ? { shell: true } : {}
|
|
19
18
|
});
|
|
20
19
|
child.on("error", (error) => {
|
|
21
|
-
if (
|
|
20
|
+
if (isFileNotFoundError(error)) {
|
|
22
21
|
reject(new ProcessNotFoundError(command));
|
|
23
22
|
return;
|
|
24
23
|
}
|
|
@@ -68,6 +67,5 @@ function openBrowser(url) {
|
|
|
68
67
|
});
|
|
69
68
|
});
|
|
70
69
|
}
|
|
71
|
-
|
|
72
70
|
//#endregion
|
|
73
|
-
export {
|
|
71
|
+
export { streamProcess as n, openBrowser as t };
|
|
@@ -1,22 +1,31 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import "./
|
|
3
|
-
import { defineMetabaseCommand } from "./runtime-
|
|
4
|
-
import "./
|
|
5
|
-
import {
|
|
6
|
-
import "./listing-wFZuS5li.mjs";
|
|
7
|
-
import "./poll-CgzD9_RH.mjs";
|
|
8
|
-
import "./poll-task-DF9xJl13.mjs";
|
|
9
|
-
import { warnIfOutsideSyncScope } from "./sync-scope-CKx6xeF6.mjs";
|
|
10
|
-
import { ensureLibraryDataCollectionId } from "./resolve-8iT-dXgX.mjs";
|
|
11
|
-
import { parseTableSelectors, tableSelectorFlags } from "./selectors-D34gXjQa.mjs";
|
|
1
|
+
import { f as errorMessage } from "./predicates-Bkm2IoeX.mjs";
|
|
2
|
+
import { F as outputFlags, I as profileFlag, M as connectionFlags, b as warn, c as renderSummary } from "./cli.mjs";
|
|
3
|
+
import { t as defineMetabaseCommand } from "./runtime-DiKyBxOw.mjs";
|
|
4
|
+
import { i as CollectionCompact, r as Collection } from "./collection-CfulNRBG.mjs";
|
|
5
|
+
import { n as tableSelectorFlags, t as parseTableSelectors } from "./selectors-DGDn0Hto.mjs";
|
|
12
6
|
import { z } from "zod";
|
|
13
|
-
|
|
7
|
+
//#region src/commands/git-sync/sync-scope.ts
|
|
8
|
+
function isOutsideSyncScope(collection) {
|
|
9
|
+
return collection !== null && collection.is_remote_synced === false;
|
|
10
|
+
}
|
|
11
|
+
function syncScopeHint(collection, remoteSyncUrl) {
|
|
12
|
+
if (!isOutsideSyncScope(collection) || remoteSyncUrl === null) return null;
|
|
13
|
+
return `Note: collection ${collection.id} "${collection.name}" is not marked for git-sync, so \`mb git-sync export\` will not carry it (or its published tables' metadata) to ${remoteSyncUrl}. Add it with: mb git-sync add-collection ${collection.id}`;
|
|
14
|
+
}
|
|
15
|
+
async function warnIfOutsideSyncScope(mb, collection) {
|
|
16
|
+
if (!isOutsideSyncScope(collection)) return;
|
|
17
|
+
try {
|
|
18
|
+
const hint = syncScopeHint(collection, await mb.gitSync.remoteUrl());
|
|
19
|
+
if (hint !== null) warn(hint);
|
|
20
|
+
} catch (error) {
|
|
21
|
+
warn(`Could not check git-sync scope for collection ${collection.id}: ${errorMessage(error)}`);
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
//#endregion
|
|
14
25
|
//#region src/commands/library/publish.ts
|
|
15
|
-
const PUBLISH_TABLES_PATH = "/api/ee/data-studio/table/publish-tables";
|
|
16
26
|
const LibraryPublishResult = z.object({ target_collection: Collection.nullable() });
|
|
17
|
-
const LibraryPublishResultCompact = z.object({ target_collection: CollectionCompact.nullable() });
|
|
18
27
|
const libraryPublishResultView = {
|
|
19
|
-
compactPick:
|
|
28
|
+
compactPick: z.object({ target_collection: CollectionCompact.nullable() }),
|
|
20
29
|
tableColumns: [{
|
|
21
30
|
key: "target_collection",
|
|
22
31
|
label: "Target collection"
|
|
@@ -47,17 +56,14 @@ var publish_default = defineMetabaseCommand({
|
|
|
47
56
|
async run({ args, ctx, getClient }) {
|
|
48
57
|
const selectors = parseTableSelectors(args);
|
|
49
58
|
const client = await getClient();
|
|
50
|
-
const collectionId = await
|
|
51
|
-
const
|
|
59
|
+
const collectionId = await client.library.ensureDataCollectionId();
|
|
60
|
+
const target = await client.library.publishTables({
|
|
52
61
|
collection_id: collectionId,
|
|
53
62
|
...selectors
|
|
54
|
-
};
|
|
55
|
-
const result = await client.requestParsed(LibraryPublishResult, PUBLISH_TABLES_PATH, {
|
|
56
|
-
method: "POST",
|
|
57
|
-
body
|
|
58
63
|
});
|
|
64
|
+
const result = { target_collection: target };
|
|
59
65
|
renderSummary(result, libraryPublishResultView, summaryLine(result), ctx);
|
|
60
|
-
await warnIfOutsideSyncScope(client,
|
|
66
|
+
await warnIfOutsideSyncScope(client, target);
|
|
61
67
|
}
|
|
62
68
|
});
|
|
63
69
|
function summaryLine(result) {
|
|
@@ -65,6 +71,5 @@ function summaryLine(result) {
|
|
|
65
71
|
if (collection === null) return "Published tables to the Library.";
|
|
66
72
|
return `Published tables to the Library (collection ${collection.id} "${collection.name}").`;
|
|
67
73
|
}
|
|
68
|
-
|
|
69
74
|
//#endregion
|
|
70
|
-
export { publish_default as default };
|
|
75
|
+
export { publish_default as default };
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
import { t as Parameter } from "./parameter-DUKR8NXo.mjs";
|
|
2
|
+
import { z } from "zod";
|
|
3
|
+
//#region ../client/src/domain/pulse.ts
|
|
4
|
+
const PulseChannelType = z.enum([
|
|
5
|
+
"email",
|
|
6
|
+
"slack",
|
|
7
|
+
"http"
|
|
8
|
+
]);
|
|
9
|
+
const PulseScheduleType = z.enum([
|
|
10
|
+
"hourly",
|
|
11
|
+
"daily",
|
|
12
|
+
"weekly",
|
|
13
|
+
"monthly"
|
|
14
|
+
]);
|
|
15
|
+
const PulseScheduleDay = z.enum([
|
|
16
|
+
"mon",
|
|
17
|
+
"tue",
|
|
18
|
+
"wed",
|
|
19
|
+
"thu",
|
|
20
|
+
"fri",
|
|
21
|
+
"sat",
|
|
22
|
+
"sun"
|
|
23
|
+
]);
|
|
24
|
+
const PulseScheduleFrame = z.enum([
|
|
25
|
+
"first",
|
|
26
|
+
"mid",
|
|
27
|
+
"last"
|
|
28
|
+
]);
|
|
29
|
+
const PulseChannelDetails = z.object({ channel: z.string().optional() }).loose();
|
|
30
|
+
const PulseRecipient = z.object({
|
|
31
|
+
id: z.number().int().nullable().optional(),
|
|
32
|
+
email: z.string()
|
|
33
|
+
}).loose();
|
|
34
|
+
const PulseRecipientCompact = PulseRecipient.pick({
|
|
35
|
+
id: true,
|
|
36
|
+
email: true
|
|
37
|
+
}).strip();
|
|
38
|
+
const PulseChannel = z.object({
|
|
39
|
+
id: z.number().int().optional(),
|
|
40
|
+
channel_type: PulseChannelType,
|
|
41
|
+
channel_id: z.number().int().nullable().optional(),
|
|
42
|
+
enabled: z.boolean(),
|
|
43
|
+
schedule_type: PulseScheduleType,
|
|
44
|
+
schedule_hour: z.number().int().nullable(),
|
|
45
|
+
schedule_day: PulseScheduleDay.nullable(),
|
|
46
|
+
schedule_frame: PulseScheduleFrame.nullable(),
|
|
47
|
+
details: PulseChannelDetails.optional(),
|
|
48
|
+
recipients: z.array(PulseRecipient)
|
|
49
|
+
}).loose();
|
|
50
|
+
const PulseChannelCompact = PulseChannel.pick({
|
|
51
|
+
channel_type: true,
|
|
52
|
+
enabled: true,
|
|
53
|
+
schedule_type: true,
|
|
54
|
+
schedule_hour: true,
|
|
55
|
+
schedule_day: true,
|
|
56
|
+
schedule_frame: true,
|
|
57
|
+
details: true
|
|
58
|
+
}).strip().extend({ recipients: z.array(PulseRecipientCompact) });
|
|
59
|
+
const PulseCard = z.object({
|
|
60
|
+
id: z.number().int(),
|
|
61
|
+
name: z.string(),
|
|
62
|
+
dashboard_card_id: z.number().int().nullable(),
|
|
63
|
+
include_csv: z.boolean(),
|
|
64
|
+
include_xls: z.boolean()
|
|
65
|
+
}).loose();
|
|
66
|
+
const PulseCardCompact = PulseCard.pick({
|
|
67
|
+
id: true,
|
|
68
|
+
name: true,
|
|
69
|
+
dashboard_card_id: true,
|
|
70
|
+
include_csv: true,
|
|
71
|
+
include_xls: true
|
|
72
|
+
}).strip();
|
|
73
|
+
const Pulse = z.object({
|
|
74
|
+
id: z.number().int(),
|
|
75
|
+
name: z.string().nullable(),
|
|
76
|
+
creator_id: z.number().int(),
|
|
77
|
+
dashboard_id: z.number().int().nullable(),
|
|
78
|
+
collection_id: z.number().int().nullable(),
|
|
79
|
+
archived: z.boolean(),
|
|
80
|
+
skip_if_empty: z.boolean(),
|
|
81
|
+
parameters: z.array(Parameter),
|
|
82
|
+
cards: z.array(PulseCard),
|
|
83
|
+
channels: z.array(PulseChannel)
|
|
84
|
+
}).loose();
|
|
85
|
+
const PulseCompact = Pulse.pick({
|
|
86
|
+
id: true,
|
|
87
|
+
name: true,
|
|
88
|
+
dashboard_id: true,
|
|
89
|
+
collection_id: true,
|
|
90
|
+
archived: true,
|
|
91
|
+
skip_if_empty: true
|
|
92
|
+
}).strip().extend({
|
|
93
|
+
cards: z.array(PulseCardCompact),
|
|
94
|
+
channels: z.array(PulseChannelCompact)
|
|
95
|
+
});
|
|
96
|
+
const PulseRecipientInput = z.union([z.object({ id: z.number().int().positive() }).loose(), z.object({ email: z.string().min(1) }).loose()]);
|
|
97
|
+
const PulseCardInput = z.object({
|
|
98
|
+
id: z.number().int().positive(),
|
|
99
|
+
include_csv: z.boolean(),
|
|
100
|
+
include_xls: z.boolean(),
|
|
101
|
+
dashboard_card_id: z.number().int().positive().nullable().optional(),
|
|
102
|
+
format_rows: z.boolean().optional(),
|
|
103
|
+
pivot_results: z.boolean().optional()
|
|
104
|
+
}).loose();
|
|
105
|
+
const PulseChannelInput = z.object({
|
|
106
|
+
channel_type: PulseChannelType,
|
|
107
|
+
enabled: z.boolean().default(true),
|
|
108
|
+
schedule_type: PulseScheduleType,
|
|
109
|
+
schedule_hour: z.number().int().min(0).max(23).nullable().optional(),
|
|
110
|
+
schedule_day: PulseScheduleDay.nullable().optional(),
|
|
111
|
+
schedule_frame: PulseScheduleFrame.nullable().optional(),
|
|
112
|
+
channel_id: z.number().int().positive().nullable().optional(),
|
|
113
|
+
details: PulseChannelDetails.optional(),
|
|
114
|
+
recipients: z.array(PulseRecipientInput).optional()
|
|
115
|
+
}).loose();
|
|
116
|
+
const PulseCreateInput = z.object({
|
|
117
|
+
name: z.string().min(1),
|
|
118
|
+
dashboard_id: z.number().int().positive(),
|
|
119
|
+
cards: z.array(PulseCardInput).min(1),
|
|
120
|
+
channels: z.array(PulseChannelInput).min(1),
|
|
121
|
+
skip_if_empty: z.boolean().optional(),
|
|
122
|
+
parameters: z.array(Parameter).optional()
|
|
123
|
+
}).loose();
|
|
124
|
+
const PulseUpdateInput = z.object({
|
|
125
|
+
name: z.string().min(1).optional(),
|
|
126
|
+
cards: z.array(PulseCardInput).min(1).optional(),
|
|
127
|
+
channels: z.array(PulseChannelInput).min(1).optional(),
|
|
128
|
+
skip_if_empty: z.boolean().optional(),
|
|
129
|
+
archived: z.boolean().optional(),
|
|
130
|
+
parameters: z.array(Parameter).optional()
|
|
131
|
+
}).loose();
|
|
132
|
+
//#endregion
|
|
133
|
+
export { PulseUpdateInput as a, PulseCreateInput as i, PulseChannel as n, PulseCompact as r, Pulse as t };
|