@likec4/language-server 1.42.0 → 1.43.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.
@@ -5,6 +5,21 @@ import {
5
5
  } from "remeda";
6
6
  export class MergedExtends {
7
7
  mergedData = /* @__PURE__ */ new Map();
8
+ mergeMetadata(existing, incoming) {
9
+ const result = { ...existing };
10
+ for (const [key, incomingValue] of Object.entries(incoming)) {
11
+ const existingValue = result[key];
12
+ if (existingValue === void 0) {
13
+ result[key] = incomingValue;
14
+ continue;
15
+ }
16
+ const existingArray = Array.isArray(existingValue) ? existingValue : [existingValue];
17
+ const incomingArray = Array.isArray(incomingValue) ? incomingValue : [incomingValue];
18
+ const merged = unique([...existingArray, ...incomingArray]);
19
+ result[key] = merged.length === 1 ? merged[0] : merged;
20
+ }
21
+ return result;
22
+ }
8
23
  merge(parsedExtends) {
9
24
  for (const parsedExtend of parsedExtends) {
10
25
  const { id, links, tags, metadata } = parsedExtend;
@@ -23,10 +38,7 @@ export class MergedExtends {
23
38
  ]);
24
39
  }
25
40
  if (metadata) {
26
- existing.metadata = {
27
- ...existing.metadata,
28
- ...metadata
29
- };
41
+ existing.metadata = this.mergeMetadata(existing.metadata, metadata);
30
42
  }
31
43
  this.mergedData.set(id, existing);
32
44
  }
@@ -52,10 +64,7 @@ export class MergedExtends {
52
64
  }
53
65
  let metadata = extendData.metadata;
54
66
  if (el.metadata) {
55
- metadata = {
56
- ...el.metadata,
57
- ...extendData.metadata
58
- };
67
+ metadata = this.mergeMetadata(el.metadata, extendData.metadata);
59
68
  }
60
69
  return {
61
70
  ...el,
@@ -65,7 +65,7 @@ declare const DocumentParserFromMixins: {
65
65
  resolveFqn(node: import("../generated/ast").FqnReferenceable): ProjectId;
66
66
  getAstNodePath(node: ProjectId): any;
67
67
  getMetadata(metadataAstNode: import("../generated/ast").MetadataProperty | undefined): {
68
- [key: string]: string;
68
+ [key: string]: string | string[];
69
69
  } | undefined;
70
70
  parseMarkdownOrString(markdownOrString: import("../generated/ast").MarkdownOrString | undefined): ProjectId | undefined;
71
71
  convertTags<E extends {
@@ -164,7 +164,7 @@ declare const DocumentParserFromMixins: {
164
164
  resolveFqn(node: import("../generated/ast").FqnReferenceable): ProjectId;
165
165
  getAstNodePath(node: ProjectId): any;
166
166
  getMetadata(metadataAstNode: import("../generated/ast").MetadataProperty | undefined): {
167
- [key: string]: string;
167
+ [key: string]: string | string[];
168
168
  } | undefined;
169
169
  parseMarkdownOrString(markdownOrString: import("../generated/ast").MarkdownOrString | undefined): ProjectId | undefined;
170
170
  convertTags<E extends {
@@ -219,7 +219,7 @@ declare const DocumentParserFromMixins: {
219
219
  resolveFqn(node: import("../generated/ast").FqnReferenceable): ProjectId;
220
220
  getAstNodePath(node: ProjectId): any;
221
221
  getMetadata(metadataAstNode: import("../generated/ast").MetadataProperty | undefined): {
222
- [key: string]: string;
222
+ [key: string]: string | string[];
223
223
  } | undefined;
224
224
  parseMarkdownOrString(markdownOrString: import("../generated/ast").MarkdownOrString | undefined): ProjectId | undefined;
225
225
  convertTags<E extends {
@@ -289,7 +289,7 @@ declare const DocumentParserFromMixins: {
289
289
  resolveFqn(node: import("../generated/ast").FqnReferenceable): ProjectId;
290
290
  getAstNodePath(node: ProjectId): any;
291
291
  getMetadata(metadataAstNode: import("../generated/ast").MetadataProperty | undefined): {
292
- [key: string]: string;
292
+ [key: string]: string | string[];
293
293
  } | undefined;
294
294
  parseMarkdownOrString(markdownOrString: import("../generated/ast").MarkdownOrString | undefined): ProjectId | undefined;
295
295
  convertTags<E extends {
@@ -352,7 +352,7 @@ declare const DocumentParserFromMixins: {
352
352
  resolveFqn(node: import("../generated/ast").FqnReferenceable): ProjectId;
353
353
  getAstNodePath(node: ProjectId): any;
354
354
  getMetadata(metadataAstNode: import("../generated/ast").MetadataProperty | undefined): {
355
- [key: string]: string;
355
+ [key: string]: string | string[];
356
356
  } | undefined;
357
357
  parseMarkdownOrString(markdownOrString: import("../generated/ast").MarkdownOrString | undefined): ProjectId | undefined;
358
358
  convertTags<E extends {
@@ -423,7 +423,7 @@ declare const DocumentParserFromMixins: {
423
423
  resolveFqn(node: import("../generated/ast").FqnReferenceable): ProjectId;
424
424
  getAstNodePath(node: ProjectId): any;
425
425
  getMetadata(metadataAstNode: import("../generated/ast").MetadataProperty | undefined): {
426
- [key: string]: string;
426
+ [key: string]: string | string[];
427
427
  } | undefined;
428
428
  parseMarkdownOrString(markdownOrString: import("../generated/ast").MarkdownOrString | undefined): ProjectId | undefined;
429
429
  convertTags<E extends {
@@ -487,7 +487,7 @@ declare const DocumentParserFromMixins: {
487
487
  resolveFqn(node: import("../generated/ast").FqnReferenceable): ProjectId;
488
488
  getAstNodePath(node: ProjectId): any;
489
489
  getMetadata(metadataAstNode: import("../generated/ast").MetadataProperty | undefined): {
490
- [key: string]: string;
490
+ [key: string]: string | string[];
491
491
  } | undefined;
492
492
  parseMarkdownOrString(markdownOrString: import("../generated/ast").MarkdownOrString | undefined): ProjectId | undefined;
493
493
  convertTags<E extends {
@@ -530,7 +530,7 @@ declare const DocumentParserFromMixins: {
530
530
  resolveFqn(node: import("../generated/ast").FqnReferenceable): ProjectId;
531
531
  getAstNodePath(node: ProjectId): any;
532
532
  getMetadata(metadataAstNode: import("../generated/ast").MetadataProperty | undefined): {
533
- [key: string]: string;
533
+ [key: string]: string | string[];
534
534
  } | undefined;
535
535
  parseMarkdownOrString(markdownOrString: import("../generated/ast").MarkdownOrString | undefined): ProjectId | undefined;
536
536
  convertTags<E extends {
@@ -589,7 +589,7 @@ declare const DocumentParserFromMixins: {
589
589
  resolveFqn(node: import("../generated/ast").FqnReferenceable): ProjectId;
590
590
  getAstNodePath(node: ProjectId): any;
591
591
  getMetadata(metadataAstNode: import("../generated/ast").MetadataProperty | undefined): {
592
- [key: string]: string;
592
+ [key: string]: string | string[];
593
593
  } | undefined;
594
594
  parseMarkdownOrString(markdownOrString: import("../generated/ast").MarkdownOrString | undefined): ProjectId | undefined;
595
595
  convertTags<E extends {
@@ -27,7 +27,7 @@ export declare class BaseParser {
27
27
  resolveFqn(node: ast.FqnReferenceable): c4.Fqn;
28
28
  getAstNodePath(node: AstNode): any;
29
29
  getMetadata(metadataAstNode: ast.MetadataProperty | undefined): {
30
- [key: string]: string;
30
+ [key: string]: string | string[];
31
31
  } | undefined;
32
32
  parseMarkdownOrString(markdownOrString: ast.MarkdownOrString | undefined): c4.MarkdownOrString | undefined;
33
33
  convertTags<E extends {
@@ -8,14 +8,14 @@ import {
8
8
  import {
9
9
  filter,
10
10
  flatMap,
11
- fromEntries,
11
+ groupBy,
12
12
  isArray,
13
13
  isBoolean,
14
14
  isEmpty,
15
15
  isNumber,
16
16
  isString,
17
17
  isTruthy,
18
- map,
18
+ mapValues,
19
19
  pipe,
20
20
  unique
21
21
  } from "remeda";
@@ -107,13 +107,47 @@ export class BaseParser {
107
107
  if (!metadataAstNode || !this.isValid(metadataAstNode) || isEmpty(metadataAstNode.props)) {
108
108
  return void 0;
109
109
  }
110
- const data = pipe(
110
+ const extractValues = (value) => {
111
+ if (ast.isMarkdownOrString(value)) {
112
+ const mdOrStr = removeIndent(value);
113
+ if (!mdOrStr) return [];
114
+ if (typeof mdOrStr === "string") {
115
+ return isTruthy(mdOrStr) ? [mdOrStr] : [];
116
+ } else {
117
+ const strValue = mdOrStr.md || mdOrStr.txt;
118
+ return isTruthy(strValue) ? [strValue] : [];
119
+ }
120
+ } else if (ast.isMetadataArray(value)) {
121
+ return value.values.map((v) => removeIndent(v)).map((v) => {
122
+ if (typeof v === "string") {
123
+ return v;
124
+ } else {
125
+ return v.md || v.txt;
126
+ }
127
+ }).filter(isTruthy);
128
+ }
129
+ return [];
130
+ };
131
+ const keyValuePairs = pipe(
111
132
  metadataAstNode.props,
112
- map((p) => [p.key, removeIndent(p.value)]),
113
- map(([key, value]) => [key, value.md || value.txt]),
133
+ flatMap((p) => extractValues(p.value).map((v) => [p.key, v])),
114
134
  filter(([_, value]) => isTruthy(value))
115
135
  );
116
- return data.length > 0 ? fromEntries(data) : void 0;
136
+ if (isEmpty(keyValuePairs)) {
137
+ return void 0;
138
+ }
139
+ const groupedData = pipe(
140
+ keyValuePairs,
141
+ groupBy(([key]) => key),
142
+ mapValues((pairs) => pairs.map(([_, value]) => value))
143
+ );
144
+ const data = {};
145
+ for (const [key, values] of Object.entries(groupedData)) {
146
+ if (values && values.length > 0) {
147
+ data[key] = values.length === 1 ? values[0] : values;
148
+ }
149
+ }
150
+ return isEmpty(data) ? void 0 : data;
117
151
  }
118
152
  parseMarkdownOrString(markdownOrString) {
119
153
  if (ast.isMarkdownOrString(markdownOrString)) {
@@ -35,7 +35,7 @@ export declare function DeploymentModelParser<TBase extends WithExpressionV2>(B:
35
35
  resolveFqn(node: ast.FqnReferenceable): c4.Fqn;
36
36
  getAstNodePath(node: c4): any;
37
37
  getMetadata(metadataAstNode: ast.MetadataProperty | undefined): {
38
- [key: string]: string;
38
+ [key: string]: string | string[];
39
39
  } | undefined;
40
40
  parseMarkdownOrString(markdownOrString: ast.MarkdownOrString | undefined): c4.MarkdownOrString | undefined;
41
41
  convertTags<E extends {
@@ -33,7 +33,7 @@ export declare function DeploymentViewParser<TBase extends WithExpressionV2 & Wi
33
33
  resolveFqn(node: ast.FqnReferenceable): c4.Fqn;
34
34
  getAstNodePath(node: c4): any;
35
35
  getMetadata(metadataAstNode: ast.MetadataProperty | undefined): {
36
- [key: string]: string;
36
+ [key: string]: string | string[];
37
37
  } | undefined;
38
38
  parseMarkdownOrString(markdownOrString: ast.MarkdownOrString | undefined): c4.MarkdownOrString | undefined;
39
39
  convertTags<E extends {
@@ -30,7 +30,7 @@ export declare function ExpressionV2Parser<TBase extends Base>(B: TBase): {
30
30
  resolveFqn(node: ast.FqnReferenceable): c4.Fqn;
31
31
  getAstNodePath(node: AstNode): any;
32
32
  getMetadata(metadataAstNode: ast.MetadataProperty | undefined): {
33
- [key: string]: string;
33
+ [key: string]: string | string[];
34
34
  } | undefined;
35
35
  parseMarkdownOrString(markdownOrString: ast.MarkdownOrString | undefined): c4.MarkdownOrString | undefined;
36
36
  convertTags<E extends {
@@ -62,7 +62,7 @@ export declare function GlobalsParser<TBase extends WithViewsParser>(B: TBase):
62
62
  resolveFqn(node: ast.FqnReferenceable): c4.Fqn;
63
63
  getAstNodePath(node: c4): any;
64
64
  getMetadata(metadataAstNode: ast.MetadataProperty | undefined): {
65
- [key: string]: string;
65
+ [key: string]: string | string[];
66
66
  } | undefined;
67
67
  parseMarkdownOrString(markdownOrString: ast.MarkdownOrString | undefined): c4.MarkdownOrString | undefined;
68
68
  convertTags<E extends {
@@ -11,7 +11,7 @@ export declare function ImportsParser<TBase extends Base>(B: TBase): {
11
11
  resolveFqn(node: ast.FqnReferenceable): ProjectId;
12
12
  getAstNodePath(node: ProjectId): any;
13
13
  getMetadata(metadataAstNode: ast.MetadataProperty | undefined): {
14
- [key: string]: string;
14
+ [key: string]: string | string[];
15
15
  } | undefined;
16
16
  parseMarkdownOrString(markdownOrString: ast.MarkdownOrString | undefined): ProjectId | undefined;
17
17
  convertTags<E extends {
@@ -34,7 +34,7 @@ export declare function ModelParser<TBase extends WithExpressionV2>(B: TBase): {
34
34
  resolveFqn(node: ast.FqnReferenceable): c4.Fqn;
35
35
  getAstNodePath(node: c4): any;
36
36
  getMetadata(metadataAstNode: ast.MetadataProperty | undefined): {
37
- [key: string]: string;
37
+ [key: string]: string | string[];
38
38
  } | undefined;
39
39
  parseMarkdownOrString(markdownOrString: ast.MarkdownOrString | undefined): c4.MarkdownOrString | undefined;
40
40
  convertTags<E extends {
@@ -39,7 +39,7 @@ export declare function PredicatesParser<TBase extends WithExpressionV2>(B: TBas
39
39
  resolveFqn(node: ast.FqnReferenceable): c4.Fqn;
40
40
  getAstNodePath(node: c4): any;
41
41
  getMetadata(metadataAstNode: ast.MetadataProperty | undefined): {
42
- [key: string]: string;
42
+ [key: string]: string | string[];
43
43
  } | undefined;
44
44
  parseMarkdownOrString(markdownOrString: ast.MarkdownOrString | undefined): c4.MarkdownOrString | undefined;
45
45
  convertTags<E extends {
@@ -17,7 +17,7 @@ export declare function SpecificationParser<TBase extends Base>(B: TBase): {
17
17
  resolveFqn(node: ast.FqnReferenceable): c4.Fqn;
18
18
  getAstNodePath(node: c4): any;
19
19
  getMetadata(metadataAstNode: ast.MetadataProperty | undefined): {
20
- [key: string]: string;
20
+ [key: string]: string | string[];
21
21
  } | undefined;
22
22
  parseMarkdownOrString(markdownOrString: ast.MarkdownOrString | undefined): c4.MarkdownOrString | undefined;
23
23
  convertTags<E extends {
@@ -64,7 +64,7 @@ export declare function ViewsParser<TBase extends WithPredicates & WithDeploymen
64
64
  resolveFqn(node: ast.FqnReferenceable): c4.Fqn;
65
65
  getAstNodePath(node: c4): any;
66
66
  getMetadata(metadataAstNode: ast.MetadataProperty | undefined): {
67
- [key: string]: string;
67
+ [key: string]: string | string[];
68
68
  } | undefined;
69
69
  parseMarkdownOrString(markdownOrString: ast.MarkdownOrString | undefined): c4.MarkdownOrString | undefined;
70
70
  convertTags<E extends {
@@ -4,7 +4,7 @@ import type { LikeC4Services } from '../module';
4
4
  export { LikeC4DocumentValidator } from './DocumentValidator';
5
5
  type Guard<N extends AstNode> = (n: AstNode) => n is N;
6
6
  type Guarded<G> = G extends Guard<infer N> ? N : never;
7
- declare const isValidatableAstNode: (n: AstNode) => n is ast.HexColor | ast.RGBAColor | ast.DeployedInstance | ast.DeploymentNode | ast.DeploymentViewRulePredicate | ast.DeploymentViewRuleStyle | ast.ViewRuleAutoLayout | ast.DynamicViewDisplayVariantProperty | ast.LinkProperty | ast.ViewStringProperty | ast.DynamicViewGlobalPredicateRef | ast.DynamicViewIncludePredicate | ast.ViewRuleGlobalStyle | ast.ViewRuleStyle | ast.DynamicStepChain | ast.DynamicStepSingle | ast.ElementStringProperty | ast.ElementStyleProperty | ast.IconProperty | ast.MetadataBody | ast.ElementKindExpression | ast.ElementTagExpression | ast.FqnRefExpr | ast.WildcardExpression | ast.FqnExprWhere | ast.FqnExprWith | ast.DirectedRelationExpr | ast.InOutRelationExpr | ast.IncomingRelationExpr | ast.OutgoingRelationExpr | ast.RelationExprWhere | ast.RelationExprWith | ast.Element | ast.ExtendDeployment | ast.ExtendElement | ast.Imported | ast.DeploymentView | ast.DynamicView | ast.ElementView | ast.RelationStringProperty | ast.ArrowProperty | ast.ColorProperty | ast.LineProperty | ast.PaddingSizeProperty | ast.ShapeSizeProperty | ast.TextSizeProperty | ast.MetadataAttribute | ast.NotationProperty | ast.NotesProperty | ast.SpecificationElementStringProperty | ast.SpecificationRelationshipStringProperty | ast.BorderProperty | ast.MultipleProperty | ast.OpacityProperty | ast.ShapeProperty | ast.ViewRuleGlobalPredicateRef | ast.ViewRuleGroup | ast.ViewRulePredicate | ast.DynamicViewParallelSteps | ast.ElementRef | ast.SpecificationRelationshipKind | ast.GlobalStyle | ast.SpecificationColor | ast.NavigateToProperty | ast.DeploymentRelation | ast.Tags | ast.SpecificationDeploymentNodeKind | ast.GlobalDynamicPredicateGroup | ast.Relation | ast.SpecificationElementKind | ast.Globals | ast.GlobalPredicateGroup | ast.GlobalStyleGroup | ast.SpecificationTag | ast.ImportsFromPoject | ast.SpecificationRule;
7
+ declare const isValidatableAstNode: (n: AstNode) => n is ast.DynamicViewDisplayVariantProperty | ast.LinkProperty | ast.ViewStringProperty | ast.ElementStringProperty | ast.ElementStyleProperty | ast.IconProperty | ast.MetadataBody | ast.RelationStringProperty | ast.MetadataAttribute | ast.NotationProperty | ast.NotesProperty | ast.SpecificationElementStringProperty | ast.SpecificationRelationshipStringProperty | ast.HexColor | ast.RGBAColor | ast.DeployedInstance | ast.DeploymentNode | ast.DeploymentViewRulePredicate | ast.DeploymentViewRuleStyle | ast.ViewRuleAutoLayout | ast.DynamicViewGlobalPredicateRef | ast.DynamicViewIncludePredicate | ast.ViewRuleGlobalStyle | ast.ViewRuleStyle | ast.DynamicStepChain | ast.DynamicStepSingle | ast.ElementKindExpression | ast.ElementTagExpression | ast.FqnRefExpr | ast.WildcardExpression | ast.FqnExprWhere | ast.FqnExprWith | ast.DirectedRelationExpr | ast.InOutRelationExpr | ast.IncomingRelationExpr | ast.OutgoingRelationExpr | ast.RelationExprWhere | ast.RelationExprWith | ast.Element | ast.ExtendDeployment | ast.ExtendElement | ast.Imported | ast.DeploymentView | ast.DynamicView | ast.ElementView | ast.ArrowProperty | ast.ColorProperty | ast.LineProperty | ast.PaddingSizeProperty | ast.ShapeSizeProperty | ast.TextSizeProperty | ast.BorderProperty | ast.MultipleProperty | ast.OpacityProperty | ast.ShapeProperty | ast.ViewRuleGlobalPredicateRef | ast.ViewRuleGroup | ast.ViewRulePredicate | ast.DynamicViewParallelSteps | ast.ElementRef | ast.SpecificationRelationshipKind | ast.GlobalStyle | ast.SpecificationColor | ast.NavigateToProperty | ast.DeploymentRelation | ast.Tags | ast.SpecificationDeploymentNodeKind | ast.GlobalDynamicPredicateGroup | ast.Relation | ast.SpecificationElementKind | ast.Globals | ast.GlobalPredicateGroup | ast.GlobalStyleGroup | ast.SpecificationTag | ast.ImportsFromPoject | ast.SpecificationRule;
8
8
  type ValidatableAstNode = Guarded<typeof isValidatableAstNode>;
9
9
  export declare function checksFromDiagnostics(doc: LikeC4LangiumDocument): {
10
10
  isValid: (n: ValidatableAstNode) => boolean;
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@likec4/language-server",
3
3
  "description": "LikeC4 Language Server",
4
- "version": "1.42.0",
4
+ "version": "1.43.0",
5
5
  "license": "MIT",
6
6
  "bugs": "https://github.com/likec4/likec4/issues",
7
7
  "homepage": "https://likec4.dev",
@@ -76,44 +76,44 @@
76
76
  "access": "public"
77
77
  },
78
78
  "dependencies": {
79
- "@hpcc-js/wasm-graphviz": "1.12.1",
79
+ "@hpcc-js/wasm-graphviz": "1.12.0",
80
80
  "bundle-require": "^5.1.0",
81
- "esbuild": "0.25.9"
81
+ "esbuild": "0.25.11"
82
82
  },
83
83
  "devDependencies": {
84
- "@hono/node-server": "^1.19.3",
84
+ "@hono/node-server": "^1.19.5",
85
85
  "@modelcontextprotocol/sdk": "^1.17.5",
86
86
  "@msgpack/msgpack": "^3.1.2",
87
87
  "@smithy/util-base64": "^4.0.0",
88
88
  "@types/natural-compare-lite": "^1.4.2",
89
- "@types/node": "~20.19.11",
89
+ "@types/node": "~20.19.22",
90
90
  "@types/picomatch": "^4.0.2",
91
91
  "@types/vscode": "^1.84.0",
92
92
  "@types/which": "^3.0.4",
93
93
  "chokidar": "^4.0.3",
94
94
  "defu": "^6.1.4",
95
95
  "esm-env": "^1.2.2",
96
- "fast-equals": "^5.2.2",
96
+ "fast-equals": "^5.3.2",
97
97
  "fdir": "6.4.0",
98
98
  "fetch-to-node": "^2.1.0",
99
- "hono": "^4.9.8",
99
+ "hono": "^4.10.1",
100
100
  "indent-string": "^5.0.0",
101
101
  "json5": "^2.2.3",
102
102
  "langium": "3.5.0",
103
103
  "langium-cli": "3.5.2",
104
104
  "natural-compare-lite": "^1.4.0",
105
- "oxlint": "1.18.0",
105
+ "oxlint": "1.24.0",
106
106
  "p-debounce": "4.0.0",
107
107
  "p-queue": "8.1.1",
108
108
  "p-timeout": "6.1.4",
109
109
  "picomatch": "^4.0.3",
110
110
  "pretty-ms": "^9.2.0",
111
- "remeda": "^2.31.1",
112
- "strip-indent": "^4.0.0",
111
+ "remeda": "^2.32.0",
112
+ "strip-indent": "^4.1.1",
113
113
  "tsx": "4.20.6",
114
114
  "turbo": "2.5.8",
115
115
  "type-fest": "^4.41.0",
116
- "typescript": "5.9.2",
116
+ "typescript": "5.9.3",
117
117
  "ufo": "1.6.1",
118
118
  "unbuild": "3.5.0",
119
119
  "vitest": "3.2.4",
@@ -124,12 +124,12 @@
124
124
  "vscode-uri": "3.1.0",
125
125
  "which": "^5.0.0",
126
126
  "zod": "^3.25.76",
127
- "@likec4/core": "1.42.0",
128
- "@likec4/config": "1.42.0",
129
- "@likec4/layouts": "1.42.0",
130
- "@likec4/log": "1.42.0",
131
- "@likec4/icons": "1.42.0",
132
- "@likec4/tsconfig": "1.42.0",
127
+ "@likec4/core": "1.43.0",
128
+ "@likec4/config": "1.43.0",
129
+ "@likec4/icons": "1.43.0",
130
+ "@likec4/layouts": "1.43.0",
131
+ "@likec4/log": "1.43.0",
132
+ "@likec4/tsconfig": "1.43.0",
133
133
  "@likec4/devops": "1.42.0"
134
134
  },
135
135
  "scripts": {