@hydranium/core 1.0.0-next.19 → 1.0.0-next.192

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 (588) hide show
  1. package/README.md +6 -2
  2. package/lib/documents/ast-document-manager.d.ts +204 -62
  3. package/lib/documents/ast-document-manager.d.ts.map +1 -1
  4. package/lib/documents/ast-document-manager.js +249 -83
  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 +138 -0
  15. package/lib/documents/client-session-registry.d.ts.map +1 -0
  16. package/lib/documents/client-session-registry.js +187 -0
  17. package/lib/documents/client-session-registry.js.map +1 -0
  18. package/lib/documents/file-system-task-queue.d.ts +49 -0
  19. package/lib/documents/file-system-task-queue.d.ts.map +1 -0
  20. package/lib/documents/file-system-task-queue.js +34 -0
  21. package/lib/documents/file-system-task-queue.js.map +1 -0
  22. package/lib/documents/hydranium-text-documents.d.ts +523 -101
  23. package/lib/documents/hydranium-text-documents.d.ts.map +1 -1
  24. package/lib/documents/hydranium-text-documents.js +961 -177
  25. package/lib/documents/hydranium-text-documents.js.map +1 -1
  26. package/lib/documents/index.d.ts +5 -0
  27. package/lib/documents/index.d.ts.map +1 -1
  28. package/lib/documents/index.js +5 -0
  29. package/lib/documents/index.js.map +1 -1
  30. package/lib/documents/language-client-text-shadow.d.ts +41 -9
  31. package/lib/documents/language-client-text-shadow.d.ts.map +1 -1
  32. package/lib/documents/language-client-text-shadow.js +56 -11
  33. package/lib/documents/language-client-text-shadow.js.map +1 -1
  34. package/lib/documents/model-ledger.d.ts +47 -0
  35. package/lib/documents/model-ledger.d.ts.map +1 -0
  36. package/lib/documents/model-ledger.js +30 -0
  37. package/lib/documents/model-ledger.js.map +1 -0
  38. package/lib/documents/self-save-registry.d.ts +37 -6
  39. package/lib/documents/self-save-registry.d.ts.map +1 -1
  40. package/lib/documents/self-save-registry.js +28 -15
  41. package/lib/documents/self-save-registry.js.map +1 -1
  42. package/lib/documents/version-sync-service.d.ts +134 -0
  43. package/lib/documents/version-sync-service.d.ts.map +1 -0
  44. package/lib/documents/version-sync-service.js +171 -0
  45. package/lib/documents/version-sync-service.js.map +1 -0
  46. package/lib/index.d.ts +3 -0
  47. package/lib/index.d.ts.map +1 -1
  48. package/lib/index.js +6 -0
  49. package/lib/index.js.map +1 -1
  50. package/lib/langium/ast-extension/ast-extension-service.d.ts.map +1 -1
  51. package/lib/langium/ast-extension/ast-extension-service.js.map +1 -1
  52. package/lib/langium/ast-extension/ast-node-builder.d.ts +32 -9
  53. package/lib/langium/ast-extension/ast-node-builder.d.ts.map +1 -1
  54. package/lib/langium/ast-extension/ast-node-builder.js +60 -22
  55. package/lib/langium/ast-extension/ast-node-builder.js.map +1 -1
  56. package/lib/langium/bootstrap.d.ts.map +1 -1
  57. package/lib/langium/bootstrap.js +32 -9
  58. package/lib/langium/bootstrap.js.map +1 -1
  59. package/lib/langium/build-phase-pass/build-phase-pass-service.d.ts.map +1 -1
  60. package/lib/langium/build-phase-pass/build-phase-pass-service.js.map +1 -1
  61. package/lib/langium/config/configuration-provider.d.ts +81 -0
  62. package/lib/langium/config/configuration-provider.d.ts.map +1 -0
  63. package/lib/langium/config/configuration-provider.js +112 -0
  64. package/lib/langium/config/configuration-provider.js.map +1 -0
  65. package/lib/langium/config/index.d.ts +1 -0
  66. package/lib/langium/config/index.d.ts.map +1 -1
  67. package/lib/langium/config/index.js +1 -0
  68. package/lib/langium/config/index.js.map +1 -1
  69. package/lib/langium/config/settings.js.map +1 -1
  70. package/lib/langium/diagnostics/hydranium-langium-profiler.d.ts.map +1 -1
  71. package/lib/langium/diagnostics/hydranium-langium-profiler.js.map +1 -1
  72. package/lib/langium/diagnostics/logger.d.ts +10 -3
  73. package/lib/langium/diagnostics/logger.d.ts.map +1 -1
  74. package/lib/langium/diagnostics/logger.js +12 -5
  75. package/lib/langium/diagnostics/logger.js.map +1 -1
  76. package/lib/langium/diagnostics/lsp-logger.d.ts +17 -0
  77. package/lib/langium/diagnostics/lsp-logger.d.ts.map +1 -1
  78. package/lib/langium/diagnostics/lsp-logger.js +56 -13
  79. package/lib/langium/diagnostics/lsp-logger.js.map +1 -1
  80. package/lib/langium/diagnostics/server-tracer.d.ts.map +1 -1
  81. package/lib/langium/diagnostics/server-tracer.js.map +1 -1
  82. package/lib/langium/document-builder/build-pipeline-integration.d.ts +21 -1
  83. package/lib/langium/document-builder/build-pipeline-integration.d.ts.map +1 -1
  84. package/lib/langium/document-builder/build-pipeline-integration.js +32 -5
  85. package/lib/langium/document-builder/build-pipeline-integration.js.map +1 -1
  86. package/lib/langium/document-builder/build-session.d.ts +93 -0
  87. package/lib/langium/document-builder/build-session.d.ts.map +1 -0
  88. package/lib/langium/document-builder/build-session.js +72 -0
  89. package/lib/langium/document-builder/build-session.js.map +1 -0
  90. package/lib/langium/document-builder/document-builder.d.ts +382 -29
  91. package/lib/langium/document-builder/document-builder.d.ts.map +1 -1
  92. package/lib/langium/document-builder/document-builder.js +659 -61
  93. package/lib/langium/document-builder/document-builder.js.map +1 -1
  94. package/lib/langium/document-builder/index.d.ts +1 -0
  95. package/lib/langium/document-builder/index.d.ts.map +1 -1
  96. package/lib/langium/document-builder/index.js +1 -0
  97. package/lib/langium/document-builder/index.js.map +1 -1
  98. package/lib/langium/documentation/comment-provider.d.ts.map +1 -1
  99. package/lib/langium/documentation/comment-provider.js.map +1 -1
  100. package/lib/langium/integration-services.d.ts +45 -1
  101. package/lib/langium/integration-services.d.ts.map +1 -1
  102. package/lib/langium/integration-services.js +10 -5
  103. package/lib/langium/integration-services.js.map +1 -1
  104. package/lib/langium/integrity/integrity-rule.d.ts +13 -5
  105. package/lib/langium/integrity/integrity-rule.d.ts.map +1 -1
  106. package/lib/langium/integrity/integrity-rule.js.map +1 -1
  107. package/lib/langium/integrity/integrity-service.d.ts +58 -13
  108. package/lib/langium/integrity/integrity-service.d.ts.map +1 -1
  109. package/lib/langium/integrity/integrity-service.js +204 -29
  110. package/lib/langium/integrity/integrity-service.js.map +1 -1
  111. package/lib/langium/keys/containment.d.ts +64 -0
  112. package/lib/langium/keys/containment.d.ts.map +1 -0
  113. package/lib/langium/keys/containment.js +53 -0
  114. package/lib/langium/keys/containment.js.map +1 -0
  115. package/lib/langium/keys/index.d.ts +1 -0
  116. package/lib/langium/keys/index.d.ts.map +1 -1
  117. package/lib/langium/keys/index.js +1 -0
  118. package/lib/langium/keys/index.js.map +1 -1
  119. package/lib/langium/keys/name-based-key-provider.d.ts +4 -0
  120. package/lib/langium/keys/name-based-key-provider.d.ts.map +1 -1
  121. package/lib/langium/keys/name-based-key-provider.js +4 -0
  122. package/lib/langium/keys/name-based-key-provider.js.map +1 -1
  123. package/lib/langium/keys/positional-key-provider.d.ts.map +1 -1
  124. package/lib/langium/keys/positional-key-provider.js.map +1 -1
  125. package/lib/langium/labeling/label-provider.d.ts.map +1 -1
  126. package/lib/langium/labeling/label-provider.js.map +1 -1
  127. package/lib/langium/language-module.d.ts +27 -2
  128. package/lib/langium/language-module.d.ts.map +1 -1
  129. package/lib/langium/language-module.js +16 -2
  130. package/lib/langium/language-module.js.map +1 -1
  131. package/lib/langium/model-service/client-session.d.ts +311 -0
  132. package/lib/langium/model-service/client-session.d.ts.map +1 -0
  133. package/lib/langium/model-service/client-session.js +398 -0
  134. package/lib/langium/model-service/client-session.js.map +1 -0
  135. package/lib/langium/model-service/index.d.ts +1 -0
  136. package/lib/langium/model-service/index.d.ts.map +1 -1
  137. package/lib/langium/model-service/index.js +1 -0
  138. package/lib/langium/model-service/index.js.map +1 -1
  139. package/lib/langium/model-service/model-service.d.ts +353 -253
  140. package/lib/langium/model-service/model-service.d.ts.map +1 -1
  141. package/lib/langium/model-service/model-service.js +361 -408
  142. package/lib/langium/model-service/model-service.js.map +1 -1
  143. package/lib/langium/module.d.ts +150 -35
  144. package/lib/langium/module.d.ts.map +1 -1
  145. package/lib/langium/module.js +50 -35
  146. package/lib/langium/module.js.map +1 -1
  147. package/lib/langium/naming/name-provider.d.ts +25 -4
  148. package/lib/langium/naming/name-provider.d.ts.map +1 -1
  149. package/lib/langium/naming/name-provider.js +2 -1
  150. package/lib/langium/naming/name-provider.js.map +1 -1
  151. package/lib/langium/naming/name-separator-validation.d.ts +23 -0
  152. package/lib/langium/naming/name-separator-validation.d.ts.map +1 -1
  153. package/lib/langium/naming/name-separator-validation.js +30 -1
  154. package/lib/langium/naming/name-separator-validation.js.map +1 -1
  155. package/lib/langium/project/abstract-project-manager.d.ts.map +1 -1
  156. package/lib/langium/project/abstract-project-manager.js +9 -2
  157. package/lib/langium/project/abstract-project-manager.js.map +1 -1
  158. package/lib/langium/project/project-change-event.d.ts +2 -2
  159. package/lib/langium/project/single-project-manager.d.ts.map +1 -1
  160. package/lib/langium/project/single-project-manager.js.map +1 -1
  161. package/lib/langium/residency/cst-residency-service.d.ts +31 -11
  162. package/lib/langium/residency/cst-residency-service.d.ts.map +1 -1
  163. package/lib/langium/residency/cst-residency-service.js +23 -57
  164. package/lib/langium/residency/cst-residency-service.js.map +1 -1
  165. package/lib/langium/scope/ast-node-description-provider.d.ts.map +1 -1
  166. package/lib/langium/scope/ast-node-description-provider.js.map +1 -1
  167. package/lib/langium/scope/hydranium-scope-computation.d.ts.map +1 -1
  168. package/lib/langium/scope/hydranium-scope-computation.js.map +1 -1
  169. package/lib/langium/scope/hydranium-scope-provider.d.ts +48 -13
  170. package/lib/langium/scope/hydranium-scope-provider.d.ts.map +1 -1
  171. package/lib/langium/scope/hydranium-scope-provider.js +56 -20
  172. package/lib/langium/scope/hydranium-scope-provider.js.map +1 -1
  173. package/lib/langium/scope/reference-builder.d.ts.map +1 -1
  174. package/lib/langium/scope/reference-builder.js.map +1 -1
  175. package/lib/langium/scope/reference-candidate-provider.d.ts.map +1 -1
  176. package/lib/langium/scope/reference-candidate-provider.js.map +1 -1
  177. package/lib/langium/scope/scope-extension-service.d.ts.map +1 -1
  178. package/lib/langium/scope/scope-extension-service.js.map +1 -1
  179. package/lib/langium/serialization/abstract-serializer.d.ts +11 -20
  180. package/lib/langium/serialization/abstract-serializer.d.ts.map +1 -1
  181. package/lib/langium/serialization/abstract-serializer.js +12 -21
  182. package/lib/langium/serialization/abstract-serializer.js.map +1 -1
  183. package/lib/langium/serialization/json-serializer.d.ts +1 -1
  184. package/lib/langium/serialization/json-serializer.d.ts.map +1 -1
  185. package/lib/langium/serialization/json-serializer.js.map +1 -1
  186. package/lib/langium/serialization/yaml-serializer.d.ts.map +1 -1
  187. package/lib/langium/serialization/yaml-serializer.js.map +1 -1
  188. package/lib/langium/service-registry.d.ts +15 -1
  189. package/lib/langium/service-registry.d.ts.map +1 -1
  190. package/lib/langium/service-registry.js +16 -0
  191. package/lib/langium/service-registry.js.map +1 -1
  192. package/lib/langium/shared-services.d.ts +21 -4
  193. package/lib/langium/shared-services.d.ts.map +1 -1
  194. package/lib/langium/shared-services.js.map +1 -1
  195. package/lib/langium/transfer/transfer-encoder.d.ts +75 -23
  196. package/lib/langium/transfer/transfer-encoder.d.ts.map +1 -1
  197. package/lib/langium/transfer/transfer-encoder.js +44 -21
  198. package/lib/langium/transfer/transfer-encoder.js.map +1 -1
  199. package/lib/langium/trivia/comment-preserver.d.ts +423 -0
  200. package/lib/langium/trivia/comment-preserver.d.ts.map +1 -0
  201. package/lib/langium/trivia/comment-preserver.js +906 -0
  202. package/lib/langium/trivia/comment-preserver.js.map +1 -0
  203. package/lib/langium/trivia/document-ending-preserver.d.ts +43 -0
  204. package/lib/langium/trivia/document-ending-preserver.d.ts.map +1 -0
  205. package/lib/langium/trivia/document-ending-preserver.js +48 -0
  206. package/lib/langium/trivia/document-ending-preserver.js.map +1 -0
  207. package/lib/langium/trivia/index.d.ts +14 -0
  208. package/lib/langium/trivia/index.d.ts.map +1 -0
  209. package/lib/langium/trivia/index.js +14 -0
  210. package/lib/langium/trivia/index.js.map +1 -0
  211. package/lib/langium/trivia/trivia-contribution.d.ts +37 -0
  212. package/lib/langium/trivia/trivia-contribution.d.ts.map +1 -0
  213. package/lib/langium/trivia/trivia-contribution.js +10 -0
  214. package/lib/langium/trivia/trivia-contribution.js.map +1 -0
  215. package/lib/langium/trivia/trivia-preserver.d.ts +50 -0
  216. package/lib/langium/trivia/trivia-preserver.d.ts.map +1 -0
  217. package/lib/langium/trivia/trivia-preserver.js +10 -0
  218. package/lib/langium/trivia/trivia-preserver.js.map +1 -0
  219. package/lib/langium/trivia/trivia-service.d.ts +70 -0
  220. package/lib/langium/trivia/trivia-service.d.ts.map +1 -0
  221. package/lib/langium/trivia/trivia-service.js +56 -0
  222. package/lib/langium/trivia/trivia-service.js.map +1 -0
  223. package/lib/langium/update-rewrite/normalize-empty-strings.d.ts.map +1 -1
  224. package/lib/langium/update-rewrite/update-rewrite-service.d.ts.map +1 -1
  225. package/lib/langium/update-rewrite/update-rewrite-service.js.map +1 -1
  226. package/lib/langium/update-rewrite/update-rewrite.d.ts +1 -1
  227. package/lib/langium/validation/document-validator.d.ts +294 -10
  228. package/lib/langium/validation/document-validator.d.ts.map +1 -1
  229. package/lib/langium/validation/document-validator.js +448 -5
  230. package/lib/langium/validation/document-validator.js.map +1 -1
  231. package/lib/langium/validation/validation-contribution-collector.d.ts.map +1 -1
  232. package/lib/langium/validation/validation-contribution-collector.js.map +1 -1
  233. package/lib/langium/workspace/document-uri-policy.d.ts +17 -12
  234. package/lib/langium/workspace/document-uri-policy.d.ts.map +1 -1
  235. package/lib/langium/workspace/document-uri-policy.js +10 -9
  236. package/lib/langium/workspace/document-uri-policy.js.map +1 -1
  237. package/lib/langium/workspace/file-not-found.d.ts +17 -0
  238. package/lib/langium/workspace/file-not-found.d.ts.map +1 -0
  239. package/lib/langium/workspace/file-not-found.js +20 -0
  240. package/lib/langium/workspace/file-not-found.js.map +1 -0
  241. package/lib/langium/workspace/file-system-provider.d.ts +84 -8
  242. package/lib/langium/workspace/file-system-provider.d.ts.map +1 -1
  243. package/lib/langium/workspace/file-system-provider.js +93 -14
  244. package/lib/langium/workspace/file-system-provider.js.map +1 -1
  245. package/lib/langium/workspace/hydranium-langium-document-factory.d.ts +56 -1
  246. package/lib/langium/workspace/hydranium-langium-document-factory.d.ts.map +1 -1
  247. package/lib/langium/workspace/hydranium-langium-document-factory.js +79 -0
  248. package/lib/langium/workspace/hydranium-langium-document-factory.js.map +1 -1
  249. package/lib/langium/workspace/hydranium-workspace-lock.d.ts +43 -1
  250. package/lib/langium/workspace/hydranium-workspace-lock.d.ts.map +1 -1
  251. package/lib/langium/workspace/hydranium-workspace-lock.js +58 -1
  252. package/lib/langium/workspace/hydranium-workspace-lock.js.map +1 -1
  253. package/lib/langium/workspace/hydranium-workspace-manager.d.ts +81 -8
  254. package/lib/langium/workspace/hydranium-workspace-manager.d.ts.map +1 -1
  255. package/lib/langium/workspace/hydranium-workspace-manager.js +128 -10
  256. package/lib/langium/workspace/hydranium-workspace-manager.js.map +1 -1
  257. package/lib/langium/workspace/in-memory-file-system-provider.d.ts +25 -2
  258. package/lib/langium/workspace/in-memory-file-system-provider.d.ts.map +1 -1
  259. package/lib/langium/workspace/in-memory-file-system-provider.js +41 -15
  260. package/lib/langium/workspace/in-memory-file-system-provider.js.map +1 -1
  261. package/lib/langium/workspace/index-manager.d.ts.map +1 -1
  262. package/lib/langium/workspace/index-manager.js.map +1 -1
  263. package/lib/langium/workspace/initialize-workspace.d.ts +31 -2
  264. package/lib/langium/workspace/initialize-workspace.d.ts.map +1 -1
  265. package/lib/langium/workspace/initialize-workspace.js +13 -5
  266. package/lib/langium/workspace/initialize-workspace.js.map +1 -1
  267. package/lib/langium/workspace/langium-documents.d.ts +86 -17
  268. package/lib/langium/workspace/langium-documents.d.ts.map +1 -1
  269. package/lib/langium/workspace/langium-documents.js +101 -29
  270. package/lib/langium/workspace/langium-documents.js.map +1 -1
  271. package/lib/langium/workspace/persistent-file-system-provider.d.ts +0 -7
  272. package/lib/langium/workspace/persistent-file-system-provider.d.ts.map +1 -1
  273. package/lib/langium/workspace/persistent-file-system-provider.js +0 -7
  274. package/lib/langium/workspace/persistent-file-system-provider.js.map +1 -1
  275. package/lib/langium/workspace/virtual-document.d.ts +48 -15
  276. package/lib/langium/workspace/virtual-document.d.ts.map +1 -1
  277. package/lib/langium/workspace/virtual-document.js +78 -18
  278. package/lib/langium/workspace/virtual-document.js.map +1 -1
  279. package/lib/langium/workspace/write-lock-scope.d.ts +20 -10
  280. package/lib/langium/workspace/write-lock-scope.d.ts.map +1 -1
  281. package/lib/langium/workspace/write-lock-scope.js +12 -4
  282. package/lib/langium/workspace/write-lock-scope.js.map +1 -1
  283. package/lib/locale/index.d.ts +10 -0
  284. package/lib/locale/index.d.ts.map +1 -0
  285. package/lib/locale/index.js +10 -0
  286. package/lib/locale/index.js.map +1 -0
  287. package/lib/locale/server-locale.d.ts +73 -0
  288. package/lib/locale/server-locale.d.ts.map +1 -0
  289. package/lib/locale/server-locale.js +61 -0
  290. package/lib/locale/server-locale.js.map +1 -0
  291. package/lib/lsp/completion/hydranium-completion-provider.d.ts +44 -2
  292. package/lib/lsp/completion/hydranium-completion-provider.d.ts.map +1 -1
  293. package/lib/lsp/completion/hydranium-completion-provider.js +68 -0
  294. package/lib/lsp/completion/hydranium-completion-provider.js.map +1 -1
  295. package/lib/lsp/connection-features.d.ts +23 -0
  296. package/lib/lsp/connection-features.d.ts.map +1 -0
  297. package/lib/lsp/connection-features.js +60 -0
  298. package/lib/lsp/connection-features.js.map +1 -0
  299. package/lib/lsp/diagnostics-connection.d.ts +27 -0
  300. package/lib/lsp/diagnostics-connection.d.ts.map +1 -0
  301. package/lib/lsp/diagnostics-connection.js +53 -0
  302. package/lib/lsp/diagnostics-connection.js.map +1 -0
  303. package/lib/lsp/hydranium-document-update-handler.d.ts +90 -79
  304. package/lib/lsp/hydranium-document-update-handler.d.ts.map +1 -1
  305. package/lib/lsp/hydranium-document-update-handler.js +153 -99
  306. package/lib/lsp/hydranium-document-update-handler.js.map +1 -1
  307. package/lib/lsp/index.d.ts +3 -1
  308. package/lib/lsp/index.d.ts.map +1 -1
  309. package/lib/lsp/index.js +3 -1
  310. package/lib/lsp/index.js.map +1 -1
  311. package/lib/lsp/lsp-latency.d.ts +39 -0
  312. package/lib/lsp/lsp-latency.d.ts.map +1 -0
  313. package/lib/lsp/lsp-latency.js +58 -0
  314. package/lib/lsp/lsp-latency.js.map +1 -0
  315. package/lib/lsp/semantic-token-provider.d.ts +34 -1
  316. package/lib/lsp/semantic-token-provider.d.ts.map +1 -1
  317. package/lib/lsp/semantic-token-provider.js +55 -8
  318. package/lib/lsp/semantic-token-provider.js.map +1 -1
  319. package/lib/lsp/shared-module.d.ts +4 -8
  320. package/lib/lsp/shared-module.d.ts.map +1 -1
  321. package/lib/lsp/shared-module.js.map +1 -1
  322. package/lib/lsp/start-language-server.d.ts +8 -7
  323. package/lib/lsp/start-language-server.d.ts.map +1 -1
  324. package/lib/lsp/start-language-server.js +13 -7
  325. package/lib/lsp/start-language-server.js.map +1 -1
  326. package/lib/messages/carriers.d.ts +54 -0
  327. package/lib/messages/carriers.d.ts.map +1 -0
  328. package/lib/messages/carriers.js +62 -0
  329. package/lib/messages/carriers.js.map +1 -0
  330. package/lib/messages/index.d.ts +25 -0
  331. package/lib/messages/index.d.ts.map +1 -0
  332. package/lib/messages/index.js +25 -0
  333. package/lib/messages/index.js.map +1 -0
  334. package/lib/messages/renderer.d.ts +142 -0
  335. package/lib/messages/renderer.d.ts.map +1 -0
  336. package/lib/messages/renderer.js +165 -0
  337. package/lib/messages/renderer.js.map +1 -0
  338. package/lib/node/event-loop-monitor.js.map +1 -1
  339. package/lib/node/heap-ceiling.d.ts +61 -0
  340. package/lib/node/heap-ceiling.d.ts.map +1 -0
  341. package/lib/node/heap-ceiling.js +72 -0
  342. package/lib/node/heap-ceiling.js.map +1 -0
  343. package/lib/node/index.d.ts +1 -0
  344. package/lib/node/index.d.ts.map +1 -1
  345. package/lib/node/index.js +1 -0
  346. package/lib/node/index.js.map +1 -1
  347. package/lib/node/latency-from-env.d.ts +1 -1
  348. package/lib/node/latency-from-env.js +1 -1
  349. package/lib/node/lint-grammar.js.map +1 -1
  350. package/lib/node/measure-memory.d.ts.map +1 -1
  351. package/lib/node/measure-memory.js +1 -0
  352. package/lib/node/measure-memory.js.map +1 -1
  353. package/lib/node/memory-monitor.js.map +1 -1
  354. package/lib/node/node-file-system-provider.d.ts +39 -4
  355. package/lib/node/node-file-system-provider.d.ts.map +1 -1
  356. package/lib/node/node-file-system-provider.js +109 -49
  357. package/lib/node/node-file-system-provider.js.map +1 -1
  358. package/lib/node/process-memory.js.map +1 -1
  359. package/lib/node/profile-capture.d.ts +8 -2
  360. package/lib/node/profile-capture.d.ts.map +1 -1
  361. package/lib/node/profile-capture.js.map +1 -1
  362. package/lib/node/profile-digest.js.map +1 -1
  363. package/lib/node/profiling-run.d.ts +13 -3
  364. package/lib/node/profiling-run.d.ts.map +1 -1
  365. package/lib/node/profiling-run.js +17 -8
  366. package/lib/node/profiling-run.js.map +1 -1
  367. package/lib/node/rename-over-open-readers.d.ts +52 -0
  368. package/lib/node/rename-over-open-readers.d.ts.map +1 -0
  369. package/lib/node/rename-over-open-readers.js +66 -0
  370. package/lib/node/rename-over-open-readers.js.map +1 -0
  371. package/lib/node/socket-launcher.d.ts +16 -1
  372. package/lib/node/socket-launcher.d.ts.map +1 -1
  373. package/lib/node/socket-launcher.js +4 -3
  374. package/lib/node/socket-launcher.js.map +1 -1
  375. package/lib/node/stdio-launcher.d.ts +1 -1
  376. package/lib/node/stdio-launcher.d.ts.map +1 -1
  377. package/lib/node/stdio-launcher.js +1 -1
  378. package/lib/node/stdio-launcher.js.map +1 -1
  379. package/lib/testing/document-uri-policy-conformance.js.map +1 -1
  380. package/lib/testing/fake-description.js.map +1 -1
  381. package/lib/testing/fake-document.d.ts +16 -4
  382. package/lib/testing/fake-document.d.ts.map +1 -1
  383. package/lib/testing/fake-document.js +18 -3
  384. package/lib/testing/fake-document.js.map +1 -1
  385. package/lib/testing/index.d.ts +1 -1
  386. package/lib/testing/index.d.ts.map +1 -1
  387. package/lib/testing/index.js +2 -1
  388. package/lib/testing/index.js.map +1 -1
  389. package/lib/testing/langium-test-helpers.d.ts.map +1 -1
  390. package/lib/testing/langium-test-helpers.js +1 -0
  391. package/lib/testing/langium-test-helpers.js.map +1 -1
  392. package/lib/testing/make-noop-language-services.js.map +1 -1
  393. package/lib/testing/make-noop-shared-services.d.ts +14 -0
  394. package/lib/testing/make-noop-shared-services.d.ts.map +1 -1
  395. package/lib/testing/make-noop-shared-services.js +28 -2
  396. package/lib/testing/make-noop-shared-services.js.map +1 -1
  397. package/lib/testing/make-test-services.d.ts +69 -14
  398. package/lib/testing/make-test-services.d.ts.map +1 -1
  399. package/lib/testing/make-test-services.js +39 -10
  400. package/lib/testing/make-test-services.js.map +1 -1
  401. package/lib/testing/make-test-tracer.js.map +1 -1
  402. package/lib/testing/node/golden-corpus.js.map +1 -1
  403. package/lib/testing/node/index.d.ts +1 -0
  404. package/lib/testing/node/index.d.ts.map +1 -1
  405. package/lib/testing/node/index.js +1 -0
  406. package/lib/testing/node/index.js.map +1 -1
  407. package/lib/testing/node/lsp-harness.d.ts.map +1 -1
  408. package/lib/testing/node/lsp-harness.js +2 -0
  409. package/lib/testing/node/lsp-harness.js.map +1 -1
  410. package/lib/testing/node/lsp-server-connection.d.ts +11 -3
  411. package/lib/testing/node/lsp-server-connection.d.ts.map +1 -1
  412. package/lib/testing/node/lsp-server-connection.js +42 -9
  413. package/lib/testing/node/lsp-server-connection.js.map +1 -1
  414. package/lib/testing/node/scratch-workspace.d.ts.map +1 -1
  415. package/lib/testing/node/scratch-workspace.js +10 -5
  416. package/lib/testing/node/scratch-workspace.js.map +1 -1
  417. package/lib/testing/node/spawned-server.d.ts +14 -0
  418. package/lib/testing/node/spawned-server.d.ts.map +1 -1
  419. package/lib/testing/node/spawned-server.js +33 -1
  420. package/lib/testing/node/spawned-server.js.map +1 -1
  421. package/lib/testing/node/unhandled-rejections.d.ts +20 -0
  422. package/lib/testing/node/unhandled-rejections.d.ts.map +1 -0
  423. package/lib/testing/node/unhandled-rejections.js +32 -0
  424. package/lib/testing/node/unhandled-rejections.js.map +1 -0
  425. package/lib/testing/playwright/browser-capture-bridge.js.map +1 -1
  426. package/lib/testing/playwright/e2e-profiling.js.map +1 -1
  427. package/lib/testing/playwright/flaky-network-proxy.d.ts +76 -0
  428. package/lib/testing/playwright/flaky-network-proxy.d.ts.map +1 -0
  429. package/lib/testing/playwright/flaky-network-proxy.js +164 -0
  430. package/lib/testing/playwright/flaky-network-proxy.js.map +1 -0
  431. package/lib/testing/playwright/index.d.ts +1 -0
  432. package/lib/testing/playwright/index.d.ts.map +1 -1
  433. package/lib/testing/playwright/index.js +1 -0
  434. package/lib/testing/playwright/index.js.map +1 -1
  435. package/lib/testing/playwright/server-log-capture.d.ts +24 -8
  436. package/lib/testing/playwright/server-log-capture.d.ts.map +1 -1
  437. package/lib/testing/playwright/server-log-capture.js +27 -6
  438. package/lib/testing/playwright/server-log-capture.js.map +1 -1
  439. package/lib/testing/playwright/server-log-rename-reporter.d.ts.map +1 -1
  440. package/lib/testing/playwright/server-log-rename-reporter.js +10 -1
  441. package/lib/testing/playwright/server-log-rename-reporter.js.map +1 -1
  442. package/lib/testing/run-update-pipeline.d.ts +4 -4
  443. package/lib/testing/run-update-pipeline.d.ts.map +1 -1
  444. package/lib/testing/stub-ast-document-manager.d.ts +11 -9
  445. package/lib/testing/stub-ast-document-manager.d.ts.map +1 -1
  446. package/lib/testing/stub-ast-document-manager.js +23 -9
  447. package/lib/testing/stub-ast-document-manager.js.map +1 -1
  448. package/lib/testing/stub-document-builder.d.ts +26 -11
  449. package/lib/testing/stub-document-builder.d.ts.map +1 -1
  450. package/lib/testing/stub-document-builder.js +57 -4
  451. package/lib/testing/stub-document-builder.js.map +1 -1
  452. package/lib/testing/stub-hydranium-text-documents.d.ts +22 -7
  453. package/lib/testing/stub-hydranium-text-documents.d.ts.map +1 -1
  454. package/lib/testing/stub-hydranium-text-documents.js +97 -15
  455. package/lib/testing/stub-hydranium-text-documents.js.map +1 -1
  456. package/lib/testing/stub-index-manager.js.map +1 -1
  457. package/lib/testing/stub-langium-documents.d.ts +3 -2
  458. package/lib/testing/stub-langium-documents.d.ts.map +1 -1
  459. package/lib/testing/stub-langium-documents.js.map +1 -1
  460. package/lib/testing/stub-model-service.d.ts +7 -6
  461. package/lib/testing/stub-model-service.d.ts.map +1 -1
  462. package/lib/testing/stub-model-service.js +4 -4
  463. package/lib/testing/stub-model-service.js.map +1 -1
  464. package/lib/testing/stub-project-manager.js.map +1 -1
  465. package/lib/testing/stub-service-registry.js.map +1 -1
  466. package/lib/util/connection-liveness.d.ts +7 -6
  467. package/lib/util/connection-liveness.d.ts.map +1 -1
  468. package/lib/util/connection-liveness.js +35 -14
  469. package/lib/util/connection-liveness.js.map +1 -1
  470. package/lib/util/environment.d.ts.map +1 -1
  471. package/lib/util/environment.js.map +1 -1
  472. package/lib/util/registry.d.ts.map +1 -1
  473. package/package.json +35 -26
  474. package/src/documents/ast-document-manager.ts +377 -125
  475. package/src/documents/client-ids.ts +5 -22
  476. package/src/documents/client-session-errors.ts +24 -0
  477. package/src/documents/client-session-registry.ts +240 -0
  478. package/src/documents/file-system-task-queue.ts +68 -0
  479. package/src/documents/hydranium-text-documents.ts +1175 -225
  480. package/src/documents/index.ts +5 -0
  481. package/src/documents/language-client-text-shadow.ts +59 -11
  482. package/src/documents/model-ledger.ts +66 -0
  483. package/src/documents/self-save-registry.ts +52 -13
  484. package/src/documents/version-sync-service.ts +267 -0
  485. package/src/index.ts +6 -0
  486. package/src/langium/ast-extension/ast-node-builder.ts +66 -22
  487. package/src/langium/bootstrap.ts +32 -9
  488. package/src/langium/config/configuration-provider.ts +119 -0
  489. package/src/langium/config/index.ts +1 -0
  490. package/src/langium/diagnostics/logger.ts +12 -5
  491. package/src/langium/diagnostics/lsp-logger.ts +58 -12
  492. package/src/langium/document-builder/build-pipeline-integration.ts +50 -5
  493. package/src/langium/document-builder/build-session.ts +87 -0
  494. package/src/langium/document-builder/document-builder.ts +776 -59
  495. package/src/langium/document-builder/index.ts +1 -0
  496. package/src/langium/integration-services.ts +67 -6
  497. package/src/langium/integrity/integrity-rule.ts +13 -5
  498. package/src/langium/integrity/integrity-service.ts +220 -30
  499. package/src/langium/keys/containment.ts +87 -0
  500. package/src/langium/keys/index.ts +1 -0
  501. package/src/langium/keys/name-based-key-provider.ts +4 -0
  502. package/src/langium/language-module.ts +42 -4
  503. package/src/langium/model-service/client-session.ts +614 -0
  504. package/src/langium/model-service/index.ts +1 -0
  505. package/src/langium/model-service/model-service.ts +570 -433
  506. package/src/langium/module.ts +201 -64
  507. package/src/langium/naming/name-provider.ts +27 -5
  508. package/src/langium/naming/name-separator-validation.ts +34 -5
  509. package/src/langium/project/abstract-project-manager.ts +9 -1
  510. package/src/langium/project/project-change-event.ts +2 -2
  511. package/src/langium/residency/cst-residency-service.ts +46 -15
  512. package/src/langium/scope/hydranium-scope-provider.ts +60 -22
  513. package/src/langium/serialization/abstract-serializer.ts +13 -32
  514. package/src/langium/service-registry.ts +19 -2
  515. package/src/langium/shared-services.ts +25 -4
  516. package/src/langium/transfer/transfer-encoder.ts +102 -34
  517. package/src/langium/trivia/comment-preserver.ts +1100 -0
  518. package/src/langium/trivia/document-ending-preserver.ts +55 -0
  519. package/src/langium/trivia/index.ts +14 -0
  520. package/src/langium/trivia/trivia-contribution.ts +39 -0
  521. package/src/langium/trivia/trivia-preserver.ts +54 -0
  522. package/src/langium/trivia/trivia-service.ts +99 -0
  523. package/src/langium/update-rewrite/update-rewrite.ts +1 -1
  524. package/src/langium/validation/document-validator.ts +537 -11
  525. package/src/langium/workspace/document-uri-policy.ts +17 -12
  526. package/src/langium/workspace/file-not-found.ts +23 -0
  527. package/src/langium/workspace/file-system-provider.ts +153 -16
  528. package/src/langium/workspace/hydranium-langium-document-factory.ts +117 -0
  529. package/src/langium/workspace/hydranium-workspace-lock.ts +86 -2
  530. package/src/langium/workspace/hydranium-workspace-manager.ts +153 -13
  531. package/src/langium/workspace/in-memory-file-system-provider.ts +47 -16
  532. package/src/langium/workspace/initialize-workspace.ts +43 -5
  533. package/src/langium/workspace/langium-documents.ts +124 -33
  534. package/src/langium/workspace/persistent-file-system-provider.ts +0 -7
  535. package/src/langium/workspace/virtual-document.ts +96 -19
  536. package/src/langium/workspace/write-lock-scope.ts +24 -11
  537. package/src/locale/index.ts +10 -0
  538. package/src/locale/server-locale.ts +86 -0
  539. package/src/lsp/completion/hydranium-completion-provider.ts +82 -2
  540. package/src/lsp/connection-features.ts +67 -0
  541. package/src/lsp/diagnostics-connection.ts +56 -0
  542. package/src/lsp/hydranium-document-update-handler.ts +185 -106
  543. package/src/lsp/index.ts +3 -1
  544. package/src/lsp/lsp-latency.ts +62 -0
  545. package/src/lsp/semantic-token-provider.ts +74 -7
  546. package/src/lsp/shared-module.ts +4 -8
  547. package/src/lsp/start-language-server.ts +13 -7
  548. package/src/messages/carriers.ts +78 -0
  549. package/src/messages/index.ts +36 -0
  550. package/src/messages/renderer.ts +212 -0
  551. package/src/node/heap-ceiling.ts +108 -0
  552. package/src/node/index.ts +1 -0
  553. package/src/node/latency-from-env.ts +1 -1
  554. package/src/node/measure-memory.ts +1 -0
  555. package/src/node/node-file-system-provider.ts +122 -51
  556. package/src/node/profile-capture.ts +8 -2
  557. package/src/node/profiling-run.ts +30 -8
  558. package/src/node/rename-over-open-readers.ts +78 -0
  559. package/src/node/socket-launcher.ts +19 -4
  560. package/src/node/stdio-launcher.ts +1 -2
  561. package/src/testing/fake-document.ts +24 -5
  562. package/src/testing/index.ts +2 -1
  563. package/src/testing/langium-test-helpers.ts +1 -0
  564. package/src/testing/make-noop-shared-services.ts +50 -2
  565. package/src/testing/make-test-services.ts +120 -31
  566. package/src/testing/node/index.ts +1 -0
  567. package/src/testing/node/lsp-harness.ts +2 -0
  568. package/src/testing/node/lsp-server-connection.ts +61 -11
  569. package/src/testing/node/scratch-workspace.ts +10 -5
  570. package/src/testing/node/spawned-server.ts +35 -1
  571. package/src/testing/node/unhandled-rejections.ts +31 -0
  572. package/src/testing/playwright/flaky-network-proxy.ts +240 -0
  573. package/src/testing/playwright/index.ts +1 -0
  574. package/src/testing/playwright/server-log-capture.ts +45 -11
  575. package/src/testing/playwright/server-log-rename-reporter.ts +12 -1
  576. package/src/testing/run-update-pipeline.ts +4 -4
  577. package/src/testing/stub-ast-document-manager.ts +37 -22
  578. package/src/testing/stub-document-builder.ts +83 -17
  579. package/src/testing/stub-hydranium-text-documents.ts +133 -23
  580. package/src/testing/stub-langium-documents.ts +3 -2
  581. package/src/testing/stub-model-service.ts +9 -8
  582. package/src/util/connection-liveness.ts +37 -14
  583. package/src/util/environment.ts +9 -1
  584. package/lib/lsp/instrument-connection.d.ts +0 -36
  585. package/lib/lsp/instrument-connection.d.ts.map +0 -1
  586. package/lib/lsp/instrument-connection.js +0 -62
  587. package/lib/lsp/instrument-connection.js.map +0 -1
  588. package/src/lsp/instrument-connection.ts +0 -66
@@ -10,12 +10,10 @@ import { isCaseInsensitiveFileSystem } from '../util/environment.js';
10
10
  /** Default eligibility window for a self-save entry. */
11
11
  const DEFAULT_TTL_MS = 30_000;
12
12
  /**
13
- * Tracks `mtime` of files written by the server itself so the echo
14
- * `didChangeWatchedFiles` event from the OS file watcher can be suppressed,
15
- * avoiding redundant rebuilds after each save. Entries are matched by mtime
16
- * (not by a time window) and expire after a TTL.
13
+ * Compares entries by mtime rather than by a time window, so the echo of a
14
+ * save whose content is unchanged is still recognised.
17
15
  */
18
- export class SelfSaveRegistry {
16
+ export class DefaultSelfSaveRegistry {
19
17
  entries = new Map();
20
18
  /**
21
19
  * Read time through the shared {@link Clock} rather than `Date.now()`: the
@@ -46,23 +44,38 @@ export class SelfSaveRegistry {
46
44
  key(fsPath) {
47
45
  return isCaseInsensitiveFileSystem() ? fsPath.toLowerCase() : fsPath;
48
46
  }
49
- /** Record a self-write. Key by `fsPath` (not URI string) to avoid URI-form mismatches. */
50
47
  register(fsPath, mtimeMs) {
48
+ this.evictExpired();
51
49
  this.entries.set(this.key(fsPath), { mtimeMs, registeredAt: this.clock.now() });
52
50
  }
53
- /** True if `mtimeMs` matches a recent self-write. Evicts stale entries. Not consumed on match. */
54
- matches(fsPath, mtimeMs) {
55
- const key = this.key(fsPath);
56
- const entry = this.entries.get(key);
57
- if (!entry) {
58
- return false;
59
- }
60
- if (this.clock.now() - entry.registeredAt > this.ttlMs) {
61
- this.entries.delete(key);
51
+ isRegistered(fsPath, mtimeMs) {
52
+ const entry = this.entries.get(this.key(fsPath));
53
+ if (!entry || this.isExpired(entry.registeredAt)) {
62
54
  return false;
63
55
  }
64
56
  // Accept mtime equality (some filesystems have 1-second precision).
65
57
  return entry.mtimeMs === mtimeMs;
66
58
  }
59
+ /**
60
+ * Drop every expired registration.
61
+ *
62
+ * On the WRITE path, so the query stays free of side effects. Evicting from
63
+ * the query instead reaches only the keys something happens to ask about,
64
+ * and a path written once and never queried again is then retained for the
65
+ * life of the process. Bounded by the paths self-written inside one TTL
66
+ * window, so the sweep is over a handful of entries and sits behind a file
67
+ * write either way.
68
+ */
69
+ evictExpired() {
70
+ for (const [key, entry] of this.entries) {
71
+ if (this.isExpired(entry.registeredAt)) {
72
+ this.entries.delete(key);
73
+ }
74
+ }
75
+ }
76
+ /** Strictly greater, so an entry aged exactly to the TTL is still eligible. */
77
+ isExpired(registeredAt) {
78
+ return this.clock.now() - registeredAt > this.ttlMs;
79
+ }
67
80
  }
68
81
  //# sourceMappingURL=self-save-registry.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"self-save-registry.js","sourceRoot":"","sources":["../../src/documents/self-save-registry.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAGlF,OAAO,EAAE,2BAA2B,EAAE,MAAM,wBAAwB,CAAC;AAGrE,wDAAwD;AACxD,MAAM,cAAc,GAAG,MAAM,CAAC;AAO9B;;;;;GAKG;AACH,MAAM,OAAO,gBAAgB;IACP,OAAO,GAAG,IAAI,GAAG,EAAqD,CAAC;IAC1F;;;;;;OAMG;IACgB,KAAK,CAAQ;IACb,KAAK,CAAS;IAEjC,YAAY,QAAoD,EAAE,UAAmC,EAAE;QACpG,IAAI,CAAC,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC;QAC5B,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,cAAc,CAAC;IAChD,CAAC;IAED;;;;;;;;;;;;OAYG;IACO,GAAG,CAAC,MAAc;QACzB,OAAO,2BAA2B,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC;IACxE,CAAC;IAED,0FAA0F;IAC1F,QAAQ,CAAC,MAAc,EAAE,OAAe;QACrC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE,OAAO,EAAE,YAAY,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;IACnF,CAAC;IAED,kGAAkG;IAClG,OAAO,CAAC,MAAc,EAAE,OAAe;QACpC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAC7B,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACpC,IAAI,CAAC,KAAK,EAAE,CAAC;YACV,OAAO,KAAK,CAAC;QAChB,CAAC;QACD,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC,YAAY,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;YACtD,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACzB,OAAO,KAAK,CAAC;QAChB,CAAC;QACD,oEAAoE;QACpE,OAAO,KAAK,CAAC,OAAO,KAAK,OAAO,CAAC;IACpC,CAAC;CACH"}
1
+ {"version":3,"file":"self-save-registry.js","sourceRoot":"","sources":["../../src/documents/self-save-registry.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAGlF,OAAO,EAAE,2BAA2B,EAAE,MAAM,wBAAwB,CAAC;AAGrE,wDAAwD;AACxD,MAAM,cAAc,GAAG,MAAM,CAAC;AA+B9B;;;GAGG;AACH,MAAM,OAAO,uBAAuB;IACd,OAAO,GAAG,IAAI,GAAG,EAAqD,CAAC;IAC1F;;;;;;OAMG;IACgB,KAAK,CAAQ;IACb,KAAK,CAAS;IAEjC,YAAY,QAAoD,EAAE,OAAO,GAA4B,EAAE;QACpG,IAAI,CAAC,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC;QAC5B,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,cAAc,CAAC;IAChD,CAAC;IAED;;;;;;;;;;;;OAYG;IACO,GAAG,CAAC,MAAc;QACzB,OAAO,2BAA2B,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC;IACxE,CAAC;IAED,QAAQ,CAAC,MAAc,EAAE,OAAe;QACrC,IAAI,CAAC,YAAY,EAAE,CAAC;QACpB,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE,OAAO,EAAE,YAAY,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;IACnF,CAAC;IAED,YAAY,CAAC,MAAc,EAAE,OAAe;QACzC,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;QACjD,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,YAAY,CAAC,EAAE,CAAC;YAChD,OAAO,KAAK,CAAC;QAChB,CAAC;QACD,oEAAoE;QACpE,OAAO,KAAK,CAAC,OAAO,KAAK,OAAO,CAAC;IACpC,CAAC;IAED;;;;;;;;;OASG;IACO,YAAY;QACnB,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACvC,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,YAAY,CAAC,EAAE,CAAC;gBACtC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAC5B,CAAC;QACJ,CAAC;IACJ,CAAC;IAED,+EAA+E;IACrE,SAAS,CAAC,YAAoB;QACrC,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC;IACvD,CAAC;CACH"}
@@ -0,0 +1,134 @@
1
+ /********************************************************************************
2
+ * Copyright (c) 2026 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 Tracer } from '@hydranium/protocol';
11
+ import { Disposable, Emitter, type Event } from 'vscode-languageserver-protocol';
12
+ import { type LogNameOptions } from '../langium/diagnostics/logger.js';
13
+ import { type ServerSharedServices } from '../langium/module.js';
14
+ /** A build {@link VersionSyncService.requestRecoveryBuild} schedules. */
15
+ export interface RecoveryBuildRequest {
16
+ /** Remove the document instead of building it. */
17
+ readonly deleted?: boolean;
18
+ /** Staged for the build, as `HydraniumDocumentBuilder.scheduleUpdate` takes it. */
19
+ readonly reason?: string;
20
+ /** Asked again inside the lock, where a build that ran meanwhile may have made the request moot. */
21
+ readonly stillNeeded: () => boolean;
22
+ /** Build even while a {@link VersionSyncService.registerDeferredBuilds} check holds the URI back. */
23
+ readonly ignoreDeferred?: boolean;
24
+ }
25
+ /**
26
+ * Keeps each workspace root's `ModelLedger` record in step with the
27
+ * text store, and owns every build that syncs a root to its text or recovers
28
+ * one a build left behind.
29
+ */
30
+ export interface VersionSyncService {
31
+ /**
32
+ * Report a root a factory, registry, integrity repair or other producer
33
+ * made. Below `Parsed` it is marked a placeholder. Otherwise `origin.version`,
34
+ * the store's version read before the parse, is recorded; a registered
35
+ * document is then reconciled with the store, re-versioned and recorded at
36
+ * the store's version of its text, built if behind, and announced on
37
+ * {@link onDidRecordModel}. `origin.text` stands for a root whose CST is not
38
+ * the text it describes.
39
+ */
40
+ modelProduced(document: LangiumDocument, origin?: {
41
+ version?: number;
42
+ text?: string;
43
+ }): void;
44
+ /**
45
+ * Build `uri` from a `WorkspaceLock` read, so the build queues behind a
46
+ * running one rather than cancelling it. Requests made while one for `uri`
47
+ * is pending share its next build. Resolves `true` once a build that carried
48
+ * this request completed, or once a check before a build found it no longer
49
+ * needed or deferred. A build a later write cancelled does not count: the
50
+ * request rides the next one. Resolves `false` once builds carrying this
51
+ * request have failed more often than it may retry, so a caller waiting on
52
+ * the build can stop. Never rejects.
53
+ */
54
+ requestRecoveryBuild(uri: URI, request: RecoveryBuildRequest): Promise<boolean>;
55
+ /**
56
+ * Build `uri` unless it is {@link isSyncedTo synced to} `textVersion`, asked
57
+ * again inside the lock. `undefined` when no build is needed, else the
58
+ * {@link requestRecoveryBuild} answer.
59
+ */
60
+ syncTo(uri: URI, textVersion: number): Promise<boolean> | undefined;
61
+ /**
62
+ * Whether `uri`'s root was parsed from text at `textVersion` or later; requests
63
+ * nothing. A root with no recorded version or a placeholder counts as synced,
64
+ * since no build records a version for it, and so does a URI with no document.
65
+ */
66
+ isSyncedTo(uri: URI, textVersion: number): boolean;
67
+ /**
68
+ * Register `isDeferred`, which answers whether its caller holds back a build
69
+ * of a URI it will request later, as the update handler does for a debounced
70
+ * editor change. A caller that drops a held change has to leave the URI to
71
+ * another build.
72
+ */
73
+ registerDeferredBuilds(isDeferred: (uri: URI) => boolean): Disposable;
74
+ /**
75
+ * Fires for every reconciled root. A cancel cannot skip it, unlike a
76
+ * `Parsed` phase listener. It can fire inside a build's write lock, so a
77
+ * listener that requests a build must not await it.
78
+ */
79
+ readonly onDidRecordModel: Event<LangiumDocument>;
80
+ }
81
+ /** A request waiting in {@link PendingRecoveryBuilds}, with the failed builds that carried it. */
82
+ export interface QueuedRecoveryBuild {
83
+ readonly request: RecoveryBuildRequest;
84
+ failures: number;
85
+ readonly answer: (built: boolean) => void;
86
+ }
87
+ /** The requests waiting on one URI's builds in {@link DefaultVersionSyncService}. */
88
+ export interface PendingRecoveryBuilds {
89
+ readonly queued: QueuedRecoveryBuild[];
90
+ }
91
+ /**
92
+ * Collaborators are resolved per call: the registry and its document factory,
93
+ * which construct each other, report roots to this service.
94
+ */
95
+ export declare class DefaultVersionSyncService implements VersionSyncService {
96
+ protected readonly services: ServerSharedServices;
97
+ protected readonly tracer: Tracer;
98
+ protected readonly recordedEmitter: Emitter<LangiumDocument<import("@hydranium/langium").AstNode>>;
99
+ protected readonly deferredBuildChecks: Set<(uri: URI) => boolean>;
100
+ protected readonly pendingBuilds: Map<string, PendingRecoveryBuilds>;
101
+ /** Retries of each request after a failed build before it is answered `false`. */
102
+ protected readonly maxBuildRetries: number;
103
+ constructor(services: ServerSharedServices, options?: LogNameOptions);
104
+ get onDidRecordModel(): Event<LangiumDocument>;
105
+ modelProduced(document: LangiumDocument, origin?: {
106
+ version?: number;
107
+ text?: string;
108
+ }): void;
109
+ syncTo(uri: URI, textVersion: number): Promise<boolean> | undefined;
110
+ requestRecoveryBuild(uri: URI, request: RecoveryBuildRequest): Promise<boolean>;
111
+ registerDeferredBuilds(isDeferred: (uri: URI) => boolean): Disposable;
112
+ isSyncedTo(uri: URI, textVersion: number): boolean;
113
+ /** The text `document`'s root was parsed from, or for a root built without either record or CST, the document's own. */
114
+ protected parsedText(document: LangiumDocument): string;
115
+ /**
116
+ * Run `entry`'s requests, one build per batch, until none is queued, and
117
+ * answer each. A request a failed build carried is queued again
118
+ * {@link maxBuildRetries} times, then answered `false`; one a cancelled
119
+ * build carried is queued again without counting. The entry is dropped
120
+ * in the same tick as the last check of the queue, so no request lands in
121
+ * an entry nothing runs any more.
122
+ */
123
+ protected runBuilds(key: string, uri: URI, entry: PendingRecoveryBuilds): Promise<void>;
124
+ /** Whether `request` still needs its build, and no deferral it heeds holds it back. Runs inside the lock read. */
125
+ protected isStillNeeded(uri: URI, request: RecoveryBuildRequest): boolean;
126
+ /**
127
+ * One build for every request of `batch`, removing the document when the
128
+ * latest of them asks to, as `HydraniumDocumentBuilder.scheduleUpdate`
129
+ * merges a change and a deletion. Runs inside the lock read.
130
+ */
131
+ protected scheduleBatch(uri: URI, batch: readonly RecoveryBuildRequest[]): Promise<void>;
132
+ protected isDeferred(uri: URI): boolean;
133
+ }
134
+ //# sourceMappingURL=version-sync-service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"version-sync-service.d.ts","sourceRoot":"","sources":["../../src/documents/version-sync-service.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF,OAAO,EAAiB,KAAK,eAAe,EAAE,KAAK,GAAG,EAAE,MAAM,oBAAoB,CAAC;AACnF,OAAO,EAAE,KAAK,MAAM,EAAsB,MAAM,qBAAqB,CAAC;AACtE,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,KAAK,KAAK,EAAE,MAAM,gCAAgC,CAAC;AACjF,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,kCAAkC,CAAC;AACvE,OAAO,EAAE,KAAK,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAIjE,yEAAyE;AACzE,MAAM,WAAW,oBAAoB;IAClC,kDAAkD;IAClD,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;IAC3B,mFAAmF;IACnF,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,oGAAoG;IACpG,QAAQ,CAAC,WAAW,EAAE,MAAM,OAAO,CAAC;IACpC,qGAAqG;IACrG,QAAQ,CAAC,cAAc,CAAC,EAAE,OAAO,CAAC;CACpC;AAED;;;;GAIG;AACH,MAAM,WAAW,kBAAkB;IAChC;;;;;;;;OAQG;IACH,aAAa,CAAC,QAAQ,EAAE,eAAe,EAAE,MAAM,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IAC7F;;;;;;;;;OASG;IACH,oBAAoB,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE,oBAAoB,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAChF;;;;OAIG;IACH,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,SAAS,CAAC;IACpE;;;;OAIG;IACH,UAAU,CAAC,GAAG,EAAE,GAAG,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC;IACnD;;;;;OAKG;IACH,sBAAsB,CAAC,UAAU,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,OAAO,GAAG,UAAU,CAAC;IACtE;;;;OAIG;IACH,QAAQ,CAAC,gBAAgB,EAAE,KAAK,CAAC,eAAe,CAAC,CAAC;CACpD;AAED,kGAAkG;AAClG,MAAM,WAAW,mBAAmB;IACjC,QAAQ,CAAC,OAAO,EAAE,oBAAoB,CAAC;IACvC,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;CAC5C;AAED,qFAAqF;AACrF,MAAM,WAAW,qBAAqB;IACnC,QAAQ,CAAC,MAAM,EAAE,mBAAmB,EAAE,CAAC;CACzC;AAED;;;GAGG;AACH,qBAAa,yBAA0B,YAAW,kBAAkB;IAS9D,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAE,oBAAoB;IARpD,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IAClC,SAAS,CAAC,QAAQ,CAAC,eAAe,iEAAkC;IACpE,SAAS,CAAC,QAAQ,CAAC,mBAAmB,YAAiB,GAAG,KAAK,OAAO,EAAI;IAC1E,SAAS,CAAC,QAAQ,CAAC,aAAa,qCAA4C;IAC5E,kFAAkF;IAClF,SAAS,CAAC,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAK;IAE/C,YACsB,QAAQ,EAAE,oBAAoB,EACjD,OAAO,GAAE,cAAmB,EAG9B;IAED,IAAI,gBAAgB,IAAI,KAAK,CAAC,eAAe,CAAC,CAE7C;IAED,aAAa,CAAC,QAAQ,EAAE,eAAe,EAAE,MAAM,GAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAO,GAAG,IAAI,CA4B/F;IAED,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,SAAS,CAGlE;IAED,oBAAoB,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE,oBAAoB,GAAG,OAAO,CAAC,OAAO,CAAC,CAc9E;IAED,sBAAsB,CAAC,UAAU,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,OAAO,GAAG,UAAU,CAGpE;IAED,UAAU,CAAC,GAAG,EAAE,GAAG,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAQjD;IAED,wHAAwH;IACxH,SAAS,CAAC,UAAU,CAAC,QAAQ,EAAE,eAAe,GAAG,MAAM,CAEtD;IAED;;;;;;;OAOG;IACH,UAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,qBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC,CAgD5F;IAED,kHAAkH;IAClH,SAAS,CAAC,aAAa,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE,oBAAoB,GAAG,OAAO,CAExE;IAED;;;;OAIG;IACH,SAAS,CAAC,aAAa,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,SAAS,oBAAoB,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAIvF;IAED,SAAS,CAAC,UAAU,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAEtC;CACH"}
@@ -0,0 +1,171 @@
1
+ /********************************************************************************
2
+ * Copyright (c) 2026 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 { DocumentState } from '@hydranium/langium';
10
+ import { UNRECORDED_VERSION } from '@hydranium/protocol';
11
+ import { Disposable, Emitter } from 'vscode-languageserver-protocol';
12
+ import { HydraniumWorkspaceLock } from '../langium/workspace/hydranium-workspace-lock.js';
13
+ import { HydraniumTextDocuments } from './hydranium-text-documents.js';
14
+ /**
15
+ * Collaborators are resolved per call: the registry and its document factory,
16
+ * which construct each other, report roots to this service.
17
+ */
18
+ export class DefaultVersionSyncService {
19
+ services;
20
+ tracer;
21
+ recordedEmitter = new Emitter();
22
+ deferredBuildChecks = new Set();
23
+ pendingBuilds = new Map();
24
+ /** Retries of each request after a failed build before it is answered `false`. */
25
+ maxBuildRetries = 1;
26
+ constructor(services, options = {}) {
27
+ this.services = services;
28
+ this.tracer = services.Tracer.for(options.logName ?? 'VersionSyncService').trace('instantiated');
29
+ }
30
+ get onDidRecordModel() {
31
+ return this.recordedEmitter.event;
32
+ }
33
+ modelProduced(document, origin = {}) {
34
+ const workspace = this.services.workspace;
35
+ const ledger = workspace.ModelLedger;
36
+ const root = document.parseResult.value;
37
+ if (document.state < DocumentState.Parsed) {
38
+ ledger.markPlaceholder(root);
39
+ return;
40
+ }
41
+ if (origin.version !== undefined) {
42
+ ledger.record(root, origin.version, origin.text);
43
+ }
44
+ const store = workspace.TextDocuments;
45
+ // Unregistered, it is a probe or a load whose registration reports it again.
46
+ if (!(store instanceof HydraniumTextDocuments) || workspace.LangiumDocuments.getDocument(document.uri) !== document) {
47
+ return;
48
+ }
49
+ const uri = document.uri.toString();
50
+ // Against the parsed text: the text document may already hold a newer edit.
51
+ const version = store.reconcileExternalContent(uri, origin.text ?? this.parsedText(document));
52
+ if (version !== undefined) {
53
+ if (document.textDocument.version !== version) {
54
+ // An empty-changes update only re-stamps the version.
55
+ store.update(document.textDocument, [], version);
56
+ }
57
+ ledger.record(root, version, origin.text);
58
+ }
59
+ void this.syncTo(document.uri, store.version(uri));
60
+ this.recordedEmitter.fire(document);
61
+ }
62
+ syncTo(uri, textVersion) {
63
+ const behind = () => !this.isSyncedTo(uri, textVersion);
64
+ return behind() ? this.requestRecoveryBuild(uri, { stillNeeded: behind }) : undefined;
65
+ }
66
+ requestRecoveryBuild(uri, request) {
67
+ return new Promise(answer => {
68
+ const key = uri.toString();
69
+ const queued = { request, failures: 0, answer };
70
+ const pending = this.pendingBuilds.get(key);
71
+ if (pending) {
72
+ // Not dropped: the pending build may have read the text before this request's change.
73
+ pending.queued.push(queued);
74
+ return;
75
+ }
76
+ const entry = { queued: [queued] };
77
+ this.pendingBuilds.set(key, entry);
78
+ void this.runBuilds(key, uri, entry);
79
+ });
80
+ }
81
+ registerDeferredBuilds(isDeferred) {
82
+ this.deferredBuildChecks.add(isDeferred);
83
+ return Disposable.create(() => this.deferredBuildChecks.delete(isDeferred));
84
+ }
85
+ isSyncedTo(uri, textVersion) {
86
+ const root = this.services.workspace.LangiumDocuments.getDocument(uri)?.parseResult.value;
87
+ if (root === undefined) {
88
+ return true;
89
+ }
90
+ const ledger = this.services.workspace.ModelLedger;
91
+ const recorded = ledger.versionOf(root);
92
+ return recorded === UNRECORDED_VERSION || ledger.isPlaceholder(root) || recorded >= textVersion;
93
+ }
94
+ /** The text `document`'s root was parsed from, or for a root built without either record or CST, the document's own. */
95
+ parsedText(document) {
96
+ return this.services.workspace.ModelLedger.textOf(document.parseResult.value) ?? document.textDocument.getText();
97
+ }
98
+ /**
99
+ * Run `entry`'s requests, one build per batch, until none is queued, and
100
+ * answer each. A request a failed build carried is queued again
101
+ * {@link maxBuildRetries} times, then answered `false`; one a cancelled
102
+ * build carried is queued again without counting. The entry is dropped
103
+ * in the same tick as the last check of the queue, so no request lands in
104
+ * an entry nothing runs any more.
105
+ */
106
+ async runBuilds(key, uri, entry) {
107
+ const tracer = this.tracer.withUri(key);
108
+ const lock = this.services.workspace.WorkspaceLock;
109
+ // Any other lock resolves a cancelled write as if it had completed, unnoticed.
110
+ const counting = lock instanceof HydraniumWorkspaceLock ? lock : undefined;
111
+ while (entry.queued.length > 0) {
112
+ let carried = [];
113
+ let build;
114
+ let cancellations;
115
+ try {
116
+ // The read waits until no write runs or is queued. It must not await
117
+ // the build, a write that queues behind it.
118
+ await lock.read(() => {
119
+ carried = entry.queued.splice(0);
120
+ const needed = carried.filter(queued => this.isStillNeeded(uri, queued.request));
121
+ carried.filter(queued => !needed.includes(queued)).forEach(queued => queued.answer(true));
122
+ carried = needed;
123
+ if (needed.length > 0) {
124
+ build = this.scheduleBatch(uri, needed.map(queued => queued.request));
125
+ // Read after the build is queued, which cancels the write before it.
126
+ cancellations = counting?.writeCancellations;
127
+ }
128
+ });
129
+ await build;
130
+ // A write cancelled the build, before it ran or while it did.
131
+ if (cancellations !== undefined && counting?.writeCancellations !== cancellations) {
132
+ entry.queued.unshift(...carried);
133
+ continue;
134
+ }
135
+ carried.forEach(queued => queued.answer(true));
136
+ }
137
+ catch (err) {
138
+ const detail = err instanceof Error ? (err.stack ?? err.message) : String(err);
139
+ const retried = carried.filter(queued => queued.failures++ < this.maxBuildRetries);
140
+ const givenUp = carried.filter(queued => !retried.includes(queued));
141
+ if (retried.length > 0) {
142
+ tracer.warn(`Requested build failed; retrying. ${detail}`);
143
+ entry.queued.unshift(...retried);
144
+ }
145
+ if (givenUp.length > 0) {
146
+ tracer.error(`Requested build failed again; giving up. ${detail}`);
147
+ givenUp.forEach(queued => queued.answer(false));
148
+ }
149
+ }
150
+ }
151
+ this.pendingBuilds.delete(key);
152
+ }
153
+ /** Whether `request` still needs its build, and no deferral it heeds holds it back. Runs inside the lock read. */
154
+ isStillNeeded(uri, request) {
155
+ return request.stillNeeded() && (request.ignoreDeferred === true || !this.isDeferred(uri));
156
+ }
157
+ /**
158
+ * One build for every request of `batch`, removing the document when the
159
+ * latest of them asks to, as `HydraniumDocumentBuilder.scheduleUpdate`
160
+ * merges a change and a deletion. Runs inside the lock read.
161
+ */
162
+ scheduleBatch(uri, batch) {
163
+ const deleted = batch.at(-1)?.deleted === true;
164
+ const reason = batch.find(request => request.reason !== undefined)?.reason;
165
+ return this.services.workspace.DocumentBuilder.scheduleUpdate(deleted ? [] : [uri], deleted ? [uri] : [], reason);
166
+ }
167
+ isDeferred(uri) {
168
+ return [...this.deferredBuildChecks].some(isDeferred => isDeferred(uri));
169
+ }
170
+ }
171
+ //# sourceMappingURL=version-sync-service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"version-sync-service.js","sourceRoot":"","sources":["../../src/documents/version-sync-service.ts"],"names":[],"mappings":"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"}
package/lib/index.d.ts CHANGED
@@ -26,6 +26,7 @@ export * from './langium/project/index.js';
26
26
  export * from './langium/residency/index.js';
27
27
  export * from './langium/scope/index.js';
28
28
  export * from './langium/serialization/index.js';
29
+ export * from './langium/trivia/index.js';
29
30
  export * from './langium/transfer/index.js';
30
31
  export * from './langium/update-rewrite/index.js';
31
32
  export * from './langium/validation/index.js';
@@ -33,6 +34,8 @@ export * from './langium/workspace/index.js';
33
34
  export * from './langium/service-registry.js';
34
35
  export * from './langium/language-types.js';
35
36
  export * from './launcher/index.js';
37
+ export * from './locale/index.js';
38
+ export * from './messages/renderer.js';
36
39
  export * from './documents/index.js';
37
40
  export * from './util/index.js';
38
41
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAGlF,cAAc,kCAAkC,CAAC;AACjD,cAAc,qCAAqC,CAAC;AACpD,cAAc,wBAAwB,CAAC;AACvC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,mCAAmC,CAAC;AAClD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,qCAAqC,CAAC;AACpD,cAAc,8BAA8B,CAAC;AAC7C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,kCAAkC,CAAC;AACjD,cAAc,qBAAqB,CAAC;AACpC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,yBAAyB,CAAC;AACxC,cAAc,kCAAkC,CAAC;AACjD,cAAc,6BAA6B,CAAC;AAC5C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,0BAA0B,CAAC;AACzC,cAAc,kCAAkC,CAAC;AACjD,cAAc,6BAA6B,CAAC;AAC5C,cAAc,mCAAmC,CAAC;AAClD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC;AACrC,cAAc,iBAAiB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAGlF,cAAc,kCAAkC,CAAC;AACjD,cAAc,qCAAqC,CAAC;AACpD,cAAc,wBAAwB,CAAC;AACvC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,mCAAmC,CAAC;AAClD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,qCAAqC,CAAC;AACpD,cAAc,8BAA8B,CAAC;AAC7C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,kCAAkC,CAAC;AACjD,cAAc,qBAAqB,CAAC;AACpC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,yBAAyB,CAAC;AACxC,cAAc,kCAAkC,CAAC;AACjD,cAAc,6BAA6B,CAAC;AAC5C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,0BAA0B,CAAC;AACzC,cAAc,kCAAkC,CAAC;AACjD,cAAc,2BAA2B,CAAC;AAC1C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,mCAAmC,CAAC;AAClD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,qBAAqB,CAAC;AACpC,cAAc,mBAAmB,CAAC;AAIlC,cAAc,wBAAwB,CAAC;AACvC,cAAc,sBAAsB,CAAC;AACrC,cAAc,iBAAiB,CAAC"}
package/lib/index.js CHANGED
@@ -27,6 +27,7 @@ export * from './langium/project/index.js';
27
27
  export * from './langium/residency/index.js';
28
28
  export * from './langium/scope/index.js';
29
29
  export * from './langium/serialization/index.js';
30
+ export * from './langium/trivia/index.js';
30
31
  export * from './langium/transfer/index.js';
31
32
  export * from './langium/update-rewrite/index.js';
32
33
  export * from './langium/validation/index.js';
@@ -34,6 +35,11 @@ export * from './langium/workspace/index.js';
34
35
  export * from './langium/service-registry.js';
35
36
  export * from './langium/language-types.js';
36
37
  export * from './launcher/index.js';
38
+ export * from './locale/index.js';
39
+ // The renderer only. The `./messages` subpath additionally enumerates this
40
+ // package's own declarations, which the root barrel already re-exports through
41
+ // the modules that raise them.
42
+ export * from './messages/renderer.js';
37
43
  export * from './documents/index.js';
38
44
  export * from './util/index.js';
39
45
  //# sourceMappingURL=index.js.map
package/lib/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF,0DAA0D;AAC1D,cAAc,kCAAkC,CAAC;AACjD,cAAc,qCAAqC,CAAC;AACpD,cAAc,wBAAwB,CAAC;AACvC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,mCAAmC,CAAC;AAClD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,qCAAqC,CAAC;AACpD,cAAc,8BAA8B,CAAC;AAC7C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,kCAAkC,CAAC;AACjD,cAAc,qBAAqB,CAAC;AACpC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,yBAAyB,CAAC;AACxC,cAAc,kCAAkC,CAAC;AACjD,cAAc,6BAA6B,CAAC;AAC5C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,0BAA0B,CAAC;AACzC,cAAc,kCAAkC,CAAC;AACjD,cAAc,6BAA6B,CAAC;AAC5C,cAAc,mCAAmC,CAAC;AAClD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC;AACrC,cAAc,iBAAiB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF,0DAA0D;AAC1D,cAAc,kCAAkC,CAAC;AACjD,cAAc,qCAAqC,CAAC;AACpD,cAAc,wBAAwB,CAAC;AACvC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,mCAAmC,CAAC;AAClD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,qCAAqC,CAAC;AACpD,cAAc,8BAA8B,CAAC;AAC7C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,kCAAkC,CAAC;AACjD,cAAc,qBAAqB,CAAC;AACpC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,yBAAyB,CAAC;AACxC,cAAc,kCAAkC,CAAC;AACjD,cAAc,6BAA6B,CAAC;AAC5C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,0BAA0B,CAAC;AACzC,cAAc,kCAAkC,CAAC;AACjD,cAAc,2BAA2B,CAAC;AAC1C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,mCAAmC,CAAC;AAClD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,qBAAqB,CAAC;AACpC,cAAc,mBAAmB,CAAC;AAClC,2EAA2E;AAC3E,+EAA+E;AAC/E,+BAA+B;AAC/B,cAAc,wBAAwB,CAAC;AACvC,cAAc,sBAAsB,CAAC;AACrC,cAAc,iBAAiB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"ast-extension-service.d.ts","sourceRoot":"","sources":["../../../src/langium/ast-extension/ast-extension-service.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF,OAAO,EAAU,KAAK,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,qBAAqB,CAAC;AACxE,OAAO,EAAE,KAAK,OAAO,EAAY,aAAa,EAAE,KAAK,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACjG,OAAO,KAAK,EAAE,iBAAiB,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAC3E,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,KAAK,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AACpE,OAAO,EAAE,QAAQ,EAAE,KAAK,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACrE,OAAO,EAAE,KAAK,oBAAoB,EAAE,MAAM,iCAAiC,CAAC;AAE5E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AACH,MAAM,WAAW,YAAY,CAAC,CAAC,SAAS,OAAO,GAAG,OAAO,CAAE,SAAQ,YAAY;IAC5E,yFAAyF;IACzF,UAAU,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,IAAI,CAAC,CAAC;IACzC;;;;;;;;;OASG;IACH,cAAc,CAAC,EAAE,CAAC,QAAQ,EAAE,eAAe,KAAK,OAAO,CAAC;IACxD;;;;;;;;;;;;;;OAcG;IACH,KAAK,EAAE,aAAa,CAAC;IACrB;;;;;;;;;;;OAWG;IACH,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,eAAe,GAAG,IAAI,CAAC;CAC7D;AAED;;;;;;;;;;;GAWG;AACH,MAAM,WAAW,mBAAoB,SAAQ,oBAAoB;IAC9D;;;;;OAKG;IACH,UAAU,CAAC,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,eAAe,EAAE,KAAK,EAAE,aAAa,GAAG,IAAI,CAAC;IACjF;;;;;OAKG;IACH,cAAc,CAAC,QAAQ,EAAE,eAAe,EAAE,KAAK,EAAE,aAAa,EAAE,WAAW,CAAC,EAAE,iBAAiB,GAAG,IAAI,CAAC;CACzG;AAED,mEAAmE;AACnE,MAAM,MAAM,0BAA0B,GAAG,cAAc,CAAC;AAExD;;;;;;;;;;;;;;;;GAgBG;AACH,qBAAa,0BAA2B,YAAW,mBAAmB;IAahE,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAE,sBAAsB;IAZtD,SAAS,CAAC,QAAQ,CAAC,UAAU,kCAAgC;IAC7D;;;;OAIG;IACH,SAAS,CAAC,YAAY,uDAAqD;IAC3E,SAAS,CAAC,eAAe,EAAE,SAAS,YAAY,EAAE,GAAG,SAAS,CAAC;IAE/D,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;gBAGZ,QAAQ,EAAE,sBAAsB,EACnD,OAAO,GAAE,0BAA+B;IAc3C;;;;;;;;OAQG;IACH,QAAQ,CAAC,CAAC,SAAS,OAAO,EAAE,SAAS,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,UAAU;IAMnE;;;OAGG;IACH,UAAU,CAAC,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,eAAe,EAAE,KAAK,EAAE,aAAa,GAAG,IAAI;IAahF;;;;;;;;;;;;OAYG;IACH,cAAc,CAAC,QAAQ,EAAE,eAAe,EAAE,KAAK,EAAE,aAAa,EAAE,WAAW,CAAC,EAAE,iBAAiB,GAAG,IAAI;IAoCtG;;;;;;OAMG;IACH,SAAS,CAAC,cAAc,CAAC,KAAK,EAAE,aAAa,GAAG,SAAS,YAAY,EAAE;CAiBzE;AAKD;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,GAAG,IAAI,CAOnF"}
1
+ {"version":3,"file":"ast-extension-service.d.ts","sourceRoot":"","sources":["../../../src/langium/ast-extension/ast-extension-service.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"ast-extension-service.js","sourceRoot":"","sources":["../../../src/langium/ast-extension/ast-extension-service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ast-extension-service.js","sourceRoot":"","sources":["../../../src/langium/ast-extension/ast-extension-service.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF,OAAO,EAAE,MAAM,EAA6B,MAAM,qBAAqB,CAAC;AACxE,OAAO,EAAgB,QAAQ,EAAE,aAAa,EAAwB,MAAM,oBAAoB,CAAC;AAIjG,OAAO,EAAE,QAAQ,EAAqB,MAAM,wBAAwB,CAAC;AAuHrE;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,OAAO,0BAA0B;IAad,QAAQ;IAZX,UAAU,GAAG,IAAI,QAAQ,EAAgB,CAAC;IAC7D;;;;OAIG;IACO,YAAY,GAAG,IAAI,GAAG,EAA0C,CAAC;IACjE,eAAe,CAAsC;IAE5C,MAAM,CAAS;IAElC,YACsB,QAAgC,EACnD,OAAO,GAA+B,EAAE;wBADrB,QAAQ;QAG3B,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,IAAI,cAAc,CAAC,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;QAElG,kEAAkE;QAClE,qEAAqE;QACrE,gEAAgE;QAChE,oEAAoE;QACpE,MAAM,aAAa,GAAG,QAAQ,CAAC,GAAG,EAAE,UAAU,IAAI,EAAE,CAAC;QACrD,KAAK,MAAM,YAAY,IAAI,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE,CAAC;YACvD,YAAY,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC;QAC5C,CAAC;IACJ,CAAC;IAED;;;;;;;;OAQG;IACH,QAAQ,CAAoB,SAA0B;QACnD,0EAA0E;QAC1E,8EAA8E;QAC9E,OAAO,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,SAAyB,CAAC,CAAC;IAC9D,CAAC;IAED;;;OAGG;IACH,UAAU,CAAC,IAAa,EAAE,QAAyB,EAAE,KAAoB;QACtE,MAAM,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;QAC1C,KAAK,MAAM,SAAS,IAAI,MAAM,EAAE,CAAC;YAC9B,IAAI,SAAS,CAAC,cAAc,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,QAAQ,CAAC,EAAE,CAAC;gBACnE,SAAS;YACZ,CAAC;YACD,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC/B,SAAS;YACZ,CAAC;YACD,SAAS,CAAC,OAAO,CAAC,IAAwB,EAAE,QAAQ,CAAC,CAAC;QACzD,CAAC;IACJ,CAAC;IAED;;;;;;;;;;;;OAYG;IACH,cAAc,CAAC,QAAyB,EAAE,KAAoB,EAAE,WAA+B;QAC5F,IAAI,WAAW,EAAE,uBAAuB,EAAE,CAAC;YACxC,OAAO;QACV,CAAC;QACD,MAAM,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;QAC1C,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACvB,OAAO;QACV,CAAC;QACD,4EAA4E;QAC5E,+EAA+E;QAC/E,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,cAAc,IAAI,SAAS,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,CAAC;QAC/G,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC3B,OAAO;QACV,CAAC;QACD,2EAA2E;QAC3E,0EAA0E;QAC1E,uEAAuE;QACvE,+DAA+D;QAC/D,MAAM,OAAO,GAAG,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,iBAAiB,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAC1H,KAAK,MAAM,IAAI,IAAI,QAAQ,CAAC,iBAAiB,CAAC,QAAQ,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE,CAAC;YACzE,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;gBAClC,IAAI,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;oBAC9B,mEAAmE;oBACnE,qEAAqE;oBACrE,IAAI,OAAO,EAAE,CAAC;wBACX,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,OAAO,CAAC,IAAwB,EAAE,QAAQ,CAAC,CAAC,CAAC;oBAC5F,CAAC;yBAAM,CAAC;wBACL,SAAS,CAAC,OAAO,CAAC,IAAwB,EAAE,QAAQ,CAAC,CAAC;oBACzD,CAAC;gBACJ,CAAC;YACJ,CAAC;QACJ,CAAC;QACD,sFAAsF;QACtF,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;IAC5B,CAAC;IAED;;;;;;OAMG;IACO,cAAc,CAAC,KAAoB;QAC1C,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC;QACtC,IAAI,IAAI,CAAC,eAAe,KAAK,OAAO,EAAE,CAAC;YACpC,MAAM,IAAI,GAAG,IAAI,GAAG,EAAiC,CAAC;YACtD,KAAK,MAAM,SAAS,IAAI,OAAO,EAAE,CAAC;gBAC/B,IAAI,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;gBACvC,IAAI,CAAC,MAAM,EAAE,CAAC;oBACX,MAAM,GAAG,EAAE,CAAC;oBACZ,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;gBACrC,CAAC;gBACD,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAC1B,CAAC;YACD,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;YACzB,IAAI,CAAC,eAAe,GAAG,OAAO,CAAC;QAClC,CAAC;QACD,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,kBAAkB,CAAC;IAC7D,CAAC;CACH;AAED,0FAA0F;AAC1F,MAAM,kBAAkB,GAA4B,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;AAEtE;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,iBAAiB,CAAI,IAAY,EAAE,QAAgB,EAAE,KAAQ;IAC1E,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,QAAQ,EAAE;QACnC,KAAK;QACL,QAAQ,EAAE,IAAI;QACd,YAAY,EAAE,IAAI;QAClB,UAAU,EAAE,KAAK;KACnB,CAAC,CAAC;AACN,CAAC"}
@@ -68,15 +68,13 @@ export type AstNodeBuilder<TMap> = <TType extends string & keyof TMap>(typeConst
68
68
  * AST-interface mapping, so call sites get full inference from the type
69
69
  * constant alone — no explicit generic parameter at every call site.
70
70
  *
71
- * Runtime behaviour: reads `reflection.getTypeMetaData(type).properties` and,
72
- * for every property whose metadata carries a `defaultValue`, pre-fills the
73
- * result before merging the caller's `init`. Array defaults are materialised
74
- * as a fresh `[]` per call (never shared with the metadata's array instance,
75
- * which downstream callers mutate); scalar defaults (`false`, `0`, `''`, …)
76
- * are copied as-is since they're immutable. Grammar-generated containment
77
- * lists and `?=`-style boolean flags therefore default automatically;
78
- * TS-augmented fields (declared via `declare module './generated/ast.js'`)
79
- * are unaffected by the runtime defaulting but remain typed at call sites.
71
+ * Runtime behaviour: pre-fills every grammar-declared default (see
72
+ * {@link withTypeDefaults}) before merging the caller's `init`, so containment
73
+ * lists and `?=`-style boolean flags default automatically. TS-augmented fields
74
+ * (declared via `declare module './generated/ast.js'`) are unaffected by the
75
+ * runtime defaulting but remain typed at call sites.
76
+ *
77
+ * Use {@link buildAstNode} instead when the type name is only known at runtime.
80
78
  *
81
79
  * The init shape only relaxes array-typed fields to optional (via
82
80
  * {@link ArrayKeys}) — there is no equivalent structural signal for "this
@@ -86,5 +84,30 @@ export type AstNodeBuilder<TMap> = <TType extends string & keyof TMap>(typeConst
86
84
  * rather than a way to drop fields from the typed call site.
87
85
  */
88
86
  export declare function makeAstNodeBuilder<TMap>(reflection: AstReflection): AstNodeBuilder<TMap>;
87
+ /**
88
+ * Build a node whose type is only known as a RUNTIME string.
89
+ *
90
+ * The typed {@link makeAstNodeBuilder} cannot express this: its `TMap` generic
91
+ * resolves the AST interface from a `$type` literal, and a type name that
92
+ * arrives over the wire — a protocol-layer reference request naming a node that
93
+ * does not exist yet — has no literal to resolve from. Callers that DO know the
94
+ * type at compile time want the typed builder, which checks their mandatory
95
+ * fields; this one checks nothing beyond the reflection lookup.
96
+ *
97
+ * Applies the same reflection-driven defaulting, so a node built here carries
98
+ * grammar-declared containment arrays rather than leaving them `undefined`. An
99
+ * unknown type name yields a node with `$type` and whatever `init` supplied,
100
+ * because reflection answers no metadata for it and refusing would turn a
101
+ * permissive lookup into a throw at a call site that can only guess.
102
+ *
103
+ * **The `type` argument is authoritative: `init` cannot rebind `$type`.** The
104
+ * typed builder gets this for free — `AstNodeInit` omits `$type`, so a call site
105
+ * cannot reach it — but here `init` is loosely typed, and the case that needs
106
+ * the guarantee is RETYPING: a caller spreading an existing node to produce one
107
+ * of a different type (`{ ...source }`) carries the SOURCE's `$type` in, which
108
+ * would silently win over the type actually requested and hand back a node of
109
+ * the wrong type with no error anywhere.
110
+ */
111
+ export declare function buildAstNode<TAst extends AstNode = AstNode>(reflection: AstReflection, type: string, init?: Partial<AstNode> & Record<string, unknown>): TAst;
89
112
  export {};
90
113
  //# sourceMappingURL=ast-node-builder.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ast-node-builder.d.ts","sourceRoot":"","sources":["../../../src/langium/ast-extension/ast-node-builder.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF,OAAO,KAAK,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAEjE;;;;;;;GAOG;AACH,MAAM,WAAW,eAAe,CAAC,KAAK,SAAS,MAAM,GAAG,MAAM;IAC3D,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC;CACxB;AAED;;;;;GAKG;AACH,KAAK,SAAS,CAAC,CAAC,IAAI;KAAG,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,aAAa,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK;CAAE,CAAC,MAAM,CAAC,CAAC,CAAC;AAEnG;;;;;;;;GAQG;AACH,MAAM,MAAM,WAAW,CAAC,CAAC,SAAS,OAAO,IAAI,IAAI,CAAC,CAAC,EAAE,MAAM,OAAO,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,GAC/E,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,GAC9B,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,YAAY,GAAG,oBAAoB,GAAG,iBAAiB,CAAC,CAAC,GAAG;IAC/E,UAAU,CAAC,EAAE,OAAO,CAAC;CACvB,CAAC;AAEL;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,MAAM,cAAc,CAAC,IAAI,IAAI,CAAC,KAAK,SAAS,MAAM,GAAG,MAAM,IAAI,EAClE,YAAY,EAAE,eAAe,CAAC,KAAK,CAAC,EACpC,IAAI,EAAE,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC,CAAC,EAChD,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAC9B,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC,CAAC;AAEnC;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,UAAU,EAAE,aAAa,GAAG,cAAc,CAAC,IAAI,CAAC,CA2BxF"}
1
+ {"version":3,"file":"ast-node-builder.d.ts","sourceRoot":"","sources":["../../../src/langium/ast-extension/ast-node-builder.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF,OAAO,KAAK,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAEjE;;;;;;;GAOG;AACH,MAAM,WAAW,eAAe,CAAC,KAAK,SAAS,MAAM,GAAG,MAAM;IAC3D,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC;CACxB;AAED;;;;;GAKG;AACH,KAAK,SAAS,CAAC,CAAC,IAAI;KAAG,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,aAAa,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK;CAAE,CAAC,MAAM,CAAC,CAAC,CAAC;AAEnG;;;;;;;;GAQG;AACH,MAAM,MAAM,WAAW,CAAC,CAAC,SAAS,OAAO,IAAI,IAAI,CAAC,CAAC,EAAE,MAAM,OAAO,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,GAC/E,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,GAC9B,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,YAAY,GAAG,oBAAoB,GAAG,iBAAiB,CAAC,CAAC,GAAG;IAC/E,UAAU,CAAC,EAAE,OAAO,CAAC;CACvB,CAAC;AAEL;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,MAAM,cAAc,CAAC,IAAI,IAAI,CAAC,KAAK,SAAS,MAAM,GAAG,MAAM,IAAI,EAClE,YAAY,EAAE,eAAe,CAAC,KAAK,CAAC,EACpC,IAAI,EAAE,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC,CAAC,EAChD,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAC9B,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC,CAAC;AAEnC;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,UAAU,EAAE,aAAa,GAAG,cAAc,CAAC,IAAI,CAAC,CAexF;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,YAAY,CAAC,IAAI,SAAS,OAAO,GAAG,OAAO,EACxD,UAAU,EAAE,aAAa,EACzB,IAAI,EAAE,MAAM,EACZ,IAAI,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GACjD,IAAI,CAON"}