@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
@@ -0,0 +1,385 @@
1
+ import type { LastArrayElement, Split } from 'type-fest'
2
+ import type { DeploymentElement, DeploymentRelation, Fqn } from '../types'
3
+ import type { AnyTypes, Invalid, Types, ValidId } from './_types'
4
+ import type { Builder } from './Builder'
5
+ import type { AddDeploymentNode } from './Builder.deployment'
6
+
7
+ export interface DeploymentModelBuilder<T extends AnyTypes> extends Builder<T> {
8
+ __addDeployment(node: DeploymentElement): Builder<T>
9
+ __addDeploymentRelation(rel: Omit<DeploymentRelation, 'id'>): Builder<T>
10
+ /**
11
+ * Create a fully qualified name from an id (for nested models)
12
+ */
13
+ __fqn(id: string): Fqn
14
+ }
15
+
16
+ export function deployment<A extends AnyTypes>(): (input: Builder<A>) => Builder<A>
17
+ export function deployment<
18
+ A extends AnyTypes,
19
+ B extends AnyTypes,
20
+ >(
21
+ op1: (input: DeploymentModelBuilder<A>) => DeploymentModelBuilder<B>,
22
+ ): (input: Builder<A>) => Builder<B>
23
+ export function deployment<
24
+ A extends AnyTypes,
25
+ B extends AnyTypes,
26
+ C extends AnyTypes,
27
+ >(
28
+ op1: (input: DeploymentModelBuilder<A>) => DeploymentModelBuilder<B>,
29
+ op2: (input: DeploymentModelBuilder<B>) => DeploymentModelBuilder<C>,
30
+ ): (input: Builder<A>) => Builder<C>
31
+ export function deployment<
32
+ A extends AnyTypes,
33
+ B extends AnyTypes,
34
+ C extends AnyTypes,
35
+ D extends AnyTypes,
36
+ >(
37
+ op1: (input: DeploymentModelBuilder<A>) => DeploymentModelBuilder<B>,
38
+ op2: (input: DeploymentModelBuilder<B>) => DeploymentModelBuilder<C>,
39
+ op3: (input: DeploymentModelBuilder<C>) => DeploymentModelBuilder<D>,
40
+ ): (input: Builder<A>) => Builder<D>
41
+ export function deployment<
42
+ A extends AnyTypes,
43
+ B extends AnyTypes,
44
+ C extends AnyTypes,
45
+ D extends AnyTypes,
46
+ E extends AnyTypes,
47
+ >(
48
+ op1: (input: DeploymentModelBuilder<A>) => DeploymentModelBuilder<B>,
49
+ op2: (input: DeploymentModelBuilder<B>) => DeploymentModelBuilder<C>,
50
+ op3: (input: DeploymentModelBuilder<C>) => DeploymentModelBuilder<D>,
51
+ op4: (input: DeploymentModelBuilder<D>) => DeploymentModelBuilder<E>,
52
+ ): (input: Builder<A>) => Builder<E>
53
+ export function deployment<
54
+ A extends AnyTypes,
55
+ B extends AnyTypes,
56
+ C extends AnyTypes,
57
+ D extends AnyTypes,
58
+ E extends AnyTypes,
59
+ F extends AnyTypes,
60
+ >(
61
+ op1: (input: DeploymentModelBuilder<A>) => DeploymentModelBuilder<B>,
62
+ op2: (input: DeploymentModelBuilder<B>) => DeploymentModelBuilder<C>,
63
+ op3: (input: DeploymentModelBuilder<C>) => DeploymentModelBuilder<D>,
64
+ op4: (input: DeploymentModelBuilder<D>) => DeploymentModelBuilder<E>,
65
+ op5: (input: DeploymentModelBuilder<E>) => DeploymentModelBuilder<F>,
66
+ ): (input: Builder<A>) => Builder<F>
67
+ export function deployment<
68
+ A extends AnyTypes,
69
+ B extends AnyTypes,
70
+ C extends AnyTypes,
71
+ D extends AnyTypes,
72
+ E extends AnyTypes,
73
+ F extends AnyTypes,
74
+ G extends AnyTypes,
75
+ >(
76
+ op1: (input: DeploymentModelBuilder<A>) => DeploymentModelBuilder<B>,
77
+ op2: (input: DeploymentModelBuilder<B>) => DeploymentModelBuilder<C>,
78
+ op3: (input: DeploymentModelBuilder<C>) => DeploymentModelBuilder<D>,
79
+ op4: (input: DeploymentModelBuilder<D>) => DeploymentModelBuilder<E>,
80
+ op5: (input: DeploymentModelBuilder<E>) => DeploymentModelBuilder<F>,
81
+ op6: (input: DeploymentModelBuilder<F>) => DeploymentModelBuilder<G>,
82
+ ): (input: Builder<A>) => Builder<G>
83
+ export function deployment<
84
+ A extends AnyTypes,
85
+ B extends AnyTypes,
86
+ C extends AnyTypes,
87
+ D extends AnyTypes,
88
+ E extends AnyTypes,
89
+ F extends AnyTypes,
90
+ G extends AnyTypes,
91
+ H extends AnyTypes,
92
+ >(
93
+ op1: (input: DeploymentModelBuilder<A>) => DeploymentModelBuilder<B>,
94
+ op2: (input: DeploymentModelBuilder<B>) => DeploymentModelBuilder<C>,
95
+ op3: (input: DeploymentModelBuilder<C>) => DeploymentModelBuilder<D>,
96
+ op4: (input: DeploymentModelBuilder<D>) => DeploymentModelBuilder<E>,
97
+ op5: (input: DeploymentModelBuilder<E>) => DeploymentModelBuilder<F>,
98
+ op6: (input: DeploymentModelBuilder<F>) => DeploymentModelBuilder<G>,
99
+ op7: (input: DeploymentModelBuilder<G>) => DeploymentModelBuilder<H>,
100
+ ): (input: Builder<A>) => Builder<H>
101
+ export function deployment<
102
+ A extends AnyTypes,
103
+ B extends AnyTypes,
104
+ C extends AnyTypes,
105
+ D extends AnyTypes,
106
+ E extends AnyTypes,
107
+ F extends AnyTypes,
108
+ G extends AnyTypes,
109
+ H extends AnyTypes,
110
+ I extends AnyTypes,
111
+ >(
112
+ op1: (input: DeploymentModelBuilder<A>) => DeploymentModelBuilder<B>,
113
+ op2: (input: DeploymentModelBuilder<B>) => DeploymentModelBuilder<C>,
114
+ op3: (input: DeploymentModelBuilder<C>) => DeploymentModelBuilder<D>,
115
+ op4: (input: DeploymentModelBuilder<D>) => DeploymentModelBuilder<E>,
116
+ op5: (input: DeploymentModelBuilder<E>) => DeploymentModelBuilder<F>,
117
+ op6: (input: DeploymentModelBuilder<F>) => DeploymentModelBuilder<G>,
118
+ op7: (input: DeploymentModelBuilder<G>) => DeploymentModelBuilder<H>,
119
+ op8: (input: DeploymentModelBuilder<H>) => DeploymentModelBuilder<I>,
120
+ ): (input: Builder<A>) => Builder<I>
121
+ export function deployment<
122
+ A extends AnyTypes,
123
+ B extends AnyTypes,
124
+ C extends AnyTypes,
125
+ D extends AnyTypes,
126
+ E extends AnyTypes,
127
+ F extends AnyTypes,
128
+ G extends AnyTypes,
129
+ H extends AnyTypes,
130
+ I extends AnyTypes,
131
+ J extends AnyTypes,
132
+ >(
133
+ op1: (input: DeploymentModelBuilder<A>) => DeploymentModelBuilder<B>,
134
+ op2: (input: DeploymentModelBuilder<B>) => DeploymentModelBuilder<C>,
135
+ op3: (input: DeploymentModelBuilder<C>) => DeploymentModelBuilder<D>,
136
+ op4: (input: DeploymentModelBuilder<D>) => DeploymentModelBuilder<E>,
137
+ op5: (input: DeploymentModelBuilder<E>) => DeploymentModelBuilder<F>,
138
+ op6: (input: DeploymentModelBuilder<F>) => DeploymentModelBuilder<G>,
139
+ op7: (input: DeploymentModelBuilder<G>) => DeploymentModelBuilder<H>,
140
+ op8: (input: DeploymentModelBuilder<H>) => DeploymentModelBuilder<I>,
141
+ op9: (input: DeploymentModelBuilder<I>) => DeploymentModelBuilder<J>,
142
+ ): (input: Builder<A>) => Builder<J>
143
+ export function deployment<
144
+ A extends AnyTypes,
145
+ B extends AnyTypes,
146
+ C extends AnyTypes,
147
+ D extends AnyTypes,
148
+ E extends AnyTypes,
149
+ F extends AnyTypes,
150
+ G extends AnyTypes,
151
+ H extends AnyTypes,
152
+ I extends AnyTypes,
153
+ J extends AnyTypes,
154
+ K extends AnyTypes,
155
+ >(
156
+ op1: (input: DeploymentModelBuilder<A>) => DeploymentModelBuilder<B>,
157
+ op2: (input: DeploymentModelBuilder<B>) => DeploymentModelBuilder<C>,
158
+ op3: (input: DeploymentModelBuilder<C>) => DeploymentModelBuilder<D>,
159
+ op4: (input: DeploymentModelBuilder<D>) => DeploymentModelBuilder<E>,
160
+ op5: (input: DeploymentModelBuilder<E>) => DeploymentModelBuilder<F>,
161
+ op6: (input: DeploymentModelBuilder<F>) => DeploymentModelBuilder<G>,
162
+ op7: (input: DeploymentModelBuilder<G>) => DeploymentModelBuilder<H>,
163
+ op8: (input: DeploymentModelBuilder<H>) => DeploymentModelBuilder<I>,
164
+ op9: (input: DeploymentModelBuilder<I>) => DeploymentModelBuilder<J>,
165
+ op10: (input: DeploymentModelBuilder<J>) => DeploymentModelBuilder<K>,
166
+ ): (input: Builder<A>) => Builder<K>
167
+ export function deployment<
168
+ A extends AnyTypes,
169
+ B extends AnyTypes,
170
+ C extends AnyTypes,
171
+ D extends AnyTypes,
172
+ E extends AnyTypes,
173
+ F extends AnyTypes,
174
+ G extends AnyTypes,
175
+ H extends AnyTypes,
176
+ I extends AnyTypes,
177
+ J extends AnyTypes,
178
+ K extends AnyTypes,
179
+ L extends AnyTypes,
180
+ >(
181
+ op1: (input: DeploymentModelBuilder<A>) => DeploymentModelBuilder<B>,
182
+ op2: (input: DeploymentModelBuilder<B>) => DeploymentModelBuilder<C>,
183
+ op3: (input: DeploymentModelBuilder<C>) => DeploymentModelBuilder<D>,
184
+ op4: (input: DeploymentModelBuilder<D>) => DeploymentModelBuilder<E>,
185
+ op5: (input: DeploymentModelBuilder<E>) => DeploymentModelBuilder<F>,
186
+ op6: (input: DeploymentModelBuilder<F>) => DeploymentModelBuilder<G>,
187
+ op7: (input: DeploymentModelBuilder<G>) => DeploymentModelBuilder<H>,
188
+ op8: (input: DeploymentModelBuilder<H>) => DeploymentModelBuilder<I>,
189
+ op9: (input: DeploymentModelBuilder<I>) => DeploymentModelBuilder<J>,
190
+ op10: (input: DeploymentModelBuilder<J>) => DeploymentModelBuilder<K>,
191
+ op11: (input: DeploymentModelBuilder<K>) => DeploymentModelBuilder<L>,
192
+ ): (input: Builder<A>) => Builder<L>
193
+ export function deployment<
194
+ A extends AnyTypes,
195
+ B extends AnyTypes,
196
+ C extends AnyTypes,
197
+ D extends AnyTypes,
198
+ E extends AnyTypes,
199
+ F extends AnyTypes,
200
+ G extends AnyTypes,
201
+ H extends AnyTypes,
202
+ I extends AnyTypes,
203
+ J extends AnyTypes,
204
+ K extends AnyTypes,
205
+ L extends AnyTypes,
206
+ M extends AnyTypes,
207
+ >(
208
+ op1: (input: DeploymentModelBuilder<A>) => DeploymentModelBuilder<B>,
209
+ op2: (input: DeploymentModelBuilder<B>) => DeploymentModelBuilder<C>,
210
+ op3: (input: DeploymentModelBuilder<C>) => DeploymentModelBuilder<D>,
211
+ op4: (input: DeploymentModelBuilder<D>) => DeploymentModelBuilder<E>,
212
+ op5: (input: DeploymentModelBuilder<E>) => DeploymentModelBuilder<F>,
213
+ op6: (input: DeploymentModelBuilder<F>) => DeploymentModelBuilder<G>,
214
+ op7: (input: DeploymentModelBuilder<G>) => DeploymentModelBuilder<H>,
215
+ op8: (input: DeploymentModelBuilder<H>) => DeploymentModelBuilder<I>,
216
+ op9: (input: DeploymentModelBuilder<I>) => DeploymentModelBuilder<J>,
217
+ op10: (input: DeploymentModelBuilder<J>) => DeploymentModelBuilder<K>,
218
+ op11: (input: DeploymentModelBuilder<K>) => DeploymentModelBuilder<L>,
219
+ op12: (input: DeploymentModelBuilder<L>) => DeploymentModelBuilder<M>,
220
+ ): (input: Builder<A>) => Builder<M>
221
+ export function deployment<
222
+ A extends AnyTypes,
223
+ B extends AnyTypes,
224
+ C extends AnyTypes,
225
+ D extends AnyTypes,
226
+ E extends AnyTypes,
227
+ F extends AnyTypes,
228
+ G extends AnyTypes,
229
+ H extends AnyTypes,
230
+ I extends AnyTypes,
231
+ J extends AnyTypes,
232
+ K extends AnyTypes,
233
+ L extends AnyTypes,
234
+ M extends AnyTypes,
235
+ N extends AnyTypes,
236
+ >(
237
+ op1: (input: DeploymentModelBuilder<A>) => DeploymentModelBuilder<B>,
238
+ op2: (input: DeploymentModelBuilder<B>) => DeploymentModelBuilder<C>,
239
+ op3: (input: DeploymentModelBuilder<C>) => DeploymentModelBuilder<D>,
240
+ op4: (input: DeploymentModelBuilder<D>) => DeploymentModelBuilder<E>,
241
+ op5: (input: DeploymentModelBuilder<E>) => DeploymentModelBuilder<F>,
242
+ op6: (input: DeploymentModelBuilder<F>) => DeploymentModelBuilder<G>,
243
+ op7: (input: DeploymentModelBuilder<G>) => DeploymentModelBuilder<H>,
244
+ op8: (input: DeploymentModelBuilder<H>) => DeploymentModelBuilder<I>,
245
+ op9: (input: DeploymentModelBuilder<I>) => DeploymentModelBuilder<J>,
246
+ op10: (input: DeploymentModelBuilder<J>) => DeploymentModelBuilder<K>,
247
+ op11: (input: DeploymentModelBuilder<K>) => DeploymentModelBuilder<L>,
248
+ op12: (input: DeploymentModelBuilder<L>) => DeploymentModelBuilder<M>,
249
+ op13: (input: DeploymentModelBuilder<M>) => DeploymentModelBuilder<N>,
250
+ ): (input: Builder<A>) => Builder<N>
251
+ export function deployment<
252
+ A extends AnyTypes,
253
+ B extends AnyTypes,
254
+ C extends AnyTypes,
255
+ D extends AnyTypes,
256
+ E extends AnyTypes,
257
+ F extends AnyTypes,
258
+ G extends AnyTypes,
259
+ H extends AnyTypes,
260
+ I extends AnyTypes,
261
+ J extends AnyTypes,
262
+ K extends AnyTypes,
263
+ L extends AnyTypes,
264
+ M extends AnyTypes,
265
+ N extends AnyTypes,
266
+ O extends AnyTypes,
267
+ >(
268
+ op1: (input: DeploymentModelBuilder<A>) => DeploymentModelBuilder<B>,
269
+ op2: (input: DeploymentModelBuilder<B>) => DeploymentModelBuilder<C>,
270
+ op3: (input: DeploymentModelBuilder<C>) => DeploymentModelBuilder<D>,
271
+ op4: (input: DeploymentModelBuilder<D>) => DeploymentModelBuilder<E>,
272
+ op5: (input: DeploymentModelBuilder<E>) => DeploymentModelBuilder<F>,
273
+ op6: (input: DeploymentModelBuilder<F>) => DeploymentModelBuilder<G>,
274
+ op7: (input: DeploymentModelBuilder<G>) => DeploymentModelBuilder<H>,
275
+ op8: (input: DeploymentModelBuilder<H>) => DeploymentModelBuilder<I>,
276
+ op9: (input: DeploymentModelBuilder<I>) => DeploymentModelBuilder<J>,
277
+ op10: (input: DeploymentModelBuilder<J>) => DeploymentModelBuilder<K>,
278
+ op11: (input: DeploymentModelBuilder<K>) => DeploymentModelBuilder<L>,
279
+ op12: (input: DeploymentModelBuilder<L>) => DeploymentModelBuilder<M>,
280
+ op13: (input: DeploymentModelBuilder<M>) => DeploymentModelBuilder<N>,
281
+ op14: (input: DeploymentModelBuilder<N>) => DeploymentModelBuilder<O>,
282
+ ): (input: Builder<A>) => Builder<O>
283
+ export function deployment<
284
+ A extends AnyTypes,
285
+ B extends AnyTypes,
286
+ C extends AnyTypes,
287
+ D extends AnyTypes,
288
+ E extends AnyTypes,
289
+ F extends AnyTypes,
290
+ G extends AnyTypes,
291
+ H extends AnyTypes,
292
+ I extends AnyTypes,
293
+ J extends AnyTypes,
294
+ K extends AnyTypes,
295
+ L extends AnyTypes,
296
+ M extends AnyTypes,
297
+ N extends AnyTypes,
298
+ O extends AnyTypes,
299
+ P extends AnyTypes,
300
+ >(
301
+ op1: (input: DeploymentModelBuilder<A>) => DeploymentModelBuilder<B>,
302
+ op2: (input: DeploymentModelBuilder<B>) => DeploymentModelBuilder<C>,
303
+ op3: (input: DeploymentModelBuilder<C>) => DeploymentModelBuilder<D>,
304
+ op4: (input: DeploymentModelBuilder<D>) => DeploymentModelBuilder<E>,
305
+ op5: (input: DeploymentModelBuilder<E>) => DeploymentModelBuilder<F>,
306
+ op6: (input: DeploymentModelBuilder<F>) => DeploymentModelBuilder<G>,
307
+ op7: (input: DeploymentModelBuilder<G>) => DeploymentModelBuilder<H>,
308
+ op8: (input: DeploymentModelBuilder<H>) => DeploymentModelBuilder<I>,
309
+ op9: (input: DeploymentModelBuilder<I>) => DeploymentModelBuilder<J>,
310
+ op10: (input: DeploymentModelBuilder<J>) => DeploymentModelBuilder<K>,
311
+ op11: (input: DeploymentModelBuilder<K>) => DeploymentModelBuilder<L>,
312
+ op12: (input: DeploymentModelBuilder<L>) => DeploymentModelBuilder<M>,
313
+ op13: (input: DeploymentModelBuilder<M>) => DeploymentModelBuilder<N>,
314
+ op14: (input: DeploymentModelBuilder<N>) => DeploymentModelBuilder<O>,
315
+ op15: (input: DeploymentModelBuilder<O>) => DeploymentModelBuilder<P>,
316
+ ): (input: Builder<A>) => Builder<P>
317
+
318
+ export function deployment(...ops: any[]) {
319
+ return (input: Builder<any>) => {
320
+ let builder = input
321
+ for (const op of ops) {
322
+ builder = op(builder)
323
+ }
324
+ return builder
325
+ }
326
+ }
327
+
328
+ type NameFromFqn<FQN extends string> = LastArrayElement<Split<FQN, '.'>>
329
+
330
+ export type AddDeployedInstance<Props = unknown> = {
331
+ // instanceOf(target, titleOrProps?)
332
+ <
333
+ const T extends AnyTypes,
334
+ Id extends string & T['Fqn'],
335
+ >(
336
+ target: Id,
337
+ ): (builder: DeploymentModelBuilder<T>) => DeploymentModelBuilder<Types.AddDeploymentFqn<T, NameFromFqn<Id>>>
338
+
339
+ // instanceOf(id, target, titleOrProps?)
340
+ <
341
+ const Id extends string,
342
+ T extends AnyTypes,
343
+ Target extends string & T['Fqn'],
344
+ >(
345
+ id: ValidId<Id>,
346
+ target: Target,
347
+ titleOrProps?: string | Props | undefined,
348
+ ): (builder: DeploymentModelBuilder<T>) => DeploymentModelBuilder<Types.AddDeploymentFqn<T, Id>>
349
+ }
350
+
351
+ type AddDeploymentNodeHelper<T = unknown> = <const Id extends string>(
352
+ id: ValidId<Id>,
353
+ titleOrProps?: string | T,
354
+ ) => AddDeploymentNode<Id>
355
+
356
+ export type AddDeploymentNodeHelpers<T extends AnyTypes> = T extends
357
+ Types<any, any, any, any, any, any, infer Kinds extends string, any> ? {
358
+ [Kind in Kinds]: AddDeploymentNodeHelper<T['NewDeploymentNodeProps']>
359
+ }
360
+ : Invalid<'No Deployment Kinds'>
361
+
362
+ export type AddDeploymentRelation<Props = unknown> = <
363
+ T extends AnyTypes,
364
+ Source extends string & T['DeploymentFqn'],
365
+ Target extends string & T['DeploymentFqn'],
366
+ >(
367
+ source: Source,
368
+ target: Target,
369
+ titleOrProps?: string | Props,
370
+ ) => (builder: DeploymentModelBuilder<T>) => DeploymentModelBuilder<T>
371
+
372
+ export type DeloymentModelHelpers<T extends AnyTypes> = AddDeploymentNodeHelpers<T> & {
373
+ instanceOf: AddDeployedInstance<T['NewDeploymentNodeProps']>
374
+ rel: AddDeploymentRelation<T['NewRelationshipProps']>
375
+ deployment: typeof deployment
376
+ }
377
+
378
+ export type DeloymentModelBuildFunction<A extends AnyTypes, B extends AnyTypes> = (
379
+ helpers: DeloymentModelHelpers<A> & {
380
+ _: DeloymentModelHelpers<A>['deployment']
381
+ },
382
+ add: DeloymentModelHelpers<A>['deployment'],
383
+ ) =>
384
+ | ((builder: DeploymentModelBuilder<A>) => DeploymentModelBuilder<B>)
385
+ | ((builder: Builder<A>) => Builder<B>)
@@ -1,14 +1,17 @@
1
- import type { AnyTypes, Invalid, Types, TypesNested } from './_types'
1
+ import type { AnyTypes, Types, TypesNested } from './_types'
2
2
  import type { ModelBuilder } from './Builder.model'
3
3
 
4
- type ToNested<T, Id extends string> = T extends TypesNested<infer P, any, infer F, any, any, any, any> ? TypesNested<
4
+ type ToNested<T, Id extends string> = T extends TypesNested<infer P, any, infer F, any, any, any, any, any, any>
5
+ ? TypesNested<
5
6
  `${P}.${Id}`,
6
7
  T['ElementKind'],
7
8
  `${P}.${Id}` | F,
8
9
  T['ViewId'],
9
10
  T['RelationshipKind'],
10
11
  T['Tag'],
11
- T['MetadataKey']
12
+ T['MetadataKey'],
13
+ T['DeploymentKind'],
14
+ T['DeploymentFqn']
12
15
  >
13
16
  : T extends AnyTypes ? TypesNested<
14
17
  Id,
@@ -17,19 +20,23 @@ type ToNested<T, Id extends string> = T extends TypesNested<infer P, any, infer
17
20
  T['ViewId'],
18
21
  T['RelationshipKind'],
19
22
  T['Tag'],
20
- T['MetadataKey']
23
+ T['MetadataKey'],
24
+ T['DeploymentKind'],
25
+ T['DeploymentFqn']
21
26
  >
22
27
  : never
23
28
 
24
- type FromNested<T extends AnyTypes, N> = N extends TypesNested<any, any, infer F, any, any, any, any>
25
- ? T extends TypesNested<infer P, any, any, any, any, any, any> ? TypesNested<
29
+ type FromNested<T extends AnyTypes, N> = N extends TypesNested<any, any, infer F, any, any, any, any, any, any>
30
+ ? T extends TypesNested<infer P, any, any, any, any, any, any, any, any> ? TypesNested<
26
31
  P,
27
32
  T['ElementKind'],
28
33
  F,
29
34
  T['ViewId'],
30
35
  T['RelationshipKind'],
31
36
  T['Tag'],
32
- T['MetadataKey']
37
+ T['MetadataKey'],
38
+ T['DeploymentKind'],
39
+ T['DeploymentFqn']
33
40
  >
34
41
  : T extends AnyTypes ? Types<
35
42
  T['ElementKind'],
@@ -37,7 +44,9 @@ type FromNested<T extends AnyTypes, N> = N extends TypesNested<any, any, infer F
37
44
  T['ViewId'],
38
45
  T['RelationshipKind'],
39
46
  T['Tag'],
40
- T['MetadataKey']
47
+ T['MetadataKey'],
48
+ T['DeploymentKind'],
49
+ T['DeploymentFqn']
41
50
  >
42
51
  : never
43
52
  : never
@@ -48,6 +57,8 @@ type FromNested<T extends AnyTypes, N> = N extends TypesNested<any, any, infer F
48
57
  export interface AddElement<Id extends string> {
49
58
  <T extends AnyTypes>(builder: ModelBuilder<T>): ModelBuilder<Types.AddFqn<T, Id>>
50
59
 
60
+ with<T extends AnyTypes>(): (builder: ModelBuilder<T>) => ModelBuilder<Types.AddFqn<T, Id>>
61
+
51
62
  with<
52
63
  T extends AnyTypes,
53
64
  A extends AnyTypes
@@ -208,14 +219,3 @@ export interface AddElement<Id extends string> {
208
219
  op10: (input: ModelBuilder<I>) => ModelBuilder<J>
209
220
  ): (builder: ModelBuilder<T>) => ModelBuilder<FromNested<T, J>>
210
221
  }
211
-
212
- type AddElementHelper<T = unknown> = <const Id extends string>(
213
- id: Id,
214
- titleOrProps?: string | T
215
- ) => AddElement<Id>
216
-
217
- export type AddElementHelpers<T extends AnyTypes> = T extends Types<infer Kinds extends string, any, any, any, any, any>
218
- ? {
219
- [Kind in Kinds]: AddElementHelper<T['NewElementProps']>
220
- }
221
- : Invalid<'No Element Kinds'>