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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (782) hide show
  1. package/README.md +78 -82
  2. package/lib/browser/host-heads-in-worker.d.ts +77 -0
  3. package/lib/browser/host-heads-in-worker.d.ts.map +1 -0
  4. package/lib/browser/host-heads-in-worker.js +169 -0
  5. package/lib/browser/host-heads-in-worker.js.map +1 -0
  6. package/lib/browser/index.d.ts +12 -0
  7. package/lib/browser/index.d.ts.map +1 -0
  8. package/lib/browser/index.js +17 -0
  9. package/lib/browser/index.js.map +1 -0
  10. package/lib/browser/indexeddb-file-system-store.d.ts +82 -0
  11. package/lib/browser/indexeddb-file-system-store.d.ts.map +1 -0
  12. package/lib/browser/indexeddb-file-system-store.js +181 -0
  13. package/lib/browser/indexeddb-file-system-store.js.map +1 -0
  14. package/lib/browser/start-language-server-in-worker.d.ts +32 -0
  15. package/lib/browser/start-language-server-in-worker.d.ts.map +1 -0
  16. package/lib/browser/start-language-server-in-worker.js +40 -0
  17. package/lib/browser/start-language-server-in-worker.js.map +1 -0
  18. package/lib/documents/ast-document-manager.d.ts +256 -124
  19. package/lib/documents/ast-document-manager.d.ts.map +1 -1
  20. package/lib/documents/ast-document-manager.js +293 -132
  21. package/lib/documents/ast-document-manager.js.map +1 -1
  22. package/lib/documents/client-ids.d.ts +5 -19
  23. package/lib/documents/client-ids.d.ts.map +1 -1
  24. package/lib/documents/client-ids.js +5 -19
  25. package/lib/documents/client-ids.js.map +1 -1
  26. package/lib/documents/client-session-errors.d.ts +15 -0
  27. package/lib/documents/client-session-errors.d.ts.map +1 -0
  28. package/lib/documents/client-session-errors.js +15 -0
  29. package/lib/documents/client-session-errors.js.map +1 -0
  30. package/lib/documents/client-session-registry.d.ts +146 -0
  31. package/lib/documents/client-session-registry.d.ts.map +1 -0
  32. package/lib/documents/client-session-registry.js +207 -0
  33. package/lib/documents/client-session-registry.js.map +1 -0
  34. package/lib/documents/dirty-state-tracker.d.ts +101 -0
  35. package/lib/documents/dirty-state-tracker.d.ts.map +1 -0
  36. package/lib/documents/dirty-state-tracker.js +85 -0
  37. package/lib/documents/dirty-state-tracker.js.map +1 -0
  38. package/lib/documents/document-release-handler.d.ts +204 -0
  39. package/lib/documents/document-release-handler.d.ts.map +1 -0
  40. package/lib/documents/document-release-handler.js +317 -0
  41. package/lib/documents/document-release-handler.js.map +1 -0
  42. package/lib/documents/document-release-scheduler.d.ts +67 -0
  43. package/lib/documents/document-release-scheduler.d.ts.map +1 -0
  44. package/lib/documents/document-release-scheduler.js +80 -0
  45. package/lib/documents/document-release-scheduler.js.map +1 -0
  46. package/lib/documents/file-system-task-queue.d.ts +52 -0
  47. package/lib/documents/file-system-task-queue.d.ts.map +1 -0
  48. package/lib/documents/file-system-task-queue.js +37 -0
  49. package/lib/documents/file-system-task-queue.js.map +1 -0
  50. package/lib/documents/hydranium-text-documents.d.ts +436 -282
  51. package/lib/documents/hydranium-text-documents.d.ts.map +1 -1
  52. package/lib/documents/hydranium-text-documents.js +886 -483
  53. package/lib/documents/hydranium-text-documents.js.map +1 -1
  54. package/lib/documents/index.d.ts +10 -2
  55. package/lib/documents/index.d.ts.map +1 -1
  56. package/lib/documents/index.js +10 -2
  57. package/lib/documents/index.js.map +1 -1
  58. package/lib/documents/language-client-shadow.d.ts +234 -0
  59. package/lib/documents/language-client-shadow.d.ts.map +1 -0
  60. package/lib/documents/language-client-shadow.js +306 -0
  61. package/lib/documents/language-client-shadow.js.map +1 -0
  62. package/lib/documents/model-ledger.d.ts +47 -0
  63. package/lib/documents/model-ledger.d.ts.map +1 -0
  64. package/lib/documents/model-ledger.js +30 -0
  65. package/lib/documents/model-ledger.js.map +1 -0
  66. package/lib/documents/text-ledger.d.ts +64 -0
  67. package/lib/documents/text-ledger.d.ts.map +1 -0
  68. package/lib/documents/text-ledger.js +63 -0
  69. package/lib/documents/text-ledger.js.map +1 -0
  70. package/lib/documents/version-sync-service.d.ts +138 -0
  71. package/lib/documents/version-sync-service.d.ts.map +1 -0
  72. package/lib/documents/version-sync-service.js +173 -0
  73. package/lib/documents/version-sync-service.js.map +1 -0
  74. package/lib/index.d.ts +4 -0
  75. package/lib/index.d.ts.map +1 -1
  76. package/lib/index.js +7 -0
  77. package/lib/index.js.map +1 -1
  78. package/lib/langium/ast-extension/ast-extension-service.d.ts +42 -31
  79. package/lib/langium/ast-extension/ast-extension-service.d.ts.map +1 -1
  80. package/lib/langium/ast-extension/ast-extension-service.js +45 -19
  81. package/lib/langium/ast-extension/ast-extension-service.js.map +1 -1
  82. package/lib/langium/ast-extension/ast-node-builder.d.ts +12 -7
  83. package/lib/langium/ast-extension/ast-node-builder.d.ts.map +1 -1
  84. package/lib/langium/ast-extension/ast-node-builder.js +25 -9
  85. package/lib/langium/ast-extension/ast-node-builder.js.map +1 -1
  86. package/lib/langium/bootstrap.d.ts +49 -36
  87. package/lib/langium/bootstrap.d.ts.map +1 -1
  88. package/lib/langium/bootstrap.js +83 -44
  89. package/lib/langium/bootstrap.js.map +1 -1
  90. package/lib/langium/build-phase-pass/build-phase-pass-service.d.ts +9 -9
  91. package/lib/langium/build-phase-pass/build-phase-pass-service.d.ts.map +1 -1
  92. package/lib/langium/build-phase-pass/build-phase-pass-service.js +25 -16
  93. package/lib/langium/build-phase-pass/build-phase-pass-service.js.map +1 -1
  94. package/lib/langium/build-phase-pass/build-phase-pass.d.ts +20 -8
  95. package/lib/langium/build-phase-pass/build-phase-pass.d.ts.map +1 -1
  96. package/lib/langium/build-phase-pass/build-phase-pass.js +20 -0
  97. package/lib/langium/build-phase-pass/build-phase-pass.js.map +1 -1
  98. package/lib/langium/composite-ast-reflection.d.ts +46 -0
  99. package/lib/langium/composite-ast-reflection.d.ts.map +1 -0
  100. package/lib/langium/composite-ast-reflection.js +97 -0
  101. package/lib/langium/composite-ast-reflection.js.map +1 -0
  102. package/lib/langium/config/configuration-provider.d.ts +81 -0
  103. package/lib/langium/config/configuration-provider.d.ts.map +1 -0
  104. package/lib/langium/config/configuration-provider.js +112 -0
  105. package/lib/langium/config/configuration-provider.js.map +1 -0
  106. package/lib/langium/config/index.d.ts +1 -0
  107. package/lib/langium/config/index.d.ts.map +1 -1
  108. package/lib/langium/config/index.js +1 -0
  109. package/lib/langium/config/index.js.map +1 -1
  110. package/lib/langium/config/settings.js.map +1 -1
  111. package/lib/langium/diagnostics/console-tee.d.ts +27 -0
  112. package/lib/langium/diagnostics/console-tee.d.ts.map +1 -0
  113. package/lib/langium/diagnostics/console-tee.js +142 -0
  114. package/lib/langium/diagnostics/console-tee.js.map +1 -0
  115. package/lib/langium/diagnostics/format-log-arg.d.ts +18 -0
  116. package/lib/langium/diagnostics/format-log-arg.d.ts.map +1 -0
  117. package/lib/langium/diagnostics/format-log-arg.js +36 -0
  118. package/lib/langium/diagnostics/format-log-arg.js.map +1 -0
  119. package/lib/langium/diagnostics/hydranium-langium-profiler.d.ts +9 -20
  120. package/lib/langium/diagnostics/hydranium-langium-profiler.d.ts.map +1 -1
  121. package/lib/langium/diagnostics/hydranium-langium-profiler.js +15 -24
  122. package/lib/langium/diagnostics/hydranium-langium-profiler.js.map +1 -1
  123. package/lib/langium/diagnostics/log-preamble.js +1 -1
  124. package/lib/langium/diagnostics/log-preamble.js.map +1 -1
  125. package/lib/langium/diagnostics/logger.d.ts +25 -6
  126. package/lib/langium/diagnostics/logger.d.ts.map +1 -1
  127. package/lib/langium/diagnostics/logger.js +49 -17
  128. package/lib/langium/diagnostics/logger.js.map +1 -1
  129. package/lib/langium/diagnostics/lsp-logger.d.ts +17 -0
  130. package/lib/langium/diagnostics/lsp-logger.d.ts.map +1 -1
  131. package/lib/langium/diagnostics/lsp-logger.js +68 -45
  132. package/lib/langium/diagnostics/lsp-logger.js.map +1 -1
  133. package/lib/langium/diagnostics/server-tracer.d.ts.map +1 -1
  134. package/lib/langium/diagnostics/server-tracer.js.map +1 -1
  135. package/lib/langium/document-builder/build-pipeline-integration.d.ts +21 -1
  136. package/lib/langium/document-builder/build-pipeline-integration.d.ts.map +1 -1
  137. package/lib/langium/document-builder/build-pipeline-integration.js +28 -30
  138. package/lib/langium/document-builder/build-pipeline-integration.js.map +1 -1
  139. package/lib/langium/document-builder/build-session.d.ts +6 -5
  140. package/lib/langium/document-builder/build-session.d.ts.map +1 -1
  141. package/lib/langium/document-builder/build-session.js +5 -5
  142. package/lib/langium/document-builder/build-session.js.map +1 -1
  143. package/lib/langium/document-builder/document-builder.d.ts +283 -41
  144. package/lib/langium/document-builder/document-builder.d.ts.map +1 -1
  145. package/lib/langium/document-builder/document-builder.js +448 -78
  146. package/lib/langium/document-builder/document-builder.js.map +1 -1
  147. package/lib/langium/documentation/comment-provider.d.ts.map +1 -1
  148. package/lib/langium/documentation/comment-provider.js.map +1 -1
  149. package/lib/langium/integration-services.d.ts +40 -24
  150. package/lib/langium/integration-services.d.ts.map +1 -1
  151. package/lib/langium/integration-services.js +7 -4
  152. package/lib/langium/integration-services.js.map +1 -1
  153. package/lib/langium/integrity/integrity-rule.d.ts +17 -8
  154. package/lib/langium/integrity/integrity-rule.d.ts.map +1 -1
  155. package/lib/langium/integrity/integrity-rule.js.map +1 -1
  156. package/lib/langium/integrity/integrity-service.d.ts +95 -27
  157. package/lib/langium/integrity/integrity-service.d.ts.map +1 -1
  158. package/lib/langium/integrity/integrity-service.js +303 -63
  159. package/lib/langium/integrity/integrity-service.js.map +1 -1
  160. package/lib/langium/keys/containment.d.ts +64 -0
  161. package/lib/langium/keys/containment.d.ts.map +1 -0
  162. package/lib/langium/keys/containment.js +53 -0
  163. package/lib/langium/keys/containment.js.map +1 -0
  164. package/lib/langium/keys/index.d.ts +1 -0
  165. package/lib/langium/keys/index.d.ts.map +1 -1
  166. package/lib/langium/keys/index.js +1 -0
  167. package/lib/langium/keys/index.js.map +1 -1
  168. package/lib/langium/keys/name-based-key-provider.d.ts +4 -0
  169. package/lib/langium/keys/name-based-key-provider.d.ts.map +1 -1
  170. package/lib/langium/keys/name-based-key-provider.js +4 -0
  171. package/lib/langium/keys/name-based-key-provider.js.map +1 -1
  172. package/lib/langium/keys/positional-key-provider.d.ts.map +1 -1
  173. package/lib/langium/keys/positional-key-provider.js.map +1 -1
  174. package/lib/langium/labeling/label-provider.d.ts.map +1 -1
  175. package/lib/langium/labeling/label-provider.js.map +1 -1
  176. package/lib/langium/language-module.d.ts +30 -5
  177. package/lib/langium/language-module.d.ts.map +1 -1
  178. package/lib/langium/language-module.js +18 -4
  179. package/lib/langium/language-module.js.map +1 -1
  180. package/lib/langium/model-service/client-session.d.ts +383 -0
  181. package/lib/langium/model-service/client-session.d.ts.map +1 -0
  182. package/lib/langium/model-service/client-session.js +455 -0
  183. package/lib/langium/model-service/client-session.js.map +1 -0
  184. package/lib/langium/model-service/index.d.ts +2 -0
  185. package/lib/langium/model-service/index.d.ts.map +1 -1
  186. package/lib/langium/model-service/index.js +2 -0
  187. package/lib/langium/model-service/index.js.map +1 -1
  188. package/lib/langium/model-service/model-events.d.ts +66 -0
  189. package/lib/langium/model-service/model-events.d.ts.map +1 -0
  190. package/lib/langium/model-service/model-events.js +10 -0
  191. package/lib/langium/model-service/model-events.js.map +1 -0
  192. package/lib/langium/model-service/model-service.d.ts +455 -290
  193. package/lib/langium/model-service/model-service.d.ts.map +1 -1
  194. package/lib/langium/model-service/model-service.js +571 -458
  195. package/lib/langium/model-service/model-service.js.map +1 -1
  196. package/lib/langium/module.d.ts +141 -40
  197. package/lib/langium/module.d.ts.map +1 -1
  198. package/lib/langium/module.js +52 -40
  199. package/lib/langium/module.js.map +1 -1
  200. package/lib/langium/naming/name-provider.d.ts +32 -7
  201. package/lib/langium/naming/name-provider.d.ts.map +1 -1
  202. package/lib/langium/naming/name-provider.js +10 -4
  203. package/lib/langium/naming/name-provider.js.map +1 -1
  204. package/lib/langium/naming/name-separator-validation.d.ts.map +1 -1
  205. package/lib/langium/project/abstract-project-manager.d.ts.map +1 -1
  206. package/lib/langium/project/abstract-project-manager.js +13 -6
  207. package/lib/langium/project/abstract-project-manager.js.map +1 -1
  208. package/lib/langium/project/project-change-event.d.ts +2 -2
  209. package/lib/langium/project/single-project-manager.d.ts.map +1 -1
  210. package/lib/langium/project/single-project-manager.js.map +1 -1
  211. package/lib/langium/residency/cst-residency-service.d.ts +38 -14
  212. package/lib/langium/residency/cst-residency-service.d.ts.map +1 -1
  213. package/lib/langium/residency/cst-residency-service.js +24 -58
  214. package/lib/langium/residency/cst-residency-service.js.map +1 -1
  215. package/lib/langium/scope/ast-node-description-provider.d.ts.map +1 -1
  216. package/lib/langium/scope/ast-node-description-provider.js.map +1 -1
  217. package/lib/langium/scope/fallback-scope.d.ts +27 -0
  218. package/lib/langium/scope/fallback-scope.d.ts.map +1 -0
  219. package/lib/langium/scope/fallback-scope.js +35 -0
  220. package/lib/langium/scope/fallback-scope.js.map +1 -0
  221. package/lib/langium/scope/hydranium-scope-computation.d.ts +21 -18
  222. package/lib/langium/scope/hydranium-scope-computation.d.ts.map +1 -1
  223. package/lib/langium/scope/hydranium-scope-computation.js +38 -39
  224. package/lib/langium/scope/hydranium-scope-computation.js.map +1 -1
  225. package/lib/langium/scope/hydranium-scope-provider.d.ts +29 -11
  226. package/lib/langium/scope/hydranium-scope-provider.d.ts.map +1 -1
  227. package/lib/langium/scope/hydranium-scope-provider.js +37 -15
  228. package/lib/langium/scope/hydranium-scope-provider.js.map +1 -1
  229. package/lib/langium/scope/index.d.ts +1 -0
  230. package/lib/langium/scope/index.d.ts.map +1 -1
  231. package/lib/langium/scope/index.js +1 -0
  232. package/lib/langium/scope/index.js.map +1 -1
  233. package/lib/langium/scope/reference-builder.d.ts.map +1 -1
  234. package/lib/langium/scope/reference-builder.js.map +1 -1
  235. package/lib/langium/scope/reference-candidate-provider.d.ts +6 -5
  236. package/lib/langium/scope/reference-candidate-provider.d.ts.map +1 -1
  237. package/lib/langium/scope/reference-candidate-provider.js +3 -2
  238. package/lib/langium/scope/reference-candidate-provider.js.map +1 -1
  239. package/lib/langium/scope/scope-extension-service.d.ts +41 -37
  240. package/lib/langium/scope/scope-extension-service.d.ts.map +1 -1
  241. package/lib/langium/scope/scope-extension-service.js +57 -29
  242. package/lib/langium/scope/scope-extension-service.js.map +1 -1
  243. package/lib/langium/scope/scoped-ast-node-description.d.ts +1 -3
  244. package/lib/langium/scope/scoped-ast-node-description.d.ts.map +1 -1
  245. package/lib/langium/scope/scoped-ast-node-description.js +1 -3
  246. package/lib/langium/scope/scoped-ast-node-description.js.map +1 -1
  247. package/lib/langium/serialization/abstract-serializer.d.ts +38 -27
  248. package/lib/langium/serialization/abstract-serializer.d.ts.map +1 -1
  249. package/lib/langium/serialization/abstract-serializer.js +54 -30
  250. package/lib/langium/serialization/abstract-serializer.js.map +1 -1
  251. package/lib/langium/serialization/json-serializer.d.ts +8 -1
  252. package/lib/langium/serialization/json-serializer.d.ts.map +1 -1
  253. package/lib/langium/serialization/json-serializer.js +13 -3
  254. package/lib/langium/serialization/json-serializer.js.map +1 -1
  255. package/lib/langium/serialization/serializer.d.ts +1 -1
  256. package/lib/langium/serialization/yaml-serializer.d.ts +4 -0
  257. package/lib/langium/serialization/yaml-serializer.d.ts.map +1 -1
  258. package/lib/langium/serialization/yaml-serializer.js +4 -0
  259. package/lib/langium/serialization/yaml-serializer.js.map +1 -1
  260. package/lib/langium/service-registry.d.ts +29 -1
  261. package/lib/langium/service-registry.d.ts.map +1 -1
  262. package/lib/langium/service-registry.js +37 -0
  263. package/lib/langium/service-registry.js.map +1 -1
  264. package/lib/langium/shared-services.d.ts +13 -7
  265. package/lib/langium/shared-services.d.ts.map +1 -1
  266. package/lib/langium/shared-services.js.map +1 -1
  267. package/lib/langium/single-langium-copy.d.ts +22 -0
  268. package/lib/langium/single-langium-copy.d.ts.map +1 -0
  269. package/lib/langium/single-langium-copy.js +36 -0
  270. package/lib/langium/single-langium-copy.js.map +1 -0
  271. package/lib/langium/transfer/transfer-encoder.d.ts +86 -37
  272. package/lib/langium/transfer/transfer-encoder.d.ts.map +1 -1
  273. package/lib/langium/transfer/transfer-encoder.js +36 -25
  274. package/lib/langium/transfer/transfer-encoder.js.map +1 -1
  275. package/lib/langium/trivia/comment-preserver.d.ts +423 -0
  276. package/lib/langium/trivia/comment-preserver.d.ts.map +1 -0
  277. package/lib/langium/trivia/comment-preserver.js +906 -0
  278. package/lib/langium/trivia/comment-preserver.js.map +1 -0
  279. package/lib/langium/trivia/document-ending-preserver.d.ts +51 -0
  280. package/lib/langium/trivia/document-ending-preserver.d.ts.map +1 -0
  281. package/lib/langium/trivia/document-ending-preserver.js +62 -0
  282. package/lib/langium/trivia/document-ending-preserver.js.map +1 -0
  283. package/lib/langium/trivia/index.d.ts +14 -0
  284. package/lib/langium/trivia/index.d.ts.map +1 -0
  285. package/lib/langium/trivia/index.js +14 -0
  286. package/lib/langium/trivia/index.js.map +1 -0
  287. package/lib/langium/trivia/trivia-contribution.d.ts +37 -0
  288. package/lib/langium/trivia/trivia-contribution.d.ts.map +1 -0
  289. package/lib/langium/trivia/trivia-contribution.js +10 -0
  290. package/lib/langium/trivia/trivia-contribution.js.map +1 -0
  291. package/lib/langium/trivia/trivia-preserver.d.ts +52 -0
  292. package/lib/langium/trivia/trivia-preserver.d.ts.map +1 -0
  293. package/lib/langium/trivia/trivia-preserver.js +10 -0
  294. package/lib/langium/trivia/trivia-preserver.js.map +1 -0
  295. package/lib/langium/trivia/trivia-service.d.ts +70 -0
  296. package/lib/langium/trivia/trivia-service.d.ts.map +1 -0
  297. package/lib/langium/trivia/trivia-service.js +56 -0
  298. package/lib/langium/trivia/trivia-service.js.map +1 -0
  299. package/lib/langium/update-rewrite/normalize-empty-strings.d.ts.map +1 -1
  300. package/lib/langium/update-rewrite/update-rewrite-service.d.ts +1 -1
  301. package/lib/langium/update-rewrite/update-rewrite-service.d.ts.map +1 -1
  302. package/lib/langium/update-rewrite/update-rewrite-service.js.map +1 -1
  303. package/lib/langium/update-rewrite/update-rewrite.d.ts +1 -1
  304. package/lib/langium/validation/document-validator.d.ts +216 -10
  305. package/lib/langium/validation/document-validator.d.ts.map +1 -1
  306. package/lib/langium/validation/document-validator.js +353 -8
  307. package/lib/langium/validation/document-validator.js.map +1 -1
  308. package/lib/langium/validation/validation-contribution-collector.d.ts +9 -1
  309. package/lib/langium/validation/validation-contribution-collector.d.ts.map +1 -1
  310. package/lib/langium/validation/validation-contribution-collector.js +1 -1
  311. package/lib/langium/validation/validation-contribution-collector.js.map +1 -1
  312. package/lib/langium/workspace/document-uri-policy.d.ts +24 -15
  313. package/lib/langium/workspace/document-uri-policy.d.ts.map +1 -1
  314. package/lib/langium/workspace/document-uri-policy.js +22 -13
  315. package/lib/langium/workspace/document-uri-policy.js.map +1 -1
  316. package/lib/langium/workspace/file-not-found.d.ts +23 -0
  317. package/lib/langium/workspace/file-not-found.d.ts.map +1 -0
  318. package/lib/langium/workspace/file-not-found.js +31 -0
  319. package/lib/langium/workspace/file-not-found.js.map +1 -0
  320. package/lib/langium/workspace/file-system-provider.d.ts +167 -8
  321. package/lib/langium/workspace/file-system-provider.d.ts.map +1 -1
  322. package/lib/langium/workspace/file-system-provider.js +115 -13
  323. package/lib/langium/workspace/file-system-provider.js.map +1 -1
  324. package/lib/langium/workspace/hydranium-langium-document-factory.d.ts +31 -1
  325. package/lib/langium/workspace/hydranium-langium-document-factory.d.ts.map +1 -1
  326. package/lib/langium/workspace/hydranium-langium-document-factory.js +54 -0
  327. package/lib/langium/workspace/hydranium-langium-document-factory.js.map +1 -1
  328. package/lib/langium/workspace/hydranium-workspace-lock.d.ts +43 -1
  329. package/lib/langium/workspace/hydranium-workspace-lock.d.ts.map +1 -1
  330. package/lib/langium/workspace/hydranium-workspace-lock.js +58 -1
  331. package/lib/langium/workspace/hydranium-workspace-lock.js.map +1 -1
  332. package/lib/langium/workspace/hydranium-workspace-manager.d.ts +113 -21
  333. package/lib/langium/workspace/hydranium-workspace-manager.d.ts.map +1 -1
  334. package/lib/langium/workspace/hydranium-workspace-manager.js +197 -31
  335. package/lib/langium/workspace/hydranium-workspace-manager.js.map +1 -1
  336. package/lib/langium/workspace/in-memory-file-system-provider.d.ts +26 -9
  337. package/lib/langium/workspace/in-memory-file-system-provider.d.ts.map +1 -1
  338. package/lib/langium/workspace/in-memory-file-system-provider.js +45 -22
  339. package/lib/langium/workspace/in-memory-file-system-provider.js.map +1 -1
  340. package/lib/langium/workspace/index-manager.d.ts.map +1 -1
  341. package/lib/langium/workspace/index-manager.js.map +1 -1
  342. package/lib/langium/workspace/index.d.ts +1 -0
  343. package/lib/langium/workspace/index.d.ts.map +1 -1
  344. package/lib/langium/workspace/index.js +1 -0
  345. package/lib/langium/workspace/index.js.map +1 -1
  346. package/lib/langium/workspace/initialize-workspace.d.ts +40 -3
  347. package/lib/langium/workspace/initialize-workspace.d.ts.map +1 -1
  348. package/lib/langium/workspace/initialize-workspace.js +68 -3
  349. package/lib/langium/workspace/initialize-workspace.js.map +1 -1
  350. package/lib/langium/workspace/langium-documents.d.ts +7 -0
  351. package/lib/langium/workspace/langium-documents.d.ts.map +1 -1
  352. package/lib/langium/workspace/langium-documents.js +18 -1
  353. package/lib/langium/workspace/langium-documents.js.map +1 -1
  354. package/lib/langium/workspace/persistent-file-system-provider.d.ts +16 -10
  355. package/lib/langium/workspace/persistent-file-system-provider.d.ts.map +1 -1
  356. package/lib/langium/workspace/persistent-file-system-provider.js +25 -13
  357. package/lib/langium/workspace/persistent-file-system-provider.js.map +1 -1
  358. package/lib/langium/workspace/self-save-registry.d.ts +84 -0
  359. package/lib/langium/workspace/self-save-registry.d.ts.map +1 -0
  360. package/lib/{documents → langium/workspace}/self-save-registry.js +33 -22
  361. package/lib/langium/workspace/self-save-registry.js.map +1 -0
  362. package/lib/langium/workspace/virtual-document.d.ts +55 -21
  363. package/lib/langium/workspace/virtual-document.d.ts.map +1 -1
  364. package/lib/langium/workspace/virtual-document.js +87 -24
  365. package/lib/langium/workspace/virtual-document.js.map +1 -1
  366. package/lib/langium/workspace/write-lock-scope.d.ts +22 -10
  367. package/lib/langium/workspace/write-lock-scope.d.ts.map +1 -1
  368. package/lib/langium/workspace/write-lock-scope.js +15 -5
  369. package/lib/langium/workspace/write-lock-scope.js.map +1 -1
  370. package/lib/launcher/integrated-server.d.ts +3 -1
  371. package/lib/launcher/integrated-server.d.ts.map +1 -1
  372. package/lib/locale/server-locale.d.ts +29 -5
  373. package/lib/locale/server-locale.d.ts.map +1 -1
  374. package/lib/locale/server-locale.js +12 -2
  375. package/lib/locale/server-locale.js.map +1 -1
  376. package/lib/lsp/completion/hydranium-completion-provider.d.ts +44 -2
  377. package/lib/lsp/completion/hydranium-completion-provider.d.ts.map +1 -1
  378. package/lib/lsp/completion/hydranium-completion-provider.js +68 -0
  379. package/lib/lsp/completion/hydranium-completion-provider.js.map +1 -1
  380. package/lib/lsp/connection-features.d.ts +23 -0
  381. package/lib/lsp/connection-features.d.ts.map +1 -0
  382. package/lib/lsp/connection-features.js +60 -0
  383. package/lib/lsp/connection-features.js.map +1 -0
  384. package/lib/lsp/diagnostics-connection.d.ts +27 -0
  385. package/lib/lsp/diagnostics-connection.d.ts.map +1 -0
  386. package/lib/lsp/diagnostics-connection.js +53 -0
  387. package/lib/lsp/diagnostics-connection.js.map +1 -0
  388. package/lib/lsp/hydranium-document-update-handler.d.ts +126 -82
  389. package/lib/lsp/hydranium-document-update-handler.d.ts.map +1 -1
  390. package/lib/lsp/hydranium-document-update-handler.js +235 -102
  391. package/lib/lsp/hydranium-document-update-handler.js.map +1 -1
  392. package/lib/lsp/index.d.ts +4 -1
  393. package/lib/lsp/index.d.ts.map +1 -1
  394. package/lib/lsp/index.js +4 -1
  395. package/lib/lsp/index.js.map +1 -1
  396. package/lib/lsp/lsp-latency.d.ts +39 -0
  397. package/lib/lsp/lsp-latency.d.ts.map +1 -0
  398. package/lib/lsp/lsp-latency.js +58 -0
  399. package/lib/lsp/lsp-latency.js.map +1 -0
  400. package/lib/lsp/save-text-document.d.ts +31 -0
  401. package/lib/lsp/save-text-document.d.ts.map +1 -0
  402. package/lib/lsp/save-text-document.js +52 -0
  403. package/lib/lsp/save-text-document.js.map +1 -0
  404. package/lib/lsp/semantic-token-provider.d.ts +34 -1
  405. package/lib/lsp/semantic-token-provider.d.ts.map +1 -1
  406. package/lib/lsp/semantic-token-provider.js +55 -8
  407. package/lib/lsp/semantic-token-provider.js.map +1 -1
  408. package/lib/lsp/shared-module.d.ts +4 -8
  409. package/lib/lsp/shared-module.d.ts.map +1 -1
  410. package/lib/lsp/shared-module.js.map +1 -1
  411. package/lib/lsp/start-language-server.d.ts +11 -7
  412. package/lib/lsp/start-language-server.d.ts.map +1 -1
  413. package/lib/lsp/start-language-server.js +18 -7
  414. package/lib/lsp/start-language-server.js.map +1 -1
  415. package/lib/messages/carriers.d.ts +11 -6
  416. package/lib/messages/carriers.d.ts.map +1 -1
  417. package/lib/messages/carriers.js +14 -6
  418. package/lib/messages/carriers.js.map +1 -1
  419. package/lib/messages/index.d.ts +2 -2
  420. package/lib/messages/index.d.ts.map +1 -1
  421. package/lib/messages/index.js +2 -2
  422. package/lib/messages/index.js.map +1 -1
  423. package/lib/messages/renderer.d.ts +32 -7
  424. package/lib/messages/renderer.d.ts.map +1 -1
  425. package/lib/messages/renderer.js +7 -1
  426. package/lib/messages/renderer.js.map +1 -1
  427. package/lib/node/event-loop-monitor.d.ts.map +1 -1
  428. package/lib/node/event-loop-monitor.js +2 -1
  429. package/lib/node/event-loop-monitor.js.map +1 -1
  430. package/lib/node/heap-ceiling.d.ts +61 -0
  431. package/lib/node/heap-ceiling.d.ts.map +1 -0
  432. package/lib/node/heap-ceiling.js +72 -0
  433. package/lib/node/heap-ceiling.js.map +1 -0
  434. package/lib/node/index.d.ts +1 -1
  435. package/lib/node/index.d.ts.map +1 -1
  436. package/lib/node/index.js +5 -1
  437. package/lib/node/index.js.map +1 -1
  438. package/lib/node/latency-from-env.d.ts +1 -1
  439. package/lib/node/latency-from-env.js +1 -1
  440. package/lib/node/lint-grammar.js.map +1 -1
  441. package/lib/node/log-file-sink.d.ts +3 -2
  442. package/lib/node/log-file-sink.d.ts.map +1 -1
  443. package/lib/node/log-file-sink.js +6 -2
  444. package/lib/node/log-file-sink.js.map +1 -1
  445. package/lib/node/log-preamble-node.d.ts +5 -3
  446. package/lib/node/log-preamble-node.d.ts.map +1 -1
  447. package/lib/node/log-preamble-node.js +13 -10
  448. package/lib/node/log-preamble-node.js.map +1 -1
  449. package/lib/node/measure-memory.d.ts.map +1 -1
  450. package/lib/node/measure-memory.js +5 -4
  451. package/lib/node/measure-memory.js.map +1 -1
  452. package/lib/node/memory-monitor.d.ts +2 -2
  453. package/lib/node/memory-monitor.d.ts.map +1 -1
  454. package/lib/node/memory-monitor.js +9 -10
  455. package/lib/node/memory-monitor.js.map +1 -1
  456. package/lib/node/node-file-system-provider.d.ts +67 -9
  457. package/lib/node/node-file-system-provider.d.ts.map +1 -1
  458. package/lib/node/node-file-system-provider.js +198 -53
  459. package/lib/node/node-file-system-provider.js.map +1 -1
  460. package/lib/node/profile-capture.d.ts +12 -4
  461. package/lib/node/profile-capture.d.ts.map +1 -1
  462. package/lib/node/profile-capture.js +8 -6
  463. package/lib/node/profile-capture.js.map +1 -1
  464. package/lib/node/profile-digest.js.map +1 -1
  465. package/lib/node/profiling-run.d.ts +13 -3
  466. package/lib/node/profiling-run.d.ts.map +1 -1
  467. package/lib/node/profiling-run.js +17 -8
  468. package/lib/node/profiling-run.js.map +1 -1
  469. package/lib/node/rename-over-open-readers.d.ts +61 -0
  470. package/lib/node/rename-over-open-readers.d.ts.map +1 -0
  471. package/lib/node/rename-over-open-readers.js +80 -0
  472. package/lib/node/rename-over-open-readers.js.map +1 -0
  473. package/lib/node/server-diagnostics.js +1 -1
  474. package/lib/node/server-diagnostics.js.map +1 -1
  475. package/lib/node/server-state-snapshot.js +4 -4
  476. package/lib/node/server-state-snapshot.js.map +1 -1
  477. package/lib/node/socket-launcher.d.ts +43 -7
  478. package/lib/node/socket-launcher.d.ts.map +1 -1
  479. package/lib/node/socket-launcher.js +42 -7
  480. package/lib/node/socket-launcher.js.map +1 -1
  481. package/lib/node/startup-cpu-profile.d.ts +29 -0
  482. package/lib/node/startup-cpu-profile.d.ts.map +1 -0
  483. package/lib/node/startup-cpu-profile.js +91 -0
  484. package/lib/node/startup-cpu-profile.js.map +1 -0
  485. package/lib/node/stdio-launcher.d.ts +13 -13
  486. package/lib/node/stdio-launcher.d.ts.map +1 -1
  487. package/lib/node/stdio-launcher.js +21 -11
  488. package/lib/node/stdio-launcher.js.map +1 -1
  489. package/lib/testing/document-uri-policy-conformance.js +1 -1
  490. package/lib/testing/document-uri-policy-conformance.js.map +1 -1
  491. package/lib/testing/fake-description.js.map +1 -1
  492. package/lib/testing/fake-document.d.ts +2 -1
  493. package/lib/testing/fake-document.d.ts.map +1 -1
  494. package/lib/testing/fake-document.js.map +1 -1
  495. package/lib/testing/index.d.ts +1 -1
  496. package/lib/testing/index.d.ts.map +1 -1
  497. package/lib/testing/index.js +2 -1
  498. package/lib/testing/index.js.map +1 -1
  499. package/lib/testing/langium-test-helpers.d.ts.map +1 -1
  500. package/lib/testing/langium-test-helpers.js +1 -0
  501. package/lib/testing/langium-test-helpers.js.map +1 -1
  502. package/lib/testing/make-noop-language-services.js.map +1 -1
  503. package/lib/testing/make-noop-shared-services.d.ts +4 -4
  504. package/lib/testing/make-noop-shared-services.d.ts.map +1 -1
  505. package/lib/testing/make-noop-shared-services.js +4 -4
  506. package/lib/testing/make-noop-shared-services.js.map +1 -1
  507. package/lib/testing/make-test-services.d.ts +51 -20
  508. package/lib/testing/make-test-services.d.ts.map +1 -1
  509. package/lib/testing/make-test-services.js +29 -13
  510. package/lib/testing/make-test-services.js.map +1 -1
  511. package/lib/testing/make-test-tracer.d.ts +12 -0
  512. package/lib/testing/make-test-tracer.d.ts.map +1 -1
  513. package/lib/testing/make-test-tracer.js +13 -0
  514. package/lib/testing/make-test-tracer.js.map +1 -1
  515. package/lib/testing/node/applied-edit-capture.d.ts +29 -0
  516. package/lib/testing/node/applied-edit-capture.d.ts.map +1 -0
  517. package/lib/testing/node/applied-edit-capture.js +117 -0
  518. package/lib/testing/node/applied-edit-capture.js.map +1 -0
  519. package/lib/testing/node/golden-corpus.js.map +1 -1
  520. package/lib/testing/node/index.d.ts +1 -0
  521. package/lib/testing/node/index.d.ts.map +1 -1
  522. package/lib/testing/node/index.js +1 -0
  523. package/lib/testing/node/index.js.map +1 -1
  524. package/lib/testing/node/lsp-harness.d.ts.map +1 -1
  525. package/lib/testing/node/lsp-harness.js +2 -0
  526. package/lib/testing/node/lsp-harness.js.map +1 -1
  527. package/lib/testing/node/lsp-server-connection.d.ts +21 -6
  528. package/lib/testing/node/lsp-server-connection.d.ts.map +1 -1
  529. package/lib/testing/node/lsp-server-connection.js +49 -106
  530. package/lib/testing/node/lsp-server-connection.js.map +1 -1
  531. package/lib/testing/node/scratch-workspace.d.ts.map +1 -1
  532. package/lib/testing/node/scratch-workspace.js +10 -5
  533. package/lib/testing/node/scratch-workspace.js.map +1 -1
  534. package/lib/testing/node/spawned-server.d.ts +30 -1
  535. package/lib/testing/node/spawned-server.d.ts.map +1 -1
  536. package/lib/testing/node/spawned-server.js +39 -2
  537. package/lib/testing/node/spawned-server.js.map +1 -1
  538. package/lib/testing/node/unhandled-rejections.d.ts +20 -0
  539. package/lib/testing/node/unhandled-rejections.d.ts.map +1 -0
  540. package/lib/testing/node/unhandled-rejections.js +32 -0
  541. package/lib/testing/node/unhandled-rejections.js.map +1 -0
  542. package/lib/testing/playwright/browser-capture-bridge.js.map +1 -1
  543. package/lib/testing/playwright/e2e-profiling.js.map +1 -1
  544. package/lib/testing/playwright/flaky-network-proxy.d.ts +76 -0
  545. package/lib/testing/playwright/flaky-network-proxy.d.ts.map +1 -0
  546. package/lib/testing/playwright/flaky-network-proxy.js +164 -0
  547. package/lib/testing/playwright/flaky-network-proxy.js.map +1 -0
  548. package/lib/testing/playwright/index.d.ts +1 -0
  549. package/lib/testing/playwright/index.d.ts.map +1 -1
  550. package/lib/testing/playwright/index.js +1 -0
  551. package/lib/testing/playwright/index.js.map +1 -1
  552. package/lib/testing/playwright/server-log-capture.d.ts +46 -16
  553. package/lib/testing/playwright/server-log-capture.d.ts.map +1 -1
  554. package/lib/testing/playwright/server-log-capture.js +111 -40
  555. package/lib/testing/playwright/server-log-capture.js.map +1 -1
  556. package/lib/testing/playwright/server-log-fixture.d.ts +16 -0
  557. package/lib/testing/playwright/server-log-fixture.d.ts.map +1 -1
  558. package/lib/testing/playwright/server-log-fixture.js +25 -6
  559. package/lib/testing/playwright/server-log-fixture.js.map +1 -1
  560. package/lib/testing/playwright/server-log-region.d.ts +15 -0
  561. package/lib/testing/playwright/server-log-region.d.ts.map +1 -0
  562. package/lib/testing/playwright/server-log-region.js +30 -0
  563. package/lib/testing/playwright/server-log-region.js.map +1 -0
  564. package/lib/testing/playwright/server-log-rename-reporter.d.ts.map +1 -1
  565. package/lib/testing/playwright/server-log-rename-reporter.js +4 -3
  566. package/lib/testing/playwright/server-log-rename-reporter.js.map +1 -1
  567. package/lib/testing/run-update-pipeline.d.ts +8 -5
  568. package/lib/testing/run-update-pipeline.d.ts.map +1 -1
  569. package/lib/testing/run-update-pipeline.js.map +1 -1
  570. package/lib/testing/stub-ast-document-manager.d.ts +11 -52
  571. package/lib/testing/stub-ast-document-manager.d.ts.map +1 -1
  572. package/lib/testing/stub-ast-document-manager.js +31 -62
  573. package/lib/testing/stub-ast-document-manager.js.map +1 -1
  574. package/lib/testing/stub-document-builder.d.ts +33 -11
  575. package/lib/testing/stub-document-builder.d.ts.map +1 -1
  576. package/lib/testing/stub-document-builder.js +103 -5
  577. package/lib/testing/stub-document-builder.js.map +1 -1
  578. package/lib/testing/stub-hydranium-text-documents.d.ts +33 -10
  579. package/lib/testing/stub-hydranium-text-documents.d.ts.map +1 -1
  580. package/lib/testing/stub-hydranium-text-documents.js +132 -16
  581. package/lib/testing/stub-hydranium-text-documents.js.map +1 -1
  582. package/lib/testing/stub-index-manager.js.map +1 -1
  583. package/lib/testing/stub-langium-documents.d.ts +3 -2
  584. package/lib/testing/stub-langium-documents.d.ts.map +1 -1
  585. package/lib/testing/stub-langium-documents.js.map +1 -1
  586. package/lib/testing/stub-model-service.d.ts +9 -8
  587. package/lib/testing/stub-model-service.d.ts.map +1 -1
  588. package/lib/testing/stub-model-service.js +6 -6
  589. package/lib/testing/stub-model-service.js.map +1 -1
  590. package/lib/testing/stub-project-manager.js.map +1 -1
  591. package/lib/testing/stub-self-save-registry.d.ts +1 -1
  592. package/lib/testing/stub-self-save-registry.d.ts.map +1 -1
  593. package/lib/testing/stub-service-registry.d.ts +1 -1
  594. package/lib/testing/stub-service-registry.js.map +1 -1
  595. package/lib/testing/stub-writable-file-system.d.ts +1 -1
  596. package/lib/testing/stub-writable-file-system.d.ts.map +1 -1
  597. package/lib/testing/stub-writable-file-system.js +2 -1
  598. package/lib/testing/stub-writable-file-system.js.map +1 -1
  599. package/lib/util/connection-liveness.d.ts +22 -6
  600. package/lib/util/connection-liveness.d.ts.map +1 -1
  601. package/lib/util/connection-liveness.js +74 -15
  602. package/lib/util/connection-liveness.js.map +1 -1
  603. package/lib/util/environment.d.ts +7 -0
  604. package/lib/util/environment.d.ts.map +1 -1
  605. package/lib/util/environment.js +15 -1
  606. package/lib/util/environment.js.map +1 -1
  607. package/lib/util/registry.d.ts.map +1 -1
  608. package/package.json +39 -58
  609. package/src/browser/host-heads-in-worker.ts +218 -0
  610. package/src/browser/index.ts +17 -0
  611. package/src/browser/indexeddb-file-system-store.ts +192 -0
  612. package/src/browser/start-language-server-in-worker.ts +56 -0
  613. package/src/documents/ast-document-manager.ts +467 -233
  614. package/src/documents/client-ids.ts +5 -22
  615. package/src/documents/client-session-errors.ts +24 -0
  616. package/src/documents/client-session-registry.ts +262 -0
  617. package/src/documents/dirty-state-tracker.ts +167 -0
  618. package/src/documents/document-release-handler.ts +404 -0
  619. package/src/documents/document-release-scheduler.ts +121 -0
  620. package/src/documents/file-system-task-queue.ts +74 -0
  621. package/src/documents/hydranium-text-documents.ts +1011 -595
  622. package/src/documents/index.ts +10 -2
  623. package/src/documents/language-client-shadow.ts +501 -0
  624. package/src/documents/model-ledger.ts +66 -0
  625. package/src/documents/text-ledger.ts +112 -0
  626. package/src/documents/version-sync-service.ts +275 -0
  627. package/src/index.ts +7 -0
  628. package/src/langium/ast-extension/ast-extension-service.ts +77 -41
  629. package/src/langium/ast-extension/ast-node-builder.ts +35 -13
  630. package/src/langium/bootstrap.ts +87 -51
  631. package/src/langium/build-phase-pass/build-phase-pass-service.ts +29 -19
  632. package/src/langium/build-phase-pass/build-phase-pass.ts +37 -8
  633. package/src/langium/composite-ast-reflection.ts +112 -0
  634. package/src/langium/config/configuration-provider.ts +119 -0
  635. package/src/langium/config/index.ts +1 -0
  636. package/src/langium/diagnostics/console-tee.ts +151 -0
  637. package/src/langium/diagnostics/format-log-arg.ts +36 -0
  638. package/src/langium/diagnostics/hydranium-langium-profiler.ts +15 -39
  639. package/src/langium/diagnostics/log-preamble.ts +1 -1
  640. package/src/langium/diagnostics/logger.ts +51 -17
  641. package/src/langium/diagnostics/lsp-logger.ts +70 -44
  642. package/src/langium/document-builder/build-pipeline-integration.ts +46 -32
  643. package/src/langium/document-builder/build-session.ts +4 -3
  644. package/src/langium/document-builder/document-builder.ts +553 -78
  645. package/src/langium/integration-services.ts +59 -28
  646. package/src/langium/integrity/integrity-rule.ts +17 -8
  647. package/src/langium/integrity/integrity-service.ts +332 -69
  648. package/src/langium/keys/containment.ts +87 -0
  649. package/src/langium/keys/index.ts +1 -0
  650. package/src/langium/keys/name-based-key-provider.ts +4 -0
  651. package/src/langium/language-module.ts +49 -8
  652. package/src/langium/model-service/client-session.ts +718 -0
  653. package/src/langium/model-service/index.ts +2 -0
  654. package/src/langium/model-service/model-events.ts +80 -0
  655. package/src/langium/model-service/model-service.ts +878 -486
  656. package/src/langium/module.ts +195 -72
  657. package/src/langium/naming/name-provider.ts +34 -8
  658. package/src/langium/project/abstract-project-manager.ts +13 -5
  659. package/src/langium/project/project-change-event.ts +2 -2
  660. package/src/langium/residency/cst-residency-service.ts +54 -19
  661. package/src/langium/scope/fallback-scope.ts +38 -0
  662. package/src/langium/scope/hydranium-scope-computation.ts +45 -44
  663. package/src/langium/scope/hydranium-scope-provider.ts +49 -16
  664. package/src/langium/scope/index.ts +1 -0
  665. package/src/langium/scope/reference-candidate-provider.ts +6 -5
  666. package/src/langium/scope/scope-extension-service.ts +74 -59
  667. package/src/langium/scope/scoped-ast-node-description.ts +1 -3
  668. package/src/langium/serialization/abstract-serializer.ts +57 -41
  669. package/src/langium/serialization/json-serializer.ts +14 -3
  670. package/src/langium/serialization/serializer.ts +1 -1
  671. package/src/langium/serialization/yaml-serializer.ts +4 -0
  672. package/src/langium/service-registry.ts +41 -2
  673. package/src/langium/shared-services.ts +16 -7
  674. package/src/langium/single-langium-copy.ts +42 -0
  675. package/src/langium/transfer/transfer-encoder.ts +104 -47
  676. package/src/langium/trivia/comment-preserver.ts +1100 -0
  677. package/src/langium/trivia/document-ending-preserver.ts +71 -0
  678. package/src/langium/trivia/index.ts +14 -0
  679. package/src/langium/trivia/trivia-contribution.ts +39 -0
  680. package/src/langium/trivia/trivia-preserver.ts +56 -0
  681. package/src/langium/trivia/trivia-service.ts +99 -0
  682. package/src/langium/update-rewrite/update-rewrite-service.ts +1 -1
  683. package/src/langium/update-rewrite/update-rewrite.ts +1 -1
  684. package/src/langium/validation/document-validator.ts +411 -12
  685. package/src/langium/validation/validation-contribution-collector.ts +10 -1
  686. package/src/langium/workspace/document-uri-policy.ts +32 -18
  687. package/src/langium/workspace/file-not-found.ts +35 -0
  688. package/src/langium/workspace/file-system-provider.ts +258 -16
  689. package/src/langium/workspace/hydranium-langium-document-factory.ts +83 -0
  690. package/src/langium/workspace/hydranium-workspace-lock.ts +86 -2
  691. package/src/langium/workspace/hydranium-workspace-manager.ts +224 -35
  692. package/src/langium/workspace/in-memory-file-system-provider.ts +54 -23
  693. package/src/langium/workspace/index.ts +1 -0
  694. package/src/langium/workspace/initialize-workspace.ts +96 -4
  695. package/src/langium/workspace/langium-documents.ts +19 -1
  696. package/src/langium/workspace/persistent-file-system-provider.ts +27 -15
  697. package/src/langium/workspace/self-save-registry.ts +118 -0
  698. package/src/langium/workspace/virtual-document.ts +106 -25
  699. package/src/langium/workspace/write-lock-scope.ts +27 -12
  700. package/src/launcher/integrated-server.ts +3 -1
  701. package/src/locale/server-locale.ts +31 -6
  702. package/src/lsp/completion/hydranium-completion-provider.ts +82 -2
  703. package/src/lsp/connection-features.ts +67 -0
  704. package/src/lsp/diagnostics-connection.ts +56 -0
  705. package/src/lsp/hydranium-document-update-handler.ts +285 -111
  706. package/src/lsp/index.ts +4 -1
  707. package/src/lsp/lsp-latency.ts +62 -0
  708. package/src/lsp/save-text-document.ts +63 -0
  709. package/src/lsp/semantic-token-provider.ts +74 -7
  710. package/src/lsp/shared-module.ts +4 -8
  711. package/src/lsp/start-language-server.ts +18 -7
  712. package/src/messages/carriers.ts +15 -7
  713. package/src/messages/index.ts +11 -2
  714. package/src/messages/renderer.ts +34 -6
  715. package/src/node/event-loop-monitor.ts +2 -1
  716. package/src/node/heap-ceiling.ts +108 -0
  717. package/src/node/index.ts +5 -1
  718. package/src/node/latency-from-env.ts +1 -1
  719. package/src/node/log-file-sink.ts +6 -2
  720. package/src/node/log-preamble-node.ts +20 -10
  721. package/src/node/measure-memory.ts +5 -4
  722. package/src/node/memory-monitor.ts +10 -10
  723. package/src/node/node-file-system-provider.ts +214 -57
  724. package/src/node/profile-capture.ts +16 -15
  725. package/src/node/profiling-run.ts +30 -8
  726. package/src/node/rename-over-open-readers.ts +94 -0
  727. package/src/node/server-diagnostics.ts +1 -1
  728. package/src/node/server-state-snapshot.ts +5 -5
  729. package/src/node/socket-launcher.ts +78 -14
  730. package/src/node/startup-cpu-profile.ts +94 -0
  731. package/src/node/stdio-launcher.ts +29 -19
  732. package/src/testing/document-uri-policy-conformance.ts +1 -1
  733. package/src/testing/fake-document.ts +2 -1
  734. package/src/testing/index.ts +2 -1
  735. package/src/testing/langium-test-helpers.ts +1 -0
  736. package/src/testing/make-noop-shared-services.ts +6 -6
  737. package/src/testing/make-test-services.ts +93 -41
  738. package/src/testing/make-test-tracer.ts +26 -0
  739. package/src/testing/node/applied-edit-capture.ts +141 -0
  740. package/src/testing/node/index.ts +1 -0
  741. package/src/testing/node/lsp-harness.ts +2 -0
  742. package/src/testing/node/lsp-server-connection.ts +83 -119
  743. package/src/testing/node/scratch-workspace.ts +10 -5
  744. package/src/testing/node/spawned-server.ts +57 -3
  745. package/src/testing/node/unhandled-rejections.ts +31 -0
  746. package/src/testing/parse-semantic-root.ts +1 -1
  747. package/src/testing/playwright/flaky-network-proxy.ts +240 -0
  748. package/src/testing/playwright/index.ts +1 -0
  749. package/src/testing/playwright/server-log-capture.ts +137 -47
  750. package/src/testing/playwright/server-log-fixture.ts +46 -6
  751. package/src/testing/playwright/server-log-region.ts +32 -0
  752. package/src/testing/playwright/server-log-rename-reporter.ts +4 -3
  753. package/src/testing/run-update-pipeline.ts +8 -5
  754. package/src/testing/stub-ast-document-manager.ts +47 -128
  755. package/src/testing/stub-document-builder.ts +133 -18
  756. package/src/testing/stub-hydranium-text-documents.ts +184 -27
  757. package/src/testing/stub-langium-documents.ts +3 -2
  758. package/src/testing/stub-model-service.ts +11 -10
  759. package/src/testing/stub-self-save-registry.ts +1 -1
  760. package/src/testing/stub-service-registry.ts +1 -1
  761. package/src/testing/stub-writable-file-system.ts +3 -2
  762. package/src/util/connection-liveness.ts +80 -15
  763. package/src/util/environment.ts +24 -2
  764. package/lib/documents/language-client-text-shadow.d.ts +0 -101
  765. package/lib/documents/language-client-text-shadow.d.ts.map +0 -1
  766. package/lib/documents/language-client-text-shadow.js +0 -156
  767. package/lib/documents/language-client-text-shadow.js.map +0 -1
  768. package/lib/documents/self-save-registry.d.ts +0 -55
  769. package/lib/documents/self-save-registry.d.ts.map +0 -1
  770. package/lib/documents/self-save-registry.js.map +0 -1
  771. package/lib/lsp/instrument-connection.d.ts +0 -36
  772. package/lib/lsp/instrument-connection.d.ts.map +0 -1
  773. package/lib/lsp/instrument-connection.js +0 -62
  774. package/lib/lsp/instrument-connection.js.map +0 -1
  775. package/lib/node/process-memory.d.ts +0 -66
  776. package/lib/node/process-memory.d.ts.map +0 -1
  777. package/lib/node/process-memory.js +0 -252
  778. package/lib/node/process-memory.js.map +0 -1
  779. package/src/documents/language-client-text-shadow.ts +0 -175
  780. package/src/documents/self-save-registry.ts +0 -81
  781. package/src/lsp/instrument-connection.ts +0 -66
  782. package/src/node/process-memory.ts +0 -299
@@ -54,16 +54,6 @@ export interface AbstractSerializerOptions extends LogNameOptions {
54
54
  * the extra property carries a value.
55
55
  */
56
56
  readonly referenceWrapperTypes?: ReadonlyMap<string, string>;
57
- /**
58
- * Whether {@link AbstractSerializer.serializeAst} trims trailing whitespace
59
- * from the final output (leading whitespace is always trimmed). Defaults to
60
- * `true` — the conventional "no trailing blank lines" document shape. Set to
61
- * `false` for grammars whose values may legitimately END the document with
62
- * blank lines that must survive a round-trip — e.g. a multi-line block-scalar
63
- * property (see `YamlSerializerOptions.blockScalarProperties`),
64
- * where a trailing-trim would silently eat user-typed blank lines.
65
- */
66
- readonly trimTrailingWhitespace?: boolean;
67
57
  }
68
58
  /**
69
59
  * Abstract base for hand-written grammar-aware AST → text serializers.
@@ -97,8 +87,11 @@ export interface AbstractSerializerOptions extends LogNameOptions {
97
87
  * **Extension points** (override in a subclass):
98
88
  * - {@link serializeReferenceText} — extract the textual form of a
99
89
  * cross-reference; defaults to the value's `$refText`.
90
+ * - {@link formatString} — quote a string, as a primitive or a reference, for
91
+ * the grammar's string terminal; the one override for a grammar whose
92
+ * terminal or value converter differs from Langium's default.
100
93
  * - {@link formatReferenceValue} — format a cross-reference value for emission;
101
- * defaults to `JSON.stringify`.
94
+ * defaults to {@link formatString}.
102
95
  * - {@link serializeCustomValue} — type-specific serialization for values
103
96
  * that don't fit the generic paths. Runs after all reference detection, so
104
97
  * references never reach this hook. Returns `undefined` to fall through to
@@ -110,6 +103,14 @@ export interface AbstractSerializerOptions extends LogNameOptions {
110
103
  export declare abstract class AbstractSerializer<TAst extends AstNode = AstNode, TTransfer extends TransferElement = TransferElement> implements Serializer<TAst, TTransfer> {
111
104
  protected readonly services: HydraniumLanguageServices;
112
105
  protected readonly options: AbstractSerializerOptions;
106
+ /**
107
+ * The escapes {@link formatString} writes, read through the subclass, so a
108
+ * grammar adding one overrides this table alone. Langium's
109
+ * `ValueConverter.convertString` decodes the short escapes here and reads
110
+ * any other escaped character as itself, which is how `\\` and `\"` read
111
+ * back, and why a `\u` escape would read back as `u`.
112
+ */
113
+ protected static readonly STRING_ESCAPES: ReadonlyMap<string, string>;
113
114
  protected readonly reflection: AstReflection;
114
115
  protected readonly tracer: Tracer;
115
116
  constructor(services: HydraniumLanguageServices, options?: AbstractSerializerOptions);
@@ -117,18 +118,19 @@ export declare abstract class AbstractSerializer<TAst extends AstNode = AstNode,
117
118
  * Entry point for AST-shape inputs. Typically the grammar root, but any
118
119
  * AST node works — the walker is recursive and shape-agnostic.
119
120
  *
120
- * Preserves the sync fast path: when every subclass override and every
121
- * adopter hook is sync, the return is a bare `string` (no Promise
122
- * allocation, no microtask). The async branch fires only if at least one
123
- * recursive `serializeNode` call resolved to a Promise.
121
+ * **Emits the model and nothing else — do not trim here.** Trailing
122
+ * whitespace belongs to the author, and a write path holding the prior
123
+ * document restores it from there; trimming at this end deletes it before
124
+ * that restore sees it. A serializer has no prior document to consult, so it
125
+ * cannot tell a deliberate blank line from an accidental one.
126
+ *
127
+ * **Nothing trims what a subclass emits**, at either end. Emitting leading
128
+ * whitespace therefore puts it in the file, where no write path removes it.
129
+ *
130
+ * Returns whatever `serializeNode` returns, so a fully sync subclass keeps a
131
+ * bare `string` with no promise allocation.
124
132
  */
125
133
  serializeAst(model: TAst): MaybePromise<string>;
126
- /**
127
- * Trim the final serialized output. Leading whitespace is always removed;
128
- * trailing whitespace is removed unless {@link AbstractSerializerOptions.trimTrailingWhitespace}
129
- * is `false` (which preserves document-ending blank lines, e.g. inside a block scalar).
130
- */
131
- protected trimSerialized(text: string | undefined): string;
132
134
  /**
133
135
  * Entry point for transfer-model-shape inputs (cross-references as plain
134
136
  * string ids rather than `Reference` objects).
@@ -280,9 +282,10 @@ export declare abstract class AbstractSerializer<TAst extends AstNode = AstNode,
280
282
  */
281
283
  protected getOrderedPropertyNames(node: AstNode | Record<string, unknown>, type: string): readonly string[];
282
284
  /**
283
- * Format a cross-reference value for emission. Defaults to `JSON.stringify`.
284
- * Override to apply language-specific reference quoting — e.g. an
285
- * id-reference formatter that mirrors the grammar's id convention.
285
+ * Format a cross-reference value for emission. Defaults to
286
+ * {@link formatString}. Override to apply language-specific reference
287
+ * quoting — e.g. an id-reference formatter that mirrors the grammar's id
288
+ * convention.
286
289
  *
287
290
  * Returns {@link MaybePromise} so adopters with async formatting needs
288
291
  * (remote schema lookup, external canonical-id resolution) can return a
@@ -290,15 +293,23 @@ export declare abstract class AbstractSerializer<TAst extends AstNode = AstNode,
290
293
  */
291
294
  protected formatReferenceValue(value: string): MaybePromise<string>;
292
295
  /**
293
- * Format a primitive value (string, number, boolean) for emission. Defaults
294
- * to `JSON.stringify`, which quotes strings, formats numbers/booleans, and
295
- * is valid both as a YAML scalar and a JSON value.
296
+ * Format a primitive value (string, number, boolean) for emission. A string
297
+ * goes through {@link formatString}, any other value through
298
+ * `JSON.stringify`.
296
299
  *
297
300
  * Returns {@link MaybePromise} so adopters with async formatting needs
298
301
  * (e.g. delegating to `prettier.format` for a specific value class) can
299
302
  * return a `Promise<string>`.
300
303
  */
301
304
  protected formatPrimitive(value: unknown): MaybePromise<string>;
305
+ /**
306
+ * Quote a string, as a primitive or a reference, for its reader: the
307
+ * grammar's string terminal and value converter. Defaults to the inverse of
308
+ * Langium's default `STRING` terminal and converter: double quotes, `\` and
309
+ * `"` escaped, the converter's short escapes, every other character as it
310
+ * is. A grammar with another terminal or converter overrides this.
311
+ */
312
+ protected formatString(value: string): string;
302
313
  /**
303
314
  * Hook for type-specific serialization that doesn't fit the generic
304
315
  * dispatch table. Runs after all reference detection (steps 2-4 of
@@ -1 +1 @@
1
- {"version":3,"file":"abstract-serializer.d.ts","sourceRoot":"","sources":["../../../src/langium/serialization/abstract-serializer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"abstract-serializer.d.ts","sourceRoot":"","sources":["../../../src/langium/serialization/abstract-serializer.ts"],"names":[],"mappings":"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"}
@@ -6,7 +6,6 @@
6
6
  *
7
7
  * SPDX-License-Identifier: MIT
8
8
  ********************************************************************************/
9
- import { isPromiseLike } from '@hydranium/protocol';
10
9
  import { isAstNode } from '@hydranium/langium';
11
10
  import { isDefaultValue, isReferenceProperty } from './serialization-util.js';
12
11
  function isRefTextObject(value) {
@@ -44,8 +43,11 @@ function isRefTextObject(value) {
44
43
  * **Extension points** (override in a subclass):
45
44
  * - {@link serializeReferenceText} — extract the textual form of a
46
45
  * cross-reference; defaults to the value's `$refText`.
46
+ * - {@link formatString} — quote a string, as a primitive or a reference, for
47
+ * the grammar's string terminal; the one override for a grammar whose
48
+ * terminal or value converter differs from Langium's default.
47
49
  * - {@link formatReferenceValue} — format a cross-reference value for emission;
48
- * defaults to `JSON.stringify`.
50
+ * defaults to {@link formatString}.
49
51
  * - {@link serializeCustomValue} — type-specific serialization for values
50
52
  * that don't fit the generic paths. Runs after all reference detection, so
51
53
  * references never reach this hook. Returns `undefined` to fall through to
@@ -57,6 +59,24 @@ function isRefTextObject(value) {
57
59
  export class AbstractSerializer {
58
60
  services;
59
61
  options;
62
+ /**
63
+ * The escapes {@link formatString} writes, read through the subclass, so a
64
+ * grammar adding one overrides this table alone. Langium's
65
+ * `ValueConverter.convertString` decodes the short escapes here and reads
66
+ * any other escaped character as itself, which is how `\\` and `\"` read
67
+ * back, and why a `\u` escape would read back as `u`.
68
+ */
69
+ static STRING_ESCAPES = new Map([
70
+ ['\\', '\\\\'],
71
+ ['"', '\\"'],
72
+ ['\b', '\\b'],
73
+ ['\f', '\\f'],
74
+ ['\n', '\\n'],
75
+ ['\r', '\\r'],
76
+ ['\t', '\\t'],
77
+ ['\v', '\\v'],
78
+ ['\0', '\\0']
79
+ ]);
60
80
  reflection;
61
81
  tracer;
62
82
  constructor(services, options = {}) {
@@ -69,28 +89,20 @@ export class AbstractSerializer {
69
89
  * Entry point for AST-shape inputs. Typically the grammar root, but any
70
90
  * AST node works — the walker is recursive and shape-agnostic.
71
91
  *
72
- * Preserves the sync fast path: when every subclass override and every
73
- * adopter hook is sync, the return is a bare `string` (no Promise
74
- * allocation, no microtask). The async branch fires only if at least one
75
- * recursive `serializeNode` call resolved to a Promise.
92
+ * **Emits the model and nothing else — do not trim here.** Trailing
93
+ * whitespace belongs to the author, and a write path holding the prior
94
+ * document restores it from there; trimming at this end deletes it before
95
+ * that restore sees it. A serializer has no prior document to consult, so it
96
+ * cannot tell a deliberate blank line from an accidental one.
97
+ *
98
+ * **Nothing trims what a subclass emits**, at either end. Emitting leading
99
+ * whitespace therefore puts it in the file, where no write path removes it.
100
+ *
101
+ * Returns whatever `serializeNode` returns, so a fully sync subclass keeps a
102
+ * bare `string` with no promise allocation.
76
103
  */
77
104
  serializeAst(model) {
78
- const result = this.serializeNode(model, 0);
79
- if (isPromiseLike(result)) {
80
- return result.then(text => this.trimSerialized(text));
81
- }
82
- return this.trimSerialized(result);
83
- }
84
- /**
85
- * Trim the final serialized output. Leading whitespace is always removed;
86
- * trailing whitespace is removed unless {@link AbstractSerializerOptions.trimTrailingWhitespace}
87
- * is `false` (which preserves document-ending blank lines, e.g. inside a block scalar).
88
- */
89
- trimSerialized(text) {
90
- if (text === undefined) {
91
- return '';
92
- }
93
- return this.options.trimTrailingWhitespace === false ? text.trimStart() : text.trim();
105
+ return this.serializeNode(model, 0);
94
106
  }
95
107
  /**
96
108
  * Entry point for transfer-model-shape inputs (cross-references as plain
@@ -309,28 +321,40 @@ export class AbstractSerializer {
309
321
  return this.options.propertyOrder?.get(type) ?? Object.keys(node);
310
322
  }
311
323
  /**
312
- * Format a cross-reference value for emission. Defaults to `JSON.stringify`.
313
- * Override to apply language-specific reference quoting — e.g. an
314
- * id-reference formatter that mirrors the grammar's id convention.
324
+ * Format a cross-reference value for emission. Defaults to
325
+ * {@link formatString}. Override to apply language-specific reference
326
+ * quoting — e.g. an id-reference formatter that mirrors the grammar's id
327
+ * convention.
315
328
  *
316
329
  * Returns {@link MaybePromise} so adopters with async formatting needs
317
330
  * (remote schema lookup, external canonical-id resolution) can return a
318
331
  * `Promise<string>`. Sync overrides remain valid.
319
332
  */
320
333
  formatReferenceValue(value) {
321
- return JSON.stringify(value);
334
+ return this.formatString(value);
322
335
  }
323
336
  /**
324
- * Format a primitive value (string, number, boolean) for emission. Defaults
325
- * to `JSON.stringify`, which quotes strings, formats numbers/booleans, and
326
- * is valid both as a YAML scalar and a JSON value.
337
+ * Format a primitive value (string, number, boolean) for emission. A string
338
+ * goes through {@link formatString}, any other value through
339
+ * `JSON.stringify`.
327
340
  *
328
341
  * Returns {@link MaybePromise} so adopters with async formatting needs
329
342
  * (e.g. delegating to `prettier.format` for a specific value class) can
330
343
  * return a `Promise<string>`.
331
344
  */
332
345
  formatPrimitive(value) {
333
- return JSON.stringify(value);
346
+ return typeof value === 'string' ? this.formatString(value) : JSON.stringify(value);
347
+ }
348
+ /**
349
+ * Quote a string, as a primitive or a reference, for its reader: the
350
+ * grammar's string terminal and value converter. Defaults to the inverse of
351
+ * Langium's default `STRING` terminal and converter: double quotes, `\` and
352
+ * `"` escaped, the converter's short escapes, every other character as it
353
+ * is. A grammar with another terminal or converter overrides this.
354
+ */
355
+ formatString(value) {
356
+ const escapes = this.constructor.STRING_ESCAPES;
357
+ return `"${Array.from(value, char => escapes.get(char) ?? char).join('')}"`;
334
358
  }
335
359
  /**
336
360
  * Hook for type-specific serialization that doesn't fit the generic
@@ -1 +1 @@
1
- {"version":3,"file":"abstract-serializer.js","sourceRoot":"","sources":["../../../src/langium/serialization/abstract-serializer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"abstract-serializer.js","sourceRoot":"","sources":["../../../src/langium/serialization/abstract-serializer.ts"],"names":[],"mappings":"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"}
@@ -57,7 +57,7 @@ export declare class JsonSerializer<TAst extends AstNode = AstNode, TTransfer ex
57
57
  /** Default spaces per indentation level when `indent` is omitted. */
58
58
  static readonly DEFAULT_INDENT = 2;
59
59
  /** Default reference encoding when `referenceEncoding` is omitted. */
60
- static readonly DEFAULT_REFERENCE_ENCODING: "object-wrapper";
60
+ static readonly DEFAULT_REFERENCE_ENCODING: 'object-wrapper';
61
61
  /** Narrows the inherited {@link AbstractSerializer.options} field to the JSON-specific shape. */
62
62
  protected readonly options: JsonSerializerOptions;
63
63
  protected readonly compact: boolean;
@@ -99,6 +99,13 @@ export declare class JsonSerializer<TAst extends AstNode = AstNode, TTransfer ex
99
99
  * encodings.
100
100
  */
101
101
  protected formatReferenceValue(value: string): MaybePromise<string>;
102
+ /**
103
+ * `JSON.stringify`, so the output stays valid JSON for other tools. The
104
+ * grammar reading it back needs a terminal and value converter that decode
105
+ * the `\u` escape JSON writes for a control character without a short
106
+ * escape; Langium's default converter reads `\u0001` as `u0001`.
107
+ */
108
+ protected formatString(value: string): string;
102
109
  protected composeObject(entries: readonly (readonly [string, string])[], indentationLevel: number): string;
103
110
  protected composeArray(elements: readonly string[], indentationLevel: number): string;
104
111
  protected indent(level: number): string;
@@ -1 +1 @@
1
- {"version":3,"file":"json-serializer.d.ts","sourceRoot":"","sources":["../../../src/langium/serialization/json-serializer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"json-serializer.d.ts","sourceRoot":"","sources":["../../../src/langium/serialization/json-serializer.ts"],"names":[],"mappings":"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"}
@@ -160,13 +160,23 @@ export class JsonSerializer extends AbstractSerializer {
160
160
  * encodings.
161
161
  */
162
162
  formatReferenceValue(value) {
163
+ const quoted = this.formatString(value);
163
164
  if (this.referenceEncoding === 'string') {
164
- return JSON.stringify(value);
165
+ return quoted;
165
166
  }
166
167
  if (this.compact) {
167
- return `{${JSON.stringify('$ref')}:${JSON.stringify(value)}}`;
168
+ return `{${JSON.stringify('$ref')}:${quoted}}`;
168
169
  }
169
- return `{ ${JSON.stringify('$ref')}: ${JSON.stringify(value)} }`;
170
+ return `{ ${JSON.stringify('$ref')}: ${quoted} }`;
171
+ }
172
+ /**
173
+ * `JSON.stringify`, so the output stays valid JSON for other tools. The
174
+ * grammar reading it back needs a terminal and value converter that decode
175
+ * the `\u` escape JSON writes for a control character without a short
176
+ * escape; Langium's default converter reads `\u0001` as `u0001`.
177
+ */
178
+ formatString(value) {
179
+ return JSON.stringify(value);
170
180
  }
171
181
  composeObject(entries, indentationLevel) {
172
182
  const inner = this.indent(indentationLevel + 1);
@@ -1 +1 @@
1
- {"version":3,"file":"json-serializer.js","sourceRoot":"","sources":["../../../src/langium/serialization/json-serializer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"json-serializer.js","sourceRoot":"","sources":["../../../src/langium/serialization/json-serializer.ts"],"names":[],"mappings":"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"}
@@ -32,7 +32,7 @@ import type { AstNode } from '@hydranium/langium';
32
32
  * Neither method requires the input to be the grammar root — the walker is
33
33
  * recursive and shape-agnostic, so any element from either tree serializes
34
34
  * correctly. Callers typically pass a root (that's what
35
- * `ModelService.serialize`
35
+ * `DefaultModelService.serialize`
36
36
  * and the GLSP source-model flows hand in), but sub-tree serialization works
37
37
  * for unit tests, snippet rendering, and tooling.
38
38
  */
@@ -84,6 +84,10 @@ export interface YamlSerializerOptions extends AbstractSerializerOptions {
84
84
  * points. YAML's one addition is unquoted-terminal emission, handled by its
85
85
  * {@link serializeCustomValue} override driven by
86
86
  * {@link YamlSerializerOptions.unquotedProperties}.
87
+ *
88
+ * The grammar, not a YAML parser, reads its quoted strings back, so a control
89
+ * character without a short escape is written raw, which a strict YAML parser
90
+ * such as js-yaml refuses.
87
91
  */
88
92
  export declare class YamlSerializer<TAst extends AstNode = AstNode, TTransfer extends TransferElement = TransferElement> extends AbstractSerializer<TAst, TTransfer> {
89
93
  /** Default {@link YamlSerializerOptions.newlineChar}. */
@@ -1 +1 @@
1
- {"version":3,"file":"yaml-serializer.d.ts","sourceRoot":"","sources":["../../../src/langium/serialization/yaml-serializer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"yaml-serializer.d.ts","sourceRoot":"","sources":["../../../src/langium/serialization/yaml-serializer.ts"],"names":[],"mappings":"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"}
@@ -23,6 +23,10 @@ import { AbstractSerializer } from './abstract-serializer.js';
23
23
  * points. YAML's one addition is unquoted-terminal emission, handled by its
24
24
  * {@link serializeCustomValue} override driven by
25
25
  * {@link YamlSerializerOptions.unquotedProperties}.
26
+ *
27
+ * The grammar, not a YAML parser, reads its quoted strings back, so a control
28
+ * character without a short escape is written raw, which a strict YAML parser
29
+ * such as js-yaml refuses.
26
30
  */
27
31
  export class YamlSerializer extends AbstractSerializer {
28
32
  /** Default {@link YamlSerializerOptions.newlineChar}. */
@@ -1 +1 @@
1
- {"version":3,"file":"yaml-serializer.js","sourceRoot":"","sources":["../../../src/langium/serialization/yaml-serializer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"yaml-serializer.js","sourceRoot":"","sources":["../../../src/langium/serialization/yaml-serializer.ts"],"names":[],"mappings":"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"}
@@ -135,6 +135,16 @@ export declare function typedMetadata<TServices extends LangiumCoreServices>(met
135
135
  export declare class ExtendedServiceRegistry<TServices extends LangiumCoreServices = LangiumCoreServices> extends HydraniumServiceRegistry<TServices> {
136
136
  getServices<TMetaServices extends LangiumCoreServices>(metadata: TypedLanguageMetaData<TMetaServices>): TMetaServices | undefined;
137
137
  getServices(uri: URI): TServices;
138
+ /**
139
+ * Every registered language's services, typed as `TServices` like the
140
+ * lookups here rather than as Langium's base shape, so a sweep of the whole
141
+ * set reaches what a URI or a typed handle would have given it.
142
+ *
143
+ * The cast is sound because {@link register} is the only way a language
144
+ * enters and takes `TServices`; the inherited accessor is typed to Langium's
145
+ * base, which is the only reason one is needed.
146
+ */
147
+ get all(): readonly TServices[];
138
148
  /**
139
149
  * Lookup by anything that identifies a document — an AST node (routed by
140
150
  * the document it lives in), a `URI`, or a URI string. `undefined` when the
@@ -170,8 +180,12 @@ export declare class ExtendedServiceRegistry<TServices extends LangiumCoreServic
170
180
  * inherited Langium semantics, which throws on miss). Used for
171
181
  * dynamically-routed lookups where the language id comes from
172
182
  * external input.
183
+ *
184
+ * The cast is sound because {@link register} is the only way a language
185
+ * enters and takes `TServices`; `languageIdMap` is inherited and typed to
186
+ * Langium's base, which is the only reason one is needed.
173
187
  */
174
- getServicesById(languageId: string): LangiumCoreServices | undefined;
188
+ getServicesById(languageId: string): TServices | undefined;
175
189
  /**
176
190
  * Lookup by file extension. Returns `undefined` when no services match.
177
191
  * Useful for routing decisions that need to dispatch on file extension
@@ -201,6 +215,20 @@ export declare class ExtendedServiceRegistry<TServices extends LangiumCoreServic
201
215
  * honest answer rather than taking the first.
202
216
  */
203
217
  soleServicesByType(type: string): TServices | undefined;
218
+ /**
219
+ * The language the strongest signal given names: a declared `languageId`,
220
+ * then `target`'s document, then the only registered language, then the sole
221
+ * producer of `type`. `undefined` when none answers, which leaves the
222
+ * fallback to the caller, since it differs per caller.
223
+ *
224
+ * A declared id comes first because every later signal is inferred, and an
225
+ * inference must not override a caller that said which grammar it means.
226
+ */
227
+ getLanguageFor(hint: {
228
+ readonly languageId?: string;
229
+ readonly target?: LanguageTarget;
230
+ readonly type?: string;
231
+ }): TServices | undefined;
204
232
  /**
205
233
  * Drop the memoised type index, so a language registered after the first
206
234
  * type lookup is accounted for. The reason this index belongs on the
@@ -1 +1 @@
1
- {"version":3,"file":"service-registry.d.ts","sourceRoot":"","sources":["../../src/langium/service-registry.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF,OAAO,EACJ,KAAK,OAAO,EAEZ,sBAAsB,EAEtB,KAAK,mBAAmB,EACxB,KAAK,yBAAyB,EAC9B,KAAK,gBAAgB,EACrB,GAAG,EACL,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAA0B,KAAK,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAErF;;;;;;;;GAQG;AACH,MAAM,MAAM,cAAc,GAAG,OAAO,GAAG,GAAG,GAAG,MAAM,CAAC;AAEpD;;;;;;;;;GASG;AACH,qBAAa,wBAAwB,CAAC,SAAS,SAAS,mBAAmB,GAAG,mBAAmB,CAAE,SAAQ,sBAAsB;IAC9H;;;OAGG;IACH,SAAS,CAAC,cAAc,CAAC,EAAE,yBAAyB,CAAC;IAErD,+CAA+C;IAC/C,SAAS,CAAC,cAAc,SAAK;IAE7B;;;;;;;;OAQG;IACH,IAAI,aAAa,IAAI,MAAM,CAE1B;gBAEW,QAAQ,CAAC,EAAE,yBAAyB;IAgBhD;;;;;;;;OAQG;IACH,oBAAoB,CAAC,QAAQ,EAAE,yBAAyB,GAAG,IAAI;IAItD,QAAQ,CAAC,QAAQ,EAAE,SAAS,GAAG,IAAI;IAK5C;;;;;;;;;;;;;;;;;;OAkBG;IACM,WAAW,CAAC,GAAG,EAAE,GAAG,GAAG,SAAS;CAa3C;AAED,OAAO,CAAC,MAAM,iBAAiB,EAAE,OAAO,MAAM,CAAC;AAE/C;;;;;;;;;;;;;GAaG;AACH,MAAM,WAAW,qBAAqB,CAAC,SAAS,SAAS,mBAAmB,GAAG,mBAAmB,CAAE,SAAQ,gBAAgB;IACzH,QAAQ,CAAC,CAAC,iBAAiB,CAAC,CAAC,EAAE,SAAS,CAAC;CAC3C;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,SAAS,SAAS,mBAAmB,EAAE,QAAQ,EAAE,gBAAgB,GAAG,qBAAqB,CAAC,SAAS,CAAC,CAEjI;AAMD;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,qBAAa,uBAAuB,CACjC,SAAS,SAAS,mBAAmB,GAAG,mBAAmB,CAC5D,SAAQ,wBAAwB,CAAC,SAAS,CAAC;IAEjC,WAAW,CAAC,aAAa,SAAS,mBAAmB,EAC3D,QAAQ,EAAE,qBAAqB,CAAC,aAAa,CAAC,GAC9C,aAAa,GAAG,SAAS;IAEnB,WAAW,CAAC,GAAG,EAAE,GAAG,GAAG,SAAS;IAQzC;;;;;;;;;;;;;;;;;;;;;;;;;;;OA2BG;IACH,cAAc,CAAC,MAAM,EAAE,cAAc,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS;IAYzE;;;;;;OAMG;IACH,eAAe,CAAC,UAAU,EAAE,MAAM,GAAG,mBAAmB,GAAG,SAAS;IAIpE;;;;OAIG;IACH,sBAAsB,CAAC,SAAS,EAAE,MAAM,GAAG,mBAAmB,GAAG,SAAS;IAI1E;;;;;;;;;;;;;;OAcG;IACH,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,SAAS,EAAE;IAIrD;;;;;OAKG;IACH,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS;IAKvD;;;;;OAKG;IACM,QAAQ,CAAC,QAAQ,EAAE,SAAS,GAAG,IAAI;IAK5C,SAAS,CAAC,UAAU,CAAC,EAAE,iBAAiB,CAAC,SAAS,CAAC,CAAC;IAEpD;;;;OAIG;IACH,SAAS,KAAK,SAAS,IAAI,iBAAiB,CAAC,SAAS,CAAC,CAEtD;CACH"}
1
+ {"version":3,"file":"service-registry.d.ts","sourceRoot":"","sources":["../../src/langium/service-registry.ts"],"names":[],"mappings":"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"}
@@ -149,6 +149,18 @@ export class ExtendedServiceRegistry extends HydraniumServiceRegistry {
149
149
  }
150
150
  return super.getServices(arg);
151
151
  }
152
+ /**
153
+ * Every registered language's services, typed as `TServices` like the
154
+ * lookups here rather than as Langium's base shape, so a sweep of the whole
155
+ * set reaches what a URI or a typed handle would have given it.
156
+ *
157
+ * The cast is sound because {@link register} is the only way a language
158
+ * enters and takes `TServices`; the inherited accessor is typed to Langium's
159
+ * base, which is the only reason one is needed.
160
+ */
161
+ get all() {
162
+ return super.all;
163
+ }
152
164
  /**
153
165
  * Lookup by anything that identifies a document — an AST node (routed by
154
166
  * the document it lives in), a `URI`, or a URI string. `undefined` when the
@@ -195,6 +207,10 @@ export class ExtendedServiceRegistry extends HydraniumServiceRegistry {
195
207
  * inherited Langium semantics, which throws on miss). Used for
196
208
  * dynamically-routed lookups where the language id comes from
197
209
  * external input.
210
+ *
211
+ * The cast is sound because {@link register} is the only way a language
212
+ * enters and takes `TServices`; `languageIdMap` is inherited and typed to
213
+ * Langium's base, which is the only reason one is needed.
198
214
  */
199
215
  getServicesById(languageId) {
200
216
  return this.languageIdMap.get(languageId);
@@ -235,6 +251,27 @@ export class ExtendedServiceRegistry extends HydraniumServiceRegistry {
235
251
  const owners = this.getServicesByType(type);
236
252
  return owners.length === 1 ? owners[0] : undefined;
237
253
  }
254
+ /**
255
+ * The language the strongest signal given names: a declared `languageId`,
256
+ * then `target`'s document, then the only registered language, then the sole
257
+ * producer of `type`. `undefined` when none answers, which leaves the
258
+ * fallback to the caller, since it differs per caller.
259
+ *
260
+ * A declared id comes first because every later signal is inferred, and an
261
+ * inference must not override a caller that said which grammar it means.
262
+ */
263
+ getLanguageFor(hint) {
264
+ const declared = hint.languageId === undefined ? undefined : this.getServicesById(hint.languageId);
265
+ const located = declared ?? this.getServicesFor(hint.target);
266
+ if (located) {
267
+ return located;
268
+ }
269
+ const all = this.all;
270
+ if (all.length === 1) {
271
+ return all[0];
272
+ }
273
+ return hint.type === undefined ? undefined : this.soleServicesByType(hint.type);
274
+ }
238
275
  /**
239
276
  * Drop the memoised type index, so a language registered after the first
240
277
  * type lookup is accounted for. The reason this index belongs on the