ryugi-artifacts 1.18.4 → 1.20.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.
- package/dist/cli.cjs +1 -1
- package/dist/server.cjs +122 -18
- package/dist/viewer/CloudDocument-fPJO17RB.js +1 -0
- package/dist/viewer/{CloudLiveDocument-DS85XF0L.js → CloudLiveDocument-cfa_fMZ_.js} +1 -1
- package/dist/viewer/{DocumentLayout-BmFhvhLU.js → DocumentLayout-D4LN2imT.js} +144 -144
- package/dist/viewer/DocumentPage-DU7AlIYi.js +1 -0
- package/dist/viewer/{abnfDiagram-VCTEODGH-CV9ilrv6.js → abnfDiagram-VCTEODGH-BwLfP_w2.js} +1 -1
- package/dist/viewer/{ar-SA-G6X2FPQ2-oZEeiz6u.js → ar-SA-G6X2FPQ2-BI0wJ8yR.js} +1 -1
- package/dist/viewer/{architectureDiagram-5GKGNRK7-B7gMzXkW.js → architectureDiagram-5GKGNRK7-CRQpQyO-.js} +1 -1
- package/dist/viewer/{az-AZ-76LH7QW2-yL1UB6w_.js → az-AZ-76LH7QW2-CxsCUo3P.js} +1 -1
- package/dist/viewer/{bg-BG-XCXSNQG7-BVuMowqe.js → bg-BG-XCXSNQG7-zmLNtpI8.js} +1 -1
- package/dist/viewer/{blockDiagram-I7D4REHJ-BvS7PEBE.js → blockDiagram-I7D4REHJ-BJJKBHFX.js} +1 -1
- package/dist/viewer/{bn-BD-2XOGV67Q-TK2Nt4AS.js → bn-BD-2XOGV67Q-D6zzfXu3.js} +1 -1
- package/dist/viewer/{c4Diagram-7LVT6UL2-DiPixCgw.js → c4Diagram-7LVT6UL2-CLivMEyH.js} +1 -1
- package/dist/viewer/{ca-ES-6MX7JW3Y-ssAQ_aeA.js → ca-ES-6MX7JW3Y-G1FH_576.js} +1 -1
- package/dist/viewer/{chunk-4HAMMTFA-Dx6b40xi.js → chunk-4HAMMTFA-Di0xdyz8.js} +1 -1
- package/dist/viewer/{chunk-EIO257PC-BtM_VLQE.js → chunk-EIO257PC-C_A0ItX_.js} +1 -1
- package/dist/viewer/{chunk-GMAD6QVW-COZQExf-.js → chunk-GMAD6QVW-Yd9B1P6N.js} +1 -1
- package/dist/viewer/{chunk-GVQU2GXP-BzZEH01V.js → chunk-GVQU2GXP-BlQ5Hc4C.js} +1 -1
- package/dist/viewer/{chunk-IMKFNOWR-DoSmXTi7.js → chunk-IMKFNOWR-sLl17KlZ.js} +1 -1
- package/dist/viewer/{chunk-L3NEJ4N5-BoNKpHsG.js → chunk-L3NEJ4N5-ByzPblyy.js} +1 -1
- package/dist/viewer/{chunk-OSK3NFVY-fma5qDgd.js → chunk-OSK3NFVY-B8lsSjgE.js} +1 -1
- package/dist/viewer/{chunk-PWAF6VOD-B-FOPc-q.js → chunk-PWAF6VOD-Dt03PokQ.js} +1 -1
- package/dist/viewer/{chunk-SHT3W25Y-Bo8j1N02.js → chunk-SHT3W25Y-D8tOADu9.js} +1 -1
- package/dist/viewer/{chunk-SVP7TREG-B62eBjLz.js → chunk-SVP7TREG-BCCTaJFp.js} +1 -1
- package/dist/viewer/{chunk-TICWLB2K-p6Tzdi_n.js → chunk-TICWLB2K-CKvZ1F5E.js} +1 -1
- package/dist/viewer/{classDiagram-ZZMXUADV-yDzvlm9G.js → classDiagram-ZZMXUADV-BPsoNR3A.js} +1 -1
- package/dist/viewer/{classDiagram-v2-VYDZK3BY-yDzvlm9G.js → classDiagram-v2-VYDZK3BY-BPsoNR3A.js} +1 -1
- package/dist/viewer/{cs-CZ-2BRQDIVT-CJRjmWM6.js → cs-CZ-2BRQDIVT-KdoHU-Qi.js} +1 -1
- package/dist/viewer/{cynefinDiagram-5FMLGOSQ-B5NowWLs.js → cynefinDiagram-5FMLGOSQ-CPAZlTbz.js} +1 -1
- package/dist/viewer/{da-DK-5WZEPLOC-D-dHqXdP.js → da-DK-5WZEPLOC-D_MTuSXJ.js} +1 -1
- package/dist/viewer/{dagre-GXQ25YYZ-CnMtZyQJ.js → dagre-GXQ25YYZ-CGJi5tfA.js} +1 -1
- package/dist/viewer/{de-DE-XR44H4JA-C-TB_N6V.js → de-DE-XR44H4JA-BLOov6di.js} +1 -1
- package/dist/viewer/{diagram-S7CK7UJ4-BUqW7fG2.js → diagram-S7CK7UJ4-v4jY9cY2.js} +1 -1
- package/dist/viewer/{diagram-UQ7AKVKN-8txdjYKW.js → diagram-UQ7AKVKN-CHWKBoDd.js} +1 -1
- package/dist/viewer/{diagram-VX7I27RA-VRK1Xx-r.js → diagram-VX7I27RA-BVUIPSa6.js} +1 -1
- package/dist/viewer/{diagram-Z3DM3KII-CFTEE6hm.js → diagram-Z3DM3KII-C4Y7zZHg.js} +1 -1
- package/dist/viewer/{dist-GYlII7AN.js → dist-1IcdPIYN.js} +2 -2
- package/dist/viewer/dist-B2FPj3Qt.js +9 -0
- package/dist/viewer/{dist-4VxRqYLb.js → dist-B3RoMAF6.js} +1 -1
- package/dist/viewer/{dist-SaSQiH_S.js → dist-BQs1NNpk.js} +1 -1
- package/dist/viewer/{dist-BBOT2Dod.js → dist-BVTHDHV6.js} +1 -1
- package/dist/viewer/{dist-U9k2HrGK.js → dist-Bc8tMTe5.js} +1 -1
- package/dist/viewer/dist-Bqez8J_a.js +1 -0
- package/dist/viewer/dist-C4Lc0ZFP.js +1 -0
- package/dist/viewer/{dist-CmRhIDCA.js → dist-CCwaS8Bu.js} +1 -1
- package/dist/viewer/{dist-CFAaHddG.js → dist-CRx0ZMXK.js} +1 -1
- package/dist/viewer/{dist-B7cBbeKI.js → dist-CeYG0ueU.js} +1 -1
- package/dist/viewer/{dist-DI46xOxZ.js → dist-Ct-E_S8r.js} +1 -1
- package/dist/viewer/{dist-6lhXFIAO.js → dist-D8bI9sBL.js} +1 -1
- package/dist/viewer/{dist-DhFC_v-5.js → dist-DFGQshKp.js} +4 -4
- package/dist/viewer/{dist-Du5bWJ2g.js → dist-DXnqzoeB.js} +1 -1
- package/dist/viewer/{dist-D_UP42BZ.js → dist-DYMwViBu.js} +1 -1
- package/dist/viewer/dist-DpVonJ_O.js +1 -0
- package/dist/viewer/{dist-CydgyGeV.js → dist-DsDINnzX.js} +1 -1
- package/dist/viewer/{dist-BCqz-HqX.js → dist-JfoSPkrU.js} +1 -1
- package/dist/viewer/{dist-CH0akeCq.js → dist-KZC5UOjy.js} +9 -9
- package/dist/viewer/dist-TLcUQst5.js +6 -0
- package/dist/viewer/{dist-DbkbyA0U.js → dist-WN2tr_mQ.js} +1 -1
- package/dist/viewer/{dist-BPVVld5s.js → dist-_d7trXgy.js} +1 -1
- package/dist/viewer/{dist-CPVcHWlQ.js → dist-xVN1cHRs.js} +2 -2
- package/dist/viewer/{ebnfDiagram-PWID7BFC-B2uFP8zT.js → ebnfDiagram-PWID7BFC-BfH0Kwma.js} +1 -1
- package/dist/viewer/{el-GR-BZB4AONW-Cin0hSuv.js → el-GR-BZB4AONW-DytlrCPc.js} +1 -1
- package/dist/viewer/{en-B4ZKOASM-r25weJ3i.js → en-B4ZKOASM-CxMHMjTS.js} +1 -1
- package/dist/viewer/{erDiagram-RLTQ6QDP-C_wdcD3l.js → erDiagram-RLTQ6QDP-DiANaX5a.js} +1 -1
- package/dist/viewer/{es-ES-U4NZUMDT-BTfNIW-f.js → es-ES-U4NZUMDT-CWOlOrxS.js} +1 -1
- package/dist/viewer/{eu-ES-A7QVB2H4-CwpkrMfM.js → eu-ES-A7QVB2H4-7rIki6yl.js} +1 -1
- package/dist/viewer/{fa-IR-HGAKTJCU-xR6FbJG0.js → fa-IR-HGAKTJCU-XuLQk-Tn.js} +1 -1
- package/dist/viewer/{fi-FI-Z5N7JZ37-aFZzomat.js → fi-FI-Z5N7JZ37-BVT2imWO.js} +1 -1
- package/dist/viewer/flowDiagram-HODETNUW-CCTrPmhX.js +1 -0
- package/dist/viewer/{fr-FR-RHASNOE6-CudNlR7s.js → fr-FR-RHASNOE6-BDrE0Sar.js} +1 -1
- package/dist/viewer/ganttDiagram-EL5Y4UJY-C0kMmivD.js +292 -0
- package/dist/viewer/{gl-ES-HMX3MZ6V-gVz21kpP.js → gl-ES-HMX3MZ6V-BGePYNwa.js} +1 -1
- package/dist/viewer/{he-IL-6SHJWFNN-BJKBOspV.js → he-IL-6SHJWFNN-C_h7ANwh.js} +1 -1
- package/dist/viewer/{hi-IN-IWLTKZ5I-CbzuQ896.js → hi-IN-IWLTKZ5I-DO6JQv11.js} +1 -1
- package/dist/viewer/{hu-HU-A5ZG7DT2-B_jSyb1P.js → hu-HU-A5ZG7DT2-CYW6-QvY.js} +1 -1
- package/dist/viewer/{id-ID-SAP4L64H-DG5B5Nbw.js → id-ID-SAP4L64H-lnrwwUQv.js} +1 -1
- package/dist/viewer/{image-GAAHSSAO-Daq9X6yp.js → image-GAAHSSAO-DPKo0Z9B.js} +1 -1
- package/dist/viewer/index.html +1 -1
- package/dist/viewer/index.js +6 -6
- package/dist/viewer/index2.css +141 -50
- package/dist/viewer/{infoDiagram-27XIBGKW-BEcf3Mgz.js → infoDiagram-27XIBGKW-BrpKtrz1.js} +1 -1
- package/dist/viewer/{ishikawaDiagram-5VMMS53U-BaiLcmxa.js → ishikawaDiagram-5VMMS53U-Bzzm1Qn9.js} +1 -1
- package/dist/viewer/{it-IT-JPQ66NNP-Be6ERDzQ.js → it-IT-JPQ66NNP-Bmrd9W_k.js} +1 -1
- package/dist/viewer/{ja-JP-DBVTYXUO-rzX72p52.js → ja-JP-DBVTYXUO-BzIPu9Sq.js} +1 -1
- package/dist/viewer/{journeyDiagram-3NMN7TZE-CF0kgq6e.js → journeyDiagram-3NMN7TZE-BnypDAuH.js} +1 -1
- package/dist/viewer/{kaa-6HZHGXH3-xkB9EtaK.js → kaa-6HZHGXH3-DKokUJUv.js} +1 -1
- package/dist/viewer/{kab-KAB-ZGHBKWFO-A9TW4l6B.js → kab-KAB-ZGHBKWFO-DPboBUhX.js} +1 -1
- package/dist/viewer/{kanban-definition-UXKFOSKX-B1yViTEB.js → kanban-definition-UXKFOSKX-xl1KXBhm.js} +1 -1
- package/dist/viewer/{kk-KZ-P5N5QNE5-D-_fY8Gw.js → kk-KZ-P5N5QNE5-CW1AnK2i.js} +1 -1
- package/dist/viewer/{km-KH-HSX4SM5Z-BcY5m6VJ.js → km-KH-HSX4SM5Z-Cy-Jz187.js} +1 -1
- package/dist/viewer/{ko-KR-MTYHY66A-et49DOjn.js → ko-KR-MTYHY66A-ENrzcom-.js} +1 -1
- package/dist/viewer/{ku-TR-6OUDTVRD-CctJtizJ.js → ku-TR-6OUDTVRD-ujaIeZ6d.js} +1 -1
- package/dist/viewer/{lt-LT-XHIRWOB4-CKIcj0xZ.js → lt-LT-XHIRWOB4-DCHudAUH.js} +1 -1
- package/dist/viewer/{lv-LV-5QDEKY6T-eD_nIZ1C.js → lv-LV-5QDEKY6T-CkczV-YS.js} +1 -1
- package/dist/viewer/{mindmap-definition-YA3MSWOX-eSx4puWQ.js → mindmap-definition-YA3MSWOX-Cmaw8zST.js} +1 -1
- package/dist/viewer/{mr-IN-CRQNXWMA-DZE-1OVW.js → mr-IN-CRQNXWMA-CAULhacb.js} +1 -1
- package/dist/viewer/{my-MM-5M5IBNSE-C4RtxqYT.js → my-MM-5M5IBNSE-CIK3iNzd.js} +1 -1
- package/dist/viewer/{nb-NO-T6EIAALU-BR4xmg8K.js → nb-NO-T6EIAALU-awDYmeD3.js} +1 -1
- package/dist/viewer/{nl-NL-IS3SIHDZ-CC_ODK0w.js → nl-NL-IS3SIHDZ-DnN7YgqH.js} +1 -1
- package/dist/viewer/{nn-NO-6E72VCQL-B1B5ggd_.js → nn-NO-6E72VCQL-CirX0qpy.js} +1 -1
- package/dist/viewer/{oc-FR-POXYY2M6-C4ylGoRV.js → oc-FR-POXYY2M6-BmRoBPJJ.js} +1 -1
- package/dist/viewer/{pa-IN-N4M65BXN-CeGYxP4x.js → pa-IN-N4M65BXN-C3t1i1uP.js} +1 -1
- package/dist/viewer/{pegDiagram-XKGWAZYB-Dh89osCP.js → pegDiagram-XKGWAZYB-CRs_uYT9.js} +1 -1
- package/dist/viewer/percentages-BXMCSKIN-BgW3KG9t.js +1 -0
- package/dist/viewer/{pieDiagram-E7YTZNPT-DLjCSZj7.js → pieDiagram-E7YTZNPT-CX1dwbeD.js} +3 -3
- package/dist/viewer/{pl-PL-T2D74RX3-DG-CBlvr.js → pl-PL-T2D74RX3-LcmmmlyH.js} +1 -1
- package/dist/viewer/{prod-BkhfMLuD.js → prod-B8PlumMX.js} +9 -9
- package/dist/viewer/{pt-BR-5N22H2LF-DHX82eiC.js → pt-BR-5N22H2LF-CSwh6Qow.js} +1 -1
- package/dist/viewer/{pt-PT-UZXXM6DQ-C7hcCDRC.js → pt-PT-UZXXM6DQ-Dik_tH8d.js} +1 -1
- package/dist/viewer/{quadrantDiagram-AXDQQJYC-C8ex_GP4.js → quadrantDiagram-AXDQQJYC-DAlIHzj1.js} +1 -1
- package/dist/viewer/{railroadDiagram-O6MQD6OU-1tVqy-R1.js → railroadDiagram-O6MQD6OU-3sbXCT8O.js} +1 -1
- package/dist/viewer/{requirementDiagram-BXWQKSXE-MJWMqh0i.js → requirementDiagram-BXWQKSXE-_SmB-iGu.js} +1 -1
- package/dist/viewer/{ro-RO-JPDTUUEW-kNmvlxGQ.js → ro-RO-JPDTUUEW-5pEQNah0.js} +1 -1
- package/dist/viewer/{ru-RU-B4JR7IUQ-DIPjZ7JJ.js → ru-RU-B4JR7IUQ-D_Kg9Hzp.js} +1 -1
- package/dist/viewer/{sequenceDiagram-WJ2MYXX4-BmytocXO.js → sequenceDiagram-WJ2MYXX4-CNxS0HZg.js} +1 -1
- package/dist/viewer/{si-LK-N5RQ5JYF-CklMTI2L.js → si-LK-N5RQ5JYF-Bp_qk_kO.js} +1 -1
- package/dist/viewer/{sk-SK-C5VTKIMK-TIEeBTSD.js → sk-SK-C5VTKIMK-dZmproWt.js} +1 -1
- package/dist/viewer/{sl-SI-NN7IZMDC-BzfdTTSQ.js → sl-SI-NN7IZMDC-DCPnVelb.js} +1 -1
- package/dist/viewer/{stateDiagram-D77RDMKH-ASSh2jQr.js → stateDiagram-D77RDMKH-DLlcIj9E.js} +1 -1
- package/dist/viewer/{stateDiagram-v2-MP3YSRHH-QqO49gLr.js → stateDiagram-v2-MP3YSRHH-BQGIuopX.js} +1 -1
- package/dist/viewer/subset-shared.chunk-CvpSwkWA.js +1 -0
- package/dist/viewer/{subset-worker.chunk-ByFgYWrP.js → subset-worker.chunk-KysBifhs.js} +1 -1
- package/dist/viewer/{sv-SE-XGPEYMSR-Ca92kj7e.js → sv-SE-XGPEYMSR-DQC8YOoA.js} +1 -1
- package/dist/viewer/{swimlanes-42K2YHIH-B6PLFQO7.js → swimlanes-42K2YHIH-pPhC0efI.js} +1 -1
- package/dist/viewer/{swimlanesDiagram-VR7AAH4N-N8AFiqh9.js → swimlanesDiagram-VR7AAH4N-BknwjiJI.js} +1 -1
- package/dist/viewer/{ta-IN-2NMHFXQM-VcTgcAra.js → ta-IN-2NMHFXQM-XJN8sySm.js} +1 -1
- package/dist/viewer/{th-TH-HPSO5L25-CQK6U6zN.js → th-TH-HPSO5L25-CrVxkBUt.js} +1 -1
- package/dist/viewer/{timeline-definition-24CTP7MA-bdnxX84c.js → timeline-definition-24CTP7MA-djWWXfng.js} +1 -1
- package/dist/viewer/{tr-TR-DEFEU3FU-BK4O5HPq.js → tr-TR-DEFEU3FU-CL6S5zlq.js} +1 -1
- package/dist/viewer/{uk-UA-QMV73CPH-Dgto1rbO.js → uk-UA-QMV73CPH-CMrgmof-.js} +1 -1
- package/dist/viewer/{useSandboxFrame-3fuBOs0A.js → useSandboxFrame-Cx7xofoM.js} +1 -1
- package/dist/viewer/{vennDiagram-4TSXK5OY-DPdqusDE.js → vennDiagram-4TSXK5OY-DnkQnhE7.js} +1 -1
- package/dist/viewer/{vi-VN-M7AON7JQ-dbrYvw7t.js → vi-VN-M7AON7JQ-DcU7HmKI.js} +1 -1
- package/dist/viewer/{wardleyDiagram-VM6X3IG4-B4FxaO_K.js → wardleyDiagram-VM6X3IG4-BiN7N4S8.js} +1 -1
- package/dist/viewer/{xychartDiagram-S5SC5T6Z-B-xgw6AE.js → xychartDiagram-S5SC5T6Z-DR4L47nZ.js} +1 -1
- package/dist/viewer/{zh-CN-LNUGB5OW-B9JwAL-C.js → zh-CN-LNUGB5OW-B58c_p8w.js} +1 -1
- package/dist/viewer/{zh-HK-E62DVLB3-yrlUVHxC.js → zh-HK-E62DVLB3-D-pcM14T.js} +1 -1
- package/dist/viewer/{zh-TW-RAJ6MFWO-6sxLjcXU.js → zh-TW-RAJ6MFWO-Dcb5-RNU.js} +1 -1
- package/package.json +1 -1
- package/dist/viewer/CloudDocument-CotgQhd8.js +0 -1
- package/dist/viewer/DocumentPage-0GGJlY-j.js +0 -1
- package/dist/viewer/dist-C10VRgAd.js +0 -1
- package/dist/viewer/dist-CL7kKeXL.js +0 -1
- package/dist/viewer/dist-DAw97NG5.js +0 -1
- package/dist/viewer/dist-DGBiXrP7.js +0 -9
- package/dist/viewer/dist-DTI9Lw8b.js +0 -6
- package/dist/viewer/flowDiagram-HODETNUW-DuNy2QCx.js +0 -1
- package/dist/viewer/ganttDiagram-EL5Y4UJY-CmFhbbr4.js +0 -292
- package/dist/viewer/percentages-BXMCSKIN-BlwZCNS5.js +0 -1
- package/dist/viewer/subset-shared.chunk-CThXukp8.js +0 -1
package/dist/cli.cjs
CHANGED
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
|
}
|
|
@@ -17729,6 +17744,15 @@ function stampBlockIds(state) {
|
|
|
17729
17744
|
});
|
|
17730
17745
|
return { ...state, root: { ...state.root, children } };
|
|
17731
17746
|
}
|
|
17747
|
+
var BOX_LINE = /[\u2500-\u257F]/;
|
|
17748
|
+
var TOP_LEFT = /[┌╭╔┏]/g;
|
|
17749
|
+
var BOTTOM_RIGHT = /[┘╯╝┛]/;
|
|
17750
|
+
var ARROW = /[▼▲▶◀►◄]|[─━]>/;
|
|
17751
|
+
var isBoxDiagram = (code) => code.split("\n").filter((line) => BOX_LINE.test(line)).length >= 3 && (code.match(TOP_LEFT)?.length ?? 0) >= 2 && BOTTOM_RIGHT.test(code) && ARROW.test(code);
|
|
17752
|
+
var holdsBoxDiagram = (node) => node.type === "code-block" && isBoxDiagram(node.code ?? "") || (node.children ?? []).some(holdsBoxDiagram);
|
|
17753
|
+
function boxDrawingDiagrams(state) {
|
|
17754
|
+
return state.root.children.flatMap((block) => block.$?.blockId && holdsBoxDiagram(block) ? [block.$.blockId] : []);
|
|
17755
|
+
}
|
|
17732
17756
|
|
|
17733
17757
|
// src/server/board-comments.ts
|
|
17734
17758
|
var import_node_crypto2 = __toESM(require("node:crypto"), 1);
|
|
@@ -53451,6 +53475,10 @@ function streamAtVersion(doc, frontiers, createEditor3, base, target, commitMess
|
|
|
53451
53475
|
};
|
|
53452
53476
|
}
|
|
53453
53477
|
|
|
53478
|
+
// src/shared/document-features.ts
|
|
53479
|
+
var DOCUMENT_FEATURES = ["pending"];
|
|
53480
|
+
var DOCUMENT_FEATURES_HEADER = "x-ryugi-document-features";
|
|
53481
|
+
|
|
53454
53482
|
// node_modules/.pnpm/@lexical+table@0.52.0_typescript@5.9.3/node_modules/@lexical/table/dist/LexicalTable.dev.js
|
|
53455
53483
|
var LexicalTable_dev_exports = {};
|
|
53456
53484
|
__export(LexicalTable_dev_exports, {
|
|
@@ -87704,8 +87732,39 @@ var HeadlessExtension3 = mod45.HeadlessExtension;
|
|
|
87704
87732
|
var createHeadlessEditor2 = mod45.createHeadlessEditor;
|
|
87705
87733
|
|
|
87706
87734
|
// src/server/document-headless.ts
|
|
87735
|
+
var PendingNode = class _PendingNode extends DecoratorNode2 {
|
|
87736
|
+
__intent;
|
|
87737
|
+
static getType() {
|
|
87738
|
+
return "pending";
|
|
87739
|
+
}
|
|
87740
|
+
static clone(node) {
|
|
87741
|
+
return new _PendingNode(node.__intent, node.__key);
|
|
87742
|
+
}
|
|
87743
|
+
static importJSON(json) {
|
|
87744
|
+
return new _PendingNode(json.intent).updateFromJSON(json);
|
|
87745
|
+
}
|
|
87746
|
+
constructor(intent = "", key2) {
|
|
87747
|
+
super(key2);
|
|
87748
|
+
this.__intent = intent;
|
|
87749
|
+
}
|
|
87750
|
+
exportJSON() {
|
|
87751
|
+
return { ...super.exportJSON(), type: "pending", version: 1, intent: this.__intent };
|
|
87752
|
+
}
|
|
87753
|
+
createDOM() {
|
|
87754
|
+
throw new Error("headless");
|
|
87755
|
+
}
|
|
87756
|
+
updateDOM() {
|
|
87757
|
+
return false;
|
|
87758
|
+
}
|
|
87759
|
+
isInline() {
|
|
87760
|
+
return false;
|
|
87761
|
+
}
|
|
87762
|
+
decorate() {
|
|
87763
|
+
return null;
|
|
87764
|
+
}
|
|
87765
|
+
};
|
|
87707
87766
|
var createDocumentHeadlessEditor = () => createHeadlessEditor2({
|
|
87708
|
-
nodes: allHeadlessNodes,
|
|
87767
|
+
nodes: [...allHeadlessNodes, PendingNode],
|
|
87709
87768
|
onError: (err) => {
|
|
87710
87769
|
throw err;
|
|
87711
87770
|
}
|
|
@@ -87713,6 +87772,8 @@ var createDocumentHeadlessEditor = () => createHeadlessEditor2({
|
|
|
87713
87772
|
|
|
87714
87773
|
// src/server/document-session.ts
|
|
87715
87774
|
var WRITTEN_LIMIT = 50;
|
|
87775
|
+
var OutdatedClient = class extends Error {
|
|
87776
|
+
};
|
|
87716
87777
|
var messageOf = (err) => err instanceof Error ? err.message : String(err);
|
|
87717
87778
|
function lcsLength(a5, b6) {
|
|
87718
87779
|
const table = Array.from({ length: a5.length + 1 }, () => new Uint32Array(b6.length + 1));
|
|
@@ -87732,11 +87793,13 @@ function blockStats(before2, after2) {
|
|
|
87732
87793
|
const changed = Math.min(added, removed);
|
|
87733
87794
|
return `+${added - changed} ~${changed} -${removed - changed} blocks`;
|
|
87734
87795
|
}
|
|
87735
|
-
function closestBase(written, text2, fallback) {
|
|
87796
|
+
function closestBase(written, text2, fallback, floor) {
|
|
87797
|
+
const keys2 = [...written.keys()];
|
|
87798
|
+
const from = floor === null ? -1 : keys2.indexOf(floor);
|
|
87736
87799
|
const wanted = new Set(text2.split("\n").map((line) => line.trim()));
|
|
87737
87800
|
let best = fallback;
|
|
87738
87801
|
let bestScore = -1;
|
|
87739
|
-
for (const candidate of
|
|
87802
|
+
for (const candidate of from >= 0 ? keys2.slice(from) : keys2) {
|
|
87740
87803
|
const lines = candidate.split("\n").map((line) => line.trim());
|
|
87741
87804
|
const shared = lines.filter((line) => wanted.has(line)).length;
|
|
87742
87805
|
const score = shared - (lines.length - shared);
|
|
@@ -87747,6 +87810,15 @@ function closestBase(written, text2, fallback) {
|
|
|
87747
87810
|
}
|
|
87748
87811
|
return best;
|
|
87749
87812
|
}
|
|
87813
|
+
async function lastAgentWrite(activityFile, file) {
|
|
87814
|
+
const recorded = Number(await readText(activityFile));
|
|
87815
|
+
if (recorded > 0) return recorded;
|
|
87816
|
+
try {
|
|
87817
|
+
return Math.round((await import_promises.default.stat(file)).mtimeMs);
|
|
87818
|
+
} catch {
|
|
87819
|
+
return Date.now();
|
|
87820
|
+
}
|
|
87821
|
+
}
|
|
87750
87822
|
async function readText(file) {
|
|
87751
87823
|
try {
|
|
87752
87824
|
return await import_promises.default.readFile(file, "utf8");
|
|
@@ -87789,10 +87861,15 @@ async function createDocumentSession(options) {
|
|
|
87789
87861
|
let streaming = 0;
|
|
87790
87862
|
let lastCursor = null;
|
|
87791
87863
|
let lastGoodText = null;
|
|
87864
|
+
let lastAgentText = null;
|
|
87792
87865
|
let lastFileText = await readText(file) ?? "";
|
|
87866
|
+
const activityFile = import_node_path8.default.join(import_node_path8.default.dirname(snapshotFile), "agent-active");
|
|
87867
|
+
let agentActiveAt = await lastAgentWrite(activityFile, file);
|
|
87868
|
+
let activitySaved = Promise.resolve();
|
|
87869
|
+
const emitStatus = () => emit({ type: "status", outcome, streaming: streaming > 0, agentActiveAt });
|
|
87793
87870
|
const setOutcome = (next) => {
|
|
87794
87871
|
outcome = next;
|
|
87795
|
-
|
|
87872
|
+
emitStatus();
|
|
87796
87873
|
};
|
|
87797
87874
|
try {
|
|
87798
87875
|
const initial = parseDocument2(lastFileText);
|
|
@@ -87833,6 +87910,9 @@ async function createDocumentSession(options) {
|
|
|
87833
87910
|
const onFileText = (text2) => {
|
|
87834
87911
|
if (text2 === lastFileText) return;
|
|
87835
87912
|
lastFileText = text2;
|
|
87913
|
+
agentActiveAt = Date.now();
|
|
87914
|
+
const at7 = agentActiveAt;
|
|
87915
|
+
activitySaved = activitySaved.then(() => writeAtomic(activityFile, String(at7))).catch((err) => log(`agent activity not saved: ${messageOf(err)}`));
|
|
87836
87916
|
let target;
|
|
87837
87917
|
try {
|
|
87838
87918
|
target = parseDocument2(text2);
|
|
@@ -87842,13 +87922,15 @@ async function createDocumentSession(options) {
|
|
|
87842
87922
|
return;
|
|
87843
87923
|
}
|
|
87844
87924
|
const fallback = lastGoodText ?? serializeDocument(editor.getEditorState().toJSON());
|
|
87925
|
+
const floor = lastAgentText;
|
|
87926
|
+
lastAgentText = text2;
|
|
87845
87927
|
const queued = streaming > 0;
|
|
87846
87928
|
lastGoodText = text2;
|
|
87847
87929
|
streaming += 1;
|
|
87848
|
-
|
|
87930
|
+
emitStatus();
|
|
87849
87931
|
playing = playing.then(async () => {
|
|
87850
87932
|
try {
|
|
87851
|
-
const baseText = queued ? fallback : closestBase(written, text2, fallback);
|
|
87933
|
+
const baseText = queued ? fallback : closestBase(written, text2, fallback, floor);
|
|
87852
87934
|
const { stats, steps } = prepareAgentEdit(baseText, text2, target);
|
|
87853
87935
|
for (const step of steps) {
|
|
87854
87936
|
applyStep(step);
|
|
@@ -87898,6 +87980,7 @@ async function createDocumentSession(options) {
|
|
|
87898
87980
|
lastFileText = text2;
|
|
87899
87981
|
lastGoodText = text2;
|
|
87900
87982
|
remember(text2);
|
|
87983
|
+
emit({ type: "saved" });
|
|
87901
87984
|
}
|
|
87902
87985
|
snapshotDirty = true;
|
|
87903
87986
|
await saveSnapshot();
|
|
@@ -87920,8 +88003,13 @@ async function createDocumentSession(options) {
|
|
|
87920
88003
|
scheduleWrite();
|
|
87921
88004
|
return {
|
|
87922
88005
|
snapshot: () => loro.export({ mode: "snapshot" }),
|
|
88006
|
+
state: () => editor.getEditorState().toJSON(),
|
|
87923
88007
|
lineage: () => loro.getTree(TREE_NAME).roots()[0]?.id ?? "",
|
|
87924
|
-
importUpdate: (bytes) => {
|
|
88008
|
+
importUpdate: (bytes, features = []) => {
|
|
88009
|
+
const undeclared2 = DOCUMENT_FEATURES.filter((feature) => !features.includes(feature));
|
|
88010
|
+
const types = undeclared2.length ? editor.getEditorState().read(() => new Set($getRoot2().getChildren().map((block) => block.getType()))) : /* @__PURE__ */ new Set();
|
|
88011
|
+
const missing = undeclared2.filter((feature) => types.has(feature));
|
|
88012
|
+
if (missing.length) throw new OutdatedClient(`this page cannot show <${missing.join(">, <")}> blocks; reload the page`);
|
|
87925
88013
|
const probe = loro.fork();
|
|
87926
88014
|
probe.import(bytes);
|
|
87927
88015
|
if (probe.getTree(TREE_NAME).roots().length > 1) throw new Error("update belongs to a different document; reload the page");
|
|
@@ -87936,6 +88024,7 @@ async function createDocumentSession(options) {
|
|
|
87936
88024
|
},
|
|
87937
88025
|
outcome: () => outcome,
|
|
87938
88026
|
streaming: () => streaming > 0,
|
|
88027
|
+
agentActiveAt: () => agentActiveAt,
|
|
87939
88028
|
cursor: () => lastCursor,
|
|
87940
88029
|
settled: () => playing,
|
|
87941
88030
|
flush,
|
|
@@ -87943,6 +88032,7 @@ async function createDocumentSession(options) {
|
|
|
87943
88032
|
clearInterval(snapshotTimer);
|
|
87944
88033
|
await flush();
|
|
87945
88034
|
await saveSnapshot();
|
|
88035
|
+
await activitySaved;
|
|
87946
88036
|
binding.dispose();
|
|
87947
88037
|
listeners.clear();
|
|
87948
88038
|
}
|
|
@@ -87955,8 +88045,10 @@ var forAgent = (thread) => ({
|
|
|
87955
88045
|
waitingOn: waitingOn(thread),
|
|
87956
88046
|
messages: thread.messages.map(({ avatar: _avatar, ...message }) => message)
|
|
87957
88047
|
});
|
|
87958
|
-
|
|
87959
|
-
|
|
88048
|
+
var diagramWarnings = (session) => boxDrawingDiagrams(session.state()).map(
|
|
88049
|
+
(id2) => `block ${id2} draws a diagram with box-drawing characters; this document is rendered, not Markdown, so draw it as <mermaid>`
|
|
88050
|
+
);
|
|
88051
|
+
function outcomeWarnings(outcome) {
|
|
87960
88052
|
if (outcome.kind === "rejected") return [`agent edit rejected: ${outcome.message} (doc.xml is left as written; fix it)`];
|
|
87961
88053
|
if (outcome.kind === "failed") return [`agent edit failed: ${outcome.message}`];
|
|
87962
88054
|
return [];
|
|
@@ -87997,15 +88089,22 @@ function createDocumentRegistry(options) {
|
|
|
87997
88089
|
warnings.set(id2, next);
|
|
87998
88090
|
options.onWarningsChange(id2);
|
|
87999
88091
|
};
|
|
88000
|
-
|
|
88092
|
+
const currentWarnings = () => {
|
|
88093
|
+
if (session.streaming()) return [];
|
|
88094
|
+
const outcome = session.outcome();
|
|
88095
|
+
return outcome.kind === "rejected" ? outcomeWarnings(outcome) : [...outcomeWarnings(outcome), ...diagramWarnings(session)];
|
|
88096
|
+
};
|
|
88097
|
+
setWarnings(currentWarnings());
|
|
88001
88098
|
session.subscribe((event) => {
|
|
88002
88099
|
if (event.type === "update") {
|
|
88003
88100
|
options.broadcast({ type: "doc-update", artifact, bytes: Buffer.from(event.bytes).toString("base64") });
|
|
88004
88101
|
} else if (event.type === "cursor") {
|
|
88005
88102
|
options.broadcast({ type: "doc-cursor", artifact, cursor: event.cursor });
|
|
88103
|
+
} else if (event.type === "saved") {
|
|
88104
|
+
setWarnings(currentWarnings());
|
|
88006
88105
|
} else {
|
|
88007
|
-
options.broadcast({ type: "doc-status", artifact, streaming: event.streaming, outcome: event.outcome });
|
|
88008
|
-
setWarnings(
|
|
88106
|
+
options.broadcast({ type: "doc-status", artifact, streaming: event.streaming, outcome: event.outcome, agentActiveAt: event.agentActiveAt, now: Date.now() });
|
|
88107
|
+
setWarnings(currentWarnings());
|
|
88009
88108
|
}
|
|
88010
88109
|
});
|
|
88011
88110
|
return session;
|
|
@@ -90347,6 +90446,8 @@ async function startArtifactsServer(options) {
|
|
|
90347
90446
|
lineage: session.lineage(),
|
|
90348
90447
|
outcome: session.outcome(),
|
|
90349
90448
|
streaming: session.streaming(),
|
|
90449
|
+
agentActiveAt: session.agentActiveAt(),
|
|
90450
|
+
now: Date.now(),
|
|
90350
90451
|
cursor: session.cursor(),
|
|
90351
90452
|
comments: documents.comments(id2)
|
|
90352
90453
|
});
|
|
@@ -90392,11 +90493,13 @@ async function startArtifactsServer(options) {
|
|
|
90392
90493
|
send(res, 413, "Update too large");
|
|
90393
90494
|
return;
|
|
90394
90495
|
}
|
|
90496
|
+
const header = req.headers[DOCUMENT_FEATURES_HEADER];
|
|
90497
|
+
const features = typeof header === "string" ? header.split(",").map((feature) => feature.trim()) : [];
|
|
90395
90498
|
try {
|
|
90396
|
-
session.importUpdate(new Uint8Array(Buffer.concat(chunks)));
|
|
90499
|
+
session.importUpdate(new Uint8Array(Buffer.concat(chunks)), features);
|
|
90397
90500
|
send(res, 204, "");
|
|
90398
90501
|
} catch (err) {
|
|
90399
|
-
sendJson(res, 400, { error: err.message });
|
|
90502
|
+
sendJson(res, err instanceof OutdatedClient ? 409 : 400, { error: err.message });
|
|
90400
90503
|
}
|
|
90401
90504
|
};
|
|
90402
90505
|
const blockIdsOf = async (id2, dir) => {
|
|
@@ -90882,7 +90985,8 @@ async function startArtifactsServer(options) {
|
|
|
90882
90985
|
const bytes = typeof request.bytes === "string" ? Buffer.from(request.bytes, "base64") : null;
|
|
90883
90986
|
if (!bytes) throw new Error("update needs bytes");
|
|
90884
90987
|
if (bytes.length > MAX_DOCUMENT_UPDATE) throw new Error("update too large");
|
|
90885
|
-
|
|
90988
|
+
const features = Array.isArray(request.features) ? request.features.filter((feature) => typeof feature === "string") : [];
|
|
90989
|
+
session.importUpdate(new Uint8Array(bytes), features);
|
|
90886
90990
|
return null;
|
|
90887
90991
|
}
|
|
90888
90992
|
if (request.op === "comment") {
|
|
@@ -91079,7 +91183,7 @@ function openReady(payload) {
|
|
|
91079
91183
|
}
|
|
91080
91184
|
|
|
91081
91185
|
// package.json
|
|
91082
|
-
var version = "1.
|
|
91186
|
+
var version = "1.20.0";
|
|
91083
91187
|
|
|
91084
91188
|
// src/server/main.ts
|
|
91085
91189
|
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-
|
|
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.20.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};
|