ryugi-artifacts 1.29.0 → 1.30.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 (155) hide show
  1. package/dist/cli.cjs +22 -3
  2. package/dist/server.cjs +33 -11
  3. package/dist/viewer/CloudDocument-F3ikpU1A.js +1 -0
  4. package/dist/viewer/{CloudLiveDocument-BDga8aEj.js → CloudLiveDocument-DuFE3g-N.js} +1 -1
  5. package/dist/viewer/{DocumentLayout-DYTnCgfH.js → DocumentLayout-CDZm1Mud.js} +156 -154
  6. package/dist/viewer/DocumentPage-DJWzglCT.js +1 -0
  7. package/dist/viewer/DocumentPage-RHTp39ah.css +1 -0
  8. package/dist/viewer/{abnfDiagram-VCTEODGH-B4hF9R2U.js → abnfDiagram-VCTEODGH-bIgNbjEv.js} +1 -1
  9. package/dist/viewer/{ar-SA-G6X2FPQ2-B0MSU5l9.js → ar-SA-G6X2FPQ2-CBD4Eb4b.js} +1 -1
  10. package/dist/viewer/{architectureDiagram-5GKGNRK7-Cd8Xx-hV.js → architectureDiagram-5GKGNRK7-DmUtD0jW.js} +1 -1
  11. package/dist/viewer/{az-AZ-76LH7QW2-DQpVWUnU.js → az-AZ-76LH7QW2-Dawes6_l.js} +1 -1
  12. package/dist/viewer/{bg-BG-XCXSNQG7-CFWizXaa.js → bg-BG-XCXSNQG7-BjL-bwQR.js} +1 -1
  13. package/dist/viewer/{blockDiagram-I7D4REHJ-C2yu7mK-.js → blockDiagram-I7D4REHJ-DecnBxKr.js} +1 -1
  14. package/dist/viewer/{bn-BD-2XOGV67Q-DoeoV9n5.js → bn-BD-2XOGV67Q-DazPpl6F.js} +1 -1
  15. package/dist/viewer/{c4Diagram-7LVT6UL2-B5orhRgE.js → c4Diagram-7LVT6UL2-CyUvAiLu.js} +1 -1
  16. package/dist/viewer/{ca-ES-6MX7JW3Y-B6_hkxTX.js → ca-ES-6MX7JW3Y-CHN5F-MT.js} +1 -1
  17. package/dist/viewer/{chunk-4HAMMTFA-BGybz_si.js → chunk-4HAMMTFA-BqCV0tLQ.js} +1 -1
  18. package/dist/viewer/{chunk-EIO257PC-D9F5NHVA.js → chunk-EIO257PC-CI3oDVqd.js} +1 -1
  19. package/dist/viewer/{chunk-GMAD6QVW-C0XbWNVH.js → chunk-GMAD6QVW-_ArBNgmm.js} +1 -1
  20. package/dist/viewer/{chunk-GVQU2GXP-vRk2m9ao.js → chunk-GVQU2GXP-Bp9ybMmF.js} +1 -1
  21. package/dist/viewer/{chunk-IMKFNOWR-DmpawLXk.js → chunk-IMKFNOWR-B_rSZWOf.js} +1 -1
  22. package/dist/viewer/{chunk-L3NEJ4N5-DUZfiZWj.js → chunk-L3NEJ4N5-BoNmCXoa.js} +1 -1
  23. package/dist/viewer/{chunk-OSK3NFVY-BvVtm98g.js → chunk-OSK3NFVY-BULGZbtp.js} +1 -1
  24. package/dist/viewer/chunk-PWAF6VOD-CAWzBUKW.js +1 -0
  25. package/dist/viewer/{chunk-SHT3W25Y-BIOqc_9G.js → chunk-SHT3W25Y-BJQbbp7D.js} +1 -1
  26. package/dist/viewer/{chunk-SVP7TREG-CzXvGBkp.js → chunk-SVP7TREG-CtvQoWMe.js} +1 -1
  27. package/dist/viewer/{chunk-TICWLB2K-BGDOLNPy.js → chunk-TICWLB2K-Bv95TsNF.js} +1 -1
  28. package/dist/viewer/{classDiagram-ZZMXUADV-1LD9MdPj.js → classDiagram-ZZMXUADV-HxzLFa3r.js} +1 -1
  29. package/dist/viewer/{classDiagram-v2-VYDZK3BY-1LD9MdPj.js → classDiagram-v2-VYDZK3BY-HxzLFa3r.js} +1 -1
  30. package/dist/viewer/{cs-CZ-2BRQDIVT-DvQX9epx.js → cs-CZ-2BRQDIVT-DgtgaiDS.js} +1 -1
  31. package/dist/viewer/{cynefinDiagram-5FMLGOSQ-Ck6iqdN1.js → cynefinDiagram-5FMLGOSQ-COYP2ZfW.js} +1 -1
  32. package/dist/viewer/{da-DK-5WZEPLOC-CIkD-mT-.js → da-DK-5WZEPLOC-3I0OTBiS.js} +1 -1
  33. package/dist/viewer/{dagre-GXQ25YYZ-Bw4MivVe.js → dagre-GXQ25YYZ-D1rndX4t.js} +1 -1
  34. package/dist/viewer/{de-DE-XR44H4JA-CkZg3nnD.js → de-DE-XR44H4JA-B9iziAr2.js} +1 -1
  35. package/dist/viewer/{diagram-S7CK7UJ4-DcU-yw6G.js → diagram-S7CK7UJ4-p76_pN6n.js} +1 -1
  36. package/dist/viewer/{diagram-UQ7AKVKN-DnKTK9PW.js → diagram-UQ7AKVKN-BZeUM6LQ.js} +1 -1
  37. package/dist/viewer/{diagram-VX7I27RA-BBU-ZVb0.js → diagram-VX7I27RA-BH6DOtBA.js} +1 -1
  38. package/dist/viewer/{diagram-Z3DM3KII-CKk14xfI.js → diagram-Z3DM3KII-sfyUv_ve.js} +1 -1
  39. package/dist/viewer/{dist-CqRkCb8-.js → dist-3LZ0NP21.js} +1 -1
  40. package/dist/viewer/dist-B8MRULN_.js +6 -0
  41. package/dist/viewer/{dist-D_WrKoQ5.js → dist-BA4-A1Cd.js} +4 -4
  42. package/dist/viewer/{dist-DImjGUkS.js → dist-BM_aMsng.js} +1 -1
  43. package/dist/viewer/{dist-BKBE5pov.js → dist-BqWUq_oe.js} +1 -1
  44. package/dist/viewer/dist-BxVKiIee.js +1 -0
  45. package/dist/viewer/dist-C47_vNXB.js +1 -0
  46. package/dist/viewer/{dist-8kfzVrJL.js → dist-CEMvvLBZ.js} +1 -1
  47. package/dist/viewer/dist-CGRa5563.js +9 -0
  48. package/dist/viewer/{dist-uAqigpP8.js → dist-CK9txTdI.js} +1 -1
  49. package/dist/viewer/dist-CjL7F6gd.js +1 -0
  50. package/dist/viewer/{dist-7oXSkB_P.js → dist-DBvKpXmJ.js} +2 -2
  51. package/dist/viewer/{dist-DcUDFAUF.js → dist-DK-B8LN7.js} +5 -5
  52. package/dist/viewer/{dist-Dj78KV6Q.js → dist-DMMVvQeB.js} +1 -1
  53. package/dist/viewer/{dist-CYozWt7T.js → dist-Drowm01h.js} +1 -1
  54. package/dist/viewer/{dist-BhZ13kjD.js → dist-DyDaX5RO.js} +1 -1
  55. package/dist/viewer/{dist-CCKpuvTI.js → dist-Edi9zuA8.js} +1 -1
  56. package/dist/viewer/dist-YDT1APnG.js +1 -0
  57. package/dist/viewer/{dist-DH-ho6_2.js → dist-Zi8sHrLY.js} +1 -1
  58. package/dist/viewer/{dist-B9K9D6SC.js → dist-_r49mWqe.js} +1 -1
  59. package/dist/viewer/{dist-BRb242lg.js → dist-cVUMcmuG.js} +1 -1
  60. package/dist/viewer/{dist-C_kp_dU8.js → dist-eWnihDK-.js} +1 -1
  61. package/dist/viewer/{dist-B5g7S3C3.js → dist-s15uIKEV.js} +1 -1
  62. package/dist/viewer/{dist-DpLi82dR.js → dist-vujJ95vP.js} +2 -2
  63. package/dist/viewer/{ebnfDiagram-PWID7BFC-CUH9C71X.js → ebnfDiagram-PWID7BFC-Cwzg9YYr.js} +1 -1
  64. package/dist/viewer/{el-GR-BZB4AONW-Cl1kWlzB.js → el-GR-BZB4AONW-Bpku_fd2.js} +1 -1
  65. package/dist/viewer/{en-B4ZKOASM-CT3OzVWV.js → en-B4ZKOASM-JcO5O6ZA.js} +1 -1
  66. package/dist/viewer/{erDiagram-RLTQ6QDP-BZbuVZrG.js → erDiagram-RLTQ6QDP-fnZn2zGn.js} +1 -1
  67. package/dist/viewer/{es-ES-U4NZUMDT-BAD-ccHs.js → es-ES-U4NZUMDT-c2vvUvhU.js} +1 -1
  68. package/dist/viewer/{eu-ES-A7QVB2H4-Cj2NDws-.js → eu-ES-A7QVB2H4-C-syu7wy.js} +1 -1
  69. package/dist/viewer/{fa-IR-HGAKTJCU-C0FVEGIZ.js → fa-IR-HGAKTJCU-2ZjoxLW1.js} +1 -1
  70. package/dist/viewer/{fi-FI-Z5N7JZ37-D2AdBx48.js → fi-FI-Z5N7JZ37-Cm2EWw3m.js} +1 -1
  71. package/dist/viewer/flowDiagram-HODETNUW-BWCd1R3C.js +1 -0
  72. package/dist/viewer/{fr-FR-RHASNOE6-BFreNJCR.js → fr-FR-RHASNOE6-kwukqNI-.js} +1 -1
  73. package/dist/viewer/ganttDiagram-EL5Y4UJY-CfW25j5s.js +292 -0
  74. package/dist/viewer/{gl-ES-HMX3MZ6V-DkkhEoWc.js → gl-ES-HMX3MZ6V-DctejPjR.js} +1 -1
  75. package/dist/viewer/{he-IL-6SHJWFNN-VvaCcliL.js → he-IL-6SHJWFNN-BbKgaNUV.js} +1 -1
  76. package/dist/viewer/{hi-IN-IWLTKZ5I-DJSuk02I.js → hi-IN-IWLTKZ5I-_zDSxbjx.js} +1 -1
  77. package/dist/viewer/{hu-HU-A5ZG7DT2-CNvqWgoH.js → hu-HU-A5ZG7DT2-zY2bFqfB.js} +1 -1
  78. package/dist/viewer/{id-ID-SAP4L64H-BdPRkPOp.js → id-ID-SAP4L64H-BJOftWhs.js} +1 -1
  79. package/dist/viewer/{image-GAAHSSAO-C5hSHSJ9.js → image-GAAHSSAO-B0SzUEyg.js} +1 -1
  80. package/dist/viewer/index.html +1 -1
  81. package/dist/viewer/index.js +8 -8
  82. package/dist/viewer/index2.css +4 -0
  83. package/dist/viewer/{infoDiagram-27XIBGKW-Dz669Ti5.js → infoDiagram-27XIBGKW-i0jDaaMj.js} +1 -1
  84. package/dist/viewer/{ishikawaDiagram-5VMMS53U-BO2EV1vm.js → ishikawaDiagram-5VMMS53U-BkPu7Jq-.js} +1 -1
  85. package/dist/viewer/{it-IT-JPQ66NNP-BAm2zqLD.js → it-IT-JPQ66NNP-D6NtFjc_.js} +1 -1
  86. package/dist/viewer/{ja-JP-DBVTYXUO-Dux__a-p.js → ja-JP-DBVTYXUO-dfhQ8Eqf.js} +1 -1
  87. package/dist/viewer/{journeyDiagram-3NMN7TZE-B8pnfhpY.js → journeyDiagram-3NMN7TZE-DXHqPWxU.js} +1 -1
  88. package/dist/viewer/{kaa-6HZHGXH3-5P_fyC_H.js → kaa-6HZHGXH3-D_iRpg5w.js} +1 -1
  89. package/dist/viewer/{kab-KAB-ZGHBKWFO-9hTPNvCU.js → kab-KAB-ZGHBKWFO-cuwM4TOO.js} +1 -1
  90. package/dist/viewer/{kanban-definition-UXKFOSKX-B8Pjf3dY.js → kanban-definition-UXKFOSKX-DukKBuS_.js} +1 -1
  91. package/dist/viewer/{kk-KZ-P5N5QNE5-CGou3WF6.js → kk-KZ-P5N5QNE5-Cu2Xwqho.js} +1 -1
  92. package/dist/viewer/{km-KH-HSX4SM5Z-DOyT_tEV.js → km-KH-HSX4SM5Z-C2519YyM.js} +1 -1
  93. package/dist/viewer/{ko-KR-MTYHY66A-DftVvGn6.js → ko-KR-MTYHY66A-rDIeV__F.js} +1 -1
  94. package/dist/viewer/{ku-TR-6OUDTVRD-CVdlBZmx.js → ku-TR-6OUDTVRD-Dp1Pftew.js} +1 -1
  95. package/dist/viewer/{lt-LT-XHIRWOB4-CUlT0RyT.js → lt-LT-XHIRWOB4-CzjYAKUN.js} +1 -1
  96. package/dist/viewer/{lv-LV-5QDEKY6T-6wWFJoM0.js → lv-LV-5QDEKY6T-CjR7CWID.js} +1 -1
  97. package/dist/viewer/{mindmap-definition-YA3MSWOX-BcDNUqMO.js → mindmap-definition-YA3MSWOX-B0XyshNq.js} +1 -1
  98. package/dist/viewer/{mr-IN-CRQNXWMA-DnzpVGTc.js → mr-IN-CRQNXWMA-BUdSFgBe.js} +1 -1
  99. package/dist/viewer/{my-MM-5M5IBNSE-Cm4pCcPj.js → my-MM-5M5IBNSE-hDaDBPRH.js} +1 -1
  100. package/dist/viewer/{nb-NO-T6EIAALU-BcuxE4U7.js → nb-NO-T6EIAALU-BKm89ZTQ.js} +1 -1
  101. package/dist/viewer/{nl-NL-IS3SIHDZ-CQexxASS.js → nl-NL-IS3SIHDZ-BqhTIFG4.js} +1 -1
  102. package/dist/viewer/{nn-NO-6E72VCQL-C6pPjApO.js → nn-NO-6E72VCQL-CIzmcY9M.js} +1 -1
  103. package/dist/viewer/{oc-FR-POXYY2M6-CovxAT6s.js → oc-FR-POXYY2M6-DN0amV9z.js} +1 -1
  104. package/dist/viewer/{pa-IN-N4M65BXN-CM-0Bi_k.js → pa-IN-N4M65BXN-BBDfy7a_.js} +1 -1
  105. package/dist/viewer/{pegDiagram-XKGWAZYB-DHtXRebi.js → pegDiagram-XKGWAZYB-CyYKmP8R.js} +1 -1
  106. package/dist/viewer/percentages-BXMCSKIN-D6mV4By3.js +1 -0
  107. package/dist/viewer/{pieDiagram-E7YTZNPT-CxPTGmMv.js → pieDiagram-E7YTZNPT-C6zpNDN7.js} +3 -3
  108. package/dist/viewer/{pl-PL-T2D74RX3-Ce8egCLJ.js → pl-PL-T2D74RX3-uxeYKI3E.js} +1 -1
  109. package/dist/viewer/{prod-DLkZlcd2.js → prod-CqlW_rj5.js} +9 -9
  110. package/dist/viewer/{pt-BR-5N22H2LF-CwjXtf87.js → pt-BR-5N22H2LF-C1Z9eZIX.js} +1 -1
  111. package/dist/viewer/{pt-PT-UZXXM6DQ-Q9ejxTg5.js → pt-PT-UZXXM6DQ-C0y_uQrS.js} +1 -1
  112. package/dist/viewer/{quadrantDiagram-AXDQQJYC-z7Tz0_0k.js → quadrantDiagram-AXDQQJYC-C_dg2m-b.js} +1 -1
  113. package/dist/viewer/{railroadDiagram-O6MQD6OU-DwyNHCPY.js → railroadDiagram-O6MQD6OU-CqSn-tUv.js} +1 -1
  114. package/dist/viewer/{requirementDiagram-BXWQKSXE-BTL35j9A.js → requirementDiagram-BXWQKSXE-BifGv7Yp.js} +1 -1
  115. package/dist/viewer/{ro-RO-JPDTUUEW-J9XQ6U80.js → ro-RO-JPDTUUEW-C3XSytg4.js} +1 -1
  116. package/dist/viewer/{ru-RU-B4JR7IUQ-BBA1AdyW.js → ru-RU-B4JR7IUQ-DQIBK3MO.js} +1 -1
  117. package/dist/viewer/{sequenceDiagram-WJ2MYXX4-DLJNXQ8o.js → sequenceDiagram-WJ2MYXX4-17ZZS3Xp.js} +1 -1
  118. package/dist/viewer/{si-LK-N5RQ5JYF-U__xLKqD.js → si-LK-N5RQ5JYF-CykyDGoa.js} +1 -1
  119. package/dist/viewer/{sk-SK-C5VTKIMK-DnbPvh29.js → sk-SK-C5VTKIMK-zaXAzBEq.js} +1 -1
  120. package/dist/viewer/{sl-SI-NN7IZMDC-C8Eoz0pl.js → sl-SI-NN7IZMDC-VL133hzg.js} +1 -1
  121. package/dist/viewer/stateDiagram-D77RDMKH-CDp1mhdn.js +1 -0
  122. package/dist/viewer/{stateDiagram-v2-MP3YSRHH-CXwzb1Xj.js → stateDiagram-v2-MP3YSRHH-CznJp7-4.js} +1 -1
  123. package/dist/viewer/subset-shared.chunk-BZZzz7hv.js +1 -0
  124. package/dist/viewer/{subset-worker.chunk-B0UjzhBX.js → subset-worker.chunk-CpBimtVU.js} +1 -1
  125. package/dist/viewer/{sv-SE-XGPEYMSR-B82M1B45.js → sv-SE-XGPEYMSR-DorRBqhq.js} +1 -1
  126. package/dist/viewer/{swimlanes-42K2YHIH-CVnTCkti.js → swimlanes-42K2YHIH-DArQjMFS.js} +1 -1
  127. package/dist/viewer/{swimlanesDiagram-VR7AAH4N-CAsLGxAi.js → swimlanesDiagram-VR7AAH4N-BsHu3KM8.js} +1 -1
  128. package/dist/viewer/{ta-IN-2NMHFXQM-CDtoSBaY.js → ta-IN-2NMHFXQM-nmSQGl6D.js} +1 -1
  129. package/dist/viewer/{th-TH-HPSO5L25-CiNISjF4.js → th-TH-HPSO5L25-DbUatfoe.js} +1 -1
  130. package/dist/viewer/{timeline-definition-24CTP7MA-DCb3aOrx.js → timeline-definition-24CTP7MA-Bzg9DS-G.js} +1 -1
  131. package/dist/viewer/{tr-TR-DEFEU3FU-CJmFpjiQ.js → tr-TR-DEFEU3FU-CzemawLb.js} +1 -1
  132. package/dist/viewer/{uk-UA-QMV73CPH-BMLxQJ4h.js → uk-UA-QMV73CPH-s2YqebSD.js} +1 -1
  133. package/dist/viewer/{useSandboxFrame-rZO0A3sZ.js → useSandboxFrame-DJc_WnFq.js} +8 -8
  134. package/dist/viewer/{vennDiagram-4TSXK5OY-CuIg1PcQ.js → vennDiagram-4TSXK5OY-Cn2PBzsD.js} +1 -1
  135. package/dist/viewer/{vi-VN-M7AON7JQ-BOwqnpoG.js → vi-VN-M7AON7JQ-CNV_0Z3D.js} +1 -1
  136. package/dist/viewer/{wardleyDiagram-VM6X3IG4-D7TjtyXK.js → wardleyDiagram-VM6X3IG4-WYlJVagH.js} +1 -1
  137. package/dist/viewer/{xychartDiagram-S5SC5T6Z-D6WkQ4f2.js → xychartDiagram-S5SC5T6Z-aiKJ08dD.js} +2 -2
  138. package/dist/viewer/{zh-CN-LNUGB5OW-BGvgy1n4.js → zh-CN-LNUGB5OW-xMrtVmHe.js} +1 -1
  139. package/dist/viewer/{zh-HK-E62DVLB3-D7vhuMPK.js → zh-HK-E62DVLB3-CFjWlXxH.js} +1 -1
  140. package/dist/viewer/{zh-TW-RAJ6MFWO-vpZcm2KN.js → zh-TW-RAJ6MFWO-fjFsXTim.js} +1 -1
  141. package/package.json +3 -1
  142. package/dist/viewer/CloudDocument-DaS9ceOa.js +0 -1
  143. package/dist/viewer/DocumentPage-BLL9x3pY.js +0 -1
  144. package/dist/viewer/chunk-PWAF6VOD-BugGgSc5.js +0 -1
  145. package/dist/viewer/dist-B0J-I7r2.js +0 -6
  146. package/dist/viewer/dist-BUHcTBPN.js +0 -1
  147. package/dist/viewer/dist-BkV7Dy_o.js +0 -1
  148. package/dist/viewer/dist-CGL9Y16x.js +0 -9
  149. package/dist/viewer/dist-DVVjoE8q.js +0 -1
  150. package/dist/viewer/dist-DmaYQh00.js +0 -1
  151. package/dist/viewer/flowDiagram-HODETNUW-CAHqUwH1.js +0 -1
  152. package/dist/viewer/ganttDiagram-EL5Y4UJY-CF5GNdln.js +0 -292
  153. package/dist/viewer/percentages-BXMCSKIN-dSCeY2Vz.js +0 -1
  154. package/dist/viewer/stateDiagram-D77RDMKH-BfdN30HE.js +0 -1
  155. package/dist/viewer/subset-shared.chunk-Cd4b8GJL.js +0 -1
package/dist/cli.cjs CHANGED
@@ -675,6 +675,24 @@ async function start(options, emit) {
675
675
  }
676
676
  }
677
677
 
678
+ // src/shared/cloud-error.ts
679
+ function cloudErrorDetails(value) {
680
+ if (!value || typeof value !== "object") return {};
681
+ const fields = value;
682
+ const details = {};
683
+ if (typeof fields.code === "string") details.code = fields.code;
684
+ if (fields.plan === "free" || fields.plan === "pro") details.plan = fields.plan;
685
+ if (typeof fields.upgradeUrl === "string") details.upgradeUrl = fields.upgradeUrl;
686
+ if (fields.limit && typeof fields.limit === "object") {
687
+ const limit = fields.limit;
688
+ if (typeof limit.kind === "string" && typeof limit.used === "number" && Number.isFinite(limit.used) && limit.used >= 0 && typeof limit.max === "number" && Number.isFinite(limit.max) && limit.max >= 0) {
689
+ details.limit = { kind: limit.kind, used: limit.used, max: limit.max };
690
+ if (typeof limit.requested === "number" && Number.isFinite(limit.requested) && limit.requested >= 0) details.limit.requested = limit.requested;
691
+ }
692
+ }
693
+ return details;
694
+ }
695
+
678
696
  // src/cli/publish.ts
679
697
  async function publish(options, emit) {
680
698
  if (options.action === "publish" || options.action === "unpublish") {
@@ -686,8 +704,9 @@ async function publish(options, emit) {
686
704
  const call = async (method, route, body) => {
687
705
  const { status, json } = await server.call(method, route, body);
688
706
  if (status === 401) throw new CliError("", { type: "login-required", url: json.loginUrl, message: "Open url to sign in to the Ryugi cloud, then run the same command again." }, 2);
689
- if (status === 402 && json.code === "plan_limit") throw new CliError("", { type: "plan-limit", message: json.error, upgradeUrl: json.upgradeUrl }, 2);
690
- if (status < 200 || status >= 300) throw new CliError(json.error || `HTTP ${status}`, json.reasons ? { reasons: json.reasons } : {});
707
+ const details = cloudErrorDetails(json);
708
+ if (status === 402 && details.code === "plan_limit") throw new CliError("", { type: "plan-limit", message: json.error, status, ...details }, 2);
709
+ if (status < 200 || status >= 300) throw new CliError(json.error || `HTTP ${status}`, { status, ...details, ...json.reasons ? { reasons: json.reasons } : {} });
691
710
  return json;
692
711
  };
693
712
  const { action, artifact, cloudId } = options;
@@ -928,7 +947,7 @@ async function main(argv) {
928
947
  }, emit);
929
948
  }
930
949
  if (command === "--version" || command === "-v") {
931
- console.log("1.29.0");
950
+ console.log("1.30.0");
932
951
  return 0;
933
952
  }
934
953
  if (command === "--help" || command === "-h") {
package/dist/server.cjs CHANGED
@@ -89796,6 +89796,24 @@ function callbackPage(result) {
89796
89796
  `;
89797
89797
  }
89798
89798
 
89799
+ // src/shared/cloud-error.ts
89800
+ function cloudErrorDetails(value) {
89801
+ if (!value || typeof value !== "object") return {};
89802
+ const fields = value;
89803
+ const details = {};
89804
+ if (typeof fields.code === "string") details.code = fields.code;
89805
+ if (fields.plan === "free" || fields.plan === "pro") details.plan = fields.plan;
89806
+ if (typeof fields.upgradeUrl === "string") details.upgradeUrl = fields.upgradeUrl;
89807
+ if (fields.limit && typeof fields.limit === "object") {
89808
+ const limit = fields.limit;
89809
+ if (typeof limit.kind === "string" && typeof limit.used === "number" && Number.isFinite(limit.used) && limit.used >= 0 && typeof limit.max === "number" && Number.isFinite(limit.max) && limit.max >= 0) {
89810
+ details.limit = { kind: limit.kind, used: limit.used, max: limit.max };
89811
+ if (typeof limit.requested === "number" && Number.isFinite(limit.requested) && limit.requested >= 0) details.limit.requested = limit.requested;
89812
+ }
89813
+ }
89814
+ return details;
89815
+ }
89816
+
89799
89817
  // src/server/pack.ts
89800
89818
  var import_node_fs16 = __toESM(require("node:fs"), 1);
89801
89819
  var import_node_path16 = __toESM(require("node:path"), 1);
@@ -89904,24 +89922,26 @@ var ROUTE = /^\/api\/cloud\/(status|login|logout|artifacts|publish|reserve|visib
89904
89922
  var SignedOut = class extends Error {
89905
89923
  };
89906
89924
  var CloudRefused = class extends Error {
89907
- constructor(status, message) {
89925
+ constructor(status, message, details = {}) {
89908
89926
  super(message);
89909
89927
  this.status = status;
89928
+ this.details = details;
89910
89929
  }
89911
89930
  status;
89931
+ details;
89912
89932
  };
89913
89933
  var CloudCopyGone = class extends Error {
89914
89934
  };
89915
89935
  var PlanLimited = class extends CloudRefused {
89916
- constructor(message, upgradeUrl) {
89917
- super(402, message);
89936
+ constructor(message, upgradeUrl, details) {
89937
+ super(402, message, details);
89918
89938
  this.upgradeUrl = upgradeUrl;
89919
89939
  }
89920
89940
  upgradeUrl;
89921
89941
  };
89922
89942
  var CreateRefused = class extends CloudRefused {
89923
89943
  constructor(detail) {
89924
- super(502, `cloud refused (403): ${detail}`);
89944
+ super(403, `cloud refused (403): ${detail}`);
89925
89945
  this.detail = detail;
89926
89946
  }
89927
89947
  detail;
@@ -89944,12 +89964,14 @@ async function refuse(res) {
89944
89964
  const text2 = await res.text().catch(() => "");
89945
89965
  let parsed = {};
89946
89966
  try {
89947
- parsed = JSON.parse(text2);
89967
+ const body = JSON.parse(text2);
89968
+ if (body && typeof body === "object") parsed = body;
89948
89969
  } catch {
89949
89970
  }
89971
+ const details = cloudErrorDetails(parsed);
89950
89972
  const message = typeof parsed.error === "string" ? parsed.error : text2 || res.statusText;
89951
- if (res.status === 402 && parsed.code === "plan_limit" && typeof parsed.upgradeUrl === "string") throw new PlanLimited(message, parsed.upgradeUrl);
89952
- throw new CloudRefused(502, `cloud refused (${res.status}): ${message}`);
89973
+ if (res.status === 402 && details.code === "plan_limit" && details.upgradeUrl) throw new PlanLimited(message, details.upgradeUrl, details);
89974
+ throw new CloudRefused(res.status, `cloud refused (${res.status}): ${message}`, details);
89953
89975
  }
89954
89976
  async function errorMessage(res) {
89955
89977
  const text2 = await res.text().catch(() => "");
@@ -90159,7 +90181,7 @@ function createCloudRoutes(options) {
90159
90181
  if (err instanceof PlanLimited) return { kind: "cannot-create", message: err.message, upgradeUrl: err.upgradeUrl };
90160
90182
  if (err instanceof CreateRefused) return { kind: "cannot-create", message: err.detail };
90161
90183
  if (err instanceof CloudRefused && err.status === 404) return { kind: "gone" };
90162
- if (err instanceof CloudRefused && err.status === 413) return { kind: "not-ready" };
90184
+ if (err instanceof CloudRefused && err.status === 413) return { kind: "cannot-create", message: err.message };
90163
90185
  return { kind: "failed", message: err.message };
90164
90186
  }
90165
90187
  };
@@ -90294,9 +90316,9 @@ function createCloudRoutes(options) {
90294
90316
  if (err instanceof SignedOut) {
90295
90317
  sendJson(res, 401, { error: "not signed in to the Ryugi cloud", loginUrl: loginUrl() });
90296
90318
  } else if (err instanceof PlanLimited) {
90297
- sendJson(res, 402, { error: err.message, code: "plan_limit", upgradeUrl: err.upgradeUrl });
90319
+ sendJson(res, 402, { error: err.message, ...err.details });
90298
90320
  } else if (err instanceof CloudRefused) {
90299
- sendJson(res, err.status, { error: err.message });
90321
+ sendJson(res, err.status, { error: err.message, ...err.details });
90300
90322
  } else {
90301
90323
  sendJson(res, 500, { error: err.message });
90302
90324
  }
@@ -91579,7 +91601,7 @@ function openReady(payload) {
91579
91601
  }
91580
91602
 
91581
91603
  // package.json
91582
- var version = "1.29.0";
91604
+ var version = "1.30.0";
91583
91605
 
91584
91606
  // src/server/main.ts
91585
91607
  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,x as i}from"./useSandboxFrame-DJc_WnFq.js";import{E as a,T as o,d as s,f as c,k as l,t as u,y as d}from"./DocumentLayout-CDZm1Mud.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:o(),send:()=>void 0}),[e,n]),x=r(e,{comments:h.threads.filter(e=>e.status===`open`).length,activity:null,retrying:!1,reason:null,history:!1,historyOpen:!1});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:[x?null:(0,p.jsxs)(`div`,{className:`x78zum5 x6s0dn4 x17d4w8g x1vqgdyp x4l9tsp x1bo0w0s xqfszdh xfifm61`,children:[(0,p.jsx)(`button`,{type:`button`,className:`doc-history-entry`,disabled:!0,title:`电脑离线,历史暂不可用`,children:`历史记录`}),(0,p.jsx)(`span`,{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)(u,{editor:v,threads:h.threads,children:(0,p.jsx)(d.Provider,{value:b,children:(0,p.jsx)(l,{variant:`article`,theme:_?`dark`:`light`,initialValue:t,extraNodes:s,rendererConfig:c,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-rZO0A3sZ.js";import{t as i}from"./index.js";import a from"./CloudDocument-DaS9ceOa.js";import{DocumentView as o,t as s}from"./DocumentPage-BLL9x3pY.js";var c=e(t(),1),l=`1.29.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-DJc_WnFq.js";import{t as i}from"./index.js";import a from"./CloudDocument-F3ikpU1A.js";import{DocumentView as o,t as s}from"./DocumentPage-DJWzglCT.js";var c=e(t(),1),l=`1.30.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};