@malloy-publisher/server 0.0.114 → 0.0.116
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/app/api-doc.yaml +634 -362
- package/dist/app/assets/{Chip-DpRfGWL9.js → Chip-BlLPwrfU.js} +1 -1
- package/dist/app/assets/{Container-pCaIjpH5.js → Container-DSVPh3gE.js} +1 -1
- package/dist/app/assets/{DialogTitle-Df6dToBj.js → DialogTitle-bD8VuT8c.js} +1 -1
- package/dist/app/assets/{Edit-Do7LZWER.js → Edit-_LnCy6KM.js} +1 -1
- package/dist/app/assets/FormControlContext-DignhH4k.js +1 -0
- package/dist/app/assets/{HomePage-pfv0GYQd.js → HomePage-LX1tISWU.js} +1 -1
- package/dist/app/assets/{MainPage-1RQ43yX6.js → MainPage-IcOw9T0o.js} +1 -1
- package/dist/app/assets/{MenuItem-BWMnNgqP.js → MenuItem-BdqihbmU.js} +1 -1
- package/dist/app/assets/{Modal-BbVeNLvO.js → Modal-D0aofeJ-.js} +1 -1
- package/dist/app/assets/{ModelPage-BFSBWoUi.js → ModelPage-Cmj_3prB.js} +1 -1
- package/dist/app/assets/{MoreVert-Dh8A2FDF.js → MoreVert-YhnXQ3v5.js} +1 -1
- package/dist/app/assets/{PackagePage-Dbb4lm1F.js → PackagePage-CA_3_grb.js} +2 -2
- package/dist/app/assets/{ProjectPage-Ccyp5m5h.js → ProjectPage-CTEKaYN6.js} +1 -1
- package/dist/app/assets/{RouteError-soNErEMV.js → RouteError-DBjBbJQ4.js} +1 -1
- package/dist/app/assets/{WorkbookPage-D_yrMjqR.js → WorkbookPage-BQqJ6KAQ.js} +1 -1
- package/dist/app/assets/{index-BS_9W4Tt.js → index-BAfm35bA.js} +60 -60
- package/dist/app/assets/{index-B_Z1qGAK.js → index-Bxv0Yt4A.js} +1 -1
- package/dist/app/assets/{index-CZpA8zwK.js → index-CvMj3zFy.js} +1 -1
- package/dist/app/assets/{index.es20-DzH7kq4S.js → index.es20-DX-qKVln.js} +1 -1
- package/dist/app/assets/{index.es23-C-bQftBc.js → index.es23-MhA_BS7D.js} +2 -2
- package/dist/app/assets/{index.es287-BsK0ZRDU.js → index.es309-BadtNHpe.js} +1 -1
- package/dist/app/assets/{index.es288-pwa92z63.js → index.es310-CxNQu9Er.js} +1 -1
- package/dist/app/assets/{index.es291-LYy-CnOC.js → index.es313-CDQEwRNq.js} +1 -1
- package/dist/app/assets/{index.es296-BxlxlVr1.js → index.es318-BEizWri7.js} +1 -1
- package/dist/app/assets/{index.es304-jV2gZBYS.js → index.es326-DRDRxpfM.js} +1 -1
- package/dist/app/assets/{index.es305-DrF4mmwj.js → index.es327-Beb6eJic.js} +1 -1
- package/dist/app/assets/{index.es308-CZZGZfCL.js → index.es330-CwuXg3fJ.js} +1 -1
- package/dist/app/assets/{index.es312-CM4OW1Tu.js → index.es334-Dm2bZsvo.js} +1 -1
- package/dist/app/assets/{index.es315-CSNCJz_t.js → index.es337-BRS6prNj.js} +1 -1
- package/dist/app/assets/{index.es318-BnlIqKdP.js → index.es340-CpGpgGPq.js} +1 -1
- package/dist/app/assets/{index.es319-BqfPxZyn.js → index.es341-CzpxUkrh.js} +1 -1
- package/dist/app/assets/{index.es333-DrlQlC9C.js → index.es355-Cw1hwz7b.js} +1 -1
- package/dist/app/assets/{index.es334-CrN25jeJ.js → index.es356-Lf8oNwCV.js} +1 -1
- package/dist/app/assets/{index.es335-BMF1iNAk.js → index.es357-BSyhsBZc.js} +1 -1
- package/dist/app/assets/{index.es337-DddOBpwk.js → index.es359-DlQPvmEf.js} +1 -1
- package/dist/app/assets/{index.es342-5MyjXhLR.js → index.es364-BdLXGlNW.js} +1 -1
- package/dist/app/assets/{index.es344-BpzCATdh.js → index.es366-CeOBTy3D.js} +1 -1
- package/dist/app/assets/{index.es345-CcT82qyg.js → index.es367-BTU6dC7H.js} +1 -1
- package/dist/app/assets/{index.es350-DT_CVHOb.js → index.es372-CAP3LJB5.js} +1 -1
- package/dist/app/assets/{index.es351-IRimHV8f.js → index.es373-Bn0SN4Qr.js} +1 -1
- package/dist/app/assets/{index.es353-e0DSyH1F.js → index.es375-DHsDDgUb.js} +1 -1
- package/dist/app/assets/{index.es354-DvXzIB3B.js → index.es376-DiakK4K7.js} +1 -1
- package/dist/app/assets/{index.es355-BpinPwMf.js → index.es377-BVmV6Pw5.js} +1 -1
- package/dist/app/assets/{index.es358-B2FwChKl.js → index.es380-DWVjI1nw.js} +1 -1
- package/dist/app/assets/{index.es360-B11Uptoy.js → index.es382-DZZkqdlU.js} +1 -1
- package/dist/app/assets/{index.es361-CqPSZKxw.js → index.es383-DrYUPMBY.js} +1 -1
- package/dist/app/assets/{index.es362-kID_QP2b.js → index.es384-O2h4x2O1.js} +1 -1
- package/dist/app/assets/{index.es368-DEU47Nmo.js → index.es390-CENsXSpU.js} +1 -1
- package/dist/app/assets/{index.es369-BAVwPVpH.js → index.es391-DGinr4O5.js} +1 -1
- package/dist/app/assets/{index.es370-CQSqpEY2.js → index.es392-B96aw5eg.js} +1 -1
- package/dist/app/assets/{index.es371-DSPIJ8l-.js → index.es393-BB41wM4d.js} +1 -1
- package/dist/app/assets/{index.es373-CTLjf8LZ.js → index.es395-CyeA1Xjk.js} +1 -1
- package/dist/app/assets/{index.es377-BFPElb8k.js → index.es399-Bsi68PlA.js} +1 -1
- package/dist/app/assets/{index.es378-Bi8-8y3Z.js → index.es400-BAaaKxaT.js} +1 -1
- package/dist/app/assets/{index.es386-BRbfYhrv.js → index.es408-Cox8sqBq.js} +1 -1
- package/dist/app/assets/{index.es389-SMY2M5Dd.js → index.es411-BIcB0nnx.js} +1 -1
- package/dist/app/assets/{index.es392-fGYxK-uk.js → index.es414-NSiQAL9E.js} +1 -1
- package/dist/app/assets/{index.es395--SrhnzjM.js → index.es417-CJHHUEgP.js} +1 -1
- package/dist/app/assets/{index.es399-BP5VLghY.js → index.es421-DlzZ1edh.js} +1 -1
- package/dist/app/assets/{index.es401-CopVMHFF.js → index.es423-Blu2B8df.js} +1 -1
- package/dist/app/assets/{index.es409-C0EaxmtL.js → index.es431-BcO6TXny.js} +1 -1
- package/dist/app/assets/{index.es410-B2INzLoQ.js → index.es432-DR7oVH16.js} +1 -1
- package/dist/app/assets/{index.es417-B6GOQZs3.js → index.es439-D-FInR6T.js} +1 -1
- package/dist/app/assets/{index.es418-Dt4O9kPw.js → index.es440-C8xLRtnr.js} +1 -1
- package/dist/app/assets/{index.es428-BGqtBs8m.js → index.es450-BWJL1ivC.js} +1 -1
- package/dist/app/assets/{index.es432-BzFuvoyF.js → index.es454-B4gLruiC.js} +1 -1
- package/dist/app/assets/{index.es438-DvNyQZ9B.js → index.es460-Dk4iQbdz.js} +1 -1
- package/dist/app/assets/{index.es443-DC0KqCTi.js → index.es465-DPM1K1vX.js} +1 -1
- package/dist/app/assets/{index.es444-CTooryRZ.js → index.es466-Cz5i94Jb.js} +1 -1
- package/dist/app/assets/{index.es446-DGMBZ3_7.js → index.es468-CEal6hHe.js} +1 -1
- package/dist/app/assets/{index.es450-BCWIDv3j.js → index.es472-Dn7NJgh3.js} +1 -1
- package/dist/app/assets/{index.es452-B8WGaHgy.js → index.es474-DmO_iZ7H.js} +1 -1
- package/dist/app/assets/{index.es454-Cp0AvzKu.js → index.es476-AEEjznls.js} +1 -1
- package/dist/app/assets/{index.es457-C87oaIOo.js → index.es479-CVK23V1l.js} +1 -1
- package/dist/app/assets/{index.es458-CBexwHfM.js → index.es480-Dg2zCIZf.js} +1 -1
- package/dist/app/assets/{index.es462-DGwyl90J.js → index.es484-B8fRb4PI.js} +1 -1
- package/dist/app/assets/{index.es464-Dzf6WDCJ.js → index.es486-DugRqL_s.js} +1 -1
- package/dist/app/assets/{index.es471-BOZxaHLN.js → index.es493-Cq9aUzhz.js} +1 -1
- package/dist/app/assets/{index.es473-C4VYB3vo.js → index.es495-DHLZUspl.js} +1 -1
- package/dist/app/assets/{index.es475-OnXMAP7q.js → index.es497-BvzzhJTZ.js} +1 -1
- package/dist/app/assets/{index.es479-H38Vf5YC.js → index.es501-BjGaL-C6.js} +1 -1
- package/dist/app/assets/{index.es489-Cm4BEHNL.js → index.es511-DRqxYg4O.js} +1 -1
- package/dist/app/assets/{index.es490-DtqPpdnf.js → index.es512-B0vqeVAK.js} +1 -1
- package/dist/app/assets/{index.es497-BvZ-y4_B.js → index.es519-3ouX9M5g.js} +1 -1
- package/dist/app/assets/{index.es498-DeJOiud8.js → index.es520-BWdPHKc-.js} +1 -1
- package/dist/app/assets/{index.es7-Lspe9b-6.js → index.es7-BnSyqMUG.js} +1 -1
- package/dist/app/assets/{index.modern-J74LOUay.js → index.modern-BNyuNLQP.js} +1 -1
- package/dist/app/assets/{index.umd-iTdVE6k1.js → index.umd-DjRNKlAu.js} +1 -1
- package/dist/app/assets/{listItemTextClasses-D0rI_qhy.js → listItemTextClasses-BZy8G2qL.js} +1 -1
- package/dist/app/index.html +1 -1
- package/dist/server.js +3477 -31
- package/package.json +2 -1
- package/src/service/connection.ts +89 -17
- package/src/service/db_utils.ts +61 -0
- package/src/service/model.ts +1 -0
- package/dist/app/assets/FormControlContext-Ccuzn_SP.js +0 -1
- /package/dist/app/assets/{index.es276-CG6Dc4jp.js → index.es298-CG6Dc4jp.js} +0 -0
- /package/dist/app/assets/{index.es284-DsBKuouk.js → index.es306-DsBKuouk.js} +0 -0
- /package/dist/app/assets/{index.es285-D_z4Izcz.js → index.es307-D_z4Izcz.js} +0 -0
- /package/dist/app/assets/{index.es286-727ZlQH0.js → index.es308-727ZlQH0.js} +0 -0
- /package/dist/app/assets/{index.es289-Dn00JSTd.js → index.es311-Dn00JSTd.js} +0 -0
- /package/dist/app/assets/{index.es290-COJ4H7py.js → index.es312-COJ4H7py.js} +0 -0
- /package/dist/app/assets/{index.es292-Bu5BbsvL.js → index.es314-Bu5BbsvL.js} +0 -0
- /package/dist/app/assets/{index.es293-7O62HKoU.js → index.es315-7O62HKoU.js} +0 -0
- /package/dist/app/assets/{index.es294-BPT9niGB.js → index.es316-BPT9niGB.js} +0 -0
- /package/dist/app/assets/{index.es295-Dhn9LcZ4.js → index.es317-Dhn9LcZ4.js} +0 -0
- /package/dist/app/assets/{index.es297-eg146-Ew.js → index.es319-eg146-Ew.js} +0 -0
- /package/dist/app/assets/{index.es298-Du268qiB.js → index.es320-Du268qiB.js} +0 -0
- /package/dist/app/assets/{index.es299-fje9CFhw.js → index.es321-fje9CFhw.js} +0 -0
- /package/dist/app/assets/{index.es300-BwXTMy5W.js → index.es322-BwXTMy5W.js} +0 -0
- /package/dist/app/assets/{index.es301-3xVqZejG.js → index.es323-3xVqZejG.js} +0 -0
- /package/dist/app/assets/{index.es302-xW4inM5L.js → index.es324-xW4inM5L.js} +0 -0
- /package/dist/app/assets/{index.es303-DHo0CJ0O.js → index.es325-DHo0CJ0O.js} +0 -0
- /package/dist/app/assets/{index.es306-C3t2pwGQ.js → index.es328-C3t2pwGQ.js} +0 -0
- /package/dist/app/assets/{index.es307-DNquZEk8.js → index.es329-DNquZEk8.js} +0 -0
- /package/dist/app/assets/{index.es309-BHOwM8T6.js → index.es331-BHOwM8T6.js} +0 -0
- /package/dist/app/assets/{index.es310-DxSadP1t.js → index.es332-DxSadP1t.js} +0 -0
- /package/dist/app/assets/{index.es311-DbXoA79R.js → index.es333-DbXoA79R.js} +0 -0
- /package/dist/app/assets/{index.es313-Bp6g37R7.js → index.es335-Bp6g37R7.js} +0 -0
- /package/dist/app/assets/{index.es314-sacFqUAJ.js → index.es336-sacFqUAJ.js} +0 -0
- /package/dist/app/assets/{index.es316-C7gG9l05.js → index.es338-C7gG9l05.js} +0 -0
- /package/dist/app/assets/{index.es317-Dsg_Bt_b.js → index.es339-Dsg_Bt_b.js} +0 -0
- /package/dist/app/assets/{index.es320-D9R-vmeu.js → index.es342-D9R-vmeu.js} +0 -0
- /package/dist/app/assets/{index.es321-BPhBrDlE.js → index.es343-BPhBrDlE.js} +0 -0
- /package/dist/app/assets/{index.es322-C-TU5hQ_.js → index.es344-C-TU5hQ_.js} +0 -0
- /package/dist/app/assets/{index.es323-DtFQj3wx.js → index.es345-DtFQj3wx.js} +0 -0
- /package/dist/app/assets/{index.es324-m2LEI-9-.js → index.es346-m2LEI-9-.js} +0 -0
- /package/dist/app/assets/{index.es325-BoXegm-a.js → index.es347-BoXegm-a.js} +0 -0
- /package/dist/app/assets/{index.es326-B9wLZaAG.js → index.es348-B9wLZaAG.js} +0 -0
- /package/dist/app/assets/{index.es327-ClGRhx96.js → index.es349-ClGRhx96.js} +0 -0
- /package/dist/app/assets/{index.es328-DEIpsLCJ.js → index.es350-DEIpsLCJ.js} +0 -0
- /package/dist/app/assets/{index.es329-BgYniUM_.js → index.es351-BgYniUM_.js} +0 -0
- /package/dist/app/assets/{index.es330-COcR7UxN.js → index.es352-COcR7UxN.js} +0 -0
- /package/dist/app/assets/{index.es331-BjQB5zDj.js → index.es353-BjQB5zDj.js} +0 -0
- /package/dist/app/assets/{index.es332-C-nORZOA.js → index.es354-C-nORZOA.js} +0 -0
- /package/dist/app/assets/{index.es336-BX77sIaO.js → index.es358-BX77sIaO.js} +0 -0
- /package/dist/app/assets/{index.es338-B-DoSBHF.js → index.es360-B-DoSBHF.js} +0 -0
- /package/dist/app/assets/{index.es339-bCA53EVm.js → index.es361-bCA53EVm.js} +0 -0
- /package/dist/app/assets/{index.es340-w-ucz2PV.js → index.es362-w-ucz2PV.js} +0 -0
- /package/dist/app/assets/{index.es341-Dayu4EKP.js → index.es363-Dayu4EKP.js} +0 -0
- /package/dist/app/assets/{index.es343-DKXYxT9g.js → index.es365-DKXYxT9g.js} +0 -0
- /package/dist/app/assets/{index.es346-DfxzS6Rs.js → index.es368-DfxzS6Rs.js} +0 -0
- /package/dist/app/assets/{index.es347-SKMF96pI.js → index.es369-SKMF96pI.js} +0 -0
- /package/dist/app/assets/{index.es348-ajMbGru0.js → index.es370-ajMbGru0.js} +0 -0
- /package/dist/app/assets/{index.es349--30QC5Em.js → index.es371--30QC5Em.js} +0 -0
- /package/dist/app/assets/{index.es352-B430Bg39.js → index.es374-B430Bg39.js} +0 -0
- /package/dist/app/assets/{index.es356-CM8KxXT1.js → index.es378-CM8KxXT1.js} +0 -0
- /package/dist/app/assets/{index.es357-B1SYOhNW.js → index.es379-B1SYOhNW.js} +0 -0
- /package/dist/app/assets/{index.es359-DkBy-JyN.js → index.es381-DkBy-JyN.js} +0 -0
- /package/dist/app/assets/{index.es363-BILxekzW.js → index.es385-BILxekzW.js} +0 -0
- /package/dist/app/assets/{index.es364-C5wWYbrZ.js → index.es386-C5wWYbrZ.js} +0 -0
- /package/dist/app/assets/{index.es365-HzYwdGDm.js → index.es387-HzYwdGDm.js} +0 -0
- /package/dist/app/assets/{index.es366-T-Tgc4AT.js → index.es388-T-Tgc4AT.js} +0 -0
- /package/dist/app/assets/{index.es367-ifBTmRxC.js → index.es389-ifBTmRxC.js} +0 -0
- /package/dist/app/assets/{index.es372-BMj5Y0dO.js → index.es394-BMj5Y0dO.js} +0 -0
- /package/dist/app/assets/{index.es374-BjABl1g7.js → index.es396-BjABl1g7.js} +0 -0
- /package/dist/app/assets/{index.es375-xI-RfyKK.js → index.es397-xI-RfyKK.js} +0 -0
- /package/dist/app/assets/{index.es376-ySlJ1b_l.js → index.es398-ySlJ1b_l.js} +0 -0
- /package/dist/app/assets/{index.es379-BQoSv7ci.js → index.es401-BQoSv7ci.js} +0 -0
- /package/dist/app/assets/{index.es380-w8dY5SsB.js → index.es402-w8dY5SsB.js} +0 -0
- /package/dist/app/assets/{index.es381-TU54ms6u.js → index.es403-TU54ms6u.js} +0 -0
- /package/dist/app/assets/{index.es382-DREVFZK8.js → index.es404-DREVFZK8.js} +0 -0
- /package/dist/app/assets/{index.es383-BfivnA6A.js → index.es405-BfivnA6A.js} +0 -0
- /package/dist/app/assets/{index.es384-P4WzXJd0.js → index.es406-P4WzXJd0.js} +0 -0
- /package/dist/app/assets/{index.es385-BAng5TT0.js → index.es407-BAng5TT0.js} +0 -0
- /package/dist/app/assets/{index.es387-B5lbUyaz.js → index.es409-B5lbUyaz.js} +0 -0
- /package/dist/app/assets/{index.es388-mebxcVVE.js → index.es410-mebxcVVE.js} +0 -0
- /package/dist/app/assets/{index.es390-XBlWyCtg.js → index.es412-XBlWyCtg.js} +0 -0
- /package/dist/app/assets/{index.es391-BfCpw3nA.js → index.es413-BfCpw3nA.js} +0 -0
- /package/dist/app/assets/{index.es393-Cc5clBb7.js → index.es415-Cc5clBb7.js} +0 -0
- /package/dist/app/assets/{index.es394-IuBKFhSY.js → index.es416-IuBKFhSY.js} +0 -0
- /package/dist/app/assets/{index.es396-Du5NY7AG.js → index.es418-Du5NY7AG.js} +0 -0
- /package/dist/app/assets/{index.es397-Bvotw-X0.js → index.es419-Bvotw-X0.js} +0 -0
- /package/dist/app/assets/{index.es398-UIAJJxZW.js → index.es420-UIAJJxZW.js} +0 -0
- /package/dist/app/assets/{index.es400-D9-PGadD.js → index.es422-D9-PGadD.js} +0 -0
- /package/dist/app/assets/{index.es402-sdHcTMYB.js → index.es424-sdHcTMYB.js} +0 -0
- /package/dist/app/assets/{index.es403-Ci6OQyBP.js → index.es425-Ci6OQyBP.js} +0 -0
- /package/dist/app/assets/{index.es404-BC5c_5Pe.js → index.es426-BC5c_5Pe.js} +0 -0
- /package/dist/app/assets/{index.es405-Tz6hzZYG.js → index.es427-Tz6hzZYG.js} +0 -0
- /package/dist/app/assets/{index.es406-DB_GagMm.js → index.es428-DB_GagMm.js} +0 -0
- /package/dist/app/assets/{index.es407-DLbgOhZU.js → index.es429-DLbgOhZU.js} +0 -0
- /package/dist/app/assets/{index.es408-B0XVJmRM.js → index.es430-B0XVJmRM.js} +0 -0
- /package/dist/app/assets/{index.es411-shcSOmrb.js → index.es433-shcSOmrb.js} +0 -0
- /package/dist/app/assets/{index.es412-D4Tzg5kh.js → index.es434-D4Tzg5kh.js} +0 -0
- /package/dist/app/assets/{index.es413-Deuh7S70.js → index.es435-Deuh7S70.js} +0 -0
- /package/dist/app/assets/{index.es414-BUEGK8hf.js → index.es436-BUEGK8hf.js} +0 -0
- /package/dist/app/assets/{index.es415-BNioltXt.js → index.es437-BNioltXt.js} +0 -0
- /package/dist/app/assets/{index.es416-JqZropPD.js → index.es438-JqZropPD.js} +0 -0
- /package/dist/app/assets/{index.es419-LKU2TuZ1.js → index.es441-LKU2TuZ1.js} +0 -0
- /package/dist/app/assets/{index.es420-BFLt1xDp.js → index.es442-BFLt1xDp.js} +0 -0
- /package/dist/app/assets/{index.es421-DKykz6zU.js → index.es443-DKykz6zU.js} +0 -0
- /package/dist/app/assets/{index.es422-B3ZDOciz.js → index.es444-B3ZDOciz.js} +0 -0
- /package/dist/app/assets/{index.es423-CSHBycmS.js → index.es445-CSHBycmS.js} +0 -0
- /package/dist/app/assets/{index.es424-BIEUsx6d.js → index.es446-BIEUsx6d.js} +0 -0
- /package/dist/app/assets/{index.es425-B48N-Iqd.js → index.es447-B48N-Iqd.js} +0 -0
- /package/dist/app/assets/{index.es426-BY-TUvya.js → index.es448-BY-TUvya.js} +0 -0
- /package/dist/app/assets/{index.es427-zocC4JxJ.js → index.es449-zocC4JxJ.js} +0 -0
- /package/dist/app/assets/{index.es429-Cza_XSSt.js → index.es451-Cza_XSSt.js} +0 -0
- /package/dist/app/assets/{index.es430-Bg-kzb6g.js → index.es452-Bg-kzb6g.js} +0 -0
- /package/dist/app/assets/{index.es431-DhUJRlN_.js → index.es453-DhUJRlN_.js} +0 -0
- /package/dist/app/assets/{index.es433-C8lEn-DE.js → index.es455-C8lEn-DE.js} +0 -0
- /package/dist/app/assets/{index.es434-DhMKtDLN.js → index.es456-DhMKtDLN.js} +0 -0
- /package/dist/app/assets/{index.es435-CwjWoCRV.js → index.es457-CwjWoCRV.js} +0 -0
- /package/dist/app/assets/{index.es436-CzouJOBO.js → index.es458-CzouJOBO.js} +0 -0
- /package/dist/app/assets/{index.es437-B1bQXN8T.js → index.es459-B1bQXN8T.js} +0 -0
- /package/dist/app/assets/{index.es439-5LuOXUq_.js → index.es461-5LuOXUq_.js} +0 -0
- /package/dist/app/assets/{index.es440-DWJ3fJO_.js → index.es462-DWJ3fJO_.js} +0 -0
- /package/dist/app/assets/{index.es441-DJlmqQ1C.js → index.es463-DJlmqQ1C.js} +0 -0
- /package/dist/app/assets/{index.es442-QhoSD0DR.js → index.es464-QhoSD0DR.js} +0 -0
- /package/dist/app/assets/{index.es445-Be6lgOlo.js → index.es467-Be6lgOlo.js} +0 -0
- /package/dist/app/assets/{index.es447-BJ4Li9vH.js → index.es469-BJ4Li9vH.js} +0 -0
- /package/dist/app/assets/{index.es448-DQVVAn-B.js → index.es470-DQVVAn-B.js} +0 -0
- /package/dist/app/assets/{index.es449-BJGe-b2p.js → index.es471-BJGe-b2p.js} +0 -0
- /package/dist/app/assets/{index.es451-BLhTXw86.js → index.es473-BLhTXw86.js} +0 -0
- /package/dist/app/assets/{index.es453-atvbtKCR.js → index.es475-atvbtKCR.js} +0 -0
- /package/dist/app/assets/{index.es455-DkLiglaE.js → index.es477-DkLiglaE.js} +0 -0
- /package/dist/app/assets/{index.es456-C1w2a3ep.js → index.es478-C1w2a3ep.js} +0 -0
- /package/dist/app/assets/{index.es459-Cf8iN4DR.js → index.es481-Cf8iN4DR.js} +0 -0
- /package/dist/app/assets/{index.es460-COK4E0Yg.js → index.es482-COK4E0Yg.js} +0 -0
- /package/dist/app/assets/{index.es461-BknIz3MU.js → index.es483-BknIz3MU.js} +0 -0
- /package/dist/app/assets/{index.es463-BeQkCIfX.js → index.es485-BeQkCIfX.js} +0 -0
- /package/dist/app/assets/{index.es465-BSxZ-RaX.js → index.es487-BSxZ-RaX.js} +0 -0
- /package/dist/app/assets/{index.es466-C7L56vO4.js → index.es488-C7L56vO4.js} +0 -0
- /package/dist/app/assets/{index.es467-CUnW07Te.js → index.es489-CUnW07Te.js} +0 -0
- /package/dist/app/assets/{index.es468-C1XDQQGZ.js → index.es490-C1XDQQGZ.js} +0 -0
- /package/dist/app/assets/{index.es469-CQjiPCtT.js → index.es491-CQjiPCtT.js} +0 -0
- /package/dist/app/assets/{index.es470-DQ1-QYvQ.js → index.es492-DQ1-QYvQ.js} +0 -0
- /package/dist/app/assets/{index.es472-BbSNqyBO.js → index.es494-BbSNqyBO.js} +0 -0
- /package/dist/app/assets/{index.es474-CB2ApiWb.js → index.es496-CB2ApiWb.js} +0 -0
- /package/dist/app/assets/{index.es476-B_m7g4N7.js → index.es498-B_m7g4N7.js} +0 -0
- /package/dist/app/assets/{index.es477-B6W0miNI.js → index.es499-B6W0miNI.js} +0 -0
- /package/dist/app/assets/{index.es478-BMR_PYu6.js → index.es500-BMR_PYu6.js} +0 -0
- /package/dist/app/assets/{index.es480-Dj6nwHGl.js → index.es502-Dj6nwHGl.js} +0 -0
- /package/dist/app/assets/{index.es481-BpWG_bgh.js → index.es503-BpWG_bgh.js} +0 -0
- /package/dist/app/assets/{index.es482-BVUVsWT6.js → index.es504-BVUVsWT6.js} +0 -0
- /package/dist/app/assets/{index.es483-CAQ2eGtk.js → index.es505-CAQ2eGtk.js} +0 -0
- /package/dist/app/assets/{index.es484-BFOHcciG.js → index.es506-BFOHcciG.js} +0 -0
- /package/dist/app/assets/{index.es485-CdO5JTpU.js → index.es507-CdO5JTpU.js} +0 -0
- /package/dist/app/assets/{index.es486-CJaU5se_.js → index.es508-CJaU5se_.js} +0 -0
- /package/dist/app/assets/{index.es487-DYoNaHQp.js → index.es509-DYoNaHQp.js} +0 -0
- /package/dist/app/assets/{index.es488-m4uW47V2.js → index.es510-m4uW47V2.js} +0 -0
- /package/dist/app/assets/{index.es491-nyqBNV6O.js → index.es513-nyqBNV6O.js} +0 -0
- /package/dist/app/assets/{index.es492-C6j12Q_x.js → index.es514-C6j12Q_x.js} +0 -0
- /package/dist/app/assets/{index.es493-7A4Fjokl.js → index.es515-7A4Fjokl.js} +0 -0
- /package/dist/app/assets/{index.es494-CB0Krxn9.js → index.es516-CB0Krxn9.js} +0 -0
- /package/dist/app/assets/{index.es495-DCE3LsBG.js → index.es517-DCE3LsBG.js} +0 -0
- /package/dist/app/assets/{index.es496-C3FkfJm5.js → index.es518-C3FkfJm5.js} +0 -0
- /package/dist/app/assets/{index.es499-CVw76BM1.js → index.es521-CVw76BM1.js} +0 -0
- /package/dist/app/assets/{index.es500-HnGAYVZD.js → index.es522-HnGAYVZD.js} +0 -0
- /package/dist/app/assets/{index.es501-BVz_zdnA.js → index.es523-BVz_zdnA.js} +0 -0
- /package/dist/app/assets/{index.es502-C3khCPGq.js → index.es524-C3khCPGq.js} +0 -0
- /package/dist/app/assets/{index.es503-D-2ljcwZ.js → index.es525-D-2ljcwZ.js} +0 -0
- /package/dist/app/assets/{index.es504-Cv9koXgw.js → index.es526-Cv9koXgw.js} +0 -0
- /package/dist/app/assets/{index.es505-CD_QflpE.js → index.es527-CD_QflpE.js} +0 -0
- /package/dist/app/assets/{index.es506-DRW-0cLl.js → index.es528-DRW-0cLl.js} +0 -0
- /package/dist/app/assets/{index.es507-C-_shW-Y.js → index.es529-C-_shW-Y.js} +0 -0
- /package/dist/app/assets/{index.es508-LGGdnPYs.js → index.es530-LGGdnPYs.js} +0 -0
- /package/dist/app/assets/{index.es509-C3mMm8J8.js → index.es531-C3mMm8J8.js} +0 -0
- /package/dist/app/assets/{index.es510-BzJJZx-M.js → index.es532-BzJJZx-M.js} +0 -0
- /package/dist/app/assets/{index.es511-BXkSAIEj.js → index.es533-BXkSAIEj.js} +0 -0
- /package/dist/app/assets/{index.es512-BgDCqdQA.js → index.es534-BgDCqdQA.js} +0 -0
- /package/dist/app/assets/{index.es513-C8M2exoo.js → index.es535-C8M2exoo.js} +0 -0
- /package/dist/app/assets/{index.es514-DHJKELXO.js → index.es536-DHJKELXO.js} +0 -0
- /package/dist/app/assets/{index.es515-Cuk6v7N8.js → index.es537-Cuk6v7N8.js} +0 -0
- /package/dist/app/assets/{index.es516-DH5Ifo-i.js → index.es538-DH5Ifo-i.js} +0 -0
- /package/dist/app/assets/{index.es517-E3gJ1_iC.js → index.es539-E3gJ1_iC.js} +0 -0
- /package/dist/app/assets/{index.es518-DAi9KRSo.js → index.es540-DAi9KRSo.js} +0 -0
- /package/dist/app/assets/{index.es519-D7oLnXFd.js → index.es541-D7oLnXFd.js} +0 -0
- /package/dist/app/assets/{index.es520-BfjtVDDH.js → index.es542-BfjtVDDH.js} +0 -0
- /package/dist/app/assets/{index.es521-DnULxvSX.js → index.es543-DnULxvSX.js} +0 -0
- /package/dist/app/assets/{index.es522-CkXjmgJE.js → index.es544-CkXjmgJE.js} +0 -0
- /package/dist/app/assets/{index.es523-CfQXZHmo.js → index.es545-CfQXZHmo.js} +0 -0
- /package/dist/app/assets/{index.es524-DWedfzmr.js → index.es546-DWedfzmr.js} +0 -0
- /package/dist/app/assets/{index.es525-DUszq2jm.js → index.es547-DUszq2jm.js} +0 -0
- /package/dist/app/assets/{index.es526-B7mTdjB0.js → index.es548-B7mTdjB0.js} +0 -0
- /package/dist/app/assets/{index.es527-D5KoaKCx.js → index.es549-D5KoaKCx.js} +0 -0
- /package/dist/app/assets/{index.es528-BfHTSMKl.js → index.es550-BfHTSMKl.js} +0 -0
- /package/dist/app/assets/{index.es529-B0m2ddpp.js → index.es551-B0m2ddpp.js} +0 -0
- /package/dist/app/assets/{index.es530-CyktbL80.js → index.es552-CyktbL80.js} +0 -0
- /package/dist/app/assets/{index.es531-Csfq5Kiy.js → index.es553-Csfq5Kiy.js} +0 -0
- /package/dist/app/assets/{index.es532-CafNBF8u.js → index.es554-CafNBF8u.js} +0 -0
- /package/dist/app/assets/{index.es533-CTRr51gU.js → index.es555-CTRr51gU.js} +0 -0
- /package/dist/app/assets/{index.es534-D4h5O-jR.js → index.es556-D4h5O-jR.js} +0 -0
- /package/dist/app/assets/{index.es535-C39BiMTA.js → index.es557-C39BiMTA.js} +0 -0
- /package/dist/app/assets/{index.es536-Ddv68eIx.js → index.es558-Ddv68eIx.js} +0 -0
- /package/dist/app/assets/{index.es537-GBQ2dnAY.js → index.es559-GBQ2dnAY.js} +0 -0
- /package/dist/app/assets/{index.es538-PoHY5YXO.js → index.es560-PoHY5YXO.js} +0 -0
- /package/dist/app/assets/{index.es539-3e1v2bzS.js → index.es561-3e1v2bzS.js} +0 -0
- /package/dist/app/assets/{index.es540-CS3Unz2-.js → index.es562-CS3Unz2-.js} +0 -0
- /package/dist/app/assets/{index.es541-bN70gL4F.js → index.es563-bN70gL4F.js} +0 -0
- /package/dist/app/assets/{index.es542-CmCqftbK.js → index.es564-CmCqftbK.js} +0 -0
- /package/dist/app/assets/{index.es543-Ds-gbosJ.js → index.es565-Ds-gbosJ.js} +0 -0
- /package/dist/app/assets/{index.es544-CjDtw9vr.js → index.es566-CjDtw9vr.js} +0 -0
- /package/dist/app/assets/{index.es545-BthQWCQV.js → index.es567-BthQWCQV.js} +0 -0
- /package/dist/app/assets/{index.es546-DqwNpetd.js → index.es568-DqwNpetd.js} +0 -0
- /package/dist/app/assets/{index.es547-Bw305WKR.js → index.es569-Bw305WKR.js} +0 -0
- /package/dist/app/assets/{index.es548-DXbdFlpD.js → index.es570-DXbdFlpD.js} +0 -0
- /package/dist/app/assets/{index.es549-L9t79GZl.js → index.es571-L9t79GZl.js} +0 -0
- /package/dist/app/assets/{index.es550-CbfX1IO0.js → index.es572-CbfX1IO0.js} +0 -0
- /package/dist/app/assets/{index.es551-DBQeEorK.js → index.es573-DBQeEorK.js} +0 -0
- /package/dist/app/assets/{index.es552-BEBZ7ncR.js → index.es574-BEBZ7ncR.js} +0 -0
- /package/dist/app/assets/{index.es553-Bkuqu6BP.js → index.es575-Bkuqu6BP.js} +0 -0
- /package/dist/app/assets/{index.es554-D0r3Knsf.js → index.es576-D0r3Knsf.js} +0 -0
- /package/dist/app/assets/{index.es555-CVO1_9PV.js → index.es577-CVO1_9PV.js} +0 -0
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@malloy-publisher/server",
|
|
3
3
|
"description": "Malloy Publisher Server",
|
|
4
|
-
"version": "0.0.
|
|
4
|
+
"version": "0.0.116",
|
|
5
5
|
"main": "dist/server.js",
|
|
6
6
|
"bin": {
|
|
7
7
|
"malloy-publisher": "dist/server.js"
|
|
@@ -54,6 +54,7 @@
|
|
|
54
54
|
"node-cron": "^3.0.3",
|
|
55
55
|
"recursive-readdir": "^2.2.3",
|
|
56
56
|
"simple-git": "^3.28.0",
|
|
57
|
+
"trino": "^1.1.1",
|
|
57
58
|
"uuid": "^11.0.3"
|
|
58
59
|
},
|
|
59
60
|
"devDependencies": {
|
|
@@ -50,6 +50,40 @@ export async function readConnectionConfig(
|
|
|
50
50
|
return convertConnectionsToApiConnections(connections);
|
|
51
51
|
}
|
|
52
52
|
|
|
53
|
+
function validateAndBuildTrinoConfig(
|
|
54
|
+
trinoConfig: components["schemas"]["TrinoConnection"],
|
|
55
|
+
) {
|
|
56
|
+
if (!trinoConfig.server?.includes(trinoConfig.port?.toString() || "")) {
|
|
57
|
+
trinoConfig.server = `${trinoConfig.server}:${trinoConfig.port}`;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
if (trinoConfig.server?.startsWith("http://")) {
|
|
61
|
+
return {
|
|
62
|
+
server: trinoConfig.server,
|
|
63
|
+
port: trinoConfig.port,
|
|
64
|
+
catalog: trinoConfig.catalog,
|
|
65
|
+
schema: trinoConfig.schema,
|
|
66
|
+
user: trinoConfig.user,
|
|
67
|
+
};
|
|
68
|
+
} else if (
|
|
69
|
+
trinoConfig.server?.startsWith("https://") &&
|
|
70
|
+
trinoConfig.password
|
|
71
|
+
) {
|
|
72
|
+
return {
|
|
73
|
+
server: trinoConfig.server,
|
|
74
|
+
port: trinoConfig.port,
|
|
75
|
+
catalog: trinoConfig.catalog,
|
|
76
|
+
schema: trinoConfig.schema,
|
|
77
|
+
user: trinoConfig.user,
|
|
78
|
+
password: trinoConfig.password,
|
|
79
|
+
};
|
|
80
|
+
} else {
|
|
81
|
+
throw new Error(
|
|
82
|
+
`Invalid Trino connection: expected "http://server:port" (no password) or "https://server:port" (with username and password).`,
|
|
83
|
+
);
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
|
|
53
87
|
export async function createConnections(
|
|
54
88
|
basePath: string,
|
|
55
89
|
defaultConnections: ApiConnection[] = [],
|
|
@@ -201,6 +235,7 @@ export async function createConnections(
|
|
|
201
235
|
warehouse: connection.snowflakeConnection.warehouse,
|
|
202
236
|
database: connection.snowflakeConnection.database,
|
|
203
237
|
schema: connection.snowflakeConnection.schema,
|
|
238
|
+
role: connection.snowflakeConnection.role,
|
|
204
239
|
timeout:
|
|
205
240
|
connection.snowflakeConnection.responseTimeoutMilliseconds,
|
|
206
241
|
},
|
|
@@ -219,14 +254,10 @@ export async function createConnections(
|
|
|
219
254
|
if (!connection.trinoConnection) {
|
|
220
255
|
throw new Error("Trino connection configuration is missing.");
|
|
221
256
|
}
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
schema: connection.trinoConnection.schema,
|
|
227
|
-
user: connection.trinoConnection.user,
|
|
228
|
-
password: connection.trinoConnection.password,
|
|
229
|
-
};
|
|
257
|
+
|
|
258
|
+
const trinoConnectionOptions = validateAndBuildTrinoConfig(
|
|
259
|
+
connection.trinoConnection,
|
|
260
|
+
);
|
|
230
261
|
const trinoConnection = new TrinoConnection(
|
|
231
262
|
connection.name,
|
|
232
263
|
{},
|
|
@@ -356,6 +387,7 @@ export async function testConnectionConfig(
|
|
|
356
387
|
warehouse: snowflakeConfig.warehouse,
|
|
357
388
|
database: snowflakeConfig.database,
|
|
358
389
|
schema: snowflakeConfig.schema,
|
|
390
|
+
role: snowflakeConfig.role,
|
|
359
391
|
timeout: snowflakeConfig.responseTimeoutMilliseconds,
|
|
360
392
|
},
|
|
361
393
|
};
|
|
@@ -460,18 +492,12 @@ export async function testConnectionConfig(
|
|
|
460
492
|
!trinoConfig.user
|
|
461
493
|
) {
|
|
462
494
|
throw new Error(
|
|
463
|
-
"Trino connection requires
|
|
495
|
+
"Trino connection requires server, port, catalog, schema, and user",
|
|
464
496
|
);
|
|
465
497
|
}
|
|
466
498
|
|
|
467
|
-
const trinoConnectionOptions =
|
|
468
|
-
|
|
469
|
-
port: trinoConfig.port,
|
|
470
|
-
catalog: trinoConfig.catalog,
|
|
471
|
-
schema: trinoConfig.schema,
|
|
472
|
-
user: trinoConfig.user,
|
|
473
|
-
password: trinoConfig.password,
|
|
474
|
-
};
|
|
499
|
+
const trinoConnectionOptions =
|
|
500
|
+
validateAndBuildTrinoConfig(trinoConfig);
|
|
475
501
|
const trinoConnection = new TrinoConnection(
|
|
476
502
|
"testConnection",
|
|
477
503
|
{},
|
|
@@ -495,6 +521,52 @@ export async function testConnectionConfig(
|
|
|
495
521
|
break;
|
|
496
522
|
}
|
|
497
523
|
|
|
524
|
+
case "mysql": {
|
|
525
|
+
if (!connectionConfig.mysqlConnection) {
|
|
526
|
+
throw new Error("MySQL connection configuration is missing.");
|
|
527
|
+
}
|
|
528
|
+
|
|
529
|
+
if (
|
|
530
|
+
!connectionConfig.mysqlConnection.host ||
|
|
531
|
+
!connectionConfig.mysqlConnection.port ||
|
|
532
|
+
!connectionConfig.mysqlConnection.user ||
|
|
533
|
+
!connectionConfig.mysqlConnection.password ||
|
|
534
|
+
!connectionConfig.mysqlConnection.database
|
|
535
|
+
) {
|
|
536
|
+
throw new Error(
|
|
537
|
+
"MySQL connection requires: host, port, user, password, and database",
|
|
538
|
+
);
|
|
539
|
+
}
|
|
540
|
+
|
|
541
|
+
const mysqlConfig = connectionConfig.mysqlConnection;
|
|
542
|
+
const mysqlConnectionOptions = {
|
|
543
|
+
host: mysqlConfig.host,
|
|
544
|
+
port: mysqlConfig.port,
|
|
545
|
+
user: mysqlConfig.user,
|
|
546
|
+
password: mysqlConfig.password,
|
|
547
|
+
database: mysqlConfig.database,
|
|
548
|
+
};
|
|
549
|
+
const mysqlConnection = new MySQLConnection(
|
|
550
|
+
"testConnection",
|
|
551
|
+
mysqlConnectionOptions,
|
|
552
|
+
);
|
|
553
|
+
try {
|
|
554
|
+
await mysqlConnection.test();
|
|
555
|
+
testResult = { status: "ok" };
|
|
556
|
+
} catch (error) {
|
|
557
|
+
if (error instanceof AxiosError) {
|
|
558
|
+
logAxiosError(error);
|
|
559
|
+
} else {
|
|
560
|
+
logger.error(error);
|
|
561
|
+
}
|
|
562
|
+
testResult = {
|
|
563
|
+
status: "failed",
|
|
564
|
+
errorMessage: (error as Error).message,
|
|
565
|
+
};
|
|
566
|
+
}
|
|
567
|
+
break;
|
|
568
|
+
}
|
|
569
|
+
|
|
498
570
|
default:
|
|
499
571
|
throw new BadRequestError(
|
|
500
572
|
`Unsupported connection type: ${connectionConfig.type}`,
|
package/src/service/db_utils.ts
CHANGED
|
@@ -13,8 +13,11 @@ import {
|
|
|
13
13
|
MysqlConnection,
|
|
14
14
|
PostgresConnection,
|
|
15
15
|
SnowflakeConnection,
|
|
16
|
+
TrinoConnection,
|
|
16
17
|
} from "./model";
|
|
17
18
|
|
|
19
|
+
import { BasicAuth, Trino } from "trino-client";
|
|
20
|
+
|
|
18
21
|
type ApiSchemaName = components["schemas"]["SchemaName"];
|
|
19
22
|
|
|
20
23
|
async function getPostgresConnection(
|
|
@@ -75,6 +78,7 @@ async function getSnowflakeConnection(
|
|
|
75
78
|
password: apiSnowflakeConnection.password,
|
|
76
79
|
database: apiSnowflakeConnection.database,
|
|
77
80
|
warehouse: apiSnowflakeConnection.warehouse || undefined,
|
|
81
|
+
role: apiSnowflakeConnection.role || undefined,
|
|
78
82
|
});
|
|
79
83
|
connection.connect((err, conn) => {
|
|
80
84
|
if (err) {
|
|
@@ -86,6 +90,24 @@ async function getSnowflakeConnection(
|
|
|
86
90
|
});
|
|
87
91
|
}
|
|
88
92
|
|
|
93
|
+
function getTrinoClient(trinoConn: TrinoConnection) {
|
|
94
|
+
let auth: BasicAuth;
|
|
95
|
+
if (trinoConn.server?.startsWith("https://")) {
|
|
96
|
+
// HTTPS allows password authentication
|
|
97
|
+
auth = new BasicAuth(trinoConn?.user || "", trinoConn?.password || "");
|
|
98
|
+
} else {
|
|
99
|
+
// HTTP only allows username, no password for security
|
|
100
|
+
auth = new BasicAuth(trinoConn?.user || "");
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
return Trino.create({
|
|
104
|
+
server: trinoConn.server,
|
|
105
|
+
catalog: trinoConn.catalog,
|
|
106
|
+
schema: trinoConn.schema,
|
|
107
|
+
auth,
|
|
108
|
+
});
|
|
109
|
+
}
|
|
110
|
+
|
|
89
111
|
export async function getSchemasForConnection(
|
|
90
112
|
connection: ApiConnection,
|
|
91
113
|
): Promise<ApiSchemaName[]> {
|
|
@@ -167,6 +189,27 @@ export async function getSchemasForConnection(
|
|
|
167
189
|
}
|
|
168
190
|
});
|
|
169
191
|
}
|
|
192
|
+
} else if (connection.type === "trino") {
|
|
193
|
+
if (!connection.trinoConnection) {
|
|
194
|
+
throw new Error("Trino connection is required");
|
|
195
|
+
}
|
|
196
|
+
const client = getTrinoClient(connection.trinoConnection);
|
|
197
|
+
const result = await client.query(
|
|
198
|
+
`SHOW SCHEMAS FROM ${connection.trinoConnection.catalog}`,
|
|
199
|
+
);
|
|
200
|
+
const rows: string[] = [];
|
|
201
|
+
let next = await result.next();
|
|
202
|
+
while (!next.done) {
|
|
203
|
+
if (next.value.data) {
|
|
204
|
+
rows.push(...next.value.data.map((r: string[]) => r[0]));
|
|
205
|
+
}
|
|
206
|
+
next = await result.next();
|
|
207
|
+
}
|
|
208
|
+
return rows.map((r) => ({
|
|
209
|
+
name: r,
|
|
210
|
+
isHidden: false,
|
|
211
|
+
isDefault: r === connection.trinoConnection?.schema,
|
|
212
|
+
}));
|
|
170
213
|
} else {
|
|
171
214
|
throw new Error(`Unsupported connection type: ${connection.type}`);
|
|
172
215
|
}
|
|
@@ -243,6 +286,24 @@ export async function getTablesForSchema(
|
|
|
243
286
|
}
|
|
244
287
|
});
|
|
245
288
|
}
|
|
289
|
+
} else if (connection.type === "trino") {
|
|
290
|
+
if (!connection.trinoConnection) {
|
|
291
|
+
throw new Error("Trino connection is required");
|
|
292
|
+
}
|
|
293
|
+
const client = getTrinoClient(connection.trinoConnection);
|
|
294
|
+
const result = await client.query(
|
|
295
|
+
`SHOW TABLES FROM ${connection.trinoConnection.catalog}.${schemaName}`,
|
|
296
|
+
);
|
|
297
|
+
|
|
298
|
+
const rows: string[] = [];
|
|
299
|
+
let next = await result.next();
|
|
300
|
+
while (!next.done) {
|
|
301
|
+
if (next.value.data) {
|
|
302
|
+
rows.push(...next.value.data.map((r: string[]) => r[0]));
|
|
303
|
+
}
|
|
304
|
+
next = await result.next();
|
|
305
|
+
}
|
|
306
|
+
return rows;
|
|
246
307
|
} else {
|
|
247
308
|
// TODO(jjs) - implement
|
|
248
309
|
return [];
|
package/src/service/model.ts
CHANGED
|
@@ -50,6 +50,7 @@ export type ApiConnection = components["schemas"]["Connection"];
|
|
|
50
50
|
export type SnowflakeConnection = components["schemas"]["SnowflakeConnection"];
|
|
51
51
|
export type PostgresConnection = components["schemas"]["PostgresConnection"];
|
|
52
52
|
export type BigqueryConnection = components["schemas"]["BigqueryConnection"];
|
|
53
|
+
export type TrinoConnection = components["schemas"]["TrinoConnection"];
|
|
53
54
|
|
|
54
55
|
const MALLOY_VERSION = malloyPackage.version;
|
|
55
56
|
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{r as o}from"./index-BS_9W4Tt.js";const r=o.createContext(void 0);export{r as F};
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|