@likec4/core 1.17.1 → 1.18.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 (112) hide show
  1. package/dist/compute-view/index.d.mts +91 -0
  2. package/dist/compute-view/index.d.ts +91 -0
  3. package/dist/compute-view/index.mjs +79 -0
  4. package/dist/index.d.mts +246 -434
  5. package/dist/index.d.ts +246 -434
  6. package/dist/index.mjs +418 -1322
  7. package/dist/model/index.d.mts +642 -0
  8. package/dist/model/index.d.ts +642 -0
  9. package/dist/model/index.mjs +2 -0
  10. package/dist/shared/core.BBgiAAv1.mjs +144 -0
  11. package/dist/shared/core.BPyJvuMU.mjs +2420 -0
  12. package/dist/shared/core.BQ4AbfvB.mjs +9228 -0
  13. package/dist/shared/{core.CoLQkcYL.d.mts → core.DMYY7C8s.d.mts} +398 -249
  14. package/dist/shared/{core.CoLQkcYL.d.ts → core.DMYY7C8s.d.ts} +398 -249
  15. package/dist/shared/core.k12s_keD.mjs +203 -0
  16. package/dist/types/index.d.mts +69 -1
  17. package/dist/types/index.d.ts +69 -1
  18. package/dist/types/index.mjs +21 -1
  19. package/package.json +38 -40
  20. package/src/builder/Builder.deployment.ts +219 -0
  21. package/src/builder/Builder.deploymentModel.ts +360 -0
  22. package/src/builder/Builder.element.ts +17 -19
  23. package/src/builder/Builder.model.ts +13 -2
  24. package/src/builder/Builder.test-d.ts +59 -4
  25. package/src/builder/Builder.ts +238 -53
  26. package/src/builder/Builder.view.ts +238 -53
  27. package/src/builder/_types.ts +87 -15
  28. package/src/compute-view/LikeC4ModelGraph.ts +330 -0
  29. package/src/compute-view/compute-view.ts +92 -0
  30. package/src/compute-view/deployment-view/Memory.ts +108 -0
  31. package/src/compute-view/deployment-view/Stage.ts +145 -0
  32. package/src/compute-view/deployment-view/__test__/fixture.ts +210 -0
  33. package/src/compute-view/deployment-view/_types.ts +29 -0
  34. package/src/compute-view/deployment-view/clean-connections.ts +229 -0
  35. package/src/compute-view/deployment-view/compute.ts +111 -0
  36. package/src/compute-view/deployment-view/predicates/deployment-ref.ts +146 -0
  37. package/src/compute-view/deployment-view/predicates/relation-direct.ts +130 -0
  38. package/src/compute-view/deployment-view/predicates/relation-in-out.ts +43 -0
  39. package/src/compute-view/deployment-view/predicates/relation-incoming.ts +46 -0
  40. package/src/compute-view/deployment-view/predicates/relation-outgoing.ts +49 -0
  41. package/src/compute-view/deployment-view/predicates/wildcard.ts +29 -0
  42. package/src/compute-view/deployment-view/utils.ts +212 -0
  43. package/src/compute-view/dynamic-view/__test__/fixture.ts +58 -0
  44. package/src/compute-view/dynamic-view/compute.ts +310 -0
  45. package/src/compute-view/element-view/__test__/__snapshots__/legacy.spec.ts.snap +456 -0
  46. package/src/compute-view/element-view/__test__/fixture.ts +645 -0
  47. package/src/compute-view/element-view/compute.ts +734 -0
  48. package/src/compute-view/element-view/predicates.ts +517 -0
  49. package/src/compute-view/index.ts +5 -0
  50. package/src/compute-view/utils/__snapshots__/sortNodes.spec.ts.snap +113 -0
  51. package/src/compute-view/utils/ancestorsOfNode.ts +19 -0
  52. package/src/compute-view/utils/applyCustomElementProperties.ts +66 -0
  53. package/src/compute-view/utils/applyCustomRelationProperties.ts +41 -0
  54. package/src/compute-view/utils/applyViewRuleStyles.ts +53 -0
  55. package/src/compute-view/utils/buildComputedNodes.ts +148 -0
  56. package/src/compute-view/utils/buildElementNotations.ts +63 -0
  57. package/src/compute-view/utils/derive-edge-props-from-relationships.ts +97 -0
  58. package/src/compute-view/utils/elementExpressionToPredicate.ts +52 -0
  59. package/src/compute-view/utils/link-nodes-with-edges.ts +58 -0
  60. package/src/compute-view/utils/relationExpressionToPredicates.ts +55 -0
  61. package/src/compute-view/utils/resolve-extended-views.ts +65 -0
  62. package/src/compute-view/utils/resolve-global-rules.ts +83 -0
  63. package/src/compute-view/utils/sortNodes.ts +101 -0
  64. package/src/compute-view/utils/topological-sort.ts +160 -0
  65. package/src/compute-view/utils/uniqueTags.test.ts +42 -0
  66. package/src/compute-view/utils/uniqueTags.ts +21 -0
  67. package/src/compute-view/utils/view-hash.ts +27 -0
  68. package/src/compute-view/utils/with-readable-edges.ts +31 -0
  69. package/src/index.ts +5 -1
  70. package/src/model/DeploymentElementModel.ts +534 -0
  71. package/src/model/DeploymentModel.ts +364 -0
  72. package/src/model/ElementModel.ts +195 -0
  73. package/src/model/LikeC4Model.test-d.ts +151 -0
  74. package/src/model/LikeC4Model.ts +280 -457
  75. package/src/model/RelationModel.ts +84 -0
  76. package/src/model/__test__/fixture.ts +153 -338
  77. package/src/model/connection/ConnectionModel.ts +94 -0
  78. package/src/model/connection/DeploymentConnectionModel.ts +99 -0
  79. package/src/model/connection/deployment.ts +124 -0
  80. package/src/model/connection/model.ts +123 -0
  81. package/src/model/index.ts +4 -2
  82. package/src/model/types.ts +95 -15
  83. package/src/model/view/EdgeModel.ts +103 -0
  84. package/src/model/view/LikeC4ViewModel.ts +220 -0
  85. package/src/model/view/NodeModel.ts +228 -0
  86. package/src/types/_common.ts +2 -0
  87. package/src/types/deployments.ts +237 -0
  88. package/src/types/element.ts +7 -3
  89. package/src/types/expression.ts +8 -6
  90. package/src/types/index.ts +1 -0
  91. package/src/types/model.ts +68 -9
  92. package/src/types/overview-graph.ts +2 -2
  93. package/src/types/relation.ts +4 -4
  94. package/src/types/view-notation.ts +2 -2
  95. package/src/types/view.ts +104 -30
  96. package/src/utils/{commonHead.ts → common-head.ts} +2 -0
  97. package/src/utils/fqn.ts +83 -27
  98. package/src/utils/getOrCreate.ts +42 -0
  99. package/src/utils/graphlib.ts +10 -0
  100. package/src/utils/index.ts +4 -1
  101. package/src/utils/object-hash.ts +3 -0
  102. package/src/utils/set.ts +76 -0
  103. package/src/utils/string-hash.ts +16 -0
  104. package/dist/index.cjs +0 -5452
  105. package/dist/index.d.cts +0 -1053
  106. package/dist/shared/core.BXTs-8n7.mjs +0 -293
  107. package/dist/shared/core.CoLQkcYL.d.cts +0 -734
  108. package/dist/shared/core.DIYZvpVg.cjs +0 -353
  109. package/dist/types/index.cjs +0 -70
  110. package/dist/types/index.d.cts +0 -2
  111. package/src/model/LikeC4DiagramModel.ts +0 -338
  112. package/src/model/LikeC4ViewModel.ts +0 -320
@@ -0,0 +1,219 @@
1
+ import type { AnyTypes, Types, TypesNested } from './_types'
2
+ import type { DeploymentModelBuilder } from './Builder.deploymentModel'
3
+
4
+ type ToNested<T, Id extends string> = T extends TypesNested<infer P, any, any, any, any, any, any, any, infer F>
5
+ ? TypesNested<
6
+ `${P}.${Id}`,
7
+ T['ElementKind'],
8
+ T['Fqn'],
9
+ T['ViewId'],
10
+ T['RelationshipKind'],
11
+ T['Tag'],
12
+ T['MetadataKey'],
13
+ T['DeploymentKind'],
14
+ `${P}.${Id}` | F
15
+ >
16
+ : T extends AnyTypes ? TypesNested<
17
+ Id,
18
+ T['ElementKind'],
19
+ T['Fqn'],
20
+ T['ViewId'],
21
+ T['RelationshipKind'],
22
+ T['Tag'],
23
+ T['MetadataKey'],
24
+ T['DeploymentKind'],
25
+ Id | T['DeploymentFqn']
26
+ >
27
+ : never
28
+
29
+ type FromNested<T extends AnyTypes, N> = N extends TypesNested<any, any, any, any, any, any, any, any, infer F>
30
+ ? T extends TypesNested<infer P, any, any, any, any, any, any, any, any> ? TypesNested<
31
+ P,
32
+ T['ElementKind'],
33
+ T['Fqn'],
34
+ T['ViewId'],
35
+ T['RelationshipKind'],
36
+ T['Tag'],
37
+ T['MetadataKey'],
38
+ T['DeploymentKind'],
39
+ F
40
+ >
41
+ : T extends AnyTypes ? Types<
42
+ T['ElementKind'],
43
+ T['Fqn'],
44
+ T['ViewId'],
45
+ T['RelationshipKind'],
46
+ T['Tag'],
47
+ T['MetadataKey'],
48
+ T['DeploymentKind'],
49
+ F
50
+ >
51
+ : never
52
+ : never
53
+
54
+ /**
55
+ * Chainable builder to create deployment node
56
+ */
57
+ export interface AddDeploymentNode<Id extends string> {
58
+ <T extends AnyTypes>(builder: DeploymentModelBuilder<T>): DeploymentModelBuilder<Types.AddDeploymentFqn<T, Id>>
59
+
60
+ with<
61
+ T extends AnyTypes,
62
+ A extends AnyTypes
63
+ >(
64
+ op1: (input: DeploymentModelBuilder<ToNested<T, Id>>) => DeploymentModelBuilder<A>
65
+ ): (builder: DeploymentModelBuilder<T>) => DeploymentModelBuilder<FromNested<T, A>>
66
+
67
+ with<
68
+ T extends AnyTypes,
69
+ A extends AnyTypes,
70
+ B extends AnyTypes
71
+ >(
72
+ op1: (input: DeploymentModelBuilder<ToNested<T, Id>>) => DeploymentModelBuilder<A>,
73
+ op2: (input: DeploymentModelBuilder<A>) => DeploymentModelBuilder<B>
74
+ ): (builder: DeploymentModelBuilder<T>) => DeploymentModelBuilder<FromNested<T, B>>
75
+
76
+ with<
77
+ T extends AnyTypes,
78
+ A extends AnyTypes,
79
+ B extends AnyTypes,
80
+ C extends AnyTypes
81
+ >(
82
+ op1: (input: DeploymentModelBuilder<ToNested<T, Id>>) => DeploymentModelBuilder<A>,
83
+ op2: (input: DeploymentModelBuilder<A>) => DeploymentModelBuilder<B>,
84
+ op3: (input: DeploymentModelBuilder<B>) => DeploymentModelBuilder<C>
85
+ ): (builder: DeploymentModelBuilder<T>) => DeploymentModelBuilder<FromNested<T, C>>
86
+
87
+ with<
88
+ T extends AnyTypes,
89
+ A extends AnyTypes,
90
+ B extends AnyTypes,
91
+ C extends AnyTypes,
92
+ D extends AnyTypes
93
+ >(
94
+ op1: (input: DeploymentModelBuilder<ToNested<T, Id>>) => DeploymentModelBuilder<A>,
95
+ op2: (input: DeploymentModelBuilder<A>) => DeploymentModelBuilder<B>,
96
+ op3: (input: DeploymentModelBuilder<B>) => DeploymentModelBuilder<C>,
97
+ op4: (input: DeploymentModelBuilder<C>) => DeploymentModelBuilder<D>
98
+ ): (builder: DeploymentModelBuilder<T>) => DeploymentModelBuilder<FromNested<T, D>>
99
+
100
+ with<
101
+ T extends AnyTypes,
102
+ A extends AnyTypes,
103
+ B extends AnyTypes,
104
+ C extends AnyTypes,
105
+ D extends AnyTypes,
106
+ E extends AnyTypes
107
+ >(
108
+ op1: (input: DeploymentModelBuilder<ToNested<T, Id>>) => DeploymentModelBuilder<A>,
109
+ op2: (input: DeploymentModelBuilder<A>) => DeploymentModelBuilder<B>,
110
+ op3: (input: DeploymentModelBuilder<B>) => DeploymentModelBuilder<C>,
111
+ op4: (input: DeploymentModelBuilder<C>) => DeploymentModelBuilder<D>,
112
+ op5: (input: DeploymentModelBuilder<D>) => DeploymentModelBuilder<E>
113
+ ): (builder: DeploymentModelBuilder<T>) => DeploymentModelBuilder<FromNested<T, E>>
114
+
115
+ with<
116
+ T extends AnyTypes,
117
+ A extends AnyTypes,
118
+ B extends AnyTypes,
119
+ C extends AnyTypes,
120
+ D extends AnyTypes,
121
+ E extends AnyTypes,
122
+ F extends AnyTypes
123
+ >(
124
+ op1: (input: DeploymentModelBuilder<ToNested<T, Id>>) => DeploymentModelBuilder<A>,
125
+ op2: (input: DeploymentModelBuilder<A>) => DeploymentModelBuilder<B>,
126
+ op3: (input: DeploymentModelBuilder<B>) => DeploymentModelBuilder<C>,
127
+ op4: (input: DeploymentModelBuilder<C>) => DeploymentModelBuilder<D>,
128
+ op5: (input: DeploymentModelBuilder<D>) => DeploymentModelBuilder<E>,
129
+ op6: (input: DeploymentModelBuilder<E>) => DeploymentModelBuilder<F>
130
+ ): (builder: DeploymentModelBuilder<T>) => DeploymentModelBuilder<FromNested<T, F>>
131
+
132
+ with<
133
+ T extends AnyTypes,
134
+ A extends AnyTypes,
135
+ B extends AnyTypes,
136
+ C extends AnyTypes,
137
+ D extends AnyTypes,
138
+ E extends AnyTypes,
139
+ F extends AnyTypes,
140
+ G extends AnyTypes
141
+ >(
142
+ op1: (input: DeploymentModelBuilder<ToNested<T, Id>>) => DeploymentModelBuilder<A>,
143
+ op2: (input: DeploymentModelBuilder<A>) => DeploymentModelBuilder<B>,
144
+ op3: (input: DeploymentModelBuilder<B>) => DeploymentModelBuilder<C>,
145
+ op4: (input: DeploymentModelBuilder<C>) => DeploymentModelBuilder<D>,
146
+ op5: (input: DeploymentModelBuilder<D>) => DeploymentModelBuilder<E>,
147
+ op6: (input: DeploymentModelBuilder<E>) => DeploymentModelBuilder<F>,
148
+ op7: (input: DeploymentModelBuilder<F>) => DeploymentModelBuilder<G>
149
+ ): (builder: DeploymentModelBuilder<T>) => DeploymentModelBuilder<FromNested<T, G>>
150
+
151
+ with<
152
+ T extends AnyTypes,
153
+ A extends AnyTypes,
154
+ B extends AnyTypes,
155
+ C extends AnyTypes,
156
+ D extends AnyTypes,
157
+ E extends AnyTypes,
158
+ F extends AnyTypes,
159
+ G extends AnyTypes,
160
+ H extends AnyTypes
161
+ >(
162
+ op1: (input: DeploymentModelBuilder<ToNested<T, Id>>) => DeploymentModelBuilder<A>,
163
+ op2: (input: DeploymentModelBuilder<A>) => DeploymentModelBuilder<B>,
164
+ op3: (input: DeploymentModelBuilder<B>) => DeploymentModelBuilder<C>,
165
+ op4: (input: DeploymentModelBuilder<C>) => DeploymentModelBuilder<D>,
166
+ op5: (input: DeploymentModelBuilder<D>) => DeploymentModelBuilder<E>,
167
+ op6: (input: DeploymentModelBuilder<E>) => DeploymentModelBuilder<F>,
168
+ op7: (input: DeploymentModelBuilder<F>) => DeploymentModelBuilder<G>,
169
+ op8: (input: DeploymentModelBuilder<G>) => DeploymentModelBuilder<H>
170
+ ): (builder: DeploymentModelBuilder<T>) => DeploymentModelBuilder<FromNested<T, H>>
171
+
172
+ with<
173
+ T extends AnyTypes,
174
+ A extends AnyTypes,
175
+ B extends AnyTypes,
176
+ C extends AnyTypes,
177
+ D extends AnyTypes,
178
+ E extends AnyTypes,
179
+ F extends AnyTypes,
180
+ G extends AnyTypes,
181
+ H extends AnyTypes,
182
+ I extends AnyTypes
183
+ >(
184
+ op1: (input: DeploymentModelBuilder<ToNested<T, Id>>) => DeploymentModelBuilder<A>,
185
+ op2: (input: DeploymentModelBuilder<A>) => DeploymentModelBuilder<B>,
186
+ op3: (input: DeploymentModelBuilder<B>) => DeploymentModelBuilder<C>,
187
+ op4: (input: DeploymentModelBuilder<C>) => DeploymentModelBuilder<D>,
188
+ op5: (input: DeploymentModelBuilder<D>) => DeploymentModelBuilder<E>,
189
+ op6: (input: DeploymentModelBuilder<E>) => DeploymentModelBuilder<F>,
190
+ op7: (input: DeploymentModelBuilder<F>) => DeploymentModelBuilder<G>,
191
+ op8: (input: DeploymentModelBuilder<G>) => DeploymentModelBuilder<H>,
192
+ op9: (input: DeploymentModelBuilder<H>) => DeploymentModelBuilder<I>
193
+ ): (builder: DeploymentModelBuilder<T>) => DeploymentModelBuilder<FromNested<T, I>>
194
+
195
+ with<
196
+ T extends AnyTypes,
197
+ A extends AnyTypes,
198
+ B extends AnyTypes,
199
+ C extends AnyTypes,
200
+ D extends AnyTypes,
201
+ E extends AnyTypes,
202
+ F extends AnyTypes,
203
+ G extends AnyTypes,
204
+ H extends AnyTypes,
205
+ I extends AnyTypes,
206
+ J extends AnyTypes
207
+ >(
208
+ op1: (input: DeploymentModelBuilder<ToNested<T, Id>>) => DeploymentModelBuilder<A>,
209
+ op2: (input: DeploymentModelBuilder<A>) => DeploymentModelBuilder<B>,
210
+ op3: (input: DeploymentModelBuilder<B>) => DeploymentModelBuilder<C>,
211
+ op4: (input: DeploymentModelBuilder<C>) => DeploymentModelBuilder<D>,
212
+ op5: (input: DeploymentModelBuilder<D>) => DeploymentModelBuilder<E>,
213
+ op6: (input: DeploymentModelBuilder<E>) => DeploymentModelBuilder<F>,
214
+ op7: (input: DeploymentModelBuilder<F>) => DeploymentModelBuilder<G>,
215
+ op8: (input: DeploymentModelBuilder<G>) => DeploymentModelBuilder<H>,
216
+ op9: (input: DeploymentModelBuilder<H>) => DeploymentModelBuilder<I>,
217
+ op10: (input: DeploymentModelBuilder<I>) => DeploymentModelBuilder<J>
218
+ ): (builder: DeploymentModelBuilder<T>) => DeploymentModelBuilder<FromNested<T, J>>
219
+ }
@@ -0,0 +1,360 @@
1
+ import type { DeploymentElement, DeploymentRelation, Fqn } from '../types'
2
+ import type { AnyTypes, Invalid, Types } from './_types'
3
+ import type { Builder } from './Builder'
4
+ import type { AddDeploymentNode } from './Builder.deployment'
5
+
6
+ export interface DeploymentModelBuilder<T extends AnyTypes> {
7
+ addDeployment(node: DeploymentElement): Builder<T>
8
+ addDeploymentRelation(rel: Omit<DeploymentRelation, 'id'>): Builder<T>
9
+ /**
10
+ * Create a fully qualified name from an id (for nested models)
11
+ */
12
+ fqn(id: string): Fqn
13
+ }
14
+ export function deployment<
15
+ A extends AnyTypes,
16
+ B extends AnyTypes
17
+ >(
18
+ op1: (input: DeploymentModelBuilder<A>) => DeploymentModelBuilder<B>
19
+ ): (input: Builder<A>) => Builder<B>
20
+ export function deployment<
21
+ A extends AnyTypes,
22
+ B extends AnyTypes,
23
+ C extends AnyTypes
24
+ >(
25
+ op1: (input: DeploymentModelBuilder<A>) => DeploymentModelBuilder<B>,
26
+ op2: (input: DeploymentModelBuilder<B>) => DeploymentModelBuilder<C>
27
+ ): (input: Builder<A>) => Builder<C>
28
+ export function deployment<
29
+ A extends AnyTypes,
30
+ B extends AnyTypes,
31
+ C extends AnyTypes,
32
+ D extends AnyTypes
33
+ >(
34
+ op1: (input: DeploymentModelBuilder<A>) => DeploymentModelBuilder<B>,
35
+ op2: (input: DeploymentModelBuilder<B>) => DeploymentModelBuilder<C>,
36
+ op3: (input: DeploymentModelBuilder<C>) => DeploymentModelBuilder<D>
37
+ ): (input: Builder<A>) => Builder<D>
38
+ export function deployment<
39
+ A extends AnyTypes,
40
+ B extends AnyTypes,
41
+ C extends AnyTypes,
42
+ D extends AnyTypes,
43
+ E extends AnyTypes
44
+ >(
45
+ op1: (input: DeploymentModelBuilder<A>) => DeploymentModelBuilder<B>,
46
+ op2: (input: DeploymentModelBuilder<B>) => DeploymentModelBuilder<C>,
47
+ op3: (input: DeploymentModelBuilder<C>) => DeploymentModelBuilder<D>,
48
+ op4: (input: DeploymentModelBuilder<D>) => DeploymentModelBuilder<E>
49
+ ): (input: Builder<A>) => Builder<E>
50
+ export function deployment<
51
+ A extends AnyTypes,
52
+ B extends AnyTypes,
53
+ C extends AnyTypes,
54
+ D extends AnyTypes,
55
+ E extends AnyTypes,
56
+ F extends AnyTypes
57
+ >(
58
+ op1: (input: DeploymentModelBuilder<A>) => DeploymentModelBuilder<B>,
59
+ op2: (input: DeploymentModelBuilder<B>) => DeploymentModelBuilder<C>,
60
+ op3: (input: DeploymentModelBuilder<C>) => DeploymentModelBuilder<D>,
61
+ op4: (input: DeploymentModelBuilder<D>) => DeploymentModelBuilder<E>,
62
+ op5: (input: DeploymentModelBuilder<E>) => DeploymentModelBuilder<F>
63
+ ): (input: Builder<A>) => Builder<F>
64
+ export function deployment<
65
+ A extends AnyTypes,
66
+ B extends AnyTypes,
67
+ C extends AnyTypes,
68
+ D extends AnyTypes,
69
+ E extends AnyTypes,
70
+ F extends AnyTypes,
71
+ G extends AnyTypes
72
+ >(
73
+ op1: (input: DeploymentModelBuilder<A>) => DeploymentModelBuilder<B>,
74
+ op2: (input: DeploymentModelBuilder<B>) => DeploymentModelBuilder<C>,
75
+ op3: (input: DeploymentModelBuilder<C>) => DeploymentModelBuilder<D>,
76
+ op4: (input: DeploymentModelBuilder<D>) => DeploymentModelBuilder<E>,
77
+ op5: (input: DeploymentModelBuilder<E>) => DeploymentModelBuilder<F>,
78
+ op6: (input: DeploymentModelBuilder<F>) => DeploymentModelBuilder<G>
79
+ ): (input: Builder<A>) => Builder<G>
80
+ export function deployment<
81
+ A extends AnyTypes,
82
+ B extends AnyTypes,
83
+ C extends AnyTypes,
84
+ D extends AnyTypes,
85
+ E extends AnyTypes,
86
+ F extends AnyTypes,
87
+ G extends AnyTypes,
88
+ H extends AnyTypes
89
+ >(
90
+ op1: (input: DeploymentModelBuilder<A>) => DeploymentModelBuilder<B>,
91
+ op2: (input: DeploymentModelBuilder<B>) => DeploymentModelBuilder<C>,
92
+ op3: (input: DeploymentModelBuilder<C>) => DeploymentModelBuilder<D>,
93
+ op4: (input: DeploymentModelBuilder<D>) => DeploymentModelBuilder<E>,
94
+ op5: (input: DeploymentModelBuilder<E>) => DeploymentModelBuilder<F>,
95
+ op6: (input: DeploymentModelBuilder<F>) => DeploymentModelBuilder<G>,
96
+ op7: (input: DeploymentModelBuilder<G>) => DeploymentModelBuilder<H>
97
+ ): (input: Builder<A>) => Builder<H>
98
+ export function deployment<
99
+ A extends AnyTypes,
100
+ B extends AnyTypes,
101
+ C extends AnyTypes,
102
+ D extends AnyTypes,
103
+ E extends AnyTypes,
104
+ F extends AnyTypes,
105
+ G extends AnyTypes,
106
+ H extends AnyTypes,
107
+ I extends AnyTypes
108
+ >(
109
+ op1: (input: DeploymentModelBuilder<A>) => DeploymentModelBuilder<B>,
110
+ op2: (input: DeploymentModelBuilder<B>) => DeploymentModelBuilder<C>,
111
+ op3: (input: DeploymentModelBuilder<C>) => DeploymentModelBuilder<D>,
112
+ op4: (input: DeploymentModelBuilder<D>) => DeploymentModelBuilder<E>,
113
+ op5: (input: DeploymentModelBuilder<E>) => DeploymentModelBuilder<F>,
114
+ op6: (input: DeploymentModelBuilder<F>) => DeploymentModelBuilder<G>,
115
+ op7: (input: DeploymentModelBuilder<G>) => DeploymentModelBuilder<H>,
116
+ op8: (input: DeploymentModelBuilder<H>) => DeploymentModelBuilder<I>
117
+ ): (input: Builder<A>) => Builder<I>
118
+ export function deployment<
119
+ A extends AnyTypes,
120
+ B extends AnyTypes,
121
+ C extends AnyTypes,
122
+ D extends AnyTypes,
123
+ E extends AnyTypes,
124
+ F extends AnyTypes,
125
+ G extends AnyTypes,
126
+ H extends AnyTypes,
127
+ I extends AnyTypes,
128
+ J extends AnyTypes
129
+ >(
130
+ op1: (input: DeploymentModelBuilder<A>) => DeploymentModelBuilder<B>,
131
+ op2: (input: DeploymentModelBuilder<B>) => DeploymentModelBuilder<C>,
132
+ op3: (input: DeploymentModelBuilder<C>) => DeploymentModelBuilder<D>,
133
+ op4: (input: DeploymentModelBuilder<D>) => DeploymentModelBuilder<E>,
134
+ op5: (input: DeploymentModelBuilder<E>) => DeploymentModelBuilder<F>,
135
+ op6: (input: DeploymentModelBuilder<F>) => DeploymentModelBuilder<G>,
136
+ op7: (input: DeploymentModelBuilder<G>) => DeploymentModelBuilder<H>,
137
+ op8: (input: DeploymentModelBuilder<H>) => DeploymentModelBuilder<I>,
138
+ op9: (input: DeploymentModelBuilder<I>) => DeploymentModelBuilder<J>
139
+ ): (input: Builder<A>) => Builder<J>
140
+ export function deployment<
141
+ A extends AnyTypes,
142
+ B extends AnyTypes,
143
+ C extends AnyTypes,
144
+ D extends AnyTypes,
145
+ E extends AnyTypes,
146
+ F extends AnyTypes,
147
+ G extends AnyTypes,
148
+ H extends AnyTypes,
149
+ I extends AnyTypes,
150
+ J extends AnyTypes,
151
+ K extends AnyTypes
152
+ >(
153
+ op1: (input: DeploymentModelBuilder<A>) => DeploymentModelBuilder<B>,
154
+ op2: (input: DeploymentModelBuilder<B>) => DeploymentModelBuilder<C>,
155
+ op3: (input: DeploymentModelBuilder<C>) => DeploymentModelBuilder<D>,
156
+ op4: (input: DeploymentModelBuilder<D>) => DeploymentModelBuilder<E>,
157
+ op5: (input: DeploymentModelBuilder<E>) => DeploymentModelBuilder<F>,
158
+ op6: (input: DeploymentModelBuilder<F>) => DeploymentModelBuilder<G>,
159
+ op7: (input: DeploymentModelBuilder<G>) => DeploymentModelBuilder<H>,
160
+ op8: (input: DeploymentModelBuilder<H>) => DeploymentModelBuilder<I>,
161
+ op9: (input: DeploymentModelBuilder<I>) => DeploymentModelBuilder<J>,
162
+ op10: (input: DeploymentModelBuilder<J>) => DeploymentModelBuilder<K>
163
+ ): (input: Builder<A>) => Builder<K>
164
+ export function deployment<
165
+ A extends AnyTypes,
166
+ B extends AnyTypes,
167
+ C extends AnyTypes,
168
+ D extends AnyTypes,
169
+ E extends AnyTypes,
170
+ F extends AnyTypes,
171
+ G extends AnyTypes,
172
+ H extends AnyTypes,
173
+ I extends AnyTypes,
174
+ J extends AnyTypes,
175
+ K extends AnyTypes,
176
+ L extends AnyTypes
177
+ >(
178
+ op1: (input: DeploymentModelBuilder<A>) => DeploymentModelBuilder<B>,
179
+ op2: (input: DeploymentModelBuilder<B>) => DeploymentModelBuilder<C>,
180
+ op3: (input: DeploymentModelBuilder<C>) => DeploymentModelBuilder<D>,
181
+ op4: (input: DeploymentModelBuilder<D>) => DeploymentModelBuilder<E>,
182
+ op5: (input: DeploymentModelBuilder<E>) => DeploymentModelBuilder<F>,
183
+ op6: (input: DeploymentModelBuilder<F>) => DeploymentModelBuilder<G>,
184
+ op7: (input: DeploymentModelBuilder<G>) => DeploymentModelBuilder<H>,
185
+ op8: (input: DeploymentModelBuilder<H>) => DeploymentModelBuilder<I>,
186
+ op9: (input: DeploymentModelBuilder<I>) => DeploymentModelBuilder<J>,
187
+ op10: (input: DeploymentModelBuilder<J>) => DeploymentModelBuilder<K>,
188
+ op11: (input: DeploymentModelBuilder<K>) => DeploymentModelBuilder<L>
189
+ ): (input: Builder<A>) => Builder<L>
190
+ export function deployment<
191
+ A extends AnyTypes,
192
+ B extends AnyTypes,
193
+ C extends AnyTypes,
194
+ D extends AnyTypes,
195
+ E extends AnyTypes,
196
+ F extends AnyTypes,
197
+ G extends AnyTypes,
198
+ H extends AnyTypes,
199
+ I extends AnyTypes,
200
+ J extends AnyTypes,
201
+ K extends AnyTypes,
202
+ L extends AnyTypes,
203
+ M extends AnyTypes
204
+ >(
205
+ op1: (input: DeploymentModelBuilder<A>) => DeploymentModelBuilder<B>,
206
+ op2: (input: DeploymentModelBuilder<B>) => DeploymentModelBuilder<C>,
207
+ op3: (input: DeploymentModelBuilder<C>) => DeploymentModelBuilder<D>,
208
+ op4: (input: DeploymentModelBuilder<D>) => DeploymentModelBuilder<E>,
209
+ op5: (input: DeploymentModelBuilder<E>) => DeploymentModelBuilder<F>,
210
+ op6: (input: DeploymentModelBuilder<F>) => DeploymentModelBuilder<G>,
211
+ op7: (input: DeploymentModelBuilder<G>) => DeploymentModelBuilder<H>,
212
+ op8: (input: DeploymentModelBuilder<H>) => DeploymentModelBuilder<I>,
213
+ op9: (input: DeploymentModelBuilder<I>) => DeploymentModelBuilder<J>,
214
+ op10: (input: DeploymentModelBuilder<J>) => DeploymentModelBuilder<K>,
215
+ op11: (input: DeploymentModelBuilder<K>) => DeploymentModelBuilder<L>,
216
+ op12: (input: DeploymentModelBuilder<L>) => DeploymentModelBuilder<M>
217
+ ): (input: Builder<A>) => Builder<M>
218
+ export function deployment<
219
+ A extends AnyTypes,
220
+ B extends AnyTypes,
221
+ C extends AnyTypes,
222
+ D extends AnyTypes,
223
+ E extends AnyTypes,
224
+ F extends AnyTypes,
225
+ G extends AnyTypes,
226
+ H extends AnyTypes,
227
+ I extends AnyTypes,
228
+ J extends AnyTypes,
229
+ K extends AnyTypes,
230
+ L extends AnyTypes,
231
+ M extends AnyTypes,
232
+ N extends AnyTypes
233
+ >(
234
+ op1: (input: DeploymentModelBuilder<A>) => DeploymentModelBuilder<B>,
235
+ op2: (input: DeploymentModelBuilder<B>) => DeploymentModelBuilder<C>,
236
+ op3: (input: DeploymentModelBuilder<C>) => DeploymentModelBuilder<D>,
237
+ op4: (input: DeploymentModelBuilder<D>) => DeploymentModelBuilder<E>,
238
+ op5: (input: DeploymentModelBuilder<E>) => DeploymentModelBuilder<F>,
239
+ op6: (input: DeploymentModelBuilder<F>) => DeploymentModelBuilder<G>,
240
+ op7: (input: DeploymentModelBuilder<G>) => DeploymentModelBuilder<H>,
241
+ op8: (input: DeploymentModelBuilder<H>) => DeploymentModelBuilder<I>,
242
+ op9: (input: DeploymentModelBuilder<I>) => DeploymentModelBuilder<J>,
243
+ op10: (input: DeploymentModelBuilder<J>) => DeploymentModelBuilder<K>,
244
+ op11: (input: DeploymentModelBuilder<K>) => DeploymentModelBuilder<L>,
245
+ op12: (input: DeploymentModelBuilder<L>) => DeploymentModelBuilder<M>,
246
+ op13: (input: DeploymentModelBuilder<M>) => DeploymentModelBuilder<N>
247
+ ): (input: Builder<A>) => Builder<N>
248
+ export function deployment<
249
+ A extends AnyTypes,
250
+ B extends AnyTypes,
251
+ C extends AnyTypes,
252
+ D extends AnyTypes,
253
+ E extends AnyTypes,
254
+ F extends AnyTypes,
255
+ G extends AnyTypes,
256
+ H extends AnyTypes,
257
+ I extends AnyTypes,
258
+ J extends AnyTypes,
259
+ K extends AnyTypes,
260
+ L extends AnyTypes,
261
+ M extends AnyTypes,
262
+ N extends AnyTypes,
263
+ O extends AnyTypes
264
+ >(
265
+ op1: (input: DeploymentModelBuilder<A>) => DeploymentModelBuilder<B>,
266
+ op2: (input: DeploymentModelBuilder<B>) => DeploymentModelBuilder<C>,
267
+ op3: (input: DeploymentModelBuilder<C>) => DeploymentModelBuilder<D>,
268
+ op4: (input: DeploymentModelBuilder<D>) => DeploymentModelBuilder<E>,
269
+ op5: (input: DeploymentModelBuilder<E>) => DeploymentModelBuilder<F>,
270
+ op6: (input: DeploymentModelBuilder<F>) => DeploymentModelBuilder<G>,
271
+ op7: (input: DeploymentModelBuilder<G>) => DeploymentModelBuilder<H>,
272
+ op8: (input: DeploymentModelBuilder<H>) => DeploymentModelBuilder<I>,
273
+ op9: (input: DeploymentModelBuilder<I>) => DeploymentModelBuilder<J>,
274
+ op10: (input: DeploymentModelBuilder<J>) => DeploymentModelBuilder<K>,
275
+ op11: (input: DeploymentModelBuilder<K>) => DeploymentModelBuilder<L>,
276
+ op12: (input: DeploymentModelBuilder<L>) => DeploymentModelBuilder<M>,
277
+ op13: (input: DeploymentModelBuilder<M>) => DeploymentModelBuilder<N>,
278
+ op14: (input: DeploymentModelBuilder<N>) => DeploymentModelBuilder<O>
279
+ ): (input: Builder<A>) => Builder<O>
280
+ export function deployment<
281
+ A extends AnyTypes,
282
+ B extends AnyTypes,
283
+ C extends AnyTypes,
284
+ D extends AnyTypes,
285
+ E extends AnyTypes,
286
+ F extends AnyTypes,
287
+ G extends AnyTypes,
288
+ H extends AnyTypes,
289
+ I extends AnyTypes,
290
+ J extends AnyTypes,
291
+ K extends AnyTypes,
292
+ L extends AnyTypes,
293
+ M extends AnyTypes,
294
+ N extends AnyTypes,
295
+ O extends AnyTypes,
296
+ P extends AnyTypes
297
+ >(
298
+ op1: (input: DeploymentModelBuilder<A>) => DeploymentModelBuilder<B>,
299
+ op2: (input: DeploymentModelBuilder<B>) => DeploymentModelBuilder<C>,
300
+ op3: (input: DeploymentModelBuilder<C>) => DeploymentModelBuilder<D>,
301
+ op4: (input: DeploymentModelBuilder<D>) => DeploymentModelBuilder<E>,
302
+ op5: (input: DeploymentModelBuilder<E>) => DeploymentModelBuilder<F>,
303
+ op6: (input: DeploymentModelBuilder<F>) => DeploymentModelBuilder<G>,
304
+ op7: (input: DeploymentModelBuilder<G>) => DeploymentModelBuilder<H>,
305
+ op8: (input: DeploymentModelBuilder<H>) => DeploymentModelBuilder<I>,
306
+ op9: (input: DeploymentModelBuilder<I>) => DeploymentModelBuilder<J>,
307
+ op10: (input: DeploymentModelBuilder<J>) => DeploymentModelBuilder<K>,
308
+ op11: (input: DeploymentModelBuilder<K>) => DeploymentModelBuilder<L>,
309
+ op12: (input: DeploymentModelBuilder<L>) => DeploymentModelBuilder<M>,
310
+ op13: (input: DeploymentModelBuilder<M>) => DeploymentModelBuilder<N>,
311
+ op14: (input: DeploymentModelBuilder<N>) => DeploymentModelBuilder<O>,
312
+ op15: (input: DeploymentModelBuilder<O>) => DeploymentModelBuilder<P>
313
+ ): (input: Builder<A>) => Builder<P>
314
+
315
+ export function deployment(...ops: any[]) {
316
+ return (input: Builder<any>) => {
317
+ let builder = input
318
+ for (const op of ops) {
319
+ builder = op(builder)
320
+ }
321
+ return builder
322
+ }
323
+ }
324
+
325
+ export type AddDeploymentRelation<Props = unknown> = <
326
+ T extends AnyTypes,
327
+ Source extends string & T['DeploymentFqn'],
328
+ Target extends string & T['DeploymentFqn']
329
+ >(
330
+ source: Source,
331
+ target: Target,
332
+ titleOrProps?: string | Props
333
+ ) => (builder: DeploymentModelBuilder<T>) => DeploymentModelBuilder<T>
334
+
335
+ export type AddDeployedInstance<Props = unknown> = <
336
+ const Id extends string,
337
+ T extends AnyTypes,
338
+ To extends string & T['Fqn']
339
+ >(
340
+ id: Id,
341
+ to: To,
342
+ titleOrProps?: string | Props | undefined
343
+ ) => (builder: DeploymentModelBuilder<T>) => DeploymentModelBuilder<Types.AddDeploymentFqn<T, Id>>
344
+
345
+ type AddDeploymentNodeHelper<T = unknown> = <const Id extends string>(
346
+ id: Id,
347
+ titleOrProps?: string | T
348
+ ) => AddDeploymentNode<Id>
349
+
350
+ export type AddDeploymentNodeHelpers<T extends AnyTypes> = T extends
351
+ Types<any, any, any, any, any, any, infer Kinds extends string, any> ? {
352
+ [Kind in Kinds]: AddDeploymentNodeHelper<T['NewDeploymentNodeProps']>
353
+ }
354
+ : Invalid<'No Deployment Kinds'>
355
+
356
+ export type DeloymentModelHelpers<T extends AnyTypes> = AddDeploymentNodeHelpers<T> & {
357
+ instanceOf: AddDeployedInstance<T['NewDeploymentNodeProps']>
358
+ rel: AddDeploymentRelation<T['NewRelationshipProps']>
359
+ deployment: typeof deployment
360
+ }
@@ -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
@@ -208,14 +217,3 @@ export interface AddElement<Id extends string> {
208
217
  op10: (input: ModelBuilder<I>) => ModelBuilder<J>
209
218
  ): (builder: ModelBuilder<T>) => ModelBuilder<FromNested<T, J>>
210
219
  }
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'>
@@ -1,7 +1,7 @@
1
1
  import type { Element, Fqn, Relation } from '../types'
2
- import type { AnyTypes, AnyTypesNested, Types, TypesNested } from './_types'
2
+ import type { AnyTypes, AnyTypesNested, Invalid, Types } from './_types'
3
3
  import type { Builder } from './Builder'
4
- import type { AddElementHelpers } from './Builder.element'
4
+ import type { AddElement } from './Builder.element'
5
5
 
6
6
  export interface ModelBuilder<T extends AnyTypes> {
7
7
  addElement(element: Element): Builder<T>
@@ -339,6 +339,17 @@ export type NestedRelationshipHelper<Props = unknown> = <T extends AnyTypesNeste
339
339
  titleOrProps?: string | Props
340
340
  ) => (builder: ModelBuilder<T>) => ModelBuilder<T>
341
341
 
342
+ type AddElementHelper<T = unknown> = <const Id extends string>(
343
+ id: Id,
344
+ titleOrProps?: string | T
345
+ ) => AddElement<Id>
346
+
347
+ export type AddElementHelpers<T extends AnyTypes> = T extends
348
+ Types<infer Kinds extends string, any, any, any, any, any, any, any> ? {
349
+ [Kind in Kinds]: AddElementHelper<T['NewElementProps']>
350
+ }
351
+ : Invalid<'No Element Kinds'>
352
+
342
353
  export type ModelHelpers<T extends AnyTypes> = AddElementHelpers<T> & {
343
354
  model: typeof model
344
355
  rel: RelationshipHelper<T['NewRelationshipProps']>