@hydranium/core 1.0.0-next.28 → 1.0.0-next.280

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 (740) hide show
  1. package/README.md +64 -82
  2. package/lib/documents/ast-document-manager.d.ts +252 -122
  3. package/lib/documents/ast-document-manager.d.ts.map +1 -1
  4. package/lib/documents/ast-document-manager.js +290 -130
  5. package/lib/documents/ast-document-manager.js.map +1 -1
  6. package/lib/documents/client-ids.d.ts +5 -19
  7. package/lib/documents/client-ids.d.ts.map +1 -1
  8. package/lib/documents/client-ids.js +5 -19
  9. package/lib/documents/client-ids.js.map +1 -1
  10. package/lib/documents/client-session-errors.d.ts +15 -0
  11. package/lib/documents/client-session-errors.d.ts.map +1 -0
  12. package/lib/documents/client-session-errors.js +15 -0
  13. package/lib/documents/client-session-errors.js.map +1 -0
  14. package/lib/documents/client-session-registry.d.ts +146 -0
  15. package/lib/documents/client-session-registry.d.ts.map +1 -0
  16. package/lib/documents/client-session-registry.js +207 -0
  17. package/lib/documents/client-session-registry.js.map +1 -0
  18. package/lib/documents/dirty-state-tracker.d.ts +101 -0
  19. package/lib/documents/dirty-state-tracker.d.ts.map +1 -0
  20. package/lib/documents/dirty-state-tracker.js +85 -0
  21. package/lib/documents/dirty-state-tracker.js.map +1 -0
  22. package/lib/documents/document-release-handler.d.ts +204 -0
  23. package/lib/documents/document-release-handler.d.ts.map +1 -0
  24. package/lib/documents/document-release-handler.js +317 -0
  25. package/lib/documents/document-release-handler.js.map +1 -0
  26. package/lib/documents/document-release-scheduler.d.ts +67 -0
  27. package/lib/documents/document-release-scheduler.d.ts.map +1 -0
  28. package/lib/documents/document-release-scheduler.js +80 -0
  29. package/lib/documents/document-release-scheduler.js.map +1 -0
  30. package/lib/documents/file-system-task-queue.d.ts +49 -0
  31. package/lib/documents/file-system-task-queue.d.ts.map +1 -0
  32. package/lib/documents/file-system-task-queue.js +34 -0
  33. package/lib/documents/file-system-task-queue.js.map +1 -0
  34. package/lib/documents/hydranium-text-documents.d.ts +415 -282
  35. package/lib/documents/hydranium-text-documents.d.ts.map +1 -1
  36. package/lib/documents/hydranium-text-documents.js +849 -483
  37. package/lib/documents/hydranium-text-documents.js.map +1 -1
  38. package/lib/documents/index.d.ts +10 -2
  39. package/lib/documents/index.d.ts.map +1 -1
  40. package/lib/documents/index.js +10 -2
  41. package/lib/documents/index.js.map +1 -1
  42. package/lib/documents/language-client-shadow.d.ts +218 -0
  43. package/lib/documents/language-client-shadow.d.ts.map +1 -0
  44. package/lib/documents/language-client-shadow.js +284 -0
  45. package/lib/documents/language-client-shadow.js.map +1 -0
  46. package/lib/documents/model-ledger.d.ts +47 -0
  47. package/lib/documents/model-ledger.d.ts.map +1 -0
  48. package/lib/documents/model-ledger.js +30 -0
  49. package/lib/documents/model-ledger.js.map +1 -0
  50. package/lib/documents/text-ledger.d.ts +64 -0
  51. package/lib/documents/text-ledger.d.ts.map +1 -0
  52. package/lib/documents/text-ledger.js +63 -0
  53. package/lib/documents/text-ledger.js.map +1 -0
  54. package/lib/documents/version-sync-service.d.ts +138 -0
  55. package/lib/documents/version-sync-service.d.ts.map +1 -0
  56. package/lib/documents/version-sync-service.js +173 -0
  57. package/lib/documents/version-sync-service.js.map +1 -0
  58. package/lib/index.d.ts +5 -0
  59. package/lib/index.d.ts.map +1 -1
  60. package/lib/index.js +8 -0
  61. package/lib/index.js.map +1 -1
  62. package/lib/langium/ast-extension/ast-extension-service.d.ts +3 -0
  63. package/lib/langium/ast-extension/ast-extension-service.d.ts.map +1 -1
  64. package/lib/langium/ast-extension/ast-extension-service.js.map +1 -1
  65. package/lib/langium/ast-extension/ast-node-builder.d.ts +32 -9
  66. package/lib/langium/ast-extension/ast-node-builder.d.ts.map +1 -1
  67. package/lib/langium/ast-extension/ast-node-builder.js +60 -22
  68. package/lib/langium/ast-extension/ast-node-builder.js.map +1 -1
  69. package/lib/langium/bootstrap.d.ts +49 -36
  70. package/lib/langium/bootstrap.d.ts.map +1 -1
  71. package/lib/langium/bootstrap.js +91 -45
  72. package/lib/langium/bootstrap.js.map +1 -1
  73. package/lib/langium/build-phase-pass/build-phase-pass-service.d.ts +1 -1
  74. package/lib/langium/build-phase-pass/build-phase-pass-service.d.ts.map +1 -1
  75. package/lib/langium/build-phase-pass/build-phase-pass-service.js.map +1 -1
  76. package/lib/langium/build-phase-pass/build-phase-pass.d.ts +1 -1
  77. package/lib/langium/composite-ast-reflection.d.ts +46 -0
  78. package/lib/langium/composite-ast-reflection.d.ts.map +1 -0
  79. package/lib/langium/composite-ast-reflection.js +97 -0
  80. package/lib/langium/composite-ast-reflection.js.map +1 -0
  81. package/lib/langium/config/configuration-provider.d.ts +81 -0
  82. package/lib/langium/config/configuration-provider.d.ts.map +1 -0
  83. package/lib/langium/config/configuration-provider.js +112 -0
  84. package/lib/langium/config/configuration-provider.js.map +1 -0
  85. package/lib/langium/config/index.d.ts +1 -0
  86. package/lib/langium/config/index.d.ts.map +1 -1
  87. package/lib/langium/config/index.js +1 -0
  88. package/lib/langium/config/index.js.map +1 -1
  89. package/lib/langium/config/settings.js.map +1 -1
  90. package/lib/langium/diagnostics/hydranium-langium-profiler.d.ts +9 -20
  91. package/lib/langium/diagnostics/hydranium-langium-profiler.d.ts.map +1 -1
  92. package/lib/langium/diagnostics/hydranium-langium-profiler.js +15 -24
  93. package/lib/langium/diagnostics/hydranium-langium-profiler.js.map +1 -1
  94. package/lib/langium/diagnostics/log-preamble.js +1 -1
  95. package/lib/langium/diagnostics/log-preamble.js.map +1 -1
  96. package/lib/langium/diagnostics/logger.d.ts +10 -3
  97. package/lib/langium/diagnostics/logger.d.ts.map +1 -1
  98. package/lib/langium/diagnostics/logger.js +12 -5
  99. package/lib/langium/diagnostics/logger.js.map +1 -1
  100. package/lib/langium/diagnostics/lsp-logger.d.ts +17 -0
  101. package/lib/langium/diagnostics/lsp-logger.d.ts.map +1 -1
  102. package/lib/langium/diagnostics/lsp-logger.js +58 -17
  103. package/lib/langium/diagnostics/lsp-logger.js.map +1 -1
  104. package/lib/langium/diagnostics/server-tracer.d.ts.map +1 -1
  105. package/lib/langium/diagnostics/server-tracer.js.map +1 -1
  106. package/lib/langium/document-builder/build-pipeline-integration.d.ts +21 -1
  107. package/lib/langium/document-builder/build-pipeline-integration.d.ts.map +1 -1
  108. package/lib/langium/document-builder/build-pipeline-integration.js +32 -5
  109. package/lib/langium/document-builder/build-pipeline-integration.js.map +1 -1
  110. package/lib/langium/document-builder/build-session.d.ts +6 -5
  111. package/lib/langium/document-builder/build-session.d.ts.map +1 -1
  112. package/lib/langium/document-builder/build-session.js +5 -5
  113. package/lib/langium/document-builder/build-session.js.map +1 -1
  114. package/lib/langium/document-builder/document-builder.d.ts +309 -35
  115. package/lib/langium/document-builder/document-builder.d.ts.map +1 -1
  116. package/lib/langium/document-builder/document-builder.js +511 -75
  117. package/lib/langium/document-builder/document-builder.js.map +1 -1
  118. package/lib/langium/documentation/comment-provider.d.ts.map +1 -1
  119. package/lib/langium/documentation/comment-provider.js.map +1 -1
  120. package/lib/langium/integration-services.d.ts +40 -24
  121. package/lib/langium/integration-services.d.ts.map +1 -1
  122. package/lib/langium/integration-services.js +7 -4
  123. package/lib/langium/integration-services.js.map +1 -1
  124. package/lib/langium/integrity/integrity-rule.d.ts +16 -8
  125. package/lib/langium/integrity/integrity-rule.d.ts.map +1 -1
  126. package/lib/langium/integrity/integrity-rule.js.map +1 -1
  127. package/lib/langium/integrity/integrity-service.d.ts +83 -27
  128. package/lib/langium/integrity/integrity-service.d.ts.map +1 -1
  129. package/lib/langium/integrity/integrity-service.js +273 -63
  130. package/lib/langium/integrity/integrity-service.js.map +1 -1
  131. package/lib/langium/keys/containment.d.ts +64 -0
  132. package/lib/langium/keys/containment.d.ts.map +1 -0
  133. package/lib/langium/keys/containment.js +53 -0
  134. package/lib/langium/keys/containment.js.map +1 -0
  135. package/lib/langium/keys/index.d.ts +1 -0
  136. package/lib/langium/keys/index.d.ts.map +1 -1
  137. package/lib/langium/keys/index.js +1 -0
  138. package/lib/langium/keys/index.js.map +1 -1
  139. package/lib/langium/keys/name-based-key-provider.d.ts +4 -0
  140. package/lib/langium/keys/name-based-key-provider.d.ts.map +1 -1
  141. package/lib/langium/keys/name-based-key-provider.js +4 -0
  142. package/lib/langium/keys/name-based-key-provider.js.map +1 -1
  143. package/lib/langium/keys/positional-key-provider.d.ts.map +1 -1
  144. package/lib/langium/keys/positional-key-provider.js.map +1 -1
  145. package/lib/langium/labeling/label-provider.d.ts.map +1 -1
  146. package/lib/langium/labeling/label-provider.js.map +1 -1
  147. package/lib/langium/language-module.d.ts +30 -5
  148. package/lib/langium/language-module.d.ts.map +1 -1
  149. package/lib/langium/language-module.js +18 -4
  150. package/lib/langium/language-module.js.map +1 -1
  151. package/lib/langium/model-service/client-session.d.ts +372 -0
  152. package/lib/langium/model-service/client-session.d.ts.map +1 -0
  153. package/lib/langium/model-service/client-session.js +446 -0
  154. package/lib/langium/model-service/client-session.js.map +1 -0
  155. package/lib/langium/model-service/index.d.ts +2 -0
  156. package/lib/langium/model-service/index.d.ts.map +1 -1
  157. package/lib/langium/model-service/index.js +2 -0
  158. package/lib/langium/model-service/index.js.map +1 -1
  159. package/lib/langium/model-service/model-events.d.ts +66 -0
  160. package/lib/langium/model-service/model-events.d.ts.map +1 -0
  161. package/lib/langium/model-service/model-events.js +10 -0
  162. package/lib/langium/model-service/model-events.js.map +1 -0
  163. package/lib/langium/model-service/model-service.d.ts +440 -282
  164. package/lib/langium/model-service/model-service.d.ts.map +1 -1
  165. package/lib/langium/model-service/model-service.js +542 -446
  166. package/lib/langium/model-service/model-service.js.map +1 -1
  167. package/lib/langium/module.d.ts +158 -37
  168. package/lib/langium/module.d.ts.map +1 -1
  169. package/lib/langium/module.js +52 -36
  170. package/lib/langium/module.js.map +1 -1
  171. package/lib/langium/naming/name-provider.d.ts +27 -6
  172. package/lib/langium/naming/name-provider.d.ts.map +1 -1
  173. package/lib/langium/naming/name-provider.js +4 -3
  174. package/lib/langium/naming/name-provider.js.map +1 -1
  175. package/lib/langium/naming/name-separator-validation.d.ts +23 -1
  176. package/lib/langium/naming/name-separator-validation.d.ts.map +1 -1
  177. package/lib/langium/naming/name-separator-validation.js +22 -0
  178. package/lib/langium/naming/name-separator-validation.js.map +1 -1
  179. package/lib/langium/project/abstract-project-manager.d.ts.map +1 -1
  180. package/lib/langium/project/abstract-project-manager.js +13 -6
  181. package/lib/langium/project/abstract-project-manager.js.map +1 -1
  182. package/lib/langium/project/project-change-event.d.ts +2 -2
  183. package/lib/langium/project/single-project-manager.d.ts.map +1 -1
  184. package/lib/langium/project/single-project-manager.js.map +1 -1
  185. package/lib/langium/residency/cst-residency-service.d.ts +35 -12
  186. package/lib/langium/residency/cst-residency-service.d.ts.map +1 -1
  187. package/lib/langium/residency/cst-residency-service.js +23 -57
  188. package/lib/langium/residency/cst-residency-service.js.map +1 -1
  189. package/lib/langium/scope/ast-node-description-provider.d.ts.map +1 -1
  190. package/lib/langium/scope/ast-node-description-provider.js.map +1 -1
  191. package/lib/langium/scope/fallback-scope.d.ts +27 -0
  192. package/lib/langium/scope/fallback-scope.d.ts.map +1 -0
  193. package/lib/langium/scope/fallback-scope.js +35 -0
  194. package/lib/langium/scope/fallback-scope.js.map +1 -0
  195. package/lib/langium/scope/hydranium-scope-computation.d.ts +21 -18
  196. package/lib/langium/scope/hydranium-scope-computation.d.ts.map +1 -1
  197. package/lib/langium/scope/hydranium-scope-computation.js +38 -39
  198. package/lib/langium/scope/hydranium-scope-computation.js.map +1 -1
  199. package/lib/langium/scope/hydranium-scope-provider.d.ts +61 -24
  200. package/lib/langium/scope/hydranium-scope-provider.d.ts.map +1 -1
  201. package/lib/langium/scope/hydranium-scope-provider.js +74 -35
  202. package/lib/langium/scope/hydranium-scope-provider.js.map +1 -1
  203. package/lib/langium/scope/index.d.ts +1 -0
  204. package/lib/langium/scope/index.d.ts.map +1 -1
  205. package/lib/langium/scope/index.js +1 -0
  206. package/lib/langium/scope/index.js.map +1 -1
  207. package/lib/langium/scope/reference-builder.d.ts.map +1 -1
  208. package/lib/langium/scope/reference-builder.js.map +1 -1
  209. package/lib/langium/scope/reference-candidate-provider.d.ts +6 -5
  210. package/lib/langium/scope/reference-candidate-provider.d.ts.map +1 -1
  211. package/lib/langium/scope/reference-candidate-provider.js +3 -2
  212. package/lib/langium/scope/reference-candidate-provider.js.map +1 -1
  213. package/lib/langium/scope/scope-extension-service.d.ts +41 -37
  214. package/lib/langium/scope/scope-extension-service.d.ts.map +1 -1
  215. package/lib/langium/scope/scope-extension-service.js +57 -29
  216. package/lib/langium/scope/scope-extension-service.js.map +1 -1
  217. package/lib/langium/scope/scoped-ast-node-description.d.ts +1 -3
  218. package/lib/langium/scope/scoped-ast-node-description.d.ts.map +1 -1
  219. package/lib/langium/scope/scoped-ast-node-description.js +1 -3
  220. package/lib/langium/scope/scoped-ast-node-description.js.map +1 -1
  221. package/lib/langium/serialization/abstract-serializer.d.ts +38 -27
  222. package/lib/langium/serialization/abstract-serializer.d.ts.map +1 -1
  223. package/lib/langium/serialization/abstract-serializer.js +54 -30
  224. package/lib/langium/serialization/abstract-serializer.js.map +1 -1
  225. package/lib/langium/serialization/json-serializer.d.ts +8 -1
  226. package/lib/langium/serialization/json-serializer.d.ts.map +1 -1
  227. package/lib/langium/serialization/json-serializer.js +13 -3
  228. package/lib/langium/serialization/json-serializer.js.map +1 -1
  229. package/lib/langium/serialization/serializer.d.ts +1 -1
  230. package/lib/langium/serialization/yaml-serializer.d.ts +4 -0
  231. package/lib/langium/serialization/yaml-serializer.d.ts.map +1 -1
  232. package/lib/langium/serialization/yaml-serializer.js +4 -0
  233. package/lib/langium/serialization/yaml-serializer.js.map +1 -1
  234. package/lib/langium/service-registry.d.ts +29 -1
  235. package/lib/langium/service-registry.d.ts.map +1 -1
  236. package/lib/langium/service-registry.js +37 -0
  237. package/lib/langium/service-registry.js.map +1 -1
  238. package/lib/langium/shared-services.d.ts +23 -6
  239. package/lib/langium/shared-services.d.ts.map +1 -1
  240. package/lib/langium/shared-services.js.map +1 -1
  241. package/lib/langium/single-langium-copy.d.ts +22 -0
  242. package/lib/langium/single-langium-copy.d.ts.map +1 -0
  243. package/lib/langium/single-langium-copy.js +36 -0
  244. package/lib/langium/single-langium-copy.js.map +1 -0
  245. package/lib/langium/transfer/transfer-encoder.d.ts +84 -35
  246. package/lib/langium/transfer/transfer-encoder.d.ts.map +1 -1
  247. package/lib/langium/transfer/transfer-encoder.js +34 -23
  248. package/lib/langium/transfer/transfer-encoder.js.map +1 -1
  249. package/lib/langium/trivia/comment-preserver.d.ts +423 -0
  250. package/lib/langium/trivia/comment-preserver.d.ts.map +1 -0
  251. package/lib/langium/trivia/comment-preserver.js +906 -0
  252. package/lib/langium/trivia/comment-preserver.js.map +1 -0
  253. package/lib/langium/trivia/document-ending-preserver.d.ts +43 -0
  254. package/lib/langium/trivia/document-ending-preserver.d.ts.map +1 -0
  255. package/lib/langium/trivia/document-ending-preserver.js +48 -0
  256. package/lib/langium/trivia/document-ending-preserver.js.map +1 -0
  257. package/lib/langium/trivia/index.d.ts +14 -0
  258. package/lib/langium/trivia/index.d.ts.map +1 -0
  259. package/lib/langium/trivia/index.js +14 -0
  260. package/lib/langium/trivia/index.js.map +1 -0
  261. package/lib/langium/trivia/trivia-contribution.d.ts +37 -0
  262. package/lib/langium/trivia/trivia-contribution.d.ts.map +1 -0
  263. package/lib/langium/trivia/trivia-contribution.js +10 -0
  264. package/lib/langium/trivia/trivia-contribution.js.map +1 -0
  265. package/lib/langium/trivia/trivia-preserver.d.ts +50 -0
  266. package/lib/langium/trivia/trivia-preserver.d.ts.map +1 -0
  267. package/lib/langium/trivia/trivia-preserver.js +10 -0
  268. package/lib/langium/trivia/trivia-preserver.js.map +1 -0
  269. package/lib/langium/trivia/trivia-service.d.ts +70 -0
  270. package/lib/langium/trivia/trivia-service.d.ts.map +1 -0
  271. package/lib/langium/trivia/trivia-service.js +56 -0
  272. package/lib/langium/trivia/trivia-service.js.map +1 -0
  273. package/lib/langium/update-rewrite/normalize-empty-strings.d.ts.map +1 -1
  274. package/lib/langium/update-rewrite/update-rewrite-service.d.ts +1 -1
  275. package/lib/langium/update-rewrite/update-rewrite-service.d.ts.map +1 -1
  276. package/lib/langium/update-rewrite/update-rewrite-service.js.map +1 -1
  277. package/lib/langium/update-rewrite/update-rewrite.d.ts +1 -1
  278. package/lib/langium/validation/document-validator.d.ts +280 -9
  279. package/lib/langium/validation/document-validator.d.ts.map +1 -1
  280. package/lib/langium/validation/document-validator.js +453 -8
  281. package/lib/langium/validation/document-validator.js.map +1 -1
  282. package/lib/langium/validation/validation-contribution-collector.d.ts +9 -1
  283. package/lib/langium/validation/validation-contribution-collector.d.ts.map +1 -1
  284. package/lib/langium/validation/validation-contribution-collector.js +1 -1
  285. package/lib/langium/validation/validation-contribution-collector.js.map +1 -1
  286. package/lib/langium/workspace/document-uri-policy.d.ts +15 -10
  287. package/lib/langium/workspace/document-uri-policy.d.ts.map +1 -1
  288. package/lib/langium/workspace/document-uri-policy.js +7 -5
  289. package/lib/langium/workspace/document-uri-policy.js.map +1 -1
  290. package/lib/langium/workspace/file-not-found.d.ts +23 -0
  291. package/lib/langium/workspace/file-not-found.d.ts.map +1 -0
  292. package/lib/langium/workspace/file-not-found.js +31 -0
  293. package/lib/langium/workspace/file-not-found.js.map +1 -0
  294. package/lib/langium/workspace/file-system-provider.d.ts +154 -8
  295. package/lib/langium/workspace/file-system-provider.d.ts.map +1 -1
  296. package/lib/langium/workspace/file-system-provider.js +102 -13
  297. package/lib/langium/workspace/file-system-provider.js.map +1 -1
  298. package/lib/langium/workspace/hydranium-langium-document-factory.d.ts +56 -1
  299. package/lib/langium/workspace/hydranium-langium-document-factory.d.ts.map +1 -1
  300. package/lib/langium/workspace/hydranium-langium-document-factory.js +79 -0
  301. package/lib/langium/workspace/hydranium-langium-document-factory.js.map +1 -1
  302. package/lib/langium/workspace/hydranium-workspace-lock.d.ts +43 -1
  303. package/lib/langium/workspace/hydranium-workspace-lock.d.ts.map +1 -1
  304. package/lib/langium/workspace/hydranium-workspace-lock.js +58 -1
  305. package/lib/langium/workspace/hydranium-workspace-lock.js.map +1 -1
  306. package/lib/langium/workspace/hydranium-workspace-manager.d.ts +109 -9
  307. package/lib/langium/workspace/hydranium-workspace-manager.d.ts.map +1 -1
  308. package/lib/langium/workspace/hydranium-workspace-manager.js +192 -12
  309. package/lib/langium/workspace/hydranium-workspace-manager.js.map +1 -1
  310. package/lib/langium/workspace/in-memory-file-system-provider.d.ts +26 -9
  311. package/lib/langium/workspace/in-memory-file-system-provider.d.ts.map +1 -1
  312. package/lib/langium/workspace/in-memory-file-system-provider.js +45 -22
  313. package/lib/langium/workspace/in-memory-file-system-provider.js.map +1 -1
  314. package/lib/langium/workspace/index-manager.d.ts.map +1 -1
  315. package/lib/langium/workspace/index-manager.js.map +1 -1
  316. package/lib/langium/workspace/index.d.ts +1 -0
  317. package/lib/langium/workspace/index.d.ts.map +1 -1
  318. package/lib/langium/workspace/index.js +1 -0
  319. package/lib/langium/workspace/index.js.map +1 -1
  320. package/lib/langium/workspace/initialize-workspace.d.ts +31 -2
  321. package/lib/langium/workspace/initialize-workspace.d.ts.map +1 -1
  322. package/lib/langium/workspace/initialize-workspace.js +13 -5
  323. package/lib/langium/workspace/initialize-workspace.js.map +1 -1
  324. package/lib/langium/workspace/langium-documents.d.ts +37 -4
  325. package/lib/langium/workspace/langium-documents.d.ts.map +1 -1
  326. package/lib/langium/workspace/langium-documents.js +49 -4
  327. package/lib/langium/workspace/langium-documents.js.map +1 -1
  328. package/lib/langium/workspace/persistent-file-system-provider.d.ts +7 -9
  329. package/lib/langium/workspace/persistent-file-system-provider.d.ts.map +1 -1
  330. package/lib/langium/workspace/persistent-file-system-provider.js +14 -13
  331. package/lib/langium/workspace/persistent-file-system-provider.js.map +1 -1
  332. package/lib/langium/workspace/self-save-registry.d.ts +84 -0
  333. package/lib/langium/workspace/self-save-registry.d.ts.map +1 -0
  334. package/lib/{documents → langium/workspace}/self-save-registry.js +33 -22
  335. package/lib/langium/workspace/self-save-registry.js.map +1 -0
  336. package/lib/langium/workspace/virtual-document.d.ts +49 -15
  337. package/lib/langium/workspace/virtual-document.d.ts.map +1 -1
  338. package/lib/langium/workspace/virtual-document.js +81 -18
  339. package/lib/langium/workspace/virtual-document.js.map +1 -1
  340. package/lib/langium/workspace/write-lock-scope.d.ts +22 -10
  341. package/lib/langium/workspace/write-lock-scope.d.ts.map +1 -1
  342. package/lib/langium/workspace/write-lock-scope.js +15 -5
  343. package/lib/langium/workspace/write-lock-scope.js.map +1 -1
  344. package/lib/launcher/integrated-server.d.ts +3 -1
  345. package/lib/launcher/integrated-server.d.ts.map +1 -1
  346. package/lib/locale/index.d.ts +10 -0
  347. package/lib/locale/index.d.ts.map +1 -0
  348. package/lib/locale/index.js +10 -0
  349. package/lib/locale/index.js.map +1 -0
  350. package/lib/locale/server-locale.d.ts +73 -0
  351. package/lib/locale/server-locale.d.ts.map +1 -0
  352. package/lib/locale/server-locale.js +61 -0
  353. package/lib/locale/server-locale.js.map +1 -0
  354. package/lib/lsp/completion/hydranium-completion-provider.d.ts +44 -2
  355. package/lib/lsp/completion/hydranium-completion-provider.d.ts.map +1 -1
  356. package/lib/lsp/completion/hydranium-completion-provider.js +68 -0
  357. package/lib/lsp/completion/hydranium-completion-provider.js.map +1 -1
  358. package/lib/lsp/connection-features.d.ts +23 -0
  359. package/lib/lsp/connection-features.d.ts.map +1 -0
  360. package/lib/lsp/connection-features.js +60 -0
  361. package/lib/lsp/connection-features.js.map +1 -0
  362. package/lib/lsp/diagnostics-connection.d.ts +27 -0
  363. package/lib/lsp/diagnostics-connection.d.ts.map +1 -0
  364. package/lib/lsp/diagnostics-connection.js +53 -0
  365. package/lib/lsp/diagnostics-connection.js.map +1 -0
  366. package/lib/lsp/hydranium-document-update-handler.d.ts +106 -82
  367. package/lib/lsp/hydranium-document-update-handler.d.ts.map +1 -1
  368. package/lib/lsp/hydranium-document-update-handler.js +182 -102
  369. package/lib/lsp/hydranium-document-update-handler.js.map +1 -1
  370. package/lib/lsp/index.d.ts +3 -1
  371. package/lib/lsp/index.d.ts.map +1 -1
  372. package/lib/lsp/index.js +3 -1
  373. package/lib/lsp/index.js.map +1 -1
  374. package/lib/lsp/lsp-latency.d.ts +39 -0
  375. package/lib/lsp/lsp-latency.d.ts.map +1 -0
  376. package/lib/lsp/lsp-latency.js +58 -0
  377. package/lib/lsp/lsp-latency.js.map +1 -0
  378. package/lib/lsp/semantic-token-provider.d.ts +34 -1
  379. package/lib/lsp/semantic-token-provider.d.ts.map +1 -1
  380. package/lib/lsp/semantic-token-provider.js +55 -8
  381. package/lib/lsp/semantic-token-provider.js.map +1 -1
  382. package/lib/lsp/shared-module.d.ts +4 -8
  383. package/lib/lsp/shared-module.d.ts.map +1 -1
  384. package/lib/lsp/shared-module.js.map +1 -1
  385. package/lib/lsp/start-language-server.d.ts +8 -7
  386. package/lib/lsp/start-language-server.d.ts.map +1 -1
  387. package/lib/lsp/start-language-server.js +13 -7
  388. package/lib/lsp/start-language-server.js.map +1 -1
  389. package/lib/messages/carriers.d.ts +18 -12
  390. package/lib/messages/carriers.d.ts.map +1 -1
  391. package/lib/messages/carriers.js +22 -13
  392. package/lib/messages/carriers.js.map +1 -1
  393. package/lib/messages/index.d.ts +4 -1
  394. package/lib/messages/index.d.ts.map +1 -1
  395. package/lib/messages/index.js +4 -1
  396. package/lib/messages/index.js.map +1 -1
  397. package/lib/messages/renderer.d.ts +142 -0
  398. package/lib/messages/renderer.d.ts.map +1 -0
  399. package/lib/messages/renderer.js +165 -0
  400. package/lib/messages/renderer.js.map +1 -0
  401. package/lib/node/event-loop-monitor.d.ts.map +1 -1
  402. package/lib/node/event-loop-monitor.js +2 -1
  403. package/lib/node/event-loop-monitor.js.map +1 -1
  404. package/lib/node/heap-ceiling.d.ts +61 -0
  405. package/lib/node/heap-ceiling.d.ts.map +1 -0
  406. package/lib/node/heap-ceiling.js +72 -0
  407. package/lib/node/heap-ceiling.js.map +1 -0
  408. package/lib/node/index.d.ts +1 -1
  409. package/lib/node/index.d.ts.map +1 -1
  410. package/lib/node/index.js +1 -1
  411. package/lib/node/index.js.map +1 -1
  412. package/lib/node/latency-from-env.d.ts +1 -1
  413. package/lib/node/latency-from-env.js +1 -1
  414. package/lib/node/lint-grammar.js.map +1 -1
  415. package/lib/node/log-preamble-node.d.ts +5 -3
  416. package/lib/node/log-preamble-node.d.ts.map +1 -1
  417. package/lib/node/log-preamble-node.js +13 -10
  418. package/lib/node/log-preamble-node.js.map +1 -1
  419. package/lib/node/measure-memory.d.ts.map +1 -1
  420. package/lib/node/measure-memory.js +5 -4
  421. package/lib/node/measure-memory.js.map +1 -1
  422. package/lib/node/memory-monitor.d.ts +2 -2
  423. package/lib/node/memory-monitor.d.ts.map +1 -1
  424. package/lib/node/memory-monitor.js +9 -10
  425. package/lib/node/memory-monitor.js.map +1 -1
  426. package/lib/node/node-file-system-provider.d.ts +60 -9
  427. package/lib/node/node-file-system-provider.d.ts.map +1 -1
  428. package/lib/node/node-file-system-provider.js +162 -52
  429. package/lib/node/node-file-system-provider.js.map +1 -1
  430. package/lib/node/profile-capture.d.ts +12 -4
  431. package/lib/node/profile-capture.d.ts.map +1 -1
  432. package/lib/node/profile-capture.js +8 -6
  433. package/lib/node/profile-capture.js.map +1 -1
  434. package/lib/node/profile-digest.js.map +1 -1
  435. package/lib/node/profiling-run.d.ts +13 -3
  436. package/lib/node/profiling-run.d.ts.map +1 -1
  437. package/lib/node/profiling-run.js +17 -8
  438. package/lib/node/profiling-run.js.map +1 -1
  439. package/lib/node/rename-over-open-readers.d.ts +61 -0
  440. package/lib/node/rename-over-open-readers.d.ts.map +1 -0
  441. package/lib/node/rename-over-open-readers.js +80 -0
  442. package/lib/node/rename-over-open-readers.js.map +1 -0
  443. package/lib/node/server-diagnostics.js +1 -1
  444. package/lib/node/server-diagnostics.js.map +1 -1
  445. package/lib/node/server-state-snapshot.js +4 -4
  446. package/lib/node/server-state-snapshot.js.map +1 -1
  447. package/lib/node/socket-launcher.d.ts +20 -4
  448. package/lib/node/socket-launcher.d.ts.map +1 -1
  449. package/lib/node/socket-launcher.js +8 -7
  450. package/lib/node/socket-launcher.js.map +1 -1
  451. package/lib/node/stdio-launcher.d.ts +10 -10
  452. package/lib/node/stdio-launcher.d.ts.map +1 -1
  453. package/lib/node/stdio-launcher.js +17 -9
  454. package/lib/node/stdio-launcher.js.map +1 -1
  455. package/lib/testing/document-uri-policy-conformance.js +1 -1
  456. package/lib/testing/document-uri-policy-conformance.js.map +1 -1
  457. package/lib/testing/fake-description.js.map +1 -1
  458. package/lib/testing/fake-document.d.ts +16 -4
  459. package/lib/testing/fake-document.d.ts.map +1 -1
  460. package/lib/testing/fake-document.js +18 -3
  461. package/lib/testing/fake-document.js.map +1 -1
  462. package/lib/testing/index.d.ts +1 -1
  463. package/lib/testing/index.d.ts.map +1 -1
  464. package/lib/testing/index.js +2 -1
  465. package/lib/testing/index.js.map +1 -1
  466. package/lib/testing/langium-test-helpers.d.ts.map +1 -1
  467. package/lib/testing/langium-test-helpers.js +1 -0
  468. package/lib/testing/langium-test-helpers.js.map +1 -1
  469. package/lib/testing/make-noop-language-services.js.map +1 -1
  470. package/lib/testing/make-noop-shared-services.d.ts +14 -0
  471. package/lib/testing/make-noop-shared-services.d.ts.map +1 -1
  472. package/lib/testing/make-noop-shared-services.js +28 -2
  473. package/lib/testing/make-noop-shared-services.js.map +1 -1
  474. package/lib/testing/make-test-services.d.ts +72 -14
  475. package/lib/testing/make-test-services.d.ts.map +1 -1
  476. package/lib/testing/make-test-services.js +42 -10
  477. package/lib/testing/make-test-services.js.map +1 -1
  478. package/lib/testing/make-test-tracer.d.ts +12 -0
  479. package/lib/testing/make-test-tracer.d.ts.map +1 -1
  480. package/lib/testing/make-test-tracer.js +13 -0
  481. package/lib/testing/make-test-tracer.js.map +1 -1
  482. package/lib/testing/node/applied-edit-capture.d.ts +29 -0
  483. package/lib/testing/node/applied-edit-capture.d.ts.map +1 -0
  484. package/lib/testing/node/applied-edit-capture.js +115 -0
  485. package/lib/testing/node/applied-edit-capture.js.map +1 -0
  486. package/lib/testing/node/golden-corpus.js.map +1 -1
  487. package/lib/testing/node/index.d.ts +1 -0
  488. package/lib/testing/node/index.d.ts.map +1 -1
  489. package/lib/testing/node/index.js +1 -0
  490. package/lib/testing/node/index.js.map +1 -1
  491. package/lib/testing/node/lsp-harness.d.ts.map +1 -1
  492. package/lib/testing/node/lsp-harness.js +2 -0
  493. package/lib/testing/node/lsp-harness.js.map +1 -1
  494. package/lib/testing/node/lsp-server-connection.d.ts +12 -4
  495. package/lib/testing/node/lsp-server-connection.d.ts.map +1 -1
  496. package/lib/testing/node/lsp-server-connection.js +45 -106
  497. package/lib/testing/node/lsp-server-connection.js.map +1 -1
  498. package/lib/testing/node/scratch-workspace.d.ts.map +1 -1
  499. package/lib/testing/node/scratch-workspace.js +10 -5
  500. package/lib/testing/node/scratch-workspace.js.map +1 -1
  501. package/lib/testing/node/spawned-server.d.ts +30 -1
  502. package/lib/testing/node/spawned-server.d.ts.map +1 -1
  503. package/lib/testing/node/spawned-server.js +39 -2
  504. package/lib/testing/node/spawned-server.js.map +1 -1
  505. package/lib/testing/node/unhandled-rejections.d.ts +20 -0
  506. package/lib/testing/node/unhandled-rejections.d.ts.map +1 -0
  507. package/lib/testing/node/unhandled-rejections.js +32 -0
  508. package/lib/testing/node/unhandled-rejections.js.map +1 -0
  509. package/lib/testing/playwright/browser-capture-bridge.js.map +1 -1
  510. package/lib/testing/playwright/e2e-profiling.js.map +1 -1
  511. package/lib/testing/playwright/flaky-network-proxy.d.ts +76 -0
  512. package/lib/testing/playwright/flaky-network-proxy.d.ts.map +1 -0
  513. package/lib/testing/playwright/flaky-network-proxy.js +164 -0
  514. package/lib/testing/playwright/flaky-network-proxy.js.map +1 -0
  515. package/lib/testing/playwright/index.d.ts +1 -0
  516. package/lib/testing/playwright/index.d.ts.map +1 -1
  517. package/lib/testing/playwright/index.js +1 -0
  518. package/lib/testing/playwright/index.js.map +1 -1
  519. package/lib/testing/playwright/server-log-capture.d.ts +35 -8
  520. package/lib/testing/playwright/server-log-capture.d.ts.map +1 -1
  521. package/lib/testing/playwright/server-log-capture.js +39 -6
  522. package/lib/testing/playwright/server-log-capture.js.map +1 -1
  523. package/lib/testing/playwright/server-log-fixture.d.ts +16 -0
  524. package/lib/testing/playwright/server-log-fixture.d.ts.map +1 -1
  525. package/lib/testing/playwright/server-log-fixture.js +25 -6
  526. package/lib/testing/playwright/server-log-fixture.js.map +1 -1
  527. package/lib/testing/playwright/server-log-region.d.ts +15 -0
  528. package/lib/testing/playwright/server-log-region.d.ts.map +1 -0
  529. package/lib/testing/playwright/server-log-region.js +30 -0
  530. package/lib/testing/playwright/server-log-region.js.map +1 -0
  531. package/lib/testing/playwright/server-log-rename-reporter.d.ts.map +1 -1
  532. package/lib/testing/playwright/server-log-rename-reporter.js +10 -1
  533. package/lib/testing/playwright/server-log-rename-reporter.js.map +1 -1
  534. package/lib/testing/run-update-pipeline.d.ts +6 -5
  535. package/lib/testing/run-update-pipeline.d.ts.map +1 -1
  536. package/lib/testing/run-update-pipeline.js.map +1 -1
  537. package/lib/testing/stub-ast-document-manager.d.ts +11 -52
  538. package/lib/testing/stub-ast-document-manager.d.ts.map +1 -1
  539. package/lib/testing/stub-ast-document-manager.js +31 -62
  540. package/lib/testing/stub-ast-document-manager.js.map +1 -1
  541. package/lib/testing/stub-document-builder.d.ts +33 -11
  542. package/lib/testing/stub-document-builder.d.ts.map +1 -1
  543. package/lib/testing/stub-document-builder.js +103 -5
  544. package/lib/testing/stub-document-builder.js.map +1 -1
  545. package/lib/testing/stub-hydranium-text-documents.d.ts +33 -10
  546. package/lib/testing/stub-hydranium-text-documents.d.ts.map +1 -1
  547. package/lib/testing/stub-hydranium-text-documents.js +132 -16
  548. package/lib/testing/stub-hydranium-text-documents.js.map +1 -1
  549. package/lib/testing/stub-index-manager.js.map +1 -1
  550. package/lib/testing/stub-langium-documents.d.ts +3 -2
  551. package/lib/testing/stub-langium-documents.d.ts.map +1 -1
  552. package/lib/testing/stub-langium-documents.js.map +1 -1
  553. package/lib/testing/stub-model-service.d.ts +9 -8
  554. package/lib/testing/stub-model-service.d.ts.map +1 -1
  555. package/lib/testing/stub-model-service.js +6 -6
  556. package/lib/testing/stub-model-service.js.map +1 -1
  557. package/lib/testing/stub-project-manager.js.map +1 -1
  558. package/lib/testing/stub-self-save-registry.d.ts +1 -1
  559. package/lib/testing/stub-self-save-registry.d.ts.map +1 -1
  560. package/lib/testing/stub-service-registry.d.ts +1 -1
  561. package/lib/testing/stub-service-registry.js.map +1 -1
  562. package/lib/testing/stub-writable-file-system.d.ts +1 -1
  563. package/lib/testing/stub-writable-file-system.d.ts.map +1 -1
  564. package/lib/testing/stub-writable-file-system.js +2 -1
  565. package/lib/testing/stub-writable-file-system.js.map +1 -1
  566. package/lib/util/connection-liveness.d.ts +19 -6
  567. package/lib/util/connection-liveness.d.ts.map +1 -1
  568. package/lib/util/connection-liveness.js +61 -15
  569. package/lib/util/connection-liveness.js.map +1 -1
  570. package/lib/util/environment.d.ts.map +1 -1
  571. package/lib/util/environment.js.map +1 -1
  572. package/lib/util/registry.d.ts.map +1 -1
  573. package/package.json +29 -53
  574. package/src/documents/ast-document-manager.ts +463 -231
  575. package/src/documents/client-ids.ts +5 -22
  576. package/src/documents/client-session-errors.ts +24 -0
  577. package/src/documents/client-session-registry.ts +262 -0
  578. package/src/documents/dirty-state-tracker.ts +167 -0
  579. package/src/documents/document-release-handler.ts +404 -0
  580. package/src/documents/document-release-scheduler.ts +121 -0
  581. package/src/documents/file-system-task-queue.ts +68 -0
  582. package/src/documents/hydranium-text-documents.ts +968 -595
  583. package/src/documents/index.ts +10 -2
  584. package/src/documents/language-client-shadow.ts +452 -0
  585. package/src/documents/model-ledger.ts +66 -0
  586. package/src/documents/text-ledger.ts +112 -0
  587. package/src/documents/version-sync-service.ts +275 -0
  588. package/src/index.ts +8 -0
  589. package/src/langium/ast-extension/ast-extension-service.ts +3 -0
  590. package/src/langium/ast-extension/ast-node-builder.ts +66 -22
  591. package/src/langium/bootstrap.ts +95 -52
  592. package/src/langium/build-phase-pass/build-phase-pass-service.ts +1 -1
  593. package/src/langium/build-phase-pass/build-phase-pass.ts +1 -1
  594. package/src/langium/composite-ast-reflection.ts +112 -0
  595. package/src/langium/config/configuration-provider.ts +119 -0
  596. package/src/langium/config/index.ts +1 -0
  597. package/src/langium/diagnostics/hydranium-langium-profiler.ts +15 -39
  598. package/src/langium/diagnostics/log-preamble.ts +1 -1
  599. package/src/langium/diagnostics/logger.ts +12 -5
  600. package/src/langium/diagnostics/lsp-logger.ts +61 -16
  601. package/src/langium/document-builder/build-pipeline-integration.ts +50 -5
  602. package/src/langium/document-builder/build-session.ts +4 -3
  603. package/src/langium/document-builder/document-builder.ts +616 -73
  604. package/src/langium/integration-services.ts +59 -28
  605. package/src/langium/integrity/integrity-rule.ts +16 -8
  606. package/src/langium/integrity/integrity-service.ts +296 -69
  607. package/src/langium/keys/containment.ts +87 -0
  608. package/src/langium/keys/index.ts +1 -0
  609. package/src/langium/keys/name-based-key-provider.ts +4 -0
  610. package/src/langium/language-module.ts +49 -8
  611. package/src/langium/model-service/client-session.ts +702 -0
  612. package/src/langium/model-service/index.ts +2 -0
  613. package/src/langium/model-service/model-events.ts +80 -0
  614. package/src/langium/model-service/model-service.ts +835 -475
  615. package/src/langium/module.ts +212 -67
  616. package/src/langium/naming/name-provider.ts +29 -7
  617. package/src/langium/naming/name-separator-validation.ts +25 -3
  618. package/src/langium/project/abstract-project-manager.ts +13 -5
  619. package/src/langium/project/project-change-event.ts +2 -2
  620. package/src/langium/residency/cst-residency-service.ts +50 -16
  621. package/src/langium/scope/fallback-scope.ts +38 -0
  622. package/src/langium/scope/hydranium-scope-computation.ts +45 -44
  623. package/src/langium/scope/hydranium-scope-provider.ts +89 -38
  624. package/src/langium/scope/index.ts +1 -0
  625. package/src/langium/scope/reference-candidate-provider.ts +6 -5
  626. package/src/langium/scope/scope-extension-service.ts +74 -59
  627. package/src/langium/scope/scoped-ast-node-description.ts +1 -3
  628. package/src/langium/serialization/abstract-serializer.ts +57 -41
  629. package/src/langium/serialization/json-serializer.ts +14 -3
  630. package/src/langium/serialization/serializer.ts +1 -1
  631. package/src/langium/serialization/yaml-serializer.ts +4 -0
  632. package/src/langium/service-registry.ts +41 -2
  633. package/src/langium/shared-services.ts +26 -6
  634. package/src/langium/single-langium-copy.ts +42 -0
  635. package/src/langium/transfer/transfer-encoder.ts +102 -45
  636. package/src/langium/trivia/comment-preserver.ts +1100 -0
  637. package/src/langium/trivia/document-ending-preserver.ts +55 -0
  638. package/src/langium/trivia/index.ts +14 -0
  639. package/src/langium/trivia/trivia-contribution.ts +39 -0
  640. package/src/langium/trivia/trivia-preserver.ts +54 -0
  641. package/src/langium/trivia/trivia-service.ts +99 -0
  642. package/src/langium/update-rewrite/update-rewrite-service.ts +1 -1
  643. package/src/langium/update-rewrite/update-rewrite.ts +1 -1
  644. package/src/langium/validation/document-validator.ts +528 -13
  645. package/src/langium/validation/validation-contribution-collector.ts +10 -1
  646. package/src/langium/workspace/document-uri-policy.ts +15 -10
  647. package/src/langium/workspace/file-not-found.ts +35 -0
  648. package/src/langium/workspace/file-system-provider.ts +234 -16
  649. package/src/langium/workspace/hydranium-langium-document-factory.ts +117 -0
  650. package/src/langium/workspace/hydranium-workspace-lock.ts +86 -2
  651. package/src/langium/workspace/hydranium-workspace-manager.ts +221 -16
  652. package/src/langium/workspace/in-memory-file-system-provider.ts +54 -23
  653. package/src/langium/workspace/index.ts +1 -0
  654. package/src/langium/workspace/initialize-workspace.ts +43 -5
  655. package/src/langium/workspace/langium-documents.ts +63 -5
  656. package/src/langium/workspace/persistent-file-system-provider.ts +15 -14
  657. package/src/langium/workspace/self-save-registry.ts +118 -0
  658. package/src/langium/workspace/virtual-document.ts +100 -19
  659. package/src/langium/workspace/write-lock-scope.ts +27 -12
  660. package/src/launcher/integrated-server.ts +3 -1
  661. package/src/locale/index.ts +10 -0
  662. package/src/locale/server-locale.ts +86 -0
  663. package/src/lsp/completion/hydranium-completion-provider.ts +82 -2
  664. package/src/lsp/connection-features.ts +67 -0
  665. package/src/lsp/diagnostics-connection.ts +56 -0
  666. package/src/lsp/hydranium-document-update-handler.ts +227 -111
  667. package/src/lsp/index.ts +3 -1
  668. package/src/lsp/lsp-latency.ts +62 -0
  669. package/src/lsp/semantic-token-provider.ts +74 -7
  670. package/src/lsp/shared-module.ts +4 -8
  671. package/src/lsp/start-language-server.ts +13 -7
  672. package/src/messages/carriers.ts +23 -15
  673. package/src/messages/index.ts +13 -1
  674. package/src/messages/renderer.ts +212 -0
  675. package/src/node/event-loop-monitor.ts +2 -1
  676. package/src/node/heap-ceiling.ts +108 -0
  677. package/src/node/index.ts +1 -1
  678. package/src/node/latency-from-env.ts +1 -1
  679. package/src/node/log-preamble-node.ts +20 -10
  680. package/src/node/measure-memory.ts +5 -4
  681. package/src/node/memory-monitor.ts +10 -10
  682. package/src/node/node-file-system-provider.ts +178 -56
  683. package/src/node/profile-capture.ts +16 -15
  684. package/src/node/profiling-run.ts +30 -8
  685. package/src/node/rename-over-open-readers.ts +94 -0
  686. package/src/node/server-diagnostics.ts +1 -1
  687. package/src/node/server-state-snapshot.ts +5 -5
  688. package/src/node/socket-launcher.ts +27 -11
  689. package/src/node/stdio-launcher.ts +22 -14
  690. package/src/testing/document-uri-policy-conformance.ts +1 -1
  691. package/src/testing/fake-document.ts +24 -5
  692. package/src/testing/index.ts +2 -1
  693. package/src/testing/langium-test-helpers.ts +1 -0
  694. package/src/testing/make-noop-shared-services.ts +50 -2
  695. package/src/testing/make-test-services.ts +125 -31
  696. package/src/testing/make-test-tracer.ts +26 -0
  697. package/src/testing/node/applied-edit-capture.ts +139 -0
  698. package/src/testing/node/index.ts +1 -0
  699. package/src/testing/node/lsp-harness.ts +2 -0
  700. package/src/testing/node/lsp-server-connection.ts +74 -117
  701. package/src/testing/node/scratch-workspace.ts +10 -5
  702. package/src/testing/node/spawned-server.ts +57 -3
  703. package/src/testing/node/unhandled-rejections.ts +31 -0
  704. package/src/testing/parse-semantic-root.ts +1 -1
  705. package/src/testing/playwright/flaky-network-proxy.ts +240 -0
  706. package/src/testing/playwright/index.ts +1 -0
  707. package/src/testing/playwright/server-log-capture.ts +63 -11
  708. package/src/testing/playwright/server-log-fixture.ts +46 -6
  709. package/src/testing/playwright/server-log-region.ts +32 -0
  710. package/src/testing/playwright/server-log-rename-reporter.ts +12 -1
  711. package/src/testing/run-update-pipeline.ts +6 -5
  712. package/src/testing/stub-ast-document-manager.ts +47 -128
  713. package/src/testing/stub-document-builder.ts +133 -18
  714. package/src/testing/stub-hydranium-text-documents.ts +184 -27
  715. package/src/testing/stub-langium-documents.ts +3 -2
  716. package/src/testing/stub-model-service.ts +11 -10
  717. package/src/testing/stub-self-save-registry.ts +1 -1
  718. package/src/testing/stub-service-registry.ts +1 -1
  719. package/src/testing/stub-writable-file-system.ts +3 -2
  720. package/src/util/connection-liveness.ts +67 -15
  721. package/src/util/environment.ts +9 -1
  722. package/lib/documents/language-client-text-shadow.d.ts +0 -101
  723. package/lib/documents/language-client-text-shadow.d.ts.map +0 -1
  724. package/lib/documents/language-client-text-shadow.js +0 -156
  725. package/lib/documents/language-client-text-shadow.js.map +0 -1
  726. package/lib/documents/self-save-registry.d.ts +0 -55
  727. package/lib/documents/self-save-registry.d.ts.map +0 -1
  728. package/lib/documents/self-save-registry.js.map +0 -1
  729. package/lib/lsp/instrument-connection.d.ts +0 -36
  730. package/lib/lsp/instrument-connection.d.ts.map +0 -1
  731. package/lib/lsp/instrument-connection.js +0 -62
  732. package/lib/lsp/instrument-connection.js.map +0 -1
  733. package/lib/node/process-memory.d.ts +0 -66
  734. package/lib/node/process-memory.d.ts.map +0 -1
  735. package/lib/node/process-memory.js +0 -252
  736. package/lib/node/process-memory.js.map +0 -1
  737. package/src/documents/language-client-text-shadow.ts +0 -175
  738. package/src/documents/self-save-registry.ts +0 -81
  739. package/src/lsp/instrument-connection.ts +0 -66
  740. package/src/node/process-memory.ts +0 -299
@@ -1 +1 @@
1
- {"version":3,"file":"ast-document-manager.d.ts","sourceRoot":"","sources":["../../src/documents/ast-document-manager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ast-document-manager.d.ts","sourceRoot":"","sources":["../../src/documents/ast-document-manager.ts"],"names":[],"mappings":"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"}
@@ -6,42 +6,22 @@
6
6
  *
7
7
  * SPDX-License-Identifier: MIT
8
8
  ********************************************************************************/
9
- import { DocumentState, UriUtils } from '@hydranium/langium';
9
+ import { asModelVersion, UNRECORDED_VERSION, describeErrorWithStack } from '@hydranium/protocol';
10
+ import { DocumentState, URI, UriUtils } from '@hydranium/langium';
11
+ import { ReentrantWriteLockError, isInsideWriteLock } from '../langium/workspace/write-lock-scope.js';
10
12
  import { Disposable } from 'vscode-languageserver';
11
13
  import { TextDocumentIdentifier } from 'vscode-languageserver-protocol';
12
- import { URI } from '@hydranium/langium';
13
- import { labelPhaseListener } from '../langium/document-builder/index.js';
14
14
  import { UNKNOWN_CLIENT_ID } from './client-ids.js';
15
15
  export var AstDocument;
16
16
  (function (AstDocument) {
17
17
  /**
18
- * Construct an {@link AstDocument} envelope. `diagnostics` defaults
19
- * to `[]` so test fixtures and the in-process pre-validated paths
20
- * don't need to repeat the empty array at every call site. Mirrors
21
- * `TransferDocument.create` on the wire side.
18
+ * Construct an {@link AstDocument} envelope, its version marked as coming
19
+ * from a read. `diagnostics` absent means not validated.
22
20
  */
23
- function create(uri, version, root, diagnostics = []) {
24
- return { uri, version, root, diagnostics };
21
+ function create(uri, version, root, diagnostics) {
22
+ return { uri, version: asModelVersion(version), root, ...(diagnostics === undefined ? {} : { diagnostics }) };
25
23
  }
26
24
  AstDocument.create = create;
27
- /**
28
- * Project a {@link LangiumDocument} into its {@link AstDocument}
29
- * envelope — the single place that reads `root` / `diagnostics` /
30
- * `version` / `uri` off a built document. Both the event path
31
- * ({@link AstDocumentManager.onUpdate} / `onSave`) and the read path
32
- * (`ModelService`'s snapshot accessors) go through here so the
33
- * field mapping lives once.
34
- *
35
- * The emitted `uri` is always the document's own `textDocument.uri` — the
36
- * canonical document-identity form (see {@link DocumentUriPolicy}). Events
37
- * carry that identity, not the subscriber's (possibly non-canonical) URI:
38
- * a subscriber already knows the URI it subscribed with, so the useful
39
- * thing to surface is the canonical one every other layer keys by.
40
- */
41
- function from(document) {
42
- return create(document.textDocument.uri, document.textDocument.version, document.parseResult.value, (document.diagnostics ?? []));
43
- }
44
- AstDocument.from = from;
45
25
  })(AstDocument || (AstDocument = {}));
46
26
  /**
47
27
  * Higher-level facade over {@link HydraniumTextDocuments} that speaks the
@@ -63,9 +43,48 @@ export var AstDocument;
63
43
  * resolution (the egress `applyEditToLanguageClient`) stay on
64
44
  * {@link HydraniumTextDocuments}, their owner.
65
45
  */
66
- export class AstDocumentManager {
46
+ export class DefaultAstDocumentManager {
67
47
  services;
48
+ /** The last `DocumentBuilder.update`'s URIs; the reason for a document the store does not track. */
68
49
  lastUpdate;
50
+ /**
51
+ * Canonical URIs a client has opened since the file was last deleted,
52
+ * whose versions the store keeps. One no client has opened keeps Langium's
53
+ * version `0` through every change of its content, so its version says
54
+ * nothing. Kept past the last close, since the store continues the version
55
+ * sequence on the next open; a delivery can land after that close.
56
+ */
57
+ trackedUris = new Set();
58
+ /**
59
+ * Per tracked URI, the version whose `Validated` listeners last all ran,
60
+ * which is the version an update event was delivered for. Dropped on
61
+ * deletion, so a file created again with the same text is changed again.
62
+ */
63
+ deliveredVersions = new Map();
64
+ /**
65
+ * Whose writes the build under way carries, set when it starts: the author
66
+ * of every open document's undelivered version, and the unknown-client id
67
+ * for a change no write explains, such as a deletion no session's delete
68
+ * made, a document no client has open, or a write that changed nothing.
69
+ * An undelivered version is one whose build has not validated it yet, so a
70
+ * write whose build was cancelled stays a cause of the build that takes
71
+ * over.
72
+ *
73
+ * Errs toward more than one cause, and so toward the unknown client, which
74
+ * a reader treats as foreign: an answer it repeats, never one it misses.
75
+ * A change no write explains counts for its own build only, so a build
76
+ * that takes over from a cancelled one loses it. One field for every build:
77
+ * a build started outside the workspace lock, such as a re-queue of an
78
+ * orphaned document, reads the causes of whichever build started last.
79
+ * An open document no build delivers, one a `shouldValidate` override
80
+ * skips, stays undelivered, so it is a cause of every build while open.
81
+ */
82
+ buildCauses = new Set();
83
+ /** Per canonical URI, the client whose {@link delete} of it is under way. */
84
+ deletions = new Map();
85
+ /** Per canonical URI, the newest save queued for it, which {@link coalesceSaves} lets older queued saves defer to. */
86
+ newestSaves = new Map();
87
+ coalesceSaves;
69
88
  textDocuments;
70
89
  fileSystemProvider;
71
90
  langiumDocs;
@@ -80,27 +99,42 @@ export class AstDocumentManager {
80
99
  this.documentBuilder = services.workspace.DocumentBuilder;
81
100
  this.uriPolicy = services.workspace.DocumentUriPolicy;
82
101
  this.tracer = services.Tracer.for(options.logName ?? 'AstDocumentManager').trace('instantiated');
83
- this.textDocuments.onDidOpen(event => this.open({ clientId: event.clientId, uri: event.document.uri, languageId: event.document.languageId }));
102
+ this.coalesceSaves = options.coalesceSaves ?? false;
103
+ this.textDocuments.onDidOpen(event => {
104
+ this.trackedUris.add(this.uriPolicy.canonicalUri(event.document.uri));
105
+ return this.open({ clientId: event.clientId, uri: event.document.uri, languageId: event.document.languageId });
106
+ });
84
107
  this.textDocuments.onDidClose(event => this.close({ clientId: event.clientId, uri: event.document.uri }));
85
108
  this.documentBuilder.onUpdate((changed, deleted) => {
86
109
  this.lastUpdate = { changed, deleted };
87
- });
88
- // Content transitions for CLOSED documents bypass the text store: the
89
- // last-close revert and watched-file changes rebuild from disk into a
90
- // factory-fresh text document carrying the factory's own version. At the
91
- // Parsed transition (the earliest phase with text, and one only re-read
92
- // documents pass through — cascade relinks re-enter later), reconcile the
93
- // store's persisted version sequence with the rebuilt content and
94
- // re-stamp the document so every downstream envelope (revert broadcast,
95
- // snapshot reads) carries the continued sequence. An empty-changes
96
- // update only re-stamps the version. Previously-untracked URIs exit on a
97
- // map lookup, so workspace-wide builds don't hash untouched documents.
98
- this.documentBuilder.onDocumentPhase(DocumentState.Parsed, labelPhaseListener(document => {
99
- const sequenceVersion = this.textDocuments.reconcileExternalContent(document.textDocument.uri, document.textDocument.getText());
100
- if (sequenceVersion !== undefined && document.textDocument.version !== sequenceVersion) {
101
- this.textDocuments.update(document.textDocument, [], sequenceVersion);
110
+ this.buildCauses.clear();
111
+ for (const textDocument of this.textDocuments.all()) {
112
+ if (!this.isDelivered(textDocument.uri, textDocument.version)) {
113
+ this.buildCauses.add(this.textDocuments.getAuthor(textDocument.uri, textDocument.version) ?? UNKNOWN_CLIENT_ID);
114
+ }
115
+ }
116
+ const unexplained = changed.some(uri => {
117
+ const textDocument = this.textDocuments.get(uri.toString());
118
+ return textDocument === undefined || this.isDelivered(textDocument.uri, textDocument.version);
119
+ });
120
+ if (unexplained) {
121
+ this.buildCauses.add(UNKNOWN_CLIENT_ID);
122
+ }
123
+ deleted.forEach(uri => this.buildCauses.add(this.attributeDeletion(uri.toString())));
124
+ // The only place a deletion is observable: `DocumentBuilder.update`
125
+ // removes a deleted document before it builds anything, so no phase
126
+ // listener ever sees it.
127
+ for (const uri of deleted) {
128
+ const key = this.uriPolicy.canonicalUri(uri.toString());
129
+ this.trackedUris.delete(key);
130
+ this.deliveredVersions.delete(key);
131
+ this.textDocuments.notifyDocumentDeleted(uri.toString());
102
132
  }
103
- }, 'AstDocumentManager.reconcileExternalContent'));
133
+ });
134
+ // Once every listener ran, not in a listener of its own: listeners after
135
+ // it could still be skipped by a cancel, and the next build would then
136
+ // report as rebuilt a version they never delivered.
137
+ this.documentBuilder.onDocumentPhaseDelivered(DocumentState.Validated, (document, version) => this.markDelivered(document, version));
104
138
  }
105
139
  /**
106
140
  * Resolve a `languageId` for a URI by delegating to the
@@ -130,82 +164,81 @@ export class AstDocumentManager {
130
164
  return languages.length === 1 ? languages[0].LanguageMetaData.languageId : 'plaintext';
131
165
  }
132
166
  /**
133
- * Subscribe to the save event of the document at `uri`. The callback fires only when the
134
- * URI of the saved document matches `uri` (compared by canonical form).
167
+ * The client that authored `document`'s current version, or `undefined` when
168
+ * no client wrote it: a document no client has open. A rebuild that keeps
169
+ * the version keeps its author, so this does not say who caused a build;
170
+ * {@link attributeUpdate} does.
171
+ * Honest about absence so a routing consumer tests `undefined` directly
172
+ * rather than against a sentinel; the presentation default
173
+ * ({@link UNKNOWN_CLIENT_ID}) is applied where an event needs a value.
135
174
  */
136
- onSave(uri, listener) {
137
- const target = this.uriPolicy.canonicalUri(uri);
138
- return this.textDocuments.onDidSave(async (event) => {
139
- if (this.uriPolicy.canonicalUri(event.document.uri) !== target) {
140
- return undefined;
141
- }
142
- // Look the document up by its canonical URI: the adopter's
143
- // `LangiumDocuments` keys by the canonical form, while the saved
144
- // event carries the (possibly symlinked) client-facing URI.
145
- const documentURI = UriUtils.toUri(target);
146
- if (documentURI !== undefined && this.langiumDocs.hasDocument(documentURI)) {
147
- const document = await this.langiumDocs.getOrCreateDocument(documentURI);
148
- return listener({
149
- document: this.toAstDocument(document),
150
- sourceClientId: event.clientId
151
- });
152
- }
153
- return undefined;
154
- });
155
- }
156
- /** Fires when `clientId` detaches from the document at `uri` (matched by canonical form). */
157
- onClientClosed(uri, clientId, listener) {
158
- const target = this.uriPolicy.canonicalUri(uri);
159
- return this.textDocuments.onDidClose(event => {
160
- if (event.clientId === clientId && this.uriPolicy.canonicalUri(event.document.uri) === target) {
161
- listener();
162
- }
163
- });
175
+ getAuthor(document) {
176
+ return this.textDocuments.getAuthor(document.textDocument.uri, document.textDocument.version);
164
177
  }
165
- /** Fires when the document at `uri` reaches `Validated` after each rebuild. */
166
- onUpdate(uri, listener) {
167
- const target = this.uriPolicy.canonicalUri(uri);
168
- const emitUpdate = (document) => {
169
- if (this.uriPolicy.canonicalUri(document.uri) !== target) {
170
- return;
171
- }
178
+ /**
179
+ * `'changed'` for the first delivery of the document's version, crediting
180
+ * its author; `'rebuilt'` for a later one, crediting nobody, since it echoes
181
+ * no write, and naming the build's single cause if it has one.
182
+ *
183
+ * A document the rule does not apply to (see {@link isTracked}) falls back
184
+ * to the last update: it is `'changed'` when its URI was passed to
185
+ * `DocumentBuilder.update`. An open document that a validating build skips,
186
+ * through a `shouldValidate` override, is never delivered, so each of its
187
+ * events is its author's change.
188
+ */
189
+ attributeUpdate(document) {
190
+ const key = this.uriPolicy.canonicalUri(document.uri.toString());
191
+ const changed = this.isTracked(key)
192
+ ? this.deliveredVersions.get(key) !== document.textDocument.version
193
+ : this.lastUpdate?.changed.some(uri => UriUtils.equals(uri, document.uri)) === true;
194
+ if (changed) {
172
195
  // Presentation boundary: the event field is a concrete `string`, so an
173
- // unauthored (framework-rebuilt) document surfaces the readable default
174
- // rather than `undefined` to subscribers and logs.
175
- const sourceClientId = this.getAuthor(document) ?? UNKNOWN_CLIENT_ID;
176
- const event = {
177
- document: this.toAstDocument(document),
178
- sourceClientId,
179
- reason: this.lastUpdate?.changed.find(changed => UriUtils.equals(changed, document.uri))
180
- ? 'changed'
181
- : this.lastUpdate?.deleted.find(deleted => UriUtils.equals(deleted, document.uri))
182
- ? 'deleted'
183
- : 'rebuilt'
184
- };
185
- this.tracer.with(uri).trace(`emitUpdate start: source=${sourceClientId}, reason=${event.reason}`);
186
- listener(event);
187
- this.tracer.with(uri).trace('emitUpdate listener returned');
188
- };
189
- return this.documentBuilder.onDocumentPhase(DocumentState.Validated, labelPhaseListener(emitUpdate, 'AstDocumentManager.onUpdate'));
196
+ // unauthored document surfaces the readable default rather than
197
+ // `undefined` to subscribers and logs.
198
+ const author = this.getAuthor(document) ?? UNKNOWN_CLIENT_ID;
199
+ return { reason: 'changed', sourceClientId: author, causedBy: author };
200
+ }
201
+ const [cause] = this.buildCauses;
202
+ return { reason: 'rebuilt', sourceClientId: UNKNOWN_CLIENT_ID, causedBy: this.buildCauses.size === 1 ? cause : UNKNOWN_CLIENT_ID };
190
203
  }
191
204
  /**
192
- * The client that authored `document`'s current version, or `undefined` when
193
- * no client wrote it — a framework-internal rebuild (workspace startup, a
194
- * cascade relink, a `didClose`-reload) or a genuine author gap. Honest about
195
- * absence so routing consumers (`ModelService.isNonLanguageClientEdit`)
196
- * test `undefined` directly rather than against a sentinel; the presentation
197
- * default ({@link UNKNOWN_CLIENT_ID}) is applied at the boundary that needs a
198
- * concrete value (the `onUpdate` event's `sourceClientId`, the data-server's
199
- * `resolveSourceClientId`).
205
+ * Whether the version rule applies to `uri`: the store keeps its version,
206
+ * and rebuilds validate. With `updateBuildOptions.validation` off no version
207
+ * is ever delivered, and the rule would report every event of an open
208
+ * document as its author's change.
200
209
  */
201
- getAuthor(document) {
202
- return this.textDocuments.getAuthor(document.textDocument.uri, document.textDocument.version);
210
+ isTracked(uri) {
211
+ return this.keepsVersion(uri) && Boolean(this.documentBuilder.updateBuildOptions.validation);
212
+ }
213
+ /**
214
+ * Whether the store keeps `uri`'s version: a client opened it since its
215
+ * file was last deleted, or has it open still, as an editor keeps a
216
+ * deleted file's buffer.
217
+ */
218
+ keepsVersion(uri) {
219
+ return this.trackedUris.has(uri) || this.textDocuments.isOpen(uri);
220
+ }
221
+ /**
222
+ * Record that `version` of `document` was delivered, when the store tracks
223
+ * it. The version the listeners saw, not the document's current one: a
224
+ * write during them has moved that on, and marking it would report the
225
+ * write's own build as rebuilt.
226
+ */
227
+ markDelivered(document, version) {
228
+ const key = this.uriPolicy.canonicalUri(document.uri.toString());
229
+ if (this.keepsVersion(key)) {
230
+ this.deliveredVersions.set(key, version);
231
+ }
232
+ }
233
+ /** Whether `version` of `uri` was delivered. */
234
+ isDelivered(uri, version) {
235
+ return this.deliveredVersions.get(this.uriPolicy.canonicalUri(uri)) === version;
203
236
  }
204
237
  async open(args) {
205
238
  // `open()` is the RPC-level "ensure this document is loaded" call. It is issued
206
- // by a view attaching, but also internally by `update()` / `save()` and by every
207
- // additional client attaching to the same URI, including the several sub-editors
208
- // a composite view opens. When the document is already loaded there is nothing to
239
+ // by a session opening the document, including by every additional client
240
+ // attaching to the same URI and the several sub-editors a composite view
241
+ // opens. When the document is already loaded there is nothing to
209
242
  // do here but hand back the close-disposable — callers that want the current
210
243
  // state read it from this method's surrounding RPC response, not from a re-build.
211
244
  //
@@ -218,10 +251,34 @@ export class AstDocumentManager {
218
251
  // transiently breaks cross-document linking mid-rebuild (a dependent briefly
219
252
  // seeing an `extends`/`type` reference unresolved). And because the constructor
220
253
  // wires `onDidOpen -> this.open`, it would fire a second, identical rebuild on
221
- // every first open. So an already-open `open()` is a no-op.
254
+ // every first open.
255
+ //
256
+ // So an already-open `open()` records the attaching client's open and nothing
257
+ // else. The open is per `(uri, clientId)` and the store releases the document
258
+ // only once none is left, so skipping it lets the first client's close tear down a document
259
+ // another client is still reading. A document waiting out the release grace
260
+ // is still loaded: a client lost from it within its own grace attaches and
261
+ // keeps its text, and for any other client the attach releases it, so the
262
+ // open reads the file.
263
+ if (this.isOpen(args.uri)) {
264
+ this.textDocuments.attachClient(args.uri, args.clientId);
265
+ }
222
266
  if (!this.isOpen(args.uri)) {
223
267
  const textDocument = await this.createDocumentFromTextOrFileSystem(args.uri, args.languageId, args.version, args.text);
268
+ const creates = !this.isOpen(args.uri);
224
269
  this.textDocuments.notifyDidOpenTextDocument({ textDocument }, args.clientId);
270
+ if (creates && args.text !== undefined) {
271
+ // Text the caller supplies was not read from the file, so no file
272
+ // is assumed: the document is dirty until its first save, whatever
273
+ // the file holds.
274
+ this.textDocuments.markCreated(args.uri);
275
+ }
276
+ const built = this.getDocument(args.uri);
277
+ if (creates && built) {
278
+ // Without an LSP head nothing else builds the opened text. Nothing
279
+ // waits on the build either, so its failure ends here.
280
+ this.services.workspace.VersionSyncService.syncTo(built.uri, this.textDocuments.version(args.uri))?.catch((error) => this.tracer.with(args.uri).error(`The build of the opened text failed. ${describeErrorWithStack(error)}`));
281
+ }
225
282
  }
226
283
  return Disposable.create(() => this.close(args));
227
284
  }
@@ -253,27 +310,119 @@ export class AstDocumentManager {
253
310
  * callers don't need to pass it — the manager owns content and version
254
311
  * sequencing.
255
312
  *
313
+ * The text is taken synchronously, before the save waits in the file's task
314
+ * queue; the compare and the write run in the queue. Taken later, a save
315
+ * that waits behind another writes whatever the store holds when its turn
316
+ * comes, edits made after the call included, and announces that text under
317
+ * its own client id.
318
+ *
319
+ * **The write is skipped when the file already holds that text; the
320
+ * notification is not.** A save announces that the content is on disk, which
321
+ * is true either way — so a subscriber clearing a dirty marker or reacting to
322
+ * a persist behaves the same, while an mtime is not moved for byte-identical
323
+ * content that a downstream mtime-keyed build would then read as new work.
324
+ *
256
325
  * Throws if no document is open for `uri`.
257
326
  */
258
327
  async save(uri, clientId) {
259
- const document = this.textDocuments.get(uri);
328
+ // Canonical throughout: the write and the read that gates it must address
329
+ // the same file the store was keyed by, or a divergent spelling compares
330
+ // one file and writes another.
331
+ const canonical = this.uriPolicy.canonicalUri(uri);
332
+ const document = this.textDocuments.get(canonical);
260
333
  if (!document) {
261
334
  throw new Error(`Document ${uri} hasn't been opened for saving yet`);
262
335
  }
263
336
  const text = document.getText();
264
- await this.tracer.with(uri).time(`Write file (${text.length} bytes, from ${clientId})`,
265
- // Async write so a slow disk does not block the event loop for the duration of the fs call.
266
- () => this.fileSystemProvider.writeFile(UriUtils.toUri(uri), text), 'debug');
337
+ const version = document.version;
338
+ let supersededBy;
339
+ const saved = this.services.workspace.FileSystemTaskQueue.enqueue(canonical, async () => {
340
+ const newest = this.newestSaves.get(canonical);
341
+ if (this.coalesceSaves && newest !== saved) {
342
+ supersededBy = newest;
343
+ return;
344
+ }
345
+ await this.writeSave(canonical, text, clientId);
346
+ })
347
+ .then(() => supersededBy ?? version)
348
+ .finally(() => {
349
+ if (this.newestSaves.get(canonical) === saved) {
350
+ this.newestSaves.delete(canonical);
351
+ }
352
+ });
353
+ this.newestSaves.set(canonical, saved);
354
+ return saved;
355
+ }
356
+ async delete(uri, clientId) {
357
+ const canonical = this.uriPolicy.canonicalUri(uri);
358
+ const target = UriUtils.toUri(canonical);
359
+ // The builds below wait for a holder of the write lock, which would be
360
+ // waiting for this delete.
361
+ if (isInsideWriteLock()) {
362
+ throw new ReentrantWriteLockError(canonical);
363
+ }
364
+ // The mark holds one client: a second delete would share it, and the
365
+ // first to settle would clear it under the other.
366
+ if (this.deletions.has(canonical)) {
367
+ throw new Error(`Cannot delete ${uri}: a delete of it is under way`);
368
+ }
369
+ this.deletions.set(canonical, clientId);
370
+ try {
371
+ // A document no build has reached yet is not registered, and the
372
+ // deletion build would remove nothing and leave every open of it.
373
+ if (!this.langiumDocs.getDocument(target)) {
374
+ await this.documentBuilder.scheduleUpdate([target], []);
375
+ }
376
+ await this.services.workspace.FileSystemTaskQueue.enqueue(canonical, () => this.fileSystemProvider.deleteFile(target));
377
+ // Langium removes the document before the build's first await, so a
378
+ // failure is the dependents' build, and reaches no one else.
379
+ await this.documentBuilder
380
+ .scheduleUpdate([], [target])
381
+ .catch((error) => this.tracer.with(canonical).error(`The build after a deletion failed. ${describeErrorWithStack(error)}`));
382
+ // A change requested before that build started merges over the
383
+ // deletion, and the document lives on; the deleting client takes it as
384
+ // gone, so its open ends here.
385
+ if (this.textDocuments.isOpenInClient(canonical, clientId)) {
386
+ await this.close({ uri: canonical, clientId });
387
+ }
388
+ }
389
+ finally {
390
+ this.deletions.delete(canonical);
391
+ }
392
+ }
393
+ isDeleting(uri) {
394
+ return this.deletions.has(this.uriPolicy.canonicalUri(uri));
395
+ }
396
+ attributeDeletion(uri) {
397
+ return this.deletions.get(this.uriPolicy.canonicalUri(uri)) ?? UNKNOWN_CLIENT_ID;
398
+ }
399
+ /** Write `text` to `uri` unless the file already holds it, then announce the save. Runs inside the file's task queue. */
400
+ async writeSave(uri, text, clientId) {
401
+ if (!(await this.matchesDisk(uri, text))) {
402
+ await this.tracer.with(uri).time(`Write file (${text.length} bytes, from ${clientId})`,
403
+ // Async write so a slow disk does not block the event loop for the duration of the fs call.
404
+ () => this.fileSystemProvider.writeFile(UriUtils.toUri(uri), text), 'debug');
405
+ }
267
406
  this.textDocuments.notifyDidSaveTextDocument({ textDocument: TextDocumentIdentifier.create(uri), text }, clientId);
268
407
  }
408
+ /**
409
+ * Whether the file at `uri` already holds `text`.
410
+ *
411
+ * Compared by CONTENT rather than against a remembered version, so a write
412
+ * from outside this server is still corrected: a version this manager already
413
+ * saved says nothing about what is on disk now. `false` when the file cannot
414
+ * be read at all, which is the answer that writes — a document whose file does
415
+ * not exist yet is exactly the one a first save has to create.
416
+ */
417
+ async matchesDisk(uri, text) {
418
+ return this.fileSystemProvider
419
+ .readFile(UriUtils.toUri(uri))
420
+ .then(onDisk => onDisk === text)
421
+ .catch(() => false);
422
+ }
269
423
  isOpen(uri) {
270
424
  return !!this.textDocuments.get(uri);
271
425
  }
272
- /** True if the URI was in the directly-changed set of the most recent build (not just affected). */
273
- isDirectChange(uri) {
274
- const canonical = this.uriPolicy.canonicalUri(uri);
275
- return this.lastUpdate?.changed.some(changed => this.uriPolicy.canonicalUri(changed) === canonical) ?? false;
276
- }
277
426
  /**
278
427
  * The `LangiumDocument` for an externally-supplied URI, looked up by its
279
428
  * canonical identity. Folds the `getDocument(toUri(canonicalUri(uri)))` idiom
@@ -285,18 +434,29 @@ export class AstDocumentManager {
285
434
  return this.langiumDocs.getDocument(UriUtils.toUri(this.uriPolicy.canonicalUri(uri)));
286
435
  }
287
436
  async createDocumentFromTextOrFileSystem(uri, languageId = this.resolveLanguageId(uri), version = 0, text) {
288
- return { uri, languageId, version, text: text ?? (await this.readFile(uri)) };
289
- }
290
- async readFile(uri) {
291
- return this.fileSystemProvider.readFile(UriUtils.toUri(uri));
437
+ // Read in the file's task queue: a read beside a queued save of the file
438
+ // returns the text from before it, and the document then opens on that.
439
+ return {
440
+ uri,
441
+ languageId,
442
+ version,
443
+ text: text ??
444
+ (await this.services.workspace.FileSystemTaskQueue.enqueue(uri, () => this.fileSystemProvider.readFile(UriUtils.toUri(uri))))
445
+ };
292
446
  }
293
447
  /**
294
- * Hook for subclasses that want to re-shape the emitted document (e.g. inject
295
- * a custom-typed `diagnostics` field). The default delegates to
296
- * {@link AstDocument.from}, the shared LangiumDocument→envelope projection.
448
+ * Events and the model service's snapshot reads both come through here, so
449
+ * an override that re-shapes the document re-shapes both.
297
450
  */
298
451
  toAstDocument(document) {
299
- return AstDocument.from(document);
452
+ const uri = document.textDocument.uri;
453
+ const root = document.parseResult.value;
454
+ const ledger = this.services.workspace.ModelLedger;
455
+ const version = ledger.versionOf(root);
456
+ if (version === UNRECORDED_VERSION && !ledger.isPlaceholder(root)) {
457
+ this.tracer.with(uri).warn('No model version recorded for the root: it was built outside the document factory');
458
+ }
459
+ return AstDocument.create(uri, version, root, document.diagnostics);
300
460
  }
301
461
  }
302
462
  //# sourceMappingURL=ast-document-manager.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ast-document-manager.js","sourceRoot":"","sources":["../../src/documents/ast-document-manager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ast-document-manager.js","sourceRoot":"","sources":["../../src/documents/ast-document-manager.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF,OAAO,EAOJ,cAAc,EAGd,kBAAkB,EAClB,sBAAsB,EACxB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAgB,aAAa,EAA+C,GAAG,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAI7H,OAAO,EAAE,uBAAuB,EAAE,iBAAiB,EAAE,MAAM,0CAA0C,CAAC;AACtG,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,sBAAsB,EAAyB,MAAM,gCAAgC,CAAC;AAI/F,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAuCpD,MAAM,KAAW,WAAW,CAa3B;AAbD,WAAiB,WAAW;IACzB;;;OAGG;IACH,SAAgB,MAAM,CACnB,GAAW,EACX,OAAe,EACf,IAAU,EACV,WAA2B;QAE3B,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,cAAc,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,CAAC;IACjH,CAAC;IAPe,YAAA,MAAM,SAOrB,CAAA;AACJ,CAAC,EAbgB,WAAW,KAAX,WAAW,QAa3B;AA+HD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,OAAO,yBAAyB;IAuDb,QAAQ;IAnD9B,oGAAoG;IAC1F,UAAU,CAAc;IAClC;;;;;;OAMG;IACgB,WAAW,GAAG,IAAI,GAAG,EAAgB,CAAC;IACzD;;;;OAIG;IACgB,iBAAiB,GAAG,IAAI,GAAG,EAAwB,CAAC;IACvE;;;;;;;;;;;;;;;;;OAiBG;IACgB,WAAW,GAAG,IAAI,GAAG,EAAU,CAAC;IAEnD,6EAA6E;IAC1D,SAAS,GAAG,IAAI,GAAG,EAAwB,CAAC;IAE/D,sHAAsH;IACnG,WAAW,GAAG,IAAI,GAAG,EAAsC,CAAC;IAC5D,aAAa,CAAU;IAEvB,aAAa,CAAuC;IACpD,kBAAkB,CAA6B;IAC/C,WAAW,CAAmB;IAC9B,eAAe,CAA2B;IAC1C,SAAS,CAAoB;IAC7B,MAAM,CAAS;IAElC,YACsB,QAA8B,EACjD,OAAO,GAA8B,EAAE;wBADpB,QAAQ;QAG3B,IAAI,CAAC,aAAa,GAAG,QAAQ,CAAC,SAAS,CAAC,aAAa,CAAC;QACtD,IAAI,CAAC,kBAAkB,GAAG,QAAQ,CAAC,SAAS,CAAC,kBAAkB,CAAC;QAChE,IAAI,CAAC,WAAW,GAAG,QAAQ,CAAC,SAAS,CAAC,gBAAgB,CAAC;QACvD,IAAI,CAAC,eAAe,GAAG,QAAQ,CAAC,SAAS,CAAC,eAAe,CAAC;QAC1D,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC,SAAS,CAAC,iBAAiB,CAAC;QACtD,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,IAAI,oBAAoB,CAAC,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;QACjG,IAAI,CAAC,aAAa,GAAG,OAAO,CAAC,aAAa,IAAI,KAAK,CAAC;QACpD,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE;YAClC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;YACtE,OAAO,IAAI,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,GAAG,EAAE,KAAK,CAAC,QAAQ,CAAC,GAAG,EAAE,UAAU,EAAE,KAAK,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC;QAClH,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,GAAG,EAAE,KAAK,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;QAC1G,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE;YAChD,IAAI,CAAC,UAAU,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC;YACvC,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC;YACzB,KAAK,MAAM,YAAY,IAAI,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,EAAE,CAAC;gBACnD,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,GAAG,EAAE,YAAY,CAAC,OAAO,CAAC,EAAE,CAAC;oBAC7D,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,YAAY,CAAC,GAAG,EAAE,YAAY,CAAC,OAAO,CAAC,IAAI,iBAAiB,CAAC,CAAC;gBACnH,CAAC;YACJ,CAAC;YACD,MAAM,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;gBACpC,MAAM,YAAY,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC;gBAC5D,OAAO,YAAY,KAAK,SAAS,IAAI,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,GAAG,EAAE,YAAY,CAAC,OAAO,CAAC,CAAC;YACjG,CAAC,CAAC,CAAC;YACH,IAAI,WAAW,EAAE,CAAC;gBACf,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;YAC3C,CAAC;YACD,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC;YACrF,oEAAoE;YACpE,oEAAoE;YACpE,yBAAyB;YACzB,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE,CAAC;gBACzB,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC;gBACxD,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;gBAC7B,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;gBACnC,IAAI,CAAC,aAAa,CAAC,qBAAqB,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC;YAC5D,CAAC;QACJ,CAAC,CAAC,CAAC;QACH,yEAAyE;QACzE,uEAAuE;QACvE,oDAAoD;QACpD,IAAI,CAAC,eAAe,CAAC,wBAAwB,CAAC,aAAa,CAAC,SAAS,EAAE,CAAC,QAAQ,EAAE,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC;IACxI,CAAC;IAED;;;;;;;;;;;;;;;;;;OAkBG;IACO,iBAAiB,CAAC,GAAW;QACpC,MAAM,MAAM,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC9B,IAAI,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE,CAAC;YACrD,OAAO,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,gBAAgB,CAAC,UAAU,CAAC;QACxF,CAAC;QACD,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,GAAG,CAAC;QACpD,OAAO,SAAS,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC,CAAC,WAAW,CAAC;IAC1F,CAAC;IAED;;;;;;;;OAQG;IACH,SAAS,CAAC,QAAyB;QAChC,OAAO,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,QAAQ,CAAC,YAAY,CAAC,GAAG,EAAE,QAAQ,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;IACjG,CAAC;IAED;;;;;;;;;;OAUG;IACH,eAAe,CAAC,QAAyB;QACtC,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC;QACjE,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC;YAChC,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,QAAQ,CAAC,YAAY,CAAC,OAAO;YACnE,CAAC,CAAC,IAAI,CAAC,UAAU,EAAE,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,KAAK,IAAI,CAAC;QACvF,IAAI,OAAO,EAAE,CAAC;YACX,uEAAuE;YACvE,gEAAgE;YAChE,uCAAuC;YACvC,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,iBAAiB,CAAC;YAC7D,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC;QAC1E,CAAC;QACD,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC;QACjC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,cAAc,EAAE,iBAAiB,EAAE,QAAQ,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,iBAAiB,EAAE,CAAC;IACtI,CAAC;IAED;;;;;OAKG;IACO,SAAS,CAAC,GAAiB;QAClC,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC,kBAAkB,CAAC,UAAU,CAAC,CAAC;IAChG,CAAC;IAED;;;;OAIG;IACO,YAAY,CAAC,GAAiB;QACrC,OAAO,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IACtE,CAAC;IAED;;;;;OAKG;IACO,aAAa,CAAC,QAAyB,EAAE,OAAe;QAC/D,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC;QACjE,IAAI,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC;YAC1B,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;QAC5C,CAAC;IACJ,CAAC;IAED,gDAAgD;IACtC,WAAW,CAAC,GAAW,EAAE,OAAe;QAC/C,OAAO,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,KAAK,OAAO,CAAC;IACnF,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,IAAmB;QAC3B,gFAAgF;QAChF,0EAA0E;QAC1E,yEAAyE;QACzE,iEAAiE;QACjE,6EAA6E;QAC7E,kFAAkF;QAClF,EAAE;QACF,+EAA+E;QAC/E,gEAAgE;QAChE,yEAAyE;QACzE,0EAA0E;QAC1E,gFAAgF;QAChF,uEAAuE;QACvE,6EAA6E;QAC7E,gFAAgF;QAChF,+EAA+E;QAC/E,oBAAoB;QACpB,EAAE;QACF,8EAA8E;QAC9E,8EAA8E;QAC9E,4FAA4F;QAC5F,4EAA4E;QAC5E,2EAA2E;QAC3E,0EAA0E;QAC1E,uBAAuB;QACvB,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;YACzB,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC5D,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;YAC1B,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,kCAAkC,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;YACvH,MAAM,OAAO,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACvC,IAAI,CAAC,aAAa,CAAC,yBAAyB,CAAC,EAAE,YAAY,EAAE,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;YAC9E,IAAI,OAAO,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;gBACtC,kEAAkE;gBAClE,mEAAmE;gBACnE,kBAAkB;gBAClB,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAC5C,CAAC;YACD,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACzC,IAAI,OAAO,IAAI,KAAK,EAAE,CAAC;gBACpB,mEAAmE;gBACnE,uDAAuD;gBACvD,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,kBAAkB,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,KAAc,EAAE,EAAE,CAC1H,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,wCAAwC,sBAAsB,CAAC,KAAK,CAAC,EAAE,CAAC,CAC3G,CAAC;YACL,CAAC;QACJ,CAAC;QACD,OAAO,UAAU,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;IACpD,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,IAAoB;QAC7B,IAAI,CAAC,aAAa,CAAC,0BAA0B,CAAC,EAAE,YAAY,EAAE,sBAAsB,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC3H,CAAC;IAED;;;;;;;;;;OAUG;IACH,KAAK,CAAC,MAAM,CAAC,GAAW,EAAE,IAAY,EAAE,QAAgB;QACrD,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;YACrB,MAAM,IAAI,KAAK,CAAC,YAAY,GAAG,sCAAsC,CAAC,CAAC;QAC1E,CAAC;QACD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,2BAA2B,IAAI,CAAC,MAAM,gBAAgB,QAAQ,GAAG,CAAC,CAAC;QAC/F,OAAO,IAAI,CAAC,aAAa,CAAC,kBAAkB,CAAC,GAAG,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;IACrE,CAAC;IAED;;;;;;;;;;;;;;;;;;;;OAoBG;IACH,KAAK,CAAC,IAAI,CAAC,GAAW,EAAE,QAAgB;QACrC,0EAA0E;QAC1E,yEAAyE;QACzE,+BAA+B;QAC/B,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;QACnD,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QACnD,IAAI,CAAC,QAAQ,EAAE,CAAC;YACb,MAAM,IAAI,KAAK,CAAC,YAAY,GAAG,oCAAoC,CAAC,CAAC;QACxE,CAAC;QACD,MAAM,IAAI,GAAG,QAAQ,CAAC,OAAO,EAAE,CAAC;QAChC,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC;QACjC,IAAI,YAA8C,CAAC;QACnD,MAAM,KAAK,GAAyB,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,mBAAmB,CAAC,OAAO,CAAC,SAAS,EAAE,KAAK,IAAI,EAAE;YAC3G,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;YAC/C,IAAI,IAAI,CAAC,aAAa,IAAI,MAAM,KAAK,KAAK,EAAE,CAAC;gBAC1C,YAAY,GAAG,MAAM,CAAC;gBACtB,OAAO;YACV,CAAC;YACD,MAAM,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;QACnD,CAAC,CAAC;aACE,IAAI,CAAC,GAAG,EAAE,CAAC,YAAY,IAAI,OAAO,CAAC;aACnC,OAAO,CAAC,GAAG,EAAE;YACX,IAAI,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,SAAS,CAAC,KAAK,KAAK,EAAE,CAAC;gBAC7C,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;YACtC,CAAC;QACJ,CAAC,CAAC,CAAC;QACN,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;QACvC,OAAO,KAAK,CAAC;IAChB,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,GAAW,EAAE,QAAgB;QACvC,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;QACnD,MAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QACzC,uEAAuE;QACvE,2BAA2B;QAC3B,IAAI,iBAAiB,EAAE,EAAE,CAAC;YACvB,MAAM,IAAI,uBAAuB,CAAC,SAAS,CAAC,CAAC;QAChD,CAAC;QACD,qEAAqE;QACrE,kDAAkD;QAClD,IAAI,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;YACjC,MAAM,IAAI,KAAK,CAAC,iBAAiB,GAAG,+BAA+B,CAAC,CAAC;QACxE,CAAC;QACD,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;QACxC,IAAI,CAAC;YACF,iEAAiE;YACjE,kEAAkE;YAClE,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE,CAAC;gBACzC,MAAM,IAAI,CAAC,eAAe,CAAC,cAAc,CAAC,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC;YAC3D,CAAC;YACD,MAAM,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,mBAAmB,CAAC,OAAO,CAAC,SAAS,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,kBAAkB,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC;YACvH,oEAAoE;YACpE,6DAA6D;YAC7D,MAAM,IAAI,CAAC,eAAe;iBACtB,cAAc,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC;iBAC5B,KAAK,CAAC,CAAC,KAAc,EAAE,EAAE,CACvB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,sCAAsC,sBAAsB,CAAC,KAAK,CAAC,EAAE,CAAC,CAC1G,CAAC;YACL,+DAA+D;YAC/D,uEAAuE;YACvE,+BAA+B;YAC/B,IAAI,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,SAAS,EAAE,QAAQ,CAAC,EAAE,CAAC;gBAC1D,MAAM,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,CAAC;YAClD,CAAC;QACJ,CAAC;gBAAS,CAAC;YACR,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QACpC,CAAC;IACJ,CAAC;IAED,UAAU,CAAC,GAAW;QACnB,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC;IAC/D,CAAC;IAED,iBAAiB,CAAC,GAAW;QAC1B,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,IAAI,iBAAiB,CAAC;IACpF,CAAC;IAED,yHAAyH;IAC/G,KAAK,CAAC,SAAS,CAAC,GAAiB,EAAE,IAAY,EAAE,QAAgB;QACxE,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,WAAW,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC;YACxC,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAC7B,eAAe,IAAI,CAAC,MAAM,gBAAgB,QAAQ,GAAG;YACrD,4FAA4F;YAC5F,GAAG,EAAE,CAAC,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,EAClE,OAAO,CACT,CAAC;QACL,CAAC;QACD,IAAI,CAAC,aAAa,CAAC,yBAAyB,CAAC,EAAE,YAAY,EAAE,sBAAsB,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,EAAE,QAAQ,CAAC,CAAC;IACtH,CAAC;IAED;;;;;;;;OAQG;IACO,KAAK,CAAC,WAAW,CAAC,GAAW,EAAE,IAAY;QAClD,OAAO,IAAI,CAAC,kBAAkB;aAC1B,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;aAC7B,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,KAAK,IAAI,CAAC;aAC/B,KAAK,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC;IAC1B,CAAC;IAED,MAAM,CAAC,GAAW;QACf,OAAO,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACxC,CAAC;IAED;;;;;;OAMG;IACH,WAAW,CAAC,GAAW;QACpB,OAAO,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACzF,CAAC;IAES,KAAK,CAAC,kCAAkC,CAC/C,GAAW,EACX,UAAU,GAAW,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,EAChD,OAAO,GAAG,CAAC,EACX,IAAa;QAEb,yEAAyE;QACzE,wEAAwE;QACxE,OAAO;YACJ,GAAG;YACH,UAAU;YACV,OAAO;YACP,IAAI,EACD,IAAI;gBACJ,CAAC,MAAM,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,mBAAmB,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;SAClI,CAAC;IACL,CAAC;IAED;;;OAGG;IACH,aAAa,CAAC,QAAyB;QACpC,MAAM,GAAG,GAAG,QAAQ,CAAC,YAAY,CAAC,GAAG,CAAC;QACtC,MAAM,IAAI,GAAG,QAAQ,CAAC,WAAW,CAAC,KAAa,CAAC;QAChD,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,WAAW,CAAC;QACnD,MAAM,OAAO,GAAG,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QACvC,IAAI,OAAO,KAAK,kBAAkB,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC;YACjE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,mFAAmF,CAAC,CAAC;QACnH,CAAC;QACD,OAAO,WAAW,CAAC,MAAM,CAAoB,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,CAAC,WAAwC,CAAC,CAAC;IACvH,CAAC;CACH"}
@@ -7,24 +7,10 @@
7
7
  * SPDX-License-Identifier: MIT
8
8
  ********************************************************************************/
9
9
  /**
10
- * Well-known client-kind identifiers used across the multi-client framework.
11
- *
12
- * The framework tracks each document as belonging to one or more "clients"
13
- * — typically an LSP-text-client (Monaco, VS Code, etc.), a GLSP diagram
14
- * client, and/or a structured-form client. Each kind carries a stable id so
15
- * the server can route outbound corrections, edits, and notifications to the
16
- * right transport.
17
- */
18
- /** Identifier for an LSP-text client (Monaco, VS Code, …). */
19
- export declare const LANGUAGE_CLIENT_ID = "language-client";
20
- /** Fallback identifier when a document's author is unknown (e.g. cold workspace-init load). */
21
- export declare const UNKNOWN_CLIENT_ID = "unknown";
22
- /**
23
- * Synthetic author id on the `onDocumentUpdated` broadcast a data-server
24
- * emits after the LAST client closed a document and the framework rebuilt it
25
- * from its disk content (discarding unsaved in-session edits). Not a real
26
- * client: it lets consumers distinguish the revert broadcast from
27
- * client-authored updates.
10
+ * Re-export, because these are WIRE values and the side that has to recognise
11
+ * them is the client. They are defined in `@hydranium/protocol` so a frontend
12
+ * can name them without depending on the server tier; this path stays so
13
+ * server-side code keeps importing them from where it already does.
28
14
  */
29
- export declare const REVERT_ON_CLOSE_CLIENT_ID = "revert-on-close";
15
+ export { FRAMEWORK_CLIENT_IDS, LANGUAGE_CLIENT_ID, DOCUMENT_RELEASE_CLIENT_ID, UNKNOWN_CLIENT_ID } from '@hydranium/protocol';
30
16
  //# sourceMappingURL=client-ids.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"client-ids.d.ts","sourceRoot":"","sources":["../../src/documents/client-ids.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF;;;;;;;;GAQG;AAEH,8DAA8D;AAC9D,eAAO,MAAM,kBAAkB,oBAAoB,CAAC;AAEpD,+FAA+F;AAC/F,eAAO,MAAM,iBAAiB,YAAY,CAAC;AAE3C;;;;;;GAMG;AACH,eAAO,MAAM,yBAAyB,oBAAoB,CAAC"}
1
+ {"version":3,"file":"client-ids.d.ts","sourceRoot":"","sources":["../../src/documents/client-ids.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF;;;;;GAKG;AACH,OAAO,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,0BAA0B,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC"}