@cardenelabs/dragon 0.14.0 → 0.15.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/dist/index.d.cts CHANGED
@@ -1,4 +1,136 @@
1
1
  import { CdlDiagram, NodeKind, Tone, EdgeStyle, LaidDiagram } from '@cardenelabs/cdl';
2
+ export { CdlDiagram } from '@cardenelabs/cdl';
3
+
4
+ /**
5
+ * Text DSL v0.5 parser
6
+ *
7
+ * 設計方針:
8
+ * - keyword は英語のみ (title / type / actors / flow / states / animation / step / focus / tween / set / badge)
9
+ * - 値の日本語は quote 必須 (`title: "API call"` / `step: "request" 1.5s`)
10
+ * - YAML 風 + 短縮 keyword + 箇条書き構造
11
+ * - Mermaid 知ってる人にもゼロ学習、 非エンジニアにも直感的
12
+ *
13
+ * syntax 例:
14
+ *
15
+ * title: "API call"
16
+ * type: sequence
17
+ *
18
+ * actors:
19
+ * - Client
20
+ * - API: function
21
+ * - DB
22
+ *
23
+ * flow:
24
+ * - Client -> API: "GET /items"
25
+ * - API -> DB: "SELECT" (success)
26
+ *
27
+ * states:
28
+ * request_count: 0
29
+ * row_count: 0
30
+ *
31
+ * animation:
32
+ * - step: "request" 1.5s
33
+ * focus: [Client, API]
34
+ * tween:
35
+ * request_count: 0 -> 1
36
+ * badge: "request"
37
+ *
38
+ * - step: "query" 1.5s
39
+ * focus: [API, DB]
40
+ * tween:
41
+ * row_count: 0 -> 20
42
+ * badge: "query"
43
+ *
44
+ * 出力は v0.4 と同じ DslDocument。 既存 compile.ts で CdlDiagram に変換できる。
45
+ */
46
+
47
+ type V05ParseResult = {
48
+ ok: true;
49
+ doc: DslDocument;
50
+ } | {
51
+ ok: false;
52
+ errors: DslError[];
53
+ };
54
+ /**
55
+ * 記法が受ける top-level の項目 (#1190)。
56
+ *
57
+ * 読めない行の案内と、記法一覧が全て載せているかの検査が、どちらもここを見る。 一覧に手で
58
+ * 書くと、項目を足した時に案内か一覧のどちらかが取り残される (実際に `states` / `values` が
59
+ * 一覧に 1 件も無い状態で放置されていた)。
60
+ */
61
+ declare const TOP_LEVEL_KEYS: readonly ["title", "type", "actors", "flow", "states", "values", "animation", "viewport", "lanes", "groups", "eyebrow", "axes", "readouts", "inputs", "formulas", "events", "scrolls"];
62
+ /** 受け付ける図種。 記法一覧はここを見る。 */
63
+ declare const PRESET_TYPES: ReadonlySet<PresetType>;
64
+ /**
65
+ * 記法だけが持つ種類。 描画側には無いが、 図種ごとの組み立てで意味を持つ。
66
+ *
67
+ * `contract` / `eoa` / `multisig` / `proxy` / `library` / `interface` は Solidity 図の
68
+ * 役割分けに、 `entity` / `state` は ER 図と状態遷移図に使う。
69
+ *
70
+ * **描画側へ渡す前に必ず読み替える** (`compile.ts` の `描ける種別`)。 読み替えを通さずに渡すと
71
+ * 図の組み立てが落ちる = 描画側は知らない種類の大きさを引けない (#1420 で実測、
72
+ * `Cannot read properties of undefined (reading 'h')`)。
73
+ */
74
+ declare const DSL_ONLY_KINDS: readonly ["entity", "state", "contract", "eoa", "multisig", "proxy", "library", "interface"];
75
+ /** 記法だけが持つ種類。 描画側の `NodeKind` には含まれない */
76
+ type DslOnlyKind = (typeof DSL_ONLY_KINDS)[number];
77
+ /**
78
+ * 受け付ける箱の種類。 描画できる種類 (cdl の `NODE_KINDS`) に、 記法だけが持つ種類を足す。
79
+ *
80
+ * 以前は手書きの 31 種だった。 描画できる 90 種のうち 78 種が記法から書けず、 部品名として
81
+ * 扱われて「そんな部品は無い」 と警告が出るだけだった。 描画側を出所に加えることで
82
+ * 「描画できるものは書ける」 が成立する。
83
+ */
84
+ /**
85
+ * 記法が受理する種類の全体。 これに載っていない種類は見本 (パーツ) の候補になる。
86
+ *
87
+ * 画面側が「本文が見本を使っているか」 を判定するのに使う (#1022)。 手書きの一覧を
88
+ * 別に持つと、種類が増えた時にそちらだけ取り残されて余分な読み込みが起きる。
89
+ */
90
+ declare const NODE_KIND_VALID: ReadonlySet<string>;
91
+ declare function parseTextDslV05(src: string): V05ParseResult;
92
+ /**
93
+ * 対応する引用符だけを外す。
94
+ *
95
+ * 先頭と末尾を別々に外すと、対応しない形 (`'300,200"`) が中身だけ取り出せてしまう。
96
+ * 画面側も同じ関数を使う (#1028) = 別々に持つと、片方だけが読める本文ができる。
97
+ */
98
+ declare function stripQuotes(s: string): string;
99
+ /**
100
+ * 段に書ける項目の英語名。 `parsePhase` が受け付ける名前の入口でも使う。
101
+ *
102
+ * 誤りの案内で使うほか、**見本が値の名前にこの語を使っていないか** を見るのにも使う
103
+ * (#1330)。 段の項目と値は階層が違うので衝突しないが、同じ語が 2 つの意味で並ぶと
104
+ * 見本を読む人が階層から意味を判断することになる。
105
+ */
106
+ declare const PHASE_ITEM_WORDS: readonly ["focus", "badge", "body", "description", "tween", "set", "draw"];
107
+ /**
108
+ * `draw:` に書ける語と、その語が効く図種 (#1312 / #1314)。
109
+ *
110
+ * **語と図種の対応をここ 1 箇所で持つ**。 受ける語の一覧 (`DRAW_WORDS`) も、組み立て側が見る
111
+ * 図種の一覧 (`DRAWABLE_DOC_TYPES`) も、この表から導く。 3 つを別々に並べると、語を足した時に
112
+ * どれかが古いまま残る (#1310 / #1304 で 3 度直した形)。
113
+ *
114
+ * | 語 | 図種 | 起点 |
115
+ * |---|---|---|
116
+ * | `line` | `line` | 左端から右へ線が伸びる |
117
+ * | `bar` | `bar` | 横軸から上へ棒が伸びる |
118
+ * | `pie` | `pie` | 12 時から時計回りに扇が開く |
119
+ * | `journey` | `journey` | 左端から右へ気持ちの線が伸びる |
120
+ * | `mind` | `mind` | 中心から外へ枝が伸びる |
121
+ * | `tree` | `tree` | 根から下へ枝が伸びる |
122
+ * | `gantt` | `gantt` | 各帯の始端から右へ帯が伸びる |
123
+ * | `funnel` | `funnel` | 上端から順に段が積まれる |
124
+ *
125
+ * `quadrant` は入れない。 4 つの区画に項目を置く図で **項目に順序が無く**、起点を決められない
126
+ * (順番を書いた順で決めると、動きが図の意味を持たない)。
127
+ *
128
+ * いまは語と図種が同じ綴りだが、**同じものとして扱わない**。 語は書き手が書く名前で、
129
+ * 図種は `type:` が取る値。 片方だけ別名を足したくなった時に、対応が表に残っている形にする。
130
+ */
131
+ declare const DRAW_TARGETS: ReadonlyMap<string, PresetType>;
132
+ /** `draw:` に書ける語。 表から導く (#1314) */
133
+ declare const DRAW_WORDS: ReadonlySet<string>;
2
134
 
3
135
  /**
4
136
  * 位置を他の要素からの相対で書くための解決。
@@ -82,6 +214,17 @@ declare function orderByDependency(items: ReadonlyArray<{
82
214
  * docs/cdl/text-dsl-spec.md の文法を AST に変換した中間表現
83
215
  */
84
216
 
217
+ /**
218
+ * 記法が書ける箱の種類 (#1420)。
219
+ *
220
+ * 描画できる種類 (`NodeKind`) に、**記法だけが持つ種類** (`contract` / `eoa` など) を足す。
221
+ * 後者は図種ごとの役割分け (`solidity` の縦列の並べ替えなど) に使い、描画側へ渡す手前で
222
+ * `compile.ts` の `描ける種別` が読み替える。
223
+ *
224
+ * `NodeKind` だけに縛っていた間、記法が受ける値を型が表せていなかった。
225
+ */
226
+ type DslNodeKind = NodeKind | DslOnlyKind;
227
+
85
228
  /**
86
229
  * 箱の中に描く図形 (#1374)。 **描画側の型をそのまま使う**。
87
230
  *
@@ -250,7 +393,7 @@ type DslAxes = {
250
393
  /** 登場人物 (v0.5+ ... inline option 拡張) */
251
394
  type DslActor = {
252
395
  name: string;
253
- kind: NodeKind;
396
+ kind: DslNodeKind;
254
397
  /**
255
398
  * 著者が種類を書いたか。 書かなかった時 `kind` には既定の `actor` が入るため、
256
399
  * `kind` の値だけでは「書いた `actor`」 と「書かなかった」 を区別できない。
@@ -861,124 +1004,6 @@ declare function partsGridCenters(baseNodeCount: number, items: ReadonlyArray<{
861
1004
  cy: number;
862
1005
  }>;
863
1006
 
864
- /**
865
- * Text DSL v0.5 parser
866
- *
867
- * 設計方針:
868
- * - keyword は英語のみ (title / type / actors / flow / states / animation / step / focus / tween / set / badge)
869
- * - 値の日本語は quote 必須 (`title: "API call"` / `step: "request" 1.5s`)
870
- * - YAML 風 + 短縮 keyword + 箇条書き構造
871
- * - Mermaid 知ってる人にもゼロ学習、 非エンジニアにも直感的
872
- *
873
- * syntax 例:
874
- *
875
- * title: "API call"
876
- * type: sequence
877
- *
878
- * actors:
879
- * - Client
880
- * - API: function
881
- * - DB
882
- *
883
- * flow:
884
- * - Client -> API: "GET /items"
885
- * - API -> DB: "SELECT" (success)
886
- *
887
- * states:
888
- * request_count: 0
889
- * row_count: 0
890
- *
891
- * animation:
892
- * - step: "request" 1.5s
893
- * focus: [Client, API]
894
- * tween:
895
- * request_count: 0 -> 1
896
- * badge: "request"
897
- *
898
- * - step: "query" 1.5s
899
- * focus: [API, DB]
900
- * tween:
901
- * row_count: 0 -> 20
902
- * badge: "query"
903
- *
904
- * 出力は v0.4 と同じ DslDocument。 既存 compile.ts で CdlDiagram に変換できる。
905
- */
906
-
907
- type V05ParseResult = {
908
- ok: true;
909
- doc: DslDocument;
910
- } | {
911
- ok: false;
912
- errors: DslError[];
913
- };
914
- /**
915
- * 記法が受ける top-level の項目 (#1190)。
916
- *
917
- * 読めない行の案内と、記法一覧が全て載せているかの検査が、どちらもここを見る。 一覧に手で
918
- * 書くと、項目を足した時に案内か一覧のどちらかが取り残される (実際に `states` / `values` が
919
- * 一覧に 1 件も無い状態で放置されていた)。
920
- */
921
- declare const TOP_LEVEL_KEYS: readonly ["title", "type", "actors", "flow", "states", "values", "animation", "viewport", "lanes", "groups", "eyebrow", "axes", "readouts", "inputs", "formulas", "events", "scrolls"];
922
- /** 受け付ける図種。 記法一覧はここを見る。 */
923
- declare const PRESET_TYPES: ReadonlySet<PresetType>;
924
- /**
925
- * 受け付ける箱の種類。 描画できる種類 (cdl の `NODE_KINDS`) に、 記法だけが持つ種類を足す。
926
- *
927
- * 以前は手書きの 31 種だった。 描画できる 90 種のうち 78 種が記法から書けず、 部品名として
928
- * 扱われて「そんな部品は無い」 と警告が出るだけだった。 描画側を出所に加えることで
929
- * 「描画できるものは書ける」 が成立する。
930
- */
931
- /**
932
- * 記法が受理する種類の全体。 これに載っていない種類は見本 (パーツ) の候補になる。
933
- *
934
- * 画面側が「本文が見本を使っているか」 を判定するのに使う (#1022)。 手書きの一覧を
935
- * 別に持つと、種類が増えた時にそちらだけ取り残されて余分な読み込みが起きる。
936
- */
937
- declare const NODE_KIND_VALID: ReadonlySet<string>;
938
- declare function parseTextDslV05(src: string): V05ParseResult;
939
- /**
940
- * 対応する引用符だけを外す。
941
- *
942
- * 先頭と末尾を別々に外すと、対応しない形 (`'300,200"`) が中身だけ取り出せてしまう。
943
- * 画面側も同じ関数を使う (#1028) = 別々に持つと、片方だけが読める本文ができる。
944
- */
945
- declare function stripQuotes(s: string): string;
946
- /**
947
- * 段に書ける項目の英語名。 `parsePhase` が受け付ける名前の入口でも使う。
948
- *
949
- * 誤りの案内で使うほか、**見本が値の名前にこの語を使っていないか** を見るのにも使う
950
- * (#1330)。 段の項目と値は階層が違うので衝突しないが、同じ語が 2 つの意味で並ぶと
951
- * 見本を読む人が階層から意味を判断することになる。
952
- */
953
- declare const PHASE_ITEM_WORDS: readonly ["focus", "badge", "body", "description", "tween", "set", "draw"];
954
- /**
955
- * `draw:` に書ける語と、その語が効く図種 (#1312 / #1314)。
956
- *
957
- * **語と図種の対応をここ 1 箇所で持つ**。 受ける語の一覧 (`DRAW_WORDS`) も、組み立て側が見る
958
- * 図種の一覧 (`DRAWABLE_DOC_TYPES`) も、この表から導く。 3 つを別々に並べると、語を足した時に
959
- * どれかが古いまま残る (#1310 / #1304 で 3 度直した形)。
960
- *
961
- * | 語 | 図種 | 起点 |
962
- * |---|---|---|
963
- * | `line` | `line` | 左端から右へ線が伸びる |
964
- * | `bar` | `bar` | 横軸から上へ棒が伸びる |
965
- * | `pie` | `pie` | 12 時から時計回りに扇が開く |
966
- * | `journey` | `journey` | 左端から右へ気持ちの線が伸びる |
967
- * | `mind` | `mind` | 中心から外へ枝が伸びる |
968
- * | `tree` | `tree` | 根から下へ枝が伸びる |
969
- * | `gantt` | `gantt` | 各帯の始端から右へ帯が伸びる |
970
- * | `funnel` | `funnel` | 上端から順に段が積まれる |
971
- *
972
- * `quadrant` は入れない。 4 つの区画に項目を置く図で **項目に順序が無く**、起点を決められない
973
- * (順番を書いた順で決めると、動きが図の意味を持たない)。
974
- *
975
- * いまは語と図種が同じ綴りだが、**同じものとして扱わない**。 語は書き手が書く名前で、
976
- * 図種は `type:` が取る値。 片方だけ別名を足したくなった時に、対応が表に残っている形にする。
977
- */
978
- declare const DRAW_TARGETS: ReadonlyMap<string, PresetType>;
979
- /** `draw:` に書ける語。 表から導く (#1314) */
980
- declare const DRAW_WORDS: ReadonlySet<string>;
981
-
982
1007
  /**
983
1008
  * Text DSL i18n キーワード一覧
984
1009
  * 日本語 / 英語両対応 (大文字小文字無視)
package/dist/index.d.ts CHANGED
@@ -1,4 +1,136 @@
1
1
  import { CdlDiagram, NodeKind, Tone, EdgeStyle, LaidDiagram } from '@cardenelabs/cdl';
2
+ export { CdlDiagram } from '@cardenelabs/cdl';
3
+
4
+ /**
5
+ * Text DSL v0.5 parser
6
+ *
7
+ * 設計方針:
8
+ * - keyword は英語のみ (title / type / actors / flow / states / animation / step / focus / tween / set / badge)
9
+ * - 値の日本語は quote 必須 (`title: "API call"` / `step: "request" 1.5s`)
10
+ * - YAML 風 + 短縮 keyword + 箇条書き構造
11
+ * - Mermaid 知ってる人にもゼロ学習、 非エンジニアにも直感的
12
+ *
13
+ * syntax 例:
14
+ *
15
+ * title: "API call"
16
+ * type: sequence
17
+ *
18
+ * actors:
19
+ * - Client
20
+ * - API: function
21
+ * - DB
22
+ *
23
+ * flow:
24
+ * - Client -> API: "GET /items"
25
+ * - API -> DB: "SELECT" (success)
26
+ *
27
+ * states:
28
+ * request_count: 0
29
+ * row_count: 0
30
+ *
31
+ * animation:
32
+ * - step: "request" 1.5s
33
+ * focus: [Client, API]
34
+ * tween:
35
+ * request_count: 0 -> 1
36
+ * badge: "request"
37
+ *
38
+ * - step: "query" 1.5s
39
+ * focus: [API, DB]
40
+ * tween:
41
+ * row_count: 0 -> 20
42
+ * badge: "query"
43
+ *
44
+ * 出力は v0.4 と同じ DslDocument。 既存 compile.ts で CdlDiagram に変換できる。
45
+ */
46
+
47
+ type V05ParseResult = {
48
+ ok: true;
49
+ doc: DslDocument;
50
+ } | {
51
+ ok: false;
52
+ errors: DslError[];
53
+ };
54
+ /**
55
+ * 記法が受ける top-level の項目 (#1190)。
56
+ *
57
+ * 読めない行の案内と、記法一覧が全て載せているかの検査が、どちらもここを見る。 一覧に手で
58
+ * 書くと、項目を足した時に案内か一覧のどちらかが取り残される (実際に `states` / `values` が
59
+ * 一覧に 1 件も無い状態で放置されていた)。
60
+ */
61
+ declare const TOP_LEVEL_KEYS: readonly ["title", "type", "actors", "flow", "states", "values", "animation", "viewport", "lanes", "groups", "eyebrow", "axes", "readouts", "inputs", "formulas", "events", "scrolls"];
62
+ /** 受け付ける図種。 記法一覧はここを見る。 */
63
+ declare const PRESET_TYPES: ReadonlySet<PresetType>;
64
+ /**
65
+ * 記法だけが持つ種類。 描画側には無いが、 図種ごとの組み立てで意味を持つ。
66
+ *
67
+ * `contract` / `eoa` / `multisig` / `proxy` / `library` / `interface` は Solidity 図の
68
+ * 役割分けに、 `entity` / `state` は ER 図と状態遷移図に使う。
69
+ *
70
+ * **描画側へ渡す前に必ず読み替える** (`compile.ts` の `描ける種別`)。 読み替えを通さずに渡すと
71
+ * 図の組み立てが落ちる = 描画側は知らない種類の大きさを引けない (#1420 で実測、
72
+ * `Cannot read properties of undefined (reading 'h')`)。
73
+ */
74
+ declare const DSL_ONLY_KINDS: readonly ["entity", "state", "contract", "eoa", "multisig", "proxy", "library", "interface"];
75
+ /** 記法だけが持つ種類。 描画側の `NodeKind` には含まれない */
76
+ type DslOnlyKind = (typeof DSL_ONLY_KINDS)[number];
77
+ /**
78
+ * 受け付ける箱の種類。 描画できる種類 (cdl の `NODE_KINDS`) に、 記法だけが持つ種類を足す。
79
+ *
80
+ * 以前は手書きの 31 種だった。 描画できる 90 種のうち 78 種が記法から書けず、 部品名として
81
+ * 扱われて「そんな部品は無い」 と警告が出るだけだった。 描画側を出所に加えることで
82
+ * 「描画できるものは書ける」 が成立する。
83
+ */
84
+ /**
85
+ * 記法が受理する種類の全体。 これに載っていない種類は見本 (パーツ) の候補になる。
86
+ *
87
+ * 画面側が「本文が見本を使っているか」 を判定するのに使う (#1022)。 手書きの一覧を
88
+ * 別に持つと、種類が増えた時にそちらだけ取り残されて余分な読み込みが起きる。
89
+ */
90
+ declare const NODE_KIND_VALID: ReadonlySet<string>;
91
+ declare function parseTextDslV05(src: string): V05ParseResult;
92
+ /**
93
+ * 対応する引用符だけを外す。
94
+ *
95
+ * 先頭と末尾を別々に外すと、対応しない形 (`'300,200"`) が中身だけ取り出せてしまう。
96
+ * 画面側も同じ関数を使う (#1028) = 別々に持つと、片方だけが読める本文ができる。
97
+ */
98
+ declare function stripQuotes(s: string): string;
99
+ /**
100
+ * 段に書ける項目の英語名。 `parsePhase` が受け付ける名前の入口でも使う。
101
+ *
102
+ * 誤りの案内で使うほか、**見本が値の名前にこの語を使っていないか** を見るのにも使う
103
+ * (#1330)。 段の項目と値は階層が違うので衝突しないが、同じ語が 2 つの意味で並ぶと
104
+ * 見本を読む人が階層から意味を判断することになる。
105
+ */
106
+ declare const PHASE_ITEM_WORDS: readonly ["focus", "badge", "body", "description", "tween", "set", "draw"];
107
+ /**
108
+ * `draw:` に書ける語と、その語が効く図種 (#1312 / #1314)。
109
+ *
110
+ * **語と図種の対応をここ 1 箇所で持つ**。 受ける語の一覧 (`DRAW_WORDS`) も、組み立て側が見る
111
+ * 図種の一覧 (`DRAWABLE_DOC_TYPES`) も、この表から導く。 3 つを別々に並べると、語を足した時に
112
+ * どれかが古いまま残る (#1310 / #1304 で 3 度直した形)。
113
+ *
114
+ * | 語 | 図種 | 起点 |
115
+ * |---|---|---|
116
+ * | `line` | `line` | 左端から右へ線が伸びる |
117
+ * | `bar` | `bar` | 横軸から上へ棒が伸びる |
118
+ * | `pie` | `pie` | 12 時から時計回りに扇が開く |
119
+ * | `journey` | `journey` | 左端から右へ気持ちの線が伸びる |
120
+ * | `mind` | `mind` | 中心から外へ枝が伸びる |
121
+ * | `tree` | `tree` | 根から下へ枝が伸びる |
122
+ * | `gantt` | `gantt` | 各帯の始端から右へ帯が伸びる |
123
+ * | `funnel` | `funnel` | 上端から順に段が積まれる |
124
+ *
125
+ * `quadrant` は入れない。 4 つの区画に項目を置く図で **項目に順序が無く**、起点を決められない
126
+ * (順番を書いた順で決めると、動きが図の意味を持たない)。
127
+ *
128
+ * いまは語と図種が同じ綴りだが、**同じものとして扱わない**。 語は書き手が書く名前で、
129
+ * 図種は `type:` が取る値。 片方だけ別名を足したくなった時に、対応が表に残っている形にする。
130
+ */
131
+ declare const DRAW_TARGETS: ReadonlyMap<string, PresetType>;
132
+ /** `draw:` に書ける語。 表から導く (#1314) */
133
+ declare const DRAW_WORDS: ReadonlySet<string>;
2
134
 
3
135
  /**
4
136
  * 位置を他の要素からの相対で書くための解決。
@@ -82,6 +214,17 @@ declare function orderByDependency(items: ReadonlyArray<{
82
214
  * docs/cdl/text-dsl-spec.md の文法を AST に変換した中間表現
83
215
  */
84
216
 
217
+ /**
218
+ * 記法が書ける箱の種類 (#1420)。
219
+ *
220
+ * 描画できる種類 (`NodeKind`) に、**記法だけが持つ種類** (`contract` / `eoa` など) を足す。
221
+ * 後者は図種ごとの役割分け (`solidity` の縦列の並べ替えなど) に使い、描画側へ渡す手前で
222
+ * `compile.ts` の `描ける種別` が読み替える。
223
+ *
224
+ * `NodeKind` だけに縛っていた間、記法が受ける値を型が表せていなかった。
225
+ */
226
+ type DslNodeKind = NodeKind | DslOnlyKind;
227
+
85
228
  /**
86
229
  * 箱の中に描く図形 (#1374)。 **描画側の型をそのまま使う**。
87
230
  *
@@ -250,7 +393,7 @@ type DslAxes = {
250
393
  /** 登場人物 (v0.5+ ... inline option 拡張) */
251
394
  type DslActor = {
252
395
  name: string;
253
- kind: NodeKind;
396
+ kind: DslNodeKind;
254
397
  /**
255
398
  * 著者が種類を書いたか。 書かなかった時 `kind` には既定の `actor` が入るため、
256
399
  * `kind` の値だけでは「書いた `actor`」 と「書かなかった」 を区別できない。
@@ -861,124 +1004,6 @@ declare function partsGridCenters(baseNodeCount: number, items: ReadonlyArray<{
861
1004
  cy: number;
862
1005
  }>;
863
1006
 
864
- /**
865
- * Text DSL v0.5 parser
866
- *
867
- * 設計方針:
868
- * - keyword は英語のみ (title / type / actors / flow / states / animation / step / focus / tween / set / badge)
869
- * - 値の日本語は quote 必須 (`title: "API call"` / `step: "request" 1.5s`)
870
- * - YAML 風 + 短縮 keyword + 箇条書き構造
871
- * - Mermaid 知ってる人にもゼロ学習、 非エンジニアにも直感的
872
- *
873
- * syntax 例:
874
- *
875
- * title: "API call"
876
- * type: sequence
877
- *
878
- * actors:
879
- * - Client
880
- * - API: function
881
- * - DB
882
- *
883
- * flow:
884
- * - Client -> API: "GET /items"
885
- * - API -> DB: "SELECT" (success)
886
- *
887
- * states:
888
- * request_count: 0
889
- * row_count: 0
890
- *
891
- * animation:
892
- * - step: "request" 1.5s
893
- * focus: [Client, API]
894
- * tween:
895
- * request_count: 0 -> 1
896
- * badge: "request"
897
- *
898
- * - step: "query" 1.5s
899
- * focus: [API, DB]
900
- * tween:
901
- * row_count: 0 -> 20
902
- * badge: "query"
903
- *
904
- * 出力は v0.4 と同じ DslDocument。 既存 compile.ts で CdlDiagram に変換できる。
905
- */
906
-
907
- type V05ParseResult = {
908
- ok: true;
909
- doc: DslDocument;
910
- } | {
911
- ok: false;
912
- errors: DslError[];
913
- };
914
- /**
915
- * 記法が受ける top-level の項目 (#1190)。
916
- *
917
- * 読めない行の案内と、記法一覧が全て載せているかの検査が、どちらもここを見る。 一覧に手で
918
- * 書くと、項目を足した時に案内か一覧のどちらかが取り残される (実際に `states` / `values` が
919
- * 一覧に 1 件も無い状態で放置されていた)。
920
- */
921
- declare const TOP_LEVEL_KEYS: readonly ["title", "type", "actors", "flow", "states", "values", "animation", "viewport", "lanes", "groups", "eyebrow", "axes", "readouts", "inputs", "formulas", "events", "scrolls"];
922
- /** 受け付ける図種。 記法一覧はここを見る。 */
923
- declare const PRESET_TYPES: ReadonlySet<PresetType>;
924
- /**
925
- * 受け付ける箱の種類。 描画できる種類 (cdl の `NODE_KINDS`) に、 記法だけが持つ種類を足す。
926
- *
927
- * 以前は手書きの 31 種だった。 描画できる 90 種のうち 78 種が記法から書けず、 部品名として
928
- * 扱われて「そんな部品は無い」 と警告が出るだけだった。 描画側を出所に加えることで
929
- * 「描画できるものは書ける」 が成立する。
930
- */
931
- /**
932
- * 記法が受理する種類の全体。 これに載っていない種類は見本 (パーツ) の候補になる。
933
- *
934
- * 画面側が「本文が見本を使っているか」 を判定するのに使う (#1022)。 手書きの一覧を
935
- * 別に持つと、種類が増えた時にそちらだけ取り残されて余分な読み込みが起きる。
936
- */
937
- declare const NODE_KIND_VALID: ReadonlySet<string>;
938
- declare function parseTextDslV05(src: string): V05ParseResult;
939
- /**
940
- * 対応する引用符だけを外す。
941
- *
942
- * 先頭と末尾を別々に外すと、対応しない形 (`'300,200"`) が中身だけ取り出せてしまう。
943
- * 画面側も同じ関数を使う (#1028) = 別々に持つと、片方だけが読める本文ができる。
944
- */
945
- declare function stripQuotes(s: string): string;
946
- /**
947
- * 段に書ける項目の英語名。 `parsePhase` が受け付ける名前の入口でも使う。
948
- *
949
- * 誤りの案内で使うほか、**見本が値の名前にこの語を使っていないか** を見るのにも使う
950
- * (#1330)。 段の項目と値は階層が違うので衝突しないが、同じ語が 2 つの意味で並ぶと
951
- * 見本を読む人が階層から意味を判断することになる。
952
- */
953
- declare const PHASE_ITEM_WORDS: readonly ["focus", "badge", "body", "description", "tween", "set", "draw"];
954
- /**
955
- * `draw:` に書ける語と、その語が効く図種 (#1312 / #1314)。
956
- *
957
- * **語と図種の対応をここ 1 箇所で持つ**。 受ける語の一覧 (`DRAW_WORDS`) も、組み立て側が見る
958
- * 図種の一覧 (`DRAWABLE_DOC_TYPES`) も、この表から導く。 3 つを別々に並べると、語を足した時に
959
- * どれかが古いまま残る (#1310 / #1304 で 3 度直した形)。
960
- *
961
- * | 語 | 図種 | 起点 |
962
- * |---|---|---|
963
- * | `line` | `line` | 左端から右へ線が伸びる |
964
- * | `bar` | `bar` | 横軸から上へ棒が伸びる |
965
- * | `pie` | `pie` | 12 時から時計回りに扇が開く |
966
- * | `journey` | `journey` | 左端から右へ気持ちの線が伸びる |
967
- * | `mind` | `mind` | 中心から外へ枝が伸びる |
968
- * | `tree` | `tree` | 根から下へ枝が伸びる |
969
- * | `gantt` | `gantt` | 各帯の始端から右へ帯が伸びる |
970
- * | `funnel` | `funnel` | 上端から順に段が積まれる |
971
- *
972
- * `quadrant` は入れない。 4 つの区画に項目を置く図で **項目に順序が無く**、起点を決められない
973
- * (順番を書いた順で決めると、動きが図の意味を持たない)。
974
- *
975
- * いまは語と図種が同じ綴りだが、**同じものとして扱わない**。 語は書き手が書く名前で、
976
- * 図種は `type:` が取る値。 片方だけ別名を足したくなった時に、対応が表に残っている形にする。
977
- */
978
- declare const DRAW_TARGETS: ReadonlyMap<string, PresetType>;
979
- /** `draw:` に書ける語。 表から導く (#1314) */
980
- declare const DRAW_WORDS: ReadonlySet<string>;
981
-
982
1007
  /**
983
1008
  * Text DSL i18n キーワード一覧
984
1009
  * 日本語 / 英語両対応 (大文字小文字無視)
package/dist/index.js CHANGED
@@ -4752,6 +4752,21 @@ function describeOversizeSource(src) {
4752
4752
  }
4753
4753
 
4754
4754
  // src/compile.ts
4755
+ var \u8A18\u6CD5\u3060\u3051\u306E\u7A2E\u985E\u306E\u8AAD\u307F\u66FF\u3048 = {
4756
+ entity: "storage",
4757
+ state: "card",
4758
+ contract: "card",
4759
+ proxy: "card",
4760
+ library: "card",
4761
+ interface: "card",
4762
+ eoa: "person",
4763
+ multisig: "signer"
4764
+ };
4765
+ function \u63CF\u3051\u308B\u7A2E\u5225(kind) {
4766
+ if (kind === void 0) return "actor";
4767
+ const \u8AAD\u307F\u66FF\u3048\u5148 = \u8A18\u6CD5\u3060\u3051\u306E\u7A2E\u985E\u306E\u8AAD\u307F\u66FF\u3048[kind];
4768
+ return \u8AAD\u307F\u66FF\u3048\u5148 ?? kind;
4769
+ }
4755
4770
  function compileToCdl(doc, opts) {
4756
4771
  const oversize = describeOversize({ elements: countDocElements(doc), bytes: 0 });
4757
4772
  if (oversize) throw new Error(oversize);
@@ -7570,7 +7585,7 @@ function compileC4(doc) {
7570
7585
  b.node(x.id, {
7571
7586
  lane: lid,
7572
7587
  stack,
7573
- kind: x.actor.kind,
7588
+ kind: \u63CF\u3051\u308B\u7A2E\u5225(x.actor.kind),
7574
7589
  title: x.actor.name
7575
7590
  });
7576
7591
  }
@@ -8154,7 +8169,7 @@ function compileFlow(doc) {
8154
8169
  flowBuilder.step(
8155
8170
  {
8156
8171
  id: slugify(a.name),
8157
- kind: a.kind,
8172
+ kind: \u63CF\u3051\u308B\u7A2E\u5225(a.kind),
8158
8173
  title: \u7BB1\u306E\u984C(a)
8159
8174
  },
8160
8175
  edgeLabel
@@ -8184,7 +8199,7 @@ function compileSwimlane(doc) {
8184
8199
  swim.node(nodeId, {
8185
8200
  lane: laneId,
8186
8201
  stack,
8187
- kind: actor?.kind ?? "actor",
8202
+ kind: \u63CF\u3051\u308B\u7A2E\u5225(actor?.kind),
8188
8203
  title: actorName
8189
8204
  });
8190
8205
  laneStackCount.set(laneId, stack + 1);
@@ -8206,7 +8221,7 @@ function compileSwimlane(doc) {
8206
8221
  swim.node(slugify(a.name), {
8207
8222
  lane: swim.laneId(a.name),
8208
8223
  stack: 0,
8209
- kind: a.kind ?? "actor",
8224
+ kind: \u63CF\u3051\u308B\u7A2E\u5225(a.kind),
8210
8225
  title: \u7BB1\u306E\u984C(a)
8211
8226
  });
8212
8227
  });
@@ -8295,7 +8310,7 @@ function compileTopology(doc) {
8295
8310
  for (const a of doc.actors) {
8296
8311
  groupBuilder.add({
8297
8312
  id: slugify(a.name),
8298
- kind: a.kind,
8313
+ kind: \u63CF\u3051\u308B\u7A2E\u5225(a.kind),
8299
8314
  title: \u7BB1\u306E\u984C(a)
8300
8315
  });
8301
8316
  }
@@ -8361,7 +8376,12 @@ function compileGenericWithAnimate(doc, opts) {
8361
8376
  while (\u96C6\u5408?.has(stack)) stack += 1;
8362
8377
  \u57CB\u3081\u308B(lid, stack);
8363
8378
  }
8364
- b.node(id, { lane: lid, stack, kind: a.kind, title: \u7BB1\u306E\u984C(a) });
8379
+ b.node(id, {
8380
+ lane: lid,
8381
+ stack,
8382
+ kind: \u63CF\u3051\u308B\u7A2E\u5225(a.kind),
8383
+ title: \u7BB1\u306E\u984C(a)
8384
+ });
8365
8385
  });
8366
8386
  } else if (kind === "flow" || kind === "topology") {
8367
8387
  const lid = opts.laneId ?? "main";
@@ -8373,7 +8393,12 @@ function compileGenericWithAnimate(doc, opts) {
8373
8393
  doc.actors.forEach((a, idx) => {
8374
8394
  const id = slugify(a.name);
8375
8395
  actorToNodeId.set(a.name, id);
8376
- b.node(id, { lane: lid, stack: idx, kind: a.kind, title: \u7BB1\u306E\u984C(a) });
8396
+ b.node(id, {
8397
+ lane: lid,
8398
+ stack: idx,
8399
+ kind: \u63CF\u3051\u308B\u7A2E\u5225(a.kind),
8400
+ title: \u7BB1\u306E\u984C(a)
8401
+ });
8377
8402
  });
8378
8403
  } else {
8379
8404
  const \u898B\u51FA\u3057\u3092\u4ED8\u3051\u308B = kind === "swimlane";
@@ -8388,7 +8413,7 @@ function compileGenericWithAnimate(doc, opts) {
8388
8413
  b.node(id, {
8389
8414
  lane: lid,
8390
8415
  stack: 0,
8391
- kind: a.kind,
8416
+ kind: \u63CF\u3051\u308B\u7A2E\u5225(a.kind),
8392
8417
  title: \u7BB1\u306E\u984C(a),
8393
8418
  ...isInitial ? { eyebrow: "\u521D\u671F" } : {},
8394
8419
  ...isFinal ? { eyebrow: "\u6700\u7D42" } : {}