@cardenelabs/dragon 0.34.0 → 0.35.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.
Files changed (127) hide show
  1. package/README.md +39 -720
  2. package/dist/cli.cjs +4529 -0
  3. package/dist/cli.cjs.map +1 -0
  4. package/dist/cli.js +4523 -0
  5. package/dist/cli.js.map +1 -0
  6. package/dist/export.cjs +3912 -0
  7. package/dist/export.cjs.map +1 -0
  8. package/dist/export.d.cts +36 -0
  9. package/dist/export.d.ts +36 -0
  10. package/dist/export.js +3907 -0
  11. package/dist/export.js.map +1 -0
  12. package/dist/fonts.cjs +7 -0
  13. package/dist/fonts.cjs.map +1 -0
  14. package/dist/fonts.js +4 -0
  15. package/dist/fonts.js.map +1 -0
  16. package/dist/index.cjs +4105 -20356
  17. package/dist/index.cjs.map +1 -1
  18. package/dist/index.d.cts +227 -5522
  19. package/dist/index.d.ts +227 -5522
  20. package/dist/index.js +4091 -20283
  21. package/dist/index.js.map +1 -1
  22. package/dist/player.global.js +2 -0
  23. package/dist/schema-BBWfniwH.d.cts +112 -0
  24. package/dist/schema-BBWfniwH.d.ts +112 -0
  25. package/package.json +39 -24
  26. package/src/cli.ts +237 -0
  27. package/src/export/capture.ts +277 -0
  28. package/src/export/fonts.ts +68 -0
  29. package/src/export/html.ts +32 -0
  30. package/src/export/index.ts +146 -0
  31. package/src/field-messages.ts +104 -0
  32. package/src/figure-text.ts +42 -0
  33. package/src/index.ts +30 -283
  34. package/src/layout/architecture.ts +381 -0
  35. package/src/layout/measure.ts +21 -0
  36. package/src/layout/scene.ts +353 -0
  37. package/src/layout/sequence.ts +189 -0
  38. package/src/load-fonts.ts +8 -0
  39. package/src/look/fonts.ts +33 -0
  40. package/src/look/palettes.json +209 -0
  41. package/src/look/values.ts +155 -0
  42. package/src/markdown.ts +35 -0
  43. package/src/messages.ts +122 -0
  44. package/src/parser.ts +342 -310
  45. package/src/player-global.ts +4 -0
  46. package/src/player.ts +271 -0
  47. package/src/printer.ts +76 -0
  48. package/src/render/icons.ts +41 -0
  49. package/src/render/motion.ts +106 -0
  50. package/src/render/parts.ts +279 -0
  51. package/src/render/svg.ts +341 -0
  52. package/src/schema.ts +161 -16
  53. package/src/schemas/diagram.schema.json +150 -0
  54. package/src/schemas/validate-diagram.d.ts +12 -0
  55. package/src/schemas/validate-diagram.js +8 -0
  56. package/src/timeline.ts +166 -0
  57. package/src/tokenize.ts +20 -281
  58. package/src/version.ts +55 -0
  59. package/src/view.ts +16 -0
  60. package/src/words.ts +79 -0
  61. package/examples/quick-start.md +0 -142
  62. package/src/canvas-bounds.ts +0 -52
  63. package/src/color.ts +0 -197
  64. package/src/compile/actor-ids.ts +0 -297
  65. package/src/compile/actor-option-notice.ts +0 -379
  66. package/src/compile/actors.ts +0 -103
  67. package/src/compile/c4.ts +0 -74
  68. package/src/compile/chain.ts +0 -93
  69. package/src/compile/chart-fields.ts +0 -193
  70. package/src/compile/deep-rewrite.ts +0 -30
  71. package/src/compile/derived-source.ts +0 -18
  72. package/src/compile/direction.ts +0 -102
  73. package/src/compile/edge-option-notice.ts +0 -112
  74. package/src/compile/er-relation.ts +0 -200
  75. package/src/compile/flow.ts +0 -54
  76. package/src/compile/flowchart.ts +0 -344
  77. package/src/compile/funnel.ts +0 -87
  78. package/src/compile/gantt.ts +0 -337
  79. package/src/compile/generic.ts +0 -696
  80. package/src/compile/hierarchy.ts +0 -92
  81. package/src/compile/journey.ts +0 -93
  82. package/src/compile/kinds.ts +0 -139
  83. package/src/compile/lanes.ts +0 -138
  84. package/src/compile/metro.ts +0 -271
  85. package/src/compile/mind.ts +0 -393
  86. package/src/compile/node-title.ts +0 -24
  87. package/src/compile/notice.ts +0 -141
  88. package/src/compile/order.ts +0 -57
  89. package/src/compile/parts-lookup.ts +0 -17
  90. package/src/compile/parts.ts +0 -2709
  91. package/src/compile/placement-apply.ts +0 -689
  92. package/src/compile/placement.ts +0 -15
  93. package/src/compile/quadrant.ts +0 -265
  94. package/src/compile/record.ts +0 -75
  95. package/src/compile/row-marks.ts +0 -128
  96. package/src/compile/rows.ts +0 -40
  97. package/src/compile/sequence.ts +0 -305
  98. package/src/compile/slug.ts +0 -37
  99. package/src/compile/stages.ts +0 -247
  100. package/src/compile/subtitle.ts +0 -35
  101. package/src/compile/swimlane-marks.ts +0 -87
  102. package/src/compile/swimlane.ts +0 -82
  103. package/src/compile/timeline.ts +0 -213
  104. package/src/compile/topology.ts +0 -44
  105. package/src/compile/tree.ts +0 -69
  106. package/src/compile/value-chart.ts +0 -337
  107. package/src/compile/values.ts +0 -432
  108. package/src/compile/word-state.ts +0 -82
  109. package/src/compile.ts +0 -3168
  110. package/src/focus.ts +0 -46
  111. package/src/input-size.ts +0 -181
  112. package/src/json-line-map.ts +0 -30
  113. package/src/json-parser.ts +0 -4306
  114. package/src/keywords.ts +0 -417
  115. package/src/near-name.ts +0 -42
  116. package/src/notation-lint.ts +0 -342
  117. package/src/relative-pos.ts +0 -251
  118. package/src/schemas/diagram.json +0 -3088
  119. package/src/types.ts +0 -1009
  120. package/src/v05/index.ts +0 -9
  121. package/src/v05/input-table.generated.ts +0 -138
  122. package/src/v05/parser-types.ts +0 -32
  123. package/src/v05/parser.ts +0 -6668
  124. package/src/v05/readout-table.generated.ts +0 -1088
  125. package/src/v05/removed-syntax.ts +0 -115
  126. package/src/value-syntax.ts +0 -313
  127. package/src/write-position.ts +0 -270
@@ -1,141 +0,0 @@
1
- /**
2
- * 組み立てが出す知らせの形 (#2030 で `compile.ts` から移した)。
3
- *
4
- * 図種ごとの file が受け取り口の型として使い、`compile.ts` が再輸出して外へ出す。
5
- *
6
- * **葉に置く** = 型そのものは消えるが、TypeScript の取り込みの輪は残る。 輪があると
7
- * 読む順で解決が変わるため、型でも輪を作らない。
8
- */
9
-
10
- /** 図は出せるが書いた通りにならなかった、 という知らせ。 */
11
- export type CompileNotice = {
12
- kind:
13
- | "relative-position-ignored"
14
- | "focus-target-missing"
15
- | "state-override-rejected"
16
- | "external-paint-dropped"
17
- // 図の中に描く部品を持たない見本を重ねた (#1017)
18
- | "part-not-drawn"
19
- // 向きが効かない形で `向き:` を書いた (#1494)
20
- | "direction-not-honored"
21
- // 既定と同じ向きを書き、その向きを外しても同じ組み立てを通る (#2421)。 書いた行が図を
22
- // 1 ピクセルも動かさない形で、書き手には効いたのか効かなかったのかが画面から読めない。
23
- // **経路が切り替わる形とは別物** = 向きを書くとフローは鎖をやめ、担当の図は共通の組み立てへ
24
- // 回る。 その切替が起きる図では既定と同じ値でも絵が変わるので、この知らせは出さない
25
- | "direction-same-as-default"
26
- // 並び順が効かない図種に `order:` を書いた (#2655)
27
- | "order-not-honored"
28
- | "shape-not-honored"
29
- // 段階ごとの箱で `stage` を省き、担当または箱名から段階を補った (#2797)
30
- | "stage-from-lane"
31
- // 路線図で `lane` を省き、箱名を線路名に使った (#2799)
32
- | "track-from-name"
33
- // `theme:` とその別名 `palette:` を両方書き、`theme:` を使った (#2790)
34
- | "theme-palette-both"
35
- // `倍率:` を書いた見本が、同じ名前の状態も持っていた (#1026)
36
- | "scale-reserved"
37
- // 部品に書いた色が効かない (#1973)。 色番号を入れる状態を 1 つも持たない部品に色番号を
38
- // 書いた時と、色番号でなく色の名前を書いた時
39
- | "part-color-ignored"
40
- // 部品に、部品が持たない状態の名前で値を書いた (#1976)。 綴り違いと、外した欄 (`nodes`) を書いた時
41
- | "part-state-missing"
42
- // 部品へ引いた矢印を、部品の中のどの要素にも繋げず外した (#1979)。 要素が 2 つ以上あり名指しが無い時、
43
- // 名指しした要素が部品に無い時、部品を取り込まなかった時
44
- | "part-edge-dropped"
45
- // 種類 (`kind`) に書いた名前が、箱の種類にも渡された部品の一覧にも無い (#2113)。 箱の種類の綴り違いも
46
- // 部品の名前とみなされてここに来る。 部品の一覧を渡さない組み立てでは出さない
47
- | "part-not-found"
48
- // 矢印に部品の要素の名指し (`fromPartNode` / `toPartNode`) を書いたが、その端が部品でない (#1979)
49
- | "part-node-ignored"
50
- // 縦列に置くはずの部品が他の箱の位置の基準になっていて、縦列に置けなかった (#1980)
51
- | "part-lane-ignored"
52
- // 箱ごとの値や時期を読んで 1 つの図に描く図種で、読めない項目があった (#1154)。 使う図種は
53
- // 各図種の組み立て (`compile/*.ts`) が決める
54
- | "chart-value-unreadable"
55
- // 同じ図種で、書いた矢印を描かなかった (#1154)。 関係を描かない図種と、端を描けない矢印 (ガントチャートで
56
- // 時期の無い項目を指す等、#2111)
57
- | "chart-edge-dropped"
58
- // 同じ名前を `states` と `values` の両方に書いた (#1162)
59
- | "value-shadows-state"
60
- // 同じ名前を `states` と `inputs` の両方に書き、 値がずれた (#2413)。 両方に書くこと自体は
61
- // 意図された書き方 (見本 105 箇所) だが、 描く側はつまみの既定値で状態を塗るため、
62
- // ずれると状態の初期値は図のどの瞬間にも出ない
63
- | "state-shadowed-by-input"
64
- // 式を解けず、その値を止めた (輪 / 無い名前 / 読めない式 / 数として読めない値、 #1162)
65
- | "value-unresolved"
66
- // 同じ名前を `values` に 2 度書いた。 先に書いた式を使う (#1162)
67
- | "value-duplicate"
68
- // 矢印が `actors` に無い名前を指した (#1209)
69
- | "flow-actor-missing"
70
- // 帯 (`bands:`) を、 帯を描かない図種に書いた (#2404)。 帯は板の縦線に重ねる四角なので、
71
- // 板を作らない図種には載せる先が無い (実測 = 24 図種のうち 22 図種が黙って捨てていた)
72
- | "band-not-honored"
73
- // 順序図の帯 (`bands:`) が `actors` に無い名前を指した (#2404)。 描く側は見つからない名前を
74
- // 先頭の面に倒すため、 綴り違いの帯は正しく書いた帯と同じ図になり、 書き間違いが見えない
75
- | "band-actor-missing"
76
- // 順序図の帯に書いた区間が、 板に載る言づての並びに収まらない (#2404)。 範囲外と、
77
- // 始まりが終わりより後ろ の 2 形。 **`row` は言づての行** = 描く側が `rowY(i)` で
78
- // i 通目の言づての高さを返す。 段 (`animation` の `step`) ではないので `step` と呼ばない
79
- | "band-row-out-of-range"
80
- // きっかけ形の値を段に畳めなかった (段が無い / 相手が境目を通らない / 段からはみ出す、 #1161)
81
- | "value-trigger-unresolved"
82
- // 箱に `lane:` を書いたが、 縦列は図種が決めるため効かなかった (#1246)
83
- | "lane-not-honored"
84
- // 路線図以外の lane に、路線図の名札だけが読む補足を書いた
85
- | "lane-option-not-honored"
86
- // `lanes:` に書いた縦列に箱が 1 つも入らなかった (#1241)
87
- | "lane-declared-empty"
88
- // 最上位に `eyebrow:` を書いたが、 箱ごとに分かれる図種で相手が決まらなかった (#1247)
89
- | "eyebrow-not-honored"
90
- // 静止した `type: flow` で、書いた矢印の端が使われなかった (#1269)
91
- | "flow-endpoint-not-honored"
92
- // 起点から描く動きを持たない図種で段に `draw:` を書いた (#1312)
93
- | "draw-not-honored"
94
- // `draw:` の語がその図種と食い違う (`type: bar` に `draw: pie`、 #1314)
95
- | "draw-target-mismatch"
96
- // 式が、どこにも書かれていない名前を読んだ (#1391)
97
- | "formula-unresolved"
98
- // 値を見せる部品が、どこにも書かれていない名前を読んだ (#2405)。 読む元は `states` /
99
- // `inputs` / `formulas` の 3 つ。 見る欄は `source` の 1 つではなく、 綴りの規則
100
- // (`source` / `〜Source` / `sourceA`) に当たる全ての欄
101
- | "readout-source-missing"
102
- // 出来事が指す相手が図に無い (#1393)。 書いた名前が本文のどこにも無い時に出す = 書き直せば直る
103
- | "event-target-missing"
104
- // 出来事が指す名前は本文に在るが、この図種はそれを箱 / 矢印にしない (#2336)。
105
- // 値を並べる図種は図全体で 1 つの箱になり、 順序図は 1 枚の板になる。
106
- // `event-target-missing` と分けるのは、こちらが **書き直しても直らない** 側だから
107
- | "event-target-not-honored"
108
- // 段の注目先に書いた名前は本文に在るが、この図種はそれを箱 / 矢印にしない (#2398)。
109
- // `focus-target-missing` と分けるのは、こちらが **書き直しても直らない** 側だから。
110
- // 出来事の側の `event-target-not-honored` と同じ性質で、同じ 7 図種でだけ相手を選べる
111
- | "focus-target-not-honored"
112
- // 順序図で面に種類を書いたが、板は名前と呼び名しか描かない (#1466)
113
- | "actor-kind-not-honored"
114
- // 箱に、その図種が描かない指定を書いた (#2360)。 木の図は位置も大きさも親子関係から決めるため
115
- // 箱ごとの飾りを載せる先が無い。 板の 2 図種は `actor-kind-not-honored` が受け持つ
116
- | "actor-option-not-honored"
117
- // 順序図の言づてに、板が描かない飾りを書いた (#1466)。 数える飾りは `reportMessageOptionNotHonored` の一覧が持つ
118
- | "message-option-not-honored"
119
- // 位置のずらし (`pos` / `offsetX` / `offsetY`) を載せる相手が無いか、書いた量だけ動かせなかった (#1971)
120
- | "position-offset-ignored"
121
- // 箱の座標を横と縦のどちらか一方だけ書いた (#2362)。 座標は両方書いた時だけ効く
122
- | "position-axis-missing"
123
- // 組 (`groups:`) が束ねる縦列が図に無い (#1972)
124
- | "group-lane-missing"
125
- // 組が束ねる縦列の間に、束ねない縦列を挟んでいる (#1972)
126
- | "group-lanes-apart"
127
- // 矢印に書いた多重度 (`cardinality`) から端の形を描けない (#2107)。 `er` で端の形が決まる 6 語以外を
128
- // 書き、端を両方は書いていない時と、`er` 以外の図種に書いた時
129
- | "cardinality-not-honored"
130
- // 矢印に、その図種が描かない飾り (文字 / 色 / 線種 / 多重度) を書いた (#2111)。 ガントチャートの矢印は
131
- // 前後の関係だけを使う
132
- | "edge-option-not-honored"
133
- // ガントチャートの項目の終わりが始まりより前か、状態で決まる終わりが始まりより前の値を取る (#2111)
134
- | "gantt-end-before-start";
135
- /** 対象の名前。 光らせる相手なら書かれた指定そのまま */
136
- actor: string;
137
- /** 書かれていた行 */
138
- line: number;
139
- message: string;
140
- hint?: string;
141
- };
@@ -1,57 +0,0 @@
1
- import type { DslDocument, PresetType } from "../types";
2
-
3
- /**
4
- * 箱を並べる順 (`order:`、 #2655)。
5
- *
6
- * ## 型ではなく語で持つ
7
- *
8
- * 並べ替えの鍵しか持たない図種が在り、独自の組み立てを 1 行も持たずに箱を種類で並べ替えて
9
- * から順序図の組み立てをそのまま呼んでいた。
10
- *
11
- * 型として持つと、振る舞いを書くたびに「順序図 または その型」 という条件を並べることになる。
12
- * 実際 `compile.ts` に 6 か所あり、**次に条件を足す人が片方を書き忘れれば黙って外れる**
13
- * 形になっていた。 差が並べ替えだけなら語で表す。
14
- *
15
- * ## 種類の順は 3 段
16
- *
17
- * 人 → しまう場所 → 出来事 の順に置く。
18
- * **同じ段の中では書いた順のまま** = 比べる値が等しい時の並びは変わらない。
19
- *
20
- * Solidity の図に向けた段 (契約) と行 (`eoa` / `multisig` / `wallet`) は外した (#2947)。
21
- *
22
- * 表に無い種類は最後に置く。 知らない種類を先頭へ寄せると、書き手が種類を書き間違えた図で
23
- * 並びが大きく崩れて原因が読めない。
24
- */
25
- const 種類の段: Record<string, number> = {
26
- actor: 0,
27
- signer: 0,
28
- storage: 1,
29
- event: 2,
30
- };
31
-
32
- /** 表に無い種類を置く段。 どの段よりも後ろになる数にする */
33
- const 表に無い種類の段 = 5;
34
-
35
- /**
36
- * 並び順を書ける図種 (#2655)。
37
- *
38
- * 順序図だけ。 他の図種は並び方そのものが読み方を担う (縦列が役割を表す / 段が階層を表す)
39
- * ので、外から並べ替えると図の意味が変わる。 書いても効かせず、書いたことを知らせる。
40
- */
41
- export const 並び順を選べる図種: ReadonlySet<PresetType> = new Set<PresetType>(["sequence"]);
42
-
43
- /** 書いた並び順が効くか (#2655) */
44
- export function 並び順が効くか(doc: DslDocument): boolean {
45
- return doc.order !== undefined && 並び順を選べる図種.has(doc.type);
46
- }
47
-
48
- /**
49
- * 並び順を当てた文書を返す (#2655)。
50
- *
51
- * 効かない図種と、書かなかった図はそのまま返す = **書かない図の並びは 1 つも動かない**。
52
- */
53
- export function 並べ替えた文書(doc: DslDocument): DslDocument {
54
- if (!並び順が効くか(doc)) return doc;
55
- const 段 = (kind: string): number => 種類の段[kind] ?? 表に無い種類の段;
56
- return { ...doc, actors: [...doc.actors].sort((a, b) => 段(a.kind) - 段(b.kind)) };
57
- }
@@ -1,17 +0,0 @@
1
- import type { CdlDiagram } from "@cardenelabs/cdl";
2
- /**
3
- * 見本帳から部品を引く (#2030 で `compile.ts` から移した)。
4
- *
5
- * `parts-` の前置きは付けても付けなくても引ける。
6
- */
7
-
8
- /** catalog を引くところだけ。 測れるかは見ない。 */
9
- export function lookupPartRaw(
10
- partsCatalog: Record<string, CdlDiagram>,
11
- partId: string | undefined,
12
- ): CdlDiagram | undefined {
13
- if (typeof partId !== "string" || partId.length === 0) return undefined;
14
- if (Object.hasOwn(partsCatalog, partId)) return partsCatalog[partId];
15
- if (Object.hasOwn(partsCatalog, `parts-${partId}`)) return partsCatalog[`parts-${partId}`];
16
- return undefined;
17
- }