@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.
Files changed (147) hide show
  1. package/README.md +2 -6
  2. package/dist/cjs/colors/element.d.ts +68 -0
  3. package/dist/{colors.js → cjs/colors/element.js} +24 -46
  4. package/dist/cjs/colors/index.d.ts +132 -0
  5. package/dist/cjs/colors/index.js +27 -0
  6. package/dist/cjs/colors/relationships.d.ts +57 -0
  7. package/dist/cjs/colors/relationships.js +76 -0
  8. package/dist/cjs/errors/index.d.ts +45 -0
  9. package/dist/cjs/errors/index.js +137 -0
  10. package/dist/{index.d.ts → cjs/index.d.ts} +3 -5
  11. package/dist/{index.cjs → cjs/index.js} +16 -38
  12. package/dist/{types → cjs/types}/computed-view.d.ts +11 -7
  13. package/dist/{types → cjs/types}/diagram.d.ts +15 -11
  14. package/dist/{types → cjs/types}/expression.d.ts +1 -1
  15. package/dist/{types/index.cjs → cjs/types/index.js} +10 -10
  16. package/dist/cjs/types/relation.d.ts +22 -0
  17. package/dist/cjs/types/relation.js +12 -0
  18. package/dist/{types → cjs/types}/theme.d.ts +10 -6
  19. package/dist/{types → cjs/types}/view.d.ts +22 -4
  20. package/dist/{types/view.cjs → cjs/types/view.js} +1 -1
  21. package/dist/{utils → cjs/utils}/fqn.d.ts +6 -1
  22. package/dist/{utils/fqn.cjs → cjs/utils/fqn.js} +18 -5
  23. package/dist/{utils → cjs/utils}/guards.d.ts +1 -2
  24. package/dist/cjs/utils/guards.js +20 -0
  25. package/dist/{utils → cjs/utils}/index.d.ts +0 -1
  26. package/dist/{utils/index.cjs → cjs/utils/index.js} +3 -14
  27. package/dist/{utils/relations.cjs → cjs/utils/relations.js} +1 -1
  28. package/dist/esm/colors/element.d.ts +68 -0
  29. package/dist/esm/colors/element.js +82 -0
  30. package/dist/esm/colors/index.d.ts +132 -0
  31. package/dist/esm/colors/index.js +9 -0
  32. package/dist/esm/colors/relationships.d.ts +57 -0
  33. package/dist/esm/colors/relationships.js +64 -0
  34. package/dist/esm/errors/index.d.ts +45 -0
  35. package/dist/esm/errors/index.js +97 -0
  36. package/dist/esm/index.d.ts +6 -0
  37. package/dist/esm/index.js +4 -0
  38. package/dist/esm/types/_common.d.ts +3 -0
  39. package/dist/esm/types/computed-view.d.ts +44 -0
  40. package/dist/esm/types/diagram.d.ts +41 -0
  41. package/dist/esm/types/element.d.ts +29 -0
  42. package/dist/esm/types/expression.d.ts +56 -0
  43. package/dist/esm/types/index.d.ts +11 -0
  44. package/dist/esm/types/model.d.ts +14 -0
  45. package/dist/esm/types/opaque.d.ts +102 -0
  46. package/dist/esm/types/relation.d.ts +22 -0
  47. package/dist/esm/types/relation.js +3 -0
  48. package/dist/esm/types/theme.d.ts +26 -0
  49. package/dist/esm/types/view.d.ts +61 -0
  50. package/dist/{types → esm/types}/view.js +1 -1
  51. package/dist/esm/utils/fqn.d.ts +33 -0
  52. package/dist/{utils → esm/utils}/fqn.js +16 -4
  53. package/dist/esm/utils/guards.d.ts +4 -0
  54. package/dist/esm/utils/guards.js +7 -0
  55. package/dist/esm/utils/index.d.ts +3 -0
  56. package/dist/{utils → esm/utils}/index.js +0 -1
  57. package/dist/esm/utils/relations.d.ts +25 -0
  58. package/package.json +44 -61
  59. package/dist/colors.cjs +0 -124
  60. package/dist/colors.d.ts +0 -148
  61. package/dist/compute-view/EdgeBuilder.cjs +0 -37
  62. package/dist/compute-view/EdgeBuilder.d.ts +0 -6
  63. package/dist/compute-view/EdgeBuilder.js +0 -30
  64. package/dist/compute-view/compute-ctx.cjs +0 -89
  65. package/dist/compute-view/compute-ctx.d.ts +0 -19
  66. package/dist/compute-view/compute-ctx.js +0 -98
  67. package/dist/compute-view/compute-element-view.cjs +0 -91
  68. package/dist/compute-view/compute-element-view.d.ts +0 -3
  69. package/dist/compute-view/compute-element-view.js +0 -86
  70. package/dist/compute-view/compute-predicates.cjs +0 -363
  71. package/dist/compute-view/compute-predicates.d.ts +0 -16
  72. package/dist/compute-view/compute-predicates.js +0 -324
  73. package/dist/compute-view/compute.cjs +0 -46
  74. package/dist/compute-view/compute.d.ts +0 -14
  75. package/dist/compute-view/compute.js +0 -36
  76. package/dist/compute-view/index.cjs +0 -38
  77. package/dist/compute-view/index.d.ts +0 -3
  78. package/dist/compute-view/index.js +0 -3
  79. package/dist/compute-view/resolve-extended-views.cjs +0 -50
  80. package/dist/compute-view/resolve-extended-views.d.ts +0 -6
  81. package/dist/compute-view/resolve-extended-views.js +0 -38
  82. package/dist/compute-view/utils/anyPossibleRelations.cjs +0 -18
  83. package/dist/compute-view/utils/anyPossibleRelations.d.ts +0 -2
  84. package/dist/compute-view/utils/anyPossibleRelations.js +0 -12
  85. package/dist/compute-view/utils/applyViewRuleStyles.cjs +0 -57
  86. package/dist/compute-view/utils/applyViewRuleStyles.d.ts +0 -2
  87. package/dist/compute-view/utils/applyViewRuleStyles.js +0 -50
  88. package/dist/compute-view/utils/sortNodes.cjs +0 -50
  89. package/dist/compute-view/utils/sortNodes.d.ts +0 -2
  90. package/dist/compute-view/utils/sortNodes.js +0 -40
  91. package/dist/errors/_base.cjs +0 -62
  92. package/dist/errors/_base.d.ts +0 -26
  93. package/dist/errors/_base.js +0 -41
  94. package/dist/errors/index.cjs +0 -60
  95. package/dist/errors/index.d.ts +0 -5
  96. package/dist/errors/index.js +0 -5
  97. package/dist/errors/invariant.cjs +0 -23
  98. package/dist/errors/invariant.d.ts +0 -6
  99. package/dist/errors/invariant.js +0 -13
  100. package/dist/errors/model-index.cjs +0 -23
  101. package/dist/errors/model-index.d.ts +0 -6
  102. package/dist/errors/model-index.js +0 -13
  103. package/dist/errors/non-nullable.cjs +0 -23
  104. package/dist/errors/non-nullable.d.ts +0 -6
  105. package/dist/errors/non-nullable.js +0 -13
  106. package/dist/errors/nonexhaustive.cjs +0 -23
  107. package/dist/errors/nonexhaustive.d.ts +0 -6
  108. package/dist/errors/nonexhaustive.js +0 -12
  109. package/dist/index.js +0 -6
  110. package/dist/model-index/ModelIndex.cjs +0 -140
  111. package/dist/model-index/ModelIndex.d.ts +0 -27
  112. package/dist/model-index/ModelIndex.js +0 -128
  113. package/dist/model-index/index.cjs +0 -13
  114. package/dist/model-index/index.d.ts +0 -1
  115. package/dist/model-index/index.js +0 -1
  116. package/dist/types/relation.d.ts +0 -10
  117. package/dist/types/relation.js +0 -0
  118. package/dist/types/theme.cjs +0 -1
  119. package/dist/utils/compute-node-levels.cjs +0 -48
  120. package/dist/utils/compute-node-levels.d.ts +0 -7
  121. package/dist/utils/compute-node-levels.js +0 -31
  122. package/dist/utils/guards.cjs +0 -22
  123. package/dist/utils/guards.js +0 -13
  124. /package/dist/{types → cjs/types}/_common.d.ts +0 -0
  125. /package/dist/{types/_common.cjs → cjs/types/_common.js} +0 -0
  126. /package/dist/{types/computed-view.cjs → cjs/types/computed-view.js} +0 -0
  127. /package/dist/{types/diagram.cjs → cjs/types/diagram.js} +0 -0
  128. /package/dist/{types → cjs/types}/element.d.ts +0 -0
  129. /package/dist/{types/element.cjs → cjs/types/element.js} +0 -0
  130. /package/dist/{types/expression.cjs → cjs/types/expression.js} +0 -0
  131. /package/dist/{types → cjs/types}/index.d.ts +0 -0
  132. /package/dist/{types → cjs/types}/model.d.ts +0 -0
  133. /package/dist/{types/model.cjs → cjs/types/model.js} +0 -0
  134. /package/dist/{types → cjs/types}/opaque.d.ts +0 -0
  135. /package/dist/{types/opaque.cjs → cjs/types/opaque.js} +0 -0
  136. /package/dist/{types/relation.cjs → cjs/types/theme.js} +0 -0
  137. /package/dist/{utils → cjs/utils}/relations.d.ts +0 -0
  138. /package/dist/{types → esm/types}/_common.js +0 -0
  139. /package/dist/{types → esm/types}/computed-view.js +0 -0
  140. /package/dist/{types → esm/types}/diagram.js +0 -0
  141. /package/dist/{types → esm/types}/element.js +0 -0
  142. /package/dist/{types → esm/types}/expression.js +0 -0
  143. /package/dist/{types → esm/types}/index.js +0 -0
  144. /package/dist/{types → esm/types}/model.js +0 -0
  145. /package/dist/{types → esm/types}/opaque.js +0 -0
  146. /package/dist/{types → esm/types}/theme.js +0 -0
  147. /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,3 +0,0 @@
1
- export * from './compute';
2
- export * from './resolve-extended-views';
3
- export * from './EdgeBuilder';
@@ -1,3 +0,0 @@
1
- export * from "./compute.js";
2
- export * from "./resolve-extended-views.js";
3
- export * from "./EdgeBuilder.js";
@@ -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,6 +0,0 @@
1
- import { type ElementView, type ViewID } from '../types';
2
- /**
3
- * Resolve rules of extended views
4
- * (Removes invalid views)
5
- */
6
- export declare function resolveRulesExtendedViews<V extends Record<ViewID, ElementView>>(unresolvedViews: V): V;
@@ -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,2 +0,0 @@
1
- import type { Element } from '../../types';
2
- export declare function anyPossibleRelations(elements: Element[]): Generator<[source: Element, target: Element]>;
@@ -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,2 +0,0 @@
1
- import type { ComputedNode, ViewRuleStyle } from '../../types';
2
- export declare function applyViewRuleStyles(rules: ViewRuleStyle[], _nodes: ComputedNode[]): ComputedNode[];
@@ -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,2 +0,0 @@
1
- import type { ComputedEdge, ComputedNode, Fqn } from '../../types';
2
- export declare function sortNodes(_nodes: Map<Fqn, ComputedNode>, edges: ComputedEdge[]): ComputedNode[];
@@ -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
- }
@@ -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
- }
@@ -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;
@@ -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
- }
@@ -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
- });