collabmd 0.1.29 → 0.1.31

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (445) hide show
  1. package/README.md +5 -0
  2. package/dist/client/assets/{CodeMirrorEditor-UCMRAMCV-9k1Shd4H.js → CodeMirrorEditor-UCMRAMCV-Bg0dawOb.js} +1 -1
  3. package/dist/client/assets/{_basePickBy-B6kIfhzj.js → _basePickBy-Dv0sK1l7.js} +1 -1
  4. package/dist/client/assets/{_baseUniq-Bbn0_sHS.js → _baseUniq-DKYX57ji.js} +1 -1
  5. package/dist/client/assets/{ar-SA-NXDWD63E-BWO5oYxe.js → ar-SA-NXDWD63E-WivLHHDW.js} +1 -1
  6. package/dist/client/assets/{arc-BIqum3oD.js → arc-DrfYGhWk.js} +1 -1
  7. package/dist/client/assets/architecture-PBZL5I3N-DiglIZi9.js +1 -0
  8. package/dist/client/assets/architectureDiagram-2XIMDMQ5-kYbOThe4.js +36 -0
  9. package/dist/client/assets/{az-AZ-MXSORGZV-Cfw6Z5oY.js → az-AZ-MXSORGZV-DOdq1TKC.js} +1 -1
  10. package/dist/client/assets/base-CaIEJUF9.css +1 -0
  11. package/dist/client/assets/{bg-BG-O6MV2KSF-CQmG3YpD.js → bg-BG-O6MV2KSF-CYucKuDS.js} +1 -1
  12. package/dist/client/assets/{blockDiagram-WCTKOSBZ-0rR9ivwb.js → blockDiagram-WCTKOSBZ-GIgTqnhk.js} +1 -1
  13. package/dist/client/assets/{bn-IN-MMW2ORAC-DZKVshfk.js → bn-BD-T2VJNT7N-2OKWLCYa.js} +1 -1
  14. package/dist/client/assets/{bn-BD-T2VJNT7N-C4S6DZ6o.js → bn-IN-MMW2ORAC-DYr8kqNL.js} +1 -1
  15. package/dist/client/assets/{c4Diagram-IC4MRINW-DHwxcDlQ.js → c4Diagram-IC4MRINW-CkHO1i_L.js} +1 -1
  16. package/dist/client/assets/{ca-ES-MKBCGNOG-Do3aMgyu.js → ca-ES-MKBCGNOG-B9Aeb43I.js} +1 -1
  17. package/dist/client/assets/channel-CgsU9TSN.js +1 -0
  18. package/dist/client/assets/{chunk-4BX2VUAB-BqEY6cCE.js → chunk-4BX2VUAB-2e7V-uuE.js} +1 -1
  19. package/dist/client/assets/{chunk-55IACEB6-039iVf6v.js → chunk-55IACEB6-CpncB3ru.js} +1 -1
  20. package/dist/client/assets/{chunk-7E7YKBS2-BreG0gYL.js → chunk-7E7YKBS2-TdU92i9i.js} +1 -1
  21. package/dist/client/assets/{chunk-7R4GIKGN-BMrp52Pk.js → chunk-7R4GIKGN-mqd2GwMg.js} +2 -2
  22. package/dist/client/assets/{chunk-ETSVUAFD-CN-gPl_j.js → chunk-AXZTUZBK-DuMiJYO9.js} +1 -1
  23. package/dist/client/assets/{chunk-C72U2L5F-BLB26v5d.js → chunk-C72U2L5F-CJKQWBtz.js} +1 -1
  24. package/dist/client/assets/{chunk-EGIJ26TM-fG-0Yh0k.js → chunk-EGIJ26TM-C4nq20om.js} +1 -1
  25. package/dist/client/assets/{chunk-FMBD7UC4-EWK5Pt4D.js → chunk-FMBD7UC4-CMahlBa_.js} +1 -1
  26. package/dist/client/assets/{chunk-GEFDOKGD-DYHmaq-c.js → chunk-GEFDOKGD-Bs7FmFox.js} +1 -1
  27. package/dist/client/assets/chunk-GLR3WWYH-qQe2O5VQ.js +2 -0
  28. package/dist/client/assets/chunk-HHEYEP7N-DlevL8bq.js +1 -0
  29. package/dist/client/assets/{chunk-JSJVCQXG-B69YGtcQ.js → chunk-JSJVCQXG-DPQ9cPJt.js} +1 -1
  30. package/dist/client/assets/{chunk-KX2RTZJC-tuEC7hg1.js → chunk-KX2RTZJC-BTiOJb7N.js} +1 -1
  31. package/dist/client/assets/{chunk-KYZI473N-D4r5eMJZ.js → chunk-KYZI473N-CTSCuqRb.js} +1 -1
  32. package/dist/client/assets/{chunk-L3YUKLVL-CD9nJYL8.js → chunk-L3YUKLVL-CJZMBtKF.js} +1 -1
  33. package/dist/client/assets/{chunk-MX3YWQON-DqN0TF5Q.js → chunk-MX3YWQON-DQpSwRf6.js} +1 -1
  34. package/dist/client/assets/{chunk-NQ4KR5QH-BCjGNd0g.js → chunk-NQ4KR5QH-CMJKI6Oj.js} +1 -1
  35. package/dist/client/assets/chunk-NU2UP6EN-DlUENSHU.js +35 -0
  36. package/dist/client/assets/{chunk-O4XLMI2P-DaS3COAu.js → chunk-O4XLMI2P-CcVxZh41.js} +1 -1
  37. package/dist/client/assets/{chunk-OZEHJAEY-BaBXI-8x.js → chunk-OZEHJAEY-DjBZbgu0.js} +1 -1
  38. package/dist/client/assets/{chunk-PQ6SQG4A-BY9_Srs_.js → chunk-PQ6SQG4A-D1AbThjy.js} +1 -1
  39. package/dist/client/assets/{chunk-PU5JKC2W-t0zUh6E3.js → chunk-PU5JKC2W-D_6N6t8f.js} +1 -1
  40. package/dist/client/assets/chunk-QZHKN3VN-CgLPFSk5.js +1 -0
  41. package/dist/client/assets/{chunk-R5LLSJPH-BjSMFnTi.js → chunk-R5LLSJPH-CkjKXM73.js} +1 -1
  42. package/dist/client/assets/{chunk-WL4C6EOR-OuH0lN6M.js → chunk-WL4C6EOR-axcuKSup.js} +1 -1
  43. package/dist/client/assets/{chunk-XIRO2GV7-2tirYN5A.js → chunk-XIRO2GV7-4wqVHjs_.js} +1 -1
  44. package/dist/client/assets/{chunk-XPW4576I-C0GpOUHf.js → chunk-XPW4576I-DJr4_4Yy.js} +1 -1
  45. package/dist/client/assets/{chunk-XZSTWKYB-DDkpyNVE.js → chunk-XZSTWKYB-C8Y_hIKZ.js} +1 -1
  46. package/dist/client/assets/{chunk-YBOYWFTD-CzyyfGQX.js → chunk-YBOYWFTD-CKg4ymFF.js} +1 -1
  47. package/dist/client/assets/{chunk-Z5NKEFVG-Dgem5v98.js → chunk-Z5NKEFVG-HOkYqaKa.js} +1 -1
  48. package/dist/client/assets/classDiagram-VBA2DB6C-BHZpvOxK.js +1 -0
  49. package/dist/client/assets/classDiagram-v2-RAHNMMFH-DA7HMUUs.js +1 -0
  50. package/dist/client/assets/clone-Dgi8Z4IL.js +1 -0
  51. package/dist/client/assets/{cose-bilkent-S5V4N54A-jZzFUguD.js → cose-bilkent-S5V4N54A-DASO2hrk.js} +1 -1
  52. package/dist/client/assets/{cs-CZ-V77HGUP7-DmZRJ2UO.js → cs-CZ-V77HGUP7-BDg-F0CJ.js} +1 -1
  53. package/dist/client/assets/{da-DK-I5RFNTM4-CRIiLQ-G.js → da-DK-I5RFNTM4-wtSQ0Jxa.js} +1 -1
  54. package/dist/client/assets/{dagre-fvYjRtTE.js → dagre-CfB3Fw33.js} +1 -1
  55. package/dist/client/assets/dagre-KLK3FWXG-CC7tq2Ky.js +4 -0
  56. package/dist/client/assets/{de-DE-DTI4WUSC-MFge9MC3.js → de-CH-WLRDEVBV-C1swvmZy.js} +1 -1
  57. package/dist/client/assets/{de-CH-WLRDEVBV-k728UA4j.js → de-DE-DTI4WUSC-C0L6Nz8X.js} +1 -1
  58. package/dist/client/assets/diagram-E7M64L7V-CMt7BN5M.js +24 -0
  59. package/dist/client/assets/diagram-IFDJBPK2-BFMBUGpd.js +43 -0
  60. package/dist/client/assets/diagram-P4PSJMXO-CviA1xXr.js +24 -0
  61. package/dist/client/assets/dist-3bQB_we3.js +1 -0
  62. package/dist/client/assets/dist-3uAMa5w5.js +1 -0
  63. package/dist/client/assets/dist-8Igu3Ee_2.js +1 -0
  64. package/dist/client/assets/{dist-D9c0A4Uh.js → dist-B-02vKOA.js} +1 -1
  65. package/dist/client/assets/dist-B4uQVR_X.js +1 -0
  66. package/dist/client/assets/{dist-A0eSMIyy.js → dist-BLAlZer_.js} +1 -1
  67. package/dist/client/assets/dist-BU8uusJX.js +1 -0
  68. package/dist/client/assets/dist-BVB8rn7o.js +1 -0
  69. package/dist/client/assets/{dist-DveOCUUJ.js → dist-Bc2ND6i3.js} +1 -1
  70. package/dist/client/assets/{dist-Bay3vk5z.js → dist-BtnXjRx0.js} +1 -1
  71. package/dist/client/assets/{dist-CEYpWxod.js → dist-BzbYwa8m.js} +1 -1
  72. package/dist/client/assets/{dist-Ct1bmQnL.js → dist-BzpfHRaE.js} +1 -1
  73. package/dist/client/assets/{dist-BbKpzsTB.js → dist-CGV1S_as.js} +1 -1
  74. package/dist/client/assets/dist-CL-jjdvG.js +1 -0
  75. package/dist/client/assets/{dist-D0e6Qsad.js → dist-CXpKYW9s.js} +1 -1
  76. package/dist/client/assets/{dist-BchrxlnW.js → dist-CjII8VDS.js} +1 -1
  77. package/dist/client/assets/{dist-DnrO-JZd.js → dist-CxfohGIV.js} +1 -1
  78. package/dist/client/assets/{dist-CMHIjMVe.js → dist-D5QOYy7y.js} +1 -1
  79. package/dist/client/assets/{dist-CEtbxXlI.js → dist-DIi0uqLJ.js} +1 -1
  80. package/dist/client/assets/dist-DJ16N7ol.js +1 -0
  81. package/dist/client/assets/dist-DUvaQ-Bj.js +1 -0
  82. package/dist/client/assets/{dist-DnxPQ0-w.js → dist-DWJL3_bF.js} +6 -6
  83. package/dist/client/assets/dist-DsL7sqZR.js +1 -0
  84. package/dist/client/assets/{dist-DbhQ5ANS.js → dist-Dyt7n5Ui.js} +1 -1
  85. package/dist/client/assets/{dist-BOrlJDrR.js → dist-E_jPb93e.js} +1 -1
  86. package/dist/client/assets/{dist-D-gRgZ6e.js → dist-O1z0Ayg0.js} +1 -1
  87. package/dist/client/assets/dist-OQE68wIX.js +1 -0
  88. package/dist/client/assets/dist-k47-Io7D.js +1 -0
  89. package/dist/client/assets/{dist-Cdzvi8cf.js → dist-lDhnP-K1.js} +1 -1
  90. package/dist/client/assets/{dist-DS6mEQYy.js → dist-rMhng5DK.js} +1 -1
  91. package/dist/client/assets/{dockerfile-C0qQqxf9.js → dockerfile-D8_6_FRV.js} +1 -1
  92. package/dist/client/assets/{drawio-editor-CgbaOvpF.js → drawio-editor-B4sHHwWJ.js} +1 -1
  93. package/dist/client/assets/drawioEditor-DGpo2hcx.js +2 -0
  94. package/dist/client/assets/editor-session-BKHEYkbY.js +16 -0
  95. package/dist/client/assets/{el-GR-ZXDJ2OS4-Bbz93mrG.js → el-GR-ZXDJ2OS4-BH0saXds.js} +1 -1
  96. package/dist/client/assets/{embedded-editor-base-DXRHYz6R.css → embedded-editor-base-DgmRcsR8.css} +1 -1
  97. package/dist/client/assets/{en-CTDJDZ6K-BHbXrqU0.js → en-IQZW2TQM-CzlcEpq3.js} +1 -1
  98. package/dist/client/assets/{erDiagram-INFDFZHY-DP3f20BF.js → erDiagram-INFDFZHY-DlIf-fb7.js} +1 -1
  99. package/dist/client/assets/{es-ES-DYQHAD43-CReXU-Nn.js → es-ES-DYQHAD43-CyzL9Mni.js} +1 -1
  100. package/dist/client/assets/{eu-ES-QDSYU5Y3-jRpcaWwz.js → eu-ES-QDSYU5Y3-D2-x316S.js} +1 -1
  101. package/dist/client/assets/{excalidraw-editor-Dj0c0PO6.js → excalidraw-editor-CHbeNZu6.js} +2 -2
  102. package/dist/client/assets/excalidraw-editor-Dj3i59LW.css +1 -0
  103. package/dist/client/assets/{excalidraw-mermaid-stub-efoh2lJm.js → excalidraw-mermaid-stub-Bwe-bKcT.js} +1 -1
  104. package/dist/client/assets/excalidraw-scene-BF_bT1OL.js +176 -0
  105. package/dist/client/assets/excalidrawEditor-BhaTX2Ko.js +2 -0
  106. package/dist/client/assets/export-page-PeexH2QK.js +39 -0
  107. package/dist/client/assets/exportDocument-CtZKWE2c.js +2 -0
  108. package/dist/client/assets/{exportDocument-CLPYN_gg.css → exportDocument-DmV7Gngb.css} +1 -1
  109. package/dist/client/assets/{fa-IR-26LZG4PM-DP8pJ8e3.js → fa-IR-26LZG4PM-D8-trU2x.js} +1 -1
  110. package/dist/client/assets/{factor-2uy-lXe_.js → factor-Cz-hzBGH.js} +1 -1
  111. package/dist/client/assets/{fi-FI-6YS4KDE4-BLUDpNOj.js → fi-FI-6YS4KDE4-CCdRVFDQ.js} +1 -1
  112. package/dist/client/assets/file-kind-DBptLlF_.js +1 -0
  113. package/dist/client/assets/{flowDiagram-PKNHOUZH-CRbK5_5h.js → flowDiagram-PKNHOUZH-C_t-mkwb.js} +1 -1
  114. package/dist/client/assets/{fr-FR-BRLLPTZC-BoZz3Pi8.js → fr-FR-BRLLPTZC-Dqq-O5T_.js} +1 -1
  115. package/dist/client/assets/ganttDiagram-A5KZAMGK-BtK9Tb--.js +292 -0
  116. package/dist/client/assets/gitGraph-HDMCJU4V-CT7YfbD3.js +1 -0
  117. package/dist/client/assets/gitGraphDiagram-K3NZZRJ6-DULDLGiJ.js +65 -0
  118. package/dist/client/assets/{gl-ES-OKUZTLYG-CaEvhjDi.js → gl-ES-OKUZTLYG-BK7pbLbm.js} +1 -1
  119. package/dist/client/assets/{graphlib-DSzYgMXB.js → graphlib-BgRST-Qg.js} +1 -1
  120. package/dist/client/assets/{he-IL-26MGYIU7-DYOchgy9.js → he-IL-26MGYIU7-C3BuYKyY.js} +1 -1
  121. package/dist/client/assets/{hi-IN-Q4ZOGTP2-yRs8g46n.js → hi-IN-Q4ZOGTP2-BEvXWXnH.js} +1 -1
  122. package/dist/client/assets/{hu-HU-P2OXPSN5-1skPmtgc.js → hu-HU-P2OXPSN5-BWWZeJNp.js} +1 -1
  123. package/dist/client/assets/{id-ID-2EIKXYN6-iUugQJd9.js → id-ID-2EIKXYN6-DxSKi_aJ.js} +1 -1
  124. package/dist/client/assets/image-XLNPCCAD-CFiKwiWK.js +1 -0
  125. package/dist/client/assets/index-D69HOZHr.css +1 -0
  126. package/dist/client/assets/{index-CVgVzuh6.js → index-kPgEYvEX.js} +2 -2
  127. package/dist/client/assets/info-3K5VOQVL-DUpNyDC-.js +1 -0
  128. package/dist/client/assets/infoDiagram-LFFYTUFH-DFTI0nfs.js +2 -0
  129. package/dist/client/assets/{isEmpty-C7iPDOO3.js → isEmpty-CVvRj8fj.js} +1 -1
  130. package/dist/client/assets/{ishikawaDiagram-PHBUUO56-BDVPgkv4.js → ishikawaDiagram-PHBUUO56-DpBuDpC6.js} +1 -1
  131. package/dist/client/assets/{it-IT-4CFKVXI2-a5DFhzuI.js → it-IT-4CFKVXI2-BmA8wW6q.js} +1 -1
  132. package/dist/client/assets/{ja-JP-MAND2Z4V-DwogHVKd.js → ja-JP-MAND2Z4V-CLS1jI9o.js} +1 -1
  133. package/dist/client/assets/javascript-UJe68_xi.js +1 -0
  134. package/dist/client/assets/{journeyDiagram-4ABVD52K-DtNnwL48.js → journeyDiagram-4ABVD52K-DDur6iHm.js} +1 -1
  135. package/dist/client/assets/{jsx-runtime-B8dyIONw.js → jsx-runtime-C2p7wRmT.js} +1 -1
  136. package/dist/client/assets/{kaa-HQRTCXTJ-p81XNRfH.js → kaa-HQRTCXTJ-W15DEDPz.js} +1 -1
  137. package/dist/client/assets/{kab-KAB-JKIKKTGH-mV5VzQZc.js → kab-KAB-JKIKKTGH-MLh1inqS.js} +1 -1
  138. package/dist/client/assets/{kanban-definition-K7BYSVSG-C565sUNo.js → kanban-definition-K7BYSVSG-dA6NPLsg.js} +1 -1
  139. package/dist/client/assets/{kk-KZ-HXQ63ZFC-IIPX0GQv.js → kk-KZ-HXQ63ZFC-BtFrPeLs.js} +1 -1
  140. package/dist/client/assets/{km-KH-PKL3LSGX-D7WQFJuZ.js → km-KH-PKL3LSGX-xO5FyM9T.js} +1 -1
  141. package/dist/client/assets/{ko-KR-KXLREZX3-Bs1oLtJs.js → ko-KR-KXLREZX3-NZFoRybS.js} +1 -1
  142. package/dist/client/assets/{ku-TR-MJ4IER3X-DlxOs6aZ.js → ku-TR-MJ4IER3X-B5eVPIpK.js} +1 -1
  143. package/dist/client/assets/{line-D57TbKb7.js → line-B2GMovaI.js} +1 -1
  144. package/dist/client/assets/{linear-BIf852wI.js → linear-B2dOdA24.js} +1 -1
  145. package/dist/client/assets/{lt-LT-H6WFQ6FJ-xuo-3zKH.js → lt-LT-H6WFQ6FJ-D_7_OeJD.js} +1 -1
  146. package/dist/client/assets/{lv-LV-GOCK6SJW-C7S3M1nr.js → lv-LV-GOCK6SJW-CnpKr0oQ.js} +1 -1
  147. package/dist/client/assets/main-DSxNTtD-.js +1243 -0
  148. package/dist/client/assets/mermaid-parser.core-B1ogGcR8.js +4 -0
  149. package/dist/client/assets/{mermaid-runtime-DqncQoYK.js → mermaid-runtime-Bn8A6DGx.js} +3 -3
  150. package/dist/client/assets/{mindmap-definition-YRQLILUH-BbYzGfTD.js → mindmap-definition-YRQLILUH-DjQcsPoe.js} +1 -1
  151. package/dist/client/assets/{mr-IN-IXVLDMEQ-BsoowyZT.js → mr-IN-IXVLDMEQ-Pht2X_GK.js} +1 -1
  152. package/dist/client/assets/{my-MM-YG6MYTTD-DCqwN_K_.js → my-MM-YG6MYTTD-Cgq4HhPO.js} +1 -1
  153. package/dist/client/assets/{nb-NO-XGWJISD2-CZ5ytLgj.js → nb-NO-XGWJISD2-Bn_Bk2un.js} +1 -1
  154. package/dist/client/assets/{nl-NL-XVDVCPNC-wADsdb-h.js → nl-NL-XVDVCPNC-YkWSJS94.js} +1 -1
  155. package/dist/client/assets/{nn-NO-EMX5MJX5-D9zIKTL2.js → nn-NO-EMX5MJX5-DhP5eZJ7.js} +1 -1
  156. package/dist/client/assets/{nsis-CUd4RnvJ.js → nsis-QPGhLAeY.js} +1 -1
  157. package/dist/client/assets/{oc-FR-ROEINTVO-BSbBugJB.js → oc-FR-ROEINTVO-D3udMPnr.js} +1 -1
  158. package/dist/client/assets/{ordinal-B0PAtOQ6.js → ordinal-Dz3y_j0K.js} +1 -1
  159. package/dist/client/assets/{pa-IN-ZYN6SUDY-1pFA_3Pb.js → pa-IN-ZYN6SUDY-CR5YzFig.js} +1 -1
  160. package/dist/client/assets/packet-RMMSAZCW-DEwNbIrA.js +1 -0
  161. package/dist/client/assets/percentages-5DKR754L-D7n4T776.js +1 -0
  162. package/dist/client/assets/pie-UPGHQEXC-D5M_lSjo.js +1 -0
  163. package/dist/client/assets/pieDiagram-SKSYHLDU-jhHouFpk.js +30 -0
  164. package/dist/client/assets/{pl-PL-6VTG7PHC-DyYw0u_z.js → pl-PL-6VTG7PHC-_wZuoIDM.js} +1 -1
  165. package/dist/client/assets/preview-render-compiler-BjLlHmiQ.js +35 -0
  166. package/dist/client/assets/preview-render-compiler-Duy_3IcP.js +1 -0
  167. package/dist/client/assets/preview-render-worker-B4dH2yxj.js +59 -0
  168. package/dist/client/assets/{pt-BR-5YFKRR5G-DJCCBBDl.js → pt-BR-5YFKRR5G-M7gIm2Hi.js} +1 -1
  169. package/dist/client/assets/{pt-PT-GEIXXZ67-BPJd09Ax.js → pt-PT-GEIXXZ67-CcxWpkGj.js} +1 -1
  170. package/dist/client/assets/{pug-BqBF8qF7.js → pug-DkUcLYWt.js} +1 -1
  171. package/dist/client/assets/{quadrantDiagram-337W2JSQ-DhlKLozd.js → quadrantDiagram-337W2JSQ-CYKgdx7K.js} +1 -1
  172. package/dist/client/assets/quick-switcher-controller-DcyllYpm.js +5 -0
  173. package/dist/client/assets/radar-KQ55EAFF-AU1qh3Bw.js +1 -0
  174. package/dist/client/assets/{requirementDiagram-Z7DCOOCP-B7ZOMsIb.js → requirementDiagram-Z7DCOOCP-D9SHxoW7.js} +1 -1
  175. package/dist/client/assets/{ro-RO-E2P6TFZI-DWVyTV7V.js → ro-RO-E2P6TFZI-qR9noVzP.js} +1 -1
  176. package/dist/client/assets/{room-B0UGbzQj.js → room-yJaBAoEU.js} +1 -1
  177. package/dist/client/assets/{ru-RU-YBIIY43T-Dyar7CYM.js → ru-RU-YBIIY43T-CE4S_RX8.js} +1 -1
  178. package/dist/client/assets/{sankeyDiagram-WA2Y5GQK-CXRga6Op.js → sankeyDiagram-WA2Y5GQK-CfHe3D6R.js} +1 -1
  179. package/dist/client/assets/{sequenceDiagram-2WXFIKYE-CeSFlFx5.js → sequenceDiagram-2WXFIKYE-CZsMMqAJ.js} +1 -1
  180. package/dist/client/assets/{si-LK-673C2CI2-C61aLrIy.js → si-LK-673C2CI2-Bv6Avh3z.js} +1 -1
  181. package/dist/client/assets/{sk-SK-CKZHQ4AP-BlFwOxRD.js → sk-SK-CKZHQ4AP-Cnlpp55z.js} +1 -1
  182. package/dist/client/assets/{sl-SI-557H2GWM-DcAVW-_t.js → sl-SI-557H2GWM-BfGq7AQF.js} +1 -1
  183. package/dist/client/assets/stateDiagram-RAJIS63D-CoNZjTYV.js +1 -0
  184. package/dist/client/assets/stateDiagram-v2-FVOUBMTO-1zOw6NmQ.js +1 -0
  185. package/dist/client/assets/subset-shared.chunk-C9HjwTXy.js +1 -0
  186. package/dist/client/assets/{subset-worker.chunk-DVGT6bvR.js → subset-worker.chunk-BSCP6IiC.js} +1 -1
  187. package/dist/client/assets/{sv-SE-XOPKKDWS-BkhfOHzh.js → sv-SE-XOPKKDWS-B2_Vk-sp.js} +1 -1
  188. package/dist/client/assets/{ta-IN-XBH7DQI3-BIfwglZa.js → ta-IN-XBH7DQI3-BXQMZZIx.js} +1 -1
  189. package/dist/client/assets/{th-TH-TOCWH3R4-CkrxqVkf.js → th-TH-TOCWH3R4-C-ZIYMfH.js} +1 -1
  190. package/dist/client/assets/{timeline-definition-YZTLITO2-BXBHNWLQ.js → timeline-definition-YZTLITO2-DSe2mrG8.js} +1 -1
  191. package/dist/client/assets/{tr-TR-GXW6CYY5-CDdvG9rD.js → tr-TR-GXW6CYY5-dl702PMA.js} +1 -1
  192. package/dist/client/assets/treemap-KZPCXAKY-C9UI2fwP.js +1 -0
  193. package/dist/client/assets/{uk-UA-IJKTNUDG-DRHp0lWp.js → uk-UA-IJKTNUDG-CUYQvSSF.js} +1 -1
  194. package/dist/client/assets/{uz-UZ-TBZZEA4V-BIn-VE3Y.js → uz-UZ-TBZZEA4V-B9qw0PXX.js} +1 -1
  195. package/dist/client/assets/{vault-api-client-DIaCC56H.js → vault-api-client-BzHQseMN.js} +1 -1
  196. package/dist/client/assets/vault-utils-5Xr0MXCb.js +1 -0
  197. package/dist/client/assets/{vennDiagram-LZ73GAT5-Cs9aQmVM.js → vennDiagram-LZ73GAT5-xSzaIpy1.js} +1 -1
  198. package/dist/client/assets/{vi-VN-MULSGNVB-Du7t5I0v.js → vi-VN-MULSGNVB-DqxZ_sVc.js} +1 -1
  199. package/dist/client/assets/{xychartDiagram-JWTSCODW-B40ybbzC.js → xychartDiagram-JWTSCODW-C3vA70iJ.js} +1 -1
  200. package/dist/client/assets/{yjs-provider-reset-guard-DUP9XupO.js → yjs-provider-reset-guard-CtERLBID.js} +1 -1
  201. package/dist/client/assets/{zh-CN-MVX3E32U-RcjS3rjt.js → zh-CN-MVX3E32U-BM0aLuGc.js} +1 -1
  202. package/dist/client/assets/{zh-HK-JNU5RLIE-g8UeEw5v.js → zh-HK-JNU5RLIE-dmG_YD0d.js} +1 -1
  203. package/dist/client/assets/{zh-TW-LENVCA6T-DwV25BqC.js → zh-TW-LENVCA6T-LFgbiOi3.js} +1 -1
  204. package/dist/client/drawio-editor.html +1 -1
  205. package/dist/client/excalidraw-editor.html +1 -1
  206. package/dist/client/export-document.html +5 -5
  207. package/dist/client/index.html +4 -4
  208. package/docker-compose.yml +1 -0
  209. package/package.json +24 -21
  210. package/src/client/app/export-document.html +1 -1
  211. package/src/client/application/app-shell/ui-feature-shell.js +47 -1
  212. package/src/client/application/app-shell/ui-feature-toolbar.js +25 -3
  213. package/src/client/application/app-shell/workspace-feature.js +9 -0
  214. package/src/client/application/app-shell-elements.js +3 -0
  215. package/src/client/application/diagram-preview-hydrator.js +1 -1
  216. package/src/client/application/markdown-frontmatter.js +97 -0
  217. package/src/client/application/preview-render-compiler.js +60 -7
  218. package/src/client/application/preview-render-executor.js +8 -1
  219. package/src/client/application/preview-render-worker.js +4 -0
  220. package/src/client/application/preview-renderer.js +51 -1
  221. package/src/client/application/workspace-chrome-controller.js +25 -19
  222. package/src/client/application/workspace-coordinator.js +9 -0
  223. package/src/client/application/workspace-preview-controller.js +49 -3
  224. package/src/client/bootstrap/collabmd-app-shell.js +31 -2
  225. package/src/client/domain/markdown-formatting.js +1 -1
  226. package/src/client/domain/markdown-toolbar-actions.js +36 -0
  227. package/src/client/domain/vault-paths.js +19 -0
  228. package/src/client/export/export-page.js +11 -3
  229. package/src/client/export/export-pipeline.js +80 -3
  230. package/src/client/infrastructure/editor-session.js +4 -0
  231. package/src/client/infrastructure/editor-view-adapter.js +44 -7
  232. package/src/client/infrastructure/excalidraw-room-client.js +12 -4
  233. package/src/client/infrastructure/vault-api-client.js +54 -0
  234. package/src/client/presentation/app-shell-template.js +27 -0
  235. package/src/client/presentation/backlinks-panel.js +37 -11
  236. package/src/client/presentation/bases-preview-controller.js +444 -0
  237. package/src/client/presentation/file-action-controller.js +44 -2
  238. package/src/client/presentation/file-explorer-view.js +10 -2
  239. package/src/client/presentation/file-tree-state.js +9 -1
  240. package/src/client/presentation/git-diff-view-controller.js +7 -10
  241. package/src/client/presentation/quick-switcher-controller.js +54 -13
  242. package/src/client/styles/base.css +5 -0
  243. package/src/client/styles/export-document.css +12 -0
  244. package/src/client/styles/features/backlinks.css +65 -3
  245. package/src/client/styles/features/preview-markdown.css +347 -0
  246. package/src/client/styles/layout/editor-page.css +6 -0
  247. package/src/client/styles/layout/responsive.css +89 -0
  248. package/src/client/styles/layout/shell.css +14 -1
  249. package/src/client/styles/layout/view-modes.css +5 -0
  250. package/src/client/styles/overrides/codemirror.css +74 -0
  251. package/src/domain/file-kind.js +17 -2
  252. package/src/domain/wiki-link-resolver.js +41 -23
  253. package/src/domain/yaml-frontmatter.js +59 -0
  254. package/src/server/auth/create-auth-service.js +32 -6
  255. package/src/server/config/env.js +27 -0
  256. package/src/server/config/perf-logging.js +39 -0
  257. package/src/server/create-app-server.js +113 -7
  258. package/src/server/domain/backlink-index.js +129 -19
  259. package/src/server/domain/bases/base-query-service.js +2101 -0
  260. package/src/server/domain/collaboration/collaboration-document-store.js +13 -2
  261. package/src/server/domain/collaboration/collaboration-room.js +28 -5
  262. package/src/server/domain/workspace-state.js +52 -0
  263. package/src/server/infrastructure/git/history-service.js +1 -1
  264. package/src/server/infrastructure/http/create-request-handler.js +2 -0
  265. package/src/server/infrastructure/http/create-vault-api-command-handler.js +5 -0
  266. package/src/server/infrastructure/http/create-vault-api-handler.js +2 -0
  267. package/src/server/infrastructure/http/create-vault-api-query-handler.js +66 -0
  268. package/src/server/infrastructure/persistence/path-utils.js +1 -1
  269. package/src/server/infrastructure/persistence/pull-backup-store.js +1 -1
  270. package/src/server/infrastructure/persistence/vault-content-adapter.js +6 -0
  271. package/src/server/infrastructure/persistence/vault-file-store.js +88 -31
  272. package/src/server/infrastructure/workspace/file-system-sync-service.js +156 -31
  273. package/src/server/infrastructure/workspace/workspace-mutation-coordinator.js +47 -51
  274. package/src/server/shared/async-utils.js +25 -0
  275. package/dist/client/assets/architecture-PBZL5I3N-iRyVT2GQ.js +0 -1
  276. package/dist/client/assets/architectureDiagram-2XIMDMQ5-Bhh8YQHn.js +0 -36
  277. package/dist/client/assets/base-B5gONpJK.css +0 -1
  278. package/dist/client/assets/channel-s0w88EQN.js +0 -1
  279. package/dist/client/assets/chunk-27N2SPOM-DbHKsQ_j.js +0 -34
  280. package/dist/client/assets/chunk-GLR3WWYH-ZnuaBvXp.js +0 -2
  281. package/dist/client/assets/chunk-HHEYEP7N-DOQ0PCdH.js +0 -1
  282. package/dist/client/assets/chunk-QZHKN3VN-B0v4d-CS.js +0 -1
  283. package/dist/client/assets/classDiagram-VBA2DB6C-Bpdym3dj.js +0 -1
  284. package/dist/client/assets/classDiagram-v2-RAHNMMFH-CRAsdVDB.js +0 -1
  285. package/dist/client/assets/clone-C-n46MFF.js +0 -1
  286. package/dist/client/assets/dagre-KLK3FWXG-CXSnjrX-.js +0 -4
  287. package/dist/client/assets/diagram-E7M64L7V-De0StFef.js +0 -24
  288. package/dist/client/assets/diagram-IFDJBPK2-B2m6AJbU.js +0 -43
  289. package/dist/client/assets/diagram-P4PSJMXO-YBWLVENw.js +0 -24
  290. package/dist/client/assets/dist-BNcU46Ik.js +0 -1
  291. package/dist/client/assets/dist-BUEzOS23.js +0 -1
  292. package/dist/client/assets/dist-BflL-_8D.js +0 -1
  293. package/dist/client/assets/dist-CI_qEj5K.js +0 -1
  294. package/dist/client/assets/dist-CtFNDttZ.js +0 -1
  295. package/dist/client/assets/dist-DS_4VpEd.js +0 -1
  296. package/dist/client/assets/dist-DwsFUbuB.js +0 -1
  297. package/dist/client/assets/dist-VCYAp958.js +0 -1
  298. package/dist/client/assets/dist-Yxt8txtM.js +0 -1
  299. package/dist/client/assets/dist-npxgF_6V.js +0 -1
  300. package/dist/client/assets/dist-u0zDRMQt.js +0 -1
  301. package/dist/client/assets/drawioEditor-Eb2yYhjE.js +0 -2
  302. package/dist/client/assets/editor-session-DFzBn4RY.js +0 -16
  303. package/dist/client/assets/excalidraw-editor-Bat1FRoT.css +0 -1
  304. package/dist/client/assets/excalidraw-scene-CixfM-jL.js +0 -174
  305. package/dist/client/assets/excalidrawEditor-diK4VITg.js +0 -2
  306. package/dist/client/assets/export-page-CUOMczdp.js +0 -39
  307. package/dist/client/assets/exportDocument-BM4_f2n8.js +0 -2
  308. package/dist/client/assets/ganttDiagram-A5KZAMGK-R-AMIgxR.js +0 -292
  309. package/dist/client/assets/gitGraph-HDMCJU4V-kkuqHGSM.js +0 -1
  310. package/dist/client/assets/gitGraphDiagram-K3NZZRJ6-CIPit_Sh.js +0 -65
  311. package/dist/client/assets/image-32MOCVDX-BB6utPzr.js +0 -1
  312. package/dist/client/assets/index-BOOhEiLo.css +0 -1
  313. package/dist/client/assets/info-3K5VOQVL-DPN78whf.js +0 -1
  314. package/dist/client/assets/infoDiagram-LFFYTUFH-CF8jXFTm.js +0 -2
  315. package/dist/client/assets/javascript-8DvdgifH.js +0 -1
  316. package/dist/client/assets/main-C8adLQnt.js +0 -1174
  317. package/dist/client/assets/mermaid-parser.core-By_5k2SF.js +0 -4
  318. package/dist/client/assets/packet-RMMSAZCW-BymvQ5cQ.js +0 -1
  319. package/dist/client/assets/percentages-5DKR754L-CiI2D7zA.js +0 -1
  320. package/dist/client/assets/pie-UPGHQEXC-MmzJzWOE.js +0 -1
  321. package/dist/client/assets/pieDiagram-SKSYHLDU-CAU_gC7U.js +0 -30
  322. package/dist/client/assets/preview-render-compiler-CVfDHnqM.js +0 -1
  323. package/dist/client/assets/preview-render-compiler-CapHJDHT.js +0 -1
  324. package/dist/client/assets/preview-render-worker-wMS710Bv.js +0 -23
  325. package/dist/client/assets/quick-switcher-controller-DplOTsT3.js +0 -5
  326. package/dist/client/assets/radar-KQ55EAFF-CCohASSY.js +0 -1
  327. package/dist/client/assets/stateDiagram-RAJIS63D-CPoSrNwn.js +0 -1
  328. package/dist/client/assets/stateDiagram-v2-FVOUBMTO-5GW0Y21a.js +0 -1
  329. package/dist/client/assets/subset-shared.chunk-CC_u8ICU.js +0 -1
  330. package/dist/client/assets/treemap-KZPCXAKY-9kxB0uNY.js +0 -1
  331. package/dist/client/assets/vault-utils-BW53lKl1.js +0 -1
  332. /package/dist/client/assets/{apl-QJCYYBkj.js → apl-C1JYSI8J.js} +0 -0
  333. /package/dist/client/assets/{array-DwdVlTkF.js → array-B3agRrCs.js} +0 -0
  334. /package/dist/client/assets/{asciiarmor-DNy0UPqh.js → asciiarmor-DHW75j1s.js} +0 -0
  335. /package/dist/client/assets/{asn1-CNPXj-s7.js → asn1-CQiG40kG.js} +0 -0
  336. /package/dist/client/assets/{asterisk-BwMdLpT2.js → asterisk-BWExh0n4.js} +0 -0
  337. /package/dist/client/assets/{base-r5Zg2n3k.js → base-h1uscjTi.js} +0 -0
  338. /package/dist/client/assets/{brainfuck-C2gHT8aA.js → brainfuck-CTNFyOLg.js} +0 -0
  339. /package/dist/client/assets/{chunk-3PELD44J-CL87tpFo.js → chunk-3PELD44J-DymL2rGq.js} +0 -0
  340. /package/dist/client/assets/{chunk-A66AFZZU-DuceaGnc.js → chunk-A66AFZZU-BFHL744F.js} +0 -0
  341. /package/dist/client/assets/{chunk-SRAX5OIU-CC2mobFL.js → chunk-SRAX5OIU-CLVBQRWC.js} +0 -0
  342. /package/dist/client/assets/{clike-D5X7HJpo.js → clike-1_ZsiVV8.js} +0 -0
  343. /package/dist/client/assets/{clojure-BEDKZv_5.js → clojure-D-DYVqu7.js} +0 -0
  344. /package/dist/client/assets/{cmake-Y3shE7av.js → cmake-DtGL-Unu.js} +0 -0
  345. /package/dist/client/assets/{cobol-f-3TLk62.js → cobol-DP4QggbL.js} +0 -0
  346. /package/dist/client/assets/{coffeescript-C0XA9-xa.js → coffeescript-B_7eyHAa.js} +0 -0
  347. /package/dist/client/assets/{commonlisp-BOB6sIEu.js → commonlisp-COlJYiQT.js} +0 -0
  348. /package/dist/client/assets/{crystal-ByNgE_My.js → crystal-I_dE9xG-.js} +0 -0
  349. /package/dist/client/assets/{css-eaI-ENiR.js → css-CmhPNxBE.js} +0 -0
  350. /package/dist/client/assets/{cypher-CQ-dGGSi.js → cypher-DE6I2lIA.js} +0 -0
  351. /package/dist/client/assets/{cytoscape.esm-DBDRhUia.js → cytoscape.esm-Czjc507F.js} +0 -0
  352. /package/dist/client/assets/{d-D9pnu4Cr.js → d-BNkKjn0o.js} +0 -0
  353. /package/dist/client/assets/{defaultLocale-BWgun1yJ.js → defaultLocale-B_FbTTbl.js} +0 -0
  354. /package/dist/client/assets/{diff-z9q33Lo6.js → diff-BWuPUsEo.js} +0 -0
  355. /package/dist/client/assets/{dist-CsYRf4AV.js → dist-x7PIEmJu.js} +0 -0
  356. /package/dist/client/assets/{drawio-room-C592VDk7.js → drawio-room-DEivFyNV.js} +0 -0
  357. /package/dist/client/assets/{dtd-BDizf_te.js → dtd-C6brJFPg.js} +0 -0
  358. /package/dist/client/assets/{dylan-Bk__XCKW.js → dylan-Bft86ZSB.js} +0 -0
  359. /package/dist/client/assets/{ebnf-SzN4Kxtp.js → ebnf-D6ifG44A.js} +0 -0
  360. /package/dist/client/assets/{ecl-5ulxiKbt.js → ecl-M7Iek4lq.js} +0 -0
  361. /package/dist/client/assets/{eiffel-Bhoaqbb6.js → eiffel-DwxtewZF.js} +0 -0
  362. /package/dist/client/assets/{elm-C3je846J.js → elm-B1TncobV.js} +0 -0
  363. /package/dist/client/assets/{erlang-Cgk9SIAz.js → erlang-BDJZNtt8.js} +0 -0
  364. /package/dist/client/assets/{excalidraw-mermaid-stub-B_2dv3Ll.js → excalidraw-mermaid-stub-BZPU4ZhU.js} +0 -0
  365. /package/dist/client/assets/{fcl-dvkZwp9p.js → fcl-BWKK0S4-.js} +0 -0
  366. /package/dist/client/assets/{forth-DmfSa3jN.js → forth-nvhcMz63.js} +0 -0
  367. /package/dist/client/assets/{fortran-BsZAiNnN.js → fortran-BZID-z10.js} +0 -0
  368. /package/dist/client/assets/{gas-DBpKE9ut.js → gas-DjQsZDGE.js} +0 -0
  369. /package/dist/client/assets/{gherkin-CceEbBs7.js → gherkin-S0kHlzux.js} +0 -0
  370. /package/dist/client/assets/{groovy-CxJnDvES.js → groovy-BEKazBrO.js} +0 -0
  371. /package/dist/client/assets/{haskell-CUSb34Xy.js → haskell-C6qH3-aI.js} +0 -0
  372. /package/dist/client/assets/{haxe-6EHO_h-N.js → haxe-BY9d_5nB.js} +0 -0
  373. /package/dist/client/assets/{http-C3qcBpvG.js → http-DG1Y9fpK.js} +0 -0
  374. /package/dist/client/assets/{idl-C95wIO2I.js → idl-B64p3NTJ.js} +0 -0
  375. /package/dist/client/assets/{image-blob-reduce.esm-BaW4gpT9.js → image-blob-reduce.esm-DriR2zT9.js} +0 -0
  376. /package/dist/client/assets/{init-Bjj5fg68.js → init-DtLQcSuO.js} +0 -0
  377. /package/dist/client/assets/{isArrayLikeObject-Cmt1CYnI.js → isArrayLikeObject-BId_dPHM.js} +0 -0
  378. /package/dist/client/assets/{javascript-aWB87b1w.js → javascript-CdiVhQeA.js} +0 -0
  379. /package/dist/client/assets/{julia-DF9PPAXG.js → julia-B22G9Bym.js} +0 -0
  380. /package/dist/client/assets/{katex-BPsFnA3D.js → katex-CXYULLWy.js} +0 -0
  381. /package/dist/client/assets/{livescript-CnOyWwUY.js → livescript-CkcuHqeS.js} +0 -0
  382. /package/dist/client/assets/{lua-a0rEq19C.js → lua-kutgyRGY.js} +0 -0
  383. /package/dist/client/assets/{math-BaavbII8.js → math-B-LMBwub.js} +0 -0
  384. /package/dist/client/assets/{mathematica-CKUq0Ojc.js → mathematica-CKVhKnoY.js} +0 -0
  385. /package/dist/client/assets/{mbox-a-u2PLog.js → mbox-DANyzFJ2.js} +0 -0
  386. /package/dist/client/assets/{mirc-BOd43sOX.js → mirc-BVG2S5rO.js} +0 -0
  387. /package/dist/client/assets/{mllike-fHruGivh.js → mllike-C0p7lv48.js} +0 -0
  388. /package/dist/client/assets/{modelica-B0NJqf1C.js → modelica-vJ-Qa9jV.js} +0 -0
  389. /package/dist/client/assets/{mscgen-DJZ33SrF.js → mscgen-vUD-SWGJ.js} +0 -0
  390. /package/dist/client/assets/{mumps-DvMvHTxU.js → mumps-D0KfUTSd.js} +0 -0
  391. /package/dist/client/assets/{nginx-BVAs8laz.js → nginx-DkVceJrH.js} +0 -0
  392. /package/dist/client/assets/{ntriples-DrdyAZU1.js → ntriples-BBuCIfS0.js} +0 -0
  393. /package/dist/client/assets/{octave-_YqJ0g7E.js → octave-BTv2CqSQ.js} +0 -0
  394. /package/dist/client/assets/{oz-k7T3LoMr.js → oz-D8SjVDNU.js} +0 -0
  395. /package/dist/client/assets/{pascal-CftsTvte.js → pascal-T-tfhVyx.js} +0 -0
  396. /package/dist/client/assets/{path-BUmMWM1-.js → path-DIlZIGue.js} +0 -0
  397. /package/dist/client/assets/{perl-CbsLFc7A.js → perl-BDrCkHRd.js} +0 -0
  398. /package/dist/client/assets/{pica-By-YDy_B.js → pica-C1TdTz-C.js} +0 -0
  399. /package/dist/client/assets/{pig-C-jTwMS-.js → pig-BEyI4fPq.js} +0 -0
  400. /package/dist/client/assets/{powershell-DqXLgSHX.js → powershell-DtnFc6GG.js} +0 -0
  401. /package/dist/client/assets/{preview-diagram-utils-Dc83ucbv.js → preview-diagram-utils-COt-IYMD.js} +0 -0
  402. /package/dist/client/assets/{preview-render-profile-DPzmho7I.js → preview-render-profile-CR4dJZrp.js} +0 -0
  403. /package/dist/client/assets/{properties-05jaw55P.js → properties-DWUvbxV9.js} +0 -0
  404. /package/dist/client/assets/{protobuf-DThTsZQN.js → protobuf-CQGoYyfE.js} +0 -0
  405. /package/dist/client/assets/{puppet-DuHxMpoj.js → puppet-Dd-qWO3p.js} +0 -0
  406. /package/dist/client/assets/{python-BiE2VHJI.js → python-CZtTmYkS.js} +0 -0
  407. /package/dist/client/assets/{q-DH46YfNw.js → q-I27iQntV.js} +0 -0
  408. /package/dist/client/assets/{r-DmEm46kJ.js → r-DN_EydfL.js} +0 -0
  409. /package/dist/client/assets/{rough.esm-jZQkcmER.js → rough.esm-DE_lJ5Ge.js} +0 -0
  410. /package/dist/client/assets/{roundRect-CI6UmGg6.js → roundRect-BzEouiv_.js} +0 -0
  411. /package/dist/client/assets/{rpm-DILIIbRB.js → rpm-CjWxLM68.js} +0 -0
  412. /package/dist/client/assets/{ruby-2LcnHEMS.js → ruby-CB34f2Gf.js} +0 -0
  413. /package/dist/client/assets/{runtime-config-CqX_f_Q4.js → runtime-config-CqhchMC4.js} +0 -0
  414. /package/dist/client/assets/{sas-Bn81MKuB.js → sas-Bji4HDQq.js} +0 -0
  415. /package/dist/client/assets/{scheme-B8kPNbgd.js → scheme-C3elI80V.js} +0 -0
  416. /package/dist/client/assets/{shell-CGj6v8kb.js → shell-DUveK2Hb.js} +0 -0
  417. /package/dist/client/assets/{sieve-CfVNFN1K.js → sieve-2ogwMVx4.js} +0 -0
  418. /package/dist/client/assets/{simple-mode-_FSHdiXs.js → simple-mode-pOKc0mfx.js} +0 -0
  419. /package/dist/client/assets/{smalltalk-BpIFyCPt.js → smalltalk-BuGhc6lW.js} +0 -0
  420. /package/dist/client/assets/{solr-B7iFaetn.js → solr-DTxshpm8.js} +0 -0
  421. /package/dist/client/assets/{sparql-COhgMTFK.js → sparql-BOvq0dv7.js} +0 -0
  422. /package/dist/client/assets/{spreadsheet-BzuffEeg.js → spreadsheet-C6Vbtl9-.js} +0 -0
  423. /package/dist/client/assets/{sql-13lT5zDl.js → sql-DDFeQNTK.js} +0 -0
  424. /package/dist/client/assets/{src-E3c2cohN.js → src-Pgt9Gp65.js} +0 -0
  425. /package/dist/client/assets/{stex-BRSfZZYG.js → stex-CEwW0Q_0.js} +0 -0
  426. /package/dist/client/assets/{stylus-fFo0QRk_.js → stylus-D1SZIMDs.js} +0 -0
  427. /package/dist/client/assets/{swift-wb5gyb6a.js → swift-BCxe4-cw.js} +0 -0
  428. /package/dist/client/assets/{tcl-BJA7GgWY.js → tcl-SPk7uiDB.js} +0 -0
  429. /package/dist/client/assets/{textile-BQjiYu-x.js → textile-C48beRus.js} +0 -0
  430. /package/dist/client/assets/{tiddlywiki-D2vUXB6n.js → tiddlywiki-CiImjFLN.js} +0 -0
  431. /package/dist/client/assets/{tiki-BFhpdznG.js → tiki-HkXZ4BIW.js} +0 -0
  432. /package/dist/client/assets/{toml-DN06iQUw.js → toml-BmfpMy1_.js} +0 -0
  433. /package/dist/client/assets/{troff-DuQfjhPH.js → troff-BjbEOT5E.js} +0 -0
  434. /package/dist/client/assets/{ttcn-BCTy6d50.js → ttcn-NA-V4KnY.js} +0 -0
  435. /package/dist/client/assets/{ttcn-cfg-BYnZQqGa.js → ttcn-cfg-TPHncdGN.js} +0 -0
  436. /package/dist/client/assets/{turtle-BvN-Me9x.js → turtle-GBz_E4RG.js} +0 -0
  437. /package/dist/client/assets/{vb-DYk3wW9u.js → vb-C19AQWqO.js} +0 -0
  438. /package/dist/client/assets/{vbscript-BKI61VS6.js → vbscript-CHJk3s95.js} +0 -0
  439. /package/dist/client/assets/{velocity-BrtitHHA.js → velocity-Ya0P4sQU.js} +0 -0
  440. /package/dist/client/assets/{verilog-CjUx3yiL.js → verilog-C4wTycyo.js} +0 -0
  441. /package/dist/client/assets/{vhdl-CPWwYF4V.js → vhdl-Bwndeg44.js} +0 -0
  442. /package/dist/client/assets/{webidl-PiVOzma8.js → webidl-DttrYZRT.js} +0 -0
  443. /package/dist/client/assets/{xquery-CiTzM_oK.js → xquery-CEDTd8qs.js} +0 -0
  444. /package/dist/client/assets/{yacas-4QS9CntY.js → yacas-C7dxlPB0.js} +0 -0
  445. /package/dist/client/assets/{z80-BxidrTKR.js → z80-BqEfFSnA.js} +0 -0
@@ -2,7 +2,9 @@ import { createServer } from 'http';
2
2
 
3
3
  import { loadConfig } from './config/env.js';
4
4
  import { createAuthService } from './auth/create-auth-service.js';
5
+ import { logPerfEvent } from './config/perf-logging.js';
5
6
  import { BacklinkIndex } from './domain/backlink-index.js';
7
+ import { BaseQueryService } from './domain/bases/base-query-service.js';
6
8
  import { CollaborationDocumentStore } from './domain/collaboration/collaboration-document-store.js';
7
9
  import { CollaborationRoom } from './domain/collaboration/collaboration-room.js';
8
10
  import { DocxExporter } from './domain/docx-exporter.js';
@@ -38,10 +40,47 @@ function closeHttpServer(httpServer) {
38
40
  });
39
41
  }
40
42
 
43
+ function workspaceStateMetadataEqual(left = null, right = null) {
44
+ const leftMetadata = left?.metadata;
45
+ const rightMetadata = right?.metadata;
46
+ if (!(leftMetadata instanceof Map) || !(rightMetadata instanceof Map)) {
47
+ return false;
48
+ }
49
+
50
+ if (leftMetadata.size !== rightMetadata.size) {
51
+ return false;
52
+ }
53
+
54
+ for (const [pathValue, leftEntry] of leftMetadata.entries()) {
55
+ const rightEntry = rightMetadata.get(pathValue);
56
+ if (!rightEntry) {
57
+ return false;
58
+ }
59
+
60
+ if (
61
+ leftEntry.type !== rightEntry.type
62
+ || leftEntry.size !== rightEntry.size
63
+ || leftEntry.inode !== rightEntry.inode
64
+ || leftEntry.mtimeMs !== rightEntry.mtimeMs
65
+ ) {
66
+ return false;
67
+ }
68
+ }
69
+
70
+ return true;
71
+ }
72
+
41
73
  export function createAppServer(config = loadConfig()) {
42
74
  const authService = createAuthService(config);
43
75
  const vaultFileStore = new VaultFileStore({ vaultDir: config.vaultDir });
44
76
  const backlinkIndex = new BacklinkIndex({ vaultFileStore });
77
+ let fileSystemSyncService = null;
78
+ let workspaceMutationCoordinator = null;
79
+ const baseQueryService = new BaseQueryService({
80
+ vaultFileStore,
81
+ workspaceStateProvider: () => workspaceMutationCoordinator?.workspaceState ?? null,
82
+ workspaceStateSynchronizer: () => fileSystemSyncService?.flushPendingChanges?.(),
83
+ });
45
84
  const docxExporter = new DocxExporter();
46
85
  const plantUmlRenderer = new PlantUmlRenderer({
47
86
  serverUrl: config.plantumlServerUrl,
@@ -54,7 +93,6 @@ export function createAppServer(config = loadConfig()) {
54
93
  const testControls = {
55
94
  wsRoomHydrateDelayMs: Math.max(0, Number(config.testWsRoomHydrateDelayMs || 0)),
56
95
  };
57
- let workspaceMutationCoordinator = null;
58
96
  const roomRegistry = new RoomRegistry({
59
97
  createRoom: ({ name, onEmpty }) => {
60
98
  const isTransientRoom = name === '__lobby__' || name === WORKSPACE_ROOM_NAME || isDrawioLeaseRoom(name);
@@ -69,6 +107,7 @@ export function createAppServer(config = loadConfig()) {
69
107
  maxBufferedAmountBytes: config.wsMaxBufferedAmountBytes,
70
108
  name,
71
109
  onEmpty,
110
+ perfLoggingEnabled: config.perfLoggingEnabled,
72
111
  });
73
112
 
74
113
  if (name === WORKSPACE_ROOM_NAME && workspaceMutationCoordinator?.workspaceState) {
@@ -82,12 +121,14 @@ export function createAppServer(config = loadConfig()) {
82
121
  });
83
122
  workspaceMutationCoordinator = new WorkspaceMutationCoordinator({
84
123
  backlinkIndex,
124
+ baseQueryService,
85
125
  roomRegistry,
86
126
  vaultFileStore,
87
127
  });
88
128
  vaultFileStore.setManagedWriteTracker(workspaceMutationCoordinator);
89
- const fileSystemSyncService = new FileSystemSyncService({
129
+ fileSystemSyncService = new FileSystemSyncService({
90
130
  mutationCoordinator: workspaceMutationCoordinator,
131
+ perfLoggingEnabled: config.perfLoggingEnabled,
91
132
  vaultFileStore,
92
133
  });
93
134
  const requestHandler = createRequestHandler(
@@ -95,6 +136,7 @@ export function createAppServer(config = loadConfig()) {
95
136
  authService,
96
137
  vaultFileStore,
97
138
  backlinkIndex,
139
+ baseQueryService,
98
140
  docxExporter,
99
141
  roomRegistry,
100
142
  plantUmlRenderer,
@@ -129,21 +171,84 @@ export function createAppServer(config = loadConfig()) {
129
171
  let vaultFileCount = 0;
130
172
 
131
173
  async function listen() {
132
- vaultFileCount = await vaultFileStore.countVaultFiles();
133
- await backlinkIndex.build();
134
- await workspaceMutationCoordinator.initialize();
135
- await fileSystemSyncService.start();
174
+ const startupStartedAt = Date.now();
175
+
176
+ const initialWorkspaceScanStartedAt = Date.now();
177
+ const initialWorkspaceSnapshot = await vaultFileStore.scanWorkspaceState();
178
+ vaultFileCount = initialWorkspaceSnapshot.vaultFileCount ?? 0;
179
+ logPerfEvent(config.perfLoggingEnabled, 'startup', {
180
+ durationMs: Date.now() - initialWorkspaceScanStartedAt,
181
+ phase: 'workspace-scan',
182
+ vaultFileCount,
183
+ });
184
+
185
+ const backlinkBuildStartedAt = Date.now();
186
+ await backlinkIndex.build({ workspaceState: initialWorkspaceSnapshot });
187
+ logPerfEvent(config.perfLoggingEnabled, 'startup', {
188
+ durationMs: Date.now() - backlinkBuildStartedAt,
189
+ markdownFileCount: initialWorkspaceSnapshot.markdownPaths?.length ?? 0,
190
+ phase: 'backlink-build',
191
+ });
192
+
193
+ const liveWorkspaceScanStartedAt = Date.now();
194
+ const liveWorkspaceSnapshot = await vaultFileStore.scanWorkspaceState();
195
+ const workspaceChangedDuringStartup = !workspaceStateMetadataEqual(initialWorkspaceSnapshot, liveWorkspaceSnapshot);
196
+ vaultFileCount = liveWorkspaceSnapshot.vaultFileCount ?? vaultFileCount;
197
+ logPerfEvent(config.perfLoggingEnabled, 'startup', {
198
+ changedDuringStartup: workspaceChangedDuringStartup,
199
+ durationMs: Date.now() - liveWorkspaceScanStartedAt,
200
+ phase: 'workspace-rescan',
201
+ vaultFileCount,
202
+ });
203
+
204
+ if (workspaceChangedDuringStartup) {
205
+ const backlinkRebuildStartedAt = Date.now();
206
+ await backlinkIndex.build({ workspaceState: liveWorkspaceSnapshot });
207
+ logPerfEvent(config.perfLoggingEnabled, 'startup', {
208
+ durationMs: Date.now() - backlinkRebuildStartedAt,
209
+ markdownFileCount: liveWorkspaceSnapshot.markdownPaths?.length ?? 0,
210
+ phase: 'backlink-rebuild',
211
+ });
212
+ }
213
+
214
+ const workspaceInitStartedAt = Date.now();
215
+ await workspaceMutationCoordinator.initialize({ snapshot: liveWorkspaceSnapshot });
216
+ logPerfEvent(config.perfLoggingEnabled, 'startup', {
217
+ durationMs: Date.now() - workspaceInitStartedAt,
218
+ phase: 'workspace-init',
219
+ });
220
+
221
+ const watcherStartStartedAt = Date.now();
222
+ await fileSystemSyncService.start({ snapshot: liveWorkspaceSnapshot });
223
+ logPerfEvent(config.perfLoggingEnabled, 'startup', {
224
+ durationMs: Date.now() - watcherStartStartedAt,
225
+ phase: 'watcher-start',
226
+ });
136
227
 
137
228
  return new Promise((resolve, reject) => {
229
+ const listenStartedAt = Date.now();
138
230
  httpServer.once('error', reject);
139
231
  httpServer.listen(config.port, config.host, () => {
140
232
  httpServer.off('error', reject);
141
233
  const address = httpServer.address();
142
- resolve({
234
+ const result = {
143
235
  address,
144
236
  host: getDisplayHost(config.host),
145
237
  port: typeof address === 'object' && address ? address.port : config.port,
146
238
  wsPath: `${config.basePath || ''}${config.wsBasePath}/:file`,
239
+ };
240
+ logPerfEvent(config.perfLoggingEnabled, 'startup', {
241
+ durationMs: Date.now() - listenStartedAt,
242
+ phase: 'listen',
243
+ port: result.port,
244
+ });
245
+ logPerfEvent(config.perfLoggingEnabled, 'startup-total', {
246
+ durationMs: Date.now() - startupStartedAt,
247
+ markdownFileCount: liveWorkspaceSnapshot.markdownPaths?.length ?? 0,
248
+ vaultFileCount,
249
+ });
250
+ resolve({
251
+ ...result,
147
252
  });
148
253
  });
149
254
  });
@@ -176,6 +281,7 @@ export function createAppServer(config = loadConfig()) {
176
281
  roomRegistry,
177
282
  workspaceMutationCoordinator,
178
283
  authService,
284
+ backlinkIndex,
179
285
  fileSystemSyncService,
180
286
  gitService,
181
287
  setTestHydrateDelayMs(delayMs = 0) {
@@ -11,8 +11,11 @@
11
11
  */
12
12
 
13
13
  import { createWikiTargetIndex, resolveWikiTargetWithIndex } from '../../domain/wiki-link-resolver.js';
14
+ import { isMarkdownFilePath } from '../../domain/file-kind.js';
15
+ import { mapWithConcurrency } from '../shared/async-utils.js';
14
16
 
15
17
  const WIKI_LINK_RE = /\[\[([^\]|]+)(?:\|[^\]]+)?\]\]/g;
18
+ const BACKLINK_BUILD_CONCURRENCY = 8;
16
19
 
17
20
  function createDeferred() {
18
21
  let resolve;
@@ -41,8 +44,10 @@ export class BacklinkIndex {
41
44
  this.reverse = new Map();
42
45
  /** @type {Map<string, Map<string, string[]>>} sourcePath → targetPath → contexts[] */
43
46
  this.contextsBySource = new Map();
44
- /** @type {string[]} cached flat file list for link resolution */
47
+ /** @type {string[]} cached flat target file list for link resolution */
45
48
  this._fileList = [];
49
+ /** @type {string[]} cached markdown source file list for content scans */
50
+ this._sourceFileList = [];
46
51
  /** @type {Set<string>} file path membership set */
47
52
  this._fileSet = new Set();
48
53
  this._wikiTargetIndex = createWikiTargetIndex(this._fileList);
@@ -58,13 +63,17 @@ export class BacklinkIndex {
58
63
  * Build the full index by scanning every markdown file in the vault.
59
64
  * Called once at server startup.
60
65
  */
61
- async build() {
66
+ async build({ workspaceState = null } = {}) {
62
67
  this._requestedBuildVersion += 1;
68
+ this._latestRequestedWorkspaceState = workspaceState;
63
69
  return this.flushScheduledBuild();
64
70
  }
65
71
 
66
- scheduleBuild({ delayMs = this.rebuildDelayMs } = {}) {
72
+ scheduleBuild({ delayMs = this.rebuildDelayMs, workspaceState } = {}) {
67
73
  this._requestedBuildVersion += 1;
74
+ if (workspaceState !== undefined) {
75
+ this._latestRequestedWorkspaceState = workspaceState;
76
+ }
68
77
  if (!this._scheduledBuildDeferred) {
69
78
  this._scheduledBuildDeferred = createDeferred();
70
79
  }
@@ -116,8 +125,9 @@ export class BacklinkIndex {
116
125
  }
117
126
 
118
127
  const targetVersion = this._requestedBuildVersion;
128
+ const workspaceState = this._latestRequestedWorkspaceState;
119
129
  this._buildPromise = (async () => {
120
- await this._performBuild();
130
+ await this._performBuild(workspaceState);
121
131
  this._completedBuildVersion = Math.max(this._completedBuildVersion, targetVersion);
122
132
  })().finally(() => {
123
133
  this._buildPromise = null;
@@ -126,39 +136,69 @@ export class BacklinkIndex {
126
136
  return this._buildPromise;
127
137
  }
128
138
 
129
- async _performBuild() {
139
+ async _performBuild(workspaceState = null) {
130
140
  this.forward.clear();
131
141
  this.reverse.clear();
132
142
  this.contextsBySource.clear();
133
143
 
134
- const tree = await this.vaultFileStore.tree();
135
- this._fileList = flattenTree(tree);
144
+ const snapshot = workspaceState ?? await this._resolveWorkspaceState();
145
+ this._fileList = Array.from(snapshot?.filePaths ?? snapshot?.markdownPaths ?? []);
146
+ this._sourceFileList = Array.from(
147
+ snapshot?.markdownPaths ?? this._fileList.filter((filePath) => isMarkdownFilePath(filePath)),
148
+ ).filter((filePath) => this._fileList.includes(filePath));
136
149
  this._fileSet = new Set(this._fileList);
137
150
  this._refreshWikiTargetIndex();
138
151
 
139
- for (const filePath of this._fileList) {
140
- const content = await this.vaultFileStore.readMarkdownFile(filePath);
152
+ const fileContents = await mapWithConcurrency(
153
+ this._sourceFileList,
154
+ BACKLINK_BUILD_CONCURRENCY,
155
+ async (filePath) => ({
156
+ content: await this.vaultFileStore.readMarkdownFile(filePath),
157
+ filePath,
158
+ }),
159
+ );
160
+
161
+ for (const { content, filePath } of fileContents) {
141
162
  if (content !== null) {
142
163
  this._indexFile(filePath, content);
143
164
  }
144
165
  }
145
166
 
146
167
  this._built = true;
147
- console.log(`[backlinks] Index built: ${this._fileList.length} files, ${this.reverse.size} targets with backlinks`);
168
+ console.log(`[backlinks] Index built: ${this._sourceFileList.length} markdown sources, ${this._fileList.length} targets, ${this.reverse.size} targets with backlinks`);
169
+ }
170
+
171
+ async _resolveWorkspaceState() {
172
+ if (typeof this.vaultFileStore.scanWorkspaceState === 'function') {
173
+ return this.vaultFileStore.scanWorkspaceState();
174
+ }
175
+
176
+ const tree = await this.vaultFileStore.tree();
177
+ const filePaths = flattenTree(tree);
178
+ return {
179
+ filePaths,
180
+ markdownPaths: filePaths.filter((filePath) => isMarkdownFilePath(filePath)),
181
+ };
148
182
  }
149
183
 
150
184
  /**
151
185
  * Incrementally update the index when a file's content changes.
152
186
  * Call this after every persist / write.
153
187
  */
154
- updateFile(filePath, content) {
188
+ updateFile(filePath, content, { refreshIndex = true } = {}) {
155
189
  // Remove old forward links for this file
156
190
  this._removeForwardLinks(filePath);
157
191
 
158
192
  if (!this._fileSet.has(filePath)) {
159
193
  this._fileSet.add(filePath);
160
194
  this._fileList.push(filePath);
161
- this._refreshWikiTargetIndex();
195
+ if (refreshIndex) {
196
+ this._refreshWikiTargetIndex();
197
+ }
198
+ }
199
+
200
+ if (!isMarkdownFilePath(filePath)) {
201
+ return;
162
202
  }
163
203
 
164
204
  // Re-index with new content
@@ -168,36 +208,47 @@ export class BacklinkIndex {
168
208
  /**
169
209
  * Handle file creation — add to file list and index its content.
170
210
  */
171
- onFileCreated(filePath, content = '') {
211
+ onFileCreated(filePath, content = '', { refreshIndex = true } = {}) {
212
+ let membershipChanged = false;
172
213
  if (!this._fileSet.has(filePath)) {
173
214
  this._fileSet.add(filePath);
174
215
  this._fileList.push(filePath);
175
- this._refreshWikiTargetIndex();
216
+ membershipChanged = true;
217
+ if (refreshIndex) {
218
+ this._refreshWikiTargetIndex();
219
+ }
176
220
  }
177
221
 
178
- if (content) {
222
+ if (content && isMarkdownFilePath(filePath)) {
179
223
  this._indexFile(filePath, content);
180
224
  }
225
+
226
+ return membershipChanged;
181
227
  }
182
228
 
183
229
  /**
184
230
  * Handle file deletion — remove from file list and all index entries.
185
231
  */
186
- onFileDeleted(filePath) {
232
+ onFileDeleted(filePath, { refreshIndex = true } = {}) {
187
233
  this._removeForwardLinks(filePath);
234
+ let membershipChanged = false;
188
235
  if (this._fileSet.delete(filePath)) {
189
236
  this._fileList = this._fileList.filter((f) => f !== filePath);
190
- this._refreshWikiTargetIndex();
237
+ membershipChanged = true;
238
+ if (refreshIndex) {
239
+ this._refreshWikiTargetIndex();
240
+ }
191
241
  }
192
242
 
193
243
  // Also remove this file as a reverse entry (no one can link to a deleted file)
194
244
  this.reverse.delete(filePath);
245
+ return membershipChanged;
195
246
  }
196
247
 
197
248
  /**
198
249
  * Handle file rename — re-map all index entries from oldPath to newPath.
199
250
  */
200
- onFileRenamed(oldPath, newPath) {
251
+ onFileRenamed(oldPath, newPath, { refreshIndex = true } = {}) {
201
252
  // Move cached contexts for the renamed source file.
202
253
  if (this.contextsBySource.has(oldPath)) {
203
254
  const sourceContexts = this.contextsBySource.get(oldPath);
@@ -248,9 +299,68 @@ export class BacklinkIndex {
248
299
  }
249
300
 
250
301
  // Update file list
302
+ let membershipChanged = false;
251
303
  if (this._fileSet.delete(oldPath)) {
252
304
  this._fileSet.add(newPath);
253
305
  this._fileList = this._fileList.map((f) => (f === oldPath ? newPath : f));
306
+ membershipChanged = true;
307
+ if (refreshIndex) {
308
+ this._refreshWikiTargetIndex();
309
+ }
310
+ }
311
+
312
+ return membershipChanged;
313
+ }
314
+
315
+ async applyWorkspaceChange(workspaceChange = {}, {
316
+ previousState = null,
317
+ nextState = null,
318
+ } = {}) {
319
+ let refreshIndex = false;
320
+ const previousEntries = previousState?.entries ?? new Map();
321
+ const nextEntries = nextState?.entries ?? new Map();
322
+
323
+ for (const pathValue of workspaceChange.deletedPaths ?? []) {
324
+ refreshIndex = this.onFileDeleted(pathValue, { refreshIndex: false }) || refreshIndex;
325
+ }
326
+
327
+ for (const entry of workspaceChange.renamedPaths ?? []) {
328
+ if (!entry?.oldPath || !entry?.newPath) {
329
+ continue;
330
+ }
331
+ refreshIndex = this.onFileRenamed(entry.oldPath, entry.newPath, { refreshIndex: false }) || refreshIndex;
332
+ }
333
+
334
+ for (const pathValue of new Set(workspaceChange.changedPaths ?? [])) {
335
+ const existsNow = nextEntries.has(pathValue);
336
+ const existedBefore = previousEntries.has(pathValue);
337
+ if (!existsNow) {
338
+ if (existedBefore) {
339
+ refreshIndex = this.onFileDeleted(pathValue, { refreshIndex: false }) || refreshIndex;
340
+ }
341
+ continue;
342
+ }
343
+
344
+ if (!isMarkdownFilePath(pathValue)) {
345
+ if (!existedBefore) {
346
+ refreshIndex = this.onFileCreated(pathValue, '', { refreshIndex: false }) || refreshIndex;
347
+ }
348
+ continue;
349
+ }
350
+
351
+ const content = await this.vaultFileStore.readMarkdownFile(pathValue);
352
+ if (content === null) {
353
+ continue;
354
+ }
355
+
356
+ if (existedBefore) {
357
+ this.updateFile(pathValue, content, { refreshIndex: false });
358
+ } else {
359
+ refreshIndex = this.onFileCreated(pathValue, content, { refreshIndex: false }) || refreshIndex;
360
+ }
361
+ }
362
+
363
+ if (refreshIndex) {
254
364
  this._refreshWikiTargetIndex();
255
365
  }
256
366
  }
@@ -374,7 +484,7 @@ export class BacklinkIndex {
374
484
  function flattenTree(nodes) {
375
485
  const files = [];
376
486
  for (const node of nodes) {
377
- if (node.type === 'file') {
487
+ if (node.type && node.type !== 'directory') {
378
488
  files.push(node.path);
379
489
  } else if (node.children) {
380
490
  files.push(...flattenTree(node.children));