@hydranium/core 1.0.0-next.27 → 1.0.0-next.271

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 (735) hide show
  1. package/README.md +64 -82
  2. package/lib/documents/ast-document-manager.d.ts +219 -122
  3. package/lib/documents/ast-document-manager.d.ts.map +1 -1
  4. package/lib/documents/ast-document-manager.js +242 -130
  5. package/lib/documents/ast-document-manager.js.map +1 -1
  6. package/lib/documents/client-ids.d.ts +5 -19
  7. package/lib/documents/client-ids.d.ts.map +1 -1
  8. package/lib/documents/client-ids.js +5 -19
  9. package/lib/documents/client-ids.js.map +1 -1
  10. package/lib/documents/client-session-errors.d.ts +15 -0
  11. package/lib/documents/client-session-errors.d.ts.map +1 -0
  12. package/lib/documents/client-session-errors.js +15 -0
  13. package/lib/documents/client-session-errors.js.map +1 -0
  14. package/lib/documents/client-session-registry.d.ts +146 -0
  15. package/lib/documents/client-session-registry.d.ts.map +1 -0
  16. package/lib/documents/client-session-registry.js +207 -0
  17. package/lib/documents/client-session-registry.js.map +1 -0
  18. package/lib/documents/dirty-state-tracker.d.ts +86 -0
  19. package/lib/documents/dirty-state-tracker.d.ts.map +1 -0
  20. package/lib/documents/dirty-state-tracker.js +72 -0
  21. package/lib/documents/dirty-state-tracker.js.map +1 -0
  22. package/lib/documents/document-release-handler.d.ts +204 -0
  23. package/lib/documents/document-release-handler.d.ts.map +1 -0
  24. package/lib/documents/document-release-handler.js +317 -0
  25. package/lib/documents/document-release-handler.js.map +1 -0
  26. package/lib/documents/document-release-scheduler.d.ts +67 -0
  27. package/lib/documents/document-release-scheduler.d.ts.map +1 -0
  28. package/lib/documents/document-release-scheduler.js +80 -0
  29. package/lib/documents/document-release-scheduler.js.map +1 -0
  30. package/lib/documents/file-system-task-queue.d.ts +49 -0
  31. package/lib/documents/file-system-task-queue.d.ts.map +1 -0
  32. package/lib/documents/file-system-task-queue.js +34 -0
  33. package/lib/documents/file-system-task-queue.js.map +1 -0
  34. package/lib/documents/hydranium-text-documents.d.ts +401 -282
  35. package/lib/documents/hydranium-text-documents.d.ts.map +1 -1
  36. package/lib/documents/hydranium-text-documents.js +827 -483
  37. package/lib/documents/hydranium-text-documents.js.map +1 -1
  38. package/lib/documents/index.d.ts +10 -2
  39. package/lib/documents/index.d.ts.map +1 -1
  40. package/lib/documents/index.js +10 -2
  41. package/lib/documents/index.js.map +1 -1
  42. package/lib/documents/language-client-shadow.d.ts +218 -0
  43. package/lib/documents/language-client-shadow.d.ts.map +1 -0
  44. package/lib/documents/language-client-shadow.js +284 -0
  45. package/lib/documents/language-client-shadow.js.map +1 -0
  46. package/lib/documents/model-ledger.d.ts +47 -0
  47. package/lib/documents/model-ledger.d.ts.map +1 -0
  48. package/lib/documents/model-ledger.js +30 -0
  49. package/lib/documents/model-ledger.js.map +1 -0
  50. package/lib/documents/text-ledger.d.ts +64 -0
  51. package/lib/documents/text-ledger.d.ts.map +1 -0
  52. package/lib/documents/text-ledger.js +63 -0
  53. package/lib/documents/text-ledger.js.map +1 -0
  54. package/lib/documents/version-sync-service.d.ts +138 -0
  55. package/lib/documents/version-sync-service.d.ts.map +1 -0
  56. package/lib/documents/version-sync-service.js +173 -0
  57. package/lib/documents/version-sync-service.js.map +1 -0
  58. package/lib/index.d.ts +5 -0
  59. package/lib/index.d.ts.map +1 -1
  60. package/lib/index.js +8 -0
  61. package/lib/index.js.map +1 -1
  62. package/lib/langium/ast-extension/ast-extension-service.d.ts +3 -0
  63. package/lib/langium/ast-extension/ast-extension-service.d.ts.map +1 -1
  64. package/lib/langium/ast-extension/ast-extension-service.js.map +1 -1
  65. package/lib/langium/ast-extension/ast-node-builder.d.ts +32 -9
  66. package/lib/langium/ast-extension/ast-node-builder.d.ts.map +1 -1
  67. package/lib/langium/ast-extension/ast-node-builder.js +60 -22
  68. package/lib/langium/ast-extension/ast-node-builder.js.map +1 -1
  69. package/lib/langium/bootstrap.d.ts +34 -25
  70. package/lib/langium/bootstrap.d.ts.map +1 -1
  71. package/lib/langium/bootstrap.js +77 -37
  72. package/lib/langium/bootstrap.js.map +1 -1
  73. package/lib/langium/build-phase-pass/build-phase-pass-service.d.ts +1 -1
  74. package/lib/langium/build-phase-pass/build-phase-pass-service.d.ts.map +1 -1
  75. package/lib/langium/build-phase-pass/build-phase-pass-service.js.map +1 -1
  76. package/lib/langium/build-phase-pass/build-phase-pass.d.ts +1 -1
  77. package/lib/langium/composite-ast-reflection.d.ts +46 -0
  78. package/lib/langium/composite-ast-reflection.d.ts.map +1 -0
  79. package/lib/langium/composite-ast-reflection.js +97 -0
  80. package/lib/langium/composite-ast-reflection.js.map +1 -0
  81. package/lib/langium/config/configuration-provider.d.ts +81 -0
  82. package/lib/langium/config/configuration-provider.d.ts.map +1 -0
  83. package/lib/langium/config/configuration-provider.js +112 -0
  84. package/lib/langium/config/configuration-provider.js.map +1 -0
  85. package/lib/langium/config/index.d.ts +1 -0
  86. package/lib/langium/config/index.d.ts.map +1 -1
  87. package/lib/langium/config/index.js +1 -0
  88. package/lib/langium/config/index.js.map +1 -1
  89. package/lib/langium/config/settings.js.map +1 -1
  90. package/lib/langium/diagnostics/hydranium-langium-profiler.d.ts +9 -20
  91. package/lib/langium/diagnostics/hydranium-langium-profiler.d.ts.map +1 -1
  92. package/lib/langium/diagnostics/hydranium-langium-profiler.js +15 -24
  93. package/lib/langium/diagnostics/hydranium-langium-profiler.js.map +1 -1
  94. package/lib/langium/diagnostics/log-preamble.js +1 -1
  95. package/lib/langium/diagnostics/log-preamble.js.map +1 -1
  96. package/lib/langium/diagnostics/logger.d.ts +10 -3
  97. package/lib/langium/diagnostics/logger.d.ts.map +1 -1
  98. package/lib/langium/diagnostics/logger.js +12 -5
  99. package/lib/langium/diagnostics/logger.js.map +1 -1
  100. package/lib/langium/diagnostics/lsp-logger.d.ts +17 -0
  101. package/lib/langium/diagnostics/lsp-logger.d.ts.map +1 -1
  102. package/lib/langium/diagnostics/lsp-logger.js +58 -17
  103. package/lib/langium/diagnostics/lsp-logger.js.map +1 -1
  104. package/lib/langium/diagnostics/server-tracer.d.ts.map +1 -1
  105. package/lib/langium/diagnostics/server-tracer.js.map +1 -1
  106. package/lib/langium/document-builder/build-pipeline-integration.d.ts +21 -1
  107. package/lib/langium/document-builder/build-pipeline-integration.d.ts.map +1 -1
  108. package/lib/langium/document-builder/build-pipeline-integration.js +32 -5
  109. package/lib/langium/document-builder/build-pipeline-integration.js.map +1 -1
  110. package/lib/langium/document-builder/build-session.d.ts +6 -5
  111. package/lib/langium/document-builder/build-session.d.ts.map +1 -1
  112. package/lib/langium/document-builder/build-session.js +5 -5
  113. package/lib/langium/document-builder/build-session.js.map +1 -1
  114. package/lib/langium/document-builder/document-builder.d.ts +309 -35
  115. package/lib/langium/document-builder/document-builder.d.ts.map +1 -1
  116. package/lib/langium/document-builder/document-builder.js +511 -75
  117. package/lib/langium/document-builder/document-builder.js.map +1 -1
  118. package/lib/langium/documentation/comment-provider.d.ts.map +1 -1
  119. package/lib/langium/documentation/comment-provider.js.map +1 -1
  120. package/lib/langium/integration-services.d.ts +61 -19
  121. package/lib/langium/integration-services.d.ts.map +1 -1
  122. package/lib/langium/integration-services.js +10 -5
  123. package/lib/langium/integration-services.js.map +1 -1
  124. package/lib/langium/integrity/integrity-rule.d.ts +16 -8
  125. package/lib/langium/integrity/integrity-rule.d.ts.map +1 -1
  126. package/lib/langium/integrity/integrity-rule.js.map +1 -1
  127. package/lib/langium/integrity/integrity-service.d.ts +83 -27
  128. package/lib/langium/integrity/integrity-service.d.ts.map +1 -1
  129. package/lib/langium/integrity/integrity-service.js +273 -63
  130. package/lib/langium/integrity/integrity-service.js.map +1 -1
  131. package/lib/langium/keys/containment.d.ts +64 -0
  132. package/lib/langium/keys/containment.d.ts.map +1 -0
  133. package/lib/langium/keys/containment.js +53 -0
  134. package/lib/langium/keys/containment.js.map +1 -0
  135. package/lib/langium/keys/index.d.ts +1 -0
  136. package/lib/langium/keys/index.d.ts.map +1 -1
  137. package/lib/langium/keys/index.js +1 -0
  138. package/lib/langium/keys/index.js.map +1 -1
  139. package/lib/langium/keys/name-based-key-provider.d.ts +4 -0
  140. package/lib/langium/keys/name-based-key-provider.d.ts.map +1 -1
  141. package/lib/langium/keys/name-based-key-provider.js +4 -0
  142. package/lib/langium/keys/name-based-key-provider.js.map +1 -1
  143. package/lib/langium/keys/positional-key-provider.d.ts.map +1 -1
  144. package/lib/langium/keys/positional-key-provider.js.map +1 -1
  145. package/lib/langium/labeling/label-provider.d.ts.map +1 -1
  146. package/lib/langium/labeling/label-provider.js.map +1 -1
  147. package/lib/langium/language-module.d.ts +30 -5
  148. package/lib/langium/language-module.d.ts.map +1 -1
  149. package/lib/langium/language-module.js +18 -4
  150. package/lib/langium/language-module.js.map +1 -1
  151. package/lib/langium/model-service/client-session.d.ts +343 -0
  152. package/lib/langium/model-service/client-session.d.ts.map +1 -0
  153. package/lib/langium/model-service/client-session.js +428 -0
  154. package/lib/langium/model-service/client-session.js.map +1 -0
  155. package/lib/langium/model-service/index.d.ts +2 -0
  156. package/lib/langium/model-service/index.d.ts.map +1 -1
  157. package/lib/langium/model-service/index.js +2 -0
  158. package/lib/langium/model-service/index.js.map +1 -1
  159. package/lib/langium/model-service/model-events.d.ts +61 -0
  160. package/lib/langium/model-service/model-events.d.ts.map +1 -0
  161. package/lib/langium/model-service/model-events.js +10 -0
  162. package/lib/langium/model-service/model-events.js.map +1 -0
  163. package/lib/langium/model-service/model-service.d.ts +433 -282
  164. package/lib/langium/model-service/model-service.d.ts.map +1 -1
  165. package/lib/langium/model-service/model-service.js +537 -441
  166. package/lib/langium/model-service/model-service.js.map +1 -1
  167. package/lib/langium/module.d.ts +151 -36
  168. package/lib/langium/module.d.ts.map +1 -1
  169. package/lib/langium/module.js +48 -36
  170. package/lib/langium/module.js.map +1 -1
  171. package/lib/langium/naming/name-provider.d.ts +27 -6
  172. package/lib/langium/naming/name-provider.d.ts.map +1 -1
  173. package/lib/langium/naming/name-provider.js +4 -3
  174. package/lib/langium/naming/name-provider.js.map +1 -1
  175. package/lib/langium/naming/name-separator-validation.d.ts +23 -1
  176. package/lib/langium/naming/name-separator-validation.d.ts.map +1 -1
  177. package/lib/langium/naming/name-separator-validation.js +22 -0
  178. package/lib/langium/naming/name-separator-validation.js.map +1 -1
  179. package/lib/langium/project/abstract-project-manager.d.ts.map +1 -1
  180. package/lib/langium/project/abstract-project-manager.js +13 -6
  181. package/lib/langium/project/abstract-project-manager.js.map +1 -1
  182. package/lib/langium/project/project-change-event.d.ts +2 -2
  183. package/lib/langium/project/single-project-manager.d.ts.map +1 -1
  184. package/lib/langium/project/single-project-manager.js.map +1 -1
  185. package/lib/langium/residency/cst-residency-service.d.ts +35 -12
  186. package/lib/langium/residency/cst-residency-service.d.ts.map +1 -1
  187. package/lib/langium/residency/cst-residency-service.js +23 -57
  188. package/lib/langium/residency/cst-residency-service.js.map +1 -1
  189. package/lib/langium/scope/ast-node-description-provider.d.ts.map +1 -1
  190. package/lib/langium/scope/ast-node-description-provider.js.map +1 -1
  191. package/lib/langium/scope/fallback-scope.d.ts +27 -0
  192. package/lib/langium/scope/fallback-scope.d.ts.map +1 -0
  193. package/lib/langium/scope/fallback-scope.js +35 -0
  194. package/lib/langium/scope/fallback-scope.js.map +1 -0
  195. package/lib/langium/scope/hydranium-scope-computation.d.ts +21 -18
  196. package/lib/langium/scope/hydranium-scope-computation.d.ts.map +1 -1
  197. package/lib/langium/scope/hydranium-scope-computation.js +38 -39
  198. package/lib/langium/scope/hydranium-scope-computation.js.map +1 -1
  199. package/lib/langium/scope/hydranium-scope-provider.d.ts +61 -24
  200. package/lib/langium/scope/hydranium-scope-provider.d.ts.map +1 -1
  201. package/lib/langium/scope/hydranium-scope-provider.js +74 -35
  202. package/lib/langium/scope/hydranium-scope-provider.js.map +1 -1
  203. package/lib/langium/scope/index.d.ts +1 -0
  204. package/lib/langium/scope/index.d.ts.map +1 -1
  205. package/lib/langium/scope/index.js +1 -0
  206. package/lib/langium/scope/index.js.map +1 -1
  207. package/lib/langium/scope/reference-builder.d.ts.map +1 -1
  208. package/lib/langium/scope/reference-builder.js.map +1 -1
  209. package/lib/langium/scope/reference-candidate-provider.d.ts +6 -5
  210. package/lib/langium/scope/reference-candidate-provider.d.ts.map +1 -1
  211. package/lib/langium/scope/reference-candidate-provider.js +3 -2
  212. package/lib/langium/scope/reference-candidate-provider.js.map +1 -1
  213. package/lib/langium/scope/scope-extension-service.d.ts +41 -37
  214. package/lib/langium/scope/scope-extension-service.d.ts.map +1 -1
  215. package/lib/langium/scope/scope-extension-service.js +57 -29
  216. package/lib/langium/scope/scope-extension-service.js.map +1 -1
  217. package/lib/langium/scope/scoped-ast-node-description.d.ts +1 -3
  218. package/lib/langium/scope/scoped-ast-node-description.d.ts.map +1 -1
  219. package/lib/langium/scope/scoped-ast-node-description.js +1 -3
  220. package/lib/langium/scope/scoped-ast-node-description.js.map +1 -1
  221. package/lib/langium/serialization/abstract-serializer.d.ts +11 -20
  222. package/lib/langium/serialization/abstract-serializer.d.ts.map +1 -1
  223. package/lib/langium/serialization/abstract-serializer.js +12 -21
  224. package/lib/langium/serialization/abstract-serializer.js.map +1 -1
  225. package/lib/langium/serialization/json-serializer.d.ts +1 -1
  226. package/lib/langium/serialization/json-serializer.d.ts.map +1 -1
  227. package/lib/langium/serialization/json-serializer.js.map +1 -1
  228. package/lib/langium/serialization/serializer.d.ts +1 -1
  229. package/lib/langium/serialization/yaml-serializer.d.ts.map +1 -1
  230. package/lib/langium/serialization/yaml-serializer.js.map +1 -1
  231. package/lib/langium/service-registry.d.ts +29 -1
  232. package/lib/langium/service-registry.d.ts.map +1 -1
  233. package/lib/langium/service-registry.js +37 -0
  234. package/lib/langium/service-registry.js.map +1 -1
  235. package/lib/langium/shared-services.d.ts +23 -6
  236. package/lib/langium/shared-services.d.ts.map +1 -1
  237. package/lib/langium/shared-services.js.map +1 -1
  238. package/lib/langium/single-langium-copy.d.ts +22 -0
  239. package/lib/langium/single-langium-copy.d.ts.map +1 -0
  240. package/lib/langium/single-langium-copy.js +36 -0
  241. package/lib/langium/single-langium-copy.js.map +1 -0
  242. package/lib/langium/transfer/transfer-encoder.d.ts +88 -36
  243. package/lib/langium/transfer/transfer-encoder.d.ts.map +1 -1
  244. package/lib/langium/transfer/transfer-encoder.js +46 -24
  245. package/lib/langium/transfer/transfer-encoder.js.map +1 -1
  246. package/lib/langium/trivia/comment-preserver.d.ts +423 -0
  247. package/lib/langium/trivia/comment-preserver.d.ts.map +1 -0
  248. package/lib/langium/trivia/comment-preserver.js +906 -0
  249. package/lib/langium/trivia/comment-preserver.js.map +1 -0
  250. package/lib/langium/trivia/document-ending-preserver.d.ts +43 -0
  251. package/lib/langium/trivia/document-ending-preserver.d.ts.map +1 -0
  252. package/lib/langium/trivia/document-ending-preserver.js +48 -0
  253. package/lib/langium/trivia/document-ending-preserver.js.map +1 -0
  254. package/lib/langium/trivia/index.d.ts +14 -0
  255. package/lib/langium/trivia/index.d.ts.map +1 -0
  256. package/lib/langium/trivia/index.js +14 -0
  257. package/lib/langium/trivia/index.js.map +1 -0
  258. package/lib/langium/trivia/trivia-contribution.d.ts +37 -0
  259. package/lib/langium/trivia/trivia-contribution.d.ts.map +1 -0
  260. package/lib/langium/trivia/trivia-contribution.js +10 -0
  261. package/lib/langium/trivia/trivia-contribution.js.map +1 -0
  262. package/lib/langium/trivia/trivia-preserver.d.ts +50 -0
  263. package/lib/langium/trivia/trivia-preserver.d.ts.map +1 -0
  264. package/lib/langium/trivia/trivia-preserver.js +10 -0
  265. package/lib/langium/trivia/trivia-preserver.js.map +1 -0
  266. package/lib/langium/trivia/trivia-service.d.ts +70 -0
  267. package/lib/langium/trivia/trivia-service.d.ts.map +1 -0
  268. package/lib/langium/trivia/trivia-service.js +56 -0
  269. package/lib/langium/trivia/trivia-service.js.map +1 -0
  270. package/lib/langium/update-rewrite/normalize-empty-strings.d.ts.map +1 -1
  271. package/lib/langium/update-rewrite/update-rewrite-service.d.ts +1 -1
  272. package/lib/langium/update-rewrite/update-rewrite-service.d.ts.map +1 -1
  273. package/lib/langium/update-rewrite/update-rewrite-service.js.map +1 -1
  274. package/lib/langium/update-rewrite/update-rewrite.d.ts +1 -1
  275. package/lib/langium/validation/document-validator.d.ts +280 -9
  276. package/lib/langium/validation/document-validator.d.ts.map +1 -1
  277. package/lib/langium/validation/document-validator.js +453 -8
  278. package/lib/langium/validation/document-validator.js.map +1 -1
  279. package/lib/langium/validation/validation-contribution-collector.d.ts +9 -1
  280. package/lib/langium/validation/validation-contribution-collector.d.ts.map +1 -1
  281. package/lib/langium/validation/validation-contribution-collector.js +1 -1
  282. package/lib/langium/validation/validation-contribution-collector.js.map +1 -1
  283. package/lib/langium/workspace/document-uri-policy.d.ts +15 -10
  284. package/lib/langium/workspace/document-uri-policy.d.ts.map +1 -1
  285. package/lib/langium/workspace/document-uri-policy.js +7 -5
  286. package/lib/langium/workspace/document-uri-policy.js.map +1 -1
  287. package/lib/langium/workspace/file-not-found.d.ts +23 -0
  288. package/lib/langium/workspace/file-not-found.d.ts.map +1 -0
  289. package/lib/langium/workspace/file-not-found.js +31 -0
  290. package/lib/langium/workspace/file-not-found.js.map +1 -0
  291. package/lib/langium/workspace/file-system-provider.d.ts +147 -9
  292. package/lib/langium/workspace/file-system-provider.d.ts.map +1 -1
  293. package/lib/langium/workspace/file-system-provider.js +97 -14
  294. package/lib/langium/workspace/file-system-provider.js.map +1 -1
  295. package/lib/langium/workspace/hydranium-langium-document-factory.d.ts +56 -1
  296. package/lib/langium/workspace/hydranium-langium-document-factory.d.ts.map +1 -1
  297. package/lib/langium/workspace/hydranium-langium-document-factory.js +79 -0
  298. package/lib/langium/workspace/hydranium-langium-document-factory.js.map +1 -1
  299. package/lib/langium/workspace/hydranium-workspace-lock.d.ts +43 -1
  300. package/lib/langium/workspace/hydranium-workspace-lock.d.ts.map +1 -1
  301. package/lib/langium/workspace/hydranium-workspace-lock.js +58 -1
  302. package/lib/langium/workspace/hydranium-workspace-lock.js.map +1 -1
  303. package/lib/langium/workspace/hydranium-workspace-manager.d.ts +82 -9
  304. package/lib/langium/workspace/hydranium-workspace-manager.d.ts.map +1 -1
  305. package/lib/langium/workspace/hydranium-workspace-manager.js +129 -12
  306. package/lib/langium/workspace/hydranium-workspace-manager.js.map +1 -1
  307. package/lib/langium/workspace/in-memory-file-system-provider.d.ts +22 -7
  308. package/lib/langium/workspace/in-memory-file-system-provider.d.ts.map +1 -1
  309. package/lib/langium/workspace/in-memory-file-system-provider.js +36 -19
  310. package/lib/langium/workspace/in-memory-file-system-provider.js.map +1 -1
  311. package/lib/langium/workspace/index-manager.d.ts.map +1 -1
  312. package/lib/langium/workspace/index-manager.js.map +1 -1
  313. package/lib/langium/workspace/index.d.ts +1 -0
  314. package/lib/langium/workspace/index.d.ts.map +1 -1
  315. package/lib/langium/workspace/index.js +1 -0
  316. package/lib/langium/workspace/index.js.map +1 -1
  317. package/lib/langium/workspace/initialize-workspace.d.ts +31 -2
  318. package/lib/langium/workspace/initialize-workspace.d.ts.map +1 -1
  319. package/lib/langium/workspace/initialize-workspace.js +13 -5
  320. package/lib/langium/workspace/initialize-workspace.js.map +1 -1
  321. package/lib/langium/workspace/langium-documents.d.ts +37 -4
  322. package/lib/langium/workspace/langium-documents.d.ts.map +1 -1
  323. package/lib/langium/workspace/langium-documents.js +49 -4
  324. package/lib/langium/workspace/langium-documents.js.map +1 -1
  325. package/lib/langium/workspace/persistent-file-system-provider.d.ts +1 -8
  326. package/lib/langium/workspace/persistent-file-system-provider.d.ts.map +1 -1
  327. package/lib/langium/workspace/persistent-file-system-provider.js +2 -8
  328. package/lib/langium/workspace/persistent-file-system-provider.js.map +1 -1
  329. package/lib/langium/workspace/self-save-registry.d.ts +84 -0
  330. package/lib/langium/workspace/self-save-registry.d.ts.map +1 -0
  331. package/lib/{documents → langium/workspace}/self-save-registry.js +33 -22
  332. package/lib/langium/workspace/self-save-registry.js.map +1 -0
  333. package/lib/langium/workspace/virtual-document.d.ts +48 -15
  334. package/lib/langium/workspace/virtual-document.d.ts.map +1 -1
  335. package/lib/langium/workspace/virtual-document.js +78 -18
  336. package/lib/langium/workspace/virtual-document.js.map +1 -1
  337. package/lib/langium/workspace/write-lock-scope.d.ts +20 -10
  338. package/lib/langium/workspace/write-lock-scope.d.ts.map +1 -1
  339. package/lib/langium/workspace/write-lock-scope.js +12 -4
  340. package/lib/langium/workspace/write-lock-scope.js.map +1 -1
  341. package/lib/launcher/integrated-server.d.ts +3 -1
  342. package/lib/launcher/integrated-server.d.ts.map +1 -1
  343. package/lib/locale/index.d.ts +10 -0
  344. package/lib/locale/index.d.ts.map +1 -0
  345. package/lib/locale/index.js +10 -0
  346. package/lib/locale/index.js.map +1 -0
  347. package/lib/locale/server-locale.d.ts +73 -0
  348. package/lib/locale/server-locale.d.ts.map +1 -0
  349. package/lib/locale/server-locale.js +61 -0
  350. package/lib/locale/server-locale.js.map +1 -0
  351. package/lib/lsp/completion/hydranium-completion-provider.d.ts +44 -2
  352. package/lib/lsp/completion/hydranium-completion-provider.d.ts.map +1 -1
  353. package/lib/lsp/completion/hydranium-completion-provider.js +68 -0
  354. package/lib/lsp/completion/hydranium-completion-provider.js.map +1 -1
  355. package/lib/lsp/connection-features.d.ts +23 -0
  356. package/lib/lsp/connection-features.d.ts.map +1 -0
  357. package/lib/lsp/connection-features.js +60 -0
  358. package/lib/lsp/connection-features.js.map +1 -0
  359. package/lib/lsp/diagnostics-connection.d.ts +27 -0
  360. package/lib/lsp/diagnostics-connection.d.ts.map +1 -0
  361. package/lib/lsp/diagnostics-connection.js +53 -0
  362. package/lib/lsp/diagnostics-connection.js.map +1 -0
  363. package/lib/lsp/hydranium-document-update-handler.d.ts +92 -81
  364. package/lib/lsp/hydranium-document-update-handler.d.ts.map +1 -1
  365. package/lib/lsp/hydranium-document-update-handler.js +155 -101
  366. package/lib/lsp/hydranium-document-update-handler.js.map +1 -1
  367. package/lib/lsp/index.d.ts +3 -1
  368. package/lib/lsp/index.d.ts.map +1 -1
  369. package/lib/lsp/index.js +3 -1
  370. package/lib/lsp/index.js.map +1 -1
  371. package/lib/lsp/lsp-latency.d.ts +39 -0
  372. package/lib/lsp/lsp-latency.d.ts.map +1 -0
  373. package/lib/lsp/lsp-latency.js +58 -0
  374. package/lib/lsp/lsp-latency.js.map +1 -0
  375. package/lib/lsp/semantic-token-provider.d.ts +34 -1
  376. package/lib/lsp/semantic-token-provider.d.ts.map +1 -1
  377. package/lib/lsp/semantic-token-provider.js +55 -8
  378. package/lib/lsp/semantic-token-provider.js.map +1 -1
  379. package/lib/lsp/shared-module.d.ts +4 -8
  380. package/lib/lsp/shared-module.d.ts.map +1 -1
  381. package/lib/lsp/shared-module.js.map +1 -1
  382. package/lib/lsp/start-language-server.d.ts +8 -7
  383. package/lib/lsp/start-language-server.d.ts.map +1 -1
  384. package/lib/lsp/start-language-server.js +13 -7
  385. package/lib/lsp/start-language-server.js.map +1 -1
  386. package/lib/messages/carriers.d.ts +18 -12
  387. package/lib/messages/carriers.d.ts.map +1 -1
  388. package/lib/messages/carriers.js +22 -13
  389. package/lib/messages/carriers.js.map +1 -1
  390. package/lib/messages/index.d.ts +4 -1
  391. package/lib/messages/index.d.ts.map +1 -1
  392. package/lib/messages/index.js +4 -1
  393. package/lib/messages/index.js.map +1 -1
  394. package/lib/messages/renderer.d.ts +142 -0
  395. package/lib/messages/renderer.d.ts.map +1 -0
  396. package/lib/messages/renderer.js +165 -0
  397. package/lib/messages/renderer.js.map +1 -0
  398. package/lib/node/event-loop-monitor.d.ts.map +1 -1
  399. package/lib/node/event-loop-monitor.js +2 -1
  400. package/lib/node/event-loop-monitor.js.map +1 -1
  401. package/lib/node/heap-ceiling.d.ts +61 -0
  402. package/lib/node/heap-ceiling.d.ts.map +1 -0
  403. package/lib/node/heap-ceiling.js +72 -0
  404. package/lib/node/heap-ceiling.js.map +1 -0
  405. package/lib/node/index.d.ts +1 -1
  406. package/lib/node/index.d.ts.map +1 -1
  407. package/lib/node/index.js +1 -1
  408. package/lib/node/index.js.map +1 -1
  409. package/lib/node/latency-from-env.d.ts +1 -1
  410. package/lib/node/latency-from-env.js +1 -1
  411. package/lib/node/lint-grammar.js.map +1 -1
  412. package/lib/node/log-preamble-node.d.ts +5 -3
  413. package/lib/node/log-preamble-node.d.ts.map +1 -1
  414. package/lib/node/log-preamble-node.js +13 -10
  415. package/lib/node/log-preamble-node.js.map +1 -1
  416. package/lib/node/measure-memory.d.ts.map +1 -1
  417. package/lib/node/measure-memory.js +5 -4
  418. package/lib/node/measure-memory.js.map +1 -1
  419. package/lib/node/memory-monitor.d.ts +2 -2
  420. package/lib/node/memory-monitor.d.ts.map +1 -1
  421. package/lib/node/memory-monitor.js +9 -10
  422. package/lib/node/memory-monitor.js.map +1 -1
  423. package/lib/node/node-file-system-provider.d.ts +54 -9
  424. package/lib/node/node-file-system-provider.d.ts.map +1 -1
  425. package/lib/node/node-file-system-provider.js +141 -52
  426. package/lib/node/node-file-system-provider.js.map +1 -1
  427. package/lib/node/profile-capture.d.ts +12 -4
  428. package/lib/node/profile-capture.d.ts.map +1 -1
  429. package/lib/node/profile-capture.js +8 -6
  430. package/lib/node/profile-capture.js.map +1 -1
  431. package/lib/node/profile-digest.js.map +1 -1
  432. package/lib/node/profiling-run.d.ts +13 -3
  433. package/lib/node/profiling-run.d.ts.map +1 -1
  434. package/lib/node/profiling-run.js +17 -8
  435. package/lib/node/profiling-run.js.map +1 -1
  436. package/lib/node/rename-over-open-readers.d.ts +61 -0
  437. package/lib/node/rename-over-open-readers.d.ts.map +1 -0
  438. package/lib/node/rename-over-open-readers.js +80 -0
  439. package/lib/node/rename-over-open-readers.js.map +1 -0
  440. package/lib/node/server-diagnostics.js +1 -1
  441. package/lib/node/server-diagnostics.js.map +1 -1
  442. package/lib/node/server-state-snapshot.js +4 -4
  443. package/lib/node/server-state-snapshot.js.map +1 -1
  444. package/lib/node/socket-launcher.d.ts +20 -4
  445. package/lib/node/socket-launcher.d.ts.map +1 -1
  446. package/lib/node/socket-launcher.js +8 -7
  447. package/lib/node/socket-launcher.js.map +1 -1
  448. package/lib/node/stdio-launcher.d.ts +6 -5
  449. package/lib/node/stdio-launcher.d.ts.map +1 -1
  450. package/lib/node/stdio-launcher.js +13 -4
  451. package/lib/node/stdio-launcher.js.map +1 -1
  452. package/lib/testing/document-uri-policy-conformance.js +1 -1
  453. package/lib/testing/document-uri-policy-conformance.js.map +1 -1
  454. package/lib/testing/fake-description.js.map +1 -1
  455. package/lib/testing/fake-document.d.ts +16 -4
  456. package/lib/testing/fake-document.d.ts.map +1 -1
  457. package/lib/testing/fake-document.js +18 -3
  458. package/lib/testing/fake-document.js.map +1 -1
  459. package/lib/testing/index.d.ts +1 -1
  460. package/lib/testing/index.d.ts.map +1 -1
  461. package/lib/testing/index.js +2 -1
  462. package/lib/testing/index.js.map +1 -1
  463. package/lib/testing/langium-test-helpers.d.ts.map +1 -1
  464. package/lib/testing/langium-test-helpers.js +1 -0
  465. package/lib/testing/langium-test-helpers.js.map +1 -1
  466. package/lib/testing/make-noop-language-services.js.map +1 -1
  467. package/lib/testing/make-noop-shared-services.d.ts +14 -0
  468. package/lib/testing/make-noop-shared-services.d.ts.map +1 -1
  469. package/lib/testing/make-noop-shared-services.js +28 -2
  470. package/lib/testing/make-noop-shared-services.js.map +1 -1
  471. package/lib/testing/make-test-services.d.ts +72 -14
  472. package/lib/testing/make-test-services.d.ts.map +1 -1
  473. package/lib/testing/make-test-services.js +42 -10
  474. package/lib/testing/make-test-services.js.map +1 -1
  475. package/lib/testing/make-test-tracer.d.ts +12 -0
  476. package/lib/testing/make-test-tracer.d.ts.map +1 -1
  477. package/lib/testing/make-test-tracer.js +13 -0
  478. package/lib/testing/make-test-tracer.js.map +1 -1
  479. package/lib/testing/node/applied-edit-capture.d.ts +29 -0
  480. package/lib/testing/node/applied-edit-capture.d.ts.map +1 -0
  481. package/lib/testing/node/applied-edit-capture.js +115 -0
  482. package/lib/testing/node/applied-edit-capture.js.map +1 -0
  483. package/lib/testing/node/golden-corpus.js.map +1 -1
  484. package/lib/testing/node/index.d.ts +1 -0
  485. package/lib/testing/node/index.d.ts.map +1 -1
  486. package/lib/testing/node/index.js +1 -0
  487. package/lib/testing/node/index.js.map +1 -1
  488. package/lib/testing/node/lsp-harness.d.ts.map +1 -1
  489. package/lib/testing/node/lsp-harness.js +2 -0
  490. package/lib/testing/node/lsp-harness.js.map +1 -1
  491. package/lib/testing/node/lsp-server-connection.d.ts +12 -4
  492. package/lib/testing/node/lsp-server-connection.d.ts.map +1 -1
  493. package/lib/testing/node/lsp-server-connection.js +45 -106
  494. package/lib/testing/node/lsp-server-connection.js.map +1 -1
  495. package/lib/testing/node/scratch-workspace.d.ts.map +1 -1
  496. package/lib/testing/node/scratch-workspace.js +10 -5
  497. package/lib/testing/node/scratch-workspace.js.map +1 -1
  498. package/lib/testing/node/spawned-server.d.ts +30 -1
  499. package/lib/testing/node/spawned-server.d.ts.map +1 -1
  500. package/lib/testing/node/spawned-server.js +39 -2
  501. package/lib/testing/node/spawned-server.js.map +1 -1
  502. package/lib/testing/node/unhandled-rejections.d.ts +20 -0
  503. package/lib/testing/node/unhandled-rejections.d.ts.map +1 -0
  504. package/lib/testing/node/unhandled-rejections.js +32 -0
  505. package/lib/testing/node/unhandled-rejections.js.map +1 -0
  506. package/lib/testing/playwright/browser-capture-bridge.js.map +1 -1
  507. package/lib/testing/playwright/e2e-profiling.js.map +1 -1
  508. package/lib/testing/playwright/flaky-network-proxy.d.ts +76 -0
  509. package/lib/testing/playwright/flaky-network-proxy.d.ts.map +1 -0
  510. package/lib/testing/playwright/flaky-network-proxy.js +164 -0
  511. package/lib/testing/playwright/flaky-network-proxy.js.map +1 -0
  512. package/lib/testing/playwright/index.d.ts +1 -0
  513. package/lib/testing/playwright/index.d.ts.map +1 -1
  514. package/lib/testing/playwright/index.js +1 -0
  515. package/lib/testing/playwright/index.js.map +1 -1
  516. package/lib/testing/playwright/server-log-capture.d.ts +35 -8
  517. package/lib/testing/playwright/server-log-capture.d.ts.map +1 -1
  518. package/lib/testing/playwright/server-log-capture.js +39 -6
  519. package/lib/testing/playwright/server-log-capture.js.map +1 -1
  520. package/lib/testing/playwright/server-log-fixture.d.ts +16 -0
  521. package/lib/testing/playwright/server-log-fixture.d.ts.map +1 -1
  522. package/lib/testing/playwright/server-log-fixture.js +25 -6
  523. package/lib/testing/playwright/server-log-fixture.js.map +1 -1
  524. package/lib/testing/playwright/server-log-region.d.ts +15 -0
  525. package/lib/testing/playwright/server-log-region.d.ts.map +1 -0
  526. package/lib/testing/playwright/server-log-region.js +30 -0
  527. package/lib/testing/playwright/server-log-region.js.map +1 -0
  528. package/lib/testing/playwright/server-log-rename-reporter.d.ts.map +1 -1
  529. package/lib/testing/playwright/server-log-rename-reporter.js +10 -1
  530. package/lib/testing/playwright/server-log-rename-reporter.js.map +1 -1
  531. package/lib/testing/run-update-pipeline.d.ts +6 -5
  532. package/lib/testing/run-update-pipeline.d.ts.map +1 -1
  533. package/lib/testing/run-update-pipeline.js.map +1 -1
  534. package/lib/testing/stub-ast-document-manager.d.ts +11 -52
  535. package/lib/testing/stub-ast-document-manager.d.ts.map +1 -1
  536. package/lib/testing/stub-ast-document-manager.js +24 -65
  537. package/lib/testing/stub-ast-document-manager.js.map +1 -1
  538. package/lib/testing/stub-document-builder.d.ts +33 -11
  539. package/lib/testing/stub-document-builder.d.ts.map +1 -1
  540. package/lib/testing/stub-document-builder.js +103 -5
  541. package/lib/testing/stub-document-builder.js.map +1 -1
  542. package/lib/testing/stub-hydranium-text-documents.d.ts +33 -10
  543. package/lib/testing/stub-hydranium-text-documents.d.ts.map +1 -1
  544. package/lib/testing/stub-hydranium-text-documents.js +115 -16
  545. package/lib/testing/stub-hydranium-text-documents.js.map +1 -1
  546. package/lib/testing/stub-index-manager.js.map +1 -1
  547. package/lib/testing/stub-langium-documents.d.ts +3 -2
  548. package/lib/testing/stub-langium-documents.d.ts.map +1 -1
  549. package/lib/testing/stub-langium-documents.js.map +1 -1
  550. package/lib/testing/stub-model-service.d.ts +9 -8
  551. package/lib/testing/stub-model-service.d.ts.map +1 -1
  552. package/lib/testing/stub-model-service.js +6 -6
  553. package/lib/testing/stub-model-service.js.map +1 -1
  554. package/lib/testing/stub-project-manager.js.map +1 -1
  555. package/lib/testing/stub-self-save-registry.d.ts +1 -1
  556. package/lib/testing/stub-self-save-registry.d.ts.map +1 -1
  557. package/lib/testing/stub-service-registry.d.ts +1 -1
  558. package/lib/testing/stub-service-registry.js.map +1 -1
  559. package/lib/testing/stub-writable-file-system.d.ts +1 -1
  560. package/lib/testing/stub-writable-file-system.d.ts.map +1 -1
  561. package/lib/testing/stub-writable-file-system.js +2 -1
  562. package/lib/testing/stub-writable-file-system.js.map +1 -1
  563. package/lib/util/connection-liveness.d.ts +19 -6
  564. package/lib/util/connection-liveness.d.ts.map +1 -1
  565. package/lib/util/connection-liveness.js +61 -15
  566. package/lib/util/connection-liveness.js.map +1 -1
  567. package/lib/util/environment.d.ts.map +1 -1
  568. package/lib/util/environment.js.map +1 -1
  569. package/lib/util/registry.d.ts.map +1 -1
  570. package/package.json +29 -53
  571. package/src/documents/ast-document-manager.ts +383 -231
  572. package/src/documents/client-ids.ts +5 -22
  573. package/src/documents/client-session-errors.ts +24 -0
  574. package/src/documents/client-session-registry.ts +262 -0
  575. package/src/documents/dirty-state-tracker.ts +140 -0
  576. package/src/documents/document-release-handler.ts +404 -0
  577. package/src/documents/document-release-scheduler.ts +121 -0
  578. package/src/documents/file-system-task-queue.ts +68 -0
  579. package/src/documents/hydranium-text-documents.ts +944 -595
  580. package/src/documents/index.ts +10 -2
  581. package/src/documents/language-client-shadow.ts +452 -0
  582. package/src/documents/model-ledger.ts +66 -0
  583. package/src/documents/text-ledger.ts +112 -0
  584. package/src/documents/version-sync-service.ts +275 -0
  585. package/src/index.ts +8 -0
  586. package/src/langium/ast-extension/ast-extension-service.ts +3 -0
  587. package/src/langium/ast-extension/ast-node-builder.ts +66 -22
  588. package/src/langium/bootstrap.ts +77 -37
  589. package/src/langium/build-phase-pass/build-phase-pass-service.ts +1 -1
  590. package/src/langium/build-phase-pass/build-phase-pass.ts +1 -1
  591. package/src/langium/composite-ast-reflection.ts +112 -0
  592. package/src/langium/config/configuration-provider.ts +119 -0
  593. package/src/langium/config/index.ts +1 -0
  594. package/src/langium/diagnostics/hydranium-langium-profiler.ts +15 -39
  595. package/src/langium/diagnostics/log-preamble.ts +1 -1
  596. package/src/langium/diagnostics/logger.ts +12 -5
  597. package/src/langium/diagnostics/lsp-logger.ts +61 -16
  598. package/src/langium/document-builder/build-pipeline-integration.ts +50 -5
  599. package/src/langium/document-builder/build-session.ts +4 -3
  600. package/src/langium/document-builder/document-builder.ts +616 -73
  601. package/src/langium/integration-services.ts +83 -24
  602. package/src/langium/integrity/integrity-rule.ts +16 -8
  603. package/src/langium/integrity/integrity-service.ts +296 -69
  604. package/src/langium/keys/containment.ts +87 -0
  605. package/src/langium/keys/index.ts +1 -0
  606. package/src/langium/keys/name-based-key-provider.ts +4 -0
  607. package/src/langium/language-module.ts +49 -8
  608. package/src/langium/model-service/client-session.ts +661 -0
  609. package/src/langium/model-service/index.ts +2 -0
  610. package/src/langium/model-service/model-events.ts +75 -0
  611. package/src/langium/model-service/model-service.ts +824 -471
  612. package/src/langium/module.ts +201 -66
  613. package/src/langium/naming/name-provider.ts +29 -7
  614. package/src/langium/naming/name-separator-validation.ts +25 -3
  615. package/src/langium/project/abstract-project-manager.ts +13 -5
  616. package/src/langium/project/project-change-event.ts +2 -2
  617. package/src/langium/residency/cst-residency-service.ts +50 -16
  618. package/src/langium/scope/fallback-scope.ts +38 -0
  619. package/src/langium/scope/hydranium-scope-computation.ts +45 -44
  620. package/src/langium/scope/hydranium-scope-provider.ts +89 -38
  621. package/src/langium/scope/index.ts +1 -0
  622. package/src/langium/scope/reference-candidate-provider.ts +6 -5
  623. package/src/langium/scope/scope-extension-service.ts +74 -59
  624. package/src/langium/scope/scoped-ast-node-description.ts +1 -3
  625. package/src/langium/serialization/abstract-serializer.ts +13 -32
  626. package/src/langium/serialization/serializer.ts +1 -1
  627. package/src/langium/service-registry.ts +41 -2
  628. package/src/langium/shared-services.ts +26 -6
  629. package/src/langium/single-langium-copy.ts +42 -0
  630. package/src/langium/transfer/transfer-encoder.ts +115 -47
  631. package/src/langium/trivia/comment-preserver.ts +1100 -0
  632. package/src/langium/trivia/document-ending-preserver.ts +55 -0
  633. package/src/langium/trivia/index.ts +14 -0
  634. package/src/langium/trivia/trivia-contribution.ts +39 -0
  635. package/src/langium/trivia/trivia-preserver.ts +54 -0
  636. package/src/langium/trivia/trivia-service.ts +99 -0
  637. package/src/langium/update-rewrite/update-rewrite-service.ts +1 -1
  638. package/src/langium/update-rewrite/update-rewrite.ts +1 -1
  639. package/src/langium/validation/document-validator.ts +528 -13
  640. package/src/langium/validation/validation-contribution-collector.ts +10 -1
  641. package/src/langium/workspace/document-uri-policy.ts +15 -10
  642. package/src/langium/workspace/file-not-found.ts +35 -0
  643. package/src/langium/workspace/file-system-provider.ts +221 -17
  644. package/src/langium/workspace/hydranium-langium-document-factory.ts +117 -0
  645. package/src/langium/workspace/hydranium-workspace-lock.ts +86 -2
  646. package/src/langium/workspace/hydranium-workspace-manager.ts +155 -16
  647. package/src/langium/workspace/in-memory-file-system-provider.ts +41 -20
  648. package/src/langium/workspace/index.ts +1 -0
  649. package/src/langium/workspace/initialize-workspace.ts +43 -5
  650. package/src/langium/workspace/langium-documents.ts +63 -5
  651. package/src/langium/workspace/persistent-file-system-provider.ts +3 -9
  652. package/src/langium/workspace/self-save-registry.ts +118 -0
  653. package/src/langium/workspace/virtual-document.ts +96 -19
  654. package/src/langium/workspace/write-lock-scope.ts +24 -11
  655. package/src/launcher/integrated-server.ts +3 -1
  656. package/src/locale/index.ts +10 -0
  657. package/src/locale/server-locale.ts +86 -0
  658. package/src/lsp/completion/hydranium-completion-provider.ts +82 -2
  659. package/src/lsp/connection-features.ts +67 -0
  660. package/src/lsp/diagnostics-connection.ts +56 -0
  661. package/src/lsp/hydranium-document-update-handler.ts +197 -110
  662. package/src/lsp/index.ts +3 -1
  663. package/src/lsp/lsp-latency.ts +62 -0
  664. package/src/lsp/semantic-token-provider.ts +74 -7
  665. package/src/lsp/shared-module.ts +4 -8
  666. package/src/lsp/start-language-server.ts +13 -7
  667. package/src/messages/carriers.ts +23 -15
  668. package/src/messages/index.ts +13 -1
  669. package/src/messages/renderer.ts +212 -0
  670. package/src/node/event-loop-monitor.ts +2 -1
  671. package/src/node/heap-ceiling.ts +108 -0
  672. package/src/node/index.ts +1 -1
  673. package/src/node/latency-from-env.ts +1 -1
  674. package/src/node/log-preamble-node.ts +20 -10
  675. package/src/node/measure-memory.ts +5 -4
  676. package/src/node/memory-monitor.ts +10 -10
  677. package/src/node/node-file-system-provider.ts +157 -56
  678. package/src/node/profile-capture.ts +16 -15
  679. package/src/node/profiling-run.ts +30 -8
  680. package/src/node/rename-over-open-readers.ts +94 -0
  681. package/src/node/server-diagnostics.ts +1 -1
  682. package/src/node/server-state-snapshot.ts +5 -5
  683. package/src/node/socket-launcher.ts +27 -11
  684. package/src/node/stdio-launcher.ts +18 -9
  685. package/src/testing/document-uri-policy-conformance.ts +1 -1
  686. package/src/testing/fake-document.ts +24 -5
  687. package/src/testing/index.ts +2 -1
  688. package/src/testing/langium-test-helpers.ts +1 -0
  689. package/src/testing/make-noop-shared-services.ts +50 -2
  690. package/src/testing/make-test-services.ts +125 -31
  691. package/src/testing/make-test-tracer.ts +26 -0
  692. package/src/testing/node/applied-edit-capture.ts +139 -0
  693. package/src/testing/node/index.ts +1 -0
  694. package/src/testing/node/lsp-harness.ts +2 -0
  695. package/src/testing/node/lsp-server-connection.ts +74 -117
  696. package/src/testing/node/scratch-workspace.ts +10 -5
  697. package/src/testing/node/spawned-server.ts +57 -3
  698. package/src/testing/node/unhandled-rejections.ts +31 -0
  699. package/src/testing/parse-semantic-root.ts +1 -1
  700. package/src/testing/playwright/flaky-network-proxy.ts +240 -0
  701. package/src/testing/playwright/index.ts +1 -0
  702. package/src/testing/playwright/server-log-capture.ts +63 -11
  703. package/src/testing/playwright/server-log-fixture.ts +46 -6
  704. package/src/testing/playwright/server-log-region.ts +32 -0
  705. package/src/testing/playwright/server-log-rename-reporter.ts +12 -1
  706. package/src/testing/run-update-pipeline.ts +6 -5
  707. package/src/testing/stub-ast-document-manager.ts +36 -138
  708. package/src/testing/stub-document-builder.ts +133 -18
  709. package/src/testing/stub-hydranium-text-documents.ts +165 -27
  710. package/src/testing/stub-langium-documents.ts +3 -2
  711. package/src/testing/stub-model-service.ts +11 -10
  712. package/src/testing/stub-self-save-registry.ts +1 -1
  713. package/src/testing/stub-service-registry.ts +1 -1
  714. package/src/testing/stub-writable-file-system.ts +3 -2
  715. package/src/util/connection-liveness.ts +67 -15
  716. package/src/util/environment.ts +9 -1
  717. package/lib/documents/language-client-text-shadow.d.ts +0 -101
  718. package/lib/documents/language-client-text-shadow.d.ts.map +0 -1
  719. package/lib/documents/language-client-text-shadow.js +0 -156
  720. package/lib/documents/language-client-text-shadow.js.map +0 -1
  721. package/lib/documents/self-save-registry.d.ts +0 -55
  722. package/lib/documents/self-save-registry.d.ts.map +0 -1
  723. package/lib/documents/self-save-registry.js.map +0 -1
  724. package/lib/lsp/instrument-connection.d.ts +0 -36
  725. package/lib/lsp/instrument-connection.d.ts.map +0 -1
  726. package/lib/lsp/instrument-connection.js +0 -62
  727. package/lib/lsp/instrument-connection.js.map +0 -1
  728. package/lib/node/process-memory.d.ts +0 -66
  729. package/lib/node/process-memory.d.ts.map +0 -1
  730. package/lib/node/process-memory.js +0 -252
  731. package/lib/node/process-memory.js.map +0 -1
  732. package/src/documents/language-client-text-shadow.ts +0 -175
  733. package/src/documents/self-save-registry.ts +0 -81
  734. package/src/lsp/instrument-connection.ts +0 -66
  735. package/src/node/process-memory.ts +0 -299
@@ -0,0 +1,115 @@
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 { ApplyWorkspaceEditRequest } from 'vscode-languageserver-protocol/node';
10
+ /**
11
+ * Answer and record every `workspace/applyEdit` arriving on `client`.
12
+ *
13
+ * Register before the connection can receive one: `vscode-jsonrpc` keeps a
14
+ * single handler per request type, so this must be the only `applyEdit`
15
+ * handler on `client`, and a second registration displaces the capture.
16
+ */
17
+ export function captureAppliedEdits(client, defaultTimeoutMs) {
18
+ const appliedEdits = [];
19
+ const waiters = [];
20
+ let handler = () => ({ applied: true });
21
+ const subscription = client.onRequest(ApplyWorkspaceEditRequest.type, (params) => {
22
+ const edit = { params, uris: editedUris(params.edit), text: insertedText(params.edit) };
23
+ // Record before the handler runs, so a handler that rejects the edit or
24
+ // throws still leaves the push observable — the send is what the egress
25
+ // assertion is about.
26
+ appliedEdits.push(edit);
27
+ for (const waiter of [...waiters]) {
28
+ if (waiter(edit)) {
29
+ const at = waiters.indexOf(waiter);
30
+ if (at >= 0) {
31
+ waiters.splice(at, 1);
32
+ }
33
+ }
34
+ }
35
+ return handler(params);
36
+ });
37
+ return {
38
+ appliedEdits,
39
+ nextAppliedEdit(uri, timeoutMsOrOptions) {
40
+ const options = typeof timeoutMsOrOptions === 'number' ? { timeoutMs: timeoutMsOrOptions } : (timeoutMsOrOptions ?? {});
41
+ const timeoutMs = options.timeoutMs ?? defaultTimeoutMs;
42
+ const { fromIndex, match } = options;
43
+ const matches = (edit) => edit.uris.includes(uri) && (match?.(edit) ?? true);
44
+ if (fromIndex !== undefined) {
45
+ // Replay from the capture first: the push may already have arrived,
46
+ // and a waiter only ever sees later ones.
47
+ const captured = appliedEdits.slice(Math.max(0, fromIndex)).find(matches);
48
+ if (captured) {
49
+ return Promise.resolve(captured);
50
+ }
51
+ }
52
+ return new Promise((resolve, reject) => {
53
+ const waiter = (edit) => {
54
+ if (!matches(edit)) {
55
+ return false;
56
+ }
57
+ clearTimeout(timer);
58
+ resolve(edit);
59
+ return true;
60
+ };
61
+ const timer = setTimeout(() => {
62
+ const at = waiters.indexOf(waiter);
63
+ if (at >= 0) {
64
+ waiters.splice(at, 1);
65
+ }
66
+ reject(new Error(`Timed out waiting for a workspace/applyEdit addressing ${uri}`));
67
+ }, timeoutMs);
68
+ waiters.push(waiter);
69
+ });
70
+ },
71
+ setApplyEditHandler(next) {
72
+ handler = next;
73
+ },
74
+ dispose() {
75
+ subscription.dispose();
76
+ }
77
+ };
78
+ }
79
+ /** Every URI a {@link WorkspaceEdit} addresses, in `documentChanges` then `changes` order. */
80
+ function editedUris(edit) {
81
+ const uris = [];
82
+ for (const change of edit.documentChanges ?? []) {
83
+ if ('textDocument' in change) {
84
+ uris.push(change.textDocument.uri);
85
+ }
86
+ else if ('oldUri' in change) {
87
+ uris.push(change.oldUri, change.newUri);
88
+ }
89
+ else {
90
+ uris.push(change.uri);
91
+ }
92
+ }
93
+ uris.push(...Object.keys(edit.changes ?? {}));
94
+ return uris;
95
+ }
96
+ /** Every text edit's `newText` in a {@link WorkspaceEdit}, concatenated in edit order. */
97
+ function insertedText(edit) {
98
+ const parts = [];
99
+ for (const change of edit.documentChanges ?? []) {
100
+ if ('edits' in change) {
101
+ for (const textEdit of change.edits) {
102
+ if ('newText' in textEdit) {
103
+ parts.push(textEdit.newText);
104
+ }
105
+ }
106
+ }
107
+ }
108
+ for (const textEdits of Object.values(edit.changes ?? {})) {
109
+ for (const textEdit of textEdits) {
110
+ parts.push(textEdit.newText);
111
+ }
112
+ }
113
+ return parts.join('');
114
+ }
115
+ //# sourceMappingURL=applied-edit-capture.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"applied-edit-capture.js","sourceRoot":"","sources":["../../../src/testing/node/applied-edit-capture.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"golden-corpus.js","sourceRoot":"","sources":["../../../src/testing/node/golden-corpus.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AAEH,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AACpD,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAgC3C;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,gBAAgB,CAAC,SAAiB,EAAE,UAAmC,EAAE;IACtF,MAAM,EAAE,SAAS,EAAE,OAAO,GAAG,CAAC,EAAE,GAAG,OAAO,CAAC;IAC3C,MAAM,QAAQ,GAAG,WAAW,CAAC,SAAS,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC;SAC5D,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;SAC/B,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,SAAS,KAAK,SAAS,IAAI,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;SAC1E,GAAG,CAAC,KAAK,CAAC,EAAE;QACV,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;QACzC,OAAO;YACJ,IAAI,EAAE,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC;YAC5E,QAAQ,EAAE,KAAK,CAAC,IAAI;YACpB,IAAI;YACJ,IAAI,EAAE,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC;SAClC,CAAC;IACL,CAAC,CAAC;SACD,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC1G,IAAI,QAAQ,CAAC,MAAM,GAAG,OAAO,EAAE,CAAC;QAC7B,MAAM,MAAM,GAAG,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,cAAc,SAAS,GAAG,CAAC;QAC5F,MAAM,IAAI,KAAK,CACZ,oBAAoB,SAAS,YAAY,QAAQ,CAAC,MAAM,oBAAoB,MAAM,uBAAuB,OAAO,IAAI;YACjH,gHAAgH,CACrH,CAAC;IACL,CAAC;IACD,OAAO,QAAQ,CAAC;AACnB,CAAC"}
1
+ {"version":3,"file":"golden-corpus.js","sourceRoot":"","sources":["../../../src/testing/node/golden-corpus.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AAEH,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AACpD,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAgC3C;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,gBAAgB,CAAC,SAAiB,EAAE,OAAO,GAA4B,EAAE;IACtF,MAAM,EAAE,SAAS,EAAE,OAAO,GAAG,CAAC,EAAE,GAAG,OAAO,CAAC;IAC3C,MAAM,QAAQ,GAAG,WAAW,CAAC,SAAS,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC;SAC5D,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;SAC/B,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,SAAS,KAAK,SAAS,IAAI,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;SAC1E,GAAG,CAAC,KAAK,CAAC,EAAE;QACV,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;QACzC,OAAO;YACJ,IAAI,EAAE,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC;YAC5E,QAAQ,EAAE,KAAK,CAAC,IAAI;YACpB,IAAI;YACJ,IAAI,EAAE,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC;SAClC,CAAC;IACL,CAAC,CAAC;SACD,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC1G,IAAI,QAAQ,CAAC,MAAM,GAAG,OAAO,EAAE,CAAC;QAC7B,MAAM,MAAM,GAAG,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,cAAc,SAAS,GAAG,CAAC;QAC5F,MAAM,IAAI,KAAK,CACZ,oBAAoB,SAAS,YAAY,QAAQ,CAAC,MAAM,oBAAoB,MAAM,uBAAuB,OAAO,IAAI;YACjH,gHAAgH,CACrH,CAAC;IACL,CAAC;IACD,OAAO,QAAQ,CAAC;AACnB,CAAC"}
@@ -25,4 +25,5 @@ export * from './lsp-harness.js';
25
25
  export * from './lsp-server-connection.js';
26
26
  export * from './scratch-workspace.js';
27
27
  export * from './spawned-server.js';
28
+ export * from './unhandled-rejections.js';
28
29
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/testing/node/index.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF;;;;;;;;;;;;GAYG;AAEH,cAAc,0BAA0B,CAAC;AACzC,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,wBAAwB,CAAC;AACvC,cAAc,qBAAqB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/testing/node/index.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF;;;;;;;;;;;;GAYG;AAEH,cAAc,0BAA0B,CAAC;AACzC,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,wBAAwB,CAAC;AACvC,cAAc,qBAAqB,CAAC;AACpC,cAAc,2BAA2B,CAAC"}
@@ -25,4 +25,5 @@ export * from './lsp-harness.js';
25
25
  export * from './lsp-server-connection.js';
26
26
  export * from './scratch-workspace.js';
27
27
  export * from './spawned-server.js';
28
+ export * from './unhandled-rejections.js';
28
29
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/testing/node/index.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF;;;;;;;;;;;;GAYG;AAEH,cAAc,0BAA0B,CAAC;AACzC,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,wBAAwB,CAAC;AACvC,cAAc,qBAAqB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/testing/node/index.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF;;;;;;;;;;;;GAYG;AAEH,cAAc,0BAA0B,CAAC;AACzC,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,wBAAwB,CAAC;AACvC,cAAc,qBAAqB,CAAC;AACpC,cAAc,2BAA2B,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"lsp-harness.d.ts","sourceRoot":"","sources":["../../../src/testing/node/lsp-harness.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AACpE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAG7D,OAAO,EAAkC,KAAK,oBAAoB,EAAE,MAAM,iDAAiD,CAAC;AAC5H,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,kCAAkC,CAAC;AACpF,OAAO,EAA2B,KAAK,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAE/F;;;;;;;GAOG;AACH,MAAM,MAAM,wBAAwB,GAAG,2BAA2B,GAAG,qBAAqB,CAAC;AAE3F;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,MAAM,qBAAqB,GAAG,+BAA+B,GAAG,uBAAuB,CAAC;AAE9F,wEAAwE;AACxE,MAAM,WAAW,+BAA+B;IAC7C;;;;OAIG;IACH,cAAc,EAAE,CAAC,UAAU,EAAE,UAAU,KAAK,wBAAwB,CAAC;CACvE;AAED,0FAA0F;AAC1F,MAAM,WAAW,uBAAuB;IACrC;;;;OAIG;IACH,UAAU,EAAE,mBAAmB,CAAC;IAChC;;;;OAIG;IACH,QAAQ,EAAE,wBAAwB,CAAC;CACrC;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,MAAM,UAAU,GAAG,IAAI,CAAC,mBAAmB,EAAE,kBAAkB,CAAC,GAAG;IACtE,+EAA+E;IAC/E,QAAQ,CAAC,QAAQ,EAAE,2BAA2B,CAAC;IAC/C;;;;;;;;;;;;;;;;;;;OAmBG;IACH,cAAc,CAAC,OAAO,EAAE,oBAAoB,GAAG,aAAa,CAAC,oBAAoB,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACrG,CAAC;AA8BF;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,qBAAqB,GAAG,UAAU,CAuDzE"}
1
+ {"version":3,"file":"lsp-harness.d.ts","sourceRoot":"","sources":["../../../src/testing/node/lsp-harness.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AACpE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAG7D,OAAO,EAAkC,KAAK,oBAAoB,EAAE,MAAM,iDAAiD,CAAC;AAC5H,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,kCAAkC,CAAC;AACpF,OAAO,EAA2B,KAAK,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAE/F;;;;;;;GAOG;AACH,MAAM,MAAM,wBAAwB,GAAG,2BAA2B,GAAG,qBAAqB,CAAC;AAE3F;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,MAAM,qBAAqB,GAAG,+BAA+B,GAAG,uBAAuB,CAAC;AAE9F,wEAAwE;AACxE,MAAM,WAAW,+BAA+B;IAC7C;;;;OAIG;IACH,cAAc,EAAE,CAAC,UAAU,EAAE,UAAU,KAAK,wBAAwB,CAAC;CACvE;AAED,0FAA0F;AAC1F,MAAM,WAAW,uBAAuB;IACrC;;;;OAIG;IACH,UAAU,EAAE,mBAAmB,CAAC;IAChC;;;;OAIG;IACH,QAAQ,EAAE,wBAAwB,CAAC;CACrC;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,MAAM,UAAU,GAAG,IAAI,CAAC,mBAAmB,EAAE,kBAAkB,CAAC,GAAG;IACtE,+EAA+E;IAC/E,QAAQ,CAAC,QAAQ,EAAE,2BAA2B,CAAC;IAC/C;;;;;;;;;;;;;;;;;;;OAmBG;IACH,cAAc,CAAC,OAAO,EAAE,oBAAoB,GAAG,aAAa,CAAC,oBAAoB,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACrG,CAAC;AA8BF;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,qBAAqB,GAAG,UAAU,CAyDzE"}
@@ -104,12 +104,14 @@ export function makeLspHarness(options) {
104
104
  },
105
105
  shutdown: transport.shutdown,
106
106
  openDocument: transport.openDocument,
107
+ closeDocument: transport.closeDocument,
107
108
  changeDocument: transport.changeDocument,
108
109
  completion: transport.completion,
109
110
  hover: transport.hover,
110
111
  semanticTokens: transport.semanticTokens,
111
112
  nextDiagnostics: transport.nextDiagnostics,
112
113
  appliedEdits: transport.appliedEdits,
114
+ wireBytes: transport.wireBytes,
113
115
  nextAppliedEdit: transport.nextAppliedEdit,
114
116
  setApplyEditHandler: transport.setApplyEditHandler,
115
117
  buildWorkspace: folders => buildWorkspaceProgrammatically(services, folders),
@@ -1 +1 @@
1
- {"version":3,"file":"lsp-harness.js","sourceRoot":"","sources":["../../../src/testing/node/lsp-harness.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAIlF,OAAO,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AACpE,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,8BAA8B,EAA6B,MAAM,iDAAiD,CAAC;AAE5H,OAAO,EAAE,uBAAuB,EAA4B,MAAM,4BAA4B,CAAC;AA2G/F;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,KAAK,UAAU,0BAA0B,CAAC,QAAkC;IACzE,MAAM,QAAQ,CAAC,SAAS,CAAC,eAAe,CAAC,SAAS,CAAC,gBAAgB,CAAC,YAAY,CAAC,CAAC;AACrF,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,MAAM,UAAU,cAAc,CAAC,OAA8B;IAC1D,2EAA2E;IAC3E,0EAA0E;IAC1E,MAAM,SAAS,GAAG,YAAY,IAAI,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,uBAAuB,EAAE,CAAC;IAC3F,MAAM,QAAQ,GAAG,YAAY,IAAI,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,cAAc,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC;IACjH,0EAA0E;IAC1E,yBAAyB;IACzB,mBAAmB,CAAC,QAAQ,CAAC,CAAC;IAE9B,OAAO;QACJ,QAAQ;QACR,MAAM,EAAE,SAAS,CAAC,MAAM;QACxB,WAAW,EAAE,SAAS,CAAC,WAAW;QAClC;;;;;;;;;;;;;;;;;;;;;WAqBG;QACH,UAAU,EAAE,KAAK,EAAC,MAAM,EAAC,EAAE;YACxB,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;YAClD,IAAI,MAAM,EAAE,gBAAgB,IAAI,MAAM,CAAC,gBAAgB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAClE,MAAM,0BAA0B,CAAC,QAAQ,CAAC,CAAC;YAC9C,CAAC;YACD,OAAO,MAAM,CAAC;QACjB,CAAC;QACD,QAAQ,EAAE,SAAS,CAAC,QAAQ;QAC5B,YAAY,EAAE,SAAS,CAAC,YAAY;QACpC,cAAc,EAAE,SAAS,CAAC,cAAc;QACxC,UAAU,EAAE,SAAS,CAAC,UAAU;QAChC,KAAK,EAAE,SAAS,CAAC,KAAK;QACtB,cAAc,EAAE,SAAS,CAAC,cAAc;QACxC,eAAe,EAAE,SAAS,CAAC,eAAe;QAC1C,YAAY,EAAE,SAAS,CAAC,YAAY;QACpC,eAAe,EAAE,SAAS,CAAC,eAAe;QAC1C,mBAAmB,EAAE,SAAS,CAAC,mBAAmB;QAClD,cAAc,EAAE,OAAO,CAAC,EAAE,CAAC,8BAA8B,CAAC,QAAQ,EAAE,OAAO,CAAC;QAC5E,OAAO,EAAE,SAAS,CAAC,OAAO;KAC5B,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"lsp-harness.js","sourceRoot":"","sources":["../../../src/testing/node/lsp-harness.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAIlF,OAAO,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AACpE,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,8BAA8B,EAA6B,MAAM,iDAAiD,CAAC;AAE5H,OAAO,EAAE,uBAAuB,EAA4B,MAAM,4BAA4B,CAAC;AA2G/F;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,KAAK,UAAU,0BAA0B,CAAC,QAAkC;IACzE,MAAM,QAAQ,CAAC,SAAS,CAAC,eAAe,CAAC,SAAS,CAAC,gBAAgB,CAAC,YAAY,CAAC,CAAC;AACrF,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,MAAM,UAAU,cAAc,CAAC,OAA8B;IAC1D,2EAA2E;IAC3E,0EAA0E;IAC1E,MAAM,SAAS,GAAG,YAAY,IAAI,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,uBAAuB,EAAE,CAAC;IAC3F,MAAM,QAAQ,GAAG,YAAY,IAAI,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,cAAc,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC;IACjH,0EAA0E;IAC1E,yBAAyB;IACzB,mBAAmB,CAAC,QAAQ,CAAC,CAAC;IAE9B,OAAO;QACJ,QAAQ;QACR,MAAM,EAAE,SAAS,CAAC,MAAM;QACxB,WAAW,EAAE,SAAS,CAAC,WAAW;QAClC;;;;;;;;;;;;;;;;;;;;;WAqBG;QACH,UAAU,EAAE,KAAK,EAAC,MAAM,EAAC,EAAE;YACxB,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;YAClD,IAAI,MAAM,EAAE,gBAAgB,IAAI,MAAM,CAAC,gBAAgB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAClE,MAAM,0BAA0B,CAAC,QAAQ,CAAC,CAAC;YAC9C,CAAC;YACD,OAAO,MAAM,CAAC;QACjB,CAAC;QACD,QAAQ,EAAE,SAAS,CAAC,QAAQ;QAC5B,YAAY,EAAE,SAAS,CAAC,YAAY;QACpC,aAAa,EAAE,SAAS,CAAC,aAAa;QACtC,cAAc,EAAE,SAAS,CAAC,cAAc;QACxC,UAAU,EAAE,SAAS,CAAC,UAAU;QAChC,KAAK,EAAE,SAAS,CAAC,KAAK;QACtB,cAAc,EAAE,SAAS,CAAC,cAAc;QACxC,eAAe,EAAE,SAAS,CAAC,eAAe;QAC1C,YAAY,EAAE,SAAS,CAAC,YAAY;QACpC,SAAS,EAAE,SAAS,CAAC,SAAS;QAC9B,eAAe,EAAE,SAAS,CAAC,eAAe;QAC1C,mBAAmB,EAAE,SAAS,CAAC,mBAAmB;QAClD,cAAc,EAAE,OAAO,CAAC,EAAE,CAAC,8BAA8B,CAAC,QAAQ,EAAE,OAAO,CAAC;QAC5E,OAAO,EAAE,SAAS,CAAC,OAAO;KAC5B,CAAC;AACL,CAAC"}
@@ -65,7 +65,7 @@ export interface NextAppliedEditOptions {
65
65
  * and needed for the same reason: one write can fan out to several pushes.
66
66
  */
67
67
  readonly fromIndex?: number;
68
- /** Reject after this long. Defaults to the in-process publish timeout. */
68
+ /** Reject after this long. Defaults to the harness's own timeout, which differs by tier. */
69
69
  readonly timeoutMs?: number;
70
70
  /**
71
71
  * Additional predicate the edit must satisfy. The framework coalesces
@@ -76,8 +76,8 @@ export interface NextAppliedEditOptions {
76
76
  readonly match?: (edit: AppliedEdit) => boolean;
77
77
  }
78
78
  /**
79
- * The in-process LSP transport seam — a real `Connection` over the in-memory
80
- * {@link makeDuplexStreamPair}, plus the client side, the diagnostics capture,
79
+ * The in-process LSP transport seam — a real `Connection` over a crossed pair
80
+ * of in-memory streams, plus the client side, the diagnostics capture,
81
81
  * and the typed request facades — with NO services attached. It is the lower
82
82
  * half of `makeLspHarness`, factored out so a caller can OWN the services
83
83
  * tree: build the tree around {@link serverConnection} (`createXxxServices({
@@ -132,6 +132,12 @@ export interface LspServerConnection extends Harness {
132
132
  * unhandled method.
133
133
  */
134
134
  readonly appliedEdits: ReadonlyArray<AppliedEdit>;
135
+ /** Bytes written in each direction of the in-process JSON-RPC wire. */
136
+ readonly wireBytes: () => {
137
+ readonly clientToServer: number;
138
+ readonly serverToClient: number;
139
+ readonly total: number;
140
+ };
135
141
  /**
136
142
  * Drive the real LSP `initialize` → `initialized` handshake and return the
137
143
  * `InitializeResult`. Defaults to no workspace folders (no async
@@ -151,6 +157,8 @@ export interface LspServerConnection extends Harness {
151
157
  * associates with a language (silent no-diagnostics). `version` defaults to 1.
152
158
  */
153
159
  openDocument(uri: string, text: string, languageId: string, version?: number): void;
160
+ /** Send `textDocument/didClose` for a document opened through this harness. */
161
+ closeDocument(uri: string): Promise<void>;
154
162
  /** Send `textDocument/didChange` for `uri` as a single full-text replacement at `version`. */
155
163
  changeDocument(uri: string, text: string, version: number): void;
156
164
  /**
@@ -194,7 +202,7 @@ export interface LspServerConnection extends Harness {
194
202
  *
195
203
  * **An egress push is asynchronous well past the call that triggers it** —
196
204
  * the framework coalesces per URI and drives the sync from a build-phase
197
- * settle, so a `ModelService.update` resolves long before the push is sent.
205
+ * settle, so a session's `update` resolves long before the push is sent.
198
206
  * Record `appliedEdits.length`, drive the edit, then await this; reading the
199
207
  * capture on the line after the write proves nothing.
200
208
  */
@@ -1 +1 @@
1
- {"version":3,"file":"lsp-server-connection.d.ts","sourceRoot":"","sources":["../../../src/testing/node/lsp-server-connection.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"lsp-server-connection.d.ts","sourceRoot":"","sources":["../../../src/testing/node/lsp-server-connection.ts"],"names":[],"mappings":"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"}
@@ -6,17 +6,17 @@
6
6
  *
7
7
  * SPDX-License-Identifier: MIT
8
8
  ********************************************************************************/
9
- import { makeDuplexStreamPair } from '@hydranium/protocol/testing/node';
9
+ import { PassThrough } from 'node:stream';
10
10
  import { StreamMessageReader, StreamMessageWriter } from 'vscode-jsonrpc/node';
11
11
  import { ProposedFeatures } from 'vscode-languageserver/node';
12
+ import { withHydraniumLspFeatures } from '../../lsp/connection-features.js';
13
+ import { captureAppliedEdits } from './applied-edit-capture.js';
12
14
  // The node `createConnection` from `vscode-languageserver/node` is built for a
13
15
  // standalone server PROCESS: it wires `process.exit()` onto the input stream's
14
16
  // `end`/`close` events, onto the `exit` notification (via its watchDog), and onto
15
- // a parent-pid liveness timer, and it calls `endProtocolConnection()` (a write)
16
- // on stream close. In-process every one of those is fatal — destroying the
17
- // streams at teardown trips the `close` handler, which writes into the destroyed
18
- // stream (an uncatchable synchronous `ERR_STREAM_DESTROYED`) and/or exits the host
19
- // test runner. The lower-level common `createConnection(connectionFactory,
17
+ // a parent-pid liveness timer. In-process every one of those is fatal —
18
+ // destroying the streams at teardown trips the `close` handler, which exits the
19
+ // host test runner. The lower-level common `createConnection(connectionFactory,
20
20
  // watchDog, features)` form does none of that: it lets us inject a no-op-`exit`
21
21
  // WatchDog and build the connection over the in-memory streams, so teardown is the
22
22
  // primitive's responsibility alone.
@@ -24,7 +24,7 @@ import { ProposedFeatures } from 'vscode-languageserver/node';
24
24
  // the `lib/common/server.js` deep path is unreachable under the exports-only
25
25
  // package map the LSP 3.18 libs ship.)
26
26
  import { createConnection } from 'vscode-languageserver';
27
- import { ApplyWorkspaceEditRequest, CompletionRequest, DidChangeTextDocumentNotification, DidOpenTextDocumentNotification, HoverRequest, InitializeRequest, InitializedNotification, PublishDiagnosticsNotification, SemanticTokensRequest, ShutdownRequest, createProtocolConnection } from 'vscode-languageserver-protocol/node';
27
+ import { CompletionRequest, DidChangeTextDocumentNotification, DidCloseTextDocumentNotification, DidOpenTextDocumentNotification, HoverRequest, InitializeRequest, InitializedNotification, PublishDiagnosticsNotification, SemanticTokensRequest, ShutdownRequest, createProtocolConnection } from 'vscode-languageserver-protocol/node';
28
28
  /**
29
29
  * Default wait for {@link LspServerConnection.nextDiagnostics}. Deliberately
30
30
  * much shorter than the subprocess smoke's: in-process there is no spawn and no
@@ -35,41 +35,31 @@ import { ApplyWorkspaceEditRequest, CompletionRequest, DidChangeTextDocumentNoti
35
35
  const DEFAULT_DIAGNOSTICS_TIMEOUT_MS = 5_000;
36
36
  /** Default `version` assigned to {@link LspServerConnection.openDocument} when none is supplied. */
37
37
  const INITIAL_DOCUMENT_VERSION = 1;
38
- /** Every URI a {@link WorkspaceEdit} addresses, in `documentChanges` then `changes` order. */
39
- function editedUris(edit) {
40
- const uris = [];
41
- for (const change of edit.documentChanges ?? []) {
42
- if ('textDocument' in change) {
43
- uris.push(change.textDocument.uri);
44
- }
45
- else if ('oldUri' in change) {
46
- uris.push(change.oldUri, change.newUri);
47
- }
48
- else {
49
- uris.push(change.uri);
50
- }
38
+ /**
39
+ * A `PassThrough` that counts the bytes written through it. Counting here
40
+ * rather than in a `'data'` listener is what keeps the wire buffering: a
41
+ * listener switches the stream to flowing mode, and a message written before
42
+ * the server calls `listen()` is then delivered to the counter alone and lost.
43
+ */
44
+ class CountingPassThrough extends PassThrough {
45
+ bytes = 0;
46
+ _transform(chunk, _encoding, callback) {
47
+ this.bytes += chunk.length;
48
+ callback(null, chunk);
51
49
  }
52
- uris.push(...Object.keys(edit.changes ?? {}));
53
- return uris;
54
50
  }
55
- /** Every text edit's `newText` in a {@link WorkspaceEdit}, concatenated in edit order. */
56
- function insertedText(edit) {
57
- const parts = [];
58
- for (const change of edit.documentChanges ?? []) {
59
- if ('edits' in change) {
60
- for (const textEdit of change.edits) {
61
- if ('newText' in textEdit) {
62
- parts.push(textEdit.newText);
63
- }
64
- }
65
- }
66
- }
67
- for (const textEdits of Object.values(edit.changes ?? {})) {
68
- for (const textEdit of textEdits) {
69
- parts.push(textEdit.newText);
51
+ /** A crossed pair of {@link CountingPassThrough}s, disposed as one. */
52
+ function makeCountingStreamPair() {
53
+ const clientToServer = new CountingPassThrough();
54
+ const serverToClient = new CountingPassThrough();
55
+ return {
56
+ clientToServer,
57
+ serverToClient,
58
+ dispose() {
59
+ clientToServer.destroy();
60
+ serverToClient.destroy();
70
61
  }
71
- }
72
- return parts.join('');
62
+ };
73
63
  }
74
64
  /**
75
65
  * Build the in-process LSP transport seam (server `Connection` + client + wire +
@@ -83,7 +73,7 @@ function insertedText(edit) {
83
73
  * additional protocol heads (data-server, GLSP) onto the same `shared` services.
84
74
  */
85
75
  export function makeLspServerConnection() {
86
- const pair = makeDuplexStreamPair();
76
+ const pair = makeCountingStreamPair();
87
77
  // No-op watchDog: in-process, no LSP lifecycle event (parent-pid liveness, the
88
78
  // `exit` notification, …) may exit the host test runner — `dispose()` owns
89
79
  // teardown. See the import note on why the node `createConnection` is unusable.
@@ -94,9 +84,9 @@ export function makeLspServerConnection() {
94
84
  };
95
85
  // Server side reads what the client wrote (clientToServer) and writes what the
96
86
  // client reads (serverToClient), over a ProtocolConnection on the in-memory pair.
97
- const serverConnection = createConnection(logger => createProtocolConnection(new StreamMessageReader(pair.clientToServer), new StreamMessageWriter(pair.serverToClient), logger), watchDog, ProposedFeatures.all);
87
+ const serverConnection = createConnection(logger => createProtocolConnection(new StreamMessageReader(pair.clientToServer), new StreamMessageWriter(pair.serverToClient), logger), watchDog, withHydraniumLspFeatures(ProposedFeatures.all));
98
88
  // Client side mirrors the directions: reads serverToClient, writes clientToServer.
99
- const client = createProtocolConnection(new StreamMessageReader(pair.serverToClient), new StreamMessageWriter(pair.clientToServer));
89
+ const client = createProtocolConnection(new StreamMessageReader(pair.serverToClient), new StreamMessageWriter(pair.clientToServer), console);
100
90
  client.listen();
101
91
  const diagnostics = [];
102
92
  /**
@@ -124,38 +114,18 @@ export function makeLspServerConnection() {
124
114
  }
125
115
  }
126
116
  });
127
- const appliedEdits = [];
128
- /**
129
- * Waiters armed by {@link LspServerConnection.nextAppliedEdit}, fanned out to
130
- * from the ONE handler below — `vscode-jsonrpc` keeps a single handler per
131
- * REQUEST type just as it does per notification type, so a second
132
- * `onRequest` would displace this one and leave the server's `applyEdit`
133
- * unanswered.
134
- */
135
- const appliedEditWaiters = [];
136
- let applyEditHandler = () => ({ applied: true });
137
- const appliedEditSubscription = client.onRequest(ApplyWorkspaceEditRequest.type, (params) => {
138
- const edit = { params, uris: editedUris(params.edit), text: insertedText(params.edit) };
139
- // Record BEFORE the handler runs, so a handler that rejects the edit or
140
- // throws still leaves the push observable — the send is what the egress
141
- // assertion is about.
142
- appliedEdits.push(edit);
143
- for (const waiter of [...appliedEditWaiters]) {
144
- if (waiter(edit)) {
145
- const at = appliedEditWaiters.indexOf(waiter);
146
- if (at >= 0) {
147
- appliedEditWaiters.splice(at, 1);
148
- }
149
- }
150
- }
151
- return applyEditHandler(params);
152
- });
117
+ const appliedEditCapture = captureAppliedEdits(client, DEFAULT_DIAGNOSTICS_TIMEOUT_MS);
153
118
  let disposed = false;
154
119
  return {
155
120
  serverConnection,
156
121
  client,
157
122
  diagnostics,
158
- appliedEdits,
123
+ appliedEdits: appliedEditCapture.appliedEdits,
124
+ wireBytes: () => ({
125
+ clientToServer: pair.clientToServer.bytes,
126
+ serverToClient: pair.serverToClient.bytes,
127
+ total: pair.clientToServer.bytes + pair.serverToClient.bytes
128
+ }),
159
129
  async initialize(params) {
160
130
  const initializeParams = {
161
131
  processId: process.pid,
@@ -192,6 +162,9 @@ export function makeLspServerConnection() {
192
162
  }
193
163
  });
194
164
  },
165
+ async closeDocument(uri) {
166
+ await client.sendNotification(DidCloseTextDocumentNotification.type, { textDocument: { uri } });
167
+ },
195
168
  changeDocument(uri, text, version) {
196
169
  client.sendNotification(DidChangeTextDocumentNotification.type, {
197
170
  textDocument: { uri, version },
@@ -252,48 +225,14 @@ export function makeLspServerConnection() {
252
225
  diagnosticsWaiters.push(waiter);
253
226
  });
254
227
  },
255
- nextAppliedEdit(uri, timeoutMsOrOptions) {
256
- const options = typeof timeoutMsOrOptions === 'number' ? { timeoutMs: timeoutMsOrOptions } : (timeoutMsOrOptions ?? {});
257
- const timeoutMs = options.timeoutMs ?? DEFAULT_DIAGNOSTICS_TIMEOUT_MS;
258
- const { fromIndex, match } = options;
259
- const matches = (edit) => edit.uris.includes(uri) && (match?.(edit) ?? true);
260
- if (fromIndex !== undefined) {
261
- // Replay from the capture first, for the same reason
262
- // `nextDiagnostics` does: the push may already have arrived, and a
263
- // waiter only ever sees later ones.
264
- const captured = appliedEdits.slice(Math.max(0, fromIndex)).find(matches);
265
- if (captured) {
266
- return Promise.resolve(captured);
267
- }
268
- }
269
- return new Promise((resolve, reject) => {
270
- const waiter = (edit) => {
271
- if (!matches(edit)) {
272
- return false;
273
- }
274
- clearTimeout(timer);
275
- resolve(edit);
276
- return true;
277
- };
278
- const timer = setTimeout(() => {
279
- const at = appliedEditWaiters.indexOf(waiter);
280
- if (at >= 0) {
281
- appliedEditWaiters.splice(at, 1);
282
- }
283
- reject(new Error(`Timed out waiting for a workspace/applyEdit addressing ${uri}`));
284
- }, timeoutMs);
285
- appliedEditWaiters.push(waiter);
286
- });
287
- },
288
- setApplyEditHandler(handler) {
289
- applyEditHandler = handler;
290
- },
228
+ nextAppliedEdit: appliedEditCapture.nextAppliedEdit,
229
+ setApplyEditHandler: appliedEditCapture.setApplyEditHandler,
291
230
  dispose() {
292
231
  if (disposed) {
293
232
  return;
294
233
  }
295
234
  disposed = true;
296
- appliedEditSubscription.dispose();
235
+ appliedEditCapture.dispose();
297
236
  diagnosticsSubscription.dispose();
298
237
  client.dispose();
299
238
  serverConnection.dispose();
@@ -1 +1 @@
1
- {"version":3,"file":"lsp-server-connection.js","sourceRoot":"","sources":["../../../src/testing/node/lsp-server-connection.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"lsp-server-connection.js","sourceRoot":"","sources":["../../../src/testing/node/lsp-server-connection.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"scratch-workspace.d.ts","sourceRoot":"","sources":["../../../src/testing/node/scratch-workspace.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAgDlF,gDAAgD;AAChD,MAAM,WAAW,uBAAuB;IACrC;;;OAGG;IACH,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB;;;OAGG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,4CAA4C;AAC5C,MAAM,WAAW,gBAAgB;IAC9B,2CAA2C;IAC3C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB;;;OAGG;IACH,KAAK,CAAC,YAAY,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAAC;IACrD,2EAA2E;IAC3E,OAAO,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,CAAC;IACtC;;;;;;;;;;;;;;OAcG;IACH,GAAG,CAAC,YAAY,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACnC;;;OAGG;IACH,OAAO,IAAI,IAAI,CAAC;CAClB;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,GAAE,uBAA4B,GAAG,gBAAgB,CA6B5F"}
1
+ {"version":3,"file":"scratch-workspace.d.ts","sourceRoot":"","sources":["../../../src/testing/node/scratch-workspace.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAgDlF,gDAAgD;AAChD,MAAM,WAAW,uBAAuB;IACrC;;;OAGG;IACH,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB;;;OAGG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,4CAA4C;AAC5C,MAAM,WAAW,gBAAgB;IAC9B,2CAA2C;IAC3C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB;;;OAGG;IACH,KAAK,CAAC,YAAY,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAAC;IACrD,2EAA2E;IAC3E,OAAO,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,CAAC;IACtC;;;;;;;;;;;;;;OAcG;IACH,GAAG,CAAC,YAAY,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACnC;;;OAGG;IACH,OAAO,IAAI,IAAI,CAAC;CAClB;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,GAAE,uBAA4B,GAAG,gBAAgB,CAkC5F"}
@@ -13,15 +13,15 @@
13
13
  *
14
14
  * Any test that drives a **write path** needs one, and the reason is not
15
15
  * obvious enough to rediscover per suite. The writes themselves are usually
16
- * in-memory — `ModelService.update` goes to the multi-client text store, and
16
+ * in-memory — a session's `update` goes to the multi-client text store, and
17
17
  * only `save` reaches disk — but a rebuild also runs the integrity rules, and
18
18
  * their default `'silent'` sync mode persists repairs through
19
19
  * `WritableFileSystemProvider.writeFile`. So a write-path test pointed at a
20
20
  * committed sample workspace can **rewrite the sample files**, after which
21
21
  * every later run asserts against already-repaired input: a suite that passes
22
22
  * while testing nothing. The same applies to a fixture built in place, which
23
- * additionally loses its explanatory comments, because the write-back goes
24
- * through the serializer.
23
+ * additionally comes back in the serializer's layout, because the write-back
24
+ * goes through it.
25
25
  *
26
26
  * The second reason is cleanup. Hand-rolled `mkdtempSync` without a matching
27
27
  * `rmSync` leaks a directory per test run into the OS temp dir, which nobody
@@ -47,7 +47,7 @@
47
47
  * itself often what a test is pinning.
48
48
  */
49
49
  import { URI } from '@hydranium/langium';
50
- import { cpSync, mkdirSync, mkdtempSync, rmSync, writeFileSync } from 'node:fs';
50
+ import { cpSync, mkdirSync, mkdtempSync, realpathSync, rmSync, writeFileSync } from 'node:fs';
51
51
  import { tmpdir } from 'node:os';
52
52
  import * as path from 'node:path';
53
53
  /**
@@ -55,7 +55,12 @@ import * as path from 'node:path';
55
55
  * returned {@link ScratchWorkspace.dispose} with an `afterEach`.
56
56
  */
57
57
  export function makeScratchWorkspace(options = {}) {
58
- const root = mkdtempSync(path.join(tmpdir(), options.prefix ?? 'hydranium-scratch-'));
58
+ // RESOLVED, because `tmpdir()` can itself be a symlink — on macOS it answers
59
+ // `/tmp`, which links to `/private/tmp`. A root the server canonicalises to a
60
+ // different path than the one it was handed registers documents under one
61
+ // spelling and reads them under the other, failing initialization with an
62
+ // ENOENT that names neither the link nor this call.
63
+ const root = realpathSync(mkdtempSync(path.join(tmpdir(), options.prefix ?? 'hydranium-scratch-')));
59
64
  if (options.seed) {
60
65
  cpSync(options.seed, root, { recursive: true });
61
66
  }
@@ -1 +1 @@
1
- {"version":3,"file":"scratch-workspace.js","sourceRoot":"","sources":["../../../src/testing/node/scratch-workspace.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AAEH,OAAO,EAAE,GAAG,EAAE,MAAM,oBAAoB,CAAC;AACzC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAChF,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAkDlC;;;GAGG;AACH,MAAM,UAAU,oBAAoB,CAAC,UAAmC,EAAE;IACvE,MAAM,IAAI,GAAG,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,OAAO,CAAC,MAAM,IAAI,oBAAoB,CAAC,CAAC,CAAC;IACtF,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;QAChB,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACnD,CAAC;IACD,IAAI,QAAQ,GAAG,KAAK,CAAC;IACrB,MAAM,OAAO,GAAG,CAAC,YAAoB,EAAU,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;IAChF,OAAO;QACJ,IAAI;QACJ,OAAO;QACP,GAAG,CAAC,YAAqB;YACtB,OAAO,GAAG,CAAC,IAAI,CAAC,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;QACzF,CAAC;QACD,KAAK,CAAC,YAAY,EAAE,OAAO;YACxB,MAAM,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;YACrC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YACrD,aAAa,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;YACvC,OAAO,MAAM,CAAC;QACjB,CAAC;QACD,OAAO;YACJ,IAAI,QAAQ,EAAE,CAAC;gBACZ,OAAO;YACV,CAAC;YACD,QAAQ,GAAG,IAAI,CAAC;YAChB,qEAAqE;YACrE,qDAAqD;YACrD,MAAM,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QAClD,CAAC;KACH,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"scratch-workspace.js","sourceRoot":"","sources":["../../../src/testing/node/scratch-workspace.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AAEH,OAAO,EAAE,GAAG,EAAE,MAAM,oBAAoB,CAAC;AACzC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAC9F,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAkDlC;;;GAGG;AACH,MAAM,UAAU,oBAAoB,CAAC,OAAO,GAA4B,EAAE;IACvE,6EAA6E;IAC7E,8EAA8E;IAC9E,0EAA0E;IAC1E,0EAA0E;IAC1E,oDAAoD;IACpD,MAAM,IAAI,GAAG,YAAY,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,OAAO,CAAC,MAAM,IAAI,oBAAoB,CAAC,CAAC,CAAC,CAAC;IACpG,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;QAChB,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACnD,CAAC;IACD,IAAI,QAAQ,GAAG,KAAK,CAAC;IACrB,MAAM,OAAO,GAAG,CAAC,YAAoB,EAAU,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;IAChF,OAAO;QACJ,IAAI;QACJ,OAAO;QACP,GAAG,CAAC,YAAqB;YACtB,OAAO,GAAG,CAAC,IAAI,CAAC,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;QACzF,CAAC;QACD,KAAK,CAAC,YAAY,EAAE,OAAO;YACxB,MAAM,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;YACrC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YACrD,aAAa,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;YACvC,OAAO,MAAM,CAAC;QACjB,CAAC;QACD,OAAO;YACJ,IAAI,QAAQ,EAAE,CAAC;gBACZ,OAAO;YACV,CAAC;YACD,QAAQ,GAAG,IAAI,CAAC;YAChB,qEAAqE;YACrE,qDAAqD;YACrD,MAAM,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QAClD,CAAC;KACH,CAAC;AACL,CAAC"}