@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
@@ -4,7 +4,7 @@ import { join } from "path";
4
4
  import sinon from "sinon";
5
5
  import { PackageNotFoundError } from "../errors";
6
6
  import { readConnectionConfig } from "./connection";
7
- import { ApiConnection, Model } from "./model";
7
+ import { Model } from "./model";
8
8
  import { Package } from "./package";
9
9
  import { Scheduler } from "./scheduler";
10
10
  import { Stats } from "fs";
@@ -12,11 +12,6 @@ import { Stats } from "fs";
12
12
  // Minimal partial types for mocking
13
13
  type PartialScheduler = Pick<Scheduler, "list">;
14
14
 
15
- const connectionMocks: ApiConnection[] = [
16
- { name: "conn1", type: "postgres", postgresConnection: {} },
17
- { name: "conn2", type: "bigquery", bigqueryConnection: {} },
18
- ];
19
-
20
15
  describe("service/package", () => {
21
16
  const testPackageDirectory = "testPackage";
22
17
 
@@ -30,11 +25,6 @@ describe("service/package", () => {
30
25
  join(testPackageDirectory, "database.csv"),
31
26
  parquetBuffer,
32
27
  );
33
- const content = JSON.stringify(connectionMocks);
34
- await fs.writeFile(
35
- join(testPackageDirectory, "publisher.connections.json"),
36
- content,
37
- );
38
28
  const publisherContent = JSON.stringify({ description: "Test package" });
39
29
  await fs.writeFile(
40
30
  join(testPackageDirectory, "publisher.json"),
@@ -85,6 +75,7 @@ describe("service/package", () => {
85
75
  "testPackage",
86
76
  testPackageDirectory,
87
77
  new Map(),
78
+ "/server/root",
88
79
  ),
89
80
  ).rejects.toThrowError(
90
81
  new PackageNotFoundError(
@@ -124,6 +115,7 @@ describe("service/package", () => {
124
115
  "testPackage",
125
116
  testPackageDirectory,
126
117
  new Map(),
118
+ "/server/root",
127
119
  );
128
120
 
129
121
  expect(packageInstance).toBeInstanceOf(Package);
@@ -232,23 +224,76 @@ describe("service/package", () => {
232
224
  });
233
225
 
234
226
  describe("readConnectionConfig", () => {
235
- it("should return an empty array if the connection manifest does not exist", async () => {
236
- await fs.rm(
237
- join(testPackageDirectory, "publisher.connections.json"),
238
- );
239
-
240
- sinon.stub(fs, "stat").rejects(new Error("File not found"));
241
-
227
+ it("should return an empty array if no project name or server root path is provided", async () => {
242
228
  const config = await readConnectionConfig(testPackageDirectory);
243
229
  expect(Array.isArray(config)).toBe(true);
244
230
  expect(config).toHaveLength(0);
245
231
  });
246
232
 
247
- it("should return the parsed connection config if it exists", async () => {
248
- sinon.stub(fs, "stat").resolves();
249
- const config = await readConnectionConfig(testPackageDirectory);
233
+ it("should return an empty array if project name or server root path is missing", async () => {
234
+ const config1 = await readConnectionConfig(
235
+ testPackageDirectory,
236
+ "testProject",
237
+ );
238
+ expect(Array.isArray(config1)).toBe(true);
239
+ expect(config1).toHaveLength(0);
240
+
241
+ const config2 = await readConnectionConfig(
242
+ testPackageDirectory,
243
+ undefined,
244
+ "/server/root",
245
+ );
246
+ expect(Array.isArray(config2)).toBe(true);
247
+ expect(config2).toHaveLength(0);
248
+ });
249
+
250
+ it("should return connections from publisher config when project name and server root are provided", async () => {
251
+ const tempServerRoot = "/tmp/test-server-root";
252
+ const tempConfigPath = join(
253
+ tempServerRoot,
254
+ "publisher.config.json",
255
+ );
256
+
257
+ // Create temp directory and config file
258
+ await fs.mkdir(tempServerRoot, { recursive: true });
259
+ await fs.writeFile(
260
+ tempConfigPath,
261
+ JSON.stringify({
262
+ frozenConfig: false,
263
+ projects: [
264
+ {
265
+ name: "testProject",
266
+ packages: [],
267
+ connections: [
268
+ { name: "test-conn", type: "postgres" },
269
+ { name: "test-conn2", type: "bigquery" },
270
+ ],
271
+ },
272
+ ],
273
+ }),
274
+ );
275
+
276
+ const config = await readConnectionConfig(
277
+ testPackageDirectory,
278
+ "testProject",
279
+ tempServerRoot,
280
+ );
281
+
282
+ expect(Array.isArray(config)).toBe(true);
283
+ expect(config).toHaveLength(2);
284
+ expect(config[0]).toMatchObject({
285
+ name: "test-conn",
286
+ type: "postgres",
287
+ resource: "/api/v0/connections/test-conn",
288
+ });
289
+ expect(config[1]).toMatchObject({
290
+ name: "test-conn2",
291
+ type: "bigquery",
292
+ resource: "/api/v0/connections/test-conn2",
293
+ });
250
294
 
251
- expect(config).toEqual(connectionMocks);
295
+ // Clean up
296
+ await fs.rm(tempServerRoot, { recursive: true, force: true });
252
297
  });
253
298
  });
254
299
  });
@@ -72,6 +72,7 @@ export class Package {
72
72
  packageName: string,
73
73
  packagePath: string,
74
74
  projectConnections: Map<string, Connection>,
75
+ serverRootPath: string,
75
76
  ): Promise<Package> {
76
77
  const startTime = performance.now();
77
78
  await Package.validatePackageManifestExistsOrThrowError(packagePath);
@@ -107,7 +108,12 @@ export class Package {
107
108
  });
108
109
  // Package connections override project connections.
109
110
  const { malloyConnections: packageConnections } =
110
- await createConnections(packagePath);
111
+ await createConnections(
112
+ packagePath,
113
+ [],
114
+ projectName,
115
+ serverRootPath,
116
+ );
111
117
  const connectionsTime = performance.now();
112
118
  logger.info("Package connections created", {
113
119
  packageName,
@@ -297,6 +303,7 @@ export class Package {
297
303
  try {
298
304
  await fs.stat(packageConfigPath);
299
305
  } catch {
306
+ logger.error(`Can't find ${packageConfigPath}`);
300
307
  throw new PackageNotFoundError(
301
308
  `Package manifest for ${packagePath} does not exist.`,
302
309
  );
@@ -365,8 +372,13 @@ export class Package {
365
372
  urlReader: new EmptyURLReader(),
366
373
  connections: [new DuckDBConnection("duckdb")],
367
374
  });
375
+ // Escape backslashes for Windows paths in the Malloy model string
376
+ const escapedPath =
377
+ process.platform === "win32"
378
+ ? fullPath.replace(/\\/g, "\\\\")
379
+ : fullPath;
368
380
  const model = runtime.loadModel(
369
- `source: temp is duckdb.table('${fullPath}')`,
381
+ `source: temp is duckdb.table('${escapedPath}')`,
370
382
  );
371
383
  const modelDef = await model.getModel();
372
384
  const fields = (modelDef._modelDef.contents["temp"] as SourceDef).fields;
@@ -35,23 +35,22 @@ export class Project {
35
35
  private packageStatuses: Map<string, PackageInfo> = new Map();
36
36
  private malloyConnections: Map<string, BaseConnection>;
37
37
  private apiConnections: ApiConnection[];
38
- private internalConnections: InternalConnection[];
39
38
  private projectPath: string;
40
39
  private projectName: string;
40
+ private serverRootPath: string;
41
41
  public metadata: ApiProject;
42
42
 
43
43
  constructor(
44
44
  projectName: string,
45
45
  projectPath: string,
46
46
  malloyConnections: Map<string, BaseConnection>,
47
- internalConnections: InternalConnection[],
48
47
  apiConnections: InternalConnection[],
48
+ serverRootPath: string,
49
49
  ) {
50
50
  this.projectName = projectName;
51
51
  this.projectPath = projectPath;
52
+ this.serverRootPath = serverRootPath;
52
53
  this.malloyConnections = malloyConnections;
53
- // InternalConnections have full connection details for doing schema inspection
54
- this.internalConnections = internalConnections;
55
54
  this.apiConnections = apiConnections;
56
55
  this.metadata = {
57
56
  resource: `${API_PREFIX}/projects/${this.projectName}`,
@@ -82,7 +81,6 @@ export class Project {
82
81
  // Update the project's connection maps
83
82
  this.malloyConnections = malloyConnections;
84
83
  this.apiConnections = apiConnections;
85
- this.internalConnections = apiConnections;
86
84
 
87
85
  logger.info(
88
86
  `Successfully updated connections for project ${this.projectName}`,
@@ -101,6 +99,7 @@ export class Project {
101
99
  projectName: string,
102
100
  projectPath: string,
103
101
  defaultConnections: ApiConnection[],
102
+ serverRootPath?: string,
104
103
  ): Promise<Project> {
105
104
  if (!(await fs.promises.stat(projectPath)).isDirectory()) {
106
105
  throw new ProjectNotFoundError(
@@ -112,7 +111,12 @@ export class Project {
112
111
  let apiConnections: InternalConnection[] = [];
113
112
 
114
113
  logger.info(`Creating project with connection configuration`);
115
- const result = await createConnections(projectPath, defaultConnections);
114
+ const result = await createConnections(
115
+ projectPath,
116
+ defaultConnections,
117
+ projectName,
118
+ serverRootPath,
119
+ );
116
120
  malloyConnections = result.malloyConnections;
117
121
  apiConnections = result.apiConnections;
118
122
 
@@ -129,17 +133,7 @@ export class Project {
129
133
  projectPath,
130
134
  malloyConnections,
131
135
  apiConnections,
132
- apiConnections.map((internalConnection) => {
133
- // Create a new ApiConnection object from each InternalConnection
134
- // by excluding the internal connection details
135
- // We don't want to send passwords and connection strings to the client
136
- return {
137
- name: internalConnection.name,
138
- type: internalConnection.type,
139
- attributes: internalConnection.attributes,
140
- resource: internalConnection.resource,
141
- };
142
- }),
136
+ serverRootPath || "",
143
137
  );
144
138
  }
145
139
 
@@ -176,20 +170,6 @@ export class Project {
176
170
  return connection;
177
171
  }
178
172
 
179
- // Returns a connection with full connection details for doing schema inspection
180
- // Don't send this to the client as it contains sensitive information
181
- public getInternalConnection(connectionName: string): InternalConnection {
182
- const connection = this.internalConnections.find(
183
- (connection) => connection.name === connectionName,
184
- );
185
- if (!connection) {
186
- throw new ConnectionNotFoundError(
187
- `Connection ${connectionName} not found`,
188
- );
189
- }
190
- return connection;
191
- }
192
-
193
173
  public getMalloyConnection(connectionName: string): BaseConnection {
194
174
  const connection = this.malloyConnections.get(connectionName);
195
175
  if (!connection) {
@@ -290,6 +270,7 @@ export class Project {
290
270
  packageName,
291
271
  path.join(this.projectPath, packageName),
292
272
  this.malloyConnections,
273
+ this.serverRootPath,
293
274
  );
294
275
  this.packages.set(packageName, _package);
295
276
 
@@ -334,6 +315,7 @@ export class Project {
334
315
  packageName,
335
316
  packagePath,
336
317
  this.malloyConnections,
318
+ this.serverRootPath,
337
319
  ),
338
320
  );
339
321
  } catch (error) {
@@ -15,19 +15,6 @@ const serverRootPath = path.join(
15
15
  "pathways-worker-publisher-project-store-test",
16
16
  );
17
17
  const projectName = "organizationName-projectName";
18
- const testConnections: Connection[] = [
19
- {
20
- name: "testConnection",
21
- type: "postgres",
22
- postgresConnection: {
23
- host: "host",
24
- port: 1234,
25
- databaseName: "databaseName",
26
- userName: "userName",
27
- password: "password",
28
- },
29
- },
30
- ];
31
18
 
32
19
  let sandbox: sinon.SinonSandbox;
33
20
 
@@ -72,13 +59,6 @@ describe("ProjectStore Service", () => {
72
59
  const projectPath = path.join(serverRootPath, projectName);
73
60
  mkdirSync(projectPath, { recursive: true });
74
61
 
75
- // Create connections file
76
- const connectionsPath = path.join(
77
- projectPath,
78
- "publisher.connections.json",
79
- );
80
- writeFileSync(connectionsPath, JSON.stringify(testConnections));
81
-
82
62
  // Create publisher config
83
63
  const publisherConfigPath = path.join(
84
64
  serverRootPath,
@@ -87,6 +67,7 @@ describe("ProjectStore Service", () => {
87
67
  writeFileSync(
88
68
  publisherConfigPath,
89
69
  JSON.stringify({
70
+ frozenConfig: false,
90
71
  projects: [
91
72
  {
92
73
  name: projectName,
@@ -96,6 +77,12 @@ describe("ProjectStore Service", () => {
96
77
  location: projectPath,
97
78
  },
98
79
  ],
80
+ connections: [
81
+ {
82
+ name: "testConnection",
83
+ type: "postgres",
84
+ },
85
+ ],
99
86
  },
100
87
  ],
101
88
  }),
@@ -117,16 +104,6 @@ describe("ProjectStore Service", () => {
117
104
  mkdirSync(projectPath1, { recursive: true });
118
105
  mkdirSync(projectPath2, { recursive: true });
119
106
 
120
- // Create connections files
121
- writeFileSync(
122
- path.join(projectPath1, "publisher.connections.json"),
123
- JSON.stringify(testConnections),
124
- );
125
- writeFileSync(
126
- path.join(projectPath2, "publisher.connections.json"),
127
- JSON.stringify(testConnections),
128
- );
129
-
130
107
  // Create publisher config
131
108
  const publisherConfigPath = path.join(
132
109
  serverRootPath,
@@ -135,6 +112,7 @@ describe("ProjectStore Service", () => {
135
112
  writeFileSync(
136
113
  publisherConfigPath,
137
114
  JSON.stringify({
115
+ frozenConfig: false,
138
116
  projects: [
139
117
  {
140
118
  name: projectName1,
@@ -144,6 +122,12 @@ describe("ProjectStore Service", () => {
144
122
  location: projectPath1,
145
123
  },
146
124
  ],
125
+ connections: [
126
+ {
127
+ name: "testConnection",
128
+ type: "postgres",
129
+ },
130
+ ],
147
131
  },
148
132
  {
149
133
  name: projectName2,
@@ -153,6 +137,13 @@ describe("ProjectStore Service", () => {
153
137
  location: projectPath2,
154
138
  },
155
139
  ],
140
+ connections: [
141
+ {
142
+ name: "testConnection2",
143
+ type: "bigquery",
144
+ bigqueryConnection: {},
145
+ },
146
+ ],
156
147
  },
157
148
  ],
158
149
  }),
@@ -174,14 +165,6 @@ describe("ProjectStore Service", () => {
174
165
  // Create a project directory
175
166
  const projectPath = path.join(serverRootPath, projectName);
176
167
  mkdirSync(projectPath, { recursive: true });
177
-
178
- // Create connections file
179
- const connectionsPath = path.join(
180
- projectPath,
181
- "publisher.connections.json",
182
- );
183
- writeFileSync(connectionsPath, JSON.stringify(testConnections));
184
-
185
168
  // Create publisher config
186
169
  const publisherConfigPath = path.join(
187
170
  serverRootPath,
@@ -221,13 +204,6 @@ describe("ProjectStore Service", () => {
221
204
  const projectPath = path.join(serverRootPath, projectName);
222
205
  mkdirSync(projectPath, { recursive: true });
223
206
 
224
- // Create connections file
225
- const connectionsPath = path.join(
226
- projectPath,
227
- "publisher.connections.json",
228
- );
229
- writeFileSync(connectionsPath, JSON.stringify(testConnections));
230
-
231
207
  // Create publisher config
232
208
  const publisherConfigPath = path.join(
233
209
  serverRootPath,
@@ -310,14 +286,6 @@ describe("ProjectStore Service", () => {
310
286
  const projectPath = path.join(serverRootPath, projectName);
311
287
  mkdirSync(projectPath, { recursive: true });
312
288
 
313
- // Create connections file
314
- const connectionsPath = path.join(
315
- projectPath,
316
- "publisher.connections.json",
317
- );
318
- writeFileSync(connectionsPath, JSON.stringify(testConnections));
319
-
320
- // Create publisher config
321
289
  const publisherConfigPath = path.join(
322
290
  serverRootPath,
323
291
  "publisher.config.json",
@@ -325,6 +293,7 @@ describe("ProjectStore Service", () => {
325
293
  writeFileSync(
326
294
  publisherConfigPath,
327
295
  JSON.stringify({
296
+ frozenConfig: false,
328
297
  projects: [
329
298
  {
330
299
  name: projectName,
@@ -334,11 +303,19 @@ describe("ProjectStore Service", () => {
334
303
  location: projectPath,
335
304
  },
336
305
  ],
306
+ connections: [
307
+ {
308
+ name: "testConnection",
309
+ type: "postgres",
310
+ },
311
+ ],
337
312
  },
338
313
  ],
339
314
  }),
340
315
  );
341
316
 
317
+ await projectStore.finishedInitialization;
318
+
342
319
  // Test concurrent access to the same project
343
320
  const promises = Array.from({ length: 5 }, () =>
344
321
  projectStore.getProject(projectName),