ryugi-artifacts 1.25.0 → 1.26.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (140) hide show
  1. package/dist/cli.cjs +5 -2
  2. package/dist/server.cjs +89 -20
  3. package/dist/viewer/{CloudDocument-DbBCNw2D.js → CloudDocument-D3S7e7RC.js} +1 -1
  4. package/dist/viewer/{CloudLiveDocument-B5pVs2rd.js → CloudLiveDocument-CRPSKpFi.js} +1 -1
  5. package/dist/viewer/{DocumentLayout-Ds9A-4Ya.js → DocumentLayout-DCqaPuH2.js} +4 -4
  6. package/dist/viewer/{DocumentPage-DboCpPXP.js → DocumentPage-U7FIJYbX.js} +1 -1
  7. package/dist/viewer/{abnfDiagram-VCTEODGH-Brpd1RlW.js → abnfDiagram-VCTEODGH-3r_i2uTk.js} +1 -1
  8. package/dist/viewer/{ar-SA-G6X2FPQ2-BbW5UO-r.js → ar-SA-G6X2FPQ2-CwNjAezr.js} +1 -1
  9. package/dist/viewer/{architectureDiagram-5GKGNRK7-BMS6dApX.js → architectureDiagram-5GKGNRK7-By620ee3.js} +1 -1
  10. package/dist/viewer/{az-AZ-76LH7QW2-70-wuCoO.js → az-AZ-76LH7QW2-CZFC99eK.js} +1 -1
  11. package/dist/viewer/{bg-BG-XCXSNQG7-D4e_645F.js → bg-BG-XCXSNQG7-CdHl5mL3.js} +1 -1
  12. package/dist/viewer/{blockDiagram-I7D4REHJ-Axkq7ASl.js → blockDiagram-I7D4REHJ-BBNwPBui.js} +1 -1
  13. package/dist/viewer/{bn-BD-2XOGV67Q-0wczW7AK.js → bn-BD-2XOGV67Q-BCcfNU1w.js} +1 -1
  14. package/dist/viewer/{c4Diagram-7LVT6UL2-DhNnDuF8.js → c4Diagram-7LVT6UL2-W0oo4SZL.js} +1 -1
  15. package/dist/viewer/{ca-ES-6MX7JW3Y-DC9ua84M.js → ca-ES-6MX7JW3Y-D1LVE_KZ.js} +1 -1
  16. package/dist/viewer/{chunk-4HAMMTFA-CYhM7R5j.js → chunk-4HAMMTFA-CkqsGoaq.js} +1 -1
  17. package/dist/viewer/{chunk-EIO257PC-BykOaiKr.js → chunk-EIO257PC-CU7XpdH7.js} +1 -1
  18. package/dist/viewer/{chunk-GMAD6QVW-CC7L2cgy.js → chunk-GMAD6QVW-BaeLTMI4.js} +1 -1
  19. package/dist/viewer/{chunk-GVQU2GXP-B9B3Uffn.js → chunk-GVQU2GXP-BIBhDhue.js} +1 -1
  20. package/dist/viewer/{chunk-IMKFNOWR-QLLc7dWD.js → chunk-IMKFNOWR-CEG0s9FD.js} +1 -1
  21. package/dist/viewer/{chunk-L3NEJ4N5-CWP-SNdl.js → chunk-L3NEJ4N5-Ck17hjBg.js} +1 -1
  22. package/dist/viewer/{chunk-OSK3NFVY-BZxwKSPw.js → chunk-OSK3NFVY-CNSvj6xi.js} +1 -1
  23. package/dist/viewer/{chunk-PWAF6VOD-D2_jxpxl.js → chunk-PWAF6VOD-mVgGIJrT.js} +1 -1
  24. package/dist/viewer/{chunk-SHT3W25Y-VC45lCjU.js → chunk-SHT3W25Y-C4Y6RPj0.js} +1 -1
  25. package/dist/viewer/{chunk-SVP7TREG-Sj4kR_YS.js → chunk-SVP7TREG-Casm8Nvh.js} +1 -1
  26. package/dist/viewer/{chunk-TICWLB2K-CvUhoOJw.js → chunk-TICWLB2K-CoU4Z4HC.js} +1 -1
  27. package/dist/viewer/{classDiagram-ZZMXUADV-C-yMvOAt.js → classDiagram-ZZMXUADV-D6UCj2L0.js} +1 -1
  28. package/dist/viewer/{classDiagram-v2-VYDZK3BY-C-yMvOAt.js → classDiagram-v2-VYDZK3BY-D6UCj2L0.js} +1 -1
  29. package/dist/viewer/{cs-CZ-2BRQDIVT-XbkJpsQj.js → cs-CZ-2BRQDIVT-5Fad8-92.js} +1 -1
  30. package/dist/viewer/{cynefinDiagram-5FMLGOSQ-Yy8JKQ_2.js → cynefinDiagram-5FMLGOSQ-B2ZRSjmw.js} +1 -1
  31. package/dist/viewer/{da-DK-5WZEPLOC-DV1-tMZF.js → da-DK-5WZEPLOC-BFBLv4Uk.js} +1 -1
  32. package/dist/viewer/{dagre-GXQ25YYZ-DXldFrG3.js → dagre-GXQ25YYZ-BFgBhyr3.js} +1 -1
  33. package/dist/viewer/{de-DE-XR44H4JA-DxTWrl8W.js → de-DE-XR44H4JA-qyJtGLTH.js} +1 -1
  34. package/dist/viewer/{diagram-S7CK7UJ4-DiRMsye-.js → diagram-S7CK7UJ4-hmI-Gut0.js} +1 -1
  35. package/dist/viewer/{diagram-UQ7AKVKN-C2rmPjrN.js → diagram-UQ7AKVKN-DPjoAEc4.js} +1 -1
  36. package/dist/viewer/{diagram-VX7I27RA-DZZhObnA.js → diagram-VX7I27RA-GCjWgZ9y.js} +1 -1
  37. package/dist/viewer/{diagram-Z3DM3KII-D77Eat5h.js → diagram-Z3DM3KII-C2M991ko.js} +1 -1
  38. package/dist/viewer/{dist-Dzz5DlJ9.js → dist-42dQbZqK.js} +1 -1
  39. package/dist/viewer/{dist-CFE1y6m7.js → dist-B2zokIna.js} +1 -1
  40. package/dist/viewer/{dist-DJKWnL3r.js → dist-BE-ykq1O.js} +1 -1
  41. package/dist/viewer/{dist-CDjN1ndo.js → dist-BGIgMJuT.js} +1 -1
  42. package/dist/viewer/{dist-Dhyna9th.js → dist-BL8ZPE60.js} +1 -1
  43. package/dist/viewer/{dist-D8kvlqzF.js → dist-BMLwzVoq.js} +1 -1
  44. package/dist/viewer/{dist-bdqt2Frs.js → dist-BVz3Wdll.js} +1 -1
  45. package/dist/viewer/{dist-Dkx42CNh.js → dist-Bt08qAY3.js} +1 -1
  46. package/dist/viewer/{dist-BR2dIkkd.js → dist-ByR4-IkI.js} +1 -1
  47. package/dist/viewer/{dist-ZrNcGIZF.js → dist-C3FADbMn.js} +4 -4
  48. package/dist/viewer/{dist-hE06xGmt.js → dist-C8Q-Pgp3.js} +1 -1
  49. package/dist/viewer/{dist-17nTlkIe.js → dist-CXDzUM_N.js} +1 -1
  50. package/dist/viewer/{dist-Bv7ULwLL.js → dist-CdTPm-OW.js} +1 -1
  51. package/dist/viewer/{dist-BhrJsMRi.js → dist-DB07IXf4.js} +1 -1
  52. package/dist/viewer/{dist-BzUOV89P.js → dist-DI3XZN2p.js} +1 -1
  53. package/dist/viewer/{dist-1O754465.js → dist-DT7JKS37.js} +1 -1
  54. package/dist/viewer/{dist-DwbJftDI.js → dist-DXMGdH-z.js} +1 -1
  55. package/dist/viewer/{dist-Cx6OfxTc.js → dist-DqKbfOWo.js} +1 -1
  56. package/dist/viewer/{dist-CmtmDARI.js → dist-Dwk2pFvp.js} +1 -1
  57. package/dist/viewer/{dist-FOOPjNYH.js → dist-DywgOf-d.js} +1 -1
  58. package/dist/viewer/{dist-XN9R9kRh.js → dist-GN5sxa0R.js} +1 -1
  59. package/dist/viewer/{dist-kPop0EJT.js → dist-Ogq2hBPJ.js} +1 -1
  60. package/dist/viewer/{dist-vfH8ORPT.js → dist-Yrf-RYLb.js} +1 -1
  61. package/dist/viewer/{dist-BeeqwauU.js → dist-zqqKIyiY.js} +1 -1
  62. package/dist/viewer/{ebnfDiagram-PWID7BFC-BtAy0Tb1.js → ebnfDiagram-PWID7BFC-DL8-fLh7.js} +1 -1
  63. package/dist/viewer/{el-GR-BZB4AONW-BOKdlh7s.js → el-GR-BZB4AONW-D-E4EuSl.js} +1 -1
  64. package/dist/viewer/{en-B4ZKOASM-8FW6YS74.js → en-B4ZKOASM-nyCkEpWd.js} +1 -1
  65. package/dist/viewer/{erDiagram-RLTQ6QDP-C9QLuksP.js → erDiagram-RLTQ6QDP-BqSCLMWa.js} +1 -1
  66. package/dist/viewer/{es-ES-U4NZUMDT-DK-35lQh.js → es-ES-U4NZUMDT-BWAoORmX.js} +1 -1
  67. package/dist/viewer/{eu-ES-A7QVB2H4-D2jhOjSH.js → eu-ES-A7QVB2H4-DtV46eSh.js} +1 -1
  68. package/dist/viewer/{fa-IR-HGAKTJCU-C8ZEk4kn.js → fa-IR-HGAKTJCU-BR6zB-uH.js} +1 -1
  69. package/dist/viewer/{fi-FI-Z5N7JZ37-TO_gvBtw.js → fi-FI-Z5N7JZ37-Bd3JIrkT.js} +1 -1
  70. package/dist/viewer/flowDiagram-HODETNUW-BRezqzgn.js +1 -0
  71. package/dist/viewer/{fr-FR-RHASNOE6-DFO1e9NV.js → fr-FR-RHASNOE6-CppFZqNA.js} +1 -1
  72. package/dist/viewer/{ganttDiagram-EL5Y4UJY-DbLQ4Ecz.js → ganttDiagram-EL5Y4UJY-CEu1jOoU.js} +1 -1
  73. package/dist/viewer/{gl-ES-HMX3MZ6V-CioNUqYL.js → gl-ES-HMX3MZ6V-D7Y53A4G.js} +1 -1
  74. package/dist/viewer/{he-IL-6SHJWFNN-DqWMzMec.js → he-IL-6SHJWFNN-CY-wLZAr.js} +1 -1
  75. package/dist/viewer/{hi-IN-IWLTKZ5I-Banp69tJ.js → hi-IN-IWLTKZ5I-DVJuRdDe.js} +1 -1
  76. package/dist/viewer/{hu-HU-A5ZG7DT2-CP80C_oD.js → hu-HU-A5ZG7DT2-CKLayeMf.js} +1 -1
  77. package/dist/viewer/{id-ID-SAP4L64H-suHP6FQZ.js → id-ID-SAP4L64H-CYt7c7f4.js} +1 -1
  78. package/dist/viewer/{image-GAAHSSAO-C2xhPNdh.js → image-GAAHSSAO-CjEkSOs2.js} +1 -1
  79. package/dist/viewer/index.js +7 -7
  80. package/dist/viewer/{infoDiagram-27XIBGKW-cIfHiUYr.js → infoDiagram-27XIBGKW-Dpr34g-Z.js} +1 -1
  81. package/dist/viewer/{ishikawaDiagram-5VMMS53U-ptUOa9TA.js → ishikawaDiagram-5VMMS53U-B-hfckVK.js} +1 -1
  82. package/dist/viewer/{it-IT-JPQ66NNP-DIGgNJ1T.js → it-IT-JPQ66NNP-Odx1hSA-.js} +1 -1
  83. package/dist/viewer/{ja-JP-DBVTYXUO-D9Yr6TZy.js → ja-JP-DBVTYXUO-gIE5dmB-.js} +1 -1
  84. package/dist/viewer/{journeyDiagram-3NMN7TZE-BQRC7EoU.js → journeyDiagram-3NMN7TZE-D_FnYj8i.js} +1 -1
  85. package/dist/viewer/{kaa-6HZHGXH3-QNvyeMuI.js → kaa-6HZHGXH3-B6ZYHIQ6.js} +1 -1
  86. package/dist/viewer/{kab-KAB-ZGHBKWFO-BfwpvpxF.js → kab-KAB-ZGHBKWFO-Da2SBW6w.js} +1 -1
  87. package/dist/viewer/{kanban-definition-UXKFOSKX-CNn14by3.js → kanban-definition-UXKFOSKX-JBHo4MMu.js} +1 -1
  88. package/dist/viewer/{kk-KZ-P5N5QNE5-D_Ltivv-.js → kk-KZ-P5N5QNE5-BmXrsfBx.js} +1 -1
  89. package/dist/viewer/{km-KH-HSX4SM5Z-BcUHv5LE.js → km-KH-HSX4SM5Z-B4L5JI34.js} +1 -1
  90. package/dist/viewer/{ko-KR-MTYHY66A-0mBEcDey.js → ko-KR-MTYHY66A-MXhfFcg1.js} +1 -1
  91. package/dist/viewer/{ku-TR-6OUDTVRD-BUsanIWi.js → ku-TR-6OUDTVRD-CkgfpJpw.js} +1 -1
  92. package/dist/viewer/{lt-LT-XHIRWOB4-BSu4_CWZ.js → lt-LT-XHIRWOB4-DW8fVSzC.js} +1 -1
  93. package/dist/viewer/{lv-LV-5QDEKY6T-BXNXeNTd.js → lv-LV-5QDEKY6T-DN5qFDVd.js} +1 -1
  94. package/dist/viewer/{mindmap-definition-YA3MSWOX-sy_pMr7G.js → mindmap-definition-YA3MSWOX-BqBzYnHU.js} +1 -1
  95. package/dist/viewer/{mr-IN-CRQNXWMA-qWN8Si5W.js → mr-IN-CRQNXWMA-BtKz2Eiz.js} +1 -1
  96. package/dist/viewer/{my-MM-5M5IBNSE-Be_srPPh.js → my-MM-5M5IBNSE-BE3fojCJ.js} +1 -1
  97. package/dist/viewer/{nb-NO-T6EIAALU-BDfYN1Al.js → nb-NO-T6EIAALU-D6TzkiN5.js} +1 -1
  98. package/dist/viewer/{nl-NL-IS3SIHDZ-CfAshA_G.js → nl-NL-IS3SIHDZ-CFz9XZrF.js} +1 -1
  99. package/dist/viewer/{nn-NO-6E72VCQL-CcGBoumS.js → nn-NO-6E72VCQL-BtqyyXIG.js} +1 -1
  100. package/dist/viewer/{oc-FR-POXYY2M6-BbSWGurU.js → oc-FR-POXYY2M6-Y5Cl6BCx.js} +1 -1
  101. package/dist/viewer/{pa-IN-N4M65BXN-DPO2pQDw.js → pa-IN-N4M65BXN-CwDhAj5G.js} +1 -1
  102. package/dist/viewer/{pegDiagram-XKGWAZYB-DpGIxLMI.js → pegDiagram-XKGWAZYB-DWX_F2Dw.js} +1 -1
  103. package/dist/viewer/percentages-BXMCSKIN-B0PKM54b.js +1 -0
  104. package/dist/viewer/{pieDiagram-E7YTZNPT-IcewqVPH.js → pieDiagram-E7YTZNPT-cO8NWDVq.js} +1 -1
  105. package/dist/viewer/{pl-PL-T2D74RX3-BckSoc_Y.js → pl-PL-T2D74RX3-Ce-3yAtJ.js} +1 -1
  106. package/dist/viewer/{prod-A7Umh8Gn.js → prod-CLgKnmys.js} +8 -8
  107. package/dist/viewer/{pt-BR-5N22H2LF-DEFbi7IP.js → pt-BR-5N22H2LF-B9ovUxsk.js} +1 -1
  108. package/dist/viewer/{pt-PT-UZXXM6DQ-BhqMPW44.js → pt-PT-UZXXM6DQ-B_ZeBHpV.js} +1 -1
  109. package/dist/viewer/{quadrantDiagram-AXDQQJYC-B-ygMB2U.js → quadrantDiagram-AXDQQJYC-D_lbVSgg.js} +1 -1
  110. package/dist/viewer/{railroadDiagram-O6MQD6OU-Cj-pFQmg.js → railroadDiagram-O6MQD6OU-BM1YiPzi.js} +1 -1
  111. package/dist/viewer/{requirementDiagram-BXWQKSXE-DttdunDj.js → requirementDiagram-BXWQKSXE-BqqWiApZ.js} +1 -1
  112. package/dist/viewer/{ro-RO-JPDTUUEW-BYi2-4-R.js → ro-RO-JPDTUUEW-CWSGs13z.js} +1 -1
  113. package/dist/viewer/{ru-RU-B4JR7IUQ-BgxG_GLL.js → ru-RU-B4JR7IUQ-Cyw1cykq.js} +1 -1
  114. package/dist/viewer/{sequenceDiagram-WJ2MYXX4-D3mrIkWD.js → sequenceDiagram-WJ2MYXX4-Cbt6VzGR.js} +1 -1
  115. package/dist/viewer/{si-LK-N5RQ5JYF-B3v1n2Ac.js → si-LK-N5RQ5JYF-kiNYcIfx.js} +1 -1
  116. package/dist/viewer/{sk-SK-C5VTKIMK-DZl_0d3B.js → sk-SK-C5VTKIMK-B7ki64Vo.js} +1 -1
  117. package/dist/viewer/{sl-SI-NN7IZMDC-BZgoamdA.js → sl-SI-NN7IZMDC-Bfw6P3Pg.js} +1 -1
  118. package/dist/viewer/{stateDiagram-D77RDMKH-D9pc1HyB.js → stateDiagram-D77RDMKH-DCZ2vSP1.js} +1 -1
  119. package/dist/viewer/{stateDiagram-v2-MP3YSRHH-2UvrV37a.js → stateDiagram-v2-MP3YSRHH-zcIB9aMp.js} +1 -1
  120. package/dist/viewer/subset-shared.chunk-DeW66Lwh.js +1 -0
  121. package/dist/viewer/{subset-worker.chunk-Bd8ucm57.js → subset-worker.chunk-CLv09uw4.js} +1 -1
  122. package/dist/viewer/{sv-SE-XGPEYMSR-BEQYEGKg.js → sv-SE-XGPEYMSR-Dd33JzgN.js} +1 -1
  123. package/dist/viewer/{swimlanes-42K2YHIH-D22Inp64.js → swimlanes-42K2YHIH-BzMr0L-8.js} +1 -1
  124. package/dist/viewer/{swimlanesDiagram-VR7AAH4N-CuqPd6HM.js → swimlanesDiagram-VR7AAH4N-BrdAbdj0.js} +1 -1
  125. package/dist/viewer/{ta-IN-2NMHFXQM-CyRxQL3p.js → ta-IN-2NMHFXQM-C3tYlmxb.js} +1 -1
  126. package/dist/viewer/{th-TH-HPSO5L25-BhWJMD6f.js → th-TH-HPSO5L25-CMjireIs.js} +1 -1
  127. package/dist/viewer/{timeline-definition-24CTP7MA-BFA-sFgt.js → timeline-definition-24CTP7MA-BJYzYYGo.js} +1 -1
  128. package/dist/viewer/{tr-TR-DEFEU3FU-DMDGJnK-.js → tr-TR-DEFEU3FU-C5O33K6o.js} +1 -1
  129. package/dist/viewer/{uk-UA-QMV73CPH-DmPABGgR.js → uk-UA-QMV73CPH-m01EdSwq.js} +1 -1
  130. package/dist/viewer/{vennDiagram-4TSXK5OY-CeGCVdJx.js → vennDiagram-4TSXK5OY-DK9-uj1H.js} +1 -1
  131. package/dist/viewer/{vi-VN-M7AON7JQ-D88dtyMx.js → vi-VN-M7AON7JQ-Cwye8jKZ.js} +1 -1
  132. package/dist/viewer/{wardleyDiagram-VM6X3IG4-BCmncTX7.js → wardleyDiagram-VM6X3IG4-BTYwSp7p.js} +1 -1
  133. package/dist/viewer/{xychartDiagram-S5SC5T6Z-CZdaTITq.js → xychartDiagram-S5SC5T6Z-B8APE590.js} +1 -1
  134. package/dist/viewer/{zh-CN-LNUGB5OW-Df3QE7u3.js → zh-CN-LNUGB5OW-aECTzkFT.js} +1 -1
  135. package/dist/viewer/{zh-HK-E62DVLB3-BRBXHeIK.js → zh-HK-E62DVLB3-49C3nMPL.js} +1 -1
  136. package/dist/viewer/{zh-TW-RAJ6MFWO-DJmITs75.js → zh-TW-RAJ6MFWO-Dbh3W6RH.js} +1 -1
  137. package/package.json +16 -16
  138. package/dist/viewer/flowDiagram-HODETNUW-5Hsw_-ox.js +0 -1
  139. package/dist/viewer/percentages-BXMCSKIN-Bwa1Mbu5.js +0 -1
  140. package/dist/viewer/subset-shared.chunk-CoDQMzue.js +0 -1
package/dist/cli.cjs CHANGED
@@ -367,6 +367,9 @@ function isCloudRecord(value) {
367
367
  const { id, url, publishedAt, visibility } = value;
368
368
  return typeof id === "string" && typeof url === "string" && (typeof publishedAt === "string" || publishedAt === null) && isVisibility(visibility);
369
369
  }
370
+ function cloudRecord({ id, url, publishedAt, visibility, fingerprint }) {
371
+ return { id, url, publishedAt, visibility, ...typeof fingerprint === "string" ? { fingerprint } : {} };
372
+ }
370
373
  function normalize(raw) {
371
374
  const config2 = defaults();
372
375
  if (typeof raw !== "object" || raw === null) return config2;
@@ -380,7 +383,7 @@ function normalize(raw) {
380
383
  if (visibility !== void 0 && !isVisibility(visibility)) continue;
381
384
  const entry = {};
382
385
  if (visibility) entry.visibility = visibility;
383
- if (isCloudRecord(cloud)) entry.cloud = { id: cloud.id, url: cloud.url, publishedAt: cloud.publishedAt, visibility: cloud.visibility };
386
+ if (isCloudRecord(cloud)) entry.cloud = cloudRecord(cloud);
384
387
  if (autoPublish2 === false) entry.autoPublish = false;
385
388
  config2.artifacts[key] = entry;
386
389
  }
@@ -922,7 +925,7 @@ async function main(argv) {
922
925
  }, emit);
923
926
  }
924
927
  if (command === "--version" || command === "-v") {
925
- console.log("1.25.0");
928
+ console.log("1.26.1");
926
929
  return 0;
927
930
  }
928
931
  if (command === "--help" || command === "-h") {
package/dist/server.cjs CHANGED
@@ -5422,7 +5422,7 @@ function customAlphabet(alphabet, defaultSize = 21) {
5422
5422
  }
5423
5423
  var nanoid = customAlphabet(urlAlphabet);
5424
5424
 
5425
- // node_modules/.pnpm/@haklex+rich-litexml@0.54.1_typescript@5.9.3/node_modules/@haklex/rich-litexml/dist/src-BcPLrM3G.js
5425
+ // node_modules/.pnpm/@haklex+rich-litexml@0.54.2_typescript@5.9.3/node_modules/@haklex/rich-litexml/dist/src-BcPLrM3G.js
5426
5426
  var impl = null;
5427
5427
  function registerParseHTML(fn5) {
5428
5428
  impl = fn5;
@@ -17569,7 +17569,7 @@ function Document4() {
17569
17569
  }
17570
17570
  setPrototypeOf(Document4, Document2).prototype = Document2.prototype;
17571
17571
 
17572
- // node_modules/.pnpm/@haklex+rich-litexml@0.54.1_typescript@5.9.3/node_modules/@haklex/rich-litexml/dist/node.mjs
17572
+ // node_modules/.pnpm/@haklex+rich-litexml@0.54.2_typescript@5.9.3/node_modules/@haklex/rich-litexml/dist/node.mjs
17573
17573
  registerParseHTML((html) => parseHTML2(html).document);
17574
17574
 
17575
17575
  // node_modules/.pnpm/nanoid@5.1.16/node_modules/nanoid/index.js
@@ -53028,7 +53028,7 @@ decorateMethods(EphemeralStoreWasm.prototype, [
53028
53028
  ]);
53029
53029
  decorateMethods(UndoManager.prototype, ["undo", "redo"]);
53030
53030
 
53031
- // node_modules/.pnpm/@haklex+rich-collab-loro@0.54.1_lexical@0.52.0_typescript@5.9.3__loro-crdt@1.16.4/node_modules/@haklex/rich-collab-loro/dist/index.mjs
53031
+ // node_modules/.pnpm/@haklex+rich-collab-loro@0.54.2_lexical@0.52.0_typescript@5.9.3__loro-crdt@1.16.4/node_modules/@haklex/rich-collab-loro/dist/index.mjs
53032
53032
  function transformOffset(previous, next, offset) {
53033
53033
  const limit = Math.min(previous.length, next.length);
53034
53034
  let prefix = 0;
@@ -84443,7 +84443,7 @@ var UNORDERED_LIST2 = mod28.UNORDERED_LIST;
84443
84443
  var isTableRowDivider2 = mod28.isTableRowDivider;
84444
84444
  var registerMarkdownShortcuts2 = mod28.registerMarkdownShortcuts;
84445
84445
 
84446
- // node_modules/.pnpm/@haklex+rich-headless@0.54.1_lexical@0.52.0_typescript@5.9.3__typescript@5.9.3/node_modules/@haklex/rich-headless/dist/transformers.mjs
84446
+ // node_modules/.pnpm/@haklex+rich-headless@0.54.2_lexical@0.52.0_typescript@5.9.3__typescript@5.9.3/node_modules/@haklex/rich-headless/dist/transformers.mjs
84447
84447
  var NEVER = /a^/;
84448
84448
  var NOOP = () => {
84449
84449
  };
@@ -87115,7 +87115,7 @@ var signal2 = mod43.signal;
87115
87115
  var untracked2 = mod43.untracked;
87116
87116
  var watchedSignal3 = mod43.watchedSignal;
87117
87117
 
87118
- // node_modules/.pnpm/@haklex+rich-headless@0.54.1_lexical@0.52.0_typescript@5.9.3__typescript@5.9.3/node_modules/@haklex/rich-headless/dist/index.mjs
87118
+ // node_modules/.pnpm/@haklex+rich-headless@0.54.2_lexical@0.52.0_typescript@5.9.3__typescript@5.9.3/node_modules/@haklex/rich-headless/dist/index.mjs
87119
87119
  var builtinNodes = [
87120
87120
  HeadingNode2,
87121
87121
  QuoteNode2,
@@ -89270,6 +89270,9 @@ function isCloudRecord(value) {
89270
89270
  const { id: id2, url, publishedAt, visibility } = value;
89271
89271
  return typeof id2 === "string" && typeof url === "string" && (typeof publishedAt === "string" || publishedAt === null) && isVisibility(visibility);
89272
89272
  }
89273
+ function cloudRecord({ id: id2, url, publishedAt, visibility, fingerprint }) {
89274
+ return { id: id2, url, publishedAt, visibility, ...typeof fingerprint === "string" ? { fingerprint } : {} };
89275
+ }
89273
89276
  function normalize(raw) {
89274
89277
  const config = defaults();
89275
89278
  if (typeof raw !== "object" || raw === null) return config;
@@ -89283,7 +89286,7 @@ function normalize(raw) {
89283
89286
  if (visibility !== void 0 && !isVisibility(visibility)) continue;
89284
89287
  const entry = {};
89285
89288
  if (visibility) entry.visibility = visibility;
89286
- if (isCloudRecord(cloud)) entry.cloud = { id: cloud.id, url: cloud.url, publishedAt: cloud.publishedAt, visibility: cloud.visibility };
89289
+ if (isCloudRecord(cloud)) entry.cloud = cloudRecord(cloud);
89287
89290
  if (autoPublish2 === false) entry.autoPublish = false;
89288
89291
  config.artifacts[key2] = entry;
89289
89292
  }
@@ -89896,7 +89899,7 @@ var LOGIN_STATE_TTL_MS = 10 * 60 * 1e3;
89896
89899
  var UPLOAD_CONCURRENCY = 6;
89897
89900
  var MAX_JSON_BODY = 4096;
89898
89901
  var CLOUD_ID = /^[A-Za-z0-9_-]{1,64}$/;
89899
- var ROUTE = /^\/api\/cloud\/(status|login|logout|artifacts|publish|reserve|visibility|auto-publish)(?:\/([^/]+)(?:\/([^/]+))?)?$/;
89902
+ var ROUTE = /^\/api\/cloud\/(status|login|logout|artifacts|publish|reserve|visibility|auto-publish|sync)(?:\/([^/]+)(?:\/([^/]+))?)?$/;
89900
89903
  var SignedOut = class extends Error {
89901
89904
  };
89902
89905
  var CloudRefused = class extends Error {
@@ -89938,6 +89941,11 @@ async function errorMessage(res) {
89938
89941
  return text2 || res.statusText;
89939
89942
  }
89940
89943
  }
89944
+ function fingerprintPayload(payload) {
89945
+ const versions = payload.versions;
89946
+ if (!versions) return payload;
89947
+ return { ...payload, versions: Object.fromEntries(Object.entries(versions).map(([file, version2]) => [file, version2 > 0])) };
89948
+ }
89941
89949
  function createCloudRoutes(options) {
89942
89950
  const { origin, credentialsFile: credentialsFile2, configFile, project } = options;
89943
89951
  const settingsFile = settingsFileFor(credentialsFile2);
@@ -90015,22 +90023,43 @@ function createCloudRoutes(options) {
90015
90023
  }
90016
90024
  return artifactEntry(key2).cloud?.url ?? null;
90017
90025
  };
90018
- const publish = async (ref, requested, { recreate = true } = {}) => {
90026
+ const prepare = async (ref) => {
90019
90027
  const inspected = await options.inspect(ref);
90020
90028
  if (!inspected) throw new CloudRefused(404, `${ref.type}/${ref.id} not found`);
90021
- if (inspected.reasons.length > 0 || !inspected.payload) return { status: 409, body: { error: "fix these before publishing", reasons: inspected.reasons } };
90022
- let files;
90029
+ if (inspected.reasons.length > 0 || !inspected.payload) return { ready: false, reasons: inspected.reasons };
90030
+ let packed;
90023
90031
  try {
90024
- files = withCloudRuntime(ref.type, packArtifact(inspected.dir, ref.type));
90032
+ packed = packArtifact(inspected.dir, ref.type);
90025
90033
  } catch (err) {
90026
90034
  throw new CloudRefused(413, err.message);
90027
90035
  }
90036
+ const sha = (data) => import_node_crypto6.default.createHash("sha256").update(data).digest("hex");
90037
+ const hashed = withCloudRuntime(ref.type, packed).map((file) => ({ ...file, hash: sha(file.data) }));
90038
+ const content = { title: inspected.title, payload: inspected.payload, files: hashed.map(({ path: path22, hash }) => ({ path: path22, hash })) };
90039
+ const fingerprint = sha(JSON.stringify({ title: inspected.title, payload: fingerprintPayload(inspected.payload), files: packed.map((file) => ({ path: file.path, hash: sha(file.data) })) }));
90040
+ return { ready: true, hashed, content, fingerprint };
90041
+ };
90042
+ const upToDate = async (ref) => {
90043
+ const cloud = artifactEntry(`${ref.type}/${ref.id}`).cloud;
90044
+ if (!cloud?.publishedAt) {
90045
+ if (!await options.inspect(ref)) throw new CloudRefused(404, `${ref.type}/${ref.id} not found`);
90046
+ return null;
90047
+ }
90048
+ const prepared = await prepare(ref);
90049
+ return prepared.ready ? prepared.fingerprint === cloud.fingerprint : null;
90050
+ };
90051
+ const publish = async (ref, requested, { recreate = true, skipUnchanged = false } = {}) => {
90052
+ const prepared = await prepare(ref);
90053
+ if (!prepared.ready) return { status: 409, body: { error: "fix these before publishing", reasons: prepared.reasons } };
90054
+ const { hashed, content, fingerprint } = prepared;
90028
90055
  const key2 = `${ref.type}/${ref.id}`;
90029
90056
  const entry = artifactEntry(key2);
90030
- const hashed = files.map((file) => ({ ...file, hash: import_node_crypto6.default.createHash("sha256").update(file.data).digest("hex") }));
90057
+ const current = entry.cloud;
90058
+ if (skipUnchanged && current?.publishedAt && current.fingerprint === fingerprint) {
90059
+ return { status: 200, body: { id: current.id, url: current.url, visibility: current.visibility, publishedAt: current.publishedAt } };
90060
+ }
90031
90061
  const byHash = new Map(hashed.map((file) => [file.hash, file.data]));
90032
- const manifest = hashed.map(({ path: path22, hash }) => ({ path: path22, hash }));
90033
- const version2 = (visibility) => ({ title: inspected.title, payload: inspected.payload, files: manifest, project, ...visibility ? { visibility } : {} });
90062
+ const version2 = (visibility) => ({ ...content, project, ...visibility ? { visibility } : {} });
90034
90063
  const create3 = () => createRecord2(ref, requested ?? entry.visibility ?? "private");
90035
90064
  const upload = async (id2, hashes) => {
90036
90065
  for (let i6 = 0; i6 < hashes.length; i6 += UPLOAD_CONCURRENCY) {
@@ -90059,7 +90088,7 @@ function createCloudRoutes(options) {
90059
90088
  const published = await (await expectOk(res)).json();
90060
90089
  updateArtifactConfig(configFile, key2, {
90061
90090
  visibility: published.visibility,
90062
- cloud: { id: published.id, url: published.url, publishedAt: published.updatedAt, visibility: published.visibility }
90091
+ cloud: { id: published.id, url: published.url, publishedAt: published.updatedAt, visibility: published.visibility, fingerprint }
90063
90092
  });
90064
90093
  return { status: 200, body: { id: published.id, url: published.url, visibility: published.visibility, publishedAt: published.updatedAt } };
90065
90094
  };
@@ -90099,7 +90128,7 @@ function createCloudRoutes(options) {
90099
90128
  const entry = artifactEntry(key2);
90100
90129
  if (entry.autoPublish === false) return { kind: "opted-out" };
90101
90130
  try {
90102
- const result = await publish(ref, void 0, { recreate: false });
90131
+ const result = await publish(ref, void 0, { recreate: false, skipUnchanged: true });
90103
90132
  if (result.status !== 200) return { kind: "not-ready" };
90104
90133
  return { kind: "published", created: result.body.id !== entry.cloud?.id };
90105
90134
  } catch (err) {
@@ -90162,6 +90191,10 @@ function createCloudRoutes(options) {
90162
90191
  sendJson(res, result.status, result.body);
90163
90192
  return;
90164
90193
  }
90194
+ if (action === "sync" && ref && method === "GET") {
90195
+ sendJson(res, 200, { upToDate: await serialized(`${ref.type}/${ref.id}`, () => upToDate(ref)) });
90196
+ return;
90197
+ }
90165
90198
  if (action === "reserve" && ref && method === "POST") {
90166
90199
  sendJson(res, 200, { url: await serialized(`${ref.type}/${ref.id}`, () => reserve(ref)) });
90167
90200
  return;
@@ -90398,6 +90431,8 @@ function allowInlineScripts(csp, html) {
90398
90431
  // src/server/auto-publish.ts
90399
90432
  var import_node_crypto8 = __toESM(require("node:crypto"), 1);
90400
90433
  var import_node_fs20 = __toESM(require("node:fs"), 1);
90434
+ var IDLE_MS = 5 * 60 * 1e3;
90435
+ var MAX_WAIT_MS = 15 * 60 * 1e3;
90401
90436
  var SIGNED_OUT_MESSAGE = "auto-publish paused: the Ryugi Cloud sign-in expired";
90402
90437
  function isNotice(value) {
90403
90438
  if (typeof value !== "object" || value === null) return false;
@@ -90429,7 +90464,20 @@ function createAutoPublisher(options) {
90429
90464
  const raise = (kind, message) => {
90430
90465
  if (notice?.kind !== kind) notice = { id: import_node_crypto8.default.randomUUID(), kind, message };
90431
90466
  };
90467
+ let idleTimer = null;
90468
+ let maxTimer = null;
90469
+ const clearTimers = () => {
90470
+ if (idleTimer) clearTimeout(idleTimer);
90471
+ if (maxTimer) clearTimeout(maxTimer);
90472
+ idleTimer = maxTimer = null;
90473
+ };
90474
+ const schedule = () => {
90475
+ if (idleTimer) clearTimeout(idleTimer);
90476
+ idleTimer = setTimeout(() => void flush(), options.idleMs ?? IDLE_MS).unref();
90477
+ maxTimer ??= setTimeout(() => void flush(), options.maxWaitMs ?? MAX_WAIT_MS).unref();
90478
+ };
90432
90479
  const run2 = async () => {
90480
+ clearTimers();
90433
90481
  if (!options.enabled() || dirty.size === 0) return;
90434
90482
  const token = options.token();
90435
90483
  if (paused && paused.token === token) return;
@@ -90437,6 +90485,7 @@ function createAutoPublisher(options) {
90437
90485
  paused = null;
90438
90486
  if (notice?.kind === "signed-out") notice = null;
90439
90487
  }
90488
+ let retry = false;
90440
90489
  for (const key2 of [...dirty]) {
90441
90490
  remarked.delete(key2);
90442
90491
  const outcome = await options.publish(key2);
@@ -90446,15 +90495,19 @@ function createAutoPublisher(options) {
90446
90495
  break;
90447
90496
  }
90448
90497
  if (outcome.kind === "published") {
90449
- if (!remarked.has(key2)) dirty.delete(key2);
90498
+ if (remarked.has(key2)) retry = true;
90499
+ else dirty.delete(key2);
90450
90500
  if (outcome.created && notice?.kind === "cap") notice = null;
90451
90501
  } else if (outcome.kind === "opted-out" || outcome.kind === "gone") {
90452
90502
  dirty.delete(key2);
90453
90503
  } else if (outcome.kind === "cannot-create") {
90454
90504
  raise("cap", outcome.message);
90505
+ } else {
90506
+ retry = true;
90455
90507
  }
90456
90508
  }
90457
90509
  save();
90510
+ if (retry) schedule();
90458
90511
  };
90459
90512
  let running = null;
90460
90513
  let queued = null;
@@ -90471,18 +90524,21 @@ function createAutoPublisher(options) {
90471
90524
  });
90472
90525
  return queued;
90473
90526
  };
90527
+ if (dirty.size > 0) schedule();
90474
90528
  return {
90475
90529
  changed(key2) {
90476
90530
  if (!options.enabled()) return;
90477
90531
  dirty.add(key2);
90478
90532
  remarked.add(key2);
90479
90533
  save();
90534
+ schedule();
90480
90535
  },
90481
90536
  removed(key2) {
90482
90537
  if (!dirty.delete(key2)) return;
90483
90538
  save();
90484
90539
  },
90485
- flush
90540
+ flush,
90541
+ close: clearTimers
90486
90542
  };
90487
90543
  }
90488
90544
 
@@ -90709,7 +90765,19 @@ async function startArtifactsServer(options) {
90709
90765
  return { dir, title, reasons, payload: published };
90710
90766
  };
90711
90767
  const cloud = options.cloud && options.configFile ? createCloudRoutes({ ...options.cloud, configFile: options.configFile, project: import_node_path20.default.basename(import_node_path20.default.resolve(root, "../..")), port: () => port, inspect }) : null;
90712
- const autoPublisher = cloud ? createAutoPublisher({ stateFile: import_node_path20.default.join(stateDir, "auto-publish.json"), enabled: cloud.autoPublishEnabled, token: cloud.token, publish: cloud.autoPublish }) : null;
90768
+ const autoPublisher = cloud ? createAutoPublisher({
90769
+ stateFile: import_node_path20.default.join(stateDir, "auto-publish.json"),
90770
+ enabled: cloud.autoPublishEnabled,
90771
+ token: cloud.token,
90772
+ publish: async (key2) => {
90773
+ const outcome = await cloud.autoPublish(key2);
90774
+ if (outcome.kind === "published") {
90775
+ const frame = textFrame(JSON.stringify({ type: "cloud-published", artifact: key2 }));
90776
+ for (const socket of clients) socket.write(frame);
90777
+ }
90778
+ return outcome;
90779
+ }
90780
+ }) : null;
90713
90781
  const sameOrigin = (req) => {
90714
90782
  const origin2 = req.headers.origin;
90715
90783
  const host = req.headers.host ?? "";
@@ -91366,6 +91434,7 @@ async function startArtifactsServer(options) {
91366
91434
  onActivity: (listener) => activityListeners.push(listener),
91367
91435
  close: () => new Promise((resolve) => {
91368
91436
  watcher.close();
91437
+ autoPublisher?.close();
91369
91438
  relay?.close();
91370
91439
  direct.close();
91371
91440
  selections.clearAll();
@@ -91472,7 +91541,7 @@ function openReady(payload) {
91472
91541
  }
91473
91542
 
91474
91543
  // package.json
91475
- var version = "1.25.0";
91544
+ var version = "1.26.1";
91476
91545
 
91477
91546
  // src/server/main.ts
91478
91547
  async function main() {
@@ -1 +1 @@
1
- import{i as e}from"./rolldown-runtime-COiEfhsA.js";import{n as t,t as n}from"./jsx-runtime-CldxteV5.js";import{a as r,x as i}from"./useSandboxFrame-8NPM2cx_.js";import{_ as a,d as o,f as s,g as c,t as l,v as u,y as d}from"./DocumentLayout-Ds9A-4Ya.js";var f=e(t(),1),p=n();function m(){let e=(0,f.useMemo)(()=>window.matchMedia(`(prefers-color-scheme: dark)`),[]),[t,n]=(0,f.useState)(e.matches);return(0,f.useEffect)(()=>{let t=()=>n(e.matches);return e.addEventListener(`change`,t),()=>e.removeEventListener(`change`,t)},[e]),t}function h({id:e,state:t,contentBase:n,comments:h=i(),offline:g=!1}){let _=m(),[v,y]=(0,f.useState)(null),b=(0,f.useMemo)(()=>({artifact:`cloud/${e}`,contentBase:n,channel:a(),send:()=>void 0}),[e,n]),x=r(e,{comments:h.threads.filter(e=>e.status===`open`).length,activity:null,retrying:!1,reason:null});return(0,f.useEffect)(()=>{let e=document.createElement(`base`);return e.href=n,document.head.prepend(e),()=>e.remove()},[n]),(0,p.jsxs)(`div`,{className:`x1us19tq x1rozbrz xo2rkog`,className:`ryugi-doc ${{className:`x1us19tq x1rozbrz xo2rkog`}.className??``}`,children:[g?(0,p.jsxs)(`div`,{...{0:{className:`x78zum5 x6s0dn4 x17d4w8g x1vqgdyp x4l9tsp x1bo0w0s xqfszdh xfifm61`},1:{className:`x6s0dn4 x17d4w8g x1vqgdyp x4l9tsp x1bo0w0s xqfszdh xfifm61 x1s85apg x1ux6vrq`}}[!!x|0],children:[(0,p.jsx)(`i`,{className:`xci0xqf x1hagigm x16rqkct xxwmxtg`}),`电脑离线,暂时不能评论`]}):null,(0,p.jsx)(l,{editor:v,threads:h.threads,children:(0,p.jsx)(c.Provider,{value:b,children:(0,p.jsx)(d,{variant:`article`,theme:_?`dark`:`light`,initialValue:t,extraNodes:o,rendererConfig:s,onEditorReady:e=>{e?.setEditable(!1),y(e??null)},children:(0,p.jsx)(u,{})})})})]})}export{h as default};
1
+ import{i as e}from"./rolldown-runtime-COiEfhsA.js";import{n as t,t as n}from"./jsx-runtime-CldxteV5.js";import{a as r,x as i}from"./useSandboxFrame-8NPM2cx_.js";import{_ as a,d as o,f as s,g as c,t as l,v as u,y as d}from"./DocumentLayout-DCqaPuH2.js";var f=e(t(),1),p=n();function m(){let e=(0,f.useMemo)(()=>window.matchMedia(`(prefers-color-scheme: dark)`),[]),[t,n]=(0,f.useState)(e.matches);return(0,f.useEffect)(()=>{let t=()=>n(e.matches);return e.addEventListener(`change`,t),()=>e.removeEventListener(`change`,t)},[e]),t}function h({id:e,state:t,contentBase:n,comments:h=i(),offline:g=!1}){let _=m(),[v,y]=(0,f.useState)(null),b=(0,f.useMemo)(()=>({artifact:`cloud/${e}`,contentBase:n,channel:a(),send:()=>void 0}),[e,n]),x=r(e,{comments:h.threads.filter(e=>e.status===`open`).length,activity:null,retrying:!1,reason:null});return(0,f.useEffect)(()=>{let e=document.createElement(`base`);return e.href=n,document.head.prepend(e),()=>e.remove()},[n]),(0,p.jsxs)(`div`,{className:`x1us19tq x1rozbrz xo2rkog`,className:`ryugi-doc ${{className:`x1us19tq x1rozbrz xo2rkog`}.className??``}`,children:[g?(0,p.jsxs)(`div`,{...{0:{className:`x78zum5 x6s0dn4 x17d4w8g x1vqgdyp x4l9tsp x1bo0w0s xqfszdh xfifm61`},1:{className:`x6s0dn4 x17d4w8g x1vqgdyp x4l9tsp x1bo0w0s xqfszdh xfifm61 x1s85apg x1ux6vrq`}}[!!x|0],children:[(0,p.jsx)(`i`,{className:`xci0xqf x1hagigm x16rqkct xxwmxtg`}),`电脑离线,暂时不能评论`]}):null,(0,p.jsx)(l,{editor:v,threads:h.threads,children:(0,p.jsx)(c.Provider,{value:b,children:(0,p.jsx)(d,{variant:`article`,theme:_?`dark`:`light`,initialValue:t,extraNodes:o,rendererConfig:s,onEditorReady:e=>{e?.setEditable(!1),y(e??null)},children:(0,p.jsx)(u,{})})})})]})}export{h as default};
@@ -1 +1 @@
1
- import{i as e}from"./rolldown-runtime-COiEfhsA.js";import{n as t,t as n}from"./jsx-runtime-CldxteV5.js";import{a as r}from"./useSandboxFrame-8NPM2cx_.js";import{t as i}from"./index.js";import a from"./CloudDocument-DbBCNw2D.js";import{DocumentView as o,t as s}from"./DocumentPage-DboCpPXP.js";var c=e(t(),1),l=`1.25.0`,u=e=>/^(\d+)\.(\d+)\./.exec(e??``)?.slice(1,3).join(`.`)??null;function d(e,t){let n=u(e);return n!==null&&n===u(t)}var f=(e,t)=>`电脑上的 ryugi 是 ${t??`未知版本`},网页是 ${e},版本对上之前只能评论`,p=n();function m({id:e,state:t,contentBase:n,liveContentBase:u,comments:m}){let{transport:h,presence:g}=s(e,u??n??``),_=g?.online??!1;r(e,{online:g?.online??null});let[v,y]=(0,c.useState)(!1);if((0,c.useEffect)(()=>{_&&y(!0)},[_]),!h||!(v||_))return!t||!n?(0,p.jsx)(i,{children:g===null?`正在连接…`:`还没发布。电脑在线时,这里会实时显示。`}):(0,p.jsx)(a,{id:e,state:t,contentBase:n,comments:m,offline:g!==null&&!_});let b=_&&d(l,g?.version??null),x=_&&!b?f(l,g?.version??null):null;return(0,p.jsx)(o,{id:e,transport:h,live:_,cloud:{online:_,canEdit:b,reason:x}})}export{m as default};
1
+ import{i as e}from"./rolldown-runtime-COiEfhsA.js";import{n as t,t as n}from"./jsx-runtime-CldxteV5.js";import{a as r}from"./useSandboxFrame-8NPM2cx_.js";import{t as i}from"./index.js";import a from"./CloudDocument-D3S7e7RC.js";import{DocumentView as o,t as s}from"./DocumentPage-U7FIJYbX.js";var c=e(t(),1),l=`1.26.1`,u=e=>/^(\d+)\.(\d+)\./.exec(e??``)?.slice(1,3).join(`.`)??null;function d(e,t){let n=u(e);return n!==null&&n===u(t)}var f=(e,t)=>`电脑上的 ryugi 是 ${t??`未知版本`},网页是 ${e},版本对上之前只能评论`,p=n();function m({id:e,state:t,contentBase:n,liveContentBase:u,comments:m}){let{transport:h,presence:g}=s(e,u??n??``),_=g?.online??!1;r(e,{online:g?.online??null});let[v,y]=(0,c.useState)(!1);if((0,c.useEffect)(()=>{_&&y(!0)},[_]),!h||!(v||_))return!t||!n?(0,p.jsx)(i,{children:g===null?`正在连接…`:`还没发布。电脑在线时,这里会实时显示。`}):(0,p.jsx)(a,{id:e,state:t,contentBase:n,comments:m,offline:g!==null&&!_});let b=_&&d(l,g?.version??null),x=_&&!b?f(l,g?.version??null):null;return(0,p.jsx)(o,{id:e,transport:h,live:_,cloud:{online:_,canEdit:b,reason:x}})}export{m as default};