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

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 (782) hide show
  1. package/README.md +78 -82
  2. package/lib/browser/host-heads-in-worker.d.ts +77 -0
  3. package/lib/browser/host-heads-in-worker.d.ts.map +1 -0
  4. package/lib/browser/host-heads-in-worker.js +169 -0
  5. package/lib/browser/host-heads-in-worker.js.map +1 -0
  6. package/lib/browser/index.d.ts +12 -0
  7. package/lib/browser/index.d.ts.map +1 -0
  8. package/lib/browser/index.js +17 -0
  9. package/lib/browser/index.js.map +1 -0
  10. package/lib/browser/indexeddb-file-system-store.d.ts +82 -0
  11. package/lib/browser/indexeddb-file-system-store.d.ts.map +1 -0
  12. package/lib/browser/indexeddb-file-system-store.js +181 -0
  13. package/lib/browser/indexeddb-file-system-store.js.map +1 -0
  14. package/lib/browser/start-language-server-in-worker.d.ts +32 -0
  15. package/lib/browser/start-language-server-in-worker.d.ts.map +1 -0
  16. package/lib/browser/start-language-server-in-worker.js +40 -0
  17. package/lib/browser/start-language-server-in-worker.js.map +1 -0
  18. package/lib/documents/ast-document-manager.d.ts +256 -124
  19. package/lib/documents/ast-document-manager.d.ts.map +1 -1
  20. package/lib/documents/ast-document-manager.js +293 -132
  21. package/lib/documents/ast-document-manager.js.map +1 -1
  22. package/lib/documents/client-ids.d.ts +5 -19
  23. package/lib/documents/client-ids.d.ts.map +1 -1
  24. package/lib/documents/client-ids.js +5 -19
  25. package/lib/documents/client-ids.js.map +1 -1
  26. package/lib/documents/client-session-errors.d.ts +15 -0
  27. package/lib/documents/client-session-errors.d.ts.map +1 -0
  28. package/lib/documents/client-session-errors.js +15 -0
  29. package/lib/documents/client-session-errors.js.map +1 -0
  30. package/lib/documents/client-session-registry.d.ts +146 -0
  31. package/lib/documents/client-session-registry.d.ts.map +1 -0
  32. package/lib/documents/client-session-registry.js +207 -0
  33. package/lib/documents/client-session-registry.js.map +1 -0
  34. package/lib/documents/dirty-state-tracker.d.ts +101 -0
  35. package/lib/documents/dirty-state-tracker.d.ts.map +1 -0
  36. package/lib/documents/dirty-state-tracker.js +85 -0
  37. package/lib/documents/dirty-state-tracker.js.map +1 -0
  38. package/lib/documents/document-release-handler.d.ts +204 -0
  39. package/lib/documents/document-release-handler.d.ts.map +1 -0
  40. package/lib/documents/document-release-handler.js +317 -0
  41. package/lib/documents/document-release-handler.js.map +1 -0
  42. package/lib/documents/document-release-scheduler.d.ts +67 -0
  43. package/lib/documents/document-release-scheduler.d.ts.map +1 -0
  44. package/lib/documents/document-release-scheduler.js +80 -0
  45. package/lib/documents/document-release-scheduler.js.map +1 -0
  46. package/lib/documents/file-system-task-queue.d.ts +52 -0
  47. package/lib/documents/file-system-task-queue.d.ts.map +1 -0
  48. package/lib/documents/file-system-task-queue.js +37 -0
  49. package/lib/documents/file-system-task-queue.js.map +1 -0
  50. package/lib/documents/hydranium-text-documents.d.ts +436 -282
  51. package/lib/documents/hydranium-text-documents.d.ts.map +1 -1
  52. package/lib/documents/hydranium-text-documents.js +886 -483
  53. package/lib/documents/hydranium-text-documents.js.map +1 -1
  54. package/lib/documents/index.d.ts +10 -2
  55. package/lib/documents/index.d.ts.map +1 -1
  56. package/lib/documents/index.js +10 -2
  57. package/lib/documents/index.js.map +1 -1
  58. package/lib/documents/language-client-shadow.d.ts +234 -0
  59. package/lib/documents/language-client-shadow.d.ts.map +1 -0
  60. package/lib/documents/language-client-shadow.js +306 -0
  61. package/lib/documents/language-client-shadow.js.map +1 -0
  62. package/lib/documents/model-ledger.d.ts +47 -0
  63. package/lib/documents/model-ledger.d.ts.map +1 -0
  64. package/lib/documents/model-ledger.js +30 -0
  65. package/lib/documents/model-ledger.js.map +1 -0
  66. package/lib/documents/text-ledger.d.ts +64 -0
  67. package/lib/documents/text-ledger.d.ts.map +1 -0
  68. package/lib/documents/text-ledger.js +63 -0
  69. package/lib/documents/text-ledger.js.map +1 -0
  70. package/lib/documents/version-sync-service.d.ts +138 -0
  71. package/lib/documents/version-sync-service.d.ts.map +1 -0
  72. package/lib/documents/version-sync-service.js +173 -0
  73. package/lib/documents/version-sync-service.js.map +1 -0
  74. package/lib/index.d.ts +4 -0
  75. package/lib/index.d.ts.map +1 -1
  76. package/lib/index.js +7 -0
  77. package/lib/index.js.map +1 -1
  78. package/lib/langium/ast-extension/ast-extension-service.d.ts +42 -31
  79. package/lib/langium/ast-extension/ast-extension-service.d.ts.map +1 -1
  80. package/lib/langium/ast-extension/ast-extension-service.js +45 -19
  81. package/lib/langium/ast-extension/ast-extension-service.js.map +1 -1
  82. package/lib/langium/ast-extension/ast-node-builder.d.ts +12 -7
  83. package/lib/langium/ast-extension/ast-node-builder.d.ts.map +1 -1
  84. package/lib/langium/ast-extension/ast-node-builder.js +25 -9
  85. package/lib/langium/ast-extension/ast-node-builder.js.map +1 -1
  86. package/lib/langium/bootstrap.d.ts +49 -36
  87. package/lib/langium/bootstrap.d.ts.map +1 -1
  88. package/lib/langium/bootstrap.js +83 -44
  89. package/lib/langium/bootstrap.js.map +1 -1
  90. package/lib/langium/build-phase-pass/build-phase-pass-service.d.ts +9 -9
  91. package/lib/langium/build-phase-pass/build-phase-pass-service.d.ts.map +1 -1
  92. package/lib/langium/build-phase-pass/build-phase-pass-service.js +25 -16
  93. package/lib/langium/build-phase-pass/build-phase-pass-service.js.map +1 -1
  94. package/lib/langium/build-phase-pass/build-phase-pass.d.ts +20 -8
  95. package/lib/langium/build-phase-pass/build-phase-pass.d.ts.map +1 -1
  96. package/lib/langium/build-phase-pass/build-phase-pass.js +20 -0
  97. package/lib/langium/build-phase-pass/build-phase-pass.js.map +1 -1
  98. package/lib/langium/composite-ast-reflection.d.ts +46 -0
  99. package/lib/langium/composite-ast-reflection.d.ts.map +1 -0
  100. package/lib/langium/composite-ast-reflection.js +97 -0
  101. package/lib/langium/composite-ast-reflection.js.map +1 -0
  102. package/lib/langium/config/configuration-provider.d.ts +81 -0
  103. package/lib/langium/config/configuration-provider.d.ts.map +1 -0
  104. package/lib/langium/config/configuration-provider.js +112 -0
  105. package/lib/langium/config/configuration-provider.js.map +1 -0
  106. package/lib/langium/config/index.d.ts +1 -0
  107. package/lib/langium/config/index.d.ts.map +1 -1
  108. package/lib/langium/config/index.js +1 -0
  109. package/lib/langium/config/index.js.map +1 -1
  110. package/lib/langium/config/settings.js.map +1 -1
  111. package/lib/langium/diagnostics/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 +142 -0
  114. package/lib/langium/diagnostics/console-tee.js.map +1 -0
  115. package/lib/langium/diagnostics/format-log-arg.d.ts +18 -0
  116. package/lib/langium/diagnostics/format-log-arg.d.ts.map +1 -0
  117. package/lib/langium/diagnostics/format-log-arg.js +36 -0
  118. package/lib/langium/diagnostics/format-log-arg.js.map +1 -0
  119. package/lib/langium/diagnostics/hydranium-langium-profiler.d.ts +9 -20
  120. package/lib/langium/diagnostics/hydranium-langium-profiler.d.ts.map +1 -1
  121. package/lib/langium/diagnostics/hydranium-langium-profiler.js +15 -24
  122. package/lib/langium/diagnostics/hydranium-langium-profiler.js.map +1 -1
  123. package/lib/langium/diagnostics/log-preamble.js +1 -1
  124. package/lib/langium/diagnostics/log-preamble.js.map +1 -1
  125. package/lib/langium/diagnostics/logger.d.ts +25 -6
  126. package/lib/langium/diagnostics/logger.d.ts.map +1 -1
  127. package/lib/langium/diagnostics/logger.js +49 -17
  128. package/lib/langium/diagnostics/logger.js.map +1 -1
  129. package/lib/langium/diagnostics/lsp-logger.d.ts +17 -0
  130. package/lib/langium/diagnostics/lsp-logger.d.ts.map +1 -1
  131. package/lib/langium/diagnostics/lsp-logger.js +68 -45
  132. package/lib/langium/diagnostics/lsp-logger.js.map +1 -1
  133. package/lib/langium/diagnostics/server-tracer.d.ts.map +1 -1
  134. package/lib/langium/diagnostics/server-tracer.js.map +1 -1
  135. package/lib/langium/document-builder/build-pipeline-integration.d.ts +21 -1
  136. package/lib/langium/document-builder/build-pipeline-integration.d.ts.map +1 -1
  137. package/lib/langium/document-builder/build-pipeline-integration.js +28 -30
  138. package/lib/langium/document-builder/build-pipeline-integration.js.map +1 -1
  139. package/lib/langium/document-builder/build-session.d.ts +6 -5
  140. package/lib/langium/document-builder/build-session.d.ts.map +1 -1
  141. package/lib/langium/document-builder/build-session.js +5 -5
  142. package/lib/langium/document-builder/build-session.js.map +1 -1
  143. package/lib/langium/document-builder/document-builder.d.ts +283 -41
  144. package/lib/langium/document-builder/document-builder.d.ts.map +1 -1
  145. package/lib/langium/document-builder/document-builder.js +448 -78
  146. package/lib/langium/document-builder/document-builder.js.map +1 -1
  147. package/lib/langium/documentation/comment-provider.d.ts.map +1 -1
  148. package/lib/langium/documentation/comment-provider.js.map +1 -1
  149. package/lib/langium/integration-services.d.ts +40 -24
  150. package/lib/langium/integration-services.d.ts.map +1 -1
  151. package/lib/langium/integration-services.js +7 -4
  152. package/lib/langium/integration-services.js.map +1 -1
  153. package/lib/langium/integrity/integrity-rule.d.ts +17 -8
  154. package/lib/langium/integrity/integrity-rule.d.ts.map +1 -1
  155. package/lib/langium/integrity/integrity-rule.js.map +1 -1
  156. package/lib/langium/integrity/integrity-service.d.ts +95 -27
  157. package/lib/langium/integrity/integrity-service.d.ts.map +1 -1
  158. package/lib/langium/integrity/integrity-service.js +303 -63
  159. package/lib/langium/integrity/integrity-service.js.map +1 -1
  160. package/lib/langium/keys/containment.d.ts +64 -0
  161. package/lib/langium/keys/containment.d.ts.map +1 -0
  162. package/lib/langium/keys/containment.js +53 -0
  163. package/lib/langium/keys/containment.js.map +1 -0
  164. package/lib/langium/keys/index.d.ts +1 -0
  165. package/lib/langium/keys/index.d.ts.map +1 -1
  166. package/lib/langium/keys/index.js +1 -0
  167. package/lib/langium/keys/index.js.map +1 -1
  168. package/lib/langium/keys/name-based-key-provider.d.ts +4 -0
  169. package/lib/langium/keys/name-based-key-provider.d.ts.map +1 -1
  170. package/lib/langium/keys/name-based-key-provider.js +4 -0
  171. package/lib/langium/keys/name-based-key-provider.js.map +1 -1
  172. package/lib/langium/keys/positional-key-provider.d.ts.map +1 -1
  173. package/lib/langium/keys/positional-key-provider.js.map +1 -1
  174. package/lib/langium/labeling/label-provider.d.ts.map +1 -1
  175. package/lib/langium/labeling/label-provider.js.map +1 -1
  176. package/lib/langium/language-module.d.ts +30 -5
  177. package/lib/langium/language-module.d.ts.map +1 -1
  178. package/lib/langium/language-module.js +18 -4
  179. package/lib/langium/language-module.js.map +1 -1
  180. package/lib/langium/model-service/client-session.d.ts +383 -0
  181. package/lib/langium/model-service/client-session.d.ts.map +1 -0
  182. package/lib/langium/model-service/client-session.js +455 -0
  183. package/lib/langium/model-service/client-session.js.map +1 -0
  184. package/lib/langium/model-service/index.d.ts +2 -0
  185. package/lib/langium/model-service/index.d.ts.map +1 -1
  186. package/lib/langium/model-service/index.js +2 -0
  187. package/lib/langium/model-service/index.js.map +1 -1
  188. package/lib/langium/model-service/model-events.d.ts +66 -0
  189. package/lib/langium/model-service/model-events.d.ts.map +1 -0
  190. package/lib/langium/model-service/model-events.js +10 -0
  191. package/lib/langium/model-service/model-events.js.map +1 -0
  192. package/lib/langium/model-service/model-service.d.ts +455 -290
  193. package/lib/langium/model-service/model-service.d.ts.map +1 -1
  194. package/lib/langium/model-service/model-service.js +571 -458
  195. package/lib/langium/model-service/model-service.js.map +1 -1
  196. package/lib/langium/module.d.ts +141 -40
  197. package/lib/langium/module.d.ts.map +1 -1
  198. package/lib/langium/module.js +52 -40
  199. package/lib/langium/module.js.map +1 -1
  200. package/lib/langium/naming/name-provider.d.ts +32 -7
  201. package/lib/langium/naming/name-provider.d.ts.map +1 -1
  202. package/lib/langium/naming/name-provider.js +10 -4
  203. package/lib/langium/naming/name-provider.js.map +1 -1
  204. package/lib/langium/naming/name-separator-validation.d.ts.map +1 -1
  205. package/lib/langium/project/abstract-project-manager.d.ts.map +1 -1
  206. package/lib/langium/project/abstract-project-manager.js +13 -6
  207. package/lib/langium/project/abstract-project-manager.js.map +1 -1
  208. package/lib/langium/project/project-change-event.d.ts +2 -2
  209. package/lib/langium/project/single-project-manager.d.ts.map +1 -1
  210. package/lib/langium/project/single-project-manager.js.map +1 -1
  211. package/lib/langium/residency/cst-residency-service.d.ts +38 -14
  212. package/lib/langium/residency/cst-residency-service.d.ts.map +1 -1
  213. package/lib/langium/residency/cst-residency-service.js +24 -58
  214. package/lib/langium/residency/cst-residency-service.js.map +1 -1
  215. package/lib/langium/scope/ast-node-description-provider.d.ts.map +1 -1
  216. package/lib/langium/scope/ast-node-description-provider.js.map +1 -1
  217. package/lib/langium/scope/fallback-scope.d.ts +27 -0
  218. package/lib/langium/scope/fallback-scope.d.ts.map +1 -0
  219. package/lib/langium/scope/fallback-scope.js +35 -0
  220. package/lib/langium/scope/fallback-scope.js.map +1 -0
  221. package/lib/langium/scope/hydranium-scope-computation.d.ts +21 -18
  222. package/lib/langium/scope/hydranium-scope-computation.d.ts.map +1 -1
  223. package/lib/langium/scope/hydranium-scope-computation.js +38 -39
  224. package/lib/langium/scope/hydranium-scope-computation.js.map +1 -1
  225. package/lib/langium/scope/hydranium-scope-provider.d.ts +29 -11
  226. package/lib/langium/scope/hydranium-scope-provider.d.ts.map +1 -1
  227. package/lib/langium/scope/hydranium-scope-provider.js +37 -15
  228. package/lib/langium/scope/hydranium-scope-provider.js.map +1 -1
  229. package/lib/langium/scope/index.d.ts +1 -0
  230. package/lib/langium/scope/index.d.ts.map +1 -1
  231. package/lib/langium/scope/index.js +1 -0
  232. package/lib/langium/scope/index.js.map +1 -1
  233. package/lib/langium/scope/reference-builder.d.ts.map +1 -1
  234. package/lib/langium/scope/reference-builder.js.map +1 -1
  235. package/lib/langium/scope/reference-candidate-provider.d.ts +6 -5
  236. package/lib/langium/scope/reference-candidate-provider.d.ts.map +1 -1
  237. package/lib/langium/scope/reference-candidate-provider.js +3 -2
  238. package/lib/langium/scope/reference-candidate-provider.js.map +1 -1
  239. package/lib/langium/scope/scope-extension-service.d.ts +41 -37
  240. package/lib/langium/scope/scope-extension-service.d.ts.map +1 -1
  241. package/lib/langium/scope/scope-extension-service.js +57 -29
  242. package/lib/langium/scope/scope-extension-service.js.map +1 -1
  243. package/lib/langium/scope/scoped-ast-node-description.d.ts +1 -3
  244. package/lib/langium/scope/scoped-ast-node-description.d.ts.map +1 -1
  245. package/lib/langium/scope/scoped-ast-node-description.js +1 -3
  246. package/lib/langium/scope/scoped-ast-node-description.js.map +1 -1
  247. package/lib/langium/serialization/abstract-serializer.d.ts +38 -27
  248. package/lib/langium/serialization/abstract-serializer.d.ts.map +1 -1
  249. package/lib/langium/serialization/abstract-serializer.js +54 -30
  250. package/lib/langium/serialization/abstract-serializer.js.map +1 -1
  251. package/lib/langium/serialization/json-serializer.d.ts +8 -1
  252. package/lib/langium/serialization/json-serializer.d.ts.map +1 -1
  253. package/lib/langium/serialization/json-serializer.js +13 -3
  254. package/lib/langium/serialization/json-serializer.js.map +1 -1
  255. package/lib/langium/serialization/serializer.d.ts +1 -1
  256. package/lib/langium/serialization/yaml-serializer.d.ts +4 -0
  257. package/lib/langium/serialization/yaml-serializer.d.ts.map +1 -1
  258. package/lib/langium/serialization/yaml-serializer.js +4 -0
  259. package/lib/langium/serialization/yaml-serializer.js.map +1 -1
  260. package/lib/langium/service-registry.d.ts +29 -1
  261. package/lib/langium/service-registry.d.ts.map +1 -1
  262. package/lib/langium/service-registry.js +37 -0
  263. package/lib/langium/service-registry.js.map +1 -1
  264. package/lib/langium/shared-services.d.ts +13 -7
  265. package/lib/langium/shared-services.d.ts.map +1 -1
  266. package/lib/langium/shared-services.js.map +1 -1
  267. package/lib/langium/single-langium-copy.d.ts +22 -0
  268. package/lib/langium/single-langium-copy.d.ts.map +1 -0
  269. package/lib/langium/single-langium-copy.js +36 -0
  270. package/lib/langium/single-langium-copy.js.map +1 -0
  271. package/lib/langium/transfer/transfer-encoder.d.ts +86 -37
  272. package/lib/langium/transfer/transfer-encoder.d.ts.map +1 -1
  273. package/lib/langium/transfer/transfer-encoder.js +36 -25
  274. package/lib/langium/transfer/transfer-encoder.js.map +1 -1
  275. package/lib/langium/trivia/comment-preserver.d.ts +423 -0
  276. package/lib/langium/trivia/comment-preserver.d.ts.map +1 -0
  277. package/lib/langium/trivia/comment-preserver.js +906 -0
  278. package/lib/langium/trivia/comment-preserver.js.map +1 -0
  279. package/lib/langium/trivia/document-ending-preserver.d.ts +51 -0
  280. package/lib/langium/trivia/document-ending-preserver.d.ts.map +1 -0
  281. package/lib/langium/trivia/document-ending-preserver.js +62 -0
  282. package/lib/langium/trivia/document-ending-preserver.js.map +1 -0
  283. package/lib/langium/trivia/index.d.ts +14 -0
  284. package/lib/langium/trivia/index.d.ts.map +1 -0
  285. package/lib/langium/trivia/index.js +14 -0
  286. package/lib/langium/trivia/index.js.map +1 -0
  287. package/lib/langium/trivia/trivia-contribution.d.ts +37 -0
  288. package/lib/langium/trivia/trivia-contribution.d.ts.map +1 -0
  289. package/lib/langium/trivia/trivia-contribution.js +10 -0
  290. package/lib/langium/trivia/trivia-contribution.js.map +1 -0
  291. package/lib/langium/trivia/trivia-preserver.d.ts +52 -0
  292. package/lib/langium/trivia/trivia-preserver.d.ts.map +1 -0
  293. package/lib/langium/trivia/trivia-preserver.js +10 -0
  294. package/lib/langium/trivia/trivia-preserver.js.map +1 -0
  295. package/lib/langium/trivia/trivia-service.d.ts +70 -0
  296. package/lib/langium/trivia/trivia-service.d.ts.map +1 -0
  297. package/lib/langium/trivia/trivia-service.js +56 -0
  298. package/lib/langium/trivia/trivia-service.js.map +1 -0
  299. package/lib/langium/update-rewrite/normalize-empty-strings.d.ts.map +1 -1
  300. package/lib/langium/update-rewrite/update-rewrite-service.d.ts +1 -1
  301. package/lib/langium/update-rewrite/update-rewrite-service.d.ts.map +1 -1
  302. package/lib/langium/update-rewrite/update-rewrite-service.js.map +1 -1
  303. package/lib/langium/update-rewrite/update-rewrite.d.ts +1 -1
  304. package/lib/langium/validation/document-validator.d.ts +216 -10
  305. package/lib/langium/validation/document-validator.d.ts.map +1 -1
  306. package/lib/langium/validation/document-validator.js +353 -8
  307. package/lib/langium/validation/document-validator.js.map +1 -1
  308. package/lib/langium/validation/validation-contribution-collector.d.ts +9 -1
  309. package/lib/langium/validation/validation-contribution-collector.d.ts.map +1 -1
  310. package/lib/langium/validation/validation-contribution-collector.js +1 -1
  311. package/lib/langium/validation/validation-contribution-collector.js.map +1 -1
  312. package/lib/langium/workspace/document-uri-policy.d.ts +24 -15
  313. package/lib/langium/workspace/document-uri-policy.d.ts.map +1 -1
  314. package/lib/langium/workspace/document-uri-policy.js +22 -13
  315. package/lib/langium/workspace/document-uri-policy.js.map +1 -1
  316. package/lib/langium/workspace/file-not-found.d.ts +23 -0
  317. package/lib/langium/workspace/file-not-found.d.ts.map +1 -0
  318. package/lib/langium/workspace/file-not-found.js +31 -0
  319. package/lib/langium/workspace/file-not-found.js.map +1 -0
  320. package/lib/langium/workspace/file-system-provider.d.ts +167 -8
  321. package/lib/langium/workspace/file-system-provider.d.ts.map +1 -1
  322. package/lib/langium/workspace/file-system-provider.js +115 -13
  323. package/lib/langium/workspace/file-system-provider.js.map +1 -1
  324. package/lib/langium/workspace/hydranium-langium-document-factory.d.ts +31 -1
  325. package/lib/langium/workspace/hydranium-langium-document-factory.d.ts.map +1 -1
  326. package/lib/langium/workspace/hydranium-langium-document-factory.js +54 -0
  327. package/lib/langium/workspace/hydranium-langium-document-factory.js.map +1 -1
  328. package/lib/langium/workspace/hydranium-workspace-lock.d.ts +43 -1
  329. package/lib/langium/workspace/hydranium-workspace-lock.d.ts.map +1 -1
  330. package/lib/langium/workspace/hydranium-workspace-lock.js +58 -1
  331. package/lib/langium/workspace/hydranium-workspace-lock.js.map +1 -1
  332. package/lib/langium/workspace/hydranium-workspace-manager.d.ts +113 -21
  333. package/lib/langium/workspace/hydranium-workspace-manager.d.ts.map +1 -1
  334. package/lib/langium/workspace/hydranium-workspace-manager.js +197 -31
  335. package/lib/langium/workspace/hydranium-workspace-manager.js.map +1 -1
  336. package/lib/langium/workspace/in-memory-file-system-provider.d.ts +26 -9
  337. package/lib/langium/workspace/in-memory-file-system-provider.d.ts.map +1 -1
  338. package/lib/langium/workspace/in-memory-file-system-provider.js +45 -22
  339. package/lib/langium/workspace/in-memory-file-system-provider.js.map +1 -1
  340. package/lib/langium/workspace/index-manager.d.ts.map +1 -1
  341. package/lib/langium/workspace/index-manager.js.map +1 -1
  342. package/lib/langium/workspace/index.d.ts +1 -0
  343. package/lib/langium/workspace/index.d.ts.map +1 -1
  344. package/lib/langium/workspace/index.js +1 -0
  345. package/lib/langium/workspace/index.js.map +1 -1
  346. package/lib/langium/workspace/initialize-workspace.d.ts +40 -3
  347. package/lib/langium/workspace/initialize-workspace.d.ts.map +1 -1
  348. package/lib/langium/workspace/initialize-workspace.js +68 -3
  349. package/lib/langium/workspace/initialize-workspace.js.map +1 -1
  350. package/lib/langium/workspace/langium-documents.d.ts +7 -0
  351. package/lib/langium/workspace/langium-documents.d.ts.map +1 -1
  352. package/lib/langium/workspace/langium-documents.js +18 -1
  353. package/lib/langium/workspace/langium-documents.js.map +1 -1
  354. package/lib/langium/workspace/persistent-file-system-provider.d.ts +16 -10
  355. package/lib/langium/workspace/persistent-file-system-provider.d.ts.map +1 -1
  356. package/lib/langium/workspace/persistent-file-system-provider.js +25 -13
  357. package/lib/langium/workspace/persistent-file-system-provider.js.map +1 -1
  358. package/lib/langium/workspace/self-save-registry.d.ts +84 -0
  359. package/lib/langium/workspace/self-save-registry.d.ts.map +1 -0
  360. package/lib/{documents → langium/workspace}/self-save-registry.js +33 -22
  361. package/lib/langium/workspace/self-save-registry.js.map +1 -0
  362. package/lib/langium/workspace/virtual-document.d.ts +55 -21
  363. package/lib/langium/workspace/virtual-document.d.ts.map +1 -1
  364. package/lib/langium/workspace/virtual-document.js +87 -24
  365. package/lib/langium/workspace/virtual-document.js.map +1 -1
  366. package/lib/langium/workspace/write-lock-scope.d.ts +22 -10
  367. package/lib/langium/workspace/write-lock-scope.d.ts.map +1 -1
  368. package/lib/langium/workspace/write-lock-scope.js +15 -5
  369. package/lib/langium/workspace/write-lock-scope.js.map +1 -1
  370. package/lib/launcher/integrated-server.d.ts +3 -1
  371. package/lib/launcher/integrated-server.d.ts.map +1 -1
  372. package/lib/locale/server-locale.d.ts +29 -5
  373. package/lib/locale/server-locale.d.ts.map +1 -1
  374. package/lib/locale/server-locale.js +12 -2
  375. package/lib/locale/server-locale.js.map +1 -1
  376. package/lib/lsp/completion/hydranium-completion-provider.d.ts +44 -2
  377. package/lib/lsp/completion/hydranium-completion-provider.d.ts.map +1 -1
  378. package/lib/lsp/completion/hydranium-completion-provider.js +68 -0
  379. package/lib/lsp/completion/hydranium-completion-provider.js.map +1 -1
  380. package/lib/lsp/connection-features.d.ts +23 -0
  381. package/lib/lsp/connection-features.d.ts.map +1 -0
  382. package/lib/lsp/connection-features.js +60 -0
  383. package/lib/lsp/connection-features.js.map +1 -0
  384. package/lib/lsp/diagnostics-connection.d.ts +27 -0
  385. package/lib/lsp/diagnostics-connection.d.ts.map +1 -0
  386. package/lib/lsp/diagnostics-connection.js +53 -0
  387. package/lib/lsp/diagnostics-connection.js.map +1 -0
  388. package/lib/lsp/hydranium-document-update-handler.d.ts +126 -82
  389. package/lib/lsp/hydranium-document-update-handler.d.ts.map +1 -1
  390. package/lib/lsp/hydranium-document-update-handler.js +235 -102
  391. package/lib/lsp/hydranium-document-update-handler.js.map +1 -1
  392. package/lib/lsp/index.d.ts +4 -1
  393. package/lib/lsp/index.d.ts.map +1 -1
  394. package/lib/lsp/index.js +4 -1
  395. package/lib/lsp/index.js.map +1 -1
  396. package/lib/lsp/lsp-latency.d.ts +39 -0
  397. package/lib/lsp/lsp-latency.d.ts.map +1 -0
  398. package/lib/lsp/lsp-latency.js +58 -0
  399. package/lib/lsp/lsp-latency.js.map +1 -0
  400. package/lib/lsp/save-text-document.d.ts +31 -0
  401. package/lib/lsp/save-text-document.d.ts.map +1 -0
  402. package/lib/lsp/save-text-document.js +52 -0
  403. package/lib/lsp/save-text-document.js.map +1 -0
  404. package/lib/lsp/semantic-token-provider.d.ts +34 -1
  405. package/lib/lsp/semantic-token-provider.d.ts.map +1 -1
  406. package/lib/lsp/semantic-token-provider.js +55 -8
  407. package/lib/lsp/semantic-token-provider.js.map +1 -1
  408. package/lib/lsp/shared-module.d.ts +4 -8
  409. package/lib/lsp/shared-module.d.ts.map +1 -1
  410. package/lib/lsp/shared-module.js.map +1 -1
  411. package/lib/lsp/start-language-server.d.ts +11 -7
  412. package/lib/lsp/start-language-server.d.ts.map +1 -1
  413. package/lib/lsp/start-language-server.js +18 -7
  414. package/lib/lsp/start-language-server.js.map +1 -1
  415. package/lib/messages/carriers.d.ts +11 -6
  416. package/lib/messages/carriers.d.ts.map +1 -1
  417. package/lib/messages/carriers.js +14 -6
  418. package/lib/messages/carriers.js.map +1 -1
  419. package/lib/messages/index.d.ts +2 -2
  420. package/lib/messages/index.d.ts.map +1 -1
  421. package/lib/messages/index.js +2 -2
  422. package/lib/messages/index.js.map +1 -1
  423. package/lib/messages/renderer.d.ts +32 -7
  424. package/lib/messages/renderer.d.ts.map +1 -1
  425. package/lib/messages/renderer.js +7 -1
  426. package/lib/messages/renderer.js.map +1 -1
  427. package/lib/node/event-loop-monitor.d.ts.map +1 -1
  428. package/lib/node/event-loop-monitor.js +2 -1
  429. package/lib/node/event-loop-monitor.js.map +1 -1
  430. package/lib/node/heap-ceiling.d.ts +61 -0
  431. package/lib/node/heap-ceiling.d.ts.map +1 -0
  432. package/lib/node/heap-ceiling.js +72 -0
  433. package/lib/node/heap-ceiling.js.map +1 -0
  434. package/lib/node/index.d.ts +1 -1
  435. package/lib/node/index.d.ts.map +1 -1
  436. package/lib/node/index.js +5 -1
  437. package/lib/node/index.js.map +1 -1
  438. package/lib/node/latency-from-env.d.ts +1 -1
  439. package/lib/node/latency-from-env.js +1 -1
  440. package/lib/node/lint-grammar.js.map +1 -1
  441. package/lib/node/log-file-sink.d.ts +3 -2
  442. package/lib/node/log-file-sink.d.ts.map +1 -1
  443. package/lib/node/log-file-sink.js +6 -2
  444. package/lib/node/log-file-sink.js.map +1 -1
  445. package/lib/node/log-preamble-node.d.ts +5 -3
  446. package/lib/node/log-preamble-node.d.ts.map +1 -1
  447. package/lib/node/log-preamble-node.js +13 -10
  448. package/lib/node/log-preamble-node.js.map +1 -1
  449. package/lib/node/measure-memory.d.ts.map +1 -1
  450. package/lib/node/measure-memory.js +5 -4
  451. package/lib/node/measure-memory.js.map +1 -1
  452. package/lib/node/memory-monitor.d.ts +2 -2
  453. package/lib/node/memory-monitor.d.ts.map +1 -1
  454. package/lib/node/memory-monitor.js +9 -10
  455. package/lib/node/memory-monitor.js.map +1 -1
  456. package/lib/node/node-file-system-provider.d.ts +67 -9
  457. package/lib/node/node-file-system-provider.d.ts.map +1 -1
  458. package/lib/node/node-file-system-provider.js +198 -53
  459. package/lib/node/node-file-system-provider.js.map +1 -1
  460. package/lib/node/profile-capture.d.ts +12 -4
  461. package/lib/node/profile-capture.d.ts.map +1 -1
  462. package/lib/node/profile-capture.js +8 -6
  463. package/lib/node/profile-capture.js.map +1 -1
  464. package/lib/node/profile-digest.js.map +1 -1
  465. package/lib/node/profiling-run.d.ts +13 -3
  466. package/lib/node/profiling-run.d.ts.map +1 -1
  467. package/lib/node/profiling-run.js +17 -8
  468. package/lib/node/profiling-run.js.map +1 -1
  469. package/lib/node/rename-over-open-readers.d.ts +61 -0
  470. package/lib/node/rename-over-open-readers.d.ts.map +1 -0
  471. package/lib/node/rename-over-open-readers.js +80 -0
  472. package/lib/node/rename-over-open-readers.js.map +1 -0
  473. package/lib/node/server-diagnostics.js +1 -1
  474. package/lib/node/server-diagnostics.js.map +1 -1
  475. package/lib/node/server-state-snapshot.js +4 -4
  476. package/lib/node/server-state-snapshot.js.map +1 -1
  477. package/lib/node/socket-launcher.d.ts +43 -7
  478. package/lib/node/socket-launcher.d.ts.map +1 -1
  479. package/lib/node/socket-launcher.js +42 -7
  480. package/lib/node/socket-launcher.js.map +1 -1
  481. package/lib/node/startup-cpu-profile.d.ts +29 -0
  482. package/lib/node/startup-cpu-profile.d.ts.map +1 -0
  483. package/lib/node/startup-cpu-profile.js +91 -0
  484. package/lib/node/startup-cpu-profile.js.map +1 -0
  485. package/lib/node/stdio-launcher.d.ts +13 -13
  486. package/lib/node/stdio-launcher.d.ts.map +1 -1
  487. package/lib/node/stdio-launcher.js +21 -11
  488. package/lib/node/stdio-launcher.js.map +1 -1
  489. package/lib/testing/document-uri-policy-conformance.js +1 -1
  490. package/lib/testing/document-uri-policy-conformance.js.map +1 -1
  491. package/lib/testing/fake-description.js.map +1 -1
  492. package/lib/testing/fake-document.d.ts +2 -1
  493. package/lib/testing/fake-document.d.ts.map +1 -1
  494. package/lib/testing/fake-document.js.map +1 -1
  495. package/lib/testing/index.d.ts +1 -1
  496. package/lib/testing/index.d.ts.map +1 -1
  497. package/lib/testing/index.js +2 -1
  498. package/lib/testing/index.js.map +1 -1
  499. package/lib/testing/langium-test-helpers.d.ts.map +1 -1
  500. package/lib/testing/langium-test-helpers.js +1 -0
  501. package/lib/testing/langium-test-helpers.js.map +1 -1
  502. package/lib/testing/make-noop-language-services.js.map +1 -1
  503. package/lib/testing/make-noop-shared-services.d.ts +4 -4
  504. package/lib/testing/make-noop-shared-services.d.ts.map +1 -1
  505. package/lib/testing/make-noop-shared-services.js +4 -4
  506. package/lib/testing/make-noop-shared-services.js.map +1 -1
  507. package/lib/testing/make-test-services.d.ts +51 -20
  508. package/lib/testing/make-test-services.d.ts.map +1 -1
  509. package/lib/testing/make-test-services.js +29 -13
  510. package/lib/testing/make-test-services.js.map +1 -1
  511. package/lib/testing/make-test-tracer.d.ts +12 -0
  512. package/lib/testing/make-test-tracer.d.ts.map +1 -1
  513. package/lib/testing/make-test-tracer.js +13 -0
  514. package/lib/testing/make-test-tracer.js.map +1 -1
  515. package/lib/testing/node/applied-edit-capture.d.ts +29 -0
  516. package/lib/testing/node/applied-edit-capture.d.ts.map +1 -0
  517. package/lib/testing/node/applied-edit-capture.js +117 -0
  518. package/lib/testing/node/applied-edit-capture.js.map +1 -0
  519. package/lib/testing/node/golden-corpus.js.map +1 -1
  520. package/lib/testing/node/index.d.ts +1 -0
  521. package/lib/testing/node/index.d.ts.map +1 -1
  522. package/lib/testing/node/index.js +1 -0
  523. package/lib/testing/node/index.js.map +1 -1
  524. package/lib/testing/node/lsp-harness.d.ts.map +1 -1
  525. package/lib/testing/node/lsp-harness.js +2 -0
  526. package/lib/testing/node/lsp-harness.js.map +1 -1
  527. package/lib/testing/node/lsp-server-connection.d.ts +21 -6
  528. package/lib/testing/node/lsp-server-connection.d.ts.map +1 -1
  529. package/lib/testing/node/lsp-server-connection.js +49 -106
  530. package/lib/testing/node/lsp-server-connection.js.map +1 -1
  531. package/lib/testing/node/scratch-workspace.d.ts.map +1 -1
  532. package/lib/testing/node/scratch-workspace.js +10 -5
  533. package/lib/testing/node/scratch-workspace.js.map +1 -1
  534. package/lib/testing/node/spawned-server.d.ts +30 -1
  535. package/lib/testing/node/spawned-server.d.ts.map +1 -1
  536. package/lib/testing/node/spawned-server.js +39 -2
  537. package/lib/testing/node/spawned-server.js.map +1 -1
  538. package/lib/testing/node/unhandled-rejections.d.ts +20 -0
  539. package/lib/testing/node/unhandled-rejections.d.ts.map +1 -0
  540. package/lib/testing/node/unhandled-rejections.js +32 -0
  541. package/lib/testing/node/unhandled-rejections.js.map +1 -0
  542. package/lib/testing/playwright/browser-capture-bridge.js.map +1 -1
  543. package/lib/testing/playwright/e2e-profiling.js.map +1 -1
  544. package/lib/testing/playwright/flaky-network-proxy.d.ts +76 -0
  545. package/lib/testing/playwright/flaky-network-proxy.d.ts.map +1 -0
  546. package/lib/testing/playwright/flaky-network-proxy.js +164 -0
  547. package/lib/testing/playwright/flaky-network-proxy.js.map +1 -0
  548. package/lib/testing/playwright/index.d.ts +1 -0
  549. package/lib/testing/playwright/index.d.ts.map +1 -1
  550. package/lib/testing/playwright/index.js +1 -0
  551. package/lib/testing/playwright/index.js.map +1 -1
  552. package/lib/testing/playwright/server-log-capture.d.ts +46 -16
  553. package/lib/testing/playwright/server-log-capture.d.ts.map +1 -1
  554. package/lib/testing/playwright/server-log-capture.js +111 -40
  555. package/lib/testing/playwright/server-log-capture.js.map +1 -1
  556. package/lib/testing/playwright/server-log-fixture.d.ts +16 -0
  557. package/lib/testing/playwright/server-log-fixture.d.ts.map +1 -1
  558. package/lib/testing/playwright/server-log-fixture.js +25 -6
  559. package/lib/testing/playwright/server-log-fixture.js.map +1 -1
  560. package/lib/testing/playwright/server-log-region.d.ts +15 -0
  561. package/lib/testing/playwright/server-log-region.d.ts.map +1 -0
  562. package/lib/testing/playwright/server-log-region.js +30 -0
  563. package/lib/testing/playwright/server-log-region.js.map +1 -0
  564. package/lib/testing/playwright/server-log-rename-reporter.d.ts.map +1 -1
  565. package/lib/testing/playwright/server-log-rename-reporter.js +4 -3
  566. package/lib/testing/playwright/server-log-rename-reporter.js.map +1 -1
  567. package/lib/testing/run-update-pipeline.d.ts +8 -5
  568. package/lib/testing/run-update-pipeline.d.ts.map +1 -1
  569. package/lib/testing/run-update-pipeline.js.map +1 -1
  570. package/lib/testing/stub-ast-document-manager.d.ts +11 -52
  571. package/lib/testing/stub-ast-document-manager.d.ts.map +1 -1
  572. package/lib/testing/stub-ast-document-manager.js +31 -62
  573. package/lib/testing/stub-ast-document-manager.js.map +1 -1
  574. package/lib/testing/stub-document-builder.d.ts +33 -11
  575. package/lib/testing/stub-document-builder.d.ts.map +1 -1
  576. package/lib/testing/stub-document-builder.js +103 -5
  577. package/lib/testing/stub-document-builder.js.map +1 -1
  578. package/lib/testing/stub-hydranium-text-documents.d.ts +33 -10
  579. package/lib/testing/stub-hydranium-text-documents.d.ts.map +1 -1
  580. package/lib/testing/stub-hydranium-text-documents.js +132 -16
  581. package/lib/testing/stub-hydranium-text-documents.js.map +1 -1
  582. package/lib/testing/stub-index-manager.js.map +1 -1
  583. package/lib/testing/stub-langium-documents.d.ts +3 -2
  584. package/lib/testing/stub-langium-documents.d.ts.map +1 -1
  585. package/lib/testing/stub-langium-documents.js.map +1 -1
  586. package/lib/testing/stub-model-service.d.ts +9 -8
  587. package/lib/testing/stub-model-service.d.ts.map +1 -1
  588. package/lib/testing/stub-model-service.js +6 -6
  589. package/lib/testing/stub-model-service.js.map +1 -1
  590. package/lib/testing/stub-project-manager.js.map +1 -1
  591. package/lib/testing/stub-self-save-registry.d.ts +1 -1
  592. package/lib/testing/stub-self-save-registry.d.ts.map +1 -1
  593. package/lib/testing/stub-service-registry.d.ts +1 -1
  594. package/lib/testing/stub-service-registry.js.map +1 -1
  595. package/lib/testing/stub-writable-file-system.d.ts +1 -1
  596. package/lib/testing/stub-writable-file-system.d.ts.map +1 -1
  597. package/lib/testing/stub-writable-file-system.js +2 -1
  598. package/lib/testing/stub-writable-file-system.js.map +1 -1
  599. package/lib/util/connection-liveness.d.ts +22 -6
  600. package/lib/util/connection-liveness.d.ts.map +1 -1
  601. package/lib/util/connection-liveness.js +74 -15
  602. package/lib/util/connection-liveness.js.map +1 -1
  603. package/lib/util/environment.d.ts +7 -0
  604. package/lib/util/environment.d.ts.map +1 -1
  605. package/lib/util/environment.js +15 -1
  606. package/lib/util/environment.js.map +1 -1
  607. package/lib/util/registry.d.ts.map +1 -1
  608. package/package.json +39 -58
  609. package/src/browser/host-heads-in-worker.ts +218 -0
  610. package/src/browser/index.ts +17 -0
  611. package/src/browser/indexeddb-file-system-store.ts +192 -0
  612. package/src/browser/start-language-server-in-worker.ts +56 -0
  613. package/src/documents/ast-document-manager.ts +467 -233
  614. package/src/documents/client-ids.ts +5 -22
  615. package/src/documents/client-session-errors.ts +24 -0
  616. package/src/documents/client-session-registry.ts +262 -0
  617. package/src/documents/dirty-state-tracker.ts +167 -0
  618. package/src/documents/document-release-handler.ts +404 -0
  619. package/src/documents/document-release-scheduler.ts +121 -0
  620. package/src/documents/file-system-task-queue.ts +74 -0
  621. package/src/documents/hydranium-text-documents.ts +1011 -595
  622. package/src/documents/index.ts +10 -2
  623. package/src/documents/language-client-shadow.ts +501 -0
  624. package/src/documents/model-ledger.ts +66 -0
  625. package/src/documents/text-ledger.ts +112 -0
  626. package/src/documents/version-sync-service.ts +275 -0
  627. package/src/index.ts +7 -0
  628. package/src/langium/ast-extension/ast-extension-service.ts +77 -41
  629. package/src/langium/ast-extension/ast-node-builder.ts +35 -13
  630. package/src/langium/bootstrap.ts +87 -51
  631. package/src/langium/build-phase-pass/build-phase-pass-service.ts +29 -19
  632. package/src/langium/build-phase-pass/build-phase-pass.ts +37 -8
  633. package/src/langium/composite-ast-reflection.ts +112 -0
  634. package/src/langium/config/configuration-provider.ts +119 -0
  635. package/src/langium/config/index.ts +1 -0
  636. package/src/langium/diagnostics/console-tee.ts +151 -0
  637. package/src/langium/diagnostics/format-log-arg.ts +36 -0
  638. package/src/langium/diagnostics/hydranium-langium-profiler.ts +15 -39
  639. package/src/langium/diagnostics/log-preamble.ts +1 -1
  640. package/src/langium/diagnostics/logger.ts +51 -17
  641. package/src/langium/diagnostics/lsp-logger.ts +70 -44
  642. package/src/langium/document-builder/build-pipeline-integration.ts +46 -32
  643. package/src/langium/document-builder/build-session.ts +4 -3
  644. package/src/langium/document-builder/document-builder.ts +553 -78
  645. package/src/langium/integration-services.ts +59 -28
  646. package/src/langium/integrity/integrity-rule.ts +17 -8
  647. package/src/langium/integrity/integrity-service.ts +332 -69
  648. package/src/langium/keys/containment.ts +87 -0
  649. package/src/langium/keys/index.ts +1 -0
  650. package/src/langium/keys/name-based-key-provider.ts +4 -0
  651. package/src/langium/language-module.ts +49 -8
  652. package/src/langium/model-service/client-session.ts +718 -0
  653. package/src/langium/model-service/index.ts +2 -0
  654. package/src/langium/model-service/model-events.ts +80 -0
  655. package/src/langium/model-service/model-service.ts +878 -486
  656. package/src/langium/module.ts +195 -72
  657. package/src/langium/naming/name-provider.ts +34 -8
  658. package/src/langium/project/abstract-project-manager.ts +13 -5
  659. package/src/langium/project/project-change-event.ts +2 -2
  660. package/src/langium/residency/cst-residency-service.ts +54 -19
  661. package/src/langium/scope/fallback-scope.ts +38 -0
  662. package/src/langium/scope/hydranium-scope-computation.ts +45 -44
  663. package/src/langium/scope/hydranium-scope-provider.ts +49 -16
  664. package/src/langium/scope/index.ts +1 -0
  665. package/src/langium/scope/reference-candidate-provider.ts +6 -5
  666. package/src/langium/scope/scope-extension-service.ts +74 -59
  667. package/src/langium/scope/scoped-ast-node-description.ts +1 -3
  668. package/src/langium/serialization/abstract-serializer.ts +57 -41
  669. package/src/langium/serialization/json-serializer.ts +14 -3
  670. package/src/langium/serialization/serializer.ts +1 -1
  671. package/src/langium/serialization/yaml-serializer.ts +4 -0
  672. package/src/langium/service-registry.ts +41 -2
  673. package/src/langium/shared-services.ts +16 -7
  674. package/src/langium/single-langium-copy.ts +42 -0
  675. package/src/langium/transfer/transfer-encoder.ts +104 -47
  676. package/src/langium/trivia/comment-preserver.ts +1100 -0
  677. package/src/langium/trivia/document-ending-preserver.ts +71 -0
  678. package/src/langium/trivia/index.ts +14 -0
  679. package/src/langium/trivia/trivia-contribution.ts +39 -0
  680. package/src/langium/trivia/trivia-preserver.ts +56 -0
  681. package/src/langium/trivia/trivia-service.ts +99 -0
  682. package/src/langium/update-rewrite/update-rewrite-service.ts +1 -1
  683. package/src/langium/update-rewrite/update-rewrite.ts +1 -1
  684. package/src/langium/validation/document-validator.ts +411 -12
  685. package/src/langium/validation/validation-contribution-collector.ts +10 -1
  686. package/src/langium/workspace/document-uri-policy.ts +32 -18
  687. package/src/langium/workspace/file-not-found.ts +35 -0
  688. package/src/langium/workspace/file-system-provider.ts +258 -16
  689. package/src/langium/workspace/hydranium-langium-document-factory.ts +83 -0
  690. package/src/langium/workspace/hydranium-workspace-lock.ts +86 -2
  691. package/src/langium/workspace/hydranium-workspace-manager.ts +224 -35
  692. package/src/langium/workspace/in-memory-file-system-provider.ts +54 -23
  693. package/src/langium/workspace/index.ts +1 -0
  694. package/src/langium/workspace/initialize-workspace.ts +96 -4
  695. package/src/langium/workspace/langium-documents.ts +19 -1
  696. package/src/langium/workspace/persistent-file-system-provider.ts +27 -15
  697. package/src/langium/workspace/self-save-registry.ts +118 -0
  698. package/src/langium/workspace/virtual-document.ts +106 -25
  699. package/src/langium/workspace/write-lock-scope.ts +27 -12
  700. package/src/launcher/integrated-server.ts +3 -1
  701. package/src/locale/server-locale.ts +31 -6
  702. package/src/lsp/completion/hydranium-completion-provider.ts +82 -2
  703. package/src/lsp/connection-features.ts +67 -0
  704. package/src/lsp/diagnostics-connection.ts +56 -0
  705. package/src/lsp/hydranium-document-update-handler.ts +285 -111
  706. package/src/lsp/index.ts +4 -1
  707. package/src/lsp/lsp-latency.ts +62 -0
  708. package/src/lsp/save-text-document.ts +63 -0
  709. package/src/lsp/semantic-token-provider.ts +74 -7
  710. package/src/lsp/shared-module.ts +4 -8
  711. package/src/lsp/start-language-server.ts +18 -7
  712. package/src/messages/carriers.ts +15 -7
  713. package/src/messages/index.ts +11 -2
  714. package/src/messages/renderer.ts +34 -6
  715. package/src/node/event-loop-monitor.ts +2 -1
  716. package/src/node/heap-ceiling.ts +108 -0
  717. package/src/node/index.ts +5 -1
  718. package/src/node/latency-from-env.ts +1 -1
  719. package/src/node/log-file-sink.ts +6 -2
  720. package/src/node/log-preamble-node.ts +20 -10
  721. package/src/node/measure-memory.ts +5 -4
  722. package/src/node/memory-monitor.ts +10 -10
  723. package/src/node/node-file-system-provider.ts +214 -57
  724. package/src/node/profile-capture.ts +16 -15
  725. package/src/node/profiling-run.ts +30 -8
  726. package/src/node/rename-over-open-readers.ts +94 -0
  727. package/src/node/server-diagnostics.ts +1 -1
  728. package/src/node/server-state-snapshot.ts +5 -5
  729. package/src/node/socket-launcher.ts +78 -14
  730. package/src/node/startup-cpu-profile.ts +94 -0
  731. package/src/node/stdio-launcher.ts +29 -19
  732. package/src/testing/document-uri-policy-conformance.ts +1 -1
  733. package/src/testing/fake-document.ts +2 -1
  734. package/src/testing/index.ts +2 -1
  735. package/src/testing/langium-test-helpers.ts +1 -0
  736. package/src/testing/make-noop-shared-services.ts +6 -6
  737. package/src/testing/make-test-services.ts +93 -41
  738. package/src/testing/make-test-tracer.ts +26 -0
  739. package/src/testing/node/applied-edit-capture.ts +141 -0
  740. package/src/testing/node/index.ts +1 -0
  741. package/src/testing/node/lsp-harness.ts +2 -0
  742. package/src/testing/node/lsp-server-connection.ts +83 -119
  743. package/src/testing/node/scratch-workspace.ts +10 -5
  744. package/src/testing/node/spawned-server.ts +57 -3
  745. package/src/testing/node/unhandled-rejections.ts +31 -0
  746. package/src/testing/parse-semantic-root.ts +1 -1
  747. package/src/testing/playwright/flaky-network-proxy.ts +240 -0
  748. package/src/testing/playwright/index.ts +1 -0
  749. package/src/testing/playwright/server-log-capture.ts +137 -47
  750. package/src/testing/playwright/server-log-fixture.ts +46 -6
  751. package/src/testing/playwright/server-log-region.ts +32 -0
  752. package/src/testing/playwright/server-log-rename-reporter.ts +4 -3
  753. package/src/testing/run-update-pipeline.ts +8 -5
  754. package/src/testing/stub-ast-document-manager.ts +47 -128
  755. package/src/testing/stub-document-builder.ts +133 -18
  756. package/src/testing/stub-hydranium-text-documents.ts +184 -27
  757. package/src/testing/stub-langium-documents.ts +3 -2
  758. package/src/testing/stub-model-service.ts +11 -10
  759. package/src/testing/stub-self-save-registry.ts +1 -1
  760. package/src/testing/stub-service-registry.ts +1 -1
  761. package/src/testing/stub-writable-file-system.ts +3 -2
  762. package/src/util/connection-liveness.ts +80 -15
  763. package/src/util/environment.ts +24 -2
  764. package/lib/documents/language-client-text-shadow.d.ts +0 -101
  765. package/lib/documents/language-client-text-shadow.d.ts.map +0 -1
  766. package/lib/documents/language-client-text-shadow.js +0 -156
  767. package/lib/documents/language-client-text-shadow.js.map +0 -1
  768. package/lib/documents/self-save-registry.d.ts +0 -55
  769. package/lib/documents/self-save-registry.d.ts.map +0 -1
  770. package/lib/documents/self-save-registry.js.map +0 -1
  771. package/lib/lsp/instrument-connection.d.ts +0 -36
  772. package/lib/lsp/instrument-connection.d.ts.map +0 -1
  773. package/lib/lsp/instrument-connection.js +0 -62
  774. package/lib/lsp/instrument-connection.js.map +0 -1
  775. package/lib/node/process-memory.d.ts +0 -66
  776. package/lib/node/process-memory.d.ts.map +0 -1
  777. package/lib/node/process-memory.js +0 -252
  778. package/lib/node/process-memory.js.map +0 -1
  779. package/src/documents/language-client-text-shadow.ts +0 -175
  780. package/src/documents/self-save-registry.ts +0 -81
  781. package/src/lsp/instrument-connection.ts +0 -66
  782. package/src/node/process-memory.ts +0 -299
@@ -6,8 +6,25 @@
6
6
  *
7
7
  * SPDX-License-Identifier: MIT
8
8
  ********************************************************************************/
9
+ import { type Clock, type Tracer } from '@hydranium/protocol';
9
10
  import { DefaultWorkspaceLock, type MaybePromise } from '@hydranium/langium';
10
- import { type CancellationToken } from 'vscode-languageserver-protocol';
11
+ import { type CancellationToken, type Disposable } from 'vscode-languageserver-protocol';
12
+ import { type LogNameOptions } from '../diagnostics/logger.js';
13
+ import { type ServerSharedServicesMinimal } from '../shared-services.js';
14
+ /** Constructor options for {@link HydraniumWorkspaceLock}. */
15
+ export interface HydraniumWorkspaceLockOptions extends LogNameOptions {
16
+ /**
17
+ * How long a write may keep running after a later write cancelled it before
18
+ * the lock logs a warning. Every write and read waits behind it meanwhile, so
19
+ * one that never ends stops the server. Defaults to 10 s; `0` turns the
20
+ * check off.
21
+ */
22
+ readonly stalledWriteWarnMs?: number;
23
+ }
24
+ /** The write action a {@link HydraniumWorkspaceLock} is running, with the timer its cancellation started. */
25
+ export interface RunningWrite {
26
+ stallTimer?: Disposable;
27
+ }
11
28
  /**
12
29
  * Langium's {@link DefaultWorkspaceLock} with the write action marked as a
13
30
  * write-lock scope, so anything it reaches can be asked whether the lock is
@@ -26,6 +43,31 @@ import { type CancellationToken } from 'vscode-languageserver-protocol';
26
43
  * would turn ordinary read-then-write sequences into false positives.
27
44
  */
28
45
  export declare class HydraniumWorkspaceLock extends DefaultWorkspaceLock {
46
+ /** Backs {@link writeCancellations}. */
47
+ protected cancelledWriteCount: number;
48
+ protected readonly clock: Clock;
49
+ protected readonly tracer: Tracer;
50
+ protected readonly stalledWriteWarnMs: number;
51
+ protected runningWrite?: RunningWrite;
52
+ constructor(services: Pick<ServerSharedServicesMinimal, 'Clock' | 'Tracer'>, options?: HydraniumWorkspaceLockOptions);
53
+ /**
54
+ * How many calls have cancelled the lock's latest write: every `write`,
55
+ * which cancels the write before it, and every `cancelWrite`. A caller that
56
+ * reads this right after queuing a write, and reads the same number later,
57
+ * holds a write nothing has cancelled, whether it is still queued or
58
+ * already running. Its token answers that only once the write runs, since
59
+ * a queued write has not been handed it yet.
60
+ */
61
+ get writeCancellations(): number;
29
62
  write(action: (token: CancellationToken) => MaybePromise<void>): Promise<void>;
63
+ /** Run `action` as {@link runningWrite}, so a cancellation while it runs can time it. */
64
+ protected runWrite(action: (token: CancellationToken) => MaybePromise<void>, token: CancellationToken): Promise<void>;
65
+ /**
66
+ * Counted here rather than in {@link write}, because Langium's `write` cancels
67
+ * through this method too. A write running when this is called has been
68
+ * cancelled, by this call or an earlier one, so its timer starts here.
69
+ */
70
+ cancelWrite(): void;
71
+ protected reportStalledWrite(): void;
30
72
  }
31
73
  //# sourceMappingURL=hydranium-workspace-lock.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"hydranium-workspace-lock.d.ts","sourceRoot":"","sources":["../../../src/langium/workspace/hydranium-workspace-lock.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF,OAAO,EAAE,oBAAoB,EAAE,KAAK,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAC7E,OAAO,EAAE,KAAK,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AAGxE;;;;;;;;;;;;;;;;GAgBG;AACH,qBAAa,sBAAuB,SAAQ,oBAAoB;IACpD,KAAK,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,iBAAiB,KAAK,YAAY,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;CAGzF"}
1
+ {"version":3,"file":"hydranium-workspace-lock.d.ts","sourceRoot":"","sources":["../../../src/langium/workspace/hydranium-workspace-lock.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF,OAAO,EAAE,KAAK,KAAK,EAAE,KAAK,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC9D,OAAO,EAAE,oBAAoB,EAAE,KAAK,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAC7E,OAAO,EAAE,KAAK,iBAAiB,EAAE,KAAK,UAAU,EAAE,MAAM,gCAAgC,CAAC;AACzF,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,KAAK,2BAA2B,EAAE,MAAM,uBAAuB,CAAC;AAGzE,8DAA8D;AAC9D,MAAM,WAAW,6BAA8B,SAAQ,cAAc;IAClE;;;;;OAKG;IACH,QAAQ,CAAC,kBAAkB,CAAC,EAAE,MAAM,CAAC;CACvC;AAID,6GAA6G;AAC7G,MAAM,WAAW,YAAY;IAC1B,UAAU,CAAC,EAAE,UAAU,CAAC;CAC1B;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,qBAAa,sBAAuB,SAAQ,oBAAoB;IAC7D,wCAAwC;IACxC,SAAS,CAAC,mBAAmB,SAAK;IAClC,SAAS,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC;IAChC,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IAClC,SAAS,CAAC,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAC;IAC9C,SAAS,CAAC,YAAY,CAAC,EAAE,YAAY,CAAC;IAEtC,YAAY,QAAQ,EAAE,IAAI,CAAC,2BAA2B,EAAE,OAAO,GAAG,QAAQ,CAAC,EAAE,OAAO,GAAE,6BAAkC,EAKvH;IAED;;;;;;;OAOG;IACH,IAAI,kBAAkB,IAAI,MAAM,CAE/B;IAEQ,KAAK,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,iBAAiB,KAAK,YAAY,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAEtF;IAED,yFAAyF;IACzF,UAAgB,QAAQ,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,iBAAiB,KAAK,YAAY,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CAW1H;IAED;;;;OAIG;IACM,WAAW,IAAI,IAAI,CAO3B;IAED,SAAS,CAAC,kBAAkB,IAAI,IAAI,CAOnC;CACH"}
@@ -8,6 +8,7 @@
8
8
  ********************************************************************************/
9
9
  import { DefaultWorkspaceLock } from '@hydranium/langium';
10
10
  import { runInWriteLockScope } from './write-lock-scope.js';
11
+ const DEFAULT_STALLED_WRITE_WARN_MS = 10_000;
11
12
  /**
12
13
  * Langium's {@link DefaultWorkspaceLock} with the write action marked as a
13
14
  * write-lock scope, so anything it reaches can be asked whether the lock is
@@ -26,8 +27,64 @@ import { runInWriteLockScope } from './write-lock-scope.js';
26
27
  * would turn ordinary read-then-write sequences into false positives.
27
28
  */
28
29
  export class HydraniumWorkspaceLock extends DefaultWorkspaceLock {
30
+ /** Backs {@link writeCancellations}. */
31
+ cancelledWriteCount = 0;
32
+ clock;
33
+ tracer;
34
+ stalledWriteWarnMs;
35
+ runningWrite;
36
+ constructor(services, options = {}) {
37
+ super();
38
+ this.clock = services.Clock;
39
+ this.tracer = services.Tracer.for(options.logName ?? 'WorkspaceLock');
40
+ this.stalledWriteWarnMs = options.stalledWriteWarnMs ?? DEFAULT_STALLED_WRITE_WARN_MS;
41
+ }
42
+ /**
43
+ * How many calls have cancelled the lock's latest write: every `write`,
44
+ * which cancels the write before it, and every `cancelWrite`. A caller that
45
+ * reads this right after queuing a write, and reads the same number later,
46
+ * holds a write nothing has cancelled, whether it is still queued or
47
+ * already running. Its token answers that only once the write runs, since
48
+ * a queued write has not been handed it yet.
49
+ */
50
+ get writeCancellations() {
51
+ return this.cancelledWriteCount;
52
+ }
29
53
  write(action) {
30
- return super.write(token => runInWriteLockScope(() => action(token)));
54
+ return super.write(token => runInWriteLockScope(() => this.runWrite(action, token)));
55
+ }
56
+ /** Run `action` as {@link runningWrite}, so a cancellation while it runs can time it. */
57
+ async runWrite(action, token) {
58
+ const running = {};
59
+ this.runningWrite = running;
60
+ try {
61
+ await action(token);
62
+ }
63
+ finally {
64
+ running.stallTimer?.dispose();
65
+ if (this.runningWrite === running) {
66
+ this.runningWrite = undefined;
67
+ }
68
+ }
69
+ }
70
+ /**
71
+ * Counted here rather than in {@link write}, because Langium's `write` cancels
72
+ * through this method too. A write running when this is called has been
73
+ * cancelled, by this call or an earlier one, so its timer starts here.
74
+ */
75
+ cancelWrite() {
76
+ this.cancelledWriteCount++;
77
+ const running = this.runningWrite;
78
+ if (running && !running.stallTimer && this.stalledWriteWarnMs > 0) {
79
+ running.stallTimer = this.clock.setTimer(() => this.reportStalledWrite(), this.stalledWriteWarnMs);
80
+ }
81
+ super.cancelWrite();
82
+ }
83
+ reportStalledWrite() {
84
+ this.tracer.warn(`A write is still running ${this.stalledWriteWarnMs} ms after it was cancelled, and every write and read waits behind it. ` +
85
+ 'Likely causes: a model-service write or rebuild from inside a build in a host with no write-lock scope tracker, ' +
86
+ 'which waits for the build it runs in, or a write action that ignores its cancellation token. ' +
87
+ 'See https://github.com/eclipse-emfcloud/hydranium/issues/245.');
31
88
  }
32
89
  }
33
90
  //# sourceMappingURL=hydranium-workspace-lock.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"hydranium-workspace-lock.js","sourceRoot":"","sources":["../../../src/langium/workspace/hydranium-workspace-lock.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF,OAAO,EAAE,oBAAoB,EAAqB,MAAM,oBAAoB,CAAC;AAE7E,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAE5D;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,OAAO,sBAAuB,SAAQ,oBAAoB;IACpD,KAAK,CAAC,MAAwD;QACpE,OAAO,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,mBAAmB,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACzE,CAAC;CACH"}
1
+ {"version":3,"file":"hydranium-workspace-lock.js","sourceRoot":"","sources":["../../../src/langium/workspace/hydranium-workspace-lock.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAGlF,OAAO,EAAE,oBAAoB,EAAqB,MAAM,oBAAoB,CAAC;AAI7E,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAa5D,MAAM,6BAA6B,GAAG,MAAM,CAAC;AAO7C;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,OAAO,sBAAuB,SAAQ,oBAAoB;IAC7D,wCAAwC;IAC9B,mBAAmB,GAAG,CAAC,CAAC;IACf,KAAK,CAAQ;IACb,MAAM,CAAS;IACf,kBAAkB,CAAS;IACpC,YAAY,CAAgB;IAEtC,YAAY,QAA+D,EAAE,OAAO,GAAkC,EAAE;QACrH,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC;QAC5B,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,IAAI,eAAe,CAAC,CAAC;QACtE,IAAI,CAAC,kBAAkB,GAAG,OAAO,CAAC,kBAAkB,IAAI,6BAA6B,CAAC;IACzF,CAAC;IAED;;;;;;;OAOG;IACH,IAAI,kBAAkB;QACnB,OAAO,IAAI,CAAC,mBAAmB,CAAC;IACnC,CAAC;IAEQ,KAAK,CAAC,MAAwD;QACpE,OAAO,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,mBAAmB,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;IACxF,CAAC;IAED,yFAAyF;IAC/E,KAAK,CAAC,QAAQ,CAAC,MAAwD,EAAE,KAAwB;QACxG,MAAM,OAAO,GAAiB,EAAE,CAAC;QACjC,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC;QAC5B,IAAI,CAAC;YACF,MAAM,MAAM,CAAC,KAAK,CAAC,CAAC;QACvB,CAAC;gBAAS,CAAC;YACR,OAAO,CAAC,UAAU,EAAE,OAAO,EAAE,CAAC;YAC9B,IAAI,IAAI,CAAC,YAAY,KAAK,OAAO,EAAE,CAAC;gBACjC,IAAI,CAAC,YAAY,GAAG,SAAS,CAAC;YACjC,CAAC;QACJ,CAAC;IACJ,CAAC;IAED;;;;OAIG;IACM,WAAW;QACjB,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAC3B,MAAM,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC;QAClC,IAAI,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,IAAI,IAAI,CAAC,kBAAkB,GAAG,CAAC,EAAE,CAAC;YACjE,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,kBAAkB,EAAE,EAAE,IAAI,CAAC,kBAAkB,CAAC,CAAC;QACtG,CAAC;QACD,KAAK,CAAC,WAAW,EAAE,CAAC;IACvB,CAAC;IAES,kBAAkB;QACzB,IAAI,CAAC,MAAM,CAAC,IAAI,CACb,4BAA4B,IAAI,CAAC,kBAAkB,wEAAwE;YACxH,kHAAkH;YAClH,+FAA+F;YAC/F,+DAA+D,CACpE,CAAC;IACL,CAAC;CACH"}
@@ -7,7 +7,7 @@
7
7
  * SPDX-License-Identifier: MIT
8
8
  ********************************************************************************/
9
9
  import { Deferred, type Logger, type Tracer } from '@hydranium/protocol';
10
- import { DefaultWorkspaceManager, type LangiumDocument, type URI } from '@hydranium/langium';
10
+ import { DefaultWorkspaceManager, type LangiumDocument, type Stream, type URI } from '@hydranium/langium';
11
11
  import { type CancellationToken, type InitializeParams } from 'vscode-languageserver';
12
12
  import type { WorkspaceFolder } from 'vscode-languageserver-types';
13
13
  import { type LogNameOptions } from '../diagnostics/logger.js';
@@ -15,7 +15,7 @@ import type { ServerLocale } from '../../locale/server-locale.js';
15
15
  import type { ProjectChangeEvent } from '../project/project-change-event.js';
16
16
  import type { ProjectManager } from '../project/project-manager.js';
17
17
  import type { ServerSharedServicesMinimal } from '../shared-services.js';
18
- import type { WritableFileSystemProvider } from '../../documents/ast-document-manager.js';
18
+ import type { WritableFileSystemProvider } from './file-system-provider.js';
19
19
  import { type DocumentUriPolicy } from './document-uri-policy.js';
20
20
  import { type AdditionalDocumentContribution } from './additional-document-contribution.js';
21
21
  /**
@@ -54,6 +54,17 @@ export declare function handleProcessUnhandledRejection(reason: unknown, logger:
54
54
  * Applies to every Langium-based server that experiences concurrent builds.
55
55
  */
56
56
  export declare function installOperationCancelledSuppression(logger: Logger): void;
57
+ /** Options for {@link HydraniumWorkspaceManager}. */
58
+ export interface HydraniumWorkspaceManagerOptions extends LogNameOptions {
59
+ /**
60
+ * Whether startup warns about seeded documents the bound
61
+ * `FileSystemProvider` cannot serve (see
62
+ * {@link HydraniumWorkspaceManager.warnIfDocumentsUnserved}). Defaults to
63
+ * `true`; turn it off for a host that drops such documents at their last
64
+ * close on purpose.
65
+ */
66
+ warnUnservedDocuments?: boolean;
67
+ }
57
68
  /**
58
69
  * Framework {@link DefaultWorkspaceManager} subclass that integrates the
59
70
  * project tier with Langium's workspace startup.
@@ -86,8 +97,8 @@ export declare function installOperationCancelledSuppression(logger: Logger): vo
86
97
  * URIs (its own members plus any transitive dependents per the
87
98
  * `getAffectedProjects` hook). This manager re-runs
88
99
  * `DocumentBuilder.resetToState(doc, DocumentState.Changed)` on each
89
- * affected document so the next build cycle re-links them with the new
90
- * visibility scope.
100
+ * affected document so the build of the update that changed the descriptor
101
+ * re-links them with the new visibility scope.
91
102
  *
92
103
  * Descriptor URIs that triggered the cycle are intentionally excluded
93
104
  * from the affected set by `AbstractProjectManager.onBuildUpdate` —
@@ -121,7 +132,13 @@ export declare class HydraniumWorkspaceManager extends DefaultWorkspaceManager {
121
132
  protected readonly additionalDocuments: Record<string, AdditionalDocumentContribution>;
122
133
  /** Registry consulted by {@link warnIfUnroutable} to check a seeded document routes. */
123
134
  protected readonly languageRegistry: ServerSharedServicesMinimal['ServiceRegistry'];
124
- constructor(services: ServerSharedServicesMinimal, options?: LogNameOptions);
135
+ /** Whether startup runs {@link warnIfDocumentsUnserved}. */
136
+ protected readonly warnUnservedDocuments: boolean;
137
+ /** URIs of the documents the running startup's file traversal loaded; see {@link loadWorkspaceDocuments}. */
138
+ protected readonly traversedUris: Set<string>;
139
+ /** How many documents {@link loadWorkspaceDocuments} reads and parses before it may yield; below 1 counts as 1. */
140
+ protected readonly loadChunkSize: number;
141
+ constructor(services: ServerSharedServicesMinimal, options?: HydraniumWorkspaceManagerOptions);
125
142
  /**
126
143
  * Contribution form of Langium's `loadAdditionalDocuments`. Runs the base
127
144
  * behaviour first (a no-op unless a further subclass adds documents), then
@@ -137,22 +154,80 @@ export declare class HydraniumWorkspaceManager extends DefaultWorkspaceManager {
137
154
  * Warn when a seeded additional document's URI matches no registered
138
155
  * language.
139
156
  *
140
- * Such a document is added to the workspace and indexed, but every
141
- * per-language service is resolved per URI — so scope computation, naming,
142
- * validation and serialisation all fail to route to it, and it contributes
143
- * nothing to the scopes it was written to populate. Nothing else reports
144
- * this: the document exists, so no lookup errors, it is simply inert.
157
+ * Every per-language service is resolved per URI, so the workspace cannot
158
+ * load such a document: adding it throws, and the startup build fails
159
+ * with an error naming only the extension, not the document. This
160
+ * line names the document and the fix first.
145
161
  *
146
- * The usual cause is a `virtualUri` with no file extension:
147
- * `virtualUri(contributor)` yields `virtual:<contributor>`, and routing has
148
- * nothing to match on — there is no extension, and a virtual document is
149
- * never open in `TextDocuments`, so the declared-languageId rung cannot
150
- * serve it either. The convention is to end the URI with a registered
162
+ * The usual cause is a `fromModel` or `fromStringInLanguage` document
163
+ * under a `virtualUri` with no file extension: `virtualUri(contributor)`
164
+ * yields `virtual:<contributor>`, and routing has nothing to match on —
165
+ * there is no extension, and a virtual document is never open in
166
+ * `TextDocuments`, so the declared-languageId rung cannot serve it either.
167
+ * A `fromString` document under such a URI never gets here: its parse
168
+ * throws first. The convention is to end the URI with a registered
151
169
  * extension by passing it as the last segment,
152
170
  * `virtualUri(contributor, 'name.<ext>')`.
153
171
  */
154
172
  protected warnIfUnroutable(document: LangiumDocument): void;
155
173
  protected performStartup(folders: WorkspaceFolder[]): Promise<LangiumDocument[]>;
174
+ /**
175
+ * Load the documents the file traversal found through
176
+ * {@link loadTraversedDocument}, {@link loadChunkSize} at a time, yielding
177
+ * between chunks once Langium's interruption period has passed. Langium's
178
+ * own load starts every read at once and parses each as it returns: over a
179
+ * synchronous provider nothing else runs until the last file has parsed, and
180
+ * over the Node provider incoming messages wait through long runs of parses.
181
+ * The cost: at most a chunk of reads is in flight, and each chunk waits for
182
+ * its slowest read, so slow storage takes a round per chunk, not one burst.
183
+ *
184
+ * Each loaded document is recorded, so startup can tell them from the
185
+ * documents `loadAdditionalDocuments` seeded, through the
186
+ * `additionalDocuments` group or an override of its own.
187
+ *
188
+ * The traversal found each of its documents through the provider, so asking
189
+ * it again whether they exist costs one call per workspace file and cannot
190
+ * come out false. Telling them apart by scheme does not work either: the
191
+ * registry's host answers every scheme no other provider claims, a seeded
192
+ * scheme nobody serves included. An override that loads documents without
193
+ * delegating here leaves them unrecorded, so startup asks the provider
194
+ * about each of them.
195
+ */
196
+ protected loadWorkspaceDocuments(uris: Stream<URI>, collector: (document: LangiumDocument) => void): Promise<void>;
197
+ /**
198
+ * Load one document the file traversal found, or answer `undefined` to
199
+ * leave it out of the workspace.
200
+ *
201
+ * A file whose read fails and that the provider's `existsSettled`, or
202
+ * `exists` for a provider without it, reports gone is left out with a debug
203
+ * line, since it went between the scan and the read. A file still there is
204
+ * read once more, since a replacing rename can hide its name for a moment;
205
+ * that read's failure, and cancellation, fail the startup. A check that
206
+ * throws counts the file as there, since it cannot say the file went. The
207
+ * skip is the startup's only: other callers of `getOrCreateDocument` still
208
+ * get the read error.
209
+ */
210
+ protected loadTraversedDocument(uri: URI): Promise<LangiumDocument | undefined>;
211
+ /**
212
+ * Warn once when the bound `FileSystemProvider` cannot serve a seeded
213
+ * document, naming each such document's scheme.
214
+ *
215
+ * The last close keeps a document only if the provider says it `exists`, so
216
+ * each such document leaves the workspace the first time an editor closes
217
+ * it, and whatever resolved against it breaks. The framework's registry
218
+ * serves `virtual:` through the `fileSystemProviders` group and every other
219
+ * scheme through its host, which knows nothing of a scheme an adopter
220
+ * invented for its seeded documents, and nothing else reports the loss. A
221
+ * provider that throws counts as not serving the document, since a startup
222
+ * that failed on a diagnostic would be worse than the loss.
223
+ *
224
+ * Runs over every document startup collected outside the file traversal,
225
+ * which is what `loadAdditionalDocuments` seeded, through the
226
+ * `additionalDocuments` group or an override of that method, once startup
227
+ * has added them to the workspace, unless `warnUnservedDocuments` is
228
+ * `false`.
229
+ */
230
+ protected warnIfDocumentsUnserved(documents: readonly LangiumDocument[]): Promise<void>;
156
231
  /**
157
232
  * Add back the documents project discovery created that Langium's file
158
233
  * traversal then filtered out.
@@ -195,9 +270,10 @@ export declare class HydraniumWorkspaceManager extends DefaultWorkspaceManager {
195
270
  */
196
271
  protected probePathDivergence(folders: WorkspaceFolder[]): void;
197
272
  /**
198
- * Resolve the `{workspace}` file-tee placeholder from the first workspace
199
- * folder. No-op when no folder is known or no `{workspace}`-templated log
200
- * target is configured. See {@link toLogFileWorkspaceToken} for the token
273
+ * Supply the `{workspace}` placeholder from the first workspace folder, which
274
+ * the log file-tee and the CPU profile's file name both read, whether or not
275
+ * a log target is configured. No-op when no folder is known. See
276
+ * {@link toLogFileWorkspaceToken} for the token
201
277
  * derivation — a log-capturing test harness uses the same function so the
202
278
  * server's file name and the harness's correlation key agree.
203
279
  */
@@ -207,6 +283,16 @@ export declare class HydraniumWorkspaceManager extends DefaultWorkspaceManager {
207
283
  * params. `DefaultWorkspaceManager.initialize` reads `workspaceFolders`
208
284
  * alone, so `params.locale` would otherwise be discarded — and this is the
209
285
  * only place it arrives, which the headless init seams route through too.
286
+ *
287
+ * **The ABSENT case is reported from here rather than from `ServerLocale`,
288
+ * because this is the only end that can see it.** `accept` is not called
289
+ * when no locale was declared — nor should it be, since `''` is a claim
290
+ * about a language rather than the absence of one — so a log written there
291
+ * covers one of the two outcomes and leaves the other looking like a server
292
+ * that never reached init. Both lines are at `info` for the reason `accept`
293
+ * gives: the framework ships no catalogue, so an undeclared locale and an
294
+ * untranslated code produce the same English and the log is what separates
295
+ * them.
210
296
  */
211
297
  initialize(params: InitializeParams): void;
212
298
  /**
@@ -216,13 +302,19 @@ export declare class HydraniumWorkspaceManager extends DefaultWorkspaceManager {
216
302
  * and either delegate to `super.initializeWorkspace(...)` (preserving the
217
303
  * default resolve) or call `this.workspaceInitializedDeferred.resolve(...)`
218
304
  * themselves after the additional work finishes.
305
+ *
306
+ * A failed setup is logged here, since every framework waiter on
307
+ * {@link workspaceInitialized} discards the rejection; an override that
308
+ * rejects the deferred itself logs its own failure. A failed startup also
309
+ * rejects `ready`, so its waiters fail rather than wait forever; an override
310
+ * that skips `super` and catches a failed startup rejects `_ready` too.
219
311
  */
220
312
  initializeWorkspace(folders: WorkspaceFolder[], cancelToken?: CancellationToken): Promise<void>;
221
313
  /**
222
314
  * Default cascade-rebuild handler. Iterates {@link ProjectChangeEvent.affectedDocuments}
223
- * and resets each to {@link DocumentState.Changed} so the next build cycle
224
- * re-runs the pipeline (parse → link → validate) under the new project
225
- * visibility scope.
315
+ * and resets each to {@link DocumentState.Changed} so the build of the update
316
+ * that changed the descriptor re-runs the pipeline (parse → link → validate)
317
+ * under the new project visibility scope.
226
318
  *
227
319
  * Subclasses can override for additional behaviour (e.g. logging,
228
320
  * telemetry, custom rebuild policies); call `super` to preserve the
@@ -1 +1 @@
1
- {"version":3,"file":"hydranium-workspace-manager.d.ts","sourceRoot":"","sources":["../../../src/langium/workspace/hydranium-workspace-manager.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF,OAAO,EAAE,QAAQ,EAAE,KAAK,MAAM,EAAE,KAAK,MAAM,EAAE,MAAM,qBAAqB,CAAC;AACzE,OAAO,EAAE,uBAAuB,EAAiB,KAAK,eAAe,EAAY,KAAK,GAAG,EAAE,MAAM,oBAAoB,CAAC;AACtH,OAAO,EAAE,KAAK,iBAAiB,EAAE,KAAK,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACtF,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AACnE,OAAO,EAAE,KAAK,cAAc,EAAsD,MAAM,0BAA0B,CAAC;AACnH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,oCAAoC,CAAC;AAC7E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AACpE,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,uBAAuB,CAAC;AACzE,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,yCAAyC,CAAC;AAC1F,OAAO,EAAE,KAAK,iBAAiB,EAA0B,MAAM,0BAA0B,CAAC;AAC1F,OAAO,EAAE,KAAK,8BAA8B,EAA8B,MAAM,uCAAuC,CAAC;AAmBxH;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,+BAA+B,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAKrF;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,oCAAoC,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAazE;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AACH,qBAAa,yBAA0B,SAAQ,uBAAuB;IACnE,SAAS,CAAC,QAAQ,CAAC,cAAc,EAAE,cAAc,CAAC;IAClD,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IAElC;;;;;;;OAOG;IACH,SAAS,CAAC,QAAQ,CAAC,4BAA4B,oBAA2B;IAE1E;;;;;;;OAOG;IACH,QAAQ,CAAC,oBAAoB,EAAE,OAAO,CAAC,OAAO,CAAC,CAA6C;IAE5F,SAAS,CAAC,QAAQ,CAAC,SAAS,EAAE,iBAAiB,CAAC;IAChD,yEAAyE;IACzE,SAAS,CAAC,QAAQ,CAAC,YAAY,EAAE,YAAY,CAAC;IAC9C,SAAS,CAAC,QAAQ,CAAC,0BAA0B,EAAE,0BAA0B,CAAC;IAC1E,SAAS,CAAC,QAAQ,CAAC,mBAAmB,EAAE,MAAM,CAAC,MAAM,EAAE,8BAA8B,CAAC,CAAC;IACvF,wFAAwF;IACxF,SAAS,CAAC,QAAQ,CAAC,gBAAgB,EAAE,2BAA2B,CAAC,iBAAiB,CAAC,CAAC;gBAExE,QAAQ,EAAE,2BAA2B,EAAE,OAAO,GAAE,cAAmB;IAa/E;;;;;;;;;OASG;cACsB,uBAAuB,CAC7C,OAAO,EAAE,eAAe,EAAE,EAC1B,SAAS,EAAE,CAAC,QAAQ,EAAE,eAAe,KAAK,IAAI,GAC9C,OAAO,CAAC,IAAI,CAAC;IA2BhB;;;;;;;;;;;;;;;;;OAiBG;IACH,SAAS,CAAC,gBAAgB,CAAC,QAAQ,EAAE,eAAe,GAAG,IAAI;cAalC,cAAc,CAAC,OAAO,EAAE,eAAe,EAAE,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;IA6B/F;;;;;;;;;;;;;;;;;;;;;;;;;;OA0BG;IACH,SAAS,CAAC,yBAAyB,CAAC,SAAS,EAAE,eAAe,EAAE,EAAE,UAAU,EAAE,SAAS,eAAe,EAAE,GAAG,eAAe,EAAE;IAa5H;;;;;;;;;;;OAWG;IACH,SAAS,CAAC,mBAAmB,CAAC,OAAO,EAAE,eAAe,EAAE,GAAG,IAAI;IAqB/D;;;;;;OAMG;IACH,SAAS,CAAC,yBAAyB,CAAC,OAAO,EAAE,eAAe,EAAE,GAAG,IAAI;IAOrE;;;;;OAKG;IACM,UAAU,CAAC,MAAM,EAAE,gBAAgB,GAAG,IAAI;IAOnD;;;;;;;OAOG;IACY,mBAAmB,CAAC,OAAO,EAAE,eAAe,EAAE,EAAE,WAAW,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;IAU9G;;;;;;;;;OASG;IACH,SAAS,CAAC,iBAAiB,CAAC,KAAK,EAAE,kBAAkB,GAAG,IAAI;IAS5D;;;;;;;OAOG;IACH,cAAc,CAAC,GAAG,EAAE,GAAG,GAAG,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM;CAI/D"}
1
+ {"version":3,"file":"hydranium-workspace-manager.d.ts","sourceRoot":"","sources":["../../../src/langium/workspace/hydranium-workspace-manager.ts"],"names":[],"mappings":"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"}