@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
@@ -0,0 +1,395 @@
1
+ /********************************************************************************
2
+ * Copyright (c) 2026 CrossBreeze, EclipseSource and others.
3
+ *
4
+ * This program and the accompanying materials are made available under the
5
+ * terms of the MIT License which is available in the project root.
6
+ *
7
+ * SPDX-License-Identifier: MIT
8
+ ********************************************************************************/
9
+ import { ConflictError, isSnapshotVersion, Logger, ObservableValue } from '@hydranium/protocol';
10
+ import { DocumentState, UriUtils } from '@hydranium/langium';
11
+ import { DocumentNotOpenError, SessionClosedError } from '../../documents/client-session-errors.js';
12
+ import { IntegrityService } from '../integrity/integrity-service.js';
13
+ /**
14
+ * The phase a session write waits for before it answers: `Validated`, or
15
+ * {@link IntegrityService.SettledState} when rebuilds do not validate, since
16
+ * no build then reaches `Validated` and the wait would never end. Read from
17
+ * `updateBuildOptions`, which every rebuild takes; a document a
18
+ * `shouldValidate` override skips is the builder's to resolve.
19
+ *
20
+ * Waiting for the write's own build is not enough: a later write cancels it,
21
+ * and the build that takes over validates the document after the answer was
22
+ * taken.
23
+ */
24
+ function answerState(builder) {
25
+ return builder.updateBuildOptions.validation ? DocumentState.Validated : IntegrityService.SettledState;
26
+ }
27
+ /**
28
+ * The framework's {@link ClientSession}, built by
29
+ * {@link DefaultClientSessionFactory}.
30
+ *
31
+ * Override the protected method behind a member to change how every session
32
+ * writes, and return the subclass from a {@link ClientSessionFactory} bound on
33
+ * `model.ClientSessionFactory`. Serialising a model and rebuilding a document
34
+ * are the {@link ModelService}'s.
35
+ *
36
+ * An override of {@link dispose} calls `super.dispose(cause)`: that is what
37
+ * closes the session's opens and frees its id, and dropping `cause` reverts
38
+ * a lost client's documents without their grace.
39
+ */
40
+ export class DefaultClientSession {
41
+ services;
42
+ disposed = false;
43
+ /**
44
+ * This session's opens still under way, by canonical URI. Recorded before
45
+ * the first await, so a second open of the same URI joins the first rather
46
+ * than racing it, and `withOpen` can tell an open another call is making.
47
+ */
48
+ pendingOpens = new Map();
49
+ /**
50
+ * The options of this session's opens, by canonical URI. A first open
51
+ * records its entry before the store has the URI open, and the entry goes
52
+ * when that open closes, whoever ends it: this session, or the store for a
53
+ * deleted file. A first open that fails never opens, so nothing closes it
54
+ * and its entry stays until the next first open of the URI overwrites it;
55
+ * {@link openOptions} therefore reads an entry only while the store has the
56
+ * URI open for this session.
57
+ */
58
+ openOptionsByUri = new Map();
59
+ /** Drops an open's options from {@link openOptionsByUri} when the store closes the open. */
60
+ closeListener;
61
+ /** Logs under `logName`, `ClientSession` when none is given, with this session's id in a bracket of its own, so a line names the session that wrote. */
62
+ tracer;
63
+ /** The service bound on `model.ModelService`, which serialises and rebuilds for this session. */
64
+ modelService;
65
+ /** See {@link ClientSessionFactoryOptions.slowUpdateWarnMs}; `undefined` when not set. */
66
+ slowUpdateWarn;
67
+ clientId;
68
+ label;
69
+ constructor(services, options) {
70
+ this.services = services;
71
+ this.clientId = options.clientId;
72
+ this.label = options.label ?? options.clientId;
73
+ // The slot is shared across grammars; this session's types hold for the
74
+ // grammar that started it, as `createSession`'s narrowing does.
75
+ this.modelService = services.model.ModelService;
76
+ this.slowUpdateWarn = options.slowUpdateWarnMs !== undefined ? ObservableValue.from(options.slowUpdateWarnMs) : undefined;
77
+ this.tracer = services.Tracer.for(options.logName ?? 'ClientSession').with(this.clientId);
78
+ this.closeListener = services.workspace.TextDocuments.onDidClose(event => {
79
+ if (event.clientId === this.clientId) {
80
+ this.openOptionsByUri.delete(event.document.uri);
81
+ }
82
+ });
83
+ }
84
+ open(uri, options) {
85
+ this.assertLive();
86
+ return this.openDocument(uri, options);
87
+ }
88
+ openOptions(uri) {
89
+ this.assertLive();
90
+ return this.services.workspace.TextDocuments.isOpenInClient(uri, this.clientId)
91
+ ? this.openOptionsByUri.get(this.canonicalKey(uri))
92
+ : undefined;
93
+ }
94
+ create(uri, text) {
95
+ this.assertLive();
96
+ return this.createDocument(uri, text);
97
+ }
98
+ update(args, cancelToken) {
99
+ this.assertLive();
100
+ return this.updateDocument(args, cancelToken);
101
+ }
102
+ updateAll(args, cancelToken) {
103
+ this.assertLive();
104
+ return this.updateDocuments(args, cancelToken);
105
+ }
106
+ save(args, cancelToken) {
107
+ this.assertLive();
108
+ return this.saveDocument(args, cancelToken);
109
+ }
110
+ close(uri) {
111
+ this.assertLive();
112
+ return this.closeDocument(uri);
113
+ }
114
+ withOpen(uri, fn) {
115
+ this.assertLive();
116
+ return this.runWithOpen(uri, fn);
117
+ }
118
+ isOwnEcho(sourceClientId) {
119
+ this.assertLive();
120
+ return sourceClientId === this.clientId;
121
+ }
122
+ dispose(cause) {
123
+ if (this.disposed) {
124
+ return;
125
+ }
126
+ this.disposed = true;
127
+ this.services.workspace.TextDocuments.closeSession(this.clientId, cause);
128
+ this.closeListener.dispose();
129
+ }
130
+ assertLive() {
131
+ if (this.disposed) {
132
+ throw new SessionClosedError(this.clientId);
133
+ }
134
+ }
135
+ /** Throw `DocumentNotOpenError` unless this session has `uri` open. */
136
+ assertOpen(uri) {
137
+ if (!this.services.workspace.TextDocuments.isOpenInClient(uri, this.clientId)) {
138
+ throw new DocumentNotOpenError(uri, this.clientId);
139
+ }
140
+ }
141
+ /**
142
+ * Throw `ConflictError` when `basedOn` names a version other than
143
+ * `currentVersion`. A write calls it at the door and again in the
144
+ * synchronous step that applies the text, and has to call it synchronously
145
+ * there: a check separated from the apply by an await lets two writes based
146
+ * on one version both apply.
147
+ */
148
+ assertBasedOn(uri, basedOn, currentVersion) {
149
+ if (isSnapshotVersion(basedOn) && currentVersion !== basedOn) {
150
+ // Distinct from the post-build "superseded" debug line of an update: this
151
+ // is a based-on-stale rejection (the write never applies), not two
152
+ // writes racing.
153
+ this.tracer.debug(`Conflict on ${uri}: based-on v${basedOn} stale, server at v${currentVersion}`);
154
+ throw new ConflictError(uri, basedOn, currentVersion);
155
+ }
156
+ }
157
+ /**
158
+ * Serialise `args.model`, apply it to the store under this session's id,
159
+ * rebuild, and resolve to the rebuilt document.
160
+ *
161
+ * The open check and the `basedOn` gate run at the door, so a write that
162
+ * cannot land is refused before any adopter serialiser runs, and again in
163
+ * the synchronous step that applies the text: made only before the
164
+ * serialiser's await, a close during it lets the write land on a document
165
+ * this session no longer has open, and two writes based on one version
166
+ * both apply.
167
+ *
168
+ * Resolves with the latest build of the document, which may already carry
169
+ * a newer write; that is logged at debug, and a slow update at warn when
170
+ * `ClientSessionFactoryOptions.slowUpdateWarnMs` is set.
171
+ */
172
+ async updateDocument(args, cancelToken) {
173
+ const service = this.modelService;
174
+ const slowWarn = this.slowUpdateWarn && { threshold: this.slowUpdateWarn, stopwatch: this.services.Clock.stopwatch() };
175
+ const uri = this.canonicalKey(args.uri);
176
+ const profile = Logger.isLevelEnabled('debug') ? this.tracer.profile(`model-update ${uri}`) : undefined;
177
+ const run = async (stage, fn) => (profile ? profile.scope(stage, fn) : fn());
178
+ const textDocuments = this.services.workspace.TextDocuments;
179
+ this.assertOpen(uri);
180
+ this.assertBasedOn(uri, args.basedOn, textDocuments.version(uri));
181
+ const text = await run('serialize', () => service.modelToText(uri, args.model, cancelToken));
182
+ const appliedVersion = await run('apply', () => {
183
+ this.assertOpen(uri);
184
+ this.assertBasedOn(uri, args.basedOn, textDocuments.version(uri));
185
+ return this.services.workspace.AstDocumentManager.update(uri, text, this.clientId);
186
+ });
187
+ // Through the public `rebuild`, so an override of it stays in the path.
188
+ // An override that awaits before calling the base can outlast the build
189
+ // this write already has, and then builds it twice; see
190
+ // `ModelService.rebuild`.
191
+ const doc = await run('rebuild', () => service.rebuild(uri, answerState(this.services.workspace.DocumentBuilder), cancelToken));
192
+ const finalVersion = textDocuments.version(uri);
193
+ if (finalVersion > appliedVersion) {
194
+ this.tracer.debug(`Update to v${appliedVersion} ready at v${finalVersion} (changed again before it settled)`);
195
+ }
196
+ else {
197
+ this.tracer.debug(`Update to v${appliedVersion} ready`);
198
+ }
199
+ if (slowWarn) {
200
+ const elapsed = Math.round(slowWarn.stopwatch.elapsedMs);
201
+ const threshold = slowWarn.threshold.value;
202
+ if (elapsed >= threshold) {
203
+ this.tracer.withUri(uri).warn(`Slow update: ${elapsed}ms ≥ ${threshold}ms (v${appliedVersion}, client=${this.clientId})`);
204
+ }
205
+ }
206
+ profile?.report('debug');
207
+ return doc;
208
+ }
209
+ /**
210
+ * Write every document of `args.updates`, all or none: every model is
211
+ * serialised first, then every open check and `basedOn` gate runs and every
212
+ * text is applied in one synchronous step. Checked at the door as well, so
213
+ * a stale set is refused before any adopter serialiser runs.
214
+ *
215
+ * The apply step relies on `AstDocumentManager.update` applying its text
216
+ * before its first await, as the default does: an override that awaits first
217
+ * lets another write land between two documents of the set.
218
+ */
219
+ async updateDocuments(args, cancelToken) {
220
+ const service = this.modelService;
221
+ const { updates } = args;
222
+ const textDocuments = this.services.workspace.TextDocuments;
223
+ const uris = updates.map(update => this.canonicalKey(update.uri));
224
+ if (new Set(uris).size !== uris.length) {
225
+ throw new Error(`updateAll names a document more than once: ${uris.join(', ')}`);
226
+ }
227
+ const check = () => updates.forEach((update, i) => {
228
+ this.assertOpen(uris[i]);
229
+ this.assertBasedOn(uris[i], update.basedOn, textDocuments.version(uris[i]));
230
+ });
231
+ check();
232
+ const texts = [];
233
+ for (const [i, update] of updates.entries()) {
234
+ texts.push(await service.modelToText(uris[i], update.model, cancelToken));
235
+ }
236
+ // One synchronous step from the first check to the last apply: an await
237
+ // anywhere in it lets a close or another write land after its document
238
+ // was checked, and the set then half-applies before a later check fails.
239
+ check();
240
+ const applied = uris.map((uri, i) => this.services.workspace.AstDocumentManager.update(uri, texts[i], this.clientId));
241
+ await Promise.all(applied);
242
+ const state = answerState(this.services.workspace.DocumentBuilder);
243
+ return Promise.all(uris.map(uri => service.rebuild(uri, state, cancelToken)));
244
+ }
245
+ /**
246
+ * Write `args.model` through {@link updateDocument}, so an override of it
247
+ * applies to saves too, then persist the document.
248
+ *
249
+ * Fails with `DocumentNotOpenError` and writes nothing when this session
250
+ * closes the URI while the text is being built: the check sits in the same
251
+ * synchronous step as the manager taking the text. Checked any earlier, a
252
+ * session that closes the URI during the rebuild still has the shared
253
+ * text, other clients' edits included, written in its name. Once taken,
254
+ * the write completes whatever the session does next.
255
+ */
256
+ async saveDocument(args, cancelToken) {
257
+ const doc = await this.updateDocument(args, cancelToken);
258
+ const uri = this.canonicalKey(args.uri);
259
+ this.assertOpen(uri);
260
+ await this.services.workspace.AstDocumentManager.save(uri, this.clientId);
261
+ return doc;
262
+ }
263
+ async closeDocument(uri) {
264
+ await this.services.workspace.AstDocumentManager.close({ uri, clientId: this.clientId });
265
+ }
266
+ /** Open `uri`, or join the open of it this session already has under way, whose options then stand. */
267
+ openDocument(uri, options) {
268
+ const key = this.canonicalKey(uri);
269
+ const pending = this.pendingOpens.get(key);
270
+ if (pending) {
271
+ return pending;
272
+ }
273
+ const opening = this.registerOpen(uri, options).finally(() => {
274
+ if (this.pendingOpens.get(key) === opening) {
275
+ this.pendingOpens.delete(key);
276
+ }
277
+ });
278
+ this.pendingOpens.set(key, opening);
279
+ return opening;
280
+ }
281
+ /**
282
+ * Open `uri` in the store for this session. The open path does not thread
283
+ * cancellation: the file read behind it takes no token, so a cancelled
284
+ * caller still completes the open.
285
+ *
286
+ * A first open records its options before the store opens the URI, so a
287
+ * listener of the store's open reads this open's options rather than an
288
+ * earlier one's.
289
+ */
290
+ async registerOpen(uri, options) {
291
+ const wasOpen = this.services.workspace.TextDocuments.isOpenInClient(uri, this.clientId);
292
+ if (!wasOpen) {
293
+ this.openOptionsByUri.set(this.canonicalKey(uri), options);
294
+ }
295
+ await this.services.workspace.AstDocumentManager.open({ uri, clientId: this.clientId });
296
+ await this.rejectIfEnded(uri, wasOpen);
297
+ }
298
+ canonicalKey(uri) {
299
+ return this.services.workspace.DocumentUriPolicy.canonicalUri(uri);
300
+ }
301
+ async createDocument(uri, text) {
302
+ if (await this.services.workspace.FileSystemProvider.exists(UriUtils.toUri(uri))) {
303
+ throw new Error(`Cannot create ${uri}: the file exists`);
304
+ }
305
+ this.assertLive();
306
+ if (this.services.workspace.TextDocuments.isRevertPending(uri)) {
307
+ throw new Error(`Cannot create ${uri}: it holds the unsaved text of a lost client, waiting out the revert grace`);
308
+ }
309
+ if (this.modelService.isOpen(uri)) {
310
+ throw new Error(`Cannot create ${uri}: it is open in a client`);
311
+ }
312
+ // The check above cannot see an open that registers while this one is
313
+ // under way, and opening an already-open URI only attaches, dropping
314
+ // `text`. Only an open that creates the document fires `onDidOpen`, so
315
+ // hearing it for this session, during this open, is what proves the
316
+ // document holds `text`; the client list afterwards cannot, since a
317
+ // client that registered first may have closed again by then.
318
+ const key = this.canonicalKey(uri);
319
+ let created = false;
320
+ const listener = this.services.workspace.TextDocuments.onDidOpen(event => {
321
+ if (event.clientId === this.clientId && event.document.uri === key) {
322
+ created = true;
323
+ }
324
+ });
325
+ try {
326
+ await this.services.workspace.AstDocumentManager.open({ uri, clientId: this.clientId, text });
327
+ }
328
+ finally {
329
+ listener.dispose();
330
+ }
331
+ await this.rejectIfEnded(uri, false);
332
+ if (!created) {
333
+ await this.closeDocument(uri);
334
+ throw new Error(`Cannot create ${uri}: it is open in a client`);
335
+ }
336
+ }
337
+ async runWithOpen(uri, fn) {
338
+ // An open another call of this session is still making counts as made:
339
+ // closing it afterwards would take away an open that call asked for.
340
+ const alreadyOpen = this.services.workspace.TextDocuments.isOpenInClient(uri, this.clientId) || this.pendingOpens.has(this.canonicalKey(uri));
341
+ await this.openDocument(uri, undefined);
342
+ try {
343
+ return await fn();
344
+ }
345
+ finally {
346
+ if (!alreadyOpen && !this.disposed) {
347
+ await this.closeDocument(uri);
348
+ }
349
+ }
350
+ }
351
+ /**
352
+ * Undo an open that completed after the session ended, then fail it.
353
+ *
354
+ * Ending the session closed only what it had open at that moment. An open
355
+ * still reading from disk registers afterwards, under an id that is no
356
+ * longer a session, and nothing would ever close it.
357
+ *
358
+ * Opens are keyed by id, so once a new session holds the same id this open
359
+ * is indistinguishable from one of its own, and closing it would close the
360
+ * new session's. It is left to that session, which releases it at its end.
361
+ */
362
+ async rejectIfEnded(uri, wasOpen) {
363
+ if (!this.disposed) {
364
+ return;
365
+ }
366
+ if (!wasOpen && this.modelService.getSession(this.clientId) === undefined) {
367
+ await this.closeDocument(uri);
368
+ }
369
+ throw new SessionClosedError(this.clientId);
370
+ }
371
+ }
372
+ /**
373
+ * The framework's {@link ClientSessionFactory}: a {@link DefaultClientSession}
374
+ * over the {@link ModelService} bound on `model.ModelService`, which the session
375
+ * serialises and rebuilds through. A model service constructed outside that
376
+ * slot therefore starts sessions that write through the bound one.
377
+ *
378
+ * A subclass that overrides {@link create} to build a session class of its
379
+ * own passes {@link options} on to that session's constructor; a session built
380
+ * without them has no slow-update warn and logs under the default name.
381
+ */
382
+ export class DefaultClientSessionFactory {
383
+ services;
384
+ options;
385
+ tracer;
386
+ constructor(services, options = {}) {
387
+ this.services = services;
388
+ this.options = options;
389
+ this.tracer = services.Tracer.for(options.logName ?? 'ClientSessionFactory').trace('instantiated');
390
+ }
391
+ create(clientId, label) {
392
+ return new DefaultClientSession(this.services, { ...this.options, clientId, label });
393
+ }
394
+ }
395
+ //# sourceMappingURL=client-session.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client-session.js","sourceRoot":"","sources":["../../../src/langium/model-service/client-session.ts"],"names":[],"mappings":"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"}
@@ -7,4 +7,5 @@
7
7
  * SPDX-License-Identifier: MIT
8
8
  ********************************************************************************/
9
9
  export * from './model-service.js';
10
+ export * from './client-session.js';
10
11
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/langium/model-service/index.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF,cAAc,oBAAoB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/langium/model-service/index.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC"}
@@ -7,4 +7,5 @@
7
7
  * SPDX-License-Identifier: MIT
8
8
  ********************************************************************************/
9
9
  export * from './model-service.js';
10
+ export * from './client-session.js';
10
11
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/langium/model-service/index.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF,cAAc,oBAAoB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/langium/model-service/index.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC"}