@likec4/core 1.27.2 → 1.28.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 (71) hide show
  1. package/dist/builder/index.d.mts +6 -6
  2. package/dist/builder/index.mjs +23 -13
  3. package/dist/compute-view/index.d.mts +3 -3
  4. package/dist/compute-view/index.mjs +3 -3
  5. package/dist/compute-view/relationships-view/index.d.mts +3 -3
  6. package/dist/index.d.mts +6 -6
  7. package/dist/index.mjs +2 -2
  8. package/dist/model/index.d.mts +6 -6
  9. package/dist/model/index.mjs +1 -1
  10. package/dist/shared/{core.RjpTh3vE.mjs → core.Bjl6Kmc8.mjs} +260 -168
  11. package/dist/shared/{core.C9JdFlAd.d.mts → core.CZR9J1Qx.d.mts} +2 -2
  12. package/dist/shared/{core.C7IN6igU.d.mts → core.CiFKryGW.d.mts} +7 -2
  13. package/dist/shared/{core.HKn0jlo_.d.mts → core.D2830qgg.d.mts} +1 -1
  14. package/dist/shared/{core.z6g06scf.d.mts → core.DJvmfnEi.d.mts} +484 -189
  15. package/dist/shared/{core.BMep80lJ.mjs → core.DgfwjBtu.mjs} +198 -87
  16. package/dist/shared/core.SjLhMA7a.d.mts +62 -0
  17. package/dist/types/index.d.mts +4 -4
  18. package/dist/types/index.mjs +1 -1
  19. package/dist/utils/index.d.mts +2 -2
  20. package/package.json +6 -6
  21. package/src/builder/Builder.ts +1 -0
  22. package/src/builder/Builder.view-common.ts +10 -10
  23. package/src/builder/Builder.view-element.ts +26 -14
  24. package/src/builder/__snapshots__/Builder-style1.spec.ts.snap +23 -8
  25. package/src/builder/__snapshots__/Builder-style2.spec.ts.snap +9 -4
  26. package/src/compute-view/deployment-view/predicates/deploymentRefs-where.ts +18 -0
  27. package/src/compute-view/deployment-view/predicates/relation-direct.ts +6 -0
  28. package/src/compute-view/deployment-view/predicates/relation-in-out.ts +3 -0
  29. package/src/compute-view/deployment-view/predicates/relation-incoming.ts +3 -0
  30. package/src/compute-view/deployment-view/predicates/relation-outgoing.ts +3 -0
  31. package/src/compute-view/deployment-view/predicates/utils.ts +10 -3
  32. package/src/compute-view/deployment-view/utils.ts +7 -4
  33. package/src/compute-view/element-view/__test__/fixture.ts +72 -65
  34. package/src/compute-view/element-view/_types.ts +13 -9
  35. package/src/compute-view/element-view/compute.ts +27 -27
  36. package/src/compute-view/element-view/memory/NodeGroup.ts +4 -3
  37. package/src/compute-view/element-view/memory/memory.ts +3 -2
  38. package/src/compute-view/element-view/memory/stage-include.ts +2 -2
  39. package/src/compute-view/element-view/predicates/_utils.ts +25 -24
  40. package/src/compute-view/element-view/predicates/element-expand.ts +7 -10
  41. package/src/compute-view/element-view/predicates/element-kind-tag.ts +5 -3
  42. package/src/compute-view/element-view/predicates/element-ref.ts +7 -19
  43. package/src/compute-view/element-view/predicates/relation-direct.ts +15 -13
  44. package/src/compute-view/element-view/predicates/relation-in-out.ts +5 -6
  45. package/src/compute-view/element-view/predicates/relation-in.ts +36 -32
  46. package/src/compute-view/element-view/predicates/relation-out.ts +37 -33
  47. package/src/compute-view/element-view/predicates/wildcard.ts +2 -2
  48. package/src/compute-view/utils/applyCustomElementProperties.ts +9 -4
  49. package/src/compute-view/utils/applyCustomRelationProperties.ts +10 -7
  50. package/src/compute-view/utils/elementExpressionToPredicate.ts +27 -26
  51. package/src/compute-view/utils/link-nodes-with-edges.ts +1 -1
  52. package/src/compute-view/utils/relationExpressionToPredicates.ts +10 -17
  53. package/src/compute-view/utils/uniqueTags.ts +3 -3
  54. package/src/index.ts +0 -2
  55. package/src/model/ElementModel.ts +25 -6
  56. package/src/model/LikeC4Model.ts +44 -6
  57. package/src/model/RelationModel.ts +4 -2
  58. package/src/model/view/LikeC4ViewModel.ts +3 -2
  59. package/src/types/_common.ts +0 -4
  60. package/src/types/deployments.ts +3 -2
  61. package/src/types/element.ts +2 -10
  62. package/src/types/expression-v2-model.ts +314 -0
  63. package/src/types/expression-v2.ts +238 -30
  64. package/src/types/index.ts +15 -46
  65. package/src/types/model-data.ts +4 -1
  66. package/src/types/relation.ts +2 -1
  67. package/src/types/scalars.ts +39 -0
  68. package/src/types/view-changes.ts +2 -1
  69. package/src/types/view.ts +10 -11
  70. package/dist/shared/core.30yYKXcZ.d.mts +0 -186
  71. package/src/types/expression.ts +0 -207
@@ -1,5 +1,134 @@
1
- import { Tagged, NonEmptyTuple, Simplify, MergeExclusive } from 'type-fest';
2
- import { N as NonEmptyArray, F as Fqn, j as ElementKind, s as Tag, p as ElementShape, x as Color, I as IconUrl, l as BorderStyle, S as ShapeSize, E as ExclusiveUnion, q as ElementStyle, r as Link, P as Point, X as XYPoint, T as ThemeColorValues, M as SpacingSize, O as TextSize, Q as ThemeColor, n as ElementKindSpecification, u as TypedElement } from './core.30yYKXcZ.mjs';
1
+ import { d as IconUrl, F as Fqn, N as NonEmptyArray, T as Tag, E as ExclusiveUnion, e as ProjectId, P as Point, X as XYPoint } from './core.SjLhMA7a.mjs';
2
+ import { LiteralUnion, TupleToUnion, Tagged, NonEmptyTuple, Simplify, MergeExclusive } from 'type-fest';
3
+
4
+ declare const ThemeColors: readonly ["amber", "blue", "gray", "slate", "green", "indigo", "muted", "primary", "red", "secondary", "sky"];
5
+ type ThemeColor = typeof ThemeColors[number];
6
+ type HexColorLiteral = `#${string}`;
7
+ type ColorLiteral = HexColorLiteral;
8
+ type Color = LiteralUnion<ThemeColor, string>;
9
+ type ShapeSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl';
10
+ /**
11
+ * For padding, margin, etc.
12
+ */
13
+ type SpacingSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl';
14
+ type TextSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl';
15
+ declare function isThemeColor(color: Color): color is ThemeColor;
16
+ interface ElementThemeColorValues {
17
+ fill: ColorLiteral;
18
+ stroke: ColorLiteral;
19
+ hiContrast: ColorLiteral;
20
+ loContrast: ColorLiteral;
21
+ }
22
+ type ElementThemeColors = {
23
+ [key in ThemeColor]: ElementThemeColorValues;
24
+ };
25
+ interface RelationshipThemeColorValues {
26
+ lineColor: ColorLiteral;
27
+ labelBgColor: ColorLiteral;
28
+ labelColor: ColorLiteral;
29
+ }
30
+ interface ThemeColorValues {
31
+ elements: ElementThemeColorValues;
32
+ relationships: RelationshipThemeColorValues;
33
+ }
34
+ type RelationshipThemeColors = {
35
+ [key in ThemeColor]: RelationshipThemeColorValues;
36
+ };
37
+ interface LikeC4Theme {
38
+ font: 'Arial';
39
+ shadow: ColorLiteral;
40
+ relationships: RelationshipThemeColors;
41
+ elements: ElementThemeColors;
42
+ sizes: {
43
+ [key in ShapeSize]: {
44
+ width: number;
45
+ height: number;
46
+ };
47
+ };
48
+ spacing: {
49
+ [key in SpacingSize]: number;
50
+ };
51
+ textSizes: {
52
+ [key in TextSize]: number;
53
+ };
54
+ }
55
+
56
+ declare const BorderStyles: readonly ["solid", "dashed", "dotted", "none"];
57
+ type BorderStyle = TupleToUnion<typeof BorderStyles>;
58
+ type ElementKind<Kinds extends string = string> = Tagged<Kinds, 'ElementKind'>;
59
+ declare namespace ElementKind {
60
+ const Group: ElementKind;
61
+ }
62
+ declare const ElementShapes: readonly ["rectangle", "person", "browser", "mobile", "cylinder", "storage", "queue"];
63
+ type ElementShape = TupleToUnion<typeof ElementShapes>;
64
+ declare const DefaultThemeColor: ThemeColor;
65
+ declare const DefaultElementShape: ElementShape;
66
+ declare const DefaultShapeSize: ShapeSize;
67
+ declare const DefaultPaddingSize: SpacingSize;
68
+ declare const DefaultTextSize: TextSize;
69
+ interface ElementStyle {
70
+ readonly border?: BorderStyle;
71
+ /**
72
+ * In percentage 0-100, 0 is fully transparent
73
+ *
74
+ * @default 100
75
+ */
76
+ readonly opacity?: number;
77
+ /**
78
+ * If true, the element is rendered as multiple shapes
79
+ * @default false
80
+ */
81
+ readonly multiple?: boolean;
82
+ /**
83
+ * Shape size
84
+ *
85
+ * @default 'md'
86
+ */
87
+ readonly size?: ShapeSize;
88
+ readonly padding?: SpacingSize;
89
+ readonly textSize?: TextSize;
90
+ }
91
+ interface TagSpec {
92
+ readonly id: Tag;
93
+ readonly style: ElementStyle;
94
+ }
95
+ interface Link {
96
+ readonly title?: string;
97
+ readonly url: string;
98
+ readonly relative?: string;
99
+ }
100
+ interface TypedElement<Ids extends string, Kinds extends string, Tags extends string, MetadataKeys extends string = never> {
101
+ readonly id: Fqn<Ids>;
102
+ readonly kind: ElementKind<Kinds>;
103
+ readonly title: string;
104
+ readonly description: string | null;
105
+ readonly technology: string | null;
106
+ readonly tags: NonEmptyArray<Tag<Tags>> | null;
107
+ readonly links: NonEmptyArray<Link> | null;
108
+ readonly icon?: IconUrl;
109
+ readonly shape?: ElementShape;
110
+ readonly color?: Color;
111
+ readonly style?: ElementStyle;
112
+ readonly notation?: string;
113
+ readonly metadata?: Record<MetadataKeys, string>;
114
+ }
115
+ interface Element extends TypedElement<string, string, string, string> {
116
+ }
117
+ interface ElementKindSpecificationStyle {
118
+ shape?: ElementShape;
119
+ icon?: IconUrl;
120
+ color?: Color;
121
+ border?: BorderStyle;
122
+ opacity?: number;
123
+ size?: ShapeSize;
124
+ padding?: SpacingSize;
125
+ textSize?: TextSize;
126
+ }
127
+ interface ElementKindSpecification {
128
+ readonly technology?: string;
129
+ readonly notation?: string;
130
+ readonly style: ElementKindSpecificationStyle;
131
+ }
3
132
 
4
133
  type EqualOperator<V> = {
5
134
  eq: V;
@@ -52,167 +181,6 @@ type Filterable<FTag extends string | null = string | null, FKind extends string
52
181
  type OperatorPredicate<V extends Filterable> = (value: V) => boolean;
53
182
  declare function whereOperatorAsPredicate<FTag extends string | null = string | null, FKind extends string | null = string | null>(operator: WhereOperator<FTag, FKind>): OperatorPredicate<Filterable>;
54
183
 
55
- interface BaseExpr {
56
- where?: never;
57
- element?: never;
58
- custom?: never;
59
- expanded?: never;
60
- elementKind?: never;
61
- elementTag?: never;
62
- isEqual?: never;
63
- isChildren?: never;
64
- isDescendants?: never;
65
- wildcard?: never;
66
- source?: never;
67
- target?: never;
68
- inout?: never;
69
- incoming?: never;
70
- outgoing?: never;
71
- customRelation?: never;
72
- }
73
- interface ElementRefExpr extends Omit<BaseExpr, 'element' | 'isChildren' | 'isDescendants'> {
74
- element: Fqn;
75
- isChildren?: boolean;
76
- isDescendants?: boolean;
77
- }
78
- declare function isElementRef(expr: Expression): expr is ElementRefExpr;
79
- interface ExpandedElementExpr extends Omit<BaseExpr, 'expanded'> {
80
- expanded: Fqn;
81
- }
82
- declare function isExpandedElementExpr(expr: Expression): expr is ExpandedElementExpr;
83
- interface CustomElementExpr extends Omit<BaseExpr, 'custom'> {
84
- custom: {
85
- expr: ElementExpression | ElementWhereExpr;
86
- title?: string;
87
- description?: string;
88
- technology?: string;
89
- notation?: string;
90
- shape?: ElementShape;
91
- color?: Color;
92
- icon?: IconUrl;
93
- border?: BorderStyle;
94
- opacity?: number;
95
- navigateTo?: ViewId;
96
- multiple?: boolean;
97
- size?: ShapeSize;
98
- padding?: ShapeSize;
99
- textSize?: ShapeSize;
100
- };
101
- }
102
- declare function isCustomElement(expr: Expression): expr is CustomElementExpr;
103
- interface WildcardExpr extends Omit<BaseExpr, 'wildcard'> {
104
- wildcard: true;
105
- }
106
- declare function isWildcard(expr: Expression): expr is WildcardExpr;
107
- interface ElementKindExpr extends Omit<BaseExpr, 'elementKind' | 'isEqual'> {
108
- elementKind: ElementKind;
109
- isEqual: boolean;
110
- }
111
- declare function isElementKindExpr(expr: Expression): expr is ElementKindExpr;
112
- interface ElementTagExpr extends Omit<BaseExpr, 'elementTag' | 'isEqual'> {
113
- elementTag: Tag;
114
- isEqual: boolean;
115
- }
116
- declare function isElementTagExpr(expr: Expression): expr is ElementTagExpr;
117
- type NonWilcard = ElementRefExpr | ElementKindExpr | ElementTagExpr | ExpandedElementExpr;
118
- type ElementExpression = NonWilcard | WildcardExpr;
119
- declare function isElement(expr: Expression): expr is ElementExpression;
120
- interface ElementWhereExpr extends Omit<BaseExpr, 'where'> {
121
- where: {
122
- expr: ElementExpression;
123
- condition: WhereOperator<string, string>;
124
- };
125
- }
126
- declare function isElementWhere(expr: Expression): expr is ElementWhereExpr;
127
- type ElementPredicateExpression = ElementExpression | ElementWhereExpr | CustomElementExpr;
128
- declare function isElementPredicateExpr(expr: Expression): expr is ElementPredicateExpression;
129
- interface DirectRelationExpr extends Omit<BaseExpr, 'source' | 'target'> {
130
- source: ElementExpression;
131
- target: ElementExpression;
132
- isBidirectional?: boolean;
133
- }
134
- declare function isRelation(expr: Expression): expr is DirectRelationExpr;
135
- interface InOutExpr extends Omit<BaseExpr, 'inout'> {
136
- inout: ElementExpression;
137
- }
138
- declare function isInOut(expr: Expression): expr is InOutExpr;
139
- interface IncomingExpr extends Omit<BaseExpr, 'incoming'> {
140
- incoming: ElementExpression;
141
- }
142
- declare function isIncoming(expr: Expression): expr is IncomingExpr;
143
- interface OutgoingExpr extends Omit<BaseExpr, 'outgoing'> {
144
- outgoing: ElementExpression;
145
- }
146
- declare function isOutgoing(expr: Expression): expr is OutgoingExpr;
147
- type RelationExpression = DirectRelationExpr | InOutExpr | IncomingExpr | OutgoingExpr;
148
- declare function isRelationExpression(expr: Expression): expr is RelationExpression;
149
- interface RelationWhereExpr extends Omit<BaseExpr, 'where'> {
150
- where: {
151
- expr: RelationExpression;
152
- condition: WhereOperator<string, string>;
153
- };
154
- }
155
- declare function isRelationWhere(expr: Expression): expr is RelationWhereExpr;
156
- interface CustomRelationExpr extends Omit<BaseExpr, 'customRelation'> {
157
- customRelation: {
158
- relation: RelationExpression | RelationWhereExpr;
159
- title?: string;
160
- description?: string;
161
- technology?: string;
162
- notation?: string;
163
- navigateTo?: ViewId;
164
- notes?: string;
165
- color?: Color;
166
- line?: RelationshipLineType;
167
- head?: RelationshipArrowType;
168
- tail?: RelationshipArrowType;
169
- };
170
- }
171
- declare function isCustomRelationExpr(expr: Expression): expr is CustomRelationExpr;
172
- type RelationPredicateExpression = RelationExpression | RelationWhereExpr | CustomRelationExpr;
173
- declare function isRelationPredicateExpr(expr: Expression): expr is RelationPredicateExpression;
174
- type Expression = ElementPredicateExpression | RelationPredicateExpression;
175
-
176
- type expression_CustomElementExpr = CustomElementExpr;
177
- type expression_CustomRelationExpr = CustomRelationExpr;
178
- type expression_DirectRelationExpr = DirectRelationExpr;
179
- type expression_ElementExpression = ElementExpression;
180
- type expression_ElementKindExpr = ElementKindExpr;
181
- type expression_ElementPredicateExpression = ElementPredicateExpression;
182
- type expression_ElementRefExpr = ElementRefExpr;
183
- type expression_ElementTagExpr = ElementTagExpr;
184
- type expression_ElementWhereExpr = ElementWhereExpr;
185
- type expression_ExpandedElementExpr = ExpandedElementExpr;
186
- type expression_Expression = Expression;
187
- type expression_InOutExpr = InOutExpr;
188
- type expression_IncomingExpr = IncomingExpr;
189
- type expression_NonWilcard = NonWilcard;
190
- type expression_OutgoingExpr = OutgoingExpr;
191
- type expression_RelationExpression = RelationExpression;
192
- type expression_RelationPredicateExpression = RelationPredicateExpression;
193
- type expression_RelationWhereExpr = RelationWhereExpr;
194
- type expression_WildcardExpr = WildcardExpr;
195
- declare const expression_isCustomElement: typeof isCustomElement;
196
- declare const expression_isCustomRelationExpr: typeof isCustomRelationExpr;
197
- declare const expression_isElement: typeof isElement;
198
- declare const expression_isElementKindExpr: typeof isElementKindExpr;
199
- declare const expression_isElementPredicateExpr: typeof isElementPredicateExpr;
200
- declare const expression_isElementRef: typeof isElementRef;
201
- declare const expression_isElementTagExpr: typeof isElementTagExpr;
202
- declare const expression_isElementWhere: typeof isElementWhere;
203
- declare const expression_isExpandedElementExpr: typeof isExpandedElementExpr;
204
- declare const expression_isInOut: typeof isInOut;
205
- declare const expression_isIncoming: typeof isIncoming;
206
- declare const expression_isOutgoing: typeof isOutgoing;
207
- declare const expression_isRelation: typeof isRelation;
208
- declare const expression_isRelationExpression: typeof isRelationExpression;
209
- declare const expression_isRelationPredicateExpr: typeof isRelationPredicateExpr;
210
- declare const expression_isRelationWhere: typeof isRelationWhere;
211
- declare const expression_isWildcard: typeof isWildcard;
212
- declare namespace expression {
213
- export { type expression_CustomElementExpr as CustomElementExpr, type expression_CustomRelationExpr as CustomRelationExpr, type expression_DirectRelationExpr as DirectRelationExpr, type expression_ElementExpression as ElementExpression, type expression_ElementKindExpr as ElementKindExpr, type expression_ElementPredicateExpression as ElementPredicateExpression, type expression_ElementRefExpr as ElementRefExpr, type expression_ElementTagExpr as ElementTagExpr, type expression_ElementWhereExpr as ElementWhereExpr, type expression_ExpandedElementExpr as ExpandedElementExpr, type expression_Expression as Expression, type expression_InOutExpr as InOutExpr, type expression_IncomingExpr as IncomingExpr, type expression_NonWilcard as NonWilcard, type expression_OutgoingExpr as OutgoingExpr, type expression_RelationExpression as RelationExpression, type expression_RelationPredicateExpression as RelationPredicateExpression, type expression_RelationWhereExpr as RelationWhereExpr, type expression_WildcardExpr as WildcardExpr, expression_isCustomElement as isCustomElement, expression_isCustomRelationExpr as isCustomRelationExpr, expression_isElement as isElement, expression_isElementKindExpr as isElementKindExpr, expression_isElementPredicateExpr as isElementPredicateExpr, expression_isElementRef as isElementRef, expression_isElementTagExpr as isElementTagExpr, expression_isElementWhere as isElementWhere, expression_isExpandedElementExpr as isExpandedElementExpr, expression_isInOut as isInOut, expression_isIncoming as isIncoming, expression_isOutgoing as isOutgoing, expression_isRelation as isRelation, expression_isRelationExpression as isRelationExpression, expression_isRelationPredicateExpr as isRelationPredicateExpr, expression_isRelationWhere as isRelationWhere, expression_isWildcard as isWildcard };
214
- }
215
-
216
184
  declare namespace FqnRef {
217
185
  /**
218
186
  * Represents a reference to an instance within a deployment.
@@ -247,71 +215,185 @@ declare namespace FqnRef {
247
215
  model: F;
248
216
  };
249
217
  const isModelRef: (ref: FqnRef) => ref is ModelRef;
218
+ /**
219
+ * Reference to imported logical model element
220
+ */
221
+ type ImportRef<F = Fqn> = {
222
+ project: ProjectId;
223
+ model: F;
224
+ };
225
+ const isImportRef: (ref: FqnRef) => ref is ImportRef;
250
226
  const toDeploymentRef: (ref: FqnRef) => DeploymentRef;
227
+ const toModelFqn: (ref: FqnRef) => Fqn;
251
228
  }
252
229
  type FqnRef<D = Fqn, M = Fqn> = ExclusiveUnion<{
253
230
  InsideInstanceRef: FqnRef.InsideInstanceRef<D, M>;
254
231
  DeploymentRef: FqnRef.DeploymentRef<D>;
255
232
  ModelRef: FqnRef.ModelRef<M>;
233
+ ImportRef: FqnRef.ImportRef<M>;
256
234
  }>;
257
235
  declare namespace FqnExpr {
258
236
  type Wildcard = {
259
237
  wildcard: true;
260
238
  };
261
- const isWildcard: (expr: ExpressionV2) => expr is Wildcard;
239
+ const isWildcard: (expr: ExpressionV2) => expr is FqnExpr.Wildcard;
262
240
  type ModelRef<M = Fqn> = {
263
- ref: FqnRef.ModelRef<M>;
241
+ ref: FqnRef.ModelRef<M> | FqnRef.ImportRef<M>;
264
242
  selector?: PredicateSelector;
265
243
  };
266
- const isModelRef: (ref: ExpressionV2) => ref is ModelRef;
244
+ const isModelRef: (ref: ExpressionV2) => ref is FqnExpr.ModelRef;
267
245
  type DeploymentRef<D = Fqn, M = Fqn> = {
268
246
  ref: FqnRef.DeploymentRef<D> | FqnRef.InsideInstanceRef<D, M>;
269
247
  selector?: PredicateSelector;
270
248
  };
271
249
  const isDeploymentRef: (ref: ExpressionV2) => ref is FqnExpr.DeploymentRef;
250
+ type ElementKindExpr = {
251
+ elementKind: ElementKind;
252
+ isEqual: boolean;
253
+ };
254
+ function isElementKindExpr(expr: ExpressionV2): expr is ElementKindExpr;
255
+ type ElementTagExpr = {
256
+ elementTag: Tag;
257
+ isEqual: boolean;
258
+ };
259
+ function isElementTagExpr(expr: ExpressionV2): expr is ElementTagExpr;
272
260
  type NonWildcard<D = Fqn, M = Fqn> = ExclusiveUnion<{
273
261
  ModelRef: ModelRef<M>;
274
262
  DeploymentRef: DeploymentRef<D, M>;
263
+ ElementKind: ElementKindExpr;
264
+ ElementTag: ElementTagExpr;
265
+ }>;
266
+ type Where<D = Fqn, M = Fqn> = {
267
+ where: {
268
+ expr: ExclusiveUnion<{
269
+ Wildcard: Wildcard;
270
+ ModelRef: ModelRef<M>;
271
+ DeploymentRef: DeploymentRef<D, M>;
272
+ ElementKind: ElementKindExpr;
273
+ ElementTag: ElementTagExpr;
274
+ }>;
275
+ condition: WhereOperator<string, string>;
276
+ };
277
+ };
278
+ const isWhere: (expr: ExpressionV2) => expr is FqnExpr.Where;
279
+ type Custom<D = Fqn, M = Fqn> = {
280
+ custom: {
281
+ expr: OrWhere<D, M>;
282
+ title?: string;
283
+ description?: string;
284
+ technology?: string;
285
+ notation?: string;
286
+ shape?: ElementShape;
287
+ color?: Color;
288
+ icon?: IconUrl;
289
+ border?: BorderStyle;
290
+ opacity?: number;
291
+ navigateTo?: ViewId;
292
+ multiple?: boolean;
293
+ size?: ShapeSize;
294
+ padding?: ShapeSize;
295
+ textSize?: ShapeSize;
296
+ };
297
+ };
298
+ const isCustom: (expr: ExpressionV2) => expr is Custom;
299
+ const is: (expr: ExpressionV2) => expr is FqnExpr;
300
+ type OrWhere<D = Fqn, M = Fqn> = ExclusiveUnion<{
301
+ Wildcard: FqnExpr.Wildcard;
302
+ ModelRef: FqnExpr.ModelRef<M>;
303
+ DeploymentRef: FqnExpr.DeploymentRef<D, M>;
304
+ ElementKind: ElementKindExpr;
305
+ ElementTag: ElementTagExpr;
306
+ Where: FqnExpr.Where<D, M>;
307
+ }>;
308
+ type Any<D = Fqn, M = Fqn> = ExclusiveUnion<{
309
+ Wildcard: Wildcard;
310
+ ModelRef: ModelRef<M>;
311
+ DeploymentRef: DeploymentRef<D, M>;
312
+ ElementKind: ElementKindExpr;
313
+ ElementTag: ElementTagExpr;
314
+ Where: Where<D, M>;
315
+ Custom: Custom<D, M>;
275
316
  }>;
317
+ const unwrap: (expr: FqnExpr) => Wildcard | ModelRef | DeploymentRef | ElementKindExpr | ElementTagExpr;
276
318
  }
277
319
  type FqnExpr<D = Fqn, M = Fqn> = ExclusiveUnion<{
278
320
  Wildcard: FqnExpr.Wildcard;
279
321
  ModelRef: FqnExpr.ModelRef<M>;
280
322
  DeploymentRef: FqnExpr.DeploymentRef<D, M>;
323
+ ElementKind: FqnExpr.ElementKindExpr;
324
+ ElementTag: FqnExpr.ElementTagExpr;
281
325
  }>;
282
326
  declare namespace RelationExpr {
327
+ type Endpoint<D = Fqn, M = Fqn> = FqnExpr.Where<D, M>['where']['expr'];
283
328
  type Direct<D = Fqn, M = Fqn> = {
284
- source: FqnExpr<D, M>;
285
- target: FqnExpr<D, M>;
329
+ source: Endpoint<D, M>;
330
+ target: Endpoint<D, M>;
286
331
  isBidirectional?: boolean;
287
332
  };
288
- const isDirect: (expr: ExpressionV2) => expr is Direct;
333
+ const isDirect: (expr: ExpressionV2) => expr is RelationExpr.Direct;
289
334
  type Incoming<D = Fqn, M = Fqn> = {
290
- incoming: FqnExpr<D, M>;
335
+ incoming: Endpoint<D, M>;
291
336
  };
292
- const isIncoming: (expr: ExpressionV2) => expr is Incoming;
337
+ const isIncoming: (expr: ExpressionV2) => expr is RelationExpr.Incoming;
293
338
  type Outgoing<D = Fqn, M = Fqn> = {
294
- outgoing: FqnExpr<D, M>;
339
+ outgoing: Endpoint<D, M>;
295
340
  };
296
- const isOutgoing: (expr: ExpressionV2) => expr is Outgoing;
341
+ const isOutgoing: (expr: ExpressionV2) => expr is RelationExpr.Outgoing;
297
342
  type InOut<D = Fqn, M = Fqn> = {
298
- inout: FqnExpr<D, M>;
343
+ inout: Endpoint<D, M>;
299
344
  };
300
- const isInOut: (expr: ExpressionV2) => expr is InOut;
345
+ const isInOut: (expr: ExpressionV2) => expr is RelationExpr.InOut;
301
346
  type Where<D = Fqn, M = Fqn> = {
302
347
  where: {
303
- expr: ExpressionV2<D, M>;
348
+ expr: ExclusiveUnion<{
349
+ Direct: RelationExpr.Direct<D, M>;
350
+ Incoming: RelationExpr.Incoming<D, M>;
351
+ Outgoing: RelationExpr.Outgoing<D, M>;
352
+ InOut: RelationExpr.InOut<D, M>;
353
+ }>;
304
354
  condition: WhereOperator<string, string>;
305
355
  };
306
356
  };
307
- const isWhere: (expr: ExpressionV2) => expr is Where;
357
+ const isWhere: (expr: ExpressionV2) => expr is RelationExpr.Where;
358
+ type Custom<D = Fqn, M = Fqn> = {
359
+ customRelation: {
360
+ expr: OrWhere<D, M>;
361
+ title?: string;
362
+ description?: string;
363
+ technology?: string;
364
+ notation?: string;
365
+ navigateTo?: ViewId;
366
+ notes?: string;
367
+ color?: Color;
368
+ line?: RelationshipLineType;
369
+ head?: RelationshipArrowType;
370
+ tail?: RelationshipArrowType;
371
+ };
372
+ };
373
+ const isCustom: (expr: ExpressionV2) => expr is Custom;
374
+ const is: (expr: ExpressionV2) => expr is RelationExpr;
375
+ type OrWhere<D = Fqn, M = Fqn> = ExclusiveUnion<{
376
+ Direct: Direct<D, M>;
377
+ Incoming: Incoming<D, M>;
378
+ Outgoing: Outgoing<D, M>;
379
+ InOut: InOut<D, M>;
380
+ Where: Where<D, M>;
381
+ }>;
382
+ type Any<D = Fqn, M = Fqn> = ExclusiveUnion<{
383
+ Direct: Direct<D, M>;
384
+ Incoming: Incoming<D, M>;
385
+ Outgoing: Outgoing<D, M>;
386
+ InOut: InOut<D, M>;
387
+ Where: Where<D, M>;
388
+ Custom: Custom<D, M>;
389
+ }>;
390
+ const unwrap: (expr: RelationExpr) => Direct | Incoming | Outgoing | InOut;
308
391
  }
309
392
  type RelationExpr<D = Fqn, M = Fqn> = ExclusiveUnion<{
310
393
  Direct: RelationExpr.Direct<D, M>;
311
394
  Incoming: RelationExpr.Incoming<D, M>;
312
395
  Outgoing: RelationExpr.Outgoing<D, M>;
313
396
  InOut: RelationExpr.InOut<D, M>;
314
- Where: RelationExpr.Where<D, M>;
315
397
  }>;
316
398
  /**
317
399
  * Represents a version 2 expression which can be one of several types.
@@ -323,15 +405,227 @@ type ExpressionV2<D = Fqn, M = Fqn> = ExclusiveUnion<{
323
405
  Wildcard: FqnExpr.Wildcard;
324
406
  ModelRef: FqnExpr.ModelRef<M>;
325
407
  DeploymentRef: FqnExpr.DeploymentRef<D, M>;
408
+ ElementKind: FqnExpr.ElementKindExpr;
409
+ ElementTag: FqnExpr.ElementTagExpr;
410
+ Custom: FqnExpr.Custom<D, M>;
326
411
  Direct: RelationExpr.Direct<D, M>;
327
412
  Incoming: RelationExpr.Incoming<D, M>;
328
413
  Outgoing: RelationExpr.Outgoing<D, M>;
329
414
  InOut: RelationExpr.InOut<D, M>;
330
- RelationPredicateOrWhere: RelationExpr.Where<D, M>;
415
+ Where: ExpressionV2.Where<D, M>;
416
+ CustomRelation: RelationExpr.Custom<D, M>;
331
417
  }>;
332
418
  declare namespace ExpressionV2 {
333
- const isFqnExpr: (expr: ExpressionV2) => expr is FqnExpr;
334
- const isRelation: (expr: ExpressionV2) => expr is RelationExpr;
419
+ type Where<D = Fqn, M = Fqn> = FqnExpr.Where<D, M> | RelationExpr.Where<D, M>;
420
+ const isWhere: (expr: ExpressionV2) => expr is ExpressionV2.Where;
421
+ const isRelationWhere: (expr: ExpressionV2) => expr is RelationExpr.Where;
422
+ const isFqnExprWhere: (expr: ExpressionV2) => expr is FqnExpr.Where;
423
+ const isFqnExpr: (expr: ExpressionV2) => expr is FqnExpr.Any;
424
+ const isRelation: (expr: ExpressionV2) => expr is RelationExpr.Any;
425
+ }
426
+
427
+ declare namespace ModelLayer {
428
+ namespace FqnRef {
429
+ /**
430
+ * Reference to logical model element
431
+ */
432
+ type ModelRef<F = Fqn> = {
433
+ model: F;
434
+ };
435
+ const isModelRef: (ref: FqnRef) => ref is ModelRef;
436
+ /**
437
+ * Reference to imported logical model element
438
+ */
439
+ type ImportRef<F = Fqn> = {
440
+ project: ProjectId;
441
+ model: F;
442
+ };
443
+ const isImportRef: (ref: FqnRef) => ref is ImportRef;
444
+ const toFqn: (ref: FqnRef) => Fqn;
445
+ }
446
+ type FqnRef<M = Fqn> = ExclusiveUnion<{
447
+ ModelRef: FqnRef.ModelRef<M>;
448
+ ImportRef: FqnRef.ImportRef<M>;
449
+ }>;
450
+ namespace FqnExpr {
451
+ type Wildcard = {
452
+ wildcard: true;
453
+ };
454
+ const isWildcard: (expr: Expression) => expr is FqnExpr.Wildcard;
455
+ type ModelRef<M = Fqn> = {
456
+ ref: FqnRef.ModelRef<M> | FqnRef.ImportRef<M>;
457
+ selector?: PredicateSelector;
458
+ };
459
+ const isModelRef: (ref: Expression) => ref is FqnExpr.ModelRef;
460
+ type ElementKindExpr = {
461
+ elementKind: ElementKind;
462
+ isEqual: boolean;
463
+ };
464
+ function isElementKindExpr(expr: Expression): expr is ElementKindExpr;
465
+ type ElementTagExpr = {
466
+ elementTag: Tag;
467
+ isEqual: boolean;
468
+ };
469
+ function isElementTagExpr(expr: Expression): expr is ElementTagExpr;
470
+ type NonWildcard<M = Fqn> = ExclusiveUnion<{
471
+ ModelRef: ModelRef<M>;
472
+ ElementKind: ElementKindExpr;
473
+ ElementTag: ElementTagExpr;
474
+ }>;
475
+ type Where<M = Fqn> = {
476
+ where: {
477
+ expr: ExclusiveUnion<{
478
+ Wildcard: Wildcard;
479
+ ModelRef: ModelRef<M>;
480
+ ElementKind: ElementKindExpr;
481
+ ElementTag: ElementTagExpr;
482
+ }>;
483
+ condition: WhereOperator<string, string>;
484
+ };
485
+ };
486
+ const isWhere: (expr: Expression) => expr is FqnExpr.Where;
487
+ type Custom<M = Fqn> = {
488
+ custom: {
489
+ expr: FqnExprOrWhere<M>;
490
+ title?: string;
491
+ description?: string;
492
+ technology?: string;
493
+ notation?: string;
494
+ shape?: ElementShape;
495
+ color?: Color;
496
+ icon?: IconUrl;
497
+ border?: BorderStyle;
498
+ opacity?: number;
499
+ navigateTo?: ViewId;
500
+ multiple?: boolean;
501
+ size?: ShapeSize;
502
+ padding?: ShapeSize;
503
+ textSize?: ShapeSize;
504
+ };
505
+ };
506
+ const isCustom: (expr: Expression) => expr is FqnExpr.Custom;
507
+ const is: (expr: Expression) => expr is FqnExpr;
508
+ }
509
+ type FqnExpr<M = Fqn> = ExclusiveUnion<{
510
+ Wildcard: FqnExpr.Wildcard;
511
+ ModelRef: FqnExpr.ModelRef<M>;
512
+ ElementKind: FqnExpr.ElementKindExpr;
513
+ ElementTag: FqnExpr.ElementTagExpr;
514
+ }>;
515
+ type FqnExprOrWhere<M = Fqn> = ExclusiveUnion<{
516
+ Wildcard: FqnExpr.Wildcard;
517
+ ModelRef: FqnExpr.ModelRef<M>;
518
+ ElementKind: FqnExpr.ElementKindExpr;
519
+ ElementTag: FqnExpr.ElementTagExpr;
520
+ Where: FqnExpr.Where<M>;
521
+ }>;
522
+ type AnyFqnExpr<M = Fqn> = ExclusiveUnion<{
523
+ Wildcard: FqnExpr.Wildcard;
524
+ ModelRef: FqnExpr.ModelRef<M>;
525
+ ElementKind: FqnExpr.ElementKindExpr;
526
+ ElementTag: FqnExpr.ElementTagExpr;
527
+ Where: FqnExpr.Where<M>;
528
+ Custom: FqnExpr.Custom<M>;
529
+ }>;
530
+ function isAnyFqnExpr(expr: Expression): expr is AnyFqnExpr;
531
+ namespace RelationExpr {
532
+ type Direct<M = Fqn> = {
533
+ source: FqnExpr<M>;
534
+ target: FqnExpr<M>;
535
+ isBidirectional?: boolean;
536
+ };
537
+ const isDirect: (expr: Expression) => expr is RelationExpr.Direct;
538
+ type Incoming<M = Fqn> = {
539
+ incoming: FqnExpr<M>;
540
+ };
541
+ const isIncoming: (expr: Expression) => expr is RelationExpr.Incoming;
542
+ type Outgoing<M = Fqn> = {
543
+ outgoing: FqnExpr<M>;
544
+ };
545
+ const isOutgoing: (expr: Expression) => expr is RelationExpr.Outgoing;
546
+ type InOut<M = Fqn> = {
547
+ inout: FqnExpr<M>;
548
+ };
549
+ const isInOut: (expr: Expression) => expr is RelationExpr.InOut;
550
+ type Where<M = Fqn> = {
551
+ where: {
552
+ expr: ExclusiveUnion<{
553
+ Direct: RelationExpr.Direct<M>;
554
+ Incoming: RelationExpr.Incoming<M>;
555
+ Outgoing: RelationExpr.Outgoing<M>;
556
+ InOut: RelationExpr.InOut<M>;
557
+ }>;
558
+ condition: WhereOperator<string, string>;
559
+ };
560
+ };
561
+ const isWhere: (expr: Expression) => expr is RelationExpr.Where;
562
+ type Custom<M = Fqn> = {
563
+ customRelation: {
564
+ expr: RelationExprOrWhere<M>;
565
+ title?: string;
566
+ description?: string;
567
+ technology?: string;
568
+ notation?: string;
569
+ navigateTo?: ViewId;
570
+ notes?: string;
571
+ color?: Color;
572
+ line?: RelationshipLineType;
573
+ head?: RelationshipArrowType;
574
+ tail?: RelationshipArrowType;
575
+ };
576
+ };
577
+ const isCustom: (expr: Expression) => expr is Custom;
578
+ const is: (expr: Expression) => expr is RelationExpr;
579
+ }
580
+ type RelationExpr<M = Fqn> = ExclusiveUnion<{
581
+ Direct: RelationExpr.Direct<M>;
582
+ Incoming: RelationExpr.Incoming<M>;
583
+ Outgoing: RelationExpr.Outgoing<M>;
584
+ InOut: RelationExpr.InOut<M>;
585
+ }>;
586
+ type RelationExprOrWhere<M = Fqn> = ExclusiveUnion<{
587
+ Direct: RelationExpr.Direct<M>;
588
+ Incoming: RelationExpr.Incoming<M>;
589
+ Outgoing: RelationExpr.Outgoing<M>;
590
+ InOut: RelationExpr.InOut<M>;
591
+ Where: RelationExpr.Where<M>;
592
+ }>;
593
+ type AnyRelationExpr<M = Fqn> = ExclusiveUnion<{
594
+ Direct: RelationExpr.Direct<M>;
595
+ Incoming: RelationExpr.Incoming<M>;
596
+ Outgoing: RelationExpr.Outgoing<M>;
597
+ InOut: RelationExpr.InOut<M>;
598
+ Where: RelationExpr.Where<M>;
599
+ CustomRelation: RelationExpr.Custom<M>;
600
+ }>;
601
+ function isAnyRelationExpr(expr: Expression): expr is AnyRelationExpr;
602
+ /**
603
+ * Represents a version 2 expression which can be one of several types.
604
+ *
605
+ * @template M - The type for the model FQN, defaults to `Fqn`.
606
+ */
607
+ type Expression<M = Fqn> = ExclusiveUnion<{
608
+ Wildcard: FqnExpr.Wildcard;
609
+ ModelRef: FqnExpr.ModelRef<M>;
610
+ ElementKind: FqnExpr.ElementKindExpr;
611
+ ElementTag: FqnExpr.ElementTagExpr;
612
+ Custom: FqnExpr.Custom<M>;
613
+ Direct: RelationExpr.Direct<M>;
614
+ Incoming: RelationExpr.Incoming<M>;
615
+ Outgoing: RelationExpr.Outgoing<M>;
616
+ InOut: RelationExpr.InOut<M>;
617
+ CustomRelation: RelationExpr.Custom<M>;
618
+ Where: Expression.Where<M>;
619
+ }>;
620
+ function isExpression(expr: any): expr is Expression;
621
+ namespace Expression {
622
+ type Where<M = Fqn> = FqnExpr.Where<M> | RelationExpr.Where<M>;
623
+ const isWhere: (expr: Expression) => expr is Expression.Where;
624
+ const isCustomFqnExpr: (expr: Expression) => expr is FqnExpr.Custom;
625
+ const isCustomRelationExpr: (expr: Expression) => expr is RelationExpr.Custom;
626
+ const isFqnExpr: (expr: Expression) => expr is FqnExpr;
627
+ const isRelation: (expr: Expression) => expr is RelationExpr;
628
+ }
335
629
  }
336
630
 
337
631
  type GlobalPredicateId = Tagged<string, 'GlobalPredicateId'>;
@@ -354,11 +648,11 @@ type ElementNotation = {
354
648
 
355
649
  type ViewId<Id extends string = string> = Tagged<Id, 'ViewID'>;
356
650
  type ViewRulePredicate = {
357
- include: Expression[];
651
+ include: ModelLayer.Expression[];
358
652
  exclude?: never;
359
653
  } | {
360
654
  include?: never;
361
- exclude: Expression[];
655
+ exclude: ModelLayer.Expression[];
362
656
  };
363
657
  declare function isViewRulePredicate(rule: DeploymentViewRule): rule is DeploymentViewRulePredicate;
364
658
  declare function isViewRulePredicate(rule: DynamicViewRule): rule is DynamicViewIncludeRule;
@@ -368,7 +662,7 @@ interface ViewRuleGlobalPredicateRef {
368
662
  }
369
663
  declare function isViewRuleGlobalPredicateRef(rule: ViewRule): rule is ViewRuleGlobalPredicateRef;
370
664
  interface ViewRuleStyle {
371
- targets: ElementExpression[];
665
+ targets: ModelLayer.FqnExpr[];
372
666
  notation?: string;
373
667
  style: ElementStyle & {
374
668
  color?: Color;
@@ -463,7 +757,7 @@ interface DynamicViewParallelSteps {
463
757
  }
464
758
  type DynamicViewStepOrParallel = DynamicViewStep | DynamicViewParallelSteps;
465
759
  type DynamicViewIncludeRule = {
466
- include: ElementPredicateExpression[];
760
+ include: ModelLayer.AnyFqnExpr[];
467
761
  };
468
762
  type DynamicViewRule = DynamicViewIncludeRule | ViewRuleGlobalPredicateRef | ViewRuleStyle | ViewRuleGlobalStyle | ViewRuleAutoLayout;
469
763
  interface DynamicView<ViewIDs extends string = string, Tags extends string = string> extends BasicView<'dynamic', ViewIDs, Tags> {
@@ -647,12 +941,12 @@ interface DiagramNode extends ComputedNode {
647
941
  labelBBox: BBox;
648
942
  }
649
943
  declare namespace DiagramNode {
650
- function modelRef(node: DiagramNode): Fqn | null;
651
- function deploymentRef(node: DiagramNode): Fqn | null;
944
+ function modelRef(node: Pick<DiagramNode, 'id' | 'modelRef'>): Fqn | null;
945
+ function deploymentRef(node: Pick<DiagramNode, 'id' | 'deploymentRef'>): Fqn | null;
652
946
  /**
653
947
  * Nodes group is a special kind of node, exisiting only in view
654
948
  */
655
- function isNodesGroup(node: DiagramNode): boolean;
949
+ function isNodesGroup(node: Pick<DiagramNode, 'kind'>): boolean;
656
950
  }
657
951
  interface DiagramEdge extends ComputedEdge {
658
952
  points: NonEmptyArray<Point>;
@@ -822,6 +1116,7 @@ interface ParsedLikeC4ModelData<ElementKinds extends string = string, RelationKi
822
1116
  elements: Record<DeploymentFqns, DeploymentElement>;
823
1117
  relations: Record<RelationId, DeploymentRelation>;
824
1118
  };
1119
+ imports: Record<ProjectId, NonEmptyArray<Element>>;
825
1120
  }
826
1121
  type AnyParsedLikeC4ModelData = ParsedLikeC4ModelData<any, any, any, any, any, any>;
827
1122
  /**
@@ -855,4 +1150,4 @@ interface LayoutedLikeC4ModelData<Fqns extends string = string, DeploymentFqns e
855
1150
  views: Record<Views, DiagramView<Views, Tags>>;
856
1151
  }
857
1152
 
858
- export { type GlobalDynamicPredicates as $, type CustomElementExpr as A, type CustomRelationExpr as B, type ComputedLikeC4ModelData as C, DeploymentElement as D, type DirectRelationExpr as E, type ElementExpression as F, type ElementKindExpr as G, type ElementPredicateExpression as H, type ElementRefExpr as I, type ElementTagExpr as J, type ElementWhereExpr as K, type LikeC4View as L, type ExpandedElementExpr as M, type Expression as N, type IncomingExpr as O, type PredicateSelector as P, type InOutExpr as Q, type NonWilcard as R, type OutgoingExpr as S, type RelationExpression as T, type RelationPredicateExpression as U, type RelationWhereExpr as V, type WildcardExpr as W, ExpressionV2 as X, FqnExpr as Y, FqnRef as Z, RelationExpr as _, ComputedView as a, type ComputedDeploymentView as a$, type GlobalPredicateId as a0, type GlobalPredicates as a1, type GlobalStyleID as a2, type GlobalStyles as a3, type ModelGlobals as a4, type AnyParsedLikeC4ModelData as a5, type GenericLikeC4ModelData as a6, type LayoutedLikeC4ModelData as a7, type LikeC4ModelDump as a8, type ParsedLikeC4ModelData as a9, type RelationshipKind as aA, type RelationshipKindSpecification as aB, type RelationshipLineType as aC, ComputedNode as aD, DiagramNode as aE, extractStep as aF, getBBoxCenter as aG, getParallelStepsPrefix as aH, isAutoLayoutDirection as aI, isDeploymentView as aJ, isDynamicView as aK, isDynamicViewParallelSteps as aL, isElementView as aM, isExtendsElementView as aN, isScopedElementView as aO, isStepEdgeId as aP, isViewRuleAutoLayout as aQ, isViewRuleGlobalPredicateRef as aR, isViewRuleGlobalStyle as aS, isViewRuleGroup as aT, isViewRulePredicate as aU, isViewRuleStyle as aV, stepEdgeId as aW, type AutoLayoutDirection as aX, type BasicElementView as aY, type BasicView as aZ, type BBox as a_, isAndOperator as aa, isKindEqual as ab, isNotOperator as ac, isOrOperator as ad, isParticipantOperator as ae, isTagEqual as af, whereOperatorAsPredicate as ag, type AllNever as ah, type AndOperator as ai, type EqualOperator as aj, type Filterable as ak, type KindEqual as al, type NotOperator as am, type OperatorPredicate as an, type OrOperator as ao, type Participant as ap, type ParticipantOperator as aq, type TagEqual as ar, type WhereOperator as as, DefaultArrowType as at, DefaultLineStyle as au, DefaultRelationshipColor as av, type AbstractRelation as aw, type ModelRelation as ax, type RelationId as ay, type RelationshipArrowType as az, type DeployedInstance as b, type ComputedDynamicView as b0, type ComputedEdge as b1, type ComputedElementView as b2, type CustomColorDefinitions as b3, type DeploymentView as b4, type DeploymentViewRule as b5, type DeploymentViewRulePredicate as b6, type DeploymentViewRuleStyle as b7, type DiagramEdge as b8, type DiagramView as b9, type ElementNotation as bA, type DynamicView as ba, type DynamicViewIncludeRule as bb, type DynamicViewParallelSteps as bc, type DynamicViewRule as bd, type DynamicViewStep as be, type DynamicViewStepOrParallel as bf, type EdgeId as bg, type ElementView as bh, type ExtendsElementView as bi, type NodeId as bj, type ScopedElementView as bk, type StepEdgeId as bl, type StepEdgeIdLiteral as bm, type ViewAutoLayout as bn, type ViewId as bo, type ViewManualLayout as bp, type ViewRule as bq, type ViewRuleAutoLayout as br, type ViewRuleGlobalPredicateRef as bs, type ViewRuleGlobalStyle as bt, type ViewRuleGroup as bu, type ViewRulePredicate as bv, type ViewRuleStyle as bw, type ViewRuleStyleOrGlobalRef as bx, type ViewWithHash as by, type ViewWithNotation as bz, type DeploymentElementStyle as c, type DeploymentNode as d, expression as e, type DeploymentNodeKind as f, type DeploymentNodeKindSpecification as g, type DeploymentRef as h, type DeploymentRelation as i, isCustomElement as j, isCustomRelationExpr as k, isElement as l, isElementKindExpr as m, isElementPredicateExpr as n, isElementRef as o, isElementTagExpr as p, isElementWhere as q, isExpandedElementExpr as r, isIncoming as s, isInOut as t, isOutgoing as u, isRelation as v, isRelationExpression as w, isRelationPredicateExpr as x, isRelationWhere as y, isWildcard as z };
1153
+ export { isTagEqual as $, type GlobalPredicateId as A, BorderStyles as B, type ComputedLikeC4ModelData as C, DeploymentElement as D, ElementKind as E, FqnExpr as F, type GlobalDynamicPredicates as G, type HexColorLiteral as H, type GlobalPredicates as I, type GlobalStyleID as J, type GlobalStyles as K, type LikeC4View as L, ModelLayer as M, type ModelGlobals as N, type AnyParsedLikeC4ModelData as O, type PredicateSelector as P, type GenericLikeC4ModelData as Q, RelationExpr as R, type LayoutedLikeC4ModelData as S, type ThemeColorValues as T, type LikeC4ModelDump as U, type ParsedLikeC4ModelData as V, isAndOperator as W, isKindEqual as X, isNotOperator as Y, isOrOperator as Z, isParticipantOperator as _, ComputedView as a, type CustomColorDefinitions as a$, whereOperatorAsPredicate as a0, type AllNever as a1, type AndOperator as a2, type EqualOperator as a3, type Filterable as a4, type KindEqual as a5, type NotOperator as a6, type OperatorPredicate as a7, type OrOperator as a8, type Participant as a9, DiagramNode as aA, extractStep as aB, getBBoxCenter as aC, getParallelStepsPrefix as aD, isAutoLayoutDirection as aE, isDeploymentView as aF, isDynamicView as aG, isDynamicViewParallelSteps as aH, isElementView as aI, isExtendsElementView as aJ, isScopedElementView as aK, isStepEdgeId as aL, isViewRuleAutoLayout as aM, isViewRuleGlobalPredicateRef as aN, isViewRuleGlobalStyle as aO, isViewRuleGroup as aP, isViewRulePredicate as aQ, isViewRuleStyle as aR, stepEdgeId as aS, type AutoLayoutDirection as aT, type BasicElementView as aU, type BasicView as aV, type BBox as aW, type ComputedDeploymentView as aX, type ComputedDynamicView as aY, type ComputedEdge as aZ, type ComputedElementView as a_, type ParticipantOperator as aa, type TagEqual as ab, type WhereOperator as ac, DefaultArrowType as ad, DefaultLineStyle as ae, DefaultRelationshipColor as af, type AbstractRelation as ag, type ModelRelation as ah, type RelationId as ai, type RelationshipArrowType as aj, type RelationshipKind as ak, type RelationshipKindSpecification as al, type RelationshipLineType as am, isThemeColor as an, ThemeColors as ao, type Color as ap, type ColorLiteral as aq, type ElementThemeColors as ar, type ElementThemeColorValues as as, type RelationshipThemeColors as at, type RelationshipThemeColorValues as au, type ShapeSize as av, type SpacingSize as aw, type TextSize as ax, type ThemeColor as ay, ComputedNode as az, type LikeC4Theme as b, type DeploymentView as b0, type DeploymentViewRule as b1, type DeploymentViewRulePredicate as b2, type DeploymentViewRuleStyle as b3, type DiagramEdge as b4, type DiagramView as b5, type DynamicView as b6, type DynamicViewIncludeRule as b7, type DynamicViewParallelSteps as b8, type DynamicViewRule as b9, type DynamicViewStep as ba, type DynamicViewStepOrParallel as bb, type EdgeId as bc, type ElementView as bd, type ExtendsElementView as be, type NodeId as bf, type ScopedElementView as bg, type StepEdgeId as bh, type StepEdgeIdLiteral as bi, type ViewAutoLayout as bj, type ViewId as bk, type ViewManualLayout as bl, type ViewRule as bm, type ViewRuleAutoLayout as bn, type ViewRuleGlobalPredicateRef as bo, type ViewRuleGlobalStyle as bp, type ViewRuleGroup as bq, type ViewRulePredicate as br, type ViewRuleStyle as bs, type ViewRuleStyleOrGlobalRef as bt, type ViewWithHash as bu, type ViewWithNotation as bv, type ElementNotation as bw, type DeployedInstance as c, type DeploymentElementStyle as d, type DeploymentNode as e, type DeploymentNodeKind as f, type DeploymentNodeKindSpecification as g, type DeploymentRef as h, type DeploymentRelation as i, DefaultElementShape as j, DefaultPaddingSize as k, DefaultShapeSize as l, DefaultTextSize as m, DefaultThemeColor as n, ElementShapes as o, type BorderStyle as p, type Element as q, type ElementKindSpecification as r, type ElementKindSpecificationStyle as s, type ElementShape as t, type ElementStyle as u, type Link as v, type TagSpec as w, type TypedElement as x, ExpressionV2 as y, FqnRef as z };