likec4 1.12.2 → 1.13.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/__app__/react/likec4.tsx +2 -0
- package/dist/__app__/src/chunks/{-index-overview-BkDZVsmQ.js → -index-overview-DrWsHFH4.js} +4 -4
- package/dist/__app__/src/chunks/{likec4-CNg5BLwi.js → likec4-B4TbAFjc.js} +19 -14
- package/dist/__app__/src/chunks/{main-BqtsxvKL.js → main-Bb3q3o7f.js} +6540 -3822
- package/dist/__app__/src/chunks/{mantine-CN5aX5HW.js → mantine-5H3V65ZR.js} +103 -71
- package/dist/__app__/src/chunks/{tanstack-router-COsz5nw6.js → tanstack-router-C6UpMKjv.js} +1 -1
- package/dist/__app__/src/main.js +1 -1
- package/dist/__app__/src/style.css +1 -1
- package/dist/__app__/webcomponent/webcomponent.js +7819 -4714
- package/dist/chunks/prompt.mjs +3 -3
- package/dist/cli/index.mjs +47 -47
- package/dist/index.d.mts +483 -205
- package/dist/index.d.ts +483 -205
- package/dist/index.mjs +1 -1
- package/dist/shared/likec4.Dgm8MxXR.mjs +1816 -0
- package/package.json +13 -13
- package/react/index.d.ts +273 -232
- package/react/index.mjs +8060 -4980
- package/react/style.css +1 -1
- package/dist/shared/likec4.BYHvTT3g.mjs +0 -1816
package/dist/index.d.mts
CHANGED
|
@@ -1,4 +1,13 @@
|
|
|
1
|
-
import { LiteralUnion, Tagged,
|
|
1
|
+
import { LiteralUnion, Tagged, TupleToUnion, Class, IsNumericLiteral, IfNever, Simplify, SetRequired, ValueOf, ConditionalPick } from 'type-fest';
|
|
2
|
+
|
|
3
|
+
type NonEmptyArray<T> = [T, ...T[]];
|
|
4
|
+
type IconUrl = Tagged<string, 'IconUrl'>;
|
|
5
|
+
type CustomColor$1 = string;
|
|
6
|
+
type Point = readonly [x: number, y: number];
|
|
7
|
+
interface XYPoint {
|
|
8
|
+
x: number;
|
|
9
|
+
y: number;
|
|
10
|
+
}
|
|
2
11
|
|
|
3
12
|
declare const ThemeColors: readonly ["amber", "blue", "gray", "slate", "green", "indigo", "muted", "primary", "red", "secondary", "sky"];
|
|
4
13
|
type ThemeColor$1 = typeof ThemeColors[number];
|
|
@@ -21,47 +30,38 @@ interface ThemeColorValues {
|
|
|
21
30
|
relationships: RelationshipThemeColorValues;
|
|
22
31
|
}
|
|
23
32
|
|
|
24
|
-
type
|
|
25
|
-
type IconUrl = Tagged<string, 'IconUrl'>;
|
|
26
|
-
type CustomColor$1 = string;
|
|
27
|
-
type Point = readonly [x: number, y: number];
|
|
28
|
-
interface XYPoint {
|
|
29
|
-
x: number;
|
|
30
|
-
y: number;
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
type Fqn$1 = Tagged<string, 'Fqn'>;
|
|
33
|
+
type Fqn$1<Id extends string = string> = Tagged<Id, 'Fqn'>;
|
|
34
34
|
declare const BorderStyles: readonly ["solid", "dashed", "dotted", "none"];
|
|
35
|
-
type BorderStyle = typeof BorderStyles
|
|
36
|
-
type ElementKind$1 = Tagged<
|
|
35
|
+
type BorderStyle = TupleToUnion<typeof BorderStyles>;
|
|
36
|
+
type ElementKind$1<Kinds extends string = string> = Tagged<Kinds, 'ElementKind'>;
|
|
37
37
|
declare const ElementShapes: readonly ["rectangle", "person", "browser", "mobile", "cylinder", "storage", "queue"];
|
|
38
|
-
type ElementShape$1 = typeof ElementShapes
|
|
38
|
+
type ElementShape$1 = TupleToUnion<typeof ElementShapes>;
|
|
39
39
|
interface ElementStyle {
|
|
40
40
|
border?: BorderStyle;
|
|
41
41
|
opacity?: number;
|
|
42
42
|
}
|
|
43
|
-
type Tag$1 = Tagged<
|
|
43
|
+
type Tag$1<Tags extends string = string> = Tagged<Tags, 'Tag'>;
|
|
44
44
|
interface Link {
|
|
45
45
|
readonly title?: string;
|
|
46
46
|
readonly url: string;
|
|
47
47
|
readonly relative?: string;
|
|
48
48
|
}
|
|
49
|
-
interface
|
|
50
|
-
readonly id: Fqn$1
|
|
51
|
-
readonly kind: ElementKind$1
|
|
49
|
+
interface TypedElement<Ids extends string, Kinds extends string, Tags extends string, MetadataKeys extends string = never> {
|
|
50
|
+
readonly id: Fqn$1<Ids>;
|
|
51
|
+
readonly kind: ElementKind$1<Kinds>;
|
|
52
52
|
readonly title: string;
|
|
53
53
|
readonly description: string | null;
|
|
54
54
|
readonly technology: string | null;
|
|
55
|
-
readonly tags: NonEmptyArray<Tag$1
|
|
55
|
+
readonly tags: NonEmptyArray<Tag$1<Tags>> | null;
|
|
56
56
|
readonly links: NonEmptyArray<Link> | null;
|
|
57
57
|
readonly icon?: IconUrl;
|
|
58
58
|
readonly shape?: ElementShape$1;
|
|
59
59
|
readonly color?: Color$1;
|
|
60
60
|
readonly style?: ElementStyle;
|
|
61
61
|
readonly notation?: string;
|
|
62
|
-
readonly metadata?:
|
|
63
|
-
|
|
64
|
-
|
|
62
|
+
readonly metadata?: Record<MetadataKeys, string>;
|
|
63
|
+
}
|
|
64
|
+
interface Element$1 extends TypedElement<string, string, string, string> {
|
|
65
65
|
}
|
|
66
66
|
interface ElementKindSpecificationStyle {
|
|
67
67
|
shape?: ElementShape$1;
|
|
@@ -107,135 +107,6 @@ type OrOperator<Tag, Kind> = Omit<AllNever, 'or'> & {
|
|
|
107
107
|
};
|
|
108
108
|
type WhereOperator<Tag, Kind> = TagEqual<Tag> | KindEqual<Kind> | NotOperator<Tag, Kind> | AndOperator<Tag, Kind> | OrOperator<Tag, Kind>;
|
|
109
109
|
|
|
110
|
-
type RelationID$1 = Tagged<string, 'RelationID'>;
|
|
111
|
-
type RelationshipKind$1 = Tagged<string, 'RelationshipKind'>;
|
|
112
|
-
type RelationshipLineType = 'dashed' | 'solid' | 'dotted';
|
|
113
|
-
type RelationshipArrowType = 'none' | 'normal' | 'onormal' | 'dot' | 'odot' | 'diamond' | 'odiamond' | 'crow' | 'open' | 'vee';
|
|
114
|
-
interface Relation$1 {
|
|
115
|
-
readonly id: RelationID$1;
|
|
116
|
-
readonly source: Fqn$1;
|
|
117
|
-
readonly target: Fqn$1;
|
|
118
|
-
readonly title: string;
|
|
119
|
-
readonly description?: string;
|
|
120
|
-
readonly technology?: string;
|
|
121
|
-
readonly tags?: NonEmptyArray<Tag$1>;
|
|
122
|
-
readonly kind?: RelationshipKind$1;
|
|
123
|
-
readonly color?: Color$1;
|
|
124
|
-
readonly line?: RelationshipLineType;
|
|
125
|
-
readonly head?: RelationshipArrowType;
|
|
126
|
-
readonly tail?: RelationshipArrowType;
|
|
127
|
-
readonly links?: NonEmptyArray<Link>;
|
|
128
|
-
readonly navigateTo?: ViewID$1;
|
|
129
|
-
readonly metadata?: {
|
|
130
|
-
[key: string]: string;
|
|
131
|
-
};
|
|
132
|
-
}
|
|
133
|
-
interface RelationshipKindSpecification {
|
|
134
|
-
readonly technology?: string;
|
|
135
|
-
readonly notation?: string;
|
|
136
|
-
readonly color?: Color$1;
|
|
137
|
-
readonly line?: RelationshipLineType;
|
|
138
|
-
readonly head?: RelationshipArrowType;
|
|
139
|
-
readonly tail?: RelationshipArrowType;
|
|
140
|
-
}
|
|
141
|
-
|
|
142
|
-
interface BaseExpr {
|
|
143
|
-
where?: never;
|
|
144
|
-
element?: never;
|
|
145
|
-
custom?: never;
|
|
146
|
-
expanded?: never;
|
|
147
|
-
elementKind?: never;
|
|
148
|
-
elementTag?: never;
|
|
149
|
-
isEqual?: never;
|
|
150
|
-
isDescedants?: never;
|
|
151
|
-
wildcard?: never;
|
|
152
|
-
source?: never;
|
|
153
|
-
target?: never;
|
|
154
|
-
inout?: never;
|
|
155
|
-
incoming?: never;
|
|
156
|
-
outgoing?: never;
|
|
157
|
-
customRelation?: never;
|
|
158
|
-
}
|
|
159
|
-
interface ElementRefExpr extends Omit<BaseExpr, 'element' | 'isDescedants'> {
|
|
160
|
-
element: Fqn$1;
|
|
161
|
-
isDescedants?: boolean;
|
|
162
|
-
}
|
|
163
|
-
interface ExpandedElementExpr extends Omit<BaseExpr, 'expanded'> {
|
|
164
|
-
expanded: Fqn$1;
|
|
165
|
-
}
|
|
166
|
-
interface CustomElementExpr extends Omit<BaseExpr, 'custom'> {
|
|
167
|
-
custom: {
|
|
168
|
-
expr: ElementExpression$1 | ElementWhereExpr;
|
|
169
|
-
title?: string;
|
|
170
|
-
description?: string;
|
|
171
|
-
technology?: string;
|
|
172
|
-
notation?: string;
|
|
173
|
-
shape?: ElementShape$1;
|
|
174
|
-
color?: Color$1;
|
|
175
|
-
icon?: IconUrl;
|
|
176
|
-
border?: BorderStyle;
|
|
177
|
-
opacity?: number;
|
|
178
|
-
navigateTo?: ViewID$1;
|
|
179
|
-
};
|
|
180
|
-
}
|
|
181
|
-
interface WildcardExpr extends Omit<BaseExpr, 'wildcard'> {
|
|
182
|
-
wildcard: true;
|
|
183
|
-
}
|
|
184
|
-
interface ElementKindExpr extends Omit<BaseExpr, 'elementKind' | 'isEqual'> {
|
|
185
|
-
elementKind: ElementKind$1;
|
|
186
|
-
isEqual: boolean;
|
|
187
|
-
}
|
|
188
|
-
interface ElementTagExpr extends Omit<BaseExpr, 'elementTag' | 'isEqual'> {
|
|
189
|
-
elementTag: Tag$1;
|
|
190
|
-
isEqual: boolean;
|
|
191
|
-
}
|
|
192
|
-
type ElementExpression$1 = ElementRefExpr | WildcardExpr | ElementKindExpr | ElementTagExpr | ExpandedElementExpr;
|
|
193
|
-
interface ElementWhereExpr extends Omit<BaseExpr, 'where'> {
|
|
194
|
-
where: {
|
|
195
|
-
expr: ElementExpression$1;
|
|
196
|
-
condition: WhereOperator<string, string>;
|
|
197
|
-
};
|
|
198
|
-
}
|
|
199
|
-
type ElementPredicateExpression = ElementExpression$1 | ElementWhereExpr | CustomElementExpr;
|
|
200
|
-
interface RelationExpr extends Omit<BaseExpr, 'source' | 'target'> {
|
|
201
|
-
source: ElementExpression$1;
|
|
202
|
-
target: ElementExpression$1;
|
|
203
|
-
isBidirectional?: boolean;
|
|
204
|
-
}
|
|
205
|
-
interface InOutExpr extends Omit<BaseExpr, 'inout'> {
|
|
206
|
-
inout: ElementExpression$1;
|
|
207
|
-
}
|
|
208
|
-
interface IncomingExpr extends Omit<BaseExpr, 'incoming'> {
|
|
209
|
-
incoming: ElementExpression$1;
|
|
210
|
-
}
|
|
211
|
-
interface OutgoingExpr extends Omit<BaseExpr, 'outgoing'> {
|
|
212
|
-
outgoing: ElementExpression$1;
|
|
213
|
-
}
|
|
214
|
-
type RelationExpression$1 = RelationExpr | InOutExpr | IncomingExpr | OutgoingExpr;
|
|
215
|
-
interface RelationWhereExpr extends Omit<BaseExpr, 'where'> {
|
|
216
|
-
where: {
|
|
217
|
-
expr: RelationExpression$1;
|
|
218
|
-
condition: WhereOperator<string, string>;
|
|
219
|
-
};
|
|
220
|
-
}
|
|
221
|
-
interface CustomRelationExpr extends Omit<BaseExpr, 'customRelation'> {
|
|
222
|
-
customRelation: {
|
|
223
|
-
relation: RelationExpression$1 | RelationWhereExpr;
|
|
224
|
-
title?: string;
|
|
225
|
-
description?: string;
|
|
226
|
-
technology?: string;
|
|
227
|
-
notation?: string;
|
|
228
|
-
navigateTo?: ViewID$1;
|
|
229
|
-
notes?: string;
|
|
230
|
-
color?: Color$1;
|
|
231
|
-
line?: RelationshipLineType;
|
|
232
|
-
head?: RelationshipArrowType;
|
|
233
|
-
tail?: RelationshipArrowType;
|
|
234
|
-
};
|
|
235
|
-
}
|
|
236
|
-
type RelationPredicateExpression = RelationExpression$1 | RelationWhereExpr | CustomRelationExpr;
|
|
237
|
-
type Expression$1 = ElementPredicateExpression | RelationPredicateExpression;
|
|
238
|
-
|
|
239
110
|
type ElementNotation = {
|
|
240
111
|
kinds: ElementKind$1[];
|
|
241
112
|
shape: ElementShape$1;
|
|
@@ -243,7 +114,7 @@ type ElementNotation = {
|
|
|
243
114
|
title: string;
|
|
244
115
|
};
|
|
245
116
|
|
|
246
|
-
type ViewID$1 = Tagged<
|
|
117
|
+
type ViewID$1<Id extends string = string> = Tagged<Id, 'ViewID'>;
|
|
247
118
|
type ViewRulePredicate$1 = {
|
|
248
119
|
include: Expression$1[];
|
|
249
120
|
exclude?: never;
|
|
@@ -267,12 +138,12 @@ interface ViewRuleAutoLayout$1 {
|
|
|
267
138
|
rankSep?: number;
|
|
268
139
|
}
|
|
269
140
|
type ViewRule$1 = ViewRulePredicate$1 | ViewRuleStyle$1 | ViewRuleAutoLayout$1;
|
|
270
|
-
interface BasicView<ViewType extends 'element' | 'dynamic'> {
|
|
141
|
+
interface BasicView<ViewType extends 'element' | 'dynamic', ViewIDs extends string, Tags extends string> {
|
|
271
142
|
readonly __?: ViewType;
|
|
272
|
-
readonly id: ViewID$1
|
|
143
|
+
readonly id: ViewID$1<ViewIDs>;
|
|
273
144
|
readonly title: string | null;
|
|
274
145
|
readonly description: string | null;
|
|
275
|
-
readonly tags: NonEmptyArray<Tag$1
|
|
146
|
+
readonly tags: NonEmptyArray<Tag$1<Tags>> | null;
|
|
276
147
|
readonly links: NonEmptyArray<Link> | null;
|
|
277
148
|
/**
|
|
278
149
|
* URI to the source file of this view.
|
|
@@ -294,17 +165,17 @@ interface BasicView<ViewType extends 'element' | 'dynamic'> {
|
|
|
294
165
|
readonly manualLayout?: ViewManualLayout | undefined;
|
|
295
166
|
readonly customColorDefinitions: CustomColorDefinitions;
|
|
296
167
|
}
|
|
297
|
-
interface BasicElementView extends BasicView<'element'> {
|
|
168
|
+
interface BasicElementView<ViewIDs extends string, Tags extends string> extends BasicView<'element', ViewIDs, Tags> {
|
|
298
169
|
readonly viewOf?: Fqn$1;
|
|
299
170
|
readonly rules: ViewRule$1[];
|
|
300
171
|
}
|
|
301
|
-
interface ScopedElementView extends BasicElementView {
|
|
172
|
+
interface ScopedElementView<ViewIDs extends string, Tags extends string> extends BasicElementView<ViewIDs, Tags> {
|
|
302
173
|
readonly viewOf: Fqn$1;
|
|
303
174
|
}
|
|
304
|
-
interface ExtendsElementView extends BasicElementView {
|
|
305
|
-
readonly extends: ViewID$1
|
|
175
|
+
interface ExtendsElementView<ViewIDs extends string, Tags extends string> extends BasicElementView<ViewIDs, Tags> {
|
|
176
|
+
readonly extends: ViewID$1<ViewIDs>;
|
|
306
177
|
}
|
|
307
|
-
type ElementView$1 = ScopedElementView | ExtendsElementView | BasicElementView
|
|
178
|
+
type ElementView$1<ViewIDs extends string = string, Tags extends string = string> = ScopedElementView<ViewIDs, Tags> | ExtendsElementView<ViewIDs, Tags> | BasicElementView<ViewIDs, Tags>;
|
|
308
179
|
interface DynamicViewStep$1 {
|
|
309
180
|
readonly source: Fqn$1;
|
|
310
181
|
readonly target: Fqn$1;
|
|
@@ -329,7 +200,7 @@ type DynamicViewIncludeRule = {
|
|
|
329
200
|
include: ElementPredicateExpression[];
|
|
330
201
|
};
|
|
331
202
|
type DynamicViewRule$1 = DynamicViewIncludeRule | ViewRuleStyle$1 | ViewRuleAutoLayout$1;
|
|
332
|
-
interface DynamicView$1 extends BasicView<'dynamic'> {
|
|
203
|
+
interface DynamicView$1<ViewIDs extends string = string, Tags extends string = string> extends BasicView<'dynamic', ViewIDs, Tags> {
|
|
333
204
|
readonly __: 'dynamic';
|
|
334
205
|
readonly steps: DynamicViewStepOrParallel[];
|
|
335
206
|
readonly rules: DynamicViewRule$1[];
|
|
@@ -337,8 +208,8 @@ interface DynamicView$1 extends BasicView<'dynamic'> {
|
|
|
337
208
|
type CustomColorDefinitions = {
|
|
338
209
|
[key: string]: ThemeColorValues;
|
|
339
210
|
};
|
|
340
|
-
type LikeC4View$1 = ElementView$1 | DynamicView$1
|
|
341
|
-
type NodeId = Tagged<
|
|
211
|
+
type LikeC4View$1<ViewIDs extends string = string, Tags extends string = string> = ElementView$1<ViewIDs, Tags> | DynamicView$1<ViewIDs, Tags>;
|
|
212
|
+
type NodeId<IDs extends string = string> = Tagged<IDs, 'Fqn'>;
|
|
342
213
|
type EdgeId$1 = Tagged<string, 'EdgeId'>;
|
|
343
214
|
type StepEdgeIdLiteral = `step-${number}` | `step-${number}.${number}`;
|
|
344
215
|
type StepEdgeId = Tagged<StepEdgeIdLiteral, 'EdgeId'>;
|
|
@@ -421,15 +292,15 @@ interface ViewAutoLayout {
|
|
|
421
292
|
rankSep?: number;
|
|
422
293
|
nodeSep?: number;
|
|
423
294
|
}
|
|
424
|
-
interface ComputedElementView extends Omit<ElementView$1, 'rules' | 'docUri'>, ViewWithHash, ViewWithNotation {
|
|
425
|
-
readonly extends?: ViewID$1
|
|
295
|
+
interface ComputedElementView<ViewIDs extends string = string, Tags extends string = string> extends Omit<ElementView$1<ViewIDs, Tags>, 'rules' | 'docUri'>, ViewWithHash, ViewWithNotation {
|
|
296
|
+
readonly extends?: ViewID$1<ViewIDs>;
|
|
426
297
|
readonly autoLayout: ViewAutoLayout;
|
|
427
298
|
readonly nodes: ComputedNode[];
|
|
428
299
|
readonly edges: ComputedEdge[];
|
|
429
300
|
rules?: never;
|
|
430
301
|
docUri?: never;
|
|
431
302
|
}
|
|
432
|
-
interface ComputedDynamicView extends Omit<DynamicView$1, 'rules' | 'steps' | 'docUri'>, ViewWithHash, ViewWithNotation {
|
|
303
|
+
interface ComputedDynamicView<ViewIDs extends string = string, Tags extends string = string> extends Omit<DynamicView$1<ViewIDs, Tags>, 'rules' | 'steps' | 'docUri'>, ViewWithHash, ViewWithNotation {
|
|
433
304
|
readonly autoLayout: ViewAutoLayout;
|
|
434
305
|
readonly nodes: ComputedNode[];
|
|
435
306
|
readonly edges: ComputedEdge[];
|
|
@@ -438,7 +309,7 @@ interface ComputedDynamicView extends Omit<DynamicView$1, 'rules' | 'steps' | 'd
|
|
|
438
309
|
docUri?: never;
|
|
439
310
|
}
|
|
440
311
|
declare function isComputedDynamicView(view: ComputedView): view is ComputedDynamicView;
|
|
441
|
-
type ComputedView = ComputedElementView | ComputedDynamicView
|
|
312
|
+
type ComputedView<ViewIDs extends string = string, Tags extends string = string> = ComputedElementView<ViewIDs, Tags> | ComputedDynamicView<ViewIDs, Tags>;
|
|
442
313
|
type BBox = {
|
|
443
314
|
x: number;
|
|
444
315
|
y: number;
|
|
@@ -457,7 +328,7 @@ interface DiagramEdge extends ComputedEdge {
|
|
|
457
328
|
labelBBox?: BBox | null;
|
|
458
329
|
dotpos?: string;
|
|
459
330
|
}
|
|
460
|
-
interface DiagramView extends Omit<ComputedView, 'nodes' | 'edges' | 'manualLayout'> {
|
|
331
|
+
interface DiagramView<ViewIDs extends string = string, Tags extends string = string> extends Omit<ComputedView<ViewIDs, Tags>, 'nodes' | 'edges' | 'manualLayout'> {
|
|
461
332
|
readonly nodes: DiagramNode[];
|
|
462
333
|
readonly edges: DiagramEdge[];
|
|
463
334
|
readonly bounds: BBox;
|
|
@@ -490,18 +361,147 @@ type ViewManualLayout = {
|
|
|
490
361
|
}>;
|
|
491
362
|
};
|
|
492
363
|
|
|
364
|
+
type RelationID$1 = Tagged<string, 'RelationID'>;
|
|
365
|
+
type RelationshipKind$1<Kinds extends string = string> = Tagged<Kinds, 'RelationshipKind'>;
|
|
366
|
+
type RelationshipLineType = 'dashed' | 'solid' | 'dotted';
|
|
367
|
+
type RelationshipArrowType = 'none' | 'normal' | 'onormal' | 'dot' | 'odot' | 'diamond' | 'odiamond' | 'crow' | 'open' | 'vee';
|
|
368
|
+
interface Relation$1 {
|
|
369
|
+
readonly id: RelationID$1;
|
|
370
|
+
readonly source: Fqn$1;
|
|
371
|
+
readonly target: Fqn$1;
|
|
372
|
+
readonly title: string;
|
|
373
|
+
readonly description?: string;
|
|
374
|
+
readonly technology?: string;
|
|
375
|
+
readonly tags?: NonEmptyArray<Tag$1>;
|
|
376
|
+
readonly kind?: RelationshipKind$1;
|
|
377
|
+
readonly color?: Color$1;
|
|
378
|
+
readonly line?: RelationshipLineType;
|
|
379
|
+
readonly head?: RelationshipArrowType;
|
|
380
|
+
readonly tail?: RelationshipArrowType;
|
|
381
|
+
readonly links?: NonEmptyArray<Link>;
|
|
382
|
+
readonly navigateTo?: ViewID$1;
|
|
383
|
+
readonly metadata?: {
|
|
384
|
+
[key: string]: string;
|
|
385
|
+
};
|
|
386
|
+
}
|
|
387
|
+
interface RelationshipKindSpecification {
|
|
388
|
+
readonly technology?: string;
|
|
389
|
+
readonly notation?: string;
|
|
390
|
+
readonly color?: Color$1;
|
|
391
|
+
readonly line?: RelationshipLineType;
|
|
392
|
+
readonly head?: RelationshipArrowType;
|
|
393
|
+
readonly tail?: RelationshipArrowType;
|
|
394
|
+
}
|
|
395
|
+
|
|
396
|
+
interface BaseExpr {
|
|
397
|
+
where?: never;
|
|
398
|
+
element?: never;
|
|
399
|
+
custom?: never;
|
|
400
|
+
expanded?: never;
|
|
401
|
+
elementKind?: never;
|
|
402
|
+
elementTag?: never;
|
|
403
|
+
isEqual?: never;
|
|
404
|
+
isDescedants?: never;
|
|
405
|
+
wildcard?: never;
|
|
406
|
+
source?: never;
|
|
407
|
+
target?: never;
|
|
408
|
+
inout?: never;
|
|
409
|
+
incoming?: never;
|
|
410
|
+
outgoing?: never;
|
|
411
|
+
customRelation?: never;
|
|
412
|
+
}
|
|
413
|
+
interface ElementRefExpr extends Omit<BaseExpr, 'element' | 'isDescedants'> {
|
|
414
|
+
element: Fqn$1;
|
|
415
|
+
isDescedants?: boolean;
|
|
416
|
+
}
|
|
417
|
+
interface ExpandedElementExpr extends Omit<BaseExpr, 'expanded'> {
|
|
418
|
+
expanded: Fqn$1;
|
|
419
|
+
}
|
|
420
|
+
interface CustomElementExpr extends Omit<BaseExpr, 'custom'> {
|
|
421
|
+
custom: {
|
|
422
|
+
expr: ElementExpression$1 | ElementWhereExpr;
|
|
423
|
+
title?: string;
|
|
424
|
+
description?: string;
|
|
425
|
+
technology?: string;
|
|
426
|
+
notation?: string;
|
|
427
|
+
shape?: ElementShape$1;
|
|
428
|
+
color?: Color$1;
|
|
429
|
+
icon?: IconUrl;
|
|
430
|
+
border?: BorderStyle;
|
|
431
|
+
opacity?: number;
|
|
432
|
+
navigateTo?: ViewID$1;
|
|
433
|
+
};
|
|
434
|
+
}
|
|
435
|
+
interface WildcardExpr extends Omit<BaseExpr, 'wildcard'> {
|
|
436
|
+
wildcard: true;
|
|
437
|
+
}
|
|
438
|
+
interface ElementKindExpr extends Omit<BaseExpr, 'elementKind' | 'isEqual'> {
|
|
439
|
+
elementKind: ElementKind$1;
|
|
440
|
+
isEqual: boolean;
|
|
441
|
+
}
|
|
442
|
+
interface ElementTagExpr extends Omit<BaseExpr, 'elementTag' | 'isEqual'> {
|
|
443
|
+
elementTag: Tag$1;
|
|
444
|
+
isEqual: boolean;
|
|
445
|
+
}
|
|
446
|
+
type ElementExpression$1 = ElementRefExpr | WildcardExpr | ElementKindExpr | ElementTagExpr | ExpandedElementExpr;
|
|
447
|
+
interface ElementWhereExpr extends Omit<BaseExpr, 'where'> {
|
|
448
|
+
where: {
|
|
449
|
+
expr: ElementExpression$1;
|
|
450
|
+
condition: WhereOperator<string, string>;
|
|
451
|
+
};
|
|
452
|
+
}
|
|
453
|
+
type ElementPredicateExpression = ElementExpression$1 | ElementWhereExpr | CustomElementExpr;
|
|
454
|
+
interface RelationExpr extends Omit<BaseExpr, 'source' | 'target'> {
|
|
455
|
+
source: ElementExpression$1;
|
|
456
|
+
target: ElementExpression$1;
|
|
457
|
+
isBidirectional?: boolean;
|
|
458
|
+
}
|
|
459
|
+
interface InOutExpr extends Omit<BaseExpr, 'inout'> {
|
|
460
|
+
inout: ElementExpression$1;
|
|
461
|
+
}
|
|
462
|
+
interface IncomingExpr extends Omit<BaseExpr, 'incoming'> {
|
|
463
|
+
incoming: ElementExpression$1;
|
|
464
|
+
}
|
|
465
|
+
interface OutgoingExpr extends Omit<BaseExpr, 'outgoing'> {
|
|
466
|
+
outgoing: ElementExpression$1;
|
|
467
|
+
}
|
|
468
|
+
type RelationExpression$1 = RelationExpr | InOutExpr | IncomingExpr | OutgoingExpr;
|
|
469
|
+
interface RelationWhereExpr extends Omit<BaseExpr, 'where'> {
|
|
470
|
+
where: {
|
|
471
|
+
expr: RelationExpression$1;
|
|
472
|
+
condition: WhereOperator<string, string>;
|
|
473
|
+
};
|
|
474
|
+
}
|
|
475
|
+
interface CustomRelationExpr extends Omit<BaseExpr, 'customRelation'> {
|
|
476
|
+
customRelation: {
|
|
477
|
+
relation: RelationExpression$1 | RelationWhereExpr;
|
|
478
|
+
title?: string;
|
|
479
|
+
description?: string;
|
|
480
|
+
technology?: string;
|
|
481
|
+
notation?: string;
|
|
482
|
+
navigateTo?: ViewID$1;
|
|
483
|
+
notes?: string;
|
|
484
|
+
color?: Color$1;
|
|
485
|
+
line?: RelationshipLineType;
|
|
486
|
+
head?: RelationshipArrowType;
|
|
487
|
+
tail?: RelationshipArrowType;
|
|
488
|
+
};
|
|
489
|
+
}
|
|
490
|
+
type RelationPredicateExpression = RelationExpression$1 | RelationWhereExpr | CustomRelationExpr;
|
|
491
|
+
type Expression$1 = ElementPredicateExpression | RelationPredicateExpression;
|
|
492
|
+
|
|
493
493
|
/**
|
|
494
494
|
* Parsed elements, relations, and views.
|
|
495
495
|
*/
|
|
496
|
-
interface ParsedLikeC4Model {
|
|
496
|
+
interface ParsedLikeC4Model<ElementKinds extends string = string, RelationKinds extends string = string, Tags extends string = string, Fqns extends string = string, Views extends string = string> {
|
|
497
497
|
specification: {
|
|
498
|
-
tags: Tag$1[];
|
|
499
|
-
elements: Record<
|
|
500
|
-
relationships: Record<
|
|
498
|
+
tags: Tag$1<Tags>[];
|
|
499
|
+
elements: Record<ElementKinds, ElementKindSpecification>;
|
|
500
|
+
relationships: Record<RelationKinds, RelationshipKindSpecification>;
|
|
501
501
|
};
|
|
502
|
-
elements: Record<
|
|
502
|
+
elements: Record<Fqns, TypedElement<Fqns, ElementKinds, Tags>>;
|
|
503
503
|
relations: Record<RelationID$1, Relation$1>;
|
|
504
|
-
views: Record<
|
|
504
|
+
views: Record<Views, LikeC4View$1<Views, Tags>>;
|
|
505
505
|
}
|
|
506
506
|
/**
|
|
507
507
|
* Same as `ParsedLikeC4Model` but with computed views.
|
|
@@ -574,11 +574,274 @@ declare namespace ViewChange {
|
|
|
574
574
|
}
|
|
575
575
|
interface ChangeAutoLayout {
|
|
576
576
|
op: 'change-autolayout';
|
|
577
|
-
layout:
|
|
577
|
+
layout: {
|
|
578
|
+
direction: AutoLayoutDirection;
|
|
579
|
+
nodeSep?: number | null;
|
|
580
|
+
rankSep?: number | null;
|
|
581
|
+
};
|
|
578
582
|
}
|
|
579
583
|
}
|
|
580
584
|
type ViewChange = ViewChange.ChangeElementStyle | ViewChange.SaveManualLayout | ViewChange.ChangeAutoLayout;
|
|
581
585
|
|
|
586
|
+
type KeysOf<T> = keyof T extends infer K extends string ? K : never;
|
|
587
|
+
type BuilderSpecification = {
|
|
588
|
+
elements: {
|
|
589
|
+
[kind: string]: Partial<ElementKindSpecification>;
|
|
590
|
+
};
|
|
591
|
+
relationships?: Record<string, Partial<RelationshipKindSpecification>>;
|
|
592
|
+
tags?: [string, ...string[]];
|
|
593
|
+
metadataKeys?: [string, ...string[]];
|
|
594
|
+
};
|
|
595
|
+
type Metadata<MetadataKey extends string> = IfNever<MetadataKey, never, Record<MetadataKey, string>>;
|
|
596
|
+
type NewElementProps<Tag, Metadata> = {
|
|
597
|
+
title?: string;
|
|
598
|
+
description?: string;
|
|
599
|
+
technology?: string;
|
|
600
|
+
tags?: IfNever<Tag, never, [Tag, ...Tag[]]>;
|
|
601
|
+
metadata?: Metadata;
|
|
602
|
+
icon?: string;
|
|
603
|
+
shape?: ElementShape$1;
|
|
604
|
+
color?: Color$1;
|
|
605
|
+
links?: Array<string | {
|
|
606
|
+
title?: string;
|
|
607
|
+
url: string;
|
|
608
|
+
}>;
|
|
609
|
+
style?: {
|
|
610
|
+
border?: BorderStyle;
|
|
611
|
+
opacity?: number;
|
|
612
|
+
};
|
|
613
|
+
};
|
|
614
|
+
type NewViewProps<Tag> = {
|
|
615
|
+
title?: string;
|
|
616
|
+
description?: string;
|
|
617
|
+
tags?: IfNever<Tag, never, [Tag, ...Tag[]]>;
|
|
618
|
+
links?: Array<string | {
|
|
619
|
+
title?: string;
|
|
620
|
+
url: string;
|
|
621
|
+
}>;
|
|
622
|
+
};
|
|
623
|
+
type NewRelationProps<Kind, Tag, Metadata> = {
|
|
624
|
+
kind?: Kind;
|
|
625
|
+
title?: string;
|
|
626
|
+
description?: string;
|
|
627
|
+
technology?: string;
|
|
628
|
+
tags?: IfNever<Tag, never, [Tag, ...Tag[]]>;
|
|
629
|
+
metadata?: Metadata;
|
|
630
|
+
head?: RelationshipArrowType;
|
|
631
|
+
tail?: RelationshipArrowType;
|
|
632
|
+
line?: RelationshipLineType;
|
|
633
|
+
color?: Color$1;
|
|
634
|
+
links?: Array<string | {
|
|
635
|
+
title?: string;
|
|
636
|
+
url: string;
|
|
637
|
+
}>;
|
|
638
|
+
};
|
|
639
|
+
type Invalid<Message extends string> = Tagged<Message, 'Error'>;
|
|
640
|
+
/**
|
|
641
|
+
* When building nested objects
|
|
642
|
+
*/
|
|
643
|
+
interface TypesNested<Parent extends string, ElementKind extends string, Fqn extends string, ViewId extends string, RelationshipKind extends string, Tag extends string, MetadataKey extends string> extends Types<ElementKind, Fqn, ViewId, RelationshipKind, Tag, MetadataKey> {
|
|
644
|
+
Parent: Parent;
|
|
645
|
+
}
|
|
646
|
+
type AnyTypes = Types<any, any, any, any, any, any>;
|
|
647
|
+
type AnyTypesNested = TypesNested<any, any, any, any, any, any, any>;
|
|
648
|
+
/**
|
|
649
|
+
* Auxilary type to keep track of the types in builder
|
|
650
|
+
*/
|
|
651
|
+
interface Types<ElementKind extends string, Fqn extends string, ViewId extends string, RelationshipKind extends string, Tag extends string, MetadataKey extends string> {
|
|
652
|
+
ElementKind: ElementKind;
|
|
653
|
+
Fqn: Fqn;
|
|
654
|
+
ViewId: ViewId;
|
|
655
|
+
RelationshipKind: RelationshipKind;
|
|
656
|
+
Tag: Tag;
|
|
657
|
+
MetadataKey: MetadataKey;
|
|
658
|
+
Tags: IfNever<Tag, never, [Tag, ...Tag[]]>;
|
|
659
|
+
NewElementProps: NewElementProps<Tag, Metadata<MetadataKey>>;
|
|
660
|
+
NewRelationshipProps: NewRelationProps<RelationshipKind, Tag, Metadata<MetadataKey>>;
|
|
661
|
+
NewViewProps: NewViewProps<Tag>;
|
|
662
|
+
}
|
|
663
|
+
declare namespace Types {
|
|
664
|
+
type FromSpecification<Spec> = Spec extends BuilderSpecification ? Types<KeysOf<Spec['elements']>, never, never, KeysOf<Spec['relationships']>, TupleToUnion<Spec['tags']>, TupleToUnion<Spec['metadataKeys']>> : never;
|
|
665
|
+
type AddFqn<T, Id extends string> = T extends TypesNested<infer P, any, any, any, any, any, any> ? TypesNested<P, T['ElementKind'], `${P}.${Id}` | T['Fqn'], T['ViewId'], T['RelationshipKind'], T['Tag'], T['MetadataKey']> : T extends AnyTypes ? Types<T['ElementKind'], Id | T['Fqn'], T['ViewId'], T['RelationshipKind'], T['Tag'], T['MetadataKey']> : never;
|
|
666
|
+
type AddView<T, Id extends string> = T extends TypesNested<infer P, any, any, any, any, any, any> ? TypesNested<P, T['ElementKind'], T['Fqn'], Id | T['ViewId'], T['RelationshipKind'], T['Tag'], T['MetadataKey']> : T extends AnyTypes ? Types<T['ElementKind'], T['Fqn'], Id | T['ViewId'], T['RelationshipKind'], T['Tag'], T['MetadataKey']> : never;
|
|
667
|
+
type ToParsedLikeC4Model<T> = T extends AnyTypes ? ParsedLikeC4Model<T['ElementKind'], T['RelationshipKind'], T['Tag'], T['Fqn'], T['ViewId']> : never;
|
|
668
|
+
}
|
|
669
|
+
|
|
670
|
+
type ToNested<T, Id extends string> = T extends TypesNested<infer P, any, infer F, any, any, any, any> ? TypesNested<`${P}.${Id}`, T['ElementKind'], `${P}.${Id}` | F, T['ViewId'], T['RelationshipKind'], T['Tag'], T['MetadataKey']> : T extends AnyTypes ? TypesNested<Id, T['ElementKind'], Id | T['Fqn'], T['ViewId'], T['RelationshipKind'], T['Tag'], T['MetadataKey']> : never;
|
|
671
|
+
type FromNested<T extends AnyTypes, N> = N extends TypesNested<any, any, infer F, any, any, any, any> ? T extends TypesNested<infer P, any, any, any, any, any, any> ? TypesNested<P, T['ElementKind'], F, T['ViewId'], T['RelationshipKind'], T['Tag'], T['MetadataKey']> : T extends AnyTypes ? Types<T['ElementKind'], F, T['ViewId'], T['RelationshipKind'], T['Tag'], T['MetadataKey']> : never : never;
|
|
672
|
+
/**
|
|
673
|
+
* Chainable builder to create element
|
|
674
|
+
*/
|
|
675
|
+
interface AddElement<Id extends string> {
|
|
676
|
+
<T extends AnyTypes>(builder: ModelBuilder<T>): ModelBuilder<Types.AddFqn<T, Id>>;
|
|
677
|
+
with<T extends AnyTypes, A extends AnyTypes>(op1: (input: ModelBuilder<ToNested<T, Id>>) => ModelBuilder<A>): (builder: ModelBuilder<T>) => ModelBuilder<FromNested<T, A>>;
|
|
678
|
+
with<T extends AnyTypes, A extends AnyTypes, B extends AnyTypes>(op1: (input: ModelBuilder<ToNested<T, Id>>) => ModelBuilder<A>, op2: (input: ModelBuilder<A>) => ModelBuilder<B>): (builder: ModelBuilder<T>) => ModelBuilder<FromNested<T, B>>;
|
|
679
|
+
with<T extends AnyTypes, A extends AnyTypes, B extends AnyTypes, C extends AnyTypes>(op1: (input: ModelBuilder<ToNested<T, Id>>) => ModelBuilder<A>, op2: (input: ModelBuilder<A>) => ModelBuilder<B>, op3: (input: ModelBuilder<B>) => ModelBuilder<C>): (builder: ModelBuilder<T>) => ModelBuilder<FromNested<T, C>>;
|
|
680
|
+
with<T extends AnyTypes, A extends AnyTypes, B extends AnyTypes, C extends AnyTypes, D extends AnyTypes>(op1: (input: ModelBuilder<ToNested<T, Id>>) => ModelBuilder<A>, op2: (input: ModelBuilder<A>) => ModelBuilder<B>, op3: (input: ModelBuilder<B>) => ModelBuilder<C>, op4: (input: ModelBuilder<C>) => ModelBuilder<D>): (builder: ModelBuilder<T>) => ModelBuilder<FromNested<T, D>>;
|
|
681
|
+
with<T extends AnyTypes, A extends AnyTypes, B extends AnyTypes, C extends AnyTypes, D extends AnyTypes, E extends AnyTypes>(op1: (input: ModelBuilder<ToNested<T, Id>>) => ModelBuilder<A>, op2: (input: ModelBuilder<A>) => ModelBuilder<B>, op3: (input: ModelBuilder<B>) => ModelBuilder<C>, op4: (input: ModelBuilder<C>) => ModelBuilder<D>, op5: (input: ModelBuilder<D>) => ModelBuilder<E>): (builder: ModelBuilder<T>) => ModelBuilder<FromNested<T, E>>;
|
|
682
|
+
with<T extends AnyTypes, A extends AnyTypes, B extends AnyTypes, C extends AnyTypes, D extends AnyTypes, E extends AnyTypes, F extends AnyTypes>(op1: (input: ModelBuilder<ToNested<T, Id>>) => ModelBuilder<A>, op2: (input: ModelBuilder<A>) => ModelBuilder<B>, op3: (input: ModelBuilder<B>) => ModelBuilder<C>, op4: (input: ModelBuilder<C>) => ModelBuilder<D>, op5: (input: ModelBuilder<D>) => ModelBuilder<E>, op6: (input: ModelBuilder<E>) => ModelBuilder<F>): (builder: ModelBuilder<T>) => ModelBuilder<FromNested<T, F>>;
|
|
683
|
+
with<T extends AnyTypes, A extends AnyTypes, B extends AnyTypes, C extends AnyTypes, D extends AnyTypes, E extends AnyTypes, F extends AnyTypes, G extends AnyTypes>(op1: (input: ModelBuilder<ToNested<T, Id>>) => ModelBuilder<A>, op2: (input: ModelBuilder<A>) => ModelBuilder<B>, op3: (input: ModelBuilder<B>) => ModelBuilder<C>, op4: (input: ModelBuilder<C>) => ModelBuilder<D>, op5: (input: ModelBuilder<D>) => ModelBuilder<E>, op6: (input: ModelBuilder<E>) => ModelBuilder<F>, op7: (input: ModelBuilder<F>) => ModelBuilder<G>): (builder: ModelBuilder<T>) => ModelBuilder<FromNested<T, G>>;
|
|
684
|
+
with<T extends AnyTypes, A extends AnyTypes, B extends AnyTypes, C extends AnyTypes, D extends AnyTypes, E extends AnyTypes, F extends AnyTypes, G extends AnyTypes, H extends AnyTypes>(op1: (input: ModelBuilder<ToNested<T, Id>>) => ModelBuilder<A>, op2: (input: ModelBuilder<A>) => ModelBuilder<B>, op3: (input: ModelBuilder<B>) => ModelBuilder<C>, op4: (input: ModelBuilder<C>) => ModelBuilder<D>, op5: (input: ModelBuilder<D>) => ModelBuilder<E>, op6: (input: ModelBuilder<E>) => ModelBuilder<F>, op7: (input: ModelBuilder<F>) => ModelBuilder<G>, op8: (input: ModelBuilder<G>) => ModelBuilder<H>): (builder: ModelBuilder<T>) => ModelBuilder<FromNested<T, H>>;
|
|
685
|
+
with<T extends AnyTypes, A extends AnyTypes, B extends AnyTypes, C extends AnyTypes, D extends AnyTypes, E extends AnyTypes, F extends AnyTypes, G extends AnyTypes, H extends AnyTypes, I extends AnyTypes>(op1: (input: ModelBuilder<ToNested<T, Id>>) => ModelBuilder<A>, op2: (input: ModelBuilder<A>) => ModelBuilder<B>, op3: (input: ModelBuilder<B>) => ModelBuilder<C>, op4: (input: ModelBuilder<C>) => ModelBuilder<D>, op5: (input: ModelBuilder<D>) => ModelBuilder<E>, op6: (input: ModelBuilder<E>) => ModelBuilder<F>, op7: (input: ModelBuilder<F>) => ModelBuilder<G>, op8: (input: ModelBuilder<G>) => ModelBuilder<H>, op9: (input: ModelBuilder<H>) => ModelBuilder<I>): (builder: ModelBuilder<T>) => ModelBuilder<FromNested<T, I>>;
|
|
686
|
+
with<T extends AnyTypes, A extends AnyTypes, B extends AnyTypes, C extends AnyTypes, D extends AnyTypes, E extends AnyTypes, F extends AnyTypes, G extends AnyTypes, H extends AnyTypes, I extends AnyTypes, J extends AnyTypes>(op1: (input: ModelBuilder<ToNested<T, Id>>) => ModelBuilder<A>, op2: (input: ModelBuilder<A>) => ModelBuilder<B>, op3: (input: ModelBuilder<B>) => ModelBuilder<C>, op4: (input: ModelBuilder<C>) => ModelBuilder<D>, op5: (input: ModelBuilder<D>) => ModelBuilder<E>, op6: (input: ModelBuilder<E>) => ModelBuilder<F>, op7: (input: ModelBuilder<F>) => ModelBuilder<G>, op8: (input: ModelBuilder<G>) => ModelBuilder<H>, op9: (input: ModelBuilder<H>) => ModelBuilder<I>, op10: (input: ModelBuilder<I>) => ModelBuilder<J>): (builder: ModelBuilder<T>) => ModelBuilder<FromNested<T, J>>;
|
|
687
|
+
}
|
|
688
|
+
type AddElementHelper<T = unknown> = <const Id extends string>(id: Id, titleOrProps?: string | T) => AddElement<Id>;
|
|
689
|
+
type AddElementHelpers<T extends AnyTypes> = T extends Types<infer Kinds extends string, any, any, any, any, any> ? {
|
|
690
|
+
[Kind in Kinds]: AddElementHelper<T['NewElementProps']>;
|
|
691
|
+
} : Invalid<'No Element Kinds'>;
|
|
692
|
+
|
|
693
|
+
interface ModelBuilder<T extends AnyTypes> {
|
|
694
|
+
addElement(element: Element$1): Builder<T>;
|
|
695
|
+
addRelation(relation: Omit<Relation$1, 'id'>): Builder<T>;
|
|
696
|
+
/**
|
|
697
|
+
* Create a fully qualified name from an id (for nested models)
|
|
698
|
+
*/
|
|
699
|
+
fqn(id: string): Fqn$1;
|
|
700
|
+
addSourcelessRelation(relation: Omit<Relation$1, 'id' | 'source'>): Builder<T>;
|
|
701
|
+
}
|
|
702
|
+
declare function model<A extends AnyTypes, B extends AnyTypes>(op1: (input: ModelBuilder<A>) => ModelBuilder<B>): (input: Builder<A>) => Builder<B>;
|
|
703
|
+
declare function model<A extends AnyTypes, B extends AnyTypes, C extends AnyTypes>(op1: (input: ModelBuilder<A>) => ModelBuilder<B>, op2: (input: ModelBuilder<B>) => ModelBuilder<C>): (input: Builder<A>) => Builder<C>;
|
|
704
|
+
declare function model<A extends AnyTypes, B extends AnyTypes, C extends AnyTypes, D extends AnyTypes>(op1: (input: ModelBuilder<A>) => ModelBuilder<B>, op2: (input: ModelBuilder<B>) => ModelBuilder<C>, op3: (input: ModelBuilder<C>) => ModelBuilder<D>): (input: Builder<A>) => Builder<D>;
|
|
705
|
+
declare function model<A extends AnyTypes, B extends AnyTypes, C extends AnyTypes, D extends AnyTypes, E extends AnyTypes>(op1: (input: ModelBuilder<A>) => ModelBuilder<B>, op2: (input: ModelBuilder<B>) => ModelBuilder<C>, op3: (input: ModelBuilder<C>) => ModelBuilder<D>, op4: (input: ModelBuilder<D>) => ModelBuilder<E>): (input: Builder<A>) => Builder<E>;
|
|
706
|
+
declare function model<A extends AnyTypes, B extends AnyTypes, C extends AnyTypes, D extends AnyTypes, E extends AnyTypes, F extends AnyTypes>(op1: (input: ModelBuilder<A>) => ModelBuilder<B>, op2: (input: ModelBuilder<B>) => ModelBuilder<C>, op3: (input: ModelBuilder<C>) => ModelBuilder<D>, op4: (input: ModelBuilder<D>) => ModelBuilder<E>, op5: (input: ModelBuilder<E>) => ModelBuilder<F>): (input: Builder<A>) => Builder<F>;
|
|
707
|
+
declare function model<A extends AnyTypes, B extends AnyTypes, C extends AnyTypes, D extends AnyTypes, E extends AnyTypes, F extends AnyTypes, G extends AnyTypes>(op1: (input: ModelBuilder<A>) => ModelBuilder<B>, op2: (input: ModelBuilder<B>) => ModelBuilder<C>, op3: (input: ModelBuilder<C>) => ModelBuilder<D>, op4: (input: ModelBuilder<D>) => ModelBuilder<E>, op5: (input: ModelBuilder<E>) => ModelBuilder<F>, op6: (input: ModelBuilder<F>) => ModelBuilder<G>): (input: Builder<A>) => Builder<G>;
|
|
708
|
+
declare function model<A extends AnyTypes, B extends AnyTypes, C extends AnyTypes, D extends AnyTypes, E extends AnyTypes, F extends AnyTypes, G extends AnyTypes, H extends AnyTypes>(op1: (input: ModelBuilder<A>) => ModelBuilder<B>, op2: (input: ModelBuilder<B>) => ModelBuilder<C>, op3: (input: ModelBuilder<C>) => ModelBuilder<D>, op4: (input: ModelBuilder<D>) => ModelBuilder<E>, op5: (input: ModelBuilder<E>) => ModelBuilder<F>, op6: (input: ModelBuilder<F>) => ModelBuilder<G>, op7: (input: ModelBuilder<G>) => ModelBuilder<H>): (input: Builder<A>) => Builder<H>;
|
|
709
|
+
declare function model<A extends AnyTypes, B extends AnyTypes, C extends AnyTypes, D extends AnyTypes, E extends AnyTypes, F extends AnyTypes, G extends AnyTypes, H extends AnyTypes, I extends AnyTypes>(op1: (input: ModelBuilder<A>) => ModelBuilder<B>, op2: (input: ModelBuilder<B>) => ModelBuilder<C>, op3: (input: ModelBuilder<C>) => ModelBuilder<D>, op4: (input: ModelBuilder<D>) => ModelBuilder<E>, op5: (input: ModelBuilder<E>) => ModelBuilder<F>, op6: (input: ModelBuilder<F>) => ModelBuilder<G>, op7: (input: ModelBuilder<G>) => ModelBuilder<H>, op8: (input: ModelBuilder<H>) => ModelBuilder<I>): (input: Builder<A>) => Builder<I>;
|
|
710
|
+
declare function model<A extends AnyTypes, B extends AnyTypes, C extends AnyTypes, D extends AnyTypes, E extends AnyTypes, F extends AnyTypes, G extends AnyTypes, H extends AnyTypes, I extends AnyTypes, J extends AnyTypes>(op1: (input: ModelBuilder<A>) => ModelBuilder<B>, op2: (input: ModelBuilder<B>) => ModelBuilder<C>, op3: (input: ModelBuilder<C>) => ModelBuilder<D>, op4: (input: ModelBuilder<D>) => ModelBuilder<E>, op5: (input: ModelBuilder<E>) => ModelBuilder<F>, op6: (input: ModelBuilder<F>) => ModelBuilder<G>, op7: (input: ModelBuilder<G>) => ModelBuilder<H>, op8: (input: ModelBuilder<H>) => ModelBuilder<I>, op9: (input: ModelBuilder<I>) => ModelBuilder<J>): (input: Builder<A>) => Builder<J>;
|
|
711
|
+
declare function model<A extends AnyTypes, B extends AnyTypes, C extends AnyTypes, D extends AnyTypes, E extends AnyTypes, F extends AnyTypes, G extends AnyTypes, H extends AnyTypes, I extends AnyTypes, J extends AnyTypes, K extends AnyTypes>(op1: (input: ModelBuilder<A>) => ModelBuilder<B>, op2: (input: ModelBuilder<B>) => ModelBuilder<C>, op3: (input: ModelBuilder<C>) => ModelBuilder<D>, op4: (input: ModelBuilder<D>) => ModelBuilder<E>, op5: (input: ModelBuilder<E>) => ModelBuilder<F>, op6: (input: ModelBuilder<F>) => ModelBuilder<G>, op7: (input: ModelBuilder<G>) => ModelBuilder<H>, op8: (input: ModelBuilder<H>) => ModelBuilder<I>, op9: (input: ModelBuilder<I>) => ModelBuilder<J>, op10: (input: ModelBuilder<J>) => ModelBuilder<K>): (input: Builder<A>) => Builder<K>;
|
|
712
|
+
declare function model<A extends AnyTypes, B extends AnyTypes, C extends AnyTypes, D extends AnyTypes, E extends AnyTypes, F extends AnyTypes, G extends AnyTypes, H extends AnyTypes, I extends AnyTypes, J extends AnyTypes, K extends AnyTypes, L extends AnyTypes>(op1: (input: ModelBuilder<A>) => ModelBuilder<B>, op2: (input: ModelBuilder<B>) => ModelBuilder<C>, op3: (input: ModelBuilder<C>) => ModelBuilder<D>, op4: (input: ModelBuilder<D>) => ModelBuilder<E>, op5: (input: ModelBuilder<E>) => ModelBuilder<F>, op6: (input: ModelBuilder<F>) => ModelBuilder<G>, op7: (input: ModelBuilder<G>) => ModelBuilder<H>, op8: (input: ModelBuilder<H>) => ModelBuilder<I>, op9: (input: ModelBuilder<I>) => ModelBuilder<J>, op10: (input: ModelBuilder<J>) => ModelBuilder<K>, op11: (input: ModelBuilder<K>) => ModelBuilder<L>): (input: Builder<A>) => Builder<L>;
|
|
713
|
+
declare function model<A extends AnyTypes, B extends AnyTypes, C extends AnyTypes, D extends AnyTypes, E extends AnyTypes, F extends AnyTypes, G extends AnyTypes, H extends AnyTypes, I extends AnyTypes, J extends AnyTypes, K extends AnyTypes, L extends AnyTypes, M extends AnyTypes>(op1: (input: ModelBuilder<A>) => ModelBuilder<B>, op2: (input: ModelBuilder<B>) => ModelBuilder<C>, op3: (input: ModelBuilder<C>) => ModelBuilder<D>, op4: (input: ModelBuilder<D>) => ModelBuilder<E>, op5: (input: ModelBuilder<E>) => ModelBuilder<F>, op6: (input: ModelBuilder<F>) => ModelBuilder<G>, op7: (input: ModelBuilder<G>) => ModelBuilder<H>, op8: (input: ModelBuilder<H>) => ModelBuilder<I>, op9: (input: ModelBuilder<I>) => ModelBuilder<J>, op10: (input: ModelBuilder<J>) => ModelBuilder<K>, op11: (input: ModelBuilder<K>) => ModelBuilder<L>, op12: (input: ModelBuilder<L>) => ModelBuilder<M>): (input: Builder<A>) => Builder<M>;
|
|
714
|
+
declare function model<A extends AnyTypes, B extends AnyTypes, C extends AnyTypes, D extends AnyTypes, E extends AnyTypes, F extends AnyTypes, G extends AnyTypes, H extends AnyTypes, I extends AnyTypes, J extends AnyTypes, K extends AnyTypes, L extends AnyTypes, M extends AnyTypes, N extends AnyTypes>(op1: (input: ModelBuilder<A>) => ModelBuilder<B>, op2: (input: ModelBuilder<B>) => ModelBuilder<C>, op3: (input: ModelBuilder<C>) => ModelBuilder<D>, op4: (input: ModelBuilder<D>) => ModelBuilder<E>, op5: (input: ModelBuilder<E>) => ModelBuilder<F>, op6: (input: ModelBuilder<F>) => ModelBuilder<G>, op7: (input: ModelBuilder<G>) => ModelBuilder<H>, op8: (input: ModelBuilder<H>) => ModelBuilder<I>, op9: (input: ModelBuilder<I>) => ModelBuilder<J>, op10: (input: ModelBuilder<J>) => ModelBuilder<K>, op11: (input: ModelBuilder<K>) => ModelBuilder<L>, op12: (input: ModelBuilder<L>) => ModelBuilder<M>, op13: (input: ModelBuilder<M>) => ModelBuilder<N>): (input: Builder<A>) => Builder<N>;
|
|
715
|
+
declare function model<A extends AnyTypes, B extends AnyTypes, C extends AnyTypes, D extends AnyTypes, E extends AnyTypes, F extends AnyTypes, G extends AnyTypes, H extends AnyTypes, I extends AnyTypes, J extends AnyTypes, K extends AnyTypes, L extends AnyTypes, M extends AnyTypes, N extends AnyTypes, O extends AnyTypes>(op1: (input: ModelBuilder<A>) => ModelBuilder<B>, op2: (input: ModelBuilder<B>) => ModelBuilder<C>, op3: (input: ModelBuilder<C>) => ModelBuilder<D>, op4: (input: ModelBuilder<D>) => ModelBuilder<E>, op5: (input: ModelBuilder<E>) => ModelBuilder<F>, op6: (input: ModelBuilder<F>) => ModelBuilder<G>, op7: (input: ModelBuilder<G>) => ModelBuilder<H>, op8: (input: ModelBuilder<H>) => ModelBuilder<I>, op9: (input: ModelBuilder<I>) => ModelBuilder<J>, op10: (input: ModelBuilder<J>) => ModelBuilder<K>, op11: (input: ModelBuilder<K>) => ModelBuilder<L>, op12: (input: ModelBuilder<L>) => ModelBuilder<M>, op13: (input: ModelBuilder<M>) => ModelBuilder<N>, op14: (input: ModelBuilder<N>) => ModelBuilder<O>): (input: Builder<A>) => Builder<O>;
|
|
716
|
+
declare function model<A extends AnyTypes, B extends AnyTypes, C extends AnyTypes, D extends AnyTypes, E extends AnyTypes, F extends AnyTypes, G extends AnyTypes, H extends AnyTypes, I extends AnyTypes, J extends AnyTypes, K extends AnyTypes, L extends AnyTypes, M extends AnyTypes, N extends AnyTypes, O extends AnyTypes, P extends AnyTypes>(op1: (input: ModelBuilder<A>) => ModelBuilder<B>, op2: (input: ModelBuilder<B>) => ModelBuilder<C>, op3: (input: ModelBuilder<C>) => ModelBuilder<D>, op4: (input: ModelBuilder<D>) => ModelBuilder<E>, op5: (input: ModelBuilder<E>) => ModelBuilder<F>, op6: (input: ModelBuilder<F>) => ModelBuilder<G>, op7: (input: ModelBuilder<G>) => ModelBuilder<H>, op8: (input: ModelBuilder<H>) => ModelBuilder<I>, op9: (input: ModelBuilder<I>) => ModelBuilder<J>, op10: (input: ModelBuilder<J>) => ModelBuilder<K>, op11: (input: ModelBuilder<K>) => ModelBuilder<L>, op12: (input: ModelBuilder<L>) => ModelBuilder<M>, op13: (input: ModelBuilder<M>) => ModelBuilder<N>, op14: (input: ModelBuilder<N>) => ModelBuilder<O>, op15: (input: ModelBuilder<O>) => ModelBuilder<P>): (input: Builder<A>) => Builder<P>;
|
|
717
|
+
type RelationshipHelper<Props = unknown> = <T extends AnyTypes, From extends string & T['Fqn'], To extends string & T['Fqn']>(from: From, to: To, titleOrProps?: string | Props) => (builder: ModelBuilder<T>) => ModelBuilder<T>;
|
|
718
|
+
type NestedRelationshipHelper<Props = unknown> = <T extends AnyTypesNested, To extends string & T['Fqn']>(to: To, titleOrProps?: string | Props) => (builder: ModelBuilder<T>) => ModelBuilder<T>;
|
|
719
|
+
type ModelHelpers<T extends AnyTypes> = AddElementHelpers<T> & {
|
|
720
|
+
model: typeof model;
|
|
721
|
+
rel: RelationshipHelper<T['NewRelationshipProps']>;
|
|
722
|
+
relTo: NestedRelationshipHelper<T['NewRelationshipProps']>;
|
|
723
|
+
};
|
|
724
|
+
|
|
725
|
+
interface ViewsBuilder<T extends AnyTypes> {
|
|
726
|
+
addView(view: LikeC4View$1): Builder<T>;
|
|
727
|
+
}
|
|
728
|
+
declare function views<A extends AnyTypes, B extends AnyTypes>(op1: (input: ViewsBuilder<A>) => ViewsBuilder<B>): (input: Builder<A>) => Builder<B>;
|
|
729
|
+
declare function views<A extends AnyTypes, B extends AnyTypes, C extends AnyTypes>(op1: (input: ViewsBuilder<A>) => ViewsBuilder<B>, op2: (input: ViewsBuilder<B>) => ViewsBuilder<C>): (input: Builder<A>) => Builder<C>;
|
|
730
|
+
declare function views<A extends AnyTypes, B extends AnyTypes, C extends AnyTypes, D extends AnyTypes>(op1: (input: ViewsBuilder<A>) => ViewsBuilder<B>, op2: (input: ViewsBuilder<B>) => ViewsBuilder<C>, op3: (input: ViewsBuilder<C>) => ViewsBuilder<D>): (input: Builder<A>) => Builder<D>;
|
|
731
|
+
declare function views<A extends AnyTypes, B extends AnyTypes, C extends AnyTypes, D extends AnyTypes, E extends AnyTypes>(op1: (input: ViewsBuilder<A>) => ViewsBuilder<B>, op2: (input: ViewsBuilder<B>) => ViewsBuilder<C>, op3: (input: ViewsBuilder<C>) => ViewsBuilder<D>, op4: (input: ViewsBuilder<D>) => ViewsBuilder<E>): (input: Builder<A>) => Builder<E>;
|
|
732
|
+
declare function views<A extends AnyTypes, B extends AnyTypes, C extends AnyTypes, D extends AnyTypes, E extends AnyTypes, F extends AnyTypes>(op1: (input: ViewsBuilder<A>) => ViewsBuilder<B>, op2: (input: ViewsBuilder<B>) => ViewsBuilder<C>, op3: (input: ViewsBuilder<C>) => ViewsBuilder<D>, op4: (input: ViewsBuilder<D>) => ViewsBuilder<E>, op5: (input: ViewsBuilder<E>) => ViewsBuilder<F>): (input: Builder<A>) => Builder<F>;
|
|
733
|
+
declare function views<A extends AnyTypes, B extends AnyTypes, C extends AnyTypes, D extends AnyTypes, E extends AnyTypes, F extends AnyTypes, G extends AnyTypes>(op1: (input: ViewsBuilder<A>) => ViewsBuilder<B>, op2: (input: ViewsBuilder<B>) => ViewsBuilder<C>, op3: (input: ViewsBuilder<C>) => ViewsBuilder<D>, op4: (input: ViewsBuilder<D>) => ViewsBuilder<E>, op5: (input: ViewsBuilder<E>) => ViewsBuilder<F>, op6: (input: ViewsBuilder<F>) => ViewsBuilder<G>): (input: Builder<A>) => Builder<G>;
|
|
734
|
+
declare function views<A extends AnyTypes, B extends AnyTypes, C extends AnyTypes, D extends AnyTypes, E extends AnyTypes, F extends AnyTypes, G extends AnyTypes, H extends AnyTypes>(op1: (input: ViewsBuilder<A>) => ViewsBuilder<B>, op2: (input: ViewsBuilder<B>) => ViewsBuilder<C>, op3: (input: ViewsBuilder<C>) => ViewsBuilder<D>, op4: (input: ViewsBuilder<D>) => ViewsBuilder<E>, op5: (input: ViewsBuilder<E>) => ViewsBuilder<F>, op6: (input: ViewsBuilder<F>) => ViewsBuilder<G>, op7: (input: ViewsBuilder<G>) => ViewsBuilder<H>): (input: Builder<A>) => Builder<H>;
|
|
735
|
+
declare function views<A extends AnyTypes, B extends AnyTypes, C extends AnyTypes, D extends AnyTypes, E extends AnyTypes, F extends AnyTypes, G extends AnyTypes, H extends AnyTypes, I extends AnyTypes>(op1: (input: ViewsBuilder<A>) => ViewsBuilder<B>, op2: (input: ViewsBuilder<B>) => ViewsBuilder<C>, op3: (input: ViewsBuilder<C>) => ViewsBuilder<D>, op4: (input: ViewsBuilder<D>) => ViewsBuilder<E>, op5: (input: ViewsBuilder<E>) => ViewsBuilder<F>, op6: (input: ViewsBuilder<F>) => ViewsBuilder<G>, op7: (input: ViewsBuilder<G>) => ViewsBuilder<H>, op8: (input: ViewsBuilder<H>) => ViewsBuilder<I>): (input: Builder<A>) => Builder<I>;
|
|
736
|
+
declare function views<A extends AnyTypes, B extends AnyTypes, C extends AnyTypes, D extends AnyTypes, E extends AnyTypes, F extends AnyTypes, G extends AnyTypes, H extends AnyTypes, I extends AnyTypes, J extends AnyTypes>(op1: (input: ViewsBuilder<A>) => ViewsBuilder<B>, op2: (input: ViewsBuilder<B>) => ViewsBuilder<C>, op3: (input: ViewsBuilder<C>) => ViewsBuilder<D>, op4: (input: ViewsBuilder<D>) => ViewsBuilder<E>, op5: (input: ViewsBuilder<E>) => ViewsBuilder<F>, op6: (input: ViewsBuilder<F>) => ViewsBuilder<G>, op7: (input: ViewsBuilder<G>) => ViewsBuilder<H>, op8: (input: ViewsBuilder<H>) => ViewsBuilder<I>, op9: (input: ViewsBuilder<I>) => ViewsBuilder<J>): (input: Builder<A>) => Builder<J>;
|
|
737
|
+
declare function views<A extends AnyTypes, B extends AnyTypes, C extends AnyTypes, D extends AnyTypes, E extends AnyTypes, F extends AnyTypes, G extends AnyTypes, H extends AnyTypes, I extends AnyTypes, J extends AnyTypes, K extends AnyTypes>(op1: (input: ViewsBuilder<A>) => ViewsBuilder<B>, op2: (input: ViewsBuilder<B>) => ViewsBuilder<C>, op3: (input: ViewsBuilder<C>) => ViewsBuilder<D>, op4: (input: ViewsBuilder<D>) => ViewsBuilder<E>, op5: (input: ViewsBuilder<E>) => ViewsBuilder<F>, op6: (input: ViewsBuilder<F>) => ViewsBuilder<G>, op7: (input: ViewsBuilder<G>) => ViewsBuilder<H>, op8: (input: ViewsBuilder<H>) => ViewsBuilder<I>, op9: (input: ViewsBuilder<I>) => ViewsBuilder<J>, op10: (input: ViewsBuilder<J>) => ViewsBuilder<K>): (input: Builder<A>) => Builder<K>;
|
|
738
|
+
declare function views<A extends AnyTypes, B extends AnyTypes, C extends AnyTypes, D extends AnyTypes, E extends AnyTypes, F extends AnyTypes, G extends AnyTypes, H extends AnyTypes, I extends AnyTypes, J extends AnyTypes, K extends AnyTypes, L extends AnyTypes>(op1: (input: ViewsBuilder<A>) => ViewsBuilder<B>, op2: (input: ViewsBuilder<B>) => ViewsBuilder<C>, op3: (input: ViewsBuilder<C>) => ViewsBuilder<D>, op4: (input: ViewsBuilder<D>) => ViewsBuilder<E>, op5: (input: ViewsBuilder<E>) => ViewsBuilder<F>, op6: (input: ViewsBuilder<F>) => ViewsBuilder<G>, op7: (input: ViewsBuilder<G>) => ViewsBuilder<H>, op8: (input: ViewsBuilder<H>) => ViewsBuilder<I>, op9: (input: ViewsBuilder<I>) => ViewsBuilder<J>, op10: (input: ViewsBuilder<J>) => ViewsBuilder<K>, op11: (input: ViewsBuilder<K>) => ViewsBuilder<L>): (input: Builder<A>) => Builder<L>;
|
|
739
|
+
declare function views<A extends AnyTypes, B extends AnyTypes, C extends AnyTypes, D extends AnyTypes, E extends AnyTypes, F extends AnyTypes, G extends AnyTypes, H extends AnyTypes, I extends AnyTypes, J extends AnyTypes, K extends AnyTypes, L extends AnyTypes, M extends AnyTypes>(op1: (input: ViewsBuilder<A>) => ViewsBuilder<B>, op2: (input: ViewsBuilder<B>) => ViewsBuilder<C>, op3: (input: ViewsBuilder<C>) => ViewsBuilder<D>, op4: (input: ViewsBuilder<D>) => ViewsBuilder<E>, op5: (input: ViewsBuilder<E>) => ViewsBuilder<F>, op6: (input: ViewsBuilder<F>) => ViewsBuilder<G>, op7: (input: ViewsBuilder<G>) => ViewsBuilder<H>, op8: (input: ViewsBuilder<H>) => ViewsBuilder<I>, op9: (input: ViewsBuilder<I>) => ViewsBuilder<J>, op10: (input: ViewsBuilder<J>) => ViewsBuilder<K>, op11: (input: ViewsBuilder<K>) => ViewsBuilder<L>, op12: (input: ViewsBuilder<L>) => ViewsBuilder<M>): (input: Builder<A>) => Builder<M>;
|
|
740
|
+
declare function views<A extends AnyTypes, B extends AnyTypes, C extends AnyTypes, D extends AnyTypes, E extends AnyTypes, F extends AnyTypes, G extends AnyTypes, H extends AnyTypes, I extends AnyTypes, J extends AnyTypes, K extends AnyTypes, L extends AnyTypes, M extends AnyTypes, N extends AnyTypes>(op1: (input: ViewsBuilder<A>) => ViewsBuilder<B>, op2: (input: ViewsBuilder<B>) => ViewsBuilder<C>, op3: (input: ViewsBuilder<C>) => ViewsBuilder<D>, op4: (input: ViewsBuilder<D>) => ViewsBuilder<E>, op5: (input: ViewsBuilder<E>) => ViewsBuilder<F>, op6: (input: ViewsBuilder<F>) => ViewsBuilder<G>, op7: (input: ViewsBuilder<G>) => ViewsBuilder<H>, op8: (input: ViewsBuilder<H>) => ViewsBuilder<I>, op9: (input: ViewsBuilder<I>) => ViewsBuilder<J>, op10: (input: ViewsBuilder<J>) => ViewsBuilder<K>, op11: (input: ViewsBuilder<K>) => ViewsBuilder<L>, op12: (input: ViewsBuilder<L>) => ViewsBuilder<M>, op13: (input: ViewsBuilder<M>) => ViewsBuilder<N>): (input: Builder<A>) => Builder<N>;
|
|
741
|
+
declare function views<A extends AnyTypes, B extends AnyTypes, C extends AnyTypes, D extends AnyTypes, E extends AnyTypes, F extends AnyTypes, G extends AnyTypes, H extends AnyTypes, I extends AnyTypes, J extends AnyTypes, K extends AnyTypes, L extends AnyTypes, M extends AnyTypes, N extends AnyTypes, O extends AnyTypes>(op1: (input: ViewsBuilder<A>) => ViewsBuilder<B>, op2: (input: ViewsBuilder<B>) => ViewsBuilder<C>, op3: (input: ViewsBuilder<C>) => ViewsBuilder<D>, op4: (input: ViewsBuilder<D>) => ViewsBuilder<E>, op5: (input: ViewsBuilder<E>) => ViewsBuilder<F>, op6: (input: ViewsBuilder<F>) => ViewsBuilder<G>, op7: (input: ViewsBuilder<G>) => ViewsBuilder<H>, op8: (input: ViewsBuilder<H>) => ViewsBuilder<I>, op9: (input: ViewsBuilder<I>) => ViewsBuilder<J>, op10: (input: ViewsBuilder<J>) => ViewsBuilder<K>, op11: (input: ViewsBuilder<K>) => ViewsBuilder<L>, op12: (input: ViewsBuilder<L>) => ViewsBuilder<M>, op13: (input: ViewsBuilder<M>) => ViewsBuilder<N>, op14: (input: ViewsBuilder<N>) => ViewsBuilder<O>): (input: Builder<A>) => Builder<O>;
|
|
742
|
+
declare function views<A extends AnyTypes, B extends AnyTypes, C extends AnyTypes, D extends AnyTypes, E extends AnyTypes, F extends AnyTypes, G extends AnyTypes, H extends AnyTypes, I extends AnyTypes, J extends AnyTypes, K extends AnyTypes, L extends AnyTypes, M extends AnyTypes, N extends AnyTypes, O extends AnyTypes, P extends AnyTypes>(op1: (input: ViewsBuilder<A>) => ViewsBuilder<B>, op2: (input: ViewsBuilder<B>) => ViewsBuilder<C>, op3: (input: ViewsBuilder<C>) => ViewsBuilder<D>, op4: (input: ViewsBuilder<D>) => ViewsBuilder<E>, op5: (input: ViewsBuilder<E>) => ViewsBuilder<F>, op6: (input: ViewsBuilder<F>) => ViewsBuilder<G>, op7: (input: ViewsBuilder<G>) => ViewsBuilder<H>, op8: (input: ViewsBuilder<H>) => ViewsBuilder<I>, op9: (input: ViewsBuilder<I>) => ViewsBuilder<J>, op10: (input: ViewsBuilder<J>) => ViewsBuilder<K>, op11: (input: ViewsBuilder<K>) => ViewsBuilder<L>, op12: (input: ViewsBuilder<L>) => ViewsBuilder<M>, op13: (input: ViewsBuilder<M>) => ViewsBuilder<N>, op14: (input: ViewsBuilder<N>) => ViewsBuilder<O>, op15: (input: ViewsBuilder<O>) => ViewsBuilder<P>): (input: Builder<A>) => Builder<P>;
|
|
743
|
+
|
|
744
|
+
interface ViewBuilder<T extends AnyTypes> {
|
|
745
|
+
include(...exprs: Expression$1[]): ViewBuilder<T>;
|
|
746
|
+
exclude(...exprs: Expression$1[]): ViewBuilder<T>;
|
|
747
|
+
style(rule: ViewRuleStyle$1): ViewBuilder<T>;
|
|
748
|
+
autoLayout(layout: AutoLayoutDirection): ViewBuilder<T>;
|
|
749
|
+
}
|
|
750
|
+
declare namespace ViewPredicate {
|
|
751
|
+
export type ElementExpr<Fqn extends string> = '*' | Fqn | `${Fqn}.*` | `${Fqn}._`;
|
|
752
|
+
type AllExpression<ElementExpr extends string> = ElementExpr | `-> ${ElementExpr} ->` | `-> ${ElementExpr}` | `${ElementExpr} ->` | `${ElementExpr} ${'->' | '<->'} ${ElementExpr}`;
|
|
753
|
+
export type Expression<T extends AnyTypes> = T extends Types<any, infer F extends string, any, any, any, any> ? AllExpression<ViewPredicate.ElementExpr<F>> : never;
|
|
754
|
+
export type WhereTag<Tag extends string> = `tag ${'is' | 'is not'} #${Tag}`;
|
|
755
|
+
export type WhereKind<Kind extends string> = `kind ${'is' | 'is not'} ${Kind}`;
|
|
756
|
+
export type WhereEq<Types extends AnyTypes> = ViewPredicate.WhereTag<Types['Tag']> | ViewPredicate.WhereKind<Types['ElementKind']>;
|
|
757
|
+
export type WhereOperator<Types extends AnyTypes> = ViewPredicate.WhereEq<Types> | {
|
|
758
|
+
and: NonEmptyArray<ViewPredicate.WhereOperator<Types>>;
|
|
759
|
+
or?: never;
|
|
760
|
+
not?: never;
|
|
761
|
+
} | {
|
|
762
|
+
or: NonEmptyArray<ViewPredicate.WhereOperator<Types>>;
|
|
763
|
+
and?: never;
|
|
764
|
+
not?: never;
|
|
765
|
+
} | {
|
|
766
|
+
not: ViewPredicate.WhereOperator<Types>;
|
|
767
|
+
and?: never;
|
|
768
|
+
or?: never;
|
|
769
|
+
};
|
|
770
|
+
export type Custom<Types extends AnyTypes> = {
|
|
771
|
+
where?: ViewPredicate.WhereOperator<Types>;
|
|
772
|
+
with?: Simplify<Omit<CustomElementExpr['custom'] & CustomRelationExpr['customRelation'], 'expr' | 'relation' | 'navigateTo'> & {
|
|
773
|
+
navigateTo?: Types['ViewId'];
|
|
774
|
+
}>;
|
|
775
|
+
};
|
|
776
|
+
export { };
|
|
777
|
+
}
|
|
778
|
+
type ViewRuleBuilderOp<Types extends AnyTypes> = (b: ViewBuilder<Types>) => ViewBuilder<Types>;
|
|
779
|
+
interface AddViewHelper<Props = unknown> {
|
|
780
|
+
<const Id extends string, T extends AnyTypes>(id: Id, builder: (b: ViewBuilder<T>) => ViewBuilder<T>): (builder: ViewsBuilder<T>) => ViewsBuilder<Types.AddView<T, Id>>;
|
|
781
|
+
<const Id extends string, T extends AnyTypes>(id: Id, propsOrTitle: Props | string): (builder: ViewsBuilder<T>) => ViewsBuilder<Types.AddView<T, Id>>;
|
|
782
|
+
<const Id extends string, T extends AnyTypes>(id: Id, propsOrTitle: Props | string | undefined, builder: (b: ViewBuilder<T>) => ViewBuilder<T>): (builder: ViewsBuilder<T>) => ViewsBuilder<Types.AddView<T, Id>>;
|
|
783
|
+
}
|
|
784
|
+
interface AddViewOfHelper<Props = unknown> {
|
|
785
|
+
<const Id extends string, T extends AnyTypes, Of extends string & T['Fqn']>(id: Id, of: Of): (builder: ViewsBuilder<T>) => ViewsBuilder<Types.AddView<T, Id>>;
|
|
786
|
+
<const Id extends string, T extends AnyTypes, Of extends string & T['Fqn']>(id: Id, of: Of, builder: (b: ViewBuilder<T>) => ViewBuilder<T>): (builder: ViewsBuilder<T>) => ViewsBuilder<Types.AddView<T, Id>>;
|
|
787
|
+
<const Id extends string, T extends AnyTypes, Of extends string & T['Fqn']>(id: Id, of: Of, propsOrTitle: Props | string): (builder: ViewsBuilder<T>) => ViewsBuilder<Types.AddView<T, Id>>;
|
|
788
|
+
<const Id extends string, T extends AnyTypes, Of extends string & T['Fqn']>(id: Id, of: Of, propsOrTitle: Props | string | undefined, builder: (b: ViewBuilder<T>) => ViewBuilder<T>): (builder: ViewsBuilder<T>) => ViewsBuilder<Types.AddView<T, Id>>;
|
|
789
|
+
}
|
|
790
|
+
type TypedC4Expression<Types extends AnyTypes> = Tagged<Expression$1, 'typed', Types>;
|
|
791
|
+
declare function $include<Types extends AnyTypes>(...args: [ViewPredicate.Expression<Types>] | [TypedC4Expression<Types>] | [ViewPredicate.Expression<Types>, ViewPredicate.Custom<Types>]): (b: ViewBuilder<Types>) => ViewBuilder<Types>;
|
|
792
|
+
declare function $exclude<Types extends AnyTypes>(...args: [ViewPredicate.Expression<Types>] | [TypedC4Expression<Types>] | [ViewPredicate.Expression<Types>, ViewPredicate.Custom<Types>]): (b: ViewBuilder<Types>) => ViewBuilder<Types>;
|
|
793
|
+
declare function $style<Types extends AnyTypes>(element: ViewPredicate.ElementExpr<Types['Fqn']> | NonEmptyArray<ViewPredicate.ElementExpr<Types['Fqn']>>, { notation, ...style }: ViewRuleStyle$1['style'] & {
|
|
794
|
+
notation?: string;
|
|
795
|
+
}): (b: ViewBuilder<Types>) => ViewBuilder<Types>;
|
|
796
|
+
declare function $autoLayout<Types extends AnyTypes>(layout: AutoLayoutDirection): (b: ViewBuilder<Types>) => ViewBuilder<Types>;
|
|
797
|
+
declare function $rules<T extends AnyTypes>(...rules: ViewRuleBuilderOp<T>[]): (b: ViewBuilder<T>) => ViewBuilder<T>;
|
|
798
|
+
|
|
799
|
+
type ViewHelpers<T = unknown> = {
|
|
800
|
+
views: typeof views;
|
|
801
|
+
view: AddViewHelper<T>;
|
|
802
|
+
viewOf: AddViewOfHelper<T>;
|
|
803
|
+
$include: typeof $include;
|
|
804
|
+
$exclude: typeof $exclude;
|
|
805
|
+
$style: typeof $style;
|
|
806
|
+
$rules: typeof $rules;
|
|
807
|
+
$autoLayout: typeof $autoLayout;
|
|
808
|
+
};
|
|
809
|
+
|
|
810
|
+
interface Builder<T extends AnyTypes> {
|
|
811
|
+
/**
|
|
812
|
+
* Only available in compile time
|
|
813
|
+
*/
|
|
814
|
+
readonly Types: T;
|
|
815
|
+
clone(): Builder<T>;
|
|
816
|
+
/**
|
|
817
|
+
* Builders for each element kind
|
|
818
|
+
*/
|
|
819
|
+
helpers(): {
|
|
820
|
+
model: ModelHelpers<T>;
|
|
821
|
+
views: ViewHelpers<T['NewViewProps']>;
|
|
822
|
+
};
|
|
823
|
+
__model(): ModelBuilder<T>;
|
|
824
|
+
__views(): ViewsBuilder<T>;
|
|
825
|
+
build(): ParsedLikeC4Model<T['ElementKind'], T['RelationshipKind'], T['Tag'], T['Fqn'], T['ViewId']>;
|
|
826
|
+
with<A extends AnyTypes>(op1: (input: Builder<T>) => Builder<A>): Builder<A>;
|
|
827
|
+
with<A extends AnyTypes, B extends AnyTypes>(op1: (input: Builder<T>) => Builder<A>, op2: (input: Builder<A>) => Builder<B>): Builder<B>;
|
|
828
|
+
with<A extends AnyTypes, B extends AnyTypes, C extends AnyTypes>(op1: (input: Builder<T>) => Builder<A>, op2: (input: Builder<A>) => Builder<B>, op3: (input: Builder<B>) => Builder<C>): Builder<C>;
|
|
829
|
+
with<A extends AnyTypes, B extends AnyTypes, C extends AnyTypes, D extends AnyTypes>(op1: (input: Builder<T>) => Builder<A>, op2: (input: Builder<A>) => Builder<B>, op3: (input: Builder<B>) => Builder<C>, op4: (input: Builder<C>) => Builder<D>): Builder<D>;
|
|
830
|
+
with<A extends AnyTypes, B extends AnyTypes, C extends AnyTypes, D extends AnyTypes, E extends AnyTypes>(op1: (input: Builder<T>) => Builder<A>, op2: (input: Builder<A>) => Builder<B>, op3: (input: Builder<B>) => Builder<C>, op4: (input: Builder<C>) => Builder<D>, op5: (input: Builder<D>) => Builder<E>): Builder<E>;
|
|
831
|
+
with<A extends AnyTypes, B extends AnyTypes, C extends AnyTypes, D extends AnyTypes, E extends AnyTypes, F extends AnyTypes>(op1: (input: Builder<T>) => Builder<A>, op2: (input: Builder<A>) => Builder<B>, op3: (input: Builder<B>) => Builder<C>, op4: (input: Builder<C>) => Builder<D>, op5: (input: Builder<D>) => Builder<E>, op6: (input: Builder<E>) => Builder<F>): Builder<F>;
|
|
832
|
+
with<A extends AnyTypes, B extends AnyTypes, C extends AnyTypes, D extends AnyTypes, E extends AnyTypes, F extends AnyTypes, G extends AnyTypes>(op1: (input: Builder<T>) => Builder<A>, op2: (input: Builder<A>) => Builder<B>, op3: (input: Builder<B>) => Builder<C>, op4: (input: Builder<C>) => Builder<D>, op5: (input: Builder<D>) => Builder<E>, op6: (input: Builder<E>) => Builder<F>, op7: (input: Builder<F>) => Builder<G>): Builder<G>;
|
|
833
|
+
with<A extends AnyTypes, B extends AnyTypes, C extends AnyTypes, D extends AnyTypes, E extends AnyTypes, F extends AnyTypes, G extends AnyTypes, H extends AnyTypes>(op1: (input: Builder<T>) => Builder<A>, op2: (input: Builder<A>) => Builder<B>, op3: (input: Builder<B>) => Builder<C>, op4: (input: Builder<C>) => Builder<D>, op5: (input: Builder<D>) => Builder<E>, op6: (input: Builder<E>) => Builder<F>, op7: (input: Builder<F>) => Builder<G>, op8: (input: Builder<G>) => Builder<H>): Builder<H>;
|
|
834
|
+
with<A extends AnyTypes, B extends AnyTypes, C extends AnyTypes, D extends AnyTypes, E extends AnyTypes, F extends AnyTypes, G extends AnyTypes, H extends AnyTypes, I extends AnyTypes>(op1: (input: Builder<T>) => Builder<A>, op2: (input: Builder<A>) => Builder<B>, op3: (input: Builder<B>) => Builder<C>, op4: (input: Builder<C>) => Builder<D>, op5: (input: Builder<D>) => Builder<E>, op6: (input: Builder<E>) => Builder<F>, op7: (input: Builder<F>) => Builder<G>, op8: (input: Builder<G>) => Builder<H>, op9: (input: Builder<H>) => Builder<I>): Builder<I>;
|
|
835
|
+
with<A extends AnyTypes, B extends AnyTypes, C extends AnyTypes, D extends AnyTypes, E extends AnyTypes, F extends AnyTypes, G extends AnyTypes, H extends AnyTypes, I extends AnyTypes, J extends AnyTypes>(op1: (input: Builder<T>) => Builder<A>, op2: (input: Builder<A>) => Builder<B>, op3: (input: Builder<B>) => Builder<C>, op4: (input: Builder<C>) => Builder<D>, op5: (input: Builder<D>) => Builder<E>, op6: (input: Builder<E>) => Builder<F>, op7: (input: Builder<F>) => Builder<G>, op8: (input: Builder<G>) => Builder<H>, op9: (input: Builder<H>) => Builder<I>, op10: (input: Builder<I>) => Builder<J>): Builder<J>;
|
|
836
|
+
}
|
|
837
|
+
declare namespace Builder {
|
|
838
|
+
function forSpecification<const Spec extends BuilderSpecification>(spec: Spec): {
|
|
839
|
+
builder: Builder<Types.FromSpecification<Spec>>;
|
|
840
|
+
model: ModelHelpers<Types.FromSpecification<Spec>>;
|
|
841
|
+
views: ViewHelpers<Types.FromSpecification<Spec>['NewViewProps']>;
|
|
842
|
+
};
|
|
843
|
+
}
|
|
844
|
+
|
|
582
845
|
declare const ElementColors: {
|
|
583
846
|
readonly primary: {
|
|
584
847
|
fill: "#3b82f6";
|
|
@@ -856,11 +1119,11 @@ type ElementOrFqn = Fqn | {
|
|
|
856
1119
|
declare class LikeC4ViewModel {
|
|
857
1120
|
readonly view: ComputedView;
|
|
858
1121
|
readonly model: LikeC4Model<LikeC4ViewModel>;
|
|
859
|
-
private _rootElements;
|
|
860
|
-
private _elements;
|
|
861
|
-
private _connections;
|
|
1122
|
+
private readonly _rootElements;
|
|
1123
|
+
private readonly _elements;
|
|
1124
|
+
private readonly _connections;
|
|
862
1125
|
constructor(view: ComputedView, model: LikeC4Model<LikeC4ViewModel>);
|
|
863
|
-
get id(): ViewID$1
|
|
1126
|
+
get id(): ViewID$1<string>;
|
|
864
1127
|
get title(): string;
|
|
865
1128
|
get viewOf(): LikeC4Model.ElementModel<LikeC4ViewModel>;
|
|
866
1129
|
get tags(): Tag$1[];
|
|
@@ -895,9 +1158,9 @@ declare namespace LikeC4ViewModel {
|
|
|
895
1158
|
*/
|
|
896
1159
|
class Element {
|
|
897
1160
|
readonly node: ComputedNode;
|
|
898
|
-
private viewmodel;
|
|
1161
|
+
private readonly viewmodel;
|
|
899
1162
|
constructor(node: ComputedNode, viewmodel: LikeC4ViewModel);
|
|
900
|
-
get id(): NodeId
|
|
1163
|
+
get id(): NodeId<string>;
|
|
901
1164
|
get title(): string;
|
|
902
1165
|
get kind(): ElementKind$1;
|
|
903
1166
|
get isRoot(): boolean;
|
|
@@ -926,7 +1189,7 @@ declare namespace LikeC4ViewModel {
|
|
|
926
1189
|
*/
|
|
927
1190
|
class Connection {
|
|
928
1191
|
readonly edge: ComputedEdge;
|
|
929
|
-
private viewmodel;
|
|
1192
|
+
private readonly viewmodel;
|
|
930
1193
|
constructor(edge: ComputedEdge, viewmodel: LikeC4ViewModel);
|
|
931
1194
|
get id(): EdgeId$1;
|
|
932
1195
|
get source(): LikeC4ViewModel.Element;
|
|
@@ -953,10 +1216,7 @@ declare class LikeC4Model<M extends LikeC4Model.ViewModel = LikeC4Model.ViewMode
|
|
|
953
1216
|
private _internal;
|
|
954
1217
|
private _cacheAscendingSiblings;
|
|
955
1218
|
private _views;
|
|
956
|
-
|
|
957
|
-
static computed(source: ComputedLikeC4Model): LikeC4Model<LikeC4ViewModel>;
|
|
958
|
-
static layouted(source: LayoutedLikeC4Model): LikeC4Model<LikeC4DiagramModel>;
|
|
959
|
-
protected constructor(type: LikeC4Model.ModelType<M>, sourcemodel: LikeC4Model.SourceModel<M>, elements: Element$1[], relations: Relation$1[]);
|
|
1219
|
+
constructor(type: LikeC4Model.ModelType<M>, sourcemodel: LikeC4Model.SourceModel<M>, elements: Element$1[], relations: Relation$1[], views: LikeC4Model.SourceModel<M>['views'], ViewModelClass: Class<M>);
|
|
960
1220
|
/**
|
|
961
1221
|
* Returns the root elements of the model.
|
|
962
1222
|
*/
|
|
@@ -1047,10 +1307,14 @@ declare class LikeC4Model<M extends LikeC4Model.ViewModel = LikeC4Model.ViewMode
|
|
|
1047
1307
|
private _internalOf;
|
|
1048
1308
|
}
|
|
1049
1309
|
declare namespace LikeC4Model {
|
|
1310
|
+
function create(source: LikeC4Model.SourceModel): PickBySource<typeof source>;
|
|
1311
|
+
function computed(source: ComputedLikeC4Model): LikeC4Model<LikeC4ViewModel>;
|
|
1312
|
+
function layouted(source: LayoutedLikeC4Model): LikeC4Model<LikeC4DiagramModel>;
|
|
1050
1313
|
function isModel(model: any): model is LikeC4Model;
|
|
1051
1314
|
type SourceModel<M extends ViewModel = ViewModel> = M extends LikeC4DiagramModel ? LayoutedLikeC4Model : ComputedLikeC4Model;
|
|
1052
1315
|
type ViewModel = LikeC4ViewModel | LikeC4DiagramModel;
|
|
1053
1316
|
namespace ViewModel {
|
|
1317
|
+
type ElementModel = LikeC4ViewModel.Element | LikeC4DiagramModel.Element;
|
|
1054
1318
|
type Relationship = LikeC4Model.Relationship<ViewModel>;
|
|
1055
1319
|
function isLayouted(model: ViewModel): model is LikeC4DiagramModel;
|
|
1056
1320
|
}
|
|
@@ -1066,13 +1330,13 @@ declare namespace LikeC4Model {
|
|
|
1066
1330
|
}
|
|
1067
1331
|
type ModelType<M extends ViewModel = ViewModel> = M extends LikeC4DiagramModel ? 'layouted' : M extends LikeC4ViewModel ? 'computed' : never;
|
|
1068
1332
|
function isLayouted(model: LikeC4Model): model is Layouted;
|
|
1069
|
-
class Relationship<M extends ViewModel> {
|
|
1333
|
+
class Relationship<M extends ViewModel = ViewModel> {
|
|
1070
1334
|
readonly relationship: Relation$1;
|
|
1071
|
-
private model;
|
|
1335
|
+
private readonly model;
|
|
1072
1336
|
constructor(relationship: Relation$1, model: LikeC4Model<M>);
|
|
1073
1337
|
get id(): RelationID$1;
|
|
1074
1338
|
get title(): string;
|
|
1075
|
-
get kind(): RelationshipKind$1
|
|
1339
|
+
get kind(): RelationshipKind$1<string>;
|
|
1076
1340
|
get tags(): Tag$1[];
|
|
1077
1341
|
get source(): ElementModel<M>;
|
|
1078
1342
|
get target(): ElementModel<M>;
|
|
@@ -1080,11 +1344,11 @@ declare namespace LikeC4Model {
|
|
|
1080
1344
|
metadata(key: string, defaultValue: string): string;
|
|
1081
1345
|
hasMetadata(key: string): boolean;
|
|
1082
1346
|
}
|
|
1083
|
-
class ElementModel<M extends ViewModel> {
|
|
1347
|
+
class ElementModel<M extends ViewModel = ViewModel> {
|
|
1084
1348
|
readonly element: Element$1;
|
|
1085
|
-
private model;
|
|
1349
|
+
private readonly model;
|
|
1086
1350
|
constructor(element: Element$1, model: LikeC4Model<M>);
|
|
1087
|
-
get id(): Fqn$1
|
|
1351
|
+
get id(): Fqn$1<string>;
|
|
1088
1352
|
get title(): string;
|
|
1089
1353
|
get kind(): ElementKind$1;
|
|
1090
1354
|
get isRoot(): boolean;
|
|
@@ -1100,6 +1364,10 @@ declare namespace LikeC4Model {
|
|
|
1100
1364
|
siblings(): readonly ElementModel<M>[];
|
|
1101
1365
|
descendants(): readonly ElementModel<M>[];
|
|
1102
1366
|
children(): readonly ElementModel<M>[];
|
|
1367
|
+
/**
|
|
1368
|
+
* All views 'view of' current element
|
|
1369
|
+
*/
|
|
1370
|
+
viewsOf(): M[];
|
|
1103
1371
|
/**
|
|
1104
1372
|
* Views that contain this element
|
|
1105
1373
|
*/
|
|
@@ -1109,6 +1377,11 @@ declare namespace LikeC4Model {
|
|
|
1109
1377
|
outgoing(filter?: OutgoingFilter): readonly Relationship<M>[];
|
|
1110
1378
|
outgoers(filter?: OutgoingFilter): readonly ElementModel<M>[];
|
|
1111
1379
|
internal(): readonly Relationship<M>[];
|
|
1380
|
+
/**
|
|
1381
|
+
* Resolve siblings of the element and siblings of ancestors
|
|
1382
|
+
* (from closest to root)
|
|
1383
|
+
*/
|
|
1384
|
+
ascendingSiblings(): readonly ElementModel<M>[];
|
|
1112
1385
|
}
|
|
1113
1386
|
}
|
|
1114
1387
|
|
|
@@ -1118,12 +1391,12 @@ declare namespace LikeC4Model {
|
|
|
1118
1391
|
declare class LikeC4DiagramModel {
|
|
1119
1392
|
readonly view: DiagramView;
|
|
1120
1393
|
readonly model: LikeC4Model.Layouted;
|
|
1121
|
-
private _rootElements;
|
|
1122
|
-
private _elements;
|
|
1123
|
-
private _connections;
|
|
1394
|
+
private readonly _rootElements;
|
|
1395
|
+
private readonly _elements;
|
|
1396
|
+
private readonly _connections;
|
|
1124
1397
|
constructor(view: DiagramView, model: LikeC4Model.Layouted);
|
|
1125
1398
|
get isDynamic(): boolean;
|
|
1126
|
-
get id(): ViewID$1
|
|
1399
|
+
get id(): ViewID$1<string>;
|
|
1127
1400
|
get title(): string;
|
|
1128
1401
|
get viewOf(): LikeC4Model.ElementModel<LikeC4DiagramModel>;
|
|
1129
1402
|
get tags(): Tag$1[];
|
|
@@ -1158,9 +1431,9 @@ declare namespace LikeC4DiagramModel {
|
|
|
1158
1431
|
*/
|
|
1159
1432
|
class Element {
|
|
1160
1433
|
readonly node: DiagramNode;
|
|
1161
|
-
private view;
|
|
1434
|
+
private readonly view;
|
|
1162
1435
|
constructor(node: DiagramNode, view: LikeC4DiagramModel);
|
|
1163
|
-
get id(): NodeId
|
|
1436
|
+
get id(): NodeId<string>;
|
|
1164
1437
|
get title(): string;
|
|
1165
1438
|
get kind(): ElementKind$1;
|
|
1166
1439
|
get isRoot(): boolean;
|
|
@@ -1191,7 +1464,7 @@ declare namespace LikeC4DiagramModel {
|
|
|
1191
1464
|
*/
|
|
1192
1465
|
class Connection {
|
|
1193
1466
|
readonly edge: DiagramEdge;
|
|
1194
|
-
private view;
|
|
1467
|
+
private readonly view;
|
|
1195
1468
|
constructor(edge: DiagramEdge, view: LikeC4DiagramModel);
|
|
1196
1469
|
get id(): EdgeId$1;
|
|
1197
1470
|
get source(): LikeC4DiagramModel.Element;
|
|
@@ -1204,7 +1477,7 @@ declare namespace LikeC4DiagramModel {
|
|
|
1204
1477
|
relationships(): ReadonlyArray<LikeC4Model.Relationship<LikeC4DiagramModel>>;
|
|
1205
1478
|
}
|
|
1206
1479
|
}
|
|
1207
|
-
declare function nameFromFqn(fqn: Fqn$1): string;
|
|
1480
|
+
declare function nameFromFqn(fqn: LiteralUnion<Fqn$1, string>): string;
|
|
1208
1481
|
declare function isAncestor<E extends {
|
|
1209
1482
|
id: Fqn$1;
|
|
1210
1483
|
}>(...args: [ancestor: string, another: string] | [ancestor: E, another: E]): boolean;
|
|
@@ -1214,13 +1487,13 @@ declare function isSameHierarchy<E extends {
|
|
|
1214
1487
|
declare function isDescendantOf<E extends {
|
|
1215
1488
|
id: Fqn$1;
|
|
1216
1489
|
}>(ancestors: E[]): (e: E) => boolean;
|
|
1217
|
-
declare function commonAncestor(first: Fqn$1
|
|
1218
|
-
declare function parentFqn(fqn: Fqn$1): Fqn$1 | null;
|
|
1490
|
+
declare function commonAncestor<IDs extends string>(first: Fqn$1<IDs>, second: Fqn$1<IDs>): Fqn$1<IDs>;
|
|
1491
|
+
declare function parentFqn<IDs extends string>(fqn: Fqn$1<IDs>): Fqn$1<IDs> | null;
|
|
1219
1492
|
/**
|
|
1220
1493
|
* Get all ancestor elements (i.e. parent, parent’s parent, etc.)
|
|
1221
1494
|
* (from closest to root)
|
|
1222
1495
|
*/
|
|
1223
|
-
declare function ancestorsFqn(fqn: Fqn$1): Fqn$1[];
|
|
1496
|
+
declare function ancestorsFqn<IDs extends string>(fqn: Fqn$1<IDs>): Fqn$1<IDs>[];
|
|
1224
1497
|
/**
|
|
1225
1498
|
* Compares two fully qualified names (fqns) hierarchically based on their depth.
|
|
1226
1499
|
* From parent nodes to leaves
|
|
@@ -15417,6 +15690,7 @@ interface ModelViews extends AstNode {
|
|
|
15417
15690
|
readonly $container: LikeC4Grammar;
|
|
15418
15691
|
readonly $type: 'ModelViews';
|
|
15419
15692
|
name: 'views';
|
|
15693
|
+
styles: Array<ViewRuleStyle>;
|
|
15420
15694
|
views: Array<LikeC4View>;
|
|
15421
15695
|
}
|
|
15422
15696
|
declare const ModelViews = "ModelViews";
|
|
@@ -15609,7 +15883,7 @@ interface ViewRuleAutoLayout extends AstNode {
|
|
|
15609
15883
|
}
|
|
15610
15884
|
declare const ViewRuleAutoLayout = "ViewRuleAutoLayout";
|
|
15611
15885
|
interface ViewRuleStyle extends AstNode {
|
|
15612
|
-
readonly $container: DynamicViewBody | ElementViewBody;
|
|
15886
|
+
readonly $container: DynamicViewBody | ElementViewBody | ModelViews;
|
|
15613
15887
|
readonly $type: 'ViewRuleStyle';
|
|
15614
15888
|
props: Array<NotationProperty | StyleProperty>;
|
|
15615
15889
|
target: ElementExpressionsIterator;
|
|
@@ -16024,11 +16298,15 @@ declare class LikeC4ModelParser {
|
|
|
16024
16298
|
private parseRelationPredicateWith;
|
|
16025
16299
|
private parseRelationExpr;
|
|
16026
16300
|
private parseViewRule;
|
|
16301
|
+
private parseViewRuleStyle;
|
|
16302
|
+
private parseRuleStyle;
|
|
16027
16303
|
private parseViewManualLaout;
|
|
16028
16304
|
private parseDynamicParallelSteps;
|
|
16029
16305
|
private parseDynamicStep;
|
|
16030
16306
|
private parseElementView;
|
|
16031
16307
|
private parseDynamicElementView;
|
|
16308
|
+
private parseDynamicViewRule;
|
|
16309
|
+
private parseDynamicViewIncludePredicate;
|
|
16032
16310
|
protected resolveFqn(node: Element | ExtendElement): Fqn$1;
|
|
16033
16311
|
private getAstNodePath;
|
|
16034
16312
|
private getMetadata;
|
|
@@ -16960,4 +17238,4 @@ declare class LikeC4 {
|
|
|
16960
17238
|
dispose(): void;
|
|
16961
17239
|
}
|
|
16962
17240
|
|
|
16963
|
-
export { type AutoLayoutDirection, type BBox, BorderStyles, type Color$1 as Color, type ComputedDynamicView, type ComputedEdge, type ComputedElementView, type ComputedLikeC4Model, type ComputedNode, type ComputedView, type DiagramEdge, type DiagramNode, type DiagramView, type DynamicView$1 as DynamicView, type EdgeId$1 as EdgeId, type Element$1 as Element, ElementColors, type ElementKind$1 as ElementKind, ElementShapes, type ElementView$1 as ElementView, type Fqn$1 as Fqn, type HexColorLiteral, type LayoutedLikeC4Model, LikeC4, LikeC4DiagramModel, LikeC4Model, type LikeC4View$1 as LikeC4View, LikeC4ViewModel, type NodeId, type ParsedLikeC4Model, type Point, type Relation$1 as Relation, type RelationExpr, type RelationID$1 as RelationID, RelationshipColors, StepEdgeId, type Tag$1 as Tag, type ThemeColor$1 as ThemeColor, type ViewID$1 as ViewID, type XYPoint, ancestorsFqn, commonAncestor, compareByFqnHierarchically, compareFqnHierarchically, compareRelations, defaultTheme, extractStep, hasAtLeast, invariant, isAncestor, isComputedDynamicView, isDescendantOf, isSameHierarchy, isStepEdgeId, nameFromFqn, nonNullable, nonexhaustive, parentFqn };
|
|
17241
|
+
export { type AutoLayoutDirection, type BBox, BorderStyles, Builder, type BuilderSpecification, type Color$1 as Color, type ComputedDynamicView, type ComputedEdge, type ComputedElementView, type ComputedLikeC4Model, type ComputedNode, type ComputedView, type DiagramEdge, type DiagramNode, type DiagramView, type DynamicView$1 as DynamicView, type EdgeId$1 as EdgeId, type Element$1 as Element, ElementColors, type ElementKind$1 as ElementKind, ElementShapes, type ElementView$1 as ElementView, type Fqn$1 as Fqn, type HexColorLiteral, type LayoutedLikeC4Model, LikeC4, Builder as LikeC4Builder, LikeC4DiagramModel, LikeC4Model, type LikeC4View$1 as LikeC4View, LikeC4ViewModel, type NodeId, type ParsedLikeC4Model, type Point, type Relation$1 as Relation, type RelationExpr, type RelationID$1 as RelationID, RelationshipColors, StepEdgeId, type Tag$1 as Tag, type ThemeColor$1 as ThemeColor, type ViewID$1 as ViewID, type XYPoint, ancestorsFqn, commonAncestor, compareByFqnHierarchically, compareFqnHierarchically, compareRelations, defaultTheme, extractStep, hasAtLeast, invariant, isAncestor, isComputedDynamicView, isDescendantOf, isSameHierarchy, isStepEdgeId, nameFromFqn, nonNullable, nonexhaustive, parentFqn };
|