@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,119 @@
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
+ * Parse a document INTO THE WORKSPACE and hand back its typed semantic root.
11
+ *
12
+ * # What Langium's `parseHelper` leaves out
13
+ *
14
+ * `parseHelper` builds the text into a `LangiumDocument` and registers it on
15
+ * `LangiumDocuments`. It does not put the text on the workspace filesystem. For
16
+ * a single self-contained document that is enough; for anything a modelling
17
+ * language actually tests it is not, because the framework has readers that go
18
+ * to the filesystem rather than to the document registry:
19
+ *
20
+ * - project discovery reads descriptors through the `FileSystemProvider`, and a
21
+ * document whose project was never discovered gets no project-tier
22
+ * visibility — so a cross-project reference has nothing to resolve against;
23
+ * - `DocumentBuilder.update` re-reads a document's text from the provider, so a
24
+ * rebuild of a never-written document sees whatever the provider has, not
25
+ * what was parsed;
26
+ * - `getOrCreateDocument` for a URI not already registered loads it from the
27
+ * provider.
28
+ *
29
+ * The write is therefore not a convenience — it is what makes the document
30
+ * exist to the parts of the framework that do not consult `LangiumDocuments`.
31
+ *
32
+ * # Semantic root, not document root
33
+ *
34
+ * Grammars split two ways. Some make the meaningful declaration the document
35
+ * root itself; others wrap it, so the parse result is a container whose single
36
+ * populated property is the thing under test. This resolves both by checking
37
+ * the root against the guard first and then its direct children, which is why
38
+ * the caller supplies a type guard rather than a type argument: the narrowing
39
+ * has to happen at runtime, on a value whose shape only the guard knows.
40
+ *
41
+ * # Throws rather than asserting
42
+ *
43
+ * A syntax error makes every later assertion meaningless, so it is reported
44
+ * here — but through a thrown error, not a test framework's `expect`. Reaching
45
+ * for `expect` would bind this helper to one runner and put a global in a
46
+ * shipped module; a throw carries the offending messages just as well and reads
47
+ * the same under vitest, jest and a bare script.
48
+ *
49
+ * There is deliberately NO `$document` assignment. Langium sets `$document` on
50
+ * the parse root, and `AstUtils.getDocument` walks `$container` upwards from any
51
+ * descendant, so a returned child is already reachable to its document without
52
+ * a cast onto a read-only field.
53
+ */
54
+ import { AstUtils, URI } from '@hydranium/langium';
55
+ import { parseHelper } from '@hydranium/langium/test';
56
+ /**
57
+ * Build a parse function over `services` that returns roots narrowed by
58
+ * `guard`.
59
+ *
60
+ * The returned function is reusable across a suite and each call parses one
61
+ * document, so several calls against the same services build a linked
62
+ * multi-document workspace — which is the point: a cross-reference needs a
63
+ * target, and the target has to have been written too.
64
+ *
65
+ * `documentUri` is worth passing explicitly whenever the URI matters — a
66
+ * project-relative location, a specific file extension in a multi-grammar
67
+ * workspace. Without it Langium mints a counter-based `file:///N<ext>` URI,
68
+ * which lands every document at the workspace root under the first extension
69
+ * the language declares.
70
+ */
71
+ export function makeParseSemanticRoot(services, guard) {
72
+ const parse = parseHelper(services);
73
+ // Typed writable on `ServerSharedServices`; widened back to Langium's
74
+ // read-only slot type by `LangiumCoreServices` on the parameter, so the
75
+ // narrowing happens once here instead of at the write.
76
+ const fileSystem = services.shared.workspace.FileSystemProvider;
77
+ return async (text, options = {}) => {
78
+ // BEFORE the parse whenever the URI is known, because the build the parse
79
+ // triggers already has filesystem readers in it — project discovery reads
80
+ // the descriptor off the provider during that build, and a file not yet
81
+ // written is reported as unparseable, so the document's own project is
82
+ // missing for the build that matters.
83
+ if (options.documentUri !== undefined) {
84
+ await fileSystem.writeFile(URI.parse(options.documentUri), text);
85
+ }
86
+ const document = await parse(text, options);
87
+ // Only when the caller left the URI to Langium: the parse is what mints
88
+ // it, so the write cannot precede it, and it has to land on the URI the
89
+ // document was actually registered under or the two identities diverge
90
+ // and every filesystem reader sees nothing.
91
+ if (options.documentUri === undefined) {
92
+ await fileSystem.writeFile(URI.parse(document.textDocument.uri), text);
93
+ }
94
+ const expectedLexerErrors = options.lexerErrors ?? 0;
95
+ const expectedParserErrors = options.parserErrors ?? 0;
96
+ const lexerErrors = document.parseResult.lexerErrors;
97
+ const parserErrors = document.parseResult.parserErrors;
98
+ if (lexerErrors.length !== expectedLexerErrors) {
99
+ throw new Error(`Expected ${expectedLexerErrors} lexer error(s) in ${document.textDocument.uri}, got ${lexerErrors.length}:\n` +
100
+ lexerErrors.map(error => ` ${error.message}`).join('\n'));
101
+ }
102
+ if (parserErrors.length !== expectedParserErrors) {
103
+ throw new Error(`Expected ${expectedParserErrors} parser error(s) in ${document.textDocument.uri}, got ${parserErrors.length}:\n` +
104
+ parserErrors.map(error => ` ${error.message}`).join('\n'));
105
+ }
106
+ const root = document.parseResult.value;
107
+ if (guard(root)) {
108
+ return root;
109
+ }
110
+ for (const child of AstUtils.streamContents(root)) {
111
+ if (guard(child)) {
112
+ return child;
113
+ }
114
+ }
115
+ throw new Error(`No semantic root matching the guard in ${document.textDocument.uri}; the parse root is '${root.$type}' ` +
116
+ `with children ${[...AstUtils.streamContents(root)].map(child => `'${child.$type}'`).join(', ') || '(none)'}.`);
117
+ };
118
+ }
119
+ //# sourceMappingURL=parse-semantic-root.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parse-semantic-root.js","sourceRoot":"","sources":["../../src/testing/parse-semantic-root.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,80 @@
1
+ /********************************************************************************
2
+ * Copyright (c) 2026 CrossBreeze, EclipseSource and others.
3
+ *
4
+ * This program and the accompanying materials are made available under the
5
+ * terms of the MIT License which is available in the project root.
6
+ *
7
+ * SPDX-License-Identifier: MIT
8
+ ********************************************************************************/
9
+ import type { BrowserRuntimeSample, BrowserStateReport } from '@hydranium/protocol';
10
+ /**
11
+ * Structural subset of a Playwright `Page` used by the bridge — declared locally
12
+ * so this module imports nothing from `@playwright/test` (an optional peer). The
13
+ * single-argument `evaluate` matches Playwright's `page.evaluate(pageFunction)`.
14
+ */
15
+ export interface EvaluatablePage {
16
+ evaluate<R>(pageFunction: () => R | Promise<R>): Promise<R>;
17
+ }
18
+ /**
19
+ * Structural subset of a Playwright `CDPSession` — `send(method, params?)` plus the
20
+ * EventEmitter `on`/`off` for streamed responses. Declared locally so this module
21
+ * keeps its zero-dependency-on-`@playwright/test` discipline; the adopter obtains
22
+ * the real session with `page.context().newCDPSession(page)` and passes it in.
23
+ *
24
+ * CDP is a driver-side protocol — a session can only be opened by the process
25
+ * DRIVING the browser (Playwright), never by page JS on itself. That is why the
26
+ * CDP-backed captures ({@link captureBrowserRuntimeSample}, {@link captureBrowserHeapSnapshot})
27
+ * are e2e-only, whereas the page-side `page.evaluate` read this bridge also performs
28
+ * has a live counterpart in the frontend's "Dump Frontend State" command. The
29
+ * CDP captures also need no cross-origin isolation.
30
+ *
31
+ * `send`/`on`/`off` are declared as METHODS (not arrow-typed properties) on purpose:
32
+ * TypeScript checks method parameters bivariantly, so Playwright's `CDPSession` —
33
+ * whose `send` is typed per-method — is assignable to this neutral type with NO cast
34
+ * (`const cdp: CdpSession = await page.context().newCDPSession(page)`). Switching them
35
+ * to arrow properties would force contravariant checks and break that plug-in.
36
+ */
37
+ export interface CdpSession {
38
+ send(method: string, params?: Record<string, unknown>): Promise<unknown>;
39
+ on(event: string, handler: (payload: unknown) => void): void;
40
+ off?(event: string, handler: (payload: unknown) => void): void;
41
+ }
42
+ /** Default filename for the CDP renderer heap snapshot — the browser counterpart to the server's `server-heap`. */
43
+ export declare const BROWSER_HEAP_SNAPSHOT_FILE = "browser-heap.heapsnapshot";
44
+ /**
45
+ * Capture a renderer sample via CDP `Performance.getMetrics` (enabling the domain
46
+ * first). Maps the CDP `{name, value}` list onto the named {@link BrowserRuntimeSample}
47
+ * fields — `nodes`/`jsEventListeners`/`documents`/`frames`/`layoutCount`/
48
+ * `recalcStyleCount` + JS-heap used/total the `performance.memory` triple cannot
49
+ * give — omitting counters the runtime did not report.
50
+ */
51
+ export declare function captureBrowserRuntimeSample(cdp: CdpSession): Promise<BrowserRuntimeSample>;
52
+ /** Per-field `after − before` for the numeric counters present in BOTH samples; others are omitted. */
53
+ export declare function browserRuntimeDelta(before: BrowserRuntimeSample, after: BrowserRuntimeSample): BrowserRuntimeSample;
54
+ /**
55
+ * Capture the renderer's V8 heap snapshot via CDP `HeapProfiler.takeHeapSnapshot`
56
+ * (enabling the domain first) — the browser counterpart to the server's
57
+ * `server-heap.heapsnapshot`, giving the renderer the same retained-object-graph
58
+ * view. The snapshot streams as `addHeapSnapshotChunk` events; the chunks are
59
+ * concatenated and written to `sessionDir/<fileName>`. Returns the filename.
60
+ */
61
+ export declare function captureBrowserHeapSnapshot(cdp: CdpSession, sessionDir: string, fileName?: string): Promise<string>;
62
+ /**
63
+ * Start recording the main-thread timeline in the page — call BEFORE the scenario
64
+ * body so long tasks + user-timing spans accrue during it. Installs a
65
+ * `PerformanceObserver` (for the entry types the runtime supports, so it degrades
66
+ * cleanly where `longtask` is absent) and stashes it on `window` for
67
+ * {@link bridgeBrowserState} to stop. A no-op observer when no type is supported.
68
+ */
69
+ export declare function startBrowserTimeline(page: EvaluatablePage): Promise<void>;
70
+ /**
71
+ * Capture the browser-origin state AFTER the scenario body — the renderer runtime
72
+ * (precise `measureUserAgentSpecificMemory`, else coarse `performance.memory`, else
73
+ * `unavailable`) as a single-point {@link BrowserRuntimeReport} plus the timeline
74
+ * collected since {@link startBrowserTimeline} (stopping its observer) — and write
75
+ * `browser-timeline.json` into `sessionDir`. The runtime report is RETURNED (not
76
+ * written) so the caller can supersede it with the richer two-point CDP report
77
+ * before writing the single `browser-runtime.json`.
78
+ */
79
+ export declare function bridgeBrowserState(page: EvaluatablePage, sessionDir: string): Promise<BrowserStateReport>;
80
+ //# sourceMappingURL=browser-capture-bridge.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"browser-capture-bridge.d.ts","sourceRoot":"","sources":["../../../src/testing/playwright/browser-capture-bridge.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAwBlF,OAAO,KAAK,EAAwB,oBAAoB,EAAE,kBAAkB,EAAwB,MAAM,qBAAqB,CAAC;AAIhI;;;;GAIG;AACH,MAAM,WAAW,eAAe;IAC7B,QAAQ,CAAC,CAAC,EAAE,YAAY,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;CAC9D;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,WAAW,UAAU;IACxB,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACzE,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,GAAG,IAAI,CAAC;IAC7D,GAAG,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,GAAG,IAAI,CAAC;CACjE;AAiBD,mHAAmH;AACnH,eAAO,MAAM,0BAA0B,8BAA8B,CAAC;AAEtE;;;;;;GAMG;AACH,wBAAsB,2BAA2B,CAAC,GAAG,EAAE,UAAU,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAgBhG;AAED,uGAAuG;AACvG,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,oBAAoB,EAAE,KAAK,EAAE,oBAAoB,GAAG,oBAAoB,CAUnH;AAED;;;;;;GAMG;AACH,wBAAsB,0BAA0B,CAC7C,GAAG,EAAE,UAAU,EACf,UAAU,EAAE,MAAM,EAClB,QAAQ,GAAE,MAAmC,GAC7C,OAAO,CAAC,MAAM,CAAC,CAmBjB;AAiCD;;;;;;GAMG;AACH,wBAAsB,oBAAoB,CAAC,IAAI,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CAoB/E;AAED;;;;;;;;GAQG;AACH,wBAAsB,kBAAkB,CAAC,IAAI,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC,CA+B/G"}
@@ -0,0 +1,161 @@
1
+ /********************************************************************************
2
+ * Copyright (c) 2026 CrossBreeze, EclipseSource and others.
3
+ *
4
+ * This program and the accompanying materials are made available under the
5
+ * terms of the MIT License which is available in the project root.
6
+ *
7
+ * SPDX-License-Identifier: MIT
8
+ ********************************************************************************/
9
+ import { writeFileSync } from 'node:fs';
10
+ import { join } from 'node:path';
11
+ /** CDP `Performance.getMetrics` metric name → the {@link BrowserRuntimeSample} field it populates. */
12
+ const CDP_METRIC_FIELDS = {
13
+ JSHeapUsedSize: 'jsHeapUsedBytes',
14
+ JSHeapTotalSize: 'jsHeapTotalBytes',
15
+ Nodes: 'nodes',
16
+ JSEventListeners: 'jsEventListeners',
17
+ Documents: 'documents',
18
+ Frames: 'frames',
19
+ LayoutCount: 'layoutCount',
20
+ RecalcStyleCount: 'recalcStyleCount'
21
+ };
22
+ /** Numeric fields of a {@link BrowserRuntimeSample} — the CDP counters + JS-heap, which alone carry a delta. */
23
+ const NUMERIC_SAMPLE_FIELDS = Object.values(CDP_METRIC_FIELDS);
24
+ /** Default filename for the CDP renderer heap snapshot — the browser counterpart to the server's `server-heap`. */
25
+ export const BROWSER_HEAP_SNAPSHOT_FILE = 'browser-heap.heapsnapshot';
26
+ /**
27
+ * Capture a renderer sample via CDP `Performance.getMetrics` (enabling the domain
28
+ * first). Maps the CDP `{name, value}` list onto the named {@link BrowserRuntimeSample}
29
+ * fields — `nodes`/`jsEventListeners`/`documents`/`frames`/`layoutCount`/
30
+ * `recalcStyleCount` + JS-heap used/total the `performance.memory` triple cannot
31
+ * give — omitting counters the runtime did not report.
32
+ */
33
+ export async function captureBrowserRuntimeSample(cdp) {
34
+ await cdp.send('Performance.enable');
35
+ try {
36
+ const result = (await cdp.send('Performance.getMetrics'));
37
+ const sample = {};
38
+ for (const metric of result.metrics ?? []) {
39
+ const field = CDP_METRIC_FIELDS[metric.name];
40
+ if (field !== undefined) {
41
+ sample[field] = metric.value;
42
+ }
43
+ }
44
+ return sample;
45
+ }
46
+ finally {
47
+ // Balance the enable so the domain is not left on for the session's lifetime.
48
+ await cdp.send('Performance.disable').catch(() => undefined);
49
+ }
50
+ }
51
+ /** Per-field `after − before` for the numeric counters present in BOTH samples; others are omitted. */
52
+ export function browserRuntimeDelta(before, after) {
53
+ const delta = {};
54
+ for (const field of NUMERIC_SAMPLE_FIELDS) {
55
+ const from = before[field];
56
+ const to = after[field];
57
+ if (typeof from === 'number' && typeof to === 'number') {
58
+ delta[field] = to - from;
59
+ }
60
+ }
61
+ return delta;
62
+ }
63
+ /**
64
+ * Capture the renderer's V8 heap snapshot via CDP `HeapProfiler.takeHeapSnapshot`
65
+ * (enabling the domain first) — the browser counterpart to the server's
66
+ * `server-heap.heapsnapshot`, giving the renderer the same retained-object-graph
67
+ * view. The snapshot streams as `addHeapSnapshotChunk` events; the chunks are
68
+ * concatenated and written to `sessionDir/<fileName>`. Returns the filename.
69
+ */
70
+ export async function captureBrowserHeapSnapshot(cdp, sessionDir, fileName = BROWSER_HEAP_SNAPSHOT_FILE) {
71
+ await cdp.send('HeapProfiler.enable');
72
+ const chunks = [];
73
+ const onChunk = (payload) => {
74
+ const chunk = payload.chunk;
75
+ if (typeof chunk === 'string') {
76
+ chunks.push(chunk);
77
+ }
78
+ };
79
+ cdp.on('HeapProfiler.addHeapSnapshotChunk', onChunk);
80
+ try {
81
+ await cdp.send('HeapProfiler.takeHeapSnapshot', { reportProgress: false });
82
+ }
83
+ finally {
84
+ cdp.off?.('HeapProfiler.addHeapSnapshotChunk', onChunk);
85
+ // Balance the enable so the domain is not left on for the session's lifetime.
86
+ await cdp.send('HeapProfiler.disable').catch(() => undefined);
87
+ }
88
+ writeFileSync(join(sessionDir, fileName), chunks.join(''));
89
+ return fileName;
90
+ }
91
+ /**
92
+ * Start recording the main-thread timeline in the page — call BEFORE the scenario
93
+ * body so long tasks + user-timing spans accrue during it. Installs a
94
+ * `PerformanceObserver` (for the entry types the runtime supports, so it degrades
95
+ * cleanly where `longtask` is absent) and stashes it on `window` for
96
+ * {@link bridgeBrowserState} to stop. A no-op observer when no type is supported.
97
+ */
98
+ export async function startBrowserTimeline(page) {
99
+ await page.evaluate(() => {
100
+ const key = '__hydraniumBrowserTimeline__';
101
+ const scope = globalThis;
102
+ const entries = [];
103
+ const handle = { entries };
104
+ const ObserverCtor = globalThis.PerformanceObserver;
105
+ const supported = ObserverCtor?.supportedEntryTypes ?? [];
106
+ const types = ['longtask', 'measure'].filter(type => supported.includes(type));
107
+ if (ObserverCtor && types.length > 0) {
108
+ const observer = new ObserverCtor(list => {
109
+ for (const entry of list.getEntries()) {
110
+ entries.push({ name: entry.name, entryType: entry.entryType, startTimeMs: entry.startTime, durationMs: entry.duration });
111
+ }
112
+ });
113
+ observer.observe({ entryTypes: types });
114
+ handle.observer = observer;
115
+ }
116
+ scope[key] = handle;
117
+ });
118
+ }
119
+ /**
120
+ * Capture the browser-origin state AFTER the scenario body — the renderer runtime
121
+ * (precise `measureUserAgentSpecificMemory`, else coarse `performance.memory`, else
122
+ * `unavailable`) as a single-point {@link BrowserRuntimeReport} plus the timeline
123
+ * collected since {@link startBrowserTimeline} (stopping its observer) — and write
124
+ * `browser-timeline.json` into `sessionDir`. The runtime report is RETURNED (not
125
+ * written) so the caller can supersede it with the richer two-point CDP report
126
+ * before writing the single `browser-runtime.json`.
127
+ */
128
+ export async function bridgeBrowserState(page, sessionDir) {
129
+ const state = await page.evaluate(async () => {
130
+ const key = '__hydraniumBrowserTimeline__';
131
+ const scope = globalThis;
132
+ const perf = globalThis.performance;
133
+ let runtime = { source: 'unavailable', after: {} };
134
+ if (perf?.measureUserAgentSpecificMemory) {
135
+ try {
136
+ const result = await perf.measureUserAgentSpecificMemory();
137
+ runtime = { source: 'measureUserAgentSpecificMemory', after: { totalBytes: result.bytes, breakdown: result.breakdown } };
138
+ }
139
+ catch {
140
+ // COI missing or rate-limited — fall through to the coarse fallback.
141
+ }
142
+ }
143
+ if (runtime.source === 'unavailable' && perf?.memory) {
144
+ runtime = {
145
+ source: 'performance.memory',
146
+ after: {
147
+ jsHeapUsedBytes: perf.memory.usedJSHeapSize,
148
+ jsHeapTotalBytes: perf.memory.totalJSHeapSize,
149
+ jsHeapLimitBytes: perf.memory.jsHeapSizeLimit
150
+ }
151
+ };
152
+ }
153
+ const handle = scope[key];
154
+ handle?.observer?.disconnect();
155
+ const timeline = handle ? [...handle.entries] : [];
156
+ return { runtime, timeline };
157
+ });
158
+ writeFileSync(join(sessionDir, 'browser-timeline.json'), JSON.stringify(state.timeline, undefined, 2));
159
+ return state;
160
+ }
161
+ //# sourceMappingURL=browser-capture-bridge.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"browser-capture-bridge.js","sourceRoot":"","sources":["../../../src/testing/playwright/browser-capture-bridge.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,132 @@
1
+ /********************************************************************************
2
+ * Copyright (c) 2026 CrossBreeze, EclipseSource and others.
3
+ *
4
+ * This program and the accompanying materials are made available under the
5
+ * terms of the MIT License which is available in the project root.
6
+ *
7
+ * SPDX-License-Identifier: MIT
8
+ ********************************************************************************/
9
+ import { type BrowserRuntimeSample, type LatencyReport, type ProfileCaptureOptions, type ProfilingManifest } from '@hydranium/protocol';
10
+ import { type CdpSession, type EvaluatablePage } from './browser-capture-bridge.js';
11
+ /**
12
+ * Env flag that opts a run into e2e profiling. Its presence (any non-empty value)
13
+ * is the switch — {@link withE2EProfiling} is an inert pass-through when it is
14
+ * unset, so a spec can keep the wrapper permanently and only capture on demand.
15
+ */
16
+ export declare const DEFAULT_PROFILE_E2E_ENV = "HYDRANIUM_PROFILE_E2E";
17
+ /** True when the e2e profiling env flag is set to a non-empty value. */
18
+ export declare function isE2EProfilingEnabled(): boolean;
19
+ /**
20
+ * The environment a SPAWNED server needs for an e2e profiling run to have
21
+ * anything to report — spread into the `env` of whatever launches the server
22
+ * (Playwright's `webServer`, a `spawn`), since a child process inherits only
23
+ * what its launcher hands it.
24
+ *
25
+ * {@link finishE2EProfiling} calls `hooks.getLatency()`, but the collector that
26
+ * answers it is installed by `latencyFromEnv` in the server process and is
27
+ * off unless `HYDRANIUM_LATENCY` is set there. Setting only the profiling flag
28
+ * therefore yields a bundle whose `server-latency.json` is empty — a silent hole
29
+ * rather than a failure.
30
+ *
31
+ * Empty off a run with profiling disabled, so an unconditional spread leaves a
32
+ * normal run's environment untouched. An explicitly-set `HYDRANIUM_LATENCY` is
33
+ * passed through rather than overwritten.
34
+ */
35
+ export declare function e2eProfilingServerEnv(env?: Record<string, string | undefined>): Record<string, string>;
36
+ /** The default capture dimensions — every sampled dimension except the heavy `heapSnapshot`. */
37
+ export declare const DEFAULT_E2E_DIMENSIONS: ProfileCaptureOptions;
38
+ /**
39
+ * The adopter-supplied bridge to its model-service RPC — only the adopter knows how
40
+ * to reach the running head from the page (e.g. a `page.evaluate` into its frontend
41
+ * proxy). Each call maps to a `DataServerDiagnosticsProtocol` method.
42
+ */
43
+ export interface E2EProfilingHooks {
44
+ /** Begin the server-side sampled capture for the given dimensions. */
45
+ startProfiling(options: ProfileCaptureOptions): Promise<void>;
46
+ /** Stop the capture, writing the profile artefacts into `directory` (the session dir). */
47
+ stopProfiling(directory: string): Promise<unknown>;
48
+ /** Return the per-method RPC/LSP latency collected during the scenario. */
49
+ getLatency(): Promise<LatencyReport>;
50
+ }
51
+ /** Options shared by {@link startE2EProfiling} / {@link finishE2EProfiling} / {@link withE2EProfiling}. */
52
+ export interface E2EProfilingOptions {
53
+ /** The Playwright page — bridged for the browser runtime/timeline. */
54
+ page: EvaluatablePage;
55
+ /** The session directory both the server (profile files) and the assembler write into. */
56
+ sessionDir: string;
57
+ /** Adopter hooks reaching the model-service RPC. */
58
+ hooks: E2EProfilingHooks;
59
+ /** Capture dimensions; defaults to {@link DEFAULT_E2E_DIMENSIONS}. */
60
+ dimensions?: ProfileCaptureOptions;
61
+ /**
62
+ * A CDP session on {@link page} (`page.context().newCDPSession(page)`). When
63
+ * given, the run grades `browser-runtime.json` up to the two-point
64
+ * `cdp-performance` source — DOM nodes, listeners, JS heap + delta — which the
65
+ * `page.evaluate` bridge cannot reach. Absent: the run keeps the coarser
66
+ * `page.evaluate` runtime read (no CDP counters).
67
+ */
68
+ cdp?: CdpSession;
69
+ /** Also capture a renderer heap snapshot via CDP (heavy; opt-in, like the server's `heapSnapshot`). Requires {@link cdp}. */
70
+ browserHeapSnapshot?: boolean;
71
+ /** The pre-scenario runtime sample from {@link startE2EProfiling}, paired against the post-scenario sample for the delta. */
72
+ browserRuntimeBefore?: BrowserRuntimeSample;
73
+ /** A per-workspace server.log to fold into the bundle (copied to `<session>/server.log`). */
74
+ serverLogPath?: string;
75
+ /** A per-workspace browser-console log to fold into the bundle (copied to `<session>/browser-console.log`). */
76
+ browserLogPath?: string;
77
+ /** The commit the run reflects — anchors a skill's `file:line` findings. */
78
+ commit?: string;
79
+ /** The workspace under test. */
80
+ workspace?: string;
81
+ }
82
+ /** What {@link startE2EProfiling} hands back for {@link finishE2EProfiling} to pair against. */
83
+ export interface E2EProfilingStart {
84
+ /** The pre-scenario renderer-runtime sample, when a {@link E2EProfilingOptions.cdp} session was given. */
85
+ browserRuntimeBefore?: BrowserRuntimeSample;
86
+ }
87
+ /** Options for {@link assembleProfilingManifest}. */
88
+ export interface AssembleManifestOptions {
89
+ /** `app` (default here — an e2e run drives the real app) vs `harness`. */
90
+ mode?: 'harness' | 'app';
91
+ commit?: string;
92
+ workspace?: string;
93
+ /** Windows the run captured, when known (the e2e path typically has none). */
94
+ windows?: {
95
+ label: string;
96
+ ms: number;
97
+ }[];
98
+ container?: boolean;
99
+ }
100
+ /**
101
+ * Scan a session directory for the gathered profiling artefacts and write a
102
+ * `manifest.json` indexing them — the Playwright process assembles the bundle from
103
+ * the files the fixture gathered. Returns the manifest. Ignores its own
104
+ * `manifest.json` and loose `.txt` digests (referenced from their profile).
105
+ */
106
+ export declare function assembleProfilingManifest(sessionDir: string, options?: AssembleManifestOptions): ProfilingManifest;
107
+ /**
108
+ * Begin capture — call BEFORE the scenario body. Starts the server-side sampled
109
+ * profile (adopter hook) and the in-page main-thread timeline, and — when a CDP
110
+ * session is given — takes the pre-scenario renderer-runtime sample so
111
+ * {@link finishE2EProfiling} can report the growth delta.
112
+ */
113
+ export declare function startE2EProfiling(options: E2EProfilingOptions): Promise<E2EProfilingStart>;
114
+ /**
115
+ * End capture — call AFTER the scenario body. Stops the server capture (its files
116
+ * land in the session dir), writes `server-latency.json` from the RPC, bridges the
117
+ * browser state to disk (`browser-timeline.json` + a single source-graded
118
+ * `browser-runtime.json` — the richer two-point CDP read superseding the coarse
119
+ * `page.evaluate` read when a CDP session is given), folds in `server.log` when
120
+ * given, and assembles the manifest. Returns the manifest.
121
+ */
122
+ export declare function finishE2EProfiling(options: E2EProfilingOptions): Promise<ProfilingManifest>;
123
+ /**
124
+ * Bracket a scenario with a full profiling capture — the one-call ergonomic. When
125
+ * {@link isE2EProfilingEnabled} is false this is an inert pass-through (runs the
126
+ * scenario, captures nothing, returns `undefined`), so a spec keeps the wrapper
127
+ * permanently and profiles only when the env flag is set. The bundle is still
128
+ * assembled if the scenario throws (a failing run is worth profiling), and the
129
+ * scenario error is re-thrown after.
130
+ */
131
+ export declare function withE2EProfiling(options: E2EProfilingOptions, scenario: () => Promise<void>): Promise<ProfilingManifest | undefined>;
132
+ //# sourceMappingURL=e2e-profiling.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"e2e-profiling.d.ts","sourceRoot":"","sources":["../../../src/testing/playwright/e2e-profiling.ts"],"names":[],"mappings":"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"}