collabmd 0.1.52 → 0.1.55
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/bin/collabmd.js +22 -40
- package/dist/client/assets/CodeMirrorEditor-UCMRAMCV-cMeDxAEL.js +1 -0
- package/dist/client/assets/{abnfDiagram-VCTEODGH-DxNxad6-.js → abnfDiagram-VCTEODGH-D2UdmYvj.js} +1 -1
- package/dist/client/assets/{abnfDiagram-O67JEVCF-Dwt6a0Ds.js → abnfDiagram-YUKMZFIV-DbmU4Q-X.js} +1 -1
- package/dist/client/assets/api-client-utils-C5ESDKMG.js +1 -0
- package/dist/client/assets/architecture-7GRP2DOG-BBwRXFv3.js +1 -1
- package/dist/client/assets/architecture-WOLXFQ4H-C0NxYiG7.js +1 -0
- package/dist/client/assets/{architectureDiagram-NJMV4G6O-D5CGiX3G.js → architectureDiagram-47P4ROYG-C7OjXK9S.js} +3 -3
- package/dist/client/assets/{architectureDiagram-5GKGNRK7-C1uvg5id.js → architectureDiagram-5GKGNRK7-CSiUzzeN.js} +1 -1
- package/dist/client/assets/base-CaIEJUF9.css +1 -0
- package/dist/client/assets/{blockDiagram-BEXU5L5S-BgTM0var.js → blockDiagram-E7TT5TSB-DMG-YlZw.js} +3 -3
- package/dist/client/assets/{blockDiagram-I7D4REHJ-B2YonsoG.js → blockDiagram-I7D4REHJ-sXfAgK2w.js} +1 -1
- package/dist/client/assets/{browser-BKLM0ThC-IxjwuOIz-C0mP17s1.js → browser-BKLM0ThC-BCLQGPD6-CcMAHZXi.js} +1 -1
- package/dist/client/assets/{c4Diagram-7LVT6UL2-r4IwomZm.js → c4Diagram-7LVT6UL2-C88V_K-8.js} +1 -1
- package/dist/client/assets/{c4Diagram-YGBWAQC7-_xZPrNkB.js → c4Diagram-CRA5TL53-D3F9ElJv.js} +2 -2
- package/dist/client/assets/canvasEditor-BJkwGzO1.css +1 -0
- package/dist/client/assets/canvasEditor-sBK7KfrD.js +1 -0
- package/dist/client/assets/{chunk-6AZGARVD--pTGpDnx.js → chunk-24IY7LWP-flnn6SWX.js} +1 -1
- package/dist/client/assets/chunk-2BW5OAIV-CNFO1U_e.js +10 -0
- package/dist/client/assets/{chunk-2E4U76K2-CIQUuV9n.js → chunk-2E4U76K2-DEnS5IbF.js} +1 -1
- package/dist/client/assets/{chunk-5V3GS4D5-B5uC2oxu.js → chunk-3M4EKCLJ-D-sZGCtO.js} +1 -1
- package/dist/client/assets/chunk-3YJQHVM4-Ctp__8EK.js +2 -0
- package/dist/client/assets/{chunk-7PRAP22T-9uTvtc_-.js → chunk-4EA7E6EY-bU4wRJot.js} +1 -1
- package/dist/client/assets/{chunk-4HAMMTFA-q0ldNVvr.js → chunk-4HAMMTFA-CQy6Skzw.js} +1 -1
- package/dist/client/assets/{chunk-6K3QC6MW-JnuvEGV4.js → chunk-4S7OKTRW-BpUW13a3.js} +1 -1
- package/dist/client/assets/{chunk-ICYGCRZG-odvlDZyA.js → chunk-53FOQ5SW-5lPdGYP4.js} +1 -1
- package/dist/client/assets/{chunk-75Z2AOVW-DitkSoSG.js → chunk-75Z2AOVW-BRdhvVTZ.js} +1 -1
- package/dist/client/assets/{chunk-GWA4HPMP-CGmv2yIq.js → chunk-7TKQ45FW-rA2u-WUl.js} +1 -1
- package/dist/client/assets/{chunk-GTNCS2PH-ChgkzEIi.js → chunk-AW2ZBBNX-DL0KGAdi.js} +3 -3
- package/dist/client/assets/{chunk-747NJXEK-BjqqAsS9.js → chunk-BP2KR52E-DAQ1pzDV.js} +1 -1
- package/dist/client/assets/{chunk-CLGD4ZFX-BfYJtJm1.js → chunk-CLGD4ZFX-DJiSE0gD.js} +1 -1
- package/dist/client/assets/{chunk-5DYCD2WN-BKWCKnK-.js → chunk-DBDB3WZW-CXleNlok.js} +1 -1
- package/dist/client/assets/{chunk-DU6HZSFF-CWlP1Dk_.js → chunk-DU6HZSFF-C-18UZkS.js} +1 -1
- package/dist/client/assets/{chunk-MBY4JIJT-DTJ4UcAm.js → chunk-E2ZNV5FY-D_07zfWd.js} +3 -3
- package/dist/client/assets/chunk-EU5HNXII-CETVNUXF.js +213 -0
- package/dist/client/assets/{chunk-F27PBJKO-DPcsPcEs.js → chunk-F27PBJKO-_beIJos4.js} +1 -1
- package/dist/client/assets/{chunk-2ZTRR5NV-DcPRfelM.js → chunk-F6S3BTY2-DVWKCAHp.js} +1 -1
- package/dist/client/assets/{chunk-RUX4WMZV-BGnd3s_C.js → chunk-FLFP27SU-CydzbSsY.js} +2 -2
- package/dist/client/assets/chunk-FVRAUYC3-C7b9SJ81.js +1 -0
- package/dist/client/assets/{chunk-GMAD6QVW-Bgk8qnty.js → chunk-GMAD6QVW-DnZH7DxV.js} +1 -1
- package/dist/client/assets/{chunk-GVQU2GXP-CQ8cl-Uu.js → chunk-GVQU2GXP-B0Vm415C.js} +1 -1
- package/dist/client/assets/chunk-H5A3YXKD-ChP7mNJq.js +41 -0
- package/dist/client/assets/{chunk-742MDFTN-D1nh6vNv.js → chunk-HJ2JQQFS-DQX7RePR.js} +1 -1
- package/dist/client/assets/{chunk-NETBCI7D-CmUwDWUZ.js → chunk-HTAEGDNF-C0PA_N-c.js} +1 -1
- package/dist/client/assets/{chunk-IMKFNOWR-CBqxfpcP.js → chunk-IMKFNOWR-DoO8IHzF.js} +1 -1
- package/dist/client/assets/{chunk-IH6LHLGP-BNevEHZK.js → chunk-KPI5JJXK-B2ld5-w4.js} +1 -1
- package/dist/client/assets/{chunk-WEXAMYUT-DDlVNp8J.js → chunk-KQW6MTUR-OQ4MyMr_.js} +1 -1
- package/dist/client/assets/{chunk-L3NEJ4N5-BflzkdTI.js → chunk-L3NEJ4N5-CvHossEU.js} +1 -1
- package/dist/client/assets/chunk-NGNAAXSQ-DqoPQk1a.js +136 -0
- package/dist/client/assets/{chunk-UA2S7LBM-DicYDjDM.js → chunk-NTY3LDVX-CVWLK_fh.js} +1 -1
- package/dist/client/assets/{chunk-UY3FDG6J-QT-rkt0y.js → chunk-OD3NTWWA-Dz9nCUGX.js} +1 -1
- package/dist/client/assets/{chunk-OSK3NFVY-DqeKV_pg.js → chunk-OSK3NFVY-C3JOcBao.js} +1 -1
- package/dist/client/assets/{chunk-P2QGCYS3-BA--DhpW.js → chunk-P2QGCYS3-Bfo8qS8r.js} +1 -1
- package/dist/client/assets/{chunk-POPQ4Y6H-V_NEc45n.js → chunk-POPQ4Y6H-sv6rCftH.js} +1 -1
- package/dist/client/assets/{chunk-PWAF6VOD-D_kLse-N.js → chunk-PWAF6VOD-B-AT-L2H.js} +1 -1
- package/dist/client/assets/{chunk-3Z5EZCMW-BAnA6eQ7.js → chunk-QNH66VMT-Cb9xxTwQ.js} +1 -1
- package/dist/client/assets/{chunk-SHT3W25Y-YM3S-A_M.js → chunk-SHT3W25Y-C1lu518T.js} +1 -1
- package/dist/client/assets/{chunk-GNY47TPC-CTrH5O5R.js → chunk-SVEVUXB4-BnM-LXop.js} +1 -1
- package/dist/client/assets/{chunk-SVP7TREG-DdNhDOmW.js → chunk-SVP7TREG-CKqt0syj.js} +1 -1
- package/dist/client/assets/{chunk-TICWLB2K-BGGgCr4x.js → chunk-TICWLB2K-D2ZnWAfF.js} +1 -1
- package/dist/client/assets/{chunk-TLUHSLCS-DCZhIDYA.js → chunk-TLUHSLCS-BMIhqv1X.js} +1 -1
- package/dist/client/assets/{chunk-6EIED4P4-DBVWq7Tz.js → chunk-TPMEZKFX-DIPHIqGb.js} +1 -1
- package/dist/client/assets/{chunk-6TQVIW2G-BSj0l_pu.js → chunk-VPELOWWC-DXayM28-.js} +1 -1
- package/dist/client/assets/chunk-VPRB5NB3-BqaJfj_v.js +127 -0
- package/dist/client/assets/{chunk-I5DQTOEV-aBZooNp1.js → chunk-VTWWFHGB-SZnJiyWY.js} +1 -1
- package/dist/client/assets/{chunk-KI3K4JFJ-FTtDwx3-.js → chunk-VZTHESGH-eHyXmK8W.js} +1 -1
- package/dist/client/assets/{chunk-7INBJB4K-CDmiHbaX.js → chunk-XC4XBNZT-D9oehSn8.js} +20 -20
- package/dist/client/assets/{chunk-XHIXRSVI-DN_fEwws.js → chunk-YK26KJH5-DVy3MGMd.js} +1 -1
- package/dist/client/assets/{chunk-6AEJRKK7-DTVZj5bY.js → chunk-Z6ETV63D-DOcrnz-P.js} +1 -1
- package/dist/client/assets/{chunk-OUJLGHUK-75UXlPjl.js → chunk-ZO67DCNQ-BAOMIkLF.js} +1 -1
- package/dist/client/assets/classDiagram-ZZMXUADV-BmETdFmC.js +1 -0
- package/dist/client/assets/{classDiagram-v2-NBCMYWYE-3TQORq33.js → classDiagram-v2-K4WV4PDN-eaadfJDB.js} +3 -3
- package/dist/client/assets/classDiagram-v2-VYDZK3BY-BmETdFmC.js +1 -0
- package/dist/client/assets/{comment-markdown-renderer-Bxi_JRSR.js → comment-markdown-renderer-CpBKaj7H.js} +1 -1
- package/dist/client/assets/comment-thread-store-DUQsWtnu.js +1 -0
- package/dist/client/assets/comment-threads-DnfkLVJA.js +4 -0
- package/dist/client/assets/comment-ui-shared-D_pgPUti.js +7 -0
- package/dist/client/assets/cynefin-EF2NZ3EQ-DVkJeZ8i.js +1 -0
- package/dist/client/assets/cynefin-OW5HDTMX-CF3N9j1_.js +1 -1
- package/dist/client/assets/{cynefinDiagram-VND7K2PF-DwfMZ3vk.js → cynefinDiagram-3GCD6N5R-DjpAsBHC.js} +1 -1
- package/dist/client/assets/{cynefinDiagram-5FMLGOSQ-DTnLZaO7.js → cynefinDiagram-5FMLGOSQ-D2rFQG67.js} +1 -1
- package/dist/client/assets/dagre-C-rnJpZF.js +1 -0
- package/dist/client/assets/{dagre-GXQ25YYZ-Vtyx08Qh.js → dagre-GXQ25YYZ-Cku9eia9.js} +2 -2
- package/dist/client/assets/{dagre-6A5THRUB-DewyAGK6.js → dagre-W4DXFKR2-DOMOIsPd.js} +2 -2
- package/dist/client/assets/deferred-collab-C9aa9cvT.css +1 -0
- package/dist/client/assets/deferred-git-BPQ-UgrN.css +1 -0
- package/dist/client/assets/deferred-preview-B-RebLry.css +1 -0
- package/dist/client/assets/{diagram-22UHCM2B-DbZirFfl.js → diagram-2UJZ2QOL-D8WvnEyx.js} +6 -6
- package/dist/client/assets/{diagram-3UASUU5V-DmhdYv6_.js → diagram-OVF4WLC6-D8_escYE.js} +2 -2
- package/dist/client/assets/{diagram-CDSNMT55-D_qyS11R.js → diagram-PFPMY2P6-B1izZfrN.js} +3 -3
- package/dist/client/assets/{diagram-S7CK7UJ4-CGTzfo2f.js → diagram-S7CK7UJ4-BzicH2t-.js} +1 -1
- package/dist/client/assets/{diagram-MLGK6HIB-DIBG6Ivu.js → diagram-UMYRVEAY-Djf7WDjZ.js} +1 -1
- package/dist/client/assets/{diagram-UQ7AKVKN-CWZS8QtB.js → diagram-UQ7AKVKN-DqX4zTtr.js} +1 -1
- package/dist/client/assets/{diagram-VSXAHHWV-DaO1nOZF.js → diagram-VSXAHHWV-DnVbfI4Y.js} +1 -1
- package/dist/client/assets/{diagram-VX7I27RA-B54P6Cyf.js → diagram-VX7I27RA-D-Dj0TQC.js} +1 -1
- package/dist/client/assets/{diagram-MPIPVDR6-D9XsALDV.js → diagram-YEKJPTXX-B40bP3Yr.js} +2 -2
- package/dist/client/assets/{diagram-Z3DM3KII-Cl2EXiXp.js → diagram-Z3DM3KII-_iT7Uz5p.js} +1 -1
- package/dist/client/assets/diagram-ZIFT7M5P-BUUK0oNw.js +3 -0
- package/dist/client/assets/{direct-engine-DdrQKpgq-4QysbH_V.js → direct-engine-DVLMOJWp-DWtWIifK.js} +1 -1
- package/dist/client/assets/dist-26Ce-5t4.js +1 -0
- package/dist/client/assets/dist-8MLNn-I6.js +1 -0
- package/dist/client/assets/dist-Amm5Pr1C.js +1 -0
- package/dist/client/assets/dist-BXXPaoUV.js +1 -0
- package/dist/client/assets/{dist-zHDLm1oE.js → dist-Bkb-_VdB.js} +1 -1
- package/dist/client/assets/dist-Bl4yuUS9.js +1 -0
- package/dist/client/assets/{dist-CKf7LlAo.js → dist-C2CGvCPd.js} +1 -1
- package/dist/client/assets/dist-C2niyEh0.js +1 -0
- package/dist/client/assets/{dist-Y6zYRI-A.js → dist-CFCSUmJk.js} +1 -1
- package/dist/client/assets/dist-CHUI56fT.js +6 -0
- package/dist/client/assets/dist-CJh3Qrid.js +13 -0
- package/dist/client/assets/{dist-Ch6Sr9KF.js → dist-CKxETpSC.js} +3 -3
- package/dist/client/assets/dist-CSHJthAI.js +2 -0
- package/dist/client/assets/dist-CbKnZGN4.js +1 -0
- package/dist/client/assets/{dist-BVCNc-Es.js → dist-Cik4RJXj.js} +1 -1
- package/dist/client/assets/{dist-DGa-2MNX.js → dist-CqkAY6Ot.js} +2 -2
- package/dist/client/assets/dist-D2ql2LCd.js +1 -0
- package/dist/client/assets/{dist-CvVoyTRF.js → dist-D47MOYFN.js} +1 -1
- package/dist/client/assets/dist-DBhUaexM.js +1 -0
- package/dist/client/assets/dist-DJux6Vc5.js +1 -0
- package/dist/client/assets/{dist-CXOUa90Q.js → dist-DLNdMWPH.js} +1 -1
- package/dist/client/assets/dist-DPJj-Y3l.js +1 -0
- package/dist/client/assets/{dist-DI6c02Da.js → dist-DRYFMufe.js} +6 -6
- package/dist/client/assets/{dist-CUsXdnU4.js → dist-DTGcVSU8.js} +1 -1
- package/dist/client/assets/dist-DlOxjzWi.js +9 -0
- package/dist/client/assets/{dist-BfpAc922.js → dist-DogjjM_B.js} +1 -1
- package/dist/client/assets/dist-Dyv_RvyB.js +23 -0
- package/dist/client/assets/dist-FUFeH5Cx.js +1 -0
- package/dist/client/assets/dist-It70ktCU.js +1 -0
- package/dist/client/assets/dist-QMvcnJHf.js +1 -0
- package/dist/client/assets/dist-QN1K2czv.js +11 -0
- package/dist/client/assets/dist-W8ilOKl3.js +1 -0
- package/dist/client/assets/dist-_17-t9qP.js +1 -0
- package/dist/client/assets/{dist-CsQTfQFi.js → dist-uE774WWs.js} +1 -1
- package/dist/client/assets/document-formatter-DtXmKZcy.js +1 -0
- package/dist/client/assets/drawioEditor-DO6IOaJ1.js +9 -0
- package/dist/client/assets/{ebnfDiagram-PWID7BFC-PfC84FyI.js → ebnfDiagram-PWID7BFC-IemGPf9X.js} +1 -1
- package/dist/client/assets/{ebnfDiagram-ZINNZB2B-DYvm_QtE.js → ebnfDiagram-VR2GEFS7-9fXqy1DI.js} +1 -1
- package/dist/client/assets/editor-session-CPsqXY_A.js +13 -0
- package/dist/client/assets/elk-IJKZMXRS-DsbrbBYg.js +27 -0
- package/dist/client/assets/embedded-editor-base-C44ZcCZv.css +1 -0
- package/dist/client/assets/{embedpdf-DyOonRvx.js → embedpdf-BfUI-3pv.js} +1 -1
- package/dist/client/assets/{embedpdf-DA4bA119-DsoNiPlQ.js → embedpdf-cl9qiF45-CLMxJTMP.js} +3 -3
- package/dist/client/assets/en-7ZVUCEYH-C_VXKxxb.js +1 -0
- package/dist/client/assets/{erDiagram-OPXOYQCR-o8GRv8A_.js → erDiagram-O2IAPWRE-Cdadm-HN.js} +2 -2
- package/dist/client/assets/{erDiagram-RLTQ6QDP-C9cJl5NB.js → erDiagram-RLTQ6QDP-CGGmjm8t.js} +1 -1
- package/dist/client/assets/{estree-DCT3Jm65.js → estree-DGmLqopC.js} +17 -17
- package/dist/client/assets/eventmodeling-K75KTNOO-BWBlZ5cR.js +1 -0
- package/dist/client/assets/eventmodeling-NTZA5JFV-CDy1bN6j.js +1 -1
- package/dist/client/assets/excalidraw-element-link-NQnskRkm.js +1 -0
- package/dist/client/assets/excalidraw-scene-DLlw4jyc.js +1 -0
- package/dist/client/assets/excalidrawEditor-DiKOIudt.css +1 -0
- package/dist/client/assets/excalidrawEditor-W2lZ5Mej.js +9 -0
- package/dist/client/assets/export-page-Bomh9oEr.js +46 -0
- package/dist/client/assets/exportDocument-BFIOECJ3.js +2 -0
- package/dist/client/assets/exportDocument-D0mONgQ4.css +1 -0
- package/dist/client/assets/file-kind-BGxTVHan.js +1 -0
- package/dist/client/assets/{file-search-3hYF4cYa.js → file-search-Dk2O14Vw.js} +1 -1
- package/dist/client/assets/flowDiagram-HODETNUW-DcVVYJUZ.js +1 -0
- package/dist/client/assets/flowDiagram-OXPTDLAJ-Dy6y46oF.js +1 -0
- package/dist/client/assets/{ganttDiagram-EL5Y4UJY-x40PW0Ah.js → ganttDiagram-EL5Y4UJY-Duu4KnsU.js} +1 -1
- package/dist/client/assets/ganttDiagram-R7TSEDQI-BWy52pjn.js +292 -0
- package/dist/client/assets/gitGraph-4MIJSDKK-B-rpDYbz.js +1 -1
- package/dist/client/assets/gitGraph-VSP46ZUC-1499lQAI.js +1 -0
- package/dist/client/assets/{gitGraphDiagram-WWUBYQGX-ahsNaZsp.js → gitGraphDiagram-WWUBYQGX-CaJ0vC1a.js} +1 -1
- package/dist/client/assets/gitGraphDiagram-XJZIOB7I-DJwp9ilx.js +106 -0
- package/dist/client/assets/graphlib-DS17s2tU.js +1 -0
- package/dist/client/assets/{html-CBXMuS97.js → html-BryNQ_yx.js} +6 -6
- package/dist/client/assets/image-6XY3GD3F-DCWbu6d4.js +1 -0
- package/dist/client/assets/image-lightbox-controller-DAcXEXxT.js +184 -0
- package/dist/client/assets/index-CglpXOg7.css +1 -0
- package/dist/client/assets/index-D3WGkxfI.js +960 -0
- package/dist/client/assets/info-A6RAGUB7-BlutK7BT.js +1 -1
- package/dist/client/assets/info-OHQRW6UA-BDFQOo4H.js +1 -0
- package/dist/client/assets/{infoDiagram-27XIBGKW-MrZyptIy.js → infoDiagram-27XIBGKW-DBJh7QOu.js} +1 -1
- package/dist/client/assets/{infoDiagram-VRGFBTTK-KkUjDRAQ.js → infoDiagram-5W2HQ5XZ-DmWsqJ0w.js} +1 -1
- package/dist/client/assets/{ishikawaDiagram-5VMMS53U-Bnt9yM0O.js → ishikawaDiagram-5VMMS53U-CeEbSJem.js} +1 -1
- package/dist/client/assets/{ishikawaDiagram-OU5B5YK6-Di9BcpOY.js → ishikawaDiagram-K3B6WC7H-DH1NI35G.js} +2 -2
- package/dist/client/assets/{journeyDiagram-3NMN7TZE-Bl0abK1r.js → journeyDiagram-3NMN7TZE-BoIEEr6U.js} +1 -1
- package/dist/client/assets/{journeyDiagram-ZHPQQLJL-J-sGrs9e.js → journeyDiagram-COXZFDF6-CnHV2f9V.js} +3 -3
- package/dist/client/assets/{kanban-definition-PNTS6WVX-5ZDV_yIa.js → kanban-definition-P3RFRI5V-Cxvn5ZAG.js} +4 -4
- package/dist/client/assets/{kanban-definition-UXKFOSKX-DMgUfNt0.js → kanban-definition-UXKFOSKX-BY16Tgbr.js} +1 -1
- package/dist/client/assets/keyboard-shortcuts-BWNCBJqw.js +1 -0
- package/dist/client/assets/lobby-presence-DNNXcuwR.js +1 -0
- package/dist/client/assets/{markdown-Bo71X2X2.js → markdown-DU84620G.js} +17 -17
- package/dist/client/assets/markdown-headings-zYEUahfW.js +41 -0
- package/dist/client/assets/{markdown-math-CyyBVuDO.js → markdown-math-B96cnrz1.js} +11 -11
- package/dist/client/assets/{mermaid-parser.core-Bpogunsh.js → mermaid-parser.core-R-uwU5kf.js} +3 -3
- package/dist/client/assets/{mermaid-parser.core-DBy--Jc0.js → mermaid-parser.core-mE6t1qEO.js} +1 -1
- package/dist/client/assets/mermaid.core-D8Z6LN7O.js +10 -0
- package/dist/client/assets/{mindmap-definition-NLK3R4M7-ByVb-0vj.js → mindmap-definition-LZFPQGKD-DVfFenfJ.js} +3 -3
- package/dist/client/assets/{mindmap-definition-YA3MSWOX-DBZN5_GH.js → mindmap-definition-YA3MSWOX-DtiE80UJ.js} +1 -1
- package/dist/client/assets/packet-AYTQ26CC-DvbY8dI6.js +1 -1
- package/dist/client/assets/packet-JDAUHWVQ-DJ9K2MA4.js +1 -0
- package/dist/client/assets/{pdfium-RAgkpwfK.wasm → pdfium-BJ2Yip8Q.wasm} +0 -0
- package/dist/client/assets/{pegDiagram-GJSIUBJH-aost1sSO.js → pegDiagram-BGZESJAR-DxfvEcwv.js} +1 -1
- package/dist/client/assets/{pegDiagram-XKGWAZYB-DRo8CZu3.js → pegDiagram-XKGWAZYB-CyozY-Kt.js} +1 -1
- package/dist/client/assets/pie-WAS4IAKB-DWSm9SSD.js +1 -1
- package/dist/client/assets/pie-XZMESJXO-CQIQasY-.js +1 -0
- package/dist/client/assets/{pieDiagram-5QR66LMP-BICdpEuz.js → pieDiagram-CAPJLFHJ-CRlMcrv3.js} +2 -2
- package/dist/client/assets/{pieDiagram-E7YTZNPT-CZThaHsc.js → pieDiagram-E7YTZNPT-BRdmTkDq.js} +1 -1
- package/dist/client/assets/preload-helper-CYtfOYgs.js +1 -0
- package/dist/client/assets/preview-render-compiler-D_aJv7Ew.js +3 -0
- package/dist/client/assets/{preview-render-worker-BI2bFVqM.js → preview-render-worker-dFNyrVyB.js} +47 -43
- package/dist/client/assets/prod-ItolaHmf.js +145 -0
- package/dist/client/assets/prod-rdly4JJQ.js +1 -0
- package/dist/client/assets/{quadrantDiagram-AXDQQJYC-C5iowkl_.js → quadrantDiagram-AXDQQJYC-7QyPIXkF.js} +1 -1
- package/dist/client/assets/{quadrantDiagram-O4NWA36T-Bgx5bF97.js → quadrantDiagram-GDMTTRAM-DE30uqTl.js} +3 -3
- package/dist/client/assets/quick-switcher-controller-DsK70I7K.js +1 -0
- package/dist/client/assets/radar-ABXABTNO-ByfpCXh9.js +1 -0
- package/dist/client/assets/radar-RG4KPBEZ-BfNQUEQy.js +1 -1
- package/dist/client/assets/railroad-74A4TZTK-BaQ6U6eJ.js +1 -1
- package/dist/client/assets/railroad-I3PHUGI6-CTUn9HhI.js +1 -0
- package/dist/client/assets/railroad-abnf-HS5TGJTU-BJ3KZw7J.js +1 -1
- package/dist/client/assets/railroad-abnf-LNEFI6M7-Ct-b-y0F.js +1 -0
- package/dist/client/assets/railroad-ebnf-DWYD2UWJ-BZMYMWOe.js +1 -0
- package/dist/client/assets/railroad-ebnf-LZEXJU2U-DA0sEq7w.js +1 -1
- package/dist/client/assets/railroad-peg-JR7BVNR7-Dj23PxYc.js +1 -0
- package/dist/client/assets/railroad-peg-WCYAUIDC-DCmlICzO.js +1 -1
- package/dist/client/assets/{railroadDiagram-O6MQD6OU-BTt_rKjT.js → railroadDiagram-O6MQD6OU-BPk3RS2D.js} +1 -1
- package/dist/client/assets/{railroadDiagram-XR7U4H2S-DbVoNgSz.js → railroadDiagram-SM67HX2B-CZRXJ647.js} +1 -1
- package/dist/client/assets/{requirementDiagram-BXWQKSXE-BkvazG7r.js → requirementDiagram-BXWQKSXE-BRwfym6z.js} +1 -1
- package/dist/client/assets/{requirementDiagram-PLB6GJNP-BT0j9C40.js → requirementDiagram-X7JNWC4A-BofCuLJA.js} +4 -4
- package/dist/client/assets/runtime-config-CvrkHb0n.js +1 -0
- package/dist/client/assets/runtime-paths-qQGhzNx4.js +1 -0
- package/dist/client/assets/{sankeyDiagram-P5KCCOFB-C_IemB9h.js → sankeyDiagram-P5KCCOFB-D4LcrKpW.js} +1 -1
- package/dist/client/assets/{sankeyDiagram-IPEJSGJF-X1BCUIrf.js → sankeyDiagram-UM26HJRW-CLKMDbej.js} +3 -3
- package/dist/client/assets/{sequenceDiagram-WJ2MYXX4-CxFBgLGd.js → sequenceDiagram-WJ2MYXX4-DQjtv-Bs.js} +1 -1
- package/dist/client/assets/sequenceDiagram-ZO4K6R2Y-CDP_m6ma.js +169 -0
- package/dist/client/assets/sizeCapture-INFHLROL-3uHXrFqA.js +1 -0
- package/dist/client/assets/sizeCapture-INFHLROL-BMR1ovSU.js +1 -0
- package/dist/client/assets/src-D5mvpivG.js +2 -0
- package/dist/client/assets/{standalone-6z5x8CWe.js → standalone-D_lg5NC9.js} +1 -1
- package/dist/client/assets/{stateDiagram-D77RDMKH-BaSQ6Owj.js → stateDiagram-D77RDMKH-DSMvV-kF.js} +1 -1
- package/dist/client/assets/stateDiagram-v2-MP3YSRHH-ClmOOUsT.js +1 -0
- package/dist/client/assets/{stateDiagram-v2-GCMORJYK-CsVcfwVp.js → stateDiagram-v2-TBUQTH76-Dc5-FKzd.js} +2 -2
- package/dist/client/assets/{swimlanes-42K2YHIH-CALFEmiS.js → swimlanes-42K2YHIH-BUz31lO3.js} +1 -1
- package/dist/client/assets/{swimlanes-2SLR337P-CnYTVqRX.js → swimlanes-N4OXWK64-Dd3dFdPD.js} +1 -1
- package/dist/client/assets/swimlanesDiagram-K3J5GTZL-Bz9gFdls.js +8 -0
- package/dist/client/assets/swimlanesDiagram-VR7AAH4N-DoDs3zod.js +8 -0
- package/dist/client/assets/{timeline-definition-24CTP7MA-zse-5Dbm.js → timeline-definition-24CTP7MA-BvqCvSjy.js} +1 -1
- package/dist/client/assets/{timeline-definition-EJHVYXUP-BhqPlKkN.js → timeline-definition-YOQAKGHF-D2XWPSLs.js} +3 -3
- package/dist/client/assets/treeView-D4JQ5SDB-DcX7Bx0H.js +1 -0
- package/dist/client/assets/treeView-Q6P3EWNA-BvHOzbu9.js +1 -1
- package/dist/client/assets/treemap-SAJKECNS-BcCHmcAX.js +1 -0
- package/dist/client/assets/treemap-WGGIJYW6-oety7paS.js +1 -1
- package/dist/client/assets/usecaseDiagram-VIAY4XPW-CDe-IMjS.js +328 -0
- package/dist/client/assets/vault-api-client-DrRW0QwO.js +7 -0
- package/dist/client/assets/{vennDiagram-4TSXK5OY-DgHr6cJD.js → vennDiagram-4TSXK5OY-BW6Qp12d.js} +1 -1
- package/dist/client/assets/{vennDiagram-UO4OBE2U-BRwLn2Q1.js → vennDiagram-BLWOH2XV-KxIPKpHi.js} +3 -3
- package/dist/client/assets/wardley-7MLQ67FV-DOahSwbZ.js +1 -0
- package/dist/client/assets/wardley-WFR3VGLG-BdwDpX_I.js +1 -1
- package/dist/client/assets/{wardleyDiagram-VM6X3IG4-9A60XZis.js → wardleyDiagram-VM6X3IG4-BoCETVsK.js} +1 -1
- package/dist/client/assets/{wardleyDiagram-VNRHLVJA-B_tMcVFG.js → wardleyDiagram-YMQ3BMBF-BNYqEy7M.js} +4 -4
- package/dist/client/assets/{wiki-link-resolver-Dch88erO.js → wiki-link-resolver-BCdGUpdu.js} +1 -1
- package/dist/client/assets/{worker-engine-m0rlHn8R-5h66k403.js → worker-engine-BCCrxWYm-1fphds7O.js} +1 -1
- package/dist/client/assets/workspace-sync-client-C_P9wtjf.js +1 -0
- package/dist/client/assets/{xychartDiagram-S5SC5T6Z-D00iy-wB.js → xychartDiagram-S5SC5T6Z-eB5Fu9P7.js} +1 -1
- package/dist/client/assets/xychartDiagram-TAQBALBS-Sv6aaptV.js +7 -0
- package/dist/client/assets/yjs-Jd9fna_Y.js +4 -0
- package/dist/client/assets/yjs-provider-reset-guard-Cqu0Z6xH.js +1 -0
- package/dist/client/canvas-editor.html +16 -0
- package/dist/client/drawio-editor.html +9 -8
- package/dist/client/excalidraw-editor.html +33 -32
- package/dist/client/export-document.html +4 -3
- package/dist/client/index.html +13 -2
- package/package.json +31 -33
- package/scripts/local-compose.mjs +101 -0
- package/src/client/app/canvas-editor.html +13 -0
- package/src/client/app/index.html +11 -0
- package/src/client/app/main-entry.js +30 -4
- package/src/client/application/app-shell/git-feature.js +3 -2
- package/src/client/application/app-shell/ui-feature-identity.js +1 -0
- package/src/client/application/app-shell/ui-feature-shell.js +2 -0
- package/src/client/application/app-shell/ui-feature-tab-activity.js +4 -0
- package/src/client/application/app-shell/workspace-feature.js +8 -34
- package/src/client/application/diagram-chrome.js +8 -11
- package/src/client/application/diagram-preview-hydrator.js +5 -5
- package/src/client/application/mermaid-preview-hydrator.js +3 -2
- package/src/client/application/plantuml-preview-hydrator.js +6 -0
- package/src/client/application/preview-render-compiler.js +34 -98
- package/src/client/application/preview-render-executor.js +3 -0
- package/src/client/application/preview-render-worker.js +2 -0
- package/src/client/application/preview-renderer.js +9 -5
- package/src/client/application/workspace-coordinator.js +18 -10
- package/src/client/application/workspace-preview-controller.js +105 -158
- package/src/client/application/workspace-route-controller.js +29 -54
- package/src/client/bootstrap/canvas-markdown-preview.js +87 -0
- package/src/client/bootstrap/collabmd-app-shell.js +31 -14
- package/src/client/browser-utils.js +21 -0
- package/src/client/canvas-editor.js +143 -0
- package/src/client/domain/canvas-view.js +50 -0
- package/src/client/domain/excalidraw-scene.js +4 -49
- package/src/client/domain/file-search.js +1 -1
- package/src/client/domain/highlight-runtime.js +0 -4
- package/src/client/domain/markdown-formatting.js +12 -94
- package/src/client/domain/markdown-headings.js +98 -0
- package/src/client/domain/runtime-paths.js +4 -0
- package/src/client/domain/wiki-link-completions.js +42 -10
- package/src/client/infrastructure/browser-preferences-port.js +27 -33
- package/src/client/infrastructure/canvas-room-client.js +210 -0
- package/src/client/infrastructure/canvas-text-editor.js +36 -0
- package/src/client/infrastructure/comment-thread-store.js +19 -77
- package/src/client/infrastructure/editor-view-adapter.js +0 -30
- package/src/client/infrastructure/excalidraw-room-client.js +22 -10
- package/src/client/infrastructure/hosted-api-client.js +4 -2
- package/src/client/infrastructure/runtime-config.js +14 -0
- package/src/client/infrastructure/vault-api-client.js +4 -4
- package/src/client/presentation/canvas-editor-view.js +1028 -0
- package/src/client/presentation/canvas-embed-controller.js +116 -0
- package/src/client/presentation/canvas-picker.js +111 -0
- package/src/client/presentation/drawio-embed-controller.js +4 -4
- package/src/client/presentation/excalidraw-embed-controller.js +13 -4
- package/src/client/presentation/file-action-controller.js +58 -1
- package/src/client/presentation/file-explorer-controller.js +1 -2
- package/src/client/presentation/file-explorer-view.js +31 -7
- package/src/client/presentation/file-icon-svg.js +1 -1
- package/src/client/presentation/file-tree-state.js +4 -1
- package/src/client/presentation/image-lightbox-controller.js +1 -5
- package/src/client/presentation/team-settings-controller.js +44 -10
- package/src/client/presentation/vault-dashboard.js +63 -0
- package/src/client/styles/components/actions.css +4 -16
- package/src/client/styles/components/surfaces.css +0 -7
- package/src/client/styles/features/comment-card.css +1 -2
- package/src/client/styles/features/comment-markdown.css +0 -18
- package/src/client/styles/features/diagram-preview.css +0 -18
- package/src/client/styles/features/git-branch.css +0 -4
- package/src/client/styles/foundation/themes.css +6 -0
- package/src/client/styles/foundation/utilities.css +3 -2
- package/src/client/styles/layout/editor-page.css +0 -13
- package/src/client/styles/layout/overlays.css +5 -0
- package/src/client/styles/layout/responsive.css +2 -7
- package/src/client/styles/layout/shell.css +165 -1
- package/src/client/styles/layout/view-modes.css +1 -0
- package/src/client/styles/surfaces/canvas-editor.css +239 -0
- package/src/domain/canvas-room-codec.js +359 -0
- package/src/domain/collabmd-content-capabilities.js +10 -1
- package/src/domain/comment-threads.js +49 -5
- package/src/domain/excalidraw-room-codec.js +23 -73
- package/src/domain/excalidraw-scene.js +48 -0
- package/src/domain/file-kind.js +13 -1
- package/src/server/application/workspace-reconciliation.js +0 -14
- package/src/server/config/env.js +39 -6
- package/src/server/domain/backlink-index.js +1 -36
- package/src/server/domain/bases/base-index-snapshot-store.js +41 -24
- package/src/server/domain/bases/base-query-service.js +1 -47
- package/src/server/domain/collaboration/collaboration-room.js +149 -15
- package/src/server/domain/collaboration/room-registry.js +7 -7
- package/src/server/domain/hosted-workspace.js +29 -2
- package/src/server/domain/plantuml-encoder.js +7 -43
- package/src/server/infrastructure/git/diff-service.js +1 -5
- package/src/server/infrastructure/git/history-service.js +18 -2
- package/src/server/infrastructure/git/untracked-files.js +1 -1
- package/src/server/infrastructure/http/create-git-api-command-handler.js +60 -149
- package/src/server/infrastructure/http/create-hosted-api-handler.js +5 -2
- package/src/server/infrastructure/http/create-static-handler.js +3 -1
- package/src/server/infrastructure/http/create-vault-api-query-handler.js +3 -3
- package/src/server/infrastructure/http/http-response.js +2 -36
- package/src/server/infrastructure/http/request-body.js +14 -49
- package/src/server/infrastructure/persistence/hosted-metadata-store.js +12 -3
- package/src/server/infrastructure/persistence/path-utils.js +8 -2
- package/src/server/infrastructure/persistence/vault-file-store.js +26 -60
- package/src/server/{infrastructure/git → shared}/image-mime.js +2 -2
- package/dist/client/assets/CodeMirrorEditor-UCMRAMCV-BEz2BKN1.js +0 -1
- package/dist/client/assets/_basePickBy-QJXUw_pr.js +0 -1
- package/dist/client/assets/_baseUniq-DR4vVjyC.js +0 -1
- package/dist/client/assets/architecture-7GRP2DOG-DJVtYNt-.js +0 -1
- package/dist/client/assets/browser-utils-vlHL9goC.js +0 -1
- package/dist/client/assets/chunk-3FUC2YCW-8tZlhTGX.js +0 -1
- package/dist/client/assets/chunk-4SOEAONT-C3fufoVl.js +0 -40
- package/dist/client/assets/chunk-7M6MHVWA-BDakkknV.js +0 -213
- package/dist/client/assets/chunk-FOHPRMQF-Dmmo5Kak.js +0 -161
- package/dist/client/assets/chunk-O7XYJQB3-D0_ZY2za.js +0 -126
- package/dist/client/assets/chunk-Z7XXMR3K-P4Vaq8hD.js +0 -10
- package/dist/client/assets/chunk-ZIGJFQKS-b8OUHKK5.js +0 -2
- package/dist/client/assets/classDiagram-ZZMXUADV-QLbh_Nkf.js +0 -1
- package/dist/client/assets/classDiagram-v2-VYDZK3BY-QLbh_Nkf.js +0 -1
- package/dist/client/assets/comment-thread-store-CHvy8GF8.js +0 -1
- package/dist/client/assets/comment-threads-nJhK1yfc.js +0 -4
- package/dist/client/assets/cynefin-OW5HDTMX-e-Quc9Yl.js +0 -1
- package/dist/client/assets/dagre-D7FiCLLP.js +0 -1
- package/dist/client/assets/deferred-collab-D4cxEdad.css +0 -1
- package/dist/client/assets/deferred-git-BHKtkFYi.css +0 -1
- package/dist/client/assets/deferred-preview-BAXYgf4T.css +0 -1
- package/dist/client/assets/diagram-ATOU4E4O-B5uX-jVO.js +0 -3
- package/dist/client/assets/dist-B7fBbwrO.js +0 -1
- package/dist/client/assets/dist-BYBF4LtZ.js +0 -1
- package/dist/client/assets/dist-B_1hMrc6.js +0 -1
- package/dist/client/assets/dist-BnVaoRgZ.js +0 -1
- package/dist/client/assets/dist-Bog8M5U3.js +0 -13
- package/dist/client/assets/dist-CAG5sIOj.js +0 -1
- package/dist/client/assets/dist-CYMCikZo.js +0 -1
- package/dist/client/assets/dist-CYfPeupF.js +0 -1
- package/dist/client/assets/dist-Ck-B8onw.js +0 -2
- package/dist/client/assets/dist-CrkYYcOU.js +0 -1
- package/dist/client/assets/dist-Cu5Ze2cs.js +0 -6
- package/dist/client/assets/dist-D4kDR0g8.js +0 -1
- package/dist/client/assets/dist-D8LnhZzy.js +0 -1
- package/dist/client/assets/dist-DNONgI1P.js +0 -11
- package/dist/client/assets/dist-DVBYH83t.js +0 -1
- package/dist/client/assets/dist-DX6qtdxv.js +0 -1
- package/dist/client/assets/dist-Da-jLrCf.js +0 -1
- package/dist/client/assets/dist-DofvCYzJ.js +0 -1
- package/dist/client/assets/dist-Dx37MHWs.js +0 -1
- package/dist/client/assets/dist-GTGhtpyW.js +0 -9
- package/dist/client/assets/dist-W0FoeIxk.js +0 -23
- package/dist/client/assets/dist-jVKfryIL.js +0 -1
- package/dist/client/assets/document-formatter-gO8qM2qY.js +0 -1
- package/dist/client/assets/drawioEditor-DCkWweiy.js +0 -9
- package/dist/client/assets/editor-session-DxRyr4EM.js +0 -14
- package/dist/client/assets/elk-276RUBZZ-B8LB3Pac.js +0 -27
- package/dist/client/assets/embedded-editor-base-elU0Avik.css +0 -1
- package/dist/client/assets/en-GNC3RJIS-CEy_oGTd.js +0 -1
- package/dist/client/assets/eventmodeling-NTZA5JFV-Dxtv5D-P.js +0 -1
- package/dist/client/assets/excalidraw-element-link-CGZ5934B.js +0 -7
- package/dist/client/assets/excalidraw-scene-6uROebca.js +0 -1
- package/dist/client/assets/excalidrawEditor-BCTFp_CV.css +0 -1
- package/dist/client/assets/excalidrawEditor-BVfSxjSO.js +0 -9
- package/dist/client/assets/export-page-BCo_e15t.js +0 -46
- package/dist/client/assets/exportDocument-Ba-n1X4U.css +0 -1
- package/dist/client/assets/exportDocument-DP6oE_or.js +0 -2
- package/dist/client/assets/file-kind-BwMIcZbi.js +0 -1
- package/dist/client/assets/flowDiagram-HODETNUW-Bq4470NR.js +0 -1
- package/dist/client/assets/flowDiagram-KWPJA3E3-DQG9qGiU.js +0 -1
- package/dist/client/assets/ganttDiagram-FUAMR5RP-BQpsI7gQ.js +0 -292
- package/dist/client/assets/gitGraph-4MIJSDKK-ZaBIE4Lb.js +0 -1
- package/dist/client/assets/gitGraphDiagram-X574FWY7-wbs_2m9f.js +0 -106
- package/dist/client/assets/graphlib-C9Tl7QrK.js +0 -1
- package/dist/client/assets/image-EJJKRVD3-BQfi5nWJ.js +0 -1
- package/dist/client/assets/index-BxAuGDoN.css +0 -1
- package/dist/client/assets/index-uw9O0z1c.js +0 -1112
- package/dist/client/assets/info-A6RAGUB7-BcGxhjED.js +0 -1
- package/dist/client/assets/lobby-presence-Cz5jGOPg.js +0 -1
- package/dist/client/assets/mermaid.core-BeOUPE3Q.js +0 -10
- package/dist/client/assets/packet-AYTQ26CC-CqpSjTWl.js +0 -1
- package/dist/client/assets/pie-WAS4IAKB-Bg2eCNl5.js +0 -1
- package/dist/client/assets/preload-helper-BAlEavIC.js +0 -1
- package/dist/client/assets/preview-render-compiler-ktU0SXxY.js +0 -43
- package/dist/client/assets/prod-DU-0VfI7.js +0 -145
- package/dist/client/assets/prod-cXUNdmYV.js +0 -1
- package/dist/client/assets/quick-switcher-controller-DSlOwOsU.js +0 -1
- package/dist/client/assets/radar-RG4KPBEZ-DxExotg6.js +0 -1
- package/dist/client/assets/railroad-74A4TZTK-FfHmeIQk.js +0 -1
- package/dist/client/assets/railroad-abnf-HS5TGJTU-CLkdDRsJ.js +0 -1
- package/dist/client/assets/railroad-ebnf-LZEXJU2U-B162zvcG.js +0 -1
- package/dist/client/assets/railroad-peg-WCYAUIDC-CGs5GeJ5.js +0 -1
- package/dist/client/assets/runtime-config-BFVdhnJu.js +0 -1
- package/dist/client/assets/runtime-paths-Cn0snt_9.js +0 -1
- package/dist/client/assets/sequenceDiagram-PO4LG4MO-B-2QfXhV.js +0 -169
- package/dist/client/assets/sizeCapture-INFHLROL-B0uUizjq.js +0 -1
- package/dist/client/assets/sizeCapture-INFHLROL-DrzwYt5z.js +0 -1
- package/dist/client/assets/stateDiagram-v2-MP3YSRHH-CLlwrdvU.js +0 -1
- package/dist/client/assets/swimlanesDiagram-TC7HE7FX-Bh4tmz27.js +0 -8
- package/dist/client/assets/swimlanesDiagram-VR7AAH4N-xhehUG9e.js +0 -8
- package/dist/client/assets/treeView-Q6P3EWNA-Cccy0ngL.js +0 -1
- package/dist/client/assets/treemap-WGGIJYW6-sMRCjCtX.js +0 -1
- package/dist/client/assets/usecaseDiagram-POWQR4AR-DR2LHQYs.js +0 -328
- package/dist/client/assets/vault-api-client-BQxLVPeF.js +0 -7
- package/dist/client/assets/wardley-WFR3VGLG-Y7xty_3m.js +0 -1
- package/dist/client/assets/workspace-sync-client-C2pdaQUN.js +0 -1
- package/dist/client/assets/xychartDiagram-PMCCYNJV-fRpZ1MA5.js +0 -7
- package/dist/client/assets/yjs-B41tM6Sz.js +0 -4
- package/dist/client/assets/yjs-provider-reset-guard-DpntzUDR.js +0 -1
- package/scripts/local-plantuml-compose.mjs +0 -92
- package/scripts/local-structurizr-compose.mjs +0 -101
|
@@ -41,160 +41,71 @@ export function createGitApiCommandHandler({
|
|
|
41
41
|
gitService,
|
|
42
42
|
workspaceMutationCoordinator = null,
|
|
43
43
|
}) {
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
}
|
|
84
|
-
return true;
|
|
85
|
-
}
|
|
86
|
-
|
|
87
|
-
if (requestUrl.pathname === '/api/git/stage-all' && req.method === 'POST') {
|
|
88
|
-
try {
|
|
89
|
-
jsonResponse(req, res, 200, await applyWorkspaceMutationEffects({
|
|
90
|
-
action: 'stage-all',
|
|
91
|
-
req,
|
|
92
|
-
responsePayload: await workspaceMutationCoordinator.runManagedWorkspaceMutation(
|
|
93
|
-
() => gitService.stageAll(),
|
|
94
|
-
),
|
|
95
|
-
workspaceMutationCoordinator,
|
|
96
|
-
}));
|
|
97
|
-
} catch (error) {
|
|
98
|
-
handleApiError(req, res, error, '[api] Failed to stage all git changes:', 'Failed to stage all git changes');
|
|
99
|
-
}
|
|
100
|
-
return true;
|
|
101
|
-
}
|
|
102
|
-
|
|
103
|
-
if (requestUrl.pathname === '/api/git/unstage-all' && req.method === 'POST') {
|
|
104
|
-
try {
|
|
105
|
-
jsonResponse(req, res, 200, await applyWorkspaceMutationEffects({
|
|
106
|
-
action: 'unstage-all',
|
|
107
|
-
req,
|
|
108
|
-
responsePayload: await workspaceMutationCoordinator.runManagedWorkspaceMutation(
|
|
109
|
-
() => gitService.unstageAll(),
|
|
110
|
-
),
|
|
111
|
-
workspaceMutationCoordinator,
|
|
112
|
-
}));
|
|
113
|
-
} catch (error) {
|
|
114
|
-
handleApiError(req, res, error, '[api] Failed to unstage all git changes:', 'Failed to unstage all git changes');
|
|
115
|
-
}
|
|
116
|
-
return true;
|
|
117
|
-
}
|
|
118
|
-
|
|
119
|
-
if (requestUrl.pathname === '/api/git/commit' && req.method === 'POST') {
|
|
120
|
-
try {
|
|
121
|
-
const body = await parseRequiredBody(req, res, 'message');
|
|
122
|
-
if (!body) {
|
|
123
|
-
return true;
|
|
124
|
-
}
|
|
125
|
-
|
|
126
|
-
jsonResponse(req, res, 200, await applyWorkspaceMutationEffects({
|
|
127
|
-
action: 'commit',
|
|
128
|
-
req,
|
|
129
|
-
responsePayload: await workspaceMutationCoordinator.runManagedWorkspaceMutation(
|
|
130
|
-
() => gitService.commitStaged({
|
|
131
|
-
author: authService?.getAuthenticatedUser?.(req) ?? null,
|
|
132
|
-
message: body.message,
|
|
133
|
-
}),
|
|
134
|
-
),
|
|
135
|
-
workspaceMutationCoordinator,
|
|
136
|
-
}));
|
|
137
|
-
} catch (error) {
|
|
138
|
-
handleApiError(req, res, error, '[api] Failed to commit staged changes:', 'Failed to commit staged changes');
|
|
139
|
-
}
|
|
140
|
-
return true;
|
|
141
|
-
}
|
|
44
|
+
const routes = [
|
|
45
|
+
{
|
|
46
|
+
action: 'stage', bodyField: 'path', errorMessage: 'Failed to stage git file',
|
|
47
|
+
run: (body) => gitService.stageFile(body.path),
|
|
48
|
+
},
|
|
49
|
+
{
|
|
50
|
+
action: 'unstage', bodyField: 'path', errorMessage: 'Failed to unstage git file',
|
|
51
|
+
run: (body) => gitService.unstageFile(body.path),
|
|
52
|
+
},
|
|
53
|
+
{
|
|
54
|
+
action: 'stage-all', errorMessage: 'Failed to stage all git changes',
|
|
55
|
+
run: () => gitService.stageAll(),
|
|
56
|
+
},
|
|
57
|
+
{
|
|
58
|
+
action: 'unstage-all', errorMessage: 'Failed to unstage all git changes',
|
|
59
|
+
run: () => gitService.unstageAll(),
|
|
60
|
+
},
|
|
61
|
+
{
|
|
62
|
+
action: 'commit', bodyField: 'message', errorMessage: 'Failed to commit staged changes',
|
|
63
|
+
run: (body, req) => gitService.commitStaged({
|
|
64
|
+
author: authService?.getAuthenticatedUser?.(req) ?? null,
|
|
65
|
+
message: body.message,
|
|
66
|
+
}),
|
|
67
|
+
},
|
|
68
|
+
{
|
|
69
|
+
action: 'push', errorMessage: 'Failed to push git branch',
|
|
70
|
+
run: () => gitService.pushBranch(),
|
|
71
|
+
},
|
|
72
|
+
{
|
|
73
|
+
action: 'pull', errorMessage: 'Failed to pull git branch',
|
|
74
|
+
run: (_body, req) => gitService.pullBranch({
|
|
75
|
+
author: authService?.getAuthenticatedUser?.(req) ?? null,
|
|
76
|
+
}),
|
|
77
|
+
},
|
|
78
|
+
{
|
|
79
|
+
action: 'reset-file', bodyField: 'path', errorMessage: 'Failed to reset git file',
|
|
80
|
+
run: (body) => gitService.resetFileToHead(body.path),
|
|
81
|
+
},
|
|
82
|
+
];
|
|
142
83
|
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
() => gitService.pushBranch(),
|
|
150
|
-
),
|
|
151
|
-
workspaceMutationCoordinator,
|
|
152
|
-
}));
|
|
153
|
-
} catch (error) {
|
|
154
|
-
handleApiError(req, res, error, '[api] Failed to push git branch:', 'Failed to push git branch');
|
|
155
|
-
}
|
|
156
|
-
return true;
|
|
84
|
+
return async function handleGitApiCommand(req, res, requestUrl) {
|
|
85
|
+
const route = req.method === 'POST'
|
|
86
|
+
? routes.find(({ action }) => requestUrl.pathname === `/api/git/${action}`)
|
|
87
|
+
: null;
|
|
88
|
+
if (!route) {
|
|
89
|
+
return false;
|
|
157
90
|
}
|
|
158
91
|
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
req,
|
|
164
|
-
responsePayload: await workspaceMutationCoordinator.runManagedWorkspaceMutation(
|
|
165
|
-
() => gitService.pullBranch({
|
|
166
|
-
author: authService?.getAuthenticatedUser?.(req) ?? null,
|
|
167
|
-
}),
|
|
168
|
-
),
|
|
169
|
-
workspaceMutationCoordinator,
|
|
170
|
-
}));
|
|
171
|
-
} catch (error) {
|
|
172
|
-
handleApiError(req, res, error, '[api] Failed to pull git branch:', 'Failed to pull git branch');
|
|
92
|
+
try {
|
|
93
|
+
const body = route.bodyField ? await parseRequiredBody(req, res, route.bodyField) : {};
|
|
94
|
+
if (!body) {
|
|
95
|
+
return true;
|
|
173
96
|
}
|
|
174
|
-
return true;
|
|
175
|
-
}
|
|
176
97
|
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
responsePayload: await workspaceMutationCoordinator.runManagedWorkspaceMutation(
|
|
188
|
-
() => gitService.resetFileToHead(body.path),
|
|
189
|
-
),
|
|
190
|
-
workspaceMutationCoordinator,
|
|
191
|
-
}));
|
|
192
|
-
} catch (error) {
|
|
193
|
-
handleApiError(req, res, error, '[api] Failed to reset git file:', 'Failed to reset git file');
|
|
194
|
-
}
|
|
195
|
-
return true;
|
|
98
|
+
jsonResponse(req, res, 200, await applyWorkspaceMutationEffects({
|
|
99
|
+
action: route.action,
|
|
100
|
+
req,
|
|
101
|
+
responsePayload: await workspaceMutationCoordinator.runManagedWorkspaceMutation(
|
|
102
|
+
() => route.run(body, req),
|
|
103
|
+
),
|
|
104
|
+
workspaceMutationCoordinator,
|
|
105
|
+
}));
|
|
106
|
+
} catch (error) {
|
|
107
|
+
handleApiError(req, res, error, `[api] ${route.errorMessage}:`, route.errorMessage);
|
|
196
108
|
}
|
|
197
|
-
|
|
198
|
-
return false;
|
|
109
|
+
return true;
|
|
199
110
|
};
|
|
200
111
|
}
|
|
@@ -107,8 +107,11 @@ export function createHostedApiHandler({
|
|
|
107
107
|
membership: await hostedWorkspaceService.acceptInvitation(user),
|
|
108
108
|
});
|
|
109
109
|
}],
|
|
110
|
-
['GET /api/hosted/audit', async ({ req, res, user }) => {
|
|
111
|
-
jsonResponse(req, res, 200,
|
|
110
|
+
['GET /api/hosted/audit', async ({ req, requestUrl, res, user }) => {
|
|
111
|
+
jsonResponse(req, res, 200, await hostedWorkspaceService.listAuditEvents(user, {
|
|
112
|
+
cursor: requestUrl.searchParams.get('cursor') || '',
|
|
113
|
+
limit: requestUrl.searchParams.get('limit') || 50,
|
|
114
|
+
}));
|
|
112
115
|
}],
|
|
113
116
|
]);
|
|
114
117
|
|
|
@@ -59,6 +59,7 @@ function buildRuntimeConfig({
|
|
|
59
59
|
wikiLinkAutoCreate,
|
|
60
60
|
wsBasePath,
|
|
61
61
|
vaults,
|
|
62
|
+
vaultDashboard,
|
|
62
63
|
}) {
|
|
63
64
|
return `window.__COLLABMD_CONFIG__ = ${JSON.stringify({
|
|
64
65
|
activeVault: vaults?.[0]?.id ?? '',
|
|
@@ -81,7 +82,8 @@ function buildRuntimeConfig({
|
|
|
81
82
|
structurizrEnabled: Boolean(structurizr?.enabled ?? structurizr?.serverUrl),
|
|
82
83
|
wikiLinkAutoCreate,
|
|
83
84
|
wsBasePath,
|
|
84
|
-
vaults: (vaults ?? []).map(({ id }) => ({ id })),
|
|
85
|
+
vaults: (vaults ?? []).map(({ id, name }) => ({ id, name: name || id })),
|
|
86
|
+
vaultDashboard: Boolean(vaultDashboard && !hosted?.enabled),
|
|
85
87
|
})};\n`;
|
|
86
88
|
}
|
|
87
89
|
|
|
@@ -225,9 +225,9 @@ async function handleBaseExport(req, res, _requestUrl, { baseQueryService }) {
|
|
|
225
225
|
}
|
|
226
226
|
}
|
|
227
227
|
|
|
228
|
-
async function handleFileTree(req, res, _requestUrl, {
|
|
228
|
+
async function handleFileTree(req, res, _requestUrl, { workspaceMutationCoordinator }) {
|
|
229
229
|
try {
|
|
230
|
-
const tree = workspaceMutationCoordinator
|
|
230
|
+
const tree = workspaceMutationCoordinator.getWorkspaceTree();
|
|
231
231
|
jsonResponse(req, res, 200, { tree });
|
|
232
232
|
} catch (error) {
|
|
233
233
|
console.error('[api] Failed to read file tree:', error.message);
|
|
@@ -454,7 +454,7 @@ async function handleSearch(req, res, requestUrl, { searchService }) {
|
|
|
454
454
|
|
|
455
455
|
async function handleVaultList(req, res, _requestUrl, { config }) {
|
|
456
456
|
// ponytail: ids only — absolute vault dirs are operator internals
|
|
457
|
-
const vaults = (config?.vaults ?? []).map(({ id }) => ({ id }));
|
|
457
|
+
const vaults = (config?.vaults ?? []).map(({ id, name }) => ({ id, name: name || id }));
|
|
458
458
|
jsonResponse(req, res, 200, { activeVault: vaults[0]?.id ?? null, vaults });
|
|
459
459
|
}
|
|
460
460
|
|
|
@@ -3,6 +3,7 @@ import {
|
|
|
3
3
|
constants as zlibConstants,
|
|
4
4
|
gzip,
|
|
5
5
|
} from 'node:zlib';
|
|
6
|
+
import { pipeline } from 'node:stream/promises';
|
|
6
7
|
|
|
7
8
|
const COMPRESSIBLE_CONTENT_TYPE_PATTERN = /^(?:text\/|application\/(?:javascript|json|xml)|image\/svg\+xml)/i;
|
|
8
9
|
const MIN_COMPRESSIBLE_BYTES = 1024;
|
|
@@ -212,42 +213,7 @@ export function sendStreamResponse(req, res, {
|
|
|
212
213
|
return Promise.resolve();
|
|
213
214
|
}
|
|
214
215
|
|
|
215
|
-
return
|
|
216
|
-
let settled = false;
|
|
217
|
-
|
|
218
|
-
const finish = (error = null) => {
|
|
219
|
-
if (settled) {
|
|
220
|
-
return;
|
|
221
|
-
}
|
|
222
|
-
|
|
223
|
-
settled = true;
|
|
224
|
-
res.off('finish', handleFinish);
|
|
225
|
-
res.off('error', handleError);
|
|
226
|
-
res.off('close', handleClose);
|
|
227
|
-
stream.off('error', handleError);
|
|
228
|
-
|
|
229
|
-
if (error) {
|
|
230
|
-
reject(error);
|
|
231
|
-
return;
|
|
232
|
-
}
|
|
233
|
-
|
|
234
|
-
resolve();
|
|
235
|
-
};
|
|
236
|
-
|
|
237
|
-
const handleFinish = () => finish();
|
|
238
|
-
const handleError = (error) => finish(error);
|
|
239
|
-
const handleClose = () => {
|
|
240
|
-
if (!res.writableEnded) {
|
|
241
|
-
finish(new Error('Response stream closed before completion'));
|
|
242
|
-
}
|
|
243
|
-
};
|
|
244
|
-
|
|
245
|
-
res.on('finish', handleFinish);
|
|
246
|
-
res.on('error', handleError);
|
|
247
|
-
res.on('close', handleClose);
|
|
248
|
-
stream.on('error', handleError);
|
|
249
|
-
stream.pipe(res);
|
|
250
|
-
});
|
|
216
|
+
return pipeline(stream, res);
|
|
251
217
|
}
|
|
252
218
|
|
|
253
219
|
export function jsonResponse(req, res, statusCode, data) {
|
|
@@ -3,56 +3,21 @@ import { createRequestError } from './http-errors.js';
|
|
|
3
3
|
export const REQUEST_BODY_LIMIT_BYTES = 8_388_608;
|
|
4
4
|
|
|
5
5
|
async function readRequestBuffer(req, maxBytes = REQUEST_BODY_LIMIT_BYTES) {
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
done = true;
|
|
18
|
-
req.off('data', onData);
|
|
19
|
-
req.off('end', onEnd);
|
|
20
|
-
req.off('error', onError);
|
|
21
|
-
callback(value);
|
|
22
|
-
};
|
|
23
|
-
|
|
24
|
-
const onData = (chunk) => {
|
|
25
|
-
if (limitError) {
|
|
26
|
-
return;
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
size += chunk.length;
|
|
30
|
-
if (size > maxBytes) {
|
|
31
|
-
chunks.length = 0;
|
|
32
|
-
limitError = createRequestError(413, 'Request body too large');
|
|
33
|
-
return;
|
|
34
|
-
}
|
|
35
|
-
|
|
6
|
+
const chunks = [];
|
|
7
|
+
let size = 0;
|
|
8
|
+
let tooLarge = false;
|
|
9
|
+
for await (const chunk of req) {
|
|
10
|
+
if (tooLarge) continue;
|
|
11
|
+
size += chunk.length;
|
|
12
|
+
if (size > maxBytes) {
|
|
13
|
+
chunks.length = 0;
|
|
14
|
+
tooLarge = true;
|
|
15
|
+
} else {
|
|
36
16
|
chunks.push(chunk);
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
finish(reject, limitError);
|
|
42
|
-
return;
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
finish(resolve, Buffer.concat(chunks));
|
|
46
|
-
};
|
|
47
|
-
|
|
48
|
-
const onError = (error) => {
|
|
49
|
-
finish(reject, error);
|
|
50
|
-
};
|
|
51
|
-
|
|
52
|
-
req.on('data', onData);
|
|
53
|
-
req.on('end', onEnd);
|
|
54
|
-
req.on('error', onError);
|
|
55
|
-
});
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
if (tooLarge) throw createRequestError(413, 'Request body too large');
|
|
20
|
+
return Buffer.concat(chunks);
|
|
56
21
|
}
|
|
57
22
|
|
|
58
23
|
export async function readRequestBody(req, maxBytes = REQUEST_BODY_LIMIT_BYTES) {
|
|
@@ -174,6 +174,8 @@ export class HostedMetadataStore {
|
|
|
174
174
|
metadata_json TEXT NOT NULL,
|
|
175
175
|
created_at INTEGER NOT NULL
|
|
176
176
|
);
|
|
177
|
+
CREATE INDEX IF NOT EXISTS audit_events_created_id_idx
|
|
178
|
+
ON audit_events(created_at DESC, id DESC);
|
|
177
179
|
|
|
178
180
|
CREATE TABLE IF NOT EXISTS operational_security_events (
|
|
179
181
|
id TEXT PRIMARY KEY,
|
|
@@ -514,11 +516,18 @@ export class HostedMetadataStore {
|
|
|
514
516
|
);
|
|
515
517
|
}
|
|
516
518
|
|
|
517
|
-
async listAuditEvents() {
|
|
519
|
+
async listAuditEvents({ before = null, limit = 51 } = {}) {
|
|
520
|
+
if (before) {
|
|
521
|
+
return this.prepare(
|
|
522
|
+
'listAuditEventsBefore',
|
|
523
|
+
`SELECT * FROM audit_events WHERE (created_at, id) < (?, ?)
|
|
524
|
+
ORDER BY created_at DESC, id DESC LIMIT ?`,
|
|
525
|
+
).all(before.createdAt, before.id, limit).map(rowToAuditEvent);
|
|
526
|
+
}
|
|
518
527
|
return this.prepare(
|
|
519
528
|
'listAuditEvents',
|
|
520
|
-
'SELECT * FROM audit_events ORDER BY created_at DESC',
|
|
521
|
-
).all().map(rowToAuditEvent);
|
|
529
|
+
'SELECT * FROM audit_events ORDER BY created_at DESC, id DESC LIMIT ?',
|
|
530
|
+
).all(limit).map(rowToAuditEvent);
|
|
522
531
|
}
|
|
523
532
|
|
|
524
533
|
async createOperationalSecurityEvent(event) {
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { lstatSync } from 'node:fs';
|
|
2
2
|
import { isAbsolute, join, normalize, relative, resolve } from 'path';
|
|
3
3
|
|
|
4
|
-
import { isVaultFilePath } from '../../../domain/file-kind.js';
|
|
4
|
+
import { getVaultFileKind, isVaultFilePath } from '../../../domain/file-kind.js';
|
|
5
5
|
|
|
6
6
|
export const IGNORED_DIRECTORIES = new Set(['.git', '.obsidian', '.trash', 'node_modules', '.DS_Store']);
|
|
7
|
-
export const VAULT_FILE_PATH_REQUIREMENT = '.md, .markdown, .mdx, .html, .htm, .base, .excalidraw, .drawio, .mmd, .mermaid, .puml, .plantuml, .dsl, .pdf, .png, .jpg, .jpeg, .webp, .gif, or .svg';
|
|
7
|
+
export const VAULT_FILE_PATH_REQUIREMENT = '.md, .markdown, .mdx, .html, .htm, .base, .canvas, .excalidraw, .drawio, .mmd, .mermaid, .puml, .plantuml, .dsl, .pdf, .png, .jpg, .jpeg, .webp, .gif, or .svg';
|
|
8
8
|
export const INVALID_VAULT_FILE_PATH_ERROR = `Invalid file path — must end in ${VAULT_FILE_PATH_REQUIREMENT}`;
|
|
9
9
|
export const INVALID_DIRECTORY_PATH_ERROR = 'Invalid directory path';
|
|
10
10
|
|
|
@@ -119,6 +119,12 @@ export function resolveVaultRenamePaths(vaultDir, oldPath, newPath) {
|
|
|
119
119
|
};
|
|
120
120
|
}
|
|
121
121
|
|
|
122
|
+
const oldKind = getVaultFileKind(absoluteOld);
|
|
123
|
+
const newKind = getVaultFileKind(absoluteNew);
|
|
124
|
+
if (oldKind !== newKind && [oldKind, newKind].includes('canvas')) {
|
|
125
|
+
return { absoluteNew: null, absoluteOld: null, error: 'Canvas files must keep the .canvas extension' };
|
|
126
|
+
}
|
|
127
|
+
|
|
122
128
|
return { absoluteNew, absoluteOld, error: null };
|
|
123
129
|
}
|
|
124
130
|
|
|
@@ -6,12 +6,12 @@ import sharp from 'sharp';
|
|
|
6
6
|
|
|
7
7
|
import {
|
|
8
8
|
getVaultFileKind,
|
|
9
|
-
getVaultTreeNodeType,
|
|
10
9
|
isImageAttachmentFilePath,
|
|
11
10
|
isMarkdownFilePath,
|
|
12
11
|
isVaultFilePath,
|
|
13
12
|
supportsCommentsForFilePath,
|
|
14
13
|
} from '../../../domain/file-kind.js';
|
|
14
|
+
import { parseCanvasJson } from '../../../domain/canvas-room-codec.js';
|
|
15
15
|
import { createCommentOverview } from '../../domain/comment-overview.js';
|
|
16
16
|
import { scanWorkspaceState as scanWorkspaceStateFromAdapter } from '../../domain/workspace-state.js';
|
|
17
17
|
import {
|
|
@@ -27,6 +27,7 @@ import {
|
|
|
27
27
|
|
|
28
28
|
const EDITABLE_VAULT_CONTENT_PATH_ERRORS = {
|
|
29
29
|
base: 'Invalid file path — must end in .base',
|
|
30
|
+
canvas: 'Invalid file path — must end in .canvas',
|
|
30
31
|
drawio: 'Invalid file path — must end in .drawio',
|
|
31
32
|
excalidraw: 'Invalid file path — must end in .excalidraw',
|
|
32
33
|
html: 'Invalid file path — must end in .html or .htm',
|
|
@@ -36,6 +37,19 @@ const EDITABLE_VAULT_CONTENT_PATH_ERRORS = {
|
|
|
36
37
|
structurizr: 'Invalid file path — must end in .dsl',
|
|
37
38
|
};
|
|
38
39
|
|
|
40
|
+
function getContentValidationError(filePath, content) {
|
|
41
|
+
if (getVaultFileKind(filePath) !== 'canvas') return null;
|
|
42
|
+
try {
|
|
43
|
+
const text = content instanceof Uint8Array
|
|
44
|
+
? new TextDecoder('utf-8', { fatal: true, ignoreBOM: true }).decode(content)
|
|
45
|
+
: content;
|
|
46
|
+
parseCanvasJson(text);
|
|
47
|
+
return null;
|
|
48
|
+
} catch {
|
|
49
|
+
return 'Invalid JSON Canvas 1.0 document';
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
|
|
39
53
|
function getEditableVaultContentKind(filePath) {
|
|
40
54
|
const kind = getVaultFileKind(filePath);
|
|
41
55
|
return EDITABLE_VAULT_CONTENT_PATH_ERRORS[kind]
|
|
@@ -44,15 +58,7 @@ function getEditableVaultContentKind(filePath) {
|
|
|
44
58
|
}
|
|
45
59
|
import { SidecarStore } from './sidecar-store.js';
|
|
46
60
|
import { createWorkspaceStateFileSystemAdapter } from '../workspace/workspace-state-file-system-adapter.js';
|
|
47
|
-
|
|
48
|
-
const IMAGE_EXTENSION_TO_MIME_TYPE = Object.freeze({
|
|
49
|
-
'.gif': 'image/gif',
|
|
50
|
-
'.jpeg': 'image/jpeg',
|
|
51
|
-
'.jpg': 'image/jpeg',
|
|
52
|
-
'.png': 'image/png',
|
|
53
|
-
'.svg': 'image/svg+xml',
|
|
54
|
-
'.webp': 'image/webp',
|
|
55
|
-
});
|
|
61
|
+
import { IMAGE_EXTENSION_TO_MIME_TYPE } from '../../shared/image-mime.js';
|
|
56
62
|
|
|
57
63
|
const MIME_TYPE_TO_IMAGE_EXTENSION = Object.freeze({
|
|
58
64
|
'image/gif': '.gif',
|
|
@@ -66,6 +72,7 @@ const RASTER_IMAGE_MIME_TYPES_TO_CONVERT = new Set(['image/jpeg', 'image/png']);
|
|
|
66
72
|
const RASTER_IMAGE_EXTENSIONS_TO_CONVERT = new Set(['.jpeg', '.jpg', '.png']);
|
|
67
73
|
const TEXT_FILE_MIME_TYPES = Object.freeze({
|
|
68
74
|
base: 'text/yaml; charset=utf-8',
|
|
75
|
+
canvas: 'application/json; charset=utf-8',
|
|
69
76
|
drawio: 'application/xml; charset=utf-8',
|
|
70
77
|
excalidraw: 'application/json; charset=utf-8',
|
|
71
78
|
html: 'text/html; charset=utf-8',
|
|
@@ -325,56 +332,6 @@ export class VaultFileStore {
|
|
|
325
332
|
return this.managedWriteTracker.runManagedWrite(paths, operation);
|
|
326
333
|
}
|
|
327
334
|
|
|
328
|
-
async tree() {
|
|
329
|
-
return this.readDirectory(this.vaultDir);
|
|
330
|
-
}
|
|
331
|
-
|
|
332
|
-
async readDirectory(dirPath) {
|
|
333
|
-
const entries = [];
|
|
334
|
-
|
|
335
|
-
let dirEntries;
|
|
336
|
-
try {
|
|
337
|
-
dirEntries = await readdir(dirPath, { withFileTypes: true });
|
|
338
|
-
} catch {
|
|
339
|
-
return entries;
|
|
340
|
-
}
|
|
341
|
-
|
|
342
|
-
const sorted = dirEntries.sort((a, b) => {
|
|
343
|
-
if (a.isDirectory() && !b.isDirectory()) return -1;
|
|
344
|
-
if (!a.isDirectory() && b.isDirectory()) return 1;
|
|
345
|
-
return a.name.localeCompare(b.name, undefined, { sensitivity: 'base' });
|
|
346
|
-
});
|
|
347
|
-
|
|
348
|
-
for (const entry of sorted) {
|
|
349
|
-
if (isIgnoredVaultEntry(entry.name) || entry.isSymbolicLink()) {
|
|
350
|
-
continue;
|
|
351
|
-
}
|
|
352
|
-
|
|
353
|
-
const fullPath = join(dirPath, entry.name);
|
|
354
|
-
const relativePath = toVaultRelativePath(this.vaultDir, fullPath);
|
|
355
|
-
|
|
356
|
-
if (entry.isDirectory()) {
|
|
357
|
-
entries.push({
|
|
358
|
-
children: await this.readDirectory(fullPath),
|
|
359
|
-
name: entry.name,
|
|
360
|
-
path: relativePath,
|
|
361
|
-
type: 'directory',
|
|
362
|
-
});
|
|
363
|
-
continue;
|
|
364
|
-
}
|
|
365
|
-
|
|
366
|
-
if (isVaultFilePath(entry.name)) {
|
|
367
|
-
entries.push({
|
|
368
|
-
name: entry.name,
|
|
369
|
-
path: relativePath,
|
|
370
|
-
type: getVaultTreeNodeType(entry.name),
|
|
371
|
-
});
|
|
372
|
-
}
|
|
373
|
-
}
|
|
374
|
-
|
|
375
|
-
return entries;
|
|
376
|
-
}
|
|
377
|
-
|
|
378
335
|
resolveContentPath(filePath, { requireVaultFile = true } = {}) {
|
|
379
336
|
if (!requireVaultFile) {
|
|
380
337
|
return sanitizeVaultPath(this.vaultDir, filePath);
|
|
@@ -427,6 +384,9 @@ export class VaultFileStore {
|
|
|
427
384
|
};
|
|
428
385
|
}
|
|
429
386
|
|
|
387
|
+
const validationError = getContentValidationError(filePath, content);
|
|
388
|
+
if (validationError) return { ok: false, error: validationError };
|
|
389
|
+
|
|
430
390
|
try {
|
|
431
391
|
await this.runManagedWrite([filePath], async () => {
|
|
432
392
|
await mkdir(dirname(resolved.absolute), { recursive: true });
|
|
@@ -619,6 +579,9 @@ export class VaultFileStore {
|
|
|
619
579
|
};
|
|
620
580
|
}
|
|
621
581
|
|
|
582
|
+
const validationError = includeContent && getContentValidationError(filePath, content);
|
|
583
|
+
if (validationError) return { ok: false, error: validationError };
|
|
584
|
+
|
|
622
585
|
const commentPath = this.sidecarStore.getCommentThreadPath(filePath);
|
|
623
586
|
const snapshotPath = this.sidecarStore.getSnapshotPath(filePath);
|
|
624
587
|
if (!commentPath || !snapshotPath) {
|
|
@@ -757,6 +720,9 @@ export class VaultFileStore {
|
|
|
757
720
|
return { ok: false, error };
|
|
758
721
|
}
|
|
759
722
|
|
|
723
|
+
const validationError = getContentValidationError(filePath, content);
|
|
724
|
+
if (validationError) return { ok: false, error: validationError };
|
|
725
|
+
|
|
760
726
|
try {
|
|
761
727
|
await stat(absolute);
|
|
762
728
|
return { ok: false, error: 'File already exists' };
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { extname } from 'node:path';
|
|
2
2
|
|
|
3
|
-
const
|
|
3
|
+
export const IMAGE_EXTENSION_TO_MIME_TYPE = Object.freeze({
|
|
4
4
|
'.gif': 'image/gif',
|
|
5
5
|
'.jpeg': 'image/jpeg',
|
|
6
6
|
'.jpg': 'image/jpeg',
|
|
@@ -11,5 +11,5 @@ const IMAGE_MIME_TYPES = Object.freeze({
|
|
|
11
11
|
|
|
12
12
|
export function getImageMimeType(filePath) {
|
|
13
13
|
const extension = extname(String(filePath ?? '').toLowerCase());
|
|
14
|
-
return
|
|
14
|
+
return IMAGE_EXTENSION_TO_MIME_TYPE[extension] ?? 'application/octet-stream';
|
|
15
15
|
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{i as e}from"./rolldown-runtime-Dd_uD5pT.js";import{n as t,t as n}from"./jsx-runtime-DKj5X9O4.js";import"./chunk-SRAX5OIU-KFQikY-4.js";import{$ as r,G as i,P as a,R as o,V as s,c,et as l,ht as u,nt as d,pt as f,t as p,z as m}from"./dist-Bog8M5U3.js";import{a as h,o as g,p as _,s as v}from"./dist-BYBF4LtZ.js";var y=e(t(),1),b=n(),x=c.define({token(e){return e.match(/^%%.*$/)?`comment`:e.match(/^"(?:[^"\\]|\\.)*"/)?`string`:e.match(/^(flowchart|graph|sequenceDiagram|classDiagram|stateDiagram|erDiagram|gantt|pie|mindmap|journey|gitGraph|timeline|quadrantChart|sankey|xychart)\b/i)||e.match(/^(TB|TD|BT|RL|LR)\b/)||e.match(/^(subgraph|end|participant|actor|loop|alt|else|opt|par|critical|break|rect|note|over|activate|deactivate|title|section|class|style|linkStyle|classDef|click)\b/i)?`keyword`:e.match(/^[-.=<>|ox]+>/)||e.match(/^<[-.=<>|ox]+/)||e.match(/^--+|\.\.+|==+/)?`operator`:e.match(/^[[\](){}|<>]/)?`bracket`:e.match(/^[A-Za-z_][A-Za-z0-9_]*/)?`variableName`:e.match(/^\d+(\.\d+)?/)?`number`:e.match(/^[,:;]/)?`punctuation`:(e.eatSpace()||e.next(),null)}});function S(){return x}var C=s.theme({"&":{backgroundColor:`#1e1e1e`,color:`#d4d4d4`},".cm-content":{caretColor:`#fff`},".cm-cursor":{borderLeftColor:`#fff`},".cm-gutters":{backgroundColor:`#1e1e1e`,color:`#858585`,border:`none`},".cm-activeLineGutter":{backgroundColor:`#2a2a2a`},".cm-activeLine":{backgroundColor:`#2a2a2a`},".cm-errorLine":{backgroundColor:`rgba(255, 0, 0, 0.15)`}},{dark:!0}),w=p.define([{tag:o.keyword,color:`#569cd6`},{tag:o.string,color:`#ce9178`},{tag:o.comment,color:`#6a9955`},{tag:o.number,color:`#b5cea8`},{tag:o.operator,color:`#d4d4d4`},{tag:o.punctuation,color:`#d4d4d4`},{tag:o.variableName,color:`#9cdcfe`},{tag:o.bracket,color:`#ffd700`}]),T=s.theme({"&":{backgroundColor:`#ffffff`,color:`#1e1e1e`},".cm-content":{caretColor:`#000`},".cm-cursor":{borderLeftColor:`#000`},".cm-gutters":{backgroundColor:`#fff`,color:`#999`,border:`none`},".cm-activeLineGutter":{backgroundColor:`#e8e8e8`},".cm-activeLine":{backgroundColor:`#e8e8e8`},".cm-errorLine":{backgroundColor:`rgba(255, 0, 0, 0.1)`}}),E=p.define([{tag:o.keyword,color:`#0000ff`},{tag:o.string,color:`#a31515`},{tag:o.comment,color:`#008000`},{tag:o.number,color:`#098658`},{tag:o.operator,color:`#1e1e1e`},{tag:o.punctuation,color:`#1e1e1e`},{tag:o.variableName,color:`#001080`},{tag:o.bracket,color:`#af00db`}]),D=m.line({class:`cm-errorLine`}),O=(e,t)=>{if(!e||e<1||e>t.lines)return s.decorations.of(m.none);let n=t.line(e);return s.decorations.of(m.set([D.range(n.from)]))},k=e=>e===`dark`?[C,a(w)]:[T,a(E)],A=({value:e,onChange:t,onKeyboardSubmit:n,placeholder:a,theme:o,errorLine:c})=>{let p=(0,y.useRef)(null),m=(0,y.useRef)(null),x=(0,y.useRef)(t),C=(0,y.useRef)(n),w=(0,y.useRef)(new f),T=(0,y.useRef)(new f);return x.current=t,C.current=n,(0,y.useEffect)(()=>{if(!p.current)return;let t=w.current,n=new s({state:u.create({doc:e,extensions:[r.of([{key:`Mod-Enter`,run:()=>(C.current?.(),!0)},{key:`Mod-Shift-z`,run:_,preventDefault:!0}]),s.updateListener.of(e=>{e.docChanged&&x.current(e.state.doc.toString())}),g(),r.of([...h,...v]),l(),s.lineWrapping,t.of(k(o)),T.current.of([]),S(),i({drawRangeCursor:!0}),...a?[d(a)]:[]]}),parent:p.current});return m.current=n,n.focus(),()=>{n.destroy(),m.current=null}},[]),(0,y.useEffect)(()=>{let e=m.current;e&&e.dispatch({effects:w.current.reconfigure(k(o))})},[o]),(0,y.useEffect)(()=>{let e=m.current;e&&e.dispatch({effects:T.current.reconfigure(O(c,e.state.doc))})},[c]),(0,y.useEffect)(()=>{let t=m.current;if(!t)return;let n=t.state.doc.toString();e!==n&&t.dispatch({changes:{from:0,to:n.length,insert:e}})},[e]),(0,b.jsx)(`div`,{ref:p,className:`ttd-dialog-input ttd-dialog-input--codemirror`})};export{A as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{$ as e,A as t,C as n,D as r,E as i,G as a,H as o,I as s,K as c,M as l,N as u,P as d,R as f,S as p,T as m,U as ee,V as h,X as g,Y as _,ct as v,dt as y,et as te,f as ne,ft as re,h as b,j as ie,k as ae,lt as oe,mt as se,nt as x,pt as ce,q as le,st as S,ut as ue,v as de,w as fe,z as pe}from"./_baseUniq-DR4vVjyC.js";var me=/\s/;function he(e){for(var t=e.length;t--&&me.test(e.charAt(t)););return t}var ge=/^\s+/;function _e(e){return e&&e.slice(0,he(e)+1).replace(ge,``)}var C=NaN,ve=/^[-+]0x[0-9a-f]+$/i,ye=/^0b[01]+$/i,be=/^0o[0-7]+$/i,xe=parseInt;function Se(e){if(typeof e==`number`)return e;if(ue(e))return C;if(S(e)){var t=typeof e.valueOf==`function`?e.valueOf():e;e=S(t)?t+``:t}if(typeof e!=`string`)return e===0?e:+e;e=_e(e);var n=ye.test(e);return n||be.test(e)?xe(e.slice(2),n?2:8):ve.test(e)?C:+e}var w=1/0,Ce=17976931348623157e292;function T(e){return e?(e=Se(e),e===w||e===-w?(e<0?-1:1)*Ce:e===e?e:0):e===0?e:0}function E(e){var t=T(e),n=t%1;return t===t?n?t-n:t:0}var D=Object.create,we=function(){function e(){}return function(t){if(!S(t))return{};if(D)return D(t);e.prototype=t;var n=new e;return e.prototype=void 0,n}}();function O(e,t){var n=-1,r=e.length;for(t||=Array(r);++n<r;)t[n]=e[n];return t}function k(e,t,n){t==`__proto__`&&x?x(e,t,{configurable:!0,enumerable:!0,value:n,writable:!0}):e[t]=n}var Te=Object.prototype.hasOwnProperty;function A(e,t,n){var r=e[t];(!(Te.call(e,t)&&_(r,n))||n===void 0&&!(t in e))&&k(e,t,n)}function j(e,t,n,r){var i=!n;n||={};for(var a=-1,o=t.length;++a<o;){var s=t[a],c=r?r(n[s],e[s],s,n,e):void 0;c===void 0&&(c=e[s]),i?k(n,s,c):A(n,s,c)}return n}function M(e,t,n){if(!S(n))return!1;var r=typeof t;return(r==`number`?c(n)&&g(t,n.length):r==`string`&&t in n)?_(n[t],e):!1}function Ee(e){return le(function(t,n){var r=-1,i=n.length,a=i>1?n[i-1]:void 0,o=i>2?n[2]:void 0;for(a=e.length>3&&typeof a==`function`?(i--,a):void 0,o&&M(n[0],n[1],o)&&(a=i<3?void 0:a,i=1),t=Object(t);++r<i;){var s=n[r];s&&e(t,s,r,a)}return t})}function De(e){var t=[];if(e!=null)for(var n in Object(e))t.push(n);return t}var Oe=Object.prototype.hasOwnProperty;function ke(e){if(!S(e))return De(e);var t=a(e),n=[];for(var r in e)(r!=`constructor`||!t&&Oe.call(e,r))&&n.push(r);return n}function N(e){return c(e)?pe(e,!0):ke(e)}function Ae(e){return e!=null&&e.length?t(e,1):[]}var P=f(Object.getPrototypeOf,Object);function je(e,t){return e&&j(t,s(t),e)}function Me(e,t){return e&&j(t,N(t),e)}var F=typeof exports==`object`&&exports&&!exports.nodeType&&exports,I=F&&typeof module==`object`&&module&&!module.nodeType&&module,L=I&&I.exports===F?se.Buffer:void 0,R=L?L.allocUnsafe:void 0;function z(e,t){if(t)return e.slice();var n=e.length,r=R?R(n):new e.constructor(n);return e.copy(r),r}function Ne(e,t){return j(e,i(e),t)}var B=Object.getOwnPropertySymbols?function(e){for(var t=[];e;)ie(t,i(e)),e=P(e);return t}:r;function Pe(e,t){return j(e,B(e),t)}function V(e){return m(e,N,B)}var Fe=Object.prototype.hasOwnProperty;function Ie(e){var t=e.length,n=new e.constructor(t);return t&&typeof e[0]==`string`&&Fe.call(e,`index`)&&(n.index=e.index,n.input=e.input),n}function H(e){var t=new e.constructor(e.byteLength);return new p(t).set(new p(e)),t}function Le(e,t){var n=t?H(e.buffer):e.buffer;return new e.constructor(n,e.byteOffset,e.byteLength)}var Re=/\w*$/;function ze(e){var t=new e.constructor(e.source,Re.exec(e));return t.lastIndex=e.lastIndex,t}var U=ce?ce.prototype:void 0,W=U?U.valueOf:void 0;function Be(e){return W?Object(W.call(e)):{}}function G(e,t){var n=t?H(e.buffer):e.buffer;return new e.constructor(n,e.byteOffset,e.length)}var Ve=`[object Boolean]`,He=`[object Date]`,Ue=`[object Map]`,We=`[object Number]`,Ge=`[object RegExp]`,Ke=`[object Set]`,qe=`[object String]`,Je=`[object Symbol]`,Ye=`[object ArrayBuffer]`,Xe=`[object DataView]`,Ze=`[object Float32Array]`,Qe=`[object Float64Array]`,$e=`[object Int8Array]`,et=`[object Int16Array]`,tt=`[object Int32Array]`,nt=`[object Uint8Array]`,rt=`[object Uint8ClampedArray]`,it=`[object Uint16Array]`,at=`[object Uint32Array]`;function ot(e,t,n){var r=e.constructor;switch(t){case Ye:return H(e);case Ve:case He:return new r(+e);case Xe:return Le(e,n);case Ze:case Qe:case $e:case et:case tt:case nt:case rt:case it:case at:return G(e,n);case Ue:return new r;case We:case qe:return new r(e);case Ge:return ze(e);case Ke:return new r;case Je:return Be(e)}}function K(e){return typeof e.constructor==`function`&&!a(e)?we(P(e)):{}}var st=`[object Map]`;function ct(e){return y(e)&&n(e)==st}var q=h&&h.isMap,lt=q?o(q):ct,ut=`[object Set]`;function dt(e){return y(e)&&n(e)==ut}var J=h&&h.isSet,ft=J?o(J):dt,pt=1,mt=2,ht=4,Y=`[object Arguments]`,gt=`[object Array]`,_t=`[object Boolean]`,vt=`[object Date]`,yt=`[object Error]`,X=`[object Function]`,bt=`[object GeneratorFunction]`,xt=`[object Map]`,St=`[object Number]`,Z=`[object Object]`,Ct=`[object RegExp]`,wt=`[object Set]`,Tt=`[object String]`,Et=`[object Symbol]`,Dt=`[object WeakMap]`,Ot=`[object ArrayBuffer]`,kt=`[object DataView]`,At=`[object Float32Array]`,jt=`[object Float64Array]`,Mt=`[object Int8Array]`,Nt=`[object Int16Array]`,Pt=`[object Int32Array]`,Ft=`[object Uint8Array]`,It=`[object Uint8ClampedArray]`,Lt=`[object Uint16Array]`,Rt=`[object Uint32Array]`,Q={};Q[Y]=Q[gt]=Q[Ot]=Q[kt]=Q[_t]=Q[vt]=Q[At]=Q[jt]=Q[Mt]=Q[Nt]=Q[Pt]=Q[xt]=Q[St]=Q[Z]=Q[Ct]=Q[wt]=Q[Tt]=Q[Et]=Q[Ft]=Q[It]=Q[Lt]=Q[Rt]=!0,Q[yt]=Q[X]=Q[Dt]=!1;function $(e,t,r,i,a,o){var c,l=t&pt,u=t&mt,d=t&ht;if(r&&(c=a?r(e,i,a,o):r(e)),c!==void 0)return c;if(!S(e))return e;var f=v(e);if(f){if(c=Ie(e),!l)return O(e,c)}else{var p=n(e),m=p==X||p==bt;if(ee(e))return z(e,l);if(p==Z||p==Y||m&&!a){if(c=u||m?{}:K(e),!l)return u?Pe(e,Me(c,e)):Ne(e,je(c,e))}else{if(!Q[p])return a?e:{};c=ot(e,p,l)}}o||=new ae;var h=o.get(e);if(h)return h;o.set(e,c),ft(e)?e.forEach(function(n){c.add($(n,t,r,n,e,o))}):lt(e)&&e.forEach(function(n,i){c.set(i,$(n,t,r,i,e,o))});var g=f?void 0:(d?u?V:fe:u?N:s)(e);return te(g||e,function(n,i){g&&(i=n,n=e[i]),A(c,i,$(n,t,r,i,e,o))}),c}var zt=Object.prototype,Bt=zt.hasOwnProperty,Vt=le(function(e,t){e=Object(e);var n=-1,r=t.length,i=r>2?t[2]:void 0;for(i&&M(t[0],t[1],i)&&(r=1);++n<r;)for(var a=t[n],o=N(a),s=-1,c=o.length;++s<c;){var l=o[s],u=e[l];(u===void 0||_(u,zt[l])&&!Bt.call(e,l))&&(e[l]=a[l])}return e});function Ht(e){var t=e==null?0:e.length;return t?e[t-1]:void 0}function Ut(e){return function(t,n,r){var i=Object(t);if(!c(t)){var a=b(n,3);t=s(t),n=function(e){return a(i[e],e,i)}}var o=e(t,n,r);return o>-1?i[a?t[o]:o]:void 0}}var Wt=Math.max;function Gt(t,n,r){var i=t==null?0:t.length;if(!i)return-1;var a=r==null?0:E(r);return a<0&&(a=Wt(i+a,0)),e(t,b(n,3),a)}var Kt=Ut(Gt);function qt(e,t){var n=-1,r=c(e)?Array(e.length):[];return ne(e,function(e,i,a){r[++n]=t(e,i,a)}),r}function Jt(e,t){return(v(e)?oe:qt)(e,b(t,3))}var Yt=Object.prototype.hasOwnProperty;function Xt(e,t){return e!=null&&Yt.call(e,t)}function Zt(e,t){return e!=null&&de(e,t,Xt)}var Qt=`[object String]`;function $t(e){return typeof e==`string`||!v(e)&&y(e)&&re(e)==Qt}function en(e,t,n,r){if(!S(e))return e;t=d(t,e);for(var i=-1,a=t.length,o=a-1,s=e;s!=null&&++i<a;){var c=u(t[i]),l=n;if(c===`__proto__`||c===`constructor`||c===`prototype`)return e;if(i!=o){var f=s[c];l=r?r(f,c,s):void 0,l===void 0&&(l=S(f)?f:g(t[i+1])?[]:{})}A(s,c,l),s=s[c]}return e}function tn(e,t,n){for(var r=-1,i=t.length,a={};++r<i;){var o=t[r],s=l(e,o);n(s,o)&&en(a,d(o,e),s)}return a}export{E as C,O as S,Ee as _,qt as a,A as b,Vt as c,G as d,V as f,N as g,Ae as h,Jt as i,$ as l,P as m,$t as n,Kt as o,z as p,Zt as r,Ht as s,tn as t,K as u,M as v,T as w,k as x,j as y};
|