@hydranium/core 1.0.0-next.18 → 1.0.0-next.180

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 (572) hide show
  1. package/README.md +5 -1
  2. package/lib/documents/ast-document-manager.d.ts +190 -30
  3. package/lib/documents/ast-document-manager.d.ts.map +1 -1
  4. package/lib/documents/ast-document-manager.js +236 -40
  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 +138 -0
  15. package/lib/documents/client-session-registry.d.ts.map +1 -0
  16. package/lib/documents/client-session-registry.js +187 -0
  17. package/lib/documents/client-session-registry.js.map +1 -0
  18. package/lib/documents/file-system-task-queue.d.ts +49 -0
  19. package/lib/documents/file-system-task-queue.d.ts.map +1 -0
  20. package/lib/documents/file-system-task-queue.js +34 -0
  21. package/lib/documents/file-system-task-queue.js.map +1 -0
  22. package/lib/documents/hydranium-text-documents.d.ts +447 -82
  23. package/lib/documents/hydranium-text-documents.d.ts.map +1 -1
  24. package/lib/documents/hydranium-text-documents.js +780 -160
  25. package/lib/documents/hydranium-text-documents.js.map +1 -1
  26. package/lib/documents/index.d.ts +3 -0
  27. package/lib/documents/index.d.ts.map +1 -1
  28. package/lib/documents/index.js +3 -0
  29. package/lib/documents/index.js.map +1 -1
  30. package/lib/documents/language-client-text-shadow.d.ts +41 -9
  31. package/lib/documents/language-client-text-shadow.d.ts.map +1 -1
  32. package/lib/documents/language-client-text-shadow.js +56 -11
  33. package/lib/documents/language-client-text-shadow.js.map +1 -1
  34. package/lib/documents/self-save-registry.d.ts +37 -6
  35. package/lib/documents/self-save-registry.d.ts.map +1 -1
  36. package/lib/documents/self-save-registry.js +28 -15
  37. package/lib/documents/self-save-registry.js.map +1 -1
  38. package/lib/index.d.ts +3 -0
  39. package/lib/index.d.ts.map +1 -1
  40. package/lib/index.js +6 -0
  41. package/lib/index.js.map +1 -1
  42. package/lib/langium/ast-extension/ast-extension-service.d.ts.map +1 -1
  43. package/lib/langium/ast-extension/ast-extension-service.js.map +1 -1
  44. package/lib/langium/ast-extension/ast-node-builder.d.ts +32 -9
  45. package/lib/langium/ast-extension/ast-node-builder.d.ts.map +1 -1
  46. package/lib/langium/ast-extension/ast-node-builder.js +60 -22
  47. package/lib/langium/ast-extension/ast-node-builder.js.map +1 -1
  48. package/lib/langium/bootstrap.d.ts.map +1 -1
  49. package/lib/langium/bootstrap.js +16 -9
  50. package/lib/langium/bootstrap.js.map +1 -1
  51. package/lib/langium/build-phase-pass/build-phase-pass-service.d.ts.map +1 -1
  52. package/lib/langium/build-phase-pass/build-phase-pass-service.js.map +1 -1
  53. package/lib/langium/config/configuration-provider.d.ts +81 -0
  54. package/lib/langium/config/configuration-provider.d.ts.map +1 -0
  55. package/lib/langium/config/configuration-provider.js +112 -0
  56. package/lib/langium/config/configuration-provider.js.map +1 -0
  57. package/lib/langium/config/index.d.ts +1 -0
  58. package/lib/langium/config/index.d.ts.map +1 -1
  59. package/lib/langium/config/index.js +1 -0
  60. package/lib/langium/config/index.js.map +1 -1
  61. package/lib/langium/config/settings.js.map +1 -1
  62. package/lib/langium/diagnostics/hydranium-langium-profiler.d.ts.map +1 -1
  63. package/lib/langium/diagnostics/hydranium-langium-profiler.js.map +1 -1
  64. package/lib/langium/diagnostics/lsp-logger.d.ts +17 -0
  65. package/lib/langium/diagnostics/lsp-logger.d.ts.map +1 -1
  66. package/lib/langium/diagnostics/lsp-logger.js +40 -6
  67. package/lib/langium/diagnostics/lsp-logger.js.map +1 -1
  68. package/lib/langium/diagnostics/server-tracer.d.ts.map +1 -1
  69. package/lib/langium/diagnostics/server-tracer.js.map +1 -1
  70. package/lib/langium/document-builder/build-pipeline-integration.d.ts +21 -1
  71. package/lib/langium/document-builder/build-pipeline-integration.d.ts.map +1 -1
  72. package/lib/langium/document-builder/build-pipeline-integration.js +32 -5
  73. package/lib/langium/document-builder/build-pipeline-integration.js.map +1 -1
  74. package/lib/langium/document-builder/build-session.d.ts +93 -0
  75. package/lib/langium/document-builder/build-session.d.ts.map +1 -0
  76. package/lib/langium/document-builder/build-session.js +72 -0
  77. package/lib/langium/document-builder/build-session.js.map +1 -0
  78. package/lib/langium/document-builder/document-builder.d.ts +368 -21
  79. package/lib/langium/document-builder/document-builder.d.ts.map +1 -1
  80. package/lib/langium/document-builder/document-builder.js +641 -47
  81. package/lib/langium/document-builder/document-builder.js.map +1 -1
  82. package/lib/langium/document-builder/index.d.ts +1 -0
  83. package/lib/langium/document-builder/index.d.ts.map +1 -1
  84. package/lib/langium/document-builder/index.js +1 -0
  85. package/lib/langium/document-builder/index.js.map +1 -1
  86. package/lib/langium/documentation/comment-provider.d.ts.map +1 -1
  87. package/lib/langium/documentation/comment-provider.js.map +1 -1
  88. package/lib/langium/integration-services.d.ts +45 -1
  89. package/lib/langium/integration-services.d.ts.map +1 -1
  90. package/lib/langium/integration-services.js +10 -5
  91. package/lib/langium/integration-services.js.map +1 -1
  92. package/lib/langium/integrity/integrity-rule.d.ts +13 -5
  93. package/lib/langium/integrity/integrity-rule.d.ts.map +1 -1
  94. package/lib/langium/integrity/integrity-rule.js.map +1 -1
  95. package/lib/langium/integrity/integrity-service.d.ts +58 -13
  96. package/lib/langium/integrity/integrity-service.d.ts.map +1 -1
  97. package/lib/langium/integrity/integrity-service.js +213 -29
  98. package/lib/langium/integrity/integrity-service.js.map +1 -1
  99. package/lib/langium/keys/containment.d.ts +64 -0
  100. package/lib/langium/keys/containment.d.ts.map +1 -0
  101. package/lib/langium/keys/containment.js +53 -0
  102. package/lib/langium/keys/containment.js.map +1 -0
  103. package/lib/langium/keys/index.d.ts +1 -0
  104. package/lib/langium/keys/index.d.ts.map +1 -1
  105. package/lib/langium/keys/index.js +1 -0
  106. package/lib/langium/keys/index.js.map +1 -1
  107. package/lib/langium/keys/name-based-key-provider.d.ts +4 -0
  108. package/lib/langium/keys/name-based-key-provider.d.ts.map +1 -1
  109. package/lib/langium/keys/name-based-key-provider.js +4 -0
  110. package/lib/langium/keys/name-based-key-provider.js.map +1 -1
  111. package/lib/langium/keys/positional-key-provider.d.ts.map +1 -1
  112. package/lib/langium/keys/positional-key-provider.js.map +1 -1
  113. package/lib/langium/labeling/label-provider.d.ts.map +1 -1
  114. package/lib/langium/labeling/label-provider.js.map +1 -1
  115. package/lib/langium/language-module.d.ts +27 -2
  116. package/lib/langium/language-module.d.ts.map +1 -1
  117. package/lib/langium/language-module.js +16 -2
  118. package/lib/langium/language-module.js.map +1 -1
  119. package/lib/langium/model-service/client-session.d.ts +307 -0
  120. package/lib/langium/model-service/client-session.d.ts.map +1 -0
  121. package/lib/langium/model-service/client-session.js +395 -0
  122. package/lib/langium/model-service/client-session.js.map +1 -0
  123. package/lib/langium/model-service/index.d.ts +1 -0
  124. package/lib/langium/model-service/index.d.ts.map +1 -1
  125. package/lib/langium/model-service/index.js +1 -0
  126. package/lib/langium/model-service/index.js.map +1 -1
  127. package/lib/langium/model-service/model-service.d.ts +276 -226
  128. package/lib/langium/model-service/model-service.d.ts.map +1 -1
  129. package/lib/langium/model-service/model-service.js +251 -375
  130. package/lib/langium/model-service/model-service.js.map +1 -1
  131. package/lib/langium/module.d.ts +144 -35
  132. package/lib/langium/module.d.ts.map +1 -1
  133. package/lib/langium/module.js +46 -35
  134. package/lib/langium/module.js.map +1 -1
  135. package/lib/langium/naming/name-provider.d.ts +25 -4
  136. package/lib/langium/naming/name-provider.d.ts.map +1 -1
  137. package/lib/langium/naming/name-provider.js +2 -1
  138. package/lib/langium/naming/name-provider.js.map +1 -1
  139. package/lib/langium/naming/name-separator-validation.d.ts +23 -0
  140. package/lib/langium/naming/name-separator-validation.d.ts.map +1 -1
  141. package/lib/langium/naming/name-separator-validation.js +30 -1
  142. package/lib/langium/naming/name-separator-validation.js.map +1 -1
  143. package/lib/langium/project/abstract-project-manager.d.ts.map +1 -1
  144. package/lib/langium/project/abstract-project-manager.js +9 -2
  145. package/lib/langium/project/abstract-project-manager.js.map +1 -1
  146. package/lib/langium/project/project-change-event.d.ts +2 -2
  147. package/lib/langium/project/single-project-manager.d.ts.map +1 -1
  148. package/lib/langium/project/single-project-manager.js.map +1 -1
  149. package/lib/langium/residency/cst-residency-service.d.ts +31 -11
  150. package/lib/langium/residency/cst-residency-service.d.ts.map +1 -1
  151. package/lib/langium/residency/cst-residency-service.js +13 -56
  152. package/lib/langium/residency/cst-residency-service.js.map +1 -1
  153. package/lib/langium/scope/ast-node-description-provider.d.ts.map +1 -1
  154. package/lib/langium/scope/ast-node-description-provider.js.map +1 -1
  155. package/lib/langium/scope/hydranium-scope-computation.d.ts.map +1 -1
  156. package/lib/langium/scope/hydranium-scope-computation.js.map +1 -1
  157. package/lib/langium/scope/hydranium-scope-provider.d.ts +48 -13
  158. package/lib/langium/scope/hydranium-scope-provider.d.ts.map +1 -1
  159. package/lib/langium/scope/hydranium-scope-provider.js +56 -20
  160. package/lib/langium/scope/hydranium-scope-provider.js.map +1 -1
  161. package/lib/langium/scope/reference-builder.d.ts.map +1 -1
  162. package/lib/langium/scope/reference-builder.js.map +1 -1
  163. package/lib/langium/scope/reference-candidate-provider.d.ts.map +1 -1
  164. package/lib/langium/scope/reference-candidate-provider.js.map +1 -1
  165. package/lib/langium/scope/scope-extension-service.d.ts.map +1 -1
  166. package/lib/langium/scope/scope-extension-service.js.map +1 -1
  167. package/lib/langium/serialization/abstract-serializer.d.ts +11 -20
  168. package/lib/langium/serialization/abstract-serializer.d.ts.map +1 -1
  169. package/lib/langium/serialization/abstract-serializer.js +12 -21
  170. package/lib/langium/serialization/abstract-serializer.js.map +1 -1
  171. package/lib/langium/serialization/json-serializer.d.ts +1 -1
  172. package/lib/langium/serialization/json-serializer.d.ts.map +1 -1
  173. package/lib/langium/serialization/json-serializer.js.map +1 -1
  174. package/lib/langium/serialization/yaml-serializer.d.ts.map +1 -1
  175. package/lib/langium/serialization/yaml-serializer.js.map +1 -1
  176. package/lib/langium/service-registry.d.ts +15 -1
  177. package/lib/langium/service-registry.d.ts.map +1 -1
  178. package/lib/langium/service-registry.js +16 -0
  179. package/lib/langium/service-registry.js.map +1 -1
  180. package/lib/langium/shared-services.d.ts +15 -2
  181. package/lib/langium/shared-services.d.ts.map +1 -1
  182. package/lib/langium/shared-services.js.map +1 -1
  183. package/lib/langium/transfer/transfer-encoder.d.ts +60 -17
  184. package/lib/langium/transfer/transfer-encoder.d.ts.map +1 -1
  185. package/lib/langium/transfer/transfer-encoder.js +38 -16
  186. package/lib/langium/transfer/transfer-encoder.js.map +1 -1
  187. package/lib/langium/trivia/comment-preserver.d.ts +423 -0
  188. package/lib/langium/trivia/comment-preserver.d.ts.map +1 -0
  189. package/lib/langium/trivia/comment-preserver.js +906 -0
  190. package/lib/langium/trivia/comment-preserver.js.map +1 -0
  191. package/lib/langium/trivia/document-ending-preserver.d.ts +43 -0
  192. package/lib/langium/trivia/document-ending-preserver.d.ts.map +1 -0
  193. package/lib/langium/trivia/document-ending-preserver.js +48 -0
  194. package/lib/langium/trivia/document-ending-preserver.js.map +1 -0
  195. package/lib/langium/trivia/index.d.ts +14 -0
  196. package/lib/langium/trivia/index.d.ts.map +1 -0
  197. package/lib/langium/trivia/index.js +14 -0
  198. package/lib/langium/trivia/index.js.map +1 -0
  199. package/lib/langium/trivia/trivia-contribution.d.ts +37 -0
  200. package/lib/langium/trivia/trivia-contribution.d.ts.map +1 -0
  201. package/lib/langium/trivia/trivia-contribution.js +10 -0
  202. package/lib/langium/trivia/trivia-contribution.js.map +1 -0
  203. package/lib/langium/trivia/trivia-preserver.d.ts +50 -0
  204. package/lib/langium/trivia/trivia-preserver.d.ts.map +1 -0
  205. package/lib/langium/trivia/trivia-preserver.js +10 -0
  206. package/lib/langium/trivia/trivia-preserver.js.map +1 -0
  207. package/lib/langium/trivia/trivia-service.d.ts +70 -0
  208. package/lib/langium/trivia/trivia-service.d.ts.map +1 -0
  209. package/lib/langium/trivia/trivia-service.js +56 -0
  210. package/lib/langium/trivia/trivia-service.js.map +1 -0
  211. package/lib/langium/update-rewrite/normalize-empty-strings.d.ts.map +1 -1
  212. package/lib/langium/update-rewrite/update-rewrite-service.d.ts.map +1 -1
  213. package/lib/langium/update-rewrite/update-rewrite-service.js.map +1 -1
  214. package/lib/langium/update-rewrite/update-rewrite.d.ts +1 -1
  215. package/lib/langium/validation/document-validator.d.ts +294 -10
  216. package/lib/langium/validation/document-validator.d.ts.map +1 -1
  217. package/lib/langium/validation/document-validator.js +448 -5
  218. package/lib/langium/validation/document-validator.js.map +1 -1
  219. package/lib/langium/validation/validation-contribution-collector.d.ts.map +1 -1
  220. package/lib/langium/validation/validation-contribution-collector.js.map +1 -1
  221. package/lib/langium/workspace/document-uri-policy.d.ts +17 -12
  222. package/lib/langium/workspace/document-uri-policy.d.ts.map +1 -1
  223. package/lib/langium/workspace/document-uri-policy.js +10 -9
  224. package/lib/langium/workspace/document-uri-policy.js.map +1 -1
  225. package/lib/langium/workspace/file-not-found.d.ts +17 -0
  226. package/lib/langium/workspace/file-not-found.d.ts.map +1 -0
  227. package/lib/langium/workspace/file-not-found.js +20 -0
  228. package/lib/langium/workspace/file-not-found.js.map +1 -0
  229. package/lib/langium/workspace/file-system-provider.d.ts +84 -8
  230. package/lib/langium/workspace/file-system-provider.d.ts.map +1 -1
  231. package/lib/langium/workspace/file-system-provider.js +93 -14
  232. package/lib/langium/workspace/file-system-provider.js.map +1 -1
  233. package/lib/langium/workspace/hydranium-langium-document-factory.d.ts +25 -0
  234. package/lib/langium/workspace/hydranium-langium-document-factory.d.ts.map +1 -1
  235. package/lib/langium/workspace/hydranium-langium-document-factory.js +25 -0
  236. package/lib/langium/workspace/hydranium-langium-document-factory.js.map +1 -1
  237. package/lib/langium/workspace/hydranium-workspace-lock.d.ts +43 -1
  238. package/lib/langium/workspace/hydranium-workspace-lock.d.ts.map +1 -1
  239. package/lib/langium/workspace/hydranium-workspace-lock.js +58 -1
  240. package/lib/langium/workspace/hydranium-workspace-lock.js.map +1 -1
  241. package/lib/langium/workspace/hydranium-workspace-manager.d.ts +81 -8
  242. package/lib/langium/workspace/hydranium-workspace-manager.d.ts.map +1 -1
  243. package/lib/langium/workspace/hydranium-workspace-manager.js +128 -10
  244. package/lib/langium/workspace/hydranium-workspace-manager.js.map +1 -1
  245. package/lib/langium/workspace/in-memory-file-system-provider.d.ts +25 -2
  246. package/lib/langium/workspace/in-memory-file-system-provider.d.ts.map +1 -1
  247. package/lib/langium/workspace/in-memory-file-system-provider.js +41 -15
  248. package/lib/langium/workspace/in-memory-file-system-provider.js.map +1 -1
  249. package/lib/langium/workspace/index-manager.d.ts.map +1 -1
  250. package/lib/langium/workspace/index-manager.js.map +1 -1
  251. package/lib/langium/workspace/initialize-workspace.d.ts +31 -2
  252. package/lib/langium/workspace/initialize-workspace.d.ts.map +1 -1
  253. package/lib/langium/workspace/initialize-workspace.js +13 -5
  254. package/lib/langium/workspace/initialize-workspace.js.map +1 -1
  255. package/lib/langium/workspace/langium-documents.d.ts +79 -17
  256. package/lib/langium/workspace/langium-documents.d.ts.map +1 -1
  257. package/lib/langium/workspace/langium-documents.js +91 -29
  258. package/lib/langium/workspace/langium-documents.js.map +1 -1
  259. package/lib/langium/workspace/persistent-file-system-provider.d.ts +0 -7
  260. package/lib/langium/workspace/persistent-file-system-provider.d.ts.map +1 -1
  261. package/lib/langium/workspace/persistent-file-system-provider.js +0 -7
  262. package/lib/langium/workspace/persistent-file-system-provider.js.map +1 -1
  263. package/lib/langium/workspace/virtual-document.d.ts +48 -15
  264. package/lib/langium/workspace/virtual-document.d.ts.map +1 -1
  265. package/lib/langium/workspace/virtual-document.js +78 -18
  266. package/lib/langium/workspace/virtual-document.js.map +1 -1
  267. package/lib/langium/workspace/write-lock-scope.d.ts +20 -10
  268. package/lib/langium/workspace/write-lock-scope.d.ts.map +1 -1
  269. package/lib/langium/workspace/write-lock-scope.js +12 -4
  270. package/lib/langium/workspace/write-lock-scope.js.map +1 -1
  271. package/lib/locale/index.d.ts +10 -0
  272. package/lib/locale/index.d.ts.map +1 -0
  273. package/lib/locale/index.js +10 -0
  274. package/lib/locale/index.js.map +1 -0
  275. package/lib/locale/server-locale.d.ts +73 -0
  276. package/lib/locale/server-locale.d.ts.map +1 -0
  277. package/lib/locale/server-locale.js +61 -0
  278. package/lib/locale/server-locale.js.map +1 -0
  279. package/lib/lsp/completion/hydranium-completion-provider.d.ts +44 -2
  280. package/lib/lsp/completion/hydranium-completion-provider.d.ts.map +1 -1
  281. package/lib/lsp/completion/hydranium-completion-provider.js +68 -0
  282. package/lib/lsp/completion/hydranium-completion-provider.js.map +1 -1
  283. package/lib/lsp/connection-features.d.ts +23 -0
  284. package/lib/lsp/connection-features.d.ts.map +1 -0
  285. package/lib/lsp/connection-features.js +60 -0
  286. package/lib/lsp/connection-features.js.map +1 -0
  287. package/lib/lsp/diagnostics-connection.d.ts +27 -0
  288. package/lib/lsp/diagnostics-connection.d.ts.map +1 -0
  289. package/lib/lsp/diagnostics-connection.js +53 -0
  290. package/lib/lsp/diagnostics-connection.js.map +1 -0
  291. package/lib/lsp/hydranium-document-update-handler.d.ts +90 -79
  292. package/lib/lsp/hydranium-document-update-handler.d.ts.map +1 -1
  293. package/lib/lsp/hydranium-document-update-handler.js +152 -99
  294. package/lib/lsp/hydranium-document-update-handler.js.map +1 -1
  295. package/lib/lsp/index.d.ts +3 -1
  296. package/lib/lsp/index.d.ts.map +1 -1
  297. package/lib/lsp/index.js +3 -1
  298. package/lib/lsp/index.js.map +1 -1
  299. package/lib/lsp/lsp-latency.d.ts +39 -0
  300. package/lib/lsp/lsp-latency.d.ts.map +1 -0
  301. package/lib/lsp/lsp-latency.js +58 -0
  302. package/lib/lsp/lsp-latency.js.map +1 -0
  303. package/lib/lsp/semantic-token-provider.d.ts +34 -1
  304. package/lib/lsp/semantic-token-provider.d.ts.map +1 -1
  305. package/lib/lsp/semantic-token-provider.js +55 -8
  306. package/lib/lsp/semantic-token-provider.js.map +1 -1
  307. package/lib/lsp/shared-module.d.ts +4 -8
  308. package/lib/lsp/shared-module.d.ts.map +1 -1
  309. package/lib/lsp/shared-module.js.map +1 -1
  310. package/lib/lsp/start-language-server.d.ts +8 -7
  311. package/lib/lsp/start-language-server.d.ts.map +1 -1
  312. package/lib/lsp/start-language-server.js +13 -7
  313. package/lib/lsp/start-language-server.js.map +1 -1
  314. package/lib/messages/carriers.d.ts +54 -0
  315. package/lib/messages/carriers.d.ts.map +1 -0
  316. package/lib/messages/carriers.js +62 -0
  317. package/lib/messages/carriers.js.map +1 -0
  318. package/lib/messages/index.d.ts +25 -0
  319. package/lib/messages/index.d.ts.map +1 -0
  320. package/lib/messages/index.js +25 -0
  321. package/lib/messages/index.js.map +1 -0
  322. package/lib/messages/renderer.d.ts +142 -0
  323. package/lib/messages/renderer.d.ts.map +1 -0
  324. package/lib/messages/renderer.js +165 -0
  325. package/lib/messages/renderer.js.map +1 -0
  326. package/lib/node/event-loop-monitor.js.map +1 -1
  327. package/lib/node/heap-ceiling.d.ts +61 -0
  328. package/lib/node/heap-ceiling.d.ts.map +1 -0
  329. package/lib/node/heap-ceiling.js +72 -0
  330. package/lib/node/heap-ceiling.js.map +1 -0
  331. package/lib/node/index.d.ts +1 -0
  332. package/lib/node/index.d.ts.map +1 -1
  333. package/lib/node/index.js +1 -0
  334. package/lib/node/index.js.map +1 -1
  335. package/lib/node/latency-from-env.d.ts +1 -1
  336. package/lib/node/latency-from-env.js +1 -1
  337. package/lib/node/lint-grammar.js.map +1 -1
  338. package/lib/node/measure-memory.d.ts.map +1 -1
  339. package/lib/node/measure-memory.js +1 -0
  340. package/lib/node/measure-memory.js.map +1 -1
  341. package/lib/node/memory-monitor.js.map +1 -1
  342. package/lib/node/node-file-system-provider.d.ts +39 -4
  343. package/lib/node/node-file-system-provider.d.ts.map +1 -1
  344. package/lib/node/node-file-system-provider.js +109 -49
  345. package/lib/node/node-file-system-provider.js.map +1 -1
  346. package/lib/node/process-memory.js.map +1 -1
  347. package/lib/node/profile-capture.d.ts +8 -2
  348. package/lib/node/profile-capture.d.ts.map +1 -1
  349. package/lib/node/profile-capture.js.map +1 -1
  350. package/lib/node/profile-digest.js.map +1 -1
  351. package/lib/node/profiling-run.d.ts +2 -2
  352. package/lib/node/profiling-run.d.ts.map +1 -1
  353. package/lib/node/profiling-run.js +1 -1
  354. package/lib/node/profiling-run.js.map +1 -1
  355. package/lib/node/rename-over-open-readers.d.ts +52 -0
  356. package/lib/node/rename-over-open-readers.d.ts.map +1 -0
  357. package/lib/node/rename-over-open-readers.js +66 -0
  358. package/lib/node/rename-over-open-readers.js.map +1 -0
  359. package/lib/node/socket-launcher.d.ts +16 -1
  360. package/lib/node/socket-launcher.d.ts.map +1 -1
  361. package/lib/node/socket-launcher.js +4 -3
  362. package/lib/node/socket-launcher.js.map +1 -1
  363. package/lib/node/stdio-launcher.d.ts +1 -1
  364. package/lib/node/stdio-launcher.d.ts.map +1 -1
  365. package/lib/node/stdio-launcher.js +1 -1
  366. package/lib/node/stdio-launcher.js.map +1 -1
  367. package/lib/testing/document-uri-policy-conformance.js.map +1 -1
  368. package/lib/testing/fake-description.js.map +1 -1
  369. package/lib/testing/fake-document.d.ts +16 -4
  370. package/lib/testing/fake-document.d.ts.map +1 -1
  371. package/lib/testing/fake-document.js +18 -3
  372. package/lib/testing/fake-document.js.map +1 -1
  373. package/lib/testing/index.d.ts.map +1 -1
  374. package/lib/testing/index.js +1 -0
  375. package/lib/testing/index.js.map +1 -1
  376. package/lib/testing/langium-test-helpers.d.ts.map +1 -1
  377. package/lib/testing/langium-test-helpers.js +1 -0
  378. package/lib/testing/langium-test-helpers.js.map +1 -1
  379. package/lib/testing/make-noop-language-services.js.map +1 -1
  380. package/lib/testing/make-noop-shared-services.d.ts +14 -0
  381. package/lib/testing/make-noop-shared-services.d.ts.map +1 -1
  382. package/lib/testing/make-noop-shared-services.js +28 -2
  383. package/lib/testing/make-noop-shared-services.js.map +1 -1
  384. package/lib/testing/make-test-services.d.ts +62 -14
  385. package/lib/testing/make-test-services.d.ts.map +1 -1
  386. package/lib/testing/make-test-services.js +30 -9
  387. package/lib/testing/make-test-services.js.map +1 -1
  388. package/lib/testing/make-test-tracer.js.map +1 -1
  389. package/lib/testing/node/golden-corpus.js.map +1 -1
  390. package/lib/testing/node/index.d.ts +1 -0
  391. package/lib/testing/node/index.d.ts.map +1 -1
  392. package/lib/testing/node/index.js +1 -0
  393. package/lib/testing/node/index.js.map +1 -1
  394. package/lib/testing/node/lsp-harness.d.ts.map +1 -1
  395. package/lib/testing/node/lsp-harness.js +2 -0
  396. package/lib/testing/node/lsp-harness.js.map +1 -1
  397. package/lib/testing/node/lsp-server-connection.d.ts +11 -3
  398. package/lib/testing/node/lsp-server-connection.d.ts.map +1 -1
  399. package/lib/testing/node/lsp-server-connection.js +42 -9
  400. package/lib/testing/node/lsp-server-connection.js.map +1 -1
  401. package/lib/testing/node/scratch-workspace.d.ts.map +1 -1
  402. package/lib/testing/node/scratch-workspace.js +10 -5
  403. package/lib/testing/node/scratch-workspace.js.map +1 -1
  404. package/lib/testing/node/spawned-server.d.ts +14 -0
  405. package/lib/testing/node/spawned-server.d.ts.map +1 -1
  406. package/lib/testing/node/spawned-server.js +33 -1
  407. package/lib/testing/node/spawned-server.js.map +1 -1
  408. package/lib/testing/node/unhandled-rejections.d.ts +20 -0
  409. package/lib/testing/node/unhandled-rejections.d.ts.map +1 -0
  410. package/lib/testing/node/unhandled-rejections.js +32 -0
  411. package/lib/testing/node/unhandled-rejections.js.map +1 -0
  412. package/lib/testing/playwright/browser-capture-bridge.js.map +1 -1
  413. package/lib/testing/playwright/e2e-profiling.js.map +1 -1
  414. package/lib/testing/playwright/flaky-network-proxy.d.ts +76 -0
  415. package/lib/testing/playwright/flaky-network-proxy.d.ts.map +1 -0
  416. package/lib/testing/playwright/flaky-network-proxy.js +164 -0
  417. package/lib/testing/playwright/flaky-network-proxy.js.map +1 -0
  418. package/lib/testing/playwright/index.d.ts +1 -0
  419. package/lib/testing/playwright/index.d.ts.map +1 -1
  420. package/lib/testing/playwright/index.js +1 -0
  421. package/lib/testing/playwright/index.js.map +1 -1
  422. package/lib/testing/playwright/server-log-capture.d.ts +14 -4
  423. package/lib/testing/playwright/server-log-capture.d.ts.map +1 -1
  424. package/lib/testing/playwright/server-log-capture.js +21 -4
  425. package/lib/testing/playwright/server-log-capture.js.map +1 -1
  426. package/lib/testing/playwright/server-log-rename-reporter.d.ts.map +1 -1
  427. package/lib/testing/playwright/server-log-rename-reporter.js +10 -1
  428. package/lib/testing/playwright/server-log-rename-reporter.js.map +1 -1
  429. package/lib/testing/run-update-pipeline.d.ts +4 -4
  430. package/lib/testing/run-update-pipeline.d.ts.map +1 -1
  431. package/lib/testing/stub-ast-document-manager.d.ts +10 -9
  432. package/lib/testing/stub-ast-document-manager.d.ts.map +1 -1
  433. package/lib/testing/stub-ast-document-manager.js +17 -9
  434. package/lib/testing/stub-ast-document-manager.js.map +1 -1
  435. package/lib/testing/stub-document-builder.d.ts +26 -11
  436. package/lib/testing/stub-document-builder.d.ts.map +1 -1
  437. package/lib/testing/stub-document-builder.js +57 -4
  438. package/lib/testing/stub-document-builder.js.map +1 -1
  439. package/lib/testing/stub-hydranium-text-documents.d.ts +22 -7
  440. package/lib/testing/stub-hydranium-text-documents.d.ts.map +1 -1
  441. package/lib/testing/stub-hydranium-text-documents.js +92 -15
  442. package/lib/testing/stub-hydranium-text-documents.js.map +1 -1
  443. package/lib/testing/stub-index-manager.js.map +1 -1
  444. package/lib/testing/stub-langium-documents.d.ts +3 -2
  445. package/lib/testing/stub-langium-documents.d.ts.map +1 -1
  446. package/lib/testing/stub-langium-documents.js.map +1 -1
  447. package/lib/testing/stub-model-service.d.ts +7 -6
  448. package/lib/testing/stub-model-service.d.ts.map +1 -1
  449. package/lib/testing/stub-model-service.js +4 -4
  450. package/lib/testing/stub-model-service.js.map +1 -1
  451. package/lib/testing/stub-project-manager.js.map +1 -1
  452. package/lib/testing/stub-service-registry.js.map +1 -1
  453. package/lib/util/connection-liveness.d.ts +7 -6
  454. package/lib/util/connection-liveness.d.ts.map +1 -1
  455. package/lib/util/connection-liveness.js +35 -14
  456. package/lib/util/connection-liveness.js.map +1 -1
  457. package/lib/util/environment.d.ts.map +1 -1
  458. package/lib/util/environment.js.map +1 -1
  459. package/lib/util/registry.d.ts.map +1 -1
  460. package/package.json +35 -26
  461. package/src/documents/ast-document-manager.ts +349 -65
  462. package/src/documents/client-ids.ts +5 -22
  463. package/src/documents/client-session-errors.ts +24 -0
  464. package/src/documents/client-session-registry.ts +240 -0
  465. package/src/documents/file-system-task-queue.ts +68 -0
  466. package/src/documents/hydranium-text-documents.ts +973 -202
  467. package/src/documents/index.ts +3 -0
  468. package/src/documents/language-client-text-shadow.ts +59 -11
  469. package/src/documents/self-save-registry.ts +52 -13
  470. package/src/index.ts +6 -0
  471. package/src/langium/ast-extension/ast-node-builder.ts +66 -22
  472. package/src/langium/bootstrap.ts +16 -9
  473. package/src/langium/config/configuration-provider.ts +119 -0
  474. package/src/langium/config/index.ts +1 -0
  475. package/src/langium/diagnostics/lsp-logger.ts +41 -6
  476. package/src/langium/document-builder/build-pipeline-integration.ts +50 -5
  477. package/src/langium/document-builder/build-session.ts +87 -0
  478. package/src/langium/document-builder/document-builder.ts +724 -46
  479. package/src/langium/document-builder/index.ts +1 -0
  480. package/src/langium/integration-services.ts +67 -6
  481. package/src/langium/integrity/integrity-rule.ts +13 -5
  482. package/src/langium/integrity/integrity-service.ts +229 -30
  483. package/src/langium/keys/containment.ts +87 -0
  484. package/src/langium/keys/index.ts +1 -0
  485. package/src/langium/keys/name-based-key-provider.ts +4 -0
  486. package/src/langium/language-module.ts +42 -4
  487. package/src/langium/model-service/client-session.ts +606 -0
  488. package/src/langium/model-service/index.ts +1 -0
  489. package/src/langium/model-service/model-service.ts +418 -399
  490. package/src/langium/module.ts +193 -64
  491. package/src/langium/naming/name-provider.ts +27 -5
  492. package/src/langium/naming/name-separator-validation.ts +34 -5
  493. package/src/langium/project/abstract-project-manager.ts +9 -1
  494. package/src/langium/project/project-change-event.ts +2 -2
  495. package/src/langium/residency/cst-residency-service.ts +36 -14
  496. package/src/langium/scope/hydranium-scope-provider.ts +60 -22
  497. package/src/langium/serialization/abstract-serializer.ts +13 -32
  498. package/src/langium/service-registry.ts +19 -2
  499. package/src/langium/shared-services.ts +19 -2
  500. package/src/langium/transfer/transfer-encoder.ts +85 -24
  501. package/src/langium/trivia/comment-preserver.ts +1100 -0
  502. package/src/langium/trivia/document-ending-preserver.ts +55 -0
  503. package/src/langium/trivia/index.ts +14 -0
  504. package/src/langium/trivia/trivia-contribution.ts +39 -0
  505. package/src/langium/trivia/trivia-preserver.ts +54 -0
  506. package/src/langium/trivia/trivia-service.ts +99 -0
  507. package/src/langium/update-rewrite/update-rewrite.ts +1 -1
  508. package/src/langium/validation/document-validator.ts +537 -11
  509. package/src/langium/workspace/document-uri-policy.ts +17 -12
  510. package/src/langium/workspace/file-not-found.ts +23 -0
  511. package/src/langium/workspace/file-system-provider.ts +153 -16
  512. package/src/langium/workspace/hydranium-langium-document-factory.ts +34 -0
  513. package/src/langium/workspace/hydranium-workspace-lock.ts +86 -2
  514. package/src/langium/workspace/hydranium-workspace-manager.ts +153 -13
  515. package/src/langium/workspace/in-memory-file-system-provider.ts +47 -16
  516. package/src/langium/workspace/initialize-workspace.ts +43 -5
  517. package/src/langium/workspace/langium-documents.ts +113 -33
  518. package/src/langium/workspace/persistent-file-system-provider.ts +0 -7
  519. package/src/langium/workspace/virtual-document.ts +96 -19
  520. package/src/langium/workspace/write-lock-scope.ts +24 -11
  521. package/src/locale/index.ts +10 -0
  522. package/src/locale/server-locale.ts +86 -0
  523. package/src/lsp/completion/hydranium-completion-provider.ts +82 -2
  524. package/src/lsp/connection-features.ts +67 -0
  525. package/src/lsp/diagnostics-connection.ts +56 -0
  526. package/src/lsp/hydranium-document-update-handler.ts +182 -106
  527. package/src/lsp/index.ts +3 -1
  528. package/src/lsp/lsp-latency.ts +62 -0
  529. package/src/lsp/semantic-token-provider.ts +74 -7
  530. package/src/lsp/shared-module.ts +4 -8
  531. package/src/lsp/start-language-server.ts +13 -7
  532. package/src/messages/carriers.ts +78 -0
  533. package/src/messages/index.ts +36 -0
  534. package/src/messages/renderer.ts +212 -0
  535. package/src/node/heap-ceiling.ts +108 -0
  536. package/src/node/index.ts +1 -0
  537. package/src/node/latency-from-env.ts +1 -1
  538. package/src/node/measure-memory.ts +1 -0
  539. package/src/node/node-file-system-provider.ts +122 -51
  540. package/src/node/profile-capture.ts +8 -2
  541. package/src/node/profiling-run.ts +3 -3
  542. package/src/node/rename-over-open-readers.ts +78 -0
  543. package/src/node/socket-launcher.ts +19 -4
  544. package/src/node/stdio-launcher.ts +1 -2
  545. package/src/testing/fake-document.ts +24 -5
  546. package/src/testing/index.ts +1 -0
  547. package/src/testing/langium-test-helpers.ts +1 -0
  548. package/src/testing/make-noop-shared-services.ts +50 -2
  549. package/src/testing/make-test-services.ts +106 -30
  550. package/src/testing/node/index.ts +1 -0
  551. package/src/testing/node/lsp-harness.ts +2 -0
  552. package/src/testing/node/lsp-server-connection.ts +61 -11
  553. package/src/testing/node/scratch-workspace.ts +10 -5
  554. package/src/testing/node/spawned-server.ts +35 -1
  555. package/src/testing/node/unhandled-rejections.ts +31 -0
  556. package/src/testing/playwright/flaky-network-proxy.ts +240 -0
  557. package/src/testing/playwright/index.ts +1 -0
  558. package/src/testing/playwright/server-log-capture.ts +24 -5
  559. package/src/testing/playwright/server-log-rename-reporter.ts +12 -1
  560. package/src/testing/run-update-pipeline.ts +4 -4
  561. package/src/testing/stub-ast-document-manager.ts +28 -21
  562. package/src/testing/stub-document-builder.ts +83 -17
  563. package/src/testing/stub-hydranium-text-documents.ts +127 -22
  564. package/src/testing/stub-langium-documents.ts +3 -2
  565. package/src/testing/stub-model-service.ts +9 -8
  566. package/src/util/connection-liveness.ts +37 -14
  567. package/src/util/environment.ts +9 -1
  568. package/lib/lsp/instrument-connection.d.ts +0 -36
  569. package/lib/lsp/instrument-connection.d.ts.map +0 -1
  570. package/lib/lsp/instrument-connection.js +0 -62
  571. package/lib/lsp/instrument-connection.js.map +0 -1
  572. package/src/lsp/instrument-connection.ts +0 -66
package/README.md CHANGED
@@ -27,7 +27,9 @@ and so does every other head package (`@hydranium/data-server`,
27
27
  `HydraniumTextDocuments`, `WritableFileSystemProvider` and `SelfSaveRegistry`
28
28
  generalise the LSP document lifecycle to several co-editing heads, so an edit
29
29
  made on one surface is observable on the others without a head-to-head
30
- synchronisation protocol.
30
+ synchronisation protocol. A participant works through a `ClientSession` from
31
+ `ModelService.createSession`, which writes only what it has open; see
32
+ [client sessions](../../docs/concepts/client-sessions.md).
31
33
  - **The projection the non-LSP heads build on:** `ModelService` (the in-process
32
34
  workspace facade), `TransferEncoder` (AST → transfer model), and the
33
35
  `Serializer` slot.
@@ -94,6 +96,8 @@ Alpha — pre-v0, not yet published. The API is not stable and may change withou
94
96
  deprecation cycle. See the [repository README](../../README.md) for the current
95
97
  status and known limitations.
96
98
 
99
+ For task-shaped adoption paths, start with the [validation check guide](../../docs/guides/add-validation-check.md). It shows the validation contribution boundary that this package supplies.
100
+
97
101
  ## License
98
102
 
99
103
  `MIT` — see this package's [`LICENSE`](./LICENSE). Third-party notices for the
@@ -6,9 +6,10 @@
6
6
  *
7
7
  * SPDX-License-Identifier: MIT
8
8
  ********************************************************************************/
9
- import { type CloseModelArgs, type Tracer, type TransferSavedEvent, type TransferUpdatedEvent, type OpenModelArgs } from '@hydranium/protocol';
10
- import { type AstNode, type DocumentBuilder, type FileSystemProvider, type LangiumDocument, type LangiumDocuments } from '@hydranium/langium';
9
+ import { type CanonicalUri, type CloseModelArgs, type Tracer, type TransferSavedEvent, type TransferUpdatedEvent, type OpenModelArgs, type SnapshotVersion } from '@hydranium/protocol';
10
+ import { type AstNode, type FileSystemProvider, type LangiumDocument, type LangiumDocuments, URI } from '@hydranium/langium';
11
11
  import { type LogNameOptions } from '../langium/diagnostics/logger.js';
12
+ import { type AstDiagnostic } from '../langium/validation/document-validator.js';
12
13
  /**
13
14
  * File-system provider extension that supports writes. Langium's standard
14
15
  * {@link FileSystemProvider} is read-only; the manager needs to persist saves,
@@ -46,8 +47,9 @@ export interface WritableFileSystemProvider extends FileSystemProvider {
46
47
  * - A non-`file:` URI (or any URI the provider cannot stat) passes through
47
48
  * **unchanged** — it is treated as present, never reported absent.
48
49
  * - A provider with no disk to check (in-memory / browser / empty) simply
49
- * omits this method; `RealpathDocumentUriPolicy` then degrades to the
50
- * syntactic `DefaultDocumentUriPolicy` behaviour automatically.
50
+ * omits this method; the framework's `FileSystemProviderRegistry` then
51
+ * returns the URI unchanged, and `RealpathDocumentUriPolicy` answers as
52
+ * the syntactic `DefaultDocumentUriPolicy` does.
51
53
  *
52
54
  * Synchronous (a `realpath` is a kernel-cached syscall) and optional — the
53
55
  * only consumers are the document-identity policy's `canonicalUri`/`loadUri`.
@@ -61,8 +63,8 @@ export interface WritableFileSystemProvider extends FileSystemProvider {
61
63
  import { Disposable } from 'vscode-languageserver';
62
64
  import { type TextDocumentItem } from 'vscode-languageserver-protocol';
63
65
  import { type TextDocument } from 'vscode-languageserver-textdocument';
64
- import { URI } from '@hydranium/langium';
65
66
  import { type ServerSharedServices } from '../langium/module.js';
67
+ import { type HydraniumDocumentBuilder } from '../langium/document-builder/index.js';
66
68
  import { type HydraniumTextDocuments } from './hydranium-text-documents.js';
67
69
  import { type SelfSaveRegistry } from './self-save-registry.js';
68
70
  import { type DocumentUriPolicy } from '../langium/workspace/document-uri-policy.js';
@@ -82,19 +84,18 @@ export interface UpdateInfo {
82
84
  * twins; the type-system distinction is the generic constraint, and the
83
85
  * conversion seam between them is the framework `TransferEncoder`.
84
86
  */
85
- export interface AstDocument<TAst extends AstNode, TDiagnostic> {
87
+ export interface AstDocument<TAst extends AstNode, TDiagnostic extends AstDiagnostic = AstDiagnostic> {
86
88
  root: TAst;
87
89
  diagnostics: TDiagnostic[];
88
90
  uri: string;
89
91
  /**
90
92
  * Text-document version this snapshot was taken at — read from
91
93
  * `LangiumDocument.textDocument.version`. Symmetric with
92
- * `TransferDocument.version` on the wire side: in-process callers
93
- * that hold an `AstDocument` and mutate it pass this value back as
94
- * `TransferUpdateArgs.baseVersion` / `TransferSaveArgs.baseVersion` to opt
95
- * into the conflict gate.
94
+ * `TransferDocument.version` on the wire side: an in-process caller that
95
+ * holds an `AstDocument` and mutates it sends this straight back as the
96
+ * `basedOn` of its session's write, and the conflict gate arms on it.
96
97
  */
97
- version: number;
98
+ version: SnapshotVersion;
98
99
  }
99
100
  export declare namespace AstDocument {
100
101
  /**
@@ -103,7 +104,7 @@ export declare namespace AstDocument {
103
104
  * don't need to repeat the empty array at every call site. Mirrors
104
105
  * `TransferDocument.create` on the wire side.
105
106
  */
106
- function create<TAst extends AstNode, TDiagnostic = unknown>(uri: string, version: number, root: TAst, diagnostics?: TDiagnostic[]): AstDocument<TAst, TDiagnostic>;
107
+ function create<TAst extends AstNode, TDiagnostic extends AstDiagnostic = AstDiagnostic>(uri: string, version: number, root: TAst, diagnostics?: TDiagnostic[]): AstDocument<TAst, TDiagnostic>;
107
108
  /**
108
109
  * Project a {@link LangiumDocument} into its {@link AstDocument}
109
110
  * envelope — the single place that reads `root` / `diagnostics` /
@@ -117,15 +118,84 @@ export declare namespace AstDocument {
117
118
  * carry that identity, not the subscriber's (possibly non-canonical) URI:
118
119
  * a subscriber already knows the URI it subscribed with, so the useful
119
120
  * thing to surface is the canonical one every other layer keys by.
121
+ *
122
+ * Narrowing `TDiagnostic` below the constraint asserts that the validators
123
+ * in play produce that shape, and nothing here checks it: the build fills the
124
+ * array, so a document carrying a diagnostic from elsewhere — a lexer error,
125
+ * another validator — satisfies the declared type and not the narrowed one.
120
126
  */
121
- function from<TAst extends AstNode, TDiagnostic = unknown>(document: LangiumDocument): AstDocument<TAst, TDiagnostic>;
127
+ function from<TAst extends AstNode, TDiagnostic extends AstDiagnostic = AstDiagnostic>(document: LangiumDocument): AstDocument<TAst, TDiagnostic>;
122
128
  }
123
129
  /** Update event delivered by {@link AstDocumentManager.onUpdate} — typed alias over the generic event wrapper. */
124
- export type AstDocumentUpdatedEvent<TAst extends AstNode, TDiagnostic> = TransferUpdatedEvent<AstDocument<TAst, TDiagnostic>>;
130
+ export type AstDocumentUpdatedEvent<TAst extends AstNode, TDiagnostic extends AstDiagnostic = AstDiagnostic> = TransferUpdatedEvent<AstDocument<TAst, TDiagnostic>>;
125
131
  /** Save event delivered by {@link AstDocumentManager.onSave} — typed alias over the generic event wrapper. */
126
- export type AstDocumentSavedEvent<TAst extends AstNode, TDiagnostic> = TransferSavedEvent<AstDocument<TAst, TDiagnostic>>;
132
+ export type AstDocumentSavedEvent<TAst extends AstNode, TDiagnostic extends AstDiagnostic = AstDiagnostic> = TransferSavedEvent<AstDocument<TAst, TDiagnostic>>;
133
+ /**
134
+ * Why an update event fired and whose write it echoes, as
135
+ * {@link AstDocumentManager.attributeUpdate} answers for a document. The
136
+ * fields mean what they mean on `TransferUpdatedEvent`.
137
+ */
138
+ export interface UpdateAttribution {
139
+ reason: 'changed' | 'rebuilt';
140
+ sourceClientId: string;
141
+ causedBy: string;
142
+ }
127
143
  /** Construction options for {@link AstDocumentManager}. */
128
- export type AstDocumentManagerOptions = LogNameOptions;
144
+ export interface AstDocumentManagerOptions extends LogNameOptions {
145
+ /**
146
+ * Skip a queued save of a URI when a newer save of it is queued behind. The
147
+ * newer save took its text later, so disk ends the same with fewer writes.
148
+ * A skipped save announces nothing and takes the newer save's outcome: it
149
+ * resolves when that one lands and rejects with its error when it fails,
150
+ * since disk then holds neither text. Defaults to `false`: every save
151
+ * writes. The framework binds the manager without options, so turning this
152
+ * on means rebinding `AstDocumentManager` with them.
153
+ */
154
+ readonly coalesceSaves?: boolean;
155
+ }
156
+ /**
157
+ * The document slot the model server and the integrity service talk to:
158
+ * open/close/update/save plus the AST-typed event streams, with the LSP
159
+ * plumbing hidden.
160
+ *
161
+ * Generic over `<TAst extends AstNode, TDiagnostic>` so each consumer projects
162
+ * its own AST root type and diagnostic shape into the emitted
163
+ * {@link AstDocument} envelopes.
164
+ *
165
+ * **URI contract.** Every URI-accepting member takes a URI in *any* spelling
166
+ * (canonical, symlinked, `..`/case-divergent) and canonicalizes internally
167
+ * through the {@link DocumentUriPolicy}, so a caller never has to canonicalize
168
+ * first and an implementation may not require it.
169
+ */
170
+ export interface AstDocumentManager<TAst extends AstNode, TDiagnostic extends AstDiagnostic = AstDiagnostic> {
171
+ open(args: OpenModelArgs): Promise<Disposable>;
172
+ close(args: CloseModelArgs): Promise<void>;
173
+ isOpen(uri: string): boolean;
174
+ /** Apply `text` as `clientId`'s edit. Resolves to the resulting text-document version. */
175
+ update(uri: string, text: string, clientId: string): Promise<number>;
176
+ /**
177
+ * Write the document's current text to disk through `FileSystemTaskQueue`.
178
+ * The text is taken when this is called, so saves of one file land in the
179
+ * order they were called.
180
+ */
181
+ save(uri: string, clientId: string): Promise<void>;
182
+ onUpdate(uri: string, listener: (event: AstDocumentUpdatedEvent<TAst, TDiagnostic>) => void): Disposable;
183
+ onSave(uri: string, listener: (event: AstDocumentSavedEvent<TAst, TDiagnostic>) => void | Promise<void>): Disposable;
184
+ onClientClosed(uri: string, clientId: string, listener: () => void): Disposable;
185
+ getDocument(uri: string): LangiumDocument | undefined;
186
+ /** Client id that authored the document's current version, or `undefined` for a framework-internal build. */
187
+ getAuthor(document: LangiumDocument): string | undefined;
188
+ /**
189
+ * The reason, source and cause of an update event for `document` emitted
190
+ * now, from a phase listener of the build that carries it. Every head takes
191
+ * its update events' attribution from here, so they name the same client
192
+ * for one build. For a document a client opened, while rebuilds validate,
193
+ * the answer changes once its `Validated` listeners have all run: a later
194
+ * event at that version is `'rebuilt'`. `TransferDocumentUpdateReason`
195
+ * names the cases that fall back to the last update.
196
+ */
197
+ attributeUpdate(document: LangiumDocument): UpdateAttribution;
198
+ }
129
199
  /**
130
200
  * Higher-level facade over {@link HydraniumTextDocuments} that speaks the
131
201
  * model-server protocol (open/close/update/save with the transfer-model event
@@ -146,13 +216,49 @@ export type AstDocumentManagerOptions = LogNameOptions;
146
216
  * resolution (the egress `applyEditToLanguageClient`) stay on
147
217
  * {@link HydraniumTextDocuments}, their owner.
148
218
  */
149
- export declare class AstDocumentManager<TAst extends AstNode = AstNode, TDiagnostic = unknown> {
219
+ export declare class DefaultAstDocumentManager<TAst extends AstNode, TDiagnostic extends AstDiagnostic = AstDiagnostic> implements AstDocumentManager<TAst, TDiagnostic> {
150
220
  protected readonly services: ServerSharedServices;
221
+ /** The last `DocumentBuilder.update`'s URIs; the reason for a document the store does not track. */
151
222
  protected lastUpdate?: UpdateInfo;
223
+ /**
224
+ * Canonical URIs a client has opened since the file was last deleted,
225
+ * whose versions the store keeps. One no client has opened keeps Langium's
226
+ * version `0` through every change of its content, so its version says
227
+ * nothing. Kept past the last close, since the store continues the version
228
+ * sequence on the next open; a delivery can land after that close.
229
+ */
230
+ protected readonly trackedUris: Set<CanonicalUri>;
231
+ /**
232
+ * Per tracked URI, the version whose `Validated` listeners last all ran,
233
+ * which is the version an update event was delivered for. Dropped on
234
+ * deletion, so a file created again with the same text is changed again.
235
+ */
236
+ protected readonly deliveredVersions: Map<CanonicalUri, number>;
237
+ /**
238
+ * Whose writes the build under way carries, set when it starts: the author
239
+ * of every open document's undelivered version, and the unknown-client id
240
+ * for a change no write explains, such as a deletion, a document no client
241
+ * has open, or a write that changed nothing. An undelivered version is one
242
+ * whose build has not validated it yet, so a write whose build was
243
+ * cancelled stays a cause of the build that takes over.
244
+ *
245
+ * Errs toward more than one cause, and so toward the unknown client, which
246
+ * a reader treats as foreign: an answer it repeats, never one it misses.
247
+ * A change no write explains counts for its own build only, so a build
248
+ * that takes over from a cancelled one loses it. One field for every build:
249
+ * a build started outside the workspace lock, such as a re-queue of an
250
+ * orphaned document, reads the causes of whichever build started last.
251
+ * An open document no build delivers, one a `shouldValidate` override
252
+ * skips, stays undelivered, so it is a cause of every build while open.
253
+ */
254
+ protected readonly buildCauses: Set<string>;
255
+ /** Per canonical URI, the newest save queued for it, which {@link coalesceSaves} lets older queued saves defer to. */
256
+ protected readonly newestSaves: Map<CanonicalUri, Promise<void>>;
257
+ protected readonly coalesceSaves: boolean;
152
258
  protected readonly textDocuments: HydraniumTextDocuments<TextDocument>;
153
259
  protected readonly fileSystemProvider: WritableFileSystemProvider;
154
260
  protected readonly langiumDocs: LangiumDocuments;
155
- protected readonly documentBuilder: DocumentBuilder;
261
+ protected readonly documentBuilder: HydraniumDocumentBuilder;
156
262
  protected readonly uriPolicy: DocumentUriPolicy;
157
263
  protected readonly tracer: Tracer;
158
264
  constructor(services: ServerSharedServices, options?: AstDocumentManagerOptions);
@@ -187,15 +293,48 @@ export declare class AstDocumentManager<TAst extends AstNode = AstNode, TDiagnos
187
293
  onUpdate(uri: string, listener: (event: TransferUpdatedEvent<AstDocument<TAst, TDiagnostic>>) => void): Disposable;
188
294
  /**
189
295
  * The client that authored `document`'s current version, or `undefined` when
190
- * no client wrote it — a framework-internal rebuild (workspace startup, a
191
- * cascade relink, a `didClose`-reload) or a genuine author gap. Honest about
192
- * absence so routing consumers (`ModelService.isNonLanguageClientEdit`)
193
- * test `undefined` directly rather than against a sentinel; the presentation
194
- * default ({@link UNKNOWN_CLIENT_ID}) is applied at the boundary that needs a
195
- * concrete value (the `onUpdate` event's `sourceClientId`, the data-server's
196
- * `resolveSourceClientId`).
197
- */
198
- getAuthor(document: LangiumDocument<AstNode>): string | undefined;
296
+ * no client wrote it: a document no client has open. A rebuild that keeps
297
+ * the version keeps its author, so this does not say who caused a build;
298
+ * {@link attributeUpdate} does.
299
+ * Honest about absence so a routing consumer tests `undefined` directly
300
+ * rather than against a sentinel; the presentation default
301
+ * ({@link UNKNOWN_CLIENT_ID}) is applied where an event needs a value.
302
+ */
303
+ getAuthor(document: LangiumDocument): string | undefined;
304
+ /**
305
+ * `'changed'` for the first delivery of the document's version, crediting
306
+ * its author; `'rebuilt'` for a later one, crediting nobody, since it echoes
307
+ * no write, and naming the build's single cause if it has one.
308
+ *
309
+ * A document the rule does not apply to (see {@link isTracked}) falls back
310
+ * to the last update: it is `'changed'` when its URI was passed to
311
+ * `DocumentBuilder.update`. An open document that a validating build skips,
312
+ * through a `shouldValidate` override, is never delivered, so each of its
313
+ * events is its author's change.
314
+ */
315
+ attributeUpdate(document: LangiumDocument): UpdateAttribution;
316
+ /**
317
+ * Whether the version rule applies to `uri`: the store keeps its version,
318
+ * and rebuilds validate. With `updateBuildOptions.validation` off no version
319
+ * is ever delivered, and the rule would report every event of an open
320
+ * document as its author's change.
321
+ */
322
+ protected isTracked(uri: CanonicalUri): boolean;
323
+ /**
324
+ * Whether the store keeps `uri`'s version: a client opened it since its
325
+ * file was last deleted, or has it open still, as an editor keeps a
326
+ * deleted file's buffer.
327
+ */
328
+ protected keepsVersion(uri: CanonicalUri): boolean;
329
+ /**
330
+ * Record that `version` of `document` was delivered, when the store tracks
331
+ * it. The version the listeners saw, not the document's current one: a
332
+ * write during them has moved that on, and marking it would report the
333
+ * write's own build as rebuilt.
334
+ */
335
+ protected markDelivered(document: LangiumDocument, version: number): void;
336
+ /** Whether `version` of `uri` was delivered. */
337
+ protected isDelivered(uri: string, version: number): boolean;
199
338
  open(args: OpenModelArgs): Promise<Disposable>;
200
339
  close(args: CloseModelArgs): Promise<void>;
201
340
  /**
@@ -217,12 +356,34 @@ export declare class AstDocumentManager<TAst extends AstNode = AstNode, TDiagnos
217
356
  * callers don't need to pass it — the manager owns content and version
218
357
  * sequencing.
219
358
  *
359
+ * The text is taken synchronously, before the save waits in the file's task
360
+ * queue; the compare and the write run in the queue. Taken later, a save
361
+ * that waits behind another writes whatever the store holds when its turn
362
+ * comes, edits made after the call included, and announces that text under
363
+ * its own client id.
364
+ *
365
+ * **The write is skipped when the file already holds that text; the
366
+ * notification is not.** A save announces that the content is on disk, which
367
+ * is true either way — so a subscriber clearing a dirty marker or reacting to
368
+ * a persist behaves the same, while an mtime is not moved for byte-identical
369
+ * content that a downstream mtime-keyed build would then read as new work.
370
+ *
220
371
  * Throws if no document is open for `uri`.
221
372
  */
222
373
  save(uri: string, clientId: string): Promise<void>;
374
+ /** Write `text` to `uri` unless the file already holds it, then announce the save. Runs inside the file's task queue. */
375
+ protected writeSave(uri: CanonicalUri, text: string, clientId: string): Promise<void>;
376
+ /**
377
+ * Whether the file at `uri` already holds `text`.
378
+ *
379
+ * Compared by CONTENT rather than against a remembered version, so a write
380
+ * from outside this server is still corrected: a version this manager already
381
+ * saved says nothing about what is on disk now. `false` when the file cannot
382
+ * be read at all, which is the answer that writes — a document whose file does
383
+ * not exist yet is exactly the one a first save has to create.
384
+ */
385
+ protected matchesDisk(uri: string, text: string): Promise<boolean>;
223
386
  isOpen(uri: string): boolean;
224
- /** True if the URI was in the directly-changed set of the most recent build (not just affected). */
225
- isDirectChange(uri: string): boolean;
226
387
  /**
227
388
  * The `LangiumDocument` for an externally-supplied URI, looked up by its
228
389
  * canonical identity. Folds the `getDocument(toUri(canonicalUri(uri)))` idiom
@@ -232,7 +393,6 @@ export declare class AstDocumentManager<TAst extends AstNode = AstNode, TDiagnos
232
393
  */
233
394
  getDocument(uri: string): LangiumDocument | undefined;
234
395
  protected createDocumentFromTextOrFileSystem(uri: string, languageId?: string, version?: number, text?: string): Promise<TextDocumentItem>;
235
- readFile(uri: string): Promise<string>;
236
396
  /**
237
397
  * Hook for subclasses that want to re-shape the emitted document (e.g. inject
238
398
  * a custom-typed `diagnostics` field). The default delegates to
@@ -1 +1 @@
1
- {"version":3,"file":"ast-document-manager.d.ts","sourceRoot":"","sources":["../../src/documents/ast-document-manager.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF,OAAO,EACJ,KAAK,cAAc,EACnB,KAAK,MAAM,EACX,KAAK,kBAAkB,EACvB,KAAK,oBAAoB,EACzB,KAAK,aAAa,EACpB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACJ,KAAK,OAAO,EACZ,KAAK,eAAe,EAEpB,KAAK,kBAAkB,EACvB,KAAK,eAAe,EACpB,KAAK,gBAAgB,EAEvB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,kCAAkC,CAAC;AAEvE;;;;;;;;;;;GAWG;AACH,MAAM,WAAW,0BAA2B,SAAQ,kBAAkB;IACnE,SAAS,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACpD;;;;;;;;OAQG;IACH,OAAO,CAAC,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;IAChD;;;;;;;;;;;;;;;;;;;;OAoBG;IACH,QAAQ,CAAC,CAAC,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,SAAS,CAAC;IACrC,uHAAuH;IACvH,QAAQ,CAAC,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;CAC/C;AACD,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAA0B,KAAK,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAC/F,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,oCAAoC,CAAC;AACvE,OAAO,EAAE,GAAG,EAAE,MAAM,oBAAoB,CAAC;AACzC,OAAO,EAAE,KAAK,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAGjE,OAAO,EAAE,KAAK,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AAC5E,OAAO,EAAE,KAAK,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,EAAE,KAAK,iBAAiB,EAAE,MAAM,6CAA6C,CAAC;AAErF,MAAM,WAAW,UAAU;IACxB,OAAO,EAAE,GAAG,EAAE,CAAC;IACf,OAAO,EAAE,GAAG,EAAE,CAAC;CACjB;AAED;;;;;;;;;;;GAWG;AACH,MAAM,WAAW,WAAW,CAAC,IAAI,SAAS,OAAO,EAAE,WAAW;IAC3D,IAAI,EAAE,IAAI,CAAC;IACX,WAAW,EAAE,WAAW,EAAE,CAAC;IAC3B,GAAG,EAAE,MAAM,CAAC;IACZ;;;;;;;OAOG;IACH,OAAO,EAAE,MAAM,CAAC;CAClB;AAED,yBAAiB,WAAW,CAAC;IAC1B;;;;;OAKG;IACH,SAAgB,MAAM,CAAC,IAAI,SAAS,OAAO,EAAE,WAAW,GAAG,OAAO,EAC/D,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,IAAI,EACV,WAAW,GAAE,WAAW,EAAO,GAC/B,WAAW,CAAC,IAAI,EAAE,WAAW,CAAC,CAEhC;IAED;;;;;;;;;;;;;OAaG;IACH,SAAgB,IAAI,CAAC,IAAI,SAAS,OAAO,EAAE,WAAW,GAAG,OAAO,EAAE,QAAQ,EAAE,eAAe,GAAG,WAAW,CAAC,IAAI,EAAE,WAAW,CAAC,CAO3H;CACH;AAED,kHAAkH;AAClH,MAAM,MAAM,uBAAuB,CAAC,IAAI,SAAS,OAAO,EAAE,WAAW,IAAI,oBAAoB,CAAC,WAAW,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC,CAAC;AAE9H,8GAA8G;AAC9G,MAAM,MAAM,qBAAqB,CAAC,IAAI,SAAS,OAAO,EAAE,WAAW,IAAI,kBAAkB,CAAC,WAAW,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC,CAAC;AAE1H,2DAA2D;AAC3D,MAAM,MAAM,yBAAyB,GAAG,cAAc,CAAC;AAEvD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,qBAAa,kBAAkB,CAAC,IAAI,SAAS,OAAO,GAAG,OAAO,EAAE,WAAW,GAAG,OAAO;IAW/E,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAE,oBAAoB;IAVpD,SAAS,CAAC,UAAU,CAAC,EAAE,UAAU,CAAC;IAElC,SAAS,CAAC,QAAQ,CAAC,aAAa,EAAE,sBAAsB,CAAC,YAAY,CAAC,CAAC;IACvE,SAAS,CAAC,QAAQ,CAAC,kBAAkB,EAAE,0BAA0B,CAAC;IAClE,SAAS,CAAC,QAAQ,CAAC,WAAW,EAAE,gBAAgB,CAAC;IACjD,SAAS,CAAC,QAAQ,CAAC,eAAe,EAAE,eAAe,CAAC;IACpD,SAAS,CAAC,QAAQ,CAAC,SAAS,EAAE,iBAAiB,CAAC;IAChD,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;gBAGZ,QAAQ,EAAE,oBAAoB,EACjD,OAAO,GAAE,yBAA8B;IAoC1C;;;;;;;;;;;;;;;;;;OAkBG;IACH,SAAS,CAAC,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IAShD;;;OAGG;IACH,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,KAAK,EAAE,kBAAkB,CAAC,WAAW,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,UAAU;IAqB9H,6FAA6F;IAC7F,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,IAAI,GAAG,UAAU;IAS/E,+EAA+E;IAC/E,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,KAAK,EAAE,oBAAoB,CAAC,WAAW,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC,KAAK,IAAI,GAAG,UAAU;IA0BlH;;;;;;;;;OASG;IACH,SAAS,CAAC,QAAQ,EAAE,eAAe,CAAC,OAAO,CAAC,GAAG,MAAM,GAAG,SAAS;IAI3D,IAAI,CAAC,IAAI,EAAE,aAAa,GAAG,OAAO,CAAC,UAAU,CAAC;IAyB9C,KAAK,CAAC,IAAI,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAIhD;;;;;;;;;;OAUG;IACG,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAQ1E;;;;;;;;OAQG;IACG,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAexD,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAI5B,oGAAoG;IACpG,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAKpC;;;;;;OAMG;IACH,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,eAAe,GAAG,SAAS;cAIrC,kCAAkC,CAC/C,GAAG,EAAE,MAAM,EACX,UAAU,GAAE,MAAoC,EAChD,OAAO,SAAI,EACX,IAAI,CAAC,EAAE,MAAM,GACb,OAAO,CAAC,gBAAgB,CAAC;IAItB,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAI5C;;;;OAIG;IACH,SAAS,CAAC,aAAa,CAAC,QAAQ,EAAE,eAAe,GAAG,WAAW,CAAC,IAAI,EAAE,WAAW,CAAC;CAGpF"}
1
+ {"version":3,"file":"ast-document-manager.d.ts","sourceRoot":"","sources":["../../src/documents/ast-document-manager.ts"],"names":[],"mappings":"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"}