@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.
- package/LICENSE +1 -1
- package/dist/builder/index.d.mts +502 -0
- package/dist/builder/index.d.ts +502 -0
- package/dist/builder/index.js +871 -0
- package/dist/compute-view/index.d.mts +22 -0
- package/dist/compute-view/index.d.ts +22 -0
- package/dist/compute-view/index.js +78 -0
- package/dist/index.d.mts +10 -919
- package/dist/index.d.ts +10 -919
- package/dist/{index.mjs → index.js} +7 -1688
- package/dist/model/index.d.mts +254 -0
- package/dist/model/index.d.ts +254 -0
- package/dist/model/index.js +1 -0
- package/dist/shared/chunk-RAAYCPUM.M-JWF7SS.js +21 -0
- package/dist/shared/core.BIfgabEw.d.ts +719 -0
- package/dist/shared/core.BZ9Msq7w.d.mts +719 -0
- package/dist/shared/{core.CoLQkcYL.d.cts → core.C05RDLhi.d.ts} +460 -362
- package/dist/shared/{core.CoLQkcYL.d.mts → core.CmYMqgha.d.mts} +460 -362
- package/dist/shared/core.D6-fWbM3.d.ts +127 -0
- package/dist/shared/core.D74xkKkG.d.mts +148 -0
- package/dist/shared/core.D74xkKkG.d.ts +148 -0
- package/dist/shared/core.sLaWHBjR.d.mts +127 -0
- package/dist/shared/index.-BdzdI2C.js +7443 -0
- package/dist/shared/object_hash.CE_oF3I3.js +1222 -0
- package/dist/shared/{core.BXTs-8n7.mjs → view.CyZrG8BJ.js} +108 -47
- package/dist/types/index.d.mts +71 -1
- package/dist/types/index.d.ts +71 -1
- package/dist/types/index.js +20 -0
- package/dist/utils/index.d.mts +404 -0
- package/dist/utils/index.d.ts +404 -0
- package/dist/utils/index.js +330 -0
- package/package.json +59 -47
- package/src/builder/Builder-style1.test-d.ts +190 -0
- package/src/builder/Builder-style2.test-d.ts +175 -0
- package/src/builder/Builder.deployment.ts +224 -0
- package/src/builder/Builder.deploymentModel.ts +385 -0
- package/src/builder/Builder.element.ts +19 -19
- package/src/builder/Builder.model.ts +67 -42
- package/src/builder/Builder.ts +533 -367
- package/src/builder/Builder.view-common.ts +234 -0
- package/src/builder/Builder.view-deployment.ts +135 -0
- package/src/builder/Builder.view-element.ts +189 -0
- package/src/builder/Builder.views.ts +109 -33
- package/src/builder/Builder.with.ts +475 -0
- package/src/builder/__snapshots__/Builder-style1.spec.ts.snap +374 -0
- package/src/builder/__snapshots__/Builder-style2.spec.ts.snap +183 -0
- package/src/builder/__snapshots__/Builder.spec.ts.snap +374 -0
- package/src/builder/_types.ts +113 -18
- package/src/builder/index.ts +10 -4
- package/src/colors/index.ts +2 -2
- package/src/compute-view/compute-view.ts +83 -0
- package/src/compute-view/deployment-view/__test__/TestHelper.ts +236 -0
- package/src/compute-view/deployment-view/__test__/fixture.ts +198 -0
- package/src/compute-view/deployment-view/_types.ts +37 -0
- package/src/compute-view/deployment-view/clean-connections.ts +238 -0
- package/src/compute-view/deployment-view/compute.ts +125 -0
- package/src/compute-view/deployment-view/memory/index.ts +9 -0
- package/src/compute-view/deployment-view/memory/memory.ts +97 -0
- package/src/compute-view/deployment-view/predicates/elements.ts +144 -0
- package/src/compute-view/deployment-view/predicates/relation-direct.ts +237 -0
- package/src/compute-view/deployment-view/predicates/relation-in-out.ts +61 -0
- package/src/compute-view/deployment-view/predicates/relation-incoming.ts +95 -0
- package/src/compute-view/deployment-view/predicates/relation-outgoing.ts +88 -0
- package/src/compute-view/deployment-view/predicates/wildcard.ts +29 -0
- package/src/compute-view/deployment-view/stages/stage-exclude.ts +5 -0
- package/src/compute-view/deployment-view/stages/stage-final.ts +245 -0
- package/src/compute-view/deployment-view/stages/stage-include.ts +95 -0
- package/src/compute-view/deployment-view/utils.ts +276 -0
- package/src/compute-view/dynamic-view/__test__/fixture.ts +58 -0
- package/src/compute-view/dynamic-view/compute.ts +324 -0
- package/src/compute-view/element-view/__test__/TestHelper.ts +258 -0
- package/src/compute-view/element-view/__test__/__snapshots__/legacy.spec.ts.snap +458 -0
- package/src/compute-view/element-view/__test__/fixture.ts +675 -0
- package/src/compute-view/element-view/_types.ts +48 -0
- package/src/compute-view/element-view/clean-connections.ts +113 -0
- package/src/compute-view/element-view/compute.ts +315 -0
- package/src/compute-view/element-view/memory/NodeGroup.ts +31 -0
- package/src/compute-view/element-view/memory/index.ts +10 -0
- package/src/compute-view/element-view/memory/memory.ts +177 -0
- package/src/compute-view/element-view/memory/stage-exclude.ts +59 -0
- package/src/compute-view/element-view/memory/stage-final.ts +129 -0
- package/src/compute-view/element-view/memory/stage-include.ts +128 -0
- package/src/compute-view/element-view/predicates/_utils.ts +86 -0
- package/src/compute-view/element-view/predicates/element-expand.ts +33 -0
- package/src/compute-view/element-view/predicates/element-kind-tag.ts +26 -0
- package/src/compute-view/element-view/predicates/element-ref.ts +37 -0
- package/src/compute-view/element-view/predicates/relation-direct.ts +309 -0
- package/src/compute-view/element-view/predicates/relation-in-out.ts +66 -0
- package/src/compute-view/element-view/predicates/relation-in.ts +118 -0
- package/src/compute-view/element-view/predicates/relation-out.ts +116 -0
- package/src/compute-view/element-view/predicates/wildcard.ts +88 -0
- package/src/compute-view/element-view/utils.ts +59 -0
- package/src/compute-view/index.ts +4 -0
- package/src/compute-view/memory/AbstractMemory.ts +45 -0
- package/src/compute-view/memory/AbstractStageExclude.ts +216 -0
- package/src/compute-view/memory/AbstractStageInclude.ts +200 -0
- package/src/compute-view/memory/_types.ts +147 -0
- package/src/compute-view/memory/index.ts +5 -0
- package/src/compute-view/memory/ops.ts +43 -0
- package/src/compute-view/utils/__snapshots__/sortNodes.spec.ts.snap +113 -0
- package/src/compute-view/utils/ancestorsOfNode.ts +19 -0
- package/src/compute-view/utils/applyCustomElementProperties.ts +66 -0
- package/src/compute-view/utils/applyCustomRelationProperties.ts +41 -0
- package/src/compute-view/utils/applyViewRuleStyles.ts +53 -0
- package/src/compute-view/utils/buildComputedNodes.ts +148 -0
- package/src/compute-view/utils/buildElementNotations.ts +63 -0
- package/src/compute-view/utils/elementExpressionToPredicate.ts +50 -0
- package/src/compute-view/utils/link-nodes-with-edges.ts +54 -0
- package/src/compute-view/utils/merge-props-from-relationships.ts +128 -0
- package/src/compute-view/utils/relationExpressionToPredicates.ts +55 -0
- package/src/compute-view/utils/resolve-extended-views.ts +69 -0
- package/src/compute-view/utils/resolve-global-rules.ts +83 -0
- package/src/compute-view/utils/topological-sort.ts +256 -0
- package/src/compute-view/utils/uniqueTags.test.ts +42 -0
- package/src/compute-view/utils/uniqueTags.ts +21 -0
- package/src/compute-view/utils/view-hash.ts +27 -0
- package/src/compute-view/utils/with-readable-edges.ts +36 -0
- package/src/index.ts +22 -12
- package/src/model/DeploymentElementModel.ts +599 -0
- package/src/model/DeploymentModel.ts +370 -0
- package/src/model/ElementModel.ts +221 -0
- package/src/model/LikeC4Model.test-d.ts +152 -0
- package/src/model/LikeC4Model.ts +336 -457
- package/src/model/RelationModel.ts +85 -0
- package/src/model/__test__/fixture.ts +149 -338
- package/src/model/connection/Connection.ts +72 -0
- package/src/model/connection/deployment/DeploymentConnectionModel.ts +178 -0
- package/src/model/connection/deployment/find.ts +120 -0
- package/src/model/connection/deployment/index.ts +8 -0
- package/src/model/connection/index.ts +22 -0
- package/src/model/connection/model/ConnectionModel.ts +157 -0
- package/src/model/connection/model/find.ts +117 -0
- package/src/model/connection/model/index.ts +8 -0
- package/src/model/connection/ops.ts +274 -0
- package/src/model/guards.ts +9 -0
- package/src/model/index.ts +46 -2
- package/src/model/types.ts +112 -15
- package/src/model/view/EdgeModel.ts +103 -0
- package/src/model/view/LikeC4ViewModel.ts +226 -0
- package/src/model/view/NodeModel.ts +229 -0
- package/src/types/_common.ts +55 -1
- package/src/types/deployments.ts +169 -0
- package/src/types/element.ts +9 -5
- package/src/types/expression-v2.ts +172 -0
- package/src/types/expression.ts +17 -11
- package/src/types/global.ts +3 -3
- package/src/types/index.ts +220 -12
- package/src/types/model.ts +75 -12
- package/src/types/operators.ts +1 -1
- package/src/types/overview-graph.ts +2 -2
- package/src/types/relation.ts +18 -14
- package/src/types/theme.ts +0 -1
- package/src/types/view-notation.ts +2 -2
- package/src/types/view.ts +117 -41
- package/src/utils/{commonHead.ts → common-head.ts} +2 -0
- package/src/utils/const.ts +1 -0
- package/src/utils/fqn.ts +203 -56
- package/src/utils/getOrCreate.ts +42 -0
- package/src/utils/graphlib.ts +10 -0
- package/src/utils/index.ts +74 -6
- package/src/utils/iterable/_types.ts +5 -0
- package/src/utils/iterable/filter.ts +55 -0
- package/src/utils/iterable/flat.ts +17 -0
- package/src/utils/iterable/index.ts +12 -0
- package/src/utils/iterable/map.ts +40 -0
- package/src/utils/iterable/reduce.ts +24 -0
- package/src/utils/iterable/some.ts +36 -0
- package/src/utils/iterable/to.ts +19 -0
- package/src/utils/iterable/unique.ts +29 -0
- package/src/utils/object-hash.ts +3 -0
- package/src/utils/relations.ts +3 -64
- package/src/utils/set.ts +78 -0
- package/src/utils/string-hash.ts +16 -0
- package/dist/index.cjs +0 -5452
- package/dist/index.d.cts +0 -1053
- package/dist/shared/core.CoLQkcYL.d.ts +0 -734
- package/dist/shared/core.DIYZvpVg.cjs +0 -353
- package/dist/types/index.cjs +0 -70
- package/dist/types/index.d.cts +0 -2
- package/dist/types/index.mjs +0 -1
- package/src/builder/Builder.test-d.ts +0 -69
- package/src/builder/Builder.view.ts +0 -358
- package/src/model/LikeC4DiagramModel.ts +0 -338
- package/src/model/LikeC4ViewModel.ts +0 -320
|
@@ -1,53 +1,58 @@
|
|
|
1
|
-
import type { Element, Fqn,
|
|
2
|
-
import type { AnyTypes, AnyTypesNested, Types,
|
|
3
|
-
import
|
|
4
|
-
import type {
|
|
1
|
+
import type { Element, Fqn, ModelRelation } from '../types'
|
|
2
|
+
import type { AnyTypes, AnyTypesNested, Invalid, Types, ValidId } from './_types'
|
|
3
|
+
import { Builder } from './Builder'
|
|
4
|
+
import type { AddElement } from './Builder.element'
|
|
5
5
|
|
|
6
|
-
export interface ModelBuilder<T extends AnyTypes> {
|
|
7
|
-
|
|
8
|
-
|
|
6
|
+
export interface ModelBuilder<T extends AnyTypes> extends Builder<T> {
|
|
7
|
+
__addElement(element: Element): Builder<T>
|
|
8
|
+
__addRelation(relation: Omit<ModelRelation, 'id'>): Builder<T>
|
|
9
9
|
/**
|
|
10
10
|
* Create a fully qualified name from an id (for nested models)
|
|
11
11
|
*/
|
|
12
|
-
|
|
13
|
-
|
|
12
|
+
__fqn(id: string): Fqn
|
|
13
|
+
__addSourcelessRelation(relation: Omit<ModelRelation, 'id' | 'source'>): Builder<T>
|
|
14
14
|
}
|
|
15
15
|
|
|
16
16
|
export function model<
|
|
17
17
|
A extends AnyTypes,
|
|
18
|
-
|
|
18
|
+
>(): (input: Builder<A>) => Builder<A>
|
|
19
|
+
|
|
20
|
+
export function model<
|
|
21
|
+
A extends AnyTypes,
|
|
22
|
+
B extends AnyTypes,
|
|
19
23
|
>(
|
|
20
|
-
op1: (input: ModelBuilder<A>) => ModelBuilder<B
|
|
24
|
+
op1: (input: ModelBuilder<A>) => ModelBuilder<B>,
|
|
21
25
|
): (input: Builder<A>) => Builder<B>
|
|
26
|
+
|
|
22
27
|
export function model<
|
|
23
28
|
A extends AnyTypes,
|
|
24
29
|
B extends AnyTypes,
|
|
25
|
-
C extends AnyTypes
|
|
30
|
+
C extends AnyTypes,
|
|
26
31
|
>(
|
|
27
32
|
op1: (input: ModelBuilder<A>) => ModelBuilder<B>,
|
|
28
|
-
op2: (input: ModelBuilder<B>) => ModelBuilder<C
|
|
33
|
+
op2: (input: ModelBuilder<B>) => ModelBuilder<C>,
|
|
29
34
|
): (input: Builder<A>) => Builder<C>
|
|
30
35
|
export function model<
|
|
31
36
|
A extends AnyTypes,
|
|
32
37
|
B extends AnyTypes,
|
|
33
38
|
C extends AnyTypes,
|
|
34
|
-
D extends AnyTypes
|
|
39
|
+
D extends AnyTypes,
|
|
35
40
|
>(
|
|
36
41
|
op1: (input: ModelBuilder<A>) => ModelBuilder<B>,
|
|
37
42
|
op2: (input: ModelBuilder<B>) => ModelBuilder<C>,
|
|
38
|
-
op3: (input: ModelBuilder<C>) => ModelBuilder<D
|
|
43
|
+
op3: (input: ModelBuilder<C>) => ModelBuilder<D>,
|
|
39
44
|
): (input: Builder<A>) => Builder<D>
|
|
40
45
|
export function model<
|
|
41
46
|
A extends AnyTypes,
|
|
42
47
|
B extends AnyTypes,
|
|
43
48
|
C extends AnyTypes,
|
|
44
49
|
D extends AnyTypes,
|
|
45
|
-
E extends AnyTypes
|
|
50
|
+
E extends AnyTypes,
|
|
46
51
|
>(
|
|
47
52
|
op1: (input: ModelBuilder<A>) => ModelBuilder<B>,
|
|
48
53
|
op2: (input: ModelBuilder<B>) => ModelBuilder<C>,
|
|
49
54
|
op3: (input: ModelBuilder<C>) => ModelBuilder<D>,
|
|
50
|
-
op4: (input: ModelBuilder<D>) => ModelBuilder<E
|
|
55
|
+
op4: (input: ModelBuilder<D>) => ModelBuilder<E>,
|
|
51
56
|
): (input: Builder<A>) => Builder<E>
|
|
52
57
|
export function model<
|
|
53
58
|
A extends AnyTypes,
|
|
@@ -55,13 +60,13 @@ export function model<
|
|
|
55
60
|
C extends AnyTypes,
|
|
56
61
|
D extends AnyTypes,
|
|
57
62
|
E extends AnyTypes,
|
|
58
|
-
F extends AnyTypes
|
|
63
|
+
F extends AnyTypes,
|
|
59
64
|
>(
|
|
60
65
|
op1: (input: ModelBuilder<A>) => ModelBuilder<B>,
|
|
61
66
|
op2: (input: ModelBuilder<B>) => ModelBuilder<C>,
|
|
62
67
|
op3: (input: ModelBuilder<C>) => ModelBuilder<D>,
|
|
63
68
|
op4: (input: ModelBuilder<D>) => ModelBuilder<E>,
|
|
64
|
-
op5: (input: ModelBuilder<E>) => ModelBuilder<F
|
|
69
|
+
op5: (input: ModelBuilder<E>) => ModelBuilder<F>,
|
|
65
70
|
): (input: Builder<A>) => Builder<F>
|
|
66
71
|
export function model<
|
|
67
72
|
A extends AnyTypes,
|
|
@@ -70,14 +75,14 @@ export function model<
|
|
|
70
75
|
D extends AnyTypes,
|
|
71
76
|
E extends AnyTypes,
|
|
72
77
|
F extends AnyTypes,
|
|
73
|
-
G extends AnyTypes
|
|
78
|
+
G extends AnyTypes,
|
|
74
79
|
>(
|
|
75
80
|
op1: (input: ModelBuilder<A>) => ModelBuilder<B>,
|
|
76
81
|
op2: (input: ModelBuilder<B>) => ModelBuilder<C>,
|
|
77
82
|
op3: (input: ModelBuilder<C>) => ModelBuilder<D>,
|
|
78
83
|
op4: (input: ModelBuilder<D>) => ModelBuilder<E>,
|
|
79
84
|
op5: (input: ModelBuilder<E>) => ModelBuilder<F>,
|
|
80
|
-
op6: (input: ModelBuilder<F>) => ModelBuilder<G
|
|
85
|
+
op6: (input: ModelBuilder<F>) => ModelBuilder<G>,
|
|
81
86
|
): (input: Builder<A>) => Builder<G>
|
|
82
87
|
export function model<
|
|
83
88
|
A extends AnyTypes,
|
|
@@ -87,7 +92,7 @@ export function model<
|
|
|
87
92
|
E extends AnyTypes,
|
|
88
93
|
F extends AnyTypes,
|
|
89
94
|
G extends AnyTypes,
|
|
90
|
-
H extends AnyTypes
|
|
95
|
+
H extends AnyTypes,
|
|
91
96
|
>(
|
|
92
97
|
op1: (input: ModelBuilder<A>) => ModelBuilder<B>,
|
|
93
98
|
op2: (input: ModelBuilder<B>) => ModelBuilder<C>,
|
|
@@ -95,7 +100,7 @@ export function model<
|
|
|
95
100
|
op4: (input: ModelBuilder<D>) => ModelBuilder<E>,
|
|
96
101
|
op5: (input: ModelBuilder<E>) => ModelBuilder<F>,
|
|
97
102
|
op6: (input: ModelBuilder<F>) => ModelBuilder<G>,
|
|
98
|
-
op7: (input: ModelBuilder<G>) => ModelBuilder<H
|
|
103
|
+
op7: (input: ModelBuilder<G>) => ModelBuilder<H>,
|
|
99
104
|
): (input: Builder<A>) => Builder<H>
|
|
100
105
|
export function model<
|
|
101
106
|
A extends AnyTypes,
|
|
@@ -106,7 +111,7 @@ export function model<
|
|
|
106
111
|
F extends AnyTypes,
|
|
107
112
|
G extends AnyTypes,
|
|
108
113
|
H extends AnyTypes,
|
|
109
|
-
I extends AnyTypes
|
|
114
|
+
I extends AnyTypes,
|
|
110
115
|
>(
|
|
111
116
|
op1: (input: ModelBuilder<A>) => ModelBuilder<B>,
|
|
112
117
|
op2: (input: ModelBuilder<B>) => ModelBuilder<C>,
|
|
@@ -115,7 +120,7 @@ export function model<
|
|
|
115
120
|
op5: (input: ModelBuilder<E>) => ModelBuilder<F>,
|
|
116
121
|
op6: (input: ModelBuilder<F>) => ModelBuilder<G>,
|
|
117
122
|
op7: (input: ModelBuilder<G>) => ModelBuilder<H>,
|
|
118
|
-
op8: (input: ModelBuilder<H>) => ModelBuilder<I
|
|
123
|
+
op8: (input: ModelBuilder<H>) => ModelBuilder<I>,
|
|
119
124
|
): (input: Builder<A>) => Builder<I>
|
|
120
125
|
export function model<
|
|
121
126
|
A extends AnyTypes,
|
|
@@ -127,7 +132,7 @@ export function model<
|
|
|
127
132
|
G extends AnyTypes,
|
|
128
133
|
H extends AnyTypes,
|
|
129
134
|
I extends AnyTypes,
|
|
130
|
-
J extends AnyTypes
|
|
135
|
+
J extends AnyTypes,
|
|
131
136
|
>(
|
|
132
137
|
op1: (input: ModelBuilder<A>) => ModelBuilder<B>,
|
|
133
138
|
op2: (input: ModelBuilder<B>) => ModelBuilder<C>,
|
|
@@ -137,7 +142,7 @@ export function model<
|
|
|
137
142
|
op6: (input: ModelBuilder<F>) => ModelBuilder<G>,
|
|
138
143
|
op7: (input: ModelBuilder<G>) => ModelBuilder<H>,
|
|
139
144
|
op8: (input: ModelBuilder<H>) => ModelBuilder<I>,
|
|
140
|
-
op9: (input: ModelBuilder<I>) => ModelBuilder<J
|
|
145
|
+
op9: (input: ModelBuilder<I>) => ModelBuilder<J>,
|
|
141
146
|
): (input: Builder<A>) => Builder<J>
|
|
142
147
|
export function model<
|
|
143
148
|
A extends AnyTypes,
|
|
@@ -150,7 +155,7 @@ export function model<
|
|
|
150
155
|
H extends AnyTypes,
|
|
151
156
|
I extends AnyTypes,
|
|
152
157
|
J extends AnyTypes,
|
|
153
|
-
K extends AnyTypes
|
|
158
|
+
K extends AnyTypes,
|
|
154
159
|
>(
|
|
155
160
|
op1: (input: ModelBuilder<A>) => ModelBuilder<B>,
|
|
156
161
|
op2: (input: ModelBuilder<B>) => ModelBuilder<C>,
|
|
@@ -161,7 +166,7 @@ export function model<
|
|
|
161
166
|
op7: (input: ModelBuilder<G>) => ModelBuilder<H>,
|
|
162
167
|
op8: (input: ModelBuilder<H>) => ModelBuilder<I>,
|
|
163
168
|
op9: (input: ModelBuilder<I>) => ModelBuilder<J>,
|
|
164
|
-
op10: (input: ModelBuilder<J>) => ModelBuilder<K
|
|
169
|
+
op10: (input: ModelBuilder<J>) => ModelBuilder<K>,
|
|
165
170
|
): (input: Builder<A>) => Builder<K>
|
|
166
171
|
export function model<
|
|
167
172
|
A extends AnyTypes,
|
|
@@ -175,7 +180,7 @@ export function model<
|
|
|
175
180
|
I extends AnyTypes,
|
|
176
181
|
J extends AnyTypes,
|
|
177
182
|
K extends AnyTypes,
|
|
178
|
-
L extends AnyTypes
|
|
183
|
+
L extends AnyTypes,
|
|
179
184
|
>(
|
|
180
185
|
op1: (input: ModelBuilder<A>) => ModelBuilder<B>,
|
|
181
186
|
op2: (input: ModelBuilder<B>) => ModelBuilder<C>,
|
|
@@ -187,7 +192,7 @@ export function model<
|
|
|
187
192
|
op8: (input: ModelBuilder<H>) => ModelBuilder<I>,
|
|
188
193
|
op9: (input: ModelBuilder<I>) => ModelBuilder<J>,
|
|
189
194
|
op10: (input: ModelBuilder<J>) => ModelBuilder<K>,
|
|
190
|
-
op11: (input: ModelBuilder<K>) => ModelBuilder<L
|
|
195
|
+
op11: (input: ModelBuilder<K>) => ModelBuilder<L>,
|
|
191
196
|
): (input: Builder<A>) => Builder<L>
|
|
192
197
|
export function model<
|
|
193
198
|
A extends AnyTypes,
|
|
@@ -202,7 +207,7 @@ export function model<
|
|
|
202
207
|
J extends AnyTypes,
|
|
203
208
|
K extends AnyTypes,
|
|
204
209
|
L extends AnyTypes,
|
|
205
|
-
M extends AnyTypes
|
|
210
|
+
M extends AnyTypes,
|
|
206
211
|
>(
|
|
207
212
|
op1: (input: ModelBuilder<A>) => ModelBuilder<B>,
|
|
208
213
|
op2: (input: ModelBuilder<B>) => ModelBuilder<C>,
|
|
@@ -215,7 +220,7 @@ export function model<
|
|
|
215
220
|
op9: (input: ModelBuilder<I>) => ModelBuilder<J>,
|
|
216
221
|
op10: (input: ModelBuilder<J>) => ModelBuilder<K>,
|
|
217
222
|
op11: (input: ModelBuilder<K>) => ModelBuilder<L>,
|
|
218
|
-
op12: (input: ModelBuilder<L>) => ModelBuilder<M
|
|
223
|
+
op12: (input: ModelBuilder<L>) => ModelBuilder<M>,
|
|
219
224
|
): (input: Builder<A>) => Builder<M>
|
|
220
225
|
export function model<
|
|
221
226
|
A extends AnyTypes,
|
|
@@ -231,7 +236,7 @@ export function model<
|
|
|
231
236
|
K extends AnyTypes,
|
|
232
237
|
L extends AnyTypes,
|
|
233
238
|
M extends AnyTypes,
|
|
234
|
-
N extends AnyTypes
|
|
239
|
+
N extends AnyTypes,
|
|
235
240
|
>(
|
|
236
241
|
op1: (input: ModelBuilder<A>) => ModelBuilder<B>,
|
|
237
242
|
op2: (input: ModelBuilder<B>) => ModelBuilder<C>,
|
|
@@ -245,7 +250,7 @@ export function model<
|
|
|
245
250
|
op10: (input: ModelBuilder<J>) => ModelBuilder<K>,
|
|
246
251
|
op11: (input: ModelBuilder<K>) => ModelBuilder<L>,
|
|
247
252
|
op12: (input: ModelBuilder<L>) => ModelBuilder<M>,
|
|
248
|
-
op13: (input: ModelBuilder<M>) => ModelBuilder<N
|
|
253
|
+
op13: (input: ModelBuilder<M>) => ModelBuilder<N>,
|
|
249
254
|
): (input: Builder<A>) => Builder<N>
|
|
250
255
|
export function model<
|
|
251
256
|
A extends AnyTypes,
|
|
@@ -262,7 +267,7 @@ export function model<
|
|
|
262
267
|
L extends AnyTypes,
|
|
263
268
|
M extends AnyTypes,
|
|
264
269
|
N extends AnyTypes,
|
|
265
|
-
O extends AnyTypes
|
|
270
|
+
O extends AnyTypes,
|
|
266
271
|
>(
|
|
267
272
|
op1: (input: ModelBuilder<A>) => ModelBuilder<B>,
|
|
268
273
|
op2: (input: ModelBuilder<B>) => ModelBuilder<C>,
|
|
@@ -277,7 +282,7 @@ export function model<
|
|
|
277
282
|
op11: (input: ModelBuilder<K>) => ModelBuilder<L>,
|
|
278
283
|
op12: (input: ModelBuilder<L>) => ModelBuilder<M>,
|
|
279
284
|
op13: (input: ModelBuilder<M>) => ModelBuilder<N>,
|
|
280
|
-
op14: (input: ModelBuilder<N>) => ModelBuilder<O
|
|
285
|
+
op14: (input: ModelBuilder<N>) => ModelBuilder<O>,
|
|
281
286
|
): (input: Builder<A>) => Builder<O>
|
|
282
287
|
export function model<
|
|
283
288
|
A extends AnyTypes,
|
|
@@ -295,7 +300,7 @@ export function model<
|
|
|
295
300
|
M extends AnyTypes,
|
|
296
301
|
N extends AnyTypes,
|
|
297
302
|
O extends AnyTypes,
|
|
298
|
-
P extends AnyTypes
|
|
303
|
+
P extends AnyTypes,
|
|
299
304
|
>(
|
|
300
305
|
op1: (input: ModelBuilder<A>) => ModelBuilder<B>,
|
|
301
306
|
op2: (input: ModelBuilder<B>) => ModelBuilder<C>,
|
|
@@ -311,7 +316,7 @@ export function model<
|
|
|
311
316
|
op12: (input: ModelBuilder<L>) => ModelBuilder<M>,
|
|
312
317
|
op13: (input: ModelBuilder<M>) => ModelBuilder<N>,
|
|
313
318
|
op14: (input: ModelBuilder<N>) => ModelBuilder<O>,
|
|
314
|
-
op15: (input: ModelBuilder<O>) => ModelBuilder<P
|
|
319
|
+
op15: (input: ModelBuilder<O>) => ModelBuilder<P>,
|
|
315
320
|
): (input: Builder<A>) => Builder<P>
|
|
316
321
|
|
|
317
322
|
export function model(...ops: any[]) {
|
|
@@ -327,20 +332,40 @@ export function model(...ops: any[]) {
|
|
|
327
332
|
export type RelationshipHelper<Props = unknown> = <
|
|
328
333
|
T extends AnyTypes,
|
|
329
334
|
From extends string & T['Fqn'],
|
|
330
|
-
To extends string & T['Fqn']
|
|
335
|
+
To extends string & T['Fqn'],
|
|
331
336
|
>(
|
|
332
337
|
from: From,
|
|
333
338
|
to: To,
|
|
334
|
-
titleOrProps?: string | Props
|
|
339
|
+
titleOrProps?: string | Props,
|
|
335
340
|
) => (builder: ModelBuilder<T>) => ModelBuilder<T>
|
|
336
341
|
|
|
337
342
|
export type NestedRelationshipHelper<Props = unknown> = <T extends AnyTypesNested, To extends string & T['Fqn']>(
|
|
338
343
|
to: To,
|
|
339
|
-
titleOrProps?: string | Props
|
|
344
|
+
titleOrProps?: string | Props,
|
|
340
345
|
) => (builder: ModelBuilder<T>) => ModelBuilder<T>
|
|
341
346
|
|
|
347
|
+
type AddElementHelper<T = unknown> = <const Id extends string>(
|
|
348
|
+
id: ValidId<Id>,
|
|
349
|
+
titleOrProps?: string | T,
|
|
350
|
+
) => AddElement<Id>
|
|
351
|
+
|
|
352
|
+
export type AddElementHelpers<T extends AnyTypes> = T extends
|
|
353
|
+
Types<infer Kinds extends string, any, any, any, any, any, any, any> ? {
|
|
354
|
+
[Kind in Kinds]: AddElementHelper<T['NewElementProps']>
|
|
355
|
+
}
|
|
356
|
+
: Invalid<'No Element Kinds'>
|
|
357
|
+
|
|
342
358
|
export type ModelHelpers<T extends AnyTypes> = AddElementHelpers<T> & {
|
|
343
359
|
model: typeof model
|
|
344
360
|
rel: RelationshipHelper<T['NewRelationshipProps']>
|
|
345
361
|
relTo: NestedRelationshipHelper<T['NewRelationshipProps']>
|
|
346
362
|
}
|
|
363
|
+
|
|
364
|
+
export type ModelBuilderFunction<A extends AnyTypes, B extends AnyTypes> = (
|
|
365
|
+
helpers: ModelHelpers<A> & {
|
|
366
|
+
_: ModelHelpers<A>['model']
|
|
367
|
+
},
|
|
368
|
+
add: ModelHelpers<A>['model'],
|
|
369
|
+
) =>
|
|
370
|
+
| ((builder: ModelBuilder<A>) => ModelBuilder<B>)
|
|
371
|
+
| ((builder: Builder<A>) => Builder<B>)
|