@hydranium/core 1.0.0-next.23 → 1.0.0-next.230

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 (657) hide show
  1. package/README.md +21 -13
  2. package/lib/documents/ast-document-manager.d.ts +219 -122
  3. package/lib/documents/ast-document-manager.d.ts.map +1 -1
  4. package/lib/documents/ast-document-manager.js +241 -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 +79 -0
  19. package/lib/documents/dirty-state-tracker.d.ts.map +1 -0
  20. package/lib/documents/dirty-state-tracker.js +69 -0
  21. package/lib/documents/dirty-state-tracker.js.map +1 -0
  22. package/lib/documents/document-release-handler.d.ts +179 -0
  23. package/lib/documents/document-release-handler.d.ts.map +1 -0
  24. package/lib/documents/document-release-handler.js +283 -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 +399 -282
  35. package/lib/documents/hydranium-text-documents.d.ts.map +1 -1
  36. package/lib/documents/hydranium-text-documents.js +816 -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 +283 -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 +134 -0
  55. package/lib/documents/version-sync-service.d.ts.map +1 -0
  56. package/lib/documents/version-sync-service.js +171 -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.map +1 -1
  63. package/lib/langium/ast-extension/ast-extension-service.js.map +1 -1
  64. package/lib/langium/ast-extension/ast-node-builder.d.ts +32 -9
  65. package/lib/langium/ast-extension/ast-node-builder.d.ts.map +1 -1
  66. package/lib/langium/ast-extension/ast-node-builder.js +60 -22
  67. package/lib/langium/ast-extension/ast-node-builder.js.map +1 -1
  68. package/lib/langium/bootstrap.d.ts +23 -16
  69. package/lib/langium/bootstrap.d.ts.map +1 -1
  70. package/lib/langium/bootstrap.js +66 -28
  71. package/lib/langium/bootstrap.js.map +1 -1
  72. package/lib/langium/build-phase-pass/build-phase-pass-service.d.ts.map +1 -1
  73. package/lib/langium/build-phase-pass/build-phase-pass-service.js.map +1 -1
  74. package/lib/langium/composite-ast-reflection.d.ts +46 -0
  75. package/lib/langium/composite-ast-reflection.d.ts.map +1 -0
  76. package/lib/langium/composite-ast-reflection.js +97 -0
  77. package/lib/langium/composite-ast-reflection.js.map +1 -0
  78. package/lib/langium/config/configuration-provider.d.ts +81 -0
  79. package/lib/langium/config/configuration-provider.d.ts.map +1 -0
  80. package/lib/langium/config/configuration-provider.js +112 -0
  81. package/lib/langium/config/configuration-provider.js.map +1 -0
  82. package/lib/langium/config/index.d.ts +1 -0
  83. package/lib/langium/config/index.d.ts.map +1 -1
  84. package/lib/langium/config/index.js +1 -0
  85. package/lib/langium/config/index.js.map +1 -1
  86. package/lib/langium/config/settings.js.map +1 -1
  87. package/lib/langium/diagnostics/hydranium-langium-profiler.d.ts.map +1 -1
  88. package/lib/langium/diagnostics/hydranium-langium-profiler.js.map +1 -1
  89. package/lib/langium/diagnostics/logger.d.ts +10 -3
  90. package/lib/langium/diagnostics/logger.d.ts.map +1 -1
  91. package/lib/langium/diagnostics/logger.js +12 -5
  92. package/lib/langium/diagnostics/logger.js.map +1 -1
  93. package/lib/langium/diagnostics/lsp-logger.d.ts +17 -0
  94. package/lib/langium/diagnostics/lsp-logger.d.ts.map +1 -1
  95. package/lib/langium/diagnostics/lsp-logger.js +57 -16
  96. package/lib/langium/diagnostics/lsp-logger.js.map +1 -1
  97. package/lib/langium/diagnostics/server-tracer.d.ts.map +1 -1
  98. package/lib/langium/diagnostics/server-tracer.js.map +1 -1
  99. package/lib/langium/document-builder/build-pipeline-integration.d.ts +21 -1
  100. package/lib/langium/document-builder/build-pipeline-integration.d.ts.map +1 -1
  101. package/lib/langium/document-builder/build-pipeline-integration.js +32 -5
  102. package/lib/langium/document-builder/build-pipeline-integration.js.map +1 -1
  103. package/lib/langium/document-builder/build-session.d.ts +93 -0
  104. package/lib/langium/document-builder/build-session.d.ts.map +1 -0
  105. package/lib/langium/document-builder/build-session.js +72 -0
  106. package/lib/langium/document-builder/build-session.js.map +1 -0
  107. package/lib/langium/document-builder/document-builder.d.ts +401 -29
  108. package/lib/langium/document-builder/document-builder.d.ts.map +1 -1
  109. package/lib/langium/document-builder/document-builder.js +698 -61
  110. package/lib/langium/document-builder/document-builder.js.map +1 -1
  111. package/lib/langium/document-builder/index.d.ts +1 -0
  112. package/lib/langium/document-builder/index.d.ts.map +1 -1
  113. package/lib/langium/document-builder/index.js +1 -0
  114. package/lib/langium/document-builder/index.js.map +1 -1
  115. package/lib/langium/documentation/comment-provider.d.ts.map +1 -1
  116. package/lib/langium/documentation/comment-provider.js.map +1 -1
  117. package/lib/langium/integration-services.d.ts +61 -19
  118. package/lib/langium/integration-services.d.ts.map +1 -1
  119. package/lib/langium/integration-services.js +10 -5
  120. package/lib/langium/integration-services.js.map +1 -1
  121. package/lib/langium/integrity/integrity-rule.d.ts +16 -8
  122. package/lib/langium/integrity/integrity-rule.d.ts.map +1 -1
  123. package/lib/langium/integrity/integrity-rule.js.map +1 -1
  124. package/lib/langium/integrity/integrity-service.d.ts +81 -24
  125. package/lib/langium/integrity/integrity-service.d.ts.map +1 -1
  126. package/lib/langium/integrity/integrity-service.js +264 -57
  127. package/lib/langium/integrity/integrity-service.js.map +1 -1
  128. package/lib/langium/keys/containment.d.ts +64 -0
  129. package/lib/langium/keys/containment.d.ts.map +1 -0
  130. package/lib/langium/keys/containment.js +53 -0
  131. package/lib/langium/keys/containment.js.map +1 -0
  132. package/lib/langium/keys/index.d.ts +1 -0
  133. package/lib/langium/keys/index.d.ts.map +1 -1
  134. package/lib/langium/keys/index.js +1 -0
  135. package/lib/langium/keys/index.js.map +1 -1
  136. package/lib/langium/keys/name-based-key-provider.d.ts +4 -0
  137. package/lib/langium/keys/name-based-key-provider.d.ts.map +1 -1
  138. package/lib/langium/keys/name-based-key-provider.js +4 -0
  139. package/lib/langium/keys/name-based-key-provider.js.map +1 -1
  140. package/lib/langium/keys/positional-key-provider.d.ts.map +1 -1
  141. package/lib/langium/keys/positional-key-provider.js.map +1 -1
  142. package/lib/langium/labeling/label-provider.d.ts.map +1 -1
  143. package/lib/langium/labeling/label-provider.js.map +1 -1
  144. package/lib/langium/language-module.d.ts +29 -4
  145. package/lib/langium/language-module.d.ts.map +1 -1
  146. package/lib/langium/language-module.js +18 -4
  147. package/lib/langium/language-module.js.map +1 -1
  148. package/lib/langium/model-service/client-session.d.ts +343 -0
  149. package/lib/langium/model-service/client-session.d.ts.map +1 -0
  150. package/lib/langium/model-service/client-session.js +411 -0
  151. package/lib/langium/model-service/client-session.js.map +1 -0
  152. package/lib/langium/model-service/index.d.ts +2 -0
  153. package/lib/langium/model-service/index.d.ts.map +1 -1
  154. package/lib/langium/model-service/index.js +2 -0
  155. package/lib/langium/model-service/index.js.map +1 -1
  156. package/lib/langium/model-service/model-events.d.ts +61 -0
  157. package/lib/langium/model-service/model-events.d.ts.map +1 -0
  158. package/lib/langium/model-service/model-events.js +10 -0
  159. package/lib/langium/model-service/model-events.js.map +1 -0
  160. package/lib/langium/model-service/model-service.d.ts +432 -282
  161. package/lib/langium/model-service/model-service.d.ts.map +1 -1
  162. package/lib/langium/model-service/model-service.js +504 -438
  163. package/lib/langium/model-service/model-service.js.map +1 -1
  164. package/lib/langium/module.d.ts +157 -35
  165. package/lib/langium/module.d.ts.map +1 -1
  166. package/lib/langium/module.js +52 -35
  167. package/lib/langium/module.js.map +1 -1
  168. package/lib/langium/naming/name-provider.d.ts +25 -4
  169. package/lib/langium/naming/name-provider.d.ts.map +1 -1
  170. package/lib/langium/naming/name-provider.js +2 -1
  171. package/lib/langium/naming/name-provider.js.map +1 -1
  172. package/lib/langium/naming/name-separator-validation.d.ts +23 -0
  173. package/lib/langium/naming/name-separator-validation.d.ts.map +1 -1
  174. package/lib/langium/naming/name-separator-validation.js +30 -1
  175. package/lib/langium/naming/name-separator-validation.js.map +1 -1
  176. package/lib/langium/project/abstract-project-manager.d.ts.map +1 -1
  177. package/lib/langium/project/abstract-project-manager.js +9 -2
  178. package/lib/langium/project/abstract-project-manager.js.map +1 -1
  179. package/lib/langium/project/project-change-event.d.ts +2 -2
  180. package/lib/langium/project/single-project-manager.d.ts.map +1 -1
  181. package/lib/langium/project/single-project-manager.js.map +1 -1
  182. package/lib/langium/residency/cst-residency-service.d.ts +31 -11
  183. package/lib/langium/residency/cst-residency-service.d.ts.map +1 -1
  184. package/lib/langium/residency/cst-residency-service.js +23 -57
  185. package/lib/langium/residency/cst-residency-service.js.map +1 -1
  186. package/lib/langium/scope/ast-node-description-provider.d.ts.map +1 -1
  187. package/lib/langium/scope/ast-node-description-provider.js.map +1 -1
  188. package/lib/langium/scope/hydranium-scope-computation.d.ts.map +1 -1
  189. package/lib/langium/scope/hydranium-scope-computation.js.map +1 -1
  190. package/lib/langium/scope/hydranium-scope-provider.d.ts +48 -13
  191. package/lib/langium/scope/hydranium-scope-provider.d.ts.map +1 -1
  192. package/lib/langium/scope/hydranium-scope-provider.js +56 -20
  193. package/lib/langium/scope/hydranium-scope-provider.js.map +1 -1
  194. package/lib/langium/scope/reference-builder.d.ts.map +1 -1
  195. package/lib/langium/scope/reference-builder.js.map +1 -1
  196. package/lib/langium/scope/reference-candidate-provider.d.ts.map +1 -1
  197. package/lib/langium/scope/reference-candidate-provider.js.map +1 -1
  198. package/lib/langium/scope/scope-extension-service.d.ts.map +1 -1
  199. package/lib/langium/scope/scope-extension-service.js.map +1 -1
  200. package/lib/langium/serialization/abstract-serializer.d.ts +11 -20
  201. package/lib/langium/serialization/abstract-serializer.d.ts.map +1 -1
  202. package/lib/langium/serialization/abstract-serializer.js +12 -21
  203. package/lib/langium/serialization/abstract-serializer.js.map +1 -1
  204. package/lib/langium/serialization/json-serializer.d.ts +1 -1
  205. package/lib/langium/serialization/json-serializer.d.ts.map +1 -1
  206. package/lib/langium/serialization/json-serializer.js.map +1 -1
  207. package/lib/langium/serialization/yaml-serializer.d.ts.map +1 -1
  208. package/lib/langium/serialization/yaml-serializer.js.map +1 -1
  209. package/lib/langium/service-registry.d.ts +29 -1
  210. package/lib/langium/service-registry.d.ts.map +1 -1
  211. package/lib/langium/service-registry.js +37 -0
  212. package/lib/langium/service-registry.js.map +1 -1
  213. package/lib/langium/shared-services.d.ts +23 -6
  214. package/lib/langium/shared-services.d.ts.map +1 -1
  215. package/lib/langium/shared-services.js.map +1 -1
  216. package/lib/langium/single-langium-copy.d.ts +22 -0
  217. package/lib/langium/single-langium-copy.d.ts.map +1 -0
  218. package/lib/langium/single-langium-copy.js +36 -0
  219. package/lib/langium/single-langium-copy.js.map +1 -0
  220. package/lib/langium/transfer/transfer-encoder.d.ts +77 -26
  221. package/lib/langium/transfer/transfer-encoder.d.ts.map +1 -1
  222. package/lib/langium/transfer/transfer-encoder.js +46 -24
  223. package/lib/langium/transfer/transfer-encoder.js.map +1 -1
  224. package/lib/langium/trivia/comment-preserver.d.ts +423 -0
  225. package/lib/langium/trivia/comment-preserver.d.ts.map +1 -0
  226. package/lib/langium/trivia/comment-preserver.js +906 -0
  227. package/lib/langium/trivia/comment-preserver.js.map +1 -0
  228. package/lib/langium/trivia/document-ending-preserver.d.ts +43 -0
  229. package/lib/langium/trivia/document-ending-preserver.d.ts.map +1 -0
  230. package/lib/langium/trivia/document-ending-preserver.js +48 -0
  231. package/lib/langium/trivia/document-ending-preserver.js.map +1 -0
  232. package/lib/langium/trivia/index.d.ts +14 -0
  233. package/lib/langium/trivia/index.d.ts.map +1 -0
  234. package/lib/langium/trivia/index.js +14 -0
  235. package/lib/langium/trivia/index.js.map +1 -0
  236. package/lib/langium/trivia/trivia-contribution.d.ts +37 -0
  237. package/lib/langium/trivia/trivia-contribution.d.ts.map +1 -0
  238. package/lib/langium/trivia/trivia-contribution.js +10 -0
  239. package/lib/langium/trivia/trivia-contribution.js.map +1 -0
  240. package/lib/langium/trivia/trivia-preserver.d.ts +50 -0
  241. package/lib/langium/trivia/trivia-preserver.d.ts.map +1 -0
  242. package/lib/langium/trivia/trivia-preserver.js +10 -0
  243. package/lib/langium/trivia/trivia-preserver.js.map +1 -0
  244. package/lib/langium/trivia/trivia-service.d.ts +70 -0
  245. package/lib/langium/trivia/trivia-service.d.ts.map +1 -0
  246. package/lib/langium/trivia/trivia-service.js +56 -0
  247. package/lib/langium/trivia/trivia-service.js.map +1 -0
  248. package/lib/langium/update-rewrite/normalize-empty-strings.d.ts.map +1 -1
  249. package/lib/langium/update-rewrite/update-rewrite-service.d.ts.map +1 -1
  250. package/lib/langium/update-rewrite/update-rewrite-service.js.map +1 -1
  251. package/lib/langium/update-rewrite/update-rewrite.d.ts +1 -1
  252. package/lib/langium/validation/document-validator.d.ts +294 -10
  253. package/lib/langium/validation/document-validator.d.ts.map +1 -1
  254. package/lib/langium/validation/document-validator.js +448 -5
  255. package/lib/langium/validation/document-validator.js.map +1 -1
  256. package/lib/langium/validation/validation-contribution-collector.d.ts +9 -1
  257. package/lib/langium/validation/validation-contribution-collector.d.ts.map +1 -1
  258. package/lib/langium/validation/validation-contribution-collector.js +1 -1
  259. package/lib/langium/validation/validation-contribution-collector.js.map +1 -1
  260. package/lib/langium/workspace/document-uri-policy.d.ts +18 -14
  261. package/lib/langium/workspace/document-uri-policy.d.ts.map +1 -1
  262. package/lib/langium/workspace/document-uri-policy.js +10 -9
  263. package/lib/langium/workspace/document-uri-policy.js.map +1 -1
  264. package/lib/langium/workspace/file-not-found.d.ts +23 -0
  265. package/lib/langium/workspace/file-not-found.d.ts.map +1 -0
  266. package/lib/langium/workspace/file-not-found.js +31 -0
  267. package/lib/langium/workspace/file-not-found.js.map +1 -0
  268. package/lib/langium/workspace/file-system-provider.d.ts +135 -9
  269. package/lib/langium/workspace/file-system-provider.d.ts.map +1 -1
  270. package/lib/langium/workspace/file-system-provider.js +93 -14
  271. package/lib/langium/workspace/file-system-provider.js.map +1 -1
  272. package/lib/langium/workspace/hydranium-langium-document-factory.d.ts +56 -1
  273. package/lib/langium/workspace/hydranium-langium-document-factory.d.ts.map +1 -1
  274. package/lib/langium/workspace/hydranium-langium-document-factory.js +79 -0
  275. package/lib/langium/workspace/hydranium-langium-document-factory.js.map +1 -1
  276. package/lib/langium/workspace/hydranium-workspace-lock.d.ts +43 -1
  277. package/lib/langium/workspace/hydranium-workspace-lock.d.ts.map +1 -1
  278. package/lib/langium/workspace/hydranium-workspace-lock.js +58 -1
  279. package/lib/langium/workspace/hydranium-workspace-lock.js.map +1 -1
  280. package/lib/langium/workspace/hydranium-workspace-manager.d.ts +82 -9
  281. package/lib/langium/workspace/hydranium-workspace-manager.d.ts.map +1 -1
  282. package/lib/langium/workspace/hydranium-workspace-manager.js +128 -10
  283. package/lib/langium/workspace/hydranium-workspace-manager.js.map +1 -1
  284. package/lib/langium/workspace/in-memory-file-system-provider.d.ts +26 -3
  285. package/lib/langium/workspace/in-memory-file-system-provider.d.ts.map +1 -1
  286. package/lib/langium/workspace/in-memory-file-system-provider.js +41 -15
  287. package/lib/langium/workspace/in-memory-file-system-provider.js.map +1 -1
  288. package/lib/langium/workspace/index-manager.d.ts.map +1 -1
  289. package/lib/langium/workspace/index-manager.js.map +1 -1
  290. package/lib/langium/workspace/index.d.ts +1 -0
  291. package/lib/langium/workspace/index.d.ts.map +1 -1
  292. package/lib/langium/workspace/index.js +1 -0
  293. package/lib/langium/workspace/index.js.map +1 -1
  294. package/lib/langium/workspace/initialize-workspace.d.ts +31 -2
  295. package/lib/langium/workspace/initialize-workspace.d.ts.map +1 -1
  296. package/lib/langium/workspace/initialize-workspace.js +13 -5
  297. package/lib/langium/workspace/initialize-workspace.js.map +1 -1
  298. package/lib/langium/workspace/langium-documents.d.ts +86 -17
  299. package/lib/langium/workspace/langium-documents.d.ts.map +1 -1
  300. package/lib/langium/workspace/langium-documents.js +101 -29
  301. package/lib/langium/workspace/langium-documents.js.map +1 -1
  302. package/lib/langium/workspace/persistent-file-system-provider.d.ts +1 -8
  303. package/lib/langium/workspace/persistent-file-system-provider.d.ts.map +1 -1
  304. package/lib/langium/workspace/persistent-file-system-provider.js +0 -7
  305. package/lib/langium/workspace/persistent-file-system-provider.js.map +1 -1
  306. package/lib/{documents → langium/workspace}/self-save-registry.d.ts +38 -7
  307. package/lib/langium/workspace/self-save-registry.d.ts.map +1 -0
  308. package/lib/{documents → langium/workspace}/self-save-registry.js +29 -16
  309. package/lib/langium/workspace/self-save-registry.js.map +1 -0
  310. package/lib/langium/workspace/virtual-document.d.ts +48 -15
  311. package/lib/langium/workspace/virtual-document.d.ts.map +1 -1
  312. package/lib/langium/workspace/virtual-document.js +78 -18
  313. package/lib/langium/workspace/virtual-document.js.map +1 -1
  314. package/lib/langium/workspace/write-lock-scope.d.ts +20 -10
  315. package/lib/langium/workspace/write-lock-scope.d.ts.map +1 -1
  316. package/lib/langium/workspace/write-lock-scope.js +12 -4
  317. package/lib/langium/workspace/write-lock-scope.js.map +1 -1
  318. package/lib/locale/index.d.ts +10 -0
  319. package/lib/locale/index.d.ts.map +1 -0
  320. package/lib/locale/index.js +10 -0
  321. package/lib/locale/index.js.map +1 -0
  322. package/lib/locale/server-locale.d.ts +73 -0
  323. package/lib/locale/server-locale.d.ts.map +1 -0
  324. package/lib/locale/server-locale.js +61 -0
  325. package/lib/locale/server-locale.js.map +1 -0
  326. package/lib/lsp/completion/hydranium-completion-provider.d.ts +44 -2
  327. package/lib/lsp/completion/hydranium-completion-provider.d.ts.map +1 -1
  328. package/lib/lsp/completion/hydranium-completion-provider.js +68 -0
  329. package/lib/lsp/completion/hydranium-completion-provider.js.map +1 -1
  330. package/lib/lsp/connection-features.d.ts +23 -0
  331. package/lib/lsp/connection-features.d.ts.map +1 -0
  332. package/lib/lsp/connection-features.js +60 -0
  333. package/lib/lsp/connection-features.js.map +1 -0
  334. package/lib/lsp/diagnostics-connection.d.ts +27 -0
  335. package/lib/lsp/diagnostics-connection.d.ts.map +1 -0
  336. package/lib/lsp/diagnostics-connection.js +53 -0
  337. package/lib/lsp/diagnostics-connection.js.map +1 -0
  338. package/lib/lsp/hydranium-document-update-handler.d.ts +92 -81
  339. package/lib/lsp/hydranium-document-update-handler.d.ts.map +1 -1
  340. package/lib/lsp/hydranium-document-update-handler.js +153 -99
  341. package/lib/lsp/hydranium-document-update-handler.js.map +1 -1
  342. package/lib/lsp/index.d.ts +3 -1
  343. package/lib/lsp/index.d.ts.map +1 -1
  344. package/lib/lsp/index.js +3 -1
  345. package/lib/lsp/index.js.map +1 -1
  346. package/lib/lsp/lsp-latency.d.ts +39 -0
  347. package/lib/lsp/lsp-latency.d.ts.map +1 -0
  348. package/lib/lsp/lsp-latency.js +58 -0
  349. package/lib/lsp/lsp-latency.js.map +1 -0
  350. package/lib/lsp/semantic-token-provider.d.ts +34 -1
  351. package/lib/lsp/semantic-token-provider.d.ts.map +1 -1
  352. package/lib/lsp/semantic-token-provider.js +55 -8
  353. package/lib/lsp/semantic-token-provider.js.map +1 -1
  354. package/lib/lsp/shared-module.d.ts +4 -8
  355. package/lib/lsp/shared-module.d.ts.map +1 -1
  356. package/lib/lsp/shared-module.js.map +1 -1
  357. package/lib/lsp/start-language-server.d.ts +8 -7
  358. package/lib/lsp/start-language-server.d.ts.map +1 -1
  359. package/lib/lsp/start-language-server.js +13 -7
  360. package/lib/lsp/start-language-server.js.map +1 -1
  361. package/lib/messages/carriers.d.ts +54 -0
  362. package/lib/messages/carriers.d.ts.map +1 -0
  363. package/lib/messages/carriers.js +62 -0
  364. package/lib/messages/carriers.js.map +1 -0
  365. package/lib/messages/index.d.ts +25 -0
  366. package/lib/messages/index.d.ts.map +1 -0
  367. package/lib/messages/index.js +25 -0
  368. package/lib/messages/index.js.map +1 -0
  369. package/lib/messages/renderer.d.ts +142 -0
  370. package/lib/messages/renderer.d.ts.map +1 -0
  371. package/lib/messages/renderer.js +165 -0
  372. package/lib/messages/renderer.js.map +1 -0
  373. package/lib/node/event-loop-monitor.js.map +1 -1
  374. package/lib/node/heap-ceiling.d.ts +61 -0
  375. package/lib/node/heap-ceiling.d.ts.map +1 -0
  376. package/lib/node/heap-ceiling.js +72 -0
  377. package/lib/node/heap-ceiling.js.map +1 -0
  378. package/lib/node/index.d.ts +1 -1
  379. package/lib/node/index.d.ts.map +1 -1
  380. package/lib/node/index.js +1 -1
  381. package/lib/node/index.js.map +1 -1
  382. package/lib/node/latency-from-env.d.ts +1 -1
  383. package/lib/node/latency-from-env.js +1 -1
  384. package/lib/node/lint-grammar.js.map +1 -1
  385. package/lib/node/measure-memory.d.ts.map +1 -1
  386. package/lib/node/measure-memory.js +1 -0
  387. package/lib/node/measure-memory.js.map +1 -1
  388. package/lib/node/memory-monitor.js.map +1 -1
  389. package/lib/node/node-file-system-provider.d.ts +41 -6
  390. package/lib/node/node-file-system-provider.d.ts.map +1 -1
  391. package/lib/node/node-file-system-provider.js +109 -49
  392. package/lib/node/node-file-system-provider.js.map +1 -1
  393. package/lib/node/profile-capture.d.ts +8 -2
  394. package/lib/node/profile-capture.d.ts.map +1 -1
  395. package/lib/node/profile-capture.js +1 -1
  396. package/lib/node/profile-capture.js.map +1 -1
  397. package/lib/node/profile-digest.js.map +1 -1
  398. package/lib/node/profiling-run.d.ts +13 -3
  399. package/lib/node/profiling-run.d.ts.map +1 -1
  400. package/lib/node/profiling-run.js +17 -8
  401. package/lib/node/profiling-run.js.map +1 -1
  402. package/lib/node/rename-over-open-readers.d.ts +52 -0
  403. package/lib/node/rename-over-open-readers.d.ts.map +1 -0
  404. package/lib/node/rename-over-open-readers.js +66 -0
  405. package/lib/node/rename-over-open-readers.js.map +1 -0
  406. package/lib/node/socket-launcher.d.ts +20 -4
  407. package/lib/node/socket-launcher.d.ts.map +1 -1
  408. package/lib/node/socket-launcher.js +5 -4
  409. package/lib/node/socket-launcher.js.map +1 -1
  410. package/lib/node/stdio-launcher.d.ts +6 -5
  411. package/lib/node/stdio-launcher.d.ts.map +1 -1
  412. package/lib/node/stdio-launcher.js +2 -2
  413. package/lib/node/stdio-launcher.js.map +1 -1
  414. package/lib/testing/document-uri-policy-conformance.js.map +1 -1
  415. package/lib/testing/fake-description.js.map +1 -1
  416. package/lib/testing/fake-document.d.ts +16 -4
  417. package/lib/testing/fake-document.d.ts.map +1 -1
  418. package/lib/testing/fake-document.js +18 -3
  419. package/lib/testing/fake-document.js.map +1 -1
  420. package/lib/testing/index.d.ts +1 -1
  421. package/lib/testing/index.d.ts.map +1 -1
  422. package/lib/testing/index.js +2 -1
  423. package/lib/testing/index.js.map +1 -1
  424. package/lib/testing/langium-test-helpers.d.ts.map +1 -1
  425. package/lib/testing/langium-test-helpers.js +1 -0
  426. package/lib/testing/langium-test-helpers.js.map +1 -1
  427. package/lib/testing/make-noop-language-services.js.map +1 -1
  428. package/lib/testing/make-noop-shared-services.d.ts +14 -0
  429. package/lib/testing/make-noop-shared-services.d.ts.map +1 -1
  430. package/lib/testing/make-noop-shared-services.js +28 -2
  431. package/lib/testing/make-noop-shared-services.js.map +1 -1
  432. package/lib/testing/make-test-services.d.ts +72 -14
  433. package/lib/testing/make-test-services.d.ts.map +1 -1
  434. package/lib/testing/make-test-services.js +42 -10
  435. package/lib/testing/make-test-services.js.map +1 -1
  436. package/lib/testing/make-test-tracer.d.ts +12 -0
  437. package/lib/testing/make-test-tracer.d.ts.map +1 -1
  438. package/lib/testing/make-test-tracer.js +13 -0
  439. package/lib/testing/make-test-tracer.js.map +1 -1
  440. package/lib/testing/node/golden-corpus.js.map +1 -1
  441. package/lib/testing/node/index.d.ts +1 -0
  442. package/lib/testing/node/index.d.ts.map +1 -1
  443. package/lib/testing/node/index.js +1 -0
  444. package/lib/testing/node/index.js.map +1 -1
  445. package/lib/testing/node/lsp-harness.d.ts.map +1 -1
  446. package/lib/testing/node/lsp-harness.js +2 -0
  447. package/lib/testing/node/lsp-harness.js.map +1 -1
  448. package/lib/testing/node/lsp-server-connection.d.ts +11 -3
  449. package/lib/testing/node/lsp-server-connection.d.ts.map +1 -1
  450. package/lib/testing/node/lsp-server-connection.js +43 -10
  451. package/lib/testing/node/lsp-server-connection.js.map +1 -1
  452. package/lib/testing/node/scratch-workspace.d.ts.map +1 -1
  453. package/lib/testing/node/scratch-workspace.js +10 -5
  454. package/lib/testing/node/scratch-workspace.js.map +1 -1
  455. package/lib/testing/node/spawned-server.d.ts +14 -0
  456. package/lib/testing/node/spawned-server.d.ts.map +1 -1
  457. package/lib/testing/node/spawned-server.js +34 -2
  458. package/lib/testing/node/spawned-server.js.map +1 -1
  459. package/lib/testing/node/unhandled-rejections.d.ts +20 -0
  460. package/lib/testing/node/unhandled-rejections.d.ts.map +1 -0
  461. package/lib/testing/node/unhandled-rejections.js +32 -0
  462. package/lib/testing/node/unhandled-rejections.js.map +1 -0
  463. package/lib/testing/playwright/browser-capture-bridge.js.map +1 -1
  464. package/lib/testing/playwright/e2e-profiling.js.map +1 -1
  465. package/lib/testing/playwright/flaky-network-proxy.d.ts +76 -0
  466. package/lib/testing/playwright/flaky-network-proxy.d.ts.map +1 -0
  467. package/lib/testing/playwright/flaky-network-proxy.js +164 -0
  468. package/lib/testing/playwright/flaky-network-proxy.js.map +1 -0
  469. package/lib/testing/playwright/index.d.ts +1 -0
  470. package/lib/testing/playwright/index.d.ts.map +1 -1
  471. package/lib/testing/playwright/index.js +1 -0
  472. package/lib/testing/playwright/index.js.map +1 -1
  473. package/lib/testing/playwright/server-log-capture.d.ts +24 -8
  474. package/lib/testing/playwright/server-log-capture.d.ts.map +1 -1
  475. package/lib/testing/playwright/server-log-capture.js +27 -6
  476. package/lib/testing/playwright/server-log-capture.js.map +1 -1
  477. package/lib/testing/playwright/server-log-rename-reporter.d.ts.map +1 -1
  478. package/lib/testing/playwright/server-log-rename-reporter.js +10 -1
  479. package/lib/testing/playwright/server-log-rename-reporter.js.map +1 -1
  480. package/lib/testing/run-update-pipeline.d.ts +4 -4
  481. package/lib/testing/run-update-pipeline.d.ts.map +1 -1
  482. package/lib/testing/stub-ast-document-manager.d.ts +11 -52
  483. package/lib/testing/stub-ast-document-manager.d.ts.map +1 -1
  484. package/lib/testing/stub-ast-document-manager.js +24 -65
  485. package/lib/testing/stub-ast-document-manager.js.map +1 -1
  486. package/lib/testing/stub-document-builder.d.ts +26 -11
  487. package/lib/testing/stub-document-builder.d.ts.map +1 -1
  488. package/lib/testing/stub-document-builder.js +78 -5
  489. package/lib/testing/stub-document-builder.js.map +1 -1
  490. package/lib/testing/stub-hydranium-text-documents.d.ts +33 -10
  491. package/lib/testing/stub-hydranium-text-documents.d.ts.map +1 -1
  492. package/lib/testing/stub-hydranium-text-documents.js +115 -16
  493. package/lib/testing/stub-hydranium-text-documents.js.map +1 -1
  494. package/lib/testing/stub-index-manager.js.map +1 -1
  495. package/lib/testing/stub-langium-documents.d.ts +3 -2
  496. package/lib/testing/stub-langium-documents.d.ts.map +1 -1
  497. package/lib/testing/stub-langium-documents.js.map +1 -1
  498. package/lib/testing/stub-model-service.d.ts +7 -6
  499. package/lib/testing/stub-model-service.d.ts.map +1 -1
  500. package/lib/testing/stub-model-service.js +4 -4
  501. package/lib/testing/stub-model-service.js.map +1 -1
  502. package/lib/testing/stub-project-manager.js.map +1 -1
  503. package/lib/testing/stub-self-save-registry.d.ts +1 -1
  504. package/lib/testing/stub-self-save-registry.d.ts.map +1 -1
  505. package/lib/testing/stub-service-registry.d.ts +1 -1
  506. package/lib/testing/stub-service-registry.js.map +1 -1
  507. package/lib/testing/stub-writable-file-system.d.ts +1 -1
  508. package/lib/testing/stub-writable-file-system.d.ts.map +1 -1
  509. package/lib/util/connection-liveness.d.ts +7 -6
  510. package/lib/util/connection-liveness.d.ts.map +1 -1
  511. package/lib/util/connection-liveness.js +35 -14
  512. package/lib/util/connection-liveness.js.map +1 -1
  513. package/lib/util/environment.d.ts.map +1 -1
  514. package/lib/util/environment.js.map +1 -1
  515. package/lib/util/registry.d.ts.map +1 -1
  516. package/package.json +32 -48
  517. package/src/documents/ast-document-manager.ts +379 -231
  518. package/src/documents/client-ids.ts +5 -22
  519. package/src/documents/client-session-errors.ts +24 -0
  520. package/src/documents/client-session-registry.ts +262 -0
  521. package/src/documents/dirty-state-tracker.ts +130 -0
  522. package/src/documents/document-release-handler.ts +365 -0
  523. package/src/documents/document-release-scheduler.ts +121 -0
  524. package/src/documents/file-system-task-queue.ts +68 -0
  525. package/src/documents/hydranium-text-documents.ts +931 -595
  526. package/src/documents/index.ts +10 -2
  527. package/src/documents/language-client-shadow.ts +451 -0
  528. package/src/documents/model-ledger.ts +66 -0
  529. package/src/documents/text-ledger.ts +112 -0
  530. package/src/documents/version-sync-service.ts +267 -0
  531. package/src/index.ts +8 -0
  532. package/src/langium/ast-extension/ast-node-builder.ts +66 -22
  533. package/src/langium/bootstrap.ts +66 -28
  534. package/src/langium/composite-ast-reflection.ts +112 -0
  535. package/src/langium/config/configuration-provider.ts +119 -0
  536. package/src/langium/config/index.ts +1 -0
  537. package/src/langium/diagnostics/logger.ts +12 -5
  538. package/src/langium/diagnostics/lsp-logger.ts +59 -15
  539. package/src/langium/document-builder/build-pipeline-integration.ts +50 -5
  540. package/src/langium/document-builder/build-session.ts +87 -0
  541. package/src/langium/document-builder/document-builder.ts +825 -59
  542. package/src/langium/document-builder/index.ts +1 -0
  543. package/src/langium/integration-services.ts +83 -24
  544. package/src/langium/integrity/integrity-rule.ts +16 -8
  545. package/src/langium/integrity/integrity-service.ts +287 -62
  546. package/src/langium/keys/containment.ts +87 -0
  547. package/src/langium/keys/index.ts +1 -0
  548. package/src/langium/keys/name-based-key-provider.ts +4 -0
  549. package/src/langium/language-module.ts +48 -7
  550. package/src/langium/model-service/client-session.ts +644 -0
  551. package/src/langium/model-service/index.ts +2 -0
  552. package/src/langium/model-service/model-events.ts +75 -0
  553. package/src/langium/model-service/model-service.ts +790 -468
  554. package/src/langium/module.ts +210 -64
  555. package/src/langium/naming/name-provider.ts +27 -5
  556. package/src/langium/naming/name-separator-validation.ts +34 -5
  557. package/src/langium/project/abstract-project-manager.ts +9 -1
  558. package/src/langium/project/project-change-event.ts +2 -2
  559. package/src/langium/residency/cst-residency-service.ts +46 -15
  560. package/src/langium/scope/hydranium-scope-provider.ts +60 -22
  561. package/src/langium/serialization/abstract-serializer.ts +13 -32
  562. package/src/langium/service-registry.ts +41 -2
  563. package/src/langium/shared-services.ts +27 -6
  564. package/src/langium/single-langium-copy.ts +42 -0
  565. package/src/langium/transfer/transfer-encoder.ts +104 -37
  566. package/src/langium/trivia/comment-preserver.ts +1100 -0
  567. package/src/langium/trivia/document-ending-preserver.ts +55 -0
  568. package/src/langium/trivia/index.ts +14 -0
  569. package/src/langium/trivia/trivia-contribution.ts +39 -0
  570. package/src/langium/trivia/trivia-preserver.ts +54 -0
  571. package/src/langium/trivia/trivia-service.ts +99 -0
  572. package/src/langium/update-rewrite/update-rewrite.ts +1 -1
  573. package/src/langium/validation/document-validator.ts +537 -11
  574. package/src/langium/validation/validation-contribution-collector.ts +10 -1
  575. package/src/langium/workspace/document-uri-policy.ts +18 -14
  576. package/src/langium/workspace/file-not-found.ts +35 -0
  577. package/src/langium/workspace/file-system-provider.ts +205 -17
  578. package/src/langium/workspace/hydranium-langium-document-factory.ts +117 -0
  579. package/src/langium/workspace/hydranium-workspace-lock.ts +86 -2
  580. package/src/langium/workspace/hydranium-workspace-manager.ts +154 -14
  581. package/src/langium/workspace/in-memory-file-system-provider.ts +48 -17
  582. package/src/langium/workspace/index.ts +1 -0
  583. package/src/langium/workspace/initialize-workspace.ts +43 -5
  584. package/src/langium/workspace/langium-documents.ts +124 -33
  585. package/src/langium/workspace/persistent-file-system-provider.ts +1 -8
  586. package/src/{documents → langium/workspace}/self-save-registry.ts +54 -15
  587. package/src/langium/workspace/virtual-document.ts +96 -19
  588. package/src/langium/workspace/write-lock-scope.ts +24 -11
  589. package/src/locale/index.ts +10 -0
  590. package/src/locale/server-locale.ts +86 -0
  591. package/src/lsp/completion/hydranium-completion-provider.ts +82 -2
  592. package/src/lsp/connection-features.ts +67 -0
  593. package/src/lsp/diagnostics-connection.ts +56 -0
  594. package/src/lsp/hydranium-document-update-handler.ts +187 -108
  595. package/src/lsp/index.ts +3 -1
  596. package/src/lsp/lsp-latency.ts +62 -0
  597. package/src/lsp/semantic-token-provider.ts +74 -7
  598. package/src/lsp/shared-module.ts +4 -8
  599. package/src/lsp/start-language-server.ts +13 -7
  600. package/src/messages/carriers.ts +78 -0
  601. package/src/messages/index.ts +36 -0
  602. package/src/messages/renderer.ts +212 -0
  603. package/src/node/heap-ceiling.ts +108 -0
  604. package/src/node/index.ts +1 -1
  605. package/src/node/latency-from-env.ts +1 -1
  606. package/src/node/measure-memory.ts +1 -0
  607. package/src/node/node-file-system-provider.ts +124 -53
  608. package/src/node/profile-capture.ts +9 -3
  609. package/src/node/profiling-run.ts +30 -8
  610. package/src/node/rename-over-open-readers.ts +78 -0
  611. package/src/node/socket-launcher.ts +24 -8
  612. package/src/node/stdio-launcher.ts +8 -7
  613. package/src/testing/fake-document.ts +24 -5
  614. package/src/testing/index.ts +2 -1
  615. package/src/testing/langium-test-helpers.ts +1 -0
  616. package/src/testing/make-noop-shared-services.ts +50 -2
  617. package/src/testing/make-test-services.ts +125 -31
  618. package/src/testing/make-test-tracer.ts +26 -0
  619. package/src/testing/node/index.ts +1 -0
  620. package/src/testing/node/lsp-harness.ts +2 -0
  621. package/src/testing/node/lsp-server-connection.ts +66 -12
  622. package/src/testing/node/scratch-workspace.ts +10 -5
  623. package/src/testing/node/spawned-server.ts +36 -2
  624. package/src/testing/node/unhandled-rejections.ts +31 -0
  625. package/src/testing/parse-semantic-root.ts +1 -1
  626. package/src/testing/playwright/flaky-network-proxy.ts +240 -0
  627. package/src/testing/playwright/index.ts +1 -0
  628. package/src/testing/playwright/server-log-capture.ts +45 -11
  629. package/src/testing/playwright/server-log-rename-reporter.ts +12 -1
  630. package/src/testing/run-update-pipeline.ts +4 -4
  631. package/src/testing/stub-ast-document-manager.ts +36 -138
  632. package/src/testing/stub-document-builder.ts +102 -18
  633. package/src/testing/stub-hydranium-text-documents.ts +165 -27
  634. package/src/testing/stub-langium-documents.ts +3 -2
  635. package/src/testing/stub-model-service.ts +9 -8
  636. package/src/testing/stub-self-save-registry.ts +1 -1
  637. package/src/testing/stub-service-registry.ts +1 -1
  638. package/src/testing/stub-writable-file-system.ts +1 -1
  639. package/src/util/connection-liveness.ts +37 -14
  640. package/src/util/environment.ts +9 -1
  641. package/lib/documents/language-client-text-shadow.d.ts +0 -101
  642. package/lib/documents/language-client-text-shadow.d.ts.map +0 -1
  643. package/lib/documents/language-client-text-shadow.js +0 -156
  644. package/lib/documents/language-client-text-shadow.js.map +0 -1
  645. package/lib/documents/self-save-registry.d.ts.map +0 -1
  646. package/lib/documents/self-save-registry.js.map +0 -1
  647. package/lib/lsp/instrument-connection.d.ts +0 -36
  648. package/lib/lsp/instrument-connection.d.ts.map +0 -1
  649. package/lib/lsp/instrument-connection.js +0 -62
  650. package/lib/lsp/instrument-connection.js.map +0 -1
  651. package/lib/node/process-memory.d.ts +0 -66
  652. package/lib/node/process-memory.d.ts.map +0 -1
  653. package/lib/node/process-memory.js +0 -252
  654. package/lib/node/process-memory.js.map +0 -1
  655. package/src/documents/language-client-text-shadow.ts +0 -175
  656. package/src/lsp/instrument-connection.ts +0 -66
  657. package/src/node/process-memory.ts +0 -299
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/langium/keys/index.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF,cAAc,2BAA2B,CAAC;AAC1C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,mCAAmC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/langium/keys/index.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF,cAAc,kBAAkB,CAAC;AACjC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,mCAAmC,CAAC"}
@@ -53,6 +53,10 @@ import { type NameProvider } from '../naming/name-provider.js';
53
53
  * - After a removal, surviving siblings need their `$containerIndex`
54
54
  * renumbered, or a key derived afterwards addresses the wrong node.
55
55
  *
56
+ * {@link appendChild} and {@link removeChildren} discharge both, and ship
57
+ * beside this provider because the constraint is this provider's rather than
58
+ * any caller's.
59
+ *
56
60
  * Adopters that need insert / delete stability for unnamed types should
57
61
  * give those types a name in the grammar, or bind a key provider whose
58
62
  * fallback is content-derived rather than positional.
@@ -1 +1 @@
1
- {"version":3,"file":"name-based-key-provider.d.ts","sourceRoot":"","sources":["../../../src/langium/keys/name-based-key-provider.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,KAAK,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,KAAK,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AACpE,OAAO,EAAE,KAAK,kBAAkB,EAAwB,MAAM,2BAA2B,CAAC;AAC1F,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAE/D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+CG;AACH,qBAAa,oBAAqB,YAAW,kBAAkB;IAKzD,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAE,sBAAsB;IAJtD,SAAS,CAAC,QAAQ,CAAC,YAAY,EAAE,YAAY,CAAC;IAC9C,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;gBAGZ,QAAQ,EAAE,sBAAsB,EACnD,OAAO,GAAE,cAAmB;IAM/B,aAAa,CAAC,IAAI,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS;IAuBjD;;;;;;;OAOG;IACH,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,GAAG,SAAS;IAIlE;;;;;;;;;;;;OAYG;IACH,SAAS,CAAC,cAAc,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO;IAUhD;;;;OAIG;IACH,SAAS,CAAC,mBAAmB,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS;CAMlE"}
1
+ {"version":3,"file":"name-based-key-provider.d.ts","sourceRoot":"","sources":["../../../src/langium/keys/name-based-key-provider.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,KAAK,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,KAAK,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AACpE,OAAO,EAAE,KAAK,kBAAkB,EAAwB,MAAM,2BAA2B,CAAC;AAC1F,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAE/D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmDG;AACH,qBAAa,oBAAqB,YAAW,kBAAkB;IAKzD,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAE,sBAAsB;IAJtD,SAAS,CAAC,QAAQ,CAAC,YAAY,EAAE,YAAY,CAAC;IAC9C,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IAElC,YACsB,QAAQ,EAAE,sBAAsB,EACnD,OAAO,GAAE,cAAmB,EAI9B;IAED,aAAa,CAAC,IAAI,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAqBhD;IAED;;;;;;;OAOG;IACH,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,GAAG,SAAS,CAEjE;IAED;;;;;;;;;;;;OAYG;IACH,SAAS,CAAC,cAAc,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,CAQ/C;IAED;;;;OAIG;IACH,SAAS,CAAC,mBAAmB,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAK/D;CACH"}
@@ -48,6 +48,10 @@ import { resolveElementByScan } from './element-key-provider.js';
48
48
  * - After a removal, surviving siblings need their `$containerIndex`
49
49
  * renumbered, or a key derived afterwards addresses the wrong node.
50
50
  *
51
+ * {@link appendChild} and {@link removeChildren} discharge both, and ship
52
+ * beside this provider because the constraint is this provider's rather than
53
+ * any caller's.
54
+ *
51
55
  * Adopters that need insert / delete stability for unnamed types should
52
56
  * give those types a name in the grammar, or bind a key provider whose
53
57
  * fallback is content-derived rather than positional.
@@ -1 +1 @@
1
- {"version":3,"file":"name-based-key-provider.js","sourceRoot":"","sources":["../../../src/langium/keys/name-based-key-provider.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAMlF,OAAO,EAA2B,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAG1F;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+CG;AACH,MAAM,OAAO,oBAAoB;IAKR;IAJH,YAAY,CAAe;IAC3B,MAAM,CAAS;IAElC,YACsB,QAAgC,EACnD,UAA0B,EAAE;QADT,aAAQ,GAAR,QAAQ,CAAwB;QAGnD,IAAI,CAAC,YAAY,GAAG,QAAQ,CAAC,UAAU,CAAC,YAAY,CAAC;QACrD,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;IAC5G,CAAC;IAED,aAAa,CAAC,IAAc;QACzB,IAAI,CAAC,IAAI,EAAE,CAAC;YACT,OAAO,SAAS,CAAC;QACpB,CAAC;QACD,IAAI,EAAE,GAAG,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC;QAC9E,IAAI,CAAC,EAAE,EAAE,CAAC;YACP,OAAO,SAAS,CAAC;QACpB,CAAC;QACD,IAAI,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,CAAC;YAC7B,OAAO,EAAE,CAAC;QACb,CAAC;QACD,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC;QAClD,IAAI,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC;QAC7B,OAAO,MAAM,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,EAAE,CAAC;YAC7C,MAAM,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC;YACzF,IAAI,OAAO,EAAE,CAAC;gBACX,EAAE,GAAG,OAAO,GAAG,SAAS,GAAG,EAAE,CAAC;YACjC,CAAC;YACD,MAAM,GAAG,MAAM,CAAC,UAAU,CAAC;QAC9B,CAAC;QACD,OAAO,EAAE,CAAC;IACb,CAAC;IAED;;;;;;;OAOG;IACH,cAAc,CAAC,GAAW,EAAE,OAAgB;QACzC,OAAO,oBAAoB,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC;IAC/E,CAAC;IAED;;;;;;;;;;;;OAYG;IACO,cAAc,CAAC,IAAa;QACnC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;YACpB,OAAO,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAC1C,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE,CAAC;YAC/B,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACtD,CAAC;QACD,OAAO,KAAK,CAAC;IAChB,CAAC;IAED;;;;OAIG;IACO,mBAAmB,CAAC,IAAa;QACxC,IAAI,IAAI,CAAC,kBAAkB,KAAK,SAAS,IAAI,IAAI,CAAC,eAAe,KAAK,SAAS,EAAE,CAAC;YAC/E,OAAO,SAAS,CAAC;QACpB,CAAC;QACD,OAAO,GAAG,IAAI,CAAC,kBAAkB,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;IAC/D,CAAC;CACH"}
1
+ {"version":3,"file":"name-based-key-provider.js","sourceRoot":"","sources":["../../../src/langium/keys/name-based-key-provider.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAMlF,OAAO,EAA2B,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAG1F;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmDG;AACH,MAAM,OAAO,oBAAoB;IAKR,QAAQ;IAJX,YAAY,CAAe;IAC3B,MAAM,CAAS;IAElC,YACsB,QAAgC,EACnD,OAAO,GAAmB,EAAE;wBADT,QAAQ;QAG3B,IAAI,CAAC,YAAY,GAAG,QAAQ,CAAC,UAAU,CAAC,YAAY,CAAC;QACrD,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;IAC5G,CAAC;IAED,aAAa,CAAC,IAAc;QACzB,IAAI,CAAC,IAAI,EAAE,CAAC;YACT,OAAO,SAAS,CAAC;QACpB,CAAC;QACD,IAAI,EAAE,GAAG,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC;QAC9E,IAAI,CAAC,EAAE,EAAE,CAAC;YACP,OAAO,SAAS,CAAC;QACpB,CAAC;QACD,IAAI,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,CAAC;YAC7B,OAAO,EAAE,CAAC;QACb,CAAC;QACD,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC;QAClD,IAAI,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC;QAC7B,OAAO,MAAM,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,EAAE,CAAC;YAC7C,MAAM,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC;YACzF,IAAI,OAAO,EAAE,CAAC;gBACX,EAAE,GAAG,OAAO,GAAG,SAAS,GAAG,EAAE,CAAC;YACjC,CAAC;YACD,MAAM,GAAG,MAAM,CAAC,UAAU,CAAC;QAC9B,CAAC;QACD,OAAO,EAAE,CAAC;IACb,CAAC;IAED;;;;;;;OAOG;IACH,cAAc,CAAC,GAAW,EAAE,OAAgB;QACzC,OAAO,oBAAoB,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC;IAC/E,CAAC;IAED;;;;;;;;;;;;OAYG;IACO,cAAc,CAAC,IAAa;QACnC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;YACpB,OAAO,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAC1C,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE,CAAC;YAC/B,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACtD,CAAC;QACD,OAAO,KAAK,CAAC;IAChB,CAAC;IAED;;;;OAIG;IACO,mBAAmB,CAAC,IAAa;QACxC,IAAI,IAAI,CAAC,kBAAkB,KAAK,SAAS,IAAI,IAAI,CAAC,eAAe,KAAK,SAAS,EAAE,CAAC;YAC/E,OAAO,SAAS,CAAC;QACpB,CAAC;QACD,OAAO,GAAG,IAAI,CAAC,kBAAkB,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;IAC/D,CAAC;CACH"}
@@ -1 +1 @@
1
- {"version":3,"file":"positional-key-provider.d.ts","sourceRoot":"","sources":["../../../src/langium/keys/positional-key-provider.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,KAAK,OAAO,EAAY,MAAM,oBAAoB,CAAC;AAC5D,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,KAAK,yBAAyB,EAAE,MAAM,uBAAuB,CAAC;AACvE,OAAO,EAAE,KAAK,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAEpE;;;;;;;;;;;;;;GAcG;AACH,qBAAa,qBAAsB,YAAW,kBAAkB;IAI1D,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAE,yBAAyB;IAHzD,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;gBAGZ,QAAQ,EAAE,yBAAyB,EACtD,OAAO,GAAE,cAAmB;IAK/B,aAAa,CAAC,IAAI,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS;IAOjD;;;;OAIG;IACH,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,GAAG,SAAS;CAIpE"}
1
+ {"version":3,"file":"positional-key-provider.d.ts","sourceRoot":"","sources":["../../../src/langium/keys/positional-key-provider.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,KAAK,OAAO,EAAY,MAAM,oBAAoB,CAAC;AAC5D,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,KAAK,yBAAyB,EAAE,MAAM,uBAAuB,CAAC;AACvE,OAAO,EAAE,KAAK,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAEpE;;;;;;;;;;;;;;GAcG;AACH,qBAAa,qBAAsB,YAAW,kBAAkB;IAI1D,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAE,yBAAyB;IAHzD,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IAElC,YACsB,QAAQ,EAAE,yBAAyB,EACtD,OAAO,GAAE,cAAmB,EAG9B;IAED,aAAa,CAAC,IAAI,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAKhD;IAED;;;;OAIG;IACH,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,GAAG,SAAS,CAGjE;CACH"}
@@ -1 +1 @@
1
- {"version":3,"file":"positional-key-provider.js","sourceRoot":"","sources":["../../../src/langium/keys/positional-key-provider.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAGlF,OAAO,EAAgB,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAK5D;;;;;;;;;;;;;;GAcG;AACH,MAAM,OAAO,qBAAqB;IAIT;IAHH,MAAM,CAAS;IAElC,YACsB,QAAmC,EACtD,UAA0B,EAAE;QADT,aAAQ,GAAR,QAAQ,CAA2B;QAGtD,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;IAC5G,CAAC;IAED,aAAa,CAAC,IAAc;QACzB,IAAI,CAAC,IAAI,EAAE,CAAC;YACT,OAAO,SAAS,CAAC;QACpB,CAAC;QACD,OAAO,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,cAAc,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;IACtE,CAAC;IAED;;;;OAIG;IACH,cAAc,CAAC,GAAW,EAAE,OAAgB;QACzC,MAAM,IAAI,GAAG,QAAQ,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;QAC5C,OAAO,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,cAAc,CAAC,UAAU,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IACvE,CAAC;CACH"}
1
+ {"version":3,"file":"positional-key-provider.js","sourceRoot":"","sources":["../../../src/langium/keys/positional-key-provider.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAGlF,OAAO,EAAgB,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAK5D;;;;;;;;;;;;;;GAcG;AACH,MAAM,OAAO,qBAAqB;IAIT,QAAQ;IAHX,MAAM,CAAS;IAElC,YACsB,QAAmC,EACtD,OAAO,GAAmB,EAAE;wBADT,QAAQ;QAG3B,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;IAC5G,CAAC;IAED,aAAa,CAAC,IAAc;QACzB,IAAI,CAAC,IAAI,EAAE,CAAC;YACT,OAAO,SAAS,CAAC;QACpB,CAAC;QACD,OAAO,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,cAAc,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;IACtE,CAAC;IAED;;;;OAIG;IACH,cAAc,CAAC,GAAW,EAAE,OAAgB;QACzC,MAAM,IAAI,GAAG,QAAQ,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;QAC5C,OAAO,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,cAAc,CAAC,UAAU,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IACvE,CAAC;CACH"}
@@ -1 +1 @@
1
- {"version":3,"file":"label-provider.d.ts","sourceRoot":"","sources":["../../../src/langium/labeling/label-provider.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,KAAK,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,KAAK,yBAAyB,EAAE,MAAM,uBAAuB,CAAC;AACvE,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAE/D,kEAAkE;AAClE,MAAM,WAAW,oBAAqB,SAAQ,cAAc;IACzD;;;;;;;OAOG;IACH,QAAQ,CAAC,eAAe,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CAC/C;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,WAAW,aAAa;IAC3B;;;;OAIG;IACH,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAAC;IAE7C,0CAA0C;IAC1C,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC;IAElC;;;;;;OAMG;IACH,cAAc,CAAC,IAAI,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAAC;CACrD;AAED;;;GAGG;AACH,qBAAa,oBAAqB,YAAW,aAAa;IAMpD,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAE,yBAAyB;IALzD,SAAS,CAAC,QAAQ,CAAC,eAAe,EAAE,SAAS,MAAM,EAAE,CAAC;IACtD,SAAS,CAAC,QAAQ,CAAC,YAAY,EAAE,YAAY,CAAC;IAC9C,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;gBAGZ,QAAQ,EAAE,yBAAyB,EACtD,OAAO,GAAE,oBAAyB;IAOrC,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS;IAc5C,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,GAAG,OAAO;IAIjC,cAAc,CAAC,IAAI,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS;CAGpD"}
1
+ {"version":3,"file":"label-provider.d.ts","sourceRoot":"","sources":["../../../src/langium/labeling/label-provider.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,KAAK,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,KAAK,yBAAyB,EAAE,MAAM,uBAAuB,CAAC;AACvE,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAE/D,kEAAkE;AAClE,MAAM,WAAW,oBAAqB,SAAQ,cAAc;IACzD;;;;;;;OAOG;IACH,QAAQ,CAAC,eAAe,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CAC/C;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,WAAW,aAAa;IAC3B;;;;OAIG;IACH,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAAC;IAE7C,0CAA0C;IAC1C,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC;IAElC;;;;;;OAMG;IACH,cAAc,CAAC,IAAI,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAAC;CACrD;AAED;;;GAGG;AACH,qBAAa,oBAAqB,YAAW,aAAa;IAMpD,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAE,yBAAyB;IALzD,SAAS,CAAC,QAAQ,CAAC,eAAe,EAAE,SAAS,MAAM,EAAE,CAAC;IACtD,SAAS,CAAC,QAAQ,CAAC,YAAY,EAAE,YAAY,CAAC;IAC9C,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IAElC,YACsB,QAAQ,EAAE,yBAAyB,EACtD,OAAO,GAAE,oBAAyB,EAKpC;IAED,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAY3C;IAED,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,GAAG,OAAO,CAEhC;IAED,cAAc,CAAC,IAAI,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAEjD;CACH"}
@@ -1 +1 @@
1
- {"version":3,"file":"label-provider.js","sourceRoot":"","sources":["../../../src/langium/labeling/label-provider.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AA+DlF;;;GAGG;AACH,MAAM,OAAO,oBAAoB;IAMR;IALH,eAAe,CAAoB;IACnC,YAAY,CAAe;IAC3B,MAAM,CAAS;IAElC,YACsB,QAAmC,EACtD,UAAgC,EAAE;QADf,aAAQ,GAAR,QAAQ,CAA2B;QAGtD,IAAI,CAAC,eAAe,GAAG,OAAO,CAAC,eAAe,IAAI,CAAC,MAAM,CAAC,CAAC;QAC3D,IAAI,CAAC,YAAY,GAAG,QAAQ,CAAC,UAAU,CAAC,YAAY,CAAC;QACrD,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,IAAI,eAAe,CAAC,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;IACtG,CAAC;IAED,QAAQ,CAAC,IAAc;QACpB,IAAI,CAAC,IAAI,EAAE,CAAC;YACT,OAAO,SAAS,CAAC;QACpB,CAAC;QACD,MAAM,OAAO,GAAG,IAA0C,CAAC;QAC3D,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;YAC3C,MAAM,KAAK,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;YAChC,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;gBAC7B,OAAO,KAAK,CAAC;YAChB,CAAC;QACJ,CAAC;QACD,OAAO,SAAS,CAAC;IACpB,CAAC;IAED,QAAQ,CAAC,IAAc;QACpB,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,SAAS,CAAC;IAC5C,CAAC;IAED,cAAc,CAAC,IAAc;QAC1B,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;IACpE,CAAC;CACH"}
1
+ {"version":3,"file":"label-provider.js","sourceRoot":"","sources":["../../../src/langium/labeling/label-provider.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AA+DlF;;;GAGG;AACH,MAAM,OAAO,oBAAoB;IAMR,QAAQ;IALX,eAAe,CAAoB;IACnC,YAAY,CAAe;IAC3B,MAAM,CAAS;IAElC,YACsB,QAAmC,EACtD,OAAO,GAAyB,EAAE;wBADf,QAAQ;QAG3B,IAAI,CAAC,eAAe,GAAG,OAAO,CAAC,eAAe,IAAI,CAAC,MAAM,CAAC,CAAC;QAC3D,IAAI,CAAC,YAAY,GAAG,QAAQ,CAAC,UAAU,CAAC,YAAY,CAAC;QACrD,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,IAAI,eAAe,CAAC,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;IACtG,CAAC;IAED,QAAQ,CAAC,IAAc;QACpB,IAAI,CAAC,IAAI,EAAE,CAAC;YACT,OAAO,SAAS,CAAC;QACpB,CAAC;QACD,MAAM,OAAO,GAAG,IAA0C,CAAC;QAC3D,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;YAC3C,MAAM,KAAK,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;YAChC,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;gBAC7B,OAAO,KAAK,CAAC;YAChB,CAAC;QACJ,CAAC;QACD,OAAO,SAAS,CAAC;IACpB,CAAC;IAED,QAAQ,CAAC,IAAc;QACpB,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,SAAS,CAAC;IAC5C,CAAC;IAED,cAAc,CAAC,IAAc;QAC1B,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;IACpE,CAAC;CACH"}
@@ -23,10 +23,12 @@ import { type ReferenceBuilder } from './scope/reference-builder.js';
23
23
  import { type ScopeExtensionContribution } from './scope/scope-extension-contribution.js';
24
24
  import { type ScopeExtensionService } from './scope/scope-extension-service.js';
25
25
  import { type Serializer } from './serialization/serializer.js';
26
+ import { type TriviaContribution } from './trivia/trivia-contribution.js';
27
+ import { type TriviaService } from './trivia/trivia-service.js';
26
28
  import { type UpdateRewriteContribution } from './update-rewrite/update-rewrite-contribution.js';
27
29
  import { type UpdateRewriteService } from './update-rewrite/update-rewrite-service.js';
28
30
  import { type ValidationCheckContribution } from './validation/validation-contribution.js';
29
- import { ValidationContributionCollector } from './validation/validation-contribution-collector.js';
31
+ import { type ValidationContributionCollector } from './validation/validation-contribution-collector.js';
30
32
  import { type ServerModuleContext, type ServerSharedServices } from './module.js';
31
33
  /**
32
34
  * Language-level slots contributed by `@hydranium/core`. Bound by
@@ -147,7 +149,7 @@ export interface ServerAddedServices {
147
149
  * multi-grammar workspaces route to the right serializer per file. The
148
150
  * framework default throws a clear "no Serializer registered" error;
149
151
  * adopters bind their own per-language subclass to enable
150
- * `ModelService.update` / `ModelService.save`.
152
+ * a client session's `update` / `save`.
151
153
  */
152
154
  Serializer: Serializer;
153
155
  };
@@ -174,10 +176,33 @@ export interface ServerAddedServices {
174
176
  */
175
177
  rules: Record<string, IntegrityRuleContribution>;
176
178
  };
179
+ trivia: {
180
+ /**
181
+ * Runs the registered trivia preservers around a write, so what a
182
+ * document carries that its model does not — its comments, the whitespace
183
+ * it ended with — survives being re-serialized from that model.
184
+ *
185
+ * A separate group from {@link Serializer} because a preserver needs the
186
+ * document being overwritten, which a serializer is never given:
187
+ * `serializeAst` could reach one through its model, but
188
+ * `serializeTransfer` receives a plain wire object with no document at
189
+ * all, so folding this in would carry trivia on one write path and
190
+ * silently not on the other.
191
+ */
192
+ TriviaService: TriviaService;
193
+ /**
194
+ * Declarative {@link TriviaContribution} group. Distinct sub-keys
195
+ * accumulate across framework + adopter modules via Langium's deep-merge;
196
+ * binding one the framework already uses REPLACES it. The framework ships
197
+ * a sub-key per preserver, so an adopter replacing `comments` keeps
198
+ * `documentEnding` and whatever else ships beside it.
199
+ */
200
+ preservers: Record<string, TriviaContribution>;
201
+ };
177
202
  updateRewrite: {
178
203
  /**
179
204
  * Per-language runner for transfer-model rewrites applied on the
180
- * structured write path of `ModelService.update` / `save`, before
205
+ * structured write path of a client session's `update` / `save`, before
181
206
  * serialisation. The RPC-update-stage sibling of the
182
207
  * {@link IntegrityService} / {@link AstExtensionService} registries.
183
208
  * Framework default is a no-op (zero rewrites registered) — adopters
@@ -212,7 +237,7 @@ export interface ServerAddedServices {
212
237
  ValidationContributionCollector: ValidationContributionCollector;
213
238
  /**
214
239
  * Declarative {@link ValidationCheckContribution} group. Each sub-key
215
- * binds a contribution; the {@link ValidationContributionCollector}
240
+ * binds a contribution; the {@link DefaultValidationContributionCollector}
216
241
  * iterates this group at construction and calls each contribution's
217
242
  * `registerValidationChecks(registry)`, where `registry` is a thin
218
243
  * adapter over Langium's `ValidationRegistry`. The framework binds
@@ -1 +1 @@
1
- {"version":3,"file":"language-module.d.ts","sourceRoot":"","sources":["../../src/langium/language-module.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"language-module.d.ts","sourceRoot":"","sources":["../../src/langium/language-module.ts"],"names":[],"mappings":"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"}
@@ -19,16 +19,19 @@ import { HydraniumScopeComputation } from './scope/hydranium-scope-computation.j
19
19
  import { HydraniumScopeProvider } from './scope/hydranium-scope-provider.js';
20
20
  import { DefaultReferenceBuilder } from './scope/reference-builder.js';
21
21
  import { DefaultScopeExtensionService } from './scope/scope-extension-service.js';
22
+ import { DefaultTriviaService } from './trivia/trivia-service.js';
23
+ import { CommentPreserverContribution } from './trivia/comment-preserver.js';
24
+ import { DocumentEndingPreserverContribution } from './trivia/document-ending-preserver.js';
22
25
  import { DefaultUpdateRewriteService } from './update-rewrite/update-rewrite-service.js';
23
26
  import { HydraniumDocumentValidator } from './validation/document-validator.js';
24
- import { ValidationContributionCollector } from './validation/validation-contribution-collector.js';
27
+ import { DefaultValidationContributionCollector } from './validation/validation-contribution-collector.js';
25
28
  /** Framework default — throws when either serializer entry point is invoked without an adopter binding. */
26
29
  class UnboundSerializer {
27
30
  serializeAst(_model) {
28
- throw new Error('No Serializer registered at services.serializer.Serializer — bind a Serializer<TAst, TTransfer> in your per-language module before calling ModelService.update / ModelService.save.');
31
+ throw new Error("No Serializer registered at services.serializer.Serializer — bind a Serializer<TAst, TTransfer> in your per-language module before writing through a client session's update or save.");
29
32
  }
30
33
  serializeTransfer(_model) {
31
- throw new Error('No Serializer registered at services.serializer.Serializer — bind a Serializer<TAst, TTransfer> in your per-language module before calling ModelService.update / ModelService.save.');
34
+ throw new Error("No Serializer registered at services.serializer.Serializer — bind a Serializer<TAst, TTransfer> in your per-language module before writing through a client session's update or save.");
32
35
  }
33
36
  }
34
37
  /**
@@ -69,6 +72,17 @@ export function createServerLanguageModule(_context) {
69
72
  serializer: {
70
73
  Serializer: () => new UnboundSerializer()
71
74
  },
75
+ // Bound with a sub-key per preserver so an adopter can replace one and
76
+ // keep the other. Adopters MUST avoid these two keys for their own
77
+ // contributions unless replacement is what they mean — Langium's
78
+ // deep-merge is last-wins on same-key leaves.
79
+ trivia: {
80
+ TriviaService: services => new DefaultTriviaService(services),
81
+ preservers: {
82
+ comments: services => new CommentPreserverContribution(services),
83
+ documentEnding: () => new DocumentEndingPreserverContribution()
84
+ }
85
+ },
72
86
  // The per-URI serialise / re-parse path only fires when a rule mutates,
73
87
  // so the no-op default is safe even before adopters bind a real
74
88
  // serializer / parser.
@@ -88,7 +102,7 @@ export function createServerLanguageModule(_context) {
88
102
  // option values rebinds the slot with its own `new
89
103
  // HydraniumDocumentValidator(services, { … })`.
90
104
  DocumentValidator: services => new HydraniumDocumentValidator(services),
91
- ValidationContributionCollector: services => new ValidationContributionCollector(services),
105
+ ValidationContributionCollector: services => new DefaultValidationContributionCollector(services),
92
106
  checks: {
93
107
  // Flags name-bearing nodes whose name value contains the
94
108
  // configured name separator, so qualified names can never collide
@@ -1 +1 @@
1
- {"version":3,"file":"language-module.js","sourceRoot":"","sources":["../../src/langium/language-module.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"language-module.js","sourceRoot":"","sources":["../../src/langium/language-module.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,343 @@
1
+ /********************************************************************************
2
+ * Copyright (c) 2026 CrossBreeze, EclipseSource and others.
3
+ *
4
+ * This program and the accompanying materials are made available under the
5
+ * terms of the MIT License which is available in the project root.
6
+ *
7
+ * SPDX-License-Identifier: MIT
8
+ ********************************************************************************/
9
+ import { type BaseVersion, type MaybeObservableValue, type MaybePromise, ObservableValue, type TextVersion, type Tracer, type TransferElement } from '@hydranium/protocol';
10
+ import { type AstNode } from '@hydranium/langium';
11
+ import { type CancellationToken, type Disposable, Emitter, type Event } from 'vscode-languageserver';
12
+ import { type AstDocument, type SavedAstDocument } from '../../documents/ast-document-manager.js';
13
+ import { type OpenOptions, type SessionEndCause } from '../../documents/client-session-registry.js';
14
+ import { type LogNameOptions } from '../diagnostics/logger.js';
15
+ import { type ServerSharedServices } from '../module.js';
16
+ import { type AstDiagnostic } from '../validation/document-validator.js';
17
+ import { type ModelService } from './model-service.js';
18
+ /** What a session's `update` and `save` write into one document; the session supplies its own client id. */
19
+ export interface ClientSessionWriteArgs<TTransfer> {
20
+ uri: string;
21
+ /** The whole structured model root, or its serialised textual form. */
22
+ model: TTransfer | string;
23
+ /**
24
+ * The version the write was authored against, or `'any'` to write
25
+ * unconditionally. Required, so an ungated write is a decision the caller
26
+ * makes rather than a field it forgot.
27
+ */
28
+ baseVersion: BaseVersion;
29
+ }
30
+ /** What a session's `persist` writes: the text the store holds for `uri`. */
31
+ export type ClientSessionPersistArgs = Omit<ClientSessionWriteArgs<never>, 'model'>;
32
+ /** What a session's `updateAll` writes, all or none. */
33
+ export interface ClientSessionUpdateAllArgs<TTransfer> {
34
+ updates: ClientSessionWriteArgs<TTransfer>[];
35
+ }
36
+ /**
37
+ * One participant's handle on the documents it works on, started by
38
+ * `ModelService.createSession`.
39
+ *
40
+ * The session writes only what it has open: `update`, `save` and `persist`
41
+ * fail with `DocumentNotOpenError` unless this session has the URI open in the
42
+ * synchronous step that applies or takes the text, so a write either lands
43
+ * while the document is open or fails. A document stays open until this
44
+ * session closes it, the session ends, or the file is deleted.
45
+ *
46
+ * One open per URI, without reference counting: opening a URI the session
47
+ * already has open changes nothing, and one `close` ends it.
48
+ *
49
+ * After `dispose`, every other member throws `SessionClosedError`
50
+ * synchronously, before returning a promise.
51
+ *
52
+ * Reads need no session and live on `ModelService`.
53
+ */
54
+ export interface ClientSession<TAst extends AstNode, TDiagnostic extends AstDiagnostic = AstDiagnostic, TTransfer extends TransferElement = TransferElement, TOpenOptions extends OpenOptions = OpenOptions> {
55
+ /** Unique in the process while the session is live: the author label on its writes and the key of its opens. */
56
+ readonly clientId: string;
57
+ readonly label: string;
58
+ /**
59
+ * Open `uri` for this session, reading it from disk unless some client has
60
+ * it open already or it holds this client's unsaved text within its release
61
+ * grace. `options` are kept for this open until it closes; a repeat open,
62
+ * concurrent or not, keeps the options of the first.
63
+ */
64
+ open(uri: string, options?: TOpenOptions): Promise<void>;
65
+ /** The options this session opened `uri` with, or `undefined` when it gave none or does not have `uri` open. */
66
+ openOptions(uri: string): TOpenOptions | undefined;
67
+ /**
68
+ * Create a document with `text` and open it for this session. It reaches
69
+ * disk on the first `save`. Fails when the file exists, any client has the
70
+ * URI open, or the URI waits out the release grace, and of two creates of one
71
+ * URI at most one succeeds.
72
+ *
73
+ * Resolves with the version the created document took, which a write based
74
+ * on it names: once this resolves, the store's version may already be
75
+ * another client's write.
76
+ */
77
+ create(uri: string, text: string): Promise<TextVersion>;
78
+ /**
79
+ * Write `args.model` into a document this session has open. Resolves to the
80
+ * rebuilt document once it is validated, in whichever build carried the
81
+ * write, so the answer holds every diagnostic its update event does: that
82
+ * event names this session, and a client dropping its own echo would
83
+ * otherwise never see them.
84
+ */
85
+ update(args: ClientSessionWriteArgs<TTransfer>, cancelToken?: CancellationToken): Promise<AstDocument<TAst, TDiagnostic>>;
86
+ /**
87
+ * Write several documents this session has open, all or none: a
88
+ * `ConflictError` or `DocumentNotOpenError` for any of them is thrown before
89
+ * any text applies. Resolves to the rebuilt documents, in the order given,
90
+ * each validated as {@link update}'s is.
91
+ */
92
+ updateAll(args: ClientSessionUpdateAllArgs<TTransfer>, cancelToken?: CancellationToken): Promise<AstDocument<TAst, TDiagnostic>[]>;
93
+ /** Write `args.model` as {@link update} does, then persist the document. */
94
+ save(args: ClientSessionWriteArgs<TTransfer>, cancelToken?: CancellationToken): Promise<SavedAstDocument<TAst, TDiagnostic>>;
95
+ /**
96
+ * Persist the text the store holds for `args.uri` as it is, with no update
97
+ * and no serialisation. Resolves with the version of the text written, once
98
+ * it is on disk, without waiting for a build. The saved event names this
99
+ * session, also when another client wrote the text.
100
+ */
101
+ persist(args: ClientSessionPersistArgs): Promise<TextVersion>;
102
+ /** Close this session's open of `uri`, at once. A no-op when it does not have `uri` open. */
103
+ close(uri: string): Promise<void>;
104
+ /**
105
+ * Open `uri`, run `fn`, and close `uri` when `fn` settles, whether it
106
+ * returned or threw. A URI the session already had open, or is still
107
+ * opening through another call, stays open: the close undoes only the open
108
+ * this call made.
109
+ */
110
+ withOpen<T>(uri: string, fn: () => MaybePromise<T>): Promise<T>;
111
+ /** Whether an event's `sourceClientId` names this session, i.e. the event echoes its own write. */
112
+ isOwnEcho(sourceClientId: string): boolean;
113
+ /**
114
+ * End the session: close everything it has open and free its id.
115
+ * Idempotent. `cause` is `'lost'` when the session ends because its
116
+ * client's connection went away, which lets each document it was the last
117
+ * to have open wait out the store's release grace; ending it for any other
118
+ * reason releases such a document at once.
119
+ */
120
+ dispose(cause?: SessionEndCause): void;
121
+ /**
122
+ * Fires once the session has ended, its documents closed, with the cause it
123
+ * ended with. A takeover through `createSession` ends it as `'lost'` from
124
+ * another caller, so a holder that keeps per-session state releases it here.
125
+ */
126
+ readonly onDidDispose: Event<SessionEndCause>;
127
+ }
128
+ /**
129
+ * The framework's {@link ClientSession}, built by
130
+ * {@link DefaultClientSessionFactory}.
131
+ *
132
+ * Override the protected method behind a member to change how every session
133
+ * writes, and return the subclass from a {@link ClientSessionFactory} bound on
134
+ * `model.ClientSessionFactory`. Serialising a model and rebuilding a document
135
+ * are the {@link ModelService}'s.
136
+ *
137
+ * An override of {@link dispose} calls `super.dispose(cause)`: that is what
138
+ * closes the session's opens and frees its id, and dropping `cause` reverts
139
+ * a lost client's documents without their grace.
140
+ */
141
+ export declare class DefaultClientSession<TAst extends AstNode, TDiagnostic extends AstDiagnostic = AstDiagnostic, TTransfer extends TransferElement = TransferElement, TOpenOptions extends OpenOptions = OpenOptions> implements ClientSession<TAst, TDiagnostic, TTransfer, TOpenOptions> {
142
+ protected readonly services: ServerSharedServices;
143
+ protected disposed: boolean;
144
+ /**
145
+ * This session's opens still under way, by canonical URI. Recorded before
146
+ * the first await, so a second open of the same URI joins the first rather
147
+ * than racing it, and `withOpen` can tell an open another call is making.
148
+ */
149
+ protected readonly pendingOpens: Map<string, Promise<void>>;
150
+ /**
151
+ * The options of this session's opens, by canonical URI. A first open
152
+ * records its entry before the store has the URI open, and the entry goes
153
+ * when that open closes, whoever ends it: this session, or the store for a
154
+ * deleted file. A first open that fails never opens, so nothing closes it
155
+ * and its entry stays until the next first open of the URI overwrites it;
156
+ * {@link openOptions} therefore reads an entry only while the store has the
157
+ * URI open for this session.
158
+ */
159
+ protected readonly openOptionsByUri: Map<string, TOpenOptions | undefined>;
160
+ /** Drops an open's options from {@link openOptionsByUri} when the store closes the open. */
161
+ protected readonly closeListener: Disposable;
162
+ protected readonly disposeEmitter: Emitter<SessionEndCause>;
163
+ /** Logs under `logName`, `ClientSession` when none is given, with this session's id in a bracket of its own, so a line names the session that wrote. */
164
+ protected readonly tracer: Tracer;
165
+ /** The service bound on `model.ModelService`, which serialises and rebuilds for this session. */
166
+ protected readonly modelService: ModelService<TAst, TDiagnostic, TTransfer>;
167
+ /** See {@link ClientSessionFactoryOptions.slowUpdateWarnMs}; `undefined` when not set. */
168
+ protected readonly slowUpdateWarn?: ObservableValue<number>;
169
+ readonly clientId: string;
170
+ readonly label: string;
171
+ constructor(services: ServerSharedServices, options: ClientSessionOptions);
172
+ open(uri: string, options?: TOpenOptions): Promise<void>;
173
+ openOptions(uri: string): TOpenOptions | undefined;
174
+ create(uri: string, text: string): Promise<TextVersion>;
175
+ update(args: ClientSessionWriteArgs<TTransfer>, cancelToken?: CancellationToken): Promise<AstDocument<TAst, TDiagnostic>>;
176
+ updateAll(args: ClientSessionUpdateAllArgs<TTransfer>, cancelToken?: CancellationToken): Promise<AstDocument<TAst, TDiagnostic>[]>;
177
+ save(args: ClientSessionWriteArgs<TTransfer>, cancelToken?: CancellationToken): Promise<SavedAstDocument<TAst, TDiagnostic>>;
178
+ persist(args: ClientSessionPersistArgs): Promise<TextVersion>;
179
+ close(uri: string): Promise<void>;
180
+ withOpen<T>(uri: string, fn: () => MaybePromise<T>): Promise<T>;
181
+ isOwnEcho(sourceClientId: string): boolean;
182
+ dispose(cause?: SessionEndCause): void;
183
+ get onDidDispose(): Event<SessionEndCause>;
184
+ protected assertLive(): void;
185
+ /** Throw `DocumentNotOpenError` unless this session has `uri` open. */
186
+ protected assertOpen(uri: string): void;
187
+ /**
188
+ * Throw `ConflictError` when `baseVersion` names a version other than
189
+ * `currentVersion`. A write calls it at the door and again in the
190
+ * synchronous step that applies the text, and has to call it synchronously
191
+ * there: a check separated from the apply by an await lets two writes based
192
+ * on one version both apply.
193
+ */
194
+ protected assertBaseVersion(uri: string, baseVersion: BaseVersion, currentVersion: number): void;
195
+ /**
196
+ * Serialise `args.model`, apply it to the store under this session's id,
197
+ * rebuild, and resolve to the rebuilt document.
198
+ *
199
+ * The open check and the `baseVersion` gate run at the door, so a write that
200
+ * cannot land is refused before any adopter serialiser runs, and again in
201
+ * the synchronous step that applies the text: made only before the
202
+ * serialiser's await, a close during it lets the write land on a document
203
+ * this session no longer has open, and two writes based on one version
204
+ * both apply.
205
+ *
206
+ * Resolves with the latest build of the document, which may already carry
207
+ * a newer write; that is logged at debug, and a slow update at warn when
208
+ * `ClientSessionFactoryOptions.slowUpdateWarnMs` is set. It waits for the
209
+ * builder's final phase rather than the write's own build: a later write
210
+ * cancels that build, and the one that takes over validates the document
211
+ * after the answer was taken.
212
+ */
213
+ protected updateDocument(args: ClientSessionWriteArgs<TTransfer>, cancelToken?: CancellationToken): Promise<AstDocument<TAst, TDiagnostic>>;
214
+ /**
215
+ * Write every document of `args.updates`, all or none: every model is
216
+ * serialised first, then every open check and `baseVersion` gate runs and every
217
+ * text is applied in one synchronous step. Checked at the door as well, so
218
+ * a stale set is refused before any adopter serialiser runs.
219
+ *
220
+ * The apply step relies on `AstDocumentManager.update` applying its text
221
+ * before its first await, as the default does: an override that awaits first
222
+ * lets another write land between two documents of the set.
223
+ */
224
+ protected updateDocuments(args: ClientSessionUpdateAllArgs<TTransfer>, cancelToken?: CancellationToken): Promise<AstDocument<TAst, TDiagnostic>[]>;
225
+ /**
226
+ * Write `args.model` through {@link updateDocument}, then persist it through
227
+ * {@link persistDocument}, so an override of either applies to saves too.
228
+ *
229
+ * Fails with `DocumentNotOpenError` and writes nothing when this session
230
+ * closes the URI while the text is being built. Persisted at `'any'`: the
231
+ * update already gated on `args.baseVersion` and moved the text past it.
232
+ */
233
+ protected saveDocument(args: ClientSessionWriteArgs<TTransfer>, cancelToken?: CancellationToken): Promise<SavedAstDocument<TAst, TDiagnostic>>;
234
+ /**
235
+ * Persist the store's text for `args.uri` under this session's id. Every
236
+ * write to disk a session makes goes through here, so an override sees each
237
+ * of them.
238
+ *
239
+ * The open check and the `baseVersion` gate sit in the same synchronous step
240
+ * as the manager taking the text: an await between them lets another
241
+ * client's write land after the gate, and its text is then persisted under
242
+ * this session's id without this session ever having seen it. An override
243
+ * that awaits before calling the base lets a diagram save take its
244
+ * documents' texts at different moments, and a diagram that ends during the
245
+ * await fails the documents not yet taken with `DocumentNotOpenError`.
246
+ */
247
+ protected persistDocument(args: ClientSessionPersistArgs): Promise<TextVersion>;
248
+ protected closeDocument(uri: string): Promise<void>;
249
+ /** Open `uri`, or join the open of it this session already has under way, whose options then stand. */
250
+ protected openDocument(uri: string, options: TOpenOptions | undefined): Promise<void>;
251
+ /**
252
+ * Open `uri` in the store for this session. The open path does not thread
253
+ * cancellation: the file read behind it takes no token, so a cancelled
254
+ * caller still completes the open.
255
+ *
256
+ * A first open records its options before the store opens the URI, so a
257
+ * listener of the store's open reads this open's options rather than an
258
+ * earlier one's.
259
+ */
260
+ protected registerOpen(uri: string, options: TOpenOptions | undefined): Promise<void>;
261
+ protected canonicalKey(uri: string): string;
262
+ protected createDocument(uri: string, text: string): Promise<TextVersion>;
263
+ protected runWithOpen<T>(uri: string, fn: () => MaybePromise<T>): Promise<T>;
264
+ /**
265
+ * Undo an open that completed after the session ended, then fail it.
266
+ *
267
+ * Ending the session closed only what it had open at that moment. An open
268
+ * still reading from disk registers afterwards, under an id that is no
269
+ * longer a session, and nothing would ever close it.
270
+ *
271
+ * Opens are keyed by id, so once a new session holds the same id this open
272
+ * is indistinguishable from one of its own, and closing it would close the
273
+ * new session's. It is left to that session, which releases it at its end.
274
+ */
275
+ protected rejectIfEnded(uri: string, wasOpen: boolean): Promise<void>;
276
+ }
277
+ /** Constructor options for {@link DefaultClientSessionFactory}. */
278
+ export interface ClientSessionFactoryOptions extends LogNameOptions {
279
+ /**
280
+ * The name the factory and every session it builds log under, so one
281
+ * option renames both. Default: `ClientSessionFactory` for the factory,
282
+ * and `ClientSession` for a session, which adds its client id in a bracket
283
+ * of its own.
284
+ */
285
+ readonly logName?: string;
286
+ /**
287
+ * When set, a session's `update` logs a `warn` line if its end-to-end wait
288
+ * (serialise, apply, rebuild) takes at least this many milliseconds. Default
289
+ * `undefined`: no warn line, and no per-update stopwatch.
290
+ *
291
+ * Observability only: the update is neither aborted nor resolved
292
+ * differently. A hard timeout that throws is an override of
293
+ * `DefaultClientSession.updateDocument` racing the parent call against a
294
+ * deadline.
295
+ *
296
+ * A recommended starting threshold is 2-5 seconds; workspaces with very
297
+ * large documents or slow validation can exceed 5 s on a cold build. A
298
+ * `Settings.number` binding retunes it live.
299
+ */
300
+ readonly slowUpdateWarnMs?: MaybeObservableValue<number>;
301
+ }
302
+ /**
303
+ * Constructor options for {@link DefaultClientSession}: the factory's options,
304
+ * which it forwards, plus the session's identity.
305
+ */
306
+ export interface ClientSessionOptions extends ClientSessionFactoryOptions {
307
+ readonly clientId: string;
308
+ /** What the session is. Pass one: the client id stands in for it otherwise. */
309
+ readonly label?: string;
310
+ }
311
+ /**
312
+ * Builds the handle for a session `ModelService.createSession` has already
313
+ * registered, so registration and the uniqueness check cannot be skipped by
314
+ * binding a factory of one's own. Bind one on `model.ClientSessionFactory` to
315
+ * use a session class of your own. A factory that does not pass
316
+ * {@link ClientSessionFactoryOptions.slowUpdateWarnMs} on to its sessions
317
+ * loses their slow-update warn; subclassing {@link DefaultClientSessionFactory}
318
+ * keeps it.
319
+ *
320
+ * Typed for every grammar, since the slot is shared: `createSession` narrows
321
+ * the result to its caller's types.
322
+ */
323
+ export interface ClientSessionFactory {
324
+ create(clientId: string, label: string): ClientSession<AstNode>;
325
+ }
326
+ /**
327
+ * The framework's {@link ClientSessionFactory}: a {@link DefaultClientSession}
328
+ * over the {@link ModelService} bound on `model.ModelService`, which the session
329
+ * serialises and rebuilds through. A model service constructed outside that
330
+ * slot therefore starts sessions that write through the bound one.
331
+ *
332
+ * A subclass that overrides {@link create} to build a session class of its
333
+ * own passes {@link options} on to that session's constructor; a session built
334
+ * without them has no slow-update warn and logs under the default name.
335
+ */
336
+ export declare class DefaultClientSessionFactory implements ClientSessionFactory {
337
+ protected readonly services: ServerSharedServices;
338
+ protected readonly options: ClientSessionFactoryOptions;
339
+ protected readonly tracer: Tracer;
340
+ constructor(services: ServerSharedServices, options?: ClientSessionFactoryOptions);
341
+ create(clientId: string, label: string): ClientSession<AstNode>;
342
+ }
343
+ //# sourceMappingURL=client-session.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client-session.d.ts","sourceRoot":"","sources":["../../../src/langium/model-service/client-session.ts"],"names":[],"mappings":"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"}