@hydranium/core 1.0.0-next.30 → 1.0.0-next.300

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 (770) hide show
  1. package/README.md +72 -82
  2. package/lib/browser/host-heads-in-worker.d.ts +58 -0
  3. package/lib/browser/host-heads-in-worker.d.ts.map +1 -0
  4. package/lib/browser/host-heads-in-worker.js +113 -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 +29 -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 +35 -0
  17. package/lib/browser/start-language-server-in-worker.js.map +1 -0
  18. package/lib/documents/ast-document-manager.d.ts +256 -124
  19. package/lib/documents/ast-document-manager.d.ts.map +1 -1
  20. package/lib/documents/ast-document-manager.js +293 -132
  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 +37 -0
  49. package/lib/documents/file-system-task-queue.js.map +1 -0
  50. package/lib/documents/hydranium-text-documents.d.ts +419 -282
  51. package/lib/documents/hydranium-text-documents.d.ts.map +1 -1
  52. package/lib/documents/hydranium-text-documents.js +856 -483
  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 +218 -0
  59. package/lib/documents/language-client-shadow.d.ts.map +1 -0
  60. package/lib/documents/language-client-shadow.js +284 -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 +138 -0
  71. package/lib/documents/version-sync-service.d.ts.map +1 -0
  72. package/lib/documents/version-sync-service.js +173 -0
  73. package/lib/documents/version-sync-service.js.map +1 -0
  74. package/lib/index.d.ts +5 -0
  75. package/lib/index.d.ts.map +1 -1
  76. package/lib/index.js +8 -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 +32 -9
  83. package/lib/langium/ast-extension/ast-node-builder.d.ts.map +1 -1
  84. package/lib/langium/ast-extension/ast-node-builder.js +60 -22
  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 +91 -45
  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/hydranium-langium-profiler.d.ts +9 -20
  112. package/lib/langium/diagnostics/hydranium-langium-profiler.d.ts.map +1 -1
  113. package/lib/langium/diagnostics/hydranium-langium-profiler.js +15 -24
  114. package/lib/langium/diagnostics/hydranium-langium-profiler.js.map +1 -1
  115. package/lib/langium/diagnostics/log-preamble.js +1 -1
  116. package/lib/langium/diagnostics/log-preamble.js.map +1 -1
  117. package/lib/langium/diagnostics/logger.d.ts +19 -4
  118. package/lib/langium/diagnostics/logger.d.ts.map +1 -1
  119. package/lib/langium/diagnostics/logger.js +36 -11
  120. package/lib/langium/diagnostics/logger.js.map +1 -1
  121. package/lib/langium/diagnostics/lsp-logger.d.ts +17 -0
  122. package/lib/langium/diagnostics/lsp-logger.d.ts.map +1 -1
  123. package/lib/langium/diagnostics/lsp-logger.js +58 -17
  124. package/lib/langium/diagnostics/lsp-logger.js.map +1 -1
  125. package/lib/langium/diagnostics/server-tracer.d.ts.map +1 -1
  126. package/lib/langium/diagnostics/server-tracer.js.map +1 -1
  127. package/lib/langium/document-builder/build-pipeline-integration.d.ts +21 -1
  128. package/lib/langium/document-builder/build-pipeline-integration.d.ts.map +1 -1
  129. package/lib/langium/document-builder/build-pipeline-integration.js +28 -30
  130. package/lib/langium/document-builder/build-pipeline-integration.js.map +1 -1
  131. package/lib/langium/document-builder/build-session.d.ts +6 -5
  132. package/lib/langium/document-builder/build-session.d.ts.map +1 -1
  133. package/lib/langium/document-builder/build-session.js +5 -5
  134. package/lib/langium/document-builder/build-session.js.map +1 -1
  135. package/lib/langium/document-builder/document-builder.d.ts +309 -35
  136. package/lib/langium/document-builder/document-builder.d.ts.map +1 -1
  137. package/lib/langium/document-builder/document-builder.js +511 -75
  138. package/lib/langium/document-builder/document-builder.js.map +1 -1
  139. package/lib/langium/documentation/comment-provider.d.ts.map +1 -1
  140. package/lib/langium/documentation/comment-provider.js.map +1 -1
  141. package/lib/langium/integration-services.d.ts +40 -24
  142. package/lib/langium/integration-services.d.ts.map +1 -1
  143. package/lib/langium/integration-services.js +7 -4
  144. package/lib/langium/integration-services.js.map +1 -1
  145. package/lib/langium/integrity/integrity-rule.d.ts +16 -8
  146. package/lib/langium/integrity/integrity-rule.d.ts.map +1 -1
  147. package/lib/langium/integrity/integrity-rule.js.map +1 -1
  148. package/lib/langium/integrity/integrity-service.d.ts +83 -27
  149. package/lib/langium/integrity/integrity-service.d.ts.map +1 -1
  150. package/lib/langium/integrity/integrity-service.js +273 -63
  151. package/lib/langium/integrity/integrity-service.js.map +1 -1
  152. package/lib/langium/keys/containment.d.ts +64 -0
  153. package/lib/langium/keys/containment.d.ts.map +1 -0
  154. package/lib/langium/keys/containment.js +53 -0
  155. package/lib/langium/keys/containment.js.map +1 -0
  156. package/lib/langium/keys/index.d.ts +1 -0
  157. package/lib/langium/keys/index.d.ts.map +1 -1
  158. package/lib/langium/keys/index.js +1 -0
  159. package/lib/langium/keys/index.js.map +1 -1
  160. package/lib/langium/keys/name-based-key-provider.d.ts +4 -0
  161. package/lib/langium/keys/name-based-key-provider.d.ts.map +1 -1
  162. package/lib/langium/keys/name-based-key-provider.js +4 -0
  163. package/lib/langium/keys/name-based-key-provider.js.map +1 -1
  164. package/lib/langium/keys/positional-key-provider.d.ts.map +1 -1
  165. package/lib/langium/keys/positional-key-provider.js.map +1 -1
  166. package/lib/langium/labeling/label-provider.d.ts.map +1 -1
  167. package/lib/langium/labeling/label-provider.js.map +1 -1
  168. package/lib/langium/language-module.d.ts +30 -5
  169. package/lib/langium/language-module.d.ts.map +1 -1
  170. package/lib/langium/language-module.js +18 -4
  171. package/lib/langium/language-module.js.map +1 -1
  172. package/lib/langium/model-service/client-session.d.ts +374 -0
  173. package/lib/langium/model-service/client-session.d.ts.map +1 -0
  174. package/lib/langium/model-service/client-session.js +446 -0
  175. package/lib/langium/model-service/client-session.js.map +1 -0
  176. package/lib/langium/model-service/index.d.ts +2 -0
  177. package/lib/langium/model-service/index.d.ts.map +1 -1
  178. package/lib/langium/model-service/index.js +2 -0
  179. package/lib/langium/model-service/index.js.map +1 -1
  180. package/lib/langium/model-service/model-events.d.ts +66 -0
  181. package/lib/langium/model-service/model-events.d.ts.map +1 -0
  182. package/lib/langium/model-service/model-events.js +10 -0
  183. package/lib/langium/model-service/model-events.js.map +1 -0
  184. package/lib/langium/model-service/model-service.d.ts +480 -289
  185. package/lib/langium/model-service/model-service.d.ts.map +1 -1
  186. package/lib/langium/model-service/model-service.js +597 -456
  187. package/lib/langium/model-service/model-service.js.map +1 -1
  188. package/lib/langium/module.d.ts +158 -37
  189. package/lib/langium/module.d.ts.map +1 -1
  190. package/lib/langium/module.js +52 -36
  191. package/lib/langium/module.js.map +1 -1
  192. package/lib/langium/naming/name-provider.d.ts +42 -7
  193. package/lib/langium/naming/name-provider.d.ts.map +1 -1
  194. package/lib/langium/naming/name-provider.js +10 -4
  195. package/lib/langium/naming/name-provider.js.map +1 -1
  196. package/lib/langium/naming/name-separator-validation.d.ts +23 -1
  197. package/lib/langium/naming/name-separator-validation.d.ts.map +1 -1
  198. package/lib/langium/naming/name-separator-validation.js +22 -0
  199. package/lib/langium/naming/name-separator-validation.js.map +1 -1
  200. package/lib/langium/project/abstract-project-manager.d.ts.map +1 -1
  201. package/lib/langium/project/abstract-project-manager.js +13 -6
  202. package/lib/langium/project/abstract-project-manager.js.map +1 -1
  203. package/lib/langium/project/project-change-event.d.ts +2 -2
  204. package/lib/langium/project/single-project-manager.d.ts.map +1 -1
  205. package/lib/langium/project/single-project-manager.js.map +1 -1
  206. package/lib/langium/residency/cst-residency-service.d.ts +35 -12
  207. package/lib/langium/residency/cst-residency-service.d.ts.map +1 -1
  208. package/lib/langium/residency/cst-residency-service.js +24 -58
  209. package/lib/langium/residency/cst-residency-service.js.map +1 -1
  210. package/lib/langium/scope/ast-node-description-provider.d.ts.map +1 -1
  211. package/lib/langium/scope/ast-node-description-provider.js.map +1 -1
  212. package/lib/langium/scope/fallback-scope.d.ts +27 -0
  213. package/lib/langium/scope/fallback-scope.d.ts.map +1 -0
  214. package/lib/langium/scope/fallback-scope.js +35 -0
  215. package/lib/langium/scope/fallback-scope.js.map +1 -0
  216. package/lib/langium/scope/hydranium-scope-computation.d.ts +21 -18
  217. package/lib/langium/scope/hydranium-scope-computation.d.ts.map +1 -1
  218. package/lib/langium/scope/hydranium-scope-computation.js +38 -39
  219. package/lib/langium/scope/hydranium-scope-computation.js.map +1 -1
  220. package/lib/langium/scope/hydranium-scope-provider.d.ts +39 -17
  221. package/lib/langium/scope/hydranium-scope-provider.d.ts.map +1 -1
  222. package/lib/langium/scope/hydranium-scope-provider.js +52 -26
  223. package/lib/langium/scope/hydranium-scope-provider.js.map +1 -1
  224. package/lib/langium/scope/index.d.ts +1 -0
  225. package/lib/langium/scope/index.d.ts.map +1 -1
  226. package/lib/langium/scope/index.js +1 -0
  227. package/lib/langium/scope/index.js.map +1 -1
  228. package/lib/langium/scope/reference-builder.d.ts.map +1 -1
  229. package/lib/langium/scope/reference-builder.js.map +1 -1
  230. package/lib/langium/scope/reference-candidate-provider.d.ts +6 -5
  231. package/lib/langium/scope/reference-candidate-provider.d.ts.map +1 -1
  232. package/lib/langium/scope/reference-candidate-provider.js +3 -2
  233. package/lib/langium/scope/reference-candidate-provider.js.map +1 -1
  234. package/lib/langium/scope/scope-extension-service.d.ts +41 -37
  235. package/lib/langium/scope/scope-extension-service.d.ts.map +1 -1
  236. package/lib/langium/scope/scope-extension-service.js +57 -29
  237. package/lib/langium/scope/scope-extension-service.js.map +1 -1
  238. package/lib/langium/scope/scoped-ast-node-description.d.ts +1 -3
  239. package/lib/langium/scope/scoped-ast-node-description.d.ts.map +1 -1
  240. package/lib/langium/scope/scoped-ast-node-description.js +1 -3
  241. package/lib/langium/scope/scoped-ast-node-description.js.map +1 -1
  242. package/lib/langium/serialization/abstract-serializer.d.ts +38 -27
  243. package/lib/langium/serialization/abstract-serializer.d.ts.map +1 -1
  244. package/lib/langium/serialization/abstract-serializer.js +54 -30
  245. package/lib/langium/serialization/abstract-serializer.js.map +1 -1
  246. package/lib/langium/serialization/json-serializer.d.ts +8 -1
  247. package/lib/langium/serialization/json-serializer.d.ts.map +1 -1
  248. package/lib/langium/serialization/json-serializer.js +13 -3
  249. package/lib/langium/serialization/json-serializer.js.map +1 -1
  250. package/lib/langium/serialization/serializer.d.ts +1 -1
  251. package/lib/langium/serialization/yaml-serializer.d.ts +4 -0
  252. package/lib/langium/serialization/yaml-serializer.d.ts.map +1 -1
  253. package/lib/langium/serialization/yaml-serializer.js +4 -0
  254. package/lib/langium/serialization/yaml-serializer.js.map +1 -1
  255. package/lib/langium/service-registry.d.ts +29 -1
  256. package/lib/langium/service-registry.d.ts.map +1 -1
  257. package/lib/langium/service-registry.js +37 -0
  258. package/lib/langium/service-registry.js.map +1 -1
  259. package/lib/langium/shared-services.d.ts +23 -6
  260. package/lib/langium/shared-services.d.ts.map +1 -1
  261. package/lib/langium/shared-services.js.map +1 -1
  262. package/lib/langium/single-langium-copy.d.ts +22 -0
  263. package/lib/langium/single-langium-copy.d.ts.map +1 -0
  264. package/lib/langium/single-langium-copy.js +36 -0
  265. package/lib/langium/single-langium-copy.js.map +1 -0
  266. package/lib/langium/transfer/transfer-encoder.d.ts +84 -35
  267. package/lib/langium/transfer/transfer-encoder.d.ts.map +1 -1
  268. package/lib/langium/transfer/transfer-encoder.js +34 -23
  269. package/lib/langium/transfer/transfer-encoder.js.map +1 -1
  270. package/lib/langium/trivia/comment-preserver.d.ts +423 -0
  271. package/lib/langium/trivia/comment-preserver.d.ts.map +1 -0
  272. package/lib/langium/trivia/comment-preserver.js +906 -0
  273. package/lib/langium/trivia/comment-preserver.js.map +1 -0
  274. package/lib/langium/trivia/document-ending-preserver.d.ts +51 -0
  275. package/lib/langium/trivia/document-ending-preserver.d.ts.map +1 -0
  276. package/lib/langium/trivia/document-ending-preserver.js +62 -0
  277. package/lib/langium/trivia/document-ending-preserver.js.map +1 -0
  278. package/lib/langium/trivia/index.d.ts +14 -0
  279. package/lib/langium/trivia/index.d.ts.map +1 -0
  280. package/lib/langium/trivia/index.js +14 -0
  281. package/lib/langium/trivia/index.js.map +1 -0
  282. package/lib/langium/trivia/trivia-contribution.d.ts +37 -0
  283. package/lib/langium/trivia/trivia-contribution.d.ts.map +1 -0
  284. package/lib/langium/trivia/trivia-contribution.js +10 -0
  285. package/lib/langium/trivia/trivia-contribution.js.map +1 -0
  286. package/lib/langium/trivia/trivia-preserver.d.ts +52 -0
  287. package/lib/langium/trivia/trivia-preserver.d.ts.map +1 -0
  288. package/lib/langium/trivia/trivia-preserver.js +10 -0
  289. package/lib/langium/trivia/trivia-preserver.js.map +1 -0
  290. package/lib/langium/trivia/trivia-service.d.ts +70 -0
  291. package/lib/langium/trivia/trivia-service.d.ts.map +1 -0
  292. package/lib/langium/trivia/trivia-service.js +56 -0
  293. package/lib/langium/trivia/trivia-service.js.map +1 -0
  294. package/lib/langium/update-rewrite/normalize-empty-strings.d.ts.map +1 -1
  295. package/lib/langium/update-rewrite/update-rewrite-service.d.ts +1 -1
  296. package/lib/langium/update-rewrite/update-rewrite-service.d.ts.map +1 -1
  297. package/lib/langium/update-rewrite/update-rewrite-service.js.map +1 -1
  298. package/lib/langium/update-rewrite/update-rewrite.d.ts +1 -1
  299. package/lib/langium/validation/document-validator.d.ts +280 -9
  300. package/lib/langium/validation/document-validator.d.ts.map +1 -1
  301. package/lib/langium/validation/document-validator.js +453 -8
  302. package/lib/langium/validation/document-validator.js.map +1 -1
  303. package/lib/langium/validation/validation-contribution-collector.d.ts +9 -1
  304. package/lib/langium/validation/validation-contribution-collector.d.ts.map +1 -1
  305. package/lib/langium/validation/validation-contribution-collector.js +1 -1
  306. package/lib/langium/validation/validation-contribution-collector.js.map +1 -1
  307. package/lib/langium/workspace/document-uri-policy.d.ts +24 -15
  308. package/lib/langium/workspace/document-uri-policy.d.ts.map +1 -1
  309. package/lib/langium/workspace/document-uri-policy.js +22 -13
  310. package/lib/langium/workspace/document-uri-policy.js.map +1 -1
  311. package/lib/langium/workspace/file-not-found.d.ts +23 -0
  312. package/lib/langium/workspace/file-not-found.d.ts.map +1 -0
  313. package/lib/langium/workspace/file-not-found.js +31 -0
  314. package/lib/langium/workspace/file-not-found.js.map +1 -0
  315. package/lib/langium/workspace/file-system-provider.d.ts +165 -8
  316. package/lib/langium/workspace/file-system-provider.d.ts.map +1 -1
  317. package/lib/langium/workspace/file-system-provider.js +111 -13
  318. package/lib/langium/workspace/file-system-provider.js.map +1 -1
  319. package/lib/langium/workspace/hydranium-langium-document-factory.d.ts +31 -1
  320. package/lib/langium/workspace/hydranium-langium-document-factory.d.ts.map +1 -1
  321. package/lib/langium/workspace/hydranium-langium-document-factory.js +54 -0
  322. package/lib/langium/workspace/hydranium-langium-document-factory.js.map +1 -1
  323. package/lib/langium/workspace/hydranium-workspace-lock.d.ts +43 -1
  324. package/lib/langium/workspace/hydranium-workspace-lock.d.ts.map +1 -1
  325. package/lib/langium/workspace/hydranium-workspace-lock.js +58 -1
  326. package/lib/langium/workspace/hydranium-workspace-lock.js.map +1 -1
  327. package/lib/langium/workspace/hydranium-workspace-manager.d.ts +124 -22
  328. package/lib/langium/workspace/hydranium-workspace-manager.d.ts.map +1 -1
  329. package/lib/langium/workspace/hydranium-workspace-manager.js +212 -31
  330. package/lib/langium/workspace/hydranium-workspace-manager.js.map +1 -1
  331. package/lib/langium/workspace/in-memory-file-system-provider.d.ts +26 -9
  332. package/lib/langium/workspace/in-memory-file-system-provider.d.ts.map +1 -1
  333. package/lib/langium/workspace/in-memory-file-system-provider.js +45 -22
  334. package/lib/langium/workspace/in-memory-file-system-provider.js.map +1 -1
  335. package/lib/langium/workspace/index-manager.d.ts.map +1 -1
  336. package/lib/langium/workspace/index-manager.js.map +1 -1
  337. package/lib/langium/workspace/index.d.ts +1 -0
  338. package/lib/langium/workspace/index.d.ts.map +1 -1
  339. package/lib/langium/workspace/index.js +1 -0
  340. package/lib/langium/workspace/index.js.map +1 -1
  341. package/lib/langium/workspace/initialize-workspace.d.ts +31 -2
  342. package/lib/langium/workspace/initialize-workspace.d.ts.map +1 -1
  343. package/lib/langium/workspace/initialize-workspace.js +13 -5
  344. package/lib/langium/workspace/initialize-workspace.js.map +1 -1
  345. package/lib/langium/workspace/langium-documents.d.ts +7 -0
  346. package/lib/langium/workspace/langium-documents.d.ts.map +1 -1
  347. package/lib/langium/workspace/langium-documents.js +18 -1
  348. package/lib/langium/workspace/langium-documents.js.map +1 -1
  349. package/lib/langium/workspace/persistent-file-system-provider.d.ts +15 -9
  350. package/lib/langium/workspace/persistent-file-system-provider.d.ts.map +1 -1
  351. package/lib/langium/workspace/persistent-file-system-provider.js +25 -13
  352. package/lib/langium/workspace/persistent-file-system-provider.js.map +1 -1
  353. package/lib/langium/workspace/self-save-registry.d.ts +84 -0
  354. package/lib/langium/workspace/self-save-registry.d.ts.map +1 -0
  355. package/lib/{documents → langium/workspace}/self-save-registry.js +33 -22
  356. package/lib/langium/workspace/self-save-registry.js.map +1 -0
  357. package/lib/langium/workspace/virtual-document.d.ts +55 -21
  358. package/lib/langium/workspace/virtual-document.d.ts.map +1 -1
  359. package/lib/langium/workspace/virtual-document.js +87 -24
  360. package/lib/langium/workspace/virtual-document.js.map +1 -1
  361. package/lib/langium/workspace/write-lock-scope.d.ts +22 -10
  362. package/lib/langium/workspace/write-lock-scope.d.ts.map +1 -1
  363. package/lib/langium/workspace/write-lock-scope.js +15 -5
  364. package/lib/langium/workspace/write-lock-scope.js.map +1 -1
  365. package/lib/launcher/integrated-server.d.ts +3 -1
  366. package/lib/launcher/integrated-server.d.ts.map +1 -1
  367. package/lib/locale/index.d.ts +10 -0
  368. package/lib/locale/index.d.ts.map +1 -0
  369. package/lib/locale/index.js +10 -0
  370. package/lib/locale/index.js.map +1 -0
  371. package/lib/locale/server-locale.d.ts +73 -0
  372. package/lib/locale/server-locale.d.ts.map +1 -0
  373. package/lib/locale/server-locale.js +61 -0
  374. package/lib/locale/server-locale.js.map +1 -0
  375. package/lib/lsp/completion/hydranium-completion-provider.d.ts +44 -2
  376. package/lib/lsp/completion/hydranium-completion-provider.d.ts.map +1 -1
  377. package/lib/lsp/completion/hydranium-completion-provider.js +68 -0
  378. package/lib/lsp/completion/hydranium-completion-provider.js.map +1 -1
  379. package/lib/lsp/connection-features.d.ts +23 -0
  380. package/lib/lsp/connection-features.d.ts.map +1 -0
  381. package/lib/lsp/connection-features.js +60 -0
  382. package/lib/lsp/connection-features.js.map +1 -0
  383. package/lib/lsp/diagnostics-connection.d.ts +27 -0
  384. package/lib/lsp/diagnostics-connection.d.ts.map +1 -0
  385. package/lib/lsp/diagnostics-connection.js +53 -0
  386. package/lib/lsp/diagnostics-connection.js.map +1 -0
  387. package/lib/lsp/hydranium-document-update-handler.d.ts +126 -82
  388. package/lib/lsp/hydranium-document-update-handler.d.ts.map +1 -1
  389. package/lib/lsp/hydranium-document-update-handler.js +235 -102
  390. package/lib/lsp/hydranium-document-update-handler.js.map +1 -1
  391. package/lib/lsp/index.d.ts +3 -1
  392. package/lib/lsp/index.d.ts.map +1 -1
  393. package/lib/lsp/index.js +3 -1
  394. package/lib/lsp/index.js.map +1 -1
  395. package/lib/lsp/lsp-latency.d.ts +39 -0
  396. package/lib/lsp/lsp-latency.d.ts.map +1 -0
  397. package/lib/lsp/lsp-latency.js +58 -0
  398. package/lib/lsp/lsp-latency.js.map +1 -0
  399. package/lib/lsp/semantic-token-provider.d.ts +34 -1
  400. package/lib/lsp/semantic-token-provider.d.ts.map +1 -1
  401. package/lib/lsp/semantic-token-provider.js +55 -8
  402. package/lib/lsp/semantic-token-provider.js.map +1 -1
  403. package/lib/lsp/shared-module.d.ts +4 -8
  404. package/lib/lsp/shared-module.d.ts.map +1 -1
  405. package/lib/lsp/shared-module.js.map +1 -1
  406. package/lib/lsp/start-language-server.d.ts +8 -7
  407. package/lib/lsp/start-language-server.d.ts.map +1 -1
  408. package/lib/lsp/start-language-server.js +13 -7
  409. package/lib/lsp/start-language-server.js.map +1 -1
  410. package/lib/messages/carriers.d.ts +18 -12
  411. package/lib/messages/carriers.d.ts.map +1 -1
  412. package/lib/messages/carriers.js +22 -13
  413. package/lib/messages/carriers.js.map +1 -1
  414. package/lib/messages/index.d.ts +4 -1
  415. package/lib/messages/index.d.ts.map +1 -1
  416. package/lib/messages/index.js +4 -1
  417. package/lib/messages/index.js.map +1 -1
  418. package/lib/messages/renderer.d.ts +142 -0
  419. package/lib/messages/renderer.d.ts.map +1 -0
  420. package/lib/messages/renderer.js +165 -0
  421. package/lib/messages/renderer.js.map +1 -0
  422. package/lib/node/event-loop-monitor.d.ts.map +1 -1
  423. package/lib/node/event-loop-monitor.js +2 -1
  424. package/lib/node/event-loop-monitor.js.map +1 -1
  425. package/lib/node/heap-ceiling.d.ts +61 -0
  426. package/lib/node/heap-ceiling.d.ts.map +1 -0
  427. package/lib/node/heap-ceiling.js +72 -0
  428. package/lib/node/heap-ceiling.js.map +1 -0
  429. package/lib/node/index.d.ts +1 -1
  430. package/lib/node/index.d.ts.map +1 -1
  431. package/lib/node/index.js +5 -1
  432. package/lib/node/index.js.map +1 -1
  433. package/lib/node/latency-from-env.d.ts +1 -1
  434. package/lib/node/latency-from-env.js +1 -1
  435. package/lib/node/lint-grammar.js.map +1 -1
  436. package/lib/node/log-preamble-node.d.ts +5 -3
  437. package/lib/node/log-preamble-node.d.ts.map +1 -1
  438. package/lib/node/log-preamble-node.js +13 -10
  439. package/lib/node/log-preamble-node.js.map +1 -1
  440. package/lib/node/measure-memory.d.ts.map +1 -1
  441. package/lib/node/measure-memory.js +5 -4
  442. package/lib/node/measure-memory.js.map +1 -1
  443. package/lib/node/memory-monitor.d.ts +2 -2
  444. package/lib/node/memory-monitor.d.ts.map +1 -1
  445. package/lib/node/memory-monitor.js +9 -10
  446. package/lib/node/memory-monitor.js.map +1 -1
  447. package/lib/node/node-file-system-provider.d.ts +67 -9
  448. package/lib/node/node-file-system-provider.d.ts.map +1 -1
  449. package/lib/node/node-file-system-provider.js +198 -53
  450. package/lib/node/node-file-system-provider.js.map +1 -1
  451. package/lib/node/profile-capture.d.ts +12 -4
  452. package/lib/node/profile-capture.d.ts.map +1 -1
  453. package/lib/node/profile-capture.js +8 -6
  454. package/lib/node/profile-capture.js.map +1 -1
  455. package/lib/node/profile-digest.js.map +1 -1
  456. package/lib/node/profiling-run.d.ts +13 -3
  457. package/lib/node/profiling-run.d.ts.map +1 -1
  458. package/lib/node/profiling-run.js +17 -8
  459. package/lib/node/profiling-run.js.map +1 -1
  460. package/lib/node/rename-over-open-readers.d.ts +61 -0
  461. package/lib/node/rename-over-open-readers.d.ts.map +1 -0
  462. package/lib/node/rename-over-open-readers.js +80 -0
  463. package/lib/node/rename-over-open-readers.js.map +1 -0
  464. package/lib/node/server-diagnostics.js +1 -1
  465. package/lib/node/server-diagnostics.js.map +1 -1
  466. package/lib/node/server-state-snapshot.js +4 -4
  467. package/lib/node/server-state-snapshot.js.map +1 -1
  468. package/lib/node/socket-launcher.d.ts +20 -4
  469. package/lib/node/socket-launcher.d.ts.map +1 -1
  470. package/lib/node/socket-launcher.js +8 -7
  471. package/lib/node/socket-launcher.js.map +1 -1
  472. package/lib/node/startup-cpu-profile.d.ts +29 -0
  473. package/lib/node/startup-cpu-profile.d.ts.map +1 -0
  474. package/lib/node/startup-cpu-profile.js +91 -0
  475. package/lib/node/startup-cpu-profile.js.map +1 -0
  476. package/lib/node/stdio-launcher.d.ts +10 -10
  477. package/lib/node/stdio-launcher.d.ts.map +1 -1
  478. package/lib/node/stdio-launcher.js +17 -9
  479. package/lib/node/stdio-launcher.js.map +1 -1
  480. package/lib/testing/document-uri-policy-conformance.js +1 -1
  481. package/lib/testing/document-uri-policy-conformance.js.map +1 -1
  482. package/lib/testing/fake-description.js.map +1 -1
  483. package/lib/testing/fake-document.d.ts +16 -4
  484. package/lib/testing/fake-document.d.ts.map +1 -1
  485. package/lib/testing/fake-document.js +18 -3
  486. package/lib/testing/fake-document.js.map +1 -1
  487. package/lib/testing/index.d.ts +1 -1
  488. package/lib/testing/index.d.ts.map +1 -1
  489. package/lib/testing/index.js +2 -1
  490. package/lib/testing/index.js.map +1 -1
  491. package/lib/testing/langium-test-helpers.d.ts.map +1 -1
  492. package/lib/testing/langium-test-helpers.js +1 -0
  493. package/lib/testing/langium-test-helpers.js.map +1 -1
  494. package/lib/testing/make-noop-language-services.js.map +1 -1
  495. package/lib/testing/make-noop-shared-services.d.ts +14 -0
  496. package/lib/testing/make-noop-shared-services.d.ts.map +1 -1
  497. package/lib/testing/make-noop-shared-services.js +28 -2
  498. package/lib/testing/make-noop-shared-services.js.map +1 -1
  499. package/lib/testing/make-test-services.d.ts +72 -14
  500. package/lib/testing/make-test-services.d.ts.map +1 -1
  501. package/lib/testing/make-test-services.js +42 -10
  502. package/lib/testing/make-test-services.js.map +1 -1
  503. package/lib/testing/make-test-tracer.d.ts +12 -0
  504. package/lib/testing/make-test-tracer.d.ts.map +1 -1
  505. package/lib/testing/make-test-tracer.js +13 -0
  506. package/lib/testing/make-test-tracer.js.map +1 -1
  507. package/lib/testing/node/applied-edit-capture.d.ts +29 -0
  508. package/lib/testing/node/applied-edit-capture.d.ts.map +1 -0
  509. package/lib/testing/node/applied-edit-capture.js +117 -0
  510. package/lib/testing/node/applied-edit-capture.js.map +1 -0
  511. package/lib/testing/node/golden-corpus.js.map +1 -1
  512. package/lib/testing/node/index.d.ts +1 -0
  513. package/lib/testing/node/index.d.ts.map +1 -1
  514. package/lib/testing/node/index.js +1 -0
  515. package/lib/testing/node/index.js.map +1 -1
  516. package/lib/testing/node/lsp-harness.d.ts.map +1 -1
  517. package/lib/testing/node/lsp-harness.js +2 -0
  518. package/lib/testing/node/lsp-harness.js.map +1 -1
  519. package/lib/testing/node/lsp-server-connection.d.ts +21 -6
  520. package/lib/testing/node/lsp-server-connection.d.ts.map +1 -1
  521. package/lib/testing/node/lsp-server-connection.js +49 -106
  522. package/lib/testing/node/lsp-server-connection.js.map +1 -1
  523. package/lib/testing/node/scratch-workspace.d.ts.map +1 -1
  524. package/lib/testing/node/scratch-workspace.js +10 -5
  525. package/lib/testing/node/scratch-workspace.js.map +1 -1
  526. package/lib/testing/node/spawned-server.d.ts +30 -1
  527. package/lib/testing/node/spawned-server.d.ts.map +1 -1
  528. package/lib/testing/node/spawned-server.js +39 -2
  529. package/lib/testing/node/spawned-server.js.map +1 -1
  530. package/lib/testing/node/unhandled-rejections.d.ts +20 -0
  531. package/lib/testing/node/unhandled-rejections.d.ts.map +1 -0
  532. package/lib/testing/node/unhandled-rejections.js +32 -0
  533. package/lib/testing/node/unhandled-rejections.js.map +1 -0
  534. package/lib/testing/playwright/browser-capture-bridge.js.map +1 -1
  535. package/lib/testing/playwright/e2e-profiling.js.map +1 -1
  536. package/lib/testing/playwright/flaky-network-proxy.d.ts +76 -0
  537. package/lib/testing/playwright/flaky-network-proxy.d.ts.map +1 -0
  538. package/lib/testing/playwright/flaky-network-proxy.js +164 -0
  539. package/lib/testing/playwright/flaky-network-proxy.js.map +1 -0
  540. package/lib/testing/playwright/index.d.ts +1 -0
  541. package/lib/testing/playwright/index.d.ts.map +1 -1
  542. package/lib/testing/playwright/index.js +1 -0
  543. package/lib/testing/playwright/index.js.map +1 -1
  544. package/lib/testing/playwright/server-log-capture.d.ts +46 -16
  545. package/lib/testing/playwright/server-log-capture.d.ts.map +1 -1
  546. package/lib/testing/playwright/server-log-capture.js +111 -40
  547. package/lib/testing/playwright/server-log-capture.js.map +1 -1
  548. package/lib/testing/playwright/server-log-fixture.d.ts +16 -0
  549. package/lib/testing/playwright/server-log-fixture.d.ts.map +1 -1
  550. package/lib/testing/playwright/server-log-fixture.js +25 -6
  551. package/lib/testing/playwright/server-log-fixture.js.map +1 -1
  552. package/lib/testing/playwright/server-log-region.d.ts +15 -0
  553. package/lib/testing/playwright/server-log-region.d.ts.map +1 -0
  554. package/lib/testing/playwright/server-log-region.js +30 -0
  555. package/lib/testing/playwright/server-log-region.js.map +1 -0
  556. package/lib/testing/playwright/server-log-rename-reporter.d.ts.map +1 -1
  557. package/lib/testing/playwright/server-log-rename-reporter.js +4 -3
  558. package/lib/testing/playwright/server-log-rename-reporter.js.map +1 -1
  559. package/lib/testing/run-update-pipeline.d.ts +8 -5
  560. package/lib/testing/run-update-pipeline.d.ts.map +1 -1
  561. package/lib/testing/run-update-pipeline.js.map +1 -1
  562. package/lib/testing/stub-ast-document-manager.d.ts +11 -52
  563. package/lib/testing/stub-ast-document-manager.d.ts.map +1 -1
  564. package/lib/testing/stub-ast-document-manager.js +31 -62
  565. package/lib/testing/stub-ast-document-manager.js.map +1 -1
  566. package/lib/testing/stub-document-builder.d.ts +33 -11
  567. package/lib/testing/stub-document-builder.d.ts.map +1 -1
  568. package/lib/testing/stub-document-builder.js +103 -5
  569. package/lib/testing/stub-document-builder.js.map +1 -1
  570. package/lib/testing/stub-hydranium-text-documents.d.ts +33 -10
  571. package/lib/testing/stub-hydranium-text-documents.d.ts.map +1 -1
  572. package/lib/testing/stub-hydranium-text-documents.js +132 -16
  573. package/lib/testing/stub-hydranium-text-documents.js.map +1 -1
  574. package/lib/testing/stub-index-manager.js.map +1 -1
  575. package/lib/testing/stub-langium-documents.d.ts +3 -2
  576. package/lib/testing/stub-langium-documents.d.ts.map +1 -1
  577. package/lib/testing/stub-langium-documents.js.map +1 -1
  578. package/lib/testing/stub-model-service.d.ts +9 -8
  579. package/lib/testing/stub-model-service.d.ts.map +1 -1
  580. package/lib/testing/stub-model-service.js +6 -6
  581. package/lib/testing/stub-model-service.js.map +1 -1
  582. package/lib/testing/stub-project-manager.js.map +1 -1
  583. package/lib/testing/stub-self-save-registry.d.ts +1 -1
  584. package/lib/testing/stub-self-save-registry.d.ts.map +1 -1
  585. package/lib/testing/stub-service-registry.d.ts +1 -1
  586. package/lib/testing/stub-service-registry.js.map +1 -1
  587. package/lib/testing/stub-writable-file-system.d.ts +1 -1
  588. package/lib/testing/stub-writable-file-system.d.ts.map +1 -1
  589. package/lib/testing/stub-writable-file-system.js +2 -1
  590. package/lib/testing/stub-writable-file-system.js.map +1 -1
  591. package/lib/util/connection-liveness.d.ts +19 -6
  592. package/lib/util/connection-liveness.d.ts.map +1 -1
  593. package/lib/util/connection-liveness.js +61 -15
  594. package/lib/util/connection-liveness.js.map +1 -1
  595. package/lib/util/environment.d.ts.map +1 -1
  596. package/lib/util/environment.js.map +1 -1
  597. package/lib/util/registry.d.ts.map +1 -1
  598. package/package.json +38 -57
  599. package/src/browser/host-heads-in-worker.ts +142 -0
  600. package/src/browser/index.ts +17 -0
  601. package/src/browser/indexeddb-file-system-store.ts +192 -0
  602. package/src/browser/start-language-server-in-worker.ts +51 -0
  603. package/src/documents/ast-document-manager.ts +467 -233
  604. package/src/documents/client-ids.ts +5 -22
  605. package/src/documents/client-session-errors.ts +24 -0
  606. package/src/documents/client-session-registry.ts +262 -0
  607. package/src/documents/dirty-state-tracker.ts +167 -0
  608. package/src/documents/document-release-handler.ts +404 -0
  609. package/src/documents/document-release-scheduler.ts +121 -0
  610. package/src/documents/file-system-task-queue.ts +74 -0
  611. package/src/documents/hydranium-text-documents.ts +976 -595
  612. package/src/documents/index.ts +10 -2
  613. package/src/documents/language-client-shadow.ts +452 -0
  614. package/src/documents/model-ledger.ts +66 -0
  615. package/src/documents/text-ledger.ts +112 -0
  616. package/src/documents/version-sync-service.ts +275 -0
  617. package/src/index.ts +8 -0
  618. package/src/langium/ast-extension/ast-extension-service.ts +77 -41
  619. package/src/langium/ast-extension/ast-node-builder.ts +66 -22
  620. package/src/langium/bootstrap.ts +95 -52
  621. package/src/langium/build-phase-pass/build-phase-pass-service.ts +29 -19
  622. package/src/langium/build-phase-pass/build-phase-pass.ts +37 -8
  623. package/src/langium/composite-ast-reflection.ts +112 -0
  624. package/src/langium/config/configuration-provider.ts +119 -0
  625. package/src/langium/config/index.ts +1 -0
  626. package/src/langium/diagnostics/hydranium-langium-profiler.ts +15 -39
  627. package/src/langium/diagnostics/log-preamble.ts +1 -1
  628. package/src/langium/diagnostics/logger.ts +38 -11
  629. package/src/langium/diagnostics/lsp-logger.ts +61 -16
  630. package/src/langium/document-builder/build-pipeline-integration.ts +46 -32
  631. package/src/langium/document-builder/build-session.ts +4 -3
  632. package/src/langium/document-builder/document-builder.ts +616 -73
  633. package/src/langium/integration-services.ts +59 -28
  634. package/src/langium/integrity/integrity-rule.ts +16 -8
  635. package/src/langium/integrity/integrity-service.ts +296 -69
  636. package/src/langium/keys/containment.ts +87 -0
  637. package/src/langium/keys/index.ts +1 -0
  638. package/src/langium/keys/name-based-key-provider.ts +4 -0
  639. package/src/langium/language-module.ts +49 -8
  640. package/src/langium/model-service/client-session.ts +704 -0
  641. package/src/langium/model-service/index.ts +2 -0
  642. package/src/langium/model-service/model-events.ts +80 -0
  643. package/src/langium/model-service/model-service.ts +908 -485
  644. package/src/langium/module.ts +212 -67
  645. package/src/langium/naming/name-provider.ts +44 -8
  646. package/src/langium/naming/name-separator-validation.ts +25 -3
  647. package/src/langium/project/abstract-project-manager.ts +13 -5
  648. package/src/langium/project/project-change-event.ts +2 -2
  649. package/src/langium/residency/cst-residency-service.ts +51 -17
  650. package/src/langium/scope/fallback-scope.ts +38 -0
  651. package/src/langium/scope/hydranium-scope-computation.ts +45 -44
  652. package/src/langium/scope/hydranium-scope-provider.ts +64 -27
  653. package/src/langium/scope/index.ts +1 -0
  654. package/src/langium/scope/reference-candidate-provider.ts +6 -5
  655. package/src/langium/scope/scope-extension-service.ts +74 -59
  656. package/src/langium/scope/scoped-ast-node-description.ts +1 -3
  657. package/src/langium/serialization/abstract-serializer.ts +57 -41
  658. package/src/langium/serialization/json-serializer.ts +14 -3
  659. package/src/langium/serialization/serializer.ts +1 -1
  660. package/src/langium/serialization/yaml-serializer.ts +4 -0
  661. package/src/langium/service-registry.ts +41 -2
  662. package/src/langium/shared-services.ts +26 -6
  663. package/src/langium/single-langium-copy.ts +42 -0
  664. package/src/langium/transfer/transfer-encoder.ts +102 -45
  665. package/src/langium/trivia/comment-preserver.ts +1100 -0
  666. package/src/langium/trivia/document-ending-preserver.ts +71 -0
  667. package/src/langium/trivia/index.ts +14 -0
  668. package/src/langium/trivia/trivia-contribution.ts +39 -0
  669. package/src/langium/trivia/trivia-preserver.ts +56 -0
  670. package/src/langium/trivia/trivia-service.ts +99 -0
  671. package/src/langium/update-rewrite/update-rewrite-service.ts +1 -1
  672. package/src/langium/update-rewrite/update-rewrite.ts +1 -1
  673. package/src/langium/validation/document-validator.ts +528 -13
  674. package/src/langium/validation/validation-contribution-collector.ts +10 -1
  675. package/src/langium/workspace/document-uri-policy.ts +32 -18
  676. package/src/langium/workspace/file-not-found.ts +35 -0
  677. package/src/langium/workspace/file-system-provider.ts +253 -16
  678. package/src/langium/workspace/hydranium-langium-document-factory.ts +83 -0
  679. package/src/langium/workspace/hydranium-workspace-lock.ts +86 -2
  680. package/src/langium/workspace/hydranium-workspace-manager.ts +241 -35
  681. package/src/langium/workspace/in-memory-file-system-provider.ts +54 -23
  682. package/src/langium/workspace/index.ts +1 -0
  683. package/src/langium/workspace/initialize-workspace.ts +43 -5
  684. package/src/langium/workspace/langium-documents.ts +19 -1
  685. package/src/langium/workspace/persistent-file-system-provider.ts +26 -14
  686. package/src/langium/workspace/self-save-registry.ts +118 -0
  687. package/src/langium/workspace/virtual-document.ts +106 -25
  688. package/src/langium/workspace/write-lock-scope.ts +27 -12
  689. package/src/launcher/integrated-server.ts +3 -1
  690. package/src/locale/index.ts +10 -0
  691. package/src/locale/server-locale.ts +86 -0
  692. package/src/lsp/completion/hydranium-completion-provider.ts +82 -2
  693. package/src/lsp/connection-features.ts +67 -0
  694. package/src/lsp/diagnostics-connection.ts +56 -0
  695. package/src/lsp/hydranium-document-update-handler.ts +285 -111
  696. package/src/lsp/index.ts +3 -1
  697. package/src/lsp/lsp-latency.ts +62 -0
  698. package/src/lsp/semantic-token-provider.ts +74 -7
  699. package/src/lsp/shared-module.ts +4 -8
  700. package/src/lsp/start-language-server.ts +13 -7
  701. package/src/messages/carriers.ts +23 -15
  702. package/src/messages/index.ts +13 -1
  703. package/src/messages/renderer.ts +212 -0
  704. package/src/node/event-loop-monitor.ts +2 -1
  705. package/src/node/heap-ceiling.ts +108 -0
  706. package/src/node/index.ts +5 -1
  707. package/src/node/latency-from-env.ts +1 -1
  708. package/src/node/log-preamble-node.ts +20 -10
  709. package/src/node/measure-memory.ts +5 -4
  710. package/src/node/memory-monitor.ts +10 -10
  711. package/src/node/node-file-system-provider.ts +214 -57
  712. package/src/node/profile-capture.ts +16 -15
  713. package/src/node/profiling-run.ts +30 -8
  714. package/src/node/rename-over-open-readers.ts +94 -0
  715. package/src/node/server-diagnostics.ts +1 -1
  716. package/src/node/server-state-snapshot.ts +5 -5
  717. package/src/node/socket-launcher.ts +27 -11
  718. package/src/node/startup-cpu-profile.ts +94 -0
  719. package/src/node/stdio-launcher.ts +22 -14
  720. package/src/testing/document-uri-policy-conformance.ts +1 -1
  721. package/src/testing/fake-document.ts +24 -5
  722. package/src/testing/index.ts +2 -1
  723. package/src/testing/langium-test-helpers.ts +1 -0
  724. package/src/testing/make-noop-shared-services.ts +50 -2
  725. package/src/testing/make-test-services.ts +125 -31
  726. package/src/testing/make-test-tracer.ts +26 -0
  727. package/src/testing/node/applied-edit-capture.ts +141 -0
  728. package/src/testing/node/index.ts +1 -0
  729. package/src/testing/node/lsp-harness.ts +2 -0
  730. package/src/testing/node/lsp-server-connection.ts +83 -119
  731. package/src/testing/node/scratch-workspace.ts +10 -5
  732. package/src/testing/node/spawned-server.ts +57 -3
  733. package/src/testing/node/unhandled-rejections.ts +31 -0
  734. package/src/testing/parse-semantic-root.ts +1 -1
  735. package/src/testing/playwright/flaky-network-proxy.ts +240 -0
  736. package/src/testing/playwright/index.ts +1 -0
  737. package/src/testing/playwright/server-log-capture.ts +137 -47
  738. package/src/testing/playwright/server-log-fixture.ts +46 -6
  739. package/src/testing/playwright/server-log-region.ts +32 -0
  740. package/src/testing/playwright/server-log-rename-reporter.ts +4 -3
  741. package/src/testing/run-update-pipeline.ts +8 -5
  742. package/src/testing/stub-ast-document-manager.ts +47 -128
  743. package/src/testing/stub-document-builder.ts +133 -18
  744. package/src/testing/stub-hydranium-text-documents.ts +184 -27
  745. package/src/testing/stub-langium-documents.ts +3 -2
  746. package/src/testing/stub-model-service.ts +11 -10
  747. package/src/testing/stub-self-save-registry.ts +1 -1
  748. package/src/testing/stub-service-registry.ts +1 -1
  749. package/src/testing/stub-writable-file-system.ts +3 -2
  750. package/src/util/connection-liveness.ts +67 -15
  751. package/src/util/environment.ts +9 -1
  752. package/lib/documents/language-client-text-shadow.d.ts +0 -101
  753. package/lib/documents/language-client-text-shadow.d.ts.map +0 -1
  754. package/lib/documents/language-client-text-shadow.js +0 -156
  755. package/lib/documents/language-client-text-shadow.js.map +0 -1
  756. package/lib/documents/self-save-registry.d.ts +0 -55
  757. package/lib/documents/self-save-registry.d.ts.map +0 -1
  758. package/lib/documents/self-save-registry.js.map +0 -1
  759. package/lib/lsp/instrument-connection.d.ts +0 -36
  760. package/lib/lsp/instrument-connection.d.ts.map +0 -1
  761. package/lib/lsp/instrument-connection.js +0 -62
  762. package/lib/lsp/instrument-connection.js.map +0 -1
  763. package/lib/node/process-memory.d.ts +0 -66
  764. package/lib/node/process-memory.d.ts.map +0 -1
  765. package/lib/node/process-memory.js +0 -252
  766. package/lib/node/process-memory.js.map +0 -1
  767. package/src/documents/language-client-text-shadow.ts +0 -175
  768. package/src/documents/self-save-registry.ts +0 -81
  769. package/src/lsp/instrument-connection.ts +0 -66
  770. package/src/node/process-memory.ts +0 -299
@@ -0,0 +1,138 @@
1
+ /********************************************************************************
2
+ * Copyright (c) 2026 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 { type LangiumDocument, type URI } from '@hydranium/langium';
10
+ import { type Tracer } from '@hydranium/protocol';
11
+ import { Disposable, Emitter, type Event } from 'vscode-languageserver-protocol';
12
+ import { type LogNameOptions } from '../langium/diagnostics/logger.js';
13
+ import { type ServerSharedServices } from '../langium/module.js';
14
+ /** A build {@link VersionSyncService.requestRecoveryBuild} schedules. */
15
+ export interface RecoveryBuildRequest {
16
+ /** Remove the document instead of building it. */
17
+ readonly deleted?: boolean;
18
+ /** Staged for the build, as `HydraniumDocumentBuilder.scheduleUpdate` takes it. */
19
+ readonly reason?: string;
20
+ /** Asked again inside the lock, where a build that ran meanwhile may have made the request moot. */
21
+ readonly stillNeeded: () => boolean;
22
+ /** Build even while a {@link VersionSyncService.registerDeferredBuilds} check holds the URI back. */
23
+ readonly ignoreDeferred?: boolean;
24
+ }
25
+ /**
26
+ * Keeps each workspace root's `ModelLedger` record in step with the
27
+ * text store, and owns every build that syncs a root to its text or recovers
28
+ * one a build left behind.
29
+ */
30
+ export interface VersionSyncService {
31
+ /**
32
+ * Report a root a factory, registry, integrity repair or other producer
33
+ * made. Below `Parsed` it is marked a placeholder. Otherwise `origin.version`,
34
+ * the store's version read before the parse, is recorded; a registered
35
+ * document is then reconciled with the store, re-versioned and recorded at
36
+ * the store's version of its text, built if behind, and announced on
37
+ * {@link onDidRecordModel}. `origin.text` stands for a root whose CST is not
38
+ * the text it describes.
39
+ */
40
+ modelProduced(document: LangiumDocument, origin?: {
41
+ version?: number;
42
+ text?: string;
43
+ }): void;
44
+ /**
45
+ * Build `uri` from a `WorkspaceLock` read, so the build queues behind a
46
+ * running one rather than cancelling it. Requests made while one for `uri`
47
+ * is pending share its next build. Resolves once a build that carried this
48
+ * request completed, or once a check before a build found it no longer
49
+ * needed or deferred. A build a later write cancelled does not count: the
50
+ * request rides the next one. Rejects with the last build's error once builds
51
+ * carrying this request have failed more often than it may retry, so a
52
+ * caller waiting on the build can stop; the caller ends that failure, and
53
+ * logs it if nothing else reports it.
54
+ */
55
+ requestRecoveryBuild(uri: URI, request: RecoveryBuildRequest): Promise<void>;
56
+ /**
57
+ * Build `uri` unless it is {@link isSyncedTo synced to} `textVersion`, asked
58
+ * again inside the lock. `undefined` when no build is needed, else the
59
+ * {@link requestRecoveryBuild} promise.
60
+ */
61
+ syncTo(uri: URI, textVersion: number): Promise<void> | undefined;
62
+ /**
63
+ * Whether `uri`'s root was parsed from text at `textVersion` or later; requests
64
+ * nothing. A root with no recorded version or a placeholder counts as synced,
65
+ * since no build records a version for it, and so does a URI with no document.
66
+ */
67
+ isSyncedTo(uri: URI, textVersion: number): boolean;
68
+ /**
69
+ * Register `isDeferred`, which answers whether its caller holds back a build
70
+ * of a URI it will request later, as the update handler does for a debounced
71
+ * editor change. A caller that drops a held change has to leave the URI to
72
+ * another build.
73
+ */
74
+ registerDeferredBuilds(isDeferred: (uri: URI) => boolean): Disposable;
75
+ /**
76
+ * Fires for every reconciled root. A cancel cannot skip it, unlike a
77
+ * `Parsed` phase listener. It can fire inside a build's write lock, so a
78
+ * listener that requests a build must not await it.
79
+ */
80
+ readonly onDidRecordModel: Event<LangiumDocument>;
81
+ }
82
+ /** A request waiting in {@link PendingRecoveryBuilds}, with the failed builds that carried it. */
83
+ export interface QueuedRecoveryBuild {
84
+ readonly request: RecoveryBuildRequest;
85
+ failures: number;
86
+ /** Settles the request once a build carried it or it was no longer needed. */
87
+ readonly resolve: () => void;
88
+ /** Settles the request once it has used its retries, with the last build's error. */
89
+ readonly reject: (error: unknown) => void;
90
+ }
91
+ /** The requests waiting on one URI's builds in {@link DefaultVersionSyncService}. */
92
+ export interface PendingRecoveryBuilds {
93
+ readonly queued: QueuedRecoveryBuild[];
94
+ }
95
+ /**
96
+ * Collaborators are resolved per call: the registry and its document factory,
97
+ * which construct each other, report roots to this service.
98
+ */
99
+ export declare class DefaultVersionSyncService implements VersionSyncService {
100
+ protected readonly services: ServerSharedServices;
101
+ protected readonly tracer: Tracer;
102
+ protected readonly recordedEmitter: Emitter<LangiumDocument<import("@hydranium/langium").AstNode>>;
103
+ protected readonly deferredBuildChecks: Set<(uri: URI) => boolean>;
104
+ protected readonly pendingBuilds: Map<string, PendingRecoveryBuilds>;
105
+ /** Retries of each request after a failed build before it is rejected. */
106
+ protected readonly maxBuildRetries: number;
107
+ constructor(services: ServerSharedServices, options?: LogNameOptions);
108
+ get onDidRecordModel(): Event<LangiumDocument>;
109
+ modelProduced(document: LangiumDocument, origin?: {
110
+ version?: number;
111
+ text?: string;
112
+ }): void;
113
+ syncTo(uri: URI, textVersion: number): Promise<void> | undefined;
114
+ requestRecoveryBuild(uri: URI, request: RecoveryBuildRequest): Promise<void>;
115
+ registerDeferredBuilds(isDeferred: (uri: URI) => boolean): Disposable;
116
+ isSyncedTo(uri: URI, textVersion: number): boolean;
117
+ /** The text `document`'s root was parsed from, or for a root built without either record or CST, the document's own. */
118
+ protected parsedText(document: LangiumDocument): string;
119
+ /**
120
+ * Run `entry`'s requests, one build per batch, until none is queued, and
121
+ * settle each. A request a failed build carried is queued again
122
+ * {@link maxBuildRetries} times, then rejected; one a cancelled
123
+ * build carried is queued again without counting. The entry is dropped
124
+ * in the same tick as the last check of the queue, so no request lands in
125
+ * an entry nothing runs any more.
126
+ */
127
+ protected runBuilds(key: string, uri: URI, entry: PendingRecoveryBuilds): Promise<void>;
128
+ /** Whether `request` still needs its build, and no deferral it heeds holds it back. Runs inside the lock read. */
129
+ protected isStillNeeded(uri: URI, request: RecoveryBuildRequest): boolean;
130
+ /**
131
+ * One build for every request of `batch`, removing the document when the
132
+ * latest of them asks to, as `HydraniumDocumentBuilder.scheduleUpdate`
133
+ * merges a change and a deletion. Runs inside the lock read.
134
+ */
135
+ protected scheduleBatch(uri: URI, batch: readonly RecoveryBuildRequest[]): Promise<void>;
136
+ protected isDeferred(uri: URI): boolean;
137
+ }
138
+ //# sourceMappingURL=version-sync-service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"version-sync-service.d.ts","sourceRoot":"","sources":["../../src/documents/version-sync-service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,173 @@
1
+ /********************************************************************************
2
+ * Copyright (c) 2026 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 { DocumentState } from '@hydranium/langium';
10
+ import { UNRECORDED_VERSION, describeError, describeErrorWithStack } from '@hydranium/protocol';
11
+ import { Disposable, Emitter } from 'vscode-languageserver-protocol';
12
+ import { HydraniumWorkspaceLock } from '../langium/workspace/hydranium-workspace-lock.js';
13
+ import { HydraniumTextDocuments } from './hydranium-text-documents.js';
14
+ /**
15
+ * Collaborators are resolved per call: the registry and its document factory,
16
+ * which construct each other, report roots to this service.
17
+ */
18
+ export class DefaultVersionSyncService {
19
+ services;
20
+ tracer;
21
+ recordedEmitter = new Emitter();
22
+ deferredBuildChecks = new Set();
23
+ pendingBuilds = new Map();
24
+ /** Retries of each request after a failed build before it is rejected. */
25
+ maxBuildRetries = 1;
26
+ constructor(services, options = {}) {
27
+ this.services = services;
28
+ this.tracer = services.Tracer.for(options.logName ?? 'VersionSyncService').trace('instantiated');
29
+ }
30
+ get onDidRecordModel() {
31
+ return this.recordedEmitter.event;
32
+ }
33
+ modelProduced(document, origin = {}) {
34
+ const workspace = this.services.workspace;
35
+ const ledger = workspace.ModelLedger;
36
+ const root = document.parseResult.value;
37
+ if (document.state < DocumentState.Parsed) {
38
+ ledger.markPlaceholder(root);
39
+ return;
40
+ }
41
+ if (origin.version !== undefined) {
42
+ ledger.record(root, origin.version, origin.text);
43
+ }
44
+ const store = workspace.TextDocuments;
45
+ // Unregistered, it is a probe or a load whose registration reports it again.
46
+ if (!(store instanceof HydraniumTextDocuments) || workspace.LangiumDocuments.getDocument(document.uri) !== document) {
47
+ return;
48
+ }
49
+ const uri = document.uri.toString();
50
+ // Against the parsed text: the text document may already hold a newer edit.
51
+ const version = store.reconcileExternalContent(uri, origin.text ?? this.parsedText(document));
52
+ if (version !== undefined) {
53
+ if (document.textDocument.version !== version) {
54
+ // An empty-changes update only re-stamps the version.
55
+ store.update(document.textDocument, [], version);
56
+ }
57
+ ledger.record(root, version, origin.text);
58
+ }
59
+ // Nothing waits on this build, so its failure ends here.
60
+ this.syncTo(document.uri, store.version(uri))?.catch((error) => this.tracer.withUri(uri).error(`The build that would sync the root to its text failed. ${describeErrorWithStack(error)}`));
61
+ this.recordedEmitter.fire(document);
62
+ }
63
+ syncTo(uri, textVersion) {
64
+ const behind = () => !this.isSyncedTo(uri, textVersion);
65
+ return behind() ? this.requestRecoveryBuild(uri, { stillNeeded: behind }) : undefined;
66
+ }
67
+ requestRecoveryBuild(uri, request) {
68
+ return new Promise((resolve, reject) => {
69
+ const key = uri.toString();
70
+ const queued = { request, failures: 0, resolve, reject };
71
+ const pending = this.pendingBuilds.get(key);
72
+ if (pending) {
73
+ // Not dropped: the pending build may have read the text before this request's change.
74
+ pending.queued.push(queued);
75
+ return;
76
+ }
77
+ const entry = { queued: [queued] };
78
+ this.pendingBuilds.set(key, entry);
79
+ void this.runBuilds(key, uri, entry);
80
+ });
81
+ }
82
+ registerDeferredBuilds(isDeferred) {
83
+ this.deferredBuildChecks.add(isDeferred);
84
+ return Disposable.create(() => this.deferredBuildChecks.delete(isDeferred));
85
+ }
86
+ isSyncedTo(uri, textVersion) {
87
+ const root = this.services.workspace.LangiumDocuments.getDocument(uri)?.parseResult.value;
88
+ if (root === undefined) {
89
+ return true;
90
+ }
91
+ const ledger = this.services.workspace.ModelLedger;
92
+ const recorded = ledger.versionOf(root);
93
+ return recorded === UNRECORDED_VERSION || ledger.isPlaceholder(root) || recorded >= textVersion;
94
+ }
95
+ /** The text `document`'s root was parsed from, or for a root built without either record or CST, the document's own. */
96
+ parsedText(document) {
97
+ return this.services.workspace.ModelLedger.textOf(document.parseResult.value) ?? document.textDocument.getText();
98
+ }
99
+ /**
100
+ * Run `entry`'s requests, one build per batch, until none is queued, and
101
+ * settle each. A request a failed build carried is queued again
102
+ * {@link maxBuildRetries} times, then rejected; one a cancelled
103
+ * build carried is queued again without counting. The entry is dropped
104
+ * in the same tick as the last check of the queue, so no request lands in
105
+ * an entry nothing runs any more.
106
+ */
107
+ async runBuilds(key, uri, entry) {
108
+ const tracer = this.tracer.withUri(key);
109
+ const lock = this.services.workspace.WorkspaceLock;
110
+ // Any other lock resolves a cancelled write as if it had completed, unnoticed.
111
+ const counting = lock instanceof HydraniumWorkspaceLock ? lock : undefined;
112
+ while (entry.queued.length > 0) {
113
+ let carried = [];
114
+ let build;
115
+ let cancellations;
116
+ try {
117
+ // The read waits until no write runs or is queued. It must not await
118
+ // the build, a write that queues behind it.
119
+ await lock.read(() => {
120
+ carried = entry.queued.splice(0);
121
+ const needed = carried.filter(queued => this.isStillNeeded(uri, queued.request));
122
+ carried.filter(queued => !needed.includes(queued)).forEach(queued => queued.resolve());
123
+ carried = needed;
124
+ if (needed.length > 0) {
125
+ build = this.scheduleBatch(uri, needed.map(queued => queued.request));
126
+ // Read after the build is queued, which cancels the write before it.
127
+ cancellations = counting?.writeCancellations;
128
+ }
129
+ });
130
+ await build;
131
+ // A write cancelled the build, before it ran or while it did.
132
+ if (cancellations !== undefined && counting?.writeCancellations !== cancellations) {
133
+ entry.queued.unshift(...carried);
134
+ continue;
135
+ }
136
+ carried.forEach(queued => queued.resolve());
137
+ }
138
+ catch (err) {
139
+ const retried = carried.filter(queued => queued.failures++ < this.maxBuildRetries);
140
+ const givenUp = carried.filter(queued => !retried.includes(queued));
141
+ if (retried.length > 0) {
142
+ // The only line about this failure when the retry succeeds.
143
+ tracer.warn(`Requested build failed; retrying. ${describeErrorWithStack(err)}`);
144
+ entry.queued.unshift(...retried);
145
+ }
146
+ if (givenUp.length > 0) {
147
+ // Each requester ends the failure, so the log line is theirs.
148
+ tracer.debug(`Requested build failed again; giving up. ${describeError(err)}`);
149
+ givenUp.forEach(queued => queued.reject(err));
150
+ }
151
+ }
152
+ }
153
+ this.pendingBuilds.delete(key);
154
+ }
155
+ /** Whether `request` still needs its build, and no deferral it heeds holds it back. Runs inside the lock read. */
156
+ isStillNeeded(uri, request) {
157
+ return request.stillNeeded() && (request.ignoreDeferred === true || !this.isDeferred(uri));
158
+ }
159
+ /**
160
+ * One build for every request of `batch`, removing the document when the
161
+ * latest of them asks to, as `HydraniumDocumentBuilder.scheduleUpdate`
162
+ * merges a change and a deletion. Runs inside the lock read.
163
+ */
164
+ scheduleBatch(uri, batch) {
165
+ const deleted = batch.at(-1)?.deleted === true;
166
+ const reason = batch.find(request => request.reason !== undefined)?.reason;
167
+ return this.services.workspace.DocumentBuilder.scheduleUpdate(deleted ? [] : [uri], deleted ? [uri] : [], reason);
168
+ }
169
+ isDeferred(uri) {
170
+ return [...this.deferredBuildChecks].some(isDeferred => isDeferred(uri));
171
+ }
172
+ }
173
+ //# sourceMappingURL=version-sync-service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"version-sync-service.js","sourceRoot":"","sources":["../../src/documents/version-sync-service.ts"],"names":[],"mappings":"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"}
package/lib/index.d.ts CHANGED
@@ -26,13 +26,18 @@ export * from './langium/project/index.js';
26
26
  export * from './langium/residency/index.js';
27
27
  export * from './langium/scope/index.js';
28
28
  export * from './langium/serialization/index.js';
29
+ export * from './langium/trivia/index.js';
29
30
  export * from './langium/transfer/index.js';
30
31
  export * from './langium/update-rewrite/index.js';
31
32
  export * from './langium/validation/index.js';
32
33
  export * from './langium/workspace/index.js';
33
34
  export * from './langium/service-registry.js';
34
35
  export * from './langium/language-types.js';
36
+ export * from './langium/composite-ast-reflection.js';
37
+ export * from './langium/single-langium-copy.js';
35
38
  export * from './launcher/index.js';
39
+ export * from './locale/index.js';
40
+ export * from './messages/renderer.js';
36
41
  export * from './documents/index.js';
37
42
  export * from './util/index.js';
38
43
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAGlF,cAAc,kCAAkC,CAAC;AACjD,cAAc,qCAAqC,CAAC;AACpD,cAAc,wBAAwB,CAAC;AACvC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,mCAAmC,CAAC;AAClD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,qCAAqC,CAAC;AACpD,cAAc,8BAA8B,CAAC;AAC7C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,kCAAkC,CAAC;AACjD,cAAc,qBAAqB,CAAC;AACpC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,yBAAyB,CAAC;AACxC,cAAc,kCAAkC,CAAC;AACjD,cAAc,6BAA6B,CAAC;AAC5C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,0BAA0B,CAAC;AACzC,cAAc,kCAAkC,CAAC;AACjD,cAAc,6BAA6B,CAAC;AAC5C,cAAc,mCAAmC,CAAC;AAClD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC;AACrC,cAAc,iBAAiB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAGlF,cAAc,kCAAkC,CAAC;AACjD,cAAc,qCAAqC,CAAC;AACpD,cAAc,wBAAwB,CAAC;AACvC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,mCAAmC,CAAC;AAClD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,qCAAqC,CAAC;AACpD,cAAc,8BAA8B,CAAC;AAC7C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,kCAAkC,CAAC;AACjD,cAAc,qBAAqB,CAAC;AACpC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,yBAAyB,CAAC;AACxC,cAAc,kCAAkC,CAAC;AACjD,cAAc,6BAA6B,CAAC;AAC5C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,0BAA0B,CAAC;AACzC,cAAc,kCAAkC,CAAC;AACjD,cAAc,2BAA2B,CAAC;AAC1C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,mCAAmC,CAAC;AAClD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,uCAAuC,CAAC;AACtD,cAAc,kCAAkC,CAAC;AACjD,cAAc,qBAAqB,CAAC;AACpC,cAAc,mBAAmB,CAAC;AAIlC,cAAc,wBAAwB,CAAC;AACvC,cAAc,sBAAsB,CAAC;AACrC,cAAc,iBAAiB,CAAC"}
package/lib/index.js CHANGED
@@ -27,13 +27,21 @@ export * from './langium/project/index.js';
27
27
  export * from './langium/residency/index.js';
28
28
  export * from './langium/scope/index.js';
29
29
  export * from './langium/serialization/index.js';
30
+ export * from './langium/trivia/index.js';
30
31
  export * from './langium/transfer/index.js';
31
32
  export * from './langium/update-rewrite/index.js';
32
33
  export * from './langium/validation/index.js';
33
34
  export * from './langium/workspace/index.js';
34
35
  export * from './langium/service-registry.js';
35
36
  export * from './langium/language-types.js';
37
+ export * from './langium/composite-ast-reflection.js';
38
+ export * from './langium/single-langium-copy.js';
36
39
  export * from './launcher/index.js';
40
+ export * from './locale/index.js';
41
+ // The renderer only. The `./messages` subpath additionally enumerates this
42
+ // package's own declarations, which the root barrel already re-exports through
43
+ // the modules that raise them.
44
+ export * from './messages/renderer.js';
37
45
  export * from './documents/index.js';
38
46
  export * from './util/index.js';
39
47
  //# sourceMappingURL=index.js.map
package/lib/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF,0DAA0D;AAC1D,cAAc,kCAAkC,CAAC;AACjD,cAAc,qCAAqC,CAAC;AACpD,cAAc,wBAAwB,CAAC;AACvC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,mCAAmC,CAAC;AAClD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,qCAAqC,CAAC;AACpD,cAAc,8BAA8B,CAAC;AAC7C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,kCAAkC,CAAC;AACjD,cAAc,qBAAqB,CAAC;AACpC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,yBAAyB,CAAC;AACxC,cAAc,kCAAkC,CAAC;AACjD,cAAc,6BAA6B,CAAC;AAC5C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,0BAA0B,CAAC;AACzC,cAAc,kCAAkC,CAAC;AACjD,cAAc,6BAA6B,CAAC;AAC5C,cAAc,mCAAmC,CAAC;AAClD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC;AACrC,cAAc,iBAAiB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF,0DAA0D;AAC1D,cAAc,kCAAkC,CAAC;AACjD,cAAc,qCAAqC,CAAC;AACpD,cAAc,wBAAwB,CAAC;AACvC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,mCAAmC,CAAC;AAClD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,qCAAqC,CAAC;AACpD,cAAc,8BAA8B,CAAC;AAC7C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,kCAAkC,CAAC;AACjD,cAAc,qBAAqB,CAAC;AACpC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,yBAAyB,CAAC;AACxC,cAAc,kCAAkC,CAAC;AACjD,cAAc,6BAA6B,CAAC;AAC5C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,0BAA0B,CAAC;AACzC,cAAc,kCAAkC,CAAC;AACjD,cAAc,2BAA2B,CAAC;AAC1C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,mCAAmC,CAAC;AAClD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,uCAAuC,CAAC;AACtD,cAAc,kCAAkC,CAAC;AACjD,cAAc,qBAAqB,CAAC;AACpC,cAAc,mBAAmB,CAAC;AAClC,2EAA2E;AAC3E,+EAA+E;AAC/E,+BAA+B;AAC/B,cAAc,wBAAwB,CAAC;AACvC,cAAc,sBAAsB,CAAC;AACrC,cAAc,iBAAiB,CAAC"}
@@ -13,6 +13,20 @@ import { type LogNameOptions } from '../diagnostics/logger.js';
13
13
  import { type ServerLanguageServices } from '../language-module.js';
14
14
  import { Registry, type RegistryItem } from '../../util/registry.js';
15
15
  import { type AstExtensionRegistry } from './ast-extension-contribution.js';
16
+ /**
17
+ * The document-build phases an {@link AstExtension} may fire at. `Changed` has
18
+ * no AST yet, and `IndexedContent` carries the same per-document information
19
+ * as `Parsed`, so neither is one.
20
+ */
21
+ export type AstExtensionPhase = DocumentState.Parsed | DocumentState.ComputedScopes | DocumentState.Linked | DocumentState.IndexedReferences | DocumentState.Validated;
22
+ export declare namespace AstExtensionPhase {
23
+ /**
24
+ * Every {@link AstExtensionPhase}, in build order. `BuildPipelineIntegration`
25
+ * wires one `onDocumentPhase` listener per entry and `register` refuses a
26
+ * phase outside it, so the two cannot drift apart. A fresh array each call.
27
+ */
28
+ function all(): readonly AstExtensionPhase[];
29
+ }
16
30
  /**
17
31
  * A registration that derives data from an AST node and attaches it to the
18
32
  * node at a declared document-build phase.
@@ -27,20 +41,23 @@ import { type AstExtensionRegistry } from './ast-extension-contribution.js';
27
41
  * are stored as non-enumerable own properties. Otherwise symbol providers,
28
42
  * folding, semantic tokens, and validators will treat them as real children.
29
43
  *
30
- * **Phase semantics:** {@link state} declares the single phase at which
44
+ * **Phase semantics:** {@link phase} declares the single phase at which
31
45
  * {@link compute} fires. The framework wires one `onDocumentPhase` listener per
32
- * useful state unconditionally, rather than deriving the set from the states
33
- * registrations declare — so a registration's state must be one of those, and
34
- * adding one is a framework change, not a registration-time choice.
46
+ * {@link AstExtensionPhase} unconditionally, rather than deriving the set from
47
+ * the phases registrations declare — so `register` refuses any other phase,
48
+ * and adding one is a framework change, not a registration-time choice.
35
49
  *
36
- * **`.ref`-dependent derivations: declare `state: ComputedScopes`, not `Linked`.**
50
+ * **`.ref`-dependent derivations: declare `phase: ComputedScopes`, not `Linked`.**
37
51
  * Lazy reference resolution is available from `ComputedScopes` onward — the
38
52
  * global scope is built by `IndexedContent` (which runs before
39
53
  * `ComputedScopes`), so reading a reference's `.ref` inside a `ComputedScopes`
40
54
  * callback triggers Langium's lazy lookup and returns the resolved target node.
55
+ * A cascade rebuild does not re-run such a derivation unless
56
+ * {@link DocumentBuilderOptions.refreshCrossDocumentComputedScopes} is set, so
57
+ * one that reads another document's node goes stale when that node changes.
41
58
  *
42
- * **DO NOT** stage a `state: ComputedScopes` placeholder hoping to refine it
43
- * via a separate `state: Linked` registration when a downstream consumer
59
+ * **DO NOT** stage a `phase: ComputedScopes` placeholder hoping to refine it
60
+ * via a separate `phase: Linked` registration when a downstream consumer
44
61
  * (typically a `ScopeExtension.addDescriptions` firing during link)
45
62
  * iterates the derived value to build a scope: `onDocumentPhase(Linked)` fires
46
63
  * AFTER Langium's `Linker.link()` has already walked the document, by which
@@ -58,32 +75,26 @@ export interface AstExtension<T extends AstNode = AstNode> extends RegistryItem
58
75
  /**
59
76
  * Per-document early-out. When set, the framework only invokes the
60
77
  * registration's callback for documents the filter accepts. If every
61
- * registration at a given state rejects the document, the framework skips
78
+ * registration at a given phase rejects the document, the framework skips
62
79
  * the `streamAllContents` walk entirely — important for large workspaces
63
80
  * where most documents carry none of the AST shapes a given extension
64
81
  * targets.
65
82
  *
66
- * Default: no filter (registration applies to every document at its state).
83
+ * Default: no filter (registration applies to every document at its phase).
67
84
  */
68
85
  documentFilter?: (document: LangiumDocument) => boolean;
69
86
  /**
70
- * The single document-build state at which {@link compute} fires.
87
+ * The single document-build phase at which {@link compute} fires.
71
88
  *
72
- * Useful values:
73
89
  * - `Parsed` — derivations from AST shape only, no `.ref` reads.
74
- * - `ComputedScopes` — lazy `.ref` resolution available; the most common state.
90
+ * - `ComputedScopes` — lazy `.ref` resolution available; the most common.
75
91
  * - `Linked` — derivations needing fully resolved cross-references.
76
92
  * - `IndexedReferences` — cross-document reverse-lookup derivations.
77
93
  * - `Validated` — derivations depending on diagnostics (rare).
78
- *
79
- * Any other state type-checks but never fires: the framework wires a
80
- * listener only for the states above. `Changed` has no AST yet, and
81
- * `IndexedContent` carries the same per-document information as `Parsed`,
82
- * so neither is wired.
83
94
  */
84
- state: DocumentState;
95
+ phase: AstExtensionPhase;
85
96
  /**
86
- * Mutate `node` for this registration at {@link state}. The framework hands
97
+ * Mutate `node` for this registration at {@link phase}. The framework hands
87
98
  * `node` typed as {@link Mutable} so computed / synthetic property
88
99
  * assignments (`node._foo = ...`) compile without per-callback
89
100
  * `asMutable(...)` casts.
@@ -106,18 +117,18 @@ export interface AstExtension<T extends AstNode = AstNode> extends RegistryItem
106
117
  *
107
118
  * Adopter overrides go through {@link DefaultAstExtensionService}; the
108
119
  * interface keeps the public API stable while internals (the bucket-
109
- * by-state cache) stay `protected` on the default class.
120
+ * by-phase cache) stay `protected` on the default class.
110
121
  */
111
122
  export interface AstExtensionService extends AstExtensionRegistry {
112
123
  /**
113
124
  * Run a single AST node through every registration declaring
114
- * `phase` as its state. Honours `documentFilter` and `nodeFilter`.
125
+ * `phase`. Honours `documentFilter` and `nodeFilter`.
115
126
  * Primarily for tests that need to invoke an extension callback without
116
127
  * driving Langium's full document-build pipeline.
117
128
  */
118
129
  extendNode(node: AstNode, document: LangiumDocument, phase: DocumentState): void;
119
130
  /**
120
- * Re-run all `compute` callbacks declaring `phase` as their state against
131
+ * Re-run all `compute` callbacks declaring `phase` against
121
132
  * every node in the document. Single-pass. Called by
122
133
  * `BuildPipelineIntegration` from an `onDocumentPhase` listener;
123
134
  * not for general adopter use.
@@ -140,19 +151,19 @@ export type AstExtensionServiceOptions = LogNameOptions;
140
151
  * owns the registry + per-node logic, not the listener lifecycle.
141
152
  *
142
153
  * **Performance:** `extendDocument` shares a single `streamAllContents` walk
143
- * per document per wired phase; cost is O(registrations-for-state × nodes),
144
- * and it early-outs when no registration targets the state or the document.
154
+ * per document per wired phase; cost is O(registrations-for-phase × nodes),
155
+ * and it early-outs when no registration targets the phase or the document.
145
156
  */
146
157
  export declare class DefaultAstExtensionService implements AstExtensionService {
147
158
  protected readonly services: ServerLanguageServices;
148
159
  protected readonly extensions: Registry<AstExtension<AstNode>>;
149
160
  /**
150
- * Per-state bucket of registrations targeting each state. Rebuilt lazily
161
+ * Per-phase bucket of registrations targeting each phase. Rebuilt lazily
151
162
  * on the first refresh after a registry mutation — staleness is detected
152
163
  * via reference identity of the registry's cached array (see {@link Registry.all}).
153
164
  */
154
- protected stateBuckets: Map<DocumentState, readonly AstExtension<AstNode>[]>;
155
- protected stateBucketsFor: readonly AstExtension[] | undefined;
165
+ protected phaseBuckets: Map<DocumentState, readonly AstExtension<AstNode>[]>;
166
+ protected phaseBucketsFor: readonly AstExtension[] | undefined;
156
167
  protected readonly tracer: Tracer;
157
168
  constructor(services: ServerLanguageServices, options?: AstExtensionServiceOptions);
158
169
  /**
@@ -167,7 +178,7 @@ export declare class DefaultAstExtensionService implements AstExtensionService {
167
178
  register<T extends AstNode>(extension: AstExtension<T>): Disposable;
168
179
  /**
169
180
  * Production code goes through {@link extendDocument} via the
170
- * `onDocumentPhase(state)` listener wired by `BuildPipelineIntegration`.
181
+ * `onDocumentPhase(phase)` listener wired by `BuildPipelineIntegration`.
171
182
  */
172
183
  extendNode(node: AstNode, document: LangiumDocument, phase: DocumentState): void;
173
184
  /**
@@ -185,13 +196,13 @@ export declare class DefaultAstExtensionService implements AstExtensionService {
185
196
  */
186
197
  extendDocument(document: LangiumDocument, phase: DocumentState, cancelToken?: CancellationToken): void;
187
198
  /**
188
- * Bucket-by-state view of {@link extensions}, rebuilt lazily when the
199
+ * Bucket-by-phase view of {@link extensions}, rebuilt lazily when the
189
200
  * registry's cached `all()` reference changes. Replaces per-call allocation
190
201
  * on the per-node hot path — for a workspace with many documents at the
191
- * same state, the bucket is computed once and reused until the next
202
+ * same phase, the bucket is computed once and reused until the next
192
203
  * register / unregister.
193
204
  */
194
- protected getStateBucket(phase: DocumentState): readonly AstExtension[];
205
+ protected getPhaseBucket(phase: DocumentState): readonly AstExtension[];
195
206
  }
196
207
  /**
197
208
  * Assign a non-enumerable own property — for synthetic children that must NOT
@@ -1 +1 @@
1
- {"version":3,"file":"ast-extension-service.d.ts","sourceRoot":"","sources":["../../../src/langium/ast-extension/ast-extension-service.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF,OAAO,EAAU,KAAK,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,qBAAqB,CAAC;AACxE,OAAO,EAAE,KAAK,OAAO,EAAY,aAAa,EAAE,KAAK,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACjG,OAAO,KAAK,EAAE,iBAAiB,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAC3E,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,KAAK,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AACpE,OAAO,EAAE,QAAQ,EAAE,KAAK,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACrE,OAAO,EAAE,KAAK,oBAAoB,EAAE,MAAM,iCAAiC,CAAC;AAE5E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AACH,MAAM,WAAW,YAAY,CAAC,CAAC,SAAS,OAAO,GAAG,OAAO,CAAE,SAAQ,YAAY;IAC5E,yFAAyF;IACzF,UAAU,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,IAAI,CAAC,CAAC;IACzC;;;;;;;;;OASG;IACH,cAAc,CAAC,EAAE,CAAC,QAAQ,EAAE,eAAe,KAAK,OAAO,CAAC;IACxD;;;;;;;;;;;;;;OAcG;IACH,KAAK,EAAE,aAAa,CAAC;IACrB;;;;;;;;;;;OAWG;IACH,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,eAAe,GAAG,IAAI,CAAC;CAC7D;AAED;;;;;;;;;;;GAWG;AACH,MAAM,WAAW,mBAAoB,SAAQ,oBAAoB;IAC9D;;;;;OAKG;IACH,UAAU,CAAC,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,eAAe,EAAE,KAAK,EAAE,aAAa,GAAG,IAAI,CAAC;IACjF;;;;;OAKG;IACH,cAAc,CAAC,QAAQ,EAAE,eAAe,EAAE,KAAK,EAAE,aAAa,EAAE,WAAW,CAAC,EAAE,iBAAiB,GAAG,IAAI,CAAC;CACzG;AAED,mEAAmE;AACnE,MAAM,MAAM,0BAA0B,GAAG,cAAc,CAAC;AAExD;;;;;;;;;;;;;;;;GAgBG;AACH,qBAAa,0BAA2B,YAAW,mBAAmB;IAahE,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAE,sBAAsB;IAZtD,SAAS,CAAC,QAAQ,CAAC,UAAU,kCAAgC;IAC7D;;;;OAIG;IACH,SAAS,CAAC,YAAY,uDAAqD;IAC3E,SAAS,CAAC,eAAe,EAAE,SAAS,YAAY,EAAE,GAAG,SAAS,CAAC;IAE/D,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;gBAGZ,QAAQ,EAAE,sBAAsB,EACnD,OAAO,GAAE,0BAA+B;IAc3C;;;;;;;;OAQG;IACH,QAAQ,CAAC,CAAC,SAAS,OAAO,EAAE,SAAS,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,UAAU;IAMnE;;;OAGG;IACH,UAAU,CAAC,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,eAAe,EAAE,KAAK,EAAE,aAAa,GAAG,IAAI;IAahF;;;;;;;;;;;;OAYG;IACH,cAAc,CAAC,QAAQ,EAAE,eAAe,EAAE,KAAK,EAAE,aAAa,EAAE,WAAW,CAAC,EAAE,iBAAiB,GAAG,IAAI;IAoCtG;;;;;;OAMG;IACH,SAAS,CAAC,cAAc,CAAC,KAAK,EAAE,aAAa,GAAG,SAAS,YAAY,EAAE;CAiBzE;AAKD;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,GAAG,IAAI,CAOnF"}
1
+ {"version":3,"file":"ast-extension-service.d.ts","sourceRoot":"","sources":["../../../src/langium/ast-extension/ast-extension-service.ts"],"names":[],"mappings":"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"}