@metabase/cli 0.5.0 → 0.5.1
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-COtKcy6Y.mjs → add-collection-BnGPc0Vv.mjs} +3 -3
- package/dist/{alert-DMlSjPEv.mjs → alert-DQkF8jYR.mjs} +7 -7
- package/dist/{alerts-s3al16NZ.mjs → alerts-BncG7w1_.mjs} +6 -6
- package/dist/{append-CbGmdeLw.mjs → append-D4ekYCuD.mjs} +4 -4
- package/dist/{archive-Ce4eArrs.mjs → archive-BQ4OA-R4.mjs} +3 -3
- package/dist/{archive-5EY9UJU_.mjs → archive-BXr9kFNz.mjs} +5 -5
- package/dist/{archive-a05W75XH.mjs → archive-BifJXCHF.mjs} +3 -3
- package/dist/{archive-DW7x0IFB.mjs → archive-CxNUeWII2.mjs} +4 -4
- package/dist/{archive-C_UHeanE.mjs → archive-D2WCz3Oe.mjs} +3 -3
- package/dist/{archive-BFmx4B91.mjs → archive-DjHLWUfC.mjs} +5 -5
- package/dist/{archive-BZCYIBhQ.mjs → archive-DnCF-Ecm.mjs} +5 -5
- package/dist/{archive-DzSdJVqE.mjs → archive-DocyUIME.mjs} +5 -5
- package/dist/{archive-DDO2XX0E.mjs → archive-DpCP4yR1.mjs} +4 -4
- package/dist/{archive-DvbaSglr.mjs → archive-EhW6blNc.mjs} +3 -3
- package/dist/archive-ULXc3xzI.mjs +32 -0
- package/dist/{archive-CnDriekB.mjs → archive-v08JESCM.mjs} +5 -5
- package/dist/{auth-DOz7KW5E.mjs → auth-BPbsm8yV.mjs} +5 -5
- package/dist/{body-Di7940x_.mjs → body-BkkQkGJg.mjs} +2 -2
- package/dist/{branch-flag-CfJ8vwgu.mjs → branch-flag-CTDvbaBa.mjs} +1 -1
- package/dist/{branches-BC-vlk6i.mjs → branches-lPHtM_xR.mjs} +3 -3
- package/dist/{breaking-ByrjsFjq.mjs → breaking-DjMlCD96.mjs} +6 -6
- package/dist/{broken-DLSk1T88.mjs → broken-DUX3GWS5.mjs} +8 -8
- package/dist/{bulk-discard-values-VKGj8c7z.mjs → bulk-discard-values-Dl8Lzypf.mjs} +5 -5
- package/dist/{bulk-edit-CpuleeCQ.mjs → bulk-edit-N2xLVtfG.mjs} +4 -4
- package/dist/{bulk-rescan-values-DeGwiqLS.mjs → bulk-rescan-values-BK2rH2Ik.mjs} +4 -4
- package/dist/{bulk-sync-schema-BKVhauW1.mjs → bulk-sync-schema-BKJc9Rzq.mjs} +4 -4
- package/dist/{cancel-qKj45001.mjs → cancel-DzkRVGIk.mjs} +3 -3
- package/dist/{cancel-task-nmBBd1Ky.mjs → cancel-task-BiTlDY7a.mjs} +2 -2
- package/dist/card-BTBDBsu-.mjs +25 -0
- package/dist/{card-DSrgU7lT.mjs → card-CQNUT9pm.mjs} +1 -1
- package/dist/{card-Bv4ZN0oV.mjs → card-P5mBknsl.mjs} +2 -12
- package/dist/{cards-Bq73s48q.mjs → cards-CSL8ukS1.mjs} +4 -4
- package/dist/cli.mjs +80 -48
- package/dist/{client-BmURNkkW.mjs → client-BBwYPXDW.mjs} +100 -591
- package/dist/collection-B19phRNU.mjs +21 -0
- package/dist/{collection-zrZoJfgR.mjs → collection-B2wRXyTF.mjs} +11 -3
- package/dist/{collection-C03LXnCT.mjs → collection-CTnYZ2Jj.mjs} +1 -1
- package/dist/{collection-namespace-DaDzK31i.mjs → collection-namespace-B1OkM7p1.mjs} +1 -1
- package/dist/{content-translation-BlG41YrA.mjs → content-translation-DoGTQnvH.mjs} +3 -3
- package/dist/{copy-DTiYs_a2.mjs → copy-BYukQEtf.mjs} +4 -4
- package/dist/{copy-DOKlVa7H.mjs → copy-XlCT3gvG.mjs} +6 -6
- package/dist/{copy-flags-BhGWC5kS.mjs → copy-flags-ByB2MicL.mjs} +2 -2
- package/dist/{create-1rLk8b5q.mjs → create-3_oY9KHY.mjs} +3 -3
- package/dist/{create-BXX_n64u.mjs → create-B3fm5I-l2.mjs} +4 -4
- package/dist/{create-BKKNIe93.mjs → create-BP39g5Jk.mjs} +5 -5
- package/dist/{create-DraZzrLO.mjs → create-Bl9sS7v7.mjs} +6 -6
- package/dist/{create-d0trLAzB.mjs → create-Bnb1abv_.mjs} +4 -4
- package/dist/{create-DUytP2Y1.mjs → create-CLZ7w83R.mjs} +4 -4
- package/dist/{create-Duj_2YIF.mjs → create-CYoarNrb.mjs} +4 -4
- package/dist/{create-C0kz0oYc.mjs → create-CbT4SPHV.mjs} +5 -5
- package/dist/{create-B1QDNU1x.mjs → create-Cdt8u1wF.mjs} +6 -6
- package/dist/create-CqF7vqXC.mjs +48 -0
- package/dist/{create-B5BwdPwT.mjs → create-CrtIqtXN.mjs} +6 -6
- package/dist/{create-BpwZJZxb.mjs → create-D5_c5SHo.mjs} +5 -5
- package/dist/{create-Cob0gLsA.mjs → create-DBNxy5rN.mjs} +5 -5
- package/dist/{create-vOw8gmBU.mjs → create-DZJQp3r7.mjs} +3 -3
- package/dist/{create-JaFhqysM.mjs → create-DxMmIHI4.mjs} +5 -5
- package/dist/{create-B1bX6ngX.mjs → create-T4PZPVE9.mjs} +4 -4
- package/dist/{create-branch-B5jB4tKk.mjs → create-branch-CUNFdKyB.mjs} +2 -2
- package/dist/{create-DPggIXfn.mjs → create-jr4xJgSI.mjs} +4 -4
- package/dist/create-k1Bo7h7g.mjs +34 -0
- package/dist/{csv-DfExp9H_.mjs → csv-CcnhKpuj.mjs} +4 -4
- package/dist/{current-task-CbXIH_RA.mjs → current-task-nl2z8sHI.mjs} +3 -3
- package/dist/dashboard-BP0p62fp.mjs +35 -0
- package/dist/data-action-Cr17CfgE.mjs +24 -0
- package/dist/data-action-DZxVB_hD.mjs +85 -0
- package/dist/data-action-R9qxJDPA.mjs +40 -0
- package/dist/{database-BdKkae1m.mjs → database-2HYCdHqK.mjs} +1 -1
- package/dist/{database-DoNoZ8Yc.mjs → database-BewllGR7.mjs} +1 -1
- package/dist/{dataset-DZgJm5hP.mjs → dataset-D-x2Ho2i.mjs} +1 -1
- package/dist/{db-C82M3Gpg.mjs → db-m5bQcXdn.mjs} +7 -7
- package/dist/delete-BOma6qIq.mjs +44 -0
- package/dist/{delete-B4BfGfiJ.mjs → delete-BUCh72Bq.mjs} +4 -4
- package/dist/{delete-DJ7SNXiH.mjs → delete-BXMc-g3Q.mjs} +4 -4
- package/dist/{delete-D0xFMRRq.mjs → delete-BrbmJ3sn.mjs} +4 -4
- package/dist/{delete-9xHRd2CG.mjs → delete-DulVnxD_.mjs} +4 -4
- package/dist/delete-Oc2GE170.mjs +44 -0
- package/dist/{delete-hwPqKXeY.mjs → delete-QHsiWYay.mjs} +4 -4
- package/dist/{delete-runtime-DkgYUQ_n.mjs → delete-runtime-CkNvZfFA.mjs} +1 -1
- package/dist/{delete-table-DhTMft7u.mjs → delete-table-LgJ17t6j.mjs} +4 -4
- package/dist/{delete-hcw_4pBG.mjs → delete-xf2n7SNg.mjs} +4 -4
- package/dist/{dependencies-B8H2gA04.mjs → dependencies-BE5QW7Lb.mjs} +5 -5
- package/dist/{dependency-Dc33mjgd.mjs → dependency-BACk_cVP.mjs} +2 -2
- package/dist/dependency-BlTYysYG.mjs +15 -0
- package/dist/{dependency-tQBxYjFX.mjs → dependency-qP1hx2YN.mjs} +2 -2
- package/dist/{dependents-B2GcS5kB.mjs → dependents-mbgHQNiv.mjs} +9 -9
- package/dist/{dirty-Cz2rUd6S.mjs → dirty-fYlA1N1e.mjs} +3 -3
- package/dist/{discard-values-QWuWGaVK.mjs → discard-values-cIRBP5nT.mjs} +5 -5
- package/dist/document-BaRQ5fBd.mjs +20 -0
- package/dist/{document-wfWbV0B_.mjs → document-DVIu3Vj4.mjs} +1 -1
- package/dist/{document-BDobDiap.mjs → document-UMG6me2P.mjs} +1 -1
- package/dist/{download-Dw15fUMy.mjs → download-CokVpeK6.mjs} +2 -2
- package/dist/{eid-Ex4G-ZlN.mjs → eid-CaumGUFD.mjs} +5 -5
- package/dist/{eid-translation-zEHtr5Oc.mjs → eid-translation-Ba92VOHe.mjs} +1 -0
- package/dist/{entity-DBKPaMr5.mjs → entity-BHYJtRxp.mjs} +2 -2
- package/dist/{entry-flags-DgY3IXFe.mjs → entry-flags-DjICpQkc.mjs} +4 -4
- package/dist/{events-BibJ4ya0.mjs → events-jEo9fytL.mjs} +6 -6
- package/dist/execute-H09Qus4_.mjs +45 -0
- package/dist/{export-U8MdaatW.mjs → export-YtdZo7LZ.mjs} +5 -5
- package/dist/{export-flags-BrfeyE8D.mjs → export-flags-DzW0Ktkh.mjs} +3 -3
- package/dist/{export-preflight-A28L45au.mjs → export-preflight-Db_TChn5.mjs} +3 -3
- package/dist/field-DktidTPB.mjs +21 -0
- package/dist/{fields-i1TFa_th.mjs → fields-DUXlosmx.mjs} +4 -4
- package/dist/{filter-flags-Bm3vuSM-.mjs → filter-flags-DTDcU7OI.mjs} +5 -4
- package/dist/{fks-Dcfn3-73.mjs → fks-Cl2sq-c0.mjs} +5 -5
- package/dist/{get-HFQSttF3.mjs → get-B-WT6ess.mjs} +4 -4
- package/dist/{get-BKDTRMNU.mjs → get-BilMWiFq.mjs} +5 -5
- package/dist/{get-CobILQ_7.mjs → get-Bt_zhviQ.mjs} +5 -5
- package/dist/{get-BiPSePQc.mjs → get-CM596pmP.mjs} +3 -3
- package/dist/{get-DqYn9mez.mjs → get-CTtzccwr.mjs} +4 -4
- package/dist/{get-Dz3dNirC.mjs → get-CVMWhbA82.mjs} +4 -4
- package/dist/{get-B4_3DID6.mjs → get-CWyRAHpz.mjs} +5 -5
- package/dist/{get-DPZUIPjv.mjs → get-C_rjxpoe.mjs} +3 -3
- package/dist/{get-hAoJtVCK.mjs → get-Cg0up9gm.mjs} +3 -3
- package/dist/{get-IjoHBExI.mjs → get-CqlNUyFY.mjs} +5 -5
- package/dist/{get-CcwRn8Y2.mjs → get-DPiNYmXo.mjs} +5 -5
- package/dist/{get-EKBYludD.mjs → get-DTDvlLT3.mjs} +3 -3
- package/dist/{get-D0NZ0ZO1.mjs → get-DtcChy9h.mjs} +5 -5
- package/dist/{get-C3ojRVJ_.mjs → get-DyK_bvg6.mjs} +4 -4
- package/dist/{get-DUwX-RU82.mjs → get-DySyvotk2.mjs} +5 -5
- package/dist/{get-CCLWWqTD.mjs → get-FxCF0rxc.mjs} +4 -4
- package/dist/{get-CVpIQb8v.mjs → get-GuWW4J24.mjs} +5 -5
- package/dist/{get-Cwj1Q-at.mjs → get-XS-6R81E.mjs} +3 -3
- package/dist/{get-BCdtCwaG.mjs → get-oQNL6pLY.mjs} +3 -3
- package/dist/get-okEsnkvC.mjs +31 -0
- package/dist/{get-run-B2SnsZSY.mjs → get-run-CFGxSm_S.mjs} +4 -4
- package/dist/get-zPMv3kZE.mjs +32 -0
- package/dist/git-sync-BwkWeJAz.mjs +29 -0
- package/dist/glossary-BSgRQ2HO.mjs +14 -0
- package/dist/{glossary-wnuxoE_I.mjs → glossary-BkGmCI4X.mjs} +1 -1
- package/dist/{glossary-6LLpItof.mjs → glossary-QN-hHfOT.mjs} +1 -1
- package/dist/{graph-CHlfxVy1.mjs → graph-Wf4e0XIa.mjs} +6 -6
- package/dist/{group-B3X3LTcU.mjs → group-81zoQcEP.mjs} +1 -1
- package/dist/{has-remote-changes-DCMpqGgE.mjs → has-remote-changes-BsS3XB0P.mjs} +2 -2
- package/dist/{import-C7MZhKo6.mjs → import-CXd5HdB0.mjs} +5 -5
- package/dist/{input-sRdxNc3T.mjs → input-AXP2LCOV.mjs} +1 -1
- package/dist/{is-dirty-DpLyHebS.mjs → is-dirty-TDcfeOde.mjs} +2 -2
- package/dist/{items-1ME_eg27.mjs → items-BxvhoxYm.mjs} +6 -6
- package/dist/{key-DMtgTOwN.mjs → key-CUPbYxkk.mjs} +1 -1
- package/dist/{library-fWEv38OB.mjs → library-BKSFtIV9.mjs} +1 -1
- package/dist/{library-CP-9yepy.mjs → library-DuIrR8LS.mjs} +1 -1
- package/dist/{library-D2ogEIfI.mjs → library-DzejNMqX.mjs} +5 -5
- package/dist/{list-Ud7F0XdU.mjs → list-3Dh5yeq-.mjs} +3 -3
- package/dist/{list-dCi6OaIE.mjs → list-6nGX0Rqc.mjs} +4 -4
- package/dist/{list-DkCadZ2E.mjs → list-B3Pngm2j.mjs} +5 -5
- package/dist/{list-BUwDGyIu.mjs → list-B5kRBn7k.mjs} +5 -5
- package/dist/{list-DzP7YXdZ.mjs → list-B8V_OESj.mjs} +3 -3
- package/dist/{list-CQi3AgS5.mjs → list-BUjI5G0_.mjs} +4 -4
- package/dist/{list-LMlJ4uAY.mjs → list-Ba7u5Ai9.mjs} +6 -6
- package/dist/list-CCCy6cBI.mjs +35 -0
- package/dist/list-CRXTfEFk.mjs +28 -0
- package/dist/{list-BoVeF8QA.mjs → list-CUj04tg3.mjs} +6 -6
- package/dist/{list-C9996vbS.mjs → list-Cf6A9Csi.mjs} +3 -3
- package/dist/{list-NINy7ybI.mjs → list-Cr5Hoq-E.mjs} +4 -4
- package/dist/{list-BXcDPU5d.mjs → list-D1Q8H3jn.mjs} +6 -6
- package/dist/{list-CVh8DHOO.mjs → list-D7yH-64Z.mjs} +5 -5
- package/dist/{list-C1oEpUZG.mjs → list-DA1Fo6S6.mjs} +3 -3
- package/dist/{list-B0h-j1E7.mjs → list-D_fsrh8w.mjs} +5 -5
- package/dist/{list-DBAEy3Rx.mjs → list-DjlfBd7W.mjs} +3 -3
- package/dist/{list-OXiXtdiM.mjs → list-DlgjWr4r.mjs} +5 -5
- package/dist/{list-CJ5FyCnL.mjs → list-Do-Xnz0I.mjs} +4 -4
- package/dist/{list-STy8UHs2.mjs → list-DpK3ioES.mjs} +5 -5
- package/dist/{list-BUZ91ctZ.mjs → list-DsR58aMq.mjs} +5 -5
- package/dist/{login-BMON3Fft.mjs → login-CXbCAcuB.mjs} +6 -6
- package/dist/{logout-Cx934GzW.mjs → logout-B6IGzkpG.mjs} +2 -2
- package/dist/{measure-CUqJtDNm.mjs → measure-CbMgNhlG.mjs} +6 -6
- package/dist/{notification-CCZ9mrOw.mjs → notification-W2SVssyY.mjs} +1 -1
- package/dist/{parameter-values-DCrU02Az.mjs → parameter-values-IWi_DNhp.mjs} +3 -3
- package/dist/{parse-enum-Do5Cptbv.mjs → parse-enum-B2rGiC6p.mjs} +1 -1
- package/dist/{parse-id-oCbmouCn.mjs → parse-id-Cv5eM7sg.mjs} +1 -1
- package/dist/{parse-ref-Df8gusl4.mjs → parse-ref-DW7ik6ny.mjs} +1 -1
- package/dist/{parse-text-CVrP7GmZ.mjs → parse-text-CUCSWOeR.mjs} +1 -1
- package/dist/{path-DTuSDGd6.mjs → path-C9r9urRK.mjs} +4 -4
- package/dist/{poll-BKo5dK0l.mjs → poll-CX3jPtXb.mjs} +2 -2
- package/dist/{preflight-UeYuGDPr.mjs → preflight-CiTgqNUy.mjs} +2 -2
- package/dist/{process-BpmZXbcw.mjs → process-DImdroix.mjs} +1 -1
- package/dist/{publish-D3GwLC-K.mjs → publish-xH1n74gd.mjs} +4 -4
- package/dist/{pulse-DzVPfb5J.mjs → pulse-CFj1WfIC.mjs} +1 -1
- package/dist/query-BKtMP5eH.mjs +13 -0
- package/dist/{query-B1Cp9EO6.mjs → query-BOCw0FBK.mjs} +6 -6
- package/dist/{query-Ct697cY-.mjs → query-CN3BW5WB.mjs} +11 -10
- package/dist/{remapping-RsoPWE7c.mjs → remapping-Dggq2Fv0.mjs} +4 -4
- package/dist/{remove-collection-BJo3Wd9K.mjs → remove-collection-cxSSFxza.mjs} +3 -3
- package/dist/{render-C_ev6qoW.mjs → render-Cb8Hct67.mjs} +2 -2
- package/dist/{replace-BSAGp3cR.mjs → replace-wVi_XDut.mjs} +4 -4
- package/dist/{requirement-check-T3bjQ0Mr.mjs → requirement-check-BE3PuGsC.mjs} +2 -2
- package/dist/{rescan-values-CE62_2dc.mjs → rescan-values-C7b1Ghy-.mjs} +4 -4
- package/dist/{rescan-values-rpro4Kw2.mjs → rescan-values-DAp_avxY.mjs} +5 -5
- package/dist/{run-B3BRodEp.mjs → run-CE6ei7s7.mjs} +4 -4
- package/dist/{run-BI1QO9Kn.mjs → run-CUGs7mok.mjs} +7 -7
- package/dist/run-DywhwjNG.mjs +63 -0
- package/dist/{runs-CUseZezf.mjs → runs--14jim_0.mjs} +5 -5
- package/dist/{runtime-C5Ha6Ou8.mjs → runtime-Ckns6TKK.mjs} +2 -2
- package/dist/{schema-tables-C7YkyRh0.mjs → schema-tables-CeW0kpA5.mjs} +5 -5
- package/dist/{schemas-Bj5sJ9uB.mjs → schemas-CHMD0HrY.mjs} +4 -4
- package/dist/{search-BAXg-EJw.mjs → search-CXRavT7G.mjs} +1 -0
- package/dist/{search-CB1A4HWx.mjs → search-DyC54bGf.mjs} +6 -6
- package/dist/{search-BsAwK7Rk.mjs → search-LmBQu1Jg.mjs} +5 -5
- package/dist/{segment-BEjaeLc5.mjs → segment-DeT_Yic6.mjs} +6 -6
- package/dist/{send-Dfh8d1gG.mjs → send-BWSJMrDL.mjs} +3 -3
- package/dist/{set-active-AyjKtBD-.mjs → set-active-C5cLG4_O.mjs} +4 -4
- package/dist/{set-DA8dKyzi.mjs → set-r2xiXrT_.mjs} +4 -4
- package/dist/{set-sensitivity-D0613dHA.mjs → set-sensitivity-BMLKazua.mjs} +4 -4
- package/dist/{setting-B-bxCkC0.mjs → setting-CDRusiqP.mjs} +4 -4
- package/dist/{setup-Bvvqlz9d.mjs → setup-BZaJVww3.mjs} +3 -3
- package/dist/{signal-Dm4N0Bcc.mjs → signal-4tpCIkqR.mjs} +1 -1
- package/dist/{skill-list-DkuCf0k4.mjs → skill-list-D2FhhYS3.mjs} +1 -1
- package/dist/{skills-DxrO7HUz.mjs → skills-9ihLaSmM.mjs} +3 -3
- package/dist/{skills-DlDCTGVE.mjs → skills-y2iVfW9k.mjs} +2 -2
- package/dist/snippet-Ce0o33Rj.mjs +19 -0
- package/dist/{stash-j9JPv3ns.mjs → stash-Dj-mnIa4.mjs} +4 -4
- package/dist/{status-DcbvbRc5.mjs → status-B2Xj_q8f.mjs} +3 -3
- package/dist/{status-DxNcrfnI.mjs → status-BtWz7Pzn.mjs} +4 -4
- package/dist/{subscription-CSR2t-xK.mjs → subscription-Dh--agqE.mjs} +6 -6
- package/dist/{subscriptions--0YvW40u.mjs → subscriptions-CJ8Jdp9A.mjs} +6 -6
- package/dist/{summary-Dslv78-r.mjs → summary-ccbkNDbC.mjs} +3 -3
- package/dist/{sync-schema-BSJiokQf.mjs → sync-schema-CewUOkmm.mjs} +6 -6
- package/dist/{sync-schema-Dgij5ICd.mjs → sync-schema-HwQectZd.mjs} +4 -4
- package/dist/{sync-task-a1zyF1Qb.mjs → sync-task-DEzhiaU9.mjs} +3 -2
- package/dist/{table-Uvu1roSx.mjs → table-CFZU-BRg.mjs} +1 -1
- package/dist/table-P9ovwcaB.mjs +26 -0
- package/dist/{table-selector-flags-B9OiA3Z1.mjs → table-selector-flags-p4jun7-v.mjs} +2 -2
- package/dist/{text-821Rn8M9.mjs → text-C2VwKF9D.mjs} +1 -1
- package/dist/{timeline-uDCmwGFT.mjs → timeline-BgWz8DYK.mjs} +1 -1
- package/dist/timeline-DLaBypse.mjs +21 -0
- package/dist/{timeline-CCSU2qOS.mjs → timeline-DcsCXNUt.mjs} +5 -1
- package/dist/{timeline-event-CSzx8EDP.mjs → timeline-event-xAAR6b-v.mjs} +6 -6
- package/dist/transform-10YE8j5K.mjs +28 -0
- package/dist/{transform-BKX6tl3i.mjs → transform-CWGJB8N_.mjs} +1 -1
- package/dist/{transform-job-AaMZRxAq.mjs → transform-job-BBZ5L46v.mjs} +1 -1
- package/dist/{transform-job-CCguL6LP.mjs → transform-job-ClX8e5iO.mjs} +2 -1
- package/dist/transform-job-D97AutnF.mjs +22 -0
- package/dist/{transform-tag-DHg7j15d.mjs → transform-tag-BXusFzMX.mjs} +5 -5
- package/dist/transform-test-Bexa_K89.mjs +173 -0
- package/dist/transform-test-C49ZTK7M.mjs +32 -0
- package/dist/transform-test-UsH1udc4.mjs +16 -0
- package/dist/{transforms-DwxPfMiG.mjs → transforms-CqV01bMM.mjs} +5 -5
- package/dist/transport-0qFZhEuP.mjs +416 -0
- package/dist/{tree-COFmA20J.mjs → tree-Td6rgyOa.mjs} +3 -3
- package/dist/{unpublish-BQClh4U7.mjs → unpublish-D4XTZsFW.mjs} +3 -3
- package/dist/{unreferenced-DKc0zZDl.mjs → unreferenced-cR-l4zXN.mjs} +6 -6
- package/dist/{update-myfBF5qV.mjs → update-BJL5975i.mjs} +6 -6
- package/dist/{update-BVMgrMy7.mjs → update-BqkqMOVN.mjs} +5 -5
- package/dist/{update-Bgy2amR0.mjs → update-C4iu-vQm.mjs} +6 -6
- package/dist/{update-C9HK3i8s.mjs → update-C7Wmom6x.mjs} +5 -5
- package/dist/{update-CMRWXoZ2.mjs → update-C7dZLbsf.mjs} +4 -4
- package/dist/{update-BBLbEPEP.mjs → update-C8xdeYI2.mjs} +4 -4
- package/dist/{update-B8jQTspb.mjs → update-CHB4kvz-.mjs} +8 -8
- package/dist/{update-BNwjjMk6.mjs → update-CND9At61.mjs} +5 -5
- package/dist/{update-Ca8LSZer.mjs → update-CpwWURTp.mjs} +5 -5
- package/dist/{update-B-wcIl8T.mjs → update-D-cTgmb0.mjs} +6 -6
- package/dist/{update-CPmPnEvm.mjs → update-DFK2iUSP.mjs} +6 -6
- package/dist/{update-CFfr1ZdL.mjs → update-DROjGe3Q.mjs} +4 -4
- package/dist/update-DZHgr6Gu.mjs +52 -0
- package/dist/{update-kM3TDlEp.mjs → update-Dk0E66Va.mjs} +7 -7
- package/dist/{update-DJwu8UT2.mjs → update-DqCZsbLh.mjs} +6 -6
- package/dist/{update-BVFfoopT.mjs → update-DrVc25R8.mjs} +5 -5
- package/dist/{update-MxvqmZ3z.mjs → update-Js0IiqCq.mjs} +5 -5
- package/dist/{update-Dwr3n7_n.mjs → update-dQeji6RA.mjs} +7 -7
- package/dist/{update-dashcard-C8QN2Qcu.mjs → update-dashcard-BmkfJ7t9.mjs} +4 -4
- package/dist/update-nGURR-y6.mjs +41 -0
- package/dist/{upgrade-BBOEVIRa.mjs → upgrade-B6V_1cUh.mjs} +4 -4
- package/dist/{upload-CxpXpjCf.mjs → upload-B6zBzMPW.mjs} +2 -2
- package/dist/{upload-CoBd4qBp.mjs → upload-CfYmBv51.mjs} +3 -3
- package/dist/upload-Dvjfz16M.mjs +13 -0
- package/dist/{uuid-DW30GY7B.mjs → uuid-B8ynbkqG.mjs} +2 -2
- package/dist/{validate-n85yMraN.mjs → validate-C7DGkwb-.mjs} +1 -1
- package/dist/{validate-query-BwXvFFYi.mjs → validate-query-CYUvRvVM.mjs} +7 -3
- package/dist/{values-B6eFE4K5.mjs → values-36bzf9cK.mjs} +3 -3
- package/dist/{verify-Dp8tUbP3.mjs → verify-BdW-GExk.mjs} +3 -3
- package/dist/{verify-BSq7x66g.mjs → verify-C4Tml4fD.mjs} +3 -3
- package/dist/{verify-DnU-wXIs.mjs → verify-Cs9e28YA.mjs} +3 -3
- package/dist/{wait-D6Tw4ZxO.mjs → wait-BV6JOdgi.mjs} +5 -5
- package/dist/{wait-flags-BRUzMI6S.mjs → wait-flags-DjyK03cm.mjs} +2 -2
- package/dist/{window-BqMFpWMh.mjs → window-CfK_j6m1.mjs} +1 -1
- package/package.json +1 -1
- package/skill-data/core/SKILL.md +11 -5
- package/skill-data/data-action/SKILL.md +125 -0
- package/skill-data/native-sql/SKILL.md +1 -1
- package/skill-data/transform/SKILL.md +63 -1
- package/skill-data/transform-test-plan/SKILL.md +82 -0
- package/skill-data/transform-test-plan/references/checklist.md +32 -0
- package/skill-data/transform-test-plan/references/checks.md +156 -0
- package/dist/card-Buc-X4Mh.mjs +0 -25
- package/dist/collection-D-sS0AFw.mjs +0 -21
- package/dist/dashboard-DH_soSQp.mjs +0 -35
- package/dist/dependency-CLznxtLE.mjs +0 -15
- package/dist/document-WhSEyI-3.mjs +0 -20
- package/dist/field-qF1KRJYB.mjs +0 -21
- package/dist/git-sync-BlgB_-8-.mjs +0 -29
- package/dist/glossary-BvVxqjxJ.mjs +0 -14
- package/dist/snippet-B7Kau5U8.mjs +0 -19
- package/dist/table-qjgz2eek.mjs +0 -26
- package/dist/timeline-CNkrY3e3.mjs +0 -21
- package/dist/transform-Y86R7_2F.mjs +0 -28
- package/dist/transform-job-Cg_1jzWI.mjs +0 -22
- package/dist/upload-fcim1xtK.mjs +0 -13
|
@@ -1,39 +1,41 @@
|
|
|
1
|
-
import { At as
|
|
1
|
+
import { At as formatZodIssue, Et as TimeoutError, Mt as isNonInterruptFailure, P as CapabilityError, Q as parseJsonOrPlain, Tt as ResponseShapeError, W as HttpError, Y as isPlainObject, kt as errorMessage, n as isMethodKey, r as methodRequirements, wt as PartialWriteError, xt as InternalError, yt as ConfigError } from "./cli.mjs";
|
|
2
2
|
import { n as Notification, r as NotificationCardPayload, t as CARD_PAYLOAD_TYPE } from "./notification-DaA4bBHW.mjs";
|
|
3
|
-
import {
|
|
4
|
-
import { n as
|
|
5
|
-
import { n as
|
|
3
|
+
import { L as profileFromProperties, Z as SessionProperties } from "./runtime-Ckns6TKK.mjs";
|
|
4
|
+
import { n as featureFailures, r as supersedingFeature, t as checkFeatures } from "./requirement-check-BE3PuGsC.mjs";
|
|
5
|
+
import { n as createTransport } from "./transport-0qFZhEuP.mjs";
|
|
6
6
|
import { f as FieldWithDataSensitivity, h as fieldRemappedValueSchema, m as fieldDetailSchema, n as FieldBaseType, o as FieldSearchMatches, s as FieldSemanticType, u as FieldValues } from "./field-5nivEfd6.mjs";
|
|
7
7
|
import { a as TemporalUnit, r as ParameterValues } from "./parameter-Celg0wZa.mjs";
|
|
8
|
-
import {
|
|
8
|
+
import { r as PivotExportFormat, t as DatasetQuery } from "./query-BKtMP5eH.mjs";
|
|
9
|
+
import { a as CardQueryResult, t as Card } from "./card-P5mBknsl.mjs";
|
|
9
10
|
import { b as TableVisibilityType, p as TableQueryMetadata, s as TableDataLayerTier, t as Table, u as TableForeignKey, v as TableSelectors } from "./table-zAdW5_3H.mjs";
|
|
10
|
-
import { t as Database } from "./database-
|
|
11
|
+
import { t as Database } from "./database-2HYCdHqK.mjs";
|
|
11
12
|
import { t as Snippet } from "./snippet-CyKAgIZl.mjs";
|
|
12
|
-
import { r as QueryMetadata, t as CompiledQuery } from "./dataset-
|
|
13
|
-
import { c as CollectionItem, m as CollectionTreeNode, r as Collection } from "./collection-
|
|
13
|
+
import { r as QueryMetadata, t as CompiledQuery } from "./dataset-D-x2Ho2i.mjs";
|
|
14
|
+
import { c as CollectionItem, m as CollectionTreeNode, r as Collection } from "./collection-B2wRXyTF.mjs";
|
|
14
15
|
import { t as ContentTranslationUploadResult } from "./content-translation-BrHOrmj9.mjs";
|
|
15
16
|
import { l as Dashcard, o as DashboardDetail, r as DashboardCopy, t as Dashboard } from "./dashboard-Phz3XpRM.mjs";
|
|
16
|
-
import {
|
|
17
|
-
import {
|
|
18
|
-
import { t as
|
|
19
|
-
import {
|
|
17
|
+
import { a as DataActionExecuteResult, s as dataActionSchema } from "./data-action-DZxVB_hD.mjs";
|
|
18
|
+
import { r as pollUntil } from "./poll-CX3jPtXb.mjs";
|
|
19
|
+
import { i as DependencyEntity, s as DependencyGraph, t as BreakingSource, u as DependencyNode } from "./dependency-qP1hx2YN.mjs";
|
|
20
|
+
import { t as Document } from "./document-UMG6me2P.mjs";
|
|
21
|
+
import { i as EidTranslateResult } from "./eid-translation-Ba92VOHe.mjs";
|
|
20
22
|
import { c as SyncRemoteChanges, d as SyncTask, i as SyncExportPreflight, l as SyncSettingsUpdateResult, m as isSyncTaskTerminal, n as SyncDirtyItem, t as SyncBranchCreated } from "./git-sync-COokpYgc.mjs";
|
|
21
|
-
import { t as Glossary } from "./glossary-
|
|
22
|
-
import { a as libraryWireSchema, i as LibraryPublishTablesInput, n as LibraryCollectionInfo, o as toLibrary } from "./library-
|
|
23
|
+
import { t as Glossary } from "./glossary-QN-hHfOT.mjs";
|
|
24
|
+
import { a as libraryWireSchema, i as LibraryPublishTablesInput, n as LibraryCollectionInfo, o as toLibrary } from "./library-BKSFtIV9.mjs";
|
|
23
25
|
import { t as Measure } from "./measure-CtfjqJFP.mjs";
|
|
24
26
|
import { r as ModerationReviewCreateInput, t as ModerationReview } from "./moderation-review-BdqEH6N1.mjs";
|
|
25
27
|
import { t as Pulse } from "./pulse-Dz0ocv0l.mjs";
|
|
26
28
|
import { a as TransformDagTransform, d as TransformTarget, g as transformRowSchema, h as transformDetailSchema, i as TransformDagRunResult, l as TransformRunSummary, m as isTransformRunTerminal, o as TransformRun, p as isTransformRunFailed, u as TransformSourceTableEntry } from "./transform-DiW7bREn.mjs";
|
|
27
|
-
import { r as SearchResult } from "./search-
|
|
29
|
+
import { r as SearchResult } from "./search-CXRavT7G.mjs";
|
|
28
30
|
import { t as Segment } from "./segment-OsrbUDzw.mjs";
|
|
29
31
|
import { t as Setting } from "./setting-DTiLCW8g.mjs";
|
|
30
32
|
import { n as SetupResult } from "./setup-CO7QV-ao.mjs";
|
|
31
|
-
import { i as TimelineEvent, t as Timeline } from "./timeline-
|
|
32
|
-
import { c as transformJobSchema, n as TransformJobActiveResult, s as transformJobRunResultSchema } from "./transform-job-
|
|
33
|
+
import { i as TimelineEvent, t as Timeline } from "./timeline-DcsCXNUt.mjs";
|
|
34
|
+
import { c as transformJobSchema, n as TransformJobActiveResult, s as transformJobRunResultSchema } from "./transform-job-ClX8e5iO.mjs";
|
|
33
35
|
import { t as TransformTag } from "./transform-tag-CcElGp3C.mjs";
|
|
36
|
+
import { i as TransformTestRunResult, t as TransformTest } from "./transform-test-Bexa_K89.mjs";
|
|
34
37
|
import { t as UploadResult } from "./upload-DAtxBBms.mjs";
|
|
35
38
|
import { z } from "zod";
|
|
36
|
-
import { setTimeout } from "node:timers/promises";
|
|
37
39
|
//#region \0rolldown/runtime.js
|
|
38
40
|
var __defProp = Object.defineProperty;
|
|
39
41
|
var __exportAll = (all, no_symbols) => {
|
|
@@ -46,416 +48,6 @@ var __exportAll = (all, no_symbols) => {
|
|
|
46
48
|
return target;
|
|
47
49
|
};
|
|
48
50
|
//#endregion
|
|
49
|
-
//#region ../client/src/http/response-shape.ts
|
|
50
|
-
async function parseJsonResponse(text, schema, context) {
|
|
51
|
-
try {
|
|
52
|
-
return parseJson(text, schema, { source: context.url });
|
|
53
|
-
} catch (error) {
|
|
54
|
-
if (error instanceof ValidationError) throw ResponseShapeError.fromZodIssues({
|
|
55
|
-
kind: "zod",
|
|
56
|
-
method: context.method,
|
|
57
|
-
url: context.url,
|
|
58
|
-
status: context.status,
|
|
59
|
-
zodIssues: error.developerDetail.zodIssues,
|
|
60
|
-
serverTag: await context.getServerTag(),
|
|
61
|
-
serverSkew: context.serverSkew
|
|
62
|
-
});
|
|
63
|
-
throw error;
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
//#endregion
|
|
67
|
-
//#region ../client/src/http/retry.ts
|
|
68
|
-
const BASE_DELAY_MS = 250;
|
|
69
|
-
const MAX_DELAY_MS = 8e3;
|
|
70
|
-
const MS_PER_SECOND = 1e3;
|
|
71
|
-
function backoffDelay({ attempt, retryAfterHeader }) {
|
|
72
|
-
const fromHeader = parseRetryAfter(retryAfterHeader);
|
|
73
|
-
if (fromHeader !== null) return fromHeader;
|
|
74
|
-
return Math.min(MAX_DELAY_MS, BASE_DELAY_MS * 2 ** attempt);
|
|
75
|
-
}
|
|
76
|
-
function parseRetryAfter(header) {
|
|
77
|
-
if (!header) return null;
|
|
78
|
-
const numeric = Number(header);
|
|
79
|
-
if (Number.isFinite(numeric) && numeric >= 0) return Math.round(numeric * MS_PER_SECOND);
|
|
80
|
-
const dateMs = Date.parse(header);
|
|
81
|
-
if (Number.isFinite(dateMs)) return Math.max(0, dateMs - Date.now());
|
|
82
|
-
return null;
|
|
83
|
-
}
|
|
84
|
-
function sleep(ms, signal) {
|
|
85
|
-
return setTimeout(ms, void 0, { signal });
|
|
86
|
-
}
|
|
87
|
-
async function runWithRetries(attempt, signal) {
|
|
88
|
-
let attemptIndex = 0;
|
|
89
|
-
while (true) {
|
|
90
|
-
const outcome = await attempt(attemptIndex);
|
|
91
|
-
if (outcome.kind === "success") return outcome.response;
|
|
92
|
-
await sleep(outcome.delayMs, signal);
|
|
93
|
-
attemptIndex += 1;
|
|
94
|
-
}
|
|
95
|
-
}
|
|
96
|
-
const DEFAULT_TIMEOUT_MS = 3e4;
|
|
97
|
-
const OCTET_STREAM_CONTENT_TYPE = "application/octet-stream";
|
|
98
|
-
const TEXT_CONTENT_TYPE_PREFIX = "text/";
|
|
99
|
-
const ERROR_BODY_BYTE_CAP = 64 * 1024;
|
|
100
|
-
const IDEMPOTENT_METHODS = /* @__PURE__ */ new Set([
|
|
101
|
-
"GET",
|
|
102
|
-
"HEAD",
|
|
103
|
-
"OPTIONS"
|
|
104
|
-
]);
|
|
105
|
-
function createTransport(config, options) {
|
|
106
|
-
const baseUrl = normalizeUrl(config.url);
|
|
107
|
-
assertCredentialHeaderSafe(config.credential);
|
|
108
|
-
const fetchImpl = options.fetchImpl ?? globalThis.fetch.bind(globalThis);
|
|
109
|
-
let inForce = options.server ?? null;
|
|
110
|
-
let newest = null;
|
|
111
|
-
let probesStarted = 0;
|
|
112
|
-
let applied = null;
|
|
113
|
-
const inFlight = /* @__PURE__ */ new Set();
|
|
114
|
-
const getServerTag = options.getServerTag ?? (async () => tagOf(inForce));
|
|
115
|
-
const refreshCredential = options.refreshCredential;
|
|
116
|
-
let credential = config.credential;
|
|
117
|
-
const knownSecrets = new Set(credentialSecrets(credential));
|
|
118
|
-
const redactionContext = { knownSecrets };
|
|
119
|
-
let refreshInFlight = null;
|
|
120
|
-
function tryRefreshCredential() {
|
|
121
|
-
const refresh = refreshCredential;
|
|
122
|
-
if (credential.kind !== "oauth" || refresh === void 0) return Promise.resolve(false);
|
|
123
|
-
refreshInFlight ??= refreshOnce(refresh).finally(() => {
|
|
124
|
-
refreshInFlight = null;
|
|
125
|
-
});
|
|
126
|
-
return refreshInFlight;
|
|
127
|
-
}
|
|
128
|
-
async function refreshOnce(refresh) {
|
|
129
|
-
const next = await refresh();
|
|
130
|
-
if (next === null) return false;
|
|
131
|
-
credential = next;
|
|
132
|
-
for (const secret of credentialSecrets(next)) knownSecrets.add(secret);
|
|
133
|
-
return true;
|
|
134
|
-
}
|
|
135
|
-
async function attemptOnce(prepared, attempt) {
|
|
136
|
-
const hasRetriesLeft = attempt < prepared.retries;
|
|
137
|
-
const timeoutSignal = AbortSignal.timeout(prepared.timeoutMs);
|
|
138
|
-
const combined = combineAborts(timeoutSignal, prepared.cancelSignal);
|
|
139
|
-
let response;
|
|
140
|
-
try {
|
|
141
|
-
response = await fetchImpl(prepared.url, {
|
|
142
|
-
method: prepared.method,
|
|
143
|
-
headers: prepared.headers,
|
|
144
|
-
body: prepared.body,
|
|
145
|
-
signal: combined
|
|
146
|
-
});
|
|
147
|
-
} catch (error) {
|
|
148
|
-
throwIfAborted(prepared.cancelSignal);
|
|
149
|
-
const isStaleSocketFirstTry = attempt === 0 && isConnectionClosed(error);
|
|
150
|
-
if (prepared.idempotent && (hasRetriesLeft || isStaleSocketFirstTry)) return {
|
|
151
|
-
kind: "retry",
|
|
152
|
-
delayMs: backoffDelay({ attempt })
|
|
153
|
-
};
|
|
154
|
-
if (timeoutSignal.aborted) throw new TimeoutError(`Request timed out after ${prepared.timeoutMs}ms`, {
|
|
155
|
-
kind: "http",
|
|
156
|
-
method: prepared.method,
|
|
157
|
-
url: prepared.url,
|
|
158
|
-
timeoutMs: prepared.timeoutMs
|
|
159
|
-
});
|
|
160
|
-
throw buildNetworkError(error, prepared.method, prepared.url);
|
|
161
|
-
}
|
|
162
|
-
const canRetryStatus = hasRetriesLeft && prepared.idempotent;
|
|
163
|
-
if (!response.ok && isRetryableStatus(response.status) && canRetryStatus) {
|
|
164
|
-
const retryAfter = response.headers.get("Retry-After");
|
|
165
|
-
response.body?.cancel().catch(() => void 0);
|
|
166
|
-
return {
|
|
167
|
-
kind: "retry",
|
|
168
|
-
delayMs: backoffDelay({
|
|
169
|
-
attempt,
|
|
170
|
-
retryAfterHeader: retryAfter
|
|
171
|
-
})
|
|
172
|
-
};
|
|
173
|
-
}
|
|
174
|
-
if (!response.ok) {
|
|
175
|
-
const rawBody = await readBodyForError(response);
|
|
176
|
-
const serverTag = await getServerTag();
|
|
177
|
-
throw new HttpError({
|
|
178
|
-
status: response.status,
|
|
179
|
-
statusText: response.statusText,
|
|
180
|
-
method: prepared.method,
|
|
181
|
-
url: prepared.url,
|
|
182
|
-
responseHeaders: response.headers,
|
|
183
|
-
rawBody,
|
|
184
|
-
serverTag,
|
|
185
|
-
redactionContext
|
|
186
|
-
});
|
|
187
|
-
}
|
|
188
|
-
assertContentType(response, prepared);
|
|
189
|
-
return {
|
|
190
|
-
kind: "success",
|
|
191
|
-
response
|
|
192
|
-
};
|
|
193
|
-
}
|
|
194
|
-
async function executeRaw(prepared) {
|
|
195
|
-
try {
|
|
196
|
-
return await runWithRetries((attempt) => attemptOnce(prepared, attempt), prepared.cancelSignal);
|
|
197
|
-
} catch (error) {
|
|
198
|
-
throwIfAborted(prepared.cancelSignal);
|
|
199
|
-
throw error;
|
|
200
|
-
}
|
|
201
|
-
}
|
|
202
|
-
async function executeWithAuthRefresh(path, opts) {
|
|
203
|
-
const prepared = prepare(path, opts);
|
|
204
|
-
try {
|
|
205
|
-
return {
|
|
206
|
-
response: await executeRaw(prepared),
|
|
207
|
-
prepared
|
|
208
|
-
};
|
|
209
|
-
} catch (error) {
|
|
210
|
-
if (error instanceof HttpError && error.status === 401) {
|
|
211
|
-
if (await tryRefreshCredential()) {
|
|
212
|
-
const retried = prepare(path, opts);
|
|
213
|
-
return {
|
|
214
|
-
response: await executeRaw(retried),
|
|
215
|
-
prepared: retried
|
|
216
|
-
};
|
|
217
|
-
}
|
|
218
|
-
}
|
|
219
|
-
throw error;
|
|
220
|
-
}
|
|
221
|
-
}
|
|
222
|
-
function prepare(path, opts = {}) {
|
|
223
|
-
const method = opts.method ?? "GET";
|
|
224
|
-
const expectContentType = opts.expectContentType ?? "json";
|
|
225
|
-
const url = buildUrl(baseUrl, path, opts.query);
|
|
226
|
-
const headers = new Headers();
|
|
227
|
-
const auth = credentialAuthHeader(credential);
|
|
228
|
-
headers.set(auth.name, auth.value);
|
|
229
|
-
headers.set("accept", acceptHeader(expectContentType));
|
|
230
|
-
headers.set("user-agent", options.userAgent);
|
|
231
|
-
let body = null;
|
|
232
|
-
if (opts.body !== void 0 && opts.body !== null) if (typeof opts.body === "string" || opts.body instanceof URLSearchParams) body = opts.body;
|
|
233
|
-
else if (opts.body instanceof FormData || opts.body instanceof ReadableStream) body = opts.body;
|
|
234
|
-
else if (opts.body instanceof Uint8Array) {
|
|
235
|
-
body = opts.body;
|
|
236
|
-
headers.set("content-type", OCTET_STREAM_CONTENT_TYPE);
|
|
237
|
-
} else {
|
|
238
|
-
body = JSON.stringify(opts.body);
|
|
239
|
-
headers.set("content-type", JSON_CONTENT_TYPE);
|
|
240
|
-
}
|
|
241
|
-
return {
|
|
242
|
-
url,
|
|
243
|
-
method,
|
|
244
|
-
headers,
|
|
245
|
-
body,
|
|
246
|
-
expectContentType,
|
|
247
|
-
retries: opts.retries ?? 3,
|
|
248
|
-
idempotent: opts.idempotent ?? IDEMPOTENT_METHODS.has(method),
|
|
249
|
-
timeoutMs: opts.timeoutMs ?? DEFAULT_TIMEOUT_MS,
|
|
250
|
-
cancelSignal: combineAborts(opts.signal, options.signal)
|
|
251
|
-
};
|
|
252
|
-
}
|
|
253
|
-
async function readJson(path, opts = {}) {
|
|
254
|
-
const chosenFor = inForce;
|
|
255
|
-
const { response, prepared } = await executeWithAuthRefresh(path, {
|
|
256
|
-
...opts,
|
|
257
|
-
expectContentType: "json"
|
|
258
|
-
});
|
|
259
|
-
return {
|
|
260
|
-
text: await response.text(),
|
|
261
|
-
context: {
|
|
262
|
-
method: prepared.method,
|
|
263
|
-
url: prepared.url,
|
|
264
|
-
status: response.status,
|
|
265
|
-
...namingOf(chosenFor)
|
|
266
|
-
}
|
|
267
|
-
};
|
|
268
|
-
}
|
|
269
|
-
function namingOf(profile) {
|
|
270
|
-
if (profile === null) return {
|
|
271
|
-
getServerTag,
|
|
272
|
-
serverSkew: null
|
|
273
|
-
};
|
|
274
|
-
return {
|
|
275
|
-
getServerTag: async () => profile.version.tag,
|
|
276
|
-
serverSkew: profile.skew
|
|
277
|
-
};
|
|
278
|
-
}
|
|
279
|
-
async function runProbe(order, budget) {
|
|
280
|
-
const read = await readJson(PROBE_PATH, probeBudget(budget));
|
|
281
|
-
const properties = await parseJsonResponse(read.text, SessionProperties, read.context);
|
|
282
|
-
const info = serverInfoFromProperties(properties);
|
|
283
|
-
const profile = createServerProfile(info);
|
|
284
|
-
if (applied === null || applied.order < order) {
|
|
285
|
-
options.onServerProbed?.(info, profile);
|
|
286
|
-
applied = {
|
|
287
|
-
order,
|
|
288
|
-
profile
|
|
289
|
-
};
|
|
290
|
-
inForce = profile;
|
|
291
|
-
}
|
|
292
|
-
return {
|
|
293
|
-
properties,
|
|
294
|
-
profile,
|
|
295
|
-
read
|
|
296
|
-
};
|
|
297
|
-
}
|
|
298
|
-
function startProbe(budget) {
|
|
299
|
-
probesStarted += 1;
|
|
300
|
-
const probed = runProbe(probesStarted, budget);
|
|
301
|
-
newest = probed;
|
|
302
|
-
inFlight.add(probed);
|
|
303
|
-
probed.then(() => {
|
|
304
|
-
inFlight.delete(probed);
|
|
305
|
-
}, () => {
|
|
306
|
-
inFlight.delete(probed);
|
|
307
|
-
if (newest === probed) newest = null;
|
|
308
|
-
});
|
|
309
|
-
return probed;
|
|
310
|
-
}
|
|
311
|
-
function appliedProfile() {
|
|
312
|
-
return applied === null ? null : applied.profile;
|
|
313
|
-
}
|
|
314
|
-
function verifying() {
|
|
315
|
-
const settled = appliedProfile();
|
|
316
|
-
if (newest === null && settled !== null) return Promise.resolve(settled);
|
|
317
|
-
return (newest ?? startProbe({})).then((probed) => probed.profile, fallBackTo(appliedProfile));
|
|
318
|
-
}
|
|
319
|
-
function profileInForce() {
|
|
320
|
-
const current = inForce;
|
|
321
|
-
if (current === null) return verifying();
|
|
322
|
-
if (newest === null) return Promise.resolve(current);
|
|
323
|
-
return newest.then((probed) => probed.profile, fallBackTo(() => inForce));
|
|
324
|
-
}
|
|
325
|
-
async function server(wait = {}) {
|
|
326
|
-
throwIfAborted(wait.signal);
|
|
327
|
-
return untilAborted(profileInForce(), wait.signal);
|
|
328
|
-
}
|
|
329
|
-
async function verifiedServer(wait = {}) {
|
|
330
|
-
throwIfAborted(wait.signal);
|
|
331
|
-
return untilAborted(verifying(), wait.signal);
|
|
332
|
-
}
|
|
333
|
-
async function probe(reader, read = {}) {
|
|
334
|
-
const { signal, ...budget } = read;
|
|
335
|
-
throwIfAborted(signal);
|
|
336
|
-
const probed = await untilAborted(startProbe(budget), signal);
|
|
337
|
-
const context = {
|
|
338
|
-
...probed.read.context,
|
|
339
|
-
...namingOf(probed.profile)
|
|
340
|
-
};
|
|
341
|
-
return parseJsonResponse(probed.read.text, reader, context);
|
|
342
|
-
}
|
|
343
|
-
async function probesSettled() {
|
|
344
|
-
while (inFlight.size > 0) await Promise.allSettled(inFlight);
|
|
345
|
-
}
|
|
346
|
-
async function requireFeatures(features, wait = {}) {
|
|
347
|
-
if (features.length === 0) return;
|
|
348
|
-
const profile = await preflightServer(wait);
|
|
349
|
-
if (profile === null) return;
|
|
350
|
-
for (const failure of featureFailures(features, profile)) refuseBeforeSending(new CapabilityError(failure));
|
|
351
|
-
}
|
|
352
|
-
async function preflightServer(wait = {}) {
|
|
353
|
-
try {
|
|
354
|
-
return await verifiedServer(wait);
|
|
355
|
-
} catch (error) {
|
|
356
|
-
if (!isNonInterruptFailure(error)) throw error;
|
|
357
|
-
skipOrThrow({
|
|
358
|
-
kind: "unverified",
|
|
359
|
-
failure: error
|
|
360
|
-
});
|
|
361
|
-
return null;
|
|
362
|
-
}
|
|
363
|
-
}
|
|
364
|
-
function refuseBeforeSending(refusal) {
|
|
365
|
-
skipOrThrow({
|
|
366
|
-
kind: "refused",
|
|
367
|
-
refusal
|
|
368
|
-
});
|
|
369
|
-
}
|
|
370
|
-
function skipOrThrow(skipped) {
|
|
371
|
-
const hook = options.onPreflightSkipped;
|
|
372
|
-
if (hook === void 0) throw skippedError(skipped);
|
|
373
|
-
hook(skipped);
|
|
374
|
-
}
|
|
375
|
-
return {
|
|
376
|
-
server,
|
|
377
|
-
verifiedServer,
|
|
378
|
-
probe,
|
|
379
|
-
requireFeatures,
|
|
380
|
-
preflightServer,
|
|
381
|
-
refuseBeforeSending,
|
|
382
|
-
probesSettled,
|
|
383
|
-
async requestRaw(path, opts) {
|
|
384
|
-
return (await executeWithAuthRefresh(path, opts ?? {})).response;
|
|
385
|
-
},
|
|
386
|
-
async requestParsed(schema, path, opts) {
|
|
387
|
-
const read = await readJson(path, opts);
|
|
388
|
-
return parseJsonResponse(read.text, schema, read.context);
|
|
389
|
-
},
|
|
390
|
-
async requestStream(path, opts) {
|
|
391
|
-
const { response, prepared } = await executeWithAuthRefresh(path, {
|
|
392
|
-
...opts,
|
|
393
|
-
expectContentType: opts?.expectContentType ?? "binary"
|
|
394
|
-
});
|
|
395
|
-
if (!response.body) throw new NetworkError("Response had no body to stream", {
|
|
396
|
-
method: prepared.method,
|
|
397
|
-
url: prepared.url,
|
|
398
|
-
cause: "missing body"
|
|
399
|
-
});
|
|
400
|
-
return response.body;
|
|
401
|
-
}
|
|
402
|
-
};
|
|
403
|
-
}
|
|
404
|
-
function skippedError(skipped) {
|
|
405
|
-
return skipped.kind === "refused" ? skipped.refusal : skipped.failure;
|
|
406
|
-
}
|
|
407
|
-
function fallBackTo(fallback) {
|
|
408
|
-
return (error) => {
|
|
409
|
-
const profile = fallback();
|
|
410
|
-
if (profile !== null && isNonInterruptFailure(error)) return profile;
|
|
411
|
-
throw error;
|
|
412
|
-
};
|
|
413
|
-
}
|
|
414
|
-
function tagOf(profile) {
|
|
415
|
-
return profile === null ? null : profile.version.tag;
|
|
416
|
-
}
|
|
417
|
-
function buildUrl(baseUrl, path, query) {
|
|
418
|
-
const normalizedPath = path.startsWith("/") ? path : `/${path}`;
|
|
419
|
-
const target = new URL(baseUrl + normalizedPath);
|
|
420
|
-
if (query) for (const [key, value] of Object.entries(query)) {
|
|
421
|
-
if (value === void 0) continue;
|
|
422
|
-
if (Array.isArray(value)) for (const entry of value) target.searchParams.append(key, String(entry));
|
|
423
|
-
else target.searchParams.append(key, String(value));
|
|
424
|
-
}
|
|
425
|
-
return target.toString();
|
|
426
|
-
}
|
|
427
|
-
function acceptHeader(expected) {
|
|
428
|
-
if (expected === "json") return JSON_CONTENT_TYPE;
|
|
429
|
-
if (expected === "text") return "text/*";
|
|
430
|
-
return "*/*";
|
|
431
|
-
}
|
|
432
|
-
function assertContentType(response, prepared) {
|
|
433
|
-
if (prepared.expectContentType === "binary") return;
|
|
434
|
-
const contentType = response.headers.get("content-type");
|
|
435
|
-
if (contentType === null) throwContentTypeMismatch(response, prepared, prepared.expectContentType);
|
|
436
|
-
if (prepared.expectContentType === "json" && !contentType.includes("application/json")) throwContentTypeMismatch(response, prepared, "json");
|
|
437
|
-
if (prepared.expectContentType === "text" && !contentType.startsWith(TEXT_CONTENT_TYPE_PREFIX)) throwContentTypeMismatch(response, prepared, "text");
|
|
438
|
-
}
|
|
439
|
-
function throwContentTypeMismatch(response, prepared, expected) {
|
|
440
|
-
const actual = response.headers.get("content-type") ?? "no content-type";
|
|
441
|
-
throw new HttpError({
|
|
442
|
-
status: response.status,
|
|
443
|
-
statusText: response.statusText,
|
|
444
|
-
method: prepared.method,
|
|
445
|
-
url: prepared.url,
|
|
446
|
-
responseHeaders: response.headers,
|
|
447
|
-
rawBody: null,
|
|
448
|
-
overrideUserMessage: `Expected ${expected} response but got ${actual}`
|
|
449
|
-
});
|
|
450
|
-
}
|
|
451
|
-
async function readBodyForError(response) {
|
|
452
|
-
try {
|
|
453
|
-
return Buffer.from(await response.arrayBuffer()).subarray(0, ERROR_BODY_BYTE_CAP).toString("utf8");
|
|
454
|
-
} catch (error) {
|
|
455
|
-
return `[body read failed: ${errorMessage(error)}]`;
|
|
456
|
-
}
|
|
457
|
-
}
|
|
458
|
-
//#endregion
|
|
459
51
|
//#region ../client/src/resources/pivot-export.ts
|
|
460
52
|
const PivotedExportsProperty = SessionProperties.extend({ "enable-pivoted-exports": z.boolean() });
|
|
461
53
|
/**
|
|
@@ -1037,6 +629,81 @@ function stripEntityId(dashcard) {
|
|
|
1037
629
|
};
|
|
1038
630
|
}
|
|
1039
631
|
//#endregion
|
|
632
|
+
//#region ../client/src/resources/data-action.ts
|
|
633
|
+
function collectionFeatures(params) {
|
|
634
|
+
return params.collection_id === void 0 ? [] : [{
|
|
635
|
+
feature: "dataActionCollections",
|
|
636
|
+
fields: ["collection_id"]
|
|
637
|
+
}];
|
|
638
|
+
}
|
|
639
|
+
function dataActionResource(transport) {
|
|
640
|
+
const { explain } = explainer(transport, "dataAction");
|
|
641
|
+
async function readSchema(options) {
|
|
642
|
+
const { features } = await transport.server(options);
|
|
643
|
+
return dataActionSchema(features);
|
|
644
|
+
}
|
|
645
|
+
/** List the unarchived data actions the caller can see. `GET /api/action` answers a bare array. */
|
|
646
|
+
async function list(options = {}) {
|
|
647
|
+
const schema = await readSchema(options);
|
|
648
|
+
return {
|
|
649
|
+
data: await transport.requestParsed(z.array(schema), "/api/action", { ...options }),
|
|
650
|
+
total: null
|
|
651
|
+
};
|
|
652
|
+
}
|
|
653
|
+
/** Get one unarchived data action by id. */
|
|
654
|
+
async function get(id, options = {}) {
|
|
655
|
+
const schema = await readSchema(options);
|
|
656
|
+
return transport.requestParsed(schema, `/api/action/${id}`, { ...options });
|
|
657
|
+
}
|
|
658
|
+
/** Create a data action — a parameterized native query that writes to a database — in a collection. */
|
|
659
|
+
async function create(params, options = {}) {
|
|
660
|
+
const schema = await readSchema(options);
|
|
661
|
+
return transport.requestParsed(schema, "/api/action", {
|
|
662
|
+
...options,
|
|
663
|
+
method: "POST",
|
|
664
|
+
body: params
|
|
665
|
+
});
|
|
666
|
+
}
|
|
667
|
+
/** Update a data action by id, patching only the fields the body carries. */
|
|
668
|
+
async function update(id, params, options = {}) {
|
|
669
|
+
const schema = await readSchema(options);
|
|
670
|
+
return transport.requestParsed(schema, `/api/action/${id}`, {
|
|
671
|
+
...options,
|
|
672
|
+
method: "PUT",
|
|
673
|
+
body: params
|
|
674
|
+
});
|
|
675
|
+
}
|
|
676
|
+
/** Archive (soft-delete) a data action by id. Metabase models this as an update, not its own endpoint. */
|
|
677
|
+
async function archive(id, options = {}) {
|
|
678
|
+
return update(id, { archived: true }, options);
|
|
679
|
+
}
|
|
680
|
+
/** Delete a data action by id, removing it and the dashboard buttons that run it. */
|
|
681
|
+
async function remove(id, options = {}) {
|
|
682
|
+
await transport.requestRaw(`/api/action/${id}`, {
|
|
683
|
+
...options,
|
|
684
|
+
method: "DELETE",
|
|
685
|
+
expectContentType: "binary"
|
|
686
|
+
});
|
|
687
|
+
}
|
|
688
|
+
/** Execute a data action by id with parameter values keyed by parameter id. */
|
|
689
|
+
async function execute(id, params, options = {}) {
|
|
690
|
+
return transport.requestParsed(DataActionExecuteResult, `/api/action/${id}/execute`, {
|
|
691
|
+
...options,
|
|
692
|
+
method: "POST",
|
|
693
|
+
body: params
|
|
694
|
+
});
|
|
695
|
+
}
|
|
696
|
+
return {
|
|
697
|
+
list,
|
|
698
|
+
get,
|
|
699
|
+
create: explain("create", create),
|
|
700
|
+
update: explain("update", update, (_id, params) => collectionFeatures(params)),
|
|
701
|
+
archive,
|
|
702
|
+
delete: remove,
|
|
703
|
+
execute
|
|
704
|
+
};
|
|
705
|
+
}
|
|
706
|
+
//#endregion
|
|
1040
707
|
//#region ../client/src/resources/database.ts
|
|
1041
708
|
const DatabaseApiList = z.object({
|
|
1042
709
|
data: z.array(Database),
|
|
@@ -2708,7 +2375,8 @@ const RevisionEntity = z.enum([
|
|
|
2708
2375
|
"document",
|
|
2709
2376
|
"measure",
|
|
2710
2377
|
"segment",
|
|
2711
|
-
"transform"
|
|
2378
|
+
"transform",
|
|
2379
|
+
"transform-test"
|
|
2712
2380
|
]);
|
|
2713
2381
|
const RevisionUser = z.object({
|
|
2714
2382
|
id: z.number().int(),
|
|
@@ -2772,7 +2440,8 @@ const RevisionApiRevert = z.union([Revision.transform((revision) => ({
|
|
|
2772
2440
|
}))]);
|
|
2773
2441
|
const ENTITY_FEATURES = {
|
|
2774
2442
|
measure: "measures",
|
|
2775
|
-
transform: "transforms"
|
|
2443
|
+
transform: "transforms",
|
|
2444
|
+
"transform-test": "transformTests"
|
|
2776
2445
|
};
|
|
2777
2446
|
function entityFeatures(entity) {
|
|
2778
2447
|
const feature = ENTITY_FEATURES[entity];
|
|
@@ -4060,167 +3729,6 @@ function transformTagResource(transport) {
|
|
|
4060
3729
|
};
|
|
4061
3730
|
}
|
|
4062
3731
|
//#endregion
|
|
4063
|
-
//#region ../client/src/domain/transform-test.ts
|
|
4064
|
-
const TransformTestTable = z.object({
|
|
4065
|
-
schema: z.string().min(1).nullable().optional(),
|
|
4066
|
-
name: z.string().min(1)
|
|
4067
|
-
}).loose();
|
|
4068
|
-
const TransformTestColumn = z.object({
|
|
4069
|
-
name: z.string().min(1),
|
|
4070
|
-
cast_type: z.string().min(1)
|
|
4071
|
-
}).loose();
|
|
4072
|
-
const TransformTestCell = z.union([
|
|
4073
|
-
z.boolean(),
|
|
4074
|
-
z.number(),
|
|
4075
|
-
z.string(),
|
|
4076
|
-
z.null()
|
|
4077
|
-
]);
|
|
4078
|
-
const TransformTestRow = z.record(z.string(), TransformTestCell);
|
|
4079
|
-
const TransformTestSqlInput = z.object({
|
|
4080
|
-
table: TransformTestTable,
|
|
4081
|
-
format: z.literal("sql"),
|
|
4082
|
-
sql: z.string().min(1)
|
|
4083
|
-
}).loose();
|
|
4084
|
-
const TransformTestRowsInput = z.object({
|
|
4085
|
-
table: TransformTestTable,
|
|
4086
|
-
format: z.literal("rows"),
|
|
4087
|
-
columns: z.array(TransformTestColumn).min(1),
|
|
4088
|
-
rows: z.array(TransformTestRow)
|
|
4089
|
-
}).loose();
|
|
4090
|
-
const TransformTestInput = z.discriminatedUnion("format", [TransformTestSqlInput, TransformTestRowsInput]);
|
|
4091
|
-
const TransformTestEqualsSqlExpectation = z.object({
|
|
4092
|
-
type: z.literal("equals"),
|
|
4093
|
-
name: z.string().min(1),
|
|
4094
|
-
format: z.literal("sql"),
|
|
4095
|
-
sql: z.string().min(1)
|
|
4096
|
-
}).loose();
|
|
4097
|
-
const TransformTestEqualsRowsExpectation = z.object({
|
|
4098
|
-
type: z.literal("equals"),
|
|
4099
|
-
name: z.string().min(1),
|
|
4100
|
-
format: z.literal("rows"),
|
|
4101
|
-
columns: z.array(TransformTestColumn).min(1),
|
|
4102
|
-
rows: z.array(TransformTestRow)
|
|
4103
|
-
}).loose();
|
|
4104
|
-
const TransformTestEqualsExpectation = z.discriminatedUnion("format", [TransformTestEqualsSqlExpectation, TransformTestEqualsRowsExpectation]);
|
|
4105
|
-
const TransformTestEmptyExpectation = z.object({
|
|
4106
|
-
type: z.literal("empty"),
|
|
4107
|
-
name: z.string().min(1),
|
|
4108
|
-
sql: z.string().min(1)
|
|
4109
|
-
}).loose();
|
|
4110
|
-
const TransformTestExpectation = z.discriminatedUnion("type", [TransformTestEqualsExpectation, TransformTestEmptyExpectation]);
|
|
4111
|
-
const TransformTest = z.object({
|
|
4112
|
-
id: z.number().int(),
|
|
4113
|
-
entity_id: z.string(),
|
|
4114
|
-
transform_id: z.number().int(),
|
|
4115
|
-
creator_id: z.number().int(),
|
|
4116
|
-
name: z.string(),
|
|
4117
|
-
description: z.string().nullable(),
|
|
4118
|
-
inputs: z.array(TransformTestInput),
|
|
4119
|
-
expectations: z.array(TransformTestExpectation),
|
|
4120
|
-
created_at: z.string(),
|
|
4121
|
-
updated_at: z.string()
|
|
4122
|
-
}).loose();
|
|
4123
|
-
TransformTest.pick({
|
|
4124
|
-
id: true,
|
|
4125
|
-
transform_id: true,
|
|
4126
|
-
name: true,
|
|
4127
|
-
description: true
|
|
4128
|
-
}).strip();
|
|
4129
|
-
z.object({
|
|
4130
|
-
transform_id: z.number().int().positive(),
|
|
4131
|
-
name: z.string().min(1),
|
|
4132
|
-
description: z.string().nullable().optional(),
|
|
4133
|
-
inputs: z.array(TransformTestInput),
|
|
4134
|
-
expectations: z.array(TransformTestExpectation)
|
|
4135
|
-
}).loose();
|
|
4136
|
-
z.object({
|
|
4137
|
-
transform_id: z.number().int().positive().optional(),
|
|
4138
|
-
name: z.string().min(1).optional(),
|
|
4139
|
-
description: z.string().nullable().optional(),
|
|
4140
|
-
inputs: z.array(TransformTestInput).optional(),
|
|
4141
|
-
expectations: z.array(TransformTestExpectation).optional()
|
|
4142
|
-
}).loose();
|
|
4143
|
-
const TransformTestResultColumn = z.object({
|
|
4144
|
-
name: z.string(),
|
|
4145
|
-
database_type: z.string()
|
|
4146
|
-
}).loose();
|
|
4147
|
-
const TransformTestExpectationError = z.object({
|
|
4148
|
-
type: z.string(),
|
|
4149
|
-
message: z.string()
|
|
4150
|
-
}).loose();
|
|
4151
|
-
const TransformTestCellMismatch = z.object({
|
|
4152
|
-
column: z.string(),
|
|
4153
|
-
expected: TransformTestCell,
|
|
4154
|
-
actual: TransformTestCell
|
|
4155
|
-
}).loose();
|
|
4156
|
-
const TransformTestRowCounts = z.object({
|
|
4157
|
-
actual: z.number().int(),
|
|
4158
|
-
expected: z.number().int()
|
|
4159
|
-
}).loose();
|
|
4160
|
-
const TransformTestEqualsFindings = z.object({
|
|
4161
|
-
name: z.string(),
|
|
4162
|
-
type: z.literal("equals"),
|
|
4163
|
-
status: z.enum(["passed", "failed"]),
|
|
4164
|
-
columns: z.array(TransformTestResultColumn),
|
|
4165
|
-
"row-counts": TransformTestRowCounts,
|
|
4166
|
-
"extra-rows": z.array(TransformTestRow),
|
|
4167
|
-
"missing-rows": z.array(TransformTestRow),
|
|
4168
|
-
"cell-mismatches": z.array(TransformTestCellMismatch),
|
|
4169
|
-
truncated: z.number().int()
|
|
4170
|
-
}).loose();
|
|
4171
|
-
const TransformTestEqualsError = z.object({
|
|
4172
|
-
name: z.string(),
|
|
4173
|
-
type: z.literal("equals"),
|
|
4174
|
-
status: z.literal("error"),
|
|
4175
|
-
error: TransformTestExpectationError
|
|
4176
|
-
}).loose();
|
|
4177
|
-
const TransformTestEqualsResult = z.discriminatedUnion("status", [TransformTestEqualsFindings, TransformTestEqualsError]);
|
|
4178
|
-
const TransformTestEmptyPassed = z.object({
|
|
4179
|
-
name: z.string(),
|
|
4180
|
-
type: z.literal("empty"),
|
|
4181
|
-
status: z.literal("passed")
|
|
4182
|
-
}).loose();
|
|
4183
|
-
const TransformTestEmptyFailed = z.object({
|
|
4184
|
-
name: z.string(),
|
|
4185
|
-
type: z.literal("empty"),
|
|
4186
|
-
status: z.literal("failed"),
|
|
4187
|
-
columns: z.array(TransformTestResultColumn),
|
|
4188
|
-
sample: z.array(TransformTestRow),
|
|
4189
|
-
truncated: z.number().int()
|
|
4190
|
-
}).loose();
|
|
4191
|
-
const TransformTestEmptyError = z.object({
|
|
4192
|
-
name: z.string(),
|
|
4193
|
-
type: z.literal("empty"),
|
|
4194
|
-
status: z.literal("error"),
|
|
4195
|
-
error: TransformTestExpectationError
|
|
4196
|
-
}).loose();
|
|
4197
|
-
const TransformTestEmptyResult = z.discriminatedUnion("status", [
|
|
4198
|
-
TransformTestEmptyPassed,
|
|
4199
|
-
TransformTestEmptyFailed,
|
|
4200
|
-
TransformTestEmptyError
|
|
4201
|
-
]);
|
|
4202
|
-
const TransformTestExpectationResult = z.discriminatedUnion("type", [TransformTestEqualsResult, TransformTestEmptyResult]);
|
|
4203
|
-
const TransformTestRunResult = z.object({
|
|
4204
|
-
status: z.enum(["passed", "failed"]),
|
|
4205
|
-
expectations: z.array(TransformTestExpectationResult),
|
|
4206
|
-
tables: z.record(z.string(), z.string())
|
|
4207
|
-
}).loose();
|
|
4208
|
-
z.enum([
|
|
4209
|
-
"transform-test.unknown-column",
|
|
4210
|
-
"transform-test.ambiguous-column",
|
|
4211
|
-
"transform-test.missing-inputs",
|
|
4212
|
-
"transform-test.unused-inputs",
|
|
4213
|
-
"transform-test.duplicate-input-table",
|
|
4214
|
-
"transform-test.unparseable-source",
|
|
4215
|
-
"transform-test.unremapped-reference",
|
|
4216
|
-
"transform-test.unsupported-transform",
|
|
4217
|
-
"transform-test.unsupported-driver",
|
|
4218
|
-
"transform-test.transform-failed",
|
|
4219
|
-
"transform-test.setup-failed",
|
|
4220
|
-
"transform-test.expectation-failed",
|
|
4221
|
-
"transform-test.unsupported-format"
|
|
4222
|
-
]);
|
|
4223
|
-
//#endregion
|
|
4224
3732
|
//#region ../client/src/resources/transform-test.ts
|
|
4225
3733
|
const TransformTestApiList = z.array(TransformTest);
|
|
4226
3734
|
function transformTestResource(transport) {
|
|
@@ -4368,6 +3876,7 @@ function createClient(config, options) {
|
|
|
4368
3876
|
collection: collectionResource(transport),
|
|
4369
3877
|
contentTranslation: contentTranslationResource(transport),
|
|
4370
3878
|
dashboard: dashboardResource(transport),
|
|
3879
|
+
dataAction: dataActionResource(transport),
|
|
4371
3880
|
database: databaseResource(transport),
|
|
4372
3881
|
dataset: datasetResource(transport),
|
|
4373
3882
|
dependency: dependencyResource(transport),
|