@hydranium/core 1.0.0-next.331 → 1.0.0-next.333

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.
@@ -54,7 +54,7 @@ export declare class LspLogger extends AbstractLogger implements Logger {
54
54
  /**
55
55
  * Set the process-wide threshold and announce the transition under whichever
56
56
  * of the two thresholds can carry the notice, so a reader sees every change
57
- * and its absence means the threshold never moved.
57
+ * after launch that one of them can carry.
58
58
  *
59
59
  * `error` and `off` admit no notice of their own — `off` nothing at all, and
60
60
  * an error-severity line is read as a fault, which a client that marks its
@@ -66,8 +66,16 @@ export declare class LspLogger extends AbstractLogger implements Logger {
66
66
  *
67
67
  * Only on a real transition: the bound setting re-fires for configuration
68
68
  * changes that leave the value alone.
69
+ *
70
+ * A `launch` baseline, the environment's, is announced only after the
71
+ * switch, so a run launched at `error` or `off` carries no notice. The
72
+ * threshold it leaves is a default no reader ran at, so a notice under it
73
+ * would be the one line of a run launched at `off`, and an info line in a
74
+ * run launched at `error`, against the launch's request.
69
75
  */
70
- protected applyLevel(next: LogThreshold, source: string): void;
76
+ protected applyLevel(next: LogThreshold, source: string, options?: {
77
+ launch?: boolean;
78
+ }): void;
71
79
  /**
72
80
  * Route logger timing and timestamps through the injected framework
73
81
  * {@link Clock} (the dedicated `shared.Clock` slot) so server-side log time
@@ -1 +1 @@
1
- {"version":3,"file":"lsp-logger.d.ts","sourceRoot":"","sources":["../../../src/langium/diagnostics/lsp-logger.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF,OAAO,EACJ,cAAc,EACd,KAAK,KAAK,EAKV,MAAM,EACN,KAAK,QAAQ,EACb,KAAK,YAAY,EAEjB,KAAK,oBAAoB,EAE3B,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,KAAK,GAAG,EAAE,MAAM,oBAAoB,CAAC;AAE9C,OAAO,EAAE,KAAK,oBAAoB,EAAE,MAAM,cAAc,CAAC;AAgBzD;;;;;;;GAOG;AACH,MAAM,WAAW,gBAAgB;IAC9B,6EAA6E;IAC7E,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B;;;;;;;;;;;;;;OAcG;IACH,QAAQ,CAAC,YAAY,CAAC,EAAE,oBAAoB,CAAC,YAAY,GAAG,SAAS,CAAC,CAAC;CACzE;AAED;;;;;;;;;;GAUG;AACH,qBAAa,SAAU,SAAQ,cAAe,YAAW,MAAM;IAEzD,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAE,oBAAoB;IADpD,YACsB,QAAQ,EAAE,oBAAoB,EACjD,OAAO,GAAE,gBAAqB,EAwDhC;IAED;;;;;;;;;;;;;;;OAeG;IACH,SAAS,CAAC,UAAU,CAAC,IAAI,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAc7D;IAED;;;;;;;OAOG;IACH,UAAmB,KAAK,IAAI,KAAK,CAEhC;IAED;;;;;;;;OAQG;IACM,OAAO,CAAC,GAAG,EAAE,GAAG,GAAG,MAAM,GAAG,IAAI,CAExC;IAED,SAAS,CAAC,IAAI,CAAC,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,OAAO,EAAE,GAAG,IAAI,CAuC9F;IAED,SAAS,CAAC,MAAM,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAGxC;CAGH"}
1
+ {"version":3,"file":"lsp-logger.d.ts","sourceRoot":"","sources":["../../../src/langium/diagnostics/lsp-logger.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF,OAAO,EACJ,cAAc,EACd,KAAK,KAAK,EAKV,MAAM,EACN,KAAK,QAAQ,EACb,KAAK,YAAY,EAEjB,KAAK,oBAAoB,EAE3B,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,KAAK,GAAG,EAAE,MAAM,oBAAoB,CAAC;AAE9C,OAAO,EAAE,KAAK,oBAAoB,EAAE,MAAM,cAAc,CAAC;AAgBzD;;;;;;;GAOG;AACH,MAAM,WAAW,gBAAgB;IAC9B,6EAA6E;IAC7E,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B;;;;;;;;;;;;;;OAcG;IACH,QAAQ,CAAC,YAAY,CAAC,EAAE,oBAAoB,CAAC,YAAY,GAAG,SAAS,CAAC,CAAC;CACzE;AAED;;;;;;;;;;GAUG;AACH,qBAAa,SAAU,SAAQ,cAAe,YAAW,MAAM;IAEzD,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAE,oBAAoB;IADpD,YACsB,QAAQ,EAAE,oBAAoB,EACjD,OAAO,GAAE,gBAAqB,EAwDhC;IAED;;;;;;;;;;;;;;;;;;;;;OAqBG;IACH,SAAS,CAAC,UAAU,CAAC,IAAI,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,GAAE;QAAE,MAAM,CAAC,EAAE,OAAO,CAAA;KAAO,GAAG,IAAI,CAqBjG;IAED;;;;;;;OAOG;IACH,UAAmB,KAAK,IAAI,KAAK,CAEhC;IAED;;;;;;;;OAQG;IACM,OAAO,CAAC,GAAG,EAAE,GAAG,GAAG,MAAM,GAAG,IAAI,CAExC;IAED,SAAS,CAAC,IAAI,CAAC,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,OAAO,EAAE,GAAG,IAAI,CAuC9F;IAED,SAAS,CAAC,MAAM,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAGxC;CAGH"}
@@ -63,7 +63,7 @@ export class LspLogger extends AbstractLogger {
63
63
  }
64
64
  const envLevel = parseLogLevel(env[DEFAULT_LOG_LEVEL_ENV]);
65
65
  if (envLevel) {
66
- this.applyLevel(envLevel, DEFAULT_LOG_LEVEL_ENV);
66
+ this.applyLevel(envLevel, DEFAULT_LOG_LEVEL_ENV, { launch: true });
67
67
  }
68
68
  }
69
69
  }
@@ -93,7 +93,7 @@ export class LspLogger extends AbstractLogger {
93
93
  /**
94
94
  * Set the process-wide threshold and announce the transition under whichever
95
95
  * of the two thresholds can carry the notice, so a reader sees every change
96
- * and its absence means the threshold never moved.
96
+ * after launch that one of them can carry.
97
97
  *
98
98
  * `error` and `off` admit no notice of their own — `off` nothing at all, and
99
99
  * an error-severity line is read as a fault, which a client that marks its
@@ -105,13 +105,26 @@ export class LspLogger extends AbstractLogger {
105
105
  *
106
106
  * Only on a real transition: the bound setting re-fires for configuration
107
107
  * changes that leave the value alone.
108
+ *
109
+ * A `launch` baseline, the environment's, is announced only after the
110
+ * switch, so a run launched at `error` or `off` carries no notice. The
111
+ * threshold it leaves is a default no reader ran at, so a notice under it
112
+ * would be the one line of a run launched at `off`, and an info line in a
113
+ * run launched at `error`, against the launch's request.
108
114
  */
109
- applyLevel(next, source) {
115
+ applyLevel(next, source, options = {}) {
110
116
  const previous = Logger.getLevel();
111
117
  if (previous === next) {
112
118
  return;
113
119
  }
114
120
  const message = `Log level ${previous} → ${next} (${source})`;
121
+ if (options.launch) {
122
+ Logger.setLevel(next);
123
+ if (next !== 'error') {
124
+ this.logAt(next, message);
125
+ }
126
+ return;
127
+ }
115
128
  const announceFirst = next === 'error' || next === 'off';
116
129
  if (announceFirst && previous !== 'error') {
117
130
  this.logAt(previous, message);
@@ -1 +1 @@
1
- {"version":3,"file":"lsp-logger.js","sourceRoot":"","sources":["../../../src/langium/diagnostics/lsp-logger.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"lsp-logger.js","sourceRoot":"","sources":["../../../src/langium/diagnostics/lsp-logger.ts"],"names":[],"mappings":"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"}
@@ -41,7 +41,7 @@ export interface ValidationCounts {
41
41
  export interface WorkspaceValidationResult {
42
42
  /** Number of `LangiumDocument`s in the built workspace. */
43
43
  documents: number;
44
- /** Every problem found, grouped contiguously by document, in the order the documents were given. */
44
+ /** Every problem found, grouped contiguously by document, in the order the documents were given, and by position within one. */
45
45
  findings: ValidationFinding[];
46
46
  /** Per-severity totals over {@link findings}. */
47
47
  counts: ValidationCounts;
@@ -1 +1 @@
1
- {"version":3,"file":"validate-workspace.d.ts","sourceRoot":"","sources":["../../src/node/validate-workspace.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF,OAAO,EAAE,KAAK,eAAe,EAAE,KAAK,GAAG,EAAE,MAAM,oBAAoB,CAAC;AAEpE,OAAO,EAAE,KAAK,2BAA2B,EAAE,MAAM,+BAA+B,CAAC;AAGjF,8FAA8F;AAC9F,MAAM,MAAM,kBAAkB,GAAG,OAAO,GAAG,SAAS,GAAG,MAAM,GAAG,MAAM,CAAC;AAEvE;;;;;GAKG;AACH,MAAM,WAAW,iBAAiB;IAC/B,2EAA2E;IAC3E,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,kBAAkB,CAAC;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,6EAA6E;IAC7E,IAAI,EAAE,MAAM,CAAC;IACb,kFAAkF;IAClF,SAAS,EAAE,MAAM,CAAC;IAClB,oDAAoD;IACpD,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACvB,sDAAsD;IACtD,MAAM,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,iGAAiG;AACjG,MAAM,WAAW,gBAAgB;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACf;AAED,0DAA0D;AAC1D,MAAM,WAAW,yBAAyB;IACvC,2DAA2D;IAC3D,SAAS,EAAE,MAAM,CAAC;IAClB,oGAAoG;IACpG,QAAQ,EAAE,iBAAiB,EAAE,CAAC;IAC9B,iDAAiD;IACjD,MAAM,EAAE,gBAAgB,CAAC;CAC3B;AAED,6CAA6C;AAC7C,MAAM,WAAW,wBAAwB;IACtC;;;OAGG;IACH,cAAc,EAAE,MAAM;QAAE,MAAM,EAAE,2BAA2B,CAAA;KAAE,CAAC;IAC9D,0EAA0E;IAC1E,SAAS,EAAE,MAAM,CAAC;CACpB;AAkBD;;;;GAIG;AACH,wBAAgB,uBAAuB,CACpC,SAAS,EAAE,SAAS,eAAe,EAAE,EACrC,cAAc,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,MAAM,GACpC,yBAAyB,CAsB3B;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,iBAAiB,CAAC,OAAO,EAAE,wBAAwB,GAAG,OAAO,CAAC,yBAAyB,CAAC,CAK7G"}
1
+ {"version":3,"file":"validate-workspace.d.ts","sourceRoot":"","sources":["../../src/node/validate-workspace.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF,OAAO,EAAE,KAAK,eAAe,EAAE,KAAK,GAAG,EAAE,MAAM,oBAAoB,CAAC;AAEpE,OAAO,EAAE,KAAK,2BAA2B,EAAE,MAAM,+BAA+B,CAAC;AAGjF,8FAA8F;AAC9F,MAAM,MAAM,kBAAkB,GAAG,OAAO,GAAG,SAAS,GAAG,MAAM,GAAG,MAAM,CAAC;AAEvE;;;;;GAKG;AACH,MAAM,WAAW,iBAAiB;IAC/B,2EAA2E;IAC3E,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,kBAAkB,CAAC;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,6EAA6E;IAC7E,IAAI,EAAE,MAAM,CAAC;IACb,kFAAkF;IAClF,SAAS,EAAE,MAAM,CAAC;IAClB,oDAAoD;IACpD,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACvB,sDAAsD;IACtD,MAAM,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,iGAAiG;AACjG,MAAM,WAAW,gBAAgB;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACf;AAED,0DAA0D;AAC1D,MAAM,WAAW,yBAAyB;IACvC,2DAA2D;IAC3D,SAAS,EAAE,MAAM,CAAC;IAClB,gIAAgI;IAChI,QAAQ,EAAE,iBAAiB,EAAE,CAAC;IAC9B,iDAAiD;IACjD,MAAM,EAAE,gBAAgB,CAAC;CAC3B;AAED,6CAA6C;AAC7C,MAAM,WAAW,wBAAwB;IACtC;;;OAGG;IACH,cAAc,EAAE,MAAM;QAAE,MAAM,EAAE,2BAA2B,CAAA;KAAE,CAAC;IAC9D,0EAA0E;IAC1E,SAAS,EAAE,MAAM,CAAC;CACpB;AAkBD;;;;GAIG;AACH,wBAAgB,uBAAuB,CACpC,SAAS,EAAE,SAAS,eAAe,EAAE,EACrC,cAAc,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,MAAM,GACpC,yBAAyB,CA4B3B;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,iBAAiB,CAAC,OAAO,EAAE,wBAAwB,GAAG,OAAO,CAAC,yBAAyB,CAAC,CAK7G"}
@@ -33,7 +33,11 @@ export function collectValidationResult(documents, wsRelativePath) {
33
33
  const counts = { error: 0, warning: 0, info: 0, hint: 0 };
34
34
  for (const document of documents) {
35
35
  const relativeUri = wsRelativePath(document.uri);
36
- for (const diagnostic of (document.diagnostics ?? [])) {
36
+ // Langium appends the lexer, parser, linker and validator diagnostics phase after phase,
37
+ // so a reader scanning a file top to bottom needs them sorted. The sort is stable, so
38
+ // diagnostics at one position keep the order their phases produced them in.
39
+ const diagnostics = [...(document.diagnostics ?? [])].sort((a, b) => a.range.start.line - b.range.start.line || a.range.start.character - b.range.start.character);
40
+ for (const diagnostic of diagnostics) {
37
41
  const severity = severityLabel(diagnostic.severity);
38
42
  counts[severity] += 1;
39
43
  findings.push({
@@ -1 +1 @@
1
- {"version":3,"file":"validate-workspace.js","sourceRoot":"","sources":["../../src/node/validate-workspace.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAGlF,OAAO,EAAE,UAAU,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAEvE,OAAO,EAAE,8BAA8B,EAAE,MAAM,8CAA8C,CAAC;AAuD9F,8GAA8G;AAC9G,SAAS,aAAa,CAAC,QAAwC;IAC5D,QAAQ,QAAQ,EAAE,CAAC;QAChB,KAAK,kBAAkB,CAAC,OAAO;YAC5B,OAAO,SAAS,CAAC;QACpB,KAAK,kBAAkB,CAAC,WAAW;YAChC,OAAO,MAAM,CAAC;QACjB,KAAK,kBAAkB,CAAC,IAAI;YACzB,OAAO,MAAM,CAAC;QACjB;YACG,0EAA0E;YAC1E,qFAAqF;YACrF,OAAO,OAAO,CAAC;IACrB,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,uBAAuB,CACpC,SAAqC,EACrC,cAAoC;IAEpC,MAAM,QAAQ,GAAwB,EAAE,CAAC;IACzC,MAAM,MAAM,GAAqB,EAAE,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;IAC5E,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;QAChC,MAAM,WAAW,GAAG,cAAc,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;QACjD,KAAK,MAAM,UAAU,IAAI,CAAC,QAAQ,CAAC,WAAW,IAAI,EAAE,CAAiB,EAAE,CAAC;YACrE,MAAM,QAAQ,GAAG,aAAa,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;YACpD,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;YACtB,QAAQ,CAAC,IAAI,CAAC;gBACX,GAAG,EAAE,WAAW;gBAChB,QAAQ;gBACR,8DAA8D;gBAC9D,+DAA+D;gBAC/D,OAAO,EAAE,UAAU,CAAC,gBAAgB,CAAC,UAAU,CAAC;gBAChD,IAAI,EAAE,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI;gBACjC,SAAS,EAAE,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS;gBAC3C,IAAI,EAAE,UAAU,CAAC,IAAI;gBACrB,MAAM,EAAE,UAAU,CAAC,MAAM;aAC3B,CAAC,CAAC;QACN,CAAC;IACJ,CAAC;IACD,OAAO,EAAE,SAAS,EAAE,SAAS,CAAC,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC;AAC5D,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,OAAiC;IACtE,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;IAC5C,MAAM,8BAA8B,CAAC,MAAM,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;IAChE,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC,gBAAgB,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;IAClE,OAAO,uBAAuB,CAAC,SAAS,EAAE,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,gBAAgB,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC;AAC3G,CAAC"}
1
+ {"version":3,"file":"validate-workspace.js","sourceRoot":"","sources":["../../src/node/validate-workspace.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAGlF,OAAO,EAAE,UAAU,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAEvE,OAAO,EAAE,8BAA8B,EAAE,MAAM,8CAA8C,CAAC;AAuD9F,8GAA8G;AAC9G,SAAS,aAAa,CAAC,QAAwC;IAC5D,QAAQ,QAAQ,EAAE,CAAC;QAChB,KAAK,kBAAkB,CAAC,OAAO;YAC5B,OAAO,SAAS,CAAC;QACpB,KAAK,kBAAkB,CAAC,WAAW;YAChC,OAAO,MAAM,CAAC;QACjB,KAAK,kBAAkB,CAAC,IAAI;YACzB,OAAO,MAAM,CAAC;QACjB;YACG,0EAA0E;YAC1E,qFAAqF;YACrF,OAAO,OAAO,CAAC;IACrB,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,uBAAuB,CACpC,SAAqC,EACrC,cAAoC;IAEpC,MAAM,QAAQ,GAAwB,EAAE,CAAC;IACzC,MAAM,MAAM,GAAqB,EAAE,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;IAC5E,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;QAChC,MAAM,WAAW,GAAG,cAAc,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;QACjD,yFAAyF;QACzF,sFAAsF;QACtF,4EAA4E;QAC5E,MAAM,WAAW,GAAG,CAAC,GAAI,CAAC,QAAQ,CAAC,WAAW,IAAI,EAAE,CAAkB,CAAC,CAAC,IAAI,CACzE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,CACxG,CAAC;QACF,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE,CAAC;YACpC,MAAM,QAAQ,GAAG,aAAa,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;YACpD,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;YACtB,QAAQ,CAAC,IAAI,CAAC;gBACX,GAAG,EAAE,WAAW;gBAChB,QAAQ;gBACR,8DAA8D;gBAC9D,+DAA+D;gBAC/D,OAAO,EAAE,UAAU,CAAC,gBAAgB,CAAC,UAAU,CAAC;gBAChD,IAAI,EAAE,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI;gBACjC,SAAS,EAAE,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS;gBAC3C,IAAI,EAAE,UAAU,CAAC,IAAI;gBACrB,MAAM,EAAE,UAAU,CAAC,MAAM;aAC3B,CAAC,CAAC;QACN,CAAC;IACJ,CAAC;IACD,OAAO,EAAE,SAAS,EAAE,SAAS,CAAC,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC;AAC5D,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,OAAiC;IACtE,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;IAC5C,MAAM,8BAA8B,CAAC,MAAM,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;IAChE,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC,gBAAgB,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;IAClE,OAAO,uBAAuB,CAAC,SAAS,EAAE,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,gBAAgB,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC;AAC3G,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hydranium/core",
3
- "version": "1.0.0-next.331",
3
+ "version": "1.0.0-next.333",
4
4
  "description": "Foundational runtime of the hydranium framework: AST coordination layer (services, integrity, AST extension, serialization, multi-client documents) plus the LSP textual head at the /lsp subpath. Consumed by protocol-head packages (@hydranium/data-server, @hydranium/glsp-server).",
5
5
  "keywords": [
6
6
  "ast",
@@ -87,8 +87,8 @@
87
87
  "diff": "^5.2.0"
88
88
  },
89
89
  "devDependencies": {
90
- "@hydranium/langium": "1.0.0-next.331",
91
- "@hydranium/protocol": "1.0.0-next.331",
90
+ "@hydranium/langium": "1.0.0-next.333",
91
+ "@hydranium/protocol": "1.0.0-next.333",
92
92
  "@playwright/test": "^1.55.0",
93
93
  "@types/diff": "^5.2.0",
94
94
  "fake-indexeddb": "^6.2.5",
@@ -101,8 +101,8 @@
101
101
  "vscode-languageserver-types": "^3.17.5"
102
102
  },
103
103
  "peerDependencies": {
104
- "@hydranium/langium": "1.0.0-next.331",
105
- "@hydranium/protocol": "1.0.0-next.331",
104
+ "@hydranium/langium": "1.0.0-next.333",
105
+ "@hydranium/protocol": "1.0.0-next.333",
106
106
  "@playwright/test": "^1.40.0",
107
107
  "vscode-jsonrpc": "^9.0.0",
108
108
  "vscode-languageserver": "~10.0.1",
@@ -112,7 +112,7 @@ export class LspLogger extends AbstractLogger implements Logger {
112
112
  }
113
113
  const envLevel = parseLogLevel(env[DEFAULT_LOG_LEVEL_ENV]);
114
114
  if (envLevel) {
115
- this.applyLevel(envLevel, DEFAULT_LOG_LEVEL_ENV);
115
+ this.applyLevel(envLevel, DEFAULT_LOG_LEVEL_ENV, { launch: true });
116
116
  }
117
117
  }
118
118
  }
@@ -143,7 +143,7 @@ export class LspLogger extends AbstractLogger implements Logger {
143
143
  /**
144
144
  * Set the process-wide threshold and announce the transition under whichever
145
145
  * of the two thresholds can carry the notice, so a reader sees every change
146
- * and its absence means the threshold never moved.
146
+ * after launch that one of them can carry.
147
147
  *
148
148
  * `error` and `off` admit no notice of their own — `off` nothing at all, and
149
149
  * an error-severity line is read as a fault, which a client that marks its
@@ -155,13 +155,26 @@ export class LspLogger extends AbstractLogger implements Logger {
155
155
  *
156
156
  * Only on a real transition: the bound setting re-fires for configuration
157
157
  * changes that leave the value alone.
158
+ *
159
+ * A `launch` baseline, the environment's, is announced only after the
160
+ * switch, so a run launched at `error` or `off` carries no notice. The
161
+ * threshold it leaves is a default no reader ran at, so a notice under it
162
+ * would be the one line of a run launched at `off`, and an info line in a
163
+ * run launched at `error`, against the launch's request.
158
164
  */
159
- protected applyLevel(next: LogThreshold, source: string): void {
165
+ protected applyLevel(next: LogThreshold, source: string, options: { launch?: boolean } = {}): void {
160
166
  const previous = Logger.getLevel();
161
167
  if (previous === next) {
162
168
  return;
163
169
  }
164
170
  const message = `Log level ${previous} → ${next} (${source})`;
171
+ if (options.launch) {
172
+ Logger.setLevel(next);
173
+ if (next !== 'error') {
174
+ this.logAt(next, message);
175
+ }
176
+ return;
177
+ }
165
178
  const announceFirst = next === 'error' || next === 'off';
166
179
  if (announceFirst && previous !== 'error') {
167
180
  this.logAt(previous, message);
@@ -48,7 +48,7 @@ export interface ValidationCounts {
48
48
  export interface WorkspaceValidationResult {
49
49
  /** Number of `LangiumDocument`s in the built workspace. */
50
50
  documents: number;
51
- /** Every problem found, grouped contiguously by document, in the order the documents were given. */
51
+ /** Every problem found, grouped contiguously by document, in the order the documents were given, and by position within one. */
52
52
  findings: ValidationFinding[];
53
53
  /** Per-severity totals over {@link findings}. */
54
54
  counts: ValidationCounts;
@@ -94,7 +94,13 @@ export function collectValidationResult(
94
94
  const counts: ValidationCounts = { error: 0, warning: 0, info: 0, hint: 0 };
95
95
  for (const document of documents) {
96
96
  const relativeUri = wsRelativePath(document.uri);
97
- for (const diagnostic of (document.diagnostics ?? []) as Diagnostic[]) {
97
+ // Langium appends the lexer, parser, linker and validator diagnostics phase after phase,
98
+ // so a reader scanning a file top to bottom needs them sorted. The sort is stable, so
99
+ // diagnostics at one position keep the order their phases produced them in.
100
+ const diagnostics = [...((document.diagnostics ?? []) as Diagnostic[])].sort(
101
+ (a, b) => a.range.start.line - b.range.start.line || a.range.start.character - b.range.start.character
102
+ );
103
+ for (const diagnostic of diagnostics) {
98
104
  const severity = severityLabel(diagnostic.severity);
99
105
  counts[severity] += 1;
100
106
  findings.push({