@likec4/core 0.37.1 → 0.41.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/README.md +2 -6
- package/dist/cjs/colors/element.d.ts +68 -0
- package/dist/{colors.js → cjs/colors/element.js} +24 -46
- package/dist/cjs/colors/index.d.ts +132 -0
- package/dist/cjs/colors/index.js +27 -0
- package/dist/cjs/colors/relationships.d.ts +57 -0
- package/dist/cjs/colors/relationships.js +76 -0
- package/dist/cjs/errors/index.d.ts +45 -0
- package/dist/cjs/errors/index.js +137 -0
- package/dist/{index.d.ts → cjs/index.d.ts} +3 -5
- package/dist/{index.cjs → cjs/index.js} +16 -38
- package/dist/{types → cjs/types}/computed-view.d.ts +11 -7
- package/dist/{types → cjs/types}/diagram.d.ts +15 -11
- package/dist/{types → cjs/types}/expression.d.ts +1 -1
- package/dist/{types/index.cjs → cjs/types/index.js} +10 -10
- package/dist/cjs/types/relation.d.ts +22 -0
- package/dist/cjs/types/relation.js +12 -0
- package/dist/{types → cjs/types}/theme.d.ts +10 -6
- package/dist/{types → cjs/types}/view.d.ts +22 -4
- package/dist/{types/view.cjs → cjs/types/view.js} +1 -1
- package/dist/{utils → cjs/utils}/fqn.d.ts +6 -1
- package/dist/{utils/fqn.cjs → cjs/utils/fqn.js} +18 -5
- package/dist/{utils → cjs/utils}/guards.d.ts +1 -2
- package/dist/cjs/utils/guards.js +20 -0
- package/dist/{utils → cjs/utils}/index.d.ts +0 -1
- package/dist/{utils/index.cjs → cjs/utils/index.js} +3 -14
- package/dist/{utils/relations.cjs → cjs/utils/relations.js} +1 -1
- package/dist/esm/colors/element.d.ts +68 -0
- package/dist/esm/colors/element.js +82 -0
- package/dist/esm/colors/index.d.ts +132 -0
- package/dist/esm/colors/index.js +9 -0
- package/dist/esm/colors/relationships.d.ts +57 -0
- package/dist/esm/colors/relationships.js +64 -0
- package/dist/esm/errors/index.d.ts +45 -0
- package/dist/esm/errors/index.js +97 -0
- package/dist/esm/index.d.ts +6 -0
- package/dist/esm/index.js +4 -0
- package/dist/esm/types/_common.d.ts +3 -0
- package/dist/esm/types/computed-view.d.ts +44 -0
- package/dist/esm/types/diagram.d.ts +41 -0
- package/dist/esm/types/element.d.ts +29 -0
- package/dist/esm/types/expression.d.ts +56 -0
- package/dist/esm/types/index.d.ts +11 -0
- package/dist/esm/types/model.d.ts +14 -0
- package/dist/esm/types/opaque.d.ts +102 -0
- package/dist/esm/types/relation.d.ts +22 -0
- package/dist/esm/types/relation.js +3 -0
- package/dist/esm/types/theme.d.ts +26 -0
- package/dist/esm/types/view.d.ts +61 -0
- package/dist/{types → esm/types}/view.js +1 -1
- package/dist/esm/utils/fqn.d.ts +33 -0
- package/dist/{utils → esm/utils}/fqn.js +16 -4
- package/dist/esm/utils/guards.d.ts +4 -0
- package/dist/esm/utils/guards.js +7 -0
- package/dist/esm/utils/index.d.ts +3 -0
- package/dist/{utils → esm/utils}/index.js +0 -1
- package/dist/esm/utils/relations.d.ts +25 -0
- package/package.json +44 -61
- package/dist/colors.cjs +0 -124
- package/dist/colors.d.ts +0 -148
- package/dist/compute-view/EdgeBuilder.cjs +0 -37
- package/dist/compute-view/EdgeBuilder.d.ts +0 -6
- package/dist/compute-view/EdgeBuilder.js +0 -30
- package/dist/compute-view/compute-ctx.cjs +0 -89
- package/dist/compute-view/compute-ctx.d.ts +0 -19
- package/dist/compute-view/compute-ctx.js +0 -98
- package/dist/compute-view/compute-element-view.cjs +0 -91
- package/dist/compute-view/compute-element-view.d.ts +0 -3
- package/dist/compute-view/compute-element-view.js +0 -86
- package/dist/compute-view/compute-predicates.cjs +0 -363
- package/dist/compute-view/compute-predicates.d.ts +0 -16
- package/dist/compute-view/compute-predicates.js +0 -324
- package/dist/compute-view/compute.cjs +0 -46
- package/dist/compute-view/compute.d.ts +0 -14
- package/dist/compute-view/compute.js +0 -36
- package/dist/compute-view/index.cjs +0 -38
- package/dist/compute-view/index.d.ts +0 -3
- package/dist/compute-view/index.js +0 -3
- package/dist/compute-view/resolve-extended-views.cjs +0 -50
- package/dist/compute-view/resolve-extended-views.d.ts +0 -6
- package/dist/compute-view/resolve-extended-views.js +0 -38
- package/dist/compute-view/utils/anyPossibleRelations.cjs +0 -18
- package/dist/compute-view/utils/anyPossibleRelations.d.ts +0 -2
- package/dist/compute-view/utils/anyPossibleRelations.js +0 -12
- package/dist/compute-view/utils/applyViewRuleStyles.cjs +0 -57
- package/dist/compute-view/utils/applyViewRuleStyles.d.ts +0 -2
- package/dist/compute-view/utils/applyViewRuleStyles.js +0 -50
- package/dist/compute-view/utils/sortNodes.cjs +0 -50
- package/dist/compute-view/utils/sortNodes.d.ts +0 -2
- package/dist/compute-view/utils/sortNodes.js +0 -40
- package/dist/errors/_base.cjs +0 -62
- package/dist/errors/_base.d.ts +0 -26
- package/dist/errors/_base.js +0 -41
- package/dist/errors/index.cjs +0 -60
- package/dist/errors/index.d.ts +0 -5
- package/dist/errors/index.js +0 -5
- package/dist/errors/invariant.cjs +0 -23
- package/dist/errors/invariant.d.ts +0 -6
- package/dist/errors/invariant.js +0 -13
- package/dist/errors/model-index.cjs +0 -23
- package/dist/errors/model-index.d.ts +0 -6
- package/dist/errors/model-index.js +0 -13
- package/dist/errors/non-nullable.cjs +0 -23
- package/dist/errors/non-nullable.d.ts +0 -6
- package/dist/errors/non-nullable.js +0 -13
- package/dist/errors/nonexhaustive.cjs +0 -23
- package/dist/errors/nonexhaustive.d.ts +0 -6
- package/dist/errors/nonexhaustive.js +0 -12
- package/dist/index.js +0 -6
- package/dist/model-index/ModelIndex.cjs +0 -140
- package/dist/model-index/ModelIndex.d.ts +0 -27
- package/dist/model-index/ModelIndex.js +0 -128
- package/dist/model-index/index.cjs +0 -13
- package/dist/model-index/index.d.ts +0 -1
- package/dist/model-index/index.js +0 -1
- package/dist/types/relation.d.ts +0 -10
- package/dist/types/relation.js +0 -0
- package/dist/types/theme.cjs +0 -1
- package/dist/utils/compute-node-levels.cjs +0 -48
- package/dist/utils/compute-node-levels.d.ts +0 -7
- package/dist/utils/compute-node-levels.js +0 -31
- package/dist/utils/guards.cjs +0 -22
- package/dist/utils/guards.js +0 -13
- /package/dist/{types → cjs/types}/_common.d.ts +0 -0
- /package/dist/{types/_common.cjs → cjs/types/_common.js} +0 -0
- /package/dist/{types/computed-view.cjs → cjs/types/computed-view.js} +0 -0
- /package/dist/{types/diagram.cjs → cjs/types/diagram.js} +0 -0
- /package/dist/{types → cjs/types}/element.d.ts +0 -0
- /package/dist/{types/element.cjs → cjs/types/element.js} +0 -0
- /package/dist/{types/expression.cjs → cjs/types/expression.js} +0 -0
- /package/dist/{types → cjs/types}/index.d.ts +0 -0
- /package/dist/{types → cjs/types}/model.d.ts +0 -0
- /package/dist/{types/model.cjs → cjs/types/model.js} +0 -0
- /package/dist/{types → cjs/types}/opaque.d.ts +0 -0
- /package/dist/{types/opaque.cjs → cjs/types/opaque.js} +0 -0
- /package/dist/{types/relation.cjs → cjs/types/theme.js} +0 -0
- /package/dist/{utils → cjs/utils}/relations.d.ts +0 -0
- /package/dist/{types → esm/types}/_common.js +0 -0
- /package/dist/{types → esm/types}/computed-view.js +0 -0
- /package/dist/{types → esm/types}/diagram.js +0 -0
- /package/dist/{types → esm/types}/element.js +0 -0
- /package/dist/{types → esm/types}/expression.js +0 -0
- /package/dist/{types → esm/types}/index.js +0 -0
- /package/dist/{types → esm/types}/model.js +0 -0
- /package/dist/{types → esm/types}/opaque.js +0 -0
- /package/dist/{types → esm/types}/theme.js +0 -0
- /package/dist/{utils → esm/utils}/relations.js +0 -0
|
@@ -1,46 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.assignNavigateTo = assignNavigateTo;
|
|
7
|
-
exports.computeView = computeView;
|
|
8
|
-
var _rambdax = require("rambdax");
|
|
9
|
-
var _errors = require("../errors/index.cjs");
|
|
10
|
-
var _computeElementView = require("./compute-element-view.cjs");
|
|
11
|
-
function computeView(view, index) {
|
|
12
|
-
try {
|
|
13
|
-
return {
|
|
14
|
-
isSuccess: true,
|
|
15
|
-
view: (0, _computeElementView.computeElementView)(view, index)
|
|
16
|
-
};
|
|
17
|
-
} catch (e) {
|
|
18
|
-
return {
|
|
19
|
-
isSuccess: false,
|
|
20
|
-
error: (0, _errors.normalizeError)(e),
|
|
21
|
-
view: void 0
|
|
22
|
-
};
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
|
-
function assignNavigateTo(views) {
|
|
26
|
-
const allElementViews = /* @__PURE__ */new Map();
|
|
27
|
-
for (const v of views) {
|
|
28
|
-
if (v.viewOf && !v.extends) {
|
|
29
|
-
const viewsOf = allElementViews.get(v.viewOf) ?? [];
|
|
30
|
-
viewsOf.push(v.id);
|
|
31
|
-
allElementViews.set(v.viewOf, viewsOf);
|
|
32
|
-
}
|
|
33
|
-
}
|
|
34
|
-
for (const {
|
|
35
|
-
id,
|
|
36
|
-
nodes
|
|
37
|
-
} of views) {
|
|
38
|
-
for (const node of nodes) {
|
|
39
|
-
const navigateTo = (0, _rambdax.find)(v => v !== id, allElementViews.get(node.id) ?? []);
|
|
40
|
-
if (navigateTo) {
|
|
41
|
-
node.navigateTo = navigateTo;
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
return views;
|
|
46
|
-
}
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import type { BaseError } from '../errors';
|
|
2
|
-
import type { ModelIndex } from '../model-index';
|
|
3
|
-
import { type ComputedView, type ElementView } from '../types';
|
|
4
|
-
type ComputeViewResult = {
|
|
5
|
-
isSuccess: true;
|
|
6
|
-
view: ComputedView;
|
|
7
|
-
} | {
|
|
8
|
-
isSuccess: false;
|
|
9
|
-
error: BaseError;
|
|
10
|
-
view: undefined;
|
|
11
|
-
};
|
|
12
|
-
export declare function computeView(view: ElementView, index: ModelIndex): ComputeViewResult;
|
|
13
|
-
export declare function assignNavigateTo<R extends Iterable<ComputedView>>(views: R): R;
|
|
14
|
-
export {};
|
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
import { find } from "rambdax";
|
|
2
|
-
import { normalizeError } from "../errors/index.js";
|
|
3
|
-
import { computeElementView } from "./compute-element-view.js";
|
|
4
|
-
export function computeView(view, index) {
|
|
5
|
-
try {
|
|
6
|
-
return {
|
|
7
|
-
isSuccess: true,
|
|
8
|
-
view: computeElementView(view, index)
|
|
9
|
-
};
|
|
10
|
-
} catch (e) {
|
|
11
|
-
return {
|
|
12
|
-
isSuccess: false,
|
|
13
|
-
error: normalizeError(e),
|
|
14
|
-
view: void 0
|
|
15
|
-
};
|
|
16
|
-
}
|
|
17
|
-
}
|
|
18
|
-
export function assignNavigateTo(views) {
|
|
19
|
-
const allElementViews = /* @__PURE__ */ new Map();
|
|
20
|
-
for (const v of views) {
|
|
21
|
-
if (v.viewOf && !v.extends) {
|
|
22
|
-
const viewsOf = allElementViews.get(v.viewOf) ?? [];
|
|
23
|
-
viewsOf.push(v.id);
|
|
24
|
-
allElementViews.set(v.viewOf, viewsOf);
|
|
25
|
-
}
|
|
26
|
-
}
|
|
27
|
-
for (const { id, nodes } of views) {
|
|
28
|
-
for (const node of nodes) {
|
|
29
|
-
const navigateTo = find((v) => v !== id, allElementViews.get(node.id) ?? []);
|
|
30
|
-
if (navigateTo) {
|
|
31
|
-
node.navigateTo = navigateTo;
|
|
32
|
-
}
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
return views;
|
|
36
|
-
}
|
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
var _compute = require("./compute.cjs");
|
|
7
|
-
Object.keys(_compute).forEach(function (key) {
|
|
8
|
-
if (key === "default" || key === "__esModule") return;
|
|
9
|
-
if (key in exports && exports[key] === _compute[key]) return;
|
|
10
|
-
Object.defineProperty(exports, key, {
|
|
11
|
-
enumerable: true,
|
|
12
|
-
get: function () {
|
|
13
|
-
return _compute[key];
|
|
14
|
-
}
|
|
15
|
-
});
|
|
16
|
-
});
|
|
17
|
-
var _resolveExtendedViews = require("./resolve-extended-views.cjs");
|
|
18
|
-
Object.keys(_resolveExtendedViews).forEach(function (key) {
|
|
19
|
-
if (key === "default" || key === "__esModule") return;
|
|
20
|
-
if (key in exports && exports[key] === _resolveExtendedViews[key]) return;
|
|
21
|
-
Object.defineProperty(exports, key, {
|
|
22
|
-
enumerable: true,
|
|
23
|
-
get: function () {
|
|
24
|
-
return _resolveExtendedViews[key];
|
|
25
|
-
}
|
|
26
|
-
});
|
|
27
|
-
});
|
|
28
|
-
var _EdgeBuilder = require("./EdgeBuilder.cjs");
|
|
29
|
-
Object.keys(_EdgeBuilder).forEach(function (key) {
|
|
30
|
-
if (key === "default" || key === "__esModule") return;
|
|
31
|
-
if (key in exports && exports[key] === _EdgeBuilder[key]) return;
|
|
32
|
-
Object.defineProperty(exports, key, {
|
|
33
|
-
enumerable: true,
|
|
34
|
-
get: function () {
|
|
35
|
-
return _EdgeBuilder[key];
|
|
36
|
-
}
|
|
37
|
-
});
|
|
38
|
-
});
|
|
@@ -1,50 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.resolveRulesExtendedViews = resolveRulesExtendedViews;
|
|
7
|
-
var _graphlib = _interopRequireDefault(require("@dagrejs/graphlib"));
|
|
8
|
-
var _errors = require("../errors/index.cjs");
|
|
9
|
-
var _types = require("../types/index.cjs");
|
|
10
|
-
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
11
|
-
const {
|
|
12
|
-
Graph,
|
|
13
|
-
alg
|
|
14
|
-
} = _graphlib.default;
|
|
15
|
-
function resolveRulesExtendedViews(unresolvedViews) {
|
|
16
|
-
const g = new Graph({
|
|
17
|
-
directed: true,
|
|
18
|
-
multigraph: false,
|
|
19
|
-
compound: false
|
|
20
|
-
});
|
|
21
|
-
for (const view of Object.values(unresolvedViews)) {
|
|
22
|
-
if (!(0, _types.isExtendsElementView)(view)) {
|
|
23
|
-
g.setNode(view.id);
|
|
24
|
-
continue;
|
|
25
|
-
}
|
|
26
|
-
if (unresolvedViews[view.extends]) {
|
|
27
|
-
g.setEdge(view.extends, view.id);
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
if (!alg.isAcyclic(g)) {
|
|
31
|
-
alg.findCycles(g).flat().map(id => g.removeNode(id));
|
|
32
|
-
}
|
|
33
|
-
return alg.topsort(g).reduce((acc, id) => {
|
|
34
|
-
const view = (0, _errors.nonNullable)(unresolvedViews[id], `Cannot find view ${id}`);
|
|
35
|
-
if ((0, _types.isExtendsElementView)(view)) {
|
|
36
|
-
const extendsFrom = acc[view.extends];
|
|
37
|
-
(0, _errors.invariant)(extendsFrom, `Cannot find base view '${view.extends}' for '${view.id}'`);
|
|
38
|
-
return Object.assign(acc, {
|
|
39
|
-
[view.id]: {
|
|
40
|
-
...extendsFrom,
|
|
41
|
-
...view,
|
|
42
|
-
rules: [...extendsFrom.rules, ...view.rules]
|
|
43
|
-
}
|
|
44
|
-
});
|
|
45
|
-
}
|
|
46
|
-
return Object.assign(acc, {
|
|
47
|
-
[view.id]: view
|
|
48
|
-
});
|
|
49
|
-
}, {});
|
|
50
|
-
}
|
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
import pkg from "@dagrejs/graphlib";
|
|
2
|
-
import { invariant, nonNullable } from "../errors/index.js";
|
|
3
|
-
import { isExtendsElementView } from "../types/index.js";
|
|
4
|
-
const { Graph, alg } = pkg;
|
|
5
|
-
export function resolveRulesExtendedViews(unresolvedViews) {
|
|
6
|
-
const g = new Graph({
|
|
7
|
-
directed: true,
|
|
8
|
-
multigraph: false,
|
|
9
|
-
compound: false
|
|
10
|
-
});
|
|
11
|
-
for (const view of Object.values(unresolvedViews)) {
|
|
12
|
-
if (!isExtendsElementView(view)) {
|
|
13
|
-
g.setNode(view.id);
|
|
14
|
-
continue;
|
|
15
|
-
}
|
|
16
|
-
if (unresolvedViews[view.extends]) {
|
|
17
|
-
g.setEdge(view.extends, view.id);
|
|
18
|
-
}
|
|
19
|
-
}
|
|
20
|
-
if (!alg.isAcyclic(g)) {
|
|
21
|
-
alg.findCycles(g).flat().map((id) => g.removeNode(id));
|
|
22
|
-
}
|
|
23
|
-
return alg.topsort(g).reduce((acc, id) => {
|
|
24
|
-
const view = nonNullable(unresolvedViews[id], `Cannot find view ${id}`);
|
|
25
|
-
if (isExtendsElementView(view)) {
|
|
26
|
-
const extendsFrom = acc[view.extends];
|
|
27
|
-
invariant(extendsFrom, `Cannot find base view '${view.extends}' for '${view.id}'`);
|
|
28
|
-
return Object.assign(acc, {
|
|
29
|
-
[view.id]: {
|
|
30
|
-
...extendsFrom,
|
|
31
|
-
...view,
|
|
32
|
-
rules: [...extendsFrom.rules, ...view.rules]
|
|
33
|
-
}
|
|
34
|
-
});
|
|
35
|
-
}
|
|
36
|
-
return Object.assign(acc, { [view.id]: view });
|
|
37
|
-
}, {});
|
|
38
|
-
}
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.anyPossibleRelations = anyPossibleRelations;
|
|
7
|
-
var _rambdax = require("rambdax");
|
|
8
|
-
var _utils = require("../../utils/index.cjs");
|
|
9
|
-
function* anyPossibleRelations(elements) {
|
|
10
|
-
const uniqElements = (0, _rambdax.uniqBy)((0, _rambdax.prop)("id"), elements).sort(_utils.compareByFqnHierarchically).reverse();
|
|
11
|
-
for (const source of uniqElements) {
|
|
12
|
-
for (const target of uniqElements) {
|
|
13
|
-
if (source !== target && !(0, _utils.isAncestor)(source, target) && !(0, _utils.isAncestor)(target, source)) {
|
|
14
|
-
yield [source, target];
|
|
15
|
-
}
|
|
16
|
-
}
|
|
17
|
-
}
|
|
18
|
-
}
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import { prop, uniqBy } from "rambdax";
|
|
2
|
-
import { compareByFqnHierarchically, isAncestor } from "../../utils/index.js";
|
|
3
|
-
export function* anyPossibleRelations(elements) {
|
|
4
|
-
const uniqElements = uniqBy(prop("id"), elements).sort(compareByFqnHierarchically).reverse();
|
|
5
|
-
for (const source of uniqElements) {
|
|
6
|
-
for (const target of uniqElements) {
|
|
7
|
-
if (source !== target && !isAncestor(source, target) && !isAncestor(target, source)) {
|
|
8
|
-
yield [source, target];
|
|
9
|
-
}
|
|
10
|
-
}
|
|
11
|
-
}
|
|
12
|
-
}
|
|
@@ -1,57 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.applyViewRuleStyles = applyViewRuleStyles;
|
|
7
|
-
var _rambdax = require("rambdax");
|
|
8
|
-
var _remeda = require("remeda");
|
|
9
|
-
var _errors = require("../../errors/index.cjs");
|
|
10
|
-
var _types = require("../../types/index.cjs");
|
|
11
|
-
function applyViewRuleStyles(rules, _nodes) {
|
|
12
|
-
if (rules.length === 0) {
|
|
13
|
-
return _nodes;
|
|
14
|
-
}
|
|
15
|
-
const nodes = (0, _rambdax.clone)(_nodes);
|
|
16
|
-
for (const rule of rules) {
|
|
17
|
-
const predicates = [];
|
|
18
|
-
if (!rule.style.color && !rule.style.shape) {
|
|
19
|
-
continue;
|
|
20
|
-
}
|
|
21
|
-
for (const target of rule.targets) {
|
|
22
|
-
if (_types.Expr.isWildcard(target)) {
|
|
23
|
-
predicates.push(() => true);
|
|
24
|
-
break;
|
|
25
|
-
}
|
|
26
|
-
if (_types.Expr.isElementKindExpr(target)) {
|
|
27
|
-
predicates.push(target.isEqual ? n => n.kind === target.elementKind : n => n.kind !== target.elementKind);
|
|
28
|
-
continue;
|
|
29
|
-
}
|
|
30
|
-
if (_types.Expr.isElementTagExpr(target)) {
|
|
31
|
-
predicates.push(target.isEqual ? ({
|
|
32
|
-
tags
|
|
33
|
-
}) => !!tags && tags.includes(target.elementTag) : ({
|
|
34
|
-
tags
|
|
35
|
-
}) => (0, _rambdax.isNil)(tags) || !tags.includes(target.elementTag));
|
|
36
|
-
continue;
|
|
37
|
-
}
|
|
38
|
-
if (_types.Expr.isElementRef(target)) {
|
|
39
|
-
const {
|
|
40
|
-
element,
|
|
41
|
-
isDescedants
|
|
42
|
-
} = target;
|
|
43
|
-
predicates.push(isDescedants ? n => n.id.startsWith(element + ".") : n => n.id === element);
|
|
44
|
-
continue;
|
|
45
|
-
}
|
|
46
|
-
(0, _errors.nonexhaustive)(target);
|
|
47
|
-
}
|
|
48
|
-
(0, _rambdax.filter)((0, _rambdax.anyPass)(predicates), nodes).forEach(n => {
|
|
49
|
-
n.shape = rule.style.shape ?? n.shape;
|
|
50
|
-
n.color = rule.style.color ?? n.color;
|
|
51
|
-
if (_remeda.isDefined.strict(rule.style.icon)) {
|
|
52
|
-
n.icon = rule.style.icon;
|
|
53
|
-
}
|
|
54
|
-
});
|
|
55
|
-
}
|
|
56
|
-
return nodes;
|
|
57
|
-
}
|
|
@@ -1,50 +0,0 @@
|
|
|
1
|
-
import { anyPass, clone, filter, isNil } from "rambdax";
|
|
2
|
-
import { isDefined } from "remeda";
|
|
3
|
-
import { nonexhaustive } from "../../errors/index.js";
|
|
4
|
-
import { Expr } from "../../types/index.js";
|
|
5
|
-
export function applyViewRuleStyles(rules, _nodes) {
|
|
6
|
-
if (rules.length === 0) {
|
|
7
|
-
return _nodes;
|
|
8
|
-
}
|
|
9
|
-
const nodes = clone(_nodes);
|
|
10
|
-
for (const rule of rules) {
|
|
11
|
-
const predicates = [];
|
|
12
|
-
if (!rule.style.color && !rule.style.shape) {
|
|
13
|
-
continue;
|
|
14
|
-
}
|
|
15
|
-
for (const target of rule.targets) {
|
|
16
|
-
if (Expr.isWildcard(target)) {
|
|
17
|
-
predicates.push(() => true);
|
|
18
|
-
break;
|
|
19
|
-
}
|
|
20
|
-
if (Expr.isElementKindExpr(target)) {
|
|
21
|
-
predicates.push(
|
|
22
|
-
target.isEqual ? (n) => n.kind === target.elementKind : (n) => n.kind !== target.elementKind
|
|
23
|
-
);
|
|
24
|
-
continue;
|
|
25
|
-
}
|
|
26
|
-
if (Expr.isElementTagExpr(target)) {
|
|
27
|
-
predicates.push(
|
|
28
|
-
target.isEqual ? ({ tags }) => !!tags && tags.includes(target.elementTag) : ({ tags }) => isNil(tags) || !tags.includes(target.elementTag)
|
|
29
|
-
);
|
|
30
|
-
continue;
|
|
31
|
-
}
|
|
32
|
-
if (Expr.isElementRef(target)) {
|
|
33
|
-
const { element, isDescedants } = target;
|
|
34
|
-
predicates.push(
|
|
35
|
-
isDescedants ? (n) => n.id.startsWith(element + ".") : (n) => n.id === element
|
|
36
|
-
);
|
|
37
|
-
continue;
|
|
38
|
-
}
|
|
39
|
-
nonexhaustive(target);
|
|
40
|
-
}
|
|
41
|
-
filter(anyPass(predicates), nodes).forEach((n) => {
|
|
42
|
-
n.shape = rule.style.shape ?? n.shape;
|
|
43
|
-
n.color = rule.style.color ?? n.color;
|
|
44
|
-
if (isDefined.strict(rule.style.icon)) {
|
|
45
|
-
n.icon = rule.style.icon;
|
|
46
|
-
}
|
|
47
|
-
});
|
|
48
|
-
}
|
|
49
|
-
return nodes;
|
|
50
|
-
}
|
|
@@ -1,50 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.sortNodes = sortNodes;
|
|
7
|
-
var _utils = require("../../utils/index.cjs");
|
|
8
|
-
var _graphlib = _interopRequireDefault(require("@dagrejs/graphlib"));
|
|
9
|
-
var _errors = require("../../errors/index.cjs");
|
|
10
|
-
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
11
|
-
const {
|
|
12
|
-
Graph,
|
|
13
|
-
alg
|
|
14
|
-
} = _graphlib.default;
|
|
15
|
-
function sortNodes(_nodes, edges) {
|
|
16
|
-
const g = new Graph({
|
|
17
|
-
compound: true,
|
|
18
|
-
directed: true,
|
|
19
|
-
multigraph: false
|
|
20
|
-
});
|
|
21
|
-
for (const nd of _nodes.values()) {
|
|
22
|
-
g.setNode(nd.id);
|
|
23
|
-
if (nd.parent) {
|
|
24
|
-
g.setEdge(nd.parent, nd.id);
|
|
25
|
-
}
|
|
26
|
-
}
|
|
27
|
-
for (const edge of edges) {
|
|
28
|
-
const source = _nodes.get(edge.source);
|
|
29
|
-
let target = _nodes.get(edge.target);
|
|
30
|
-
while (source && target) {
|
|
31
|
-
if (!(0, _utils.isSameHierarchy)(source, target) && !g.hasEdge(source.id, target.id)) {
|
|
32
|
-
g.setEdge(source.id, target.id);
|
|
33
|
-
if (!alg.isAcyclic(g)) {
|
|
34
|
-
g.removeEdge(source.id, target.id);
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
if (target.parent && target.parent !== edge.parent) {
|
|
38
|
-
target = _nodes.get(target.parent);
|
|
39
|
-
} else {
|
|
40
|
-
target = void 0;
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
const sorted = alg.topsort(g);
|
|
45
|
-
const nodes = sorted.map(id => (0, _errors.nonNullable)(_nodes.get(id)));
|
|
46
|
-
for (const node of nodes) {
|
|
47
|
-
node.children = nodes.flatMap(n => n.parent === node.id ? n.id : []);
|
|
48
|
-
}
|
|
49
|
-
return nodes;
|
|
50
|
-
}
|
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
import { isSameHierarchy } from "../../utils/index.js";
|
|
2
|
-
import pkg from "@dagrejs/graphlib";
|
|
3
|
-
import { nonNullable } from "../../errors/index.js";
|
|
4
|
-
const { Graph, alg } = pkg;
|
|
5
|
-
export function sortNodes(_nodes, edges) {
|
|
6
|
-
const g = new Graph({
|
|
7
|
-
compound: true,
|
|
8
|
-
directed: true,
|
|
9
|
-
multigraph: false
|
|
10
|
-
});
|
|
11
|
-
for (const nd of _nodes.values()) {
|
|
12
|
-
g.setNode(nd.id);
|
|
13
|
-
if (nd.parent) {
|
|
14
|
-
g.setEdge(nd.parent, nd.id);
|
|
15
|
-
}
|
|
16
|
-
}
|
|
17
|
-
for (const edge of edges) {
|
|
18
|
-
const source = _nodes.get(edge.source);
|
|
19
|
-
let target = _nodes.get(edge.target);
|
|
20
|
-
while (source && target) {
|
|
21
|
-
if (!isSameHierarchy(source, target) && !g.hasEdge(source.id, target.id)) {
|
|
22
|
-
g.setEdge(source.id, target.id);
|
|
23
|
-
if (!alg.isAcyclic(g)) {
|
|
24
|
-
g.removeEdge(source.id, target.id);
|
|
25
|
-
}
|
|
26
|
-
}
|
|
27
|
-
if (target.parent && target.parent !== edge.parent) {
|
|
28
|
-
target = _nodes.get(target.parent);
|
|
29
|
-
} else {
|
|
30
|
-
target = void 0;
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
}
|
|
34
|
-
const sorted = alg.topsort(g);
|
|
35
|
-
const nodes = sorted.map((id) => nonNullable(_nodes.get(id)));
|
|
36
|
-
for (const node of nodes) {
|
|
37
|
-
node.children = nodes.flatMap((n) => n.parent === node.id ? n.id : []);
|
|
38
|
-
}
|
|
39
|
-
return nodes;
|
|
40
|
-
}
|
package/dist/errors/_base.cjs
DELETED
|
@@ -1,62 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.UnknownError = exports.RelationRefError = exports.BaseError = void 0;
|
|
7
|
-
exports.normalizeError = normalizeError;
|
|
8
|
-
exports.serializeError = serializeError;
|
|
9
|
-
exports.throwNormalizedError = throwNormalizedError;
|
|
10
|
-
var _tsCustomError = require("ts-custom-error");
|
|
11
|
-
var _safeStableStringify = _interopRequireDefault(require("safe-stable-stringify"));
|
|
12
|
-
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
13
|
-
class BaseError extends _tsCustomError.CustomError {
|
|
14
|
-
constructor(message, options) {
|
|
15
|
-
super(message, options);
|
|
16
|
-
Object.defineProperty(this, "name", {
|
|
17
|
-
value: "BaseError"
|
|
18
|
-
});
|
|
19
|
-
}
|
|
20
|
-
}
|
|
21
|
-
exports.BaseError = BaseError;
|
|
22
|
-
class UnknownError extends BaseError {
|
|
23
|
-
constructor(message, options) {
|
|
24
|
-
super(message, options);
|
|
25
|
-
Object.defineProperty(this, "name", {
|
|
26
|
-
value: "UnknownError"
|
|
27
|
-
});
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
exports.UnknownError = UnknownError;
|
|
31
|
-
class RelationRefError extends BaseError {
|
|
32
|
-
constructor(message, options) {
|
|
33
|
-
super(message, options);
|
|
34
|
-
Object.defineProperty(this, "name", {
|
|
35
|
-
value: "RelationRefError"
|
|
36
|
-
});
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
exports.RelationRefError = RelationRefError;
|
|
40
|
-
function normalizeError(e) {
|
|
41
|
-
if (e instanceof BaseError) {
|
|
42
|
-
return e;
|
|
43
|
-
}
|
|
44
|
-
if (e instanceof Error) {
|
|
45
|
-
return new UnknownError(e.message, {
|
|
46
|
-
cause: e
|
|
47
|
-
});
|
|
48
|
-
}
|
|
49
|
-
const message = typeof e === "string" ? e : (0, _safeStableStringify.default)(e);
|
|
50
|
-
return new UnknownError(message);
|
|
51
|
-
}
|
|
52
|
-
function serializeError(e) {
|
|
53
|
-
const error = normalizeError(e);
|
|
54
|
-
return {
|
|
55
|
-
name: error.name,
|
|
56
|
-
message: error.stack ? error.stack : `${error.name}: ${error.message}`,
|
|
57
|
-
error
|
|
58
|
-
};
|
|
59
|
-
}
|
|
60
|
-
function throwNormalizedError(e) {
|
|
61
|
-
throw normalizeError(e);
|
|
62
|
-
}
|
package/dist/errors/_base.d.ts
DELETED
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
import { CustomError } from 'ts-custom-error';
|
|
2
|
-
export interface BaseErrorOptions {
|
|
3
|
-
cause?: unknown;
|
|
4
|
-
}
|
|
5
|
-
/**
|
|
6
|
-
* Base class for all errors in the LikeC4 library.
|
|
7
|
-
*/
|
|
8
|
-
export declare class BaseError extends CustomError {
|
|
9
|
-
constructor(message: string, options?: BaseErrorOptions);
|
|
10
|
-
}
|
|
11
|
-
/**
|
|
12
|
-
* Unknown error, mosly probably a bug, unhandled case or coming from a third-party library.
|
|
13
|
-
*/
|
|
14
|
-
export declare class UnknownError extends BaseError {
|
|
15
|
-
constructor(message: string, options?: BaseErrorOptions);
|
|
16
|
-
}
|
|
17
|
-
export declare class RelationRefError extends BaseError {
|
|
18
|
-
constructor(message: string, options?: BaseErrorOptions);
|
|
19
|
-
}
|
|
20
|
-
export declare function normalizeError(e: unknown): BaseError;
|
|
21
|
-
export declare function serializeError(e: unknown): {
|
|
22
|
-
name: string;
|
|
23
|
-
message: string;
|
|
24
|
-
error: BaseError;
|
|
25
|
-
};
|
|
26
|
-
export declare function throwNormalizedError(e: unknown): never;
|
package/dist/errors/_base.js
DELETED
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
import { CustomError } from "ts-custom-error";
|
|
2
|
-
import stringify from "safe-stable-stringify";
|
|
3
|
-
export class BaseError extends CustomError {
|
|
4
|
-
constructor(message, options) {
|
|
5
|
-
super(message, options);
|
|
6
|
-
Object.defineProperty(this, "name", { value: "BaseError" });
|
|
7
|
-
}
|
|
8
|
-
}
|
|
9
|
-
export class UnknownError extends BaseError {
|
|
10
|
-
constructor(message, options) {
|
|
11
|
-
super(message, options);
|
|
12
|
-
Object.defineProperty(this, "name", { value: "UnknownError" });
|
|
13
|
-
}
|
|
14
|
-
}
|
|
15
|
-
export class RelationRefError extends BaseError {
|
|
16
|
-
constructor(message, options) {
|
|
17
|
-
super(message, options);
|
|
18
|
-
Object.defineProperty(this, "name", { value: "RelationRefError" });
|
|
19
|
-
}
|
|
20
|
-
}
|
|
21
|
-
export function normalizeError(e) {
|
|
22
|
-
if (e instanceof BaseError) {
|
|
23
|
-
return e;
|
|
24
|
-
}
|
|
25
|
-
if (e instanceof Error) {
|
|
26
|
-
return new UnknownError(e.message, { cause: e });
|
|
27
|
-
}
|
|
28
|
-
const message = typeof e === "string" ? e : stringify(e);
|
|
29
|
-
return new UnknownError(message);
|
|
30
|
-
}
|
|
31
|
-
export function serializeError(e) {
|
|
32
|
-
const error = normalizeError(e);
|
|
33
|
-
return {
|
|
34
|
-
name: error.name,
|
|
35
|
-
message: error.stack ? error.stack : `${error.name}: ${error.message}`,
|
|
36
|
-
error
|
|
37
|
-
};
|
|
38
|
-
}
|
|
39
|
-
export function throwNormalizedError(e) {
|
|
40
|
-
throw normalizeError(e);
|
|
41
|
-
}
|
package/dist/errors/index.cjs
DELETED
|
@@ -1,60 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
var _base = require("./_base.cjs");
|
|
7
|
-
Object.keys(_base).forEach(function (key) {
|
|
8
|
-
if (key === "default" || key === "__esModule") return;
|
|
9
|
-
if (key in exports && exports[key] === _base[key]) return;
|
|
10
|
-
Object.defineProperty(exports, key, {
|
|
11
|
-
enumerable: true,
|
|
12
|
-
get: function () {
|
|
13
|
-
return _base[key];
|
|
14
|
-
}
|
|
15
|
-
});
|
|
16
|
-
});
|
|
17
|
-
var _invariant = require("./invariant.cjs");
|
|
18
|
-
Object.keys(_invariant).forEach(function (key) {
|
|
19
|
-
if (key === "default" || key === "__esModule") return;
|
|
20
|
-
if (key in exports && exports[key] === _invariant[key]) return;
|
|
21
|
-
Object.defineProperty(exports, key, {
|
|
22
|
-
enumerable: true,
|
|
23
|
-
get: function () {
|
|
24
|
-
return _invariant[key];
|
|
25
|
-
}
|
|
26
|
-
});
|
|
27
|
-
});
|
|
28
|
-
var _nonNullable = require("./non-nullable.cjs");
|
|
29
|
-
Object.keys(_nonNullable).forEach(function (key) {
|
|
30
|
-
if (key === "default" || key === "__esModule") return;
|
|
31
|
-
if (key in exports && exports[key] === _nonNullable[key]) return;
|
|
32
|
-
Object.defineProperty(exports, key, {
|
|
33
|
-
enumerable: true,
|
|
34
|
-
get: function () {
|
|
35
|
-
return _nonNullable[key];
|
|
36
|
-
}
|
|
37
|
-
});
|
|
38
|
-
});
|
|
39
|
-
var _nonexhaustive = require("./nonexhaustive.cjs");
|
|
40
|
-
Object.keys(_nonexhaustive).forEach(function (key) {
|
|
41
|
-
if (key === "default" || key === "__esModule") return;
|
|
42
|
-
if (key in exports && exports[key] === _nonexhaustive[key]) return;
|
|
43
|
-
Object.defineProperty(exports, key, {
|
|
44
|
-
enumerable: true,
|
|
45
|
-
get: function () {
|
|
46
|
-
return _nonexhaustive[key];
|
|
47
|
-
}
|
|
48
|
-
});
|
|
49
|
-
});
|
|
50
|
-
var _modelIndex = require("./model-index.cjs");
|
|
51
|
-
Object.keys(_modelIndex).forEach(function (key) {
|
|
52
|
-
if (key === "default" || key === "__esModule") return;
|
|
53
|
-
if (key in exports && exports[key] === _modelIndex[key]) return;
|
|
54
|
-
Object.defineProperty(exports, key, {
|
|
55
|
-
enumerable: true,
|
|
56
|
-
get: function () {
|
|
57
|
-
return _modelIndex[key];
|
|
58
|
-
}
|
|
59
|
-
});
|
|
60
|
-
});
|