@likec4/core 1.26.1 → 1.27.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 (54) hide show
  1. package/dist/builder/index.d.mts +3 -1
  2. package/dist/builder/index.mjs +6 -4
  3. package/dist/compute-view/index.d.mts +1 -2
  4. package/dist/compute-view/index.mjs +19 -7
  5. package/dist/compute-view/relationships-view/index.d.mts +42 -0
  6. package/dist/compute-view/relationships-view/index.mjs +181 -0
  7. package/dist/index.d.mts +3 -5
  8. package/dist/index.mjs +5 -5
  9. package/dist/model/index.d.mts +3 -3
  10. package/dist/model/index.mjs +1 -1
  11. package/dist/shared/{core.yND74qFI.mjs → core.BMep80lJ.mjs} +2 -1
  12. package/dist/shared/{core.DRxv3HIl.mjs → core.C-YXI-43.mjs} +1 -5
  13. package/dist/shared/core.CQXU9DF7.mjs +477 -0
  14. package/dist/shared/{core.Brmu7VBL.d.mts → core.CtloVwbo.d.mts} +3 -1
  15. package/dist/shared/{core.BqezHsjR.mjs → core.Cu-UdkSl.mjs} +16 -477
  16. package/dist/shared/core.DbRvwARP.mjs +5 -0
  17. package/dist/shared/{core.oI7caxVx.d.mts → core.Uz54YXx0.d.mts} +1 -1
  18. package/dist/shared/{core.CcjDE4j7.mjs → core.zj2huD5x.mjs} +17 -30
  19. package/dist/types/index.mjs +1 -1
  20. package/dist/utils/index.d.mts +3 -2
  21. package/dist/utils/index.mjs +5 -3
  22. package/package.json +19 -9
  23. package/src/builder/Builder.model.ts +74 -0
  24. package/src/builder/Builder.with.ts +20 -339
  25. package/src/compute-view/deployment-view/_types.ts +1 -1
  26. package/src/compute-view/deployment-view/predicates/relation-direct.ts +6 -7
  27. package/src/compute-view/deployment-view/predicates/relation-incoming.ts +2 -1
  28. package/src/compute-view/deployment-view/predicates/relation-outgoing.ts +1 -1
  29. package/src/compute-view/dynamic-view/compute.ts +22 -43
  30. package/src/compute-view/index.ts +0 -1
  31. package/src/compute-view/relationships-view/_types.ts +7 -6
  32. package/src/compute-view/relationships-view/compute.ts +140 -52
  33. package/src/compute-view/relationships-view/index.ts +3 -0
  34. package/src/compute-view/relationships-view/utils.ts +44 -11
  35. package/src/compute-view/utils/resolve-extended-views.ts +20 -5
  36. package/src/compute-view/utils/view-hash.ts +1 -4
  37. package/src/index.ts +1 -1
  38. package/src/model/ElementModel.ts +2 -0
  39. package/src/model/view/NodeModel.ts +5 -0
  40. package/src/utils/object-hash.ts +13 -2
  41. package/dist/builder/index.d.ts +0 -509
  42. package/dist/compute-view/index.d.ts +0 -23
  43. package/dist/index.d.ts +0 -147
  44. package/dist/model/index.d.ts +0 -118
  45. package/dist/shared/core.-qjOvsEL.d.ts +0 -146
  46. package/dist/shared/core.30yYKXcZ.d.ts +0 -186
  47. package/dist/shared/core.BBJd-FqJ.mjs +0 -37
  48. package/dist/shared/core.BH59D8Ji.d.ts +0 -858
  49. package/dist/shared/core.CIbWBWW3.d.ts +0 -127
  50. package/dist/shared/core.Cpd5mZgF.d.ts +0 -732
  51. package/dist/shared/core.Dd1nCiNx.d.mts +0 -12
  52. package/dist/shared/core.mD0TIdz_.d.ts +0 -12
  53. package/dist/types/index.d.ts +0 -72
  54. package/dist/utils/index.d.ts +0 -458
@@ -1,8 +1,6 @@
1
- import { u as u$1, i as invariant } from './core.DRxv3HIl.mjs';
2
-
3
- var e={done:true,hasNext:false},s={done:false,hasNext:false},a=()=>e;
4
-
5
- function C(t,...o){let n=t,u=o.map(e=>"lazy"in e?A(e):void 0),p=0;for(;p<o.length;){if(u[p]===void 0||!B(n)){let i=o[p];n=i(n),p+=1;continue}let r=[];for(let i=p;i<o.length;i++){let l=u[i];if(l===void 0||(r.push(l),l.isSingle))break}let a=[];for(let i of n)if(y(i,a,r))break;let{isSingle:s}=r.at(-1);n=s?a[0]:a,p+=r.length;}return n}function y(t,o,n){if(n.length===0)return o.push(t),false;let u=t,p=s,e=false;for(let[r,a]of n.entries()){let{index:s,items:i}=a;if(i.push(u),p=a(u,s,i),a.index+=1,p.hasNext){if(p.hasMany??false){for(let l of p.next)if(y(l,o,n.slice(r+1)))return true;return e}u=p.next;}if(!p.hasNext)break;p.done&&(e=true);}return p.hasNext&&o.push(u),e}function A(t){let{lazy:o,lazyArgs:n}=t,u=o(...n);return Object.assign(u,{isSingle:o.single??false,index:0,items:[]})}function B(t){return typeof t=="string"||typeof t=="object"&&t!==null&&Symbol.iterator in t}
1
+ import { j as getDefaultExportFromCjs, C, h as t } from './core.CQXU9DF7.mjs';
2
+ import { u as u$1 } from './core.DbRvwARP.mjs';
3
+ import { i as invariant } from './core.C-YXI-43.mjs';
6
4
 
7
5
  function d(...e){return u$1(i$2,e,o$1)}var i$2=(e,n)=>e.length<n.length?e.map((t,r)=>[t,n[r]]):n.map((t,r)=>[e[r],t]),o$1=e=>(n,t)=>({hasNext:true,next:[n,e[t]],done:t>=e.length-1});
8
6
 
@@ -12,18 +10,10 @@ function u(...e){return u$1(i,e)}function i(e,a){let n=[];for(let[o,r]of e.entri
12
10
 
13
11
  function m(...a){return u$1(o,a,p)}var o=(a,e)=>a.map(e),p=a=>(e,t,r)=>({done:false,hasNext:true,next:a(e,t,r)});
14
12
 
15
- function t$1(r){return typeof r=="string"}
16
-
17
- function t(n){return typeof n=="function"}
18
-
19
13
  function l(n){return n!=null}
20
14
 
21
15
  function n(e){return e!==void 0}
22
16
 
23
- function getDefaultExportFromCjs (x) {
24
- return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x;
25
- }
26
-
27
17
  var support = {};
28
18
 
29
19
  var hasRequiredSupport;
@@ -119,180 +109,6 @@ function requireForeach () {
119
109
  return foreach;
120
110
  }
121
111
 
122
- /**
123
- * Mnemonist DefaultMap
124
- * =====================
125
- *
126
- * JavaScript implementation of a default map that will return a constructed
127
- * value any time one tries to access an inexisting key. It's quite similar
128
- * to python's defaultdict.
129
- */
130
-
131
- var defaultMap;
132
- var hasRequiredDefaultMap;
133
-
134
- function requireDefaultMap () {
135
- if (hasRequiredDefaultMap) return defaultMap;
136
- hasRequiredDefaultMap = 1;
137
- /**
138
- * DefaultMap.
139
- *
140
- * @constructor
141
- */
142
- function DefaultMap(factory) {
143
- if (typeof factory !== 'function')
144
- throw new Error('mnemonist/DefaultMap.constructor: expecting a function.');
145
-
146
- this.items = new Map();
147
- this.factory = factory;
148
- this.size = 0;
149
- }
150
-
151
- /**
152
- * Method used to clear the structure.
153
- *
154
- * @return {undefined}
155
- */
156
- DefaultMap.prototype.clear = function() {
157
-
158
- // Properties
159
- this.items.clear();
160
- this.size = 0;
161
- };
162
-
163
- /**
164
- * Method used to get the value set for given key. If the key does not exist,
165
- * the value will be created using the provided factory.
166
- *
167
- * @param {any} key - Target key.
168
- * @return {any}
169
- */
170
- DefaultMap.prototype.get = function(key) {
171
- var value = this.items.get(key);
172
-
173
- if (typeof value === 'undefined') {
174
- value = this.factory(key, this.size);
175
- this.items.set(key, value);
176
- this.size++;
177
- }
178
-
179
- return value;
180
- };
181
-
182
- /**
183
- * Method used to get the value set for given key. If the key does not exist,
184
- * a value won't be created.
185
- *
186
- * @param {any} key - Target key.
187
- * @return {any}
188
- */
189
- DefaultMap.prototype.peek = function(key) {
190
- return this.items.get(key);
191
- };
192
-
193
- /**
194
- * Method used to set a value for given key.
195
- *
196
- * @param {any} key - Target key.
197
- * @param {any} value - Value.
198
- * @return {DefaultMap}
199
- */
200
- DefaultMap.prototype.set = function(key, value) {
201
- this.items.set(key, value);
202
- this.size = this.items.size;
203
-
204
- return this;
205
- };
206
-
207
- /**
208
- * Method used to test the existence of a key in the map.
209
- *
210
- * @param {any} key - Target key.
211
- * @return {boolean}
212
- */
213
- DefaultMap.prototype.has = function(key) {
214
- return this.items.has(key);
215
- };
216
-
217
- /**
218
- * Method used to delete target key.
219
- *
220
- * @param {any} key - Target key.
221
- * @return {boolean}
222
- */
223
- DefaultMap.prototype.delete = function(key) {
224
- var deleted = this.items.delete(key);
225
-
226
- this.size = this.items.size;
227
-
228
- return deleted;
229
- };
230
-
231
- /**
232
- * Method used to iterate over each of the key/value pairs.
233
- *
234
- * @param {function} callback - Function to call for each item.
235
- * @param {object} scope - Optional scope.
236
- * @return {undefined}
237
- */
238
- DefaultMap.prototype.forEach = function(callback, scope) {
239
- scope = arguments.length > 1 ? scope : this;
240
-
241
- this.items.forEach(callback, scope);
242
- };
243
-
244
- /**
245
- * Iterators.
246
- */
247
- DefaultMap.prototype.entries = function() {
248
- return this.items.entries();
249
- };
250
-
251
- DefaultMap.prototype.keys = function() {
252
- return this.items.keys();
253
- };
254
-
255
- DefaultMap.prototype.values = function() {
256
- return this.items.values();
257
- };
258
-
259
- /**
260
- * Attaching the #.entries method to Symbol.iterator if possible.
261
- */
262
- if (typeof Symbol !== 'undefined')
263
- DefaultMap.prototype[Symbol.iterator] = DefaultMap.prototype.entries;
264
-
265
- /**
266
- * Convenience known methods.
267
- */
268
- DefaultMap.prototype.inspect = function() {
269
- return this.items;
270
- };
271
-
272
- if (typeof Symbol !== 'undefined')
273
- DefaultMap.prototype[Symbol.for('nodejs.util.inspect.custom')] = DefaultMap.prototype.inspect;
274
-
275
- /**
276
- * Typical factories.
277
- */
278
- DefaultMap.autoIncrement = function() {
279
- var i = 0;
280
-
281
- return function() {
282
- return i++;
283
- };
284
- };
285
-
286
- /**
287
- * Exporting.
288
- */
289
- defaultMap = DefaultMap;
290
- return defaultMap;
291
- }
292
-
293
- var defaultMapExports = /*@__PURE__*/ requireDefaultMap();
294
- const DefaultMap = /*@__PURE__*/getDefaultExportFromCjs(defaultMapExports);
295
-
296
112
  /**
297
113
  * Obliterator Iterator Class
298
114
  * ===========================
@@ -1003,249 +819,6 @@ function commonHead(sources, targets, equals) {
1003
819
  );
1004
820
  }
1005
821
 
1006
- var naturalCompareLite = {exports: {}};
1007
-
1008
- var hasRequiredNaturalCompareLite;
1009
-
1010
- function requireNaturalCompareLite () {
1011
- if (hasRequiredNaturalCompareLite) return naturalCompareLite.exports;
1012
- hasRequiredNaturalCompareLite = 1;
1013
- /*
1014
- * @version 1.4.0
1015
- * @date 2015-10-26
1016
- * @stability 3 - Stable
1017
- * @author Lauri Rooden (https://github.com/litejs/natural-compare-lite)
1018
- * @license MIT License
1019
- */
1020
-
1021
-
1022
- var naturalCompare = function(a, b) {
1023
- var i, codeA
1024
- , codeB = 1
1025
- , posA = 0
1026
- , posB = 0
1027
- , alphabet = String.alphabet;
1028
-
1029
- function getCode(str, pos, code) {
1030
- if (code) {
1031
- for (i = pos; code = getCode(str, i), code < 76 && code > 65;) ++i;
1032
- return +str.slice(pos - 1, i)
1033
- }
1034
- code = alphabet && alphabet.indexOf(str.charAt(pos));
1035
- return code > -1 ? code + 76 : ((code = str.charCodeAt(pos) || 0), code < 45 || code > 127) ? code
1036
- : code < 46 ? 65 // -
1037
- : code < 48 ? code - 1
1038
- : code < 58 ? code + 18 // 0-9
1039
- : code < 65 ? code - 11
1040
- : code < 91 ? code + 11 // A-Z
1041
- : code < 97 ? code - 37
1042
- : code < 123 ? code + 5 // a-z
1043
- : code - 63
1044
- }
1045
-
1046
-
1047
- if ((a+="") != (b+="")) for (;codeB;) {
1048
- codeA = getCode(a, posA++);
1049
- codeB = getCode(b, posB++);
1050
-
1051
- if (codeA < 76 && codeB < 76 && codeA > 66 && codeB > 66) {
1052
- codeA = getCode(a, posA, posA);
1053
- codeB = getCode(b, posB, posA = i);
1054
- posB = i;
1055
- }
1056
-
1057
- if (codeA != codeB) return (codeA < codeB) ? -1 : 1
1058
- }
1059
- return 0
1060
- };
1061
-
1062
- try {
1063
- naturalCompareLite.exports = naturalCompare;
1064
- } catch (e) {
1065
- String.naturalCompare = naturalCompare;
1066
- }
1067
- return naturalCompareLite.exports;
1068
- }
1069
-
1070
- var naturalCompareLiteExports = requireNaturalCompareLite();
1071
- const compare = /*@__PURE__*/getDefaultExportFromCjs(naturalCompareLiteExports);
1072
-
1073
- function compareNatural(a, b) {
1074
- if (a === b) return 0;
1075
- if (t$1(a)) {
1076
- if (t$1(b)) {
1077
- return compare(a, b);
1078
- }
1079
- return 1;
1080
- }
1081
- return t$1(b) ? -1 : 0;
1082
- }
1083
-
1084
- function isString(value) {
1085
- return value != null && typeof value === "string";
1086
- }
1087
- function isNonEmptyArray(arr) {
1088
- return !!arr && Array.isArray(arr) && arr.length > 0;
1089
- }
1090
-
1091
- function parentFqn(fqn) {
1092
- const lastDot = fqn.lastIndexOf(".");
1093
- if (lastDot > 0) {
1094
- return fqn.slice(0, lastDot);
1095
- }
1096
- return null;
1097
- }
1098
- function nameFromFqn(fqn) {
1099
- const lastDot = fqn.lastIndexOf(".");
1100
- if (lastDot > 0) {
1101
- return fqn.slice(lastDot + 1);
1102
- } else {
1103
- return fqn;
1104
- }
1105
- }
1106
- const asString = (e) => isString(e) ? e : e.id;
1107
- function isAncestor(arg1, arg2) {
1108
- const arg1Id = asString(arg1);
1109
- if (arg2) {
1110
- const arg2Id = asString(arg2);
1111
- return arg2Id.startsWith(arg1Id + ".");
1112
- }
1113
- return (ancestor) => {
1114
- const ancestorId = asString(ancestor);
1115
- return arg1Id.startsWith(ancestorId + ".");
1116
- };
1117
- }
1118
- function isSameHierarchy(one, another) {
1119
- if (!another) {
1120
- return (b) => isSameHierarchy(one, b);
1121
- }
1122
- const first = asString(one);
1123
- const second = asString(another);
1124
- return first === second || second.startsWith(first + ".") || first.startsWith(second + ".");
1125
- }
1126
- function isDescendantOf(descedant, ancestor) {
1127
- if (!ancestor) {
1128
- return (d) => isAncestor(descedant, d);
1129
- }
1130
- return isAncestor(ancestor, descedant);
1131
- }
1132
- function hierarchyLevel(elementOfFqn) {
1133
- const first = isString(elementOfFqn) ? elementOfFqn : elementOfFqn.id;
1134
- return first.split(".").length;
1135
- }
1136
- function hierarchyDistance(one, another) {
1137
- const first = isString(one) ? one : one.id;
1138
- const second = isString(another) ? another : another.id;
1139
- if (first === second) {
1140
- return 0;
1141
- }
1142
- const firstDepth = hierarchyLevel(first);
1143
- const secondDepth = hierarchyLevel(second);
1144
- if (isSameHierarchy(first, second)) {
1145
- return Math.abs(firstDepth - secondDepth);
1146
- }
1147
- const ancestor = commonAncestor(first, second);
1148
- const ancestorDepth = ancestor ? hierarchyLevel(ancestor) : 0;
1149
- return firstDepth + secondDepth - (2 * ancestorDepth + 1);
1150
- }
1151
- function commonAncestor(first, second) {
1152
- const a = first.split(".");
1153
- if (a.length < 2) {
1154
- return null;
1155
- }
1156
- const b = second.split(".");
1157
- if (b.length < 2) {
1158
- return null;
1159
- }
1160
- let ancestor = [];
1161
- for (let i = 0; i < Math.min(a.length, b.length) - 1 && a[i] === b[i]; i++) {
1162
- ancestor.push(a[i]);
1163
- }
1164
- if (ancestor.length === 0) {
1165
- return null;
1166
- }
1167
- return ancestor.join(".");
1168
- }
1169
- function ancestorsFqn(fqn) {
1170
- const path = fqn.split(".");
1171
- path.pop();
1172
- if (path.length === 0) {
1173
- return [];
1174
- }
1175
- return path.reduce((acc, part, idx) => {
1176
- if (idx === 0) {
1177
- acc.push(part);
1178
- return acc;
1179
- }
1180
- acc.unshift(`${acc[0]}.${part}`);
1181
- return acc;
1182
- }, []);
1183
- }
1184
- function compareFqnHierarchically(a, b) {
1185
- const depthA = a.split(".").length;
1186
- const depthB = b.split(".").length;
1187
- switch (true) {
1188
- case depthA > depthB: {
1189
- return 1;
1190
- }
1191
- case depthA < depthB: {
1192
- return -1;
1193
- }
1194
- default: {
1195
- return 0;
1196
- }
1197
- }
1198
- }
1199
- function compareByFqnHierarchically(a, b) {
1200
- return compareFqnHierarchically(a.id, b.id);
1201
- }
1202
- function sortByFqnHierarchically(array) {
1203
- return array.map((item) => ({ item, fqn: item.id.split(".") })).sort((a, b) => {
1204
- return a.fqn.length - b.fqn.length;
1205
- }).map(({ item }) => item);
1206
- }
1207
- function findTopAncestor(items, item) {
1208
- let parent = item;
1209
- for (const e of items) {
1210
- if (isAncestor(e, parent)) {
1211
- parent = e;
1212
- }
1213
- }
1214
- return parent !== item ? parent : null;
1215
- }
1216
- function sortParentsFirst(array) {
1217
- const result = [];
1218
- const items = [...array];
1219
- let item;
1220
- while (item = items.shift()) {
1221
- let parent;
1222
- while (parent = findTopAncestor(items, item)) {
1223
- result.push(items.splice(items.indexOf(parent), 1)[0]);
1224
- }
1225
- result.push(item);
1226
- }
1227
- return result;
1228
- }
1229
- function sortNaturalByFqn(array, sort) {
1230
- if (!array || isString(array)) {
1231
- const dir2 = array ?? "asc";
1232
- return (arr) => sortNaturalByFqn(arr, dir2);
1233
- }
1234
- const dir = sort === "desc" ? -1 : 1;
1235
- return array.map((item) => ({ item, fqn: item.id.split(".") })).sort((a, b) => {
1236
- if (a.fqn.length !== b.fqn.length) {
1237
- return (a.fqn.length - b.fqn.length) * dir;
1238
- }
1239
- for (let i = 0; i < a.fqn.length; i++) {
1240
- const compare = compareNatural(a.fqn[i], b.fqn[i]);
1241
- if (compare !== 0) {
1242
- return compare;
1243
- }
1244
- }
1245
- return 0;
1246
- }).map(({ item }) => item);
1247
- }
1248
-
1249
822
  function getOrCreate(map, key, create) {
1250
823
  let entry = map.get(key);
1251
824
  if (!entry) {
@@ -1259,23 +832,6 @@ function isIterable(something) {
1259
832
  return l(something) && typeof something === "object" && Symbol.iterator in something;
1260
833
  }
1261
834
 
1262
- function ifilter(arg1, arg2) {
1263
- const pred = arg2 ?? arg1;
1264
- invariant(t(pred));
1265
- function* _filter(iter) {
1266
- for (const value of iter) {
1267
- if (pred(value)) {
1268
- yield value;
1269
- }
1270
- }
1271
- return;
1272
- }
1273
- if (!arg2) {
1274
- return _filter;
1275
- }
1276
- return _filter(arg1);
1277
- }
1278
-
1279
835
  function ifind(arg1, arg2) {
1280
836
  const pred = arg2 ?? arg1;
1281
837
  invariant(t(pred));
@@ -1303,21 +859,6 @@ function* _iflat(iterable) {
1303
859
  return;
1304
860
  }
1305
861
 
1306
- function imap(arg1, arg2) {
1307
- const mapper = arg2 ?? arg1;
1308
- invariant(t(mapper));
1309
- function* _map(iter) {
1310
- for (const value of iter) {
1311
- yield mapper(value);
1312
- }
1313
- return;
1314
- }
1315
- if (!arg2) {
1316
- return _map;
1317
- }
1318
- return _map(arg1);
1319
- }
1320
-
1321
862
  function isome(arg1, arg2) {
1322
863
  const pred = arg2 ?? arg1;
1323
864
  invariant(t(pred));
@@ -1335,19 +876,6 @@ function isome(arg1, arg2) {
1335
876
  return _some(arg1);
1336
877
  }
1337
878
 
1338
- function toArray(iterable) {
1339
- if (iterable) {
1340
- return Array.from(iterable);
1341
- }
1342
- return (it) => Array.from(it);
1343
- }
1344
- function toSet(iterable) {
1345
- if (iterable) {
1346
- return new Set(iterable);
1347
- }
1348
- return (it) => new Set(it);
1349
- }
1350
-
1351
879
  function iunique(iterable) {
1352
880
  return iterable ? _iunique(iterable) : _iunique;
1353
881
  }
@@ -1451,6 +979,17 @@ function requireObject_hash () {
1451
979
  }
1452
980
 
1453
981
  var object_hashExports = requireObject_hash();
1454
- const objectHash = /*@__PURE__*/getDefaultExportFromCjs(object_hashExports);
982
+ const objecthash = /*@__PURE__*/getDefaultExportFromCjs(object_hashExports);
983
+
984
+ function objectHash(value) {
985
+ invariant(
986
+ typeof value === "object" && l(value),
987
+ "objectHash: value must be an object"
988
+ );
989
+ return objecthash(value, {
990
+ ignoreUnknown: true,
991
+ respectType: false
992
+ });
993
+ }
1455
994
 
1456
- export { ifilter as A, iflat as B, imap as C, DefaultMap as D, isIterable as E, isome as F, iunique as G, toArray as H, difference as I, equals as J, intersection as K, symmetricDifference as L, union as M, stringHash as N, objectHash as O, C as P, s as Q, a as R, Stack as S, getDefaultExportFromCjs as T, requireForeach as U, requireIterator as V, u as W, d as X, n as Y, hasIntersection as Z, i$1 as a, t$1 as b, isSameHierarchy as c, t as d, commonHead as e, compareNatural as f, ancestorsFqn as g, commonAncestor as h, ifind as i, compareByFqnHierarchically as j, compareFqnHierarchically as k, l, m, nameFromFqn as n, hierarchyDistance as o, parentFqn as p, hierarchyLevel as q, isAncestor as r, isDescendantOf as s, toSet as t, sortByFqnHierarchically as u, sortNaturalByFqn as v, sortParentsFirst as w, getOrCreate as x, isNonEmptyArray as y, isString as z };
995
+ export { Stack as S, ifind as a, iflat as b, commonHead as c, isIterable as d, isome as e, iunique as f, getOrCreate as g, difference as h, i$1 as i, equals as j, intersection as k, l, m, stringHash as n, objectHash as o, requireIterator as p, u as q, requireForeach as r, symmetricDifference as s, d as t, union as u, n as v, hasIntersection as w };
@@ -0,0 +1,5 @@
1
+ function u$1(o,n,a){let t=r=>o(r,...n);return a===void 0?t:Object.assign(t,{lazy:a,lazyArgs:n})}
2
+
3
+ function u(r,n,o){let a=r.length-n.length;if(a===0)return r(...n);if(a===1)return u$1(r,n,o);throw new Error("Wrong number of arguments")}
4
+
5
+ export { u };
@@ -1,4 +1,4 @@
1
- import { E as ElementModel, d as DeploymentElementModel, A as AnyAux, e as DeploymentNodeModel, D as DeployedInstanceModel, j as RelationshipsAccum, R as RelationshipModel, f as DeploymentRelationModel } from './core.Brmu7VBL.mjs';
1
+ import { E as ElementModel, d as DeploymentElementModel, A as AnyAux, e as DeploymentNodeModel, D as DeployedInstanceModel, j as RelationshipsAccum, R as RelationshipModel, f as DeploymentRelationModel } from './core.CtloVwbo.mjs';
2
2
  import { F as Fqn, a as IteratorLike } from './core.30yYKXcZ.mjs';
3
3
 
4
4
  interface Connection<Elem = ElementModel | DeploymentElementModel, Id = string> {
@@ -1,6 +1,8 @@
1
- import { D as DefaultElementShape, c as DefaultThemeColor, h as DefaultShapeSize, ab as o$8, t as isElementWhere, Q as whereOperatorAsPredicate, G as isWildcard, q as isElementKindExpr, s as isElementTagExpr, n as n$4, u as isExpandedElementExpr, r as isElementRef, l as isCustomElement, a9 as isViewRuleStyle, ac as y$2, V as ComputedNode, E as ElementKind, S as DefaultArrowType, I as FqnExpr, R as RelationExpr, o as o$9, a8 as isViewRulePredicate, a4 as isViewRuleAutoLayout, a7 as isViewRuleGroup, a5 as isViewRuleGlobalPredicateRef, a6 as isViewRuleGlobalStyle, aa as stepEdgeId, a2 as isDynamicViewParallelSteps, T as DefaultLineStyle, U as DefaultRelationshipColor, x as isOutgoing$1, v as isIncoming$1, w as isInOut, y as isRelation, F as isRelationWhere, m as isCustomRelationExpr, C as isRelationPredicateExpr, b as isElementPredicateExpr, a as isElementView, a1 as isDynamicView, a0 as isDeploymentView, d as DeploymentElement, Y as extractStep, a3 as isStepEdgeId, e as isScopedElementView } from './core.yND74qFI.mjs';
2
- import { P as C, Q as s$1, R as a$5, q as hierarchyLevel, r as isAncestor, h as commonAncestor, v as sortNaturalByFqn, m as m$3, e as commonHead, T as getDefaultExportFromCjs, U as requireForeach, V as requireIterator, W as u$7, O as objectHash, K as intersection, I as difference, M as union, N as stringHash, J as equals, s as isDescendantOf, z as isString, c as isSameHierarchy, F as isome, A as ifilter, E as isIterable, t as toSet, w as sortParentsFirst, H as toArray, D as DefaultMap, C as imap, a as i$9, X as d$6, p as parentFqn, Y as n$5, j as compareByFqnHierarchically, y as isNonEmptyArray, f as compareNatural, n as nameFromFqn, b as t$6, l as l$7, Z as hasIntersection, u as sortByFqnHierarchically, g as ancestorsFqn, S as Stack, G as iunique, B as iflat, x as getOrCreate, i as ifind } from './core.BqezHsjR.mjs';
3
- import { u as u$6, a as nonNullable, i as invariant, n as nonexhaustive } from './core.DRxv3HIl.mjs';
1
+ import { D as DefaultElementShape, c as DefaultThemeColor, h as DefaultShapeSize, ab as o$8, t as isElementWhere, Q as whereOperatorAsPredicate, G as isWildcard, q as isElementKindExpr, s as isElementTagExpr, n as n$4, u as isExpandedElementExpr, r as isElementRef, l as isCustomElement, a9 as isViewRuleStyle, ac as y$2, V as ComputedNode, E as ElementKind, S as DefaultArrowType, I as FqnExpr, R as RelationExpr, o as o$9, a8 as isViewRulePredicate, a4 as isViewRuleAutoLayout, a7 as isViewRuleGroup, a5 as isViewRuleGlobalPredicateRef, a6 as isViewRuleGlobalStyle, aa as stepEdgeId, a2 as isDynamicViewParallelSteps, T as DefaultLineStyle, U as DefaultRelationshipColor, x as isOutgoing$1, v as isIncoming$1, w as isInOut, y as isRelation, F as isRelationWhere, m as isCustomRelationExpr, C as isRelationPredicateExpr, b as isElementPredicateExpr, a as isElementView, a1 as isDynamicView, a0 as isDeploymentView, d as DeploymentElement, Y as extractStep, a3 as isStepEdgeId, e as isScopedElementView } from './core.BMep80lJ.mjs';
2
+ import { C, y as s$1, z as a$5, u as hierarchyLevel, a as isAncestor, m as commonAncestor, w as sortNaturalByFqn, j as getDefaultExportFromCjs, i as isDescendantOf, x as isString, g as isSameHierarchy, c as ifilter, t as toSet, s as sortParentsFirst, b as toArray, D as DefaultMap, d as imap, p as parentFqn, o as compareByFqnHierarchically, e as isNonEmptyArray, k as compareNatural, n as nameFromFqn, f as t$6, v as sortByFqnHierarchically, l as ancestorsFqn } from './core.CQXU9DF7.mjs';
3
+ import { u as u$6 } from './core.DbRvwARP.mjs';
4
+ import { n as nonNullable, i as invariant, a as nonexhaustive } from './core.C-YXI-43.mjs';
5
+ import { m as m$3, c as commonHead, r as requireForeach, p as requireIterator, q as u$7, o as objectHash, k as intersection, h as difference, u as union, n as stringHash, j as equals, e as isome, d as isIterable, i as i$9, t as d$6, v as n$5, l as l$7, w as hasIntersection, S as Stack, f as iunique, b as iflat, g as getOrCreate, a as ifind } from './core.Cu-UdkSl.mjs';
4
6
 
5
7
  function y$1(t,i){let a=i.length-t.length;if(a===1){let[n,...r]=i;return C(n,{lazy:t,lazyArgs:r})}if(a===0){let n={lazy:t,lazyArgs:i};return Object.assign(e=>C(e,n),n)}throw new Error("Wrong number of arguments")}
6
8
 
@@ -50,7 +52,7 @@ function n(e){return e===void 0?true:typeof e=="string"||Array.isArray(e)?e.leng
50
52
 
51
53
  function e(o){return typeof o=="boolean"}
52
54
 
53
- function i$2(...e){return u$6(p,e)}var p=(e,a)=>{let n={};for(let[d,t]of e.entries()){let y=a(t,d,e);if(y!==void 0){let{[y]:r}=n;r===void 0&&(r=[],n[y]=r),r.push(t);}}return n};
55
+ function i$2(...e){return u$6(p,e)}var p=(e,a)=>{let n=new Map;for(let[d,t]of e.entries()){let y=a(t,d,e);if(y!==void 0){let r=n.get(y);r===void 0&&(r=[],n.set(y,r)),r.push(t);}}return Object.fromEntries(n)};
54
56
 
55
57
  function k(...n){return u$6(u$2,n)}function u$2(n,e){if(n===e||Object.is(n,e))return true;if(typeof n!="object"||typeof e!="object"||n===null||e===null||Object.getPrototypeOf(n)!==Object.getPrototypeOf(e))return false;if(Array.isArray(n))return l$2(n,e);if(n instanceof Map)return a$1(n,e);if(n instanceof Set)return c(n,e);if(n instanceof Date)return n.getTime()===e.getTime();if(n instanceof RegExp)return n.toString()===e.toString();if(Object.keys(n).length!==Object.keys(e).length)return false;for(let[r,t]of Object.entries(n))if(!(r in e)||!u$2(t,e[r]))return false;return true}function l$2(n,e){if(n.length!==e.length)return false;for(let[r,t]of n.entries())if(!u$2(t,e[r]))return false;return true}function a$1(n,e){if(n.size!==e.size)return false;for(let[r,t]of n.entries())if(!e.has(r)||!u$2(t,e.get(r)))return false;return true}function c(n,e){if(n.size!==e.size)return false;let r=[...e];for(let t of n){let o=false;for(let[s,f]of r.entries())if(u$2(t,f)){o=true,r.splice(s,1);break}if(!o)return false}return true}
56
58
 
@@ -75,9 +77,11 @@ class ElementModel {
75
77
  this.$model = $model;
76
78
  this.$element = $element;
77
79
  this.id = this.$element.id;
80
+ this._literalId = this.$element.id;
78
81
  this.hierarchyLevel = hierarchyLevel(this.id);
79
82
  }
80
83
  id;
84
+ _literalId;
81
85
  hierarchyLevel;
82
86
  get parent() {
83
87
  return this.$model.parent(this);
@@ -1470,10 +1474,7 @@ function calcViewLayoutHash(view) {
1470
1474
  l$3(({ source, target, ...edge }) => [`${source}:${target}`, edge])
1471
1475
  )
1472
1476
  };
1473
- view.hash = objectHash(tohash, {
1474
- ignoreUnknown: true,
1475
- respectType: false
1476
- });
1477
+ view.hash = objectHash(tohash);
1477
1478
  return view;
1478
1479
  }
1479
1480
 
@@ -4653,11 +4654,8 @@ class DynamicViewCompute {
4653
4654
  relations,
4654
4655
  tags,
4655
4656
  navigateTo: derivedNavigateTo,
4656
- head,
4657
- tail,
4658
4657
  color,
4659
- line,
4660
- notation
4658
+ line
4661
4659
  } = this.findRelations(source, target);
4662
4660
  const navigateTo = n$2(stepNavigateTo) && stepNavigateTo !== this.view.id ? stepNavigateTo : derivedNavigateTo;
4663
4661
  this.steps.push({
@@ -4670,11 +4668,8 @@ class DynamicViewCompute {
4670
4668
  isBackward: isBackward ?? false,
4671
4669
  ...navigateTo ? { navigateTo } : {},
4672
4670
  ...tags ? { tags } : {},
4673
- ...head ? { head } : {},
4674
- ...tail ? { tail } : {},
4675
4671
  ...color ? { color } : {},
4676
- ...line ? { line } : {},
4677
- ...notation ? { notation } : {}
4672
+ ...line ? { line } : {}
4678
4673
  });
4679
4674
  }
4680
4675
  compute() {
@@ -4793,11 +4788,8 @@ class DynamicViewCompute {
4793
4788
  tags: null,
4794
4789
  relations: null,
4795
4790
  navigateTo: null,
4796
- tail: null,
4797
- head: null,
4798
4791
  color: null,
4799
- line: null,
4800
- notation: null
4792
+ line: null
4801
4793
  };
4802
4794
  }
4803
4795
  const alltags = C(
@@ -4822,17 +4814,12 @@ class DynamicViewCompute {
4822
4814
  relationships,
4823
4815
  l$5((acc, { title, $relationship: r }) => {
4824
4816
  n$2(title) && acc.title.add(title);
4825
- n$2(r.tail) && acc.tail.add(r.tail);
4826
- n$2(r.head) && acc.head.add(r.head);
4827
4817
  n$2(r.color) && acc.color.add(r.color);
4828
4818
  n$2(r.line) && acc.line.add(r.line);
4829
4819
  return acc;
4830
4820
  }, {
4831
- tail: /* @__PURE__ */ new Set(),
4832
- head: /* @__PURE__ */ new Set(),
4833
4821
  color: /* @__PURE__ */ new Set(),
4834
4822
  line: /* @__PURE__ */ new Set(),
4835
- notation: /* @__PURE__ */ new Set(),
4836
4823
  title: /* @__PURE__ */ new Set()
4837
4824
  })
4838
4825
  );
@@ -4841,11 +4828,8 @@ class DynamicViewCompute {
4841
4828
  relations,
4842
4829
  navigateTo: navigateTo ?? null,
4843
4830
  title: t$2([...commonProperties.title]) ?? null,
4844
- tail: t$2([...commonProperties.tail]) ?? null,
4845
- head: t$2([...commonProperties.head]) ?? null,
4846
4831
  color: t$2([...commonProperties.color]) ?? null,
4847
- line: t$2([...commonProperties.line]) ?? null,
4848
- notation: t$2([...commonProperties.notation]) ?? null
4832
+ line: t$2([...commonProperties.line]) ?? null
4849
4833
  };
4850
4834
  }
4851
4835
  }
@@ -6849,6 +6833,9 @@ class NodeModel {
6849
6833
  get navigateTo() {
6850
6834
  return this.$node.navigateTo ? this.$view.$model.view(this.$node.navigateTo) : null;
6851
6835
  }
6836
+ get style() {
6837
+ return this.$node.style;
6838
+ }
6852
6839
  /**
6853
6840
  * Get all ancestor elements (i.e. parent, parent’s parent, etc.)
6854
6841
  * (from closest to root)
@@ -7476,4 +7463,4 @@ class LikeC4Model {
7476
7463
  });
7477
7464
  })(LikeC4Model || (LikeC4Model = {}));
7478
7465
 
7479
- export { isNestedConnection as A, isOutgoing as B, Connection as C, DeployedInstanceModel as D, EdgeModel as E, mergeConnections as F, Graph as G, find$1 as H, sortConnectionsByBoundaryHierarchy as I, sortDeepestFirst as J, isDeployedInstance as K, LikeC4Model as L, isDeploymentNode as M, NodeModel as N, RelationshipModel as R, computeViews as a, ConnectionModel as b, computeView as c, d$2 as d, DeploymentConnectionModel as e, DeploymentNodeModel as f, DeploymentRelationModel as g, ElementModel as h, i$3 as i, LikeC4DeploymentModel as j, LikeC4ViewModel as k, l$3 as l, find as m, differenceConnections as n, findAscendingConnections as o, findDeepestNestedConnection as p, findDescendantConnections as q, r$3 as r, hasSameSource as s, topologicalSortExports as t, unsafeComputeView as u, hasSameSourceTarget as v, willCreateCycle as w, hasSameTarget as x, isAnyInOut as y, isIncoming as z };
7466
+ export { isIncoming as A, isNestedConnection as B, Connection as C, DeployedInstanceModel as D, EdgeModel as E, isOutgoing as F, Graph as G, mergeConnections as H, find$1 as I, sortConnectionsByBoundaryHierarchy as J, sortDeepestFirst as K, LikeC4Model as L, isDeployedInstance as M, NodeModel as N, isDeploymentNode as O, RelationshipModel as R, i$3 as a, computeViews as b, computeView as c, d$2 as d, ConnectionModel as e, DeploymentConnectionModel as f, DeploymentNodeModel as g, DeploymentRelationModel as h, i$8 as i, ElementModel as j, LikeC4DeploymentModel as k, l$3 as l, LikeC4ViewModel as m, find as n, differenceConnections as o, findAscendingConnections as p, findDeepestNestedConnection as q, r$3 as r, findDescendantConnections as s, topologicalSortExports as t, unsafeComputeView as u, hasSameSource as v, willCreateCycle as w, hasSameSourceTarget as x, hasSameTarget as y, isAnyInOut as z };