@malloy-publisher/server 0.0.104 → 0.0.108

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.
Files changed (318) hide show
  1. package/dist/app/api-doc.yaml +133 -0
  2. package/dist/app/assets/Chip-DGhbYY0q.js +1 -0
  3. package/dist/app/assets/Container-B0KHzXKt.js +1 -0
  4. package/dist/app/assets/DialogTitle-DR48y6tE.js +1 -0
  5. package/dist/app/assets/Edit-DALFdGEc.js +1 -0
  6. package/dist/app/assets/FormControlContext-BRoFhJft.js +1 -0
  7. package/dist/app/assets/HomePage-D_nRraEL.js +3 -0
  8. package/dist/app/assets/MainPage-B4hVmqCL.js +1 -0
  9. package/dist/app/assets/MenuItem-_baoLhUG.js +1 -0
  10. package/dist/app/assets/Modal-BXBDnsg2.js +1 -0
  11. package/dist/app/assets/ModelPage-BKTJdSxS.js +2 -0
  12. package/dist/app/assets/MoreVert-CShGo3pe.js +1 -0
  13. package/dist/app/assets/PackagePage-z3SwXvJf.js +2 -0
  14. package/dist/app/assets/ProjectPage-jU6PqHcz.js +1 -0
  15. package/dist/app/assets/RouteError-xhztAFCv.js +1 -0
  16. package/dist/app/assets/WorkbookPage-BFAQAKC6.js +6 -0
  17. package/dist/app/assets/index-Bzmq4WOt.js +676 -0
  18. package/dist/app/assets/index-DIS-Myin.js +420 -0
  19. package/dist/app/assets/{index-CvbMKVwx.js → index-DoB7q17I.js} +7 -7
  20. package/dist/app/assets/index.es20-BPDKJ1mC.js +1 -0
  21. package/dist/app/assets/index.es23-CGcuw-pl.js +2 -0
  22. package/dist/app/assets/{index.es249-vQhhZ2LX.js → index.es297-CXXkvqrk.js} +1 -1
  23. package/dist/app/assets/{index.es250-CksNcviw.js → index.es298-Clb9Gx4p.js} +1 -1
  24. package/dist/app/assets/{index.es253-DEUN5ecV.js → index.es301-CvjmNg6I.js} +1 -1
  25. package/dist/app/assets/{index.es258-CBBAlEzL.js → index.es306-BTbwrAfY.js} +1 -1
  26. package/dist/app/assets/{index.es266-CtlTbXND.js → index.es314-i9HKymPG.js} +1 -1
  27. package/dist/app/assets/{index.es267-DvsB_mYL.js → index.es315-ffN5HvPT.js} +1 -1
  28. package/dist/app/assets/{index.es270-Cf0xo1Jt.js → index.es318-Dt5n7rl7.js} +1 -1
  29. package/dist/app/assets/{index.es274-B3p031dD.js → index.es322-DarpkShG.js} +1 -1
  30. package/dist/app/assets/{index.es277-CXhkNvQA.js → index.es325-DGXcHkJW.js} +1 -1
  31. package/dist/app/assets/{index.es280-CQqCEkit.js → index.es328-OrbxFN0T.js} +1 -1
  32. package/dist/app/assets/{index.es281-CQ39VpuA.js → index.es329-DOg4tLZf.js} +1 -1
  33. package/dist/app/assets/{index.es295-CsysVRym.js → index.es343-B3c-LWee.js} +1 -1
  34. package/dist/app/assets/{index.es296-C8jPQ3Rr.js → index.es344-BzlM_qzj.js} +1 -1
  35. package/dist/app/assets/{index.es297-6_Wr58nd.js → index.es345-Bx5jaaik.js} +1 -1
  36. package/dist/app/assets/{index.es299-DZRKfkIp.js → index.es347-D4l698Ba.js} +1 -1
  37. package/dist/app/assets/{index.es304-C22MomE6.js → index.es352-CpzIN4Ck.js} +1 -1
  38. package/dist/app/assets/{index.es306-CikFelEc.js → index.es354-BzQZ7qJD.js} +1 -1
  39. package/dist/app/assets/{index.es307-DDdo8Cr7.js → index.es355-DX--h2FO.js} +1 -1
  40. package/dist/app/assets/{index.es312-7wk1sW9I.js → index.es360-Brs4IhQL.js} +1 -1
  41. package/dist/app/assets/{index.es313-DjB156D0.js → index.es361-C_jQQEMZ.js} +1 -1
  42. package/dist/app/assets/{index.es315-CECan3M6.js → index.es363-BZd8QWNz.js} +1 -1
  43. package/dist/app/assets/{index.es316-BpzAZiXB.js → index.es364-5Y8szdnr.js} +1 -1
  44. package/dist/app/assets/{index.es317-B7DYWrJm.js → index.es365-iXnPxtgs.js} +1 -1
  45. package/dist/app/assets/{index.es320-CIh8KUcG.js → index.es368-BBVgx6aX.js} +1 -1
  46. package/dist/app/assets/{index.es322-Cfczm2Bl.js → index.es370-ClbIH95T.js} +1 -1
  47. package/dist/app/assets/{index.es323-CjaPjt8z.js → index.es371-DmqxEYIc.js} +1 -1
  48. package/dist/app/assets/{index.es324-DM8bgB31.js → index.es372-Bot_-48c.js} +1 -1
  49. package/dist/app/assets/{index.es330-CgQ5IRSZ.js → index.es378-B9aRQ00Z.js} +1 -1
  50. package/dist/app/assets/{index.es331-1Kn64e9h.js → index.es379-DQAEtWxw.js} +1 -1
  51. package/dist/app/assets/{index.es332-C5S6SaRd.js → index.es380-BBp8E5gV.js} +1 -1
  52. package/dist/app/assets/{index.es333-DRNI3y8C.js → index.es381-Cl0nVZsB.js} +1 -1
  53. package/dist/app/assets/{index.es335-Bky6ujZj.js → index.es383-BMW5Mbfn.js} +1 -1
  54. package/dist/app/assets/{index.es339-BlKzDsx7.js → index.es387-Cqwn90T2.js} +1 -1
  55. package/dist/app/assets/{index.es340-CV2drMme.js → index.es388-BGLiezvQ.js} +1 -1
  56. package/dist/app/assets/{index.es348-RwB794xL.js → index.es396-Dnto5_1_.js} +1 -1
  57. package/dist/app/assets/{index.es351-DxXG49oC.js → index.es399-oYyQuMIn.js} +1 -1
  58. package/dist/app/assets/{index.es354-CblwWSRe.js → index.es402-C7bOCmc3.js} +1 -1
  59. package/dist/app/assets/{index.es357-zGM2IebW.js → index.es405-CgiLlAXi.js} +1 -1
  60. package/dist/app/assets/{index.es361-CGhlwrAl.js → index.es409-CTqIYL8X.js} +1 -1
  61. package/dist/app/assets/{index.es363-BMG8Qu1P.js → index.es411-DCscG5n_.js} +1 -1
  62. package/dist/app/assets/{index.es371-DOrO3dlY.js → index.es419-D8w4xXW-.js} +1 -1
  63. package/dist/app/assets/{index.es372-C3qt3nbG.js → index.es420-CoY4mPyG.js} +1 -1
  64. package/dist/app/assets/{index.es379-ozNxe-JA.js → index.es427-DPgNELR1.js} +1 -1
  65. package/dist/app/assets/{index.es380-D-1e6bJP.js → index.es428-CKGg3G7e.js} +1 -1
  66. package/dist/app/assets/{index.es390-JWq4SvhU.js → index.es438-DLZwD0On.js} +1 -1
  67. package/dist/app/assets/{index.es394-BqfF9xAw.js → index.es442-CeFC_3kB.js} +1 -1
  68. package/dist/app/assets/{index.es400-DFk1u2rb.js → index.es448-Bkdic4-K.js} +1 -1
  69. package/dist/app/assets/{index.es405-B44zXQ2s.js → index.es453-BTUy9umd.js} +1 -1
  70. package/dist/app/assets/{index.es406-DtZqlgbp.js → index.es454-B-wtdVwd.js} +1 -1
  71. package/dist/app/assets/{index.es408-CMnKExjm.js → index.es456-DMl0frQV.js} +1 -1
  72. package/dist/app/assets/{index.es412-BUhztRl-.js → index.es460-BCFWaHpj.js} +1 -1
  73. package/dist/app/assets/{index.es414-BTSAIgvA.js → index.es462-CMWboMtJ.js} +1 -1
  74. package/dist/app/assets/{index.es416-hhTkRuCJ.js → index.es464-3Yi-DUIC.js} +1 -1
  75. package/dist/app/assets/{index.es419-DThbt6Ye.js → index.es467-Bhyygz2G.js} +1 -1
  76. package/dist/app/assets/{index.es420-BJwAPUTz.js → index.es468-HCYOhbfy.js} +1 -1
  77. package/dist/app/assets/{index.es424-C0rPM_VP.js → index.es472-BGdt37JU.js} +1 -1
  78. package/dist/app/assets/{index.es426-RDpd2VRz.js → index.es474-Cvsrw_ol.js} +1 -1
  79. package/dist/app/assets/{index.es433-BhZ0-KPw.js → index.es481-CQK61FBO.js} +1 -1
  80. package/dist/app/assets/{index.es435-DZeQaCUO.js → index.es483-_fCFzllD.js} +1 -1
  81. package/dist/app/assets/{index.es437-B9GL_sFZ.js → index.es485-onmvNF-0.js} +1 -1
  82. package/dist/app/assets/{index.es441-CTE1R4Hu.js → index.es489-7PLT4DLq.js} +1 -1
  83. package/dist/app/assets/{index.es451-kJsmP3kY.js → index.es499-C0JWr_xK.js} +1 -1
  84. package/dist/app/assets/{index.es452-B31qAn1V.js → index.es500-D41F9-Tw.js} +1 -1
  85. package/dist/app/assets/{index.es459-CC57CidG.js → index.es507-DKp0nulG.js} +1 -1
  86. package/dist/app/assets/{index.es460-Cid_wmHI.js → index.es508-ilzXBvKZ.js} +1 -1
  87. package/dist/app/assets/index.es7-C8O8lseo.js +1 -0
  88. package/dist/app/assets/index.modern-Da9HWSay.js +17 -0
  89. package/dist/app/assets/{index.umd-DknWdzGi.js → index.umd-BJAbIV_-.js} +61 -61
  90. package/dist/app/assets/listItemTextClasses-DhilXbg6.js +1 -0
  91. package/dist/app/index.html +1 -3
  92. package/dist/server.js +1840 -6281
  93. package/eslint.config.mjs +16 -3
  94. package/package.json +81 -81
  95. package/publisher.config.json +32 -25
  96. package/src/config.ts +61 -1
  97. package/src/constants.ts +0 -1
  98. package/src/controller/connection.controller.ts +2 -2
  99. package/src/server.ts +73 -13
  100. package/src/service/connection.ts +25 -15
  101. package/src/service/package.spec.ts +67 -22
  102. package/src/service/package.ts +14 -2
  103. package/src/service/project.ts +13 -31
  104. package/src/service/project_store.spec.ts +30 -53
  105. package/src/service/project_store.ts +100 -68
  106. package/dist/app/assets/index-6Jnc0Dwt.js +0 -240
  107. package/dist/app/assets/index-SM0qJxoC.js +0 -676
  108. package/dist/app/assets/index.es24-Cn4yPrhQ.js +0 -2
  109. package/dist/app/assets/mui-BL9dYvR2.js +0 -159
  110. package/dist/app/assets/vendor-c5ypKtDW.js +0 -17
  111. /package/dist/app/assets/{index.es238-CG6Dc4jp.js → index.es286-CG6Dc4jp.js} +0 -0
  112. /package/dist/app/assets/{index.es246-DsBKuouk.js → index.es294-DsBKuouk.js} +0 -0
  113. /package/dist/app/assets/{index.es247-D_z4Izcz.js → index.es295-D_z4Izcz.js} +0 -0
  114. /package/dist/app/assets/{index.es248-727ZlQH0.js → index.es296-727ZlQH0.js} +0 -0
  115. /package/dist/app/assets/{index.es251-Dn00JSTd.js → index.es299-Dn00JSTd.js} +0 -0
  116. /package/dist/app/assets/{index.es252-COJ4H7py.js → index.es300-COJ4H7py.js} +0 -0
  117. /package/dist/app/assets/{index.es254-Bu5BbsvL.js → index.es302-Bu5BbsvL.js} +0 -0
  118. /package/dist/app/assets/{index.es255-7O62HKoU.js → index.es303-7O62HKoU.js} +0 -0
  119. /package/dist/app/assets/{index.es256-BPT9niGB.js → index.es304-BPT9niGB.js} +0 -0
  120. /package/dist/app/assets/{index.es257-Dhn9LcZ4.js → index.es305-Dhn9LcZ4.js} +0 -0
  121. /package/dist/app/assets/{index.es259-eg146-Ew.js → index.es307-eg146-Ew.js} +0 -0
  122. /package/dist/app/assets/{index.es260-Du268qiB.js → index.es308-Du268qiB.js} +0 -0
  123. /package/dist/app/assets/{index.es261-fje9CFhw.js → index.es309-fje9CFhw.js} +0 -0
  124. /package/dist/app/assets/{index.es262-BwXTMy5W.js → index.es310-BwXTMy5W.js} +0 -0
  125. /package/dist/app/assets/{index.es263-3xVqZejG.js → index.es311-3xVqZejG.js} +0 -0
  126. /package/dist/app/assets/{index.es264-xW4inM5L.js → index.es312-xW4inM5L.js} +0 -0
  127. /package/dist/app/assets/{index.es265-DHo0CJ0O.js → index.es313-DHo0CJ0O.js} +0 -0
  128. /package/dist/app/assets/{index.es268-C3t2pwGQ.js → index.es316-C3t2pwGQ.js} +0 -0
  129. /package/dist/app/assets/{index.es269-DNquZEk8.js → index.es317-DNquZEk8.js} +0 -0
  130. /package/dist/app/assets/{index.es271-BHOwM8T6.js → index.es319-BHOwM8T6.js} +0 -0
  131. /package/dist/app/assets/{index.es272-DxSadP1t.js → index.es320-DxSadP1t.js} +0 -0
  132. /package/dist/app/assets/{index.es273-DbXoA79R.js → index.es321-DbXoA79R.js} +0 -0
  133. /package/dist/app/assets/{index.es275-Bp6g37R7.js → index.es323-Bp6g37R7.js} +0 -0
  134. /package/dist/app/assets/{index.es276-sacFqUAJ.js → index.es324-sacFqUAJ.js} +0 -0
  135. /package/dist/app/assets/{index.es278-C7gG9l05.js → index.es326-C7gG9l05.js} +0 -0
  136. /package/dist/app/assets/{index.es279-Dsg_Bt_b.js → index.es327-Dsg_Bt_b.js} +0 -0
  137. /package/dist/app/assets/{index.es282-D9R-vmeu.js → index.es330-D9R-vmeu.js} +0 -0
  138. /package/dist/app/assets/{index.es283-BPhBrDlE.js → index.es331-BPhBrDlE.js} +0 -0
  139. /package/dist/app/assets/{index.es284-C-TU5hQ_.js → index.es332-C-TU5hQ_.js} +0 -0
  140. /package/dist/app/assets/{index.es285-DtFQj3wx.js → index.es333-DtFQj3wx.js} +0 -0
  141. /package/dist/app/assets/{index.es286-m2LEI-9-.js → index.es334-m2LEI-9-.js} +0 -0
  142. /package/dist/app/assets/{index.es287-BoXegm-a.js → index.es335-BoXegm-a.js} +0 -0
  143. /package/dist/app/assets/{index.es288-B9wLZaAG.js → index.es336-B9wLZaAG.js} +0 -0
  144. /package/dist/app/assets/{index.es289-ClGRhx96.js → index.es337-ClGRhx96.js} +0 -0
  145. /package/dist/app/assets/{index.es290-DEIpsLCJ.js → index.es338-DEIpsLCJ.js} +0 -0
  146. /package/dist/app/assets/{index.es291-BgYniUM_.js → index.es339-BgYniUM_.js} +0 -0
  147. /package/dist/app/assets/{index.es292-COcR7UxN.js → index.es340-COcR7UxN.js} +0 -0
  148. /package/dist/app/assets/{index.es293-BjQB5zDj.js → index.es341-BjQB5zDj.js} +0 -0
  149. /package/dist/app/assets/{index.es294-C-nORZOA.js → index.es342-C-nORZOA.js} +0 -0
  150. /package/dist/app/assets/{index.es298-BX77sIaO.js → index.es346-BX77sIaO.js} +0 -0
  151. /package/dist/app/assets/{index.es300-B-DoSBHF.js → index.es348-B-DoSBHF.js} +0 -0
  152. /package/dist/app/assets/{index.es301-bCA53EVm.js → index.es349-bCA53EVm.js} +0 -0
  153. /package/dist/app/assets/{index.es302-w-ucz2PV.js → index.es350-w-ucz2PV.js} +0 -0
  154. /package/dist/app/assets/{index.es303-Dayu4EKP.js → index.es351-Dayu4EKP.js} +0 -0
  155. /package/dist/app/assets/{index.es305-DKXYxT9g.js → index.es353-DKXYxT9g.js} +0 -0
  156. /package/dist/app/assets/{index.es308-DfxzS6Rs.js → index.es356-DfxzS6Rs.js} +0 -0
  157. /package/dist/app/assets/{index.es309-SKMF96pI.js → index.es357-SKMF96pI.js} +0 -0
  158. /package/dist/app/assets/{index.es310-ajMbGru0.js → index.es358-ajMbGru0.js} +0 -0
  159. /package/dist/app/assets/{index.es311--30QC5Em.js → index.es359--30QC5Em.js} +0 -0
  160. /package/dist/app/assets/{index.es314-B430Bg39.js → index.es362-B430Bg39.js} +0 -0
  161. /package/dist/app/assets/{index.es318-CM8KxXT1.js → index.es366-CM8KxXT1.js} +0 -0
  162. /package/dist/app/assets/{index.es319-B1SYOhNW.js → index.es367-B1SYOhNW.js} +0 -0
  163. /package/dist/app/assets/{index.es321-DkBy-JyN.js → index.es369-DkBy-JyN.js} +0 -0
  164. /package/dist/app/assets/{index.es325-BILxekzW.js → index.es373-BILxekzW.js} +0 -0
  165. /package/dist/app/assets/{index.es326-C5wWYbrZ.js → index.es374-C5wWYbrZ.js} +0 -0
  166. /package/dist/app/assets/{index.es327-HzYwdGDm.js → index.es375-HzYwdGDm.js} +0 -0
  167. /package/dist/app/assets/{index.es328-T-Tgc4AT.js → index.es376-T-Tgc4AT.js} +0 -0
  168. /package/dist/app/assets/{index.es329-ifBTmRxC.js → index.es377-ifBTmRxC.js} +0 -0
  169. /package/dist/app/assets/{index.es334-BMj5Y0dO.js → index.es382-BMj5Y0dO.js} +0 -0
  170. /package/dist/app/assets/{index.es336-BjABl1g7.js → index.es384-BjABl1g7.js} +0 -0
  171. /package/dist/app/assets/{index.es337-xI-RfyKK.js → index.es385-xI-RfyKK.js} +0 -0
  172. /package/dist/app/assets/{index.es338-ySlJ1b_l.js → index.es386-ySlJ1b_l.js} +0 -0
  173. /package/dist/app/assets/{index.es341-BQoSv7ci.js → index.es389-BQoSv7ci.js} +0 -0
  174. /package/dist/app/assets/{index.es342-w8dY5SsB.js → index.es390-w8dY5SsB.js} +0 -0
  175. /package/dist/app/assets/{index.es343-TU54ms6u.js → index.es391-TU54ms6u.js} +0 -0
  176. /package/dist/app/assets/{index.es344-DREVFZK8.js → index.es392-DREVFZK8.js} +0 -0
  177. /package/dist/app/assets/{index.es345-BfivnA6A.js → index.es393-BfivnA6A.js} +0 -0
  178. /package/dist/app/assets/{index.es346-P4WzXJd0.js → index.es394-P4WzXJd0.js} +0 -0
  179. /package/dist/app/assets/{index.es347-BAng5TT0.js → index.es395-BAng5TT0.js} +0 -0
  180. /package/dist/app/assets/{index.es349-B5lbUyaz.js → index.es397-B5lbUyaz.js} +0 -0
  181. /package/dist/app/assets/{index.es350-mebxcVVE.js → index.es398-mebxcVVE.js} +0 -0
  182. /package/dist/app/assets/{index.es352-XBlWyCtg.js → index.es400-XBlWyCtg.js} +0 -0
  183. /package/dist/app/assets/{index.es353-BfCpw3nA.js → index.es401-BfCpw3nA.js} +0 -0
  184. /package/dist/app/assets/{index.es355-Cc5clBb7.js → index.es403-Cc5clBb7.js} +0 -0
  185. /package/dist/app/assets/{index.es356-IuBKFhSY.js → index.es404-IuBKFhSY.js} +0 -0
  186. /package/dist/app/assets/{index.es358-Du5NY7AG.js → index.es406-Du5NY7AG.js} +0 -0
  187. /package/dist/app/assets/{index.es359-Bvotw-X0.js → index.es407-Bvotw-X0.js} +0 -0
  188. /package/dist/app/assets/{index.es360-UIAJJxZW.js → index.es408-UIAJJxZW.js} +0 -0
  189. /package/dist/app/assets/{index.es362-D9-PGadD.js → index.es410-D9-PGadD.js} +0 -0
  190. /package/dist/app/assets/{index.es364-sdHcTMYB.js → index.es412-sdHcTMYB.js} +0 -0
  191. /package/dist/app/assets/{index.es365-Ci6OQyBP.js → index.es413-Ci6OQyBP.js} +0 -0
  192. /package/dist/app/assets/{index.es366-BC5c_5Pe.js → index.es414-BC5c_5Pe.js} +0 -0
  193. /package/dist/app/assets/{index.es367-Tz6hzZYG.js → index.es415-Tz6hzZYG.js} +0 -0
  194. /package/dist/app/assets/{index.es368-DB_GagMm.js → index.es416-DB_GagMm.js} +0 -0
  195. /package/dist/app/assets/{index.es369-DLbgOhZU.js → index.es417-DLbgOhZU.js} +0 -0
  196. /package/dist/app/assets/{index.es370-B0XVJmRM.js → index.es418-B0XVJmRM.js} +0 -0
  197. /package/dist/app/assets/{index.es373-shcSOmrb.js → index.es421-shcSOmrb.js} +0 -0
  198. /package/dist/app/assets/{index.es374-D4Tzg5kh.js → index.es422-D4Tzg5kh.js} +0 -0
  199. /package/dist/app/assets/{index.es375-Deuh7S70.js → index.es423-Deuh7S70.js} +0 -0
  200. /package/dist/app/assets/{index.es376-BUEGK8hf.js → index.es424-BUEGK8hf.js} +0 -0
  201. /package/dist/app/assets/{index.es377-BNioltXt.js → index.es425-BNioltXt.js} +0 -0
  202. /package/dist/app/assets/{index.es378-JqZropPD.js → index.es426-JqZropPD.js} +0 -0
  203. /package/dist/app/assets/{index.es381-LKU2TuZ1.js → index.es429-LKU2TuZ1.js} +0 -0
  204. /package/dist/app/assets/{index.es382-BFLt1xDp.js → index.es430-BFLt1xDp.js} +0 -0
  205. /package/dist/app/assets/{index.es383-DKykz6zU.js → index.es431-DKykz6zU.js} +0 -0
  206. /package/dist/app/assets/{index.es384-B3ZDOciz.js → index.es432-B3ZDOciz.js} +0 -0
  207. /package/dist/app/assets/{index.es385-CSHBycmS.js → index.es433-CSHBycmS.js} +0 -0
  208. /package/dist/app/assets/{index.es386-BIEUsx6d.js → index.es434-BIEUsx6d.js} +0 -0
  209. /package/dist/app/assets/{index.es387-B48N-Iqd.js → index.es435-B48N-Iqd.js} +0 -0
  210. /package/dist/app/assets/{index.es388-BY-TUvya.js → index.es436-BY-TUvya.js} +0 -0
  211. /package/dist/app/assets/{index.es389-zocC4JxJ.js → index.es437-zocC4JxJ.js} +0 -0
  212. /package/dist/app/assets/{index.es391-Cza_XSSt.js → index.es439-Cza_XSSt.js} +0 -0
  213. /package/dist/app/assets/{index.es392-Bg-kzb6g.js → index.es440-Bg-kzb6g.js} +0 -0
  214. /package/dist/app/assets/{index.es393-DhUJRlN_.js → index.es441-DhUJRlN_.js} +0 -0
  215. /package/dist/app/assets/{index.es395-C8lEn-DE.js → index.es443-C8lEn-DE.js} +0 -0
  216. /package/dist/app/assets/{index.es396-DhMKtDLN.js → index.es444-DhMKtDLN.js} +0 -0
  217. /package/dist/app/assets/{index.es397-CwjWoCRV.js → index.es445-CwjWoCRV.js} +0 -0
  218. /package/dist/app/assets/{index.es398-CzouJOBO.js → index.es446-CzouJOBO.js} +0 -0
  219. /package/dist/app/assets/{index.es399-B1bQXN8T.js → index.es447-B1bQXN8T.js} +0 -0
  220. /package/dist/app/assets/{index.es401-5LuOXUq_.js → index.es449-5LuOXUq_.js} +0 -0
  221. /package/dist/app/assets/{index.es402-DWJ3fJO_.js → index.es450-DWJ3fJO_.js} +0 -0
  222. /package/dist/app/assets/{index.es403-DJlmqQ1C.js → index.es451-DJlmqQ1C.js} +0 -0
  223. /package/dist/app/assets/{index.es404-QhoSD0DR.js → index.es452-QhoSD0DR.js} +0 -0
  224. /package/dist/app/assets/{index.es407-Be6lgOlo.js → index.es455-Be6lgOlo.js} +0 -0
  225. /package/dist/app/assets/{index.es409-BJ4Li9vH.js → index.es457-BJ4Li9vH.js} +0 -0
  226. /package/dist/app/assets/{index.es410-DQVVAn-B.js → index.es458-DQVVAn-B.js} +0 -0
  227. /package/dist/app/assets/{index.es411-BJGe-b2p.js → index.es459-BJGe-b2p.js} +0 -0
  228. /package/dist/app/assets/{index.es413-BLhTXw86.js → index.es461-BLhTXw86.js} +0 -0
  229. /package/dist/app/assets/{index.es415-atvbtKCR.js → index.es463-atvbtKCR.js} +0 -0
  230. /package/dist/app/assets/{index.es417-DkLiglaE.js → index.es465-DkLiglaE.js} +0 -0
  231. /package/dist/app/assets/{index.es418-C1w2a3ep.js → index.es466-C1w2a3ep.js} +0 -0
  232. /package/dist/app/assets/{index.es421-Cf8iN4DR.js → index.es469-Cf8iN4DR.js} +0 -0
  233. /package/dist/app/assets/{index.es422-COK4E0Yg.js → index.es470-COK4E0Yg.js} +0 -0
  234. /package/dist/app/assets/{index.es423-BknIz3MU.js → index.es471-BknIz3MU.js} +0 -0
  235. /package/dist/app/assets/{index.es425-BeQkCIfX.js → index.es473-BeQkCIfX.js} +0 -0
  236. /package/dist/app/assets/{index.es427-BSxZ-RaX.js → index.es475-BSxZ-RaX.js} +0 -0
  237. /package/dist/app/assets/{index.es428-C7L56vO4.js → index.es476-C7L56vO4.js} +0 -0
  238. /package/dist/app/assets/{index.es429-CUnW07Te.js → index.es477-CUnW07Te.js} +0 -0
  239. /package/dist/app/assets/{index.es430-C1XDQQGZ.js → index.es478-C1XDQQGZ.js} +0 -0
  240. /package/dist/app/assets/{index.es431-CQjiPCtT.js → index.es479-CQjiPCtT.js} +0 -0
  241. /package/dist/app/assets/{index.es432-DQ1-QYvQ.js → index.es480-DQ1-QYvQ.js} +0 -0
  242. /package/dist/app/assets/{index.es434-BbSNqyBO.js → index.es482-BbSNqyBO.js} +0 -0
  243. /package/dist/app/assets/{index.es436-CB2ApiWb.js → index.es484-CB2ApiWb.js} +0 -0
  244. /package/dist/app/assets/{index.es438-B_m7g4N7.js → index.es486-B_m7g4N7.js} +0 -0
  245. /package/dist/app/assets/{index.es439-B6W0miNI.js → index.es487-B6W0miNI.js} +0 -0
  246. /package/dist/app/assets/{index.es440-BMR_PYu6.js → index.es488-BMR_PYu6.js} +0 -0
  247. /package/dist/app/assets/{index.es442-Dj6nwHGl.js → index.es490-Dj6nwHGl.js} +0 -0
  248. /package/dist/app/assets/{index.es443-BpWG_bgh.js → index.es491-BpWG_bgh.js} +0 -0
  249. /package/dist/app/assets/{index.es444-BVUVsWT6.js → index.es492-BVUVsWT6.js} +0 -0
  250. /package/dist/app/assets/{index.es445-CAQ2eGtk.js → index.es493-CAQ2eGtk.js} +0 -0
  251. /package/dist/app/assets/{index.es446-BFOHcciG.js → index.es494-BFOHcciG.js} +0 -0
  252. /package/dist/app/assets/{index.es447-CdO5JTpU.js → index.es495-CdO5JTpU.js} +0 -0
  253. /package/dist/app/assets/{index.es448-CJaU5se_.js → index.es496-CJaU5se_.js} +0 -0
  254. /package/dist/app/assets/{index.es449-DYoNaHQp.js → index.es497-DYoNaHQp.js} +0 -0
  255. /package/dist/app/assets/{index.es450-m4uW47V2.js → index.es498-m4uW47V2.js} +0 -0
  256. /package/dist/app/assets/{index.es453-nyqBNV6O.js → index.es501-nyqBNV6O.js} +0 -0
  257. /package/dist/app/assets/{index.es454-C6j12Q_x.js → index.es502-C6j12Q_x.js} +0 -0
  258. /package/dist/app/assets/{index.es455-7A4Fjokl.js → index.es503-7A4Fjokl.js} +0 -0
  259. /package/dist/app/assets/{index.es456-CB0Krxn9.js → index.es504-CB0Krxn9.js} +0 -0
  260. /package/dist/app/assets/{index.es457-DCE3LsBG.js → index.es505-DCE3LsBG.js} +0 -0
  261. /package/dist/app/assets/{index.es458-C3FkfJm5.js → index.es506-C3FkfJm5.js} +0 -0
  262. /package/dist/app/assets/{index.es461-CVw76BM1.js → index.es509-CVw76BM1.js} +0 -0
  263. /package/dist/app/assets/{index.es462-HnGAYVZD.js → index.es510-HnGAYVZD.js} +0 -0
  264. /package/dist/app/assets/{index.es463-BVz_zdnA.js → index.es511-BVz_zdnA.js} +0 -0
  265. /package/dist/app/assets/{index.es464-C3khCPGq.js → index.es512-C3khCPGq.js} +0 -0
  266. /package/dist/app/assets/{index.es465-D-2ljcwZ.js → index.es513-D-2ljcwZ.js} +0 -0
  267. /package/dist/app/assets/{index.es466-Cv9koXgw.js → index.es514-Cv9koXgw.js} +0 -0
  268. /package/dist/app/assets/{index.es467-CD_QflpE.js → index.es515-CD_QflpE.js} +0 -0
  269. /package/dist/app/assets/{index.es468-DRW-0cLl.js → index.es516-DRW-0cLl.js} +0 -0
  270. /package/dist/app/assets/{index.es469-C-_shW-Y.js → index.es517-C-_shW-Y.js} +0 -0
  271. /package/dist/app/assets/{index.es470-LGGdnPYs.js → index.es518-LGGdnPYs.js} +0 -0
  272. /package/dist/app/assets/{index.es471-C3mMm8J8.js → index.es519-C3mMm8J8.js} +0 -0
  273. /package/dist/app/assets/{index.es472-BzJJZx-M.js → index.es520-BzJJZx-M.js} +0 -0
  274. /package/dist/app/assets/{index.es473-BXkSAIEj.js → index.es521-BXkSAIEj.js} +0 -0
  275. /package/dist/app/assets/{index.es474-BgDCqdQA.js → index.es522-BgDCqdQA.js} +0 -0
  276. /package/dist/app/assets/{index.es475-C8M2exoo.js → index.es523-C8M2exoo.js} +0 -0
  277. /package/dist/app/assets/{index.es476-DHJKELXO.js → index.es524-DHJKELXO.js} +0 -0
  278. /package/dist/app/assets/{index.es477-Cuk6v7N8.js → index.es525-Cuk6v7N8.js} +0 -0
  279. /package/dist/app/assets/{index.es478-DH5Ifo-i.js → index.es526-DH5Ifo-i.js} +0 -0
  280. /package/dist/app/assets/{index.es479-E3gJ1_iC.js → index.es527-E3gJ1_iC.js} +0 -0
  281. /package/dist/app/assets/{index.es480-DAi9KRSo.js → index.es528-DAi9KRSo.js} +0 -0
  282. /package/dist/app/assets/{index.es481-D7oLnXFd.js → index.es529-D7oLnXFd.js} +0 -0
  283. /package/dist/app/assets/{index.es482-BfjtVDDH.js → index.es530-BfjtVDDH.js} +0 -0
  284. /package/dist/app/assets/{index.es483-DnULxvSX.js → index.es531-DnULxvSX.js} +0 -0
  285. /package/dist/app/assets/{index.es484-CkXjmgJE.js → index.es532-CkXjmgJE.js} +0 -0
  286. /package/dist/app/assets/{index.es485-CfQXZHmo.js → index.es533-CfQXZHmo.js} +0 -0
  287. /package/dist/app/assets/{index.es486-DWedfzmr.js → index.es534-DWedfzmr.js} +0 -0
  288. /package/dist/app/assets/{index.es487-DUszq2jm.js → index.es535-DUszq2jm.js} +0 -0
  289. /package/dist/app/assets/{index.es488-B7mTdjB0.js → index.es536-B7mTdjB0.js} +0 -0
  290. /package/dist/app/assets/{index.es489-D5KoaKCx.js → index.es537-D5KoaKCx.js} +0 -0
  291. /package/dist/app/assets/{index.es490-BfHTSMKl.js → index.es538-BfHTSMKl.js} +0 -0
  292. /package/dist/app/assets/{index.es491-B0m2ddpp.js → index.es539-B0m2ddpp.js} +0 -0
  293. /package/dist/app/assets/{index.es492-CyktbL80.js → index.es540-CyktbL80.js} +0 -0
  294. /package/dist/app/assets/{index.es493-Csfq5Kiy.js → index.es541-Csfq5Kiy.js} +0 -0
  295. /package/dist/app/assets/{index.es494-CafNBF8u.js → index.es542-CafNBF8u.js} +0 -0
  296. /package/dist/app/assets/{index.es495-CTRr51gU.js → index.es543-CTRr51gU.js} +0 -0
  297. /package/dist/app/assets/{index.es496-D4h5O-jR.js → index.es544-D4h5O-jR.js} +0 -0
  298. /package/dist/app/assets/{index.es497-C39BiMTA.js → index.es545-C39BiMTA.js} +0 -0
  299. /package/dist/app/assets/{index.es498-Ddv68eIx.js → index.es546-Ddv68eIx.js} +0 -0
  300. /package/dist/app/assets/{index.es499-GBQ2dnAY.js → index.es547-GBQ2dnAY.js} +0 -0
  301. /package/dist/app/assets/{index.es500-PoHY5YXO.js → index.es548-PoHY5YXO.js} +0 -0
  302. /package/dist/app/assets/{index.es501-3e1v2bzS.js → index.es549-3e1v2bzS.js} +0 -0
  303. /package/dist/app/assets/{index.es502-CS3Unz2-.js → index.es550-CS3Unz2-.js} +0 -0
  304. /package/dist/app/assets/{index.es503-bN70gL4F.js → index.es551-bN70gL4F.js} +0 -0
  305. /package/dist/app/assets/{index.es504-CmCqftbK.js → index.es552-CmCqftbK.js} +0 -0
  306. /package/dist/app/assets/{index.es505-Ds-gbosJ.js → index.es553-Ds-gbosJ.js} +0 -0
  307. /package/dist/app/assets/{index.es506-CjDtw9vr.js → index.es554-CjDtw9vr.js} +0 -0
  308. /package/dist/app/assets/{index.es507-BthQWCQV.js → index.es555-BthQWCQV.js} +0 -0
  309. /package/dist/app/assets/{index.es508-DqwNpetd.js → index.es556-DqwNpetd.js} +0 -0
  310. /package/dist/app/assets/{index.es509-Bw305WKR.js → index.es557-Bw305WKR.js} +0 -0
  311. /package/dist/app/assets/{index.es510-DXbdFlpD.js → index.es558-DXbdFlpD.js} +0 -0
  312. /package/dist/app/assets/{index.es511-L9t79GZl.js → index.es559-L9t79GZl.js} +0 -0
  313. /package/dist/app/assets/{index.es512-CbfX1IO0.js → index.es560-CbfX1IO0.js} +0 -0
  314. /package/dist/app/assets/{index.es513-DBQeEorK.js → index.es561-DBQeEorK.js} +0 -0
  315. /package/dist/app/assets/{index.es514-BEBZ7ncR.js → index.es562-BEBZ7ncR.js} +0 -0
  316. /package/dist/app/assets/{index.es515-Bkuqu6BP.js → index.es563-Bkuqu6BP.js} +0 -0
  317. /package/dist/app/assets/{index.es516-D0r3Knsf.js → index.es564-D0r3Knsf.js} +0 -0
  318. /package/dist/app/assets/{index.es517-CVO1_9PV.js → index.es565-CVO1_9PV.js} +0 -0
package/eslint.config.mjs CHANGED
@@ -1,11 +1,11 @@
1
1
  import { fixupConfigRules, fixupPluginRules } from "@eslint/compat";
2
+ import { FlatCompat } from "@eslint/eslintrc";
3
+ import js from "@eslint/js";
2
4
  import typescriptEslint from "@typescript-eslint/eslint-plugin";
3
- import globals from "globals";
4
5
  import tsParser from "@typescript-eslint/parser";
6
+ import globals from "globals";
5
7
  import path from "node:path";
6
8
  import { fileURLToPath } from "node:url";
7
- import js from "@eslint/js";
8
- import { FlatCompat } from "@eslint/eslintrc";
9
9
 
10
10
  const __filename = fileURLToPath(import.meta.url);
11
11
  const __dirname = path.dirname(__filename);
@@ -16,6 +16,19 @@ const compat = new FlatCompat({
16
16
  });
17
17
 
18
18
  export default [
19
+ {
20
+ ignores: [
21
+ "**/node_modules/**",
22
+ "**/dist/**",
23
+ "**/build/**",
24
+ "**/.DS_Store",
25
+ "**/__pycache__/**",
26
+ "**/*.py[cod]",
27
+ "**/*.egg-info/**",
28
+ "**/.env",
29
+ "**/*.log",
30
+ ],
31
+ },
19
32
  ...fixupConfigRules(
20
33
  compat.extends(
21
34
  "eslint:recommended",
package/package.json CHANGED
@@ -1,83 +1,83 @@
1
1
  {
2
- "name": "@malloy-publisher/server",
3
- "description": "Malloy Publisher Server",
4
- "version": "0.0.104",
5
- "main": "dist/server.js",
6
- "bin": {
7
- "malloy-publisher": "dist/server.js"
8
- },
9
- "publishConfig": {
10
- "access": "public"
11
- },
12
- "scripts": {
13
- "test": "bun test --timeout 100000",
14
- "build": "bun generate-api-types && bun build:app && NODE_ENV=production bun run build.ts",
15
- "build:server-only": "bun generate-api-types && NODE_ENV=production bun run build.ts",
16
- "start": "NODE_ENV=production node ./dist/server.js",
17
- "start:dev": "NODE_ENV=development bun --watch src/server.ts",
18
- "start:instrumented": "node --require ./dist/instrumentation.js ./dist/server.js",
19
- "lint": "bunx eslint \"./src/**/*.ts\"",
20
- "format": "bunx prettier --write '**/*.{ts,tsx}'",
21
- "build:app": "cd ../app && NODE_ENV=production bunx vite build",
22
- "generate-api-types": "bunx openapi-typescript ../../api-doc.yaml --output src/api.ts"
23
- },
24
- "dependencies": {
25
- "@google-cloud/storage": "^7.16.0",
26
- "@malloydata/db-bigquery": "^0.0.307",
27
- "@malloydata/db-duckdb": "^0.0.307",
28
- "@malloydata/db-mysql": "^0.0.307",
29
- "@malloydata/db-postgres": "^0.0.307",
30
- "@malloydata/db-snowflake": "^0.0.307",
31
- "@malloydata/db-trino": "^0.0.307",
32
- "@malloydata/malloy": "^0.0.307",
33
- "@malloydata/malloy-sql": "^0.0.307",
34
- "@malloydata/render": "^0.0.307",
35
- "@modelcontextprotocol/sdk": "^1.13.2",
36
- "@opentelemetry/api": "^1.9.0",
37
- "@opentelemetry/auto-instrumentations-node": "^0.57.0",
38
- "@opentelemetry/sdk-metrics": "^2.0.0",
39
- "@opentelemetry/sdk-node": "^0.200.0",
40
- "@opentelemetry/sdk-trace-node": "^2.0.0",
41
- "adm-zip": "^0.5.16",
42
- "async-mutex": "^0.5.0",
43
- "aws-sdk": "^2.1692.0",
44
- "body-parser": "^1.20.2",
45
- "chokidar": "^4.0.3",
46
- "class-transformer": "^0.5.1",
47
- "class-validator": "^0.14.1",
48
- "cors": "^2.8.5",
49
- "express": "^4.21.0",
50
- "globals": "^15.9.0",
51
- "handlebars": "^4.7.8",
52
- "http-proxy-middleware": "^3.0.5",
53
- "morgan": "^1.10.0",
54
- "node-cron": "^3.0.3",
55
- "recursive-readdir": "^2.2.3",
56
- "simple-git": "^3.28.0",
57
- "uuid": "^11.0.3"
58
- },
59
- "devDependencies": {
60
- "@anthropic-ai/dxt": "^0.1.0",
61
- "@eslint/compat": "^1.2.7",
62
- "@eslint/eslintrc": "^3.3.1",
63
- "@eslint/js": "^9.23.0",
64
- "@faker-js/faker": "^9.4.0",
65
- "@types/adm-zip": "^0.5.7",
66
- "@types/bun": "^1.2.20",
67
- "@types/cors": "^2.8.12",
68
- "@types/express": "^4.17.14",
69
- "@types/morgan": "^1.9.9",
70
- "@types/node-cron": "^3.0.11",
71
- "@types/recursive-readdir": "^2.2.4",
72
- "@types/sinon": "^17.0.4",
73
- "@types/supertest": "^6.0.2",
74
- "@typescript-eslint/eslint-plugin": "^8.6.0",
75
- "@typescript-eslint/parser": "^8.6.0",
76
- "eslint-config-prettier": "^9.1.0",
77
- "eslint-plugin-prettier": "^5.2.1",
78
- "mock-aws-s3": "^4.0.2",
79
- "nock": "^14.0.1",
80
- "openapi-typescript": "^6.7.6",
81
- "supertest": "^7.0.0"
82
- }
2
+ "name": "@malloy-publisher/server",
3
+ "description": "Malloy Publisher Server",
4
+ "version": "0.0.108",
5
+ "main": "dist/server.js",
6
+ "bin": {
7
+ "malloy-publisher": "dist/server.js"
8
+ },
9
+ "publishConfig": {
10
+ "access": "public"
11
+ },
12
+ "scripts": {
13
+ "test": "bun test --timeout 100000",
14
+ "build": "bun generate-api-types && bun build:app && NODE_ENV=production bun run build.ts",
15
+ "build:server-only": "bun generate-api-types && NODE_ENV=production bun run build.ts",
16
+ "start": "NODE_ENV=production node ./dist/server.js",
17
+ "start:dev": "NODE_ENV=development bun --watch src/server.ts",
18
+ "start:instrumented": "node --require ./dist/instrumentation.js ./dist/server.js",
19
+ "lint": "bunx eslint \"./src/**/*.ts\"",
20
+ "format": "bunx prettier --write '**/*.{ts,tsx}'",
21
+ "build:app": "cd ../app && NODE_ENV=production bunx vite build",
22
+ "generate-api-types": "bunx openapi-typescript ../../api-doc.yaml --output src/api.ts"
23
+ },
24
+ "dependencies": {
25
+ "@google-cloud/storage": "^7.16.0",
26
+ "@malloydata/db-bigquery": "^0.0.310",
27
+ "@malloydata/db-duckdb": "^0.0.310",
28
+ "@malloydata/db-mysql": "^0.0.310",
29
+ "@malloydata/db-postgres": "^0.0.310",
30
+ "@malloydata/db-snowflake": "^0.0.310",
31
+ "@malloydata/db-trino": "^0.0.310",
32
+ "@malloydata/malloy": "^0.0.310",
33
+ "@malloydata/malloy-sql": "^0.0.310",
34
+ "@malloydata/render": "^0.0.310",
35
+ "@modelcontextprotocol/sdk": "^1.13.2",
36
+ "@opentelemetry/api": "^1.9.0",
37
+ "@opentelemetry/auto-instrumentations-node": "^0.57.0",
38
+ "@opentelemetry/sdk-metrics": "^2.0.0",
39
+ "@opentelemetry/sdk-node": "^0.200.0",
40
+ "@opentelemetry/sdk-trace-node": "^2.0.0",
41
+ "adm-zip": "^0.5.16",
42
+ "async-mutex": "^0.5.0",
43
+ "aws-sdk": "^2.1692.0",
44
+ "body-parser": "^1.20.2",
45
+ "chokidar": "^4.0.3",
46
+ "class-transformer": "^0.5.1",
47
+ "class-validator": "^0.14.1",
48
+ "cors": "^2.8.5",
49
+ "express": "^4.21.0",
50
+ "globals": "^15.9.0",
51
+ "handlebars": "^4.7.8",
52
+ "http-proxy-middleware": "^3.0.5",
53
+ "morgan": "^1.10.0",
54
+ "node-cron": "^3.0.3",
55
+ "recursive-readdir": "^2.2.3",
56
+ "simple-git": "^3.28.0",
57
+ "uuid": "^11.0.3"
58
+ },
59
+ "devDependencies": {
60
+ "@anthropic-ai/dxt": "^0.1.0",
61
+ "@eslint/compat": "^1.2.7",
62
+ "@eslint/eslintrc": "^3.3.1",
63
+ "@eslint/js": "^9.23.0",
64
+ "@faker-js/faker": "^9.4.0",
65
+ "@types/adm-zip": "^0.5.7",
66
+ "@types/bun": "^1.2.20",
67
+ "@types/cors": "^2.8.12",
68
+ "@types/express": "^4.17.14",
69
+ "@types/morgan": "^1.9.9",
70
+ "@types/node-cron": "^3.0.11",
71
+ "@types/recursive-readdir": "^2.2.4",
72
+ "@types/sinon": "^17.0.4",
73
+ "@types/supertest": "^6.0.2",
74
+ "@typescript-eslint/eslint-plugin": "^8.6.0",
75
+ "@typescript-eslint/parser": "^8.6.0",
76
+ "eslint-config-prettier": "^9.1.0",
77
+ "eslint-plugin-prettier": "^5.2.1",
78
+ "mock-aws-s3": "^4.0.2",
79
+ "nock": "^14.0.1",
80
+ "openapi-typescript": "^6.7.6",
81
+ "supertest": "^7.0.0"
82
+ }
83
83
  }
@@ -1,26 +1,33 @@
1
1
  {
2
- "frozenConfig": false,
3
- "projects": [
4
- {
5
- "name": "malloy-samples",
6
- "packages": [
7
- {
8
- "name": "ecommerce",
9
- "location": "https://github.com/credibledata/malloy-samples"
10
- },
11
- {
12
- "name": "imdb",
13
- "location": "https://github.com/credibledata/malloy-samples"
14
- },
15
- {
16
- "name": "faa",
17
- "location": "https://github.com/credibledata/malloy-samples"
18
- },
19
- {
20
- "name": "bigquery-hackernews",
21
- "location": "https://github.com/credibledata/malloy-samples"
22
- }
23
- ]
24
- }
25
- ]
26
- }
2
+ "frozenConfig": false,
3
+ "projects": [
4
+ {
5
+ "name": "malloy-samples",
6
+ "packages": [
7
+ {
8
+ "name": "ecommerce",
9
+ "location": "https://github.com/credibledata/malloy-samples/tree/main/ecommerce"
10
+ },
11
+ {
12
+ "name": "imdb",
13
+ "location": "https://github.com/credibledata/malloy-samples/tree/main/imdb"
14
+ },
15
+ {
16
+ "name": "faa",
17
+ "location": "https://github.com/credibledata/malloy-samples/tree/main/faa"
18
+ },
19
+ {
20
+ "name": "bigquery-hackernews",
21
+ "location": "https://github.com/credibledata/malloy-samples/tree/main/bigquery-hackernews"
22
+ }
23
+ ],
24
+ "connections": [
25
+ {
26
+ "name": "bigquery",
27
+ "type": "bigquery",
28
+ "bigqueryConnection": {}
29
+ }
30
+ ]
31
+ }
32
+ ]
33
+ }
package/src/config.ts CHANGED
@@ -1,18 +1,26 @@
1
1
  import fs from "fs";
2
2
  import path from "path";
3
- import { PUBLISHER_CONFIG_NAME } from "./constants";
3
+ import { PUBLISHER_CONFIG_NAME, API_PREFIX } from "./constants";
4
+ import { components } from "./api";
4
5
 
5
6
  type FilesystemPath = `./${string}` | `../${string}` | `/${string}`;
6
7
  type GcsPath = `gs://${string}`;
8
+ type ApiConnection = components["schemas"]["Connection"];
7
9
 
8
10
  export type Package = {
9
11
  name: string;
10
12
  location: FilesystemPath | GcsPath;
11
13
  };
12
14
 
15
+ export type Connection = {
16
+ name: string;
17
+ type: string;
18
+ };
19
+
13
20
  export type Project = {
14
21
  name: string;
15
22
  packages: Package[];
23
+ connections?: Connection[];
16
24
  };
17
25
 
18
26
  export type PublisherConfig = {
@@ -20,6 +28,17 @@ export type PublisherConfig = {
20
28
  projects: Project[];
21
29
  };
22
30
 
31
+ export type ProcessedProject = {
32
+ name: string;
33
+ packages: Package[];
34
+ connections: ApiConnection[];
35
+ };
36
+
37
+ export type ProcessedPublisherConfig = {
38
+ frozenConfig: boolean;
39
+ projects: ProcessedProject[];
40
+ };
41
+
23
42
  export const getPublisherConfig = (serverRoot: string): PublisherConfig => {
24
43
  const publisherConfigPath = path.join(serverRoot, PUBLISHER_CONFIG_NAME);
25
44
  if (!fs.existsSync(publisherConfigPath)) {
@@ -47,3 +66,44 @@ export const isPublisherConfigFrozen = (serverRoot: string) => {
47
66
  const publisherConfig = getPublisherConfig(serverRoot);
48
67
  return Boolean(publisherConfig.frozenConfig);
49
68
  };
69
+
70
+ export const getConnectionsFromPublisherConfig = (
71
+ serverRoot: string,
72
+ projectName: string,
73
+ ): Connection[] => {
74
+ const publisherConfig = getPublisherConfig(serverRoot);
75
+ const project = publisherConfig.projects.find((p) => p.name === projectName);
76
+ return project?.connections || [];
77
+ };
78
+
79
+ export const convertConnectionsToApiConnections = (
80
+ connections: Connection[],
81
+ ): ApiConnection[] => {
82
+ return connections.map((conn) => ({
83
+ ...conn,
84
+ name: conn.name,
85
+ type: conn.type as
86
+ | "postgres"
87
+ | "bigquery"
88
+ | "snowflake"
89
+ | "trino"
90
+ | "mysql",
91
+ resource: `${API_PREFIX}/connections/${conn.name}`,
92
+ }));
93
+ };
94
+
95
+ export const getProcessedPublisherConfig = (
96
+ serverRoot: string,
97
+ ): ProcessedPublisherConfig => {
98
+ const rawConfig = getPublisherConfig(serverRoot);
99
+ return {
100
+ frozenConfig: rawConfig.frozenConfig,
101
+ projects: rawConfig.projects.map((project) => ({
102
+ name: project.name,
103
+ packages: project.packages,
104
+ connections: convertConnectionsToApiConnections(
105
+ project.connections || [],
106
+ ),
107
+ })),
108
+ };
109
+ };
package/src/constants.ts CHANGED
@@ -5,7 +5,6 @@ export const API_PREFIX = "/api/v0";
5
5
  export const README_NAME = "README.md";
6
6
  export const PUBLISHER_CONFIG_NAME = "publisher.config.json";
7
7
  export const PACKAGE_MANIFEST_NAME = "publisher.json";
8
- export const CONNECTIONS_MANIFEST_NAME = "publisher.connections.json";
9
8
  export const MODEL_FILE_SUFFIX = ".malloy";
10
9
  export const NOTEBOOK_FILE_SUFFIX = ".malloynb";
11
10
  export const ROW_LIMIT = 1000;
@@ -46,7 +46,7 @@ export class ConnectionController {
46
46
  connectionName: string,
47
47
  ): Promise<ApiSchemaName[]> {
48
48
  const project = await this.projectStore.getProject(projectName, false);
49
- const connection = project.getInternalConnection(connectionName);
49
+ const connection = project.getApiConnection(connectionName);
50
50
  return getSchemasForConnection(connection);
51
51
  }
52
52
 
@@ -57,7 +57,7 @@ export class ConnectionController {
57
57
  schemaName: string,
58
58
  ): Promise<string[]> {
59
59
  const project = await this.projectStore.getProject(projectName, false);
60
- const connection = project.getInternalConnection(connectionName);
60
+ const connection = project.getApiConnection(connectionName);
61
61
  return getTablesForSchema(connection, schemaName);
62
62
  }
63
63
 
package/src/server.ts CHANGED
@@ -3,7 +3,6 @@ import * as bodyParser from "body-parser";
3
3
  import cors from "cors";
4
4
  import express from "express";
5
5
  import * as http from "http";
6
- import { createProxyMiddleware } from "http-proxy-middleware";
7
6
  import { AddressInfo } from "net";
8
7
  import * as path from "path";
9
8
  import { ConnectionController } from "./controller/connection.controller";
@@ -81,7 +80,6 @@ const isDevelopment = process.env["NODE_ENV"] === "development";
81
80
 
82
81
  const app = express();
83
82
  app.use(loggerMiddleware);
84
- app.use(cors());
85
83
 
86
84
  const projectStore = new ProjectStore(SERVER_ROOT);
87
85
  const watchModeController = new WatchModeController(projectStore);
@@ -186,16 +184,6 @@ if (!isDevelopment) {
186
184
  // In development mode, proxy requests to React dev server
187
185
  // Handle API routes first
188
186
  app.use(`${API_PREFIX}`, loggerMiddleware);
189
-
190
- // Proxy everything else to Vite
191
- app.use(
192
- createProxyMiddleware({
193
- target: "http://localhost:5173",
194
- changeOrigin: true,
195
- ws: true,
196
- pathFilter: (path) => !path.startsWith("/api/"),
197
- }),
198
- );
199
187
  }
200
188
 
201
189
  const setVersionIdError = (res: express.Response) => {
@@ -205,7 +193,12 @@ const setVersionIdError = (res: express.Response) => {
205
193
  res.status(status).json(json);
206
194
  };
207
195
 
208
- app.use(cors());
196
+ app.use(
197
+ cors({
198
+ origin: "http://localhost:5173",
199
+ credentials: true,
200
+ }),
201
+ );
209
202
  app.use(bodyParser.json());
210
203
 
211
204
  app.get(`${API_PREFIX}/status`, async (_req, res) => {
@@ -378,6 +371,9 @@ app.get(
378
371
  },
379
372
  );
380
373
 
374
+ /**
375
+ * @deprecated Use /projects/:projectName/connections/:connectionName/sqlSource POST method instead
376
+ */
381
377
  app.get(
382
378
  `${API_PREFIX}/projects/:projectName/connections/:connectionName/sqlSource`,
383
379
  async (req, res) => {
@@ -397,6 +393,25 @@ app.get(
397
393
  },
398
394
  );
399
395
 
396
+ app.post(
397
+ `${API_PREFIX}/projects/:projectName/connections/:connectionName/sqlSource`,
398
+ async (req, res) => {
399
+ try {
400
+ res.status(200).json(
401
+ await connectionController.getConnectionSqlSource(
402
+ req.params.projectName,
403
+ req.params.connectionName,
404
+ req.body.sqlStatement as string,
405
+ ),
406
+ );
407
+ } catch (error) {
408
+ logger.error(error);
409
+ const { json, status } = internalErrorToHttpError(error as Error);
410
+ res.status(status).json(json);
411
+ }
412
+ },
413
+ );
414
+
400
415
  app.get(
401
416
  `${API_PREFIX}/projects/:projectName/connections/:connectionName/tableSource`,
402
417
  async (req, res) => {
@@ -417,6 +432,9 @@ app.get(
417
432
  },
418
433
  );
419
434
 
435
+ /**
436
+ * @deprecated Use /projects/:projectName/connections/:connectionName/queryData POST method instead
437
+ */
420
438
  app.get(
421
439
  `${API_PREFIX}/projects/:projectName/connections/:connectionName/queryData`,
422
440
  async (req, res) => {
@@ -437,6 +455,29 @@ app.get(
437
455
  },
438
456
  );
439
457
 
458
+ app.post(
459
+ `${API_PREFIX}/projects/:projectName/connections/:connectionName/queryData`,
460
+ async (req, res) => {
461
+ try {
462
+ res.status(200).json(
463
+ await connectionController.getConnectionQueryData(
464
+ req.params.projectName,
465
+ req.params.connectionName,
466
+ req.body.sqlStatement as string,
467
+ req.query.options as string,
468
+ ),
469
+ );
470
+ } catch (error) {
471
+ logger.error(error);
472
+ const { json, status } = internalErrorToHttpError(error as Error);
473
+ res.status(status).json(json);
474
+ }
475
+ },
476
+ );
477
+
478
+ /**
479
+ * @deprecated Use /projects/:projectName/connections/:connectionName/temporaryTable POST method instead
480
+ */
440
481
  app.get(
441
482
  `${API_PREFIX}/projects/:projectName/connections/:connectionName/temporaryTable`,
442
483
  async (req, res) => {
@@ -456,6 +497,25 @@ app.get(
456
497
  },
457
498
  );
458
499
 
500
+ app.post(
501
+ `${API_PREFIX}/projects/:projectName/connections/:connectionName/temporaryTable`,
502
+ async (req, res) => {
503
+ try {
504
+ res.status(200).json(
505
+ await connectionController.getConnectionTemporaryTable(
506
+ req.params.projectName,
507
+ req.params.connectionName,
508
+ req.body.sqlStatement as string,
509
+ ),
510
+ );
511
+ } catch (error) {
512
+ logger.error(error);
513
+ const { json, status } = internalErrorToHttpError(error as Error);
514
+ res.status(status).json(json);
515
+ }
516
+ },
517
+ );
518
+
459
519
  app.get(`${API_PREFIX}/projects/:projectName/packages`, async (req, res) => {
460
520
  if (req.query.versionId) {
461
521
  setVersionIdError(res);
@@ -11,7 +11,11 @@ import fs from "fs/promises";
11
11
  import path from "path";
12
12
  import { v4 as uuidv4 } from "uuid";
13
13
  import { components } from "../api";
14
- import { CONNECTIONS_MANIFEST_NAME, TEMP_DIR_PATH } from "../constants";
14
+ import { TEMP_DIR_PATH } from "../constants";
15
+ import {
16
+ convertConnectionsToApiConnections,
17
+ getConnectionsFromPublisherConfig,
18
+ } from "../config";
15
19
  import { AxiosError } from "axios";
16
20
 
17
21
  type ApiConnection = components["schemas"]["Connection"];
@@ -29,32 +33,38 @@ export type InternalConnection = ApiConnection & {
29
33
  };
30
34
 
31
35
  export async function readConnectionConfig(
32
- basePath: string,
33
- ): Promise<InternalConnection[]> {
34
- const fullPath = path.join(basePath, CONNECTIONS_MANIFEST_NAME);
35
-
36
- try {
37
- await fs.stat(fullPath);
38
- } catch {
39
- // If there's no connection manifest, it's no problem. Just return an
40
- // empty array.
41
- return new Array<InternalConnection>();
36
+ _basePath: string,
37
+ projectName?: string,
38
+ serverRootPath?: string,
39
+ ): Promise<ApiConnection[]> {
40
+ // If no project name is provided, return empty array for backward compatibility
41
+ if (!projectName || !serverRootPath) {
42
+ return new Array<ApiConnection>();
42
43
  }
43
44
 
44
- const connectionFileContents = await fs.readFile(fullPath);
45
- // TODO: Validate connection manifest. Define manifest type in public API.
46
- return JSON.parse(connectionFileContents.toString()) as ApiConnection[];
45
+ // Get connections from publisher config
46
+ const connections = getConnectionsFromPublisherConfig(
47
+ serverRootPath,
48
+ projectName,
49
+ );
50
+ return convertConnectionsToApiConnections(connections);
47
51
  }
48
52
 
49
53
  export async function createConnections(
50
54
  basePath: string,
51
55
  defaultConnections: ApiConnection[] = [],
56
+ projectName?: string,
57
+ serverRootPath?: string,
52
58
  ): Promise<{
53
59
  malloyConnections: Map<string, BaseConnection>;
54
60
  apiConnections: InternalConnection[];
55
61
  }> {
56
62
  const connectionMap = new Map<string, BaseConnection>();
57
- const connectionConfig = await readConnectionConfig(basePath);
63
+ const connectionConfig = await readConnectionConfig(
64
+ basePath,
65
+ projectName,
66
+ serverRootPath,
67
+ );
58
68
 
59
69
  const allConnections = [...defaultConnections, ...connectionConfig];
60
70