@hydranium/core 1.0.0-next.10

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 (868) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +100 -0
  3. package/lib/documents/ast-document-manager.d.ts +243 -0
  4. package/lib/documents/ast-document-manager.d.ts.map +1 -0
  5. package/lib/documents/ast-document-manager.js +302 -0
  6. package/lib/documents/ast-document-manager.js.map +1 -0
  7. package/lib/documents/client-ids.d.ts +30 -0
  8. package/lib/documents/client-ids.d.ts.map +1 -0
  9. package/lib/documents/client-ids.js +30 -0
  10. package/lib/documents/client-ids.js.map +1 -0
  11. package/lib/documents/hydranium-text-documents.d.ts +490 -0
  12. package/lib/documents/hydranium-text-documents.d.ts.map +1 -0
  13. package/lib/documents/hydranium-text-documents.js +893 -0
  14. package/lib/documents/hydranium-text-documents.js.map +1 -0
  15. package/lib/documents/index.d.ts +14 -0
  16. package/lib/documents/index.d.ts.map +1 -0
  17. package/lib/documents/index.js +14 -0
  18. package/lib/documents/index.js.map +1 -0
  19. package/lib/documents/language-client-text-shadow.d.ts +101 -0
  20. package/lib/documents/language-client-text-shadow.d.ts.map +1 -0
  21. package/lib/documents/language-client-text-shadow.js +156 -0
  22. package/lib/documents/language-client-text-shadow.js.map +1 -0
  23. package/lib/documents/self-save-registry.d.ts +55 -0
  24. package/lib/documents/self-save-registry.d.ts.map +1 -0
  25. package/lib/documents/self-save-registry.js +68 -0
  26. package/lib/documents/self-save-registry.js.map +1 -0
  27. package/lib/index.d.ts +38 -0
  28. package/lib/index.d.ts.map +1 -0
  29. package/lib/index.js +39 -0
  30. package/lib/index.js.map +1 -0
  31. package/lib/langium/ast-extension/ast-extension-contribution.d.ts +33 -0
  32. package/lib/langium/ast-extension/ast-extension-contribution.d.ts.map +1 -0
  33. package/lib/langium/ast-extension/ast-extension-contribution.js +10 -0
  34. package/lib/langium/ast-extension/ast-extension-contribution.js.map +1 -0
  35. package/lib/langium/ast-extension/ast-extension-service.d.ts +212 -0
  36. package/lib/langium/ast-extension/ast-extension-service.d.ts.map +1 -0
  37. package/lib/langium/ast-extension/ast-extension-service.js +181 -0
  38. package/lib/langium/ast-extension/ast-extension-service.js.map +1 -0
  39. package/lib/langium/ast-extension/ast-node-builder.d.ts +90 -0
  40. package/lib/langium/ast-extension/ast-node-builder.d.ts.map +1 -0
  41. package/lib/langium/ast-extension/ast-node-builder.js +61 -0
  42. package/lib/langium/ast-extension/ast-node-builder.js.map +1 -0
  43. package/lib/langium/ast-extension/index.d.ts +12 -0
  44. package/lib/langium/ast-extension/index.d.ts.map +1 -0
  45. package/lib/langium/ast-extension/index.js +12 -0
  46. package/lib/langium/ast-extension/index.js.map +1 -0
  47. package/lib/langium/bootstrap.d.ts +224 -0
  48. package/lib/langium/bootstrap.d.ts.map +1 -0
  49. package/lib/langium/bootstrap.js +512 -0
  50. package/lib/langium/bootstrap.js.map +1 -0
  51. package/lib/langium/build-phase-pass/build-phase-pass-service.d.ts +77 -0
  52. package/lib/langium/build-phase-pass/build-phase-pass-service.d.ts.map +1 -0
  53. package/lib/langium/build-phase-pass/build-phase-pass-service.js +102 -0
  54. package/lib/langium/build-phase-pass/build-phase-pass-service.js.map +1 -0
  55. package/lib/langium/build-phase-pass/build-phase-pass.d.ts +106 -0
  56. package/lib/langium/build-phase-pass/build-phase-pass.d.ts.map +1 -0
  57. package/lib/langium/build-phase-pass/build-phase-pass.js +43 -0
  58. package/lib/langium/build-phase-pass/build-phase-pass.js.map +1 -0
  59. package/lib/langium/build-phase-pass/index.d.ts +11 -0
  60. package/lib/langium/build-phase-pass/index.d.ts.map +1 -0
  61. package/lib/langium/build-phase-pass/index.js +11 -0
  62. package/lib/langium/build-phase-pass/index.js.map +1 -0
  63. package/lib/langium/config/index.d.ts +10 -0
  64. package/lib/langium/config/index.d.ts.map +1 -0
  65. package/lib/langium/config/index.js +10 -0
  66. package/lib/langium/config/index.js.map +1 -0
  67. package/lib/langium/config/settings.d.ts +173 -0
  68. package/lib/langium/config/settings.d.ts.map +1 -0
  69. package/lib/langium/config/settings.js +196 -0
  70. package/lib/langium/config/settings.js.map +1 -0
  71. package/lib/langium/diagnostics/hydranium-langium-profiler.d.ts +109 -0
  72. package/lib/langium/diagnostics/hydranium-langium-profiler.d.ts.map +1 -0
  73. package/lib/langium/diagnostics/hydranium-langium-profiler.js +153 -0
  74. package/lib/langium/diagnostics/hydranium-langium-profiler.js.map +1 -0
  75. package/lib/langium/diagnostics/index.d.ts +14 -0
  76. package/lib/langium/diagnostics/index.d.ts.map +1 -0
  77. package/lib/langium/diagnostics/index.js +19 -0
  78. package/lib/langium/diagnostics/index.js.map +1 -0
  79. package/lib/langium/diagnostics/log-file-token.d.ts +16 -0
  80. package/lib/langium/diagnostics/log-file-token.d.ts.map +1 -0
  81. package/lib/langium/diagnostics/log-file-token.js +25 -0
  82. package/lib/langium/diagnostics/log-file-token.js.map +1 -0
  83. package/lib/langium/diagnostics/log-preamble.d.ts +42 -0
  84. package/lib/langium/diagnostics/log-preamble.d.ts.map +1 -0
  85. package/lib/langium/diagnostics/log-preamble.js +57 -0
  86. package/lib/langium/diagnostics/log-preamble.js.map +1 -0
  87. package/lib/langium/diagnostics/logger.d.ts +104 -0
  88. package/lib/langium/diagnostics/logger.d.ts.map +1 -0
  89. package/lib/langium/diagnostics/logger.js +178 -0
  90. package/lib/langium/diagnostics/logger.js.map +1 -0
  91. package/lib/langium/diagnostics/lsp-logger.d.ts +76 -0
  92. package/lib/langium/diagnostics/lsp-logger.d.ts.map +1 -0
  93. package/lib/langium/diagnostics/lsp-logger.js +223 -0
  94. package/lib/langium/diagnostics/lsp-logger.js.map +1 -0
  95. package/lib/langium/diagnostics/server-tracer.d.ts +27 -0
  96. package/lib/langium/diagnostics/server-tracer.d.ts.map +1 -0
  97. package/lib/langium/diagnostics/server-tracer.js +66 -0
  98. package/lib/langium/diagnostics/server-tracer.js.map +1 -0
  99. package/lib/langium/document-builder/build-pipeline-integration.d.ts +88 -0
  100. package/lib/langium/document-builder/build-pipeline-integration.d.ts.map +1 -0
  101. package/lib/langium/document-builder/build-pipeline-integration.js +151 -0
  102. package/lib/langium/document-builder/build-pipeline-integration.js.map +1 -0
  103. package/lib/langium/document-builder/document-builder.d.ts +405 -0
  104. package/lib/langium/document-builder/document-builder.d.ts.map +1 -0
  105. package/lib/langium/document-builder/document-builder.js +729 -0
  106. package/lib/langium/document-builder/document-builder.js.map +1 -0
  107. package/lib/langium/document-builder/index.d.ts +12 -0
  108. package/lib/langium/document-builder/index.d.ts.map +1 -0
  109. package/lib/langium/document-builder/index.js +12 -0
  110. package/lib/langium/document-builder/index.js.map +1 -0
  111. package/lib/langium/document-builder/labeled-phase-listener.d.ts +21 -0
  112. package/lib/langium/document-builder/labeled-phase-listener.d.ts.map +1 -0
  113. package/lib/langium/document-builder/labeled-phase-listener.js +15 -0
  114. package/lib/langium/document-builder/labeled-phase-listener.js.map +1 -0
  115. package/lib/langium/documentation/comment-provider.d.ts +31 -0
  116. package/lib/langium/documentation/comment-provider.d.ts.map +1 -0
  117. package/lib/langium/documentation/comment-provider.js +36 -0
  118. package/lib/langium/documentation/comment-provider.js.map +1 -0
  119. package/lib/langium/documentation/index.d.ts +10 -0
  120. package/lib/langium/documentation/index.d.ts.map +1 -0
  121. package/lib/langium/documentation/index.js +10 -0
  122. package/lib/langium/documentation/index.js.map +1 -0
  123. package/lib/langium/integration-services.d.ts +200 -0
  124. package/lib/langium/integration-services.d.ts.map +1 -0
  125. package/lib/langium/integration-services.js +65 -0
  126. package/lib/langium/integration-services.js.map +1 -0
  127. package/lib/langium/integrity/index.d.ts +12 -0
  128. package/lib/langium/integrity/index.d.ts.map +1 -0
  129. package/lib/langium/integrity/index.js +12 -0
  130. package/lib/langium/integrity/index.js.map +1 -0
  131. package/lib/langium/integrity/integrity-contribution.d.ts +42 -0
  132. package/lib/langium/integrity/integrity-contribution.d.ts.map +1 -0
  133. package/lib/langium/integrity/integrity-contribution.js +10 -0
  134. package/lib/langium/integrity/integrity-contribution.js.map +1 -0
  135. package/lib/langium/integrity/integrity-rule.d.ts +82 -0
  136. package/lib/langium/integrity/integrity-rule.d.ts.map +1 -0
  137. package/lib/langium/integrity/integrity-rule.js +52 -0
  138. package/lib/langium/integrity/integrity-rule.js.map +1 -0
  139. package/lib/langium/integrity/integrity-service.d.ts +221 -0
  140. package/lib/langium/integrity/integrity-service.d.ts.map +1 -0
  141. package/lib/langium/integrity/integrity-service.js +328 -0
  142. package/lib/langium/integrity/integrity-service.js.map +1 -0
  143. package/lib/langium/keys/default-element-key-provider.d.ts +19 -0
  144. package/lib/langium/keys/default-element-key-provider.d.ts.map +1 -0
  145. package/lib/langium/keys/default-element-key-provider.js +18 -0
  146. package/lib/langium/keys/default-element-key-provider.js.map +1 -0
  147. package/lib/langium/keys/element-key-provider.d.ts +106 -0
  148. package/lib/langium/keys/element-key-provider.d.ts.map +1 -0
  149. package/lib/langium/keys/element-key-provider.js +25 -0
  150. package/lib/langium/keys/element-key-provider.js.map +1 -0
  151. package/lib/langium/keys/index.d.ts +13 -0
  152. package/lib/langium/keys/index.d.ts.map +1 -0
  153. package/lib/langium/keys/index.js +13 -0
  154. package/lib/langium/keys/index.js.map +1 -0
  155. package/lib/langium/keys/name-based-key-provider.d.ts +99 -0
  156. package/lib/langium/keys/name-based-key-provider.d.ts.map +1 -0
  157. package/lib/langium/keys/name-based-key-provider.js +134 -0
  158. package/lib/langium/keys/name-based-key-provider.js.map +1 -0
  159. package/lib/langium/keys/positional-key-provider.d.ts +41 -0
  160. package/lib/langium/keys/positional-key-provider.d.ts.map +1 -0
  161. package/lib/langium/keys/positional-key-provider.js +48 -0
  162. package/lib/langium/keys/positional-key-provider.js.map +1 -0
  163. package/lib/langium/labeling/index.d.ts +10 -0
  164. package/lib/langium/labeling/index.d.ts.map +1 -0
  165. package/lib/langium/labeling/index.js +10 -0
  166. package/lib/langium/labeling/index.js.map +1 -0
  167. package/lib/langium/labeling/label-provider.d.ts +79 -0
  168. package/lib/langium/labeling/label-provider.d.ts.map +1 -0
  169. package/lib/langium/labeling/label-provider.js +44 -0
  170. package/lib/langium/labeling/label-provider.js.map +1 -0
  171. package/lib/langium/language-module.d.ts +281 -0
  172. package/lib/langium/language-module.d.ts.map +1 -0
  173. package/lib/langium/language-module.js +103 -0
  174. package/lib/langium/language-module.js.map +1 -0
  175. package/lib/langium/language-types.d.ts +85 -0
  176. package/lib/langium/language-types.d.ts.map +1 -0
  177. package/lib/langium/language-types.js +173 -0
  178. package/lib/langium/language-types.js.map +1 -0
  179. package/lib/langium/model-service/index.d.ts +10 -0
  180. package/lib/langium/model-service/index.d.ts.map +1 -0
  181. package/lib/langium/model-service/index.js +10 -0
  182. package/lib/langium/model-service/index.js.map +1 -0
  183. package/lib/langium/model-service/model-service.d.ts +598 -0
  184. package/lib/langium/model-service/model-service.d.ts.map +1 -0
  185. package/lib/langium/model-service/model-service.js +889 -0
  186. package/lib/langium/model-service/model-service.js.map +1 -0
  187. package/lib/langium/module.d.ts +308 -0
  188. package/lib/langium/module.d.ts.map +1 -0
  189. package/lib/langium/module.js +165 -0
  190. package/lib/langium/module.js.map +1 -0
  191. package/lib/langium/naming/index.d.ts +11 -0
  192. package/lib/langium/naming/index.d.ts.map +1 -0
  193. package/lib/langium/naming/index.js +11 -0
  194. package/lib/langium/naming/index.js.map +1 -0
  195. package/lib/langium/naming/name-provider.d.ts +360 -0
  196. package/lib/langium/naming/name-provider.d.ts.map +1 -0
  197. package/lib/langium/naming/name-provider.js +240 -0
  198. package/lib/langium/naming/name-provider.js.map +1 -0
  199. package/lib/langium/naming/name-separator-validation.d.ts +47 -0
  200. package/lib/langium/naming/name-separator-validation.d.ts.map +1 -0
  201. package/lib/langium/naming/name-separator-validation.js +61 -0
  202. package/lib/langium/naming/name-separator-validation.js.map +1 -0
  203. package/lib/langium/project/abstract-project-manager.d.ts +242 -0
  204. package/lib/langium/project/abstract-project-manager.d.ts.map +1 -0
  205. package/lib/langium/project/abstract-project-manager.js +545 -0
  206. package/lib/langium/project/abstract-project-manager.js.map +1 -0
  207. package/lib/langium/project/index.d.ts +13 -0
  208. package/lib/langium/project/index.d.ts.map +1 -0
  209. package/lib/langium/project/index.js +13 -0
  210. package/lib/langium/project/index.js.map +1 -0
  211. package/lib/langium/project/project-change-event.d.ts +64 -0
  212. package/lib/langium/project/project-change-event.d.ts.map +1 -0
  213. package/lib/langium/project/project-change-event.js +10 -0
  214. package/lib/langium/project/project-change-event.js.map +1 -0
  215. package/lib/langium/project/project-manager.d.ts +196 -0
  216. package/lib/langium/project/project-manager.d.ts.map +1 -0
  217. package/lib/langium/project/project-manager.js +10 -0
  218. package/lib/langium/project/project-manager.js.map +1 -0
  219. package/lib/langium/project/single-project-manager.d.ts +69 -0
  220. package/lib/langium/project/single-project-manager.d.ts.map +1 -0
  221. package/lib/langium/project/single-project-manager.js +104 -0
  222. package/lib/langium/project/single-project-manager.js.map +1 -0
  223. package/lib/langium/residency/cst-residency-service.d.ts +214 -0
  224. package/lib/langium/residency/cst-residency-service.d.ts.map +1 -0
  225. package/lib/langium/residency/cst-residency-service.js +349 -0
  226. package/lib/langium/residency/cst-residency-service.js.map +1 -0
  227. package/lib/langium/residency/index.d.ts +10 -0
  228. package/lib/langium/residency/index.d.ts.map +1 -0
  229. package/lib/langium/residency/index.js +10 -0
  230. package/lib/langium/residency/index.js.map +1 -0
  231. package/lib/langium/scope/ast-node-description-provider.d.ts +122 -0
  232. package/lib/langium/scope/ast-node-description-provider.d.ts.map +1 -0
  233. package/lib/langium/scope/ast-node-description-provider.js +115 -0
  234. package/lib/langium/scope/ast-node-description-provider.js.map +1 -0
  235. package/lib/langium/scope/hydranium-scope-computation.d.ts +163 -0
  236. package/lib/langium/scope/hydranium-scope-computation.d.ts.map +1 -0
  237. package/lib/langium/scope/hydranium-scope-computation.js +220 -0
  238. package/lib/langium/scope/hydranium-scope-computation.js.map +1 -0
  239. package/lib/langium/scope/hydranium-scope-provider.d.ts +411 -0
  240. package/lib/langium/scope/hydranium-scope-provider.d.ts.map +1 -0
  241. package/lib/langium/scope/hydranium-scope-provider.js +543 -0
  242. package/lib/langium/scope/hydranium-scope-provider.js.map +1 -0
  243. package/lib/langium/scope/index.d.ts +18 -0
  244. package/lib/langium/scope/index.d.ts.map +1 -0
  245. package/lib/langium/scope/index.js +18 -0
  246. package/lib/langium/scope/index.js.map +1 -0
  247. package/lib/langium/scope/reference-builder.d.ts +125 -0
  248. package/lib/langium/scope/reference-builder.d.ts.map +1 -0
  249. package/lib/langium/scope/reference-builder.js +115 -0
  250. package/lib/langium/scope/reference-builder.js.map +1 -0
  251. package/lib/langium/scope/reference-candidate-provider.d.ts +228 -0
  252. package/lib/langium/scope/reference-candidate-provider.d.ts.map +1 -0
  253. package/lib/langium/scope/reference-candidate-provider.js +185 -0
  254. package/lib/langium/scope/reference-candidate-provider.js.map +1 -0
  255. package/lib/langium/scope/scope-extension-contribution.d.ts +32 -0
  256. package/lib/langium/scope/scope-extension-contribution.d.ts.map +1 -0
  257. package/lib/langium/scope/scope-extension-contribution.js +10 -0
  258. package/lib/langium/scope/scope-extension-contribution.js.map +1 -0
  259. package/lib/langium/scope/scope-extension-service.d.ts +149 -0
  260. package/lib/langium/scope/scope-extension-service.d.ts.map +1 -0
  261. package/lib/langium/scope/scope-extension-service.js +94 -0
  262. package/lib/langium/scope/scope-extension-service.js.map +1 -0
  263. package/lib/langium/scope/scoped-ast-node-description.d.ts +160 -0
  264. package/lib/langium/scope/scoped-ast-node-description.d.ts.map +1 -0
  265. package/lib/langium/scope/scoped-ast-node-description.js +98 -0
  266. package/lib/langium/scope/scoped-ast-node-description.js.map +1 -0
  267. package/lib/langium/scope/tier-specificity.d.ts +47 -0
  268. package/lib/langium/scope/tier-specificity.d.ts.map +1 -0
  269. package/lib/langium/scope/tier-specificity.js +83 -0
  270. package/lib/langium/scope/tier-specificity.js.map +1 -0
  271. package/lib/langium/serialization/abstract-serializer.d.ts +316 -0
  272. package/lib/langium/serialization/abstract-serializer.d.ts.map +1 -0
  273. package/lib/langium/serialization/abstract-serializer.js +351 -0
  274. package/lib/langium/serialization/abstract-serializer.js.map +1 -0
  275. package/lib/langium/serialization/index.d.ts +14 -0
  276. package/lib/langium/serialization/index.d.ts.map +1 -0
  277. package/lib/langium/serialization/index.js +14 -0
  278. package/lib/langium/serialization/index.js.map +1 -0
  279. package/lib/langium/serialization/json-serializer.d.ts +106 -0
  280. package/lib/langium/serialization/json-serializer.d.ts.map +1 -0
  281. package/lib/langium/serialization/json-serializer.js +198 -0
  282. package/lib/langium/serialization/json-serializer.js.map +1 -0
  283. package/lib/langium/serialization/serialization-util.d.ts +29 -0
  284. package/lib/langium/serialization/serialization-util.d.ts.map +1 -0
  285. package/lib/langium/serialization/serialization-util.js +37 -0
  286. package/lib/langium/serialization/serialization-util.js.map +1 -0
  287. package/lib/langium/serialization/serializer.d.ts +66 -0
  288. package/lib/langium/serialization/serializer.d.ts.map +1 -0
  289. package/lib/langium/serialization/serializer.js +10 -0
  290. package/lib/langium/serialization/serializer.js.map +1 -0
  291. package/lib/langium/serialization/yaml-serializer.d.ts +166 -0
  292. package/lib/langium/serialization/yaml-serializer.d.ts.map +1 -0
  293. package/lib/langium/serialization/yaml-serializer.js +228 -0
  294. package/lib/langium/serialization/yaml-serializer.js.map +1 -0
  295. package/lib/langium/service-registry.d.ts +220 -0
  296. package/lib/langium/service-registry.d.ts.map +1 -0
  297. package/lib/langium/service-registry.js +258 -0
  298. package/lib/langium/service-registry.js.map +1 -0
  299. package/lib/langium/shared-services.d.ts +98 -0
  300. package/lib/langium/shared-services.d.ts.map +1 -0
  301. package/lib/langium/shared-services.js +30 -0
  302. package/lib/langium/shared-services.js.map +1 -0
  303. package/lib/langium/transfer/index.d.ts +10 -0
  304. package/lib/langium/transfer/index.d.ts.map +1 -0
  305. package/lib/langium/transfer/index.js +10 -0
  306. package/lib/langium/transfer/index.js.map +1 -0
  307. package/lib/langium/transfer/transfer-encoder.d.ts +294 -0
  308. package/lib/langium/transfer/transfer-encoder.d.ts.map +1 -0
  309. package/lib/langium/transfer/transfer-encoder.js +328 -0
  310. package/lib/langium/transfer/transfer-encoder.js.map +1 -0
  311. package/lib/langium/update-rewrite/index.d.ts +14 -0
  312. package/lib/langium/update-rewrite/index.d.ts.map +1 -0
  313. package/lib/langium/update-rewrite/index.js +14 -0
  314. package/lib/langium/update-rewrite/index.js.map +1 -0
  315. package/lib/langium/update-rewrite/normalize-empty-strings.d.ts +52 -0
  316. package/lib/langium/update-rewrite/normalize-empty-strings.d.ts.map +1 -0
  317. package/lib/langium/update-rewrite/normalize-empty-strings.js +83 -0
  318. package/lib/langium/update-rewrite/normalize-empty-strings.js.map +1 -0
  319. package/lib/langium/update-rewrite/semantic-root-rewrite.d.ts +37 -0
  320. package/lib/langium/update-rewrite/semantic-root-rewrite.d.ts.map +1 -0
  321. package/lib/langium/update-rewrite/semantic-root-rewrite.js +51 -0
  322. package/lib/langium/update-rewrite/semantic-root-rewrite.js.map +1 -0
  323. package/lib/langium/update-rewrite/update-rewrite-contribution.d.ts +42 -0
  324. package/lib/langium/update-rewrite/update-rewrite-contribution.d.ts.map +1 -0
  325. package/lib/langium/update-rewrite/update-rewrite-contribution.js +10 -0
  326. package/lib/langium/update-rewrite/update-rewrite-contribution.js.map +1 -0
  327. package/lib/langium/update-rewrite/update-rewrite-service.d.ts +89 -0
  328. package/lib/langium/update-rewrite/update-rewrite-service.d.ts.map +1 -0
  329. package/lib/langium/update-rewrite/update-rewrite-service.js +75 -0
  330. package/lib/langium/update-rewrite/update-rewrite-service.js.map +1 -0
  331. package/lib/langium/update-rewrite/update-rewrite.d.ts +59 -0
  332. package/lib/langium/update-rewrite/update-rewrite.d.ts.map +1 -0
  333. package/lib/langium/update-rewrite/update-rewrite.js +10 -0
  334. package/lib/langium/update-rewrite/update-rewrite.js.map +1 -0
  335. package/lib/langium/validation/document-validator.d.ts +106 -0
  336. package/lib/langium/validation/document-validator.d.ts.map +1 -0
  337. package/lib/langium/validation/document-validator.js +118 -0
  338. package/lib/langium/validation/document-validator.js.map +1 -0
  339. package/lib/langium/validation/index.d.ts +12 -0
  340. package/lib/langium/validation/index.d.ts.map +1 -0
  341. package/lib/langium/validation/index.js +12 -0
  342. package/lib/langium/validation/index.js.map +1 -0
  343. package/lib/langium/validation/validation-contribution-collector.d.ts +34 -0
  344. package/lib/langium/validation/validation-contribution-collector.d.ts.map +1 -0
  345. package/lib/langium/validation/validation-contribution-collector.js +51 -0
  346. package/lib/langium/validation/validation-contribution-collector.js.map +1 -0
  347. package/lib/langium/validation/validation-contribution.d.ts +36 -0
  348. package/lib/langium/validation/validation-contribution.d.ts.map +1 -0
  349. package/lib/langium/validation/validation-contribution.js +10 -0
  350. package/lib/langium/validation/validation-contribution.js.map +1 -0
  351. package/lib/langium/workspace/additional-document-contribution.d.ts +68 -0
  352. package/lib/langium/workspace/additional-document-contribution.d.ts.map +1 -0
  353. package/lib/langium/workspace/additional-document-contribution.js +23 -0
  354. package/lib/langium/workspace/additional-document-contribution.js.map +1 -0
  355. package/lib/langium/workspace/document-uri-policy.d.ts +151 -0
  356. package/lib/langium/workspace/document-uri-policy.d.ts.map +1 -0
  357. package/lib/langium/workspace/document-uri-policy.js +121 -0
  358. package/lib/langium/workspace/document-uri-policy.js.map +1 -0
  359. package/lib/langium/workspace/file-system-provider.d.ts +30 -0
  360. package/lib/langium/workspace/file-system-provider.d.ts.map +1 -0
  361. package/lib/langium/workspace/file-system-provider.js +41 -0
  362. package/lib/langium/workspace/file-system-provider.js.map +1 -0
  363. package/lib/langium/workspace/hydranium-langium-document-factory.d.ts +45 -0
  364. package/lib/langium/workspace/hydranium-langium-document-factory.d.ts.map +1 -0
  365. package/lib/langium/workspace/hydranium-langium-document-factory.js +64 -0
  366. package/lib/langium/workspace/hydranium-langium-document-factory.js.map +1 -0
  367. package/lib/langium/workspace/hydranium-workspace-lock.d.ts +31 -0
  368. package/lib/langium/workspace/hydranium-workspace-lock.d.ts.map +1 -0
  369. package/lib/langium/workspace/hydranium-workspace-lock.js +33 -0
  370. package/lib/langium/workspace/hydranium-workspace-lock.js.map +1 -0
  371. package/lib/langium/workspace/hydranium-workspace-manager.d.ts +232 -0
  372. package/lib/langium/workspace/hydranium-workspace-manager.d.ts.map +1 -0
  373. package/lib/langium/workspace/hydranium-workspace-manager.js +368 -0
  374. package/lib/langium/workspace/hydranium-workspace-manager.js.map +1 -0
  375. package/lib/langium/workspace/in-memory-file-system-provider.d.ts +127 -0
  376. package/lib/langium/workspace/in-memory-file-system-provider.d.ts.map +1 -0
  377. package/lib/langium/workspace/in-memory-file-system-provider.js +195 -0
  378. package/lib/langium/workspace/in-memory-file-system-provider.js.map +1 -0
  379. package/lib/langium/workspace/index-manager.d.ts +142 -0
  380. package/lib/langium/workspace/index-manager.d.ts.map +1 -0
  381. package/lib/langium/workspace/index-manager.js +245 -0
  382. package/lib/langium/workspace/index-manager.js.map +1 -0
  383. package/lib/langium/workspace/index.d.ts +23 -0
  384. package/lib/langium/workspace/index.d.ts.map +1 -0
  385. package/lib/langium/workspace/index.js +23 -0
  386. package/lib/langium/workspace/index.js.map +1 -0
  387. package/lib/langium/workspace/initialize-workspace.d.ts +63 -0
  388. package/lib/langium/workspace/initialize-workspace.d.ts.map +1 -0
  389. package/lib/langium/workspace/initialize-workspace.js +88 -0
  390. package/lib/langium/workspace/initialize-workspace.js.map +1 -0
  391. package/lib/langium/workspace/langium-documents.d.ts +47 -0
  392. package/lib/langium/workspace/langium-documents.d.ts.map +1 -0
  393. package/lib/langium/workspace/langium-documents.js +85 -0
  394. package/lib/langium/workspace/langium-documents.js.map +1 -0
  395. package/lib/langium/workspace/persistent-file-system-provider.d.ts +207 -0
  396. package/lib/langium/workspace/persistent-file-system-provider.d.ts.map +1 -0
  397. package/lib/langium/workspace/persistent-file-system-provider.js +208 -0
  398. package/lib/langium/workspace/persistent-file-system-provider.js.map +1 -0
  399. package/lib/langium/workspace/synthetic.d.ts +38 -0
  400. package/lib/langium/workspace/synthetic.d.ts.map +1 -0
  401. package/lib/langium/workspace/synthetic.js +58 -0
  402. package/lib/langium/workspace/synthetic.js.map +1 -0
  403. package/lib/langium/workspace/virtual-document.d.ts +78 -0
  404. package/lib/langium/workspace/virtual-document.d.ts.map +1 -0
  405. package/lib/langium/workspace/virtual-document.js +89 -0
  406. package/lib/langium/workspace/virtual-document.js.map +1 -0
  407. package/lib/langium/workspace/write-lock-scope.d.ts +69 -0
  408. package/lib/langium/workspace/write-lock-scope.d.ts.map +1 -0
  409. package/lib/langium/workspace/write-lock-scope.js +54 -0
  410. package/lib/langium/workspace/write-lock-scope.js.map +1 -0
  411. package/lib/launcher/index.d.ts +10 -0
  412. package/lib/launcher/index.d.ts.map +1 -0
  413. package/lib/launcher/index.js +12 -0
  414. package/lib/launcher/index.js.map +1 -0
  415. package/lib/launcher/integrated-server.d.ts +28 -0
  416. package/lib/launcher/integrated-server.d.ts.map +1 -0
  417. package/lib/launcher/integrated-server.js +10 -0
  418. package/lib/launcher/integrated-server.js.map +1 -0
  419. package/lib/lsp/completion/hydranium-completion-provider.d.ts +89 -0
  420. package/lib/lsp/completion/hydranium-completion-provider.d.ts.map +1 -0
  421. package/lib/lsp/completion/hydranium-completion-provider.js +123 -0
  422. package/lib/lsp/completion/hydranium-completion-provider.js.map +1 -0
  423. package/lib/lsp/hydranium-document-update-handler.d.ts +204 -0
  424. package/lib/lsp/hydranium-document-update-handler.d.ts.map +1 -0
  425. package/lib/lsp/hydranium-document-update-handler.js +288 -0
  426. package/lib/lsp/hydranium-document-update-handler.js.map +1 -0
  427. package/lib/lsp/index.d.ts +23 -0
  428. package/lib/lsp/index.d.ts.map +1 -0
  429. package/lib/lsp/index.js +23 -0
  430. package/lib/lsp/index.js.map +1 -0
  431. package/lib/lsp/instrument-connection.d.ts +36 -0
  432. package/lib/lsp/instrument-connection.d.ts.map +1 -0
  433. package/lib/lsp/instrument-connection.js +62 -0
  434. package/lib/lsp/instrument-connection.js.map +1 -0
  435. package/lib/lsp/language-module.d.ts +53 -0
  436. package/lib/lsp/language-module.d.ts.map +1 -0
  437. package/lib/lsp/language-module.js +28 -0
  438. package/lib/lsp/language-module.js.map +1 -0
  439. package/lib/lsp/semantic-token-provider.d.ts +131 -0
  440. package/lib/lsp/semantic-token-provider.d.ts.map +1 -0
  441. package/lib/lsp/semantic-token-provider.js +148 -0
  442. package/lib/lsp/semantic-token-provider.js.map +1 -0
  443. package/lib/lsp/shared-module.d.ts +76 -0
  444. package/lib/lsp/shared-module.d.ts.map +1 -0
  445. package/lib/lsp/shared-module.js +33 -0
  446. package/lib/lsp/shared-module.js.map +1 -0
  447. package/lib/lsp/start-language-server.d.ts +43 -0
  448. package/lib/lsp/start-language-server.d.ts.map +1 -0
  449. package/lib/lsp/start-language-server.js +60 -0
  450. package/lib/lsp/start-language-server.js.map +1 -0
  451. package/lib/node/ast-ground-truth.d.ts +57 -0
  452. package/lib/node/ast-ground-truth.d.ts.map +1 -0
  453. package/lib/node/ast-ground-truth.js +46 -0
  454. package/lib/node/ast-ground-truth.js.map +1 -0
  455. package/lib/node/event-loop-monitor.d.ts +40 -0
  456. package/lib/node/event-loop-monitor.d.ts.map +1 -0
  457. package/lib/node/event-loop-monitor.js +62 -0
  458. package/lib/node/event-loop-monitor.js.map +1 -0
  459. package/lib/node/index.d.ts +29 -0
  460. package/lib/node/index.d.ts.map +1 -0
  461. package/lib/node/index.js +50 -0
  462. package/lib/node/index.js.map +1 -0
  463. package/lib/node/latency-from-env.d.ts +32 -0
  464. package/lib/node/latency-from-env.d.ts.map +1 -0
  465. package/lib/node/latency-from-env.js +36 -0
  466. package/lib/node/latency-from-env.js.map +1 -0
  467. package/lib/node/lint-grammar.d.ts +87 -0
  468. package/lib/node/lint-grammar.d.ts.map +1 -0
  469. package/lib/node/lint-grammar.js +124 -0
  470. package/lib/node/lint-grammar.js.map +1 -0
  471. package/lib/node/log-file-sink.d.ts +22 -0
  472. package/lib/node/log-file-sink.d.ts.map +1 -0
  473. package/lib/node/log-file-sink.js +43 -0
  474. package/lib/node/log-file-sink.js.map +1 -0
  475. package/lib/node/log-preamble-node.d.ts +28 -0
  476. package/lib/node/log-preamble-node.d.ts.map +1 -0
  477. package/lib/node/log-preamble-node.js +55 -0
  478. package/lib/node/log-preamble-node.js.map +1 -0
  479. package/lib/node/measure-memory.d.ts +86 -0
  480. package/lib/node/measure-memory.d.ts.map +1 -0
  481. package/lib/node/measure-memory.js +128 -0
  482. package/lib/node/measure-memory.js.map +1 -0
  483. package/lib/node/memory-monitor.d.ts +42 -0
  484. package/lib/node/memory-monitor.d.ts.map +1 -0
  485. package/lib/node/memory-monitor.js +83 -0
  486. package/lib/node/memory-monitor.js.map +1 -0
  487. package/lib/node/node-file-system-provider.d.ts +112 -0
  488. package/lib/node/node-file-system-provider.d.ts.map +1 -0
  489. package/lib/node/node-file-system-provider.js +230 -0
  490. package/lib/node/node-file-system-provider.js.map +1 -0
  491. package/lib/node/process-memory.d.ts +66 -0
  492. package/lib/node/process-memory.d.ts.map +1 -0
  493. package/lib/node/process-memory.js +252 -0
  494. package/lib/node/process-memory.js.map +1 -0
  495. package/lib/node/profile-capture.d.ts +118 -0
  496. package/lib/node/profile-capture.d.ts.map +1 -0
  497. package/lib/node/profile-capture.js +315 -0
  498. package/lib/node/profile-capture.js.map +1 -0
  499. package/lib/node/profile-digest.d.ts +49 -0
  500. package/lib/node/profile-digest.d.ts.map +1 -0
  501. package/lib/node/profile-digest.js +74 -0
  502. package/lib/node/profile-digest.js.map +1 -0
  503. package/lib/node/profiling-run.d.ts +80 -0
  504. package/lib/node/profiling-run.d.ts.map +1 -0
  505. package/lib/node/profiling-run.js +183 -0
  506. package/lib/node/profiling-run.js.map +1 -0
  507. package/lib/node/reflect-grammar.d.ts +109 -0
  508. package/lib/node/reflect-grammar.d.ts.map +1 -0
  509. package/lib/node/reflect-grammar.js +96 -0
  510. package/lib/node/reflect-grammar.js.map +1 -0
  511. package/lib/node/server-diagnostics.d.ts +43 -0
  512. package/lib/node/server-diagnostics.d.ts.map +1 -0
  513. package/lib/node/server-diagnostics.js +46 -0
  514. package/lib/node/server-diagnostics.js.map +1 -0
  515. package/lib/node/server-state-snapshot.d.ts +48 -0
  516. package/lib/node/server-state-snapshot.d.ts.map +1 -0
  517. package/lib/node/server-state-snapshot.js +139 -0
  518. package/lib/node/server-state-snapshot.js.map +1 -0
  519. package/lib/node/socket-launcher.d.ts +106 -0
  520. package/lib/node/socket-launcher.d.ts.map +1 -0
  521. package/lib/node/socket-launcher.js +138 -0
  522. package/lib/node/socket-launcher.js.map +1 -0
  523. package/lib/node/stdio-launcher.d.ts +88 -0
  524. package/lib/node/stdio-launcher.d.ts.map +1 -0
  525. package/lib/node/stdio-launcher.js +83 -0
  526. package/lib/node/stdio-launcher.js.map +1 -0
  527. package/lib/node/validate-workspace.d.ts +80 -0
  528. package/lib/node/validate-workspace.d.ts.map +1 -0
  529. package/lib/node/validate-workspace.js +72 -0
  530. package/lib/node/validate-workspace.js.map +1 -0
  531. package/lib/node/write-lock-scope-node.d.ts +27 -0
  532. package/lib/node/write-lock-scope-node.d.ts.map +1 -0
  533. package/lib/node/write-lock-scope-node.js +38 -0
  534. package/lib/node/write-lock-scope-node.js.map +1 -0
  535. package/lib/testing/ast-snapshot.d.ts +38 -0
  536. package/lib/testing/ast-snapshot.d.ts.map +1 -0
  537. package/lib/testing/ast-snapshot.js +78 -0
  538. package/lib/testing/ast-snapshot.js.map +1 -0
  539. package/lib/testing/document-uri-policy-conformance.d.ts +65 -0
  540. package/lib/testing/document-uri-policy-conformance.d.ts.map +1 -0
  541. package/lib/testing/document-uri-policy-conformance.js +69 -0
  542. package/lib/testing/document-uri-policy-conformance.js.map +1 -0
  543. package/lib/testing/fake-description.d.ts +35 -0
  544. package/lib/testing/fake-description.d.ts.map +1 -0
  545. package/lib/testing/fake-description.js +38 -0
  546. package/lib/testing/fake-description.js.map +1 -0
  547. package/lib/testing/fake-document.d.ts +71 -0
  548. package/lib/testing/fake-document.d.ts.map +1 -0
  549. package/lib/testing/fake-document.js +85 -0
  550. package/lib/testing/fake-document.js.map +1 -0
  551. package/lib/testing/fake-reflection.d.ts +29 -0
  552. package/lib/testing/fake-reflection.d.ts.map +1 -0
  553. package/lib/testing/fake-reflection.js +30 -0
  554. package/lib/testing/fake-reflection.js.map +1 -0
  555. package/lib/testing/index.d.ts +44 -0
  556. package/lib/testing/index.d.ts.map +1 -0
  557. package/lib/testing/index.js +44 -0
  558. package/lib/testing/index.js.map +1 -0
  559. package/lib/testing/langium-test-helpers.d.ts +26 -0
  560. package/lib/testing/langium-test-helpers.d.ts.map +1 -0
  561. package/lib/testing/langium-test-helpers.js +26 -0
  562. package/lib/testing/langium-test-helpers.js.map +1 -0
  563. package/lib/testing/make-noop-language-services.d.ts +39 -0
  564. package/lib/testing/make-noop-language-services.d.ts.map +1 -0
  565. package/lib/testing/make-noop-language-services.js +30 -0
  566. package/lib/testing/make-noop-language-services.js.map +1 -0
  567. package/lib/testing/make-noop-shared-services.d.ts +61 -0
  568. package/lib/testing/make-noop-shared-services.d.ts.map +1 -0
  569. package/lib/testing/make-noop-shared-services.js +49 -0
  570. package/lib/testing/make-noop-shared-services.js.map +1 -0
  571. package/lib/testing/make-test-services.d.ts +217 -0
  572. package/lib/testing/make-test-services.d.ts.map +1 -0
  573. package/lib/testing/make-test-services.js +128 -0
  574. package/lib/testing/make-test-services.js.map +1 -0
  575. package/lib/testing/make-test-tracer.d.ts +67 -0
  576. package/lib/testing/make-test-tracer.d.ts.map +1 -0
  577. package/lib/testing/make-test-tracer.js +68 -0
  578. package/lib/testing/make-test-tracer.js.map +1 -0
  579. package/lib/testing/node/generated-workspace.d.ts +95 -0
  580. package/lib/testing/node/generated-workspace.d.ts.map +1 -0
  581. package/lib/testing/node/generated-workspace.js +134 -0
  582. package/lib/testing/node/generated-workspace.js.map +1 -0
  583. package/lib/testing/node/golden-corpus.d.ts +50 -0
  584. package/lib/testing/node/golden-corpus.d.ts.map +1 -0
  585. package/lib/testing/node/golden-corpus.js +80 -0
  586. package/lib/testing/node/golden-corpus.js.map +1 -0
  587. package/lib/testing/node/index.d.ts +28 -0
  588. package/lib/testing/node/index.d.ts.map +1 -0
  589. package/lib/testing/node/index.js +28 -0
  590. package/lib/testing/node/index.js.map +1 -0
  591. package/lib/testing/node/lsp-harness.d.ts +139 -0
  592. package/lib/testing/node/lsp-harness.d.ts.map +1 -0
  593. package/lib/testing/node/lsp-harness.js +119 -0
  594. package/lib/testing/node/lsp-harness.js.map +1 -0
  595. package/lib/testing/node/lsp-server-connection.d.ts +232 -0
  596. package/lib/testing/node/lsp-server-connection.d.ts.map +1 -0
  597. package/lib/testing/node/lsp-server-connection.js +304 -0
  598. package/lib/testing/node/lsp-server-connection.js.map +1 -0
  599. package/lib/testing/node/scratch-workspace.d.ts +60 -0
  600. package/lib/testing/node/scratch-workspace.d.ts.map +1 -0
  601. package/lib/testing/node/scratch-workspace.js +87 -0
  602. package/lib/testing/node/scratch-workspace.js.map +1 -0
  603. package/lib/testing/node/spawned-server.d.ts +170 -0
  604. package/lib/testing/node/spawned-server.d.ts.map +1 -0
  605. package/lib/testing/node/spawned-server.js +265 -0
  606. package/lib/testing/node/spawned-server.js.map +1 -0
  607. package/lib/testing/parse-semantic-root.d.ts +83 -0
  608. package/lib/testing/parse-semantic-root.d.ts.map +1 -0
  609. package/lib/testing/parse-semantic-root.js +119 -0
  610. package/lib/testing/parse-semantic-root.js.map +1 -0
  611. package/lib/testing/playwright/browser-capture-bridge.d.ts +80 -0
  612. package/lib/testing/playwright/browser-capture-bridge.d.ts.map +1 -0
  613. package/lib/testing/playwright/browser-capture-bridge.js +161 -0
  614. package/lib/testing/playwright/browser-capture-bridge.js.map +1 -0
  615. package/lib/testing/playwright/e2e-profiling.d.ts +132 -0
  616. package/lib/testing/playwright/e2e-profiling.d.ts.map +1 -0
  617. package/lib/testing/playwright/e2e-profiling.js +270 -0
  618. package/lib/testing/playwright/e2e-profiling.js.map +1 -0
  619. package/lib/testing/playwright/index.d.ts +13 -0
  620. package/lib/testing/playwright/index.d.ts.map +1 -0
  621. package/lib/testing/playwright/index.js +16 -0
  622. package/lib/testing/playwright/index.js.map +1 -0
  623. package/lib/testing/playwright/server-log-capture.d.ts +230 -0
  624. package/lib/testing/playwright/server-log-capture.d.ts.map +1 -0
  625. package/lib/testing/playwright/server-log-capture.js +336 -0
  626. package/lib/testing/playwright/server-log-capture.js.map +1 -0
  627. package/lib/testing/playwright/server-log-fixture.d.ts +36 -0
  628. package/lib/testing/playwright/server-log-fixture.d.ts.map +1 -0
  629. package/lib/testing/playwright/server-log-fixture.js +38 -0
  630. package/lib/testing/playwright/server-log-fixture.js.map +1 -0
  631. package/lib/testing/playwright/server-log-rename-reporter.d.ts +22 -0
  632. package/lib/testing/playwright/server-log-rename-reporter.d.ts.map +1 -0
  633. package/lib/testing/playwright/server-log-rename-reporter.js +26 -0
  634. package/lib/testing/playwright/server-log-rename-reporter.js.map +1 -0
  635. package/lib/testing/run-update-pipeline.d.ts +99 -0
  636. package/lib/testing/run-update-pipeline.d.ts.map +1 -0
  637. package/lib/testing/run-update-pipeline.js +24 -0
  638. package/lib/testing/run-update-pipeline.js.map +1 -0
  639. package/lib/testing/stub-ast-document-manager.d.ts +82 -0
  640. package/lib/testing/stub-ast-document-manager.d.ts.map +1 -0
  641. package/lib/testing/stub-ast-document-manager.js +125 -0
  642. package/lib/testing/stub-ast-document-manager.js.map +1 -0
  643. package/lib/testing/stub-document-builder.d.ts +99 -0
  644. package/lib/testing/stub-document-builder.d.ts.map +1 -0
  645. package/lib/testing/stub-document-builder.js +142 -0
  646. package/lib/testing/stub-document-builder.js.map +1 -0
  647. package/lib/testing/stub-hydranium-text-documents.d.ts +125 -0
  648. package/lib/testing/stub-hydranium-text-documents.d.ts.map +1 -0
  649. package/lib/testing/stub-hydranium-text-documents.js +164 -0
  650. package/lib/testing/stub-hydranium-text-documents.js.map +1 -0
  651. package/lib/testing/stub-index-manager.d.ts +40 -0
  652. package/lib/testing/stub-index-manager.d.ts.map +1 -0
  653. package/lib/testing/stub-index-manager.js +38 -0
  654. package/lib/testing/stub-index-manager.js.map +1 -0
  655. package/lib/testing/stub-langium-documents.d.ts +53 -0
  656. package/lib/testing/stub-langium-documents.d.ts.map +1 -0
  657. package/lib/testing/stub-langium-documents.js +62 -0
  658. package/lib/testing/stub-langium-documents.js.map +1 -0
  659. package/lib/testing/stub-model-service.d.ts +31 -0
  660. package/lib/testing/stub-model-service.d.ts.map +1 -0
  661. package/lib/testing/stub-model-service.js +45 -0
  662. package/lib/testing/stub-model-service.js.map +1 -0
  663. package/lib/testing/stub-project-manager.d.ts +43 -0
  664. package/lib/testing/stub-project-manager.d.ts.map +1 -0
  665. package/lib/testing/stub-project-manager.js +125 -0
  666. package/lib/testing/stub-project-manager.js.map +1 -0
  667. package/lib/testing/stub-self-save-registry.d.ts +31 -0
  668. package/lib/testing/stub-self-save-registry.d.ts.map +1 -0
  669. package/lib/testing/stub-self-save-registry.js +23 -0
  670. package/lib/testing/stub-self-save-registry.js.map +1 -0
  671. package/lib/testing/stub-service-registry.d.ts +95 -0
  672. package/lib/testing/stub-service-registry.d.ts.map +1 -0
  673. package/lib/testing/stub-service-registry.js +108 -0
  674. package/lib/testing/stub-service-registry.js.map +1 -0
  675. package/lib/testing/stub-writable-file-system.d.ts +42 -0
  676. package/lib/testing/stub-writable-file-system.d.ts.map +1 -0
  677. package/lib/testing/stub-writable-file-system.js +26 -0
  678. package/lib/testing/stub-writable-file-system.js.map +1 -0
  679. package/lib/util/connection-liveness.d.ts +25 -0
  680. package/lib/util/connection-liveness.d.ts.map +1 -0
  681. package/lib/util/connection-liveness.js +46 -0
  682. package/lib/util/connection-liveness.js.map +1 -0
  683. package/lib/util/environment.d.ts +53 -0
  684. package/lib/util/environment.d.ts.map +1 -0
  685. package/lib/util/environment.js +78 -0
  686. package/lib/util/environment.js.map +1 -0
  687. package/lib/util/index.d.ts +13 -0
  688. package/lib/util/index.d.ts.map +1 -0
  689. package/lib/util/index.js +18 -0
  690. package/lib/util/index.js.map +1 -0
  691. package/lib/util/registry.d.ts +88 -0
  692. package/lib/util/registry.d.ts.map +1 -0
  693. package/lib/util/registry.js +105 -0
  694. package/lib/util/registry.js.map +1 -0
  695. package/package.json +134 -0
  696. package/src/documents/ast-document-manager.ts +455 -0
  697. package/src/documents/client-ids.ts +33 -0
  698. package/src/documents/hydranium-text-documents.ts +1142 -0
  699. package/src/documents/index.ts +14 -0
  700. package/src/documents/language-client-text-shadow.ts +175 -0
  701. package/src/documents/self-save-registry.ts +81 -0
  702. package/src/index.ts +39 -0
  703. package/src/langium/ast-extension/ast-extension-contribution.ts +35 -0
  704. package/src/langium/ast-extension/ast-extension-service.ts +311 -0
  705. package/src/langium/ast-extension/ast-node-builder.ts +125 -0
  706. package/src/langium/ast-extension/index.ts +12 -0
  707. package/src/langium/bootstrap.ts +600 -0
  708. package/src/langium/build-phase-pass/build-phase-pass-service.ts +141 -0
  709. package/src/langium/build-phase-pass/build-phase-pass.ts +123 -0
  710. package/src/langium/build-phase-pass/index.ts +11 -0
  711. package/src/langium/config/index.ts +10 -0
  712. package/src/langium/config/settings.ts +353 -0
  713. package/src/langium/diagnostics/hydranium-langium-profiler.ts +187 -0
  714. package/src/langium/diagnostics/index.ts +19 -0
  715. package/src/langium/diagnostics/log-file-token.ts +26 -0
  716. package/src/langium/diagnostics/log-preamble.ts +87 -0
  717. package/src/langium/diagnostics/logger.ts +246 -0
  718. package/src/langium/diagnostics/lsp-logger.ts +277 -0
  719. package/src/langium/diagnostics/server-tracer.ts +73 -0
  720. package/src/langium/document-builder/build-pipeline-integration.ts +193 -0
  721. package/src/langium/document-builder/document-builder.ts +839 -0
  722. package/src/langium/document-builder/index.ts +12 -0
  723. package/src/langium/document-builder/labeled-phase-listener.ts +26 -0
  724. package/src/langium/documentation/comment-provider.ts +37 -0
  725. package/src/langium/documentation/index.ts +10 -0
  726. package/src/langium/integration-services.ts +281 -0
  727. package/src/langium/integrity/index.ts +12 -0
  728. package/src/langium/integrity/integrity-contribution.ts +44 -0
  729. package/src/langium/integrity/integrity-rule.ts +100 -0
  730. package/src/langium/integrity/integrity-service.ts +423 -0
  731. package/src/langium/keys/default-element-key-provider.ts +20 -0
  732. package/src/langium/keys/element-key-provider.ts +114 -0
  733. package/src/langium/keys/index.ts +13 -0
  734. package/src/langium/keys/name-based-key-provider.ts +146 -0
  735. package/src/langium/keys/positional-key-provider.ts +57 -0
  736. package/src/langium/labeling/index.ts +10 -0
  737. package/src/langium/labeling/label-provider.ts +110 -0
  738. package/src/langium/language-module.ts +367 -0
  739. package/src/langium/language-types.ts +214 -0
  740. package/src/langium/model-service/index.ts +10 -0
  741. package/src/langium/model-service/model-service.ts +1051 -0
  742. package/src/langium/module.ts +446 -0
  743. package/src/langium/naming/index.ts +11 -0
  744. package/src/langium/naming/name-provider.ts +533 -0
  745. package/src/langium/naming/name-separator-validation.ts +73 -0
  746. package/src/langium/project/abstract-project-manager.ts +630 -0
  747. package/src/langium/project/index.ts +13 -0
  748. package/src/langium/project/project-change-event.ts +66 -0
  749. package/src/langium/project/project-manager.ts +221 -0
  750. package/src/langium/project/single-project-manager.ts +126 -0
  751. package/src/langium/residency/cst-residency-service.ts +412 -0
  752. package/src/langium/residency/index.ts +10 -0
  753. package/src/langium/scope/ast-node-description-provider.ts +141 -0
  754. package/src/langium/scope/hydranium-scope-computation.ts +246 -0
  755. package/src/langium/scope/hydranium-scope-provider.ts +659 -0
  756. package/src/langium/scope/index.ts +18 -0
  757. package/src/langium/scope/reference-builder.ts +194 -0
  758. package/src/langium/scope/reference-candidate-provider.ts +314 -0
  759. package/src/langium/scope/scope-extension-contribution.ts +34 -0
  760. package/src/langium/scope/scope-extension-service.ts +207 -0
  761. package/src/langium/scope/scoped-ast-node-description.ts +174 -0
  762. package/src/langium/scope/tier-specificity.ts +89 -0
  763. package/src/langium/serialization/abstract-serializer.ts +474 -0
  764. package/src/langium/serialization/index.ts +14 -0
  765. package/src/langium/serialization/json-serializer.ts +264 -0
  766. package/src/langium/serialization/serialization-util.ts +40 -0
  767. package/src/langium/serialization/serializer.ts +68 -0
  768. package/src/langium/serialization/yaml-serializer.ts +348 -0
  769. package/src/langium/service-registry.ts +323 -0
  770. package/src/langium/shared-services.ts +107 -0
  771. package/src/langium/transfer/index.ts +10 -0
  772. package/src/langium/transfer/transfer-encoder.ts +434 -0
  773. package/src/langium/update-rewrite/index.ts +14 -0
  774. package/src/langium/update-rewrite/normalize-empty-strings.ts +86 -0
  775. package/src/langium/update-rewrite/semantic-root-rewrite.ts +57 -0
  776. package/src/langium/update-rewrite/update-rewrite-contribution.ts +44 -0
  777. package/src/langium/update-rewrite/update-rewrite-service.ts +129 -0
  778. package/src/langium/update-rewrite/update-rewrite.ts +60 -0
  779. package/src/langium/validation/document-validator.ts +188 -0
  780. package/src/langium/validation/index.ts +12 -0
  781. package/src/langium/validation/validation-contribution-collector.ts +61 -0
  782. package/src/langium/validation/validation-contribution.ts +38 -0
  783. package/src/langium/workspace/additional-document-contribution.ts +80 -0
  784. package/src/langium/workspace/document-uri-policy.ts +187 -0
  785. package/src/langium/workspace/file-system-provider.ts +52 -0
  786. package/src/langium/workspace/hydranium-langium-document-factory.ts +78 -0
  787. package/src/langium/workspace/hydranium-workspace-lock.ts +35 -0
  788. package/src/langium/workspace/hydranium-workspace-manager.ts +412 -0
  789. package/src/langium/workspace/in-memory-file-system-provider.ts +241 -0
  790. package/src/langium/workspace/index-manager.ts +266 -0
  791. package/src/langium/workspace/index.ts +23 -0
  792. package/src/langium/workspace/initialize-workspace.ts +102 -0
  793. package/src/langium/workspace/langium-documents.ts +94 -0
  794. package/src/langium/workspace/persistent-file-system-provider.ts +287 -0
  795. package/src/langium/workspace/synthetic.ts +63 -0
  796. package/src/langium/workspace/virtual-document.ts +94 -0
  797. package/src/langium/workspace/write-lock-scope.ts +88 -0
  798. package/src/launcher/index.ts +12 -0
  799. package/src/launcher/integrated-server.ts +28 -0
  800. package/src/lsp/completion/hydranium-completion-provider.ts +132 -0
  801. package/src/lsp/hydranium-document-update-handler.ts +345 -0
  802. package/src/lsp/index.ts +24 -0
  803. package/src/lsp/instrument-connection.ts +66 -0
  804. package/src/lsp/language-module.ts +64 -0
  805. package/src/lsp/semantic-token-provider.ts +215 -0
  806. package/src/lsp/shared-module.ts +88 -0
  807. package/src/lsp/start-language-server.ts +68 -0
  808. package/src/node/ast-ground-truth.ts +76 -0
  809. package/src/node/event-loop-monitor.ts +89 -0
  810. package/src/node/index.ts +53 -0
  811. package/src/node/latency-from-env.ts +39 -0
  812. package/src/node/lint-grammar.ts +189 -0
  813. package/src/node/log-file-sink.ts +43 -0
  814. package/src/node/log-preamble-node.ts +63 -0
  815. package/src/node/measure-memory.ts +196 -0
  816. package/src/node/memory-monitor.ts +103 -0
  817. package/src/node/node-file-system-provider.ts +252 -0
  818. package/src/node/process-memory.ts +299 -0
  819. package/src/node/profile-capture.ts +377 -0
  820. package/src/node/profile-digest.ts +112 -0
  821. package/src/node/profiling-run.ts +236 -0
  822. package/src/node/reflect-grammar.ts +182 -0
  823. package/src/node/server-diagnostics.ts +63 -0
  824. package/src/node/server-state-snapshot.ts +192 -0
  825. package/src/node/socket-launcher.ts +210 -0
  826. package/src/node/stdio-launcher.ts +150 -0
  827. package/src/node/validate-workspace.ts +133 -0
  828. package/src/node/write-lock-scope-node.ts +41 -0
  829. package/src/testing/ast-snapshot.ts +88 -0
  830. package/src/testing/document-uri-policy-conformance.ts +104 -0
  831. package/src/testing/fake-description.ts +52 -0
  832. package/src/testing/fake-document.ts +120 -0
  833. package/src/testing/fake-reflection.ts +39 -0
  834. package/src/testing/index.ts +45 -0
  835. package/src/testing/langium-test-helpers.ts +26 -0
  836. package/src/testing/make-noop-language-services.ts +47 -0
  837. package/src/testing/make-noop-shared-services.ts +78 -0
  838. package/src/testing/make-test-services.ts +356 -0
  839. package/src/testing/make-test-tracer.ts +92 -0
  840. package/src/testing/node/generated-workspace.ts +222 -0
  841. package/src/testing/node/golden-corpus.ts +114 -0
  842. package/src/testing/node/index.ts +29 -0
  843. package/src/testing/node/lsp-harness.ts +230 -0
  844. package/src/testing/node/lsp-server-connection.ts +575 -0
  845. package/src/testing/node/scratch-workspace.ts +137 -0
  846. package/src/testing/node/spawned-server.ts +447 -0
  847. package/src/testing/parse-semantic-root.ts +150 -0
  848. package/src/testing/playwright/browser-capture-bridge.ts +258 -0
  849. package/src/testing/playwright/e2e-profiling.ts +362 -0
  850. package/src/testing/playwright/index.ts +16 -0
  851. package/src/testing/playwright/server-log-capture.ts +433 -0
  852. package/src/testing/playwright/server-log-fixture.ts +57 -0
  853. package/src/testing/playwright/server-log-rename-reporter.ts +29 -0
  854. package/src/testing/run-update-pipeline.ts +113 -0
  855. package/src/testing/stub-ast-document-manager.ts +224 -0
  856. package/src/testing/stub-document-builder.ts +242 -0
  857. package/src/testing/stub-hydranium-text-documents.ts +270 -0
  858. package/src/testing/stub-index-manager.ts +79 -0
  859. package/src/testing/stub-langium-documents.ts +104 -0
  860. package/src/testing/stub-model-service.ts +72 -0
  861. package/src/testing/stub-project-manager.ts +161 -0
  862. package/src/testing/stub-self-save-registry.ts +43 -0
  863. package/src/testing/stub-service-registry.ts +192 -0
  864. package/src/testing/stub-writable-file-system.ts +58 -0
  865. package/src/util/connection-liveness.ts +47 -0
  866. package/src/util/environment.ts +88 -0
  867. package/src/util/index.ts +18 -0
  868. package/src/util/registry.ts +129 -0
@@ -0,0 +1,600 @@
1
+ /********************************************************************************
2
+ * Copyright (c) 2026 CrossBreeze, EclipseSource and others.
3
+ *
4
+ * This program and the accompanying materials are made available under the
5
+ * terms of the MIT License which is available in the project root.
6
+ *
7
+ * SPDX-License-Identifier: MIT
8
+ ********************************************************************************/
9
+
10
+ import { type Logger } from '@hydranium/protocol';
11
+ import { type LangiumSharedCoreServices } from '@hydranium/langium';
12
+ import { type LangiumServices, type LangiumSharedServices } from '@hydranium/langium/lsp';
13
+ import type { ServerSharedServicesMinimal } from './shared-services.js';
14
+ import { collectProducibleTypes } from './language-types.js';
15
+ import { AstDocumentManager } from '../documents/ast-document-manager.js';
16
+ import { HydraniumTextDocuments } from '../documents/hydranium-text-documents.js';
17
+ import { BuildPipelineIntegration } from './document-builder/build-pipeline-integration.js';
18
+ import { HydraniumDocumentBuilder } from './document-builder/document-builder.js';
19
+ import { ModelService } from './model-service/model-service.js';
20
+ import { HydraniumScopeComputation } from './scope/hydranium-scope-computation.js';
21
+ import { HydraniumScopeProvider } from './scope/hydranium-scope-provider.js';
22
+ import { processEnv } from '../util/environment.js';
23
+ import { TransferEncoder } from './transfer/transfer-encoder.js';
24
+ import { HydraniumWorkspaceManager } from './workspace/hydranium-workspace-manager.js';
25
+
26
+ /**
27
+ * Side: which side of the DI tree a missing slot lives on. Drives the
28
+ * teaching error message — `shared` slots are bound by
29
+ * `createServerSharedModule`, `services` slots by
30
+ * `createServerLanguageModule`.
31
+ */
32
+ type Side = 'shared' | 'services';
33
+
34
+ /**
35
+ * A slot the framework expects to be bound after composition. The `get`
36
+ * callback walks an opaque services object (typed loosely on purpose,
37
+ * since the assertion exists precisely to detect missing properties)
38
+ * and returns `undefined` when the slot was never bound.
39
+ */
40
+ interface ExpectedSlot {
41
+ side: Side;
42
+ path: string;
43
+ get: (services: Record<string, unknown>) => unknown;
44
+ }
45
+
46
+ function nested(services: Record<string, unknown>, ...keys: readonly string[]): unknown {
47
+ let current: unknown = services;
48
+ for (const key of keys) {
49
+ if (current === null || typeof current !== 'object') {
50
+ return undefined;
51
+ }
52
+ current = (current as Record<string, unknown>)[key];
53
+ }
54
+ return current;
55
+ }
56
+
57
+ /**
58
+ * Shared-side slots bound by `createServerSharedModule`. If any of
59
+ * these is missing after composition, the most likely cause is that the
60
+ * factory was omitted from the consumer's `inject(...)` of the shared
61
+ * tree (or merged in the wrong order — modules layered after the
62
+ * `@hydranium/core` factory can override these slots back to `undefined`).
63
+ */
64
+ const EXPECTED_SHARED_SLOTS: readonly ExpectedSlot[] = [
65
+ { side: 'shared', path: 'Logger', get: services => nested(services, 'Logger') },
66
+ { side: 'shared', path: 'lsp.configurationRoot', get: services => nested(services, 'lsp', 'configurationRoot') },
67
+ { side: 'shared', path: 'workspace.WorkspaceManager', get: services => nested(services, 'workspace', 'WorkspaceManager') },
68
+ { side: 'shared', path: 'workspace.ProjectManager', get: services => nested(services, 'workspace', 'ProjectManager') },
69
+ { side: 'shared', path: 'workspace.SelfSaveRegistry', get: services => nested(services, 'workspace', 'SelfSaveRegistry') },
70
+ { side: 'shared', path: 'workspace.TextDocuments', get: services => nested(services, 'workspace', 'TextDocuments') },
71
+ { side: 'shared', path: 'workspace.AstDocumentManager', get: services => nested(services, 'workspace', 'AstDocumentManager') },
72
+ {
73
+ side: 'shared',
74
+ path: 'workspace.BuildPipelineIntegration',
75
+ get: services => nested(services, 'workspace', 'BuildPipelineIntegration')
76
+ }
77
+ ];
78
+
79
+ /**
80
+ * Language-side slots bound by `createServerLanguageModule`. If any
81
+ * is missing the consumer most likely forgot to compose the
82
+ * `@hydranium/core` language factory into their `inject(...)` of the
83
+ * language tree.
84
+ */
85
+ const EXPECTED_LANGUAGE_SLOTS: readonly ExpectedSlot[] = [
86
+ { side: 'services', path: 'references.ScopeComputation', get: services => nested(services, 'references', 'ScopeComputation') },
87
+ { side: 'services', path: 'references.ScopeProvider', get: services => nested(services, 'references', 'ScopeProvider') },
88
+ { side: 'services', path: 'references.ElementKeyProvider', get: services => nested(services, 'references', 'ElementKeyProvider') },
89
+ { side: 'services', path: 'references.NameProvider', get: services => nested(services, 'references', 'NameProvider') },
90
+ { side: 'services', path: 'serializer.Serializer', get: services => nested(services, 'serializer', 'Serializer') }
91
+ ];
92
+
93
+ const COMPOSITION_HINT = `Expected composition order:
94
+
95
+ const shared = inject(
96
+ createDefaultSharedModule(ctx),
97
+ YourGeneratedSharedModule,
98
+ createServerSharedModule(ctx), // <-- required, head-neutral base
99
+ createLspServerSharedModule(ctx), // optional protocol head
100
+ YourSharedOverridesModule
101
+ );
102
+
103
+ const language = inject(
104
+ createDefaultModule({ shared }),
105
+ YourGeneratedModule,
106
+ createServerLanguageModule(ctx), // <-- required, head-neutral base
107
+ createLspServerLanguageModule(ctx), // optional protocol head
108
+ YourLanguageOverridesModule
109
+ );
110
+
111
+ Each protocol head (lsp-server, data-server, glsp-server) builds on the
112
+ \`@hydranium/core\` modules above; they must be composed BEFORE
113
+ any head module so head bindings override (later-wins).`;
114
+
115
+ function buildMessage(slot: ExpectedSlot): string {
116
+ const factory = slot.side === 'shared' ? 'createServerSharedModule(ctx)' : 'createServerLanguageModule(ctx)';
117
+ return `[hydranium] Expected \`${slot.side}.${slot.path}\` to be bound, but it returned undefined.
118
+
119
+ Most likely cause: \`${factory}\` was not included in your \`inject(...)\` composition, or another module merged after it cleared the slot.
120
+
121
+ ${COMPOSITION_HINT}`;
122
+ }
123
+
124
+ /**
125
+ * Verify that the slots `@hydranium/core` is responsible for
126
+ * binding are populated after composition. Throws an error with a
127
+ * teaching message naming the missing slot and the most likely cause.
128
+ *
129
+ * Invoked from {@link bootstrapLangium}; consumers don't normally call
130
+ * this directly. Exported so framework integration tests can pin the
131
+ * error-message contract.
132
+ *
133
+ * Why a runtime check on top of TypeScript: in practice the consumer
134
+ * pattern `inject(...) as MyServices` widens away the composition shape
135
+ * — a missing module compiles but produces a half-bound services tree.
136
+ * The first failure surfaces deep inside Langium with a stack pointing
137
+ * at an unrelated slot. This assertion fails fast at bootstrap with a
138
+ * message that points at the actual cause and the fix.
139
+ */
140
+ export function assertCoreSlotsBound(shared: LangiumSharedServices, language: LangiumServices): void {
141
+ const sharedTree = shared as unknown as Record<string, unknown>;
142
+ const languageTree = language as unknown as Record<string, unknown>;
143
+ for (const slot of EXPECTED_SHARED_SLOTS) {
144
+ if (slot.get(sharedTree) === undefined) {
145
+ throw new Error(buildMessage(slot));
146
+ }
147
+ }
148
+ for (const slot of EXPECTED_LANGUAGE_SLOTS) {
149
+ if (slot.get(languageTree) === undefined) {
150
+ throw new Error(buildMessage(slot));
151
+ }
152
+ }
153
+ }
154
+
155
+ /**
156
+ * Environment variable that opts into the strict-binding diagnostic. Set
157
+ * to `1` / `true` / `yes` / `on` to enable; unset (the default) skips the
158
+ * check entirely. Off by default because it is a development aid, not a
159
+ * production gate.
160
+ */
161
+ export const STRICT_BINDINGS_ENV = 'HYDRANIUM_STRICT_BINDINGS';
162
+
163
+ /** Constructor usable as the right-hand side of `instanceof`. */
164
+ type Constructor = new (...args: never[]) => object;
165
+
166
+ /**
167
+ * A framework slot whose bound value is expected to be an instance of a
168
+ * specific framework base class (the framework's behaviour for that slot
169
+ * lives in the base). Distinct from {@link ExpectedSlot}, which only
170
+ * checks the slot is bound at all: this checks the bound value actually
171
+ * extends the framework base. Only slots with a single behaviour-bearing
172
+ * base class are listed — interface slots with legitimate independent
173
+ * implementations (`Logger`, `references.ElementKeyProvider`,
174
+ * `serializer.Serializer`, `lsp.configurationRoot`) are deliberately
175
+ * omitted, since an `instanceof` check there would false-positive on a
176
+ * valid binding.
177
+ */
178
+ interface StrictSlot {
179
+ side: Side;
180
+ path: string;
181
+ base: Constructor;
182
+ get: (services: Record<string, unknown>) => unknown;
183
+ }
184
+
185
+ const STRICT_SHARED_SLOTS: readonly StrictSlot[] = [
186
+ { side: 'shared', path: 'workspace.TextDocuments', base: HydraniumTextDocuments, get: s => nested(s, 'workspace', 'TextDocuments') },
187
+ {
188
+ side: 'shared',
189
+ path: 'workspace.WorkspaceManager',
190
+ base: HydraniumWorkspaceManager,
191
+ get: s => nested(s, 'workspace', 'WorkspaceManager')
192
+ },
193
+ {
194
+ side: 'shared',
195
+ path: 'workspace.DocumentBuilder',
196
+ base: HydraniumDocumentBuilder,
197
+ get: s => nested(s, 'workspace', 'DocumentBuilder')
198
+ },
199
+ {
200
+ side: 'shared',
201
+ path: 'workspace.AstDocumentManager',
202
+ base: AstDocumentManager,
203
+ get: s => nested(s, 'workspace', 'AstDocumentManager')
204
+ },
205
+ {
206
+ side: 'shared',
207
+ path: 'workspace.BuildPipelineIntegration',
208
+ base: BuildPipelineIntegration,
209
+ get: s => nested(s, 'workspace', 'BuildPipelineIntegration')
210
+ },
211
+ { side: 'shared', path: 'model.TransferEncoder', base: TransferEncoder, get: s => nested(s, 'model', 'TransferEncoder') },
212
+ { side: 'shared', path: 'model.ModelService', base: ModelService, get: s => nested(s, 'model', 'ModelService') }
213
+ ];
214
+
215
+ const STRICT_LANGUAGE_SLOTS: readonly StrictSlot[] = [
216
+ {
217
+ side: 'services',
218
+ path: 'references.ScopeComputation',
219
+ base: HydraniumScopeComputation,
220
+ get: s => nested(s, 'references', 'ScopeComputation')
221
+ },
222
+ { side: 'services', path: 'references.ScopeProvider', base: HydraniumScopeProvider, get: s => nested(s, 'references', 'ScopeProvider') }
223
+ ];
224
+
225
+ function strictBindingsEnabled(): boolean {
226
+ const value = processEnv()?.[STRICT_BINDINGS_ENV]?.toLowerCase();
227
+ return value === '1' || value === 'true' || value === 'yes' || value === 'on';
228
+ }
229
+
230
+ function warnLooseSlot(logger: Logger | undefined, slot: StrictSlot, actual: object): void {
231
+ const actualName = actual.constructor?.name ?? '<anonymous>';
232
+ const message =
233
+ `[hydranium] Strict bindings: \`${slot.side}.${slot.path}\` is bound to \`${actualName}\`, ` +
234
+ `which does not extend the framework base \`${slot.base.name}\` — framework behaviour on ` +
235
+ `this slot is silently lost. Bind a subclass of \`${slot.base.name}\`, or unset ` +
236
+ `\`${STRICT_BINDINGS_ENV}\` to silence.`;
237
+ if (logger) {
238
+ logger.warn(message);
239
+ } else {
240
+ console.warn(message);
241
+ }
242
+ }
243
+
244
+ /**
245
+ * Opt-in diagnostic (gated by {@link STRICT_BINDINGS_ENV}): warn when a
246
+ * framework slot is bound to a value that does NOT extend the framework
247
+ * base class for that slot. Langium DI is structural, so such a binding
248
+ * compiles and runs but silently drops the framework behaviour the base
249
+ * carries (e.g. a `ScopeComputation` not extending
250
+ * {@link HydraniumScopeComputation} loses tier-aware export). Warns, never
251
+ * throws — safe to leave enabled in a dev/test run; a no-op unless the env
252
+ * var is set.
253
+ *
254
+ * Invoked from {@link bootstrapLangium} after {@link assertCoreSlotsBound}.
255
+ * Exported so framework integration tests can pin the warning contract.
256
+ */
257
+ export function warnOnUnexpectedBindings(shared: LangiumSharedServices, language: LangiumServices): void {
258
+ if (!strictBindingsEnabled()) {
259
+ return;
260
+ }
261
+ const sharedTree = shared as unknown as Record<string, unknown>;
262
+ const languageTree = language as unknown as Record<string, unknown>;
263
+ const logger = nested(sharedTree, 'Logger') as Logger | undefined;
264
+ const check = (tree: Record<string, unknown>, slots: readonly StrictSlot[]): void => {
265
+ for (const slot of slots) {
266
+ const value = slot.get(tree);
267
+ if (typeof value === 'object' && value !== null && !(value instanceof slot.base)) {
268
+ warnLooseSlot(logger, slot, value);
269
+ }
270
+ }
271
+ };
272
+ check(sharedTree, STRICT_SHARED_SLOTS);
273
+ check(languageTree, STRICT_LANGUAGE_SLOTS);
274
+ }
275
+
276
+ /**
277
+ * Default eager-construction list for {@link bootstrapLangium}. Contains
278
+ * the framework services whose constructors attach to the build pipeline —
279
+ * either as a direct `documentBuilder` listener or as a
280
+ * `BuildPhasePassService` pass — and which therefore must be instantiated
281
+ * before the first build cycle:
282
+ *
283
+ * - **`workspace.ProjectManager`** — subscribes to
284
+ * `documentBuilder.onUpdate` to track descriptor file changes.
285
+ * - **`workspace.BuildPipelineIntegration`** — registers the
286
+ * `documentBuilder.onBuildPhase` / `onDocumentPhase` listeners that
287
+ * dispatch every build-phase pass and drive AST enrichment, and
288
+ * registers the framework integrity passes itself. The per-language
289
+ * feature services it routes to (`ast.AstExtensionService` +
290
+ * `integrity.IntegrityService`, plus `references.ScopeExtensionService`
291
+ * read by the scope provider) hold the registries and the logic but own
292
+ * no listeners, so they need not be eager: each language's services
293
+ * construct lazily when the orchestrator (or scope provider) first
294
+ * reaches them, and their constructors register that language's rules /
295
+ * extensions just-in-time.
296
+ * - **`profilers.LangiumProfiler`** — self-registers a `Validated`
297
+ * BuildPhasePass that flushes the aggregated parse/link/validate profile
298
+ * once per build. No production cost (the profiler is trace-gated), but
299
+ * the pass must be registered up front.
300
+ * - **`workspace.CstResidencyService`** — self-registers a `Validated`
301
+ * BuildPhasePass that sheds the CST of closed documents. The framework
302
+ * default strategy is `always-keep`, so the pass runs but sheds nothing
303
+ * until an adopter configures a shedding strategy.
304
+ *
305
+ * Consumers with no additional eager targets can omit the third argument
306
+ * to {@link bootstrapLangium} — the parameter default is this exact set.
307
+ * Adopters needing extra eager targets spread this constant into their own
308
+ * array and append their accessors.
309
+ */
310
+ export const DEFAULT_EAGER_SERVICES: ReadonlyArray<(services: ServerSharedServicesMinimal) => unknown> = [
311
+ services => services.workspace.ProjectManager,
312
+ services => services.workspace.BuildPipelineIntegration,
313
+ services => services.profilers.LangiumProfiler,
314
+ services => services.workspace.CstResidencyService
315
+ ];
316
+
317
+ /**
318
+ * After `inject(...)` returns, services are constructed lazily on first
319
+ * access. Some framework services attach to the build pipeline in their
320
+ * constructors — a `documentBuilder.onUpdate` / `onDocumentPhase` /
321
+ * `onBuildPhase` listener, or a build-phase pass — and that attachment
322
+ * has to happen **before** the first build runs, so those services must
323
+ * be constructed eagerly during bootstrap.
324
+ *
325
+ * Defaults to {@link DEFAULT_EAGER_SERVICES} when no list is supplied,
326
+ * which covers every framework service that needs it. Consumers with
327
+ * additional eager targets spread the default into their own list.
328
+ * Accessors are invoked in array order and their return values are
329
+ * discarded.
330
+ *
331
+ * Bootstrap responsibilities, in order:
332
+ * 1. Hand the shared services to `shared.ServiceRegistry` if it accepts
333
+ * them after construction, so Langium's declared-languageId lookup
334
+ * rung works however the adopter's registry binding was built.
335
+ * 2. {@link assertDistinctFileRouting} — before registration, because
336
+ * `register` resolves a routing collision by last-wins and afterwards
337
+ * the evidence is gone.
338
+ * 3. Register `language` against `shared.ServiceRegistry`, the
339
+ * required final step of any Langium DI bootstrap. Done before slot
340
+ * validation so subclassed registries (typed-accessor extensions)
341
+ * populate any side state before validation walks construct services
342
+ * that read from the registry.
343
+ * 4. {@link assertCoreSlotsBound} — fail fast if the consumer's
344
+ * `inject(...)` composition is missing a `@hydranium/core` module. May
345
+ * trigger lazy service construction as side effect of walking the
346
+ * slots; that construction expects a populated `ServiceRegistry`,
347
+ * hence the order.
348
+ * 5. {@link warnOnUnexpectedBindings} — opt-in (gated by
349
+ * {@link STRICT_BINDINGS_ENV}); warns when a framework slot is bound
350
+ * to a non-subclass of its framework base. No-op unless the env is set.
351
+ * 6. {@link assertReflectionCoversLanguages} — catch a clobbered shared
352
+ * `AstReflection` before it starts silently answering `isSubtype`
353
+ * false for a registered language's types. Skipped here, since a lone
354
+ * language has no sibling that could clobber it.
355
+ * 7. Invoke eager-construction accessors in array order.
356
+ *
357
+ * Multi-grammar adopters use {@link bootstrapLangiumLanguages}, which
358
+ * registers every language before validating slots or constructing the
359
+ * eager set.
360
+ */
361
+ export function bootstrapLangium<TShared extends LangiumSharedServices & ServerSharedServicesMinimal, TLang extends LangiumServices>(
362
+ shared: TShared,
363
+ language: TLang,
364
+ eagerlyConstructedServices: ReadonlyArray<(services: TShared) => unknown> = DEFAULT_EAGER_SERVICES
365
+ ): { shared: TShared; language: TLang } {
366
+ bootstrapLangiumLanguages(shared, [language], eagerlyConstructedServices);
367
+ return { shared, language };
368
+ }
369
+
370
+ /**
371
+ * Multi-language form of {@link bootstrapLangium}: bootstraps several
372
+ * languages that share ONE shared-services tier, as a multi-grammar adopter
373
+ * needs when its grammars cross-reference each other through the shared
374
+ * index.
375
+ *
376
+ * Same responsibilities as the single-language form, but the phase
377
+ * ORDER across languages is what makes this a distinct function rather
378
+ * than a loop the caller could write:
379
+ *
380
+ * 1. **Every** language is registered against `shared.ServiceRegistry`
381
+ * first. Slot validation and eager construction both build services
382
+ * that read the registry — a per-language
383
+ * register-then-validate-then-eager loop would run them while later
384
+ * languages were still missing, so a shared service that walks
385
+ * `ServiceRegistry.all` (or resolves by extension) would see a
386
+ * half-populated registry and cache the wrong answer.
387
+ * 2. `assertCoreSlotsBound` / `warnOnUnexpectedBindings` per language —
388
+ * each language composes its own module chain, so each is checked.
389
+ * 3. Eager accessors run **once**, after all registrations. They take
390
+ * the shared tier, and the framework's eager set is shared-tier only
391
+ * (`ProjectManager`, `BuildPipelineIntegration`, `LangiumProfiler`,
392
+ * `CstResidencyService`) — `BuildPipelineIntegration` in particular
393
+ * routes per document URI to each language's `IntegrityService` /
394
+ * `AstExtensionService`, so it must be constructed knowing all of
395
+ * them. Running the set per language would attach its
396
+ * `documentBuilder` listeners N times and enforce each phase N times.
397
+ *
398
+ * Throws when `languages` is empty: a shared tier with no registered
399
+ * language never validates its slots, which silently defers a
400
+ * composition error to the first build.
401
+ */
402
+ export function bootstrapLangiumLanguages<
403
+ TShared extends LangiumSharedServices & ServerSharedServicesMinimal,
404
+ TLang extends LangiumServices
405
+ >(
406
+ shared: TShared,
407
+ languages: ReadonlyArray<TLang>,
408
+ eagerlyConstructedServices: ReadonlyArray<(services: TShared) => unknown> = DEFAULT_EAGER_SERVICES
409
+ ): { shared: TShared; languages: ReadonlyArray<TLang> } {
410
+ if (languages.length === 0) {
411
+ throw new Error(
412
+ '[hydranium] bootstrapLangiumLanguages requires at least one language — a shared tier with no ' +
413
+ 'registered language cannot validate its slots. Pass the language(s) produced by your ' +
414
+ '`inject(...)` composition.'
415
+ );
416
+ }
417
+ // Back-fill the shared services onto a registry that was constructed
418
+ // without them, so Langium's declared-languageId lookup rung works no
419
+ // matter how the adopter's `ServiceRegistry` binding built it. An adopter
420
+ // rebinding the slot with a zero-argument `new MyRegistry()` would
421
+ // otherwise lose that rung with nothing to indicate it — the same
422
+ // silent-inertness shape as a `DocumentUpdateHandler` bound on the
423
+ // per-language tier. Only fills an empty reference.
424
+ if (acceptsSharedServices(shared.ServiceRegistry)) {
425
+ shared.ServiceRegistry.acceptSharedServices(shared);
426
+ }
427
+ // Before registering, not after: `register` resolves a collision by
428
+ // last-wins, so afterwards the losing language is already unreachable.
429
+ assertDistinctFileRouting(languages);
430
+ for (const language of languages) {
431
+ shared.ServiceRegistry.register(language);
432
+ }
433
+ for (const language of languages) {
434
+ assertCoreSlotsBound(shared, language);
435
+ warnOnUnexpectedBindings(shared, language);
436
+ }
437
+ assertReflectionCoversLanguages(shared, languages);
438
+ for (const accessor of eagerlyConstructedServices) {
439
+ accessor(shared);
440
+ }
441
+ return { shared, languages };
442
+ }
443
+
444
+ /**
445
+ * A registry that can take its shared services after construction. Structural
446
+ * rather than an `instanceof HydraniumServiceRegistry` check so an adopter
447
+ * registry that implements the method without extending the framework base
448
+ * still gets the languageId rung.
449
+ */
450
+ function acceptsSharedServices(registry: unknown): registry is { acceptSharedServices(services: LangiumSharedCoreServices): void } {
451
+ return typeof (registry as { acceptSharedServices?: unknown } | null)?.acceptSharedServices === 'function';
452
+ }
453
+
454
+ /**
455
+ * Fail fast when two registered languages claim the same routing key — a file
456
+ * extension, a whole file name, or a language id.
457
+ *
458
+ * **Why this is an error and not a warning.** Langium's `ServiceRegistry.register`
459
+ * resolves a collision by last-wins and reports it with a raw `console.warn`.
460
+ * That warning goes to the process console, outside the framework `Logger`, so
461
+ * it never reaches the LSP output channel an adopter reads — and the result is
462
+ * that every file of the losing language is parsed, scoped and validated by the
463
+ * WRONG grammar. There is no configuration under which that is intended, and
464
+ * the symptom (mass validation errors in files that look fine) points nowhere
465
+ * near the cause.
466
+ *
467
+ * A duplicate `languageId` is worse still: the id keys `languageIdMap`, so the
468
+ * losing language becomes unreachable by every lookup path at once, including
469
+ * the declared-id rung and `getServicesById`.
470
+ *
471
+ * Runs before registration, since afterwards the collision has already been
472
+ * resolved and the evidence is gone.
473
+ */
474
+ export function assertDistinctFileRouting(languages: ReadonlyArray<LangiumServices>): void {
475
+ const owners = new Map<string, string>();
476
+ const claim = (kind: string, key: string, languageId: string): void => {
477
+ const mapKey = `${kind}:${key}`;
478
+ const previous = owners.get(mapKey);
479
+ if (previous !== undefined) {
480
+ throw new Error(
481
+ `[hydranium] two registered languages claim the same ${kind} '${key}': '${previous}' and '${languageId}'. ` +
482
+ 'Langium resolves this by last-wins with a bare console.warn, so every such file would be parsed and ' +
483
+ 'validated by whichever grammar registered last — invisible in the LSP log. Give each grammar a ' +
484
+ `distinct ${kind} in its langium-config.`
485
+ );
486
+ }
487
+ owners.set(mapKey, languageId);
488
+ };
489
+ for (const language of languages) {
490
+ const metadata = language.LanguageMetaData;
491
+ if (!metadata) {
492
+ // An unbound `LanguageMetaData` is a different failure with its own
493
+ // reporting — Langium's `register` reads it one line later. Reporting
494
+ // it here in the vocabulary of a routing collision would misname it.
495
+ continue;
496
+ }
497
+ claim('language id', metadata.languageId, metadata.languageId);
498
+ for (const extension of metadata.fileExtensions) {
499
+ claim('file extension', extension, metadata.languageId);
500
+ }
501
+ for (const fileName of metadata.fileNames ?? []) {
502
+ claim('file name', fileName, metadata.languageId);
503
+ }
504
+ }
505
+ }
506
+
507
+ /**
508
+ * Fail fast when the shared `AstReflection` does not know a registered
509
+ * language's types.
510
+ *
511
+ * **The composition mistake this catches.** `AstReflection` lives in Langium's
512
+ * `LangiumGeneratedSharedCoreServices` — ONE slot for the whole project. A
513
+ * single `langium-cli` run over several grammars emits one combined reflection
514
+ * covering all of them, which is fine. But composing two *separately generated*
515
+ * language packages means composing two `…GeneratedSharedModule`s, each binding
516
+ * that one slot: last-wins, and the loser's types vanish from the reflection.
517
+ * Nothing errors. Instead `isSubtype` silently answers `false` for those types,
518
+ * which quietly breaks `IndexManager.allElements(type)` and `getElementByName`
519
+ * (so reference routing finds nothing), `getTypeMetaData` (so the encoder's
520
+ * `'grammar'` mode emits nothing), and Langium's own linking.
521
+ *
522
+ * The check is per language, on the types its grammar can produce, and costs
523
+ * one grammar walk per language at boot; a single-language composition, which
524
+ * nothing can clobber, is skipped entirely. It cannot repair the situation — a
525
+ * reflection that spans independently generated grammars is a real design piece
526
+ * (a composite reflection dispatching per owning language) and is not attempted
527
+ * here; the point is to turn a silent runtime misbehaviour into a boot failure
528
+ * that names the language and the mistake.
529
+ *
530
+ * **Two severities, because a clobber is not always total.** Throwing only when
531
+ * NONE of a language's types are known misses the realistic case: two grammars
532
+ * that share an imported base overlap heavily, so a reflection covering only
533
+ * one of them still recognises most of the other's types and a
534
+ * none-are-known test passes while the language's DISTINCTIVE types are
535
+ * absent. So any non-empty gap now warns (naming the missing types), and the
536
+ * throw is reserved for the unambiguous all-missing case. The warning can also
537
+ * fire benignly — a generator folding an unused rule away leaves a type the
538
+ * reflection never had — which is why partial coverage warns rather than
539
+ * throwing.
540
+ */
541
+ export function assertReflectionCoversLanguages(shared: LangiumSharedServices, languages: ReadonlyArray<LangiumServices>): void {
542
+ if (languages.length < 2) {
543
+ // One language cannot be clobbered by another's shared module.
544
+ return;
545
+ }
546
+ if (typeof shared.AstReflection?.getAllTypes !== 'function') {
547
+ // No reflection at all is a different failure (an unbound slot) with its
548
+ // own reporting. This check is about a reflection that EXISTS but covers
549
+ // the wrong grammar, so it stays quiet rather than reporting the absence
550
+ // in the vocabulary of a clobbered binding.
551
+ return;
552
+ }
553
+ const known = new Set(shared.AstReflection.getAllTypes());
554
+ const logger = nested(shared as unknown as Record<string, unknown>, 'Logger') as Logger | undefined;
555
+ for (const language of languages) {
556
+ const produced = collectProducibleTypes(language.Grammar);
557
+ const missing = [...produced].filter(type => !known.has(type));
558
+ if (missing.length === 0) {
559
+ continue;
560
+ }
561
+ const languageId = language.LanguageMetaData.languageId;
562
+ if (missing.length < produced.size) {
563
+ warnPartialReflectionCoverage(logger, languageId, missing, produced.size);
564
+ continue;
565
+ }
566
+ throw new Error(
567
+ `[hydranium] the shared AstReflection knows NONE of the ${produced.size} types the language ` +
568
+ `'${languageId}' can produce (e.g. ${missing.slice(0, 3).join(', ')}). ` +
569
+ 'AstReflection is a single shared slot, so composing two independently generated language ' +
570
+ 'packages leaves only the last one bound. Generate all grammars in ONE langium-cli run (one ' +
571
+ 'langium-config with several entry grammars) so a single combined reflection covers them all.'
572
+ );
573
+ }
574
+ }
575
+
576
+ /** Maximum missing type names spelled out before the message elides the rest. */
577
+ const MAX_REPORTED_MISSING_TYPES = 8;
578
+
579
+ function warnPartialReflectionCoverage(
580
+ logger: Logger | undefined,
581
+ languageId: string,
582
+ missing: readonly string[],
583
+ producedCount: number
584
+ ): void {
585
+ const named = missing.slice(0, MAX_REPORTED_MISSING_TYPES).join(', ');
586
+ const elided = missing.length > MAX_REPORTED_MISSING_TYPES ? `, … (${missing.length - MAX_REPORTED_MISSING_TYPES} more)` : '';
587
+ const message =
588
+ `[hydranium] the shared AstReflection is missing ${missing.length} of the ${producedCount} types the ` +
589
+ `language '${languageId}' can produce: ${named}${elided}. ` +
590
+ 'For those types `isSubtype` answers false and `getTypeMetaData` is empty, so `IndexManager.allElements` ' +
591
+ 'finds nothing, reference routing misses, and the encoder emits nothing. Most likely two independently ' +
592
+ 'generated language packages each bound the single shared AstReflection slot and the last one won — ' +
593
+ 'generate all grammars in ONE langium-cli run so a single combined reflection covers them. If instead ' +
594
+ 'these are rules your generator legitimately folded away, this warning is expected.';
595
+ if (logger) {
596
+ logger.warn(message);
597
+ } else {
598
+ console.warn(message);
599
+ }
600
+ }