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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (760) hide show
  1. package/README.md +65 -82
  2. package/lib/browser/index.d.ts +10 -0
  3. package/lib/browser/index.d.ts.map +1 -0
  4. package/lib/browser/index.js +14 -0
  5. package/lib/browser/index.js.map +1 -0
  6. package/lib/browser/indexeddb-file-system-store.d.ts +82 -0
  7. package/lib/browser/indexeddb-file-system-store.d.ts.map +1 -0
  8. package/lib/browser/indexeddb-file-system-store.js +181 -0
  9. package/lib/browser/indexeddb-file-system-store.js.map +1 -0
  10. package/lib/documents/ast-document-manager.d.ts +256 -124
  11. package/lib/documents/ast-document-manager.d.ts.map +1 -1
  12. package/lib/documents/ast-document-manager.js +293 -132
  13. package/lib/documents/ast-document-manager.js.map +1 -1
  14. package/lib/documents/client-ids.d.ts +5 -19
  15. package/lib/documents/client-ids.d.ts.map +1 -1
  16. package/lib/documents/client-ids.js +5 -19
  17. package/lib/documents/client-ids.js.map +1 -1
  18. package/lib/documents/client-session-errors.d.ts +15 -0
  19. package/lib/documents/client-session-errors.d.ts.map +1 -0
  20. package/lib/documents/client-session-errors.js +15 -0
  21. package/lib/documents/client-session-errors.js.map +1 -0
  22. package/lib/documents/client-session-registry.d.ts +146 -0
  23. package/lib/documents/client-session-registry.d.ts.map +1 -0
  24. package/lib/documents/client-session-registry.js +207 -0
  25. package/lib/documents/client-session-registry.js.map +1 -0
  26. package/lib/documents/dirty-state-tracker.d.ts +101 -0
  27. package/lib/documents/dirty-state-tracker.d.ts.map +1 -0
  28. package/lib/documents/dirty-state-tracker.js +85 -0
  29. package/lib/documents/dirty-state-tracker.js.map +1 -0
  30. package/lib/documents/document-release-handler.d.ts +204 -0
  31. package/lib/documents/document-release-handler.d.ts.map +1 -0
  32. package/lib/documents/document-release-handler.js +317 -0
  33. package/lib/documents/document-release-handler.js.map +1 -0
  34. package/lib/documents/document-release-scheduler.d.ts +67 -0
  35. package/lib/documents/document-release-scheduler.d.ts.map +1 -0
  36. package/lib/documents/document-release-scheduler.js +80 -0
  37. package/lib/documents/document-release-scheduler.js.map +1 -0
  38. package/lib/documents/file-system-task-queue.d.ts +52 -0
  39. package/lib/documents/file-system-task-queue.d.ts.map +1 -0
  40. package/lib/documents/file-system-task-queue.js +37 -0
  41. package/lib/documents/file-system-task-queue.js.map +1 -0
  42. package/lib/documents/hydranium-text-documents.d.ts +419 -282
  43. package/lib/documents/hydranium-text-documents.d.ts.map +1 -1
  44. package/lib/documents/hydranium-text-documents.js +856 -483
  45. package/lib/documents/hydranium-text-documents.js.map +1 -1
  46. package/lib/documents/index.d.ts +10 -2
  47. package/lib/documents/index.d.ts.map +1 -1
  48. package/lib/documents/index.js +10 -2
  49. package/lib/documents/index.js.map +1 -1
  50. package/lib/documents/language-client-shadow.d.ts +218 -0
  51. package/lib/documents/language-client-shadow.d.ts.map +1 -0
  52. package/lib/documents/language-client-shadow.js +284 -0
  53. package/lib/documents/language-client-shadow.js.map +1 -0
  54. package/lib/documents/model-ledger.d.ts +47 -0
  55. package/lib/documents/model-ledger.d.ts.map +1 -0
  56. package/lib/documents/model-ledger.js +30 -0
  57. package/lib/documents/model-ledger.js.map +1 -0
  58. package/lib/documents/text-ledger.d.ts +64 -0
  59. package/lib/documents/text-ledger.d.ts.map +1 -0
  60. package/lib/documents/text-ledger.js +63 -0
  61. package/lib/documents/text-ledger.js.map +1 -0
  62. package/lib/documents/version-sync-service.d.ts +138 -0
  63. package/lib/documents/version-sync-service.d.ts.map +1 -0
  64. package/lib/documents/version-sync-service.js +173 -0
  65. package/lib/documents/version-sync-service.js.map +1 -0
  66. package/lib/index.d.ts +5 -0
  67. package/lib/index.d.ts.map +1 -1
  68. package/lib/index.js +8 -0
  69. package/lib/index.js.map +1 -1
  70. package/lib/langium/ast-extension/ast-extension-service.d.ts +42 -31
  71. package/lib/langium/ast-extension/ast-extension-service.d.ts.map +1 -1
  72. package/lib/langium/ast-extension/ast-extension-service.js +45 -19
  73. package/lib/langium/ast-extension/ast-extension-service.js.map +1 -1
  74. package/lib/langium/ast-extension/ast-node-builder.d.ts +32 -9
  75. package/lib/langium/ast-extension/ast-node-builder.d.ts.map +1 -1
  76. package/lib/langium/ast-extension/ast-node-builder.js +60 -22
  77. package/lib/langium/ast-extension/ast-node-builder.js.map +1 -1
  78. package/lib/langium/bootstrap.d.ts +49 -36
  79. package/lib/langium/bootstrap.d.ts.map +1 -1
  80. package/lib/langium/bootstrap.js +91 -45
  81. package/lib/langium/bootstrap.js.map +1 -1
  82. package/lib/langium/build-phase-pass/build-phase-pass-service.d.ts +9 -9
  83. package/lib/langium/build-phase-pass/build-phase-pass-service.d.ts.map +1 -1
  84. package/lib/langium/build-phase-pass/build-phase-pass-service.js +25 -16
  85. package/lib/langium/build-phase-pass/build-phase-pass-service.js.map +1 -1
  86. package/lib/langium/build-phase-pass/build-phase-pass.d.ts +20 -8
  87. package/lib/langium/build-phase-pass/build-phase-pass.d.ts.map +1 -1
  88. package/lib/langium/build-phase-pass/build-phase-pass.js +20 -0
  89. package/lib/langium/build-phase-pass/build-phase-pass.js.map +1 -1
  90. package/lib/langium/composite-ast-reflection.d.ts +46 -0
  91. package/lib/langium/composite-ast-reflection.d.ts.map +1 -0
  92. package/lib/langium/composite-ast-reflection.js +97 -0
  93. package/lib/langium/composite-ast-reflection.js.map +1 -0
  94. package/lib/langium/config/configuration-provider.d.ts +81 -0
  95. package/lib/langium/config/configuration-provider.d.ts.map +1 -0
  96. package/lib/langium/config/configuration-provider.js +112 -0
  97. package/lib/langium/config/configuration-provider.js.map +1 -0
  98. package/lib/langium/config/index.d.ts +1 -0
  99. package/lib/langium/config/index.d.ts.map +1 -1
  100. package/lib/langium/config/index.js +1 -0
  101. package/lib/langium/config/index.js.map +1 -1
  102. package/lib/langium/config/settings.js.map +1 -1
  103. package/lib/langium/diagnostics/hydranium-langium-profiler.d.ts +9 -20
  104. package/lib/langium/diagnostics/hydranium-langium-profiler.d.ts.map +1 -1
  105. package/lib/langium/diagnostics/hydranium-langium-profiler.js +15 -24
  106. package/lib/langium/diagnostics/hydranium-langium-profiler.js.map +1 -1
  107. package/lib/langium/diagnostics/log-preamble.js +1 -1
  108. package/lib/langium/diagnostics/log-preamble.js.map +1 -1
  109. package/lib/langium/diagnostics/logger.d.ts +19 -4
  110. package/lib/langium/diagnostics/logger.d.ts.map +1 -1
  111. package/lib/langium/diagnostics/logger.js +36 -11
  112. package/lib/langium/diagnostics/logger.js.map +1 -1
  113. package/lib/langium/diagnostics/lsp-logger.d.ts +17 -0
  114. package/lib/langium/diagnostics/lsp-logger.d.ts.map +1 -1
  115. package/lib/langium/diagnostics/lsp-logger.js +58 -17
  116. package/lib/langium/diagnostics/lsp-logger.js.map +1 -1
  117. package/lib/langium/diagnostics/server-tracer.d.ts.map +1 -1
  118. package/lib/langium/diagnostics/server-tracer.js.map +1 -1
  119. package/lib/langium/document-builder/build-pipeline-integration.d.ts +21 -1
  120. package/lib/langium/document-builder/build-pipeline-integration.d.ts.map +1 -1
  121. package/lib/langium/document-builder/build-pipeline-integration.js +28 -30
  122. package/lib/langium/document-builder/build-pipeline-integration.js.map +1 -1
  123. package/lib/langium/document-builder/build-session.d.ts +6 -5
  124. package/lib/langium/document-builder/build-session.d.ts.map +1 -1
  125. package/lib/langium/document-builder/build-session.js +5 -5
  126. package/lib/langium/document-builder/build-session.js.map +1 -1
  127. package/lib/langium/document-builder/document-builder.d.ts +309 -35
  128. package/lib/langium/document-builder/document-builder.d.ts.map +1 -1
  129. package/lib/langium/document-builder/document-builder.js +511 -75
  130. package/lib/langium/document-builder/document-builder.js.map +1 -1
  131. package/lib/langium/documentation/comment-provider.d.ts.map +1 -1
  132. package/lib/langium/documentation/comment-provider.js.map +1 -1
  133. package/lib/langium/integration-services.d.ts +40 -24
  134. package/lib/langium/integration-services.d.ts.map +1 -1
  135. package/lib/langium/integration-services.js +7 -4
  136. package/lib/langium/integration-services.js.map +1 -1
  137. package/lib/langium/integrity/integrity-rule.d.ts +16 -8
  138. package/lib/langium/integrity/integrity-rule.d.ts.map +1 -1
  139. package/lib/langium/integrity/integrity-rule.js.map +1 -1
  140. package/lib/langium/integrity/integrity-service.d.ts +83 -27
  141. package/lib/langium/integrity/integrity-service.d.ts.map +1 -1
  142. package/lib/langium/integrity/integrity-service.js +273 -63
  143. package/lib/langium/integrity/integrity-service.js.map +1 -1
  144. package/lib/langium/keys/containment.d.ts +64 -0
  145. package/lib/langium/keys/containment.d.ts.map +1 -0
  146. package/lib/langium/keys/containment.js +53 -0
  147. package/lib/langium/keys/containment.js.map +1 -0
  148. package/lib/langium/keys/index.d.ts +1 -0
  149. package/lib/langium/keys/index.d.ts.map +1 -1
  150. package/lib/langium/keys/index.js +1 -0
  151. package/lib/langium/keys/index.js.map +1 -1
  152. package/lib/langium/keys/name-based-key-provider.d.ts +4 -0
  153. package/lib/langium/keys/name-based-key-provider.d.ts.map +1 -1
  154. package/lib/langium/keys/name-based-key-provider.js +4 -0
  155. package/lib/langium/keys/name-based-key-provider.js.map +1 -1
  156. package/lib/langium/keys/positional-key-provider.d.ts.map +1 -1
  157. package/lib/langium/keys/positional-key-provider.js.map +1 -1
  158. package/lib/langium/labeling/label-provider.d.ts.map +1 -1
  159. package/lib/langium/labeling/label-provider.js.map +1 -1
  160. package/lib/langium/language-module.d.ts +30 -5
  161. package/lib/langium/language-module.d.ts.map +1 -1
  162. package/lib/langium/language-module.js +18 -4
  163. package/lib/langium/language-module.js.map +1 -1
  164. package/lib/langium/model-service/client-session.d.ts +374 -0
  165. package/lib/langium/model-service/client-session.d.ts.map +1 -0
  166. package/lib/langium/model-service/client-session.js +446 -0
  167. package/lib/langium/model-service/client-session.js.map +1 -0
  168. package/lib/langium/model-service/index.d.ts +2 -0
  169. package/lib/langium/model-service/index.d.ts.map +1 -1
  170. package/lib/langium/model-service/index.js +2 -0
  171. package/lib/langium/model-service/index.js.map +1 -1
  172. package/lib/langium/model-service/model-events.d.ts +66 -0
  173. package/lib/langium/model-service/model-events.d.ts.map +1 -0
  174. package/lib/langium/model-service/model-events.js +10 -0
  175. package/lib/langium/model-service/model-events.js.map +1 -0
  176. package/lib/langium/model-service/model-service.d.ts +480 -289
  177. package/lib/langium/model-service/model-service.d.ts.map +1 -1
  178. package/lib/langium/model-service/model-service.js +597 -456
  179. package/lib/langium/model-service/model-service.js.map +1 -1
  180. package/lib/langium/module.d.ts +158 -37
  181. package/lib/langium/module.d.ts.map +1 -1
  182. package/lib/langium/module.js +52 -36
  183. package/lib/langium/module.js.map +1 -1
  184. package/lib/langium/naming/name-provider.d.ts +42 -7
  185. package/lib/langium/naming/name-provider.d.ts.map +1 -1
  186. package/lib/langium/naming/name-provider.js +10 -4
  187. package/lib/langium/naming/name-provider.js.map +1 -1
  188. package/lib/langium/naming/name-separator-validation.d.ts +23 -1
  189. package/lib/langium/naming/name-separator-validation.d.ts.map +1 -1
  190. package/lib/langium/naming/name-separator-validation.js +22 -0
  191. package/lib/langium/naming/name-separator-validation.js.map +1 -1
  192. package/lib/langium/project/abstract-project-manager.d.ts.map +1 -1
  193. package/lib/langium/project/abstract-project-manager.js +13 -6
  194. package/lib/langium/project/abstract-project-manager.js.map +1 -1
  195. package/lib/langium/project/project-change-event.d.ts +2 -2
  196. package/lib/langium/project/single-project-manager.d.ts.map +1 -1
  197. package/lib/langium/project/single-project-manager.js.map +1 -1
  198. package/lib/langium/residency/cst-residency-service.d.ts +35 -12
  199. package/lib/langium/residency/cst-residency-service.d.ts.map +1 -1
  200. package/lib/langium/residency/cst-residency-service.js +24 -58
  201. package/lib/langium/residency/cst-residency-service.js.map +1 -1
  202. package/lib/langium/scope/ast-node-description-provider.d.ts.map +1 -1
  203. package/lib/langium/scope/ast-node-description-provider.js.map +1 -1
  204. package/lib/langium/scope/fallback-scope.d.ts +27 -0
  205. package/lib/langium/scope/fallback-scope.d.ts.map +1 -0
  206. package/lib/langium/scope/fallback-scope.js +35 -0
  207. package/lib/langium/scope/fallback-scope.js.map +1 -0
  208. package/lib/langium/scope/hydranium-scope-computation.d.ts +21 -18
  209. package/lib/langium/scope/hydranium-scope-computation.d.ts.map +1 -1
  210. package/lib/langium/scope/hydranium-scope-computation.js +38 -39
  211. package/lib/langium/scope/hydranium-scope-computation.js.map +1 -1
  212. package/lib/langium/scope/hydranium-scope-provider.d.ts +39 -17
  213. package/lib/langium/scope/hydranium-scope-provider.d.ts.map +1 -1
  214. package/lib/langium/scope/hydranium-scope-provider.js +52 -26
  215. package/lib/langium/scope/hydranium-scope-provider.js.map +1 -1
  216. package/lib/langium/scope/index.d.ts +1 -0
  217. package/lib/langium/scope/index.d.ts.map +1 -1
  218. package/lib/langium/scope/index.js +1 -0
  219. package/lib/langium/scope/index.js.map +1 -1
  220. package/lib/langium/scope/reference-builder.d.ts.map +1 -1
  221. package/lib/langium/scope/reference-builder.js.map +1 -1
  222. package/lib/langium/scope/reference-candidate-provider.d.ts +6 -5
  223. package/lib/langium/scope/reference-candidate-provider.d.ts.map +1 -1
  224. package/lib/langium/scope/reference-candidate-provider.js +3 -2
  225. package/lib/langium/scope/reference-candidate-provider.js.map +1 -1
  226. package/lib/langium/scope/scope-extension-service.d.ts +41 -37
  227. package/lib/langium/scope/scope-extension-service.d.ts.map +1 -1
  228. package/lib/langium/scope/scope-extension-service.js +57 -29
  229. package/lib/langium/scope/scope-extension-service.js.map +1 -1
  230. package/lib/langium/scope/scoped-ast-node-description.d.ts +1 -3
  231. package/lib/langium/scope/scoped-ast-node-description.d.ts.map +1 -1
  232. package/lib/langium/scope/scoped-ast-node-description.js +1 -3
  233. package/lib/langium/scope/scoped-ast-node-description.js.map +1 -1
  234. package/lib/langium/serialization/abstract-serializer.d.ts +38 -27
  235. package/lib/langium/serialization/abstract-serializer.d.ts.map +1 -1
  236. package/lib/langium/serialization/abstract-serializer.js +54 -30
  237. package/lib/langium/serialization/abstract-serializer.js.map +1 -1
  238. package/lib/langium/serialization/json-serializer.d.ts +8 -1
  239. package/lib/langium/serialization/json-serializer.d.ts.map +1 -1
  240. package/lib/langium/serialization/json-serializer.js +13 -3
  241. package/lib/langium/serialization/json-serializer.js.map +1 -1
  242. package/lib/langium/serialization/serializer.d.ts +1 -1
  243. package/lib/langium/serialization/yaml-serializer.d.ts +4 -0
  244. package/lib/langium/serialization/yaml-serializer.d.ts.map +1 -1
  245. package/lib/langium/serialization/yaml-serializer.js +4 -0
  246. package/lib/langium/serialization/yaml-serializer.js.map +1 -1
  247. package/lib/langium/service-registry.d.ts +29 -1
  248. package/lib/langium/service-registry.d.ts.map +1 -1
  249. package/lib/langium/service-registry.js +37 -0
  250. package/lib/langium/service-registry.js.map +1 -1
  251. package/lib/langium/shared-services.d.ts +23 -6
  252. package/lib/langium/shared-services.d.ts.map +1 -1
  253. package/lib/langium/shared-services.js.map +1 -1
  254. package/lib/langium/single-langium-copy.d.ts +22 -0
  255. package/lib/langium/single-langium-copy.d.ts.map +1 -0
  256. package/lib/langium/single-langium-copy.js +36 -0
  257. package/lib/langium/single-langium-copy.js.map +1 -0
  258. package/lib/langium/transfer/transfer-encoder.d.ts +84 -35
  259. package/lib/langium/transfer/transfer-encoder.d.ts.map +1 -1
  260. package/lib/langium/transfer/transfer-encoder.js +34 -23
  261. package/lib/langium/transfer/transfer-encoder.js.map +1 -1
  262. package/lib/langium/trivia/comment-preserver.d.ts +423 -0
  263. package/lib/langium/trivia/comment-preserver.d.ts.map +1 -0
  264. package/lib/langium/trivia/comment-preserver.js +906 -0
  265. package/lib/langium/trivia/comment-preserver.js.map +1 -0
  266. package/lib/langium/trivia/document-ending-preserver.d.ts +51 -0
  267. package/lib/langium/trivia/document-ending-preserver.d.ts.map +1 -0
  268. package/lib/langium/trivia/document-ending-preserver.js +62 -0
  269. package/lib/langium/trivia/document-ending-preserver.js.map +1 -0
  270. package/lib/langium/trivia/index.d.ts +14 -0
  271. package/lib/langium/trivia/index.d.ts.map +1 -0
  272. package/lib/langium/trivia/index.js +14 -0
  273. package/lib/langium/trivia/index.js.map +1 -0
  274. package/lib/langium/trivia/trivia-contribution.d.ts +37 -0
  275. package/lib/langium/trivia/trivia-contribution.d.ts.map +1 -0
  276. package/lib/langium/trivia/trivia-contribution.js +10 -0
  277. package/lib/langium/trivia/trivia-contribution.js.map +1 -0
  278. package/lib/langium/trivia/trivia-preserver.d.ts +52 -0
  279. package/lib/langium/trivia/trivia-preserver.d.ts.map +1 -0
  280. package/lib/langium/trivia/trivia-preserver.js +10 -0
  281. package/lib/langium/trivia/trivia-preserver.js.map +1 -0
  282. package/lib/langium/trivia/trivia-service.d.ts +70 -0
  283. package/lib/langium/trivia/trivia-service.d.ts.map +1 -0
  284. package/lib/langium/trivia/trivia-service.js +56 -0
  285. package/lib/langium/trivia/trivia-service.js.map +1 -0
  286. package/lib/langium/update-rewrite/normalize-empty-strings.d.ts.map +1 -1
  287. package/lib/langium/update-rewrite/update-rewrite-service.d.ts +1 -1
  288. package/lib/langium/update-rewrite/update-rewrite-service.d.ts.map +1 -1
  289. package/lib/langium/update-rewrite/update-rewrite-service.js.map +1 -1
  290. package/lib/langium/update-rewrite/update-rewrite.d.ts +1 -1
  291. package/lib/langium/validation/document-validator.d.ts +280 -9
  292. package/lib/langium/validation/document-validator.d.ts.map +1 -1
  293. package/lib/langium/validation/document-validator.js +453 -8
  294. package/lib/langium/validation/document-validator.js.map +1 -1
  295. package/lib/langium/validation/validation-contribution-collector.d.ts +9 -1
  296. package/lib/langium/validation/validation-contribution-collector.d.ts.map +1 -1
  297. package/lib/langium/validation/validation-contribution-collector.js +1 -1
  298. package/lib/langium/validation/validation-contribution-collector.js.map +1 -1
  299. package/lib/langium/workspace/document-uri-policy.d.ts +24 -15
  300. package/lib/langium/workspace/document-uri-policy.d.ts.map +1 -1
  301. package/lib/langium/workspace/document-uri-policy.js +22 -13
  302. package/lib/langium/workspace/document-uri-policy.js.map +1 -1
  303. package/lib/langium/workspace/file-not-found.d.ts +23 -0
  304. package/lib/langium/workspace/file-not-found.d.ts.map +1 -0
  305. package/lib/langium/workspace/file-not-found.js +31 -0
  306. package/lib/langium/workspace/file-not-found.js.map +1 -0
  307. package/lib/langium/workspace/file-system-provider.d.ts +165 -8
  308. package/lib/langium/workspace/file-system-provider.d.ts.map +1 -1
  309. package/lib/langium/workspace/file-system-provider.js +111 -13
  310. package/lib/langium/workspace/file-system-provider.js.map +1 -1
  311. package/lib/langium/workspace/hydranium-langium-document-factory.d.ts +31 -1
  312. package/lib/langium/workspace/hydranium-langium-document-factory.d.ts.map +1 -1
  313. package/lib/langium/workspace/hydranium-langium-document-factory.js +54 -0
  314. package/lib/langium/workspace/hydranium-langium-document-factory.js.map +1 -1
  315. package/lib/langium/workspace/hydranium-workspace-lock.d.ts +43 -1
  316. package/lib/langium/workspace/hydranium-workspace-lock.d.ts.map +1 -1
  317. package/lib/langium/workspace/hydranium-workspace-lock.js +58 -1
  318. package/lib/langium/workspace/hydranium-workspace-lock.js.map +1 -1
  319. package/lib/langium/workspace/hydranium-workspace-manager.d.ts +124 -22
  320. package/lib/langium/workspace/hydranium-workspace-manager.d.ts.map +1 -1
  321. package/lib/langium/workspace/hydranium-workspace-manager.js +212 -31
  322. package/lib/langium/workspace/hydranium-workspace-manager.js.map +1 -1
  323. package/lib/langium/workspace/in-memory-file-system-provider.d.ts +26 -9
  324. package/lib/langium/workspace/in-memory-file-system-provider.d.ts.map +1 -1
  325. package/lib/langium/workspace/in-memory-file-system-provider.js +45 -22
  326. package/lib/langium/workspace/in-memory-file-system-provider.js.map +1 -1
  327. package/lib/langium/workspace/index-manager.d.ts.map +1 -1
  328. package/lib/langium/workspace/index-manager.js.map +1 -1
  329. package/lib/langium/workspace/index.d.ts +1 -0
  330. package/lib/langium/workspace/index.d.ts.map +1 -1
  331. package/lib/langium/workspace/index.js +1 -0
  332. package/lib/langium/workspace/index.js.map +1 -1
  333. package/lib/langium/workspace/initialize-workspace.d.ts +31 -2
  334. package/lib/langium/workspace/initialize-workspace.d.ts.map +1 -1
  335. package/lib/langium/workspace/initialize-workspace.js +13 -5
  336. package/lib/langium/workspace/initialize-workspace.js.map +1 -1
  337. package/lib/langium/workspace/langium-documents.d.ts +7 -0
  338. package/lib/langium/workspace/langium-documents.d.ts.map +1 -1
  339. package/lib/langium/workspace/langium-documents.js +18 -1
  340. package/lib/langium/workspace/langium-documents.js.map +1 -1
  341. package/lib/langium/workspace/persistent-file-system-provider.d.ts +15 -9
  342. package/lib/langium/workspace/persistent-file-system-provider.d.ts.map +1 -1
  343. package/lib/langium/workspace/persistent-file-system-provider.js +25 -13
  344. package/lib/langium/workspace/persistent-file-system-provider.js.map +1 -1
  345. package/lib/langium/workspace/self-save-registry.d.ts +84 -0
  346. package/lib/langium/workspace/self-save-registry.d.ts.map +1 -0
  347. package/lib/{documents → langium/workspace}/self-save-registry.js +33 -22
  348. package/lib/langium/workspace/self-save-registry.js.map +1 -0
  349. package/lib/langium/workspace/virtual-document.d.ts +55 -21
  350. package/lib/langium/workspace/virtual-document.d.ts.map +1 -1
  351. package/lib/langium/workspace/virtual-document.js +87 -24
  352. package/lib/langium/workspace/virtual-document.js.map +1 -1
  353. package/lib/langium/workspace/write-lock-scope.d.ts +22 -10
  354. package/lib/langium/workspace/write-lock-scope.d.ts.map +1 -1
  355. package/lib/langium/workspace/write-lock-scope.js +15 -5
  356. package/lib/langium/workspace/write-lock-scope.js.map +1 -1
  357. package/lib/launcher/integrated-server.d.ts +3 -1
  358. package/lib/launcher/integrated-server.d.ts.map +1 -1
  359. package/lib/locale/index.d.ts +10 -0
  360. package/lib/locale/index.d.ts.map +1 -0
  361. package/lib/locale/index.js +10 -0
  362. package/lib/locale/index.js.map +1 -0
  363. package/lib/locale/server-locale.d.ts +73 -0
  364. package/lib/locale/server-locale.d.ts.map +1 -0
  365. package/lib/locale/server-locale.js +61 -0
  366. package/lib/locale/server-locale.js.map +1 -0
  367. package/lib/lsp/completion/hydranium-completion-provider.d.ts +44 -2
  368. package/lib/lsp/completion/hydranium-completion-provider.d.ts.map +1 -1
  369. package/lib/lsp/completion/hydranium-completion-provider.js +68 -0
  370. package/lib/lsp/completion/hydranium-completion-provider.js.map +1 -1
  371. package/lib/lsp/connection-features.d.ts +23 -0
  372. package/lib/lsp/connection-features.d.ts.map +1 -0
  373. package/lib/lsp/connection-features.js +60 -0
  374. package/lib/lsp/connection-features.js.map +1 -0
  375. package/lib/lsp/diagnostics-connection.d.ts +27 -0
  376. package/lib/lsp/diagnostics-connection.d.ts.map +1 -0
  377. package/lib/lsp/diagnostics-connection.js +53 -0
  378. package/lib/lsp/diagnostics-connection.js.map +1 -0
  379. package/lib/lsp/hydranium-document-update-handler.d.ts +126 -82
  380. package/lib/lsp/hydranium-document-update-handler.d.ts.map +1 -1
  381. package/lib/lsp/hydranium-document-update-handler.js +235 -102
  382. package/lib/lsp/hydranium-document-update-handler.js.map +1 -1
  383. package/lib/lsp/index.d.ts +3 -1
  384. package/lib/lsp/index.d.ts.map +1 -1
  385. package/lib/lsp/index.js +3 -1
  386. package/lib/lsp/index.js.map +1 -1
  387. package/lib/lsp/lsp-latency.d.ts +39 -0
  388. package/lib/lsp/lsp-latency.d.ts.map +1 -0
  389. package/lib/lsp/lsp-latency.js +58 -0
  390. package/lib/lsp/lsp-latency.js.map +1 -0
  391. package/lib/lsp/semantic-token-provider.d.ts +34 -1
  392. package/lib/lsp/semantic-token-provider.d.ts.map +1 -1
  393. package/lib/lsp/semantic-token-provider.js +55 -8
  394. package/lib/lsp/semantic-token-provider.js.map +1 -1
  395. package/lib/lsp/shared-module.d.ts +4 -8
  396. package/lib/lsp/shared-module.d.ts.map +1 -1
  397. package/lib/lsp/shared-module.js.map +1 -1
  398. package/lib/lsp/start-language-server.d.ts +8 -7
  399. package/lib/lsp/start-language-server.d.ts.map +1 -1
  400. package/lib/lsp/start-language-server.js +13 -7
  401. package/lib/lsp/start-language-server.js.map +1 -1
  402. package/lib/messages/carriers.d.ts +18 -12
  403. package/lib/messages/carriers.d.ts.map +1 -1
  404. package/lib/messages/carriers.js +22 -13
  405. package/lib/messages/carriers.js.map +1 -1
  406. package/lib/messages/index.d.ts +4 -1
  407. package/lib/messages/index.d.ts.map +1 -1
  408. package/lib/messages/index.js +4 -1
  409. package/lib/messages/index.js.map +1 -1
  410. package/lib/messages/renderer.d.ts +142 -0
  411. package/lib/messages/renderer.d.ts.map +1 -0
  412. package/lib/messages/renderer.js +165 -0
  413. package/lib/messages/renderer.js.map +1 -0
  414. package/lib/node/event-loop-monitor.d.ts.map +1 -1
  415. package/lib/node/event-loop-monitor.js +2 -1
  416. package/lib/node/event-loop-monitor.js.map +1 -1
  417. package/lib/node/heap-ceiling.d.ts +61 -0
  418. package/lib/node/heap-ceiling.d.ts.map +1 -0
  419. package/lib/node/heap-ceiling.js +72 -0
  420. package/lib/node/heap-ceiling.js.map +1 -0
  421. package/lib/node/index.d.ts +1 -1
  422. package/lib/node/index.d.ts.map +1 -1
  423. package/lib/node/index.js +5 -1
  424. package/lib/node/index.js.map +1 -1
  425. package/lib/node/latency-from-env.d.ts +1 -1
  426. package/lib/node/latency-from-env.js +1 -1
  427. package/lib/node/lint-grammar.js.map +1 -1
  428. package/lib/node/log-preamble-node.d.ts +5 -3
  429. package/lib/node/log-preamble-node.d.ts.map +1 -1
  430. package/lib/node/log-preamble-node.js +13 -10
  431. package/lib/node/log-preamble-node.js.map +1 -1
  432. package/lib/node/measure-memory.d.ts.map +1 -1
  433. package/lib/node/measure-memory.js +5 -4
  434. package/lib/node/measure-memory.js.map +1 -1
  435. package/lib/node/memory-monitor.d.ts +2 -2
  436. package/lib/node/memory-monitor.d.ts.map +1 -1
  437. package/lib/node/memory-monitor.js +9 -10
  438. package/lib/node/memory-monitor.js.map +1 -1
  439. package/lib/node/node-file-system-provider.d.ts +67 -9
  440. package/lib/node/node-file-system-provider.d.ts.map +1 -1
  441. package/lib/node/node-file-system-provider.js +198 -53
  442. package/lib/node/node-file-system-provider.js.map +1 -1
  443. package/lib/node/profile-capture.d.ts +12 -4
  444. package/lib/node/profile-capture.d.ts.map +1 -1
  445. package/lib/node/profile-capture.js +8 -6
  446. package/lib/node/profile-capture.js.map +1 -1
  447. package/lib/node/profile-digest.js.map +1 -1
  448. package/lib/node/profiling-run.d.ts +13 -3
  449. package/lib/node/profiling-run.d.ts.map +1 -1
  450. package/lib/node/profiling-run.js +17 -8
  451. package/lib/node/profiling-run.js.map +1 -1
  452. package/lib/node/rename-over-open-readers.d.ts +61 -0
  453. package/lib/node/rename-over-open-readers.d.ts.map +1 -0
  454. package/lib/node/rename-over-open-readers.js +80 -0
  455. package/lib/node/rename-over-open-readers.js.map +1 -0
  456. package/lib/node/server-diagnostics.js +1 -1
  457. package/lib/node/server-diagnostics.js.map +1 -1
  458. package/lib/node/server-state-snapshot.js +4 -4
  459. package/lib/node/server-state-snapshot.js.map +1 -1
  460. package/lib/node/socket-launcher.d.ts +20 -4
  461. package/lib/node/socket-launcher.d.ts.map +1 -1
  462. package/lib/node/socket-launcher.js +8 -7
  463. package/lib/node/socket-launcher.js.map +1 -1
  464. package/lib/node/startup-cpu-profile.d.ts +29 -0
  465. package/lib/node/startup-cpu-profile.d.ts.map +1 -0
  466. package/lib/node/startup-cpu-profile.js +91 -0
  467. package/lib/node/startup-cpu-profile.js.map +1 -0
  468. package/lib/node/stdio-launcher.d.ts +10 -10
  469. package/lib/node/stdio-launcher.d.ts.map +1 -1
  470. package/lib/node/stdio-launcher.js +17 -9
  471. package/lib/node/stdio-launcher.js.map +1 -1
  472. package/lib/testing/document-uri-policy-conformance.js +1 -1
  473. package/lib/testing/document-uri-policy-conformance.js.map +1 -1
  474. package/lib/testing/fake-description.js.map +1 -1
  475. package/lib/testing/fake-document.d.ts +16 -4
  476. package/lib/testing/fake-document.d.ts.map +1 -1
  477. package/lib/testing/fake-document.js +18 -3
  478. package/lib/testing/fake-document.js.map +1 -1
  479. package/lib/testing/index.d.ts +1 -1
  480. package/lib/testing/index.d.ts.map +1 -1
  481. package/lib/testing/index.js +2 -1
  482. package/lib/testing/index.js.map +1 -1
  483. package/lib/testing/langium-test-helpers.d.ts.map +1 -1
  484. package/lib/testing/langium-test-helpers.js +1 -0
  485. package/lib/testing/langium-test-helpers.js.map +1 -1
  486. package/lib/testing/make-noop-language-services.js.map +1 -1
  487. package/lib/testing/make-noop-shared-services.d.ts +14 -0
  488. package/lib/testing/make-noop-shared-services.d.ts.map +1 -1
  489. package/lib/testing/make-noop-shared-services.js +28 -2
  490. package/lib/testing/make-noop-shared-services.js.map +1 -1
  491. package/lib/testing/make-test-services.d.ts +72 -14
  492. package/lib/testing/make-test-services.d.ts.map +1 -1
  493. package/lib/testing/make-test-services.js +42 -10
  494. package/lib/testing/make-test-services.js.map +1 -1
  495. package/lib/testing/make-test-tracer.d.ts +12 -0
  496. package/lib/testing/make-test-tracer.d.ts.map +1 -1
  497. package/lib/testing/make-test-tracer.js +13 -0
  498. package/lib/testing/make-test-tracer.js.map +1 -1
  499. package/lib/testing/node/applied-edit-capture.d.ts +29 -0
  500. package/lib/testing/node/applied-edit-capture.d.ts.map +1 -0
  501. package/lib/testing/node/applied-edit-capture.js +117 -0
  502. package/lib/testing/node/applied-edit-capture.js.map +1 -0
  503. package/lib/testing/node/golden-corpus.js.map +1 -1
  504. package/lib/testing/node/index.d.ts +1 -0
  505. package/lib/testing/node/index.d.ts.map +1 -1
  506. package/lib/testing/node/index.js +1 -0
  507. package/lib/testing/node/index.js.map +1 -1
  508. package/lib/testing/node/lsp-harness.d.ts.map +1 -1
  509. package/lib/testing/node/lsp-harness.js +2 -0
  510. package/lib/testing/node/lsp-harness.js.map +1 -1
  511. package/lib/testing/node/lsp-server-connection.d.ts +21 -6
  512. package/lib/testing/node/lsp-server-connection.d.ts.map +1 -1
  513. package/lib/testing/node/lsp-server-connection.js +49 -106
  514. package/lib/testing/node/lsp-server-connection.js.map +1 -1
  515. package/lib/testing/node/scratch-workspace.d.ts.map +1 -1
  516. package/lib/testing/node/scratch-workspace.js +10 -5
  517. package/lib/testing/node/scratch-workspace.js.map +1 -1
  518. package/lib/testing/node/spawned-server.d.ts +30 -1
  519. package/lib/testing/node/spawned-server.d.ts.map +1 -1
  520. package/lib/testing/node/spawned-server.js +39 -2
  521. package/lib/testing/node/spawned-server.js.map +1 -1
  522. package/lib/testing/node/unhandled-rejections.d.ts +20 -0
  523. package/lib/testing/node/unhandled-rejections.d.ts.map +1 -0
  524. package/lib/testing/node/unhandled-rejections.js +32 -0
  525. package/lib/testing/node/unhandled-rejections.js.map +1 -0
  526. package/lib/testing/playwright/browser-capture-bridge.js.map +1 -1
  527. package/lib/testing/playwright/e2e-profiling.js.map +1 -1
  528. package/lib/testing/playwright/flaky-network-proxy.d.ts +76 -0
  529. package/lib/testing/playwright/flaky-network-proxy.d.ts.map +1 -0
  530. package/lib/testing/playwright/flaky-network-proxy.js +164 -0
  531. package/lib/testing/playwright/flaky-network-proxy.js.map +1 -0
  532. package/lib/testing/playwright/index.d.ts +1 -0
  533. package/lib/testing/playwright/index.d.ts.map +1 -1
  534. package/lib/testing/playwright/index.js +1 -0
  535. package/lib/testing/playwright/index.js.map +1 -1
  536. package/lib/testing/playwright/server-log-capture.d.ts +46 -16
  537. package/lib/testing/playwright/server-log-capture.d.ts.map +1 -1
  538. package/lib/testing/playwright/server-log-capture.js +111 -40
  539. package/lib/testing/playwright/server-log-capture.js.map +1 -1
  540. package/lib/testing/playwright/server-log-fixture.d.ts +16 -0
  541. package/lib/testing/playwright/server-log-fixture.d.ts.map +1 -1
  542. package/lib/testing/playwright/server-log-fixture.js +25 -6
  543. package/lib/testing/playwright/server-log-fixture.js.map +1 -1
  544. package/lib/testing/playwright/server-log-region.d.ts +15 -0
  545. package/lib/testing/playwright/server-log-region.d.ts.map +1 -0
  546. package/lib/testing/playwright/server-log-region.js +30 -0
  547. package/lib/testing/playwright/server-log-region.js.map +1 -0
  548. package/lib/testing/playwright/server-log-rename-reporter.d.ts.map +1 -1
  549. package/lib/testing/playwright/server-log-rename-reporter.js +4 -3
  550. package/lib/testing/playwright/server-log-rename-reporter.js.map +1 -1
  551. package/lib/testing/run-update-pipeline.d.ts +8 -5
  552. package/lib/testing/run-update-pipeline.d.ts.map +1 -1
  553. package/lib/testing/run-update-pipeline.js.map +1 -1
  554. package/lib/testing/stub-ast-document-manager.d.ts +11 -52
  555. package/lib/testing/stub-ast-document-manager.d.ts.map +1 -1
  556. package/lib/testing/stub-ast-document-manager.js +31 -62
  557. package/lib/testing/stub-ast-document-manager.js.map +1 -1
  558. package/lib/testing/stub-document-builder.d.ts +33 -11
  559. package/lib/testing/stub-document-builder.d.ts.map +1 -1
  560. package/lib/testing/stub-document-builder.js +103 -5
  561. package/lib/testing/stub-document-builder.js.map +1 -1
  562. package/lib/testing/stub-hydranium-text-documents.d.ts +33 -10
  563. package/lib/testing/stub-hydranium-text-documents.d.ts.map +1 -1
  564. package/lib/testing/stub-hydranium-text-documents.js +132 -16
  565. package/lib/testing/stub-hydranium-text-documents.js.map +1 -1
  566. package/lib/testing/stub-index-manager.js.map +1 -1
  567. package/lib/testing/stub-langium-documents.d.ts +3 -2
  568. package/lib/testing/stub-langium-documents.d.ts.map +1 -1
  569. package/lib/testing/stub-langium-documents.js.map +1 -1
  570. package/lib/testing/stub-model-service.d.ts +9 -8
  571. package/lib/testing/stub-model-service.d.ts.map +1 -1
  572. package/lib/testing/stub-model-service.js +6 -6
  573. package/lib/testing/stub-model-service.js.map +1 -1
  574. package/lib/testing/stub-project-manager.js.map +1 -1
  575. package/lib/testing/stub-self-save-registry.d.ts +1 -1
  576. package/lib/testing/stub-self-save-registry.d.ts.map +1 -1
  577. package/lib/testing/stub-service-registry.d.ts +1 -1
  578. package/lib/testing/stub-service-registry.js.map +1 -1
  579. package/lib/testing/stub-writable-file-system.d.ts +1 -1
  580. package/lib/testing/stub-writable-file-system.d.ts.map +1 -1
  581. package/lib/testing/stub-writable-file-system.js +2 -1
  582. package/lib/testing/stub-writable-file-system.js.map +1 -1
  583. package/lib/util/connection-liveness.d.ts +19 -6
  584. package/lib/util/connection-liveness.d.ts.map +1 -1
  585. package/lib/util/connection-liveness.js +61 -15
  586. package/lib/util/connection-liveness.js.map +1 -1
  587. package/lib/util/environment.d.ts.map +1 -1
  588. package/lib/util/environment.js.map +1 -1
  589. package/lib/util/registry.d.ts.map +1 -1
  590. package/package.json +38 -57
  591. package/src/browser/index.ts +14 -0
  592. package/src/browser/indexeddb-file-system-store.ts +192 -0
  593. package/src/documents/ast-document-manager.ts +467 -233
  594. package/src/documents/client-ids.ts +5 -22
  595. package/src/documents/client-session-errors.ts +24 -0
  596. package/src/documents/client-session-registry.ts +262 -0
  597. package/src/documents/dirty-state-tracker.ts +167 -0
  598. package/src/documents/document-release-handler.ts +404 -0
  599. package/src/documents/document-release-scheduler.ts +121 -0
  600. package/src/documents/file-system-task-queue.ts +74 -0
  601. package/src/documents/hydranium-text-documents.ts +976 -595
  602. package/src/documents/index.ts +10 -2
  603. package/src/documents/language-client-shadow.ts +452 -0
  604. package/src/documents/model-ledger.ts +66 -0
  605. package/src/documents/text-ledger.ts +112 -0
  606. package/src/documents/version-sync-service.ts +275 -0
  607. package/src/index.ts +8 -0
  608. package/src/langium/ast-extension/ast-extension-service.ts +77 -41
  609. package/src/langium/ast-extension/ast-node-builder.ts +66 -22
  610. package/src/langium/bootstrap.ts +95 -52
  611. package/src/langium/build-phase-pass/build-phase-pass-service.ts +29 -19
  612. package/src/langium/build-phase-pass/build-phase-pass.ts +37 -8
  613. package/src/langium/composite-ast-reflection.ts +112 -0
  614. package/src/langium/config/configuration-provider.ts +119 -0
  615. package/src/langium/config/index.ts +1 -0
  616. package/src/langium/diagnostics/hydranium-langium-profiler.ts +15 -39
  617. package/src/langium/diagnostics/log-preamble.ts +1 -1
  618. package/src/langium/diagnostics/logger.ts +38 -11
  619. package/src/langium/diagnostics/lsp-logger.ts +61 -16
  620. package/src/langium/document-builder/build-pipeline-integration.ts +46 -32
  621. package/src/langium/document-builder/build-session.ts +4 -3
  622. package/src/langium/document-builder/document-builder.ts +616 -73
  623. package/src/langium/integration-services.ts +59 -28
  624. package/src/langium/integrity/integrity-rule.ts +16 -8
  625. package/src/langium/integrity/integrity-service.ts +296 -69
  626. package/src/langium/keys/containment.ts +87 -0
  627. package/src/langium/keys/index.ts +1 -0
  628. package/src/langium/keys/name-based-key-provider.ts +4 -0
  629. package/src/langium/language-module.ts +49 -8
  630. package/src/langium/model-service/client-session.ts +704 -0
  631. package/src/langium/model-service/index.ts +2 -0
  632. package/src/langium/model-service/model-events.ts +80 -0
  633. package/src/langium/model-service/model-service.ts +908 -485
  634. package/src/langium/module.ts +212 -67
  635. package/src/langium/naming/name-provider.ts +44 -8
  636. package/src/langium/naming/name-separator-validation.ts +25 -3
  637. package/src/langium/project/abstract-project-manager.ts +13 -5
  638. package/src/langium/project/project-change-event.ts +2 -2
  639. package/src/langium/residency/cst-residency-service.ts +51 -17
  640. package/src/langium/scope/fallback-scope.ts +38 -0
  641. package/src/langium/scope/hydranium-scope-computation.ts +45 -44
  642. package/src/langium/scope/hydranium-scope-provider.ts +64 -27
  643. package/src/langium/scope/index.ts +1 -0
  644. package/src/langium/scope/reference-candidate-provider.ts +6 -5
  645. package/src/langium/scope/scope-extension-service.ts +74 -59
  646. package/src/langium/scope/scoped-ast-node-description.ts +1 -3
  647. package/src/langium/serialization/abstract-serializer.ts +57 -41
  648. package/src/langium/serialization/json-serializer.ts +14 -3
  649. package/src/langium/serialization/serializer.ts +1 -1
  650. package/src/langium/serialization/yaml-serializer.ts +4 -0
  651. package/src/langium/service-registry.ts +41 -2
  652. package/src/langium/shared-services.ts +26 -6
  653. package/src/langium/single-langium-copy.ts +42 -0
  654. package/src/langium/transfer/transfer-encoder.ts +102 -45
  655. package/src/langium/trivia/comment-preserver.ts +1100 -0
  656. package/src/langium/trivia/document-ending-preserver.ts +71 -0
  657. package/src/langium/trivia/index.ts +14 -0
  658. package/src/langium/trivia/trivia-contribution.ts +39 -0
  659. package/src/langium/trivia/trivia-preserver.ts +56 -0
  660. package/src/langium/trivia/trivia-service.ts +99 -0
  661. package/src/langium/update-rewrite/update-rewrite-service.ts +1 -1
  662. package/src/langium/update-rewrite/update-rewrite.ts +1 -1
  663. package/src/langium/validation/document-validator.ts +528 -13
  664. package/src/langium/validation/validation-contribution-collector.ts +10 -1
  665. package/src/langium/workspace/document-uri-policy.ts +32 -18
  666. package/src/langium/workspace/file-not-found.ts +35 -0
  667. package/src/langium/workspace/file-system-provider.ts +253 -16
  668. package/src/langium/workspace/hydranium-langium-document-factory.ts +83 -0
  669. package/src/langium/workspace/hydranium-workspace-lock.ts +86 -2
  670. package/src/langium/workspace/hydranium-workspace-manager.ts +241 -35
  671. package/src/langium/workspace/in-memory-file-system-provider.ts +54 -23
  672. package/src/langium/workspace/index.ts +1 -0
  673. package/src/langium/workspace/initialize-workspace.ts +43 -5
  674. package/src/langium/workspace/langium-documents.ts +19 -1
  675. package/src/langium/workspace/persistent-file-system-provider.ts +26 -14
  676. package/src/langium/workspace/self-save-registry.ts +118 -0
  677. package/src/langium/workspace/virtual-document.ts +106 -25
  678. package/src/langium/workspace/write-lock-scope.ts +27 -12
  679. package/src/launcher/integrated-server.ts +3 -1
  680. package/src/locale/index.ts +10 -0
  681. package/src/locale/server-locale.ts +86 -0
  682. package/src/lsp/completion/hydranium-completion-provider.ts +82 -2
  683. package/src/lsp/connection-features.ts +67 -0
  684. package/src/lsp/diagnostics-connection.ts +56 -0
  685. package/src/lsp/hydranium-document-update-handler.ts +285 -111
  686. package/src/lsp/index.ts +3 -1
  687. package/src/lsp/lsp-latency.ts +62 -0
  688. package/src/lsp/semantic-token-provider.ts +74 -7
  689. package/src/lsp/shared-module.ts +4 -8
  690. package/src/lsp/start-language-server.ts +13 -7
  691. package/src/messages/carriers.ts +23 -15
  692. package/src/messages/index.ts +13 -1
  693. package/src/messages/renderer.ts +212 -0
  694. package/src/node/event-loop-monitor.ts +2 -1
  695. package/src/node/heap-ceiling.ts +108 -0
  696. package/src/node/index.ts +5 -1
  697. package/src/node/latency-from-env.ts +1 -1
  698. package/src/node/log-preamble-node.ts +20 -10
  699. package/src/node/measure-memory.ts +5 -4
  700. package/src/node/memory-monitor.ts +10 -10
  701. package/src/node/node-file-system-provider.ts +214 -57
  702. package/src/node/profile-capture.ts +16 -15
  703. package/src/node/profiling-run.ts +30 -8
  704. package/src/node/rename-over-open-readers.ts +94 -0
  705. package/src/node/server-diagnostics.ts +1 -1
  706. package/src/node/server-state-snapshot.ts +5 -5
  707. package/src/node/socket-launcher.ts +27 -11
  708. package/src/node/startup-cpu-profile.ts +94 -0
  709. package/src/node/stdio-launcher.ts +22 -14
  710. package/src/testing/document-uri-policy-conformance.ts +1 -1
  711. package/src/testing/fake-document.ts +24 -5
  712. package/src/testing/index.ts +2 -1
  713. package/src/testing/langium-test-helpers.ts +1 -0
  714. package/src/testing/make-noop-shared-services.ts +50 -2
  715. package/src/testing/make-test-services.ts +125 -31
  716. package/src/testing/make-test-tracer.ts +26 -0
  717. package/src/testing/node/applied-edit-capture.ts +141 -0
  718. package/src/testing/node/index.ts +1 -0
  719. package/src/testing/node/lsp-harness.ts +2 -0
  720. package/src/testing/node/lsp-server-connection.ts +83 -119
  721. package/src/testing/node/scratch-workspace.ts +10 -5
  722. package/src/testing/node/spawned-server.ts +57 -3
  723. package/src/testing/node/unhandled-rejections.ts +31 -0
  724. package/src/testing/parse-semantic-root.ts +1 -1
  725. package/src/testing/playwright/flaky-network-proxy.ts +240 -0
  726. package/src/testing/playwright/index.ts +1 -0
  727. package/src/testing/playwright/server-log-capture.ts +137 -47
  728. package/src/testing/playwright/server-log-fixture.ts +46 -6
  729. package/src/testing/playwright/server-log-region.ts +32 -0
  730. package/src/testing/playwright/server-log-rename-reporter.ts +4 -3
  731. package/src/testing/run-update-pipeline.ts +8 -5
  732. package/src/testing/stub-ast-document-manager.ts +47 -128
  733. package/src/testing/stub-document-builder.ts +133 -18
  734. package/src/testing/stub-hydranium-text-documents.ts +184 -27
  735. package/src/testing/stub-langium-documents.ts +3 -2
  736. package/src/testing/stub-model-service.ts +11 -10
  737. package/src/testing/stub-self-save-registry.ts +1 -1
  738. package/src/testing/stub-service-registry.ts +1 -1
  739. package/src/testing/stub-writable-file-system.ts +3 -2
  740. package/src/util/connection-liveness.ts +67 -15
  741. package/src/util/environment.ts +9 -1
  742. package/lib/documents/language-client-text-shadow.d.ts +0 -101
  743. package/lib/documents/language-client-text-shadow.d.ts.map +0 -1
  744. package/lib/documents/language-client-text-shadow.js +0 -156
  745. package/lib/documents/language-client-text-shadow.js.map +0 -1
  746. package/lib/documents/self-save-registry.d.ts +0 -55
  747. package/lib/documents/self-save-registry.d.ts.map +0 -1
  748. package/lib/documents/self-save-registry.js.map +0 -1
  749. package/lib/lsp/instrument-connection.d.ts +0 -36
  750. package/lib/lsp/instrument-connection.d.ts.map +0 -1
  751. package/lib/lsp/instrument-connection.js +0 -62
  752. package/lib/lsp/instrument-connection.js.map +0 -1
  753. package/lib/node/process-memory.d.ts +0 -66
  754. package/lib/node/process-memory.d.ts.map +0 -1
  755. package/lib/node/process-memory.js +0 -252
  756. package/lib/node/process-memory.js.map +0 -1
  757. package/src/documents/language-client-text-shadow.ts +0 -175
  758. package/src/documents/self-save-registry.ts +0 -81
  759. package/src/lsp/instrument-connection.ts +0 -66
  760. package/src/node/process-memory.ts +0 -299
@@ -1 +1 @@
1
- {"version":3,"file":"index-manager.d.ts","sourceRoot":"","sources":["../../../src/langium/workspace/index-manager.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,KAAK,OAAO,EAAE,KAAK,kBAAkB,EAAE,mBAAmB,EAAE,KAAK,eAAe,EAAE,KAAK,GAAG,EAAE,MAAM,oBAAoB,CAAC;AAChI,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AACxE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AACpE,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,uBAAuB,CAAC;AAEzE;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,qBAAa,qBAAsB,SAAQ,mBAAmB;IAC3D,uGAAuG;IACvG,SAAS,CAAC,cAAc,oCAA2C;IAEnE,SAAS,CAAC,QAAQ,CAAC,cAAc,EAAE,2BAA2B,CAAC;IAC/D,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;gBAEtB,QAAQ,EAAE,2BAA2B,EAAE,OAAO,GAAE,cAAmB;IAM/E;;;;;;OAMG;IACH,SAAS,KAAK,cAAc,IAAI,cAAc,CAE7C;IAMc,aAAa,CAAC,QAAQ,EAAE,eAAe,EAAE,WAAW,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;IAO9F,aAAa,CAAC,GAAG,EAAE,GAAG,GAAG,IAAI;IAKtC;;;;OAIG;IACH,SAAS,CAAC,wBAAwB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAmBxD;;;;OAIG;IACH,SAAS,CAAC,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAmBnD;;;;;;;;;;;OAWG;IACH,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,kBAAkB,EAAE;IAYlG;;;;;;;;;;;;;;;;;OAiBG;IACH,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,kBAAkB,GAAG,SAAS;IAIlG;;;;;;;;;OASG;IACH,SAAS,CAAC,YAAY,CAAC,WAAW,EAAE,GAAG,GAAG,MAAM,GAAG,SAAS;IAI5D,yGAAyG;IACzG,cAAc,CAAC,WAAW,CAAC,EAAE,kBAAkB,GAAG,OAAO,GAAG,SAAS;IAYrE,oEAAoE;IACpE,oBAAoB,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS;IAI3F;;;;;;;;;;;OAWG;IACH,oBAAoB,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,kBAAkB,EAAE;IAwB5E;;;;;;OAMG;IACH,sBAAsB,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,GAAG,SAAS;IAQrD;;;OAGG;IACH,SAAS,CAAC,gBAAgB,CAAC,QAAQ,EAAE,eAAe,GAAG,OAAO,GAAG,SAAS;CAG5E"}
1
+ {"version":3,"file":"index-manager.d.ts","sourceRoot":"","sources":["../../../src/langium/workspace/index-manager.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,KAAK,OAAO,EAAE,KAAK,kBAAkB,EAAE,mBAAmB,EAAE,KAAK,eAAe,EAAE,KAAK,GAAG,EAAE,MAAM,oBAAoB,CAAC;AAChI,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AACxE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AACpE,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,uBAAuB,CAAC;AAEzE;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,qBAAa,qBAAsB,SAAQ,mBAAmB;IAC3D,uGAAuG;IACvG,SAAS,CAAC,cAAc,oCAA2C;IAEnE,SAAS,CAAC,QAAQ,CAAC,cAAc,EAAE,2BAA2B,CAAC;IAC/D,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IAElC,YAAY,QAAQ,EAAE,2BAA2B,EAAE,OAAO,GAAE,cAAmB,EAI9E;IAED;;;;;;OAMG;IACH,SAAS,KAAK,cAAc,IAAI,cAAc,CAE7C;IAMc,aAAa,CAAC,QAAQ,EAAE,eAAe,EAAE,WAAW,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CAKtG;IAEQ,aAAa,CAAC,GAAG,EAAE,GAAG,GAAG,IAAI,CAGrC;IAED;;;;OAIG;IACH,SAAS,CAAC,wBAAwB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAiBvD;IAED;;;;OAIG;IACH,SAAS,CAAC,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAalD;IAMD;;;;;;;;;;;OAWG;IACH,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,kBAAkB,EAAE,CAUjG;IAED;;;;;;;;;;;;;;;;;OAiBG;IACH,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,kBAAkB,GAAG,SAAS,CAEjG;IAED;;;;;;;;;OASG;IACH,SAAS,CAAC,YAAY,CAAC,WAAW,EAAE,GAAG,GAAG,MAAM,GAAG,SAAS,CAE3D;IAED,yGAAyG;IACzG,cAAc,CAAC,WAAW,CAAC,EAAE,kBAAkB,GAAG,OAAO,GAAG,SAAS,CAUpE;IAED,oEAAoE;IACpE,oBAAoB,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS,CAE1F;IAED;;;;;;;;;;;OAWG;IACH,oBAAoB,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,kBAAkB,EAAE,CAsB3E;IAED;;;;;;OAMG;IACH,sBAAsB,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,GAAG,SAAS,CAMpD;IAED;;;OAGG;IACH,SAAS,CAAC,gBAAgB,CAAC,QAAQ,EAAE,eAAe,GAAG,OAAO,GAAG,SAAS,CAEzE;CACH"}
@@ -1 +1 @@
1
- {"version":3,"file":"index-manager.js","sourceRoot":"","sources":["../../../src/langium/workspace/index-manager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index-manager.js","sourceRoot":"","sources":["../../../src/langium/workspace/index-manager.ts"],"names":[],"mappings":"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"}
@@ -10,6 +10,7 @@ export * from './document-uri-policy.js';
10
10
  export * from './file-system-provider.js';
11
11
  export * from './in-memory-file-system-provider.js';
12
12
  export * from './persistent-file-system-provider.js';
13
+ export * from './self-save-registry.js';
13
14
  export * from './index-manager.js';
14
15
  export * from './initialize-workspace.js';
15
16
  export * from './langium-documents.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/langium/workspace/index.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF,cAAc,0BAA0B,CAAC;AACzC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,qCAAqC,CAAC;AACpD,cAAc,sCAAsC,CAAC;AACrD,cAAc,oBAAoB,CAAC;AACnC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,wBAAwB,CAAC;AACvC,cAAc,kCAAkC,CAAC;AACjD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,uBAAuB,CAAC;AACtC,cAAc,yCAAyC,CAAC;AACxD,cAAc,uCAAuC,CAAC;AACtD,cAAc,gBAAgB,CAAC;AAC/B,cAAc,uBAAuB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/langium/workspace/index.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF,cAAc,0BAA0B,CAAC;AACzC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,qCAAqC,CAAC;AACpD,cAAc,sCAAsC,CAAC;AACrD,cAAc,yBAAyB,CAAC;AACxC,cAAc,oBAAoB,CAAC;AACnC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,wBAAwB,CAAC;AACvC,cAAc,kCAAkC,CAAC;AACjD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,uBAAuB,CAAC;AACtC,cAAc,yCAAyC,CAAC;AACxD,cAAc,uCAAuC,CAAC;AACtD,cAAc,gBAAgB,CAAC;AAC/B,cAAc,uBAAuB,CAAC"}
@@ -10,6 +10,7 @@ export * from './document-uri-policy.js';
10
10
  export * from './file-system-provider.js';
11
11
  export * from './in-memory-file-system-provider.js';
12
12
  export * from './persistent-file-system-provider.js';
13
+ export * from './self-save-registry.js';
13
14
  export * from './index-manager.js';
14
15
  export * from './initialize-workspace.js';
15
16
  export * from './langium-documents.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/langium/workspace/index.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF,cAAc,0BAA0B,CAAC;AACzC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,qCAAqC,CAAC;AACpD,cAAc,sCAAsC,CAAC;AACrD,cAAc,oBAAoB,CAAC;AACnC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,wBAAwB,CAAC;AACvC,cAAc,kCAAkC,CAAC;AACjD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,uBAAuB,CAAC;AACtC,cAAc,yCAAyC,CAAC;AACxD,cAAc,uCAAuC,CAAC;AACtD,cAAc,gBAAgB,CAAC;AAC/B,cAAc,uBAAuB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/langium/workspace/index.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF,cAAc,0BAA0B,CAAC;AACzC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,qCAAqC,CAAC;AACpD,cAAc,sCAAsC,CAAC;AACrD,cAAc,yBAAyB,CAAC;AACxC,cAAc,oBAAoB,CAAC;AACnC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,wBAAwB,CAAC;AACvC,cAAc,kCAAkC,CAAC;AACjD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,uBAAuB,CAAC;AACtC,cAAc,yCAAyC,CAAC;AACxD,cAAc,uCAAuC,CAAC;AACtD,cAAc,gBAAgB,CAAC;AAC/B,cAAc,uBAAuB,CAAC"}
@@ -7,9 +7,36 @@
7
7
  * SPDX-License-Identifier: MIT
8
8
  ********************************************************************************/
9
9
  import { URI } from '@hydranium/langium';
10
+ import type { Locale } from '@hydranium/protocol';
10
11
  import type { ServerSharedServicesMinimal } from '../shared-services.js';
11
12
  /** A workspace folder root accepted by the headless init seams: a filesystem path or a {@link URI}. */
12
13
  export type WorkspaceFolderInput = string | URI;
14
+ /**
15
+ * Options for the headless init seams.
16
+ *
17
+ * **Optional, and the parameter is optional too**, so that no existing caller
18
+ * has to change to gain a field it does not set.
19
+ */
20
+ export interface ProgrammaticInitOptions {
21
+ /**
22
+ * The locale to render user-facing server messages in — the headless
23
+ * equivalent of LSP `initialize`'s `locale`, for a head with no LSP
24
+ * connection (`startStdioServer`, the CLI subcommands, a test harness).
25
+ *
26
+ * Omitted means no locale, which the default renderer resolves as the
27
+ * framework's English. That is the correct answer for a headless tool: it
28
+ * has no reading user to have a language.
29
+ *
30
+ * **An IETF language tag, hyphenated — `de`, `de-CH`, `zh-Hant-TW` — and
31
+ * not the POSIX or Java spelling.** An LSP client is held to that syntax by
32
+ * the protocol, while a headless caller supplies the string itself and the
33
+ * obvious source is an environment variable holding `de_DE` or
34
+ * `en_US.UTF-8`. Neither is a tag, and the string is passed through
35
+ * unchecked, so a renderer that parses it finds nothing to match and every
36
+ * message renders in English.
37
+ */
38
+ readonly locale?: Locale;
39
+ }
13
40
  /**
14
41
  * Initialize a hydranium workspace **without an LSP `initialize` request** —
15
42
  * the headless counterpart to the editor entry. Drives the workspace manager's
@@ -37,8 +64,9 @@ export type WorkspaceFolderInput = string | URI;
37
64
  *
38
65
  * @param services the shared services tree the workspace manager lives on
39
66
  * @param folders one or more workspace roots (filesystem paths or URIs)
67
+ * @param options the message locale, when the caller has one
40
68
  */
41
- export declare function initializeWorkspaceProgrammatically(services: ServerSharedServicesMinimal, folders: WorkspaceFolderInput | ReadonlyArray<WorkspaceFolderInput>): Promise<void>;
69
+ export declare function initializeWorkspaceProgrammatically(services: ServerSharedServicesMinimal, folders: WorkspaceFolderInput | ReadonlyArray<WorkspaceFolderInput>, options?: ProgrammaticInitOptions): Promise<void>;
42
70
  /**
43
71
  * {@link initializeWorkspaceProgrammatically} **and then build every registered
44
72
  * document to `Validated`** — the "fully-built workspace" convenience for
@@ -58,6 +86,7 @@ export declare function initializeWorkspaceProgrammatically(services: ServerShar
58
86
  *
59
87
  * @param services the shared services tree the workspace manager lives on
60
88
  * @param folders one or more workspace roots (filesystem paths or URIs)
89
+ * @param options the message locale, when the caller has one
61
90
  */
62
- export declare function buildWorkspaceProgrammatically(services: ServerSharedServicesMinimal, folders: WorkspaceFolderInput | ReadonlyArray<WorkspaceFolderInput>): Promise<void>;
91
+ export declare function buildWorkspaceProgrammatically(services: ServerSharedServicesMinimal, folders: WorkspaceFolderInput | ReadonlyArray<WorkspaceFolderInput>, options?: ProgrammaticInitOptions): Promise<void>;
63
92
  //# sourceMappingURL=initialize-workspace.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"initialize-workspace.d.ts","sourceRoot":"","sources":["../../../src/langium/workspace/initialize-workspace.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF,OAAO,EAAY,GAAG,EAAE,MAAM,oBAAoB,CAAC;AAMnD,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,uBAAuB,CAAC;AAEzE,uGAAuG;AACvG,MAAM,MAAM,oBAAoB,GAAG,MAAM,GAAG,GAAG,CAAC;AAehD;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,wBAAsB,mCAAmC,CACtD,QAAQ,EAAE,2BAA2B,EACrC,OAAO,EAAE,oBAAoB,GAAG,aAAa,CAAC,oBAAoB,CAAC,GACnE,OAAO,CAAC,IAAI,CAAC,CAQf;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAsB,8BAA8B,CACjD,QAAQ,EAAE,2BAA2B,EACrC,OAAO,EAAE,oBAAoB,GAAG,aAAa,CAAC,oBAAoB,CAAC,GACnE,OAAO,CAAC,IAAI,CAAC,CAIf"}
1
+ {"version":3,"file":"initialize-workspace.d.ts","sourceRoot":"","sources":["../../../src/langium/workspace/initialize-workspace.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF,OAAO,EAAY,GAAG,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAMlD,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,uBAAuB,CAAC;AAEzE,uGAAuG;AACvG,MAAM,MAAM,oBAAoB,GAAG,MAAM,GAAG,GAAG,CAAC;AAEhD;;;;;GAKG;AACH,MAAM,WAAW,uBAAuB;IACrC;;;;;;;;;;;;;;;;OAgBG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;CAC3B;AAeD;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,wBAAsB,mCAAmC,CACtD,QAAQ,EAAE,2BAA2B,EACrC,OAAO,EAAE,oBAAoB,GAAG,aAAa,CAAC,oBAAoB,CAAC,EACnE,OAAO,GAAE,uBAA4B,GACrC,OAAO,CAAC,IAAI,CAAC,CAcf;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAsB,8BAA8B,CACjD,QAAQ,EAAE,2BAA2B,EACrC,OAAO,EAAE,oBAAoB,GAAG,aAAa,CAAC,oBAAoB,CAAC,EACnE,OAAO,GAAE,uBAA4B,GACrC,OAAO,CAAC,IAAI,CAAC,CAIf"}
@@ -50,14 +50,21 @@ function toWorkspaceFolders(folders) {
50
50
  *
51
51
  * @param services the shared services tree the workspace manager lives on
52
52
  * @param folders one or more workspace roots (filesystem paths or URIs)
53
+ * @param options the message locale, when the caller has one
53
54
  */
54
- export async function initializeWorkspaceProgrammatically(services, folders) {
55
+ export async function initializeWorkspaceProgrammatically(services, folders, options = {}) {
55
56
  const workspaceFolders = toWorkspaceFolders(folders);
56
57
  const manager = services.workspace.WorkspaceManager;
57
- // `initialize` records the folders (DefaultWorkspaceManager reads only this
58
+ // `locale` goes through the synthesized params rather than a direct
59
+ // `acceptLocale` call, so this seam and a real LSP `initialize` reach the
60
+ // slot by the SAME path — an adopter overriding the capture in
61
+ // `HydraniumWorkspaceManager.initialize` is honoured headlessly too, which a
62
+ // second write site here would silently bypass.
63
+ //
64
+ // `initialize` records the folders (DefaultWorkspaceManager reads only that
58
65
  // field); `initialized` runs `mutex.write(initializeWorkspace)` and resolves
59
66
  // once discovery + the init build settle, so awaiting it is the ready gate.
60
- manager.initialize({ workspaceFolders });
67
+ manager.initialize({ workspaceFolders, locale: options.locale });
61
68
  await manager.initialized({});
62
69
  }
63
70
  /**
@@ -79,9 +86,10 @@ export async function initializeWorkspaceProgrammatically(services, folders) {
79
86
  *
80
87
  * @param services the shared services tree the workspace manager lives on
81
88
  * @param folders one or more workspace roots (filesystem paths or URIs)
89
+ * @param options the message locale, when the caller has one
82
90
  */
83
- export async function buildWorkspaceProgrammatically(services, folders) {
84
- await initializeWorkspaceProgrammatically(services, folders);
91
+ export async function buildWorkspaceProgrammatically(services, folders, options = {}) {
92
+ await initializeWorkspaceProgrammatically(services, folders, options);
85
93
  const documents = services.workspace.LangiumDocuments.all.toArray();
86
94
  await services.workspace.DocumentBuilder.build(documents, { validation: true });
87
95
  }
@@ -1 +1 @@
1
- {"version":3,"file":"initialize-workspace.js","sourceRoot":"","sources":["../../../src/langium/workspace/initialize-workspace.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF,OAAO,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,oBAAoB,CAAC;AACnD,8EAA8E;AAC9E,8EAA8E;AAC9E,8EAA8E;AAC9E,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAO7B;;;;GAIG;AACH,SAAS,kBAAkB,CAAC,OAAmE;IAC5F,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAA+B,CAAC,CAAC;IAClF,OAAO,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;QACrB,MAAM,GAAG,GAAG,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;QAC9E,OAAO,EAAE,GAAG,EAAE,GAAG,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;IAChE,CAAC,CAAC,CAAC;AACN,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,MAAM,CAAC,KAAK,UAAU,mCAAmC,CACtD,QAAqC,EACrC,OAAmE;IAEnE,MAAM,gBAAgB,GAAG,kBAAkB,CAAC,OAAO,CAAC,CAAC;IACrD,MAAM,OAAO,GAAG,QAAQ,CAAC,SAAS,CAAC,gBAAgB,CAAC;IACpD,4EAA4E;IAC5E,6EAA6E;IAC7E,4EAA4E;IAC5E,OAAO,CAAC,UAAU,CAAC,EAAE,gBAAgB,EAAsB,CAAC,CAAC;IAC7D,MAAM,OAAO,CAAC,WAAW,CAAC,EAAuB,CAAC,CAAC;AACtD,CAAC;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,CAAC,KAAK,UAAU,8BAA8B,CACjD,QAAqC,EACrC,OAAmE;IAEnE,MAAM,mCAAmC,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAC7D,MAAM,SAAS,GAAG,QAAQ,CAAC,SAAS,CAAC,gBAAgB,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;IACpE,MAAM,QAAQ,CAAC,SAAS,CAAC,eAAe,CAAC,KAAK,CAAC,SAAS,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC;AACnF,CAAC"}
1
+ {"version":3,"file":"initialize-workspace.js","sourceRoot":"","sources":["../../../src/langium/workspace/initialize-workspace.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF,OAAO,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,oBAAoB,CAAC;AAEnD,8EAA8E;AAC9E,8EAA8E;AAC9E,8EAA8E;AAC9E,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAkC7B;;;;GAIG;AACH,SAAS,kBAAkB,CAAC,OAAmE;IAC5F,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAA+B,CAAC,CAAC;IAClF,OAAO,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;QACrB,MAAM,GAAG,GAAG,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;QAC9E,OAAO,EAAE,GAAG,EAAE,GAAG,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;IAChE,CAAC,CAAC,CAAC;AACN,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,MAAM,CAAC,KAAK,UAAU,mCAAmC,CACtD,QAAqC,EACrC,OAAmE,EACnE,OAAO,GAA4B,EAAE;IAErC,MAAM,gBAAgB,GAAG,kBAAkB,CAAC,OAAO,CAAC,CAAC;IACrD,MAAM,OAAO,GAAG,QAAQ,CAAC,SAAS,CAAC,gBAAgB,CAAC;IACpD,oEAAoE;IACpE,0EAA0E;IAC1E,+DAA+D;IAC/D,6EAA6E;IAC7E,gDAAgD;IAChD,EAAE;IACF,4EAA4E;IAC5E,6EAA6E;IAC7E,4EAA4E;IAC5E,OAAO,CAAC,UAAU,CAAC,EAAE,gBAAgB,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAsB,CAAC,CAAC;IACrF,MAAM,OAAO,CAAC,WAAW,CAAC,EAAuB,CAAC,CAAC;AACtD,CAAC;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,CAAC,KAAK,UAAU,8BAA8B,CACjD,QAAqC,EACrC,OAAmE,EACnE,OAAO,GAA4B,EAAE;IAErC,MAAM,mCAAmC,CAAC,QAAQ,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IACtE,MAAM,SAAS,GAAG,QAAQ,CAAC,SAAS,CAAC,gBAAgB,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;IACpE,MAAM,QAAQ,CAAC,SAAS,CAAC,eAAe,CAAC,KAAK,CAAC,SAAS,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC;AACnF,CAAC"}
@@ -104,6 +104,13 @@ export declare class HydraniumLangiumDocuments extends DefaultLangiumDocuments i
104
104
  * however it is built, so the error states the same thing.
105
105
  */
106
106
  createEmptyDocument(uri: URI, languageId?: string): LangiumDocument<AstNode>;
107
+ /**
108
+ * Registers `document`, then reports it to `VersionSyncService.modelProduced`:
109
+ * a first load parses outside the build, so no build's re-parse reports it.
110
+ * That marks one below `Parsed`, such as the builder's placeholder for a new
111
+ * file, as a placeholder. A rejected duplicate is not reported.
112
+ */
113
+ addDocument(document: LangiumDocument): void;
107
114
  getOrCreateDocument(uri: URI): Promise<LangiumDocument<AstNode>>;
108
115
  }
109
116
  //# sourceMappingURL=langium-documents.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"langium-documents.d.ts","sourceRoot":"","sources":["../../../src/langium/workspace/langium-documents.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF,OAAO,EAAE,KAAK,OAAO,EAAE,uBAAuB,EAAE,KAAK,eAAe,EAAE,KAAK,gBAAgB,EAAE,KAAK,GAAG,EAAE,MAAM,oBAAoB,CAAC;AAElI,OAAO,EAAE,KAAK,2BAA2B,EAAE,MAAM,uBAAuB,CAAC;AACzE,OAAO,EAAE,KAAK,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,EAAE,KAAK,+BAA+B,EAAE,MAAM,yCAAyC,CAAC;AAE/F;;;;;;;GAOG;AACH,eAAO,MAAM,mBAAmB,kFAAuF,CAAC;AAExH;;;;;;;GAOG;AACH,eAAO,MAAM,wBAAwB,+IAGpC,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,WAAW,yBAA0B,SAAQ,gBAAgB;IAChE,mBAAmB,CAAC,GAAG,EAAE,GAAG,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC;CAC/E;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,qBAAa,yBAA0B,SAAQ,uBAAwB,YAAW,yBAAyB;uBAWhE,QAAQ,EAAE,2BAA2B;IAV7E,sFAAsF;IACtF,SAAS,CAAC,QAAQ,CAAC,SAAS,EAAE,iBAAiB,CAAC;IAEhD;;;;OAIG;IACH,mBAA2B,sBAAsB,EAAE,+BAA+B,CAAC;gBAE3C,QAAQ,EAAE,2BAA2B;IAK7E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAgCG;IACH,mBAAmB,CAAC,GAAG,EAAE,GAAG,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,eAAe,CAAC,OAAO,CAAC;IAe7D,mBAAmB,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;CAgCjF"}
1
+ {"version":3,"file":"langium-documents.d.ts","sourceRoot":"","sources":["../../../src/langium/workspace/langium-documents.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF,OAAO,EAAE,KAAK,OAAO,EAAE,uBAAuB,EAAE,KAAK,eAAe,EAAE,KAAK,gBAAgB,EAAE,KAAK,GAAG,EAAY,MAAM,oBAAoB,CAAC;AAE5I,OAAO,EAAE,KAAK,2BAA2B,EAAE,MAAM,uBAAuB,CAAC;AACzE,OAAO,EAAE,KAAK,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,EAAE,KAAK,+BAA+B,EAAE,MAAM,yCAAyC,CAAC;AAE/F;;;;;;;GAOG;AACH,eAAO,MAAM,mBAAmB,kFAAuF,CAAC;AAExH;;;;;;;GAOG;AACH,eAAO,MAAM,wBAAwB,+IAGpC,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,WAAW,yBAA0B,SAAQ,gBAAgB;IAChE,mBAAmB,CAAC,GAAG,EAAE,GAAG,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC;CAC/E;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,qBAAa,yBAA0B,SAAQ,uBAAwB,YAAW,yBAAyB;uBAWhE,QAAQ,EAAE,2BAA2B;IAV7E,sFAAsF;IACtF,SAAS,CAAC,QAAQ,CAAC,SAAS,EAAE,iBAAiB,CAAC;IAEhD;;;;OAIG;IACH,mBAA2B,sBAAsB,EAAE,+BAA+B,CAAC;IAEnF,YAAwC,QAAQ,EAAE,2BAA2B,EAG5E;IAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAgCG;IACH,mBAAmB,CAAC,GAAG,EAAE,GAAG,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,eAAe,CAAC,OAAO,CAAC,CAa3E;IAED;;;;;OAKG;IACM,WAAW,CAAC,QAAQ,EAAE,eAAe,GAAG,IAAI,CAGpD;IAEc,mBAAmB,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,CAsC9E;CACH"}
@@ -6,7 +6,7 @@
6
6
  *
7
7
  * SPDX-License-Identifier: MIT
8
8
  ********************************************************************************/
9
- import { DefaultLangiumDocuments } from '@hydranium/langium';
9
+ import { DefaultLangiumDocuments, UriUtils } from '@hydranium/langium';
10
10
  import { defineMessage } from '@hydranium/protocol';
11
11
  /**
12
12
  * The document a caller asked to load is not there.
@@ -103,6 +103,16 @@ export class HydraniumLangiumDocuments extends DefaultLangiumDocuments {
103
103
  // selects the promise-returning one, which this contract cannot await.
104
104
  return this.langiumDocumentFactory.fromString('', uri);
105
105
  }
106
+ /**
107
+ * Registers `document`, then reports it to `VersionSyncService.modelProduced`:
108
+ * a first load parses outside the build, so no build's re-parse reports it.
109
+ * That marks one below `Parsed`, such as the builder's placeholder for a new
110
+ * file, as a placeholder. A rejected duplicate is not reported.
111
+ */
112
+ addDocument(document) {
113
+ super.addDocument(document);
114
+ this.services.workspace.VersionSyncService.modelProduced(document);
115
+ }
106
116
  async getOrCreateDocument(uri) {
107
117
  const resolved = this.uriPolicy.loadUri(uri);
108
118
  if (resolved) {
@@ -132,6 +142,13 @@ export class HydraniumLangiumDocuments extends DefaultLangiumDocuments {
132
142
  throw error;
133
143
  }
134
144
  }
145
+ // No file, but possibly a document: one created and not yet saved is
146
+ // built from its text and registered under its canonical URI.
147
+ const created = this.getDocument(UriUtils.toUri(this.uriPolicy.canonicalUri(uri)));
148
+ if (created) {
149
+ this.services.workspace.CstResidencyService.rehydrate(created);
150
+ return created;
151
+ }
135
152
  // The seam reports no loadable content, so there is nothing to read and
136
153
  // no error from a read to carry.
137
154
  throw new Error(NO_LOADABLE_CONTENT.format({ uri: uri.toString() }));
@@ -1 +1 @@
1
- {"version":3,"file":"langium-documents.js","sourceRoot":"","sources":["../../../src/langium/workspace/langium-documents.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF,OAAO,EAAgB,uBAAuB,EAAyD,MAAM,oBAAoB,CAAC;AAClI,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAKpD;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,aAAa,CAAC,oCAAoC,EAAE,+BAA+B,CAAC,CAAC;AAExH;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,aAAa,CAClD,yCAAyC,EACzC,4FAA4F,CAC9F,CAAC;AAaF;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,OAAO,yBAA0B,SAAQ,uBAAuB;IAW3B;IAVxC,sFAAsF;IACnE,SAAS,CAAoB;IAShD,YAAwC,QAAqC;QAC1E,KAAK,CAAC,QAAQ,CAAC,CAAC;QADqB,aAAQ,GAAR,QAAQ,CAA6B;QAE1E,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC,SAAS,CAAC,iBAAiB,CAAC;IACzD,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAgCG;IACH,mBAAmB,CAAC,GAAQ,EAAE,UAAmB;QAC9C,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;YAC5B,OAAO,IAAI,CAAC,sBAAsB,CAAC,oBAAoB,CAAC,EAAE,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC;QAChF,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE,CAAC;YACtD,uEAAuE;YACvE,oEAAoE;YACpE,YAAY;YACZ,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAC;QAC7E,CAAC;QACD,yEAAyE;QACzE,uEAAuE;QACvE,OAAO,IAAI,CAAC,sBAAsB,CAAC,UAAU,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;IAC1D,CAAC;IAEQ,KAAK,CAAC,mBAAmB,CAAC,GAAQ;QACxC,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAC7C,IAAI,QAAQ,EAAE,CAAC;YACZ,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;YAC5C,IAAI,QAAQ,EAAE,CAAC;gBACZ,iEAAiE;gBACjE,kEAAkE;gBAClE,sEAAsE;gBACtE,kEAAkE;gBAClE,uDAAuD;gBACvD,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,mBAAmB,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;gBAChE,OAAO,QAAQ,CAAC;YACnB,CAAC;YACD,IAAI,CAAC;gBACF,4DAA4D;gBAC5D,OAAO,MAAM,KAAK,CAAC,mBAAmB,CAAC,QAAQ,CAAC,CAAC;YACpD,CAAC;YAAC,OAAO,KAAc,EAAE,CAAC;gBACvB,oEAAoE;gBACpE,6DAA6D;gBAC7D,oEAAoE;gBACpE,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;gBAC7C,IAAI,SAAS,EAAE,CAAC;oBACb,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,mBAAmB,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;oBACjE,OAAO,SAAS,CAAC;gBACpB,CAAC;gBACD,MAAM,KAAK,CAAC;YACf,CAAC;QACJ,CAAC;QACD,wEAAwE;QACxE,iCAAiC;QACjC,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAC;IACxE,CAAC;CACH"}
1
+ {"version":3,"file":"langium-documents.js","sourceRoot":"","sources":["../../../src/langium/workspace/langium-documents.ts"],"names":[],"mappings":"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"}
@@ -7,7 +7,7 @@
7
7
  * SPDX-License-Identifier: MIT
8
8
  ********************************************************************************/
9
9
  import { URI } from '@hydranium/langium';
10
- import { type WritableFileSystemProvider } from '../../documents/ast-document-manager.js';
10
+ import { type WritableFileSystemProvider } from './file-system-provider.js';
11
11
  import { type ServerSharedServicesMinimal } from '../shared-services.js';
12
12
  import { type FileSystemSeed, InMemoryFileSystemProvider, type InMemoryFileSystemOptions } from './in-memory-file-system-provider.js';
13
13
  /**
@@ -111,13 +111,6 @@ export interface PersistentFileSystemOptions extends InMemoryFileSystemOptions {
111
111
  * restored as deleted, which is why the marker is NUL-wrapped and text a grammar
112
112
  * can parse is not.
113
113
  *
114
- * # A registered virtual document still wins
115
- *
116
- * `readFileSync` consults the virtual-document seam before the map, so a stdlib
117
- * contributed in code keeps answering for its URI whether or not the store holds
118
- * one. The store cannot shadow it, which is what keeps a rebuild that re-reads
119
- * that URI from losing the stdlib.
120
- *
121
114
  * # What it deliberately does not answer
122
115
  *
123
116
  * The store is scoped to the ORIGIN, not to the page: two pages on the same
@@ -142,6 +135,14 @@ export declare class PersistentFileSystemProvider extends InMemoryFileSystemProv
142
135
  * of marking it — a deletion that quietly undoes itself on the next load.
143
136
  */
144
137
  protected readonly seededPaths: ReadonlySet<string>;
138
+ /**
139
+ * The store keys restored as CONTENT, in the store's order.
140
+ *
141
+ * A deletion marker is not listed: the store holds a key for a deleted seeded
142
+ * file, so a host counting stored keys would report that deletion as a
143
+ * restored file, and only this class can tell the two apart.
144
+ */
145
+ readonly restoredPaths: readonly string[];
145
146
  constructor(services: ServerSharedServicesMinimal, options: PersistentFileSystemOptions);
146
147
  /**
147
148
  * The sync twin, mirrored without waiting.
@@ -163,7 +164,12 @@ export declare class PersistentFileSystemProvider extends InMemoryFileSystemProv
163
164
  * same content.
164
165
  */
165
166
  writeFile(uri: URI, content: string): Promise<void>;
166
- deleteFile(uri: URI): void;
167
+ /**
168
+ * Mirror the deletion into the store and REJECT if it refuses, as
169
+ * {@link writeFile} does. The store goes first, so one that refuses leaves
170
+ * the file it still holds; a directory is refused before the store is asked.
171
+ */
172
+ deleteFile(uri: URI): Promise<void>;
167
173
  /** The absolute URI a store-space `path` addresses. */
168
174
  protected storeUri(path: string): URI;
169
175
  /** Mirror one write. `async` so a bad key rejects rather than throwing at the call site. */
@@ -1 +1 @@
1
- {"version":3,"file":"persistent-file-system-provider.d.ts","sourceRoot":"","sources":["../../../src/langium/workspace/persistent-file-system-provider.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF,OAAO,EAAE,GAAG,EAAE,MAAM,oBAAoB,CAAC;AACzC,OAAO,EAAE,KAAK,0BAA0B,EAAE,MAAM,yCAAyC,CAAC;AAC1F,OAAO,EAAuB,KAAK,2BAA2B,EAAE,MAAM,uBAAuB,CAAC;AAC9F,OAAO,EAAE,KAAK,cAAc,EAAE,0BAA0B,EAAE,KAAK,yBAAyB,EAAE,MAAM,qCAAqC,CAAC;AAEtI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,MAAM,WAAW,eAAe;IAC7B;;;OAGG;IACH,IAAI,IAAI,OAAO,CAAC,cAAc,CAAC,CAAC;IAChC;;;;;;;OAOG;IACH,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACpD,kEAAkE;IAClE,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACtC;AAYD,yFAAyF;AACzF,MAAM,WAAW,2BAA4B,SAAQ,yBAAyB;IAC3E,6EAA6E;IAC7E,KAAK,EAAE,eAAe,CAAC;IACvB;;;;;;;OAOG;IACH,QAAQ,CAAC,EAAE,cAAc,CAAC;CAC5B;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmDG;AACH,qBAAa,4BAA6B,SAAQ,0BAA0B;IACzE,SAAS,CAAC,QAAQ,CAAC,KAAK,EAAE,eAAe,CAAC;IAC1C;;;OAGG;IACH,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IACtC;;;;;;;OAOG;IACH,SAAS,CAAC,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;gBAExC,QAAQ,EAAE,2BAA2B,EAAE,OAAO,EAAE,2BAA2B;IAuBvF;;;;;;OAMG;IACM,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI;IAKjD;;;;;;;;;;OAUG;IACY,SAAS,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAKzD,UAAU,CAAC,GAAG,EAAE,GAAG,GAAG,IAAI;IAKnC,uDAAuD;IACvD,SAAS,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,GAAG;IAIrC,4FAA4F;cAC5E,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIjE;;;;OAIG;cACa,MAAM,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC;IAS/C;;;;;;;OAOG;IACH,SAAS,CAAC,QAAQ,CAAC,GAAG,EAAE,GAAG,GAAG,MAAM;IAWpC,SAAS,CAAC,kBAAkB,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,OAAO,GAAG,IAAI;CAGjF;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAsB,oBAAoB,CAAC,OAAO,EAAE,2BAA2B,GAAG,OAAO,CAAC;IACvF,kBAAkB,EAAE,CAAC,QAAQ,EAAE,OAAO,KAAK,0BAA0B,CAAC;CACxE,CAAC,CAKD"}
1
+ {"version":3,"file":"persistent-file-system-provider.d.ts","sourceRoot":"","sources":["../../../src/langium/workspace/persistent-file-system-provider.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF,OAAO,EAAE,GAAG,EAAE,MAAM,oBAAoB,CAAC;AAEzC,OAAO,EAAE,KAAK,0BAA0B,EAAE,MAAM,2BAA2B,CAAC;AAC5E,OAAO,EAAuB,KAAK,2BAA2B,EAAE,MAAM,uBAAuB,CAAC;AAC9F,OAAO,EAAE,KAAK,cAAc,EAAE,0BAA0B,EAAE,KAAK,yBAAyB,EAAE,MAAM,qCAAqC,CAAC;AAEtI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,MAAM,WAAW,eAAe;IAC7B;;;OAGG;IACH,IAAI,IAAI,OAAO,CAAC,cAAc,CAAC,CAAC;IAChC;;;;;;;OAOG;IACH,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACpD,kEAAkE;IAClE,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACtC;AAYD,yFAAyF;AACzF,MAAM,WAAW,2BAA4B,SAAQ,yBAAyB;IAC3E,6EAA6E;IAC7E,KAAK,EAAE,eAAe,CAAC;IACvB;;;;;;;OAOG;IACH,QAAQ,CAAC,EAAE,cAAc,CAAC;CAC5B;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4CG;AACH,qBAAa,4BAA6B,SAAQ,0BAA0B;IACzE,SAAS,CAAC,QAAQ,CAAC,KAAK,EAAE,eAAe,CAAC;IAC1C;;;OAGG;IACH,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IACtC;;;;;;;OAOG;IACH,SAAS,CAAC,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IACpD;;;;;;OAMG;IACH,QAAQ,CAAC,aAAa,EAAE,SAAS,MAAM,EAAE,CAAC;IAE1C,YAAY,QAAQ,EAAE,2BAA2B,EAAE,OAAO,EAAE,2BAA2B,EAwBtF;IAED;;;;;;OAMG;IACM,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAGhD;IAED;;;;;;;;;;OAUG;IACY,SAAS,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAGjE;IAED;;;;OAIG;IACY,UAAU,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,CAKjD;IAED,uDAAuD;IACvD,SAAS,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,GAAG,CAEpC;IAED,4FAA4F;IAC5F,UAAgB,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAEhE;IAED;;;;OAIG;IACH,UAAgB,MAAM,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,CAO9C;IAED;;;;;;;OAOG;IACH,SAAS,CAAC,QAAQ,CAAC,GAAG,EAAE,GAAG,GAAG,MAAM,CASnC;IAED,SAAS,CAAC,kBAAkB,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,OAAO,GAAG,IAAI,CAE9E;CACH;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAsB,oBAAoB,CAAC,OAAO,EAAE,2BAA2B,GAAG,OAAO,CAAC;IACvF,kBAAkB,EAAE,CAAC,QAAQ,EAAE,OAAO,KAAK,0BAA0B,CAAC;CACxE,CAAC,CAKD"}
@@ -7,6 +7,7 @@
7
7
  * SPDX-License-Identifier: MIT
8
8
  ********************************************************************************/
9
9
  import { URI } from '@hydranium/langium';
10
+ import { describeErrorWithStack } from '@hydranium/protocol';
10
11
  import { serverSharedFactory } from '../shared-services.js';
11
12
  import { InMemoryFileSystemProvider } from './in-memory-file-system-provider.js';
12
13
  /**
@@ -55,13 +56,6 @@ const TOMBSTONE = '\u0000hydranium:deleted\u0000';
55
56
  * restored as deleted, which is why the marker is NUL-wrapped and text a grammar
56
57
  * can parse is not.
57
58
  *
58
- * # A registered virtual document still wins
59
- *
60
- * `readFileSync` consults the virtual-document seam before the map, so a stdlib
61
- * contributed in code keeps answering for its URI whether or not the store holds
62
- * one. The store cannot shadow it, which is what keeps a rebuild that re-reads
63
- * that URI from losing the stdlib.
64
- *
65
59
  * # What it deliberately does not answer
66
60
  *
67
61
  * The store is scoped to the ORIGIN, not to the page: two pages on the same
@@ -86,11 +80,20 @@ export class PersistentFileSystemProvider extends InMemoryFileSystemProvider {
86
80
  * of marking it — a deletion that quietly undoes itself on the next load.
87
81
  */
88
82
  seededPaths;
83
+ /**
84
+ * The store keys restored as CONTENT, in the store's order.
85
+ *
86
+ * A deletion marker is not listed: the store holds a key for a deleted seeded
87
+ * file, so a host counting stored keys would report that deletion as a
88
+ * restored file, and only this class can tell the two apart.
89
+ */
90
+ restoredPaths;
89
91
  constructor(services, options) {
90
92
  super(services, options);
91
93
  this.store = options.store;
92
94
  this.storeRoot = options.rootUri === undefined ? undefined : `${this.fileKey(options.rootUri)}/`;
93
95
  this.seededPaths = new Set(Object.keys(options.seed ?? {}).map(path => this.storeKey(this.storeUri(path))));
96
+ const restoredPaths = [];
94
97
  for (const [path, content] of Object.entries(options.restored ?? {})) {
95
98
  // `super.*`, so restoring does not mirror straight back into the store
96
99
  // it just came from — a write-back on every start, and one that would
@@ -102,12 +105,14 @@ export class PersistentFileSystemProvider extends InMemoryFileSystemProvider {
102
105
  // insertion order of a merged record.
103
106
  const uri = this.storeUri(path);
104
107
  if (content === TOMBSTONE) {
105
- super.deleteFile(uri);
108
+ this.files.delete(this.fileKey(uri));
106
109
  }
107
110
  else {
108
111
  super.setFile(uri, content);
112
+ restoredPaths.push(path);
109
113
  }
110
114
  }
115
+ this.restoredPaths = restoredPaths;
111
116
  }
112
117
  /**
113
118
  * The sync twin, mirrored without waiting.
@@ -135,9 +140,16 @@ export class PersistentFileSystemProvider extends InMemoryFileSystemProvider {
135
140
  super.setFile(uri, content);
136
141
  await this.persist(uri, content);
137
142
  }
138
- deleteFile(uri) {
139
- super.deleteFile(uri);
140
- this.forget(uri).catch((error) => this.reportStoreFailure('forget', uri, error));
143
+ /**
144
+ * Mirror the deletion into the store and REJECT if it refuses, as
145
+ * {@link writeFile} does. The store goes first, so one that refuses leaves
146
+ * the file it still holds; a directory is refused before the store is asked.
147
+ */
148
+ async deleteFile(uri) {
149
+ if (!this.hasChildren(this.fileKey(uri))) {
150
+ await this.forget(uri);
151
+ }
152
+ await super.deleteFile(uri);
141
153
  }
142
154
  /** The absolute URI a store-space `path` addresses. */
143
155
  storeUri(path) {
@@ -175,12 +187,12 @@ export class PersistentFileSystemProvider extends InMemoryFileSystemProvider {
175
187
  return key;
176
188
  }
177
189
  if (!key.startsWith(this.storeRoot)) {
178
- throw new Error(`Cannot persist ${uri.toString()}: outside the store root ${this.storeRoot}`);
190
+ throw new Error(`${uri.toString()} is outside the store root ${this.storeRoot}`);
179
191
  }
180
192
  return key.slice(this.storeRoot.length);
181
193
  }
182
194
  reportStoreFailure(operation, uri, error) {
183
- this.tracer.error(`Failed to ${operation} ${uri.toString()}: ${error instanceof Error ? error.message : String(error)}`);
195
+ this.tracer.error(`Failed to ${operation} ${uri.toString()}: ${describeErrorWithStack(error)}`);
184
196
  }
185
197
  }
186
198
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"persistent-file-system-provider.js","sourceRoot":"","sources":["../../../src/langium/workspace/persistent-file-system-provider.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"persistent-file-system-provider.js","sourceRoot":"","sources":["../../../src/langium/workspace/persistent-file-system-provider.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,84 @@
1
+ /********************************************************************************
2
+ * Copyright (c) 2026 CrossBreeze, EclipseSource and others.
3
+ *
4
+ * This program and the accompanying materials are made available under the
5
+ * terms of the MIT License which is available in the project root.
6
+ *
7
+ * SPDX-License-Identifier: MIT
8
+ ********************************************************************************/
9
+ import { type Clock, type Stopwatch } from '@hydranium/protocol';
10
+ import { type ServerSharedServicesMinimal } from '../shared-services.js';
11
+ export interface SelfSaveRegistryOptions {
12
+ /** How long a self-save entry stays eligible to match a watcher event. Default {@link DEFAULT_TTL_MS}. */
13
+ ttlMs?: number;
14
+ }
15
+ /**
16
+ * Tracks `mtime` of files written by the server itself so the echo
17
+ * `didChangeWatchedFiles` event from the OS file watcher can be suppressed,
18
+ * avoiding redundant rebuilds after each save.
19
+ */
20
+ export interface SelfSaveRegistry {
21
+ /**
22
+ * Record a self-write, and drop any registration already past its TTL.
23
+ *
24
+ * Keyed by `fsPath` rather than URI string, because the two sides of a
25
+ * suppression see different URI forms for one file.
26
+ */
27
+ register(fsPath: string, mtimeMs: number): void;
28
+ /**
29
+ * Whether `fsPath` carries a live registration at exactly `mtimeMs`.
30
+ *
31
+ * A registration expires after the TTL, so a write recorded longer ago than
32
+ * that answers `false` — the caller's decision holds only while the echo it
33
+ * suppresses could still be in flight. A query never mutates the registry.
34
+ */
35
+ isRegistered(fsPath: string, mtimeMs: number): boolean;
36
+ }
37
+ /**
38
+ * Compares entries by mtime rather than by a time window, so the echo of a
39
+ * save whose content is unchanged is still recognised.
40
+ */
41
+ export declare class DefaultSelfSaveRegistry implements SelfSaveRegistry {
42
+ protected readonly entries: Map<string, {
43
+ mtimeMs: number;
44
+ sinceRegistered: Stopwatch;
45
+ }>;
46
+ /**
47
+ * Ages entries on a {@link Clock} stopwatch: the TTL is how long ago the
48
+ * write happened, which a wall-clock step would otherwise shorten or
49
+ * stretch. The `mtime` match compares the stored value only.
50
+ */
51
+ protected readonly clock: Clock;
52
+ protected readonly ttlMs: number;
53
+ constructor(services: Pick<ServerSharedServicesMinimal, 'Clock'>, options?: SelfSaveRegistryOptions);
54
+ /**
55
+ * Key a path the way the host filesystem compares it.
56
+ *
57
+ * Registering and matching happen on different paths for the same file: the
58
+ * write path comes from the server, the echo from the OS watcher, and on a
59
+ * case-insensitive filesystem those two can disagree in case for one file.
60
+ * A raw key then misses the suppression and the server's own write is
61
+ * rebuilt as a foreign change.
62
+ *
63
+ * Folded ONLY where the filesystem folds. On Linux two paths differing in
64
+ * case are two files, and collapsing them would suppress a real change to
65
+ * the other one — a correctness bug traded for an optimisation.
66
+ */
67
+ protected key(fsPath: string): string;
68
+ register(fsPath: string, mtimeMs: number): void;
69
+ isRegistered(fsPath: string, mtimeMs: number): boolean;
70
+ /**
71
+ * Drop every expired registration.
72
+ *
73
+ * On the WRITE path, so the query stays free of side effects. Evicting from
74
+ * the query instead reaches only the keys something happens to ask about,
75
+ * and a path written once and never queried again is then retained for the
76
+ * life of the process. Bounded by the paths self-written inside one TTL
77
+ * window, so the sweep is over a handful of entries and sits behind a file
78
+ * write either way.
79
+ */
80
+ protected evictExpired(): void;
81
+ /** Strictly greater, so an entry aged exactly to the TTL is still eligible. */
82
+ protected isExpired(sinceRegistered: Stopwatch): boolean;
83
+ }
84
+ //# sourceMappingURL=self-save-registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"self-save-registry.d.ts","sourceRoot":"","sources":["../../../src/langium/workspace/self-save-registry.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF,OAAO,EAAE,KAAK,KAAK,EAAE,KAAK,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAEjE,OAAO,EAAE,KAAK,2BAA2B,EAAE,MAAM,uBAAuB,CAAC;AAKzE,MAAM,WAAW,uBAAuB;IACrC,0GAA0G;IAC1G,KAAK,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;;;GAIG;AACH,MAAM,WAAW,gBAAgB;IAC9B;;;;;OAKG;IACH,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAEhD;;;;;;OAMG;IACH,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC;CACzD;AAED;;;GAGG;AACH,qBAAa,uBAAwB,YAAW,gBAAgB;IAC7D,SAAS,CAAC,QAAQ,CAAC,OAAO;iBAA8B,MAAM;yBAAmB,SAAS;OAAM;IAChG;;;;OAIG;IACH,SAAS,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC;IAChC,SAAS,CAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IAEjC,YAAY,QAAQ,EAAE,IAAI,CAAC,2BAA2B,EAAE,OAAO,CAAC,EAAE,OAAO,GAAE,uBAA4B,EAGtG;IAED;;;;;;;;;;;;OAYG;IACH,SAAS,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAEpC;IAED,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAG9C;IAED,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAOrD;IAED;;;;;;;;;OASG;IACH,SAAS,CAAC,YAAY,IAAI,IAAI,CAM7B;IAED,+EAA+E;IAC/E,SAAS,CAAC,SAAS,CAAC,eAAe,EAAE,SAAS,GAAG,OAAO,CAEvD;CACH"}
@@ -6,23 +6,19 @@
6
6
  *
7
7
  * SPDX-License-Identifier: MIT
8
8
  ********************************************************************************/
9
- import { isCaseInsensitiveFileSystem } from '../util/environment.js';
9
+ import { isCaseInsensitiveFileSystem } from '../../util/environment.js';
10
10
  /** Default eligibility window for a self-save entry. */
11
11
  const DEFAULT_TTL_MS = 30_000;
12
12
  /**
13
- * Tracks `mtime` of files written by the server itself so the echo
14
- * `didChangeWatchedFiles` event from the OS file watcher can be suppressed,
15
- * avoiding redundant rebuilds after each save. Entries are matched by mtime
16
- * (not by a time window) and expire after a TTL.
13
+ * Compares entries by mtime rather than by a time window, so the echo of a
14
+ * save whose content is unchanged is still recognised.
17
15
  */
18
- export class SelfSaveRegistry {
16
+ export class DefaultSelfSaveRegistry {
19
17
  entries = new Map();
20
18
  /**
21
- * Read time through the shared {@link Clock} rather than `Date.now()`: the
22
- * TTL gates whether an incoming watcher event still counts as a self-save
23
- * echo, so tests advance a fake clock to exercise expiry without a real
24
- * wait. Wall-clock `now()` is correct here — entries are compared against a
25
- * file's `mtime`.
19
+ * Ages entries on a {@link Clock} stopwatch: the TTL is how long ago the
20
+ * write happened, which a wall-clock step would otherwise shorten or
21
+ * stretch. The `mtime` match compares the stored value only.
26
22
  */
27
23
  clock;
28
24
  ttlMs;
@@ -46,23 +42,38 @@ export class SelfSaveRegistry {
46
42
  key(fsPath) {
47
43
  return isCaseInsensitiveFileSystem() ? fsPath.toLowerCase() : fsPath;
48
44
  }
49
- /** Record a self-write. Key by `fsPath` (not URI string) to avoid URI-form mismatches. */
50
45
  register(fsPath, mtimeMs) {
51
- this.entries.set(this.key(fsPath), { mtimeMs, registeredAt: this.clock.now() });
46
+ this.evictExpired();
47
+ this.entries.set(this.key(fsPath), { mtimeMs, sinceRegistered: this.clock.stopwatch() });
52
48
  }
53
- /** True if `mtimeMs` matches a recent self-write. Evicts stale entries. Not consumed on match. */
54
- matches(fsPath, mtimeMs) {
55
- const key = this.key(fsPath);
56
- const entry = this.entries.get(key);
57
- if (!entry) {
58
- return false;
59
- }
60
- if (this.clock.now() - entry.registeredAt > this.ttlMs) {
61
- this.entries.delete(key);
49
+ isRegistered(fsPath, mtimeMs) {
50
+ const entry = this.entries.get(this.key(fsPath));
51
+ if (!entry || this.isExpired(entry.sinceRegistered)) {
62
52
  return false;
63
53
  }
64
54
  // Accept mtime equality (some filesystems have 1-second precision).
65
55
  return entry.mtimeMs === mtimeMs;
66
56
  }
57
+ /**
58
+ * Drop every expired registration.
59
+ *
60
+ * On the WRITE path, so the query stays free of side effects. Evicting from
61
+ * the query instead reaches only the keys something happens to ask about,
62
+ * and a path written once and never queried again is then retained for the
63
+ * life of the process. Bounded by the paths self-written inside one TTL
64
+ * window, so the sweep is over a handful of entries and sits behind a file
65
+ * write either way.
66
+ */
67
+ evictExpired() {
68
+ for (const [key, entry] of this.entries) {
69
+ if (this.isExpired(entry.sinceRegistered)) {
70
+ this.entries.delete(key);
71
+ }
72
+ }
73
+ }
74
+ /** Strictly greater, so an entry aged exactly to the TTL is still eligible. */
75
+ isExpired(sinceRegistered) {
76
+ return sinceRegistered.elapsedMs > this.ttlMs;
77
+ }
67
78
  }
68
79
  //# sourceMappingURL=self-save-registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"self-save-registry.js","sourceRoot":"","sources":["../../../src/langium/workspace/self-save-registry.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAGlF,OAAO,EAAE,2BAA2B,EAAE,MAAM,2BAA2B,CAAC;AAGxE,wDAAwD;AACxD,MAAM,cAAc,GAAG,MAAM,CAAC;AA+B9B;;;GAGG;AACH,MAAM,OAAO,uBAAuB;IACd,OAAO,GAAG,IAAI,GAAG,EAA2D,CAAC;IAChG;;;;OAIG;IACgB,KAAK,CAAQ;IACb,KAAK,CAAS;IAEjC,YAAY,QAAoD,EAAE,OAAO,GAA4B,EAAE;QACpG,IAAI,CAAC,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC;QAC5B,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,cAAc,CAAC;IAChD,CAAC;IAED;;;;;;;;;;;;OAYG;IACO,GAAG,CAAC,MAAc;QACzB,OAAO,2BAA2B,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC;IACxE,CAAC;IAED,QAAQ,CAAC,MAAc,EAAE,OAAe;QACrC,IAAI,CAAC,YAAY,EAAE,CAAC;QACpB,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE,OAAO,EAAE,eAAe,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;IAC5F,CAAC;IAED,YAAY,CAAC,MAAc,EAAE,OAAe;QACzC,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;QACjD,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,eAAe,CAAC,EAAE,CAAC;YACnD,OAAO,KAAK,CAAC;QAChB,CAAC;QACD,oEAAoE;QACpE,OAAO,KAAK,CAAC,OAAO,KAAK,OAAO,CAAC;IACpC,CAAC;IAED;;;;;;;;;OASG;IACO,YAAY;QACnB,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACvC,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,eAAe,CAAC,EAAE,CAAC;gBACzC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAC5B,CAAC;QACJ,CAAC;IACJ,CAAC;IAED,+EAA+E;IACrE,SAAS,CAAC,eAA0B;QAC3C,OAAO,eAAe,CAAC,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC;IACjD,CAAC;CACH"}