@likec4/core 1.31.0 → 1.32.1
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/README.md +407 -5
- package/dist/builder/index.d.mts +221 -42
- package/dist/builder/index.mjs +118 -65
- package/dist/compute-view/index.d.mts +23 -7
- package/dist/compute-view/index.mjs +11 -6
- package/dist/compute-view/relationships-view/index.d.mts +9 -7
- package/dist/compute-view/relationships-view/index.mjs +3 -2
- package/dist/index.d.mts +10 -14
- package/dist/index.mjs +9 -6
- package/dist/model/index.d.mts +173 -19
- package/dist/model/index.mjs +6 -1
- package/dist/shared/core.BaYE_r29.d.mts +258 -0
- package/dist/shared/core.Bk7wEZFG.mjs +276 -0
- package/dist/shared/core.BrCnZFTn.mjs +32 -0
- package/dist/shared/core.BuO4ncfY.d.mts +146 -0
- package/dist/shared/{core.Bq753SYD.mjs → core.CBpKAlhj.mjs} +2012 -4422
- package/dist/shared/core.CUYDgv2-.mjs +214 -0
- package/dist/shared/{core.Cu-UdkSl.mjs → core.CpXlRyE5.mjs} +7 -494
- package/dist/shared/{core.C-YXI-43.mjs → core.Cy9smucx.mjs} +3 -1
- package/dist/shared/core.CywrQs86.d.mts +31 -0
- package/dist/shared/core.DXzRBkuI.d.mts +1264 -0
- package/dist/shared/core.DoK86JEe.mjs +518 -0
- package/dist/shared/{core.D2830qgg.d.mts → core.Pf5I9o0e.d.mts} +1 -1
- package/dist/shared/core.cbA9VZ02.mjs +2681 -0
- package/dist/shared/{core.CQXU9DF7.mjs → core.rmvsy0n3.mjs} +23 -32
- package/dist/shared/core.znRaUX_A.d.mts +920 -0
- package/dist/types/aux.d.mts +3 -0
- package/dist/types/aux.mjs +1 -0
- package/dist/types/index.d.mts +7 -45
- package/dist/types/index.mjs +130 -3
- package/dist/utils/index.d.mts +221 -53
- package/dist/utils/index.mjs +14 -10
- package/package.json +16 -8
- package/src/builder/Builder.deploymentModel.ts +82 -18
- package/src/builder/Builder.element.ts +40 -20
- package/src/builder/Builder.model.ts +66 -17
- package/src/builder/Builder.ts +168 -76
- package/src/builder/Builder.view-common.ts +35 -17
- package/src/builder/Builder.view-deployment.ts +25 -25
- package/src/builder/Builder.view-element.ts +13 -12
- package/src/builder/Builder.views.ts +12 -7
- package/src/builder/__snapshots__/Builder-style1.spec.ts.snap +62 -34
- package/src/builder/__snapshots__/Builder-style2.compute-model.json5 +319 -0
- package/src/builder/__snapshots__/Builder-style2.spec.ts.snap +45 -24
- package/src/builder/_types.ts +34 -27
- package/src/compute-view/compute-view.ts +31 -34
- package/src/compute-view/deployment-view/__test__/TestHelper.ts +27 -14
- package/src/compute-view/deployment-view/__test__/fixture.ts +15 -13
- package/src/compute-view/deployment-view/_types.ts +10 -10
- package/src/compute-view/deployment-view/clean-connections.ts +5 -7
- package/src/compute-view/deployment-view/compute.ts +16 -13
- package/src/compute-view/deployment-view/memory/memory.ts +5 -6
- package/src/compute-view/deployment-view/predicates/deploymentRefs.ts +4 -5
- package/src/compute-view/deployment-view/predicates/relation-direct.ts +25 -50
- package/src/compute-view/deployment-view/predicates/relation-in-out.ts +5 -7
- package/src/compute-view/deployment-view/predicates/relation-incoming.ts +7 -11
- package/src/compute-view/deployment-view/predicates/relation-outgoing.ts +7 -10
- package/src/compute-view/deployment-view/predicates/utils.ts +37 -31
- package/src/compute-view/deployment-view/predicates/wildcard.ts +3 -2
- package/src/compute-view/deployment-view/stages/stage-final.ts +2 -2
- package/src/compute-view/deployment-view/stages/stage-include.ts +1 -1
- package/src/compute-view/deployment-view/utils.ts +79 -72
- package/src/compute-view/dynamic-view/__test__/fixture.ts +20 -11
- package/src/compute-view/dynamic-view/compute.ts +60 -53
- package/src/compute-view/element-view/__test__/TestHelper.ts +53 -29
- package/src/compute-view/element-view/__test__/__snapshots__/legacy.spec.ts.snap +26 -26
- package/src/compute-view/element-view/__test__/fixture.ts +134 -83
- package/src/compute-view/element-view/_types.ts +14 -19
- package/src/compute-view/element-view/clean-connections.ts +12 -8
- package/src/compute-view/element-view/compute.ts +61 -51
- package/src/compute-view/element-view/memory/NodeGroup.ts +8 -9
- package/src/compute-view/element-view/memory/memory.ts +22 -22
- package/src/compute-view/element-view/memory/stage-include.ts +5 -3
- package/src/compute-view/element-view/predicates/_utils.ts +18 -14
- package/src/compute-view/element-view/predicates/element-expand.ts +4 -5
- package/src/compute-view/element-view/predicates/element-kind-tag.ts +3 -4
- package/src/compute-view/element-view/predicates/element-ref.ts +3 -4
- package/src/compute-view/element-view/predicates/relation-direct.ts +16 -12
- package/src/compute-view/element-view/predicates/relation-in-out.ts +7 -8
- package/src/compute-view/element-view/predicates/relation-in.ts +19 -26
- package/src/compute-view/element-view/predicates/relation-out.ts +20 -21
- package/src/compute-view/element-view/predicates/wildcard.ts +3 -3
- package/src/compute-view/element-view/utils.ts +25 -23
- package/src/compute-view/index.ts +1 -1
- package/src/compute-view/memory/AbstractStageExclude.ts +3 -4
- package/src/compute-view/memory/AbstractStageInclude.ts +1 -1
- package/src/compute-view/memory/_types.ts +3 -2
- package/src/compute-view/relationships-view/_types.ts +3 -4
- package/src/compute-view/relationships-view/compute.ts +8 -11
- package/src/compute-view/relationships-view/layout.ts +6 -6
- package/src/compute-view/relationships-view/utils.ts +4 -4
- package/src/compute-view/utils/ancestorsOfNode.ts +7 -7
- package/src/compute-view/utils/applyCustomElementProperties.ts +16 -8
- package/src/compute-view/utils/applyCustomRelationProperties.ts +19 -9
- package/src/compute-view/utils/applyViewRuleStyles.ts +18 -10
- package/src/compute-view/utils/buildComputedNodes.ts +40 -40
- package/src/compute-view/utils/buildElementNotations.ts +14 -14
- package/src/compute-view/utils/elementExpressionToPredicate.ts +14 -15
- package/src/compute-view/utils/link-nodes-with-edges.ts +6 -4
- package/src/compute-view/utils/merge-props-from-relationships.ts +52 -20
- package/src/compute-view/utils/relationExpressionToPredicates.ts +19 -19
- package/src/compute-view/utils/resolve-extended-views.ts +8 -7
- package/src/compute-view/utils/resolve-global-rules.ts +31 -26
- package/src/compute-view/utils/topological-sort.ts +14 -14
- package/src/compute-view/utils/view-hash.ts +2 -2
- package/src/compute-view/utils/with-readable-edges.ts +9 -5
- package/src/index.ts +0 -32
- package/src/model/DeploymentElementModel.ts +171 -144
- package/src/model/DeploymentModel.ts +88 -65
- package/src/model/ElementModel.ts +85 -74
- package/src/model/LikeC4Model.ts +430 -241
- package/src/model/RelationModel.ts +63 -29
- package/src/model/__test__/fixture.ts +50 -36
- package/src/model/connection/Connection.ts +2 -2
- package/src/model/connection/deployment/DeploymentConnectionModel.ts +21 -24
- package/src/model/connection/deployment/find.ts +1 -1
- package/src/model/connection/model/ConnectionModel.ts +21 -20
- package/src/model/connection/model/find.ts +7 -7
- package/src/model/connection/ops.ts +6 -6
- package/src/model/guards.ts +66 -14
- package/src/model/index.ts +20 -7
- package/src/model/types.ts +41 -97
- package/src/model/view/EdgeModel.ts +47 -41
- package/src/model/view/LikeC4ViewModel.ts +130 -80
- package/src/model/view/NodeModel.ts +102 -96
- package/src/theme/element.ts +1 -1
- package/src/theme/index.ts +9 -9
- package/src/theme/relationships.ts +1 -1
- package/src/types/_common.ts +21 -15
- package/src/types/aux.ts +285 -0
- package/src/types/const.ts +34 -0
- package/src/types/expression-model.ts +292 -0
- package/src/types/expression.ts +311 -0
- package/src/types/fqnRef.ts +88 -0
- package/src/types/geometry.ts +131 -0
- package/src/types/global.ts +10 -8
- package/src/types/index.ts +39 -201
- package/src/types/model-data.ts +52 -84
- package/src/types/model-deployment.ts +87 -0
- package/src/types/model-dump.ts +72 -0
- package/src/types/model-logical.ts +111 -0
- package/src/types/model-spec.ts +81 -0
- package/src/types/operators.ts +51 -52
- package/src/types/scalar.ts +114 -0
- package/src/types/{theme.ts → styles.ts} +55 -15
- package/src/types/view-changes.ts +4 -5
- package/src/types/view-common.ts +157 -0
- package/src/types/view-computed.ts +113 -0
- package/src/types/view-layouted.ts +82 -0
- package/src/types/view-parsed.deployment.ts +40 -0
- package/src/types/view-parsed.dynamic.ts +78 -0
- package/src/types/view-parsed.element.ts +65 -0
- package/src/types/view.ts +122 -542
- package/src/utils/compare-natural.ts +43 -1
- package/src/utils/getOrCreate.ts +0 -34
- package/src/utils/index.ts +7 -12
- package/src/utils/iterable/filter.ts +1 -1
- package/src/utils/iterable/find.ts +3 -1
- package/src/utils/iterable/head.ts +22 -0
- package/src/utils/iterable/index.ts +1 -0
- package/src/utils/iterable/map.ts +1 -1
- package/src/utils/iterable/reduce.ts +1 -1
- package/src/utils/iterable/some.ts +1 -1
- package/src/utils/memoize-prop.ts +30 -0
- package/src/utils/object-hash.ts +1 -1
- package/src/utils/relations.ts +14 -11
- package/src/utils/string-hash.ts +1 -1
- package/dist/shared/core.CQDU11hR.d.mts +0 -753
- package/dist/shared/core.DJvmfnEi.d.mts +0 -1153
- package/dist/shared/core.DgfwjBtu.mjs +0 -495
- package/dist/shared/core.Dx7siloV.d.mts +0 -146
- package/dist/shared/core.SjLhMA7a.d.mts +0 -62
- package/src/builder/__snapshots__/Builder.spec.ts.snap +0 -374
- package/src/compute-view/element-view/predicates.ts +0 -520
- package/src/compute-view/utils/uniqueTags.ts +0 -21
- package/src/types/deployments.ts +0 -170
- package/src/types/element.ts +0 -109
- package/src/types/expression-v2-model.ts +0 -314
- package/src/types/expression-v2.ts +0 -392
- package/src/types/overview-graph.ts +0 -43
- package/src/types/relation.ts +0 -61
- package/src/types/scalars.ts +0 -39
- package/src/types/view-notation.ts +0 -9
- package/src/utils/graphlib.ts +0 -10
- /package/src/{errors/index.ts → utils/invariant.ts} +0 -0
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@likec4/core",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.32.1",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"homepage": "https://likec4.dev",
|
|
6
6
|
"author": "Denis Davydkov <denis@davydkov.com>",
|
|
@@ -69,6 +69,14 @@
|
|
|
69
69
|
"default": "./dist/utils/index.mjs"
|
|
70
70
|
}
|
|
71
71
|
},
|
|
72
|
+
"./types/aux": {
|
|
73
|
+
"sources": "./src/types/aux.ts",
|
|
74
|
+
"default": {
|
|
75
|
+
"types": "./dist/types/aux.d.mts",
|
|
76
|
+
"import": "./dist/types/aux.mjs",
|
|
77
|
+
"default": "./dist/types/aux.mjs"
|
|
78
|
+
}
|
|
79
|
+
},
|
|
72
80
|
"./types": {
|
|
73
81
|
"sources": "./src/types/index.ts",
|
|
74
82
|
"default": {
|
|
@@ -85,11 +93,11 @@
|
|
|
85
93
|
"access": "public"
|
|
86
94
|
},
|
|
87
95
|
"dependencies": {
|
|
88
|
-
"type-fest": "^4.
|
|
96
|
+
"type-fest": "^4.41.0"
|
|
89
97
|
},
|
|
90
98
|
"devDependencies": {
|
|
91
99
|
"@dagrejs/dagre": "1.1.4",
|
|
92
|
-
"@mantine/colors-generator": "8.0
|
|
100
|
+
"@mantine/colors-generator": "8.1.0",
|
|
93
101
|
"@types/natural-compare-lite": "^1.4.2",
|
|
94
102
|
"@types/object-hash": "^3.0.6",
|
|
95
103
|
"chroma-js": "^3.1.2",
|
|
@@ -102,12 +110,12 @@
|
|
|
102
110
|
"natural-compare-lite": "^1.4.0",
|
|
103
111
|
"object-hash": "^3.0.0",
|
|
104
112
|
"obliterator": "^2.0.5",
|
|
105
|
-
"remeda": "^2.
|
|
106
|
-
"turbo": "^2.5.
|
|
113
|
+
"remeda": "^2.23.0",
|
|
114
|
+
"turbo": "^2.5.4",
|
|
107
115
|
"typescript": "^5.8.3",
|
|
108
116
|
"unbuild": "^3.5.0",
|
|
109
|
-
"vitest": "
|
|
110
|
-
"@likec4/tsconfig": "1.
|
|
117
|
+
"vitest": "3.2.3",
|
|
118
|
+
"@likec4/tsconfig": "1.32.1"
|
|
111
119
|
},
|
|
112
120
|
"scripts": {
|
|
113
121
|
"typecheck": "tsc -b --verbose",
|
|
@@ -115,7 +123,7 @@
|
|
|
115
123
|
"lint": "run -T eslint src/ --fix",
|
|
116
124
|
"test": "vitest run --no-isolate",
|
|
117
125
|
"test:watch": "vitest",
|
|
118
|
-
"clean": "
|
|
126
|
+
"clean": "pnpm rimraf dist lib",
|
|
119
127
|
"pack": "pnpm pack"
|
|
120
128
|
}
|
|
121
129
|
}
|
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
import type { LastArrayElement, Split } from 'type-fest'
|
|
2
|
-
import type { DeploymentElement,
|
|
2
|
+
import type { DeploymentElement, DeploymentFqn, DeploymentRelationship } from '../types'
|
|
3
3
|
import type { AnyTypes, Invalid, Types, ValidId } from './_types'
|
|
4
4
|
import type { Builder } from './Builder'
|
|
5
5
|
import type { AddDeploymentNode } from './Builder.deployment'
|
|
6
6
|
|
|
7
7
|
export interface DeploymentModelBuilder<T extends AnyTypes> extends Builder<T> {
|
|
8
8
|
__addDeployment(node: DeploymentElement): Builder<T>
|
|
9
|
-
__addDeploymentRelation(rel: Omit<
|
|
9
|
+
__addDeploymentRelation(rel: Omit<DeploymentRelationship, 'id'>): Builder<T>
|
|
10
10
|
/**
|
|
11
11
|
* Create a fully qualified name from an id (for nested models)
|
|
12
12
|
*/
|
|
13
|
-
|
|
13
|
+
__deploymentFqn(id: string): DeploymentFqn
|
|
14
14
|
}
|
|
15
15
|
|
|
16
16
|
export function deployment<A extends AnyTypes>(): (input: Builder<A>) => Builder<A>
|
|
@@ -328,7 +328,23 @@ export function deployment(...ops: any[]) {
|
|
|
328
328
|
type NameFromFqn<FQN extends string> = LastArrayElement<Split<FQN, '.'>>
|
|
329
329
|
|
|
330
330
|
export type AddDeployedInstance<Props = unknown> = {
|
|
331
|
-
|
|
331
|
+
/**
|
|
332
|
+
* @example
|
|
333
|
+
* ```ts
|
|
334
|
+
* builder.deployment(({ node, instanceOf }, _) =>
|
|
335
|
+
* _(
|
|
336
|
+
* node('node1').with(
|
|
337
|
+
* // Only FQN of the element
|
|
338
|
+
* instanceOf('cloud.backend'),
|
|
339
|
+
* // ID, FQN of the element and additional props
|
|
340
|
+
* instanceOf('b2', 'cloud.backend', {
|
|
341
|
+
* tags: ['tag2'],
|
|
342
|
+
* }),
|
|
343
|
+
* ),
|
|
344
|
+
* )
|
|
345
|
+
* )
|
|
346
|
+
* ```
|
|
347
|
+
*/
|
|
332
348
|
<
|
|
333
349
|
const T extends AnyTypes,
|
|
334
350
|
Id extends string & T['Fqn'],
|
|
@@ -336,7 +352,23 @@ export type AddDeployedInstance<Props = unknown> = {
|
|
|
336
352
|
target: Id,
|
|
337
353
|
): (builder: DeploymentModelBuilder<T>) => DeploymentModelBuilder<Types.AddDeploymentFqn<T, NameFromFqn<Id>>>
|
|
338
354
|
|
|
339
|
-
|
|
355
|
+
/**
|
|
356
|
+
* @example
|
|
357
|
+
* ```ts
|
|
358
|
+
* builder.deployment(({ node, instanceOf }, _) =>
|
|
359
|
+
* _(
|
|
360
|
+
* node('node1').with(
|
|
361
|
+
* // Only FQN of the element
|
|
362
|
+
* instanceOf('cloud.backend'),
|
|
363
|
+
* // ID, FQN of the element and additional props
|
|
364
|
+
* instanceOf('b2', 'cloud.backend', {
|
|
365
|
+
* tags: ['tag2'],
|
|
366
|
+
* }),
|
|
367
|
+
* ),
|
|
368
|
+
* )
|
|
369
|
+
* )
|
|
370
|
+
* ```
|
|
371
|
+
*/
|
|
340
372
|
<
|
|
341
373
|
const Id extends string,
|
|
342
374
|
T extends AnyTypes,
|
|
@@ -348,10 +380,32 @@ export type AddDeployedInstance<Props = unknown> = {
|
|
|
348
380
|
): (builder: DeploymentModelBuilder<T>) => DeploymentModelBuilder<Types.AddDeploymentFqn<T, Id>>
|
|
349
381
|
}
|
|
350
382
|
|
|
351
|
-
type AddDeploymentNodeHelper<T = unknown> =
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
383
|
+
type AddDeploymentNodeHelper<T = unknown> =
|
|
384
|
+
/**
|
|
385
|
+
* Adds deployment model
|
|
386
|
+
*
|
|
387
|
+
* @example
|
|
388
|
+
* builder.deployment(({ node }, _) =>
|
|
389
|
+
* _(
|
|
390
|
+
* node('node1').with(
|
|
391
|
+
* node('child1')
|
|
392
|
+
* ),
|
|
393
|
+
* )
|
|
394
|
+
* )
|
|
395
|
+
*
|
|
396
|
+
* @example
|
|
397
|
+
* builder.deployment((_,d) =>
|
|
398
|
+
* d(
|
|
399
|
+
* _.node('node1').with(
|
|
400
|
+
* _.node('child1')
|
|
401
|
+
* ),
|
|
402
|
+
* )
|
|
403
|
+
* )
|
|
404
|
+
*/
|
|
405
|
+
<const Id extends string>(
|
|
406
|
+
id: ValidId<Id>,
|
|
407
|
+
titleOrProps?: string | T,
|
|
408
|
+
) => AddDeploymentNode<Id>
|
|
355
409
|
|
|
356
410
|
export type AddDeploymentNodeHelpers<T extends AnyTypes> = T extends
|
|
357
411
|
Types<any, any, any, any, any, any, infer Kinds extends string, any> ? {
|
|
@@ -359,15 +413,25 @@ export type AddDeploymentNodeHelpers<T extends AnyTypes> = T extends
|
|
|
359
413
|
}
|
|
360
414
|
: Invalid<'No Deployment Kinds'>
|
|
361
415
|
|
|
362
|
-
export type AddDeploymentRelation<Props = unknown> =
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
416
|
+
export type AddDeploymentRelation<Props = unknown> =
|
|
417
|
+
/**
|
|
418
|
+
* @example
|
|
419
|
+
* ```ts
|
|
420
|
+
* rel('source.deployment', 'target.deployment', {
|
|
421
|
+
* title: 'title',
|
|
422
|
+
* tags: ['tag1'],
|
|
423
|
+
* })
|
|
424
|
+
* ```
|
|
425
|
+
*/
|
|
426
|
+
<
|
|
427
|
+
T extends AnyTypes,
|
|
428
|
+
Source extends string & T['DeploymentFqn'],
|
|
429
|
+
Target extends string & T['DeploymentFqn'],
|
|
430
|
+
>(
|
|
431
|
+
source: Source,
|
|
432
|
+
target: Target,
|
|
433
|
+
titleOrProps?: string | Props,
|
|
434
|
+
) => (builder: DeploymentModelBuilder<T>) => DeploymentModelBuilder<T>
|
|
371
435
|
|
|
372
436
|
export type DeloymentModelHelpers<T extends AnyTypes> = AddDeploymentNodeHelpers<T> & {
|
|
373
437
|
instanceOf: AddDeployedInstance<T['NewDeploymentNodeProps']>
|
|
@@ -55,35 +55,55 @@ type FromNested<T extends AnyTypes, N> = N extends TypesNested<any, any, infer F
|
|
|
55
55
|
* Chainable builder to create element
|
|
56
56
|
*/
|
|
57
57
|
export interface AddElement<Id extends string> {
|
|
58
|
+
/**
|
|
59
|
+
* @example
|
|
60
|
+
* ```ts
|
|
61
|
+
* el('a')
|
|
62
|
+
* ```
|
|
63
|
+
*/
|
|
58
64
|
<T extends AnyTypes>(builder: ModelBuilder<T>): ModelBuilder<Types.AddFqn<T, Id>>
|
|
59
65
|
|
|
66
|
+
/**
|
|
67
|
+
* @example
|
|
68
|
+
* ```ts
|
|
69
|
+
* el('a').with()
|
|
70
|
+
* ```
|
|
71
|
+
*/
|
|
60
72
|
with<T extends AnyTypes>(): (builder: ModelBuilder<T>) => ModelBuilder<Types.AddFqn<T, Id>>
|
|
61
73
|
|
|
74
|
+
/**
|
|
75
|
+
* @example
|
|
76
|
+
* ```ts
|
|
77
|
+
* el('a').with(
|
|
78
|
+
* relTo('b')
|
|
79
|
+
* )
|
|
80
|
+
* ```
|
|
81
|
+
*/
|
|
62
82
|
with<
|
|
63
83
|
T extends AnyTypes,
|
|
64
|
-
A extends AnyTypes
|
|
84
|
+
A extends AnyTypes,
|
|
65
85
|
>(
|
|
66
|
-
op1: (input: ModelBuilder<ToNested<T, Id>>) => ModelBuilder<A
|
|
86
|
+
op1: (input: ModelBuilder<ToNested<T, Id>>) => ModelBuilder<A>,
|
|
67
87
|
): (builder: ModelBuilder<T>) => ModelBuilder<FromNested<T, A>>
|
|
68
88
|
|
|
69
89
|
with<
|
|
70
90
|
T extends AnyTypes,
|
|
71
91
|
A extends AnyTypes,
|
|
72
|
-
B extends AnyTypes
|
|
92
|
+
B extends AnyTypes,
|
|
73
93
|
>(
|
|
74
94
|
op1: (input: ModelBuilder<ToNested<T, Id>>) => ModelBuilder<A>,
|
|
75
|
-
op2: (input: ModelBuilder<A>) => ModelBuilder<B
|
|
95
|
+
op2: (input: ModelBuilder<A>) => ModelBuilder<B>,
|
|
76
96
|
): (builder: ModelBuilder<T>) => ModelBuilder<FromNested<T, B>>
|
|
77
97
|
|
|
78
98
|
with<
|
|
79
99
|
T extends AnyTypes,
|
|
80
100
|
A extends AnyTypes,
|
|
81
101
|
B extends AnyTypes,
|
|
82
|
-
C extends AnyTypes
|
|
102
|
+
C extends AnyTypes,
|
|
83
103
|
>(
|
|
84
104
|
op1: (input: ModelBuilder<ToNested<T, Id>>) => ModelBuilder<A>,
|
|
85
105
|
op2: (input: ModelBuilder<A>) => ModelBuilder<B>,
|
|
86
|
-
op3: (input: ModelBuilder<B>) => ModelBuilder<C
|
|
106
|
+
op3: (input: ModelBuilder<B>) => ModelBuilder<C>,
|
|
87
107
|
): (builder: ModelBuilder<T>) => ModelBuilder<FromNested<T, C>>
|
|
88
108
|
|
|
89
109
|
with<
|
|
@@ -91,12 +111,12 @@ export interface AddElement<Id extends string> {
|
|
|
91
111
|
A extends AnyTypes,
|
|
92
112
|
B extends AnyTypes,
|
|
93
113
|
C extends AnyTypes,
|
|
94
|
-
D extends AnyTypes
|
|
114
|
+
D extends AnyTypes,
|
|
95
115
|
>(
|
|
96
116
|
op1: (input: ModelBuilder<ToNested<T, Id>>) => ModelBuilder<A>,
|
|
97
117
|
op2: (input: ModelBuilder<A>) => ModelBuilder<B>,
|
|
98
118
|
op3: (input: ModelBuilder<B>) => ModelBuilder<C>,
|
|
99
|
-
op4: (input: ModelBuilder<C>) => ModelBuilder<D
|
|
119
|
+
op4: (input: ModelBuilder<C>) => ModelBuilder<D>,
|
|
100
120
|
): (builder: ModelBuilder<T>) => ModelBuilder<FromNested<T, D>>
|
|
101
121
|
|
|
102
122
|
with<
|
|
@@ -105,13 +125,13 @@ export interface AddElement<Id extends string> {
|
|
|
105
125
|
B extends AnyTypes,
|
|
106
126
|
C extends AnyTypes,
|
|
107
127
|
D extends AnyTypes,
|
|
108
|
-
E extends AnyTypes
|
|
128
|
+
E extends AnyTypes,
|
|
109
129
|
>(
|
|
110
130
|
op1: (input: ModelBuilder<ToNested<T, Id>>) => ModelBuilder<A>,
|
|
111
131
|
op2: (input: ModelBuilder<A>) => ModelBuilder<B>,
|
|
112
132
|
op3: (input: ModelBuilder<B>) => ModelBuilder<C>,
|
|
113
133
|
op4: (input: ModelBuilder<C>) => ModelBuilder<D>,
|
|
114
|
-
op5: (input: ModelBuilder<D>) => ModelBuilder<E
|
|
134
|
+
op5: (input: ModelBuilder<D>) => ModelBuilder<E>,
|
|
115
135
|
): (builder: ModelBuilder<T>) => ModelBuilder<FromNested<T, E>>
|
|
116
136
|
|
|
117
137
|
with<
|
|
@@ -121,14 +141,14 @@ export interface AddElement<Id extends string> {
|
|
|
121
141
|
C extends AnyTypes,
|
|
122
142
|
D extends AnyTypes,
|
|
123
143
|
E extends AnyTypes,
|
|
124
|
-
F extends AnyTypes
|
|
144
|
+
F extends AnyTypes,
|
|
125
145
|
>(
|
|
126
146
|
op1: (input: ModelBuilder<ToNested<T, Id>>) => ModelBuilder<A>,
|
|
127
147
|
op2: (input: ModelBuilder<A>) => ModelBuilder<B>,
|
|
128
148
|
op3: (input: ModelBuilder<B>) => ModelBuilder<C>,
|
|
129
149
|
op4: (input: ModelBuilder<C>) => ModelBuilder<D>,
|
|
130
150
|
op5: (input: ModelBuilder<D>) => ModelBuilder<E>,
|
|
131
|
-
op6: (input: ModelBuilder<E>) => ModelBuilder<F
|
|
151
|
+
op6: (input: ModelBuilder<E>) => ModelBuilder<F>,
|
|
132
152
|
): (builder: ModelBuilder<T>) => ModelBuilder<FromNested<T, F>>
|
|
133
153
|
|
|
134
154
|
with<
|
|
@@ -139,7 +159,7 @@ export interface AddElement<Id extends string> {
|
|
|
139
159
|
D extends AnyTypes,
|
|
140
160
|
E extends AnyTypes,
|
|
141
161
|
F extends AnyTypes,
|
|
142
|
-
G extends AnyTypes
|
|
162
|
+
G extends AnyTypes,
|
|
143
163
|
>(
|
|
144
164
|
op1: (input: ModelBuilder<ToNested<T, Id>>) => ModelBuilder<A>,
|
|
145
165
|
op2: (input: ModelBuilder<A>) => ModelBuilder<B>,
|
|
@@ -147,7 +167,7 @@ export interface AddElement<Id extends string> {
|
|
|
147
167
|
op4: (input: ModelBuilder<C>) => ModelBuilder<D>,
|
|
148
168
|
op5: (input: ModelBuilder<D>) => ModelBuilder<E>,
|
|
149
169
|
op6: (input: ModelBuilder<E>) => ModelBuilder<F>,
|
|
150
|
-
op7: (input: ModelBuilder<F>) => ModelBuilder<G
|
|
170
|
+
op7: (input: ModelBuilder<F>) => ModelBuilder<G>,
|
|
151
171
|
): (builder: ModelBuilder<T>) => ModelBuilder<FromNested<T, G>>
|
|
152
172
|
|
|
153
173
|
with<
|
|
@@ -159,7 +179,7 @@ export interface AddElement<Id extends string> {
|
|
|
159
179
|
E extends AnyTypes,
|
|
160
180
|
F extends AnyTypes,
|
|
161
181
|
G extends AnyTypes,
|
|
162
|
-
H extends AnyTypes
|
|
182
|
+
H extends AnyTypes,
|
|
163
183
|
>(
|
|
164
184
|
op1: (input: ModelBuilder<ToNested<T, Id>>) => ModelBuilder<A>,
|
|
165
185
|
op2: (input: ModelBuilder<A>) => ModelBuilder<B>,
|
|
@@ -168,7 +188,7 @@ export interface AddElement<Id extends string> {
|
|
|
168
188
|
op5: (input: ModelBuilder<D>) => ModelBuilder<E>,
|
|
169
189
|
op6: (input: ModelBuilder<E>) => ModelBuilder<F>,
|
|
170
190
|
op7: (input: ModelBuilder<F>) => ModelBuilder<G>,
|
|
171
|
-
op8: (input: ModelBuilder<G>) => ModelBuilder<H
|
|
191
|
+
op8: (input: ModelBuilder<G>) => ModelBuilder<H>,
|
|
172
192
|
): (builder: ModelBuilder<T>) => ModelBuilder<FromNested<T, H>>
|
|
173
193
|
|
|
174
194
|
with<
|
|
@@ -181,7 +201,7 @@ export interface AddElement<Id extends string> {
|
|
|
181
201
|
F extends AnyTypes,
|
|
182
202
|
G extends AnyTypes,
|
|
183
203
|
H extends AnyTypes,
|
|
184
|
-
I extends AnyTypes
|
|
204
|
+
I extends AnyTypes,
|
|
185
205
|
>(
|
|
186
206
|
op1: (input: ModelBuilder<ToNested<T, Id>>) => ModelBuilder<A>,
|
|
187
207
|
op2: (input: ModelBuilder<A>) => ModelBuilder<B>,
|
|
@@ -191,7 +211,7 @@ export interface AddElement<Id extends string> {
|
|
|
191
211
|
op6: (input: ModelBuilder<E>) => ModelBuilder<F>,
|
|
192
212
|
op7: (input: ModelBuilder<F>) => ModelBuilder<G>,
|
|
193
213
|
op8: (input: ModelBuilder<G>) => ModelBuilder<H>,
|
|
194
|
-
op9: (input: ModelBuilder<H>) => ModelBuilder<I
|
|
214
|
+
op9: (input: ModelBuilder<H>) => ModelBuilder<I>,
|
|
195
215
|
): (builder: ModelBuilder<T>) => ModelBuilder<FromNested<T, I>>
|
|
196
216
|
|
|
197
217
|
with<
|
|
@@ -205,7 +225,7 @@ export interface AddElement<Id extends string> {
|
|
|
205
225
|
G extends AnyTypes,
|
|
206
226
|
H extends AnyTypes,
|
|
207
227
|
I extends AnyTypes,
|
|
208
|
-
J extends AnyTypes
|
|
228
|
+
J extends AnyTypes,
|
|
209
229
|
>(
|
|
210
230
|
op1: (input: ModelBuilder<ToNested<T, Id>>) => ModelBuilder<A>,
|
|
211
231
|
op2: (input: ModelBuilder<A>) => ModelBuilder<B>,
|
|
@@ -216,6 +236,6 @@ export interface AddElement<Id extends string> {
|
|
|
216
236
|
op7: (input: ModelBuilder<F>) => ModelBuilder<G>,
|
|
217
237
|
op8: (input: ModelBuilder<G>) => ModelBuilder<H>,
|
|
218
238
|
op9: (input: ModelBuilder<H>) => ModelBuilder<I>,
|
|
219
|
-
op10: (input: ModelBuilder<I>) => ModelBuilder<J
|
|
239
|
+
op10: (input: ModelBuilder<I>) => ModelBuilder<J>,
|
|
220
240
|
): (builder: ModelBuilder<T>) => ModelBuilder<FromNested<T, J>>
|
|
221
241
|
}
|
|
@@ -403,25 +403,74 @@ export function model(...ops: any[]) {
|
|
|
403
403
|
}
|
|
404
404
|
}
|
|
405
405
|
|
|
406
|
-
export type RelationshipHelper<Props = unknown> =
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
406
|
+
export type RelationshipHelper<Props = unknown> =
|
|
407
|
+
/**
|
|
408
|
+
* @example
|
|
409
|
+
* ```ts
|
|
410
|
+
* rel('a', 'b')
|
|
411
|
+
* ```
|
|
412
|
+
*
|
|
413
|
+
* @example
|
|
414
|
+
* ```ts
|
|
415
|
+
* rel('a', 'b', {
|
|
416
|
+
* title: 'title',
|
|
417
|
+
* tags: ['tag1'],
|
|
418
|
+
* })
|
|
419
|
+
* ```
|
|
420
|
+
*/
|
|
421
|
+
<
|
|
422
|
+
T extends AnyTypes,
|
|
423
|
+
From extends string & T['Fqn'],
|
|
424
|
+
To extends string & T['Fqn'],
|
|
425
|
+
>(
|
|
426
|
+
from: From,
|
|
427
|
+
to: To,
|
|
428
|
+
titleOrProps?: string | Props,
|
|
429
|
+
) => (builder: ModelBuilder<T>) => ModelBuilder<T>
|
|
415
430
|
|
|
416
|
-
export type NestedRelationshipHelper<Props = unknown> =
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
431
|
+
export type NestedRelationshipHelper<Props = unknown> =
|
|
432
|
+
/**
|
|
433
|
+
* @example
|
|
434
|
+
* ```ts
|
|
435
|
+
* el('a').with(
|
|
436
|
+
* relTo('b')
|
|
437
|
+
* )
|
|
438
|
+
* ```
|
|
439
|
+
*
|
|
440
|
+
* @example
|
|
441
|
+
* ```ts
|
|
442
|
+
* el('a').with(
|
|
443
|
+
* relTo('b', {
|
|
444
|
+
* title: 'title',
|
|
445
|
+
* tags: ['tag1'],
|
|
446
|
+
* })
|
|
447
|
+
* )
|
|
448
|
+
* ```
|
|
449
|
+
*/
|
|
450
|
+
<T extends AnyTypesNested, To extends string & T['Fqn']>(
|
|
451
|
+
to: To,
|
|
452
|
+
titleOrProps?: string | Props,
|
|
453
|
+
) => (builder: ModelBuilder<T>) => ModelBuilder<T>
|
|
420
454
|
|
|
421
|
-
type AddElementHelper<T = unknown> =
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
455
|
+
type AddElementHelper<T = unknown> =
|
|
456
|
+
/**
|
|
457
|
+
* @example
|
|
458
|
+
* ```ts
|
|
459
|
+
* el('some.id')
|
|
460
|
+
* ```
|
|
461
|
+
*
|
|
462
|
+
* @example
|
|
463
|
+
* ```ts
|
|
464
|
+
* el('some.id', {
|
|
465
|
+
* title: 'title',
|
|
466
|
+
* tags: ['tag1'],
|
|
467
|
+
* })
|
|
468
|
+
* ```
|
|
469
|
+
*/
|
|
470
|
+
<const Id extends string>(
|
|
471
|
+
id: ValidId<Id>,
|
|
472
|
+
titleOrProps?: string | T,
|
|
473
|
+
) => AddElement<Id>
|
|
425
474
|
|
|
426
475
|
export type AddElementHelpers<T extends AnyTypes> = T extends
|
|
427
476
|
Types<infer Kinds extends string, any, any, any, any, any, any, any> ? {
|