ryugi-artifacts 1.31.4 → 1.31.6
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 +79 -29
- package/dist/server.cjs +287 -247
- package/dist/viewer/CloudDocument--a8-nXso.js +1 -0
- package/dist/viewer/CloudLiveDocument-Dn7hsd9J.js +1 -0
- package/dist/viewer/{DocumentLayout-CoaWyJ8o.js → DocumentLayout-CyTmvIv_.js} +12 -12
- package/dist/viewer/DocumentPage-BjkBiEX-.css +1 -0
- package/dist/viewer/DocumentPage-CNXMmV9l.js +1 -0
- package/dist/viewer/{useSandboxFrame-DiOdLOg3.js → RailSwitch-D4FON4Vr.js} +8 -8
- package/dist/viewer/{abnfDiagram-VCTEODGH-V-HUdHOR.js → abnfDiagram-VCTEODGH-BU-Q5nRu.js} +1 -1
- package/dist/viewer/{ar-SA-G6X2FPQ2-DQ0iM0EN.js → ar-SA-G6X2FPQ2-Bym-z3Gy.js} +1 -1
- package/dist/viewer/{architectureDiagram-5GKGNRK7-BR7YqPnS.js → architectureDiagram-5GKGNRK7-hBXFocSt.js} +1 -1
- package/dist/viewer/{az-AZ-76LH7QW2-BZhhIHTR.js → az-AZ-76LH7QW2-DptPViJZ.js} +1 -1
- package/dist/viewer/{bg-BG-XCXSNQG7-CQon9Ha7.js → bg-BG-XCXSNQG7-BCAH5UjV.js} +1 -1
- package/dist/viewer/{blockDiagram-I7D4REHJ-2rr9DBaj.js → blockDiagram-I7D4REHJ-CQMZg8Nz.js} +1 -1
- package/dist/viewer/{bn-BD-2XOGV67Q-oMzz5AyV.js → bn-BD-2XOGV67Q-CQ103rTG.js} +1 -1
- package/dist/viewer/{c4Diagram-7LVT6UL2-BLeiPlMV.js → c4Diagram-7LVT6UL2-Wmb5uWym.js} +1 -1
- package/dist/viewer/{ca-ES-6MX7JW3Y-Cna6kdsT.js → ca-ES-6MX7JW3Y-QZjpbZoN.js} +1 -1
- package/dist/viewer/{chunk-4HAMMTFA-CjyXxW0j.js → chunk-4HAMMTFA-DApjFb3D.js} +1 -1
- package/dist/viewer/{chunk-EIO257PC-BLuvNuM3.js → chunk-EIO257PC-CWVuL_0r.js} +1 -1
- package/dist/viewer/{chunk-GMAD6QVW-B73OQhVp.js → chunk-GMAD6QVW-CsJibQuL.js} +1 -1
- package/dist/viewer/{chunk-GVQU2GXP-DKQ5qiuo.js → chunk-GVQU2GXP-DYTi7tYA.js} +1 -1
- package/dist/viewer/{chunk-IMKFNOWR-Cezt1GsL.js → chunk-IMKFNOWR-CWeDJlP4.js} +1 -1
- package/dist/viewer/{chunk-L3NEJ4N5-C-84XODC.js → chunk-L3NEJ4N5-TdTMGSnz.js} +1 -1
- package/dist/viewer/{chunk-OSK3NFVY-BAIU7jCA.js → chunk-OSK3NFVY-DmS4WZvt.js} +1 -1
- package/dist/viewer/{chunk-PWAF6VOD-n-gQe1QG.js → chunk-PWAF6VOD-CgqqcZ7Z.js} +1 -1
- package/dist/viewer/{chunk-SHT3W25Y-GBpOdXrL.js → chunk-SHT3W25Y-CO2CRBJI.js} +1 -1
- package/dist/viewer/{chunk-SVP7TREG-sSvXNpK2.js → chunk-SVP7TREG-CdURcuTQ.js} +1 -1
- package/dist/viewer/{chunk-TICWLB2K-CsBBxqeq.js → chunk-TICWLB2K--5oOkN7m.js} +1 -1
- package/dist/viewer/{classDiagram-ZZMXUADV-x8Bacm1h.js → classDiagram-ZZMXUADV-DeIP4NkP.js} +1 -1
- package/dist/viewer/{classDiagram-v2-VYDZK3BY-x8Bacm1h.js → classDiagram-v2-VYDZK3BY-DeIP4NkP.js} +1 -1
- package/dist/viewer/{cs-CZ-2BRQDIVT-DTbO_wNP.js → cs-CZ-2BRQDIVT-N2YztnjI.js} +1 -1
- package/dist/viewer/{cynefinDiagram-5FMLGOSQ-BAxRDxAh.js → cynefinDiagram-5FMLGOSQ-BqdKqwqw.js} +1 -1
- package/dist/viewer/{da-DK-5WZEPLOC-gh43GvJ3.js → da-DK-5WZEPLOC-CClTezxe.js} +1 -1
- package/dist/viewer/{dagre-GXQ25YYZ-B5Z9Ox26.js → dagre-GXQ25YYZ-DhmSGUk2.js} +1 -1
- package/dist/viewer/{de-DE-XR44H4JA-Dtwy2_La.js → de-DE-XR44H4JA-CLPa1jFU.js} +1 -1
- package/dist/viewer/{diagram-S7CK7UJ4-DF5PCIpV.js → diagram-S7CK7UJ4-rnc6tcUb.js} +1 -1
- package/dist/viewer/{diagram-UQ7AKVKN-Ce5zDPFC.js → diagram-UQ7AKVKN-CZG1zSha.js} +1 -1
- package/dist/viewer/{diagram-VX7I27RA-RUhzpCJg.js → diagram-VX7I27RA-esJGj2aD.js} +1 -1
- package/dist/viewer/{diagram-Z3DM3KII-C-TBa6Fl.js → diagram-Z3DM3KII-rMa1oT-N.js} +1 -1
- package/dist/viewer/{dist-C9jaXMxM.js → dist-0R8oZhgF.js} +1 -1
- package/dist/viewer/{dist-pIluIDrQ.js → dist-1wqDUqVM.js} +1 -1
- package/dist/viewer/{dist-D-k2wLgF.js → dist-B13oEVXf.js} +1 -1
- package/dist/viewer/{dist-7PnLKlq_.js → dist-B40UUbgw.js} +1 -1
- package/dist/viewer/{dist-Cyy67cae.js → dist-BMEAkBHE.js} +1 -1
- package/dist/viewer/{dist-CbJw7Hmx.js → dist-BQp88HM1.js} +1 -1
- package/dist/viewer/{dist-DlPv2tBz.js → dist-Bew_q9_H.js} +1 -1
- package/dist/viewer/{dist-CQCY9lrr.js → dist-C55eUDGb.js} +1 -1
- package/dist/viewer/{dist-DDAAPJmv.js → dist-C6czRr4c.js} +1 -1
- package/dist/viewer/{dist-DpWG9pfC.js → dist-CC9VKgjG.js} +4 -4
- package/dist/viewer/{dist-By5kxfOe.js → dist-CJ7QItR6.js} +1 -1
- package/dist/viewer/{dist-B84AnNmg.js → dist-CY2TkmE9.js} +1 -1
- package/dist/viewer/{dist-DqoaTJ1R.js → dist-CvCVEZHM.js} +1 -1
- package/dist/viewer/{dist-DN2KzIr5.js → dist-D-6apRFO.js} +1 -1
- package/dist/viewer/{dist-BjTvkeHe.js → dist-D6BaZXlD.js} +1 -1
- package/dist/viewer/{dist-dQ0_FCjz.js → dist-D78xEVNA.js} +1 -1
- package/dist/viewer/{dist-M2XMA2Pz.js → dist-DHALLG2c.js} +1 -1
- package/dist/viewer/{dist-CwTOAwWG.js → dist-DabEZ184.js} +1 -1
- package/dist/viewer/{dist-B7NVPGeP.js → dist-Dd3TTld7.js} +1 -1
- package/dist/viewer/{dist-dxkbB17f.js → dist-Ded9oFKo.js} +1 -1
- package/dist/viewer/{dist-AkIqU1Dz.js → dist-Wtk9y4QC.js} +1 -1
- package/dist/viewer/{dist-BWfLj92W.js → dist-cf3dK6JU.js} +1 -1
- package/dist/viewer/{dist-D19U_UOY.js → dist-txabnobd.js} +1 -1
- package/dist/viewer/{dist-E6DtvB3t.js → dist-vfTnUsvv.js} +1 -1
- package/dist/viewer/{ebnfDiagram-PWID7BFC-W6W8wGx4.js → ebnfDiagram-PWID7BFC-9giBRT9V.js} +1 -1
- package/dist/viewer/{el-GR-BZB4AONW-Dv4Rs_Df.js → el-GR-BZB4AONW-DiytE3HK.js} +1 -1
- package/dist/viewer/{en-B4ZKOASM-BHmDnV1n.js → en-B4ZKOASM-BnlX_3m1.js} +1 -1
- package/dist/viewer/{erDiagram-RLTQ6QDP-k_44u2lM.js → erDiagram-RLTQ6QDP-BFc3pr17.js} +1 -1
- package/dist/viewer/{es-ES-U4NZUMDT-D-vQ062d.js → es-ES-U4NZUMDT-BLZs9ryR.js} +1 -1
- package/dist/viewer/{eu-ES-A7QVB2H4-DYJjnf7k.js → eu-ES-A7QVB2H4-Do47CF4f.js} +1 -1
- package/dist/viewer/{fa-IR-HGAKTJCU-CeG9eVdo.js → fa-IR-HGAKTJCU-BZbWTobm.js} +1 -1
- package/dist/viewer/{fi-FI-Z5N7JZ37-BYhHYWe_.js → fi-FI-Z5N7JZ37-Bj1DZkcY.js} +1 -1
- package/dist/viewer/flowDiagram-HODETNUW-DJKmbPSM.js +1 -0
- package/dist/viewer/{fr-FR-RHASNOE6-HTwRpYPq.js → fr-FR-RHASNOE6-BwL6w642.js} +1 -1
- package/dist/viewer/{ganttDiagram-EL5Y4UJY-BaG9O0Mo.js → ganttDiagram-EL5Y4UJY-tkthcHqs.js} +1 -1
- package/dist/viewer/{gl-ES-HMX3MZ6V--twqMfjm.js → gl-ES-HMX3MZ6V-ConDt0TV.js} +1 -1
- package/dist/viewer/{he-IL-6SHJWFNN-DjEE_S2c.js → he-IL-6SHJWFNN-BlAXOFv0.js} +1 -1
- package/dist/viewer/{hi-IN-IWLTKZ5I-P609s9r1.js → hi-IN-IWLTKZ5I-D3eaYVhg.js} +1 -1
- package/dist/viewer/{hu-HU-A5ZG7DT2-DnDDq-09.js → hu-HU-A5ZG7DT2-DZRZmO8U.js} +1 -1
- package/dist/viewer/{id-ID-SAP4L64H-wXuUsbid.js → id-ID-SAP4L64H-CpfVDf1D.js} +1 -1
- package/dist/viewer/{image-GAAHSSAO-Z7fqDf9l.js → image-GAAHSSAO-CTiY9gHI.js} +1 -1
- package/dist/viewer/index.html +1 -1
- package/dist/viewer/index.js +9 -9
- package/dist/viewer/index2.css +16 -4
- package/dist/viewer/{infoDiagram-27XIBGKW-Dc7UJxEe.js → infoDiagram-27XIBGKW-nrTZd6ja.js} +1 -1
- package/dist/viewer/{ishikawaDiagram-5VMMS53U-HVSpaNcP.js → ishikawaDiagram-5VMMS53U-Qt3RnGXG.js} +1 -1
- package/dist/viewer/{it-IT-JPQ66NNP-Dz_ldq9W.js → it-IT-JPQ66NNP-D-9al1qd.js} +1 -1
- package/dist/viewer/{ja-JP-DBVTYXUO-D_Y3Qx6n.js → ja-JP-DBVTYXUO--8rpiAjQ.js} +1 -1
- package/dist/viewer/{journeyDiagram-3NMN7TZE-CZA_wgT3.js → journeyDiagram-3NMN7TZE-gleUhig1.js} +1 -1
- package/dist/viewer/{kaa-6HZHGXH3-Bg28G59N.js → kaa-6HZHGXH3-BISHy72m.js} +1 -1
- package/dist/viewer/{kab-KAB-ZGHBKWFO-CjKTOitL.js → kab-KAB-ZGHBKWFO-rqflrdnE.js} +1 -1
- package/dist/viewer/{kanban-definition-UXKFOSKX-DOrdOxZf.js → kanban-definition-UXKFOSKX-DHYX9Sne.js} +1 -1
- package/dist/viewer/{kk-KZ-P5N5QNE5-DDt5JOBa.js → kk-KZ-P5N5QNE5-CxsofODM.js} +1 -1
- package/dist/viewer/{km-KH-HSX4SM5Z-1GGv3vFQ.js → km-KH-HSX4SM5Z-CY7KPsg8.js} +1 -1
- package/dist/viewer/{ko-KR-MTYHY66A-DBC6a0Fk.js → ko-KR-MTYHY66A-Mo8X-aCW.js} +1 -1
- package/dist/viewer/{ku-TR-6OUDTVRD-D5PzWCFN.js → ku-TR-6OUDTVRD-XdGOo6AM.js} +1 -1
- package/dist/viewer/{lt-LT-XHIRWOB4-BMt-7WWM.js → lt-LT-XHIRWOB4-BTJg8sWT.js} +1 -1
- package/dist/viewer/{lv-LV-5QDEKY6T-Dzce_YpG.js → lv-LV-5QDEKY6T-BKlFEfuS.js} +1 -1
- package/dist/viewer/{mindmap-definition-YA3MSWOX-Bd2YON6d.js → mindmap-definition-YA3MSWOX-BmwdHmpO.js} +1 -1
- package/dist/viewer/{mr-IN-CRQNXWMA-UoxyeJGh.js → mr-IN-CRQNXWMA-D0AQrCA2.js} +1 -1
- package/dist/viewer/{my-MM-5M5IBNSE-DuhFAvGA.js → my-MM-5M5IBNSE-NjpzYQsO.js} +1 -1
- package/dist/viewer/{nb-NO-T6EIAALU-D2HesCV7.js → nb-NO-T6EIAALU-BzWm7B-O.js} +1 -1
- package/dist/viewer/{nl-NL-IS3SIHDZ-D-7LDwui.js → nl-NL-IS3SIHDZ-T8_DslA8.js} +1 -1
- package/dist/viewer/{nn-NO-6E72VCQL-CSp296dk.js → nn-NO-6E72VCQL-BTszDvP-.js} +1 -1
- package/dist/viewer/{oc-FR-POXYY2M6-07HaLB9l.js → oc-FR-POXYY2M6-hpKPsf_6.js} +1 -1
- package/dist/viewer/{pa-IN-N4M65BXN-CwctqD6c.js → pa-IN-N4M65BXN-DFhI5C_f.js} +1 -1
- package/dist/viewer/{pegDiagram-XKGWAZYB-CRD0uqB1.js → pegDiagram-XKGWAZYB-DqketQBQ.js} +1 -1
- package/dist/viewer/percentages-BXMCSKIN-BE-dJ5Ph.js +1 -0
- package/dist/viewer/{pieDiagram-E7YTZNPT-Cw74ebj0.js → pieDiagram-E7YTZNPT-CswNjFwQ.js} +1 -1
- package/dist/viewer/{pl-PL-T2D74RX3-BxJKeX_1.js → pl-PL-T2D74RX3-D558twE2.js} +1 -1
- package/dist/viewer/{prod-C-6zSFxv.js → prod-QHcKCKFc.js} +8 -8
- package/dist/viewer/{pt-BR-5N22H2LF-C4_Reldi.js → pt-BR-5N22H2LF-DSx6pGlq.js} +1 -1
- package/dist/viewer/{pt-PT-UZXXM6DQ-CQ3gFzQH.js → pt-PT-UZXXM6DQ-DmOAYnAV.js} +1 -1
- package/dist/viewer/{quadrantDiagram-AXDQQJYC-DwieeaHN.js → quadrantDiagram-AXDQQJYC-Du4WujoN.js} +1 -1
- package/dist/viewer/{railroadDiagram-O6MQD6OU-DuQ49o4K.js → railroadDiagram-O6MQD6OU-DtPojk0V.js} +1 -1
- package/dist/viewer/{requirementDiagram-BXWQKSXE-Dlq9-j8c.js → requirementDiagram-BXWQKSXE-DPfOYGEZ.js} +1 -1
- package/dist/viewer/{ro-RO-JPDTUUEW-BVKmnDvM.js → ro-RO-JPDTUUEW-CqQXLoRW.js} +1 -1
- package/dist/viewer/{ru-RU-B4JR7IUQ-CCxHHLrA.js → ru-RU-B4JR7IUQ-J649-Rol.js} +1 -1
- package/dist/viewer/{sequenceDiagram-WJ2MYXX4-DBhcNj5A.js → sequenceDiagram-WJ2MYXX4-BCzPC46m.js} +1 -1
- package/dist/viewer/{si-LK-N5RQ5JYF-DkOlkhdA.js → si-LK-N5RQ5JYF-BtnJyPI4.js} +1 -1
- package/dist/viewer/{sk-SK-C5VTKIMK-Bi4Uprlv.js → sk-SK-C5VTKIMK-Dd4ukPQm.js} +1 -1
- package/dist/viewer/{sl-SI-NN7IZMDC-BGuRxttK.js → sl-SI-NN7IZMDC-CfLEfkKK.js} +1 -1
- package/dist/viewer/{stateDiagram-D77RDMKH-DXKpxIuA.js → stateDiagram-D77RDMKH-rJOQf35n.js} +1 -1
- package/dist/viewer/{stateDiagram-v2-MP3YSRHH-CBJWpsr9.js → stateDiagram-v2-MP3YSRHH-2Xy4p5Ky.js} +1 -1
- package/dist/viewer/subset-shared.chunk-D9kegQAo.js +1 -0
- package/dist/viewer/{subset-worker.chunk-Cz-rQHpj.js → subset-worker.chunk-VHwqqTOg.js} +1 -1
- package/dist/viewer/{sv-SE-XGPEYMSR-Del5jLMP.js → sv-SE-XGPEYMSR-6aSxoBco.js} +1 -1
- package/dist/viewer/{swimlanes-42K2YHIH-tHu8NwKc.js → swimlanes-42K2YHIH-v4Asr9Gq.js} +1 -1
- package/dist/viewer/{swimlanesDiagram-VR7AAH4N-QGW4zvRm.js → swimlanesDiagram-VR7AAH4N-ELa654QB.js} +1 -1
- package/dist/viewer/{ta-IN-2NMHFXQM-BPvWkb6U.js → ta-IN-2NMHFXQM-CFXGYN1q.js} +1 -1
- package/dist/viewer/{th-TH-HPSO5L25-CLDQIXWf.js → th-TH-HPSO5L25-DE3snqCF.js} +1 -1
- package/dist/viewer/{timeline-definition-24CTP7MA-Deed7SMe.js → timeline-definition-24CTP7MA-BAcffnfw.js} +1 -1
- package/dist/viewer/{tr-TR-DEFEU3FU-CKhIwM-a.js → tr-TR-DEFEU3FU-B4xo5NFF.js} +1 -1
- package/dist/viewer/{uk-UA-QMV73CPH-ArQZWzCO.js → uk-UA-QMV73CPH-6G-hcLK9.js} +1 -1
- package/dist/viewer/{vennDiagram-4TSXK5OY-DTsTOAD0.js → vennDiagram-4TSXK5OY-X6DsLJAg.js} +1 -1
- package/dist/viewer/{vi-VN-M7AON7JQ-BlPxrRvf.js → vi-VN-M7AON7JQ-1UrXvj_c.js} +1 -1
- package/dist/viewer/{wardleyDiagram-VM6X3IG4-fftHN4D7.js → wardleyDiagram-VM6X3IG4-C6d-EQap.js} +1 -1
- package/dist/viewer/{xychartDiagram-S5SC5T6Z-DVVUiHF6.js → xychartDiagram-S5SC5T6Z-CsXmXjQH.js} +1 -1
- package/dist/viewer/{zh-CN-LNUGB5OW-DpNT6DDj.js → zh-CN-LNUGB5OW-t5_YfMiv.js} +1 -1
- package/dist/viewer/{zh-HK-E62DVLB3-BlLwOVyy.js → zh-HK-E62DVLB3-DJLNgDSD.js} +1 -1
- package/dist/viewer/{zh-TW-RAJ6MFWO-CV_K9CZh.js → zh-TW-RAJ6MFWO-CxK5BbTi.js} +1 -1
- package/package.json +1 -1
- package/dist/viewer/CloudDocument-DI8rTqBL.js +0 -1
- package/dist/viewer/CloudLiveDocument-DAfaRpMU.js +0 -1
- package/dist/viewer/DocumentPage-B5t36jZf.js +0 -1
- package/dist/viewer/DocumentPage-RHTp39ah.css +0 -1
- package/dist/viewer/flowDiagram-HODETNUW-C3rwBhGN.js +0 -1
- package/dist/viewer/percentages-BXMCSKIN-9jDDhvw6.js +0 -1
- package/dist/viewer/subset-shared.chunk-ek8LNSV8.js +0 -1
package/dist/cli.cjs
CHANGED
|
@@ -384,6 +384,9 @@ var isVisibility = (value) => value === "private" || value === "public";
|
|
|
384
384
|
var import_node_fs4 = __toESM(require("node:fs"), 1);
|
|
385
385
|
var import_node_path2 = __toESM(require("node:path"), 1);
|
|
386
386
|
|
|
387
|
+
// src/shared/types.ts
|
|
388
|
+
var ARTIFACT_TYPES = ["artboard", "document", "html"];
|
|
389
|
+
|
|
387
390
|
// src/shared/validate.ts
|
|
388
391
|
var BOARD_NUMBERS = ["x", "y", "w", "h"];
|
|
389
392
|
var BOARD_REQUIRED = ["file", "page", ...BOARD_NUMBERS];
|
|
@@ -515,17 +518,64 @@ function config(options, emit) {
|
|
|
515
518
|
|
|
516
519
|
// src/cli/start.ts
|
|
517
520
|
var import_node_child_process2 = require("node:child_process");
|
|
521
|
+
var import_node_crypto2 = __toESM(require("node:crypto"), 1);
|
|
522
|
+
var import_node_fs8 = __toESM(require("node:fs"), 1);
|
|
523
|
+
var import_node_path8 = __toESM(require("node:path"), 1);
|
|
524
|
+
var import_node_readline = __toESM(require("node:readline"), 1);
|
|
525
|
+
|
|
526
|
+
// src/server/artifact-address.ts
|
|
518
527
|
var import_node_crypto = __toESM(require("node:crypto"), 1);
|
|
519
528
|
var import_node_fs7 = __toESM(require("node:fs"), 1);
|
|
520
529
|
var import_node_path7 = __toESM(require("node:path"), 1);
|
|
521
|
-
|
|
530
|
+
|
|
531
|
+
// src/shared/ids.ts
|
|
532
|
+
var ID_PATTERN = /^[a-z0-9][a-z0-9-]*$/;
|
|
533
|
+
var isArtifactId = (id) => ID_PATTERN.test(id);
|
|
534
|
+
var isArtifactType = (type) => ARTIFACT_TYPES.includes(type);
|
|
535
|
+
|
|
536
|
+
// src/server/artifacts.ts
|
|
537
|
+
function artifactKeyOf(relative) {
|
|
538
|
+
const [type, id] = relative.split("/");
|
|
539
|
+
if (!type || !id || !isArtifactType(type) || !isArtifactId(id)) return null;
|
|
540
|
+
return { type, id };
|
|
541
|
+
}
|
|
542
|
+
|
|
543
|
+
// src/server/artifact-address.ts
|
|
544
|
+
function artifactId(dir) {
|
|
545
|
+
const file = import_node_path7.default.join(dir, ".artifact-id");
|
|
546
|
+
let id;
|
|
547
|
+
try {
|
|
548
|
+
id = import_node_fs7.default.readFileSync(file, "utf8").trim();
|
|
549
|
+
} catch (err) {
|
|
550
|
+
if (err.code !== "ENOENT") throw err;
|
|
551
|
+
id = import_node_crypto.default.randomBytes(16).toString("hex");
|
|
552
|
+
try {
|
|
553
|
+
import_node_fs7.default.writeFileSync(file, `${id}
|
|
554
|
+
`, { flag: "wx" });
|
|
555
|
+
} catch (writeError) {
|
|
556
|
+
if (writeError.code !== "EEXIST") throw writeError;
|
|
557
|
+
return artifactId(dir);
|
|
558
|
+
}
|
|
559
|
+
}
|
|
560
|
+
if (!/^[a-f0-9]{32}$/.test(id)) throw new Error(`Invalid artifact ID in ${file}`);
|
|
561
|
+
return id;
|
|
562
|
+
}
|
|
563
|
+
function artifactPath(root, type, slug) {
|
|
564
|
+
if (!isArtifactType(type) || !isArtifactId(slug)) throw new Error("Invalid artifact locator");
|
|
565
|
+
const dir = import_node_path7.default.join(root, type, slug);
|
|
566
|
+
import_node_fs7.default.mkdirSync(dir, { recursive: true });
|
|
567
|
+
return `/${type}/${artifactId(dir)}`;
|
|
568
|
+
}
|
|
569
|
+
|
|
570
|
+
// src/cli/start.ts
|
|
522
571
|
var windowsLike = () => process.platform === "win32";
|
|
523
572
|
function withLink(info, artifact, reused) {
|
|
524
573
|
const out = { ...info };
|
|
525
574
|
if (reused) out.reused = true;
|
|
526
575
|
if (artifact && typeof out.url === "string") {
|
|
527
576
|
const url = new URL(out.url);
|
|
528
|
-
|
|
577
|
+
const ref = artifactKeyOf(artifact);
|
|
578
|
+
out.link = `${url.origin}${artifactPath(String(out.root), ref.type, ref.id)}?key=${url.searchParams.get("key")}`;
|
|
529
579
|
}
|
|
530
580
|
return out;
|
|
531
581
|
}
|
|
@@ -551,13 +601,13 @@ async function withCloudLink(out, artifact) {
|
|
|
551
601
|
async function acquireLock(lock) {
|
|
552
602
|
for (let attempt = 0; attempt < 150; attempt++) {
|
|
553
603
|
try {
|
|
554
|
-
|
|
604
|
+
import_node_fs8.default.mkdirSync(lock);
|
|
555
605
|
return true;
|
|
556
606
|
} catch {
|
|
557
607
|
}
|
|
558
608
|
try {
|
|
559
|
-
if (Date.now() -
|
|
560
|
-
|
|
609
|
+
if (Date.now() - import_node_fs8.default.statSync(lock).mtimeMs > 6e4) {
|
|
610
|
+
import_node_fs8.default.rmdirSync(lock);
|
|
561
611
|
continue;
|
|
562
612
|
}
|
|
563
613
|
} catch {
|
|
@@ -587,13 +637,13 @@ function registerOwner(paths) {
|
|
|
587
637
|
const owner = ownerPid();
|
|
588
638
|
if (owner) owners.add(owner);
|
|
589
639
|
const tmp = `${paths.owners}.${process.pid}`;
|
|
590
|
-
|
|
640
|
+
import_node_fs8.default.writeFileSync(tmp, [...owners].sort((a, b) => a - b).map((pid) => `${pid}
|
|
591
641
|
`).join(""));
|
|
592
|
-
|
|
642
|
+
import_node_fs8.default.renameSync(tmp, paths.owners);
|
|
593
643
|
}
|
|
594
644
|
function recordAgent(paths) {
|
|
595
645
|
const markers = Object.fromEntries(AGENT_MARKERS.flatMap((key) => process.env[key] ? [[key, process.env[key]]] : []));
|
|
596
|
-
if (Object.keys(markers).length)
|
|
646
|
+
if (Object.keys(markers).length) import_node_fs8.default.writeFileSync(paths.agent, `${JSON.stringify(markers)}
|
|
597
647
|
`);
|
|
598
648
|
}
|
|
599
649
|
async function replace(pid, paths) {
|
|
@@ -625,9 +675,9 @@ async function start(options, emit) {
|
|
|
625
675
|
const foreground = options.foreground || !options.background && (!!process.env.CODEX_CI || windowsLike());
|
|
626
676
|
process.umask(63);
|
|
627
677
|
const paths = projectPaths(options.projectDir);
|
|
628
|
-
|
|
629
|
-
if (!
|
|
630
|
-
const server =
|
|
678
|
+
import_node_fs8.default.mkdirSync(paths.state, { recursive: true });
|
|
679
|
+
if (!import_node_fs8.default.existsSync(import_node_path8.default.join(paths.state, ".gitignore"))) import_node_fs8.default.writeFileSync(import_node_path8.default.join(paths.state, ".gitignore"), "*\n");
|
|
680
|
+
const server = import_node_path8.default.join(__dirname, "server.cjs");
|
|
631
681
|
const version = process.env.RYUGI_ARTIFACTS_VERSION ?? "";
|
|
632
682
|
if (!await acquireLock(paths.lock)) throw new CliError("Another start for this project is still starting; retry in a moment");
|
|
633
683
|
let locked = true;
|
|
@@ -635,7 +685,7 @@ async function start(options, emit) {
|
|
|
635
685
|
if (!locked) return;
|
|
636
686
|
locked = false;
|
|
637
687
|
try {
|
|
638
|
-
|
|
688
|
+
import_node_fs8.default.rmdirSync(paths.lock);
|
|
639
689
|
} catch {
|
|
640
690
|
}
|
|
641
691
|
};
|
|
@@ -653,17 +703,17 @@ async function start(options, emit) {
|
|
|
653
703
|
}
|
|
654
704
|
registerOwner(paths);
|
|
655
705
|
recordAgent(paths);
|
|
656
|
-
|
|
657
|
-
const id =
|
|
658
|
-
|
|
706
|
+
import_node_fs8.default.rmSync(paths.info, { force: true });
|
|
707
|
+
const id = import_node_crypto2.default.randomBytes(24).toString("hex");
|
|
708
|
+
import_node_fs8.default.writeFileSync(paths.serverId, `${id}
|
|
659
709
|
`);
|
|
660
|
-
|
|
710
|
+
import_node_fs8.default.writeFileSync(paths.version, `${version}
|
|
661
711
|
`);
|
|
662
712
|
const env = serverEnv(paths, options);
|
|
663
713
|
const args = [server, `--artifacts-server-id=${id}`];
|
|
664
714
|
if (foreground) {
|
|
665
715
|
const child2 = (0, import_node_child_process2.spawn)(process.execPath, args, { env, stdio: ["ignore", "pipe", "inherit"] });
|
|
666
|
-
|
|
716
|
+
import_node_fs8.default.writeFileSync(paths.pid, `${child2.pid}
|
|
667
717
|
`);
|
|
668
718
|
for (const signal of ["SIGINT", "SIGTERM"]) process.on(signal, () => child2.kill("SIGTERM"));
|
|
669
719
|
import_node_readline.default.createInterface({ input: child2.stdout }).on("line", (line) => {
|
|
@@ -679,15 +729,15 @@ async function start(options, emit) {
|
|
|
679
729
|
else void withCloudLink(withLink(value, options.artifact, false), options.artifact).then(emit);
|
|
680
730
|
});
|
|
681
731
|
const exited = new Promise((resolve) => child2.on("close", (code) => resolve(code ?? 1)));
|
|
682
|
-
for (let waited = 0; waited < 5e3 && !
|
|
732
|
+
for (let waited = 0; waited < 5e3 && !import_node_fs8.default.existsSync(paths.info); waited += 100) await sleep(100);
|
|
683
733
|
unlock();
|
|
684
734
|
return await exited;
|
|
685
735
|
}
|
|
686
|
-
const log =
|
|
736
|
+
const log = import_node_fs8.default.openSync(paths.log, "w");
|
|
687
737
|
const child = (0, import_node_child_process2.spawn)(process.execPath, args, { env, detached: true, stdio: ["ignore", log, log] });
|
|
688
|
-
|
|
738
|
+
import_node_fs8.default.closeSync(log);
|
|
689
739
|
child.unref();
|
|
690
|
-
|
|
740
|
+
import_node_fs8.default.writeFileSync(paths.pid, `${child.pid}
|
|
691
741
|
`);
|
|
692
742
|
for (let waited = 0; waited < 5e3; waited += 100) {
|
|
693
743
|
const lines = (readText(paths.log) ?? "").split("\n");
|
|
@@ -767,13 +817,13 @@ async function publish(options, emit) {
|
|
|
767
817
|
}
|
|
768
818
|
|
|
769
819
|
// src/cli/stop.ts
|
|
770
|
-
var
|
|
820
|
+
var import_node_fs9 = __toESM(require("node:fs"), 1);
|
|
771
821
|
async function stop(projectDir, emit) {
|
|
772
822
|
const paths = projectPaths(projectDir);
|
|
773
823
|
const markStopped = (reason) => {
|
|
774
|
-
|
|
775
|
-
|
|
776
|
-
|
|
824
|
+
import_node_fs9.default.rmSync(paths.info, { force: true });
|
|
825
|
+
import_node_fs9.default.mkdirSync(paths.state, { recursive: true });
|
|
826
|
+
import_node_fs9.default.writeFileSync(paths.stopped, `${JSON.stringify({ reason, timestamp: Math.floor(Date.now() / 1e3) })}
|
|
777
827
|
`);
|
|
778
828
|
};
|
|
779
829
|
const pid = Number(readText(paths.pid));
|
|
@@ -783,8 +833,8 @@ async function stop(projectDir, emit) {
|
|
|
783
833
|
}
|
|
784
834
|
const id = readText(paths.serverId) ?? "";
|
|
785
835
|
if (!Number.isInteger(pid) || pid <= 0 || !/^[A-Za-z0-9_-]{32,64}$/.test(id) || !hasServerId(pid, id)) {
|
|
786
|
-
|
|
787
|
-
|
|
836
|
+
import_node_fs9.default.rmSync(paths.pid, { force: true });
|
|
837
|
+
import_node_fs9.default.rmSync(paths.serverId, { force: true });
|
|
788
838
|
markStopped("stale_pid");
|
|
789
839
|
emit({ status: "stale_pid" });
|
|
790
840
|
return 0;
|
|
@@ -804,7 +854,7 @@ async function stop(projectDir, emit) {
|
|
|
804
854
|
emit({ status: "failed", error: "process still running" });
|
|
805
855
|
return 1;
|
|
806
856
|
}
|
|
807
|
-
for (const file of [paths.pid, paths.serverId, paths.log, paths.owners])
|
|
857
|
+
for (const file of [paths.pid, paths.serverId, paths.log, paths.owners]) import_node_fs9.default.rmSync(file, { force: true });
|
|
808
858
|
markStopped("stop");
|
|
809
859
|
emit({ status: "stopped" });
|
|
810
860
|
return 0;
|
|
@@ -996,7 +1046,7 @@ async function main(argv) {
|
|
|
996
1046
|
}, emit);
|
|
997
1047
|
}
|
|
998
1048
|
if (command === "--version" || command === "-v") {
|
|
999
|
-
console.log("1.31.
|
|
1049
|
+
console.log("1.31.6");
|
|
1000
1050
|
return 0;
|
|
1001
1051
|
}
|
|
1002
1052
|
if (command === "--help" || command === "-h") {
|