@hydranium/core 1.0.0-next.32 → 1.0.0-next.320

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 (765) hide show
  1. package/README.md +78 -82
  2. package/lib/browser/host-heads-in-worker.d.ts +77 -0
  3. package/lib/browser/host-heads-in-worker.d.ts.map +1 -0
  4. package/lib/browser/host-heads-in-worker.js +169 -0
  5. package/lib/browser/host-heads-in-worker.js.map +1 -0
  6. package/lib/browser/index.d.ts +12 -0
  7. package/lib/browser/index.d.ts.map +1 -0
  8. package/lib/browser/index.js +17 -0
  9. package/lib/browser/index.js.map +1 -0
  10. package/lib/browser/indexeddb-file-system-store.d.ts +82 -0
  11. package/lib/browser/indexeddb-file-system-store.d.ts.map +1 -0
  12. package/lib/browser/indexeddb-file-system-store.js +181 -0
  13. package/lib/browser/indexeddb-file-system-store.js.map +1 -0
  14. package/lib/browser/start-language-server-in-worker.d.ts +32 -0
  15. package/lib/browser/start-language-server-in-worker.d.ts.map +1 -0
  16. package/lib/browser/start-language-server-in-worker.js +40 -0
  17. package/lib/browser/start-language-server-in-worker.js.map +1 -0
  18. package/lib/documents/ast-document-manager.d.ts +256 -124
  19. package/lib/documents/ast-document-manager.d.ts.map +1 -1
  20. package/lib/documents/ast-document-manager.js +293 -132
  21. package/lib/documents/ast-document-manager.js.map +1 -1
  22. package/lib/documents/client-ids.d.ts +5 -19
  23. package/lib/documents/client-ids.d.ts.map +1 -1
  24. package/lib/documents/client-ids.js +5 -19
  25. package/lib/documents/client-ids.js.map +1 -1
  26. package/lib/documents/client-session-errors.d.ts +15 -0
  27. package/lib/documents/client-session-errors.d.ts.map +1 -0
  28. package/lib/documents/client-session-errors.js +15 -0
  29. package/lib/documents/client-session-errors.js.map +1 -0
  30. package/lib/documents/client-session-registry.d.ts +146 -0
  31. package/lib/documents/client-session-registry.d.ts.map +1 -0
  32. package/lib/documents/client-session-registry.js +207 -0
  33. package/lib/documents/client-session-registry.js.map +1 -0
  34. package/lib/documents/dirty-state-tracker.d.ts +101 -0
  35. package/lib/documents/dirty-state-tracker.d.ts.map +1 -0
  36. package/lib/documents/dirty-state-tracker.js +85 -0
  37. package/lib/documents/dirty-state-tracker.js.map +1 -0
  38. package/lib/documents/document-release-handler.d.ts +204 -0
  39. package/lib/documents/document-release-handler.d.ts.map +1 -0
  40. package/lib/documents/document-release-handler.js +317 -0
  41. package/lib/documents/document-release-handler.js.map +1 -0
  42. package/lib/documents/document-release-scheduler.d.ts +67 -0
  43. package/lib/documents/document-release-scheduler.d.ts.map +1 -0
  44. package/lib/documents/document-release-scheduler.js +80 -0
  45. package/lib/documents/document-release-scheduler.js.map +1 -0
  46. package/lib/documents/file-system-task-queue.d.ts +52 -0
  47. package/lib/documents/file-system-task-queue.d.ts.map +1 -0
  48. package/lib/documents/file-system-task-queue.js +37 -0
  49. package/lib/documents/file-system-task-queue.js.map +1 -0
  50. package/lib/documents/hydranium-text-documents.d.ts +436 -282
  51. package/lib/documents/hydranium-text-documents.d.ts.map +1 -1
  52. package/lib/documents/hydranium-text-documents.js +886 -483
  53. package/lib/documents/hydranium-text-documents.js.map +1 -1
  54. package/lib/documents/index.d.ts +10 -2
  55. package/lib/documents/index.d.ts.map +1 -1
  56. package/lib/documents/index.js +10 -2
  57. package/lib/documents/index.js.map +1 -1
  58. package/lib/documents/language-client-shadow.d.ts +234 -0
  59. package/lib/documents/language-client-shadow.d.ts.map +1 -0
  60. package/lib/documents/language-client-shadow.js +306 -0
  61. package/lib/documents/language-client-shadow.js.map +1 -0
  62. package/lib/documents/model-ledger.d.ts +47 -0
  63. package/lib/documents/model-ledger.d.ts.map +1 -0
  64. package/lib/documents/model-ledger.js +30 -0
  65. package/lib/documents/model-ledger.js.map +1 -0
  66. package/lib/documents/text-ledger.d.ts +64 -0
  67. package/lib/documents/text-ledger.d.ts.map +1 -0
  68. package/lib/documents/text-ledger.js +63 -0
  69. package/lib/documents/text-ledger.js.map +1 -0
  70. package/lib/documents/version-sync-service.d.ts +138 -0
  71. package/lib/documents/version-sync-service.d.ts.map +1 -0
  72. package/lib/documents/version-sync-service.js +173 -0
  73. package/lib/documents/version-sync-service.js.map +1 -0
  74. package/lib/index.d.ts +4 -0
  75. package/lib/index.d.ts.map +1 -1
  76. package/lib/index.js +7 -0
  77. package/lib/index.js.map +1 -1
  78. package/lib/langium/ast-extension/ast-extension-service.d.ts +42 -31
  79. package/lib/langium/ast-extension/ast-extension-service.d.ts.map +1 -1
  80. package/lib/langium/ast-extension/ast-extension-service.js +45 -19
  81. package/lib/langium/ast-extension/ast-extension-service.js.map +1 -1
  82. package/lib/langium/ast-extension/ast-node-builder.d.ts +12 -7
  83. package/lib/langium/ast-extension/ast-node-builder.d.ts.map +1 -1
  84. package/lib/langium/ast-extension/ast-node-builder.js +25 -9
  85. package/lib/langium/ast-extension/ast-node-builder.js.map +1 -1
  86. package/lib/langium/bootstrap.d.ts +49 -36
  87. package/lib/langium/bootstrap.d.ts.map +1 -1
  88. package/lib/langium/bootstrap.js +83 -44
  89. package/lib/langium/bootstrap.js.map +1 -1
  90. package/lib/langium/build-phase-pass/build-phase-pass-service.d.ts +9 -9
  91. package/lib/langium/build-phase-pass/build-phase-pass-service.d.ts.map +1 -1
  92. package/lib/langium/build-phase-pass/build-phase-pass-service.js +25 -16
  93. package/lib/langium/build-phase-pass/build-phase-pass-service.js.map +1 -1
  94. package/lib/langium/build-phase-pass/build-phase-pass.d.ts +20 -8
  95. package/lib/langium/build-phase-pass/build-phase-pass.d.ts.map +1 -1
  96. package/lib/langium/build-phase-pass/build-phase-pass.js +20 -0
  97. package/lib/langium/build-phase-pass/build-phase-pass.js.map +1 -1
  98. package/lib/langium/composite-ast-reflection.d.ts +46 -0
  99. package/lib/langium/composite-ast-reflection.d.ts.map +1 -0
  100. package/lib/langium/composite-ast-reflection.js +97 -0
  101. package/lib/langium/composite-ast-reflection.js.map +1 -0
  102. package/lib/langium/config/configuration-provider.d.ts +81 -0
  103. package/lib/langium/config/configuration-provider.d.ts.map +1 -0
  104. package/lib/langium/config/configuration-provider.js +112 -0
  105. package/lib/langium/config/configuration-provider.js.map +1 -0
  106. package/lib/langium/config/index.d.ts +1 -0
  107. package/lib/langium/config/index.d.ts.map +1 -1
  108. package/lib/langium/config/index.js +1 -0
  109. package/lib/langium/config/index.js.map +1 -1
  110. package/lib/langium/config/settings.js.map +1 -1
  111. package/lib/langium/diagnostics/hydranium-langium-profiler.d.ts +9 -20
  112. package/lib/langium/diagnostics/hydranium-langium-profiler.d.ts.map +1 -1
  113. package/lib/langium/diagnostics/hydranium-langium-profiler.js +15 -24
  114. package/lib/langium/diagnostics/hydranium-langium-profiler.js.map +1 -1
  115. package/lib/langium/diagnostics/log-preamble.js +1 -1
  116. package/lib/langium/diagnostics/log-preamble.js.map +1 -1
  117. package/lib/langium/diagnostics/logger.d.ts +19 -4
  118. package/lib/langium/diagnostics/logger.d.ts.map +1 -1
  119. package/lib/langium/diagnostics/logger.js +36 -11
  120. package/lib/langium/diagnostics/logger.js.map +1 -1
  121. package/lib/langium/diagnostics/lsp-logger.d.ts +17 -0
  122. package/lib/langium/diagnostics/lsp-logger.d.ts.map +1 -1
  123. package/lib/langium/diagnostics/lsp-logger.js +58 -17
  124. package/lib/langium/diagnostics/lsp-logger.js.map +1 -1
  125. package/lib/langium/diagnostics/server-tracer.d.ts.map +1 -1
  126. package/lib/langium/diagnostics/server-tracer.js.map +1 -1
  127. package/lib/langium/document-builder/build-pipeline-integration.d.ts +21 -1
  128. package/lib/langium/document-builder/build-pipeline-integration.d.ts.map +1 -1
  129. package/lib/langium/document-builder/build-pipeline-integration.js +28 -30
  130. package/lib/langium/document-builder/build-pipeline-integration.js.map +1 -1
  131. package/lib/langium/document-builder/build-session.d.ts +6 -5
  132. package/lib/langium/document-builder/build-session.d.ts.map +1 -1
  133. package/lib/langium/document-builder/build-session.js +5 -5
  134. package/lib/langium/document-builder/build-session.js.map +1 -1
  135. package/lib/langium/document-builder/document-builder.d.ts +283 -41
  136. package/lib/langium/document-builder/document-builder.d.ts.map +1 -1
  137. package/lib/langium/document-builder/document-builder.js +448 -78
  138. package/lib/langium/document-builder/document-builder.js.map +1 -1
  139. package/lib/langium/documentation/comment-provider.d.ts.map +1 -1
  140. package/lib/langium/documentation/comment-provider.js.map +1 -1
  141. package/lib/langium/integration-services.d.ts +40 -24
  142. package/lib/langium/integration-services.d.ts.map +1 -1
  143. package/lib/langium/integration-services.js +7 -4
  144. package/lib/langium/integration-services.js.map +1 -1
  145. package/lib/langium/integrity/integrity-rule.d.ts +17 -8
  146. package/lib/langium/integrity/integrity-rule.d.ts.map +1 -1
  147. package/lib/langium/integrity/integrity-rule.js.map +1 -1
  148. package/lib/langium/integrity/integrity-service.d.ts +95 -27
  149. package/lib/langium/integrity/integrity-service.d.ts.map +1 -1
  150. package/lib/langium/integrity/integrity-service.js +303 -63
  151. package/lib/langium/integrity/integrity-service.js.map +1 -1
  152. package/lib/langium/keys/containment.d.ts +64 -0
  153. package/lib/langium/keys/containment.d.ts.map +1 -0
  154. package/lib/langium/keys/containment.js +53 -0
  155. package/lib/langium/keys/containment.js.map +1 -0
  156. package/lib/langium/keys/index.d.ts +1 -0
  157. package/lib/langium/keys/index.d.ts.map +1 -1
  158. package/lib/langium/keys/index.js +1 -0
  159. package/lib/langium/keys/index.js.map +1 -1
  160. package/lib/langium/keys/name-based-key-provider.d.ts +4 -0
  161. package/lib/langium/keys/name-based-key-provider.d.ts.map +1 -1
  162. package/lib/langium/keys/name-based-key-provider.js +4 -0
  163. package/lib/langium/keys/name-based-key-provider.js.map +1 -1
  164. package/lib/langium/keys/positional-key-provider.d.ts.map +1 -1
  165. package/lib/langium/keys/positional-key-provider.js.map +1 -1
  166. package/lib/langium/labeling/label-provider.d.ts.map +1 -1
  167. package/lib/langium/labeling/label-provider.js.map +1 -1
  168. package/lib/langium/language-module.d.ts +30 -5
  169. package/lib/langium/language-module.d.ts.map +1 -1
  170. package/lib/langium/language-module.js +18 -4
  171. package/lib/langium/language-module.js.map +1 -1
  172. package/lib/langium/model-service/client-session.d.ts +383 -0
  173. package/lib/langium/model-service/client-session.d.ts.map +1 -0
  174. package/lib/langium/model-service/client-session.js +455 -0
  175. package/lib/langium/model-service/client-session.js.map +1 -0
  176. package/lib/langium/model-service/index.d.ts +2 -0
  177. package/lib/langium/model-service/index.d.ts.map +1 -1
  178. package/lib/langium/model-service/index.js +2 -0
  179. package/lib/langium/model-service/index.js.map +1 -1
  180. package/lib/langium/model-service/model-events.d.ts +66 -0
  181. package/lib/langium/model-service/model-events.d.ts.map +1 -0
  182. package/lib/langium/model-service/model-events.js +10 -0
  183. package/lib/langium/model-service/model-events.js.map +1 -0
  184. package/lib/langium/model-service/model-service.d.ts +455 -290
  185. package/lib/langium/model-service/model-service.d.ts.map +1 -1
  186. package/lib/langium/model-service/model-service.js +571 -458
  187. package/lib/langium/model-service/model-service.js.map +1 -1
  188. package/lib/langium/module.d.ts +141 -40
  189. package/lib/langium/module.d.ts.map +1 -1
  190. package/lib/langium/module.js +52 -40
  191. package/lib/langium/module.js.map +1 -1
  192. package/lib/langium/naming/name-provider.d.ts +32 -7
  193. package/lib/langium/naming/name-provider.d.ts.map +1 -1
  194. package/lib/langium/naming/name-provider.js +10 -4
  195. package/lib/langium/naming/name-provider.js.map +1 -1
  196. package/lib/langium/naming/name-separator-validation.d.ts.map +1 -1
  197. package/lib/langium/project/abstract-project-manager.d.ts.map +1 -1
  198. package/lib/langium/project/abstract-project-manager.js +13 -6
  199. package/lib/langium/project/abstract-project-manager.js.map +1 -1
  200. package/lib/langium/project/project-change-event.d.ts +2 -2
  201. package/lib/langium/project/single-project-manager.d.ts.map +1 -1
  202. package/lib/langium/project/single-project-manager.js.map +1 -1
  203. package/lib/langium/residency/cst-residency-service.d.ts +38 -14
  204. package/lib/langium/residency/cst-residency-service.d.ts.map +1 -1
  205. package/lib/langium/residency/cst-residency-service.js +24 -58
  206. package/lib/langium/residency/cst-residency-service.js.map +1 -1
  207. package/lib/langium/scope/ast-node-description-provider.d.ts.map +1 -1
  208. package/lib/langium/scope/ast-node-description-provider.js.map +1 -1
  209. package/lib/langium/scope/fallback-scope.d.ts +27 -0
  210. package/lib/langium/scope/fallback-scope.d.ts.map +1 -0
  211. package/lib/langium/scope/fallback-scope.js +35 -0
  212. package/lib/langium/scope/fallback-scope.js.map +1 -0
  213. package/lib/langium/scope/hydranium-scope-computation.d.ts +21 -18
  214. package/lib/langium/scope/hydranium-scope-computation.d.ts.map +1 -1
  215. package/lib/langium/scope/hydranium-scope-computation.js +38 -39
  216. package/lib/langium/scope/hydranium-scope-computation.js.map +1 -1
  217. package/lib/langium/scope/hydranium-scope-provider.d.ts +29 -11
  218. package/lib/langium/scope/hydranium-scope-provider.d.ts.map +1 -1
  219. package/lib/langium/scope/hydranium-scope-provider.js +37 -15
  220. package/lib/langium/scope/hydranium-scope-provider.js.map +1 -1
  221. package/lib/langium/scope/index.d.ts +1 -0
  222. package/lib/langium/scope/index.d.ts.map +1 -1
  223. package/lib/langium/scope/index.js +1 -0
  224. package/lib/langium/scope/index.js.map +1 -1
  225. package/lib/langium/scope/reference-builder.d.ts.map +1 -1
  226. package/lib/langium/scope/reference-builder.js.map +1 -1
  227. package/lib/langium/scope/reference-candidate-provider.d.ts +6 -5
  228. package/lib/langium/scope/reference-candidate-provider.d.ts.map +1 -1
  229. package/lib/langium/scope/reference-candidate-provider.js +3 -2
  230. package/lib/langium/scope/reference-candidate-provider.js.map +1 -1
  231. package/lib/langium/scope/scope-extension-service.d.ts +41 -37
  232. package/lib/langium/scope/scope-extension-service.d.ts.map +1 -1
  233. package/lib/langium/scope/scope-extension-service.js +57 -29
  234. package/lib/langium/scope/scope-extension-service.js.map +1 -1
  235. package/lib/langium/scope/scoped-ast-node-description.d.ts +1 -3
  236. package/lib/langium/scope/scoped-ast-node-description.d.ts.map +1 -1
  237. package/lib/langium/scope/scoped-ast-node-description.js +1 -3
  238. package/lib/langium/scope/scoped-ast-node-description.js.map +1 -1
  239. package/lib/langium/serialization/abstract-serializer.d.ts +38 -27
  240. package/lib/langium/serialization/abstract-serializer.d.ts.map +1 -1
  241. package/lib/langium/serialization/abstract-serializer.js +54 -30
  242. package/lib/langium/serialization/abstract-serializer.js.map +1 -1
  243. package/lib/langium/serialization/json-serializer.d.ts +8 -1
  244. package/lib/langium/serialization/json-serializer.d.ts.map +1 -1
  245. package/lib/langium/serialization/json-serializer.js +13 -3
  246. package/lib/langium/serialization/json-serializer.js.map +1 -1
  247. package/lib/langium/serialization/serializer.d.ts +1 -1
  248. package/lib/langium/serialization/yaml-serializer.d.ts +4 -0
  249. package/lib/langium/serialization/yaml-serializer.d.ts.map +1 -1
  250. package/lib/langium/serialization/yaml-serializer.js +4 -0
  251. package/lib/langium/serialization/yaml-serializer.js.map +1 -1
  252. package/lib/langium/service-registry.d.ts +29 -1
  253. package/lib/langium/service-registry.d.ts.map +1 -1
  254. package/lib/langium/service-registry.js +37 -0
  255. package/lib/langium/service-registry.js.map +1 -1
  256. package/lib/langium/shared-services.d.ts +13 -7
  257. package/lib/langium/shared-services.d.ts.map +1 -1
  258. package/lib/langium/shared-services.js.map +1 -1
  259. package/lib/langium/single-langium-copy.d.ts +22 -0
  260. package/lib/langium/single-langium-copy.d.ts.map +1 -0
  261. package/lib/langium/single-langium-copy.js +36 -0
  262. package/lib/langium/single-langium-copy.js.map +1 -0
  263. package/lib/langium/transfer/transfer-encoder.d.ts +86 -37
  264. package/lib/langium/transfer/transfer-encoder.d.ts.map +1 -1
  265. package/lib/langium/transfer/transfer-encoder.js +36 -25
  266. package/lib/langium/transfer/transfer-encoder.js.map +1 -1
  267. package/lib/langium/trivia/comment-preserver.d.ts +423 -0
  268. package/lib/langium/trivia/comment-preserver.d.ts.map +1 -0
  269. package/lib/langium/trivia/comment-preserver.js +906 -0
  270. package/lib/langium/trivia/comment-preserver.js.map +1 -0
  271. package/lib/langium/trivia/document-ending-preserver.d.ts +51 -0
  272. package/lib/langium/trivia/document-ending-preserver.d.ts.map +1 -0
  273. package/lib/langium/trivia/document-ending-preserver.js +62 -0
  274. package/lib/langium/trivia/document-ending-preserver.js.map +1 -0
  275. package/lib/langium/trivia/index.d.ts +14 -0
  276. package/lib/langium/trivia/index.d.ts.map +1 -0
  277. package/lib/langium/trivia/index.js +14 -0
  278. package/lib/langium/trivia/index.js.map +1 -0
  279. package/lib/langium/trivia/trivia-contribution.d.ts +37 -0
  280. package/lib/langium/trivia/trivia-contribution.d.ts.map +1 -0
  281. package/lib/langium/trivia/trivia-contribution.js +10 -0
  282. package/lib/langium/trivia/trivia-contribution.js.map +1 -0
  283. package/lib/langium/trivia/trivia-preserver.d.ts +52 -0
  284. package/lib/langium/trivia/trivia-preserver.d.ts.map +1 -0
  285. package/lib/langium/trivia/trivia-preserver.js +10 -0
  286. package/lib/langium/trivia/trivia-preserver.js.map +1 -0
  287. package/lib/langium/trivia/trivia-service.d.ts +70 -0
  288. package/lib/langium/trivia/trivia-service.d.ts.map +1 -0
  289. package/lib/langium/trivia/trivia-service.js +56 -0
  290. package/lib/langium/trivia/trivia-service.js.map +1 -0
  291. package/lib/langium/update-rewrite/normalize-empty-strings.d.ts.map +1 -1
  292. package/lib/langium/update-rewrite/update-rewrite-service.d.ts +1 -1
  293. package/lib/langium/update-rewrite/update-rewrite-service.d.ts.map +1 -1
  294. package/lib/langium/update-rewrite/update-rewrite-service.js.map +1 -1
  295. package/lib/langium/update-rewrite/update-rewrite.d.ts +1 -1
  296. package/lib/langium/validation/document-validator.d.ts +216 -10
  297. package/lib/langium/validation/document-validator.d.ts.map +1 -1
  298. package/lib/langium/validation/document-validator.js +353 -8
  299. package/lib/langium/validation/document-validator.js.map +1 -1
  300. package/lib/langium/validation/validation-contribution-collector.d.ts +9 -1
  301. package/lib/langium/validation/validation-contribution-collector.d.ts.map +1 -1
  302. package/lib/langium/validation/validation-contribution-collector.js +1 -1
  303. package/lib/langium/validation/validation-contribution-collector.js.map +1 -1
  304. package/lib/langium/workspace/document-uri-policy.d.ts +24 -15
  305. package/lib/langium/workspace/document-uri-policy.d.ts.map +1 -1
  306. package/lib/langium/workspace/document-uri-policy.js +22 -13
  307. package/lib/langium/workspace/document-uri-policy.js.map +1 -1
  308. package/lib/langium/workspace/file-not-found.d.ts +23 -0
  309. package/lib/langium/workspace/file-not-found.d.ts.map +1 -0
  310. package/lib/langium/workspace/file-not-found.js +31 -0
  311. package/lib/langium/workspace/file-not-found.js.map +1 -0
  312. package/lib/langium/workspace/file-system-provider.d.ts +167 -8
  313. package/lib/langium/workspace/file-system-provider.d.ts.map +1 -1
  314. package/lib/langium/workspace/file-system-provider.js +115 -13
  315. package/lib/langium/workspace/file-system-provider.js.map +1 -1
  316. package/lib/langium/workspace/hydranium-langium-document-factory.d.ts +31 -1
  317. package/lib/langium/workspace/hydranium-langium-document-factory.d.ts.map +1 -1
  318. package/lib/langium/workspace/hydranium-langium-document-factory.js +54 -0
  319. package/lib/langium/workspace/hydranium-langium-document-factory.js.map +1 -1
  320. package/lib/langium/workspace/hydranium-workspace-lock.d.ts +43 -1
  321. package/lib/langium/workspace/hydranium-workspace-lock.d.ts.map +1 -1
  322. package/lib/langium/workspace/hydranium-workspace-lock.js +58 -1
  323. package/lib/langium/workspace/hydranium-workspace-lock.js.map +1 -1
  324. package/lib/langium/workspace/hydranium-workspace-manager.d.ts +113 -21
  325. package/lib/langium/workspace/hydranium-workspace-manager.d.ts.map +1 -1
  326. package/lib/langium/workspace/hydranium-workspace-manager.js +197 -31
  327. package/lib/langium/workspace/hydranium-workspace-manager.js.map +1 -1
  328. package/lib/langium/workspace/in-memory-file-system-provider.d.ts +26 -9
  329. package/lib/langium/workspace/in-memory-file-system-provider.d.ts.map +1 -1
  330. package/lib/langium/workspace/in-memory-file-system-provider.js +45 -22
  331. package/lib/langium/workspace/in-memory-file-system-provider.js.map +1 -1
  332. package/lib/langium/workspace/index-manager.d.ts.map +1 -1
  333. package/lib/langium/workspace/index-manager.js.map +1 -1
  334. package/lib/langium/workspace/index.d.ts +1 -0
  335. package/lib/langium/workspace/index.d.ts.map +1 -1
  336. package/lib/langium/workspace/index.js +1 -0
  337. package/lib/langium/workspace/index.js.map +1 -1
  338. package/lib/langium/workspace/initialize-workspace.d.ts +40 -3
  339. package/lib/langium/workspace/initialize-workspace.d.ts.map +1 -1
  340. package/lib/langium/workspace/initialize-workspace.js +68 -3
  341. package/lib/langium/workspace/initialize-workspace.js.map +1 -1
  342. package/lib/langium/workspace/langium-documents.d.ts +7 -0
  343. package/lib/langium/workspace/langium-documents.d.ts.map +1 -1
  344. package/lib/langium/workspace/langium-documents.js +18 -1
  345. package/lib/langium/workspace/langium-documents.js.map +1 -1
  346. package/lib/langium/workspace/persistent-file-system-provider.d.ts +16 -10
  347. package/lib/langium/workspace/persistent-file-system-provider.d.ts.map +1 -1
  348. package/lib/langium/workspace/persistent-file-system-provider.js +25 -13
  349. package/lib/langium/workspace/persistent-file-system-provider.js.map +1 -1
  350. package/lib/langium/workspace/self-save-registry.d.ts +84 -0
  351. package/lib/langium/workspace/self-save-registry.d.ts.map +1 -0
  352. package/lib/{documents → langium/workspace}/self-save-registry.js +33 -22
  353. package/lib/langium/workspace/self-save-registry.js.map +1 -0
  354. package/lib/langium/workspace/virtual-document.d.ts +55 -21
  355. package/lib/langium/workspace/virtual-document.d.ts.map +1 -1
  356. package/lib/langium/workspace/virtual-document.js +87 -24
  357. package/lib/langium/workspace/virtual-document.js.map +1 -1
  358. package/lib/langium/workspace/write-lock-scope.d.ts +22 -10
  359. package/lib/langium/workspace/write-lock-scope.d.ts.map +1 -1
  360. package/lib/langium/workspace/write-lock-scope.js +15 -5
  361. package/lib/langium/workspace/write-lock-scope.js.map +1 -1
  362. package/lib/launcher/integrated-server.d.ts +3 -1
  363. package/lib/launcher/integrated-server.d.ts.map +1 -1
  364. package/lib/locale/server-locale.d.ts +29 -5
  365. package/lib/locale/server-locale.d.ts.map +1 -1
  366. package/lib/locale/server-locale.js +12 -2
  367. package/lib/locale/server-locale.js.map +1 -1
  368. package/lib/lsp/completion/hydranium-completion-provider.d.ts +44 -2
  369. package/lib/lsp/completion/hydranium-completion-provider.d.ts.map +1 -1
  370. package/lib/lsp/completion/hydranium-completion-provider.js +68 -0
  371. package/lib/lsp/completion/hydranium-completion-provider.js.map +1 -1
  372. package/lib/lsp/connection-features.d.ts +23 -0
  373. package/lib/lsp/connection-features.d.ts.map +1 -0
  374. package/lib/lsp/connection-features.js +60 -0
  375. package/lib/lsp/connection-features.js.map +1 -0
  376. package/lib/lsp/diagnostics-connection.d.ts +27 -0
  377. package/lib/lsp/diagnostics-connection.d.ts.map +1 -0
  378. package/lib/lsp/diagnostics-connection.js +53 -0
  379. package/lib/lsp/diagnostics-connection.js.map +1 -0
  380. package/lib/lsp/hydranium-document-update-handler.d.ts +126 -82
  381. package/lib/lsp/hydranium-document-update-handler.d.ts.map +1 -1
  382. package/lib/lsp/hydranium-document-update-handler.js +235 -102
  383. package/lib/lsp/hydranium-document-update-handler.js.map +1 -1
  384. package/lib/lsp/index.d.ts +4 -1
  385. package/lib/lsp/index.d.ts.map +1 -1
  386. package/lib/lsp/index.js +4 -1
  387. package/lib/lsp/index.js.map +1 -1
  388. package/lib/lsp/lsp-latency.d.ts +39 -0
  389. package/lib/lsp/lsp-latency.d.ts.map +1 -0
  390. package/lib/lsp/lsp-latency.js +58 -0
  391. package/lib/lsp/lsp-latency.js.map +1 -0
  392. package/lib/lsp/save-text-document.d.ts +31 -0
  393. package/lib/lsp/save-text-document.d.ts.map +1 -0
  394. package/lib/lsp/save-text-document.js +52 -0
  395. package/lib/lsp/save-text-document.js.map +1 -0
  396. package/lib/lsp/semantic-token-provider.d.ts +34 -1
  397. package/lib/lsp/semantic-token-provider.d.ts.map +1 -1
  398. package/lib/lsp/semantic-token-provider.js +55 -8
  399. package/lib/lsp/semantic-token-provider.js.map +1 -1
  400. package/lib/lsp/shared-module.d.ts +4 -8
  401. package/lib/lsp/shared-module.d.ts.map +1 -1
  402. package/lib/lsp/shared-module.js.map +1 -1
  403. package/lib/lsp/start-language-server.d.ts +8 -7
  404. package/lib/lsp/start-language-server.d.ts.map +1 -1
  405. package/lib/lsp/start-language-server.js +13 -7
  406. package/lib/lsp/start-language-server.js.map +1 -1
  407. package/lib/messages/carriers.d.ts +11 -6
  408. package/lib/messages/carriers.d.ts.map +1 -1
  409. package/lib/messages/carriers.js +14 -6
  410. package/lib/messages/carriers.js.map +1 -1
  411. package/lib/messages/index.d.ts +2 -2
  412. package/lib/messages/index.d.ts.map +1 -1
  413. package/lib/messages/index.js +2 -2
  414. package/lib/messages/index.js.map +1 -1
  415. package/lib/messages/renderer.d.ts +32 -7
  416. package/lib/messages/renderer.d.ts.map +1 -1
  417. package/lib/messages/renderer.js +7 -1
  418. package/lib/messages/renderer.js.map +1 -1
  419. package/lib/node/event-loop-monitor.d.ts.map +1 -1
  420. package/lib/node/event-loop-monitor.js +2 -1
  421. package/lib/node/event-loop-monitor.js.map +1 -1
  422. package/lib/node/heap-ceiling.d.ts +61 -0
  423. package/lib/node/heap-ceiling.d.ts.map +1 -0
  424. package/lib/node/heap-ceiling.js +72 -0
  425. package/lib/node/heap-ceiling.js.map +1 -0
  426. package/lib/node/index.d.ts +1 -1
  427. package/lib/node/index.d.ts.map +1 -1
  428. package/lib/node/index.js +5 -1
  429. package/lib/node/index.js.map +1 -1
  430. package/lib/node/latency-from-env.d.ts +1 -1
  431. package/lib/node/latency-from-env.js +1 -1
  432. package/lib/node/lint-grammar.js.map +1 -1
  433. package/lib/node/log-preamble-node.d.ts +5 -3
  434. package/lib/node/log-preamble-node.d.ts.map +1 -1
  435. package/lib/node/log-preamble-node.js +13 -10
  436. package/lib/node/log-preamble-node.js.map +1 -1
  437. package/lib/node/measure-memory.d.ts.map +1 -1
  438. package/lib/node/measure-memory.js +5 -4
  439. package/lib/node/measure-memory.js.map +1 -1
  440. package/lib/node/memory-monitor.d.ts +2 -2
  441. package/lib/node/memory-monitor.d.ts.map +1 -1
  442. package/lib/node/memory-monitor.js +9 -10
  443. package/lib/node/memory-monitor.js.map +1 -1
  444. package/lib/node/node-file-system-provider.d.ts +67 -9
  445. package/lib/node/node-file-system-provider.d.ts.map +1 -1
  446. package/lib/node/node-file-system-provider.js +198 -53
  447. package/lib/node/node-file-system-provider.js.map +1 -1
  448. package/lib/node/profile-capture.d.ts +12 -4
  449. package/lib/node/profile-capture.d.ts.map +1 -1
  450. package/lib/node/profile-capture.js +8 -6
  451. package/lib/node/profile-capture.js.map +1 -1
  452. package/lib/node/profile-digest.js.map +1 -1
  453. package/lib/node/profiling-run.d.ts +13 -3
  454. package/lib/node/profiling-run.d.ts.map +1 -1
  455. package/lib/node/profiling-run.js +17 -8
  456. package/lib/node/profiling-run.js.map +1 -1
  457. package/lib/node/rename-over-open-readers.d.ts +61 -0
  458. package/lib/node/rename-over-open-readers.d.ts.map +1 -0
  459. package/lib/node/rename-over-open-readers.js +80 -0
  460. package/lib/node/rename-over-open-readers.js.map +1 -0
  461. package/lib/node/server-diagnostics.js +1 -1
  462. package/lib/node/server-diagnostics.js.map +1 -1
  463. package/lib/node/server-state-snapshot.js +4 -4
  464. package/lib/node/server-state-snapshot.js.map +1 -1
  465. package/lib/node/socket-launcher.d.ts +43 -7
  466. package/lib/node/socket-launcher.d.ts.map +1 -1
  467. package/lib/node/socket-launcher.js +42 -7
  468. package/lib/node/socket-launcher.js.map +1 -1
  469. package/lib/node/startup-cpu-profile.d.ts +29 -0
  470. package/lib/node/startup-cpu-profile.d.ts.map +1 -0
  471. package/lib/node/startup-cpu-profile.js +91 -0
  472. package/lib/node/startup-cpu-profile.js.map +1 -0
  473. package/lib/node/stdio-launcher.d.ts +13 -13
  474. package/lib/node/stdio-launcher.d.ts.map +1 -1
  475. package/lib/node/stdio-launcher.js +21 -11
  476. package/lib/node/stdio-launcher.js.map +1 -1
  477. package/lib/testing/document-uri-policy-conformance.js +1 -1
  478. package/lib/testing/document-uri-policy-conformance.js.map +1 -1
  479. package/lib/testing/fake-description.js.map +1 -1
  480. package/lib/testing/fake-document.d.ts +2 -1
  481. package/lib/testing/fake-document.d.ts.map +1 -1
  482. package/lib/testing/fake-document.js.map +1 -1
  483. package/lib/testing/index.d.ts +1 -1
  484. package/lib/testing/index.d.ts.map +1 -1
  485. package/lib/testing/index.js +2 -1
  486. package/lib/testing/index.js.map +1 -1
  487. package/lib/testing/langium-test-helpers.d.ts.map +1 -1
  488. package/lib/testing/langium-test-helpers.js +1 -0
  489. package/lib/testing/langium-test-helpers.js.map +1 -1
  490. package/lib/testing/make-noop-language-services.js.map +1 -1
  491. package/lib/testing/make-noop-shared-services.d.ts +4 -4
  492. package/lib/testing/make-noop-shared-services.d.ts.map +1 -1
  493. package/lib/testing/make-noop-shared-services.js +4 -4
  494. package/lib/testing/make-noop-shared-services.js.map +1 -1
  495. package/lib/testing/make-test-services.d.ts +51 -20
  496. package/lib/testing/make-test-services.d.ts.map +1 -1
  497. package/lib/testing/make-test-services.js +29 -13
  498. package/lib/testing/make-test-services.js.map +1 -1
  499. package/lib/testing/make-test-tracer.d.ts +12 -0
  500. package/lib/testing/make-test-tracer.d.ts.map +1 -1
  501. package/lib/testing/make-test-tracer.js +13 -0
  502. package/lib/testing/make-test-tracer.js.map +1 -1
  503. package/lib/testing/node/applied-edit-capture.d.ts +29 -0
  504. package/lib/testing/node/applied-edit-capture.d.ts.map +1 -0
  505. package/lib/testing/node/applied-edit-capture.js +117 -0
  506. package/lib/testing/node/applied-edit-capture.js.map +1 -0
  507. package/lib/testing/node/golden-corpus.js.map +1 -1
  508. package/lib/testing/node/index.d.ts +1 -0
  509. package/lib/testing/node/index.d.ts.map +1 -1
  510. package/lib/testing/node/index.js +1 -0
  511. package/lib/testing/node/index.js.map +1 -1
  512. package/lib/testing/node/lsp-harness.d.ts.map +1 -1
  513. package/lib/testing/node/lsp-harness.js +2 -0
  514. package/lib/testing/node/lsp-harness.js.map +1 -1
  515. package/lib/testing/node/lsp-server-connection.d.ts +21 -6
  516. package/lib/testing/node/lsp-server-connection.d.ts.map +1 -1
  517. package/lib/testing/node/lsp-server-connection.js +49 -106
  518. package/lib/testing/node/lsp-server-connection.js.map +1 -1
  519. package/lib/testing/node/scratch-workspace.d.ts.map +1 -1
  520. package/lib/testing/node/scratch-workspace.js +10 -5
  521. package/lib/testing/node/scratch-workspace.js.map +1 -1
  522. package/lib/testing/node/spawned-server.d.ts +30 -1
  523. package/lib/testing/node/spawned-server.d.ts.map +1 -1
  524. package/lib/testing/node/spawned-server.js +39 -2
  525. package/lib/testing/node/spawned-server.js.map +1 -1
  526. package/lib/testing/node/unhandled-rejections.d.ts +20 -0
  527. package/lib/testing/node/unhandled-rejections.d.ts.map +1 -0
  528. package/lib/testing/node/unhandled-rejections.js +32 -0
  529. package/lib/testing/node/unhandled-rejections.js.map +1 -0
  530. package/lib/testing/playwright/browser-capture-bridge.js.map +1 -1
  531. package/lib/testing/playwright/e2e-profiling.js.map +1 -1
  532. package/lib/testing/playwright/flaky-network-proxy.d.ts +76 -0
  533. package/lib/testing/playwright/flaky-network-proxy.d.ts.map +1 -0
  534. package/lib/testing/playwright/flaky-network-proxy.js +164 -0
  535. package/lib/testing/playwright/flaky-network-proxy.js.map +1 -0
  536. package/lib/testing/playwright/index.d.ts +1 -0
  537. package/lib/testing/playwright/index.d.ts.map +1 -1
  538. package/lib/testing/playwright/index.js +1 -0
  539. package/lib/testing/playwright/index.js.map +1 -1
  540. package/lib/testing/playwright/server-log-capture.d.ts +46 -16
  541. package/lib/testing/playwright/server-log-capture.d.ts.map +1 -1
  542. package/lib/testing/playwright/server-log-capture.js +111 -40
  543. package/lib/testing/playwright/server-log-capture.js.map +1 -1
  544. package/lib/testing/playwright/server-log-fixture.d.ts +16 -0
  545. package/lib/testing/playwright/server-log-fixture.d.ts.map +1 -1
  546. package/lib/testing/playwright/server-log-fixture.js +25 -6
  547. package/lib/testing/playwright/server-log-fixture.js.map +1 -1
  548. package/lib/testing/playwright/server-log-region.d.ts +15 -0
  549. package/lib/testing/playwright/server-log-region.d.ts.map +1 -0
  550. package/lib/testing/playwright/server-log-region.js +30 -0
  551. package/lib/testing/playwright/server-log-region.js.map +1 -0
  552. package/lib/testing/playwright/server-log-rename-reporter.d.ts.map +1 -1
  553. package/lib/testing/playwright/server-log-rename-reporter.js +4 -3
  554. package/lib/testing/playwright/server-log-rename-reporter.js.map +1 -1
  555. package/lib/testing/run-update-pipeline.d.ts +8 -5
  556. package/lib/testing/run-update-pipeline.d.ts.map +1 -1
  557. package/lib/testing/run-update-pipeline.js.map +1 -1
  558. package/lib/testing/stub-ast-document-manager.d.ts +11 -52
  559. package/lib/testing/stub-ast-document-manager.d.ts.map +1 -1
  560. package/lib/testing/stub-ast-document-manager.js +31 -62
  561. package/lib/testing/stub-ast-document-manager.js.map +1 -1
  562. package/lib/testing/stub-document-builder.d.ts +33 -11
  563. package/lib/testing/stub-document-builder.d.ts.map +1 -1
  564. package/lib/testing/stub-document-builder.js +103 -5
  565. package/lib/testing/stub-document-builder.js.map +1 -1
  566. package/lib/testing/stub-hydranium-text-documents.d.ts +33 -10
  567. package/lib/testing/stub-hydranium-text-documents.d.ts.map +1 -1
  568. package/lib/testing/stub-hydranium-text-documents.js +132 -16
  569. package/lib/testing/stub-hydranium-text-documents.js.map +1 -1
  570. package/lib/testing/stub-index-manager.js.map +1 -1
  571. package/lib/testing/stub-langium-documents.d.ts +3 -2
  572. package/lib/testing/stub-langium-documents.d.ts.map +1 -1
  573. package/lib/testing/stub-langium-documents.js.map +1 -1
  574. package/lib/testing/stub-model-service.d.ts +9 -8
  575. package/lib/testing/stub-model-service.d.ts.map +1 -1
  576. package/lib/testing/stub-model-service.js +6 -6
  577. package/lib/testing/stub-model-service.js.map +1 -1
  578. package/lib/testing/stub-project-manager.js.map +1 -1
  579. package/lib/testing/stub-self-save-registry.d.ts +1 -1
  580. package/lib/testing/stub-self-save-registry.d.ts.map +1 -1
  581. package/lib/testing/stub-service-registry.d.ts +1 -1
  582. package/lib/testing/stub-service-registry.js.map +1 -1
  583. package/lib/testing/stub-writable-file-system.d.ts +1 -1
  584. package/lib/testing/stub-writable-file-system.d.ts.map +1 -1
  585. package/lib/testing/stub-writable-file-system.js +2 -1
  586. package/lib/testing/stub-writable-file-system.js.map +1 -1
  587. package/lib/util/connection-liveness.d.ts +19 -6
  588. package/lib/util/connection-liveness.d.ts.map +1 -1
  589. package/lib/util/connection-liveness.js +61 -15
  590. package/lib/util/connection-liveness.js.map +1 -1
  591. package/lib/util/environment.d.ts.map +1 -1
  592. package/lib/util/environment.js.map +1 -1
  593. package/lib/util/registry.d.ts.map +1 -1
  594. package/package.json +39 -58
  595. package/src/browser/host-heads-in-worker.ts +218 -0
  596. package/src/browser/index.ts +17 -0
  597. package/src/browser/indexeddb-file-system-store.ts +192 -0
  598. package/src/browser/start-language-server-in-worker.ts +56 -0
  599. package/src/documents/ast-document-manager.ts +467 -233
  600. package/src/documents/client-ids.ts +5 -22
  601. package/src/documents/client-session-errors.ts +24 -0
  602. package/src/documents/client-session-registry.ts +262 -0
  603. package/src/documents/dirty-state-tracker.ts +167 -0
  604. package/src/documents/document-release-handler.ts +404 -0
  605. package/src/documents/document-release-scheduler.ts +121 -0
  606. package/src/documents/file-system-task-queue.ts +74 -0
  607. package/src/documents/hydranium-text-documents.ts +1011 -595
  608. package/src/documents/index.ts +10 -2
  609. package/src/documents/language-client-shadow.ts +501 -0
  610. package/src/documents/model-ledger.ts +66 -0
  611. package/src/documents/text-ledger.ts +112 -0
  612. package/src/documents/version-sync-service.ts +275 -0
  613. package/src/index.ts +7 -0
  614. package/src/langium/ast-extension/ast-extension-service.ts +77 -41
  615. package/src/langium/ast-extension/ast-node-builder.ts +35 -13
  616. package/src/langium/bootstrap.ts +87 -51
  617. package/src/langium/build-phase-pass/build-phase-pass-service.ts +29 -19
  618. package/src/langium/build-phase-pass/build-phase-pass.ts +37 -8
  619. package/src/langium/composite-ast-reflection.ts +112 -0
  620. package/src/langium/config/configuration-provider.ts +119 -0
  621. package/src/langium/config/index.ts +1 -0
  622. package/src/langium/diagnostics/hydranium-langium-profiler.ts +15 -39
  623. package/src/langium/diagnostics/log-preamble.ts +1 -1
  624. package/src/langium/diagnostics/logger.ts +38 -11
  625. package/src/langium/diagnostics/lsp-logger.ts +61 -16
  626. package/src/langium/document-builder/build-pipeline-integration.ts +46 -32
  627. package/src/langium/document-builder/build-session.ts +4 -3
  628. package/src/langium/document-builder/document-builder.ts +553 -78
  629. package/src/langium/integration-services.ts +59 -28
  630. package/src/langium/integrity/integrity-rule.ts +17 -8
  631. package/src/langium/integrity/integrity-service.ts +332 -69
  632. package/src/langium/keys/containment.ts +87 -0
  633. package/src/langium/keys/index.ts +1 -0
  634. package/src/langium/keys/name-based-key-provider.ts +4 -0
  635. package/src/langium/language-module.ts +49 -8
  636. package/src/langium/model-service/client-session.ts +718 -0
  637. package/src/langium/model-service/index.ts +2 -0
  638. package/src/langium/model-service/model-events.ts +80 -0
  639. package/src/langium/model-service/model-service.ts +878 -486
  640. package/src/langium/module.ts +195 -72
  641. package/src/langium/naming/name-provider.ts +34 -8
  642. package/src/langium/project/abstract-project-manager.ts +13 -5
  643. package/src/langium/project/project-change-event.ts +2 -2
  644. package/src/langium/residency/cst-residency-service.ts +54 -19
  645. package/src/langium/scope/fallback-scope.ts +38 -0
  646. package/src/langium/scope/hydranium-scope-computation.ts +45 -44
  647. package/src/langium/scope/hydranium-scope-provider.ts +49 -16
  648. package/src/langium/scope/index.ts +1 -0
  649. package/src/langium/scope/reference-candidate-provider.ts +6 -5
  650. package/src/langium/scope/scope-extension-service.ts +74 -59
  651. package/src/langium/scope/scoped-ast-node-description.ts +1 -3
  652. package/src/langium/serialization/abstract-serializer.ts +57 -41
  653. package/src/langium/serialization/json-serializer.ts +14 -3
  654. package/src/langium/serialization/serializer.ts +1 -1
  655. package/src/langium/serialization/yaml-serializer.ts +4 -0
  656. package/src/langium/service-registry.ts +41 -2
  657. package/src/langium/shared-services.ts +16 -7
  658. package/src/langium/single-langium-copy.ts +42 -0
  659. package/src/langium/transfer/transfer-encoder.ts +104 -47
  660. package/src/langium/trivia/comment-preserver.ts +1100 -0
  661. package/src/langium/trivia/document-ending-preserver.ts +71 -0
  662. package/src/langium/trivia/index.ts +14 -0
  663. package/src/langium/trivia/trivia-contribution.ts +39 -0
  664. package/src/langium/trivia/trivia-preserver.ts +56 -0
  665. package/src/langium/trivia/trivia-service.ts +99 -0
  666. package/src/langium/update-rewrite/update-rewrite-service.ts +1 -1
  667. package/src/langium/update-rewrite/update-rewrite.ts +1 -1
  668. package/src/langium/validation/document-validator.ts +411 -12
  669. package/src/langium/validation/validation-contribution-collector.ts +10 -1
  670. package/src/langium/workspace/document-uri-policy.ts +32 -18
  671. package/src/langium/workspace/file-not-found.ts +35 -0
  672. package/src/langium/workspace/file-system-provider.ts +258 -16
  673. package/src/langium/workspace/hydranium-langium-document-factory.ts +83 -0
  674. package/src/langium/workspace/hydranium-workspace-lock.ts +86 -2
  675. package/src/langium/workspace/hydranium-workspace-manager.ts +224 -35
  676. package/src/langium/workspace/in-memory-file-system-provider.ts +54 -23
  677. package/src/langium/workspace/index.ts +1 -0
  678. package/src/langium/workspace/initialize-workspace.ts +96 -4
  679. package/src/langium/workspace/langium-documents.ts +19 -1
  680. package/src/langium/workspace/persistent-file-system-provider.ts +27 -15
  681. package/src/langium/workspace/self-save-registry.ts +118 -0
  682. package/src/langium/workspace/virtual-document.ts +106 -25
  683. package/src/langium/workspace/write-lock-scope.ts +27 -12
  684. package/src/launcher/integrated-server.ts +3 -1
  685. package/src/locale/server-locale.ts +31 -6
  686. package/src/lsp/completion/hydranium-completion-provider.ts +82 -2
  687. package/src/lsp/connection-features.ts +67 -0
  688. package/src/lsp/diagnostics-connection.ts +56 -0
  689. package/src/lsp/hydranium-document-update-handler.ts +285 -111
  690. package/src/lsp/index.ts +4 -1
  691. package/src/lsp/lsp-latency.ts +62 -0
  692. package/src/lsp/save-text-document.ts +63 -0
  693. package/src/lsp/semantic-token-provider.ts +74 -7
  694. package/src/lsp/shared-module.ts +4 -8
  695. package/src/lsp/start-language-server.ts +13 -7
  696. package/src/messages/carriers.ts +15 -7
  697. package/src/messages/index.ts +11 -2
  698. package/src/messages/renderer.ts +34 -6
  699. package/src/node/event-loop-monitor.ts +2 -1
  700. package/src/node/heap-ceiling.ts +108 -0
  701. package/src/node/index.ts +5 -1
  702. package/src/node/latency-from-env.ts +1 -1
  703. package/src/node/log-preamble-node.ts +20 -10
  704. package/src/node/measure-memory.ts +5 -4
  705. package/src/node/memory-monitor.ts +10 -10
  706. package/src/node/node-file-system-provider.ts +214 -57
  707. package/src/node/profile-capture.ts +16 -15
  708. package/src/node/profiling-run.ts +30 -8
  709. package/src/node/rename-over-open-readers.ts +94 -0
  710. package/src/node/server-diagnostics.ts +1 -1
  711. package/src/node/server-state-snapshot.ts +5 -5
  712. package/src/node/socket-launcher.ts +78 -14
  713. package/src/node/startup-cpu-profile.ts +94 -0
  714. package/src/node/stdio-launcher.ts +29 -19
  715. package/src/testing/document-uri-policy-conformance.ts +1 -1
  716. package/src/testing/fake-document.ts +2 -1
  717. package/src/testing/index.ts +2 -1
  718. package/src/testing/langium-test-helpers.ts +1 -0
  719. package/src/testing/make-noop-shared-services.ts +6 -6
  720. package/src/testing/make-test-services.ts +93 -41
  721. package/src/testing/make-test-tracer.ts +26 -0
  722. package/src/testing/node/applied-edit-capture.ts +141 -0
  723. package/src/testing/node/index.ts +1 -0
  724. package/src/testing/node/lsp-harness.ts +2 -0
  725. package/src/testing/node/lsp-server-connection.ts +83 -119
  726. package/src/testing/node/scratch-workspace.ts +10 -5
  727. package/src/testing/node/spawned-server.ts +57 -3
  728. package/src/testing/node/unhandled-rejections.ts +31 -0
  729. package/src/testing/parse-semantic-root.ts +1 -1
  730. package/src/testing/playwright/flaky-network-proxy.ts +240 -0
  731. package/src/testing/playwright/index.ts +1 -0
  732. package/src/testing/playwright/server-log-capture.ts +137 -47
  733. package/src/testing/playwright/server-log-fixture.ts +46 -6
  734. package/src/testing/playwright/server-log-region.ts +32 -0
  735. package/src/testing/playwright/server-log-rename-reporter.ts +4 -3
  736. package/src/testing/run-update-pipeline.ts +8 -5
  737. package/src/testing/stub-ast-document-manager.ts +47 -128
  738. package/src/testing/stub-document-builder.ts +133 -18
  739. package/src/testing/stub-hydranium-text-documents.ts +184 -27
  740. package/src/testing/stub-langium-documents.ts +3 -2
  741. package/src/testing/stub-model-service.ts +11 -10
  742. package/src/testing/stub-self-save-registry.ts +1 -1
  743. package/src/testing/stub-service-registry.ts +1 -1
  744. package/src/testing/stub-writable-file-system.ts +3 -2
  745. package/src/util/connection-liveness.ts +67 -15
  746. package/src/util/environment.ts +9 -1
  747. package/lib/documents/language-client-text-shadow.d.ts +0 -101
  748. package/lib/documents/language-client-text-shadow.d.ts.map +0 -1
  749. package/lib/documents/language-client-text-shadow.js +0 -156
  750. package/lib/documents/language-client-text-shadow.js.map +0 -1
  751. package/lib/documents/self-save-registry.d.ts +0 -55
  752. package/lib/documents/self-save-registry.d.ts.map +0 -1
  753. package/lib/documents/self-save-registry.js.map +0 -1
  754. package/lib/lsp/instrument-connection.d.ts +0 -36
  755. package/lib/lsp/instrument-connection.d.ts.map +0 -1
  756. package/lib/lsp/instrument-connection.js +0 -62
  757. package/lib/lsp/instrument-connection.js.map +0 -1
  758. package/lib/node/process-memory.d.ts +0 -66
  759. package/lib/node/process-memory.d.ts.map +0 -1
  760. package/lib/node/process-memory.js +0 -252
  761. package/lib/node/process-memory.js.map +0 -1
  762. package/src/documents/language-client-text-shadow.ts +0 -175
  763. package/src/documents/self-save-registry.ts +0 -81
  764. package/src/lsp/instrument-connection.ts +0 -66
  765. package/src/node/process-memory.ts +0 -299
@@ -1 +1 @@
1
- {"version":3,"file":"profile-digest.js","sourceRoot":"","sources":["../../src/node/profile-digest.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF;;;;;;;GAOG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAE7C,MAAM,CAAC,MAAM,oBAAoB,GAAG,EAAE,CAAC;AAiCvC,SAAS,QAAQ,CAAC,GAAW;IAC1B,IAAI,CAAC,GAAG,EAAE,CAAC;QACR,OAAO,QAAQ,CAAC;IACnB,CAAC;IACD,OAAO,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,IAAI,GAAG,CAAC;AAC1C,CAAC;AAED,SAAS,QAAQ,CAAC,KAAsB;IACrC,OAAO,GAAG,KAAK,CAAC,YAAY,IAAI,aAAa,KAAK,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,UAAU,GAAG,CAAC;AAChG,CAAC;AAED,kGAAkG;AAClG,SAAS,YAAY,CAAC,MAAc,EAAE,MAA2B,EAAE,IAAY,EAAE,MAAiC;IAC/G,MAAM,KAAK,GAAG,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,CAAC,GAAG,GAAG,KAAK,EAAE,CAAC,CAAC,CAAC;IAC1E,MAAM,IAAI,GAAG,CAAC,GAAG,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;IAC9E,MAAM,KAAK,GAAG,CAAC,GAAG,MAAM,UAAU,IAAI,CAAC,MAAM,OAAO,MAAM,CAAC,IAAI,eAAe,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;IACxG,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,IAAI,EAAE,CAAC;QAC/B,MAAM,OAAO,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACtD,KAAK,CAAC,IAAI,CAAC,KAAK,MAAM,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC;IAC7F,CAAC;IACD,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;AAClC,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,gBAAgB,CAAC,OAAmB,EAAE,UAAyB,EAAE;IAC9E,MAAM,SAAS,GAAG,IAAI,GAAG,EAA2B,CAAC;IACrD,KAAK,MAAM,IAAI,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;QAChC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;IAC1C,CAAC;IACD,MAAM,aAAa,GAAG,IAAI,GAAG,EAAkB,CAAC;IAChD,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;QACvC,MAAM,KAAK,GAAG,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACpC,IAAI,KAAK,EAAE,CAAC;YACT,aAAa,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,aAAa,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACpH,CAAC;IACJ,CAAC,CAAC,CAAC;IACH,OAAO,YAAY,CAAC,eAAe,EAAE,aAAa,EAAE,OAAO,CAAC,IAAI,IAAI,oBAAoB,EAAE,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AAC1I,CAAC;AAED,6GAA6G;AAC7G,MAAM,UAAU,uBAAuB,CAAC,OAA0B,EAAE,UAAyB,EAAE;IAC5F,MAAM,YAAY,GAAG,IAAI,GAAG,EAAkB,CAAC;IAC/C,MAAM,KAAK,GAAG,CAAC,IAAoB,EAAQ,EAAE;QAC1C,IAAI,IAAI,CAAC,QAAQ,GAAG,CAAC,EAAE,CAAC;YACrB,YAAY,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC;QACjH,CAAC;QACD,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,QAAQ,IAAI,EAAE,EAAE,CAAC;YACvC,KAAK,CAAC,KAAK,CAAC,CAAC;QAChB,CAAC;IACJ,CAAC,CAAC;IACF,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACpB,OAAO,YAAY,CAAC,YAAY,EAAE,YAAY,EAAE,OAAO,CAAC,IAAI,IAAI,oBAAoB,EAAE,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;AACvH,CAAC"}
1
+ {"version":3,"file":"profile-digest.js","sourceRoot":"","sources":["../../src/node/profile-digest.ts"],"names":[],"mappings":"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"}
@@ -6,7 +6,7 @@
6
6
  *
7
7
  * SPDX-License-Identifier: MIT
8
8
  ********************************************************************************/
9
- import { PROFILING_SCHEMA_VERSION, type LatencyCollector, type ProfilingArtifact, type ProfilingArtifactKind, type ProfilingEnvironment, type ProfilingManifest } from '@hydranium/protocol';
9
+ import { PROFILING_SCHEMA_VERSION, type LogThreshold, type LatencyCollector, type ProfilingArtifact, type ProfilingArtifactKind, type ProfilingEnvironment, type ProfilingManifest } from '@hydranium/protocol';
10
10
  import { type ProfileCaptureOptions, type ProfileReport } from './profile-capture.js';
11
11
  export { PROFILING_SCHEMA_VERSION };
12
12
  export type { ProfilingArtifact, ProfilingEnvironment, ProfilingManifest };
@@ -27,10 +27,18 @@ export interface ProfilingRunOptions {
27
27
  /**
28
28
  * Optional latency collector. When present, {@link ProfilingRun.finish} writes
29
29
  * its report to `server-latency.json` and records a `server-latency` manifest artefact. A
30
- * head feeds it via the RPC binding / `instrumentLspConnection`; a pure
31
- * headless build with no request traffic leaves it empty.
30
+ * head feeds it via the RPC binding / `lspLatencyOptions`; a pure headless
31
+ * build with no request traffic leaves it empty.
32
32
  */
33
33
  latency?: LatencyCollector;
34
+ /**
35
+ * Threshold `server.log` is written at. Defaults to `HYDRANIUM_LOG_FILE_LEVEL`,
36
+ * then `HYDRANIUM_LOG_LEVEL`, then `'info'`, read at {@link ProfilingRun.start}
37
+ * and held for the run, so a log-level setting arriving mid-run leaves the log
38
+ * alone. Above `'info'` the framework's own debug profile sessions run inside
39
+ * the captured windows and show up in the profiles.
40
+ */
41
+ logFileLevel?: LogThreshold;
34
42
  }
35
43
  /**
36
44
  * A profiling session: create it, run one or more named windows through it, then
@@ -50,6 +58,8 @@ export declare class ProfilingRun {
50
58
  protected finished: boolean;
51
59
  /** The `HYDRANIUM_LOG_FILE` value seen before this run pointed it at the session (restored on {@link finish}). */
52
60
  protected readonly previousLogFileEnv?: string;
61
+ /** The `HYDRANIUM_LOG_FILE_LEVEL` value seen before this run set it (restored on {@link finish}). */
62
+ protected readonly previousLogFileLevelEnv?: string;
53
63
  /** Absolute path of the session's teed server log. */
54
64
  readonly serverLogPath: string;
55
65
  protected constructor(options: ProfilingRunOptions, directory: string, sessionId: string);
@@ -1 +1 @@
1
- {"version":3,"file":"profiling-run.d.ts","sourceRoot":"","sources":["../../src/node/profiling-run.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAYlF,OAAO,EAEJ,wBAAwB,EACxB,KAAK,gBAAgB,EACrB,KAAK,iBAAiB,EACtB,KAAK,qBAAqB,EAC1B,KAAK,oBAAoB,EACzB,KAAK,iBAAiB,EACxB,MAAM,qBAAqB,CAAC;AAI7B,OAAO,EAAmB,KAAK,qBAAqB,EAAE,KAAK,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAMvG,OAAO,EAAE,wBAAwB,EAAE,CAAC;AACpC,YAAY,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,CAAC;AAE3E,+GAA+G;AAC/G,MAAM,WAAW,mBAAmB;IACjC,2FAA2F;IAC3F,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,qEAAqE;IACrE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,2EAA2E;IAC3E,IAAI,CAAC,EAAE,SAAS,GAAG,KAAK,CAAC;IACzB,6DAA6D;IAC7D,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,8FAA8F;IAC9F,OAAO,CAAC,EAAE,qBAAqB,CAAC;IAChC;;;;;OAKG;IACH,OAAO,CAAC,EAAE,gBAAgB,CAAC;CAC7B;AAOD;;;;GAIG;AACH,qBAAa,YAAY;IAanB,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,mBAAmB;IAZlD,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,SAAS,CAAC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IACrC,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAM;IAC/D,SAAS,CAAC,QAAQ,CAAC,SAAS,EAAE,iBAAiB,EAAE,CAAM;IACvD,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAA;KAAE,EAAE,CAAM;IACjE,SAAS,CAAC,QAAQ,UAAS;IAC3B,kHAAkH;IAClH,SAAS,CAAC,QAAQ,CAAC,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC/C,sDAAsD;IACtD,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAE/B,SAAS,aACa,OAAO,EAAE,mBAAmB,EAC/C,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM;WAiBP,KAAK,CAAC,OAAO,GAAE,mBAAwB,GAAG,OAAO,CAAC,YAAY,CAAC;IAS5E;;;;OAIG;IACH,MAAM,CAAC,IAAI,EAAE,qBAAqB,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,GAAG,IAAI;IAQ1E,6GAA6G;IACvG,MAAM,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IA6BjE,qHAAqH;IACrH,SAAS,CAAC,kBAAkB,CACzB,IAAI,EAAE,qBAAqB,EAC3B,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,MAAM,GAChC,iBAAiB;IAapB,wGAAwG;IAClG,MAAM,IAAI,OAAO,CAAC,iBAAiB,CAAC;CAiC5C;AAED;;;;;;;;GAQG;AACH,wBAAgB,wBAAwB,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,GAAG,IAAI,CActG"}
1
+ {"version":3,"file":"profiling-run.d.ts","sourceRoot":"","sources":["../../src/node/profiling-run.ts"],"names":[],"mappings":"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"}
@@ -15,7 +15,7 @@
15
15
  * given a collector, the latency report; browser-origin collectors append their
16
16
  * own manifest entries the same way, from the Playwright side.
17
17
  */
18
- import { DEFAULT_LOG_FILE_ENV, PROFILING_SCHEMA_VERSION } from '@hydranium/protocol';
18
+ import { DEFAULT_LOG_FILE_ENV, DEFAULT_LOG_FILE_LEVEL_ENV, DEFAULT_LOG_LEVEL_ENV, parseLogLevel, PROFILING_SCHEMA_VERSION } from '@hydranium/protocol';
19
19
  import * as fs from 'node:fs';
20
20
  import * as os from 'node:os';
21
21
  import * as path from 'node:path';
@@ -25,6 +25,14 @@ import { digestAllocationProfile, digestCpuProfile } from './profile-digest.js';
25
25
  // assembler can share the shape without a Node-only dependency chain;
26
26
  // re-export it here so `@hydranium/core/node` consumers keep one import site.
27
27
  export { PROFILING_SCHEMA_VERSION };
28
+ function restoreEnv(name, value) {
29
+ if (value === undefined) {
30
+ delete process.env[name];
31
+ }
32
+ else {
33
+ process.env[name] = value;
34
+ }
35
+ }
28
36
  /** A cgroup memory controller signals we are inside a container/pod. */
29
37
  function detectContainer() {
30
38
  return fs.existsSync('/sys/fs/cgroup/memory.current') || fs.existsSync('/sys/fs/cgroup/memory/memory.usage_in_bytes');
@@ -44,6 +52,8 @@ export class ProfilingRun {
44
52
  finished = false;
45
53
  /** The `HYDRANIUM_LOG_FILE` value seen before this run pointed it at the session (restored on {@link finish}). */
46
54
  previousLogFileEnv;
55
+ /** The `HYDRANIUM_LOG_FILE_LEVEL` value seen before this run set it (restored on {@link finish}). */
56
+ previousLogFileLevelEnv;
47
57
  /** Absolute path of the session's teed server log. */
48
58
  serverLogPath;
49
59
  constructor(options, directory, sessionId) {
@@ -57,10 +67,13 @@ export class ProfilingRun {
57
67
  // `HYDRANIUM_LOG_FILE` env, which every `@hydranium/core` copy reads when
58
68
  // its logger is CONSTRUCTED — so `ProfilingRun.start` must run before the
59
69
  // head's services are created (as `measureModelMemory` does). This is the
60
- // only mechanism that crosses a yalc'd adopter's separate core copy; a
70
+ // only mechanism that crosses an adopter's separate core copy; a
61
71
  // process-local `setLogFilePath` would only reach this module's own copy.
62
72
  this.previousLogFileEnv = process.env[DEFAULT_LOG_FILE_ENV];
63
73
  process.env[DEFAULT_LOG_FILE_ENV] = this.serverLogPath;
74
+ this.previousLogFileLevelEnv = process.env[DEFAULT_LOG_FILE_LEVEL_ENV];
75
+ process.env[DEFAULT_LOG_FILE_LEVEL_ENV] =
76
+ options.logFileLevel ?? parseLogLevel(this.previousLogFileLevelEnv) ?? parseLogLevel(process.env[DEFAULT_LOG_LEVEL_ENV]) ?? 'info';
64
77
  }
65
78
  static async start(options = {}) {
66
79
  const sessionId = options.sessionId ?? `profiling-${new Date().toISOString().replace(/[:.]/g, '-')}`;
@@ -124,12 +137,8 @@ export class ProfilingRun {
124
137
  this.finished = true;
125
138
  // Restore the prior log-file env, then record the log as an artefact only
126
139
  // if the run actually produced one.
127
- if (this.previousLogFileEnv === undefined) {
128
- delete process.env[DEFAULT_LOG_FILE_ENV];
129
- }
130
- else {
131
- process.env[DEFAULT_LOG_FILE_ENV] = this.previousLogFileEnv;
132
- }
140
+ restoreEnv(DEFAULT_LOG_FILE_ENV, this.previousLogFileEnv);
141
+ restoreEnv(DEFAULT_LOG_FILE_LEVEL_ENV, this.previousLogFileLevelEnv);
133
142
  if (fs.existsSync(this.serverLogPath)) {
134
143
  this.artifacts.push({ kind: 'server-log', path: 'server.log' });
135
144
  }
@@ -1 +1 @@
1
- {"version":3,"file":"profiling-run.js","sourceRoot":"","sources":["../../src/node/profiling-run.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"profiling-run.js","sourceRoot":"","sources":["../../src/node/profiling-run.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,61 @@
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 Clock } from '@hydranium/protocol';
10
+ /**
11
+ * Errnos Windows raises when a replacing `rename` meets a handle already on the
12
+ * destination open. POSIX renames are unaffected by open handles, so these
13
+ * cannot fire there and the retry below costs nothing.
14
+ */
15
+ export declare const RENAME_CONTENTION_CODES: Set<string>;
16
+ /**
17
+ * How long a replacing rename may keep retrying before it gives up.
18
+ *
19
+ * BOUNDED, not open-ended: a genuine permission fault raises the same errno as
20
+ * contention and is distinguishable from it only by never clearing, so an
21
+ * unbounded wait would convert a hard error into a hang.
22
+ *
23
+ * The figure is a judgement, not a measurement, and the honest bound on it is
24
+ * that the previous 2s was observed EXHAUSTED on a loaded Windows CI runner
25
+ * while no upper bound has been established. What would settle it is recording
26
+ * how long a real contended rename takes to clear. graceful-fs tolerates 60s
27
+ * for Windows rename contention, but that is weaker support than it looks: it
28
+ * retries only where the destination has GONE, which is the opposite of
29
+ * replacing one a reader holds open.
30
+ */
31
+ export declare const RENAME_BUDGET_MS = 10000;
32
+ /**
33
+ * How long a miss is waited out on Windows before it counts as an absence,
34
+ * since a replacing rename there can hide the name from a reader for a while.
35
+ * Bounded: a real deletion differs only by never ending, so it pays the whole
36
+ * budget. The figure is a judgement, not an established bound.
37
+ */
38
+ export declare const RENAME_GAP_BUDGET_MS = 2000;
39
+ /** Seams for the test, which cannot make a real rename fail on demand. */
40
+ export interface RenameOverOpenReadersOptions {
41
+ readonly rename?: (from: string, to: string) => Promise<void>;
42
+ readonly budgetMs?: number;
43
+ readonly clock?: Clock;
44
+ }
45
+ /**
46
+ * `rename` the staged content over `destination`, retrying while Windows
47
+ * reports the destination as held open.
48
+ *
49
+ * The staging file exists so a reader never sees a half-written file, and on
50
+ * Windows the very presence of that reader is what makes the replacing rename
51
+ * fail — so the indivisible write breaks under exactly the contention it was
52
+ * built for, and it breaks intermittently, which is worse than never working.
53
+ * A reader's handle is released in milliseconds, so waiting turns a spurious
54
+ * failure into a slightly later success.
55
+ *
56
+ * Exhausting the budget rethrows the last failure, leaving the caller's cleanup
57
+ * and error contract unchanged. An errno OUTSIDE the contention set is rethrown
58
+ * without waiting at all: retrying a fault that will not clear only delays it.
59
+ */
60
+ export declare function renameOverOpenReaders(staging: string, destination: string, options?: RenameOverOpenReadersOptions): Promise<void>;
61
+ //# sourceMappingURL=rename-over-open-readers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rename-over-open-readers.d.ts","sourceRoot":"","sources":["../../src/node/rename-over-open-readers.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF,OAAO,EAAE,KAAK,KAAK,EAAe,MAAM,qBAAqB,CAAC;AAG9D;;;;GAIG;AACH,eAAO,MAAM,uBAAuB,aAAwC,CAAC;AAE7E;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,gBAAgB,QAAS,CAAC;AAEvC;;;;;GAKG;AACH,eAAO,MAAM,oBAAoB,OAAQ,CAAC;AAE1C,0EAA0E;AAC1E,MAAM,WAAW,4BAA4B;IAC1C,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9D,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC;CACzB;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAsB,qBAAqB,CACxC,OAAO,EAAE,MAAM,EACf,WAAW,EAAE,MAAM,EACnB,OAAO,GAAE,4BAAiC,GAC1C,OAAO,CAAC,IAAI,CAAC,CAuBf"}
@@ -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 { SystemClock } from '@hydranium/protocol';
10
+ import * as fsp from 'node:fs/promises';
11
+ /**
12
+ * Errnos Windows raises when a replacing `rename` meets a handle already on the
13
+ * destination open. POSIX renames are unaffected by open handles, so these
14
+ * cannot fire there and the retry below costs nothing.
15
+ */
16
+ export const RENAME_CONTENTION_CODES = new Set(['EPERM', 'EACCES', 'EBUSY']);
17
+ /**
18
+ * How long a replacing rename may keep retrying before it gives up.
19
+ *
20
+ * BOUNDED, not open-ended: a genuine permission fault raises the same errno as
21
+ * contention and is distinguishable from it only by never clearing, so an
22
+ * unbounded wait would convert a hard error into a hang.
23
+ *
24
+ * The figure is a judgement, not a measurement, and the honest bound on it is
25
+ * that the previous 2s was observed EXHAUSTED on a loaded Windows CI runner
26
+ * while no upper bound has been established. What would settle it is recording
27
+ * how long a real contended rename takes to clear. graceful-fs tolerates 60s
28
+ * for Windows rename contention, but that is weaker support than it looks: it
29
+ * retries only where the destination has GONE, which is the opposite of
30
+ * replacing one a reader holds open.
31
+ */
32
+ export const RENAME_BUDGET_MS = 10_000;
33
+ /**
34
+ * How long a miss is waited out on Windows before it counts as an absence,
35
+ * since a replacing rename there can hide the name from a reader for a while.
36
+ * Bounded: a real deletion differs only by never ending, so it pays the whole
37
+ * budget. The figure is a judgement, not an established bound.
38
+ */
39
+ export const RENAME_GAP_BUDGET_MS = 2_000;
40
+ /**
41
+ * `rename` the staged content over `destination`, retrying while Windows
42
+ * reports the destination as held open.
43
+ *
44
+ * The staging file exists so a reader never sees a half-written file, and on
45
+ * Windows the very presence of that reader is what makes the replacing rename
46
+ * fail — so the indivisible write breaks under exactly the contention it was
47
+ * built for, and it breaks intermittently, which is worse than never working.
48
+ * A reader's handle is released in milliseconds, so waiting turns a spurious
49
+ * failure into a slightly later success.
50
+ *
51
+ * Exhausting the budget rethrows the last failure, leaving the caller's cleanup
52
+ * and error contract unchanged. An errno OUTSIDE the contention set is rethrown
53
+ * without waiting at all: retrying a fault that will not clear only delays it.
54
+ */
55
+ export async function renameOverOpenReaders(staging, destination, options = {}) {
56
+ const rename = options.rename ?? fsp.rename;
57
+ const clock = options.clock ?? new SystemClock();
58
+ const budgetMs = options.budgetMs ?? RENAME_BUDGET_MS;
59
+ // A stopwatch, not two `now()` readings: a wall-clock jump would end the
60
+ // budget early or stretch it.
61
+ const waited = clock.stopwatch();
62
+ for (let attempt = 0;; attempt++) {
63
+ try {
64
+ await rename(staging, destination);
65
+ return;
66
+ }
67
+ catch (err) {
68
+ const code = err instanceof Error && 'code' in err ? String(err.code) : undefined;
69
+ if (code === undefined || !RENAME_CONTENTION_CODES.has(code) || waited.elapsedMs >= budgetMs) {
70
+ throw err;
71
+ }
72
+ // Backs off to keep a long contention window from spinning, capped so
73
+ // a late attempt still lands promptly once the handle is released.
74
+ // Not `clock.setTimer`: it unrefs its timer, so a process with only
75
+ // this write pending could exit mid-backoff.
76
+ await new Promise(resolve => setTimeout(resolve, Math.min(2 ** attempt, 50)));
77
+ }
78
+ }
79
+ }
80
+ //# sourceMappingURL=rename-over-open-readers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rename-over-open-readers.js","sourceRoot":"","sources":["../../src/node/rename-over-open-readers.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF,OAAO,EAAc,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAC9D,OAAO,KAAK,GAAG,MAAM,kBAAkB,CAAC;AAExC;;;;GAIG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,IAAI,GAAG,CAAC,CAAC,OAAO,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC;AAE7E;;;;;;;;;;;;;;GAcG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,MAAM,CAAC;AAEvC;;;;;GAKG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,KAAK,CAAC;AAS1C;;;;;;;;;;;;;;GAcG;AACH,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACxC,OAAe,EACf,WAAmB,EACnB,OAAO,GAAiC,EAAE;IAE1C,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,GAAG,CAAC,MAAM,CAAC;IAC5C,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,IAAI,WAAW,EAAE,CAAC;IACjD,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,gBAAgB,CAAC;IACtD,yEAAyE;IACzE,8BAA8B;IAC9B,MAAM,MAAM,GAAG,KAAK,CAAC,SAAS,EAAE,CAAC;IACjC,KAAK,IAAI,OAAO,GAAG,CAAC,GAAI,OAAO,EAAE,EAAE,CAAC;QACjC,IAAI,CAAC;YACF,MAAM,MAAM,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;YACnC,OAAO;QACV,CAAC;QAAC,OAAO,GAAY,EAAE,CAAC;YACrB,MAAM,IAAI,GAAG,GAAG,YAAY,KAAK,IAAI,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,MAAM,CAAE,GAA6B,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;YAC7G,IAAI,IAAI,KAAK,SAAS,IAAI,CAAC,uBAAuB,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,SAAS,IAAI,QAAQ,EAAE,CAAC;gBAC5F,MAAM,GAAG,CAAC;YACb,CAAC;YACD,sEAAsE;YACtE,mEAAmE;YACnE,oEAAoE;YACpE,6CAA6C;YAC7C,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;QACjF,CAAC;IACJ,CAAC;AACJ,CAAC"}
@@ -31,7 +31,7 @@ export function startServerDiagnostics(shared, options) {
31
31
  productName,
32
32
  version,
33
33
  phaseDetailThresholdMs,
34
- ...nodeLogPreambleSections(phaseDetailThresholdMs)
34
+ ...nodeLogPreambleSections(phaseDetailThresholdMs, options)
35
35
  });
36
36
  if (options.logInitialMemory ?? true) {
37
37
  shared.Tracer.for('Process').memory('Initial Memory');
@@ -1 +1 @@
1
- {"version":3,"file":"server-diagnostics.js","sourceRoot":"","sources":["../../src/node/server-diagnostics.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF,OAAO,EAA2B,WAAW,EAAE,MAAM,wCAAwC,CAAC;AAE9F,OAAO,EAAgC,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAC9F,OAAO,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,EAA6B,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAiBpF;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,sBAAsB,CAAC,MAAmC,EAAE,OAAiC;IAC1G,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,sBAAsB,EAAE,GAAG,OAAO,CAAC,QAAQ,CAAC;IAC1E,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE;QACzC,WAAW;QACX,OAAO;QACP,sBAAsB;QACtB,GAAG,uBAAuB,CAAC,sBAAsB,CAAC;KACpD,CAAC,CAAC;IACH,IAAI,OAAO,CAAC,gBAAgB,IAAI,IAAI,EAAE,CAAC;QACpC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC;IACzD,CAAC;IACD,MAAM,aAAa,GAAG,qBAAqB,CAAC,MAAM,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;IACvE,MAAM,UAAU,GAAG,kBAAkB,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;IAC9D,OAAO,GAAG,EAAE;QACT,aAAa,EAAE,CAAC;QAChB,UAAU,EAAE,CAAC;IAChB,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"server-diagnostics.js","sourceRoot":"","sources":["../../src/node/server-diagnostics.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF,OAAO,EAA2B,WAAW,EAAE,MAAM,wCAAwC,CAAC;AAE9F,OAAO,EAAgC,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAC9F,OAAO,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,EAA6B,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAiBpF;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,sBAAsB,CAAC,MAAmC,EAAE,OAAiC;IAC1G,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,sBAAsB,EAAE,GAAG,OAAO,CAAC,QAAQ,CAAC;IAC1E,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE;QACzC,WAAW;QACX,OAAO;QACP,sBAAsB;QACtB,GAAG,uBAAuB,CAAC,sBAAsB,EAAE,OAAO,CAAC;KAC7D,CAAC,CAAC;IACH,IAAI,OAAO,CAAC,gBAAgB,IAAI,IAAI,EAAE,CAAC;QACpC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC;IACzD,CAAC;IACD,MAAM,aAAa,GAAG,qBAAqB,CAAC,MAAM,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;IACvE,MAAM,UAAU,GAAG,kBAAkB,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;IAC9D,OAAO,GAAG,EAAE;QACT,aAAa,EAAE,CAAC;QAChB,UAAU,EAAE,CAAC;IAChB,CAAC,CAAC;AACL,CAAC"}
@@ -6,7 +6,7 @@
6
6
  *
7
7
  * SPDX-License-Identifier: MIT
8
8
  ********************************************************************************/
9
- import { Format } from '@hydranium/protocol';
9
+ import { Format, SystemClock } from '@hydranium/protocol';
10
10
  import { DocumentState } from '@hydranium/langium';
11
11
  import { isCstShed } from '../langium/residency/cst-residency-service.js';
12
12
  import { performance } from 'node:perf_hooks';
@@ -23,7 +23,7 @@ export const DEFAULT_OPEN_DOCUMENTS_LIST_CAP = 25;
23
23
  * requested via `options` ({@link ServerStateSnapshotOptions}).
24
24
  */
25
25
  export function formatServerState(documents, label, options) {
26
- const now = performance.now();
26
+ const sinceSample = new SystemClock().stopwatch();
27
27
  const mem = process.memoryUsage();
28
28
  const heap = v8.getHeapStatistics();
29
29
  const cpu = process.cpuUsage();
@@ -41,7 +41,7 @@ export function formatServerState(documents, label, options) {
41
41
  lines.push(` v8 malloced ${Format.bytes(heap.malloced_memory)}, peak ${Format.bytes(heap.peak_malloced_memory)}, ` +
42
42
  `native contexts ${heap.number_of_native_contexts}, detached contexts ${heap.number_of_detached_contexts}`);
43
43
  if (lastSample) {
44
- const wallMs = now - lastSample.atMs;
44
+ const wallMs = lastSample.sinceSample.elapsedMs;
45
45
  const userMs = (cpu.user - lastSample.cpu.user) / 1000;
46
46
  const systemMs = (cpu.system - lastSample.cpu.system) / 1000;
47
47
  const cpuPct = wallMs > 0 ? Math.round(((userMs + systemMs) / wallMs) * 100) : 0;
@@ -86,7 +86,7 @@ export function formatServerState(documents, label, options) {
86
86
  lines.push(` … and ${openDocuments.length - listCap} more`);
87
87
  }
88
88
  }
89
- lastSample = { atMs: now, cpu, elu };
89
+ lastSample = { sinceSample, cpu, elu };
90
90
  return lines.join('\n');
91
91
  }
92
92
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"server-state-snapshot.js","sourceRoot":"","sources":["../../src/node/server-state-snapshot.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"server-state-snapshot.js","sourceRoot":"","sources":["../../src/node/server-state-snapshot.ts"],"names":[],"mappings":"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"}
@@ -6,13 +6,27 @@
6
6
  *
7
7
  * SPDX-License-Identifier: MIT
8
8
  ********************************************************************************/
9
- import type { Disposable, Logger } from '@hydranium/protocol';
9
+ import { type Disposable, type Logger } from '@hydranium/protocol';
10
10
  import type { MessageConnection } from 'vscode-jsonrpc';
11
11
  import type { IntegratedServer } from '../launcher/integrated-server.js';
12
+ import type { ServerSharedServicesMinimal } from '../langium/shared-services.js';
13
+ import { type WorkspaceFolderInput } from '../langium/workspace/initialize-workspace.js';
12
14
  /**
13
15
  * Construction-time options for {@link startSocketServer}.
14
16
  */
15
17
  export interface SocketServerOptions {
18
+ /**
19
+ * Shared services tree the head serves from. Without an LSP head the
20
+ * launcher brings its workspace up before listening, so a client never
21
+ * reaches a workspace that is not up.
22
+ */
23
+ readonly shared: ServerSharedServicesMinimal;
24
+ /**
25
+ * Workspace root(s) to initialize — a filesystem path or a `URI`. Required
26
+ * when no LSP head is composed, refused beside one: see
27
+ * {@link initializeWorkspaceWithoutLsp}.
28
+ */
29
+ readonly workspace?: WorkspaceFolderInput | ReadonlyArray<WorkspaceFolderInput>;
16
30
  /**
17
31
  * Port to bind. Default `0` — OS-assigned ephemeral. Resolve the
18
32
  * actual port off {@link StartedSocketServer.port} once `started`
@@ -20,9 +34,25 @@ export interface SocketServerOptions {
20
34
  */
21
35
  readonly port?: number;
22
36
  /**
23
- * Optional logger. If omitted, the launcher runs silently — the
24
- * adopter is expected to surface lifecycle events through their own
25
- * logging in {@link OnClientConnection} if needed.
37
+ * Interface to bind. Default `'127.0.0.1'` (LOCAL ONLY) — a head whose
38
+ * port is OS-assigned and announced over the LSP connection is
39
+ * reachable only by a client on the same machine anyway, so a wider
40
+ * binding exposes a port nothing off-box can address. Matches
41
+ * `startGlspServer`'s default, so the two socket heads agree.
42
+ *
43
+ * Pass `'::'` for every interface: that is the dual-stack any-address,
44
+ * so both IPv4 and IPv6 clients connect. `'0.0.0.0'` is NOT the same —
45
+ * it takes IPv4 only and refuses `::1`.
46
+ *
47
+ * An address no local interface holds fails the bind, so `started`
48
+ * rejects with `EADDRNOTAVAIL` rather than falling back to a wider one.
49
+ */
50
+ readonly host?: string;
51
+ /**
52
+ * Optional logger for lifecycle lines and each connection's protocol
53
+ * faults. If omitted, the launcher runs silently — the adopter is expected
54
+ * to surface lifecycle events through their own logging in
55
+ * {@link OnClientConnection} if needed.
26
56
  */
27
57
  readonly logger?: Logger;
28
58
  /** Tag included in lifecycle log lines. Default `"SocketServer"`. */
@@ -49,10 +79,12 @@ export type OnClientConnection = (connection: MessageConnection) => Disposable;
49
79
  /**
50
80
  * Live socket server handle returned by {@link startSocketServer}.
51
81
  *
52
- * - {@link IntegratedServer.started} resolves once `listen` resolves
53
- * AND `port` is populated.
82
+ * - {@link IntegratedServer.started} resolves once the workspace is up,
83
+ * where the launcher brings it up, AND `listen` resolves AND `port` is
84
+ * populated. It rejects, and nothing listens, when the bring-up fails.
54
85
  * - {@link IntegratedServer.stopped} resolves when the underlying
55
- * `net.Server` emits `close`.
86
+ * `net.Server` emits `close`, or once a failed bring-up has rejected
87
+ * `started`.
56
88
  * - {@link port} is undefined until `started` resolves.
57
89
  * - {@link close} triggers shutdown: disposes all active client
58
90
  * connections and closes the underlying `net.Server`.
@@ -74,6 +106,10 @@ export interface StartedSocketServer extends IntegratedServer {
74
106
  * close / server shutdown. Adopters keep per-client instance creation
75
107
  * (their server objects) but don't re-implement the tracking machinery.
76
108
  *
109
+ * **Without an LSP head the launcher brings the workspace up, then
110
+ * listens**, as `startStdioServer` does: a request served before the
111
+ * bring-up starts keeps its cross-file references unresolved for good.
112
+ *
77
113
  * The port is only known once {@link StartedSocketServer.started} has
78
114
  * resolved, so announcing it — via {@link publishPortOnLspConnection} —
79
115
  * belongs after that await, not beside the call.
@@ -1 +1 @@
1
- {"version":3,"file":"socket-launcher.d.ts","sourceRoot":"","sources":["../../src/node/socket-launcher.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAIlF,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAE9D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AAEzE;;GAEG;AACH,MAAM,WAAW,mBAAmB;IACjC;;;;OAIG;IACH,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB;;;;OAIG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,qEAAqE;IACrE,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,MAAM,kBAAkB,GAAG,CAAC,UAAU,EAAE,iBAAiB,KAAK,UAAU,CAAC;AAE/E;;;;;;;;;;GAUG;AACH,MAAM,WAAW,mBAAoB,SAAQ,gBAAgB;IAC1D,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC;IAClC,KAAK,IAAI,IAAI,CAAC;CAChB;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,kBAAkB,GAAG,mBAAmB,CA0F3H;AAED;;;;;GAKG;AACH,MAAM,WAAW,iBAAiB;IAC/B,SAAS,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,GAAG,MAAM,EAAE,OAAO,EAAE,KAAK,OAAO,GAAG,UAAU,CAAC;CACtG;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,0BAA0B,CAAC,aAAa,EAAE,iBAAiB,GAAG,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,UAAU,CAKlI"}
1
+ {"version":3,"file":"socket-launcher.d.ts","sourceRoot":"","sources":["../../src/node/socket-launcher.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAGlF,OAAO,EAAmD,KAAK,UAAU,EAAE,KAAK,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAEpH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AACzE,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,+BAA+B,CAAC;AACjF,OAAO,EAAiC,KAAK,oBAAoB,EAAE,MAAM,8CAA8C,CAAC;AAExH;;GAEG;AACH,MAAM,WAAW,mBAAmB;IACjC;;;;OAIG;IACH,QAAQ,CAAC,MAAM,EAAE,2BAA2B,CAAC;IAC7C;;;;OAIG;IACH,QAAQ,CAAC,SAAS,CAAC,EAAE,oBAAoB,GAAG,aAAa,CAAC,oBAAoB,CAAC,CAAC;IAChF;;;;OAIG;IACH,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB;;;;;;;;;;;;;OAaG;IACH,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB;;;;;OAKG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,qEAAqE;IACrE,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,MAAM,kBAAkB,GAAG,CAAC,UAAU,EAAE,iBAAiB,KAAK,UAAU,CAAC;AAE/E;;;;;;;;;;;;GAYG;AACH,MAAM,WAAW,mBAAoB,SAAQ,gBAAgB;IAC1D,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC;IAClC,KAAK,IAAI,IAAI,CAAC;CAChB;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,kBAAkB,GAAG,mBAAmB,CAuH3H;AAED;;;;;GAKG;AACH,MAAM,WAAW,iBAAiB;IAC/B,SAAS,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,GAAG,MAAM,EAAE,OAAO,EAAE,KAAK,OAAO,GAAG,UAAU,CAAC;CACtG;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,0BAA0B,CAAC,aAAa,EAAE,iBAAiB,GAAG,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,UAAU,CAKlI"}
@@ -6,9 +6,10 @@
6
6
  *
7
7
  * SPDX-License-Identifier: MIT
8
8
  ********************************************************************************/
9
- import { Deferred } from '@hydranium/langium';
10
9
  import * as net from 'node:net';
10
+ import { Deferred, describeError, describeErrorWithStack } from '@hydranium/protocol';
11
11
  import { createMessageConnection, SocketMessageReader, SocketMessageWriter } from 'vscode-jsonrpc/node';
12
+ import { initializeWorkspaceWithoutLsp } from '../langium/workspace/initialize-workspace.js';
12
13
  /**
13
14
  * Start a socket-based protocol head. Wraps `net.createServer` with the
14
15
  * boilerplate adopters used to write per-head: address resolution,
@@ -22,12 +23,17 @@ import { createMessageConnection, SocketMessageReader, SocketMessageWriter } fro
22
23
  * close / server shutdown. Adopters keep per-client instance creation
23
24
  * (their server objects) but don't re-implement the tracking machinery.
24
25
  *
26
+ * **Without an LSP head the launcher brings the workspace up, then
27
+ * listens**, as `startStdioServer` does: a request served before the
28
+ * bring-up starts keeps its cross-file references unresolved for good.
29
+ *
25
30
  * The port is only known once {@link StartedSocketServer.started} has
26
31
  * resolved, so announcing it — via {@link publishPortOnLspConnection} —
27
32
  * belongs after that await, not beside the call.
28
33
  */
29
34
  export function startSocketServer(options, onClientConnection) {
30
35
  const port = options.port ?? 0;
36
+ const host = options.host ?? '127.0.0.1';
31
37
  const logger = options.logger;
32
38
  const tag = options.logTag ?? 'SocketServer';
33
39
  const started = new Deferred();
@@ -38,7 +44,7 @@ export function startSocketServer(options, onClientConnection) {
38
44
  // (so shutdown drains both at once).
39
45
  const activeConnections = [];
40
46
  const netServer = net.createServer(socket => {
41
- const connection = createMessageConnection(new SocketMessageReader(socket), new SocketMessageWriter(socket));
47
+ const connection = createMessageConnection(new SocketMessageReader(socket), new SocketMessageWriter(socket), logger?.with(tag));
42
48
  const adopterDisposable = onClientConnection(connection);
43
49
  const entry = { connection, adopterDisposable };
44
50
  activeConnections.push(entry);
@@ -54,7 +60,7 @@ export function startSocketServer(options, onClientConnection) {
54
60
  adopterDisposable.dispose();
55
61
  }
56
62
  catch (err) {
57
- logger?.warn(`[${tag}] Adopter disposable threw on cleanup: ${err?.message ?? err}`);
63
+ logger?.warn(`[${tag}] Adopter disposable threw on cleanup: ${describeErrorWithStack(err)}`);
58
64
  }
59
65
  connection.dispose();
60
66
  const idx = activeConnections.indexOf(entry);
@@ -66,7 +72,35 @@ export function startSocketServer(options, onClientConnection) {
66
72
  connection.onClose(() => dispose());
67
73
  connection.listen();
68
74
  });
69
- netServer.listen(port);
75
+ // The workspace manager logs a failed initialization itself; a refused
76
+ // `workspace` throws before `initializing` is set.
77
+ let initializing = false;
78
+ let closed = false;
79
+ const begin = async () => {
80
+ const initialization = initializeWorkspaceWithoutLsp(options.shared, options.workspace);
81
+ initializing = true;
82
+ await initialization;
83
+ initializing = false;
84
+ // A `close` during the bring-up has resolved `stopped` already.
85
+ if (closed) {
86
+ started.reject(new Error(`${tag} was closed before it listened`));
87
+ return;
88
+ }
89
+ netServer.listen(port, host);
90
+ };
91
+ begin().catch((err) => {
92
+ if (initializing) {
93
+ logger?.debug(`[${tag}] Startup failed: the workspace did not initialize. ${describeError(err)}`);
94
+ }
95
+ else {
96
+ logger?.error(`[${tag}] Startup failed: ${describeErrorWithStack(err)}`);
97
+ }
98
+ started.reject(err);
99
+ stopped.resolve();
100
+ });
101
+ // `started` is always observed internally, as `startStdioServer`'s is, so a
102
+ // caller that closes early and ignores it cannot crash the process.
103
+ void started.promise.catch(() => undefined);
70
104
  netServer.on('listening', () => {
71
105
  const addressInfo = netServer.address();
72
106
  if (!addressInfo) {
@@ -82,11 +116,11 @@ export function startSocketServer(options, onClientConnection) {
82
116
  return;
83
117
  }
84
118
  handle.port = addressInfo.port;
85
- logger?.info(`[${tag}] Ready to accept new client requests on port: ${addressInfo.port}`);
119
+ logger?.info(`[${tag}] Ready to accept new client requests on ${addressInfo.address} port: ${addressInfo.port}`);
86
120
  started.resolve();
87
121
  });
88
122
  netServer.on('error', err => {
89
- logger?.error(`[${tag}] Error: ${err.message}`);
123
+ logger?.error(`[${tag}] Error: ${describeErrorWithStack(err)}`);
90
124
  started.reject(err);
91
125
  });
92
126
  netServer.on('close', () => {
@@ -97,7 +131,7 @@ export function startSocketServer(options, onClientConnection) {
97
131
  entry.adopterDisposable.dispose();
98
132
  }
99
133
  catch (err) {
100
- logger?.warn(`[${tag}] Adopter disposable threw on shutdown: ${err?.message ?? err}`);
134
+ logger?.warn(`[${tag}] Adopter disposable threw on shutdown: ${describeErrorWithStack(err)}`);
101
135
  }
102
136
  entry.connection.dispose();
103
137
  }
@@ -111,6 +145,7 @@ export function startSocketServer(options, onClientConnection) {
111
145
  started: started.promise,
112
146
  stopped: stopped.promise,
113
147
  close() {
148
+ closed = true;
114
149
  netServer.close();
115
150
  }
116
151
  };