@likec4/core 1.43.0 → 1.45.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/builder/index.d.mts +15 -14
- package/dist/builder/index.mjs +35 -18
- package/dist/compute-view/index.d.mts +9 -9
- package/dist/compute-view/index.mjs +8 -7
- package/dist/compute-view/relationships-view/index.d.mts +7 -7
- package/dist/compute-view/relationships-view/index.mjs +2 -2
- package/dist/index.d.mts +27 -7
- package/dist/index.mjs +8 -7
- package/dist/model/connection/deployment/index.d.mts +9 -9
- package/dist/model/connection/deployment/index.mjs +2 -2
- package/dist/model/connection/index.d.mts +10 -10
- package/dist/model/connection/index.mjs +3 -3
- package/dist/model/connection/model/index.d.mts +9 -9
- package/dist/model/connection/model/index.mjs +2 -2
- package/dist/model/index.d.mts +11 -11
- package/dist/model/index.mjs +4 -4
- package/dist/shared/{core.CDvVInBp.d.mts → core.0zAQeenX.d.mts} +3 -3
- package/dist/shared/core.3ZhnKAlZ.mjs +106 -0
- package/dist/shared/{core.CwsG7hOw.d.mts → core.5ZQ-r3Oa.d.mts} +1 -1
- package/dist/shared/{core.hNWo20Ym.d.mts → core.B73yxfPi.d.mts} +55 -36
- package/dist/shared/{core.Cq2kxOI-.d.mts → core.BGFjN3nv.d.mts} +3 -3
- package/dist/shared/{core.rCeaAqgW.mjs → core.BdPcbSkN.mjs} +1 -1
- package/dist/shared/core.BhNcrwzK.mjs +7 -0
- package/dist/shared/core.BkVA6gjl.mjs +5 -0
- package/dist/shared/core.BuQZczj6.mjs +38 -0
- package/dist/shared/{core.2N_9BzyD.mjs → core.CQPEY2wQ.mjs} +5 -4
- package/dist/shared/{core.DFi2dOTl.mjs → core.CR3PmPzr.mjs} +85 -1
- package/dist/shared/{core.DyToofsP.mjs → core.CRI1AjFj.mjs} +276 -145
- package/dist/shared/{core.CXWsKEDr.mjs → core.CWwSgOzF.mjs} +268 -631
- package/dist/shared/{core.727Qoh_W.mjs → core.CdNCAwq7.mjs} +2 -101
- package/dist/shared/{core.QJD_fcrc.mjs → core.CmPXpJ8l.mjs} +1 -14
- package/dist/shared/{core.DTdfiejA.d.mts → core.Cog93roC.d.mts} +2 -2
- package/dist/shared/core.Coi_LOUZ.mjs +7 -0
- package/dist/shared/{core.CcJ1FZ7h.d.mts → core.CpURdWRM.d.mts} +174 -76
- package/dist/shared/{core.D5fzJWbF.d.mts → core.DB0Ue5Wx.d.mts} +1 -1
- package/dist/shared/{core.DNbUPnve.mjs → core.DEieYfbG.mjs} +27 -25
- package/dist/shared/{core.BYNkXQ8A.mjs → core.DH7TXqXf.mjs} +30 -1
- package/dist/shared/{core.DMMOWQqc.mjs → core.DIE3F6sw.mjs} +2 -2
- package/dist/shared/{core.D0NziuvN.mjs → core.DViDmiAu.mjs} +5 -5
- package/dist/shared/{core.Be05qJwN.mjs → core.D_f4F48-.mjs} +41 -18
- package/dist/shared/{core.C2TiyjI6.mjs → core.DbfO90vF.mjs} +20 -31
- package/dist/shared/{core.BT-9gaqQ.d.mts → core.DnCLhN8C.d.mts} +83 -94
- package/dist/shared/{core.BouyJs63.mjs → core.DqlrMlsf.mjs} +1 -1
- package/dist/shared/{core.CNgZvKb8.mjs → core.DrUt0Lbi.mjs} +1 -1
- package/dist/shared/{core.CT1xBp4R.d.mts → core.Dvh1H0T2.d.mts} +2 -2
- package/dist/shared/core.M9ayqQZa.mjs +1207 -0
- package/dist/shared/{core.CvLjw3bH.d.mts → core.mUnpvHtA.d.mts} +96 -12
- package/dist/shared/core.oSV6SRfk.mjs +13 -0
- package/dist/shared/core.q10OP9oJ.mjs +5 -0
- package/dist/shared/{core.BXs4wY7R.d.mts → core.t3qfsVvn.d.mts} +4 -4
- package/dist/shared/core.uFk_o9X6.mjs +13 -0
- package/dist/shared/core.vzLtp8i3.mjs +1282 -0
- package/dist/styles/index.d.mts +18 -8
- package/dist/styles/index.mjs +63 -1
- package/dist/types/_aux.d.mts +2 -2
- package/dist/types/_aux.mjs +8 -1
- package/dist/types/expression-model.d.mts +3 -3
- package/dist/types/expression.d.mts +3 -3
- package/dist/types/fqnRef.d.mts +7 -8
- package/dist/types/index.d.mts +17 -13
- package/dist/types/index.mjs +51 -14
- package/dist/utils/graphology/index.mjs +1 -1
- package/dist/utils/index.d.mts +3 -2
- package/dist/utils/index.mjs +9 -6
- package/dist/utils/iterable/index.d.mts +1 -1
- package/dist/utils/iterable/index.mjs +2 -1
- package/package.json +18 -17
- package/dist/shared/core.01VTr9qu.mjs +0 -170
- package/dist/shared/core.1vX5a9AY.mjs +0 -86
- package/dist/shared/core.BazD6cot.mjs +0 -14
- package/dist/shared/core.BzTakU3I.mjs +0 -67
- package/dist/shared/core.OHD4KXm9.mjs +0 -5
|
@@ -1,103 +1,4 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { e } from './core.CqAJJpK_.mjs';
|
|
3
|
-
|
|
4
|
-
var naturalCompareLite = {exports: {}};
|
|
5
|
-
|
|
6
|
-
var hasRequiredNaturalCompareLite;
|
|
7
|
-
|
|
8
|
-
function requireNaturalCompareLite () {
|
|
9
|
-
if (hasRequiredNaturalCompareLite) return naturalCompareLite.exports;
|
|
10
|
-
hasRequiredNaturalCompareLite = 1;
|
|
11
|
-
/*
|
|
12
|
-
* @version 1.4.0
|
|
13
|
-
* @date 2015-10-26
|
|
14
|
-
* @stability 3 - Stable
|
|
15
|
-
* @author Lauri Rooden (https://github.com/litejs/natural-compare-lite)
|
|
16
|
-
* @license MIT License
|
|
17
|
-
*/
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
var naturalCompare = function(a, b) {
|
|
21
|
-
var i, codeA
|
|
22
|
-
, codeB = 1
|
|
23
|
-
, posA = 0
|
|
24
|
-
, posB = 0
|
|
25
|
-
, alphabet = String.alphabet;
|
|
26
|
-
|
|
27
|
-
function getCode(str, pos, code) {
|
|
28
|
-
if (code) {
|
|
29
|
-
for (i = pos; code = getCode(str, i), code < 76 && code > 65;) ++i;
|
|
30
|
-
return +str.slice(pos - 1, i)
|
|
31
|
-
}
|
|
32
|
-
code = alphabet && alphabet.indexOf(str.charAt(pos));
|
|
33
|
-
return code > -1 ? code + 76 : ((code = str.charCodeAt(pos) || 0), code < 45 || code > 127) ? code
|
|
34
|
-
: code < 46 ? 65 // -
|
|
35
|
-
: code < 48 ? code - 1
|
|
36
|
-
: code < 58 ? code + 18 // 0-9
|
|
37
|
-
: code < 65 ? code - 11
|
|
38
|
-
: code < 91 ? code + 11 // A-Z
|
|
39
|
-
: code < 97 ? code - 37
|
|
40
|
-
: code < 123 ? code + 5 // a-z
|
|
41
|
-
: code - 63
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
if ((a+="") != (b+="")) for (;codeB;) {
|
|
46
|
-
codeA = getCode(a, posA++);
|
|
47
|
-
codeB = getCode(b, posB++);
|
|
48
|
-
|
|
49
|
-
if (codeA < 76 && codeB < 76 && codeA > 66 && codeB > 66) {
|
|
50
|
-
codeA = getCode(a, posA, posA);
|
|
51
|
-
codeB = getCode(b, posB, posA = i);
|
|
52
|
-
posB = i;
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
if (codeA != codeB) return (codeA < codeB) ? -1 : 1
|
|
56
|
-
}
|
|
57
|
-
return 0
|
|
58
|
-
};
|
|
59
|
-
|
|
60
|
-
try {
|
|
61
|
-
naturalCompareLite.exports = naturalCompare;
|
|
62
|
-
} catch (e) {
|
|
63
|
-
String.naturalCompare = naturalCompare;
|
|
64
|
-
}
|
|
65
|
-
return naturalCompareLite.exports;
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
var naturalCompareLiteExports = requireNaturalCompareLite();
|
|
69
|
-
const compare = /*@__PURE__*/getDefaultExportFromCjs(naturalCompareLiteExports);
|
|
70
|
-
|
|
71
|
-
function compareNatural(a, b) {
|
|
72
|
-
if (a === b) return 0;
|
|
73
|
-
if (e(a)) {
|
|
74
|
-
if (e(b)) {
|
|
75
|
-
return compare(a, b);
|
|
76
|
-
}
|
|
77
|
-
return 1;
|
|
78
|
-
}
|
|
79
|
-
return e(b) ? -1 : 0;
|
|
80
|
-
}
|
|
81
|
-
function compareNaturalHierarchically(separator = ".", deepestFirst = false) {
|
|
82
|
-
return (a, b) => {
|
|
83
|
-
if (a === b) return 0;
|
|
84
|
-
if (!a) return -1;
|
|
85
|
-
if (!b) return 1;
|
|
86
|
-
const aParts = a.split(separator);
|
|
87
|
-
const bParts = b.split(separator);
|
|
88
|
-
const minLength = Math.min(aParts.length, bParts.length);
|
|
89
|
-
for (let i = 0; i < minLength; i++) {
|
|
90
|
-
const aPart = aParts[i];
|
|
91
|
-
const bPart = bParts[i];
|
|
92
|
-
const comparison = compare(aPart, bPart);
|
|
93
|
-
if (comparison !== 0) {
|
|
94
|
-
return comparison;
|
|
95
|
-
}
|
|
96
|
-
}
|
|
97
|
-
const diff = aParts.length - bParts.length;
|
|
98
|
-
return deepestFirst ? -1 * diff : diff;
|
|
99
|
-
};
|
|
100
|
-
}
|
|
1
|
+
import { c as compareNatural } from './core.3ZhnKAlZ.mjs';
|
|
101
2
|
|
|
102
3
|
function isString(value) {
|
|
103
4
|
return value != null && typeof value === "string";
|
|
@@ -272,4 +173,4 @@ function sortNaturalByFqn(array, sort) {
|
|
|
272
173
|
}).map(({ item }) => item);
|
|
273
174
|
}
|
|
274
175
|
|
|
275
|
-
export { ancestorsFqn as a, isDescendantOf as b, isNonEmptyArray as c, isSameHierarchy as d, isString as e, sortParentsFirst as f,
|
|
176
|
+
export { ancestorsFqn as a, isDescendantOf as b, isNonEmptyArray as c, isSameHierarchy as d, isString as e, sortParentsFirst as f, commonAncestor as g, hasProp as h, isAncestor as i, compareByFqnHierarchically as j, compareFqnHierarchically as k, hierarchyDistance as l, hierarchyLevel as m, nameFromFqn as n, sortByFqnHierarchically as o, parentFqn as p, isAnyOf as q, sortNaturalByFqn as s };
|
|
@@ -18,17 +18,4 @@ function ifind(arg1, arg2) {
|
|
|
18
18
|
return _find(arg1);
|
|
19
19
|
}
|
|
20
20
|
|
|
21
|
-
|
|
22
|
-
if (!iterable) {
|
|
23
|
-
return _head;
|
|
24
|
-
}
|
|
25
|
-
return _head(iterable);
|
|
26
|
-
}
|
|
27
|
-
function _head(iter) {
|
|
28
|
-
for (const value of iter) {
|
|
29
|
-
return value;
|
|
30
|
-
}
|
|
31
|
-
return;
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
export { ihead as a, ifind as i };
|
|
21
|
+
export { ifind as i };
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { E as ElementModel, e as DeploymentElementModel } from './core.
|
|
2
|
-
import { A as Any } from './core.
|
|
1
|
+
import { E as ElementModel, e as DeploymentElementModel } from './core.CpURdWRM.mjs';
|
|
2
|
+
import { A as Any } from './core.B73yxfPi.mjs';
|
|
3
3
|
import { F as Fqn } from './core.DX-WYEPA.mjs';
|
|
4
4
|
|
|
5
5
|
interface Connection<Elem = ElementModel<Any> | DeploymentElementModel<Any>, Id = string> {
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { t as t$2 } from './core.BsSXS-_R.mjs';
|
|
2
|
+
|
|
3
|
+
function t$1(...t){return t$2(Object.entries,t)}
|
|
4
|
+
|
|
5
|
+
function e(e,...n){return typeof e==`string`||typeof e==`number`||typeof e==`symbol`?r=>t(r,e,...n):t(e,...n)}function t(e,...t){let n=e;for(let e of t){if(n==null)return;n=n[e];}return n}
|
|
6
|
+
|
|
7
|
+
export { e, t$1 as t };
|
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
1
|
+
import { SetRequired, IsAny } from 'type-fest';
|
|
2
|
+
import { L as LikeC4Styles } from './core.Dvh1H0T2.mjs';
|
|
3
|
+
import { A as Any, R as RelationKind, r as Tags, H as Metadata, C as MetadataKey, I as LooseTag, F as Fqn, a as ElementId, E as ElementKind, y as DeploymentKind, c as AnyLayouted, J as RelationId$1, S as StrictViewId, n as _type, m as _stage, K as LooseElementId, O as LooseDeploymentId, x as DeploymentFqn, t as toComputed, b as AnyComputed, Q as Stage, D as DeploymentId, V as ViewId, T as Tag, d as AnyParsed, P as ProjectId$1, X as LooseViewId, U as Unknown, e as Aux, i as UnknownParsed, g as UnknownComputed, h as UnknownLayouted } from './core.B73yxfPi.mjs';
|
|
3
4
|
import { d as RelationId, P as ProjectId, a as IconUrl, N as NodeId, G as GroupElementKind, j as EdgeId, k as StepEdgeId, V as ViewId$1 } from './core.DX-WYEPA.mjs';
|
|
4
5
|
import { D as DefaultMap } from './core.CywrQs86.mjs';
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
import { g as Relationship, f as Element, E as ElementStyle, F as ComputedNodeStyle, a1 as DynamicViewDisplayVariant, k as LikeC4Project, M as ModelGlobals } from './core.CvLjw3bH.mjs';
|
|
6
|
+
import { b as RichTextOrEmpty, L as LayoutedView, V as ViewManualLayoutSnapshot, r as ComputedView, v as ViewWithType, P as ParsedLikeC4ModelData, C as ComputedLikeC4ModelData, c as LayoutedLikeC4ModelData, e as DeployedInstance, j as DeploymentRelationship, f as DeploymentElement, D as DeploymentNode, m as LikeC4ModelDump, o as AuxFromDump } from './core.DnCLhN8C.mjs';
|
|
7
|
+
import { c as IteratorLike, L as Link, N as NonEmptyArray } from './core.DB0Ue5Wx.mjs';
|
|
8
|
+
import { C as Color, f as RelationshipLineType, g as RelationshipArrowType, h as ElementShape, W as WhereOperator } from './core.0zAQeenX.mjs';
|
|
9
|
+
import { g as Relationship, f as Element, E as ElementStyle, C as ComputedNodeStyle, B as BBox, a7 as DynamicViewDisplayVariant, o as LikeC4Project, S as Specification, M as ModelGlobals } from './core.mUnpvHtA.mjs';
|
|
10
10
|
import { FqnRef } from '../types/fqnRef.mjs';
|
|
11
11
|
|
|
12
12
|
type RelationshipsIterator<A extends Any> = IteratorLike<RelationshipModel<A>>;
|
|
@@ -19,6 +19,8 @@ interface AnyRelationshipModel<A extends Any = Any> extends WithTags<A>, WithMet
|
|
|
19
19
|
readonly expression: string;
|
|
20
20
|
readonly title: string | null;
|
|
21
21
|
readonly technology: string | null;
|
|
22
|
+
readonly hasSummary: boolean;
|
|
23
|
+
readonly summary: RichTextOrEmpty;
|
|
22
24
|
readonly description: RichTextOrEmpty;
|
|
23
25
|
readonly navigateTo: LikeC4ViewModel<A> | null;
|
|
24
26
|
readonly kind: RelationKind<A> | null;
|
|
@@ -46,6 +48,20 @@ declare class RelationshipModel<A extends Any = Any> implements AnyRelationshipM
|
|
|
46
48
|
get expression(): string;
|
|
47
49
|
get title(): string | null;
|
|
48
50
|
get technology(): string | null;
|
|
51
|
+
/**
|
|
52
|
+
* Returns true if the relationship has a summary and a description
|
|
53
|
+
* (if one is missing - it falls back to another)
|
|
54
|
+
*/
|
|
55
|
+
get hasSummary(): boolean;
|
|
56
|
+
/**
|
|
57
|
+
* Short description of the relationship.
|
|
58
|
+
* Falls back to description if summary is not provided.
|
|
59
|
+
*/
|
|
60
|
+
get summary(): RichTextOrEmpty;
|
|
61
|
+
/**
|
|
62
|
+
* Long description of the relationship.
|
|
63
|
+
* Falls back to summary if description is not provided.
|
|
64
|
+
*/
|
|
49
65
|
get description(): RichTextOrEmpty;
|
|
50
66
|
get navigateTo(): LikeC4ViewModel<A> | null;
|
|
51
67
|
get tags(): Tags<A>;
|
|
@@ -74,6 +90,10 @@ type ElementsIterator<M extends Any> = IteratorLike<ElementModel<M>>;
|
|
|
74
90
|
declare class ElementModel<A extends Any = Any> implements WithTags<A>, WithMetadata<A> {
|
|
75
91
|
readonly $model: LikeC4Model<A>;
|
|
76
92
|
readonly $element: Element<A>;
|
|
93
|
+
/**
|
|
94
|
+
* Don't use in runtime, only for type inference
|
|
95
|
+
*/
|
|
96
|
+
readonly Aux: A;
|
|
77
97
|
readonly id: Fqn<A>;
|
|
78
98
|
readonly _literalId: ElementId<A>;
|
|
79
99
|
readonly hierarchyLevel: number;
|
|
@@ -175,10 +195,11 @@ declare class ElementModel<A extends Any = Any> implements WithTags<A>, WithMeta
|
|
|
175
195
|
|
|
176
196
|
type NodesIterator<M extends Any, V extends $View<M>> = IteratorLike<NodeModel<M, V>>;
|
|
177
197
|
declare class NodeModel<A extends Any = Any, V extends $View<A> = $View<A>> implements WithTags<A> {
|
|
178
|
-
|
|
179
|
-
readonly $
|
|
198
|
+
readonly Aux: A;
|
|
199
|
+
readonly $viewModel: LikeC4ViewModel<A, V>;
|
|
200
|
+
readonly $view: V;
|
|
180
201
|
readonly $node: V['nodes'][number];
|
|
181
|
-
constructor($
|
|
202
|
+
constructor($viewModel: LikeC4ViewModel<A, V>, $node: V['nodes'][number]);
|
|
182
203
|
get id(): NodeId;
|
|
183
204
|
get title(): string;
|
|
184
205
|
get kind(): ElementKind<A> | DeploymentKind<A> | typeof GroupElementKind | 'instance';
|
|
@@ -194,6 +215,10 @@ declare class NodeModel<A extends Any = Any, V extends $View<A> = $View<A>> impl
|
|
|
194
215
|
get links(): ReadonlyArray<Link>;
|
|
195
216
|
get navigateTo(): LikeC4ViewModel<A> | null;
|
|
196
217
|
get style(): ComputedNodeStyle;
|
|
218
|
+
get x(): number | undefined;
|
|
219
|
+
get y(): number | undefined;
|
|
220
|
+
get width(): number | undefined;
|
|
221
|
+
get height(): number | undefined;
|
|
197
222
|
children(): ReadonlySet<NodeModel<A, V>>;
|
|
198
223
|
/**
|
|
199
224
|
* Get all ancestor elements (i.e. parent, parent’s parent, etc.)
|
|
@@ -205,7 +230,7 @@ declare class NodeModel<A extends Any = Any, V extends $View<A> = $View<A>> impl
|
|
|
205
230
|
incomers(filter?: IncomingFilter): NodesIterator<A, V>;
|
|
206
231
|
outgoing(filter?: OutgoingFilter): EdgesIterator<A, V>;
|
|
207
232
|
outgoers(filter?: OutgoingFilter): NodesIterator<A, V>;
|
|
208
|
-
|
|
233
|
+
isLayouted(): this is NodeModel.Layouted<A>;
|
|
209
234
|
hasChildren(): boolean;
|
|
210
235
|
hasParent(): this is NodeModel.WithParent<A, V>;
|
|
211
236
|
/**
|
|
@@ -228,43 +253,50 @@ declare class NodeModel<A extends Any = Any, V extends $View<A> = $View<A>> impl
|
|
|
228
253
|
isTagged(tag: LooseTag<A>): boolean;
|
|
229
254
|
}
|
|
230
255
|
declare namespace NodeModel {
|
|
231
|
-
|
|
232
|
-
|
|
256
|
+
type Layouted<A> = A extends AnyLayouted ? NodeModel<A, LayoutedView<A>> & {
|
|
257
|
+
x: number;
|
|
258
|
+
y: number;
|
|
259
|
+
width: number;
|
|
260
|
+
height: number;
|
|
261
|
+
} : never;
|
|
262
|
+
interface WithParent<A extends Any, V extends $View<A> = $View<A>> extends NodeModel<A, V> {
|
|
263
|
+
readonly parent: NodeModel<A, V>;
|
|
233
264
|
}
|
|
234
|
-
interface WithElement<A extends Any
|
|
235
|
-
kind: ElementKind<A>;
|
|
236
|
-
element: ElementModel<A>;
|
|
265
|
+
interface WithElement<A extends Any, V extends $View<A> = $View<A>> extends NodeModel<A, V> {
|
|
266
|
+
readonly kind: ElementKind<A>;
|
|
267
|
+
readonly element: ElementModel<A>;
|
|
237
268
|
}
|
|
238
|
-
interface WithDeploymentElement<A extends Any
|
|
239
|
-
kind: DeploymentKind<A>;
|
|
240
|
-
deployment: DeploymentElementModel<A>;
|
|
269
|
+
interface WithDeploymentElement<A extends Any, V extends $View<A> = $View<A>> extends NodeModel<A, V> {
|
|
270
|
+
readonly kind: DeploymentKind<A>;
|
|
271
|
+
readonly deployment: DeploymentElementModel<A>;
|
|
241
272
|
}
|
|
242
|
-
interface WithDeployedInstance<A extends Any
|
|
243
|
-
kind: 'instance';
|
|
244
|
-
element: ElementModel<A>;
|
|
245
|
-
deployment: DeployedInstanceModel<A>;
|
|
273
|
+
interface WithDeployedInstance<A extends Any, V extends $View<A> = $View<A>> extends NodeModel<A, V> {
|
|
274
|
+
readonly kind: 'instance';
|
|
275
|
+
readonly element: ElementModel<A>;
|
|
276
|
+
readonly deployment: DeployedInstanceModel<A>;
|
|
246
277
|
}
|
|
247
|
-
interface IsGroup<A extends Any
|
|
248
|
-
kind: typeof GroupElementKind;
|
|
249
|
-
element: null;
|
|
250
|
-
deployment: null;
|
|
278
|
+
interface IsGroup<A extends Any, V extends $View<A> = $View<A>> extends NodeModel<A, V> {
|
|
279
|
+
readonly kind: typeof GroupElementKind;
|
|
280
|
+
readonly element: null;
|
|
281
|
+
readonly deployment: null;
|
|
251
282
|
}
|
|
252
283
|
}
|
|
253
284
|
|
|
254
285
|
type EdgesIterator<A extends Any, V extends $View<A>> = IteratorLike<EdgeModel<A, V>>;
|
|
255
|
-
declare class EdgeModel<A extends Any = Any,
|
|
256
|
-
|
|
257
|
-
readonly
|
|
258
|
-
readonly
|
|
259
|
-
readonly
|
|
260
|
-
readonly
|
|
261
|
-
|
|
286
|
+
declare class EdgeModel<A extends Any = Any, V extends $View<A> = $View<A>> implements WithTags<A> {
|
|
287
|
+
readonly source: NodeModel<A, V>;
|
|
288
|
+
readonly target: NodeModel<A, V>;
|
|
289
|
+
readonly Aux: A;
|
|
290
|
+
readonly $viewModel: LikeC4ViewModel<A, V>;
|
|
291
|
+
readonly $view: V;
|
|
292
|
+
readonly $edge: V['edges'][number];
|
|
293
|
+
constructor($viewModel: LikeC4ViewModel<A, V>, $edge: V['edges'][number], source: NodeModel<A, V>, target: NodeModel<A, V>);
|
|
262
294
|
get id(): EdgeId;
|
|
263
|
-
get parent(): NodeModel<A,
|
|
295
|
+
get parent(): NodeModel<A, V> | null;
|
|
264
296
|
get label(): string | null;
|
|
265
297
|
get description(): RichTextOrEmpty;
|
|
266
298
|
get technology(): string | null;
|
|
267
|
-
hasParent(): this is EdgeModel.WithParent<A,
|
|
299
|
+
hasParent(): this is EdgeModel.WithParent<A, V>;
|
|
268
300
|
get tags(): Tags<A>;
|
|
269
301
|
get stepNumber(): number | null;
|
|
270
302
|
get navigateTo(): LikeC4ViewModel<A> | null;
|
|
@@ -272,7 +304,7 @@ declare class EdgeModel<A extends Any = Any, View extends $View<A> = $View<A>> i
|
|
|
272
304
|
get line(): RelationshipLineType;
|
|
273
305
|
get head(): RelationshipArrowType;
|
|
274
306
|
get tail(): RelationshipArrowType | undefined;
|
|
275
|
-
isStep(): this is EdgeModel.StepEdge<A,
|
|
307
|
+
isStep(): this is EdgeModel.StepEdge<A, V>;
|
|
276
308
|
relationships(type: 'model'): IteratorLike<RelationshipModel<A>>;
|
|
277
309
|
relationships(type: 'deployment'): IteratorLike<DeploymentRelationModel<A>>;
|
|
278
310
|
relationships(type?: 'model' | 'deployment'): IteratorLike<RelationshipModel<A> | DeploymentRelationModel<A>>;
|
|
@@ -283,11 +315,11 @@ declare class EdgeModel<A extends Any = Any, View extends $View<A> = $View<A>> i
|
|
|
283
315
|
}
|
|
284
316
|
declare namespace EdgeModel {
|
|
285
317
|
interface StepEdge<A extends Any, V extends $View<A>> extends EdgeModel<A, V> {
|
|
286
|
-
id: StepEdgeId;
|
|
287
|
-
stepNumber: number;
|
|
318
|
+
readonly id: StepEdgeId;
|
|
319
|
+
readonly stepNumber: number;
|
|
288
320
|
}
|
|
289
321
|
interface WithParent<A extends Any, V extends $View<A>> extends EdgeModel<A, V> {
|
|
290
|
-
parent: NodeModel<A, V>;
|
|
322
|
+
readonly parent: NodeModel<A, V>;
|
|
291
323
|
}
|
|
292
324
|
}
|
|
293
325
|
|
|
@@ -372,8 +404,14 @@ declare class LikeC4ViewModel<A extends Any = Any, V extends $View<A> = $View<A>
|
|
|
372
404
|
* Don't use in runtime, only for type inference
|
|
373
405
|
*/
|
|
374
406
|
readonly Aux: A;
|
|
375
|
-
readonly
|
|
407
|
+
readonly id: StrictViewId<A>;
|
|
408
|
+
/**
|
|
409
|
+
* The model this view belongs to
|
|
410
|
+
*/
|
|
376
411
|
readonly $model: LikeC4Model<A>;
|
|
412
|
+
/**
|
|
413
|
+
* The title of the view
|
|
414
|
+
*/
|
|
377
415
|
readonly title: string | null;
|
|
378
416
|
/**
|
|
379
417
|
* View folder this view belongs to.
|
|
@@ -387,9 +425,14 @@ declare class LikeC4ViewModel<A extends Any = Any, V extends $View<A> = $View<A>
|
|
|
387
425
|
* "Group 1/Group 2/View"
|
|
388
426
|
*/
|
|
389
427
|
readonly viewPath: string;
|
|
390
|
-
constructor(model: LikeC4Model<A>, view: V,
|
|
428
|
+
constructor(model: LikeC4Model<A>, folder: LikeC4ViewsFolder<A>, view: V, manualLayoutSnapshot?: ViewManualLayoutSnapshot | undefined);
|
|
429
|
+
/**
|
|
430
|
+
* Returns the styles configuration for the project.
|
|
431
|
+
*/
|
|
432
|
+
get $styles(): LikeC4Styles;
|
|
391
433
|
get _type(): V[_type];
|
|
392
|
-
get
|
|
434
|
+
get stage(): V[_stage];
|
|
435
|
+
get bounds(): Readonly<BBox>;
|
|
393
436
|
/**
|
|
394
437
|
* Returns title if defined, otherwise returns title of the element it is based on, otherwise returns its {@link id}
|
|
395
438
|
*/
|
|
@@ -420,11 +463,28 @@ declare class LikeC4ViewModel<A extends Any = Any, V extends $View<A> = $View<A>
|
|
|
420
463
|
* Available for dynamic views only
|
|
421
464
|
* throws error if view is not dynamic
|
|
422
465
|
*/
|
|
423
|
-
get mode(): DynamicViewDisplayVariant;
|
|
466
|
+
get mode(): DynamicViewDisplayVariant | null;
|
|
424
467
|
/**
|
|
425
468
|
* All tags from nodes and edges.
|
|
426
469
|
*/
|
|
427
470
|
get includedTags(): Tags<A>;
|
|
471
|
+
/**
|
|
472
|
+
* The original view from the model.
|
|
473
|
+
* In case of layouted model, this is the latest auto-layouted view without manual changes applied
|
|
474
|
+
* @see {@link $layouted} should be used for rendering in the UI
|
|
475
|
+
*/
|
|
476
|
+
get $view(): V;
|
|
477
|
+
/**
|
|
478
|
+
* Returns the view with manual layout applied if it exists, otherwise returns the original view
|
|
479
|
+
* This should be used for rendering in the UI
|
|
480
|
+
*/
|
|
481
|
+
get $layouted(): V;
|
|
482
|
+
get hasManualLayout(): boolean;
|
|
483
|
+
get hasLayoutDrifts(): boolean;
|
|
484
|
+
/**
|
|
485
|
+
* If view has manual layout, returns it with manual layout applied
|
|
486
|
+
*/
|
|
487
|
+
get $manual(): V | null;
|
|
428
488
|
roots(): NodesIterator<A, V>;
|
|
429
489
|
/**
|
|
430
490
|
* Iterate over all nodes that have children.
|
|
@@ -488,32 +548,44 @@ declare class LikeC4ViewModel<A extends Any = Any, V extends $View<A> = $View<A>
|
|
|
488
548
|
/**
|
|
489
549
|
* Below are type guards.
|
|
490
550
|
*/
|
|
491
|
-
isComputed(this: LikeC4ViewModel<any, any>): this is LikeC4ViewModel<toComputed<A>>;
|
|
492
|
-
|
|
551
|
+
isComputed(this: LikeC4ViewModel<any, any>): this is LikeC4ViewModel.Computed<toComputed<A>>;
|
|
552
|
+
isLayouted(): this is LikeC4ViewModel.Layouted<A>;
|
|
553
|
+
/**
|
|
554
|
+
* @deprecated Use {@link isLayouted} instead
|
|
555
|
+
*/
|
|
556
|
+
isDiagram(): this is LikeC4ViewModel.Layouted<A>;
|
|
493
557
|
isElementView(this: LikeC4ViewModel<any, any>): this is LikeC4ViewModel.ElementView<A, V>;
|
|
494
558
|
isScopedElementView(this: LikeC4ViewModel<any, any>): this is LikeC4ViewModel.ScopedElementView<A>;
|
|
495
559
|
isDeploymentView(this: LikeC4ViewModel<any, any>): this is LikeC4ViewModel.DeploymentView<A, V>;
|
|
496
560
|
isDynamicView(this: LikeC4ViewModel<any, any>): this is LikeC4ViewModel.DynamicView<A, V>;
|
|
497
561
|
}
|
|
498
562
|
declare namespace LikeC4ViewModel {
|
|
563
|
+
type Computed<A> = A extends AnyComputed ? LikeC4ViewModel<A, ComputedView<A>> : never;
|
|
564
|
+
type Layouted<A> = A extends AnyLayouted ? LikeC4ViewModel<A, LayoutedView<A>> : never;
|
|
499
565
|
interface ElementView<A extends Any, V extends $View<A> = $View<A>> extends LikeC4ViewModel<A, ViewWithType<V, 'element'>> {
|
|
566
|
+
readonly mode: never;
|
|
500
567
|
}
|
|
501
568
|
interface ScopedElementView<A extends Any> extends LikeC4ViewModel<A, ViewWithType<$View<A>, 'element'> & {
|
|
502
569
|
viewOf: Fqn<A>;
|
|
503
570
|
}> {
|
|
504
|
-
|
|
571
|
+
readonly mode: never;
|
|
572
|
+
readonly viewOf: ElementModel<A>;
|
|
505
573
|
}
|
|
506
574
|
interface DeploymentView<A extends Any, V extends $View<A> = $View<A>> extends LikeC4ViewModel<A, ViewWithType<V, 'deployment'>> {
|
|
575
|
+
readonly mode: never;
|
|
576
|
+
}
|
|
577
|
+
interface DynamicView<A extends Any, V extends $View<A>> extends LikeC4ViewModel<A, ViewWithType<V, 'dynamic'>> {
|
|
578
|
+
readonly mode: DynamicViewDisplayVariant;
|
|
579
|
+
readonly viewOf: never;
|
|
507
580
|
}
|
|
508
|
-
type DynamicView<A extends Any, V extends $View<A> = $View<A>> = LikeC4ViewModel<A, ViewWithType<V, 'dynamic'>>;
|
|
509
581
|
}
|
|
510
582
|
|
|
511
583
|
type IncomingFilter = 'all' | 'direct' | 'to-descendants';
|
|
512
584
|
type OutgoingFilter = 'all' | 'direct' | 'from-descendants';
|
|
513
|
-
type ElementOrFqn<A
|
|
585
|
+
type ElementOrFqn<A> = ElementId<A> | {
|
|
514
586
|
id: Fqn<A>;
|
|
515
587
|
};
|
|
516
|
-
type DeploymentOrFqn<A
|
|
588
|
+
type DeploymentOrFqn<A> = DeploymentId<A> | {
|
|
517
589
|
id: DeploymentFqn<A>;
|
|
518
590
|
};
|
|
519
591
|
type NodeOrId = string | {
|
|
@@ -532,8 +604,8 @@ type $View<A extends Any> = {
|
|
|
532
604
|
}[Stage<A>];
|
|
533
605
|
type $ViewModel<A extends Any> = {
|
|
534
606
|
parsed: never;
|
|
535
|
-
computed: LikeC4ViewModel<A
|
|
536
|
-
layouted: LikeC4ViewModel<A
|
|
607
|
+
computed: LikeC4ViewModel<A, $View<A>>;
|
|
608
|
+
layouted: LikeC4ViewModel<A, $View<A>>;
|
|
537
609
|
}[Stage<A>];
|
|
538
610
|
type $ModelData<A extends Any> = {
|
|
539
611
|
parsed: ParsedLikeC4ModelData<A>;
|
|
@@ -636,6 +708,10 @@ type DeployedInstancesIterator<A extends Any> = IteratorLike<DeployedInstanceMod
|
|
|
636
708
|
type DeploymentNodesIterator<A extends Any> = IteratorLike<DeploymentNodeModel<A>>;
|
|
637
709
|
type DeploymentElementModel<A extends Any = Any> = DeploymentNodeModel<A> | DeployedInstanceModel<A>;
|
|
638
710
|
declare abstract class AbstractDeploymentElementModel<A extends Any> implements WithTags<A>, WithMetadata<A> {
|
|
711
|
+
/**
|
|
712
|
+
* Don't use in runtime, only for type inference
|
|
713
|
+
*/
|
|
714
|
+
readonly Aux: A;
|
|
639
715
|
abstract readonly id: DeploymentFqn<A>;
|
|
640
716
|
abstract readonly _literalId: DeploymentId<A>;
|
|
641
717
|
abstract readonly parent: DeploymentNodeModel<A> | null;
|
|
@@ -805,6 +881,20 @@ declare class DeploymentRelationModel<A extends Any = Any> implements AnyRelatio
|
|
|
805
881
|
get expression(): string;
|
|
806
882
|
get title(): string | null;
|
|
807
883
|
get technology(): string | null;
|
|
884
|
+
/**
|
|
885
|
+
* Returns true if the relationship has a summary and a description
|
|
886
|
+
* (if one is missing - it falls back to another)
|
|
887
|
+
*/
|
|
888
|
+
get hasSummary(): boolean;
|
|
889
|
+
/**
|
|
890
|
+
* Short description of the relationship.
|
|
891
|
+
* Falls back to description if summary is not provided.
|
|
892
|
+
*/
|
|
893
|
+
get summary(): RichTextOrEmpty;
|
|
894
|
+
/**
|
|
895
|
+
* Long description of the relationship.
|
|
896
|
+
* Falls back to summary if description is not provided.
|
|
897
|
+
*/
|
|
808
898
|
get description(): RichTextOrEmpty;
|
|
809
899
|
get tags(): Tags<A>;
|
|
810
900
|
get kind(): RelationKind<A> | null;
|
|
@@ -856,7 +946,7 @@ declare class RelationshipsAccum<A extends Any = Any> {
|
|
|
856
946
|
* When you do not need types in the model
|
|
857
947
|
*/
|
|
858
948
|
type AnyLikeC4Model = LikeC4Model<any>;
|
|
859
|
-
declare class LikeC4Model<A extends Any =
|
|
949
|
+
declare class LikeC4Model<A extends Any = Any> {
|
|
860
950
|
/**
|
|
861
951
|
* Don't use in runtime, only for type inference
|
|
862
952
|
*/
|
|
@@ -872,9 +962,9 @@ declare class LikeC4Model<A extends Any = Unknown> {
|
|
|
872
962
|
protected readonly _views: Map<ViewId<A>, LikeC4ViewModel<A, $View<A>>>;
|
|
873
963
|
protected readonly _rootViewFolder: LikeC4ViewsFolder<A>;
|
|
874
964
|
protected readonly _viewFolders: Map<string, LikeC4ViewsFolder<A>>;
|
|
875
|
-
protected readonly _viewFolderItems: DefaultMap<string, Set<LikeC4ViewModel<A, $View<A
|
|
876
|
-
protected readonly _allTags: DefaultMap<Tag<A>, Set<ElementModel<A> | LikeC4ViewModel<A, $View<A
|
|
877
|
-
static fromParsed<T extends
|
|
965
|
+
protected readonly _viewFolderItems: DefaultMap<string, Set<LikeC4ViewsFolder<A> | LikeC4ViewModel<A, $View<A>>>>;
|
|
966
|
+
protected readonly _allTags: DefaultMap<Tag<A>, Set<ElementModel<A> | RelationshipModel<A> | LikeC4ViewModel<A, $View<A>>>>;
|
|
967
|
+
static fromParsed<T extends AnyParsed>(model: ParsedLikeC4ModelData<T>): LikeC4Model<T>;
|
|
878
968
|
/**
|
|
879
969
|
* Creates a new LikeC4Model instance from the provided model data.
|
|
880
970
|
* Model with parsed data will not have views, as they must be computed
|
|
@@ -884,9 +974,10 @@ declare class LikeC4Model<A extends Any = Unknown> {
|
|
|
884
974
|
* @param model - The model data to create a LikeC4Model from
|
|
885
975
|
* @returns A new LikeC4Model instance with the type derived from the input model
|
|
886
976
|
*/
|
|
887
|
-
static create<T extends
|
|
888
|
-
static create<T extends
|
|
889
|
-
static create<T extends
|
|
977
|
+
static create<T extends AnyParsed>(model: ParsedLikeC4ModelData<T>): LikeC4Model<T>;
|
|
978
|
+
static create<T extends AnyComputed>(model: ComputedLikeC4ModelData<T>): LikeC4Model<T>;
|
|
979
|
+
static create<T extends AnyLayouted>(model: LayoutedLikeC4ModelData<T>): LikeC4Model<T>;
|
|
980
|
+
static create<T extends Any>(model: $ModelData<T>): LikeC4Model<T>;
|
|
890
981
|
/**
|
|
891
982
|
* Creates a new LikeC4Model instance and infers types from a model dump.\
|
|
892
983
|
* Model dump expected to be computed or layouted.
|
|
@@ -921,15 +1012,15 @@ declare class LikeC4Model<A extends Any = Unknown> {
|
|
|
921
1012
|
/**
|
|
922
1013
|
* Type guard the model to the parsed stage.
|
|
923
1014
|
*/
|
|
924
|
-
isParsed(this: LikeC4Model<any>): this is LikeC4Model<
|
|
1015
|
+
isParsed(this: LikeC4Model<any>): this is LikeC4Model.Parsed<A>;
|
|
925
1016
|
/**
|
|
926
1017
|
* Type guard the model to the layouted stage.
|
|
927
1018
|
*/
|
|
928
|
-
isLayouted(this: LikeC4Model<any>): this is LikeC4Model<
|
|
1019
|
+
isLayouted(this: LikeC4Model<any>): this is LikeC4Model.Layouted<A>;
|
|
929
1020
|
/**
|
|
930
1021
|
* Type guard the model to the computed stage.
|
|
931
1022
|
*/
|
|
932
|
-
isComputed(this: LikeC4Model<any>): this is LikeC4Model<
|
|
1023
|
+
isComputed(this: LikeC4Model<any>): this is LikeC4Model.Computed<A>;
|
|
933
1024
|
/**
|
|
934
1025
|
* Keeping here for backward compatibility
|
|
935
1026
|
* @deprecated use {@link $data}
|
|
@@ -963,7 +1054,9 @@ declare class LikeC4Model<A extends Any = Unknown> {
|
|
|
963
1054
|
* id: 'dashboard',
|
|
964
1055
|
* })
|
|
965
1056
|
*/
|
|
966
|
-
element(el:
|
|
1057
|
+
element(el: ElementId<A> | {
|
|
1058
|
+
id: Fqn<A>;
|
|
1059
|
+
}): ElementModel<A>;
|
|
967
1060
|
/**
|
|
968
1061
|
* Returns the element with the given FQN.
|
|
969
1062
|
*
|
|
@@ -1016,7 +1109,7 @@ declare class LikeC4Model<A extends Any = Unknown> {
|
|
|
1016
1109
|
*/
|
|
1017
1110
|
view(viewId: ViewId<A> | {
|
|
1018
1111
|
id: ViewId$1<ViewId<A>>;
|
|
1019
|
-
}):
|
|
1112
|
+
}): $ViewModel<A>;
|
|
1020
1113
|
/**
|
|
1021
1114
|
* Returns a specific view by its ID.
|
|
1022
1115
|
* @note Method is not type-safe as {@link view}
|
|
@@ -1024,7 +1117,11 @@ declare class LikeC4Model<A extends Any = Unknown> {
|
|
|
1024
1117
|
* @example
|
|
1025
1118
|
* model.findView('index')
|
|
1026
1119
|
*/
|
|
1027
|
-
findView(viewId: LooseViewId<A>):
|
|
1120
|
+
findView(viewId: LooseViewId<A>): $ViewModel<A> | null;
|
|
1121
|
+
/**
|
|
1122
|
+
* Returns manual layout snapshot for given view ID, if any.
|
|
1123
|
+
*/
|
|
1124
|
+
findManualLayout(viewId: LooseViewId<A>): ViewManualLayoutSnapshot | null;
|
|
1028
1125
|
/**
|
|
1029
1126
|
* Returns a view folder by its path.
|
|
1030
1127
|
* Path is extracted from the view title, e.g. "Group 1/Group 2/View" -> "Group 1/Group 2"
|
|
@@ -1147,17 +1244,18 @@ declare class LikeC4Model<A extends Any = Unknown> {
|
|
|
1147
1244
|
private addRelation;
|
|
1148
1245
|
}
|
|
1149
1246
|
declare namespace LikeC4Model {
|
|
1150
|
-
const EMPTY: LikeC4Model<
|
|
1151
|
-
type Parsed<A =
|
|
1152
|
-
type Computed<A =
|
|
1153
|
-
type Layouted<A =
|
|
1154
|
-
type Node<A =
|
|
1155
|
-
type Element<A =
|
|
1156
|
-
type Relationship<A =
|
|
1157
|
-
type View<A =
|
|
1158
|
-
type DeploymentNode<A =
|
|
1159
|
-
type
|
|
1160
|
-
type
|
|
1247
|
+
const EMPTY: LikeC4Model<Unknown>;
|
|
1248
|
+
type Parsed<A = unknown> = IsAny<A> extends true ? LikeC4Model<AnyParsed> : A extends Aux<any, infer E, infer D, infer V, infer PID, infer Spec> ? LikeC4Model<Aux<'parsed', E, D, V, PID, Spec>> : LikeC4Model<UnknownParsed>;
|
|
1249
|
+
type Computed<A = unknown> = IsAny<A> extends true ? LikeC4Model<AnyComputed> : A extends Aux<any, infer E, infer D, infer V, infer PID, infer Spec> ? LikeC4Model<Aux<'computed', E, D, V, PID, Spec>> : LikeC4Model<UnknownComputed>;
|
|
1250
|
+
type Layouted<A = unknown> = IsAny<A> extends true ? LikeC4Model<AnyLayouted> : A extends Aux<any, infer E, infer D, infer V, infer PID, infer Spec> ? LikeC4Model<Aux<'layouted', E, D, V, PID, Spec>> : LikeC4Model<UnknownLayouted>;
|
|
1251
|
+
type Node<A = Any> = A extends Any ? NodeModel<A> : never;
|
|
1252
|
+
type Element<A = Any> = A extends Any ? ElementModel<A> : never;
|
|
1253
|
+
type Relationship<A = Any> = A extends Any ? RelationshipModel<A> : never;
|
|
1254
|
+
type View<A = Any> = A extends Any ? $ViewModel<A> : never;
|
|
1255
|
+
type DeploymentNode<A = Any> = A extends Any ? DeploymentNodeModel<A> : never;
|
|
1256
|
+
type DeploymentRelation<A = Any> = A extends Any ? DeploymentRelationModel<A> : never;
|
|
1257
|
+
type DeployedInstance<A = Any> = A extends Any ? DeployedInstanceModel<A> : never;
|
|
1258
|
+
type AnyRelation<M = Any> = M extends Any ? RelationshipModel<M> | DeploymentRelationModel<M> : never;
|
|
1161
1259
|
}
|
|
1162
1260
|
|
|
1163
1261
|
export { type AnyRelationshipModel as A, DeploymentNodeModel as D, ElementModel as E, type IncomingFilter as I, LikeC4ViewModel as L, NestedElementOfDeployedInstanceModel as N, type OutgoingFilter as O, RelationshipModel as R, type WithMetadata as W, DeployedInstanceModel as a, DeploymentRelationModel as b, NodeModel as c, EdgeModel as d, type DeploymentElementModel as e, LikeC4Model as f, type AnyLikeC4Model as g, RelationshipsAccum as h, type DeploymentRelationEndpoint as i, LikeC4DeploymentModel as j, LikeC4ViewsFolder as k, type DeploymentOrFqn as l, type EdgeOrId as m, type ElementOrFqn as n, type NodeOrId as o, type WithTags as p };
|
|
@@ -38,7 +38,7 @@ type ExclusiveUnion<Expressions, All = AllNever<Expressions>> = Expressions exte
|
|
|
38
38
|
[Name in keyof Expressions]: Simplify<Omit<All, keyof Expressions[Name]> & Expressions[Name]>;
|
|
39
39
|
}[keyof Expressions] : never;
|
|
40
40
|
/**
|
|
41
|
-
* Copy from https://github.com/remeda/remeda/blob/main/src/internal/types/NTuple.ts
|
|
41
|
+
* Copy from https://github.com/remeda/remeda/blob/main/packages/remeda/src/internal/types/NTuple.ts
|
|
42
42
|
* An array with *exactly* N elements in it.
|
|
43
43
|
*
|
|
44
44
|
* Only literal N values are supported. For very large N the type might result
|