@metabase/cli 0.2.2 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +4 -1902
- package/dist/add-collection-B3Ty8SzB.mjs +36 -0
- package/dist/alert-DT-ee7yf.mjs +23 -0
- package/dist/{alerts-CRGMX4eB.mjs → alerts-Bf2RH_p_.mjs} +11 -17
- package/dist/{append-lL0IaI6U.mjs → append-DFzQRPMd.mjs} +7 -12
- package/dist/{archive-DihHU042.mjs → archive-4tmm946K.mjs} +8 -17
- package/dist/{archive-C9mJGN6J.mjs → archive-B6eXiyER.mjs} +7 -13
- package/dist/{archive-D3DErepm.mjs → archive-BxNPHxOY.mjs} +7 -13
- package/dist/{archive-DyPsHSFb.mjs → archive-ByvA49Kz.mjs} +8 -13
- package/dist/{archive-ExcEma7q.mjs → archive-C7w49Grr.mjs} +7 -16
- package/dist/{archive-Baz4OVDd.mjs → archive-Cd29QC0c.mjs} +7 -13
- package/dist/{archive-CUGRnyRV.mjs → archive-ChORH5JH.mjs} +7 -13
- package/dist/{archive-hKPQXgXa.mjs → archive-CwAdlv63.mjs} +7 -12
- package/dist/{archive-D8YrImIU.mjs → archive-Dr9Xnx_Z.mjs} +7 -15
- package/dist/{archive-BUFc1me2.mjs → archive-gid9Y09v.mjs} +8 -17
- package/dist/{archive-3rLXY0nS.mjs → archive-lQqs13Uz.mjs} +7 -13
- package/dist/auth-Dltxua89.mjs +19 -0
- package/dist/{body-DXJ2v3GY.mjs → body-Cur4NJt9.mjs} +5 -8
- package/dist/{body-flags-Cbv-Ba6W.mjs → body-flags-AqKpN01Y.mjs} +1 -2
- package/dist/{branches-ByCzTuiv.mjs → branches-DchlyU0i.mjs} +7 -13
- package/dist/{cancel-DvehNbDD.mjs → cancel-BMQa5R1Z.mjs} +5 -12
- package/dist/{cancel-task-BM8ADd3Y.mjs → cancel-task-C5CU1pxU.mjs} +6 -10
- package/dist/card-CHI2bmds.mjs +24 -0
- package/dist/{card-BFRRyTGs.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 -85
- package/dist/client-BqhzKdLM.mjs +2194 -0
- package/dist/collection-CGoVLvcD.mjs +58 -0
- package/dist/collection-CY0AB99E.mjs +20 -0
- package/dist/{collection-BrrjbPLN.mjs → collection-CfulNRBG.mjs} +16 -61
- package/dist/{collection-namespace-8i_CvWsg.mjs → collection-namespace-GwydWBF3.mjs} +3 -5
- package/dist/{create-D6bXJlBS.mjs → create-BNQ_DytP.mjs} +8 -15
- package/dist/{create-CtIOvInN.mjs → create-BOLwWt8Q.mjs} +9 -17
- package/dist/{create--_4GZUNY.mjs → create-Beh-2uoN.mjs} +8 -16
- package/dist/{create-BnNRvoyz.mjs → create-C79vErX0.mjs} +9 -20
- package/dist/{create-D57tRDrg.mjs → create-CAQV2g6V.mjs} +9 -17
- package/dist/{create-CHK9cJcK.mjs → create-CAWytBE5.mjs} +9 -17
- package/dist/{create-BynNiG1N.mjs → create-CCh_LyW9.mjs} +8 -15
- package/dist/{create-Cy57naL0.mjs → create-CD008jdE.mjs} +13 -28
- package/dist/{create-DOpa2TmH.mjs → create-CHQx7jq4.mjs} +9 -17
- package/dist/{create-COI80Veo.mjs → create-DF4QtgDL.mjs} +8 -16
- package/dist/{create-yK1-fuX5.mjs → create-DJmXXQoq.mjs} +10 -18
- package/dist/{create-1O1UiTVt.mjs → create-DV-Ln5Mo.mjs} +8 -15
- package/dist/create-branch-CYo6jZth.mjs +35 -0
- package/dist/{create-t7z8Eb4T.mjs → create-i14Wv3Tj.mjs} +8 -15
- package/dist/{create-qzjhJFP8.mjs → create-tQbnuz-I.mjs} +8 -15
- package/dist/{create-DAj8pyfQ.mjs → create-zeveFdnd.mjs} +6 -11
- package/dist/{cron-93wjhtrP.mjs → cron-LKRffEC-.mjs} +2 -4
- package/dist/{csv-yoFA1hhv.mjs → csv-B2Jgb1GM.mjs} +7 -19
- package/dist/{current-task-D8Q1uFmk.mjs → current-task-MpBFGttd.mjs} +7 -12
- package/dist/{dashboard-BSCXTX4H.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-B8dui6O6.mjs → delete-B8e01xAG.mjs} +6 -11
- package/dist/{delete-CA7IjA5J.mjs → delete-BApOjQvl.mjs} +6 -11
- package/dist/{delete-Dcu3iDkg.mjs → delete-Ck0q4Dzp.mjs} +6 -11
- package/dist/{delete-BwPgIWV8.mjs → delete-DFmX7jTp.mjs} +6 -11
- package/dist/{delete-CawUDFud.mjs → delete-Ob06PPie.mjs} +6 -11
- package/dist/{delete-runtime-00-R9iJm.mjs → delete-runtime-D74s6vhu.mjs} +6 -13
- package/dist/{delete-table-DS0b3i0k.mjs → delete-table-DuyhGrvA.mjs} +6 -11
- package/dist/{dependencies-BQVZylqV.mjs → dependencies-Bj3QrGIm.mjs} +10 -13
- package/dist/dirty-DNYoM6Bp.mjs +31 -0
- package/dist/document-BbskZPTT.mjs +19 -0
- package/dist/{document-C7IR6T8c.mjs → document-Cd2mmqCp.mjs} +5 -33
- package/dist/document-D6OybtP2.mjs +29 -0
- package/dist/{eid-DcCAs-RP.mjs → eid-WTZmDdsr.mjs} +12 -54
- package/dist/eid-translation-zEHtr5Oc.mjs +35 -0
- package/dist/{embedding-B0x9CPkU.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-RYBTW2KS.mjs → field-Cr2DPUG9.mjs} +2 -81
- package/dist/field-Zau6Hc6X.mjs +18 -0
- package/dist/fields-CBBa-Prp.mjs +34 -0
- package/dist/{get-vGqyjGSW.mjs → get-00lyLv6R.mjs} +7 -11
- package/dist/{get-Cvkt6GcQ.mjs → get-B7sMgsFs.mjs} +7 -11
- package/dist/get-B_xdF1kq.mjs +31 -0
- package/dist/{get-DhS4y0K9.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-CJYv3CfV.mjs → get-CvI--9S_.mjs} +16 -12
- package/dist/get-DRvsATp-.mjs +31 -0
- package/dist/{get-Db8YNxId.mjs → get-DY03Azx9.mjs} +6 -11
- package/dist/{get-4rA8pbRu.mjs → get-DYO1kywc.mjs} +7 -13
- package/dist/{get-DZRB5S37.mjs → get-D_h-G9bn.mjs} +7 -11
- package/dist/get-DdsoHaKH.mjs +31 -0
- package/dist/{get-DQ0pb4tT.mjs → get-DkWO0EI0.mjs} +7 -11
- package/dist/{get-DXiL39gi.mjs → get-Dmj9Ygz1.mjs} +7 -17
- package/dist/{get-CvXOGyFj.mjs → get-DmpB6J9g.mjs} +7 -12
- package/dist/{get-B2vvnMpl.mjs → get-Dn9ZiSZr.mjs} +8 -16
- package/dist/{get-run-BF5ZBE8o.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-DfTvzGz-.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-BpXlmJ5J.mjs → input-DH9i67x_.mjs} +6 -11
- package/dist/{is-dirty-4kIyD4oP.mjs → is-dirty-DYeJYhBz.mjs} +4 -8
- package/dist/{items-BXH0f1r6.mjs → items-CQlPXBXE.mjs} +13 -29
- package/dist/key-BEhqIzIQ.mjs +10 -0
- package/dist/{library-BFZYsBcz.mjs → library-Bsm5KsFF.mjs} +6 -9
- package/dist/library-ClLgrAXy.mjs +19 -0
- package/dist/library-DfYAT2Ep.mjs +21 -0
- package/dist/{list-By1yYVGq.mjs → list-B4hJuMhA.mjs} +11 -27
- package/dist/{list-oRyXsJXs.mjs → list-B8nAGwP4.mjs} +10 -12
- 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-SiSfX4wl.mjs → list-CMpoc2TN.mjs} +10 -13
- package/dist/list-CNUiF8Z7.mjs +28 -0
- package/dist/list-CQDprvW0.mjs +39 -0
- package/dist/{list-w61Uovt2.mjs → list-CQwOgIlj.mjs} +10 -24
- package/dist/list-DE9FM957.mjs +28 -0
- package/dist/{list-CG3ec9BZ.mjs → list-DF2rvoO1.mjs} +22 -14
- package/dist/list-DMKDsBRd.mjs +38 -0
- package/dist/{list-Bar8uQRC.mjs → list-UhpKG6_m.mjs} +15 -15
- package/dist/{login-zUCMDLC8.mjs → login-CGHeSjlP.mjs} +47 -52
- package/dist/{logout-BFh7QHx6.mjs → logout-DAxOlbv4.mjs} +7 -12
- package/dist/measure-4P0bOlZ3.mjs +29 -0
- package/dist/measure-BsYv0p26.mjs +22 -0
- package/dist/{measure-DH3ow2ko.mjs → measure-CtfjqJFP.mjs} +3 -30
- package/dist/network-error-CEb9ymDW.mjs +423 -0
- package/dist/{notification-BR5wehqg.mjs → notification-DaA4bBHW.mjs} +3 -66
- package/dist/notification-Fcq1fIPw.mjs +67 -0
- package/dist/{parameter-hCQ80jnc.mjs → parameter-DUKR8NXo.mjs} +2 -11
- package/dist/{parameter-values-BYDFzxNY.mjs → parameter-values-CJTdqd8c.mjs} +17 -11
- package/dist/{parse-enum-D1zTYr_i.mjs → parse-enum-D0Jfm_Bz.mjs} +2 -4
- package/dist/{parse-id-waEVK-uR.mjs → parse-id-C_jmKFaa.mjs} +2 -4
- package/dist/{parse-ref-C3DUXwci.mjs → parse-ref-ibKVB0J4.mjs} +3 -5
- package/dist/{path-Bvs9IR4k.mjs → path-B5gHvrYL.mjs} +8 -9
- package/dist/{poll-rqLkEJVP.mjs → poll-75SvT7Zv.mjs} +11 -15
- package/dist/predicates-Bkm2IoeX.mjs +170 -0
- package/dist/preflight-YpPQo-sa.mjs +29 -0
- package/dist/{process-BxAUv3Wx.mjs → process-DBOOrmET.mjs} +4 -6
- package/dist/{publish-C1y_vGGw.mjs → publish-DijrxaCW.mjs} +29 -24
- package/dist/{pulse-C8q469KD.mjs → pulse-BmsDenXm.mjs} +3 -56
- package/dist/pulse-DhG6I9mI.mjs +57 -0
- package/dist/{query-B9LlGOZI.mjs → query-BbqECzmF.mjs} +20 -44
- package/dist/{query-DpVWKW-y.mjs → query-Dc__-KJH.mjs} +13 -24
- package/dist/{query-result-Bvh89K4f.mjs → query-result-DBDwk8TS.mjs} +4 -8
- package/dist/remove-collection-BOnxYvhj.mjs +36 -0
- package/dist/{render-rgZBe3rO.mjs → render-CI93iP0I.mjs} +9 -11
- package/dist/{replace-sHtPBNnA.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-Ce_gPVcg.mjs → run-DdGJ544X.mjs} +8 -18
- package/dist/runs-CUNWiidL.mjs +38 -0
- package/dist/runtime-DiKyBxOw.mjs +1007 -0
- package/dist/{schema-tables-D91DWM5l.mjs → schema-tables-CV386fnC.mjs} +10 -14
- package/dist/{schemas-OVYRgvz9.mjs → schemas-DM-UqZBQ.mjs} +8 -12
- package/dist/search-DFBwUc6d.mjs +44 -0
- package/dist/{search-msFNbxU6.mjs → search-DmGScXs8.mjs} +14 -73
- package/dist/segment-BzUGM2Fr.mjs +22 -0
- package/dist/segment-C_gl5ag6.mjs +29 -0
- package/dist/{segment-cwIOOF0v.mjs → segment-OsrbUDzw.mjs} +3 -30
- package/dist/{selectors-Bsyhe1zP.mjs → selectors-DGDn0Hto.mjs} +4 -6
- package/dist/{send-BeFpVrwD.mjs → send-CVxxEpDB.mjs} +5 -16
- package/dist/{set-jRnCLhvc.mjs → set-DFolTjbd.mjs} +10 -20
- package/dist/{set-active-CFWtIWzX.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-CxqkjkdQ.mjs → skills--vK6J-e4.mjs} +4 -6
- package/dist/{skills-DlFbbaoS.mjs → skills-DTCrMcix.mjs} +13 -19
- package/dist/{snippet-1xYckIwc.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-DCIOvsc6.mjs → status-BhswxJL1.mjs} +23 -23
- package/dist/{status-BMEdl-_G.mjs → status-hL1am-HV.mjs} +6 -8
- package/dist/{subscription-BOOBR5Ir.mjs → subscription-_d5fB45F.mjs} +7 -10
- package/dist/{subscriptions-C_1AQpZF.mjs → subscriptions-s4TF6Ax3.mjs} +11 -16
- package/dist/{summary-D1fKnwE3.mjs → summary-BytbDz6e.mjs} +1 -2
- 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-fDvuvqoU.mjs → table-CeeTJgQb.mjs} +4 -38
- package/dist/table-CsIJNPFf.mjs +37 -0
- package/dist/table-DYoC1kPn.mjs +18 -0
- package/dist/{timeline-BNwnJ3g9.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-BkSkCvpx.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-sJmW_En3.mjs → transform-job-DRrK28IH.mjs} +11 -38
- package/dist/{transform-tag-qTjNVfTW.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-Cosz-Vq3.mjs → transforms-oU4zizbO.mjs} +10 -13
- package/dist/{tree-BkXtw0c4.mjs → tree-CH-f3bjP.mjs} +6 -10
- package/dist/{unpublish-BlGj7omM.mjs → unpublish-BUl9RU5C.mjs} +7 -18
- package/dist/{update-DpIzJ8Ts.mjs → update-BCS5FxKr.mjs} +11 -19
- package/dist/{update-hoCyoR-u.mjs → update-BZPllQoR.mjs} +9 -16
- package/dist/{update-CXlhrcy8.mjs → update-BiFDBcEH.mjs} +9 -16
- package/dist/{update-Cbsgvopz.mjs → update-BzMDeZiU.mjs} +9 -15
- package/dist/{update-CTWsiwme.mjs → update-C4YJQFDS.mjs} +9 -16
- package/dist/{update-CzrbMLZq.mjs → update-CHNSUHK4.mjs} +9 -16
- package/dist/{update-CsYFWkVd.mjs → update-CO4m4wH3.mjs} +10 -21
- package/dist/{update-DDVuyquf.mjs → update-CVPAwJaH.mjs} +10 -18
- package/dist/{update-C9K1QnOo.mjs → update-CmDTljK-.mjs} +9 -17
- package/dist/{update-DrvAdi-O.mjs → update-CvOO8TED.mjs} +9 -17
- package/dist/{update-Tw0kARao.mjs → update-D-NE60AV.mjs} +9 -16
- package/dist/{update-ZJ5T-SBW.mjs → update-Nfi44RrE.mjs} +10 -18
- package/dist/{update-C-ChEcI9.mjs → update-bD_Jh5-s.mjs} +10 -16
- package/dist/{update-CuKHukZ6.mjs → update-cYkvbqK8.mjs} +9 -16
- package/dist/update-dashcard-C3TuYO_k.mjs +50 -0
- package/dist/{update-BHhEtxwC.mjs → update-tX9mKBN_.mjs} +10 -21
- package/dist/{upgrade-D0HiyTxw.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-D7NcSTj8.mjs → uuid-BJkDWj9p.mjs} +5 -7
- package/dist/validate-BWchyW0V.mjs +1469 -0
- package/dist/{validate-query-Di0VKMF-.mjs → validate-query-DaGYSmpQ.mjs} +4 -5
- package/dist/{values-OBiEVCVH.mjs → values-Dxf1JEoA.mjs} +8 -13
- package/dist/verify-K96rItG5.mjs +89 -0
- package/dist/{wait-B9qNlcTe.mjs → wait-DoMDH226.mjs} +10 -18
- package/dist/{wait-flags-D0FEgH6k.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 +25 -22
- package/skill-data/dashboard/SKILL.md +6 -2
- package/skill-data/document/SKILL.md +2 -2
- package/skill-data/transform/SKILL.md +1 -1
- package/.claude-plugin/marketplace.json +0 -19
- package/dist/add-collection-B-Pf12HY.mjs +0 -60
- package/dist/add-collection-B2PdVMRy.mjs +0 -9
- package/dist/alert-DGcECcDb.mjs +0 -26
- package/dist/auth-B8Yb4ZaN.mjs +0 -22
- package/dist/capabilities-1HTHeDa4.mjs +0 -684
- package/dist/card-BT7ce7uO.mjs +0 -27
- package/dist/cards-Bz6anDNX.mjs +0 -38
- package/dist/cli.d.mts +0 -1
- package/dist/collection-ahFSJT-e.mjs +0 -23
- package/dist/command-augment-D9pI9Vbh.mjs +0 -11
- package/dist/create-branch-BwqFHYcZ.mjs +0 -57
- package/dist/dashboard-C__PiWrv.mjs +0 -36
- package/dist/database-B-xwx5LA.mjs +0 -61
- package/dist/db-BiLWl1J9.mjs +0 -27
- package/dist/dirty-BqdcrfUz.mjs +0 -35
- package/dist/document-C9ykHYOG.mjs +0 -22
- package/dist/events-C9PqRUCO.mjs +0 -44
- package/dist/export-CdKR5nPT.mjs +0 -103
- package/dist/field-P7aJaet9.mjs +0 -21
- package/dist/fields-D2czTLKq.mjs +0 -37
- package/dist/get-75Vdyusm.mjs +0 -49
- package/dist/get-B6fSPCfp.mjs +0 -35
- package/dist/get-BbKC0fTx.mjs +0 -35
- package/dist/get-BfFKIfpX.mjs +0 -36
- package/dist/get-Bpw05IUm.mjs +0 -38
- package/dist/get-CaIYg15K.mjs +0 -41
- package/dist/get-DXydDRVU.mjs +0 -35
- package/dist/get-Dy5f54pV.mjs +0 -35
- package/dist/git-sync-BzievbUz.mjs +0 -31
- package/dist/has-remote-changes-CjDHphUH.mjs +0 -67
- package/dist/import-DzA5Ty9_.mjs +0 -94
- package/dist/is-dirty-Cv0bdKkX.mjs +0 -8
- package/dist/key-B9AAqwjq.mjs +0 -17
- package/dist/list-AyGEaws8.mjs +0 -8
- package/dist/list-BiAVv9jX.mjs +0 -31
- package/dist/list-Bm1PlZEV.mjs +0 -31
- package/dist/list-BtgjcC2w.mjs +0 -31
- package/dist/list-CLgkOcmY.mjs +0 -39
- package/dist/list-CSnpbFML.mjs +0 -31
- package/dist/list-Cn-VruXD.mjs +0 -8
- package/dist/list-D7mMcRG5.mjs +0 -49
- package/dist/list-DOhVPh95.mjs +0 -39
- package/dist/list-DSHteJOl.mjs +0 -32
- package/dist/list-Dl81pkVs.mjs +0 -53
- package/dist/list-DwMcwucR.mjs +0 -31
- package/dist/list-IxaPXKXu.mjs +0 -31
- package/dist/list-hKRQUcGB.mjs +0 -39
- package/dist/listing-1G8iFfZe.mjs +0 -10
- package/dist/measure-DNldT89z.mjs +0 -25
- package/dist/paginate-DuDXvUPr.mjs +0 -49
- package/dist/patch-BpjI9BOz.mjs +0 -20
- package/dist/patch-DrMVqf34.mjs +0 -36
- package/dist/poll-task-CiB1o1wG.mjs +0 -194
- package/dist/preflight-DJOBTWVq.mjs +0 -90
- package/dist/prompt-DmxSLNrO.mjs +0 -52
- package/dist/remove-collection-DYQibG6d.mjs +0 -42
- package/dist/requests-Pc0u7PQS.mjs +0 -96
- package/dist/rescan-values-CuPGOzKI.mjs +0 -40
- package/dist/resolve-BiL5scF0.mjs +0 -91
- package/dist/revision-message-flag-B4BxzDXJ.mjs +0 -11
- package/dist/run-D6jyZ0nv.mjs +0 -135
- package/dist/runs-DRxrpAkU.mjs +0 -53
- package/dist/runtime-CPIHg_Zg.mjs +0 -1699
- package/dist/segment-BIKVTq_n.mjs +0 -25
- package/dist/setting-CApPg0Xr.mjs +0 -20
- package/dist/setting-CDEoJYO0.mjs +0 -55
- package/dist/setup-CruHFQJz.mjs +0 -71
- package/dist/snippet-DdoeL-7N.mjs +0 -22
- package/dist/stash-CR-ESWiX.mjs +0 -108
- package/dist/summary-WUjzNITU.mjs +0 -40
- package/dist/sync-schema-Cq5LzHHc.mjs +0 -54
- package/dist/sync-scope-Dh1wBlrg.mjs +0 -55
- package/dist/table-BK56VDw8.mjs +0 -21
- package/dist/timeline-Dl5pm5tN.mjs +0 -24
- package/dist/timeline-event-5JAeGVSI.mjs +0 -22
- package/dist/transform-ATK6rJBl.mjs +0 -31
- package/dist/transform-job-BezBE6Y8.mjs +0 -25
- package/dist/transform-tag-GqbcG_6_.mjs +0 -21
- package/dist/update-dashcard-Dnfa8_aJ.mjs +0 -73
- package/dist/upload-WT6SywFa.mjs +0 -16
- package/dist/validate-BoY75_M3.mjs +0 -1496
- package/dist/verify-VEB7TBQ_.mjs +0 -79
package/dist/list-DOhVPh95.mjs
DELETED
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
import { connectionFlags, listEnvelopeSchema, outputFlags, profileFlag, renderList, wrapList } from "./capabilities-1HTHeDa4.mjs";
|
|
2
|
-
import "./command-augment-D9pI9Vbh.mjs";
|
|
3
|
-
import { defineMetabaseCommand } from "./runtime-CPIHg_Zg.mjs";
|
|
4
|
-
import { Timeline, TimelineCompact, timelineView } from "./timeline-BNwnJ3g9.mjs";
|
|
5
|
-
import { z } from "zod";
|
|
6
|
-
|
|
7
|
-
//#region src/commands/timeline/list.ts
|
|
8
|
-
const TimelineApiList = z.array(Timeline);
|
|
9
|
-
const TimelineListEnvelope = listEnvelopeSchema(TimelineCompact);
|
|
10
|
-
var list_default = defineMetabaseCommand({
|
|
11
|
-
meta: {
|
|
12
|
-
name: "list",
|
|
13
|
-
description: "List timelines"
|
|
14
|
-
},
|
|
15
|
-
capabilities: { minVersion: 58 },
|
|
16
|
-
args: {
|
|
17
|
-
...outputFlags,
|
|
18
|
-
...profileFlag,
|
|
19
|
-
...connectionFlags,
|
|
20
|
-
archived: {
|
|
21
|
-
type: "boolean",
|
|
22
|
-
description: "Show archived timelines instead of active ones"
|
|
23
|
-
}
|
|
24
|
-
},
|
|
25
|
-
outputSchema: TimelineListEnvelope,
|
|
26
|
-
examples: [
|
|
27
|
-
"mb timeline list",
|
|
28
|
-
"mb timeline list --json",
|
|
29
|
-
"mb timeline list --archived --json"
|
|
30
|
-
],
|
|
31
|
-
async run({ args, ctx, getClient }) {
|
|
32
|
-
const client = await getClient();
|
|
33
|
-
const items = await client.requestParsed(TimelineApiList, "/api/timeline", { query: { archived: args.archived || void 0 } });
|
|
34
|
-
renderList(wrapList(items), timelineView, ctx);
|
|
35
|
-
}
|
|
36
|
-
});
|
|
37
|
-
|
|
38
|
-
//#endregion
|
|
39
|
-
export { list_default as default };
|
package/dist/list-DSHteJOl.mjs
DELETED
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
import { connectionFlags, listEnvelopeSchema, outputFlags, profileFlag, renderList, wrapList } from "./capabilities-1HTHeDa4.mjs";
|
|
2
|
-
import "./command-augment-D9pI9Vbh.mjs";
|
|
3
|
-
import "./cron-93wjhtrP.mjs";
|
|
4
|
-
import { defineMetabaseCommand } from "./runtime-CPIHg_Zg.mjs";
|
|
5
|
-
import { TransformJob, TransformJobCompact, transformJobView } from "./transform-job-sJmW_En3.mjs";
|
|
6
|
-
import { z } from "zod";
|
|
7
|
-
|
|
8
|
-
//#region src/commands/transform-job/list.ts
|
|
9
|
-
const TransformJobApiList = z.array(TransformJob);
|
|
10
|
-
const TransformJobListEnvelope = listEnvelopeSchema(TransformJobCompact);
|
|
11
|
-
var list_default = defineMetabaseCommand({
|
|
12
|
-
meta: {
|
|
13
|
-
name: "list",
|
|
14
|
-
description: "List transform jobs"
|
|
15
|
-
},
|
|
16
|
-
capabilities: { minVersion: 59 },
|
|
17
|
-
args: {
|
|
18
|
-
...outputFlags,
|
|
19
|
-
...profileFlag,
|
|
20
|
-
...connectionFlags
|
|
21
|
-
},
|
|
22
|
-
outputSchema: TransformJobListEnvelope,
|
|
23
|
-
examples: ["mb transform-job list", "mb transform-job list --json"],
|
|
24
|
-
async run({ ctx, getClient }) {
|
|
25
|
-
const client = await getClient();
|
|
26
|
-
const items = await client.requestParsed(TransformJobApiList, "/api/transform-job");
|
|
27
|
-
renderList(wrapList(items), transformJobView, ctx);
|
|
28
|
-
}
|
|
29
|
-
});
|
|
30
|
-
|
|
31
|
-
//#endregion
|
|
32
|
-
export { list_default as default };
|
package/dist/list-Dl81pkVs.mjs
DELETED
|
@@ -1,53 +0,0 @@
|
|
|
1
|
-
import { connectionFlags, listEnvelopeSchema, outputFlags, profileFlag, renderList, wrapList } from "./capabilities-1HTHeDa4.mjs";
|
|
2
|
-
import "./command-augment-D9pI9Vbh.mjs";
|
|
3
|
-
import { defineMetabaseCommand } from "./runtime-CPIHg_Zg.mjs";
|
|
4
|
-
import { parseEnumFlag } from "./parse-enum-D1zTYr_i.mjs";
|
|
5
|
-
import { Collection, CollectionCompact, collectionView } from "./collection-BrrjbPLN.mjs";
|
|
6
|
-
import { COLLECTIONS_PATH } from "./listing-1G8iFfZe.mjs";
|
|
7
|
-
import { z } from "zod";
|
|
8
|
-
|
|
9
|
-
//#region src/commands/collection/list.ts
|
|
10
|
-
const CollectionApiList = z.array(Collection);
|
|
11
|
-
const CollectionListFilter = z.enum([
|
|
12
|
-
"all",
|
|
13
|
-
"archived",
|
|
14
|
-
"personal"
|
|
15
|
-
]);
|
|
16
|
-
const COLLECTION_LIST_QUERY = {
|
|
17
|
-
all: {},
|
|
18
|
-
archived: { archived: true },
|
|
19
|
-
personal: { "personal-only": true }
|
|
20
|
-
};
|
|
21
|
-
const CollectionListEnvelope = listEnvelopeSchema(CollectionCompact);
|
|
22
|
-
var list_default = defineMetabaseCommand({
|
|
23
|
-
meta: {
|
|
24
|
-
name: "list",
|
|
25
|
-
description: "List collections"
|
|
26
|
-
},
|
|
27
|
-
capabilities: { minVersion: 58 },
|
|
28
|
-
args: {
|
|
29
|
-
...outputFlags,
|
|
30
|
-
...profileFlag,
|
|
31
|
-
...connectionFlags,
|
|
32
|
-
filter: {
|
|
33
|
-
type: "string",
|
|
34
|
-
description: `Filter preset: ${CollectionListFilter.options.join("|")}`,
|
|
35
|
-
default: "all"
|
|
36
|
-
}
|
|
37
|
-
},
|
|
38
|
-
outputSchema: CollectionListEnvelope,
|
|
39
|
-
examples: [
|
|
40
|
-
"mb collection list",
|
|
41
|
-
"mb collection list --json",
|
|
42
|
-
"mb collection list --filter archived --json"
|
|
43
|
-
],
|
|
44
|
-
async run({ args, ctx, getClient }) {
|
|
45
|
-
const filter = parseEnumFlag(args.filter, CollectionListFilter, "filter");
|
|
46
|
-
const client = await getClient();
|
|
47
|
-
const items = await client.requestParsed(CollectionApiList, COLLECTIONS_PATH, { query: COLLECTION_LIST_QUERY[filter] });
|
|
48
|
-
renderList(wrapList(items), collectionView, ctx);
|
|
49
|
-
}
|
|
50
|
-
});
|
|
51
|
-
|
|
52
|
-
//#endregion
|
|
53
|
-
export { list_default as default };
|
package/dist/list-DwMcwucR.mjs
DELETED
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
import { connectionFlags, listEnvelopeSchema, outputFlags, profileFlag, renderList, wrapList } from "./capabilities-1HTHeDa4.mjs";
|
|
2
|
-
import "./command-augment-D9pI9Vbh.mjs";
|
|
3
|
-
import { defineMetabaseCommand } from "./runtime-CPIHg_Zg.mjs";
|
|
4
|
-
import { Measure, MeasureCompact, measureView } from "./measure-DH3ow2ko.mjs";
|
|
5
|
-
import { z } from "zod";
|
|
6
|
-
|
|
7
|
-
//#region src/commands/measure/list.ts
|
|
8
|
-
const MeasureApiList = z.array(Measure);
|
|
9
|
-
const MeasureListEnvelope = listEnvelopeSchema(MeasureCompact);
|
|
10
|
-
var list_default = defineMetabaseCommand({
|
|
11
|
-
meta: {
|
|
12
|
-
name: "list",
|
|
13
|
-
description: "List measures"
|
|
14
|
-
},
|
|
15
|
-
capabilities: { minVersion: 59 },
|
|
16
|
-
args: {
|
|
17
|
-
...outputFlags,
|
|
18
|
-
...profileFlag,
|
|
19
|
-
...connectionFlags
|
|
20
|
-
},
|
|
21
|
-
outputSchema: MeasureListEnvelope,
|
|
22
|
-
examples: ["mb measure list", "mb measure list --json"],
|
|
23
|
-
async run({ ctx, getClient }) {
|
|
24
|
-
const client = await getClient();
|
|
25
|
-
const items = await client.requestParsed(MeasureApiList, "/api/measure");
|
|
26
|
-
renderList(wrapList(items), measureView, ctx);
|
|
27
|
-
}
|
|
28
|
-
});
|
|
29
|
-
|
|
30
|
-
//#endregion
|
|
31
|
-
export { list_default as default };
|
package/dist/list-IxaPXKXu.mjs
DELETED
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
import { connectionFlags, listEnvelopeSchema, outputFlags, profileFlag, renderList, wrapList } from "./capabilities-1HTHeDa4.mjs";
|
|
2
|
-
import "./command-augment-D9pI9Vbh.mjs";
|
|
3
|
-
import { defineMetabaseCommand } from "./runtime-CPIHg_Zg.mjs";
|
|
4
|
-
import { Transform, TransformCompact, transformView } from "./transform-BkSkCvpx.mjs";
|
|
5
|
-
import { z } from "zod";
|
|
6
|
-
|
|
7
|
-
//#region src/commands/transform/list.ts
|
|
8
|
-
const TransformApiList = z.array(Transform);
|
|
9
|
-
const TransformListEnvelope = listEnvelopeSchema(TransformCompact);
|
|
10
|
-
var list_default = defineMetabaseCommand({
|
|
11
|
-
meta: {
|
|
12
|
-
name: "list",
|
|
13
|
-
description: "List transforms"
|
|
14
|
-
},
|
|
15
|
-
capabilities: { minVersion: 59 },
|
|
16
|
-
args: {
|
|
17
|
-
...outputFlags,
|
|
18
|
-
...profileFlag,
|
|
19
|
-
...connectionFlags
|
|
20
|
-
},
|
|
21
|
-
outputSchema: TransformListEnvelope,
|
|
22
|
-
examples: ["mb transform list", "mb transform list --json"],
|
|
23
|
-
async run({ ctx, getClient }) {
|
|
24
|
-
const client = await getClient();
|
|
25
|
-
const items = await client.requestParsed(TransformApiList, "/api/transform");
|
|
26
|
-
renderList(wrapList(items), transformView, ctx);
|
|
27
|
-
}
|
|
28
|
-
});
|
|
29
|
-
|
|
30
|
-
//#endregion
|
|
31
|
-
export { list_default as default };
|
package/dist/list-hKRQUcGB.mjs
DELETED
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
import { connectionFlags, listEnvelopeSchema, outputFlags, profileFlag, renderList, wrapList } from "./capabilities-1HTHeDa4.mjs";
|
|
2
|
-
import "./command-augment-D9pI9Vbh.mjs";
|
|
3
|
-
import { defineMetabaseCommand } from "./runtime-CPIHg_Zg.mjs";
|
|
4
|
-
import { Snippet, SnippetCompact, snippetView } from "./snippet-1xYckIwc.mjs";
|
|
5
|
-
import { z } from "zod";
|
|
6
|
-
|
|
7
|
-
//#region src/commands/snippet/list.ts
|
|
8
|
-
const SnippetApiList = z.array(Snippet);
|
|
9
|
-
const SnippetListEnvelope = listEnvelopeSchema(SnippetCompact);
|
|
10
|
-
var list_default = defineMetabaseCommand({
|
|
11
|
-
meta: {
|
|
12
|
-
name: "list",
|
|
13
|
-
description: "List native query snippets"
|
|
14
|
-
},
|
|
15
|
-
capabilities: { minVersion: 58 },
|
|
16
|
-
args: {
|
|
17
|
-
...outputFlags,
|
|
18
|
-
...profileFlag,
|
|
19
|
-
...connectionFlags,
|
|
20
|
-
archived: {
|
|
21
|
-
type: "boolean",
|
|
22
|
-
description: "Show archived snippets instead of active ones"
|
|
23
|
-
}
|
|
24
|
-
},
|
|
25
|
-
outputSchema: SnippetListEnvelope,
|
|
26
|
-
examples: [
|
|
27
|
-
"mb snippet list",
|
|
28
|
-
"mb snippet list --json",
|
|
29
|
-
"mb snippet list --archived --json"
|
|
30
|
-
],
|
|
31
|
-
async run({ args, ctx, getClient }) {
|
|
32
|
-
const client = await getClient();
|
|
33
|
-
const items = await client.requestParsed(SnippetApiList, "/api/native-query-snippet", { query: { archived: args.archived || void 0 } });
|
|
34
|
-
renderList(wrapList(items), snippetView, ctx);
|
|
35
|
-
}
|
|
36
|
-
});
|
|
37
|
-
|
|
38
|
-
//#endregion
|
|
39
|
-
export { list_default as default };
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import { z } from "zod";
|
|
2
|
-
|
|
3
|
-
//#region src/commands/collection/listing.ts
|
|
4
|
-
const COLLECTIONS_PATH = "/api/collection";
|
|
5
|
-
async function fetchCollectionsWithLibrary(client, itemSchema) {
|
|
6
|
-
return await client.requestParsed(z.array(itemSchema), COLLECTIONS_PATH, { query: { "include-library": true } });
|
|
7
|
-
}
|
|
8
|
-
|
|
9
|
-
//#endregion
|
|
10
|
-
export { COLLECTIONS_PATH, fetchCollectionsWithLibrary };
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
import "./command-augment-D9pI9Vbh.mjs";
|
|
2
|
-
import { defineCommandGroup } from "./group-DfTvzGz-.mjs";
|
|
3
|
-
|
|
4
|
-
//#region src/commands/measure/index.ts
|
|
5
|
-
var measure_default = defineCommandGroup({
|
|
6
|
-
name: "measure",
|
|
7
|
-
description: "Manage Metabase measures",
|
|
8
|
-
skills: [{
|
|
9
|
-
skill: "mbql",
|
|
10
|
-
purpose: "the definition aggregation"
|
|
11
|
-
}, {
|
|
12
|
-
skill: "data-workflow",
|
|
13
|
-
purpose: "define reusable measures"
|
|
14
|
-
}],
|
|
15
|
-
subCommands: {
|
|
16
|
-
list: () => import("./list-DwMcwucR.mjs").then((mod) => mod.default),
|
|
17
|
-
get: () => import("./get-B6fSPCfp.mjs").then((mod) => mod.default),
|
|
18
|
-
create: () => import("./create-CHK9cJcK.mjs").then((mod) => mod.default),
|
|
19
|
-
update: () => import("./update-ZJ5T-SBW.mjs").then((mod) => mod.default),
|
|
20
|
-
archive: () => import("./archive-DihHU042.mjs").then((mod) => mod.default)
|
|
21
|
-
}
|
|
22
|
-
});
|
|
23
|
-
|
|
24
|
-
//#endregion
|
|
25
|
-
export { measure_default as default };
|
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
import { z } from "zod";
|
|
2
|
-
|
|
3
|
-
//#region src/runtime/paginate.ts
|
|
4
|
-
const DEFAULT_PAGE_SIZE = 50;
|
|
5
|
-
async function* paginate(client, path, itemSchema, opts = {}) {
|
|
6
|
-
const envelopeSchema = paginatedEnvelopeSchema(itemSchema);
|
|
7
|
-
const pageSize = opts.pageSize ?? DEFAULT_PAGE_SIZE;
|
|
8
|
-
const baseQuery = opts.query ?? {};
|
|
9
|
-
const cap = opts.max;
|
|
10
|
-
let offset = 0;
|
|
11
|
-
let yielded = 0;
|
|
12
|
-
while (true) {
|
|
13
|
-
const remaining = cap === void 0 ? Number.POSITIVE_INFINITY : cap - yielded;
|
|
14
|
-
if (remaining <= 0) return;
|
|
15
|
-
const requested = Math.min(pageSize, remaining);
|
|
16
|
-
const envelope = await client.requestParsed(envelopeSchema, path, {
|
|
17
|
-
query: {
|
|
18
|
-
...baseQuery,
|
|
19
|
-
limit: requested,
|
|
20
|
-
offset
|
|
21
|
-
},
|
|
22
|
-
...opts.signal !== void 0 && { signal: opts.signal }
|
|
23
|
-
});
|
|
24
|
-
for (const item of envelope.data) {
|
|
25
|
-
yield item;
|
|
26
|
-
yielded += 1;
|
|
27
|
-
if (cap !== void 0 && yielded >= cap) return;
|
|
28
|
-
}
|
|
29
|
-
if (envelope.data.length < requested) return;
|
|
30
|
-
if (envelope.total !== void 0 && envelope.total !== null && offset + envelope.data.length >= envelope.total) return;
|
|
31
|
-
offset += envelope.data.length;
|
|
32
|
-
}
|
|
33
|
-
}
|
|
34
|
-
async function collectPaginated(client, path, itemSchema, opts = {}) {
|
|
35
|
-
const items = [];
|
|
36
|
-
for await (const item of paginate(client, path, itemSchema, opts)) items.push(item);
|
|
37
|
-
return items;
|
|
38
|
-
}
|
|
39
|
-
function paginatedEnvelopeSchema(itemSchema) {
|
|
40
|
-
return z.object({
|
|
41
|
-
data: z.array(itemSchema),
|
|
42
|
-
total: z.number().int().nonnegative().nullable().optional(),
|
|
43
|
-
limit: z.number().int().nonnegative().optional(),
|
|
44
|
-
offset: z.number().int().nonnegative().optional()
|
|
45
|
-
}).passthrough();
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
//#endregion
|
|
49
|
-
export { collectPaginated };
|
package/dist/patch-BpjI9BOz.mjs
DELETED
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
import { Pulse } from "./pulse-C8q469KD.mjs";
|
|
2
|
-
|
|
3
|
-
//#region src/commands/subscription/patch.ts
|
|
4
|
-
function mergeSubscriptionUpdate(current, patch) {
|
|
5
|
-
return {
|
|
6
|
-
...patch,
|
|
7
|
-
archived: patch.archived ?? current.archived,
|
|
8
|
-
skip_if_empty: patch.skip_if_empty ?? current.skip_if_empty
|
|
9
|
-
};
|
|
10
|
-
}
|
|
11
|
-
async function patchSubscription(client, id, patch) {
|
|
12
|
-
const current = await client.requestParsed(Pulse, `/api/pulse/${id}`);
|
|
13
|
-
return client.requestParsed(Pulse, `/api/pulse/${id}`, {
|
|
14
|
-
method: "PUT",
|
|
15
|
-
body: mergeSubscriptionUpdate(current, patch)
|
|
16
|
-
});
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
//#endregion
|
|
20
|
-
export { patchSubscription };
|
package/dist/patch-DrMVqf34.mjs
DELETED
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
import { ConfigError } from "./capabilities-1HTHeDa4.mjs";
|
|
2
|
-
import { CARD_PAYLOAD_TYPE, Notification, NotificationCardPayload } from "./notification-BR5wehqg.mjs";
|
|
3
|
-
|
|
4
|
-
//#region src/commands/alert/patch.ts
|
|
5
|
-
async function fetchAlert(client, id) {
|
|
6
|
-
return assertCardAlert(await client.requestParsed(Notification, `/api/notification/${id}`));
|
|
7
|
-
}
|
|
8
|
-
function assertCardAlert(notification) {
|
|
9
|
-
if (notification.payload_type !== CARD_PAYLOAD_TYPE) throw new ConfigError(`notification ${notification.id} is a ${notification.payload_type}, not a question alert — \`mb alert\` manages card alerts only`);
|
|
10
|
-
return notification;
|
|
11
|
-
}
|
|
12
|
-
function mergeAlertUpdate(current, patch) {
|
|
13
|
-
return Notification.parse({
|
|
14
|
-
...current,
|
|
15
|
-
...patch,
|
|
16
|
-
id: current.id,
|
|
17
|
-
payload: patch.payload === void 0 ? current.payload : mergePayload(current, patch.payload)
|
|
18
|
-
});
|
|
19
|
-
}
|
|
20
|
-
function mergePayload(current, patch) {
|
|
21
|
-
if (current.payload === null) throw new ConfigError(`alert ${current.id} has lost its card payload — it can be archived, but not patched`);
|
|
22
|
-
return NotificationCardPayload.parse({
|
|
23
|
-
...current.payload,
|
|
24
|
-
...patch
|
|
25
|
-
});
|
|
26
|
-
}
|
|
27
|
-
async function patchAlert(client, id, patch) {
|
|
28
|
-
const current = await fetchAlert(client, id);
|
|
29
|
-
return client.requestParsed(Notification, `/api/notification/${id}`, {
|
|
30
|
-
method: "PUT",
|
|
31
|
-
body: mergeAlertUpdate(current, patch)
|
|
32
|
-
});
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
//#endregion
|
|
36
|
-
export { fetchAlert, patchAlert };
|
|
@@ -1,194 +0,0 @@
|
|
|
1
|
-
import { parseJsonOrPlain } from "./runtime-CPIHg_Zg.mjs";
|
|
2
|
-
import { pollUntil } from "./poll-rqLkEJVP.mjs";
|
|
3
|
-
import { z } from "zod";
|
|
4
|
-
|
|
5
|
-
//#region src/domain/git-sync.ts
|
|
6
|
-
const SyncTaskStatus = z.enum([
|
|
7
|
-
"running",
|
|
8
|
-
"successful",
|
|
9
|
-
"errored",
|
|
10
|
-
"cancelled",
|
|
11
|
-
"timed-out",
|
|
12
|
-
"conflict"
|
|
13
|
-
]);
|
|
14
|
-
const SyncTaskType = z.enum(["import", "export"]);
|
|
15
|
-
const SyncTask = z.object({
|
|
16
|
-
id: z.number().int().positive(),
|
|
17
|
-
sync_task_type: SyncTaskType,
|
|
18
|
-
status: SyncTaskStatus,
|
|
19
|
-
progress: z.number().min(0).max(1).nullable(),
|
|
20
|
-
started_at: z.string(),
|
|
21
|
-
ended_at: z.string().nullable().optional(),
|
|
22
|
-
last_progress_report_at: z.string().nullable().optional(),
|
|
23
|
-
version: z.string().nullable().optional(),
|
|
24
|
-
initiated_by: z.number().int().positive().nullable().optional(),
|
|
25
|
-
cancelled: z.boolean().nullable().optional(),
|
|
26
|
-
error_message: z.string().nullable().optional(),
|
|
27
|
-
conflicts: z.array(z.string()).nullable().optional()
|
|
28
|
-
}).loose();
|
|
29
|
-
const SyncTaskCompact = SyncTask.pick({
|
|
30
|
-
id: true,
|
|
31
|
-
sync_task_type: true,
|
|
32
|
-
status: true,
|
|
33
|
-
progress: true,
|
|
34
|
-
version: true,
|
|
35
|
-
error_message: true
|
|
36
|
-
}).strip();
|
|
37
|
-
const syncTaskView = {
|
|
38
|
-
compactPick: SyncTaskCompact,
|
|
39
|
-
tableColumns: [
|
|
40
|
-
{
|
|
41
|
-
key: "id",
|
|
42
|
-
label: "ID"
|
|
43
|
-
},
|
|
44
|
-
{
|
|
45
|
-
key: "sync_task_type",
|
|
46
|
-
label: "Type"
|
|
47
|
-
},
|
|
48
|
-
{
|
|
49
|
-
key: "status",
|
|
50
|
-
label: "Status"
|
|
51
|
-
},
|
|
52
|
-
{
|
|
53
|
-
key: "progress",
|
|
54
|
-
label: "Progress"
|
|
55
|
-
},
|
|
56
|
-
{
|
|
57
|
-
key: "version",
|
|
58
|
-
label: "Version"
|
|
59
|
-
},
|
|
60
|
-
{
|
|
61
|
-
key: "error_message",
|
|
62
|
-
label: "Error"
|
|
63
|
-
}
|
|
64
|
-
]
|
|
65
|
-
};
|
|
66
|
-
const SyncDirtyItem = z.object({
|
|
67
|
-
id: z.number().int(),
|
|
68
|
-
name: z.string().nullable(),
|
|
69
|
-
model: z.string(),
|
|
70
|
-
sync_status: z.string(),
|
|
71
|
-
collection_id: z.number().int().positive().nullable().optional(),
|
|
72
|
-
description: z.string().nullable().optional(),
|
|
73
|
-
display: z.string().nullable().optional(),
|
|
74
|
-
query_type: z.string().nullable().optional(),
|
|
75
|
-
table_id: z.number().int().positive().nullable().optional(),
|
|
76
|
-
table_name: z.string().nullable().optional()
|
|
77
|
-
}).loose();
|
|
78
|
-
const SyncDirtyItemCompact = SyncDirtyItem.pick({
|
|
79
|
-
id: true,
|
|
80
|
-
name: true,
|
|
81
|
-
model: true,
|
|
82
|
-
sync_status: true,
|
|
83
|
-
collection_id: true
|
|
84
|
-
}).strip();
|
|
85
|
-
const syncDirtyItemView = {
|
|
86
|
-
compactPick: SyncDirtyItemCompact,
|
|
87
|
-
tableColumns: [
|
|
88
|
-
{
|
|
89
|
-
key: "id",
|
|
90
|
-
label: "ID"
|
|
91
|
-
},
|
|
92
|
-
{
|
|
93
|
-
key: "model",
|
|
94
|
-
label: "Model"
|
|
95
|
-
},
|
|
96
|
-
{
|
|
97
|
-
key: "name",
|
|
98
|
-
label: "Name"
|
|
99
|
-
},
|
|
100
|
-
{
|
|
101
|
-
key: "sync_status",
|
|
102
|
-
label: "Status"
|
|
103
|
-
},
|
|
104
|
-
{
|
|
105
|
-
key: "collection_id",
|
|
106
|
-
label: "Collection"
|
|
107
|
-
}
|
|
108
|
-
]
|
|
109
|
-
};
|
|
110
|
-
|
|
111
|
-
//#endregion
|
|
112
|
-
//#region src/commands/git-sync/poll-task.ts
|
|
113
|
-
const TERMINAL_STATUSES = new Set([
|
|
114
|
-
"successful",
|
|
115
|
-
"errored",
|
|
116
|
-
"cancelled",
|
|
117
|
-
"timed-out",
|
|
118
|
-
"conflict"
|
|
119
|
-
]);
|
|
120
|
-
const FAILURE_STATUSES = new Set([
|
|
121
|
-
"errored",
|
|
122
|
-
"timed-out",
|
|
123
|
-
"conflict"
|
|
124
|
-
]);
|
|
125
|
-
const REMOTE_SYNC_PATHS = {
|
|
126
|
-
currentTask: "/api/ee/remote-sync/current-task",
|
|
127
|
-
cancelTask: "/api/ee/remote-sync/current-task/cancel",
|
|
128
|
-
isDirty: "/api/ee/remote-sync/is-dirty",
|
|
129
|
-
hasRemoteChanges: "/api/ee/remote-sync/has-remote-changes",
|
|
130
|
-
dirty: "/api/ee/remote-sync/dirty",
|
|
131
|
-
import: "/api/ee/remote-sync/import",
|
|
132
|
-
export: "/api/ee/remote-sync/export",
|
|
133
|
-
stash: "/api/ee/remote-sync/stash",
|
|
134
|
-
branches: "/api/ee/remote-sync/branches",
|
|
135
|
-
createBranch: "/api/ee/remote-sync/create-branch",
|
|
136
|
-
settings: "/api/ee/remote-sync/settings"
|
|
137
|
-
};
|
|
138
|
-
const SyncTaskIdle = z.object({ status: z.literal("idle") });
|
|
139
|
-
const SyncTaskOrIdle = z.union([SyncTask, SyncTaskIdle]);
|
|
140
|
-
const syncTaskIdleView = {
|
|
141
|
-
compactPick: SyncTaskIdle,
|
|
142
|
-
tableColumns: [{
|
|
143
|
-
key: "status",
|
|
144
|
-
label: "Status"
|
|
145
|
-
}]
|
|
146
|
-
};
|
|
147
|
-
function isTerminal(status) {
|
|
148
|
-
return TERMINAL_STATUSES.has(status);
|
|
149
|
-
}
|
|
150
|
-
function isFailure(status) {
|
|
151
|
-
return FAILURE_STATUSES.has(status);
|
|
152
|
-
}
|
|
153
|
-
async function fetchOptionalParsed(client, path, schema) {
|
|
154
|
-
const response = await client.requestRaw(path, {
|
|
155
|
-
method: "GET",
|
|
156
|
-
expectContentType: "binary"
|
|
157
|
-
});
|
|
158
|
-
if (response.status === 204) return null;
|
|
159
|
-
const text = await response.text();
|
|
160
|
-
return parseJsonOrPlain(text, response.headers.get("content-type"), schema, { source: response.url });
|
|
161
|
-
}
|
|
162
|
-
async function fetchCurrentTask(client) {
|
|
163
|
-
return await fetchOptionalParsed(client, REMOTE_SYNC_PATHS.currentTask, SyncTask);
|
|
164
|
-
}
|
|
165
|
-
async function pollSyncTask(client, opts) {
|
|
166
|
-
return await pollUntil(async () => fetchCurrentTask(client), (task) => task === null || isTerminal(task.status), {
|
|
167
|
-
backoff: "exponential",
|
|
168
|
-
...opts
|
|
169
|
-
});
|
|
170
|
-
}
|
|
171
|
-
function throwIfFailedTask(final, verb) {
|
|
172
|
-
if (final === null || !isFailure(final.status)) return;
|
|
173
|
-
const detail = final.error_message ? `: ${final.error_message}` : "";
|
|
174
|
-
throw new Error(`git-sync ${verb} ${final.status}${detail}`);
|
|
175
|
-
}
|
|
176
|
-
function formatSyncTask(task) {
|
|
177
|
-
const kind = task.sync_task_type === "export" ? "Export" : "Import";
|
|
178
|
-
const label = `${kind} task #${task.id}`;
|
|
179
|
-
const detail = task.error_message ? `: ${task.error_message}` : "";
|
|
180
|
-
switch (task.status) {
|
|
181
|
-
case "running": {
|
|
182
|
-
const percent = task.progress === null ? "" : ` (${Math.round(task.progress * 100)}%)`;
|
|
183
|
-
return `${label} is running${percent}.`;
|
|
184
|
-
}
|
|
185
|
-
case "successful": return `${label} succeeded.`;
|
|
186
|
-
case "errored": return `${label} errored${detail}.`;
|
|
187
|
-
case "timed-out": return `${label} timed out${detail}.`;
|
|
188
|
-
case "conflict": return `${label} hit conflicts${detail}.`;
|
|
189
|
-
case "cancelled": return `${label} was cancelled.`;
|
|
190
|
-
}
|
|
191
|
-
}
|
|
192
|
-
|
|
193
|
-
//#endregion
|
|
194
|
-
export { REMOTE_SYNC_PATHS, SyncDirtyItem, SyncDirtyItemCompact, SyncTask, SyncTaskOrIdle, fetchCurrentTask, fetchOptionalParsed, formatSyncTask, pollSyncTask, syncDirtyItemView, syncTaskIdleView, syncTaskView, throwIfFailedTask };
|
|
@@ -1,90 +0,0 @@
|
|
|
1
|
-
import { ChainedRequestError, ConfigError, MetabaseError, writeJson } from "./capabilities-1HTHeDa4.mjs";
|
|
2
|
-
import { HttpError } from "./runtime-CPIHg_Zg.mjs";
|
|
3
|
-
import { Card } from "./card-BFRRyTGs.mjs";
|
|
4
|
-
import { z } from "zod";
|
|
5
|
-
|
|
6
|
-
//#region src/commands/dashboard/preflight.ts
|
|
7
|
-
const PreflightDashcard = z.looseObject({ card_id: z.number().int().nullable().optional() });
|
|
8
|
-
function collectDashcardCardReferences(dashcards) {
|
|
9
|
-
if (dashcards === void 0 || dashcards === null) return [];
|
|
10
|
-
const refs = [];
|
|
11
|
-
dashcards.forEach((dashcard, index) => {
|
|
12
|
-
const parsed = PreflightDashcard.safeParse(dashcard);
|
|
13
|
-
if (!parsed.success) return;
|
|
14
|
-
const cardId = parsed.data.card_id;
|
|
15
|
-
if (typeof cardId === "number" && cardId > 0) refs.push({
|
|
16
|
-
cardId,
|
|
17
|
-
path: `/dashcards/${index}/card_id`
|
|
18
|
-
});
|
|
19
|
-
});
|
|
20
|
-
return refs;
|
|
21
|
-
}
|
|
22
|
-
async function preflightDashcardCardReferences(client, dashcards) {
|
|
23
|
-
const references = collectDashcardCardReferences(dashcards);
|
|
24
|
-
if (references.length === 0) return;
|
|
25
|
-
const grouped = new Map();
|
|
26
|
-
for (const ref of references) {
|
|
27
|
-
const list = grouped.get(ref.cardId);
|
|
28
|
-
if (list === void 0) grouped.set(ref.cardId, [ref]);
|
|
29
|
-
else list.push(ref);
|
|
30
|
-
}
|
|
31
|
-
const checks = await Promise.all(Array.from(grouped.entries()).map(async ([cardId, refs]) => ({
|
|
32
|
-
refs,
|
|
33
|
-
result: await classifyCardReference(client, cardId)
|
|
34
|
-
})));
|
|
35
|
-
const errors = [];
|
|
36
|
-
for (const check of checks) {
|
|
37
|
-
if (check.result.status === "ok") continue;
|
|
38
|
-
for (const ref of check.refs) errors.push({
|
|
39
|
-
path: ref.path,
|
|
40
|
-
message: check.result.message
|
|
41
|
-
});
|
|
42
|
-
}
|
|
43
|
-
if (errors.length === 0) return;
|
|
44
|
-
const outcome = {
|
|
45
|
-
ok: false,
|
|
46
|
-
errors
|
|
47
|
-
};
|
|
48
|
-
writeJson(outcome);
|
|
49
|
-
throw new ConfigError(`dashboard card-reference pre-flight failed: ${errors.length} error(s) — fix the dashcard card_id values listed above`);
|
|
50
|
-
}
|
|
51
|
-
function wrapChainedDashboardWriteError(error, dashboardId) {
|
|
52
|
-
if (!(error instanceof MetabaseError)) return error;
|
|
53
|
-
const prefix = `dashboard ${dashboardId} created but follow-up PUT /api/dashboard/${dashboardId} failed`;
|
|
54
|
-
const suffix = "dashcards not applied";
|
|
55
|
-
const message = `${prefix}: ${error.userMessage}; ${suffix}`;
|
|
56
|
-
if (error instanceof HttpError) return new HttpError({
|
|
57
|
-
status: error.status,
|
|
58
|
-
statusText: error.developerDetail.statusText,
|
|
59
|
-
method: error.developerDetail.method,
|
|
60
|
-
url: error.developerDetail.url,
|
|
61
|
-
responseHeaders: error.developerDetail.responseHeaders,
|
|
62
|
-
rawBody: error.developerDetail.body,
|
|
63
|
-
overrideUserMessage: message
|
|
64
|
-
});
|
|
65
|
-
return new ChainedRequestError(message, error);
|
|
66
|
-
}
|
|
67
|
-
async function classifyCardReference(client, cardId) {
|
|
68
|
-
try {
|
|
69
|
-
const card = await client.requestParsed(Card, `/api/card/${cardId}`);
|
|
70
|
-
if (card.archived) return {
|
|
71
|
-
status: "error",
|
|
72
|
-
message: `card ${cardId} is archived`
|
|
73
|
-
};
|
|
74
|
-
return { status: "ok" };
|
|
75
|
-
} catch (error) {
|
|
76
|
-
if (!(error instanceof HttpError)) throw error;
|
|
77
|
-
if (error.status === 404) return {
|
|
78
|
-
status: "error",
|
|
79
|
-
message: `card ${cardId} not found`
|
|
80
|
-
};
|
|
81
|
-
if (error.status === 401 || error.status === 403) return {
|
|
82
|
-
status: "error",
|
|
83
|
-
message: `card ${cardId} is not readable: ${error.userMessage}`
|
|
84
|
-
};
|
|
85
|
-
throw error;
|
|
86
|
-
}
|
|
87
|
-
}
|
|
88
|
-
|
|
89
|
-
//#endregion
|
|
90
|
-
export { preflightDashcardCardReferences, wrapChainedDashboardWriteError };
|