@hydranium/core 1.0.0-next.24 → 1.0.0-next.241

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 (649) hide show
  1. package/README.md +22 -17
  2. package/lib/documents/ast-document-manager.d.ts +219 -122
  3. package/lib/documents/ast-document-manager.d.ts.map +1 -1
  4. package/lib/documents/ast-document-manager.js +241 -130
  5. package/lib/documents/ast-document-manager.js.map +1 -1
  6. package/lib/documents/client-ids.d.ts +5 -19
  7. package/lib/documents/client-ids.d.ts.map +1 -1
  8. package/lib/documents/client-ids.js +5 -19
  9. package/lib/documents/client-ids.js.map +1 -1
  10. package/lib/documents/client-session-errors.d.ts +15 -0
  11. package/lib/documents/client-session-errors.d.ts.map +1 -0
  12. package/lib/documents/client-session-errors.js +15 -0
  13. package/lib/documents/client-session-errors.js.map +1 -0
  14. package/lib/documents/client-session-registry.d.ts +146 -0
  15. package/lib/documents/client-session-registry.d.ts.map +1 -0
  16. package/lib/documents/client-session-registry.js +207 -0
  17. package/lib/documents/client-session-registry.js.map +1 -0
  18. package/lib/documents/dirty-state-tracker.d.ts +79 -0
  19. package/lib/documents/dirty-state-tracker.d.ts.map +1 -0
  20. package/lib/documents/dirty-state-tracker.js +69 -0
  21. package/lib/documents/dirty-state-tracker.js.map +1 -0
  22. package/lib/documents/document-release-handler.d.ts +179 -0
  23. package/lib/documents/document-release-handler.d.ts.map +1 -0
  24. package/lib/documents/document-release-handler.js +283 -0
  25. package/lib/documents/document-release-handler.js.map +1 -0
  26. package/lib/documents/document-release-scheduler.d.ts +67 -0
  27. package/lib/documents/document-release-scheduler.d.ts.map +1 -0
  28. package/lib/documents/document-release-scheduler.js +80 -0
  29. package/lib/documents/document-release-scheduler.js.map +1 -0
  30. package/lib/documents/file-system-task-queue.d.ts +49 -0
  31. package/lib/documents/file-system-task-queue.d.ts.map +1 -0
  32. package/lib/documents/file-system-task-queue.js +34 -0
  33. package/lib/documents/file-system-task-queue.js.map +1 -0
  34. package/lib/documents/hydranium-text-documents.d.ts +399 -282
  35. package/lib/documents/hydranium-text-documents.d.ts.map +1 -1
  36. package/lib/documents/hydranium-text-documents.js +816 -483
  37. package/lib/documents/hydranium-text-documents.js.map +1 -1
  38. package/lib/documents/index.d.ts +10 -2
  39. package/lib/documents/index.d.ts.map +1 -1
  40. package/lib/documents/index.js +10 -2
  41. package/lib/documents/index.js.map +1 -1
  42. package/lib/documents/language-client-shadow.d.ts +218 -0
  43. package/lib/documents/language-client-shadow.d.ts.map +1 -0
  44. package/lib/documents/language-client-shadow.js +283 -0
  45. package/lib/documents/language-client-shadow.js.map +1 -0
  46. package/lib/documents/model-ledger.d.ts +47 -0
  47. package/lib/documents/model-ledger.d.ts.map +1 -0
  48. package/lib/documents/model-ledger.js +30 -0
  49. package/lib/documents/model-ledger.js.map +1 -0
  50. package/lib/documents/text-ledger.d.ts +64 -0
  51. package/lib/documents/text-ledger.d.ts.map +1 -0
  52. package/lib/documents/text-ledger.js +63 -0
  53. package/lib/documents/text-ledger.js.map +1 -0
  54. package/lib/documents/version-sync-service.d.ts +134 -0
  55. package/lib/documents/version-sync-service.d.ts.map +1 -0
  56. package/lib/documents/version-sync-service.js +171 -0
  57. package/lib/documents/version-sync-service.js.map +1 -0
  58. package/lib/index.d.ts +5 -0
  59. package/lib/index.d.ts.map +1 -1
  60. package/lib/index.js +8 -0
  61. package/lib/index.js.map +1 -1
  62. package/lib/langium/ast-extension/ast-extension-service.d.ts.map +1 -1
  63. package/lib/langium/ast-extension/ast-extension-service.js.map +1 -1
  64. package/lib/langium/ast-extension/ast-node-builder.d.ts +32 -9
  65. package/lib/langium/ast-extension/ast-node-builder.d.ts.map +1 -1
  66. package/lib/langium/ast-extension/ast-node-builder.js +60 -22
  67. package/lib/langium/ast-extension/ast-node-builder.js.map +1 -1
  68. package/lib/langium/bootstrap.d.ts +23 -16
  69. package/lib/langium/bootstrap.d.ts.map +1 -1
  70. package/lib/langium/bootstrap.js +66 -28
  71. package/lib/langium/bootstrap.js.map +1 -1
  72. package/lib/langium/build-phase-pass/build-phase-pass-service.d.ts.map +1 -1
  73. package/lib/langium/build-phase-pass/build-phase-pass-service.js.map +1 -1
  74. package/lib/langium/composite-ast-reflection.d.ts +46 -0
  75. package/lib/langium/composite-ast-reflection.d.ts.map +1 -0
  76. package/lib/langium/composite-ast-reflection.js +97 -0
  77. package/lib/langium/composite-ast-reflection.js.map +1 -0
  78. package/lib/langium/config/configuration-provider.d.ts +81 -0
  79. package/lib/langium/config/configuration-provider.d.ts.map +1 -0
  80. package/lib/langium/config/configuration-provider.js +112 -0
  81. package/lib/langium/config/configuration-provider.js.map +1 -0
  82. package/lib/langium/config/index.d.ts +1 -0
  83. package/lib/langium/config/index.d.ts.map +1 -1
  84. package/lib/langium/config/index.js +1 -0
  85. package/lib/langium/config/index.js.map +1 -1
  86. package/lib/langium/config/settings.js.map +1 -1
  87. package/lib/langium/diagnostics/hydranium-langium-profiler.d.ts.map +1 -1
  88. package/lib/langium/diagnostics/hydranium-langium-profiler.js.map +1 -1
  89. package/lib/langium/diagnostics/logger.d.ts +10 -3
  90. package/lib/langium/diagnostics/logger.d.ts.map +1 -1
  91. package/lib/langium/diagnostics/logger.js +12 -5
  92. package/lib/langium/diagnostics/logger.js.map +1 -1
  93. package/lib/langium/diagnostics/lsp-logger.d.ts +17 -0
  94. package/lib/langium/diagnostics/lsp-logger.d.ts.map +1 -1
  95. package/lib/langium/diagnostics/lsp-logger.js +57 -16
  96. package/lib/langium/diagnostics/lsp-logger.js.map +1 -1
  97. package/lib/langium/diagnostics/server-tracer.d.ts.map +1 -1
  98. package/lib/langium/diagnostics/server-tracer.js.map +1 -1
  99. package/lib/langium/document-builder/build-pipeline-integration.d.ts +21 -1
  100. package/lib/langium/document-builder/build-pipeline-integration.d.ts.map +1 -1
  101. package/lib/langium/document-builder/build-pipeline-integration.js +32 -5
  102. package/lib/langium/document-builder/build-pipeline-integration.js.map +1 -1
  103. package/lib/langium/document-builder/build-session.d.ts.map +1 -1
  104. package/lib/langium/document-builder/build-session.js.map +1 -1
  105. package/lib/langium/document-builder/document-builder.d.ts +294 -33
  106. package/lib/langium/document-builder/document-builder.d.ts.map +1 -1
  107. package/lib/langium/document-builder/document-builder.js +477 -61
  108. package/lib/langium/document-builder/document-builder.js.map +1 -1
  109. package/lib/langium/documentation/comment-provider.d.ts.map +1 -1
  110. package/lib/langium/documentation/comment-provider.js.map +1 -1
  111. package/lib/langium/integration-services.d.ts +61 -19
  112. package/lib/langium/integration-services.d.ts.map +1 -1
  113. package/lib/langium/integration-services.js +10 -5
  114. package/lib/langium/integration-services.js.map +1 -1
  115. package/lib/langium/integrity/integrity-rule.d.ts +16 -8
  116. package/lib/langium/integrity/integrity-rule.d.ts.map +1 -1
  117. package/lib/langium/integrity/integrity-rule.js.map +1 -1
  118. package/lib/langium/integrity/integrity-service.d.ts +81 -24
  119. package/lib/langium/integrity/integrity-service.d.ts.map +1 -1
  120. package/lib/langium/integrity/integrity-service.js +264 -57
  121. package/lib/langium/integrity/integrity-service.js.map +1 -1
  122. package/lib/langium/keys/containment.d.ts +64 -0
  123. package/lib/langium/keys/containment.d.ts.map +1 -0
  124. package/lib/langium/keys/containment.js +53 -0
  125. package/lib/langium/keys/containment.js.map +1 -0
  126. package/lib/langium/keys/index.d.ts +1 -0
  127. package/lib/langium/keys/index.d.ts.map +1 -1
  128. package/lib/langium/keys/index.js +1 -0
  129. package/lib/langium/keys/index.js.map +1 -1
  130. package/lib/langium/keys/name-based-key-provider.d.ts +4 -0
  131. package/lib/langium/keys/name-based-key-provider.d.ts.map +1 -1
  132. package/lib/langium/keys/name-based-key-provider.js +4 -0
  133. package/lib/langium/keys/name-based-key-provider.js.map +1 -1
  134. package/lib/langium/keys/positional-key-provider.d.ts.map +1 -1
  135. package/lib/langium/keys/positional-key-provider.js.map +1 -1
  136. package/lib/langium/labeling/label-provider.d.ts.map +1 -1
  137. package/lib/langium/labeling/label-provider.js.map +1 -1
  138. package/lib/langium/language-module.d.ts +29 -4
  139. package/lib/langium/language-module.d.ts.map +1 -1
  140. package/lib/langium/language-module.js +18 -4
  141. package/lib/langium/language-module.js.map +1 -1
  142. package/lib/langium/model-service/client-session.d.ts +343 -0
  143. package/lib/langium/model-service/client-session.d.ts.map +1 -0
  144. package/lib/langium/model-service/client-session.js +411 -0
  145. package/lib/langium/model-service/client-session.js.map +1 -0
  146. package/lib/langium/model-service/index.d.ts +2 -0
  147. package/lib/langium/model-service/index.d.ts.map +1 -1
  148. package/lib/langium/model-service/index.js +2 -0
  149. package/lib/langium/model-service/index.js.map +1 -1
  150. package/lib/langium/model-service/model-events.d.ts +61 -0
  151. package/lib/langium/model-service/model-events.d.ts.map +1 -0
  152. package/lib/langium/model-service/model-events.js +10 -0
  153. package/lib/langium/model-service/model-events.js.map +1 -0
  154. package/lib/langium/model-service/model-service.d.ts +432 -282
  155. package/lib/langium/model-service/model-service.d.ts.map +1 -1
  156. package/lib/langium/model-service/model-service.js +504 -438
  157. package/lib/langium/model-service/model-service.js.map +1 -1
  158. package/lib/langium/module.d.ts +150 -35
  159. package/lib/langium/module.d.ts.map +1 -1
  160. package/lib/langium/module.js +47 -35
  161. package/lib/langium/module.js.map +1 -1
  162. package/lib/langium/naming/name-provider.d.ts +25 -4
  163. package/lib/langium/naming/name-provider.d.ts.map +1 -1
  164. package/lib/langium/naming/name-provider.js +2 -1
  165. package/lib/langium/naming/name-provider.js.map +1 -1
  166. package/lib/langium/naming/name-separator-validation.d.ts +23 -0
  167. package/lib/langium/naming/name-separator-validation.d.ts.map +1 -1
  168. package/lib/langium/naming/name-separator-validation.js +30 -1
  169. package/lib/langium/naming/name-separator-validation.js.map +1 -1
  170. package/lib/langium/project/abstract-project-manager.d.ts.map +1 -1
  171. package/lib/langium/project/abstract-project-manager.js +9 -2
  172. package/lib/langium/project/abstract-project-manager.js.map +1 -1
  173. package/lib/langium/project/project-change-event.d.ts +2 -2
  174. package/lib/langium/project/single-project-manager.d.ts.map +1 -1
  175. package/lib/langium/project/single-project-manager.js.map +1 -1
  176. package/lib/langium/residency/cst-residency-service.d.ts +30 -10
  177. package/lib/langium/residency/cst-residency-service.d.ts.map +1 -1
  178. package/lib/langium/residency/cst-residency-service.js +23 -57
  179. package/lib/langium/residency/cst-residency-service.js.map +1 -1
  180. package/lib/langium/scope/ast-node-description-provider.d.ts.map +1 -1
  181. package/lib/langium/scope/ast-node-description-provider.js.map +1 -1
  182. package/lib/langium/scope/hydranium-scope-computation.d.ts.map +1 -1
  183. package/lib/langium/scope/hydranium-scope-computation.js.map +1 -1
  184. package/lib/langium/scope/hydranium-scope-provider.d.ts +48 -13
  185. package/lib/langium/scope/hydranium-scope-provider.d.ts.map +1 -1
  186. package/lib/langium/scope/hydranium-scope-provider.js +56 -20
  187. package/lib/langium/scope/hydranium-scope-provider.js.map +1 -1
  188. package/lib/langium/scope/reference-builder.d.ts.map +1 -1
  189. package/lib/langium/scope/reference-builder.js.map +1 -1
  190. package/lib/langium/scope/reference-candidate-provider.d.ts.map +1 -1
  191. package/lib/langium/scope/reference-candidate-provider.js.map +1 -1
  192. package/lib/langium/scope/scope-extension-service.d.ts.map +1 -1
  193. package/lib/langium/scope/scope-extension-service.js.map +1 -1
  194. package/lib/langium/serialization/abstract-serializer.d.ts +11 -20
  195. package/lib/langium/serialization/abstract-serializer.d.ts.map +1 -1
  196. package/lib/langium/serialization/abstract-serializer.js +12 -21
  197. package/lib/langium/serialization/abstract-serializer.js.map +1 -1
  198. package/lib/langium/serialization/json-serializer.d.ts +1 -1
  199. package/lib/langium/serialization/json-serializer.d.ts.map +1 -1
  200. package/lib/langium/serialization/json-serializer.js.map +1 -1
  201. package/lib/langium/serialization/yaml-serializer.d.ts.map +1 -1
  202. package/lib/langium/serialization/yaml-serializer.js.map +1 -1
  203. package/lib/langium/service-registry.d.ts +29 -1
  204. package/lib/langium/service-registry.d.ts.map +1 -1
  205. package/lib/langium/service-registry.js +37 -0
  206. package/lib/langium/service-registry.js.map +1 -1
  207. package/lib/langium/shared-services.d.ts +21 -6
  208. package/lib/langium/shared-services.d.ts.map +1 -1
  209. package/lib/langium/shared-services.js.map +1 -1
  210. package/lib/langium/single-langium-copy.d.ts +22 -0
  211. package/lib/langium/single-langium-copy.d.ts.map +1 -0
  212. package/lib/langium/single-langium-copy.js +36 -0
  213. package/lib/langium/single-langium-copy.js.map +1 -0
  214. package/lib/langium/transfer/transfer-encoder.d.ts +77 -26
  215. package/lib/langium/transfer/transfer-encoder.d.ts.map +1 -1
  216. package/lib/langium/transfer/transfer-encoder.js +46 -24
  217. package/lib/langium/transfer/transfer-encoder.js.map +1 -1
  218. package/lib/langium/trivia/comment-preserver.d.ts +423 -0
  219. package/lib/langium/trivia/comment-preserver.d.ts.map +1 -0
  220. package/lib/langium/trivia/comment-preserver.js +906 -0
  221. package/lib/langium/trivia/comment-preserver.js.map +1 -0
  222. package/lib/langium/trivia/document-ending-preserver.d.ts +43 -0
  223. package/lib/langium/trivia/document-ending-preserver.d.ts.map +1 -0
  224. package/lib/langium/trivia/document-ending-preserver.js +48 -0
  225. package/lib/langium/trivia/document-ending-preserver.js.map +1 -0
  226. package/lib/langium/trivia/index.d.ts +14 -0
  227. package/lib/langium/trivia/index.d.ts.map +1 -0
  228. package/lib/langium/trivia/index.js +14 -0
  229. package/lib/langium/trivia/index.js.map +1 -0
  230. package/lib/langium/trivia/trivia-contribution.d.ts +37 -0
  231. package/lib/langium/trivia/trivia-contribution.d.ts.map +1 -0
  232. package/lib/langium/trivia/trivia-contribution.js +10 -0
  233. package/lib/langium/trivia/trivia-contribution.js.map +1 -0
  234. package/lib/langium/trivia/trivia-preserver.d.ts +50 -0
  235. package/lib/langium/trivia/trivia-preserver.d.ts.map +1 -0
  236. package/lib/langium/trivia/trivia-preserver.js +10 -0
  237. package/lib/langium/trivia/trivia-preserver.js.map +1 -0
  238. package/lib/langium/trivia/trivia-service.d.ts +70 -0
  239. package/lib/langium/trivia/trivia-service.d.ts.map +1 -0
  240. package/lib/langium/trivia/trivia-service.js +56 -0
  241. package/lib/langium/trivia/trivia-service.js.map +1 -0
  242. package/lib/langium/update-rewrite/normalize-empty-strings.d.ts.map +1 -1
  243. package/lib/langium/update-rewrite/update-rewrite-service.d.ts.map +1 -1
  244. package/lib/langium/update-rewrite/update-rewrite-service.js.map +1 -1
  245. package/lib/langium/update-rewrite/update-rewrite.d.ts +1 -1
  246. package/lib/langium/validation/document-validator.d.ts +280 -9
  247. package/lib/langium/validation/document-validator.d.ts.map +1 -1
  248. package/lib/langium/validation/document-validator.js +448 -5
  249. package/lib/langium/validation/document-validator.js.map +1 -1
  250. package/lib/langium/validation/validation-contribution-collector.d.ts +9 -1
  251. package/lib/langium/validation/validation-contribution-collector.d.ts.map +1 -1
  252. package/lib/langium/validation/validation-contribution-collector.js +1 -1
  253. package/lib/langium/validation/validation-contribution-collector.js.map +1 -1
  254. package/lib/langium/workspace/document-uri-policy.d.ts +15 -10
  255. package/lib/langium/workspace/document-uri-policy.d.ts.map +1 -1
  256. package/lib/langium/workspace/document-uri-policy.js +7 -5
  257. package/lib/langium/workspace/document-uri-policy.js.map +1 -1
  258. package/lib/langium/workspace/file-not-found.d.ts +23 -0
  259. package/lib/langium/workspace/file-not-found.d.ts.map +1 -0
  260. package/lib/langium/workspace/file-not-found.js +31 -0
  261. package/lib/langium/workspace/file-not-found.js.map +1 -0
  262. package/lib/langium/workspace/file-system-provider.d.ts +135 -9
  263. package/lib/langium/workspace/file-system-provider.d.ts.map +1 -1
  264. package/lib/langium/workspace/file-system-provider.js +93 -14
  265. package/lib/langium/workspace/file-system-provider.js.map +1 -1
  266. package/lib/langium/workspace/hydranium-langium-document-factory.d.ts +56 -1
  267. package/lib/langium/workspace/hydranium-langium-document-factory.d.ts.map +1 -1
  268. package/lib/langium/workspace/hydranium-langium-document-factory.js +79 -0
  269. package/lib/langium/workspace/hydranium-langium-document-factory.js.map +1 -1
  270. package/lib/langium/workspace/hydranium-workspace-lock.d.ts +43 -1
  271. package/lib/langium/workspace/hydranium-workspace-lock.d.ts.map +1 -1
  272. package/lib/langium/workspace/hydranium-workspace-lock.js +58 -1
  273. package/lib/langium/workspace/hydranium-workspace-lock.js.map +1 -1
  274. package/lib/langium/workspace/hydranium-workspace-manager.d.ts +82 -9
  275. package/lib/langium/workspace/hydranium-workspace-manager.d.ts.map +1 -1
  276. package/lib/langium/workspace/hydranium-workspace-manager.js +128 -10
  277. package/lib/langium/workspace/hydranium-workspace-manager.js.map +1 -1
  278. package/lib/langium/workspace/in-memory-file-system-provider.d.ts +26 -3
  279. package/lib/langium/workspace/in-memory-file-system-provider.d.ts.map +1 -1
  280. package/lib/langium/workspace/in-memory-file-system-provider.js +41 -15
  281. package/lib/langium/workspace/in-memory-file-system-provider.js.map +1 -1
  282. package/lib/langium/workspace/index-manager.d.ts.map +1 -1
  283. package/lib/langium/workspace/index-manager.js.map +1 -1
  284. package/lib/langium/workspace/index.d.ts +1 -0
  285. package/lib/langium/workspace/index.d.ts.map +1 -1
  286. package/lib/langium/workspace/index.js +1 -0
  287. package/lib/langium/workspace/index.js.map +1 -1
  288. package/lib/langium/workspace/initialize-workspace.d.ts +31 -2
  289. package/lib/langium/workspace/initialize-workspace.d.ts.map +1 -1
  290. package/lib/langium/workspace/initialize-workspace.js +13 -5
  291. package/lib/langium/workspace/initialize-workspace.js.map +1 -1
  292. package/lib/langium/workspace/langium-documents.d.ts +46 -4
  293. package/lib/langium/workspace/langium-documents.d.ts.map +1 -1
  294. package/lib/langium/workspace/langium-documents.js +60 -5
  295. package/lib/langium/workspace/langium-documents.js.map +1 -1
  296. package/lib/langium/workspace/persistent-file-system-provider.d.ts +1 -8
  297. package/lib/langium/workspace/persistent-file-system-provider.d.ts.map +1 -1
  298. package/lib/langium/workspace/persistent-file-system-provider.js +0 -7
  299. package/lib/langium/workspace/persistent-file-system-provider.js.map +1 -1
  300. package/lib/{documents → langium/workspace}/self-save-registry.d.ts +38 -7
  301. package/lib/langium/workspace/self-save-registry.d.ts.map +1 -0
  302. package/lib/{documents → langium/workspace}/self-save-registry.js +29 -16
  303. package/lib/langium/workspace/self-save-registry.js.map +1 -0
  304. package/lib/langium/workspace/virtual-document.d.ts +48 -15
  305. package/lib/langium/workspace/virtual-document.d.ts.map +1 -1
  306. package/lib/langium/workspace/virtual-document.js +78 -18
  307. package/lib/langium/workspace/virtual-document.js.map +1 -1
  308. package/lib/langium/workspace/write-lock-scope.d.ts +20 -10
  309. package/lib/langium/workspace/write-lock-scope.d.ts.map +1 -1
  310. package/lib/langium/workspace/write-lock-scope.js +12 -4
  311. package/lib/langium/workspace/write-lock-scope.js.map +1 -1
  312. package/lib/locale/index.d.ts +10 -0
  313. package/lib/locale/index.d.ts.map +1 -0
  314. package/lib/locale/index.js +10 -0
  315. package/lib/locale/index.js.map +1 -0
  316. package/lib/locale/server-locale.d.ts +73 -0
  317. package/lib/locale/server-locale.d.ts.map +1 -0
  318. package/lib/locale/server-locale.js +61 -0
  319. package/lib/locale/server-locale.js.map +1 -0
  320. package/lib/lsp/completion/hydranium-completion-provider.d.ts +44 -2
  321. package/lib/lsp/completion/hydranium-completion-provider.d.ts.map +1 -1
  322. package/lib/lsp/completion/hydranium-completion-provider.js +68 -0
  323. package/lib/lsp/completion/hydranium-completion-provider.js.map +1 -1
  324. package/lib/lsp/connection-features.d.ts +23 -0
  325. package/lib/lsp/connection-features.d.ts.map +1 -0
  326. package/lib/lsp/connection-features.js +60 -0
  327. package/lib/lsp/connection-features.js.map +1 -0
  328. package/lib/lsp/diagnostics-connection.d.ts +27 -0
  329. package/lib/lsp/diagnostics-connection.d.ts.map +1 -0
  330. package/lib/lsp/diagnostics-connection.js +53 -0
  331. package/lib/lsp/diagnostics-connection.js.map +1 -0
  332. package/lib/lsp/hydranium-document-update-handler.d.ts +92 -81
  333. package/lib/lsp/hydranium-document-update-handler.d.ts.map +1 -1
  334. package/lib/lsp/hydranium-document-update-handler.js +153 -99
  335. package/lib/lsp/hydranium-document-update-handler.js.map +1 -1
  336. package/lib/lsp/index.d.ts +3 -1
  337. package/lib/lsp/index.d.ts.map +1 -1
  338. package/lib/lsp/index.js +3 -1
  339. package/lib/lsp/index.js.map +1 -1
  340. package/lib/lsp/lsp-latency.d.ts +39 -0
  341. package/lib/lsp/lsp-latency.d.ts.map +1 -0
  342. package/lib/lsp/lsp-latency.js +58 -0
  343. package/lib/lsp/lsp-latency.js.map +1 -0
  344. package/lib/lsp/semantic-token-provider.d.ts +34 -1
  345. package/lib/lsp/semantic-token-provider.d.ts.map +1 -1
  346. package/lib/lsp/semantic-token-provider.js +55 -8
  347. package/lib/lsp/semantic-token-provider.js.map +1 -1
  348. package/lib/lsp/shared-module.d.ts +4 -8
  349. package/lib/lsp/shared-module.d.ts.map +1 -1
  350. package/lib/lsp/shared-module.js.map +1 -1
  351. package/lib/lsp/start-language-server.d.ts +8 -7
  352. package/lib/lsp/start-language-server.d.ts.map +1 -1
  353. package/lib/lsp/start-language-server.js +13 -7
  354. package/lib/lsp/start-language-server.js.map +1 -1
  355. package/lib/messages/carriers.d.ts +54 -0
  356. package/lib/messages/carriers.d.ts.map +1 -0
  357. package/lib/messages/carriers.js +62 -0
  358. package/lib/messages/carriers.js.map +1 -0
  359. package/lib/messages/index.d.ts +25 -0
  360. package/lib/messages/index.d.ts.map +1 -0
  361. package/lib/messages/index.js +25 -0
  362. package/lib/messages/index.js.map +1 -0
  363. package/lib/messages/renderer.d.ts +142 -0
  364. package/lib/messages/renderer.d.ts.map +1 -0
  365. package/lib/messages/renderer.js +165 -0
  366. package/lib/messages/renderer.js.map +1 -0
  367. package/lib/node/event-loop-monitor.js.map +1 -1
  368. package/lib/node/heap-ceiling.d.ts +61 -0
  369. package/lib/node/heap-ceiling.d.ts.map +1 -0
  370. package/lib/node/heap-ceiling.js +72 -0
  371. package/lib/node/heap-ceiling.js.map +1 -0
  372. package/lib/node/index.d.ts +1 -1
  373. package/lib/node/index.d.ts.map +1 -1
  374. package/lib/node/index.js +1 -1
  375. package/lib/node/index.js.map +1 -1
  376. package/lib/node/latency-from-env.d.ts +1 -1
  377. package/lib/node/latency-from-env.js +1 -1
  378. package/lib/node/lint-grammar.js.map +1 -1
  379. package/lib/node/measure-memory.d.ts.map +1 -1
  380. package/lib/node/measure-memory.js +1 -0
  381. package/lib/node/measure-memory.js.map +1 -1
  382. package/lib/node/memory-monitor.js.map +1 -1
  383. package/lib/node/node-file-system-provider.d.ts +41 -6
  384. package/lib/node/node-file-system-provider.d.ts.map +1 -1
  385. package/lib/node/node-file-system-provider.js +109 -49
  386. package/lib/node/node-file-system-provider.js.map +1 -1
  387. package/lib/node/profile-capture.d.ts +8 -2
  388. package/lib/node/profile-capture.d.ts.map +1 -1
  389. package/lib/node/profile-capture.js +1 -1
  390. package/lib/node/profile-capture.js.map +1 -1
  391. package/lib/node/profile-digest.js.map +1 -1
  392. package/lib/node/profiling-run.d.ts +13 -3
  393. package/lib/node/profiling-run.d.ts.map +1 -1
  394. package/lib/node/profiling-run.js +17 -8
  395. package/lib/node/profiling-run.js.map +1 -1
  396. package/lib/node/rename-over-open-readers.d.ts +52 -0
  397. package/lib/node/rename-over-open-readers.d.ts.map +1 -0
  398. package/lib/node/rename-over-open-readers.js +66 -0
  399. package/lib/node/rename-over-open-readers.js.map +1 -0
  400. package/lib/node/socket-launcher.d.ts +20 -4
  401. package/lib/node/socket-launcher.d.ts.map +1 -1
  402. package/lib/node/socket-launcher.js +5 -4
  403. package/lib/node/socket-launcher.js.map +1 -1
  404. package/lib/node/stdio-launcher.d.ts +6 -5
  405. package/lib/node/stdio-launcher.d.ts.map +1 -1
  406. package/lib/node/stdio-launcher.js +2 -2
  407. package/lib/node/stdio-launcher.js.map +1 -1
  408. package/lib/testing/document-uri-policy-conformance.js.map +1 -1
  409. package/lib/testing/fake-description.js.map +1 -1
  410. package/lib/testing/fake-document.d.ts +16 -4
  411. package/lib/testing/fake-document.d.ts.map +1 -1
  412. package/lib/testing/fake-document.js +18 -3
  413. package/lib/testing/fake-document.js.map +1 -1
  414. package/lib/testing/index.d.ts +1 -1
  415. package/lib/testing/index.d.ts.map +1 -1
  416. package/lib/testing/index.js +2 -1
  417. package/lib/testing/index.js.map +1 -1
  418. package/lib/testing/langium-test-helpers.d.ts.map +1 -1
  419. package/lib/testing/langium-test-helpers.js +1 -0
  420. package/lib/testing/langium-test-helpers.js.map +1 -1
  421. package/lib/testing/make-noop-language-services.js.map +1 -1
  422. package/lib/testing/make-noop-shared-services.d.ts +14 -0
  423. package/lib/testing/make-noop-shared-services.d.ts.map +1 -1
  424. package/lib/testing/make-noop-shared-services.js +28 -2
  425. package/lib/testing/make-noop-shared-services.js.map +1 -1
  426. package/lib/testing/make-test-services.d.ts +72 -14
  427. package/lib/testing/make-test-services.d.ts.map +1 -1
  428. package/lib/testing/make-test-services.js +42 -10
  429. package/lib/testing/make-test-services.js.map +1 -1
  430. package/lib/testing/make-test-tracer.d.ts +12 -0
  431. package/lib/testing/make-test-tracer.d.ts.map +1 -1
  432. package/lib/testing/make-test-tracer.js +13 -0
  433. package/lib/testing/make-test-tracer.js.map +1 -1
  434. package/lib/testing/node/golden-corpus.js.map +1 -1
  435. package/lib/testing/node/index.d.ts +1 -0
  436. package/lib/testing/node/index.d.ts.map +1 -1
  437. package/lib/testing/node/index.js +1 -0
  438. package/lib/testing/node/index.js.map +1 -1
  439. package/lib/testing/node/lsp-harness.d.ts.map +1 -1
  440. package/lib/testing/node/lsp-harness.js +2 -0
  441. package/lib/testing/node/lsp-harness.js.map +1 -1
  442. package/lib/testing/node/lsp-server-connection.d.ts +11 -3
  443. package/lib/testing/node/lsp-server-connection.d.ts.map +1 -1
  444. package/lib/testing/node/lsp-server-connection.js +43 -10
  445. package/lib/testing/node/lsp-server-connection.js.map +1 -1
  446. package/lib/testing/node/scratch-workspace.d.ts.map +1 -1
  447. package/lib/testing/node/scratch-workspace.js +10 -5
  448. package/lib/testing/node/scratch-workspace.js.map +1 -1
  449. package/lib/testing/node/spawned-server.d.ts +14 -0
  450. package/lib/testing/node/spawned-server.d.ts.map +1 -1
  451. package/lib/testing/node/spawned-server.js +34 -2
  452. package/lib/testing/node/spawned-server.js.map +1 -1
  453. package/lib/testing/node/unhandled-rejections.d.ts +20 -0
  454. package/lib/testing/node/unhandled-rejections.d.ts.map +1 -0
  455. package/lib/testing/node/unhandled-rejections.js +32 -0
  456. package/lib/testing/node/unhandled-rejections.js.map +1 -0
  457. package/lib/testing/playwright/browser-capture-bridge.js.map +1 -1
  458. package/lib/testing/playwright/e2e-profiling.js.map +1 -1
  459. package/lib/testing/playwright/flaky-network-proxy.d.ts +76 -0
  460. package/lib/testing/playwright/flaky-network-proxy.d.ts.map +1 -0
  461. package/lib/testing/playwright/flaky-network-proxy.js +164 -0
  462. package/lib/testing/playwright/flaky-network-proxy.js.map +1 -0
  463. package/lib/testing/playwright/index.d.ts +1 -0
  464. package/lib/testing/playwright/index.d.ts.map +1 -1
  465. package/lib/testing/playwright/index.js +1 -0
  466. package/lib/testing/playwright/index.js.map +1 -1
  467. package/lib/testing/playwright/server-log-capture.d.ts +24 -8
  468. package/lib/testing/playwright/server-log-capture.d.ts.map +1 -1
  469. package/lib/testing/playwright/server-log-capture.js +27 -6
  470. package/lib/testing/playwright/server-log-capture.js.map +1 -1
  471. package/lib/testing/playwright/server-log-rename-reporter.d.ts.map +1 -1
  472. package/lib/testing/playwright/server-log-rename-reporter.js +10 -1
  473. package/lib/testing/playwright/server-log-rename-reporter.js.map +1 -1
  474. package/lib/testing/run-update-pipeline.d.ts +4 -4
  475. package/lib/testing/run-update-pipeline.d.ts.map +1 -1
  476. package/lib/testing/stub-ast-document-manager.d.ts +11 -52
  477. package/lib/testing/stub-ast-document-manager.d.ts.map +1 -1
  478. package/lib/testing/stub-ast-document-manager.js +24 -65
  479. package/lib/testing/stub-ast-document-manager.js.map +1 -1
  480. package/lib/testing/stub-document-builder.d.ts +26 -11
  481. package/lib/testing/stub-document-builder.d.ts.map +1 -1
  482. package/lib/testing/stub-document-builder.js +78 -5
  483. package/lib/testing/stub-document-builder.js.map +1 -1
  484. package/lib/testing/stub-hydranium-text-documents.d.ts +33 -10
  485. package/lib/testing/stub-hydranium-text-documents.d.ts.map +1 -1
  486. package/lib/testing/stub-hydranium-text-documents.js +115 -16
  487. package/lib/testing/stub-hydranium-text-documents.js.map +1 -1
  488. package/lib/testing/stub-index-manager.js.map +1 -1
  489. package/lib/testing/stub-langium-documents.d.ts +3 -2
  490. package/lib/testing/stub-langium-documents.d.ts.map +1 -1
  491. package/lib/testing/stub-langium-documents.js.map +1 -1
  492. package/lib/testing/stub-model-service.d.ts +7 -6
  493. package/lib/testing/stub-model-service.d.ts.map +1 -1
  494. package/lib/testing/stub-model-service.js +4 -4
  495. package/lib/testing/stub-model-service.js.map +1 -1
  496. package/lib/testing/stub-project-manager.js.map +1 -1
  497. package/lib/testing/stub-self-save-registry.d.ts +1 -1
  498. package/lib/testing/stub-self-save-registry.d.ts.map +1 -1
  499. package/lib/testing/stub-service-registry.d.ts +1 -1
  500. package/lib/testing/stub-service-registry.js.map +1 -1
  501. package/lib/testing/stub-writable-file-system.d.ts +1 -1
  502. package/lib/testing/stub-writable-file-system.d.ts.map +1 -1
  503. package/lib/util/connection-liveness.d.ts +7 -6
  504. package/lib/util/connection-liveness.d.ts.map +1 -1
  505. package/lib/util/connection-liveness.js +35 -14
  506. package/lib/util/connection-liveness.js.map +1 -1
  507. package/lib/util/environment.d.ts.map +1 -1
  508. package/lib/util/environment.js.map +1 -1
  509. package/lib/util/registry.d.ts.map +1 -1
  510. package/package.json +32 -48
  511. package/src/documents/ast-document-manager.ts +379 -231
  512. package/src/documents/client-ids.ts +5 -22
  513. package/src/documents/client-session-errors.ts +24 -0
  514. package/src/documents/client-session-registry.ts +262 -0
  515. package/src/documents/dirty-state-tracker.ts +130 -0
  516. package/src/documents/document-release-handler.ts +365 -0
  517. package/src/documents/document-release-scheduler.ts +121 -0
  518. package/src/documents/file-system-task-queue.ts +68 -0
  519. package/src/documents/hydranium-text-documents.ts +931 -595
  520. package/src/documents/index.ts +10 -2
  521. package/src/documents/language-client-shadow.ts +451 -0
  522. package/src/documents/model-ledger.ts +66 -0
  523. package/src/documents/text-ledger.ts +112 -0
  524. package/src/documents/version-sync-service.ts +267 -0
  525. package/src/index.ts +8 -0
  526. package/src/langium/ast-extension/ast-node-builder.ts +66 -22
  527. package/src/langium/bootstrap.ts +66 -28
  528. package/src/langium/composite-ast-reflection.ts +112 -0
  529. package/src/langium/config/configuration-provider.ts +119 -0
  530. package/src/langium/config/index.ts +1 -0
  531. package/src/langium/diagnostics/logger.ts +12 -5
  532. package/src/langium/diagnostics/lsp-logger.ts +59 -15
  533. package/src/langium/document-builder/build-pipeline-integration.ts +50 -5
  534. package/src/langium/document-builder/document-builder.ts +565 -59
  535. package/src/langium/integration-services.ts +83 -24
  536. package/src/langium/integrity/integrity-rule.ts +16 -8
  537. package/src/langium/integrity/integrity-service.ts +287 -62
  538. package/src/langium/keys/containment.ts +87 -0
  539. package/src/langium/keys/index.ts +1 -0
  540. package/src/langium/keys/name-based-key-provider.ts +4 -0
  541. package/src/langium/language-module.ts +48 -7
  542. package/src/langium/model-service/client-session.ts +644 -0
  543. package/src/langium/model-service/index.ts +2 -0
  544. package/src/langium/model-service/model-events.ts +75 -0
  545. package/src/langium/model-service/model-service.ts +790 -468
  546. package/src/langium/module.ts +199 -64
  547. package/src/langium/naming/name-provider.ts +27 -5
  548. package/src/langium/naming/name-separator-validation.ts +34 -5
  549. package/src/langium/project/abstract-project-manager.ts +9 -1
  550. package/src/langium/project/project-change-event.ts +2 -2
  551. package/src/langium/residency/cst-residency-service.ts +45 -14
  552. package/src/langium/scope/hydranium-scope-provider.ts +60 -22
  553. package/src/langium/serialization/abstract-serializer.ts +13 -32
  554. package/src/langium/service-registry.ts +41 -2
  555. package/src/langium/shared-services.ts +21 -6
  556. package/src/langium/single-langium-copy.ts +42 -0
  557. package/src/langium/transfer/transfer-encoder.ts +104 -37
  558. package/src/langium/trivia/comment-preserver.ts +1100 -0
  559. package/src/langium/trivia/document-ending-preserver.ts +55 -0
  560. package/src/langium/trivia/index.ts +14 -0
  561. package/src/langium/trivia/trivia-contribution.ts +39 -0
  562. package/src/langium/trivia/trivia-preserver.ts +54 -0
  563. package/src/langium/trivia/trivia-service.ts +99 -0
  564. package/src/langium/update-rewrite/update-rewrite.ts +1 -1
  565. package/src/langium/validation/document-validator.ts +523 -10
  566. package/src/langium/validation/validation-contribution-collector.ts +10 -1
  567. package/src/langium/workspace/document-uri-policy.ts +15 -10
  568. package/src/langium/workspace/file-not-found.ts +35 -0
  569. package/src/langium/workspace/file-system-provider.ts +205 -17
  570. package/src/langium/workspace/hydranium-langium-document-factory.ts +117 -0
  571. package/src/langium/workspace/hydranium-workspace-lock.ts +86 -2
  572. package/src/langium/workspace/hydranium-workspace-manager.ts +154 -14
  573. package/src/langium/workspace/in-memory-file-system-provider.ts +48 -17
  574. package/src/langium/workspace/index.ts +1 -0
  575. package/src/langium/workspace/initialize-workspace.ts +43 -5
  576. package/src/langium/workspace/langium-documents.ts +75 -6
  577. package/src/langium/workspace/persistent-file-system-provider.ts +1 -8
  578. package/src/{documents → langium/workspace}/self-save-registry.ts +54 -15
  579. package/src/langium/workspace/virtual-document.ts +96 -19
  580. package/src/langium/workspace/write-lock-scope.ts +24 -11
  581. package/src/locale/index.ts +10 -0
  582. package/src/locale/server-locale.ts +86 -0
  583. package/src/lsp/completion/hydranium-completion-provider.ts +82 -2
  584. package/src/lsp/connection-features.ts +67 -0
  585. package/src/lsp/diagnostics-connection.ts +56 -0
  586. package/src/lsp/hydranium-document-update-handler.ts +187 -108
  587. package/src/lsp/index.ts +3 -1
  588. package/src/lsp/lsp-latency.ts +62 -0
  589. package/src/lsp/semantic-token-provider.ts +74 -7
  590. package/src/lsp/shared-module.ts +4 -8
  591. package/src/lsp/start-language-server.ts +13 -7
  592. package/src/messages/carriers.ts +78 -0
  593. package/src/messages/index.ts +36 -0
  594. package/src/messages/renderer.ts +212 -0
  595. package/src/node/heap-ceiling.ts +108 -0
  596. package/src/node/index.ts +1 -1
  597. package/src/node/latency-from-env.ts +1 -1
  598. package/src/node/measure-memory.ts +1 -0
  599. package/src/node/node-file-system-provider.ts +124 -53
  600. package/src/node/profile-capture.ts +9 -3
  601. package/src/node/profiling-run.ts +30 -8
  602. package/src/node/rename-over-open-readers.ts +78 -0
  603. package/src/node/socket-launcher.ts +24 -8
  604. package/src/node/stdio-launcher.ts +8 -7
  605. package/src/testing/fake-document.ts +24 -5
  606. package/src/testing/index.ts +2 -1
  607. package/src/testing/langium-test-helpers.ts +1 -0
  608. package/src/testing/make-noop-shared-services.ts +50 -2
  609. package/src/testing/make-test-services.ts +125 -31
  610. package/src/testing/make-test-tracer.ts +26 -0
  611. package/src/testing/node/index.ts +1 -0
  612. package/src/testing/node/lsp-harness.ts +2 -0
  613. package/src/testing/node/lsp-server-connection.ts +66 -12
  614. package/src/testing/node/scratch-workspace.ts +10 -5
  615. package/src/testing/node/spawned-server.ts +36 -2
  616. package/src/testing/node/unhandled-rejections.ts +31 -0
  617. package/src/testing/parse-semantic-root.ts +1 -1
  618. package/src/testing/playwright/flaky-network-proxy.ts +240 -0
  619. package/src/testing/playwright/index.ts +1 -0
  620. package/src/testing/playwright/server-log-capture.ts +45 -11
  621. package/src/testing/playwright/server-log-rename-reporter.ts +12 -1
  622. package/src/testing/run-update-pipeline.ts +4 -4
  623. package/src/testing/stub-ast-document-manager.ts +36 -138
  624. package/src/testing/stub-document-builder.ts +102 -18
  625. package/src/testing/stub-hydranium-text-documents.ts +165 -27
  626. package/src/testing/stub-langium-documents.ts +3 -2
  627. package/src/testing/stub-model-service.ts +9 -8
  628. package/src/testing/stub-self-save-registry.ts +1 -1
  629. package/src/testing/stub-service-registry.ts +1 -1
  630. package/src/testing/stub-writable-file-system.ts +1 -1
  631. package/src/util/connection-liveness.ts +37 -14
  632. package/src/util/environment.ts +9 -1
  633. package/lib/documents/language-client-text-shadow.d.ts +0 -101
  634. package/lib/documents/language-client-text-shadow.d.ts.map +0 -1
  635. package/lib/documents/language-client-text-shadow.js +0 -156
  636. package/lib/documents/language-client-text-shadow.js.map +0 -1
  637. package/lib/documents/self-save-registry.d.ts.map +0 -1
  638. package/lib/documents/self-save-registry.js.map +0 -1
  639. package/lib/lsp/instrument-connection.d.ts +0 -36
  640. package/lib/lsp/instrument-connection.d.ts.map +0 -1
  641. package/lib/lsp/instrument-connection.js +0 -62
  642. package/lib/lsp/instrument-connection.js.map +0 -1
  643. package/lib/node/process-memory.d.ts +0 -66
  644. package/lib/node/process-memory.d.ts.map +0 -1
  645. package/lib/node/process-memory.js +0 -252
  646. package/lib/node/process-memory.js.map +0 -1
  647. package/src/documents/language-client-text-shadow.ts +0 -175
  648. package/src/lsp/instrument-connection.ts +0 -66
  649. package/src/node/process-memory.ts +0 -299
@@ -8,10 +8,12 @@
8
8
  ********************************************************************************/
9
9
 
10
10
  import {
11
+ asModelVersion,
12
+ hasMessageIdentity,
13
+ type TransferModelSnapshot,
11
14
  type Tracer,
12
15
  type TransferDiagnostic,
13
16
  type TransferElement,
14
- type TransferDocument,
15
17
  type TransferTypeFor
16
18
  } from '@hydranium/protocol';
17
19
  import { AstUtils, type AstNode, DocumentCache, DocumentState, isAstNode, isReference, type LangiumDocument } from '@hydranium/langium';
@@ -19,7 +21,7 @@ import { Diagnostic, DiagnosticSeverity } from 'vscode-languageserver-protocol';
19
21
  import { type AstDocument } from '../../documents/ast-document-manager.js';
20
22
  import { type LogNameOptions } from '../diagnostics/logger.js';
21
23
  import { type ServerSharedServicesMinimal } from '../shared-services.js';
22
- import { type TransferLspDiagnostic } from '../validation/document-validator.js';
24
+ import { type AstDiagnostic } from '../validation/document-validator.js';
23
25
 
24
26
  /**
25
27
  * Which set of properties {@link TransferEncoder.toTransfer} emits.
@@ -28,11 +30,13 @@ import { type TransferLspDiagnostic } from '../validation/document-validator.js'
28
30
  * including AST-extension-derived computed scalars and synthetic child
29
31
  * mirrors. This is the wire shape clients consume, and the default.
30
32
  * - `'grammar'` — only the grammar-declared properties, per
31
- * `AstReflection.getTypeMetaData($type).properties`. Excludes every
32
- * computed / synthetic property by construction (no naming convention,
33
- * no registration). Yields the authored state a serializer round-trips —
34
- * a diffable, acyclic baseline for field-level recording / forward-write
35
- * reconcile.
33
+ * `AstReflection.getTypeMetaData($type).properties`, each carrying the
34
+ * node's own authored value. Excludes every computed / synthetic property
35
+ * by construction (no naming convention, no registration) and bypasses the
36
+ * `resolvePropertyValue` substitution hook, so neither a computed KEY nor a
37
+ * computed VALUE can reach this shape. Yields the authored state a
38
+ * serializer round-trips — a diffable, acyclic baseline for field-level
39
+ * recording / forward-write reconcile.
36
40
  */
37
41
  export type TransferMode = 'full' | 'grammar';
38
42
 
@@ -72,11 +76,52 @@ export interface EncodeContext {
72
76
  * `diagnostics` accepts either the wire shape (an already-projected
73
77
  * `TDiagnostic`, as a snapshot may carry) or a raw LSP {@link Diagnostic}; the
74
78
  * assembly projects each through {@link TransferEncoder.toTransferDiagnostic}.
79
+ * Absent for a document not validated yet, and left absent on the wire.
75
80
  */
76
81
  export interface TransferEnvelopeSource<TDiagnostic> {
77
82
  readonly uri: string;
78
83
  readonly version: number;
79
- readonly diagnostics: readonly (TDiagnostic | Diagnostic)[];
84
+ readonly diagnostics?: readonly (TDiagnostic | Diagnostic)[];
85
+ }
86
+
87
+ /**
88
+ * A `TransferDocument` as the encoder produces it: the model block without
89
+ * its `hash`, which the data server computes from the encoded model.
90
+ */
91
+ export interface EncodedTransferDocument<TTransfer extends TransferElement, TDiagnostic = TransferDiagnostic> {
92
+ uri: string;
93
+ model: Omit<TransferModelSnapshot<TTransfer, TDiagnostic>, 'hash'>;
94
+ }
95
+
96
+ /**
97
+ * The AST→transfer contract a DI slot holds, implemented by
98
+ * {@link DefaultTransferEncoder}.
99
+ *
100
+ * **This is an interface and not the class, and that is load-bearing.** A class
101
+ * in a slot drags its `protected` members into every assignability check, which
102
+ * TypeScript compares NOMINALLY — so the slot type could not be satisfied by a
103
+ * subclass declared against a second physical copy of this package, and an
104
+ * adopter narrowing the slot had to intersect with the framework's declaration
105
+ * rather than replace it, leaving method resolution dependent on declaration
106
+ * order. An interface has no protected members and is compared structurally, so
107
+ * neither applies.
108
+ *
109
+ * **The transfer returns are the structural base ({@link TransferElement}), not
110
+ * the per-grammar overlay.** The overlay cannot parameterise this contract:
111
+ * `TransferTypeFor` reaches `keyof TTransferMap`, which makes that parameter
112
+ * measured-INVARIANT, and invariant parameters relate only when their arguments
113
+ * are mutually assignable — so a map-parameterised contract admits no adopter
114
+ * instantiation at all. Heads read this contract and do not know adopter maps;
115
+ * an adopter recovers the precise type by declaring its own slot, which it can
116
+ * now do by replacement.
117
+ */
118
+ export interface TransferEncoder<TDiagnostic extends TransferDiagnostic = TransferDiagnostic> {
119
+ toTransfer<T extends AstNode>(ast: T, mode?: TransferMode): TransferElement;
120
+ toTransferDocument(langiumDocument: LangiumDocument): EncodedTransferDocument<TransferElement, TDiagnostic>;
121
+ astDocumentToTransferDocument<TAst extends AstNode>(
122
+ document: AstDocument<TAst, AstDiagnostic>
123
+ ): EncodedTransferDocument<TransferElement, TDiagnostic>;
124
+ toTransferDiagnostic(diagnostic: AstDiagnostic): TDiagnostic;
80
125
  }
81
126
 
82
127
  /**
@@ -112,18 +157,19 @@ export interface TransferEnvelopeSource<TDiagnostic> {
112
157
  * - {@link propertyKeys} — which property names the walk visits.
113
158
  * - {@link shouldEmitProperty} — per-key filter on top of the default
114
159
  * `$`-internals strip.
115
- * - {@link resolvePropertyValue} — value substitution per property.
160
+ * - {@link resolvePropertyValue} — value substitution per property, `'full'`
161
+ * mode only (see there for why `'grammar'` bypasses it).
116
162
  * - {@link finalizeTransferNode} — post-decoration per encoded node.
117
163
  * - {@link toTransferValue} — recursion seam per property value. Override
118
164
  * to special-case reference encoding or to drop specific value shapes.
119
165
  * Envelope-level seams:
120
166
  * - {@link toTransferDocument} — bundle root + diagnostics into the wire
121
- * {@link TransferDocument} envelope. Override to filter / merge
167
+ * {@link EncodedTransferDocument} envelope. Override to filter / merge
122
168
  * diagnostics from auxiliary sources or to project a synthesised root.
123
- * - {@link toTransferDiagnostic} — project a {@link TransferLspDiagnostic}
169
+ * - {@link toTransferDiagnostic} — project a {@link AstDiagnostic}
124
170
  * (the framework validator's output) to {@link TDiagnostic}.
125
171
  */
126
- export class TransferEncoder<
172
+ export class DefaultTransferEncoder<
127
173
  // The map is intentionally unconstrained — adopters supply typed
128
174
  // overlays whose specific-key shapes don't structurally satisfy a
129
175
  // `Record<string, TransferElement>` index signature. `TransferTypeFor`
@@ -226,7 +272,14 @@ export class TransferEncoder<
226
272
  if (!this.shouldEmitProperty(ast, key, context)) {
227
273
  continue;
228
274
  }
229
- const value = this.resolvePropertyValue(ast, key, context);
275
+ // `'grammar'` reads the authored value straight off the node rather than
276
+ // through `resolvePropertyValue`. The mode promises a shape the serializer
277
+ // round-trips, and a value-substitution hook cannot honour that: what it
278
+ // returns is by construction not what the document declared. Scoping the
279
+ // hook to `'full'` is what makes that guarantee structural instead of a
280
+ // rule every override has to remember.
281
+ const value =
282
+ context.mode === 'grammar' ? (ast as unknown as Record<string, unknown>)[key] : this.resolvePropertyValue(ast, key, context);
230
283
  // `'grammar'` lists every declared property, including those absent on
231
284
  // this node; skip the absent ones. (`'full'` enumerates only own
232
285
  // properties, so absent properties never surface there.) Part of the
@@ -267,8 +320,17 @@ export class TransferEncoder<
267
320
  }
268
321
 
269
322
  /**
270
- * Which value the walk emits under `key`. Default: the node's own value.
271
- * Override to substitute a derived value under a grammar property name.
323
+ * Which value the walk emits under `key`, in `'full'` mode ONLY. Default:
324
+ * the node's own value.
325
+ *
326
+ * Override to substitute a derived value under a grammar property name — an
327
+ * inheritance-resolved field, a preference-dependent label. `'grammar'`
328
+ * bypasses this hook and reads the node directly: that mode's contract is
329
+ * the authored state a serializer round-trips, and a substituted value is by
330
+ * construction not the one the document declared. An override that applied
331
+ * in both modes would leave the grammar shape carrying derived values under
332
+ * declared property names — diffable and acyclic still, but no longer
333
+ * authored, which is the property every consumer of that mode relies on.
272
334
  */
273
335
  protected resolvePropertyValue(ast: AstNode, key: string, _context: EncodeContext): unknown {
274
336
  return (ast as unknown as Record<string, unknown>)[key];
@@ -285,7 +347,7 @@ export class TransferEncoder<
285
347
  }
286
348
 
287
349
  /**
288
- * Build a wire {@link TransferDocument} envelope from a built
350
+ * Build a wire {@link EncodedTransferDocument} envelope from a built
289
351
  * {@link LangiumDocument}. The `'full'` root is served from the internal
290
352
  * {@link rootCache} (memoised per document until it next rebuilds), under
291
353
  * {@link rootCacheKey} — so the data-server's fingerprint and emitted
@@ -309,7 +371,7 @@ export class TransferEncoder<
309
371
  */
310
372
  toTransferDocument<TAst extends AstNode>(
311
373
  langiumDocument: LangiumDocument
312
- ): TransferDocument<TransferTypeFor<TAst, TTransferMap>, TDiagnostic> {
374
+ ): EncodedTransferDocument<TransferTypeFor<TAst, TTransferMap>, TDiagnostic> {
313
375
  const context = this.createEncodeContext('full', langiumDocument.uri.toString());
314
376
  const root = this.rootCache.get(langiumDocument.uri, this.rootCacheKey(context), () =>
315
377
  this.encodeNode(langiumDocument.parseResult.value, context)
@@ -317,8 +379,8 @@ export class TransferEncoder<
317
379
  return this.assembleTransferDocument<TAst>(
318
380
  {
319
381
  uri: langiumDocument.textDocument.uri,
320
- version: langiumDocument.textDocument.version,
321
- diagnostics: langiumDocument.diagnostics ?? []
382
+ version: this.services.workspace.ModelLedger.versionOf(langiumDocument.parseResult.value),
383
+ diagnostics: langiumDocument.diagnostics
322
384
  },
323
385
  root
324
386
  );
@@ -339,27 +401,22 @@ export class TransferEncoder<
339
401
  protected assembleTransferDocument<TAst extends AstNode>(
340
402
  source: TransferEnvelopeSource<TDiagnostic>,
341
403
  root: TransferTypeFor<TAst, TTransferMap>
342
- ): TransferDocument<TransferTypeFor<TAst, TTransferMap>, TDiagnostic> {
343
- return {
344
- uri: source.uri,
345
- version: source.version,
346
- root,
347
- diagnostics: source.diagnostics.map(diagnostic => this.toTransferDiagnostic(diagnostic as TransferLspDiagnostic))
348
- };
404
+ ): EncodedTransferDocument<TransferTypeFor<TAst, TTransferMap>, TDiagnostic> {
405
+ const diagnostics = source.diagnostics?.map(diagnostic => this.toTransferDiagnostic(diagnostic as AstDiagnostic));
406
+ return { uri: source.uri, model: { root, version: asModelVersion(source.version), ...(diagnostics ? { diagnostics } : {}) } };
349
407
  }
350
408
 
351
409
  /**
352
- * Build a wire {@link TransferDocument} envelope from a server-internal
353
- * {@link AstDocument} snapshot (the AST-typed envelope emitted by
354
- * `AstDocumentManager.onUpdate` / `onSave` and returned from
355
- * `ModelService.request` / `update` / `save`). Distinct from
410
+ * Build a wire {@link EncodedTransferDocument} envelope from a server-internal
411
+ * {@link AstDocument} snapshot (the AST-typed envelope `ModelService`'s
412
+ * events carry and its reads and session writes return). Distinct from
356
413
  * {@link toTransferDocument}(`LangiumDocument`) which encodes against
357
414
  * the live build artifact — adopter facade returns hold the snapshot
358
415
  * directly, and this helper bridges that to the wire shape without a
359
416
  * second `LangiumDocuments.getDocument` lookup.
360
417
  *
361
418
  * The `diagnostic` projection assumes the snapshot's diagnostics carry
362
- * the `TransferLspDiagnostic` shape ({@link Diagnostic} plus the
419
+ * the `AstDiagnostic` shape ({@link Diagnostic} plus the
363
420
  * framework validator's `element` / `property` decoration). Snapshots
364
421
  * built from raw Langium diagnostics structurally satisfy this — the
365
422
  * extra fields are optional in the projection.
@@ -370,15 +427,15 @@ export class TransferEncoder<
370
427
  * assembly seam rather than duplicating it.
371
428
  */
372
429
  astDocumentToTransferDocument<TAst extends AstNode>(
373
- document: AstDocument<TAst, TDiagnostic | TransferLspDiagnostic>
374
- ): TransferDocument<TransferTypeFor<TAst, TTransferMap>, TDiagnostic> {
430
+ document: AstDocument<TAst, AstDiagnostic>
431
+ ): EncodedTransferDocument<TransferTypeFor<TAst, TTransferMap>, TDiagnostic> {
375
432
  const root = this.encodeNode(document.root, this.createEncodeContext('full', document.uri)) as TransferTypeFor<TAst, TTransferMap>;
376
433
  return this.assembleTransferDocument<TAst>(document, root);
377
434
  }
378
435
 
379
436
  /**
380
437
  * Project an LSP-shaped diagnostic (typically a
381
- * {@link TransferLspDiagnostic} produced by
438
+ * {@link AstDiagnostic} produced by
382
439
  * `HydraniumDocumentValidator` — adds `element` + optional `property`
383
440
  * to the standard {@link Diagnostic} shape) to the wire-diagnostic
384
441
  * shape.
@@ -387,15 +444,24 @@ export class TransferEncoder<
387
444
  * LSP severity enum to the wire string union, discriminates the
388
445
  * diagnostic type from Langium's `data.code` (`'lexing-error'` /
389
446
  * `'parsing-error'` else `'validation-error'`), passes through
390
- * message / element / property / code. Adopters whose validator
447
+ * message / element / property / code, and lifts the framework message
448
+ * params out of `data` so a translating surface can render a
449
+ * parameterised diagnostic rather than a template with its placeholders
450
+ * left standing. Adopters whose validator
391
451
  * doesn't decorate diagnostics with `element` still get a valid
392
452
  * `TransferDiagnostic` — the field falls back to `''`.
393
453
  *
394
454
  * Override only if the wire-diagnostic shape needs fields beyond
395
455
  * what {@link TransferDiagnostic} carries.
396
456
  */
397
- toTransferDiagnostic(diagnostic: TransferLspDiagnostic): TDiagnostic {
457
+ toTransferDiagnostic(diagnostic: AstDiagnostic): TDiagnostic {
398
458
  const langiumCode = (diagnostic.data as { code?: string } | undefined)?.code;
459
+ // The same `data` the Langium code comes out of also carries the framework
460
+ // message identity, under its own key so the two conventions co-exist.
461
+ // Taking the params from there rather than from `code` is what lets a
462
+ // translating surface render a PARAMETERISED diagnostic: `code` survives on
463
+ // its own and yields a template with its placeholders left standing.
464
+ const identity = hasMessageIdentity(diagnostic.data) ? diagnostic.data.hydranium : undefined;
399
465
  const result: TransferDiagnostic = {
400
466
  type: langiumCode === 'lexing-error' ? 'lexing-error' : langiumCode === 'parsing-error' ? 'parsing-error' : 'validation-error',
401
467
  element: diagnostic.element ?? '',
@@ -408,7 +474,8 @@ export class TransferEncoder<
408
474
  : diagnostic.severity === DiagnosticSeverity.Warning
409
475
  ? 'warning'
410
476
  : 'info',
411
- code: typeof diagnostic.code === 'number' || typeof diagnostic.code === 'string' ? diagnostic.code : langiumCode
477
+ code: typeof diagnostic.code === 'number' || typeof diagnostic.code === 'string' ? diagnostic.code : langiumCode,
478
+ params: identity?.params
412
479
  };
413
480
  return result as TDiagnostic;
414
481
  }