@hydranium/core 1.0.0-next.29 → 1.0.0-next.298

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 (760) hide show
  1. package/README.md +65 -82
  2. package/lib/browser/index.d.ts +10 -0
  3. package/lib/browser/index.d.ts.map +1 -0
  4. package/lib/browser/index.js +14 -0
  5. package/lib/browser/index.js.map +1 -0
  6. package/lib/browser/indexeddb-file-system-store.d.ts +82 -0
  7. package/lib/browser/indexeddb-file-system-store.d.ts.map +1 -0
  8. package/lib/browser/indexeddb-file-system-store.js +181 -0
  9. package/lib/browser/indexeddb-file-system-store.js.map +1 -0
  10. package/lib/documents/ast-document-manager.d.ts +256 -124
  11. package/lib/documents/ast-document-manager.d.ts.map +1 -1
  12. package/lib/documents/ast-document-manager.js +293 -132
  13. package/lib/documents/ast-document-manager.js.map +1 -1
  14. package/lib/documents/client-ids.d.ts +5 -19
  15. package/lib/documents/client-ids.d.ts.map +1 -1
  16. package/lib/documents/client-ids.js +5 -19
  17. package/lib/documents/client-ids.js.map +1 -1
  18. package/lib/documents/client-session-errors.d.ts +15 -0
  19. package/lib/documents/client-session-errors.d.ts.map +1 -0
  20. package/lib/documents/client-session-errors.js +15 -0
  21. package/lib/documents/client-session-errors.js.map +1 -0
  22. package/lib/documents/client-session-registry.d.ts +146 -0
  23. package/lib/documents/client-session-registry.d.ts.map +1 -0
  24. package/lib/documents/client-session-registry.js +207 -0
  25. package/lib/documents/client-session-registry.js.map +1 -0
  26. package/lib/documents/dirty-state-tracker.d.ts +101 -0
  27. package/lib/documents/dirty-state-tracker.d.ts.map +1 -0
  28. package/lib/documents/dirty-state-tracker.js +85 -0
  29. package/lib/documents/dirty-state-tracker.js.map +1 -0
  30. package/lib/documents/document-release-handler.d.ts +204 -0
  31. package/lib/documents/document-release-handler.d.ts.map +1 -0
  32. package/lib/documents/document-release-handler.js +317 -0
  33. package/lib/documents/document-release-handler.js.map +1 -0
  34. package/lib/documents/document-release-scheduler.d.ts +67 -0
  35. package/lib/documents/document-release-scheduler.d.ts.map +1 -0
  36. package/lib/documents/document-release-scheduler.js +80 -0
  37. package/lib/documents/document-release-scheduler.js.map +1 -0
  38. package/lib/documents/file-system-task-queue.d.ts +52 -0
  39. package/lib/documents/file-system-task-queue.d.ts.map +1 -0
  40. package/lib/documents/file-system-task-queue.js +37 -0
  41. package/lib/documents/file-system-task-queue.js.map +1 -0
  42. package/lib/documents/hydranium-text-documents.d.ts +419 -282
  43. package/lib/documents/hydranium-text-documents.d.ts.map +1 -1
  44. package/lib/documents/hydranium-text-documents.js +856 -483
  45. package/lib/documents/hydranium-text-documents.js.map +1 -1
  46. package/lib/documents/index.d.ts +10 -2
  47. package/lib/documents/index.d.ts.map +1 -1
  48. package/lib/documents/index.js +10 -2
  49. package/lib/documents/index.js.map +1 -1
  50. package/lib/documents/language-client-shadow.d.ts +218 -0
  51. package/lib/documents/language-client-shadow.d.ts.map +1 -0
  52. package/lib/documents/language-client-shadow.js +284 -0
  53. package/lib/documents/language-client-shadow.js.map +1 -0
  54. package/lib/documents/model-ledger.d.ts +47 -0
  55. package/lib/documents/model-ledger.d.ts.map +1 -0
  56. package/lib/documents/model-ledger.js +30 -0
  57. package/lib/documents/model-ledger.js.map +1 -0
  58. package/lib/documents/text-ledger.d.ts +64 -0
  59. package/lib/documents/text-ledger.d.ts.map +1 -0
  60. package/lib/documents/text-ledger.js +63 -0
  61. package/lib/documents/text-ledger.js.map +1 -0
  62. package/lib/documents/version-sync-service.d.ts +138 -0
  63. package/lib/documents/version-sync-service.d.ts.map +1 -0
  64. package/lib/documents/version-sync-service.js +173 -0
  65. package/lib/documents/version-sync-service.js.map +1 -0
  66. package/lib/index.d.ts +5 -0
  67. package/lib/index.d.ts.map +1 -1
  68. package/lib/index.js +8 -0
  69. package/lib/index.js.map +1 -1
  70. package/lib/langium/ast-extension/ast-extension-service.d.ts +42 -31
  71. package/lib/langium/ast-extension/ast-extension-service.d.ts.map +1 -1
  72. package/lib/langium/ast-extension/ast-extension-service.js +45 -19
  73. package/lib/langium/ast-extension/ast-extension-service.js.map +1 -1
  74. package/lib/langium/ast-extension/ast-node-builder.d.ts +32 -9
  75. package/lib/langium/ast-extension/ast-node-builder.d.ts.map +1 -1
  76. package/lib/langium/ast-extension/ast-node-builder.js +60 -22
  77. package/lib/langium/ast-extension/ast-node-builder.js.map +1 -1
  78. package/lib/langium/bootstrap.d.ts +49 -36
  79. package/lib/langium/bootstrap.d.ts.map +1 -1
  80. package/lib/langium/bootstrap.js +91 -45
  81. package/lib/langium/bootstrap.js.map +1 -1
  82. package/lib/langium/build-phase-pass/build-phase-pass-service.d.ts +9 -9
  83. package/lib/langium/build-phase-pass/build-phase-pass-service.d.ts.map +1 -1
  84. package/lib/langium/build-phase-pass/build-phase-pass-service.js +25 -16
  85. package/lib/langium/build-phase-pass/build-phase-pass-service.js.map +1 -1
  86. package/lib/langium/build-phase-pass/build-phase-pass.d.ts +20 -8
  87. package/lib/langium/build-phase-pass/build-phase-pass.d.ts.map +1 -1
  88. package/lib/langium/build-phase-pass/build-phase-pass.js +20 -0
  89. package/lib/langium/build-phase-pass/build-phase-pass.js.map +1 -1
  90. package/lib/langium/composite-ast-reflection.d.ts +46 -0
  91. package/lib/langium/composite-ast-reflection.d.ts.map +1 -0
  92. package/lib/langium/composite-ast-reflection.js +97 -0
  93. package/lib/langium/composite-ast-reflection.js.map +1 -0
  94. package/lib/langium/config/configuration-provider.d.ts +81 -0
  95. package/lib/langium/config/configuration-provider.d.ts.map +1 -0
  96. package/lib/langium/config/configuration-provider.js +112 -0
  97. package/lib/langium/config/configuration-provider.js.map +1 -0
  98. package/lib/langium/config/index.d.ts +1 -0
  99. package/lib/langium/config/index.d.ts.map +1 -1
  100. package/lib/langium/config/index.js +1 -0
  101. package/lib/langium/config/index.js.map +1 -1
  102. package/lib/langium/config/settings.js.map +1 -1
  103. package/lib/langium/diagnostics/hydranium-langium-profiler.d.ts +9 -20
  104. package/lib/langium/diagnostics/hydranium-langium-profiler.d.ts.map +1 -1
  105. package/lib/langium/diagnostics/hydranium-langium-profiler.js +15 -24
  106. package/lib/langium/diagnostics/hydranium-langium-profiler.js.map +1 -1
  107. package/lib/langium/diagnostics/log-preamble.js +1 -1
  108. package/lib/langium/diagnostics/log-preamble.js.map +1 -1
  109. package/lib/langium/diagnostics/logger.d.ts +19 -4
  110. package/lib/langium/diagnostics/logger.d.ts.map +1 -1
  111. package/lib/langium/diagnostics/logger.js +36 -11
  112. package/lib/langium/diagnostics/logger.js.map +1 -1
  113. package/lib/langium/diagnostics/lsp-logger.d.ts +17 -0
  114. package/lib/langium/diagnostics/lsp-logger.d.ts.map +1 -1
  115. package/lib/langium/diagnostics/lsp-logger.js +58 -17
  116. package/lib/langium/diagnostics/lsp-logger.js.map +1 -1
  117. package/lib/langium/diagnostics/server-tracer.d.ts.map +1 -1
  118. package/lib/langium/diagnostics/server-tracer.js.map +1 -1
  119. package/lib/langium/document-builder/build-pipeline-integration.d.ts +21 -1
  120. package/lib/langium/document-builder/build-pipeline-integration.d.ts.map +1 -1
  121. package/lib/langium/document-builder/build-pipeline-integration.js +28 -30
  122. package/lib/langium/document-builder/build-pipeline-integration.js.map +1 -1
  123. package/lib/langium/document-builder/build-session.d.ts +6 -5
  124. package/lib/langium/document-builder/build-session.d.ts.map +1 -1
  125. package/lib/langium/document-builder/build-session.js +5 -5
  126. package/lib/langium/document-builder/build-session.js.map +1 -1
  127. package/lib/langium/document-builder/document-builder.d.ts +309 -35
  128. package/lib/langium/document-builder/document-builder.d.ts.map +1 -1
  129. package/lib/langium/document-builder/document-builder.js +511 -75
  130. package/lib/langium/document-builder/document-builder.js.map +1 -1
  131. package/lib/langium/documentation/comment-provider.d.ts.map +1 -1
  132. package/lib/langium/documentation/comment-provider.js.map +1 -1
  133. package/lib/langium/integration-services.d.ts +40 -24
  134. package/lib/langium/integration-services.d.ts.map +1 -1
  135. package/lib/langium/integration-services.js +7 -4
  136. package/lib/langium/integration-services.js.map +1 -1
  137. package/lib/langium/integrity/integrity-rule.d.ts +16 -8
  138. package/lib/langium/integrity/integrity-rule.d.ts.map +1 -1
  139. package/lib/langium/integrity/integrity-rule.js.map +1 -1
  140. package/lib/langium/integrity/integrity-service.d.ts +83 -27
  141. package/lib/langium/integrity/integrity-service.d.ts.map +1 -1
  142. package/lib/langium/integrity/integrity-service.js +273 -63
  143. package/lib/langium/integrity/integrity-service.js.map +1 -1
  144. package/lib/langium/keys/containment.d.ts +64 -0
  145. package/lib/langium/keys/containment.d.ts.map +1 -0
  146. package/lib/langium/keys/containment.js +53 -0
  147. package/lib/langium/keys/containment.js.map +1 -0
  148. package/lib/langium/keys/index.d.ts +1 -0
  149. package/lib/langium/keys/index.d.ts.map +1 -1
  150. package/lib/langium/keys/index.js +1 -0
  151. package/lib/langium/keys/index.js.map +1 -1
  152. package/lib/langium/keys/name-based-key-provider.d.ts +4 -0
  153. package/lib/langium/keys/name-based-key-provider.d.ts.map +1 -1
  154. package/lib/langium/keys/name-based-key-provider.js +4 -0
  155. package/lib/langium/keys/name-based-key-provider.js.map +1 -1
  156. package/lib/langium/keys/positional-key-provider.d.ts.map +1 -1
  157. package/lib/langium/keys/positional-key-provider.js.map +1 -1
  158. package/lib/langium/labeling/label-provider.d.ts.map +1 -1
  159. package/lib/langium/labeling/label-provider.js.map +1 -1
  160. package/lib/langium/language-module.d.ts +30 -5
  161. package/lib/langium/language-module.d.ts.map +1 -1
  162. package/lib/langium/language-module.js +18 -4
  163. package/lib/langium/language-module.js.map +1 -1
  164. package/lib/langium/model-service/client-session.d.ts +374 -0
  165. package/lib/langium/model-service/client-session.d.ts.map +1 -0
  166. package/lib/langium/model-service/client-session.js +446 -0
  167. package/lib/langium/model-service/client-session.js.map +1 -0
  168. package/lib/langium/model-service/index.d.ts +2 -0
  169. package/lib/langium/model-service/index.d.ts.map +1 -1
  170. package/lib/langium/model-service/index.js +2 -0
  171. package/lib/langium/model-service/index.js.map +1 -1
  172. package/lib/langium/model-service/model-events.d.ts +66 -0
  173. package/lib/langium/model-service/model-events.d.ts.map +1 -0
  174. package/lib/langium/model-service/model-events.js +10 -0
  175. package/lib/langium/model-service/model-events.js.map +1 -0
  176. package/lib/langium/model-service/model-service.d.ts +480 -289
  177. package/lib/langium/model-service/model-service.d.ts.map +1 -1
  178. package/lib/langium/model-service/model-service.js +597 -456
  179. package/lib/langium/model-service/model-service.js.map +1 -1
  180. package/lib/langium/module.d.ts +158 -37
  181. package/lib/langium/module.d.ts.map +1 -1
  182. package/lib/langium/module.js +52 -36
  183. package/lib/langium/module.js.map +1 -1
  184. package/lib/langium/naming/name-provider.d.ts +42 -7
  185. package/lib/langium/naming/name-provider.d.ts.map +1 -1
  186. package/lib/langium/naming/name-provider.js +10 -4
  187. package/lib/langium/naming/name-provider.js.map +1 -1
  188. package/lib/langium/naming/name-separator-validation.d.ts +23 -1
  189. package/lib/langium/naming/name-separator-validation.d.ts.map +1 -1
  190. package/lib/langium/naming/name-separator-validation.js +22 -0
  191. package/lib/langium/naming/name-separator-validation.js.map +1 -1
  192. package/lib/langium/project/abstract-project-manager.d.ts.map +1 -1
  193. package/lib/langium/project/abstract-project-manager.js +13 -6
  194. package/lib/langium/project/abstract-project-manager.js.map +1 -1
  195. package/lib/langium/project/project-change-event.d.ts +2 -2
  196. package/lib/langium/project/single-project-manager.d.ts.map +1 -1
  197. package/lib/langium/project/single-project-manager.js.map +1 -1
  198. package/lib/langium/residency/cst-residency-service.d.ts +35 -12
  199. package/lib/langium/residency/cst-residency-service.d.ts.map +1 -1
  200. package/lib/langium/residency/cst-residency-service.js +24 -58
  201. package/lib/langium/residency/cst-residency-service.js.map +1 -1
  202. package/lib/langium/scope/ast-node-description-provider.d.ts.map +1 -1
  203. package/lib/langium/scope/ast-node-description-provider.js.map +1 -1
  204. package/lib/langium/scope/fallback-scope.d.ts +27 -0
  205. package/lib/langium/scope/fallback-scope.d.ts.map +1 -0
  206. package/lib/langium/scope/fallback-scope.js +35 -0
  207. package/lib/langium/scope/fallback-scope.js.map +1 -0
  208. package/lib/langium/scope/hydranium-scope-computation.d.ts +21 -18
  209. package/lib/langium/scope/hydranium-scope-computation.d.ts.map +1 -1
  210. package/lib/langium/scope/hydranium-scope-computation.js +38 -39
  211. package/lib/langium/scope/hydranium-scope-computation.js.map +1 -1
  212. package/lib/langium/scope/hydranium-scope-provider.d.ts +39 -17
  213. package/lib/langium/scope/hydranium-scope-provider.d.ts.map +1 -1
  214. package/lib/langium/scope/hydranium-scope-provider.js +52 -26
  215. package/lib/langium/scope/hydranium-scope-provider.js.map +1 -1
  216. package/lib/langium/scope/index.d.ts +1 -0
  217. package/lib/langium/scope/index.d.ts.map +1 -1
  218. package/lib/langium/scope/index.js +1 -0
  219. package/lib/langium/scope/index.js.map +1 -1
  220. package/lib/langium/scope/reference-builder.d.ts.map +1 -1
  221. package/lib/langium/scope/reference-builder.js.map +1 -1
  222. package/lib/langium/scope/reference-candidate-provider.d.ts +6 -5
  223. package/lib/langium/scope/reference-candidate-provider.d.ts.map +1 -1
  224. package/lib/langium/scope/reference-candidate-provider.js +3 -2
  225. package/lib/langium/scope/reference-candidate-provider.js.map +1 -1
  226. package/lib/langium/scope/scope-extension-service.d.ts +41 -37
  227. package/lib/langium/scope/scope-extension-service.d.ts.map +1 -1
  228. package/lib/langium/scope/scope-extension-service.js +57 -29
  229. package/lib/langium/scope/scope-extension-service.js.map +1 -1
  230. package/lib/langium/scope/scoped-ast-node-description.d.ts +1 -3
  231. package/lib/langium/scope/scoped-ast-node-description.d.ts.map +1 -1
  232. package/lib/langium/scope/scoped-ast-node-description.js +1 -3
  233. package/lib/langium/scope/scoped-ast-node-description.js.map +1 -1
  234. package/lib/langium/serialization/abstract-serializer.d.ts +38 -27
  235. package/lib/langium/serialization/abstract-serializer.d.ts.map +1 -1
  236. package/lib/langium/serialization/abstract-serializer.js +54 -30
  237. package/lib/langium/serialization/abstract-serializer.js.map +1 -1
  238. package/lib/langium/serialization/json-serializer.d.ts +8 -1
  239. package/lib/langium/serialization/json-serializer.d.ts.map +1 -1
  240. package/lib/langium/serialization/json-serializer.js +13 -3
  241. package/lib/langium/serialization/json-serializer.js.map +1 -1
  242. package/lib/langium/serialization/serializer.d.ts +1 -1
  243. package/lib/langium/serialization/yaml-serializer.d.ts +4 -0
  244. package/lib/langium/serialization/yaml-serializer.d.ts.map +1 -1
  245. package/lib/langium/serialization/yaml-serializer.js +4 -0
  246. package/lib/langium/serialization/yaml-serializer.js.map +1 -1
  247. package/lib/langium/service-registry.d.ts +29 -1
  248. package/lib/langium/service-registry.d.ts.map +1 -1
  249. package/lib/langium/service-registry.js +37 -0
  250. package/lib/langium/service-registry.js.map +1 -1
  251. package/lib/langium/shared-services.d.ts +23 -6
  252. package/lib/langium/shared-services.d.ts.map +1 -1
  253. package/lib/langium/shared-services.js.map +1 -1
  254. package/lib/langium/single-langium-copy.d.ts +22 -0
  255. package/lib/langium/single-langium-copy.d.ts.map +1 -0
  256. package/lib/langium/single-langium-copy.js +36 -0
  257. package/lib/langium/single-langium-copy.js.map +1 -0
  258. package/lib/langium/transfer/transfer-encoder.d.ts +84 -35
  259. package/lib/langium/transfer/transfer-encoder.d.ts.map +1 -1
  260. package/lib/langium/transfer/transfer-encoder.js +34 -23
  261. package/lib/langium/transfer/transfer-encoder.js.map +1 -1
  262. package/lib/langium/trivia/comment-preserver.d.ts +423 -0
  263. package/lib/langium/trivia/comment-preserver.d.ts.map +1 -0
  264. package/lib/langium/trivia/comment-preserver.js +906 -0
  265. package/lib/langium/trivia/comment-preserver.js.map +1 -0
  266. package/lib/langium/trivia/document-ending-preserver.d.ts +51 -0
  267. package/lib/langium/trivia/document-ending-preserver.d.ts.map +1 -0
  268. package/lib/langium/trivia/document-ending-preserver.js +62 -0
  269. package/lib/langium/trivia/document-ending-preserver.js.map +1 -0
  270. package/lib/langium/trivia/index.d.ts +14 -0
  271. package/lib/langium/trivia/index.d.ts.map +1 -0
  272. package/lib/langium/trivia/index.js +14 -0
  273. package/lib/langium/trivia/index.js.map +1 -0
  274. package/lib/langium/trivia/trivia-contribution.d.ts +37 -0
  275. package/lib/langium/trivia/trivia-contribution.d.ts.map +1 -0
  276. package/lib/langium/trivia/trivia-contribution.js +10 -0
  277. package/lib/langium/trivia/trivia-contribution.js.map +1 -0
  278. package/lib/langium/trivia/trivia-preserver.d.ts +52 -0
  279. package/lib/langium/trivia/trivia-preserver.d.ts.map +1 -0
  280. package/lib/langium/trivia/trivia-preserver.js +10 -0
  281. package/lib/langium/trivia/trivia-preserver.js.map +1 -0
  282. package/lib/langium/trivia/trivia-service.d.ts +70 -0
  283. package/lib/langium/trivia/trivia-service.d.ts.map +1 -0
  284. package/lib/langium/trivia/trivia-service.js +56 -0
  285. package/lib/langium/trivia/trivia-service.js.map +1 -0
  286. package/lib/langium/update-rewrite/normalize-empty-strings.d.ts.map +1 -1
  287. package/lib/langium/update-rewrite/update-rewrite-service.d.ts +1 -1
  288. package/lib/langium/update-rewrite/update-rewrite-service.d.ts.map +1 -1
  289. package/lib/langium/update-rewrite/update-rewrite-service.js.map +1 -1
  290. package/lib/langium/update-rewrite/update-rewrite.d.ts +1 -1
  291. package/lib/langium/validation/document-validator.d.ts +280 -9
  292. package/lib/langium/validation/document-validator.d.ts.map +1 -1
  293. package/lib/langium/validation/document-validator.js +453 -8
  294. package/lib/langium/validation/document-validator.js.map +1 -1
  295. package/lib/langium/validation/validation-contribution-collector.d.ts +9 -1
  296. package/lib/langium/validation/validation-contribution-collector.d.ts.map +1 -1
  297. package/lib/langium/validation/validation-contribution-collector.js +1 -1
  298. package/lib/langium/validation/validation-contribution-collector.js.map +1 -1
  299. package/lib/langium/workspace/document-uri-policy.d.ts +24 -15
  300. package/lib/langium/workspace/document-uri-policy.d.ts.map +1 -1
  301. package/lib/langium/workspace/document-uri-policy.js +22 -13
  302. package/lib/langium/workspace/document-uri-policy.js.map +1 -1
  303. package/lib/langium/workspace/file-not-found.d.ts +23 -0
  304. package/lib/langium/workspace/file-not-found.d.ts.map +1 -0
  305. package/lib/langium/workspace/file-not-found.js +31 -0
  306. package/lib/langium/workspace/file-not-found.js.map +1 -0
  307. package/lib/langium/workspace/file-system-provider.d.ts +165 -8
  308. package/lib/langium/workspace/file-system-provider.d.ts.map +1 -1
  309. package/lib/langium/workspace/file-system-provider.js +111 -13
  310. package/lib/langium/workspace/file-system-provider.js.map +1 -1
  311. package/lib/langium/workspace/hydranium-langium-document-factory.d.ts +31 -1
  312. package/lib/langium/workspace/hydranium-langium-document-factory.d.ts.map +1 -1
  313. package/lib/langium/workspace/hydranium-langium-document-factory.js +54 -0
  314. package/lib/langium/workspace/hydranium-langium-document-factory.js.map +1 -1
  315. package/lib/langium/workspace/hydranium-workspace-lock.d.ts +43 -1
  316. package/lib/langium/workspace/hydranium-workspace-lock.d.ts.map +1 -1
  317. package/lib/langium/workspace/hydranium-workspace-lock.js +58 -1
  318. package/lib/langium/workspace/hydranium-workspace-lock.js.map +1 -1
  319. package/lib/langium/workspace/hydranium-workspace-manager.d.ts +124 -22
  320. package/lib/langium/workspace/hydranium-workspace-manager.d.ts.map +1 -1
  321. package/lib/langium/workspace/hydranium-workspace-manager.js +212 -31
  322. package/lib/langium/workspace/hydranium-workspace-manager.js.map +1 -1
  323. package/lib/langium/workspace/in-memory-file-system-provider.d.ts +26 -9
  324. package/lib/langium/workspace/in-memory-file-system-provider.d.ts.map +1 -1
  325. package/lib/langium/workspace/in-memory-file-system-provider.js +45 -22
  326. package/lib/langium/workspace/in-memory-file-system-provider.js.map +1 -1
  327. package/lib/langium/workspace/index-manager.d.ts.map +1 -1
  328. package/lib/langium/workspace/index-manager.js.map +1 -1
  329. package/lib/langium/workspace/index.d.ts +1 -0
  330. package/lib/langium/workspace/index.d.ts.map +1 -1
  331. package/lib/langium/workspace/index.js +1 -0
  332. package/lib/langium/workspace/index.js.map +1 -1
  333. package/lib/langium/workspace/initialize-workspace.d.ts +31 -2
  334. package/lib/langium/workspace/initialize-workspace.d.ts.map +1 -1
  335. package/lib/langium/workspace/initialize-workspace.js +13 -5
  336. package/lib/langium/workspace/initialize-workspace.js.map +1 -1
  337. package/lib/langium/workspace/langium-documents.d.ts +7 -0
  338. package/lib/langium/workspace/langium-documents.d.ts.map +1 -1
  339. package/lib/langium/workspace/langium-documents.js +18 -1
  340. package/lib/langium/workspace/langium-documents.js.map +1 -1
  341. package/lib/langium/workspace/persistent-file-system-provider.d.ts +15 -9
  342. package/lib/langium/workspace/persistent-file-system-provider.d.ts.map +1 -1
  343. package/lib/langium/workspace/persistent-file-system-provider.js +25 -13
  344. package/lib/langium/workspace/persistent-file-system-provider.js.map +1 -1
  345. package/lib/langium/workspace/self-save-registry.d.ts +84 -0
  346. package/lib/langium/workspace/self-save-registry.d.ts.map +1 -0
  347. package/lib/{documents → langium/workspace}/self-save-registry.js +33 -22
  348. package/lib/langium/workspace/self-save-registry.js.map +1 -0
  349. package/lib/langium/workspace/virtual-document.d.ts +55 -21
  350. package/lib/langium/workspace/virtual-document.d.ts.map +1 -1
  351. package/lib/langium/workspace/virtual-document.js +87 -24
  352. package/lib/langium/workspace/virtual-document.js.map +1 -1
  353. package/lib/langium/workspace/write-lock-scope.d.ts +22 -10
  354. package/lib/langium/workspace/write-lock-scope.d.ts.map +1 -1
  355. package/lib/langium/workspace/write-lock-scope.js +15 -5
  356. package/lib/langium/workspace/write-lock-scope.js.map +1 -1
  357. package/lib/launcher/integrated-server.d.ts +3 -1
  358. package/lib/launcher/integrated-server.d.ts.map +1 -1
  359. package/lib/locale/index.d.ts +10 -0
  360. package/lib/locale/index.d.ts.map +1 -0
  361. package/lib/locale/index.js +10 -0
  362. package/lib/locale/index.js.map +1 -0
  363. package/lib/locale/server-locale.d.ts +73 -0
  364. package/lib/locale/server-locale.d.ts.map +1 -0
  365. package/lib/locale/server-locale.js +61 -0
  366. package/lib/locale/server-locale.js.map +1 -0
  367. package/lib/lsp/completion/hydranium-completion-provider.d.ts +44 -2
  368. package/lib/lsp/completion/hydranium-completion-provider.d.ts.map +1 -1
  369. package/lib/lsp/completion/hydranium-completion-provider.js +68 -0
  370. package/lib/lsp/completion/hydranium-completion-provider.js.map +1 -1
  371. package/lib/lsp/connection-features.d.ts +23 -0
  372. package/lib/lsp/connection-features.d.ts.map +1 -0
  373. package/lib/lsp/connection-features.js +60 -0
  374. package/lib/lsp/connection-features.js.map +1 -0
  375. package/lib/lsp/diagnostics-connection.d.ts +27 -0
  376. package/lib/lsp/diagnostics-connection.d.ts.map +1 -0
  377. package/lib/lsp/diagnostics-connection.js +53 -0
  378. package/lib/lsp/diagnostics-connection.js.map +1 -0
  379. package/lib/lsp/hydranium-document-update-handler.d.ts +126 -82
  380. package/lib/lsp/hydranium-document-update-handler.d.ts.map +1 -1
  381. package/lib/lsp/hydranium-document-update-handler.js +235 -102
  382. package/lib/lsp/hydranium-document-update-handler.js.map +1 -1
  383. package/lib/lsp/index.d.ts +3 -1
  384. package/lib/lsp/index.d.ts.map +1 -1
  385. package/lib/lsp/index.js +3 -1
  386. package/lib/lsp/index.js.map +1 -1
  387. package/lib/lsp/lsp-latency.d.ts +39 -0
  388. package/lib/lsp/lsp-latency.d.ts.map +1 -0
  389. package/lib/lsp/lsp-latency.js +58 -0
  390. package/lib/lsp/lsp-latency.js.map +1 -0
  391. package/lib/lsp/semantic-token-provider.d.ts +34 -1
  392. package/lib/lsp/semantic-token-provider.d.ts.map +1 -1
  393. package/lib/lsp/semantic-token-provider.js +55 -8
  394. package/lib/lsp/semantic-token-provider.js.map +1 -1
  395. package/lib/lsp/shared-module.d.ts +4 -8
  396. package/lib/lsp/shared-module.d.ts.map +1 -1
  397. package/lib/lsp/shared-module.js.map +1 -1
  398. package/lib/lsp/start-language-server.d.ts +8 -7
  399. package/lib/lsp/start-language-server.d.ts.map +1 -1
  400. package/lib/lsp/start-language-server.js +13 -7
  401. package/lib/lsp/start-language-server.js.map +1 -1
  402. package/lib/messages/carriers.d.ts +18 -12
  403. package/lib/messages/carriers.d.ts.map +1 -1
  404. package/lib/messages/carriers.js +22 -13
  405. package/lib/messages/carriers.js.map +1 -1
  406. package/lib/messages/index.d.ts +4 -1
  407. package/lib/messages/index.d.ts.map +1 -1
  408. package/lib/messages/index.js +4 -1
  409. package/lib/messages/index.js.map +1 -1
  410. package/lib/messages/renderer.d.ts +142 -0
  411. package/lib/messages/renderer.d.ts.map +1 -0
  412. package/lib/messages/renderer.js +165 -0
  413. package/lib/messages/renderer.js.map +1 -0
  414. package/lib/node/event-loop-monitor.d.ts.map +1 -1
  415. package/lib/node/event-loop-monitor.js +2 -1
  416. package/lib/node/event-loop-monitor.js.map +1 -1
  417. package/lib/node/heap-ceiling.d.ts +61 -0
  418. package/lib/node/heap-ceiling.d.ts.map +1 -0
  419. package/lib/node/heap-ceiling.js +72 -0
  420. package/lib/node/heap-ceiling.js.map +1 -0
  421. package/lib/node/index.d.ts +1 -1
  422. package/lib/node/index.d.ts.map +1 -1
  423. package/lib/node/index.js +5 -1
  424. package/lib/node/index.js.map +1 -1
  425. package/lib/node/latency-from-env.d.ts +1 -1
  426. package/lib/node/latency-from-env.js +1 -1
  427. package/lib/node/lint-grammar.js.map +1 -1
  428. package/lib/node/log-preamble-node.d.ts +5 -3
  429. package/lib/node/log-preamble-node.d.ts.map +1 -1
  430. package/lib/node/log-preamble-node.js +13 -10
  431. package/lib/node/log-preamble-node.js.map +1 -1
  432. package/lib/node/measure-memory.d.ts.map +1 -1
  433. package/lib/node/measure-memory.js +5 -4
  434. package/lib/node/measure-memory.js.map +1 -1
  435. package/lib/node/memory-monitor.d.ts +2 -2
  436. package/lib/node/memory-monitor.d.ts.map +1 -1
  437. package/lib/node/memory-monitor.js +9 -10
  438. package/lib/node/memory-monitor.js.map +1 -1
  439. package/lib/node/node-file-system-provider.d.ts +67 -9
  440. package/lib/node/node-file-system-provider.d.ts.map +1 -1
  441. package/lib/node/node-file-system-provider.js +198 -53
  442. package/lib/node/node-file-system-provider.js.map +1 -1
  443. package/lib/node/profile-capture.d.ts +12 -4
  444. package/lib/node/profile-capture.d.ts.map +1 -1
  445. package/lib/node/profile-capture.js +8 -6
  446. package/lib/node/profile-capture.js.map +1 -1
  447. package/lib/node/profile-digest.js.map +1 -1
  448. package/lib/node/profiling-run.d.ts +13 -3
  449. package/lib/node/profiling-run.d.ts.map +1 -1
  450. package/lib/node/profiling-run.js +17 -8
  451. package/lib/node/profiling-run.js.map +1 -1
  452. package/lib/node/rename-over-open-readers.d.ts +61 -0
  453. package/lib/node/rename-over-open-readers.d.ts.map +1 -0
  454. package/lib/node/rename-over-open-readers.js +80 -0
  455. package/lib/node/rename-over-open-readers.js.map +1 -0
  456. package/lib/node/server-diagnostics.js +1 -1
  457. package/lib/node/server-diagnostics.js.map +1 -1
  458. package/lib/node/server-state-snapshot.js +4 -4
  459. package/lib/node/server-state-snapshot.js.map +1 -1
  460. package/lib/node/socket-launcher.d.ts +20 -4
  461. package/lib/node/socket-launcher.d.ts.map +1 -1
  462. package/lib/node/socket-launcher.js +8 -7
  463. package/lib/node/socket-launcher.js.map +1 -1
  464. package/lib/node/startup-cpu-profile.d.ts +29 -0
  465. package/lib/node/startup-cpu-profile.d.ts.map +1 -0
  466. package/lib/node/startup-cpu-profile.js +91 -0
  467. package/lib/node/startup-cpu-profile.js.map +1 -0
  468. package/lib/node/stdio-launcher.d.ts +10 -10
  469. package/lib/node/stdio-launcher.d.ts.map +1 -1
  470. package/lib/node/stdio-launcher.js +17 -9
  471. package/lib/node/stdio-launcher.js.map +1 -1
  472. package/lib/testing/document-uri-policy-conformance.js +1 -1
  473. package/lib/testing/document-uri-policy-conformance.js.map +1 -1
  474. package/lib/testing/fake-description.js.map +1 -1
  475. package/lib/testing/fake-document.d.ts +16 -4
  476. package/lib/testing/fake-document.d.ts.map +1 -1
  477. package/lib/testing/fake-document.js +18 -3
  478. package/lib/testing/fake-document.js.map +1 -1
  479. package/lib/testing/index.d.ts +1 -1
  480. package/lib/testing/index.d.ts.map +1 -1
  481. package/lib/testing/index.js +2 -1
  482. package/lib/testing/index.js.map +1 -1
  483. package/lib/testing/langium-test-helpers.d.ts.map +1 -1
  484. package/lib/testing/langium-test-helpers.js +1 -0
  485. package/lib/testing/langium-test-helpers.js.map +1 -1
  486. package/lib/testing/make-noop-language-services.js.map +1 -1
  487. package/lib/testing/make-noop-shared-services.d.ts +14 -0
  488. package/lib/testing/make-noop-shared-services.d.ts.map +1 -1
  489. package/lib/testing/make-noop-shared-services.js +28 -2
  490. package/lib/testing/make-noop-shared-services.js.map +1 -1
  491. package/lib/testing/make-test-services.d.ts +72 -14
  492. package/lib/testing/make-test-services.d.ts.map +1 -1
  493. package/lib/testing/make-test-services.js +42 -10
  494. package/lib/testing/make-test-services.js.map +1 -1
  495. package/lib/testing/make-test-tracer.d.ts +12 -0
  496. package/lib/testing/make-test-tracer.d.ts.map +1 -1
  497. package/lib/testing/make-test-tracer.js +13 -0
  498. package/lib/testing/make-test-tracer.js.map +1 -1
  499. package/lib/testing/node/applied-edit-capture.d.ts +29 -0
  500. package/lib/testing/node/applied-edit-capture.d.ts.map +1 -0
  501. package/lib/testing/node/applied-edit-capture.js +117 -0
  502. package/lib/testing/node/applied-edit-capture.js.map +1 -0
  503. package/lib/testing/node/golden-corpus.js.map +1 -1
  504. package/lib/testing/node/index.d.ts +1 -0
  505. package/lib/testing/node/index.d.ts.map +1 -1
  506. package/lib/testing/node/index.js +1 -0
  507. package/lib/testing/node/index.js.map +1 -1
  508. package/lib/testing/node/lsp-harness.d.ts.map +1 -1
  509. package/lib/testing/node/lsp-harness.js +2 -0
  510. package/lib/testing/node/lsp-harness.js.map +1 -1
  511. package/lib/testing/node/lsp-server-connection.d.ts +21 -6
  512. package/lib/testing/node/lsp-server-connection.d.ts.map +1 -1
  513. package/lib/testing/node/lsp-server-connection.js +49 -106
  514. package/lib/testing/node/lsp-server-connection.js.map +1 -1
  515. package/lib/testing/node/scratch-workspace.d.ts.map +1 -1
  516. package/lib/testing/node/scratch-workspace.js +10 -5
  517. package/lib/testing/node/scratch-workspace.js.map +1 -1
  518. package/lib/testing/node/spawned-server.d.ts +30 -1
  519. package/lib/testing/node/spawned-server.d.ts.map +1 -1
  520. package/lib/testing/node/spawned-server.js +39 -2
  521. package/lib/testing/node/spawned-server.js.map +1 -1
  522. package/lib/testing/node/unhandled-rejections.d.ts +20 -0
  523. package/lib/testing/node/unhandled-rejections.d.ts.map +1 -0
  524. package/lib/testing/node/unhandled-rejections.js +32 -0
  525. package/lib/testing/node/unhandled-rejections.js.map +1 -0
  526. package/lib/testing/playwright/browser-capture-bridge.js.map +1 -1
  527. package/lib/testing/playwright/e2e-profiling.js.map +1 -1
  528. package/lib/testing/playwright/flaky-network-proxy.d.ts +76 -0
  529. package/lib/testing/playwright/flaky-network-proxy.d.ts.map +1 -0
  530. package/lib/testing/playwright/flaky-network-proxy.js +164 -0
  531. package/lib/testing/playwright/flaky-network-proxy.js.map +1 -0
  532. package/lib/testing/playwright/index.d.ts +1 -0
  533. package/lib/testing/playwright/index.d.ts.map +1 -1
  534. package/lib/testing/playwright/index.js +1 -0
  535. package/lib/testing/playwright/index.js.map +1 -1
  536. package/lib/testing/playwright/server-log-capture.d.ts +46 -16
  537. package/lib/testing/playwright/server-log-capture.d.ts.map +1 -1
  538. package/lib/testing/playwright/server-log-capture.js +111 -40
  539. package/lib/testing/playwright/server-log-capture.js.map +1 -1
  540. package/lib/testing/playwright/server-log-fixture.d.ts +16 -0
  541. package/lib/testing/playwright/server-log-fixture.d.ts.map +1 -1
  542. package/lib/testing/playwright/server-log-fixture.js +25 -6
  543. package/lib/testing/playwright/server-log-fixture.js.map +1 -1
  544. package/lib/testing/playwright/server-log-region.d.ts +15 -0
  545. package/lib/testing/playwright/server-log-region.d.ts.map +1 -0
  546. package/lib/testing/playwright/server-log-region.js +30 -0
  547. package/lib/testing/playwright/server-log-region.js.map +1 -0
  548. package/lib/testing/playwright/server-log-rename-reporter.d.ts.map +1 -1
  549. package/lib/testing/playwright/server-log-rename-reporter.js +4 -3
  550. package/lib/testing/playwright/server-log-rename-reporter.js.map +1 -1
  551. package/lib/testing/run-update-pipeline.d.ts +8 -5
  552. package/lib/testing/run-update-pipeline.d.ts.map +1 -1
  553. package/lib/testing/run-update-pipeline.js.map +1 -1
  554. package/lib/testing/stub-ast-document-manager.d.ts +11 -52
  555. package/lib/testing/stub-ast-document-manager.d.ts.map +1 -1
  556. package/lib/testing/stub-ast-document-manager.js +31 -62
  557. package/lib/testing/stub-ast-document-manager.js.map +1 -1
  558. package/lib/testing/stub-document-builder.d.ts +33 -11
  559. package/lib/testing/stub-document-builder.d.ts.map +1 -1
  560. package/lib/testing/stub-document-builder.js +103 -5
  561. package/lib/testing/stub-document-builder.js.map +1 -1
  562. package/lib/testing/stub-hydranium-text-documents.d.ts +33 -10
  563. package/lib/testing/stub-hydranium-text-documents.d.ts.map +1 -1
  564. package/lib/testing/stub-hydranium-text-documents.js +132 -16
  565. package/lib/testing/stub-hydranium-text-documents.js.map +1 -1
  566. package/lib/testing/stub-index-manager.js.map +1 -1
  567. package/lib/testing/stub-langium-documents.d.ts +3 -2
  568. package/lib/testing/stub-langium-documents.d.ts.map +1 -1
  569. package/lib/testing/stub-langium-documents.js.map +1 -1
  570. package/lib/testing/stub-model-service.d.ts +9 -8
  571. package/lib/testing/stub-model-service.d.ts.map +1 -1
  572. package/lib/testing/stub-model-service.js +6 -6
  573. package/lib/testing/stub-model-service.js.map +1 -1
  574. package/lib/testing/stub-project-manager.js.map +1 -1
  575. package/lib/testing/stub-self-save-registry.d.ts +1 -1
  576. package/lib/testing/stub-self-save-registry.d.ts.map +1 -1
  577. package/lib/testing/stub-service-registry.d.ts +1 -1
  578. package/lib/testing/stub-service-registry.js.map +1 -1
  579. package/lib/testing/stub-writable-file-system.d.ts +1 -1
  580. package/lib/testing/stub-writable-file-system.d.ts.map +1 -1
  581. package/lib/testing/stub-writable-file-system.js +2 -1
  582. package/lib/testing/stub-writable-file-system.js.map +1 -1
  583. package/lib/util/connection-liveness.d.ts +19 -6
  584. package/lib/util/connection-liveness.d.ts.map +1 -1
  585. package/lib/util/connection-liveness.js +61 -15
  586. package/lib/util/connection-liveness.js.map +1 -1
  587. package/lib/util/environment.d.ts.map +1 -1
  588. package/lib/util/environment.js.map +1 -1
  589. package/lib/util/registry.d.ts.map +1 -1
  590. package/package.json +38 -57
  591. package/src/browser/index.ts +14 -0
  592. package/src/browser/indexeddb-file-system-store.ts +192 -0
  593. package/src/documents/ast-document-manager.ts +467 -233
  594. package/src/documents/client-ids.ts +5 -22
  595. package/src/documents/client-session-errors.ts +24 -0
  596. package/src/documents/client-session-registry.ts +262 -0
  597. package/src/documents/dirty-state-tracker.ts +167 -0
  598. package/src/documents/document-release-handler.ts +404 -0
  599. package/src/documents/document-release-scheduler.ts +121 -0
  600. package/src/documents/file-system-task-queue.ts +74 -0
  601. package/src/documents/hydranium-text-documents.ts +976 -595
  602. package/src/documents/index.ts +10 -2
  603. package/src/documents/language-client-shadow.ts +452 -0
  604. package/src/documents/model-ledger.ts +66 -0
  605. package/src/documents/text-ledger.ts +112 -0
  606. package/src/documents/version-sync-service.ts +275 -0
  607. package/src/index.ts +8 -0
  608. package/src/langium/ast-extension/ast-extension-service.ts +77 -41
  609. package/src/langium/ast-extension/ast-node-builder.ts +66 -22
  610. package/src/langium/bootstrap.ts +95 -52
  611. package/src/langium/build-phase-pass/build-phase-pass-service.ts +29 -19
  612. package/src/langium/build-phase-pass/build-phase-pass.ts +37 -8
  613. package/src/langium/composite-ast-reflection.ts +112 -0
  614. package/src/langium/config/configuration-provider.ts +119 -0
  615. package/src/langium/config/index.ts +1 -0
  616. package/src/langium/diagnostics/hydranium-langium-profiler.ts +15 -39
  617. package/src/langium/diagnostics/log-preamble.ts +1 -1
  618. package/src/langium/diagnostics/logger.ts +38 -11
  619. package/src/langium/diagnostics/lsp-logger.ts +61 -16
  620. package/src/langium/document-builder/build-pipeline-integration.ts +46 -32
  621. package/src/langium/document-builder/build-session.ts +4 -3
  622. package/src/langium/document-builder/document-builder.ts +616 -73
  623. package/src/langium/integration-services.ts +59 -28
  624. package/src/langium/integrity/integrity-rule.ts +16 -8
  625. package/src/langium/integrity/integrity-service.ts +296 -69
  626. package/src/langium/keys/containment.ts +87 -0
  627. package/src/langium/keys/index.ts +1 -0
  628. package/src/langium/keys/name-based-key-provider.ts +4 -0
  629. package/src/langium/language-module.ts +49 -8
  630. package/src/langium/model-service/client-session.ts +704 -0
  631. package/src/langium/model-service/index.ts +2 -0
  632. package/src/langium/model-service/model-events.ts +80 -0
  633. package/src/langium/model-service/model-service.ts +908 -485
  634. package/src/langium/module.ts +212 -67
  635. package/src/langium/naming/name-provider.ts +44 -8
  636. package/src/langium/naming/name-separator-validation.ts +25 -3
  637. package/src/langium/project/abstract-project-manager.ts +13 -5
  638. package/src/langium/project/project-change-event.ts +2 -2
  639. package/src/langium/residency/cst-residency-service.ts +51 -17
  640. package/src/langium/scope/fallback-scope.ts +38 -0
  641. package/src/langium/scope/hydranium-scope-computation.ts +45 -44
  642. package/src/langium/scope/hydranium-scope-provider.ts +64 -27
  643. package/src/langium/scope/index.ts +1 -0
  644. package/src/langium/scope/reference-candidate-provider.ts +6 -5
  645. package/src/langium/scope/scope-extension-service.ts +74 -59
  646. package/src/langium/scope/scoped-ast-node-description.ts +1 -3
  647. package/src/langium/serialization/abstract-serializer.ts +57 -41
  648. package/src/langium/serialization/json-serializer.ts +14 -3
  649. package/src/langium/serialization/serializer.ts +1 -1
  650. package/src/langium/serialization/yaml-serializer.ts +4 -0
  651. package/src/langium/service-registry.ts +41 -2
  652. package/src/langium/shared-services.ts +26 -6
  653. package/src/langium/single-langium-copy.ts +42 -0
  654. package/src/langium/transfer/transfer-encoder.ts +102 -45
  655. package/src/langium/trivia/comment-preserver.ts +1100 -0
  656. package/src/langium/trivia/document-ending-preserver.ts +71 -0
  657. package/src/langium/trivia/index.ts +14 -0
  658. package/src/langium/trivia/trivia-contribution.ts +39 -0
  659. package/src/langium/trivia/trivia-preserver.ts +56 -0
  660. package/src/langium/trivia/trivia-service.ts +99 -0
  661. package/src/langium/update-rewrite/update-rewrite-service.ts +1 -1
  662. package/src/langium/update-rewrite/update-rewrite.ts +1 -1
  663. package/src/langium/validation/document-validator.ts +528 -13
  664. package/src/langium/validation/validation-contribution-collector.ts +10 -1
  665. package/src/langium/workspace/document-uri-policy.ts +32 -18
  666. package/src/langium/workspace/file-not-found.ts +35 -0
  667. package/src/langium/workspace/file-system-provider.ts +253 -16
  668. package/src/langium/workspace/hydranium-langium-document-factory.ts +83 -0
  669. package/src/langium/workspace/hydranium-workspace-lock.ts +86 -2
  670. package/src/langium/workspace/hydranium-workspace-manager.ts +241 -35
  671. package/src/langium/workspace/in-memory-file-system-provider.ts +54 -23
  672. package/src/langium/workspace/index.ts +1 -0
  673. package/src/langium/workspace/initialize-workspace.ts +43 -5
  674. package/src/langium/workspace/langium-documents.ts +19 -1
  675. package/src/langium/workspace/persistent-file-system-provider.ts +26 -14
  676. package/src/langium/workspace/self-save-registry.ts +118 -0
  677. package/src/langium/workspace/virtual-document.ts +106 -25
  678. package/src/langium/workspace/write-lock-scope.ts +27 -12
  679. package/src/launcher/integrated-server.ts +3 -1
  680. package/src/locale/index.ts +10 -0
  681. package/src/locale/server-locale.ts +86 -0
  682. package/src/lsp/completion/hydranium-completion-provider.ts +82 -2
  683. package/src/lsp/connection-features.ts +67 -0
  684. package/src/lsp/diagnostics-connection.ts +56 -0
  685. package/src/lsp/hydranium-document-update-handler.ts +285 -111
  686. package/src/lsp/index.ts +3 -1
  687. package/src/lsp/lsp-latency.ts +62 -0
  688. package/src/lsp/semantic-token-provider.ts +74 -7
  689. package/src/lsp/shared-module.ts +4 -8
  690. package/src/lsp/start-language-server.ts +13 -7
  691. package/src/messages/carriers.ts +23 -15
  692. package/src/messages/index.ts +13 -1
  693. package/src/messages/renderer.ts +212 -0
  694. package/src/node/event-loop-monitor.ts +2 -1
  695. package/src/node/heap-ceiling.ts +108 -0
  696. package/src/node/index.ts +5 -1
  697. package/src/node/latency-from-env.ts +1 -1
  698. package/src/node/log-preamble-node.ts +20 -10
  699. package/src/node/measure-memory.ts +5 -4
  700. package/src/node/memory-monitor.ts +10 -10
  701. package/src/node/node-file-system-provider.ts +214 -57
  702. package/src/node/profile-capture.ts +16 -15
  703. package/src/node/profiling-run.ts +30 -8
  704. package/src/node/rename-over-open-readers.ts +94 -0
  705. package/src/node/server-diagnostics.ts +1 -1
  706. package/src/node/server-state-snapshot.ts +5 -5
  707. package/src/node/socket-launcher.ts +27 -11
  708. package/src/node/startup-cpu-profile.ts +94 -0
  709. package/src/node/stdio-launcher.ts +22 -14
  710. package/src/testing/document-uri-policy-conformance.ts +1 -1
  711. package/src/testing/fake-document.ts +24 -5
  712. package/src/testing/index.ts +2 -1
  713. package/src/testing/langium-test-helpers.ts +1 -0
  714. package/src/testing/make-noop-shared-services.ts +50 -2
  715. package/src/testing/make-test-services.ts +125 -31
  716. package/src/testing/make-test-tracer.ts +26 -0
  717. package/src/testing/node/applied-edit-capture.ts +141 -0
  718. package/src/testing/node/index.ts +1 -0
  719. package/src/testing/node/lsp-harness.ts +2 -0
  720. package/src/testing/node/lsp-server-connection.ts +83 -119
  721. package/src/testing/node/scratch-workspace.ts +10 -5
  722. package/src/testing/node/spawned-server.ts +57 -3
  723. package/src/testing/node/unhandled-rejections.ts +31 -0
  724. package/src/testing/parse-semantic-root.ts +1 -1
  725. package/src/testing/playwright/flaky-network-proxy.ts +240 -0
  726. package/src/testing/playwright/index.ts +1 -0
  727. package/src/testing/playwright/server-log-capture.ts +137 -47
  728. package/src/testing/playwright/server-log-fixture.ts +46 -6
  729. package/src/testing/playwright/server-log-region.ts +32 -0
  730. package/src/testing/playwright/server-log-rename-reporter.ts +4 -3
  731. package/src/testing/run-update-pipeline.ts +8 -5
  732. package/src/testing/stub-ast-document-manager.ts +47 -128
  733. package/src/testing/stub-document-builder.ts +133 -18
  734. package/src/testing/stub-hydranium-text-documents.ts +184 -27
  735. package/src/testing/stub-langium-documents.ts +3 -2
  736. package/src/testing/stub-model-service.ts +11 -10
  737. package/src/testing/stub-self-save-registry.ts +1 -1
  738. package/src/testing/stub-service-registry.ts +1 -1
  739. package/src/testing/stub-writable-file-system.ts +3 -2
  740. package/src/util/connection-liveness.ts +67 -15
  741. package/src/util/environment.ts +9 -1
  742. package/lib/documents/language-client-text-shadow.d.ts +0 -101
  743. package/lib/documents/language-client-text-shadow.d.ts.map +0 -1
  744. package/lib/documents/language-client-text-shadow.js +0 -156
  745. package/lib/documents/language-client-text-shadow.js.map +0 -1
  746. package/lib/documents/self-save-registry.d.ts +0 -55
  747. package/lib/documents/self-save-registry.d.ts.map +0 -1
  748. package/lib/documents/self-save-registry.js.map +0 -1
  749. package/lib/lsp/instrument-connection.d.ts +0 -36
  750. package/lib/lsp/instrument-connection.d.ts.map +0 -1
  751. package/lib/lsp/instrument-connection.js +0 -62
  752. package/lib/lsp/instrument-connection.js.map +0 -1
  753. package/lib/node/process-memory.d.ts +0 -66
  754. package/lib/node/process-memory.d.ts.map +0 -1
  755. package/lib/node/process-memory.js +0 -252
  756. package/lib/node/process-memory.js.map +0 -1
  757. package/src/documents/language-client-text-shadow.ts +0 -175
  758. package/src/documents/self-save-registry.ts +0 -81
  759. package/src/lsp/instrument-connection.ts +0 -66
  760. package/src/node/process-memory.ts +0 -299
@@ -0,0 +1 @@
1
+ {"version":3,"file":"comment-preserver.js","sourceRoot":"","sources":["../../../src/langium/trivia/comment-preserver.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,51 @@
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 LangiumDocument } from '@hydranium/langium';
10
+ import { type TriviaContribution, type TriviaRegistry } from './trivia-contribution.js';
11
+ import { type TriviaPreserver } from './trivia-preserver.js';
12
+ /**
13
+ * Carries the whitespace a document ended with across a write.
14
+ *
15
+ * **Normalising this to one final newline rewrites files nobody asked to
16
+ * restyle.** A document may legitimately end in blank lines, or deliberately in
17
+ * none, and a write that changed one field is not the place to decide it should
18
+ * not. A serializer cannot make the call either — it has no prior file to
19
+ * consult — which is why the decision lives on the write path. Only a blank
20
+ * document, created or existing, has no ending to keep and takes
21
+ * {@link defaultEnding}.
22
+ *
23
+ * Line terminators are matched to the body the serializer emits, which is the
24
+ * one thing here that cannot be preserved: keeping them verbatim leaves a
25
+ * rewritten CRLF document with its only CRLFs at the very end. A body with no
26
+ * line break has none to match, so its ending stays as the file had it.
27
+ */
28
+ export declare class DocumentEndingPreserver implements TriviaPreserver<string> {
29
+ /** Default {@link defaultEnding}. */
30
+ static readonly DEFAULT_ENDING = "\n";
31
+ readonly id = "document-ending";
32
+ readonly label = "Document Ending";
33
+ /** The ending of a blank document, which a created one is: it has none of its own to keep. */
34
+ protected readonly defaultEnding: string;
35
+ extract(document: LangiumDocument): string;
36
+ /**
37
+ * **Override for a grammar whose CONTENT can end in whitespace** — a
38
+ * block-scalar property as the document's last value, say. The trim cannot
39
+ * tell a blank line the serializer emitted as part of a value from one that
40
+ * is merely the end of the file, so it removes both and restores the ending
41
+ * the old document had. A document whose final value just gained trailing
42
+ * blank lines therefore loses them. An override also takes over matching the
43
+ * ending's line terminators to the body's.
44
+ */
45
+ apply(serialized: string, trivia: string): string;
46
+ }
47
+ /** Registers {@link DocumentEndingPreserver}; bound at `trivia.preservers.documentEnding`. */
48
+ export declare class DocumentEndingPreserverContribution implements TriviaContribution {
49
+ registerTriviaPreservers(registry: TriviaRegistry): void;
50
+ }
51
+ //# sourceMappingURL=document-ending-preserver.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"document-ending-preserver.d.ts","sourceRoot":"","sources":["../../../src/langium/trivia/document-ending-preserver.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EAAE,KAAK,kBAAkB,EAAE,KAAK,cAAc,EAAE,MAAM,0BAA0B,CAAC;AACxF,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAE7D;;;;;;;;;;;;;;;GAeG;AACH,qBAAa,uBAAwB,YAAW,eAAe,CAAC,MAAM,CAAC;IACpE,qCAAqC;IACrC,MAAM,CAAC,QAAQ,CAAC,cAAc,QAAQ;IAEtC,QAAQ,CAAC,EAAE,qBAAqB;IAChC,QAAQ,CAAC,KAAK,qBAAqB;IAEnC,8FAA8F;IAC9F,SAAS,CAAC,QAAQ,CAAC,aAAa,EAAE,MAAM,CAA0C;IAElF,OAAO,CAAC,QAAQ,EAAE,eAAe,GAAG,MAAM,CAMzC;IAED;;;;;;;;OAQG;IACH,KAAK,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAMhD;CACH;AAED,8FAA8F;AAC9F,qBAAa,mCAAoC,YAAW,kBAAkB;IAC3E,wBAAwB,CAAC,QAAQ,EAAE,cAAc,GAAG,IAAI,CAEvD;CACH"}
@@ -0,0 +1,62 @@
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
+ /**
10
+ * Carries the whitespace a document ended with across a write.
11
+ *
12
+ * **Normalising this to one final newline rewrites files nobody asked to
13
+ * restyle.** A document may legitimately end in blank lines, or deliberately in
14
+ * none, and a write that changed one field is not the place to decide it should
15
+ * not. A serializer cannot make the call either — it has no prior file to
16
+ * consult — which is why the decision lives on the write path. Only a blank
17
+ * document, created or existing, has no ending to keep and takes
18
+ * {@link defaultEnding}.
19
+ *
20
+ * Line terminators are matched to the body the serializer emits, which is the
21
+ * one thing here that cannot be preserved: keeping them verbatim leaves a
22
+ * rewritten CRLF document with its only CRLFs at the very end. A body with no
23
+ * line break has none to match, so its ending stays as the file had it.
24
+ */
25
+ export class DocumentEndingPreserver {
26
+ /** Default {@link defaultEnding}. */
27
+ static DEFAULT_ENDING = '\n';
28
+ id = 'document-ending';
29
+ label = 'Document Ending';
30
+ /** The ending of a blank document, which a created one is: it has none of its own to keep. */
31
+ defaultEnding = DocumentEndingPreserver.DEFAULT_ENDING;
32
+ extract(document) {
33
+ const source = document.textDocument.getText();
34
+ if (source.trim().length === 0) {
35
+ return this.defaultEnding;
36
+ }
37
+ return source.slice(source.trimEnd().length);
38
+ }
39
+ /**
40
+ * **Override for a grammar whose CONTENT can end in whitespace** — a
41
+ * block-scalar property as the document's last value, say. The trim cannot
42
+ * tell a blank line the serializer emitted as part of a value from one that
43
+ * is merely the end of the file, so it removes both and restores the ending
44
+ * the old document had. A document whose final value just gained trailing
45
+ * blank lines therefore loses them. An override also takes over matching the
46
+ * ending's line terminators to the body's.
47
+ */
48
+ apply(serialized, trivia) {
49
+ const body = serialized.trimEnd();
50
+ // The body's first line break, since a value may hold the other kind; with none
51
+ // there is no terminator to match, so the ending stays as extracted.
52
+ const terminator = /\r?\n/.exec(body)?.[0];
53
+ return body + (terminator === undefined ? trivia : trivia.replace(/\r?\n/g, terminator));
54
+ }
55
+ }
56
+ /** Registers {@link DocumentEndingPreserver}; bound at `trivia.preservers.documentEnding`. */
57
+ export class DocumentEndingPreserverContribution {
58
+ registerTriviaPreservers(registry) {
59
+ registry.register(new DocumentEndingPreserver());
60
+ }
61
+ }
62
+ //# sourceMappingURL=document-ending-preserver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"document-ending-preserver.js","sourceRoot":"","sources":["../../../src/langium/trivia/document-ending-preserver.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAMlF;;;;;;;;;;;;;;;GAeG;AACH,MAAM,OAAO,uBAAuB;IACjC,qCAAqC;IACrC,MAAM,CAAU,cAAc,GAAG,IAAI,CAAC;IAE7B,EAAE,GAAG,iBAAiB,CAAC;IACvB,KAAK,GAAG,iBAAiB,CAAC;IAEnC,8FAA8F;IAC3E,aAAa,GAAW,uBAAuB,CAAC,cAAc,CAAC;IAElF,OAAO,CAAC,QAAyB;QAC9B,MAAM,MAAM,GAAG,QAAQ,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC;QAC/C,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC9B,OAAO,IAAI,CAAC,aAAa,CAAC;QAC7B,CAAC;QACD,OAAO,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,MAAM,CAAC,CAAC;IAChD,CAAC;IAED;;;;;;;;OAQG;IACH,KAAK,CAAC,UAAkB,EAAE,MAAc;QACrC,MAAM,IAAI,GAAG,UAAU,CAAC,OAAO,EAAE,CAAC;QAClC,gFAAgF;QAChF,qEAAqE;QACrE,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAC3C,OAAO,IAAI,GAAG,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC,CAAC;IAC5F,CAAC;CACH;AAED,8FAA8F;AAC9F,MAAM,OAAO,mCAAmC;IAC7C,wBAAwB,CAAC,QAAwB;QAC9C,QAAQ,CAAC,QAAQ,CAAC,IAAI,uBAAuB,EAAE,CAAC,CAAC;IACpD,CAAC;CACH"}
@@ -0,0 +1,14 @@
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
+ export * from './comment-preserver.js';
10
+ export * from './document-ending-preserver.js';
11
+ export * from './trivia-contribution.js';
12
+ export * from './trivia-preserver.js';
13
+ export * from './trivia-service.js';
14
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/langium/trivia/index.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF,cAAc,wBAAwB,CAAC;AACvC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,0BAA0B,CAAC;AACzC,cAAc,uBAAuB,CAAC;AACtC,cAAc,qBAAqB,CAAC"}
@@ -0,0 +1,14 @@
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
+ export * from './comment-preserver.js';
10
+ export * from './document-ending-preserver.js';
11
+ export * from './trivia-contribution.js';
12
+ export * from './trivia-preserver.js';
13
+ export * from './trivia-service.js';
14
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/langium/trivia/index.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF,cAAc,wBAAwB,CAAC;AACvC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,0BAA0B,CAAC;AACzC,cAAc,uBAAuB,CAAC;AACtC,cAAc,qBAAqB,CAAC"}
@@ -0,0 +1,37 @@
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 Disposable } from 'vscode-languageserver';
10
+ import { type TriviaPreserver } from './trivia-preserver.js';
11
+ /**
12
+ * Registry handed to a {@link TriviaContribution}. Implemented by the trivia
13
+ * service; a contribution receives it and registers one or many preservers.
14
+ * Doubles as the low-level imperative API for the rare runtime-dynamic case.
15
+ */
16
+ export interface TriviaRegistry {
17
+ register(preserver: TriviaPreserver): Disposable;
18
+ }
19
+ /**
20
+ * Declarative registration of trivia preservers. Bound under the module's
21
+ * `trivia.preservers` contribution group; the trivia service reads its own
22
+ * group at construction and calls this method, handing itself in as the
23
+ * registry.
24
+ *
25
+ * The framework binds one sub-key per preserver it ships rather than one for
26
+ * all of them, so an adopter replacing `comments` — a grammar identifying its
27
+ * nodes by something no name property holds — keeps the rest. Langium's
28
+ * deep-merge is last-wins on same-key leaves, so binding a sub-key REPLACES the
29
+ * framework's contribution under it rather than adding to it.
30
+ *
31
+ * The domain-qualified method name lets one cross-cutting class implement
32
+ * several contribution interfaces without method collision.
33
+ */
34
+ export interface TriviaContribution {
35
+ registerTriviaPreservers(registry: TriviaRegistry): void;
36
+ }
37
+ //# sourceMappingURL=trivia-contribution.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"trivia-contribution.d.ts","sourceRoot":"","sources":["../../../src/langium/trivia/trivia-contribution.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAE7D;;;;GAIG;AACH,MAAM,WAAW,cAAc;IAC5B,QAAQ,CAAC,SAAS,EAAE,eAAe,GAAG,UAAU,CAAC;CACnD;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,WAAW,kBAAkB;IAChC,wBAAwB,CAAC,QAAQ,EAAE,cAAc,GAAG,IAAI,CAAC;CAC3D"}
@@ -0,0 +1,10 @@
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
+ export {};
10
+ //# sourceMappingURL=trivia-contribution.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"trivia-contribution.js","sourceRoot":"","sources":["../../../src/langium/trivia/trivia-contribution.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF"}
@@ -0,0 +1,52 @@
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 LangiumDocument, type URI } from '@hydranium/langium';
10
+ import { type RegistryItem } from '../../util/registry.js';
11
+ /**
12
+ * One kind of trivia — what a document carries that its model does not, so a
13
+ * write that re-serializes from the model would otherwise lose it.
14
+ *
15
+ * **Two phases, because there is a suspension point between them.** The write
16
+ * path extracts, awaits the serializer, then applies; and the preserver is a
17
+ * per-language singleton, so two concurrent writes would clobber each other if
18
+ * it held the extracted value itself. `T` therefore travels through the caller.
19
+ *
20
+ * Declared with METHODS rather than arrow properties: an implementation
21
+ * narrowing `T` stays assignable only under method-parameter bivariance, which
22
+ * arrow properties lose.
23
+ */
24
+ export interface TriviaPreserver<T = unknown> extends RegistryItem {
25
+ /**
26
+ * Take this preserver's trivia off `document`, while it still holds the text
27
+ * the write is about to replace. For a document being created, or one the
28
+ * store holds no text for, `document` is parsed from empty text, so its root
29
+ * may carry parser errors; a preserver answers its default for it.
30
+ */
31
+ extract(document: LangiumDocument): T;
32
+ /**
33
+ * Put `trivia` back into `serialized`, returning the text the NEXT preserver
34
+ * sees — the chain is a fold, so an implementation must derive its positions
35
+ * from the text it is handed rather than from the document it extracted from.
36
+ */
37
+ apply(serialized: string, trivia: T, uri: URI): string;
38
+ }
39
+ /**
40
+ * One preserver's output, kept beside the preserver that produced it.
41
+ *
42
+ * Pairing them is what lets the chain stay agnostic: it never learns what a
43
+ * payload IS, only which preserver knows how to apply it, so a preserver can
44
+ * use whatever shape suits it without the service naming that shape.
45
+ */
46
+ export interface ExtractedTrivia {
47
+ readonly preserver: TriviaPreserver;
48
+ readonly trivia: unknown;
49
+ }
50
+ /** Everything the registered preservers took off one document, in the order they ran. */
51
+ export type DocumentTrivia = readonly ExtractedTrivia[];
52
+ //# sourceMappingURL=trivia-preserver.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"trivia-preserver.d.ts","sourceRoot":"","sources":["../../../src/langium/trivia/trivia-preserver.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF,OAAO,EAAE,KAAK,eAAe,EAAE,KAAK,GAAG,EAAE,MAAM,oBAAoB,CAAC;AACpE,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAE3D;;;;;;;;;;;;GAYG;AACH,MAAM,WAAW,eAAe,CAAC,CAAC,GAAG,OAAO,CAAE,SAAQ,YAAY;IAC/D;;;;;OAKG;IACH,OAAO,CAAC,QAAQ,EAAE,eAAe,GAAG,CAAC,CAAC;IAEtC;;;;OAIG;IACH,KAAK,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,GAAG,MAAM,CAAC;CACzD;AAED;;;;;;GAMG;AACH,MAAM,WAAW,eAAe;IAC7B,QAAQ,CAAC,SAAS,EAAE,eAAe,CAAC;IACpC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;CAC3B;AAED,yFAAyF;AACzF,MAAM,MAAM,cAAc,GAAG,SAAS,eAAe,EAAE,CAAC"}
@@ -0,0 +1,10 @@
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
+ export {};
10
+ //# sourceMappingURL=trivia-preserver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"trivia-preserver.js","sourceRoot":"","sources":["../../../src/langium/trivia/trivia-preserver.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF"}
@@ -0,0 +1,70 @@
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 Tracer } from '@hydranium/protocol';
10
+ import { type LangiumDocument, type URI } from '@hydranium/langium';
11
+ import { type Disposable } from 'vscode-languageserver';
12
+ import { type LogNameOptions } from '../diagnostics/logger.js';
13
+ import { type HydraniumLanguageServices } from '../language-module.js';
14
+ import { Registry } from '../../util/registry.js';
15
+ import { type TriviaRegistry } from './trivia-contribution.js';
16
+ import { type DocumentTrivia, type TriviaPreserver } from './trivia-preserver.js';
17
+ /**
18
+ * Public contract for the per-language trivia runner. Extends the
19
+ * {@link TriviaRegistry} contributions register through with the entry points
20
+ * the write paths call around serialization.
21
+ *
22
+ * Adopter overrides go through {@link DefaultTriviaService}; the interface keeps
23
+ * the public API stable while the registry stays `protected` on the class.
24
+ */
25
+ export interface TriviaService extends TriviaRegistry {
26
+ /** Remove a preserver by id. Returns `true` if one was removed. */
27
+ unregister(id: string): boolean;
28
+ /**
29
+ * Run every registered preserver's `extract` over `document`, in priority
30
+ * order, while it still holds the text the write is about to replace.
31
+ */
32
+ extract(document: LangiumDocument): DocumentTrivia;
33
+ /**
34
+ * Fold `serialized` through every extracted entry, handing each preserver
35
+ * back its own payload, and return the text to write.
36
+ */
37
+ apply(serialized: string, trivia: DocumentTrivia, uri: URI): string;
38
+ }
39
+ /** Construction options for {@link DefaultTriviaService}. */
40
+ export type TriviaServiceOptions = LogNameOptions;
41
+ /**
42
+ * Default {@link TriviaService}: an ordered registry of preservers, run around
43
+ * the serializer on every structured write.
44
+ *
45
+ * **An empty registry is a no-op**, which is how preservation is switched off —
46
+ * there is no enabled flag, and a preserver that is not registered costs
47
+ * nothing rather than being asked and declining.
48
+ *
49
+ * **Per-language service.** Comment terminals come from the grammar, so this
50
+ * cannot be shared; `ModelService` resolves it via
51
+ * `ServiceRegistry.getServices(uri)` so a multi-grammar workspace routes each
52
+ * write to the right preservers.
53
+ */
54
+ export declare class DefaultTriviaService implements TriviaService {
55
+ protected readonly services: HydraniumLanguageServices;
56
+ /** Registry of preservers, keyed by id, iterated in priority order. */
57
+ protected readonly preservers: Registry<TriviaPreserver<unknown>>;
58
+ protected readonly tracer: Tracer;
59
+ constructor(services: HydraniumLanguageServices, options?: TriviaServiceOptions);
60
+ register(preserver: TriviaPreserver): Disposable;
61
+ unregister(id: string): boolean;
62
+ extract(document: LangiumDocument): DocumentTrivia;
63
+ /**
64
+ * Fold, not map: each preserver sees what the ones before it produced, so a
65
+ * pair that touch the same region resolve by priority rather than by
66
+ * whichever happened to register first.
67
+ */
68
+ apply(serialized: string, trivia: DocumentTrivia, uri: URI): string;
69
+ }
70
+ //# sourceMappingURL=trivia-service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"trivia-service.d.ts","sourceRoot":"","sources":["../../../src/langium/trivia/trivia-service.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,KAAK,eAAe,EAAE,KAAK,GAAG,EAAE,MAAM,oBAAoB,CAAC;AACpE,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,KAAK,yBAAyB,EAAE,MAAM,uBAAuB,CAAC;AACvE,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAClD,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,KAAK,cAAc,EAAE,KAAK,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAElF;;;;;;;GAOG;AACH,MAAM,WAAW,aAAc,SAAQ,cAAc;IAClD,mEAAmE;IACnE,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC;IAEhC;;;OAGG;IACH,OAAO,CAAC,QAAQ,EAAE,eAAe,GAAG,cAAc,CAAC;IAEnD;;;OAGG;IACH,KAAK,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,GAAG,EAAE,GAAG,GAAG,MAAM,CAAC;CACtE;AAED,6DAA6D;AAC7D,MAAM,MAAM,oBAAoB,GAAG,cAAc,CAAC;AAElD;;;;;;;;;;;;GAYG;AACH,qBAAa,oBAAqB,YAAW,aAAa;IAMpD,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAE,yBAAyB;IALzD,uEAAuE;IACvE,SAAS,CAAC,QAAQ,CAAC,UAAU,qCAAmC;IAChE,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IAElC,YACsB,QAAQ,EAAE,yBAAyB,EACtD,OAAO,GAAE,oBAAyB,EAUpC;IAED,QAAQ,CAAC,SAAS,EAAE,eAAe,GAAG,UAAU,CAE/C;IAED,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAE9B;IAED,OAAO,CAAC,QAAQ,EAAE,eAAe,GAAG,cAAc,CAEjD;IAED;;;;OAIG;IACH,KAAK,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,GAAG,EAAE,GAAG,GAAG,MAAM,CAElE;CACH"}
@@ -0,0 +1,56 @@
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 { Registry } from '../../util/registry.js';
10
+ /**
11
+ * Default {@link TriviaService}: an ordered registry of preservers, run around
12
+ * the serializer on every structured write.
13
+ *
14
+ * **An empty registry is a no-op**, which is how preservation is switched off —
15
+ * there is no enabled flag, and a preserver that is not registered costs
16
+ * nothing rather than being asked and declining.
17
+ *
18
+ * **Per-language service.** Comment terminals come from the grammar, so this
19
+ * cannot be shared; `ModelService` resolves it via
20
+ * `ServiceRegistry.getServices(uri)` so a multi-grammar workspace routes each
21
+ * write to the right preservers.
22
+ */
23
+ export class DefaultTriviaService {
24
+ services;
25
+ /** Registry of preservers, keyed by id, iterated in priority order. */
26
+ preservers = new Registry();
27
+ tracer;
28
+ constructor(services, options = {}) {
29
+ this.services = services;
30
+ this.tracer = services.shared.Tracer.for(options.logName ?? 'Trivia').trace('instantiated');
31
+ // Optional chaining tolerates incomplete test stubs; production wiring
32
+ // always provides the slot via `createServerLanguageModule`.
33
+ const contributions = services.trivia?.preservers ?? {};
34
+ for (const contribution of Object.values(contributions)) {
35
+ contribution.registerTriviaPreservers(this);
36
+ }
37
+ }
38
+ register(preserver) {
39
+ return this.preservers.register(preserver);
40
+ }
41
+ unregister(id) {
42
+ return this.preservers.unregister(id);
43
+ }
44
+ extract(document) {
45
+ return this.preservers.all().map(preserver => ({ preserver, trivia: preserver.extract(document) }));
46
+ }
47
+ /**
48
+ * Fold, not map: each preserver sees what the ones before it produced, so a
49
+ * pair that touch the same region resolve by priority rather than by
50
+ * whichever happened to register first.
51
+ */
52
+ apply(serialized, trivia, uri) {
53
+ return trivia.reduce((text, entry) => entry.preserver.apply(text, entry.trivia, uri), serialized);
54
+ }
55
+ }
56
+ //# sourceMappingURL=trivia-service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"trivia-service.js","sourceRoot":"","sources":["../../../src/langium/trivia/trivia-service.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAOlF,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAgClD;;;;;;;;;;;;GAYG;AACH,MAAM,OAAO,oBAAoB;IAMR,QAAQ;IAL9B,uEAAuE;IACpD,UAAU,GAAG,IAAI,QAAQ,EAAmB,CAAC;IAC7C,MAAM,CAAS;IAElC,YACsB,QAAmC,EACtD,OAAO,GAAyB,EAAE;wBADf,QAAQ;QAG3B,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,IAAI,QAAQ,CAAC,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;QAE5F,uEAAuE;QACvE,6DAA6D;QAC7D,MAAM,aAAa,GAAG,QAAQ,CAAC,MAAM,EAAE,UAAU,IAAI,EAAE,CAAC;QACxD,KAAK,MAAM,YAAY,IAAI,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE,CAAC;YACvD,YAAY,CAAC,wBAAwB,CAAC,IAAI,CAAC,CAAC;QAC/C,CAAC;IACJ,CAAC;IAED,QAAQ,CAAC,SAA0B;QAChC,OAAO,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;IAC9C,CAAC;IAED,UAAU,CAAC,EAAU;QAClB,OAAO,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;IACzC,CAAC;IAED,OAAO,CAAC,QAAyB;QAC9B,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;IACvG,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,UAAkB,EAAE,MAAsB,EAAE,GAAQ;QACvD,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,UAAU,CAAC,CAAC;IACrG,CAAC;CACH"}
@@ -1 +1 @@
1
- {"version":3,"file":"normalize-empty-strings.d.ts","sourceRoot":"","sources":["../../../src/langium/update-rewrite/normalize-empty-strings.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF,OAAO,EAAE,KAAK,yBAAyB,EAAE,KAAK,qBAAqB,EAAE,MAAM,kCAAkC,CAAC;AAE9G;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,qBAAa,iCAAkC,YAAW,yBAAyB;IAChF,sBAAsB,CAAC,QAAQ,EAAE,qBAAqB,GAAG,IAAI;IAU7D;;;;;;;;;;;;;;OAcG;IACH,SAAS,CAAC,SAAS,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,CAAC;CAyBrC"}
1
+ {"version":3,"file":"normalize-empty-strings.d.ts","sourceRoot":"","sources":["../../../src/langium/update-rewrite/normalize-empty-strings.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF,OAAO,EAAE,KAAK,yBAAyB,EAAE,KAAK,qBAAqB,EAAE,MAAM,kCAAkC,CAAC;AAE9G;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,qBAAa,iCAAkC,YAAW,yBAAyB;IAChF,sBAAsB,CAAC,QAAQ,EAAE,qBAAqB,GAAG,IAAI,CAQ5D;IAED;;;;;;;;;;;;;;OAcG;IACH,SAAS,CAAC,SAAS,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,CAAC,CAwBlC;CACH"}
@@ -18,7 +18,7 @@ import { type UpdateRewrite } from './update-rewrite.js';
18
18
  * Public contract for the per-language update-rewrite runner. Extends the
19
19
  * {@link UpdateRewriteRegistry} (the imperative `register` surface
20
20
  * contributions use) with the {@link apply} entry point
21
- * `ModelService.rewriteModel` calls on the structured write path, before
21
+ * `DefaultModelService.rewriteModel` calls on the structured write path, before
22
22
  * serialisation.
23
23
  *
24
24
  * Adopter overrides go through {@link DefaultUpdateRewriteService}; the
@@ -1 +1 @@
1
- {"version":3,"file":"update-rewrite-service.d.ts","sourceRoot":"","sources":["../../../src/langium/update-rewrite/update-rewrite-service.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF,OAAO,EAAiB,KAAK,eAAe,EAAE,KAAK,MAAM,EAAE,MAAM,qBAAqB,CAAC;AACvF,OAAO,EAAE,KAAK,OAAO,EAAqB,MAAM,oBAAoB,CAAC;AACrE,OAAO,EAAE,KAAK,iBAAiB,EAAE,KAAK,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAChF,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,KAAK,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AACpE,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAClD,OAAO,EAAE,KAAK,qBAAqB,EAAE,MAAM,kCAAkC,CAAC;AAC9E,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEzD;;;;;;;;;;;;;GAaG;AACH,MAAM,WAAW,oBAAoB,CAClC,SAAS,SAAS,eAAe,GAAG,eAAe,EACnD,IAAI,SAAS,OAAO,GAAG,OAAO,CAC/B,SAAQ,qBAAqB,CAAC,SAAS,EAAE,IAAI,CAAC;IAC7C,uEAAuE;IACvE,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC;IAChC;;;;;;;;;OASG;IACH,KAAK,CAAC,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,IAAI,GAAG,SAAS,EAAE,WAAW,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;CAC3G;AAED;;;GAGG;AACH,MAAM,MAAM,2BAA2B,GAAG,cAAc,CAAC;AAEzD;;;;;;;;;;;;;;GAcG;AACH,qBAAa,2BAA2B,CACrC,SAAS,SAAS,eAAe,GAAG,eAAe,EACnD,IAAI,SAAS,OAAO,GAAG,OAAO,CAC/B,YAAW,oBAAoB,CAAC,SAAS,EAAE,IAAI,CAAC;IAM5C,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAE,sBAAsB;IALtD,qEAAqE;IACrE,SAAS,CAAC,QAAQ,CAAC,QAAQ,2CAAkD;IAC7E,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;gBAGZ,QAAQ,EAAE,sBAAsB,EACnD,OAAO,GAAE,2BAAgC;IAc5C,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAC,SAAS,EAAE,IAAI,CAAC,GAAG,UAAU;IAI7D,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO;IAI/B;;;;;;;;;;;;OAYG;IACG,KAAK,CAAC,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,IAAI,GAAG,SAAS,EAAE,WAAW,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,SAAS,CAAC;CAWhH"}
1
+ {"version":3,"file":"update-rewrite-service.d.ts","sourceRoot":"","sources":["../../../src/langium/update-rewrite/update-rewrite-service.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF,OAAO,EAAiB,KAAK,eAAe,EAAE,KAAK,MAAM,EAAE,MAAM,qBAAqB,CAAC;AACvF,OAAO,EAAE,KAAK,OAAO,EAAqB,MAAM,oBAAoB,CAAC;AACrE,OAAO,EAAE,KAAK,iBAAiB,EAAE,KAAK,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAChF,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,KAAK,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AACpE,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAClD,OAAO,EAAE,KAAK,qBAAqB,EAAE,MAAM,kCAAkC,CAAC;AAC9E,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEzD;;;;;;;;;;;;;GAaG;AACH,MAAM,WAAW,oBAAoB,CAClC,SAAS,SAAS,eAAe,GAAG,eAAe,EACnD,IAAI,SAAS,OAAO,GAAG,OAAO,CAC/B,SAAQ,qBAAqB,CAAC,SAAS,EAAE,IAAI,CAAC;IAC7C,uEAAuE;IACvE,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC;IAChC;;;;;;;;;OASG;IACH,KAAK,CAAC,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,IAAI,GAAG,SAAS,EAAE,WAAW,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;CAC3G;AAED;;;GAGG;AACH,MAAM,MAAM,2BAA2B,GAAG,cAAc,CAAC;AAEzD;;;;;;;;;;;;;;GAcG;AACH,qBAAa,2BAA2B,CACrC,SAAS,SAAS,eAAe,GAAG,eAAe,EACnD,IAAI,SAAS,OAAO,GAAG,OAAO,CAC/B,YAAW,oBAAoB,CAAC,SAAS,EAAE,IAAI,CAAC;IAM5C,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAE,sBAAsB;IALtD,qEAAqE;IACrE,SAAS,CAAC,QAAQ,CAAC,QAAQ,2CAAkD;IAC7E,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IAElC,YACsB,QAAQ,EAAE,sBAAsB,EACnD,OAAO,GAAE,2BAAgC,EAY3C;IAED,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAC,SAAS,EAAE,IAAI,CAAC,GAAG,UAAU,CAE5D;IAED,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAE9B;IAED;;;;;;;;;;;;OAYG;IACG,KAAK,CAAC,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,IAAI,GAAG,SAAS,EAAE,WAAW,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,SAAS,CAAC,CAU7G;CACH"}
@@ -1 +1 @@
1
- {"version":3,"file":"update-rewrite-service.js","sourceRoot":"","sources":["../../../src/langium/update-rewrite/update-rewrite-service.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF,OAAO,EAAE,aAAa,EAAqC,MAAM,qBAAqB,CAAC;AACvF,OAAO,EAAgB,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAIrE,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AA2ClD;;;;;;;;;;;;;;GAcG;AACH,MAAM,OAAO,2BAA2B;IASf;IALtB,qEAAqE;IAClD,QAAQ,GAAG,IAAI,QAAQ,EAAkC,CAAC;IAC1D,MAAM,CAAS;IAElC,YACsB,QAAgC,EACnD,UAAuC,EAAE;QADtB,aAAQ,GAAR,QAAQ,CAAwB;QAGnD,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,IAAI,eAAe,CAAC,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;QAEnG,mEAAmE;QACnE,mEAAmE;QACnE,uEAAuE;QACvE,6DAA6D;QAC7D,MAAM,aAAa,GAAG,QAAQ,CAAC,aAAa,EAAE,QAAQ,IAAI,EAAE,CAAC;QAC7D,KAAK,MAAM,YAAY,IAAI,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE,CAAC;YACvD,YAAY,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC;QAC7C,CAAC;IACJ,CAAC;IAED,QAAQ,CAAC,OAAuC;QAC7C,OAAO,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;IAC1C,CAAC;IAED,UAAU,CAAC,EAAU;QAClB,OAAO,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;IACvC,CAAC;IAED;;;;;;;;;;;;OAYG;IACH,KAAK,CAAC,KAAK,CAAC,KAAgB,EAAE,QAA0B,EAAE,WAA+B;QACtF,IAAI,OAAO,GAAG,KAAK,CAAC;QACpB,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,EAAE,CAAC;YACzC,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;gBAC7B,MAAM,iBAAiB,CAAC,WAAW,CAAC,CAAC;YACxC,CAAC;YACD,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;YAClD,OAAO,GAAG,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,CAAC,CAAC,MAAM,CAAc,CAAC;QAC1E,CAAC;QACD,OAAO,OAAO,CAAC;IAClB,CAAC;CACH"}
1
+ {"version":3,"file":"update-rewrite-service.js","sourceRoot":"","sources":["../../../src/langium/update-rewrite/update-rewrite-service.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF,OAAO,EAAE,aAAa,EAAqC,MAAM,qBAAqB,CAAC;AACvF,OAAO,EAAgB,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAIrE,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AA2ClD;;;;;;;;;;;;;;GAcG;AACH,MAAM,OAAO,2BAA2B;IASf,QAAQ;IAL9B,qEAAqE;IAClD,QAAQ,GAAG,IAAI,QAAQ,EAAkC,CAAC;IAC1D,MAAM,CAAS;IAElC,YACsB,QAAgC,EACnD,OAAO,GAAgC,EAAE;wBADtB,QAAQ;QAG3B,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,IAAI,eAAe,CAAC,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;QAEnG,mEAAmE;QACnE,mEAAmE;QACnE,uEAAuE;QACvE,6DAA6D;QAC7D,MAAM,aAAa,GAAG,QAAQ,CAAC,aAAa,EAAE,QAAQ,IAAI,EAAE,CAAC;QAC7D,KAAK,MAAM,YAAY,IAAI,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE,CAAC;YACvD,YAAY,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC;QAC7C,CAAC;IACJ,CAAC;IAED,QAAQ,CAAC,OAAuC;QAC7C,OAAO,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;IAC1C,CAAC;IAED,UAAU,CAAC,EAAU;QAClB,OAAO,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;IACvC,CAAC;IAED;;;;;;;;;;;;OAYG;IACH,KAAK,CAAC,KAAK,CAAC,KAAgB,EAAE,QAA0B,EAAE,WAA+B;QACtF,IAAI,OAAO,GAAG,KAAK,CAAC;QACpB,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,EAAE,CAAC;YACzC,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;gBAC7B,MAAM,iBAAiB,CAAC,WAAW,CAAC,CAAC;YACxC,CAAC;YACD,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;YAClD,OAAO,GAAG,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,CAAC,CAAC,MAAM,CAAc,CAAC;QAC1E,CAAC;QACD,OAAO,OAAO,CAAC;IAClB,CAAC;CACH"}
@@ -11,7 +11,7 @@ import { type AstNode } from '@hydranium/langium';
11
11
  import { type RegistryItem } from '../../util/registry.js';
12
12
  /**
13
13
  * A single transform applied to the incoming transfer model on the structured
14
- * (object) write path of `ModelService.update` / `ModelService.save`, before
14
+ * (object) write path of a client session's `update` / `save`, before
15
15
  * serialisation. The RPC-update-stage sibling of `IntegrityRule` /
16
16
  * `AstExtension` / `ValidationCheck` — same id-keyed,
17
17
  * priority-ordered registry shape, but it runs on the transfer model rather