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

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 (765) hide show
  1. package/README.md +78 -82
  2. package/lib/browser/host-heads-in-worker.d.ts +77 -0
  3. package/lib/browser/host-heads-in-worker.d.ts.map +1 -0
  4. package/lib/browser/host-heads-in-worker.js +169 -0
  5. package/lib/browser/host-heads-in-worker.js.map +1 -0
  6. package/lib/browser/index.d.ts +12 -0
  7. package/lib/browser/index.d.ts.map +1 -0
  8. package/lib/browser/index.js +17 -0
  9. package/lib/browser/index.js.map +1 -0
  10. package/lib/browser/indexeddb-file-system-store.d.ts +82 -0
  11. package/lib/browser/indexeddb-file-system-store.d.ts.map +1 -0
  12. package/lib/browser/indexeddb-file-system-store.js +181 -0
  13. package/lib/browser/indexeddb-file-system-store.js.map +1 -0
  14. package/lib/browser/start-language-server-in-worker.d.ts +32 -0
  15. package/lib/browser/start-language-server-in-worker.d.ts.map +1 -0
  16. package/lib/browser/start-language-server-in-worker.js +40 -0
  17. package/lib/browser/start-language-server-in-worker.js.map +1 -0
  18. package/lib/documents/ast-document-manager.d.ts +256 -124
  19. package/lib/documents/ast-document-manager.d.ts.map +1 -1
  20. package/lib/documents/ast-document-manager.js +293 -132
  21. package/lib/documents/ast-document-manager.js.map +1 -1
  22. package/lib/documents/client-ids.d.ts +5 -19
  23. package/lib/documents/client-ids.d.ts.map +1 -1
  24. package/lib/documents/client-ids.js +5 -19
  25. package/lib/documents/client-ids.js.map +1 -1
  26. package/lib/documents/client-session-errors.d.ts +15 -0
  27. package/lib/documents/client-session-errors.d.ts.map +1 -0
  28. package/lib/documents/client-session-errors.js +15 -0
  29. package/lib/documents/client-session-errors.js.map +1 -0
  30. package/lib/documents/client-session-registry.d.ts +146 -0
  31. package/lib/documents/client-session-registry.d.ts.map +1 -0
  32. package/lib/documents/client-session-registry.js +207 -0
  33. package/lib/documents/client-session-registry.js.map +1 -0
  34. package/lib/documents/dirty-state-tracker.d.ts +101 -0
  35. package/lib/documents/dirty-state-tracker.d.ts.map +1 -0
  36. package/lib/documents/dirty-state-tracker.js +85 -0
  37. package/lib/documents/dirty-state-tracker.js.map +1 -0
  38. package/lib/documents/document-release-handler.d.ts +204 -0
  39. package/lib/documents/document-release-handler.d.ts.map +1 -0
  40. package/lib/documents/document-release-handler.js +317 -0
  41. package/lib/documents/document-release-handler.js.map +1 -0
  42. package/lib/documents/document-release-scheduler.d.ts +67 -0
  43. package/lib/documents/document-release-scheduler.d.ts.map +1 -0
  44. package/lib/documents/document-release-scheduler.js +80 -0
  45. package/lib/documents/document-release-scheduler.js.map +1 -0
  46. package/lib/documents/file-system-task-queue.d.ts +52 -0
  47. package/lib/documents/file-system-task-queue.d.ts.map +1 -0
  48. package/lib/documents/file-system-task-queue.js +37 -0
  49. package/lib/documents/file-system-task-queue.js.map +1 -0
  50. package/lib/documents/hydranium-text-documents.d.ts +436 -282
  51. package/lib/documents/hydranium-text-documents.d.ts.map +1 -1
  52. package/lib/documents/hydranium-text-documents.js +886 -483
  53. package/lib/documents/hydranium-text-documents.js.map +1 -1
  54. package/lib/documents/index.d.ts +10 -2
  55. package/lib/documents/index.d.ts.map +1 -1
  56. package/lib/documents/index.js +10 -2
  57. package/lib/documents/index.js.map +1 -1
  58. package/lib/documents/language-client-shadow.d.ts +234 -0
  59. package/lib/documents/language-client-shadow.d.ts.map +1 -0
  60. package/lib/documents/language-client-shadow.js +306 -0
  61. package/lib/documents/language-client-shadow.js.map +1 -0
  62. package/lib/documents/model-ledger.d.ts +47 -0
  63. package/lib/documents/model-ledger.d.ts.map +1 -0
  64. package/lib/documents/model-ledger.js +30 -0
  65. package/lib/documents/model-ledger.js.map +1 -0
  66. package/lib/documents/text-ledger.d.ts +64 -0
  67. package/lib/documents/text-ledger.d.ts.map +1 -0
  68. package/lib/documents/text-ledger.js +63 -0
  69. package/lib/documents/text-ledger.js.map +1 -0
  70. package/lib/documents/version-sync-service.d.ts +138 -0
  71. package/lib/documents/version-sync-service.d.ts.map +1 -0
  72. package/lib/documents/version-sync-service.js +173 -0
  73. package/lib/documents/version-sync-service.js.map +1 -0
  74. package/lib/index.d.ts +4 -0
  75. package/lib/index.d.ts.map +1 -1
  76. package/lib/index.js +7 -0
  77. package/lib/index.js.map +1 -1
  78. package/lib/langium/ast-extension/ast-extension-service.d.ts +42 -31
  79. package/lib/langium/ast-extension/ast-extension-service.d.ts.map +1 -1
  80. package/lib/langium/ast-extension/ast-extension-service.js +45 -19
  81. package/lib/langium/ast-extension/ast-extension-service.js.map +1 -1
  82. package/lib/langium/ast-extension/ast-node-builder.d.ts +12 -7
  83. package/lib/langium/ast-extension/ast-node-builder.d.ts.map +1 -1
  84. package/lib/langium/ast-extension/ast-node-builder.js +25 -9
  85. package/lib/langium/ast-extension/ast-node-builder.js.map +1 -1
  86. package/lib/langium/bootstrap.d.ts +49 -36
  87. package/lib/langium/bootstrap.d.ts.map +1 -1
  88. package/lib/langium/bootstrap.js +83 -44
  89. package/lib/langium/bootstrap.js.map +1 -1
  90. package/lib/langium/build-phase-pass/build-phase-pass-service.d.ts +9 -9
  91. package/lib/langium/build-phase-pass/build-phase-pass-service.d.ts.map +1 -1
  92. package/lib/langium/build-phase-pass/build-phase-pass-service.js +25 -16
  93. package/lib/langium/build-phase-pass/build-phase-pass-service.js.map +1 -1
  94. package/lib/langium/build-phase-pass/build-phase-pass.d.ts +20 -8
  95. package/lib/langium/build-phase-pass/build-phase-pass.d.ts.map +1 -1
  96. package/lib/langium/build-phase-pass/build-phase-pass.js +20 -0
  97. package/lib/langium/build-phase-pass/build-phase-pass.js.map +1 -1
  98. package/lib/langium/composite-ast-reflection.d.ts +46 -0
  99. package/lib/langium/composite-ast-reflection.d.ts.map +1 -0
  100. package/lib/langium/composite-ast-reflection.js +97 -0
  101. package/lib/langium/composite-ast-reflection.js.map +1 -0
  102. package/lib/langium/config/configuration-provider.d.ts +81 -0
  103. package/lib/langium/config/configuration-provider.d.ts.map +1 -0
  104. package/lib/langium/config/configuration-provider.js +112 -0
  105. package/lib/langium/config/configuration-provider.js.map +1 -0
  106. package/lib/langium/config/index.d.ts +1 -0
  107. package/lib/langium/config/index.d.ts.map +1 -1
  108. package/lib/langium/config/index.js +1 -0
  109. package/lib/langium/config/index.js.map +1 -1
  110. package/lib/langium/config/settings.js.map +1 -1
  111. package/lib/langium/diagnostics/hydranium-langium-profiler.d.ts +9 -20
  112. package/lib/langium/diagnostics/hydranium-langium-profiler.d.ts.map +1 -1
  113. package/lib/langium/diagnostics/hydranium-langium-profiler.js +15 -24
  114. package/lib/langium/diagnostics/hydranium-langium-profiler.js.map +1 -1
  115. package/lib/langium/diagnostics/log-preamble.js +1 -1
  116. package/lib/langium/diagnostics/log-preamble.js.map +1 -1
  117. package/lib/langium/diagnostics/logger.d.ts +19 -4
  118. package/lib/langium/diagnostics/logger.d.ts.map +1 -1
  119. package/lib/langium/diagnostics/logger.js +36 -11
  120. package/lib/langium/diagnostics/logger.js.map +1 -1
  121. package/lib/langium/diagnostics/lsp-logger.d.ts +17 -0
  122. package/lib/langium/diagnostics/lsp-logger.d.ts.map +1 -1
  123. package/lib/langium/diagnostics/lsp-logger.js +58 -17
  124. package/lib/langium/diagnostics/lsp-logger.js.map +1 -1
  125. package/lib/langium/diagnostics/server-tracer.d.ts.map +1 -1
  126. package/lib/langium/diagnostics/server-tracer.js.map +1 -1
  127. package/lib/langium/document-builder/build-pipeline-integration.d.ts +21 -1
  128. package/lib/langium/document-builder/build-pipeline-integration.d.ts.map +1 -1
  129. package/lib/langium/document-builder/build-pipeline-integration.js +28 -30
  130. package/lib/langium/document-builder/build-pipeline-integration.js.map +1 -1
  131. package/lib/langium/document-builder/build-session.d.ts +6 -5
  132. package/lib/langium/document-builder/build-session.d.ts.map +1 -1
  133. package/lib/langium/document-builder/build-session.js +5 -5
  134. package/lib/langium/document-builder/build-session.js.map +1 -1
  135. package/lib/langium/document-builder/document-builder.d.ts +283 -41
  136. package/lib/langium/document-builder/document-builder.d.ts.map +1 -1
  137. package/lib/langium/document-builder/document-builder.js +448 -78
  138. package/lib/langium/document-builder/document-builder.js.map +1 -1
  139. package/lib/langium/documentation/comment-provider.d.ts.map +1 -1
  140. package/lib/langium/documentation/comment-provider.js.map +1 -1
  141. package/lib/langium/integration-services.d.ts +40 -24
  142. package/lib/langium/integration-services.d.ts.map +1 -1
  143. package/lib/langium/integration-services.js +7 -4
  144. package/lib/langium/integration-services.js.map +1 -1
  145. package/lib/langium/integrity/integrity-rule.d.ts +17 -8
  146. package/lib/langium/integrity/integrity-rule.d.ts.map +1 -1
  147. package/lib/langium/integrity/integrity-rule.js.map +1 -1
  148. package/lib/langium/integrity/integrity-service.d.ts +95 -27
  149. package/lib/langium/integrity/integrity-service.d.ts.map +1 -1
  150. package/lib/langium/integrity/integrity-service.js +303 -63
  151. package/lib/langium/integrity/integrity-service.js.map +1 -1
  152. package/lib/langium/keys/containment.d.ts +64 -0
  153. package/lib/langium/keys/containment.d.ts.map +1 -0
  154. package/lib/langium/keys/containment.js +53 -0
  155. package/lib/langium/keys/containment.js.map +1 -0
  156. package/lib/langium/keys/index.d.ts +1 -0
  157. package/lib/langium/keys/index.d.ts.map +1 -1
  158. package/lib/langium/keys/index.js +1 -0
  159. package/lib/langium/keys/index.js.map +1 -1
  160. package/lib/langium/keys/name-based-key-provider.d.ts +4 -0
  161. package/lib/langium/keys/name-based-key-provider.d.ts.map +1 -1
  162. package/lib/langium/keys/name-based-key-provider.js +4 -0
  163. package/lib/langium/keys/name-based-key-provider.js.map +1 -1
  164. package/lib/langium/keys/positional-key-provider.d.ts.map +1 -1
  165. package/lib/langium/keys/positional-key-provider.js.map +1 -1
  166. package/lib/langium/labeling/label-provider.d.ts.map +1 -1
  167. package/lib/langium/labeling/label-provider.js.map +1 -1
  168. package/lib/langium/language-module.d.ts +30 -5
  169. package/lib/langium/language-module.d.ts.map +1 -1
  170. package/lib/langium/language-module.js +18 -4
  171. package/lib/langium/language-module.js.map +1 -1
  172. package/lib/langium/model-service/client-session.d.ts +383 -0
  173. package/lib/langium/model-service/client-session.d.ts.map +1 -0
  174. package/lib/langium/model-service/client-session.js +455 -0
  175. package/lib/langium/model-service/client-session.js.map +1 -0
  176. package/lib/langium/model-service/index.d.ts +2 -0
  177. package/lib/langium/model-service/index.d.ts.map +1 -1
  178. package/lib/langium/model-service/index.js +2 -0
  179. package/lib/langium/model-service/index.js.map +1 -1
  180. package/lib/langium/model-service/model-events.d.ts +66 -0
  181. package/lib/langium/model-service/model-events.d.ts.map +1 -0
  182. package/lib/langium/model-service/model-events.js +10 -0
  183. package/lib/langium/model-service/model-events.js.map +1 -0
  184. package/lib/langium/model-service/model-service.d.ts +455 -290
  185. package/lib/langium/model-service/model-service.d.ts.map +1 -1
  186. package/lib/langium/model-service/model-service.js +571 -458
  187. package/lib/langium/model-service/model-service.js.map +1 -1
  188. package/lib/langium/module.d.ts +141 -40
  189. package/lib/langium/module.d.ts.map +1 -1
  190. package/lib/langium/module.js +52 -40
  191. package/lib/langium/module.js.map +1 -1
  192. package/lib/langium/naming/name-provider.d.ts +32 -7
  193. package/lib/langium/naming/name-provider.d.ts.map +1 -1
  194. package/lib/langium/naming/name-provider.js +10 -4
  195. package/lib/langium/naming/name-provider.js.map +1 -1
  196. package/lib/langium/naming/name-separator-validation.d.ts.map +1 -1
  197. package/lib/langium/project/abstract-project-manager.d.ts.map +1 -1
  198. package/lib/langium/project/abstract-project-manager.js +13 -6
  199. package/lib/langium/project/abstract-project-manager.js.map +1 -1
  200. package/lib/langium/project/project-change-event.d.ts +2 -2
  201. package/lib/langium/project/single-project-manager.d.ts.map +1 -1
  202. package/lib/langium/project/single-project-manager.js.map +1 -1
  203. package/lib/langium/residency/cst-residency-service.d.ts +38 -14
  204. package/lib/langium/residency/cst-residency-service.d.ts.map +1 -1
  205. package/lib/langium/residency/cst-residency-service.js +24 -58
  206. package/lib/langium/residency/cst-residency-service.js.map +1 -1
  207. package/lib/langium/scope/ast-node-description-provider.d.ts.map +1 -1
  208. package/lib/langium/scope/ast-node-description-provider.js.map +1 -1
  209. package/lib/langium/scope/fallback-scope.d.ts +27 -0
  210. package/lib/langium/scope/fallback-scope.d.ts.map +1 -0
  211. package/lib/langium/scope/fallback-scope.js +35 -0
  212. package/lib/langium/scope/fallback-scope.js.map +1 -0
  213. package/lib/langium/scope/hydranium-scope-computation.d.ts +21 -18
  214. package/lib/langium/scope/hydranium-scope-computation.d.ts.map +1 -1
  215. package/lib/langium/scope/hydranium-scope-computation.js +38 -39
  216. package/lib/langium/scope/hydranium-scope-computation.js.map +1 -1
  217. package/lib/langium/scope/hydranium-scope-provider.d.ts +29 -11
  218. package/lib/langium/scope/hydranium-scope-provider.d.ts.map +1 -1
  219. package/lib/langium/scope/hydranium-scope-provider.js +37 -15
  220. package/lib/langium/scope/hydranium-scope-provider.js.map +1 -1
  221. package/lib/langium/scope/index.d.ts +1 -0
  222. package/lib/langium/scope/index.d.ts.map +1 -1
  223. package/lib/langium/scope/index.js +1 -0
  224. package/lib/langium/scope/index.js.map +1 -1
  225. package/lib/langium/scope/reference-builder.d.ts.map +1 -1
  226. package/lib/langium/scope/reference-builder.js.map +1 -1
  227. package/lib/langium/scope/reference-candidate-provider.d.ts +6 -5
  228. package/lib/langium/scope/reference-candidate-provider.d.ts.map +1 -1
  229. package/lib/langium/scope/reference-candidate-provider.js +3 -2
  230. package/lib/langium/scope/reference-candidate-provider.js.map +1 -1
  231. package/lib/langium/scope/scope-extension-service.d.ts +41 -37
  232. package/lib/langium/scope/scope-extension-service.d.ts.map +1 -1
  233. package/lib/langium/scope/scope-extension-service.js +57 -29
  234. package/lib/langium/scope/scope-extension-service.js.map +1 -1
  235. package/lib/langium/scope/scoped-ast-node-description.d.ts +1 -3
  236. package/lib/langium/scope/scoped-ast-node-description.d.ts.map +1 -1
  237. package/lib/langium/scope/scoped-ast-node-description.js +1 -3
  238. package/lib/langium/scope/scoped-ast-node-description.js.map +1 -1
  239. package/lib/langium/serialization/abstract-serializer.d.ts +38 -27
  240. package/lib/langium/serialization/abstract-serializer.d.ts.map +1 -1
  241. package/lib/langium/serialization/abstract-serializer.js +54 -30
  242. package/lib/langium/serialization/abstract-serializer.js.map +1 -1
  243. package/lib/langium/serialization/json-serializer.d.ts +8 -1
  244. package/lib/langium/serialization/json-serializer.d.ts.map +1 -1
  245. package/lib/langium/serialization/json-serializer.js +13 -3
  246. package/lib/langium/serialization/json-serializer.js.map +1 -1
  247. package/lib/langium/serialization/serializer.d.ts +1 -1
  248. package/lib/langium/serialization/yaml-serializer.d.ts +4 -0
  249. package/lib/langium/serialization/yaml-serializer.d.ts.map +1 -1
  250. package/lib/langium/serialization/yaml-serializer.js +4 -0
  251. package/lib/langium/serialization/yaml-serializer.js.map +1 -1
  252. package/lib/langium/service-registry.d.ts +29 -1
  253. package/lib/langium/service-registry.d.ts.map +1 -1
  254. package/lib/langium/service-registry.js +37 -0
  255. package/lib/langium/service-registry.js.map +1 -1
  256. package/lib/langium/shared-services.d.ts +13 -7
  257. package/lib/langium/shared-services.d.ts.map +1 -1
  258. package/lib/langium/shared-services.js.map +1 -1
  259. package/lib/langium/single-langium-copy.d.ts +22 -0
  260. package/lib/langium/single-langium-copy.d.ts.map +1 -0
  261. package/lib/langium/single-langium-copy.js +36 -0
  262. package/lib/langium/single-langium-copy.js.map +1 -0
  263. package/lib/langium/transfer/transfer-encoder.d.ts +86 -37
  264. package/lib/langium/transfer/transfer-encoder.d.ts.map +1 -1
  265. package/lib/langium/transfer/transfer-encoder.js +36 -25
  266. package/lib/langium/transfer/transfer-encoder.js.map +1 -1
  267. package/lib/langium/trivia/comment-preserver.d.ts +423 -0
  268. package/lib/langium/trivia/comment-preserver.d.ts.map +1 -0
  269. package/lib/langium/trivia/comment-preserver.js +906 -0
  270. package/lib/langium/trivia/comment-preserver.js.map +1 -0
  271. package/lib/langium/trivia/document-ending-preserver.d.ts +51 -0
  272. package/lib/langium/trivia/document-ending-preserver.d.ts.map +1 -0
  273. package/lib/langium/trivia/document-ending-preserver.js +62 -0
  274. package/lib/langium/trivia/document-ending-preserver.js.map +1 -0
  275. package/lib/langium/trivia/index.d.ts +14 -0
  276. package/lib/langium/trivia/index.d.ts.map +1 -0
  277. package/lib/langium/trivia/index.js +14 -0
  278. package/lib/langium/trivia/index.js.map +1 -0
  279. package/lib/langium/trivia/trivia-contribution.d.ts +37 -0
  280. package/lib/langium/trivia/trivia-contribution.d.ts.map +1 -0
  281. package/lib/langium/trivia/trivia-contribution.js +10 -0
  282. package/lib/langium/trivia/trivia-contribution.js.map +1 -0
  283. package/lib/langium/trivia/trivia-preserver.d.ts +52 -0
  284. package/lib/langium/trivia/trivia-preserver.d.ts.map +1 -0
  285. package/lib/langium/trivia/trivia-preserver.js +10 -0
  286. package/lib/langium/trivia/trivia-preserver.js.map +1 -0
  287. package/lib/langium/trivia/trivia-service.d.ts +70 -0
  288. package/lib/langium/trivia/trivia-service.d.ts.map +1 -0
  289. package/lib/langium/trivia/trivia-service.js +56 -0
  290. package/lib/langium/trivia/trivia-service.js.map +1 -0
  291. package/lib/langium/update-rewrite/normalize-empty-strings.d.ts.map +1 -1
  292. package/lib/langium/update-rewrite/update-rewrite-service.d.ts +1 -1
  293. package/lib/langium/update-rewrite/update-rewrite-service.d.ts.map +1 -1
  294. package/lib/langium/update-rewrite/update-rewrite-service.js.map +1 -1
  295. package/lib/langium/update-rewrite/update-rewrite.d.ts +1 -1
  296. package/lib/langium/validation/document-validator.d.ts +216 -10
  297. package/lib/langium/validation/document-validator.d.ts.map +1 -1
  298. package/lib/langium/validation/document-validator.js +353 -8
  299. package/lib/langium/validation/document-validator.js.map +1 -1
  300. package/lib/langium/validation/validation-contribution-collector.d.ts +9 -1
  301. package/lib/langium/validation/validation-contribution-collector.d.ts.map +1 -1
  302. package/lib/langium/validation/validation-contribution-collector.js +1 -1
  303. package/lib/langium/validation/validation-contribution-collector.js.map +1 -1
  304. package/lib/langium/workspace/document-uri-policy.d.ts +24 -15
  305. package/lib/langium/workspace/document-uri-policy.d.ts.map +1 -1
  306. package/lib/langium/workspace/document-uri-policy.js +22 -13
  307. package/lib/langium/workspace/document-uri-policy.js.map +1 -1
  308. package/lib/langium/workspace/file-not-found.d.ts +23 -0
  309. package/lib/langium/workspace/file-not-found.d.ts.map +1 -0
  310. package/lib/langium/workspace/file-not-found.js +31 -0
  311. package/lib/langium/workspace/file-not-found.js.map +1 -0
  312. package/lib/langium/workspace/file-system-provider.d.ts +167 -8
  313. package/lib/langium/workspace/file-system-provider.d.ts.map +1 -1
  314. package/lib/langium/workspace/file-system-provider.js +115 -13
  315. package/lib/langium/workspace/file-system-provider.js.map +1 -1
  316. package/lib/langium/workspace/hydranium-langium-document-factory.d.ts +31 -1
  317. package/lib/langium/workspace/hydranium-langium-document-factory.d.ts.map +1 -1
  318. package/lib/langium/workspace/hydranium-langium-document-factory.js +54 -0
  319. package/lib/langium/workspace/hydranium-langium-document-factory.js.map +1 -1
  320. package/lib/langium/workspace/hydranium-workspace-lock.d.ts +43 -1
  321. package/lib/langium/workspace/hydranium-workspace-lock.d.ts.map +1 -1
  322. package/lib/langium/workspace/hydranium-workspace-lock.js +58 -1
  323. package/lib/langium/workspace/hydranium-workspace-lock.js.map +1 -1
  324. package/lib/langium/workspace/hydranium-workspace-manager.d.ts +113 -21
  325. package/lib/langium/workspace/hydranium-workspace-manager.d.ts.map +1 -1
  326. package/lib/langium/workspace/hydranium-workspace-manager.js +197 -31
  327. package/lib/langium/workspace/hydranium-workspace-manager.js.map +1 -1
  328. package/lib/langium/workspace/in-memory-file-system-provider.d.ts +26 -9
  329. package/lib/langium/workspace/in-memory-file-system-provider.d.ts.map +1 -1
  330. package/lib/langium/workspace/in-memory-file-system-provider.js +45 -22
  331. package/lib/langium/workspace/in-memory-file-system-provider.js.map +1 -1
  332. package/lib/langium/workspace/index-manager.d.ts.map +1 -1
  333. package/lib/langium/workspace/index-manager.js.map +1 -1
  334. package/lib/langium/workspace/index.d.ts +1 -0
  335. package/lib/langium/workspace/index.d.ts.map +1 -1
  336. package/lib/langium/workspace/index.js +1 -0
  337. package/lib/langium/workspace/index.js.map +1 -1
  338. package/lib/langium/workspace/initialize-workspace.d.ts +40 -3
  339. package/lib/langium/workspace/initialize-workspace.d.ts.map +1 -1
  340. package/lib/langium/workspace/initialize-workspace.js +68 -3
  341. package/lib/langium/workspace/initialize-workspace.js.map +1 -1
  342. package/lib/langium/workspace/langium-documents.d.ts +7 -0
  343. package/lib/langium/workspace/langium-documents.d.ts.map +1 -1
  344. package/lib/langium/workspace/langium-documents.js +18 -1
  345. package/lib/langium/workspace/langium-documents.js.map +1 -1
  346. package/lib/langium/workspace/persistent-file-system-provider.d.ts +16 -10
  347. package/lib/langium/workspace/persistent-file-system-provider.d.ts.map +1 -1
  348. package/lib/langium/workspace/persistent-file-system-provider.js +25 -13
  349. package/lib/langium/workspace/persistent-file-system-provider.js.map +1 -1
  350. package/lib/langium/workspace/self-save-registry.d.ts +84 -0
  351. package/lib/langium/workspace/self-save-registry.d.ts.map +1 -0
  352. package/lib/{documents → langium/workspace}/self-save-registry.js +33 -22
  353. package/lib/langium/workspace/self-save-registry.js.map +1 -0
  354. package/lib/langium/workspace/virtual-document.d.ts +55 -21
  355. package/lib/langium/workspace/virtual-document.d.ts.map +1 -1
  356. package/lib/langium/workspace/virtual-document.js +87 -24
  357. package/lib/langium/workspace/virtual-document.js.map +1 -1
  358. package/lib/langium/workspace/write-lock-scope.d.ts +22 -10
  359. package/lib/langium/workspace/write-lock-scope.d.ts.map +1 -1
  360. package/lib/langium/workspace/write-lock-scope.js +15 -5
  361. package/lib/langium/workspace/write-lock-scope.js.map +1 -1
  362. package/lib/launcher/integrated-server.d.ts +3 -1
  363. package/lib/launcher/integrated-server.d.ts.map +1 -1
  364. package/lib/locale/server-locale.d.ts +29 -5
  365. package/lib/locale/server-locale.d.ts.map +1 -1
  366. package/lib/locale/server-locale.js +12 -2
  367. package/lib/locale/server-locale.js.map +1 -1
  368. package/lib/lsp/completion/hydranium-completion-provider.d.ts +44 -2
  369. package/lib/lsp/completion/hydranium-completion-provider.d.ts.map +1 -1
  370. package/lib/lsp/completion/hydranium-completion-provider.js +68 -0
  371. package/lib/lsp/completion/hydranium-completion-provider.js.map +1 -1
  372. package/lib/lsp/connection-features.d.ts +23 -0
  373. package/lib/lsp/connection-features.d.ts.map +1 -0
  374. package/lib/lsp/connection-features.js +60 -0
  375. package/lib/lsp/connection-features.js.map +1 -0
  376. package/lib/lsp/diagnostics-connection.d.ts +27 -0
  377. package/lib/lsp/diagnostics-connection.d.ts.map +1 -0
  378. package/lib/lsp/diagnostics-connection.js +53 -0
  379. package/lib/lsp/diagnostics-connection.js.map +1 -0
  380. package/lib/lsp/hydranium-document-update-handler.d.ts +126 -82
  381. package/lib/lsp/hydranium-document-update-handler.d.ts.map +1 -1
  382. package/lib/lsp/hydranium-document-update-handler.js +235 -102
  383. package/lib/lsp/hydranium-document-update-handler.js.map +1 -1
  384. package/lib/lsp/index.d.ts +4 -1
  385. package/lib/lsp/index.d.ts.map +1 -1
  386. package/lib/lsp/index.js +4 -1
  387. package/lib/lsp/index.js.map +1 -1
  388. package/lib/lsp/lsp-latency.d.ts +39 -0
  389. package/lib/lsp/lsp-latency.d.ts.map +1 -0
  390. package/lib/lsp/lsp-latency.js +58 -0
  391. package/lib/lsp/lsp-latency.js.map +1 -0
  392. package/lib/lsp/save-text-document.d.ts +31 -0
  393. package/lib/lsp/save-text-document.d.ts.map +1 -0
  394. package/lib/lsp/save-text-document.js +52 -0
  395. package/lib/lsp/save-text-document.js.map +1 -0
  396. package/lib/lsp/semantic-token-provider.d.ts +34 -1
  397. package/lib/lsp/semantic-token-provider.d.ts.map +1 -1
  398. package/lib/lsp/semantic-token-provider.js +55 -8
  399. package/lib/lsp/semantic-token-provider.js.map +1 -1
  400. package/lib/lsp/shared-module.d.ts +4 -8
  401. package/lib/lsp/shared-module.d.ts.map +1 -1
  402. package/lib/lsp/shared-module.js.map +1 -1
  403. package/lib/lsp/start-language-server.d.ts +8 -7
  404. package/lib/lsp/start-language-server.d.ts.map +1 -1
  405. package/lib/lsp/start-language-server.js +13 -7
  406. package/lib/lsp/start-language-server.js.map +1 -1
  407. package/lib/messages/carriers.d.ts +11 -6
  408. package/lib/messages/carriers.d.ts.map +1 -1
  409. package/lib/messages/carriers.js +14 -6
  410. package/lib/messages/carriers.js.map +1 -1
  411. package/lib/messages/index.d.ts +2 -2
  412. package/lib/messages/index.d.ts.map +1 -1
  413. package/lib/messages/index.js +2 -2
  414. package/lib/messages/index.js.map +1 -1
  415. package/lib/messages/renderer.d.ts +32 -7
  416. package/lib/messages/renderer.d.ts.map +1 -1
  417. package/lib/messages/renderer.js +7 -1
  418. package/lib/messages/renderer.js.map +1 -1
  419. package/lib/node/event-loop-monitor.d.ts.map +1 -1
  420. package/lib/node/event-loop-monitor.js +2 -1
  421. package/lib/node/event-loop-monitor.js.map +1 -1
  422. package/lib/node/heap-ceiling.d.ts +61 -0
  423. package/lib/node/heap-ceiling.d.ts.map +1 -0
  424. package/lib/node/heap-ceiling.js +72 -0
  425. package/lib/node/heap-ceiling.js.map +1 -0
  426. package/lib/node/index.d.ts +1 -1
  427. package/lib/node/index.d.ts.map +1 -1
  428. package/lib/node/index.js +5 -1
  429. package/lib/node/index.js.map +1 -1
  430. package/lib/node/latency-from-env.d.ts +1 -1
  431. package/lib/node/latency-from-env.js +1 -1
  432. package/lib/node/lint-grammar.js.map +1 -1
  433. package/lib/node/log-preamble-node.d.ts +5 -3
  434. package/lib/node/log-preamble-node.d.ts.map +1 -1
  435. package/lib/node/log-preamble-node.js +13 -10
  436. package/lib/node/log-preamble-node.js.map +1 -1
  437. package/lib/node/measure-memory.d.ts.map +1 -1
  438. package/lib/node/measure-memory.js +5 -4
  439. package/lib/node/measure-memory.js.map +1 -1
  440. package/lib/node/memory-monitor.d.ts +2 -2
  441. package/lib/node/memory-monitor.d.ts.map +1 -1
  442. package/lib/node/memory-monitor.js +9 -10
  443. package/lib/node/memory-monitor.js.map +1 -1
  444. package/lib/node/node-file-system-provider.d.ts +67 -9
  445. package/lib/node/node-file-system-provider.d.ts.map +1 -1
  446. package/lib/node/node-file-system-provider.js +198 -53
  447. package/lib/node/node-file-system-provider.js.map +1 -1
  448. package/lib/node/profile-capture.d.ts +12 -4
  449. package/lib/node/profile-capture.d.ts.map +1 -1
  450. package/lib/node/profile-capture.js +8 -6
  451. package/lib/node/profile-capture.js.map +1 -1
  452. package/lib/node/profile-digest.js.map +1 -1
  453. package/lib/node/profiling-run.d.ts +13 -3
  454. package/lib/node/profiling-run.d.ts.map +1 -1
  455. package/lib/node/profiling-run.js +17 -8
  456. package/lib/node/profiling-run.js.map +1 -1
  457. package/lib/node/rename-over-open-readers.d.ts +61 -0
  458. package/lib/node/rename-over-open-readers.d.ts.map +1 -0
  459. package/lib/node/rename-over-open-readers.js +80 -0
  460. package/lib/node/rename-over-open-readers.js.map +1 -0
  461. package/lib/node/server-diagnostics.js +1 -1
  462. package/lib/node/server-diagnostics.js.map +1 -1
  463. package/lib/node/server-state-snapshot.js +4 -4
  464. package/lib/node/server-state-snapshot.js.map +1 -1
  465. package/lib/node/socket-launcher.d.ts +43 -7
  466. package/lib/node/socket-launcher.d.ts.map +1 -1
  467. package/lib/node/socket-launcher.js +42 -7
  468. package/lib/node/socket-launcher.js.map +1 -1
  469. package/lib/node/startup-cpu-profile.d.ts +29 -0
  470. package/lib/node/startup-cpu-profile.d.ts.map +1 -0
  471. package/lib/node/startup-cpu-profile.js +91 -0
  472. package/lib/node/startup-cpu-profile.js.map +1 -0
  473. package/lib/node/stdio-launcher.d.ts +13 -13
  474. package/lib/node/stdio-launcher.d.ts.map +1 -1
  475. package/lib/node/stdio-launcher.js +21 -11
  476. package/lib/node/stdio-launcher.js.map +1 -1
  477. package/lib/testing/document-uri-policy-conformance.js +1 -1
  478. package/lib/testing/document-uri-policy-conformance.js.map +1 -1
  479. package/lib/testing/fake-description.js.map +1 -1
  480. package/lib/testing/fake-document.d.ts +2 -1
  481. package/lib/testing/fake-document.d.ts.map +1 -1
  482. package/lib/testing/fake-document.js.map +1 -1
  483. package/lib/testing/index.d.ts +1 -1
  484. package/lib/testing/index.d.ts.map +1 -1
  485. package/lib/testing/index.js +2 -1
  486. package/lib/testing/index.js.map +1 -1
  487. package/lib/testing/langium-test-helpers.d.ts.map +1 -1
  488. package/lib/testing/langium-test-helpers.js +1 -0
  489. package/lib/testing/langium-test-helpers.js.map +1 -1
  490. package/lib/testing/make-noop-language-services.js.map +1 -1
  491. package/lib/testing/make-noop-shared-services.d.ts +4 -4
  492. package/lib/testing/make-noop-shared-services.d.ts.map +1 -1
  493. package/lib/testing/make-noop-shared-services.js +4 -4
  494. package/lib/testing/make-noop-shared-services.js.map +1 -1
  495. package/lib/testing/make-test-services.d.ts +51 -20
  496. package/lib/testing/make-test-services.d.ts.map +1 -1
  497. package/lib/testing/make-test-services.js +29 -13
  498. package/lib/testing/make-test-services.js.map +1 -1
  499. package/lib/testing/make-test-tracer.d.ts +12 -0
  500. package/lib/testing/make-test-tracer.d.ts.map +1 -1
  501. package/lib/testing/make-test-tracer.js +13 -0
  502. package/lib/testing/make-test-tracer.js.map +1 -1
  503. package/lib/testing/node/applied-edit-capture.d.ts +29 -0
  504. package/lib/testing/node/applied-edit-capture.d.ts.map +1 -0
  505. package/lib/testing/node/applied-edit-capture.js +117 -0
  506. package/lib/testing/node/applied-edit-capture.js.map +1 -0
  507. package/lib/testing/node/golden-corpus.js.map +1 -1
  508. package/lib/testing/node/index.d.ts +1 -0
  509. package/lib/testing/node/index.d.ts.map +1 -1
  510. package/lib/testing/node/index.js +1 -0
  511. package/lib/testing/node/index.js.map +1 -1
  512. package/lib/testing/node/lsp-harness.d.ts.map +1 -1
  513. package/lib/testing/node/lsp-harness.js +2 -0
  514. package/lib/testing/node/lsp-harness.js.map +1 -1
  515. package/lib/testing/node/lsp-server-connection.d.ts +21 -6
  516. package/lib/testing/node/lsp-server-connection.d.ts.map +1 -1
  517. package/lib/testing/node/lsp-server-connection.js +49 -106
  518. package/lib/testing/node/lsp-server-connection.js.map +1 -1
  519. package/lib/testing/node/scratch-workspace.d.ts.map +1 -1
  520. package/lib/testing/node/scratch-workspace.js +10 -5
  521. package/lib/testing/node/scratch-workspace.js.map +1 -1
  522. package/lib/testing/node/spawned-server.d.ts +30 -1
  523. package/lib/testing/node/spawned-server.d.ts.map +1 -1
  524. package/lib/testing/node/spawned-server.js +39 -2
  525. package/lib/testing/node/spawned-server.js.map +1 -1
  526. package/lib/testing/node/unhandled-rejections.d.ts +20 -0
  527. package/lib/testing/node/unhandled-rejections.d.ts.map +1 -0
  528. package/lib/testing/node/unhandled-rejections.js +32 -0
  529. package/lib/testing/node/unhandled-rejections.js.map +1 -0
  530. package/lib/testing/playwright/browser-capture-bridge.js.map +1 -1
  531. package/lib/testing/playwright/e2e-profiling.js.map +1 -1
  532. package/lib/testing/playwright/flaky-network-proxy.d.ts +76 -0
  533. package/lib/testing/playwright/flaky-network-proxy.d.ts.map +1 -0
  534. package/lib/testing/playwright/flaky-network-proxy.js +164 -0
  535. package/lib/testing/playwright/flaky-network-proxy.js.map +1 -0
  536. package/lib/testing/playwright/index.d.ts +1 -0
  537. package/lib/testing/playwright/index.d.ts.map +1 -1
  538. package/lib/testing/playwright/index.js +1 -0
  539. package/lib/testing/playwright/index.js.map +1 -1
  540. package/lib/testing/playwright/server-log-capture.d.ts +46 -16
  541. package/lib/testing/playwright/server-log-capture.d.ts.map +1 -1
  542. package/lib/testing/playwright/server-log-capture.js +111 -40
  543. package/lib/testing/playwright/server-log-capture.js.map +1 -1
  544. package/lib/testing/playwright/server-log-fixture.d.ts +16 -0
  545. package/lib/testing/playwright/server-log-fixture.d.ts.map +1 -1
  546. package/lib/testing/playwright/server-log-fixture.js +25 -6
  547. package/lib/testing/playwright/server-log-fixture.js.map +1 -1
  548. package/lib/testing/playwright/server-log-region.d.ts +15 -0
  549. package/lib/testing/playwright/server-log-region.d.ts.map +1 -0
  550. package/lib/testing/playwright/server-log-region.js +30 -0
  551. package/lib/testing/playwright/server-log-region.js.map +1 -0
  552. package/lib/testing/playwright/server-log-rename-reporter.d.ts.map +1 -1
  553. package/lib/testing/playwright/server-log-rename-reporter.js +4 -3
  554. package/lib/testing/playwright/server-log-rename-reporter.js.map +1 -1
  555. package/lib/testing/run-update-pipeline.d.ts +8 -5
  556. package/lib/testing/run-update-pipeline.d.ts.map +1 -1
  557. package/lib/testing/run-update-pipeline.js.map +1 -1
  558. package/lib/testing/stub-ast-document-manager.d.ts +11 -52
  559. package/lib/testing/stub-ast-document-manager.d.ts.map +1 -1
  560. package/lib/testing/stub-ast-document-manager.js +31 -62
  561. package/lib/testing/stub-ast-document-manager.js.map +1 -1
  562. package/lib/testing/stub-document-builder.d.ts +33 -11
  563. package/lib/testing/stub-document-builder.d.ts.map +1 -1
  564. package/lib/testing/stub-document-builder.js +103 -5
  565. package/lib/testing/stub-document-builder.js.map +1 -1
  566. package/lib/testing/stub-hydranium-text-documents.d.ts +33 -10
  567. package/lib/testing/stub-hydranium-text-documents.d.ts.map +1 -1
  568. package/lib/testing/stub-hydranium-text-documents.js +132 -16
  569. package/lib/testing/stub-hydranium-text-documents.js.map +1 -1
  570. package/lib/testing/stub-index-manager.js.map +1 -1
  571. package/lib/testing/stub-langium-documents.d.ts +3 -2
  572. package/lib/testing/stub-langium-documents.d.ts.map +1 -1
  573. package/lib/testing/stub-langium-documents.js.map +1 -1
  574. package/lib/testing/stub-model-service.d.ts +9 -8
  575. package/lib/testing/stub-model-service.d.ts.map +1 -1
  576. package/lib/testing/stub-model-service.js +6 -6
  577. package/lib/testing/stub-model-service.js.map +1 -1
  578. package/lib/testing/stub-project-manager.js.map +1 -1
  579. package/lib/testing/stub-self-save-registry.d.ts +1 -1
  580. package/lib/testing/stub-self-save-registry.d.ts.map +1 -1
  581. package/lib/testing/stub-service-registry.d.ts +1 -1
  582. package/lib/testing/stub-service-registry.js.map +1 -1
  583. package/lib/testing/stub-writable-file-system.d.ts +1 -1
  584. package/lib/testing/stub-writable-file-system.d.ts.map +1 -1
  585. package/lib/testing/stub-writable-file-system.js +2 -1
  586. package/lib/testing/stub-writable-file-system.js.map +1 -1
  587. package/lib/util/connection-liveness.d.ts +19 -6
  588. package/lib/util/connection-liveness.d.ts.map +1 -1
  589. package/lib/util/connection-liveness.js +61 -15
  590. package/lib/util/connection-liveness.js.map +1 -1
  591. package/lib/util/environment.d.ts.map +1 -1
  592. package/lib/util/environment.js.map +1 -1
  593. package/lib/util/registry.d.ts.map +1 -1
  594. package/package.json +39 -58
  595. package/src/browser/host-heads-in-worker.ts +218 -0
  596. package/src/browser/index.ts +17 -0
  597. package/src/browser/indexeddb-file-system-store.ts +192 -0
  598. package/src/browser/start-language-server-in-worker.ts +56 -0
  599. package/src/documents/ast-document-manager.ts +467 -233
  600. package/src/documents/client-ids.ts +5 -22
  601. package/src/documents/client-session-errors.ts +24 -0
  602. package/src/documents/client-session-registry.ts +262 -0
  603. package/src/documents/dirty-state-tracker.ts +167 -0
  604. package/src/documents/document-release-handler.ts +404 -0
  605. package/src/documents/document-release-scheduler.ts +121 -0
  606. package/src/documents/file-system-task-queue.ts +74 -0
  607. package/src/documents/hydranium-text-documents.ts +1011 -595
  608. package/src/documents/index.ts +10 -2
  609. package/src/documents/language-client-shadow.ts +501 -0
  610. package/src/documents/model-ledger.ts +66 -0
  611. package/src/documents/text-ledger.ts +112 -0
  612. package/src/documents/version-sync-service.ts +275 -0
  613. package/src/index.ts +7 -0
  614. package/src/langium/ast-extension/ast-extension-service.ts +77 -41
  615. package/src/langium/ast-extension/ast-node-builder.ts +35 -13
  616. package/src/langium/bootstrap.ts +87 -51
  617. package/src/langium/build-phase-pass/build-phase-pass-service.ts +29 -19
  618. package/src/langium/build-phase-pass/build-phase-pass.ts +37 -8
  619. package/src/langium/composite-ast-reflection.ts +112 -0
  620. package/src/langium/config/configuration-provider.ts +119 -0
  621. package/src/langium/config/index.ts +1 -0
  622. package/src/langium/diagnostics/hydranium-langium-profiler.ts +15 -39
  623. package/src/langium/diagnostics/log-preamble.ts +1 -1
  624. package/src/langium/diagnostics/logger.ts +38 -11
  625. package/src/langium/diagnostics/lsp-logger.ts +61 -16
  626. package/src/langium/document-builder/build-pipeline-integration.ts +46 -32
  627. package/src/langium/document-builder/build-session.ts +4 -3
  628. package/src/langium/document-builder/document-builder.ts +553 -78
  629. package/src/langium/integration-services.ts +59 -28
  630. package/src/langium/integrity/integrity-rule.ts +17 -8
  631. package/src/langium/integrity/integrity-service.ts +332 -69
  632. package/src/langium/keys/containment.ts +87 -0
  633. package/src/langium/keys/index.ts +1 -0
  634. package/src/langium/keys/name-based-key-provider.ts +4 -0
  635. package/src/langium/language-module.ts +49 -8
  636. package/src/langium/model-service/client-session.ts +718 -0
  637. package/src/langium/model-service/index.ts +2 -0
  638. package/src/langium/model-service/model-events.ts +80 -0
  639. package/src/langium/model-service/model-service.ts +878 -486
  640. package/src/langium/module.ts +195 -72
  641. package/src/langium/naming/name-provider.ts +34 -8
  642. package/src/langium/project/abstract-project-manager.ts +13 -5
  643. package/src/langium/project/project-change-event.ts +2 -2
  644. package/src/langium/residency/cst-residency-service.ts +54 -19
  645. package/src/langium/scope/fallback-scope.ts +38 -0
  646. package/src/langium/scope/hydranium-scope-computation.ts +45 -44
  647. package/src/langium/scope/hydranium-scope-provider.ts +49 -16
  648. package/src/langium/scope/index.ts +1 -0
  649. package/src/langium/scope/reference-candidate-provider.ts +6 -5
  650. package/src/langium/scope/scope-extension-service.ts +74 -59
  651. package/src/langium/scope/scoped-ast-node-description.ts +1 -3
  652. package/src/langium/serialization/abstract-serializer.ts +57 -41
  653. package/src/langium/serialization/json-serializer.ts +14 -3
  654. package/src/langium/serialization/serializer.ts +1 -1
  655. package/src/langium/serialization/yaml-serializer.ts +4 -0
  656. package/src/langium/service-registry.ts +41 -2
  657. package/src/langium/shared-services.ts +16 -7
  658. package/src/langium/single-langium-copy.ts +42 -0
  659. package/src/langium/transfer/transfer-encoder.ts +104 -47
  660. package/src/langium/trivia/comment-preserver.ts +1100 -0
  661. package/src/langium/trivia/document-ending-preserver.ts +71 -0
  662. package/src/langium/trivia/index.ts +14 -0
  663. package/src/langium/trivia/trivia-contribution.ts +39 -0
  664. package/src/langium/trivia/trivia-preserver.ts +56 -0
  665. package/src/langium/trivia/trivia-service.ts +99 -0
  666. package/src/langium/update-rewrite/update-rewrite-service.ts +1 -1
  667. package/src/langium/update-rewrite/update-rewrite.ts +1 -1
  668. package/src/langium/validation/document-validator.ts +411 -12
  669. package/src/langium/validation/validation-contribution-collector.ts +10 -1
  670. package/src/langium/workspace/document-uri-policy.ts +32 -18
  671. package/src/langium/workspace/file-not-found.ts +35 -0
  672. package/src/langium/workspace/file-system-provider.ts +258 -16
  673. package/src/langium/workspace/hydranium-langium-document-factory.ts +83 -0
  674. package/src/langium/workspace/hydranium-workspace-lock.ts +86 -2
  675. package/src/langium/workspace/hydranium-workspace-manager.ts +224 -35
  676. package/src/langium/workspace/in-memory-file-system-provider.ts +54 -23
  677. package/src/langium/workspace/index.ts +1 -0
  678. package/src/langium/workspace/initialize-workspace.ts +96 -4
  679. package/src/langium/workspace/langium-documents.ts +19 -1
  680. package/src/langium/workspace/persistent-file-system-provider.ts +27 -15
  681. package/src/langium/workspace/self-save-registry.ts +118 -0
  682. package/src/langium/workspace/virtual-document.ts +106 -25
  683. package/src/langium/workspace/write-lock-scope.ts +27 -12
  684. package/src/launcher/integrated-server.ts +3 -1
  685. package/src/locale/server-locale.ts +31 -6
  686. package/src/lsp/completion/hydranium-completion-provider.ts +82 -2
  687. package/src/lsp/connection-features.ts +67 -0
  688. package/src/lsp/diagnostics-connection.ts +56 -0
  689. package/src/lsp/hydranium-document-update-handler.ts +285 -111
  690. package/src/lsp/index.ts +4 -1
  691. package/src/lsp/lsp-latency.ts +62 -0
  692. package/src/lsp/save-text-document.ts +63 -0
  693. package/src/lsp/semantic-token-provider.ts +74 -7
  694. package/src/lsp/shared-module.ts +4 -8
  695. package/src/lsp/start-language-server.ts +13 -7
  696. package/src/messages/carriers.ts +15 -7
  697. package/src/messages/index.ts +11 -2
  698. package/src/messages/renderer.ts +34 -6
  699. package/src/node/event-loop-monitor.ts +2 -1
  700. package/src/node/heap-ceiling.ts +108 -0
  701. package/src/node/index.ts +5 -1
  702. package/src/node/latency-from-env.ts +1 -1
  703. package/src/node/log-preamble-node.ts +20 -10
  704. package/src/node/measure-memory.ts +5 -4
  705. package/src/node/memory-monitor.ts +10 -10
  706. package/src/node/node-file-system-provider.ts +214 -57
  707. package/src/node/profile-capture.ts +16 -15
  708. package/src/node/profiling-run.ts +30 -8
  709. package/src/node/rename-over-open-readers.ts +94 -0
  710. package/src/node/server-diagnostics.ts +1 -1
  711. package/src/node/server-state-snapshot.ts +5 -5
  712. package/src/node/socket-launcher.ts +78 -14
  713. package/src/node/startup-cpu-profile.ts +94 -0
  714. package/src/node/stdio-launcher.ts +29 -19
  715. package/src/testing/document-uri-policy-conformance.ts +1 -1
  716. package/src/testing/fake-document.ts +2 -1
  717. package/src/testing/index.ts +2 -1
  718. package/src/testing/langium-test-helpers.ts +1 -0
  719. package/src/testing/make-noop-shared-services.ts +6 -6
  720. package/src/testing/make-test-services.ts +93 -41
  721. package/src/testing/make-test-tracer.ts +26 -0
  722. package/src/testing/node/applied-edit-capture.ts +141 -0
  723. package/src/testing/node/index.ts +1 -0
  724. package/src/testing/node/lsp-harness.ts +2 -0
  725. package/src/testing/node/lsp-server-connection.ts +83 -119
  726. package/src/testing/node/scratch-workspace.ts +10 -5
  727. package/src/testing/node/spawned-server.ts +57 -3
  728. package/src/testing/node/unhandled-rejections.ts +31 -0
  729. package/src/testing/parse-semantic-root.ts +1 -1
  730. package/src/testing/playwright/flaky-network-proxy.ts +240 -0
  731. package/src/testing/playwright/index.ts +1 -0
  732. package/src/testing/playwright/server-log-capture.ts +137 -47
  733. package/src/testing/playwright/server-log-fixture.ts +46 -6
  734. package/src/testing/playwright/server-log-region.ts +32 -0
  735. package/src/testing/playwright/server-log-rename-reporter.ts +4 -3
  736. package/src/testing/run-update-pipeline.ts +8 -5
  737. package/src/testing/stub-ast-document-manager.ts +47 -128
  738. package/src/testing/stub-document-builder.ts +133 -18
  739. package/src/testing/stub-hydranium-text-documents.ts +184 -27
  740. package/src/testing/stub-langium-documents.ts +3 -2
  741. package/src/testing/stub-model-service.ts +11 -10
  742. package/src/testing/stub-self-save-registry.ts +1 -1
  743. package/src/testing/stub-service-registry.ts +1 -1
  744. package/src/testing/stub-writable-file-system.ts +3 -2
  745. package/src/util/connection-liveness.ts +67 -15
  746. package/src/util/environment.ts +9 -1
  747. package/lib/documents/language-client-text-shadow.d.ts +0 -101
  748. package/lib/documents/language-client-text-shadow.d.ts.map +0 -1
  749. package/lib/documents/language-client-text-shadow.js +0 -156
  750. package/lib/documents/language-client-text-shadow.js.map +0 -1
  751. package/lib/documents/self-save-registry.d.ts +0 -55
  752. package/lib/documents/self-save-registry.d.ts.map +0 -1
  753. package/lib/documents/self-save-registry.js.map +0 -1
  754. package/lib/lsp/instrument-connection.d.ts +0 -36
  755. package/lib/lsp/instrument-connection.d.ts.map +0 -1
  756. package/lib/lsp/instrument-connection.js +0 -62
  757. package/lib/lsp/instrument-connection.js.map +0 -1
  758. package/lib/node/process-memory.d.ts +0 -66
  759. package/lib/node/process-memory.d.ts.map +0 -1
  760. package/lib/node/process-memory.js +0 -252
  761. package/lib/node/process-memory.js.map +0 -1
  762. package/src/documents/language-client-text-shadow.ts +0 -175
  763. package/src/documents/self-save-registry.ts +0 -81
  764. package/src/lsp/instrument-connection.ts +0 -66
  765. package/src/node/process-memory.ts +0 -299
@@ -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,6 +7,7 @@
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;
@@ -25,8 +26,16 @@ export interface ProgrammaticInitOptions {
25
26
  * Omitted means no locale, which the default renderer resolves as the
26
27
  * framework's English. That is the correct answer for a headless tool: it
27
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.
28
37
  */
29
- readonly locale?: string;
38
+ readonly locale?: Locale;
30
39
  }
31
40
  /**
32
41
  * Initialize a hydranium workspace **without an LSP `initialize` request** —
@@ -50,14 +59,42 @@ export interface ProgrammaticInitOptions {
50
59
  * negotiation, `onInitialize`/`onInitialized` events) are intentionally not
51
60
  * reproduced — a headless server has no client and they degrade gracefully.
52
61
  *
53
- * Invoke once during headless startup; this is not a re-initialization API.
54
- * Errors from discovery/build propagate to the caller.
62
+ * Runs once per workspace manager: a later call naming the same folders, in
63
+ * any order, gets the first call's promise, and one naming others throws
64
+ * synchronously. A second initialisation would cancel the first one's build
65
+ * and leave the documents unbuilt, which happens as soon as a starter and its
66
+ * caller both bring the workspace up. Errors from discovery/build propagate to
67
+ * the caller.
55
68
  *
56
69
  * @param services the shared services tree the workspace manager lives on
57
70
  * @param folders one or more workspace roots (filesystem paths or URIs)
58
71
  * @param options the message locale, when the caller has one
59
72
  */
60
73
  export declare function initializeWorkspaceProgrammatically(services: ServerSharedServicesMinimal, folders: WorkspaceFolderInput | ReadonlyArray<WorkspaceFolderInput>, options?: ProgrammaticInitOptions): Promise<void>;
74
+ /**
75
+ * Whether the services were composed around an LSP connection, which is what
76
+ * makes an LSP head present: its client's `initialize`/`initialized` pair then
77
+ * brings the workspace up, and nothing else should.
78
+ */
79
+ export declare function hasLspConnection(shared: ServerSharedServicesMinimal): boolean;
80
+ /**
81
+ * The starters' workspace bring-up: {@link initializeWorkspaceProgrammatically}
82
+ * on `workspace` when no LSP head is present, nothing when one is.
83
+ *
84
+ * Without an LSP head nothing else initialises the workspace, and a head
85
+ * serving from it answers without an error but wrongly: a diagram loads with
86
+ * its cross-file references unresolved. So a missing `workspace` there throws,
87
+ * and so does one given beside an LSP head, whose client names the folders
88
+ * itself. Both throw synchronously, before anything starts, so a starter can
89
+ * tell its caller's mistake from a failed initialisation, which the workspace
90
+ * manager logs. The initialisation is queued on the workspace lock
91
+ * synchronously too: a request that settles before it is queued keeps its
92
+ * unresolved references for good.
93
+ *
94
+ * Two starters on one services tree each name the workspace, and share one
95
+ * initialisation: see {@link initializeWorkspaceProgrammatically}.
96
+ */
97
+ export declare function initializeWorkspaceWithoutLsp(shared: ServerSharedServicesMinimal, workspace: WorkspaceFolderInput | ReadonlyArray<WorkspaceFolderInput> | undefined, options?: ProgrammaticInitOptions): Promise<void>;
61
98
  /**
62
99
  * {@link initializeWorkspaceProgrammatically} **and then build every registered
63
100
  * document to `Validated`** — the "fully-built workspace" convenience for
@@ -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;;;;;GAKG;AACH,MAAM,WAAW,uBAAuB;IACrC;;;;;;;;OAQG;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"}
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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,wBAAgB,mCAAmC,CAChD,QAAQ,EAAE,2BAA2B,EACrC,OAAO,EAAE,oBAAoB,GAAG,aAAa,CAAC,oBAAoB,CAAC,EACnE,OAAO,GAAE,uBAA4B,GACrC,OAAO,CAAC,IAAI,CAAC,CAoBf;AAuBD;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,2BAA2B,GAAG,OAAO,CAG7E;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,6BAA6B,CAC1C,MAAM,EAAE,2BAA2B,EACnC,SAAS,EAAE,oBAAoB,GAAG,aAAa,CAAC,oBAAoB,CAAC,GAAG,SAAS,EACjF,OAAO,GAAE,uBAA4B,GACrC,OAAO,CAAC,IAAI,CAAC,CAmBf;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"}
@@ -45,16 +45,39 @@ function toWorkspaceFolders(folders) {
45
45
  * negotiation, `onInitialize`/`onInitialized` events) are intentionally not
46
46
  * reproduced — a headless server has no client and they degrade gracefully.
47
47
  *
48
- * Invoke once during headless startup; this is not a re-initialization API.
49
- * Errors from discovery/build propagate to the caller.
48
+ * Runs once per workspace manager: a later call naming the same folders, in
49
+ * any order, gets the first call's promise, and one naming others throws
50
+ * synchronously. A second initialisation would cancel the first one's build
51
+ * and leave the documents unbuilt, which happens as soon as a starter and its
52
+ * caller both bring the workspace up. Errors from discovery/build propagate to
53
+ * the caller.
50
54
  *
51
55
  * @param services the shared services tree the workspace manager lives on
52
56
  * @param folders one or more workspace roots (filesystem paths or URIs)
53
57
  * @param options the message locale, when the caller has one
54
58
  */
55
- export async function initializeWorkspaceProgrammatically(services, folders, options = {}) {
59
+ export function initializeWorkspaceProgrammatically(services, folders, options = {}) {
56
60
  const workspaceFolders = toWorkspaceFolders(folders);
57
61
  const manager = services.workspace.WorkspaceManager;
62
+ const key = workspaceFolders
63
+ .map(folder => folder.uri)
64
+ .sort()
65
+ .join('\n');
66
+ const running = bringUps.get(manager);
67
+ if (running !== undefined) {
68
+ if (running.folders !== key) {
69
+ throw new Error(`[hydranium] the workspace is already initialised from ${running.folders.replace(/\n/g, ', ')}; ` +
70
+ 'every caller on one services tree has to name the same folders.');
71
+ }
72
+ return running.promise;
73
+ }
74
+ const promise = initialize(manager, workspaceFolders, options);
75
+ bringUps.set(manager, { folders: key, promise });
76
+ return promise;
77
+ }
78
+ /** The programmatic initialisation running on each workspace manager, with the folders it names. */
79
+ const bringUps = new WeakMap();
80
+ async function initialize(manager, workspaceFolders, options) {
58
81
  // `locale` goes through the synthesized params rather than a direct
59
82
  // `acceptLocale` call, so this seam and a real LSP `initialize` reach the
60
83
  // slot by the SAME path — an adopter overriding the capture in
@@ -67,6 +90,48 @@ export async function initializeWorkspaceProgrammatically(services, folders, opt
67
90
  manager.initialize({ workspaceFolders, locale: options.locale });
68
91
  await manager.initialized({});
69
92
  }
93
+ /**
94
+ * Whether the services were composed around an LSP connection, which is what
95
+ * makes an LSP head present: its client's `initialize`/`initialized` pair then
96
+ * brings the workspace up, and nothing else should.
97
+ */
98
+ export function hasLspConnection(shared) {
99
+ const lsp = 'lsp' in shared ? shared.lsp : undefined;
100
+ return typeof lsp === 'object' && lsp !== null && 'Connection' in lsp && lsp.Connection !== undefined;
101
+ }
102
+ /**
103
+ * The starters' workspace bring-up: {@link initializeWorkspaceProgrammatically}
104
+ * on `workspace` when no LSP head is present, nothing when one is.
105
+ *
106
+ * Without an LSP head nothing else initialises the workspace, and a head
107
+ * serving from it answers without an error but wrongly: a diagram loads with
108
+ * its cross-file references unresolved. So a missing `workspace` there throws,
109
+ * and so does one given beside an LSP head, whose client names the folders
110
+ * itself. Both throw synchronously, before anything starts, so a starter can
111
+ * tell its caller's mistake from a failed initialisation, which the workspace
112
+ * manager logs. The initialisation is queued on the workspace lock
113
+ * synchronously too: a request that settles before it is queued keeps its
114
+ * unresolved references for good.
115
+ *
116
+ * Two starters on one services tree each name the workspace, and share one
117
+ * initialisation: see {@link initializeWorkspaceProgrammatically}.
118
+ */
119
+ export function initializeWorkspaceWithoutLsp(shared, workspace, options = {}) {
120
+ if (hasLspConnection(shared)) {
121
+ if (workspace !== undefined) {
122
+ throw new Error('[hydranium] a workspace was given to a starter beside an LSP head, whose client names the folders in `initialize`. ' +
123
+ "Drop the starter's `workspace`.");
124
+ }
125
+ return Promise.resolve();
126
+ }
127
+ // An empty list too: Langium initialises zero folders without complaint,
128
+ // and the heads would serve an empty workspace.
129
+ if (workspace === undefined || toWorkspaceFolders(workspace).length === 0) {
130
+ throw new Error('[hydranium] no LSP head is composed, so nothing initialises the workspace. ' +
131
+ 'Name its root to the starter: `workspace`, or `rootUri` on `hostHeadsInWorker`.');
132
+ }
133
+ return initializeWorkspaceProgrammatically(shared, workspace, options);
134
+ }
70
135
  /**
71
136
  * {@link initializeWorkspaceProgrammatically} **and then build every registered
72
137
  * document to `Validated`** — the "fully-built workspace" convenience for
@@ -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;AA0B7B;;;;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,UAAmC,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,UAAmC,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"}
1
+ {"version":3,"file":"initialize-workspace.js","sourceRoot":"","sources":["../../../src/langium/workspace/initialize-workspace.ts"],"names":[],"mappings":"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"}
@@ -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,9 +164,14 @@ 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
- protected storeUri(path: string): URI;
174
+ storeUri(path: string): URI;
169
175
  /** Mirror one write. `async` so a bad key rejects rather than throwing at the call site. */
170
176
  protected persist(uri: URI, content: string): Promise<void>;
171
177
  /**
@@ -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,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,GAAG,CAE1B;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"}