ryugi-artifacts 1.18.4 → 1.19.0

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 (151) hide show
  1. package/dist/cli.cjs +1 -1
  2. package/dist/server.cjs +90 -11
  3. package/dist/viewer/CloudDocument-fPJO17RB.js +1 -0
  4. package/dist/viewer/{CloudLiveDocument-DS85XF0L.js → CloudLiveDocument-tsrwl8T1.js} +1 -1
  5. package/dist/viewer/{DocumentLayout-BmFhvhLU.js → DocumentLayout-D4LN2imT.js} +144 -144
  6. package/dist/viewer/DocumentPage-DU7AlIYi.js +1 -0
  7. package/dist/viewer/{abnfDiagram-VCTEODGH-CV9ilrv6.js → abnfDiagram-VCTEODGH-BwLfP_w2.js} +1 -1
  8. package/dist/viewer/{ar-SA-G6X2FPQ2-oZEeiz6u.js → ar-SA-G6X2FPQ2-BI0wJ8yR.js} +1 -1
  9. package/dist/viewer/{architectureDiagram-5GKGNRK7-B7gMzXkW.js → architectureDiagram-5GKGNRK7-CRQpQyO-.js} +1 -1
  10. package/dist/viewer/{az-AZ-76LH7QW2-yL1UB6w_.js → az-AZ-76LH7QW2-CxsCUo3P.js} +1 -1
  11. package/dist/viewer/{bg-BG-XCXSNQG7-BVuMowqe.js → bg-BG-XCXSNQG7-zmLNtpI8.js} +1 -1
  12. package/dist/viewer/{blockDiagram-I7D4REHJ-BvS7PEBE.js → blockDiagram-I7D4REHJ-BJJKBHFX.js} +1 -1
  13. package/dist/viewer/{bn-BD-2XOGV67Q-TK2Nt4AS.js → bn-BD-2XOGV67Q-D6zzfXu3.js} +1 -1
  14. package/dist/viewer/{c4Diagram-7LVT6UL2-DiPixCgw.js → c4Diagram-7LVT6UL2-CLivMEyH.js} +1 -1
  15. package/dist/viewer/{ca-ES-6MX7JW3Y-ssAQ_aeA.js → ca-ES-6MX7JW3Y-G1FH_576.js} +1 -1
  16. package/dist/viewer/{chunk-4HAMMTFA-Dx6b40xi.js → chunk-4HAMMTFA-Di0xdyz8.js} +1 -1
  17. package/dist/viewer/{chunk-EIO257PC-BtM_VLQE.js → chunk-EIO257PC-C_A0ItX_.js} +1 -1
  18. package/dist/viewer/{chunk-GMAD6QVW-COZQExf-.js → chunk-GMAD6QVW-Yd9B1P6N.js} +1 -1
  19. package/dist/viewer/{chunk-GVQU2GXP-BzZEH01V.js → chunk-GVQU2GXP-BlQ5Hc4C.js} +1 -1
  20. package/dist/viewer/{chunk-IMKFNOWR-DoSmXTi7.js → chunk-IMKFNOWR-sLl17KlZ.js} +1 -1
  21. package/dist/viewer/{chunk-L3NEJ4N5-BoNKpHsG.js → chunk-L3NEJ4N5-ByzPblyy.js} +1 -1
  22. package/dist/viewer/{chunk-OSK3NFVY-fma5qDgd.js → chunk-OSK3NFVY-B8lsSjgE.js} +1 -1
  23. package/dist/viewer/{chunk-PWAF6VOD-B-FOPc-q.js → chunk-PWAF6VOD-Dt03PokQ.js} +1 -1
  24. package/dist/viewer/{chunk-SHT3W25Y-Bo8j1N02.js → chunk-SHT3W25Y-D8tOADu9.js} +1 -1
  25. package/dist/viewer/{chunk-SVP7TREG-B62eBjLz.js → chunk-SVP7TREG-BCCTaJFp.js} +1 -1
  26. package/dist/viewer/{chunk-TICWLB2K-p6Tzdi_n.js → chunk-TICWLB2K-CKvZ1F5E.js} +1 -1
  27. package/dist/viewer/{classDiagram-ZZMXUADV-yDzvlm9G.js → classDiagram-ZZMXUADV-BPsoNR3A.js} +1 -1
  28. package/dist/viewer/{classDiagram-v2-VYDZK3BY-yDzvlm9G.js → classDiagram-v2-VYDZK3BY-BPsoNR3A.js} +1 -1
  29. package/dist/viewer/{cs-CZ-2BRQDIVT-CJRjmWM6.js → cs-CZ-2BRQDIVT-KdoHU-Qi.js} +1 -1
  30. package/dist/viewer/{cynefinDiagram-5FMLGOSQ-B5NowWLs.js → cynefinDiagram-5FMLGOSQ-CPAZlTbz.js} +1 -1
  31. package/dist/viewer/{da-DK-5WZEPLOC-D-dHqXdP.js → da-DK-5WZEPLOC-D_MTuSXJ.js} +1 -1
  32. package/dist/viewer/{dagre-GXQ25YYZ-CnMtZyQJ.js → dagre-GXQ25YYZ-CGJi5tfA.js} +1 -1
  33. package/dist/viewer/{de-DE-XR44H4JA-C-TB_N6V.js → de-DE-XR44H4JA-BLOov6di.js} +1 -1
  34. package/dist/viewer/{diagram-S7CK7UJ4-BUqW7fG2.js → diagram-S7CK7UJ4-v4jY9cY2.js} +1 -1
  35. package/dist/viewer/{diagram-UQ7AKVKN-8txdjYKW.js → diagram-UQ7AKVKN-CHWKBoDd.js} +1 -1
  36. package/dist/viewer/{diagram-VX7I27RA-VRK1Xx-r.js → diagram-VX7I27RA-BVUIPSa6.js} +1 -1
  37. package/dist/viewer/{diagram-Z3DM3KII-CFTEE6hm.js → diagram-Z3DM3KII-C4Y7zZHg.js} +1 -1
  38. package/dist/viewer/{dist-GYlII7AN.js → dist-1IcdPIYN.js} +2 -2
  39. package/dist/viewer/dist-B2FPj3Qt.js +9 -0
  40. package/dist/viewer/{dist-4VxRqYLb.js → dist-B3RoMAF6.js} +1 -1
  41. package/dist/viewer/{dist-SaSQiH_S.js → dist-BQs1NNpk.js} +1 -1
  42. package/dist/viewer/{dist-BBOT2Dod.js → dist-BVTHDHV6.js} +1 -1
  43. package/dist/viewer/{dist-U9k2HrGK.js → dist-Bc8tMTe5.js} +1 -1
  44. package/dist/viewer/dist-Bqez8J_a.js +1 -0
  45. package/dist/viewer/dist-C4Lc0ZFP.js +1 -0
  46. package/dist/viewer/{dist-CmRhIDCA.js → dist-CCwaS8Bu.js} +1 -1
  47. package/dist/viewer/{dist-CFAaHddG.js → dist-CRx0ZMXK.js} +1 -1
  48. package/dist/viewer/{dist-B7cBbeKI.js → dist-CeYG0ueU.js} +1 -1
  49. package/dist/viewer/{dist-DI46xOxZ.js → dist-Ct-E_S8r.js} +1 -1
  50. package/dist/viewer/{dist-6lhXFIAO.js → dist-D8bI9sBL.js} +1 -1
  51. package/dist/viewer/{dist-DhFC_v-5.js → dist-DFGQshKp.js} +4 -4
  52. package/dist/viewer/{dist-Du5bWJ2g.js → dist-DXnqzoeB.js} +1 -1
  53. package/dist/viewer/{dist-D_UP42BZ.js → dist-DYMwViBu.js} +1 -1
  54. package/dist/viewer/dist-DpVonJ_O.js +1 -0
  55. package/dist/viewer/{dist-CydgyGeV.js → dist-DsDINnzX.js} +1 -1
  56. package/dist/viewer/{dist-BCqz-HqX.js → dist-JfoSPkrU.js} +1 -1
  57. package/dist/viewer/{dist-CH0akeCq.js → dist-KZC5UOjy.js} +9 -9
  58. package/dist/viewer/dist-TLcUQst5.js +6 -0
  59. package/dist/viewer/{dist-DbkbyA0U.js → dist-WN2tr_mQ.js} +1 -1
  60. package/dist/viewer/{dist-BPVVld5s.js → dist-_d7trXgy.js} +1 -1
  61. package/dist/viewer/{dist-CPVcHWlQ.js → dist-xVN1cHRs.js} +2 -2
  62. package/dist/viewer/{ebnfDiagram-PWID7BFC-B2uFP8zT.js → ebnfDiagram-PWID7BFC-BfH0Kwma.js} +1 -1
  63. package/dist/viewer/{el-GR-BZB4AONW-Cin0hSuv.js → el-GR-BZB4AONW-DytlrCPc.js} +1 -1
  64. package/dist/viewer/{en-B4ZKOASM-r25weJ3i.js → en-B4ZKOASM-CxMHMjTS.js} +1 -1
  65. package/dist/viewer/{erDiagram-RLTQ6QDP-C_wdcD3l.js → erDiagram-RLTQ6QDP-DiANaX5a.js} +1 -1
  66. package/dist/viewer/{es-ES-U4NZUMDT-BTfNIW-f.js → es-ES-U4NZUMDT-CWOlOrxS.js} +1 -1
  67. package/dist/viewer/{eu-ES-A7QVB2H4-CwpkrMfM.js → eu-ES-A7QVB2H4-7rIki6yl.js} +1 -1
  68. package/dist/viewer/{fa-IR-HGAKTJCU-xR6FbJG0.js → fa-IR-HGAKTJCU-XuLQk-Tn.js} +1 -1
  69. package/dist/viewer/{fi-FI-Z5N7JZ37-aFZzomat.js → fi-FI-Z5N7JZ37-BVT2imWO.js} +1 -1
  70. package/dist/viewer/flowDiagram-HODETNUW-CCTrPmhX.js +1 -0
  71. package/dist/viewer/{fr-FR-RHASNOE6-CudNlR7s.js → fr-FR-RHASNOE6-BDrE0Sar.js} +1 -1
  72. package/dist/viewer/ganttDiagram-EL5Y4UJY-C0kMmivD.js +292 -0
  73. package/dist/viewer/{gl-ES-HMX3MZ6V-gVz21kpP.js → gl-ES-HMX3MZ6V-BGePYNwa.js} +1 -1
  74. package/dist/viewer/{he-IL-6SHJWFNN-BJKBOspV.js → he-IL-6SHJWFNN-C_h7ANwh.js} +1 -1
  75. package/dist/viewer/{hi-IN-IWLTKZ5I-CbzuQ896.js → hi-IN-IWLTKZ5I-DO6JQv11.js} +1 -1
  76. package/dist/viewer/{hu-HU-A5ZG7DT2-B_jSyb1P.js → hu-HU-A5ZG7DT2-CYW6-QvY.js} +1 -1
  77. package/dist/viewer/{id-ID-SAP4L64H-DG5B5Nbw.js → id-ID-SAP4L64H-lnrwwUQv.js} +1 -1
  78. package/dist/viewer/{image-GAAHSSAO-Daq9X6yp.js → image-GAAHSSAO-DPKo0Z9B.js} +1 -1
  79. package/dist/viewer/index.html +1 -1
  80. package/dist/viewer/index.js +6 -6
  81. package/dist/viewer/index2.css +141 -50
  82. package/dist/viewer/{infoDiagram-27XIBGKW-BEcf3Mgz.js → infoDiagram-27XIBGKW-BrpKtrz1.js} +1 -1
  83. package/dist/viewer/{ishikawaDiagram-5VMMS53U-BaiLcmxa.js → ishikawaDiagram-5VMMS53U-Bzzm1Qn9.js} +1 -1
  84. package/dist/viewer/{it-IT-JPQ66NNP-Be6ERDzQ.js → it-IT-JPQ66NNP-Bmrd9W_k.js} +1 -1
  85. package/dist/viewer/{ja-JP-DBVTYXUO-rzX72p52.js → ja-JP-DBVTYXUO-BzIPu9Sq.js} +1 -1
  86. package/dist/viewer/{journeyDiagram-3NMN7TZE-CF0kgq6e.js → journeyDiagram-3NMN7TZE-BnypDAuH.js} +1 -1
  87. package/dist/viewer/{kaa-6HZHGXH3-xkB9EtaK.js → kaa-6HZHGXH3-DKokUJUv.js} +1 -1
  88. package/dist/viewer/{kab-KAB-ZGHBKWFO-A9TW4l6B.js → kab-KAB-ZGHBKWFO-DPboBUhX.js} +1 -1
  89. package/dist/viewer/{kanban-definition-UXKFOSKX-B1yViTEB.js → kanban-definition-UXKFOSKX-xl1KXBhm.js} +1 -1
  90. package/dist/viewer/{kk-KZ-P5N5QNE5-D-_fY8Gw.js → kk-KZ-P5N5QNE5-CW1AnK2i.js} +1 -1
  91. package/dist/viewer/{km-KH-HSX4SM5Z-BcY5m6VJ.js → km-KH-HSX4SM5Z-Cy-Jz187.js} +1 -1
  92. package/dist/viewer/{ko-KR-MTYHY66A-et49DOjn.js → ko-KR-MTYHY66A-ENrzcom-.js} +1 -1
  93. package/dist/viewer/{ku-TR-6OUDTVRD-CctJtizJ.js → ku-TR-6OUDTVRD-ujaIeZ6d.js} +1 -1
  94. package/dist/viewer/{lt-LT-XHIRWOB4-CKIcj0xZ.js → lt-LT-XHIRWOB4-DCHudAUH.js} +1 -1
  95. package/dist/viewer/{lv-LV-5QDEKY6T-eD_nIZ1C.js → lv-LV-5QDEKY6T-CkczV-YS.js} +1 -1
  96. package/dist/viewer/{mindmap-definition-YA3MSWOX-eSx4puWQ.js → mindmap-definition-YA3MSWOX-Cmaw8zST.js} +1 -1
  97. package/dist/viewer/{mr-IN-CRQNXWMA-DZE-1OVW.js → mr-IN-CRQNXWMA-CAULhacb.js} +1 -1
  98. package/dist/viewer/{my-MM-5M5IBNSE-C4RtxqYT.js → my-MM-5M5IBNSE-CIK3iNzd.js} +1 -1
  99. package/dist/viewer/{nb-NO-T6EIAALU-BR4xmg8K.js → nb-NO-T6EIAALU-awDYmeD3.js} +1 -1
  100. package/dist/viewer/{nl-NL-IS3SIHDZ-CC_ODK0w.js → nl-NL-IS3SIHDZ-DnN7YgqH.js} +1 -1
  101. package/dist/viewer/{nn-NO-6E72VCQL-B1B5ggd_.js → nn-NO-6E72VCQL-CirX0qpy.js} +1 -1
  102. package/dist/viewer/{oc-FR-POXYY2M6-C4ylGoRV.js → oc-FR-POXYY2M6-BmRoBPJJ.js} +1 -1
  103. package/dist/viewer/{pa-IN-N4M65BXN-CeGYxP4x.js → pa-IN-N4M65BXN-C3t1i1uP.js} +1 -1
  104. package/dist/viewer/{pegDiagram-XKGWAZYB-Dh89osCP.js → pegDiagram-XKGWAZYB-CRs_uYT9.js} +1 -1
  105. package/dist/viewer/percentages-BXMCSKIN-BgW3KG9t.js +1 -0
  106. package/dist/viewer/{pieDiagram-E7YTZNPT-DLjCSZj7.js → pieDiagram-E7YTZNPT-CX1dwbeD.js} +3 -3
  107. package/dist/viewer/{pl-PL-T2D74RX3-DG-CBlvr.js → pl-PL-T2D74RX3-LcmmmlyH.js} +1 -1
  108. package/dist/viewer/{prod-BkhfMLuD.js → prod-B8PlumMX.js} +9 -9
  109. package/dist/viewer/{pt-BR-5N22H2LF-DHX82eiC.js → pt-BR-5N22H2LF-CSwh6Qow.js} +1 -1
  110. package/dist/viewer/{pt-PT-UZXXM6DQ-C7hcCDRC.js → pt-PT-UZXXM6DQ-Dik_tH8d.js} +1 -1
  111. package/dist/viewer/{quadrantDiagram-AXDQQJYC-C8ex_GP4.js → quadrantDiagram-AXDQQJYC-DAlIHzj1.js} +1 -1
  112. package/dist/viewer/{railroadDiagram-O6MQD6OU-1tVqy-R1.js → railroadDiagram-O6MQD6OU-3sbXCT8O.js} +1 -1
  113. package/dist/viewer/{requirementDiagram-BXWQKSXE-MJWMqh0i.js → requirementDiagram-BXWQKSXE-_SmB-iGu.js} +1 -1
  114. package/dist/viewer/{ro-RO-JPDTUUEW-kNmvlxGQ.js → ro-RO-JPDTUUEW-5pEQNah0.js} +1 -1
  115. package/dist/viewer/{ru-RU-B4JR7IUQ-DIPjZ7JJ.js → ru-RU-B4JR7IUQ-D_Kg9Hzp.js} +1 -1
  116. package/dist/viewer/{sequenceDiagram-WJ2MYXX4-BmytocXO.js → sequenceDiagram-WJ2MYXX4-CNxS0HZg.js} +1 -1
  117. package/dist/viewer/{si-LK-N5RQ5JYF-CklMTI2L.js → si-LK-N5RQ5JYF-Bp_qk_kO.js} +1 -1
  118. package/dist/viewer/{sk-SK-C5VTKIMK-TIEeBTSD.js → sk-SK-C5VTKIMK-dZmproWt.js} +1 -1
  119. package/dist/viewer/{sl-SI-NN7IZMDC-BzfdTTSQ.js → sl-SI-NN7IZMDC-DCPnVelb.js} +1 -1
  120. package/dist/viewer/{stateDiagram-D77RDMKH-ASSh2jQr.js → stateDiagram-D77RDMKH-DLlcIj9E.js} +1 -1
  121. package/dist/viewer/{stateDiagram-v2-MP3YSRHH-QqO49gLr.js → stateDiagram-v2-MP3YSRHH-BQGIuopX.js} +1 -1
  122. package/dist/viewer/subset-shared.chunk-CvpSwkWA.js +1 -0
  123. package/dist/viewer/{subset-worker.chunk-ByFgYWrP.js → subset-worker.chunk-KysBifhs.js} +1 -1
  124. package/dist/viewer/{sv-SE-XGPEYMSR-Ca92kj7e.js → sv-SE-XGPEYMSR-DQC8YOoA.js} +1 -1
  125. package/dist/viewer/{swimlanes-42K2YHIH-B6PLFQO7.js → swimlanes-42K2YHIH-pPhC0efI.js} +1 -1
  126. package/dist/viewer/{swimlanesDiagram-VR7AAH4N-N8AFiqh9.js → swimlanesDiagram-VR7AAH4N-BknwjiJI.js} +1 -1
  127. package/dist/viewer/{ta-IN-2NMHFXQM-VcTgcAra.js → ta-IN-2NMHFXQM-XJN8sySm.js} +1 -1
  128. package/dist/viewer/{th-TH-HPSO5L25-CQK6U6zN.js → th-TH-HPSO5L25-CrVxkBUt.js} +1 -1
  129. package/dist/viewer/{timeline-definition-24CTP7MA-bdnxX84c.js → timeline-definition-24CTP7MA-djWWXfng.js} +1 -1
  130. package/dist/viewer/{tr-TR-DEFEU3FU-BK4O5HPq.js → tr-TR-DEFEU3FU-CL6S5zlq.js} +1 -1
  131. package/dist/viewer/{uk-UA-QMV73CPH-Dgto1rbO.js → uk-UA-QMV73CPH-CMrgmof-.js} +1 -1
  132. package/dist/viewer/{useSandboxFrame-3fuBOs0A.js → useSandboxFrame-Cx7xofoM.js} +1 -1
  133. package/dist/viewer/{vennDiagram-4TSXK5OY-DPdqusDE.js → vennDiagram-4TSXK5OY-DnkQnhE7.js} +1 -1
  134. package/dist/viewer/{vi-VN-M7AON7JQ-dbrYvw7t.js → vi-VN-M7AON7JQ-DcU7HmKI.js} +1 -1
  135. package/dist/viewer/{wardleyDiagram-VM6X3IG4-B4FxaO_K.js → wardleyDiagram-VM6X3IG4-BiN7N4S8.js} +1 -1
  136. package/dist/viewer/{xychartDiagram-S5SC5T6Z-B-xgw6AE.js → xychartDiagram-S5SC5T6Z-DR4L47nZ.js} +1 -1
  137. package/dist/viewer/{zh-CN-LNUGB5OW-B9JwAL-C.js → zh-CN-LNUGB5OW-B58c_p8w.js} +1 -1
  138. package/dist/viewer/{zh-HK-E62DVLB3-yrlUVHxC.js → zh-HK-E62DVLB3-D-pcM14T.js} +1 -1
  139. package/dist/viewer/{zh-TW-RAJ6MFWO-6sxLjcXU.js → zh-TW-RAJ6MFWO-Dcb5-RNU.js} +1 -1
  140. package/package.json +1 -1
  141. package/dist/viewer/CloudDocument-CotgQhd8.js +0 -1
  142. package/dist/viewer/DocumentPage-0GGJlY-j.js +0 -1
  143. package/dist/viewer/dist-C10VRgAd.js +0 -1
  144. package/dist/viewer/dist-CL7kKeXL.js +0 -1
  145. package/dist/viewer/dist-DAw97NG5.js +0 -1
  146. package/dist/viewer/dist-DGBiXrP7.js +0 -9
  147. package/dist/viewer/dist-DTI9Lw8b.js +0 -6
  148. package/dist/viewer/flowDiagram-HODETNUW-DuNy2QCx.js +0 -1
  149. package/dist/viewer/ganttDiagram-EL5Y4UJY-CmFhbbr4.js +0 -292
  150. package/dist/viewer/percentages-BXMCSKIN-BlwZCNS5.js +0 -1
  151. package/dist/viewer/subset-shared.chunk-CThXukp8.js +0 -1
package/dist/cli.cjs CHANGED
@@ -922,7 +922,7 @@ async function main(argv) {
922
922
  }, emit);
923
923
  }
924
924
  if (command === "--version" || command === "-v") {
925
- console.log("1.18.4");
925
+ console.log("1.19.0");
926
926
  return 0;
927
927
  }
928
928
  if (command === "--help" || command === "-h") {
package/dist/server.cjs CHANGED
@@ -17633,7 +17633,8 @@ var BLOCK_TAGS2 = [
17633
17633
  "details",
17634
17634
  "footnote-section",
17635
17635
  "def",
17636
- "dynamic"
17636
+ "dynamic",
17637
+ "pending"
17637
17638
  ];
17638
17639
  var INLINE_TAGS2 = ["b", "strong", "i", "em", "u", "s", "del", "strike", "code", "sub", "sup", "mark", "a", "br", "footnote"];
17639
17640
  var DOCUMENT_TAGS = /* @__PURE__ */ new Set([...BLOCK_TAGS2, ...INLINE_TAGS2]);
@@ -17657,6 +17658,14 @@ var LITEXML_ONLY_TAGS = /* @__PURE__ */ new Set([
17657
17658
  "video"
17658
17659
  ]);
17659
17660
  var registry = createDefaultRegistry();
17661
+ registry.registerReader("pending", (el2) => {
17662
+ const id2 = el2.getAttribute("id");
17663
+ return { type: "pending", ...id2 ? { $: { blockId: id2 } } : {}, intent: el2.getAttribute("intent") ?? "", version: 1 };
17664
+ });
17665
+ registry.registerWriter("pending", (node) => {
17666
+ const { $: state, intent } = node;
17667
+ return { tag: "pending", attrs: { ...state?.blockId ? { id: state.blockId } : {}, intent: intent ?? "" }, selfClosing: true };
17668
+ });
17660
17669
  var DocumentRejected = class extends Error {
17661
17670
  };
17662
17671
  var URL_ATTR = /\surl\s*=\s*(?:"([^"]*)"|'([^']*)')/i;
@@ -17690,6 +17699,12 @@ function badDynamicProps(xml) {
17690
17699
  }
17691
17700
  return null;
17692
17701
  }
17702
+ function containsPending(value) {
17703
+ if (Array.isArray(value)) return value.some(containsPending);
17704
+ if (!value || typeof value !== "object") return false;
17705
+ return value.type === "pending" || Object.values(value).some(containsPending);
17706
+ }
17707
+ var nestedPending = (blocks) => blocks.some((block) => block.type !== "pending" && containsPending(block)) ? "<pending> must be a top-level block" : null;
17693
17708
  function badDynamicUrl(nodes) {
17694
17709
  for (const node of nodes) {
17695
17710
  if (node.type === "dynamic" && !DYNAMIC_URL.test(node.url ?? "")) return "<dynamic> url must be assets/<name>.html";
@@ -17708,7 +17723,7 @@ function parseDocument2(xml) {
17708
17723
  } catch (err) {
17709
17724
  throw new DocumentRejected(err.message);
17710
17725
  }
17711
- const url = badDynamicUrl(state.root.children);
17726
+ const url = badDynamicUrl(state.root.children) ?? nestedPending(state.root.children);
17712
17727
  if (url) throw new DocumentRejected(url);
17713
17728
  return state;
17714
17729
  }
@@ -53451,6 +53466,10 @@ function streamAtVersion(doc, frontiers, createEditor3, base, target, commitMess
53451
53466
  };
53452
53467
  }
53453
53468
 
53469
+ // src/shared/document-features.ts
53470
+ var DOCUMENT_FEATURES = ["pending"];
53471
+ var DOCUMENT_FEATURES_HEADER = "x-ryugi-document-features";
53472
+
53454
53473
  // node_modules/.pnpm/@lexical+table@0.52.0_typescript@5.9.3/node_modules/@lexical/table/dist/LexicalTable.dev.js
53455
53474
  var LexicalTable_dev_exports = {};
53456
53475
  __export(LexicalTable_dev_exports, {
@@ -87704,8 +87723,39 @@ var HeadlessExtension3 = mod45.HeadlessExtension;
87704
87723
  var createHeadlessEditor2 = mod45.createHeadlessEditor;
87705
87724
 
87706
87725
  // src/server/document-headless.ts
87726
+ var PendingNode = class _PendingNode extends DecoratorNode2 {
87727
+ __intent;
87728
+ static getType() {
87729
+ return "pending";
87730
+ }
87731
+ static clone(node) {
87732
+ return new _PendingNode(node.__intent, node.__key);
87733
+ }
87734
+ static importJSON(json) {
87735
+ return new _PendingNode(json.intent).updateFromJSON(json);
87736
+ }
87737
+ constructor(intent = "", key2) {
87738
+ super(key2);
87739
+ this.__intent = intent;
87740
+ }
87741
+ exportJSON() {
87742
+ return { ...super.exportJSON(), type: "pending", version: 1, intent: this.__intent };
87743
+ }
87744
+ createDOM() {
87745
+ throw new Error("headless");
87746
+ }
87747
+ updateDOM() {
87748
+ return false;
87749
+ }
87750
+ isInline() {
87751
+ return false;
87752
+ }
87753
+ decorate() {
87754
+ return null;
87755
+ }
87756
+ };
87707
87757
  var createDocumentHeadlessEditor = () => createHeadlessEditor2({
87708
- nodes: allHeadlessNodes,
87758
+ nodes: [...allHeadlessNodes, PendingNode],
87709
87759
  onError: (err) => {
87710
87760
  throw err;
87711
87761
  }
@@ -87713,6 +87763,8 @@ var createDocumentHeadlessEditor = () => createHeadlessEditor2({
87713
87763
 
87714
87764
  // src/server/document-session.ts
87715
87765
  var WRITTEN_LIMIT = 50;
87766
+ var OutdatedClient = class extends Error {
87767
+ };
87716
87768
  var messageOf = (err) => err instanceof Error ? err.message : String(err);
87717
87769
  function lcsLength(a5, b6) {
87718
87770
  const table = Array.from({ length: a5.length + 1 }, () => new Uint32Array(b6.length + 1));
@@ -87747,6 +87799,15 @@ function closestBase(written, text2, fallback) {
87747
87799
  }
87748
87800
  return best;
87749
87801
  }
87802
+ async function lastAgentWrite(activityFile, file) {
87803
+ const recorded = Number(await readText(activityFile));
87804
+ if (recorded > 0) return recorded;
87805
+ try {
87806
+ return Math.round((await import_promises.default.stat(file)).mtimeMs);
87807
+ } catch {
87808
+ return Date.now();
87809
+ }
87810
+ }
87750
87811
  async function readText(file) {
87751
87812
  try {
87752
87813
  return await import_promises.default.readFile(file, "utf8");
@@ -87790,9 +87851,13 @@ async function createDocumentSession(options) {
87790
87851
  let lastCursor = null;
87791
87852
  let lastGoodText = null;
87792
87853
  let lastFileText = await readText(file) ?? "";
87854
+ const activityFile = import_node_path8.default.join(import_node_path8.default.dirname(snapshotFile), "agent-active");
87855
+ let agentActiveAt = await lastAgentWrite(activityFile, file);
87856
+ let activitySaved = Promise.resolve();
87857
+ const emitStatus = () => emit({ type: "status", outcome, streaming: streaming > 0, agentActiveAt });
87793
87858
  const setOutcome = (next) => {
87794
87859
  outcome = next;
87795
- emit({ type: "status", outcome, streaming: streaming > 0 });
87860
+ emitStatus();
87796
87861
  };
87797
87862
  try {
87798
87863
  const initial = parseDocument2(lastFileText);
@@ -87833,6 +87898,9 @@ async function createDocumentSession(options) {
87833
87898
  const onFileText = (text2) => {
87834
87899
  if (text2 === lastFileText) return;
87835
87900
  lastFileText = text2;
87901
+ agentActiveAt = Date.now();
87902
+ const at7 = agentActiveAt;
87903
+ activitySaved = activitySaved.then(() => writeAtomic(activityFile, String(at7))).catch((err) => log(`agent activity not saved: ${messageOf(err)}`));
87836
87904
  let target;
87837
87905
  try {
87838
87906
  target = parseDocument2(text2);
@@ -87845,7 +87913,7 @@ async function createDocumentSession(options) {
87845
87913
  const queued = streaming > 0;
87846
87914
  lastGoodText = text2;
87847
87915
  streaming += 1;
87848
- emit({ type: "status", outcome, streaming: true });
87916
+ emitStatus();
87849
87917
  playing = playing.then(async () => {
87850
87918
  try {
87851
87919
  const baseText = queued ? fallback : closestBase(written, text2, fallback);
@@ -87921,7 +87989,11 @@ async function createDocumentSession(options) {
87921
87989
  return {
87922
87990
  snapshot: () => loro.export({ mode: "snapshot" }),
87923
87991
  lineage: () => loro.getTree(TREE_NAME).roots()[0]?.id ?? "",
87924
- importUpdate: (bytes) => {
87992
+ importUpdate: (bytes, features = []) => {
87993
+ const undeclared2 = DOCUMENT_FEATURES.filter((feature) => !features.includes(feature));
87994
+ const types = undeclared2.length ? editor.getEditorState().read(() => new Set($getRoot2().getChildren().map((block) => block.getType()))) : /* @__PURE__ */ new Set();
87995
+ const missing = undeclared2.filter((feature) => types.has(feature));
87996
+ if (missing.length) throw new OutdatedClient(`this page cannot show <${missing.join(">, <")}> blocks; reload the page`);
87925
87997
  const probe = loro.fork();
87926
87998
  probe.import(bytes);
87927
87999
  if (probe.getTree(TREE_NAME).roots().length > 1) throw new Error("update belongs to a different document; reload the page");
@@ -87936,6 +88008,7 @@ async function createDocumentSession(options) {
87936
88008
  },
87937
88009
  outcome: () => outcome,
87938
88010
  streaming: () => streaming > 0,
88011
+ agentActiveAt: () => agentActiveAt,
87939
88012
  cursor: () => lastCursor,
87940
88013
  settled: () => playing,
87941
88014
  flush,
@@ -87943,6 +88016,7 @@ async function createDocumentSession(options) {
87943
88016
  clearInterval(snapshotTimer);
87944
88017
  await flush();
87945
88018
  await saveSnapshot();
88019
+ await activitySaved;
87946
88020
  binding.dispose();
87947
88021
  listeners.clear();
87948
88022
  }
@@ -88004,7 +88078,7 @@ function createDocumentRegistry(options) {
88004
88078
  } else if (event.type === "cursor") {
88005
88079
  options.broadcast({ type: "doc-cursor", artifact, cursor: event.cursor });
88006
88080
  } else {
88007
- options.broadcast({ type: "doc-status", artifact, streaming: event.streaming, outcome: event.outcome });
88081
+ options.broadcast({ type: "doc-status", artifact, streaming: event.streaming, outcome: event.outcome, agentActiveAt: event.agentActiveAt, now: Date.now() });
88008
88082
  setWarnings(outcomeWarnings(event.outcome, event.streaming));
88009
88083
  }
88010
88084
  });
@@ -90347,6 +90421,8 @@ async function startArtifactsServer(options) {
90347
90421
  lineage: session.lineage(),
90348
90422
  outcome: session.outcome(),
90349
90423
  streaming: session.streaming(),
90424
+ agentActiveAt: session.agentActiveAt(),
90425
+ now: Date.now(),
90350
90426
  cursor: session.cursor(),
90351
90427
  comments: documents.comments(id2)
90352
90428
  });
@@ -90392,11 +90468,13 @@ async function startArtifactsServer(options) {
90392
90468
  send(res, 413, "Update too large");
90393
90469
  return;
90394
90470
  }
90471
+ const header = req.headers[DOCUMENT_FEATURES_HEADER];
90472
+ const features = typeof header === "string" ? header.split(",").map((feature) => feature.trim()) : [];
90395
90473
  try {
90396
- session.importUpdate(new Uint8Array(Buffer.concat(chunks)));
90474
+ session.importUpdate(new Uint8Array(Buffer.concat(chunks)), features);
90397
90475
  send(res, 204, "");
90398
90476
  } catch (err) {
90399
- sendJson(res, 400, { error: err.message });
90477
+ sendJson(res, err instanceof OutdatedClient ? 409 : 400, { error: err.message });
90400
90478
  }
90401
90479
  };
90402
90480
  const blockIdsOf = async (id2, dir) => {
@@ -90882,7 +90960,8 @@ async function startArtifactsServer(options) {
90882
90960
  const bytes = typeof request.bytes === "string" ? Buffer.from(request.bytes, "base64") : null;
90883
90961
  if (!bytes) throw new Error("update needs bytes");
90884
90962
  if (bytes.length > MAX_DOCUMENT_UPDATE) throw new Error("update too large");
90885
- session.importUpdate(new Uint8Array(bytes));
90963
+ const features = Array.isArray(request.features) ? request.features.filter((feature) => typeof feature === "string") : [];
90964
+ session.importUpdate(new Uint8Array(bytes), features);
90886
90965
  return null;
90887
90966
  }
90888
90967
  if (request.op === "comment") {
@@ -91079,7 +91158,7 @@ function openReady(payload) {
91079
91158
  }
91080
91159
 
91081
91160
  // package.json
91082
- var version = "1.18.4";
91161
+ var version = "1.19.0";
91083
91162
 
91084
91163
  // src/server/main.ts
91085
91164
  async function main() {
@@ -0,0 +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,m as i}from"./useSandboxFrame-Cx7xofoM.js";import{_ as a,d as o,g as s,h as c,t as l,u,v as d}from"./DocumentLayout-D4LN2imT.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:s(),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:u,rendererConfig:o,onEditorReady:e=>{e?.setEditable(!1),y(e??null)},children:(0,p.jsx)(a,{})})})})]})}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-3fuBOs0A.js";import{t as i}from"./index.js";import a from"./CloudDocument-CotgQhd8.js";import{DocumentView as o,t as s}from"./DocumentPage-0GGJlY-j.js";var c=e(t(),1),l=`1.18.4`,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-Cx7xofoM.js";import{t as i}from"./index.js";import a from"./CloudDocument-fPJO17RB.js";import{DocumentView as o,t as s}from"./DocumentPage-DU7AlIYi.js";var c=e(t(),1),l=`1.19.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};