@likec4/core 1.17.1 → 1.19.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 (184) hide show
  1. package/LICENSE +1 -1
  2. package/dist/builder/index.d.mts +502 -0
  3. package/dist/builder/index.d.ts +502 -0
  4. package/dist/builder/index.js +871 -0
  5. package/dist/compute-view/index.d.mts +22 -0
  6. package/dist/compute-view/index.d.ts +22 -0
  7. package/dist/compute-view/index.js +78 -0
  8. package/dist/index.d.mts +10 -919
  9. package/dist/index.d.ts +10 -919
  10. package/dist/{index.mjs → index.js} +7 -1688
  11. package/dist/model/index.d.mts +254 -0
  12. package/dist/model/index.d.ts +254 -0
  13. package/dist/model/index.js +1 -0
  14. package/dist/shared/chunk-RAAYCPUM.M-JWF7SS.js +21 -0
  15. package/dist/shared/core.BIfgabEw.d.ts +719 -0
  16. package/dist/shared/core.BZ9Msq7w.d.mts +719 -0
  17. package/dist/shared/{core.CoLQkcYL.d.cts → core.C05RDLhi.d.ts} +460 -362
  18. package/dist/shared/{core.CoLQkcYL.d.mts → core.CmYMqgha.d.mts} +460 -362
  19. package/dist/shared/core.D6-fWbM3.d.ts +127 -0
  20. package/dist/shared/core.D74xkKkG.d.mts +148 -0
  21. package/dist/shared/core.D74xkKkG.d.ts +148 -0
  22. package/dist/shared/core.sLaWHBjR.d.mts +127 -0
  23. package/dist/shared/index.-BdzdI2C.js +7443 -0
  24. package/dist/shared/object_hash.CE_oF3I3.js +1222 -0
  25. package/dist/shared/{core.BXTs-8n7.mjs → view.CyZrG8BJ.js} +108 -47
  26. package/dist/types/index.d.mts +71 -1
  27. package/dist/types/index.d.ts +71 -1
  28. package/dist/types/index.js +20 -0
  29. package/dist/utils/index.d.mts +404 -0
  30. package/dist/utils/index.d.ts +404 -0
  31. package/dist/utils/index.js +330 -0
  32. package/package.json +59 -47
  33. package/src/builder/Builder-style1.test-d.ts +190 -0
  34. package/src/builder/Builder-style2.test-d.ts +175 -0
  35. package/src/builder/Builder.deployment.ts +224 -0
  36. package/src/builder/Builder.deploymentModel.ts +385 -0
  37. package/src/builder/Builder.element.ts +19 -19
  38. package/src/builder/Builder.model.ts +67 -42
  39. package/src/builder/Builder.ts +533 -367
  40. package/src/builder/Builder.view-common.ts +234 -0
  41. package/src/builder/Builder.view-deployment.ts +135 -0
  42. package/src/builder/Builder.view-element.ts +189 -0
  43. package/src/builder/Builder.views.ts +109 -33
  44. package/src/builder/Builder.with.ts +475 -0
  45. package/src/builder/__snapshots__/Builder-style1.spec.ts.snap +374 -0
  46. package/src/builder/__snapshots__/Builder-style2.spec.ts.snap +183 -0
  47. package/src/builder/__snapshots__/Builder.spec.ts.snap +374 -0
  48. package/src/builder/_types.ts +113 -18
  49. package/src/builder/index.ts +10 -4
  50. package/src/colors/index.ts +2 -2
  51. package/src/compute-view/compute-view.ts +83 -0
  52. package/src/compute-view/deployment-view/__test__/TestHelper.ts +236 -0
  53. package/src/compute-view/deployment-view/__test__/fixture.ts +198 -0
  54. package/src/compute-view/deployment-view/_types.ts +37 -0
  55. package/src/compute-view/deployment-view/clean-connections.ts +238 -0
  56. package/src/compute-view/deployment-view/compute.ts +125 -0
  57. package/src/compute-view/deployment-view/memory/index.ts +9 -0
  58. package/src/compute-view/deployment-view/memory/memory.ts +97 -0
  59. package/src/compute-view/deployment-view/predicates/elements.ts +144 -0
  60. package/src/compute-view/deployment-view/predicates/relation-direct.ts +237 -0
  61. package/src/compute-view/deployment-view/predicates/relation-in-out.ts +61 -0
  62. package/src/compute-view/deployment-view/predicates/relation-incoming.ts +95 -0
  63. package/src/compute-view/deployment-view/predicates/relation-outgoing.ts +88 -0
  64. package/src/compute-view/deployment-view/predicates/wildcard.ts +29 -0
  65. package/src/compute-view/deployment-view/stages/stage-exclude.ts +5 -0
  66. package/src/compute-view/deployment-view/stages/stage-final.ts +245 -0
  67. package/src/compute-view/deployment-view/stages/stage-include.ts +95 -0
  68. package/src/compute-view/deployment-view/utils.ts +276 -0
  69. package/src/compute-view/dynamic-view/__test__/fixture.ts +58 -0
  70. package/src/compute-view/dynamic-view/compute.ts +324 -0
  71. package/src/compute-view/element-view/__test__/TestHelper.ts +258 -0
  72. package/src/compute-view/element-view/__test__/__snapshots__/legacy.spec.ts.snap +458 -0
  73. package/src/compute-view/element-view/__test__/fixture.ts +675 -0
  74. package/src/compute-view/element-view/_types.ts +48 -0
  75. package/src/compute-view/element-view/clean-connections.ts +113 -0
  76. package/src/compute-view/element-view/compute.ts +315 -0
  77. package/src/compute-view/element-view/memory/NodeGroup.ts +31 -0
  78. package/src/compute-view/element-view/memory/index.ts +10 -0
  79. package/src/compute-view/element-view/memory/memory.ts +177 -0
  80. package/src/compute-view/element-view/memory/stage-exclude.ts +59 -0
  81. package/src/compute-view/element-view/memory/stage-final.ts +129 -0
  82. package/src/compute-view/element-view/memory/stage-include.ts +128 -0
  83. package/src/compute-view/element-view/predicates/_utils.ts +86 -0
  84. package/src/compute-view/element-view/predicates/element-expand.ts +33 -0
  85. package/src/compute-view/element-view/predicates/element-kind-tag.ts +26 -0
  86. package/src/compute-view/element-view/predicates/element-ref.ts +37 -0
  87. package/src/compute-view/element-view/predicates/relation-direct.ts +309 -0
  88. package/src/compute-view/element-view/predicates/relation-in-out.ts +66 -0
  89. package/src/compute-view/element-view/predicates/relation-in.ts +118 -0
  90. package/src/compute-view/element-view/predicates/relation-out.ts +116 -0
  91. package/src/compute-view/element-view/predicates/wildcard.ts +88 -0
  92. package/src/compute-view/element-view/utils.ts +59 -0
  93. package/src/compute-view/index.ts +4 -0
  94. package/src/compute-view/memory/AbstractMemory.ts +45 -0
  95. package/src/compute-view/memory/AbstractStageExclude.ts +216 -0
  96. package/src/compute-view/memory/AbstractStageInclude.ts +200 -0
  97. package/src/compute-view/memory/_types.ts +147 -0
  98. package/src/compute-view/memory/index.ts +5 -0
  99. package/src/compute-view/memory/ops.ts +43 -0
  100. package/src/compute-view/utils/__snapshots__/sortNodes.spec.ts.snap +113 -0
  101. package/src/compute-view/utils/ancestorsOfNode.ts +19 -0
  102. package/src/compute-view/utils/applyCustomElementProperties.ts +66 -0
  103. package/src/compute-view/utils/applyCustomRelationProperties.ts +41 -0
  104. package/src/compute-view/utils/applyViewRuleStyles.ts +53 -0
  105. package/src/compute-view/utils/buildComputedNodes.ts +148 -0
  106. package/src/compute-view/utils/buildElementNotations.ts +63 -0
  107. package/src/compute-view/utils/elementExpressionToPredicate.ts +50 -0
  108. package/src/compute-view/utils/link-nodes-with-edges.ts +54 -0
  109. package/src/compute-view/utils/merge-props-from-relationships.ts +128 -0
  110. package/src/compute-view/utils/relationExpressionToPredicates.ts +55 -0
  111. package/src/compute-view/utils/resolve-extended-views.ts +69 -0
  112. package/src/compute-view/utils/resolve-global-rules.ts +83 -0
  113. package/src/compute-view/utils/topological-sort.ts +256 -0
  114. package/src/compute-view/utils/uniqueTags.test.ts +42 -0
  115. package/src/compute-view/utils/uniqueTags.ts +21 -0
  116. package/src/compute-view/utils/view-hash.ts +27 -0
  117. package/src/compute-view/utils/with-readable-edges.ts +36 -0
  118. package/src/index.ts +22 -12
  119. package/src/model/DeploymentElementModel.ts +599 -0
  120. package/src/model/DeploymentModel.ts +370 -0
  121. package/src/model/ElementModel.ts +221 -0
  122. package/src/model/LikeC4Model.test-d.ts +152 -0
  123. package/src/model/LikeC4Model.ts +336 -457
  124. package/src/model/RelationModel.ts +85 -0
  125. package/src/model/__test__/fixture.ts +149 -338
  126. package/src/model/connection/Connection.ts +72 -0
  127. package/src/model/connection/deployment/DeploymentConnectionModel.ts +178 -0
  128. package/src/model/connection/deployment/find.ts +120 -0
  129. package/src/model/connection/deployment/index.ts +8 -0
  130. package/src/model/connection/index.ts +22 -0
  131. package/src/model/connection/model/ConnectionModel.ts +157 -0
  132. package/src/model/connection/model/find.ts +117 -0
  133. package/src/model/connection/model/index.ts +8 -0
  134. package/src/model/connection/ops.ts +274 -0
  135. package/src/model/guards.ts +9 -0
  136. package/src/model/index.ts +46 -2
  137. package/src/model/types.ts +112 -15
  138. package/src/model/view/EdgeModel.ts +103 -0
  139. package/src/model/view/LikeC4ViewModel.ts +226 -0
  140. package/src/model/view/NodeModel.ts +229 -0
  141. package/src/types/_common.ts +55 -1
  142. package/src/types/deployments.ts +169 -0
  143. package/src/types/element.ts +9 -5
  144. package/src/types/expression-v2.ts +172 -0
  145. package/src/types/expression.ts +17 -11
  146. package/src/types/global.ts +3 -3
  147. package/src/types/index.ts +220 -12
  148. package/src/types/model.ts +75 -12
  149. package/src/types/operators.ts +1 -1
  150. package/src/types/overview-graph.ts +2 -2
  151. package/src/types/relation.ts +18 -14
  152. package/src/types/theme.ts +0 -1
  153. package/src/types/view-notation.ts +2 -2
  154. package/src/types/view.ts +117 -41
  155. package/src/utils/{commonHead.ts → common-head.ts} +2 -0
  156. package/src/utils/const.ts +1 -0
  157. package/src/utils/fqn.ts +203 -56
  158. package/src/utils/getOrCreate.ts +42 -0
  159. package/src/utils/graphlib.ts +10 -0
  160. package/src/utils/index.ts +74 -6
  161. package/src/utils/iterable/_types.ts +5 -0
  162. package/src/utils/iterable/filter.ts +55 -0
  163. package/src/utils/iterable/flat.ts +17 -0
  164. package/src/utils/iterable/index.ts +12 -0
  165. package/src/utils/iterable/map.ts +40 -0
  166. package/src/utils/iterable/reduce.ts +24 -0
  167. package/src/utils/iterable/some.ts +36 -0
  168. package/src/utils/iterable/to.ts +19 -0
  169. package/src/utils/iterable/unique.ts +29 -0
  170. package/src/utils/object-hash.ts +3 -0
  171. package/src/utils/relations.ts +3 -64
  172. package/src/utils/set.ts +78 -0
  173. package/src/utils/string-hash.ts +16 -0
  174. package/dist/index.cjs +0 -5452
  175. package/dist/index.d.cts +0 -1053
  176. package/dist/shared/core.CoLQkcYL.d.ts +0 -734
  177. package/dist/shared/core.DIYZvpVg.cjs +0 -353
  178. package/dist/types/index.cjs +0 -70
  179. package/dist/types/index.d.cts +0 -2
  180. package/dist/types/index.mjs +0 -1
  181. package/src/builder/Builder.test-d.ts +0 -69
  182. package/src/builder/Builder.view.ts +0 -358
  183. package/src/model/LikeC4DiagramModel.ts +0 -338
  184. package/src/model/LikeC4ViewModel.ts +0 -320
@@ -1,46 +1,58 @@
1
- import type { LikeC4View } from '../types'
1
+ import type { Simplify, Writable } from 'type-fest'
2
+ import type { DeploymentView, ElementView, LikeC4View } from '../types'
2
3
  import type { AnyTypes } from './_types'
3
4
  import type { Builder } from './Builder'
5
+ import type { $autoLayout, $exclude, $include, $rules, $style } from './Builder.view-common'
6
+ import { $deploymentExpr, type AddDeploymentViewHelper, type DeploymentViewBuilder } from './Builder.view-deployment'
7
+ import {
8
+ $expr,
9
+ type AddViewHelper,
10
+ type AddViewOfHelper,
11
+ type ElementViewBuilder,
12
+ type TypedAddViewOfHelper,
13
+ } from './Builder.view-element'
4
14
 
5
- export interface ViewsBuilder<T extends AnyTypes> {
6
- addView(view: LikeC4View): Builder<T>
15
+ export interface ViewsBuilder<T extends AnyTypes> extends Builder<T> {
16
+ __addView(view: LikeC4View): Builder<T>
7
17
  }
8
18
 
19
+ export function views<A extends AnyTypes>(): (input: Builder<A>) => Builder<A>
20
+
9
21
  export function views<
10
22
  A extends AnyTypes,
11
- B extends AnyTypes
23
+ B extends AnyTypes,
12
24
  >(
13
- op1: (input: ViewsBuilder<A>) => ViewsBuilder<B>
25
+ op1: (input: ViewsBuilder<A>) => ViewsBuilder<B>,
14
26
  ): (input: Builder<A>) => Builder<B>
15
27
  export function views<
16
28
  A extends AnyTypes,
17
29
  B extends AnyTypes,
18
- C extends AnyTypes
30
+ C extends AnyTypes,
19
31
  >(
20
32
  op1: (input: ViewsBuilder<A>) => ViewsBuilder<B>,
21
- op2: (input: ViewsBuilder<B>) => ViewsBuilder<C>
33
+ op2: (input: ViewsBuilder<B>) => ViewsBuilder<C>,
22
34
  ): (input: Builder<A>) => Builder<C>
23
35
  export function views<
24
36
  A extends AnyTypes,
25
37
  B extends AnyTypes,
26
38
  C extends AnyTypes,
27
- D extends AnyTypes
39
+ D extends AnyTypes,
28
40
  >(
29
41
  op1: (input: ViewsBuilder<A>) => ViewsBuilder<B>,
30
42
  op2: (input: ViewsBuilder<B>) => ViewsBuilder<C>,
31
- op3: (input: ViewsBuilder<C>) => ViewsBuilder<D>
43
+ op3: (input: ViewsBuilder<C>) => ViewsBuilder<D>,
32
44
  ): (input: Builder<A>) => Builder<D>
33
45
  export function views<
34
46
  A extends AnyTypes,
35
47
  B extends AnyTypes,
36
48
  C extends AnyTypes,
37
49
  D extends AnyTypes,
38
- E extends AnyTypes
50
+ E extends AnyTypes,
39
51
  >(
40
52
  op1: (input: ViewsBuilder<A>) => ViewsBuilder<B>,
41
53
  op2: (input: ViewsBuilder<B>) => ViewsBuilder<C>,
42
54
  op3: (input: ViewsBuilder<C>) => ViewsBuilder<D>,
43
- op4: (input: ViewsBuilder<D>) => ViewsBuilder<E>
55
+ op4: (input: ViewsBuilder<D>) => ViewsBuilder<E>,
44
56
  ): (input: Builder<A>) => Builder<E>
45
57
  export function views<
46
58
  A extends AnyTypes,
@@ -48,13 +60,13 @@ export function views<
48
60
  C extends AnyTypes,
49
61
  D extends AnyTypes,
50
62
  E extends AnyTypes,
51
- F extends AnyTypes
63
+ F extends AnyTypes,
52
64
  >(
53
65
  op1: (input: ViewsBuilder<A>) => ViewsBuilder<B>,
54
66
  op2: (input: ViewsBuilder<B>) => ViewsBuilder<C>,
55
67
  op3: (input: ViewsBuilder<C>) => ViewsBuilder<D>,
56
68
  op4: (input: ViewsBuilder<D>) => ViewsBuilder<E>,
57
- op5: (input: ViewsBuilder<E>) => ViewsBuilder<F>
69
+ op5: (input: ViewsBuilder<E>) => ViewsBuilder<F>,
58
70
  ): (input: Builder<A>) => Builder<F>
59
71
  export function views<
60
72
  A extends AnyTypes,
@@ -63,14 +75,14 @@ export function views<
63
75
  D extends AnyTypes,
64
76
  E extends AnyTypes,
65
77
  F extends AnyTypes,
66
- G extends AnyTypes
78
+ G extends AnyTypes,
67
79
  >(
68
80
  op1: (input: ViewsBuilder<A>) => ViewsBuilder<B>,
69
81
  op2: (input: ViewsBuilder<B>) => ViewsBuilder<C>,
70
82
  op3: (input: ViewsBuilder<C>) => ViewsBuilder<D>,
71
83
  op4: (input: ViewsBuilder<D>) => ViewsBuilder<E>,
72
84
  op5: (input: ViewsBuilder<E>) => ViewsBuilder<F>,
73
- op6: (input: ViewsBuilder<F>) => ViewsBuilder<G>
85
+ op6: (input: ViewsBuilder<F>) => ViewsBuilder<G>,
74
86
  ): (input: Builder<A>) => Builder<G>
75
87
  export function views<
76
88
  A extends AnyTypes,
@@ -80,7 +92,7 @@ export function views<
80
92
  E extends AnyTypes,
81
93
  F extends AnyTypes,
82
94
  G extends AnyTypes,
83
- H extends AnyTypes
95
+ H extends AnyTypes,
84
96
  >(
85
97
  op1: (input: ViewsBuilder<A>) => ViewsBuilder<B>,
86
98
  op2: (input: ViewsBuilder<B>) => ViewsBuilder<C>,
@@ -88,7 +100,7 @@ export function views<
88
100
  op4: (input: ViewsBuilder<D>) => ViewsBuilder<E>,
89
101
  op5: (input: ViewsBuilder<E>) => ViewsBuilder<F>,
90
102
  op6: (input: ViewsBuilder<F>) => ViewsBuilder<G>,
91
- op7: (input: ViewsBuilder<G>) => ViewsBuilder<H>
103
+ op7: (input: ViewsBuilder<G>) => ViewsBuilder<H>,
92
104
  ): (input: Builder<A>) => Builder<H>
93
105
  export function views<
94
106
  A extends AnyTypes,
@@ -99,7 +111,7 @@ export function views<
99
111
  F extends AnyTypes,
100
112
  G extends AnyTypes,
101
113
  H extends AnyTypes,
102
- I extends AnyTypes
114
+ I extends AnyTypes,
103
115
  >(
104
116
  op1: (input: ViewsBuilder<A>) => ViewsBuilder<B>,
105
117
  op2: (input: ViewsBuilder<B>) => ViewsBuilder<C>,
@@ -108,7 +120,7 @@ export function views<
108
120
  op5: (input: ViewsBuilder<E>) => ViewsBuilder<F>,
109
121
  op6: (input: ViewsBuilder<F>) => ViewsBuilder<G>,
110
122
  op7: (input: ViewsBuilder<G>) => ViewsBuilder<H>,
111
- op8: (input: ViewsBuilder<H>) => ViewsBuilder<I>
123
+ op8: (input: ViewsBuilder<H>) => ViewsBuilder<I>,
112
124
  ): (input: Builder<A>) => Builder<I>
113
125
  export function views<
114
126
  A extends AnyTypes,
@@ -120,7 +132,7 @@ export function views<
120
132
  G extends AnyTypes,
121
133
  H extends AnyTypes,
122
134
  I extends AnyTypes,
123
- J extends AnyTypes
135
+ J extends AnyTypes,
124
136
  >(
125
137
  op1: (input: ViewsBuilder<A>) => ViewsBuilder<B>,
126
138
  op2: (input: ViewsBuilder<B>) => ViewsBuilder<C>,
@@ -130,7 +142,7 @@ export function views<
130
142
  op6: (input: ViewsBuilder<F>) => ViewsBuilder<G>,
131
143
  op7: (input: ViewsBuilder<G>) => ViewsBuilder<H>,
132
144
  op8: (input: ViewsBuilder<H>) => ViewsBuilder<I>,
133
- op9: (input: ViewsBuilder<I>) => ViewsBuilder<J>
145
+ op9: (input: ViewsBuilder<I>) => ViewsBuilder<J>,
134
146
  ): (input: Builder<A>) => Builder<J>
135
147
  export function views<
136
148
  A extends AnyTypes,
@@ -143,7 +155,7 @@ export function views<
143
155
  H extends AnyTypes,
144
156
  I extends AnyTypes,
145
157
  J extends AnyTypes,
146
- K extends AnyTypes
158
+ K extends AnyTypes,
147
159
  >(
148
160
  op1: (input: ViewsBuilder<A>) => ViewsBuilder<B>,
149
161
  op2: (input: ViewsBuilder<B>) => ViewsBuilder<C>,
@@ -154,7 +166,7 @@ export function views<
154
166
  op7: (input: ViewsBuilder<G>) => ViewsBuilder<H>,
155
167
  op8: (input: ViewsBuilder<H>) => ViewsBuilder<I>,
156
168
  op9: (input: ViewsBuilder<I>) => ViewsBuilder<J>,
157
- op10: (input: ViewsBuilder<J>) => ViewsBuilder<K>
169
+ op10: (input: ViewsBuilder<J>) => ViewsBuilder<K>,
158
170
  ): (input: Builder<A>) => Builder<K>
159
171
  export function views<
160
172
  A extends AnyTypes,
@@ -168,7 +180,7 @@ export function views<
168
180
  I extends AnyTypes,
169
181
  J extends AnyTypes,
170
182
  K extends AnyTypes,
171
- L extends AnyTypes
183
+ L extends AnyTypes,
172
184
  >(
173
185
  op1: (input: ViewsBuilder<A>) => ViewsBuilder<B>,
174
186
  op2: (input: ViewsBuilder<B>) => ViewsBuilder<C>,
@@ -180,7 +192,7 @@ export function views<
180
192
  op8: (input: ViewsBuilder<H>) => ViewsBuilder<I>,
181
193
  op9: (input: ViewsBuilder<I>) => ViewsBuilder<J>,
182
194
  op10: (input: ViewsBuilder<J>) => ViewsBuilder<K>,
183
- op11: (input: ViewsBuilder<K>) => ViewsBuilder<L>
195
+ op11: (input: ViewsBuilder<K>) => ViewsBuilder<L>,
184
196
  ): (input: Builder<A>) => Builder<L>
185
197
  export function views<
186
198
  A extends AnyTypes,
@@ -195,7 +207,7 @@ export function views<
195
207
  J extends AnyTypes,
196
208
  K extends AnyTypes,
197
209
  L extends AnyTypes,
198
- M extends AnyTypes
210
+ M extends AnyTypes,
199
211
  >(
200
212
  op1: (input: ViewsBuilder<A>) => ViewsBuilder<B>,
201
213
  op2: (input: ViewsBuilder<B>) => ViewsBuilder<C>,
@@ -208,7 +220,7 @@ export function views<
208
220
  op9: (input: ViewsBuilder<I>) => ViewsBuilder<J>,
209
221
  op10: (input: ViewsBuilder<J>) => ViewsBuilder<K>,
210
222
  op11: (input: ViewsBuilder<K>) => ViewsBuilder<L>,
211
- op12: (input: ViewsBuilder<L>) => ViewsBuilder<M>
223
+ op12: (input: ViewsBuilder<L>) => ViewsBuilder<M>,
212
224
  ): (input: Builder<A>) => Builder<M>
213
225
  export function views<
214
226
  A extends AnyTypes,
@@ -224,7 +236,7 @@ export function views<
224
236
  K extends AnyTypes,
225
237
  L extends AnyTypes,
226
238
  M extends AnyTypes,
227
- N extends AnyTypes
239
+ N extends AnyTypes,
228
240
  >(
229
241
  op1: (input: ViewsBuilder<A>) => ViewsBuilder<B>,
230
242
  op2: (input: ViewsBuilder<B>) => ViewsBuilder<C>,
@@ -238,7 +250,7 @@ export function views<
238
250
  op10: (input: ViewsBuilder<J>) => ViewsBuilder<K>,
239
251
  op11: (input: ViewsBuilder<K>) => ViewsBuilder<L>,
240
252
  op12: (input: ViewsBuilder<L>) => ViewsBuilder<M>,
241
- op13: (input: ViewsBuilder<M>) => ViewsBuilder<N>
253
+ op13: (input: ViewsBuilder<M>) => ViewsBuilder<N>,
242
254
  ): (input: Builder<A>) => Builder<N>
243
255
  export function views<
244
256
  A extends AnyTypes,
@@ -255,7 +267,7 @@ export function views<
255
267
  L extends AnyTypes,
256
268
  M extends AnyTypes,
257
269
  N extends AnyTypes,
258
- O extends AnyTypes
270
+ O extends AnyTypes,
259
271
  >(
260
272
  op1: (input: ViewsBuilder<A>) => ViewsBuilder<B>,
261
273
  op2: (input: ViewsBuilder<B>) => ViewsBuilder<C>,
@@ -270,7 +282,7 @@ export function views<
270
282
  op11: (input: ViewsBuilder<K>) => ViewsBuilder<L>,
271
283
  op12: (input: ViewsBuilder<L>) => ViewsBuilder<M>,
272
284
  op13: (input: ViewsBuilder<M>) => ViewsBuilder<N>,
273
- op14: (input: ViewsBuilder<N>) => ViewsBuilder<O>
285
+ op14: (input: ViewsBuilder<N>) => ViewsBuilder<O>,
274
286
  ): (input: Builder<A>) => Builder<O>
275
287
  export function views<
276
288
  A extends AnyTypes,
@@ -288,7 +300,7 @@ export function views<
288
300
  M extends AnyTypes,
289
301
  N extends AnyTypes,
290
302
  O extends AnyTypes,
291
- P extends AnyTypes
303
+ P extends AnyTypes,
292
304
  >(
293
305
  op1: (input: ViewsBuilder<A>) => ViewsBuilder<B>,
294
306
  op2: (input: ViewsBuilder<B>) => ViewsBuilder<C>,
@@ -304,7 +316,7 @@ export function views<
304
316
  op12: (input: ViewsBuilder<L>) => ViewsBuilder<M>,
305
317
  op13: (input: ViewsBuilder<M>) => ViewsBuilder<N>,
306
318
  op14: (input: ViewsBuilder<N>) => ViewsBuilder<O>,
307
- op15: (input: ViewsBuilder<O>) => ViewsBuilder<P>
319
+ op15: (input: ViewsBuilder<O>) => ViewsBuilder<P>,
308
320
  ): (input: Builder<A>) => Builder<P>
309
321
 
310
322
  export function views(...ops: any[]) {
@@ -316,3 +328,67 @@ export function views(...ops: any[]) {
316
328
  return builder
317
329
  }
318
330
  }
331
+ export type ViewsHelpers = {
332
+ views: typeof views
333
+ view: AddViewHelper
334
+ viewOf: AddViewOfHelper
335
+ deploymentView: AddDeploymentViewHelper
336
+ $include: typeof $include
337
+ $exclude: typeof $exclude
338
+ $style: typeof $style
339
+ $rules: typeof $rules
340
+ $autoLayout: typeof $autoLayout
341
+ }
342
+
343
+ export type ViewsBuilderFunction<A extends AnyTypes, B extends AnyTypes> = (
344
+ helpers: Simplify<
345
+ ViewsHelpers['views'] & Omit<ViewsHelpers, 'viewOf'> & {
346
+ viewOf: TypedAddViewOfHelper<A>
347
+ _: ViewsHelpers['views']
348
+ }
349
+ >,
350
+ add: ViewsHelpers['views'],
351
+ ) =>
352
+ | ((builder: ViewsBuilder<A>) => ViewsBuilder<B>)
353
+ | ((builder: Builder<A>) => Builder<B>)
354
+
355
+ export function mkViewBuilder(view: Writable<DeploymentView>): DeploymentViewBuilder<AnyTypes>
356
+ export function mkViewBuilder(view: Writable<ElementView>): ElementViewBuilder<AnyTypes>
357
+ export function mkViewBuilder(
358
+ view: Writable<ElementView | DeploymentView>,
359
+ ): DeploymentViewBuilder<AnyTypes> | ElementViewBuilder<AnyTypes> {
360
+ const viewBuilder = {
361
+ $expr: view.__ === 'deployment' ? $deploymentExpr : $expr,
362
+ autoLayout(autoLayout: unknown) {
363
+ view.rules.push({
364
+ direction: autoLayout,
365
+ } as any)
366
+ return viewBuilder
367
+ },
368
+ exclude(expr: unknown) {
369
+ view.rules.push({
370
+ exclude: [expr],
371
+ } as any)
372
+ return viewBuilder
373
+ },
374
+ include(expr: unknown) {
375
+ view.rules.push({
376
+ include: [expr],
377
+ } as any)
378
+ return viewBuilder
379
+ },
380
+ style(rule: any) {
381
+ view.rules.push(rule)
382
+ return viewBuilder
383
+ },
384
+ // title(title: string) {
385
+ // view.title = title
386
+ // return viewBuilder
387
+ // },
388
+ // description(description: string) {
389
+ // view.description = description
390
+ // return viewBuilder
391
+ // }
392
+ }
393
+ return viewBuilder as any
394
+ }