@hydranium/core 1.0.0-next.31 → 1.0.0-next.313

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 (769) 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 +897 -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 +5 -0
  75. package/lib/index.d.ts.map +1 -1
  76. package/lib/index.js +8 -0
  77. package/lib/index.js.map +1 -1
  78. package/lib/langium/ast-extension/ast-extension-service.d.ts +42 -31
  79. package/lib/langium/ast-extension/ast-extension-service.d.ts.map +1 -1
  80. package/lib/langium/ast-extension/ast-extension-service.js +45 -19
  81. package/lib/langium/ast-extension/ast-extension-service.js.map +1 -1
  82. package/lib/langium/bootstrap.d.ts +49 -36
  83. package/lib/langium/bootstrap.d.ts.map +1 -1
  84. package/lib/langium/bootstrap.js +91 -45
  85. package/lib/langium/bootstrap.js.map +1 -1
  86. package/lib/langium/build-phase-pass/build-phase-pass-service.d.ts +9 -9
  87. package/lib/langium/build-phase-pass/build-phase-pass-service.d.ts.map +1 -1
  88. package/lib/langium/build-phase-pass/build-phase-pass-service.js +25 -16
  89. package/lib/langium/build-phase-pass/build-phase-pass-service.js.map +1 -1
  90. package/lib/langium/build-phase-pass/build-phase-pass.d.ts +20 -8
  91. package/lib/langium/build-phase-pass/build-phase-pass.d.ts.map +1 -1
  92. package/lib/langium/build-phase-pass/build-phase-pass.js +20 -0
  93. package/lib/langium/build-phase-pass/build-phase-pass.js.map +1 -1
  94. package/lib/langium/composite-ast-reflection.d.ts +46 -0
  95. package/lib/langium/composite-ast-reflection.d.ts.map +1 -0
  96. package/lib/langium/composite-ast-reflection.js +97 -0
  97. package/lib/langium/composite-ast-reflection.js.map +1 -0
  98. package/lib/langium/config/configuration-provider.d.ts +81 -0
  99. package/lib/langium/config/configuration-provider.d.ts.map +1 -0
  100. package/lib/langium/config/configuration-provider.js +112 -0
  101. package/lib/langium/config/configuration-provider.js.map +1 -0
  102. package/lib/langium/config/index.d.ts +1 -0
  103. package/lib/langium/config/index.d.ts.map +1 -1
  104. package/lib/langium/config/index.js +1 -0
  105. package/lib/langium/config/index.js.map +1 -1
  106. package/lib/langium/config/settings.js.map +1 -1
  107. package/lib/langium/diagnostics/hydranium-langium-profiler.d.ts +9 -20
  108. package/lib/langium/diagnostics/hydranium-langium-profiler.d.ts.map +1 -1
  109. package/lib/langium/diagnostics/hydranium-langium-profiler.js +15 -24
  110. package/lib/langium/diagnostics/hydranium-langium-profiler.js.map +1 -1
  111. package/lib/langium/diagnostics/log-preamble.js +1 -1
  112. package/lib/langium/diagnostics/log-preamble.js.map +1 -1
  113. package/lib/langium/diagnostics/logger.d.ts +19 -4
  114. package/lib/langium/diagnostics/logger.d.ts.map +1 -1
  115. package/lib/langium/diagnostics/logger.js +36 -11
  116. package/lib/langium/diagnostics/logger.js.map +1 -1
  117. package/lib/langium/diagnostics/lsp-logger.d.ts +17 -0
  118. package/lib/langium/diagnostics/lsp-logger.d.ts.map +1 -1
  119. package/lib/langium/diagnostics/lsp-logger.js +58 -17
  120. package/lib/langium/diagnostics/lsp-logger.js.map +1 -1
  121. package/lib/langium/diagnostics/server-tracer.d.ts.map +1 -1
  122. package/lib/langium/diagnostics/server-tracer.js.map +1 -1
  123. package/lib/langium/document-builder/build-pipeline-integration.d.ts +21 -1
  124. package/lib/langium/document-builder/build-pipeline-integration.d.ts.map +1 -1
  125. package/lib/langium/document-builder/build-pipeline-integration.js +28 -30
  126. package/lib/langium/document-builder/build-pipeline-integration.js.map +1 -1
  127. package/lib/langium/document-builder/build-session.d.ts +6 -5
  128. package/lib/langium/document-builder/build-session.d.ts.map +1 -1
  129. package/lib/langium/document-builder/build-session.js +5 -5
  130. package/lib/langium/document-builder/build-session.js.map +1 -1
  131. package/lib/langium/document-builder/document-builder.d.ts +309 -35
  132. package/lib/langium/document-builder/document-builder.d.ts.map +1 -1
  133. package/lib/langium/document-builder/document-builder.js +511 -75
  134. package/lib/langium/document-builder/document-builder.js.map +1 -1
  135. package/lib/langium/documentation/comment-provider.d.ts.map +1 -1
  136. package/lib/langium/documentation/comment-provider.js.map +1 -1
  137. package/lib/langium/integration-services.d.ts +40 -24
  138. package/lib/langium/integration-services.d.ts.map +1 -1
  139. package/lib/langium/integration-services.js +7 -4
  140. package/lib/langium/integration-services.js.map +1 -1
  141. package/lib/langium/integrity/integrity-rule.d.ts +16 -8
  142. package/lib/langium/integrity/integrity-rule.d.ts.map +1 -1
  143. package/lib/langium/integrity/integrity-rule.js.map +1 -1
  144. package/lib/langium/integrity/integrity-service.d.ts +83 -27
  145. package/lib/langium/integrity/integrity-service.d.ts.map +1 -1
  146. package/lib/langium/integrity/integrity-service.js +273 -63
  147. package/lib/langium/integrity/integrity-service.js.map +1 -1
  148. package/lib/langium/keys/containment.d.ts +64 -0
  149. package/lib/langium/keys/containment.d.ts.map +1 -0
  150. package/lib/langium/keys/containment.js +53 -0
  151. package/lib/langium/keys/containment.js.map +1 -0
  152. package/lib/langium/keys/index.d.ts +1 -0
  153. package/lib/langium/keys/index.d.ts.map +1 -1
  154. package/lib/langium/keys/index.js +1 -0
  155. package/lib/langium/keys/index.js.map +1 -1
  156. package/lib/langium/keys/name-based-key-provider.d.ts +4 -0
  157. package/lib/langium/keys/name-based-key-provider.d.ts.map +1 -1
  158. package/lib/langium/keys/name-based-key-provider.js +4 -0
  159. package/lib/langium/keys/name-based-key-provider.js.map +1 -1
  160. package/lib/langium/keys/positional-key-provider.d.ts.map +1 -1
  161. package/lib/langium/keys/positional-key-provider.js.map +1 -1
  162. package/lib/langium/labeling/label-provider.d.ts.map +1 -1
  163. package/lib/langium/labeling/label-provider.js.map +1 -1
  164. package/lib/langium/language-module.d.ts +30 -5
  165. package/lib/langium/language-module.d.ts.map +1 -1
  166. package/lib/langium/language-module.js +18 -4
  167. package/lib/langium/language-module.js.map +1 -1
  168. package/lib/langium/model-service/client-session.d.ts +383 -0
  169. package/lib/langium/model-service/client-session.d.ts.map +1 -0
  170. package/lib/langium/model-service/client-session.js +455 -0
  171. package/lib/langium/model-service/client-session.js.map +1 -0
  172. package/lib/langium/model-service/index.d.ts +2 -0
  173. package/lib/langium/model-service/index.d.ts.map +1 -1
  174. package/lib/langium/model-service/index.js +2 -0
  175. package/lib/langium/model-service/index.js.map +1 -1
  176. package/lib/langium/model-service/model-events.d.ts +66 -0
  177. package/lib/langium/model-service/model-events.d.ts.map +1 -0
  178. package/lib/langium/model-service/model-events.js +10 -0
  179. package/lib/langium/model-service/model-events.js.map +1 -0
  180. package/lib/langium/model-service/model-service.d.ts +480 -289
  181. package/lib/langium/model-service/model-service.d.ts.map +1 -1
  182. package/lib/langium/model-service/model-service.js +597 -456
  183. package/lib/langium/model-service/model-service.js.map +1 -1
  184. package/lib/langium/module.d.ts +158 -37
  185. package/lib/langium/module.d.ts.map +1 -1
  186. package/lib/langium/module.js +52 -36
  187. package/lib/langium/module.js.map +1 -1
  188. package/lib/langium/naming/name-provider.d.ts +42 -7
  189. package/lib/langium/naming/name-provider.d.ts.map +1 -1
  190. package/lib/langium/naming/name-provider.js +10 -4
  191. package/lib/langium/naming/name-provider.js.map +1 -1
  192. package/lib/langium/naming/name-separator-validation.d.ts +23 -1
  193. package/lib/langium/naming/name-separator-validation.d.ts.map +1 -1
  194. package/lib/langium/naming/name-separator-validation.js +22 -0
  195. package/lib/langium/naming/name-separator-validation.js.map +1 -1
  196. package/lib/langium/project/abstract-project-manager.d.ts.map +1 -1
  197. package/lib/langium/project/abstract-project-manager.js +13 -6
  198. package/lib/langium/project/abstract-project-manager.js.map +1 -1
  199. package/lib/langium/project/project-change-event.d.ts +2 -2
  200. package/lib/langium/project/single-project-manager.d.ts.map +1 -1
  201. package/lib/langium/project/single-project-manager.js.map +1 -1
  202. package/lib/langium/residency/cst-residency-service.d.ts +38 -14
  203. package/lib/langium/residency/cst-residency-service.d.ts.map +1 -1
  204. package/lib/langium/residency/cst-residency-service.js +24 -58
  205. package/lib/langium/residency/cst-residency-service.js.map +1 -1
  206. package/lib/langium/scope/ast-node-description-provider.d.ts.map +1 -1
  207. package/lib/langium/scope/ast-node-description-provider.js.map +1 -1
  208. package/lib/langium/scope/fallback-scope.d.ts +27 -0
  209. package/lib/langium/scope/fallback-scope.d.ts.map +1 -0
  210. package/lib/langium/scope/fallback-scope.js +35 -0
  211. package/lib/langium/scope/fallback-scope.js.map +1 -0
  212. package/lib/langium/scope/hydranium-scope-computation.d.ts +21 -18
  213. package/lib/langium/scope/hydranium-scope-computation.d.ts.map +1 -1
  214. package/lib/langium/scope/hydranium-scope-computation.js +38 -39
  215. package/lib/langium/scope/hydranium-scope-computation.js.map +1 -1
  216. package/lib/langium/scope/hydranium-scope-provider.d.ts +29 -11
  217. package/lib/langium/scope/hydranium-scope-provider.d.ts.map +1 -1
  218. package/lib/langium/scope/hydranium-scope-provider.js +37 -15
  219. package/lib/langium/scope/hydranium-scope-provider.js.map +1 -1
  220. package/lib/langium/scope/index.d.ts +1 -0
  221. package/lib/langium/scope/index.d.ts.map +1 -1
  222. package/lib/langium/scope/index.js +1 -0
  223. package/lib/langium/scope/index.js.map +1 -1
  224. package/lib/langium/scope/reference-builder.d.ts.map +1 -1
  225. package/lib/langium/scope/reference-builder.js.map +1 -1
  226. package/lib/langium/scope/reference-candidate-provider.d.ts +6 -5
  227. package/lib/langium/scope/reference-candidate-provider.d.ts.map +1 -1
  228. package/lib/langium/scope/reference-candidate-provider.js +3 -2
  229. package/lib/langium/scope/reference-candidate-provider.js.map +1 -1
  230. package/lib/langium/scope/scope-extension-service.d.ts +41 -37
  231. package/lib/langium/scope/scope-extension-service.d.ts.map +1 -1
  232. package/lib/langium/scope/scope-extension-service.js +57 -29
  233. package/lib/langium/scope/scope-extension-service.js.map +1 -1
  234. package/lib/langium/scope/scoped-ast-node-description.d.ts +1 -3
  235. package/lib/langium/scope/scoped-ast-node-description.d.ts.map +1 -1
  236. package/lib/langium/scope/scoped-ast-node-description.js +1 -3
  237. package/lib/langium/scope/scoped-ast-node-description.js.map +1 -1
  238. package/lib/langium/serialization/abstract-serializer.d.ts +38 -27
  239. package/lib/langium/serialization/abstract-serializer.d.ts.map +1 -1
  240. package/lib/langium/serialization/abstract-serializer.js +54 -30
  241. package/lib/langium/serialization/abstract-serializer.js.map +1 -1
  242. package/lib/langium/serialization/json-serializer.d.ts +8 -1
  243. package/lib/langium/serialization/json-serializer.d.ts.map +1 -1
  244. package/lib/langium/serialization/json-serializer.js +13 -3
  245. package/lib/langium/serialization/json-serializer.js.map +1 -1
  246. package/lib/langium/serialization/serializer.d.ts +1 -1
  247. package/lib/langium/serialization/yaml-serializer.d.ts +4 -0
  248. package/lib/langium/serialization/yaml-serializer.d.ts.map +1 -1
  249. package/lib/langium/serialization/yaml-serializer.js +4 -0
  250. package/lib/langium/serialization/yaml-serializer.js.map +1 -1
  251. package/lib/langium/service-registry.d.ts +29 -1
  252. package/lib/langium/service-registry.d.ts.map +1 -1
  253. package/lib/langium/service-registry.js +37 -0
  254. package/lib/langium/service-registry.js.map +1 -1
  255. package/lib/langium/shared-services.d.ts +23 -6
  256. package/lib/langium/shared-services.d.ts.map +1 -1
  257. package/lib/langium/shared-services.js.map +1 -1
  258. package/lib/langium/single-langium-copy.d.ts +22 -0
  259. package/lib/langium/single-langium-copy.d.ts.map +1 -0
  260. package/lib/langium/single-langium-copy.js +36 -0
  261. package/lib/langium/single-langium-copy.js.map +1 -0
  262. package/lib/langium/transfer/transfer-encoder.d.ts +84 -35
  263. package/lib/langium/transfer/transfer-encoder.d.ts.map +1 -1
  264. package/lib/langium/transfer/transfer-encoder.js +34 -23
  265. package/lib/langium/transfer/transfer-encoder.js.map +1 -1
  266. package/lib/langium/trivia/comment-preserver.d.ts +423 -0
  267. package/lib/langium/trivia/comment-preserver.d.ts.map +1 -0
  268. package/lib/langium/trivia/comment-preserver.js +906 -0
  269. package/lib/langium/trivia/comment-preserver.js.map +1 -0
  270. package/lib/langium/trivia/document-ending-preserver.d.ts +51 -0
  271. package/lib/langium/trivia/document-ending-preserver.d.ts.map +1 -0
  272. package/lib/langium/trivia/document-ending-preserver.js +62 -0
  273. package/lib/langium/trivia/document-ending-preserver.js.map +1 -0
  274. package/lib/langium/trivia/index.d.ts +14 -0
  275. package/lib/langium/trivia/index.d.ts.map +1 -0
  276. package/lib/langium/trivia/index.js +14 -0
  277. package/lib/langium/trivia/index.js.map +1 -0
  278. package/lib/langium/trivia/trivia-contribution.d.ts +37 -0
  279. package/lib/langium/trivia/trivia-contribution.d.ts.map +1 -0
  280. package/lib/langium/trivia/trivia-contribution.js +10 -0
  281. package/lib/langium/trivia/trivia-contribution.js.map +1 -0
  282. package/lib/langium/trivia/trivia-preserver.d.ts +52 -0
  283. package/lib/langium/trivia/trivia-preserver.d.ts.map +1 -0
  284. package/lib/langium/trivia/trivia-preserver.js +10 -0
  285. package/lib/langium/trivia/trivia-preserver.js.map +1 -0
  286. package/lib/langium/trivia/trivia-service.d.ts +70 -0
  287. package/lib/langium/trivia/trivia-service.d.ts.map +1 -0
  288. package/lib/langium/trivia/trivia-service.js +56 -0
  289. package/lib/langium/trivia/trivia-service.js.map +1 -0
  290. package/lib/langium/update-rewrite/normalize-empty-strings.d.ts.map +1 -1
  291. package/lib/langium/update-rewrite/update-rewrite-service.d.ts +1 -1
  292. package/lib/langium/update-rewrite/update-rewrite-service.d.ts.map +1 -1
  293. package/lib/langium/update-rewrite/update-rewrite-service.js.map +1 -1
  294. package/lib/langium/update-rewrite/update-rewrite.d.ts +1 -1
  295. package/lib/langium/validation/document-validator.d.ts +280 -9
  296. package/lib/langium/validation/document-validator.d.ts.map +1 -1
  297. package/lib/langium/validation/document-validator.js +453 -8
  298. package/lib/langium/validation/document-validator.js.map +1 -1
  299. package/lib/langium/validation/validation-contribution-collector.d.ts +9 -1
  300. package/lib/langium/validation/validation-contribution-collector.d.ts.map +1 -1
  301. package/lib/langium/validation/validation-contribution-collector.js +1 -1
  302. package/lib/langium/validation/validation-contribution-collector.js.map +1 -1
  303. package/lib/langium/workspace/document-uri-policy.d.ts +24 -15
  304. package/lib/langium/workspace/document-uri-policy.d.ts.map +1 -1
  305. package/lib/langium/workspace/document-uri-policy.js +22 -13
  306. package/lib/langium/workspace/document-uri-policy.js.map +1 -1
  307. package/lib/langium/workspace/file-not-found.d.ts +23 -0
  308. package/lib/langium/workspace/file-not-found.d.ts.map +1 -0
  309. package/lib/langium/workspace/file-not-found.js +31 -0
  310. package/lib/langium/workspace/file-not-found.js.map +1 -0
  311. package/lib/langium/workspace/file-system-provider.d.ts +167 -8
  312. package/lib/langium/workspace/file-system-provider.d.ts.map +1 -1
  313. package/lib/langium/workspace/file-system-provider.js +115 -13
  314. package/lib/langium/workspace/file-system-provider.js.map +1 -1
  315. package/lib/langium/workspace/hydranium-langium-document-factory.d.ts +31 -1
  316. package/lib/langium/workspace/hydranium-langium-document-factory.d.ts.map +1 -1
  317. package/lib/langium/workspace/hydranium-langium-document-factory.js +54 -0
  318. package/lib/langium/workspace/hydranium-langium-document-factory.js.map +1 -1
  319. package/lib/langium/workspace/hydranium-workspace-lock.d.ts +43 -1
  320. package/lib/langium/workspace/hydranium-workspace-lock.d.ts.map +1 -1
  321. package/lib/langium/workspace/hydranium-workspace-lock.js +58 -1
  322. package/lib/langium/workspace/hydranium-workspace-lock.js.map +1 -1
  323. package/lib/langium/workspace/hydranium-workspace-manager.d.ts +124 -22
  324. package/lib/langium/workspace/hydranium-workspace-manager.d.ts.map +1 -1
  325. package/lib/langium/workspace/hydranium-workspace-manager.js +212 -31
  326. package/lib/langium/workspace/hydranium-workspace-manager.js.map +1 -1
  327. package/lib/langium/workspace/in-memory-file-system-provider.d.ts +26 -9
  328. package/lib/langium/workspace/in-memory-file-system-provider.d.ts.map +1 -1
  329. package/lib/langium/workspace/in-memory-file-system-provider.js +45 -22
  330. package/lib/langium/workspace/in-memory-file-system-provider.js.map +1 -1
  331. package/lib/langium/workspace/index-manager.d.ts.map +1 -1
  332. package/lib/langium/workspace/index-manager.js.map +1 -1
  333. package/lib/langium/workspace/index.d.ts +1 -0
  334. package/lib/langium/workspace/index.d.ts.map +1 -1
  335. package/lib/langium/workspace/index.js +1 -0
  336. package/lib/langium/workspace/index.js.map +1 -1
  337. package/lib/langium/workspace/initialize-workspace.d.ts +61 -4
  338. package/lib/langium/workspace/initialize-workspace.d.ts.map +1 -1
  339. package/lib/langium/workspace/initialize-workspace.js +80 -7
  340. package/lib/langium/workspace/initialize-workspace.js.map +1 -1
  341. package/lib/langium/workspace/langium-documents.d.ts +7 -0
  342. package/lib/langium/workspace/langium-documents.d.ts.map +1 -1
  343. package/lib/langium/workspace/langium-documents.js +18 -1
  344. package/lib/langium/workspace/langium-documents.js.map +1 -1
  345. package/lib/langium/workspace/persistent-file-system-provider.d.ts +16 -10
  346. package/lib/langium/workspace/persistent-file-system-provider.d.ts.map +1 -1
  347. package/lib/langium/workspace/persistent-file-system-provider.js +25 -13
  348. package/lib/langium/workspace/persistent-file-system-provider.js.map +1 -1
  349. package/lib/langium/workspace/self-save-registry.d.ts +84 -0
  350. package/lib/langium/workspace/self-save-registry.d.ts.map +1 -0
  351. package/lib/{documents → langium/workspace}/self-save-registry.js +33 -22
  352. package/lib/langium/workspace/self-save-registry.js.map +1 -0
  353. package/lib/langium/workspace/virtual-document.d.ts +55 -21
  354. package/lib/langium/workspace/virtual-document.d.ts.map +1 -1
  355. package/lib/langium/workspace/virtual-document.js +87 -24
  356. package/lib/langium/workspace/virtual-document.js.map +1 -1
  357. package/lib/langium/workspace/write-lock-scope.d.ts +22 -10
  358. package/lib/langium/workspace/write-lock-scope.d.ts.map +1 -1
  359. package/lib/langium/workspace/write-lock-scope.js +15 -5
  360. package/lib/langium/workspace/write-lock-scope.js.map +1 -1
  361. package/lib/launcher/integrated-server.d.ts +3 -1
  362. package/lib/launcher/integrated-server.d.ts.map +1 -1
  363. package/lib/locale/index.d.ts +10 -0
  364. package/lib/locale/index.d.ts.map +1 -0
  365. package/lib/locale/index.js +10 -0
  366. package/lib/locale/index.js.map +1 -0
  367. package/lib/locale/server-locale.d.ts +73 -0
  368. package/lib/locale/server-locale.d.ts.map +1 -0
  369. package/lib/locale/server-locale.js +61 -0
  370. package/lib/locale/server-locale.js.map +1 -0
  371. package/lib/lsp/completion/hydranium-completion-provider.d.ts +44 -2
  372. package/lib/lsp/completion/hydranium-completion-provider.d.ts.map +1 -1
  373. package/lib/lsp/completion/hydranium-completion-provider.js +68 -0
  374. package/lib/lsp/completion/hydranium-completion-provider.js.map +1 -1
  375. package/lib/lsp/connection-features.d.ts +23 -0
  376. package/lib/lsp/connection-features.d.ts.map +1 -0
  377. package/lib/lsp/connection-features.js +60 -0
  378. package/lib/lsp/connection-features.js.map +1 -0
  379. package/lib/lsp/diagnostics-connection.d.ts +27 -0
  380. package/lib/lsp/diagnostics-connection.d.ts.map +1 -0
  381. package/lib/lsp/diagnostics-connection.js +53 -0
  382. package/lib/lsp/diagnostics-connection.js.map +1 -0
  383. package/lib/lsp/hydranium-document-update-handler.d.ts +126 -82
  384. package/lib/lsp/hydranium-document-update-handler.d.ts.map +1 -1
  385. package/lib/lsp/hydranium-document-update-handler.js +235 -102
  386. package/lib/lsp/hydranium-document-update-handler.js.map +1 -1
  387. package/lib/lsp/index.d.ts +4 -1
  388. package/lib/lsp/index.d.ts.map +1 -1
  389. package/lib/lsp/index.js +4 -1
  390. package/lib/lsp/index.js.map +1 -1
  391. package/lib/lsp/lsp-latency.d.ts +39 -0
  392. package/lib/lsp/lsp-latency.d.ts.map +1 -0
  393. package/lib/lsp/lsp-latency.js +58 -0
  394. package/lib/lsp/lsp-latency.js.map +1 -0
  395. package/lib/lsp/save-text-document.d.ts +31 -0
  396. package/lib/lsp/save-text-document.d.ts.map +1 -0
  397. package/lib/lsp/save-text-document.js +52 -0
  398. package/lib/lsp/save-text-document.js.map +1 -0
  399. package/lib/lsp/semantic-token-provider.d.ts +34 -1
  400. package/lib/lsp/semantic-token-provider.d.ts.map +1 -1
  401. package/lib/lsp/semantic-token-provider.js +55 -8
  402. package/lib/lsp/semantic-token-provider.js.map +1 -1
  403. package/lib/lsp/shared-module.d.ts +4 -8
  404. package/lib/lsp/shared-module.d.ts.map +1 -1
  405. package/lib/lsp/shared-module.js.map +1 -1
  406. package/lib/lsp/start-language-server.d.ts +8 -7
  407. package/lib/lsp/start-language-server.d.ts.map +1 -1
  408. package/lib/lsp/start-language-server.js +13 -7
  409. package/lib/lsp/start-language-server.js.map +1 -1
  410. package/lib/messages/carriers.d.ts +18 -12
  411. package/lib/messages/carriers.d.ts.map +1 -1
  412. package/lib/messages/carriers.js +22 -13
  413. package/lib/messages/carriers.js.map +1 -1
  414. package/lib/messages/index.d.ts +4 -1
  415. package/lib/messages/index.d.ts.map +1 -1
  416. package/lib/messages/index.js +4 -1
  417. package/lib/messages/index.js.map +1 -1
  418. package/lib/messages/renderer.d.ts +142 -0
  419. package/lib/messages/renderer.d.ts.map +1 -0
  420. package/lib/messages/renderer.js +165 -0
  421. package/lib/messages/renderer.js.map +1 -0
  422. package/lib/node/event-loop-monitor.d.ts.map +1 -1
  423. package/lib/node/event-loop-monitor.js +2 -1
  424. package/lib/node/event-loop-monitor.js.map +1 -1
  425. package/lib/node/heap-ceiling.d.ts +61 -0
  426. package/lib/node/heap-ceiling.d.ts.map +1 -0
  427. package/lib/node/heap-ceiling.js +72 -0
  428. package/lib/node/heap-ceiling.js.map +1 -0
  429. package/lib/node/index.d.ts +1 -1
  430. package/lib/node/index.d.ts.map +1 -1
  431. package/lib/node/index.js +5 -1
  432. package/lib/node/index.js.map +1 -1
  433. package/lib/node/latency-from-env.d.ts +1 -1
  434. package/lib/node/latency-from-env.js +1 -1
  435. package/lib/node/lint-grammar.js.map +1 -1
  436. package/lib/node/log-preamble-node.d.ts +5 -3
  437. package/lib/node/log-preamble-node.d.ts.map +1 -1
  438. package/lib/node/log-preamble-node.js +13 -10
  439. package/lib/node/log-preamble-node.js.map +1 -1
  440. package/lib/node/measure-memory.d.ts.map +1 -1
  441. package/lib/node/measure-memory.js +5 -4
  442. package/lib/node/measure-memory.js.map +1 -1
  443. package/lib/node/memory-monitor.d.ts +2 -2
  444. package/lib/node/memory-monitor.d.ts.map +1 -1
  445. package/lib/node/memory-monitor.js +9 -10
  446. package/lib/node/memory-monitor.js.map +1 -1
  447. package/lib/node/node-file-system-provider.d.ts +67 -9
  448. package/lib/node/node-file-system-provider.d.ts.map +1 -1
  449. package/lib/node/node-file-system-provider.js +198 -53
  450. package/lib/node/node-file-system-provider.js.map +1 -1
  451. package/lib/node/profile-capture.d.ts +12 -4
  452. package/lib/node/profile-capture.d.ts.map +1 -1
  453. package/lib/node/profile-capture.js +8 -6
  454. package/lib/node/profile-capture.js.map +1 -1
  455. package/lib/node/profile-digest.js.map +1 -1
  456. package/lib/node/profiling-run.d.ts +13 -3
  457. package/lib/node/profiling-run.d.ts.map +1 -1
  458. package/lib/node/profiling-run.js +17 -8
  459. package/lib/node/profiling-run.js.map +1 -1
  460. package/lib/node/rename-over-open-readers.d.ts +61 -0
  461. package/lib/node/rename-over-open-readers.d.ts.map +1 -0
  462. package/lib/node/rename-over-open-readers.js +80 -0
  463. package/lib/node/rename-over-open-readers.js.map +1 -0
  464. package/lib/node/server-diagnostics.js +1 -1
  465. package/lib/node/server-diagnostics.js.map +1 -1
  466. package/lib/node/server-state-snapshot.js +4 -4
  467. package/lib/node/server-state-snapshot.js.map +1 -1
  468. package/lib/node/socket-launcher.d.ts +43 -7
  469. package/lib/node/socket-launcher.d.ts.map +1 -1
  470. package/lib/node/socket-launcher.js +42 -7
  471. package/lib/node/socket-launcher.js.map +1 -1
  472. package/lib/node/startup-cpu-profile.d.ts +29 -0
  473. package/lib/node/startup-cpu-profile.d.ts.map +1 -0
  474. package/lib/node/startup-cpu-profile.js +91 -0
  475. package/lib/node/startup-cpu-profile.js.map +1 -0
  476. package/lib/node/stdio-launcher.d.ts +13 -13
  477. package/lib/node/stdio-launcher.d.ts.map +1 -1
  478. package/lib/node/stdio-launcher.js +21 -11
  479. package/lib/node/stdio-launcher.js.map +1 -1
  480. package/lib/testing/document-uri-policy-conformance.js +1 -1
  481. package/lib/testing/document-uri-policy-conformance.js.map +1 -1
  482. package/lib/testing/fake-description.js.map +1 -1
  483. package/lib/testing/fake-document.d.ts +2 -1
  484. package/lib/testing/fake-document.d.ts.map +1 -1
  485. package/lib/testing/fake-document.js.map +1 -1
  486. package/lib/testing/index.d.ts +1 -1
  487. package/lib/testing/index.d.ts.map +1 -1
  488. package/lib/testing/index.js +2 -1
  489. package/lib/testing/index.js.map +1 -1
  490. package/lib/testing/langium-test-helpers.d.ts.map +1 -1
  491. package/lib/testing/langium-test-helpers.js +1 -0
  492. package/lib/testing/langium-test-helpers.js.map +1 -1
  493. package/lib/testing/make-noop-language-services.js.map +1 -1
  494. package/lib/testing/make-noop-shared-services.d.ts +14 -0
  495. package/lib/testing/make-noop-shared-services.d.ts.map +1 -1
  496. package/lib/testing/make-noop-shared-services.js +28 -2
  497. package/lib/testing/make-noop-shared-services.js.map +1 -1
  498. package/lib/testing/make-test-services.d.ts +72 -14
  499. package/lib/testing/make-test-services.d.ts.map +1 -1
  500. package/lib/testing/make-test-services.js +42 -10
  501. package/lib/testing/make-test-services.js.map +1 -1
  502. package/lib/testing/make-test-tracer.d.ts +12 -0
  503. package/lib/testing/make-test-tracer.d.ts.map +1 -1
  504. package/lib/testing/make-test-tracer.js +13 -0
  505. package/lib/testing/make-test-tracer.js.map +1 -1
  506. package/lib/testing/node/applied-edit-capture.d.ts +29 -0
  507. package/lib/testing/node/applied-edit-capture.d.ts.map +1 -0
  508. package/lib/testing/node/applied-edit-capture.js +117 -0
  509. package/lib/testing/node/applied-edit-capture.js.map +1 -0
  510. package/lib/testing/node/golden-corpus.js.map +1 -1
  511. package/lib/testing/node/index.d.ts +1 -0
  512. package/lib/testing/node/index.d.ts.map +1 -1
  513. package/lib/testing/node/index.js +1 -0
  514. package/lib/testing/node/index.js.map +1 -1
  515. package/lib/testing/node/lsp-harness.d.ts.map +1 -1
  516. package/lib/testing/node/lsp-harness.js +2 -0
  517. package/lib/testing/node/lsp-harness.js.map +1 -1
  518. package/lib/testing/node/lsp-server-connection.d.ts +21 -6
  519. package/lib/testing/node/lsp-server-connection.d.ts.map +1 -1
  520. package/lib/testing/node/lsp-server-connection.js +49 -106
  521. package/lib/testing/node/lsp-server-connection.js.map +1 -1
  522. package/lib/testing/node/scratch-workspace.d.ts.map +1 -1
  523. package/lib/testing/node/scratch-workspace.js +10 -5
  524. package/lib/testing/node/scratch-workspace.js.map +1 -1
  525. package/lib/testing/node/spawned-server.d.ts +30 -1
  526. package/lib/testing/node/spawned-server.d.ts.map +1 -1
  527. package/lib/testing/node/spawned-server.js +39 -2
  528. package/lib/testing/node/spawned-server.js.map +1 -1
  529. package/lib/testing/node/unhandled-rejections.d.ts +20 -0
  530. package/lib/testing/node/unhandled-rejections.d.ts.map +1 -0
  531. package/lib/testing/node/unhandled-rejections.js +32 -0
  532. package/lib/testing/node/unhandled-rejections.js.map +1 -0
  533. package/lib/testing/playwright/browser-capture-bridge.js.map +1 -1
  534. package/lib/testing/playwright/e2e-profiling.js.map +1 -1
  535. package/lib/testing/playwright/flaky-network-proxy.d.ts +76 -0
  536. package/lib/testing/playwright/flaky-network-proxy.d.ts.map +1 -0
  537. package/lib/testing/playwright/flaky-network-proxy.js +164 -0
  538. package/lib/testing/playwright/flaky-network-proxy.js.map +1 -0
  539. package/lib/testing/playwright/index.d.ts +1 -0
  540. package/lib/testing/playwright/index.d.ts.map +1 -1
  541. package/lib/testing/playwright/index.js +1 -0
  542. package/lib/testing/playwright/index.js.map +1 -1
  543. package/lib/testing/playwright/server-log-capture.d.ts +46 -16
  544. package/lib/testing/playwright/server-log-capture.d.ts.map +1 -1
  545. package/lib/testing/playwright/server-log-capture.js +111 -40
  546. package/lib/testing/playwright/server-log-capture.js.map +1 -1
  547. package/lib/testing/playwright/server-log-fixture.d.ts +16 -0
  548. package/lib/testing/playwright/server-log-fixture.d.ts.map +1 -1
  549. package/lib/testing/playwright/server-log-fixture.js +25 -6
  550. package/lib/testing/playwright/server-log-fixture.js.map +1 -1
  551. package/lib/testing/playwright/server-log-region.d.ts +15 -0
  552. package/lib/testing/playwright/server-log-region.d.ts.map +1 -0
  553. package/lib/testing/playwright/server-log-region.js +30 -0
  554. package/lib/testing/playwright/server-log-region.js.map +1 -0
  555. package/lib/testing/playwright/server-log-rename-reporter.d.ts.map +1 -1
  556. package/lib/testing/playwright/server-log-rename-reporter.js +4 -3
  557. package/lib/testing/playwright/server-log-rename-reporter.js.map +1 -1
  558. package/lib/testing/run-update-pipeline.d.ts +8 -5
  559. package/lib/testing/run-update-pipeline.d.ts.map +1 -1
  560. package/lib/testing/run-update-pipeline.js.map +1 -1
  561. package/lib/testing/stub-ast-document-manager.d.ts +11 -52
  562. package/lib/testing/stub-ast-document-manager.d.ts.map +1 -1
  563. package/lib/testing/stub-ast-document-manager.js +31 -62
  564. package/lib/testing/stub-ast-document-manager.js.map +1 -1
  565. package/lib/testing/stub-document-builder.d.ts +33 -11
  566. package/lib/testing/stub-document-builder.d.ts.map +1 -1
  567. package/lib/testing/stub-document-builder.js +103 -5
  568. package/lib/testing/stub-document-builder.js.map +1 -1
  569. package/lib/testing/stub-hydranium-text-documents.d.ts +33 -10
  570. package/lib/testing/stub-hydranium-text-documents.d.ts.map +1 -1
  571. package/lib/testing/stub-hydranium-text-documents.js +132 -16
  572. package/lib/testing/stub-hydranium-text-documents.js.map +1 -1
  573. package/lib/testing/stub-index-manager.js.map +1 -1
  574. package/lib/testing/stub-langium-documents.d.ts +3 -2
  575. package/lib/testing/stub-langium-documents.d.ts.map +1 -1
  576. package/lib/testing/stub-langium-documents.js.map +1 -1
  577. package/lib/testing/stub-model-service.d.ts +9 -8
  578. package/lib/testing/stub-model-service.d.ts.map +1 -1
  579. package/lib/testing/stub-model-service.js +6 -6
  580. package/lib/testing/stub-model-service.js.map +1 -1
  581. package/lib/testing/stub-project-manager.js.map +1 -1
  582. package/lib/testing/stub-self-save-registry.d.ts +1 -1
  583. package/lib/testing/stub-self-save-registry.d.ts.map +1 -1
  584. package/lib/testing/stub-service-registry.d.ts +1 -1
  585. package/lib/testing/stub-service-registry.js.map +1 -1
  586. package/lib/testing/stub-writable-file-system.d.ts +1 -1
  587. package/lib/testing/stub-writable-file-system.d.ts.map +1 -1
  588. package/lib/testing/stub-writable-file-system.js +2 -1
  589. package/lib/testing/stub-writable-file-system.js.map +1 -1
  590. package/lib/util/connection-liveness.d.ts +19 -6
  591. package/lib/util/connection-liveness.d.ts.map +1 -1
  592. package/lib/util/connection-liveness.js +61 -15
  593. package/lib/util/connection-liveness.js.map +1 -1
  594. package/lib/util/environment.d.ts.map +1 -1
  595. package/lib/util/environment.js.map +1 -1
  596. package/lib/util/registry.d.ts.map +1 -1
  597. package/package.json +38 -57
  598. package/src/browser/host-heads-in-worker.ts +218 -0
  599. package/src/browser/index.ts +17 -0
  600. package/src/browser/indexeddb-file-system-store.ts +192 -0
  601. package/src/browser/start-language-server-in-worker.ts +56 -0
  602. package/src/documents/ast-document-manager.ts +467 -233
  603. package/src/documents/client-ids.ts +5 -22
  604. package/src/documents/client-session-errors.ts +24 -0
  605. package/src/documents/client-session-registry.ts +262 -0
  606. package/src/documents/dirty-state-tracker.ts +167 -0
  607. package/src/documents/document-release-handler.ts +404 -0
  608. package/src/documents/document-release-scheduler.ts +121 -0
  609. package/src/documents/file-system-task-queue.ts +74 -0
  610. package/src/documents/hydranium-text-documents.ts +1022 -595
  611. package/src/documents/index.ts +10 -2
  612. package/src/documents/language-client-shadow.ts +501 -0
  613. package/src/documents/model-ledger.ts +66 -0
  614. package/src/documents/text-ledger.ts +112 -0
  615. package/src/documents/version-sync-service.ts +275 -0
  616. package/src/index.ts +8 -0
  617. package/src/langium/ast-extension/ast-extension-service.ts +77 -41
  618. package/src/langium/bootstrap.ts +95 -52
  619. package/src/langium/build-phase-pass/build-phase-pass-service.ts +29 -19
  620. package/src/langium/build-phase-pass/build-phase-pass.ts +37 -8
  621. package/src/langium/composite-ast-reflection.ts +112 -0
  622. package/src/langium/config/configuration-provider.ts +119 -0
  623. package/src/langium/config/index.ts +1 -0
  624. package/src/langium/diagnostics/hydranium-langium-profiler.ts +15 -39
  625. package/src/langium/diagnostics/log-preamble.ts +1 -1
  626. package/src/langium/diagnostics/logger.ts +38 -11
  627. package/src/langium/diagnostics/lsp-logger.ts +61 -16
  628. package/src/langium/document-builder/build-pipeline-integration.ts +46 -32
  629. package/src/langium/document-builder/build-session.ts +4 -3
  630. package/src/langium/document-builder/document-builder.ts +616 -73
  631. package/src/langium/integration-services.ts +59 -28
  632. package/src/langium/integrity/integrity-rule.ts +16 -8
  633. package/src/langium/integrity/integrity-service.ts +296 -69
  634. package/src/langium/keys/containment.ts +87 -0
  635. package/src/langium/keys/index.ts +1 -0
  636. package/src/langium/keys/name-based-key-provider.ts +4 -0
  637. package/src/langium/language-module.ts +49 -8
  638. package/src/langium/model-service/client-session.ts +718 -0
  639. package/src/langium/model-service/index.ts +2 -0
  640. package/src/langium/model-service/model-events.ts +80 -0
  641. package/src/langium/model-service/model-service.ts +908 -485
  642. package/src/langium/module.ts +212 -67
  643. package/src/langium/naming/name-provider.ts +44 -8
  644. package/src/langium/naming/name-separator-validation.ts +25 -3
  645. package/src/langium/project/abstract-project-manager.ts +13 -5
  646. package/src/langium/project/project-change-event.ts +2 -2
  647. package/src/langium/residency/cst-residency-service.ts +54 -19
  648. package/src/langium/scope/fallback-scope.ts +38 -0
  649. package/src/langium/scope/hydranium-scope-computation.ts +45 -44
  650. package/src/langium/scope/hydranium-scope-provider.ts +49 -16
  651. package/src/langium/scope/index.ts +1 -0
  652. package/src/langium/scope/reference-candidate-provider.ts +6 -5
  653. package/src/langium/scope/scope-extension-service.ts +74 -59
  654. package/src/langium/scope/scoped-ast-node-description.ts +1 -3
  655. package/src/langium/serialization/abstract-serializer.ts +57 -41
  656. package/src/langium/serialization/json-serializer.ts +14 -3
  657. package/src/langium/serialization/serializer.ts +1 -1
  658. package/src/langium/serialization/yaml-serializer.ts +4 -0
  659. package/src/langium/service-registry.ts +41 -2
  660. package/src/langium/shared-services.ts +26 -6
  661. package/src/langium/single-langium-copy.ts +42 -0
  662. package/src/langium/transfer/transfer-encoder.ts +102 -45
  663. package/src/langium/trivia/comment-preserver.ts +1100 -0
  664. package/src/langium/trivia/document-ending-preserver.ts +71 -0
  665. package/src/langium/trivia/index.ts +14 -0
  666. package/src/langium/trivia/trivia-contribution.ts +39 -0
  667. package/src/langium/trivia/trivia-preserver.ts +56 -0
  668. package/src/langium/trivia/trivia-service.ts +99 -0
  669. package/src/langium/update-rewrite/update-rewrite-service.ts +1 -1
  670. package/src/langium/update-rewrite/update-rewrite.ts +1 -1
  671. package/src/langium/validation/document-validator.ts +528 -13
  672. package/src/langium/validation/validation-contribution-collector.ts +10 -1
  673. package/src/langium/workspace/document-uri-policy.ts +32 -18
  674. package/src/langium/workspace/file-not-found.ts +35 -0
  675. package/src/langium/workspace/file-system-provider.ts +258 -16
  676. package/src/langium/workspace/hydranium-langium-document-factory.ts +83 -0
  677. package/src/langium/workspace/hydranium-workspace-lock.ts +86 -2
  678. package/src/langium/workspace/hydranium-workspace-manager.ts +241 -35
  679. package/src/langium/workspace/in-memory-file-system-provider.ts +54 -23
  680. package/src/langium/workspace/index.ts +1 -0
  681. package/src/langium/workspace/initialize-workspace.ts +129 -8
  682. package/src/langium/workspace/langium-documents.ts +19 -1
  683. package/src/langium/workspace/persistent-file-system-provider.ts +27 -15
  684. package/src/langium/workspace/self-save-registry.ts +118 -0
  685. package/src/langium/workspace/virtual-document.ts +106 -25
  686. package/src/langium/workspace/write-lock-scope.ts +27 -12
  687. package/src/launcher/integrated-server.ts +3 -1
  688. package/src/locale/index.ts +10 -0
  689. package/src/locale/server-locale.ts +86 -0
  690. package/src/lsp/completion/hydranium-completion-provider.ts +82 -2
  691. package/src/lsp/connection-features.ts +67 -0
  692. package/src/lsp/diagnostics-connection.ts +56 -0
  693. package/src/lsp/hydranium-document-update-handler.ts +285 -111
  694. package/src/lsp/index.ts +4 -1
  695. package/src/lsp/lsp-latency.ts +62 -0
  696. package/src/lsp/save-text-document.ts +63 -0
  697. package/src/lsp/semantic-token-provider.ts +74 -7
  698. package/src/lsp/shared-module.ts +4 -8
  699. package/src/lsp/start-language-server.ts +13 -7
  700. package/src/messages/carriers.ts +23 -15
  701. package/src/messages/index.ts +13 -1
  702. package/src/messages/renderer.ts +212 -0
  703. package/src/node/event-loop-monitor.ts +2 -1
  704. package/src/node/heap-ceiling.ts +108 -0
  705. package/src/node/index.ts +5 -1
  706. package/src/node/latency-from-env.ts +1 -1
  707. package/src/node/log-preamble-node.ts +20 -10
  708. package/src/node/measure-memory.ts +5 -4
  709. package/src/node/memory-monitor.ts +10 -10
  710. package/src/node/node-file-system-provider.ts +214 -57
  711. package/src/node/profile-capture.ts +16 -15
  712. package/src/node/profiling-run.ts +30 -8
  713. package/src/node/rename-over-open-readers.ts +94 -0
  714. package/src/node/server-diagnostics.ts +1 -1
  715. package/src/node/server-state-snapshot.ts +5 -5
  716. package/src/node/socket-launcher.ts +78 -14
  717. package/src/node/startup-cpu-profile.ts +94 -0
  718. package/src/node/stdio-launcher.ts +29 -19
  719. package/src/testing/document-uri-policy-conformance.ts +1 -1
  720. package/src/testing/fake-document.ts +2 -1
  721. package/src/testing/index.ts +2 -1
  722. package/src/testing/langium-test-helpers.ts +1 -0
  723. package/src/testing/make-noop-shared-services.ts +50 -2
  724. package/src/testing/make-test-services.ts +125 -31
  725. package/src/testing/make-test-tracer.ts +26 -0
  726. package/src/testing/node/applied-edit-capture.ts +141 -0
  727. package/src/testing/node/index.ts +1 -0
  728. package/src/testing/node/lsp-harness.ts +2 -0
  729. package/src/testing/node/lsp-server-connection.ts +83 -119
  730. package/src/testing/node/scratch-workspace.ts +10 -5
  731. package/src/testing/node/spawned-server.ts +57 -3
  732. package/src/testing/node/unhandled-rejections.ts +31 -0
  733. package/src/testing/parse-semantic-root.ts +1 -1
  734. package/src/testing/playwright/flaky-network-proxy.ts +240 -0
  735. package/src/testing/playwright/index.ts +1 -0
  736. package/src/testing/playwright/server-log-capture.ts +137 -47
  737. package/src/testing/playwright/server-log-fixture.ts +46 -6
  738. package/src/testing/playwright/server-log-region.ts +32 -0
  739. package/src/testing/playwright/server-log-rename-reporter.ts +4 -3
  740. package/src/testing/run-update-pipeline.ts +8 -5
  741. package/src/testing/stub-ast-document-manager.ts +47 -128
  742. package/src/testing/stub-document-builder.ts +133 -18
  743. package/src/testing/stub-hydranium-text-documents.ts +184 -27
  744. package/src/testing/stub-langium-documents.ts +3 -2
  745. package/src/testing/stub-model-service.ts +11 -10
  746. package/src/testing/stub-self-save-registry.ts +1 -1
  747. package/src/testing/stub-service-registry.ts +1 -1
  748. package/src/testing/stub-writable-file-system.ts +3 -2
  749. package/src/util/connection-liveness.ts +67 -15
  750. package/src/util/environment.ts +9 -1
  751. package/lib/documents/language-client-text-shadow.d.ts +0 -101
  752. package/lib/documents/language-client-text-shadow.d.ts.map +0 -1
  753. package/lib/documents/language-client-text-shadow.js +0 -156
  754. package/lib/documents/language-client-text-shadow.js.map +0 -1
  755. package/lib/documents/self-save-registry.d.ts +0 -55
  756. package/lib/documents/self-save-registry.d.ts.map +0 -1
  757. package/lib/documents/self-save-registry.js.map +0 -1
  758. package/lib/lsp/instrument-connection.d.ts +0 -36
  759. package/lib/lsp/instrument-connection.d.ts.map +0 -1
  760. package/lib/lsp/instrument-connection.js +0 -62
  761. package/lib/lsp/instrument-connection.js.map +0 -1
  762. package/lib/node/process-memory.d.ts +0 -66
  763. package/lib/node/process-memory.d.ts.map +0 -1
  764. package/lib/node/process-memory.js +0 -252
  765. package/lib/node/process-memory.js.map +0 -1
  766. package/src/documents/language-client-text-shadow.ts +0 -175
  767. package/src/documents/self-save-registry.ts +0 -81
  768. package/src/lsp/instrument-connection.ts +0 -66
  769. 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":"AAAA;;;;;;;kFAOkF;AAGlF,OAAO,EAAyC,mBAAmB,EAAkC,MAAM,oBAAoB,CAAC;AAMhI;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,MAAM,OAAO,qBAAsB,SAAQ,mBAAmB;IAC3D,uGAAuG;IAC7F,cAAc,GAAG,IAAI,GAAG,EAAgC,CAAC;IAEhD,cAAc,CAA8B;IAC5C,MAAM,CAAS;IAElC,YAAY,QAAqC,EAAE,OAAO,GAAmB,EAAE;QAC5E,KAAK,CAAC,QAAQ,CAAC,CAAC;QAChB,IAAI,CAAC,cAAc,GAAG,QAAQ,CAAC;QAC/B,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,IAAI,cAAc,CAAC,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;IAC9F,CAAC;IAED;;;;;;OAMG;IACH,IAAc,cAAc;QACzB,OAAO,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,cAAc,CAAC;IACvD,CAAC;IAED,+DAA+D;IAC/D,gCAAgC;IAChC,+DAA+D;IAEtD,KAAK,CAAC,aAAa,CAAC,QAAyB,EAAE,WAA+B;QACpF,MAAM,MAAM,GAAG,QAAQ,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;QACvC,IAAI,CAAC,wBAAwB,CAAC,MAAM,CAAC,CAAC;QACtC,MAAM,KAAK,CAAC,aAAa,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;QACjD,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC;IACpC,CAAC;IAEQ,aAAa,CAAC,GAAQ;QAC5B,IAAI,CAAC,wBAAwB,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC;QAC9C,KAAK,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;IAC5B,CAAC;IAED;;;;OAIG;IACO,wBAAwB,CAAC,MAAc;QAC9C,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAC9C,IAAI,CAAC,QAAQ,EAAE,CAAC;YACb,OAAO;QACV,CAAC;QACD,KAAK,MAAM,IAAI,IAAI,QAAQ,EAAE,CAAC;YAC3B,MAAM,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACnD,IAAI,CAAC,OAAO,EAAE,CAAC;gBACZ,SAAS;YACZ,CAAC;YACD,MAAM,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,WAAW,CAAC,QAAQ,EAAE,KAAK,MAAM,CAAC,CAAC;YAClF,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACzB,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACzC,CAAC;iBAAM,CAAC;gBACL,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;YAChD,CAAC;QACJ,CAAC;IACJ,CAAC;IAED;;;;OAIG;IACO,mBAAmB,CAAC,MAAc;QACzC,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAC9C,IAAI,CAAC,QAAQ,EAAE,CAAC;YACb,OAAO;QACV,CAAC;QACD,KAAK,MAAM,IAAI,IAAI,QAAQ,EAAE,CAAC;YAC3B,MAAM,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACnD,IAAI,OAAO,EAAE,CAAC;gBACX,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACtB,CAAC;iBAAM,CAAC;gBACL,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;YAC9C,CAAC;QACJ,CAAC;IACJ,CAAC;IAED,+DAA+D;IAC/D,8BAA8B;IAC9B,+DAA+D;IAE/D;;;;;;;;;;;OAWG;IACH,iBAAiB,CAAC,IAAY,EAAE,IAAa,EAAE,UAAmB;QAC/D,MAAM,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACjD,IAAI,CAAC,UAAU,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC1C,OAAO,EAAE,CAAC;QACb,CAAC;QACD,MAAM,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC;QACtH,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;YAC5B,OAAO,MAAM,CAAC;QACjB,CAAC;QACD,OAAO,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,WAAW,CAAC,KAAK,UAAU,CAAC,CAAC;IAC9F,CAAC;IAED;;;;;;;;;;;;;;;;;OAiBG;IACH,gBAAgB,CAAC,IAAY,EAAE,IAAa,EAAE,UAAmB;QAC9D,OAAO,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;IAC5D,CAAC;IAED;;;;;;;;;OASG;IACO,YAAY,CAAC,WAAgB;QACpC,OAAO,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,cAAc,CAAC,WAAW,CAAC,EAAE,gBAAgB,CAAC,UAAU,CAAC;IACvG,CAAC;IAED,yGAAyG;IACzG,cAAc,CAAC,WAAgC;QAC5C,IAAI,CAAC,WAAW,EAAE,CAAC;YAChB,OAAO,SAAS,CAAC;QACpB,CAAC;QACD,MAAM,eAAe,GAAG,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;QAC5E,IAAI,CAAC,eAAe,EAAE,CAAC;YACpB,OAAO,SAAS,CAAC;QACpB,CAAC;QACD,MAAM,gBAAgB,GAAG,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;QACnF,OAAO,gBAAgB,CAAC,SAAS,CAAC,cAAc,CAAC,UAAU,CAAC,eAAe,CAAC,WAAW,CAAC,KAAK,EAAE,WAAW,CAAC,IAAI,CAAC,CAAC;IACpH,CAAC;IAED,oEAAoE;IACpE,oBAAoB,CAAC,IAAY,EAAE,IAAa,EAAE,UAAmB;QAClE,OAAO,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC;IAC7E,CAAC;IAED;;;;;;;;;;;OAWG;IACH,oBAAoB,CAAC,SAAiB,EAAE,IAAa;QAClD,MAAM,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;QACjE,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC3B,OAAO,EAAE,CAAC;QACb,CAAC;QACD,MAAM,YAAY,GAAG,IAAI,GAAG,EAAU,CAAC;QACvC,KAAK,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;YAC5B,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC;QACpC,CAAC;QACD,MAAM,MAAM,GAAyB,EAAE,CAAC;QACxC,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,EAAE,CAAC;YACjD,KAAK,MAAM,WAAW,IAAI,MAAM,EAAE,CAAC;gBAChC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,WAAW,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC,EAAE,CAAC;oBACzD,SAAS;gBACZ,CAAC;gBACD,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,WAAW,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC;oBACjE,SAAS;gBACZ,CAAC;gBACD,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YAC5B,CAAC;QACJ,CAAC;QACD,OAAO,MAAM,CAAC;IACjB,CAAC;IAED;;;;;;OAMG;IACH,sBAAsB,CAAC,GAAQ;QAC5B,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;QACjD,IAAI,CAAC,QAAQ,EAAE,CAAC;YACb,OAAO,SAAS,CAAC;QACpB,CAAC;QACD,OAAO,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC;IAC1C,CAAC;IAED;;;OAGG;IACO,gBAAgB,CAAC,QAAyB;QACjD,OAAO,QAAQ,CAAC,WAAW,CAAC,KAAK,CAAC;IACrC,CAAC;CACH"}
@@ -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
@@ -32,13 +59,42 @@ export type WorkspaceFolderInput = string | URI;
32
59
  * negotiation, `onInitialize`/`onInitialized` events) are intentionally not
33
60
  * reproduced — a headless server has no client and they degrade gracefully.
34
61
  *
35
- * Invoke once during headless startup; this is not a re-initialization API.
36
- * 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.
37
68
  *
38
69
  * @param services the shared services tree the workspace manager lives on
39
70
  * @param folders one or more workspace roots (filesystem paths or URIs)
71
+ * @param options the message locale, when the caller has one
72
+ */
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}.
40
96
  */
41
- export declare function initializeWorkspaceProgrammatically(services: ServerSharedServicesMinimal, folders: WorkspaceFolderInput | ReadonlyArray<WorkspaceFolderInput>): Promise<void>;
97
+ export declare function initializeWorkspaceWithoutLsp(shared: ServerSharedServicesMinimal, workspace: WorkspaceFolderInput | ReadonlyArray<WorkspaceFolderInput> | undefined, options?: ProgrammaticInitOptions): Promise<void>;
42
98
  /**
43
99
  * {@link initializeWorkspaceProgrammatically} **and then build every registered
44
100
  * document to `Validated`** — the "fully-built workspace" convenience for
@@ -58,6 +114,7 @@ export declare function initializeWorkspaceProgrammatically(services: ServerShar
58
114
  *
59
115
  * @param services the shared services tree the workspace manager lives on
60
116
  * @param folders one or more workspace roots (filesystem paths or URIs)
117
+ * @param options the message locale, when the caller has one
61
118
  */
62
- export declare function buildWorkspaceProgrammatically(services: ServerSharedServicesMinimal, folders: WorkspaceFolderInput | ReadonlyArray<WorkspaceFolderInput>): Promise<void>;
119
+ export declare function buildWorkspaceProgrammatically(services: ServerSharedServicesMinimal, folders: WorkspaceFolderInput | ReadonlyArray<WorkspaceFolderInput>, options?: ProgrammaticInitOptions): Promise<void>;
63
120
  //# 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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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,21 +45,93 @@ 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)
57
+ * @param options the message locale, when the caller has one
53
58
  */
54
- export async function initializeWorkspaceProgrammatically(services, folders) {
59
+ export function initializeWorkspaceProgrammatically(services, folders, options = {}) {
55
60
  const workspaceFolders = toWorkspaceFolders(folders);
56
61
  const manager = services.workspace.WorkspaceManager;
57
- // `initialize` records the folders (DefaultWorkspaceManager reads only this
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) {
81
+ // `locale` goes through the synthesized params rather than a direct
82
+ // `acceptLocale` call, so this seam and a real LSP `initialize` reach the
83
+ // slot by the SAME path — an adopter overriding the capture in
84
+ // `HydraniumWorkspaceManager.initialize` is honoured headlessly too, which a
85
+ // second write site here would silently bypass.
86
+ //
87
+ // `initialize` records the folders (DefaultWorkspaceManager reads only that
58
88
  // field); `initialized` runs `mutex.write(initializeWorkspace)` and resolves
59
89
  // once discovery + the init build settle, so awaiting it is the ready gate.
60
- manager.initialize({ workspaceFolders });
90
+ manager.initialize({ workspaceFolders, locale: options.locale });
61
91
  await manager.initialized({});
62
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
+ }
63
135
  /**
64
136
  * {@link initializeWorkspaceProgrammatically} **and then build every registered
65
137
  * document to `Validated`** — the "fully-built workspace" convenience for
@@ -79,9 +151,10 @@ export async function initializeWorkspaceProgrammatically(services, folders) {
79
151
  *
80
152
  * @param services the shared services tree the workspace manager lives on
81
153
  * @param folders one or more workspace roots (filesystem paths or URIs)
154
+ * @param options the message locale, when the caller has one
82
155
  */
83
- export async function buildWorkspaceProgrammatically(services, folders) {
84
- await initializeWorkspaceProgrammatically(services, folders);
156
+ export async function buildWorkspaceProgrammatically(services, folders, options = {}) {
157
+ await initializeWorkspaceProgrammatically(services, folders, options);
85
158
  const documents = services.workspace.LangiumDocuments.all.toArray();
86
159
  await services.workspace.DocumentBuilder.build(documents, { validation: true });
87
160
  }
@@ -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":"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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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"}