@metabase/cli 0.3.1-alpha.transform-tests.3fbcf8b → 0.3.1-alpha.transform-tests.c0bc2d1
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-C-XJPp3F.mjs → add-collection-CVDgC7C6.mjs} +2 -2
- package/dist/{alert-Klz8Bhst.mjs → alert-Co9m8k5l.mjs} +6 -6
- package/dist/{alerts-Bp2vByJf.mjs → alerts-DjZGGxOy.mjs} +3 -3
- package/dist/{append-D16_s1HW.mjs → append-BXqeNFzW.mjs} +2 -2
- package/dist/{archive-Q_qUuYh8.mjs → archive-Bhk1IqGH.mjs} +2 -2
- package/dist/{archive-BOJUGwyL.mjs → archive-CH9osnGq.mjs} +2 -2
- package/dist/{archive-vzu8ghZZ.mjs → archive-CUGpIXDT.mjs} +2 -2
- package/dist/{archive-C9iNjXcI.mjs → archive-CXYUkzZo.mjs} +2 -2
- package/dist/{archive-Bj4MjbJY.mjs → archive-Cchi-tqq.mjs} +2 -2
- package/dist/{archive-CA-HIfQq.mjs → archive-Csku9zDp.mjs} +2 -2
- package/dist/{archive-lDnTIypd.mjs → archive-CzcjKpUC.mjs} +2 -2
- package/dist/{archive-RzzXt2V0.mjs → archive-D1xZRRRA.mjs} +2 -2
- package/dist/{archive-D4nGMs8A.mjs → archive-DvV3oLCg.mjs} +2 -2
- package/dist/{archive-nDvHMzTv.mjs → archive-I61vFPxv.mjs} +2 -2
- package/dist/{archive-Dd7ZTibw.mjs → archive-pA5UZn1f.mjs} +2 -2
- package/dist/{auth-kyPQfiND.mjs → auth-BKgMIAKH.mjs} +4 -4
- package/dist/{branches-QixvzIpl.mjs → branches-B96keFsO.mjs} +1 -1
- package/dist/{cancel-CPStS4zJ.mjs → cancel-6GPBlUkr.mjs} +2 -2
- package/dist/{cancel-task--cuSISnl.mjs → cancel-task-BIGAgcKk.mjs} +1 -1
- package/dist/{card-p2r_szeS.mjs → card-zluRR7xD.mjs} +7 -7
- package/dist/{cards-CNbV8aGO.mjs → cards-DY6Togtl.mjs} +2 -2
- package/dist/cli.mjs +32 -32
- package/dist/{client-DynvZqa0.mjs → client-C9HBWl6A.mjs} +1 -1
- package/dist/{collection-CAM47Der.mjs → collection-CrIkQWUK.mjs} +6 -6
- package/dist/{content-translation-CxTabpLF.mjs → content-translation-Cg_VW3kW.mjs} +2 -2
- package/dist/{create-BGV7ejai.mjs → create-BeNQQTPt.mjs} +1 -1
- package/dist/{create-UxWtLwXT.mjs → create-BkIoWkzP.mjs} +1 -1
- package/dist/{create-BTvSwLws.mjs → create-BpjBffBq.mjs} +1 -1
- package/dist/{create-ku05K1Oj.mjs → create-BsDJATJM.mjs} +4 -4
- package/dist/{create-BMokmmLp2.mjs → create-BuWV1GpI2.mjs} +1 -1
- package/dist/{create-M8qXs24L.mjs → create-BxWMTy6i.mjs} +1 -1
- package/dist/{create-CtDaASGO.mjs → create-CK5MABYu.mjs} +1 -1
- package/dist/{create-BGy4L_yh.mjs → create-CaDAT54M.mjs} +1 -1
- package/dist/{create-BsvpUxJq.mjs → create-D_pNL2X9.mjs} +1 -1
- package/dist/{create-CEP4Jsrd.mjs → create-DqCdW3tt.mjs} +1 -1
- package/dist/{create-U15wd8_9.mjs → create-JZevXtCI.mjs} +1 -1
- package/dist/{create-CYhsYOOJ.mjs → create-V2Bdeu8p.mjs} +1 -1
- package/dist/{create-CsABLrSI.mjs → create-bH-qAv03.mjs} +1 -1
- package/dist/{create-branch-Bkq9rtf7.mjs → create-branch-DN9PrlRR.mjs} +1 -1
- package/dist/{create-WIIp7MVV.mjs → create-cHltWf0e.mjs} +1 -1
- package/dist/{create-DMLjSEkF.mjs → create-cSpqEzKH.mjs} +1 -1
- package/dist/{create-BikaTHCw.mjs → create-mzHtey5k.mjs} +1 -1
- package/dist/{csv-GincCch9.mjs → csv-CVKLuIuS.mjs} +2 -2
- package/dist/{current-task-CbnNWQ7H.mjs → current-task-Dnm3JaWg.mjs} +1 -1
- package/dist/{dashboard-ReNaou5J.mjs → dashboard-SxUrG3Cg.mjs} +9 -9
- package/dist/{db-2hSYsqHk.mjs → db-BnhuXAP9.mjs} +6 -6
- package/dist/{delete-B2wmUpj_.mjs → delete-6lroLZIE.mjs} +2 -2
- package/dist/{delete-C1YmyeVy.mjs → delete-BClvnlBc.mjs} +2 -2
- package/dist/{delete-CZqleA9Q.mjs → delete-C3xeqTzS.mjs} +3 -3
- package/dist/{delete-Bv3_SIqh.mjs → delete-CH0FsDBg.mjs} +2 -2
- package/dist/{delete-BEPw7WRT.mjs → delete-DDVNawxh.mjs} +2 -2
- package/dist/{delete-DNsY94Ok.mjs → delete-Dn6VJuyR.mjs} +2 -2
- package/dist/{delete-table-DySwoEaq.mjs → delete-table-C6LPzUDg.mjs} +2 -2
- package/dist/{dependencies-ygT6uMu4.mjs → dependencies-vr51EFIu.mjs} +2 -2
- package/dist/{dirty-BkiHZ8gb.mjs → dirty-W0PzG3Yt.mjs} +1 -1
- package/dist/{document-DGbDloCb.mjs → document-B1w9aIq7.mjs} +5 -5
- package/dist/{download-Chr-YNTG.mjs → download-B-l6ajeo.mjs} +1 -1
- package/dist/{eid-BvY-YGpN.mjs → eid-BGl_X67N.mjs} +1 -1
- package/dist/{events-B01P0G7C.mjs → events-BRRnroJb.mjs} +2 -2
- package/dist/{export-CG23iezf.mjs → export-DEPLFq_E.mjs} +2 -2
- package/dist/{field-DikmNcAt.mjs → field-BXaUzJvx.mjs} +4 -4
- package/dist/{fields-C9BF3jHL.mjs → fields-LFMSMV5Z.mjs} +2 -2
- package/dist/{get-UW0DOjH5.mjs → get-7-OiP8ma.mjs} +2 -2
- package/dist/{get-PKhv8WUf.mjs → get-B6lWlGeD.mjs} +2 -2
- package/dist/{get-C1V7vZse.mjs → get-BM7MA5-7.mjs} +2 -2
- package/dist/{get-B4GltkXP.mjs → get-BUiHdwdU.mjs} +1 -1
- package/dist/{get-DvqYIBp5.mjs → get-BempHTsm.mjs} +2 -2
- package/dist/{get-C99cjjD0.mjs → get-Bjvu5GM7.mjs} +2 -2
- package/dist/{get-DY-e5oP7.mjs → get-BvI5QqjY.mjs} +2 -2
- package/dist/{get-CMMXBVff.mjs → get-C2DWxXYb.mjs} +2 -2
- package/dist/{get-BHpVRSbm.mjs → get-CapP9GiI.mjs} +5 -5
- package/dist/{get-BYSFFlsd.mjs → get-Cjx_5Zm-.mjs} +2 -2
- package/dist/{get-Buxkx-RX.mjs → get-DAsSPKxF.mjs} +1 -1
- package/dist/{get-DdSB-fpR.mjs → get-DCHhq5Qv.mjs} +2 -2
- package/dist/{get-B3jvGI0b.mjs → get-DCf0O3GJ.mjs} +2 -2
- package/dist/{get-BtauixMx.mjs → get-DhxE02Ia.mjs} +2 -2
- package/dist/{get-FJofgEPB.mjs → get-DiRtfImy.mjs} +1 -1
- package/dist/{get-CkMLxzVy.mjs → get-DlQHyv4D.mjs} +2 -2
- package/dist/{get-gFM8-HHP.mjs → get-Du11BNRd.mjs} +1 -1
- package/dist/{get-DZpRq_Fw.mjs → get-DvCgLmPW.mjs} +2 -2
- package/dist/{get-Blbcl76m.mjs → get-M3zgKoZr.mjs} +2 -2
- package/dist/{get-N5EUCDL0.mjs → get-XcSH5Zyz.mjs} +2 -2
- package/dist/{get-run-F7ARJeAD.mjs → get-run-UJmyRo7H.mjs} +2 -2
- package/dist/git-sync-DM5Nuv3a.mjs +28 -0
- package/dist/{has-remote-changes-Bwyp8mc-.mjs → has-remote-changes-DmhFpgJe.mjs} +1 -1
- package/dist/{import-CPY8aM8d.mjs → import-BRC0TzWQ.mjs} +2 -2
- package/dist/{is-dirty-0F_UJY7Q.mjs → is-dirty-CT9e5vSd.mjs} +1 -1
- package/dist/{items-FUop0zGR.mjs → items-BSAEWZlw.mjs} +1 -1
- package/dist/{library-DpOtb0E0.mjs → library-Zxh_MRVL.mjs} +4 -4
- package/dist/{list-rQ-6XSua.mjs → list-08dyODsP.mjs} +1 -1
- package/dist/{list-Beoh2AYD.mjs → list-BOUmEn2X.mjs} +1 -1
- package/dist/{list-GyP4b_tU.mjs → list-BZbC260R.mjs} +1 -1
- package/dist/{list-Bqm0F1Y-.mjs → list-BxCk3QTy.mjs} +1 -1
- package/dist/{list-BASNYNJr.mjs → list-C3IRtLP6.mjs} +1 -1
- package/dist/{list-BQaXU1bp.mjs → list-CAalCea_.mjs} +1 -1
- package/dist/{list-BQrk4Ua4.mjs → list-CleMHJBY.mjs} +1 -1
- package/dist/{list-CGkgypYz.mjs → list-D6qH2PUE.mjs} +1 -1
- package/dist/{list-C2qxVTu7.mjs → list-D9RmPIEJ.mjs} +1 -1
- package/dist/{list-Uc1OxV36.mjs → list-DCA0T8bS.mjs} +2 -2
- package/dist/{list-ba7lI44w.mjs → list-DCBLu0KG.mjs} +1 -1
- package/dist/{list-B-74c1BD.mjs → list-DDFk1IFP.mjs} +5 -5
- package/dist/{list-xC99-2X0.mjs → list-DGLK2lso.mjs} +1 -1
- package/dist/{list-lzIKVtE9.mjs → list-DYlphSxV.mjs} +1 -1
- package/dist/{list-DfbsmsHv.mjs → list-De0ebgzc.mjs} +2 -2
- package/dist/{list-DdFViPYS.mjs → list-Dqyd2TZI.mjs} +1 -1
- package/dist/{list-DMlFbccD.mjs → list-Drm6l_tt.mjs} +1 -1
- package/dist/{list--B2EUWJg.mjs → list-QFieRzSf.mjs} +1 -1
- package/dist/{list-CvzWE6CS.mjs → list-kIMBSzS-.mjs} +1 -1
- package/dist/{login-D5jt0q9K.mjs → login-DDHEyjWz.mjs} +2 -2
- package/dist/{logout-DViy0VzV.mjs → logout-BbB0vvQN.mjs} +1 -1
- package/dist/{measure-IPlonpqU.mjs → measure-CGuwA0KX.mjs} +5 -5
- package/dist/{parameter-values-CHyOCxmR.mjs → parameter-values-CI6-CkB7.mjs} +2 -2
- package/dist/{parse-id-CPINxy7h.mjs → parse-id-CdZ0-1TM.mjs} +1 -1
- package/dist/{path-bMZzUOVo.mjs → path-Df2itv7t.mjs} +1 -1
- package/dist/{publish-Cs-OUG6n.mjs → publish-xUBySB1T.mjs} +2 -2
- package/dist/{query-CEdmSEq8.mjs → query-BkZvffIM.mjs} +1 -1
- package/dist/{query-CpD46hL6.mjs → query-CmkC8sfu.mjs} +2 -2
- package/dist/{remove-collection-DynsqkwG.mjs → remove-collection-DFfmuTwD.mjs} +2 -2
- package/dist/{replace-C6YqqCG9.mjs → replace-DjoDBCLa.mjs} +2 -2
- package/dist/{rescan-values-C6PB02uT.mjs → rescan-values-Ca2Wa0A2.mjs} +2 -2
- package/dist/{run-Cb86sH_c.mjs → run-BCYATTjE.mjs} +3 -3
- package/dist/{run-C7PXBBEl.mjs → run-B_-pMw67.mjs} +4 -4
- package/dist/{run-CpmWoOGp.mjs → run-CP-chc5O.mjs} +2 -2
- package/dist/{runs-CCRszsbB.mjs → runs-B0ypYKmn.mjs} +2 -2
- package/dist/{runtime-BMJv4VOi.mjs → runtime-CJUDVwBu.mjs} +1 -1
- package/dist/{schema-tables-BQdFNy1B.mjs → schema-tables-Nl83e2Zm.mjs} +2 -2
- package/dist/{schemas-CNAPFh4n.mjs → schemas-Cp29qgn0.mjs} +2 -2
- package/dist/{search-BKVV6YtB.mjs → search-BbktlnDC.mjs} +2 -2
- package/dist/{segment-CDoZHSYX.mjs → segment-BHBoMpL9.mjs} +5 -5
- package/dist/{selectors-BXbjj36S.mjs → selectors-e_0QdkaG.mjs} +2 -2
- package/dist/{send-D2eXL9lt.mjs → send-DEGpBT_7.mjs} +2 -2
- package/dist/{set-sHBtSGLi.mjs → set-C3tLEVuY.mjs} +1 -1
- package/dist/{set-active-DT61WwV0.mjs → set-active-CqvLJysE.mjs} +1 -1
- package/dist/{setting-dkfKvCxc.mjs → setting-Dwi-Wifx.mjs} +3 -3
- package/dist/{setup-TOwWatgm.mjs → setup-CcSVPnEI.mjs} +1 -1
- package/dist/{skills-BcOjZldN.mjs → skills-Cxi3fKMZ.mjs} +3 -3
- package/dist/{snippet-DMdFqvNq.mjs → snippet-hrEAI5Yf.mjs} +5 -5
- package/dist/{stash-BgWw2lyu.mjs → stash-CVhkyRIT.mjs} +2 -2
- package/dist/{status-B14FO8n7.mjs → status-B7tYgPVV.mjs} +1 -1
- package/dist/{status-J4pEIm-c.mjs → status-C9uhZuip.mjs} +1 -1
- package/dist/{subscription-B1uuKxM7.mjs → subscription-Cj9jyFEB.mjs} +5 -5
- package/dist/{subscriptions-BHIATSN6.mjs → subscriptions-B5oVkkZk.mjs} +3 -3
- package/dist/{summary-B1V5TXaZ.mjs → summary-PVERfPr2.mjs} +2 -2
- package/dist/{sync-schema-D1vX-rpv.mjs → sync-schema-CtG6r6Pr.mjs} +3 -3
- package/dist/{table-CDeO1WbH.mjs → table-6IHwQyr6.mjs} +4 -4
- package/dist/{timeline-MQFX3Fla.mjs → timeline-BwQIj-le.mjs} +7 -7
- package/dist/{timeline-event-oGmne082.mjs → timeline-event-ox_Bw9F4.mjs} +5 -5
- package/dist/transform-IPKGUzzd.mjs +28 -0
- package/dist/transform-job-COwH1ww7.mjs +22 -0
- package/dist/{transform-tag-Bpj8l5Ci.mjs → transform-tag-La1wmOTP.mjs} +4 -4
- package/dist/{transform-test-Dhcj7u-U.mjs → transform-test-C4VRGmGm.mjs} +8 -1
- package/dist/{transform-test-BhkpwFqD.mjs → transform-test-DGYx6MCT.mjs} +6 -6
- package/dist/{transform-test-BJOPAwKl.mjs → transform-test-w5hDTx_D.mjs} +1 -1
- package/dist/{transforms-K7Y4ON_q.mjs → transforms-DIgACzP-.mjs} +2 -2
- package/dist/{tree-CtFtroe4.mjs → tree-CQ0FXBnn.mjs} +1 -1
- package/dist/{unpublish-D7UaaIWA.mjs → unpublish-Binr4uOG.mjs} +2 -2
- package/dist/{update-C_wTtrtX.mjs → update-B4lIwY0G.mjs} +2 -2
- package/dist/{update-e4ufwrkF.mjs → update-B5NYEIHU.mjs} +5 -5
- package/dist/{update-dRAPKE3c.mjs → update-BKvSfdXu.mjs} +2 -2
- package/dist/{update-DUNJEk8m.mjs → update-BZS5m-vx.mjs} +2 -2
- package/dist/{update-CGJXd_E3.mjs → update-BbOX6axn.mjs} +2 -2
- package/dist/{update-BlBEKrNE.mjs → update-BiG9eLNH.mjs} +2 -2
- package/dist/{update-MWaDj2VX.mjs → update-CIuoW1M9.mjs} +2 -2
- package/dist/{update-YkB3xWUh.mjs → update-CWIhy9Ax.mjs} +2 -2
- package/dist/{update-HqUKBeM2.mjs → update-Cb68f4dx.mjs} +2 -2
- package/dist/{update-BpuZsX9z.mjs → update-DH9CL61y.mjs} +2 -2
- package/dist/{update-B7veBLhx.mjs → update-Db3j44fi.mjs} +2 -2
- package/dist/{update-D9Nfv864.mjs → update-TDaf7Xbt.mjs} +2 -2
- package/dist/{update-dashcard-BGqKMqQb.mjs → update-dashcard-DbZ8NlLZ.mjs} +2 -2
- package/dist/{update-3ksm443P.mjs → update-gGZjfZN3.mjs} +2 -2
- package/dist/{update-BicO3Lio.mjs → update-la0K6wAf.mjs} +2 -2
- package/dist/{update-BvbPpgOL.mjs → update-lpLLpKhX.mjs} +2 -2
- package/dist/{update-bix8NoKq.mjs → update-mOqedkLk.mjs} +2 -2
- package/dist/{upgrade-DkQ1wk4z.mjs → upgrade-BCWXgRmG.mjs} +1 -1
- package/dist/{upload-JN6EK96c.mjs → upload-BVBs2F69.mjs} +3 -3
- package/dist/{upload-BfGc-L4t.mjs → upload-DUViVk1x.mjs} +1 -1
- package/dist/{uuid-BLBLkWAF.mjs → uuid-D3CGL8wF.mjs} +1 -1
- package/dist/{values-8CrXBkyg.mjs → values-8XUr04w3.mjs} +2 -2
- package/dist/{verify-nNVN-0CR.mjs → verify-deF_hThH.mjs} +2 -2
- package/dist/{wait-YrD7UYFF.mjs → wait-Ct0weHol.mjs} +2 -2
- package/dist/{wait-flags-CDtMS8FP.mjs → wait-flags-Cb-bI0RD.mjs} +1 -1
- package/package.json +1 -1
- package/skill-data/core/SKILL.md +12 -11
- package/skill-data/transform/SKILL.md +9 -5
- package/skill-data/transform-test-plan/SKILL.md +170 -0
- package/skill-data/transform-test-plan/references/checklist.md +81 -0
- package/skill-data/transform-test-plan/references/checks.md +259 -0
- package/dist/git-sync-IW4T2sKq.mjs +0 -28
- package/dist/transform-CWIqW64R.mjs +0 -28
- package/dist/transform-job-DpF2MARE.mjs +0 -22
|
@@ -0,0 +1,28 @@
|
|
|
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 };
|
|
@@ -0,0 +1,22 @@
|
|
|
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 };
|
|
@@ -8,10 +8,10 @@ var transform_tag_default = defineCommandGroup({
|
|
|
8
8
|
purpose: "tags that drive job schedules"
|
|
9
9
|
}],
|
|
10
10
|
subCommands: {
|
|
11
|
-
list: () => import("./list-
|
|
12
|
-
create: () => import("./create-
|
|
13
|
-
update: () => import("./update-
|
|
14
|
-
delete: () => import("./delete-
|
|
11
|
+
list: () => import("./list-CAalCea_.mjs").then((mod) => mod.default),
|
|
12
|
+
create: () => import("./create-cHltWf0e.mjs").then((mod) => mod.default),
|
|
13
|
+
update: () => import("./update-Db3j44fi.mjs").then((mod) => mod.default),
|
|
14
|
+
delete: () => import("./delete-CH0FsDBg.mjs").then((mod) => mod.default)
|
|
15
15
|
}
|
|
16
16
|
});
|
|
17
17
|
//#endregion
|
|
@@ -4,9 +4,15 @@ const TransformTestTable = z.object({
|
|
|
4
4
|
schema: z.string().nullable().optional(),
|
|
5
5
|
name: z.string().min(1)
|
|
6
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
|
+
*/
|
|
7
13
|
const TransformTestColumn = z.object({
|
|
8
14
|
name: z.string().min(1),
|
|
9
|
-
|
|
15
|
+
cast_type: z.string().min(1).describe("A CAST target, e.g. VARCHAR(255) or MySQL's SIGNED")
|
|
10
16
|
}).loose();
|
|
11
17
|
const TransformTestCell = z.union([
|
|
12
18
|
z.string(),
|
|
@@ -94,6 +100,7 @@ const TransformTestStatus = z.enum([
|
|
|
94
100
|
"failed",
|
|
95
101
|
"error"
|
|
96
102
|
]);
|
|
103
|
+
/** A column as a run reports it: the output table's own type, not the declared `cast_type`. */
|
|
97
104
|
const TransformTestResultColumn = z.object({
|
|
98
105
|
name: z.string(),
|
|
99
106
|
database_type: z.string()
|
|
@@ -4,12 +4,12 @@ var transform_test_default = defineCommandGroup({
|
|
|
4
4
|
name: "transform-test",
|
|
5
5
|
description: "Manage transform tests — fixtures and expectations run against temp tables",
|
|
6
6
|
subCommands: {
|
|
7
|
-
list: () => import("./list-
|
|
8
|
-
get: () => import("./get-
|
|
9
|
-
create: () => import("./create-
|
|
10
|
-
update: () => import("./update-
|
|
11
|
-
delete: () => import("./delete-
|
|
12
|
-
run: () => import("./run-
|
|
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
13
|
}
|
|
14
14
|
});
|
|
15
15
|
//#endregion
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { F as outputFlags, I as profileFlag, M as connectionFlags, N as listFlags, R as listEnvelopeSchema, s as renderList } from "./cli.mjs";
|
|
2
|
-
import { t as defineMetabaseCommand } from "./runtime-
|
|
3
|
-
import { t as parseId } from "./parse-id-
|
|
2
|
+
import { t as defineMetabaseCommand } from "./runtime-CJUDVwBu.mjs";
|
|
3
|
+
import { t as parseId } from "./parse-id-CdZ0-1TM.mjs";
|
|
4
4
|
import { n as windowList } from "./window-BkvrP0gB.mjs";
|
|
5
5
|
import { n as TransformCompact } from "./transform-D3QX0jxA.mjs";
|
|
6
6
|
import { n as transformView } from "./transform-DoTyyXAu.mjs";
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { i as ConfigError } from "./predicates-Bkm2IoeX.mjs";
|
|
2
2
|
import { F as outputFlags, I as profileFlag, M as connectionFlags, l as writeJson } from "./cli.mjs";
|
|
3
|
-
import { t as defineMetabaseCommand } from "./runtime-
|
|
3
|
+
import { t as defineMetabaseCommand } from "./runtime-CJUDVwBu.mjs";
|
|
4
4
|
import { f as CollectionTreeNode } from "./collection-CfulNRBG.mjs";
|
|
5
5
|
import { z } from "zod";
|
|
6
6
|
//#region src/commands/collection/tree.ts
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { F as outputFlags, I as profileFlag, M as connectionFlags, c as renderSummary } from "./cli.mjs";
|
|
2
|
-
import { t as defineMetabaseCommand } from "./runtime-
|
|
3
|
-
import { n as tableSelectorFlags, t as parseTableSelectors } from "./selectors-
|
|
2
|
+
import { t as defineMetabaseCommand } from "./runtime-CJUDVwBu.mjs";
|
|
3
|
+
import { n as tableSelectorFlags, t as parseTableSelectors } from "./selectors-e_0QdkaG.mjs";
|
|
4
4
|
import { z } from "zod";
|
|
5
5
|
//#region src/commands/library/unpublish.ts
|
|
6
6
|
const LibraryUnpublishResult = z.object({
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { F as outputFlags, I as profileFlag, M as connectionFlags, c as renderSummary } from "./cli.mjs";
|
|
2
|
-
import { t as defineMetabaseCommand } from "./runtime-
|
|
3
|
-
import { t as parseId } from "./parse-id-
|
|
2
|
+
import { t as defineMetabaseCommand } from "./runtime-CJUDVwBu.mjs";
|
|
3
|
+
import { t as parseId } from "./parse-id-CdZ0-1TM.mjs";
|
|
4
4
|
import { t as readBody } from "./body-DxRSAMNC.mjs";
|
|
5
5
|
import { t as bodyInputFlags } from "./body-flags-AqKpN01Y.mjs";
|
|
6
6
|
import { c as TransformUpdateInput, t as Transform } from "./transform-D3QX0jxA.mjs";
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { F as outputFlags, I as profileFlag, M as connectionFlags, c as renderSummary } from "./cli.mjs";
|
|
2
|
-
import { t as defineMetabaseCommand } from "./runtime-
|
|
3
|
-
import { t as parseId } from "./parse-id-
|
|
2
|
+
import { t as defineMetabaseCommand } from "./runtime-CJUDVwBu.mjs";
|
|
3
|
+
import { t as parseId } from "./parse-id-CdZ0-1TM.mjs";
|
|
4
4
|
import { t as readBody } from "./body-DxRSAMNC.mjs";
|
|
5
5
|
import { t as bodyInputFlags } from "./body-flags-AqKpN01Y.mjs";
|
|
6
|
-
import { a as TransformTestUpdateInput, t as TransformTest } from "./transform-test-
|
|
7
|
-
import { t as transformTestView } from "./transform-test-
|
|
6
|
+
import { a as TransformTestUpdateInput, t as TransformTest } from "./transform-test-C4VRGmGm.mjs";
|
|
7
|
+
import { t as transformTestView } from "./transform-test-w5hDTx_D.mjs";
|
|
8
8
|
//#region src/commands/transform-test/update.ts
|
|
9
9
|
var update_default = defineMetabaseCommand({
|
|
10
10
|
meta: {
|
|
@@ -12,7 +12,7 @@ var update_default = defineMetabaseCommand({
|
|
|
12
12
|
description: "Update a transform test from JSON"
|
|
13
13
|
},
|
|
14
14
|
details: "Only the fields the body carries are patched. `inputs` and `expectations` replace what is stored rather than merging into it. The body is closed: a test read back with `get --full` has to shed `id`, `entity_id`, `creator_id`, `created_at` and `updated_at` before it can be sent.",
|
|
15
|
-
capabilities: { minVersion:
|
|
15
|
+
capabilities: { minVersion: 65 },
|
|
16
16
|
args: {
|
|
17
17
|
...outputFlags,
|
|
18
18
|
...profileFlag,
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { F as outputFlags, I as profileFlag, M as connectionFlags, c as renderSummary } from "./cli.mjs";
|
|
2
|
-
import { t as defineMetabaseCommand } from "./runtime-
|
|
3
|
-
import { t as parseId } from "./parse-id-
|
|
2
|
+
import { t as defineMetabaseCommand } from "./runtime-CJUDVwBu.mjs";
|
|
3
|
+
import { t as parseId } from "./parse-id-CdZ0-1TM.mjs";
|
|
4
4
|
import { t as readBody } from "./body-DxRSAMNC.mjs";
|
|
5
5
|
import { t as bodyInputFlags } from "./body-flags-AqKpN01Y.mjs";
|
|
6
6
|
import { i as MeasureUpdateInput, t as Measure } from "./measure-CtfjqJFP.mjs";
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { F as outputFlags, I as profileFlag, M as connectionFlags, c as renderSummary } from "./cli.mjs";
|
|
2
|
-
import { t as defineMetabaseCommand } from "./runtime-
|
|
3
|
-
import { t as parseId } from "./parse-id-
|
|
2
|
+
import { t as defineMetabaseCommand } from "./runtime-CJUDVwBu.mjs";
|
|
3
|
+
import { t as parseId } from "./parse-id-CdZ0-1TM.mjs";
|
|
4
4
|
import { t as readBody } from "./body-DxRSAMNC.mjs";
|
|
5
5
|
import { t as bodyInputFlags } from "./body-flags-AqKpN01Y.mjs";
|
|
6
6
|
import { i as DocumentUpdateInput, t as Document } from "./document-Cd2mmqCp.mjs";
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { F as outputFlags, I as profileFlag, M as connectionFlags, c as renderSummary } from "./cli.mjs";
|
|
2
|
-
import { t as defineMetabaseCommand } from "./runtime-
|
|
3
|
-
import { t as parseId } from "./parse-id-
|
|
2
|
+
import { t as defineMetabaseCommand } from "./runtime-CJUDVwBu.mjs";
|
|
3
|
+
import { t as parseId } from "./parse-id-CdZ0-1TM.mjs";
|
|
4
4
|
import { t as readBody } from "./body-DxRSAMNC.mjs";
|
|
5
5
|
import { t as bodyInputFlags } from "./body-flags-AqKpN01Y.mjs";
|
|
6
6
|
import { i as TimelineEvent, s as TimelineEventUpdateInput } from "./timeline-CCSU2qOS.mjs";
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { F as outputFlags, I as profileFlag, M as connectionFlags, c as renderSummary } from "./cli.mjs";
|
|
2
|
-
import { t as defineMetabaseCommand } from "./runtime-
|
|
3
|
-
import { t as parseId } from "./parse-id-
|
|
2
|
+
import { t as defineMetabaseCommand } from "./runtime-CJUDVwBu.mjs";
|
|
3
|
+
import { t as parseId } from "./parse-id-CdZ0-1TM.mjs";
|
|
4
4
|
import { t as readBody } from "./body-DxRSAMNC.mjs";
|
|
5
5
|
import { t as bodyInputFlags } from "./body-flags-AqKpN01Y.mjs";
|
|
6
6
|
import { i as SnippetUpdateInput, t as Snippet } from "./snippet-CyKAgIZl.mjs";
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { F as outputFlags, I as profileFlag, M as connectionFlags, c as renderSummary } from "./cli.mjs";
|
|
2
|
-
import { t as defineMetabaseCommand } from "./runtime-
|
|
3
|
-
import { t as parseId } from "./parse-id-
|
|
2
|
+
import { t as defineMetabaseCommand } from "./runtime-CJUDVwBu.mjs";
|
|
3
|
+
import { t as parseId } from "./parse-id-CdZ0-1TM.mjs";
|
|
4
4
|
import { t as readBody } from "./body-DxRSAMNC.mjs";
|
|
5
5
|
import { t as bodyInputFlags } from "./body-flags-AqKpN01Y.mjs";
|
|
6
6
|
import { c as CardUpdateInput, t as Card } from "./card-DZxRmver.mjs";
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { F as outputFlags, I as profileFlag, M as connectionFlags, c as renderSummary } from "./cli.mjs";
|
|
2
2
|
import { c as NotificationUpdateInput, n as Notification } from "./notification-DaA4bBHW.mjs";
|
|
3
3
|
import { t as notificationView } from "./notification-Fcq1fIPw.mjs";
|
|
4
|
-
import { t as defineMetabaseCommand } from "./runtime-
|
|
5
|
-
import { t as parseId } from "./parse-id-
|
|
4
|
+
import { t as defineMetabaseCommand } from "./runtime-CJUDVwBu.mjs";
|
|
5
|
+
import { t as parseId } from "./parse-id-CdZ0-1TM.mjs";
|
|
6
6
|
import { t as describeAlert } from "./summary-BytbDz6e.mjs";
|
|
7
7
|
import { t as readBody } from "./body-DxRSAMNC.mjs";
|
|
8
8
|
import { t as bodyInputFlags } from "./body-flags-AqKpN01Y.mjs";
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { F as outputFlags, I as profileFlag, M as connectionFlags, c as renderSummary } from "./cli.mjs";
|
|
2
|
-
import { t as defineMetabaseCommand } from "./runtime-
|
|
3
|
-
import { t as parseId } from "./parse-id-
|
|
2
|
+
import { t as defineMetabaseCommand } from "./runtime-CJUDVwBu.mjs";
|
|
3
|
+
import { t as parseId } from "./parse-id-CdZ0-1TM.mjs";
|
|
4
4
|
import { t as readBody } from "./body-DxRSAMNC.mjs";
|
|
5
5
|
import { t as bodyInputFlags } from "./body-flags-AqKpN01Y.mjs";
|
|
6
6
|
import { c as TimelineUpdateInput, t as Timeline } from "./timeline-CCSU2qOS.mjs";
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { F as outputFlags, I as profileFlag, M as connectionFlags, c as renderSummary } from "./cli.mjs";
|
|
2
|
-
import { t as defineMetabaseCommand } from "./runtime-
|
|
3
|
-
import { t as parseId } from "./parse-id-
|
|
2
|
+
import { t as defineMetabaseCommand } from "./runtime-CJUDVwBu.mjs";
|
|
3
|
+
import { t as parseId } from "./parse-id-CdZ0-1TM.mjs";
|
|
4
4
|
import { t as readBody } from "./body-DxRSAMNC.mjs";
|
|
5
5
|
import { t as bodyInputFlags } from "./body-flags-AqKpN01Y.mjs";
|
|
6
6
|
import { i as DashboardDetail, o as DashboardUpdateInput } from "./dashboard-CKUR8ZpQ.mjs";
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { F as outputFlags, I as profileFlag, M as connectionFlags, c as renderSummary } from "./cli.mjs";
|
|
2
|
-
import { t as defineMetabaseCommand } from "./runtime-
|
|
3
|
-
import { t as parseId } from "./parse-id-
|
|
2
|
+
import { t as defineMetabaseCommand } from "./runtime-CJUDVwBu.mjs";
|
|
3
|
+
import { t as parseId } from "./parse-id-CdZ0-1TM.mjs";
|
|
4
4
|
import { t as readBody } from "./body-DxRSAMNC.mjs";
|
|
5
5
|
import { t as bodyInputFlags } from "./body-flags-AqKpN01Y.mjs";
|
|
6
6
|
import { i as TransformTagUpdateInput, t as TransformTag } from "./transform-tag-CcElGp3C.mjs";
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { F as outputFlags, I as profileFlag, M as connectionFlags, c as renderSummary } from "./cli.mjs";
|
|
2
|
-
import { t as defineMetabaseCommand } from "./runtime-
|
|
3
|
-
import { t as parseId } from "./parse-id-
|
|
2
|
+
import { t as defineMetabaseCommand } from "./runtime-CJUDVwBu.mjs";
|
|
3
|
+
import { t as parseId } from "./parse-id-CdZ0-1TM.mjs";
|
|
4
4
|
import { t as readBody } from "./body-DxRSAMNC.mjs";
|
|
5
5
|
import { t as bodyInputFlags } from "./body-flags-AqKpN01Y.mjs";
|
|
6
6
|
import { a as PulseUpdateInput, t as Pulse } from "./pulse-BmsDenXm.mjs";
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { F as outputFlags, I as profileFlag, M as connectionFlags, c as renderSummary } from "./cli.mjs";
|
|
2
|
-
import { t as defineMetabaseCommand } from "./runtime-
|
|
3
|
-
import { t as parseId } from "./parse-id-
|
|
2
|
+
import { t as defineMetabaseCommand } from "./runtime-CJUDVwBu.mjs";
|
|
3
|
+
import { t as parseId } from "./parse-id-CdZ0-1TM.mjs";
|
|
4
4
|
import { t as readBody } from "./body-DxRSAMNC.mjs";
|
|
5
5
|
import { t as bodyInputFlags } from "./body-flags-AqKpN01Y.mjs";
|
|
6
6
|
import { l as DashcardPatchInput, s as Dashcard } from "./dashboard-CKUR8ZpQ.mjs";
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { F as outputFlags, I as profileFlag, M as connectionFlags, c as renderSummary } from "./cli.mjs";
|
|
2
|
-
import { t as defineMetabaseCommand } from "./runtime-
|
|
3
|
-
import { t as parseId } from "./parse-id-
|
|
2
|
+
import { t as defineMetabaseCommand } from "./runtime-CJUDVwBu.mjs";
|
|
3
|
+
import { t as parseId } from "./parse-id-CdZ0-1TM.mjs";
|
|
4
4
|
import { t as readBody } from "./body-DxRSAMNC.mjs";
|
|
5
5
|
import { t as bodyInputFlags } from "./body-flags-AqKpN01Y.mjs";
|
|
6
6
|
import { o as FieldUpdateInput, t as Field } from "./field-Cr2DPUG9.mjs";
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { F as outputFlags, I as profileFlag, M as connectionFlags, c as renderSummary } from "./cli.mjs";
|
|
2
|
-
import { t as defineMetabaseCommand } from "./runtime-
|
|
3
|
-
import { t as parseId } from "./parse-id-
|
|
2
|
+
import { t as defineMetabaseCommand } from "./runtime-CJUDVwBu.mjs";
|
|
3
|
+
import { t as parseId } from "./parse-id-CdZ0-1TM.mjs";
|
|
4
4
|
import { t as readBody } from "./body-DxRSAMNC.mjs";
|
|
5
5
|
import { t as bodyInputFlags } from "./body-flags-AqKpN01Y.mjs";
|
|
6
6
|
import { o as TransformJobUpdateInput, t as TransformJob } from "./transform-job-DRrK28IH.mjs";
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { F as outputFlags, I as profileFlag, M as connectionFlags, c as renderSummary } from "./cli.mjs";
|
|
2
|
-
import { t as defineMetabaseCommand } from "./runtime-
|
|
3
|
-
import { t as parseId } from "./parse-id-
|
|
2
|
+
import { t as defineMetabaseCommand } from "./runtime-CJUDVwBu.mjs";
|
|
3
|
+
import { t as parseId } from "./parse-id-CdZ0-1TM.mjs";
|
|
4
4
|
import { t as readBody } from "./body-DxRSAMNC.mjs";
|
|
5
5
|
import { t as bodyInputFlags } from "./body-flags-AqKpN01Y.mjs";
|
|
6
6
|
import { i as SegmentUpdateInput, t as Segment } from "./segment-OsrbUDzw.mjs";
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { F as outputFlags, I as profileFlag, M as connectionFlags, c as renderSummary } from "./cli.mjs";
|
|
2
|
-
import { t as defineMetabaseCommand } from "./runtime-
|
|
3
|
-
import { t as parseId } from "./parse-id-
|
|
2
|
+
import { t as defineMetabaseCommand } from "./runtime-CJUDVwBu.mjs";
|
|
3
|
+
import { t as parseId } from "./parse-id-CdZ0-1TM.mjs";
|
|
4
4
|
import { t as readBody } from "./body-DxRSAMNC.mjs";
|
|
5
5
|
import { t as bodyInputFlags } from "./body-flags-AqKpN01Y.mjs";
|
|
6
6
|
import { a as TableUpdateInput, t as Table } from "./table-CeeTJgQb.mjs";
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { f as errorMessage, l as TimeoutError, n as AbortError, s as NetworkError, u as UnknownError } from "./predicates-Bkm2IoeX.mjs";
|
|
2
2
|
import { A as name, F as outputFlags, h as promptConfirm, j as version, o as renderItem, t as interruptSignal, u as writeText } from "./cli.mjs";
|
|
3
|
-
import { t as defineMetabaseCommand, u as USER_AGENT } from "./runtime-
|
|
3
|
+
import { t as defineMetabaseCommand, u as USER_AGENT } from "./runtime-CJUDVwBu.mjs";
|
|
4
4
|
import { h as parseJson, r as HttpError } from "./network-error-D6CiOEBw.mjs";
|
|
5
5
|
import { n as throwIfAborted, t as combineAborts } from "./signal-CMd0EFUa.mjs";
|
|
6
6
|
import { n as streamProcess } from "./process-DBOOrmET.mjs";
|
|
@@ -4,9 +4,9 @@ var upload_default = defineCommandGroup({
|
|
|
4
4
|
name: "upload",
|
|
5
5
|
description: "Upload CSV files into Metabase",
|
|
6
6
|
subCommands: {
|
|
7
|
-
csv: () => import("./csv-
|
|
8
|
-
append: () => import("./append-
|
|
9
|
-
replace: () => import("./replace-
|
|
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
10
|
}
|
|
11
11
|
});
|
|
12
12
|
//#endregion
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { F as outputFlags, I as profileFlag, M as connectionFlags, c as renderSummary } from "./cli.mjs";
|
|
2
|
-
import { t as defineMetabaseCommand } from "./runtime-
|
|
2
|
+
import { t as defineMetabaseCommand } from "./runtime-CJUDVwBu.mjs";
|
|
3
3
|
import { t as ContentTranslationUploadResult } from "./content-translation-BrHOrmj9.mjs";
|
|
4
4
|
import { n as requireUploadFilePath, t as readCsvFile } from "./upload-CD555ui1.mjs";
|
|
5
5
|
//#region src/output/views/content-translation.ts
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { i as ConfigError } from "./predicates-Bkm2IoeX.mjs";
|
|
2
2
|
import { F as outputFlags, l as writeJson, u as writeText } from "./cli.mjs";
|
|
3
|
-
import { R as parseInteger, t as defineMetabaseCommand } from "./runtime-
|
|
3
|
+
import { R as parseInteger, t as defineMetabaseCommand } from "./runtime-CJUDVwBu.mjs";
|
|
4
4
|
import { z } from "zod";
|
|
5
5
|
import { randomUUID } from "node:crypto";
|
|
6
6
|
//#region src/commands/uuid.ts
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { F as outputFlags, I as profileFlag, M as connectionFlags, c as renderSummary, f as formatScalar } from "./cli.mjs";
|
|
2
|
-
import { t as defineMetabaseCommand } from "./runtime-
|
|
3
|
-
import { t as parseId } from "./parse-id-
|
|
2
|
+
import { t as defineMetabaseCommand } from "./runtime-CJUDVwBu.mjs";
|
|
3
|
+
import { t as parseId } from "./parse-id-CdZ0-1TM.mjs";
|
|
4
4
|
import { s as FieldValues } from "./field-Cr2DPUG9.mjs";
|
|
5
5
|
import { n as fieldValuesView } from "./field-BPsNa-TO.mjs";
|
|
6
6
|
//#region src/commands/field/values.ts
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { n as createClient } from "./client-
|
|
1
|
+
import { n as createClient } from "./client-C9HBWl6A.mjs";
|
|
2
2
|
import { f as errorMessage, l as TimeoutError, o as MetabaseError, s as NetworkError } from "./predicates-Bkm2IoeX.mjs";
|
|
3
|
-
import { F as tryParseTag, I as SessionProperties, u as USER_AGENT } from "./runtime-
|
|
3
|
+
import { F as tryParseTag, I as SessionProperties, u as USER_AGENT } from "./runtime-CJUDVwBu.mjs";
|
|
4
4
|
import { r as HttpError } from "./network-error-D6CiOEBw.mjs";
|
|
5
5
|
//#region ../client/src/version/probe.ts
|
|
6
6
|
const PROBE_PATH = "/api/session/properties";
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { F as outputFlags, I as profileFlag, M as connectionFlags, c as renderSummary } from "./cli.mjs";
|
|
2
|
-
import { t as defineMetabaseCommand } from "./runtime-
|
|
2
|
+
import { t as defineMetabaseCommand } from "./runtime-CJUDVwBu.mjs";
|
|
3
3
|
import { n as DEFAULT_TIMEOUT_MS, t as DEFAULT_INTERVAL_MS } from "./poll-75SvT7Zv.mjs";
|
|
4
|
-
import { r as parseWaitSchedule } from "./wait-flags-
|
|
4
|
+
import { r as parseWaitSchedule } from "./wait-flags-Cb-bI0RD.mjs";
|
|
5
5
|
import { c as syncTaskView } from "./git-sync-DxD_ng48.mjs";
|
|
6
6
|
import { a as throwIfFailedTask, i as taskPollOptions, n as formatSyncTask, r as syncTaskIdleView, t as SyncTaskOrIdle } from "./sync-task-BACcrs0i.mjs";
|
|
7
7
|
//#region src/commands/git-sync/wait.ts
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { t as interruptSignal } from "./cli.mjs";
|
|
2
|
-
import { t as parseId } from "./parse-id-
|
|
2
|
+
import { t as parseId } from "./parse-id-CdZ0-1TM.mjs";
|
|
3
3
|
import { n as DEFAULT_TIMEOUT_MS, t as DEFAULT_INTERVAL_MS } from "./poll-75SvT7Zv.mjs";
|
|
4
4
|
//#region src/commands/wait-flags.ts
|
|
5
5
|
const waitScheduleFlags = {
|
package/package.json
CHANGED
package/skill-data/core/SKILL.md
CHANGED
|
@@ -6,7 +6,7 @@ allowed-tools: Read, Write, Edit, Bash, AskUserQuestion
|
|
|
6
6
|
|
|
7
7
|
# metabase-cli (core)
|
|
8
8
|
|
|
9
|
-
|
|
9
|
+
`mb` drives a Metabase instance over its REST API: CRUD on every resource, query and transform execution, search, git-sync (representations ↔ instance), and entity-id translation.
|
|
10
10
|
|
|
11
11
|
Top-level command groups (run `mb <group> --help` to discover verbs):
|
|
12
12
|
|
|
@@ -16,7 +16,7 @@ document | timeline | timeline-event | transform | transform-job | transform-tag
|
|
|
16
16
|
search | git-sync | setup | eid | uuid | upgrade | skills
|
|
17
17
|
```
|
|
18
18
|
|
|
19
|
-
The conventions below — auth, flags, output, body input — hold across **every** group.
|
|
19
|
+
The conventions below — auth, flags, output, body input — hold across **every** group. When a card needs a query, prefer MBQL over native SQL (portable, pre-flight-validated — load `mbql`); fall back to native SQL when MBQL can't express it.
|
|
20
20
|
|
|
21
21
|
## Auth & profiles
|
|
22
22
|
|
|
@@ -28,7 +28,7 @@ mb auth status --json # → {profile, present, url} for the d
|
|
|
28
28
|
mb auth status --profile <name> --json # health probe for one profile
|
|
29
29
|
```
|
|
30
30
|
|
|
31
|
-
`auth list` is the primary enumeration path — one call returns every profile with sanitized URL, an `authenticated` flag, and a probe `status` (`ok` / `auth-failed` / `network-error` / `server-error` / `not-probed`).
|
|
31
|
+
`auth list` is the primary enumeration path — one call returns every profile with sanitized URL, an `authenticated` flag, and a probe `status` (`ok` / `auth-failed` / `network-error` / `server-error` / `not-probed`).
|
|
32
32
|
|
|
33
33
|
- One profile and intent doesn't disambiguate → use it.
|
|
34
34
|
- Several → ask via `AskUserQuestion`, presenting the names from `auth list`.
|
|
@@ -60,7 +60,7 @@ Every list/get verb supports the same output flags:
|
|
|
60
60
|
- `--json` — emit the full JSON envelope, safe for `jq`. Default is human-readable text.
|
|
61
61
|
- `--full` — include every field (the compact projection is the default, and is the agent-facing contract).
|
|
62
62
|
- `--fields a,b.c.d` — project specific dot-paths. Mutually exclusive with `--full`. **Paths are relative to each `data[]` item on list verbs, and to the root on single-item verbs.** So it's `--fields id,name` on `… list` / `database schema-tables` (`data.id` and `data[].id` both fail with `unknown field path: "data.id"`), and `--fields id,name,display` on `card get`, `--fields data.rows` on `mb query` (whose `data` is an object).
|
|
63
|
-
- `--max-bytes <n>` — cap output size. Default 24576
|
|
63
|
+
- `--max-bytes <n>` — cap output size. Default 24576; `0` disables. On a list it drops trailing items and sets `truncated` (see below). Single-item commands (`get`) never truncate — over the cap they throw a `ConfigError` (exit 2: "output is N bytes, over the M-byte --max-bytes cap; …") whose tail names the remedy: on schema-shaped commands it is the exact narrower command to run instead — follow it rather than raising the cap.
|
|
64
64
|
- JSON output is a single line when stdout is piped (pretty-printed only at a TTY) — always parse it, never scrape by line position.
|
|
65
65
|
|
|
66
66
|
## List windows and resumption
|
|
@@ -69,10 +69,10 @@ Every list verb takes `--limit <n>` (items this call returns) and `--offset <n>`
|
|
|
69
69
|
|
|
70
70
|
- **`has_more` decides whether to keep going — never compare counts.** `total` is the server's count on endpoints that report one and `null` on those that don't, so arithmetic over it is not a termination condition.
|
|
71
71
|
- **To continue, pass `next_offset` back as `--offset`.** When `has_more` is true `next_offset` is past the offset you sent, so the loop advances; when false the walk is over and `next_offset` is `null`.
|
|
72
|
-
- **`truncated` means the byte cap cut the output, not that the data ran out.** `has_more`/`next_offset` are recomputed to the cut point, so a capped list resumes like any window. Its `bytes` is what the untruncated answer would have measured, so it sizes the work left rather than the reply you hold. Narrow rows with `--fields` rather than raising `--max-bytes` —
|
|
72
|
+
- **`truncated` means the byte cap cut the output, not that the data ran out.** `has_more`/`next_offset` are recomputed to the cut point, so a capped list resumes like any window. Its `bytes` is what the untruncated answer would have measured, so it sizes the work left rather than the reply you hold. Narrow rows with `--fields` rather than raising `--max-bytes` — the cap counts only what you asked for, so `--fields` buys rows directly. A capped list always returns at least one row; when not even one fits it exits 2 with "the smallest response this list can produce is N bytes, over the M-byte --max-bytes cap; …".
|
|
73
73
|
- `limit` is echoed only when you passed `--limit` — except `mb search`, which defaults to `--limit 20` (an unbounded search is expensive server-side) and so always reports one. On nouns the server doesn't page, one large `--limit` with narrow `--fields` is a single request; many small `--offset` hops are one request each.
|
|
74
74
|
|
|
75
|
-
The whole walk
|
|
75
|
+
The whole walk:
|
|
76
76
|
|
|
77
77
|
```bash
|
|
78
78
|
offset=0
|
|
@@ -104,7 +104,7 @@ mb <noun> create --file ./.scratch/body.json --profile <n> --json
|
|
|
104
104
|
|
|
105
105
|
Single-quoted `'EOF'` stops the shell interpolating `$vars` inside the JSON.
|
|
106
106
|
|
|
107
|
-
Write working files to **`./.scratch`** in the current directory (`mkdir -p ./.scratch` first), never `/tmp` —
|
|
107
|
+
Write working files to **`./.scratch`** in the current directory (`mkdir -p ./.scratch` first), never `/tmp` — they persist across the session and the user can review them.
|
|
108
108
|
|
|
109
109
|
## Discovering commands and schemas
|
|
110
110
|
|
|
@@ -123,7 +123,7 @@ mb transform --help --json | jq -r '.commands[].command' # verbs under "transfo
|
|
|
123
123
|
|
|
124
124
|
## Resource quirks worth memorizing
|
|
125
125
|
|
|
126
|
-
|
|
126
|
+
Only what `--help` does _not_ tell you: footguns and non-obvious behaviors.
|
|
127
127
|
|
|
128
128
|
- **db traversal: the hydration ladder.** Start with `database get <db-id> --include tables` — the compact table map (id, name, schema, description per table), one call that fits most databases. Pick the relevant tables, then `table fields <table-id>` per table (bounded: fields are per-table). `--include tables.fields` is the full rollup — small databases only. Hundreds of tables? Traverse by schema (`database schemas <db-id>` → `database schema-tables <db-id> <schema>`) or look tables up by name (`search <term> --models table --db-id <db-id> --limit 10`). `sync-schema` / `rescan-values` queue async work and return `{status:"ok"}` immediately; `sync-schema --wait` blocks until `initial_sync_status: complete`.
|
|
129
129
|
- **table fields.** `table get` never returns fields on its own — pass `--include fields` (compact; the underlying query_metadata response also carries FK targets and dimensions, visible under `--full`) or use `table fields <id>` (list envelope). `table update` patches table-level metadata only; physical columns aren't editable.
|
|
@@ -131,7 +131,7 @@ Routine verb shapes (list / get / create / update), every flag, and output schem
|
|
|
131
131
|
- **upload (CSV → tables).** `upload csv --file <path>` creates a new table + model (prints `{model_id, table_id}`); `upload append <table-id>` / `upload replace <table-id> --file <path>` add to / overwrite a table **previously created by upload** (columns must match). The destination db+schema is admin-configured, not per-call — check with `mb setting get uploads-settings --json` (`db_id: null` ⇒ uploads off/unconfigured; needs admin to read). `--collection <id|root>` only sets the model's collection. Max 50 MB. Errors: **"The uploads database is not configured."** = no db has uploads enabled; **"Uploads are not enabled."** = the append/replace target isn't an uploaded table.
|
|
132
132
|
- **content-translation.** EE-only (`content_translation` premium feature), admin-only, and separate from Remote Sync. `content-translation download > translations.csv` streams the complete active dictionary; `content-translation upload --file translations.csv` replaces every active translation with the file's contents. Always upload the canonical complete CSV, never a partial patch. An empty dictionary downloads as Metabase's four-row sample dictionary — don't re-upload it as real translations. Metabase limits dictionaries to 1.5 MiB.
|
|
133
133
|
- **card.** `dataset_query` is the **flat** `mbql/query` value, not a legacy `{type:"query",query:…}` envelope (→ `mbql`). `--export-format csv|xlsx` streams the raw export (pipe to a file), bypassing the JSON envelope. `archive` is the only delete; unarchive with `update --body '{"archived":false}'`. `visualization_settings` keys are scoped by `display` and aren't pre-flighted — see `visualization`.
|
|
134
|
-
- **dashboard.** Dashcards round-trip through `PUT /api/dashboard/:id` (no per-dashcard endpoint): `update-dashcard <dash-id> <dashcard-id>` patches one safely; `update --body '{"dashcards":[…]}'` replaces the whole set (omitted ids are deleted server-side; negative ids for new cards). Every dashcard must include `card_id`, including existing rows; use `card_id:null` plus a `visualization_settings.virtual_card` block (`{display:"text"|"heading"|"link"|…}`) for non-question cards. `create` accepts the **same** `dashcards` array in its initial body, so lay out the whole dashboard in one call. `create`/`update` pre-flight every positive `card_id` and exit **2** with `{ok:false,errors:[…]}` on a bad ref (non-bypassable). `dashboard get <id>` (or `--full`) hydrates dashcards/tabs; `list` omits them. **The grid is 24 columns wide:** each dashcard's `{col, row, size_x, size_y}` is in grid units — **full-width is `size_x: 24`** (`size_x: 12` is half a row, the usual cause of a card filling only half the width). Keep `col + size_x ≤ 24`, start a full-width stack's `col` at 0, and don't overlap (the server stores collisions as sent — no auto-fix). Layout patterns and per-chart default sizes → the `dashboard` skill
|
|
134
|
+
- **dashboard.** Dashcards round-trip through `PUT /api/dashboard/:id` (no per-dashcard endpoint): `update-dashcard <dash-id> <dashcard-id>` patches one safely; `update --body '{"dashcards":[…]}'` replaces the whole set (omitted ids are deleted server-side; negative ids for new cards). Every dashcard must include `card_id`, including existing rows; use `card_id:null` plus a `visualization_settings.virtual_card` block (`{display:"text"|"heading"|"link"|…}`) for non-question cards. `create` accepts the **same** `dashcards` array in its initial body, so lay out the whole dashboard in one call. `create`/`update` pre-flight every positive `card_id` and exit **2** with `{ok:false,errors:[…]}` on a bad ref (non-bypassable). `dashboard get <id>` (or `--full`) hydrates dashcards/tabs; `list` omits them. **The grid is 24 columns wide:** each dashcard's `{col, row, size_x, size_y}` is in grid units — **full-width is `size_x: 24`** (`size_x: 12` is half a row, the usual cause of a card filling only half the width). Keep `col + size_x ≤ 24`, start a full-width stack's `col` at 0, and don't overlap (the server stores collisions as sent — no auto-fix). Layout patterns and per-chart default sizes → the `dashboard` skill.
|
|
135
135
|
- **dashboard parameters (filters).** A dashboard's `parameters` array holds its filter widgets; they're part of the dashboard record, so read them with `dashboard get <id> --fields parameters --json` (no separate verb). **Editing replaces the _whole_ array** (like dashcards), so it's a read-modify-write loop and omitting a parameter deletes it. A parameter only filters a card once it is **mapped** onto that dashcard's `parameter_mappings` — an unmapped parameter is an inert widget. `type` is a **closed enum**; an unlisted value is a hard parse error that echoes the full allowed set back to you. `dashboard parameter-values <id> <parameter-id> [--query <substr>]` fetches a widget's selectable values (`{values, has_more_values}`; `--query` is a case-insensitive substring search). Parameter types, ids, mapping targets, and value sources → the `dashboard` skill; load it before authoring a `parameters` array.
|
|
136
136
|
- **alert / subscription are two unrelated systems.** `alert` watches one **card** and fires on a send condition (`/api/notification`: a cron string, `channel/email`-prefixed handlers, typed recipients); `subscription` delivers one **dashboard** on a schedule (`/api/pulse`: structured `schedule_type` + hour/day/frame, bare `email` channels, `{id}|{email}` recipients). The bodies are not interchangeable. Both silently deliver nowhere if the server has no SMTP / Slack app — check `mb setting get 'email-configured?'` (quote it; the `?` is a shell glob) before creating either. Their list-valued fields (`handlers`/`subscriptions`, `channels`/`cards`) **replace wholesale** on update, so adding one recipient is a read-modify-write. `mb card alerts <id>` and `mb dashboard subscriptions <id>` list what's already attached to a card/dashboard; `archive` deactivates rather than deletes. Load the `notification` skill before authoring either body.
|
|
137
137
|
- **snippet `--archived` is a swap, not a union** — list returns _either_ active _or_ archived rows, never both. (Same for `--filter archived` on dashboard/collection.)
|
|
@@ -140,10 +140,10 @@ Routine verb shapes (list / get / create / update), every flag, and output schem
|
|
|
140
140
|
- **collection `<ref>`** accepts four forms only — positive int, `root`, `trash`, or a 21-char entity_id; anything else is a client-side `ConfigError`. `collection items` pages the server endpoint, pulling only as far as the output cap can show — read `has_more`/`next_offset` to continue. `collection tree` is **JSON-only** (`--format text` is rejected). A transform collection needs `collection create --namespace transforms`.
|
|
141
141
|
- **setting set** parses the value as **strict JSON**: a string is `'"value"'` (inner quotes), booleans `true`/`false`, numbers bare. Wrong quoting silently errors — confirm with `setting get <key>` after. `setting get --json` works on every value type (wrapping bare-text responses into `{key, value}`).
|
|
142
142
|
- **search vs. list.** For plain enumeration of cards/dashboards/collections use the dedicated `… list` verbs; reach for `search --models <kind>` only for ranking against a query string or a cross-resource lookup.
|
|
143
|
-
- **transform.** Iterate with `transform update <id>`, never `delete` + `create` (keeps the row, `entity_id`, materialized table, and YAML filename — avoids `_2` suffixes and noisy git history). `transform run` needs `--wait` (or `--sync`, which also waits for the output table to register and returns `target_table_id`) or you get only `{run_id, final:null}`. `transform-test run <id>` checks a transform against fixtures in temp tables — no real table is read — and exits non-zero unless it passes (
|
|
143
|
+
- **transform.** Iterate with `transform update <id>`, never `delete` + `create` (keeps the row, `entity_id`, materialized table, and YAML filename — avoids `_2` suffixes and noisy git history). `transform run` needs `--wait` (or `--sync`, which also waits for the output table to register and returns `target_table_id`) or you get only `{run_id, final:null}`. `transform-test run <id>` checks a transform against fixtures in temp tables — no real table is read — and exits non-zero unless it passes (v65+). (→ `transform`.)
|
|
144
144
|
- **setup is one-shot.** `mb setup` walks `/api/setup` for a **fresh** instance only — errors against an already-configured one. Mostly for bootstrapping local / e2e instances.
|
|
145
145
|
- **eid** translates a string entity id → numeric id: `mb eid --model <model> <eid1,eid2> --json`. Entity ids are NanoIDs that can start with `-`, which the positional form misreads as a flag (shell quotes don't help) — for those, use `--body '{"entity_ids":{"card":["-…"]}}'` (the id is a JSON string value, immune to flag parsing).
|
|
146
|
-
- **library.** EE-only (`library` premium feature, v59+). The Library is a curated subtree (`library-data` "Data" + `library-metrics` "Metrics" under a `library` root): tables published to **Data** appear first in data pickers and rank up in search; metrics saved to **Metrics** are prioritized in nav, search, and the query builder
|
|
146
|
+
- **library.** EE-only (`library` premium feature, v59+). The Library is a curated subtree (`library-data` "Data" + `library-metrics` "Metrics" under a `library` root): tables published to **Data** appear first in data pickers and rank up in search; metrics saved to **Metrics** are prioritized in nav, search, and the query builder. `library get` shows the Library and its Data/Metrics collection ids; `library create` provisions it (idempotent). `library publish --table-ids/--db-ids/--schemas` publishes tables into Data — it **resolves the Data collection itself and creates the Library if absent** (no collection id to find); each `--schemas` entry is `<db-id>:<schema>` (e.g. `1:public`), not a bare name. `publish` cascades to upstream FK dependencies, `unpublish` to downstream dependents; both need **admin or data-analyst** (Curate alone won't publish) and exit **403** without write **and** query permission on every affected table. Publish status shows on the table: `table get`/`table list` carry `is_published` (`collection_id` under `--full`). Publish finished, analysis-ready tables — clean/combine via transforms first. Publishing does not put the Data collection in the git-sync scope: on a remote-sync instance, `mb git-sync add-collection <data-collection-id>` is what makes exports carry the published tables' metadata (see the `git-sync` skill).
|
|
147
147
|
- **query / uuid.** `mb query` is the ad-hoc MBQL surface (`--print-schema` → `--dry-run` → run); `mb uuid --count <n>` mints the `lib/uuid` values MBQL clauses need. Both live in `mbql`.
|
|
148
148
|
|
|
149
149
|
## Specialized skills (load on demand)
|
|
@@ -157,6 +157,7 @@ This file is enough for any single-command task. For anything deeper, load the r
|
|
|
157
157
|
- **`metadata`** — setting field/table metadata: semantic types, foreign-key targets, dropdown/scan behavior, and column visibility, and the downstream features each unlocks. Load when editing what a column _means_, not its data.
|
|
158
158
|
- **`notification`** — scheduled delivery: question alerts (`mb alert`) and dashboard subscriptions (`mb subscription`). Choosing between them, the two schedule/recipient contracts, channel prerequisites, testing a send.
|
|
159
159
|
- **`transform`** — transform body JSON, create + run-with-wait, run inspection, tags, jobs.
|
|
160
|
+
- **`transform-test-plan`** — deciding _what_ to test in a transform: the fixture cast, the expectations, the coverage matrix. (`transform` has the `mb transform-test` shapes.)
|
|
160
161
|
- **`document`** — Metabase documents (TipTap body, embedding cards).
|
|
161
162
|
- **`git-sync`** — round-tripping content to/from a git remote.
|
|
162
163
|
- **`data-workflow`** — the guided, end-to-end data workflow: investigate raw data, build clean analysis-ready tables, define reusable segments/measures/metrics, answer questions, build dashboards. **Start here when the user states a goal rather than a single verb** — "make sense of my data", "build a data model", "go from raw data to a dashboard", "be my data analyst", "set up analytics for X". It detects where the data is and routes to the right stage.
|