@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
package/dist/index.d.cts DELETED
@@ -1,1053 +0,0 @@
1
- import { IfNever, TupleToUnion, Tagged, Simplify, LiteralUnion, Class, IsNumericLiteral } from 'type-fest';
2
- import { E as ElementKindSpecification, R as RelationshipKindSpecification, P as ParsedLikeC4Model, a as ElementShape, C as Color, B as BorderStyle, b as RelationshipArrowType, c as RelationshipLineType, d as Element, e as Relation, F as Fqn$1, L as LikeC4View, f as Expression, V as ViewRuleStyle, A as AutoLayoutDirection, N as NonEmptyArray, g as CustomElementExpr, h as CustomRelationExpr, H as HexColorLiteral, T as ThemeColorValues, i as RelationID$1, j as ViewID$1, k as EdgeId$1, l as ComputedView, m as Tag, n as ComputedNode, o as NodeId, p as ElementKind, q as ComputedEdge, r as ComputedLikeC4Model, s as LayoutedLikeC4Model, t as RelationshipKind, D as DiagramView, u as DiagramNode, v as DiagramEdge } from './shared/core.CoLQkcYL.cjs';
3
- export { aG as AndOperator, G as AsFqn, bF as BBox, bc as BasicElementView, bb as BasicView, J as BorderStyles, aS as ColorLiteral, bC as ComputedDynamicView, bB as ComputedElementView, y as CustomColor, bo as CustomColorDefinitions, aP as DefaultArrowType, O as DefaultElementShape, aO as DefaultLineStyle, aQ as DefaultRelationshipColor, M as DefaultThemeColor, bm as DynamicView, bj as DynamicViewIncludeRule, bh as DynamicViewParallelSteps, bl as DynamicViewRule, bg as DynamicViewStep, bi as DynamicViewStepOrParallel, a8 as ElementExpression, a4 as ElementKindExpr, Y as ElementKindSpecificationStyle, bJ as ElementNotation, ac as ElementPredicateExpression, Z as ElementRefExpr, K as ElementShapes, Q as ElementStyle, a6 as ElementTagExpr, aU as ElementThemeColorValues, aV as ElementThemeColors, bf as ElementView, aa as ElementWhereExpr, az as EqualOperator, $ as ExpandedElementExpr, w as Expr, be as ExtendsElementView, aL as Filterable, av as GlobalDynamicPredicates, at as GlobalPredicateId, au as GlobalPredicates, aw as GlobalStyleID, ax as GlobalStyles, I as IconUrl, ag as InOutExpr, ai as IncomingExpr, aC as KindEqual, aY as LikeC4Theme, U as Link, ay as ModelGlobals, x as NonEmptyReadonlyArray, aE as NotOperator, aI as OrOperator, ak as OutgoingExpr, aN as OverviewGraph, z as Point, ae as RelationExpr, am as RelationExpression, ar as RelationPredicateExpression, ao as RelationWhereExpr, aW as RelationshipThemeColorValues, aX as RelationshipThemeColors, bd as ScopedElementView, bu as StepEdgeId, bt as StepEdgeIdLiteral, aA as TagEqual, S as TagSpec, aR as ThemeColor, W as TypedElement, bA as ViewAutoLayout, bI as ViewChange, bH as ViewManualLayout, ba as ViewRule, b6 as ViewRuleAutoLayout, a$ as ViewRuleGlobalPredicateRef, b2 as ViewRuleGlobalStyle, b8 as ViewRuleGroup, aZ as ViewRulePredicate, b4 as ViewRuleStyleOrGlobalRef, by as ViewWithHash, bz as ViewWithNotation, aK as WhereOperator, a2 as WildcardExpr, X as XYPoint, bw as extractStep, bG as getBBoxCenter, bx as getParallelStepsPrefix, aH as isAndOperator, b5 as isAutoLayoutDirection, bD as isComputedDynamicView, bE as isComputedElementView, a1 as isCustomElement, aq as isCustomRelationExpr, bp as isDynamicView, bk as isDynamicViewIncludeRule, bn as isDynamicViewParallelSteps, a9 as isElement, a5 as isElementKindExpr, ad as isElementPredicateExpr, _ as isElementRef, a7 as isElementTagExpr, bq as isElementView, ab as isElementWhere, a0 as isExpandedElementExpr, br as isExtendsElementView, ah as isInOut, aj as isIncoming, aD as isKindEqual, aF as isNotOperator, aJ as isOrOperator, al as isOutgoing, af as isRelation, an as isRelationExpression, as as isRelationPredicateExpr, ap as isRelationWhere, bs as isScopedElementView, bv as isStepEdgeId, aB as isTagEqual, aT as isThemeColor, b7 as isViewRuleAutoLayout, b0 as isViewRuleGlobalPredicateRef, b3 as isViewRuleGlobalStyle, b9 as isViewRuleGroup, a_ as isViewRulePredicate, b1 as isViewRuleStyle, a3 as isWildcard, aM as whereOperatorAsPredicate } from './shared/core.CoLQkcYL.cjs';
4
-
5
- type KeysOf<T> = keyof T extends infer K extends string ? K : never;
6
- type BuilderSpecification = {
7
- elements: {
8
- [kind: string]: Partial<ElementKindSpecification>;
9
- };
10
- relationships?: Record<string, Partial<RelationshipKindSpecification>>;
11
- tags?: [string, ...string[]];
12
- metadataKeys?: [string, ...string[]];
13
- };
14
- type Metadata<MetadataKey extends string> = IfNever<MetadataKey, never, Record<MetadataKey, string>>;
15
- type NewElementProps<Tag, Metadata> = {
16
- title?: string;
17
- description?: string;
18
- technology?: string;
19
- tags?: IfNever<Tag, never, [Tag, ...Tag[]]>;
20
- metadata?: Metadata;
21
- icon?: string;
22
- shape?: ElementShape;
23
- color?: Color;
24
- links?: Array<string | {
25
- title?: string;
26
- url: string;
27
- }>;
28
- style?: {
29
- border?: BorderStyle;
30
- opacity?: number;
31
- };
32
- };
33
- type NewViewProps<Tag> = {
34
- title?: string;
35
- description?: string;
36
- tags?: IfNever<Tag, never, [Tag, ...Tag[]]>;
37
- links?: Array<string | {
38
- title?: string;
39
- url: string;
40
- }>;
41
- };
42
- type NewRelationProps<Kind, Tag, Metadata> = {
43
- kind?: Kind;
44
- title?: string;
45
- description?: string;
46
- technology?: string;
47
- tags?: IfNever<Tag, never, [Tag, ...Tag[]]>;
48
- metadata?: Metadata;
49
- head?: RelationshipArrowType;
50
- tail?: RelationshipArrowType;
51
- line?: RelationshipLineType;
52
- color?: Color;
53
- links?: Array<string | {
54
- title?: string;
55
- url: string;
56
- }>;
57
- };
58
- type Invalid<Message extends string> = Tagged<Message, 'Error'>;
59
- /**
60
- * When building nested objects
61
- */
62
- interface TypesNested<Parent extends string, ElementKind extends string, Fqn extends string, ViewId extends string, RelationshipKind extends string, Tag extends string, MetadataKey extends string> extends Types<ElementKind, Fqn, ViewId, RelationshipKind, Tag, MetadataKey> {
63
- Parent: Parent;
64
- }
65
- type AnyTypes = Types<any, any, any, any, any, any>;
66
- type AnyTypesNested = TypesNested<any, any, any, any, any, any, any>;
67
- /**
68
- * Auxilary type to keep track of the types in builder
69
- */
70
- interface Types<ElementKind extends string, Fqn extends string, ViewId extends string, RelationshipKind extends string, Tag extends string, MetadataKey extends string> {
71
- ElementKind: ElementKind;
72
- Fqn: Fqn;
73
- ViewId: ViewId;
74
- RelationshipKind: RelationshipKind;
75
- Tag: Tag;
76
- MetadataKey: MetadataKey;
77
- Tags: IfNever<Tag, never, [Tag, ...Tag[]]>;
78
- NewElementProps: NewElementProps<Tag, Metadata<MetadataKey>>;
79
- NewRelationshipProps: NewRelationProps<RelationshipKind, Tag, Metadata<MetadataKey>>;
80
- NewViewProps: NewViewProps<Tag>;
81
- }
82
- declare namespace Types {
83
- type FromSpecification<Spec> = Spec extends BuilderSpecification ? Types<KeysOf<Spec['elements']>, never, never, KeysOf<Spec['relationships']>, TupleToUnion<Spec['tags']>, TupleToUnion<Spec['metadataKeys']>> : never;
84
- type AddFqn<T, Id extends string> = T extends TypesNested<infer P, any, any, any, any, any, any> ? TypesNested<P, T['ElementKind'], `${P}.${Id}` | T['Fqn'], T['ViewId'], T['RelationshipKind'], T['Tag'], T['MetadataKey']> : T extends AnyTypes ? Types<T['ElementKind'], Id | T['Fqn'], T['ViewId'], T['RelationshipKind'], T['Tag'], T['MetadataKey']> : never;
85
- type AddView<T, Id extends string> = T extends TypesNested<infer P, any, any, any, any, any, any> ? TypesNested<P, T['ElementKind'], T['Fqn'], Id | T['ViewId'], T['RelationshipKind'], T['Tag'], T['MetadataKey']> : T extends AnyTypes ? Types<T['ElementKind'], T['Fqn'], Id | T['ViewId'], T['RelationshipKind'], T['Tag'], T['MetadataKey']> : never;
86
- type ToParsedLikeC4Model<T> = T extends AnyTypes ? ParsedLikeC4Model<T['ElementKind'], T['RelationshipKind'], T['Tag'], T['Fqn'], T['ViewId']> : never;
87
- }
88
-
89
- type ToNested<T, Id extends string> = T extends TypesNested<infer P, any, infer F, any, any, any, any> ? TypesNested<`${P}.${Id}`, T['ElementKind'], `${P}.${Id}` | F, T['ViewId'], T['RelationshipKind'], T['Tag'], T['MetadataKey']> : T extends AnyTypes ? TypesNested<Id, T['ElementKind'], Id | T['Fqn'], T['ViewId'], T['RelationshipKind'], T['Tag'], T['MetadataKey']> : never;
90
- type FromNested<T extends AnyTypes, N> = N extends TypesNested<any, any, infer F, any, any, any, any> ? T extends TypesNested<infer P, any, any, any, any, any, any> ? TypesNested<P, T['ElementKind'], F, T['ViewId'], T['RelationshipKind'], T['Tag'], T['MetadataKey']> : T extends AnyTypes ? Types<T['ElementKind'], F, T['ViewId'], T['RelationshipKind'], T['Tag'], T['MetadataKey']> : never : never;
91
- /**
92
- * Chainable builder to create element
93
- */
94
- interface AddElement<Id extends string> {
95
- <T extends AnyTypes>(builder: ModelBuilder<T>): ModelBuilder<Types.AddFqn<T, Id>>;
96
- with<T extends AnyTypes, A extends AnyTypes>(op1: (input: ModelBuilder<ToNested<T, Id>>) => ModelBuilder<A>): (builder: ModelBuilder<T>) => ModelBuilder<FromNested<T, A>>;
97
- with<T extends AnyTypes, A extends AnyTypes, B extends AnyTypes>(op1: (input: ModelBuilder<ToNested<T, Id>>) => ModelBuilder<A>, op2: (input: ModelBuilder<A>) => ModelBuilder<B>): (builder: ModelBuilder<T>) => ModelBuilder<FromNested<T, B>>;
98
- with<T extends AnyTypes, A extends AnyTypes, B extends AnyTypes, C extends AnyTypes>(op1: (input: ModelBuilder<ToNested<T, Id>>) => ModelBuilder<A>, op2: (input: ModelBuilder<A>) => ModelBuilder<B>, op3: (input: ModelBuilder<B>) => ModelBuilder<C>): (builder: ModelBuilder<T>) => ModelBuilder<FromNested<T, C>>;
99
- with<T extends AnyTypes, A extends AnyTypes, B extends AnyTypes, C extends AnyTypes, D extends AnyTypes>(op1: (input: ModelBuilder<ToNested<T, Id>>) => ModelBuilder<A>, op2: (input: ModelBuilder<A>) => ModelBuilder<B>, op3: (input: ModelBuilder<B>) => ModelBuilder<C>, op4: (input: ModelBuilder<C>) => ModelBuilder<D>): (builder: ModelBuilder<T>) => ModelBuilder<FromNested<T, D>>;
100
- with<T extends AnyTypes, A extends AnyTypes, B extends AnyTypes, C extends AnyTypes, D extends AnyTypes, E extends AnyTypes>(op1: (input: ModelBuilder<ToNested<T, Id>>) => ModelBuilder<A>, op2: (input: ModelBuilder<A>) => ModelBuilder<B>, op3: (input: ModelBuilder<B>) => ModelBuilder<C>, op4: (input: ModelBuilder<C>) => ModelBuilder<D>, op5: (input: ModelBuilder<D>) => ModelBuilder<E>): (builder: ModelBuilder<T>) => ModelBuilder<FromNested<T, E>>;
101
- with<T extends AnyTypes, A extends AnyTypes, B extends AnyTypes, C extends AnyTypes, D extends AnyTypes, E extends AnyTypes, F extends AnyTypes>(op1: (input: ModelBuilder<ToNested<T, Id>>) => ModelBuilder<A>, op2: (input: ModelBuilder<A>) => ModelBuilder<B>, op3: (input: ModelBuilder<B>) => ModelBuilder<C>, op4: (input: ModelBuilder<C>) => ModelBuilder<D>, op5: (input: ModelBuilder<D>) => ModelBuilder<E>, op6: (input: ModelBuilder<E>) => ModelBuilder<F>): (builder: ModelBuilder<T>) => ModelBuilder<FromNested<T, F>>;
102
- with<T extends AnyTypes, A extends AnyTypes, B extends AnyTypes, C extends AnyTypes, D extends AnyTypes, E extends AnyTypes, F extends AnyTypes, G extends AnyTypes>(op1: (input: ModelBuilder<ToNested<T, Id>>) => ModelBuilder<A>, op2: (input: ModelBuilder<A>) => ModelBuilder<B>, op3: (input: ModelBuilder<B>) => ModelBuilder<C>, op4: (input: ModelBuilder<C>) => ModelBuilder<D>, op5: (input: ModelBuilder<D>) => ModelBuilder<E>, op6: (input: ModelBuilder<E>) => ModelBuilder<F>, op7: (input: ModelBuilder<F>) => ModelBuilder<G>): (builder: ModelBuilder<T>) => ModelBuilder<FromNested<T, G>>;
103
- with<T extends AnyTypes, A extends AnyTypes, B extends AnyTypes, C extends AnyTypes, D extends AnyTypes, E extends AnyTypes, F extends AnyTypes, G extends AnyTypes, H extends AnyTypes>(op1: (input: ModelBuilder<ToNested<T, Id>>) => ModelBuilder<A>, op2: (input: ModelBuilder<A>) => ModelBuilder<B>, op3: (input: ModelBuilder<B>) => ModelBuilder<C>, op4: (input: ModelBuilder<C>) => ModelBuilder<D>, op5: (input: ModelBuilder<D>) => ModelBuilder<E>, op6: (input: ModelBuilder<E>) => ModelBuilder<F>, op7: (input: ModelBuilder<F>) => ModelBuilder<G>, op8: (input: ModelBuilder<G>) => ModelBuilder<H>): (builder: ModelBuilder<T>) => ModelBuilder<FromNested<T, H>>;
104
- with<T extends AnyTypes, A extends AnyTypes, B extends AnyTypes, C extends AnyTypes, D extends AnyTypes, E extends AnyTypes, F extends AnyTypes, G extends AnyTypes, H extends AnyTypes, I extends AnyTypes>(op1: (input: ModelBuilder<ToNested<T, Id>>) => ModelBuilder<A>, op2: (input: ModelBuilder<A>) => ModelBuilder<B>, op3: (input: ModelBuilder<B>) => ModelBuilder<C>, op4: (input: ModelBuilder<C>) => ModelBuilder<D>, op5: (input: ModelBuilder<D>) => ModelBuilder<E>, op6: (input: ModelBuilder<E>) => ModelBuilder<F>, op7: (input: ModelBuilder<F>) => ModelBuilder<G>, op8: (input: ModelBuilder<G>) => ModelBuilder<H>, op9: (input: ModelBuilder<H>) => ModelBuilder<I>): (builder: ModelBuilder<T>) => ModelBuilder<FromNested<T, I>>;
105
- with<T extends AnyTypes, A extends AnyTypes, B extends AnyTypes, C extends AnyTypes, D extends AnyTypes, E extends AnyTypes, F extends AnyTypes, G extends AnyTypes, H extends AnyTypes, I extends AnyTypes, J extends AnyTypes>(op1: (input: ModelBuilder<ToNested<T, Id>>) => ModelBuilder<A>, op2: (input: ModelBuilder<A>) => ModelBuilder<B>, op3: (input: ModelBuilder<B>) => ModelBuilder<C>, op4: (input: ModelBuilder<C>) => ModelBuilder<D>, op5: (input: ModelBuilder<D>) => ModelBuilder<E>, op6: (input: ModelBuilder<E>) => ModelBuilder<F>, op7: (input: ModelBuilder<F>) => ModelBuilder<G>, op8: (input: ModelBuilder<G>) => ModelBuilder<H>, op9: (input: ModelBuilder<H>) => ModelBuilder<I>, op10: (input: ModelBuilder<I>) => ModelBuilder<J>): (builder: ModelBuilder<T>) => ModelBuilder<FromNested<T, J>>;
106
- }
107
- type AddElementHelper<T = unknown> = <const Id extends string>(id: Id, titleOrProps?: string | T) => AddElement<Id>;
108
- type AddElementHelpers<T extends AnyTypes> = T extends Types<infer Kinds extends string, any, any, any, any, any> ? {
109
- [Kind in Kinds]: AddElementHelper<T['NewElementProps']>;
110
- } : Invalid<'No Element Kinds'>;
111
-
112
- interface ModelBuilder<T extends AnyTypes> {
113
- addElement(element: Element): Builder<T>;
114
- addRelation(relation: Omit<Relation, 'id'>): Builder<T>;
115
- /**
116
- * Create a fully qualified name from an id (for nested models)
117
- */
118
- fqn(id: string): Fqn$1;
119
- addSourcelessRelation(relation: Omit<Relation, 'id' | 'source'>): Builder<T>;
120
- }
121
- declare function model<A extends AnyTypes, B extends AnyTypes>(op1: (input: ModelBuilder<A>) => ModelBuilder<B>): (input: Builder<A>) => Builder<B>;
122
- declare function model<A extends AnyTypes, B extends AnyTypes, C extends AnyTypes>(op1: (input: ModelBuilder<A>) => ModelBuilder<B>, op2: (input: ModelBuilder<B>) => ModelBuilder<C>): (input: Builder<A>) => Builder<C>;
123
- declare function model<A extends AnyTypes, B extends AnyTypes, C extends AnyTypes, D extends AnyTypes>(op1: (input: ModelBuilder<A>) => ModelBuilder<B>, op2: (input: ModelBuilder<B>) => ModelBuilder<C>, op3: (input: ModelBuilder<C>) => ModelBuilder<D>): (input: Builder<A>) => Builder<D>;
124
- declare function model<A extends AnyTypes, B extends AnyTypes, C extends AnyTypes, D extends AnyTypes, E extends AnyTypes>(op1: (input: ModelBuilder<A>) => ModelBuilder<B>, op2: (input: ModelBuilder<B>) => ModelBuilder<C>, op3: (input: ModelBuilder<C>) => ModelBuilder<D>, op4: (input: ModelBuilder<D>) => ModelBuilder<E>): (input: Builder<A>) => Builder<E>;
125
- declare function model<A extends AnyTypes, B extends AnyTypes, C extends AnyTypes, D extends AnyTypes, E extends AnyTypes, F extends AnyTypes>(op1: (input: ModelBuilder<A>) => ModelBuilder<B>, op2: (input: ModelBuilder<B>) => ModelBuilder<C>, op3: (input: ModelBuilder<C>) => ModelBuilder<D>, op4: (input: ModelBuilder<D>) => ModelBuilder<E>, op5: (input: ModelBuilder<E>) => ModelBuilder<F>): (input: Builder<A>) => Builder<F>;
126
- declare function model<A extends AnyTypes, B extends AnyTypes, C extends AnyTypes, D extends AnyTypes, E extends AnyTypes, F extends AnyTypes, G extends AnyTypes>(op1: (input: ModelBuilder<A>) => ModelBuilder<B>, op2: (input: ModelBuilder<B>) => ModelBuilder<C>, op3: (input: ModelBuilder<C>) => ModelBuilder<D>, op4: (input: ModelBuilder<D>) => ModelBuilder<E>, op5: (input: ModelBuilder<E>) => ModelBuilder<F>, op6: (input: ModelBuilder<F>) => ModelBuilder<G>): (input: Builder<A>) => Builder<G>;
127
- declare function model<A extends AnyTypes, B extends AnyTypes, C extends AnyTypes, D extends AnyTypes, E extends AnyTypes, F extends AnyTypes, G extends AnyTypes, H extends AnyTypes>(op1: (input: ModelBuilder<A>) => ModelBuilder<B>, op2: (input: ModelBuilder<B>) => ModelBuilder<C>, op3: (input: ModelBuilder<C>) => ModelBuilder<D>, op4: (input: ModelBuilder<D>) => ModelBuilder<E>, op5: (input: ModelBuilder<E>) => ModelBuilder<F>, op6: (input: ModelBuilder<F>) => ModelBuilder<G>, op7: (input: ModelBuilder<G>) => ModelBuilder<H>): (input: Builder<A>) => Builder<H>;
128
- declare function model<A extends AnyTypes, B extends AnyTypes, C extends AnyTypes, D extends AnyTypes, E extends AnyTypes, F extends AnyTypes, G extends AnyTypes, H extends AnyTypes, I extends AnyTypes>(op1: (input: ModelBuilder<A>) => ModelBuilder<B>, op2: (input: ModelBuilder<B>) => ModelBuilder<C>, op3: (input: ModelBuilder<C>) => ModelBuilder<D>, op4: (input: ModelBuilder<D>) => ModelBuilder<E>, op5: (input: ModelBuilder<E>) => ModelBuilder<F>, op6: (input: ModelBuilder<F>) => ModelBuilder<G>, op7: (input: ModelBuilder<G>) => ModelBuilder<H>, op8: (input: ModelBuilder<H>) => ModelBuilder<I>): (input: Builder<A>) => Builder<I>;
129
- declare function model<A extends AnyTypes, B extends AnyTypes, C extends AnyTypes, D extends AnyTypes, E extends AnyTypes, F extends AnyTypes, G extends AnyTypes, H extends AnyTypes, I extends AnyTypes, J extends AnyTypes>(op1: (input: ModelBuilder<A>) => ModelBuilder<B>, op2: (input: ModelBuilder<B>) => ModelBuilder<C>, op3: (input: ModelBuilder<C>) => ModelBuilder<D>, op4: (input: ModelBuilder<D>) => ModelBuilder<E>, op5: (input: ModelBuilder<E>) => ModelBuilder<F>, op6: (input: ModelBuilder<F>) => ModelBuilder<G>, op7: (input: ModelBuilder<G>) => ModelBuilder<H>, op8: (input: ModelBuilder<H>) => ModelBuilder<I>, op9: (input: ModelBuilder<I>) => ModelBuilder<J>): (input: Builder<A>) => Builder<J>;
130
- declare function model<A extends AnyTypes, B extends AnyTypes, C extends AnyTypes, D extends AnyTypes, E extends AnyTypes, F extends AnyTypes, G extends AnyTypes, H extends AnyTypes, I extends AnyTypes, J extends AnyTypes, K extends AnyTypes>(op1: (input: ModelBuilder<A>) => ModelBuilder<B>, op2: (input: ModelBuilder<B>) => ModelBuilder<C>, op3: (input: ModelBuilder<C>) => ModelBuilder<D>, op4: (input: ModelBuilder<D>) => ModelBuilder<E>, op5: (input: ModelBuilder<E>) => ModelBuilder<F>, op6: (input: ModelBuilder<F>) => ModelBuilder<G>, op7: (input: ModelBuilder<G>) => ModelBuilder<H>, op8: (input: ModelBuilder<H>) => ModelBuilder<I>, op9: (input: ModelBuilder<I>) => ModelBuilder<J>, op10: (input: ModelBuilder<J>) => ModelBuilder<K>): (input: Builder<A>) => Builder<K>;
131
- declare function model<A extends AnyTypes, B extends AnyTypes, C extends AnyTypes, D extends AnyTypes, E extends AnyTypes, F extends AnyTypes, G extends AnyTypes, H extends AnyTypes, I extends AnyTypes, J extends AnyTypes, K extends AnyTypes, L extends AnyTypes>(op1: (input: ModelBuilder<A>) => ModelBuilder<B>, op2: (input: ModelBuilder<B>) => ModelBuilder<C>, op3: (input: ModelBuilder<C>) => ModelBuilder<D>, op4: (input: ModelBuilder<D>) => ModelBuilder<E>, op5: (input: ModelBuilder<E>) => ModelBuilder<F>, op6: (input: ModelBuilder<F>) => ModelBuilder<G>, op7: (input: ModelBuilder<G>) => ModelBuilder<H>, op8: (input: ModelBuilder<H>) => ModelBuilder<I>, op9: (input: ModelBuilder<I>) => ModelBuilder<J>, op10: (input: ModelBuilder<J>) => ModelBuilder<K>, op11: (input: ModelBuilder<K>) => ModelBuilder<L>): (input: Builder<A>) => Builder<L>;
132
- declare function model<A extends AnyTypes, B extends AnyTypes, C extends AnyTypes, D extends AnyTypes, E extends AnyTypes, F extends AnyTypes, G extends AnyTypes, H extends AnyTypes, I extends AnyTypes, J extends AnyTypes, K extends AnyTypes, L extends AnyTypes, M extends AnyTypes>(op1: (input: ModelBuilder<A>) => ModelBuilder<B>, op2: (input: ModelBuilder<B>) => ModelBuilder<C>, op3: (input: ModelBuilder<C>) => ModelBuilder<D>, op4: (input: ModelBuilder<D>) => ModelBuilder<E>, op5: (input: ModelBuilder<E>) => ModelBuilder<F>, op6: (input: ModelBuilder<F>) => ModelBuilder<G>, op7: (input: ModelBuilder<G>) => ModelBuilder<H>, op8: (input: ModelBuilder<H>) => ModelBuilder<I>, op9: (input: ModelBuilder<I>) => ModelBuilder<J>, op10: (input: ModelBuilder<J>) => ModelBuilder<K>, op11: (input: ModelBuilder<K>) => ModelBuilder<L>, op12: (input: ModelBuilder<L>) => ModelBuilder<M>): (input: Builder<A>) => Builder<M>;
133
- declare function model<A extends AnyTypes, B extends AnyTypes, C extends AnyTypes, D extends AnyTypes, E extends AnyTypes, F extends AnyTypes, G extends AnyTypes, H extends AnyTypes, I extends AnyTypes, J extends AnyTypes, K extends AnyTypes, L extends AnyTypes, M extends AnyTypes, N extends AnyTypes>(op1: (input: ModelBuilder<A>) => ModelBuilder<B>, op2: (input: ModelBuilder<B>) => ModelBuilder<C>, op3: (input: ModelBuilder<C>) => ModelBuilder<D>, op4: (input: ModelBuilder<D>) => ModelBuilder<E>, op5: (input: ModelBuilder<E>) => ModelBuilder<F>, op6: (input: ModelBuilder<F>) => ModelBuilder<G>, op7: (input: ModelBuilder<G>) => ModelBuilder<H>, op8: (input: ModelBuilder<H>) => ModelBuilder<I>, op9: (input: ModelBuilder<I>) => ModelBuilder<J>, op10: (input: ModelBuilder<J>) => ModelBuilder<K>, op11: (input: ModelBuilder<K>) => ModelBuilder<L>, op12: (input: ModelBuilder<L>) => ModelBuilder<M>, op13: (input: ModelBuilder<M>) => ModelBuilder<N>): (input: Builder<A>) => Builder<N>;
134
- declare function model<A extends AnyTypes, B extends AnyTypes, C extends AnyTypes, D extends AnyTypes, E extends AnyTypes, F extends AnyTypes, G extends AnyTypes, H extends AnyTypes, I extends AnyTypes, J extends AnyTypes, K extends AnyTypes, L extends AnyTypes, M extends AnyTypes, N extends AnyTypes, O extends AnyTypes>(op1: (input: ModelBuilder<A>) => ModelBuilder<B>, op2: (input: ModelBuilder<B>) => ModelBuilder<C>, op3: (input: ModelBuilder<C>) => ModelBuilder<D>, op4: (input: ModelBuilder<D>) => ModelBuilder<E>, op5: (input: ModelBuilder<E>) => ModelBuilder<F>, op6: (input: ModelBuilder<F>) => ModelBuilder<G>, op7: (input: ModelBuilder<G>) => ModelBuilder<H>, op8: (input: ModelBuilder<H>) => ModelBuilder<I>, op9: (input: ModelBuilder<I>) => ModelBuilder<J>, op10: (input: ModelBuilder<J>) => ModelBuilder<K>, op11: (input: ModelBuilder<K>) => ModelBuilder<L>, op12: (input: ModelBuilder<L>) => ModelBuilder<M>, op13: (input: ModelBuilder<M>) => ModelBuilder<N>, op14: (input: ModelBuilder<N>) => ModelBuilder<O>): (input: Builder<A>) => Builder<O>;
135
- declare function model<A extends AnyTypes, B extends AnyTypes, C extends AnyTypes, D extends AnyTypes, E extends AnyTypes, F extends AnyTypes, G extends AnyTypes, H extends AnyTypes, I extends AnyTypes, J extends AnyTypes, K extends AnyTypes, L extends AnyTypes, M extends AnyTypes, N extends AnyTypes, O extends AnyTypes, P extends AnyTypes>(op1: (input: ModelBuilder<A>) => ModelBuilder<B>, op2: (input: ModelBuilder<B>) => ModelBuilder<C>, op3: (input: ModelBuilder<C>) => ModelBuilder<D>, op4: (input: ModelBuilder<D>) => ModelBuilder<E>, op5: (input: ModelBuilder<E>) => ModelBuilder<F>, op6: (input: ModelBuilder<F>) => ModelBuilder<G>, op7: (input: ModelBuilder<G>) => ModelBuilder<H>, op8: (input: ModelBuilder<H>) => ModelBuilder<I>, op9: (input: ModelBuilder<I>) => ModelBuilder<J>, op10: (input: ModelBuilder<J>) => ModelBuilder<K>, op11: (input: ModelBuilder<K>) => ModelBuilder<L>, op12: (input: ModelBuilder<L>) => ModelBuilder<M>, op13: (input: ModelBuilder<M>) => ModelBuilder<N>, op14: (input: ModelBuilder<N>) => ModelBuilder<O>, op15: (input: ModelBuilder<O>) => ModelBuilder<P>): (input: Builder<A>) => Builder<P>;
136
- type RelationshipHelper<Props = unknown> = <T extends AnyTypes, From extends string & T['Fqn'], To extends string & T['Fqn']>(from: From, to: To, titleOrProps?: string | Props) => (builder: ModelBuilder<T>) => ModelBuilder<T>;
137
- type NestedRelationshipHelper<Props = unknown> = <T extends AnyTypesNested, To extends string & T['Fqn']>(to: To, titleOrProps?: string | Props) => (builder: ModelBuilder<T>) => ModelBuilder<T>;
138
- type ModelHelpers<T extends AnyTypes> = AddElementHelpers<T> & {
139
- model: typeof model;
140
- rel: RelationshipHelper<T['NewRelationshipProps']>;
141
- relTo: NestedRelationshipHelper<T['NewRelationshipProps']>;
142
- };
143
-
144
- interface ViewsBuilder<T extends AnyTypes> {
145
- addView(view: LikeC4View): Builder<T>;
146
- }
147
- declare function views<A extends AnyTypes, B extends AnyTypes>(op1: (input: ViewsBuilder<A>) => ViewsBuilder<B>): (input: Builder<A>) => Builder<B>;
148
- declare function views<A extends AnyTypes, B extends AnyTypes, C extends AnyTypes>(op1: (input: ViewsBuilder<A>) => ViewsBuilder<B>, op2: (input: ViewsBuilder<B>) => ViewsBuilder<C>): (input: Builder<A>) => Builder<C>;
149
- declare function views<A extends AnyTypes, B extends AnyTypes, C extends AnyTypes, D extends AnyTypes>(op1: (input: ViewsBuilder<A>) => ViewsBuilder<B>, op2: (input: ViewsBuilder<B>) => ViewsBuilder<C>, op3: (input: ViewsBuilder<C>) => ViewsBuilder<D>): (input: Builder<A>) => Builder<D>;
150
- declare function views<A extends AnyTypes, B extends AnyTypes, C extends AnyTypes, D extends AnyTypes, E extends AnyTypes>(op1: (input: ViewsBuilder<A>) => ViewsBuilder<B>, op2: (input: ViewsBuilder<B>) => ViewsBuilder<C>, op3: (input: ViewsBuilder<C>) => ViewsBuilder<D>, op4: (input: ViewsBuilder<D>) => ViewsBuilder<E>): (input: Builder<A>) => Builder<E>;
151
- declare function views<A extends AnyTypes, B extends AnyTypes, C extends AnyTypes, D extends AnyTypes, E extends AnyTypes, F extends AnyTypes>(op1: (input: ViewsBuilder<A>) => ViewsBuilder<B>, op2: (input: ViewsBuilder<B>) => ViewsBuilder<C>, op3: (input: ViewsBuilder<C>) => ViewsBuilder<D>, op4: (input: ViewsBuilder<D>) => ViewsBuilder<E>, op5: (input: ViewsBuilder<E>) => ViewsBuilder<F>): (input: Builder<A>) => Builder<F>;
152
- declare function views<A extends AnyTypes, B extends AnyTypes, C extends AnyTypes, D extends AnyTypes, E extends AnyTypes, F extends AnyTypes, G extends AnyTypes>(op1: (input: ViewsBuilder<A>) => ViewsBuilder<B>, op2: (input: ViewsBuilder<B>) => ViewsBuilder<C>, op3: (input: ViewsBuilder<C>) => ViewsBuilder<D>, op4: (input: ViewsBuilder<D>) => ViewsBuilder<E>, op5: (input: ViewsBuilder<E>) => ViewsBuilder<F>, op6: (input: ViewsBuilder<F>) => ViewsBuilder<G>): (input: Builder<A>) => Builder<G>;
153
- declare function views<A extends AnyTypes, B extends AnyTypes, C extends AnyTypes, D extends AnyTypes, E extends AnyTypes, F extends AnyTypes, G extends AnyTypes, H extends AnyTypes>(op1: (input: ViewsBuilder<A>) => ViewsBuilder<B>, op2: (input: ViewsBuilder<B>) => ViewsBuilder<C>, op3: (input: ViewsBuilder<C>) => ViewsBuilder<D>, op4: (input: ViewsBuilder<D>) => ViewsBuilder<E>, op5: (input: ViewsBuilder<E>) => ViewsBuilder<F>, op6: (input: ViewsBuilder<F>) => ViewsBuilder<G>, op7: (input: ViewsBuilder<G>) => ViewsBuilder<H>): (input: Builder<A>) => Builder<H>;
154
- declare function views<A extends AnyTypes, B extends AnyTypes, C extends AnyTypes, D extends AnyTypes, E extends AnyTypes, F extends AnyTypes, G extends AnyTypes, H extends AnyTypes, I extends AnyTypes>(op1: (input: ViewsBuilder<A>) => ViewsBuilder<B>, op2: (input: ViewsBuilder<B>) => ViewsBuilder<C>, op3: (input: ViewsBuilder<C>) => ViewsBuilder<D>, op4: (input: ViewsBuilder<D>) => ViewsBuilder<E>, op5: (input: ViewsBuilder<E>) => ViewsBuilder<F>, op6: (input: ViewsBuilder<F>) => ViewsBuilder<G>, op7: (input: ViewsBuilder<G>) => ViewsBuilder<H>, op8: (input: ViewsBuilder<H>) => ViewsBuilder<I>): (input: Builder<A>) => Builder<I>;
155
- declare function views<A extends AnyTypes, B extends AnyTypes, C extends AnyTypes, D extends AnyTypes, E extends AnyTypes, F extends AnyTypes, G extends AnyTypes, H extends AnyTypes, I extends AnyTypes, J extends AnyTypes>(op1: (input: ViewsBuilder<A>) => ViewsBuilder<B>, op2: (input: ViewsBuilder<B>) => ViewsBuilder<C>, op3: (input: ViewsBuilder<C>) => ViewsBuilder<D>, op4: (input: ViewsBuilder<D>) => ViewsBuilder<E>, op5: (input: ViewsBuilder<E>) => ViewsBuilder<F>, op6: (input: ViewsBuilder<F>) => ViewsBuilder<G>, op7: (input: ViewsBuilder<G>) => ViewsBuilder<H>, op8: (input: ViewsBuilder<H>) => ViewsBuilder<I>, op9: (input: ViewsBuilder<I>) => ViewsBuilder<J>): (input: Builder<A>) => Builder<J>;
156
- declare function views<A extends AnyTypes, B extends AnyTypes, C extends AnyTypes, D extends AnyTypes, E extends AnyTypes, F extends AnyTypes, G extends AnyTypes, H extends AnyTypes, I extends AnyTypes, J extends AnyTypes, K extends AnyTypes>(op1: (input: ViewsBuilder<A>) => ViewsBuilder<B>, op2: (input: ViewsBuilder<B>) => ViewsBuilder<C>, op3: (input: ViewsBuilder<C>) => ViewsBuilder<D>, op4: (input: ViewsBuilder<D>) => ViewsBuilder<E>, op5: (input: ViewsBuilder<E>) => ViewsBuilder<F>, op6: (input: ViewsBuilder<F>) => ViewsBuilder<G>, op7: (input: ViewsBuilder<G>) => ViewsBuilder<H>, op8: (input: ViewsBuilder<H>) => ViewsBuilder<I>, op9: (input: ViewsBuilder<I>) => ViewsBuilder<J>, op10: (input: ViewsBuilder<J>) => ViewsBuilder<K>): (input: Builder<A>) => Builder<K>;
157
- declare function views<A extends AnyTypes, B extends AnyTypes, C extends AnyTypes, D extends AnyTypes, E extends AnyTypes, F extends AnyTypes, G extends AnyTypes, H extends AnyTypes, I extends AnyTypes, J extends AnyTypes, K extends AnyTypes, L extends AnyTypes>(op1: (input: ViewsBuilder<A>) => ViewsBuilder<B>, op2: (input: ViewsBuilder<B>) => ViewsBuilder<C>, op3: (input: ViewsBuilder<C>) => ViewsBuilder<D>, op4: (input: ViewsBuilder<D>) => ViewsBuilder<E>, op5: (input: ViewsBuilder<E>) => ViewsBuilder<F>, op6: (input: ViewsBuilder<F>) => ViewsBuilder<G>, op7: (input: ViewsBuilder<G>) => ViewsBuilder<H>, op8: (input: ViewsBuilder<H>) => ViewsBuilder<I>, op9: (input: ViewsBuilder<I>) => ViewsBuilder<J>, op10: (input: ViewsBuilder<J>) => ViewsBuilder<K>, op11: (input: ViewsBuilder<K>) => ViewsBuilder<L>): (input: Builder<A>) => Builder<L>;
158
- declare function views<A extends AnyTypes, B extends AnyTypes, C extends AnyTypes, D extends AnyTypes, E extends AnyTypes, F extends AnyTypes, G extends AnyTypes, H extends AnyTypes, I extends AnyTypes, J extends AnyTypes, K extends AnyTypes, L extends AnyTypes, M extends AnyTypes>(op1: (input: ViewsBuilder<A>) => ViewsBuilder<B>, op2: (input: ViewsBuilder<B>) => ViewsBuilder<C>, op3: (input: ViewsBuilder<C>) => ViewsBuilder<D>, op4: (input: ViewsBuilder<D>) => ViewsBuilder<E>, op5: (input: ViewsBuilder<E>) => ViewsBuilder<F>, op6: (input: ViewsBuilder<F>) => ViewsBuilder<G>, op7: (input: ViewsBuilder<G>) => ViewsBuilder<H>, op8: (input: ViewsBuilder<H>) => ViewsBuilder<I>, op9: (input: ViewsBuilder<I>) => ViewsBuilder<J>, op10: (input: ViewsBuilder<J>) => ViewsBuilder<K>, op11: (input: ViewsBuilder<K>) => ViewsBuilder<L>, op12: (input: ViewsBuilder<L>) => ViewsBuilder<M>): (input: Builder<A>) => Builder<M>;
159
- declare function views<A extends AnyTypes, B extends AnyTypes, C extends AnyTypes, D extends AnyTypes, E extends AnyTypes, F extends AnyTypes, G extends AnyTypes, H extends AnyTypes, I extends AnyTypes, J extends AnyTypes, K extends AnyTypes, L extends AnyTypes, M extends AnyTypes, N extends AnyTypes>(op1: (input: ViewsBuilder<A>) => ViewsBuilder<B>, op2: (input: ViewsBuilder<B>) => ViewsBuilder<C>, op3: (input: ViewsBuilder<C>) => ViewsBuilder<D>, op4: (input: ViewsBuilder<D>) => ViewsBuilder<E>, op5: (input: ViewsBuilder<E>) => ViewsBuilder<F>, op6: (input: ViewsBuilder<F>) => ViewsBuilder<G>, op7: (input: ViewsBuilder<G>) => ViewsBuilder<H>, op8: (input: ViewsBuilder<H>) => ViewsBuilder<I>, op9: (input: ViewsBuilder<I>) => ViewsBuilder<J>, op10: (input: ViewsBuilder<J>) => ViewsBuilder<K>, op11: (input: ViewsBuilder<K>) => ViewsBuilder<L>, op12: (input: ViewsBuilder<L>) => ViewsBuilder<M>, op13: (input: ViewsBuilder<M>) => ViewsBuilder<N>): (input: Builder<A>) => Builder<N>;
160
- declare function views<A extends AnyTypes, B extends AnyTypes, C extends AnyTypes, D extends AnyTypes, E extends AnyTypes, F extends AnyTypes, G extends AnyTypes, H extends AnyTypes, I extends AnyTypes, J extends AnyTypes, K extends AnyTypes, L extends AnyTypes, M extends AnyTypes, N extends AnyTypes, O extends AnyTypes>(op1: (input: ViewsBuilder<A>) => ViewsBuilder<B>, op2: (input: ViewsBuilder<B>) => ViewsBuilder<C>, op3: (input: ViewsBuilder<C>) => ViewsBuilder<D>, op4: (input: ViewsBuilder<D>) => ViewsBuilder<E>, op5: (input: ViewsBuilder<E>) => ViewsBuilder<F>, op6: (input: ViewsBuilder<F>) => ViewsBuilder<G>, op7: (input: ViewsBuilder<G>) => ViewsBuilder<H>, op8: (input: ViewsBuilder<H>) => ViewsBuilder<I>, op9: (input: ViewsBuilder<I>) => ViewsBuilder<J>, op10: (input: ViewsBuilder<J>) => ViewsBuilder<K>, op11: (input: ViewsBuilder<K>) => ViewsBuilder<L>, op12: (input: ViewsBuilder<L>) => ViewsBuilder<M>, op13: (input: ViewsBuilder<M>) => ViewsBuilder<N>, op14: (input: ViewsBuilder<N>) => ViewsBuilder<O>): (input: Builder<A>) => Builder<O>;
161
- declare function views<A extends AnyTypes, B extends AnyTypes, C extends AnyTypes, D extends AnyTypes, E extends AnyTypes, F extends AnyTypes, G extends AnyTypes, H extends AnyTypes, I extends AnyTypes, J extends AnyTypes, K extends AnyTypes, L extends AnyTypes, M extends AnyTypes, N extends AnyTypes, O extends AnyTypes, P extends AnyTypes>(op1: (input: ViewsBuilder<A>) => ViewsBuilder<B>, op2: (input: ViewsBuilder<B>) => ViewsBuilder<C>, op3: (input: ViewsBuilder<C>) => ViewsBuilder<D>, op4: (input: ViewsBuilder<D>) => ViewsBuilder<E>, op5: (input: ViewsBuilder<E>) => ViewsBuilder<F>, op6: (input: ViewsBuilder<F>) => ViewsBuilder<G>, op7: (input: ViewsBuilder<G>) => ViewsBuilder<H>, op8: (input: ViewsBuilder<H>) => ViewsBuilder<I>, op9: (input: ViewsBuilder<I>) => ViewsBuilder<J>, op10: (input: ViewsBuilder<J>) => ViewsBuilder<K>, op11: (input: ViewsBuilder<K>) => ViewsBuilder<L>, op12: (input: ViewsBuilder<L>) => ViewsBuilder<M>, op13: (input: ViewsBuilder<M>) => ViewsBuilder<N>, op14: (input: ViewsBuilder<N>) => ViewsBuilder<O>, op15: (input: ViewsBuilder<O>) => ViewsBuilder<P>): (input: Builder<A>) => Builder<P>;
162
-
163
- interface ViewBuilder<T extends AnyTypes> {
164
- include(...exprs: Expression[]): ViewBuilder<T>;
165
- exclude(...exprs: Expression[]): ViewBuilder<T>;
166
- style(rule: ViewRuleStyle): ViewBuilder<T>;
167
- autoLayout(layout: AutoLayoutDirection): ViewBuilder<T>;
168
- }
169
- declare namespace ViewPredicate {
170
- export type ElementExpr<Fqn extends string> = '*' | Fqn | `${Fqn}.*` | `${Fqn}._`;
171
- type AllExpression<ElementExpr extends string> = ElementExpr | `-> ${ElementExpr} ->` | `-> ${ElementExpr}` | `${ElementExpr} ->` | `${ElementExpr} ${'->' | '<->'} ${ElementExpr}`;
172
- export type Expression<T extends AnyTypes> = T extends Types<any, infer F extends string, any, any, any, any> ? AllExpression<ViewPredicate.ElementExpr<F>> : never;
173
- export type WhereTag<Tag extends string> = `tag ${'is' | 'is not'} #${Tag}`;
174
- export type WhereKind<Kind extends string> = `kind ${'is' | 'is not'} ${Kind}`;
175
- export type WhereEq<Types extends AnyTypes> = ViewPredicate.WhereTag<Types['Tag']> | ViewPredicate.WhereKind<Types['ElementKind']>;
176
- export type WhereOperator<Types extends AnyTypes> = ViewPredicate.WhereEq<Types> | {
177
- and: NonEmptyArray<ViewPredicate.WhereOperator<Types>>;
178
- or?: never;
179
- not?: never;
180
- } | {
181
- or: NonEmptyArray<ViewPredicate.WhereOperator<Types>>;
182
- and?: never;
183
- not?: never;
184
- } | {
185
- not: ViewPredicate.WhereOperator<Types>;
186
- and?: never;
187
- or?: never;
188
- };
189
- export type Custom<Types extends AnyTypes> = {
190
- where?: ViewPredicate.WhereOperator<Types>;
191
- with?: Simplify<Omit<CustomElementExpr['custom'] & CustomRelationExpr['customRelation'], 'expr' | 'relation' | 'navigateTo'> & {
192
- navigateTo?: Types['ViewId'];
193
- }>;
194
- };
195
- export { };
196
- }
197
- type ViewRuleBuilderOp<Types extends AnyTypes> = (b: ViewBuilder<Types>) => ViewBuilder<Types>;
198
- interface AddViewHelper<Props = unknown> {
199
- <const Id extends string, T extends AnyTypes>(id: Id, builder: (b: ViewBuilder<T>) => ViewBuilder<T>): (builder: ViewsBuilder<T>) => ViewsBuilder<Types.AddView<T, Id>>;
200
- <const Id extends string, T extends AnyTypes>(id: Id, propsOrTitle: Props | string): (builder: ViewsBuilder<T>) => ViewsBuilder<Types.AddView<T, Id>>;
201
- <const Id extends string, T extends AnyTypes>(id: Id, propsOrTitle: Props | string | undefined, builder: (b: ViewBuilder<T>) => ViewBuilder<T>): (builder: ViewsBuilder<T>) => ViewsBuilder<Types.AddView<T, Id>>;
202
- }
203
- interface AddViewOfHelper<Props = unknown> {
204
- <const Id extends string, T extends AnyTypes, Of extends string & T['Fqn']>(id: Id, of: Of): (builder: ViewsBuilder<T>) => ViewsBuilder<Types.AddView<T, Id>>;
205
- <const Id extends string, T extends AnyTypes, Of extends string & T['Fqn']>(id: Id, of: Of, builder: (b: ViewBuilder<T>) => ViewBuilder<T>): (builder: ViewsBuilder<T>) => ViewsBuilder<Types.AddView<T, Id>>;
206
- <const Id extends string, T extends AnyTypes, Of extends string & T['Fqn']>(id: Id, of: Of, propsOrTitle: Props | string): (builder: ViewsBuilder<T>) => ViewsBuilder<Types.AddView<T, Id>>;
207
- <const Id extends string, T extends AnyTypes, Of extends string & T['Fqn']>(id: Id, of: Of, propsOrTitle: Props | string | undefined, builder: (b: ViewBuilder<T>) => ViewBuilder<T>): (builder: ViewsBuilder<T>) => ViewsBuilder<Types.AddView<T, Id>>;
208
- }
209
- type TypedC4Expression<Types extends AnyTypes> = Tagged<Expression, 'typed', Types>;
210
- declare function $include<Types extends AnyTypes>(...args: [ViewPredicate.Expression<Types>] | [TypedC4Expression<Types>] | [ViewPredicate.Expression<Types>, ViewPredicate.Custom<Types>]): (b: ViewBuilder<Types>) => ViewBuilder<Types>;
211
- declare function $exclude<Types extends AnyTypes>(...args: [ViewPredicate.Expression<Types>] | [TypedC4Expression<Types>] | [ViewPredicate.Expression<Types>, ViewPredicate.Custom<Types>]): (b: ViewBuilder<Types>) => ViewBuilder<Types>;
212
- declare function $style<Types extends AnyTypes>(element: ViewPredicate.ElementExpr<Types['Fqn']> | NonEmptyArray<ViewPredicate.ElementExpr<Types['Fqn']>>, { notation, ...style }: ViewRuleStyle['style'] & {
213
- notation?: string;
214
- }): (b: ViewBuilder<Types>) => ViewBuilder<Types>;
215
- declare function $autoLayout<Types extends AnyTypes>(layout: AutoLayoutDirection): (b: ViewBuilder<Types>) => ViewBuilder<Types>;
216
- declare function $rules<T extends AnyTypes>(...rules: ViewRuleBuilderOp<T>[]): (b: ViewBuilder<T>) => ViewBuilder<T>;
217
-
218
- type ViewHelpers<T = unknown> = {
219
- views: typeof views;
220
- view: AddViewHelper<T>;
221
- viewOf: AddViewOfHelper<T>;
222
- $include: typeof $include;
223
- $exclude: typeof $exclude;
224
- $style: typeof $style;
225
- $rules: typeof $rules;
226
- $autoLayout: typeof $autoLayout;
227
- };
228
-
229
- interface Builder<T extends AnyTypes> {
230
- /**
231
- * Only available in compile time
232
- */
233
- readonly Types: T;
234
- clone(): Builder<T>;
235
- /**
236
- * Builders for each element kind
237
- */
238
- helpers(): {
239
- model: ModelHelpers<T>;
240
- views: ViewHelpers<T['NewViewProps']>;
241
- };
242
- __model(): ModelBuilder<T>;
243
- __views(): ViewsBuilder<T>;
244
- build(): ParsedLikeC4Model<T['ElementKind'], T['RelationshipKind'], T['Tag'], T['Fqn'], T['ViewId']>;
245
- with<A extends AnyTypes>(op1: (input: Builder<T>) => Builder<A>): Builder<A>;
246
- with<A extends AnyTypes, B extends AnyTypes>(op1: (input: Builder<T>) => Builder<A>, op2: (input: Builder<A>) => Builder<B>): Builder<B>;
247
- with<A extends AnyTypes, B extends AnyTypes, C extends AnyTypes>(op1: (input: Builder<T>) => Builder<A>, op2: (input: Builder<A>) => Builder<B>, op3: (input: Builder<B>) => Builder<C>): Builder<C>;
248
- with<A extends AnyTypes, B extends AnyTypes, C extends AnyTypes, D extends AnyTypes>(op1: (input: Builder<T>) => Builder<A>, op2: (input: Builder<A>) => Builder<B>, op3: (input: Builder<B>) => Builder<C>, op4: (input: Builder<C>) => Builder<D>): Builder<D>;
249
- with<A extends AnyTypes, B extends AnyTypes, C extends AnyTypes, D extends AnyTypes, E extends AnyTypes>(op1: (input: Builder<T>) => Builder<A>, op2: (input: Builder<A>) => Builder<B>, op3: (input: Builder<B>) => Builder<C>, op4: (input: Builder<C>) => Builder<D>, op5: (input: Builder<D>) => Builder<E>): Builder<E>;
250
- with<A extends AnyTypes, B extends AnyTypes, C extends AnyTypes, D extends AnyTypes, E extends AnyTypes, F extends AnyTypes>(op1: (input: Builder<T>) => Builder<A>, op2: (input: Builder<A>) => Builder<B>, op3: (input: Builder<B>) => Builder<C>, op4: (input: Builder<C>) => Builder<D>, op5: (input: Builder<D>) => Builder<E>, op6: (input: Builder<E>) => Builder<F>): Builder<F>;
251
- with<A extends AnyTypes, B extends AnyTypes, C extends AnyTypes, D extends AnyTypes, E extends AnyTypes, F extends AnyTypes, G extends AnyTypes>(op1: (input: Builder<T>) => Builder<A>, op2: (input: Builder<A>) => Builder<B>, op3: (input: Builder<B>) => Builder<C>, op4: (input: Builder<C>) => Builder<D>, op5: (input: Builder<D>) => Builder<E>, op6: (input: Builder<E>) => Builder<F>, op7: (input: Builder<F>) => Builder<G>): Builder<G>;
252
- with<A extends AnyTypes, B extends AnyTypes, C extends AnyTypes, D extends AnyTypes, E extends AnyTypes, F extends AnyTypes, G extends AnyTypes, H extends AnyTypes>(op1: (input: Builder<T>) => Builder<A>, op2: (input: Builder<A>) => Builder<B>, op3: (input: Builder<B>) => Builder<C>, op4: (input: Builder<C>) => Builder<D>, op5: (input: Builder<D>) => Builder<E>, op6: (input: Builder<E>) => Builder<F>, op7: (input: Builder<F>) => Builder<G>, op8: (input: Builder<G>) => Builder<H>): Builder<H>;
253
- with<A extends AnyTypes, B extends AnyTypes, C extends AnyTypes, D extends AnyTypes, E extends AnyTypes, F extends AnyTypes, G extends AnyTypes, H extends AnyTypes, I extends AnyTypes>(op1: (input: Builder<T>) => Builder<A>, op2: (input: Builder<A>) => Builder<B>, op3: (input: Builder<B>) => Builder<C>, op4: (input: Builder<C>) => Builder<D>, op5: (input: Builder<D>) => Builder<E>, op6: (input: Builder<E>) => Builder<F>, op7: (input: Builder<F>) => Builder<G>, op8: (input: Builder<G>) => Builder<H>, op9: (input: Builder<H>) => Builder<I>): Builder<I>;
254
- with<A extends AnyTypes, B extends AnyTypes, C extends AnyTypes, D extends AnyTypes, E extends AnyTypes, F extends AnyTypes, G extends AnyTypes, H extends AnyTypes, I extends AnyTypes, J extends AnyTypes>(op1: (input: Builder<T>) => Builder<A>, op2: (input: Builder<A>) => Builder<B>, op3: (input: Builder<B>) => Builder<C>, op4: (input: Builder<C>) => Builder<D>, op5: (input: Builder<D>) => Builder<E>, op6: (input: Builder<E>) => Builder<F>, op7: (input: Builder<F>) => Builder<G>, op8: (input: Builder<G>) => Builder<H>, op9: (input: Builder<H>) => Builder<I>, op10: (input: Builder<I>) => Builder<J>): Builder<J>;
255
- }
256
- declare namespace Builder {
257
- function forSpecification<const Spec extends BuilderSpecification>(spec: Spec): {
258
- builder: Builder<Types.FromSpecification<Spec>>;
259
- model: ModelHelpers<Types.FromSpecification<Spec>>;
260
- views: ViewHelpers<Types.FromSpecification<Spec>['NewViewProps']>;
261
- };
262
- }
263
-
264
- declare const ElementColors: {
265
- readonly primary: {
266
- fill: "#3b82f6";
267
- stroke: "#2563eb";
268
- hiContrast: "#eff6ff";
269
- loContrast: "#bfdbfe";
270
- };
271
- readonly blue: {
272
- fill: "#3b82f6";
273
- stroke: "#2563eb";
274
- hiContrast: "#eff6ff";
275
- loContrast: "#bfdbfe";
276
- };
277
- readonly secondary: {
278
- fill: "#0284c7";
279
- stroke: "#0369a1";
280
- hiContrast: "#f0f9ff";
281
- loContrast: "#B6ECF7";
282
- };
283
- readonly sky: {
284
- fill: "#0284c7";
285
- stroke: "#0369a1";
286
- hiContrast: "#f0f9ff";
287
- loContrast: "#B6ECF7";
288
- };
289
- readonly muted: {
290
- fill: "#64748b";
291
- stroke: "#475569";
292
- hiContrast: "#f8fafc";
293
- loContrast: "#cbd5e1";
294
- };
295
- readonly slate: {
296
- fill: "#64748b";
297
- stroke: "#475569";
298
- hiContrast: "#f8fafc";
299
- loContrast: "#cbd5e1";
300
- };
301
- readonly gray: {
302
- readonly fill: "#737373";
303
- readonly stroke: "#525252";
304
- readonly hiContrast: "#fafafa";
305
- readonly loContrast: "#d4d4d4";
306
- };
307
- readonly red: {
308
- readonly fill: "#AC4D39";
309
- readonly stroke: "#853A2D";
310
- readonly hiContrast: "#FBD3CB";
311
- readonly loContrast: "#f5b2a3";
312
- };
313
- readonly green: {
314
- readonly fill: "#428a4f";
315
- readonly stroke: "#2d5d39";
316
- readonly hiContrast: "#f8fafc";
317
- readonly loContrast: "#c2f0c2";
318
- };
319
- readonly amber: {
320
- readonly fill: "#A35829";
321
- readonly stroke: "#7E451D";
322
- readonly hiContrast: "#FFE0C2";
323
- readonly loContrast: "#f9b27c";
324
- };
325
- readonly indigo: {
326
- readonly fill: "#6366f1";
327
- readonly stroke: "#4f46e5";
328
- readonly hiContrast: "#eef2ff";
329
- readonly loContrast: "#c7d2fe";
330
- };
331
- };
332
-
333
- declare const RelationshipColors: {
334
- amber: {
335
- lineColor: "#b45309";
336
- labelBgColor: "#78350f";
337
- labelColor: "#FFE0C2";
338
- };
339
- blue: {
340
- lineColor: "#3b82f6";
341
- labelBgColor: "#172554";
342
- labelColor: "#60a5fa";
343
- };
344
- gray: {
345
- lineColor: "#6E6E6E";
346
- labelBgColor: "#18191b";
347
- labelColor: "#C6C6C6";
348
- };
349
- green: {
350
- lineColor: "#15803d";
351
- labelBgColor: "#052e16";
352
- labelColor: "#22c55e";
353
- };
354
- indigo: {
355
- lineColor: "#6366f1";
356
- labelBgColor: "#1e1b4b";
357
- labelColor: "#818cf8";
358
- };
359
- muted: {
360
- lineColor: "#64748b";
361
- labelBgColor: "#0f172a";
362
- labelColor: "#cbd5e1";
363
- };
364
- primary: {
365
- lineColor: "#3b82f6";
366
- labelBgColor: "#172554";
367
- labelColor: "#60a5fa";
368
- };
369
- red: {
370
- lineColor: "#AC4D39";
371
- labelBgColor: "#b91c1c";
372
- labelColor: "#f5b2a3";
373
- };
374
- secondary: {
375
- lineColor: "#0ea5e9";
376
- labelBgColor: "#082f49";
377
- labelColor: "#38bdf8";
378
- };
379
- sky: {
380
- lineColor: "#0ea5e9";
381
- labelBgColor: "#082f49";
382
- labelColor: "#38bdf8";
383
- };
384
- slate: {
385
- lineColor: "#64748b";
386
- labelBgColor: "#0f172a";
387
- labelColor: "#cbd5e1";
388
- };
389
- };
390
-
391
- declare const defaultTheme: {
392
- elements: {
393
- readonly primary: {
394
- fill: "#3b82f6";
395
- stroke: "#2563eb";
396
- hiContrast: "#eff6ff";
397
- loContrast: "#bfdbfe";
398
- };
399
- readonly blue: {
400
- fill: "#3b82f6";
401
- stroke: "#2563eb";
402
- hiContrast: "#eff6ff";
403
- loContrast: "#bfdbfe";
404
- };
405
- readonly secondary: {
406
- fill: "#0284c7";
407
- stroke: "#0369a1";
408
- hiContrast: "#f0f9ff";
409
- loContrast: "#B6ECF7";
410
- };
411
- readonly sky: {
412
- fill: "#0284c7";
413
- stroke: "#0369a1";
414
- hiContrast: "#f0f9ff";
415
- loContrast: "#B6ECF7";
416
- };
417
- readonly muted: {
418
- fill: "#64748b";
419
- stroke: "#475569";
420
- hiContrast: "#f8fafc";
421
- loContrast: "#cbd5e1";
422
- };
423
- readonly slate: {
424
- fill: "#64748b";
425
- stroke: "#475569";
426
- hiContrast: "#f8fafc";
427
- loContrast: "#cbd5e1";
428
- };
429
- readonly gray: {
430
- readonly fill: "#737373";
431
- readonly stroke: "#525252";
432
- readonly hiContrast: "#fafafa";
433
- readonly loContrast: "#d4d4d4";
434
- };
435
- readonly red: {
436
- readonly fill: "#AC4D39";
437
- readonly stroke: "#853A2D";
438
- readonly hiContrast: "#FBD3CB";
439
- readonly loContrast: "#f5b2a3";
440
- };
441
- readonly green: {
442
- readonly fill: "#428a4f";
443
- readonly stroke: "#2d5d39";
444
- readonly hiContrast: "#f8fafc";
445
- readonly loContrast: "#c2f0c2";
446
- };
447
- readonly amber: {
448
- readonly fill: "#A35829";
449
- readonly stroke: "#7E451D";
450
- readonly hiContrast: "#FFE0C2";
451
- readonly loContrast: "#f9b27c";
452
- };
453
- readonly indigo: {
454
- readonly fill: "#6366f1";
455
- readonly stroke: "#4f46e5";
456
- readonly hiContrast: "#eef2ff";
457
- readonly loContrast: "#c7d2fe";
458
- };
459
- };
460
- relationships: {
461
- amber: {
462
- lineColor: "#b45309";
463
- labelBgColor: "#78350f";
464
- labelColor: "#FFE0C2";
465
- };
466
- blue: {
467
- lineColor: "#3b82f6";
468
- labelBgColor: "#172554";
469
- labelColor: "#60a5fa";
470
- };
471
- gray: {
472
- lineColor: "#6E6E6E";
473
- labelBgColor: "#18191b";
474
- labelColor: "#C6C6C6";
475
- };
476
- green: {
477
- lineColor: "#15803d";
478
- labelBgColor: "#052e16";
479
- labelColor: "#22c55e";
480
- };
481
- indigo: {
482
- lineColor: "#6366f1";
483
- labelBgColor: "#1e1b4b";
484
- labelColor: "#818cf8";
485
- };
486
- muted: {
487
- lineColor: "#64748b";
488
- labelBgColor: "#0f172a";
489
- labelColor: "#cbd5e1";
490
- };
491
- primary: {
492
- lineColor: "#3b82f6";
493
- labelBgColor: "#172554";
494
- labelColor: "#60a5fa";
495
- };
496
- red: {
497
- lineColor: "#AC4D39";
498
- labelBgColor: "#b91c1c";
499
- labelColor: "#f5b2a3";
500
- };
501
- secondary: {
502
- lineColor: "#0ea5e9";
503
- labelBgColor: "#082f49";
504
- labelColor: "#38bdf8";
505
- };
506
- sky: {
507
- lineColor: "#0ea5e9";
508
- labelBgColor: "#082f49";
509
- labelColor: "#38bdf8";
510
- };
511
- slate: {
512
- lineColor: "#64748b";
513
- labelBgColor: "#0f172a";
514
- labelColor: "#cbd5e1";
515
- };
516
- };
517
- font: "Arial";
518
- shadow: "#0a0a0a";
519
- };
520
- declare function computeColorValues(color: HexColorLiteral): ThemeColorValues;
521
-
522
- declare function nonNullable<T>(value: T, message?: string): NonNullable<T>;
523
- declare function invariant(condition: any, message?: string): asserts condition;
524
- declare function nonexhaustive(value: never): never;
525
-
526
- type Fqn = LiteralUnion<Fqn$1, string>;
527
- type RelationID = LiteralUnion<RelationID$1, string>;
528
- type ViewID = LiteralUnion<ViewID$1, string>;
529
- type EdgeId = LiteralUnion<EdgeId$1, string>;
530
- type IncomingFilter = 'all' | 'direct' | 'to-descendants';
531
- type OutgoingFilter = 'all' | 'direct' | 'from-descendants';
532
- type ElementOrFqn = Fqn | {
533
- id: Fqn;
534
- };
535
-
536
- /**
537
- * All methods are view-scoped, i.e. only return elements and connections in the view.
538
- */
539
- declare class LikeC4ViewModel {
540
- readonly view: ComputedView;
541
- readonly model: LikeC4Model<LikeC4ViewModel>;
542
- private readonly _rootElements;
543
- private readonly _elements;
544
- private readonly _connections;
545
- constructor(view: ComputedView, model: LikeC4Model<LikeC4ViewModel>);
546
- get id(): ViewID$1<string>;
547
- get title(): string;
548
- get viewOf(): LikeC4Model.ElementModel<LikeC4ViewModel>;
549
- get tags(): Tag[];
550
- roots(): ReadonlyArray<LikeC4ViewModel.Element>;
551
- elements(): ReadonlyArray<LikeC4ViewModel.Element>;
552
- element(id: Fqn): LikeC4ViewModel.Element;
553
- hasElement(id: Fqn): boolean;
554
- connections(): ReadonlyArray<LikeC4ViewModel.Connection>;
555
- connection(id: EdgeId): LikeC4ViewModel.Connection;
556
- findConnections(source: ElementOrFqn, target: ElementOrFqn, direction?: 'both' | 'direct'): ReadonlyArray<LikeC4ViewModel.Connection>;
557
- parent(element: ElementOrFqn): LikeC4ViewModel.Element | null;
558
- children(element: ElementOrFqn): ReadonlyArray<LikeC4ViewModel.Element>;
559
- siblings(element: ElementOrFqn): ReadonlyArray<LikeC4ViewModel.Element>;
560
- /**
561
- * Get all ancestor elements (i.e. parent, parent’s parent, etc.)
562
- * (from closest to root)
563
- */
564
- ancestors(element: ElementOrFqn): ReadonlyArray<LikeC4ViewModel.Element>;
565
- descendants(element: ElementOrFqn): ReadonlyArray<LikeC4ViewModel.Element>;
566
- incoming(element: ElementOrFqn, filter?: IncomingFilter): ReadonlyArray<LikeC4ViewModel.Connection>;
567
- incomers(element: ElementOrFqn, filter?: IncomingFilter): ReadonlyArray<LikeC4ViewModel.Element>;
568
- /**
569
- * Outgoing relationships from the element and its descendants
570
- */
571
- outgoing(element: ElementOrFqn, filter?: OutgoingFilter): ReadonlyArray<LikeC4ViewModel.Connection>;
572
- outgoers(element: ElementOrFqn, filter?: OutgoingFilter): ReadonlyArray<LikeC4ViewModel.Element>;
573
- }
574
- declare namespace LikeC4ViewModel {
575
- /**
576
- * Represents an element in the view. (Diagram node)
577
- * All methods are view-scoped, i.e. `children` returns only children of the element in the view.
578
- */
579
- class Element {
580
- readonly node: ComputedNode;
581
- private readonly viewmodel;
582
- constructor(node: ComputedNode, viewmodel: LikeC4ViewModel);
583
- get id(): NodeId<string>;
584
- get title(): string;
585
- get kind(): ElementKind;
586
- get isRoot(): boolean;
587
- get hasNested(): boolean;
588
- get shape(): ElementShape;
589
- get color(): Color;
590
- get tags(): Tag[];
591
- model(): LikeC4Model.ElementModel<LikeC4ViewModel>;
592
- parent(): LikeC4ViewModel.Element | null;
593
- metadata(key: string): string | undefined;
594
- metadata(key: string, defaultValue: string): string;
595
- hasMetadata(key: string): boolean;
596
- ancestors(): ReadonlyArray<LikeC4ViewModel.Element>;
597
- siblings(): ReadonlyArray<LikeC4ViewModel.Element>;
598
- descendants(): ReadonlyArray<LikeC4ViewModel.Element>;
599
- children(): ReadonlyArray<LikeC4ViewModel.Element>;
600
- incoming(filter?: 'all' | 'direct' | 'to-descendants'): ReadonlyArray<LikeC4ViewModel.Connection>;
601
- incomers(filter?: 'all' | 'direct' | 'to-descendants'): ReadonlyArray<LikeC4ViewModel.Element>;
602
- outgoing(filter?: OutgoingFilter): ReadonlyArray<LikeC4ViewModel.Connection>;
603
- outgoers(filter?: OutgoingFilter): ReadonlyArray<LikeC4ViewModel.Element>;
604
- connectionsTo(target: Fqn | LikeC4ViewModel.Element): ReadonlyArray<LikeC4ViewModel.Connection>;
605
- }
606
- /**
607
- * Represents a connection between two elements.
608
- * May be source from multiple model relationships.
609
- */
610
- class Connection {
611
- readonly edge: ComputedEdge;
612
- private readonly viewmodel;
613
- constructor(edge: ComputedEdge, viewmodel: LikeC4ViewModel);
614
- get id(): EdgeId$1;
615
- get source(): LikeC4ViewModel.Element;
616
- get target(): LikeC4ViewModel.Element;
617
- get tags(): Tag[];
618
- /**
619
- * Model relationships
620
- */
621
- relationships(): ReadonlyArray<LikeC4Model.Relationship<LikeC4ViewModel>>;
622
- }
623
- }
624
-
625
- type PickBySource<Source> = Source extends LikeC4Model.Layouted.SourceModel ? LikeC4Model.Layouted : Source extends LikeC4Model.Computed.SourceModel ? LikeC4Model.Computed : never;
626
- declare class LikeC4Model<M extends LikeC4Model.ViewModel = LikeC4Model.ViewModel> {
627
- readonly type: LikeC4Model.ModelType<M>;
628
- readonly sourcemodel: LikeC4Model.SourceModel<M>;
629
- private _elements;
630
- private _parents;
631
- private _children;
632
- private _rootElements;
633
- private _relations;
634
- private _incoming;
635
- private _outgoing;
636
- private _internal;
637
- private _cacheAscendingSiblings;
638
- private _views;
639
- constructor(type: LikeC4Model.ModelType<M>, sourcemodel: LikeC4Model.SourceModel<M>, elements: Element[], relations: Relation[], views: LikeC4Model.SourceModel<M>['views'], ViewModelClass: Class<M>);
640
- /**
641
- * Returns the root elements of the model.
642
- */
643
- roots(): ReadonlyArray<LikeC4Model.ElementModel<M>>;
644
- /**
645
- * Returns all elements in the model.
646
- */
647
- elements(): ReadonlyArray<LikeC4Model.ElementModel<M>>;
648
- /**
649
- * Returns a specific element by its FQN.
650
- */
651
- element(id: Fqn): LikeC4Model.ElementModel<M>;
652
- /**
653
- * Returns all relationships in the model.
654
- */
655
- relationships(): ReadonlyArray<LikeC4Model.Relationship<M>>;
656
- /**
657
- * Returns a specific relationship by its ID.
658
- */
659
- relationship(id: RelationID): LikeC4Model.Relationship<M>;
660
- /**
661
- * Returns all views in the model.
662
- */
663
- views(): ReadonlyArray<M>;
664
- /**
665
- * Returns a specific view by its ID.
666
- */
667
- view(viewId: ViewID): M;
668
- /**
669
- * Returns the parent element of given element.
670
- * @see ancestors
671
- */
672
- parent(element: ElementOrFqn): LikeC4Model.ElementModel<M> | null;
673
- /**
674
- * Get all children of the element (only direct children),
675
- * @see descendants
676
- */
677
- children(element: ElementOrFqn): ReadonlyArray<LikeC4Model.ElementModel<M>>;
678
- /**
679
- * Get all sibling (i.e. same parent)
680
- */
681
- siblings(element: ElementOrFqn): ReadonlyArray<LikeC4Model.ElementModel<M>>;
682
- /**
683
- * Get all ancestor elements (i.e. parent, parent’s parent, etc.)
684
- * (from closest to root)
685
- */
686
- ancestors(element: ElementOrFqn): ReadonlyArray<LikeC4Model.ElementModel<M>>;
687
- /**
688
- * Get all descendant elements (i.e. children, children’s children, etc.)
689
- */
690
- descendants(element: ElementOrFqn): ReadonlyArray<LikeC4Model.ElementModel<M>>;
691
- /**
692
- * Incoming relationships to the element and its descendants
693
- * @see incomers
694
- */
695
- incoming(element: ElementOrFqn, filter?: IncomingFilter): ReadonlyArray<LikeC4Model.Relationship<M>>;
696
- /**
697
- * Source elements of incoming relationships
698
- */
699
- incomers(element: ElementOrFqn, filter?: IncomingFilter): ReadonlyArray<LikeC4Model.ElementModel<M>>;
700
- /**
701
- * Outgoing relationships from the element and its descendants
702
- * @see outgoers
703
- */
704
- outgoing(element: ElementOrFqn, filter?: OutgoingFilter): ReadonlyArray<LikeC4Model.Relationship<M>>;
705
- /**
706
- * Target elements of outgoing relationships
707
- */
708
- outgoers(element: ElementOrFqn, filter?: OutgoingFilter): ReadonlyArray<LikeC4Model.ElementModel<M>>;
709
- /**
710
- * Relationships inside the element, among descendants
711
- */
712
- internal(element: ElementOrFqn): ReadonlyArray<LikeC4Model.Relationship<M>>;
713
- /**
714
- * Resolve siblings of the element and siblings of ancestors
715
- * (from closest to root)
716
- */
717
- ascendingSiblings(element: ElementOrFqn): ReadonlyArray<LikeC4Model.ElementModel<M>>;
718
- /**
719
- * Resolve all views that contain the element
720
- */
721
- viewsWithElement(element: ElementOrFqn): ReadonlyArray<M>;
722
- private addElement;
723
- private addRelation;
724
- private _childrenOf;
725
- private _incomingTo;
726
- private _outgoingFrom;
727
- private _internalOf;
728
- }
729
- declare namespace LikeC4Model {
730
- function create(source: LikeC4Model.SourceModel): PickBySource<typeof source>;
731
- function computed(source: ComputedLikeC4Model): LikeC4Model<LikeC4ViewModel>;
732
- function layouted(source: LayoutedLikeC4Model): LikeC4Model<LikeC4DiagramModel>;
733
- function isModel(model: any): model is LikeC4Model;
734
- type SourceModel<M extends ViewModel = ViewModel> = M extends LikeC4DiagramModel ? LayoutedLikeC4Model : ComputedLikeC4Model;
735
- type ViewModel = LikeC4ViewModel | LikeC4DiagramModel;
736
- namespace ViewModel {
737
- type ElementModel = LikeC4ViewModel.Element | LikeC4DiagramModel.Element;
738
- type Relationship = LikeC4Model.Relationship<ViewModel>;
739
- function isLayouted(model: ViewModel): model is LikeC4DiagramModel;
740
- }
741
- type Computed = LikeC4Model<LikeC4ViewModel>;
742
- namespace Computed {
743
- type ViewModel = LikeC4ViewModel;
744
- type SourceModel = LikeC4Model.SourceModel<ViewModel>;
745
- }
746
- type Layouted = LikeC4Model<LikeC4DiagramModel>;
747
- namespace Layouted {
748
- type ViewModel = LikeC4DiagramModel;
749
- type SourceModel = LikeC4Model.SourceModel<ViewModel>;
750
- }
751
- type ModelType<M extends ViewModel = ViewModel> = M extends LikeC4DiagramModel ? 'layouted' : M extends LikeC4ViewModel ? 'computed' : never;
752
- function isLayouted(model: LikeC4Model): model is Layouted;
753
- class Relationship<M extends ViewModel = ViewModel> {
754
- readonly relationship: Relation;
755
- private readonly model;
756
- constructor(relationship: Relation, model: LikeC4Model<M>);
757
- get id(): RelationID$1;
758
- get title(): string;
759
- get kind(): RelationshipKind<string>;
760
- get tags(): Tag[];
761
- get source(): ElementModel<M>;
762
- get target(): ElementModel<M>;
763
- metadata(key: string): string | undefined;
764
- metadata(key: string, defaultValue: string): string;
765
- hasMetadata(key: string): boolean;
766
- }
767
- class ElementModel<M extends ViewModel = ViewModel> {
768
- readonly element: Element;
769
- private readonly model;
770
- constructor(element: Element, model: LikeC4Model<M>);
771
- get id(): Fqn$1<string>;
772
- get title(): string;
773
- get kind(): ElementKind;
774
- get isRoot(): boolean;
775
- get hasNested(): boolean;
776
- get shape(): ElementShape;
777
- get color(): Color;
778
- get tags(): Tag[];
779
- parent(): ElementModel<M> | null;
780
- metadata(key: string): string | undefined;
781
- metadata(key: string, defaultValue: string): string;
782
- hasMetadata(key: string): boolean;
783
- ancestors(): readonly ElementModel<M>[];
784
- siblings(): readonly ElementModel<M>[];
785
- descendants(): readonly ElementModel<M>[];
786
- children(): readonly ElementModel<M>[];
787
- /**
788
- * First 'view of' current element
789
- */
790
- viewOf(): M;
791
- /**
792
- * All views 'view of' current element
793
- */
794
- viewsOf(): M[];
795
- /**
796
- * Views that contain this element
797
- */
798
- views(): readonly M[];
799
- incoming(filter?: IncomingFilter): readonly Relationship<M>[];
800
- incomers(filter?: IncomingFilter): readonly ElementModel<M>[];
801
- outgoing(filter?: OutgoingFilter): readonly Relationship<M>[];
802
- outgoers(filter?: OutgoingFilter): readonly ElementModel<M>[];
803
- internal(): readonly Relationship<M>[];
804
- /**
805
- * Resolve siblings of the element and siblings of ancestors
806
- * (from closest to root)
807
- */
808
- ascendingSiblings(): readonly ElementModel<M>[];
809
- }
810
- }
811
-
812
- /**
813
- * All methods are view-scoped, i.e. only return elements and connections in the view.
814
- */
815
- declare class LikeC4DiagramModel {
816
- readonly view: DiagramView;
817
- readonly model: LikeC4Model.Layouted;
818
- private readonly _rootElements;
819
- private readonly _elements;
820
- private readonly _connections;
821
- constructor(view: DiagramView, model: LikeC4Model.Layouted);
822
- get isDynamic(): boolean;
823
- get id(): ViewID$1<string>;
824
- get title(): string;
825
- get viewOf(): LikeC4Model.ElementModel<LikeC4DiagramModel>;
826
- get tags(): Tag[];
827
- roots(): ReadonlyArray<LikeC4DiagramModel.Element>;
828
- elements(): ReadonlyArray<LikeC4DiagramModel.Element>;
829
- element(id: Fqn): LikeC4DiagramModel.Element;
830
- hasElement(id: Fqn): boolean;
831
- connections(): ReadonlyArray<LikeC4DiagramModel.Connection>;
832
- connection(id: EdgeId): LikeC4DiagramModel.Connection;
833
- findConnections(source: ElementOrFqn, target: ElementOrFqn, direction?: 'both' | 'direct'): ReadonlyArray<LikeC4DiagramModel.Connection>;
834
- parent(element: ElementOrFqn): LikeC4DiagramModel.Element | null;
835
- children(element: ElementOrFqn): ReadonlyArray<LikeC4DiagramModel.Element>;
836
- siblings(element: ElementOrFqn): ReadonlyArray<LikeC4DiagramModel.Element>;
837
- /**
838
- * Get all ancestor elements (i.e. parent, parent’s parent, etc.)
839
- * (from closest to root)
840
- */
841
- ancestors(element: ElementOrFqn): ReadonlyArray<LikeC4DiagramModel.Element>;
842
- descendants(element: ElementOrFqn): ReadonlyArray<LikeC4DiagramModel.Element>;
843
- incoming(element: ElementOrFqn, filter?: IncomingFilter): ReadonlyArray<LikeC4DiagramModel.Connection>;
844
- incomers(element: ElementOrFqn, filter?: IncomingFilter): ReadonlyArray<LikeC4DiagramModel.Element>;
845
- /**
846
- * Outgoing relationships from the element and its descendants
847
- */
848
- outgoing(element: ElementOrFqn, filter?: OutgoingFilter): ReadonlyArray<LikeC4DiagramModel.Connection>;
849
- outgoers(element: ElementOrFqn, filter?: OutgoingFilter): ReadonlyArray<LikeC4DiagramModel.Element>;
850
- }
851
- declare namespace LikeC4DiagramModel {
852
- /**
853
- * Represents an element in the view. (Diagram node)
854
- * All methods are view-scoped, i.e. `children` returns only children of the element in the view.
855
- */
856
- class Element {
857
- readonly node: DiagramNode;
858
- private readonly view;
859
- constructor(node: DiagramNode, view: LikeC4DiagramModel);
860
- get id(): NodeId<string>;
861
- get title(): string;
862
- get kind(): ElementKind;
863
- get isRoot(): boolean;
864
- get hasNested(): boolean;
865
- get shape(): ElementShape;
866
- get color(): Color;
867
- get tags(): Tag[];
868
- get level(): number;
869
- get depth(): number;
870
- model(): LikeC4Model.ElementModel<LikeC4DiagramModel>;
871
- parent(): LikeC4DiagramModel.Element | null;
872
- metadata(key: string): string | undefined;
873
- metadata(key: string, defaultValue: string): string;
874
- hasMetadata(key: string): boolean;
875
- ancestors(): ReadonlyArray<LikeC4DiagramModel.Element>;
876
- siblings(): ReadonlyArray<LikeC4DiagramModel.Element>;
877
- descendants(): ReadonlyArray<LikeC4DiagramModel.Element>;
878
- children(): ReadonlyArray<LikeC4DiagramModel.Element>;
879
- incoming(filter?: IncomingFilter): ReadonlyArray<LikeC4DiagramModel.Connection>;
880
- incomers(filter?: IncomingFilter): ReadonlyArray<LikeC4DiagramModel.Element>;
881
- outgoing(filter?: OutgoingFilter): ReadonlyArray<LikeC4DiagramModel.Connection>;
882
- outgoers(filter?: OutgoingFilter): ReadonlyArray<LikeC4DiagramModel.Element>;
883
- connectionsTo(target: Fqn | LikeC4DiagramModel.Element): ReadonlyArray<LikeC4DiagramModel.Connection>;
884
- }
885
- /**
886
- * Represents a connection between two elements.
887
- * May be source from multiple model relationships.
888
- */
889
- class Connection {
890
- readonly edge: DiagramEdge;
891
- private readonly view;
892
- constructor(edge: DiagramEdge, view: LikeC4DiagramModel);
893
- get id(): EdgeId$1;
894
- get source(): LikeC4DiagramModel.Element;
895
- get target(): LikeC4DiagramModel.Element;
896
- get tags(): Tag[];
897
- get color(): Color;
898
- /**
899
- * Model relationships
900
- */
901
- relationships(): ReadonlyArray<LikeC4Model.Relationship<LikeC4DiagramModel>>;
902
- }
903
- }
904
-
905
- /**
906
- * Common head of two arrays
907
- */
908
- declare function commonHead<T>(sources: ReadonlyArray<T>, targets: ReadonlyArray<T>, equals?: (a: T, b: T) => boolean): T[];
909
-
910
- declare function compareNatural(a: string | undefined, b: string | undefined): -1 | 0 | 1;
911
-
912
- type Predicate<T> = (x: T) => boolean;
913
- declare function nameFromFqn(fqn: LiteralUnion<Fqn$1, string>): string;
914
- declare function isAncestor<E extends {
915
- id: Fqn$1;
916
- }>(...args: [ancestor: string, another: string] | [ancestor: E, another: E]): boolean;
917
- declare function isSameHierarchy<E extends {
918
- id: Fqn$1;
919
- }>(one: E | Fqn$1, another: E | Fqn$1): boolean;
920
- declare function isDescendantOf<E extends {
921
- id: Fqn$1;
922
- }>(ancestors: E[]): (e: E) => boolean;
923
- declare function notDescendantOf(ancestors: Element[]): (e: Element) => boolean;
924
- declare function commonAncestor<IDs extends string>(first: Fqn$1<IDs>, second: Fqn$1<IDs>): Fqn$1<IDs>;
925
- declare function parentFqn<IDs extends string>(fqn: Fqn$1<IDs>): Fqn$1<IDs> | null;
926
- declare function parentFqnPredicate<T extends {
927
- parent: Fqn$1 | null;
928
- }>(parent: Fqn$1): Predicate<T>;
929
- /**
930
- * Get all ancestor elements (i.e. parent, parent’s parent, etc.)
931
- * (from closest to root)
932
- */
933
- declare function ancestorsFqn<IDs extends string>(fqn: Fqn$1<IDs>): Fqn$1<IDs>[];
934
- /**
935
- * Compares two fully qualified names (fqns) hierarchically based on their depth.
936
- * From parent nodes to leaves
937
- *
938
- * @param {string} a - The first fqn to compare.
939
- * @param {string} b - The second fqn to compare.
940
- * @returns {number} - 0 if the fqns have the same depth.
941
- * - Positive number if a is deeper than b.
942
- * - Negative number if b is deeper than a.
943
- */
944
- declare function compareFqnHierarchically<T extends string = string>(a: T, b: T): -1 | 0 | 1;
945
- declare function compareByFqnHierarchically<T extends {
946
- id: string;
947
- }>(a: T, b: T): 0 | 1 | -1;
948
- type IterableContainer$1<T = unknown> = ReadonlyArray<T> | readonly [];
949
- type ReorderedArray<T extends IterableContainer$1> = {
950
- -readonly [P in keyof T]: T[number];
951
- };
952
- declare function sortByFqnHierarchically<T extends {
953
- id: string;
954
- }, A extends IterableContainer$1<T>>(array: A): ReorderedArray<A>;
955
- declare function sortNaturalByFqn<T extends {
956
- id: string;
957
- }, A extends IterableContainer$1<T>>(array: A): ReorderedArray<A>;
958
-
959
- /**
960
- * This should only be used for defining generics which extend any kind of JS
961
- * array under the hood, this includes arrays *AND* tuples (of the form [x, y],
962
- * and of the form [x, ...y[]], etc...), and their readonly equivalent. This
963
- * allows us to be more inclusive to what functions can process.
964
- *
965
- * @example
966
- * function map<T extends IterableContainer>(items: T) { ... }
967
- *
968
- * We would've named this `ArrayLike`, but that's already used by typescript...
969
- * @see This was inspired by the type-definition of Promise.all (https://github.com/microsoft/TypeScript/blob/1df5717b120cddd325deab8b0f2b2c3eecaf2b01/src/lib/es2015.promise.d.ts#L21)
970
- */
971
- type IterableContainer<T = unknown> = ReadonlyArray<T> | readonly [];
972
-
973
- type ArraySetRequired<T extends IterableContainer, Min extends number, Iteration extends ReadonlyArray<unknown> = []> = number extends Min ? never : Iteration["length"] extends Min ? T : T extends readonly [] ? never : T extends [infer Head, ...infer Rest] ? [
974
- Head,
975
- ...ArraySetRequired<Rest, Min, [unknown, ...Iteration]>
976
- ] : T extends readonly [infer Head, ...infer Rest] ? readonly [
977
- Head,
978
- ...ArraySetRequired<Rest, Min, [unknown, ...Iteration]>
979
- ] : T extends Array<infer Item> ? [
980
- Item,
981
- ...ArraySetRequired<T, Min, [unknown, ...Iteration]>
982
- ] : T extends ReadonlyArray<infer Item> ? readonly [
983
- Item,
984
- ...ArraySetRequired<T, Min, [unknown, ...Iteration]>
985
- ] : never;
986
- /**
987
- * Checks if the given array has at least the defined number of elements. When
988
- * the minimum used is a literal (e.g. `3`) the output is refined accordingly so
989
- * that those indices are defined when accessing the array even when using
990
- * typescript's 'noUncheckedIndexAccess'.
991
- *
992
- * @param data - The input array.
993
- * @param minimum - The minimum number of elements the array must have.
994
- * @returns True if the array's length is *at least* `minimum`. When `minimum`
995
- * is a literal value, the output is narrowed to ensure the first items are
996
- * guaranteed.
997
- * @signature
998
- * R.hasAtLeast(data, minimum)
999
- * @example
1000
- * R.hasAtLeast([], 4); // => false
1001
- *
1002
- * const data: number[] = [1,2,3,4];
1003
- * R.hasAtLeast(data, 1); // => true
1004
- * data[0]; // 1, with type `number`
1005
- * @dataFirst
1006
- * @category Array
1007
- */
1008
- declare function hasAtLeast<T extends IterableContainer, N extends number>(data: IterableContainer | T, minimum: IsNumericLiteral<N> extends true ? N : never): data is ArraySetRequired<T, N>;
1009
- declare function hasAtLeast(data: IterableContainer, minimum: number): boolean;
1010
- /**
1011
- * Checks if the given array has at least the defined number of elements. When
1012
- * the minimum used is a literal (e.g. `3`) the output is refined accordingly so
1013
- * that those indices are defined when accessing the array even when using
1014
- * typescript's 'noUncheckedIndexAccess'.
1015
- *
1016
- * @param minimum - The minimum number of elements the array must have.
1017
- * @returns True if the array's length is *at least* `minimum`. When `minimum`
1018
- * is a literal value, the output is narrowed to ensure the first items are
1019
- * guaranteed.
1020
- * @signature
1021
- * R.hasAtLeast(minimum)(data)
1022
- * @example
1023
- * R.pipe([], R.hasAtLeast(4)); // => false
1024
- *
1025
- * const data = [[1,2], [3], [4,5]];
1026
- * R.pipe(
1027
- * data,
1028
- * R.filter(R.hasAtLeast(2)),
1029
- * R.map(([, second]) => second),
1030
- * ); // => [2,5], with type `number[]`
1031
- * @dataLast
1032
- * @category Array
1033
- */
1034
- declare function hasAtLeast<N extends number>(minimum: IsNumericLiteral<N> extends true ? N : never): <T extends IterableContainer>(data: IterableContainer | T) => data is ArraySetRequired<T, N>;
1035
- declare function hasAtLeast(minimum: number): (data: IterableContainer) => boolean;
1036
-
1037
- declare function isString(value: unknown): value is string;
1038
- declare function isNonEmptyArray<A>(arr: ArrayLike<A> | undefined): arr is NonEmptyArray<A>;
1039
-
1040
- declare function delay(): Promise<string>;
1041
- declare function delay(ms: number): Promise<string>;
1042
- declare function delay(randomFrom: number, randomTo: number): Promise<string>;
1043
-
1044
- /**
1045
- * Compares two relations hierarchically.
1046
- * From the most general (implicit) to the most specific.
1047
- */
1048
- declare const compareRelations: <T extends {
1049
- source: string;
1050
- target: string;
1051
- }>(a: T, b: T) => 0 | 1 | -1;
1052
-
1053
- export { type AnyTypes, type AnyTypesNested, AutoLayoutDirection, BorderStyle, Builder, type BuilderSpecification, Color, ComputedEdge, ComputedLikeC4Model, ComputedNode, ComputedView, CustomElementExpr, CustomRelationExpr, DiagramEdge, DiagramNode, DiagramView, EdgeId$1 as EdgeId, Element, ElementColors, ElementKind, ElementKindSpecification, ElementShape, type Expression, Fqn$1 as Fqn, HexColorLiteral, LayoutedLikeC4Model, LikeC4DiagramModel, LikeC4Model, LikeC4View, LikeC4ViewModel, type ModelBuilder, type ModelHelpers, NodeId, NonEmptyArray, ParsedLikeC4Model, Relation, RelationID$1 as RelationID, RelationshipArrowType, RelationshipColors, RelationshipKind, RelationshipKindSpecification, RelationshipLineType, Tag, ThemeColorValues, Types, type TypesNested, type ViewBuilder, type ViewHelpers, ViewID$1 as ViewID, ViewRuleStyle, type ViewsBuilder, ancestorsFqn, commonAncestor, commonHead, compareByFqnHierarchically, compareFqnHierarchically, compareNatural, compareRelations, computeColorValues, defaultTheme, delay, hasAtLeast, invariant, isAncestor, isDescendantOf, isNonEmptyArray, isSameHierarchy, isString, nameFromFqn, nonNullable, nonexhaustive, notDescendantOf, parentFqn, parentFqnPredicate, sortByFqnHierarchically, sortNaturalByFqn };