@hydranium/core 1.0.0-next.36 → 1.0.0-next.361

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 (794) 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 +266 -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 +445 -282
  51. package/lib/documents/hydranium-text-documents.d.ts.map +1 -1
  52. package/lib/documents/hydranium-text-documents.js +903 -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/console-tee.d.ts +27 -0
  112. package/lib/langium/diagnostics/console-tee.d.ts.map +1 -0
  113. package/lib/langium/diagnostics/console-tee.js +141 -0
  114. package/lib/langium/diagnostics/console-tee.js.map +1 -0
  115. package/lib/langium/diagnostics/hydranium-langium-profiler.d.ts +9 -20
  116. package/lib/langium/diagnostics/hydranium-langium-profiler.d.ts.map +1 -1
  117. package/lib/langium/diagnostics/hydranium-langium-profiler.js +15 -24
  118. package/lib/langium/diagnostics/hydranium-langium-profiler.js.map +1 -1
  119. package/lib/langium/diagnostics/log-preamble.js +1 -1
  120. package/lib/langium/diagnostics/log-preamble.js.map +1 -1
  121. package/lib/langium/diagnostics/logger.d.ts +25 -6
  122. package/lib/langium/diagnostics/logger.d.ts.map +1 -1
  123. package/lib/langium/diagnostics/logger.js +49 -17
  124. package/lib/langium/diagnostics/logger.js.map +1 -1
  125. package/lib/langium/diagnostics/lsp-logger.d.ts +25 -0
  126. package/lib/langium/diagnostics/lsp-logger.d.ts.map +1 -1
  127. package/lib/langium/diagnostics/lsp-logger.js +81 -46
  128. package/lib/langium/diagnostics/lsp-logger.js.map +1 -1
  129. package/lib/langium/diagnostics/server-tracer.d.ts.map +1 -1
  130. package/lib/langium/diagnostics/server-tracer.js.map +1 -1
  131. package/lib/langium/document-builder/build-pipeline-integration.d.ts +34 -2
  132. package/lib/langium/document-builder/build-pipeline-integration.d.ts.map +1 -1
  133. package/lib/langium/document-builder/build-pipeline-integration.js +44 -31
  134. package/lib/langium/document-builder/build-pipeline-integration.js.map +1 -1
  135. package/lib/langium/document-builder/build-session.d.ts +6 -5
  136. package/lib/langium/document-builder/build-session.d.ts.map +1 -1
  137. package/lib/langium/document-builder/build-session.js +5 -5
  138. package/lib/langium/document-builder/build-session.js.map +1 -1
  139. package/lib/langium/document-builder/document-builder.d.ts +310 -41
  140. package/lib/langium/document-builder/document-builder.d.ts.map +1 -1
  141. package/lib/langium/document-builder/document-builder.js +490 -79
  142. package/lib/langium/document-builder/document-builder.js.map +1 -1
  143. package/lib/langium/documentation/comment-provider.d.ts.map +1 -1
  144. package/lib/langium/documentation/comment-provider.js.map +1 -1
  145. package/lib/langium/integration-services.d.ts +40 -24
  146. package/lib/langium/integration-services.d.ts.map +1 -1
  147. package/lib/langium/integration-services.js +7 -4
  148. package/lib/langium/integration-services.js.map +1 -1
  149. package/lib/langium/integrity/integrity-rule.d.ts +17 -8
  150. package/lib/langium/integrity/integrity-rule.d.ts.map +1 -1
  151. package/lib/langium/integrity/integrity-rule.js.map +1 -1
  152. package/lib/langium/integrity/integrity-service.d.ts +95 -27
  153. package/lib/langium/integrity/integrity-service.d.ts.map +1 -1
  154. package/lib/langium/integrity/integrity-service.js +303 -63
  155. package/lib/langium/integrity/integrity-service.js.map +1 -1
  156. package/lib/langium/keys/containment.d.ts +3 -2
  157. package/lib/langium/keys/containment.d.ts.map +1 -1
  158. package/lib/langium/keys/containment.js.map +1 -1
  159. package/lib/langium/keys/name-based-key-provider.d.ts +17 -10
  160. package/lib/langium/keys/name-based-key-provider.d.ts.map +1 -1
  161. package/lib/langium/keys/name-based-key-provider.js +24 -12
  162. package/lib/langium/keys/name-based-key-provider.js.map +1 -1
  163. package/lib/langium/keys/positional-key-provider.d.ts.map +1 -1
  164. package/lib/langium/keys/positional-key-provider.js.map +1 -1
  165. package/lib/langium/labeling/label-provider.d.ts.map +1 -1
  166. package/lib/langium/labeling/label-provider.js.map +1 -1
  167. package/lib/langium/language-module.d.ts +30 -5
  168. package/lib/langium/language-module.d.ts.map +1 -1
  169. package/lib/langium/language-module.js +21 -5
  170. package/lib/langium/language-module.js.map +1 -1
  171. package/lib/langium/model-service/client-session.d.ts +383 -0
  172. package/lib/langium/model-service/client-session.d.ts.map +1 -0
  173. package/lib/langium/model-service/client-session.js +455 -0
  174. package/lib/langium/model-service/client-session.js.map +1 -0
  175. package/lib/langium/model-service/index.d.ts +2 -0
  176. package/lib/langium/model-service/index.d.ts.map +1 -1
  177. package/lib/langium/model-service/index.js +2 -0
  178. package/lib/langium/model-service/index.js.map +1 -1
  179. package/lib/langium/model-service/model-events.d.ts +66 -0
  180. package/lib/langium/model-service/model-events.d.ts.map +1 -0
  181. package/lib/langium/model-service/model-events.js +10 -0
  182. package/lib/langium/model-service/model-events.js.map +1 -0
  183. package/lib/langium/model-service/model-service.d.ts +476 -300
  184. package/lib/langium/model-service/model-service.d.ts.map +1 -1
  185. package/lib/langium/model-service/model-service.js +602 -466
  186. package/lib/langium/model-service/model-service.js.map +1 -1
  187. package/lib/langium/module.d.ts +141 -40
  188. package/lib/langium/module.d.ts.map +1 -1
  189. package/lib/langium/module.js +52 -40
  190. package/lib/langium/module.js.map +1 -1
  191. package/lib/langium/naming/name-provider.d.ts +32 -7
  192. package/lib/langium/naming/name-provider.d.ts.map +1 -1
  193. package/lib/langium/naming/name-provider.js +10 -4
  194. package/lib/langium/naming/name-provider.js.map +1 -1
  195. package/lib/langium/naming/name-separator-validation.d.ts.map +1 -1
  196. package/lib/langium/project/abstract-project-manager.d.ts.map +1 -1
  197. package/lib/langium/project/abstract-project-manager.js +13 -6
  198. package/lib/langium/project/abstract-project-manager.js.map +1 -1
  199. package/lib/langium/project/project-change-event.d.ts +2 -2
  200. package/lib/langium/project/single-project-manager.d.ts.map +1 -1
  201. package/lib/langium/project/single-project-manager.js.map +1 -1
  202. package/lib/langium/residency/cst-residency-service.d.ts +40 -14
  203. package/lib/langium/residency/cst-residency-service.d.ts.map +1 -1
  204. package/lib/langium/residency/cst-residency-service.js +27 -58
  205. package/lib/langium/residency/cst-residency-service.js.map +1 -1
  206. package/lib/langium/scope/ast-node-description-provider.d.ts +46 -10
  207. package/lib/langium/scope/ast-node-description-provider.d.ts.map +1 -1
  208. package/lib/langium/scope/ast-node-description-provider.js +88 -15
  209. package/lib/langium/scope/ast-node-description-provider.js.map +1 -1
  210. package/lib/langium/scope/built-local-symbols.d.ts +12 -0
  211. package/lib/langium/scope/built-local-symbols.d.ts.map +1 -0
  212. package/lib/langium/scope/built-local-symbols.js +11 -0
  213. package/lib/langium/scope/built-local-symbols.js.map +1 -0
  214. package/lib/langium/scope/fallback-scope.d.ts +27 -0
  215. package/lib/langium/scope/fallback-scope.d.ts.map +1 -0
  216. package/lib/langium/scope/fallback-scope.js +35 -0
  217. package/lib/langium/scope/fallback-scope.js.map +1 -0
  218. package/lib/langium/scope/hydranium-scope-computation.d.ts +21 -18
  219. package/lib/langium/scope/hydranium-scope-computation.d.ts.map +1 -1
  220. package/lib/langium/scope/hydranium-scope-computation.js +38 -39
  221. package/lib/langium/scope/hydranium-scope-computation.js.map +1 -1
  222. package/lib/langium/scope/hydranium-scope-provider.d.ts +122 -32
  223. package/lib/langium/scope/hydranium-scope-provider.d.ts.map +1 -1
  224. package/lib/langium/scope/hydranium-scope-provider.js +217 -39
  225. package/lib/langium/scope/hydranium-scope-provider.js.map +1 -1
  226. package/lib/langium/scope/index.d.ts +1 -0
  227. package/lib/langium/scope/index.d.ts.map +1 -1
  228. package/lib/langium/scope/index.js +1 -0
  229. package/lib/langium/scope/index.js.map +1 -1
  230. package/lib/langium/scope/reference-builder.d.ts.map +1 -1
  231. package/lib/langium/scope/reference-builder.js.map +1 -1
  232. package/lib/langium/scope/reference-candidate-provider.d.ts +6 -5
  233. package/lib/langium/scope/reference-candidate-provider.d.ts.map +1 -1
  234. package/lib/langium/scope/reference-candidate-provider.js +3 -2
  235. package/lib/langium/scope/reference-candidate-provider.js.map +1 -1
  236. package/lib/langium/scope/scope-extension-service.d.ts +69 -37
  237. package/lib/langium/scope/scope-extension-service.d.ts.map +1 -1
  238. package/lib/langium/scope/scope-extension-service.js +102 -29
  239. package/lib/langium/scope/scope-extension-service.js.map +1 -1
  240. package/lib/langium/scope/scoped-ast-node-description.d.ts +1 -3
  241. package/lib/langium/scope/scoped-ast-node-description.d.ts.map +1 -1
  242. package/lib/langium/scope/scoped-ast-node-description.js +1 -3
  243. package/lib/langium/scope/scoped-ast-node-description.js.map +1 -1
  244. package/lib/langium/serialization/abstract-serializer.d.ts +38 -27
  245. package/lib/langium/serialization/abstract-serializer.d.ts.map +1 -1
  246. package/lib/langium/serialization/abstract-serializer.js +54 -30
  247. package/lib/langium/serialization/abstract-serializer.js.map +1 -1
  248. package/lib/langium/serialization/json-serializer.d.ts +8 -1
  249. package/lib/langium/serialization/json-serializer.d.ts.map +1 -1
  250. package/lib/langium/serialization/json-serializer.js +13 -3
  251. package/lib/langium/serialization/json-serializer.js.map +1 -1
  252. package/lib/langium/serialization/serializer.d.ts +1 -1
  253. package/lib/langium/serialization/yaml-serializer.d.ts +12 -0
  254. package/lib/langium/serialization/yaml-serializer.d.ts.map +1 -1
  255. package/lib/langium/serialization/yaml-serializer.js +24 -4
  256. package/lib/langium/serialization/yaml-serializer.js.map +1 -1
  257. package/lib/langium/service-registry.d.ts +29 -1
  258. package/lib/langium/service-registry.d.ts.map +1 -1
  259. package/lib/langium/service-registry.js +37 -0
  260. package/lib/langium/service-registry.js.map +1 -1
  261. package/lib/langium/shared-services.d.ts +13 -7
  262. package/lib/langium/shared-services.d.ts.map +1 -1
  263. package/lib/langium/shared-services.js.map +1 -1
  264. package/lib/langium/single-langium-copy.d.ts +22 -0
  265. package/lib/langium/single-langium-copy.d.ts.map +1 -0
  266. package/lib/langium/single-langium-copy.js +36 -0
  267. package/lib/langium/single-langium-copy.js.map +1 -0
  268. package/lib/langium/transfer/transfer-encoder.d.ts +86 -37
  269. package/lib/langium/transfer/transfer-encoder.d.ts.map +1 -1
  270. package/lib/langium/transfer/transfer-encoder.js +36 -25
  271. package/lib/langium/transfer/transfer-encoder.js.map +1 -1
  272. package/lib/langium/trivia/comment-preserver.d.ts +543 -0
  273. package/lib/langium/trivia/comment-preserver.d.ts.map +1 -0
  274. package/lib/langium/trivia/comment-preserver.js +1164 -0
  275. package/lib/langium/trivia/comment-preserver.js.map +1 -0
  276. package/lib/langium/trivia/document-ending-preserver.d.ts +51 -0
  277. package/lib/langium/trivia/document-ending-preserver.d.ts.map +1 -0
  278. package/lib/langium/trivia/document-ending-preserver.js +62 -0
  279. package/lib/langium/trivia/document-ending-preserver.js.map +1 -0
  280. package/lib/langium/trivia/index.d.ts +14 -0
  281. package/lib/langium/trivia/index.d.ts.map +1 -0
  282. package/lib/langium/trivia/index.js +14 -0
  283. package/lib/langium/trivia/index.js.map +1 -0
  284. package/lib/langium/trivia/trivia-contribution.d.ts +37 -0
  285. package/lib/langium/trivia/trivia-contribution.d.ts.map +1 -0
  286. package/lib/langium/trivia/trivia-contribution.js +10 -0
  287. package/lib/langium/trivia/trivia-contribution.js.map +1 -0
  288. package/lib/langium/trivia/trivia-preserver.d.ts +52 -0
  289. package/lib/langium/trivia/trivia-preserver.d.ts.map +1 -0
  290. package/lib/langium/trivia/trivia-preserver.js +10 -0
  291. package/lib/langium/trivia/trivia-preserver.js.map +1 -0
  292. package/lib/langium/trivia/trivia-service.d.ts +70 -0
  293. package/lib/langium/trivia/trivia-service.d.ts.map +1 -0
  294. package/lib/langium/trivia/trivia-service.js +56 -0
  295. package/lib/langium/trivia/trivia-service.js.map +1 -0
  296. package/lib/langium/update-rewrite/normalize-empty-strings.d.ts.map +1 -1
  297. package/lib/langium/update-rewrite/update-rewrite-service.d.ts +1 -1
  298. package/lib/langium/update-rewrite/update-rewrite-service.d.ts.map +1 -1
  299. package/lib/langium/update-rewrite/update-rewrite-service.js.map +1 -1
  300. package/lib/langium/update-rewrite/update-rewrite.d.ts +1 -1
  301. package/lib/langium/validation/document-validator.d.ts +168 -23
  302. package/lib/langium/validation/document-validator.d.ts.map +1 -1
  303. package/lib/langium/validation/document-validator.js +264 -26
  304. package/lib/langium/validation/document-validator.js.map +1 -1
  305. package/lib/langium/validation/validation-contribution-collector.d.ts +9 -1
  306. package/lib/langium/validation/validation-contribution-collector.d.ts.map +1 -1
  307. package/lib/langium/validation/validation-contribution-collector.js +1 -1
  308. package/lib/langium/validation/validation-contribution-collector.js.map +1 -1
  309. package/lib/langium/workspace/ast-node-locator.d.ts +24 -0
  310. package/lib/langium/workspace/ast-node-locator.d.ts.map +1 -0
  311. package/lib/langium/workspace/ast-node-locator.js +32 -0
  312. package/lib/langium/workspace/ast-node-locator.js.map +1 -0
  313. package/lib/langium/workspace/document-uri-policy.d.ts +24 -15
  314. package/lib/langium/workspace/document-uri-policy.d.ts.map +1 -1
  315. package/lib/langium/workspace/document-uri-policy.js +22 -13
  316. package/lib/langium/workspace/document-uri-policy.js.map +1 -1
  317. package/lib/langium/workspace/file-not-found.d.ts +23 -0
  318. package/lib/langium/workspace/file-not-found.d.ts.map +1 -0
  319. package/lib/langium/workspace/file-not-found.js +31 -0
  320. package/lib/langium/workspace/file-not-found.js.map +1 -0
  321. package/lib/langium/workspace/file-system-provider.d.ts +167 -8
  322. package/lib/langium/workspace/file-system-provider.d.ts.map +1 -1
  323. package/lib/langium/workspace/file-system-provider.js +115 -13
  324. package/lib/langium/workspace/file-system-provider.js.map +1 -1
  325. package/lib/langium/workspace/hydranium-langium-document-factory.d.ts +31 -1
  326. package/lib/langium/workspace/hydranium-langium-document-factory.d.ts.map +1 -1
  327. package/lib/langium/workspace/hydranium-langium-document-factory.js +54 -0
  328. package/lib/langium/workspace/hydranium-langium-document-factory.js.map +1 -1
  329. package/lib/langium/workspace/hydranium-workspace-lock.d.ts +43 -1
  330. package/lib/langium/workspace/hydranium-workspace-lock.d.ts.map +1 -1
  331. package/lib/langium/workspace/hydranium-workspace-lock.js +58 -1
  332. package/lib/langium/workspace/hydranium-workspace-lock.js.map +1 -1
  333. package/lib/langium/workspace/hydranium-workspace-manager.d.ts +103 -21
  334. package/lib/langium/workspace/hydranium-workspace-manager.d.ts.map +1 -1
  335. package/lib/langium/workspace/hydranium-workspace-manager.js +184 -31
  336. package/lib/langium/workspace/hydranium-workspace-manager.js.map +1 -1
  337. package/lib/langium/workspace/in-memory-file-system-provider.d.ts +26 -9
  338. package/lib/langium/workspace/in-memory-file-system-provider.d.ts.map +1 -1
  339. package/lib/langium/workspace/in-memory-file-system-provider.js +45 -22
  340. package/lib/langium/workspace/in-memory-file-system-provider.js.map +1 -1
  341. package/lib/langium/workspace/index-manager.d.ts.map +1 -1
  342. package/lib/langium/workspace/index-manager.js.map +1 -1
  343. package/lib/langium/workspace/index.d.ts +2 -0
  344. package/lib/langium/workspace/index.d.ts.map +1 -1
  345. package/lib/langium/workspace/index.js +2 -0
  346. package/lib/langium/workspace/index.js.map +1 -1
  347. package/lib/langium/workspace/initialize-workspace.d.ts +40 -3
  348. package/lib/langium/workspace/initialize-workspace.d.ts.map +1 -1
  349. package/lib/langium/workspace/initialize-workspace.js +68 -3
  350. package/lib/langium/workspace/initialize-workspace.js.map +1 -1
  351. package/lib/langium/workspace/langium-documents.d.ts +7 -0
  352. package/lib/langium/workspace/langium-documents.d.ts.map +1 -1
  353. package/lib/langium/workspace/langium-documents.js +18 -1
  354. package/lib/langium/workspace/langium-documents.js.map +1 -1
  355. package/lib/langium/workspace/persistent-file-system-provider.d.ts +16 -10
  356. package/lib/langium/workspace/persistent-file-system-provider.d.ts.map +1 -1
  357. package/lib/langium/workspace/persistent-file-system-provider.js +25 -13
  358. package/lib/langium/workspace/persistent-file-system-provider.js.map +1 -1
  359. package/lib/langium/workspace/self-save-registry.d.ts +84 -0
  360. package/lib/langium/workspace/self-save-registry.d.ts.map +1 -0
  361. package/lib/{documents → langium/workspace}/self-save-registry.js +33 -22
  362. package/lib/langium/workspace/self-save-registry.js.map +1 -0
  363. package/lib/langium/workspace/virtual-document.d.ts +55 -21
  364. package/lib/langium/workspace/virtual-document.d.ts.map +1 -1
  365. package/lib/langium/workspace/virtual-document.js +87 -24
  366. package/lib/langium/workspace/virtual-document.js.map +1 -1
  367. package/lib/langium/workspace/write-lock-scope.d.ts +22 -10
  368. package/lib/langium/workspace/write-lock-scope.d.ts.map +1 -1
  369. package/lib/langium/workspace/write-lock-scope.js +15 -5
  370. package/lib/langium/workspace/write-lock-scope.js.map +1 -1
  371. package/lib/launcher/integrated-server.d.ts +3 -1
  372. package/lib/launcher/integrated-server.d.ts.map +1 -1
  373. package/lib/locale/server-locale.d.ts +19 -5
  374. package/lib/locale/server-locale.d.ts.map +1 -1
  375. package/lib/locale/server-locale.js +1 -1
  376. package/lib/locale/server-locale.js.map +1 -1
  377. package/lib/lsp/completion/hydranium-completion-provider.d.ts +44 -2
  378. package/lib/lsp/completion/hydranium-completion-provider.d.ts.map +1 -1
  379. package/lib/lsp/completion/hydranium-completion-provider.js +68 -0
  380. package/lib/lsp/completion/hydranium-completion-provider.js.map +1 -1
  381. package/lib/lsp/connection-features.d.ts +23 -0
  382. package/lib/lsp/connection-features.d.ts.map +1 -0
  383. package/lib/lsp/connection-features.js +60 -0
  384. package/lib/lsp/connection-features.js.map +1 -0
  385. package/lib/lsp/diagnostics-connection.d.ts +27 -0
  386. package/lib/lsp/diagnostics-connection.d.ts.map +1 -0
  387. package/lib/lsp/diagnostics-connection.js +53 -0
  388. package/lib/lsp/diagnostics-connection.js.map +1 -0
  389. package/lib/lsp/edit-requests-guard.d.ts +31 -0
  390. package/lib/lsp/edit-requests-guard.d.ts.map +1 -0
  391. package/lib/lsp/edit-requests-guard.js +125 -0
  392. package/lib/lsp/edit-requests-guard.js.map +1 -0
  393. package/lib/lsp/hydranium-document-update-handler.d.ts +126 -82
  394. package/lib/lsp/hydranium-document-update-handler.d.ts.map +1 -1
  395. package/lib/lsp/hydranium-document-update-handler.js +235 -102
  396. package/lib/lsp/hydranium-document-update-handler.js.map +1 -1
  397. package/lib/lsp/index.d.ts +6 -2
  398. package/lib/lsp/index.d.ts.map +1 -1
  399. package/lib/lsp/index.js +6 -2
  400. package/lib/lsp/index.js.map +1 -1
  401. package/lib/lsp/lsp-latency.d.ts +39 -0
  402. package/lib/lsp/lsp-latency.d.ts.map +1 -0
  403. package/lib/lsp/lsp-latency.js +58 -0
  404. package/lib/lsp/lsp-latency.js.map +1 -0
  405. package/lib/lsp/save-text-document.d.ts +31 -0
  406. package/lib/lsp/save-text-document.d.ts.map +1 -0
  407. package/lib/lsp/save-text-document.js +52 -0
  408. package/lib/lsp/save-text-document.js.map +1 -0
  409. package/lib/lsp/semantic-token-provider.d.ts +58 -2
  410. package/lib/lsp/semantic-token-provider.d.ts.map +1 -1
  411. package/lib/lsp/semantic-token-provider.js +98 -9
  412. package/lib/lsp/semantic-token-provider.js.map +1 -1
  413. package/lib/lsp/shared-module.d.ts +4 -8
  414. package/lib/lsp/shared-module.d.ts.map +1 -1
  415. package/lib/lsp/shared-module.js.map +1 -1
  416. package/lib/lsp/start-language-server.d.ts +12 -7
  417. package/lib/lsp/start-language-server.d.ts.map +1 -1
  418. package/lib/lsp/start-language-server.js +21 -7
  419. package/lib/lsp/start-language-server.js.map +1 -1
  420. package/lib/messages/carriers.d.ts +4 -6
  421. package/lib/messages/carriers.d.ts.map +1 -1
  422. package/lib/messages/carriers.js +4 -6
  423. package/lib/messages/carriers.js.map +1 -1
  424. package/lib/messages/index.d.ts +2 -2
  425. package/lib/messages/index.d.ts.map +1 -1
  426. package/lib/messages/index.js +2 -2
  427. package/lib/messages/index.js.map +1 -1
  428. package/lib/messages/renderer.d.ts +32 -7
  429. package/lib/messages/renderer.d.ts.map +1 -1
  430. package/lib/messages/renderer.js +7 -1
  431. package/lib/messages/renderer.js.map +1 -1
  432. package/lib/node/event-loop-monitor.d.ts.map +1 -1
  433. package/lib/node/event-loop-monitor.js +2 -1
  434. package/lib/node/event-loop-monitor.js.map +1 -1
  435. package/lib/node/heap-ceiling.d.ts +61 -0
  436. package/lib/node/heap-ceiling.d.ts.map +1 -0
  437. package/lib/node/heap-ceiling.js +72 -0
  438. package/lib/node/heap-ceiling.js.map +1 -0
  439. package/lib/node/index.d.ts +1 -1
  440. package/lib/node/index.d.ts.map +1 -1
  441. package/lib/node/index.js +5 -1
  442. package/lib/node/index.js.map +1 -1
  443. package/lib/node/latency-from-env.d.ts +1 -1
  444. package/lib/node/latency-from-env.js +1 -1
  445. package/lib/node/lint-grammar.js.map +1 -1
  446. package/lib/node/log-file-sink.d.ts +3 -2
  447. package/lib/node/log-file-sink.d.ts.map +1 -1
  448. package/lib/node/log-file-sink.js +6 -2
  449. package/lib/node/log-file-sink.js.map +1 -1
  450. package/lib/node/log-preamble-node.d.ts +5 -3
  451. package/lib/node/log-preamble-node.d.ts.map +1 -1
  452. package/lib/node/log-preamble-node.js +13 -10
  453. package/lib/node/log-preamble-node.js.map +1 -1
  454. package/lib/node/measure-memory.d.ts.map +1 -1
  455. package/lib/node/measure-memory.js +5 -4
  456. package/lib/node/measure-memory.js.map +1 -1
  457. package/lib/node/memory-monitor.d.ts +2 -2
  458. package/lib/node/memory-monitor.d.ts.map +1 -1
  459. package/lib/node/memory-monitor.js +9 -10
  460. package/lib/node/memory-monitor.js.map +1 -1
  461. package/lib/node/node-file-system-provider.d.ts +67 -9
  462. package/lib/node/node-file-system-provider.d.ts.map +1 -1
  463. package/lib/node/node-file-system-provider.js +198 -53
  464. package/lib/node/node-file-system-provider.js.map +1 -1
  465. package/lib/node/profile-capture.d.ts +12 -4
  466. package/lib/node/profile-capture.d.ts.map +1 -1
  467. package/lib/node/profile-capture.js +8 -6
  468. package/lib/node/profile-capture.js.map +1 -1
  469. package/lib/node/profile-digest.js.map +1 -1
  470. package/lib/node/profiling-run.d.ts +13 -3
  471. package/lib/node/profiling-run.d.ts.map +1 -1
  472. package/lib/node/profiling-run.js +17 -8
  473. package/lib/node/profiling-run.js.map +1 -1
  474. package/lib/node/rename-over-open-readers.d.ts +61 -0
  475. package/lib/node/rename-over-open-readers.d.ts.map +1 -0
  476. package/lib/node/rename-over-open-readers.js +80 -0
  477. package/lib/node/rename-over-open-readers.js.map +1 -0
  478. package/lib/node/server-diagnostics.js +1 -1
  479. package/lib/node/server-diagnostics.js.map +1 -1
  480. package/lib/node/server-state-snapshot.js +4 -4
  481. package/lib/node/server-state-snapshot.js.map +1 -1
  482. package/lib/node/socket-launcher.d.ts +43 -7
  483. package/lib/node/socket-launcher.d.ts.map +1 -1
  484. package/lib/node/socket-launcher.js +42 -7
  485. package/lib/node/socket-launcher.js.map +1 -1
  486. package/lib/node/startup-cpu-profile.d.ts +29 -0
  487. package/lib/node/startup-cpu-profile.d.ts.map +1 -0
  488. package/lib/node/startup-cpu-profile.js +91 -0
  489. package/lib/node/startup-cpu-profile.js.map +1 -0
  490. package/lib/node/stdio-launcher.d.ts +13 -13
  491. package/lib/node/stdio-launcher.d.ts.map +1 -1
  492. package/lib/node/stdio-launcher.js +21 -11
  493. package/lib/node/stdio-launcher.js.map +1 -1
  494. package/lib/node/validate-workspace.d.ts +1 -1
  495. package/lib/node/validate-workspace.d.ts.map +1 -1
  496. package/lib/node/validate-workspace.js +5 -1
  497. package/lib/node/validate-workspace.js.map +1 -1
  498. package/lib/testing/document-uri-policy-conformance.js +1 -1
  499. package/lib/testing/document-uri-policy-conformance.js.map +1 -1
  500. package/lib/testing/fake-description.js.map +1 -1
  501. package/lib/testing/fake-document.d.ts +2 -1
  502. package/lib/testing/fake-document.d.ts.map +1 -1
  503. package/lib/testing/fake-document.js.map +1 -1
  504. package/lib/testing/index.d.ts +1 -1
  505. package/lib/testing/index.d.ts.map +1 -1
  506. package/lib/testing/index.js +2 -1
  507. package/lib/testing/index.js.map +1 -1
  508. package/lib/testing/langium-test-helpers.d.ts.map +1 -1
  509. package/lib/testing/langium-test-helpers.js +1 -0
  510. package/lib/testing/langium-test-helpers.js.map +1 -1
  511. package/lib/testing/make-noop-language-services.js.map +1 -1
  512. package/lib/testing/make-noop-shared-services.d.ts +4 -4
  513. package/lib/testing/make-noop-shared-services.d.ts.map +1 -1
  514. package/lib/testing/make-noop-shared-services.js +4 -4
  515. package/lib/testing/make-noop-shared-services.js.map +1 -1
  516. package/lib/testing/make-test-services.d.ts +51 -20
  517. package/lib/testing/make-test-services.d.ts.map +1 -1
  518. package/lib/testing/make-test-services.js +29 -13
  519. package/lib/testing/make-test-services.js.map +1 -1
  520. package/lib/testing/make-test-tracer.d.ts +12 -0
  521. package/lib/testing/make-test-tracer.d.ts.map +1 -1
  522. package/lib/testing/make-test-tracer.js +13 -0
  523. package/lib/testing/make-test-tracer.js.map +1 -1
  524. package/lib/testing/node/applied-edit-capture.d.ts +29 -0
  525. package/lib/testing/node/applied-edit-capture.d.ts.map +1 -0
  526. package/lib/testing/node/applied-edit-capture.js +117 -0
  527. package/lib/testing/node/applied-edit-capture.js.map +1 -0
  528. package/lib/testing/node/golden-corpus.js.map +1 -1
  529. package/lib/testing/node/index.d.ts +1 -0
  530. package/lib/testing/node/index.d.ts.map +1 -1
  531. package/lib/testing/node/index.js +1 -0
  532. package/lib/testing/node/index.js.map +1 -1
  533. package/lib/testing/node/lsp-harness.d.ts.map +1 -1
  534. package/lib/testing/node/lsp-harness.js +2 -0
  535. package/lib/testing/node/lsp-harness.js.map +1 -1
  536. package/lib/testing/node/lsp-server-connection.d.ts +21 -6
  537. package/lib/testing/node/lsp-server-connection.d.ts.map +1 -1
  538. package/lib/testing/node/lsp-server-connection.js +49 -106
  539. package/lib/testing/node/lsp-server-connection.js.map +1 -1
  540. package/lib/testing/node/scratch-workspace.d.ts.map +1 -1
  541. package/lib/testing/node/scratch-workspace.js +10 -5
  542. package/lib/testing/node/scratch-workspace.js.map +1 -1
  543. package/lib/testing/node/spawned-server.d.ts +30 -1
  544. package/lib/testing/node/spawned-server.d.ts.map +1 -1
  545. package/lib/testing/node/spawned-server.js +39 -2
  546. package/lib/testing/node/spawned-server.js.map +1 -1
  547. package/lib/testing/node/unhandled-rejections.d.ts +20 -0
  548. package/lib/testing/node/unhandled-rejections.d.ts.map +1 -0
  549. package/lib/testing/node/unhandled-rejections.js +32 -0
  550. package/lib/testing/node/unhandled-rejections.js.map +1 -0
  551. package/lib/testing/playwright/browser-capture-bridge.js.map +1 -1
  552. package/lib/testing/playwright/e2e-profiling.js.map +1 -1
  553. package/lib/testing/playwright/flaky-network-proxy.d.ts +76 -0
  554. package/lib/testing/playwright/flaky-network-proxy.d.ts.map +1 -0
  555. package/lib/testing/playwright/flaky-network-proxy.js +164 -0
  556. package/lib/testing/playwright/flaky-network-proxy.js.map +1 -0
  557. package/lib/testing/playwright/index.d.ts +1 -0
  558. package/lib/testing/playwright/index.d.ts.map +1 -1
  559. package/lib/testing/playwright/index.js +1 -0
  560. package/lib/testing/playwright/index.js.map +1 -1
  561. package/lib/testing/playwright/server-log-capture.d.ts +46 -16
  562. package/lib/testing/playwright/server-log-capture.d.ts.map +1 -1
  563. package/lib/testing/playwright/server-log-capture.js +111 -40
  564. package/lib/testing/playwright/server-log-capture.js.map +1 -1
  565. package/lib/testing/playwright/server-log-fixture.d.ts +16 -0
  566. package/lib/testing/playwright/server-log-fixture.d.ts.map +1 -1
  567. package/lib/testing/playwright/server-log-fixture.js +25 -6
  568. package/lib/testing/playwright/server-log-fixture.js.map +1 -1
  569. package/lib/testing/playwright/server-log-region.d.ts +15 -0
  570. package/lib/testing/playwright/server-log-region.d.ts.map +1 -0
  571. package/lib/testing/playwright/server-log-region.js +30 -0
  572. package/lib/testing/playwright/server-log-region.js.map +1 -0
  573. package/lib/testing/playwright/server-log-rename-reporter.d.ts.map +1 -1
  574. package/lib/testing/playwright/server-log-rename-reporter.js +4 -3
  575. package/lib/testing/playwright/server-log-rename-reporter.js.map +1 -1
  576. package/lib/testing/run-update-pipeline.d.ts +8 -5
  577. package/lib/testing/run-update-pipeline.d.ts.map +1 -1
  578. package/lib/testing/run-update-pipeline.js.map +1 -1
  579. package/lib/testing/stub-ast-document-manager.d.ts +11 -52
  580. package/lib/testing/stub-ast-document-manager.d.ts.map +1 -1
  581. package/lib/testing/stub-ast-document-manager.js +31 -62
  582. package/lib/testing/stub-ast-document-manager.js.map +1 -1
  583. package/lib/testing/stub-document-builder.d.ts +33 -11
  584. package/lib/testing/stub-document-builder.d.ts.map +1 -1
  585. package/lib/testing/stub-document-builder.js +103 -5
  586. package/lib/testing/stub-document-builder.js.map +1 -1
  587. package/lib/testing/stub-hydranium-text-documents.d.ts +33 -10
  588. package/lib/testing/stub-hydranium-text-documents.d.ts.map +1 -1
  589. package/lib/testing/stub-hydranium-text-documents.js +132 -16
  590. package/lib/testing/stub-hydranium-text-documents.js.map +1 -1
  591. package/lib/testing/stub-index-manager.js.map +1 -1
  592. package/lib/testing/stub-langium-documents.d.ts +3 -2
  593. package/lib/testing/stub-langium-documents.d.ts.map +1 -1
  594. package/lib/testing/stub-langium-documents.js.map +1 -1
  595. package/lib/testing/stub-model-service.d.ts +9 -8
  596. package/lib/testing/stub-model-service.d.ts.map +1 -1
  597. package/lib/testing/stub-model-service.js +6 -6
  598. package/lib/testing/stub-model-service.js.map +1 -1
  599. package/lib/testing/stub-project-manager.js.map +1 -1
  600. package/lib/testing/stub-self-save-registry.d.ts +1 -1
  601. package/lib/testing/stub-self-save-registry.d.ts.map +1 -1
  602. package/lib/testing/stub-service-registry.d.ts +1 -1
  603. package/lib/testing/stub-service-registry.js.map +1 -1
  604. package/lib/testing/stub-writable-file-system.d.ts +1 -1
  605. package/lib/testing/stub-writable-file-system.d.ts.map +1 -1
  606. package/lib/testing/stub-writable-file-system.js +2 -1
  607. package/lib/testing/stub-writable-file-system.js.map +1 -1
  608. package/lib/util/connection-liveness.d.ts +22 -6
  609. package/lib/util/connection-liveness.d.ts.map +1 -1
  610. package/lib/util/connection-liveness.js +74 -15
  611. package/lib/util/connection-liveness.js.map +1 -1
  612. package/lib/util/environment.d.ts +7 -0
  613. package/lib/util/environment.d.ts.map +1 -1
  614. package/lib/util/environment.js +15 -1
  615. package/lib/util/environment.js.map +1 -1
  616. package/lib/util/registry.d.ts.map +1 -1
  617. package/package.json +41 -60
  618. package/src/browser/host-heads-in-worker.ts +218 -0
  619. package/src/browser/index.ts +17 -0
  620. package/src/browser/indexeddb-file-system-store.ts +192 -0
  621. package/src/browser/start-language-server-in-worker.ts +56 -0
  622. package/src/documents/ast-document-manager.ts +479 -233
  623. package/src/documents/client-ids.ts +5 -22
  624. package/src/documents/client-session-errors.ts +24 -0
  625. package/src/documents/client-session-registry.ts +262 -0
  626. package/src/documents/dirty-state-tracker.ts +167 -0
  627. package/src/documents/document-release-handler.ts +404 -0
  628. package/src/documents/document-release-scheduler.ts +121 -0
  629. package/src/documents/file-system-task-queue.ts +74 -0
  630. package/src/documents/hydranium-text-documents.ts +1029 -595
  631. package/src/documents/index.ts +10 -2
  632. package/src/documents/language-client-shadow.ts +501 -0
  633. package/src/documents/model-ledger.ts +66 -0
  634. package/src/documents/text-ledger.ts +112 -0
  635. package/src/documents/version-sync-service.ts +275 -0
  636. package/src/index.ts +7 -0
  637. package/src/langium/ast-extension/ast-extension-service.ts +77 -41
  638. package/src/langium/ast-extension/ast-node-builder.ts +35 -13
  639. package/src/langium/bootstrap.ts +87 -51
  640. package/src/langium/build-phase-pass/build-phase-pass-service.ts +29 -19
  641. package/src/langium/build-phase-pass/build-phase-pass.ts +37 -8
  642. package/src/langium/composite-ast-reflection.ts +112 -0
  643. package/src/langium/config/configuration-provider.ts +119 -0
  644. package/src/langium/config/index.ts +1 -0
  645. package/src/langium/diagnostics/console-tee.ts +150 -0
  646. package/src/langium/diagnostics/hydranium-langium-profiler.ts +15 -39
  647. package/src/langium/diagnostics/log-preamble.ts +1 -1
  648. package/src/langium/diagnostics/logger.ts +51 -17
  649. package/src/langium/diagnostics/lsp-logger.ts +83 -45
  650. package/src/langium/document-builder/build-pipeline-integration.ts +71 -33
  651. package/src/langium/document-builder/build-session.ts +4 -3
  652. package/src/langium/document-builder/document-builder.ts +615 -79
  653. package/src/langium/integration-services.ts +59 -28
  654. package/src/langium/integrity/integrity-rule.ts +17 -8
  655. package/src/langium/integrity/integrity-service.ts +332 -69
  656. package/src/langium/keys/containment.ts +3 -2
  657. package/src/langium/keys/name-based-key-provider.ts +24 -12
  658. package/src/langium/language-module.ts +52 -9
  659. package/src/langium/model-service/client-session.ts +726 -0
  660. package/src/langium/model-service/index.ts +2 -0
  661. package/src/langium/model-service/model-events.ts +80 -0
  662. package/src/langium/model-service/model-service.ts +929 -493
  663. package/src/langium/module.ts +195 -72
  664. package/src/langium/naming/name-provider.ts +34 -8
  665. package/src/langium/project/abstract-project-manager.ts +13 -5
  666. package/src/langium/project/project-change-event.ts +2 -2
  667. package/src/langium/residency/cst-residency-service.ts +59 -19
  668. package/src/langium/scope/ast-node-description-provider.ts +111 -16
  669. package/src/langium/scope/built-local-symbols.ts +13 -0
  670. package/src/langium/scope/fallback-scope.ts +38 -0
  671. package/src/langium/scope/hydranium-scope-computation.ts +45 -44
  672. package/src/langium/scope/hydranium-scope-provider.ts +245 -41
  673. package/src/langium/scope/index.ts +1 -0
  674. package/src/langium/scope/reference-candidate-provider.ts +6 -5
  675. package/src/langium/scope/scope-extension-service.ts +148 -56
  676. package/src/langium/scope/scoped-ast-node-description.ts +1 -3
  677. package/src/langium/serialization/abstract-serializer.ts +57 -41
  678. package/src/langium/serialization/json-serializer.ts +14 -3
  679. package/src/langium/serialization/serializer.ts +1 -1
  680. package/src/langium/serialization/yaml-serializer.ts +26 -4
  681. package/src/langium/service-registry.ts +41 -2
  682. package/src/langium/shared-services.ts +16 -7
  683. package/src/langium/single-langium-copy.ts +42 -0
  684. package/src/langium/transfer/transfer-encoder.ts +104 -47
  685. package/src/langium/trivia/comment-preserver.ts +1409 -0
  686. package/src/langium/trivia/document-ending-preserver.ts +71 -0
  687. package/src/langium/trivia/index.ts +14 -0
  688. package/src/langium/trivia/trivia-contribution.ts +39 -0
  689. package/src/langium/trivia/trivia-preserver.ts +56 -0
  690. package/src/langium/trivia/trivia-service.ts +99 -0
  691. package/src/langium/update-rewrite/update-rewrite-service.ts +1 -1
  692. package/src/langium/update-rewrite/update-rewrite.ts +1 -1
  693. package/src/langium/validation/document-validator.ts +312 -31
  694. package/src/langium/validation/validation-contribution-collector.ts +10 -1
  695. package/src/langium/workspace/ast-node-locator.ts +33 -0
  696. package/src/langium/workspace/document-uri-policy.ts +32 -18
  697. package/src/langium/workspace/file-not-found.ts +35 -0
  698. package/src/langium/workspace/file-system-provider.ts +258 -16
  699. package/src/langium/workspace/hydranium-langium-document-factory.ts +83 -0
  700. package/src/langium/workspace/hydranium-workspace-lock.ts +86 -2
  701. package/src/langium/workspace/hydranium-workspace-manager.ts +212 -35
  702. package/src/langium/workspace/in-memory-file-system-provider.ts +54 -23
  703. package/src/langium/workspace/index.ts +2 -0
  704. package/src/langium/workspace/initialize-workspace.ts +96 -4
  705. package/src/langium/workspace/langium-documents.ts +19 -1
  706. package/src/langium/workspace/persistent-file-system-provider.ts +27 -15
  707. package/src/langium/workspace/self-save-registry.ts +118 -0
  708. package/src/langium/workspace/virtual-document.ts +106 -25
  709. package/src/langium/workspace/write-lock-scope.ts +27 -12
  710. package/src/launcher/integrated-server.ts +3 -1
  711. package/src/locale/server-locale.ts +20 -5
  712. package/src/lsp/completion/hydranium-completion-provider.ts +82 -2
  713. package/src/lsp/connection-features.ts +67 -0
  714. package/src/lsp/diagnostics-connection.ts +56 -0
  715. package/src/lsp/edit-requests-guard.ts +152 -0
  716. package/src/lsp/hydranium-document-update-handler.ts +285 -111
  717. package/src/lsp/index.ts +6 -2
  718. package/src/lsp/lsp-latency.ts +62 -0
  719. package/src/lsp/save-text-document.ts +63 -0
  720. package/src/lsp/semantic-token-provider.ts +146 -8
  721. package/src/lsp/shared-module.ts +4 -8
  722. package/src/lsp/start-language-server.ts +21 -7
  723. package/src/messages/carriers.ts +4 -6
  724. package/src/messages/index.ts +11 -2
  725. package/src/messages/renderer.ts +34 -6
  726. package/src/node/event-loop-monitor.ts +2 -1
  727. package/src/node/heap-ceiling.ts +108 -0
  728. package/src/node/index.ts +5 -1
  729. package/src/node/latency-from-env.ts +1 -1
  730. package/src/node/log-file-sink.ts +6 -2
  731. package/src/node/log-preamble-node.ts +20 -10
  732. package/src/node/measure-memory.ts +5 -4
  733. package/src/node/memory-monitor.ts +10 -10
  734. package/src/node/node-file-system-provider.ts +214 -57
  735. package/src/node/profile-capture.ts +16 -15
  736. package/src/node/profiling-run.ts +30 -8
  737. package/src/node/rename-over-open-readers.ts +94 -0
  738. package/src/node/server-diagnostics.ts +1 -1
  739. package/src/node/server-state-snapshot.ts +5 -5
  740. package/src/node/socket-launcher.ts +78 -14
  741. package/src/node/startup-cpu-profile.ts +94 -0
  742. package/src/node/stdio-launcher.ts +29 -19
  743. package/src/node/validate-workspace.ts +8 -2
  744. package/src/testing/document-uri-policy-conformance.ts +1 -1
  745. package/src/testing/fake-document.ts +2 -1
  746. package/src/testing/index.ts +2 -1
  747. package/src/testing/langium-test-helpers.ts +1 -0
  748. package/src/testing/make-noop-shared-services.ts +6 -6
  749. package/src/testing/make-test-services.ts +93 -41
  750. package/src/testing/make-test-tracer.ts +26 -0
  751. package/src/testing/node/applied-edit-capture.ts +141 -0
  752. package/src/testing/node/index.ts +1 -0
  753. package/src/testing/node/lsp-harness.ts +2 -0
  754. package/src/testing/node/lsp-server-connection.ts +83 -119
  755. package/src/testing/node/scratch-workspace.ts +10 -5
  756. package/src/testing/node/spawned-server.ts +57 -3
  757. package/src/testing/node/unhandled-rejections.ts +31 -0
  758. package/src/testing/parse-semantic-root.ts +1 -1
  759. package/src/testing/playwright/flaky-network-proxy.ts +240 -0
  760. package/src/testing/playwright/index.ts +1 -0
  761. package/src/testing/playwright/server-log-capture.ts +137 -47
  762. package/src/testing/playwright/server-log-fixture.ts +46 -6
  763. package/src/testing/playwright/server-log-region.ts +32 -0
  764. package/src/testing/playwright/server-log-rename-reporter.ts +4 -3
  765. package/src/testing/run-update-pipeline.ts +8 -5
  766. package/src/testing/stub-ast-document-manager.ts +47 -128
  767. package/src/testing/stub-document-builder.ts +138 -18
  768. package/src/testing/stub-hydranium-text-documents.ts +184 -27
  769. package/src/testing/stub-langium-documents.ts +3 -2
  770. package/src/testing/stub-model-service.ts +11 -10
  771. package/src/testing/stub-self-save-registry.ts +1 -1
  772. package/src/testing/stub-service-registry.ts +1 -1
  773. package/src/testing/stub-writable-file-system.ts +3 -2
  774. package/src/util/connection-liveness.ts +80 -15
  775. package/src/util/environment.ts +24 -2
  776. package/lib/documents/language-client-text-shadow.d.ts +0 -101
  777. package/lib/documents/language-client-text-shadow.d.ts.map +0 -1
  778. package/lib/documents/language-client-text-shadow.js +0 -156
  779. package/lib/documents/language-client-text-shadow.js.map +0 -1
  780. package/lib/documents/self-save-registry.d.ts +0 -55
  781. package/lib/documents/self-save-registry.d.ts.map +0 -1
  782. package/lib/documents/self-save-registry.js.map +0 -1
  783. package/lib/lsp/instrument-connection.d.ts +0 -36
  784. package/lib/lsp/instrument-connection.d.ts.map +0 -1
  785. package/lib/lsp/instrument-connection.js +0 -62
  786. package/lib/lsp/instrument-connection.js.map +0 -1
  787. package/lib/node/process-memory.d.ts +0 -66
  788. package/lib/node/process-memory.d.ts.map +0 -1
  789. package/lib/node/process-memory.js +0 -252
  790. package/lib/node/process-memory.js.map +0 -1
  791. package/src/documents/language-client-text-shadow.ts +0 -175
  792. package/src/documents/self-save-registry.ts +0 -81
  793. package/src/lsp/instrument-connection.ts +0 -66
  794. package/src/node/process-memory.ts +0 -299
@@ -7,11 +7,9 @@
7
7
  * SPDX-License-Identifier: MIT
8
8
  ********************************************************************************/
9
9
  import { Format, Logger } from '@hydranium/protocol';
10
- import { DefaultLangiumProfiler, DocumentState, MultiMap, ProfilingTask } from '@hydranium/langium';
10
+ import { DefaultLangiumProfiler, MultiMap, ProfilingTask } from '@hydranium/langium';
11
11
  /** Langium's full profiling-category set — the default window {@link HydraniumLangiumProfiler.flush} aggregates. */
12
12
  const ALL_CATEGORIES = ['parsing', 'linking', 'validating'];
13
- /** Default priority of the profiler's per-build flush pass (see {@link LangiumProfilerOptions.flushPriority}). */
14
- export const PROFILER_FLUSH_PASS_PRIORITY = 0;
15
13
  /**
16
14
  * Framework adapter over Langium's {@link DefaultLangiumProfiler} that is
17
15
  * **trace-gated** and emits a single **aggregated** per-category breakdown
@@ -25,9 +23,8 @@ export const PROFILER_FLUSH_PASS_PRIORITY = 0;
25
23
  * task identifier), so the per-document records carry no distinguishing
26
24
  * information anyway. We instead accumulate records in {@link records} and
27
25
  * {@link flush} one breakdown per category — self-time and invocation counts
28
- * summed per `$type` across the whole build — on the terminal `Validated`
29
- * build phase (self-registered in the constructor). One report per build, not
30
- * one per file.
26
+ * summed per `$type` across the whole build — when the build ends
27
+ * (subscribed in the constructor). One report per build, not one per file.
31
28
  * - **Transport safety.** The stock per-record dump uses `console.table`, which
32
29
  * is NOT in the set `patchConsole` reroutes; under `vscode-languageserver`'s
33
30
  * `--stdio` transport `process.stdout` *is* the JSON-RPC channel, so the
@@ -45,8 +42,8 @@ export const PROFILER_FLUSH_PASS_PRIORITY = 0;
45
42
  * restart. Langium's own `start`/`stop` category selection still applies *on
46
43
  * top of* the trace gate.
47
44
  *
48
- * Registered eagerly (see `DEFAULT_EAGER_SERVICES`) so its `Validated`-phase
49
- * flush pass is registered before the first build. Gives the per-grammar-rule /
45
+ * Registered eagerly (see `DEFAULT_EAGER_SERVICES`) so its flush is
46
+ * subscribed before the first build. Gives the per-grammar-rule /
50
47
  * per-`$type` parse/link/validate self-time the framework's own
51
48
  * `ServerTracer` / `ProfileSession` passes
52
49
  * cannot produce (those cover the framework's passes *outside* Langium's
@@ -58,16 +55,11 @@ export class HydraniumLangiumProfiler extends DefaultLangiumProfiler {
58
55
  constructor(services, options = {}) {
59
56
  super(options.activeCategories);
60
57
  this.tracer = services.Tracer.for(options.logName ?? 'LangiumProfiler').trace('instantiated');
61
- // Flush once per build on the terminal phase rather than once per document.
62
- // By `Validated`, every parse/link/validate record for the batch is in.
63
- // Registered as a build-phase pass (not a direct onBuildPhase listener) so
64
- // every framework + adopter build-phase reaction shares one dispatcher.
65
- services.workspace.BuildPhasePassService.register({
66
- id: 'framework:langium-profiler:flush',
67
- state: DocumentState.Validated,
68
- priority: options.flushPriority ?? PROFILER_FLUSH_PASS_PRIORITY,
69
- run: () => this.flush()
70
- });
58
+ // Flush once per build when it ends rather than once per document. Not at
59
+ // a `Validated` pass: that phase stays silent for a build that validates
60
+ // nothing, the workspace's initial one among them, and the records would
61
+ // then wait for a build that does.
62
+ services.workspace.DocumentBuilder.onBuildEnded(() => this.flush());
71
63
  }
72
64
  /**
73
65
  * A category profiles only while the global threshold admits `trace` *and*
@@ -108,14 +100,13 @@ export class HydraniumLangiumProfiler extends DefaultLangiumProfiler {
108
100
  /**
109
101
  * Emit one aggregated breakdown per category — self-time and invocation
110
102
  * counts summed per `<languageId>.<$type>` across every record collected
111
- * this build — then clear the window. Self-registered as a `Validated`-phase
112
- * build pass, so it fires once per build, not per document. Pass explicit
113
- * categories to flush a subset; defaults to all.
103
+ * this build — then clear the window. Called when a build ends, so it fires
104
+ * once per build, not per document. Pass explicit categories to flush a
105
+ * subset; defaults to all.
114
106
  *
115
107
  * `flush` is the sole reset point: because it clears each flushed category,
116
- * memory is bounded per completed build. A build cancelled before `Validated`
117
- * leaves its partial records to roll into the next build's flush (slightly
118
- * inflated counts, self-correcting) rather than accumulating without bound.
108
+ * memory is bounded per build. Builds that throw share one flush, once the
109
+ * lock has drained after them.
119
110
  */
120
111
  flush(...categories) {
121
112
  const toFlush = categories.length > 0 ? categories : ALL_CATEGORIES;
@@ -1 +1 @@
1
- {"version":3,"file":"hydranium-langium-profiler.js","sourceRoot":"","sources":["../../../src/langium/diagnostics/hydranium-langium-profiler.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF,OAAO,EAAE,MAAM,EAAE,MAAM,EAAe,MAAM,qBAAqB,CAAC;AAClE,OAAO,EACJ,sBAAsB,EACtB,aAAa,EACb,QAAQ,EAGR,aAAa,EACf,MAAM,oBAAoB,CAAC;AAI5B,oHAAoH;AACpH,MAAM,cAAc,GAAiC,CAAC,SAAS,EAAE,SAAS,EAAE,YAAY,CAAC,CAAC;AAkB1F,kHAAkH;AAClH,MAAM,CAAC,MAAM,4BAA4B,GAAG,CAAC,CAAC;AAE9C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AACH,MAAM,OAAO,wBAAyB,SAAQ,sBAAsB;IACjE,4FAA4F;IACzE,MAAM,CAAS;IAElC,YAAY,QAAqC,EAAE,UAAkC,EAAE;QACpF,KAAK,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;QAChC,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,IAAI,iBAAiB,CAAC,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;QAC9F,4EAA4E;QAC5E,wEAAwE;QACxE,2EAA2E;QAC3E,wEAAwE;QACxE,QAAQ,CAAC,SAAS,CAAC,qBAAqB,CAAC,QAAQ,CAAC;YAC/C,EAAE,EAAE,kCAAkC;YACtC,KAAK,EAAE,aAAa,CAAC,SAAS;YAC9B,QAAQ,EAAE,OAAO,CAAC,aAAa,IAAI,4BAA4B;YAC/D,GAAG,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE;SACzB,CAAC,CAAC;IACN,CAAC;IAED;;;;OAIG;IACM,QAAQ,CAAC,QAA2B;QAC1C,OAAO,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IACrE,CAAC;IAED;;;;;OAKG;IACM,UAAU,CAAC,QAA2B,EAAE,MAAc;QAC5D,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC5B,MAAM,IAAI,KAAK,CAAC,aAAa,QAAQ,kBAAkB,CAAC,CAAC;QAC5D,CAAC;QACD,OAAO,IAAI,aAAa,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;IACtG,CAAC;IAED;;;;;;OAMG;IACO,aAAa,CAAC,MAAuB;QAC5C,MAAM,OAAO,GAAG,IAAI,QAAQ,EAAkB,CAAC;QAC/C,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC;YACvC,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC3C,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;YAC3B,CAAC;QACJ,CAAC;QACD,OAAO,EAAE,GAAG,MAAM,EAAE,OAAO,EAAE,CAAC;IACjC,CAAC;IAED;;;;;;;;;;;OAWG;IACH,KAAK,CAAC,GAAG,UAA+B;QACrC,MAAM,OAAO,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,cAAc,CAAC;QACpE,KAAK,MAAM,QAAQ,IAAI,OAAO,EAAE,CAAC;YAC9B,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,OAAO,EAAE,CAAC;YACpD,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACxB,SAAS;YACZ,CAAC;YACD,MAAM,MAAM,GAAG,IAAI,GAAG,EAA6C,CAAC;YACpE,IAAI,OAAO,GAAG,CAAC,CAAC;YAChB,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;gBAC5B,OAAO,IAAI,MAAM,CAAC,QAAQ,CAAC;gBAC3B,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC;oBACvC,MAAM,IAAI,GAAG,GAAG,MAAM,CAAC,UAAU,IAAI,GAAG,EAAE,CAAC;oBAC3C,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;oBACvC,MAAM,SAAS,GAAG,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;oBAC9D,SAAS,CAAC,KAAK,IAAI,MAAM,CAAC,MAAM,CAAC;oBACjC,SAAS,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,CAAC,GAAG,GAAG,KAAK,EAAE,CAAC,CAAC,CAAC;oBAClE,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;gBAC/B,CAAC;YACJ,CAAC;YACD,MAAM,IAAI,GAAG,CAAC,GAAG,MAAM,CAAC,OAAO,EAAE,CAAC;iBAC9B,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,SAAS,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,GAAG,SAAS,EAAE,CAAC,CAAC;iBACpD,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC;YAEtD,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YACtC,GAAG,CAAC,KAAK,CAAC,GAAG,QAAQ,KAAK,OAAO,CAAC,MAAM,UAAU,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;YACnF,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;gBACtB,MAAM,GAAG,GAAG,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBACvE,GAAG,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,IAAI,KAAK,GAAG,CAAC,KAAK,IAAI,GAAG,KAAK,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YAChF,CAAC;YACD,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QACjC,CAAC;IACJ,CAAC;CACH"}
1
+ {"version":3,"file":"hydranium-langium-profiler.js","sourceRoot":"","sources":["../../../src/langium/diagnostics/hydranium-langium-profiler.ts"],"names":[],"mappings":"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"}
@@ -20,7 +20,7 @@ export function logPreamble(logger, options) {
20
20
  }
21
21
  function logSessionInfo(logger, productName, version, systemInfoLines) {
22
22
  const now = new Date();
23
- const dateStr = now.toISOString().slice(0, 10); // YYYY-MM-DD, unambiguous across midnight
23
+ const dateStr = now.toISOString().slice(0, 10); // YYYY-MM-DD in UTC, which can differ from the reader's local date
24
24
  const lines = [
25
25
  DIVIDER,
26
26
  `${productName} server session`,
@@ -1 +1 @@
1
- {"version":3,"file":"log-preamble.js","sourceRoot":"","sources":["../../../src/langium/diagnostics/log-preamble.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF,OAAO,EAAE,cAAc,EAAe,MAAM,qBAAqB,CAAC;AAElE,MAAM,OAAO,GAAG,qEAAqE,CAAC;AA4BtF;;;;;GAKG;AACH,MAAM,UAAU,WAAW,CAAC,MAAc,EAAE,OAA2B;IACpE,cAAc,CAAC,MAAM,EAAE,OAAO,CAAC,WAAW,EAAE,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,eAAe,IAAI,EAAE,CAAC,CAAC;IAC5F,oBAAoB,CAAC,MAAM,EAAE,OAAO,CAAC,sBAAsB,IAAI,EAAE,EAAE,OAAO,CAAC,eAAe,IAAI,EAAE,CAAC,CAAC;AACrG,CAAC;AAED,SAAS,cAAc,CAAC,MAAc,EAAE,WAAmB,EAAE,OAAe,EAAE,eAAkC;IAC7G,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;IACvB,MAAM,OAAO,GAAG,GAAG,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,0CAA0C;IAC1F,MAAM,KAAK,GAAG;QACX,OAAO;QACP,GAAG,WAAW,iBAAiB;QAC/B,OAAO;QACP,eAAe,OAAO,EAAE;QACxB,eAAe,OAAO,EAAE;QACxB,GAAG,eAAe;QAClB,OAAO;KACT,CAAC;IACF,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACxB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACrB,CAAC;AACJ,CAAC;AAED,SAAS,oBAAoB,CAAC,MAAc,EAAE,sBAA8B,EAAE,eAAkC;IAC7G,MAAM,KAAK,GAAG;QACX,wBAAwB;QACxB,OAAO;QACP,iFAAiF;QACjF,8EAA8E;QAC9E,qEAAqE;QACrE,sCAAsC,cAAc,sDAAsD;QAC1G,yFAAyF;QACzF,4FAA4F;QAC5F,8DAA8D;QAC9D,mFAAmF,sBAAsB,KAAK;QAC9G,oEAAoE;QACpE,GAAG,eAAe;QAClB,OAAO;KACT,CAAC;IACF,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACxB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACrB,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"log-preamble.js","sourceRoot":"","sources":["../../../src/langium/diagnostics/log-preamble.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF,OAAO,EAAE,cAAc,EAAe,MAAM,qBAAqB,CAAC;AAElE,MAAM,OAAO,GAAG,qEAAqE,CAAC;AA4BtF;;;;;GAKG;AACH,MAAM,UAAU,WAAW,CAAC,MAAc,EAAE,OAA2B;IACpE,cAAc,CAAC,MAAM,EAAE,OAAO,CAAC,WAAW,EAAE,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,eAAe,IAAI,EAAE,CAAC,CAAC;IAC5F,oBAAoB,CAAC,MAAM,EAAE,OAAO,CAAC,sBAAsB,IAAI,EAAE,EAAE,OAAO,CAAC,eAAe,IAAI,EAAE,CAAC,CAAC;AACrG,CAAC;AAED,SAAS,cAAc,CAAC,MAAc,EAAE,WAAmB,EAAE,OAAe,EAAE,eAAkC;IAC7G,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;IACvB,MAAM,OAAO,GAAG,GAAG,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,mEAAmE;IACnH,MAAM,KAAK,GAAG;QACX,OAAO;QACP,GAAG,WAAW,iBAAiB;QAC/B,OAAO;QACP,eAAe,OAAO,EAAE;QACxB,eAAe,OAAO,EAAE;QACxB,GAAG,eAAe;QAClB,OAAO;KACT,CAAC;IACF,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACxB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACrB,CAAC;AACJ,CAAC;AAED,SAAS,oBAAoB,CAAC,MAAc,EAAE,sBAA8B,EAAE,eAAkC;IAC7G,MAAM,KAAK,GAAG;QACX,wBAAwB;QACxB,OAAO;QACP,iFAAiF;QACjF,8EAA8E;QAC9E,qEAAqE;QACrE,sCAAsC,cAAc,sDAAsD;QAC1G,yFAAyF;QACzF,4FAA4F;QAC5F,8DAA8D;QAC9D,mFAAmF,sBAAsB,KAAK;QAC9G,oEAAoE;QACpE,GAAG,eAAe;QAClB,OAAO;KACT,CAAC;IACF,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACxB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACrB,CAAC;AACJ,CAAC"}
@@ -6,6 +6,7 @@
6
6
  *
7
7
  * SPDX-License-Identifier: MIT
8
8
  ********************************************************************************/
9
+ import { type LogLevel, type LogThreshold } from '@hydranium/protocol';
9
10
  /** Only append a memory suffix when the heap has moved by at least this much since the last log line. */
10
11
  export declare const MEMORY_DELTA_BYTES: number;
11
12
  /**
@@ -27,14 +28,27 @@ export interface LogFileSink {
27
28
  }
28
29
  /** Install (or clear, with `undefined`) the file-tee sink. Idempotent. */
29
30
  export declare function setLogFileSink(sink: LogFileSink | undefined): void;
31
+ /**
32
+ * Expand `template` the way the file-tee names its file: `{pid}` and each
33
+ * supplied placeholder by its value, each one still missing by
34
+ * `_startup-<pid>`. A file written beside the log, such as the CPU profile,
35
+ * names itself through this so both carry the same workspace token.
36
+ */
37
+ export declare function expandLogFilePlaceholders(template: string): string;
30
38
  /**
31
39
  * Set the file-tee target programmatically. Pass `undefined` to disable. The
32
40
  * path may contain `{placeholder}` tokens (e.g. `{workspace}`); lines buffer
33
- * until every token is supplied via {@link resolveLogFilePlaceholder}.
41
+ * until every token is supplied via {@link resolveLogFilePlaceholder}, except
42
+ * `{pid}`, which is the process id from the start.
34
43
  * Called by the `LspLogger` constructor's
35
44
  * one-time `HYDRANIUM_LOG_FILE` env baseline (and by tests).
45
+ *
46
+ * `level` becomes `Logger.setFileLevel`, cleared with the target and when
47
+ * omitted. Setting the file level apart from the target lets it outlive the
48
+ * file, and every sender keeps building lines above the process threshold
49
+ * that nothing writes.
36
50
  */
37
- export declare function setLogFilePath(path: string | undefined): void;
51
+ export declare function setLogFilePath(path: string | undefined, level?: LogThreshold): void;
38
52
  /**
39
53
  * Supply a value for a `{name}` placeholder in the configured target. Once the
40
54
  * last placeholder is supplied the target resolves and any lines buffered while
@@ -54,12 +68,17 @@ export declare function flushLogFileFallback(): void;
54
68
  export declare function getLogFilePath(): string | undefined;
55
69
  /**
56
70
  * Fan a single already-formatted log line out to the file-tee target, if one is
57
- * configured. Called by `LspLogger`'s emit in
58
- * addition to the LSP/console sink — log sinks fan out, they don't replace.
71
+ * configured and `level` is within the file's threshold
72
+ * (`Logger.getFileLevel() ?? Logger.getLevel()`). Called by `LspLogger`'s emit in
73
+ * addition to the LSP/console sink, and by the console tee before the console
74
+ * method it wraps — log sinks fan out, they don't replace.
59
75
  * While the target is still pending (unresolved `{placeholder}`), the line is
60
- * buffered instead of dropped.
76
+ * buffered instead of dropped. Where no sink is installed, as in a process
77
+ * that never loaded `@hydranium/core/node`, nothing is built or buffered,
78
+ * since nothing will write it. A caller whose line is costly to build passes
79
+ * a function, called only when the file takes the line.
61
80
  */
62
- export declare function teeLogLine(formatted: string): void;
81
+ export declare function teeLogLine(level: LogLevel, formatted: string | (() => string)): void;
63
82
  export { toLogFileWorkspaceToken } from './log-file-token.js';
64
83
  /**
65
84
  * Shared options-base for every framework-bound service that derives a
@@ -1 +1 @@
1
- {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../../src/langium/diagnostics/logger.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAKlF,yGAAyG;AACzG,eAAO,MAAM,kBAAkB,QAAkB,CAAC;AAElD;;;;;;;;;;GAUG;AACH,MAAM,WAAW,WAAW;IACzB,2EAA2E;IAC3E,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACzC,6EAA6E;IAC7E,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;CAChC;AAID,0EAA0E;AAC1E,wBAAgB,cAAc,CAAC,IAAI,EAAE,WAAW,GAAG,SAAS,GAAG,IAAI,CAElE;AA6ED;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CAM7D;AAED;;;;GAIG;AACH,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAG3E;AAED;;;;;;;GAOG;AACH,wBAAgB,oBAAoB,IAAI,IAAI,CAO3C;AAaD,oFAAoF;AACpF,wBAAgB,cAAc,IAAI,MAAM,GAAG,SAAS,CAEnD;AAED;;;;;;GAMG;AACH,wBAAgB,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAYlD;AAKD,OAAO,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AAE9D;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,WAAW,cAAc;IAC5B;;;;;;;;OAQG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED;;;;GAIG;AACH,wBAAgB,YAAY,IAAI,MAAM,CAMrC"}
1
+ {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../../src/langium/diagnostics/logger.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF,OAAO,EAAuB,KAAK,QAAQ,EAAU,KAAK,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAGpG,yGAAyG;AACzG,eAAO,MAAM,kBAAkB,QAAkB,CAAC;AAElD;;;;;;;;;;GAUG;AACH,MAAM,WAAW,WAAW;IACzB,2EAA2E;IAC3E,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACzC,6EAA6E;IAC7E,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;CAChC;AAID,0EAA0E;AAC1E,wBAAgB,cAAc,CAAC,IAAI,EAAE,WAAW,GAAG,SAAS,GAAG,IAAI,CAElE;AA6CD;;;;;GAKG;AACH,wBAAgB,yBAAyB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAElE;AA2CD;;;;;;;;;;;;GAYG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,EAAE,KAAK,CAAC,EAAE,YAAY,GAAG,IAAI,CAOnF;AAED;;;;GAIG;AACH,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAG3E;AAED;;;;;;;GAOG;AACH,wBAAgB,oBAAoB,IAAI,IAAI,CAO3C;AAaD,oFAAoF;AACpF,wBAAgB,cAAc,IAAI,MAAM,GAAG,SAAS,CAEnD;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,GAAG,CAAC,MAAM,MAAM,CAAC,GAAG,IAAI,CAepF;AAKD,OAAO,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AAE9D;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,WAAW,cAAc;IAC5B;;;;;;;;OAQG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED;;;;GAIG;AACH,wBAAgB,YAAY,IAAI,MAAM,CAMrC"}
@@ -6,7 +6,7 @@
6
6
  *
7
7
  * SPDX-License-Identifier: MIT
8
8
  ********************************************************************************/
9
- import { Format } from '@hydranium/protocol';
9
+ import { Format, LEVEL_ORDER, Logger } from '@hydranium/protocol';
10
10
  import { currentMemoryUsage, onProcessEvent, processPid } from '../../util/environment.js';
11
11
  /** Only append a memory suffix when the heap has moved by at least this much since the last log line. */
12
12
  export const MEMORY_DELTA_BYTES = 5 * 1024 * 1024;
@@ -16,7 +16,7 @@ export function setLogFileSink(sink) {
16
16
  fileSink = sink;
17
17
  }
18
18
  /**
19
- * File-tee state for `LspLogger`'s emit. When
19
+ * File-tee state for `LspLogger`'s emit and the console tee. When
20
20
  * non-empty, every formatted log line is appended to the path in addition to
21
21
  * its LSP `window/logMessage` / console destination (see {@link teeLogLine}).
22
22
  * Diagnostic surface only — once the LSP connection binds, server logs route
@@ -44,6 +44,26 @@ const logFilePlaceholders = new Map();
44
44
  const pendingLogLines = [];
45
45
  /** Matches any remaining `{name}` placeholder token. */
46
46
  const PLACEHOLDER_PATTERN = /\{[^}]+\}/;
47
+ /**
48
+ * `template` with `{pid}` replaced by the process id, known from the start, and
49
+ * each placeholder supplied so far by its value.
50
+ */
51
+ function substituteLogFilePlaceholders(template) {
52
+ let path = template.split('{pid}').join(String(processPid() ?? 'unknown'));
53
+ for (const [name, value] of logFilePlaceholders) {
54
+ path = path.split(`{${name}}`).join(value);
55
+ }
56
+ return path;
57
+ }
58
+ /**
59
+ * Expand `template` the way the file-tee names its file: `{pid}` and each
60
+ * supplied placeholder by its value, each one still missing by
61
+ * `_startup-<pid>`. A file written beside the log, such as the CPU profile,
62
+ * names itself through this so both carry the same workspace token.
63
+ */
64
+ export function expandLogFilePlaceholders(template) {
65
+ return substituteLogFilePlaceholders(template).replace(new RegExp(PLACEHOLDER_PATTERN, 'g'), `_startup-${processPid() ?? 'unknown'}`);
66
+ }
47
67
  /**
48
68
  * Recompute {@link resolvedLogFilePath} from the template + known placeholders.
49
69
  * Resolves (and flushes the pending buffer) only once no `{...}` token remains.
@@ -53,10 +73,7 @@ function tryResolveLogFilePath() {
53
73
  resolvedLogFilePath = undefined;
54
74
  return;
55
75
  }
56
- let path = logFileTemplate;
57
- for (const [name, value] of logFilePlaceholders) {
58
- path = path.split(`{${name}}`).join(value);
59
- }
76
+ const path = substituteLogFilePlaceholders(logFileTemplate);
60
77
  if (PLACEHOLDER_PATTERN.test(path)) {
61
78
  resolvedLogFilePath = undefined;
62
79
  // Target is pending — guarantee the buffer is flushed even if the process
@@ -88,12 +105,19 @@ function flushPendingLogLines() {
88
105
  /**
89
106
  * Set the file-tee target programmatically. Pass `undefined` to disable. The
90
107
  * path may contain `{placeholder}` tokens (e.g. `{workspace}`); lines buffer
91
- * until every token is supplied via {@link resolveLogFilePlaceholder}.
108
+ * until every token is supplied via {@link resolveLogFilePlaceholder}, except
109
+ * `{pid}`, which is the process id from the start.
92
110
  * Called by the `LspLogger` constructor's
93
111
  * one-time `HYDRANIUM_LOG_FILE` env baseline (and by tests).
112
+ *
113
+ * `level` becomes `Logger.setFileLevel`, cleared with the target and when
114
+ * omitted. Setting the file level apart from the target lets it outlive the
115
+ * file, and every sender keeps building lines above the process threshold
116
+ * that nothing writes.
94
117
  */
95
- export function setLogFilePath(path) {
118
+ export function setLogFilePath(path, level) {
96
119
  logFileTemplate = path && path.length > 0 ? path : undefined;
120
+ Logger.setFileLevel(logFileTemplate ? level : undefined);
97
121
  logFilePlaceholders.clear();
98
122
  pendingLogLines.length = 0;
99
123
  resolvedLogFilePath = undefined;
@@ -120,7 +144,7 @@ export function flushLogFileFallback() {
120
144
  if (!logFileTemplate || resolvedLogFilePath || pendingLogLines.length === 0) {
121
145
  return;
122
146
  }
123
- resolvedLogFilePath = logFileTemplate.replace(/\{[^}]+\}/g, `_startup-${processPid() ?? 'unknown'}`);
147
+ resolvedLogFilePath = expandLogFilePlaceholders(logFileTemplate);
124
148
  ensureLogDir(resolvedLogFilePath);
125
149
  flushPendingLogLines();
126
150
  }
@@ -140,20 +164,28 @@ export function getLogFilePath() {
140
164
  }
141
165
  /**
142
166
  * Fan a single already-formatted log line out to the file-tee target, if one is
143
- * configured. Called by `LspLogger`'s emit in
144
- * addition to the LSP/console sink — log sinks fan out, they don't replace.
167
+ * configured and `level` is within the file's threshold
168
+ * (`Logger.getFileLevel() ?? Logger.getLevel()`). Called by `LspLogger`'s emit in
169
+ * addition to the LSP/console sink, and by the console tee before the console
170
+ * method it wraps — log sinks fan out, they don't replace.
145
171
  * While the target is still pending (unresolved `{placeholder}`), the line is
146
- * buffered instead of dropped.
172
+ * buffered instead of dropped. Where no sink is installed, as in a process
173
+ * that never loaded `@hydranium/core/node`, nothing is built or buffered,
174
+ * since nothing will write it. A caller whose line is costly to build passes
175
+ * a function, called only when the file takes the line.
147
176
  */
148
- export function teeLogLine(formatted) {
149
- if (!logFileTemplate) {
177
+ export function teeLogLine(level, formatted) {
178
+ if (!logFileTemplate || LEVEL_ORDER[level] > LEVEL_ORDER[Logger.getFileLevel() ?? Logger.getLevel()]) {
179
+ return;
180
+ }
181
+ if (!fileSink) {
150
182
  return;
151
183
  }
152
- const line = `${formatted}\n`;
184
+ const line = `${typeof formatted === 'string' ? formatted : formatted()}\n`;
153
185
  if (resolvedLogFilePath) {
154
186
  // The sink swallows its own errors; recursing into the logger here would
155
- // re-enter emit and loop. The LSP/console sink already delivered the line.
156
- fileSink?.append(resolvedLogFilePath, line);
187
+ // re-enter emit and loop. The caller delivers the line to its other sink.
188
+ fileSink.append(resolvedLogFilePath, line);
157
189
  }
158
190
  else {
159
191
  pendingLogLines.push(line);
@@ -1 +1 @@
1
- {"version":3,"file":"logger.js","sourceRoot":"","sources":["../../../src/langium/diagnostics/logger.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"logger.js","sourceRoot":"","sources":["../../../src/langium/diagnostics/logger.ts"],"names":[],"mappings":"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"}
@@ -51,6 +51,31 @@ export interface LspLoggerOptions {
51
51
  export declare class LspLogger extends AbstractLogger implements Logger {
52
52
  protected readonly services: ServerSharedServices;
53
53
  constructor(services: ServerSharedServices, options?: LspLoggerOptions);
54
+ /**
55
+ * Set the process-wide threshold and announce the transition under whichever
56
+ * of the two thresholds can carry the notice, so a reader sees every change
57
+ * after launch that one of them can carry.
58
+ *
59
+ * `error` and `off` admit no notice of their own — `off` nothing at all, and
60
+ * an error-severity line is read as a fault, which a client that marks its
61
+ * log as having seen an error keeps for the session. Entering either is
62
+ * therefore announced BEFORE the switch, under the outgoing threshold; every
63
+ * other change is announced after it, at the level being entered. Leaving
64
+ * `error` or `off` for one of those two says nothing, both thresholds being
65
+ * unable to carry it.
66
+ *
67
+ * Only on a real transition: the bound setting re-fires for configuration
68
+ * changes that leave the value alone.
69
+ *
70
+ * A `launch` baseline, the environment's, is announced only after the
71
+ * switch, so a run launched at `error` or `off` carries no notice. The
72
+ * threshold it leaves is a default no reader ran at, so a notice under it
73
+ * would be the one line of a run launched at `off`, and an info line in a
74
+ * run launched at `error`, against the launch's request.
75
+ */
76
+ protected applyLevel(next: LogThreshold, source: string, options?: {
77
+ launch?: boolean;
78
+ }): void;
54
79
  /**
55
80
  * Route logger timing and timestamps through the injected framework
56
81
  * {@link Clock} (the dedicated `shared.Clock` slot) so server-side log time
@@ -1 +1 @@
1
- {"version":3,"file":"lsp-logger.d.ts","sourceRoot":"","sources":["../../../src/langium/diagnostics/lsp-logger.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF,OAAO,EACJ,cAAc,EACd,KAAK,KAAK,EAGV,MAAM,EACN,KAAK,QAAQ,EACb,KAAK,YAAY,EAEjB,KAAK,oBAAoB,EAE3B,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,KAAK,GAAG,EAAE,MAAM,oBAAoB,CAAC;AAE9C,OAAO,EAAE,KAAK,oBAAoB,EAAE,MAAM,cAAc,CAAC;AAYzD;;;;;;;GAOG;AACH,MAAM,WAAW,gBAAgB;IAC9B,6EAA6E;IAC7E,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B;;;;;;;;;;;;;;OAcG;IACH,QAAQ,CAAC,YAAY,CAAC,EAAE,oBAAoB,CAAC,YAAY,GAAG,SAAS,CAAC,CAAC;CACzE;AAED;;;;;;;;;;GAUG;AACH,qBAAa,SAAU,SAAQ,cAAe,YAAW,MAAM;IAEzD,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAE,oBAAoB;gBAA9B,QAAQ,EAAE,oBAAoB,EACjD,OAAO,GAAE,gBAAqB;IA2CjC;;;;;;;OAOG;cACgB,KAAK,IAAI,KAAK;IAIjC;;;;;;;;OAQG;IACM,OAAO,CAAC,GAAG,EAAE,GAAG,GAAG,MAAM,GAAG,IAAI;IAIzC,SAAS,CAAC,IAAI,CAAC,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,OAAO,EAAE,GAAG,IAAI;IAuC/F,SAAS,CAAC,MAAM,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;CAM3C"}
1
+ {"version":3,"file":"lsp-logger.d.ts","sourceRoot":"","sources":["../../../src/langium/diagnostics/lsp-logger.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF,OAAO,EACJ,cAAc,EACd,KAAK,KAAK,EAKV,MAAM,EACN,KAAK,QAAQ,EACb,KAAK,YAAY,EAEjB,KAAK,oBAAoB,EAE3B,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,KAAK,GAAG,EAAE,MAAM,oBAAoB,CAAC;AAE9C,OAAO,EAAE,KAAK,oBAAoB,EAAE,MAAM,cAAc,CAAC;AAezD;;;;;;;GAOG;AACH,MAAM,WAAW,gBAAgB;IAC9B,6EAA6E;IAC7E,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B;;;;;;;;;;;;;;OAcG;IACH,QAAQ,CAAC,YAAY,CAAC,EAAE,oBAAoB,CAAC,YAAY,GAAG,SAAS,CAAC,CAAC;CACzE;AAED;;;;;;;;;;GAUG;AACH,qBAAa,SAAU,SAAQ,cAAe,YAAW,MAAM;IAEzD,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAE,oBAAoB;IADpD,YACsB,QAAQ,EAAE,oBAAoB,EACjD,OAAO,GAAE,gBAAqB,EAwDhC;IAED;;;;;;;;;;;;;;;;;;;;;OAqBG;IACH,SAAS,CAAC,UAAU,CAAC,IAAI,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,GAAE;QAAE,MAAM,CAAC,EAAE,OAAO,CAAA;KAAO,GAAG,IAAI,CAqBjG;IAED;;;;;;;OAOG;IACH,UAAmB,KAAK,IAAI,KAAK,CAEhC;IAED;;;;;;;;OAQG;IACM,OAAO,CAAC,GAAG,EAAE,GAAG,GAAG,MAAM,GAAG,IAAI,CAExC;IAED,SAAS,CAAC,IAAI,CAAC,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,OAAO,EAAE,GAAG,IAAI,CAuC9F;IAED,SAAS,CAAC,MAAM,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAGxC;CAGH"}
@@ -6,7 +6,8 @@
6
6
  *
7
7
  * SPDX-License-Identifier: MIT
8
8
  ********************************************************************************/
9
- import { AbstractLogger, DEFAULT_LOG_FILE_ENV, DEFAULT_LOG_LEVEL_ENV, Logger, ObservableValue, parseLogLevel } from '@hydranium/protocol';
9
+ import { AbstractLogger, DEFAULT_LOG_FILE_ENV, DEFAULT_LOG_FILE_LEVEL_ENV, DEFAULT_LOG_LEVEL_ENV, LEVEL_ORDER, Logger, ObservableValue, parseLogLevel } from '@hydranium/protocol';
10
+ import { installConsoleTee } from './console-tee.js';
10
11
  import { setLogFilePath, teeLogLine } from './logger.js';
11
12
  import { processEnv, writeStderr } from '../../util/environment.js';
12
13
  /**
@@ -16,6 +17,8 @@ import { processEnv, writeStderr } from '../../util/environment.js';
16
17
  * live setting.
17
18
  */
18
19
  let envBaselineApplied = false;
20
+ /** Whether the first logger has run the console tee's install, which does nothing in a browser. */
21
+ let consoleTeeInstalled = false;
19
22
  /**
20
23
  * LSP-bound implementation of {@link Logger}. Forwards messages to the
21
24
  * language client via the connection bound in {@link ServerSharedServices}.
@@ -32,9 +35,10 @@ export class LspLogger extends AbstractLogger {
32
35
  constructor(services, options = {}) {
33
36
  super(options.component);
34
37
  this.services = services;
35
- // Apply the framework env baselines (`HYDRANIUM_LOG_LEVEL` and
36
- // `HYDRANIUM_LOG_FILE`) exactly once, on the first logger construction,
37
- // before any setting is read. Unconditional and process-global, so it
38
+ // Apply the framework env baselines (`HYDRANIUM_LOG_LEVEL`,
39
+ // `HYDRANIUM_LOG_FILE` and `HYDRANIUM_LOG_FILE_LEVEL`) exactly once, on
40
+ // the first logger construction, before any setting is read.
41
+ // Unconditional and process-global, so it
38
42
  // needs no root detection and is never re-applied by derived children —
39
43
  // which would otherwise clobber a live setting. These are the single env
40
44
  // vars for level / file-tee (an adopter brands them by renaming the
@@ -45,16 +49,30 @@ export class LspLogger extends AbstractLogger {
45
49
  // a Node concern; skip it cleanly there.
46
50
  const env = processEnv();
47
51
  if (env) {
48
- const envLevel = parseLogLevel(env[DEFAULT_LOG_LEVEL_ENV]);
49
- if (envLevel) {
50
- Logger.setLevel(envLevel);
51
- }
52
+ // The file-tee target FIRST: the other order writes the level
53
+ // announcement before the sink exists, losing the one line that says
54
+ // which threshold the rest of the file was written at.
52
55
  const envLogFile = env[DEFAULT_LOG_FILE_ENV];
53
56
  if (envLogFile) {
54
- setLogFilePath(envLogFile);
57
+ const fileLevel = parseLogLevel(env[DEFAULT_LOG_FILE_LEVEL_ENV]);
58
+ setLogFilePath(envLogFile, fileLevel);
59
+ if (fileLevel) {
60
+ this.logAt(fileLevel, `Log file level ${fileLevel} (${DEFAULT_LOG_FILE_LEVEL_ENV})`);
61
+ }
62
+ }
63
+ const envLevel = parseLogLevel(env[DEFAULT_LOG_LEVEL_ENV]);
64
+ if (envLevel) {
65
+ this.applyLevel(envLevel, DEFAULT_LOG_LEVEL_ENV, { launch: true });
55
66
  }
56
67
  }
57
68
  }
69
+ // Once, so a server without an LSP head writes console lines to the file
70
+ // too; `startLanguageServer` wraps again where a stdio connection created
71
+ // after this logger replaced them.
72
+ if (!consoleTeeInstalled) {
73
+ consoleTeeInstalled = true;
74
+ installConsoleTee();
75
+ }
58
76
  // Apply the configured threshold from the root logger only — `derive`
59
77
  // passes just `component`, so children never carry `logThreshold`. The
60
78
  // setting overrides the env baseline above and re-applies on every change;
@@ -62,15 +80,59 @@ export class LspLogger extends AbstractLogger {
62
80
  if (options.logThreshold !== undefined) {
63
81
  const level = ObservableValue.from(options.logThreshold);
64
82
  if (level.value) {
65
- Logger.setLevel(level.value);
83
+ this.applyLevel(level.value, 'setting');
66
84
  }
67
85
  level.onChange(next => {
68
86
  if (next) {
69
- Logger.setLevel(next);
87
+ this.applyLevel(next, 'setting');
70
88
  }
71
89
  });
72
90
  }
73
91
  }
92
+ /**
93
+ * Set the process-wide threshold and announce the transition under whichever
94
+ * of the two thresholds can carry the notice, so a reader sees every change
95
+ * after launch that one of them can carry.
96
+ *
97
+ * `error` and `off` admit no notice of their own — `off` nothing at all, and
98
+ * an error-severity line is read as a fault, which a client that marks its
99
+ * log as having seen an error keeps for the session. Entering either is
100
+ * therefore announced BEFORE the switch, under the outgoing threshold; every
101
+ * other change is announced after it, at the level being entered. Leaving
102
+ * `error` or `off` for one of those two says nothing, both thresholds being
103
+ * unable to carry it.
104
+ *
105
+ * Only on a real transition: the bound setting re-fires for configuration
106
+ * changes that leave the value alone.
107
+ *
108
+ * A `launch` baseline, the environment's, is announced only after the
109
+ * switch, so a run launched at `error` or `off` carries no notice. The
110
+ * threshold it leaves is a default no reader ran at, so a notice under it
111
+ * would be the one line of a run launched at `off`, and an info line in a
112
+ * run launched at `error`, against the launch's request.
113
+ */
114
+ applyLevel(next, source, options = {}) {
115
+ const previous = Logger.getLevel();
116
+ if (previous === next) {
117
+ return;
118
+ }
119
+ const message = `Log level ${previous} → ${next} (${source})`;
120
+ if (options.launch) {
121
+ Logger.setLevel(next);
122
+ if (next !== 'error') {
123
+ this.logAt(next, message);
124
+ }
125
+ return;
126
+ }
127
+ const announceFirst = next === 'error' || next === 'off';
128
+ if (announceFirst && previous !== 'error') {
129
+ this.logAt(previous, message);
130
+ }
131
+ Logger.setLevel(next);
132
+ if (!announceFirst) {
133
+ this.logAt(next, message);
134
+ }
135
+ }
74
136
  /**
75
137
  * Route logger timing and timestamps through the injected framework
76
138
  * {@link Clock} (the dedicated `shared.Clock` slot) so server-side log time
@@ -95,10 +157,8 @@ export class LspLogger extends AbstractLogger {
95
157
  return this.with(this.services.workspace.WorkspaceManager.wsRelativePath(uri));
96
158
  }
97
159
  emit(level, label, message, args) {
98
- const component = this.component ? ` [${this.component}]` : '';
99
- // Pad to the widest label (5 chars — 'Error'/'Debug'/'Trace') so timestamps line up.
100
- const prefix = `[${label.padEnd(5)} - ${this.timestamp()}]${component}`;
101
- const combined = args.length === 0 ? message : `${message} ${args.map(formatLogArg).join(' ')}`;
160
+ const prefix = this.formatLinePrefix(label);
161
+ const combined = args.length === 0 ? message : `${message} ${args.map(arg => this.formatArg(arg)).join(' ')}`;
102
162
  const formatted = `${prefix} ${combined}`;
103
163
  const connection = this.services.lsp.Connection;
104
164
  // Route through the LSP `window/logMessage` channel so log lines stay
@@ -115,7 +175,11 @@ export class LspLogger extends AbstractLogger {
115
175
  // shutdown diagnostics and the workspace manager's own
116
176
  // unhandled-rejection handler. A log sink that throws turns a diagnostic
117
177
  // into a crash, so a dead channel degrades to stderr instead.
118
- if (!connection || !sendViaConnection(connection, level, formatted)) {
178
+ //
179
+ // `send` admits a line either threshold takes, so the client sink checks
180
+ // its own; the file-tee filters for itself.
181
+ const toClient = LEVEL_ORDER[level] <= LEVEL_ORDER[Logger.getLevel()];
182
+ if (toClient && (!connection || !sendViaConnection(connection, level, formatted))) {
119
183
  if (!writeStderr(`${formatted}\n`)) {
120
184
  // Browser only. In Node every level goes to STDERR, including the
121
185
  // three that `console.*` would put on stdout (`info` / `debug` /
@@ -130,7 +194,7 @@ export class LspLogger extends AbstractLogger {
130
194
  }
131
195
  // File-tee fan-out for headless capture (see `setLogFilePath`). Always runs
132
196
  // in addition to the LSP/console sink — log sinks fan out, they don't replace.
133
- teeLogLine(formatted);
197
+ teeLogLine(level, formatted);
134
198
  }
135
199
  derive(component) {
136
200
  const Subclass = this.constructor;
@@ -191,33 +255,4 @@ const LSP_CONSOLE = {
191
255
  debug: c => c.console.debug.bind(c.console),
192
256
  trace: c => c.console.log.bind(c.console)
193
257
  };
194
- /**
195
- * Render a logger-argument value into the single combined string the LSP
196
- * `window/logMessage` channel takes. Mirrors how raw `console.*` would
197
- * format multiple args, but with explicit handling for Errors (stack) and
198
- * objects (JSON).
199
- */
200
- function formatLogArg(value) {
201
- if (value === undefined) {
202
- return 'undefined';
203
- }
204
- if (value === null) {
205
- return 'null';
206
- }
207
- if (typeof value === 'string') {
208
- return value;
209
- }
210
- if (value instanceof Error) {
211
- return value.stack ?? value.message;
212
- }
213
- if (typeof value === 'object') {
214
- try {
215
- return JSON.stringify(value);
216
- }
217
- catch {
218
- return String(value);
219
- }
220
- }
221
- return String(value);
222
- }
223
258
  //# sourceMappingURL=lsp-logger.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"lsp-logger.js","sourceRoot":"","sources":["../../../src/langium/diagnostics/lsp-logger.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"lsp-logger.js","sourceRoot":"","sources":["../../../src/langium/diagnostics/lsp-logger.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"server-tracer.d.ts","sourceRoot":"","sources":["../../../src/langium/diagnostics/server-tracer.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF,OAAO,EAAE,KAAK,KAAK,EAAE,aAAa,EAAE,KAAK,MAAM,EAAE,KAAK,QAAQ,EAAE,KAAK,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAQ9G;;;;;;;;;GASG;AACH,qBAAa,YAAa,SAAQ,aAAa;gBAChC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK;IAI/B,MAAM,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,QAAQ,GAAE,QAAiB,GAAG,IAAI;cAW/C,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;cAI5B,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,QAAQ,GAAG,WAAW,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,GAAG,MAAM;cAQtG,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,QAAQ,GAAG,WAAW;CAG5E"}
1
+ {"version":3,"file":"server-tracer.d.ts","sourceRoot":"","sources":["../../../src/langium/diagnostics/server-tracer.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF,OAAO,EAAE,KAAK,KAAK,EAAE,aAAa,EAAE,KAAK,MAAM,EAAE,KAAK,QAAQ,EAAE,KAAK,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAQ9G;;;;;;;;;GASG;AACH,qBAAa,YAAa,SAAQ,aAAa;IAC5C,YAAY,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAEvC;IAEQ,MAAM,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,QAAQ,GAAE,QAAiB,GAAG,IAAI,CASjE;IAED,UAAmB,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAE9C;IAED,UAAmB,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,QAAQ,GAAG,WAAW,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,GAAG,MAAM,CAMxH;IAED,UAAmB,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,QAAQ,GAAG,WAAW,CAEzE;CACH"}
@@ -1 +1 @@
1
- {"version":3,"file":"server-tracer.js","sourceRoot":"","sources":["../../../src/langium/diagnostics/server-tracer.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF,OAAO,EAAc,aAAa,EAAgD,MAAM,qBAAqB,CAAC;AAC9G,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAE/D,2FAA2F;AAC3F,IAAI,mBAAmB,GAAG,CAAC,CAAC;AAE5B;;;;;;;;;GASG;AACH,MAAM,OAAO,YAAa,SAAQ,aAAa;IAC5C,YAAY,MAAc,EAAE,KAAY;QACrC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IACxB,CAAC;IAEQ,MAAM,CAAC,KAAc,EAAE,WAAqB,MAAM;QACxD,MAAM,GAAG,GAAG,kBAAkB,EAAE,CAAC;QACjC,IAAI,CAAC,GAAG,EAAE,CAAC;YACR,kFAAkF;YAClF,OAAO;QACV,CAAC;QACD,mBAAmB,GAAG,GAAG,CAAC,QAAQ,CAAC;QACnC,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC;QACjD,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,GAAG,MAAM,GAAG,YAAY,EAAE,EAAE,CAAC,CAAC;IACvD,CAAC;IAEkB,MAAM,CAAC,MAAc;QACrC,OAAO,IAAI,YAAY,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,CAAS,CAAC;IACvD,CAAC;IAEkB,YAAY,CAAC,MAAuC,EAAE,SAAiB,EAAE,OAAoB;QAC7G,IAAI,MAAM,KAAK,WAAW,EAAE,CAAC;YAC1B,OAAO,EAAE,CAAC;QACb,CAAC;QACD,MAAM,KAAK,GAAG,OAAO,CAAC,kBAAkB,KAAK,SAAS,IAAI,SAAS,IAAI,OAAO,CAAC,kBAAkB,CAAC;QAClG,OAAO,iBAAiB,CAAC,KAAK,CAAC,CAAC;IACnC,CAAC;IAEkB,eAAe,CAAC,KAAc;QAC9C,OAAO,oBAAoB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC;IAC/D,CAAC;CACH;AAED,6FAA6F;AAC7F,SAAS,iBAAiB,CAAC,KAAK,GAAG,KAAK;IACrC,MAAM,GAAG,GAAG,kBAAkB,EAAE,CAAC;IACjC,IAAI,CAAC,GAAG,EAAE,CAAC;QACR,OAAO,EAAE,CAAC;IACb,CAAC;IACD,MAAM,IAAI,GAAG,GAAG,CAAC,QAAQ,CAAC;IAC1B,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,mBAAmB,CAAC,GAAG,kBAAkB,EAAE,CAAC;QACvE,OAAO,EAAE,CAAC;IACb,CAAC;IACD,mBAAmB,GAAG,IAAI,CAAC;IAC3B,OAAO,KAAK,YAAY,EAAE,EAAE,CAAC;AAChC,CAAC"}
1
+ {"version":3,"file":"server-tracer.js","sourceRoot":"","sources":["../../../src/langium/diagnostics/server-tracer.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF,OAAO,EAAc,aAAa,EAAgD,MAAM,qBAAqB,CAAC;AAC9G,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAE/D,2FAA2F;AAC3F,IAAI,mBAAmB,GAAG,CAAC,CAAC;AAE5B;;;;;;;;;GASG;AACH,MAAM,OAAO,YAAa,SAAQ,aAAa;IAC5C,YAAY,MAAc,EAAE,KAAY;QACrC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IACxB,CAAC;IAEQ,MAAM,CAAC,KAAc,EAAE,QAAQ,GAAa,MAAM;QACxD,MAAM,GAAG,GAAG,kBAAkB,EAAE,CAAC;QACjC,IAAI,CAAC,GAAG,EAAE,CAAC;YACR,kFAAkF;YAClF,OAAO;QACV,CAAC;QACD,mBAAmB,GAAG,GAAG,CAAC,QAAQ,CAAC;QACnC,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC;QACjD,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,GAAG,MAAM,GAAG,YAAY,EAAE,EAAE,CAAC,CAAC;IACvD,CAAC;IAEkB,MAAM,CAAC,MAAc;QACrC,OAAO,IAAI,YAAY,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,CAAS,CAAC;IACvD,CAAC;IAEkB,YAAY,CAAC,MAAuC,EAAE,SAAiB,EAAE,OAAoB;QAC7G,IAAI,MAAM,KAAK,WAAW,EAAE,CAAC;YAC1B,OAAO,EAAE,CAAC;QACb,CAAC;QACD,MAAM,KAAK,GAAG,OAAO,CAAC,kBAAkB,KAAK,SAAS,IAAI,SAAS,IAAI,OAAO,CAAC,kBAAkB,CAAC;QAClG,OAAO,iBAAiB,CAAC,KAAK,CAAC,CAAC;IACnC,CAAC;IAEkB,eAAe,CAAC,KAAc;QAC9C,OAAO,oBAAoB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC;IAC/D,CAAC;CACH;AAED,6FAA6F;AAC7F,SAAS,iBAAiB,CAAC,KAAK,GAAG,KAAK;IACrC,MAAM,GAAG,GAAG,kBAAkB,EAAE,CAAC;IACjC,IAAI,CAAC,GAAG,EAAE,CAAC;QACR,OAAO,EAAE,CAAC;IACb,CAAC;IACD,MAAM,IAAI,GAAG,GAAG,CAAC,QAAQ,CAAC;IAC1B,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,mBAAmB,CAAC,GAAG,kBAAkB,EAAE,CAAC;QACvE,OAAO,EAAE,CAAC;IACb,CAAC;IACD,mBAAmB,GAAG,IAAI,CAAC;IAC3B,OAAO,KAAK,YAAY,EAAE,EAAE,CAAC;AAChC,CAAC"}