collabmd 0.1.43 → 0.1.45
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bin/collabmd.js +1 -2
- package/dist/client/assets/CodeMirrorEditor-UCMRAMCV-CbSISC1w.js +1 -0
- package/dist/client/assets/{abnfDiagram-VRR7QNED-C-CM0mGi.js → abnfDiagram-N423BO3Z-CUMTFJhI.js} +1 -1
- package/dist/client/assets/ar-SA-PQUY64WN-xjXgbW6d.js +10 -0
- package/dist/client/assets/arc-DgcGdgmL.js +1 -0
- package/dist/client/assets/architecture-TIHT7OUA-CsHfPErM.js +1 -0
- package/dist/client/assets/architectureDiagram-T3A2C74G-w25m71oV.js +36 -0
- package/dist/client/assets/asciiarmor-C_eisQCp.js +1 -0
- package/dist/client/assets/{asn1-Dr8qZg38.js → asn1-DCl_8MCW.js} +1 -1
- package/dist/client/assets/{asterisk-Bja0s6e1.js → asterisk-BEn0Cwpx.js} +1 -1
- package/dist/client/assets/az-AZ-OXJXL76K-4JkO4Pca.js +1 -0
- package/dist/client/assets/bg-BG-W2GKIJDF-DnkH_o81.js +5 -0
- package/dist/client/assets/{blockDiagram-677ZJIJ3-BLomrZyt.js → blockDiagram-VBNYF7ZC-CipJt9Jl.js} +5 -5
- package/dist/client/assets/bn-BD-TGL7M4PJ-CG4JkmtP.js +3 -0
- package/dist/client/assets/bn-IN-BKETKYEH-CG4JkmtP.js +3 -0
- package/dist/client/assets/browser-utils-CKtI_rZl.js +1 -0
- package/dist/client/assets/c4Diagram-5PPSVZJV-B5ktVx6g.js +10 -0
- package/dist/client/assets/ca-ES-LD5SCRVV-U6_TVMX9.js +8 -0
- package/dist/client/assets/channel-4Jkmq93I.js +1 -0
- package/dist/client/assets/{chunk-32BRIVSS-BD6LQmvI.js → chunk-2GRJ4B5K-DhnlUv3F.js} +1 -1
- package/dist/client/assets/chunk-3NCLNEKW-Y2Jf_LI-.js +1 -0
- package/dist/client/assets/{chunk-HOUHSVGY-DX1huN9x.js → chunk-4I5QYGJK-CCB2YcIH.js} +1 -1
- package/dist/client/assets/{chunk-5FCAYU7R-DNtJmW0j.js → chunk-5FCAYU7R-Dh5nylU8.js} +1 -1
- package/dist/client/assets/{chunk-5HE753X5-o8-OCfIL.js → chunk-5HE753X5-Bw-yg4kO.js} +1 -1
- package/dist/client/assets/{chunk-5JV3BV7I-DKfYBAeY.js → chunk-5JV3BV7I-Cy5pj3QY.js} +1 -1
- package/dist/client/assets/{chunk-EX3LRPZG-DNVm3Wj1.js → chunk-5RXB4S5H-BWrwFqMI.js} +3 -3
- package/dist/client/assets/{chunk-5TONJI2A-DOX2waSJ.js → chunk-5TONJI2A-DQOY3q1H.js} +1 -1
- package/dist/client/assets/{chunk-MOJQB5TN-BEEcDvmL.js → chunk-6Q2QTUOP-CPlWzBtc.js} +1 -1
- package/dist/client/assets/chunk-7XWMRXBY-CfMzEq80.js +1 -0
- package/dist/client/assets/chunk-7Z6QIM7H-BP9Pdsm9.js +10 -0
- package/dist/client/assets/{chunk-BIQX33UG-CuPbkyWp.js → chunk-BIQX33UG-DZEsGuSn.js} +1 -1
- package/dist/client/assets/{chunk-CQNSW5MT-BbEh_krl.js → chunk-CQNSW5MT-B8S09OIh.js} +1 -1
- package/dist/client/assets/{chunk-CYSBUYHQ-CbOq7Rc1.js → chunk-CYSBUYHQ-C1Rf4art.js} +1 -1
- package/dist/client/assets/{chunk-EMLP6XTP-BoneA0Uo.js → chunk-EMLP6XTP-RLD4nXpI.js} +1 -1
- package/dist/client/assets/chunk-ERSWUTIN-ME9RVNel.js +41 -0
- package/dist/client/assets/{chunk-V7JOEXUC-Bo_5WqHt.js → chunk-GF5L2VYU-DkJpO7ff.js} +3 -3
- package/dist/client/assets/chunk-I66GZJ75-CVFiiffQ.js +127 -0
- package/dist/client/assets/{chunk-FWX5IMBZ-Ch9_j2qF.js → chunk-J7OUQ5F2-4CEb7pvH.js} +2 -2
- package/dist/client/assets/{chunk-JG7HCLWE-Dk4_aECj.js → chunk-JG7HCLWE-BYfiSaVt.js} +1 -1
- package/dist/client/assets/{chunk-PUDLZKDR-C-JwZaMh.js → chunk-JQJVKLGR-cx8X_24v.js} +5 -5
- package/dist/client/assets/{chunk-VR4S4FIN-uXjSaaA7.js → chunk-KBJHAD2P-CB_3zWUf.js} +1 -1
- package/dist/client/assets/{chunk-KEIR6QF5-Dj-OpFgW.js → chunk-KEIR6QF5-BICK3FdT.js} +31 -31
- package/dist/client/assets/{chunk-MOZMSUNE-BgA8jCvb.js → chunk-MOZMSUNE-XVucA-n6.js} +1 -1
- package/dist/client/assets/chunk-NSK5VX7P-TLH37VXI.js +2 -0
- package/dist/client/assets/{chunk-OSBZ3O6U-CX9EQ5t2.js → chunk-OSBZ3O6U-CrKZOUOr.js} +1 -1
- package/dist/client/assets/{chunk-QBLGF6JB-C9zGMqvP.js → chunk-QBLGF6JB-CxAyS2mW.js} +1 -1
- package/dist/client/assets/{chunk-ZGVPDNZ5-Bmet6b46.js → chunk-QR6OTTB3-CDAA_5Ib.js} +3 -3
- package/dist/client/assets/{chunk-R7FJI6CG-BpBhcF6R.js → chunk-R7FJI6CG-Cnn3gE-Y.js} +1 -1
- package/dist/client/assets/chunk-RYQCIY6F-D-a0zH8K.js +1 -0
- package/dist/client/assets/{chunk-SRAX5OIU-Bpn6XoyU.js → chunk-SRAX5OIU-KFQikY-4.js} +1 -1
- package/dist/client/assets/{chunk-U6XO7XAA-CR0BSRFR.js → chunk-U6XO7XAA-BFxjP5U3.js} +1 -1
- package/dist/client/assets/chunk-UBXNYLIW-Bhk-PbFK.js +1 -0
- package/dist/client/assets/{chunk-C7G6YPKG-C97QUAKv.js → chunk-W5SLKNZC-BdNSCxZ9.js} +1 -1
- package/dist/client/assets/{chunk-Q4XR5HBZ-Dyewsidf.js → chunk-WRU74C26-h6_XkD3_.js} +7 -7
- package/dist/client/assets/{chunk-XXDRQBXY-Bq6zMMOx.js → chunk-XXDRQBXY-BvKO0v-W.js} +1 -1
- package/dist/client/assets/{chunk-Z24UKHUO-BQ6-bK37.js → chunk-YGJVY4SA-CjSe7Bx7.js} +5 -5
- package/dist/client/assets/{chunk-YOTPTUD7-CjHV8V6f.js → chunk-YOTPTUD7-D0vRKqYp.js} +1 -1
- package/dist/client/assets/{chunk-Z5NKEFVG-DC2Lcs-4.js → chunk-Z5NKEFVG-q6fHH75m.js} +2 -2
- package/dist/client/assets/{chunk-ZIRB5QZD-C6fEPe3t.js → chunk-ZIRB5QZD-O39ZBUk3.js} +5 -5
- package/dist/client/assets/classDiagram-JCYQIIEL-L7lsyW_w.js +1 -0
- package/dist/client/assets/classDiagram-v2-OCEON4UE-L7lsyW_w.js +1 -0
- package/dist/client/assets/clike-D_6L3tnO.js +1 -0
- package/dist/client/assets/cmake-84nbDH0I.js +1 -0
- package/dist/client/assets/coffeescript-De_zI4J0.js +1 -0
- package/dist/client/assets/{room-BhC-3iml.js → comment-threads-DDegmaFO.js} +2 -2
- package/dist/client/assets/commonlisp-DgAKBe0r.js +1 -0
- package/dist/client/assets/cose-bilkent-JH36ORCC-Cm_QF_yb.js +1 -0
- package/dist/client/assets/crystal-Bsdphhtm.js +1 -0
- package/dist/client/assets/cs-CZ-OFPU5DBV-BmFAIhqX.js +7 -0
- package/dist/client/assets/css-CnaYoQib.js +1 -0
- package/dist/client/assets/cynefin-VYW2F7L2-Ds2Fw2Y0.js +1 -0
- package/dist/client/assets/cynefinDiagram-MW4NZA55-CJxXfJek.js +62 -0
- package/dist/client/assets/cytoscape.esm-B-NFISlW.js +321 -0
- package/dist/client/assets/{d-BhMjBjQP.js → d-DWkQyNnU.js} +1 -1
- package/dist/client/assets/da-DK-FRDJFYWF-H387Jw8B.js +2 -0
- package/dist/client/assets/dagre-Buvkdvvj.js +1 -0
- package/dist/client/assets/{dagre-VKFMJZFB-CSQjHsP2.js → dagre-VZM6K2ZE-L1xArOGs.js} +2 -2
- package/dist/client/assets/de-CH-ZG7H3QK3-C_groygo.js +11 -0
- package/dist/client/assets/de-DE-SIJYH4IH-C_groygo.js +11 -0
- package/dist/client/assets/defaultLocale-BFoDCU3G.js +1 -0
- package/dist/client/assets/{diagram-OA4YK3LP-ruJmRhl8.js → diagram-7IWD3JNH-B2d2Bm15.js} +1 -1
- package/dist/client/assets/{diagram-FQU43EPY-D0RPbiE5.js → diagram-B4RE2ZJO-NP4UAwjR.js} +1 -1
- package/dist/client/assets/{diagram-NH7WQ7WH-CaTayrXM.js → diagram-LBJQPF4R-D1FJQV8t.js} +1 -1
- package/dist/client/assets/{diagram-G47NLZAW-XriksZQN.js → diagram-Q27KOJAE-DylDuwor.js} +13 -13
- package/dist/client/assets/diagram-UB23O5K3-DJcKCwv9.js +41 -0
- package/dist/client/assets/dist-3bgCp7iY.js +1 -0
- package/dist/client/assets/dist-BH87JoHx.js +11 -0
- package/dist/client/assets/{dist-BUxzPC-Q.js → dist-BIkPRZO7.js} +3 -3
- package/dist/client/assets/{dist-qx0Iv9vM.js → dist-B_J_HbC0.js} +1 -1
- package/dist/client/assets/dist-BqCsFpx4.js +1 -0
- package/dist/client/assets/dist-C11hHqv_.js +13 -0
- package/dist/client/assets/{dist-YCtFk_v0.js → dist-C2JHCt8U.js} +1 -1
- package/dist/client/assets/{dist-D3Tmtejd.js → dist-CYZmbokb.js} +2 -2
- package/dist/client/assets/dist-CZjTtmTu.js +1 -0
- package/dist/client/assets/{dist-C__bPRpd.js → dist-Cig4Ov_X.js} +1 -1
- package/dist/client/assets/{dist-DXTgEdvE.js → dist-CnL7Y2sM.js} +1 -1
- package/dist/client/assets/dist-CqQEC8gR.js +1 -0
- package/dist/client/assets/{dist-CQTo4Y46.js → dist-D2AQ-76g.js} +1 -1
- package/dist/client/assets/dist-D4Rzqod1.js +1 -0
- package/dist/client/assets/dist-D5sn-mwk.js +9 -0
- package/dist/client/assets/dist-D7G-n87v.js +1 -0
- package/dist/client/assets/dist-DCzuX1AF.js +1 -0
- package/dist/client/assets/dist-DGb27Dl6.js +1 -0
- package/dist/client/assets/{dist-CHJCI2AN.js → dist-DK5Gs2wa.js} +1 -1
- package/dist/client/assets/dist-DRqOrNgN.js +1 -0
- package/dist/client/assets/{dist-B0NFuQC3.js → dist-DetkMS_4.js} +1 -1
- package/dist/client/assets/dist-DhLvC8DS.js +2 -0
- package/dist/client/assets/{dist-D1W8XQvM.js → dist-Dp6FVkQ1.js} +1 -1
- package/dist/client/assets/{dist-D4MWz_rC.js → dist-Drp8uu5J.js} +1 -1
- package/dist/client/assets/dist-DtbjNB28.js +1 -0
- package/dist/client/assets/dist-DyrYcvpo2.js +1 -0
- package/dist/client/assets/dist-GrygD2zE.js +1 -0
- package/dist/client/assets/{dist-CzNyYE-S.js → dist-HmEpWUow.js} +1 -1
- package/dist/client/assets/{dist-D7-13adP.js → dist-JYEDRrPT.js} +1 -1
- package/dist/client/assets/dist-MvcV4190.js +1 -0
- package/dist/client/assets/{dist-gGmuzNio.js → dist-RTa81Km7.js} +1 -1
- package/dist/client/assets/{dockerfile-BLkNEvjs.js → dockerfile-DJkHQgkl.js} +1 -1
- package/dist/client/assets/drawio-editor-ClE8jpoG.js +9 -0
- package/dist/client/assets/drawioEditor-CXaTM9Ds.js +2 -0
- package/dist/client/assets/{dylan-C6jEEEk-.js → dylan-BCDoL_-p.js} +1 -1
- package/dist/client/assets/{ebnfDiagram-CCIWWBDH-exNgBUy6.js → ebnfDiagram-BXEA7PRR-nw0wmA6y.js} +1 -1
- package/dist/client/assets/{ecl-BSZaIHnp.js → ecl-BVIeWmwY.js} +1 -1
- package/dist/client/assets/editor-session-GTwZS6Df.js +16 -0
- package/dist/client/assets/el-GR-IEE2CGI2-BkT6YT54.js +7 -0
- package/dist/client/assets/embedded-editor-base-CiNEc8vy.css +1 -0
- package/dist/client/assets/en-7NFCYGKX-BrgYZAEe.js +1 -0
- package/dist/client/assets/{erDiagram-Q63AITRT-CoYS49kY.js → erDiagram-JOGREHBK-cYUpEKpf.js} +3 -3
- package/dist/client/assets/{erlang-DaB2Rkuy.js → erlang-BV0c4Hdn.js} +1 -1
- package/dist/client/assets/es-ES-TVVPWKV5-CpPKJXTM.js +12 -0
- package/dist/client/assets/eu-ES-CGBMFQDT-Bu3N2493.js +8 -0
- package/dist/client/assets/eventmodeling-45OFAUF4-CLEiVx5s.js +1 -0
- package/dist/client/assets/excalidraw-editor-BZVM81BO.js +9 -0
- package/dist/client/assets/excalidraw-editor-CyGwOhLz.css +1 -0
- package/dist/client/assets/excalidraw-scene-C8n9CHsK.js +176 -0
- package/dist/client/assets/excalidrawEditor-DxJanCze.js +2 -0
- package/dist/client/assets/export-page-CUfws2T-.js +39 -0
- package/dist/client/assets/exportDocument-BCuxqXDY.js +2 -0
- package/dist/client/assets/exportDocument-DV-OX74E.css +1 -0
- package/dist/client/assets/fa-IR-IE6XAPR4-BEvLCORD.js +9 -0
- package/dist/client/assets/{factor-D7LVTn2l.js → factor-LKH5gN8L.js} +1 -1
- package/dist/client/assets/fi-FI-P7TKNHRM-DI0q8iSX.js +6 -0
- package/dist/client/assets/flowDiagram-UKHOOZJN-D0ypP0Ez.js +1 -0
- package/dist/client/assets/fr-FR-QI2XZNT7-y8kXd8LA.js +12 -0
- package/dist/client/assets/ganttDiagram-PKOTCBZU-BnM97BCT.js +292 -0
- package/dist/client/assets/gitGraph-TEB2WS4Q-CZFBqwW-.js +1 -0
- package/dist/client/assets/{gitGraphDiagram-IHSO6WYX-x3NetpXU.js → gitGraphDiagram-DS77QQ5N-BQpQhjuN.js} +3 -3
- package/dist/client/assets/gl-ES-TLYCNOZZ-Br-Fhff-.js +6 -0
- package/dist/client/assets/groovy-CUpZ7dEl.js +1 -0
- package/dist/client/assets/he-IL-ZX43XLGP-qKQq6V9X.js +9 -0
- package/dist/client/assets/hi-IN-UTYRMTUF-DOUcwrDO.js +3 -0
- package/dist/client/assets/hu-HU-AJOSEBW6-FqTyvHlD.js +3 -0
- package/dist/client/assets/id-ID-ETLTVG6C-CQqh3CLS.js +8 -0
- package/dist/client/assets/image-QXRYHUNP-lfTHE3bb.js +1 -0
- package/dist/client/assets/image-blob-reduce.esm-Dj7YBvMv.js +2 -0
- package/dist/client/assets/index-C3YnUgMD.css +1 -0
- package/dist/client/assets/index-D2wXraJ1.js +2 -0
- package/dist/client/assets/info-DKCQHKI2--1InqQeT.js +1 -0
- package/dist/client/assets/{infoDiagram-FWYZ7A6U-DyfGrH8z.js → infoDiagram-6WML65LV-DYB8HCDQ.js} +1 -1
- package/dist/client/assets/init-C-OQMol4.js +1 -0
- package/dist/client/assets/{ishikawaDiagram-FXEZZL3T-BOts527_.js → ishikawaDiagram-WSZJBQD7-Coz_P3t6.js} +2 -2
- package/dist/client/assets/it-IT-B4B6TP6L-V-yK3SZz.js +12 -0
- package/dist/client/assets/ja-JP-IYKVURR5-BQKBXRpX.js +12 -0
- package/dist/client/assets/javascript-BWjar7HY.js +1 -0
- package/dist/client/assets/javascript-D-FtdkNC.js +1 -0
- package/dist/client/assets/{journeyDiagram-5HDEW3XC-DF37OVrZ.js → journeyDiagram-NVQOT4AX-B6edChce.js} +3 -3
- package/dist/client/assets/{react-lCSYwAWP.js → jsx-runtime-BpzPEenQ.js} +1 -1
- package/dist/client/assets/kaa-SE2BUIKX-CZ5kfwPg.js +1 -0
- package/dist/client/assets/kab-KAB-Y3GLKXLR-Do7GWfuN.js +4 -0
- package/dist/client/assets/{kanban-definition-HUTT4EX6-nCjbm1T6.js → kanban-definition-27J2QSJJ-BFd9-cLc.js} +3 -3
- package/dist/client/assets/{katex-B7rAX3Vi.js → katex-CXMH3UgJ.js} +3 -3
- package/dist/client/assets/kk-KZ-ABWUFVOH-BpqVciQz.js +1 -0
- package/dist/client/assets/{km-KH-PBSJLZ2M-Bh1DsarT.js → km-KH-PCWDKPHP-DSmy5shj.js} +3 -3
- package/dist/client/assets/ko-KR-7JQDXKGM-N42lep78.js +5 -0
- package/dist/client/assets/ku-TR-NAH2Q5B7-K8LLl9fk.js +6 -0
- package/dist/client/assets/{line-h44YiLOQ.js → line-B_S_S8kV.js} +1 -1
- package/dist/client/assets/linear-n-3HSMUF.js +1 -0
- package/dist/client/assets/lt-LT-VQFYRSNQ-BmOd0ALn.js +3 -0
- package/dist/client/assets/lv-LV-T62VSYUM-B22WdPhp.js +4 -0
- package/dist/client/assets/main-DtiGz7uI.js +795 -0
- package/dist/client/assets/{mermaid-parser.core-ygm3cZ_w.js → mermaid-parser.core-CUVdebAV.js} +2 -2
- package/dist/client/assets/mermaid.core-DN-lF51U.js +11 -0
- package/dist/client/assets/{mindmap-definition-LN4V7U3C-CTpHMYFE.js → mindmap-definition-FAOFIHXS-C9PQ38Al.js} +3 -3
- package/dist/client/assets/modulepreload-polyfill-P2Xu9kJm.js +1 -0
- package/dist/client/assets/mr-IN-V4FHLCJE-XX069tpm.js +9 -0
- package/dist/client/assets/{mumps-CW_TBmxz.js → mumps-BSzj6Xyz.js} +1 -1
- package/dist/client/assets/my-MM-E3SQ6E54-cst_-5SB.js +1 -0
- package/dist/client/assets/nb-NO-MLNOFN5H-Bu2URWko.js +8 -0
- package/dist/client/assets/nl-NL-D5L3ZV4M-BqrV0btt.js +13 -0
- package/dist/client/assets/nn-NO-NNHDGPKB-DK-xZaWM.js +4 -0
- package/dist/client/assets/{nsis-AQ_alPln.js → nsis-CfSuhXs5.js} +1 -1
- package/dist/client/assets/{ntriples-d28e9m0E.js → ntriples-B9h1VB_g.js} +1 -1
- package/dist/client/assets/oc-FR-DWCRF55G-BZ5Po5R6.js +4 -0
- package/dist/client/assets/{ordinal-hYBb2elL.js → ordinal-BDEzSJ7C.js} +1 -1
- package/dist/client/assets/pa-IN-3JSAY44M-BZQSjKrS.js +4 -0
- package/dist/client/assets/packet-7NZHBO7P-BGMXB0XL.js +1 -0
- package/dist/client/assets/path-fybaL0A-.js +1 -0
- package/dist/client/assets/{pegDiagram-2B236MQR-Bq9qITsk.js → pegDiagram-VL7TDLO6-BMZUrSaU.js} +1 -1
- package/dist/client/assets/percentages-ETZPVQEE-DFxFqXgH.js +1 -0
- package/dist/client/assets/perl-BkSkiI9m.js +1 -0
- package/dist/client/assets/{pica-D0pwGKw7.js → pica-xkWDouSg.js} +2 -2
- package/dist/client/assets/pie-RZYD4A2V-DgYg3tCt.js +1 -0
- package/dist/client/assets/{pieDiagram-ENE6RG2P--ax2FUc8.js → pieDiagram-7S7Q4E2Y-h8kbCL9o.js} +2 -2
- package/dist/client/assets/{pl-PL-EERMMCTN-dIzrbxJt.js → pl-PL-ACURYKP3-qcEOSfCk.js} +4 -4
- package/dist/client/assets/{powershell-CzG71I4L.js → powershell-BcIto6Sf.js} +1 -1
- package/dist/client/assets/preview-diagram-utils-txBCoW8d.js +1 -0
- package/dist/client/assets/preview-render-compiler-BSaQO_p3.js +35 -0
- package/dist/client/assets/preview-render-compiler-csGM5ZFz.js +1 -0
- package/dist/client/assets/preview-render-profile-BZzGSg6K.js +22 -0
- package/dist/client/assets/preview-render-worker-B42LWvrD.js +60 -0
- package/dist/client/assets/pt-BR-LOX7MLGD-DLueHSyZ.js +10 -0
- package/dist/client/assets/pt-PT-CZ2U2RFQ-BJ-GAEm6.js +12 -0
- package/dist/client/assets/{pug-Ck0YjsGM.js → pug-Wky5Dnfy.js} +1 -1
- package/dist/client/assets/puppet-BZyAS7I4.js +1 -0
- package/dist/client/assets/python-B_1Jd8HM.js +1 -0
- package/dist/client/assets/{quadrantDiagram-ABIIQ3AL-f0PUv7DH.js → quadrantDiagram-CIZ2JOQS-CkElyfMi.js} +2 -2
- package/dist/client/assets/quick-switcher-controller-shW_6vPY.js +12 -0
- package/dist/client/assets/r-CxDmU1I4.js +1 -0
- package/dist/client/assets/radar-I7S5WNFK-Ag-zp_Rq.js +1 -0
- package/dist/client/assets/railroad-3IZDKUUU-aibJDIDV.js +1 -0
- package/dist/client/assets/railroad-abnf-AHOZXSZD-BBMEuvIl.js +1 -0
- package/dist/client/assets/railroad-ebnf-EBAXGLYW-Be1nseej.js +1 -0
- package/dist/client/assets/railroad-peg-LSFZ7HO6-DIvD-Eyb.js +1 -0
- package/dist/client/assets/{railroadDiagram-RFXS5EU6-CZD_9g-4.js → railroadDiagram-AXF67PYL-c75gnikD.js} +1 -1
- package/dist/client/assets/{requirementDiagram-TGXJPOKE-C4Jwr3TE.js → requirementDiagram-LRYGKXZP-mNxKLuHS.js} +2 -2
- package/dist/client/assets/ro-RO-2HECL2X6-CJUvKAf0.js +12 -0
- package/dist/client/assets/rolldown-runtime-Dd_uD5pT.js +1 -0
- package/dist/client/assets/room-CQLoqtMo.js +1 -0
- package/dist/client/assets/{rough.esm-CSKSodPl.js → rough.esm-Dy-Kn_BL.js} +1 -1
- package/dist/client/assets/ru-RU-HAYNXO46-BWSlvTrt.js +10 -0
- package/dist/client/assets/ruby-BjXV7-Qa.js +1 -0
- package/dist/client/assets/runtime-config-DSGmGE9V.js +1 -0
- package/dist/client/assets/{sankeyDiagram-HTMAVEWB-B2B2mdB6.js → sankeyDiagram-W5VNT64P-0OhplksI.js} +2 -2
- package/dist/client/assets/{scheme-tChLYBuY.js → scheme-D9qYN0V5.js} +1 -1
- package/dist/client/assets/sequenceDiagram-SI44F4Z6-BJ_yAocC.js +162 -0
- package/dist/client/assets/{shell-Du5Qg9im.js → shell-DwuoZtxw.js} +1 -1
- package/dist/client/assets/si-LK-W5KNS4H6-DGGCsn7k.js +1 -0
- package/dist/client/assets/{simple-mode-DRpGK0lJ.js → simple-mode-DXiLM1-G.js} +1 -1
- package/dist/client/assets/sk-SK-7K2CFGDV-CY4uTYgQ.js +7 -0
- package/dist/client/assets/sl-SI-OXV2QZWW-2-weqaBY.js +6 -0
- package/dist/client/assets/sql-DuQMFDvy.js +1 -0
- package/dist/client/assets/src-oBChb5qS.js +1 -0
- package/dist/client/assets/{stateDiagram-2N3HPSRC-B1niwAq-.js → stateDiagram-OKZ733FA-Cc83O86s.js} +1 -1
- package/dist/client/assets/stateDiagram-v2-UEYNNEHI-B1-BufUk.js +1 -0
- package/dist/client/assets/{stex-sDrdk2BW.js → stex-DNzd62Q_.js} +1 -1
- package/dist/client/assets/{stylus-DLLZ8dgm.js → stylus-BOVgKnng.js} +1 -1
- package/dist/client/assets/subset-shared.chunk-BXlA-9CO.js +1 -0
- package/dist/client/assets/{subset-worker.chunk-Cuw2UvhD.js → subset-worker.chunk-CoaGye2U.js} +1 -1
- package/dist/client/assets/sv-SE-JTOBZRGL-9-IUtVkO.js +12 -0
- package/dist/client/assets/swimlanes-SLNWSIFB-oVTWEJIj.js +2 -0
- package/dist/client/assets/swimlanesDiagram-ULZ7WXOC-C5OTVwEu.js +8 -0
- package/dist/client/assets/ta-IN-KFAVKXGT-gHO6Q_DH.js +6 -0
- package/dist/client/assets/{textile-CyzeGT9J.js → textile-C4jVoHG1.js} +1 -1
- package/dist/client/assets/th-TH-VDMSCPDL-BvJuw6PJ.js +1 -0
- package/dist/client/assets/tiki-AK6FwT8q.js +1 -0
- package/dist/client/assets/timeline-definition-Z64GVDOM-BWDAGTHz.js +120 -0
- package/dist/client/assets/toml-BPTmHmyx.js +1 -0
- package/dist/client/assets/tr-TR-CEZ6GX45-CG6UU3Su.js +4 -0
- package/dist/client/assets/treeView-QDETBFTQ-uHZ-3Fz8.js +1 -0
- package/dist/client/assets/treemap-6X3UGDF4-BnUKyy3l.js +1 -0
- package/dist/client/assets/{ttcn-BePYh-hG.js → ttcn-PPSTk1ow.js} +1 -1
- package/dist/client/assets/{ttcn-cfg-CY0aot7Q.js → ttcn-cfg-2b4Gb5sE.js} +1 -1
- package/dist/client/assets/uk-UA-Q3H3OXQC-CSuIg_DY.js +6 -0
- package/dist/client/assets/uz-UZ-NGCSWWPX-mom7rxSP.js +1 -0
- package/dist/client/assets/vault-api-client-C6bcGwy-.js +5 -0
- package/dist/client/assets/vault-utils-wdQ0RNR9.js +1 -0
- package/dist/client/assets/{vennDiagram-L72KCM5P-DPQ9kbN2.js → vennDiagram-T6HMQDX7-LOSsnlMB.js} +3 -3
- package/dist/client/assets/{verilog-BKSQ5RMB.js → verilog-7LoJAqYT.js} +1 -1
- package/dist/client/assets/{vhdl-CBDDcIJ_.js → vhdl-kS471soi.js} +1 -1
- package/dist/client/assets/vi-VN-P3NDEVPS-BB0Fu9ck.js +7 -0
- package/dist/client/assets/wardley-OPB4EBWU-Da7TLC2F.js +1 -0
- package/dist/client/assets/{wardleyDiagram-EHGQE667-5VW6_Csg.js → wardleyDiagram-T6FBY63Y-BxII3foY.js} +35 -35
- package/dist/client/assets/{xquery-Cda5K8Gy.js → xquery-BKJx4mf9.js} +1 -1
- package/dist/client/assets/{xychartDiagram-FW5EYKEG-Bj0UwltS.js → xychartDiagram-ELKLHX3M-B-pTEjju.js} +4 -4
- package/dist/client/assets/yjs-provider-reset-guard-DE0vINDP.js +4 -0
- package/dist/client/assets/z80-Co3PbHdE.js +1 -0
- package/dist/client/assets/zh-CN-SS3O57GA-Bj8wsiMe.js +11 -0
- package/dist/client/assets/zh-HK-LWJT3VCF-DOTquTCh.js +1 -0
- package/dist/client/assets/zh-TW-VJXC72RT-B48PRo-l.js +13 -0
- package/dist/client/drawio-editor.html +3 -2
- package/dist/client/excalidraw-editor.html +3 -2
- package/dist/client/export-document.html +4 -3
- package/dist/client/index.html +725 -4
- package/package.json +21 -24
- package/src/client/app/drawio-editor-entry.js +0 -3
- package/src/client/app/drawio-editor.html +1 -0
- package/src/client/app/excalidraw-editor-entry.js +0 -3
- package/src/client/app/excalidraw-editor.html +1 -0
- package/src/client/app/export-document-entry.js +0 -3
- package/src/client/app/export-document.html +1 -0
- package/src/client/app/index.html +722 -1
- package/src/client/app/main-entry.js +0 -7
- package/src/client/application/app-shell/chat-feature.js +180 -124
- package/src/client/application/app-shell/comments-feature.js +1 -1
- package/src/client/application/app-shell/git-feature.js +7 -17
- package/src/client/application/app-shell/presence-feature.js +16 -10
- package/src/client/application/app-shell/ui-feature-shell.js +46 -15
- package/src/client/application/app-shell/ui-feature-sidebar.js +74 -1
- package/src/client/application/app-shell/ui-feature-tab-activity.js +2 -2
- package/src/client/application/app-shell/ui-feature-toolbar.js +1 -8
- package/src/client/application/app-shell/workspace-feature.js +22 -83
- package/src/client/application/app-shell-elements.js +7 -1
- package/src/client/application/diagram-chrome.js +284 -171
- package/src/client/application/diagram-preview-export.js +10 -55
- package/src/client/application/diagram-preview-hydrator.js +218 -41
- package/src/client/application/markdown-frontmatter.js +0 -2
- package/src/client/application/mermaid-preview-hydrator.js +46 -27
- package/src/client/application/plantuml-preview-hydrator.js +33 -19
- package/src/client/application/preview-diagram-utils.js +96 -58
- package/src/client/application/preview-render-compiler.js +6 -3
- package/src/client/application/preview-render-profile.js +9 -1
- package/src/client/application/preview-renderer.js +32 -166
- package/src/client/application/quick-switcher-loader.js +3 -1
- package/src/client/application/wiki-link-file-controller.js +2 -2
- package/src/client/application/workspace-coordinator.js +76 -54
- package/src/client/application/workspace-preview-controller.js +0 -3
- package/src/client/application/workspace-route-controller.js +31 -1
- package/src/client/bootstrap/collabmd-app-shell.js +286 -169
- package/src/client/browser-utils.js +77 -0
- package/src/client/domain/excalidraw-api-scene-sync.js +7 -3
- package/src/client/domain/excalidraw-collaboration.js +1 -7
- package/src/client/domain/excalidraw-diagnostics.js +111 -0
- package/src/client/domain/excalidraw-scene.js +2 -3
- package/src/client/domain/room.js +40 -2
- package/src/client/domain/vault-paths.js +14 -0
- package/src/client/domain/vault-utils.js +0 -64
- package/src/client/excalidraw-editor.js +250 -44
- package/src/client/export/export-pipeline.js +12 -43
- package/src/client/infrastructure/api-client-utils.js +23 -0
- package/src/client/infrastructure/app-version-monitor.js +0 -1
- package/src/client/infrastructure/auth-client.js +4 -10
- package/src/client/infrastructure/browser-notification-port.js +30 -21
- package/src/client/infrastructure/browser-preferences-port.js +55 -43
- package/src/client/infrastructure/editor-view-adapter.js +87 -3
- package/src/client/infrastructure/excalidraw-room-client.js +115 -16
- package/src/client/infrastructure/git-api-client.js +9 -32
- package/src/client/infrastructure/lobby-presence.js +1 -0
- package/src/client/infrastructure/vault-api-client.js +31 -56
- package/src/client/infrastructure/workspace-sync-client.js +13 -1
- package/src/client/presentation/bases-preview-controller.js +6 -22
- package/src/client/presentation/comment-overview-controller.js +21 -68
- package/src/client/presentation/comment-ui/comment-ui-card.js +22 -16
- package/src/client/presentation/comment-ui/comment-ui-layout.js +256 -179
- package/src/client/presentation/comment-ui/comment-ui-render.js +33 -45
- package/src/client/presentation/comment-ui/comment-ui-shared.js +151 -19
- package/src/client/presentation/comment-ui/comment-ui-state.js +3 -0
- package/src/client/presentation/comment-ui-controller.js +21 -1
- package/src/client/presentation/components/ui/button.js +0 -25
- package/src/client/presentation/components/ui/class-names.js +8 -27
- package/src/client/presentation/drawio-embed-controller.js +8 -33
- package/src/client/presentation/excalidraw-embed-controller.js +50 -43
- package/src/client/presentation/file-action-controller.js +40 -25
- package/src/client/presentation/file-explorer-controller.js +34 -5
- package/src/client/presentation/file-explorer-view.js +53 -22
- package/src/client/presentation/file-history-view-controller.js +3 -12
- package/src/client/presentation/file-tree-state.js +10 -4
- package/src/client/presentation/git-diff-view-controller.js +8 -17
- package/src/client/presentation/git-panel-controller.js +3 -12
- package/src/client/presentation/quick-switcher-controller.js +245 -77
- package/src/client/presentation/quick-switcher-text-search.js +2 -2
- package/src/client/presentation/scroll-sync-controller.js +5 -30
- package/src/client/presentation/toast-controller.js +3 -0
- package/src/client/styles/components/feedback.css +6 -0
- package/src/client/styles/features/collaboration-chat.css +49 -53
- package/src/client/styles/features/collaboration-presence.css +9 -7
- package/src/client/styles/features/comment-card.css +33 -11
- package/src/client/styles/features/comment-overlays.css +15 -4
- package/src/client/styles/features/comment-overview.css +44 -21
- package/src/client/styles/features/comments-drawer.css +2 -100
- package/src/client/styles/features/diagram-preview.css +25 -18
- package/src/client/styles/features/embedded-preview.css +8 -33
- package/src/client/styles/features/quick-switcher.css +8 -0
- package/src/client/styles/foundation/tokens.css +1 -0
- package/src/client/styles/layout/editor-page.css +40 -0
- package/src/client/styles/layout/responsive.css +31 -1
- package/src/client/styles/layout/shell.css +25 -6
- package/src/client/styles/layout/sidebar.css +47 -15
- package/src/client/styles/overrides/codemirror.css +217 -15
- package/src/client/styles/style.css +25 -7
- package/src/client/styles/surfaces/excalidraw-editor.css +25 -0
- package/src/domain/excalidraw-room-codec.js +1 -9
- package/src/domain/vault-paths.js +41 -0
- package/src/server/application/workspace-reconciliation.js +1 -1
- package/src/server/config/env.js +1 -5
- package/src/server/create-app-server.js +2 -3
- package/src/server/domain/bases/base-expression-runtime.js +1 -46
- package/src/server/domain/bases/base-query-service.js +1 -77
- package/src/server/domain/collaboration/collaboration-document-store.js +12 -115
- package/src/server/domain/collaboration/collaboration-room.js +21 -10
- package/src/server/domain/comment-overview.js +10 -3
- package/src/server/domain/docx-exporter.js +24 -33
- package/src/server/domain/markdown-reference-extractor.js +1 -46
- package/src/server/domain/ripgrep-search-service.js +3 -1
- package/src/server/domain/workspace-state.js +32 -19
- package/src/server/infrastructure/git/diff-service.js +24 -13
- package/src/server/infrastructure/git/git-service.js +50 -44
- package/src/server/infrastructure/git/history-service.js +93 -85
- package/src/server/infrastructure/git/parsers.js +42 -24
- package/src/server/infrastructure/git/path-utils.js +1 -1
- package/src/server/infrastructure/git/responses.js +0 -118
- package/src/server/infrastructure/git/untracked-files.js +1 -1
- package/src/server/infrastructure/github/github-app-client.js +22 -15
- package/src/server/infrastructure/http/create-git-api-command-handler.js +7 -28
- package/src/server/infrastructure/http/create-git-api-query-handler.js +8 -24
- package/src/server/infrastructure/http/create-request-handler.js +39 -20
- package/src/server/infrastructure/http/create-vault-api-command-handler.js +22 -46
- package/src/server/infrastructure/http/create-vault-api-query-handler.js +7 -14
- package/src/server/infrastructure/http/http-errors.js +7 -1
- package/src/server/infrastructure/http/http-request-helpers.js +23 -0
- package/src/server/infrastructure/http/http-response.js +13 -0
- package/src/server/infrastructure/persistence/vault-file-store.js +22 -60
- package/src/server/infrastructure/workspace/file-system-sync-service.js +3 -3
- package/dist/client/assets/CodeMirrorEditor-UCMRAMCV-Fb3TgxXK.js +0 -1
- package/dist/client/assets/actions-XO29hEzr.css +0 -1
- package/dist/client/assets/ar-SA-YLAB6A27-B9ogj_Jh.js +0 -8
- package/dist/client/assets/arc-DqK6O3qL.js +0 -1
- package/dist/client/assets/architecture-TIHT7OUA-BWqzHezU.js +0 -1
- package/dist/client/assets/architectureDiagram-ZJ3FMSHR-DL35gHTu.js +0 -36
- package/dist/client/assets/asciiarmor-qTkVPQu6.js +0 -1
- package/dist/client/assets/az-AZ-5JXPK2I2-C6Se5-4R.js +0 -1
- package/dist/client/assets/bases-preview-controller-CBHDzzot.js +0 -143
- package/dist/client/assets/bg-BG-NIQ2RVNG-xrf33IaO.js +0 -5
- package/dist/client/assets/bn-BD-BN65R3DE-YVZWNN-c.js +0 -3
- package/dist/client/assets/bn-IN-2YT4KVKB-YVZWNN-c.js +0 -3
- package/dist/client/assets/button-2ZnWQkWV.js +0 -1
- package/dist/client/assets/c4Diagram-LMCZKHZV-al3Umu1D.js +0 -10
- package/dist/client/assets/ca-ES-KSERGC3M-CoMtV4dM.js +0 -8
- package/dist/client/assets/channel-XzBGGMWh.js +0 -1
- package/dist/client/assets/chunk-52WLFC77-BjzXVnqm.js +0 -10
- package/dist/client/assets/chunk-6GK3VUBP-ChzWImvX.js +0 -41
- package/dist/client/assets/chunk-CJTDIR4C-DvUbqeGR.js +0 -1
- package/dist/client/assets/chunk-ICXQ74PX-DGYhuP6g.js +0 -2
- package/dist/client/assets/chunk-OGEWGWER-Xh5bvoYs.js +0 -1
- package/dist/client/assets/chunk-RYQCIY6F-Dtr3kkSR.js +0 -1
- package/dist/client/assets/chunk-VAUOI2AC-EcvKeBKU.js +0 -1
- package/dist/client/assets/chunk-WYO6CB5R-HgTPu1OL.js +0 -127
- package/dist/client/assets/classDiagram-OUVF2IWQ-vy5bnN3c.js +0 -1
- package/dist/client/assets/classDiagram-v2-EOCWNBFH-vy5bnN3c.js +0 -1
- package/dist/client/assets/clike-CVjTFI47.js +0 -1
- package/dist/client/assets/cmake-CyVbuzPu.js +0 -1
- package/dist/client/assets/coffeescript-B2pKbFk8.js +0 -1
- package/dist/client/assets/commonlisp-CcllspGY.js +0 -1
- package/dist/client/assets/controls-LYQrRFSF.css +0 -1
- package/dist/client/assets/cose-bilkent-JH36ORCC-ClqQrHIF.js +0 -1
- package/dist/client/assets/crystal-M5-qzICs.js +0 -1
- package/dist/client/assets/cs-CZ-EOMS3IHD-Bo0hDCLX.js +0 -7
- package/dist/client/assets/css-CYpP4FRV.js +0 -1
- package/dist/client/assets/cynefin-VYW2F7L2-4m18BxUG.js +0 -1
- package/dist/client/assets/cynefinDiagram-TSTJHNR4-BNlZcGFF.js +0 -62
- package/dist/client/assets/cytoscape.esm-CQFVGiJu.js +0 -321
- package/dist/client/assets/da-DK-AVL3DJQK-s5-TpkxN.js +0 -2
- package/dist/client/assets/dagre-dpRSp0QF.js +0 -1
- package/dist/client/assets/de-CH-M25HCZK4-B0r4rx6B.js +0 -7
- package/dist/client/assets/de-DE-BEN6XGXY-B0r4rx6B.js +0 -7
- package/dist/client/assets/defaultLocale-C8Fc0cco.js +0 -1
- package/dist/client/assets/diagram-WEI45ONY-C18MNAQv.js +0 -41
- package/dist/client/assets/diagram-action-icons-aa_KOv9h.js +0 -36
- package/dist/client/assets/dist-0x9D2TFD.js +0 -1
- package/dist/client/assets/dist-BA633xb4.js +0 -11
- package/dist/client/assets/dist-Bx-T__Lj.js +0 -1
- package/dist/client/assets/dist-ByYtm-FJ.js +0 -1
- package/dist/client/assets/dist-CCrwHjeP.js +0 -1
- package/dist/client/assets/dist-CHokDUN_.js +0 -1
- package/dist/client/assets/dist-CI1X-CJ2.js +0 -9
- package/dist/client/assets/dist-CPim1xdZ.js +0 -1
- package/dist/client/assets/dist-CZG184W2.js +0 -1
- package/dist/client/assets/dist-Cd1BXkVC.js +0 -1
- package/dist/client/assets/dist-CeEU6QwA.js +0 -2
- package/dist/client/assets/dist-DG2HpWvu.js +0 -1
- package/dist/client/assets/dist-DUj7Xwud.js +0 -13
- package/dist/client/assets/dist-DnbVQL2z.js +0 -1
- package/dist/client/assets/dist-QiKOmE2-.js +0 -1
- package/dist/client/assets/dist-du6QqIs42.js +0 -1
- package/dist/client/assets/dist-snK6kYA_.js +0 -1
- package/dist/client/assets/drawio-editor-Bpeofg5c.js +0 -9
- package/dist/client/assets/drawio-embed-controller-BtzURctK.js +0 -1
- package/dist/client/assets/drawioEditor-DOeuNmoO.js +0 -2
- package/dist/client/assets/editor-session-MbnP-AVK.js +0 -16
- package/dist/client/assets/el-GR-UBGIF2NW-DRoYAN8w.js +0 -7
- package/dist/client/assets/embedded-editor-base-C9roKYpW.css +0 -1
- package/dist/client/assets/en-PCJ7LJZ2-1SKiH5y3.js +0 -1
- package/dist/client/assets/es-ES-SQEM5MNY-D5EtY06q.js +0 -7
- package/dist/client/assets/eu-ES-YG5N2JAG-CZ0xKIU4.js +0 -7
- package/dist/client/assets/eventmodeling-45OFAUF4-Dp0gpjhg.js +0 -1
- package/dist/client/assets/excalidraw-editor-CN3Wpa0D.css +0 -1
- package/dist/client/assets/excalidraw-editor-DV1u6p5J.js +0 -9
- package/dist/client/assets/excalidraw-embed-controller-BKx05cjZ.js +0 -1
- package/dist/client/assets/excalidraw-embed-reconciler-DGiagExg.js +0 -1
- package/dist/client/assets/excalidraw-scene-qiXFUZvq.js +0 -176
- package/dist/client/assets/excalidrawEditor-C5Z0GfUw.js +0 -2
- package/dist/client/assets/export-page-CbIrJ_oK.js +0 -39
- package/dist/client/assets/exportDocument-6GQGZvBv.js +0 -2
- package/dist/client/assets/exportDocument-C9v-bc7I.css +0 -1
- package/dist/client/assets/fa-IR-EVNM7MAJ-olht-LEH.js +0 -9
- package/dist/client/assets/fi-FI-MW7ZEZ64-D1PIXbLy.js +0 -6
- package/dist/client/assets/file-history-view-controller-CK3oHDCT.js +0 -112
- package/dist/client/assets/flowDiagram-23GEKE2U-DgaZtMXJ.js +0 -1
- package/dist/client/assets/fr-FR-Q7ZPXBDE-B0DjjyfT.js +0 -12
- package/dist/client/assets/ganttDiagram-NO4QXBWP-DaBgmYw5.js +0 -292
- package/dist/client/assets/git-diff-view-controller-qorJ_Quo.js +0 -150
- package/dist/client/assets/git-panel-controller-CzgJWqbB.js +0 -207
- package/dist/client/assets/gitGraph-TEB2WS4Q-Do0SQOtM.js +0 -1
- package/dist/client/assets/gl-ES-O5B74VQL-DH5u_ADp.js +0 -6
- package/dist/client/assets/groovy-BC3IOsC8.js +0 -1
- package/dist/client/assets/he-IL-QGC2WXJA-BSBR1RcG.js +0 -8
- package/dist/client/assets/hi-IN-DEZ33NMQ-CorD0_d0.js +0 -3
- package/dist/client/assets/hu-HU-2ZPNVYSC-BlqNXhNG.js +0 -3
- package/dist/client/assets/id-ID-W65WM5EO-SkLgeJLx.js +0 -8
- package/dist/client/assets/image-QEDDDPDB-DtzL4Wgr.js +0 -1
- package/dist/client/assets/image-blob-reduce.esm-DLFdRAwc.js +0 -2
- package/dist/client/assets/index-BakyykHU.css +0 -1
- package/dist/client/assets/index-CvubXIUU.js +0 -2
- package/dist/client/assets/info-DKCQHKI2-DIc7uC4I.js +0 -1
- package/dist/client/assets/init-D6jRqBbL.js +0 -1
- package/dist/client/assets/input-CXk9Zxz9.js +0 -1
- package/dist/client/assets/inter-cyrillic-ext-wght-normal-BOeWTOD4.woff2 +0 -0
- package/dist/client/assets/inter-cyrillic-wght-normal-DqGufNeO.woff2 +0 -0
- package/dist/client/assets/inter-greek-ext-wght-normal-DlzME5K_.woff2 +0 -0
- package/dist/client/assets/inter-greek-wght-normal-CkhJZR-_.woff2 +0 -0
- package/dist/client/assets/inter-latin-ext-wght-normal-DO1Apj_S.woff2 +0 -0
- package/dist/client/assets/inter-latin-wght-normal-Dx4kXJAl.woff2 +0 -0
- package/dist/client/assets/inter-vietnamese-wght-normal-CBcvBZtf.woff2 +0 -0
- package/dist/client/assets/it-IT-GAWJM2XW-CDZugsE0.js +0 -12
- package/dist/client/assets/ja-JP-FOAUPTH5-DkKXnwj8.js +0 -12
- package/dist/client/assets/javascript-B9TABJff.js +0 -1
- package/dist/client/assets/javascript-BRzqD9BA.js +0 -1
- package/dist/client/assets/jetbrains-mono-cyrillic-400-normal-BEIGL1Tu.woff2 +0 -0
- package/dist/client/assets/jetbrains-mono-cyrillic-400-normal-ugxPyKxw.woff +0 -0
- package/dist/client/assets/jetbrains-mono-greek-400-normal-B9oWc5Lo.woff +0 -0
- package/dist/client/assets/jetbrains-mono-greek-400-normal-C190GLew.woff2 +0 -0
- package/dist/client/assets/jetbrains-mono-latin-400-normal-6-qcROiO.woff +0 -0
- package/dist/client/assets/jetbrains-mono-latin-400-normal-V6pRDFza.woff2 +0 -0
- package/dist/client/assets/jetbrains-mono-latin-ext-400-normal-Bc8Ftmh3.woff2 +0 -0
- package/dist/client/assets/jetbrains-mono-latin-ext-400-normal-fXTG6kC5.woff +0 -0
- package/dist/client/assets/jetbrains-mono-vietnamese-400-normal-CqNFfHCs.woff +0 -0
- package/dist/client/assets/jsx-runtime-DKdBMi_L.js +0 -1
- package/dist/client/assets/kaa-UEDB54S7-C0Sv0drM.js +0 -1
- package/dist/client/assets/kab-KAB-CTLMBVE3-QfxUgzL5.js +0 -4
- package/dist/client/assets/keyboard-shortcuts-C5LvVwoE.js +0 -1
- package/dist/client/assets/kk-KZ-XZK63ADD-CMZObxxP.js +0 -1
- package/dist/client/assets/ko-KR-YNTPN6WQ-DPBaHnwT.js +0 -5
- package/dist/client/assets/ku-TR-XUD5BUEU-75pMUQoD.js +0 -6
- package/dist/client/assets/linear-DhAcoVP9.js +0 -1
- package/dist/client/assets/lt-LT-LYCDYH7O-BeKUsKuy.js +0 -3
- package/dist/client/assets/lv-LV-7ROPDEEI-CrA6QOtq.js +0 -4
- package/dist/client/assets/main-CKWxzJUx.js +0 -807
- package/dist/client/assets/mermaid-runtime-2fJoRo49.js +0 -11
- package/dist/client/assets/mr-IN-TU6BXRKP-mIvXG0bt.js +0 -9
- package/dist/client/assets/my-MM-SJ3RWIEQ-CeEN5n4z.js +0 -1
- package/dist/client/assets/navigation-CoTUJ5Pi.css +0 -1
- package/dist/client/assets/nb-NO-GONF2AKR-IChp6OiI.js +0 -8
- package/dist/client/assets/nl-NL-UZF6UEKB-DfPPXXjo.js +0 -13
- package/dist/client/assets/nn-NO-ZVFRXEEO-BtpjNSGp.js +0 -4
- package/dist/client/assets/oc-FR-MBF2Z56W-CBl14QBM.js +0 -4
- package/dist/client/assets/pa-IN-3JCDVKKL-D95A1XFb.js +0 -4
- package/dist/client/assets/packet-7NZHBO7P-D2duWGIK.js +0 -1
- package/dist/client/assets/path-BWPyau1x.js +0 -1
- package/dist/client/assets/percentages-WBIPKLEE-bhlTAhiB.js +0 -1
- package/dist/client/assets/perl-CdEHsPfU.js +0 -1
- package/dist/client/assets/pie-RZYD4A2V-CynqTUkZ.js +0 -1
- package/dist/client/assets/preview-diagram-utils-BPaXsmlV.js +0 -1
- package/dist/client/assets/preview-render-compiler-C8wbmTyE.js +0 -1
- package/dist/client/assets/preview-render-compiler-CrQBxqqa.js +0 -35
- package/dist/client/assets/preview-render-profile-C89_PyT3.js +0 -23
- package/dist/client/assets/preview-render-worker-D84F1vpn.js +0 -59
- package/dist/client/assets/pt-BR-W4AF5QMX-DIJs8D4M.js +0 -6
- package/dist/client/assets/pt-PT-GNPUWAHX-BopN284Y.js +0 -8
- package/dist/client/assets/puppet-B4hC2X4m.js +0 -1
- package/dist/client/assets/python-2zlmcyof.js +0 -1
- package/dist/client/assets/quick-switcher-controller-CVRUPEKp.js +0 -12
- package/dist/client/assets/r-DADKenSm.js +0 -1
- package/dist/client/assets/radar-I7S5WNFK-fIKE12aT.js +0 -1
- package/dist/client/assets/railroad-3IZDKUUU-Bgx8HJTj.js +0 -1
- package/dist/client/assets/railroad-abnf-AHOZXSZD-Nh6k60mH.js +0 -1
- package/dist/client/assets/railroad-ebnf-EBAXGLYW-C74h3s_I.js +0 -1
- package/dist/client/assets/railroad-peg-LSFZ7HO6-0hT-lN-u.js +0 -1
- package/dist/client/assets/ro-RO-DXHP33S5-PGxfl-ng.js +0 -12
- package/dist/client/assets/rolldown-runtime-aKtaBQYM.js +0 -1
- package/dist/client/assets/ru-RU-TTW2P7NF-Dwnn0sc5.js +0 -10
- package/dist/client/assets/ruby-DsYpTuWg.js +0 -1
- package/dist/client/assets/runtime-config-CDgeuPWN.js +0 -1
- package/dist/client/assets/runtime-config-loader-BUK56BZz.js +0 -1
- package/dist/client/assets/runtime-paths-DvpihCEq.js +0 -1
- package/dist/client/assets/segmented-control-DhUkW6ro.js +0 -1
- package/dist/client/assets/sequenceDiagram-DBY2YBRQ-DonUqDnp.js +0 -162
- package/dist/client/assets/si-LK-BE6O7LVF-QO9nybVB.js +0 -1
- package/dist/client/assets/sk-SK-OI3KJLWQ-BAKIEIig.js +0 -7
- package/dist/client/assets/sl-SI-HF74RBGV-CnS5z7V_.js +0 -6
- package/dist/client/assets/sql-DcCJ9jop.js +0 -1
- package/dist/client/assets/src-UMNXGZaF.js +0 -1
- package/dist/client/assets/stateDiagram-v2-6OUMAXLB-C4YrlXQg.js +0 -1
- package/dist/client/assets/states-DYMshUe2.css +0 -1
- package/dist/client/assets/subset-shared.chunk-D3olxosN.js +0 -1
- package/dist/client/assets/sv-SE-TXR2SQGA-CNgv7xeJ.js +0 -8
- package/dist/client/assets/swimlanes-5IMT3BWC-DP1GREXh.js +0 -2
- package/dist/client/assets/swimlanesDiagram-G3AALYLV-CN_iOXin.js +0 -8
- package/dist/client/assets/ta-IN-Y2DOZGBR-DYzsfax7.js +0 -6
- package/dist/client/assets/th-TH-JUAISFQR-BAZHUCM7.js +0 -1
- package/dist/client/assets/tiki-CxVlf5KZ.js +0 -1
- package/dist/client/assets/timeline-definition-FHXFAJF6-C-QK9sME.js +0 -120
- package/dist/client/assets/toml-LvoKBwCs.js +0 -1
- package/dist/client/assets/tr-TR-U3HGKQXH-DTYupb_4.js +0 -4
- package/dist/client/assets/treeView-QDETBFTQ-CygwzEgj.js +0 -1
- package/dist/client/assets/treemap-6X3UGDF4-BbCXbaXr.js +0 -1
- package/dist/client/assets/uk-UA-FP2TKAFK-Bcxd6wgd.js +0 -6
- package/dist/client/assets/uz-UZ-WY5QKWXJ-B5N6xPud.js +0 -1
- package/dist/client/assets/vault-api-client-BPVNCJZC.js +0 -1
- package/dist/client/assets/vault-api-client-VAfZ8okg.js +0 -1
- package/dist/client/assets/vault-utils-kIbqyWPm.js +0 -1
- package/dist/client/assets/vi-VN-DE5I4H6K-BdlcTH5l.js +0 -7
- package/dist/client/assets/wardley-OPB4EBWU-BjXxCRf_.js +0 -1
- package/dist/client/assets/yjs-provider-reset-guard-DSfwdXS9.js +0 -4
- package/dist/client/assets/z80-CL1naaMV.js +0 -1
- package/dist/client/assets/zh-CN-VWHOHS7G-b12eD2L4.js +0 -11
- package/dist/client/assets/zh-HK-KQF7FW7H-Bvr6xExo.js +0 -1
- package/dist/client/assets/zh-TW-6VHVWZKW-B-KCOPyt.js +0 -13
- package/server.js +0 -1
- package/src/client/application/app-shell/ui-feature.js +0 -13
- package/src/client/application/file-open-lifecycle.js +0 -26
- package/src/client/application/workspace-chrome-controller.js +0 -109
- package/src/client/application/workspace-state-store.js +0 -48
- package/src/client/bootstrap/app-shell-feature-surface.js +0 -67
- package/src/client/bootstrap/lazy-controller-feature.js +0 -434
- package/src/client/domain/excalidraw-document-switch.js +0 -3
- package/src/client/domain/vault-api-client.js +0 -1
- package/src/client/domain/workspace-request-id.js +0 -7
- package/src/client/infrastructure/backlinks-api-client.js +0 -18
- package/src/client/infrastructure/browser-navigation-port.js +0 -39
- package/src/client/infrastructure/plantuml-api-client.js +0 -21
- package/src/client/infrastructure/runtime-config-loader.js +0 -56
- package/src/client/mermaid-runtime.js +0 -3
- package/src/client/presentation/app-shell-renderer.js +0 -13
- package/src/client/presentation/app-shell-template.js +0 -669
- package/src/client/presentation/comments-panel.js +0 -578
- package/src/client/presentation/components/ui/badge.js +0 -24
- package/src/client/presentation/components/ui/ensure-ui-component-styles.js +0 -18
- package/src/client/presentation/components/ui/input.js +0 -9
- package/src/client/styles/features/collaboration-ui.css +0 -3
- package/src/client/styles/features/comments.css +0 -5
- package/src/client/styles/features/diff.css +0 -3
- package/src/client/styles/features/git.css +0 -3
- package/src/client/styles/features/preview-content.css +0 -3
- package/src/client/styles/features/preview-sidebars.css +0 -2
- package/src/client/styles/overrides/vendor.css +0 -2
- package/src/server/domain/collaboration/room-client-state-store.js +0 -29
- package/src/server/domain/git-service.js +0 -1
- package/src/server/domain/plantuml-renderer.js +0 -1
- package/src/server/index.js +0 -74
- package/src/server/infrastructure/git/command-runner.js +0 -49
- package/src/server/infrastructure/git/concurrency.js +0 -19
- package/src/server/infrastructure/git/errors.js +0 -8
- package/src/server/infrastructure/http/create-esm-proxy-handler.js +0 -130
- package/src/server/infrastructure/http/create-git-api-handler.js +0 -44
- package/src/server/infrastructure/http/create-vault-api-handler.js +0 -54
- package/src/server/infrastructure/persistence/vault-content-adapter.js +0 -61
- package/src/server/infrastructure/workspace/workspace-mutation-coordinator.js +0 -20
- /package/dist/client/assets/{keyboard-shortcuts-C3mlS_4N.css → vault-api-client-C3mlS_4N.css} +0 -0
|
@@ -1,16 +1,11 @@
|
|
|
1
1
|
import { createSign } from 'node:crypto';
|
|
2
2
|
|
|
3
|
+
import { createRequestError } from '../http/http-errors.js';
|
|
4
|
+
|
|
3
5
|
function base64UrlJson(value) {
|
|
4
6
|
return Buffer.from(JSON.stringify(value)).toString('base64url');
|
|
5
7
|
}
|
|
6
8
|
|
|
7
|
-
function createRequestError(statusCode, message, code) {
|
|
8
|
-
const error = new Error(message);
|
|
9
|
-
error.statusCode = statusCode;
|
|
10
|
-
error.code = code;
|
|
11
|
-
return error;
|
|
12
|
-
}
|
|
13
|
-
|
|
14
9
|
function normalizeBaseUrl(value) {
|
|
15
10
|
return String(value ?? 'https://api.github.com').trim().replace(/\/+$/u, '') || 'https://api.github.com';
|
|
16
11
|
}
|
|
@@ -80,7 +75,9 @@ export class GitHubAppClient {
|
|
|
80
75
|
|
|
81
76
|
createAppJwt() {
|
|
82
77
|
if (!this.isConfigured()) {
|
|
83
|
-
throw createRequestError(503, 'GitHub App setup is not configured.',
|
|
78
|
+
throw createRequestError(503, 'GitHub App setup is not configured.', {
|
|
79
|
+
code: 'HOSTED_GITHUB_APP_NOT_CONFIGURED',
|
|
80
|
+
});
|
|
84
81
|
}
|
|
85
82
|
|
|
86
83
|
return createGitHubAppJwt({
|
|
@@ -91,7 +88,9 @@ export class GitHubAppClient {
|
|
|
91
88
|
|
|
92
89
|
createInstallationSetupUrl({ state } = {}) {
|
|
93
90
|
if (!this.appSlug) {
|
|
94
|
-
throw createRequestError(503, 'GitHub App slug is not configured.',
|
|
91
|
+
throw createRequestError(503, 'GitHub App slug is not configured.', {
|
|
92
|
+
code: 'HOSTED_GITHUB_APP_NOT_CONFIGURED',
|
|
93
|
+
});
|
|
95
94
|
}
|
|
96
95
|
|
|
97
96
|
const setupUrl = new URL(`/apps/${encodeURIComponent(this.appSlug)}/installations/new`, this.htmlBaseUrl);
|
|
@@ -131,7 +130,7 @@ export class GitHubAppClient {
|
|
|
131
130
|
throw createRequestError(
|
|
132
131
|
response.status,
|
|
133
132
|
payload?.message || 'GitHub API request failed.',
|
|
134
|
-
'HOSTED_GITHUB_API_FAILED',
|
|
133
|
+
{ code: 'HOSTED_GITHUB_API_FAILED' },
|
|
135
134
|
);
|
|
136
135
|
}
|
|
137
136
|
|
|
@@ -141,7 +140,9 @@ export class GitHubAppClient {
|
|
|
141
140
|
async createInstallationAccessToken(installationId, { appJwt = null } = {}) {
|
|
142
141
|
const normalizedInstallationId = String(installationId ?? '').trim();
|
|
143
142
|
if (!normalizedInstallationId) {
|
|
144
|
-
throw createRequestError(400, 'GitHub installation id is required.',
|
|
143
|
+
throw createRequestError(400, 'GitHub installation id is required.', {
|
|
144
|
+
code: 'HOSTED_GITHUB_INSTALLATION_REQUIRED',
|
|
145
|
+
});
|
|
145
146
|
}
|
|
146
147
|
|
|
147
148
|
const payload = await this.request(`/app/installations/${encodeURIComponent(normalizedInstallationId)}/access_tokens`, {
|
|
@@ -150,7 +151,9 @@ export class GitHubAppClient {
|
|
|
150
151
|
});
|
|
151
152
|
const token = String(payload?.token ?? '').trim();
|
|
152
153
|
if (!token) {
|
|
153
|
-
throw createRequestError(502, 'GitHub did not return an installation access token.',
|
|
154
|
+
throw createRequestError(502, 'GitHub did not return an installation access token.', {
|
|
155
|
+
code: 'HOSTED_GITHUB_TOKEN_MISSING',
|
|
156
|
+
});
|
|
154
157
|
}
|
|
155
158
|
return token;
|
|
156
159
|
}
|
|
@@ -158,7 +161,9 @@ export class GitHubAppClient {
|
|
|
158
161
|
async getInstallation(installationId, { appJwt = null } = {}) {
|
|
159
162
|
const normalizedInstallationId = String(installationId ?? '').trim();
|
|
160
163
|
if (!normalizedInstallationId) {
|
|
161
|
-
throw createRequestError(400, 'GitHub installation id is required.',
|
|
164
|
+
throw createRequestError(400, 'GitHub installation id is required.', {
|
|
165
|
+
code: 'HOSTED_GITHUB_INSTALLATION_REQUIRED',
|
|
166
|
+
});
|
|
162
167
|
}
|
|
163
168
|
|
|
164
169
|
return this.request(`/app/installations/${encodeURIComponent(normalizedInstallationId)}`, {
|
|
@@ -176,7 +181,9 @@ export class GitHubAppClient {
|
|
|
176
181
|
async resolveVaultSourceFromInstallation(installationId) {
|
|
177
182
|
const normalizedInstallationId = String(installationId ?? '').trim();
|
|
178
183
|
if (!normalizedInstallationId) {
|
|
179
|
-
throw createRequestError(400, 'GitHub installation id is required.',
|
|
184
|
+
throw createRequestError(400, 'GitHub installation id is required.', {
|
|
185
|
+
code: 'HOSTED_GITHUB_INSTALLATION_REQUIRED',
|
|
186
|
+
});
|
|
180
187
|
}
|
|
181
188
|
|
|
182
189
|
const appJwt = this.createAppJwt();
|
|
@@ -189,7 +196,7 @@ export class GitHubAppClient {
|
|
|
189
196
|
throw createRequestError(
|
|
190
197
|
409,
|
|
191
198
|
'GitHub App installation must grant access to exactly one selected repository.',
|
|
192
|
-
'HOSTED_GITHUB_REPOSITORY_SELECTION_REQUIRED',
|
|
199
|
+
{ code: 'HOSTED_GITHUB_REPOSITORY_SELECTION_REQUIRED' },
|
|
193
200
|
);
|
|
194
201
|
}
|
|
195
202
|
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { handleApiError, readRequestId } from './http-request-helpers.js';
|
|
2
2
|
import { jsonResponse } from './http-response.js';
|
|
3
3
|
import { parseJsonBody } from './request-body.js';
|
|
4
4
|
import { createEmptyWorkspaceChange, hasWorkspaceMutation } from '../../../domain/workspace-change.js';
|
|
@@ -13,27 +13,6 @@ async function parseRequiredBody(req, res, fieldName) {
|
|
|
13
13
|
return body;
|
|
14
14
|
}
|
|
15
15
|
|
|
16
|
-
function handleGitError(req, res, error, logMessage, fallbackMessage) {
|
|
17
|
-
const statusCode = getRequestErrorStatusCode(error);
|
|
18
|
-
if (statusCode) {
|
|
19
|
-
const payload = { error: error.message };
|
|
20
|
-
if (typeof error?.requestCode === 'string') {
|
|
21
|
-
payload.code = error.requestCode;
|
|
22
|
-
}
|
|
23
|
-
jsonResponse(req, res, statusCode, payload);
|
|
24
|
-
return true;
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
console.error(logMessage, error.message);
|
|
28
|
-
jsonResponse(req, res, 500, { error: fallbackMessage });
|
|
29
|
-
return true;
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
function readRequestId(req) {
|
|
33
|
-
const value = String(req.headers['x-collabmd-request-id'] || '').trim();
|
|
34
|
-
return value ? value.slice(0, 120) : null;
|
|
35
|
-
}
|
|
36
|
-
|
|
37
16
|
async function applyWorkspaceMutationEffects({
|
|
38
17
|
action,
|
|
39
18
|
req,
|
|
@@ -79,7 +58,7 @@ export function createGitApiCommandHandler({
|
|
|
79
58
|
workspaceMutationCoordinator,
|
|
80
59
|
}));
|
|
81
60
|
} catch (error) {
|
|
82
|
-
|
|
61
|
+
handleApiError(req, res, error, '[api] Failed to stage git file:', 'Failed to stage git file');
|
|
83
62
|
}
|
|
84
63
|
return true;
|
|
85
64
|
}
|
|
@@ -100,7 +79,7 @@ export function createGitApiCommandHandler({
|
|
|
100
79
|
workspaceMutationCoordinator,
|
|
101
80
|
}));
|
|
102
81
|
} catch (error) {
|
|
103
|
-
|
|
82
|
+
handleApiError(req, res, error, '[api] Failed to unstage git file:', 'Failed to unstage git file');
|
|
104
83
|
}
|
|
105
84
|
return true;
|
|
106
85
|
}
|
|
@@ -124,7 +103,7 @@ export function createGitApiCommandHandler({
|
|
|
124
103
|
workspaceMutationCoordinator,
|
|
125
104
|
}));
|
|
126
105
|
} catch (error) {
|
|
127
|
-
|
|
106
|
+
handleApiError(req, res, error, '[api] Failed to commit staged changes:', 'Failed to commit staged changes');
|
|
128
107
|
}
|
|
129
108
|
return true;
|
|
130
109
|
}
|
|
@@ -140,7 +119,7 @@ export function createGitApiCommandHandler({
|
|
|
140
119
|
workspaceMutationCoordinator,
|
|
141
120
|
}));
|
|
142
121
|
} catch (error) {
|
|
143
|
-
|
|
122
|
+
handleApiError(req, res, error, '[api] Failed to push git branch:', 'Failed to push git branch');
|
|
144
123
|
}
|
|
145
124
|
return true;
|
|
146
125
|
}
|
|
@@ -156,7 +135,7 @@ export function createGitApiCommandHandler({
|
|
|
156
135
|
workspaceMutationCoordinator,
|
|
157
136
|
}));
|
|
158
137
|
} catch (error) {
|
|
159
|
-
|
|
138
|
+
handleApiError(req, res, error, '[api] Failed to pull git branch:', 'Failed to pull git branch');
|
|
160
139
|
}
|
|
161
140
|
return true;
|
|
162
141
|
}
|
|
@@ -177,7 +156,7 @@ export function createGitApiCommandHandler({
|
|
|
177
156
|
workspaceMutationCoordinator,
|
|
178
157
|
}));
|
|
179
158
|
} catch (error) {
|
|
180
|
-
|
|
159
|
+
handleApiError(req, res, error, '[api] Failed to reset git file:', 'Failed to reset git file');
|
|
181
160
|
}
|
|
182
161
|
return true;
|
|
183
162
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { handleApiError } from './http-request-helpers.js';
|
|
2
2
|
import { jsonResponse } from './http-response.js';
|
|
3
3
|
|
|
4
4
|
function resolveDiffScope(requestUrl) {
|
|
@@ -28,22 +28,6 @@ function readHistoryOffset(value) {
|
|
|
28
28
|
return Number.isFinite(parsed) ? parsed : 0;
|
|
29
29
|
}
|
|
30
30
|
|
|
31
|
-
function handleGitError(req, res, error, message, fallback) {
|
|
32
|
-
const statusCode = getRequestErrorStatusCode(error);
|
|
33
|
-
if (statusCode) {
|
|
34
|
-
const payload = { error: error.message };
|
|
35
|
-
if (typeof error?.requestCode === 'string') {
|
|
36
|
-
payload.code = error.requestCode;
|
|
37
|
-
}
|
|
38
|
-
jsonResponse(req, res, statusCode, payload);
|
|
39
|
-
return true;
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
console.error(message, error.message);
|
|
43
|
-
jsonResponse(req, res, 500, { error: fallback });
|
|
44
|
-
return true;
|
|
45
|
-
}
|
|
46
|
-
|
|
47
31
|
export function createGitApiQueryHandler({ gitService }) {
|
|
48
32
|
return async function handleGitApiQuery(req, res, requestUrl) {
|
|
49
33
|
if (requestUrl.pathname === '/api/git/status' && req.method === 'GET') {
|
|
@@ -52,7 +36,7 @@ export function createGitApiQueryHandler({ gitService }) {
|
|
|
52
36
|
force: isTruthyParam(requestUrl.searchParams.get('force')),
|
|
53
37
|
}));
|
|
54
38
|
} catch (error) {
|
|
55
|
-
|
|
39
|
+
handleApiError(req, res, error, '[api] Failed to read git status:', 'Failed to read git status');
|
|
56
40
|
}
|
|
57
41
|
return true;
|
|
58
42
|
}
|
|
@@ -66,7 +50,7 @@ export function createGitApiQueryHandler({ gitService }) {
|
|
|
66
50
|
scope: resolveDiffScope(requestUrl),
|
|
67
51
|
}));
|
|
68
52
|
} catch (error) {
|
|
69
|
-
|
|
53
|
+
handleApiError(req, res, error, '[api] Failed to read git diff:', 'Failed to read git diff');
|
|
70
54
|
}
|
|
71
55
|
return true;
|
|
72
56
|
}
|
|
@@ -78,7 +62,7 @@ export function createGitApiQueryHandler({ gitService }) {
|
|
|
78
62
|
offset: readHistoryOffset(requestUrl.searchParams.get('offset')),
|
|
79
63
|
}));
|
|
80
64
|
} catch (error) {
|
|
81
|
-
|
|
65
|
+
handleApiError(req, res, error, '[api] Failed to read git history:', 'Failed to read git history');
|
|
82
66
|
}
|
|
83
67
|
return true;
|
|
84
68
|
}
|
|
@@ -91,7 +75,7 @@ export function createGitApiQueryHandler({ gitService }) {
|
|
|
91
75
|
path: requestUrl.searchParams.get('path'),
|
|
92
76
|
}));
|
|
93
77
|
} catch (error) {
|
|
94
|
-
|
|
78
|
+
handleApiError(req, res, error, '[api] Failed to read git file history:', 'Failed to read git file history');
|
|
95
79
|
}
|
|
96
80
|
return true;
|
|
97
81
|
}
|
|
@@ -105,7 +89,7 @@ export function createGitApiQueryHandler({ gitService }) {
|
|
|
105
89
|
path: requestUrl.searchParams.get('path'),
|
|
106
90
|
}));
|
|
107
91
|
} catch (error) {
|
|
108
|
-
|
|
92
|
+
handleApiError(req, res, error, '[api] Failed to read git commit:', 'Failed to read git commit');
|
|
109
93
|
}
|
|
110
94
|
return true;
|
|
111
95
|
}
|
|
@@ -117,7 +101,7 @@ export function createGitApiQueryHandler({ gitService }) {
|
|
|
117
101
|
path: requestUrl.searchParams.get('path'),
|
|
118
102
|
}));
|
|
119
103
|
} catch (error) {
|
|
120
|
-
|
|
104
|
+
handleApiError(req, res, error, '[api] Failed to read git file snapshot:', 'Failed to read git file snapshot');
|
|
121
105
|
}
|
|
122
106
|
return true;
|
|
123
107
|
}
|
|
@@ -128,7 +112,7 @@ export function createGitApiQueryHandler({ gitService }) {
|
|
|
128
112
|
backups: await gitService.listPullBackups(),
|
|
129
113
|
});
|
|
130
114
|
} catch (error) {
|
|
131
|
-
|
|
115
|
+
handleApiError(req, res, error, '[api] Failed to read pull backups:', 'Failed to read pull backups');
|
|
132
116
|
}
|
|
133
117
|
return true;
|
|
134
118
|
}
|
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
import { createAuthApiHandler } from './create-auth-api-handler.js';
|
|
2
|
-
import {
|
|
2
|
+
import { createGitApiCommandHandler } from './create-git-api-command-handler.js';
|
|
3
|
+
import { createGitApiQueryHandler } from './create-git-api-query-handler.js';
|
|
3
4
|
import { createHostedApiHandler } from './create-hosted-api-handler.js';
|
|
4
|
-
import {
|
|
5
|
+
import { createPlantUmlApiHandler } from './create-plantuml-api-handler.js';
|
|
5
6
|
import { createStaticHandler } from './create-static-handler.js';
|
|
6
|
-
import {
|
|
7
|
+
import { createVaultApiCommandHandler } from './create-vault-api-command-handler.js';
|
|
8
|
+
import { createVaultApiQueryHandler } from './create-vault-api-query-handler.js';
|
|
7
9
|
import { parseJsonBody } from './request-body.js';
|
|
8
10
|
import {
|
|
9
11
|
applyCorsHeaders,
|
|
@@ -42,7 +44,7 @@ export function createRequestHandler(
|
|
|
42
44
|
vaultFileStore,
|
|
43
45
|
backlinkIndex,
|
|
44
46
|
baseQueryService = null,
|
|
45
|
-
|
|
47
|
+
renderDocx = null,
|
|
46
48
|
roomRegistry = null,
|
|
47
49
|
plantUmlRenderer = null,
|
|
48
50
|
gitService = null,
|
|
@@ -53,7 +55,6 @@ export function createRequestHandler(
|
|
|
53
55
|
hostedWorkspaceService = null,
|
|
54
56
|
githubSetupFlow = null,
|
|
55
57
|
) {
|
|
56
|
-
const handleEsmProxy = createEsmProxyHandler();
|
|
57
58
|
const handleStaticRequest = createStaticHandler(config, authService, searchService);
|
|
58
59
|
const handleAuthApi = createAuthApiHandler({ authService });
|
|
59
60
|
const handleHostedApi = createHostedApiHandler({
|
|
@@ -61,25 +62,28 @@ export function createRequestHandler(
|
|
|
61
62
|
githubSetupFlow,
|
|
62
63
|
hostedWorkspaceService,
|
|
63
64
|
});
|
|
64
|
-
const
|
|
65
|
+
const handleGitApiQuery = createGitApiQueryHandler({ gitService });
|
|
66
|
+
const handleGitApiCommand = createGitApiCommandHandler({
|
|
65
67
|
authService,
|
|
66
|
-
backlinkIndex,
|
|
67
68
|
gitService,
|
|
68
|
-
roomRegistry,
|
|
69
|
-
vaultFileStore,
|
|
70
69
|
workspaceMutationCoordinator,
|
|
71
70
|
});
|
|
72
|
-
const
|
|
71
|
+
const handleVaultApiQuery = createVaultApiQueryHandler({
|
|
73
72
|
baseQueryService,
|
|
74
73
|
backlinkIndex,
|
|
75
74
|
config,
|
|
76
|
-
docxExporter,
|
|
77
|
-
plantUmlRenderer,
|
|
78
|
-
roomRegistry,
|
|
79
75
|
searchService,
|
|
80
76
|
vaultFileStore,
|
|
81
77
|
workspaceMutationCoordinator,
|
|
82
78
|
});
|
|
79
|
+
const handleVaultApiCommand = createVaultApiCommandHandler({
|
|
80
|
+
backlinkIndex,
|
|
81
|
+
renderDocx,
|
|
82
|
+
roomRegistry,
|
|
83
|
+
vaultFileStore,
|
|
84
|
+
workspaceMutationCoordinator,
|
|
85
|
+
});
|
|
86
|
+
const handlePlantUmlApi = createPlantUmlApiHandler({ plantUmlRenderer });
|
|
83
87
|
|
|
84
88
|
function handleBasePathRedirect(req, res, originalRequestUrl) {
|
|
85
89
|
if (
|
|
@@ -189,10 +193,6 @@ export function createRequestHandler(
|
|
|
189
193
|
return;
|
|
190
194
|
}
|
|
191
195
|
|
|
192
|
-
if (await handleEsmProxy(req, res, requestUrl)) {
|
|
193
|
-
return;
|
|
194
|
-
}
|
|
195
|
-
|
|
196
196
|
if (requestUrl.pathname.startsWith('/api/')) {
|
|
197
197
|
const authorization = authService.authorizeApiRequest(req);
|
|
198
198
|
if (!authorization.ok) {
|
|
@@ -209,11 +209,30 @@ export function createRequestHandler(
|
|
|
209
209
|
}
|
|
210
210
|
}
|
|
211
211
|
|
|
212
|
-
if (
|
|
213
|
-
|
|
212
|
+
if (requestUrl.pathname.startsWith('/api/')) {
|
|
213
|
+
if (await handleVaultApiQuery(req, res, requestUrl)) {
|
|
214
|
+
return;
|
|
215
|
+
}
|
|
216
|
+
if (await handleVaultApiCommand(req, res, requestUrl)) {
|
|
217
|
+
return;
|
|
218
|
+
}
|
|
219
|
+
if (await handlePlantUmlApi(req, res, requestUrl)) {
|
|
220
|
+
return;
|
|
221
|
+
}
|
|
214
222
|
}
|
|
215
223
|
|
|
216
|
-
if (
|
|
224
|
+
if (requestUrl.pathname.startsWith('/api/git')) {
|
|
225
|
+
if (!gitService) {
|
|
226
|
+
jsonResponse(req, res, 503, { error: 'Git integration is not configured' });
|
|
227
|
+
return;
|
|
228
|
+
}
|
|
229
|
+
if (await handleGitApiQuery(req, res, requestUrl)) {
|
|
230
|
+
return;
|
|
231
|
+
}
|
|
232
|
+
if (await handleGitApiCommand(req, res, requestUrl)) {
|
|
233
|
+
return;
|
|
234
|
+
}
|
|
235
|
+
jsonResponse(req, res, 404, { error: 'Git API endpoint not found' });
|
|
217
236
|
return;
|
|
218
237
|
}
|
|
219
238
|
|
|
@@ -1,30 +1,23 @@
|
|
|
1
1
|
import { basename } from 'node:path';
|
|
2
|
-
import { createRequestError
|
|
3
|
-
import {
|
|
2
|
+
import { createRequestError } from './http-errors.js';
|
|
3
|
+
import { handleApiError, readRequestId } from './http-request-helpers.js';
|
|
4
|
+
import {
|
|
5
|
+
createSafeAsciiFilename,
|
|
6
|
+
encodeContentDispositionFilename,
|
|
7
|
+
jsonResponse,
|
|
8
|
+
sendResponse,
|
|
9
|
+
} from './http-response.js';
|
|
4
10
|
import { parseJsonBody, readBinaryRequestBody } from './request-body.js';
|
|
5
11
|
|
|
6
12
|
const DOCX_EXPORT_REQUEST_LIMIT_BYTES = 33_554_432;
|
|
7
13
|
const DOCX_MIME_TYPE = 'application/vnd.openxmlformats-officedocument.wordprocessingml.document';
|
|
8
14
|
|
|
9
|
-
function encodeContentDispositionFilename(fileName) {
|
|
10
|
-
return encodeURIComponent(String(fileName ?? ''))
|
|
11
|
-
.replace(/['()*]/g, (character) => `%${character.charCodeAt(0).toString(16).toUpperCase()}`);
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
function createSafeAsciiFilename(fileName) {
|
|
15
|
-
const fallback = String(fileName ?? '')
|
|
16
|
-
.replace(/[^\x20-\x7E]+/g, '_')
|
|
17
|
-
.replace(/["\\]/g, '_')
|
|
18
|
-
.trim();
|
|
19
|
-
return fallback || 'document';
|
|
20
|
-
}
|
|
21
|
-
|
|
22
15
|
function createDocxDownloadHeaders(filePath) {
|
|
23
16
|
const fileName = basename(String(filePath ?? 'document')).replace(/\.[^.]+$/u, '') || 'document';
|
|
24
17
|
const exportFileName = `${fileName}.docx`;
|
|
25
18
|
return {
|
|
26
19
|
'Cache-Control': 'no-store',
|
|
27
|
-
'Content-Disposition': `attachment; filename="${createSafeAsciiFilename(exportFileName)}"; filename*=UTF-8''${encodeContentDispositionFilename(exportFileName)}`,
|
|
20
|
+
'Content-Disposition': `attachment; filename="${createSafeAsciiFilename(exportFileName, 'document')}"; filename*=UTF-8''${encodeContentDispositionFilename(exportFileName)}`,
|
|
28
21
|
'Content-Type': DOCX_MIME_TYPE,
|
|
29
22
|
'X-Content-Type-Options': 'nosniff',
|
|
30
23
|
};
|
|
@@ -43,28 +36,11 @@ function decodeHeaderMetadata(value) {
|
|
|
43
36
|
}
|
|
44
37
|
}
|
|
45
38
|
|
|
46
|
-
function readRequestId(req) {
|
|
47
|
-
const value = String(req.headers['x-collabmd-request-id'] || '').trim();
|
|
48
|
-
return value ? value.slice(0, 120) : null;
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
function handleVaultError(req, res, error, logMessage, fallbackMessage) {
|
|
52
|
-
const statusCode = getRequestErrorStatusCode(error);
|
|
53
|
-
if (statusCode) {
|
|
54
|
-
jsonResponse(req, res, statusCode, { error: error.message });
|
|
55
|
-
return true;
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
console.error(logMessage, error.message);
|
|
59
|
-
jsonResponse(req, res, 500, { error: fallbackMessage });
|
|
60
|
-
return true;
|
|
61
|
-
}
|
|
62
|
-
|
|
63
39
|
function getDirectoryDeleteStatusCode(message = '') {
|
|
64
40
|
return String(message).includes('Directory is not empty') ? 409 : 400;
|
|
65
41
|
}
|
|
66
42
|
|
|
67
|
-
async function handleExportDocx({
|
|
43
|
+
async function handleExportDocx({ renderDocx }, req, res) {
|
|
68
44
|
try {
|
|
69
45
|
const body = await parseJsonBody(req, DOCX_EXPORT_REQUEST_LIMIT_BYTES);
|
|
70
46
|
if (!body?.filePath || typeof body?.html !== 'string') {
|
|
@@ -72,12 +48,12 @@ async function handleExportDocx({ docxExporter }, req, res) {
|
|
|
72
48
|
return true;
|
|
73
49
|
}
|
|
74
50
|
|
|
75
|
-
if (
|
|
51
|
+
if (typeof renderDocx !== 'function') {
|
|
76
52
|
jsonResponse(req, res, 503, { error: 'DOCX export is unavailable' });
|
|
77
53
|
return true;
|
|
78
54
|
}
|
|
79
55
|
|
|
80
|
-
const docxBuffer = await
|
|
56
|
+
const docxBuffer = await renderDocx({
|
|
81
57
|
html: body.html,
|
|
82
58
|
title: body.title || '',
|
|
83
59
|
});
|
|
@@ -88,7 +64,7 @@ async function handleExportDocx({ docxExporter }, req, res) {
|
|
|
88
64
|
statusCode: 200,
|
|
89
65
|
});
|
|
90
66
|
} catch (error) {
|
|
91
|
-
|
|
67
|
+
handleApiError(req, res, error, '[api] Failed to export DOCX:', 'Failed to export DOCX');
|
|
92
68
|
}
|
|
93
69
|
return true;
|
|
94
70
|
}
|
|
@@ -113,7 +89,7 @@ async function handleWriteFile({ workspaceMutationCoordinator }, req, res) {
|
|
|
113
89
|
|
|
114
90
|
jsonResponse(req, res, 200, { ok: true });
|
|
115
91
|
} catch (error) {
|
|
116
|
-
|
|
92
|
+
handleApiError(req, res, error, '[api] Failed to write file:', 'Failed to write file');
|
|
117
93
|
}
|
|
118
94
|
return true;
|
|
119
95
|
}
|
|
@@ -148,7 +124,7 @@ async function handleUploadAttachment({ workspaceMutationCoordinator }, req, res
|
|
|
148
124
|
path: result.path,
|
|
149
125
|
});
|
|
150
126
|
} catch (error) {
|
|
151
|
-
|
|
127
|
+
handleApiError(req, res, error, '[api] Failed to upload attachment:', 'Failed to upload attachment');
|
|
152
128
|
}
|
|
153
129
|
return true;
|
|
154
130
|
}
|
|
@@ -172,7 +148,7 @@ async function handleCreateFile({ workspaceMutationCoordinator }, req, res) {
|
|
|
172
148
|
}
|
|
173
149
|
jsonResponse(req, res, 201, { ok: true, path: body.path });
|
|
174
150
|
} catch (error) {
|
|
175
|
-
|
|
151
|
+
handleApiError(req, res, error, '[api] Failed to create file:', 'Failed to create file');
|
|
176
152
|
}
|
|
177
153
|
return true;
|
|
178
154
|
}
|
|
@@ -220,7 +196,7 @@ async function handleRenameFile({ workspaceMutationCoordinator }, req, res) {
|
|
|
220
196
|
}
|
|
221
197
|
jsonResponse(req, res, 200, { ok: true, path: body.newPath });
|
|
222
198
|
} catch (error) {
|
|
223
|
-
|
|
199
|
+
handleApiError(req, res, error, '[api] Failed to rename file:', 'Failed to rename file');
|
|
224
200
|
}
|
|
225
201
|
return true;
|
|
226
202
|
}
|
|
@@ -244,7 +220,7 @@ async function handleCreateDirectory({ workspaceMutationCoordinator }, req, res)
|
|
|
244
220
|
|
|
245
221
|
jsonResponse(req, res, 201, { ok: true });
|
|
246
222
|
} catch (error) {
|
|
247
|
-
|
|
223
|
+
handleApiError(req, res, error, '[api] Failed to create directory:', 'Failed to create directory');
|
|
248
224
|
}
|
|
249
225
|
return true;
|
|
250
226
|
}
|
|
@@ -269,7 +245,7 @@ async function handleRenameDirectory({ workspaceMutationCoordinator }, req, res)
|
|
|
269
245
|
|
|
270
246
|
jsonResponse(req, res, 200, { ok: true, path: body.newPath });
|
|
271
247
|
} catch (error) {
|
|
272
|
-
|
|
248
|
+
handleApiError(req, res, error, '[api] Failed to rename directory:', 'Failed to rename directory');
|
|
273
249
|
}
|
|
274
250
|
return true;
|
|
275
251
|
}
|
|
@@ -295,7 +271,7 @@ async function handleDeleteDirectory({ workspaceMutationCoordinator }, req, res,
|
|
|
295
271
|
|
|
296
272
|
jsonResponse(req, res, 200, { ok: true });
|
|
297
273
|
} catch (error) {
|
|
298
|
-
|
|
274
|
+
handleApiError(req, res, error, '[api] Failed to delete directory:', 'Failed to delete directory');
|
|
299
275
|
}
|
|
300
276
|
return true;
|
|
301
277
|
}
|
|
@@ -313,11 +289,11 @@ const ROUTE_TABLE = [
|
|
|
313
289
|
];
|
|
314
290
|
|
|
315
291
|
export function createVaultApiCommandHandler({
|
|
316
|
-
|
|
292
|
+
renderDocx = null,
|
|
317
293
|
vaultFileStore,
|
|
318
294
|
workspaceMutationCoordinator = null,
|
|
319
295
|
}) {
|
|
320
|
-
const context = {
|
|
296
|
+
const context = { renderDocx, vaultFileStore, workspaceMutationCoordinator };
|
|
321
297
|
|
|
322
298
|
return async function handleVaultApiCommand(req, res, requestUrl) {
|
|
323
299
|
for (const route of ROUTE_TABLE) {
|
|
@@ -6,26 +6,19 @@ import { join } from 'node:path';
|
|
|
6
6
|
import { isImageAttachmentFilePath } from '../../../domain/file-kind.js';
|
|
7
7
|
import { isIgnoredVaultEntry } from '../persistence/path-utils.js';
|
|
8
8
|
import { parseJsonBody } from './request-body.js';
|
|
9
|
-
import {
|
|
9
|
+
import {
|
|
10
|
+
createSafeAsciiFilename,
|
|
11
|
+
encodeContentDispositionFilename,
|
|
12
|
+
jsonResponse,
|
|
13
|
+
sendResponse,
|
|
14
|
+
sendStreamResponse,
|
|
15
|
+
} from './http-response.js';
|
|
10
16
|
|
|
11
17
|
const SVG_MIME_TYPE = 'image/svg+xml';
|
|
12
18
|
const SVG_ATTACHMENT_CSP = "default-src 'none'; img-src 'self' data: blob:; style-src 'unsafe-inline'; sandbox";
|
|
13
19
|
const DEFAULT_MAX_ARCHIVE_ENTRIES = 10_000;
|
|
14
20
|
const DEFAULT_MAX_DOWNLOAD_FILE_BYTES = 268_435_456;
|
|
15
21
|
|
|
16
|
-
function encodeContentDispositionFilename(fileName) {
|
|
17
|
-
return encodeURIComponent(String(fileName ?? ''))
|
|
18
|
-
.replace(/['()*]/g, (character) => `%${character.charCodeAt(0).toString(16).toUpperCase()}`);
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
function createSafeAsciiFilename(fileName) {
|
|
22
|
-
const fallback = String(fileName ?? '')
|
|
23
|
-
.replace(/[^\x20-\x7E]+/g, '_')
|
|
24
|
-
.replace(/["\\]/g, '_')
|
|
25
|
-
.trim();
|
|
26
|
-
return fallback || 'attachment';
|
|
27
|
-
}
|
|
28
|
-
|
|
29
22
|
function createAttachmentHeaders(attachment) {
|
|
30
23
|
const fileName = basename(String(attachment?.path ?? 'attachment'));
|
|
31
24
|
const headers = {
|
|
@@ -1,6 +1,12 @@
|
|
|
1
|
-
export function createRequestError(statusCode, message) {
|
|
1
|
+
export function createRequestError(statusCode, message, { code = null, requestCode = null } = {}) {
|
|
2
2
|
const error = new Error(message);
|
|
3
3
|
error.statusCode = statusCode;
|
|
4
|
+
if (code) {
|
|
5
|
+
error.code = code;
|
|
6
|
+
}
|
|
7
|
+
if (requestCode) {
|
|
8
|
+
error.requestCode = requestCode;
|
|
9
|
+
}
|
|
4
10
|
return error;
|
|
5
11
|
}
|
|
6
12
|
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { getRequestErrorStatusCode } from './http-errors.js';
|
|
2
|
+
import { jsonResponse } from './http-response.js';
|
|
3
|
+
|
|
4
|
+
export function readRequestId(req) {
|
|
5
|
+
const value = String(req.headers['x-collabmd-request-id'] || '').trim();
|
|
6
|
+
return value ? value.slice(0, 120) : null;
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
export function handleApiError(req, res, error, logMessage, fallbackMessage) {
|
|
10
|
+
const statusCode = getRequestErrorStatusCode(error);
|
|
11
|
+
if (statusCode) {
|
|
12
|
+
const payload = { error: error.message };
|
|
13
|
+
if (typeof error?.requestCode === 'string') {
|
|
14
|
+
payload.code = error.requestCode;
|
|
15
|
+
}
|
|
16
|
+
jsonResponse(req, res, statusCode, payload);
|
|
17
|
+
return true;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
console.error(logMessage, error.message);
|
|
21
|
+
jsonResponse(req, res, 500, { error: fallbackMessage });
|
|
22
|
+
return true;
|
|
23
|
+
}
|
|
@@ -7,6 +7,19 @@ import {
|
|
|
7
7
|
const COMPRESSIBLE_CONTENT_TYPE_PATTERN = /^(?:text\/|application\/(?:javascript|json|xml)|image\/svg\+xml)/i;
|
|
8
8
|
const MIN_COMPRESSIBLE_BYTES = 1024;
|
|
9
9
|
|
|
10
|
+
export function encodeContentDispositionFilename(fileName) {
|
|
11
|
+
return encodeURIComponent(String(fileName ?? ''))
|
|
12
|
+
.replace(/['()*]/g, (character) => `%${character.charCodeAt(0).toString(16).toUpperCase()}`);
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
export function createSafeAsciiFilename(fileName, fallback = 'attachment') {
|
|
16
|
+
const normalized = String(fileName ?? '')
|
|
17
|
+
.replace(/[^\x20-\x7E]+/g, '_')
|
|
18
|
+
.replace(/["\\]/g, '_')
|
|
19
|
+
.trim();
|
|
20
|
+
return normalized || fallback;
|
|
21
|
+
}
|
|
22
|
+
|
|
10
23
|
export const SECURITY_HEADERS = {
|
|
11
24
|
'Referrer-Policy': 'strict-origin-when-cross-origin',
|
|
12
25
|
'X-Content-Type-Options': 'nosniff',
|