@meltemi/diagrams-model 0.0.0-stage → 1.9.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 (83) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +48 -2
  3. package/dist/c4.d.ts +44 -0
  4. package/dist/c4.d.ts.map +1 -0
  5. package/dist/c4.js +803 -0
  6. package/dist/c4.js.map +1 -0
  7. package/dist/compile.d.ts +20 -0
  8. package/dist/compile.d.ts.map +1 -0
  9. package/dist/compile.js +525 -0
  10. package/dist/compile.js.map +1 -0
  11. package/dist/diagram-types.d.ts +67 -0
  12. package/dist/diagram-types.d.ts.map +1 -0
  13. package/dist/diagram-types.js +282 -0
  14. package/dist/diagram-types.js.map +1 -0
  15. package/dist/diff.d.ts +91 -0
  16. package/dist/diff.d.ts.map +1 -0
  17. package/dist/diff.js +575 -0
  18. package/dist/diff.js.map +1 -0
  19. package/dist/export.d.ts +22 -0
  20. package/dist/export.d.ts.map +1 -0
  21. package/dist/export.js +243 -0
  22. package/dist/export.js.map +1 -0
  23. package/dist/flow.d.ts +247 -0
  24. package/dist/flow.d.ts.map +1 -0
  25. package/dist/flow.js +1693 -0
  26. package/dist/flow.js.map +1 -0
  27. package/dist/index.d.ts +16 -0
  28. package/dist/index.d.ts.map +1 -0
  29. package/dist/index.js +16 -0
  30. package/dist/index.js.map +1 -0
  31. package/dist/json.d.ts +400 -0
  32. package/dist/json.d.ts.map +1 -0
  33. package/dist/json.js +433 -0
  34. package/dist/json.js.map +1 -0
  35. package/dist/messages/changes.d.ts +64 -0
  36. package/dist/messages/changes.d.ts.map +1 -0
  37. package/dist/messages/changes.js +117 -0
  38. package/dist/messages/changes.js.map +1 -0
  39. package/dist/messages/en.d.ts +554 -0
  40. package/dist/messages/en.d.ts.map +1 -0
  41. package/dist/messages/en.js +566 -0
  42. package/dist/messages/en.js.map +1 -0
  43. package/dist/messages/es.d.ts +3 -0
  44. package/dist/messages/es.d.ts.map +1 -0
  45. package/dist/messages/es.js +551 -0
  46. package/dist/messages/es.js.map +1 -0
  47. package/dist/messages/index.d.ts +449 -0
  48. package/dist/messages/index.d.ts.map +1 -0
  49. package/dist/messages/index.js +11 -0
  50. package/dist/messages/index.js.map +1 -0
  51. package/dist/model.d.ts +11 -0
  52. package/dist/model.d.ts.map +1 -0
  53. package/dist/model.js +363 -0
  54. package/dist/model.js.map +1 -0
  55. package/dist/scenario.d.ts +11 -0
  56. package/dist/scenario.d.ts.map +1 -0
  57. package/dist/scenario.js +91 -0
  58. package/dist/scenario.js.map +1 -0
  59. package/dist/schema.d.ts +311 -0
  60. package/dist/schema.d.ts.map +1 -0
  61. package/dist/schema.js +658 -0
  62. package/dist/schema.js.map +1 -0
  63. package/dist/sequence.d.ts +8 -0
  64. package/dist/sequence.d.ts.map +1 -0
  65. package/dist/sequence.js +722 -0
  66. package/dist/sequence.js.map +1 -0
  67. package/dist/story.d.ts +18 -0
  68. package/dist/story.d.ts.map +1 -0
  69. package/dist/story.js +406 -0
  70. package/dist/story.js.map +1 -0
  71. package/dist/style-values.d.ts +107 -0
  72. package/dist/style-values.d.ts.map +1 -0
  73. package/dist/style-values.js +558 -0
  74. package/dist/style-values.js.map +1 -0
  75. package/dist/theme-block.d.ts +10 -0
  76. package/dist/theme-block.d.ts.map +1 -0
  77. package/dist/theme-block.js +135 -0
  78. package/dist/theme-block.js.map +1 -0
  79. package/dist/types.d.ts +785 -0
  80. package/dist/types.d.ts.map +1 -0
  81. package/dist/types.js +2 -0
  82. package/dist/types.js.map +1 -0
  83. package/package.json +36 -3
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compile.js","sourceRoot":"","sources":["../src/compile.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,67 @@
1
+ import type { Direction, LayoutMode, StyleProperties } from "./types.js";
2
+ /**
3
+ * The version of the intermediate model that plugins declare compatibility with: the compiled
4
+ * document, its JSON and the definitions of diagram types.
5
+ */
6
+ export declare const MODEL_API_VERSION = "1.0.0";
7
+ /** A property of a kind or of relations: what values it takes. */
8
+ export interface PropertyDefinition {
9
+ readonly kind: "string" | "number" | "boolean" | "enum";
10
+ /** `enum`: the words it accepts. */
11
+ readonly values: readonly string[];
12
+ readonly description: string | null;
13
+ }
14
+ /** An element kind of a declared type, drawn as a box with its own shape and style. */
15
+ export interface KindDefinition {
16
+ readonly label: string;
17
+ readonly description: string | null;
18
+ /** Shape, colours (tokens such as `@accent` or CSS colours), line, icon, text. */
19
+ readonly style: StyleProperties;
20
+ readonly properties: Readonly<Record<string, PropertyDefinition>>;
21
+ /** Properties every element of the kind must set. */
22
+ readonly required: readonly string[];
23
+ }
24
+ export type LayoutAlgorithm = "layered" | "tree";
25
+ export declare const LAYOUT_ALGORITHMS: readonly LayoutAlgorithm[];
26
+ /** A declared diagram type, as a plugin defines it. */
27
+ export interface DiagramTypeDefinition {
28
+ /** The word after `diagram <id>:`, such as `erd`. */
29
+ readonly type: string;
30
+ readonly title: string;
31
+ readonly description: string | null;
32
+ /** Where it comes from; null for types an embedding application registers itself. */
33
+ readonly plugin: {
34
+ readonly name: string;
35
+ readonly version: string;
36
+ } | null;
37
+ readonly layout: {
38
+ readonly mode: LayoutMode;
39
+ readonly algorithm: LayoutAlgorithm;
40
+ readonly direction: Direction;
41
+ };
42
+ readonly elements: Readonly<Record<string, KindDefinition>>;
43
+ readonly relations: {
44
+ /** Pairs of kinds a relation may join, `*` for any; null for any pair. */
45
+ readonly allowed: readonly (readonly [string, string])[] | null;
46
+ readonly properties: Readonly<Record<string, PropertyDefinition>>;
47
+ readonly style: StyleProperties;
48
+ };
49
+ /** The canvas palette: kinds in the order offered. */
50
+ readonly tools: readonly {
51
+ readonly kind: string;
52
+ readonly label: string;
53
+ }[];
54
+ }
55
+ /** Words a declared type or kind may not take: the language's own. */
56
+ export declare const RESERVED_WORDS: ReadonlySet<string>;
57
+ /**
58
+ * Reads and checks a diagram type as a plugin writes it in JSON. Problems say what is wrong, in
59
+ * the interface language; with any, the type is not registered.
60
+ */
61
+ export declare function readDiagramType(value: unknown, plugin: DiagramTypeDefinition["plugin"]): {
62
+ definition: DiagramTypeDefinition | null;
63
+ problems: string[];
64
+ };
65
+ /** Whether a relation between two kinds is allowed by a type (`null` kinds are built-in ones). */
66
+ export declare function relationAllowed(definition: DiagramTypeDefinition, from: string | null, to: string | null): boolean;
67
+ //# sourceMappingURL=diagram-types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"diagram-types.d.ts","sourceRoot":"","sources":["../src/diagram-types.ts"],"names":[],"mappings":"AAuBA,OAAO,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAEzE;;;GAGG;AACH,eAAO,MAAM,iBAAiB,UAAU,CAAC;AAEzC,kEAAkE;AAClE,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,IAAI,EAAE,QAAQ,GAAG,QAAQ,GAAG,SAAS,GAAG,MAAM,CAAC;IACxD,oCAAoC;IACpC,QAAQ,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC;IACnC,QAAQ,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;CACrC;AAED,uFAAuF;AACvF,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IACpC,kFAAkF;IAClF,QAAQ,CAAC,KAAK,EAAE,eAAe,CAAC;IAChC,QAAQ,CAAC,UAAU,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC,CAAC;IAClE,qDAAqD;IACrD,QAAQ,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;CACtC;AAED,MAAM,MAAM,eAAe,GAAG,SAAS,GAAG,MAAM,CAAC;AACjD,eAAO,MAAM,iBAAiB,EAAE,SAAS,eAAe,EAAwB,CAAC;AAEjF,uDAAuD;AACvD,MAAM,WAAW,qBAAqB;IACpC,qDAAqD;IACrD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IACpC,qFAAqF;IACrF,QAAQ,CAAC,MAAM,EAAE;QAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IAC5E,QAAQ,CAAC,MAAM,EAAE;QACf,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;QAC1B,QAAQ,CAAC,SAAS,EAAE,eAAe,CAAC;QACpC,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC;KAC/B,CAAC;IACF,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC,CAAC;IAC5D,QAAQ,CAAC,SAAS,EAAE;QAClB,0EAA0E;QAC1E,QAAQ,CAAC,OAAO,EAAE,SAAS,CAAC,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC;QAChE,QAAQ,CAAC,UAAU,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC,CAAC;QAClE,QAAQ,CAAC,KAAK,EAAE,eAAe,CAAC;KACjC,CAAC;IACF,sDAAsD;IACtD,QAAQ,CAAC,KAAK,EAAE,SAAS;QAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;CAC9E;AAED,sEAAsE;AACtE,eAAO,MAAM,cAAc,EAAE,WAAW,CAAC,MAAM,CAyB7C,CAAC;AAiJH;;;GAGG;AACH,wBAAgB,eAAe,CAC7B,KAAK,EAAE,OAAO,EACd,MAAM,EAAE,qBAAqB,CAAC,QAAQ,CAAC,GACtC;IAAE,UAAU,EAAE,qBAAqB,GAAG,IAAI,CAAC;IAAC,QAAQ,EAAE,MAAM,EAAE,CAAA;CAAE,CA8FlE;AAED,kGAAkG;AAClG,wBAAgB,eAAe,CAC7B,UAAU,EAAE,qBAAqB,EACjC,IAAI,EAAE,MAAM,GAAG,IAAI,EACnB,EAAE,EAAE,MAAM,GAAG,IAAI,GAChB,OAAO,CAIT"}
@@ -0,0 +1,282 @@
1
+ // Diagram types beyond the four built in: declared as data by plugins (decision 0030). A type
2
+ // registers its schema (kinds and properties), validation (required properties and allowed
3
+ // relations), layout (mode, algorithm, direction), editing tools (the canvas palette) and its
4
+ // conversion to primitives (the shape and style of every kind). Nothing in it is code.
5
+ import { messages } from "./messages/index.js";
6
+ import { ARROWHEADS, BOX_SHAPES, CORNERS, DIAGRAM_TYPES, DIRECTIONS, FONT_WEIGHTS, ICON_POSITIONS, ICON_SIZE_RANGE, LABEL_POSITIONS, LAYOUT_MODES, LINE_STYLES, PATTERNS, ROUTINGS, STYLE_PROPERTIES, THEME_COLOR_TOKENS, TEXT_ALIGNS, } from "./schema.js";
7
+ /**
8
+ * The version of the intermediate model that plugins declare compatibility with: the compiled
9
+ * document, its JSON and the definitions of diagram types.
10
+ */
11
+ export const MODEL_API_VERSION = "1.0.0";
12
+ export const LAYOUT_ALGORITHMS = ["layered", "tree"];
13
+ /** Words a declared type or kind may not take: the language's own. */
14
+ export const RESERVED_WORDS = new Set([
15
+ ...DIAGRAM_TYPES,
16
+ "model",
17
+ "story",
18
+ "theme",
19
+ "export",
20
+ "import",
21
+ "language",
22
+ "diagram",
23
+ "using",
24
+ "placement",
25
+ "style",
26
+ "animate",
27
+ "class",
28
+ "rule",
29
+ "layers",
30
+ "scenario",
31
+ "relation",
32
+ "text",
33
+ "icon",
34
+ "image",
35
+ "group",
36
+ "box",
37
+ "note",
38
+ "tag",
39
+ ]);
40
+ const IDENT = /^[a-z][a-z0-9_]*$/;
41
+ const COLOR_TOKENS = new Set(THEME_COLOR_TOKENS);
42
+ const isObject = (value) => typeof value === "object" && value !== null && !Array.isArray(value);
43
+ /**
44
+ * Checks a style object of a definition; colours are tokens (`@accent`) or CSS colours. Problems
45
+ * are in the interface language.
46
+ */
47
+ function readStyle(value, where, problems) {
48
+ if (value === undefined)
49
+ return {};
50
+ const m = messages().problems;
51
+ if (!isObject(value)) {
52
+ problems.push(m.styleObject(where));
53
+ return {};
54
+ }
55
+ const style = {};
56
+ const word = (name, v, words) => {
57
+ if (words.includes(v))
58
+ style[name] = v;
59
+ else
60
+ problems.push(m.styleWords(where, name, words));
61
+ };
62
+ for (const [name, v] of Object.entries(value)) {
63
+ switch (name) {
64
+ case "fill":
65
+ case "stroke":
66
+ case "color":
67
+ case "iconColor":
68
+ if (typeof v === "string" && v.startsWith("@") && COLOR_TOKENS.has(v.slice(1)))
69
+ style[name] = v;
70
+ else if (typeof v === "string" &&
71
+ /^(#[0-9a-f]{3,8}|(rgb|hsl)a?\([\d\s.,%/-]+\)|[a-z]+)$/i.test(v)) {
72
+ style[name] = v;
73
+ }
74
+ else
75
+ problems.push(m.styleColor(where, name));
76
+ break;
77
+ case "shape":
78
+ word(name, v, BOX_SHAPES);
79
+ break;
80
+ case "line":
81
+ word(name, v, LINE_STYLES);
82
+ break;
83
+ case "pattern":
84
+ word(name, v, PATTERNS);
85
+ break;
86
+ case "arrowhead":
87
+ case "arrowtail":
88
+ word(name, v, ARROWHEADS);
89
+ break;
90
+ case "corners":
91
+ word(name, v, CORNERS);
92
+ break;
93
+ case "routing":
94
+ word(name, v, ROUTINGS);
95
+ break;
96
+ case "iconPosition":
97
+ word(name, v, ICON_POSITIONS);
98
+ break;
99
+ case "labelPosition":
100
+ word(name, v, LABEL_POSITIONS);
101
+ break;
102
+ case "iconSize":
103
+ if (v === "auto" ||
104
+ (typeof v === "number" && v >= ICON_SIZE_RANGE.min && v <= ICON_SIZE_RANGE.max)) {
105
+ style[name] = v;
106
+ }
107
+ else
108
+ problems.push(m.styleNumber(where, name));
109
+ break;
110
+ case "textAlign":
111
+ word(name, v, TEXT_ALIGNS);
112
+ break;
113
+ case "fontWeight":
114
+ word(name, v, FONT_WEIGHTS);
115
+ break;
116
+ case "width":
117
+ case "radius":
118
+ case "fontSize": {
119
+ // The ranges of `style` statements.
120
+ const spec = STYLE_PROPERTIES[name];
121
+ if (spec?.kind === "number" && typeof v === "number" && v >= spec.min && v <= spec.max) {
122
+ style[name] = v;
123
+ }
124
+ else
125
+ problems.push(m.styleNumber(where, name));
126
+ break;
127
+ }
128
+ case "icon":
129
+ if (typeof v === "string" && /^[A-Za-z0-9_-]+:[A-Za-z0-9_.-]+$/.test(v))
130
+ style[name] = v;
131
+ else
132
+ problems.push(m.styleIcon(where));
133
+ break;
134
+ default:
135
+ problems.push(m.styleUnknown(where, name));
136
+ }
137
+ }
138
+ return style;
139
+ }
140
+ /** Checks the properties of a kind or of relations; problems are in the interface language. */
141
+ function readProperties(value, where, problems) {
142
+ if (value === undefined)
143
+ return {};
144
+ const m = messages().problems;
145
+ if (!isObject(value)) {
146
+ problems.push(m.propertiesObject(where));
147
+ return {};
148
+ }
149
+ const properties = {};
150
+ for (const [name, raw] of Object.entries(value)) {
151
+ if (!IDENT.test(name) ||
152
+ RESERVED_WORDS.has(name) ||
153
+ ["description", "url", "class", "layer", "link", "port", "assumption"].includes(name)) {
154
+ problems.push(m.propertyName(where, name));
155
+ continue;
156
+ }
157
+ const spec = typeof raw === "string" ? { kind: raw } : raw;
158
+ if (!isObject(spec) || !["string", "number", "boolean", "enum"].includes(String(spec.kind))) {
159
+ problems.push(m.propertyKind(where, name));
160
+ continue;
161
+ }
162
+ const values = Array.isArray(spec.values)
163
+ ? spec.values.filter((v) => typeof v === "string" && /^[A-Za-z_][A-Za-z0-9_-]*$/.test(v))
164
+ : [];
165
+ if (spec.kind === "enum" && values.length === 0) {
166
+ problems.push(m.enumValues(where, name));
167
+ continue;
168
+ }
169
+ properties[name] = {
170
+ kind: spec.kind,
171
+ values: spec.kind === "enum" ? values : [],
172
+ description: typeof spec.description === "string" ? spec.description : null,
173
+ };
174
+ }
175
+ return properties;
176
+ }
177
+ /**
178
+ * Reads and checks a diagram type as a plugin writes it in JSON. Problems say what is wrong, in
179
+ * the interface language; with any, the type is not registered.
180
+ */
181
+ export function readDiagramType(value, plugin) {
182
+ const m = messages().problems;
183
+ const problems = [];
184
+ if (!isObject(value))
185
+ return { definition: null, problems: [m.notObject] };
186
+ const type = typeof value.type === "string" ? value.type : "";
187
+ const where = m.where(type || "?");
188
+ if (!IDENT.test(type) || RESERVED_WORDS.has(type)) {
189
+ problems.push(m.typeWord(where));
190
+ }
191
+ const layoutRaw = isObject(value.layout) ? value.layout : {};
192
+ const mode = (layoutRaw.mode ?? "auto");
193
+ const algorithm = (layoutRaw.algorithm ?? "layered");
194
+ const direction = (layoutRaw.direction ?? "LR");
195
+ if (!LAYOUT_MODES.includes(mode))
196
+ problems.push(m.layoutValue(where, "mode", LAYOUT_MODES));
197
+ if (!LAYOUT_ALGORITHMS.includes(algorithm))
198
+ problems.push(m.layoutValue(where, "algorithm", LAYOUT_ALGORITHMS));
199
+ if (!DIRECTIONS.includes(direction))
200
+ problems.push(m.layoutValue(where, "direction", DIRECTIONS));
201
+ const elements = {};
202
+ if (!isObject(value.elements) || Object.keys(value.elements).length === 0) {
203
+ problems.push(m.noKinds(where));
204
+ }
205
+ else {
206
+ for (const [kind, raw] of Object.entries(value.elements)) {
207
+ const at = m.kindWhere(where, kind);
208
+ if (!IDENT.test(kind) || RESERVED_WORDS.has(kind)) {
209
+ problems.push(m.kindWord(at));
210
+ continue;
211
+ }
212
+ const spec = isObject(raw) ? raw : {};
213
+ const properties = readProperties(spec.properties, at, problems);
214
+ const required = Array.isArray(spec.required)
215
+ ? spec.required.filter((r) => typeof r === "string")
216
+ : [];
217
+ for (const name of required) {
218
+ if (!(name in properties))
219
+ problems.push(m.requiredUndeclared(at, name));
220
+ }
221
+ elements[kind] = {
222
+ label: typeof spec.label === "string" && spec.label.trim() !== "" ? spec.label : kind,
223
+ description: typeof spec.description === "string" ? spec.description : null,
224
+ style: readStyle(spec.style, at, problems),
225
+ properties,
226
+ required,
227
+ };
228
+ }
229
+ }
230
+ const kinds = new Set(Object.keys(elements));
231
+ const relationsRaw = isObject(value.relations) ? value.relations : {};
232
+ let allowed = null;
233
+ if (relationsRaw.allowed !== undefined) {
234
+ allowed = [];
235
+ if (!Array.isArray(relationsRaw.allowed))
236
+ problems.push(m.allowedPairs(where));
237
+ else {
238
+ for (const pair of relationsRaw.allowed) {
239
+ const [from, to] = Array.isArray(pair) ? pair : [];
240
+ const known = (k) => k === "*" || (typeof k === "string" && kinds.has(k));
241
+ if (!known(from) || !known(to)) {
242
+ problems.push(m.unknownPair(where, JSON.stringify(pair)));
243
+ continue;
244
+ }
245
+ allowed.push([from, to]);
246
+ }
247
+ }
248
+ }
249
+ const tools = (Array.isArray(value.tools) ? value.tools : [...kinds].map((kind) => ({ kind }))).flatMap((raw) => {
250
+ const spec = isObject(raw) ? raw : {};
251
+ const kind = typeof spec.kind === "string" ? spec.kind : "";
252
+ if (!kinds.has(kind)) {
253
+ problems.push(m.unknownTool(where, kind));
254
+ return [];
255
+ }
256
+ return [{ kind, label: typeof spec.label === "string" ? spec.label : elements[kind].label }];
257
+ });
258
+ const relationsWhere = m.relationsWhere(where);
259
+ const definition = {
260
+ type,
261
+ title: typeof value.title === "string" && value.title.trim() !== "" ? value.title : type,
262
+ description: typeof value.description === "string" ? value.description : null,
263
+ plugin,
264
+ layout: { mode, algorithm, direction },
265
+ elements,
266
+ relations: {
267
+ allowed,
268
+ properties: readProperties(relationsRaw.properties, relationsWhere, problems),
269
+ style: readStyle(relationsRaw.style, relationsWhere, problems),
270
+ },
271
+ tools,
272
+ };
273
+ return { definition: problems.length === 0 ? definition : null, problems };
274
+ }
275
+ /** Whether a relation between two kinds is allowed by a type (`null` kinds are built-in ones). */
276
+ export function relationAllowed(definition, from, to) {
277
+ const allowed = definition.relations.allowed;
278
+ if (allowed === null)
279
+ return true;
280
+ return allowed.some(([a, b]) => (a === "*" || a === from) && (b === "*" || b === to));
281
+ }
282
+ //# sourceMappingURL=diagram-types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"diagram-types.js","sourceRoot":"","sources":["../src/diagram-types.ts"],"names":[],"mappings":"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"}
package/dist/diff.d.ts ADDED
@@ -0,0 +1,91 @@
1
+ import { type Locale } from "@meltemi/diagrams-i18n";
2
+ import type { Document } from "./types.js";
3
+ export type ChangeKind = "added" | "removed" | "renamed" | "changed";
4
+ export type ChangeSubject = "diagram" | "element" | "relation" | "model" | "entity" | "story" | "scene" | "theme" | "export";
5
+ /** One difference between two versions. */
6
+ export interface ModelChange {
7
+ readonly kind: ChangeKind;
8
+ readonly subject: ChangeSubject;
9
+ /** The diagram, model or story the change is in; null for the blocks of a file. */
10
+ readonly scope: string | null;
11
+ /** The id after the change; the former id for removals. */
12
+ readonly id: string;
13
+ /** Renames: the id before. */
14
+ readonly from: string | null;
15
+ /** The text people read: an element's label, a diagram's title. */
16
+ readonly label: string | null;
17
+ /** What changed, as facts that `describeChange` words in a language. */
18
+ readonly facts: readonly ChangeFact[];
19
+ /** The facts in English, such as `label "API" → "API Gateway"` or `moved`. */
20
+ readonly details: readonly string[];
21
+ }
22
+ /** One thing that changed, which `describeFact` words in a language. */
23
+ export type ChangeFact =
24
+ /** A text written in the source: `label "API" → "API Gateway"`. */
25
+ {
26
+ readonly fact: "text";
27
+ readonly field: string;
28
+ readonly before: string | null;
29
+ readonly after: string | null;
30
+ }
31
+ /** A value of the language: `kind node → decision`, `preset none → slide`. */
32
+ | {
33
+ readonly fact: "value";
34
+ readonly field: string;
35
+ readonly before: string | null;
36
+ readonly after: string | null;
37
+ }
38
+ /** The classes applied, in order. */
39
+ | {
40
+ readonly fact: "classes";
41
+ readonly before: readonly string[];
42
+ readonly after: readonly string[];
43
+ }
44
+ /** A part that changed, without details. */
45
+ | {
46
+ readonly fact: "changed";
47
+ readonly part: ChangedPart;
48
+ }
49
+ /** A new state. */
50
+ | {
51
+ readonly fact: "state";
52
+ readonly state: ChangeState;
53
+ }
54
+ /** An element moved between groups; `to` is null out of every group. */
55
+ | {
56
+ readonly fact: "group";
57
+ readonly from: string | null;
58
+ readonly to: string | null;
59
+ }
60
+ /** An entity moved to another parent; null is the model's root. */
61
+ | {
62
+ readonly fact: "parent";
63
+ readonly to: string | null;
64
+ } | {
65
+ readonly fact: "scenario";
66
+ readonly id: string;
67
+ readonly added: boolean;
68
+ } | {
69
+ readonly fact: "duration";
70
+ readonly before: number;
71
+ readonly after: number;
72
+ }
73
+ /** The kind or type of what was added or removed, as written. */
74
+ | {
75
+ readonly fact: "kind";
76
+ readonly kind: string;
77
+ };
78
+ /** Parts of a change described without details. */
79
+ export type ChangedPart = "description" | "style" | "effects" | "canvas" | "layers" | "includedEntities" | "constraints" | "transition" | "actions" | "assumption" | "ends";
80
+ /** States a change can leave something in. */
81
+ export type ChangeState = "external" | "notExternal" | "placed" | "unplaced" | "moved" | "resized" | "twoWay" | "oneWay" | "async" | "sync" | "confirmed" | "assumed" | "rerouted" | "labelMoved" | "messagesReordered" | "scenesReordered";
82
+ /**
83
+ * The semantic changes from one version of a document to another: diagrams, their elements and
84
+ * relations, models and their entities, stories and their scenes, themes and export profiles.
85
+ */
86
+ export declare function diffDocuments(before: Document, after: Document): ModelChange[];
87
+ /** One line per change, such as `~ element api: label "API" → "API Gateway"`. */
88
+ export declare function describeChange(c: ModelChange, locale?: Locale): string;
89
+ /** One fact in a language, by default the interface's: `label "API" → "API Gateway"`, `moved`. */
90
+ export declare function describeFact(fact: ChangeFact, locale?: Locale): string;
91
+ //# sourceMappingURL=diff.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"diff.d.ts","sourceRoot":"","sources":["../src/diff.ts"],"names":[],"mappings":"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"}