@sagargupta1610/orrery 0.6.1 → 0.7.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/README.md +3 -3
- package/SKILL.md +2 -2
- package/THIRD_PARTY_NOTICES.md +1 -0
- package/assets/fonts/GeistMono-Bold.ttf +0 -0
- package/assets/fonts/GeistMono-OFL.txt +93 -0
- package/assets/fonts/GeistMono-Regular.ttf +0 -0
- package/package.json +1 -1
- package/references/diagram.schema.json +2 -2
- package/references/outputs.md +3 -1
- package/references/spec.md +2 -2
- package/scripts/orrery.mjs +1154 -442
package/README.md
CHANGED
|
@@ -13,13 +13,13 @@ One YAML spec in; SVG, PNG, editable draw.io, a React component and an HTML view
|
|
|
13
13
|
**[sagargupta.online/orrery](https://sagargupta.online/orrery/)**: every example in light and dark, with its spec and downloads.
|
|
14
14
|
|
|
15
15
|
[](https://github.com/Sagargupta16/orrery/actions/workflows/ci.yml)
|
|
16
|
-

|
|
17
17
|

|
|
18
18
|

|
|
19
19
|
|
|
20
20
|
</div>
|
|
21
21
|
|
|
22
|
-
The diagram above is [docs/hero.yaml](docs/hero.yaml): 42 lines of YAML, laid out and rendered by orrery in the `stage` skin (`skin: stage`):
|
|
22
|
+
The diagram above is [docs/hero.yaml](docs/hero.yaml): 42 lines of YAML, laid out and rendered by orrery in the `stage` skin (`skin: stage`): the groups light, then the tiles, then a packet with a comet tail runs the numbered steps in order, lighting each line behind it, and every step badge pops as its packet leaves, on a loop. The rest of this README is the `classic` skin, the vendors' own diagram style, which animates a packet along each edge. GitHub keeps the animation; the PNG of the same spec is a still frame.
|
|
23
23
|
|
|
24
24
|
## What you get
|
|
25
25
|
|
|
@@ -27,7 +27,7 @@ The diagram above is [docs/hero.yaml](docs/hero.yaml): 42 lines of YAML, laid ou
|
|
|
27
27
|
- **Official conventions.** AWS groups follow the AWS Architecture Icons deck (borders, dashes, corner tiles, label placement, open arrowheads, numbered callouts); Google Cloud and Azure groups are measured from their own reference diagrams. Every value cites its source in [styles.md](skills/orrery/references/styles.md).
|
|
28
28
|
- **Automatic layout.** The Eclipse Layout Kernel places nested boundaries, routes edges at right angles, joins fan-in and fan-out into trunks and keeps the order you wrote unless that would cross edges. No coordinates to write.
|
|
29
29
|
- **Diagrams that move.** Animated SVG by default: packets travel every edge at one speed, numbered steps play as a story, line styles stay as drawn. `animate: flow` for marching dashes, `--static` for a still file.
|
|
30
|
-
- **Two skins, one layout.** `classic` follows each vendor's diagram style; `skin: stage` (or `--skin stage`) draws the same boxes and lines
|
|
30
|
+
- **Two skins, one layout.** `classic` follows each vendor's diagram style; `skin: stage` (or `--skin stage`) draws the same boxes and lines as an animated scene: a hairline grid with one tint, ink tiles with monochrome icons, mono caps labels, dim wires and one story that plays along them. Every position stays the same; dark and light.
|
|
31
31
|
- **Five outputs from one spec.** SVG for READMEs and docs, PNG for slides and chat (3x by default, sharp when zoomed), `.drawio` you can keep editing, a TSX component for React sites, and a standalone HTML viewer with dark mode, pan and pinch zoom.
|
|
32
32
|
- **Made for agents.** A skill with a fast path and authoring rules, a JSON Schema, 392 short aliases (`aws:s3`, `azure:aks`, `k8s:deploy`), ranked icon search, and a validator whose every finding names the subject and the fix.
|
|
33
33
|
- **No install.** The CLI, layout engine, PNG renderer, fonts and the official cloud packs ship in the skill folder (9 MB). Logo and glyph sets are not copied in: they load from their own npm libraries the first time a diagram uses them, verified by checksum and cached. Node.js 22 or newer is all it needs.
|
package/SKILL.md
CHANGED
|
@@ -11,7 +11,7 @@ description: >-
|
|
|
11
11
|
flowchart into a clean diagram with real vendor icons.
|
|
12
12
|
license: MIT
|
|
13
13
|
metadata:
|
|
14
|
-
version: "0.
|
|
14
|
+
version: "0.7.0"
|
|
15
15
|
author: Sagar Gupta
|
|
16
16
|
---
|
|
17
17
|
|
|
@@ -86,7 +86,7 @@ Follow this order. Write the spec early and let the validator steer; do not plan
|
|
|
86
86
|
|
|
87
87
|
| Format | Use for |
|
|
88
88
|
| --- | --- |
|
|
89
|
-
| `svg` | READMEs, docs sites, wikis. Self-contained, scalable, with `<title>`/`<desc>` for screen readers. Animated by default: packets travel the edges, numbered steps play in order (`animate: none` or `--static` for a still file). `skin: stage` (or `--skin stage`) draws the same layout
|
|
89
|
+
| `svg` | READMEs, docs sites, wikis. Self-contained, scalable, with `<title>`/`<desc>` for screen readers. Animated by default: packets travel the edges, numbered steps play in order (`animate: none` or `--static` for a still file). `skin: stage` (or `--skin stage`) draws the same layout as an animated scene in one tint (monochrome icons, mono caps labels, one story along the edges); keep the default `classic` for vendor architecture docs and use `stage` for a README hero, a slide or a project page. |
|
|
90
90
|
| `png` | Slides, chat, tickets, anywhere SVG is not accepted. Always a still frame. Rendered with the bundled Inter font at 3x by default (`--scale`), so it stays sharp when zoomed or projected. |
|
|
91
91
|
| `drawio` | Hand-editing in diagrams.net or the VS Code Draw.io extension; every node, group and edge is an editable cell with the official icon embedded. |
|
|
92
92
|
| `tsx` | A React component (`export default function Name(props)`) for docs sites and apps. |
|
package/THIRD_PARTY_NOTICES.md
CHANGED
|
@@ -23,6 +23,7 @@ The `aws`, `azure`, `gcp` and `k8s` packs live in `skills/orrery/assets/icons/`
|
|
|
23
23
|
| File | Source | License |
|
|
24
24
|
| --- | --- | --- |
|
|
25
25
|
| `skills/orrery/assets/fonts/Inter-Regular.ttf`, `Inter-SemiBold.ttf` | [Inter 4.1](https://github.com/rsms/inter) by Rasmus Andersson | SIL Open Font License 1.1, full text in `skills/orrery/assets/fonts/Inter-OFL.txt`. |
|
|
26
|
+
| `skills/orrery/assets/fonts/GeistMono-Regular.ttf`, `GeistMono-Bold.ttf` | [Geist Mono 1.8.1](https://github.com/vercel/geist-font) by Vercel, the stage skin's face | SIL Open Font License 1.1, full text in `skills/orrery/assets/fonts/GeistMono-OFL.txt`. |
|
|
26
27
|
|
|
27
28
|
## Runtime engines
|
|
28
29
|
|
|
Binary file
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
Copyright 2024 The Geist Project Authors (https://github.com/vercel/geist-font)
|
|
2
|
+
|
|
3
|
+
This Font Software is licensed under the SIL Open Font License, Version 1.1.
|
|
4
|
+
This license is copied below, and is also available with a FAQ at:
|
|
5
|
+
https://openfontlicense.org
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
-----------------------------------------------------------
|
|
9
|
+
SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
|
|
10
|
+
-----------------------------------------------------------
|
|
11
|
+
|
|
12
|
+
PREAMBLE
|
|
13
|
+
The goals of the Open Font License (OFL) are to stimulate worldwide
|
|
14
|
+
development of collaborative font projects, to support the font creation
|
|
15
|
+
efforts of academic and linguistic communities, and to provide a free and
|
|
16
|
+
open framework in which fonts may be shared and improved in partnership
|
|
17
|
+
with others.
|
|
18
|
+
|
|
19
|
+
The OFL allows the licensed fonts to be used, studied, modified and
|
|
20
|
+
redistributed freely as long as they are not sold by themselves. The
|
|
21
|
+
fonts, including any derivative works, can be bundled, embedded,
|
|
22
|
+
redistributed and/or sold with any software provided that any reserved
|
|
23
|
+
names are not used by derivative works. The fonts and derivatives,
|
|
24
|
+
however, cannot be released under any other type of license. The
|
|
25
|
+
requirement for fonts to remain under this license does not apply
|
|
26
|
+
to any document created using the fonts or their derivatives.
|
|
27
|
+
|
|
28
|
+
DEFINITIONS
|
|
29
|
+
"Font Software" refers to the set of files released by the Copyright
|
|
30
|
+
Holder(s) under this license and clearly marked as such. This may
|
|
31
|
+
include source files, build scripts and documentation.
|
|
32
|
+
|
|
33
|
+
"Reserved Font Name" refers to any names specified as such after the
|
|
34
|
+
copyright statement(s).
|
|
35
|
+
|
|
36
|
+
"Original Version" refers to the collection of Font Software components as
|
|
37
|
+
distributed by the Copyright Holder(s).
|
|
38
|
+
|
|
39
|
+
"Modified Version" refers to any derivative made by adding to, deleting,
|
|
40
|
+
or substituting -- in part or in whole -- any of the components of the
|
|
41
|
+
Original Version, by changing formats or by porting the Font Software to a
|
|
42
|
+
new environment.
|
|
43
|
+
|
|
44
|
+
"Author" refers to any designer, engineer, programmer, technical
|
|
45
|
+
writer or other person who contributed to the Font Software.
|
|
46
|
+
|
|
47
|
+
PERMISSION & CONDITIONS
|
|
48
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
|
49
|
+
a copy of the Font Software, to use, study, copy, merge, embed, modify,
|
|
50
|
+
redistribute, and sell modified and unmodified copies of the Font
|
|
51
|
+
Software, subject to the following conditions:
|
|
52
|
+
|
|
53
|
+
1) Neither the Font Software nor any of its individual components,
|
|
54
|
+
in Original or Modified Versions, may be sold by itself.
|
|
55
|
+
|
|
56
|
+
2) Original or Modified Versions of the Font Software may be bundled,
|
|
57
|
+
redistributed and/or sold with any software, provided that each copy
|
|
58
|
+
contains the above copyright notice and this license. These can be
|
|
59
|
+
included either as stand-alone text files, human-readable headers or
|
|
60
|
+
in the appropriate machine-readable metadata fields within text or
|
|
61
|
+
binary files as long as those fields can be easily viewed by the user.
|
|
62
|
+
|
|
63
|
+
3) No Modified Version of the Font Software may use the Reserved Font
|
|
64
|
+
Name(s) unless explicit written permission is granted by the corresponding
|
|
65
|
+
Copyright Holder. This restriction only applies to the primary font name as
|
|
66
|
+
presented to the users.
|
|
67
|
+
|
|
68
|
+
4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
|
|
69
|
+
Software shall not be used to promote, endorse or advertise any
|
|
70
|
+
Modified Version, except to acknowledge the contribution(s) of the
|
|
71
|
+
Copyright Holder(s) and the Author(s) or with their explicit written
|
|
72
|
+
permission.
|
|
73
|
+
|
|
74
|
+
5) The Font Software, modified or unmodified, in part or in whole,
|
|
75
|
+
must be distributed entirely under this license, and must not be
|
|
76
|
+
distributed under any other license. The requirement for fonts to
|
|
77
|
+
remain under this license does not apply to any document created
|
|
78
|
+
using the Font Software.
|
|
79
|
+
|
|
80
|
+
TERMINATION
|
|
81
|
+
This license becomes null and void if any of the above conditions are
|
|
82
|
+
not met.
|
|
83
|
+
|
|
84
|
+
DISCLAIMER
|
|
85
|
+
THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
|
86
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
|
|
87
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
|
|
88
|
+
OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
|
|
89
|
+
COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
|
90
|
+
INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
|
|
91
|
+
DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
|
92
|
+
FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
|
|
93
|
+
OTHER DEALINGS IN THE FONT SOFTWARE.
|
|
Binary file
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sagargupta1610/orrery",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.7.0",
|
|
4
4
|
"description": "Architecture and system design diagrams with official AWS, Azure, Google Cloud, Kubernetes and GitHub icons, rendered to SVG, PNG, draw.io, TSX and HTML.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": "Sagar Gupta (https://github.com/Sagargupta16)",
|
|
@@ -17,12 +17,12 @@
|
|
|
17
17
|
"arrowhead": { "enum": ["open", "filled"], "default": "open" },
|
|
18
18
|
"animate": {
|
|
19
19
|
"oneOf": [{ "type": "boolean" }, { "enum": ["packets", "flow", "relay", "none"] }],
|
|
20
|
-
"description": "Motion in SVG, TSX and HTML (PNG and draw.io stay still). packets: dots travel the edges, numbered steps in order; flow: marching dashes; relay: on one clock each line draws itself in turn and the node it reaches lights up; none: still. true is packets, false is none. Unset: packets for the classic skin, relay for stage."
|
|
20
|
+
"description": "Motion in SVG, TSX and HTML (PNG and draw.io stay still). packets: dots travel the edges, numbered steps in order; flow: marching dashes; relay: on one clock each line draws itself in turn and the node it reaches lights up; none: still. true is packets, false is none. Unset: packets for the classic skin, relay for stage (where relay and packets play the stage story)."
|
|
21
21
|
},
|
|
22
22
|
"skin": {
|
|
23
23
|
"enum": ["classic", "stage"],
|
|
24
24
|
"default": "classic",
|
|
25
|
-
"description": "classic: the vendors' own diagram styles. stage:
|
|
25
|
+
"description": "classic: the vendors' own diagram styles. stage: the same layout as an animated scene in one tint (hairline grid, monochrome icons on ink tiles, mono caps labels), whose story runs the numbered edges in step order, else the longest path."
|
|
26
26
|
},
|
|
27
27
|
"background": { "type": "string", "pattern": "^(#[0-9a-fA-F]{3}|#[0-9a-fA-F]{6}|transparent)$" },
|
|
28
28
|
"legend": {
|
package/references/outputs.md
CHANGED
|
@@ -17,6 +17,8 @@ A `legend:` in the spec appears in every format: a box at the bottom right with
|
|
|
17
17
|
- Animated by default. With `animate: packets` (the default) a small dot travels every directed edge from source to target at one speed, so long edges take longer; `<->` edges carry one each way and undirected `--` lines stay still. When edges carry `step:` numbers, those run one after another in step order and the badge of each step ripples as its packet leaves, so the diagram plays the walkthrough on a loop; the other edges keep their own staggered loops. Line styles are untouched: a dashed edge stays dashed. It is SMIL (`<animateMotion>`), with no CSS and no script, and GitHub keeps it in SVGs shown as images.
|
|
18
18
|
- `animate: flow` draws marching dashes along every edge instead (a small CSS keyframe block); solid edges become dashed while they move. `animate: none`, or `render --static`, writes a still SVG.
|
|
19
19
|
- `animate: relay` (the default of `skin: stage`) runs every line on one clock: each one draws itself in turn behind a dot (a mask reveals it, so a dashed line stays dashed), its arrowhead lights when it arrives, and the node it reaches lights up on a flat tint plate; everything holds until 92% of the loop and resets by 95%. Beats follow the `step:` numbers when there are any, else the distance from the nodes nothing points at, at most eight of them, so a loop lasts about three to six seconds. The base diagram is always drawn in full underneath, so a paused or still frame shows every line.
|
|
20
|
+
- `skin: stage` draws its own scene for `relay` (its default) and `packets`: on one clock the groups light, then the tiles, then a packet with a comet tail runs the story (the numbered edges in step order, else the longest chain of directed edges), easing in and out of every hop and pausing at each node, while the wire it travels lights up behind it; each step badge pops as its packet leaves; at most two other edges run a small packet of their own; everything holds until 90% of the loop and is gone by 94%. A still stage frame (PNG, draw.io, `animate: none`) is the held frame: everything lit, no packets.
|
|
21
|
+
- Stage text is Geist Mono when the viewer has it, else the system monospace font (SF Mono, Menlo, Consolas). Hairlines are one pixel wide at 880 px, the README column, and scale up for wider diagrams so they still read when the picture is shrunk to fit.
|
|
20
22
|
|
|
21
23
|
### In a README
|
|
22
24
|
|
|
@@ -33,7 +35,7 @@ Plain Markdown works too: ``.
|
|
|
33
35
|
|
|
34
36
|
## PNG
|
|
35
37
|
|
|
36
|
-
- Rendered by resvg (WebAssembly) with the bundled Inter Regular and SemiBold, so the picture is identical on every machine.
|
|
38
|
+
- Rendered by resvg (WebAssembly) with the bundled Inter Regular and SemiBold (and Geist Mono Regular and Bold for the stage skin), so the picture is identical on every machine.
|
|
37
39
|
- `--scale` sets the pixel density (default 3, so a 1200 x 600 diagram becomes a 3600 x 1800 PNG that stays sharp when zoomed or projected). Use 1 or 2 for small chat previews, 4 or more for print. For pictures people will zoom into, prefer the SVG: it is vector and sharp at any zoom.
|
|
38
40
|
- Animation is dropped; the PNG shows the static diagram.
|
|
39
41
|
- Inter covers Latin, Greek and Cyrillic. For other scripts pass a font: `--font NotoSansJP-Regular.ttf` (repeatable).
|
package/references/spec.md
CHANGED
|
@@ -40,8 +40,8 @@ edges:
|
|
|
40
40
|
| `layout.routing` | `orthogonal`, `polyline`, `spline` | `orthogonal` | Edge style. Orthogonal is the house style of AWS and Azure diagrams. |
|
|
41
41
|
| `layout.layering` | `source`, `simplex` | `source` | `source` lines parallel branches up; `simplex` keeps edges shortest. Try the other one when a layout looks off. |
|
|
42
42
|
| `layout.merge` | `true`, `false` | `true` | Edges that share an endpoint and have the same line, arrow and color join into one trunk with a single arrowhead; different styles keep their own ports. `false` gives every edge its own port. |
|
|
43
|
-
| `animate` | `packets`, `flow`, `relay`, `none` (`true` is `packets`, `false` is `none`) | `packets` for `classic`, `relay` for `stage` | Motion in SVG, TSX and HTML; PNG and draw.io are always still. `packets`: a dot travels every directed edge, and numbered edges run one after another in step order as a loop; line styles stay as drawn. `flow`: marching dashes along every edge. `relay`: on one clock each line draws itself in turn (step order when edges carry `step:`, else outward from the entry points) and the node it reaches lights up; everything holds, then the loop resets. `render --animate <mode>` or `--static` overrides it. |
|
|
44
|
-
| `skin` | `classic`, `stage` | `classic` | `classic`: the vendors' own diagram styles. `stage`: the same layout (every box and point identical)
|
|
43
|
+
| `animate` | `packets`, `flow`, `relay`, `none` (`true` is `packets`, `false` is `none`) | `packets` for `classic`, `relay` for `stage` | Motion in SVG, TSX and HTML; PNG and draw.io are always still. `packets`: a dot travels every directed edge, and numbered edges run one after another in step order as a loop; line styles stay as drawn. `flow`: marching dashes along every edge. `relay`: on one clock each line draws itself in turn (step order when edges carry `step:`, else outward from the entry points) and the node it reaches lights up; everything holds, then the loop resets. In `stage`, `relay` and `packets` both play the stage story (see `skin`). `render --animate <mode>` or `--static` overrides it. |
|
|
44
|
+
| `skin` | `classic`, `stage` | `classic` | `classic`: the vendors' own diagram styles. `stage`: the same layout (every box and point identical) as an animated scene with no vendor hues: a hairline grid and one tint wash, structure in one color at a few alphas, icons as monochrome glyphs on ink tiles, labels in Geist Mono caps. Its motion is one story: the groups light, then the tiles, then a packet with a comet tail runs the numbered edges in step order (else the longest path), lighting each wire behind it; every step badge pops as its packet leaves, at most two other edges run a small packet, everything holds and loops. A node's or edge's `color:` becomes its lit tint. Both themes. `render --skin` and `review --skin` override it. |
|
|
45
45
|
| `background` | quoted hex color or `transparent` | theme | `transparent` drops the background rectangle. |
|
|
46
46
|
| `legend` | mapping of `solid`, `dashed`, `dotted` or `thick` to a short meaning | none | A key drawn bottom right that says what each line style means, for example `legend: { dashed: Asynchronous events, dotted: Replication }`. Keys are case-insensitive and rows keep the order you write them. An unknown style (`dashd`) or an empty meaning fails with DG107, and the fix names the closest style. Add an entry for every non-solid style the diagram uses (DG217 warns otherwise). Quote a meaning that contains a comma. |
|
|
47
47
|
|