@hydranium/core 1.0.0-next.39 → 1.0.0-next.390

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 (805) hide show
  1. package/README.md +78 -82
  2. package/lib/browser/host-heads-in-worker.d.ts +77 -0
  3. package/lib/browser/host-heads-in-worker.d.ts.map +1 -0
  4. package/lib/browser/host-heads-in-worker.js +169 -0
  5. package/lib/browser/host-heads-in-worker.js.map +1 -0
  6. package/lib/browser/index.d.ts +12 -0
  7. package/lib/browser/index.d.ts.map +1 -0
  8. package/lib/browser/index.js +17 -0
  9. package/lib/browser/index.js.map +1 -0
  10. package/lib/browser/indexeddb-file-system-store.d.ts +82 -0
  11. package/lib/browser/indexeddb-file-system-store.d.ts.map +1 -0
  12. package/lib/browser/indexeddb-file-system-store.js +181 -0
  13. package/lib/browser/indexeddb-file-system-store.js.map +1 -0
  14. package/lib/browser/start-language-server-in-worker.d.ts +32 -0
  15. package/lib/browser/start-language-server-in-worker.d.ts.map +1 -0
  16. package/lib/browser/start-language-server-in-worker.js +40 -0
  17. package/lib/browser/start-language-server-in-worker.js.map +1 -0
  18. package/lib/documents/ast-document-manager.d.ts +254 -140
  19. package/lib/documents/ast-document-manager.d.ts.map +1 -1
  20. package/lib/documents/ast-document-manager.js +311 -128
  21. package/lib/documents/ast-document-manager.js.map +1 -1
  22. package/lib/documents/client-ids.d.ts +5 -19
  23. package/lib/documents/client-ids.d.ts.map +1 -1
  24. package/lib/documents/client-ids.js +5 -19
  25. package/lib/documents/client-ids.js.map +1 -1
  26. package/lib/documents/client-session-errors.d.ts +15 -0
  27. package/lib/documents/client-session-errors.d.ts.map +1 -0
  28. package/lib/documents/client-session-errors.js +15 -0
  29. package/lib/documents/client-session-errors.js.map +1 -0
  30. package/lib/documents/client-session-registry.d.ts +146 -0
  31. package/lib/documents/client-session-registry.d.ts.map +1 -0
  32. package/lib/documents/client-session-registry.js +207 -0
  33. package/lib/documents/client-session-registry.js.map +1 -0
  34. package/lib/documents/dirty-state-tracker.d.ts +101 -0
  35. package/lib/documents/dirty-state-tracker.d.ts.map +1 -0
  36. package/lib/documents/dirty-state-tracker.js +85 -0
  37. package/lib/documents/dirty-state-tracker.js.map +1 -0
  38. package/lib/documents/document-release-handler.d.ts +204 -0
  39. package/lib/documents/document-release-handler.d.ts.map +1 -0
  40. package/lib/documents/document-release-handler.js +317 -0
  41. package/lib/documents/document-release-handler.js.map +1 -0
  42. package/lib/documents/document-release-scheduler.d.ts +67 -0
  43. package/lib/documents/document-release-scheduler.d.ts.map +1 -0
  44. package/lib/documents/document-release-scheduler.js +80 -0
  45. package/lib/documents/document-release-scheduler.js.map +1 -0
  46. package/lib/documents/file-system-task-queue.d.ts +52 -0
  47. package/lib/documents/file-system-task-queue.d.ts.map +1 -0
  48. package/lib/documents/file-system-task-queue.js +40 -0
  49. package/lib/documents/file-system-task-queue.js.map +1 -0
  50. package/lib/documents/hydranium-text-documents.d.ts +453 -282
  51. package/lib/documents/hydranium-text-documents.d.ts.map +1 -1
  52. package/lib/documents/hydranium-text-documents.js +918 -504
  53. package/lib/documents/hydranium-text-documents.js.map +1 -1
  54. package/lib/documents/index.d.ts +10 -2
  55. package/lib/documents/index.d.ts.map +1 -1
  56. package/lib/documents/index.js +10 -2
  57. package/lib/documents/index.js.map +1 -1
  58. package/lib/documents/language-client-shadow.d.ts +234 -0
  59. package/lib/documents/language-client-shadow.d.ts.map +1 -0
  60. package/lib/documents/language-client-shadow.js +306 -0
  61. package/lib/documents/language-client-shadow.js.map +1 -0
  62. package/lib/documents/model-ledger.d.ts +47 -0
  63. package/lib/documents/model-ledger.d.ts.map +1 -0
  64. package/lib/documents/model-ledger.js +30 -0
  65. package/lib/documents/model-ledger.js.map +1 -0
  66. package/lib/documents/text-ledger.d.ts +64 -0
  67. package/lib/documents/text-ledger.d.ts.map +1 -0
  68. package/lib/documents/text-ledger.js +63 -0
  69. package/lib/documents/text-ledger.js.map +1 -0
  70. package/lib/documents/version-sync-service.d.ts +153 -0
  71. package/lib/documents/version-sync-service.d.ts.map +1 -0
  72. package/lib/documents/version-sync-service.js +186 -0
  73. package/lib/documents/version-sync-service.js.map +1 -0
  74. package/lib/index.d.ts +3 -0
  75. package/lib/index.d.ts.map +1 -1
  76. package/lib/index.js +3 -0
  77. package/lib/index.js.map +1 -1
  78. package/lib/langium/ast-extension/ast-extension-service.d.ts +42 -31
  79. package/lib/langium/ast-extension/ast-extension-service.d.ts.map +1 -1
  80. package/lib/langium/ast-extension/ast-extension-service.js +45 -19
  81. package/lib/langium/ast-extension/ast-extension-service.js.map +1 -1
  82. package/lib/langium/ast-extension/ast-node-builder.d.ts +12 -7
  83. package/lib/langium/ast-extension/ast-node-builder.d.ts.map +1 -1
  84. package/lib/langium/ast-extension/ast-node-builder.js +25 -9
  85. package/lib/langium/ast-extension/ast-node-builder.js.map +1 -1
  86. package/lib/langium/bootstrap.d.ts +49 -36
  87. package/lib/langium/bootstrap.d.ts.map +1 -1
  88. package/lib/langium/bootstrap.js +75 -36
  89. package/lib/langium/bootstrap.js.map +1 -1
  90. package/lib/langium/build-phase-pass/build-phase-pass-service.d.ts +9 -9
  91. package/lib/langium/build-phase-pass/build-phase-pass-service.d.ts.map +1 -1
  92. package/lib/langium/build-phase-pass/build-phase-pass-service.js +25 -16
  93. package/lib/langium/build-phase-pass/build-phase-pass-service.js.map +1 -1
  94. package/lib/langium/build-phase-pass/build-phase-pass.d.ts +20 -8
  95. package/lib/langium/build-phase-pass/build-phase-pass.d.ts.map +1 -1
  96. package/lib/langium/build-phase-pass/build-phase-pass.js +20 -0
  97. package/lib/langium/build-phase-pass/build-phase-pass.js.map +1 -1
  98. package/lib/langium/composite-ast-reflection.d.ts +46 -0
  99. package/lib/langium/composite-ast-reflection.d.ts.map +1 -0
  100. package/lib/langium/composite-ast-reflection.js +97 -0
  101. package/lib/langium/composite-ast-reflection.js.map +1 -0
  102. package/lib/langium/config/configuration-provider.d.ts +81 -0
  103. package/lib/langium/config/configuration-provider.d.ts.map +1 -0
  104. package/lib/langium/config/configuration-provider.js +112 -0
  105. package/lib/langium/config/configuration-provider.js.map +1 -0
  106. package/lib/langium/config/index.d.ts +1 -0
  107. package/lib/langium/config/index.d.ts.map +1 -1
  108. package/lib/langium/config/index.js +1 -0
  109. package/lib/langium/config/index.js.map +1 -1
  110. package/lib/langium/config/settings.js.map +1 -1
  111. package/lib/langium/diagnostics/console-tee.d.ts +27 -0
  112. package/lib/langium/diagnostics/console-tee.d.ts.map +1 -0
  113. package/lib/langium/diagnostics/console-tee.js +141 -0
  114. package/lib/langium/diagnostics/console-tee.js.map +1 -0
  115. package/lib/langium/diagnostics/hydranium-langium-profiler.d.ts +9 -20
  116. package/lib/langium/diagnostics/hydranium-langium-profiler.d.ts.map +1 -1
  117. package/lib/langium/diagnostics/hydranium-langium-profiler.js +15 -24
  118. package/lib/langium/diagnostics/hydranium-langium-profiler.js.map +1 -1
  119. package/lib/langium/diagnostics/log-preamble.js +1 -1
  120. package/lib/langium/diagnostics/log-preamble.js.map +1 -1
  121. package/lib/langium/diagnostics/logger.d.ts +25 -6
  122. package/lib/langium/diagnostics/logger.d.ts.map +1 -1
  123. package/lib/langium/diagnostics/logger.js +49 -17
  124. package/lib/langium/diagnostics/logger.js.map +1 -1
  125. package/lib/langium/diagnostics/lsp-logger.d.ts +25 -0
  126. package/lib/langium/diagnostics/lsp-logger.d.ts.map +1 -1
  127. package/lib/langium/diagnostics/lsp-logger.js +81 -46
  128. package/lib/langium/diagnostics/lsp-logger.js.map +1 -1
  129. package/lib/langium/diagnostics/server-tracer.d.ts.map +1 -1
  130. package/lib/langium/diagnostics/server-tracer.js.map +1 -1
  131. package/lib/langium/document-builder/build-pipeline-integration.d.ts +21 -1
  132. package/lib/langium/document-builder/build-pipeline-integration.d.ts.map +1 -1
  133. package/lib/langium/document-builder/build-pipeline-integration.js +43 -30
  134. package/lib/langium/document-builder/build-pipeline-integration.js.map +1 -1
  135. package/lib/langium/document-builder/build-session.d.ts +6 -5
  136. package/lib/langium/document-builder/build-session.d.ts.map +1 -1
  137. package/lib/langium/document-builder/build-session.js +5 -5
  138. package/lib/langium/document-builder/build-session.js.map +1 -1
  139. package/lib/langium/document-builder/document-builder.d.ts +390 -40
  140. package/lib/langium/document-builder/document-builder.d.ts.map +1 -1
  141. package/lib/langium/document-builder/document-builder.js +635 -102
  142. package/lib/langium/document-builder/document-builder.js.map +1 -1
  143. package/lib/langium/documentation/comment-provider.d.ts.map +1 -1
  144. package/lib/langium/documentation/comment-provider.js.map +1 -1
  145. package/lib/langium/integration-services.d.ts +20 -23
  146. package/lib/langium/integration-services.d.ts.map +1 -1
  147. package/lib/langium/integration-services.js.map +1 -1
  148. package/lib/langium/integrity/integrity-rule.d.ts +22 -8
  149. package/lib/langium/integrity/integrity-rule.d.ts.map +1 -1
  150. package/lib/langium/integrity/integrity-rule.js.map +1 -1
  151. package/lib/langium/integrity/integrity-service.d.ts +217 -29
  152. package/lib/langium/integrity/integrity-service.d.ts.map +1 -1
  153. package/lib/langium/integrity/integrity-service.js +588 -84
  154. package/lib/langium/integrity/integrity-service.js.map +1 -1
  155. package/lib/langium/keys/containment.d.ts +3 -2
  156. package/lib/langium/keys/containment.d.ts.map +1 -1
  157. package/lib/langium/keys/containment.js.map +1 -1
  158. package/lib/langium/keys/name-based-key-provider.d.ts +17 -10
  159. package/lib/langium/keys/name-based-key-provider.d.ts.map +1 -1
  160. package/lib/langium/keys/name-based-key-provider.js +24 -12
  161. package/lib/langium/keys/name-based-key-provider.js.map +1 -1
  162. package/lib/langium/keys/positional-key-provider.d.ts.map +1 -1
  163. package/lib/langium/keys/positional-key-provider.js.map +1 -1
  164. package/lib/langium/labeling/label-provider.d.ts.map +1 -1
  165. package/lib/langium/labeling/label-provider.js.map +1 -1
  166. package/lib/langium/language-module.d.ts +30 -5
  167. package/lib/langium/language-module.d.ts.map +1 -1
  168. package/lib/langium/language-module.js +21 -5
  169. package/lib/langium/language-module.js.map +1 -1
  170. package/lib/langium/model-service/client-session.d.ts +405 -0
  171. package/lib/langium/model-service/client-session.d.ts.map +1 -0
  172. package/lib/langium/model-service/client-session.js +479 -0
  173. package/lib/langium/model-service/client-session.js.map +1 -0
  174. package/lib/langium/model-service/index.d.ts +2 -0
  175. package/lib/langium/model-service/index.d.ts.map +1 -1
  176. package/lib/langium/model-service/index.js +2 -0
  177. package/lib/langium/model-service/index.js.map +1 -1
  178. package/lib/langium/model-service/model-events.d.ts +68 -0
  179. package/lib/langium/model-service/model-events.d.ts.map +1 -0
  180. package/lib/langium/model-service/model-events.js +10 -0
  181. package/lib/langium/model-service/model-events.js.map +1 -0
  182. package/lib/langium/model-service/model-service.d.ts +441 -323
  183. package/lib/langium/model-service/model-service.d.ts.map +1 -1
  184. package/lib/langium/model-service/model-service.js +602 -407
  185. package/lib/langium/model-service/model-service.js.map +1 -1
  186. package/lib/langium/module.d.ts +96 -37
  187. package/lib/langium/module.d.ts.map +1 -1
  188. package/lib/langium/module.js +41 -29
  189. package/lib/langium/module.js.map +1 -1
  190. package/lib/langium/naming/name-provider.d.ts +32 -7
  191. package/lib/langium/naming/name-provider.d.ts.map +1 -1
  192. package/lib/langium/naming/name-provider.js +10 -4
  193. package/lib/langium/naming/name-provider.js.map +1 -1
  194. package/lib/langium/naming/name-separator-validation.d.ts.map +1 -1
  195. package/lib/langium/project/abstract-project-manager.d.ts +184 -13
  196. package/lib/langium/project/abstract-project-manager.d.ts.map +1 -1
  197. package/lib/langium/project/abstract-project-manager.js +336 -16
  198. package/lib/langium/project/abstract-project-manager.js.map +1 -1
  199. package/lib/langium/project/project-change-event.d.ts +22 -3
  200. package/lib/langium/project/project-change-event.d.ts.map +1 -1
  201. package/lib/langium/project/project-manager.d.ts +28 -2
  202. package/lib/langium/project/project-manager.d.ts.map +1 -1
  203. package/lib/langium/project/single-project-manager.d.ts +7 -1
  204. package/lib/langium/project/single-project-manager.d.ts.map +1 -1
  205. package/lib/langium/project/single-project-manager.js +12 -0
  206. package/lib/langium/project/single-project-manager.js.map +1 -1
  207. package/lib/langium/residency/cst-residency-service.d.ts +92 -52
  208. package/lib/langium/residency/cst-residency-service.d.ts.map +1 -1
  209. package/lib/langium/residency/cst-residency-service.js +154 -58
  210. package/lib/langium/residency/cst-residency-service.js.map +1 -1
  211. package/lib/langium/scope/ast-node-description-provider.d.ts +46 -10
  212. package/lib/langium/scope/ast-node-description-provider.d.ts.map +1 -1
  213. package/lib/langium/scope/ast-node-description-provider.js +88 -15
  214. package/lib/langium/scope/ast-node-description-provider.js.map +1 -1
  215. package/lib/langium/scope/built-local-symbols.d.ts +12 -0
  216. package/lib/langium/scope/built-local-symbols.d.ts.map +1 -0
  217. package/lib/langium/scope/built-local-symbols.js +11 -0
  218. package/lib/langium/scope/built-local-symbols.js.map +1 -0
  219. package/lib/langium/scope/fallback-scope.d.ts +27 -0
  220. package/lib/langium/scope/fallback-scope.d.ts.map +1 -0
  221. package/lib/langium/scope/fallback-scope.js +35 -0
  222. package/lib/langium/scope/fallback-scope.js.map +1 -0
  223. package/lib/langium/scope/hydranium-scope-computation.d.ts +21 -18
  224. package/lib/langium/scope/hydranium-scope-computation.d.ts.map +1 -1
  225. package/lib/langium/scope/hydranium-scope-computation.js +38 -39
  226. package/lib/langium/scope/hydranium-scope-computation.js.map +1 -1
  227. package/lib/langium/scope/hydranium-scope-provider.d.ts +122 -32
  228. package/lib/langium/scope/hydranium-scope-provider.d.ts.map +1 -1
  229. package/lib/langium/scope/hydranium-scope-provider.js +217 -39
  230. package/lib/langium/scope/hydranium-scope-provider.js.map +1 -1
  231. package/lib/langium/scope/index.d.ts +1 -0
  232. package/lib/langium/scope/index.d.ts.map +1 -1
  233. package/lib/langium/scope/index.js +1 -0
  234. package/lib/langium/scope/index.js.map +1 -1
  235. package/lib/langium/scope/reference-builder.d.ts.map +1 -1
  236. package/lib/langium/scope/reference-builder.js.map +1 -1
  237. package/lib/langium/scope/reference-candidate-provider.d.ts +6 -5
  238. package/lib/langium/scope/reference-candidate-provider.d.ts.map +1 -1
  239. package/lib/langium/scope/reference-candidate-provider.js +3 -2
  240. package/lib/langium/scope/reference-candidate-provider.js.map +1 -1
  241. package/lib/langium/scope/scope-extension-service.d.ts +69 -37
  242. package/lib/langium/scope/scope-extension-service.d.ts.map +1 -1
  243. package/lib/langium/scope/scope-extension-service.js +102 -29
  244. package/lib/langium/scope/scope-extension-service.js.map +1 -1
  245. package/lib/langium/scope/scoped-ast-node-description.d.ts +1 -3
  246. package/lib/langium/scope/scoped-ast-node-description.d.ts.map +1 -1
  247. package/lib/langium/scope/scoped-ast-node-description.js +1 -3
  248. package/lib/langium/scope/scoped-ast-node-description.js.map +1 -1
  249. package/lib/langium/serialization/abstract-serializer.d.ts +38 -27
  250. package/lib/langium/serialization/abstract-serializer.d.ts.map +1 -1
  251. package/lib/langium/serialization/abstract-serializer.js +54 -30
  252. package/lib/langium/serialization/abstract-serializer.js.map +1 -1
  253. package/lib/langium/serialization/json-serializer.d.ts +8 -1
  254. package/lib/langium/serialization/json-serializer.d.ts.map +1 -1
  255. package/lib/langium/serialization/json-serializer.js +13 -3
  256. package/lib/langium/serialization/json-serializer.js.map +1 -1
  257. package/lib/langium/serialization/serializer.d.ts +1 -1
  258. package/lib/langium/serialization/yaml-serializer.d.ts +12 -0
  259. package/lib/langium/serialization/yaml-serializer.d.ts.map +1 -1
  260. package/lib/langium/serialization/yaml-serializer.js +24 -4
  261. package/lib/langium/serialization/yaml-serializer.js.map +1 -1
  262. package/lib/langium/service-registry.d.ts +29 -1
  263. package/lib/langium/service-registry.d.ts.map +1 -1
  264. package/lib/langium/service-registry.js +37 -0
  265. package/lib/langium/service-registry.js.map +1 -1
  266. package/lib/langium/shared-services.d.ts +10 -4
  267. package/lib/langium/shared-services.d.ts.map +1 -1
  268. package/lib/langium/shared-services.js.map +1 -1
  269. package/lib/langium/single-langium-copy.d.ts +22 -0
  270. package/lib/langium/single-langium-copy.d.ts.map +1 -0
  271. package/lib/langium/single-langium-copy.js +36 -0
  272. package/lib/langium/single-langium-copy.js.map +1 -0
  273. package/lib/langium/transfer/transfer-encoder.d.ts +60 -39
  274. package/lib/langium/transfer/transfer-encoder.d.ts.map +1 -1
  275. package/lib/langium/transfer/transfer-encoder.js +35 -24
  276. package/lib/langium/transfer/transfer-encoder.js.map +1 -1
  277. package/lib/langium/trivia/comment-preserver.d.ts +543 -0
  278. package/lib/langium/trivia/comment-preserver.d.ts.map +1 -0
  279. package/lib/langium/trivia/comment-preserver.js +1165 -0
  280. package/lib/langium/trivia/comment-preserver.js.map +1 -0
  281. package/lib/langium/trivia/document-ending-preserver.d.ts +51 -0
  282. package/lib/langium/trivia/document-ending-preserver.d.ts.map +1 -0
  283. package/lib/langium/trivia/document-ending-preserver.js +62 -0
  284. package/lib/langium/trivia/document-ending-preserver.js.map +1 -0
  285. package/lib/langium/trivia/index.d.ts +14 -0
  286. package/lib/langium/trivia/index.d.ts.map +1 -0
  287. package/lib/langium/trivia/index.js +14 -0
  288. package/lib/langium/trivia/index.js.map +1 -0
  289. package/lib/langium/trivia/trivia-contribution.d.ts +37 -0
  290. package/lib/langium/trivia/trivia-contribution.d.ts.map +1 -0
  291. package/lib/langium/trivia/trivia-contribution.js +10 -0
  292. package/lib/langium/trivia/trivia-contribution.js.map +1 -0
  293. package/lib/langium/trivia/trivia-preserver.d.ts +52 -0
  294. package/lib/langium/trivia/trivia-preserver.d.ts.map +1 -0
  295. package/lib/langium/trivia/trivia-preserver.js +10 -0
  296. package/lib/langium/trivia/trivia-preserver.js.map +1 -0
  297. package/lib/langium/trivia/trivia-service.d.ts +70 -0
  298. package/lib/langium/trivia/trivia-service.d.ts.map +1 -0
  299. package/lib/langium/trivia/trivia-service.js +56 -0
  300. package/lib/langium/trivia/trivia-service.js.map +1 -0
  301. package/lib/langium/update-rewrite/normalize-empty-strings.d.ts.map +1 -1
  302. package/lib/langium/update-rewrite/update-rewrite-service.d.ts +1 -1
  303. package/lib/langium/update-rewrite/update-rewrite-service.d.ts.map +1 -1
  304. package/lib/langium/update-rewrite/update-rewrite-service.js.map +1 -1
  305. package/lib/langium/update-rewrite/update-rewrite.d.ts +1 -1
  306. package/lib/langium/validation/document-validator.d.ts +168 -23
  307. package/lib/langium/validation/document-validator.d.ts.map +1 -1
  308. package/lib/langium/validation/document-validator.js +264 -26
  309. package/lib/langium/validation/document-validator.js.map +1 -1
  310. package/lib/langium/validation/validation-contribution-collector.d.ts +9 -1
  311. package/lib/langium/validation/validation-contribution-collector.d.ts.map +1 -1
  312. package/lib/langium/validation/validation-contribution-collector.js +1 -1
  313. package/lib/langium/validation/validation-contribution-collector.js.map +1 -1
  314. package/lib/langium/workspace/ast-node-locator.d.ts +24 -0
  315. package/lib/langium/workspace/ast-node-locator.d.ts.map +1 -0
  316. package/lib/langium/workspace/ast-node-locator.js +32 -0
  317. package/lib/langium/workspace/ast-node-locator.js.map +1 -0
  318. package/lib/langium/workspace/document-uri-policy.d.ts +24 -15
  319. package/lib/langium/workspace/document-uri-policy.d.ts.map +1 -1
  320. package/lib/langium/workspace/document-uri-policy.js +22 -13
  321. package/lib/langium/workspace/document-uri-policy.js.map +1 -1
  322. package/lib/langium/workspace/file-not-found.d.ts +23 -0
  323. package/lib/langium/workspace/file-not-found.d.ts.map +1 -0
  324. package/lib/langium/workspace/file-not-found.js +31 -0
  325. package/lib/langium/workspace/file-not-found.js.map +1 -0
  326. package/lib/langium/workspace/file-system-provider.d.ts +167 -8
  327. package/lib/langium/workspace/file-system-provider.d.ts.map +1 -1
  328. package/lib/langium/workspace/file-system-provider.js +115 -13
  329. package/lib/langium/workspace/file-system-provider.js.map +1 -1
  330. package/lib/langium/workspace/hydranium-langium-document-factory.d.ts +78 -4
  331. package/lib/langium/workspace/hydranium-langium-document-factory.d.ts.map +1 -1
  332. package/lib/langium/workspace/hydranium-langium-document-factory.js +188 -5
  333. package/lib/langium/workspace/hydranium-langium-document-factory.js.map +1 -1
  334. package/lib/langium/workspace/hydranium-workspace-lock.d.ts +50 -1
  335. package/lib/langium/workspace/hydranium-workspace-lock.d.ts.map +1 -1
  336. package/lib/langium/workspace/hydranium-workspace-lock.js +73 -1
  337. package/lib/langium/workspace/hydranium-workspace-lock.js.map +1 -1
  338. package/lib/langium/workspace/hydranium-workspace-manager.d.ts +105 -21
  339. package/lib/langium/workspace/hydranium-workspace-manager.d.ts.map +1 -1
  340. package/lib/langium/workspace/hydranium-workspace-manager.js +186 -31
  341. package/lib/langium/workspace/hydranium-workspace-manager.js.map +1 -1
  342. package/lib/langium/workspace/in-memory-file-system-provider.d.ts +26 -9
  343. package/lib/langium/workspace/in-memory-file-system-provider.d.ts.map +1 -1
  344. package/lib/langium/workspace/in-memory-file-system-provider.js +45 -22
  345. package/lib/langium/workspace/in-memory-file-system-provider.js.map +1 -1
  346. package/lib/langium/workspace/index-manager.d.ts.map +1 -1
  347. package/lib/langium/workspace/index-manager.js.map +1 -1
  348. package/lib/langium/workspace/index.d.ts +3 -0
  349. package/lib/langium/workspace/index.d.ts.map +1 -1
  350. package/lib/langium/workspace/index.js +3 -0
  351. package/lib/langium/workspace/index.js.map +1 -1
  352. package/lib/langium/workspace/initialize-workspace.d.ts +40 -3
  353. package/lib/langium/workspace/initialize-workspace.d.ts.map +1 -1
  354. package/lib/langium/workspace/initialize-workspace.js +68 -3
  355. package/lib/langium/workspace/initialize-workspace.js.map +1 -1
  356. package/lib/langium/workspace/langium-documents.d.ts +7 -0
  357. package/lib/langium/workspace/langium-documents.d.ts.map +1 -1
  358. package/lib/langium/workspace/langium-documents.js +18 -1
  359. package/lib/langium/workspace/langium-documents.js.map +1 -1
  360. package/lib/langium/workspace/persistent-file-system-provider.d.ts +16 -10
  361. package/lib/langium/workspace/persistent-file-system-provider.d.ts.map +1 -1
  362. package/lib/langium/workspace/persistent-file-system-provider.js +25 -13
  363. package/lib/langium/workspace/persistent-file-system-provider.js.map +1 -1
  364. package/lib/{documents → langium/workspace}/self-save-registry.d.ts +7 -9
  365. package/lib/langium/workspace/self-save-registry.d.ts.map +1 -0
  366. package/lib/{documents → langium/workspace}/self-save-registry.js +9 -11
  367. package/lib/langium/workspace/self-save-registry.js.map +1 -0
  368. package/lib/langium/workspace/syntax-errors.d.ts +23 -0
  369. package/lib/langium/workspace/syntax-errors.d.ts.map +1 -0
  370. package/lib/langium/workspace/syntax-errors.js +29 -0
  371. package/lib/langium/workspace/syntax-errors.js.map +1 -0
  372. package/lib/langium/workspace/virtual-document.d.ts +55 -21
  373. package/lib/langium/workspace/virtual-document.d.ts.map +1 -1
  374. package/lib/langium/workspace/virtual-document.js +87 -24
  375. package/lib/langium/workspace/virtual-document.js.map +1 -1
  376. package/lib/langium/workspace/write-lock-scope.d.ts +22 -10
  377. package/lib/langium/workspace/write-lock-scope.d.ts.map +1 -1
  378. package/lib/langium/workspace/write-lock-scope.js +15 -5
  379. package/lib/langium/workspace/write-lock-scope.js.map +1 -1
  380. package/lib/launcher/integrated-server.d.ts +3 -1
  381. package/lib/launcher/integrated-server.d.ts.map +1 -1
  382. package/lib/locale/server-locale.d.ts +6 -6
  383. package/lib/locale/server-locale.d.ts.map +1 -1
  384. package/lib/locale/server-locale.js.map +1 -1
  385. package/lib/lsp/completion/hydranium-completion-provider.d.ts +44 -2
  386. package/lib/lsp/completion/hydranium-completion-provider.d.ts.map +1 -1
  387. package/lib/lsp/completion/hydranium-completion-provider.js +68 -0
  388. package/lib/lsp/completion/hydranium-completion-provider.js.map +1 -1
  389. package/lib/lsp/connection-features.d.ts +23 -0
  390. package/lib/lsp/connection-features.d.ts.map +1 -0
  391. package/lib/lsp/connection-features.js +60 -0
  392. package/lib/lsp/connection-features.js.map +1 -0
  393. package/lib/lsp/diagnostics-connection.d.ts +27 -0
  394. package/lib/lsp/diagnostics-connection.d.ts.map +1 -0
  395. package/lib/lsp/diagnostics-connection.js +53 -0
  396. package/lib/lsp/diagnostics-connection.js.map +1 -0
  397. package/lib/lsp/edit-requests-guard.d.ts +31 -0
  398. package/lib/lsp/edit-requests-guard.d.ts.map +1 -0
  399. package/lib/lsp/edit-requests-guard.js +125 -0
  400. package/lib/lsp/edit-requests-guard.js.map +1 -0
  401. package/lib/lsp/hydranium-document-update-handler.d.ts +126 -82
  402. package/lib/lsp/hydranium-document-update-handler.d.ts.map +1 -1
  403. package/lib/lsp/hydranium-document-update-handler.js +234 -101
  404. package/lib/lsp/hydranium-document-update-handler.js.map +1 -1
  405. package/lib/lsp/index.d.ts +6 -2
  406. package/lib/lsp/index.d.ts.map +1 -1
  407. package/lib/lsp/index.js +6 -2
  408. package/lib/lsp/index.js.map +1 -1
  409. package/lib/lsp/lsp-latency.d.ts +39 -0
  410. package/lib/lsp/lsp-latency.d.ts.map +1 -0
  411. package/lib/lsp/lsp-latency.js +58 -0
  412. package/lib/lsp/lsp-latency.js.map +1 -0
  413. package/lib/lsp/save-text-document.d.ts +31 -0
  414. package/lib/lsp/save-text-document.d.ts.map +1 -0
  415. package/lib/lsp/save-text-document.js +52 -0
  416. package/lib/lsp/save-text-document.js.map +1 -0
  417. package/lib/lsp/semantic-token-provider.d.ts +58 -2
  418. package/lib/lsp/semantic-token-provider.d.ts.map +1 -1
  419. package/lib/lsp/semantic-token-provider.js +98 -9
  420. package/lib/lsp/semantic-token-provider.js.map +1 -1
  421. package/lib/lsp/shared-module.d.ts +4 -8
  422. package/lib/lsp/shared-module.d.ts.map +1 -1
  423. package/lib/lsp/shared-module.js.map +1 -1
  424. package/lib/lsp/start-language-server.d.ts +12 -7
  425. package/lib/lsp/start-language-server.d.ts.map +1 -1
  426. package/lib/lsp/start-language-server.js +21 -7
  427. package/lib/lsp/start-language-server.js.map +1 -1
  428. package/lib/messages/carriers.d.ts +4 -6
  429. package/lib/messages/carriers.d.ts.map +1 -1
  430. package/lib/messages/carriers.js +4 -6
  431. package/lib/messages/carriers.js.map +1 -1
  432. package/lib/messages/index.d.ts +2 -2
  433. package/lib/messages/index.d.ts.map +1 -1
  434. package/lib/messages/index.js +2 -2
  435. package/lib/messages/index.js.map +1 -1
  436. package/lib/messages/renderer.d.ts +10 -4
  437. package/lib/messages/renderer.d.ts.map +1 -1
  438. package/lib/messages/renderer.js +6 -0
  439. package/lib/messages/renderer.js.map +1 -1
  440. package/lib/node/event-loop-monitor.d.ts.map +1 -1
  441. package/lib/node/event-loop-monitor.js +3 -2
  442. package/lib/node/event-loop-monitor.js.map +1 -1
  443. package/lib/node/heap-ceiling.d.ts +61 -0
  444. package/lib/node/heap-ceiling.d.ts.map +1 -0
  445. package/lib/node/heap-ceiling.js +72 -0
  446. package/lib/node/heap-ceiling.js.map +1 -0
  447. package/lib/node/index.d.ts +1 -1
  448. package/lib/node/index.d.ts.map +1 -1
  449. package/lib/node/index.js +5 -1
  450. package/lib/node/index.js.map +1 -1
  451. package/lib/node/latency-from-env.d.ts +1 -1
  452. package/lib/node/latency-from-env.js +1 -1
  453. package/lib/node/lint-grammar.js.map +1 -1
  454. package/lib/node/log-file-sink.d.ts +3 -2
  455. package/lib/node/log-file-sink.d.ts.map +1 -1
  456. package/lib/node/log-file-sink.js +6 -2
  457. package/lib/node/log-file-sink.js.map +1 -1
  458. package/lib/node/log-preamble-node.d.ts +5 -3
  459. package/lib/node/log-preamble-node.d.ts.map +1 -1
  460. package/lib/node/log-preamble-node.js +13 -10
  461. package/lib/node/log-preamble-node.js.map +1 -1
  462. package/lib/node/measure-memory.d.ts.map +1 -1
  463. package/lib/node/measure-memory.js +5 -4
  464. package/lib/node/measure-memory.js.map +1 -1
  465. package/lib/node/memory-monitor.d.ts +2 -2
  466. package/lib/node/memory-monitor.d.ts.map +1 -1
  467. package/lib/node/memory-monitor.js +9 -10
  468. package/lib/node/memory-monitor.js.map +1 -1
  469. package/lib/node/node-file-system-provider.d.ts +67 -9
  470. package/lib/node/node-file-system-provider.d.ts.map +1 -1
  471. package/lib/node/node-file-system-provider.js +198 -53
  472. package/lib/node/node-file-system-provider.js.map +1 -1
  473. package/lib/node/profile-capture.d.ts +12 -4
  474. package/lib/node/profile-capture.d.ts.map +1 -1
  475. package/lib/node/profile-capture.js +8 -6
  476. package/lib/node/profile-capture.js.map +1 -1
  477. package/lib/node/profile-digest.js.map +1 -1
  478. package/lib/node/profiling-run.d.ts +13 -3
  479. package/lib/node/profiling-run.d.ts.map +1 -1
  480. package/lib/node/profiling-run.js +17 -8
  481. package/lib/node/profiling-run.js.map +1 -1
  482. package/lib/node/rename-over-open-readers.d.ts +61 -0
  483. package/lib/node/rename-over-open-readers.d.ts.map +1 -0
  484. package/lib/node/rename-over-open-readers.js +80 -0
  485. package/lib/node/rename-over-open-readers.js.map +1 -0
  486. package/lib/node/server-diagnostics.js +1 -1
  487. package/lib/node/server-diagnostics.js.map +1 -1
  488. package/lib/node/server-state-snapshot.d.ts +6 -5
  489. package/lib/node/server-state-snapshot.d.ts.map +1 -1
  490. package/lib/node/server-state-snapshot.js +20 -17
  491. package/lib/node/server-state-snapshot.js.map +1 -1
  492. package/lib/node/socket-launcher.d.ts +43 -7
  493. package/lib/node/socket-launcher.d.ts.map +1 -1
  494. package/lib/node/socket-launcher.js +42 -7
  495. package/lib/node/socket-launcher.js.map +1 -1
  496. package/lib/node/startup-cpu-profile.d.ts +29 -0
  497. package/lib/node/startup-cpu-profile.d.ts.map +1 -0
  498. package/lib/node/startup-cpu-profile.js +91 -0
  499. package/lib/node/startup-cpu-profile.js.map +1 -0
  500. package/lib/node/stdio-launcher.d.ts +13 -13
  501. package/lib/node/stdio-launcher.d.ts.map +1 -1
  502. package/lib/node/stdio-launcher.js +21 -11
  503. package/lib/node/stdio-launcher.js.map +1 -1
  504. package/lib/node/validate-workspace.d.ts +1 -1
  505. package/lib/node/validate-workspace.d.ts.map +1 -1
  506. package/lib/node/validate-workspace.js +5 -1
  507. package/lib/node/validate-workspace.js.map +1 -1
  508. package/lib/testing/document-uri-policy-conformance.js +1 -1
  509. package/lib/testing/document-uri-policy-conformance.js.map +1 -1
  510. package/lib/testing/fake-description.js.map +1 -1
  511. package/lib/testing/fake-document.d.ts +2 -1
  512. package/lib/testing/fake-document.d.ts.map +1 -1
  513. package/lib/testing/fake-document.js.map +1 -1
  514. package/lib/testing/index.d.ts +1 -1
  515. package/lib/testing/index.d.ts.map +1 -1
  516. package/lib/testing/index.js +2 -1
  517. package/lib/testing/index.js.map +1 -1
  518. package/lib/testing/langium-test-helpers.d.ts.map +1 -1
  519. package/lib/testing/langium-test-helpers.js +1 -0
  520. package/lib/testing/langium-test-helpers.js.map +1 -1
  521. package/lib/testing/make-noop-language-services.js.map +1 -1
  522. package/lib/testing/make-noop-shared-services.js.map +1 -1
  523. package/lib/testing/make-test-services.d.ts +45 -14
  524. package/lib/testing/make-test-services.d.ts.map +1 -1
  525. package/lib/testing/make-test-services.js +23 -7
  526. package/lib/testing/make-test-services.js.map +1 -1
  527. package/lib/testing/make-test-tracer.d.ts +12 -0
  528. package/lib/testing/make-test-tracer.d.ts.map +1 -1
  529. package/lib/testing/make-test-tracer.js +13 -0
  530. package/lib/testing/make-test-tracer.js.map +1 -1
  531. package/lib/testing/node/applied-edit-capture.d.ts +29 -0
  532. package/lib/testing/node/applied-edit-capture.d.ts.map +1 -0
  533. package/lib/testing/node/applied-edit-capture.js +117 -0
  534. package/lib/testing/node/applied-edit-capture.js.map +1 -0
  535. package/lib/testing/node/golden-corpus.js.map +1 -1
  536. package/lib/testing/node/index.d.ts +4 -1
  537. package/lib/testing/node/index.d.ts.map +1 -1
  538. package/lib/testing/node/index.js +4 -1
  539. package/lib/testing/node/index.js.map +1 -1
  540. package/lib/testing/node/lsp-harness.d.ts.map +1 -1
  541. package/lib/testing/node/lsp-harness.js +2 -0
  542. package/lib/testing/node/lsp-harness.js.map +1 -1
  543. package/lib/testing/node/lsp-server-connection.d.ts +21 -6
  544. package/lib/testing/node/lsp-server-connection.d.ts.map +1 -1
  545. package/lib/testing/node/lsp-server-connection.js +49 -106
  546. package/lib/testing/node/lsp-server-connection.js.map +1 -1
  547. package/lib/testing/node/scratch-workspace.d.ts +2 -1
  548. package/lib/testing/node/scratch-workspace.d.ts.map +1 -1
  549. package/lib/testing/node/scratch-workspace.js +12 -6
  550. package/lib/testing/node/scratch-workspace.js.map +1 -1
  551. package/lib/testing/node/settle-server.d.ts +33 -0
  552. package/lib/testing/node/settle-server.d.ts.map +1 -0
  553. package/lib/testing/node/settle-server.js +84 -0
  554. package/lib/testing/node/settle-server.js.map +1 -0
  555. package/lib/testing/node/spawned-server.d.ts +30 -1
  556. package/lib/testing/node/spawned-server.d.ts.map +1 -1
  557. package/lib/testing/node/spawned-server.js +39 -2
  558. package/lib/testing/node/spawned-server.js.map +1 -1
  559. package/lib/testing/playwright/browser-capture-bridge.js.map +1 -1
  560. package/lib/testing/playwright/e2e-profiling.js.map +1 -1
  561. package/lib/testing/playwright/flaky-network-proxy.d.ts +76 -0
  562. package/lib/testing/playwright/flaky-network-proxy.d.ts.map +1 -0
  563. package/lib/testing/playwright/flaky-network-proxy.js +164 -0
  564. package/lib/testing/playwright/flaky-network-proxy.js.map +1 -0
  565. package/lib/testing/playwright/index.d.ts +1 -0
  566. package/lib/testing/playwright/index.d.ts.map +1 -1
  567. package/lib/testing/playwright/index.js +1 -0
  568. package/lib/testing/playwright/index.js.map +1 -1
  569. package/lib/testing/playwright/server-log-capture.d.ts +46 -16
  570. package/lib/testing/playwright/server-log-capture.d.ts.map +1 -1
  571. package/lib/testing/playwright/server-log-capture.js +111 -40
  572. package/lib/testing/playwright/server-log-capture.js.map +1 -1
  573. package/lib/testing/playwright/server-log-fixture.d.ts +16 -0
  574. package/lib/testing/playwright/server-log-fixture.d.ts.map +1 -1
  575. package/lib/testing/playwright/server-log-fixture.js +25 -6
  576. package/lib/testing/playwright/server-log-fixture.js.map +1 -1
  577. package/lib/testing/playwright/server-log-region.d.ts +15 -0
  578. package/lib/testing/playwright/server-log-region.d.ts.map +1 -0
  579. package/lib/testing/playwright/server-log-region.js +30 -0
  580. package/lib/testing/playwright/server-log-region.js.map +1 -0
  581. package/lib/testing/playwright/server-log-rename-reporter.d.ts.map +1 -1
  582. package/lib/testing/playwright/server-log-rename-reporter.js +4 -3
  583. package/lib/testing/playwright/server-log-rename-reporter.js.map +1 -1
  584. package/lib/testing/run-update-pipeline.d.ts +8 -5
  585. package/lib/testing/run-update-pipeline.d.ts.map +1 -1
  586. package/lib/testing/run-update-pipeline.js.map +1 -1
  587. package/lib/testing/stub-ast-document-manager.d.ts +11 -51
  588. package/lib/testing/stub-ast-document-manager.d.ts.map +1 -1
  589. package/lib/testing/stub-ast-document-manager.js +31 -59
  590. package/lib/testing/stub-ast-document-manager.js.map +1 -1
  591. package/lib/testing/stub-document-builder.d.ts +25 -11
  592. package/lib/testing/stub-document-builder.d.ts.map +1 -1
  593. package/lib/testing/stub-document-builder.js +91 -2
  594. package/lib/testing/stub-document-builder.js.map +1 -1
  595. package/lib/testing/stub-hydranium-text-documents.d.ts +33 -10
  596. package/lib/testing/stub-hydranium-text-documents.d.ts.map +1 -1
  597. package/lib/testing/stub-hydranium-text-documents.js +132 -16
  598. package/lib/testing/stub-hydranium-text-documents.js.map +1 -1
  599. package/lib/testing/stub-index-manager.js.map +1 -1
  600. package/lib/testing/stub-langium-documents.d.ts +3 -2
  601. package/lib/testing/stub-langium-documents.d.ts.map +1 -1
  602. package/lib/testing/stub-langium-documents.js.map +1 -1
  603. package/lib/testing/stub-model-service.d.ts +8 -7
  604. package/lib/testing/stub-model-service.d.ts.map +1 -1
  605. package/lib/testing/stub-model-service.js +4 -4
  606. package/lib/testing/stub-model-service.js.map +1 -1
  607. package/lib/testing/stub-project-manager.d.ts.map +1 -1
  608. package/lib/testing/stub-project-manager.js +10 -0
  609. package/lib/testing/stub-project-manager.js.map +1 -1
  610. package/lib/testing/stub-self-save-registry.d.ts +1 -1
  611. package/lib/testing/stub-self-save-registry.d.ts.map +1 -1
  612. package/lib/testing/stub-service-registry.d.ts +1 -1
  613. package/lib/testing/stub-service-registry.js.map +1 -1
  614. package/lib/testing/stub-writable-file-system.d.ts +1 -1
  615. package/lib/testing/stub-writable-file-system.d.ts.map +1 -1
  616. package/lib/testing/stub-writable-file-system.js +2 -1
  617. package/lib/testing/stub-writable-file-system.js.map +1 -1
  618. package/lib/util/connection-liveness.d.ts +22 -6
  619. package/lib/util/connection-liveness.d.ts.map +1 -1
  620. package/lib/util/connection-liveness.js +75 -15
  621. package/lib/util/connection-liveness.js.map +1 -1
  622. package/lib/util/environment.d.ts +7 -0
  623. package/lib/util/environment.d.ts.map +1 -1
  624. package/lib/util/environment.js +15 -1
  625. package/lib/util/environment.js.map +1 -1
  626. package/lib/util/registry.d.ts.map +1 -1
  627. package/package.json +41 -60
  628. package/src/browser/host-heads-in-worker.ts +218 -0
  629. package/src/browser/index.ts +17 -0
  630. package/src/browser/indexeddb-file-system-store.ts +192 -0
  631. package/src/browser/start-language-server-in-worker.ts +56 -0
  632. package/src/documents/ast-document-manager.ts +477 -250
  633. package/src/documents/client-ids.ts +5 -22
  634. package/src/documents/client-session-errors.ts +26 -0
  635. package/src/documents/client-session-registry.ts +262 -0
  636. package/src/documents/dirty-state-tracker.ts +167 -0
  637. package/src/documents/document-release-handler.ts +404 -0
  638. package/src/documents/document-release-scheduler.ts +121 -0
  639. package/src/documents/file-system-task-queue.ts +77 -0
  640. package/src/documents/hydranium-text-documents.ts +1044 -615
  641. package/src/documents/index.ts +10 -2
  642. package/src/documents/language-client-shadow.ts +501 -0
  643. package/src/documents/model-ledger.ts +66 -0
  644. package/src/documents/text-ledger.ts +112 -0
  645. package/src/documents/version-sync-service.ts +304 -0
  646. package/src/index.ts +3 -0
  647. package/src/langium/ast-extension/ast-extension-service.ts +77 -41
  648. package/src/langium/ast-extension/ast-node-builder.ts +35 -13
  649. package/src/langium/bootstrap.ts +79 -43
  650. package/src/langium/build-phase-pass/build-phase-pass-service.ts +29 -19
  651. package/src/langium/build-phase-pass/build-phase-pass.ts +37 -8
  652. package/src/langium/composite-ast-reflection.ts +112 -0
  653. package/src/langium/config/configuration-provider.ts +119 -0
  654. package/src/langium/config/index.ts +1 -0
  655. package/src/langium/diagnostics/console-tee.ts +150 -0
  656. package/src/langium/diagnostics/hydranium-langium-profiler.ts +15 -39
  657. package/src/langium/diagnostics/log-preamble.ts +1 -1
  658. package/src/langium/diagnostics/logger.ts +51 -17
  659. package/src/langium/diagnostics/lsp-logger.ts +83 -45
  660. package/src/langium/document-builder/build-pipeline-integration.ts +57 -32
  661. package/src/langium/document-builder/build-session.ts +4 -3
  662. package/src/langium/document-builder/document-builder.ts +773 -106
  663. package/src/langium/integration-services.ts +20 -23
  664. package/src/langium/integrity/integrity-rule.ts +22 -8
  665. package/src/langium/integrity/integrity-service.ts +656 -90
  666. package/src/langium/keys/containment.ts +3 -2
  667. package/src/langium/keys/name-based-key-provider.ts +24 -12
  668. package/src/langium/language-module.ts +52 -9
  669. package/src/langium/model-service/client-session.ts +769 -0
  670. package/src/langium/model-service/index.ts +2 -0
  671. package/src/langium/model-service/model-events.ts +82 -0
  672. package/src/langium/model-service/model-service.ts +885 -532
  673. package/src/langium/module.ts +141 -65
  674. package/src/langium/naming/name-provider.ts +34 -8
  675. package/src/langium/project/abstract-project-manager.ts +409 -20
  676. package/src/langium/project/project-change-event.ts +25 -3
  677. package/src/langium/project/project-manager.ts +31 -2
  678. package/src/langium/project/single-project-manager.ts +16 -1
  679. package/src/langium/residency/cst-residency-service.ts +210 -87
  680. package/src/langium/scope/ast-node-description-provider.ts +111 -16
  681. package/src/langium/scope/built-local-symbols.ts +13 -0
  682. package/src/langium/scope/fallback-scope.ts +38 -0
  683. package/src/langium/scope/hydranium-scope-computation.ts +45 -44
  684. package/src/langium/scope/hydranium-scope-provider.ts +245 -41
  685. package/src/langium/scope/index.ts +1 -0
  686. package/src/langium/scope/reference-candidate-provider.ts +6 -5
  687. package/src/langium/scope/scope-extension-service.ts +148 -56
  688. package/src/langium/scope/scoped-ast-node-description.ts +1 -3
  689. package/src/langium/serialization/abstract-serializer.ts +57 -41
  690. package/src/langium/serialization/json-serializer.ts +14 -3
  691. package/src/langium/serialization/serializer.ts +1 -1
  692. package/src/langium/serialization/yaml-serializer.ts +26 -4
  693. package/src/langium/service-registry.ts +41 -2
  694. package/src/langium/shared-services.ts +13 -4
  695. package/src/langium/single-langium-copy.ts +42 -0
  696. package/src/langium/transfer/transfer-encoder.ts +76 -50
  697. package/src/langium/trivia/comment-preserver.ts +1410 -0
  698. package/src/langium/trivia/document-ending-preserver.ts +71 -0
  699. package/src/langium/trivia/index.ts +14 -0
  700. package/src/langium/trivia/trivia-contribution.ts +39 -0
  701. package/src/langium/trivia/trivia-preserver.ts +56 -0
  702. package/src/langium/trivia/trivia-service.ts +99 -0
  703. package/src/langium/update-rewrite/update-rewrite-service.ts +1 -1
  704. package/src/langium/update-rewrite/update-rewrite.ts +1 -1
  705. package/src/langium/validation/document-validator.ts +312 -31
  706. package/src/langium/validation/validation-contribution-collector.ts +10 -1
  707. package/src/langium/workspace/ast-node-locator.ts +33 -0
  708. package/src/langium/workspace/document-uri-policy.ts +32 -18
  709. package/src/langium/workspace/file-not-found.ts +35 -0
  710. package/src/langium/workspace/file-system-provider.ts +258 -16
  711. package/src/langium/workspace/hydranium-langium-document-factory.ts +239 -4
  712. package/src/langium/workspace/hydranium-workspace-lock.ts +101 -2
  713. package/src/langium/workspace/hydranium-workspace-manager.ts +214 -35
  714. package/src/langium/workspace/in-memory-file-system-provider.ts +54 -23
  715. package/src/langium/workspace/index.ts +3 -0
  716. package/src/langium/workspace/initialize-workspace.ts +96 -4
  717. package/src/langium/workspace/langium-documents.ts +19 -1
  718. package/src/langium/workspace/persistent-file-system-provider.ts +27 -15
  719. package/src/{documents → langium/workspace}/self-save-registry.ts +12 -14
  720. package/src/langium/workspace/syntax-errors.ts +34 -0
  721. package/src/langium/workspace/virtual-document.ts +106 -25
  722. package/src/langium/workspace/write-lock-scope.ts +27 -12
  723. package/src/launcher/integrated-server.ts +3 -1
  724. package/src/locale/server-locale.ts +6 -6
  725. package/src/lsp/completion/hydranium-completion-provider.ts +82 -2
  726. package/src/lsp/connection-features.ts +67 -0
  727. package/src/lsp/diagnostics-connection.ts +56 -0
  728. package/src/lsp/edit-requests-guard.ts +152 -0
  729. package/src/lsp/hydranium-document-update-handler.ts +284 -110
  730. package/src/lsp/index.ts +6 -2
  731. package/src/lsp/lsp-latency.ts +62 -0
  732. package/src/lsp/save-text-document.ts +63 -0
  733. package/src/lsp/semantic-token-provider.ts +146 -8
  734. package/src/lsp/shared-module.ts +4 -8
  735. package/src/lsp/start-language-server.ts +21 -7
  736. package/src/messages/carriers.ts +4 -6
  737. package/src/messages/index.ts +11 -2
  738. package/src/messages/renderer.ts +11 -3
  739. package/src/node/event-loop-monitor.ts +3 -4
  740. package/src/node/heap-ceiling.ts +108 -0
  741. package/src/node/index.ts +5 -1
  742. package/src/node/latency-from-env.ts +1 -1
  743. package/src/node/log-file-sink.ts +6 -2
  744. package/src/node/log-preamble-node.ts +20 -10
  745. package/src/node/measure-memory.ts +5 -4
  746. package/src/node/memory-monitor.ts +10 -10
  747. package/src/node/node-file-system-provider.ts +214 -57
  748. package/src/node/profile-capture.ts +16 -15
  749. package/src/node/profiling-run.ts +30 -8
  750. package/src/node/rename-over-open-readers.ts +94 -0
  751. package/src/node/server-diagnostics.ts +1 -1
  752. package/src/node/server-state-snapshot.ts +28 -20
  753. package/src/node/socket-launcher.ts +78 -14
  754. package/src/node/startup-cpu-profile.ts +94 -0
  755. package/src/node/stdio-launcher.ts +29 -19
  756. package/src/node/validate-workspace.ts +8 -2
  757. package/src/testing/document-uri-policy-conformance.ts +1 -1
  758. package/src/testing/fake-document.ts +2 -1
  759. package/src/testing/index.ts +2 -1
  760. package/src/testing/langium-test-helpers.ts +1 -0
  761. package/src/testing/make-test-services.ts +83 -31
  762. package/src/testing/make-test-tracer.ts +26 -0
  763. package/src/testing/node/applied-edit-capture.ts +141 -0
  764. package/src/testing/node/index.ts +4 -1
  765. package/src/testing/node/lsp-harness.ts +2 -0
  766. package/src/testing/node/lsp-server-connection.ts +83 -119
  767. package/src/testing/node/scratch-workspace.ts +12 -6
  768. package/src/testing/node/settle-server.ts +89 -0
  769. package/src/testing/node/spawned-server.ts +57 -3
  770. package/src/testing/parse-semantic-root.ts +1 -1
  771. package/src/testing/playwright/flaky-network-proxy.ts +240 -0
  772. package/src/testing/playwright/index.ts +1 -0
  773. package/src/testing/playwright/server-log-capture.ts +137 -47
  774. package/src/testing/playwright/server-log-fixture.ts +46 -6
  775. package/src/testing/playwright/server-log-region.ts +32 -0
  776. package/src/testing/playwright/server-log-rename-reporter.ts +4 -3
  777. package/src/testing/run-update-pipeline.ts +8 -5
  778. package/src/testing/stub-ast-document-manager.ts +47 -123
  779. package/src/testing/stub-document-builder.ts +128 -15
  780. package/src/testing/stub-hydranium-text-documents.ts +184 -27
  781. package/src/testing/stub-langium-documents.ts +3 -2
  782. package/src/testing/stub-model-service.ts +9 -8
  783. package/src/testing/stub-project-manager.ts +10 -0
  784. package/src/testing/stub-self-save-registry.ts +1 -1
  785. package/src/testing/stub-service-registry.ts +1 -1
  786. package/src/testing/stub-writable-file-system.ts +3 -2
  787. package/src/util/connection-liveness.ts +81 -15
  788. package/src/util/environment.ts +24 -2
  789. package/lib/documents/language-client-text-shadow.d.ts +0 -124
  790. package/lib/documents/language-client-text-shadow.d.ts.map +0 -1
  791. package/lib/documents/language-client-text-shadow.js +0 -190
  792. package/lib/documents/language-client-text-shadow.js.map +0 -1
  793. package/lib/documents/self-save-registry.d.ts.map +0 -1
  794. package/lib/documents/self-save-registry.js.map +0 -1
  795. package/lib/lsp/instrument-connection.d.ts +0 -36
  796. package/lib/lsp/instrument-connection.d.ts.map +0 -1
  797. package/lib/lsp/instrument-connection.js +0 -62
  798. package/lib/lsp/instrument-connection.js.map +0 -1
  799. package/lib/node/process-memory.d.ts +0 -66
  800. package/lib/node/process-memory.d.ts.map +0 -1
  801. package/lib/node/process-memory.js +0 -252
  802. package/lib/node/process-memory.js.map +0 -1
  803. package/src/documents/language-client-text-shadow.ts +0 -211
  804. package/src/lsp/instrument-connection.ts +0 -66
  805. package/src/node/process-memory.ts +0 -299
@@ -7,7 +7,7 @@
7
7
  * SPDX-License-Identifier: MIT
8
8
  ********************************************************************************/
9
9
 
10
- import { type Clock, type Logger, type Project, type Tracer, NoopLogger, SystemClock } from '@hydranium/protocol';
10
+ import { type Clock, type Logger, type Project, type Tracer, type TransferDiagnostic, NoopLogger, SystemClock } from '@hydranium/protocol';
11
11
  import { DefaultServerLocale, type ServerLocale } from '../locale/server-locale.js';
12
12
  import { DefaultMessageRenderer, type MessageRenderer } from '../messages/renderer.js';
13
13
  import { ServerTracer } from './diagnostics/server-tracer.js';
@@ -15,6 +15,7 @@ import { HydraniumLangiumProfiler } from './diagnostics/hydranium-langium-profil
15
15
  import { type AstNode, type Module } from '@hydranium/langium';
16
16
  import { type DefaultSharedModuleContext, type LangiumSharedServices, type PartialLangiumSharedServices } from '@hydranium/langium/lsp';
17
17
  import { type TextDocument } from 'vscode-languageserver-textdocument';
18
+ import { type ClientSessionFactory, DefaultClientSessionFactory } from './model-service/client-session.js';
18
19
  import { DefaultModelService, type ModelService } from './model-service/model-service.js';
19
20
  import { type ProjectManager } from './project/project-manager.js';
20
21
  import { SingleProjectManager } from './project/single-project-manager.js';
@@ -24,6 +25,7 @@ import { DefaultBuildPipelineIntegration, type BuildPipelineIntegration } from '
24
25
  import { type BuildPhasePassContribution } from './build-phase-pass/build-phase-pass.js';
25
26
  import { type BuildPhasePassService, DefaultBuildPhasePassService } from './build-phase-pass/build-phase-pass-service.js';
26
27
  import { DefaultCstResidencyService, type CstResidencyService } from './residency/index.js';
28
+ import { HydraniumConfigurationProvider } from './config/configuration-provider.js';
27
29
  import { HydraniumIndexManager } from './workspace/index-manager.js';
28
30
  import { HydraniumWorkspaceManager } from './workspace/hydranium-workspace-manager.js';
29
31
  import { HydraniumWorkspaceLock } from './workspace/hydranium-workspace-lock.js';
@@ -32,9 +34,19 @@ import { type HydraniumDocumentRegistry, HydraniumLangiumDocuments } from './wor
32
34
  import { type AdditionalDocumentContribution } from './workspace/additional-document-contribution.js';
33
35
  import { DefaultDocumentUriPolicy, type DocumentUriPolicy } from './workspace/document-uri-policy.js';
34
36
  import { HydraniumTextDocuments } from '../documents/hydranium-text-documents.js';
35
- import { DefaultAstDocumentManager, type AstDocumentManager, type WritableFileSystemProvider } from '../documents/ast-document-manager.js';
36
- import { DefaultSelfSaveRegistry, type SelfSaveRegistry } from '../documents/self-save-registry.js';
37
- import { DefaultEmptyFileSystemProvider } from './workspace/file-system-provider.js';
37
+ import { DefaultAstDocumentManager, type AstDocumentManager } from '../documents/ast-document-manager.js';
38
+ import { DefaultSelfSaveRegistry, type SelfSaveRegistry } from './workspace/self-save-registry.js';
39
+ import { DefaultFileSystemTaskQueue, type FileSystemTaskQueue } from '../documents/file-system-task-queue.js';
40
+ import { DefaultModelLedger, type ModelLedger } from '../documents/model-ledger.js';
41
+ import { DefaultDocumentReleaseHandler, type DocumentReleaseHandler } from '../documents/document-release-handler.js';
42
+ import { DefaultVersionSyncService, type VersionSyncService } from '../documents/version-sync-service.js';
43
+ import {
44
+ DefaultEmptyFileSystemProvider,
45
+ DefaultFileSystemProviderRegistry,
46
+ type FileSystemProviderRegistry,
47
+ type WritableFileSystemProvider
48
+ } from './workspace/file-system-provider.js';
49
+ import { VIRTUAL_SCHEME, VirtualFileSystemProvider } from './workspace/virtual-document.js';
38
50
  import { type ServerLanguageServices } from './language-module.js';
39
51
  import { ExtendedServiceRegistry } from './service-registry.js';
40
52
 
@@ -46,7 +58,10 @@ import { ExtendedServiceRegistry } from './service-registry.js';
46
58
  * these shared services; per-head shared bindings, if any, are
47
59
  * contributed by additional modules layered after this one.
48
60
  */
49
- export interface ServerAddedSharedServices<TProject extends Project = Project> {
61
+ export interface ServerAddedSharedServices<
62
+ TProject extends Project = Project,
63
+ TDiagnostic extends TransferDiagnostic = TransferDiagnostic
64
+ > {
50
65
  /**
51
66
  * Injectable time source. Framework default is {@link SystemClock} (real
52
67
  * `Date.now` / `performance.now` / `setTimeout`); tests bind a fake to
@@ -154,12 +169,11 @@ export interface ServerAddedSharedServices<TProject extends Project = Project> {
154
169
  * the `awaitDocumentState` bug-fix, framework-wired phase logs,
155
170
  * and the `markNextReason` observability primitive without
156
171
  * binding the slot explicitly. The
157
- * `HydraniumDocumentUpdateHandler`'s `dispatch` calls this
158
- * slot's `markNextReason` to stage the LSP event that triggered
159
- * the build, for a subclass's build logging to tag its line with,
160
- * so narrowing here is a load-bearing type contract — adopters who
161
- * explicitly downgrade to Langium's default lose that call site's
162
- * compile-time target.
172
+ * `HydraniumDocumentUpdateHandler`'s `dispatch` and
173
+ * `ModelService.rebuild` build through this slot's
174
+ * `scheduleUpdate`, so narrowing here is a load-bearing contract:
175
+ * a builder without it fails every LSP-driven build, and every
176
+ * session write that takes the lock, at run time.
163
177
  */
164
178
  /* override */ DocumentBuilder: HydraniumDocumentBuilder;
165
179
  /**
@@ -173,20 +187,36 @@ export interface ServerAddedSharedServices<TProject extends Project = Project> {
173
187
  */
174
188
  /* override */ WorkspaceLock: HydraniumWorkspaceLock;
175
189
  /**
176
- * Tighten Langium's read-only `FileSystemProvider` slot to
177
- * {@link WritableFileSystemProvider}. The framework's save path
178
- * ({@link AstDocumentManager.save}, integrity corrections,
179
- * `ModelService.save`) requires write semantics — a read-only slot
180
- * type forces an `as WritableFileSystemProvider` cast at the binding
181
- * line and defers the failure of a read-only implementation to the
182
- * first save. The `.`-entry default is
183
- * {@link DefaultEmptyFileSystemProvider}, which is what keeps the core
184
- * barrel free of `node:fs` and therefore browser-bundleable; a Node host
185
- * binds `@hydranium/core/node`'s Node-backed provider (wired to
186
- * {@link SelfSaveRegistry}) instead, and adopters override with their own
190
+ * Tighten Langium's read-only `FileSystemProvider` slot to a
191
+ * {@link FileSystemProviderRegistry}, which is writable: the
192
+ * framework's save path ({@link AstDocumentManager.save}, integrity
193
+ * corrections, a session's `save`) requires write semantics, and a
194
+ * read-only slot type defers the failure of a read-only
195
+ * implementation to the first save.
196
+ *
197
+ * Bound to {@link DefaultFileSystemProviderRegistry}, which dispatches
198
+ * by scheme to the {@link ServerAddedSharedServices.fileSystemProviders}
199
+ * group and sends every other scheme to its `host`: the provider
200
+ * `context.fileSystemProvider` returns when it is writable, or else
201
+ * `DefaultEmptyFileSystemProvider`, which is what keeps the core
202
+ * barrel free of `node:fs` and therefore browser-bundleable. A Node
203
+ * host passes `@hydranium/core/node`'s Node-backed provider (wired to
204
+ * {@link SelfSaveRegistry}) instead, and adopters pass their own
187
205
  * writable implementation when neither fits.
206
+ *
207
+ * To reach the members of its own provider, an adopter declares this
208
+ * slot as `FileSystemProviderRegistry<MyProvider>` through
209
+ * {@link WithServiceOverrides}, binds a
210
+ * `DefaultFileSystemProviderRegistry` with that host from a factory
211
+ * whose return type names the narrowed slot (a module's `DeepPartial`
212
+ * checks no host member otherwise), and reads
213
+ * `FileSystemProvider.host`. A
214
+ * registry that serves a seeded document under none of its providers
215
+ * loses the document at its last close, which
216
+ * {@link HydraniumWorkspaceManager.warnIfDocumentsUnserved} reports
217
+ * once at startup.
188
218
  */
189
- /* override */ FileSystemProvider: WritableFileSystemProvider;
219
+ /* override */ FileSystemProvider: FileSystemProviderRegistry;
190
220
  ProjectManager: ProjectManager<TProject>;
191
221
  SelfSaveRegistry: SelfSaveRegistry;
192
222
  /**
@@ -213,9 +243,17 @@ export interface ServerAddedSharedServices<TProject extends Project = Project> {
213
243
  * there is only one, and `'plaintext'` when there are several, rather
214
244
  * than naming a language the document demonstrably is not. Consumers
215
245
  * that need to narrow the diagnostic type or override lifecycle
216
- * behaviour rebind this slot with a subclass.
246
+ * behaviour rebind this slot with a subclass. Subscribes to the build
247
+ * pipeline and the text store in its constructor, so it is eagerly
248
+ * constructed via `DEFAULT_EAGER_SERVICES`.
249
+ */
250
+ AstDocumentManager: AstDocumentManager<AstNode>;
251
+ /**
252
+ * Orders the server's disk accesses of each file. One slot for every
253
+ * reader and writer: a service given a queue of its own does not order
254
+ * against the others.
217
255
  */
218
- AstDocumentManager: AstDocumentManager<AstNode, unknown>;
256
+ FileSystemTaskQueue: FileSystemTaskQueue;
219
257
  /**
220
258
  * Wires the framework's build-time features (integrity, AST
221
259
  * enrichment) into Langium's build pipeline: owns the build-phase
@@ -230,7 +268,7 @@ export interface ServerAddedSharedServices<TProject extends Project = Project> {
230
268
  * `onBuildPhase` sibling of the per-node `AstExtensionService`
231
269
  * (`onDocumentPhase`) and `IntegrityService`. {@link BuildPipelineIntegration}
232
270
  * drives it from its phase listeners; the framework self-registers its
233
- * integrity passes and the Langium profiler flush into it, and adopters
271
+ * integrity and CST-residency passes into it, and adopters
234
272
  * contribute via the shared {@link ServerAddedSharedServices.buildPhasePasses}
235
273
  * group. A single priority space orders framework and adopter passes
236
274
  * against one another deterministically.
@@ -238,15 +276,25 @@ export interface ServerAddedSharedServices<TProject extends Project = Project> {
238
276
  BuildPhasePassService: BuildPhasePassService;
239
277
  /**
240
278
  * CST residency policy: sheds the concrete syntax tree of closed
241
- * documents (keeping the AST resident) to reclaim memory, re-parsing
242
- * on demand when a shed document re-enters a build. Self-registers a
243
- * `Validated` {@link BuildPhasePassService} pass in its constructor, so
244
- * it is eagerly constructed via `DEFAULT_EAGER_SERVICES`. Framework
245
- * default is `{ kind: 'always-keep' }` (a no-op — the pass runs but sheds
246
- * nothing); adopters rebind the slot with a subclass or a different
247
- * strategy (`shed-closed-when-idle`) to enable shedding.
279
+ * documents (keeping the AST resident) to reclaim memory, grafting it
280
+ * back on demand when a shed document is read or re-enters a build.
281
+ * Self-registers a `Validated` {@link BuildPhasePassService} pass in its
282
+ * constructor, so it is eagerly constructed via `DEFAULT_EAGER_SERVICES`.
283
+ * Framework default is `{ kind: 'always-keep' }` (a no-op — the pass runs
284
+ * but sheds nothing). Adopters rebind the slot with a subclass or a
285
+ * different strategy (`shed-closed-when-idle`) to enable shedding.
248
286
  */
249
287
  CstResidencyService: CstResidencyService;
288
+ /** The version of the text each root was parsed from. */
289
+ ModelLedger: ModelLedger;
290
+ /** Reconciles each produced root with the store, and owns every build that syncs a root to its text or recovers one. */
291
+ VersionSyncService: VersionSyncService;
292
+ /**
293
+ * What the build keeps for a document {@link HydraniumTextDocuments} has
294
+ * released, for every head. Bound to {@link DefaultDocumentReleaseHandler},
295
+ * which reverts it to disk.
296
+ */
297
+ DocumentReleaseHandler: DocumentReleaseHandler;
250
298
  };
251
299
  /**
252
300
  * In-process workspace facade ({@link ModelService}) + AST→transfer
@@ -259,7 +307,7 @@ export interface ServerAddedSharedServices<TProject extends Project = Project> {
259
307
  * adopter can therefore REPLACE this declaration (see
260
308
  * {@link WithServiceOverrides}) rather than intersect with it, which is what
261
309
  * keeps slot resolution independent of the order a services type is written
262
- * in. `ModelService` is still a class and does not yet have that property.
310
+ * in. `ModelService` is an interface for the same reason.
263
311
  *
264
312
  * A class in a slot costs two things, both measured. Its `protected` members
265
313
  * join every assignability check and are compared NOMINALLY, so a subclass
@@ -270,8 +318,14 @@ export interface ServerAddedSharedServices<TProject extends Project = Project> {
270
318
  * framework's. Neither survives on an interface.
271
319
  */
272
320
  model: {
273
- TransferEncoder: TransferEncoder;
274
- ModelService: ModelService<AstNode, unknown>;
321
+ TransferEncoder: TransferEncoder<TDiagnostic>;
322
+ /**
323
+ * Subscribes to the settled document phase in its constructor, so it is
324
+ * eagerly constructed via `DEFAULT_EAGER_SERVICES`.
325
+ */
326
+ ModelService: ModelService<AstNode>;
327
+ /** Builds the handle of every session `ModelService.createSession` starts. */
328
+ ClientSessionFactory: ClientSessionFactory;
275
329
  };
276
330
  /**
277
331
  * Shared contribution group for batch-level build-phase passes (see
@@ -294,6 +348,15 @@ export interface ServerAddedSharedServices<TProject extends Project = Project> {
294
348
  * contribute none never touch it.
295
349
  */
296
350
  additionalDocuments: Record<string, AdditionalDocumentContribution>;
351
+ /**
352
+ * Shared contribution group of file system providers keyed by the URI
353
+ * scheme each answers for, which {@link FileSystemProviderRegistry}
354
+ * dispatches to. The framework registers {@link VirtualFileSystemProvider}
355
+ * under `virtual`; an adopter deep-merges a provider for a scheme of its
356
+ * own, and an entry under `virtual` replaces the framework's. A scheme with
357
+ * no entry goes to the registry's `host`.
358
+ */
359
+ fileSystemProviders: Record<string, WritableFileSystemProvider>;
297
360
  }
298
361
 
299
362
  /**
@@ -309,10 +372,18 @@ export interface ServerAddedSharedServices<TProject extends Project = Project> {
309
372
  * `ClientTextDocumentChangeEvent` payload (with `clientId`);
310
373
  * `ServiceRegistry.getServices(uri)` keeps the
311
374
  * {@link ServerLanguageServices} return shape.
375
+ *
376
+ * `TDiagnostic` is the diagnostic the bound `model.TransferEncoder` emits. A
377
+ * head that sends a narrower diagnostic than `TransferDiagnostic` takes
378
+ * services typed with it, so none of its envelopes claims a shape the encoder
379
+ * does not produce.
312
380
  */
313
- export type ServerSharedServices<TProject extends Project = Project> = Omit<LangiumSharedServices, 'workspace' | 'ServiceRegistry'> & {
381
+ export type ServerSharedServices<TProject extends Project = Project, TDiagnostic extends TransferDiagnostic = TransferDiagnostic> = Omit<
382
+ LangiumSharedServices,
383
+ 'workspace' | 'ServiceRegistry'
384
+ > & {
314
385
  workspace: Omit<LangiumSharedServices['workspace'], 'TextDocuments' | 'DocumentBuilder'>;
315
- } & ServerAddedSharedServices<TProject>;
386
+ } & ServerAddedSharedServices<TProject, TDiagnostic>;
316
387
 
317
388
  /**
318
389
  * The service-tree namespaces — the keys whose value groups further slots
@@ -464,9 +535,13 @@ export function createServerSharedModule(
464
535
  TextDocuments: services => new HydraniumTextDocuments(services),
465
536
  WorkspaceManager: services => new HydraniumWorkspaceManager(services),
466
537
  IndexManager: services => new HydraniumIndexManager(services),
467
- // Override Langium's factory so a `fromModel` (code-built) virtual
468
- // document retains serialized text via the per-language Serializer,
469
- // making it re-read-safe through the virtual-aware FileSystemProvider.
538
+ // Langium's default asks only about sections named after registered
539
+ // language ids, so a section `lsp.configurationRoot` is bound to reads
540
+ // `undefined` forever with no request on the wire.
541
+ ConfigurationProvider: services => new HydraniumConfigurationProvider(services),
542
+ // Override Langium's factory so a `fromModel` (code-built) document
543
+ // retains serialized text via the per-language Serializer, and is
544
+ // re-read from that text while no file is at its URI.
470
545
  LangiumDocumentFactory: services => new HydraniumLangiumDocumentFactory(services),
471
546
  // Langium's default routes through no identity seam and treats every
472
547
  // failed load alike, so leaving this unbound opts a server out of both
@@ -475,52 +550,53 @@ export function createServerSharedModule(
475
550
  DocumentBuilder: services => new HydraniumDocumentBuilder(services),
476
551
  // The write-lock scope this marks is inert unless a host installs a
477
552
  // scope tracker — `@hydranium/core/node` does.
478
- WorkspaceLock: () => new HydraniumWorkspaceLock(),
553
+ WorkspaceLock: services => new HydraniumWorkspaceLock(services),
479
554
  ProjectManager: services => new SingleProjectManager(services),
480
555
  SelfSaveRegistry: services => new DefaultSelfSaveRegistry(services),
481
556
  DocumentUriPolicy: () => new DefaultDocumentUriPolicy(),
482
- // Writable filesystem with two paths:
483
- // - Adopter passed `context.fileSystemProvider` and it returned a
484
- // writable implementation (has `writeFile`) — use it. Honours the
485
- // Langium-conventional context channel for passing a custom backing
486
- // (in-memory, browser, test stub like `DefaultEmptyFileSystemProvider`).
487
- // - Otherwise — the portable default `DefaultEmptyFileSystemProvider`
488
- // (no-op writes, no disk access). Node hosts opt into real disk I/O
489
- // by binding `@hydranium/core/node`'s `DefaultFileSystemProvider`
490
- // (Node-backed, wired to `SelfSaveRegistry` so framework `writeFile`
491
- // calls register their mtime and adopters can suppress the
492
- // `didChangeWatchedFiles` echo) — typically via this same
493
- // `context.fileSystemProvider` channel or by rebinding
494
- // the slot. Keeping the `.`-entry default empty is what lets the
495
- // core barrel stay free of `node:fs` (browser-bundleable); see the
496
- // `@hydranium/core/node` carve.
557
+ // The host is the provider `context.fileSystemProvider` returns
558
+ // when it is writable (has `writeFile`); anything narrower gets the
559
+ // empty provider, which is what keeps the core barrel free of
560
+ // `node:fs`.
497
561
  FileSystemProvider: services => {
498
562
  const fromContext = context.fileSystemProvider?.(services);
499
- if (fromContext && typeof (fromContext as Partial<WritableFileSystemProvider>).writeFile === 'function') {
500
- return fromContext as WritableFileSystemProvider;
501
- }
502
- return new DefaultEmptyFileSystemProvider(services);
563
+ const writable = typeof (fromContext as Partial<WritableFileSystemProvider> | undefined)?.writeFile === 'function';
564
+ return new DefaultFileSystemProviderRegistry(services, {
565
+ host: writable ? (fromContext as WritableFileSystemProvider) : new DefaultEmptyFileSystemProvider(services)
566
+ });
503
567
  },
568
+ // Eagerly constructed, so its build-pipeline and text-store listeners
569
+ // attach before the first build.
504
570
  AstDocumentManager: services => new DefaultAstDocumentManager(services),
571
+ FileSystemTaskQueue: services => new DefaultFileSystemTaskQueue(services),
505
572
  // Eagerly constructed, so its build-phase listeners attach before the
506
573
  // first build.
507
574
  BuildPipelineIntegration: services => new DefaultBuildPipelineIntegration(services),
508
575
  BuildPhasePassService: services => new DefaultBuildPhasePassService(services),
509
576
  // Eagerly constructed, so its `Validated` pass registers before the
510
577
  // first build.
511
- CstResidencyService: services => new DefaultCstResidencyService(services)
578
+ CstResidencyService: services => new DefaultCstResidencyService(services),
579
+ ModelLedger: () => new DefaultModelLedger(),
580
+ VersionSyncService: services => new DefaultVersionSyncService(services),
581
+ DocumentReleaseHandler: services => new DefaultDocumentReleaseHandler(services)
512
582
  },
513
583
  model: {
514
584
  // Generic walker — adopters with a typed `$type → wire shape` overlay
515
585
  // rebind this slot with a subclass.
516
586
  TransferEncoder: services => new DefaultTransferEncoder(services),
517
- ModelService: services => new DefaultModelService(services)
587
+ // Eagerly constructed, so its settled-phase listener attaches before
588
+ // the first build.
589
+ ModelService: services => new DefaultModelService(services),
590
+ ClientSessionFactory: services => new DefaultClientSessionFactory(services)
518
591
  },
519
592
  // Empty default so `services.buildPhasePasses` always resolves (Langium
520
593
  // throws on access to an unbound slot). The framework's own integrity /
521
- // profiler passes self-register imperatively, not here.
594
+ // CST-residency passes self-register imperatively, not here.
522
595
  buildPhasePasses: {},
523
596
  // Empty default so `services.additionalDocuments` always resolves.
524
- additionalDocuments: {}
597
+ additionalDocuments: {},
598
+ fileSystemProviders: {
599
+ [VIRTUAL_SCHEME]: services => new VirtualFileSystemProvider(services)
600
+ }
525
601
  };
526
602
  }
@@ -221,6 +221,11 @@ export interface NameProvider extends LangiumNameProvider {
221
221
  * walk traverses through the document root: if the root has its own
222
222
  * name, that name IS part of the qualified form. Adopters who want a
223
223
  * different boundary override this method.
224
+ *
225
+ * May answer as of its first read since the last build: the default
226
+ * memoises per built node, so a name changed in memory after that read
227
+ * reads as the old one until its document rebuilds. A node in no document
228
+ * is named afresh on every call.
224
229
  */
225
230
  getDocumentQualifiedName(node?: AstNode): string | undefined;
226
231
 
@@ -236,6 +241,10 @@ export interface NameProvider extends LangiumNameProvider {
236
241
  * string) or no project owns the URI — in those cases project-
237
242
  * qualified equals document-qualified, and
238
243
  * `HydraniumScopeComputation` skips the multi-tier emit.
244
+ *
245
+ * The default memoises it as it does {@link getDocumentQualifiedName}, and
246
+ * for a node in no document answers the document-qualified name: there is
247
+ * no project to prefix.
239
248
  */
240
249
  getProjectQualifiedName(node?: AstNode): string | undefined;
241
250
 
@@ -254,10 +263,21 @@ export interface NameProvider extends LangiumNameProvider {
254
263
  /**
255
264
  * Find a unique name for a new node within `container`, using `base`
256
265
  * as a stem. Walks the AST subtree rooted at `container` and avoids
257
- * names already used by `$type === type` nodes there. Default
258
- * generates `${base}1`, `${base}2`, ... until an unused value is
259
- * found. Used by create-element operation handlers when the
260
- * uniqueness scope is one AST subtree.
266
+ * names already held there by nodes of `type` or of any subtype of it,
267
+ * as `AstReflection.isSubtype` reports. Default generates `${base}1`,
268
+ * `${base}2`, ... until an unused value is found. Used by create-element
269
+ * operation handlers when the uniqueness scope is one AST subtree.
270
+ *
271
+ * Subtype-closed rather than `$type`-exact, because a name space shared by
272
+ * several concrete types is named by their common supertype and by no
273
+ * concrete type at all — the shape a cross-reference whose target type is
274
+ * that supertype produces. An exact filter finds no collisions for such a
275
+ * call and returns the proposal unchanged, which a caller cannot tell from
276
+ * a name that was genuinely free.
277
+ * {@link NameProvider.findNextDocumentQualifiedName} and
278
+ * {@link NameProvider.findNextProjectQualifiedName} resolve `type` the same
279
+ * way, through `IndexManager.allElements`, so one type argument does not
280
+ * mean different sets at different tiers.
261
281
  */
262
282
  findNextName(type: string, base: string, container: AstNode): string;
263
283
 
@@ -315,6 +335,9 @@ export class DefaultNameProvider implements NameProvider {
315
335
  * document's lifetime. Evicted automatically when Langium rebuilds
316
336
  * the document.
317
337
  *
338
+ * So a built node renamed in memory reads its old name until the rebuild,
339
+ * as {@link NameProvider.getDocumentQualifiedName} warns.
340
+ *
318
341
  * Only cached when the computed result is a defined string — `undefined`
319
342
  * results re-evaluate on each call (cheap path: `getOwnName` returns
320
343
  * undefined for unnamed nodes, no chain walk needed).
@@ -323,7 +346,9 @@ export class DefaultNameProvider implements NameProvider {
323
346
  /**
324
347
  * Per-document memo for {@link getProjectQualifiedName} results.
325
348
  * Sibling of {@link documentQualifiedNameCache}; covers the additional
326
- * project-reference-name lookup the project-qualified variant performs.
349
+ * project-reference-name lookup the project-qualified variant performs,
350
+ * and goes stale on an in-memory rename the same way, as
351
+ * {@link NameProvider.getDocumentQualifiedName} warns.
327
352
  *
328
353
  * **Project-rename caveat.** If `Project.referenceName` mutates without
329
354
  * a corresponding document rebuild, cached entries become stale. Adopters
@@ -460,8 +485,8 @@ export class DefaultNameProvider implements NameProvider {
460
485
  * qualified names.
461
486
  *
462
487
  * **Within-document references stay keyed by bare names** via
463
- * `HydraniumScopeComputation.addLocalSymbol`, which explicitly calls
464
- * {@link getOwnName} when populating the local-symbols map (bypassing
488
+ * `HydraniumScopeComputation.addLocalSymbolByOwnName`, which explicitly
489
+ * calls {@link getOwnName} when populating the local-symbols map (bypassing
465
490
  * Langium's default that goes through this `getName`). The
466
491
  * separation lets `getName` carry the workspace-unique form for the
467
492
  * linker without forcing qualified names into the per-document
@@ -496,8 +521,9 @@ export class DefaultNameProvider implements NameProvider {
496
521
 
497
522
  findNextName(type: string, base: string, container: AstNode): string {
498
523
  const proposal = base.replaceAll(this.nameSeparator, '_');
524
+ const reflection = this.services.shared.AstReflection;
499
525
  const knownNames = AstUtils.streamAst(container)
500
- .filter(node => node.$type === type)
526
+ .filter(node => reflection.isSubtype(node.$type, type))
501
527
  .map(node => this.getOwnName(node))
502
528
  .nonNullable()
503
529
  .toArray();