@metabase/cli 0.3.1-alpha.transform-tests.c0bc2d1 → 0.3.1-alpha.transform-tests.d9ed765
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{add-collection-CVDgC7C6.mjs → add-collection-v_uw_8VC.mjs} +6 -9
- package/dist/{alert-Co9m8k5l.mjs → alert-2MDhiuxT.mjs} +7 -7
- package/dist/{alerts-DjZGGxOy.mjs → alerts-BDoIryWj.mjs} +7 -7
- package/dist/{append-BXqeNFzW.mjs → append-CeHVEN3m.mjs} +5 -5
- package/dist/{archive-D1xZRRRA.mjs → archive-B9DiDia8.mjs} +6 -6
- package/dist/{archive-I61vFPxv.mjs → archive-BMQBzQMw.mjs} +4 -4
- package/dist/{archive-CXYUkzZo.mjs → archive-BU3VZ1An.mjs} +5 -5
- package/dist/{archive-Csku9zDp.mjs → archive-BopUoNoz.mjs} +4 -4
- package/dist/{archive-CH9osnGq.mjs → archive-BuHy5_kr.mjs} +4 -4
- package/dist/{archive-Bhk1IqGH.mjs → archive-CVTpSQ0H.mjs} +6 -6
- package/dist/{archive-pA5UZn1f.mjs → archive-CYaJZhBs.mjs} +4 -4
- package/dist/{archive-CUGpIXDT.mjs → archive-CxzoUCE_.mjs} +6 -6
- package/dist/{archive-DvV3oLCg.mjs → archive-D5QNFMmn.mjs} +4 -4
- package/dist/{archive-Cchi-tqq.mjs → archive-IBEbIm_S2.mjs} +6 -6
- package/dist/{archive-CzcjKpUC.mjs → archive-M2_D7zAj.mjs} +6 -6
- package/dist/{auth-BKgMIAKH.mjs → auth-DuGPC1Q0.mjs} +5 -5
- package/dist/{body-DxRSAMNC.mjs → body-hAwPMqBg.mjs} +3 -3
- package/dist/{branches-B96keFsO.mjs → branches-CIP60haa.mjs} +4 -7
- package/dist/{cancel-6GPBlUkr.mjs → cancel-C9hrQ1yg.mjs} +4 -4
- package/dist/{cancel-task-BIGAgcKk.mjs → cancel-task-BeviniVd.mjs} +5 -8
- package/dist/{card-zyUkr2nS.mjs → card-CEkp1mcI.mjs} +1 -1
- package/dist/card-DqPrL79i.mjs +24 -0
- package/dist/{card-DZxRmver.mjs → card-voh1k4hl.mjs} +14 -11
- package/dist/{cards-DY6Togtl.mjs → cards-CvWT-tKQ.mjs} +7 -7
- package/dist/cli.mjs +567 -70
- package/dist/client-yPhazV6T.mjs +4093 -0
- package/dist/collection-BsXk1V41.mjs +20 -0
- package/dist/{collection-CfulNRBG.mjs → collection-BxdPxD38.mjs} +1 -1
- package/dist/{collection-CGoVLvcD.mjs → collection-DYM0p3Xl.mjs} +1 -1
- package/dist/{collection-namespace-CEoQ7G08.mjs → collection-namespace-C5SNf6Yw.mjs} +2 -2
- package/dist/{content-translation-Cg_VW3kW.mjs → content-translation-BNYQ8fJ3.mjs} +3 -3
- package/dist/{create-DqCdW3tt.mjs → create-BVd4Y4py2.mjs} +6 -6
- package/dist/{create-BsDJATJM.mjs → create-BZyLtvg5.mjs} +6 -6
- package/dist/{create-BkIoWkzP.mjs → create-BsiUuwSb.mjs} +5 -5
- package/dist/{create-cHltWf0e.mjs → create-C1fVgFBd.mjs} +4 -4
- package/dist/{create-BxWMTy6i.mjs → create-C4U9DGDG.mjs} +7 -7
- package/dist/{create-BpjBffBq.mjs → create-CHn7P-Bz.mjs} +5 -5
- package/dist/{create-mzHtey5k.mjs → create-CL4xkZ4j.mjs} +6 -6
- package/dist/{create-V2Bdeu8p.mjs → create-CcOTodqT.mjs} +4 -4
- package/dist/{create-BeNQQTPt.mjs → create-Cmgq35ZB.mjs} +4 -4
- package/dist/{create-JZevXtCI.mjs → create-DPb3b69Y.mjs} +4 -4
- package/dist/{create-cSpqEzKH.mjs → create-DRyA-nuP.mjs} +5 -5
- package/dist/{create-CK5MABYu.mjs → create-DTfaHMNw.mjs} +6 -6
- package/dist/{create-CaDAT54M.mjs → create-Db3QVXRi.mjs} +7 -7
- package/dist/{create-D_pNL2X9.mjs → create-DqKDw2zq.mjs} +5 -8
- package/dist/{create-bH-qAv03.mjs → create-S0jXAtl2.mjs} +11 -7
- package/dist/{create-BuWV1GpI2.mjs → create-Z_gzD_p-2.mjs} +8 -8
- package/dist/{create-branch-DN9PrlRR.mjs → create-branch-hYwnfY8X.mjs} +5 -9
- package/dist/{csv-CVKLuIuS.mjs → csv-DOEqRG95.mjs} +5 -5
- package/dist/{current-task-Dnm3JaWg.mjs → current-task-DVo5aDfA.mjs} +5 -8
- package/dist/{dashboard-CKUR8ZpQ.mjs → dashboard-D0hwTC-f.mjs} +11 -2
- package/dist/{dashboard-SxUrG3Cg.mjs → dashboard-D8Yjjwfr.mjs} +10 -10
- package/dist/{dashboard-BlbNszi8.mjs → dashboard-DgK81azj.mjs} +1 -1
- package/dist/{database-B19qlLKZ.mjs → database-C3E9PZSx.mjs} +1 -1
- package/dist/{database-C8G6ZKG0.mjs → database-JtHTqSpq.mjs} +1 -1
- package/dist/{db-BnhuXAP9.mjs → db-ntq1NYVT.mjs} +7 -7
- package/dist/{delete-CH0FsDBg.mjs → delete-BQWk6Ogb.mjs} +5 -5
- package/dist/{delete-C3xeqTzS.mjs → delete-C2iVm203.mjs} +5 -5
- package/dist/{delete-BClvnlBc.mjs → delete-CPzdQGKf.mjs} +5 -5
- package/dist/{delete-Dn6VJuyR.mjs → delete-CW8xJwDm.mjs} +5 -5
- package/dist/{delete-DDVNawxh.mjs → delete-CZqaDxkf.mjs} +5 -5
- package/dist/{delete-6lroLZIE.mjs → delete-Qsf-OKkl.mjs} +5 -5
- package/dist/{delete-runtime-D74s6vhu.mjs → delete-runtime-BKEzJn22.mjs} +1 -2
- package/dist/{delete-table-C6LPzUDg.mjs → delete-table-DLufNvzW.mjs} +5 -5
- package/dist/{dependencies-vr51EFIu.mjs → dependencies-BGtd-eIR.mjs} +7 -7
- package/dist/{dirty-W0PzG3Yt.mjs → dirty-BiiJ5Ngh.mjs} +6 -9
- package/dist/{document-Cd2mmqCp.mjs → document-BHpLJbKU.mjs} +5 -0
- package/dist/document-BiS-U56S.mjs +19 -0
- package/dist/{document-D6OybtP2.mjs → document-CA0Q6lqu.mjs} +1 -1
- package/dist/{download-B-l6ajeo.mjs → download-DrcL0yRr.mjs} +3 -6
- package/dist/{eid-BGl_X67N.mjs → eid-Bn3Impnq.mjs} +4 -5
- package/dist/{events-BRRnroJb.mjs → events-CfnrXbim.mjs} +5 -5
- package/dist/{export-DEPLFq_E.mjs → export-CFK8cMvK.mjs} +7 -10
- package/dist/{field-Cr2DPUG9.mjs → field-CcN4oZy6.mjs} +16 -1
- package/dist/{field-BXaUzJvx.mjs → field-CeP-41qf.mjs} +5 -5
- package/dist/{field-BPsNa-TO.mjs → field-fDtIrY6D.mjs} +1 -1
- package/dist/{fields-LFMSMV5Z.mjs → fields-B3tJI4X2.mjs} +7 -7
- package/dist/{get-DCf0O3GJ.mjs → get-3ymehUjQ.mjs} +6 -6
- package/dist/{get-Du11BNRd.mjs → get-B9fPTBEQ.mjs} +5 -8
- package/dist/{get-B6lWlGeD.mjs → get-BFh5ctuV.mjs} +6 -6
- package/dist/{get-XcSH5Zyz.mjs → get-BMZ3UoJz.mjs} +6 -6
- package/dist/{get-DvCgLmPW.mjs → get-Be9oShms.mjs} +4 -4
- package/dist/{get-BempHTsm.mjs → get-BkTiIo_7.mjs} +4 -4
- package/dist/{get-M3zgKoZr.mjs → get-C-E-I10i.mjs} +6 -6
- package/dist/{get-DiRtfImy.mjs → get-CIlXE4zy.mjs} +6 -6
- package/dist/{get-7-OiP8ma.mjs → get-Cqfb4zZM.mjs} +4 -4
- package/dist/{get-DhxE02Ia.mjs → get-Cxvi9pSj.mjs} +6 -6
- package/dist/{get-DAsSPKxF.mjs → get-D2Bt3r3M.mjs} +4 -4
- package/dist/{get-DCHhq5Qv.mjs → get-DJDV3NMU.mjs} +5 -5
- package/dist/{get-BvI5QqjY.mjs → get-D_f0INnl.mjs} +6 -6
- package/dist/{get-CapP9GiI.mjs → get-Diozf-D0.mjs} +6 -6
- package/dist/{get-BM7MA5-7.mjs → get-Dl9WoeCd.mjs} +4 -4
- package/dist/{get-Bjvu5GM7.mjs → get-DlPhNHPX.mjs} +6 -6
- package/dist/{get-Cjx_5Zm-.mjs → get-DnVGJfW42.mjs} +6 -6
- package/dist/get-Dx4k6_Qt.mjs +93 -0
- package/dist/{get-DlQHyv4D.mjs → get-lRUl1Dnb.mjs} +4 -4
- package/dist/{get-C2DWxXYb.mjs → get-pGqPQ0Of.mjs} +6 -6
- package/dist/{get-run-UJmyRo7H.mjs → get-run-DmtNpSbG.mjs} +6 -6
- package/dist/{git-sync-BDnxPrqU.mjs → git-sync-BwBRmEhE.mjs} +18 -1
- package/dist/{git-sync-DxD_ng48.mjs → git-sync-TjX1r_wF.mjs} +1 -1
- package/dist/git-sync-jvNlPu2I.mjs +28 -0
- package/dist/{group-DBM87IgC.mjs → group-YQQ5GIcP.mjs} +2 -2
- package/dist/{has-remote-changes-DmhFpgJe.mjs → has-remote-changes-BS6jOb2-.mjs} +5 -8
- package/dist/{import-BRC0TzWQ.mjs → import-Cur2I6Yc.mjs} +7 -10
- package/dist/{input-DH9i67x_.mjs → input-DEvkIjGr.mjs} +1 -1
- package/dist/{is-dirty-CT9e5vSd.mjs → is-dirty-7Jo0tglq.mjs} +3 -6
- package/dist/{items-BSAEWZlw.mjs → items-BBJSvqWt.mjs} +7 -7
- package/dist/{key-BEhqIzIQ.mjs → key-PYetuQ13.mjs} +1 -1
- package/dist/library-BPIzb3K_.mjs +81 -0
- package/dist/{library-Zxh_MRVL.mjs → library-CpDosMc5.mjs} +5 -5
- package/dist/{library-DfYAT2Ep.mjs → library-PGCfm0UA.mjs} +1 -1
- package/dist/{list-DDFk1IFP.mjs → list--Frwwg4i.mjs} +7 -7
- package/dist/{list-C3IRtLP6.mjs → list-40V_8T3H.mjs} +4 -4
- package/dist/{list-DGLK2lso.mjs → list-BAO7rPNU.mjs} +4 -4
- package/dist/{list-QFieRzSf.mjs → list-BAaBsdMk.mjs} +6 -6
- package/dist/{list-08dyODsP.mjs → list-BCD9lkxc.mjs} +4 -4
- package/dist/{list-CAalCea_.mjs → list-BuZaFlV-.mjs} +4 -4
- package/dist/{list-BOUmEn2X.mjs → list-C7kqJAc8.mjs} +4 -4
- package/dist/{list-D6qH2PUE.mjs → list-CBGsfTib.mjs} +7 -7
- package/dist/{list-DCA0T8bS.mjs → list-CFJyXUsF.mjs} +14 -13
- package/dist/{list-De0ebgzc.mjs → list-CQJoLqy0.mjs} +7 -7
- package/dist/{list-Dqyd2TZI.mjs → list-CVs3TyU7.mjs} +6 -6
- package/dist/{list-Drm6l_tt.mjs → list-CX2668xz.mjs} +6 -6
- package/dist/{list-DCBLu0KG.mjs → list-CcyZu5Jp.mjs} +6 -6
- package/dist/{list-D9RmPIEJ.mjs → list-DPvJihmj.mjs} +7 -7
- package/dist/{list-CleMHJBY.mjs → list-D_Kv8Ezq.mjs} +7 -7
- package/dist/{list-BZbC260R.mjs → list-DuZlYCTl.mjs} +5 -5
- package/dist/{list-BxCk3QTy.mjs → list-_6JwpPXA.mjs} +6 -6
- package/dist/{list-DYlphSxV.mjs → list-bCtszwHJ.mjs} +4 -4
- package/dist/list-rojRNBu5.mjs +60 -0
- package/dist/{login-DDHEyjWz.mjs → login-BCxYB6ii.mjs} +15 -12
- package/dist/{logout-BbB0vvQN.mjs → logout-BVEYg9pV.mjs} +3 -4
- package/dist/{measure-CGuwA0KX.mjs → measure-DYmGuTVW.mjs} +6 -6
- package/dist/{notification-Fcq1fIPw.mjs → notification-DVrLkjFT.mjs} +1 -1
- package/dist/{parameter-DUKR8NXo.mjs → parameter-Celg0wZa.mjs} +1 -1
- package/dist/{parameter-values-CI6-CkB7.mjs → parameter-values-D4qte8qc.mjs} +5 -6
- package/dist/{parse-enum-D0Jfm_Bz.mjs → parse-enum-Dc0dMZ3P.mjs} +1 -1
- package/dist/{parse-id-CdZ0-1TM.mjs → parse-id-BSdAXN-r.mjs} +1 -1
- package/dist/{parse-ref-ibKVB0J4.mjs → parse-ref-DTDld_LJ.mjs} +1 -1
- package/dist/{path-Df2itv7t.mjs → path-BNZf4ETt.mjs} +5 -5
- package/dist/{poll-75SvT7Zv.mjs → poll-CZeXepUQ.mjs} +2 -2
- package/dist/{preflight-CoF1Em99.mjs → preflight-BsT-Ik4Z.mjs} +3 -4
- package/dist/{process-DBOOrmET.mjs → process-CTrfxxaC.mjs} +1 -1
- package/dist/{publish-xUBySB1T.mjs → publish-3Qlrs4CC.mjs} +9 -9
- package/dist/{pulse-BmsDenXm.mjs → pulse-Dz0ocv0l.mjs} +1 -1
- package/dist/{pulse-DhG6I9mI.mjs → pulse-x0gFxWfG.mjs} +2 -2
- package/dist/{query-BkZvffIM.mjs → query-B8MCziCM.mjs} +9 -10
- package/dist/{query-CmkC8sfu.mjs → query-DxjE4Hq2.mjs} +10 -12
- package/dist/{query-result-DBDwk8TS.mjs → query-result-E4Q-Gra6.mjs} +1 -1
- package/dist/{remove-collection-DFfmuTwD.mjs → remove-collection-CNWmp8C-.mjs} +6 -9
- package/dist/{render-CI93iP0I.mjs → render-MoT089RO.mjs} +13 -2
- package/dist/{replace-DjoDBCLa.mjs → replace-DOmUXCyk.mjs} +5 -5
- package/dist/{rescan-values-Ca2Wa0A2.mjs → rescan-values-DpU_Ex0F.mjs} +6 -6
- package/dist/{run-B_-pMw67.mjs → run-B8Vys-6V.mjs} +5 -5
- package/dist/{run-BCYATTjE.mjs → run-CCPUWI0V.mjs} +6 -6
- package/dist/{run-CP-chc5O.mjs → run-cyUFpMX3.mjs} +26 -14
- package/dist/{runs-B0ypYKmn.mjs → runs-92XSK8ij.mjs} +7 -7
- package/dist/{runtime-CJUDVwBu.mjs → runtime-DzVkvFHY.mjs} +946 -246
- package/dist/{schema-tables-Nl83e2Zm.mjs → schema-tables-lMGk2fyi.mjs} +7 -7
- package/dist/{schemas-Cp29qgn0.mjs → schemas-C83Q8dYY.mjs} +5 -5
- package/dist/{search-DFBwUc6d.mjs → search-BAXg-EJw.mjs} +2 -1
- package/dist/{search-BbktlnDC.mjs → search-D6qBaNsw.mjs} +6 -6
- package/dist/{segment-BHBoMpL9.mjs → segment-BFJd2-ck.mjs} +6 -6
- package/dist/{selectors-e_0QdkaG.mjs → selectors-Dcp25rNo.mjs} +3 -3
- package/dist/{send-DEGpBT_7.mjs → send-Be-_KmWr.mjs} +4 -4
- package/dist/{set-C3tLEVuY.mjs → set-Bg_4elCb.mjs} +5 -5
- package/dist/{set-active-CqvLJysE.mjs → set-active-CtQiMzt7.mjs} +5 -5
- package/dist/{setting-Dwi-Wifx.mjs → setting-BNEblMco.mjs} +4 -4
- package/dist/{setup-CcSVPnEI.mjs → setup-DFnxwJGX.mjs} +4 -4
- package/dist/{signal-CMd0EFUa.mjs → signal-k7cm5N6h.mjs} +11 -2
- package/dist/skill-list-Ro6J0pyV.mjs +76 -0
- package/dist/skills-BdrMrbXh.mjs +351 -0
- package/dist/{skills-Cxi3fKMZ.mjs → skills-CGYk6b2r.mjs} +3 -3
- package/dist/snippet-vMnFtNwi.mjs +19 -0
- package/dist/{stash-CVhkyRIT.mjs → stash-C9SZwusp.mjs} +7 -11
- package/dist/{status-B7tYgPVV.mjs → status-D0n7AuQU.mjs} +12 -11
- package/dist/{status-C9uhZuip.mjs → status-Dj04FCCv.mjs} +11 -9
- package/dist/{subscription-Cj9jyFEB.mjs → subscription-B5Iax7Ci.mjs} +6 -6
- package/dist/{subscriptions-B5oVkkZk.mjs → subscriptions-DwvHRO1v.mjs} +7 -7
- package/dist/{summary-PVERfPr2.mjs → summary-DaA6Twxk.mjs} +6 -6
- package/dist/{sync-schema-CtG6r6Pr.mjs → sync-schema-BFWKEC3r.mjs} +7 -7
- package/dist/{sync-task-BACcrs0i.mjs → sync-task-BXeWuARG.mjs} +1 -1
- package/dist/{table-CsIJNPFf.mjs → table-C6h4tIRw.mjs} +1 -1
- package/dist/{table-6IHwQyr6.mjs → table-DW1dG3Rl.mjs} +5 -5
- package/dist/{table-CeeTJgQb.mjs → table-DfuY0N8e.mjs} +51 -4
- package/dist/timeline-C0rqHF4p.mjs +21 -0
- package/dist/{timeline-event-ox_Bw9F4.mjs → timeline-event-D1MUnexK.mjs} +6 -6
- package/dist/{transform-DoTyyXAu.mjs → transform-CtqB1WYo.mjs} +2 -2
- package/dist/transform-D08iA4H_.mjs +28 -0
- package/dist/{transform-D3QX0jxA.mjs → transform-DiW7bREn.mjs} +68 -5
- package/dist/{transform-job-50GZHhKH.mjs → transform-job-AaMZRxAq.mjs} +1 -1
- package/dist/{transform-job-DRrK28IH.mjs → transform-job-CCguL6LP.mjs} +41 -4
- package/dist/transform-job-Me5CeV2z.mjs +22 -0
- package/dist/{transform-tag-La1wmOTP.mjs → transform-tag-CbgjSy76.mjs} +5 -5
- package/dist/{transform-test-w5hDTx_D.mjs → transform-test-B-gVzODx.mjs} +1 -1
- package/dist/transform-test-BB_IFtZS.mjs +163 -0
- package/dist/transform-test-CwonhnyQ.mjs +16 -0
- package/dist/{transforms-DIgACzP-.mjs → transforms-Bhtk_Gil.mjs} +7 -7
- package/dist/{tree-CQ0FXBnn.mjs → tree-DLorrdEm.mjs} +4 -5
- package/dist/{unpublish-Binr4uOG.mjs → unpublish-DOQhmLAx.mjs} +4 -7
- package/dist/{update-lpLLpKhX.mjs → update-BF4DWRT5.mjs} +6 -6
- package/dist/{update-BKvSfdXu.mjs → update-BeU02D8b.mjs} +6 -6
- package/dist/{update-B4lIwY0G.mjs → update-Bpb2V8Gm.mjs} +9 -9
- package/dist/{update-BZS5m-vx.mjs → update-CHNSRFKO.mjs} +7 -7
- package/dist/{update-DH9CL61y.mjs → update-CSqPKfTk.mjs} +8 -8
- package/dist/{update-mOqedkLk.mjs → update-CTCcgeaY.mjs} +7 -7
- package/dist/{update-BiG9eLNH.mjs → update-Ch43eYU-.mjs} +5 -5
- package/dist/{update-CIuoW1M9.mjs → update-D2dis8s_.mjs} +8 -8
- package/dist/{update-CWIhy9Ax.mjs → update-DEULsCgK.mjs} +6 -6
- package/dist/{update-Db3j44fi.mjs → update-DTZ07XFM.mjs} +5 -5
- package/dist/{update-BbOX6axn.mjs → update-DWhC3xYc.mjs} +5 -5
- package/dist/{update-Cb68f4dx.mjs → update-DeA4gyTG.mjs} +5 -5
- package/dist/{update-la0K6wAf.mjs → update-Dq-KEeyS.mjs} +7 -7
- package/dist/{update-dashcard-DbZ8NlLZ.mjs → update-dashcard-CfDqxOlj.mjs} +7 -7
- package/dist/{update-gGZjfZN3.mjs → update-ezD5XTpy.mjs} +7 -7
- package/dist/{update-B5NYEIHU.mjs → update-mmeImeUo.mjs} +7 -7
- package/dist/{update-TDaf7Xbt.mjs → update-xjuN7bdu.mjs} +7 -7
- package/dist/{upgrade-BCWXgRmG.mjs → upgrade-DgmbeOoJ.mjs} +6 -8
- package/dist/upload-BsPrAjN-.mjs +13 -0
- package/dist/{upload-CD555ui1.mjs → upload-Do2PBSeH.mjs} +2 -2
- package/dist/{upload-DUViVk1x.mjs → upload-DzFBdNxM.mjs} +4 -7
- package/dist/{uuid-D3CGL8wF.mjs → uuid-DYYGRv9y.mjs} +3 -4
- package/dist/{validate-BWchyW0V.mjs → validate-EAB-1EkK.mjs} +1 -1
- package/dist/{validate-query-DaGYSmpQ.mjs → validate-query-CQG86147.mjs} +2 -3
- package/dist/{values-8XUr04w3.mjs → values-Dk2CAR4T.mjs} +6 -6
- package/dist/{verify-deF_hThH.mjs → verify-8TnYrSNm.mjs} +3 -18
- package/dist/{wait-Ct0weHol.mjs → wait-Oz6xFpyA.mjs} +7 -10
- package/dist/{wait-flags-Cb-bI0RD.mjs → wait-flags-ClJx9LJ9.mjs} +2 -2
- package/dist/{window-BkvrP0gB.mjs → window-DSb1tqSe.mjs} +1 -1
- package/package.json +1 -1
- package/skill-data/core/SKILL.md +19 -4
- package/skill-data/data-workflow/references/building-clean-tables.md +6 -2
- package/skill-data/data-workflow/references/reusable-definitions.md +11 -3
- package/skill-data/document/SKILL.md +4 -1
- package/skill-data/git-sync/SKILL.md +5 -0
- package/skill-data/mbql/SKILL.md +1 -1
- package/skill-data/mbql/references/operators.md +20 -15
- package/skill-data/metadata/SKILL.md +1 -1
- package/skill-data/metadata/references/semantic-types.md +7 -1
- package/skill-data/native-sql/references/template-tags.md +6 -2
- package/skill-data/notification/SKILL.md +7 -1
- package/skill-data/transform/SKILL.md +17 -3
- package/skill-data/transform-test-plan/SKILL.md +1 -0
- package/skill-data/visualization/SKILL.md +11 -3
- package/skill-data/visualization/references/settings.md +6 -4
- package/skills/metabase-cli/SKILL.md +1 -1
- package/dist/card-zluRR7xD.mjs +0 -24
- package/dist/client-C9HBWl6A.mjs +0 -2282
- package/dist/collection-CrIkQWUK.mjs +0 -20
- package/dist/document-B1w9aIq7.mjs +0 -19
- package/dist/get-BUiHdwdU.mjs +0 -80
- package/dist/git-sync-DM5Nuv3a.mjs +0 -28
- package/dist/library-ClLgrAXy.mjs +0 -19
- package/dist/list-kIMBSzS-.mjs +0 -98
- package/dist/network-error-D6CiOEBw.mjs +0 -431
- package/dist/predicates-Bkm2IoeX.mjs +0 -170
- package/dist/skills-DTCrMcix.mjs +0 -216
- package/dist/snippet-hrEAI5Yf.mjs +0 -19
- package/dist/timeline-BwQIj-le.mjs +0 -21
- package/dist/transform-IPKGUzzd.mjs +0 -28
- package/dist/transform-job-COwH1ww7.mjs +0 -22
- package/dist/transform-test-C4VRGmGm.mjs +0 -149
- package/dist/transform-test-DGYx6MCT.mjs +0 -16
- package/dist/upload-BVBs2F69.mjs +0 -13
package/dist/skills-DTCrMcix.mjs
DELETED
|
@@ -1,216 +0,0 @@
|
|
|
1
|
-
import { d as ValidationError, f as errorMessage, i as ConfigError, p as isFileNotFoundError } from "./predicates-Bkm2IoeX.mjs";
|
|
2
|
-
import { O as readEnv, w as ENV_SKILLS_DIR } from "./cli.mjs";
|
|
3
|
-
import { z } from "zod";
|
|
4
|
-
import { closeSync, openSync, readFileSync, readSync, readdirSync, statSync } from "node:fs";
|
|
5
|
-
import { dirname, join, resolve } from "node:path";
|
|
6
|
-
import { fileURLToPath } from "node:url";
|
|
7
|
-
import { YAMLParseError, parse } from "yaml";
|
|
8
|
-
//#region src/runtime/yaml.ts
|
|
9
|
-
function parseYamlResult(input, schema, opts = {}) {
|
|
10
|
-
const sourcePrefix = opts.source ? `${opts.source}: ` : "";
|
|
11
|
-
let raw;
|
|
12
|
-
try {
|
|
13
|
-
raw = parse(input);
|
|
14
|
-
} catch (error) {
|
|
15
|
-
if (error instanceof YAMLParseError) return {
|
|
16
|
-
ok: false,
|
|
17
|
-
error: new ConfigError(`${sourcePrefix}invalid YAML: ${error.message}`)
|
|
18
|
-
};
|
|
19
|
-
return {
|
|
20
|
-
ok: false,
|
|
21
|
-
error: new ConfigError(`${sourcePrefix}invalid YAML: ${errorMessage(error)}`)
|
|
22
|
-
};
|
|
23
|
-
}
|
|
24
|
-
const parsed = schema.safeParse(raw);
|
|
25
|
-
if (!parsed.success) return {
|
|
26
|
-
ok: false,
|
|
27
|
-
error: new ValidationError(`${sourcePrefix}value did not match expected schema`, {
|
|
28
|
-
source: opts.source ?? "<input>",
|
|
29
|
-
zodIssues: parsed.error.issues
|
|
30
|
-
})
|
|
31
|
-
};
|
|
32
|
-
return {
|
|
33
|
-
ok: true,
|
|
34
|
-
value: parsed.data
|
|
35
|
-
};
|
|
36
|
-
}
|
|
37
|
-
//#endregion
|
|
38
|
-
//#region src/core/skills.ts
|
|
39
|
-
const Frontmatter = z.object({
|
|
40
|
-
name: z.string().min(1),
|
|
41
|
-
description: z.string().default(""),
|
|
42
|
-
hidden: z.boolean().default(false)
|
|
43
|
-
}).loose();
|
|
44
|
-
const SkillExtraFile = z.object({
|
|
45
|
-
path: z.string(),
|
|
46
|
-
content: z.string()
|
|
47
|
-
});
|
|
48
|
-
const SkillContent = z.object({
|
|
49
|
-
name: z.string(),
|
|
50
|
-
description: z.string(),
|
|
51
|
-
body: z.string(),
|
|
52
|
-
references: z.array(SkillExtraFile),
|
|
53
|
-
templates: z.array(SkillExtraFile)
|
|
54
|
-
});
|
|
55
|
-
const SKILL_DIR_NAMES = ["skills", "skill-data"];
|
|
56
|
-
const SKILL_MD_FILENAME = "SKILL.md";
|
|
57
|
-
const SKILL_REFERENCES_DIR = "references";
|
|
58
|
-
const SKILL_TEMPLATES_DIR = "templates";
|
|
59
|
-
const FRONTMATTER_PREFIX_BYTES = 8192;
|
|
60
|
-
const FRONTMATTER_FENCE = "---";
|
|
61
|
-
function loadAllSkills() {
|
|
62
|
-
return discoverSkills(resolveSkillDirs());
|
|
63
|
-
}
|
|
64
|
-
function loadVisibleSkills() {
|
|
65
|
-
return loadAllSkills().filter((s) => !s.hidden);
|
|
66
|
-
}
|
|
67
|
-
function findSkillByName(all, name) {
|
|
68
|
-
const hit = all.find((s) => s.name === name);
|
|
69
|
-
if (hit === void 0) throw new ConfigError(`unknown skill name: ${name} (${availableSkillNames(all)})`);
|
|
70
|
-
return hit;
|
|
71
|
-
}
|
|
72
|
-
function selectSkillsByNames(all, requested) {
|
|
73
|
-
if (requested.length === 0) throw new ConfigError("no skill names provided");
|
|
74
|
-
const byName = new Map(all.map((s) => [s.name, s]));
|
|
75
|
-
const missing = [];
|
|
76
|
-
const found = [];
|
|
77
|
-
for (const name of requested) {
|
|
78
|
-
const hit = byName.get(name);
|
|
79
|
-
if (hit === void 0) {
|
|
80
|
-
missing.push(name);
|
|
81
|
-
continue;
|
|
82
|
-
}
|
|
83
|
-
found.push(hit);
|
|
84
|
-
}
|
|
85
|
-
if (missing.length > 0) throw new ConfigError(`unknown skill name(s): ${missing.join(", ")} (${availableSkillNames(all)})`);
|
|
86
|
-
return found;
|
|
87
|
-
}
|
|
88
|
-
function availableSkillNames(all) {
|
|
89
|
-
const names = all.filter((s) => !s.hidden).map((s) => s.name);
|
|
90
|
-
return `available: ${names.length === 0 ? "none" : names.join(", ")}`;
|
|
91
|
-
}
|
|
92
|
-
function resolveSkillDirs() {
|
|
93
|
-
const override = readEnv(ENV_SKILLS_DIR);
|
|
94
|
-
if (override !== void 0 && override !== "") {
|
|
95
|
-
if (!isDirectory(override)) throw new ConfigError(`${ENV_SKILLS_DIR} points at ${override}, which is not a directory`);
|
|
96
|
-
return [resolve(override)];
|
|
97
|
-
}
|
|
98
|
-
const root = findPackageRoot();
|
|
99
|
-
if (root === null) return [];
|
|
100
|
-
return SKILL_DIR_NAMES.map((name) => join(root, name)).filter(isDirectory);
|
|
101
|
-
}
|
|
102
|
-
function findPackageRoot() {
|
|
103
|
-
let dir = dirname(fileURLToPath(import.meta.url));
|
|
104
|
-
while (true) {
|
|
105
|
-
for (const name of SKILL_DIR_NAMES) if (isDirectory(join(dir, name))) return dir;
|
|
106
|
-
const parent = dirname(dir);
|
|
107
|
-
if (parent === dir) return null;
|
|
108
|
-
dir = parent;
|
|
109
|
-
}
|
|
110
|
-
}
|
|
111
|
-
function discoverSkills(dirs) {
|
|
112
|
-
const skills = [];
|
|
113
|
-
for (const dir of dirs) {
|
|
114
|
-
let entries;
|
|
115
|
-
try {
|
|
116
|
-
entries = readdirSync(dir);
|
|
117
|
-
} catch (error) {
|
|
118
|
-
if (isFileNotFoundError(error)) continue;
|
|
119
|
-
throw error;
|
|
120
|
-
}
|
|
121
|
-
for (const entryName of entries) {
|
|
122
|
-
const skillDir = join(dir, entryName);
|
|
123
|
-
const fm = readFrontmatterFromSkill(skillDir);
|
|
124
|
-
if (fm === null) continue;
|
|
125
|
-
skills.push({
|
|
126
|
-
name: fm.name,
|
|
127
|
-
description: fm.description,
|
|
128
|
-
hidden: fm.hidden,
|
|
129
|
-
dir: skillDir
|
|
130
|
-
});
|
|
131
|
-
}
|
|
132
|
-
}
|
|
133
|
-
skills.sort((a, b) => a.name.localeCompare(b.name));
|
|
134
|
-
return skills;
|
|
135
|
-
}
|
|
136
|
-
function readFrontmatterFromSkill(skillDir) {
|
|
137
|
-
const prefix = readFilePrefix(join(skillDir, SKILL_MD_FILENAME), FRONTMATTER_PREFIX_BYTES);
|
|
138
|
-
if (prefix === null) return null;
|
|
139
|
-
return parseFrontmatter(prefix);
|
|
140
|
-
}
|
|
141
|
-
function readFilePrefix(path, maxBytes) {
|
|
142
|
-
let fd;
|
|
143
|
-
try {
|
|
144
|
-
fd = openSync(path, "r");
|
|
145
|
-
} catch (error) {
|
|
146
|
-
if (isFileNotFoundError(error)) return null;
|
|
147
|
-
throw error;
|
|
148
|
-
}
|
|
149
|
-
try {
|
|
150
|
-
const buffer = Buffer.alloc(maxBytes);
|
|
151
|
-
const bytesRead = readSync(fd, buffer, 0, maxBytes, 0);
|
|
152
|
-
return buffer.toString("utf8", 0, bytesRead);
|
|
153
|
-
} finally {
|
|
154
|
-
closeSync(fd);
|
|
155
|
-
}
|
|
156
|
-
}
|
|
157
|
-
function parseFrontmatter(content) {
|
|
158
|
-
const trimmed = content.trimStart();
|
|
159
|
-
if (!trimmed.startsWith(FRONTMATTER_FENCE)) return null;
|
|
160
|
-
const afterOpening = trimmed.slice(3);
|
|
161
|
-
const closingIndex = afterOpening.indexOf(`\n${FRONTMATTER_FENCE}`);
|
|
162
|
-
if (closingIndex < 0) return null;
|
|
163
|
-
const result = parseYamlResult(afterOpening.slice(0, closingIndex), Frontmatter);
|
|
164
|
-
if (!result.ok) return null;
|
|
165
|
-
return result.value;
|
|
166
|
-
}
|
|
167
|
-
function readSkillContent(info, opts) {
|
|
168
|
-
const body = readFileSync(join(info.dir, SKILL_MD_FILENAME), "utf8");
|
|
169
|
-
if (!opts.includeExtras) return {
|
|
170
|
-
name: info.name,
|
|
171
|
-
description: info.description,
|
|
172
|
-
body,
|
|
173
|
-
references: [],
|
|
174
|
-
templates: []
|
|
175
|
-
};
|
|
176
|
-
return {
|
|
177
|
-
name: info.name,
|
|
178
|
-
description: info.description,
|
|
179
|
-
body,
|
|
180
|
-
references: collectExtraFiles(info.dir, SKILL_REFERENCES_DIR),
|
|
181
|
-
templates: collectExtraFiles(info.dir, SKILL_TEMPLATES_DIR)
|
|
182
|
-
};
|
|
183
|
-
}
|
|
184
|
-
function collectExtraFiles(skillDir, subdirName) {
|
|
185
|
-
const subdir = join(skillDir, subdirName);
|
|
186
|
-
if (!isDirectory(subdir)) return [];
|
|
187
|
-
const entries = readdirSync(subdir).toSorted();
|
|
188
|
-
const out = [];
|
|
189
|
-
for (const entry of entries) {
|
|
190
|
-
const full = join(subdir, entry);
|
|
191
|
-
if (!isFile(full)) continue;
|
|
192
|
-
out.push({
|
|
193
|
-
path: `${subdirName}/${entry}`,
|
|
194
|
-
content: readFileSync(full, "utf8")
|
|
195
|
-
});
|
|
196
|
-
}
|
|
197
|
-
return out;
|
|
198
|
-
}
|
|
199
|
-
function isDirectory(path) {
|
|
200
|
-
try {
|
|
201
|
-
return statSync(path).isDirectory();
|
|
202
|
-
} catch (error) {
|
|
203
|
-
if (isFileNotFoundError(error)) return false;
|
|
204
|
-
throw error;
|
|
205
|
-
}
|
|
206
|
-
}
|
|
207
|
-
function isFile(path) {
|
|
208
|
-
try {
|
|
209
|
-
return statSync(path).isFile();
|
|
210
|
-
} catch (error) {
|
|
211
|
-
if (isFileNotFoundError(error)) return false;
|
|
212
|
-
throw error;
|
|
213
|
-
}
|
|
214
|
-
}
|
|
215
|
-
//#endregion
|
|
216
|
-
export { readSkillContent as a, loadVisibleSkills as i, findSkillByName as n, selectSkillsByNames as o, loadAllSkills as r, SkillContent as t };
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
import { t as defineCommandGroup } from "./group-DBM87IgC.mjs";
|
|
2
|
-
//#region src/commands/snippet/index.ts
|
|
3
|
-
var snippet_default = defineCommandGroup({
|
|
4
|
-
name: "snippet",
|
|
5
|
-
description: "Manage Metabase native query snippets",
|
|
6
|
-
skills: [{
|
|
7
|
-
skill: "core",
|
|
8
|
-
purpose: "native-SQL snippets and body input"
|
|
9
|
-
}],
|
|
10
|
-
subCommands: {
|
|
11
|
-
list: () => import("./list-08dyODsP.mjs").then((mod) => mod.default),
|
|
12
|
-
get: () => import("./get-BM7MA5-7.mjs").then((mod) => mod.default),
|
|
13
|
-
create: () => import("./create-JZevXtCI.mjs").then((mod) => mod.default),
|
|
14
|
-
update: () => import("./update-BiG9eLNH.mjs").then((mod) => mod.default),
|
|
15
|
-
archive: () => import("./archive-CH9osnGq.mjs").then((mod) => mod.default)
|
|
16
|
-
}
|
|
17
|
-
});
|
|
18
|
-
//#endregion
|
|
19
|
-
export { snippet_default as default };
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
import { t as defineCommandGroup } from "./group-DBM87IgC.mjs";
|
|
2
|
-
//#region src/commands/timeline/index.ts
|
|
3
|
-
var timeline_default = defineCommandGroup({
|
|
4
|
-
name: "timeline",
|
|
5
|
-
description: "Manage Metabase timelines (event annotations for time-series charts)",
|
|
6
|
-
skills: [{
|
|
7
|
-
skill: "core",
|
|
8
|
-
purpose: "collection scoping — events render only on questions in the timeline's collection"
|
|
9
|
-
}],
|
|
10
|
-
subCommands: {
|
|
11
|
-
list: () => import("./list-BOUmEn2X.mjs").then((mod) => mod.default),
|
|
12
|
-
get: () => import("./get-DlQHyv4D.mjs").then((mod) => mod.default),
|
|
13
|
-
events: () => import("./events-BRRnroJb.mjs").then((mod) => mod.default),
|
|
14
|
-
create: () => import("./create-BeNQQTPt.mjs").then((mod) => mod.default),
|
|
15
|
-
update: () => import("./update-Cb68f4dx.mjs").then((mod) => mod.default),
|
|
16
|
-
archive: () => import("./archive-Csku9zDp.mjs").then((mod) => mod.default),
|
|
17
|
-
delete: () => import("./delete-BClvnlBc.mjs").then((mod) => mod.default)
|
|
18
|
-
}
|
|
19
|
-
});
|
|
20
|
-
//#endregion
|
|
21
|
-
export { timeline_default as default };
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
import { t as defineCommandGroup } from "./group-DBM87IgC.mjs";
|
|
2
|
-
//#region src/commands/transform/index.ts
|
|
3
|
-
var transform_default = defineCommandGroup({
|
|
4
|
-
name: "transform",
|
|
5
|
-
description: "Manage Metabase transforms",
|
|
6
|
-
skills: [{
|
|
7
|
-
skill: "transform",
|
|
8
|
-
purpose: "body shape, run-with-wait, iterate"
|
|
9
|
-
}, {
|
|
10
|
-
skill: "mbql",
|
|
11
|
-
purpose: "MBQL source.query bodies"
|
|
12
|
-
}],
|
|
13
|
-
subCommands: {
|
|
14
|
-
list: () => import("./list-Drm6l_tt.mjs").then((mod) => mod.default),
|
|
15
|
-
get: () => import("./get-DCf0O3GJ.mjs").then((mod) => mod.default),
|
|
16
|
-
dependencies: () => import("./dependencies-vr51EFIu.mjs").then((mod) => mod.default),
|
|
17
|
-
create: () => import("./create-BuWV1GpI2.mjs").then((mod) => mod.default),
|
|
18
|
-
update: () => import("./update-B4lIwY0G.mjs").then((mod) => mod.default),
|
|
19
|
-
delete: () => import("./delete-Dn6VJuyR.mjs").then((mod) => mod.default),
|
|
20
|
-
"delete-table": () => import("./delete-table-C6LPzUDg.mjs").then((mod) => mod.default),
|
|
21
|
-
run: () => import("./run-BCYATTjE.mjs").then((mod) => mod.default),
|
|
22
|
-
cancel: () => import("./cancel-6GPBlUkr.mjs").then((mod) => mod.default),
|
|
23
|
-
"get-run": () => import("./get-run-UJmyRo7H.mjs").then((mod) => mod.default),
|
|
24
|
-
runs: () => import("./runs-B0ypYKmn.mjs").then((mod) => mod.default)
|
|
25
|
-
}
|
|
26
|
-
});
|
|
27
|
-
//#endregion
|
|
28
|
-
export { transform_default as default };
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
import { t as defineCommandGroup } from "./group-DBM87IgC.mjs";
|
|
2
|
-
//#region src/commands/transform-job/index.ts
|
|
3
|
-
var transform_job_default = defineCommandGroup({
|
|
4
|
-
name: "transform-job",
|
|
5
|
-
description: "Manage Metabase transform jobs",
|
|
6
|
-
skills: [{
|
|
7
|
-
skill: "transform",
|
|
8
|
-
purpose: "tag-driven job schedules"
|
|
9
|
-
}],
|
|
10
|
-
subCommands: {
|
|
11
|
-
list: () => import("./list-DCBLu0KG.mjs").then((mod) => mod.default),
|
|
12
|
-
get: () => import("./get-C2DWxXYb.mjs").then((mod) => mod.default),
|
|
13
|
-
create: () => import("./create-mzHtey5k.mjs").then((mod) => mod.default),
|
|
14
|
-
update: () => import("./update-la0K6wAf.mjs").then((mod) => mod.default),
|
|
15
|
-
delete: () => import("./delete-DDVNawxh.mjs").then((mod) => mod.default),
|
|
16
|
-
run: () => import("./run-CP-chc5O.mjs").then((mod) => mod.default),
|
|
17
|
-
transforms: () => import("./transforms-DIgACzP-.mjs").then((mod) => mod.default),
|
|
18
|
-
"set-active": () => import("./set-active-CqvLJysE.mjs").then((mod) => mod.default)
|
|
19
|
-
}
|
|
20
|
-
});
|
|
21
|
-
//#endregion
|
|
22
|
-
export { transform_job_default as default };
|
|
@@ -1,149 +0,0 @@
|
|
|
1
|
-
import { z } from "zod";
|
|
2
|
-
//#region ../client/src/domain/transform-test.ts
|
|
3
|
-
const TransformTestTable = z.object({
|
|
4
|
-
schema: z.string().nullable().optional(),
|
|
5
|
-
name: z.string().min(1)
|
|
6
|
-
}).loose();
|
|
7
|
-
/**
|
|
8
|
-
* A column of declared test data. `cast_type` is what the cell is cast to, so it has to satisfy the
|
|
9
|
-
* warehouse's CAST grammar rather than name one of its column types — MySQL takes `SIGNED` and
|
|
10
|
-
* reports `INTEGER`. Contrast [[TransformTestResultColumn]], whose `database_type` is a real column
|
|
11
|
-
* type; the two are not interchangeable.
|
|
12
|
-
*/
|
|
13
|
-
const TransformTestColumn = z.object({
|
|
14
|
-
name: z.string().min(1),
|
|
15
|
-
cast_type: z.string().min(1).describe("A CAST target, e.g. VARCHAR(255) or MySQL's SIGNED")
|
|
16
|
-
}).loose();
|
|
17
|
-
const TransformTestCell = z.union([
|
|
18
|
-
z.string(),
|
|
19
|
-
z.number(),
|
|
20
|
-
z.boolean(),
|
|
21
|
-
z.null()
|
|
22
|
-
]);
|
|
23
|
-
const TransformTestRow = z.record(z.string(), TransformTestCell);
|
|
24
|
-
const TransformTestSqlData = z.object({
|
|
25
|
-
format: z.literal("sql"),
|
|
26
|
-
sql: z.string().min(1)
|
|
27
|
-
}).loose();
|
|
28
|
-
const TransformTestRowsData = z.object({
|
|
29
|
-
format: z.literal("rows"),
|
|
30
|
-
columns: z.array(TransformTestColumn).min(1),
|
|
31
|
-
rows: z.array(TransformTestRow)
|
|
32
|
-
}).loose();
|
|
33
|
-
const TransformTestSqlInput = TransformTestSqlData.extend({ table: TransformTestTable });
|
|
34
|
-
const TransformTestRowsInput = TransformTestRowsData.extend({ table: TransformTestTable });
|
|
35
|
-
/** Test data standing in for one table the transform reads. */
|
|
36
|
-
const TransformTestInput = z.discriminatedUnion("format", [TransformTestSqlInput, TransformTestRowsInput]);
|
|
37
|
-
const TransformTestEqualsSql = TransformTestSqlData.extend({
|
|
38
|
-
type: z.literal("equals"),
|
|
39
|
-
name: z.string().min(1)
|
|
40
|
-
});
|
|
41
|
-
const TransformTestEqualsRows = TransformTestRowsData.extend({
|
|
42
|
-
type: z.literal("equals"),
|
|
43
|
-
name: z.string().min(1)
|
|
44
|
-
});
|
|
45
|
-
const TransformTestEmpty = z.object({
|
|
46
|
-
type: z.literal("empty"),
|
|
47
|
-
name: z.string().min(1),
|
|
48
|
-
sql: z.string().min(1)
|
|
49
|
-
}).loose();
|
|
50
|
-
/** One check against the transform's output. Names are unique within a test. */
|
|
51
|
-
const TransformTestExpectation = z.union([
|
|
52
|
-
TransformTestEqualsSql,
|
|
53
|
-
TransformTestEqualsRows,
|
|
54
|
-
TransformTestEmpty
|
|
55
|
-
]);
|
|
56
|
-
const TransformTest = z.object({
|
|
57
|
-
id: z.number().int(),
|
|
58
|
-
entity_id: z.string().nullable(),
|
|
59
|
-
transform_id: z.number().int(),
|
|
60
|
-
creator_id: z.number().int(),
|
|
61
|
-
name: z.string(),
|
|
62
|
-
description: z.string().nullable(),
|
|
63
|
-
inputs: z.array(TransformTestInput),
|
|
64
|
-
expectations: z.array(TransformTestExpectation),
|
|
65
|
-
created_at: z.string(),
|
|
66
|
-
updated_at: z.string()
|
|
67
|
-
}).loose();
|
|
68
|
-
const TransformTestCompact = TransformTest.pick({
|
|
69
|
-
id: true,
|
|
70
|
-
transform_id: true,
|
|
71
|
-
name: true,
|
|
72
|
-
description: true
|
|
73
|
-
}).strip();
|
|
74
|
-
/**
|
|
75
|
-
* The server closes this map, so an unrecognized key is a 400 there. Refusing it here names the key
|
|
76
|
-
* instead: a body cloned from `get` has to shed `id`, `entity_id`, `creator_id`, `created_at` and
|
|
77
|
-
* `updated_at` before it can be sent back.
|
|
78
|
-
*/
|
|
79
|
-
const TransformTestCreateInput = z.object({
|
|
80
|
-
transform_id: z.number().int().positive(),
|
|
81
|
-
name: z.string().min(1),
|
|
82
|
-
description: z.string().nullable().optional(),
|
|
83
|
-
inputs: z.array(TransformTestInput),
|
|
84
|
-
expectations: z.array(TransformTestExpectation)
|
|
85
|
-
}).strict();
|
|
86
|
-
/** Closed for the same reason as [[TransformTestCreateInput]]; every field is optional. */
|
|
87
|
-
const TransformTestUpdateInput = z.object({
|
|
88
|
-
transform_id: z.number().int().positive().optional(),
|
|
89
|
-
name: z.string().min(1).optional(),
|
|
90
|
-
description: z.string().nullable().optional(),
|
|
91
|
-
inputs: z.array(TransformTestInput).optional(),
|
|
92
|
-
expectations: z.array(TransformTestExpectation).optional()
|
|
93
|
-
}).strict();
|
|
94
|
-
/**
|
|
95
|
-
* `error` is one expectation's own failure to run, which leaves the rest of the run reporting; the
|
|
96
|
-
* run as a whole is only `passed` or `failed`.
|
|
97
|
-
*/
|
|
98
|
-
const TransformTestStatus = z.enum([
|
|
99
|
-
"passed",
|
|
100
|
-
"failed",
|
|
101
|
-
"error"
|
|
102
|
-
]);
|
|
103
|
-
/** A column as a run reports it: the output table's own type, not the declared `cast_type`. */
|
|
104
|
-
const TransformTestResultColumn = z.object({
|
|
105
|
-
name: z.string(),
|
|
106
|
-
database_type: z.string()
|
|
107
|
-
}).loose();
|
|
108
|
-
const TransformTestCellMismatch = z.object({
|
|
109
|
-
column: z.string(),
|
|
110
|
-
expected: TransformTestCell,
|
|
111
|
-
actual: TransformTestCell
|
|
112
|
-
}).loose();
|
|
113
|
-
const TransformTestRowCounts = z.object({
|
|
114
|
-
actual: z.number().int(),
|
|
115
|
-
expected: z.number().int()
|
|
116
|
-
}).loose();
|
|
117
|
-
const TransformTestExpectationError = z.object({
|
|
118
|
-
type: z.string(),
|
|
119
|
-
message: z.string()
|
|
120
|
-
}).loose();
|
|
121
|
-
/**
|
|
122
|
-
* What one expectation found. The keys beyond `name`, `type` and `status` are its type's own:
|
|
123
|
-
* `equals` reports the rows the two sides disagree on, `empty` a sample of the rows its query
|
|
124
|
-
* returned, and both cap what they report, with `truncated` counting what the cap dropped.
|
|
125
|
-
*/
|
|
126
|
-
const TransformTestExpectationResult = z.object({
|
|
127
|
-
name: z.string(),
|
|
128
|
-
type: z.enum(["equals", "empty"]),
|
|
129
|
-
status: TransformTestStatus,
|
|
130
|
-
columns: z.array(TransformTestResultColumn).optional(),
|
|
131
|
-
error: TransformTestExpectationError.optional(),
|
|
132
|
-
"row-counts": TransformTestRowCounts.optional(),
|
|
133
|
-
"extra-rows": z.array(TransformTestRow).optional(),
|
|
134
|
-
"missing-rows": z.array(TransformTestRow).optional(),
|
|
135
|
-
"cell-mismatches": z.array(TransformTestCellMismatch).optional(),
|
|
136
|
-
sample: z.array(TransformTestRow).optional(),
|
|
137
|
-
truncated: z.number().int().optional()
|
|
138
|
-
}).loose();
|
|
139
|
-
/**
|
|
140
|
-
* What a run reported. `tables` maps each temp table the run created to the table it stood in for.
|
|
141
|
-
* A run that happened reports `passed` or `failed`; a refusal is an HTTP error rather than a body.
|
|
142
|
-
*/
|
|
143
|
-
const TransformTestRunResult = z.object({
|
|
144
|
-
status: TransformTestStatus,
|
|
145
|
-
expectations: z.array(TransformTestExpectationResult),
|
|
146
|
-
tables: z.record(z.string(), z.string())
|
|
147
|
-
}).loose();
|
|
148
|
-
//#endregion
|
|
149
|
-
export { TransformTestUpdateInput as a, TransformTestRunResult as i, TransformTestCompact as n, TransformTestCreateInput as r, TransformTest as t };
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
import { t as defineCommandGroup } from "./group-DBM87IgC.mjs";
|
|
2
|
-
//#region src/commands/transform-test/index.ts
|
|
3
|
-
var transform_test_default = defineCommandGroup({
|
|
4
|
-
name: "transform-test",
|
|
5
|
-
description: "Manage transform tests — fixtures and expectations run against temp tables",
|
|
6
|
-
subCommands: {
|
|
7
|
-
list: () => import("./list-DDFk1IFP.mjs").then((mod) => mod.default),
|
|
8
|
-
get: () => import("./get-CapP9GiI.mjs").then((mod) => mod.default),
|
|
9
|
-
create: () => import("./create-BsDJATJM.mjs").then((mod) => mod.default),
|
|
10
|
-
update: () => import("./update-B5NYEIHU.mjs").then((mod) => mod.default),
|
|
11
|
-
delete: () => import("./delete-C3xeqTzS.mjs").then((mod) => mod.default),
|
|
12
|
-
run: () => import("./run-B_-pMw67.mjs").then((mod) => mod.default)
|
|
13
|
-
}
|
|
14
|
-
});
|
|
15
|
-
//#endregion
|
|
16
|
-
export { transform_test_default as default };
|
package/dist/upload-BVBs2F69.mjs
DELETED
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
import { t as defineCommandGroup } from "./group-DBM87IgC.mjs";
|
|
2
|
-
//#region src/commands/upload/index.ts
|
|
3
|
-
var upload_default = defineCommandGroup({
|
|
4
|
-
name: "upload",
|
|
5
|
-
description: "Upload CSV files into Metabase",
|
|
6
|
-
subCommands: {
|
|
7
|
-
csv: () => import("./csv-CVKLuIuS.mjs").then((m) => m.default),
|
|
8
|
-
append: () => import("./append-BXqeNFzW.mjs").then((m) => m.default),
|
|
9
|
-
replace: () => import("./replace-DjoDBCLa.mjs").then((m) => m.default)
|
|
10
|
-
}
|
|
11
|
-
});
|
|
12
|
-
//#endregion
|
|
13
|
-
export { upload_default as default };
|