@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,236 @@
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
+ /*
11
+ * The profiling session orchestrator: one run = one timestamped folder holding
12
+ * the captured artefacts and a self-describing `manifest.json`. This is the seam
13
+ * that makes "everything from a single run" true without a god-object — each
14
+ * collector shares only the session directory + manifest. This run drives the
15
+ * server-side sampled-profile capture over one or more named windows and, when
16
+ * given a collector, the latency report; browser-origin collectors append their
17
+ * own manifest entries the same way, from the Playwright side.
18
+ */
19
+
20
+ import {
21
+ DEFAULT_LOG_FILE_ENV,
22
+ PROFILING_SCHEMA_VERSION,
23
+ type LatencyCollector,
24
+ type ProfilingArtifact,
25
+ type ProfilingArtifactKind,
26
+ type ProfilingEnvironment,
27
+ type ProfilingManifest
28
+ } from '@hydranium/protocol';
29
+ import * as fs from 'node:fs';
30
+ import * as os from 'node:os';
31
+ import * as path from 'node:path';
32
+ import { profileWorkload, type ProfileCaptureOptions, type ProfileReport } from './profile-capture.js';
33
+ import { digestAllocationProfile, digestCpuProfile, type AllocationProfile, type CpuProfile } from './profile-digest.js';
34
+
35
+ // The manifest schema lives in `@hydranium/protocol` so a Playwright-side
36
+ // assembler can share the shape without a Node-only dependency chain;
37
+ // re-export it here so `@hydranium/core/node` consumers keep one import site.
38
+ export { PROFILING_SCHEMA_VERSION };
39
+ export type { ProfilingArtifact, ProfilingEnvironment, ProfilingManifest };
40
+
41
+ /** Options for a {@link ProfilingRun}. Environment fields are injectable so a run is reproducible in tests. */
42
+ export interface ProfilingRunOptions {
43
+ /** Parent directory for the session folder; falls back to the OS temp dir when missing. */
44
+ directory?: string;
45
+ /** Session id / folder name; defaults to `profiling-<timestamp>`. */
46
+ sessionId?: string;
47
+ /** `harness` (default) for a headless run, `app` for a real deployment. */
48
+ mode?: 'harness' | 'app';
49
+ /** Override the cgroup auto-detection (mainly for tests). */
50
+ container?: boolean;
51
+ commit?: string;
52
+ workspace?: string;
53
+ /** Which dimensions each window captures (default-off, per {@link ProfileCaptureOptions}). */
54
+ capture?: ProfileCaptureOptions;
55
+ /**
56
+ * Optional latency collector. When present, {@link ProfilingRun.finish} writes
57
+ * its report to `server-latency.json` and records a `server-latency` manifest artefact. A
58
+ * head feeds it via the RPC binding / `instrumentLspConnection`; a pure
59
+ * headless build with no request traffic leaves it empty.
60
+ */
61
+ latency?: LatencyCollector;
62
+ }
63
+
64
+ /** A cgroup memory controller signals we are inside a container/pod. */
65
+ function detectContainer(): boolean {
66
+ return fs.existsSync('/sys/fs/cgroup/memory.current') || fs.existsSync('/sys/fs/cgroup/memory/memory.usage_in_bytes');
67
+ }
68
+
69
+ /**
70
+ * A profiling session: create it, run one or more named windows through it, then
71
+ * {@link finish} to write `server-summary.json` + `manifest.json` and get the manifest.
72
+ * Windows run sequentially (the underlying capture is a single inspector session).
73
+ */
74
+ export class ProfilingRun {
75
+ readonly directory: string;
76
+ protected readonly sessionId: string;
77
+ protected readonly reports: Record<string, ProfileReport> = {};
78
+ protected readonly artifacts: ProfilingArtifact[] = [];
79
+ protected readonly windows: { label: string; ms: number }[] = [];
80
+ protected finished = false;
81
+ /** The `HYDRANIUM_LOG_FILE` value seen before this run pointed it at the session (restored on {@link finish}). */
82
+ protected readonly previousLogFileEnv?: string;
83
+ /** Absolute path of the session's teed server log. */
84
+ readonly serverLogPath: string;
85
+
86
+ protected constructor(
87
+ protected readonly options: ProfilingRunOptions,
88
+ directory: string,
89
+ sessionId: string
90
+ ) {
91
+ this.directory = directory;
92
+ this.sessionId = sessionId;
93
+ this.serverLogPath = path.join(directory, 'server.log');
94
+ // Point the log-file tee at the session so the head's structured logs
95
+ // (build phases, warnings, and — in an app run — the interleaved browser
96
+ // console) land in the bundle beside the profiles. Done via the
97
+ // `HYDRANIUM_LOG_FILE` env, which every `@hydranium/core` copy reads when
98
+ // its logger is CONSTRUCTED — so `ProfilingRun.start` must run before the
99
+ // head's services are created (as `measureModelMemory` does). This is the
100
+ // only mechanism that crosses a yalc'd adopter's separate core copy; a
101
+ // process-local `setLogFilePath` would only reach this module's own copy.
102
+ this.previousLogFileEnv = process.env[DEFAULT_LOG_FILE_ENV];
103
+ process.env[DEFAULT_LOG_FILE_ENV] = this.serverLogPath;
104
+ }
105
+
106
+ static async start(options: ProfilingRunOptions = {}): Promise<ProfilingRun> {
107
+ const sessionId = options.sessionId ?? `profiling-${new Date().toISOString().replace(/[:.]/g, '-')}`;
108
+ // Honour an explicitly requested directory (created recursively); only fall
109
+ // back to the OS temp dir when none was given.
110
+ const directory = path.join(options.directory ?? os.tmpdir(), sessionId);
111
+ fs.mkdirSync(directory, { recursive: true });
112
+ return new ProfilingRun(options, directory, sessionId);
113
+ }
114
+
115
+ /**
116
+ * Write an already-collected artefact (e.g. `server-ast.json`,
117
+ * `server-memory-report.json`) into the session directory and record it in the
118
+ * manifest. For non-profile inputs a head/harness already has in hand.
119
+ */
120
+ attach(kind: ProfilingArtifactKind, filename: string, data: unknown): void {
121
+ if (this.finished) {
122
+ throw new Error('ProfilingRun.attach called after finish().');
123
+ }
124
+ fs.writeFileSync(path.join(this.directory, filename), JSON.stringify(data, undefined, 2));
125
+ this.artifacts.push({ kind, path: filename });
126
+ }
127
+
128
+ /** Capture {@link run} as a named window, recording its artefacts + duration. Returns the block's result. */
129
+ async window<T>(label: string, run: () => Promise<T>): Promise<T> {
130
+ if (this.finished) {
131
+ throw new Error('ProfilingRun.window called after finish().');
132
+ }
133
+ if (this.reports[label] !== undefined) {
134
+ throw new Error(`ProfilingRun.window called twice with label '${label}'; window labels must be unique.`);
135
+ }
136
+ const { result, report } = await profileWorkload({ ...(this.options.capture ?? {}), directory: this.directory, label }, run);
137
+ this.reports[label] = report;
138
+ this.windows.push({ label, ms: report.durationMs });
139
+ if (report.cpuProfilePath) {
140
+ this.artifacts.push(
141
+ this.artifactWithDigest('server-cpu', report.cpuProfilePath, label, raw => digestCpuProfile(raw as CpuProfile))
142
+ );
143
+ }
144
+ if (report.allocationProfilePath) {
145
+ this.artifacts.push(
146
+ this.artifactWithDigest('server-alloc', report.allocationProfilePath, label, raw =>
147
+ digestAllocationProfile(raw as AllocationProfile)
148
+ )
149
+ );
150
+ }
151
+ if (report.heapSnapshotPath) {
152
+ // No inline digest: a heap snapshot's digest is the retained-size analyzer's report.
153
+ this.artifacts.push({ kind: 'server-heap', path: path.basename(report.heapSnapshotPath), window: label });
154
+ }
155
+ return result;
156
+ }
157
+
158
+ /** Build the artefact entry, emitting a `<profile>.txt` digest beside the profile; a digest failure is non-fatal. */
159
+ protected artifactWithDigest(
160
+ kind: ProfilingArtifactKind,
161
+ file: string,
162
+ window: string,
163
+ digest: (raw: unknown) => string
164
+ ): ProfilingArtifact {
165
+ const artifact: ProfilingArtifact = { kind, path: path.basename(file), window };
166
+ try {
167
+ const raw: unknown = JSON.parse(fs.readFileSync(file, 'utf8'));
168
+ const digestPath = `${file}.txt`;
169
+ fs.writeFileSync(digestPath, digest(raw));
170
+ artifact.digest = path.basename(digestPath);
171
+ } catch {
172
+ // The raw profile is still in the bundle; a skill can fall back to it.
173
+ }
174
+ return artifact;
175
+ }
176
+
177
+ /** Write `server-summary.json` + `manifest.json` into the session directory and return the manifest. */
178
+ async finish(): Promise<ProfilingManifest> {
179
+ this.finished = true;
180
+ // Restore the prior log-file env, then record the log as an artefact only
181
+ // if the run actually produced one.
182
+ if (this.previousLogFileEnv === undefined) {
183
+ delete process.env[DEFAULT_LOG_FILE_ENV];
184
+ } else {
185
+ process.env[DEFAULT_LOG_FILE_ENV] = this.previousLogFileEnv;
186
+ }
187
+ if (fs.existsSync(this.serverLogPath)) {
188
+ this.artifacts.push({ kind: 'server-log', path: 'server.log' });
189
+ }
190
+ fs.writeFileSync(path.join(this.directory, 'server-summary.json'), JSON.stringify(this.reports, undefined, 2));
191
+ if (this.options.latency) {
192
+ fs.writeFileSync(path.join(this.directory, 'server-latency.json'), JSON.stringify(this.options.latency.report(), undefined, 2));
193
+ this.artifacts.push({ kind: 'server-latency', path: 'server-latency.json' });
194
+ }
195
+ const manifest: ProfilingManifest = {
196
+ schemaVersion: PROFILING_SCHEMA_VERSION,
197
+ sessionId: this.sessionId,
198
+ environment: {
199
+ mode: this.options.mode ?? 'harness',
200
+ container: this.options.container ?? detectContainer(),
201
+ commit: this.options.commit,
202
+ workspace: this.options.workspace,
203
+ node: process.version,
204
+ windows: this.windows
205
+ },
206
+ artifacts: [...this.artifacts, { kind: 'server-summary', path: 'server-summary.json' }]
207
+ };
208
+ fs.writeFileSync(path.join(this.directory, 'manifest.json'), JSON.stringify(manifest, undefined, 2));
209
+ return manifest;
210
+ }
211
+ }
212
+
213
+ /**
214
+ * Merge one window's {@link ProfileReport} into `<directory>/server-summary.json`
215
+ * (read-modify-write, keyed by window label). Lets the interactive / RPC capture path
216
+ * — which stops a single window at a time via the data-server `stopProfiling`, with no
217
+ * {@link ProfilingRun} to collect the reports — accrue the same `server-summary`
218
+ * artefact the headless {@link ProfilingRun.finish} writes in one pass. An empty label
219
+ * is keyed `app`; a malformed or absent existing file is treated as empty. Creates the
220
+ * directory if needed, so a caller-supplied path that does not yet exist does not throw.
221
+ */
222
+ export function recordServerSummaryEntry(directory: string, label: string, report: ProfileReport): void {
223
+ fs.mkdirSync(directory, { recursive: true });
224
+ const file = path.join(directory, 'server-summary.json');
225
+ let summary: Record<string, ProfileReport> = {};
226
+ try {
227
+ const parsed: unknown = JSON.parse(fs.readFileSync(file, 'utf8'));
228
+ if (parsed && typeof parsed === 'object') {
229
+ summary = parsed as Record<string, ProfileReport>;
230
+ }
231
+ } catch {
232
+ // No existing summary (or unreadable) — start fresh.
233
+ }
234
+ summary[label || 'app'] = report;
235
+ fs.writeFileSync(file, JSON.stringify(summary, undefined, 2));
236
+ }
@@ -0,0 +1,182 @@
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 AstReflection, type Grammar, type LanguageMetaData, GrammarAST, GrammarUtils } from '@hydranium/langium';
11
+ import { type ServerSharedServicesMinimal } from '../langium/shared-services.js';
12
+
13
+ /** One terminal rule of a language's grammar, flattened for the reflection dump. */
14
+ export interface TerminalReflection {
15
+ /** The terminal rule name. */
16
+ name: string;
17
+ /** The compiled pattern source, when it could be resolved to a `RegExp`. */
18
+ pattern?: string;
19
+ /** Hidden terminals (e.g. whitespace, comments) are lexed but not parsed. */
20
+ hidden: boolean;
21
+ }
22
+
23
+ /** A single registered language's grammar surface. */
24
+ export interface LanguageReflection {
25
+ /** The language id from `LanguageMetaData` (matches the LSP `languageId`). */
26
+ languageId: string;
27
+ /** File extensions the language claims, each with a leading dot. */
28
+ fileExtensions: string[];
29
+ /** The grammar's entry parser rule name, when one is marked `entry`. */
30
+ entryRule?: string;
31
+ /** Terminal rules, in grammar declaration order. */
32
+ terminals: TerminalReflection[];
33
+ }
34
+
35
+ /** A property of an AST node type, as the runtime reflection exposes it. */
36
+ export interface PropertyReflection {
37
+ /** The property name on the AST node. */
38
+ name: string;
39
+ /** For a cross-reference property, the target type name; absent for containment/values. */
40
+ referenceType?: string;
41
+ /** True when the property is a (possibly-empty) array — reflection defaults it to `[]`. */
42
+ array: boolean;
43
+ /**
44
+ * True when the reflection carries a default value for the property (arrays default to
45
+ * `[]`, some scalars to a literal). Reflection cannot distinguish optional from
46
+ * mandatory beyond this, so the dump reports only what it can prove.
47
+ */
48
+ hasDefault: boolean;
49
+ }
50
+
51
+ /** One AST node type from the shared reflection (the superset across all languages). */
52
+ export interface TypeReflection {
53
+ /** The `$type` value / grammar rule or interface name. */
54
+ name: string;
55
+ /** Declared super types (grammar `returns` / interface `extends`). */
56
+ superTypes: string[];
57
+ /** Types whose `superTypes` list this type directly (inverted, so a hierarchy tree is buildable). */
58
+ directSubTypes: string[];
59
+ /** Properties with their reflection meta data, sorted by name. */
60
+ properties: PropertyReflection[];
61
+ }
62
+
63
+ /**
64
+ * The full grammar/AST reflection of a head — a serialisable snapshot of the
65
+ * type system and per-language grammar surface. This is the JSON contract
66
+ * `hydranium-cli reflect --json` emits; it is independent of the Langium runtime
67
+ * types so tooling reads a stable schema and the CLI needs no runtime
68
+ * `@hydranium/core` dependency.
69
+ */
70
+ export interface GrammarReflection {
71
+ /** Every registered language's grammar surface, in registration order. */
72
+ languages: LanguageReflection[];
73
+ /** Every AST node type (the shared reflection superset), sorted by name. */
74
+ types: TypeReflection[];
75
+ }
76
+
77
+ /** Options for {@link reflectGrammar}. */
78
+ export interface ReflectGrammarOptions {
79
+ /**
80
+ * Create the language's shared services in-process. This is the only
81
+ * language-specific input — a head passes its own `create<Lang>Services(fileSystem)`.
82
+ */
83
+ createServices: () => { shared: ServerSharedServicesMinimal };
84
+ }
85
+
86
+ /** The language-service shape {@link collectGrammarReflection} reads (grammar + meta data). */
87
+ export interface ReflectableLanguageServices {
88
+ Grammar: Grammar;
89
+ LanguageMetaData: LanguageMetaData;
90
+ }
91
+
92
+ /** Resolve a terminal rule's pattern source, tolerating rules `terminalRegex` cannot compile. */
93
+ function terminalPattern(rule: GrammarAST.TerminalRule): string | undefined {
94
+ try {
95
+ return GrammarUtils.terminalRegex(rule).source;
96
+ } catch {
97
+ // Some terminal rules (e.g. those referencing not-yet-resolvable fragments) can't be
98
+ // compiled to a standalone RegExp; the dump still lists the terminal, just pattern-less.
99
+ return undefined;
100
+ }
101
+ }
102
+
103
+ /** Flatten one language's grammar to its {@link LanguageReflection}. */
104
+ function reflectLanguage(services: ReflectableLanguageServices): LanguageReflection {
105
+ const { Grammar: grammar, LanguageMetaData: meta } = services;
106
+ const terminals: TerminalReflection[] = grammar.rules.filter(GrammarAST.isTerminalRule).map(rule => ({
107
+ name: rule.name,
108
+ pattern: terminalPattern(rule),
109
+ hidden: rule.hidden === true
110
+ }));
111
+ const entryRule = grammar.rules.find((rule): rule is GrammarAST.ParserRule => GrammarAST.isParserRule(rule) && rule.entry === true);
112
+ return {
113
+ languageId: meta.languageId,
114
+ fileExtensions: [...meta.fileExtensions],
115
+ entryRule: entryRule?.name,
116
+ terminals
117
+ };
118
+ }
119
+
120
+ /**
121
+ * Flatten a head's runtime reflection + registered languages into a serialisable
122
+ * {@link GrammarReflection}. Pure over its inputs (the shared {@link AstReflection}
123
+ * and the per-language grammar/meta-data services) so it unit-tests without booting
124
+ * a grammar; {@link reflectGrammar} is the thin boot wrapper.
125
+ *
126
+ * `directSubTypes` is derived by inverting every type's `superTypes` — the runtime
127
+ * reflection only exposes the transitive `getAllSubTypes`, and direct edges make a
128
+ * hierarchy tree buildable without re-deriving it.
129
+ */
130
+ export function collectGrammarReflection(reflection: AstReflection, languages: readonly ReflectableLanguageServices[]): GrammarReflection {
131
+ const typeNames = [...reflection.getAllTypes()].sort((left, right) => left.localeCompare(right));
132
+
133
+ // Invert superTypes → direct subtypes in one pass.
134
+ const directSubTypes = new Map<string, string[]>();
135
+ for (const name of typeNames) {
136
+ for (const superType of reflection.getTypeMetaData(name).superTypes) {
137
+ const children = directSubTypes.get(superType) ?? [];
138
+ children.push(name);
139
+ directSubTypes.set(superType, children);
140
+ }
141
+ }
142
+
143
+ const types: TypeReflection[] = typeNames.map(name => {
144
+ const meta = reflection.getTypeMetaData(name);
145
+ const properties: PropertyReflection[] = Object.values(meta.properties)
146
+ .map(property => ({
147
+ name: property.name,
148
+ referenceType: property.referenceType,
149
+ array: Array.isArray(property.defaultValue),
150
+ hasDefault: property.defaultValue !== undefined
151
+ }))
152
+ .sort((left, right) => left.name.localeCompare(right.name));
153
+ return {
154
+ name,
155
+ superTypes: [...meta.superTypes],
156
+ directSubTypes: (directSubTypes.get(name) ?? []).sort((left, right) => left.localeCompare(right)),
157
+ properties
158
+ };
159
+ });
160
+
161
+ return {
162
+ languages: languages.map(reflectLanguage),
163
+ types
164
+ };
165
+ }
166
+
167
+ /**
168
+ * Headless grammar/AST reflection — a static snapshot of a head's type system and
169
+ * grammar surface, no workspace build required (the reflection and grammar are
170
+ * available as soon as {@link ReflectGrammarOptions.createServices} registers the
171
+ * language). Boots a head's Langium services in-process, then flattens the shared
172
+ * {@link AstReflection} and every registered language's grammar into a serialisable
173
+ * {@link GrammarReflection}.
174
+ *
175
+ * Backs `hydranium-cli reflect`. Like the other headless harnesses the only
176
+ * language-specific input is the service factory, so the framework code stays
177
+ * head-neutral.
178
+ */
179
+ export function reflectGrammar(options: ReflectGrammarOptions): GrammarReflection {
180
+ const { shared } = options.createServices();
181
+ return collectGrammarReflection(shared.AstReflection, shared.ServiceRegistry.all);
182
+ }
@@ -0,0 +1,63 @@
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 LogPreambleOptions, logPreamble } from '../langium/diagnostics/log-preamble.js';
11
+ import { type ServerSharedServicesMinimal } from '../langium/shared-services.js';
12
+ import { type EventLoopMonitorOptions, startEventLoopMonitor } from './event-loop-monitor.js';
13
+ import { nodeLogPreambleSections } from './log-preamble-node.js';
14
+ import { type MemoryMonitorOptions, startMemoryMonitor } from './memory-monitor.js';
15
+
16
+ export interface ServerDiagnosticsOptions {
17
+ /**
18
+ * Session-preamble branding + thresholds. The Node runtime/host lines and
19
+ * monitor conventions are added automatically (see {@link nodeLogPreambleSections}),
20
+ * so adopters supply only their branding.
21
+ */
22
+ preamble: Pick<LogPreambleOptions, 'productName' | 'version' | 'phaseDetailThresholdMs'>;
23
+ /** Emit a one-shot `Initial Memory` line at startup. Default `true`. */
24
+ logInitialMemory?: boolean;
25
+ /** Overrides forwarded verbatim to {@link startEventLoopMonitor}. */
26
+ eventLoop?: EventLoopMonitorOptions;
27
+ /** Overrides forwarded verbatim to {@link startMemoryMonitor}. */
28
+ memory?: MemoryMonitorOptions;
29
+ }
30
+
31
+ /**
32
+ * The standard **Node** server-observability bringup: logs the session preamble
33
+ * (with Node runtime lines), an initial memory line, and starts the event-loop +
34
+ * heap monitors. Returns a teardown that stops both monitors.
35
+ *
36
+ * Node-only by nature — it owns the `perf_hooks` / `v8` monitors. A browser
37
+ * server has no such monitors; it just calls the portable
38
+ * {@link logPreamble} directly (no Node sections), so there is no browser
39
+ * counterpart to wrap.
40
+ *
41
+ * Option groups are nested (`preamble` / `eventLoop` / `memory`) and forwarded
42
+ * untouched to each primitive — the primitives stay usable standalone, and the
43
+ * groups avoid colliding on shared field names (e.g. both monitors take an
44
+ * `intervalMs`).
45
+ */
46
+ export function startServerDiagnostics(shared: ServerSharedServicesMinimal, options: ServerDiagnosticsOptions): () => void {
47
+ const { productName, version, phaseDetailThresholdMs } = options.preamble;
48
+ logPreamble(shared.Logger.for('LogFormat'), {
49
+ productName,
50
+ version,
51
+ phaseDetailThresholdMs,
52
+ ...nodeLogPreambleSections(phaseDetailThresholdMs)
53
+ });
54
+ if (options.logInitialMemory ?? true) {
55
+ shared.Tracer.for('Process').memory('Initial Memory');
56
+ }
57
+ const stopEventLoop = startEventLoopMonitor(shared, options.eventLoop);
58
+ const stopMemory = startMemoryMonitor(shared, options.memory);
59
+ return () => {
60
+ stopEventLoop();
61
+ stopMemory();
62
+ };
63
+ }
@@ -0,0 +1,192 @@
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 { Format } from '@hydranium/protocol';
11
+ import { DocumentState, type LangiumDocuments } from '@hydranium/langium';
12
+ import { isCstShed } from '../langium/residency/cst-residency-service.js';
13
+ import { performance } from 'node:perf_hooks';
14
+ import * as v8 from 'node:v8';
15
+
16
+ /** Cumulative samples kept across calls so each snapshot can report deltas. */
17
+ interface DeltaState {
18
+ atMs: number;
19
+ cpu: NodeJS.CpuUsage;
20
+ elu: { idle: number; active: number };
21
+ }
22
+ let lastSample: DeltaState | undefined;
23
+
24
+ /**
25
+ * A document held open by one or more clients, as reported by
26
+ * `HydraniumTextDocuments.openDocuments()` (whose `OpenDocument` entries are
27
+ * structurally assignable). The `uri` is pre-formatted by the caller (canonical
28
+ * URI or a shortened form — the snapshot prints it as given).
29
+ */
30
+ export interface OpenDocumentEntry {
31
+ readonly uri: string;
32
+ readonly clients: readonly string[];
33
+ }
34
+
35
+ /** Default for {@link ServerStateSnapshotOptions.openDocumentsListCap}. */
36
+ export const DEFAULT_OPEN_DOCUMENTS_LIST_CAP = 25;
37
+
38
+ /** Optional snapshot sections and their tuning knobs. */
39
+ export interface ServerStateSnapshotOptions {
40
+ /**
41
+ * Documents currently held open with the client ids holding them (from
42
+ * `HydraniumTextDocuments.openDocuments()`). When set, the snapshot lists
43
+ * them — the observable for client-release bugs: a document that lingers
44
+ * here after its editor closed names the client that failed to close it,
45
+ * and under a shedding policy it is exactly the set excluded from CST
46
+ * shedding.
47
+ */
48
+ readonly openDocuments?: readonly OpenDocumentEntry[];
49
+ /**
50
+ * Open-document entries printed individually before the list is elided to
51
+ * `… and N more`. Default {@link DEFAULT_OPEN_DOCUMENTS_LIST_CAP}.
52
+ */
53
+ readonly openDocumentsListCap?: number;
54
+ }
55
+
56
+ /**
57
+ * Format a multi-line server-state snapshot — heap, rss, V8 stats, event-loop
58
+ * utilisation, CPU usage, and document counts — and return it. Pure (the caller
59
+ * logs the result, e.g. `tracer.info(formatServerState(...))`), matching
60
+ * `formatProcessMemory` / `formatPodMemory`. Tracks deltas across calls so
61
+ * subsequent snapshots show "since last snapshot" rates. Optional sections are
62
+ * requested via `options` ({@link ServerStateSnapshotOptions}).
63
+ */
64
+ export function formatServerState(documents?: LangiumDocuments, label?: string, options?: ServerStateSnapshotOptions): string {
65
+ const now = performance.now();
66
+ const mem = process.memoryUsage();
67
+ const heap = v8.getHeapStatistics();
68
+ const cpu = process.cpuUsage();
69
+ const elu = (performance as { eventLoopUtilization?: () => { idle: number; active: number } }).eventLoopUtilization?.() ?? {
70
+ idle: 0,
71
+ active: 0
72
+ };
73
+
74
+ const heapPercent = Math.round((mem.heapUsed / heap.heap_size_limit) * 100);
75
+ const lines: string[] = [];
76
+ lines.push(label ? `Server state snapshot (${label}):` : 'Server state snapshot:');
77
+ lines.push(` uptime ${formatDuration(process.uptime() * 1000)}`);
78
+ lines.push(
79
+ ` heap ${Format.bytes(mem.heapUsed)} used / ${Format.bytes(mem.heapTotal)} total / ` +
80
+ `${Format.bytes(heap.heap_size_limit)} limit (${heapPercent}% of limit)`
81
+ );
82
+ lines.push(
83
+ ` rss ${Format.bytes(mem.rss)}, external ${Format.bytes(mem.external)}, arrayBuffers ${Format.bytes(mem.arrayBuffers)}`
84
+ );
85
+ lines.push(
86
+ ` v8 malloced ${Format.bytes(heap.malloced_memory)}, peak ${Format.bytes(heap.peak_malloced_memory)}, ` +
87
+ `native contexts ${heap.number_of_native_contexts}, detached contexts ${heap.number_of_detached_contexts}`
88
+ );
89
+ if (lastSample) {
90
+ const wallMs = now - lastSample.atMs;
91
+ const userMs = (cpu.user - lastSample.cpu.user) / 1000;
92
+ const systemMs = (cpu.system - lastSample.cpu.system) / 1000;
93
+ const cpuPct = wallMs > 0 ? Math.round(((userMs + systemMs) / wallMs) * 100) : 0;
94
+ const idleDelta = elu.idle - lastSample.elu.idle;
95
+ const activeDelta = elu.active - lastSample.elu.active;
96
+ const eluTotal = idleDelta + activeDelta;
97
+ const eluPct = eluTotal > 0 ? Math.round((activeDelta / eluTotal) * 100) : 0;
98
+ lines.push(
99
+ ` cpu user ${Math.round(userMs)}ms, system ${Math.round(systemMs)}ms ` + `in last ${Math.round(wallMs)}ms (${cpuPct}%)`
100
+ );
101
+ lines.push(
102
+ ` loop utilization ${eluPct}% (active ${Math.round(activeDelta)}ms / ` +
103
+ `idle ${Math.round(idleDelta)}ms since last snapshot)`
104
+ );
105
+ } else {
106
+ lines.push(
107
+ ` cpu user ${Math.round(cpu.user / 1000)}ms, system ${Math.round(cpu.system / 1000)}ms ` +
108
+ '(cumulative since process start)'
109
+ );
110
+ const eluTotal = elu.idle + elu.active;
111
+ const eluPct = eluTotal > 0 ? Math.round((elu.active / eluTotal) * 100) : 0;
112
+ lines.push(` loop utilization ${eluPct}% (cumulative since process start)`);
113
+ }
114
+ if (documents) {
115
+ const counts = countDocumentsByState(documents);
116
+ const total = Object.values(counts).reduce((sum, n) => sum + n, 0);
117
+ const breakdown = Object.entries(counts)
118
+ .filter(([, n]) => n > 0)
119
+ .map(([state, n]) => `${state}: ${n}`)
120
+ .join(', ');
121
+ lines.push(` documents ${total} tracked${breakdown ? ` (${breakdown})` : ''}`);
122
+ // CST-residency breakdown — only meaningful (and only emitted) once a residency
123
+ // policy has shed at least one document; silent under the always-keep default.
124
+ const residency = countCstResidency(documents);
125
+ if (residency.shed > 0) {
126
+ lines.push(` cst ${residency.resident} resident, ${residency.shed} shed`);
127
+ }
128
+ }
129
+ const openDocuments = options?.openDocuments;
130
+ if (openDocuments !== undefined) {
131
+ const listCap = options?.openDocumentsListCap ?? DEFAULT_OPEN_DOCUMENTS_LIST_CAP;
132
+ lines.push(` open ${openDocuments.length} document(s) held by a client (excluded from CST shedding)`);
133
+ for (const { uri, clients } of openDocuments.slice(0, listCap)) {
134
+ lines.push(` ${uri} [${clients.join(', ')}]`);
135
+ }
136
+ if (openDocuments.length > listCap) {
137
+ lines.push(` … and ${openDocuments.length - listCap} more`);
138
+ }
139
+ }
140
+
141
+ lastSample = { atMs: now, cpu, elu };
142
+ return lines.join('\n');
143
+ }
144
+
145
+ /**
146
+ * Count documents whose CST is resident vs. shed by a residency policy
147
+ * ({@link isCstShed}). A document can also be in neither bucket — not-yet-parsed
148
+ * or a synthetic placeholder with no `$cstNode` at all (nothing to be "resident"
149
+ * or "shed") — which is intentionally counted as neither; `resident + shed` is
150
+ * therefore ≤ total tracked, with the remainder explained by the state breakdown
151
+ * on the preceding `documents` line.
152
+ */
153
+ function countCstResidency(documents: LangiumDocuments): { resident: number; shed: number } {
154
+ let resident = 0;
155
+ let shed = 0;
156
+ for (const doc of documents.all) {
157
+ if (isCstShed(doc)) {
158
+ shed++;
159
+ } else if (doc.parseResult?.value?.$cstNode !== undefined) {
160
+ resident++;
161
+ }
162
+ // else: unparsed / synthetic — no CST, so neither resident nor shed.
163
+ }
164
+ return { resident, shed };
165
+ }
166
+
167
+ function countDocumentsByState(documents: LangiumDocuments): Record<string, number> {
168
+ const counts: Record<string, number> = {};
169
+ for (const doc of documents.all) {
170
+ const stateName = DocumentState[doc.state] ?? `Unknown(${doc.state})`;
171
+ counts[stateName] = (counts[stateName] ?? 0) + 1;
172
+ }
173
+ return counts;
174
+ }
175
+
176
+ function formatDuration(ms: number): string {
177
+ if (ms < 1000) {
178
+ return `${Math.round(ms)}ms`;
179
+ }
180
+ const totalSeconds = Math.floor(ms / 1000);
181
+ const seconds = totalSeconds % 60;
182
+ const totalMinutes = Math.floor(totalSeconds / 60);
183
+ const minutes = totalMinutes % 60;
184
+ const hours = Math.floor(totalMinutes / 60);
185
+ if (hours > 0) {
186
+ return `${hours}h ${minutes}m ${seconds}s`;
187
+ }
188
+ if (minutes > 0) {
189
+ return `${minutes}m ${seconds}s`;
190
+ }
191
+ return `${seconds}s`;
192
+ }