termdock 1.4.284 → 1.4.286
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/.desktop-dist/main.js +10 -553
- package/README.md +2 -4
- package/dist/client/assets/App-qs0jye8B.js +158 -0
- package/dist/client/assets/App-qs0jye8B.js.br +0 -0
- package/dist/client/assets/App-qs0jye8B.js.gz +0 -0
- package/dist/client/assets/{ChangeWalkthroughPanel-Bvg7jZNw.js → ChangeWalkthroughPanel-X-M6nxKJ.js} +1 -1
- package/dist/client/assets/ChangeWalkthroughPanel-X-M6nxKJ.js.br +0 -0
- package/dist/client/assets/ChangeWalkthroughPanel-X-M6nxKJ.js.gz +0 -0
- package/dist/client/assets/{DagPlayground-DSM5oYq3.js → DagPlayground-DgiUaUkH.js} +1 -1
- package/dist/client/assets/DagPlayground-DgiUaUkH.js.br +0 -0
- package/dist/client/assets/DagPlayground-DgiUaUkH.js.gz +0 -0
- package/dist/client/assets/{DiffLab-CgI11xY5.js → DiffLab-u8njwj0d.js} +1 -1
- package/dist/client/assets/DiffLab-u8njwj0d.js.br +0 -0
- package/dist/client/assets/DiffLab-u8njwj0d.js.gz +0 -0
- package/dist/client/assets/{DiffReview-DOmoMEgC.js → DiffReview-DoQY-klj.js} +1 -1
- package/dist/client/assets/DiffReview-DoQY-klj.js.br +0 -0
- package/dist/client/assets/DiffReview-DoQY-klj.js.gz +0 -0
- package/dist/client/assets/{DiffReviewLab-CEdM0rim.js → DiffReviewLab-DlKbMbfq.js} +1 -1
- package/dist/client/assets/DiffReviewLab-DlKbMbfq.js.br +0 -0
- package/dist/client/assets/DiffReviewLab-DlKbMbfq.js.gz +0 -0
- package/dist/client/assets/DiffViewer-nlvDqGPJ.js +37 -0
- package/dist/client/assets/DiffViewer-nlvDqGPJ.js.br +0 -0
- package/dist/client/assets/DiffViewer-nlvDqGPJ.js.gz +0 -0
- package/dist/client/assets/{ModelPreview-DNiQACGL.js → ModelPreview-C3beTH3N.js} +1 -1
- package/dist/client/assets/ModelPreview-C3beTH3N.js.br +0 -0
- package/dist/client/assets/ModelPreview-C3beTH3N.js.gz +0 -0
- package/dist/client/assets/RightSidebar-BtktcUdh.js +1678 -0
- package/dist/client/assets/RightSidebar-BtktcUdh.js.br +0 -0
- package/dist/client/assets/RightSidebar-BtktcUdh.js.gz +0 -0
- package/dist/client/assets/{abnfDiagram-VCTEODGH-ByazGh0D.js → abnfDiagram-VCTEODGH-7J_hDjG2.js} +1 -1
- package/dist/client/assets/abnfDiagram-VCTEODGH-7J_hDjG2.js.br +0 -0
- package/dist/client/assets/abnfDiagram-VCTEODGH-7J_hDjG2.js.gz +0 -0
- package/dist/client/assets/app-CHKqaWIE.js +35 -0
- package/dist/client/assets/app-CHKqaWIE.js.br +0 -0
- package/dist/client/assets/app-CHKqaWIE.js.gz +0 -0
- package/dist/client/assets/{arc-DMO5fEDY.js → arc-Bg_CuCZm.js} +1 -1
- package/dist/client/assets/arc-Bg_CuCZm.js.br +0 -0
- package/dist/client/assets/arc-Bg_CuCZm.js.gz +0 -0
- package/dist/client/assets/{architectureDiagram-5GKGNRK7-c6WktFDt.js → architectureDiagram-5GKGNRK7-CsSHwySz.js} +1 -1
- package/dist/client/assets/architectureDiagram-5GKGNRK7-CsSHwySz.js.br +0 -0
- package/dist/client/assets/architectureDiagram-5GKGNRK7-CsSHwySz.js.gz +0 -0
- package/dist/client/assets/{blockDiagram-I7D4REHJ-CN0lQ7zu.js → blockDiagram-I7D4REHJ-DePM_hkV.js} +1 -1
- package/dist/client/assets/blockDiagram-I7D4REHJ-DePM_hkV.js.br +0 -0
- package/dist/client/assets/blockDiagram-I7D4REHJ-DePM_hkV.js.gz +0 -0
- package/dist/client/assets/{c4Diagram-7LVT6UL2-CALO2K48.js → c4Diagram-7LVT6UL2-BQ8B9h53.js} +1 -1
- package/dist/client/assets/c4Diagram-7LVT6UL2-BQ8B9h53.js.br +0 -0
- package/dist/client/assets/c4Diagram-7LVT6UL2-BQ8B9h53.js.gz +0 -0
- package/dist/client/assets/channel-8p7Zocq1.js +1 -0
- package/dist/client/assets/{chunk-2Q5K7J3B-CcQPyBbp.js → chunk-2Q5K7J3B-Bo9Nc-d4.js} +1 -1
- package/dist/client/assets/{chunk-5VM5RSS4-CEp2aHuN.js → chunk-5VM5RSS4-D_qQp7an.js} +1 -1
- package/dist/client/assets/{chunk-F27PBJKO-gRP8AiSl.js → chunk-F27PBJKO-CJvGLWuF.js} +1 -1
- package/dist/client/assets/chunk-F27PBJKO-CJvGLWuF.js.br +0 -0
- package/dist/client/assets/chunk-F27PBJKO-CJvGLWuF.js.gz +0 -0
- package/dist/client/assets/{chunk-IMKFNOWR-BZewY7aF.js → chunk-IMKFNOWR-e4fa23mF.js} +1 -1
- package/dist/client/assets/chunk-IMKFNOWR-e4fa23mF.js.br +0 -0
- package/dist/client/assets/chunk-IMKFNOWR-e4fa23mF.js.gz +0 -0
- package/dist/client/assets/{chunk-JWPE2WC7-C4S_lg0B.js → chunk-JWPE2WC7-D9qVRvQs.js} +1 -1
- package/dist/client/assets/{chunk-POPQ4Y6H-BgYxXL0V.js → chunk-POPQ4Y6H-7eOizLll.js} +1 -1
- package/dist/client/assets/{chunk-SVP7TREG-rjbdtq2C.js → chunk-SVP7TREG-Co1wDBYI.js} +1 -1
- package/dist/client/assets/chunk-SVP7TREG-Co1wDBYI.js.br +0 -0
- package/dist/client/assets/chunk-SVP7TREG-Co1wDBYI.js.gz +0 -0
- package/dist/client/assets/{chunk-TICWLB2K-CxU1tNuL.js → chunk-TICWLB2K-yKjTtLNf.js} +1 -1
- package/dist/client/assets/chunk-TICWLB2K-yKjTtLNf.js.br +0 -0
- package/dist/client/assets/chunk-TICWLB2K-yKjTtLNf.js.gz +0 -0
- package/dist/client/assets/{chunk-XXDRQBXY-CSSO11_4.js → chunk-XXDRQBXY-DDFq5Eoi.js} +1 -1
- package/dist/client/assets/classDiagram-ZZMXUADV-DM8VyUpP.js +1 -0
- package/dist/client/assets/classDiagram-v2-VYDZK3BY-DM8VyUpP.js +1 -0
- package/dist/client/assets/{cose-bilkent-JH36ORCC-BiO-E-0q.js → cose-bilkent-JH36ORCC-Ng2b-szu.js} +1 -1
- package/dist/client/assets/cose-bilkent-JH36ORCC-Ng2b-szu.js.br +0 -0
- package/dist/client/assets/cose-bilkent-JH36ORCC-Ng2b-szu.js.gz +0 -0
- package/dist/client/assets/{cynefin-OW5HDTMX-DUC3zzns.js → cynefin-OW5HDTMX-BUzoxsoE.js} +1 -1
- package/dist/client/assets/cynefin-OW5HDTMX-BUzoxsoE.js.br +0 -0
- package/dist/client/assets/cynefin-OW5HDTMX-BUzoxsoE.js.gz +0 -0
- package/dist/client/assets/{cynefinDiagram-5FMLGOSQ-CR1RnhbU.js → cynefinDiagram-5FMLGOSQ-9sKimYPk.js} +1 -1
- package/dist/client/assets/cynefinDiagram-5FMLGOSQ-9sKimYPk.js.br +0 -0
- package/dist/client/assets/cynefinDiagram-5FMLGOSQ-9sKimYPk.js.gz +0 -0
- package/dist/client/assets/{dagre-GXQ25YYZ-d1joyB5v.js → dagre-GXQ25YYZ-C6GZ4pYU.js} +1 -1
- package/dist/client/assets/dagre-GXQ25YYZ-C6GZ4pYU.js.br +0 -0
- package/dist/client/assets/dagre-GXQ25YYZ-C6GZ4pYU.js.gz +0 -0
- package/dist/client/assets/{diagram-S7CK7UJ4-izL3GdCu.js → diagram-S7CK7UJ4-DHewWm_2.js} +1 -1
- package/dist/client/assets/diagram-S7CK7UJ4-DHewWm_2.js.br +0 -0
- package/dist/client/assets/diagram-S7CK7UJ4-DHewWm_2.js.gz +0 -0
- package/dist/client/assets/{diagram-UQ7AKVKN-CjoFV2sD.js → diagram-UQ7AKVKN-BU-Qm_iS.js} +1 -1
- package/dist/client/assets/diagram-UQ7AKVKN-BU-Qm_iS.js.br +0 -0
- package/dist/client/assets/diagram-UQ7AKVKN-BU-Qm_iS.js.gz +0 -0
- package/dist/client/assets/{diagram-VSXAHHWV-BgHmsnTZ.js → diagram-VSXAHHWV-DEvxj92u.js} +1 -1
- package/dist/client/assets/diagram-VSXAHHWV-DEvxj92u.js.br +0 -0
- package/dist/client/assets/diagram-VSXAHHWV-DEvxj92u.js.gz +0 -0
- package/dist/client/assets/{diagram-VX7I27RA-DMzRLNbg.js → diagram-VX7I27RA-DwwnVInb.js} +1 -1
- package/dist/client/assets/diagram-VX7I27RA-DwwnVInb.js.br +0 -0
- package/dist/client/assets/diagram-VX7I27RA-DwwnVInb.js.gz +0 -0
- package/dist/client/assets/{diagram-Z3DM3KII-kgWacykR.js → diagram-Z3DM3KII-DDhqqeca.js} +1 -1
- package/dist/client/assets/diagram-Z3DM3KII-DDhqqeca.js.br +0 -0
- package/dist/client/assets/diagram-Z3DM3KII-DDhqqeca.js.gz +0 -0
- package/dist/client/assets/{ebnfDiagram-PWID7BFC-XzSXtFGS.js → ebnfDiagram-PWID7BFC-CQz2BRgT.js} +1 -1
- package/dist/client/assets/ebnfDiagram-PWID7BFC-CQz2BRgT.js.br +0 -0
- package/dist/client/assets/ebnfDiagram-PWID7BFC-CQz2BRgT.js.gz +0 -0
- package/dist/client/assets/{erDiagram-RLTQ6QDP-Bu67_rUZ.js → erDiagram-RLTQ6QDP-D2eLjKEA.js} +1 -1
- package/dist/client/assets/erDiagram-RLTQ6QDP-D2eLjKEA.js.br +0 -0
- package/dist/client/assets/erDiagram-RLTQ6QDP-D2eLjKEA.js.gz +0 -0
- package/dist/client/assets/{flowDiagram-HODETNUW-BsK_b_G_.js → flowDiagram-HODETNUW-B7oJq5P3.js} +1 -1
- package/dist/client/assets/flowDiagram-HODETNUW-B7oJq5P3.js.br +0 -0
- package/dist/client/assets/flowDiagram-HODETNUW-B7oJq5P3.js.gz +0 -0
- package/dist/client/assets/{ganttDiagram-EL5Y4UJY-gCSBItav.js → ganttDiagram-EL5Y4UJY-BUA_LsMw.js} +1 -1
- package/dist/client/assets/ganttDiagram-EL5Y4UJY-BUA_LsMw.js.br +0 -0
- package/dist/client/assets/ganttDiagram-EL5Y4UJY-BUA_LsMw.js.gz +0 -0
- package/dist/client/assets/{gestureArbiter-BOikQWZ8.js → gestureArbiter-8VtxF9dg.js} +1 -1
- package/dist/client/assets/gestureArbiter-8VtxF9dg.js.br +0 -0
- package/dist/client/assets/gestureArbiter-8VtxF9dg.js.gz +0 -0
- package/dist/client/assets/{gitGraphDiagram-WWUBYQGX-DL0NSPPn.js → gitGraphDiagram-WWUBYQGX-BlbsPdki.js} +1 -1
- package/dist/client/assets/gitGraphDiagram-WWUBYQGX-BlbsPdki.js.br +0 -0
- package/dist/client/assets/gitGraphDiagram-WWUBYQGX-BlbsPdki.js.gz +0 -0
- package/dist/client/assets/{index-Bv-r5mB7.css → index-DUCUcxTy.css} +1 -1
- package/dist/client/assets/index-DUCUcxTy.css.br +0 -0
- package/dist/client/assets/index-DUCUcxTy.css.gz +0 -0
- package/dist/client/assets/{infoDiagram-27XIBGKW-Cwevdubr.js → infoDiagram-27XIBGKW-DdYvRIDS.js} +1 -1
- package/dist/client/assets/{ishikawaDiagram-5VMMS53U-pz1lzDd4.js → ishikawaDiagram-5VMMS53U-CZbBbDjz.js} +1 -1
- package/dist/client/assets/ishikawaDiagram-5VMMS53U-CZbBbDjz.js.br +0 -0
- package/dist/client/assets/ishikawaDiagram-5VMMS53U-CZbBbDjz.js.gz +0 -0
- package/dist/client/assets/{journeyDiagram-3NMN7TZE-BrUnjTGd.js → journeyDiagram-3NMN7TZE-DtxlqtaG.js} +1 -1
- package/dist/client/assets/journeyDiagram-3NMN7TZE-DtxlqtaG.js.br +0 -0
- package/dist/client/assets/journeyDiagram-3NMN7TZE-DtxlqtaG.js.gz +0 -0
- package/dist/client/assets/{kanban-definition-UXKFOSKX-BKf4UYyB.js → kanban-definition-UXKFOSKX-UMDV9UCG.js} +1 -1
- package/dist/client/assets/kanban-definition-UXKFOSKX-UMDV9UCG.js.br +0 -0
- package/dist/client/assets/kanban-definition-UXKFOSKX-UMDV9UCG.js.gz +0 -0
- package/dist/client/assets/{layout-Dd_yzBVh.js → layout-CAAXci79.js} +1 -1
- package/dist/client/assets/layout-CAAXci79.js.br +0 -0
- package/dist/client/assets/layout-CAAXci79.js.gz +0 -0
- package/dist/client/assets/{linear-iY7daKXS.js → linear-BGBP_FE_.js} +1 -1
- package/dist/client/assets/linear-BGBP_FE_.js.br +0 -0
- package/dist/client/assets/linear-BGBP_FE_.js.gz +0 -0
- package/dist/client/assets/{mermaid.core-CYNb258G.js → mermaid.core-BH_WDKpZ.js} +5 -5
- package/dist/client/assets/mermaid.core-BH_WDKpZ.js.br +0 -0
- package/dist/client/assets/mermaid.core-BH_WDKpZ.js.gz +0 -0
- package/dist/client/assets/{mindmap-definition-YA3MSWOX-ctnc7JBK.js → mindmap-definition-YA3MSWOX-7yyx6kg5.js} +1 -1
- package/dist/client/assets/mindmap-definition-YA3MSWOX-7yyx6kg5.js.br +0 -0
- package/dist/client/assets/mindmap-definition-YA3MSWOX-7yyx6kg5.js.gz +0 -0
- package/dist/client/assets/{passwordBootstrap-Bth6QB9C.js → passwordBootstrap-Dt3dN800.js} +1 -1
- package/dist/client/assets/passwordBootstrap-Dt3dN800.js.br +0 -0
- package/dist/client/assets/passwordBootstrap-Dt3dN800.js.gz +0 -0
- package/dist/client/assets/{pegDiagram-XKGWAZYB-DVKAZXxP.js → pegDiagram-XKGWAZYB-D254I9Yl.js} +1 -1
- package/dist/client/assets/pegDiagram-XKGWAZYB-D254I9Yl.js.br +0 -0
- package/dist/client/assets/pegDiagram-XKGWAZYB-D254I9Yl.js.gz +0 -0
- package/dist/client/assets/{pieDiagram-E7YTZNPT-C0u6lfoS.js → pieDiagram-E7YTZNPT-DTy-4KXi.js} +1 -1
- package/dist/client/assets/pieDiagram-E7YTZNPT-DTy-4KXi.js.br +0 -0
- package/dist/client/assets/pieDiagram-E7YTZNPT-DTy-4KXi.js.gz +0 -0
- package/dist/client/assets/{quadrantDiagram-AXDQQJYC-DXFDUoYJ.js → quadrantDiagram-AXDQQJYC-BMsaHxl0.js} +1 -1
- package/dist/client/assets/{quadrantDiagram-AXDQQJYC-DXFDUoYJ.js.br → quadrantDiagram-AXDQQJYC-BMsaHxl0.js.br} +0 -0
- package/dist/client/assets/quadrantDiagram-AXDQQJYC-BMsaHxl0.js.gz +0 -0
- package/dist/client/assets/{railroadDiagram-O6MQD6OU-Cz-wrQ4E.js → railroadDiagram-O6MQD6OU-D4c39AAQ.js} +1 -1
- package/dist/client/assets/railroadDiagram-O6MQD6OU-D4c39AAQ.js.br +0 -0
- package/dist/client/assets/railroadDiagram-O6MQD6OU-D4c39AAQ.js.gz +0 -0
- package/dist/client/assets/{referenceLongPress-BMcpaynk.js → referenceLongPress-TTIbwCKV.js} +1 -1
- package/dist/client/assets/referenceLongPress-TTIbwCKV.js.br +0 -0
- package/dist/client/assets/referenceLongPress-TTIbwCKV.js.gz +0 -0
- package/dist/client/assets/{requirementDiagram-BXWQKSXE-DdFhwbqd.js → requirementDiagram-BXWQKSXE-CwJjBKnR.js} +1 -1
- package/dist/client/assets/requirementDiagram-BXWQKSXE-CwJjBKnR.js.br +0 -0
- package/dist/client/assets/requirementDiagram-BXWQKSXE-CwJjBKnR.js.gz +0 -0
- package/dist/client/assets/{sankeyDiagram-P5KCCOFB-DIEO7iin.js → sankeyDiagram-P5KCCOFB-DVlRBDMK.js} +1 -1
- package/dist/client/assets/sankeyDiagram-P5KCCOFB-DVlRBDMK.js.br +0 -0
- package/dist/client/assets/sankeyDiagram-P5KCCOFB-DVlRBDMK.js.gz +0 -0
- package/dist/client/assets/{sequenceDiagram-WJ2MYXX4-0Jq8ZpjE.js → sequenceDiagram-WJ2MYXX4-BsWqKeoD.js} +1 -1
- package/dist/client/assets/sequenceDiagram-WJ2MYXX4-BsWqKeoD.js.br +0 -0
- package/dist/client/assets/sequenceDiagram-WJ2MYXX4-BsWqKeoD.js.gz +0 -0
- package/dist/client/assets/{sizeCapture-INFHLROL-CzkB3_L-.js → sizeCapture-INFHLROL-1FEOsRFT.js} +1 -1
- package/dist/client/assets/sizeCapture-INFHLROL-1FEOsRFT.js.br +0 -0
- package/dist/client/assets/sizeCapture-INFHLROL-1FEOsRFT.js.gz +0 -0
- package/dist/client/assets/{sparkles-OssC7CZI.js → sparkles-hN4VSTDx.js} +1 -1
- package/dist/client/assets/{stateDiagram-D77RDMKH-B1UZvmmJ.js → stateDiagram-D77RDMKH-DWNE48Sc.js} +1 -1
- package/dist/client/assets/stateDiagram-D77RDMKH-DWNE48Sc.js.br +0 -0
- package/dist/client/assets/stateDiagram-D77RDMKH-DWNE48Sc.js.gz +0 -0
- package/dist/client/assets/stateDiagram-v2-MP3YSRHH-BMprFuVB.js +1 -0
- package/dist/client/assets/{swimlanes-42K2YHIH-CwBFrD7Q.js → swimlanes-42K2YHIH-ghhxa8QM.js} +1 -1
- package/dist/client/assets/swimlanes-42K2YHIH-ghhxa8QM.js.br +0 -0
- package/dist/client/assets/swimlanes-42K2YHIH-ghhxa8QM.js.gz +0 -0
- package/dist/client/assets/swimlanesDiagram-VR7AAH4N-Dg4tYXGL.js +8 -0
- package/dist/client/assets/{timeline-definition-24CTP7MA-Cgrwm9y7.js → timeline-definition-24CTP7MA-B0eZfCze.js} +1 -1
- package/dist/client/assets/timeline-definition-24CTP7MA-B0eZfCze.js.br +0 -0
- package/dist/client/assets/timeline-definition-24CTP7MA-B0eZfCze.js.gz +0 -0
- package/dist/client/assets/{triangle-alert-gfowObfL.js → triangle-alert-zb36qQ-j.js} +1 -1
- package/dist/client/assets/{vennDiagram-4TSXK5OY-JVQ9D_hy.js → vennDiagram-4TSXK5OY-DCdV0A4l.js} +1 -1
- package/dist/client/assets/vennDiagram-4TSXK5OY-DCdV0A4l.js.br +0 -0
- package/dist/client/assets/vennDiagram-4TSXK5OY-DCdV0A4l.js.gz +0 -0
- package/dist/client/assets/{videoCompression-D1SrM0Eo.js → videoCompression-BzT-9eWg.js} +1 -1
- package/dist/client/assets/videoCompression-BzT-9eWg.js.br +0 -0
- package/dist/client/assets/videoCompression-BzT-9eWg.js.gz +0 -0
- package/dist/client/assets/{wardleyDiagram-VM6X3IG4-BsmpGt9d.js → wardleyDiagram-VM6X3IG4-BQvk-8b6.js} +1 -1
- package/dist/client/assets/wardleyDiagram-VM6X3IG4-BQvk-8b6.js.br +0 -0
- package/dist/client/assets/wardleyDiagram-VM6X3IG4-BQvk-8b6.js.gz +0 -0
- package/dist/client/assets/{xychartDiagram-S5SC5T6Z-C33-nORD.js → xychartDiagram-S5SC5T6Z-D1VdK6g5.js} +1 -1
- package/dist/client/assets/xychartDiagram-S5SC5T6Z-D1VdK6g5.js.br +0 -0
- package/dist/client/assets/xychartDiagram-S5SC5T6Z-D1VdK6g5.js.gz +0 -0
- package/dist/client/index.html +2 -2
- package/dist/client/index.html.br +0 -0
- package/dist/client/index.html.gz +0 -0
- package/dist/client/sw.js +1 -1
- package/dist/client/sw.js.br +0 -0
- package/dist/client/sw.js.gz +0 -0
- package/dist/server/agent/collaborationCli.js +11 -3
- package/dist/server/agent/collaborationGroupRoutes.js +18 -0
- package/dist/server/agent/collaborationPeerTransport.js +19 -1
- package/dist/server/agent/collaborationRoutes.js +12 -0
- package/dist/server/agent/collaborationService.js +83 -8
- package/dist/server/agent/nativeSessionSearch.js +84 -0
- package/dist/server/agent/sessionSearchStore.js +2 -1
- package/dist/server/entry.js +2 -6
- package/dist/server/federation/trustedCa.js +9 -2
- package/dist/server/routes/filesystem.js +43 -1
- package/dist/server/routes/terminal.js +122 -32
- package/dist/server/utils/enableSupervision.js +2 -3
- package/dist/server/utils/runtimeClient.js +0 -32
- package/dist/server/utils/settings.js +14 -0
- package/dist/server/workers/nativeSessionSearchWorker.js +416 -0
- package/package.json +3 -3
- package/runtime-manifest.json +3 -3
- package/scripts/classify-release.mjs +0 -1
- package/dist/client/assets/App-BgEYOR8Z.js +0 -157
- package/dist/client/assets/App-BgEYOR8Z.js.br +0 -0
- package/dist/client/assets/App-BgEYOR8Z.js.gz +0 -0
- package/dist/client/assets/ChangeWalkthroughPanel-Bvg7jZNw.js.br +0 -0
- package/dist/client/assets/ChangeWalkthroughPanel-Bvg7jZNw.js.gz +0 -0
- package/dist/client/assets/DagPlayground-DSM5oYq3.js.br +0 -0
- package/dist/client/assets/DagPlayground-DSM5oYq3.js.gz +0 -0
- package/dist/client/assets/DiffLab-CgI11xY5.js.br +0 -0
- package/dist/client/assets/DiffLab-CgI11xY5.js.gz +0 -0
- package/dist/client/assets/DiffReview-DOmoMEgC.js.br +0 -0
- package/dist/client/assets/DiffReview-DOmoMEgC.js.gz +0 -0
- package/dist/client/assets/DiffReviewLab-CEdM0rim.js.br +0 -0
- package/dist/client/assets/DiffReviewLab-CEdM0rim.js.gz +0 -0
- package/dist/client/assets/DiffViewer-CI3JmNyq.js +0 -37
- package/dist/client/assets/DiffViewer-CI3JmNyq.js.br +0 -0
- package/dist/client/assets/DiffViewer-CI3JmNyq.js.gz +0 -0
- package/dist/client/assets/ModelPreview-DNiQACGL.js.br +0 -0
- package/dist/client/assets/ModelPreview-DNiQACGL.js.gz +0 -0
- package/dist/client/assets/RightSidebar-CpPgHZEU.js +0 -1678
- package/dist/client/assets/RightSidebar-CpPgHZEU.js.br +0 -0
- package/dist/client/assets/RightSidebar-CpPgHZEU.js.gz +0 -0
- package/dist/client/assets/abnfDiagram-VCTEODGH-ByazGh0D.js.br +0 -0
- package/dist/client/assets/abnfDiagram-VCTEODGH-ByazGh0D.js.gz +0 -0
- package/dist/client/assets/app-UpvbJ3fT.js +0 -35
- package/dist/client/assets/app-UpvbJ3fT.js.br +0 -0
- package/dist/client/assets/app-UpvbJ3fT.js.gz +0 -0
- package/dist/client/assets/arc-DMO5fEDY.js.br +0 -0
- package/dist/client/assets/arc-DMO5fEDY.js.gz +0 -0
- package/dist/client/assets/architectureDiagram-5GKGNRK7-c6WktFDt.js.br +0 -0
- package/dist/client/assets/architectureDiagram-5GKGNRK7-c6WktFDt.js.gz +0 -0
- package/dist/client/assets/blockDiagram-I7D4REHJ-CN0lQ7zu.js.br +0 -0
- package/dist/client/assets/blockDiagram-I7D4REHJ-CN0lQ7zu.js.gz +0 -0
- package/dist/client/assets/c4Diagram-7LVT6UL2-CALO2K48.js.br +0 -0
- package/dist/client/assets/c4Diagram-7LVT6UL2-CALO2K48.js.gz +0 -0
- package/dist/client/assets/channel-DcmoMLL-.js +0 -1
- package/dist/client/assets/chunk-F27PBJKO-gRP8AiSl.js.br +0 -0
- package/dist/client/assets/chunk-F27PBJKO-gRP8AiSl.js.gz +0 -0
- package/dist/client/assets/chunk-IMKFNOWR-BZewY7aF.js.br +0 -0
- package/dist/client/assets/chunk-IMKFNOWR-BZewY7aF.js.gz +0 -0
- package/dist/client/assets/chunk-SVP7TREG-rjbdtq2C.js.br +0 -0
- package/dist/client/assets/chunk-SVP7TREG-rjbdtq2C.js.gz +0 -0
- package/dist/client/assets/chunk-TICWLB2K-CxU1tNuL.js.br +0 -0
- package/dist/client/assets/chunk-TICWLB2K-CxU1tNuL.js.gz +0 -0
- package/dist/client/assets/classDiagram-ZZMXUADV-VSirHVcP.js +0 -1
- package/dist/client/assets/classDiagram-v2-VYDZK3BY-VSirHVcP.js +0 -1
- package/dist/client/assets/cose-bilkent-JH36ORCC-BiO-E-0q.js.br +0 -0
- package/dist/client/assets/cose-bilkent-JH36ORCC-BiO-E-0q.js.gz +0 -0
- package/dist/client/assets/cynefin-OW5HDTMX-DUC3zzns.js.br +0 -0
- package/dist/client/assets/cynefin-OW5HDTMX-DUC3zzns.js.gz +0 -0
- package/dist/client/assets/cynefinDiagram-5FMLGOSQ-CR1RnhbU.js.br +0 -0
- package/dist/client/assets/cynefinDiagram-5FMLGOSQ-CR1RnhbU.js.gz +0 -0
- package/dist/client/assets/dagre-GXQ25YYZ-d1joyB5v.js.br +0 -0
- package/dist/client/assets/dagre-GXQ25YYZ-d1joyB5v.js.gz +0 -0
- package/dist/client/assets/diagram-S7CK7UJ4-izL3GdCu.js.br +0 -0
- package/dist/client/assets/diagram-S7CK7UJ4-izL3GdCu.js.gz +0 -0
- package/dist/client/assets/diagram-UQ7AKVKN-CjoFV2sD.js.br +0 -0
- package/dist/client/assets/diagram-UQ7AKVKN-CjoFV2sD.js.gz +0 -0
- package/dist/client/assets/diagram-VSXAHHWV-BgHmsnTZ.js.br +0 -0
- package/dist/client/assets/diagram-VSXAHHWV-BgHmsnTZ.js.gz +0 -0
- package/dist/client/assets/diagram-VX7I27RA-DMzRLNbg.js.br +0 -0
- package/dist/client/assets/diagram-VX7I27RA-DMzRLNbg.js.gz +0 -0
- package/dist/client/assets/diagram-Z3DM3KII-kgWacykR.js.br +0 -0
- package/dist/client/assets/diagram-Z3DM3KII-kgWacykR.js.gz +0 -0
- package/dist/client/assets/ebnfDiagram-PWID7BFC-XzSXtFGS.js.br +0 -0
- package/dist/client/assets/ebnfDiagram-PWID7BFC-XzSXtFGS.js.gz +0 -0
- package/dist/client/assets/erDiagram-RLTQ6QDP-Bu67_rUZ.js.br +0 -0
- package/dist/client/assets/erDiagram-RLTQ6QDP-Bu67_rUZ.js.gz +0 -0
- package/dist/client/assets/flowDiagram-HODETNUW-BsK_b_G_.js.br +0 -0
- package/dist/client/assets/flowDiagram-HODETNUW-BsK_b_G_.js.gz +0 -0
- package/dist/client/assets/ganttDiagram-EL5Y4UJY-gCSBItav.js.br +0 -0
- package/dist/client/assets/ganttDiagram-EL5Y4UJY-gCSBItav.js.gz +0 -0
- package/dist/client/assets/gestureArbiter-BOikQWZ8.js.br +0 -0
- package/dist/client/assets/gestureArbiter-BOikQWZ8.js.gz +0 -0
- package/dist/client/assets/gitGraphDiagram-WWUBYQGX-DL0NSPPn.js.br +0 -0
- package/dist/client/assets/gitGraphDiagram-WWUBYQGX-DL0NSPPn.js.gz +0 -0
- package/dist/client/assets/index-Bv-r5mB7.css.br +0 -0
- package/dist/client/assets/index-Bv-r5mB7.css.gz +0 -0
- package/dist/client/assets/ishikawaDiagram-5VMMS53U-pz1lzDd4.js.br +0 -0
- package/dist/client/assets/ishikawaDiagram-5VMMS53U-pz1lzDd4.js.gz +0 -0
- package/dist/client/assets/journeyDiagram-3NMN7TZE-BrUnjTGd.js.br +0 -0
- package/dist/client/assets/journeyDiagram-3NMN7TZE-BrUnjTGd.js.gz +0 -0
- package/dist/client/assets/kanban-definition-UXKFOSKX-BKf4UYyB.js.br +0 -0
- package/dist/client/assets/kanban-definition-UXKFOSKX-BKf4UYyB.js.gz +0 -0
- package/dist/client/assets/layout-Dd_yzBVh.js.br +0 -0
- package/dist/client/assets/layout-Dd_yzBVh.js.gz +0 -0
- package/dist/client/assets/linear-iY7daKXS.js.br +0 -0
- package/dist/client/assets/linear-iY7daKXS.js.gz +0 -0
- package/dist/client/assets/mermaid.core-CYNb258G.js.br +0 -0
- package/dist/client/assets/mermaid.core-CYNb258G.js.gz +0 -0
- package/dist/client/assets/mindmap-definition-YA3MSWOX-ctnc7JBK.js.br +0 -0
- package/dist/client/assets/mindmap-definition-YA3MSWOX-ctnc7JBK.js.gz +0 -0
- package/dist/client/assets/passwordBootstrap-Bth6QB9C.js.br +0 -0
- package/dist/client/assets/passwordBootstrap-Bth6QB9C.js.gz +0 -0
- package/dist/client/assets/pegDiagram-XKGWAZYB-DVKAZXxP.js.br +0 -0
- package/dist/client/assets/pegDiagram-XKGWAZYB-DVKAZXxP.js.gz +0 -0
- package/dist/client/assets/pieDiagram-E7YTZNPT-C0u6lfoS.js.br +0 -0
- package/dist/client/assets/pieDiagram-E7YTZNPT-C0u6lfoS.js.gz +0 -0
- package/dist/client/assets/quadrantDiagram-AXDQQJYC-DXFDUoYJ.js.gz +0 -0
- package/dist/client/assets/railroadDiagram-O6MQD6OU-Cz-wrQ4E.js.br +0 -0
- package/dist/client/assets/railroadDiagram-O6MQD6OU-Cz-wrQ4E.js.gz +0 -0
- package/dist/client/assets/referenceLongPress-BMcpaynk.js.br +0 -0
- package/dist/client/assets/referenceLongPress-BMcpaynk.js.gz +0 -0
- package/dist/client/assets/requirementDiagram-BXWQKSXE-DdFhwbqd.js.br +0 -0
- package/dist/client/assets/requirementDiagram-BXWQKSXE-DdFhwbqd.js.gz +0 -0
- package/dist/client/assets/sankeyDiagram-P5KCCOFB-DIEO7iin.js.br +0 -0
- package/dist/client/assets/sankeyDiagram-P5KCCOFB-DIEO7iin.js.gz +0 -0
- package/dist/client/assets/sequenceDiagram-WJ2MYXX4-0Jq8ZpjE.js.br +0 -0
- package/dist/client/assets/sequenceDiagram-WJ2MYXX4-0Jq8ZpjE.js.gz +0 -0
- package/dist/client/assets/sizeCapture-INFHLROL-CzkB3_L-.js.br +0 -0
- package/dist/client/assets/sizeCapture-INFHLROL-CzkB3_L-.js.gz +0 -0
- package/dist/client/assets/stateDiagram-D77RDMKH-B1UZvmmJ.js.br +0 -0
- package/dist/client/assets/stateDiagram-D77RDMKH-B1UZvmmJ.js.gz +0 -0
- package/dist/client/assets/stateDiagram-v2-MP3YSRHH-Cmg877fp.js +0 -1
- package/dist/client/assets/swimlanes-42K2YHIH-CwBFrD7Q.js.br +0 -0
- package/dist/client/assets/swimlanes-42K2YHIH-CwBFrD7Q.js.gz +0 -0
- package/dist/client/assets/swimlanesDiagram-VR7AAH4N-CjR47hdK.js +0 -8
- package/dist/client/assets/timeline-definition-24CTP7MA-Cgrwm9y7.js.br +0 -0
- package/dist/client/assets/timeline-definition-24CTP7MA-Cgrwm9y7.js.gz +0 -0
- package/dist/client/assets/vennDiagram-4TSXK5OY-JVQ9D_hy.js.br +0 -0
- package/dist/client/assets/vennDiagram-4TSXK5OY-JVQ9D_hy.js.gz +0 -0
- package/dist/client/assets/videoCompression-D1SrM0Eo.js.br +0 -0
- package/dist/client/assets/videoCompression-D1SrM0Eo.js.gz +0 -0
- package/dist/client/assets/wardleyDiagram-VM6X3IG4-BsmpGt9d.js.br +0 -0
- package/dist/client/assets/wardleyDiagram-VM6X3IG4-BsmpGt9d.js.gz +0 -0
- package/dist/client/assets/xychartDiagram-S5SC5T6Z-C33-nORD.js.br +0 -0
- package/dist/client/assets/xychartDiagram-S5SC5T6Z-C33-nORD.js.gz +0 -0
- package/dist/server/utils/desktopRuntimeOwner.js +0 -105
- package/scripts/prepare-desktop-runtime.mjs +0 -228
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{c as a,C as n}from"./mermaid.core-CYNb258G.js";const t=(r,o)=>a.lang.round(n.parse(r)[o]);export{t as c};
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{s as a,a as s,c as t,C as e}from"./chunk-TICWLB2K-CxU1tNuL.js";import{d as i}from"./mermaid.core-CYNb258G.js";import"./chunk-5VM5RSS4-CEp2aHuN.js";import"./chunk-XXDRQBXY-CSSO11_4.js";import"./chunk-POPQ4Y6H-BgYxXL0V.js";import"./chunk-F27PBJKO-gRP8AiSl.js";import"./purify.es-4eNOHKSq.js";import"./app-UpvbJ3fT.js";import"./react-XDCjal2T.js";import"./dnd-BCFAPC0L.js";import"./terminal-C7X98Amf.js";var g={parser:t,get db(){return new e},renderer:s,styles:a,init:i(r=>{r.class||(r.class={}),r.class.arrowMarkerAbsolute=r.arrowMarkerAbsolute},"init")};export{g as diagram};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{s as a,a as s,c as t,C as e}from"./chunk-TICWLB2K-CxU1tNuL.js";import{d as i}from"./mermaid.core-CYNb258G.js";import"./chunk-5VM5RSS4-CEp2aHuN.js";import"./chunk-XXDRQBXY-CSSO11_4.js";import"./chunk-POPQ4Y6H-BgYxXL0V.js";import"./chunk-F27PBJKO-gRP8AiSl.js";import"./purify.es-4eNOHKSq.js";import"./app-UpvbJ3fT.js";import"./react-XDCjal2T.js";import"./dnd-BCFAPC0L.js";import"./terminal-C7X98Amf.js";var g={parser:t,get db(){return new e},renderer:s,styles:a,init:i(r=>{r.class||(r.class={}),r.class.arrowMarkerAbsolute=r.arrowMarkerAbsolute},"init")};export{g as diagram};
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{b as r,a as e,s as a,S as i}from"./chunk-IMKFNOWR-BZewY7aF.js";import{d as s}from"./mermaid.core-CYNb258G.js";import"./chunk-XXDRQBXY-CSSO11_4.js";import"./chunk-POPQ4Y6H-BgYxXL0V.js";import"./chunk-F27PBJKO-gRP8AiSl.js";import"./purify.es-4eNOHKSq.js";import"./app-UpvbJ3fT.js";import"./react-XDCjal2T.js";import"./dnd-BCFAPC0L.js";import"./terminal-C7X98Amf.js";var g={parser:a,get db(){return new i(2)},renderer:e,styles:r,init:s(t=>{t.state||(t.state={}),t.state.arrowMarkerAbsolute=t.arrowMarkerAbsolute},"init")};export{g as diagram};
|
|
Binary file
|
|
Binary file
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import{c as r,s as e}from"./flowDiagram-HODETNUW-BsK_b_G_.js";import{d as o}from"./mermaid.core-CYNb258G.js";import"./chunk-5VM5RSS4-CEp2aHuN.js";import"./chunk-XXDRQBXY-CSSO11_4.js";import"./chunk-POPQ4Y6H-BgYxXL0V.js";import"./chunk-F27PBJKO-gRP8AiSl.js";import"./purify.es-4eNOHKSq.js";import"./channel-DcmoMLL-.js";import"./app-UpvbJ3fT.js";import"./react-XDCjal2T.js";import"./dnd-BCFAPC0L.js";import"./terminal-C7X98Amf.js";var a=o(t=>`${e(t)}
|
|
2
|
-
.swimlane.cluster rect {
|
|
3
|
-
stroke: ${t.clusterBorder} !important;
|
|
4
|
-
}
|
|
5
|
-
[data-look="neo"].cluster rect {
|
|
6
|
-
filter: none;
|
|
7
|
-
}
|
|
8
|
-
`,"getStyles"),m=a,v=r({defaultLayout:"swimlane",styles:m});export{v as diagram};
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -1,105 +0,0 @@
|
|
|
1
|
-
import http from 'node:http';
|
|
2
|
-
function isDesktopRuntimeOwnerState(value) {
|
|
3
|
-
if (!value || typeof value !== 'object')
|
|
4
|
-
return false;
|
|
5
|
-
const state = value;
|
|
6
|
-
return typeof state.status === 'string'
|
|
7
|
-
&& typeof state.currentVersion === 'string'
|
|
8
|
-
&& (state.latestVersion === null || typeof state.latestVersion === 'string')
|
|
9
|
-
&& state.source === 'desktop'
|
|
10
|
-
&& (state.checkedAt === null || typeof state.checkedAt === 'number')
|
|
11
|
-
&& (state.error === null || typeof state.error === 'string');
|
|
12
|
-
}
|
|
13
|
-
export class DesktopRuntimeOwnerClient {
|
|
14
|
-
socketPath;
|
|
15
|
-
listener;
|
|
16
|
-
state;
|
|
17
|
-
pollTimer = null;
|
|
18
|
-
stateSignature;
|
|
19
|
-
constructor(socketPath, currentVersion, listener) {
|
|
20
|
-
this.socketPath = socketPath;
|
|
21
|
-
this.listener = listener;
|
|
22
|
-
this.state = {
|
|
23
|
-
status: 'idle',
|
|
24
|
-
currentVersion,
|
|
25
|
-
latestVersion: null,
|
|
26
|
-
source: 'desktop',
|
|
27
|
-
checkedAt: null,
|
|
28
|
-
error: null,
|
|
29
|
-
};
|
|
30
|
-
this.stateSignature = JSON.stringify(this.state);
|
|
31
|
-
}
|
|
32
|
-
getState() {
|
|
33
|
-
return { ...this.state };
|
|
34
|
-
}
|
|
35
|
-
start() {
|
|
36
|
-
if (this.pollTimer)
|
|
37
|
-
return;
|
|
38
|
-
void this.refresh().catch(() => undefined);
|
|
39
|
-
this.pollTimer = setInterval(() => {
|
|
40
|
-
void this.refresh().catch(() => undefined);
|
|
41
|
-
}, 2_000);
|
|
42
|
-
this.pollTimer.unref?.();
|
|
43
|
-
}
|
|
44
|
-
stop() {
|
|
45
|
-
if (this.pollTimer)
|
|
46
|
-
clearInterval(this.pollTimer);
|
|
47
|
-
this.pollTimer = null;
|
|
48
|
-
}
|
|
49
|
-
refresh() {
|
|
50
|
-
return this.request('GET', '/runtime-update');
|
|
51
|
-
}
|
|
52
|
-
checkForUpdates() {
|
|
53
|
-
return this.request('POST', '/runtime-update/check', 180_000);
|
|
54
|
-
}
|
|
55
|
-
restart() {
|
|
56
|
-
return this.request('POST', '/runtime-update/restart');
|
|
57
|
-
}
|
|
58
|
-
request(method, requestPath, timeoutMs = 10_000) {
|
|
59
|
-
return new Promise((resolve, reject) => {
|
|
60
|
-
const request = http.request({
|
|
61
|
-
socketPath: this.socketPath,
|
|
62
|
-
path: requestPath,
|
|
63
|
-
method,
|
|
64
|
-
headers: { accept: 'application/json' },
|
|
65
|
-
}, (response) => {
|
|
66
|
-
const chunks = [];
|
|
67
|
-
response.on('data', (chunk) => chunks.push(chunk));
|
|
68
|
-
response.on('end', () => {
|
|
69
|
-
let payload;
|
|
70
|
-
try {
|
|
71
|
-
payload = JSON.parse(Buffer.concat(chunks).toString('utf8'));
|
|
72
|
-
}
|
|
73
|
-
catch {
|
|
74
|
-
reject(new Error('Termdock Desktop 返回了无效的 Runtime 更新状态。'));
|
|
75
|
-
return;
|
|
76
|
-
}
|
|
77
|
-
if ((response.statusCode ?? 500) >= 400) {
|
|
78
|
-
const error = payload && typeof payload === 'object' && 'error' in payload
|
|
79
|
-
? String(payload.error)
|
|
80
|
-
: `Termdock Desktop 更新请求失败(HTTP ${response.statusCode ?? 500})。`;
|
|
81
|
-
reject(new Error(error));
|
|
82
|
-
return;
|
|
83
|
-
}
|
|
84
|
-
if (!isDesktopRuntimeOwnerState(payload)) {
|
|
85
|
-
reject(new Error('Termdock Desktop 返回了不完整的 Runtime 更新状态。'));
|
|
86
|
-
return;
|
|
87
|
-
}
|
|
88
|
-
this.publish(payload);
|
|
89
|
-
resolve(this.getState());
|
|
90
|
-
});
|
|
91
|
-
});
|
|
92
|
-
request.setTimeout(timeoutMs, () => request.destroy(new Error('Termdock Desktop Runtime 更新请求超时。')));
|
|
93
|
-
request.on('error', (error) => reject(new Error(`无法联系管理此服务的 Termdock Desktop:${error.message}`)));
|
|
94
|
-
request.end();
|
|
95
|
-
});
|
|
96
|
-
}
|
|
97
|
-
publish(state) {
|
|
98
|
-
const signature = JSON.stringify(state);
|
|
99
|
-
this.state = { ...state };
|
|
100
|
-
if (signature === this.stateSignature)
|
|
101
|
-
return;
|
|
102
|
-
this.stateSignature = signature;
|
|
103
|
-
this.listener(this.getState());
|
|
104
|
-
}
|
|
105
|
-
}
|
|
@@ -1,228 +0,0 @@
|
|
|
1
|
-
import { execFileSync, spawnSync } from 'node:child_process';
|
|
2
|
-
import fs from 'node:fs';
|
|
3
|
-
import os from 'node:os';
|
|
4
|
-
import path from 'node:path';
|
|
5
|
-
import process from 'node:process';
|
|
6
|
-
import { fileURLToPath } from 'node:url';
|
|
7
|
-
|
|
8
|
-
const scriptDir = path.dirname(fileURLToPath(import.meta.url));
|
|
9
|
-
const root = path.resolve(scriptDir, '..');
|
|
10
|
-
const stage = path.join(root, '.desktop-runtime');
|
|
11
|
-
const runtimeDir = path.join(stage, 'runtime');
|
|
12
|
-
const serverDir = path.join(stage, 'server');
|
|
13
|
-
const toolchainDir = path.join(stage, 'toolchain');
|
|
14
|
-
const toolchainBinDir = path.join(toolchainDir, 'bin');
|
|
15
|
-
const toolchainLibDir = path.join(toolchainDir, 'lib');
|
|
16
|
-
const nodeDownloadDir = path.join(stage, 'node-download');
|
|
17
|
-
const nodeArchiveCacheDir = process.env.TERMDOCK_NODE_ARCHIVE_CACHE
|
|
18
|
-
? path.resolve(process.env.TERMDOCK_NODE_ARCHIVE_CACHE)
|
|
19
|
-
: path.join(os.homedir(), '.cache', 'termdock', 'node-archives');
|
|
20
|
-
const desktopBuildNodeMajor = 22;
|
|
21
|
-
|
|
22
|
-
const buildNodeMajor = Number.parseInt(process.versions.node.split('.')[0], 10);
|
|
23
|
-
if (buildNodeMajor !== desktopBuildNodeMajor) {
|
|
24
|
-
throw new Error(
|
|
25
|
-
`macOS desktop packaging requires Node.js ${desktopBuildNodeMajor}.x; `
|
|
26
|
-
+ `current build runtime is ${process.version}.`,
|
|
27
|
-
);
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
function run(command, args, options = {}) {
|
|
31
|
-
const result = spawnSync(command, args, {
|
|
32
|
-
cwd: options.cwd ?? root,
|
|
33
|
-
env: options.env ?? process.env,
|
|
34
|
-
encoding: 'utf8',
|
|
35
|
-
stdio: options.stdio ?? 'inherit',
|
|
36
|
-
});
|
|
37
|
-
if (result.status !== 0) {
|
|
38
|
-
throw new Error(`${command} ${args.join(' ')} failed with exit code ${result.status}`);
|
|
39
|
-
}
|
|
40
|
-
return result.stdout ?? '';
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
function executableOnPath(name) {
|
|
44
|
-
if (process.platform === 'darwin') {
|
|
45
|
-
for (const candidate of [
|
|
46
|
-
`/opt/homebrew/bin/${name}`,
|
|
47
|
-
`/usr/local/bin/${name}`,
|
|
48
|
-
]) {
|
|
49
|
-
if (fs.existsSync(candidate)) return candidate;
|
|
50
|
-
}
|
|
51
|
-
}
|
|
52
|
-
try {
|
|
53
|
-
return execFileSync('/usr/bin/which', [name], { encoding: 'utf8' }).trim() || null;
|
|
54
|
-
} catch {
|
|
55
|
-
return null;
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
function isSystemLibrary(libraryPath) {
|
|
60
|
-
return libraryPath.startsWith('/System/Library/')
|
|
61
|
-
|| libraryPath.startsWith('/usr/lib/');
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
function linkedLibraries(binaryPath) {
|
|
65
|
-
if (process.platform !== 'darwin') return [];
|
|
66
|
-
const output = execFileSync('/usr/bin/otool', ['-L', binaryPath], { encoding: 'utf8' });
|
|
67
|
-
return output
|
|
68
|
-
.split('\n')
|
|
69
|
-
.slice(1)
|
|
70
|
-
.map((line) => line.trim().split(/\s+\(/)[0])
|
|
71
|
-
.filter((entry) => entry && !entry.startsWith('@') && !isSystemLibrary(entry));
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
function copyMacBinary(sourcePath, destinationPath) {
|
|
75
|
-
fs.copyFileSync(sourcePath, destinationPath);
|
|
76
|
-
fs.chmodSync(destinationPath, 0o755);
|
|
77
|
-
if (process.platform !== 'darwin') return;
|
|
78
|
-
|
|
79
|
-
const queue = [{ source: sourcePath, destination: destinationPath, inLibDir: false }];
|
|
80
|
-
const copiedLibraries = new Map();
|
|
81
|
-
while (queue.length > 0) {
|
|
82
|
-
const current = queue.shift();
|
|
83
|
-
for (const dependency of linkedLibraries(current.source)) {
|
|
84
|
-
const basename = path.basename(dependency);
|
|
85
|
-
const bundledDependency = path.join(toolchainLibDir, basename);
|
|
86
|
-
if (!copiedLibraries.has(dependency)) {
|
|
87
|
-
if (!fs.existsSync(dependency)) {
|
|
88
|
-
throw new Error(`Missing linked library ${dependency} required by ${current.source}`);
|
|
89
|
-
}
|
|
90
|
-
fs.copyFileSync(dependency, bundledDependency);
|
|
91
|
-
fs.chmodSync(bundledDependency, 0o755);
|
|
92
|
-
copiedLibraries.set(dependency, bundledDependency);
|
|
93
|
-
queue.push({ source: dependency, destination: bundledDependency, inLibDir: true });
|
|
94
|
-
}
|
|
95
|
-
const relativeReference = current.inLibDir
|
|
96
|
-
? `@loader_path/${basename}`
|
|
97
|
-
: `@loader_path/../lib/${basename}`;
|
|
98
|
-
run('/usr/bin/install_name_tool', ['-change', dependency, relativeReference, current.destination]);
|
|
99
|
-
}
|
|
100
|
-
if (current.inLibDir) {
|
|
101
|
-
run('/usr/bin/install_name_tool', ['-id', `@loader_path/${path.basename(current.destination)}`, current.destination]);
|
|
102
|
-
}
|
|
103
|
-
}
|
|
104
|
-
}
|
|
105
|
-
|
|
106
|
-
function makeSpawnHelpersExecutable(directory) {
|
|
107
|
-
if (!fs.existsSync(directory)) return;
|
|
108
|
-
for (const entry of fs.readdirSync(directory, { withFileTypes: true })) {
|
|
109
|
-
const entryPath = path.join(directory, entry.name);
|
|
110
|
-
if (entry.isDirectory()) {
|
|
111
|
-
makeSpawnHelpersExecutable(entryPath);
|
|
112
|
-
} else if (entry.isFile() && entry.name === 'spawn-helper') {
|
|
113
|
-
fs.chmodSync(entryPath, 0o755);
|
|
114
|
-
}
|
|
115
|
-
}
|
|
116
|
-
}
|
|
117
|
-
|
|
118
|
-
fs.rmSync(stage, { recursive: true, force: true });
|
|
119
|
-
fs.mkdirSync(path.join(runtimeDir, 'bin'), { recursive: true });
|
|
120
|
-
fs.mkdirSync(serverDir, { recursive: true });
|
|
121
|
-
fs.mkdirSync(toolchainBinDir, { recursive: true });
|
|
122
|
-
fs.mkdirSync(toolchainLibDir, { recursive: true });
|
|
123
|
-
|
|
124
|
-
const runtimeNode = path.join(runtimeDir, 'bin', 'node');
|
|
125
|
-
const nodePlatform = process.platform === 'win32' ? 'win' : process.platform;
|
|
126
|
-
const nodeArch = process.arch === 'x64' ? 'x64' : process.arch;
|
|
127
|
-
const nodeArchiveExt = process.platform === 'win32' ? 'zip' : 'tar.gz';
|
|
128
|
-
const nodeArchiveName = `node-${process.version}-${nodePlatform}-${nodeArch}.${nodeArchiveExt}`;
|
|
129
|
-
const nodeArchiveUrl = `https://nodejs.org/dist/${process.version}/${nodeArchiveName}`;
|
|
130
|
-
fs.mkdirSync(nodeDownloadDir, { recursive: true });
|
|
131
|
-
const nodeArchivePath = path.join(nodeDownloadDir, nodeArchiveName);
|
|
132
|
-
fs.mkdirSync(nodeArchiveCacheDir, { recursive: true });
|
|
133
|
-
const cachedNodeArchivePath = path.join(nodeArchiveCacheDir, nodeArchiveName);
|
|
134
|
-
if (!fs.existsSync(cachedNodeArchivePath)) {
|
|
135
|
-
const temporaryArchivePath = `${cachedNodeArchivePath}.${process.pid}.tmp`;
|
|
136
|
-
try {
|
|
137
|
-
run('/usr/bin/curl', ['-fL', '--retry', '4', '--output', temporaryArchivePath, nodeArchiveUrl]);
|
|
138
|
-
run('/usr/bin/tar', ['-tzf', temporaryArchivePath], { stdio: 'ignore' });
|
|
139
|
-
fs.renameSync(temporaryArchivePath, cachedNodeArchivePath);
|
|
140
|
-
} finally {
|
|
141
|
-
fs.rmSync(temporaryArchivePath, { force: true });
|
|
142
|
-
}
|
|
143
|
-
}
|
|
144
|
-
fs.copyFileSync(cachedNodeArchivePath, nodeArchivePath);
|
|
145
|
-
if (nodeArchiveExt !== 'tar.gz') {
|
|
146
|
-
throw new Error(`Desktop runtime preparation is not implemented for ${process.platform}`);
|
|
147
|
-
}
|
|
148
|
-
run('/usr/bin/tar', ['-xzf', nodeArchivePath, '-C', nodeDownloadDir]);
|
|
149
|
-
const extractedNode = path.join(
|
|
150
|
-
nodeDownloadDir,
|
|
151
|
-
`node-${process.version}-${nodePlatform}-${nodeArch}`,
|
|
152
|
-
'bin',
|
|
153
|
-
'node',
|
|
154
|
-
);
|
|
155
|
-
copyMacBinary(extractedNode, runtimeNode);
|
|
156
|
-
|
|
157
|
-
const rootPackage = JSON.parse(fs.readFileSync(path.join(root, 'package.json'), 'utf8'));
|
|
158
|
-
const runtimeManifest = JSON.parse(
|
|
159
|
-
fs.readFileSync(path.join(root, 'runtime-manifest.json'), 'utf8'),
|
|
160
|
-
);
|
|
161
|
-
const runtimePackage = {
|
|
162
|
-
name: rootPackage.name,
|
|
163
|
-
version: rootPackage.version,
|
|
164
|
-
private: true,
|
|
165
|
-
type: 'module',
|
|
166
|
-
dependencies: rootPackage.dependencies,
|
|
167
|
-
overrides: rootPackage.overrides,
|
|
168
|
-
};
|
|
169
|
-
fs.writeFileSync(path.join(serverDir, 'package.json'), `${JSON.stringify(runtimePackage, null, 2)}\n`);
|
|
170
|
-
fs.copyFileSync(path.join(root, 'package-lock.json'), path.join(serverDir, 'package-lock.json'));
|
|
171
|
-
fs.copyFileSync(
|
|
172
|
-
path.join(root, 'runtime-manifest.json'),
|
|
173
|
-
path.join(serverDir, 'runtime-manifest.json'),
|
|
174
|
-
);
|
|
175
|
-
fs.cpSync(path.join(root, 'dist'), path.join(serverDir, 'dist'), { recursive: true });
|
|
176
|
-
|
|
177
|
-
run(process.platform === 'win32' ? 'npm.cmd' : 'npm', [
|
|
178
|
-
'ci',
|
|
179
|
-
'--omit=dev',
|
|
180
|
-
'--no-audit',
|
|
181
|
-
'--no-fund',
|
|
182
|
-
], {
|
|
183
|
-
cwd: serverDir,
|
|
184
|
-
env: {
|
|
185
|
-
...process.env,
|
|
186
|
-
PATH: `${path.dirname(process.execPath)}${path.delimiter}${process.env.PATH ?? ''}`,
|
|
187
|
-
},
|
|
188
|
-
});
|
|
189
|
-
|
|
190
|
-
// Ship the same repair gate for bundled and subsequently downloaded runtimes.
|
|
191
|
-
fs.cpSync(path.join(root, 'scripts'), path.join(serverDir, 'scripts'), { recursive: true });
|
|
192
|
-
run(runtimeNode, [path.join(serverDir, 'scripts/ensure-node-pty.cjs'), path.join(serverDir, 'node_modules/node-pty')], { cwd: serverDir });
|
|
193
|
-
makeSpawnHelpersExecutable(path.join(serverDir, 'node_modules', 'node-pty'));
|
|
194
|
-
run(runtimeNode, [
|
|
195
|
-
'-e',
|
|
196
|
-
[
|
|
197
|
-
"const {createRequire}=require('node:module')",
|
|
198
|
-
"const req=createRequire(process.cwd()+'/desktop-runtime-probe.cjs')",
|
|
199
|
-
"const pty=req('node-pty')",
|
|
200
|
-
"const child=pty.spawn(process.platform==='win32'?'cmd.exe':'/bin/sh',process.platform==='win32'?['/d','/s','/c','echo termdock-desktop-pty-ok']:['-lc','printf termdock-desktop-pty-ok'],{name:'xterm',cols:80,rows:24})",
|
|
201
|
-
"let output=''",
|
|
202
|
-
"child.onData((data)=>{output+=data})",
|
|
203
|
-
"child.onExit(()=>{if(!output.includes('termdock-desktop-pty-ok')){console.error(output);process.exit(1)}})",
|
|
204
|
-
].join(';'),
|
|
205
|
-
], { cwd: serverDir });
|
|
206
|
-
|
|
207
|
-
for (const name of ['tmux', 'rg', 'git', 'mkcert']) {
|
|
208
|
-
const source = executableOnPath(name);
|
|
209
|
-
if (!source) {
|
|
210
|
-
console.warn(`[desktop-runtime] optional bundled tool not found: ${name}`);
|
|
211
|
-
continue;
|
|
212
|
-
}
|
|
213
|
-
const destination = path.join(toolchainBinDir, name);
|
|
214
|
-
copyMacBinary(source, destination);
|
|
215
|
-
console.log(`[desktop-runtime] bundled ${name} from ${source}`);
|
|
216
|
-
}
|
|
217
|
-
|
|
218
|
-
const manifest = {
|
|
219
|
-
version: rootPackage.version,
|
|
220
|
-
platform: process.platform,
|
|
221
|
-
arch: process.arch,
|
|
222
|
-
nodeVersion: process.version,
|
|
223
|
-
createdAt: new Date().toISOString(),
|
|
224
|
-
tools: fs.readdirSync(toolchainBinDir).sort(),
|
|
225
|
-
runtimeCompatibility: runtimeManifest,
|
|
226
|
-
};
|
|
227
|
-
fs.writeFileSync(path.join(stage, 'manifest.json'), `${JSON.stringify(manifest, null, 2)}\n`);
|
|
228
|
-
console.log(`[desktop-runtime] ready at ${stage}`);
|