@likec4/core 1.18.0 → 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 (176) 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 +9 -78
  6. package/dist/compute-view/index.d.ts +9 -78
  7. package/dist/compute-view/index.js +78 -0
  8. package/dist/index.d.mts +9 -730
  9. package/dist/index.d.ts +9 -730
  10. package/dist/{index.mjs → index.js} +7 -784
  11. package/dist/model/index.d.mts +218 -606
  12. package/dist/model/index.d.ts +218 -606
  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.DMYY7C8s.d.mts → core.C05RDLhi.d.ts} +179 -230
  18. package/dist/shared/{core.DMYY7C8s.d.ts → core.CmYMqgha.d.mts} +179 -230
  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/view.CyZrG8BJ.js +354 -0
  26. package/dist/types/index.d.mts +4 -2
  27. package/dist/types/index.d.ts +4 -2
  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 +47 -33
  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 +25 -20
  36. package/src/builder/Builder.deploymentModel.ts +80 -55
  37. package/src/builder/Builder.element.ts +2 -0
  38. package/src/builder/Builder.model.ts +57 -43
  39. package/src/builder/Builder.ts +412 -431
  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 +28 -5
  49. package/src/builder/index.ts +10 -4
  50. package/src/colors/index.ts +2 -2
  51. package/src/compute-view/compute-view.ts +45 -54
  52. package/src/compute-view/deployment-view/__test__/TestHelper.ts +236 -0
  53. package/src/compute-view/deployment-view/__test__/fixture.ts +50 -62
  54. package/src/compute-view/deployment-view/_types.ts +26 -18
  55. package/src/compute-view/deployment-view/clean-connections.ts +173 -164
  56. package/src/compute-view/deployment-view/compute.ts +51 -37
  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 +183 -76
  61. package/src/compute-view/deployment-view/predicates/relation-in-out.ts +38 -20
  62. package/src/compute-view/deployment-view/predicates/relation-incoming.ts +72 -23
  63. package/src/compute-view/deployment-view/predicates/relation-outgoing.ts +61 -22
  64. package/src/compute-view/deployment-view/predicates/wildcard.ts +15 -15
  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 +95 -31
  69. package/src/compute-view/dynamic-view/__test__/fixture.ts +4 -4
  70. package/src/compute-view/dynamic-view/compute.ts +59 -45
  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 +64 -62
  73. package/src/compute-view/element-view/__test__/fixture.ts +147 -117
  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 +264 -683
  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 +3 -4
  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/buildComputedNodes.ts +4 -4
  101. package/src/compute-view/utils/elementExpressionToPredicate.ts +1 -3
  102. package/src/compute-view/utils/link-nodes-with-edges.ts +3 -7
  103. package/src/compute-view/utils/{derive-edge-props-from-relationships.ts → merge-props-from-relationships.ts} +54 -23
  104. package/src/compute-view/utils/relationExpressionToPredicates.ts +2 -2
  105. package/src/compute-view/utils/resolve-extended-views.ts +44 -40
  106. package/src/compute-view/utils/resolve-global-rules.ts +6 -6
  107. package/src/compute-view/utils/topological-sort.ts +167 -71
  108. package/src/compute-view/utils/with-readable-edges.ts +14 -9
  109. package/src/index.ts +22 -16
  110. package/src/model/DeploymentElementModel.ts +150 -85
  111. package/src/model/DeploymentModel.ts +27 -21
  112. package/src/model/ElementModel.ts +51 -25
  113. package/src/model/LikeC4Model.test-d.ts +4 -3
  114. package/src/model/LikeC4Model.ts +98 -42
  115. package/src/model/RelationModel.ts +5 -4
  116. package/src/model/__test__/fixture.ts +5 -9
  117. package/src/model/connection/Connection.ts +72 -0
  118. package/src/model/connection/deployment/DeploymentConnectionModel.ts +178 -0
  119. package/src/model/connection/{deployment.ts → deployment/find.ts} +14 -18
  120. package/src/model/connection/deployment/index.ts +8 -0
  121. package/src/model/connection/index.ts +22 -0
  122. package/src/model/connection/model/ConnectionModel.ts +157 -0
  123. package/src/model/connection/{model.ts → model/find.ts} +43 -49
  124. package/src/model/connection/model/index.ts +8 -0
  125. package/src/model/connection/ops.ts +274 -0
  126. package/src/model/guards.ts +9 -0
  127. package/src/model/index.ts +45 -3
  128. package/src/model/types.ts +35 -18
  129. package/src/model/view/EdgeModel.ts +6 -6
  130. package/src/model/view/LikeC4ViewModel.ts +14 -8
  131. package/src/model/view/NodeModel.ts +6 -5
  132. package/src/types/_common.ts +53 -1
  133. package/src/types/deployments.ts +88 -156
  134. package/src/types/element.ts +2 -2
  135. package/src/types/expression-v2.ts +172 -0
  136. package/src/types/expression.ts +9 -5
  137. package/src/types/global.ts +3 -3
  138. package/src/types/index.ts +220 -13
  139. package/src/types/model.ts +28 -24
  140. package/src/types/operators.ts +1 -1
  141. package/src/types/relation.ts +14 -10
  142. package/src/types/theme.ts +0 -1
  143. package/src/types/view.ts +20 -18
  144. package/src/utils/const.ts +1 -0
  145. package/src/utils/fqn.ts +140 -49
  146. package/src/utils/getOrCreate.ts +1 -1
  147. package/src/utils/index.ts +74 -9
  148. package/src/utils/iterable/_types.ts +5 -0
  149. package/src/utils/iterable/filter.ts +55 -0
  150. package/src/utils/iterable/flat.ts +17 -0
  151. package/src/utils/iterable/index.ts +12 -0
  152. package/src/utils/iterable/map.ts +40 -0
  153. package/src/utils/iterable/reduce.ts +24 -0
  154. package/src/utils/iterable/some.ts +36 -0
  155. package/src/utils/iterable/to.ts +19 -0
  156. package/src/utils/iterable/unique.ts +29 -0
  157. package/src/utils/relations.ts +3 -64
  158. package/src/utils/set.ts +11 -9
  159. package/src/utils/string-hash.ts +1 -1
  160. package/dist/compute-view/index.mjs +0 -79
  161. package/dist/model/index.mjs +0 -2
  162. package/dist/shared/core.BBgiAAv1.mjs +0 -144
  163. package/dist/shared/core.BPyJvuMU.mjs +0 -2420
  164. package/dist/shared/core.BQ4AbfvB.mjs +0 -9228
  165. package/dist/shared/core.k12s_keD.mjs +0 -203
  166. package/dist/types/index.mjs +0 -21
  167. package/src/builder/Builder.test-d.ts +0 -124
  168. package/src/builder/Builder.view.ts +0 -543
  169. package/src/compute-view/LikeC4ModelGraph.ts +0 -330
  170. package/src/compute-view/deployment-view/Memory.ts +0 -108
  171. package/src/compute-view/deployment-view/Stage.ts +0 -145
  172. package/src/compute-view/deployment-view/predicates/deployment-ref.ts +0 -146
  173. package/src/compute-view/element-view/predicates.ts +0 -517
  174. package/src/compute-view/utils/sortNodes.ts +0 -101
  175. package/src/model/connection/ConnectionModel.ts +0 -94
  176. package/src/model/connection/DeploymentConnectionModel.ts +0 -99
@@ -0,0 +1,175 @@
1
+ import { expectTypeOf, test } from 'vitest'
2
+ import type { LikeC4Model } from '../model/LikeC4Model'
3
+ import type { ParsedLikeC4Model } from '../types'
4
+ import { Builder } from './Builder'
5
+
6
+ test('Builder types - style 2', () => {
7
+ const m = Builder
8
+ .specification({
9
+ elements: {
10
+ actor: {
11
+ style: {
12
+ shape: 'person',
13
+ },
14
+ },
15
+ system: {},
16
+ component: {},
17
+ },
18
+ deployments: {
19
+ env: {},
20
+ vm: {},
21
+ },
22
+ relationships: {
23
+ like: {},
24
+ dislike: {},
25
+ },
26
+ tags: ['tag1', 'tag2', 'tag1'],
27
+ })
28
+ .model(({ actor, system, component, relTo }, _) =>
29
+ _(
30
+ actor('alice'),
31
+ actor('bob'),
32
+ system('cloud').with(
33
+ component('backend').with(
34
+ component('api'),
35
+ component('db'),
36
+ ),
37
+ component('frontend').with(
38
+ // @ts-expect-error
39
+ relTo('non-existing'),
40
+ ),
41
+ ),
42
+ )
43
+ )
44
+ .deployment(({ env, vm, instanceOf }, _) =>
45
+ _(
46
+ env('prod').with(
47
+ vm('vm1'),
48
+ vm('vm2'),
49
+ ),
50
+ env('dev').with(
51
+ vm('vm1'),
52
+ instanceOf('cloud.backend.api'),
53
+ instanceOf(
54
+ 'wrong',
55
+ // @ts-expect-error
56
+ 'non-existing',
57
+ ),
58
+ vm('vm2'),
59
+ ),
60
+ )
61
+ )
62
+ // Test Element View
63
+ .views(({ view, $include, $style }, _) =>
64
+ _(
65
+ // rules inside
66
+ view(
67
+ 'view',
68
+ // @ts-expect-error
69
+ $include('wrong'),
70
+ // @ts-expect-error #tag22 is not defined
71
+ $include('cloud.backend', {
72
+ where: 'tag is #tag22',
73
+ }),
74
+ ),
75
+ // using with
76
+ view('view').with(
77
+ // @ts-expect-error
78
+ $include('wrong'),
79
+ // @ts-expect-error
80
+ $style('wrong', { color: 'red' }),
81
+ ),
82
+ )
83
+ )
84
+ // Test Element View Of
85
+ .views(({ viewOf, $rules, $include }, _) =>
86
+ _(
87
+ viewOf('view-of', 'cloud.backend'),
88
+ // @ts-expect-error
89
+ viewOf('view-of', 'wrong'),
90
+ viewOf(
91
+ 'view-of',
92
+ 'cloud.backend.api',
93
+ $rules(
94
+ // @ts-expect-error
95
+ $include('wrong'),
96
+ ),
97
+ ),
98
+ viewOf(
99
+ 'view-of',
100
+ 'cloud.backend.api',
101
+ $rules(
102
+ // @ts-expect-error
103
+ $include('wrong'),
104
+ ),
105
+ ).with(
106
+ $include('* -> alice.*'),
107
+ // @ts-expect-error
108
+ $include('wrong'),
109
+ ),
110
+ viewOf(
111
+ 'view-of',
112
+ // @ts-expect-error
113
+ 'cloud.backensd.api',
114
+ 'Title',
115
+ ).with(
116
+ $include('* -> alice.*'),
117
+ // @ts-expect-error
118
+ $include('wrong'),
119
+ ),
120
+ )
121
+ )
122
+ // Test Deployment View
123
+ .views(({ deploymentView, $rules, $include }, _) =>
124
+ _(
125
+ deploymentView(
126
+ 'deployment',
127
+ $rules(
128
+ // @ts-expect-error
129
+ $include('pr'),
130
+ ),
131
+ ),
132
+ deploymentView(
133
+ 'deployment',
134
+ 'Title',
135
+ $rules(
136
+ // @ts-expect-error
137
+ $include('pr'),
138
+ ),
139
+ ),
140
+ deploymentView('deployment').with(
141
+ // @ts-expect-error
142
+ $include('pr'),
143
+ ),
144
+ )
145
+ )
146
+
147
+ expectTypeOf(m.Types.Fqn).toEqualTypeOf(
148
+ '' as 'alice' | 'bob' | 'cloud' | 'cloud.backend' | 'cloud.backend.api' | 'cloud.backend.db' | 'cloud.frontend',
149
+ )
150
+ expectTypeOf(m.Types.ViewId).toEqualTypeOf(
151
+ '' as 'view' | 'view-of' | 'deployment',
152
+ )
153
+ expectTypeOf(m.Types.DeploymentFqn).toEqualTypeOf(
154
+ '' as 'prod' | 'dev' | 'prod.vm1' | 'prod.vm2' | 'dev.vm1' | 'dev.vm2' | 'dev.api' | 'dev.wrong',
155
+ )
156
+
157
+ expectTypeOf(m.build()).toEqualTypeOf(
158
+ {} as ParsedLikeC4Model<
159
+ 'actor' | 'system' | 'component',
160
+ 'like' | 'dislike',
161
+ 'tag1' | 'tag2',
162
+ 'alice' | 'bob' | 'cloud' | 'cloud.backend' | 'cloud.backend.api' | 'cloud.backend.db' | 'cloud.frontend',
163
+ 'view' | 'view-of' | 'deployment',
164
+ 'prod' | 'dev' | 'prod.vm1' | 'prod.vm2' | 'dev.vm1' | 'dev.vm2' | 'dev.api' | 'dev.wrong'
165
+ >,
166
+ )
167
+
168
+ expectTypeOf(m.toLikeC4Model()).toEqualTypeOf(
169
+ {} as LikeC4Model.Computed<
170
+ 'alice' | 'bob' | 'cloud' | 'cloud.backend' | 'cloud.backend.api' | 'cloud.backend.db' | 'cloud.frontend',
171
+ 'prod' | 'dev' | 'prod.vm1' | 'prod.vm2' | 'dev.vm1' | 'dev.vm2' | 'dev.api' | 'dev.wrong',
172
+ 'view' | 'view-of' | 'deployment'
173
+ >,
174
+ )
175
+ })
@@ -1,5 +1,6 @@
1
1
  import type { AnyTypes, Types, TypesNested } from './_types'
2
2
  import type { DeploymentModelBuilder } from './Builder.deploymentModel'
3
+ import type { ModelBuilder } from './Builder.model'
3
4
 
4
5
  type ToNested<T, Id extends string> = T extends TypesNested<infer P, any, any, any, any, any, any, any, infer F>
5
6
  ? TypesNested<
@@ -57,31 +58,35 @@ type FromNested<T extends AnyTypes, N> = N extends TypesNested<any, any, any, an
57
58
  export interface AddDeploymentNode<Id extends string> {
58
59
  <T extends AnyTypes>(builder: DeploymentModelBuilder<T>): DeploymentModelBuilder<Types.AddDeploymentFqn<T, Id>>
59
60
 
61
+ with<T extends AnyTypes>(): (
62
+ builder: DeploymentModelBuilder<T>,
63
+ ) => DeploymentModelBuilder<Types.AddDeploymentFqn<T, Id>>
64
+
60
65
  with<
61
66
  T extends AnyTypes,
62
- A extends AnyTypes
67
+ A extends AnyTypes,
63
68
  >(
64
- op1: (input: DeploymentModelBuilder<ToNested<T, Id>>) => DeploymentModelBuilder<A>
69
+ op1: (input: DeploymentModelBuilder<ToNested<T, Id>>) => DeploymentModelBuilder<A>,
65
70
  ): (builder: DeploymentModelBuilder<T>) => DeploymentModelBuilder<FromNested<T, A>>
66
71
 
67
72
  with<
68
73
  T extends AnyTypes,
69
74
  A extends AnyTypes,
70
- B extends AnyTypes
75
+ B extends AnyTypes,
71
76
  >(
72
77
  op1: (input: DeploymentModelBuilder<ToNested<T, Id>>) => DeploymentModelBuilder<A>,
73
- op2: (input: DeploymentModelBuilder<A>) => DeploymentModelBuilder<B>
78
+ op2: (input: DeploymentModelBuilder<A>) => DeploymentModelBuilder<B>,
74
79
  ): (builder: DeploymentModelBuilder<T>) => DeploymentModelBuilder<FromNested<T, B>>
75
80
 
76
81
  with<
77
82
  T extends AnyTypes,
78
83
  A extends AnyTypes,
79
84
  B extends AnyTypes,
80
- C extends AnyTypes
85
+ C extends AnyTypes,
81
86
  >(
82
87
  op1: (input: DeploymentModelBuilder<ToNested<T, Id>>) => DeploymentModelBuilder<A>,
83
88
  op2: (input: DeploymentModelBuilder<A>) => DeploymentModelBuilder<B>,
84
- op3: (input: DeploymentModelBuilder<B>) => DeploymentModelBuilder<C>
89
+ op3: (input: DeploymentModelBuilder<B>) => DeploymentModelBuilder<C>,
85
90
  ): (builder: DeploymentModelBuilder<T>) => DeploymentModelBuilder<FromNested<T, C>>
86
91
 
87
92
  with<
@@ -89,12 +94,12 @@ export interface AddDeploymentNode<Id extends string> {
89
94
  A extends AnyTypes,
90
95
  B extends AnyTypes,
91
96
  C extends AnyTypes,
92
- D extends AnyTypes
97
+ D extends AnyTypes,
93
98
  >(
94
99
  op1: (input: DeploymentModelBuilder<ToNested<T, Id>>) => DeploymentModelBuilder<A>,
95
100
  op2: (input: DeploymentModelBuilder<A>) => DeploymentModelBuilder<B>,
96
101
  op3: (input: DeploymentModelBuilder<B>) => DeploymentModelBuilder<C>,
97
- op4: (input: DeploymentModelBuilder<C>) => DeploymentModelBuilder<D>
102
+ op4: (input: DeploymentModelBuilder<C>) => DeploymentModelBuilder<D>,
98
103
  ): (builder: DeploymentModelBuilder<T>) => DeploymentModelBuilder<FromNested<T, D>>
99
104
 
100
105
  with<
@@ -103,13 +108,13 @@ export interface AddDeploymentNode<Id extends string> {
103
108
  B extends AnyTypes,
104
109
  C extends AnyTypes,
105
110
  D extends AnyTypes,
106
- E extends AnyTypes
111
+ E extends AnyTypes,
107
112
  >(
108
113
  op1: (input: DeploymentModelBuilder<ToNested<T, Id>>) => DeploymentModelBuilder<A>,
109
114
  op2: (input: DeploymentModelBuilder<A>) => DeploymentModelBuilder<B>,
110
115
  op3: (input: DeploymentModelBuilder<B>) => DeploymentModelBuilder<C>,
111
116
  op4: (input: DeploymentModelBuilder<C>) => DeploymentModelBuilder<D>,
112
- op5: (input: DeploymentModelBuilder<D>) => DeploymentModelBuilder<E>
117
+ op5: (input: DeploymentModelBuilder<D>) => DeploymentModelBuilder<E>,
113
118
  ): (builder: DeploymentModelBuilder<T>) => DeploymentModelBuilder<FromNested<T, E>>
114
119
 
115
120
  with<
@@ -119,14 +124,14 @@ export interface AddDeploymentNode<Id extends string> {
119
124
  C extends AnyTypes,
120
125
  D extends AnyTypes,
121
126
  E extends AnyTypes,
122
- F extends AnyTypes
127
+ F extends AnyTypes,
123
128
  >(
124
129
  op1: (input: DeploymentModelBuilder<ToNested<T, Id>>) => DeploymentModelBuilder<A>,
125
130
  op2: (input: DeploymentModelBuilder<A>) => DeploymentModelBuilder<B>,
126
131
  op3: (input: DeploymentModelBuilder<B>) => DeploymentModelBuilder<C>,
127
132
  op4: (input: DeploymentModelBuilder<C>) => DeploymentModelBuilder<D>,
128
133
  op5: (input: DeploymentModelBuilder<D>) => DeploymentModelBuilder<E>,
129
- op6: (input: DeploymentModelBuilder<E>) => DeploymentModelBuilder<F>
134
+ op6: (input: DeploymentModelBuilder<E>) => DeploymentModelBuilder<F>,
130
135
  ): (builder: DeploymentModelBuilder<T>) => DeploymentModelBuilder<FromNested<T, F>>
131
136
 
132
137
  with<
@@ -137,7 +142,7 @@ export interface AddDeploymentNode<Id extends string> {
137
142
  D extends AnyTypes,
138
143
  E extends AnyTypes,
139
144
  F extends AnyTypes,
140
- G extends AnyTypes
145
+ G extends AnyTypes,
141
146
  >(
142
147
  op1: (input: DeploymentModelBuilder<ToNested<T, Id>>) => DeploymentModelBuilder<A>,
143
148
  op2: (input: DeploymentModelBuilder<A>) => DeploymentModelBuilder<B>,
@@ -145,7 +150,7 @@ export interface AddDeploymentNode<Id extends string> {
145
150
  op4: (input: DeploymentModelBuilder<C>) => DeploymentModelBuilder<D>,
146
151
  op5: (input: DeploymentModelBuilder<D>) => DeploymentModelBuilder<E>,
147
152
  op6: (input: DeploymentModelBuilder<E>) => DeploymentModelBuilder<F>,
148
- op7: (input: DeploymentModelBuilder<F>) => DeploymentModelBuilder<G>
153
+ op7: (input: DeploymentModelBuilder<F>) => DeploymentModelBuilder<G>,
149
154
  ): (builder: DeploymentModelBuilder<T>) => DeploymentModelBuilder<FromNested<T, G>>
150
155
 
151
156
  with<
@@ -157,7 +162,7 @@ export interface AddDeploymentNode<Id extends string> {
157
162
  E extends AnyTypes,
158
163
  F extends AnyTypes,
159
164
  G extends AnyTypes,
160
- H extends AnyTypes
165
+ H extends AnyTypes,
161
166
  >(
162
167
  op1: (input: DeploymentModelBuilder<ToNested<T, Id>>) => DeploymentModelBuilder<A>,
163
168
  op2: (input: DeploymentModelBuilder<A>) => DeploymentModelBuilder<B>,
@@ -166,7 +171,7 @@ export interface AddDeploymentNode<Id extends string> {
166
171
  op5: (input: DeploymentModelBuilder<D>) => DeploymentModelBuilder<E>,
167
172
  op6: (input: DeploymentModelBuilder<E>) => DeploymentModelBuilder<F>,
168
173
  op7: (input: DeploymentModelBuilder<F>) => DeploymentModelBuilder<G>,
169
- op8: (input: DeploymentModelBuilder<G>) => DeploymentModelBuilder<H>
174
+ op8: (input: DeploymentModelBuilder<G>) => DeploymentModelBuilder<H>,
170
175
  ): (builder: DeploymentModelBuilder<T>) => DeploymentModelBuilder<FromNested<T, H>>
171
176
 
172
177
  with<
@@ -179,7 +184,7 @@ export interface AddDeploymentNode<Id extends string> {
179
184
  F extends AnyTypes,
180
185
  G extends AnyTypes,
181
186
  H extends AnyTypes,
182
- I extends AnyTypes
187
+ I extends AnyTypes,
183
188
  >(
184
189
  op1: (input: DeploymentModelBuilder<ToNested<T, Id>>) => DeploymentModelBuilder<A>,
185
190
  op2: (input: DeploymentModelBuilder<A>) => DeploymentModelBuilder<B>,
@@ -189,7 +194,7 @@ export interface AddDeploymentNode<Id extends string> {
189
194
  op6: (input: DeploymentModelBuilder<E>) => DeploymentModelBuilder<F>,
190
195
  op7: (input: DeploymentModelBuilder<F>) => DeploymentModelBuilder<G>,
191
196
  op8: (input: DeploymentModelBuilder<G>) => DeploymentModelBuilder<H>,
192
- op9: (input: DeploymentModelBuilder<H>) => DeploymentModelBuilder<I>
197
+ op9: (input: DeploymentModelBuilder<H>) => DeploymentModelBuilder<I>,
193
198
  ): (builder: DeploymentModelBuilder<T>) => DeploymentModelBuilder<FromNested<T, I>>
194
199
 
195
200
  with<
@@ -203,7 +208,7 @@ export interface AddDeploymentNode<Id extends string> {
203
208
  G extends AnyTypes,
204
209
  H extends AnyTypes,
205
210
  I extends AnyTypes,
206
- J extends AnyTypes
211
+ J extends AnyTypes,
207
212
  >(
208
213
  op1: (input: DeploymentModelBuilder<ToNested<T, Id>>) => DeploymentModelBuilder<A>,
209
214
  op2: (input: DeploymentModelBuilder<A>) => DeploymentModelBuilder<B>,
@@ -214,6 +219,6 @@ export interface AddDeploymentNode<Id extends string> {
214
219
  op7: (input: DeploymentModelBuilder<F>) => DeploymentModelBuilder<G>,
215
220
  op8: (input: DeploymentModelBuilder<G>) => DeploymentModelBuilder<H>,
216
221
  op9: (input: DeploymentModelBuilder<H>) => DeploymentModelBuilder<I>,
217
- op10: (input: DeploymentModelBuilder<I>) => DeploymentModelBuilder<J>
222
+ op10: (input: DeploymentModelBuilder<I>) => DeploymentModelBuilder<J>,
218
223
  ): (builder: DeploymentModelBuilder<T>) => DeploymentModelBuilder<FromNested<T, J>>
219
224
  }
@@ -1,51 +1,54 @@
1
+ import type { LastArrayElement, Split } from 'type-fest'
1
2
  import type { DeploymentElement, DeploymentRelation, Fqn } from '../types'
2
- import type { AnyTypes, Invalid, Types } from './_types'
3
+ import type { AnyTypes, Invalid, Types, ValidId } from './_types'
3
4
  import type { Builder } from './Builder'
4
5
  import type { AddDeploymentNode } from './Builder.deployment'
5
6
 
6
- export interface DeploymentModelBuilder<T extends AnyTypes> {
7
- addDeployment(node: DeploymentElement): Builder<T>
8
- addDeploymentRelation(rel: Omit<DeploymentRelation, 'id'>): Builder<T>
7
+ export interface DeploymentModelBuilder<T extends AnyTypes> extends Builder<T> {
8
+ __addDeployment(node: DeploymentElement): Builder<T>
9
+ __addDeploymentRelation(rel: Omit<DeploymentRelation, 'id'>): Builder<T>
9
10
  /**
10
11
  * Create a fully qualified name from an id (for nested models)
11
12
  */
12
- fqn(id: string): Fqn
13
+ __fqn(id: string): Fqn
13
14
  }
15
+
16
+ export function deployment<A extends AnyTypes>(): (input: Builder<A>) => Builder<A>
14
17
  export function deployment<
15
18
  A extends AnyTypes,
16
- B extends AnyTypes
19
+ B extends AnyTypes,
17
20
  >(
18
- op1: (input: DeploymentModelBuilder<A>) => DeploymentModelBuilder<B>
21
+ op1: (input: DeploymentModelBuilder<A>) => DeploymentModelBuilder<B>,
19
22
  ): (input: Builder<A>) => Builder<B>
20
23
  export function deployment<
21
24
  A extends AnyTypes,
22
25
  B extends AnyTypes,
23
- C extends AnyTypes
26
+ C extends AnyTypes,
24
27
  >(
25
28
  op1: (input: DeploymentModelBuilder<A>) => DeploymentModelBuilder<B>,
26
- op2: (input: DeploymentModelBuilder<B>) => DeploymentModelBuilder<C>
29
+ op2: (input: DeploymentModelBuilder<B>) => DeploymentModelBuilder<C>,
27
30
  ): (input: Builder<A>) => Builder<C>
28
31
  export function deployment<
29
32
  A extends AnyTypes,
30
33
  B extends AnyTypes,
31
34
  C extends AnyTypes,
32
- D extends AnyTypes
35
+ D extends AnyTypes,
33
36
  >(
34
37
  op1: (input: DeploymentModelBuilder<A>) => DeploymentModelBuilder<B>,
35
38
  op2: (input: DeploymentModelBuilder<B>) => DeploymentModelBuilder<C>,
36
- op3: (input: DeploymentModelBuilder<C>) => DeploymentModelBuilder<D>
39
+ op3: (input: DeploymentModelBuilder<C>) => DeploymentModelBuilder<D>,
37
40
  ): (input: Builder<A>) => Builder<D>
38
41
  export function deployment<
39
42
  A extends AnyTypes,
40
43
  B extends AnyTypes,
41
44
  C extends AnyTypes,
42
45
  D extends AnyTypes,
43
- E extends AnyTypes
46
+ E extends AnyTypes,
44
47
  >(
45
48
  op1: (input: DeploymentModelBuilder<A>) => DeploymentModelBuilder<B>,
46
49
  op2: (input: DeploymentModelBuilder<B>) => DeploymentModelBuilder<C>,
47
50
  op3: (input: DeploymentModelBuilder<C>) => DeploymentModelBuilder<D>,
48
- op4: (input: DeploymentModelBuilder<D>) => DeploymentModelBuilder<E>
51
+ op4: (input: DeploymentModelBuilder<D>) => DeploymentModelBuilder<E>,
49
52
  ): (input: Builder<A>) => Builder<E>
50
53
  export function deployment<
51
54
  A extends AnyTypes,
@@ -53,13 +56,13 @@ export function deployment<
53
56
  C extends AnyTypes,
54
57
  D extends AnyTypes,
55
58
  E extends AnyTypes,
56
- F extends AnyTypes
59
+ F extends AnyTypes,
57
60
  >(
58
61
  op1: (input: DeploymentModelBuilder<A>) => DeploymentModelBuilder<B>,
59
62
  op2: (input: DeploymentModelBuilder<B>) => DeploymentModelBuilder<C>,
60
63
  op3: (input: DeploymentModelBuilder<C>) => DeploymentModelBuilder<D>,
61
64
  op4: (input: DeploymentModelBuilder<D>) => DeploymentModelBuilder<E>,
62
- op5: (input: DeploymentModelBuilder<E>) => DeploymentModelBuilder<F>
65
+ op5: (input: DeploymentModelBuilder<E>) => DeploymentModelBuilder<F>,
63
66
  ): (input: Builder<A>) => Builder<F>
64
67
  export function deployment<
65
68
  A extends AnyTypes,
@@ -68,14 +71,14 @@ export function deployment<
68
71
  D extends AnyTypes,
69
72
  E extends AnyTypes,
70
73
  F extends AnyTypes,
71
- G extends AnyTypes
74
+ G extends AnyTypes,
72
75
  >(
73
76
  op1: (input: DeploymentModelBuilder<A>) => DeploymentModelBuilder<B>,
74
77
  op2: (input: DeploymentModelBuilder<B>) => DeploymentModelBuilder<C>,
75
78
  op3: (input: DeploymentModelBuilder<C>) => DeploymentModelBuilder<D>,
76
79
  op4: (input: DeploymentModelBuilder<D>) => DeploymentModelBuilder<E>,
77
80
  op5: (input: DeploymentModelBuilder<E>) => DeploymentModelBuilder<F>,
78
- op6: (input: DeploymentModelBuilder<F>) => DeploymentModelBuilder<G>
81
+ op6: (input: DeploymentModelBuilder<F>) => DeploymentModelBuilder<G>,
79
82
  ): (input: Builder<A>) => Builder<G>
80
83
  export function deployment<
81
84
  A extends AnyTypes,
@@ -85,7 +88,7 @@ export function deployment<
85
88
  E extends AnyTypes,
86
89
  F extends AnyTypes,
87
90
  G extends AnyTypes,
88
- H extends AnyTypes
91
+ H extends AnyTypes,
89
92
  >(
90
93
  op1: (input: DeploymentModelBuilder<A>) => DeploymentModelBuilder<B>,
91
94
  op2: (input: DeploymentModelBuilder<B>) => DeploymentModelBuilder<C>,
@@ -93,7 +96,7 @@ export function deployment<
93
96
  op4: (input: DeploymentModelBuilder<D>) => DeploymentModelBuilder<E>,
94
97
  op5: (input: DeploymentModelBuilder<E>) => DeploymentModelBuilder<F>,
95
98
  op6: (input: DeploymentModelBuilder<F>) => DeploymentModelBuilder<G>,
96
- op7: (input: DeploymentModelBuilder<G>) => DeploymentModelBuilder<H>
99
+ op7: (input: DeploymentModelBuilder<G>) => DeploymentModelBuilder<H>,
97
100
  ): (input: Builder<A>) => Builder<H>
98
101
  export function deployment<
99
102
  A extends AnyTypes,
@@ -104,7 +107,7 @@ export function deployment<
104
107
  F extends AnyTypes,
105
108
  G extends AnyTypes,
106
109
  H extends AnyTypes,
107
- I extends AnyTypes
110
+ I extends AnyTypes,
108
111
  >(
109
112
  op1: (input: DeploymentModelBuilder<A>) => DeploymentModelBuilder<B>,
110
113
  op2: (input: DeploymentModelBuilder<B>) => DeploymentModelBuilder<C>,
@@ -113,7 +116,7 @@ export function deployment<
113
116
  op5: (input: DeploymentModelBuilder<E>) => DeploymentModelBuilder<F>,
114
117
  op6: (input: DeploymentModelBuilder<F>) => DeploymentModelBuilder<G>,
115
118
  op7: (input: DeploymentModelBuilder<G>) => DeploymentModelBuilder<H>,
116
- op8: (input: DeploymentModelBuilder<H>) => DeploymentModelBuilder<I>
119
+ op8: (input: DeploymentModelBuilder<H>) => DeploymentModelBuilder<I>,
117
120
  ): (input: Builder<A>) => Builder<I>
118
121
  export function deployment<
119
122
  A extends AnyTypes,
@@ -125,7 +128,7 @@ export function deployment<
125
128
  G extends AnyTypes,
126
129
  H extends AnyTypes,
127
130
  I extends AnyTypes,
128
- J extends AnyTypes
131
+ J extends AnyTypes,
129
132
  >(
130
133
  op1: (input: DeploymentModelBuilder<A>) => DeploymentModelBuilder<B>,
131
134
  op2: (input: DeploymentModelBuilder<B>) => DeploymentModelBuilder<C>,
@@ -135,7 +138,7 @@ export function deployment<
135
138
  op6: (input: DeploymentModelBuilder<F>) => DeploymentModelBuilder<G>,
136
139
  op7: (input: DeploymentModelBuilder<G>) => DeploymentModelBuilder<H>,
137
140
  op8: (input: DeploymentModelBuilder<H>) => DeploymentModelBuilder<I>,
138
- op9: (input: DeploymentModelBuilder<I>) => DeploymentModelBuilder<J>
141
+ op9: (input: DeploymentModelBuilder<I>) => DeploymentModelBuilder<J>,
139
142
  ): (input: Builder<A>) => Builder<J>
140
143
  export function deployment<
141
144
  A extends AnyTypes,
@@ -148,7 +151,7 @@ export function deployment<
148
151
  H extends AnyTypes,
149
152
  I extends AnyTypes,
150
153
  J extends AnyTypes,
151
- K extends AnyTypes
154
+ K extends AnyTypes,
152
155
  >(
153
156
  op1: (input: DeploymentModelBuilder<A>) => DeploymentModelBuilder<B>,
154
157
  op2: (input: DeploymentModelBuilder<B>) => DeploymentModelBuilder<C>,
@@ -159,7 +162,7 @@ export function deployment<
159
162
  op7: (input: DeploymentModelBuilder<G>) => DeploymentModelBuilder<H>,
160
163
  op8: (input: DeploymentModelBuilder<H>) => DeploymentModelBuilder<I>,
161
164
  op9: (input: DeploymentModelBuilder<I>) => DeploymentModelBuilder<J>,
162
- op10: (input: DeploymentModelBuilder<J>) => DeploymentModelBuilder<K>
165
+ op10: (input: DeploymentModelBuilder<J>) => DeploymentModelBuilder<K>,
163
166
  ): (input: Builder<A>) => Builder<K>
164
167
  export function deployment<
165
168
  A extends AnyTypes,
@@ -173,7 +176,7 @@ export function deployment<
173
176
  I extends AnyTypes,
174
177
  J extends AnyTypes,
175
178
  K extends AnyTypes,
176
- L extends AnyTypes
179
+ L extends AnyTypes,
177
180
  >(
178
181
  op1: (input: DeploymentModelBuilder<A>) => DeploymentModelBuilder<B>,
179
182
  op2: (input: DeploymentModelBuilder<B>) => DeploymentModelBuilder<C>,
@@ -185,7 +188,7 @@ export function deployment<
185
188
  op8: (input: DeploymentModelBuilder<H>) => DeploymentModelBuilder<I>,
186
189
  op9: (input: DeploymentModelBuilder<I>) => DeploymentModelBuilder<J>,
187
190
  op10: (input: DeploymentModelBuilder<J>) => DeploymentModelBuilder<K>,
188
- op11: (input: DeploymentModelBuilder<K>) => DeploymentModelBuilder<L>
191
+ op11: (input: DeploymentModelBuilder<K>) => DeploymentModelBuilder<L>,
189
192
  ): (input: Builder<A>) => Builder<L>
190
193
  export function deployment<
191
194
  A extends AnyTypes,
@@ -200,7 +203,7 @@ export function deployment<
200
203
  J extends AnyTypes,
201
204
  K extends AnyTypes,
202
205
  L extends AnyTypes,
203
- M extends AnyTypes
206
+ M extends AnyTypes,
204
207
  >(
205
208
  op1: (input: DeploymentModelBuilder<A>) => DeploymentModelBuilder<B>,
206
209
  op2: (input: DeploymentModelBuilder<B>) => DeploymentModelBuilder<C>,
@@ -213,7 +216,7 @@ export function deployment<
213
216
  op9: (input: DeploymentModelBuilder<I>) => DeploymentModelBuilder<J>,
214
217
  op10: (input: DeploymentModelBuilder<J>) => DeploymentModelBuilder<K>,
215
218
  op11: (input: DeploymentModelBuilder<K>) => DeploymentModelBuilder<L>,
216
- op12: (input: DeploymentModelBuilder<L>) => DeploymentModelBuilder<M>
219
+ op12: (input: DeploymentModelBuilder<L>) => DeploymentModelBuilder<M>,
217
220
  ): (input: Builder<A>) => Builder<M>
218
221
  export function deployment<
219
222
  A extends AnyTypes,
@@ -229,7 +232,7 @@ export function deployment<
229
232
  K extends AnyTypes,
230
233
  L extends AnyTypes,
231
234
  M extends AnyTypes,
232
- N extends AnyTypes
235
+ N extends AnyTypes,
233
236
  >(
234
237
  op1: (input: DeploymentModelBuilder<A>) => DeploymentModelBuilder<B>,
235
238
  op2: (input: DeploymentModelBuilder<B>) => DeploymentModelBuilder<C>,
@@ -243,7 +246,7 @@ export function deployment<
243
246
  op10: (input: DeploymentModelBuilder<J>) => DeploymentModelBuilder<K>,
244
247
  op11: (input: DeploymentModelBuilder<K>) => DeploymentModelBuilder<L>,
245
248
  op12: (input: DeploymentModelBuilder<L>) => DeploymentModelBuilder<M>,
246
- op13: (input: DeploymentModelBuilder<M>) => DeploymentModelBuilder<N>
249
+ op13: (input: DeploymentModelBuilder<M>) => DeploymentModelBuilder<N>,
247
250
  ): (input: Builder<A>) => Builder<N>
248
251
  export function deployment<
249
252
  A extends AnyTypes,
@@ -260,7 +263,7 @@ export function deployment<
260
263
  L extends AnyTypes,
261
264
  M extends AnyTypes,
262
265
  N extends AnyTypes,
263
- O extends AnyTypes
266
+ O extends AnyTypes,
264
267
  >(
265
268
  op1: (input: DeploymentModelBuilder<A>) => DeploymentModelBuilder<B>,
266
269
  op2: (input: DeploymentModelBuilder<B>) => DeploymentModelBuilder<C>,
@@ -275,7 +278,7 @@ export function deployment<
275
278
  op11: (input: DeploymentModelBuilder<K>) => DeploymentModelBuilder<L>,
276
279
  op12: (input: DeploymentModelBuilder<L>) => DeploymentModelBuilder<M>,
277
280
  op13: (input: DeploymentModelBuilder<M>) => DeploymentModelBuilder<N>,
278
- op14: (input: DeploymentModelBuilder<N>) => DeploymentModelBuilder<O>
281
+ op14: (input: DeploymentModelBuilder<N>) => DeploymentModelBuilder<O>,
279
282
  ): (input: Builder<A>) => Builder<O>
280
283
  export function deployment<
281
284
  A extends AnyTypes,
@@ -293,7 +296,7 @@ export function deployment<
293
296
  M extends AnyTypes,
294
297
  N extends AnyTypes,
295
298
  O extends AnyTypes,
296
- P extends AnyTypes
299
+ P extends AnyTypes,
297
300
  >(
298
301
  op1: (input: DeploymentModelBuilder<A>) => DeploymentModelBuilder<B>,
299
302
  op2: (input: DeploymentModelBuilder<B>) => DeploymentModelBuilder<C>,
@@ -309,7 +312,7 @@ export function deployment<
309
312
  op12: (input: DeploymentModelBuilder<L>) => DeploymentModelBuilder<M>,
310
313
  op13: (input: DeploymentModelBuilder<M>) => DeploymentModelBuilder<N>,
311
314
  op14: (input: DeploymentModelBuilder<N>) => DeploymentModelBuilder<O>,
312
- op15: (input: DeploymentModelBuilder<O>) => DeploymentModelBuilder<P>
315
+ op15: (input: DeploymentModelBuilder<O>) => DeploymentModelBuilder<P>,
313
316
  ): (input: Builder<A>) => Builder<P>
314
317
 
315
318
  export function deployment(...ops: any[]) {
@@ -322,29 +325,32 @@ export function deployment(...ops: any[]) {
322
325
  }
323
326
  }
324
327
 
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>
328
+ type NameFromFqn<FQN extends string> = LastArrayElement<Split<FQN, '.'>>
334
329
 
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>>
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
+ }
344
350
 
345
351
  type AddDeploymentNodeHelper<T = unknown> = <const Id extends string>(
346
- id: Id,
347
- titleOrProps?: string | T
352
+ id: ValidId<Id>,
353
+ titleOrProps?: string | T,
348
354
  ) => AddDeploymentNode<Id>
349
355
 
350
356
  export type AddDeploymentNodeHelpers<T extends AnyTypes> = T extends
@@ -353,8 +359,27 @@ export type AddDeploymentNodeHelpers<T extends AnyTypes> = T extends
353
359
  }
354
360
  : Invalid<'No Deployment Kinds'>
355
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
+
356
372
  export type DeloymentModelHelpers<T extends AnyTypes> = AddDeploymentNodeHelpers<T> & {
357
373
  instanceOf: AddDeployedInstance<T['NewDeploymentNodeProps']>
358
374
  rel: AddDeploymentRelation<T['NewRelationshipProps']>
359
375
  deployment: typeof deployment
360
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>)