archyne 0.2.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/LICENSE +21 -0
- package/README.md +249 -0
- package/THIRD-PARTY-NOTICES.md +302 -0
- package/bin/archyne.mjs +179 -0
- package/desktop/main.cjs +141 -0
- package/dist/assets/_commonjs-dynamic-modules-TDtrdbi3.js +1 -0
- package/dist/assets/abnfDiagram-VRR7QNED-DxJn5x30.js +1 -0
- package/dist/assets/ar-DHpnjuQB.js +1 -0
- package/dist/assets/arc-Bi9nYi75.js +1 -0
- package/dist/assets/architectureDiagram-ZJ3FMSHR-CVVsX69f.js +36 -0
- package/dist/assets/blockDiagram-677ZJIJ3-CvyOVrtD.js +132 -0
- package/dist/assets/c4Diagram-LMCZKHZV-CeTXI2L5.js +10 -0
- package/dist/assets/channel-CgQghNFn.js +1 -0
- package/dist/assets/chunk-2Q5K7J3B-QWLx0LNh.js +1 -0
- package/dist/assets/chunk-32BRIVSS-Cx7PNJc5.js +1 -0
- package/dist/assets/chunk-5VM5RSS4-B-JlXrm9.js +15 -0
- package/dist/assets/chunk-EX3LRPZG-BZir2lEZ.js +231 -0
- package/dist/assets/chunk-JWPE2WC7-Bs6js5ed.js +1 -0
- package/dist/assets/chunk-MOJQB5TN-M9vORODQ.js +88 -0
- package/dist/assets/chunk-RYQCIY6F-C23BZB1s.js +1 -0
- package/dist/assets/chunk-V7JOEXUC-DP9DCEHY.js +206 -0
- package/dist/assets/chunk-VR4S4FIN-CXMOwHEw.js +1 -0
- package/dist/assets/chunk-XXDRQBXY-C-XBHYFW.js +1 -0
- package/dist/assets/classDiagram-OUVF2IWQ-C9iVyfdZ.js +1 -0
- package/dist/assets/classDiagram-v2-EOCWNBFH-C9iVyfdZ.js +1 -0
- package/dist/assets/cose-bilkent-JH36ORCC-DcImuxgn.js +1 -0
- package/dist/assets/cynefin-VYW2F7L2-CKc9sK58.js +178 -0
- package/dist/assets/cynefinDiagram-TSTJHNR4-_O9mLQTK.js +62 -0
- package/dist/assets/cytoscape.esm-DTSO7Bv0.js +331 -0
- package/dist/assets/dagre-VKFMJZFB-CMh1gN_B.js +4 -0
- package/dist/assets/de-BbF3ozkg.js +1 -0
- package/dist/assets/defaultLocale-DX6XiGOO.js +1 -0
- package/dist/assets/diagram-FQU43EPY-Cay_5WYD.js +3 -0
- package/dist/assets/diagram-G47NLZAW-DT1H2wTP.js +24 -0
- package/dist/assets/diagram-NH7WQ7WH-xuvv_D9N.js +24 -0
- package/dist/assets/diagram-OA4YK3LP-Bio-u38F.js +30 -0
- package/dist/assets/diagram-WEI45ONY-CD_QL4nf.js +41 -0
- package/dist/assets/ebnfDiagram-CCIWWBDH-CkGukNGk.js +1 -0
- package/dist/assets/elk-api-CF2Hej0P.js +1 -0
- package/dist/assets/elk-worker.min-BENGc9gn.js +22 -0
- package/dist/assets/elk-worker.min-D32ngsh5.js +1 -0
- package/dist/assets/elk.bundled-ajwJAWsK.js +24 -0
- package/dist/assets/erDiagram-Q63AITRT-CQGtCq5E.js +85 -0
- package/dist/assets/es-BB-VRPmB.js +1 -0
- package/dist/assets/flowDiagram-23GEKE2U-E3_Lcv6A.js +156 -0
- package/dist/assets/ganttDiagram-NO4QXBWP-AwojtMZ1.js +292 -0
- package/dist/assets/gitGraphDiagram-IHSO6WYX-D0klOOBk.js +106 -0
- package/dist/assets/graph-C9eacEi8.js +1 -0
- package/dist/assets/icon-names.generated-Ch4zjdI9.js +1 -0
- package/dist/assets/index--A4RGzRu.js +277 -0
- package/dist/assets/index-B29u660W.js +1 -0
- package/dist/assets/index-BDuFgzVF.js +1 -0
- package/dist/assets/index-C-tHkbn_.js +1 -0
- package/dist/assets/index-C1mNJrF6.js +1 -0
- package/dist/assets/index-CbxBfG1v.css +1 -0
- package/dist/assets/index-XppXLvIK.js +1 -0
- package/dist/assets/infoDiagram-FWYZ7A6U-2op9tD2c.js +2 -0
- package/dist/assets/init-Gi6I4Gst.js +1 -0
- package/dist/assets/ishikawaDiagram-FXEZZL3T-B1UsYLso.js +70 -0
- package/dist/assets/it-z1Rr2vYL.js +1 -0
- package/dist/assets/ja-DMZcFTAH.js +1 -0
- package/dist/assets/journeyDiagram-5HDEW3XC-CZ1oYiAr.js +139 -0
- package/dist/assets/kanban-definition-HUTT4EX6-B-XWcB9M.js +89 -0
- package/dist/assets/katex-C5jXJg4s.js +257 -0
- package/dist/assets/layout-DEXfKzaS.js +1 -0
- package/dist/assets/linear-GMYYDbJv.js +1 -0
- package/dist/assets/map-Czzmt4hB.js +1 -0
- package/dist/assets/mermaid.core-pPiwjbNO.js +314 -0
- package/dist/assets/mindmap-definition-LN4V7U3C-BB4SGbrE.js +96 -0
- package/dist/assets/ordinal-Cboi1Yqb.js +1 -0
- package/dist/assets/pegDiagram-2B236MQR-3keJbrGj.js +1 -0
- package/dist/assets/pieDiagram-ENE6RG2P-CVi3ig0y.js +39 -0
- package/dist/assets/quadrantDiagram-ABIIQ3AL-CPp6gXbB.js +7 -0
- package/dist/assets/railroadDiagram-RFXS5EU6-BCILT-8k.js +1 -0
- package/dist/assets/requirementDiagram-TGXJPOKE-DgmaKLiT.js +84 -0
- package/dist/assets/sankeyDiagram-HTMAVEWB-DHGaI0hQ.js +40 -0
- package/dist/assets/sequenceDiagram-DBY2YBRQ-3AycEqxZ.js +162 -0
- package/dist/assets/sizeCapture-X5ZJPWSS-uS50b7bJ.js +1 -0
- package/dist/assets/stateDiagram-2N3HPSRC-DaBzZNwx.js +1 -0
- package/dist/assets/stateDiagram-v2-6OUMAXLB-xJOnXuvC.js +1 -0
- package/dist/assets/swimlanes-5IMT3BWC-BR44KNOm.js +2 -0
- package/dist/assets/swimlanesDiagram-G3AALYLV-B3xqzED0.js +8 -0
- package/dist/assets/timeline-definition-FHXFAJF6-Msxd070e.js +120 -0
- package/dist/assets/vennDiagram-L72KCM5P-W9VDq1l8.js +34 -0
- package/dist/assets/wardleyDiagram-EHGQE667-DfDvmnIe.js +78 -0
- package/dist/assets/xychartDiagram-FW5EYKEG-HwKD44hb.js +7 -0
- package/dist/assets/zh-B2oIvhee.js +1 -0
- package/dist/embed-demo.html +114 -0
- package/dist/index.html +102 -0
- package/dist/logo.png +0 -0
- package/dist/logo.svg +55 -0
- package/package.json +123 -0
package/dist/index.html
ADDED
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
<!doctype html>
|
|
2
|
+
<html lang="en">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="UTF-8" />
|
|
5
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
6
|
+
<!--
|
|
7
|
+
Archyne makes no network requests of its own: everything, including the
|
|
8
|
+
icon packs and mermaid's renderers, is bundled. `connect-src 'self'`
|
|
9
|
+
therefore states a real invariant rather than a hope, and a violation
|
|
10
|
+
means something went wrong.
|
|
11
|
+
|
|
12
|
+
Notes on the loosenings:
|
|
13
|
+
style-src 'unsafe-inline' mermaid injects a <style> per render, and
|
|
14
|
+
the splash below is inline on purpose
|
|
15
|
+
img-src data: blob: exports are produced as data URLs, and the
|
|
16
|
+
preview rasterizes SVG through blobs
|
|
17
|
+
font-src data: html-to-image inlines fonts as data URLs
|
|
18
|
+
|
|
19
|
+
`frame-ancestors` is deliberately absent: it is ignored in a meta tag,
|
|
20
|
+
and Archyne supports being embedded. Operators who want to restrict who
|
|
21
|
+
may frame their deployment should send it as an HTTP header — see the
|
|
22
|
+
self-hosting notes in CONTRIBUTING.md.
|
|
23
|
+
-->
|
|
24
|
+
<meta
|
|
25
|
+
http-equiv="Content-Security-Policy"
|
|
26
|
+
content="
|
|
27
|
+
default-src 'self';
|
|
28
|
+
script-src 'self';
|
|
29
|
+
style-src 'self' 'unsafe-inline';
|
|
30
|
+
img-src 'self' data: blob:;
|
|
31
|
+
font-src 'self' data:;
|
|
32
|
+
connect-src 'self';
|
|
33
|
+
worker-src 'self' blob:;
|
|
34
|
+
object-src 'none';
|
|
35
|
+
base-uri 'none';
|
|
36
|
+
form-action 'none'
|
|
37
|
+
"
|
|
38
|
+
/>
|
|
39
|
+
<!-- SVG where supported; the raster stays for engines that ignore it. -->
|
|
40
|
+
<link rel="icon" type="image/svg+xml" href="./logo.svg" />
|
|
41
|
+
<link rel="alternate icon" type="image/png" href="./logo.png" />
|
|
42
|
+
<title>Archyne — a visual editor for Mermaid diagrams</title>
|
|
43
|
+
<style>
|
|
44
|
+
/* static splash, shown until React mounts (styles inline on purpose) */
|
|
45
|
+
#root:empty::after {
|
|
46
|
+
content: "";
|
|
47
|
+
}
|
|
48
|
+
.splash {
|
|
49
|
+
position: fixed;
|
|
50
|
+
inset: 0;
|
|
51
|
+
z-index: 3000;
|
|
52
|
+
display: flex;
|
|
53
|
+
flex-direction: column;
|
|
54
|
+
align-items: center;
|
|
55
|
+
justify-content: center;
|
|
56
|
+
gap: 14px;
|
|
57
|
+
background: #0f1014;
|
|
58
|
+
color: #ebebf0;
|
|
59
|
+
font-family: "Segoe UI", system-ui, sans-serif;
|
|
60
|
+
}
|
|
61
|
+
.splash-mark {
|
|
62
|
+
width: 92px;
|
|
63
|
+
height: 92px;
|
|
64
|
+
animation: splash-bob 1.6s ease-in-out infinite;
|
|
65
|
+
}
|
|
66
|
+
.splash-name {
|
|
67
|
+
font-size: 24px;
|
|
68
|
+
font-weight: 600;
|
|
69
|
+
letter-spacing: -0.01em;
|
|
70
|
+
}
|
|
71
|
+
.splash-sub {
|
|
72
|
+
font-size: 12px;
|
|
73
|
+
color: #999ba8;
|
|
74
|
+
}
|
|
75
|
+
/* The bob is decoration; respect the OS setting. */
|
|
76
|
+
@media (prefers-reduced-motion: reduce) {
|
|
77
|
+
.splash-mark {
|
|
78
|
+
animation: none;
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
@keyframes splash-bob {
|
|
82
|
+
0%,
|
|
83
|
+
100% {
|
|
84
|
+
transform: translateY(0);
|
|
85
|
+
}
|
|
86
|
+
50% {
|
|
87
|
+
transform: translateY(-8px);
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
</style>
|
|
91
|
+
<script type="module" crossorigin src="./assets/index--A4RGzRu.js"></script>
|
|
92
|
+
<link rel="stylesheet" crossorigin href="./assets/index-CbxBfG1v.css">
|
|
93
|
+
</head>
|
|
94
|
+
<body>
|
|
95
|
+
<div id="root">
|
|
96
|
+
<div class="splash">
|
|
97
|
+
<img class="splash-mark" src="./logo.svg" alt="" />
|
|
98
|
+
<div class="splash-name">Archyne</div>
|
|
99
|
+
</div>
|
|
100
|
+
</div>
|
|
101
|
+
</body>
|
|
102
|
+
</html>
|
package/dist/logo.png
ADDED
|
Binary file
|
package/dist/logo.svg
ADDED
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 240 240" role="img" aria-label="Archyne">
|
|
2
|
+
<title>Archyne</title>
|
|
3
|
+
<defs>
|
|
4
|
+
<linearGradient id="arch" x1="24" y1="216" x2="220" y2="28" gradientUnits="userSpaceOnUse">
|
|
5
|
+
<stop offset="0" stop-color="#8B5CF6" />
|
|
6
|
+
<stop offset="0.5" stop-color="#5F6BF2" />
|
|
7
|
+
<stop offset="1" stop-color="#2B93FF" />
|
|
8
|
+
</linearGradient>
|
|
9
|
+
<linearGradient id="cubeTop" x1="0" y1="0" x2="0.4" y2="1">
|
|
10
|
+
<stop offset="0" stop-color="#7B95FF" />
|
|
11
|
+
<stop offset="1" stop-color="#5470F2" />
|
|
12
|
+
</linearGradient>
|
|
13
|
+
<linearGradient id="cubeLeft" x1="0" y1="0" x2="1" y2="1">
|
|
14
|
+
<stop offset="0" stop-color="#3B4CD4" />
|
|
15
|
+
<stop offset="1" stop-color="#2F3CB4" />
|
|
16
|
+
</linearGradient>
|
|
17
|
+
<linearGradient id="cubeRight" x1="0" y1="0" x2="1" y2="1">
|
|
18
|
+
<stop offset="0" stop-color="#5480F0" />
|
|
19
|
+
<stop offset="1" stop-color="#3F63DA" />
|
|
20
|
+
</linearGradient>
|
|
21
|
+
</defs>
|
|
22
|
+
|
|
23
|
+
<!-- The A as a gateway: vertical legs, a broad rounded shoulder, open at
|
|
24
|
+
the foot. Outer contour up and over, inner contour back down — a
|
|
25
|
+
single closed path, so the counter is the arch's own opening. -->
|
|
26
|
+
<path
|
|
27
|
+
fill="url(#arch)"
|
|
28
|
+
d="M22 212
|
|
29
|
+
L22 118
|
|
30
|
+
Q22 108 29 100
|
|
31
|
+
L107 23
|
|
32
|
+
Q120 11 133 23
|
|
33
|
+
L211 100
|
|
34
|
+
Q218 108 218 118
|
|
35
|
+
L218 212
|
|
36
|
+
Q218 220 210 220
|
|
37
|
+
L178 220
|
|
38
|
+
Q170 220 170 212
|
|
39
|
+
L170 128
|
|
40
|
+
Q170 122 165 117
|
|
41
|
+
L126 79
|
|
42
|
+
Q120 73 114 79
|
|
43
|
+
L75 117
|
|
44
|
+
Q70 122 70 128
|
|
45
|
+
L70 212
|
|
46
|
+
Q70 220 62 220
|
|
47
|
+
L30 220
|
|
48
|
+
Q22 220 22 212
|
|
49
|
+
Z" />
|
|
50
|
+
|
|
51
|
+
<!-- Module: an isometric cube seated in the opening. -->
|
|
52
|
+
<path fill="url(#cubeTop)" d="M120 150 L147 165 L120 180 L93 165 Z" />
|
|
53
|
+
<path fill="url(#cubeLeft)" d="M93 165 L120 180 L120 212 L93 197 Z" />
|
|
54
|
+
<path fill="url(#cubeRight)" d="M147 165 L120 180 L120 212 L147 197 Z" />
|
|
55
|
+
</svg>
|
package/package.json
ADDED
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "archyne",
|
|
3
|
+
"version": "0.2.0",
|
|
4
|
+
"license": "MIT",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"bin": {
|
|
7
|
+
"archyne": "bin/archyne.mjs"
|
|
8
|
+
},
|
|
9
|
+
"files": [
|
|
10
|
+
"bin",
|
|
11
|
+
"dist",
|
|
12
|
+
"LICENSE",
|
|
13
|
+
"README.md",
|
|
14
|
+
"THIRD-PARTY-NOTICES.md"
|
|
15
|
+
],
|
|
16
|
+
"engines": {
|
|
17
|
+
"node": ">=22"
|
|
18
|
+
},
|
|
19
|
+
"repository": {
|
|
20
|
+
"type": "git",
|
|
21
|
+
"url": "git+https://github.com/dariodd/archyne.git"
|
|
22
|
+
},
|
|
23
|
+
"bugs": {
|
|
24
|
+
"url": "https://github.com/dariodd/archyne/issues"
|
|
25
|
+
},
|
|
26
|
+
"homepage": "https://dariodd.github.io/archyne/",
|
|
27
|
+
"keywords": [
|
|
28
|
+
"mermaid",
|
|
29
|
+
"diagram",
|
|
30
|
+
"diagram-editor",
|
|
31
|
+
"flowchart",
|
|
32
|
+
"uml",
|
|
33
|
+
"erd",
|
|
34
|
+
"c4-model",
|
|
35
|
+
"sequence-diagram",
|
|
36
|
+
"architecture-diagram",
|
|
37
|
+
"local-first",
|
|
38
|
+
"mcp",
|
|
39
|
+
"editor"
|
|
40
|
+
],
|
|
41
|
+
"scripts": {
|
|
42
|
+
"dev": "vite",
|
|
43
|
+
"build": "npm run typecheck && vite build",
|
|
44
|
+
"preview": "vite preview",
|
|
45
|
+
"test": "vitest run",
|
|
46
|
+
"typecheck": "tsc -p tsconfig.json && tsc -p tsconfig.node.json",
|
|
47
|
+
"lint": "eslint .",
|
|
48
|
+
"lint:fix": "eslint . --fix",
|
|
49
|
+
"format": "prettier --write .",
|
|
50
|
+
"format:check": "prettier --check .",
|
|
51
|
+
"size": "node scripts/check-bundle-size.mjs",
|
|
52
|
+
"icons:index": "node scripts/build-icon-index.mjs",
|
|
53
|
+
"audit": "node scripts/audit-gate.mjs",
|
|
54
|
+
"sbom": "node scripts/sbom.mjs",
|
|
55
|
+
"notices:check": "node scripts/sbom.mjs && node scripts/check-notices.mjs",
|
|
56
|
+
"notices:update": "node scripts/sbom.mjs && node scripts/update-notices.mjs",
|
|
57
|
+
"mcp": "tsx mcp/server.ts",
|
|
58
|
+
"mcp:smoke": "tsx mcp/smoke.ts",
|
|
59
|
+
"test:e2e:export": "tsx tests/e2e-export.mts",
|
|
60
|
+
"test:e2e:i18n": "tsx tests/e2e-i18n-export.mts",
|
|
61
|
+
"test:e2e:a11y": "tsx tests/e2e-a11y.mts",
|
|
62
|
+
"test:e2e:rtl": "tsx tests/e2e-rtl.mts",
|
|
63
|
+
"test:e2e:csp": "tsx tests/e2e-csp.mts",
|
|
64
|
+
"start": "node bin/archyne.mjs",
|
|
65
|
+
"prepublishOnly": "npm run build",
|
|
66
|
+
"desktop": "electron .",
|
|
67
|
+
"desktop:build": "npm run build && electron-builder --win"
|
|
68
|
+
},
|
|
69
|
+
"dependencies": {
|
|
70
|
+
"@codemirror/theme-one-dark": "^6.1.3",
|
|
71
|
+
"@iconify-json/carbon": "^1.2.24",
|
|
72
|
+
"@iconify-json/devicon": "^1.2.62",
|
|
73
|
+
"@iconify-json/logos": "^1.2.11",
|
|
74
|
+
"@iconify-json/simple-icons": "^1.2.92",
|
|
75
|
+
"@iconify-json/tabler": "^1.2.38",
|
|
76
|
+
"@iconify/utils": "^3.1.4",
|
|
77
|
+
"@modelcontextprotocol/sdk": "^1.30.0",
|
|
78
|
+
"@xyflow/react": "^12.8.0",
|
|
79
|
+
"codemirror": "^6.0.2",
|
|
80
|
+
"codemirror-lang-mermaid": "^0.5.0",
|
|
81
|
+
"elkjs": "^0.12.0",
|
|
82
|
+
"html-to-image": "^1.11.13",
|
|
83
|
+
"mermaid": "^11.9.0",
|
|
84
|
+
"react": "^19.1.0",
|
|
85
|
+
"react-dom": "^19.1.0",
|
|
86
|
+
"tsx": "^4.23.1",
|
|
87
|
+
"zod": "^4.4.3",
|
|
88
|
+
"zustand": "^5.0.0"
|
|
89
|
+
},
|
|
90
|
+
"devDependencies": {
|
|
91
|
+
"@eslint/js": "^9.39.5",
|
|
92
|
+
"@testing-library/react": "^16.3.2",
|
|
93
|
+
"@testing-library/user-event": "^14.6.1",
|
|
94
|
+
"@types/jsdom": "^28.0.3",
|
|
95
|
+
"@types/node": "^26.1.2",
|
|
96
|
+
"@types/react": "^19.1.0",
|
|
97
|
+
"@types/react-dom": "^19.1.0",
|
|
98
|
+
"@vitejs/plugin-react": "^4.5.0",
|
|
99
|
+
"axe-core": "^4.12.1",
|
|
100
|
+
"electron": "^43.2.0",
|
|
101
|
+
"electron-builder": "^26.15.3",
|
|
102
|
+
"eslint": "^9.39.5",
|
|
103
|
+
"eslint-config-prettier": "^10.1.8",
|
|
104
|
+
"eslint-plugin-jsx-a11y": "^6.10.2",
|
|
105
|
+
"eslint-plugin-react-hooks": "^7.1.1",
|
|
106
|
+
"eslint-plugin-react-refresh": "^0.5.3",
|
|
107
|
+
"globals": "^17.8.0",
|
|
108
|
+
"jsdom": "^30.0.1",
|
|
109
|
+
"playwright": "^1.62.1",
|
|
110
|
+
"prettier": "^3.9.6",
|
|
111
|
+
"typescript": "~5.8.0",
|
|
112
|
+
"typescript-eslint": "^8.65.0",
|
|
113
|
+
"vite": "^6.3.0",
|
|
114
|
+
"vitest": "^4.1.10"
|
|
115
|
+
},
|
|
116
|
+
"main": "desktop/main.cjs",
|
|
117
|
+
"description": "A visual editor for Mermaid diagrams — draw, and get Mermaid code",
|
|
118
|
+
"author": {
|
|
119
|
+
"name": "dariodd",
|
|
120
|
+
"email": "57635667+dariodd@users.noreply.github.com",
|
|
121
|
+
"url": "https://github.com/dariodd"
|
|
122
|
+
}
|
|
123
|
+
}
|