@malloy-publisher/server 0.0.90 → 0.0.91
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/build.ts +9 -0
- package/dist/app/api-doc.yaml +3 -0
- package/dist/app/assets/{index-2BGzlUQa.js → index-CwH8v8Pf.js} +16 -16
- package/dist/app/assets/{index-D1X7Y0Ve.js → index-DJPvt7yu.js} +1 -1
- package/dist/app/assets/{index.es126-CKC26ttZ.js → index.es139-nr8meTUp.js} +1 -1
- package/dist/app/assets/{index.es127-CBKpWhIe.js → index.es140-f9ybcYUt.js} +1 -1
- package/dist/app/assets/{index.es130-5z_n6lm6.js → index.es143-BrmH4hWW.js} +1 -1
- package/dist/app/assets/{index.es135-aJw1Xr-9.js → index.es148-KJPSzIi5.js} +1 -1
- package/dist/app/assets/{index.es143-CAt8G2AV.js → index.es156-AslbYSUk.js} +1 -1
- package/dist/app/assets/{index.es144-CaWYrbVR.js → index.es157-CGx9vJCM.js} +1 -1
- package/dist/app/assets/{index.es147-B_4j3qbz.js → index.es160-B4514fRp.js} +1 -1
- package/dist/app/assets/{index.es151-Byg3j7QH.js → index.es164-BdfNgGb4.js} +1 -1
- package/dist/app/assets/{index.es154-D8PMiD5x.js → index.es167-Cytvwvs5.js} +1 -1
- package/dist/app/assets/{index.es157-qx6EMeW2.js → index.es170-BF0Mj3Dj.js} +1 -1
- package/dist/app/assets/{index.es158-CJWvYXRx.js → index.es171-bDBK09mk.js} +1 -1
- package/dist/app/assets/{index.es172-BamsV9CN.js → index.es185-BECCJjWR.js} +1 -1
- package/dist/app/assets/{index.es173-CXyGU58j.js → index.es186-DORBN8KQ.js} +1 -1
- package/dist/app/assets/{index.es174-C2o3B3o8.js → index.es187-C1QXB69O.js} +1 -1
- package/dist/app/assets/{index.es176-BB-1P5bb.js → index.es189-BxZOchW8.js} +1 -1
- package/dist/app/assets/{index.es181-2PlTGcYG.js → index.es194-AsRZMTWT.js} +1 -1
- package/dist/app/assets/{index.es183-DgoVwe-N.js → index.es196-x3jX2idz.js} +1 -1
- package/dist/app/assets/{index.es184-Cmc38osU.js → index.es197-Dtz8tRxv.js} +1 -1
- package/dist/app/assets/{index.es189-DuMu0KfI.js → index.es202-BMtZpqF-.js} +1 -1
- package/dist/app/assets/{index.es190-C117wYiK.js → index.es203-gWIQWffw.js} +1 -1
- package/dist/app/assets/{index.es192-Bm2ZoxNH.js → index.es205-D7Lk4BX7.js} +1 -1
- package/dist/app/assets/{index.es193-BBtnt1bZ.js → index.es206-BiJF4jj3.js} +1 -1
- package/dist/app/assets/{index.es194-CB2Nn3wg.js → index.es207-B-UJ_bzC.js} +1 -1
- package/dist/app/assets/{index.es197-D91osx4R.js → index.es210-Cuht9bXE.js} +1 -1
- package/dist/app/assets/{index.es199-BtpESJSS.js → index.es212-OHX8E5rN.js} +1 -1
- package/dist/app/assets/{index.es200-BeG9RRw_.js → index.es213-ZuPzTQ_g.js} +1 -1
- package/dist/app/assets/{index.es201-k2nuCC3B.js → index.es214-D803Db5p.js} +1 -1
- package/dist/app/assets/{index.es207-C2uQegug.js → index.es220-7QoCPP2j.js} +1 -1
- package/dist/app/assets/{index.es208-BTucFWqR.js → index.es221-XNqXVFFm.js} +1 -1
- package/dist/app/assets/{index.es209-4dK47W8o.js → index.es222-Cdb4luVg.js} +1 -1
- package/dist/app/assets/{index.es210-DO6X3-kz.js → index.es223-CORMGf1M.js} +1 -1
- package/dist/app/assets/{index.es212-CFG-vrrr.js → index.es225-Cq-kOlxp.js} +1 -1
- package/dist/app/assets/{index.es216-TWO3Mhor.js → index.es229-E5IGXk-q.js} +1 -1
- package/dist/app/assets/{index.es217-0tHVUThG.js → index.es230-Fc3aBcCM.js} +1 -1
- package/dist/app/assets/{index.es225-DHGKCs7a.js → index.es238-PSs3scPq.js} +1 -1
- package/dist/app/assets/{index.es228-Bz0ZvI5L.js → index.es241-CL-_GK9e.js} +1 -1
- package/dist/app/assets/{index.es231-D1HdFvsl.js → index.es244-DKPCX9xC.js} +1 -1
- package/dist/app/assets/{index.es234-1j9jt1V9.js → index.es247-BSAYNLHy.js} +1 -1
- package/dist/app/assets/{index.es238-DBm7c9HR.js → index.es251--0-h5QiV.js} +1 -1
- package/dist/app/assets/{index.es240-DCqDESzD.js → index.es253-BEn9NcoZ.js} +1 -1
- package/dist/app/assets/{index.es248-BEYN2dFo.js → index.es261-MjZ_rv4c.js} +1 -1
- package/dist/app/assets/{index.es249-DKdYiZA_.js → index.es262-HBJu6fHJ.js} +1 -1
- package/dist/app/assets/{index.es256-CgBAGaDx.js → index.es269-DLa2GgqN.js} +1 -1
- package/dist/app/assets/{index.es257-DMI3dJGJ.js → index.es270-CalwIzIq.js} +1 -1
- package/dist/app/assets/{index.es267-B5ei8o6D.js → index.es280-BmnnGhn2.js} +1 -1
- package/dist/app/assets/{index.es271-DDBsSlrj.js → index.es284-C2YEYS8h.js} +1 -1
- package/dist/app/assets/{index.es277-aI_iYBJv.js → index.es290-BHjEYaA_.js} +1 -1
- package/dist/app/assets/{index.es282-DZQyCurk.js → index.es295-CLE8Egbz.js} +1 -1
- package/dist/app/assets/{index.es283-DRQxI154.js → index.es296-Bsq8yJGD.js} +1 -1
- package/dist/app/assets/{index.es285-DrT3oe3D.js → index.es298-CTsw_aX6.js} +1 -1
- package/dist/app/assets/{index.es289-CKYiktdr.js → index.es302-BgJs_s58.js} +1 -1
- package/dist/app/assets/{index.es291-BRH8qn2R.js → index.es304-Y67tbm3o.js} +1 -1
- package/dist/app/assets/{index.es293-B_x7Y2b5.js → index.es306-Dsx0880i.js} +1 -1
- package/dist/app/assets/{index.es296-CMhur-CK.js → index.es309-COa7lSGF.js} +1 -1
- package/dist/app/assets/{index.es297-BY9kHC-p.js → index.es310-C11TmHug.js} +1 -1
- package/dist/app/assets/{index.es301-CmwjGLCv.js → index.es314-BExIez_V.js} +1 -1
- package/dist/app/assets/{index.es303-BOa5F89I.js → index.es316-DFqBRZWD.js} +1 -1
- package/dist/app/assets/{index.es310-BF6kc0UE.js → index.es323-BClNDw1H.js} +1 -1
- package/dist/app/assets/{index.es312-CoCT5fTV.js → index.es325-f5hVUVjI.js} +1 -1
- package/dist/app/assets/{index.es314-CMYE9lCS.js → index.es327-DsTyRd6E.js} +1 -1
- package/dist/app/assets/{index.es318-C2_Stmju.js → index.es331-BLhdwz0E.js} +1 -1
- package/dist/app/assets/{index.es328-DxiHjjdV.js → index.es341-oDRBDM86.js} +1 -1
- package/dist/app/assets/{index.es329-D4H4qJV5.js → index.es342-DialnTnH.js} +1 -1
- package/dist/app/assets/{index.es336-DMBcHb9l.js → index.es349-DrBCM5L2.js} +1 -1
- package/dist/app/assets/{index.es337-BOcmfyvS.js → index.es350-B1R-_5vW.js} +1 -1
- package/dist/app/assets/{index.es49-D9XPPIF9.js → index.es50-Dwe0S21o.js} +1 -1
- package/dist/app/assets/{mui-YektUyEU.js → mui-Bcj8oDBR.js} +1 -1
- package/dist/app/index.html +2 -2
- package/dist/server.js +15 -8
- package/package.json +1 -1
- package/src/server.ts +6 -2
- package/src/service/db_utils.ts +16 -9
- package/src/service/project.ts +1 -1
- package/src/service/project_store.ts +6 -3
- /package/dist/app/assets/{index.es115-CG6Dc4jp.js → index.es128-CG6Dc4jp.js} +0 -0
- /package/dist/app/assets/{index.es123-DsBKuouk.js → index.es136-DsBKuouk.js} +0 -0
- /package/dist/app/assets/{index.es124-D_z4Izcz.js → index.es137-D_z4Izcz.js} +0 -0
- /package/dist/app/assets/{index.es125-727ZlQH0.js → index.es138-727ZlQH0.js} +0 -0
- /package/dist/app/assets/{index.es128-Dn00JSTd.js → index.es141-Dn00JSTd.js} +0 -0
- /package/dist/app/assets/{index.es129-COJ4H7py.js → index.es142-COJ4H7py.js} +0 -0
- /package/dist/app/assets/{index.es131-Bu5BbsvL.js → index.es144-Bu5BbsvL.js} +0 -0
- /package/dist/app/assets/{index.es132-7O62HKoU.js → index.es145-7O62HKoU.js} +0 -0
- /package/dist/app/assets/{index.es133-BPT9niGB.js → index.es146-BPT9niGB.js} +0 -0
- /package/dist/app/assets/{index.es134-Dhn9LcZ4.js → index.es147-Dhn9LcZ4.js} +0 -0
- /package/dist/app/assets/{index.es136-eg146-Ew.js → index.es149-eg146-Ew.js} +0 -0
- /package/dist/app/assets/{index.es137-Du268qiB.js → index.es150-Du268qiB.js} +0 -0
- /package/dist/app/assets/{index.es138-fje9CFhw.js → index.es151-fje9CFhw.js} +0 -0
- /package/dist/app/assets/{index.es139-BwXTMy5W.js → index.es152-BwXTMy5W.js} +0 -0
- /package/dist/app/assets/{index.es140-3xVqZejG.js → index.es153-3xVqZejG.js} +0 -0
- /package/dist/app/assets/{index.es141-xW4inM5L.js → index.es154-xW4inM5L.js} +0 -0
- /package/dist/app/assets/{index.es142-DHo0CJ0O.js → index.es155-DHo0CJ0O.js} +0 -0
- /package/dist/app/assets/{index.es145-C3t2pwGQ.js → index.es158-C3t2pwGQ.js} +0 -0
- /package/dist/app/assets/{index.es146-DNquZEk8.js → index.es159-DNquZEk8.js} +0 -0
- /package/dist/app/assets/{index.es148-BHOwM8T6.js → index.es161-BHOwM8T6.js} +0 -0
- /package/dist/app/assets/{index.es149-DxSadP1t.js → index.es162-DxSadP1t.js} +0 -0
- /package/dist/app/assets/{index.es150-DbXoA79R.js → index.es163-DbXoA79R.js} +0 -0
- /package/dist/app/assets/{index.es152-Bp6g37R7.js → index.es165-Bp6g37R7.js} +0 -0
- /package/dist/app/assets/{index.es153-sacFqUAJ.js → index.es166-sacFqUAJ.js} +0 -0
- /package/dist/app/assets/{index.es155-C7gG9l05.js → index.es168-C7gG9l05.js} +0 -0
- /package/dist/app/assets/{index.es156-Dsg_Bt_b.js → index.es169-Dsg_Bt_b.js} +0 -0
- /package/dist/app/assets/{index.es159-D9R-vmeu.js → index.es172-D9R-vmeu.js} +0 -0
- /package/dist/app/assets/{index.es160-BPhBrDlE.js → index.es173-BPhBrDlE.js} +0 -0
- /package/dist/app/assets/{index.es161-C-TU5hQ_.js → index.es174-C-TU5hQ_.js} +0 -0
- /package/dist/app/assets/{index.es162-DtFQj3wx.js → index.es175-DtFQj3wx.js} +0 -0
- /package/dist/app/assets/{index.es163-m2LEI-9-.js → index.es176-m2LEI-9-.js} +0 -0
- /package/dist/app/assets/{index.es164-BoXegm-a.js → index.es177-BoXegm-a.js} +0 -0
- /package/dist/app/assets/{index.es165-B9wLZaAG.js → index.es178-B9wLZaAG.js} +0 -0
- /package/dist/app/assets/{index.es166-ClGRhx96.js → index.es179-ClGRhx96.js} +0 -0
- /package/dist/app/assets/{index.es167-DEIpsLCJ.js → index.es180-DEIpsLCJ.js} +0 -0
- /package/dist/app/assets/{index.es168-BgYniUM_.js → index.es181-BgYniUM_.js} +0 -0
- /package/dist/app/assets/{index.es169-COcR7UxN.js → index.es182-COcR7UxN.js} +0 -0
- /package/dist/app/assets/{index.es170-BjQB5zDj.js → index.es183-BjQB5zDj.js} +0 -0
- /package/dist/app/assets/{index.es171-C-nORZOA.js → index.es184-C-nORZOA.js} +0 -0
- /package/dist/app/assets/{index.es175-BX77sIaO.js → index.es188-BX77sIaO.js} +0 -0
- /package/dist/app/assets/{index.es177-B-DoSBHF.js → index.es190-B-DoSBHF.js} +0 -0
- /package/dist/app/assets/{index.es178-bCA53EVm.js → index.es191-bCA53EVm.js} +0 -0
- /package/dist/app/assets/{index.es179-w-ucz2PV.js → index.es192-w-ucz2PV.js} +0 -0
- /package/dist/app/assets/{index.es180-Dayu4EKP.js → index.es193-Dayu4EKP.js} +0 -0
- /package/dist/app/assets/{index.es182-DKXYxT9g.js → index.es195-DKXYxT9g.js} +0 -0
- /package/dist/app/assets/{index.es185-DfxzS6Rs.js → index.es198-DfxzS6Rs.js} +0 -0
- /package/dist/app/assets/{index.es186-SKMF96pI.js → index.es199-SKMF96pI.js} +0 -0
- /package/dist/app/assets/{index.es187-ajMbGru0.js → index.es200-ajMbGru0.js} +0 -0
- /package/dist/app/assets/{index.es188--30QC5Em.js → index.es201--30QC5Em.js} +0 -0
- /package/dist/app/assets/{index.es191-B430Bg39.js → index.es204-B430Bg39.js} +0 -0
- /package/dist/app/assets/{index.es195-CM8KxXT1.js → index.es208-CM8KxXT1.js} +0 -0
- /package/dist/app/assets/{index.es196-B1SYOhNW.js → index.es209-B1SYOhNW.js} +0 -0
- /package/dist/app/assets/{index.es198-DkBy-JyN.js → index.es211-DkBy-JyN.js} +0 -0
- /package/dist/app/assets/{index.es202-BILxekzW.js → index.es215-BILxekzW.js} +0 -0
- /package/dist/app/assets/{index.es203-C5wWYbrZ.js → index.es216-C5wWYbrZ.js} +0 -0
- /package/dist/app/assets/{index.es204-HzYwdGDm.js → index.es217-HzYwdGDm.js} +0 -0
- /package/dist/app/assets/{index.es205-T-Tgc4AT.js → index.es218-T-Tgc4AT.js} +0 -0
- /package/dist/app/assets/{index.es206-ifBTmRxC.js → index.es219-ifBTmRxC.js} +0 -0
- /package/dist/app/assets/{index.es211-BMj5Y0dO.js → index.es224-BMj5Y0dO.js} +0 -0
- /package/dist/app/assets/{index.es213-BjABl1g7.js → index.es226-BjABl1g7.js} +0 -0
- /package/dist/app/assets/{index.es214-xI-RfyKK.js → index.es227-xI-RfyKK.js} +0 -0
- /package/dist/app/assets/{index.es215-ySlJ1b_l.js → index.es228-ySlJ1b_l.js} +0 -0
- /package/dist/app/assets/{index.es218-BQoSv7ci.js → index.es231-BQoSv7ci.js} +0 -0
- /package/dist/app/assets/{index.es219-w8dY5SsB.js → index.es232-w8dY5SsB.js} +0 -0
- /package/dist/app/assets/{index.es220-TU54ms6u.js → index.es233-TU54ms6u.js} +0 -0
- /package/dist/app/assets/{index.es221-DREVFZK8.js → index.es234-DREVFZK8.js} +0 -0
- /package/dist/app/assets/{index.es222-BfivnA6A.js → index.es235-BfivnA6A.js} +0 -0
- /package/dist/app/assets/{index.es223-P4WzXJd0.js → index.es236-P4WzXJd0.js} +0 -0
- /package/dist/app/assets/{index.es224-BAng5TT0.js → index.es237-BAng5TT0.js} +0 -0
- /package/dist/app/assets/{index.es226-B5lbUyaz.js → index.es239-B5lbUyaz.js} +0 -0
- /package/dist/app/assets/{index.es227-mebxcVVE.js → index.es240-mebxcVVE.js} +0 -0
- /package/dist/app/assets/{index.es229-XBlWyCtg.js → index.es242-XBlWyCtg.js} +0 -0
- /package/dist/app/assets/{index.es230-BfCpw3nA.js → index.es243-BfCpw3nA.js} +0 -0
- /package/dist/app/assets/{index.es232-Cc5clBb7.js → index.es245-Cc5clBb7.js} +0 -0
- /package/dist/app/assets/{index.es233-IuBKFhSY.js → index.es246-IuBKFhSY.js} +0 -0
- /package/dist/app/assets/{index.es235-Du5NY7AG.js → index.es248-Du5NY7AG.js} +0 -0
- /package/dist/app/assets/{index.es236-Bvotw-X0.js → index.es249-Bvotw-X0.js} +0 -0
- /package/dist/app/assets/{index.es237-UIAJJxZW.js → index.es250-UIAJJxZW.js} +0 -0
- /package/dist/app/assets/{index.es239-D9-PGadD.js → index.es252-D9-PGadD.js} +0 -0
- /package/dist/app/assets/{index.es241-sdHcTMYB.js → index.es254-sdHcTMYB.js} +0 -0
- /package/dist/app/assets/{index.es242-Ci6OQyBP.js → index.es255-Ci6OQyBP.js} +0 -0
- /package/dist/app/assets/{index.es243-BC5c_5Pe.js → index.es256-BC5c_5Pe.js} +0 -0
- /package/dist/app/assets/{index.es244-Tz6hzZYG.js → index.es257-Tz6hzZYG.js} +0 -0
- /package/dist/app/assets/{index.es245-DB_GagMm.js → index.es258-DB_GagMm.js} +0 -0
- /package/dist/app/assets/{index.es246-DLbgOhZU.js → index.es259-DLbgOhZU.js} +0 -0
- /package/dist/app/assets/{index.es247-B0XVJmRM.js → index.es260-B0XVJmRM.js} +0 -0
- /package/dist/app/assets/{index.es250-shcSOmrb.js → index.es263-shcSOmrb.js} +0 -0
- /package/dist/app/assets/{index.es251-D4Tzg5kh.js → index.es264-D4Tzg5kh.js} +0 -0
- /package/dist/app/assets/{index.es252-Deuh7S70.js → index.es265-Deuh7S70.js} +0 -0
- /package/dist/app/assets/{index.es253-BUEGK8hf.js → index.es266-BUEGK8hf.js} +0 -0
- /package/dist/app/assets/{index.es254-BNioltXt.js → index.es267-BNioltXt.js} +0 -0
- /package/dist/app/assets/{index.es255-JqZropPD.js → index.es268-JqZropPD.js} +0 -0
- /package/dist/app/assets/{index.es258-LKU2TuZ1.js → index.es271-LKU2TuZ1.js} +0 -0
- /package/dist/app/assets/{index.es259-BFLt1xDp.js → index.es272-BFLt1xDp.js} +0 -0
- /package/dist/app/assets/{index.es260-DKykz6zU.js → index.es273-DKykz6zU.js} +0 -0
- /package/dist/app/assets/{index.es261-B3ZDOciz.js → index.es274-B3ZDOciz.js} +0 -0
- /package/dist/app/assets/{index.es262-CSHBycmS.js → index.es275-CSHBycmS.js} +0 -0
- /package/dist/app/assets/{index.es263-BIEUsx6d.js → index.es276-BIEUsx6d.js} +0 -0
- /package/dist/app/assets/{index.es264-B48N-Iqd.js → index.es277-B48N-Iqd.js} +0 -0
- /package/dist/app/assets/{index.es265-BY-TUvya.js → index.es278-BY-TUvya.js} +0 -0
- /package/dist/app/assets/{index.es266-zocC4JxJ.js → index.es279-zocC4JxJ.js} +0 -0
- /package/dist/app/assets/{index.es268-Cza_XSSt.js → index.es281-Cza_XSSt.js} +0 -0
- /package/dist/app/assets/{index.es269-Bg-kzb6g.js → index.es282-Bg-kzb6g.js} +0 -0
- /package/dist/app/assets/{index.es270-DhUJRlN_.js → index.es283-DhUJRlN_.js} +0 -0
- /package/dist/app/assets/{index.es272-C8lEn-DE.js → index.es285-C8lEn-DE.js} +0 -0
- /package/dist/app/assets/{index.es273-DhMKtDLN.js → index.es286-DhMKtDLN.js} +0 -0
- /package/dist/app/assets/{index.es274-CwjWoCRV.js → index.es287-CwjWoCRV.js} +0 -0
- /package/dist/app/assets/{index.es275-CzouJOBO.js → index.es288-CzouJOBO.js} +0 -0
- /package/dist/app/assets/{index.es276-B1bQXN8T.js → index.es289-B1bQXN8T.js} +0 -0
- /package/dist/app/assets/{index.es278-5LuOXUq_.js → index.es291-5LuOXUq_.js} +0 -0
- /package/dist/app/assets/{index.es279-DWJ3fJO_.js → index.es292-DWJ3fJO_.js} +0 -0
- /package/dist/app/assets/{index.es280-DJlmqQ1C.js → index.es293-DJlmqQ1C.js} +0 -0
- /package/dist/app/assets/{index.es281-QhoSD0DR.js → index.es294-QhoSD0DR.js} +0 -0
- /package/dist/app/assets/{index.es284-Be6lgOlo.js → index.es297-Be6lgOlo.js} +0 -0
- /package/dist/app/assets/{index.es286-BJ4Li9vH.js → index.es299-BJ4Li9vH.js} +0 -0
- /package/dist/app/assets/{index.es287-DQVVAn-B.js → index.es300-DQVVAn-B.js} +0 -0
- /package/dist/app/assets/{index.es288-BJGe-b2p.js → index.es301-BJGe-b2p.js} +0 -0
- /package/dist/app/assets/{index.es290-BLhTXw86.js → index.es303-BLhTXw86.js} +0 -0
- /package/dist/app/assets/{index.es292-atvbtKCR.js → index.es305-atvbtKCR.js} +0 -0
- /package/dist/app/assets/{index.es294-DkLiglaE.js → index.es307-DkLiglaE.js} +0 -0
- /package/dist/app/assets/{index.es295-C1w2a3ep.js → index.es308-C1w2a3ep.js} +0 -0
- /package/dist/app/assets/{index.es298-Cf8iN4DR.js → index.es311-Cf8iN4DR.js} +0 -0
- /package/dist/app/assets/{index.es299-COK4E0Yg.js → index.es312-COK4E0Yg.js} +0 -0
- /package/dist/app/assets/{index.es300-BknIz3MU.js → index.es313-BknIz3MU.js} +0 -0
- /package/dist/app/assets/{index.es302-BeQkCIfX.js → index.es315-BeQkCIfX.js} +0 -0
- /package/dist/app/assets/{index.es304-BSxZ-RaX.js → index.es317-BSxZ-RaX.js} +0 -0
- /package/dist/app/assets/{index.es305-C7L56vO4.js → index.es318-C7L56vO4.js} +0 -0
- /package/dist/app/assets/{index.es306-CUnW07Te.js → index.es319-CUnW07Te.js} +0 -0
- /package/dist/app/assets/{index.es307-C1XDQQGZ.js → index.es320-C1XDQQGZ.js} +0 -0
- /package/dist/app/assets/{index.es308-CQjiPCtT.js → index.es321-CQjiPCtT.js} +0 -0
- /package/dist/app/assets/{index.es309-DQ1-QYvQ.js → index.es322-DQ1-QYvQ.js} +0 -0
- /package/dist/app/assets/{index.es311-BbSNqyBO.js → index.es324-BbSNqyBO.js} +0 -0
- /package/dist/app/assets/{index.es313-CB2ApiWb.js → index.es326-CB2ApiWb.js} +0 -0
- /package/dist/app/assets/{index.es315-B_m7g4N7.js → index.es328-B_m7g4N7.js} +0 -0
- /package/dist/app/assets/{index.es316-B6W0miNI.js → index.es329-B6W0miNI.js} +0 -0
- /package/dist/app/assets/{index.es317-BMR_PYu6.js → index.es330-BMR_PYu6.js} +0 -0
- /package/dist/app/assets/{index.es319-Dj6nwHGl.js → index.es332-Dj6nwHGl.js} +0 -0
- /package/dist/app/assets/{index.es320-BpWG_bgh.js → index.es333-BpWG_bgh.js} +0 -0
- /package/dist/app/assets/{index.es321-BVUVsWT6.js → index.es334-BVUVsWT6.js} +0 -0
- /package/dist/app/assets/{index.es322-CAQ2eGtk.js → index.es335-CAQ2eGtk.js} +0 -0
- /package/dist/app/assets/{index.es323-BFOHcciG.js → index.es336-BFOHcciG.js} +0 -0
- /package/dist/app/assets/{index.es324-CdO5JTpU.js → index.es337-CdO5JTpU.js} +0 -0
- /package/dist/app/assets/{index.es325-CJaU5se_.js → index.es338-CJaU5se_.js} +0 -0
- /package/dist/app/assets/{index.es326-DYoNaHQp.js → index.es339-DYoNaHQp.js} +0 -0
- /package/dist/app/assets/{index.es327-m4uW47V2.js → index.es340-m4uW47V2.js} +0 -0
- /package/dist/app/assets/{index.es330-nyqBNV6O.js → index.es343-nyqBNV6O.js} +0 -0
- /package/dist/app/assets/{index.es331-C6j12Q_x.js → index.es344-C6j12Q_x.js} +0 -0
- /package/dist/app/assets/{index.es332-7A4Fjokl.js → index.es345-7A4Fjokl.js} +0 -0
- /package/dist/app/assets/{index.es333-CB0Krxn9.js → index.es346-CB0Krxn9.js} +0 -0
- /package/dist/app/assets/{index.es334-DCE3LsBG.js → index.es347-DCE3LsBG.js} +0 -0
- /package/dist/app/assets/{index.es335-C3FkfJm5.js → index.es348-C3FkfJm5.js} +0 -0
- /package/dist/app/assets/{index.es338-CVw76BM1.js → index.es351-CVw76BM1.js} +0 -0
- /package/dist/app/assets/{index.es339-HnGAYVZD.js → index.es352-HnGAYVZD.js} +0 -0
- /package/dist/app/assets/{index.es340-BVz_zdnA.js → index.es353-BVz_zdnA.js} +0 -0
- /package/dist/app/assets/{index.es341-C3khCPGq.js → index.es354-C3khCPGq.js} +0 -0
- /package/dist/app/assets/{index.es342-D-2ljcwZ.js → index.es355-D-2ljcwZ.js} +0 -0
- /package/dist/app/assets/{index.es343-Cv9koXgw.js → index.es356-Cv9koXgw.js} +0 -0
- /package/dist/app/assets/{index.es344-CD_QflpE.js → index.es357-CD_QflpE.js} +0 -0
- /package/dist/app/assets/{index.es345-DRW-0cLl.js → index.es358-DRW-0cLl.js} +0 -0
- /package/dist/app/assets/{index.es346-C-_shW-Y.js → index.es359-C-_shW-Y.js} +0 -0
- /package/dist/app/assets/{index.es347-LGGdnPYs.js → index.es360-LGGdnPYs.js} +0 -0
- /package/dist/app/assets/{index.es348-C3mMm8J8.js → index.es361-C3mMm8J8.js} +0 -0
- /package/dist/app/assets/{index.es349-BzJJZx-M.js → index.es362-BzJJZx-M.js} +0 -0
- /package/dist/app/assets/{index.es350-BXkSAIEj.js → index.es363-BXkSAIEj.js} +0 -0
- /package/dist/app/assets/{index.es351-BgDCqdQA.js → index.es364-BgDCqdQA.js} +0 -0
- /package/dist/app/assets/{index.es352-C8M2exoo.js → index.es365-C8M2exoo.js} +0 -0
- /package/dist/app/assets/{index.es353-DHJKELXO.js → index.es366-DHJKELXO.js} +0 -0
- /package/dist/app/assets/{index.es354-Cuk6v7N8.js → index.es367-Cuk6v7N8.js} +0 -0
- /package/dist/app/assets/{index.es355-DH5Ifo-i.js → index.es368-DH5Ifo-i.js} +0 -0
- /package/dist/app/assets/{index.es356-E3gJ1_iC.js → index.es369-E3gJ1_iC.js} +0 -0
- /package/dist/app/assets/{index.es357-DAi9KRSo.js → index.es370-DAi9KRSo.js} +0 -0
- /package/dist/app/assets/{index.es358-D7oLnXFd.js → index.es371-D7oLnXFd.js} +0 -0
- /package/dist/app/assets/{index.es359-BfjtVDDH.js → index.es372-BfjtVDDH.js} +0 -0
- /package/dist/app/assets/{index.es360-DnULxvSX.js → index.es373-DnULxvSX.js} +0 -0
- /package/dist/app/assets/{index.es361-CkXjmgJE.js → index.es374-CkXjmgJE.js} +0 -0
- /package/dist/app/assets/{index.es362-CfQXZHmo.js → index.es375-CfQXZHmo.js} +0 -0
- /package/dist/app/assets/{index.es363-DWedfzmr.js → index.es376-DWedfzmr.js} +0 -0
- /package/dist/app/assets/{index.es364-DUszq2jm.js → index.es377-DUszq2jm.js} +0 -0
- /package/dist/app/assets/{index.es365-B7mTdjB0.js → index.es378-B7mTdjB0.js} +0 -0
- /package/dist/app/assets/{index.es366-D5KoaKCx.js → index.es379-D5KoaKCx.js} +0 -0
- /package/dist/app/assets/{index.es367-BfHTSMKl.js → index.es380-BfHTSMKl.js} +0 -0
- /package/dist/app/assets/{index.es368-B0m2ddpp.js → index.es381-B0m2ddpp.js} +0 -0
- /package/dist/app/assets/{index.es369-CyktbL80.js → index.es382-CyktbL80.js} +0 -0
- /package/dist/app/assets/{index.es370-Csfq5Kiy.js → index.es383-Csfq5Kiy.js} +0 -0
- /package/dist/app/assets/{index.es371-CafNBF8u.js → index.es384-CafNBF8u.js} +0 -0
- /package/dist/app/assets/{index.es372-CTRr51gU.js → index.es385-CTRr51gU.js} +0 -0
- /package/dist/app/assets/{index.es373-D4h5O-jR.js → index.es386-D4h5O-jR.js} +0 -0
- /package/dist/app/assets/{index.es374-C39BiMTA.js → index.es387-C39BiMTA.js} +0 -0
- /package/dist/app/assets/{index.es375-Ddv68eIx.js → index.es388-Ddv68eIx.js} +0 -0
- /package/dist/app/assets/{index.es376-GBQ2dnAY.js → index.es389-GBQ2dnAY.js} +0 -0
- /package/dist/app/assets/{index.es377-PoHY5YXO.js → index.es390-PoHY5YXO.js} +0 -0
- /package/dist/app/assets/{index.es378-3e1v2bzS.js → index.es391-3e1v2bzS.js} +0 -0
- /package/dist/app/assets/{index.es379-CS3Unz2-.js → index.es392-CS3Unz2-.js} +0 -0
- /package/dist/app/assets/{index.es380-bN70gL4F.js → index.es393-bN70gL4F.js} +0 -0
- /package/dist/app/assets/{index.es381-CmCqftbK.js → index.es394-CmCqftbK.js} +0 -0
- /package/dist/app/assets/{index.es382-Ds-gbosJ.js → index.es395-Ds-gbosJ.js} +0 -0
- /package/dist/app/assets/{index.es383-CjDtw9vr.js → index.es396-CjDtw9vr.js} +0 -0
- /package/dist/app/assets/{index.es384-BthQWCQV.js → index.es397-BthQWCQV.js} +0 -0
- /package/dist/app/assets/{index.es385-DqwNpetd.js → index.es398-DqwNpetd.js} +0 -0
- /package/dist/app/assets/{index.es386-Bw305WKR.js → index.es399-Bw305WKR.js} +0 -0
- /package/dist/app/assets/{index.es387-DXbdFlpD.js → index.es400-DXbdFlpD.js} +0 -0
- /package/dist/app/assets/{index.es388-L9t79GZl.js → index.es401-L9t79GZl.js} +0 -0
- /package/dist/app/assets/{index.es389-CbfX1IO0.js → index.es402-CbfX1IO0.js} +0 -0
- /package/dist/app/assets/{index.es390-DBQeEorK.js → index.es403-DBQeEorK.js} +0 -0
- /package/dist/app/assets/{index.es391-BEBZ7ncR.js → index.es404-BEBZ7ncR.js} +0 -0
- /package/dist/app/assets/{index.es392-Bkuqu6BP.js → index.es405-Bkuqu6BP.js} +0 -0
- /package/dist/app/assets/{index.es393-D0r3Knsf.js → index.es406-D0r3Knsf.js} +0 -0
- /package/dist/app/assets/{index.es394-CVO1_9PV.js → index.es407-CVO1_9PV.js} +0 -0
package/dist/app/index.html
CHANGED
|
@@ -12,9 +12,9 @@
|
|
|
12
12
|
href="https://fonts.googleapis.com/css2?family=Roboto:wght@300;400;500;700&display=swap"
|
|
13
13
|
/>
|
|
14
14
|
<title>Malloy Publisher</title>
|
|
15
|
-
<script type="module" crossorigin src="/assets/index-
|
|
15
|
+
<script type="module" crossorigin src="/assets/index-CwH8v8Pf.js"></script>
|
|
16
16
|
<link rel="modulepreload" crossorigin href="/assets/vendor-c5ypKtDW.js">
|
|
17
|
-
<link rel="modulepreload" crossorigin href="/assets/mui-
|
|
17
|
+
<link rel="modulepreload" crossorigin href="/assets/mui-Bcj8oDBR.js">
|
|
18
18
|
<link rel="stylesheet" crossorigin href="/assets/index-CcIq0aEZ.css">
|
|
19
19
|
</head>
|
|
20
20
|
<body>
|
package/dist/server.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
1
2
|
var __create = Object.create;
|
|
2
3
|
var __getProtoOf = Object.getPrototypeOf;
|
|
3
4
|
var __defProp = Object.defineProperty;
|
|
@@ -231562,13 +231563,16 @@ async function getSchemasForConnection(connection) {
|
|
|
231562
231563
|
const projectId = connection.bigqueryConnection.defaultProjectId;
|
|
231563
231564
|
const options = projectId ? { projectId } : {};
|
|
231564
231565
|
const [datasets] = await bigquery.getDatasets(options);
|
|
231565
|
-
|
|
231566
|
+
const schemas = await Promise.all(datasets.filter((dataset) => dataset.id).map(async (dataset) => {
|
|
231567
|
+
const [metadata] = await dataset.getMetadata();
|
|
231566
231568
|
return {
|
|
231567
231569
|
name: dataset.id,
|
|
231568
231570
|
isHidden: false,
|
|
231569
|
-
isDefault: false
|
|
231571
|
+
isDefault: false,
|
|
231572
|
+
description: metadata?.description
|
|
231570
231573
|
};
|
|
231571
|
-
});
|
|
231574
|
+
}));
|
|
231575
|
+
return schemas;
|
|
231572
231576
|
} catch (error) {
|
|
231573
231577
|
console.error(`Error getting schemas for BigQuery connection ${connection.name}:`, error);
|
|
231574
231578
|
throw new Error(`Failed to get schemas for BigQuery connection ${connection.name}: ${error.message}`);
|
|
@@ -238915,7 +238919,7 @@ class Project {
|
|
|
238915
238919
|
async deletePackage(packageName) {
|
|
238916
238920
|
const _package = this.packages.get(packageName);
|
|
238917
238921
|
if (!_package) {
|
|
238918
|
-
|
|
238922
|
+
return;
|
|
238919
238923
|
}
|
|
238920
238924
|
await fs8.promises.rm(path6.join(this.projectPath, packageName), {
|
|
238921
238925
|
recursive: true
|
|
@@ -239049,7 +239053,7 @@ class ProjectStore {
|
|
|
239049
239053
|
}
|
|
239050
239054
|
const project = this.projects.get(projectName);
|
|
239051
239055
|
if (!project) {
|
|
239052
|
-
|
|
239056
|
+
return;
|
|
239053
239057
|
}
|
|
239054
239058
|
this.projects.delete(projectName);
|
|
239055
239059
|
return project;
|
|
@@ -239096,7 +239100,7 @@ class ProjectStore {
|
|
|
239096
239100
|
}
|
|
239097
239101
|
async loadProjectIntoDisk(projectName, projectPath) {
|
|
239098
239102
|
const absoluteTargetPath = `${publisherPath}/${projectName}`;
|
|
239099
|
-
if (projectPath.startsWith("/")) {
|
|
239103
|
+
if (projectPath.startsWith("/") || projectPath.startsWith("./")) {
|
|
239100
239104
|
try {
|
|
239101
239105
|
logger2.info(`Mounting local directory at "${projectPath}"`);
|
|
239102
239106
|
await this.mountLocalDirectory(projectPath, absoluteTargetPath, projectName);
|
|
@@ -239142,11 +239146,14 @@ class ProjectStore {
|
|
|
239142
239146
|
throw error;
|
|
239143
239147
|
}
|
|
239144
239148
|
}
|
|
239145
|
-
const errorMsg = `Invalid project path: "${projectPath}".
|
|
239149
|
+
const errorMsg = `Invalid project path: "${projectPath}". Paths must start with "/" or "./" or a GCS/S3/GitHub URI.`;
|
|
239146
239150
|
logger2.error(errorMsg, { projectName, projectPath });
|
|
239147
239151
|
throw new ProjectNotFoundError(errorMsg);
|
|
239148
239152
|
}
|
|
239149
239153
|
async mountLocalDirectory(projectPath, absoluteTargetPath, projectName) {
|
|
239154
|
+
if (projectPath.endsWith(".zip")) {
|
|
239155
|
+
projectPath = await this.unzipProject(projectPath);
|
|
239156
|
+
}
|
|
239150
239157
|
const projectDirExists = (await fs9.promises.stat(projectPath)).isDirectory();
|
|
239151
239158
|
if (projectDirExists) {
|
|
239152
239159
|
await fs9.promises.rm(absoluteTargetPath, {
|
|
@@ -243315,7 +243322,7 @@ app.patch(`${API_PREFIX2}/projects/:projectName`, async (req, res) => {
|
|
|
243315
243322
|
app.delete(`${API_PREFIX2}/projects/:projectName`, async (req, res) => {
|
|
243316
243323
|
try {
|
|
243317
243324
|
const project = await projectStore.deleteProject(req.params.projectName);
|
|
243318
|
-
res.status(200).json(await project
|
|
243325
|
+
res.status(200).json(await project?.serialize());
|
|
243319
243326
|
} catch (error) {
|
|
243320
243327
|
logger2.error(error);
|
|
243321
243328
|
const { json: json2, status } = internalErrorToHttpError(error);
|
package/package.json
CHANGED
package/src/server.ts
CHANGED
|
@@ -13,7 +13,11 @@ import { PackageController } from "./controller/package.controller";
|
|
|
13
13
|
import { QueryController } from "./controller/query.controller";
|
|
14
14
|
import { ScheduleController } from "./controller/schedule.controller";
|
|
15
15
|
import { WatchModeController } from "./controller/watch-mode.controller";
|
|
16
|
-
import {
|
|
16
|
+
import {
|
|
17
|
+
internalErrorToHttpError,
|
|
18
|
+
NotImplementedError,
|
|
19
|
+
PackageNotFoundError,
|
|
20
|
+
} from "./errors";
|
|
17
21
|
import { logger, loggerMiddleware } from "./logger";
|
|
18
22
|
import { initializeMcpServer } from "./mcp/server";
|
|
19
23
|
import { ProjectStore } from "./service/project_store";
|
|
@@ -269,7 +273,7 @@ app.patch(`${API_PREFIX}/projects/:projectName`, async (req, res) => {
|
|
|
269
273
|
app.delete(`${API_PREFIX}/projects/:projectName`, async (req, res) => {
|
|
270
274
|
try {
|
|
271
275
|
const project = await projectStore.deleteProject(req.params.projectName);
|
|
272
|
-
res.status(200).json(await project
|
|
276
|
+
res.status(200).json(await project?.serialize());
|
|
273
277
|
} catch (error) {
|
|
274
278
|
logger.error(error);
|
|
275
279
|
const { json, status } = internalErrorToHttpError(error as Error);
|
package/src/service/db_utils.ts
CHANGED
|
@@ -96,15 +96,22 @@ export async function getSchemasForConnection(
|
|
|
96
96
|
const projectId = connection.bigqueryConnection.defaultProjectId;
|
|
97
97
|
const options = projectId ? { projectId } : {};
|
|
98
98
|
const [datasets] = await bigquery.getDatasets(options);
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
99
|
+
const schemas = await Promise.all(
|
|
100
|
+
datasets
|
|
101
|
+
.filter((dataset) => dataset.id)
|
|
102
|
+
.map(async (dataset) => {
|
|
103
|
+
const [metadata] = await dataset.getMetadata();
|
|
104
|
+
return {
|
|
105
|
+
name: dataset.id,
|
|
106
|
+
isHidden: false,
|
|
107
|
+
isDefault: false,
|
|
108
|
+
// Include description from dataset metadata if available
|
|
109
|
+
description: (metadata as { description?: string })
|
|
110
|
+
?.description,
|
|
111
|
+
};
|
|
112
|
+
}),
|
|
113
|
+
);
|
|
114
|
+
return schemas;
|
|
108
115
|
} catch (error) {
|
|
109
116
|
console.error(
|
|
110
117
|
`Error getting schemas for BigQuery connection ${connection.name}:`,
|
package/src/service/project.ts
CHANGED
|
@@ -295,7 +295,7 @@ export class Project {
|
|
|
295
295
|
public async deletePackage(packageName: string) {
|
|
296
296
|
const _package = this.packages.get(packageName);
|
|
297
297
|
if (!_package) {
|
|
298
|
-
|
|
298
|
+
return;
|
|
299
299
|
}
|
|
300
300
|
await fs.promises.rm(path.join(this.projectPath, packageName), {
|
|
301
301
|
recursive: true,
|
|
@@ -179,7 +179,7 @@ export class ProjectStore {
|
|
|
179
179
|
}
|
|
180
180
|
const project = this.projects.get(projectName);
|
|
181
181
|
if (!project) {
|
|
182
|
-
|
|
182
|
+
return;
|
|
183
183
|
}
|
|
184
184
|
this.projects.delete(projectName);
|
|
185
185
|
return project;
|
|
@@ -237,7 +237,7 @@ export class ProjectStore {
|
|
|
237
237
|
private async loadProjectIntoDisk(projectName: string, projectPath: string) {
|
|
238
238
|
const absoluteTargetPath = `${publisherPath}/${projectName}`;
|
|
239
239
|
// Handle absolute paths
|
|
240
|
-
if (projectPath.startsWith("/")) {
|
|
240
|
+
if (projectPath.startsWith("/") || projectPath.startsWith("./")) {
|
|
241
241
|
try {
|
|
242
242
|
logger.info(`Mounting local directory at "${projectPath}"`);
|
|
243
243
|
await this.mountLocalDirectory(
|
|
@@ -308,7 +308,7 @@ export class ProjectStore {
|
|
|
308
308
|
}
|
|
309
309
|
}
|
|
310
310
|
|
|
311
|
-
const errorMsg = `Invalid project path: "${projectPath}".
|
|
311
|
+
const errorMsg = `Invalid project path: "${projectPath}". Paths must start with "/" or "./" or a GCS/S3/GitHub URI.`;
|
|
312
312
|
logger.error(errorMsg, { projectName, projectPath });
|
|
313
313
|
throw new ProjectNotFoundError(errorMsg);
|
|
314
314
|
}
|
|
@@ -318,6 +318,9 @@ export class ProjectStore {
|
|
|
318
318
|
absoluteTargetPath: string,
|
|
319
319
|
projectName: string,
|
|
320
320
|
) {
|
|
321
|
+
if (projectPath.endsWith(".zip")) {
|
|
322
|
+
projectPath = await this.unzipProject(projectPath);
|
|
323
|
+
}
|
|
321
324
|
const projectDirExists = (
|
|
322
325
|
await fs.promises.stat(projectPath)
|
|
323
326
|
).isDirectory();
|
|
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
|
|
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
|