collabmd 0.1.40 → 0.1.41

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 (443) hide show
  1. package/README.md +68 -0
  2. package/dist/client/assets/{CodeMirrorEditor-UCMRAMCV-CjJV4GGp.js → CodeMirrorEditor-UCMRAMCV-DHEFSr_E.js} +1 -1
  3. package/dist/client/assets/{ar-SA-NXDWD63E-BfWwfLiP.js → ar-SA-NXDWD63E-S8m2UyIj.js} +1 -1
  4. package/dist/client/assets/{arc-B59iLcOr.js → arc-OeTCl9Oy.js} +1 -1
  5. package/dist/client/assets/architecture-7EHR7CIX-BQpCYB3J.js +1 -0
  6. package/dist/client/assets/{architectureDiagram-3BPJPVTR-Cs4u0ty-.js → architectureDiagram-3BPJPVTR-CDqq0KA0.js} +2 -2
  7. package/dist/client/assets/{az-AZ-MXSORGZV-D3w9H6nC.js → az-AZ-MXSORGZV-DSzWvZBB.js} +1 -1
  8. package/dist/client/assets/bases-preview-controller-CBHDzzot.js +143 -0
  9. package/dist/client/assets/{bg-BG-O6MV2KSF-CqITeIE6.js → bg-BG-O6MV2KSF-C5nBekx3.js} +1 -1
  10. package/dist/client/assets/{blockDiagram-GPEHLZMM-C4RLg7wo.js → blockDiagram-GPEHLZMM-Z9jBLpGg.js} +1 -1
  11. package/dist/client/assets/{bn-IN-MMW2ORAC-BZcsVFhS.js → bn-BD-T2VJNT7N-D-8xXOzM.js} +1 -1
  12. package/dist/client/assets/{bn-BD-T2VJNT7N-DRxwOMG_.js → bn-IN-MMW2ORAC-D-8xXOzM.js} +1 -1
  13. package/dist/client/assets/button-2ZnWQkWV.js +1 -0
  14. package/dist/client/assets/{c4Diagram-AAUBKEIU-DMK9WIWS.js → c4Diagram-AAUBKEIU-UA_Eopag.js} +1 -1
  15. package/dist/client/assets/{ca-ES-MKBCGNOG-D2cujUJ7.js → ca-ES-MKBCGNOG-B3Ly68p3.js} +1 -1
  16. package/dist/client/assets/channel-CpvwJaGK.js +1 -0
  17. package/dist/client/assets/{chunk-2J33WTMH-Beqll06X.js → chunk-2J33WTMH-DjYq2kZ3.js} +1 -1
  18. package/dist/client/assets/{chunk-3OPIFGDE-Kf30X6bZ.js → chunk-3OPIFGDE-DucrRywM.js} +1 -1
  19. package/dist/client/assets/{chunk-4BX2VUAB-BVNkn9EH.js → chunk-4BX2VUAB-DcdHBPEH.js} +1 -1
  20. package/dist/client/assets/{chunk-4EGX6M5U-6L36_8q8.js → chunk-4EGX6M5U-BfCFom1o.js} +1 -1
  21. package/dist/client/assets/{chunk-55IACEB6-CaPPZbdp.js → chunk-55IACEB6-B7ycySPI.js} +1 -1
  22. package/dist/client/assets/{chunk-5DO6E6H7-BpgUf0HE.js → chunk-5DO6E6H7-DP8QnaJj.js} +1 -1
  23. package/dist/client/assets/{chunk-5ZQYHXKU-BJyABJSy.js → chunk-5ZQYHXKU-C4q4UVKa.js} +1 -1
  24. package/dist/client/assets/{chunk-727SXJPM-DNANnyAn.js → chunk-727SXJPM-DdWH2cfs.js} +1 -1
  25. package/dist/client/assets/{chunk-AQP2D5EJ-D-ou9vaq.js → chunk-AQP2D5EJ-D8o8QwFY.js} +1 -1
  26. package/dist/client/assets/{chunk-BR22UD5L-CHoFxkAQ.js → chunk-BR22UD5L-CT6fcRkN.js} +1 -1
  27. package/dist/client/assets/{chunk-BSJP7CBP-AmT6zI00.js → chunk-BSJP7CBP-COmh28sk.js} +1 -1
  28. package/dist/client/assets/{chunk-CSCIHK7Q-BIoF4mTy.js → chunk-CSCIHK7Q-D0bHjxCO.js} +2 -2
  29. package/dist/client/assets/{chunk-FHYWG6QK-qLbgayZT.js → chunk-FHYWG6QK-Ce318laP.js} +1 -1
  30. package/dist/client/assets/{chunk-FMBD7UC4-DD6CIukb.js → chunk-FMBD7UC4-CM39cCCr.js} +1 -1
  31. package/dist/client/assets/{chunk-KSCS5N6A-DSHzBB4H.js → chunk-KSCS5N6A-Bk33m7yK.js} +1 -1
  32. package/dist/client/assets/{chunk-L5ZTLDWV-Ca0loQr2.js → chunk-L5ZTLDWV-J2sQu4Os.js} +1 -1
  33. package/dist/client/assets/{chunk-LZXEDZCA-D4QboL2E.js → chunk-LZXEDZCA-CTmBbzaL.js} +2 -2
  34. package/dist/client/assets/chunk-MMN3DZ5N-pTRxhVYl.js +35 -0
  35. package/dist/client/assets/{chunk-MPE355IW-BGGMthoR.js → chunk-MPE355IW-C_vkbqLj.js} +1 -1
  36. package/dist/client/assets/{chunk-MZUSXYTE-CXyCvcyW.js → chunk-MZUSXYTE-BnVcgphH.js} +1 -1
  37. package/dist/client/assets/{chunk-N66VUXT2-CZ58QOjk.js → chunk-N66VUXT2-B6CG-CnY.js} +1 -1
  38. package/dist/client/assets/{chunk-ND2GUHAM-3Xs0Awks.js → chunk-ND2GUHAM-D-_vkA5V.js} +1 -1
  39. package/dist/client/assets/{chunk-NNHCCRGN--8l6bbR-.js → chunk-NNHCCRGN-DlpIbxXb.js} +6 -6
  40. package/dist/client/assets/{chunk-NZK2D7GU-w2jXiKa6.js → chunk-NZK2D7GU-Dc42C0Jt.js} +1 -1
  41. package/dist/client/assets/{chunk-O5CBEL6O-BFgstMja.js → chunk-O5CBEL6O-DdEDfb8z.js} +1 -1
  42. package/dist/client/assets/{chunk-PUPMXCY4-JvkUXyIj.js → chunk-PUPMXCY4-BZ88kQjK.js} +1 -1
  43. package/dist/client/assets/chunk-QZHKN3VN-D5YLQvjj.js +1 -0
  44. package/dist/client/assets/{chunk-SRAX5OIU-C_UPA-vt.js → chunk-SRAX5OIU-CiRgnkYo.js} +1 -1
  45. package/dist/client/assets/{chunk-UIBZB4QT-B4OybPy_.js → chunk-UIBZB4QT-r8p3pBHw.js} +1 -1
  46. package/dist/client/assets/{chunk-WCWK7LTN-BOL8a2ua.js → chunk-WCWK7LTN-DrKYkgXF.js} +1 -1
  47. package/dist/client/assets/chunk-WU5MYG2G-Cg2iUbET.js +1 -0
  48. package/dist/client/assets/{chunk-XPW4576I-D5FnFhOk.js → chunk-XPW4576I-BZyvtu42.js} +1 -1
  49. package/dist/client/assets/{chunk-Z5NKEFVG-GcpeeLo6.js → chunk-Z5NKEFVG-Dknufskm.js} +7 -7
  50. package/dist/client/assets/classDiagram-4FO5ZUOK-CGWY0cfg.js +1 -0
  51. package/dist/client/assets/classDiagram-v2-Q7XG4LA2-CGWY0cfg.js +1 -0
  52. package/dist/client/assets/{cose-bilkent-S5V4N54A-Cx3Qt7pR.js → cose-bilkent-S5V4N54A-BuQb9WEM.js} +1 -1
  53. package/dist/client/assets/{cs-CZ-V77HGUP7-BXqhmWZb.js → cs-CZ-V77HGUP7-6BCNHMpz.js} +1 -1
  54. package/dist/client/assets/{cytoscape.esm-B_ygTtvl.js → cytoscape.esm-DelgaX4f.js} +2 -2
  55. package/dist/client/assets/{da-DK-I5RFNTM4-raD_lQnT.js → da-DK-I5RFNTM4-CVeCWpi2.js} +1 -1
  56. package/dist/client/assets/{dagre-BM42HDAG-BpURvxT4.js → dagre-BM42HDAG-ux5hA7G6.js} +1 -1
  57. package/dist/client/assets/{dagre-BcZLxzJJ.js → dagre-Bx709z4p.js} +1 -1
  58. package/dist/client/assets/{de-CH-WLRDEVBV-CyNG_YAO.js → de-CH-WLRDEVBV-CV-FNCkY.js} +1 -1
  59. package/dist/client/assets/{de-DE-DTI4WUSC-BAnqlByT.js → de-DE-DTI4WUSC-CV-FNCkY.js} +1 -1
  60. package/dist/client/assets/{diagram-2AECGRRQ-DJH0JVlq.js → diagram-2AECGRRQ-Cx-EPj3F.js} +1 -1
  61. package/dist/client/assets/{diagram-5GNKFQAL-DQG4Q1eS.js → diagram-5GNKFQAL-B6qUTxVg.js} +1 -1
  62. package/dist/client/assets/{diagram-KO2AKTUF-hx21Lv-5.js → diagram-KO2AKTUF-BedClayW.js} +1 -1
  63. package/dist/client/assets/{diagram-LMA3HP47--QODJMa9.js → diagram-LMA3HP47-DCwyG0i5.js} +1 -1
  64. package/dist/client/assets/{diagram-OG6HWLK6-CB30hX1a.js → diagram-OG6HWLK6-BZD0jSxR.js} +1 -1
  65. package/dist/client/assets/diagram-action-icons-aa_KOv9h.js +36 -0
  66. package/dist/client/assets/{dist-DCqHC6ts.js → dist-B-m0-H59.js} +1 -1
  67. package/dist/client/assets/dist-B6Q0y0J8.js +1 -0
  68. package/dist/client/assets/dist-BCQCG0we.js +1 -0
  69. package/dist/client/assets/{dist-6oqNX0NJ.js → dist-BEyxdnUD.js} +1 -1
  70. package/dist/client/assets/{dist-Dv_PLWtE.js → dist-BYneHrvV.js} +1 -1
  71. package/dist/client/assets/dist-BsPHL5xw2.js +1 -0
  72. package/dist/client/assets/{dist-BBsYBvEp.js → dist-CX-kKEdL.js} +1 -1
  73. package/dist/client/assets/{dist-DSehUDUA.js → dist-CaLooK5r.js} +1 -1
  74. package/dist/client/assets/{dist-BOA6xeuH.js → dist-Cd4FT8TV.js} +1 -1
  75. package/dist/client/assets/{dist-q3smPWAL.js → dist-ClWZ99Dh.js} +1 -1
  76. package/dist/client/assets/{dist-D5hPoFa5.js → dist-D01mg-Uh.js} +1 -1
  77. package/dist/client/assets/{dist-CJMPm6rd.js → dist-D36UTodj.js} +1 -1
  78. package/dist/client/assets/{dist-CtHMYO6t.js → dist-D6YOhZ_d.js} +1 -1
  79. package/dist/client/assets/{dist-U35xPXYU.js → dist-D8jTFU06.js} +1 -1
  80. package/dist/client/assets/dist-DGI-0uwF.js +1 -0
  81. package/dist/client/assets/{dist-D5BVeoD4.js → dist-DGO-wCq8.js} +1 -1
  82. package/dist/client/assets/dist-DMKYvLqD.js +1 -0
  83. package/dist/client/assets/{dist-CDsAhnoa.js → dist-DRQhk99i.js} +1 -1
  84. package/dist/client/assets/{dist-wA96SVn6.js → dist-DScq22KK.js} +1 -1
  85. package/dist/client/assets/{dist-BQuic6-d.js → dist-DbpddOpB.js} +1 -1
  86. package/dist/client/assets/{dist-x4M0Qd0y.js → dist-Dl5uZm2T.js} +1 -1
  87. package/dist/client/assets/{dist-BsTc7qjG.js → dist-DvpEZjAN.js} +1 -1
  88. package/dist/client/assets/dist-Dw8hKOQm.js +1 -0
  89. package/dist/client/assets/{dist-Bhn_Fiol.js → dist-G7j-noyR.js} +1 -1
  90. package/dist/client/assets/dist-PItC1DRE.js +1 -0
  91. package/dist/client/assets/{dist-CAlqrzaF.js → dist-cMoydUa-.js} +1 -1
  92. package/dist/client/assets/dist-cTuGB1EW.js +9 -0
  93. package/dist/client/assets/{dist-DFzJ8okV.js → dist-efgaKpVU.js} +1 -1
  94. package/dist/client/assets/{dist-Dx8yU-RA.js → dist-nx-MGJIM.js} +1 -1
  95. package/dist/client/assets/{dist-UnjH15yg.js → dist-pww3cL4Q.js} +7 -7
  96. package/dist/client/assets/dist-uhQ-mkuh.js +2 -0
  97. package/dist/client/assets/{dockerfile-D8_6_FRV.js → dockerfile-BLkNEvjs.js} +1 -1
  98. package/dist/client/assets/drawio-editor-BM_W6Lkj.js +9 -0
  99. package/dist/client/assets/drawio-embed-controller-BKHnRnaj.js +1 -0
  100. package/dist/client/assets/drawioEditor-DBfHYCO5.js +2 -0
  101. package/dist/client/assets/{editor-session-BTPe8PEu.js → editor-session-VueuoR_r.js} +2 -2
  102. package/dist/client/assets/{el-GR-ZXDJ2OS4-De6xlnXD.js → el-GR-ZXDJ2OS4-DzgGVibO.js} +1 -1
  103. package/dist/client/assets/{en-CMP6EMR6-Bfz_MnNa.js → en-CMP6EMR6-l-4iz8RC.js} +1 -1
  104. package/dist/client/assets/{erDiagram-TEJ5UH35-BvMeaml9.js → erDiagram-TEJ5UH35-7XmGIzui.js} +1 -1
  105. package/dist/client/assets/{es-ES-DYQHAD43-EVQAeFTZ.js → es-ES-DYQHAD43-DP98e8ox.js} +1 -1
  106. package/dist/client/assets/{eu-ES-QDSYU5Y3-O5XEQp0x.js → eu-ES-QDSYU5Y3-DrEfH-2N.js} +1 -1
  107. package/dist/client/assets/eventmodeling-FCH6USID-D-VxYsbw.js +1 -0
  108. package/dist/client/assets/excalidraw-editor-B3ffLqi6.css +1 -0
  109. package/dist/client/assets/{excalidraw-editor-DzL1T9D9.js → excalidraw-editor-C6fTkMBx.js} +4 -4
  110. package/dist/client/assets/excalidraw-embed-controller-BKx05cjZ.js +1 -0
  111. package/dist/client/assets/excalidraw-embed-reconciler-DGiagExg.js +1 -0
  112. package/dist/client/assets/{excalidraw-mermaid-stub-B5sWezsO.js → excalidraw-mermaid-stub-DE5FTiZB.js} +1 -1
  113. package/dist/client/assets/excalidraw-scene-DjODomMW.js +176 -0
  114. package/dist/client/assets/excalidrawEditor-DQD_lLF4.js +2 -0
  115. package/dist/client/assets/{export-page-BkCqT_2s.js → export-page-D0iHYSPi.js} +4 -4
  116. package/dist/client/assets/exportDocument-Ct-Zvf7_.js +2 -0
  117. package/dist/client/assets/{fa-IR-26LZG4PM-BlqI3v_N.js → fa-IR-26LZG4PM-CEwnMxEY.js} +1 -1
  118. package/dist/client/assets/{factor-Cz-hzBGH.js → factor-D7LVTn2l.js} +1 -1
  119. package/dist/client/assets/{fi-FI-6YS4KDE4-af5Lkv-j.js → fi-FI-6YS4KDE4-DPKGe_vC.js} +1 -1
  120. package/dist/client/assets/file-history-view-controller-CK3oHDCT.js +112 -0
  121. package/dist/client/assets/{flowDiagram-I6XJVG4X-DgXXcK8y.js → flowDiagram-I6XJVG4X-DgTAG2K2.js} +2 -2
  122. package/dist/client/assets/{fr-FR-BRLLPTZC-CwQyur9E.js → fr-FR-BRLLPTZC-CgMmN9yd.js} +1 -1
  123. package/dist/client/assets/{ganttDiagram-6RSMTGT7-BMpbo3vT.js → ganttDiagram-6RSMTGT7-Curra433.js} +1 -1
  124. package/dist/client/assets/git-diff-view-controller-qorJ_Quo.js +150 -0
  125. package/dist/client/assets/git-panel-controller-DG8ws6B_.js +203 -0
  126. package/dist/client/assets/gitGraph-WXDBUCRP-CRS5XD98.js +1 -0
  127. package/dist/client/assets/{gitGraphDiagram-PVQCEYII-CCdpTNJZ.js → gitGraphDiagram-PVQCEYII-DVf7-iH0.js} +1 -1
  128. package/dist/client/assets/{gl-ES-OKUZTLYG-BNEoLCI4.js → gl-ES-OKUZTLYG-qCIGpEXP.js} +1 -1
  129. package/dist/client/assets/{haxe-CcPA1xnA.js → haxe-DjVOVvNP.js} +1 -1
  130. package/dist/client/assets/{he-IL-26MGYIU7-WnVF9HP3.js → he-IL-26MGYIU7-_Pd-m9Sj.js} +1 -1
  131. package/dist/client/assets/{hi-IN-Q4ZOGTP2-DcU7ec07.js → hi-IN-Q4ZOGTP2-B4kd5rva.js} +1 -1
  132. package/dist/client/assets/{hu-HU-P2OXPSN5-wmJyK1Wq.js → hu-HU-P2OXPSN5-DL2sEPhQ.js} +1 -1
  133. package/dist/client/assets/{id-ID-2EIKXYN6-BTvn0aFf.js → id-ID-2EIKXYN6-DqXHubyc.js} +1 -1
  134. package/dist/client/assets/image-MLCQRF34-BT938jMR.js +1 -0
  135. package/dist/client/assets/index-AdGl0Mjr.js +2 -0
  136. package/dist/client/assets/index-V7z92VYK.css +1 -0
  137. package/dist/client/assets/info-J43DQDTF-CdrjkAmK.js +1 -0
  138. package/dist/client/assets/{infoDiagram-5YYISTIA-oYw2qnNY.js → infoDiagram-5YYISTIA-DT8NjvZp.js} +1 -1
  139. package/dist/client/assets/input-CXk9Zxz9.js +1 -0
  140. package/dist/client/assets/{ishikawaDiagram-YF4QCWOH-BPqURwBR.js → ishikawaDiagram-YF4QCWOH-axeWdm72.js} +1 -1
  141. package/dist/client/assets/{it-IT-4CFKVXI2-CC_iQxXu.js → it-IT-4CFKVXI2-CyToZF8R.js} +1 -1
  142. package/dist/client/assets/{ja-JP-MAND2Z4V-ConJI8GA.js → ja-JP-MAND2Z4V-CdMMUzyq.js} +1 -1
  143. package/dist/client/assets/{javascript-gTK9fxz6.js → javascript-B9TABJff.js} +1 -1
  144. package/dist/client/assets/javascript-BRzqD9BA.js +1 -0
  145. package/dist/client/assets/{journeyDiagram-JHISSGLW-CvxY2Fte.js → journeyDiagram-JHISSGLW-_K7qmGID.js} +1 -1
  146. package/dist/client/assets/{jsx-runtime-IB1e1gmy.js → jsx-runtime-DqMcooe2.js} +1 -1
  147. package/dist/client/assets/{kaa-HQRTCXTJ-Caqwh_Qr.js → kaa-HQRTCXTJ-D6kVHP9w.js} +1 -1
  148. package/dist/client/assets/{kab-KAB-JKIKKTGH-DQBmYNc9.js → kab-KAB-JKIKKTGH-XYCYTUmV.js} +1 -1
  149. package/dist/client/assets/{kanban-definition-UN3LZRKU-Ex7702dO.js → kanban-definition-UN3LZRKU-DaPREf-3.js} +1 -1
  150. package/dist/client/assets/keyboard-shortcuts-Ctp9_GHy.js +1 -0
  151. package/dist/client/assets/{kk-KZ-HXQ63ZFC-O5qp74q-.js → kk-KZ-HXQ63ZFC-Du2sGLmI.js} +1 -1
  152. package/dist/client/assets/{km-KH-PKL3LSGX-2wUYTyyo.js → km-KH-PKL3LSGX-B2OnEat4.js} +1 -1
  153. package/dist/client/assets/{ko-KR-KXLREZX3-CYtUnW5t.js → ko-KR-KXLREZX3-CcxALsEE.js} +1 -1
  154. package/dist/client/assets/{ku-TR-MJ4IER3X-DtEKOAU3.js → ku-TR-MJ4IER3X-HDyr9f4z.js} +1 -1
  155. package/dist/client/assets/{line-DRJILpPI.js → line-CbpIuf9e.js} +1 -1
  156. package/dist/client/assets/{linear-rFRiXd2u.js → linear-BGe2G4b5.js} +1 -1
  157. package/dist/client/assets/{lt-LT-H6WFQ6FJ-Cs17Ppdf.js → lt-LT-H6WFQ6FJ-BzZe8pg9.js} +1 -1
  158. package/dist/client/assets/{lv-LV-GOCK6SJW-DYuTyosz.js → lv-LV-GOCK6SJW-CMspwH0q.js} +1 -1
  159. package/dist/client/assets/main-C8f6FlSO.js +789 -0
  160. package/dist/client/assets/{mermaid-parser.core-BD_OCbyj.js → mermaid-parser.core-C4gZtCl9.js} +2 -2
  161. package/dist/client/assets/{mermaid-runtime-CEgpdpwB.js → mermaid-runtime-CX_vmg3J.js} +3 -3
  162. package/dist/client/assets/{mindmap-definition-RKZ34NQL-D4pwLdMH.js → mindmap-definition-RKZ34NQL-DB1uitpo.js} +1 -1
  163. package/dist/client/assets/{mr-IN-IXVLDMEQ-CIJFnklt.js → mr-IN-IXVLDMEQ-C6mqoMmX.js} +1 -1
  164. package/dist/client/assets/{my-MM-YG6MYTTD-em_7TGWX.js → my-MM-YG6MYTTD-Q33bVx2B.js} +1 -1
  165. package/dist/client/assets/navigation-D173qvIt.css +1 -0
  166. package/dist/client/assets/{nb-NO-XGWJISD2-BLNgPVDj.js → nb-NO-XGWJISD2-B1jdnBFb.js} +1 -1
  167. package/dist/client/assets/{nl-NL-XVDVCPNC-CComxzvg.js → nl-NL-XVDVCPNC-DoQkA2lu.js} +1 -1
  168. package/dist/client/assets/{nn-NO-EMX5MJX5-Cekj8s_-.js → nn-NO-EMX5MJX5-Db3tHf5b.js} +1 -1
  169. package/dist/client/assets/{nsis-QPGhLAeY.js → nsis-AQ_alPln.js} +1 -1
  170. package/dist/client/assets/{oc-FR-ROEINTVO-DW-kHJ81.js → oc-FR-ROEINTVO-DLu-4Ze0.js} +1 -1
  171. package/dist/client/assets/{ordinal-De-qfORd.js → ordinal-hYBb2elL.js} +1 -1
  172. package/dist/client/assets/{pa-IN-ZYN6SUDY-CnhULOGp.js → pa-IN-ZYN6SUDY-XvJuMxJR.js} +1 -1
  173. package/dist/client/assets/packet-YPE3B663-r4oAflYS.js +1 -0
  174. package/dist/client/assets/percentages-5DKR754L-D_KAYeu8.js +1 -0
  175. package/dist/client/assets/{pica-DcQ1xKp1.js → pica-DjQMjoX_.js} +1 -1
  176. package/dist/client/assets/pie-LRSECV5Y-DkaVktH1.js +1 -0
  177. package/dist/client/assets/{pieDiagram-4H26LBE5-C6MCExtR.js → pieDiagram-4H26LBE5-CdDwk3iQ.js} +1 -1
  178. package/dist/client/assets/{pl-PL-6VTG7PHC-C9rBsz9v.js → pl-PL-6VTG7PHC-DjJq8QfA.js} +1 -1
  179. package/dist/client/assets/preview-diagram-utils-DnqteI9Q.js +1 -0
  180. package/dist/client/assets/preview-render-compiler-Dts88fM3.js +35 -0
  181. package/dist/client/assets/preview-render-compiler-VKNqrOZN.js +1 -0
  182. package/dist/client/assets/preview-render-profile-CU6rvKx3.js +23 -0
  183. package/dist/client/assets/preview-render-worker-CFKBP7xz.js +59 -0
  184. package/dist/client/assets/{pt-BR-5YFKRR5G-BVyxOCjg.js → pt-BR-5YFKRR5G-Dg2lIz1V.js} +1 -1
  185. package/dist/client/assets/{pt-PT-GEIXXZ67-5CbVaVay.js → pt-PT-GEIXXZ67-COIg15TS.js} +1 -1
  186. package/dist/client/assets/{pug-lkTEco3G.js → pug-Ck0YjsGM.js} +1 -1
  187. package/dist/client/assets/{quadrantDiagram-W4KKPZXB-CD77Rny0.js → quadrantDiagram-W4KKPZXB-C6n3eYzo.js} +1 -1
  188. package/dist/client/assets/{quick-switcher-controller-CVJBt6V9.js → quick-switcher-controller-CVRUPEKp.js} +1 -1
  189. package/dist/client/assets/radar-GUYGQ44K-Bjhhjq-k.js +1 -0
  190. package/dist/client/assets/{requirementDiagram-4Y6WPE33-DdKM6ZWI.js → requirementDiagram-4Y6WPE33-B-sVI-jx.js} +1 -1
  191. package/dist/client/assets/{ro-RO-E2P6TFZI-DANwkfep.js → ro-RO-E2P6TFZI-CdCIa8N3.js} +1 -1
  192. package/dist/client/assets/{room-Cha55fQg.js → room-CpCcgtG8.js} +1 -1
  193. package/dist/client/assets/{ru-RU-YBIIY43T-BWZSxhA5.js → ru-RU-YBIIY43T-C5TT1jTX.js} +1 -1
  194. package/dist/client/assets/runtime-config-CDgeuPWN.js +1 -0
  195. package/dist/client/assets/runtime-paths-DvpihCEq.js +1 -0
  196. package/dist/client/assets/{sankeyDiagram-5OEKKPKP-BH3_LNkI.js → sankeyDiagram-5OEKKPKP-EY2cdbUV.js} +1 -1
  197. package/dist/client/assets/segmented-control-DhUkW6ro.js +1 -0
  198. package/dist/client/assets/{sequenceDiagram-3UESZ5HK-CCGL7FMW.js → sequenceDiagram-3UESZ5HK-D6h6knAb.js} +2 -2
  199. package/dist/client/assets/{si-LK-673C2CI2-Bqr808AJ.js → si-LK-673C2CI2-f_5ZzunQ.js} +1 -1
  200. package/dist/client/assets/{sk-SK-CKZHQ4AP-B2PvXXeU.js → sk-SK-CKZHQ4AP-4jimlXp1.js} +1 -1
  201. package/dist/client/assets/{sl-SI-557H2GWM-IPVDhzgb.js → sl-SI-557H2GWM-BnZ04ZfX.js} +1 -1
  202. package/dist/client/assets/{src-BshjqEL2.js → src-DSz_pbBa.js} +1 -1
  203. package/dist/client/assets/{stateDiagram-AJRCARHV-ljJcYRX4.js → stateDiagram-AJRCARHV-Ca8ZuIR2.js} +1 -1
  204. package/dist/client/assets/stateDiagram-v2-BHNVJYJU-DGRDwQhE.js +1 -0
  205. package/dist/client/assets/subset-shared.chunk-DcaFK0zo.js +1 -0
  206. package/dist/client/assets/{subset-worker.chunk-BW_EF59g.js → subset-worker.chunk-CVu8sQYq.js} +1 -1
  207. package/dist/client/assets/{sv-SE-XOPKKDWS-CQipq9Nf.js → sv-SE-XOPKKDWS-B2uKmd06.js} +1 -1
  208. package/dist/client/assets/{ta-IN-XBH7DQI3-Cj2o89vS.js → ta-IN-XBH7DQI3-Bld4KtCz.js} +1 -1
  209. package/dist/client/assets/{th-TH-TOCWH3R4-IOX-l13w.js → th-TH-TOCWH3R4-DUlvnJTX.js} +1 -1
  210. package/dist/client/assets/{timeline-definition-PNZ67QCA-CUVPem2o.js → timeline-definition-PNZ67QCA-BAhvj49M.js} +1 -1
  211. package/dist/client/assets/{tr-TR-GXW6CYY5-DBVLEsZg.js → tr-TR-GXW6CYY5-BXTTqJlZ.js} +1 -1
  212. package/dist/client/assets/treeView-BLDUP644-DbX5QpdZ.js +1 -0
  213. package/dist/client/assets/treemap-LRROVOQU-DT4YRX1p.js +1 -0
  214. package/dist/client/assets/turtle-Cx3rYX2g.js +1 -0
  215. package/dist/client/assets/{uk-UA-IJKTNUDG-C5kaymku.js → uk-UA-IJKTNUDG-DbQpa2ug.js} +1 -1
  216. package/dist/client/assets/{uz-UZ-TBZZEA4V-lMna4tx1.js → uz-UZ-TBZZEA4V-Dt35hEMk.js} +1 -1
  217. package/dist/client/assets/vault-api-client-BPVNCJZC.js +1 -0
  218. package/dist/client/assets/vault-api-client-VAfZ8okg.js +1 -0
  219. package/dist/client/assets/{vault-utils-BbJUHPCf.js → vault-utils-kIbqyWPm.js} +1 -1
  220. package/dist/client/assets/{vennDiagram-CIIHVFJN-Bb1KSPKA.js → vennDiagram-CIIHVFJN-GGrxyoPK.js} +2 -2
  221. package/dist/client/assets/{vi-VN-MULSGNVB-BAcoCjsz.js → vi-VN-MULSGNVB-BgxNIE1N.js} +1 -1
  222. package/dist/client/assets/wardley-L42UT6IY-Ba5lVG9E.js +1 -0
  223. package/dist/client/assets/{wardleyDiagram-YWT4CUSO-EdTzLQiR.js → wardleyDiagram-YWT4CUSO-BgYuJM9o.js} +1 -1
  224. package/dist/client/assets/{xychartDiagram-2RQKCTM6-BoQFrGlt.js → xychartDiagram-2RQKCTM6-DKA6F9sv.js} +1 -1
  225. package/dist/client/assets/{yjs-provider-reset-guard-CNmMf4Qd.js → yjs-provider-reset-guard-BicD2Ate.js} +1 -1
  226. package/dist/client/assets/{zh-CN-MVX3E32U-sW-DCFHP.js → zh-CN-MVX3E32U-W0nclq-N.js} +1 -1
  227. package/dist/client/assets/{zh-HK-JNU5RLIE-Duqu8EG_.js → zh-HK-JNU5RLIE-C2VRLD9Z.js} +1 -1
  228. package/dist/client/assets/{zh-TW-LENVCA6T-BHC0OLnd.js → zh-TW-LENVCA6T-Ci7udZjZ.js} +1 -1
  229. package/dist/client/drawio-editor.html +3 -3
  230. package/dist/client/excalidraw-editor.html +3 -3
  231. package/dist/client/export-document.html +4 -4
  232. package/dist/client/index.html +5 -5
  233. package/package.json +17 -17
  234. package/src/client/application/app-shell/comments-feature.js +108 -0
  235. package/src/client/application/app-shell/git-feature.js +6 -1
  236. package/src/client/application/app-shell/ui-feature-shell.js +7 -4
  237. package/src/client/application/app-shell/ui-feature-sidebar.js +11 -2
  238. package/src/client/application/app-shell-elements.js +2 -0
  239. package/src/client/application/diagram-chrome.js +708 -0
  240. package/src/client/application/mermaid-preview-hydrator.js +18 -516
  241. package/src/client/application/plantuml-preview-hydrator.js +22 -518
  242. package/src/client/application/preview-renderer.js +15 -4
  243. package/src/client/application/workspace-route-controller.js +11 -1
  244. package/src/client/bootstrap/app-shell-feature-surface.js +67 -0
  245. package/src/client/bootstrap/collabmd-app-shell.js +111 -356
  246. package/src/client/bootstrap/lazy-controller-feature.js +434 -0
  247. package/src/client/infrastructure/vault-api-client.js +5 -0
  248. package/src/client/presentation/app-shell-template.js +25 -12
  249. package/src/client/presentation/bases-preview-controller.js +33 -16
  250. package/src/client/presentation/comment-overview-controller.js +238 -0
  251. package/src/client/presentation/comment-ui/comment-ui-state.js +23 -0
  252. package/src/client/presentation/file-explorer-controller.js +9 -0
  253. package/src/client/presentation/file-explorer-view.js +11 -1
  254. package/src/client/styles/components/navigation.css +43 -8
  255. package/src/client/styles/components/scrollbars.css +5 -0
  256. package/src/client/styles/features/comment-overview.css +196 -0
  257. package/src/client/styles/features/comments.css +1 -0
  258. package/src/client/styles/layout/responsive.css +3 -2
  259. package/src/server/application/workspace-reconciliation.js +446 -0
  260. package/src/server/config/env.js +73 -0
  261. package/src/server/create-app-server.js +39 -32
  262. package/src/server/domain/bases/base-expression-runtime.js +183 -147
  263. package/src/server/domain/bases/base-index-snapshot-store.js +53 -2
  264. package/src/server/domain/bases/base-query-service.js +55 -38
  265. package/src/server/domain/collaboration/collaboration-document-store.js +6 -2
  266. package/src/server/domain/collaboration/collaboration-room.js +66 -2
  267. package/src/server/domain/comment-overview.js +108 -0
  268. package/src/server/domain/hosted-workspace-contract.js +18 -0
  269. package/src/server/domain/hosted-workspace.js +744 -0
  270. package/src/server/domain/workspace-state.js +848 -2
  271. package/src/server/infrastructure/github/github-app-client.js +205 -0
  272. package/src/server/infrastructure/github/github-setup-flow.js +86 -0
  273. package/src/server/infrastructure/http/create-git-api-command-handler.js +1 -1
  274. package/src/server/infrastructure/http/create-hosted-api-handler.js +200 -0
  275. package/src/server/infrastructure/http/create-request-handler.js +20 -0
  276. package/src/server/infrastructure/http/create-static-handler.js +4 -0
  277. package/src/server/infrastructure/http/create-vault-api-command-handler.js +44 -119
  278. package/src/server/infrastructure/http/create-vault-api-query-handler.js +18 -33
  279. package/src/server/infrastructure/http/request-body.js +12 -2
  280. package/src/server/infrastructure/persistence/hosted-metadata-store.js +500 -0
  281. package/src/server/infrastructure/persistence/sidecar-store.js +53 -2
  282. package/src/server/infrastructure/persistence/vault-content-adapter.js +8 -8
  283. package/src/server/infrastructure/persistence/vault-file-store.js +64 -135
  284. package/src/server/infrastructure/websocket/attach-collaboration-gateway.js +49 -5
  285. package/src/server/infrastructure/workspace/file-system-sync-service.js +24 -411
  286. package/src/server/infrastructure/workspace/workspace-mutation-coordinator.js +13 -621
  287. package/src/server/infrastructure/workspace/workspace-state-file-system-adapter.js +37 -0
  288. package/dist/client/assets/architecture-7EHR7CIX-M1SFnuBJ.js +0 -1
  289. package/dist/client/assets/channel-E9SBQ9z6.js +0 -1
  290. package/dist/client/assets/chunk-QZHKN3VN-9NMPSwDX.js +0 -1
  291. package/dist/client/assets/chunk-WMDFGAFD-EzVSth95.js +0 -35
  292. package/dist/client/assets/chunk-WU5MYG2G-Bl8VQmZH.js +0 -1
  293. package/dist/client/assets/classDiagram-4FO5ZUOK-D7YhYDLZ.js +0 -1
  294. package/dist/client/assets/classDiagram-v2-Q7XG4LA2-COI4atGv.js +0 -1
  295. package/dist/client/assets/dist-B0U2pnHE.js +0 -1
  296. package/dist/client/assets/dist-B1BRR2vO.js +0 -1
  297. package/dist/client/assets/dist-B48_21rM.js +0 -1
  298. package/dist/client/assets/dist-BNDWUlMx.js +0 -9
  299. package/dist/client/assets/dist-BoCYrsTA.js +0 -1
  300. package/dist/client/assets/dist-C-W89K9S.js +0 -1
  301. package/dist/client/assets/dist-CBTadfRi2.js +0 -1
  302. package/dist/client/assets/dist-D4DGyOvV.js +0 -1
  303. package/dist/client/assets/dist-ihRjPW1T.js +0 -2
  304. package/dist/client/assets/drawio-editor-BHYoSlR7.js +0 -9
  305. package/dist/client/assets/drawioEditor-B-Ssnq_p.js +0 -2
  306. package/dist/client/assets/eventmodeling-FCH6USID-DKkN-EFL.js +0 -1
  307. package/dist/client/assets/excalidraw-editor-mKBCIvNR.css +0 -1
  308. package/dist/client/assets/excalidraw-scene-i7oBzgH8.js +0 -176
  309. package/dist/client/assets/excalidrawEditor-DRxzpbJ-.js +0 -2
  310. package/dist/client/assets/exportDocument-Dj7w1hDJ.js +0 -2
  311. package/dist/client/assets/gitGraph-WXDBUCRP-BIQYiPEj.js +0 -1
  312. package/dist/client/assets/image-KGGK4BDN-BtStV6c9.js +0 -1
  313. package/dist/client/assets/index-Cnyy977t.css +0 -1
  314. package/dist/client/assets/index-DxQmPZ_f.js +0 -2
  315. package/dist/client/assets/info-J43DQDTF-CO2Z2J7J.js +0 -1
  316. package/dist/client/assets/javascript-qUBHINSy.js +0 -1
  317. package/dist/client/assets/main-iuYcGt-A.js +0 -1414
  318. package/dist/client/assets/navigation-Du6CLhvs.css +0 -1
  319. package/dist/client/assets/packet-YPE3B663-VxGcYggl.js +0 -1
  320. package/dist/client/assets/percentages-5DKR754L-Ug3UfchV.js +0 -1
  321. package/dist/client/assets/pie-LRSECV5Y-7RrvmmEk.js +0 -1
  322. package/dist/client/assets/preview-diagram-utils-D94KrSQH.js +0 -1
  323. package/dist/client/assets/preview-render-compiler-CSggyCbw.js +0 -35
  324. package/dist/client/assets/preview-render-compiler-TPMesM_L.js +0 -1
  325. package/dist/client/assets/preview-render-profile-CQR0o67h.js +0 -23
  326. package/dist/client/assets/preview-render-worker-CifbXdlx.js +0 -59
  327. package/dist/client/assets/radar-GUYGQ44K-2SBnfFng.js +0 -1
  328. package/dist/client/assets/runtime-config-CM_2pVYD.js +0 -1
  329. package/dist/client/assets/stateDiagram-v2-BHNVJYJU-DXm0ynOB.js +0 -1
  330. package/dist/client/assets/subset-shared.chunk-C9mEHUfV.js +0 -1
  331. package/dist/client/assets/treeView-BLDUP644-DItqHrxu.js +0 -1
  332. package/dist/client/assets/treemap-LRROVOQU-DD1ESKp7.js +0 -1
  333. package/dist/client/assets/turtle-BkP3ExOG.js +0 -1
  334. package/dist/client/assets/vault-api-client-Fa51l2lE.js +0 -1
  335. package/dist/client/assets/wardley-L42UT6IY-BoSI-SvR.js +0 -1
  336. /package/dist/client/assets/{apl-C1JYSI8J.js → apl-CnwPGSsG.js} +0 -0
  337. /package/dist/client/assets/{array-7rJMcyYQ.js → array-BifhSqXX.js} +0 -0
  338. /package/dist/client/assets/{asciiarmor-DHW75j1s.js → asciiarmor-qTkVPQu6.js} +0 -0
  339. /package/dist/client/assets/{asn1-CQiG40kG.js → asn1-Dr8qZg38.js} +0 -0
  340. /package/dist/client/assets/{asterisk-BWExh0n4.js → asterisk-Bja0s6e1.js} +0 -0
  341. /package/dist/client/assets/{base-h1uscjTi.js → base-CxPEiHuy.js} +0 -0
  342. /package/dist/client/assets/{brainfuck-CTNFyOLg.js → brainfuck-D5EjA2JK.js} +0 -0
  343. /package/dist/client/assets/{chunk-3PELD44J-DymL2rGq.js → chunk-3PELD44J-C625MXe_.js} +0 -0
  344. /package/dist/client/assets/{chunk-A66AFZZU-BFHL744F.js → chunk-A66AFZZU-BbU3ThId.js} +0 -0
  345. /package/dist/client/assets/{chunk-LOOWOR4L-C5BUwXgZ.js → chunk-LOOWOR4L-CGCAV5nC.js} +0 -0
  346. /package/dist/client/assets/{chunk-tBc3Ke6Z.js → chunk-aKtaBQYM.js} +0 -0
  347. /package/dist/client/assets/{clike-BFTLRaGS.js → clike-DHH8Ad3s.js} +0 -0
  348. /package/dist/client/assets/{clojure-D-DYVqu7.js → clojure-BflJGmDX.js} +0 -0
  349. /package/dist/client/assets/{cmake-DtGL-Unu.js → cmake-CyVbuzPu.js} +0 -0
  350. /package/dist/client/assets/{cobol-DP4QggbL.js → cobol-B_OZ4V-R.js} +0 -0
  351. /package/dist/client/assets/{coffeescript-B7GZajzV.js → coffeescript-B2pKbFk8.js} +0 -0
  352. /package/dist/client/assets/{commonlisp-COlJYiQT.js → commonlisp-CcllspGY.js} +0 -0
  353. /package/dist/client/assets/{crystal-I_dE9xG-.js → crystal-M5-qzICs.js} +0 -0
  354. /package/dist/client/assets/{css-CmhPNxBE.js → css-CYpP4FRV.js} +0 -0
  355. /package/dist/client/assets/{cypher-DEGl2llJ.js → cypher-p9eYesGn.js} +0 -0
  356. /package/dist/client/assets/{d-BspB0dox.js → d-BhMjBjQP.js} +0 -0
  357. /package/dist/client/assets/{defaultLocale-DKHHE2Ij.js → defaultLocale-C8Fc0cco.js} +0 -0
  358. /package/dist/client/assets/{diff-BWuPUsEo.js → diff-ChtP43wD.js} +0 -0
  359. /package/dist/client/assets/{drawio-room-DrZ-gy4N.js → drawio-room-B3OZRHTH.js} +0 -0
  360. /package/dist/client/assets/{dtd-C6brJFPg.js → dtd-DTF72YNO.js} +0 -0
  361. /package/dist/client/assets/{dylan-Bft86ZSB.js → dylan-C6jEEEk-.js} +0 -0
  362. /package/dist/client/assets/{ebnf-D6ifG44A.js → ebnf-D4c0_ac3.js} +0 -0
  363. /package/dist/client/assets/{ecl-D9rhJ9-u.js → ecl-BSZaIHnp.js} +0 -0
  364. /package/dist/client/assets/{eiffel-DwxtewZF.js → eiffel-BEjRio4Q.js} +0 -0
  365. /package/dist/client/assets/{elm-B1TncobV.js → elm-Cshzl8qu.js} +0 -0
  366. /package/dist/client/assets/{erlang-BDJZNtt8.js → erlang-DaB2Rkuy.js} +0 -0
  367. /package/dist/client/assets/{excalidraw-mermaid-stub-Co4Okjfg.js → excalidraw-mermaid-stub-BNckbX2n.js} +0 -0
  368. /package/dist/client/assets/{fcl-CUXJFJn1.js → fcl-ClOhbFR7.js} +0 -0
  369. /package/dist/client/assets/{file-kind-DLz-bCzA.js → file-kind-BKPOIRPE.js} +0 -0
  370. /package/dist/client/assets/{forth-nvhcMz63.js → forth-Cezjo90N.js} +0 -0
  371. /package/dist/client/assets/{fortran-BZID-z10.js → fortran-Bt6PBEDR.js} +0 -0
  372. /package/dist/client/assets/{gas-DjQsZDGE.js → gas-BHEdbvp9.js} +0 -0
  373. /package/dist/client/assets/{gherkin-S0kHlzux.js → gherkin-oBAE_ms0.js} +0 -0
  374. /package/dist/client/assets/{graphlib-Dduz6oB8.js → graphlib-B8gBHxth.js} +0 -0
  375. /package/dist/client/assets/{groovy-Di--Vb9Z.js → groovy-BC3IOsC8.js} +0 -0
  376. /package/dist/client/assets/{haskell-C6qH3-aI.js → haskell-BRsoo5mP.js} +0 -0
  377. /package/dist/client/assets/{http-DG1Y9fpK.js → http-CLVgA2GD.js} +0 -0
  378. /package/dist/client/assets/{idl-B64p3NTJ.js → idl-BUZw3wgd.js} +0 -0
  379. /package/dist/client/assets/{image-blob-reduce.esm-CRyv8pnU.js → image-blob-reduce.esm-NzmDxm1v.js} +0 -0
  380. /package/dist/client/assets/{init-EmgYNkpL.js → init-D6jRqBbL.js} +0 -0
  381. /package/dist/client/assets/{julia-B22G9Bym.js → julia-CQfgDRfP.js} +0 -0
  382. /package/dist/client/assets/{katex-Beiidjxi.js → katex-C7GtLiLd.js} +0 -0
  383. /package/dist/client/assets/{vault-api-client-D7Ck0CvR.css → keyboard-shortcuts-D7Ck0CvR.css} +0 -0
  384. /package/dist/client/assets/{livescript-CkcuHqeS.js → livescript-BXxG0Yva.js} +0 -0
  385. /package/dist/client/assets/{lua-Cg0FqIlO.js → lua-CL1SqxuB.js} +0 -0
  386. /package/dist/client/assets/{mathematica-CKVhKnoY.js → mathematica-u8YMmbU0.js} +0 -0
  387. /package/dist/client/assets/{mbox-DANyzFJ2.js → mbox-BEMVcqjs.js} +0 -0
  388. /package/dist/client/assets/{mirc-BVG2S5rO.js → mirc-C9zpzAZU.js} +0 -0
  389. /package/dist/client/assets/{mllike-C0p7lv48.js → mllike-B45xgp2S.js} +0 -0
  390. /package/dist/client/assets/{modelica-vJ-Qa9jV.js → modelica-CqHI_q-D.js} +0 -0
  391. /package/dist/client/assets/{mscgen-vUD-SWGJ.js → mscgen-qgSLujhx.js} +0 -0
  392. /package/dist/client/assets/{mumps-D0KfUTSd.js → mumps-CW_TBmxz.js} +0 -0
  393. /package/dist/client/assets/{nginx-DkVceJrH.js → nginx-BMaDbqW3.js} +0 -0
  394. /package/dist/client/assets/{ntriples-BBuCIfS0.js → ntriples-d28e9m0E.js} +0 -0
  395. /package/dist/client/assets/{octave-BTv2CqSQ.js → octave-D2Q8cUp1.js} +0 -0
  396. /package/dist/client/assets/{oz-D8SjVDNU.js → oz-BwTct_5T.js} +0 -0
  397. /package/dist/client/assets/{pascal-T-tfhVyx.js → pascal-Dp_KdFgX.js} +0 -0
  398. /package/dist/client/assets/{path-vqW-z8T-.js → path-BWPyau1x.js} +0 -0
  399. /package/dist/client/assets/{perl-BDrCkHRd.js → perl-CdEHsPfU.js} +0 -0
  400. /package/dist/client/assets/{pig-BEyI4fPq.js → pig-AF4Hwhju.js} +0 -0
  401. /package/dist/client/assets/{powershell-DtnFc6GG.js → powershell-CzG71I4L.js} +0 -0
  402. /package/dist/client/assets/{preload-helper-Bo9GmnuQ.js → preload-helper-kNaey6uv.js} +0 -0
  403. /package/dist/client/assets/{properties-DWUvbxV9.js → properties-C357ku5U.js} +0 -0
  404. /package/dist/client/assets/{protobuf-CQGoYyfE.js → protobuf-D1ij_kNL.js} +0 -0
  405. /package/dist/client/assets/{puppet-Dd-qWO3p.js → puppet-B4hC2X4m.js} +0 -0
  406. /package/dist/client/assets/{python-BUyhM0Ew.js → python-BqYw9LYJ.js} +0 -0
  407. /package/dist/client/assets/{q-Dls1OX0D.js → q-B9NhS7L_.js} +0 -0
  408. /package/dist/client/assets/{r-DeZ8Mdev.js → r-DADKenSm.js} +0 -0
  409. /package/dist/client/assets/{rough.esm-DE_lJ5Ge.js → rough.esm-CSKSodPl.js} +0 -0
  410. /package/dist/client/assets/{roundRect-BMsJLtvm.js → roundRect-D01gJrlt.js} +0 -0
  411. /package/dist/client/assets/{rpm-CjWxLM68.js → rpm-gpDK5sbt.js} +0 -0
  412. /package/dist/client/assets/{ruby-CB34f2Gf.js → ruby-DsYpTuWg.js} +0 -0
  413. /package/dist/client/assets/{runtime-config-loader-_D2KZKn-.js → runtime-config-loader-BUK56BZz.js} +0 -0
  414. /package/dist/client/assets/{sas-Bji4HDQq.js → sas-C2OyD2Y6.js} +0 -0
  415. /package/dist/client/assets/{scheme-C3elI80V.js → scheme-CyDdOh7e.js} +0 -0
  416. /package/dist/client/assets/{shell-DUveK2Hb.js → shell-Du5Qg9im.js} +0 -0
  417. /package/dist/client/assets/{sieve-2ogwMVx4.js → sieve-BAxa3IjF.js} +0 -0
  418. /package/dist/client/assets/{simple-mode-pOKc0mfx.js → simple-mode-DRpGK0lJ.js} +0 -0
  419. /package/dist/client/assets/{smalltalk-BuGhc6lW.js → smalltalk-BLp5-jwC.js} +0 -0
  420. /package/dist/client/assets/{solr-DTxshpm8.js → solr-BBopId9w.js} +0 -0
  421. /package/dist/client/assets/{sparql-vm8qNO8J.js → sparql-Dz-mlCAC.js} +0 -0
  422. /package/dist/client/assets/{spreadsheet-C6Vbtl9-.js → spreadsheet-CTIncYxj.js} +0 -0
  423. /package/dist/client/assets/{sql-GL7dVWcd.js → sql-DcCJ9jop.js} +0 -0
  424. /package/dist/client/assets/{stex-CEwW0Q_0.js → stex-sDrdk2BW.js} +0 -0
  425. /package/dist/client/assets/{stylus-D1SZIMDs.js → stylus-DLLZ8dgm.js} +0 -0
  426. /package/dist/client/assets/{swift-CKcKnWv9.js → swift-DKB6_1j6.js} +0 -0
  427. /package/dist/client/assets/{tcl-SPk7uiDB.js → tcl-BGfruO1u.js} +0 -0
  428. /package/dist/client/assets/{textile-C48beRus.js → textile-DWBqthVk.js} +0 -0
  429. /package/dist/client/assets/{tiddlywiki-CiImjFLN.js → tiddlywiki-VlUiK86J.js} +0 -0
  430. /package/dist/client/assets/{tiki-HkXZ4BIW.js → tiki-CxVlf5KZ.js} +0 -0
  431. /package/dist/client/assets/{toml-BmfpMy1_.js → toml-LvoKBwCs.js} +0 -0
  432. /package/dist/client/assets/{troff-BjbEOT5E.js → troff-C2dAgh7P.js} +0 -0
  433. /package/dist/client/assets/{ttcn-NA-V4KnY.js → ttcn-BePYh-hG.js} +0 -0
  434. /package/dist/client/assets/{ttcn-cfg-TPHncdGN.js → ttcn-cfg-CY0aot7Q.js} +0 -0
  435. /package/dist/client/assets/{vb-C19AQWqO.js → vb-BthdM_4N.js} +0 -0
  436. /package/dist/client/assets/{vbscript-CHJk3s95.js → vbscript-D9f6rSsU.js} +0 -0
  437. /package/dist/client/assets/{velocity-Ya0P4sQU.js → velocity-CqftRsjg.js} +0 -0
  438. /package/dist/client/assets/{verilog-DSARZZPc.js → verilog-D-x6ne0Z.js} +0 -0
  439. /package/dist/client/assets/{vhdl-CnYyYTpa.js → vhdl-CMrOq2q1.js} +0 -0
  440. /package/dist/client/assets/{webidl-DttrYZRT.js → webidl-D5jiJvOU.js} +0 -0
  441. /package/dist/client/assets/{xquery-CEDTd8qs.js → xquery-fj_R-kMw.js} +0 -0
  442. /package/dist/client/assets/{yacas-C7dxlPB0.js → yacas-CXXgtw0p.js} +0 -0
  443. /package/dist/client/assets/{z80-BqEfFSnA.js → z80-CL1naaMV.js} +0 -0
@@ -472,63 +472,65 @@ function invokeGlobalFunction(name, argNodes, scope, evaluate) {
472
472
  }
473
473
  }
474
474
 
475
- function invokeMethod(target, name, argNodes, scope, evaluate, rootContext) {
476
- if (target?.__baseType === 'formula-namespace') {
477
- if (argNodes.length > 0) {
478
- throw new Error(`Formula namespace property "${name}" is not callable`);
479
- }
480
- return rootContext.resolveFormulaValue(name, target.row, target.evaluationState);
475
+ const METHOD_NOT_HANDLED = Symbol('base-method-not-handled');
476
+ const NULL_FALSE_METHODS = new Set([
477
+ 'contains',
478
+ 'containsAll',
479
+ 'containsAny',
480
+ 'endsWith',
481
+ 'hasLink',
482
+ 'hasProperty',
483
+ 'hasTag',
484
+ 'inFolder',
485
+ 'linksTo',
486
+ 'startsWith',
487
+ ]);
488
+
489
+ function normalizeLinkComparablePath(value) {
490
+ if (value?.__baseType === 'file') {
491
+ return value.path;
481
492
  }
493
+ if (value?.__baseType === 'link') {
494
+ return value.path;
495
+ }
496
+ return String(value ?? '');
497
+ }
482
498
 
483
- if (target == null) {
484
- switch (name) {
485
- case 'contains':
486
- case 'containsAll':
487
- case 'containsAny':
488
- case 'endsWith':
489
- case 'hasLink':
490
- case 'hasProperty':
491
- case 'hasTag':
492
- case 'inFolder':
493
- case 'linksTo':
494
- case 'startsWith':
495
- return false;
496
- case 'isEmpty':
497
- return true;
498
- default:
499
- break;
500
- }
499
+ function invokeNullMethod(name) {
500
+ if (NULL_FALSE_METHODS.has(name)) {
501
+ return false;
502
+ }
503
+ if (name === 'isEmpty') {
504
+ return true;
501
505
  }
506
+ return METHOD_NOT_HANDLED;
507
+ }
502
508
 
503
- if (Array.isArray(target)) {
504
- if (name === 'contains') {
509
+ function invokeArrayMethod(target, name, argNodes, scope, evaluate) {
510
+ switch (name) {
511
+ case 'contains': {
505
512
  const needle = evaluate(argNodes[0], scope);
506
513
  return target.some((entry) => valuesEqual(entry, needle));
507
514
  }
508
- if (name === 'containsAll') {
515
+ case 'containsAll':
509
516
  return argNodes.every((node) => target.some((entry) => valuesEqual(entry, evaluate(node, scope))));
510
- }
511
- if (name === 'containsAny') {
517
+ case 'containsAny':
512
518
  return argNodes.some((node) => target.some((entry) => valuesEqual(entry, evaluate(node, scope))));
513
- }
514
- if (name === 'filter') {
519
+ case 'filter': {
515
520
  const predicate = argNodes[0];
516
521
  return target.filter((value, index) => Boolean(evaluate(predicate, scope.child({ index, value }))));
517
522
  }
518
- if (name === 'flat') {
523
+ case 'flat':
519
524
  return target.flat();
520
- }
521
- if (name === 'isEmpty') {
525
+ case 'isEmpty':
522
526
  return target.length === 0;
523
- }
524
- if (name === 'join') {
527
+ case 'join':
525
528
  return target.map((entry) => toDisplayText(entry)).join(String(evaluate(argNodes[0], scope) ?? ''));
526
- }
527
- if (name === 'map') {
529
+ case 'map': {
528
530
  const mapper = argNodes[0];
529
531
  return target.map((value, index) => evaluate(mapper, scope.child({ index, value })));
530
532
  }
531
- if (name === 'reduce') {
533
+ case 'reduce': {
532
534
  const reducer = argNodes[0];
533
535
  let accumulator = argNodes.length > 1 ? evaluate(argNodes[1], scope) : null;
534
536
  target.forEach((value, index) => {
@@ -536,16 +538,13 @@ function invokeMethod(target, name, argNodes, scope, evaluate, rootContext) {
536
538
  });
537
539
  return accumulator;
538
540
  }
539
- if (name === 'reverse') {
541
+ case 'reverse':
540
542
  return [...target].reverse();
541
- }
542
- if (name === 'slice') {
543
+ case 'slice':
543
544
  return target.slice(Number(evaluate(argNodes[0], scope) ?? 0), argNodes[1] ? Number(evaluate(argNodes[1], scope)) : undefined);
544
- }
545
- if (name === 'sort') {
545
+ case 'sort':
546
546
  return [...target].sort(compareValues);
547
- }
548
- if (name === 'unique') {
547
+ case 'unique': {
549
548
  const uniqueValues = [];
550
549
  target.forEach((value) => {
551
550
  if (!uniqueValues.some((entry) => valuesEqual(entry, value))) {
@@ -554,123 +553,160 @@ function invokeMethod(target, name, argNodes, scope, evaluate, rootContext) {
554
553
  });
555
554
  return uniqueValues;
556
555
  }
556
+ default:
557
+ return METHOD_NOT_HANDLED;
557
558
  }
559
+ }
558
560
 
559
- if (typeof target === 'string') {
560
- switch (name) {
561
- case 'contains':
562
- return target.toLowerCase().includes(String(evaluate(argNodes[0], scope) ?? '').toLowerCase());
563
- case 'endsWith':
564
- return target.endsWith(String(evaluate(argNodes[0], scope) ?? ''));
565
- case 'isEmpty':
566
- return target.length === 0;
567
- case 'lower':
568
- return target.toLowerCase();
569
- case 'replace':
570
- return target.replaceAll(String(evaluate(argNodes[0], scope) ?? ''), String(evaluate(argNodes[1], scope) ?? ''));
571
- case 'split':
572
- return target.split(String(evaluate(argNodes[0], scope) ?? ''));
573
- case 'startsWith':
574
- return target.startsWith(String(evaluate(argNodes[0], scope) ?? ''));
575
- case 'title':
576
- return target.replace(/\b\p{L}/gu, (match) => match.toUpperCase());
577
- case 'trim':
578
- return target.trim();
579
- case 'upper':
580
- return target.toUpperCase();
581
- default:
582
- break;
583
- }
561
+ function invokeStringMethod(target, name, argNodes, scope, evaluate) {
562
+ switch (name) {
563
+ case 'contains':
564
+ return target.toLowerCase().includes(String(evaluate(argNodes[0], scope) ?? '').toLowerCase());
565
+ case 'endsWith':
566
+ return target.endsWith(String(evaluate(argNodes[0], scope) ?? ''));
567
+ case 'isEmpty':
568
+ return target.length === 0;
569
+ case 'lower':
570
+ return target.toLowerCase();
571
+ case 'replace':
572
+ return target.replaceAll(String(evaluate(argNodes[0], scope) ?? ''), String(evaluate(argNodes[1], scope) ?? ''));
573
+ case 'split':
574
+ return target.split(String(evaluate(argNodes[0], scope) ?? ''));
575
+ case 'startsWith':
576
+ return target.startsWith(String(evaluate(argNodes[0], scope) ?? ''));
577
+ case 'title':
578
+ return target.replace(/\b\p{L}/gu, (match) => match.toUpperCase());
579
+ case 'trim':
580
+ return target.trim();
581
+ case 'upper':
582
+ return target.toUpperCase();
583
+ default:
584
+ return METHOD_NOT_HANDLED;
584
585
  }
586
+ }
585
587
 
586
- if (typeof target === 'number') {
587
- switch (name) {
588
- case 'ceil':
589
- return Math.ceil(target);
590
- case 'floor':
591
- return Math.floor(target);
592
- case 'isEmpty':
593
- return false;
594
- case 'round':
595
- return Number.isFinite(evaluate(argNodes[0], scope))
596
- ? Number(target.toFixed(Number(evaluate(argNodes[0], scope))))
597
- : Math.round(target);
598
- case 'toFixed':
599
- return target.toFixed(Number(evaluate(argNodes[0], scope) ?? 0));
600
- default:
601
- break;
588
+ function invokeNumberMethod(target, name, argNodes, scope, evaluate) {
589
+ switch (name) {
590
+ case 'ceil':
591
+ return Math.ceil(target);
592
+ case 'floor':
593
+ return Math.floor(target);
594
+ case 'isEmpty':
595
+ return false;
596
+ case 'round': {
597
+ const precision = evaluate(argNodes[0], scope);
598
+ return Number.isFinite(precision)
599
+ ? Number(target.toFixed(Number(precision)))
600
+ : Math.round(target);
602
601
  }
602
+ case 'toFixed':
603
+ return target.toFixed(Number(evaluate(argNodes[0], scope) ?? 0));
604
+ default:
605
+ return METHOD_NOT_HANDLED;
603
606
  }
607
+ }
604
608
 
609
+ function invokeDateMethod(target, name, argNodes, scope, evaluate) {
605
610
  const asDate = parseDateValue(target);
606
- if (asDate) {
607
- switch (name) {
608
- case 'format':
609
- return formatDateValue(asDate, String(evaluate(argNodes[0], scope) ?? 'YYYY-MM-DD'));
610
- case 'isEmpty':
611
- return false;
612
- default:
613
- break;
614
- }
611
+ if (!asDate) {
612
+ return METHOD_NOT_HANDLED;
615
613
  }
616
614
 
617
- if (target?.__baseType === 'file') {
618
- switch (name) {
619
- case 'asLink':
620
- return createLinkValue(target.path, {
621
- display: typeof evaluate(argNodes[0], scope) === 'string' ? evaluate(argNodes[0], scope) : '',
622
- exists: true,
623
- });
624
- case 'hasLink': {
625
- const needle = evaluate(argNodes[0], scope);
626
- const needlePath = needle?.__baseType === 'file'
627
- ? needle.path
628
- : (needle?.__baseType === 'link' ? needle.path : String(needle ?? ''));
629
- return target.links.some((link) => link.path === needlePath || link.rawTarget === needlePath);
630
- }
631
- case 'hasProperty':
632
- return Object.hasOwn(target.properties, String(evaluate(argNodes[0], scope) ?? ''));
633
- case 'hasTag':
634
- return argNodes.some((node) => {
635
- const value = String(evaluate(node, scope) ?? '').replace(/^#/u, '');
636
- return target.tags.some((tag) => tag === value || tag.startsWith(`${value}/`));
637
- });
638
- case 'inFolder': {
639
- const folder = String(evaluate(argNodes[0], scope) ?? '').replace(/\/+$/u, '');
640
- return !folder || target.folder === folder || target.folder.startsWith(`${folder}/`);
641
- }
642
- default:
643
- break;
644
- }
615
+ switch (name) {
616
+ case 'format':
617
+ return formatDateValue(asDate, String(evaluate(argNodes[0], scope) ?? 'YYYY-MM-DD'));
618
+ case 'isEmpty':
619
+ return false;
620
+ default:
621
+ return METHOD_NOT_HANDLED;
645
622
  }
623
+ }
646
624
 
647
- if (target?.__baseType === 'link') {
648
- switch (name) {
649
- case 'asFile':
650
- return target.path ? rootContext.snapshot.rowsByPath.get(target.path)?.file ?? null : null;
651
- case 'linksTo': {
652
- const other = evaluate(argNodes[0], scope);
653
- const otherPath = other?.__baseType === 'file'
654
- ? other.path
655
- : (other?.__baseType === 'link' ? other.path : String(other ?? ''));
656
- return target.path === otherPath;
657
- }
658
- default:
659
- break;
625
+ function invokeFileMethod(target, name, argNodes, scope, evaluate) {
626
+ switch (name) {
627
+ case 'asLink': {
628
+ const display = evaluate(argNodes[0], scope);
629
+ return createLinkValue(target.path, {
630
+ display: typeof display === 'string' ? display : '',
631
+ exists: true,
632
+ });
633
+ }
634
+ case 'hasLink': {
635
+ const needlePath = normalizeLinkComparablePath(evaluate(argNodes[0], scope));
636
+ return target.links.some((link) => link.path === needlePath || link.rawTarget === needlePath);
660
637
  }
638
+ case 'hasProperty':
639
+ return Object.hasOwn(target.properties, String(evaluate(argNodes[0], scope) ?? ''));
640
+ case 'hasTag':
641
+ return argNodes.some((node) => {
642
+ const value = String(evaluate(node, scope) ?? '').replace(/^#/u, '');
643
+ return target.tags.some((tag) => tag === value || tag.startsWith(`${value}/`));
644
+ });
645
+ case 'inFolder': {
646
+ const folder = String(evaluate(argNodes[0], scope) ?? '').replace(/\/+$/u, '');
647
+ return !folder || target.folder === folder || target.folder.startsWith(`${folder}/`);
648
+ }
649
+ default:
650
+ return METHOD_NOT_HANDLED;
651
+ }
652
+ }
653
+
654
+ function invokeLinkMethod(target, name, argNodes, scope, evaluate, rootContext) {
655
+ switch (name) {
656
+ case 'asFile':
657
+ return target.path ? rootContext.snapshot.rowsByPath.get(target.path)?.file ?? null : null;
658
+ case 'linksTo':
659
+ return target.path === normalizeLinkComparablePath(evaluate(argNodes[0], scope));
660
+ default:
661
+ return METHOD_NOT_HANDLED;
661
662
  }
663
+ }
662
664
 
663
- if (isPlainObject(target)) {
664
- switch (name) {
665
- case 'isEmpty':
666
- return Object.keys(target).length === 0;
667
- case 'keys':
668
- return Object.keys(target);
669
- case 'values':
670
- return Object.values(target);
671
- default:
672
- break;
665
+ function invokeObjectMethod(target, name) {
666
+ switch (name) {
667
+ case 'isEmpty':
668
+ return Object.keys(target).length === 0;
669
+ case 'keys':
670
+ return Object.keys(target);
671
+ case 'values':
672
+ return Object.values(target);
673
+ default:
674
+ return METHOD_NOT_HANDLED;
675
+ }
676
+ }
677
+
678
+ function invokeMethod(target, name, argNodes, scope, evaluate, rootContext) {
679
+ if (target?.__baseType === 'formula-namespace') {
680
+ if (argNodes.length > 0) {
681
+ throw new Error(`Formula namespace property "${name}" is not callable`);
673
682
  }
683
+ return rootContext.resolveFormulaValue(name, target.row, target.evaluationState);
684
+ }
685
+
686
+ let result = METHOD_NOT_HANDLED;
687
+ if (target == null) {
688
+ result = invokeNullMethod(name);
689
+ } else if (Array.isArray(target)) {
690
+ result = invokeArrayMethod(target, name, argNodes, scope, evaluate);
691
+ } else if (typeof target === 'string') {
692
+ result = invokeStringMethod(target, name, argNodes, scope, evaluate);
693
+ } else if (typeof target === 'number') {
694
+ result = invokeNumberMethod(target, name, argNodes, scope, evaluate);
695
+ } else if (target?.__baseType === 'file') {
696
+ result = invokeFileMethod(target, name, argNodes, scope, evaluate);
697
+ } else if (target?.__baseType === 'link') {
698
+ result = invokeLinkMethod(target, name, argNodes, scope, evaluate, rootContext);
699
+ } else if (isPlainObject(target)) {
700
+ result = invokeObjectMethod(target, name);
701
+ }
702
+
703
+ if (result !== METHOD_NOT_HANDLED) {
704
+ return result;
705
+ }
706
+
707
+ result = invokeDateMethod(target, name, argNodes, scope, evaluate);
708
+ if (result !== METHOD_NOT_HANDLED) {
709
+ return result;
674
710
  }
675
711
 
676
712
  throw new Error(`Unsupported method "${name}"`);
@@ -17,6 +17,28 @@ import { createLinkValue, dedupeLinkValues } from './base-expression-runtime.js'
17
17
  const INLINE_TAG_RE = /(^|[\s(])#([A-Za-z0-9/_-]+)/g;
18
18
  const INDEX_READ_CONCURRENCY = 8;
19
19
 
20
+ function cloneSnapshotRowRecord(rowRecord) {
21
+ return {
22
+ forwardLinks: new Set(rowRecord.forwardLinks ?? []),
23
+ rawTargetKeys: new Set(rowRecord.rawTargetKeys ?? []),
24
+ row: structuredClone(rowRecord.row),
25
+ };
26
+ }
27
+
28
+ function createWorkspaceFileSetSignature(fileEntries = []) {
29
+ return fileEntries.join('\n');
30
+ }
31
+
32
+ function createRowCacheKey(filePath, workspaceState, fileSetSignature) {
33
+ const metadata = workspaceState?.metadata?.get(filePath) ?? null;
34
+ return [
35
+ filePath,
36
+ Number.isFinite(metadata?.mtimeMs) ? metadata.mtimeMs : '',
37
+ Number.isFinite(metadata?.size) ? metadata.size : '',
38
+ fileSetSignature,
39
+ ].join('\0');
40
+ }
41
+
20
42
  function isPlainObject(value) {
21
43
  return Object.prototype.toString.call(value) === '[object Object]';
22
44
  }
@@ -119,6 +141,7 @@ export class BaseIndexSnapshotStore {
119
141
  this.workspaceStateSynchronizer = workspaceStateSynchronizer;
120
142
  this.indexSnapshot = null;
121
143
  this.lastWorkspaceState = null;
144
+ this.rowRecordCache = new Map();
122
145
  }
123
146
 
124
147
  async getWorkspaceState() {
@@ -285,20 +308,30 @@ export class BaseIndexSnapshotStore {
285
308
  async buildIndexSnapshot(workspaceState = null) {
286
309
  const resolvedWorkspaceState = workspaceState ?? await this.getWorkspaceState();
287
310
  const fileEntries = listWorkspaceFilePaths(resolvedWorkspaceState);
311
+ const fileSetSignature = createWorkspaceFileSetSignature(fileEntries);
288
312
  const wikiTargetIndex = createWikiTargetIndex(fileEntries);
289
313
  const markdownContents = new Map();
290
314
 
291
315
  await mapWithConcurrency(resolvedWorkspaceState.markdownPaths ?? [], INDEX_READ_CONCURRENCY, async (filePath) => {
292
- markdownContents.set(filePath, await this.vaultFileStore.readMarkdownFile(filePath));
316
+ const cacheKey = createRowCacheKey(filePath, resolvedWorkspaceState, fileSetSignature);
317
+ if (!this.rowRecordCache.has(cacheKey)) {
318
+ markdownContents.set(filePath, await this.vaultFileStore.readMarkdownFile(filePath));
319
+ }
293
320
  });
294
321
 
295
322
  const rowsByPath = new Map();
296
323
  const forwardLinksByPath = new Map();
297
324
  const rawTargetKeysBySourcePath = new Map();
298
325
  const rawTargetSourcesByKey = new Map();
326
+ const nextRowRecordCache = new Map();
299
327
  fileEntries.forEach((filePath) => {
328
+ const cacheKey = createRowCacheKey(filePath, resolvedWorkspaceState, fileSetSignature);
329
+ const cachedRowRecord = this.rowRecordCache.get(cacheKey);
300
330
  const markdownContent = markdownContents.get(filePath) ?? null;
301
- const rowRecord = this.createSnapshotRow(filePath, resolvedWorkspaceState, wikiTargetIndex, markdownContent);
331
+ const rowRecord = cachedRowRecord
332
+ ? cloneSnapshotRowRecord(cachedRowRecord)
333
+ : this.createSnapshotRow(filePath, resolvedWorkspaceState, wikiTargetIndex, markdownContent);
334
+ nextRowRecordCache.set(cacheKey, cloneSnapshotRowRecord(rowRecord));
302
335
  rowsByPath.set(filePath, rowRecord.row);
303
336
  forwardLinksByPath.set(filePath, rowRecord.forwardLinks);
304
337
  rawTargetKeysBySourcePath.set(filePath, rowRecord.rawTargetKeys);
@@ -324,6 +357,7 @@ export class BaseIndexSnapshotStore {
324
357
  this.rebuildBacklinks(snapshot);
325
358
  this.indexSnapshot = snapshot;
326
359
  this.lastWorkspaceState = resolvedWorkspaceState;
360
+ this.rowRecordCache = nextRowRecordCache;
327
361
  return snapshot;
328
362
  }
329
363
 
@@ -380,6 +414,7 @@ export class BaseIndexSnapshotStore {
380
414
  return pathValue && isWorkspaceFileEntry(entry);
381
415
  });
382
416
 
417
+ const fileSetSignature = createWorkspaceFileSetSignature(snapshot.filePaths);
383
418
  await mapWithConcurrency(filePathsToRefresh, INDEX_READ_CONCURRENCY, async (filePath) => {
384
419
  const markdownContent = isMarkdownFilePath(filePath)
385
420
  ? await this.vaultFileStore.readMarkdownFile(filePath)
@@ -387,6 +422,11 @@ export class BaseIndexSnapshotStore {
387
422
  const rowRecord = this.createSnapshotRow(filePath, workspaceState, snapshot.wikiTargetIndex, markdownContent, {
388
423
  targetPathAliases,
389
424
  });
425
+ this.invalidateRowRecordCachePath(filePath);
426
+ this.rowRecordCache.set(
427
+ createRowCacheKey(filePath, workspaceState, fileSetSignature),
428
+ cloneSnapshotRowRecord(rowRecord),
429
+ );
390
430
  this.removeRawTargetSourceContributions(snapshot, filePath);
391
431
  snapshot.rowsByPath.set(filePath, rowRecord.row);
392
432
  snapshot.forwardLinksByPath.set(filePath, rowRecord.forwardLinks);
@@ -394,6 +434,14 @@ export class BaseIndexSnapshotStore {
394
434
  });
395
435
  }
396
436
 
437
+ invalidateRowRecordCachePath(filePath) {
438
+ Array.from(this.rowRecordCache.keys()).forEach((cacheKey) => {
439
+ if (cacheKey === filePath || cacheKey.startsWith(`${filePath}\0`)) {
440
+ this.rowRecordCache.delete(cacheKey);
441
+ }
442
+ });
443
+ }
444
+
397
445
  async ensureIndexSnapshot({ basePath = '', sourcePath = '' } = {}) {
398
446
  await this.synchronizeWorkspaceState();
399
447
  let workspaceState = await this.getWorkspaceState();
@@ -510,9 +558,12 @@ export class BaseIndexSnapshotStore {
510
558
  });
511
559
 
512
560
  [...deletedFilePaths, ...removedChangedFilePaths].forEach((pathValue) => {
561
+ this.invalidateRowRecordCachePath(pathValue);
513
562
  this.removeSnapshotPath(snapshot, pathValue);
514
563
  });
515
564
  renamedFileEntries.forEach((entry) => {
565
+ this.invalidateRowRecordCachePath(entry.oldPath);
566
+ this.invalidateRowRecordCachePath(entry.newPath);
516
567
  this.removeSnapshotPath(snapshot, entry.oldPath);
517
568
  });
518
569
  [...createdFilePaths, ...renamedFileEntries.map((entry) => entry.newPath)].forEach((pathValue) => {
@@ -23,6 +23,14 @@ import { transformBaseSource } from './base-transform.js';
23
23
 
24
24
  export { serializeBaseDefinition } from './base-definition.js';
25
25
 
26
+ const BASE_QUERY_ROW_CHUNK_SIZE = 50;
27
+
28
+ function yieldToEventLoop() {
29
+ return new Promise((resolve) => {
30
+ setImmediate(resolve);
31
+ });
32
+ }
33
+
26
34
  function buildSortChain(activeView) {
27
35
  const entries = [];
28
36
  (activeView.sort ?? []).forEach((sortConfig) => {
@@ -296,7 +304,7 @@ export class BaseQueryService {
296
304
  };
297
305
  }
298
306
 
299
- collectCandidateRows({
307
+ async collectCandidateRows({
300
308
  activeView,
301
309
  astCache = new Map(),
302
310
  columns = [],
@@ -318,46 +326,55 @@ export class BaseQueryService {
318
326
  && (activeView.summaries?.length ?? 0) === 0;
319
327
  const hardLimit = Math.min(effectiveLimit, effectiveMaxRows);
320
328
 
321
- snapshot.filePaths.forEach((filePath) => {
322
- const row = snapshot.rowsByPath.get(filePath);
323
- if (!row) {
324
- return;
325
- }
326
-
327
- const rowContext = this.createRowQueryContext({
328
- astCache,
329
- definition,
330
- row,
331
- snapshot,
332
- thisFile,
333
- });
334
- if (!evaluateFilterNode(definition.filters, rowContext) || !evaluateFilterNode(activeView.filters, rowContext)) {
335
- return;
336
- }
329
+ const filePaths = snapshot.filePaths ?? [];
330
+ for (let chunkStart = 0; chunkStart < filePaths.length; chunkStart += BASE_QUERY_ROW_CHUNK_SIZE) {
331
+ const chunkEnd = Math.min(chunkStart + BASE_QUERY_ROW_CHUNK_SIZE, filePaths.length);
332
+ for (let index = chunkStart; index < chunkEnd; index += 1) {
333
+ const filePath = filePaths[index];
334
+ const row = snapshot.rowsByPath.get(filePath);
335
+ if (!row) {
336
+ continue;
337
+ }
337
338
 
338
- const rawCells = {};
339
- evaluatedPropertyIds.forEach((propertyId) => {
340
- rawCells[propertyId] = getPropertyValue(propertyId, row, definition, snapshot, thisFile, rowContext);
341
- });
342
-
343
- const candidateRow = {
344
- file: row.file,
345
- rawCells,
346
- };
347
- if (!rowMatchesSearch(candidateRow, columns, search)) {
348
- return;
349
- }
339
+ const rowContext = this.createRowQueryContext({
340
+ astCache,
341
+ definition,
342
+ row,
343
+ snapshot,
344
+ thisFile,
345
+ });
346
+ if (!evaluateFilterNode(definition.filters, rowContext) || !evaluateFilterNode(activeView.filters, rowContext)) {
347
+ continue;
348
+ }
350
349
 
351
- if (canBoundDuringCollection) {
352
- insertSortedBounded(rows, candidateRow, {
353
- limit: hardLimit,
354
- sortChain,
350
+ const rawCells = {};
351
+ evaluatedPropertyIds.forEach((propertyId) => {
352
+ rawCells[propertyId] = getPropertyValue(propertyId, row, definition, snapshot, thisFile, rowContext);
355
353
  });
356
- return;
354
+
355
+ const candidateRow = {
356
+ file: row.file,
357
+ rawCells,
358
+ };
359
+ if (!rowMatchesSearch(candidateRow, columns, search)) {
360
+ continue;
361
+ }
362
+
363
+ if (canBoundDuringCollection) {
364
+ insertSortedBounded(rows, candidateRow, {
365
+ limit: hardLimit,
366
+ sortChain,
367
+ });
368
+ continue;
369
+ }
370
+
371
+ rows.push(candidateRow);
357
372
  }
358
373
 
359
- rows.push(candidateRow);
360
- });
374
+ if (chunkEnd < filePaths.length) {
375
+ await yieldToEventLoop();
376
+ }
377
+ }
361
378
 
362
379
  return rows;
363
380
  }
@@ -455,7 +472,7 @@ export class BaseQueryService {
455
472
  const requestedLimit = Number.isInteger(context.activeView.limit) && context.activeView.limit > 0
456
473
  ? context.activeView.limit
457
474
  : null;
458
- let rows = this.collectCandidateRows({
475
+ let rows = await this.collectCandidateRows({
459
476
  ...context,
460
477
  astCache,
461
478
  limit: requestedLimit,
@@ -538,7 +555,7 @@ export class BaseQueryService {
538
555
  },
539
556
  };
540
557
  const astCache = new Map();
541
- const rows = this.collectCandidateRows({
558
+ const rows = await this.collectCandidateRows({
542
559
  ...propertyValueContext,
543
560
  astCache,
544
561
  evaluatedPropertyIds: [...new Set([
@@ -85,6 +85,7 @@ export class CollaborationDocumentStore {
85
85
  async persistState({
86
86
  commentThreads = [],
87
87
  content = '',
88
+ includeContent = true,
88
89
  snapshot = null,
89
90
  } = {}) {
90
91
  if (!this.vaultFileStore) {
@@ -95,16 +96,19 @@ export class CollaborationDocumentStore {
95
96
  const result = await this.vaultFileStore.persistCollaborationState(this.name, {
96
97
  commentThreads,
97
98
  content,
99
+ includeContent,
98
100
  snapshot,
99
101
  });
100
102
  assertWriteSucceeded(result, 'persist collaboration state', this.name);
101
103
  } else {
102
- await this.writeContent(content);
104
+ if (includeContent) {
105
+ await this.writeContent(content);
106
+ }
103
107
  await this.writeCommentThreads(commentThreads);
104
108
  await this.writeSnapshot(snapshot);
105
109
  }
106
110
 
107
- if (this.backlinkIndex && isMarkdownFilePath(this.name)) {
111
+ if (includeContent && this.backlinkIndex && isMarkdownFilePath(this.name)) {
108
112
  this.backlinkIndex.updateFile(this.name, content);
109
113
  }
110
114
  }