@hydranium/core 1.0.0-next.30 → 1.0.0-next.301

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 (770) hide show
  1. package/README.md +72 -82
  2. package/lib/browser/host-heads-in-worker.d.ts +58 -0
  3. package/lib/browser/host-heads-in-worker.d.ts.map +1 -0
  4. package/lib/browser/host-heads-in-worker.js +113 -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 +29 -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 +35 -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 +419 -282
  51. package/lib/documents/hydranium-text-documents.d.ts.map +1 -1
  52. package/lib/documents/hydranium-text-documents.js +856 -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 +218 -0
  59. package/lib/documents/language-client-shadow.d.ts.map +1 -0
  60. package/lib/documents/language-client-shadow.js +284 -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 +5 -0
  75. package/lib/index.d.ts.map +1 -1
  76. package/lib/index.js +8 -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 +32 -9
  83. package/lib/langium/ast-extension/ast-node-builder.d.ts.map +1 -1
  84. package/lib/langium/ast-extension/ast-node-builder.js +60 -22
  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 +91 -45
  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/hydranium-langium-profiler.d.ts +9 -20
  112. package/lib/langium/diagnostics/hydranium-langium-profiler.d.ts.map +1 -1
  113. package/lib/langium/diagnostics/hydranium-langium-profiler.js +15 -24
  114. package/lib/langium/diagnostics/hydranium-langium-profiler.js.map +1 -1
  115. package/lib/langium/diagnostics/log-preamble.js +1 -1
  116. package/lib/langium/diagnostics/log-preamble.js.map +1 -1
  117. package/lib/langium/diagnostics/logger.d.ts +19 -4
  118. package/lib/langium/diagnostics/logger.d.ts.map +1 -1
  119. package/lib/langium/diagnostics/logger.js +36 -11
  120. package/lib/langium/diagnostics/logger.js.map +1 -1
  121. package/lib/langium/diagnostics/lsp-logger.d.ts +17 -0
  122. package/lib/langium/diagnostics/lsp-logger.d.ts.map +1 -1
  123. package/lib/langium/diagnostics/lsp-logger.js +58 -17
  124. package/lib/langium/diagnostics/lsp-logger.js.map +1 -1
  125. package/lib/langium/diagnostics/server-tracer.d.ts.map +1 -1
  126. package/lib/langium/diagnostics/server-tracer.js.map +1 -1
  127. package/lib/langium/document-builder/build-pipeline-integration.d.ts +21 -1
  128. package/lib/langium/document-builder/build-pipeline-integration.d.ts.map +1 -1
  129. package/lib/langium/document-builder/build-pipeline-integration.js +28 -30
  130. package/lib/langium/document-builder/build-pipeline-integration.js.map +1 -1
  131. package/lib/langium/document-builder/build-session.d.ts +6 -5
  132. package/lib/langium/document-builder/build-session.d.ts.map +1 -1
  133. package/lib/langium/document-builder/build-session.js +5 -5
  134. package/lib/langium/document-builder/build-session.js.map +1 -1
  135. package/lib/langium/document-builder/document-builder.d.ts +309 -35
  136. package/lib/langium/document-builder/document-builder.d.ts.map +1 -1
  137. package/lib/langium/document-builder/document-builder.js +511 -75
  138. package/lib/langium/document-builder/document-builder.js.map +1 -1
  139. package/lib/langium/documentation/comment-provider.d.ts.map +1 -1
  140. package/lib/langium/documentation/comment-provider.js.map +1 -1
  141. package/lib/langium/integration-services.d.ts +40 -24
  142. package/lib/langium/integration-services.d.ts.map +1 -1
  143. package/lib/langium/integration-services.js +7 -4
  144. package/lib/langium/integration-services.js.map +1 -1
  145. package/lib/langium/integrity/integrity-rule.d.ts +16 -8
  146. package/lib/langium/integrity/integrity-rule.d.ts.map +1 -1
  147. package/lib/langium/integrity/integrity-rule.js.map +1 -1
  148. package/lib/langium/integrity/integrity-service.d.ts +83 -27
  149. package/lib/langium/integrity/integrity-service.d.ts.map +1 -1
  150. package/lib/langium/integrity/integrity-service.js +273 -63
  151. package/lib/langium/integrity/integrity-service.js.map +1 -1
  152. package/lib/langium/keys/containment.d.ts +64 -0
  153. package/lib/langium/keys/containment.d.ts.map +1 -0
  154. package/lib/langium/keys/containment.js +53 -0
  155. package/lib/langium/keys/containment.js.map +1 -0
  156. package/lib/langium/keys/index.d.ts +1 -0
  157. package/lib/langium/keys/index.d.ts.map +1 -1
  158. package/lib/langium/keys/index.js +1 -0
  159. package/lib/langium/keys/index.js.map +1 -1
  160. package/lib/langium/keys/name-based-key-provider.d.ts +4 -0
  161. package/lib/langium/keys/name-based-key-provider.d.ts.map +1 -1
  162. package/lib/langium/keys/name-based-key-provider.js +4 -0
  163. package/lib/langium/keys/name-based-key-provider.js.map +1 -1
  164. package/lib/langium/keys/positional-key-provider.d.ts.map +1 -1
  165. package/lib/langium/keys/positional-key-provider.js.map +1 -1
  166. package/lib/langium/labeling/label-provider.d.ts.map +1 -1
  167. package/lib/langium/labeling/label-provider.js.map +1 -1
  168. package/lib/langium/language-module.d.ts +30 -5
  169. package/lib/langium/language-module.d.ts.map +1 -1
  170. package/lib/langium/language-module.js +18 -4
  171. package/lib/langium/language-module.js.map +1 -1
  172. package/lib/langium/model-service/client-session.d.ts +374 -0
  173. package/lib/langium/model-service/client-session.d.ts.map +1 -0
  174. package/lib/langium/model-service/client-session.js +446 -0
  175. package/lib/langium/model-service/client-session.js.map +1 -0
  176. package/lib/langium/model-service/index.d.ts +2 -0
  177. package/lib/langium/model-service/index.d.ts.map +1 -1
  178. package/lib/langium/model-service/index.js +2 -0
  179. package/lib/langium/model-service/index.js.map +1 -1
  180. package/lib/langium/model-service/model-events.d.ts +66 -0
  181. package/lib/langium/model-service/model-events.d.ts.map +1 -0
  182. package/lib/langium/model-service/model-events.js +10 -0
  183. package/lib/langium/model-service/model-events.js.map +1 -0
  184. package/lib/langium/model-service/model-service.d.ts +480 -289
  185. package/lib/langium/model-service/model-service.d.ts.map +1 -1
  186. package/lib/langium/model-service/model-service.js +597 -456
  187. package/lib/langium/model-service/model-service.js.map +1 -1
  188. package/lib/langium/module.d.ts +158 -37
  189. package/lib/langium/module.d.ts.map +1 -1
  190. package/lib/langium/module.js +52 -36
  191. package/lib/langium/module.js.map +1 -1
  192. package/lib/langium/naming/name-provider.d.ts +42 -7
  193. package/lib/langium/naming/name-provider.d.ts.map +1 -1
  194. package/lib/langium/naming/name-provider.js +10 -4
  195. package/lib/langium/naming/name-provider.js.map +1 -1
  196. package/lib/langium/naming/name-separator-validation.d.ts +23 -1
  197. package/lib/langium/naming/name-separator-validation.d.ts.map +1 -1
  198. package/lib/langium/naming/name-separator-validation.js +22 -0
  199. package/lib/langium/naming/name-separator-validation.js.map +1 -1
  200. package/lib/langium/project/abstract-project-manager.d.ts.map +1 -1
  201. package/lib/langium/project/abstract-project-manager.js +13 -6
  202. package/lib/langium/project/abstract-project-manager.js.map +1 -1
  203. package/lib/langium/project/project-change-event.d.ts +2 -2
  204. package/lib/langium/project/single-project-manager.d.ts.map +1 -1
  205. package/lib/langium/project/single-project-manager.js.map +1 -1
  206. package/lib/langium/residency/cst-residency-service.d.ts +35 -12
  207. package/lib/langium/residency/cst-residency-service.d.ts.map +1 -1
  208. package/lib/langium/residency/cst-residency-service.js +24 -58
  209. package/lib/langium/residency/cst-residency-service.js.map +1 -1
  210. package/lib/langium/scope/ast-node-description-provider.d.ts.map +1 -1
  211. package/lib/langium/scope/ast-node-description-provider.js.map +1 -1
  212. package/lib/langium/scope/fallback-scope.d.ts +27 -0
  213. package/lib/langium/scope/fallback-scope.d.ts.map +1 -0
  214. package/lib/langium/scope/fallback-scope.js +35 -0
  215. package/lib/langium/scope/fallback-scope.js.map +1 -0
  216. package/lib/langium/scope/hydranium-scope-computation.d.ts +21 -18
  217. package/lib/langium/scope/hydranium-scope-computation.d.ts.map +1 -1
  218. package/lib/langium/scope/hydranium-scope-computation.js +38 -39
  219. package/lib/langium/scope/hydranium-scope-computation.js.map +1 -1
  220. package/lib/langium/scope/hydranium-scope-provider.d.ts +39 -17
  221. package/lib/langium/scope/hydranium-scope-provider.d.ts.map +1 -1
  222. package/lib/langium/scope/hydranium-scope-provider.js +52 -26
  223. package/lib/langium/scope/hydranium-scope-provider.js.map +1 -1
  224. package/lib/langium/scope/index.d.ts +1 -0
  225. package/lib/langium/scope/index.d.ts.map +1 -1
  226. package/lib/langium/scope/index.js +1 -0
  227. package/lib/langium/scope/index.js.map +1 -1
  228. package/lib/langium/scope/reference-builder.d.ts.map +1 -1
  229. package/lib/langium/scope/reference-builder.js.map +1 -1
  230. package/lib/langium/scope/reference-candidate-provider.d.ts +6 -5
  231. package/lib/langium/scope/reference-candidate-provider.d.ts.map +1 -1
  232. package/lib/langium/scope/reference-candidate-provider.js +3 -2
  233. package/lib/langium/scope/reference-candidate-provider.js.map +1 -1
  234. package/lib/langium/scope/scope-extension-service.d.ts +41 -37
  235. package/lib/langium/scope/scope-extension-service.d.ts.map +1 -1
  236. package/lib/langium/scope/scope-extension-service.js +57 -29
  237. package/lib/langium/scope/scope-extension-service.js.map +1 -1
  238. package/lib/langium/scope/scoped-ast-node-description.d.ts +1 -3
  239. package/lib/langium/scope/scoped-ast-node-description.d.ts.map +1 -1
  240. package/lib/langium/scope/scoped-ast-node-description.js +1 -3
  241. package/lib/langium/scope/scoped-ast-node-description.js.map +1 -1
  242. package/lib/langium/serialization/abstract-serializer.d.ts +38 -27
  243. package/lib/langium/serialization/abstract-serializer.d.ts.map +1 -1
  244. package/lib/langium/serialization/abstract-serializer.js +54 -30
  245. package/lib/langium/serialization/abstract-serializer.js.map +1 -1
  246. package/lib/langium/serialization/json-serializer.d.ts +8 -1
  247. package/lib/langium/serialization/json-serializer.d.ts.map +1 -1
  248. package/lib/langium/serialization/json-serializer.js +13 -3
  249. package/lib/langium/serialization/json-serializer.js.map +1 -1
  250. package/lib/langium/serialization/serializer.d.ts +1 -1
  251. package/lib/langium/serialization/yaml-serializer.d.ts +4 -0
  252. package/lib/langium/serialization/yaml-serializer.d.ts.map +1 -1
  253. package/lib/langium/serialization/yaml-serializer.js +4 -0
  254. package/lib/langium/serialization/yaml-serializer.js.map +1 -1
  255. package/lib/langium/service-registry.d.ts +29 -1
  256. package/lib/langium/service-registry.d.ts.map +1 -1
  257. package/lib/langium/service-registry.js +37 -0
  258. package/lib/langium/service-registry.js.map +1 -1
  259. package/lib/langium/shared-services.d.ts +23 -6
  260. package/lib/langium/shared-services.d.ts.map +1 -1
  261. package/lib/langium/shared-services.js.map +1 -1
  262. package/lib/langium/single-langium-copy.d.ts +22 -0
  263. package/lib/langium/single-langium-copy.d.ts.map +1 -0
  264. package/lib/langium/single-langium-copy.js +36 -0
  265. package/lib/langium/single-langium-copy.js.map +1 -0
  266. package/lib/langium/transfer/transfer-encoder.d.ts +84 -35
  267. package/lib/langium/transfer/transfer-encoder.d.ts.map +1 -1
  268. package/lib/langium/transfer/transfer-encoder.js +34 -23
  269. package/lib/langium/transfer/transfer-encoder.js.map +1 -1
  270. package/lib/langium/trivia/comment-preserver.d.ts +423 -0
  271. package/lib/langium/trivia/comment-preserver.d.ts.map +1 -0
  272. package/lib/langium/trivia/comment-preserver.js +906 -0
  273. package/lib/langium/trivia/comment-preserver.js.map +1 -0
  274. package/lib/langium/trivia/document-ending-preserver.d.ts +51 -0
  275. package/lib/langium/trivia/document-ending-preserver.d.ts.map +1 -0
  276. package/lib/langium/trivia/document-ending-preserver.js +62 -0
  277. package/lib/langium/trivia/document-ending-preserver.js.map +1 -0
  278. package/lib/langium/trivia/index.d.ts +14 -0
  279. package/lib/langium/trivia/index.d.ts.map +1 -0
  280. package/lib/langium/trivia/index.js +14 -0
  281. package/lib/langium/trivia/index.js.map +1 -0
  282. package/lib/langium/trivia/trivia-contribution.d.ts +37 -0
  283. package/lib/langium/trivia/trivia-contribution.d.ts.map +1 -0
  284. package/lib/langium/trivia/trivia-contribution.js +10 -0
  285. package/lib/langium/trivia/trivia-contribution.js.map +1 -0
  286. package/lib/langium/trivia/trivia-preserver.d.ts +52 -0
  287. package/lib/langium/trivia/trivia-preserver.d.ts.map +1 -0
  288. package/lib/langium/trivia/trivia-preserver.js +10 -0
  289. package/lib/langium/trivia/trivia-preserver.js.map +1 -0
  290. package/lib/langium/trivia/trivia-service.d.ts +70 -0
  291. package/lib/langium/trivia/trivia-service.d.ts.map +1 -0
  292. package/lib/langium/trivia/trivia-service.js +56 -0
  293. package/lib/langium/trivia/trivia-service.js.map +1 -0
  294. package/lib/langium/update-rewrite/normalize-empty-strings.d.ts.map +1 -1
  295. package/lib/langium/update-rewrite/update-rewrite-service.d.ts +1 -1
  296. package/lib/langium/update-rewrite/update-rewrite-service.d.ts.map +1 -1
  297. package/lib/langium/update-rewrite/update-rewrite-service.js.map +1 -1
  298. package/lib/langium/update-rewrite/update-rewrite.d.ts +1 -1
  299. package/lib/langium/validation/document-validator.d.ts +280 -9
  300. package/lib/langium/validation/document-validator.d.ts.map +1 -1
  301. package/lib/langium/validation/document-validator.js +453 -8
  302. package/lib/langium/validation/document-validator.js.map +1 -1
  303. package/lib/langium/validation/validation-contribution-collector.d.ts +9 -1
  304. package/lib/langium/validation/validation-contribution-collector.d.ts.map +1 -1
  305. package/lib/langium/validation/validation-contribution-collector.js +1 -1
  306. package/lib/langium/validation/validation-contribution-collector.js.map +1 -1
  307. package/lib/langium/workspace/document-uri-policy.d.ts +24 -15
  308. package/lib/langium/workspace/document-uri-policy.d.ts.map +1 -1
  309. package/lib/langium/workspace/document-uri-policy.js +22 -13
  310. package/lib/langium/workspace/document-uri-policy.js.map +1 -1
  311. package/lib/langium/workspace/file-not-found.d.ts +23 -0
  312. package/lib/langium/workspace/file-not-found.d.ts.map +1 -0
  313. package/lib/langium/workspace/file-not-found.js +31 -0
  314. package/lib/langium/workspace/file-not-found.js.map +1 -0
  315. package/lib/langium/workspace/file-system-provider.d.ts +165 -8
  316. package/lib/langium/workspace/file-system-provider.d.ts.map +1 -1
  317. package/lib/langium/workspace/file-system-provider.js +111 -13
  318. package/lib/langium/workspace/file-system-provider.js.map +1 -1
  319. package/lib/langium/workspace/hydranium-langium-document-factory.d.ts +31 -1
  320. package/lib/langium/workspace/hydranium-langium-document-factory.d.ts.map +1 -1
  321. package/lib/langium/workspace/hydranium-langium-document-factory.js +54 -0
  322. package/lib/langium/workspace/hydranium-langium-document-factory.js.map +1 -1
  323. package/lib/langium/workspace/hydranium-workspace-lock.d.ts +43 -1
  324. package/lib/langium/workspace/hydranium-workspace-lock.d.ts.map +1 -1
  325. package/lib/langium/workspace/hydranium-workspace-lock.js +58 -1
  326. package/lib/langium/workspace/hydranium-workspace-lock.js.map +1 -1
  327. package/lib/langium/workspace/hydranium-workspace-manager.d.ts +124 -22
  328. package/lib/langium/workspace/hydranium-workspace-manager.d.ts.map +1 -1
  329. package/lib/langium/workspace/hydranium-workspace-manager.js +212 -31
  330. package/lib/langium/workspace/hydranium-workspace-manager.js.map +1 -1
  331. package/lib/langium/workspace/in-memory-file-system-provider.d.ts +26 -9
  332. package/lib/langium/workspace/in-memory-file-system-provider.d.ts.map +1 -1
  333. package/lib/langium/workspace/in-memory-file-system-provider.js +45 -22
  334. package/lib/langium/workspace/in-memory-file-system-provider.js.map +1 -1
  335. package/lib/langium/workspace/index-manager.d.ts.map +1 -1
  336. package/lib/langium/workspace/index-manager.js.map +1 -1
  337. package/lib/langium/workspace/index.d.ts +1 -0
  338. package/lib/langium/workspace/index.d.ts.map +1 -1
  339. package/lib/langium/workspace/index.js +1 -0
  340. package/lib/langium/workspace/index.js.map +1 -1
  341. package/lib/langium/workspace/initialize-workspace.d.ts +31 -2
  342. package/lib/langium/workspace/initialize-workspace.d.ts.map +1 -1
  343. package/lib/langium/workspace/initialize-workspace.js +13 -5
  344. package/lib/langium/workspace/initialize-workspace.js.map +1 -1
  345. package/lib/langium/workspace/langium-documents.d.ts +7 -0
  346. package/lib/langium/workspace/langium-documents.d.ts.map +1 -1
  347. package/lib/langium/workspace/langium-documents.js +18 -1
  348. package/lib/langium/workspace/langium-documents.js.map +1 -1
  349. package/lib/langium/workspace/persistent-file-system-provider.d.ts +15 -9
  350. package/lib/langium/workspace/persistent-file-system-provider.d.ts.map +1 -1
  351. package/lib/langium/workspace/persistent-file-system-provider.js +25 -13
  352. package/lib/langium/workspace/persistent-file-system-provider.js.map +1 -1
  353. package/lib/langium/workspace/self-save-registry.d.ts +84 -0
  354. package/lib/langium/workspace/self-save-registry.d.ts.map +1 -0
  355. package/lib/{documents → langium/workspace}/self-save-registry.js +33 -22
  356. package/lib/langium/workspace/self-save-registry.js.map +1 -0
  357. package/lib/langium/workspace/virtual-document.d.ts +55 -21
  358. package/lib/langium/workspace/virtual-document.d.ts.map +1 -1
  359. package/lib/langium/workspace/virtual-document.js +87 -24
  360. package/lib/langium/workspace/virtual-document.js.map +1 -1
  361. package/lib/langium/workspace/write-lock-scope.d.ts +22 -10
  362. package/lib/langium/workspace/write-lock-scope.d.ts.map +1 -1
  363. package/lib/langium/workspace/write-lock-scope.js +15 -5
  364. package/lib/langium/workspace/write-lock-scope.js.map +1 -1
  365. package/lib/launcher/integrated-server.d.ts +3 -1
  366. package/lib/launcher/integrated-server.d.ts.map +1 -1
  367. package/lib/locale/index.d.ts +10 -0
  368. package/lib/locale/index.d.ts.map +1 -0
  369. package/lib/locale/index.js +10 -0
  370. package/lib/locale/index.js.map +1 -0
  371. package/lib/locale/server-locale.d.ts +73 -0
  372. package/lib/locale/server-locale.d.ts.map +1 -0
  373. package/lib/locale/server-locale.js +61 -0
  374. package/lib/locale/server-locale.js.map +1 -0
  375. package/lib/lsp/completion/hydranium-completion-provider.d.ts +44 -2
  376. package/lib/lsp/completion/hydranium-completion-provider.d.ts.map +1 -1
  377. package/lib/lsp/completion/hydranium-completion-provider.js +68 -0
  378. package/lib/lsp/completion/hydranium-completion-provider.js.map +1 -1
  379. package/lib/lsp/connection-features.d.ts +23 -0
  380. package/lib/lsp/connection-features.d.ts.map +1 -0
  381. package/lib/lsp/connection-features.js +60 -0
  382. package/lib/lsp/connection-features.js.map +1 -0
  383. package/lib/lsp/diagnostics-connection.d.ts +27 -0
  384. package/lib/lsp/diagnostics-connection.d.ts.map +1 -0
  385. package/lib/lsp/diagnostics-connection.js +53 -0
  386. package/lib/lsp/diagnostics-connection.js.map +1 -0
  387. package/lib/lsp/hydranium-document-update-handler.d.ts +126 -82
  388. package/lib/lsp/hydranium-document-update-handler.d.ts.map +1 -1
  389. package/lib/lsp/hydranium-document-update-handler.js +235 -102
  390. package/lib/lsp/hydranium-document-update-handler.js.map +1 -1
  391. package/lib/lsp/index.d.ts +3 -1
  392. package/lib/lsp/index.d.ts.map +1 -1
  393. package/lib/lsp/index.js +3 -1
  394. package/lib/lsp/index.js.map +1 -1
  395. package/lib/lsp/lsp-latency.d.ts +39 -0
  396. package/lib/lsp/lsp-latency.d.ts.map +1 -0
  397. package/lib/lsp/lsp-latency.js +58 -0
  398. package/lib/lsp/lsp-latency.js.map +1 -0
  399. package/lib/lsp/semantic-token-provider.d.ts +34 -1
  400. package/lib/lsp/semantic-token-provider.d.ts.map +1 -1
  401. package/lib/lsp/semantic-token-provider.js +55 -8
  402. package/lib/lsp/semantic-token-provider.js.map +1 -1
  403. package/lib/lsp/shared-module.d.ts +4 -8
  404. package/lib/lsp/shared-module.d.ts.map +1 -1
  405. package/lib/lsp/shared-module.js.map +1 -1
  406. package/lib/lsp/start-language-server.d.ts +8 -7
  407. package/lib/lsp/start-language-server.d.ts.map +1 -1
  408. package/lib/lsp/start-language-server.js +13 -7
  409. package/lib/lsp/start-language-server.js.map +1 -1
  410. package/lib/messages/carriers.d.ts +18 -12
  411. package/lib/messages/carriers.d.ts.map +1 -1
  412. package/lib/messages/carriers.js +22 -13
  413. package/lib/messages/carriers.js.map +1 -1
  414. package/lib/messages/index.d.ts +4 -1
  415. package/lib/messages/index.d.ts.map +1 -1
  416. package/lib/messages/index.js +4 -1
  417. package/lib/messages/index.js.map +1 -1
  418. package/lib/messages/renderer.d.ts +142 -0
  419. package/lib/messages/renderer.d.ts.map +1 -0
  420. package/lib/messages/renderer.js +165 -0
  421. package/lib/messages/renderer.js.map +1 -0
  422. package/lib/node/event-loop-monitor.d.ts.map +1 -1
  423. package/lib/node/event-loop-monitor.js +2 -1
  424. package/lib/node/event-loop-monitor.js.map +1 -1
  425. package/lib/node/heap-ceiling.d.ts +61 -0
  426. package/lib/node/heap-ceiling.d.ts.map +1 -0
  427. package/lib/node/heap-ceiling.js +72 -0
  428. package/lib/node/heap-ceiling.js.map +1 -0
  429. package/lib/node/index.d.ts +1 -1
  430. package/lib/node/index.d.ts.map +1 -1
  431. package/lib/node/index.js +5 -1
  432. package/lib/node/index.js.map +1 -1
  433. package/lib/node/latency-from-env.d.ts +1 -1
  434. package/lib/node/latency-from-env.js +1 -1
  435. package/lib/node/lint-grammar.js.map +1 -1
  436. package/lib/node/log-preamble-node.d.ts +5 -3
  437. package/lib/node/log-preamble-node.d.ts.map +1 -1
  438. package/lib/node/log-preamble-node.js +13 -10
  439. package/lib/node/log-preamble-node.js.map +1 -1
  440. package/lib/node/measure-memory.d.ts.map +1 -1
  441. package/lib/node/measure-memory.js +5 -4
  442. package/lib/node/measure-memory.js.map +1 -1
  443. package/lib/node/memory-monitor.d.ts +2 -2
  444. package/lib/node/memory-monitor.d.ts.map +1 -1
  445. package/lib/node/memory-monitor.js +9 -10
  446. package/lib/node/memory-monitor.js.map +1 -1
  447. package/lib/node/node-file-system-provider.d.ts +67 -9
  448. package/lib/node/node-file-system-provider.d.ts.map +1 -1
  449. package/lib/node/node-file-system-provider.js +198 -53
  450. package/lib/node/node-file-system-provider.js.map +1 -1
  451. package/lib/node/profile-capture.d.ts +12 -4
  452. package/lib/node/profile-capture.d.ts.map +1 -1
  453. package/lib/node/profile-capture.js +8 -6
  454. package/lib/node/profile-capture.js.map +1 -1
  455. package/lib/node/profile-digest.js.map +1 -1
  456. package/lib/node/profiling-run.d.ts +13 -3
  457. package/lib/node/profiling-run.d.ts.map +1 -1
  458. package/lib/node/profiling-run.js +17 -8
  459. package/lib/node/profiling-run.js.map +1 -1
  460. package/lib/node/rename-over-open-readers.d.ts +61 -0
  461. package/lib/node/rename-over-open-readers.d.ts.map +1 -0
  462. package/lib/node/rename-over-open-readers.js +80 -0
  463. package/lib/node/rename-over-open-readers.js.map +1 -0
  464. package/lib/node/server-diagnostics.js +1 -1
  465. package/lib/node/server-diagnostics.js.map +1 -1
  466. package/lib/node/server-state-snapshot.js +4 -4
  467. package/lib/node/server-state-snapshot.js.map +1 -1
  468. package/lib/node/socket-launcher.d.ts +20 -4
  469. package/lib/node/socket-launcher.d.ts.map +1 -1
  470. package/lib/node/socket-launcher.js +8 -7
  471. package/lib/node/socket-launcher.js.map +1 -1
  472. package/lib/node/startup-cpu-profile.d.ts +29 -0
  473. package/lib/node/startup-cpu-profile.d.ts.map +1 -0
  474. package/lib/node/startup-cpu-profile.js +91 -0
  475. package/lib/node/startup-cpu-profile.js.map +1 -0
  476. package/lib/node/stdio-launcher.d.ts +10 -10
  477. package/lib/node/stdio-launcher.d.ts.map +1 -1
  478. package/lib/node/stdio-launcher.js +17 -9
  479. package/lib/node/stdio-launcher.js.map +1 -1
  480. package/lib/testing/document-uri-policy-conformance.js +1 -1
  481. package/lib/testing/document-uri-policy-conformance.js.map +1 -1
  482. package/lib/testing/fake-description.js.map +1 -1
  483. package/lib/testing/fake-document.d.ts +16 -4
  484. package/lib/testing/fake-document.d.ts.map +1 -1
  485. package/lib/testing/fake-document.js +18 -3
  486. package/lib/testing/fake-document.js.map +1 -1
  487. package/lib/testing/index.d.ts +1 -1
  488. package/lib/testing/index.d.ts.map +1 -1
  489. package/lib/testing/index.js +2 -1
  490. package/lib/testing/index.js.map +1 -1
  491. package/lib/testing/langium-test-helpers.d.ts.map +1 -1
  492. package/lib/testing/langium-test-helpers.js +1 -0
  493. package/lib/testing/langium-test-helpers.js.map +1 -1
  494. package/lib/testing/make-noop-language-services.js.map +1 -1
  495. package/lib/testing/make-noop-shared-services.d.ts +14 -0
  496. package/lib/testing/make-noop-shared-services.d.ts.map +1 -1
  497. package/lib/testing/make-noop-shared-services.js +28 -2
  498. package/lib/testing/make-noop-shared-services.js.map +1 -1
  499. package/lib/testing/make-test-services.d.ts +72 -14
  500. package/lib/testing/make-test-services.d.ts.map +1 -1
  501. package/lib/testing/make-test-services.js +42 -10
  502. package/lib/testing/make-test-services.js.map +1 -1
  503. package/lib/testing/make-test-tracer.d.ts +12 -0
  504. package/lib/testing/make-test-tracer.d.ts.map +1 -1
  505. package/lib/testing/make-test-tracer.js +13 -0
  506. package/lib/testing/make-test-tracer.js.map +1 -1
  507. package/lib/testing/node/applied-edit-capture.d.ts +29 -0
  508. package/lib/testing/node/applied-edit-capture.d.ts.map +1 -0
  509. package/lib/testing/node/applied-edit-capture.js +117 -0
  510. package/lib/testing/node/applied-edit-capture.js.map +1 -0
  511. package/lib/testing/node/golden-corpus.js.map +1 -1
  512. package/lib/testing/node/index.d.ts +1 -0
  513. package/lib/testing/node/index.d.ts.map +1 -1
  514. package/lib/testing/node/index.js +1 -0
  515. package/lib/testing/node/index.js.map +1 -1
  516. package/lib/testing/node/lsp-harness.d.ts.map +1 -1
  517. package/lib/testing/node/lsp-harness.js +2 -0
  518. package/lib/testing/node/lsp-harness.js.map +1 -1
  519. package/lib/testing/node/lsp-server-connection.d.ts +21 -6
  520. package/lib/testing/node/lsp-server-connection.d.ts.map +1 -1
  521. package/lib/testing/node/lsp-server-connection.js +49 -106
  522. package/lib/testing/node/lsp-server-connection.js.map +1 -1
  523. package/lib/testing/node/scratch-workspace.d.ts.map +1 -1
  524. package/lib/testing/node/scratch-workspace.js +10 -5
  525. package/lib/testing/node/scratch-workspace.js.map +1 -1
  526. package/lib/testing/node/spawned-server.d.ts +30 -1
  527. package/lib/testing/node/spawned-server.d.ts.map +1 -1
  528. package/lib/testing/node/spawned-server.js +39 -2
  529. package/lib/testing/node/spawned-server.js.map +1 -1
  530. package/lib/testing/node/unhandled-rejections.d.ts +20 -0
  531. package/lib/testing/node/unhandled-rejections.d.ts.map +1 -0
  532. package/lib/testing/node/unhandled-rejections.js +32 -0
  533. package/lib/testing/node/unhandled-rejections.js.map +1 -0
  534. package/lib/testing/playwright/browser-capture-bridge.js.map +1 -1
  535. package/lib/testing/playwright/e2e-profiling.js.map +1 -1
  536. package/lib/testing/playwright/flaky-network-proxy.d.ts +76 -0
  537. package/lib/testing/playwright/flaky-network-proxy.d.ts.map +1 -0
  538. package/lib/testing/playwright/flaky-network-proxy.js +164 -0
  539. package/lib/testing/playwright/flaky-network-proxy.js.map +1 -0
  540. package/lib/testing/playwright/index.d.ts +1 -0
  541. package/lib/testing/playwright/index.d.ts.map +1 -1
  542. package/lib/testing/playwright/index.js +1 -0
  543. package/lib/testing/playwright/index.js.map +1 -1
  544. package/lib/testing/playwright/server-log-capture.d.ts +46 -16
  545. package/lib/testing/playwright/server-log-capture.d.ts.map +1 -1
  546. package/lib/testing/playwright/server-log-capture.js +111 -40
  547. package/lib/testing/playwright/server-log-capture.js.map +1 -1
  548. package/lib/testing/playwright/server-log-fixture.d.ts +16 -0
  549. package/lib/testing/playwright/server-log-fixture.d.ts.map +1 -1
  550. package/lib/testing/playwright/server-log-fixture.js +25 -6
  551. package/lib/testing/playwright/server-log-fixture.js.map +1 -1
  552. package/lib/testing/playwright/server-log-region.d.ts +15 -0
  553. package/lib/testing/playwright/server-log-region.d.ts.map +1 -0
  554. package/lib/testing/playwright/server-log-region.js +30 -0
  555. package/lib/testing/playwright/server-log-region.js.map +1 -0
  556. package/lib/testing/playwright/server-log-rename-reporter.d.ts.map +1 -1
  557. package/lib/testing/playwright/server-log-rename-reporter.js +4 -3
  558. package/lib/testing/playwright/server-log-rename-reporter.js.map +1 -1
  559. package/lib/testing/run-update-pipeline.d.ts +8 -5
  560. package/lib/testing/run-update-pipeline.d.ts.map +1 -1
  561. package/lib/testing/run-update-pipeline.js.map +1 -1
  562. package/lib/testing/stub-ast-document-manager.d.ts +11 -52
  563. package/lib/testing/stub-ast-document-manager.d.ts.map +1 -1
  564. package/lib/testing/stub-ast-document-manager.js +31 -62
  565. package/lib/testing/stub-ast-document-manager.js.map +1 -1
  566. package/lib/testing/stub-document-builder.d.ts +33 -11
  567. package/lib/testing/stub-document-builder.d.ts.map +1 -1
  568. package/lib/testing/stub-document-builder.js +103 -5
  569. package/lib/testing/stub-document-builder.js.map +1 -1
  570. package/lib/testing/stub-hydranium-text-documents.d.ts +33 -10
  571. package/lib/testing/stub-hydranium-text-documents.d.ts.map +1 -1
  572. package/lib/testing/stub-hydranium-text-documents.js +132 -16
  573. package/lib/testing/stub-hydranium-text-documents.js.map +1 -1
  574. package/lib/testing/stub-index-manager.js.map +1 -1
  575. package/lib/testing/stub-langium-documents.d.ts +3 -2
  576. package/lib/testing/stub-langium-documents.d.ts.map +1 -1
  577. package/lib/testing/stub-langium-documents.js.map +1 -1
  578. package/lib/testing/stub-model-service.d.ts +9 -8
  579. package/lib/testing/stub-model-service.d.ts.map +1 -1
  580. package/lib/testing/stub-model-service.js +6 -6
  581. package/lib/testing/stub-model-service.js.map +1 -1
  582. package/lib/testing/stub-project-manager.js.map +1 -1
  583. package/lib/testing/stub-self-save-registry.d.ts +1 -1
  584. package/lib/testing/stub-self-save-registry.d.ts.map +1 -1
  585. package/lib/testing/stub-service-registry.d.ts +1 -1
  586. package/lib/testing/stub-service-registry.js.map +1 -1
  587. package/lib/testing/stub-writable-file-system.d.ts +1 -1
  588. package/lib/testing/stub-writable-file-system.d.ts.map +1 -1
  589. package/lib/testing/stub-writable-file-system.js +2 -1
  590. package/lib/testing/stub-writable-file-system.js.map +1 -1
  591. package/lib/util/connection-liveness.d.ts +19 -6
  592. package/lib/util/connection-liveness.d.ts.map +1 -1
  593. package/lib/util/connection-liveness.js +61 -15
  594. package/lib/util/connection-liveness.js.map +1 -1
  595. package/lib/util/environment.d.ts.map +1 -1
  596. package/lib/util/environment.js.map +1 -1
  597. package/lib/util/registry.d.ts.map +1 -1
  598. package/package.json +38 -57
  599. package/src/browser/host-heads-in-worker.ts +142 -0
  600. package/src/browser/index.ts +17 -0
  601. package/src/browser/indexeddb-file-system-store.ts +192 -0
  602. package/src/browser/start-language-server-in-worker.ts +51 -0
  603. package/src/documents/ast-document-manager.ts +467 -233
  604. package/src/documents/client-ids.ts +5 -22
  605. package/src/documents/client-session-errors.ts +24 -0
  606. package/src/documents/client-session-registry.ts +262 -0
  607. package/src/documents/dirty-state-tracker.ts +167 -0
  608. package/src/documents/document-release-handler.ts +404 -0
  609. package/src/documents/document-release-scheduler.ts +121 -0
  610. package/src/documents/file-system-task-queue.ts +74 -0
  611. package/src/documents/hydranium-text-documents.ts +976 -595
  612. package/src/documents/index.ts +10 -2
  613. package/src/documents/language-client-shadow.ts +452 -0
  614. package/src/documents/model-ledger.ts +66 -0
  615. package/src/documents/text-ledger.ts +112 -0
  616. package/src/documents/version-sync-service.ts +275 -0
  617. package/src/index.ts +8 -0
  618. package/src/langium/ast-extension/ast-extension-service.ts +77 -41
  619. package/src/langium/ast-extension/ast-node-builder.ts +66 -22
  620. package/src/langium/bootstrap.ts +95 -52
  621. package/src/langium/build-phase-pass/build-phase-pass-service.ts +29 -19
  622. package/src/langium/build-phase-pass/build-phase-pass.ts +37 -8
  623. package/src/langium/composite-ast-reflection.ts +112 -0
  624. package/src/langium/config/configuration-provider.ts +119 -0
  625. package/src/langium/config/index.ts +1 -0
  626. package/src/langium/diagnostics/hydranium-langium-profiler.ts +15 -39
  627. package/src/langium/diagnostics/log-preamble.ts +1 -1
  628. package/src/langium/diagnostics/logger.ts +38 -11
  629. package/src/langium/diagnostics/lsp-logger.ts +61 -16
  630. package/src/langium/document-builder/build-pipeline-integration.ts +46 -32
  631. package/src/langium/document-builder/build-session.ts +4 -3
  632. package/src/langium/document-builder/document-builder.ts +616 -73
  633. package/src/langium/integration-services.ts +59 -28
  634. package/src/langium/integrity/integrity-rule.ts +16 -8
  635. package/src/langium/integrity/integrity-service.ts +296 -69
  636. package/src/langium/keys/containment.ts +87 -0
  637. package/src/langium/keys/index.ts +1 -0
  638. package/src/langium/keys/name-based-key-provider.ts +4 -0
  639. package/src/langium/language-module.ts +49 -8
  640. package/src/langium/model-service/client-session.ts +704 -0
  641. package/src/langium/model-service/index.ts +2 -0
  642. package/src/langium/model-service/model-events.ts +80 -0
  643. package/src/langium/model-service/model-service.ts +908 -485
  644. package/src/langium/module.ts +212 -67
  645. package/src/langium/naming/name-provider.ts +44 -8
  646. package/src/langium/naming/name-separator-validation.ts +25 -3
  647. package/src/langium/project/abstract-project-manager.ts +13 -5
  648. package/src/langium/project/project-change-event.ts +2 -2
  649. package/src/langium/residency/cst-residency-service.ts +51 -17
  650. package/src/langium/scope/fallback-scope.ts +38 -0
  651. package/src/langium/scope/hydranium-scope-computation.ts +45 -44
  652. package/src/langium/scope/hydranium-scope-provider.ts +64 -27
  653. package/src/langium/scope/index.ts +1 -0
  654. package/src/langium/scope/reference-candidate-provider.ts +6 -5
  655. package/src/langium/scope/scope-extension-service.ts +74 -59
  656. package/src/langium/scope/scoped-ast-node-description.ts +1 -3
  657. package/src/langium/serialization/abstract-serializer.ts +57 -41
  658. package/src/langium/serialization/json-serializer.ts +14 -3
  659. package/src/langium/serialization/serializer.ts +1 -1
  660. package/src/langium/serialization/yaml-serializer.ts +4 -0
  661. package/src/langium/service-registry.ts +41 -2
  662. package/src/langium/shared-services.ts +26 -6
  663. package/src/langium/single-langium-copy.ts +42 -0
  664. package/src/langium/transfer/transfer-encoder.ts +102 -45
  665. package/src/langium/trivia/comment-preserver.ts +1100 -0
  666. package/src/langium/trivia/document-ending-preserver.ts +71 -0
  667. package/src/langium/trivia/index.ts +14 -0
  668. package/src/langium/trivia/trivia-contribution.ts +39 -0
  669. package/src/langium/trivia/trivia-preserver.ts +56 -0
  670. package/src/langium/trivia/trivia-service.ts +99 -0
  671. package/src/langium/update-rewrite/update-rewrite-service.ts +1 -1
  672. package/src/langium/update-rewrite/update-rewrite.ts +1 -1
  673. package/src/langium/validation/document-validator.ts +528 -13
  674. package/src/langium/validation/validation-contribution-collector.ts +10 -1
  675. package/src/langium/workspace/document-uri-policy.ts +32 -18
  676. package/src/langium/workspace/file-not-found.ts +35 -0
  677. package/src/langium/workspace/file-system-provider.ts +253 -16
  678. package/src/langium/workspace/hydranium-langium-document-factory.ts +83 -0
  679. package/src/langium/workspace/hydranium-workspace-lock.ts +86 -2
  680. package/src/langium/workspace/hydranium-workspace-manager.ts +241 -35
  681. package/src/langium/workspace/in-memory-file-system-provider.ts +54 -23
  682. package/src/langium/workspace/index.ts +1 -0
  683. package/src/langium/workspace/initialize-workspace.ts +43 -5
  684. package/src/langium/workspace/langium-documents.ts +19 -1
  685. package/src/langium/workspace/persistent-file-system-provider.ts +26 -14
  686. package/src/langium/workspace/self-save-registry.ts +118 -0
  687. package/src/langium/workspace/virtual-document.ts +106 -25
  688. package/src/langium/workspace/write-lock-scope.ts +27 -12
  689. package/src/launcher/integrated-server.ts +3 -1
  690. package/src/locale/index.ts +10 -0
  691. package/src/locale/server-locale.ts +86 -0
  692. package/src/lsp/completion/hydranium-completion-provider.ts +82 -2
  693. package/src/lsp/connection-features.ts +67 -0
  694. package/src/lsp/diagnostics-connection.ts +56 -0
  695. package/src/lsp/hydranium-document-update-handler.ts +285 -111
  696. package/src/lsp/index.ts +3 -1
  697. package/src/lsp/lsp-latency.ts +62 -0
  698. package/src/lsp/semantic-token-provider.ts +74 -7
  699. package/src/lsp/shared-module.ts +4 -8
  700. package/src/lsp/start-language-server.ts +13 -7
  701. package/src/messages/carriers.ts +23 -15
  702. package/src/messages/index.ts +13 -1
  703. package/src/messages/renderer.ts +212 -0
  704. package/src/node/event-loop-monitor.ts +2 -1
  705. package/src/node/heap-ceiling.ts +108 -0
  706. package/src/node/index.ts +5 -1
  707. package/src/node/latency-from-env.ts +1 -1
  708. package/src/node/log-preamble-node.ts +20 -10
  709. package/src/node/measure-memory.ts +5 -4
  710. package/src/node/memory-monitor.ts +10 -10
  711. package/src/node/node-file-system-provider.ts +214 -57
  712. package/src/node/profile-capture.ts +16 -15
  713. package/src/node/profiling-run.ts +30 -8
  714. package/src/node/rename-over-open-readers.ts +94 -0
  715. package/src/node/server-diagnostics.ts +1 -1
  716. package/src/node/server-state-snapshot.ts +5 -5
  717. package/src/node/socket-launcher.ts +27 -11
  718. package/src/node/startup-cpu-profile.ts +94 -0
  719. package/src/node/stdio-launcher.ts +22 -14
  720. package/src/testing/document-uri-policy-conformance.ts +1 -1
  721. package/src/testing/fake-document.ts +24 -5
  722. package/src/testing/index.ts +2 -1
  723. package/src/testing/langium-test-helpers.ts +1 -0
  724. package/src/testing/make-noop-shared-services.ts +50 -2
  725. package/src/testing/make-test-services.ts +125 -31
  726. package/src/testing/make-test-tracer.ts +26 -0
  727. package/src/testing/node/applied-edit-capture.ts +141 -0
  728. package/src/testing/node/index.ts +1 -0
  729. package/src/testing/node/lsp-harness.ts +2 -0
  730. package/src/testing/node/lsp-server-connection.ts +83 -119
  731. package/src/testing/node/scratch-workspace.ts +10 -5
  732. package/src/testing/node/spawned-server.ts +57 -3
  733. package/src/testing/node/unhandled-rejections.ts +31 -0
  734. package/src/testing/parse-semantic-root.ts +1 -1
  735. package/src/testing/playwright/flaky-network-proxy.ts +240 -0
  736. package/src/testing/playwright/index.ts +1 -0
  737. package/src/testing/playwright/server-log-capture.ts +137 -47
  738. package/src/testing/playwright/server-log-fixture.ts +46 -6
  739. package/src/testing/playwright/server-log-region.ts +32 -0
  740. package/src/testing/playwright/server-log-rename-reporter.ts +4 -3
  741. package/src/testing/run-update-pipeline.ts +8 -5
  742. package/src/testing/stub-ast-document-manager.ts +47 -128
  743. package/src/testing/stub-document-builder.ts +133 -18
  744. package/src/testing/stub-hydranium-text-documents.ts +184 -27
  745. package/src/testing/stub-langium-documents.ts +3 -2
  746. package/src/testing/stub-model-service.ts +11 -10
  747. package/src/testing/stub-self-save-registry.ts +1 -1
  748. package/src/testing/stub-service-registry.ts +1 -1
  749. package/src/testing/stub-writable-file-system.ts +3 -2
  750. package/src/util/connection-liveness.ts +67 -15
  751. package/src/util/environment.ts +9 -1
  752. package/lib/documents/language-client-text-shadow.d.ts +0 -101
  753. package/lib/documents/language-client-text-shadow.d.ts.map +0 -1
  754. package/lib/documents/language-client-text-shadow.js +0 -156
  755. package/lib/documents/language-client-text-shadow.js.map +0 -1
  756. package/lib/documents/self-save-registry.d.ts +0 -55
  757. package/lib/documents/self-save-registry.d.ts.map +0 -1
  758. package/lib/documents/self-save-registry.js.map +0 -1
  759. package/lib/lsp/instrument-connection.d.ts +0 -36
  760. package/lib/lsp/instrument-connection.d.ts.map +0 -1
  761. package/lib/lsp/instrument-connection.js +0 -62
  762. package/lib/lsp/instrument-connection.js.map +0 -1
  763. package/lib/node/process-memory.d.ts +0 -66
  764. package/lib/node/process-memory.d.ts.map +0 -1
  765. package/lib/node/process-memory.js +0 -252
  766. package/lib/node/process-memory.js.map +0 -1
  767. package/src/documents/language-client-text-shadow.ts +0 -175
  768. package/src/documents/self-save-registry.ts +0 -81
  769. package/src/lsp/instrument-connection.ts +0 -66
  770. package/src/node/process-memory.ts +0 -299
@@ -6,7 +6,8 @@
6
6
  *
7
7
  * SPDX-License-Identifier: MIT
8
8
  ********************************************************************************/
9
- import { AstUtils, MapScope, StreamScope, stream } from '@hydranium/langium';
9
+ import { AstUtils } from '@hydranium/langium';
10
+ import { Format, Logger } from '@hydranium/protocol';
10
11
  import { Registry } from '../../util/registry.js';
11
12
  /** Build a {@link ScopeDescriptionAcceptor} that synthesises typed descriptions via `descriptions` and accumulates them into `into`. */
12
13
  function createScopeDescriptionAcceptor(into, descriptions) {
@@ -16,6 +17,7 @@ function createScopeDescriptionAcceptor(into, descriptions) {
16
17
  push: description => into.push(description)
17
18
  };
18
19
  }
20
+ const NO_DESCRIPTIONS = { local: [], universal: [] };
19
21
  /**
20
22
  * Default {@link ScopeExtensionService} implementation. Per-language
21
23
  * registry for dynamic scope contributions: extra resolvable descriptions
@@ -25,14 +27,20 @@ function createScopeDescriptionAcceptor(into, descriptions) {
25
27
  * separate from the query-time scope-resolution concern (which only reads).
26
28
  *
27
29
  * Lives in the per-language `references` group alongside `ScopeProvider`,
28
- * which consumes the per-tier query methods ({@link getLocalExtensionScope}
29
- * / {@link getUniversalExtensionScope}). Designed as a base class; adopters
30
+ * which consumes {@link getDescriptions}. Designed as a base class; adopters
30
31
  * extend it and call `register` in their constructor.
32
+ *
33
+ * At `debug`, each extension's calls and self-time go into one profile
34
+ * session, reported when a build starts and when it ends. A report thus
35
+ * covers one build, validation included, or the calls made between two
36
+ * builds, such as a reference picker's.
31
37
  */
32
38
  export class DefaultScopeExtensionService {
33
39
  services;
34
40
  scopeExtensions = new Registry();
35
41
  tracer;
42
+ /** Open from the first profiled call until {@link reportProfile}. */
43
+ profileSession;
36
44
  constructor(services, options = {}) {
37
45
  this.services = services;
38
46
  this.tracer = services.shared.Tracer.for(options.logName ?? 'ScopeExtension').trace('instantiated');
@@ -44,6 +52,10 @@ export class DefaultScopeExtensionService {
44
52
  for (const contribution of Object.values(contributions)) {
45
53
  contribution.registerScopeExtensions(this);
46
54
  }
55
+ // Optional for the same reason: a stub tree may carry no builder.
56
+ const builder = services.shared.workspace.DocumentBuilder;
57
+ builder?.onUpdate(() => this.reportProfile());
58
+ builder?.onBuildEnded(() => this.reportProfile());
47
59
  }
48
60
  /**
49
61
  * Register a single scope extension. Doubles as the imperative low-level
@@ -54,41 +66,57 @@ export class DefaultScopeExtensionService {
54
66
  register(extension) {
55
67
  return this.scopeExtensions.register(extension);
56
68
  }
57
- getLocalExtensionScope(referenceType, context, outerScope) {
58
- const local = this.collectExtensionDescriptions(referenceType, context, 'local');
59
- if (local.length === 0) {
60
- return outerScope;
61
- }
62
- return new StreamScope(stream(local), outerScope);
63
- }
64
- getUniversalExtensionScope(referenceType, context, outerScope) {
65
- const universal = this.collectExtensionDescriptions(referenceType, context, 'universal');
66
- if (universal.length === 0) {
67
- return outerScope;
68
- }
69
- return new StreamScope(outerScope.getAllElements(), new MapScope(universal));
70
- }
71
69
  /**
72
- * Walk this language's registered scope extensions matching
73
- * `referenceType` and collect descriptions of the requested `tier`.
74
- * `push`-ed descriptions of other tiers are silently dropped here —
75
- * the per-tier query methods only return descriptions matching their
76
- * tier. (`local` and `universal` are the only acceptor entry points;
77
- * `push` is the escape hatch for pre-built descriptions and is the
78
- * only path that could carry other tiers.)
70
+ * Holds the profile wrap, which an override would have to copy; to change
71
+ * which extensions run, override {@link extensionsFor}.
79
72
  */
80
- collectExtensionDescriptions(referenceType, context, tier) {
81
- const extensionsForType = this.scopeExtensions.all().filter(extension => extension.referenceTypes.includes(referenceType));
73
+ getDescriptions(referenceType, context) {
74
+ const extensionsForType = this.extensionsFor(referenceType, context);
82
75
  if (extensionsForType.length === 0) {
83
- return [];
76
+ return NO_DESCRIPTIONS;
84
77
  }
85
78
  const document = AstUtils.getDocument(context);
86
79
  const collected = [];
87
80
  const accept = createScopeDescriptionAcceptor(collected, this.services.workspace.AstNodeDescriptionProvider);
81
+ const session = Logger.isLevelEnabled('debug') ? (this.profileSession ??= this.tracer.profile('scope-extension')) : undefined;
88
82
  for (const extension of extensionsForType) {
89
- extension.addDescriptions(context, referenceType, document, accept);
83
+ if (session) {
84
+ session.scope(extension.id, () => extension.addDescriptions(context, referenceType, document, accept));
85
+ }
86
+ else {
87
+ extension.addDescriptions(context, referenceType, document, accept);
88
+ }
90
89
  }
91
- return collected.filter(description => description.tier === tier);
90
+ return {
91
+ local: collected.filter(description => description.tier === 'local'),
92
+ universal: collected.filter(description => description.tier === 'universal')
93
+ };
94
+ }
95
+ /** The extensions that run for one reference: by default, those registered for `referenceType`. */
96
+ extensionsFor(referenceType, _context) {
97
+ return this.scopeExtensions.all().filter(extension => extension.referenceTypes.includes(referenceType));
98
+ }
99
+ /**
100
+ * Report the profile session, if one is open, and start the next one fresh:
101
+ * one line per extension, its calls and self-time. Not a share of the
102
+ * session's time, which runs from the first call to the report and so takes
103
+ * in whatever happened between the calls.
104
+ */
105
+ reportProfile() {
106
+ const session = this.profileSession;
107
+ this.profileSession = undefined;
108
+ for (const record of session?.records() ?? []) {
109
+ this.tracer.debug(this.formatProfileRecord(record));
110
+ }
111
+ }
112
+ /**
113
+ * The log line of one extension's {@link reportProfile} entry. It names the
114
+ * language: each has its own session, and an extension id is unique only
115
+ * within its language.
116
+ */
117
+ formatProfileRecord(record) {
118
+ const language = this.services.LanguageMetaData.languageId;
119
+ return `[profile scope-extension ${language}] ${record.id} ×${record.count} ${Format.elapsed(record.selfMs)}`;
92
120
  }
93
121
  }
94
122
  //# sourceMappingURL=scope-extension-service.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"scope-extension-service.js","sourceRoot":"","sources":["../../../src/langium/scope/scope-extension-service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"scope-extension-service.js","sourceRoot":"","sources":["../../../src/langium/scope/scope-extension-service.ts"],"names":[],"mappings":"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"}
@@ -144,9 +144,7 @@ export declare function isUniversalTier(description: AstNodeDescription): descri
144
144
  * URI's project, the public-tier sibling belonging to that
145
145
  * same project is redundant (the project-tier sibling under a shorter
146
146
  * name is already in scope) and should be hidden from completion /
147
- * linking. The framework's
148
- * `HydraniumScopeProvider.bucketFor` uses this
149
- * predicate to enforce the own-project canonical filter on the typed scope path.
147
+ * linking.
150
148
  *
151
149
  * `projectId` accepts `string | undefined` for adopter-call-site
152
150
  * ergonomics: when the source has no resolvable project (standalone
@@ -1 +1 @@
1
- {"version":3,"file":"scoped-ast-node-description.d.ts","sourceRoot":"","sources":["../../../src/langium/scope/scoped-ast-node-description.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAE7D;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,MAAM,eAAe,GAAG,OAAO,GAAG,SAAS,GAAG,QAAQ,GAAG,WAAW,CAAC;AAE3E;;;;;;;;;GASG;AACH,MAAM,WAAW,wBAAyB,SAAQ,kBAAkB;IACjE,QAAQ,CAAC,IAAI,EAAE,eAAe,CAAC;IAC/B;;;;;;;;;;;;;;;;;;;;;;;;OAwBG;IACH,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;CAC9B;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,mBAAmB,CAAC,WAAW,EAAE,kBAAkB,GAAG,WAAW,IAAI,wBAAwB,CAE5G;AAED;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,WAAW,EAAE,kBAAkB,GAAG,WAAW,IAAI,wBAAwB,GAAG;IAAE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAA;CAAE,CAEjI;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAC1B,WAAW,EAAE,kBAAkB,GAC/B,WAAW,IAAI,wBAAwB,GAAG;IAAE,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IAAC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAEpG;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,YAAY,CACzB,WAAW,EAAE,kBAAkB,GAC/B,WAAW,IAAI,wBAAwB,GAAG;IAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IAAC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAEnG;AAED;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAAC,WAAW,EAAE,kBAAkB,GAAG,WAAW,IAAI,wBAAwB,GAAG;IAAE,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAA;CAAE,CAEzI;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,WAAW,CACxB,WAAW,EAAE,kBAAkB,EAC/B,SAAS,EAAE,MAAM,GAAG,SAAS,GAC7B,WAAW,IAAI,wBAAwB,GAAG;IAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IAAC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAEnG"}
1
+ {"version":3,"file":"scoped-ast-node-description.d.ts","sourceRoot":"","sources":["../../../src/langium/scope/scoped-ast-node-description.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAE7D;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,MAAM,eAAe,GAAG,OAAO,GAAG,SAAS,GAAG,QAAQ,GAAG,WAAW,CAAC;AAE3E;;;;;;;;;GASG;AACH,MAAM,WAAW,wBAAyB,SAAQ,kBAAkB;IACjE,QAAQ,CAAC,IAAI,EAAE,eAAe,CAAC;IAC/B;;;;;;;;;;;;;;;;;;;;;;;;OAwBG;IACH,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;CAC9B;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,mBAAmB,CAAC,WAAW,EAAE,kBAAkB,GAAG,WAAW,IAAI,wBAAwB,CAE5G;AAED;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,WAAW,EAAE,kBAAkB,GAAG,WAAW,IAAI,wBAAwB,GAAG;IAAE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAA;CAAE,CAEjI;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAC1B,WAAW,EAAE,kBAAkB,GAC/B,WAAW,IAAI,wBAAwB,GAAG;IAAE,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IAAC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAEpG;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,YAAY,CACzB,WAAW,EAAE,kBAAkB,GAC/B,WAAW,IAAI,wBAAwB,GAAG;IAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IAAC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAEnG;AAED;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAAC,WAAW,EAAE,kBAAkB,GAAG,WAAW,IAAI,wBAAwB,GAAG;IAAE,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAA;CAAE,CAEzI;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,WAAW,CACxB,WAAW,EAAE,kBAAkB,EAC/B,SAAS,EAAE,MAAM,GAAG,SAAS,GAC7B,WAAW,IAAI,wBAAwB,GAAG;IAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IAAC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAEnG"}
@@ -83,9 +83,7 @@ export function isUniversalTier(description) {
83
83
  * URI's project, the public-tier sibling belonging to that
84
84
  * same project is redundant (the project-tier sibling under a shorter
85
85
  * name is already in scope) and should be hidden from completion /
86
- * linking. The framework's
87
- * `HydraniumScopeProvider.bucketFor` uses this
88
- * predicate to enforce the own-project canonical filter on the typed scope path.
86
+ * linking.
89
87
  *
90
88
  * `projectId` accepts `string | undefined` for adopter-call-site
91
89
  * ergonomics: when the source has no resolvable project (standalone
@@ -1 +1 @@
1
- {"version":3,"file":"scoped-ast-node-description.js","sourceRoot":"","sources":["../../../src/langium/scope/scoped-ast-node-description.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAkElF;;;;;;;;;;;;;;;GAeG;AACH,MAAM,UAAU,mBAAmB,CAAC,WAA+B;IAChE,OAAO,OAAQ,WAAwC,CAAC,IAAI,KAAK,QAAQ,CAAC;AAC7E,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,WAAW,CAAC,WAA+B;IACxD,OAAO,mBAAmB,CAAC,WAAW,CAAC,IAAI,WAAW,CAAC,IAAI,KAAK,OAAO,CAAC;AAC3E,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,aAAa,CAC1B,WAA+B;IAE/B,OAAO,mBAAmB,CAAC,WAAW,CAAC,IAAI,WAAW,CAAC,IAAI,KAAK,SAAS,CAAC;AAC7E,CAAC;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,YAAY,CACzB,WAA+B;IAE/B,OAAO,mBAAmB,CAAC,WAAW,CAAC,IAAI,WAAW,CAAC,IAAI,KAAK,QAAQ,CAAC;AAC5E,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,eAAe,CAAC,WAA+B;IAC5D,OAAO,mBAAmB,CAAC,WAAW,CAAC,IAAI,WAAW,CAAC,IAAI,KAAK,WAAW,CAAC;AAC/E,CAAC;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,UAAU,WAAW,CACxB,WAA+B,EAC/B,SAA6B;IAE7B,OAAO,SAAS,KAAK,SAAS,IAAI,YAAY,CAAC,WAAW,CAAC,IAAI,WAAW,CAAC,SAAS,KAAK,SAAS,CAAC;AACtG,CAAC"}
1
+ {"version":3,"file":"scoped-ast-node-description.js","sourceRoot":"","sources":["../../../src/langium/scope/scoped-ast-node-description.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAkElF;;;;;;;;;;;;;;;GAeG;AACH,MAAM,UAAU,mBAAmB,CAAC,WAA+B;IAChE,OAAO,OAAQ,WAAwC,CAAC,IAAI,KAAK,QAAQ,CAAC;AAC7E,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,WAAW,CAAC,WAA+B;IACxD,OAAO,mBAAmB,CAAC,WAAW,CAAC,IAAI,WAAW,CAAC,IAAI,KAAK,OAAO,CAAC;AAC3E,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,aAAa,CAC1B,WAA+B;IAE/B,OAAO,mBAAmB,CAAC,WAAW,CAAC,IAAI,WAAW,CAAC,IAAI,KAAK,SAAS,CAAC;AAC7E,CAAC;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,YAAY,CACzB,WAA+B;IAE/B,OAAO,mBAAmB,CAAC,WAAW,CAAC,IAAI,WAAW,CAAC,IAAI,KAAK,QAAQ,CAAC;AAC5E,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,eAAe,CAAC,WAA+B;IAC5D,OAAO,mBAAmB,CAAC,WAAW,CAAC,IAAI,WAAW,CAAC,IAAI,KAAK,WAAW,CAAC;AAC/E,CAAC;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,UAAU,WAAW,CACxB,WAA+B,EAC/B,SAA6B;IAE7B,OAAO,SAAS,KAAK,SAAS,IAAI,YAAY,CAAC,WAAW,CAAC,IAAI,WAAW,CAAC,SAAS,KAAK,SAAS,CAAC;AACtG,CAAC"}
@@ -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":"AAAA;;;;;;;kFAOkF;AAElF,OAAO,EAAE,aAAa,EAA2C,MAAM,qBAAqB,CAAC;AAG7F,OAAO,EAAE,kBAAkB,EAAkC,MAAM,0BAA0B,CAAC;AAyB9F;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,OAAO,cAAoG,SAAQ,kBAGxH;IACE,qEAAqE;IACrE,MAAM,CAAU,cAAc,GAAG,CAAC,CAAC;IACnC,sEAAsE;IACtE,MAAM,CAAU,0BAA0B,GAAG,gBAAyB,CAAC;IAKpD,OAAO,CAAU;IACjB,UAAU,CAAS;IACnB,iBAAiB,CAA8B;IAElE,YAAY,QAAmC,EAAE,UAAiC,EAAE;QACjF,KAAK,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QACzB,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,cAAc,CAAC,cAAc,CAAC;QAC/D,IAAI,CAAC,OAAO,GAAG,MAAM,KAAK,KAAK,CAAC;QAChC,IAAI,CAAC,UAAU,GAAG,MAAM,KAAK,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QACvF,IAAI,CAAC,iBAAiB,GAAG,OAAO,CAAC,iBAAiB,IAAI,cAAc,CAAC,0BAA0B,CAAC;IACnG,CAAC;IAED;;;;;;;;;OASG;IACgB,aAAa,CAC7B,IAAuC,EACvC,gBAAwB,EACxB,eAAe,GAAG,KAAK;QAEvB,MAAM,QAAQ,GAAI,IAAgB,CAAC,KAAK,CAAC;QACzC,MAAM,SAAS,GAAG,IAAI,CAAC,uBAAuB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QAC/D,OAAO,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,gBAAgB,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;IACxF,CAAC;IAED;;;;;;;OAOG;IACO,oBAAoB,CAC3B,IAAuC,EACvC,QAAgB,EAChB,SAA4B,EAC5B,gBAAwB,EACxB,OAAsC,EACtC,UAAkB;QAElB,KAAK,IAAI,CAAC,GAAG,UAAU,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAClD,MAAM,IAAI,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;YAC1B,MAAM,SAAS,GAAI,IAAuB,CAAC,IAAI,CAAC,CAAC;YACjD,IAAI,IAAI,CAAC,kBAAkB,CAAC,QAAQ,EAAE,IAAI,EAAE,SAAS,CAAC,EAAE,CAAC;gBACtD,SAAS;YACZ,CAAC;YACD,MAAM,KAAK,GAAG,IAAI,CAAC,sBAAsB,CAAC,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE,gBAAgB,GAAG,CAAC,CAAC,CAAC;YAC3F,IAAI,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC;gBACxB,MAAM,QAAQ,GAAG,CAAC,GAAG,CAAC,CAAC;gBACvB,OAAO,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;oBAC5B,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;wBAC5B,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC;oBACpC,CAAC;oBACD,OAAO,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,gBAAgB,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;gBACpG,CAAC,CAAC,CAAC;YACN,CAAC;YACD,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;gBACvB,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;YAC/B,CAAC;QACJ,CAAC;QACD,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACxB,OAAO,IAAI,CAAC;QACf,CAAC;QACD,OAAO,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,gBAAgB,CAAC,CAAC;IACxD,CAAC;IAED,kEAAkE;IAC/C,cAAc,CAAC,KAAgB,EAAE,QAAgB,EAAE,GAAW,EAAE,gBAAwB;QACxG,OAAO,IAAI,CAAC,oBAAoB,CAAC,KAAK,EAAE,QAAQ,EAAE,GAAG,EAAE,gBAAgB,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;IACnF,CAAC;IAED,2FAA2F;IACjF,oBAAoB,CAC3B,KAAgB,EAChB,QAAgB,EAChB,GAAW,EACX,gBAAwB,EACxB,QAAkB,EAClB,UAAkB;QAElB,KAAK,IAAI,CAAC,GAAG,UAAU,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAC9C,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;YACtB,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;gBACtB,SAAS;YACZ,CAAC;YACD,MAAM,KAAK,GAAG,IAAI,CAAC,sBAAsB,CAAC,QAAQ,EAAE,GAAG,EAAE,IAAI,EAAE,gBAAgB,GAAG,CAAC,EAAE,oBAAoB,CAAC,IAAI,CAAC,CAAC;YAChH,IAAI,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC;gBACxB,MAAM,QAAQ,GAAG,CAAC,GAAG,CAAC,CAAC;gBACvB,OAAO,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;oBAC5B,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;wBAC5B,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;oBAC7B,CAAC;oBACD,OAAO,IAAI,CAAC,oBAAoB,CAAC,KAAK,EAAE,QAAQ,EAAE,GAAG,EAAE,gBAAgB,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;gBAChG,CAAC,CAAC,CAAC;YACN,CAAC;YACD,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;gBACvB,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACxB,CAAC;QACJ,CAAC;QACD,OAAO,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,gBAAgB,CAAC,CAAC;IACxD,CAAC;IAED,oGAAoG;IACjF,uBAAuB,CAAC,KAAgB,EAAE,gBAAwB;QAClF,OAAO,IAAI,CAAC,6BAA6B,CAAC,KAAK,EAAE,gBAAgB,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;IAC7E,CAAC;IAED,qGAAqG;IAC3F,6BAA6B,CACpC,KAAgB,EAChB,gBAAwB,EACxB,QAAkB,EAClB,UAAkB;QAElB,KAAK,IAAI,CAAC,GAAG,UAAU,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAC9C,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;YACtB,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;gBACtB,SAAS;YACZ,CAAC;YACD,MAAM,OAAO,GAAG,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC;YAClD,IAAI,KAAuC,CAAC;YAC5C,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;gBACzB,KAAK,GAAG,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC;YAC9C,CAAC;iBAAM,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;gBACnC,KAAK,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC;YAC3C,CAAC;YACD,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;gBACvB,SAAS;YACZ,CAAC;YACD,IAAI,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC;gBACxB,MAAM,QAAQ,GAAG,CAAC,GAAG,CAAC,CAAC;gBACvB,OAAO,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE;oBAC3B,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;oBACzB,OAAO,IAAI,CAAC,6BAA6B,CAAC,KAAK,EAAE,gBAAgB,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;gBAC1F,CAAC,CAAC,CAAC;YACN,CAAC;YACD,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACxB,CAAC;QACD,OAAO,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,gBAAgB,CAAC,CAAC;IACxD,CAAC;IAED;;;;;OAKG;IACgB,oBAAoB,CAAC,KAAa;QAClD,IAAI,IAAI,CAAC,iBAAiB,KAAK,QAAQ,EAAE,CAAC;YACvC,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QAChC,CAAC;QACD,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YAChB,OAAO,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC;QACjE,CAAC;QACD,OAAO,KAAK,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC;IACpE,CAAC;IAES,aAAa,CAAC,OAA+C,EAAE,gBAAwB;QAC9F,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,gBAAgB,GAAG,CAAC,CAAC,CAAC;QAChD,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC;QAC5C,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;QACxC,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,KAAK,EAAE,CAAC;QACpD,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,KAAK,EAAE,CAAC;QAChD,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,KAAK,GAAG,CAAC;QACjD,OAAO,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,KAAK,GAAG,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,KAAK,CAAC;IAChH,CAAC;IAES,YAAY,CAAC,QAA2B,EAAE,gBAAwB;QACzE,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACzB,OAAO,IAAI,CAAC;QACf,CAAC;QACD,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,gBAAgB,GAAG,CAAC,CAAC,CAAC;QAChD,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC;QAC5C,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YAChB,OAAO,IAAI,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;QACpC,CAAC;QACD,OAAO,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,MAAM,KAAK,EAAE,CAAC,KAAK,KAAK,GAAG,CAAC;IAClE,CAAC;IAES,MAAM,CAAC,KAAa;QAC3B,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,UAAU,KAAK,EAAE,EAAE,CAAC;YAC1C,OAAO,EAAE,CAAC;QACb,CAAC;QACD,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACxC,CAAC"}
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}. */