@hydranium/core 1.0.0-next.32 → 1.0.0-next.34

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 (46) hide show
  1. package/lib/langium/keys/containment.d.ts +64 -0
  2. package/lib/langium/keys/containment.d.ts.map +1 -0
  3. package/lib/langium/keys/containment.js +53 -0
  4. package/lib/langium/keys/containment.js.map +1 -0
  5. package/lib/langium/keys/index.d.ts +1 -0
  6. package/lib/langium/keys/index.d.ts.map +1 -1
  7. package/lib/langium/keys/index.js +1 -0
  8. package/lib/langium/keys/index.js.map +1 -1
  9. package/lib/langium/keys/name-based-key-provider.d.ts +4 -0
  10. package/lib/langium/keys/name-based-key-provider.d.ts.map +1 -1
  11. package/lib/langium/keys/name-based-key-provider.js +4 -0
  12. package/lib/langium/keys/name-based-key-provider.js.map +1 -1
  13. package/lib/langium/model-service/model-service.d.ts +13 -2
  14. package/lib/langium/model-service/model-service.d.ts.map +1 -1
  15. package/lib/langium/model-service/model-service.js +13 -2
  16. package/lib/langium/model-service/model-service.js.map +1 -1
  17. package/lib/langium/validation/document-validator.d.ts +62 -1
  18. package/lib/langium/validation/document-validator.d.ts.map +1 -1
  19. package/lib/langium/validation/document-validator.js +110 -3
  20. package/lib/langium/validation/document-validator.js.map +1 -1
  21. package/lib/langium/workspace/hydranium-workspace-manager.d.ts +10 -0
  22. package/lib/langium/workspace/hydranium-workspace-manager.d.ts.map +1 -1
  23. package/lib/langium/workspace/hydranium-workspace-manager.js +13 -0
  24. package/lib/langium/workspace/hydranium-workspace-manager.js.map +1 -1
  25. package/lib/locale/server-locale.d.ts +10 -0
  26. package/lib/locale/server-locale.d.ts.map +1 -1
  27. package/lib/locale/server-locale.js +11 -1
  28. package/lib/locale/server-locale.js.map +1 -1
  29. package/lib/messages/carriers.d.ts +8 -1
  30. package/lib/messages/carriers.d.ts.map +1 -1
  31. package/lib/messages/carriers.js +11 -1
  32. package/lib/messages/carriers.js.map +1 -1
  33. package/lib/messages/index.d.ts +1 -1
  34. package/lib/messages/index.d.ts.map +1 -1
  35. package/lib/messages/index.js +1 -1
  36. package/lib/messages/index.js.map +1 -1
  37. package/package.json +5 -5
  38. package/src/langium/keys/containment.ts +87 -0
  39. package/src/langium/keys/index.ts +1 -0
  40. package/src/langium/keys/name-based-key-provider.ts +4 -0
  41. package/src/langium/model-service/model-service.ts +13 -2
  42. package/src/langium/validation/document-validator.ts +121 -3
  43. package/src/langium/workspace/hydranium-workspace-manager.ts +12 -0
  44. package/src/locale/server-locale.ts +11 -1
  45. package/src/messages/carriers.ts +12 -2
  46. package/src/messages/index.ts +1 -1
@@ -0,0 +1,64 @@
1
+ /********************************************************************************
2
+ * Copyright (c) 2026 CrossBreeze, EclipseSource and others.
3
+ *
4
+ * This program and the accompanying materials are made available under the
5
+ * terms of the MIT License which is available in the project root.
6
+ *
7
+ * SPDX-License-Identifier: MIT
8
+ ********************************************************************************/
9
+ /**
10
+ * Containment-array maintenance for callers that build or delete AST nodes
11
+ * programmatically — a GLSP operation handler being the usual one.
12
+ *
13
+ * **These live beside the key provider because the constraint is the key
14
+ * provider's.** `NameBasedKeyProvider` keys a node the `NameProvider` gives no
15
+ * name from its position, as `` `${$containerProperty}@${$containerIndex}` ``,
16
+ * so a node appended with a bare `array.push` carries neither and
17
+ * `getElementKey` answers `undefined` — the element has no key at all, and the
18
+ * GLSP index cannot address it. Deleting from the middle of such a list must
19
+ * renumber the survivors, or an id derived later in the same command names the
20
+ * wrong node. Shipping the constraint's statement without the code that
21
+ * discharges it leaves every adopter in that position re-deriving thirty lines
22
+ * from prose, and both failures are silent.
23
+ *
24
+ * The population is narrower than "anyone creating elements from a diagram": it
25
+ * takes a grammar with UNNAMED element types, programmatic creation or deletion
26
+ * of them, and this key provider. A grammar whose diagram elements are all
27
+ * named never reaches it, and the two ways out are named on the provider —
28
+ * give the type a name, or bind a provider whose fallback is content-derived.
29
+ *
30
+ * **Free functions, and deliberately not a step on the AST builder.** Building a
31
+ * node detached and appending it later is legitimate, so a containment step
32
+ * cannot be mandatory; and an optional fluent step could not check the index
33
+ * against the array unless it were handed the array, at which point it is these
34
+ * signatures with more ceremony. `AstNodeInit` already accepts the three fields
35
+ * for a caller who has them, which is the case these cover: it is the INDEX that
36
+ * cannot be known without reading the array.
37
+ */
38
+ import type { AstNode } from '@hydranium/langium';
39
+ /**
40
+ * Append `child` to `children`, stamping the Langium containment plumbing
41
+ * (`$container`, `$containerProperty`, `$containerIndex`) so a positional key
42
+ * can address it.
43
+ *
44
+ * `property` and `children` are separate parameters rather than one property
45
+ * name the function dereferences: the array is what the index is derived from,
46
+ * so taking it directly is what makes the two agree by construction instead of
47
+ * by a lookup that a typo could point elsewhere.
48
+ *
49
+ * @returns `child`, so a caller can append and use it in one expression.
50
+ */
51
+ export declare function appendChild<TChild extends AstNode>(container: AstNode, property: string, children: TChild[], child: TChild): TChild;
52
+ /**
53
+ * Remove every entry of `children` that is in `toRemove`, then renumber the
54
+ * survivors' `$containerIndex`.
55
+ *
56
+ * Mutates `children` in place rather than returning a new array, because the
57
+ * caller's array IS the AST's containment list — replacing the reference would
58
+ * leave the parent pointing at the old one.
59
+ *
60
+ * @returns how many entries were removed, so a caller can tell a no-op delete
61
+ * from one that changed the model without comparing lengths itself.
62
+ */
63
+ export declare function removeChildren<TChild extends AstNode>(children: TChild[], toRemove: ReadonlySet<TChild>): number;
64
+ //# sourceMappingURL=containment.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"containment.d.ts","sourceRoot":"","sources":["../../../src/langium/keys/containment.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAGlD;;;;;;;;;;;GAWG;AACH,wBAAgB,WAAW,CAAC,MAAM,SAAS,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAOnI;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,cAAc,CAAC,MAAM,SAAS,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,QAAQ,EAAE,WAAW,CAAC,MAAM,CAAC,GAAG,MAAM,CAYhH"}
@@ -0,0 +1,53 @@
1
+ /********************************************************************************
2
+ * Copyright (c) 2026 CrossBreeze, EclipseSource and others.
3
+ *
4
+ * This program and the accompanying materials are made available under the
5
+ * terms of the MIT License which is available in the project root.
6
+ *
7
+ * SPDX-License-Identifier: MIT
8
+ ********************************************************************************/
9
+ /**
10
+ * Append `child` to `children`, stamping the Langium containment plumbing
11
+ * (`$container`, `$containerProperty`, `$containerIndex`) so a positional key
12
+ * can address it.
13
+ *
14
+ * `property` and `children` are separate parameters rather than one property
15
+ * name the function dereferences: the array is what the index is derived from,
16
+ * so taking it directly is what makes the two agree by construction instead of
17
+ * by a lookup that a typo could point elsewhere.
18
+ *
19
+ * @returns `child`, so a caller can append and use it in one expression.
20
+ */
21
+ export function appendChild(container, property, children, child) {
22
+ const mutable = child;
23
+ mutable.$container = container;
24
+ mutable.$containerProperty = property;
25
+ mutable.$containerIndex = children.length;
26
+ children.push(child);
27
+ return child;
28
+ }
29
+ /**
30
+ * Remove every entry of `children` that is in `toRemove`, then renumber the
31
+ * survivors' `$containerIndex`.
32
+ *
33
+ * Mutates `children` in place rather than returning a new array, because the
34
+ * caller's array IS the AST's containment list — replacing the reference would
35
+ * leave the parent pointing at the old one.
36
+ *
37
+ * @returns how many entries were removed, so a caller can tell a no-op delete
38
+ * from one that changed the model without comparing lengths itself.
39
+ */
40
+ export function removeChildren(children, toRemove) {
41
+ if (toRemove.size === 0) {
42
+ return 0;
43
+ }
44
+ const survivors = children.filter(child => !toRemove.has(child));
45
+ const removed = children.length - survivors.length;
46
+ children.length = 0;
47
+ for (const [index, child] of survivors.entries()) {
48
+ child.$containerIndex = index;
49
+ children.push(child);
50
+ }
51
+ return removed;
52
+ }
53
+ //# sourceMappingURL=containment.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"containment.js","sourceRoot":"","sources":["../../../src/langium/keys/containment.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAmClF;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,WAAW,CAAyB,SAAkB,EAAE,QAAgB,EAAE,QAAkB,EAAE,KAAa;IACxH,MAAM,OAAO,GAAG,KAAwB,CAAC;IACzC,OAAO,CAAC,UAAU,GAAG,SAAS,CAAC;IAC/B,OAAO,CAAC,kBAAkB,GAAG,QAAQ,CAAC;IACtC,OAAO,CAAC,eAAe,GAAG,QAAQ,CAAC,MAAM,CAAC;IAC1C,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACrB,OAAO,KAAK,CAAC;AAChB,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,cAAc,CAAyB,QAAkB,EAAE,QAA6B;IACrG,IAAI,QAAQ,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;QACvB,OAAO,CAAC,CAAC;IACZ,CAAC;IACD,MAAM,SAAS,GAAG,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;IACjE,MAAM,OAAO,GAAG,QAAQ,CAAC,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC;IACnD,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC;IACpB,KAAK,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,SAAS,CAAC,OAAO,EAAE,EAAE,CAAC;QAC/C,KAAyB,CAAC,eAAe,GAAG,KAAK,CAAC;QACnD,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACxB,CAAC;IACD,OAAO,OAAO,CAAC;AAClB,CAAC"}
@@ -6,6 +6,7 @@
6
6
  *
7
7
  * SPDX-License-Identifier: MIT
8
8
  ********************************************************************************/
9
+ export * from './containment.js';
9
10
  export * from './element-key-provider.js';
10
11
  export * from './name-based-key-provider.js';
11
12
  export * from './positional-key-provider.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/langium/keys/index.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF,cAAc,2BAA2B,CAAC;AAC1C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,mCAAmC,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/langium/keys/index.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF,cAAc,kBAAkB,CAAC;AACjC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,mCAAmC,CAAC"}
@@ -6,6 +6,7 @@
6
6
  *
7
7
  * SPDX-License-Identifier: MIT
8
8
  ********************************************************************************/
9
+ export * from './containment.js';
9
10
  export * from './element-key-provider.js';
10
11
  export * from './name-based-key-provider.js';
11
12
  export * from './positional-key-provider.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/langium/keys/index.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF,cAAc,2BAA2B,CAAC;AAC1C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,mCAAmC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/langium/keys/index.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF,cAAc,kBAAkB,CAAC;AACjC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,mCAAmC,CAAC"}
@@ -53,6 +53,10 @@ import { type NameProvider } from '../naming/name-provider.js';
53
53
  * - After a removal, surviving siblings need their `$containerIndex`
54
54
  * renumbered, or a key derived afterwards addresses the wrong node.
55
55
  *
56
+ * {@link appendChild} and {@link removeChildren} discharge both, and ship
57
+ * beside this provider because the constraint is this provider's rather than
58
+ * any caller's.
59
+ *
56
60
  * Adopters that need insert / delete stability for unnamed types should
57
61
  * give those types a name in the grammar, or bind a key provider whose
58
62
  * fallback is content-derived rather than positional.
@@ -1 +1 @@
1
- {"version":3,"file":"name-based-key-provider.d.ts","sourceRoot":"","sources":["../../../src/langium/keys/name-based-key-provider.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,KAAK,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,KAAK,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AACpE,OAAO,EAAE,KAAK,kBAAkB,EAAwB,MAAM,2BAA2B,CAAC;AAC1F,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAE/D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+CG;AACH,qBAAa,oBAAqB,YAAW,kBAAkB;IAKzD,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAE,sBAAsB;IAJtD,SAAS,CAAC,QAAQ,CAAC,YAAY,EAAE,YAAY,CAAC;IAC9C,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;gBAGZ,QAAQ,EAAE,sBAAsB,EACnD,OAAO,GAAE,cAAmB;IAM/B,aAAa,CAAC,IAAI,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS;IAuBjD;;;;;;;OAOG;IACH,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,GAAG,SAAS;IAIlE;;;;;;;;;;;;OAYG;IACH,SAAS,CAAC,cAAc,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO;IAUhD;;;;OAIG;IACH,SAAS,CAAC,mBAAmB,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS;CAMlE"}
1
+ {"version":3,"file":"name-based-key-provider.d.ts","sourceRoot":"","sources":["../../../src/langium/keys/name-based-key-provider.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,KAAK,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,KAAK,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AACpE,OAAO,EAAE,KAAK,kBAAkB,EAAwB,MAAM,2BAA2B,CAAC;AAC1F,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAE/D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmDG;AACH,qBAAa,oBAAqB,YAAW,kBAAkB;IAKzD,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAE,sBAAsB;IAJtD,SAAS,CAAC,QAAQ,CAAC,YAAY,EAAE,YAAY,CAAC;IAC9C,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;gBAGZ,QAAQ,EAAE,sBAAsB,EACnD,OAAO,GAAE,cAAmB;IAM/B,aAAa,CAAC,IAAI,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS;IAuBjD;;;;;;;OAOG;IACH,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,GAAG,SAAS;IAIlE;;;;;;;;;;;;OAYG;IACH,SAAS,CAAC,cAAc,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO;IAUhD;;;;OAIG;IACH,SAAS,CAAC,mBAAmB,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS;CAMlE"}
@@ -48,6 +48,10 @@ import { resolveElementByScan } from './element-key-provider.js';
48
48
  * - After a removal, surviving siblings need their `$containerIndex`
49
49
  * renumbered, or a key derived afterwards addresses the wrong node.
50
50
  *
51
+ * {@link appendChild} and {@link removeChildren} discharge both, and ship
52
+ * beside this provider because the constraint is this provider's rather than
53
+ * any caller's.
54
+ *
51
55
  * Adopters that need insert / delete stability for unnamed types should
52
56
  * give those types a name in the grammar, or bind a key provider whose
53
57
  * fallback is content-derived rather than positional.
@@ -1 +1 @@
1
- {"version":3,"file":"name-based-key-provider.js","sourceRoot":"","sources":["../../../src/langium/keys/name-based-key-provider.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAMlF,OAAO,EAA2B,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAG1F;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+CG;AACH,MAAM,OAAO,oBAAoB;IAKR;IAJH,YAAY,CAAe;IAC3B,MAAM,CAAS;IAElC,YACsB,QAAgC,EACnD,UAA0B,EAAE;QADT,aAAQ,GAAR,QAAQ,CAAwB;QAGnD,IAAI,CAAC,YAAY,GAAG,QAAQ,CAAC,UAAU,CAAC,YAAY,CAAC;QACrD,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;IAC5G,CAAC;IAED,aAAa,CAAC,IAAc;QACzB,IAAI,CAAC,IAAI,EAAE,CAAC;YACT,OAAO,SAAS,CAAC;QACpB,CAAC;QACD,IAAI,EAAE,GAAG,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC;QAC9E,IAAI,CAAC,EAAE,EAAE,CAAC;YACP,OAAO,SAAS,CAAC;QACpB,CAAC;QACD,IAAI,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,CAAC;YAC7B,OAAO,EAAE,CAAC;QACb,CAAC;QACD,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC;QAClD,IAAI,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC;QAC7B,OAAO,MAAM,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,EAAE,CAAC;YAC7C,MAAM,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC;YACzF,IAAI,OAAO,EAAE,CAAC;gBACX,EAAE,GAAG,OAAO,GAAG,SAAS,GAAG,EAAE,CAAC;YACjC,CAAC;YACD,MAAM,GAAG,MAAM,CAAC,UAAU,CAAC;QAC9B,CAAC;QACD,OAAO,EAAE,CAAC;IACb,CAAC;IAED;;;;;;;OAOG;IACH,cAAc,CAAC,GAAW,EAAE,OAAgB;QACzC,OAAO,oBAAoB,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC;IAC/E,CAAC;IAED;;;;;;;;;;;;OAYG;IACO,cAAc,CAAC,IAAa;QACnC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;YACpB,OAAO,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAC1C,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE,CAAC;YAC/B,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACtD,CAAC;QACD,OAAO,KAAK,CAAC;IAChB,CAAC;IAED;;;;OAIG;IACO,mBAAmB,CAAC,IAAa;QACxC,IAAI,IAAI,CAAC,kBAAkB,KAAK,SAAS,IAAI,IAAI,CAAC,eAAe,KAAK,SAAS,EAAE,CAAC;YAC/E,OAAO,SAAS,CAAC;QACpB,CAAC;QACD,OAAO,GAAG,IAAI,CAAC,kBAAkB,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;IAC/D,CAAC;CACH"}
1
+ {"version":3,"file":"name-based-key-provider.js","sourceRoot":"","sources":["../../../src/langium/keys/name-based-key-provider.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAMlF,OAAO,EAA2B,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAG1F;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmDG;AACH,MAAM,OAAO,oBAAoB;IAKR;IAJH,YAAY,CAAe;IAC3B,MAAM,CAAS;IAElC,YACsB,QAAgC,EACnD,UAA0B,EAAE;QADT,aAAQ,GAAR,QAAQ,CAAwB;QAGnD,IAAI,CAAC,YAAY,GAAG,QAAQ,CAAC,UAAU,CAAC,YAAY,CAAC;QACrD,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;IAC5G,CAAC;IAED,aAAa,CAAC,IAAc;QACzB,IAAI,CAAC,IAAI,EAAE,CAAC;YACT,OAAO,SAAS,CAAC;QACpB,CAAC;QACD,IAAI,EAAE,GAAG,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC;QAC9E,IAAI,CAAC,EAAE,EAAE,CAAC;YACP,OAAO,SAAS,CAAC;QACpB,CAAC;QACD,IAAI,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,CAAC;YAC7B,OAAO,EAAE,CAAC;QACb,CAAC;QACD,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC;QAClD,IAAI,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC;QAC7B,OAAO,MAAM,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,EAAE,CAAC;YAC7C,MAAM,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC;YACzF,IAAI,OAAO,EAAE,CAAC;gBACX,EAAE,GAAG,OAAO,GAAG,SAAS,GAAG,EAAE,CAAC;YACjC,CAAC;YACD,MAAM,GAAG,MAAM,CAAC,UAAU,CAAC;QAC9B,CAAC;QACD,OAAO,EAAE,CAAC;IACb,CAAC;IAED;;;;;;;OAOG;IACH,cAAc,CAAC,GAAW,EAAE,OAAgB;QACzC,OAAO,oBAAoB,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC;IAC/E,CAAC;IAED;;;;;;;;;;;;OAYG;IACO,cAAc,CAAC,IAAa;QACnC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;YACpB,OAAO,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAC1C,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE,CAAC;YAC/B,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACtD,CAAC;QACD,OAAO,KAAK,CAAC;IAChB,CAAC;IAED;;;;OAIG;IACO,mBAAmB,CAAC,IAAa;QACxC,IAAI,IAAI,CAAC,kBAAkB,KAAK,SAAS,IAAI,IAAI,CAAC,eAAe,KAAK,SAAS,EAAE,CAAC;YAC/E,OAAO,SAAS,CAAC;QACpB,CAAC;QACD,OAAO,GAAG,IAAI,CAAC,kBAAkB,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;IAC/D,CAAC;CACH"}
@@ -332,11 +332,22 @@ TTransfer extends TransferElement = TransferElement> {
332
332
  *
333
333
  * Phase invariants encoded in the return type:
334
334
  * - `parsed` / `linked` / `settled` / `indexed` return
335
- * `AstDocument<TAst, never>` — diagnostics array is empty by phase
336
- * contract.
335
+ * `AstDocument<TAst, never>` — no diagnostics have been computed at
336
+ * those phases.
337
337
  * - `validated` returns `AstDocument<TAst, TDiagnostic>` — diagnostics
338
338
  * are populated.
339
339
  *
340
+ * **The `never` is a claim about the PHASE, not a guarantee about the
341
+ * instance, and the gap is reachable rather than theoretical.** The wait
342
+ * underneath resolves at or ABOVE the requested state, so a document
343
+ * something else already carried past `Validated` comes back from
344
+ * `settled()` with a populated diagnostics array typed `never`. Nothing
345
+ * strips it — the envelope copies the live document's array verbatim — and
346
+ * any host that validates its workspace before a consumer asks produces
347
+ * exactly that. So read an empty array as "none were computed, or there are
348
+ * none", never as "this document is clean", and call {@link validated} when
349
+ * the answer has to mean the second.
350
+ *
340
351
  * `settled` is the integrity-overlay name for "all integrity rules
341
352
  * have fired"; it maps to {@link IntegrityService.SettledState} (which
342
353
  * equals `DocumentState.IndexedReferences`), but the dedicated method
@@ -1 +1 @@
1
- {"version":3,"file":"model-service.d.ts","sourceRoot":"","sources":["../../../src/langium/model-service/model-service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"model-service.d.ts","sourceRoot":"","sources":["../../../src/langium/model-service/model-service.ts"],"names":[],"mappings":"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"}
@@ -367,11 +367,22 @@ export class ModelService {
367
367
  *
368
368
  * Phase invariants encoded in the return type:
369
369
  * - `parsed` / `linked` / `settled` / `indexed` return
370
- * `AstDocument<TAst, never>` — diagnostics array is empty by phase
371
- * contract.
370
+ * `AstDocument<TAst, never>` — no diagnostics have been computed at
371
+ * those phases.
372
372
  * - `validated` returns `AstDocument<TAst, TDiagnostic>` — diagnostics
373
373
  * are populated.
374
374
  *
375
+ * **The `never` is a claim about the PHASE, not a guarantee about the
376
+ * instance, and the gap is reachable rather than theoretical.** The wait
377
+ * underneath resolves at or ABOVE the requested state, so a document
378
+ * something else already carried past `Validated` comes back from
379
+ * `settled()` with a populated diagnostics array typed `never`. Nothing
380
+ * strips it — the envelope copies the live document's array verbatim — and
381
+ * any host that validates its workspace before a consumer asks produces
382
+ * exactly that. So read an empty array as "none were computed, or there are
383
+ * none", never as "this document is clean", and call {@link validated} when
384
+ * the answer has to mean the second.
385
+ *
375
386
  * `settled` is the integrity-overlay name for "all integrity rules
376
387
  * have fired"; it maps to {@link IntegrityService.SettledState} (which
377
388
  * equals `DocumentState.IndexedReferences`), but the dedicated method
@@ -1 +1 @@
1
- {"version":3,"file":"model-service.js","sourceRoot":"","sources":["../../../src/langium/model-service/model-service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"model-service.js","sourceRoot":"","sources":["../../../src/langium/model-service/model-service.ts"],"names":[],"mappings":"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"}
@@ -9,7 +9,7 @@
9
9
  import { type LogThreshold, type MaybeObservableValue, ObservableValue, type Tracer } from '@hydranium/protocol';
10
10
  import { type AstNode, type AstNodeLocator, type AstReflection, DefaultDocumentValidator, type DiagnosticInfo, type LangiumDocument, type LangiumCoreServices, type ValidateSingleNodeOptions, type ValidationOptions, type ValidationSeverity } from '@hydranium/langium';
11
11
  import type { CancellationToken } from 'vscode-languageserver-protocol';
12
- import type { Diagnostic } from 'vscode-languageserver-types';
12
+ import { Diagnostic } from 'vscode-languageserver-types';
13
13
  import { type LogNameOptions } from '../diagnostics/logger.js';
14
14
  /**
15
15
  * Diagnostic read off a `LangiumDocument`: an LSP {@link Diagnostic} that MAY
@@ -49,6 +49,32 @@ export interface TransferLspDiagnostic extends Diagnostic {
49
49
  * render it has to special-case Langium's shape.
50
50
  */
51
51
  export declare const UNRESOLVED_REFERENCE: import("@hydranium/protocol").MessageDefinition<"Could not resolve reference to {referenceType} named '{refText}'.">;
52
+ /**
53
+ * A character no token of the grammar can start with.
54
+ *
55
+ * **The English is byte-identical to CHEVROTAIN's
56
+ * `defaultLexerErrorProvider.buildUnexpectedCharactersMessage`, and must stay
57
+ * so** — one layer further out than {@link UNRESOLVED_REFERENCE}, whose sentence
58
+ * is Langium's. Langium words neither: `processLexingErrors` copies
59
+ * `lexerDiagnostic.message` through untouched, so the text an adopter sees today
60
+ * is produced two dependencies down and is the only thing this identity may
61
+ * claim to be. {@link HydraniumDocumentValidator.identifyLexingError} attaches
62
+ * it only when the two match exactly, which is also what keeps a custom lexer's
63
+ * own diagnostics — Langium admits any of them through `lexerReport` — from
64
+ * being mislabelled as this one.
65
+ *
66
+ * It exists because a lexing error is the FIRST message a user of a new language
67
+ * sees and the one an adopter cannot reach: every other diagnostic worth
68
+ * translating either carries an identity already or is raised by adopter code,
69
+ * while this one arrives with a Langium `data.code` naming a KIND and no
70
+ * parameters at all — so a catalogue had nothing to key on and nothing to
71
+ * interpolate.
72
+ *
73
+ * `skipped` rather than `length`, matching what the sentence says the number
74
+ * means: chevrotain reports how many characters the lexer discarded to recover,
75
+ * which for a single stray character is one and for a run of them is the run.
76
+ */
77
+ export declare const LEXING_ERROR: import("@hydranium/protocol").MessageDefinition<"unexpected character: ->{character}<- at offset: {offset}, skipped {skipped} characters.">;
52
78
  export interface DocumentValidatorOptions extends LogNameOptions {
53
79
  /**
54
80
  * Level at which the `validateDocument` timing line is emitted, or `'off'`
@@ -105,6 +131,41 @@ export declare class HydraniumDocumentValidator extends DefaultDocumentValidator
105
131
  };
106
132
  }, options?: DocumentValidatorOptions);
107
133
  validateDocument(document: LangiumDocument, options?: ValidationOptions, cancelToken?: CancellationToken): Promise<Diagnostic[]>;
134
+ /**
135
+ * Langium's validation pass, plus the framework identity on the lexing
136
+ * diagnostics it produced.
137
+ *
138
+ * **Here rather than in an override of `processLexingErrors`, and the reason
139
+ * is that the seam cannot see what the identity needs.** Langium hands that
140
+ * method a `ParseResult`, which carries the AST and the error lists but not
141
+ * the source text — and the offending CHARACTER is the parameter a
142
+ * translation exists to interpolate. The document does carry it, and this is
143
+ * the innermost point that still holds one. Reconstructing the character by
144
+ * matching it out of the finished sentence was the alternative, and it
145
+ * inverts the direction the rest of this file works in: every other identity
146
+ * here is derived from structured fields and CHECKED against the prose.
147
+ *
148
+ * Inside the timing span rather than around it, so the line accounts for the
149
+ * whole pass.
150
+ */
151
+ protected validateAndIdentify(document: LangiumDocument, options?: ValidationOptions, cancelToken?: CancellationToken): Promise<Diagnostic[]>;
152
+ /**
153
+ * Add the {@link LEXING_ERROR} identity to one diagnostic, or return it
154
+ * untouched when it is not the sentence that identity renders.
155
+ *
156
+ * The parameters come from the diagnostic's own RANGE, not from
157
+ * `parseResult.lexerErrors`. Both hold the same numbers, and the range is the
158
+ * one that needs no assumption about upstream: correlating the two lists
159
+ * would depend on Langium appending one diagnostic per lexer error in order,
160
+ * which is true today and is an internal of the method being wrapped.
161
+ *
162
+ * **The format-and-compare is the whole discriminator, and it validates the
163
+ * reconstruction as well as the identity.** A range that did not round-trip
164
+ * to the offset chevrotain reported would produce a different sentence and be
165
+ * declined, so a wrong parameter set can never be attached to a right-looking
166
+ * message.
167
+ */
168
+ protected identifyLexingError(document: LangiumDocument, diagnostic: Diagnostic): Diagnostic;
108
169
  /**
109
170
  * Skip validation for a node **and its children** when
110
171
  * {@link shouldSkipValidation} returns true.
@@ -1 +1 @@
1
- {"version":3,"file":"document-validator.d.ts","sourceRoot":"","sources":["../../../src/langium/validation/document-validator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"document-validator.d.ts","sourceRoot":"","sources":["../../../src/langium/validation/document-validator.ts"],"names":[],"mappings":"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"}
@@ -7,7 +7,11 @@
7
7
  * SPDX-License-Identifier: MIT
8
8
  ********************************************************************************/
9
9
  import { defineMessage, describeError, messageData, ObservableValue, TransferDiagnostic } from '@hydranium/protocol';
10
- import { DefaultDocumentValidator } from '@hydranium/langium';
10
+ import { DefaultDocumentValidator, DocumentValidator } from '@hydranium/langium';
11
+ // A VALUE import, for `Diagnostic.getMessageString`: `message` is
12
+ // `string | MarkupContent` in LSP 3.17+, so upstream's own reader is what
13
+ // narrows it rather than a hand-rolled union check here.
14
+ import { Diagnostic } from 'vscode-languageserver-types';
11
15
  import { isSyntheticNode } from '../workspace/synthetic.js';
12
16
  import { isVirtualUri } from '../workspace/virtual-document.js';
13
17
  /**
@@ -26,6 +30,46 @@ import { isVirtualUri } from '../workspace/virtual-document.js';
26
30
  * render it has to special-case Langium's shape.
27
31
  */
28
32
  export const UNRESOLVED_REFERENCE = defineMessage('hydranium/core/unresolved-reference', "Could not resolve reference to {referenceType} named '{refText}'.");
33
+ /**
34
+ * A character no token of the grammar can start with.
35
+ *
36
+ * **The English is byte-identical to CHEVROTAIN's
37
+ * `defaultLexerErrorProvider.buildUnexpectedCharactersMessage`, and must stay
38
+ * so** — one layer further out than {@link UNRESOLVED_REFERENCE}, whose sentence
39
+ * is Langium's. Langium words neither: `processLexingErrors` copies
40
+ * `lexerDiagnostic.message` through untouched, so the text an adopter sees today
41
+ * is produced two dependencies down and is the only thing this identity may
42
+ * claim to be. {@link HydraniumDocumentValidator.identifyLexingError} attaches
43
+ * it only when the two match exactly, which is also what keeps a custom lexer's
44
+ * own diagnostics — Langium admits any of them through `lexerReport` — from
45
+ * being mislabelled as this one.
46
+ *
47
+ * It exists because a lexing error is the FIRST message a user of a new language
48
+ * sees and the one an adopter cannot reach: every other diagnostic worth
49
+ * translating either carries an identity already or is raised by adopter code,
50
+ * while this one arrives with a Langium `data.code` naming a KIND and no
51
+ * parameters at all — so a catalogue had nothing to key on and nothing to
52
+ * interpolate.
53
+ *
54
+ * `skipped` rather than `length`, matching what the sentence says the number
55
+ * means: chevrotain reports how many characters the lexer discarded to recover,
56
+ * which for a single stray character is one and for a run of them is the run.
57
+ */
58
+ export const LEXING_ERROR = defineMessage('hydranium/core/lexing-error', 'unexpected character: ->{character}<- at offset: {offset}, skipped {skipped} characters.');
59
+ /**
60
+ * Langium's own `data.code` values for a diagnostic that came out of the lexer.
61
+ *
62
+ * All four severities, not just the error one: `lexerReport` admits warnings and
63
+ * below, and a token builder that downgrades a stray character still produces
64
+ * the same sentence. Gating on the error code alone would leave the identity off
65
+ * a message that is word-for-word the one it names.
66
+ */
67
+ const LEXING_CODES = new Set([
68
+ DocumentValidator.LexingError,
69
+ DocumentValidator.LexingWarning,
70
+ DocumentValidator.LexingInfo,
71
+ DocumentValidator.LexingHint
72
+ ]);
29
73
  /**
30
74
  * Default validator behaviour for `@hydranium/core` consumers:
31
75
  *
@@ -66,15 +110,78 @@ export class HydraniumDocumentValidator extends DefaultDocumentValidator {
66
110
  }
67
111
  const level = this.logLevel.value;
68
112
  if (level === 'off') {
69
- return super.validateDocument(document, options, cancelToken);
113
+ return this.validateAndIdentify(document, options, cancelToken);
70
114
  }
71
115
  // `level` is narrowed to `LogLevel` past the early-return.
72
116
  return this.tracer
73
117
  .withUri(document.uri.toString())
74
- .time('validateDocument', () => super.validateDocument(document, options, cancelToken), level, {
118
+ .time('validateDocument', () => this.validateAndIdentify(document, options, cancelToken), level, {
75
119
  logAfterMs: this.logAfterMs.value
76
120
  });
77
121
  }
122
+ /**
123
+ * Langium's validation pass, plus the framework identity on the lexing
124
+ * diagnostics it produced.
125
+ *
126
+ * **Here rather than in an override of `processLexingErrors`, and the reason
127
+ * is that the seam cannot see what the identity needs.** Langium hands that
128
+ * method a `ParseResult`, which carries the AST and the error lists but not
129
+ * the source text — and the offending CHARACTER is the parameter a
130
+ * translation exists to interpolate. The document does carry it, and this is
131
+ * the innermost point that still holds one. Reconstructing the character by
132
+ * matching it out of the finished sentence was the alternative, and it
133
+ * inverts the direction the rest of this file works in: every other identity
134
+ * here is derived from structured fields and CHECKED against the prose.
135
+ *
136
+ * Inside the timing span rather than around it, so the line accounts for the
137
+ * whole pass.
138
+ */
139
+ async validateAndIdentify(document, options, cancelToken) {
140
+ const diagnostics = await super.validateDocument(document, options, cancelToken);
141
+ // Mapped in place over the array Langium built, rather than filtered and
142
+ // re-concatenated: the publish order is the diagnostic order and a
143
+ // reordering would move a squiggle's entry in the problems list.
144
+ for (let index = 0; index < diagnostics.length; index++) {
145
+ diagnostics[index] = this.identifyLexingError(document, diagnostics[index]);
146
+ }
147
+ return diagnostics;
148
+ }
149
+ /**
150
+ * Add the {@link LEXING_ERROR} identity to one diagnostic, or return it
151
+ * untouched when it is not the sentence that identity renders.
152
+ *
153
+ * The parameters come from the diagnostic's own RANGE, not from
154
+ * `parseResult.lexerErrors`. Both hold the same numbers, and the range is the
155
+ * one that needs no assumption about upstream: correlating the two lists
156
+ * would depend on Langium appending one diagnostic per lexer error in order,
157
+ * which is true today and is an internal of the method being wrapped.
158
+ *
159
+ * **The format-and-compare is the whole discriminator, and it validates the
160
+ * reconstruction as well as the identity.** A range that did not round-trip
161
+ * to the offset chevrotain reported would produce a different sentence and be
162
+ * declined, so a wrong parameter set can never be attached to a right-looking
163
+ * message.
164
+ */
165
+ identifyLexingError(document, diagnostic) {
166
+ const data = diagnostic.data;
167
+ if (!LEXING_CODES.has(data?.code)) {
168
+ return diagnostic;
169
+ }
170
+ const text = document.textDocument;
171
+ const offset = text.offsetAt(diagnostic.range.start);
172
+ const params = {
173
+ character: text.getText().charAt(offset),
174
+ offset,
175
+ skipped: text.offsetAt(diagnostic.range.end) - offset
176
+ };
177
+ if (Diagnostic.getMessageString(diagnostic) !== LEXING_ERROR.format(params)) {
178
+ return diagnostic;
179
+ }
180
+ // Merged OVER Langium's data, so `data.code` survives for the readers that
181
+ // switch on it — `stopAfterLexingErrors` is one, and the GLSP head's
182
+ // read-only decision is another.
183
+ return { ...diagnostic, code: LEXING_ERROR.code, data: { ...data, ...messageData(LEXING_ERROR, params) } };
184
+ }
78
185
  /**
79
186
  * Skip validation for a node **and its children** when
80
187
  * {@link shouldSkipValidation} returns true.