@likec4/core 1.31.0 → 1.32.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 (186) hide show
  1. package/README.md +407 -5
  2. package/dist/builder/index.d.mts +221 -42
  3. package/dist/builder/index.mjs +118 -65
  4. package/dist/compute-view/index.d.mts +23 -7
  5. package/dist/compute-view/index.mjs +11 -6
  6. package/dist/compute-view/relationships-view/index.d.mts +9 -7
  7. package/dist/compute-view/relationships-view/index.mjs +3 -2
  8. package/dist/index.d.mts +10 -14
  9. package/dist/index.mjs +9 -6
  10. package/dist/model/index.d.mts +173 -19
  11. package/dist/model/index.mjs +6 -1
  12. package/dist/shared/core.BaYE_r29.d.mts +258 -0
  13. package/dist/shared/core.Bk7wEZFG.mjs +276 -0
  14. package/dist/shared/core.BrCnZFTn.mjs +32 -0
  15. package/dist/shared/core.BuO4ncfY.d.mts +146 -0
  16. package/dist/shared/{core.Bq753SYD.mjs → core.CBpKAlhj.mjs} +2012 -4422
  17. package/dist/shared/core.CCWXGc6G.d.mts +920 -0
  18. package/dist/shared/core.CUYDgv2-.mjs +214 -0
  19. package/dist/shared/{core.Cu-UdkSl.mjs → core.CpXlRyE5.mjs} +7 -494
  20. package/dist/shared/{core.C-YXI-43.mjs → core.Cy9smucx.mjs} +3 -1
  21. package/dist/shared/core.CywrQs86.d.mts +31 -0
  22. package/dist/shared/core.DoK86JEe.mjs +518 -0
  23. package/dist/shared/core.Dpq3P3YJ.d.mts +1265 -0
  24. package/dist/shared/{core.D2830qgg.d.mts → core.Pf5I9o0e.d.mts} +1 -1
  25. package/dist/shared/core.cbA9VZ02.mjs +2681 -0
  26. package/dist/shared/{core.CQXU9DF7.mjs → core.rmvsy0n3.mjs} +23 -32
  27. package/dist/types/aux.d.mts +3 -0
  28. package/dist/types/aux.mjs +1 -0
  29. package/dist/types/index.d.mts +7 -45
  30. package/dist/types/index.mjs +130 -3
  31. package/dist/utils/index.d.mts +221 -53
  32. package/dist/utils/index.mjs +14 -10
  33. package/package.json +15 -7
  34. package/src/builder/Builder.deploymentModel.ts +82 -18
  35. package/src/builder/Builder.element.ts +40 -20
  36. package/src/builder/Builder.model.ts +66 -17
  37. package/src/builder/Builder.ts +168 -76
  38. package/src/builder/Builder.view-common.ts +35 -17
  39. package/src/builder/Builder.view-deployment.ts +25 -25
  40. package/src/builder/Builder.view-element.ts +13 -12
  41. package/src/builder/Builder.views.ts +12 -7
  42. package/src/builder/__snapshots__/Builder-style1.spec.ts.snap +62 -34
  43. package/src/builder/__snapshots__/Builder-style2.compute-model.json5 +319 -0
  44. package/src/builder/__snapshots__/Builder-style2.spec.ts.snap +45 -24
  45. package/src/builder/_types.ts +34 -27
  46. package/src/compute-view/compute-view.ts +31 -34
  47. package/src/compute-view/deployment-view/__test__/TestHelper.ts +27 -14
  48. package/src/compute-view/deployment-view/__test__/fixture.ts +15 -13
  49. package/src/compute-view/deployment-view/_types.ts +10 -10
  50. package/src/compute-view/deployment-view/clean-connections.ts +5 -7
  51. package/src/compute-view/deployment-view/compute.ts +16 -13
  52. package/src/compute-view/deployment-view/memory/memory.ts +5 -6
  53. package/src/compute-view/deployment-view/predicates/deploymentRefs.ts +4 -5
  54. package/src/compute-view/deployment-view/predicates/relation-direct.ts +25 -50
  55. package/src/compute-view/deployment-view/predicates/relation-in-out.ts +5 -7
  56. package/src/compute-view/deployment-view/predicates/relation-incoming.ts +7 -11
  57. package/src/compute-view/deployment-view/predicates/relation-outgoing.ts +7 -10
  58. package/src/compute-view/deployment-view/predicates/utils.ts +37 -31
  59. package/src/compute-view/deployment-view/predicates/wildcard.ts +3 -2
  60. package/src/compute-view/deployment-view/stages/stage-final.ts +2 -2
  61. package/src/compute-view/deployment-view/stages/stage-include.ts +1 -1
  62. package/src/compute-view/deployment-view/utils.ts +79 -72
  63. package/src/compute-view/dynamic-view/__test__/fixture.ts +20 -11
  64. package/src/compute-view/dynamic-view/compute.ts +60 -53
  65. package/src/compute-view/element-view/__test__/TestHelper.ts +53 -29
  66. package/src/compute-view/element-view/__test__/__snapshots__/legacy.spec.ts.snap +26 -26
  67. package/src/compute-view/element-view/__test__/fixture.ts +134 -83
  68. package/src/compute-view/element-view/_types.ts +14 -19
  69. package/src/compute-view/element-view/clean-connections.ts +12 -8
  70. package/src/compute-view/element-view/compute.ts +61 -51
  71. package/src/compute-view/element-view/memory/NodeGroup.ts +8 -9
  72. package/src/compute-view/element-view/memory/memory.ts +22 -22
  73. package/src/compute-view/element-view/memory/stage-include.ts +5 -3
  74. package/src/compute-view/element-view/predicates/_utils.ts +18 -14
  75. package/src/compute-view/element-view/predicates/element-expand.ts +4 -5
  76. package/src/compute-view/element-view/predicates/element-kind-tag.ts +3 -4
  77. package/src/compute-view/element-view/predicates/element-ref.ts +3 -4
  78. package/src/compute-view/element-view/predicates/relation-direct.ts +16 -12
  79. package/src/compute-view/element-view/predicates/relation-in-out.ts +7 -8
  80. package/src/compute-view/element-view/predicates/relation-in.ts +19 -26
  81. package/src/compute-view/element-view/predicates/relation-out.ts +20 -21
  82. package/src/compute-view/element-view/predicates/wildcard.ts +3 -3
  83. package/src/compute-view/element-view/utils.ts +25 -23
  84. package/src/compute-view/index.ts +1 -1
  85. package/src/compute-view/memory/AbstractStageExclude.ts +3 -4
  86. package/src/compute-view/memory/AbstractStageInclude.ts +1 -1
  87. package/src/compute-view/memory/_types.ts +3 -2
  88. package/src/compute-view/relationships-view/_types.ts +3 -4
  89. package/src/compute-view/relationships-view/compute.ts +8 -11
  90. package/src/compute-view/relationships-view/layout.ts +6 -6
  91. package/src/compute-view/relationships-view/utils.ts +4 -4
  92. package/src/compute-view/utils/ancestorsOfNode.ts +7 -7
  93. package/src/compute-view/utils/applyCustomElementProperties.ts +16 -8
  94. package/src/compute-view/utils/applyCustomRelationProperties.ts +19 -9
  95. package/src/compute-view/utils/applyViewRuleStyles.ts +18 -10
  96. package/src/compute-view/utils/buildComputedNodes.ts +40 -40
  97. package/src/compute-view/utils/buildElementNotations.ts +14 -14
  98. package/src/compute-view/utils/elementExpressionToPredicate.ts +14 -15
  99. package/src/compute-view/utils/link-nodes-with-edges.ts +6 -4
  100. package/src/compute-view/utils/merge-props-from-relationships.ts +52 -20
  101. package/src/compute-view/utils/relationExpressionToPredicates.ts +19 -19
  102. package/src/compute-view/utils/resolve-extended-views.ts +8 -7
  103. package/src/compute-view/utils/resolve-global-rules.ts +31 -26
  104. package/src/compute-view/utils/topological-sort.ts +14 -14
  105. package/src/compute-view/utils/view-hash.ts +2 -2
  106. package/src/compute-view/utils/with-readable-edges.ts +9 -5
  107. package/src/index.ts +0 -32
  108. package/src/model/DeploymentElementModel.ts +171 -144
  109. package/src/model/DeploymentModel.ts +88 -65
  110. package/src/model/ElementModel.ts +85 -74
  111. package/src/model/LikeC4Model.ts +430 -241
  112. package/src/model/RelationModel.ts +63 -29
  113. package/src/model/__test__/fixture.ts +50 -36
  114. package/src/model/connection/Connection.ts +2 -2
  115. package/src/model/connection/deployment/DeploymentConnectionModel.ts +21 -24
  116. package/src/model/connection/deployment/find.ts +1 -1
  117. package/src/model/connection/model/ConnectionModel.ts +21 -20
  118. package/src/model/connection/model/find.ts +7 -7
  119. package/src/model/connection/ops.ts +6 -6
  120. package/src/model/guards.ts +66 -14
  121. package/src/model/index.ts +20 -7
  122. package/src/model/types.ts +41 -97
  123. package/src/model/view/EdgeModel.ts +47 -41
  124. package/src/model/view/LikeC4ViewModel.ts +130 -80
  125. package/src/model/view/NodeModel.ts +102 -96
  126. package/src/theme/element.ts +1 -1
  127. package/src/theme/index.ts +9 -9
  128. package/src/theme/relationships.ts +1 -1
  129. package/src/types/_common.ts +21 -15
  130. package/src/types/aux.ts +285 -0
  131. package/src/types/const.ts +34 -0
  132. package/src/types/expression-model.ts +292 -0
  133. package/src/types/expression.ts +311 -0
  134. package/src/types/fqnRef.ts +88 -0
  135. package/src/types/geometry.ts +131 -0
  136. package/src/types/global.ts +10 -8
  137. package/src/types/index.ts +39 -201
  138. package/src/types/model-data.ts +52 -84
  139. package/src/types/model-deployment.ts +87 -0
  140. package/src/types/model-dump.ts +72 -0
  141. package/src/types/model-logical.ts +111 -0
  142. package/src/types/model-spec.ts +81 -0
  143. package/src/types/operators.ts +51 -52
  144. package/src/types/scalar.ts +114 -0
  145. package/src/types/styles.ts +123 -0
  146. package/src/types/view-changes.ts +4 -5
  147. package/src/types/view-common.ts +157 -0
  148. package/src/types/view-computed.ts +113 -0
  149. package/src/types/view-layouted.ts +82 -0
  150. package/src/types/view-parsed.deployment.ts +40 -0
  151. package/src/types/view-parsed.dynamic.ts +78 -0
  152. package/src/types/view-parsed.element.ts +65 -0
  153. package/src/types/view.ts +122 -542
  154. package/src/utils/compare-natural.ts +43 -1
  155. package/src/utils/getOrCreate.ts +0 -34
  156. package/src/utils/index.ts +7 -12
  157. package/src/utils/iterable/filter.ts +1 -1
  158. package/src/utils/iterable/find.ts +3 -1
  159. package/src/utils/iterable/head.ts +22 -0
  160. package/src/utils/iterable/index.ts +1 -0
  161. package/src/utils/iterable/map.ts +1 -1
  162. package/src/utils/iterable/reduce.ts +1 -1
  163. package/src/utils/iterable/some.ts +1 -1
  164. package/src/utils/memoize-prop.ts +30 -0
  165. package/src/utils/object-hash.ts +1 -1
  166. package/src/utils/relations.ts +14 -11
  167. package/src/utils/string-hash.ts +1 -1
  168. package/dist/shared/core.CQDU11hR.d.mts +0 -753
  169. package/dist/shared/core.DJvmfnEi.d.mts +0 -1153
  170. package/dist/shared/core.DgfwjBtu.mjs +0 -495
  171. package/dist/shared/core.Dx7siloV.d.mts +0 -146
  172. package/dist/shared/core.SjLhMA7a.d.mts +0 -62
  173. package/src/builder/__snapshots__/Builder.spec.ts.snap +0 -374
  174. package/src/compute-view/element-view/predicates.ts +0 -520
  175. package/src/compute-view/utils/uniqueTags.ts +0 -21
  176. package/src/types/deployments.ts +0 -170
  177. package/src/types/element.ts +0 -109
  178. package/src/types/expression-v2-model.ts +0 -314
  179. package/src/types/expression-v2.ts +0 -392
  180. package/src/types/overview-graph.ts +0 -43
  181. package/src/types/relation.ts +0 -61
  182. package/src/types/scalars.ts +0 -39
  183. package/src/types/theme.ts +0 -82
  184. package/src/types/view-notation.ts +0 -9
  185. package/src/utils/graphlib.ts +0 -10
  186. /package/src/{errors/index.ts → utils/invariant.ts} +0 -0
@@ -1,8 +1,9 @@
1
- import { LastArrayElement, Split, Simplify, Writable, IfNever, TupleToUnion, Tagged, IsStringLiteral as IsStringLiteral$1, IsLiteral } from 'type-fest';
2
- import { L as LikeC4Model } from '../shared/core.CQDU11hR.mjs';
3
- import { D as DeploymentElement, i as DeploymentRelation, q as Element, ah as ModelRelation, a9 as Participant, M as ModelLayer, bs as ViewRuleStyle, aT as AutoLayoutDirection, y as ExpressionV2, L as LikeC4View, b0 as DeploymentView, bd as ElementView, t as ElementShape, ap as Color, p as BorderStyle, av as ShapeSize, aw as SpacingSize, ax as TextSize, aj as RelationshipArrowType, am as RelationshipLineType, r as ElementKindSpecification, al as RelationshipKindSpecification, g as DeploymentNodeKindSpecification, V as ParsedLikeC4ModelData } from '../shared/core.DJvmfnEi.mjs';
4
- import { F as Fqn, N as NonEmptyArray, K as KeysOf } from '../shared/core.SjLhMA7a.mjs';
5
- import { IsStringLiteral } from 'type-fest/source/is-literal';
1
+ import { LastArrayElement, Split, Simplify, IsLiteral, Writable, IfNever, TupleToUnion, Tagged } from 'type-fest';
2
+ import { L as LikeC4Model } from '../shared/core.CCWXGc6G.mjs';
3
+ import { D as DeploymentFqn, F as Fqn, d as NonEmptyArray, K as KeysOf } from '../shared/core.BuO4ncfY.mjs';
4
+ import { q as DeploymentElement, u as DeploymentRelationship, O as Element, Z as ModelRelation, a8 as Participant, M as ModelFqnExpr, a as ModelRelationExpr, aZ as AnyViewRuleStyle, b2 as AutoLayoutDirection, E as Expression, aF as ParsedView, bt as ParsedDeploymentView, bJ as ParsedElementView, k as ParsedLikeC4ModelData, ar as ElementShape, ay as ThemeColor, ap as BorderStyle, an as ShapeSize, al as SpacingSize, am as TextSize, aw as RelationshipArrowType, av as RelationshipLineType, _ as ElementSpecification$1, a1 as RelationshipSpecification, $ as TagSpecification } from '../shared/core.Dpq3P3YJ.mjs';
5
+ import { b as Aux, S as SpecAux, A as Any } from '../shared/core.BaYE_r29.mjs';
6
+ import '../shared/core.CywrQs86.mjs';
6
7
 
7
8
  type ToNested$1<T, Id extends string> = T extends TypesNested<infer P, any, any, any, any, any, any, any, infer F> ? TypesNested<`${P}.${Id}`, T['ElementKind'], T['Fqn'], T['ViewId'], T['RelationshipKind'], T['Tag'], T['MetadataKey'], T['DeploymentKind'], `${P}.${Id}` | F> : T extends AnyTypes ? TypesNested<Id, T['ElementKind'], T['Fqn'], T['ViewId'], T['RelationshipKind'], T['Tag'], T['MetadataKey'], T['DeploymentKind'], Id | T['DeploymentFqn']> : never;
8
9
  type FromNested$1<T extends AnyTypes, N> = N extends TypesNested<any, any, any, any, any, any, any, any, infer F> ? T extends TypesNested<infer P, any, any, any, any, any, any, any, any> ? TypesNested<P, T['ElementKind'], T['Fqn'], T['ViewId'], T['RelationshipKind'], T['Tag'], T['MetadataKey'], T['DeploymentKind'], F> : T extends AnyTypes ? Types<T['ElementKind'], T['Fqn'], T['ViewId'], T['RelationshipKind'], T['Tag'], T['MetadataKey'], T['DeploymentKind'], F> : never : never;
@@ -26,11 +27,11 @@ interface AddDeploymentNode<Id extends string> {
26
27
 
27
28
  interface DeploymentModelBuilder<T extends AnyTypes> extends Builder<T> {
28
29
  __addDeployment(node: DeploymentElement): Builder<T>;
29
- __addDeploymentRelation(rel: Omit<DeploymentRelation, 'id'>): Builder<T>;
30
+ __addDeploymentRelation(rel: Omit<DeploymentRelationship, 'id'>): Builder<T>;
30
31
  /**
31
32
  * Create a fully qualified name from an id (for nested models)
32
33
  */
33
- __fqn(id: string): Fqn;
34
+ __deploymentFqn(id: string): DeploymentFqn;
34
35
  }
35
36
  declare function deployment<A extends AnyTypes>(): (input: Builder<A>) => Builder<A>;
36
37
  declare function deployment<A extends AnyTypes, B extends AnyTypes>(op1: (input: DeploymentModelBuilder<A>) => DeploymentModelBuilder<B>): (input: Builder<A>) => Builder<B>;
@@ -50,14 +51,80 @@ declare function deployment<A extends AnyTypes, B extends AnyTypes, C extends An
50
51
  declare function deployment<A extends AnyTypes, B extends AnyTypes, C extends AnyTypes, D extends AnyTypes, E extends AnyTypes, F extends AnyTypes, G extends AnyTypes, H extends AnyTypes, I extends AnyTypes, J extends AnyTypes, K extends AnyTypes, L extends AnyTypes, M extends AnyTypes, N extends AnyTypes, O extends AnyTypes, P extends AnyTypes>(op1: (input: DeploymentModelBuilder<A>) => DeploymentModelBuilder<B>, op2: (input: DeploymentModelBuilder<B>) => DeploymentModelBuilder<C>, op3: (input: DeploymentModelBuilder<C>) => DeploymentModelBuilder<D>, op4: (input: DeploymentModelBuilder<D>) => DeploymentModelBuilder<E>, op5: (input: DeploymentModelBuilder<E>) => DeploymentModelBuilder<F>, op6: (input: DeploymentModelBuilder<F>) => DeploymentModelBuilder<G>, op7: (input: DeploymentModelBuilder<G>) => DeploymentModelBuilder<H>, op8: (input: DeploymentModelBuilder<H>) => DeploymentModelBuilder<I>, op9: (input: DeploymentModelBuilder<I>) => DeploymentModelBuilder<J>, op10: (input: DeploymentModelBuilder<J>) => DeploymentModelBuilder<K>, op11: (input: DeploymentModelBuilder<K>) => DeploymentModelBuilder<L>, op12: (input: DeploymentModelBuilder<L>) => DeploymentModelBuilder<M>, op13: (input: DeploymentModelBuilder<M>) => DeploymentModelBuilder<N>, op14: (input: DeploymentModelBuilder<N>) => DeploymentModelBuilder<O>, op15: (input: DeploymentModelBuilder<O>) => DeploymentModelBuilder<P>): (input: Builder<A>) => Builder<P>;
51
52
  type NameFromFqn<FQN extends string> = LastArrayElement<Split<FQN, '.'>>;
52
53
  type AddDeployedInstance<Props = unknown> = {
54
+ /**
55
+ * @example
56
+ * ```ts
57
+ * builder.deployment(({ node, instanceOf }, _) =>
58
+ * _(
59
+ * node('node1').with(
60
+ * // Only FQN of the element
61
+ * instanceOf('cloud.backend'),
62
+ * // ID, FQN of the element and additional props
63
+ * instanceOf('b2', 'cloud.backend', {
64
+ * tags: ['tag2'],
65
+ * }),
66
+ * ),
67
+ * )
68
+ * )
69
+ * ```
70
+ */
53
71
  <const T extends AnyTypes, Id extends string & T['Fqn']>(target: Id): (builder: DeploymentModelBuilder<T>) => DeploymentModelBuilder<Types.AddDeploymentFqn<T, NameFromFqn<Id>>>;
72
+ /**
73
+ * @example
74
+ * ```ts
75
+ * builder.deployment(({ node, instanceOf }, _) =>
76
+ * _(
77
+ * node('node1').with(
78
+ * // Only FQN of the element
79
+ * instanceOf('cloud.backend'),
80
+ * // ID, FQN of the element and additional props
81
+ * instanceOf('b2', 'cloud.backend', {
82
+ * tags: ['tag2'],
83
+ * }),
84
+ * ),
85
+ * )
86
+ * )
87
+ * ```
88
+ */
54
89
  <const Id extends string, T extends AnyTypes, Target extends string & T['Fqn']>(id: ValidId<Id>, target: Target, titleOrProps?: string | Props | undefined): (builder: DeploymentModelBuilder<T>) => DeploymentModelBuilder<Types.AddDeploymentFqn<T, Id>>;
55
90
  };
56
- type AddDeploymentNodeHelper<T = unknown> = <const Id extends string>(id: ValidId<Id>, titleOrProps?: string | T) => AddDeploymentNode<Id>;
91
+ type AddDeploymentNodeHelper<T = unknown> =
92
+ /**
93
+ * Adds deployment model
94
+ *
95
+ * @example
96
+ * builder.deployment(({ node }, _) =>
97
+ * _(
98
+ * node('node1').with(
99
+ * node('child1')
100
+ * ),
101
+ * )
102
+ * )
103
+ *
104
+ * @example
105
+ * builder.deployment((_,d) =>
106
+ * d(
107
+ * _.node('node1').with(
108
+ * _.node('child1')
109
+ * ),
110
+ * )
111
+ * )
112
+ */
113
+ <const Id extends string>(id: ValidId<Id>, titleOrProps?: string | T) => AddDeploymentNode<Id>;
57
114
  type AddDeploymentNodeHelpers<T extends AnyTypes> = T extends Types<any, any, any, any, any, any, infer Kinds extends string, any> ? {
58
115
  [Kind in Kinds]: AddDeploymentNodeHelper<T['NewDeploymentNodeProps']>;
59
116
  } : Invalid<'No Deployment Kinds'>;
60
- type AddDeploymentRelation<Props = unknown> = <T extends AnyTypes, Source extends string & T['DeploymentFqn'], Target extends string & T['DeploymentFqn']>(source: Source, target: Target, titleOrProps?: string | Props) => (builder: DeploymentModelBuilder<T>) => DeploymentModelBuilder<T>;
117
+ type AddDeploymentRelation<Props = unknown> =
118
+ /**
119
+ * @example
120
+ * ```ts
121
+ * rel('source.deployment', 'target.deployment', {
122
+ * title: 'title',
123
+ * tags: ['tag1'],
124
+ * })
125
+ * ```
126
+ */
127
+ <T extends AnyTypes, Source extends string & T['DeploymentFqn'], Target extends string & T['DeploymentFqn']>(source: Source, target: Target, titleOrProps?: string | Props) => (builder: DeploymentModelBuilder<T>) => DeploymentModelBuilder<T>;
61
128
  type DeloymentModelHelpers<T extends AnyTypes> = AddDeploymentNodeHelpers<T> & {
62
129
  instanceOf: AddDeployedInstance<T['NewDeploymentNodeProps']>;
63
130
  rel: AddDeploymentRelation<T['NewRelationshipProps']>;
@@ -73,8 +140,28 @@ type FromNested<T extends AnyTypes, N> = N extends TypesNested<any, any, infer F
73
140
  * Chainable builder to create element
74
141
  */
75
142
  interface AddElement<Id extends string> {
143
+ /**
144
+ * @example
145
+ * ```ts
146
+ * el('a')
147
+ * ```
148
+ */
76
149
  <T extends AnyTypes>(builder: ModelBuilder<T>): ModelBuilder<Types.AddFqn<T, Id>>;
150
+ /**
151
+ * @example
152
+ * ```ts
153
+ * el('a').with()
154
+ * ```
155
+ */
77
156
  with<T extends AnyTypes>(): (builder: ModelBuilder<T>) => ModelBuilder<Types.AddFqn<T, Id>>;
157
+ /**
158
+ * @example
159
+ * ```ts
160
+ * el('a').with(
161
+ * relTo('b')
162
+ * )
163
+ * ```
164
+ */
78
165
  with<T extends AnyTypes, A extends AnyTypes>(op1: (input: ModelBuilder<ToNested<T, Id>>) => ModelBuilder<A>): (builder: ModelBuilder<T>) => ModelBuilder<FromNested<T, A>>;
79
166
  with<T extends AnyTypes, A extends AnyTypes, B extends AnyTypes>(op1: (input: ModelBuilder<ToNested<T, Id>>) => ModelBuilder<A>, op2: (input: ModelBuilder<A>) => ModelBuilder<B>): (builder: ModelBuilder<T>) => ModelBuilder<FromNested<T, B>>;
80
167
  with<T extends AnyTypes, A extends AnyTypes, B extends AnyTypes, C extends AnyTypes>(op1: (input: ModelBuilder<ToNested<T, Id>>) => ModelBuilder<A>, op2: (input: ModelBuilder<A>) => ModelBuilder<B>, op3: (input: ModelBuilder<B>) => ModelBuilder<C>): (builder: ModelBuilder<T>) => ModelBuilder<FromNested<T, C>>;
@@ -114,9 +201,58 @@ declare function model<A extends AnyTypes, B extends AnyTypes, C extends AnyType
114
201
  declare function model<A extends AnyTypes, B extends AnyTypes, C extends AnyTypes, D extends AnyTypes, E extends AnyTypes, F extends AnyTypes, G extends AnyTypes, H extends AnyTypes, I extends AnyTypes, J extends AnyTypes, K extends AnyTypes, L extends AnyTypes, M extends AnyTypes, N extends AnyTypes, O extends AnyTypes, P extends AnyTypes>(op1: (input: ModelBuilder<A>) => ModelBuilder<B>, op2: (input: ModelBuilder<B>) => ModelBuilder<C>, op3: (input: ModelBuilder<C>) => ModelBuilder<D>, op4: (input: ModelBuilder<D>) => ModelBuilder<E>, op5: (input: ModelBuilder<E>) => ModelBuilder<F>, op6: (input: ModelBuilder<F>) => ModelBuilder<G>, op7: (input: ModelBuilder<G>) => ModelBuilder<H>, op8: (input: ModelBuilder<H>) => ModelBuilder<I>, op9: (input: ModelBuilder<I>) => ModelBuilder<J>, op10: (input: ModelBuilder<J>) => ModelBuilder<K>, op11: (input: ModelBuilder<K>) => ModelBuilder<L>, op12: (input: ModelBuilder<L>) => ModelBuilder<M>, op13: (input: ModelBuilder<M>) => ModelBuilder<N>, op14: (input: ModelBuilder<N>) => ModelBuilder<O>, op15: (input: ModelBuilder<O>) => ModelBuilder<P>): (input: Builder<A>) => Builder<P>;
115
202
  declare function model<A extends AnyTypes, B extends AnyTypes, C extends AnyTypes, D extends AnyTypes, E extends AnyTypes, F extends AnyTypes, G extends AnyTypes, H extends AnyTypes, I extends AnyTypes, J extends AnyTypes, K extends AnyTypes, L extends AnyTypes, M extends AnyTypes, N extends AnyTypes, O extends AnyTypes, P extends AnyTypes, Q extends AnyTypes>(op1: (input: ModelBuilder<A>) => ModelBuilder<B>, op2: (input: ModelBuilder<B>) => ModelBuilder<C>, op3: (input: ModelBuilder<C>) => ModelBuilder<D>, op4: (input: ModelBuilder<D>) => ModelBuilder<E>, op5: (input: ModelBuilder<E>) => ModelBuilder<F>, op6: (input: ModelBuilder<F>) => ModelBuilder<G>, op7: (input: ModelBuilder<G>) => ModelBuilder<H>, op8: (input: ModelBuilder<H>) => ModelBuilder<I>, op9: (input: ModelBuilder<I>) => ModelBuilder<J>, op10: (input: ModelBuilder<J>) => ModelBuilder<K>, op11: (input: ModelBuilder<K>) => ModelBuilder<L>, op12: (input: ModelBuilder<L>) => ModelBuilder<M>, op13: (input: ModelBuilder<M>) => ModelBuilder<N>, op14: (input: ModelBuilder<N>) => ModelBuilder<O>, op15: (input: ModelBuilder<O>) => ModelBuilder<P>, op16: (input: ModelBuilder<P>) => ModelBuilder<Q>): (input: Builder<A>) => Builder<Q>;
116
203
  declare function model<A extends AnyTypes, B extends AnyTypes, C extends AnyTypes, D extends AnyTypes, E extends AnyTypes, F extends AnyTypes, G extends AnyTypes, H extends AnyTypes, I extends AnyTypes, J extends AnyTypes, K extends AnyTypes, L extends AnyTypes, M extends AnyTypes, N extends AnyTypes, O extends AnyTypes, P extends AnyTypes, Q extends AnyTypes, R extends AnyTypes>(op1: (input: ModelBuilder<A>) => ModelBuilder<B>, op2: (input: ModelBuilder<B>) => ModelBuilder<C>, op3: (input: ModelBuilder<C>) => ModelBuilder<D>, op4: (input: ModelBuilder<D>) => ModelBuilder<E>, op5: (input: ModelBuilder<E>) => ModelBuilder<F>, op6: (input: ModelBuilder<F>) => ModelBuilder<G>, op7: (input: ModelBuilder<G>) => ModelBuilder<H>, op8: (input: ModelBuilder<H>) => ModelBuilder<I>, op9: (input: ModelBuilder<I>) => ModelBuilder<J>, op10: (input: ModelBuilder<J>) => ModelBuilder<K>, op11: (input: ModelBuilder<K>) => ModelBuilder<L>, op12: (input: ModelBuilder<L>) => ModelBuilder<M>, op13: (input: ModelBuilder<M>) => ModelBuilder<N>, op14: (input: ModelBuilder<N>) => ModelBuilder<O>, op15: (input: ModelBuilder<O>) => ModelBuilder<P>, op16: (input: ModelBuilder<P>) => ModelBuilder<Q>, op17: (input: ModelBuilder<Q>) => ModelBuilder<R>): (input: Builder<A>) => Builder<R>;
117
- type RelationshipHelper<Props = unknown> = <T extends AnyTypes, From extends string & T['Fqn'], To extends string & T['Fqn']>(from: From, to: To, titleOrProps?: string | Props) => (builder: ModelBuilder<T>) => ModelBuilder<T>;
118
- type NestedRelationshipHelper<Props = unknown> = <T extends AnyTypesNested, To extends string & T['Fqn']>(to: To, titleOrProps?: string | Props) => (builder: ModelBuilder<T>) => ModelBuilder<T>;
119
- type AddElementHelper<T = unknown> = <const Id extends string>(id: ValidId<Id>, titleOrProps?: string | T) => AddElement<Id>;
204
+ type RelationshipHelper<Props = unknown> =
205
+ /**
206
+ * @example
207
+ * ```ts
208
+ * rel('a', 'b')
209
+ * ```
210
+ *
211
+ * @example
212
+ * ```ts
213
+ * rel('a', 'b', {
214
+ * title: 'title',
215
+ * tags: ['tag1'],
216
+ * })
217
+ * ```
218
+ */
219
+ <T extends AnyTypes, From extends string & T['Fqn'], To extends string & T['Fqn']>(from: From, to: To, titleOrProps?: string | Props) => (builder: ModelBuilder<T>) => ModelBuilder<T>;
220
+ type NestedRelationshipHelper<Props = unknown> =
221
+ /**
222
+ * @example
223
+ * ```ts
224
+ * el('a').with(
225
+ * relTo('b')
226
+ * )
227
+ * ```
228
+ *
229
+ * @example
230
+ * ```ts
231
+ * el('a').with(
232
+ * relTo('b', {
233
+ * title: 'title',
234
+ * tags: ['tag1'],
235
+ * })
236
+ * )
237
+ * ```
238
+ */
239
+ <T extends AnyTypesNested, To extends string & T['Fqn']>(to: To, titleOrProps?: string | Props) => (builder: ModelBuilder<T>) => ModelBuilder<T>;
240
+ type AddElementHelper<T = unknown> =
241
+ /**
242
+ * @example
243
+ * ```ts
244
+ * el('some.id')
245
+ * ```
246
+ *
247
+ * @example
248
+ * ```ts
249
+ * el('some.id', {
250
+ * title: 'title',
251
+ * tags: ['tag1'],
252
+ * })
253
+ * ```
254
+ */
255
+ <const Id extends string>(id: ValidId<Id>, titleOrProps?: string | T) => AddElement<Id>;
120
256
  type AddElementHelpers<T extends AnyTypes> = T extends Types<infer Kinds extends string, any, any, any, any, any, any, any> ? {
121
257
  [Kind in Kinds]: AddElementHelper<T['NewElementProps']>;
122
258
  } : Invalid<'No Element Kinds'>;
@@ -137,7 +273,7 @@ interface LikeC4ViewBuilder<Types extends AnyTypes, Fqn extends string, TypedExp
137
273
  $expr(expr: Expr | TypedExpr): TypedExpr;
138
274
  include(...exprs: Expr[]): this;
139
275
  exclude(...exprs: Expr[]): this;
140
- style(rule: ViewRuleStyle): this;
276
+ style(rule: AnyViewRuleStyle<any>): this;
141
277
  autoLayout(layout: AutoLayoutDirection): this;
142
278
  }
143
279
  declare namespace ViewPredicate {
@@ -166,14 +302,29 @@ declare namespace ViewPredicate {
166
302
  };
167
303
  type Custom<Types extends AnyTypes> = {
168
304
  where?: ViewPredicate.WhereOperator<Types>;
169
- with?: Simplify<Omit<ModelLayer.FqnExpr.Custom['custom'] & ModelLayer.RelationExpr.Custom['customRelation'], 'expr' | 'relation' | 'navigateTo'> & {
305
+ with?: Simplify<Omit<ModelFqnExpr.Custom['custom'] & ModelRelationExpr.Custom['customRelation'], 'expr' | 'relation' | 'navigateTo'> & {
170
306
  navigateTo?: Types['ViewId'];
171
307
  }>;
172
308
  };
173
309
  }
174
310
  declare function $include<B extends LikeC4ViewBuilder<AnyTypes, any, any>>(...args: [B['Expr']] | [B['TypedExpr']] | [B['Expr'], ViewPredicate.Custom<B['Types']>]): (b: B) => B;
175
311
  declare function $exclude<B extends LikeC4ViewBuilder<AnyTypes, any, any>>(...args: [B['Expr']] | [B['TypedExpr']] | [B['Expr'], ViewPredicate.Custom<B['Types']>] | [B['TypedExpr'], ViewPredicate.Custom<B['Types']>]): (b: B) => B;
176
- declare function $style<B extends LikeC4ViewBuilder<AnyTypes, any, any>>(element: B['ElementExpr'] | B['TypedExpr'] | NonEmptyArray<B['ElementExpr']>, { notation, ...style }: ViewRuleStyle['style'] & {
312
+ /**
313
+ * @example
314
+ * builder.views(({ view, $style }, _) =>
315
+ * _(
316
+ * view('view1').with(
317
+ * $style('*', {
318
+ * color: 'red',
319
+ * }),
320
+ * $style(['bob', 'alice'], {
321
+ * color: 'blue',
322
+ * }),
323
+ * ),
324
+ * )
325
+ * )
326
+ */
327
+ declare function $style<B extends LikeC4ViewBuilder<AnyTypes, any, any>>(element: B['ElementExpr'] | B['TypedExpr'] | NonEmptyArray<B['ElementExpr']>, { notation, ...style }: AnyViewRuleStyle<any>['style'] & {
177
328
  notation?: string;
178
329
  }): (b: B) => B;
179
330
  declare function $autoLayout<B extends LikeC4ViewBuilder<AnyTypes, any, any>>(layout: AutoLayoutDirection): (b: B) => B;
@@ -199,9 +350,9 @@ interface AddDeploymentViewHelper {
199
350
  };
200
351
  <const Id extends string, T extends AnyTypes>(id: Id, propsOrTitle: T['NewViewProps'] | string, bulder: (b: DeploymentViewBuilder<T>) => DeploymentViewBuilder<T>): (builder: ViewsBuilder<T>) => ViewsBuilder<Types.AddView<T, Id>>;
201
352
  }
202
- declare function $deploymentExpr<T extends AnyTypes>(expr: ViewPredicate.DeploymentExpression<T> | ExpressionV2): Types.ToExpression<T>;
353
+ declare function $deploymentExpr<T extends AnyTypes>(expr: ViewPredicate.DeploymentExpression<T> | Expression): Types.ToExpression<T>;
203
354
 
204
- interface ElementViewBuilder<T extends AnyTypes> extends LikeC4ViewBuilder<T, T['Fqn'], Types.ToExpression<T>> {
355
+ interface ElementViewBuilder<T extends AnyTypes> extends LikeC4ViewBuilder<T, T['Fqn'], Expression<Types.ToAux<T>>> {
205
356
  }
206
357
  type ElementViewRulesBuilder<T extends AnyTypes> = (b: ElementViewBuilder<T>) => ElementViewBuilder<T>;
207
358
  interface AddViewRules<Id extends string> {
@@ -221,7 +372,7 @@ interface AddViewHelper {
221
372
  (builder: ViewsBuilder<T>): ViewsBuilder<Types.AddView<T, Id>>;
222
373
  };
223
374
  }
224
- type ValidFqn<T extends AnyTypes> = IsStringLiteral<T['Fqn']> extends true ? T['Fqn'] : Invalid<'Fqn must be from known'>;
375
+ type ValidFqn<T extends AnyTypes> = IsLiteral<T['Fqn']> extends true ? T['Fqn'] : Invalid<'Fqn must be a literal'>;
225
376
  interface AddViewOfHelper {
226
377
  <const Id extends string, T extends AnyTypes>(id: Id, of: ValidFqn<T>): (builder: ViewsBuilder<T>) => ViewsBuilder<Types.AddView<T, Id>>;
227
378
  <const Id extends string, T extends AnyTypes>(id: Id, of: ValidFqn<T>, propsOrTitle: T['NewViewProps'] | string | ElementViewRulesBuilder<T>): (builder: ViewsBuilder<T>) => ViewsBuilder<Types.AddView<T, Id>>;
@@ -238,10 +389,10 @@ interface TypedAddViewOfHelper<A extends AnyTypes> {
238
389
  (builder: ViewsBuilder<T>): ViewsBuilder<Types.AddView<T, Id>>;
239
390
  };
240
391
  }
241
- declare function $expr<Types extends AnyTypes>(expr: ViewPredicate.Expression<Types> | ExpressionV2): ExpressionV2;
392
+ declare function $expr<T extends AnyTypes>(expr: ViewPredicate.Expression<T> | Expression): Expression<Types.ToAux<T>>;
242
393
 
243
394
  interface ViewsBuilder<T extends AnyTypes> extends Builder<T> {
244
- __addView(view: LikeC4View): Builder<T>;
395
+ __addView(view: ParsedView): Builder<T>;
245
396
  }
246
397
  declare function views<A extends AnyTypes>(): (input: Builder<A>) => Builder<A>;
247
398
  declare function views<A extends AnyTypes, B extends AnyTypes>(op1: (input: ViewsBuilder<A>) => ViewsBuilder<B>): (input: Builder<A>) => Builder<B>;
@@ -274,8 +425,8 @@ type ViewsBuilderFunction<A extends AnyTypes, B extends AnyTypes> = (helpers: Si
274
425
  viewOf: TypedAddViewOfHelper<A>;
275
426
  _: ViewsHelpers['views'];
276
427
  }>, add: ViewsHelpers['views']) => ((builder: ViewsBuilder<A>) => ViewsBuilder<B>) | ((builder: Builder<A>) => Builder<B>);
277
- declare function mkViewBuilder(view: Writable<DeploymentView>): DeploymentViewBuilder<AnyTypes>;
278
- declare function mkViewBuilder(view: Writable<ElementView>): ElementViewBuilder<AnyTypes>;
428
+ declare function mkViewBuilder(view: Writable<ParsedDeploymentView<any>>): DeploymentViewBuilder<AnyTypes>;
429
+ declare function mkViewBuilder(view: Writable<ParsedElementView<any>>): ElementViewBuilder<AnyTypes>;
279
430
 
280
431
  interface BuilderMethods<T extends AnyTypes> {
281
432
  with<A extends AnyTypes>(): Builder<A>;
@@ -341,10 +492,11 @@ interface Builder<T extends AnyTypes> extends BuilderMethods<T> {
341
492
  * )
342
493
  * )
343
494
  *
495
+ * @example
344
496
  * builder.deployment((_,d) =>
345
497
  * d(
346
498
  * _.node('node1'),
347
- * _.node('node1.child1').with(
499
+ * _.node('node1.child1').with(
348
500
  * _.instanceOf('model.element')
349
501
  * )
350
502
  * )
@@ -355,11 +507,34 @@ interface Builder<T extends AnyTypes> extends BuilderMethods<T> {
355
507
  * Adds views
356
508
  *
357
509
  * @example
358
- * builder.views(({ view, $include }, _) =>
510
+ * builder.views(({ view, viewOf, deploymentView, $include, $style, $rules }, _) =>
359
511
  * _(
360
- * view('index').with(
512
+ * view('view1').with(
513
+ * $include('a -> b'),
514
+ * ),
515
+ * view('view2', {
516
+ * title: 'View 2',
517
+ * }).with(
518
+ * $include('*')
519
+ * ),
520
+ * view(
521
+ * 'view3',
522
+ * {
523
+ * title: 'View 3',
524
+ * },
525
+ * $rules(
526
+ * $include('*'),
527
+ * $style(['*', 'alice'], {
528
+ * color: 'red',
529
+ * }),
530
+ * ),
531
+ * ),
532
+ * viewOf('viewOfA', 'a').with(
533
+ * $include('*')
534
+ * ),
535
+ * deploymentView('deploymentView1').with(
361
536
  * $include('a -> b')
362
- * )
537
+ * ),
363
538
  * )
364
539
  * )
365
540
  */
@@ -369,11 +544,11 @@ interface Builder<T extends AnyTypes> extends BuilderMethods<T> {
369
544
  * Views are not computed or layouted
370
545
  * {@link toLikeC4Model} should be used to get model with computed views
371
546
  */
372
- build(): Types.ToParsedLikeC4Model<T>;
547
+ build(): ParsedLikeC4ModelData<Types.ToAux<T>>;
373
548
  /**
374
- * Returns LikeC4Model with computed views
549
+ * Returns Computed LikeC4Model
375
550
  */
376
- toLikeC4Model(): Types.ToLikeC4Model<T>;
551
+ toLikeC4Model(): LikeC4Model.Computed<Types.ToAux<T>>;
377
552
  }
378
553
  declare namespace Builder {
379
554
  type Any = Builder<AnyTypes>;
@@ -386,18 +561,23 @@ declare namespace Builder {
386
561
  function specification<const Spec extends BuilderSpecification>(spec: Spec): Builder<Types.FromSpecification<Spec>>;
387
562
  }
388
563
 
564
+ type ElementSpecification = Omit<ElementSpecification$1, 'tags'> & {
565
+ tags?: string[];
566
+ };
389
567
  type BuilderSpecification = {
390
568
  elements: {
391
- [kind: string]: Partial<ElementKindSpecification>;
569
+ [kind: string]: Partial<ElementSpecification>;
392
570
  };
393
571
  relationships?: {
394
- [kind: string]: Partial<RelationshipKindSpecification>;
572
+ [kind: string]: Partial<RelationshipSpecification>;
395
573
  };
396
574
  deployments?: {
397
- [kind: string]: Partial<DeploymentNodeKindSpecification>;
575
+ [kind: string]: Partial<ElementSpecification>;
576
+ };
577
+ tags?: {
578
+ [kind: string]: Partial<TagSpecification>;
398
579
  };
399
- tags?: [string, ...string[]];
400
- metadataKeys?: [string, ...string[]];
580
+ metadataKeys?: string[];
401
581
  };
402
582
  type Metadata<MetadataKey extends string> = IfNever<MetadataKey, never, Record<MetadataKey, string>>;
403
583
  type NewElementProps<Tag, Metadata> = {
@@ -408,7 +588,7 @@ type NewElementProps<Tag, Metadata> = {
408
588
  metadata?: Metadata;
409
589
  icon?: string;
410
590
  shape?: ElementShape;
411
- color?: Color;
591
+ color?: ThemeColor;
412
592
  links?: Array<string | {
413
593
  title?: string;
414
594
  url: string;
@@ -429,7 +609,7 @@ type NewDeploymentNodeProps<Tag, Metadata> = {
429
609
  metadata?: Metadata;
430
610
  icon?: string;
431
611
  shape?: ElementShape;
432
- color?: Color;
612
+ color?: ThemeColor;
433
613
  links?: NonEmptyArray<string | {
434
614
  title?: string;
435
615
  url: string;
@@ -461,7 +641,7 @@ type NewRelationProps<Kind, Tag, Metadata> = {
461
641
  head?: RelationshipArrowType;
462
642
  tail?: RelationshipArrowType;
463
643
  line?: RelationshipLineType;
464
- color?: Color;
644
+ color?: ThemeColor;
465
645
  links?: NonEmptyArray<string | {
466
646
  title?: string;
467
647
  url: string;
@@ -469,7 +649,7 @@ type NewRelationProps<Kind, Tag, Metadata> = {
469
649
  };
470
650
  type Invalid<Message extends string> = Tagged<Message, 'Error'>;
471
651
  type Warn<Id, Existing> = IsLiteral<Existing> extends true ? Id extends Existing ? Invalid<'Already exists'> : Id : Id;
472
- type ValidId<Id> = Id extends `${number}${string}` ? Invalid<'Id must not start with number'> : IsStringLiteral$1<Id> extends true ? Id : Invalid<'Id must be a literal'>;
652
+ type ValidId<Id> = Id extends `${number}${string}` ? Invalid<'Id must not start with number'> : IsLiteral<Id> extends true ? Id : Invalid<'Id must be a literal'>;
473
653
  /**
474
654
  * When building nested objects
475
655
  */
@@ -497,13 +677,12 @@ interface Types<ElementKind extends string, Fqn extends string, ViewId extends s
497
677
  NewDeploymentNodeProps: NewDeploymentNodeProps<Tag, Metadata<MetadataKey>>;
498
678
  }
499
679
  declare namespace Types {
500
- type FromSpecification<Spec> = Spec extends BuilderSpecification ? Types<KeysOf<Spec['elements']>, never, never, KeysOf<Spec['relationships']>, TupleToUnion<Spec['tags']>, TupleToUnion<Spec['metadataKeys']>, KeysOf<Spec['deployments']>, never> : never;
680
+ type FromSpecification<Spec> = Spec extends BuilderSpecification ? Types<KeysOf<Spec['elements']>, never, never, KeysOf<Spec['relationships']>, KeysOf<Spec['tags']>, TupleToUnion<Spec['metadataKeys']>, KeysOf<Spec['deployments']>, never> : never;
501
681
  type AddFqn<T, Id extends string> = T extends TypesNested<infer P, any, any, any, any, any, any, any, any> ? TypesNested<P, T['ElementKind'], `${P}.${Id}` | T['Fqn'], T['ViewId'], T['RelationshipKind'], T['Tag'], T['MetadataKey'], T['DeploymentKind'], T['DeploymentFqn']> : T extends AnyTypes ? Types<T['ElementKind'], Id | T['Fqn'], T['ViewId'], T['RelationshipKind'], T['Tag'], T['MetadataKey'], T['DeploymentKind'], T['DeploymentFqn']> : never;
502
682
  type AddDeploymentFqn<T, Id extends string> = T extends TypesNested<infer P, any, any, any, any, any, any, any, any> ? TypesNested<P, T['ElementKind'], T['Fqn'], T['ViewId'], T['RelationshipKind'], T['Tag'], T['MetadataKey'], T['DeploymentKind'], `${P}.${Id}` | T['DeploymentFqn']> : T extends AnyTypes ? Types<T['ElementKind'], T['Fqn'], T['ViewId'], T['RelationshipKind'], T['Tag'], T['MetadataKey'], T['DeploymentKind'], Id | T['DeploymentFqn']> : never;
503
683
  type AddView<T, Id extends string> = T extends TypesNested<infer P, any, any, any, any, any, any, any, any> ? TypesNested<P, T['ElementKind'], T['Fqn'], Id | T['ViewId'], T['RelationshipKind'], T['Tag'], T['MetadataKey'], T['DeploymentKind'], T['DeploymentFqn']> : T extends AnyTypes ? Types<T['ElementKind'], T['Fqn'], Id | T['ViewId'], T['RelationshipKind'], T['Tag'], T['MetadataKey'], T['DeploymentKind'], T['DeploymentFqn']> : never;
504
- type ToParsedLikeC4Model<T> = T extends AnyTypes ? ParsedLikeC4ModelData<T['ElementKind'], T['RelationshipKind'], T['Tag'], T['Fqn'], T['ViewId'], T['DeploymentFqn']> : never;
505
- type ToLikeC4Model<T extends AnyTypes> = LikeC4Model.Computed<T['Fqn'], T['DeploymentFqn'], T['ViewId']>;
506
- type ToExpression<T> = T extends AnyTypes ? ExpressionV2<T['DeploymentFqn'], T['Fqn']> : never;
684
+ type ToAux<T> = T extends AnyTypes ? Aux<'parsed', T['Fqn'], T['DeploymentFqn'], T['ViewId'], 'from-builder', SpecAux<T['ElementKind'], T['DeploymentKind'], T['RelationshipKind'], T['Tag'], T['MetadataKey']>> : Any;
685
+ type ToExpression<T> = T extends AnyTypes ? Expression<ToAux<T>> : never;
507
686
  type From<B> = B extends Builder<infer T> ? B['Types'] extends AnyTypes ? T : AnyTypes : never;
508
687
  type DeploymentRules<B> = DeploymentRulesBuilderOp<From<B>>;
509
688
  }