@likec4/core 1.42.1 → 1.44.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 (67) hide show
  1. package/dist/builder/index.d.mts +9 -9
  2. package/dist/builder/index.mjs +10 -8
  3. package/dist/compute-view/index.d.mts +9 -9
  4. package/dist/compute-view/index.mjs +7 -7
  5. package/dist/compute-view/relationships-view/index.d.mts +7 -7
  6. package/dist/compute-view/relationships-view/index.mjs +1 -1
  7. package/dist/index.d.mts +7 -7
  8. package/dist/index.mjs +7 -7
  9. package/dist/model/connection/deployment/index.d.mts +9 -9
  10. package/dist/model/connection/deployment/index.mjs +2 -2
  11. package/dist/model/connection/index.d.mts +10 -10
  12. package/dist/model/connection/index.mjs +3 -3
  13. package/dist/model/connection/model/index.d.mts +9 -9
  14. package/dist/model/connection/model/index.mjs +2 -2
  15. package/dist/model/index.d.mts +26 -12
  16. package/dist/model/index.mjs +4 -4
  17. package/dist/shared/{core.DSO_rTC2.mjs → core.23WeDKcI.mjs} +269 -632
  18. package/dist/shared/{core.D_vkffV4.d.mts → core.5ZQ-r3Oa.d.mts} +22 -2
  19. package/dist/shared/{core.DRhg-gVU.mjs → core.6VsRBhGY.mjs} +7 -101
  20. package/dist/shared/{core.yna0OdV5.d.mts → core.8mmHFn9g.d.mts} +2 -2
  21. package/dist/shared/core.B9BjmjuH.mjs +9 -0
  22. package/dist/shared/{core.fHR_8Tnq.d.mts → core.BMtVqKl7.d.mts} +89 -11
  23. package/dist/shared/{core.rCeaAqgW.mjs → core.BdPcbSkN.mjs} +1 -1
  24. package/dist/shared/{core.DIol3syK.d.mts → core.BnDbAOR2.d.mts} +2 -2
  25. package/dist/shared/{core.CQngdcuj.d.mts → core.BnOetIAR.d.mts} +2 -2
  26. package/dist/shared/core.BuQZczj6.mjs +38 -0
  27. package/dist/shared/core.Bv3cd-jC.mjs +102 -0
  28. package/dist/shared/{core.B7KhhkRY.mjs → core.C0Ye2OCr.mjs} +1 -1
  29. package/dist/shared/{core.Dgs6-nuz.d.mts → core.CDOKQTW6.d.mts} +56 -37
  30. package/dist/shared/{core.BIqHjQiH.mjs → core.CHwVhuc9.mjs} +36 -10
  31. package/dist/shared/{core.DdMJk7nx.d.mts → core.CKNmSm2W.d.mts} +85 -89
  32. package/dist/shared/{core.DFi2dOTl.mjs → core.CR3PmPzr.mjs} +85 -1
  33. package/dist/shared/{core.C2TiyjI6.mjs → core.CbsSAn1j.mjs} +19 -19
  34. package/dist/shared/{core.QJD_fcrc.mjs → core.CmPXpJ8l.mjs} +1 -14
  35. package/dist/shared/{core.D5fzJWbF.d.mts → core.DB0Ue5Wx.d.mts} +1 -1
  36. package/dist/shared/{core.DNbUPnve.mjs → core.DEieYfbG.mjs} +27 -25
  37. package/dist/shared/{core.C8YY6Uub.mjs → core.DFCHU59b.mjs} +4 -4
  38. package/dist/shared/{core.BYNkXQ8A.mjs → core.DH7TXqXf.mjs} +30 -1
  39. package/dist/shared/{core.DMMOWQqc.mjs → core.DIE3F6sw.mjs} +2 -2
  40. package/dist/shared/{core.s9uwOt60.d.mts → core.DTJYgLXI.d.mts} +3 -3
  41. package/dist/shared/{core.D0PjZzIS.d.mts → core.DjAM-S6a.d.mts} +179 -82
  42. package/dist/shared/{core.CNgZvKb8.mjs → core.DrUt0Lbi.mjs} +1 -1
  43. package/dist/shared/core.M9ayqQZa.mjs +1207 -0
  44. package/dist/shared/{core.DACpKp35.d.mts → core.WwMWeiFL.d.mts} +4 -4
  45. package/dist/shared/{core.lRvxPoao.mjs → core.bKIs4oDO.mjs} +3 -3
  46. package/dist/shared/{core.C8sl5Y8Z.mjs → core.h4TqqSC0.mjs} +1360 -124
  47. package/dist/shared/core.q10OP9oJ.mjs +5 -0
  48. package/dist/shared/core.uFk_o9X6.mjs +13 -0
  49. package/dist/styles/index.d.mts +18 -8
  50. package/dist/styles/index.mjs +63 -1
  51. package/dist/types/_aux.d.mts +2 -2
  52. package/dist/types/_aux.mjs +8 -1
  53. package/dist/types/expression-model.d.mts +3 -3
  54. package/dist/types/expression.d.mts +3 -3
  55. package/dist/types/fqnRef.d.mts +7 -8
  56. package/dist/types/index.d.mts +17 -13
  57. package/dist/types/index.mjs +28 -5
  58. package/dist/utils/graphology/index.mjs +1 -1
  59. package/dist/utils/index.d.mts +3 -2
  60. package/dist/utils/index.mjs +8 -6
  61. package/dist/utils/iterable/index.d.mts +1 -1
  62. package/dist/utils/iterable/index.mjs +2 -1
  63. package/package.json +21 -20
  64. package/dist/shared/core.01VTr9qu.mjs +0 -170
  65. package/dist/shared/core.1vX5a9AY.mjs +0 -86
  66. package/dist/shared/core.BazD6cot.mjs +0 -14
  67. package/dist/shared/core.BzTakU3I.mjs +0 -67
@@ -1,5 +1,5 @@
1
1
  import { IfNever, IsNever, IsLiteral } from 'type-fest';
2
- import { C as Coalesce, L as Link } from './core.D5fzJWbF.mjs';
2
+ import { C as Coalesce, L as Link } from './core.DB0Ue5Wx.mjs';
3
3
  import { D as DeploymentFqn$1, F as Fqn$1, d as RelationId$1, N as NodeId$1, j as EdgeId$1, P as ProjectId$1, V as ViewId$1, T as Tag$1, E as ElementKind$1, b as DeploymentKind$1, c as RelationshipKind, M as MarkdownOrString } from './core.DX-WYEPA.mjs';
4
4
 
5
5
  /**
@@ -31,6 +31,12 @@ type _stage = typeof _stage;
31
31
  */
32
32
  declare const _type = "_type";
33
33
  type _type = typeof _type;
34
+ /**
35
+ * Property name to store layout type information, used to identify the type of the layout*
36
+ * @internal
37
+ */
38
+ declare const _layout = "_layout";
39
+ type _layout = typeof _layout;
34
40
 
35
41
  /**
36
42
  * Specification types (kinds, tags, metadata keys)
@@ -59,7 +65,7 @@ type AnySpec = SpecAux<any, any, any, any, any>;
59
65
  * @typeParam Project - Project identifier type
60
66
  * @typeParam Spec - Specification types (kinds, tags, metadata keys)
61
67
  */
62
- interface Aux<Stage extends ModelStage, Element extends string, Deployment extends string, View extends string, Project extends string, Spec extends SpecAux<string, string, string, string, string>> {
68
+ interface Aux<Stage extends ModelStage, Element extends string, Deployment extends string, View extends string, Project extends string, Spec extends AnySpec> {
63
69
  Stage: Stage;
64
70
  ProjectId: Project;
65
71
  ElementId: Element;
@@ -71,14 +77,18 @@ interface Aux<Stage extends ModelStage, Element extends string, Deployment exten
71
77
  Tag: Spec['Tag'];
72
78
  MetadataKey: Spec['MetadataKey'];
73
79
  }
74
- type Any = Aux<any, any, any, any, any, SpecAux<any, any, any, any, any>>;
80
+ type AnyOnStage<Stage extends ModelStage> = Aux<Stage, any, any, any, any, any>;
81
+ type AnyParsed = AnyOnStage<'parsed'>;
82
+ type AnyComputed = AnyOnStage<'computed'>;
83
+ type AnyLayouted = AnyOnStage<'layouted'>;
84
+ type Any = Aux<any, any, any, any, any, any>;
75
85
 
76
86
  type Never = Aux<never, never, never, never, never, SpecAux<never, never, never, never, never>>;
77
87
  /**
78
88
  * Fallback when {@link Aux} can't be inferred.
79
89
  * By default assumes non parsed model
80
90
  */
81
- type Unknown = Aux<'layouted' | 'computed', string, string, string, string, SpecAux<string, string, string, string, string>>;
91
+ type Unknown = UnknownComputed | UnknownLayouted;
82
92
  type UnknownParsed = Aux<'parsed', string, string, string, string, SpecAux<string, string, string, string, string>>;
83
93
  type UnknownComputed = Aux<'computed', string, string, string, string, SpecAux<string, string, string, string, string>>;
84
94
  type UnknownLayouted = Aux<'layouted', string, string, string, string, SpecAux<string, string, string, string, string>>;
@@ -101,48 +111,48 @@ type toLayouted<A> = A extends Aux<any, infer E, infer D, infer V, infer P, infe
101
111
  /**
102
112
  * Project identifier from Aux
103
113
  */
104
- type ProjectId<A> = A extends infer T extends Any ? Coalesce<T['ProjectId']> : never;
114
+ type ProjectId<A> = A extends Aux<any, any, any, any, infer P, any> ? Coalesce<P> : never;
105
115
  type setProject<A, P extends string> = A extends Aux<infer S, infer E, infer D, infer V, any, infer Spec> ? Aux<S, E, D, V, P, Spec> : never;
106
116
  /**
107
117
  * Element FQN from Aux as branded type
108
118
  */
109
- type Fqn<A> = A extends infer T extends Any ? Fqn$1<ElementId<T>> : never;
119
+ type Fqn<A> = A extends Any ? Fqn$1<ElementId<A>> : never;
110
120
  /**
111
121
  * Element FQN from Aux as a literal union
112
122
  */
113
- type ElementId<A> = A extends infer T extends Any ? Coalesce<T['ElementId']> : never;
123
+ type ElementId<A> = A extends Any ? Coalesce<A['ElementId']> : never;
114
124
  /**
115
125
  * Deployment FQN from Aux as branded type
116
126
  */
117
- type DeploymentFqn<A> = A extends infer T extends Any ? DeploymentFqn$1<DeploymentId<T>> : never;
127
+ type DeploymentFqn<A> = A extends Any ? DeploymentFqn$1<DeploymentId<A>> : never;
118
128
  /**
119
129
  * Deployment FQN from Aux as a literal union
120
130
  * @alias {@link DeploymentFqn}
121
131
  */
122
- type DeploymentId<A> = A extends infer T extends Any ? Coalesce<T['DeploymentId']> : never;
132
+ type DeploymentId<A> = A extends Any ? Coalesce<A['DeploymentId']> : never;
123
133
  /**
124
134
  * View identifier from Aux as a literal union
125
135
  */
126
- type ViewId<A> = A extends infer T extends Any ? Coalesce<T['ViewId']> : never;
136
+ type ViewId<A> = A extends Any ? Coalesce<A['ViewId']> : never;
127
137
  type RelationId = RelationId$1;
128
138
  type NodeId = NodeId$1;
129
139
  type EdgeId = EdgeId$1;
130
140
  /**
131
141
  * ElementKind from Aux as a literal union
132
142
  */
133
- type ElementKind<A> = A extends infer T extends Any ? Coalesce<T['ElementKind']> : never;
143
+ type ElementKind<A> = A extends Any ? Coalesce<A['ElementKind']> : never;
134
144
  /**
135
145
  * DeploymentKind from Aux as a literal union
136
146
  */
137
- type DeploymentKind<A> = A extends infer T extends Any ? Coalesce<T['DeploymentKind']> : never;
147
+ type DeploymentKind<A> = A extends Any ? Coalesce<A['DeploymentKind']> : never;
138
148
  /**
139
149
  * RelationKind from Aux as a literal union
140
150
  */
141
- type RelationKind<A> = A extends infer T extends Any ? Coalesce<T['RelationKind']> : never;
151
+ type RelationKind<A> = A extends Any ? Coalesce<A['RelationKind']> : never;
142
152
  /**
143
153
  * Tags from Aux as a literal union
144
154
  */
145
- type Tag<A> = A extends infer T extends Any ? Coalesce<T['Tag']> : never;
155
+ type Tag<A> = A extends Any ? Coalesce<A['Tag']> : never;
146
156
  /**
147
157
  * Array of tags from Aux
148
158
  */
@@ -150,13 +160,13 @@ type Tags<A extends Any> = readonly Tag<A>[];
150
160
  /**
151
161
  * Metadata key from Aux
152
162
  */
153
- type MetadataKey<A> = A extends infer T extends Any ? Coalesce<T['MetadataKey']> : never;
163
+ type MetadataKey<A> = A extends Any ? Coalesce<A['MetadataKey']> : never;
154
164
  /**
155
165
  * Metadata object from Aux
156
166
  */
157
167
  type Metadata<A extends Any> = IsNever<A['MetadataKey']> extends true ? never : IsLiteral<A['MetadataKey']> extends true ? {
158
- [key in A['MetadataKey']]?: string;
159
- } : Record<string, string>;
168
+ [key in A['MetadataKey']]?: string | string[];
169
+ } : Record<string, string | string[]>;
160
170
  /**
161
171
  * All known kinds from Aux as a literal union.
162
172
  */
@@ -164,7 +174,7 @@ type AllKinds<A> = ElementKind<A> | DeploymentKind<A> | RelationKind<A>;
164
174
  /**
165
175
  * Specification from Aux
166
176
  */
167
- type Spec<A> = A extends Aux<any, any, any, any, any, infer S> ? S : never;
177
+ type Spec<A> = A extends Aux<any, any, any, any, any, SpecAux<infer E, infer D, infer R, infer T, infer M>> ? SpecAux<E, D, R, T, M> : never;
168
178
  type StrictProjectId<A> = A extends infer T extends Any ? ProjectId$1<ProjectId<T>> : never;
169
179
 
170
180
  type StrictViewId<A> = A extends infer T extends Any ? ViewId$1<ViewId<T>> : never;
@@ -207,19 +217,27 @@ type WithNotation = {
207
217
  * @see {@link LiteralUnion} from type-fest (https://github.com/sindresorhus/type-fest/blob/main/source/literal-union.d.ts)
208
218
  */
209
219
  type OrString = string & Record<never, never>;
210
- type LooseElementId<A extends Any> = Coalesce<A['ElementId']> | OrString;
211
- type LooseDeploymentId<A extends Any> = Coalesce<A['DeploymentId']> | OrString;
212
- type LooseViewId<A extends Any> = Coalesce<A['ViewId']> | OrString;
213
- type LooseTag<A extends Any> = Coalesce<A['Tag']> | OrString;
214
- type LooseTags<A extends Any> = readonly (Coalesce<A['Tag']> | OrString)[];
215
- type LooseElementKind<A extends Any> = Coalesce<A['ElementKind']> | OrString;
216
- type LooseDeploymentKind<A extends Any> = Coalesce<A['DeploymentKind']> | OrString;
217
- type LooseRelationKind<A extends Any> = Coalesce<A['RelationKind']> | OrString;
220
+ /**
221
+ * Allows any string value, but still auto-completes to the possible values in IDE
222
+ */
223
+ type LooseLiteral<V extends string> = Coalesce<V> | OrString;
224
+ type LooseElementId<A> = A extends Any ? LooseLiteral<A['ElementId']> : string;
225
+ type LooseDeploymentId<A> = A extends Any ? LooseLiteral<A['DeploymentId']> : string;
226
+ type LooseViewId<A> = A extends Any ? LooseLiteral<A['ViewId']> : string;
227
+ type LooseTag<A> = A extends Any ? LooseLiteral<A['Tag']> : string;
228
+ type LooseTags<A> = A extends Any ? readonly (LooseLiteral<A['Tag']>)[] : string[];
229
+ type LooseElementKind<A> = A extends Any ? LooseLiteral<A['ElementKind']> : string;
230
+ type LooseDeploymentKind<A> = A extends Any ? LooseLiteral<A['DeploymentKind']> : string;
231
+ type LooseRelationKind<A> = A extends Any ? LooseLiteral<A['RelationKind']> : string;
218
232
 
219
233
  type _aux_AllKinds<A> = AllKinds<A>;
220
234
  type _aux_Any = Any;
235
+ type _aux_AnyComputed = AnyComputed;
236
+ type _aux_AnyLayouted = AnyLayouted;
237
+ type _aux_AnyOnStage<Stage extends ModelStage> = AnyOnStage<Stage>;
238
+ type _aux_AnyParsed = AnyParsed;
221
239
  type _aux_AnySpec = AnySpec;
222
- type _aux_Aux<Stage extends ModelStage, Element extends string, Deployment extends string, View extends string, Project extends string, Spec extends SpecAux<string, string, string, string, string>> = Aux<Stage, Element, Deployment, View, Project, Spec>;
240
+ type _aux_Aux<Stage extends ModelStage, Element extends string, Deployment extends string, View extends string, Project extends string, Spec extends AnySpec> = Aux<Stage, Element, Deployment, View, Project, Spec>;
223
241
  type _aux_DeploymentFqn<A> = DeploymentFqn<A>;
224
242
  type _aux_DeploymentId<A> = DeploymentId<A>;
225
243
  type _aux_DeploymentKind<A> = DeploymentKind<A>;
@@ -227,14 +245,15 @@ type _aux_EdgeId = EdgeId;
227
245
  type _aux_ElementId<A> = ElementId<A>;
228
246
  type _aux_ElementKind<A> = ElementKind<A>;
229
247
  type _aux_Fqn<A> = Fqn<A>;
230
- type _aux_LooseDeploymentId<A extends Any> = LooseDeploymentId<A>;
231
- type _aux_LooseDeploymentKind<A extends Any> = LooseDeploymentKind<A>;
232
- type _aux_LooseElementId<A extends Any> = LooseElementId<A>;
233
- type _aux_LooseElementKind<A extends Any> = LooseElementKind<A>;
234
- type _aux_LooseRelationKind<A extends Any> = LooseRelationKind<A>;
235
- type _aux_LooseTag<A extends Any> = LooseTag<A>;
236
- type _aux_LooseTags<A extends Any> = LooseTags<A>;
237
- type _aux_LooseViewId<A extends Any> = LooseViewId<A>;
248
+ type _aux_LooseDeploymentId<A> = LooseDeploymentId<A>;
249
+ type _aux_LooseDeploymentKind<A> = LooseDeploymentKind<A>;
250
+ type _aux_LooseElementId<A> = LooseElementId<A>;
251
+ type _aux_LooseElementKind<A> = LooseElementKind<A>;
252
+ type _aux_LooseLiteral<V extends string> = LooseLiteral<V>;
253
+ type _aux_LooseRelationKind<A> = LooseRelationKind<A>;
254
+ type _aux_LooseTag<A> = LooseTag<A>;
255
+ type _aux_LooseTags<A> = LooseTags<A>;
256
+ type _aux_LooseViewId<A> = LooseViewId<A>;
238
257
  type _aux_Metadata<A extends Any> = Metadata<A>;
239
258
  type _aux_MetadataKey<A> = MetadataKey<A>;
240
259
  type _aux_Never = Never;
@@ -275,7 +294,7 @@ type _aux_toComputed<A> = toComputed<A>;
275
294
  type _aux_toLayouted<A> = toLayouted<A>;
276
295
  type _aux_toParsed<A> = toParsed<A>;
277
296
  declare namespace _aux {
278
- export { type _aux_AllKinds as AllKinds, type _aux_Any as Any, type Any as AnyAux, type _aux_AnySpec as AnySpec, type _aux_Aux as Aux, type _aux_DeploymentFqn as DeploymentFqn, type _aux_DeploymentId as DeploymentId, type _aux_DeploymentKind as DeploymentKind, type _aux_EdgeId as EdgeId, type _aux_ElementId as ElementId, type _aux_ElementKind as ElementKind, type _aux_Fqn as Fqn, type _aux_LooseDeploymentId as LooseDeploymentId, type _aux_LooseDeploymentKind as LooseDeploymentKind, type _aux_LooseElementId as LooseElementId, type _aux_LooseElementKind as LooseElementKind, type _aux_LooseRelationKind as LooseRelationKind, type _aux_LooseTag as LooseTag, type _aux_LooseTags as LooseTags, type _aux_LooseViewId as LooseViewId, type _aux_Metadata as Metadata, type _aux_MetadataKey as MetadataKey, type _aux_Never as Never, type _aux_NodeId as NodeId, type _aux_OrString as OrString, type _aux_PickByStage as PickByStage, type _aux_ProjectId as ProjectId, type _aux_RelationId as RelationId, type _aux_RelationKind as RelationKind, type _aux_Spec as Spec, type _aux_SpecAux as SpecAux, type _aux_Stage as Stage, type DeploymentFqn as StrictDeploymentFqn, type _aux_StrictDeploymentKind as StrictDeploymentKind, type _aux_StrictElementKind as StrictElementKind, type Fqn as StrictFqn, type _aux_StrictProjectId as StrictProjectId, type _aux_StrictRelationKind as StrictRelationKind, type _aux_StrictTag as StrictTag, type _aux_StrictViewId as StrictViewId, type _aux_Tag as Tag, type _aux_Tags as Tags, type _aux_Unknown as Unknown, type _aux_UnknownComputed as UnknownComputed, type _aux_UnknownLayouted as UnknownLayouted, type _aux_UnknownParsed as UnknownParsed, type _aux_ViewId as ViewId, type _aux_WithDescriptionAndTech as WithDescriptionAndTech, type _aux_WithLinks as WithLinks, type _aux_WithMetadata as WithMetadata, type _aux_WithNotation as WithNotation, type _aux_WithOptionalLinks as WithOptionalLinks, type _aux_WithOptionalTags as WithOptionalTags, type _aux_WithTags as WithTags, _aux_preferDescription as preferDescription, _aux_preferSummary as preferSummary, type _aux_setProject as setProject, type _aux_setStage as setStage, type _aux_toComputed as toComputed, type _aux_toLayouted as toLayouted, type _aux_toParsed as toParsed };
297
+ export { type _aux_AllKinds as AllKinds, type _aux_Any as Any, type Any as AnyAux, type _aux_AnyComputed as AnyComputed, type _aux_AnyLayouted as AnyLayouted, type _aux_AnyOnStage as AnyOnStage, type _aux_AnyParsed as AnyParsed, type _aux_AnySpec as AnySpec, type _aux_Aux as Aux, type _aux_DeploymentFqn as DeploymentFqn, type _aux_DeploymentId as DeploymentId, type _aux_DeploymentKind as DeploymentKind, type _aux_EdgeId as EdgeId, type _aux_ElementId as ElementId, type _aux_ElementKind as ElementKind, type _aux_Fqn as Fqn, type _aux_LooseDeploymentId as LooseDeploymentId, type _aux_LooseDeploymentKind as LooseDeploymentKind, type _aux_LooseElementId as LooseElementId, type _aux_LooseElementKind as LooseElementKind, type _aux_LooseLiteral as LooseLiteral, type _aux_LooseRelationKind as LooseRelationKind, type _aux_LooseTag as LooseTag, type _aux_LooseTags as LooseTags, type _aux_LooseViewId as LooseViewId, type _aux_Metadata as Metadata, type _aux_MetadataKey as MetadataKey, type _aux_Never as Never, type _aux_NodeId as NodeId, type _aux_OrString as OrString, type _aux_PickByStage as PickByStage, type _aux_ProjectId as ProjectId, type _aux_RelationId as RelationId, type _aux_RelationKind as RelationKind, type _aux_Spec as Spec, type _aux_SpecAux as SpecAux, type _aux_Stage as Stage, type DeploymentFqn as StrictDeploymentFqn, type _aux_StrictDeploymentKind as StrictDeploymentKind, type _aux_StrictElementKind as StrictElementKind, type Fqn as StrictFqn, type _aux_StrictProjectId as StrictProjectId, type _aux_StrictRelationKind as StrictRelationKind, type _aux_StrictTag as StrictTag, type _aux_StrictViewId as StrictViewId, type _aux_Tag as Tag, type _aux_Tags as Tags, type _aux_Unknown as Unknown, type _aux_UnknownComputed as UnknownComputed, type _aux_UnknownLayouted as UnknownLayouted, type _aux_UnknownParsed as UnknownParsed, type _aux_ViewId as ViewId, type _aux_WithDescriptionAndTech as WithDescriptionAndTech, type _aux_WithLinks as WithLinks, type _aux_WithMetadata as WithMetadata, type _aux_WithNotation as WithNotation, type _aux_WithOptionalLinks as WithOptionalLinks, type _aux_WithOptionalTags as WithOptionalTags, type _aux_WithTags as WithTags, _aux_preferDescription as preferDescription, _aux_preferSummary as preferSummary, type _aux_setProject as setProject, type _aux_setStage as setStage, type _aux_toComputed as toComputed, type _aux_toLayouted as toLayouted, type _aux_toParsed as toParsed };
279
298
  }
280
299
 
281
- export { type StrictProjectId as $, type Any as A, type LooseElementId as B, type LooseDeploymentId as C, type DeploymentId as D, type ExtractOnStage as E, type Fqn as F, type toComputed as G, type toLayouted as H, type Stage as I, type toParsed as J, type LooseViewId as K, type LooseTag as L, type ModelStage as M, type NodeId as N, type setProject as O, type ProjectId as P, type AnySpec as Q, type RelationKind as R, type SpecAux as S, type Tag as T, type Unknown as U, type ViewId as V, type WithDescriptionAndTech as W, type PickByStage as X, type setStage as Y, type Spec as Z, _aux as _, type Aux as a, type StrictTag as a0, type StrictElementKind as a1, type StrictDeploymentKind as a2, type StrictRelationKind as a3, type WithLinks as a4, type OrString as a5, type LooseTags as a6, type LooseElementKind as a7, type LooseDeploymentKind as a8, type LooseRelationKind as a9, type UnknownComputed as b, type UnknownLayouted as c, type UnknownParsed as d, preferSummary as e, _stage as f, _type as g, type StrictViewId as h, isOnStage as i, type ElementKind as j, type ElementId as k, type AllKinds as l, type Tags as m, type WithOptionalTags as n, type WithOptionalLinks as o, preferDescription as p, type WithMetadata as q, type WithNotation as r, type DeploymentFqn as s, type DeploymentKind as t, type MetadataKey as u, type EdgeId as v, type Never as w, type WithTags as x, type Metadata as y, type RelationId as z };
300
+ export { type AnyOnStage as $, type Any as A, type Never as B, type MetadataKey as C, type DeploymentId as D, type ExtractOnStage as E, type Fqn as F, type WithTags as G, type Metadata as H, type LooseTag as I, type RelationId as J, type LooseElementId as K, type LooseLiteral as L, type ModelStage as M, type NodeId as N, type LooseDeploymentId as O, type ProjectId as P, type Stage as Q, type RelationKind as R, type SpecAux as S, type Tag as T, type Unknown as U, type ViewId as V, type WithDescriptionAndTech as W, type LooseViewId as X, type setProject as Y, type AnySpec as Z, _aux as _, type AnyComputed as a, type PickByStage as a0, type setStage as a1, type toParsed as a2, type toLayouted as a3, type Spec as a4, type StrictProjectId as a5, type StrictTag as a6, type StrictElementKind as a7, type StrictDeploymentKind as a8, type StrictRelationKind as a9, type WithLinks as aa, type OrString as ab, type LooseTags as ac, type LooseElementKind as ad, type LooseDeploymentKind as ae, type LooseRelationKind as af, type AnyLayouted as b, type AnyParsed as c, type Aux as d, type UnknownComputed as e, type UnknownLayouted as f, type UnknownParsed as g, preferSummary as h, isOnStage as i, _stage as j, _type as k, _layout as l, type StrictViewId as m, type ElementKind as n, type ElementId as o, preferDescription as p, type AllKinds as q, type Tags as r, type WithOptionalTags as s, type toComputed as t, type WithOptionalLinks as u, type WithMetadata as v, type WithNotation as w, type DeploymentFqn as x, type DeploymentKind as y, type EdgeId as z };
@@ -1,23 +1,28 @@
1
- import { c as customInspectSymbol } from './core.B7KhhkRY.mjs';
2
- import { i as intersection, d as difference, u as union, a as stringHash, e as equals } from './core.C2TiyjI6.mjs';
3
- import { e as e$1 } from './core.BKlholso.mjs';
1
+ import { c as customInspectSymbol } from './core.C0Ye2OCr.mjs';
2
+ import { i as intersection, d as difference, u as union, a as stringHash, e as equals } from './core.CbsSAn1j.mjs';
4
3
  import { t as t$3 } from './core.BsSXS-_R.mjs';
4
+ import { e as e$1 } from './core.BKlholso.mjs';
5
5
  import { t as t$2, a as t$4 } from './core.OHD4KXm9.mjs';
6
- import { q as hierarchyLevel, k as commonAncestor, n as nameFromFqn, d as isSameHierarchy } from './core.DRhg-gVU.mjs';
6
+ import { m as hierarchyLevel, g as commonAncestor, n as nameFromFqn, d as isSameHierarchy } from './core.6VsRBhGY.mjs';
7
7
  import { a as nonNullable, i as invariant } from './core.D4npX2q8.mjs';
8
8
  import { m as memoizeProp } from './core.BR4zXDH-.mjs';
9
- import { e as exact, R as RichText } from './core.01VTr9qu.mjs';
10
- import { a as preferSummary, p as preferDescription } from './core.BazD6cot.mjs';
9
+ import { e as exact, R as RichText } from './core.M9ayqQZa.mjs';
10
+ import { preferSummary, preferDescription } from '../types/_aux.mjs';
11
+ import { i as ihead } from './core.uFk_o9X6.mjs';
11
12
 
12
13
  function t$1(t,n){let r=n.length-t.length;if(r===1){let[r,...i]=n;return t$2(r,{lazy:t,lazyArgs:i})}if(r===0){let r={lazy:t,lazyArgs:n};return Object.assign(t=>t$2(t,r),r)}throw Error(`Wrong number of arguments`)}
13
14
 
14
15
  function e(e){return e===``||e===void 0?true:Array.isArray(e)?e.length===0:Object.keys(e).length===0}
15
16
 
16
- function t(...t){return t$3(n$1,t)}const n$1=e=>e.length===1?e[0]:void 0;
17
+ function t(...t){return t$3(n$1,t)}function n$1(e,t){if(e===t||Object.is(e,t))return true;if(typeof e!=`object`||!e||typeof t!=`object`||!t)return false;if(e instanceof Map&&t instanceof Map)return r$1(e,t);if(e instanceof Set&&t instanceof Set)return i(e,t);let n=Object.keys(e);if(n.length!==Object.keys(t).length)return false;for(let r of n){if(!Object.hasOwn(t,r))return false;let{[r]:n}=e,{[r]:i}=t;if(n!==i||!Object.is(n,i))return false}return true}function r$1(e,t){if(e.size!==t.size)return false;for(let[n,r]of e){let e=t.get(n);if(r!==e||!Object.is(r,e))return false}return true}function i(e,t){if(e.size!==t.size)return false;for(let n of e)if(!t.has(n))return false;return true}
17
18
 
18
19
  function n(...e){return t$1(r,e)}function r(){let t=new Set;return n=>t.has(n)?t$4:(t.add(n),{done:false,hasNext:true,next:n})}
19
20
 
20
21
  class AbstractDeploymentElementModel {
22
+ /**
23
+ * Don't use in runtime, only for type inference
24
+ */
25
+ Aux;
21
26
  get style() {
22
27
  return memoizeProp(this, "style", () => exact({
23
28
  shape: this.$model.$styles.defaults.shape,
@@ -241,8 +246,11 @@ class DeploymentNodeModel extends AbstractDeploymentElementModel {
241
246
  if (children.size !== 1) {
242
247
  return null;
243
248
  }
244
- const child = t([...children]);
245
- return child?.isInstance() ? child : null;
249
+ const child = ihead(children);
250
+ if (!child) {
251
+ return null;
252
+ }
253
+ return child.isInstance() ? child : child.onlyOneInstance();
246
254
  }
247
255
  /**
248
256
  * Cached result of relationships from instances
@@ -455,8 +463,26 @@ class DeploymentRelationModel {
455
463
  get technology() {
456
464
  return this.$relationship.technology ?? null;
457
465
  }
466
+ /**
467
+ * Returns true if the relationship has a summary and a description
468
+ * (if one is missing - it falls back to another)
469
+ */
470
+ get hasSummary() {
471
+ return !!this.$relationship.summary && !!this.$relationship.description && !t(this.$relationship.summary, this.$relationship.description);
472
+ }
473
+ /**
474
+ * Short description of the relationship.
475
+ * Falls back to description if summary is not provided.
476
+ */
477
+ get summary() {
478
+ return RichText.memoize(this, "summary", preferSummary(this.$relationship));
479
+ }
480
+ /**
481
+ * Long description of the relationship.
482
+ * Falls back to summary if description is not provided.
483
+ */
458
484
  get description() {
459
- return RichText.memoize(this, "description", this.$relationship.description);
485
+ return RichText.memoize(this, "description", preferDescription(this.$relationship));
460
486
  }
461
487
  get tags() {
462
488
  return this.$relationship.tags ?? [];
@@ -1,10 +1,10 @@
1
- import { IsNever, IsAny } from 'type-fest';
2
- import { A as Any, U as Unknown, W as WithDescriptionAndTech, n as WithOptionalTags, o as WithOptionalLinks, q as WithMetadata, r as WithNotation, s as DeploymentFqn, t as DeploymentKind, F as Fqn, T as Tag, j as ElementKind, R as RelationKind, u as MetadataKey, f as _stage, g as _type, h as StrictViewId, N as NodeId, v as EdgeId, E as ExtractOnStage, M as ModelStage, P as ProjectId, k as ElementId, D as DeploymentId, d as UnknownParsed, V as ViewId, b as UnknownComputed, c as UnknownLayouted, S as SpecAux, a as Aux, w as Never } from './core.Dgs6-nuz.mjs';
3
- import { N as NonEmptyArray, L as Link, E as ExclusiveUnion, K as KeysOf } from './core.D5fzJWbF.mjs';
4
- import { E as ElementStyle, A as AbstractRelationship, y as BaseViewProperties, D as ViewWithHash, C as ViewWithNotation, v as ViewAutoLayout, H as ComputedNode, B as BBox, I as ComputedEdge, P as Point, X as XYPoint, a1 as DynamicViewDisplayVariant, z as BaseParsedViewProperties, l as AnyIncludePredicate, m as AnyExcludePredicate, n as AnyViewRuleStyle, t as ViewRuleAutoLayout, aa as ParsedElementView, a2 as ParsedDynamicView, J as ComputedElementView, K as ComputedDeploymentView, O as ComputedDynamicView, x as ViewType, k as LikeC4Project, f as Element, g as Relationship, M as ModelGlobals } from './core.fHR_8Tnq.mjs';
1
+ import { Simplify, IsAny } from 'type-fest';
2
+ import { A as Any, U as Unknown, W as WithDescriptionAndTech, s as WithOptionalTags, u as WithOptionalLinks, v as WithMetadata, w as WithNotation, x as DeploymentFqn, y as DeploymentKind, F as Fqn, k as _type, j as _stage, l as _layout, N as NodeId, z as EdgeId, m as StrictViewId, E as ExtractOnStage, M as ModelStage, P as ProjectId, o as ElementId, D as DeploymentId, c as AnyParsed, g as UnknownParsed, V as ViewId$1, a as AnyComputed, e as UnknownComputed, b as AnyLayouted, f as UnknownLayouted, S as SpecAux, d as Aux, B as Never } from './core.CDOKQTW6.mjs';
3
+ import { a as NonEmptyReadonlyArray, N as NonEmptyArray, E as ExclusiveUnion, K as KeysOf } from './core.DB0Ue5Wx.mjs';
4
+ import { E as ElementStyle, A as AbstractRelationship, D as ViewType, B as BBox, z as ViewAutoLayout, I as ViewWithNotation, F as BaseViewProperties, J as ViewWithHash, O as ComputedNode, Q as ComputedEdge, P as Point, X as XYPoint, a7 as DynamicViewDisplayVariant, H as BaseParsedViewProperties, p as AnyIncludePredicate, q as AnyExcludePredicate, r as AnyViewRuleStyle, x as ViewRuleAutoLayout, ag as ParsedElementView, a8 as ParsedDynamicView, U as ComputedElementView, W as ComputedDeploymentView, Y as ComputedDynamicView, o as LikeC4Project, S as Specification, f as Element, g as Relationship, M as ModelGlobals } from './core.BMtVqKl7.mjs';
5
5
  import { FqnRef } from '../types/fqnRef.mjs';
6
- import { D as ThemeColor, C as ColorLiteral, u as ElementShape, Q as Color, s as BorderStyle, q as ShapeSize, r as SpacingSize, p as TextSize, v as RelationshipLineType, y as RelationshipArrowType, I as CustomColorDefinitions, E as Expression, F as FqnExpr } from './core.CQngdcuj.mjs';
7
- import { T as Tag$1, M as MarkdownOrString, I as Icon, d as RelationId } from './core.DX-WYEPA.mjs';
6
+ import { F as Fqn$1, V as ViewId, M as MarkdownOrString, d as RelationId } from './core.DX-WYEPA.mjs';
7
+ import { E as Expression, F as FqnExpr } from './core.BnOetIAR.mjs';
8
8
 
9
9
  interface DeploymentNode<A extends Any = Unknown> extends WithDescriptionAndTech, WithOptionalTags<A>, WithOptionalLinks, WithMetadata<A>, WithNotation {
10
10
  element?: never;
@@ -44,63 +44,31 @@ interface DeploymentRelationship<A extends Any = Unknown> extends AbstractRelati
44
44
  */
45
45
  type DeploymentRelation<A extends Any = Unknown> = DeploymentRelationship<A>;
46
46
 
47
- /**
48
- * Element and deployment kind specification
49
- */
50
- interface ElementSpecification {
51
- tags?: Tag$1[];
52
- title?: string;
53
- summary?: MarkdownOrString;
54
- description?: MarkdownOrString;
55
- technology?: string;
56
- notation?: string;
57
- links?: NonEmptyArray<Link>;
58
- style: {
59
- shape?: ElementShape;
60
- icon?: Icon;
61
- color?: Color;
62
- border?: BorderStyle;
63
- opacity?: number;
64
- size?: ShapeSize;
65
- padding?: SpacingSize;
66
- textSize?: TextSize;
67
- multiple?: boolean;
68
- };
69
- }
70
- interface TagSpecification {
71
- color: ThemeColor | ColorLiteral;
72
- }
73
- /**
74
- * Checks if tag color is defined in the specification
75
- * Expects HEX, `rgb(...)` or `rgba(...)` color
76
- */
77
- declare function isTagColorSpecified(spec: string | TagSpecification): spec is {
78
- color: ColorLiteral;
47
+ type LayoutedViewDriftReason = 'not-exists' | 'type-changed' | 'nodes-mismatch' | 'edges-mismatch';
48
+ type DiagramNodeDriftReason = 'missing' | 'label-changed' | 'modelRef-changed' | 'parent-changed' | 'children-changed' | 'became-compound' | 'became-leaf' | 'shape-changed';
49
+ type DiagramEdgeDriftReason = 'missing' | 'label-changed' | 'direction-changed' | 'source-changed' | 'target-changed';
50
+ type ViewManualLayoutSnapshotPerType = {
51
+ readonly [_type]: 'element';
52
+ readonly viewOf?: Fqn$1;
53
+ readonly extends?: ViewId;
54
+ } | {
55
+ readonly [_type]: 'deployment';
56
+ } | {
57
+ readonly [_type]: 'dynamic';
58
+ readonly sequenceLayout: LayoutedDynamicView.Sequence.Layout;
79
59
  };
80
- interface RelationshipSpecification {
81
- technology?: string;
82
- notation?: string;
83
- color?: Color;
84
- line?: RelationshipLineType;
85
- head?: RelationshipArrowType;
86
- tail?: RelationshipArrowType;
87
- }
88
- type Specification<A> = A extends Any ? {
89
- tags: {
90
- [key in Tag<A>]: TagSpecification;
91
- };
92
- elements: {
93
- [key in ElementKind<A>]: Partial<ElementSpecification>;
94
- };
95
- deployments: {
96
- [key in DeploymentKind<A>]: Partial<ElementSpecification>;
97
- };
98
- relationships: {
99
- [key in RelationKind<A>]: Partial<RelationshipSpecification>;
100
- };
101
- metadataKeys?: IsNever<MetadataKey<A>> extends true ? never : MetadataKey<A>[];
102
- customColors?: CustomColorDefinitions;
103
- } : never;
60
+ type ViewManualLayoutSnapshot<Type extends ViewType = ViewType> = Simplify<ViewManualLayoutSnapshotPerType & {
61
+ readonly id: ViewId;
62
+ readonly title: string | null;
63
+ readonly description: MarkdownOrString | null;
64
+ readonly [_type]: Type;
65
+ readonly [_stage]: 'layouted';
66
+ readonly hash: string;
67
+ readonly nodes: DiagramNode[];
68
+ readonly edges: DiagramEdge[];
69
+ readonly bounds: BBox;
70
+ readonly autoLayout: ViewAutoLayout;
71
+ } & ViewWithNotation>;
104
72
 
105
73
  interface DiagramNode<A extends Any = Any> extends ComputedNode<A>, BBox {
106
74
  /**
@@ -118,6 +86,10 @@ interface DiagramNode<A extends Any = Any> extends ComputedNode<A>, BBox {
118
86
  * (Absolute coordinates)
119
87
  */
120
88
  labelBBox: BBox;
89
+ /**
90
+ * List of reasons causing node drift
91
+ */
92
+ drifts?: NonEmptyReadonlyArray<DiagramNodeDriftReason> | null;
121
93
  }
122
94
  interface DiagramEdge<A extends Any = Any> extends ComputedEdge<A> {
123
95
  /**
@@ -129,7 +101,7 @@ interface DiagramEdge<A extends Any = Any> extends ComputedEdge<A> {
129
101
  * Control points to adjust the edge
130
102
  * (Absolute coordinates)
131
103
  */
132
- controlPoints?: NonEmptyArray<XYPoint>;
104
+ controlPoints?: NonEmptyArray<XYPoint> | null;
133
105
  /**
134
106
  * Bounding box of label
135
107
  * (Absolute coordinates)
@@ -142,9 +114,23 @@ interface DiagramEdge<A extends Any = Any> extends ComputedEdge<A> {
142
114
  * @deprecated
143
115
  */
144
116
  dotpos?: string;
117
+ /**
118
+ * List of reasons causing edge drift
119
+ */
120
+ drifts?: NonEmptyReadonlyArray<DiagramEdgeDriftReason> | null;
145
121
  }
122
+ /**
123
+ * Type of the layout
124
+ * - `auto`: auto-layouted from the current sources
125
+ * - `manual`: read from the manually layouted snapshot
126
+ */
127
+ type LayoutType = 'auto' | 'manual';
146
128
  interface BaseLayoutedViewProperties<A extends Any> extends BaseViewProperties<A>, ViewWithHash, ViewWithNotation {
147
129
  readonly [_stage]: 'layouted';
130
+ /**
131
+ * If undefined, view does not have any manual layouts, and is auto-layouted
132
+ */
133
+ readonly [_layout]?: LayoutType;
148
134
  readonly autoLayout: ViewAutoLayout;
149
135
  readonly nodes: DiagramNode<A>[];
150
136
  readonly edges: DiagramEdge<A>[];
@@ -152,8 +138,14 @@ interface BaseLayoutedViewProperties<A extends Any> extends BaseViewProperties<A
152
138
  /**
153
139
  * If diagram has manual layout
154
140
  * But was changed and layout should be recalculated
141
+ * @deprecated manual layout v2 uses {@link drifts}
142
+ */
143
+ readonly hasLayoutDrift?: boolean;
144
+ /**
145
+ * List of reasons causing layout drift
146
+ * If undefined or null, there is no layout drift or view is auto-layouted
155
147
  */
156
- hasLayoutDrift?: boolean;
148
+ readonly drifts?: NonEmptyReadonlyArray<LayoutedViewDriftReason> | null;
157
149
  }
158
150
  interface LayoutedElementView<A extends Any = Any> extends BaseLayoutedViewProperties<A> {
159
151
  readonly [_type]: 'element';
@@ -166,8 +158,8 @@ interface LayoutedDeploymentView<A extends Any = Any> extends BaseLayoutedViewPr
166
158
  interface LayoutedDynamicView<A extends Any = Any> extends BaseLayoutedViewProperties<A> {
167
159
  readonly [_type]: 'dynamic';
168
160
  /**
169
- * How to display the dynamic view
170
- * - `diagram`: display as a regular likec4 view
161
+ * Default variant of this dynamic view
162
+ * - `diagram`: display as a regular likec4 view (default if not specified)
171
163
  * - `sequence`: display as a sequence diagram
172
164
  */
173
165
  readonly variant: DynamicViewDisplayVariant;
@@ -297,7 +289,16 @@ declare function isExtendsElementView<V extends AnyView<any>>(view: V): view is
297
289
  declare function isDeploymentView<V extends AnyView<any>>(view: V): view is ViewWithType<V, 'deployment'>;
298
290
  declare function isDynamicView<V extends AnyView<any>>(view: V): view is ViewWithType<V, 'dynamic'>;
299
291
 
292
+ /**
293
+ * Represents a LikeC4 model data, in different stages of processing
294
+ * - {@link ParsedLikeC4ModelData} - parsed from DSL or result from Builder
295
+ * - {@link ComputedLikeC4ModelData} - computed from parsed model
296
+ * - {@link LayoutedLikeC4ModelData} - layouted from computed model
297
+ *
298
+ * !IMPORTANT: This is a low-level type, use `LikeC4Model` instead.
299
+ */
300
300
  interface BaseLikeC4ModelData<A extends Any> {
301
+ [_stage]: A['Stage'];
301
302
  projectId: ProjectId<A>;
302
303
  project: LikeC4Project;
303
304
  specification: Specification<A>;
@@ -311,31 +312,25 @@ interface BaseLikeC4ModelData<A extends Any> {
311
312
  imports: Record<string, NonEmptyArray<Element<A>>>;
312
313
  }
313
314
  type AuxFromLikeC4ModelData<D> = D extends BaseLikeC4ModelData<infer A extends Any> ? IsAny<A> extends true ? never : A : never;
314
- /**
315
- * Represents a LikeC4 model with customizable type parameters,
316
- * parsed from DSL or result from Builder
317
- *
318
- * !IMPORTANT: This is a low-level type, use `LikeC4Model` instead.
319
- * !NOTE: Views are not computed yet.
320
- *
321
- * @typeParam ElementKinds - Types of elements in the model (defaults to string)
322
- * @typeParam RelationKinds - Types of relationships (defaults to string)
323
- * @typeParam Tags - Types of tags that can be applied (defaults to string)
324
- * @typeParam Fqns - Fully Qualified Names for elements (defaults to string)
325
- * @typeParam Views - Types of views in the model (defaults to string)
326
- * @typeParam DeploymentFqns - Fully Qualified Names for deployment nodes (defaults to string)
327
- */
328
- interface ParsedLikeC4ModelData<A extends Any = UnknownParsed> extends BaseLikeC4ModelData<A> {
315
+ interface ParsedLikeC4ModelData<A extends AnyParsed = UnknownParsed> extends BaseLikeC4ModelData<A> {
329
316
  [_stage]: 'parsed';
330
- views: Record<ViewId<A>, ParsedView<A>>;
317
+ views: Record<ViewId$1<A>, ParsedView<A>>;
331
318
  }
332
- interface ComputedLikeC4ModelData<A extends Any = UnknownComputed> extends BaseLikeC4ModelData<A> {
319
+ interface ComputedLikeC4ModelData<A extends AnyComputed = UnknownComputed> extends BaseLikeC4ModelData<A> {
333
320
  [_stage]: 'computed';
334
- views: Record<ViewId<A>, ComputedView<A>>;
321
+ views: Record<ViewId$1<A>, ComputedView<A>>;
322
+ /**
323
+ * If project contains saved manual layouts
324
+ */
325
+ manualLayouts?: Record<ViewId, ViewManualLayoutSnapshot>;
335
326
  }
336
- interface LayoutedLikeC4ModelData<A extends Any = UnknownLayouted> extends BaseLikeC4ModelData<A> {
327
+ interface LayoutedLikeC4ModelData<A extends AnyLayouted = UnknownLayouted> extends BaseLikeC4ModelData<A> {
337
328
  [_stage]: 'layouted';
338
- views: Record<ViewId<A>, LayoutedView<A>>;
329
+ views: Record<ViewId$1<A>, LayoutedView<A>>;
330
+ /**
331
+ * If this model contains saved manual layouts
332
+ */
333
+ manualLayouts?: Record<ViewId, ViewManualLayoutSnapshot>;
339
334
  }
340
335
  type LikeC4ModelData<A extends Any> = ParsedLikeC4ModelData<A> | ComputedLikeC4ModelData<A> | LayoutedLikeC4ModelData<A>;
341
336
 
@@ -423,14 +418,15 @@ type RichTextOrEmpty = RichTextNonEmpty | RichTextEmpty;
423
418
  * It is used to represent the content of a node or a link.
424
419
  */
425
420
  declare class RichText {
426
- private static _cache;
421
+ private static getOrCreateFromText;
422
+ private static getOrCreateFromMarkdown;
427
423
  /**
428
424
  * Creates and memoizes a RichText instance.
429
425
  * @see ElementModel.description
430
426
  * @example
431
427
  *
432
428
  * get description(): RichTextOrEmpty {
433
- * return RichText.memoize(this, this.$element.description)
429
+ * return RichText.memoize(this, 'description', this.$element.description)
434
430
  * }
435
431
  */
436
432
  static memoize(obj: object, tag: symbol | string, source: MarkdownOrString | null | undefined): RichTextOrEmpty;
@@ -473,4 +469,4 @@ declare class RichText {
473
469
  equals(other: unknown): boolean;
474
470
  }
475
471
 
476
- export { type DeploymentViewRule as $, type AuxFromLikeC4ModelData as A, isViewRulePredicate as B, type ComputedLikeC4ModelData as C, type DeploymentNode as D, type ElementSpecification as E, isViewRuleStyle as F, isComputedView as G, isElementView as H, isScopedElementView as I, isExtendsElementView as J, isDeploymentView as K, type LayoutedLikeC4ModelData as L, isDynamicView as M, type DiagramNode as N, type DiagramEdge as O, type ParsedLikeC4ModelData as P, type LayoutedElementView as Q, RichText as R, type SpecificationDump as S, type TagSpecification as T, type LayoutedDeploymentView as U, type ViewOnStage as V, LayoutedDynamicView as W, type DeploymentViewIncludePredicate as X, type DeploymentViewExcludePredicate as Y, type DeploymentViewPredicate as Z, type DeploymentViewRuleStyle as _, type RichTextEmpty as a, type ParsedDeploymentView as a0, type RichTextOrEmpty as b, type LikeC4ModelData as c, type DeployedInstance as d, type DeploymentElement as e, type DeploymentElementRef as f, isDeployedInstance as g, type DeploymentRelationship as h, isDeploymentNode as i, type DeploymentRelation as j, type SpecTypesFromDump as k, type LikeC4ModelDump as l, type ProjectDump as m, type AuxFromDump as n, isTagColorSpecified as o, type RelationshipSpecification as p, type Specification as q, type ParsedView as r, type LayoutedView as s, isDiagramView as t, type ComputedView as u, type ProcessedView as v, type AnyView as w, type ViewWithType as x, type ViewRule as y, type ViewRulePredicate as z };
472
+ export { type DeploymentViewRule as $, type AuxFromLikeC4ModelData as A, isElementView as B, type ComputedLikeC4ModelData as C, type DeploymentNode as D, isScopedElementView as E, isExtendsElementView as F, isDeploymentView as G, isDynamicView as H, type DiagramNode as I, type DiagramEdge as J, type LayoutType as K, type LayoutedLikeC4ModelData as L, type LayoutedElementView as M, type LayoutedDeploymentView as N, LayoutedDynamicView as O, type ParsedLikeC4ModelData as P, type LayoutedViewDriftReason as Q, RichText as R, type SpecificationDump as S, type DiagramNodeDriftReason as T, type DiagramEdgeDriftReason as U, type ViewOnStage as V, type ViewManualLayoutSnapshot as W, type DeploymentViewIncludePredicate as X, type DeploymentViewExcludePredicate as Y, type DeploymentViewPredicate as Z, type DeploymentViewRuleStyle as _, type RichTextEmpty as a, type ParsedDeploymentView as a0, type RichTextOrEmpty as b, type LikeC4ModelData as c, type DeployedInstance as d, type DeploymentElement as e, type DeploymentElementRef as f, isDeployedInstance as g, type DeploymentRelationship as h, isDeploymentNode as i, type DeploymentRelation as j, type SpecTypesFromDump as k, type LikeC4ModelDump as l, type ProjectDump as m, type AuxFromDump as n, type ParsedView as o, type LayoutedView as p, isDiagramView as q, type ComputedView as r, type ProcessedView as s, type AnyView as t, type ViewWithType as u, type ViewRule as v, type ViewRulePredicate as w, isViewRulePredicate as x, isViewRuleStyle as y, isComputedView as z };