@likec4/language-server 1.22.0 → 1.23.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -2,7 +2,7 @@ import { configureLogger, getConsoleSink, getTextFormatter } from "@likec4/log";
2
2
  import { startLanguageServer as startLanguim } from "langium/lsp";
3
3
  import { createConnection, ProposedFeatures } from "vscode-languageserver/node";
4
4
  import { LikeC4FileSystem } from "./LikeC4FileSystem.js";
5
- import { getLspConnectionSink, logger } from "./logger.js";
5
+ import { getTelemetrySink, logger } from "./logger.js";
6
6
  import { createCustomLanguageServices } from "./module.js";
7
7
  import { ConfigurableLayouter } from "./views/configurable-layouter.js";
8
8
  export { getLspConnectionSink, logger as lspLogger } from "./logger.js";
@@ -10,21 +10,17 @@ export { createCustomLanguageServices, createLanguageServices, LikeC4Module } fr
10
10
  export { LikeC4FileSystem };
11
11
  export async function startLanguageServer() {
12
12
  const connection = createConnection(ProposedFeatures.all);
13
- const isDebug = process.env.NODE_ENV === "development";
14
13
  await configureLogger({
15
14
  sinks: {
16
15
  console: getConsoleSink({
17
16
  formatter: getTextFormatter()
18
17
  }),
19
- lsp: getLspConnectionSink(connection)
18
+ telemetry: getTelemetrySink(connection)
20
19
  },
21
- // filters: {
22
- // errors: 'error'
23
- // },
24
20
  loggers: [
25
21
  {
26
22
  category: ["likec4"],
27
- sinks: ["console", "lsp"]
23
+ sinks: ["console", "telemetry"]
28
24
  }
29
25
  ]
30
26
  });
package/dist/logger.d.ts CHANGED
@@ -13,4 +13,5 @@ type LspConnectionSinkProps = {
13
13
  formatter?: TextFormatter;
14
14
  };
15
15
  export declare function getLspConnectionSink(connection: Connection, props?: LspConnectionSinkProps): Sink;
16
+ export declare function getTelemetrySink(connection: Connection): Sink;
16
17
  export {};
package/dist/logger.js CHANGED
@@ -18,26 +18,52 @@ export function getLspConnectionSink(connection, props) {
18
18
  return `${category} ${message}`;
19
19
  }
20
20
  });
21
+ return (logObj) => {
22
+ try {
23
+ switch (logObj.level) {
24
+ case "debug":
25
+ connection.console.debug(format(logObj));
26
+ break;
27
+ case "info":
28
+ connection.console.info(format(logObj));
29
+ break;
30
+ case "warning":
31
+ connection.console.warn(format(logObj));
32
+ break;
33
+ case "error":
34
+ case "fatal": {
35
+ connection.console.error(format(logObj));
36
+ break;
37
+ }
38
+ }
39
+ } catch (e) {
40
+ console.error("Error while logging to LSP connection:", e);
41
+ }
42
+ };
43
+ }
44
+ export function getTelemetrySink(connection) {
21
45
  const messageOnly = getMessageOnlyFormatter();
22
46
  return (logObj) => {
23
47
  try {
24
48
  switch (logObj.level) {
25
- // case 'debug':
26
- // connection.console.debug(format(logObj).trimEnd())
27
- // break
28
- // case 'info':
29
- // connection.console.info(format(logObj).trimEnd())
30
- // break
31
- // case 'warning':
32
- // connection.console.warn(format(logObj).trimEnd())
33
- // break
34
49
  case "error":
35
50
  case "fatal": {
36
51
  const err = errorFromLogRecord(logObj);
37
52
  if (err) {
38
- connection.telemetry.logEvent({ eventName: "error", ...err });
53
+ connection.telemetry.logEvent({
54
+ eventName: "error",
55
+ message: `${err.name}: ${err.message}`,
56
+ category: logObj.category.join("."),
57
+ ...err.stack && {
58
+ stack: err.stack
59
+ }
60
+ });
39
61
  } else {
40
- connection.telemetry.logEvent({ eventName: "error", message: messageOnly(logObj) });
62
+ connection.telemetry.logEvent({
63
+ eventName: "error",
64
+ message: messageOnly(logObj),
65
+ category: logObj.category.join(".")
66
+ });
41
67
  }
42
68
  break;
43
69
  }
@@ -1,6 +1,6 @@
1
1
  import type { ComputedLikeC4Model, ComputedView, DiagramView, Fqn, ParsedLikeC4Model, RelationId, ViewChange, ViewId } from '@likec4/core';
2
2
  import { NotificationType, RequestType, RequestType0 } from 'vscode-jsonrpc';
3
- import type { DocumentUri, Location } from 'vscode-languageserver-types';
3
+ import type { DiagnosticSeverity, DocumentUri, Location, Position } from 'vscode-languageserver-types';
4
4
  export declare const onDidChangeModel: NotificationType<string>;
5
5
  export type OnDidChangeModelNotification = typeof onDidChangeModel;
6
6
  export declare const fetchModel: RequestType0<{
@@ -31,6 +31,22 @@ export declare const layoutView: RequestType<{
31
31
  } | null;
32
32
  }, void>;
33
33
  export type LayoutViewRequest = typeof layoutView;
34
+ /**
35
+ * Request to layout all existing views.
36
+ */
37
+ export declare const validateLayout: RequestType<{}, {
38
+ result: {
39
+ uri: string;
40
+ viewId: ViewId;
41
+ message: string;
42
+ severity: DiagnosticSeverity;
43
+ range: {
44
+ start: Position;
45
+ end: Position;
46
+ };
47
+ }[] | null;
48
+ }, void>;
49
+ export type ValidateLayoutRequest = typeof validateLayout;
34
50
  /**
35
51
  * Request to build documents.
36
52
  */
package/dist/protocol.js CHANGED
@@ -10,6 +10,7 @@ export const computeView = new RequestType(
10
10
  "likec4/computeView"
11
11
  );
12
12
  export const layoutView = new RequestType("likec4/layout-view");
13
+ export const validateLayout = new RequestType("likec4/validate-layout");
13
14
  export const buildDocuments = new RequestType("likec4/build");
14
15
  export const locate = new RequestType("likec4/locate");
15
16
  export const changeView = new RequestType("likec4/change-view");
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.22.0",
4
+ "version": "1.23.0",
5
5
  "license": "MIT",
6
6
  "bugs": "https://github.com/likec4/likec4/issues",
7
7
  "homepage": "https://likec4.dev",
@@ -50,6 +50,14 @@
50
50
  "default": "./dist/likec4lib.js"
51
51
  }
52
52
  },
53
+ "./browser-worker": {
54
+ "sources": "./src/browser-worker.ts",
55
+ "default": {
56
+ "types": "./dist/browser-worker.d.ts",
57
+ "import": "./dist/browser-worker.js",
58
+ "default": "./dist/browser-worker.js"
59
+ }
60
+ },
53
61
  "./browser": {
54
62
  "sources": "./src/browser.ts",
55
63
  "default": {
@@ -72,31 +80,10 @@
72
80
  "registry": "https://registry.npmjs.org",
73
81
  "access": "public"
74
82
  },
75
- "scripts": {
76
- "typecheck": "tsc --noEmit",
77
- "prepack": "turbo run build",
78
- "build": "unbuild",
79
- "pregenerate": "rm -f src/generated/*",
80
- "watch:langium": "langium generate --watch",
81
- "watch:ts": "tsc --watch",
82
- "generate": "langium generate && tsx scripts/generate-icons.ts",
83
- "dev": "run-p 'watch:*'",
84
- "lint": "run -T eslint src/ --fix",
85
- "clean": "rm -r -f dist contrib",
86
- "test": "vitest run --no-isolate",
87
- "test-dbg": "vitest run --no-isolate -t formating",
88
- "vitest:ui": "vitest --no-isolate --ui",
89
- "test:watch": "vitest"
90
- },
91
83
  "dependencies": {
92
84
  "@hpcc-js/wasm-graphviz": "1.7.0"
93
85
  },
94
86
  "devDependencies": {
95
- "@likec4/core": "1.22.0",
96
- "@likec4/icons": "1.22.0",
97
- "@likec4/layouts": "1.22.0",
98
- "@likec4/log": "1.22.0",
99
- "@likec4/tsconfig": "1.22.0",
100
87
  "@msgpack/msgpack": "^3.0.0",
101
88
  "@smithy/util-base64": "^4.0.0",
102
89
  "@types/node": "^20.17.17",
@@ -109,22 +96,42 @@
109
96
  "json5": "^2.2.3",
110
97
  "langium": "3.3.1",
111
98
  "langium-cli": "3.3.0",
99
+ "mnemonist": "^0.40.2",
112
100
  "natural-compare-lite": "^1.4.0",
113
101
  "p-debounce": "^4.0.0",
114
102
  "remeda": "^2.20.1",
115
103
  "strip-indent": "^4.0.0",
116
104
  "tsx": "~4.19.2",
117
- "turbo": "^2.4.0",
105
+ "turbo": "^2.4.2",
118
106
  "type-fest": "4.34.1",
119
- "typescript": "^5.7.3",
107
+ "typescript": "5.7.3",
120
108
  "ufo": "^1.5.4",
121
109
  "unbuild": "^3.3.1",
122
110
  "vitest": "^3.0.4",
123
111
  "vscode-jsonrpc": "8.2.0",
124
112
  "vscode-languageserver": "9.0.1",
125
113
  "vscode-languageserver-types": "3.17.5",
126
- "vscode-uri": "3.0.8",
127
- "which": "^5.0.0"
114
+ "vscode-uri": "3.1.0",
115
+ "which": "^5.0.0",
116
+ "@likec4/core": "1.23.0",
117
+ "@likec4/layouts": "1.23.0",
118
+ "@likec4/icons": "1.23.0",
119
+ "@likec4/log": "1.23.0",
120
+ "@likec4/tsconfig": "1.23.0"
128
121
  },
129
- "packageManager": "yarn@4.6.0"
122
+ "scripts": {
123
+ "typecheck": "tsc --noEmit",
124
+ "build": "unbuild",
125
+ "pregenerate": "rm -f src/generated/*",
126
+ "watch:langium": "langium generate --watch",
127
+ "watch:ts": "tsc --watch",
128
+ "generate": "langium generate && tsx scripts/generate-icons.ts",
129
+ "dev": "run-p 'watch:*'",
130
+ "lint": "run -T eslint src/ --fix",
131
+ "clean": "rm -r -f dist contrib",
132
+ "test": "vitest run --no-isolate",
133
+ "test-dbg": "vitest run --no-isolate -t formating",
134
+ "vitest:ui": "vitest --no-isolate --ui",
135
+ "test:watch": "vitest"
136
+ }
130
137
  }