@likec4/core 1.39.5 → 1.41.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 (65) hide show
  1. package/dist/builder/index.d.mts +75 -14
  2. package/dist/builder/index.mjs +111 -47
  3. package/dist/compute-view/index.d.mts +5 -5
  4. package/dist/compute-view/index.mjs +3 -3
  5. package/dist/compute-view/relationships-view/index.d.mts +5 -5
  6. package/dist/index.d.mts +5 -5
  7. package/dist/index.mjs +5 -5
  8. package/dist/model/connection/deployment/index.d.mts +7 -7
  9. package/dist/model/connection/deployment/index.mjs +1 -1
  10. package/dist/model/connection/index.d.mts +8 -8
  11. package/dist/model/connection/index.mjs +1 -1
  12. package/dist/model/connection/model/index.d.mts +7 -7
  13. package/dist/model/index.d.mts +10 -10
  14. package/dist/model/index.mjs +3 -3
  15. package/dist/shared/{core.CxGKeL-L.mjs → core.6_Vp2iiN.mjs} +29 -1
  16. package/dist/shared/{core.BqVo8LrH.mjs → core.Ae86Y3tB.mjs} +27 -8
  17. package/dist/shared/{core.DozSPE83.mjs → core.Asc11Mjy.mjs} +47 -11
  18. package/dist/shared/{core.PFqKFee4.d.mts → core.BXsxn-hf.d.mts} +44 -8
  19. package/dist/shared/core.BazD6cot.mjs +14 -0
  20. package/dist/shared/{core.B4scjmM6.d.mts → core.BhpgpOep.d.mts} +24 -4
  21. package/dist/shared/{core.CNhp8dSD.mjs → core.BvMRMo7Z.mjs} +69 -46
  22. package/dist/shared/{core.DmFVWyBc.d.mts → core.CUG6vpyL.d.mts} +2 -2
  23. package/dist/shared/{core.yHe79zEl.mjs → core.CXy1NLUG.mjs} +2 -2
  24. package/dist/shared/{core.B65NlqR_.d.mts → core.D-ZGWDDt.d.mts} +49 -39
  25. package/dist/shared/{core.CsbOakly.mjs → core.DA5vzwZ9.mjs} +30 -4
  26. package/dist/shared/{core.T-eLZTW_.mjs → core.DJp8fgok.mjs} +6 -2
  27. package/dist/shared/{core.1_FtXl46.d.mts → core.DgesAwC8.d.mts} +12 -3
  28. package/dist/shared/{core.1ypAWObi.d.mts → core.FUPplpae.d.mts} +1 -1
  29. package/dist/shared/{core.BZs_hKMJ.d.mts → core.hfOE3RfK.d.mts} +4 -4
  30. package/dist/shared/{core.Chtad_Hv.d.mts → core.xSQO0XYD.d.mts} +2 -2
  31. package/dist/shared/{core.Bq0r6_yG.d.mts → core.zxTBF_PD.d.mts} +3 -3
  32. package/dist/types/_aux.d.mts +2 -2
  33. package/dist/types/_aux.mjs +1 -5
  34. package/dist/types/expression-model.d.mts +3 -3
  35. package/dist/types/expression.d.mts +3 -3
  36. package/dist/types/fqnRef.d.mts +2 -2
  37. package/dist/types/index.d.mts +6 -6
  38. package/dist/types/index.mjs +5 -5
  39. package/dist/utils/index.d.mts +2 -2
  40. package/dist/utils/iterable/index.d.mts +1 -1
  41. package/package.json +2 -2
  42. package/src/builder/Builder.ts +119 -43
  43. package/src/builder/_types.ts +12 -8
  44. package/src/compute-view/deployment-view/utils.ts +47 -36
  45. package/src/compute-view/dynamic-view/compute.ts +1 -0
  46. package/src/compute-view/relationships-view/layout.ts +7 -6
  47. package/src/compute-view/utils/buildComputedNodes.ts +23 -10
  48. package/src/compute-view/utils/buildElementNotations.ts +2 -1
  49. package/src/model/DeploymentElementModel.ts +33 -3
  50. package/src/model/ElementModel.ts +25 -2
  51. package/src/model/RelationModel.ts +1 -1
  52. package/src/model/view/EdgeModel.ts +3 -2
  53. package/src/model/view/LikeC4ViewModel.ts +25 -7
  54. package/src/model/view/NodeModel.ts +1 -1
  55. package/src/types/RichText.ts +6 -4
  56. package/src/types/_aux.ts +26 -0
  57. package/src/types/_common.ts +24 -2
  58. package/src/types/geometry.ts +29 -1
  59. package/src/types/index.ts +2 -0
  60. package/src/types/model-deployment.ts +8 -18
  61. package/src/types/model-logical.ts +31 -16
  62. package/src/types/model-spec.ts +3 -0
  63. package/src/types/view-computed.ts +28 -13
  64. package/src/types/view-layouted.ts +7 -4
  65. package/src/types/view-parsed.dynamic.ts +11 -0
@@ -8,10 +8,10 @@ const _stage = "_stage";
8
8
  const _type = "_type";
9
9
 
10
10
  function isDeploymentNode(el) {
11
- return "kind" in el && !isTruthy(el.element);
11
+ return isTruthy(el.kind) && !isTruthy(el.element);
12
12
  }
13
13
  function isDeployedInstance(el) {
14
- return "element" in el && isTruthy(el.element);
14
+ return isTruthy(el.element) && !isTruthy(el.kind);
15
15
  }
16
16
 
17
17
  function isTagEqual(operator) {
@@ -1,11 +1,11 @@
1
1
  import { Simplify, MergeExclusive, Tagged, NonEmptyTuple, IsNever, IsAny } from 'type-fest';
2
- import { A as Any, W as WithOptionalTags, z as WithOptionalLinks, g as StrictViewId, e as _stage, f as _type, F as Fqn, B as WithMetadata, h as ElementKind, l as Tags, m as Metadata, R as RelationKind, V as ViewId, U as Unknown, s as DeploymentFqn, o as DeploymentKind, T as Tag, n as MetadataKey, E as ExtractOnStage, M as ModelStage, P as ProjectId$1, j as ElementId, D as DeploymentId, d as UnknownParsed, b as UnknownComputed, c as UnknownLayouted, S as SpecAux, a as Aux, N as Never } from './core.B4scjmM6.mjs';
3
- import { N as NonEmptyArray, E as ExclusiveUnion, L as Link, K as KeysOf } from './core.1_FtXl46.mjs';
2
+ import { A as Any, W as WithOptionalTags, C as WithOptionalLinks, h as StrictViewId, f as _stage, g as _type, F as Fqn, G as WithDescriptionAndTech, H as WithMetadata, I as WithNotation, j as ElementKind, R as RelationKind, V as ViewId, U as Unknown, u as DeploymentFqn, q as DeploymentKind, T as Tag, o as MetadataKey, J as WithTags, E as ExtractOnStage, M as ModelStage, P as ProjectId$1, k as ElementId, D as DeploymentId, d as UnknownParsed, b as UnknownComputed, c as UnknownLayouted, S as SpecAux, a as Aux, N as Never } from './core.BhpgpOep.mjs';
3
+ import { N as NonEmptyArray, E as ExclusiveUnion, L as Link, K as KeysOf } from './core.DgesAwC8.mjs';
4
4
  import { ModelExpression, ModelFqnExpr } from '../types/expression-model.mjs';
5
5
  import { I as Icon, M as MarkdownOrString, d as RelationId, T as Tag$1, P as ProjectId, N as NodeId, j as EdgeId, m as StepEdgeKind } from './core.DX-WYEPA.mjs';
6
6
  import { b as BorderStyle, a as ShapeSize, S as SpacingSize, T as TextSize, i as Color, c as ElementShape, R as RelationshipLineType, f as RelationshipArrowType, h as ThemeColor, C as ColorLiteral, e as CustomColorDefinitions } from './core.CzdwsPmY.mjs';
7
7
  import { FqnRef } from '../types/fqnRef.mjs';
8
- import { E as Expression, F as FqnExpr } from './core.DmFVWyBc.mjs';
8
+ import { E as Expression, F as FqnExpr } from './core.CUG6vpyL.mjs';
9
9
 
10
10
  type Point = readonly [x: number, y: number];
11
11
  interface XYPoint {
@@ -23,6 +23,8 @@ declare namespace BBox {
23
23
  function fromPoints(points: Point[]): BBox;
24
24
  function merge(...boxes: BBox[]): BBox;
25
25
  function toRectBox(box: BBox): RectBox;
26
+ function expand(box: BBox, plus: number): BBox;
27
+ function shrink(box: BBox, minus: number): BBox;
26
28
  }
27
29
  interface RectBox {
28
30
  x1: number;
@@ -220,8 +222,17 @@ type DynamicViewRule<A extends Any = Any> = ExclusiveUnion<{
220
222
  GlobalStyle: ViewRuleGlobalStyle;
221
223
  AutoLayout: ViewRuleAutoLayout;
222
224
  }>;
225
+ type DynamicViewDisplayVariant = 'diagram' | 'sequence';
223
226
  interface ParsedDynamicView<A extends Any = Any> extends BaseParsedViewProperties<A> {
224
227
  [_type]: 'dynamic';
228
+ /**
229
+ * How to display the dynamic view
230
+ * - `diagram`: display as a regular likec4 view
231
+ * - `sequence`: display as a sequence diagram
232
+ *
233
+ * @default 'diagram'
234
+ */
235
+ readonly variant?: DynamicViewDisplayVariant;
225
236
  readonly steps: DynamicViewStepOrParallel<A>[];
226
237
  readonly rules: DynamicViewRule<A>[];
227
238
  }
@@ -240,6 +251,7 @@ interface ModelGlobals<A extends Any = Any> {
240
251
 
241
252
  declare const DefaultThemeColor: ThemeColor;
242
253
  declare const DefaultElementShape: ElementShape;
254
+ declare const DefaultSize = "md";
243
255
  declare const DefaultShapeSize: ShapeSize;
244
256
  declare const DefaultPaddingSize: SpacingSize;
245
257
  declare const DefaultTextSize: TextSize;
@@ -265,38 +277,32 @@ interface ElementStyle {
265
277
  readonly padding?: SpacingSize;
266
278
  readonly textSize?: TextSize;
267
279
  }
268
- interface Element<A extends Any = Any> extends WithOptionalTags<A>, WithOptionalLinks, WithMetadata<A> {
280
+ type WithSizes = Pick<ElementStyle, 'size' | 'padding' | 'textSize'>;
281
+ /**
282
+ * Ensures that the sizes are set to default values if they are not set
283
+ */
284
+ declare function ensureSizes<S extends WithSizes>({ size, padding, textSize, ...rest }: S): Omit<S, 'size' | 'padding' | 'textSize'> & Required<WithSizes>;
285
+ interface Element<A extends Any = Any> extends WithDescriptionAndTech, WithOptionalTags<A>, WithOptionalLinks, WithMetadata<A>, WithNotation {
269
286
  readonly id: Fqn<A>;
270
287
  readonly kind: ElementKind<A>;
271
288
  readonly title: string;
272
- readonly description?: MarkdownOrString | null;
273
- readonly technology?: string | null;
274
- readonly tags?: Tags<A> | null;
275
- readonly links?: readonly Link[] | null;
276
289
  readonly icon?: Icon;
277
290
  readonly shape?: ElementShape;
278
291
  readonly color?: Color;
279
292
  readonly style?: ElementStyle;
280
- readonly notation?: string | null;
281
- readonly metadata?: Metadata<A>;
282
293
  }
283
294
  declare const DefaultLineStyle: RelationshipLineType;
284
295
  declare const DefaultArrowType: RelationshipArrowType;
285
296
  declare const DefaultRelationshipColor: ThemeColor;
286
- interface AbstractRelationship<A extends Any> extends WithOptionalTags<A>, WithOptionalLinks, WithMetadata<A> {
297
+ interface AbstractRelationship<A extends Any> extends WithDescriptionAndTech, WithOptionalTags<A>, WithOptionalLinks, WithMetadata<A> {
287
298
  readonly id: RelationId;
288
299
  readonly title?: string | null;
289
- readonly description?: MarkdownOrString | null;
290
- readonly technology?: string | null;
291
300
  readonly kind?: RelationKind<A>;
292
301
  readonly color?: Color;
293
302
  readonly line?: RelationshipLineType;
294
303
  readonly head?: RelationshipArrowType;
295
304
  readonly tail?: RelationshipArrowType;
296
- readonly tags?: Tags<A> | null;
297
- readonly links?: readonly Link[] | null;
298
305
  readonly navigateTo?: ViewId<A>;
299
- readonly metadata?: Metadata<A>;
300
306
  }
301
307
  /**
302
308
  * Relationship between two model elements
@@ -316,20 +322,14 @@ interface DeploymentElementStyle extends ElementStyle {
316
322
  readonly shape?: ElementShape;
317
323
  readonly color?: Color;
318
324
  }
319
- interface DeploymentNode<A extends Any = Unknown> extends WithOptionalTags<A>, WithOptionalLinks, WithMetadata<A> {
325
+ interface DeploymentNode<A extends Any = Unknown> extends WithDescriptionAndTech, WithOptionalTags<A>, WithOptionalLinks, WithMetadata<A>, WithNotation {
320
326
  element?: never;
321
327
  readonly id: DeploymentFqn<A>;
322
328
  readonly kind: DeploymentKind<A>;
323
329
  readonly title: string;
324
- readonly description?: MarkdownOrString | null;
325
- readonly technology?: string | null;
326
- readonly tags?: Tags<A> | null;
327
- readonly links?: readonly Link[] | null;
328
330
  readonly style: DeploymentElementStyle;
329
- readonly notation?: string | null;
330
- readonly metadata?: Metadata<A>;
331
331
  }
332
- interface DeployedInstance<A extends Any = Unknown> extends WithOptionalTags<A>, WithOptionalLinks, WithMetadata<A> {
332
+ interface DeployedInstance<A extends Any = Unknown> extends WithDescriptionAndTech, WithOptionalTags<A>, WithOptionalLinks, WithMetadata<A>, WithNotation {
333
333
  kind?: never;
334
334
  /**
335
335
  * Format: `<DeploymentNode Fqn>.<Instance Id>`
@@ -338,13 +338,7 @@ interface DeployedInstance<A extends Any = Unknown> extends WithOptionalTags<A>,
338
338
  readonly id: DeploymentFqn<A>;
339
339
  readonly element: Fqn<A>;
340
340
  readonly title?: string;
341
- readonly description?: MarkdownOrString | null;
342
- readonly technology?: string | null;
343
- readonly tags?: Tags<A> | null;
344
- readonly links?: readonly Link[] | null;
345
341
  readonly style?: DeploymentElementStyle;
346
- readonly notation?: string;
347
- readonly metadata?: Metadata<A>;
348
342
  }
349
343
  type DeploymentElement<A extends Any = Unknown> = DeploymentNode<A> | DeployedInstance<A>;
350
344
  type DeploymentElementRef<A extends Any = Unknown> = {
@@ -372,6 +366,7 @@ type DeploymentRelation<A extends Any = Unknown> = DeploymentRelationship<A>;
372
366
  interface ElementSpecification {
373
367
  tags?: Tag$1[];
374
368
  title?: string;
369
+ summary?: MarkdownOrString;
375
370
  description?: MarkdownOrString;
376
371
  technology?: string;
377
372
  notation?: string;
@@ -435,37 +430,40 @@ interface LikeC4Project {
435
430
  title?: string;
436
431
  }
437
432
 
438
- interface ComputedNode<A extends Any = Any> extends WithOptionalLinks {
433
+ interface ComputedNode<A extends Any = Any> extends WithTags<A>, WithOptionalLinks {
439
434
  id: NodeId;
440
435
  kind: ElementKind<A> | DeploymentKind<A> | '@group';
441
436
  parent: NodeId | null;
442
437
  /**
443
438
  * Reference to model element
444
439
  */
445
- modelRef?: Fqn<A> | undefined;
440
+ modelRef?: Fqn<A>;
446
441
  /**
447
442
  * Reference to deployment element
448
443
  */
449
- deploymentRef?: DeploymentFqn<A> | undefined;
444
+ deploymentRef?: DeploymentFqn<A>;
450
445
  title: string;
446
+ /**
447
+ * Description of the node
448
+ * either summary or description
449
+ */
451
450
  description?: MarkdownOrString | null;
452
451
  technology?: string | null;
453
- notation?: string;
454
452
  children: NodeId[];
455
453
  inEdges: EdgeId[];
456
454
  outEdges: EdgeId[];
457
- tags: Tags<A>;
458
455
  shape: ElementShape;
459
456
  color: Color;
460
457
  icon?: Icon;
461
458
  style: ElementStyle;
462
459
  navigateTo?: StrictViewId<A> | null;
463
460
  level: number;
464
- depth?: number;
461
+ depth?: number | null;
465
462
  /**
466
463
  * If this node was customized in the view
467
464
  */
468
465
  isCustomized?: boolean;
466
+ notation?: string | null;
469
467
  }
470
468
  interface ComputedEdge<A extends Any = Any> extends WithOptionalTags<A> {
471
469
  id: EdgeId;
@@ -474,7 +472,7 @@ interface ComputedEdge<A extends Any = Any> extends WithOptionalTags<A> {
474
472
  target: NodeId;
475
473
  label: string | null;
476
474
  description?: MarkdownOrString | null;
477
- technology?: string;
475
+ technology?: string | null;
478
476
  relations: RelationId[];
479
477
  kind?: RelationKind<A> | typeof StepEdgeKind;
480
478
  notation?: string;
@@ -514,6 +512,12 @@ interface ComputedDeploymentView<A extends Any = Any> extends BaseComputedViewPr
514
512
  }
515
513
  interface ComputedDynamicView<A extends Any = Any> extends BaseComputedViewProperties<A> {
516
514
  readonly [_type]: 'dynamic';
515
+ /**
516
+ * How to display the dynamic view
517
+ * - `diagram`: display as a regular likec4 view
518
+ * - `sequence`: display as a sequence diagram
519
+ */
520
+ readonly variant: DynamicViewDisplayVariant;
517
521
  }
518
522
 
519
523
  interface DiagramNode<A extends Any = Any> extends ComputedNode<A>, BBox {
@@ -578,6 +582,12 @@ interface LayoutedDeploymentView<A extends Any = Any> extends BaseLayoutedViewPr
578
582
  }
579
583
  interface LayoutedDynamicView<A extends Any = Any> extends BaseLayoutedViewProperties<A> {
580
584
  readonly [_type]: 'dynamic';
585
+ /**
586
+ * How to display the dynamic view
587
+ * - `diagram`: display as a regular likec4 view
588
+ * - `sequence`: display as a sequence diagram
589
+ */
590
+ readonly variant: DynamicViewDisplayVariant;
581
591
  }
582
592
 
583
593
  /**
@@ -778,7 +788,7 @@ declare class RichText {
778
788
  * return RichText.memoize(this, this.$element.description)
779
789
  * }
780
790
  */
781
- static memoize(obj: object, source: MarkdownOrString | null | undefined): RichTextOrEmpty;
791
+ static memoize(obj: object, tag: symbol | string, source: MarkdownOrString | null | undefined): RichTextOrEmpty;
782
792
  /**
783
793
  * Creates a RichText instance from a source.
784
794
  */
@@ -818,4 +828,4 @@ declare class RichText {
818
828
  equals(other: unknown): boolean;
819
829
  }
820
830
 
821
- export { isDiagramView as $, type AuxFromLikeC4ModelData as A, BBox as B, type ComputedLikeC4ModelData as C, type DeploymentElementStyle as D, type ElementStyle as E, type Element as F, type GlobalPredicateId as G, DefaultLineStyle as H, DefaultArrowType as I, DefaultRelationshipColor as J, type AbstractRelationship as K, type LayoutedLikeC4ModelData as L, type ModelGlobals as M, type Relationship as N, type ModelRelation as O, type Point as P, type ElementSpecification as Q, RichText as R, type SpecificationDump as S, type TagSpecification as T, isTagColorSpecified as U, type RelationshipSpecification as V, type Specification as W, type XYPoint as X, type LikeC4Project as Y, type ParsedView as Z, type LayoutedView as _, type RichTextEmpty as a, type ElementViewRuleStyle as a$, type ComputedView as a0, type ProcessedView as a1, type AnyView as a2, type ViewOnStage as a3, type ViewWithType as a4, type ViewRule as a5, type ViewRulePredicate as a6, isViewRulePredicate as a7, isViewRuleStyle as a8, isComputedView as a9, type ComputedElementView as aA, type ComputedDeploymentView as aB, type ComputedDynamicView as aC, type DiagramNode as aD, type DiagramEdge as aE, type LayoutedElementView as aF, type LayoutedDeploymentView as aG, type LayoutedDynamicView as aH, type DeploymentViewIncludePredicate as aI, type DeploymentViewExcludePredicate as aJ, type DeploymentViewPredicate as aK, type DeploymentViewRuleStyle as aL, type DeploymentViewRule as aM, type ParsedDeploymentView as aN, type DynamicViewStep as aO, type DynamicViewParallelSteps as aP, getParallelStepsPrefix as aQ, type DynamicViewStepOrParallel as aR, type DynamicViewIncludeRule as aS, type DynamicViewRule as aT, type ParsedDynamicView as aU, isDynamicViewParallelSteps as aV, type ElementViewIncludePredicate as aW, type ElementViewExcludePredicate as aX, type ElementViewPredicate as aY, type ElementViewRuleGroup as aZ, isViewRuleGroup as a_, isElementView as aa, isScopedElementView as ab, isExtendsElementView as ac, isDeploymentView as ad, isDynamicView as ae, type AnyIncludePredicate as af, type AnyExcludePredicate as ag, type AnyViewRuleStyle as ah, type ViewRuleGlobalStyle as ai, isViewRuleGlobalStyle as aj, type ViewRuleGlobalPredicateRef as ak, isViewRuleGlobalPredicateRef as al, type AutoLayoutDirection as am, isAutoLayoutDirection as an, type ViewRuleAutoLayout as ao, isViewRuleAutoLayout as ap, type ViewAutoLayout as aq, type ViewManualLayout as ar, type ViewType as as, type BaseViewProperties as at, type BaseParsedViewProperties as au, type NodeNotation as av, type ViewWithNotation as aw, type ViewWithHash as ax, type ComputedNode as ay, type ComputedEdge as az, type RichTextOrEmpty as b, type ElementViewRule as b0, type ParsedElementView as b1, RectBox as c, type GlobalPredicates as d, type GlobalDynamicPredicates as e, type GlobalStyleID as f, type GlobalStyles as g, type ParsedLikeC4ModelData as h, type LikeC4ModelData as i, type DeploymentNode as j, type DeployedInstance as k, type DeploymentElement as l, type DeploymentElementRef as m, isDeploymentNode as n, isDeployedInstance as o, type DeploymentRelationship as p, type DeploymentRelation as q, type SpecTypesFromDump as r, type LikeC4ModelDump as s, type ProjectDump as t, type AuxFromDump as u, DefaultThemeColor as v, DefaultElementShape as w, DefaultShapeSize as x, DefaultPaddingSize as y, DefaultTextSize as z };
831
+ export { type ParsedView as $, type AuxFromLikeC4ModelData as A, BBox as B, type ComputedLikeC4ModelData as C, type DeploymentElementStyle as D, DefaultTextSize as E, type ElementStyle as F, type GlobalPredicateId as G, ensureSizes as H, type Element as I, DefaultLineStyle as J, DefaultArrowType as K, type LayoutedLikeC4ModelData as L, type ModelGlobals as M, DefaultRelationshipColor as N, type AbstractRelationship as O, type Point as P, type Relationship as Q, RichText as R, type SpecificationDump as S, type ModelRelation as T, type ElementSpecification as U, type TagSpecification as V, isTagColorSpecified as W, type XYPoint as X, type RelationshipSpecification as Y, type Specification as Z, type LikeC4Project as _, type RichTextEmpty as a, type ElementViewPredicate as a$, type LayoutedView as a0, isDiagramView as a1, type ComputedView as a2, type ProcessedView as a3, type AnyView as a4, type ViewOnStage as a5, type ViewWithType as a6, type ViewRule as a7, type ViewRulePredicate as a8, isViewRulePredicate as a9, type ComputedNode as aA, type ComputedEdge as aB, type ComputedElementView as aC, type ComputedDeploymentView as aD, type ComputedDynamicView as aE, type DiagramNode as aF, type DiagramEdge as aG, type LayoutedElementView as aH, type LayoutedDeploymentView as aI, type LayoutedDynamicView as aJ, type DeploymentViewIncludePredicate as aK, type DeploymentViewExcludePredicate as aL, type DeploymentViewPredicate as aM, type DeploymentViewRuleStyle as aN, type DeploymentViewRule as aO, type ParsedDeploymentView as aP, type DynamicViewStep as aQ, type DynamicViewParallelSteps as aR, getParallelStepsPrefix as aS, type DynamicViewStepOrParallel as aT, type DynamicViewIncludeRule as aU, type DynamicViewRule as aV, type DynamicViewDisplayVariant as aW, type ParsedDynamicView as aX, isDynamicViewParallelSteps as aY, type ElementViewIncludePredicate as aZ, type ElementViewExcludePredicate as a_, isViewRuleStyle as aa, isComputedView as ab, isElementView as ac, isScopedElementView as ad, isExtendsElementView as ae, isDeploymentView as af, isDynamicView as ag, type AnyIncludePredicate as ah, type AnyExcludePredicate as ai, type AnyViewRuleStyle as aj, type ViewRuleGlobalStyle as ak, isViewRuleGlobalStyle as al, type ViewRuleGlobalPredicateRef as am, isViewRuleGlobalPredicateRef as an, type AutoLayoutDirection as ao, isAutoLayoutDirection as ap, type ViewRuleAutoLayout as aq, isViewRuleAutoLayout as ar, type ViewAutoLayout as as, type ViewManualLayout as at, type ViewType as au, type BaseViewProperties as av, type BaseParsedViewProperties as aw, type NodeNotation as ax, type ViewWithNotation as ay, type ViewWithHash as az, type RichTextOrEmpty as b, type ElementViewRuleGroup as b0, isViewRuleGroup as b1, type ElementViewRuleStyle as b2, type ElementViewRule as b3, type ParsedElementView as b4, RectBox as c, type GlobalPredicates as d, type GlobalDynamicPredicates as e, type GlobalStyleID as f, type GlobalStyles as g, type ParsedLikeC4ModelData as h, type LikeC4ModelData as i, type DeploymentNode as j, type DeployedInstance as k, type DeploymentElement as l, type DeploymentElementRef as m, isDeploymentNode as n, isDeployedInstance as o, type DeploymentRelationship as p, type DeploymentRelation as q, type SpecTypesFromDump as r, type LikeC4ModelDump as s, type ProjectDump as t, type AuxFromDump as u, DefaultThemeColor as v, DefaultElementShape as w, DefaultSize as x, DefaultShapeSize as y, DefaultPaddingSize as z };
@@ -4,7 +4,8 @@ import { unique, only, isTruthy, isEmpty } from 'remeda';
4
4
  import { o as hierarchyLevel, g as commonAncestor, n as nameFromFqn, d as isSameHierarchy } from './core.DgttqsJc.mjs';
5
5
  import { a as nonNullable, i as invariant } from './core.D4npX2q8.mjs';
6
6
  import { m as memoizeProp } from './core.CUw_2J9j.mjs';
7
- import { b as DefaultShapeSize, R as RichText, D as DefaultThemeColor, e as DefaultLineStyle, a as DefaultElementShape } from './core.BqVo8LrH.mjs';
7
+ import { c as DefaultShapeSize, R as RichText, D as DefaultThemeColor, g as DefaultLineStyle, a as DefaultElementShape } from './core.Ae86Y3tB.mjs';
8
+ import { a as preferSummary, p as preferDescription } from './core.BazD6cot.mjs';
8
9
 
9
10
  class AbstractDeploymentElementModel {
10
11
  get style() {
@@ -24,8 +25,19 @@ class AbstractDeploymentElementModel {
24
25
  get color() {
25
26
  return this.$node.style?.color ?? DefaultThemeColor;
26
27
  }
28
+ /**
29
+ * Short description of the element.
30
+ * Falls back to description if summary is not provided.
31
+ */
32
+ get summary() {
33
+ return RichText.memoize(this, "summary", preferSummary(this.$node));
34
+ }
35
+ /**
36
+ * Long description of the element.
37
+ * Falls back to summary if description is not provided.
38
+ */
27
39
  get description() {
28
- return RichText.memoize(this, this.$node.description);
40
+ return RichText.memoize(this, "description", preferDescription(this.$node));
29
41
  }
30
42
  get technology() {
31
43
  return this.$node.technology ?? null;
@@ -315,8 +327,19 @@ class DeployedInstanceModel extends AbstractDeploymentElementModel {
315
327
  get kind() {
316
328
  return this.element.kind;
317
329
  }
330
+ get summary() {
331
+ return RichText.memoize(
332
+ this,
333
+ "summary",
334
+ preferSummary(this.$instance) ?? preferSummary(this.element.$element)
335
+ );
336
+ }
318
337
  get description() {
319
- return RichText.memoize(this, this.$instance.description ?? this.element.$element.description);
338
+ return RichText.memoize(
339
+ this,
340
+ "description",
341
+ preferDescription(this.$instance) ?? preferDescription(this.element.$element)
342
+ );
320
343
  }
321
344
  get technology() {
322
345
  return this.$instance.technology ?? this.element.technology ?? null;
@@ -381,6 +404,9 @@ class NestedElementOfDeployedInstanceModel {
381
404
  get title() {
382
405
  return this.element.title;
383
406
  }
407
+ get summary() {
408
+ return this.element.summary;
409
+ }
384
410
  get description() {
385
411
  return this.element.description;
386
412
  }
@@ -422,7 +448,7 @@ class DeploymentRelationModel {
422
448
  return this.$relationship.technology ?? null;
423
449
  }
424
450
  get description() {
425
- return RichText.memoize(this, this.$relationship.description);
451
+ return RichText.memoize(this, "description", this.$relationship.description);
426
452
  }
427
453
  get tags() {
428
454
  return this.$relationship.tags ?? [];
@@ -1,6 +1,10 @@
1
- import { isTruthy, isArray } from 'remeda';
1
+ import { omitBy, isTruthy, isArray } from 'remeda';
2
2
  import { e as isStepEdgeId } from './core.Be1n9a0i.mjs';
3
3
 
4
+ function omitUndefined(a) {
5
+ return omitBy(a, (v) => v === void 0);
6
+ }
7
+
4
8
  function isViewRulePredicate(rule) {
5
9
  return "include" in rule || "exclude" in rule;
6
10
  }
@@ -56,4 +60,4 @@ function isViewRuleGroup(rule) {
56
60
  return "title" in rule && "groupRules" in rule && Array.isArray(rule.groupRules);
57
61
  }
58
62
 
59
- export { isViewRuleStyle as a, isComputedView as b, isDiagramView as c, isElementView as d, isScopedElementView as e, isExtendsElementView as f, isDeploymentView as g, isDynamicView as h, isViewRulePredicate as i, isViewRuleGlobalStyle as j, isViewRuleGlobalPredicateRef as k, isAutoLayoutDirection as l, isViewRuleAutoLayout as m, getParallelStepsPrefix as n, isDynamicViewParallelSteps as o, isViewRuleGroup as p };
63
+ export { isViewRuleStyle as a, isComputedView as b, isDiagramView as c, isElementView as d, isScopedElementView as e, isExtendsElementView as f, isDeploymentView as g, isDynamicView as h, isViewRulePredicate as i, isViewRuleGlobalStyle as j, isViewRuleGlobalPredicateRef as k, isAutoLayoutDirection as l, isViewRuleAutoLayout as m, getParallelStepsPrefix as n, omitUndefined as o, isDynamicViewParallelSteps as p, isViewRuleGroup as q };
@@ -1,4 +1,4 @@
1
- import { IsAny, UnionToIntersection, Simplify } from 'type-fest';
1
+ import { IsAny, UnionToIntersection, Simplify, KeysOfUnion } from 'type-fest';
2
2
 
3
3
  type NonEmptyArray<T> = [T, ...T[]];
4
4
  type NonEmptyReadonlyArray<T> = readonly [T, ...T[]];
@@ -46,7 +46,7 @@ type ExclusiveUnion<Expressions, All = AllNever<Expressions>> = Expressions exte
46
46
  * recursion. None of these have protections because this is an internal type!
47
47
  */
48
48
  type NTuple<T, N extends number, Result extends Array<unknown> = []> = Result['length'] extends N ? Result : NTuple<T, N, [...Result, T]>;
49
- type IteratorLike<T> = IteratorObject<T, BuiltinIteratorReturn>;
49
+ type IteratorLike<T> = IteratorObject<T, BuiltinIteratorReturn, unknown>;
50
50
  type Predicate<T> = (x: T) => boolean;
51
51
  interface Link {
52
52
  title?: string;
@@ -57,5 +57,14 @@ interface Link {
57
57
  * Coalesce `V` to a string if it is `any`
58
58
  */
59
59
  type Coalesce<V extends string, OrIfAny = string> = IsAny<V> extends true ? OrIfAny : V;
60
+ type ExactObject<T, InputType = unknown> = {
61
+ [KeyType in keyof T]: undefined extends T[KeyType] ? T[KeyType] | undefined : T[KeyType];
62
+ } & Record<Exclude<keyof InputType, KeysOfUnion<T>>, never>;
63
+ /**
64
+ * Allows only exact properties of `U` to be present in `T` and omits undefined values
65
+ *
66
+ * See {@link Exact} for more details (this version is non-deep)
67
+ */
68
+ declare function omitUndefined<Expected, T extends ExactObject<Expected, T>>(a: T): Expected;
60
69
 
61
- export type { Coalesce as C, ExclusiveUnion as E, IterableContainer as I, KeysOf as K, Link as L, NonEmptyArray as N, Predicate as P, ReorderedArray as R, NonEmptyReadonlyArray as a, NTuple as b, IteratorLike as c };
70
+ export { type Coalesce as C, type ExclusiveUnion as E, type IterableContainer as I, type KeysOf as K, type Link as L, type NonEmptyArray as N, type Predicate as P, type ReorderedArray as R, type NonEmptyReadonlyArray as a, type NTuple as b, type IteratorLike as c, omitUndefined as o };
@@ -1,4 +1,4 @@
1
- import { I as IterableContainer, R as ReorderedArray, N as NonEmptyArray } from './core.1_FtXl46.mjs';
1
+ import { I as IterableContainer, R as ReorderedArray, N as NonEmptyArray } from './core.DgesAwC8.mjs';
2
2
  import { F as Fqn } from './core.DX-WYEPA.mjs';
3
3
 
4
4
  /**
@@ -1,7 +1,7 @@
1
- import { C as Connection, c as customInspectSymbol } from './core.Chtad_Hv.mjs';
2
- import { e as DeploymentElementModel, i as RelationshipsAccum, D as DeploymentNodeModel, R as RelationshipModel, b as DeploymentRelationModel } from './core.PFqKFee4.mjs';
3
- import { A as Any, C as EdgeId } from './core.B4scjmM6.mjs';
4
- import { c as IteratorLike } from './core.1_FtXl46.mjs';
1
+ import { C as Connection, c as customInspectSymbol } from './core.xSQO0XYD.mjs';
2
+ import { e as DeploymentElementModel, i as RelationshipsAccum, D as DeploymentNodeModel, R as RelationshipModel, b as DeploymentRelationModel } from './core.BXsxn-hf.mjs';
3
+ import { A as Any, K as EdgeId } from './core.BhpgpOep.mjs';
4
+ import { c as IteratorLike } from './core.DgesAwC8.mjs';
5
5
 
6
6
  /**
7
7
  * Connection is ephemeral entity, result of a resolving relationships between source and target.
@@ -1,5 +1,5 @@
1
- import { E as ElementModel, e as DeploymentElementModel } from './core.PFqKFee4.mjs';
2
- import { A as Any } from './core.B4scjmM6.mjs';
1
+ import { E as ElementModel, e as DeploymentElementModel } from './core.BXsxn-hf.mjs';
2
+ import { A as Any } from './core.BhpgpOep.mjs';
3
3
  import { F as Fqn } from './core.DX-WYEPA.mjs';
4
4
 
5
5
  interface Connection<Elem = ElementModel<Any> | DeploymentElementModel<Any>, Id = string> {
@@ -1,6 +1,6 @@
1
- import { C as Connection, c as customInspectSymbol } from './core.Chtad_Hv.mjs';
2
- import { E as ElementModel, R as RelationshipModel } from './core.PFqKFee4.mjs';
3
- import { A as Any, U as Unknown, C as EdgeId } from './core.B4scjmM6.mjs';
1
+ import { C as Connection, c as customInspectSymbol } from './core.xSQO0XYD.mjs';
2
+ import { E as ElementModel, R as RelationshipModel } from './core.BXsxn-hf.mjs';
3
+ import { A as Any, U as Unknown, K as EdgeId } from './core.BhpgpOep.mjs';
4
4
 
5
5
  /**
6
6
  * Connection refers to any relationships between two elements,
@@ -1,4 +1,4 @@
1
1
  import 'type-fest';
2
- import '../shared/core.1_FtXl46.mjs';
3
- export { k as AllKinds, A as Any, A as AnyAux, G as AnySpec, a as Aux, s as DeploymentFqn, D as DeploymentId, o as DeploymentKind, C as EdgeId, j as ElementId, h as ElementKind, F as Fqn, r as LooseDeploymentId, a4 as LooseDeploymentKind, q as LooseElementId, a3 as LooseElementKind, a5 as LooseRelationKind, L as LooseTag, a2 as LooseTags, x as LooseViewId, m as Metadata, n as MetadataKey, N as Never, J as NodeId, a1 as OrString, H as PickByStage, P as ProjectId, p as RelationId, R as RelationKind, K as Spec, S as SpecAux, v as Stage, s as StrictDeploymentFqn, Y as StrictDeploymentKind, X as StrictElementKind, F as StrictFqn, O as StrictProjectId, Z as StrictRelationKind, Q as StrictTag, g as StrictViewId, T as Tag, l as Tags, U as Unknown, b as UnknownComputed, c as UnknownLayouted, d as UnknownParsed, V as ViewId, a0 as WithLinks, B as WithMetadata, z as WithOptionalLinks, W as WithOptionalTags, $ as WithTags, y as setProject, I as setStage, t as toComputed, u as toLayouted, w as toParsed } from '../shared/core.B4scjmM6.mjs';
2
+ import '../shared/core.DgesAwC8.mjs';
3
+ export { l as AllKinds, A as Any, A as AnyAux, O as AnySpec, a as Aux, u as DeploymentFqn, D as DeploymentId, q as DeploymentKind, K as EdgeId, k as ElementId, j as ElementKind, F as Fqn, t as LooseDeploymentId, a8 as LooseDeploymentKind, s as LooseElementId, a7 as LooseElementKind, a9 as LooseRelationKind, L as LooseTag, a6 as LooseTags, z as LooseViewId, n as Metadata, o as MetadataKey, N as Never, Y as NodeId, a5 as OrString, Q as PickByStage, P as ProjectId, r as RelationId, R as RelationKind, Z as Spec, S as SpecAux, x as Stage, u as StrictDeploymentFqn, a2 as StrictDeploymentKind, a1 as StrictElementKind, F as StrictFqn, $ as StrictProjectId, a3 as StrictRelationKind, a0 as StrictTag, h as StrictViewId, T as Tag, m as Tags, U as Unknown, b as UnknownComputed, c as UnknownLayouted, d as UnknownParsed, V as ViewId, G as WithDescriptionAndTech, a4 as WithLinks, H as WithMetadata, I as WithNotation, C as WithOptionalLinks, W as WithOptionalTags, J as WithTags, p as preferDescription, e as preferSummary, B as setProject, X as setStage, v as toComputed, w as toLayouted, y as toParsed } from '../shared/core.BhpgpOep.mjs';
4
4
  import '../shared/core.DX-WYEPA.mjs';
@@ -1,5 +1 @@
1
- const _aux = {
2
- __proto__: null
3
- };
4
-
5
- export { _aux as _ };
1
+ export { p as preferDescription, a as preferSummary } from '../shared/core.BazD6cot.mjs';
@@ -1,6 +1,6 @@
1
- import { A as Any, g as StrictViewId, h as ElementKind, T as Tag } from '../shared/core.B4scjmM6.mjs';
2
- import { E as ExclusiveUnion } from '../shared/core.1_FtXl46.mjs';
3
- import { W as WhereOperator, P as PredicateSelector } from '../shared/core.DmFVWyBc.mjs';
1
+ import { A as Any, h as StrictViewId, j as ElementKind, T as Tag } from '../shared/core.BhpgpOep.mjs';
2
+ import { E as ExclusiveUnion } from '../shared/core.DgesAwC8.mjs';
3
+ import { W as WhereOperator, P as PredicateSelector } from '../shared/core.CUG6vpyL.mjs';
4
4
  import { FqnRef } from './fqnRef.mjs';
5
5
  import { M as MarkdownOrString, I as Icon } from '../shared/core.DX-WYEPA.mjs';
6
6
  import { i as Color, R as RelationshipLineType, f as RelationshipArrowType, c as ElementShape, b as BorderStyle, a as ShapeSize } from '../shared/core.CzdwsPmY.mjs';
@@ -1,7 +1,7 @@
1
- import '../shared/core.B4scjmM6.mjs';
2
- import '../shared/core.1_FtXl46.mjs';
1
+ import '../shared/core.BhpgpOep.mjs';
2
+ import '../shared/core.DgesAwC8.mjs';
3
3
  import './fqnRef.mjs';
4
- export { E as Expression, F as FqnExpr, P as PredicateSelector, R as RelationExpr } from '../shared/core.DmFVWyBc.mjs';
4
+ export { E as Expression, F as FqnExpr, P as PredicateSelector, R as RelationExpr } from '../shared/core.CUG6vpyL.mjs';
5
5
  import '../shared/core.DX-WYEPA.mjs';
6
6
  import '../shared/core.CzdwsPmY.mjs';
7
7
  import 'type-fest';
@@ -1,5 +1,5 @@
1
- import { A as Any, U as Unknown$1, j as ElementId, P as ProjectId, F as Fqn, D as DeploymentId } from '../shared/core.B4scjmM6.mjs';
2
- import { E as ExclusiveUnion } from '../shared/core.1_FtXl46.mjs';
1
+ import { A as Any, U as Unknown$1, k as ElementId, P as ProjectId, F as Fqn, D as DeploymentId } from '../shared/core.BhpgpOep.mjs';
2
+ import { E as ExclusiveUnion } from '../shared/core.DgesAwC8.mjs';
3
3
  import 'type-fest';
4
4
  import '../shared/core.DX-WYEPA.mjs';
5
5
 
@@ -1,11 +1,11 @@
1
- import { N as NonEmptyArray } from '../shared/core.1_FtXl46.mjs';
2
- export { C as Coalesce, E as ExclusiveUnion, I as IterableContainer, c as IteratorLike, K as KeysOf, L as Link, b as NTuple, a as NonEmptyReadonlyArray, P as Predicate, R as ReorderedArray } from '../shared/core.1_FtXl46.mjs';
3
- export { A as Any, A as AnyAux, a as Aux, E as ExtractOnStage, M as ModelStage, S as SpecAux, U as Unknown, b as UnknownComputed, c as UnknownLayouted, d as UnknownParsed, e as _stage, f as _type, _ as aux, i as isOnStage } from '../shared/core.B4scjmM6.mjs';
4
- export { A as AndOperator, a as EqualOperator, E as Expression, j as Filterable, F as FqnExpr, K as KindEqual, N as NotOperator, k as OperatorPredicate, O as OrOperator, c as Participant, d as ParticipantOperator, P as PredicateSelector, R as RelationExpr, T as TagEqual, W as WhereOperator, g as isAndOperator, b as isKindEqual, f as isNotOperator, h as isOrOperator, e as isParticipantOperator, i as isTagEqual, w as whereOperatorAsPredicate } from '../shared/core.DmFVWyBc.mjs';
1
+ import { N as NonEmptyArray } from '../shared/core.DgesAwC8.mjs';
2
+ export { C as Coalesce, E as ExclusiveUnion, I as IterableContainer, c as IteratorLike, K as KeysOf, L as Link, b as NTuple, a as NonEmptyReadonlyArray, P as Predicate, R as ReorderedArray, o as omitUndefined } from '../shared/core.DgesAwC8.mjs';
3
+ export { A as Any, A as AnyAux, a as Aux, E as ExtractOnStage, M as ModelStage, S as SpecAux, U as Unknown, b as UnknownComputed, c as UnknownLayouted, d as UnknownParsed, f as _stage, g as _type, _ as aux, i as isOnStage, p as preferDescription, e as preferSummary } from '../shared/core.BhpgpOep.mjs';
4
+ export { A as AndOperator, a as EqualOperator, E as Expression, j as Filterable, F as FqnExpr, K as KindEqual, N as NotOperator, k as OperatorPredicate, O as OrOperator, c as Participant, d as ParticipantOperator, P as PredicateSelector, R as RelationExpr, T as TagEqual, W as WhereOperator, g as isAndOperator, b as isKindEqual, f as isNotOperator, h as isOrOperator, e as isParticipantOperator, i as isTagEqual, w as whereOperatorAsPredicate } from '../shared/core.CUG6vpyL.mjs';
5
5
  export { ModelExpression, ModelFqnExpr, ModelRelationExpr } from './expression-model.mjs';
6
6
  export { FqnRef } from './fqnRef.mjs';
7
- import { ar as ViewManualLayout, am as AutoLayoutDirection } from '../shared/core.B65NlqR_.mjs';
8
- export { K as AbstractRelationship, ag as AnyExcludePredicate, af as AnyIncludePredicate, a2 as AnyView, ah as AnyViewRuleStyle, u as AuxFromDump, A as AuxFromLikeC4ModelData, B as BBox, au as BaseParsedViewProperties, at as BaseViewProperties, aB as ComputedDeploymentView, aC as ComputedDynamicView, az as ComputedEdge, aA as ComputedElementView, C as ComputedLikeC4ModelData, ay as ComputedNode, a0 as ComputedView, I as DefaultArrowType, w as DefaultElementShape, H as DefaultLineStyle, y as DefaultPaddingSize, J as DefaultRelationshipColor, x as DefaultShapeSize, z as DefaultTextSize, v as DefaultThemeColor, k as DeployedInstance, l as DeploymentElement, m as DeploymentElementRef, D as DeploymentElementStyle, j as DeploymentNode, q as DeploymentRelation, p as DeploymentRelationship, aJ as DeploymentViewExcludePredicate, aI as DeploymentViewIncludePredicate, aK as DeploymentViewPredicate, aM as DeploymentViewRule, aL as DeploymentViewRuleStyle, aE as DiagramEdge, aD as DiagramNode, _ as DiagramView, aS as DynamicViewIncludeRule, aP as DynamicViewParallelSteps, aT as DynamicViewRule, aO as DynamicViewStep, aR as DynamicViewStepOrParallel, F as Element, Q as ElementSpecification, E as ElementStyle, aX as ElementViewExcludePredicate, aW as ElementViewIncludePredicate, aY as ElementViewPredicate, b0 as ElementViewRule, aZ as ElementViewRuleGroup, a$ as ElementViewRuleStyle, e as GlobalDynamicPredicates, G as GlobalPredicateId, d as GlobalPredicates, f as GlobalStyleID, g as GlobalStyles, aG as LayoutedDeploymentView, aH as LayoutedDynamicView, aF as LayoutedElementView, L as LayoutedLikeC4ModelData, _ as LayoutedView, i as LikeC4ModelData, s as LikeC4ModelDump, Y as LikeC4Project, Z as LikeC4View, M as ModelGlobals, O as ModelRelation, av as NodeNotation, aN as ParsedDeploymentView, aU as ParsedDynamicView, b1 as ParsedElementView, h as ParsedLikeC4ModelData, Z as ParsedView, P as Point, a1 as ProcessedView, t as ProjectDump, c as RectBox, N as Relationship, V as RelationshipSpecification, R as RichText, a as RichTextEmpty, b as RichTextOrEmpty, r as SpecTypesFromDump, W as Specification, S as SpecificationDump, T as TagSpecification, aq as ViewAutoLayout, a3 as ViewOnStage, a5 as ViewRule, ao as ViewRuleAutoLayout, ak as ViewRuleGlobalPredicateRef, ai as ViewRuleGlobalStyle, a6 as ViewRulePredicate, as as ViewType, ax as ViewWithHash, aw as ViewWithNotation, a4 as ViewWithType, X as XYPoint, aQ as getParallelStepsPrefix, an as isAutoLayoutDirection, a9 as isComputedView, o as isDeployedInstance, n as isDeploymentNode, ad as isDeploymentView, $ as isDiagramView, ae as isDynamicView, aV as isDynamicViewParallelSteps, aa as isElementView, ac as isExtendsElementView, $ as isLayoutedView, ab as isScopedElementView, U as isTagColorSpecified, ap as isViewRuleAutoLayout, al as isViewRuleGlobalPredicateRef, aj as isViewRuleGlobalStyle, a_ as isViewRuleGroup, a7 as isViewRulePredicate, a8 as isViewRuleStyle } from '../shared/core.B65NlqR_.mjs';
7
+ import { at as ViewManualLayout, ao as AutoLayoutDirection } from '../shared/core.D-ZGWDDt.mjs';
8
+ export { O as AbstractRelationship, ai as AnyExcludePredicate, ah as AnyIncludePredicate, a4 as AnyView, aj as AnyViewRuleStyle, u as AuxFromDump, A as AuxFromLikeC4ModelData, B as BBox, aw as BaseParsedViewProperties, av as BaseViewProperties, aD as ComputedDeploymentView, aE as ComputedDynamicView, aB as ComputedEdge, aC as ComputedElementView, C as ComputedLikeC4ModelData, aA as ComputedNode, a2 as ComputedView, K as DefaultArrowType, w as DefaultElementShape, J as DefaultLineStyle, z as DefaultPaddingSize, N as DefaultRelationshipColor, y as DefaultShapeSize, x as DefaultSize, E as DefaultTextSize, v as DefaultThemeColor, k as DeployedInstance, l as DeploymentElement, m as DeploymentElementRef, D as DeploymentElementStyle, j as DeploymentNode, q as DeploymentRelation, p as DeploymentRelationship, aL as DeploymentViewExcludePredicate, aK as DeploymentViewIncludePredicate, aM as DeploymentViewPredicate, aO as DeploymentViewRule, aN as DeploymentViewRuleStyle, aG as DiagramEdge, aF as DiagramNode, a0 as DiagramView, aW as DynamicViewDisplayVariant, aU as DynamicViewIncludeRule, aR as DynamicViewParallelSteps, aV as DynamicViewRule, aQ as DynamicViewStep, aT as DynamicViewStepOrParallel, I as Element, U as ElementSpecification, F as ElementStyle, a_ as ElementViewExcludePredicate, aZ as ElementViewIncludePredicate, a$ as ElementViewPredicate, b3 as ElementViewRule, b0 as ElementViewRuleGroup, b2 as ElementViewRuleStyle, e as GlobalDynamicPredicates, G as GlobalPredicateId, d as GlobalPredicates, f as GlobalStyleID, g as GlobalStyles, aI as LayoutedDeploymentView, aJ as LayoutedDynamicView, aH as LayoutedElementView, L as LayoutedLikeC4ModelData, a0 as LayoutedView, i as LikeC4ModelData, s as LikeC4ModelDump, _ as LikeC4Project, $ as LikeC4View, M as ModelGlobals, T as ModelRelation, ax as NodeNotation, aP as ParsedDeploymentView, aX as ParsedDynamicView, b4 as ParsedElementView, h as ParsedLikeC4ModelData, $ as ParsedView, P as Point, a3 as ProcessedView, t as ProjectDump, c as RectBox, Q as Relationship, Y as RelationshipSpecification, R as RichText, a as RichTextEmpty, b as RichTextOrEmpty, r as SpecTypesFromDump, Z as Specification, S as SpecificationDump, V as TagSpecification, as as ViewAutoLayout, a5 as ViewOnStage, a7 as ViewRule, aq as ViewRuleAutoLayout, am as ViewRuleGlobalPredicateRef, ak as ViewRuleGlobalStyle, a8 as ViewRulePredicate, au as ViewType, az as ViewWithHash, ay as ViewWithNotation, a6 as ViewWithType, X as XYPoint, H as ensureSizes, aS as getParallelStepsPrefix, ap as isAutoLayoutDirection, ab as isComputedView, o as isDeployedInstance, n as isDeploymentNode, af as isDeploymentView, a1 as isDiagramView, ag as isDynamicView, aY as isDynamicViewParallelSteps, ac as isElementView, ae as isExtendsElementView, a1 as isLayoutedView, ad as isScopedElementView, W as isTagColorSpecified, ar as isViewRuleAutoLayout, an as isViewRuleGlobalPredicateRef, al as isViewRuleGlobalStyle, b1 as isViewRuleGroup, a9 as isViewRulePredicate, aa as isViewRuleStyle } from '../shared/core.D-ZGWDDt.mjs';
9
9
  import { F as Fqn, D as DeploymentFqn } from '../shared/core.DX-WYEPA.mjs';
10
10
  export { A as AnyFqn, B as BuiltInIcon, b as DeploymentKind, j as EdgeId, E as ElementKind, e as GlobalFqn, G as GroupElementKind, I as Icon, a as IconUrl, M as MarkdownOrString, N as NodeId, P as ProjectId, d as RelationId, R as RelationKind, c as RelationshipKind, k as StepEdgeId, S as StepEdgeIdLiteral, m as StepEdgeKind, T as Tag, V as ViewId, o as extractStep, f as flattenMarkdownOrString, g as isGlobalFqn, i as isGroupElementKind, n as isStepEdgeId, s as scalar, h as splitGlobalFqn, l as stepEdgeId } from '../shared/core.DX-WYEPA.mjs';
11
11
  import { b as BorderStyle, c as ElementShape, h as ThemeColor } from '../shared/core.CzdwsPmY.mjs';
@@ -1,9 +1,9 @@
1
- export { _ as aux } from './_aux.mjs';
2
- export { _ as _stage, a as _type, h as isAndOperator, c as isDeployedInstance, b as isDeploymentNode, e as isKindEqual, g as isNotOperator, i as isOnStage, j as isOrOperator, f as isParticipantOperator, d as isTagEqual, w as whereOperatorAsPredicate } from '../shared/core.yHe79zEl.mjs';
1
+ export { n as getParallelStepsPrefix, l as isAutoLayoutDirection, b as isComputedView, g as isDeploymentView, c as isDiagramView, h as isDynamicView, p as isDynamicViewParallelSteps, d as isElementView, f as isExtendsElementView, c as isLayoutedView, e as isScopedElementView, m as isViewRuleAutoLayout, k as isViewRuleGlobalPredicateRef, j as isViewRuleGlobalStyle, q as isViewRuleGroup, i as isViewRulePredicate, a as isViewRuleStyle, o as omitUndefined } from '../shared/core.DJp8fgok.mjs';
2
+ export { _ as aux, p as preferDescription, a as preferSummary } from '../shared/core.BazD6cot.mjs';
3
+ export { _ as _stage, a as _type, h as isAndOperator, c as isDeployedInstance, b as isDeploymentNode, e as isKindEqual, g as isNotOperator, i as isOnStage, j as isOrOperator, f as isParticipantOperator, d as isTagEqual, w as whereOperatorAsPredicate } from '../shared/core.CXy1NLUG.mjs';
3
4
  export { Expression, FqnExpr, RelationExpr } from './expression.mjs';
4
5
  export { ModelExpression, ModelFqnExpr, ModelRelationExpr } from './expression-model.mjs';
5
6
  export { FqnRef } from './fqnRef.mjs';
6
- export { B as BBox, a as BorderStyles, E as ElementShapes, R as RectBox, T as ThemeColors, i as isTagColorSpecified, b as isThemeColor } from '../shared/core.CxGKeL-L.mjs';
7
- export { f as DefaultArrowType, a as DefaultElementShape, e as DefaultLineStyle, c as DefaultPaddingSize, g as DefaultRelationshipColor, b as DefaultShapeSize, d as DefaultTextSize, D as DefaultThemeColor, R as RichText } from '../shared/core.BqVo8LrH.mjs';
7
+ export { B as BBox, a as BorderStyles, E as ElementShapes, R as RectBox, T as ThemeColors, i as isTagColorSpecified, b as isThemeColor } from '../shared/core.6_Vp2iiN.mjs';
8
+ export { h as DefaultArrowType, a as DefaultElementShape, g as DefaultLineStyle, d as DefaultPaddingSize, i as DefaultRelationshipColor, c as DefaultShapeSize, b as DefaultSize, e as DefaultTextSize, D as DefaultThemeColor, R as RichText, f as ensureSizes } from '../shared/core.Ae86Y3tB.mjs';
8
9
  export { D as DeploymentFqn, E as EdgeId, F as Fqn, a as GlobalFqn, G as GroupElementKind, N as NodeId, P as ProjectId, R as RelationId, S as StepEdgeKind, V as ViewId, g as extractStep, f as flattenMarkdownOrString, b as isGlobalFqn, i as isGroupElementKind, e as isStepEdgeId, s as scalar, c as splitGlobalFqn, d as stepEdgeId } from '../shared/core.Be1n9a0i.mjs';
9
- export { n as getParallelStepsPrefix, l as isAutoLayoutDirection, b as isComputedView, g as isDeploymentView, c as isDiagramView, h as isDynamicView, o as isDynamicViewParallelSteps, d as isElementView, f as isExtendsElementView, c as isLayoutedView, e as isScopedElementView, m as isViewRuleAutoLayout, k as isViewRuleGlobalPredicateRef, j as isViewRuleGlobalStyle, p as isViewRuleGroup, i as isViewRulePredicate, a as isViewRuleStyle } from '../shared/core.T-eLZTW_.mjs';
@@ -1,6 +1,6 @@
1
1
  export { D as DefaultMap } from '../shared/core.CywrQs86.mjs';
2
- export { B as BiMap, D as DefaultWeakMap, L as LinkedList, M as MultiMap, Q as Queue, a as ancestorsFqn, k as commonAncestor, l as compareByFqnHierarchically, o as compareFqnHierarchically, q as hierarchyDistance, r as hierarchyLevel, i as invariant, b as isAncestor, c as isDescendantOf, d as isNonEmptyArray, e as isSameHierarchy, f as isString, m as memoizeProp, n as nameFromFqn, h as nonNullable, g as nonexhaustive, p as parentFqn, t as sortByFqnHierarchically, s as sortNaturalByFqn, j as sortParentsFirst } from '../shared/core.1ypAWObi.mjs';
3
- import { N as NonEmptyArray } from '../shared/core.1_FtXl46.mjs';
2
+ export { B as BiMap, D as DefaultWeakMap, L as LinkedList, M as MultiMap, Q as Queue, a as ancestorsFqn, k as commonAncestor, l as compareByFqnHierarchically, o as compareFqnHierarchically, q as hierarchyDistance, r as hierarchyLevel, i as invariant, b as isAncestor, c as isDescendantOf, d as isNonEmptyArray, e as isSameHierarchy, f as isString, m as memoizeProp, n as nameFromFqn, h as nonNullable, g as nonexhaustive, p as parentFqn, t as sortByFqnHierarchically, s as sortNaturalByFqn, j as sortParentsFirst } from '../shared/core.FUPplpae.mjs';
3
+ import { N as NonEmptyArray } from '../shared/core.DgesAwC8.mjs';
4
4
  export { ifilter, ifind, ifirst, iflat, ihead, imap, ireduce, isome, iunique, toArray, toSet } from './iterable/index.mjs';
5
5
  export { i as isIterable } from '../shared/core.DXhDWKFZ.mjs';
6
6
  import '../shared/core.DX-WYEPA.mjs';
@@ -1,5 +1,5 @@
1
1
  export { i as isIterable } from '../../shared/core.DXhDWKFZ.mjs';
2
- import { c as IteratorLike } from '../../shared/core.1_FtXl46.mjs';
2
+ import { c as IteratorLike } from '../../shared/core.DgesAwC8.mjs';
3
3
  import 'type-fest';
4
4
 
5
5
  /**
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@likec4/core",
3
- "version": "1.39.5",
3
+ "version": "1.41.0",
4
4
  "license": "MIT",
5
5
  "homepage": "https://likec4.dev",
6
6
  "author": "Denis Davydkov <denis@davydkov.com>",
@@ -126,7 +126,7 @@
126
126
  "typescript": "5.9.2",
127
127
  "unbuild": "3.5.0",
128
128
  "vitest": "3.2.4",
129
- "@likec4/tsconfig": "1.39.5"
129
+ "@likec4/tsconfig": "1.41.0"
130
130
  },
131
131
  "scripts": {
132
132
  "typecheck": "tsc -b --verbose",