@likec4/core 0.37.0 → 0.40.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 (152) hide show
  1. package/dist/{colors.d.ts → cjs/colors.d.ts} +28 -28
  2. package/dist/{colors.cjs → cjs/colors.js} +18 -28
  3. package/dist/{compute-view/EdgeBuilder.cjs → cjs/compute-view/EdgeBuilder.js} +1 -1
  4. package/dist/{compute-view → cjs/compute-view}/compute-ctx.d.ts +5 -4
  5. package/dist/{compute-view/compute-ctx.cjs → cjs/compute-view/compute-ctx.js} +5 -3
  6. package/dist/{compute-view/compute-element-view.cjs → cjs/compute-view/compute-element-view.js} +22 -13
  7. package/dist/{compute-view/compute-predicates.cjs → cjs/compute-view/compute-predicates.js} +3 -3
  8. package/dist/{compute-view/compute.cjs → cjs/compute-view/compute.js} +2 -2
  9. package/dist/{compute-view → cjs/compute-view}/index.d.ts +1 -0
  10. package/dist/{compute-view/index.cjs → cjs/compute-view/index.js} +14 -3
  11. package/dist/{compute-view → cjs/compute-view}/resolve-extended-views.d.ts +2 -2
  12. package/dist/{compute-view/resolve-extended-views.cjs → cjs/compute-view/resolve-extended-views.js} +16 -13
  13. package/dist/cjs/compute-view/resolve-relative-paths.d.ts +2 -0
  14. package/dist/cjs/compute-view/resolve-relative-paths.js +84 -0
  15. package/dist/{compute-view/utils/anyPossibleRelations.cjs → cjs/compute-view/utils/anyPossibleRelations.js} +1 -1
  16. package/dist/{compute-view/utils/applyViewRuleStyles.cjs → cjs/compute-view/utils/applyViewRuleStyles.js} +2 -2
  17. package/dist/cjs/compute-view/utils/sortNodes.d.ts +19 -0
  18. package/dist/cjs/compute-view/utils/sortNodes.js +47 -0
  19. package/dist/cjs/errors/index.d.ts +45 -0
  20. package/dist/cjs/errors/index.js +137 -0
  21. package/dist/{index.cjs → cjs/index.js} +24 -24
  22. package/dist/{model-index/ModelIndex.cjs → cjs/model-index/ModelIndex.js} +3 -4
  23. package/dist/{model-index/index.cjs → cjs/model-index/index.js} +1 -1
  24. package/dist/{types → cjs/types}/computed-view.d.ts +1 -0
  25. package/dist/{types → cjs/types}/diagram.d.ts +1 -6
  26. package/dist/{types/index.cjs → cjs/types/index.js} +10 -10
  27. package/dist/{types → cjs/types}/theme.d.ts +8 -2
  28. package/dist/{types → cjs/types}/view.d.ts +15 -0
  29. package/dist/{utils/compute-node-levels.cjs → cjs/utils/compute-node-levels.js} +1 -1
  30. package/dist/{utils/fqn.cjs → cjs/utils/fqn.js} +1 -1
  31. package/dist/{utils → cjs/utils}/guards.d.ts +0 -2
  32. package/dist/cjs/utils/guards.js +13 -0
  33. package/dist/{utils/index.cjs → cjs/utils/index.js} +4 -4
  34. package/dist/{utils/relations.cjs → cjs/utils/relations.js} +1 -1
  35. package/dist/esm/colors.d.ts +148 -0
  36. package/dist/{colors.js → esm/colors.js} +18 -26
  37. package/dist/esm/compute-view/EdgeBuilder.d.ts +6 -0
  38. package/dist/esm/compute-view/compute-ctx.d.ts +20 -0
  39. package/dist/{compute-view → esm/compute-view}/compute-ctx.js +2 -0
  40. package/dist/esm/compute-view/compute-element-view.d.ts +3 -0
  41. package/dist/{compute-view → esm/compute-view}/compute-element-view.js +18 -6
  42. package/dist/esm/compute-view/compute-predicates.d.ts +16 -0
  43. package/dist/{compute-view → esm/compute-view}/compute-predicates.js +1 -1
  44. package/dist/esm/compute-view/compute.d.ts +14 -0
  45. package/dist/esm/compute-view/index.d.ts +4 -0
  46. package/dist/{compute-view → esm/compute-view}/index.js +1 -0
  47. package/dist/esm/compute-view/resolve-extended-views.d.ts +6 -0
  48. package/dist/{compute-view → esm/compute-view}/resolve-extended-views.js +17 -14
  49. package/dist/esm/compute-view/resolve-relative-paths.d.ts +2 -0
  50. package/dist/esm/compute-view/resolve-relative-paths.js +76 -0
  51. package/dist/esm/compute-view/utils/anyPossibleRelations.d.ts +2 -0
  52. package/dist/esm/compute-view/utils/applyViewRuleStyles.d.ts +2 -0
  53. package/dist/esm/compute-view/utils/sortNodes.d.ts +19 -0
  54. package/dist/esm/compute-view/utils/sortNodes.js +37 -0
  55. package/dist/esm/errors/index.d.ts +45 -0
  56. package/dist/esm/errors/index.js +97 -0
  57. package/dist/esm/index.d.ts +8 -0
  58. package/dist/esm/model-index/ModelIndex.d.ts +27 -0
  59. package/dist/{model-index → esm/model-index}/ModelIndex.js +3 -4
  60. package/dist/esm/model-index/index.d.ts +1 -0
  61. package/dist/esm/types/_common.d.ts +3 -0
  62. package/dist/esm/types/computed-view.d.ts +41 -0
  63. package/dist/esm/types/diagram.d.ts +32 -0
  64. package/dist/esm/types/element.d.ts +29 -0
  65. package/dist/esm/types/expression.d.ts +56 -0
  66. package/dist/esm/types/index.d.ts +11 -0
  67. package/dist/esm/types/model.d.ts +14 -0
  68. package/dist/esm/types/opaque.d.ts +102 -0
  69. package/dist/esm/types/relation.d.ts +10 -0
  70. package/dist/esm/types/theme.d.ts +28 -0
  71. package/dist/esm/types/view.d.ts +58 -0
  72. package/dist/esm/utils/compute-node-levels.d.ts +7 -0
  73. package/dist/esm/utils/fqn.d.ts +28 -0
  74. package/dist/esm/utils/guards.d.ts +3 -0
  75. package/dist/esm/utils/guards.js +6 -0
  76. package/dist/esm/utils/index.d.ts +4 -0
  77. package/dist/esm/utils/relations.d.ts +25 -0
  78. package/package.json +54 -68
  79. package/dist/compute-view/utils/sortNodes.cjs +0 -50
  80. package/dist/compute-view/utils/sortNodes.d.ts +0 -2
  81. package/dist/compute-view/utils/sortNodes.js +0 -40
  82. package/dist/errors/_base.cjs +0 -62
  83. package/dist/errors/_base.d.ts +0 -26
  84. package/dist/errors/_base.js +0 -41
  85. package/dist/errors/index.cjs +0 -60
  86. package/dist/errors/index.d.ts +0 -5
  87. package/dist/errors/index.js +0 -5
  88. package/dist/errors/invariant.cjs +0 -23
  89. package/dist/errors/invariant.d.ts +0 -6
  90. package/dist/errors/invariant.js +0 -13
  91. package/dist/errors/model-index.cjs +0 -23
  92. package/dist/errors/model-index.d.ts +0 -6
  93. package/dist/errors/model-index.js +0 -13
  94. package/dist/errors/non-nullable.cjs +0 -23
  95. package/dist/errors/non-nullable.d.ts +0 -6
  96. package/dist/errors/non-nullable.js +0 -13
  97. package/dist/errors/nonexhaustive.cjs +0 -23
  98. package/dist/errors/nonexhaustive.d.ts +0 -6
  99. package/dist/errors/nonexhaustive.js +0 -12
  100. package/dist/utils/guards.cjs +0 -22
  101. package/dist/utils/guards.js +0 -13
  102. package/dist/{compute-view → cjs/compute-view}/EdgeBuilder.d.ts +0 -0
  103. package/dist/{compute-view → cjs/compute-view}/compute-element-view.d.ts +0 -0
  104. package/dist/{compute-view → cjs/compute-view}/compute-predicates.d.ts +0 -0
  105. package/dist/{compute-view → cjs/compute-view}/compute.d.ts +0 -0
  106. package/dist/{compute-view → cjs/compute-view}/utils/anyPossibleRelations.d.ts +0 -0
  107. package/dist/{compute-view → cjs/compute-view}/utils/applyViewRuleStyles.d.ts +0 -0
  108. package/dist/{index.d.ts → cjs/index.d.ts} +5 -5
  109. package/dist/{model-index → cjs/model-index}/ModelIndex.d.ts +0 -0
  110. package/dist/{model-index → cjs/model-index}/index.d.ts +0 -0
  111. package/dist/{types → cjs/types}/_common.d.ts +0 -0
  112. package/dist/{types/_common.cjs → cjs/types/_common.js} +0 -0
  113. package/dist/{types/computed-view.cjs → cjs/types/computed-view.js} +0 -0
  114. package/dist/{types/diagram.cjs → cjs/types/diagram.js} +0 -0
  115. package/dist/{types → cjs/types}/element.d.ts +0 -0
  116. package/dist/{types/element.cjs → cjs/types/element.js} +0 -0
  117. package/dist/{types → cjs/types}/expression.d.ts +0 -0
  118. package/dist/{types/expression.cjs → cjs/types/expression.js} +0 -0
  119. package/dist/{types → cjs/types}/index.d.ts +0 -0
  120. package/dist/{types → cjs/types}/model.d.ts +0 -0
  121. package/dist/{types/model.cjs → cjs/types/model.js} +0 -0
  122. package/dist/{types → cjs/types}/opaque.d.ts +0 -0
  123. package/dist/{types/opaque.cjs → cjs/types/opaque.js} +0 -0
  124. package/dist/{types → cjs/types}/relation.d.ts +0 -0
  125. package/dist/{types/relation.cjs → cjs/types/relation.js} +0 -0
  126. package/dist/{types/theme.cjs → cjs/types/theme.js} +0 -0
  127. package/dist/{types/view.cjs → cjs/types/view.js} +0 -0
  128. package/dist/{utils → cjs/utils}/compute-node-levels.d.ts +0 -0
  129. package/dist/{utils → cjs/utils}/fqn.d.ts +0 -0
  130. package/dist/{utils → cjs/utils}/index.d.ts +0 -0
  131. package/dist/{utils → cjs/utils}/relations.d.ts +0 -0
  132. package/dist/{compute-view → esm/compute-view}/EdgeBuilder.js +0 -0
  133. package/dist/{compute-view → esm/compute-view}/compute.js +0 -0
  134. package/dist/{compute-view → esm/compute-view}/utils/anyPossibleRelations.js +0 -0
  135. package/dist/{compute-view → esm/compute-view}/utils/applyViewRuleStyles.js +0 -0
  136. package/dist/{index.js → esm/index.js} +4 -4
  137. /package/dist/{model-index → esm/model-index}/index.js +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}/relation.js +0 -0
  147. /package/dist/{types → esm/types}/theme.js +0 -0
  148. /package/dist/{types → esm/types}/view.js +0 -0
  149. /package/dist/{utils → esm/utils}/compute-node-levels.js +0 -0
  150. /package/dist/{utils → esm/utils}/fqn.js +0 -0
  151. /package/dist/{utils → esm/utils}/index.js +0 -0
  152. /package/dist/{utils → esm/utils}/relations.js +0 -0
@@ -1,19 +1,19 @@
1
1
  export declare const RelationColors: {
2
- readonly lineColor: "#a3a3a3";
3
- readonly labelColor: "#d4d4d4";
2
+ readonly lineColor: "#b1b1b1";
3
+ readonly labelColor: "#b1b1b1";
4
4
  };
5
5
  export declare const Colors: {
6
6
  readonly primary: {
7
7
  fill: "#3b82f6";
8
8
  stroke: "#2563eb";
9
9
  hiContrast: "#eff6ff";
10
- loContrast: "#dbeafe";
10
+ loContrast: "#bfdbfe";
11
11
  };
12
12
  readonly blue: {
13
13
  fill: "#3b82f6";
14
14
  stroke: "#2563eb";
15
15
  hiContrast: "#eff6ff";
16
- loContrast: "#dbeafe";
16
+ loContrast: "#bfdbfe";
17
17
  };
18
18
  readonly secondary: {
19
19
  fill: "#0284c7";
@@ -46,22 +46,22 @@ export declare const Colors: {
46
46
  readonly loContrast: "#e5e5e5";
47
47
  };
48
48
  readonly red: {
49
- readonly fill: "#ef4444";
50
- readonly stroke: "#dc2626";
51
- readonly hiContrast: "#111827";
52
- readonly loContrast: "#1f2937";
49
+ readonly fill: "#b54548";
50
+ readonly stroke: "#8c333a";
51
+ readonly hiContrast: "#f8fafc";
52
+ readonly loContrast: "#F9C6C6";
53
53
  };
54
54
  readonly green: {
55
- readonly fill: "#16a34a";
56
- readonly stroke: "#15803d";
57
- readonly hiContrast: "#111827";
58
- readonly loContrast: "#1f2937";
55
+ readonly fill: "#428a4f";
56
+ readonly stroke: "#2d5d39";
57
+ readonly hiContrast: "#f8fafc";
58
+ readonly loContrast: "#c2f0c2";
59
59
  };
60
60
  readonly amber: {
61
61
  readonly fill: "#d97706";
62
62
  readonly stroke: "#b45309";
63
- readonly hiContrast: "#111827";
64
- readonly loContrast: "#1f2937";
63
+ readonly hiContrast: "#f8fafc";
64
+ readonly loContrast: "#ffe0c2";
65
65
  };
66
66
  readonly indigo: {
67
67
  readonly fill: "#6366f1";
@@ -74,21 +74,21 @@ export declare const defaultTheme: {
74
74
  readonly font: "Helvetica";
75
75
  readonly shadow: "#0a0a0a";
76
76
  readonly relation: {
77
- readonly lineColor: "#a3a3a3";
78
- readonly labelColor: "#d4d4d4";
77
+ readonly lineColor: "#b1b1b1";
78
+ readonly labelColor: "#b1b1b1";
79
79
  };
80
80
  readonly colors: {
81
81
  readonly primary: {
82
82
  fill: "#3b82f6";
83
83
  stroke: "#2563eb";
84
84
  hiContrast: "#eff6ff";
85
- loContrast: "#dbeafe";
85
+ loContrast: "#bfdbfe";
86
86
  };
87
87
  readonly blue: {
88
88
  fill: "#3b82f6";
89
89
  stroke: "#2563eb";
90
90
  hiContrast: "#eff6ff";
91
- loContrast: "#dbeafe";
91
+ loContrast: "#bfdbfe";
92
92
  };
93
93
  readonly secondary: {
94
94
  fill: "#0284c7";
@@ -121,22 +121,22 @@ export declare const defaultTheme: {
121
121
  readonly loContrast: "#e5e5e5";
122
122
  };
123
123
  readonly red: {
124
- readonly fill: "#ef4444";
125
- readonly stroke: "#dc2626";
126
- readonly hiContrast: "#111827";
127
- readonly loContrast: "#1f2937";
124
+ readonly fill: "#b54548";
125
+ readonly stroke: "#8c333a";
126
+ readonly hiContrast: "#f8fafc";
127
+ readonly loContrast: "#F9C6C6";
128
128
  };
129
129
  readonly green: {
130
- readonly fill: "#16a34a";
131
- readonly stroke: "#15803d";
132
- readonly hiContrast: "#111827";
133
- readonly loContrast: "#1f2937";
130
+ readonly fill: "#428a4f";
131
+ readonly stroke: "#2d5d39";
132
+ readonly hiContrast: "#f8fafc";
133
+ readonly loContrast: "#c2f0c2";
134
134
  };
135
135
  readonly amber: {
136
136
  readonly fill: "#d97706";
137
137
  readonly stroke: "#b45309";
138
- readonly hiContrast: "#111827";
139
- readonly loContrast: "#1f2937";
138
+ readonly hiContrast: "#f8fafc";
139
+ readonly loContrast: "#ffe0c2";
140
140
  };
141
141
  readonly indigo: {
142
142
  readonly fill: "#6366f1";
@@ -8,11 +8,11 @@ const blue = {
8
8
  // fill: colors.blue[500],
9
9
  // stroke: colors.blue[600],
10
10
  // hiContrast: colors.blue[50],
11
- // loContrast: colors.blue[100],
11
+ // loContrast: colors.blue[200],
12
12
  fill: "#3b82f6",
13
13
  stroke: "#2563eb",
14
14
  hiContrast: "#eff6ff",
15
- loContrast: "#dbeafe"
15
+ loContrast: "#bfdbfe"
16
16
  };
17
17
  const sky = {
18
18
  // fill: colors.sky[600],
@@ -35,10 +35,8 @@ const slate = {
35
35
  loContrast: "#e2e8f0"
36
36
  };
37
37
  const RelationColors = {
38
- // lineColor: colors.neutral[400],
39
- // labelColor: colors.neutral[300],
40
- lineColor: "#a3a3a3",
41
- labelColor: "#d4d4d4"
38
+ lineColor: "#b1b1b1",
39
+ labelColor: "#b1b1b1"
42
40
  };
43
41
  exports.RelationColors = RelationColors;
44
42
  const Colors = {
@@ -63,31 +61,23 @@ const Colors = {
63
61
  // stroke: colors.red[600],
64
62
  // hiContrast: colors.red[50],
65
63
  // loContrast: colors.red[200],
66
- fill: "#ef4444",
67
- stroke: "#dc2626",
64
+ fill: "#b54548",
65
+ stroke: "#8c333a",
68
66
  // hiContrast: '#fef2f2',
69
67
  // loContrast: '#fecaca',
70
- hiContrast: "#111827",
71
- // colors.gray[900],
72
- loContrast: "#1f2937"
73
- // colors.gray[800],
68
+ // hiContrast: '#191111', // colors.gray[900],
69
+ // loContrast: '#3b1219' // colors.gray[800],
70
+ hiContrast: "#f8fafc",
71
+ // hiContrast: '#f8fafc',
72
+ // loContrast: '#fdd8d8' // radix black red 12
73
+ loContrast: "#F9C6C6"
74
74
  },
75
-
76
75
  green: {
77
- // fill: colors.green[600],
78
- // stroke: colors.green[700],
79
- // hiContrast: colors.green[50],
80
- // loContrast: colors.green[200],
81
- fill: "#16a34a",
82
- stroke: "#15803d",
83
- hiContrast: "#111827",
84
- // colors.gray[900],
85
- // hiContrast: '#f0fdf4',
86
- loContrast: "#1f2937"
87
- // colors.gray[800],
88
- // loContrast: '#bbf7d0'
76
+ fill: "#428a4f",
77
+ stroke: "#2d5d39",
78
+ hiContrast: "#f8fafc",
79
+ loContrast: "#c2f0c2"
89
80
  },
90
-
91
81
  amber: {
92
82
  // fill: colors.amber[600],
93
83
  // stroke: colors.amber[700],
@@ -97,9 +87,9 @@ const Colors = {
97
87
  stroke: "#b45309",
98
88
  // hiContrast: '#fffbeb',
99
89
  // loContrast: '#fde68a',
100
- hiContrast: "#111827",
90
+ hiContrast: "#f8fafc",
101
91
  // colors.gray[900],
102
- loContrast: "#1f2937"
92
+ loContrast: "#ffe0c2"
103
93
  // colors.gray[800],
104
94
  },
105
95
 
@@ -5,7 +5,7 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.EdgeBuilder = void 0;
7
7
  var _rambdax = require("rambdax");
8
- var _utils = require("../utils/index.cjs");
8
+ var _utils = require("../utils");
9
9
  class EdgeBuilder {
10
10
  _relationsObj = {};
11
11
  add(source, target, relation) {
@@ -8,10 +8,11 @@ export type ComputeCtxPatch = {
8
8
  export declare class ComputeCtx {
9
9
  index: ModelIndex;
10
10
  root: Fqn | null;
11
- elements: Set<Element>;
12
- relations: Set<Relation>;
13
- implicits: Set<Element>;
14
- constructor(index: ModelIndex, root: Fqn | null, elements?: Set<Element>, relations?: Set<Relation>, implicits?: Set<Element>);
11
+ elements: ReadonlySet<Element>;
12
+ relations: ReadonlySet<Relation>;
13
+ implicits: ReadonlySet<Element>;
14
+ readonly allElements: ReadonlySet<Element>;
15
+ constructor(index: ModelIndex, root: Fqn | null, elements?: ReadonlySet<Element>, relations?: ReadonlySet<Relation>, implicits?: ReadonlySet<Element>);
15
16
  include({ elements, relations, implicits }: ComputeCtxPatch): ComputeCtx;
16
17
  exclude({ elements, relations, implicits }: ComputeCtxPatch): ComputeCtx;
17
18
  processViewRules(viewRules: ViewRuleExpression[]): ComputeCtx;
@@ -5,9 +5,9 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.ComputeCtx = void 0;
7
7
  var _rambdax = require("rambdax");
8
- var _types = require("../types/index.cjs");
9
- var _computePredicates = require("./compute-predicates.cjs");
10
- var _errors = require("../errors/index.cjs");
8
+ var _types = require("../types");
9
+ var _computePredicates = require("./compute-predicates");
10
+ var _errors = require("../errors");
11
11
  class ComputeCtx {
12
12
  constructor(index, root, elements = /* @__PURE__ */new Set(), relations = /* @__PURE__ */new Set(), implicits = /* @__PURE__ */new Set()) {
13
13
  this.index = index;
@@ -15,7 +15,9 @@ class ComputeCtx {
15
15
  this.elements = elements;
16
16
  this.relations = relations;
17
17
  this.implicits = implicits;
18
+ this.allElements = /* @__PURE__ */new Set([...this.elements, ...this.implicits]);
18
19
  }
20
+ allElements;
19
21
  include({
20
22
  elements,
21
23
  relations,
@@ -5,13 +5,13 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.computeElementView = computeElementView;
7
7
  var _remeda = require("remeda");
8
- var _errors = require("../errors/index.cjs");
9
- var _types = require("../types/index.cjs");
10
- var _utils = require("../utils/index.cjs");
11
- var _EdgeBuilder = require("./EdgeBuilder.cjs");
12
- var _computeCtx = require("./compute-ctx.cjs");
13
- var _applyViewRuleStyles = require("./utils/applyViewRuleStyles.cjs");
14
- var _sortNodes = require("./utils/sortNodes.cjs");
8
+ var _errors = require("../errors");
9
+ var _types = require("../types");
10
+ var _utils = require("../utils");
11
+ var _EdgeBuilder = require("./EdgeBuilder");
12
+ var _computeCtx = require("./compute-ctx");
13
+ var _applyViewRuleStyles = require("./utils/applyViewRuleStyles");
14
+ var _sortNodes = require("./utils/sortNodes");
15
15
  function reduceToMap(elementsIterator) {
16
16
  return Array.from(elementsIterator).sort(_utils.compareByFqnHierarchically).reduce((map, {
17
17
  id,
@@ -20,6 +20,7 @@ function reduceToMap(elementsIterator) {
20
20
  ...el
21
21
  }) => {
22
22
  let parent = (0, _utils.parentFqn)(id);
23
+ let level = 0;
23
24
  while (parent) {
24
25
  if (map.has(parent)) {
25
26
  break;
@@ -29,11 +30,13 @@ function reduceToMap(elementsIterator) {
29
30
  if (parent) {
30
31
  const parentNd = (0, _errors.nonNullable)(map.get(parent));
31
32
  parentNd.children.push(id);
33
+ level = parentNd.level + 1;
32
34
  }
33
35
  const node = {
34
36
  ...el,
35
37
  id,
36
38
  parent,
39
+ level,
37
40
  color: color ?? _types.DefaultThemeColor,
38
41
  shape: shape ?? _types.DefaultElementShape,
39
42
  children: [],
@@ -44,19 +47,26 @@ function reduceToMap(elementsIterator) {
44
47
  return map;
45
48
  }, /* @__PURE__ */new Map());
46
49
  }
50
+ const keepOriginalSortFromView = (_nodes, ctx) => {
51
+ const nodes = [...ctx.allElements].flatMap(e => _nodes.get(e.id) || []);
52
+ for (const node of nodes) {
53
+ node.children = nodes.flatMap(n => n.parent === node.id ? n.id : []);
54
+ }
55
+ return nodes;
56
+ };
47
57
  function computeElementView(view, index) {
48
58
  const ctx = _computeCtx.ComputeCtx.create(view, index);
49
- const allElements = [...ctx.elements, ...ctx.implicits].sort(_utils.compareByFqnHierarchically).reverse();
59
+ const leafsFirst = [...ctx.allElements].sort((a, b) => -1 * (0, _utils.compareByFqnHierarchically)(a, b));
50
60
  const elementsWithRelations = /* @__PURE__ */new Set();
51
61
  const edgeBuilder = new _EdgeBuilder.EdgeBuilder();
52
62
  const anscestorOf = id => e => e.id === id || (0, _utils.isAncestor)(e.id, id);
53
63
  const sortedRelations = [...ctx.relations];
54
64
  for (const rel of sortedRelations) {
55
- const source = (0, _remeda.find)(allElements, anscestorOf(rel.source));
65
+ const source = (0, _remeda.find)(leafsFirst, anscestorOf(rel.source));
56
66
  if (!source) {
57
67
  continue;
58
68
  }
59
- const target = (0, _remeda.find)(allElements, (0, _remeda.allPass)([anscestorOf(rel.target), e => !(0, _utils.isSameHierarchy)(e, source)]));
69
+ const target = (0, _remeda.find)(leafsFirst, (0, _remeda.allPass)([anscestorOf(rel.target), e => !(0, _utils.isSameHierarchy)(e, source)]));
60
70
  if (!target) {
61
71
  continue;
62
72
  }
@@ -64,8 +74,7 @@ function computeElementView(view, index) {
64
74
  elementsWithRelations.add(target);
65
75
  edgeBuilder.add(source.id, target.id, rel);
66
76
  }
67
- const elements = /* @__PURE__ */new Set([...ctx.elements, ...elementsWithRelations]);
68
- const nodesMap = reduceToMap(elements);
77
+ const nodesMap = reduceToMap( /* @__PURE__ */new Set([...ctx.elements, ...elementsWithRelations]));
69
78
  const edges = edgeBuilder.build().map(edge => {
70
79
  while (edge.parent) {
71
80
  if (nodesMap.has(edge.parent)) {
@@ -77,7 +86,7 @@ function computeElementView(view, index) {
77
86
  (0, _errors.nonNullable)(nodesMap.get(edge.target)).inEdges.push(edge.id);
78
87
  return edge;
79
88
  });
80
- const nodes = (0, _applyViewRuleStyles.applyViewRuleStyles)(view.rules.filter(_types.isViewRuleStyle), (0, _sortNodes.sortNodes)(nodesMap, edges)
89
+ const nodes = (0, _applyViewRuleStyles.applyViewRuleStyles)(view.rules.filter(_types.isViewRuleStyle), (0, _sortNodes.sortNodes)(keepOriginalSortFromView(nodesMap, ctx), edges)
81
90
  // map(e => nodesMap.get(e.id)!, Array.from(elements))
82
91
  );
83
92
 
@@ -5,9 +5,9 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.includeWildcardRef = exports.includeRelationExpr = exports.includeOutgoingExpr = exports.includeIncomingExpr = exports.includeInOutExpr = exports.includeElementRef = exports.includeElementKindOrTag = exports.excludeWildcardRef = exports.excludeRelationExpr = exports.excludeOutgoingExpr = exports.excludeIncomingExpr = exports.excludeInOutExpr = exports.excludeElementRef = exports.excludeElementKindOrTag = void 0;
7
7
  var _rambdax = require("rambdax");
8
- var _types = require("../types/index.cjs");
9
- var _utils = require("../utils/index.cjs");
10
- var _computeCtx = require("./compute-ctx.cjs");
8
+ var _types = require("../types");
9
+ var _utils = require("../utils");
10
+ var _computeCtx = require("./compute-ctx");
11
11
  const {
12
12
  isAnyInOut,
13
13
  isBetween,
@@ -6,8 +6,8 @@ Object.defineProperty(exports, "__esModule", {
6
6
  exports.assignNavigateTo = assignNavigateTo;
7
7
  exports.computeView = computeView;
8
8
  var _rambdax = require("rambdax");
9
- var _errors = require("../errors/index.cjs");
10
- var _computeElementView = require("./compute-element-view.cjs");
9
+ var _errors = require("../errors");
10
+ var _computeElementView = require("./compute-element-view");
11
11
  function computeView(view, index) {
12
12
  try {
13
13
  return {
@@ -1,3 +1,4 @@
1
1
  export * from './compute';
2
2
  export * from './resolve-extended-views';
3
+ export * from './resolve-relative-paths';
3
4
  export * from './EdgeBuilder';
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- var _compute = require("./compute.cjs");
6
+ var _compute = require("./compute");
7
7
  Object.keys(_compute).forEach(function (key) {
8
8
  if (key === "default" || key === "__esModule") return;
9
9
  if (key in exports && exports[key] === _compute[key]) return;
@@ -14,7 +14,7 @@ Object.keys(_compute).forEach(function (key) {
14
14
  }
15
15
  });
16
16
  });
17
- var _resolveExtendedViews = require("./resolve-extended-views.cjs");
17
+ var _resolveExtendedViews = require("./resolve-extended-views");
18
18
  Object.keys(_resolveExtendedViews).forEach(function (key) {
19
19
  if (key === "default" || key === "__esModule") return;
20
20
  if (key in exports && exports[key] === _resolveExtendedViews[key]) return;
@@ -25,7 +25,18 @@ Object.keys(_resolveExtendedViews).forEach(function (key) {
25
25
  }
26
26
  });
27
27
  });
28
- var _EdgeBuilder = require("./EdgeBuilder.cjs");
28
+ var _resolveRelativePaths = require("./resolve-relative-paths");
29
+ Object.keys(_resolveRelativePaths).forEach(function (key) {
30
+ if (key === "default" || key === "__esModule") return;
31
+ if (key in exports && exports[key] === _resolveRelativePaths[key]) return;
32
+ Object.defineProperty(exports, key, {
33
+ enumerable: true,
34
+ get: function () {
35
+ return _resolveRelativePaths[key];
36
+ }
37
+ });
38
+ });
39
+ var _EdgeBuilder = require("./EdgeBuilder");
29
40
  Object.keys(_EdgeBuilder).forEach(function (key) {
30
41
  if (key === "default" || key === "__esModule") return;
31
42
  if (key in exports && exports[key] === _EdgeBuilder[key]) return;
@@ -1,6 +1,6 @@
1
- import { type ElementView, type ViewID } from '../types';
1
+ import { type ElementView } from '../types';
2
2
  /**
3
3
  * Resolve rules of extended views
4
4
  * (Removes invalid views)
5
5
  */
6
- export declare function resolveRulesExtendedViews<V extends Record<ViewID, ElementView>>(unresolvedViews: V): V;
6
+ export declare function resolveRulesExtendedViews<V extends Record<any, ElementView>>(unresolvedViews: V): V;
@@ -5,8 +5,7 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.resolveRulesExtendedViews = resolveRulesExtendedViews;
7
7
  var _graphlib = _interopRequireDefault(require("@dagrejs/graphlib"));
8
- var _errors = require("../errors/index.cjs");
9
- var _types = require("../types/index.cjs");
8
+ var _types = require("../types");
10
9
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
11
10
  const {
12
11
  Graph,
@@ -19,22 +18,26 @@ function resolveRulesExtendedViews(unresolvedViews) {
19
18
  compound: false
20
19
  });
21
20
  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);
21
+ g.setNode(view.id);
22
+ if ((0, _types.isExtendsElementView)(view)) {
23
+ g.setEdge(view.id, view.extends);
28
24
  }
29
25
  }
30
- if (!alg.isAcyclic(g)) {
31
- alg.findCycles(g).flat().map(id => g.removeNode(id));
26
+ const cycles = alg.findCycles(g);
27
+ if (cycles.length > 0) {
28
+ cycles.flat().forEach(id => g.removeNode(id));
32
29
  }
33
- return alg.topsort(g).reduce((acc, id) => {
34
- const view = (0, _errors.nonNullable)(unresolvedViews[id], `Cannot find view ${id}`);
30
+ const ordered = alg.postorder(g, g.sources());
31
+ return ordered.reduce((acc, id) => {
32
+ const view = unresolvedViews[id];
33
+ if (!view) {
34
+ return acc;
35
+ }
35
36
  if ((0, _types.isExtendsElementView)(view)) {
36
37
  const extendsFrom = acc[view.extends];
37
- (0, _errors.invariant)(extendsFrom, `Cannot find base view '${view.extends}' for '${view.id}'`);
38
+ if (!extendsFrom) {
39
+ return acc;
40
+ }
38
41
  return Object.assign(acc, {
39
42
  [view.id]: {
40
43
  ...extendsFrom,
@@ -0,0 +1,2 @@
1
+ import type { ElementView } from '../types';
2
+ export declare function resolveRelativePaths(views: ElementView[]): ElementView[];
@@ -0,0 +1,84 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.resolveRelativePaths = resolveRelativePaths;
7
+ var _rambdax = require("rambdax");
8
+ var _remeda = require("remeda");
9
+ var _errors = require("../errors");
10
+ function commonAncestorPath(views, sep = "/") {
11
+ if (views.length <= 1) return "";
12
+ const uniqURIs = (0, _rambdax.uniq)(views.flatMap(({
13
+ docUri
14
+ }) => docUri ? [docUri] : []));
15
+ if (uniqURIs.length === 0) return "";
16
+ if (uniqURIs.length === 1) {
17
+ (0, _errors.invariant)((0, _remeda.hasAtLeast)(uniqURIs, 1));
18
+ return new URL(uniqURIs[0]).pathname;
19
+ }
20
+ (0, _errors.invariant)((0, _remeda.hasAtLeast)(uniqURIs, 2), "Expected at least 2 unique URIs");
21
+ const [baseUri, ...tail] = uniqURIs;
22
+ const parts = new URL(baseUri).pathname.split(sep);
23
+ let endOfPrefix = parts.length;
24
+ for (const uri of tail) {
25
+ if (uri === baseUri) {
26
+ continue;
27
+ }
28
+ const compare = new URL(uri).pathname.split(sep);
29
+ for (let i = 0; i < endOfPrefix; i++) {
30
+ if (compare[i] !== parts[i]) {
31
+ endOfPrefix = i;
32
+ }
33
+ }
34
+ if (endOfPrefix === 0) return "";
35
+ }
36
+ const prefix = parts.slice(0, endOfPrefix).join(sep);
37
+ return prefix.endsWith(sep) ? prefix : prefix + sep;
38
+ }
39
+ function resolveRelativePaths(views) {
40
+ const commonPrefix = commonAncestorPath(views);
41
+ return views.map(view => {
42
+ if (!view.docUri) {
43
+ return {
44
+ ...view,
45
+ parts: []
46
+ };
47
+ }
48
+ const path = new URL(view.docUri).pathname;
49
+ const parts = path.replace(commonPrefix, "").split("/");
50
+ parts.pop();
51
+ return {
52
+ ...view,
53
+ parts
54
+ };
55
+ }).sort((a, b) => {
56
+ if (a.parts.length === b.parts.length) {
57
+ if (a.parts.length === 0) {
58
+ return 0;
59
+ }
60
+ if (a.parts.length === 1 && (0, _remeda.hasAtLeast)(a.parts, 1) && (0, _remeda.hasAtLeast)(b.parts, 1)) {
61
+ return a.parts[0].localeCompare(b.parts[0]);
62
+ }
63
+ for (const [_a, _b] of (0, _rambdax.zip)(a.parts, b.parts)) {
64
+ const compare = _a.localeCompare(_b);
65
+ if (compare !== 0) {
66
+ return compare;
67
+ }
68
+ }
69
+ return 0;
70
+ }
71
+ return a.parts.length - b.parts.length;
72
+ }).map(({
73
+ parts,
74
+ ...view
75
+ }) => {
76
+ if (view.docUri) {
77
+ return {
78
+ ...view,
79
+ relativePath: parts.join("/")
80
+ };
81
+ }
82
+ return view;
83
+ });
84
+ }
@@ -5,7 +5,7 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.anyPossibleRelations = anyPossibleRelations;
7
7
  var _rambdax = require("rambdax");
8
- var _utils = require("../../utils/index.cjs");
8
+ var _utils = require("../../utils");
9
9
  function* anyPossibleRelations(elements) {
10
10
  const uniqElements = (0, _rambdax.uniqBy)((0, _rambdax.prop)("id"), elements).sort(_utils.compareByFqnHierarchically).reverse();
11
11
  for (const source of uniqElements) {
@@ -6,8 +6,8 @@ Object.defineProperty(exports, "__esModule", {
6
6
  exports.applyViewRuleStyles = applyViewRuleStyles;
7
7
  var _rambdax = require("rambdax");
8
8
  var _remeda = require("remeda");
9
- var _errors = require("../../errors/index.cjs");
10
- var _types = require("../../types/index.cjs");
9
+ var _errors = require("../../errors");
10
+ var _types = require("../../types");
11
11
  function applyViewRuleStyles(rules, _nodes) {
12
12
  if (rules.length === 0) {
13
13
  return _nodes;
@@ -0,0 +1,19 @@
1
+ import type { ComputedEdge, ComputedNode } from '../../types';
2
+ export declare function sortNodes(_nodes: ComputedNode[], edges: ComputedEdge[]): {
3
+ children: import("../../types").Fqn[];
4
+ id: import("../../types").Fqn;
5
+ kind: import("../../types").ElementKind;
6
+ parent: import("../../types").Fqn | null;
7
+ title: string;
8
+ description: string | null;
9
+ technology: string | null;
10
+ tags: import("../../types").NonEmptyArray<import("../../types").Tag> | null;
11
+ links: import("../../types").NonEmptyArray<string> | null;
12
+ inEdges: import("../../types").EdgeId[];
13
+ outEdges: import("../../types").EdgeId[];
14
+ shape: import("../../types").ElementShape;
15
+ color: import("../../types").ThemeColor;
16
+ icon?: import("../../types").IconUrl | undefined;
17
+ navigateTo?: import("../../types").ViewID | undefined;
18
+ level: number;
19
+ }[];
@@ -0,0 +1,47 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.sortNodes = sortNodes;
7
+ var _graphlib = _interopRequireDefault(require("@dagrejs/graphlib"));
8
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
9
+ const {
10
+ Graph,
11
+ alg
12
+ } = _graphlib.default;
13
+ function fillChildren(nodes) {
14
+ return nodes.map(node => ({
15
+ ...node,
16
+ children: nodes.flatMap(n => n.parent === node.id ? n.id : [])
17
+ }));
18
+ }
19
+ function sortNodes(_nodes, edges) {
20
+ if (edges.length === 0) {
21
+ return fillChildren(_nodes);
22
+ }
23
+ const g = new Graph({
24
+ compound: true,
25
+ directed: true,
26
+ multigraph: false
27
+ });
28
+ for (const e of edges) {
29
+ g.setEdge(e.source, e.target);
30
+ }
31
+ for (const n of _nodes) {
32
+ g.setNode(n.id);
33
+ if (n.parent) {
34
+ g.setEdge(n.id, n.parent);
35
+ }
36
+ }
37
+ const unprocessed = [..._nodes];
38
+ const sorted = [];
39
+ const ordered = alg.postorder(g, g.sources()).reverse();
40
+ for (const id of ordered) {
41
+ const inx = unprocessed.findIndex(n => n.id === id);
42
+ if (inx >= 0) {
43
+ sorted.push(...unprocessed.splice(inx, 1));
44
+ }
45
+ }
46
+ return fillChildren(sorted.concat(unprocessed));
47
+ }