@cardenelabs/dragon 0.28.0 → 0.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.
- package/README.md +78 -5
- package/dist/index.cjs +9246 -8698
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +186 -66
- package/dist/index.d.ts +186 -66
- package/dist/index.js +9247 -8700
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
- package/src/compile/actor-ids.ts +306 -0
- package/src/compile/actors.ts +74 -0
- package/src/compile/c4.ts +77 -0
- package/src/compile/chain.ts +54 -0
- package/src/compile/chart-fields.ts +178 -0
- package/src/compile/class.ts +100 -0
- package/src/compile/deep-rewrite.ts +30 -0
- package/src/compile/derived-source.ts +18 -0
- package/src/compile/direction.ts +63 -0
- package/src/compile/er-relation.ts +200 -0
- package/src/compile/er.ts +44 -0
- package/src/compile/flow.ts +54 -0
- package/src/compile/funnel.ts +75 -0
- package/src/compile/gantt.ts +232 -0
- package/src/compile/generic.ts +284 -0
- package/src/compile/hierarchy.ts +92 -0
- package/src/compile/journey.ts +84 -0
- package/src/compile/kinds.ts +156 -0
- package/src/compile/lanes.ts +56 -0
- package/src/compile/mind.ts +343 -0
- package/src/compile/node-title.ts +24 -0
- package/src/compile/notice.ts +94 -0
- package/src/compile/parts-lookup.ts +17 -0
- package/src/compile/parts.ts +2635 -0
- package/src/compile/placement-apply.ts +673 -0
- package/src/compile/placement.ts +15 -0
- package/src/compile/quadrant.ts +110 -0
- package/src/compile/rows.ts +40 -0
- package/src/compile/sequence.ts +226 -0
- package/src/compile/slug.ts +29 -0
- package/src/compile/solidity.ts +39 -0
- package/src/compile/state.ts +71 -0
- package/src/compile/subtitle.ts +22 -0
- package/src/compile/swimlane.ts +83 -0
- package/src/compile/topology.ts +50 -0
- package/src/compile/tree.ts +60 -0
- package/src/compile/value-chart.ts +183 -0
- package/src/compile/values.ts +432 -0
- package/src/compile/word-state.ts +82 -0
- package/src/compile.ts +513 -6858
- package/src/index.ts +8 -7
- package/src/json-line-map.ts +30 -0
- package/src/json-parser.ts +356 -123
- package/src/near-name.ts +42 -0
- package/src/relative-pos.ts +71 -2
- package/src/schema.ts +1 -1
- package/src/schemas/diagram.json +38 -4
- package/src/types.ts +1 -1
- package/src/v05/parser.ts +91 -72
package/README.md
CHANGED
|
@@ -65,7 +65,7 @@ flow:
|
|
|
65
65
|
| `eyebrow` | 図全体を 1 箱にする図種で、その箱の上に出す小見出し |
|
|
66
66
|
| `axes` | 2 軸で仕分ける図の軸の名前 |
|
|
67
67
|
| `readouts` | 値を見せる部品 (割合の輪 / 数え上げ / 目盛り) |
|
|
68
|
-
| `inputs` | 読む人が動かすつまみ (すべり / 選び / 入り切り
|
|
68
|
+
| `inputs` | 読む人が動かすつまみ (すべり / 選び / 入り切り など。 書ける種類は、知らない種類を書いた時の知らせが `使える種類 = ...` の形で全て並べる。 選択肢を `{ value, label }` の組で、入り切りを `onLabel` / `offLabel` で書くと、値は綴りのまま名前で描く) |
|
|
69
69
|
| `formulas` | つまみの値から決まる値 (式。 `values` は段が動かす状態を読み、こちらはつまみを読む。 `{ expression, label }` の組で書くと操作部に名札を出す) |
|
|
70
70
|
| `events` | 押下などの出来事で動く仕掛け (相手は名前で指す) |
|
|
71
71
|
| `scrolls` | 巻き上げに応じて進む値 (画面を巻き上げた量から 0 から 1 を作る) |
|
|
@@ -85,7 +85,7 @@ flow:
|
|
|
85
85
|
|
|
86
86
|
| 欄 | 何を書くか |
|
|
87
87
|
| --------------- | ------------------------------------------------------------------------------ |
|
|
88
|
-
| `kind` | 見た目の種別 (`card` / `storage` / `service` / `person` 等、`種類` とも書ける) |
|
|
88
|
+
| `kind` | 見た目の種別 (`card` / `storage` / `service` / `person` 等、`種類` とも書ける)。 種別に無い名前は部品の名前として部品の一覧 (`partsCatalog`) から引き、一覧にも無ければ種別を書かなかった箱になる。 部品を持つ一覧を渡した時は、書いた行に知らせ (`onNotice`) が出て綴りの近い名前を案内する |
|
|
89
89
|
| `subtitle` | 題の下の補足 (`補足` とも書ける) |
|
|
90
90
|
| `eyebrow` | 題の上の小見出し |
|
|
91
91
|
| `value` | 箱に出す値 (`値` とも書ける) |
|
|
@@ -101,7 +101,7 @@ flow:
|
|
|
101
101
|
| `touchpoint` | 体験の道筋で、利用者が触れる場所 |
|
|
102
102
|
| `opportunity` | 体験の道筋で、改善の余地 |
|
|
103
103
|
| `owner` | 工程の並びで、担当 |
|
|
104
|
-
| `end` |
|
|
104
|
+
| `end` | 工程の並びで、終わりの位置。 始まりより前の時期は始まりと同じに倒し、知らせ (`onNotice`) が出る |
|
|
105
105
|
| `posX` | 置く場所の横位置 |
|
|
106
106
|
| `posY` | 置く場所の縦位置 |
|
|
107
107
|
| `posW` | 箱の幅 |
|
|
@@ -131,7 +131,7 @@ flow:
|
|
|
131
131
|
| `sub` | 説明の下の補足 (クラス図では行き先の端の多重度) |
|
|
132
132
|
| `tailSub` | クラス図の出どころ側の多重度 (`1` 等)。 出どころの端の近くに出る |
|
|
133
133
|
| `guard` | 状態遷移の条件 |
|
|
134
|
-
| `cardinality` |
|
|
134
|
+
| `cardinality` | ER 図の関係の多重度 (`1:1` / `1:N` / `N:1` / `N:M` / `0..1` / `1..*`)。 両端の形が語から決まり (`tailHead` / `head` を書けばそちらが勝つ)、語は説明の下の行に出る。 6 語以外の語と、ER 図以外に書いた多重度は端の形にならず、知らせ (`onNotice`) が出る |
|
|
135
135
|
| `widthBind` | 線の太さを値に追随させる (状態やつまみの名前を `{名前}` の形で書く) |
|
|
136
136
|
| `strokeBind` | 線の色を値に追随させる (`widthBind` と同じ読み方) |
|
|
137
137
|
| `dashOffsetBind` | 破線の位置を値に追随させる (流れているように見せる) |
|
|
@@ -223,6 +223,78 @@ flow:
|
|
|
223
223
|
部品の中の要素どうしが間隔の検査に掛からない。 頁の配置が使えない部品だけは、部品に書いた縦列の位置と
|
|
224
224
|
段の番号で置く。
|
|
225
225
|
|
|
226
|
+
### 段の `focus:` で部品の全体か中の 1 つを光らせる
|
|
227
|
+
|
|
228
|
+
段の `focus:` に部品の名前を書くと、部品の要素と部品の中の線が全て光る。
|
|
229
|
+
中の 1 つだけを光らせる時は `{部品の名前}__{要素の id}` か `{部品の名前}__{中の線の id}` を書く。
|
|
230
|
+
要素の id は矢印の `fromPartNode` / `toPartNode` に書く id と同じ。
|
|
231
|
+
|
|
232
|
+
```yaml
|
|
233
|
+
title: "注文を 2 つの窓口へ分ける"
|
|
234
|
+
type: swimlane
|
|
235
|
+
|
|
236
|
+
actors:
|
|
237
|
+
- 受注: { kind: card }
|
|
238
|
+
- split: { kind: split-router, phase: false }
|
|
239
|
+
|
|
240
|
+
flow:
|
|
241
|
+
- 受注 -> split: "注文" { toPartNode: inP }
|
|
242
|
+
|
|
243
|
+
animation:
|
|
244
|
+
- step: "注文が入る" 1.2s
|
|
245
|
+
focus: [split__inP]
|
|
246
|
+
- step: "A へ渡す" 1.2s
|
|
247
|
+
focus: [split__outA, split__sr-a]
|
|
248
|
+
- step: "まとめて見せる" 1.2s
|
|
249
|
+
focus: [split]
|
|
250
|
+
```
|
|
251
|
+
|
|
252
|
+
| 段 | 光る所 |
|
|
253
|
+
|---|---|
|
|
254
|
+
| 注文が入る | 振り分け器の入口 (`inP`) だけ |
|
|
255
|
+
| A へ渡す | 出口 A (`outA`) と、入口から出口 A への中の線 (`sr-a`) |
|
|
256
|
+
| まとめて見せる | 振り分け器の要素と中の線の全て |
|
|
257
|
+
|
|
258
|
+
部品に無い名前を書くと何も光らず、知らせ (`focus-target-missing`) が部品の要素と中の線の名前を案内する。
|
|
259
|
+
部品の名前そのものが `__` を含む時は、一番長く一致する部品の名前で読む。
|
|
260
|
+
|
|
261
|
+
### 順序図の段は `focus:` で強調する言づてを選ぶ
|
|
262
|
+
|
|
263
|
+
`sequence` / `solidity` の図は 1 枚の板に言づてを行で並べる。 段ごとに 1 通を強調し、それより前は
|
|
264
|
+
描き済みとして残し、後ろは隠す。 どの言づてを強調するかは段の `focus:` から決まる。
|
|
265
|
+
|
|
266
|
+
| `focus:` に書いたもの | 合う言づて |
|
|
267
|
+
|---|---|
|
|
268
|
+
| 矢印 `A -> B` | 元が A で先が B |
|
|
269
|
+
| 箱の名前 2 つ以上 | 元と先の両方が書いた箱に含まれる |
|
|
270
|
+
| 箱の名前 1 つ | 元か先がその箱 |
|
|
271
|
+
|
|
272
|
+
矢印を 1 本でも書いた段は、矢印だけで言づてを選ぶ。 同じ段の箱の名前は数えない。
|
|
273
|
+
|
|
274
|
+
言づては先頭から段の数に切り分け、各段が続きの言づてを受け持つ。 切り分けは次の順に良いものを選ぶ。
|
|
275
|
+
|
|
276
|
+
1. 合う言づてを持つ段が多い (どの段も板を進める)
|
|
277
|
+
2. 段に合う言づての数が多い
|
|
278
|
+
3. 2 つの段に合う言づてを、図全体で合う言づてが少ない段 (狭く指した段) に置く
|
|
279
|
+
|
|
280
|
+
段はその区間で合う最後の言づてを強調する。 合う言づてが無い段は前の段の強調を保つ。
|
|
281
|
+
|
|
282
|
+
```yaml
|
|
283
|
+
flow:
|
|
284
|
+
- 利用者 -> 認証窓口: "POST 認証情報"
|
|
285
|
+
- 認証窓口 -> DB: "照合"
|
|
286
|
+
- 認証窓口 -> 利用者: "JWT を発行"
|
|
287
|
+
|
|
288
|
+
animation:
|
|
289
|
+
- step: "照合" 1.5s
|
|
290
|
+
focus: [利用者, 認証窓口, DB] # 1-2 通目を束ね、「照合」 を強調する
|
|
291
|
+
- step: "発行" 1.0s
|
|
292
|
+
focus: [認証窓口, 利用者] # 3 通目を強調する
|
|
293
|
+
```
|
|
294
|
+
|
|
295
|
+
段の題と強調する言づてを確実に揃えたい時は、矢印で書く。 同じ 2 者の矢印が続く時は、同じ矢印を段の数だけ
|
|
296
|
+
並べれば 1 通ずつ進む。
|
|
297
|
+
|
|
226
298
|
## API
|
|
227
299
|
|
|
228
300
|
**Text DSL (人向け YAML)**
|
|
@@ -233,7 +305,8 @@ flow:
|
|
|
233
305
|
|
|
234
306
|
**JSON DSL (LLM 向け)**
|
|
235
307
|
|
|
236
|
-
- `jsonToDiagram(json: unknown): CdlDiagram` ... JSON DSL → CdlDiagram、 validation error は throw
|
|
308
|
+
- `jsonToDiagram(json: unknown, opts?): CdlDiagram` ... JSON DSL → CdlDiagram、 validation error は throw。 `opts` は部品の一覧 (`partsCatalog`)、 書いた通りにならなかったことの受け取り口 (`onNotice`)、 書いた場所から行を引く表 (`行の表`) の 3 つ
|
|
309
|
+
- `書いた場所の鍵(...道): string` ... `行の表` の鍵を作る (`書いた場所の鍵("actors", 1)` が `/actors/1`)。 本文の行が分かる入口 (編集画面の YAML 欄) が表を作る時に使い、`jsonToDiagram` が同じ関数で引く
|
|
237
310
|
- `validateDragonJson(json: unknown): { ok, data | errors }` ... compile なしで validation のみ
|
|
238
311
|
- `diagramJsonSchema` ... JSON Schema (Draft 7)、 LLM の tool schema にそのまま注入可能
|
|
239
312
|
|