@reqlan/language 1.4.0

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 (371) hide show
  1. package/README.md +24 -0
  2. package/out/file-path-rewrite.d.ts +25 -0
  3. package/out/file-path-rewrite.js +56 -0
  4. package/out/file-path-rewrite.js.map +1 -0
  5. package/out/generated/ast.d.ts +1157 -0
  6. package/out/generated/ast.js +980 -0
  7. package/out/generated/ast.js.map +1 -0
  8. package/out/generated/grammar.d.ts +7 -0
  9. package/out/generated/grammar.js +3071 -0
  10. package/out/generated/grammar.js.map +1 -0
  11. package/out/generated/module.d.ts +20 -0
  12. package/out/generated/module.js +32 -0
  13. package/out/generated/module.js.map +1 -0
  14. package/out/index.d.ts +34 -0
  15. package/out/index.js +35 -0
  16. package/out/index.js.map +1 -0
  17. package/out/reqlan-attribute-catalog.d.ts +19 -0
  18. package/out/reqlan-attribute-catalog.js +87 -0
  19. package/out/reqlan-attribute-catalog.js.map +1 -0
  20. package/out/reqlan-code-action-provider.d.ts +55 -0
  21. package/out/reqlan-code-action-provider.js +269 -0
  22. package/out/reqlan-code-action-provider.js.map +1 -0
  23. package/out/reqlan-code-lens-provider.d.ts +13 -0
  24. package/out/reqlan-code-lens-provider.js +27 -0
  25. package/out/reqlan-code-lens-provider.js.map +1 -0
  26. package/out/reqlan-code-lens-settings.d.ts +34 -0
  27. package/out/reqlan-code-lens-settings.js +12 -0
  28. package/out/reqlan-code-lens-settings.js.map +1 -0
  29. package/out/reqlan-comment-resolver.d.ts +35 -0
  30. package/out/reqlan-comment-resolver.js +308 -0
  31. package/out/reqlan-comment-resolver.js.map +1 -0
  32. package/out/reqlan-completion-context.d.ts +46 -0
  33. package/out/reqlan-completion-context.js +244 -0
  34. package/out/reqlan-completion-context.js.map +1 -0
  35. package/out/reqlan-completion-provider.d.ts +41 -0
  36. package/out/reqlan-completion-provider.js +317 -0
  37. package/out/reqlan-completion-provider.js.map +1 -0
  38. package/out/reqlan-definition-provider.d.ts +31 -0
  39. package/out/reqlan-definition-provider.js +240 -0
  40. package/out/reqlan-definition-provider.js.map +1 -0
  41. package/out/reqlan-document-highlight-provider.d.ts +10 -0
  42. package/out/reqlan-document-highlight-provider.js +11 -0
  43. package/out/reqlan-document-highlight-provider.js.map +1 -0
  44. package/out/reqlan-document-link-provider.d.ts +14 -0
  45. package/out/reqlan-document-link-provider.js +24 -0
  46. package/out/reqlan-document-link-provider.js.map +1 -0
  47. package/out/reqlan-embedded-file-references.d.ts +11 -0
  48. package/out/reqlan-embedded-file-references.js +50 -0
  49. package/out/reqlan-embedded-file-references.js.map +1 -0
  50. package/out/reqlan-file-link-resolver.d.ts +44 -0
  51. package/out/reqlan-file-link-resolver.js +347 -0
  52. package/out/reqlan-file-link-resolver.js.map +1 -0
  53. package/out/reqlan-file-references.d.ts +15 -0
  54. package/out/reqlan-file-references.js +72 -0
  55. package/out/reqlan-file-references.js.map +1 -0
  56. package/out/reqlan-grammar-config.d.ts +5 -0
  57. package/out/reqlan-grammar-config.js +9 -0
  58. package/out/reqlan-grammar-config.js.map +1 -0
  59. package/out/reqlan-idea-reference-site.d.ts +14 -0
  60. package/out/reqlan-idea-reference-site.js +47 -0
  61. package/out/reqlan-idea-reference-site.js.map +1 -0
  62. package/out/reqlan-idea-summary.d.ts +6 -0
  63. package/out/reqlan-idea-summary.js +134 -0
  64. package/out/reqlan-idea-summary.js.map +1 -0
  65. package/out/reqlan-ignore-error.d.ts +10 -0
  66. package/out/reqlan-ignore-error.js +42 -0
  67. package/out/reqlan-ignore-error.js.map +1 -0
  68. package/out/reqlan-import-bindings.d.ts +12 -0
  69. package/out/reqlan-import-bindings.js +65 -0
  70. package/out/reqlan-import-bindings.js.map +1 -0
  71. package/out/reqlan-import-edits.d.ts +17 -0
  72. package/out/reqlan-import-edits.js +96 -0
  73. package/out/reqlan-import-edits.js.map +1 -0
  74. package/out/reqlan-imports.d.ts +22 -0
  75. package/out/reqlan-imports.js +61 -0
  76. package/out/reqlan-imports.js.map +1 -0
  77. package/out/reqlan-inbound-reference-inlay-label.d.ts +27 -0
  78. package/out/reqlan-inbound-reference-inlay-label.js +142 -0
  79. package/out/reqlan-inbound-reference-inlay-label.js.map +1 -0
  80. package/out/reqlan-inlay-hint-provider.d.ts +15 -0
  81. package/out/reqlan-inlay-hint-provider.js +54 -0
  82. package/out/reqlan-inlay-hint-provider.js.map +1 -0
  83. package/out/reqlan-inlay-hint-settings.d.ts +10 -0
  84. package/out/reqlan-inlay-hint-settings.js +10 -0
  85. package/out/reqlan-inlay-hint-settings.js.map +1 -0
  86. package/out/reqlan-linker.d.ts +26 -0
  87. package/out/reqlan-linker.js +83 -0
  88. package/out/reqlan-linker.js.map +1 -0
  89. package/out/reqlan-markdown-links.d.ts +28 -0
  90. package/out/reqlan-markdown-links.js +113 -0
  91. package/out/reqlan-markdown-links.js.map +1 -0
  92. package/out/reqlan-module.d.ts +41 -0
  93. package/out/reqlan-module.js +78 -0
  94. package/out/reqlan-module.js.map +1 -0
  95. package/out/reqlan-name-catalog.d.ts +23 -0
  96. package/out/reqlan-name-catalog.js +63 -0
  97. package/out/reqlan-name-catalog.js.map +1 -0
  98. package/out/reqlan-name-provider.d.ts +10 -0
  99. package/out/reqlan-name-provider.js +38 -0
  100. package/out/reqlan-name-provider.js.map +1 -0
  101. package/out/reqlan-namespace-import-links.d.ts +10 -0
  102. package/out/reqlan-namespace-import-links.js +69 -0
  103. package/out/reqlan-namespace-import-links.js.map +1 -0
  104. package/out/reqlan-path-completion.d.ts +50 -0
  105. package/out/reqlan-path-completion.js +304 -0
  106. package/out/reqlan-path-completion.js.map +1 -0
  107. package/out/reqlan-path-references.d.ts +5 -0
  108. package/out/reqlan-path-references.js +124 -0
  109. package/out/reqlan-path-references.js.map +1 -0
  110. package/out/reqlan-path-resolve.d.ts +81 -0
  111. package/out/reqlan-path-resolve.js +245 -0
  112. package/out/reqlan-path-resolve.js.map +1 -0
  113. package/out/reqlan-quoted-strings.d.ts +9 -0
  114. package/out/reqlan-quoted-strings.js +26 -0
  115. package/out/reqlan-quoted-strings.js.map +1 -0
  116. package/out/reqlan-reference-at-position.d.ts +20 -0
  117. package/out/reqlan-reference-at-position.js +89 -0
  118. package/out/reqlan-reference-at-position.js.map +1 -0
  119. package/out/reqlan-reference-code-lens.d.ts +32 -0
  120. package/out/reqlan-reference-code-lens.js +240 -0
  121. package/out/reqlan-reference-code-lens.js.map +1 -0
  122. package/out/reqlan-reference-search-site.d.ts +34 -0
  123. package/out/reqlan-reference-search-site.js +136 -0
  124. package/out/reqlan-reference-search-site.js.map +1 -0
  125. package/out/reqlan-references.d.ts +16 -0
  126. package/out/reqlan-references.js +51 -0
  127. package/out/reqlan-references.js.map +1 -0
  128. package/out/reqlan-scope.d.ts +25 -0
  129. package/out/reqlan-scope.js +259 -0
  130. package/out/reqlan-scope.js.map +1 -0
  131. package/out/reqlan-semantic-token-provider.d.ts +8 -0
  132. package/out/reqlan-semantic-token-provider.js +91 -0
  133. package/out/reqlan-semantic-token-provider.js.map +1 -0
  134. package/out/reqlan-token-builder.d.ts +12 -0
  135. package/out/reqlan-token-builder.js +459 -0
  136. package/out/reqlan-token-builder.js.map +1 -0
  137. package/out/reqlan-validator.d.ts +25 -0
  138. package/out/reqlan-validator.js +119 -0
  139. package/out/reqlan-validator.js.map +1 -0
  140. package/out/reqlan-workspace-attribute-catalog.d.ts +6 -0
  141. package/out/reqlan-workspace-attribute-catalog.js +54 -0
  142. package/out/reqlan-workspace-attribute-catalog.js.map +1 -0
  143. package/out/src/file-path-rewrite.d.ts +25 -0
  144. package/out/src/file-path-rewrite.js +56 -0
  145. package/out/src/file-path-rewrite.js.map +1 -0
  146. package/out/src/generated/ast.d.ts +1173 -0
  147. package/out/src/generated/ast.js +994 -0
  148. package/out/src/generated/ast.js.map +1 -0
  149. package/out/src/generated/grammar.d.ts +7 -0
  150. package/out/src/generated/grammar.js +3045 -0
  151. package/out/src/generated/grammar.js.map +1 -0
  152. package/out/src/generated/module.d.ts +20 -0
  153. package/out/src/generated/module.js +32 -0
  154. package/out/src/generated/module.js.map +1 -0
  155. package/out/src/index.d.ts +29 -0
  156. package/out/src/index.js +30 -0
  157. package/out/src/index.js.map +1 -0
  158. package/out/src/reqlan-attribute-catalog.d.ts +19 -0
  159. package/out/src/reqlan-attribute-catalog.js +87 -0
  160. package/out/src/reqlan-attribute-catalog.js.map +1 -0
  161. package/out/src/reqlan-code-action-provider.d.ts +34 -0
  162. package/out/src/reqlan-code-action-provider.js +206 -0
  163. package/out/src/reqlan-code-action-provider.js.map +1 -0
  164. package/out/src/reqlan-comment-resolver.d.ts +35 -0
  165. package/out/src/reqlan-comment-resolver.js +308 -0
  166. package/out/src/reqlan-comment-resolver.js.map +1 -0
  167. package/out/src/reqlan-completion-context.d.ts +46 -0
  168. package/out/src/reqlan-completion-context.js +244 -0
  169. package/out/src/reqlan-completion-context.js.map +1 -0
  170. package/out/src/reqlan-completion-provider.d.ts +41 -0
  171. package/out/src/reqlan-completion-provider.js +320 -0
  172. package/out/src/reqlan-completion-provider.js.map +1 -0
  173. package/out/src/reqlan-definition-provider.d.ts +31 -0
  174. package/out/src/reqlan-definition-provider.js +240 -0
  175. package/out/src/reqlan-definition-provider.js.map +1 -0
  176. package/out/src/reqlan-document-highlight-provider.d.ts +10 -0
  177. package/out/src/reqlan-document-highlight-provider.js +11 -0
  178. package/out/src/reqlan-document-highlight-provider.js.map +1 -0
  179. package/out/src/reqlan-document-link-provider.d.ts +14 -0
  180. package/out/src/reqlan-document-link-provider.js +24 -0
  181. package/out/src/reqlan-document-link-provider.js.map +1 -0
  182. package/out/src/reqlan-embedded-file-references.d.ts +11 -0
  183. package/out/src/reqlan-embedded-file-references.js +50 -0
  184. package/out/src/reqlan-embedded-file-references.js.map +1 -0
  185. package/out/src/reqlan-file-link-resolver.d.ts +44 -0
  186. package/out/src/reqlan-file-link-resolver.js +347 -0
  187. package/out/src/reqlan-file-link-resolver.js.map +1 -0
  188. package/out/src/reqlan-file-references.d.ts +15 -0
  189. package/out/src/reqlan-file-references.js +72 -0
  190. package/out/src/reqlan-file-references.js.map +1 -0
  191. package/out/src/reqlan-grammar-config.d.ts +5 -0
  192. package/out/src/reqlan-grammar-config.js +9 -0
  193. package/out/src/reqlan-grammar-config.js.map +1 -0
  194. package/out/src/reqlan-idea-summary.d.ts +6 -0
  195. package/out/src/reqlan-idea-summary.js +78 -0
  196. package/out/src/reqlan-idea-summary.js.map +1 -0
  197. package/out/src/reqlan-ignore-error.d.ts +10 -0
  198. package/out/src/reqlan-ignore-error.js +42 -0
  199. package/out/src/reqlan-ignore-error.js.map +1 -0
  200. package/out/src/reqlan-import-bindings.d.ts +12 -0
  201. package/out/src/reqlan-import-bindings.js +65 -0
  202. package/out/src/reqlan-import-bindings.js.map +1 -0
  203. package/out/src/reqlan-import-edits.d.ts +17 -0
  204. package/out/src/reqlan-import-edits.js +96 -0
  205. package/out/src/reqlan-import-edits.js.map +1 -0
  206. package/out/src/reqlan-imports.d.ts +22 -0
  207. package/out/src/reqlan-imports.js +61 -0
  208. package/out/src/reqlan-imports.js.map +1 -0
  209. package/out/src/reqlan-inbound-reference-inlay-label.d.ts +23 -0
  210. package/out/src/reqlan-inbound-reference-inlay-label.js +128 -0
  211. package/out/src/reqlan-inbound-reference-inlay-label.js.map +1 -0
  212. package/out/src/reqlan-inlay-hint-provider.d.ts +15 -0
  213. package/out/src/reqlan-inlay-hint-provider.js +54 -0
  214. package/out/src/reqlan-inlay-hint-provider.js.map +1 -0
  215. package/out/src/reqlan-inlay-hint-settings.d.ts +10 -0
  216. package/out/src/reqlan-inlay-hint-settings.js +10 -0
  217. package/out/src/reqlan-inlay-hint-settings.js.map +1 -0
  218. package/out/src/reqlan-linker.d.ts +26 -0
  219. package/out/src/reqlan-linker.js +86 -0
  220. package/out/src/reqlan-linker.js.map +1 -0
  221. package/out/src/reqlan-markdown-links.d.ts +28 -0
  222. package/out/src/reqlan-markdown-links.js +113 -0
  223. package/out/src/reqlan-markdown-links.js.map +1 -0
  224. package/out/src/reqlan-module.d.ts +41 -0
  225. package/out/src/reqlan-module.js +76 -0
  226. package/out/src/reqlan-module.js.map +1 -0
  227. package/out/src/reqlan-name-catalog.d.ts +23 -0
  228. package/out/src/reqlan-name-catalog.js +63 -0
  229. package/out/src/reqlan-name-catalog.js.map +1 -0
  230. package/out/src/reqlan-name-provider.d.ts +10 -0
  231. package/out/src/reqlan-name-provider.js +38 -0
  232. package/out/src/reqlan-name-provider.js.map +1 -0
  233. package/out/src/reqlan-namespace-import-links.d.ts +10 -0
  234. package/out/src/reqlan-namespace-import-links.js +81 -0
  235. package/out/src/reqlan-namespace-import-links.js.map +1 -0
  236. package/out/src/reqlan-path-completion.d.ts +50 -0
  237. package/out/src/reqlan-path-completion.js +304 -0
  238. package/out/src/reqlan-path-completion.js.map +1 -0
  239. package/out/src/reqlan-path-references.d.ts +5 -0
  240. package/out/src/reqlan-path-references.js +124 -0
  241. package/out/src/reqlan-path-references.js.map +1 -0
  242. package/out/src/reqlan-path-resolve.d.ts +59 -0
  243. package/out/src/reqlan-path-resolve.js +173 -0
  244. package/out/src/reqlan-path-resolve.js.map +1 -0
  245. package/out/src/reqlan-quoted-strings.d.ts +9 -0
  246. package/out/src/reqlan-quoted-strings.js +26 -0
  247. package/out/src/reqlan-quoted-strings.js.map +1 -0
  248. package/out/src/reqlan-reference-at-position.d.ts +20 -0
  249. package/out/src/reqlan-reference-at-position.js +89 -0
  250. package/out/src/reqlan-reference-at-position.js.map +1 -0
  251. package/out/src/reqlan-references.d.ts +16 -0
  252. package/out/src/reqlan-references.js +51 -0
  253. package/out/src/reqlan-references.js.map +1 -0
  254. package/out/src/reqlan-scope.d.ts +25 -0
  255. package/out/src/reqlan-scope.js +266 -0
  256. package/out/src/reqlan-scope.js.map +1 -0
  257. package/out/src/reqlan-semantic-token-provider.d.ts +8 -0
  258. package/out/src/reqlan-semantic-token-provider.js +97 -0
  259. package/out/src/reqlan-semantic-token-provider.js.map +1 -0
  260. package/out/src/reqlan-token-builder.d.ts +12 -0
  261. package/out/src/reqlan-token-builder.js +459 -0
  262. package/out/src/reqlan-token-builder.js.map +1 -0
  263. package/out/src/reqlan-validator.d.ts +25 -0
  264. package/out/src/reqlan-validator.js +119 -0
  265. package/out/src/reqlan-validator.js.map +1 -0
  266. package/out/src/reqlan-workspace-attribute-catalog.d.ts +6 -0
  267. package/out/src/reqlan-workspace-attribute-catalog.js +54 -0
  268. package/out/src/reqlan-workspace-attribute-catalog.js.map +1 -0
  269. package/out/test/code-actions.test.d.ts +1 -0
  270. package/out/test/code-actions.test.js +126 -0
  271. package/out/test/code-actions.test.js.map +1 -0
  272. package/out/test/comment-in-string.test.d.ts +1 -0
  273. package/out/test/comment-in-string.test.js +100 -0
  274. package/out/test/comment-in-string.test.js.map +1 -0
  275. package/out/test/completion.test.d.ts +1 -0
  276. package/out/test/completion.test.js +467 -0
  277. package/out/test/completion.test.js.map +1 -0
  278. package/out/test/file-path-rewrite.test.d.ts +1 -0
  279. package/out/test/file-path-rewrite.test.js +64 -0
  280. package/out/test/file-path-rewrite.test.js.map +1 -0
  281. package/out/test/ignore-error.test.d.ts +1 -0
  282. package/out/test/ignore-error.test.js +87 -0
  283. package/out/test/ignore-error.test.js.map +1 -0
  284. package/out/test/implicit-import-extension.test.d.ts +1 -0
  285. package/out/test/implicit-import-extension.test.js +203 -0
  286. package/out/test/implicit-import-extension.test.js.map +1 -0
  287. package/out/test/import-edits.test.d.ts +1 -0
  288. package/out/test/import-edits.test.js +20 -0
  289. package/out/test/import-edits.test.js.map +1 -0
  290. package/out/test/inlay-hints.test.d.ts +1 -0
  291. package/out/test/inlay-hints.test.js +238 -0
  292. package/out/test/inlay-hints.test.js.map +1 -0
  293. package/out/test/linking.test.d.ts +1 -0
  294. package/out/test/linking.test.js +754 -0
  295. package/out/test/linking.test.js.map +1 -0
  296. package/out/test/naked-strings.test.d.ts +1 -0
  297. package/out/test/naked-strings.test.js +50 -0
  298. package/out/test/naked-strings.test.js.map +1 -0
  299. package/out/test/parsing.test.d.ts +1 -0
  300. package/out/test/parsing.test.js +773 -0
  301. package/out/test/parsing.test.js.map +1 -0
  302. package/out/test/path-resolve.test.d.ts +1 -0
  303. package/out/test/path-resolve.test.js +88 -0
  304. package/out/test/path-resolve.test.js.map +1 -0
  305. package/out/test/references.test.d.ts +1 -0
  306. package/out/test/references.test.js +168 -0
  307. package/out/test/references.test.js.map +1 -0
  308. package/out/test/rqconfig.test.d.ts +1 -0
  309. package/out/test/rqconfig.test.js +275 -0
  310. package/out/test/rqconfig.test.js.map +1 -0
  311. package/out/test/test-requirement-refs.d.ts +8 -0
  312. package/out/test/test-requirement-refs.js +35 -0
  313. package/out/test/test-requirement-refs.js.map +1 -0
  314. package/out/test/testing.test.d.ts +1 -0
  315. package/out/test/testing.test.js +23 -0
  316. package/out/test/testing.test.js.map +1 -0
  317. package/out/test/validating.test.d.ts +1 -0
  318. package/out/test/validating.test.js +117 -0
  319. package/out/test/validating.test.js.map +1 -0
  320. package/out/tsconfig.tsbuildinfo +1 -0
  321. package/package.json +54 -0
  322. package/src/chevrotain.d.ts +8 -0
  323. package/src/file-path-rewrite.ts +96 -0
  324. package/src/generated/ast.ts +1481 -0
  325. package/src/generated/grammar.ts +3074 -0
  326. package/src/generated/module.ts +38 -0
  327. package/src/index.ts +34 -0
  328. package/src/reqlan-attribute-catalog.ts +100 -0
  329. package/src/reqlan-code-action-provider.ts +385 -0
  330. package/src/reqlan-code-lens-provider.ts +54 -0
  331. package/src/reqlan-code-lens-settings.ts +42 -0
  332. package/src/reqlan-comment-resolver.ts +372 -0
  333. package/src/reqlan-comment.langium +23 -0
  334. package/src/reqlan-completion-context.ts +330 -0
  335. package/src/reqlan-completion-provider.ts +400 -0
  336. package/src/reqlan-definition-provider.ts +319 -0
  337. package/src/reqlan-document-highlight-provider.ts +21 -0
  338. package/src/reqlan-document-link-provider.ts +45 -0
  339. package/src/reqlan-embedded-file-references.ts +72 -0
  340. package/src/reqlan-file-link-resolver.ts +485 -0
  341. package/src/reqlan-file-references.ts +84 -0
  342. package/src/reqlan-grammar-config.ts +14 -0
  343. package/src/reqlan-idea-reference-site.ts +74 -0
  344. package/src/reqlan-idea-summary.ts +162 -0
  345. package/src/reqlan-ignore-error.ts +50 -0
  346. package/src/reqlan-import-bindings.ts +87 -0
  347. package/src/reqlan-import-edits.ts +124 -0
  348. package/src/reqlan-imports.ts +115 -0
  349. package/src/reqlan-inbound-reference-inlay-label.ts +194 -0
  350. package/src/reqlan-inlay-hint-provider.ts +88 -0
  351. package/src/reqlan-inlay-hint-settings.ts +15 -0
  352. package/src/reqlan-linker.ts +108 -0
  353. package/src/reqlan-markdown-links.ts +136 -0
  354. package/src/reqlan-module.ts +104 -0
  355. package/src/reqlan-name-catalog.ts +81 -0
  356. package/src/reqlan-name-provider.ts +56 -0
  357. package/src/reqlan-namespace-import-links.ts +92 -0
  358. package/src/reqlan-path-completion.ts +420 -0
  359. package/src/reqlan-path-references.ts +140 -0
  360. package/src/reqlan-path-resolve.ts +346 -0
  361. package/src/reqlan-quoted-strings.ts +30 -0
  362. package/src/reqlan-reference-at-position.ts +154 -0
  363. package/src/reqlan-reference-code-lens.ts +323 -0
  364. package/src/reqlan-reference-search-site.ts +202 -0
  365. package/src/reqlan-references.ts +76 -0
  366. package/src/reqlan-scope.ts +312 -0
  367. package/src/reqlan-semantic-token-provider.ts +113 -0
  368. package/src/reqlan-token-builder.ts +492 -0
  369. package/src/reqlan-validator.ts +149 -0
  370. package/src/reqlan-workspace-attribute-catalog.ts +62 -0
  371. package/src/reqlan.langium +236 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reqlan-module.js","sourceRoot":"","sources":["../src/reqlan-module.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * Compact name index pushed from the extension host for unresolved-reference quick fixes.
3
+ * rq:["../../../reqlan rq/extension/language-support/features-imports.rq".import_error]
4
+ */
5
+ export type NameCatalogKind = 'idea' | 'oneliner' | 'ideaset' | 'file';
6
+ export interface NameCatalogEntry {
7
+ name: string;
8
+ kind: NameCatalogKind;
9
+ fileUri: string;
10
+ }
11
+ export interface NameCatalog {
12
+ entries: NameCatalogEntry[];
13
+ }
14
+ export declare class NameCatalogStore {
15
+ private catalog;
16
+ get(): NameCatalog;
17
+ update(catalog: NameCatalog): void;
18
+ reset(): void;
19
+ findExact(name: string): NameCatalogEntry[];
20
+ findMatching(query: string, limit?: number): NameCatalogEntry[];
21
+ }
22
+ export declare const REQLAN_NAME_CATALOG_NOTIFICATION = "reqlan/nameCatalog";
23
+ export declare const sharedNameCatalog: NameCatalogStore;
@@ -0,0 +1,63 @@
1
+ /**
2
+ * Compact name index pushed from the extension host for unresolved-reference quick fixes.
3
+ * rq:["../../../reqlan rq/extension/language-support/features-imports.rq".import_error]
4
+ */
5
+ export class NameCatalogStore {
6
+ constructor() {
7
+ this.catalog = { entries: [] };
8
+ }
9
+ get() {
10
+ return this.catalog;
11
+ }
12
+ update(catalog) {
13
+ this.catalog = {
14
+ entries: catalog.entries.map(entry => ({ ...entry }))
15
+ };
16
+ }
17
+ reset() {
18
+ this.catalog = { entries: [] };
19
+ }
20
+ findExact(name) {
21
+ return this.catalog.entries.filter(entry => entry.name === name);
22
+ }
23
+ findMatching(query, limit = 25) {
24
+ const needle = query.trim().toLowerCase();
25
+ if (!needle) {
26
+ return [];
27
+ }
28
+ const scored = this.catalog.entries
29
+ .map(entry => ({ entry, score: scoreNameMatch(entry.name, needle) }))
30
+ .filter(item => item.score > 0)
31
+ .sort((left, right) => right.score - left.score || left.entry.name.localeCompare(right.entry.name));
32
+ const seen = new Set();
33
+ const results = [];
34
+ for (const item of scored) {
35
+ const key = `${item.entry.kind}:${item.entry.fileUri}:${item.entry.name}`;
36
+ if (seen.has(key)) {
37
+ continue;
38
+ }
39
+ seen.add(key);
40
+ results.push(item.entry);
41
+ if (results.length >= limit) {
42
+ break;
43
+ }
44
+ }
45
+ return results;
46
+ }
47
+ }
48
+ export const REQLAN_NAME_CATALOG_NOTIFICATION = 'reqlan/nameCatalog';
49
+ export const sharedNameCatalog = new NameCatalogStore();
50
+ function scoreNameMatch(name, needle) {
51
+ const hay = name.toLowerCase();
52
+ if (hay === needle) {
53
+ return 100;
54
+ }
55
+ if (hay.startsWith(needle)) {
56
+ return 80;
57
+ }
58
+ if (hay.includes(needle)) {
59
+ return 50;
60
+ }
61
+ return 0;
62
+ }
63
+ //# sourceMappingURL=reqlan-name-catalog.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reqlan-name-catalog.js","sourceRoot":"","sources":["../src/reqlan-name-catalog.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Resolves declaration names for ideas, ideasets, and import aliases in the requirement graph.
3
+ * Interacts with rename, scope export, and cross-reference linking.
4
+ */
5
+ import type { AstNode, CstNode } from 'langium';
6
+ import { DefaultNameProvider } from 'langium';
7
+ export declare class ReqlanNameProvider extends DefaultNameProvider {
8
+ getName(node: AstNode): string | undefined;
9
+ getNameNode(node: AstNode): CstNode | undefined;
10
+ }
@@ -0,0 +1,38 @@
1
+ import { DefaultNameProvider, GrammarUtils } from 'langium';
2
+ import { isFromImport, isFromImportSpecifier, isIdea, isIdeaSet, isNamespaceImport, isQualifiedImport, isOneLinerIdea } from './generated/ast.js';
3
+ export class ReqlanNameProvider extends DefaultNameProvider {
4
+ getName(node) {
5
+ if (isImportWithAlias(node)) {
6
+ return node.alias;
7
+ }
8
+ if (isImportWithPath(node)) {
9
+ return node.path;
10
+ }
11
+ if (isIdea(node) || isOneLinerIdea(node) || isIdeaSet(node)) {
12
+ return node.name;
13
+ }
14
+ return super.getName(node);
15
+ }
16
+ getNameNode(node) {
17
+ if (isImportWithAlias(node)) {
18
+ return GrammarUtils.findNodeForProperty(node.$cstNode, 'alias');
19
+ }
20
+ if (isImportWithPath(node)) {
21
+ return GrammarUtils.findNodeForProperty(node.$cstNode, 'path');
22
+ }
23
+ if (isIdea(node) || isOneLinerIdea(node) || isIdeaSet(node)) {
24
+ return GrammarUtils.findNodeForProperty(node.$cstNode, 'name');
25
+ }
26
+ return super.getNameNode(node);
27
+ }
28
+ }
29
+ function isImportWithAlias(node) {
30
+ return (isFromImportSpecifier(node) || isNamespaceImport(node) || isQualifiedImport(node)) && node.alias !== undefined;
31
+ }
32
+ function isImportWithPath(node) {
33
+ if (isFromImport(node)) {
34
+ return true;
35
+ }
36
+ return (isNamespaceImport(node) || isQualifiedImport(node)) && node.alias === undefined;
37
+ }
38
+ //# sourceMappingURL=reqlan-name-provider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reqlan-name-provider.js","sourceRoot":"","sources":["../src/reqlan-name-provider.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,mBAAmB,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAC5D,OAAO,EACH,YAAY,EACZ,qBAAqB,EACrB,MAAM,EACN,SAAS,EACT,iBAAiB,EACjB,iBAAiB,EACjB,cAAc,EAEjB,MAAM,oBAAoB,CAAC;AAE5B,MAAM,OAAO,kBAAmB,SAAQ,mBAAmB;IAE9C,OAAO,CAAC,IAAa;QAC1B,IAAI,iBAAiB,CAAC,IAAI,CAAC,EAAE,CAAC;YAC1B,OAAO,IAAI,CAAC,KAAK,CAAC;QACtB,CAAC;QACD,IAAI,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC;YACzB,OAAO,IAAI,CAAC,IAAI,CAAC;QACrB,CAAC;QACD,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,cAAc,CAAC,IAAI,CAAC,IAAI,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC;YAC1D,OAAO,IAAI,CAAC,IAAI,CAAC;QACrB,CAAC;QACD,OAAO,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/B,CAAC;IAEQ,WAAW,CAAC,IAAa;QAC9B,IAAI,iBAAiB,CAAC,IAAI,CAAC,EAAE,CAAC;YAC1B,OAAO,YAAY,CAAC,mBAAmB,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QACpE,CAAC;QACD,IAAI,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC;YACzB,OAAO,YAAY,CAAC,mBAAmB,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QACnE,CAAC;QACD,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,cAAc,CAAC,IAAI,CAAC,IAAI,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC;YAC1D,OAAO,YAAY,CAAC,mBAAmB,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QACnE,CAAC;QACD,OAAO,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;IACnC,CAAC;CACJ;AAED,SAAS,iBAAiB,CAAC,IAAa;IACpC,OAAO,CAAC,qBAAqB,CAAC,IAAI,CAAC,IAAI,iBAAiB,CAAC,IAAI,CAAC,IAAI,iBAAiB,CAAC,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS,CAAC;AAC3H,CAAC;AAED,SAAS,gBAAgB,CAAC,IAAa;IACnC,IAAI,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC;QACrB,OAAO,IAAI,CAAC;IAChB,CAAC;IACD,OAAO,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,iBAAiB,CAAC,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS,CAAC;AAC5F,CAAC"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Resolves bracket references to namespace-imported files (ideasets or external files).
3
+ */
4
+ import type { FileSystemProvider, LangiumDocuments } from 'langium';
5
+ import { type LocalReference, type QualifiedReference } from './generated/ast.js';
6
+ import { type ResolvedFileLink } from './reqlan-file-link-resolver.js';
7
+ import type { PathResolveContext } from './reqlan-path-resolve.js';
8
+ export declare function namespaceImportBindingName(reference: LocalReference): string | undefined;
9
+ export declare function isNamespaceImportOnlyReference(reference: LocalReference | QualifiedReference): boolean;
10
+ export declare function resolveNamespaceImportReferenceLink(reference: LocalReference | QualifiedReference, documents: LangiumDocuments, fileSystem: FileSystemProvider, context?: PathResolveContext): ResolvedFileLink | undefined;
@@ -0,0 +1,69 @@
1
+ import { AstUtils, GrammarUtils } from 'langium';
2
+ import { isIdea, isModel, isOneLinerIdea } from './generated/ast.js';
3
+ import { findNamespaceImportByAlias } from './reqlan-import-bindings.js';
4
+ import { bindingNameSourceRange, resolveImportedFileLink } from './reqlan-file-link-resolver.js';
5
+ export function namespaceImportBindingName(reference) {
6
+ return reference.idea?.$refText;
7
+ }
8
+ export function isNamespaceImportOnlyReference(reference) {
9
+ if (reference.$type === 'QualifiedReference') {
10
+ return reference.qualifier !== undefined
11
+ && reference.path === undefined
12
+ && reference.idea === undefined
13
+ && reference.ideaset === undefined;
14
+ }
15
+ const bindingName = namespaceImportBindingName(reference);
16
+ if (!bindingName) {
17
+ return false;
18
+ }
19
+ const document = AstUtils.getDocument(reference);
20
+ const model = document.parseResult.value;
21
+ if (!isModel(model)) {
22
+ return false;
23
+ }
24
+ if (reference.idea?.ref) {
25
+ return false;
26
+ }
27
+ if (model.elements.some(element => (isIdea(element) || isOneLinerIdea(element)) && element.name === bindingName)) {
28
+ return false;
29
+ }
30
+ return findNamespaceImportByAlias(model.imports, bindingName) !== undefined;
31
+ }
32
+ export function resolveNamespaceImportReferenceLink(reference, documents, fileSystem, context) {
33
+ const document = AstUtils.getDocument(reference);
34
+ const model = document.parseResult.value;
35
+ if (!isModel(model)) {
36
+ return undefined;
37
+ }
38
+ const bindingName = reference.$type === 'QualifiedReference'
39
+ ? reference.qualifier?.$refText
40
+ : namespaceImportBindingName(reference);
41
+ if (!bindingName) {
42
+ return undefined;
43
+ }
44
+ const importDecl = reference.$type === 'QualifiedReference'
45
+ ? reference.qualifier?.ref
46
+ : findNamespaceImportByAlias(model.imports, bindingName);
47
+ if (!importDecl || !isNamespaceImportBinding(importDecl, bindingName)) {
48
+ return undefined;
49
+ }
50
+ const pathNode = referencePathNode(reference, importDecl);
51
+ if (!pathNode) {
52
+ return undefined;
53
+ }
54
+ return resolveImportedFileLink(document, documents, fileSystem, importDecl.path, bindingNameSourceRange(pathNode, bindingName), context);
55
+ }
56
+ function isNamespaceImportBinding(importDecl, bindingName) {
57
+ return findNamespaceImportByAlias([importDecl], bindingName) !== undefined;
58
+ }
59
+ function referencePathNode(reference, importDecl) {
60
+ if (reference.$type === 'QualifiedReference') {
61
+ return reference.qualifier?.$refNode
62
+ ?? GrammarUtils.findNodeForProperty(reference.$cstNode, 'qualifier');
63
+ }
64
+ if (reference.idea?.$refNode) {
65
+ return reference.idea.$refNode;
66
+ }
67
+ return GrammarUtils.findNodeForProperty(reference.$cstNode, 'idea');
68
+ }
69
+ //# sourceMappingURL=reqlan-namespace-import-links.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reqlan-namespace-import-links.js","sourceRoot":"","sources":["../src/reqlan-namespace-import-links.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACjD,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,EAA6D,MAAM,oBAAoB,CAAC;AAChI,OAAO,EAAE,0BAA0B,EAAE,MAAM,6BAA6B,CAAC;AACzE,OAAO,EAAE,sBAAsB,EAAE,uBAAuB,EAAyB,MAAM,gCAAgC,CAAC;AAGxH,MAAM,UAAU,0BAA0B,CAAC,SAAyB;IAChE,OAAO,SAAS,CAAC,IAAI,EAAE,QAAQ,CAAC;AACpC,CAAC;AAED,MAAM,UAAU,8BAA8B,CAAC,SAA8C;IACzF,IAAI,SAAS,CAAC,KAAK,KAAK,oBAAoB,EAAE,CAAC;QAC3C,OAAO,SAAS,CAAC,SAAS,KAAK,SAAS;eACjC,SAAS,CAAC,IAAI,KAAK,SAAS;eAC5B,SAAS,CAAC,IAAI,KAAK,SAAS;eAC5B,SAAS,CAAC,OAAO,KAAK,SAAS,CAAC;IAC3C,CAAC;IACD,MAAM,WAAW,GAAG,0BAA0B,CAAC,SAAS,CAAC,CAAC;IAC1D,IAAI,CAAC,WAAW,EAAE,CAAC;QACf,OAAO,KAAK,CAAC;IACjB,CAAC;IACD,MAAM,QAAQ,GAAG,QAAQ,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;IACjD,MAAM,KAAK,GAAG,QAAQ,CAAC,WAAW,CAAC,KAAK,CAAC;IACzC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QAClB,OAAO,KAAK,CAAC;IACjB,CAAC;IACD,IAAI,SAAS,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC;QACtB,OAAO,KAAK,CAAC;IACjB,CAAC;IACD,IAAI,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAC9B,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,cAAc,CAAC,OAAO,CAAC,CAAC,IAAI,OAAO,CAAC,IAAI,KAAK,WAAW,CAC/E,EAAE,CAAC;QACA,OAAO,KAAK,CAAC;IACjB,CAAC;IACD,OAAO,0BAA0B,CAAC,KAAK,CAAC,OAAO,EAAE,WAAW,CAAC,KAAK,SAAS,CAAC;AAChF,CAAC;AAED,MAAM,UAAU,mCAAmC,CAC/C,SAA8C,EAC9C,SAA2B,EAC3B,UAA8B,EAC9B,OAA4B;IAE5B,MAAM,QAAQ,GAAG,QAAQ,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;IACjD,MAAM,KAAK,GAAG,QAAQ,CAAC,WAAW,CAAC,KAAK,CAAC;IACzC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QAClB,OAAO,SAAS,CAAC;IACrB,CAAC;IACD,MAAM,WAAW,GAAG,SAAS,CAAC,KAAK,KAAK,oBAAoB;QACxD,CAAC,CAAC,SAAS,CAAC,SAAS,EAAE,QAAQ;QAC/B,CAAC,CAAC,0BAA0B,CAAC,SAAS,CAAC,CAAC;IAC5C,IAAI,CAAC,WAAW,EAAE,CAAC;QACf,OAAO,SAAS,CAAC;IACrB,CAAC;IACD,MAAM,UAAU,GAAG,SAAS,CAAC,KAAK,KAAK,oBAAoB;QACvD,CAAC,CAAC,SAAS,CAAC,SAAS,EAAE,GAAG;QAC1B,CAAC,CAAC,0BAA0B,CAAC,KAAK,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;IAC7D,IAAI,CAAC,UAAU,IAAI,CAAC,wBAAwB,CAAC,UAAU,EAAE,WAAW,CAAC,EAAE,CAAC;QACpE,OAAO,SAAS,CAAC;IACrB,CAAC;IACD,MAAM,QAAQ,GAAG,iBAAiB,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;IAC1D,IAAI,CAAC,QAAQ,EAAE,CAAC;QACZ,OAAO,SAAS,CAAC;IACrB,CAAC;IACD,OAAO,uBAAuB,CAC1B,QAAQ,EACR,SAAS,EACT,UAAU,EACV,UAAU,CAAC,IAAI,EACf,sBAAsB,CAAC,QAAQ,EAAE,WAAW,CAAC,EAC7C,OAAO,CACV,CAAC;AACN,CAAC;AAED,SAAS,wBAAwB,CAAC,UAAkB,EAAE,WAAmB;IACrE,OAAO,0BAA0B,CAAC,CAAC,UAAU,CAAC,EAAE,WAAW,CAAC,KAAK,SAAS,CAAC;AAC/E,CAAC;AAED,SAAS,iBAAiB,CAAC,SAA8C,EAAE,UAAkB;IACzF,IAAI,SAAS,CAAC,KAAK,KAAK,oBAAoB,EAAE,CAAC;QAC3C,OAAO,SAAS,CAAC,SAAS,EAAE,QAAQ;eAC7B,YAAY,CAAC,mBAAmB,CAAC,SAAS,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;IAC7E,CAAC;IACD,IAAI,SAAS,CAAC,IAAI,EAAE,QAAQ,EAAE,CAAC;QAC3B,OAAO,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC;IACnC,CAAC;IACD,OAAO,YAAY,CAAC,mBAAmB,CAAC,SAAS,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;AACxE,CAAC"}
@@ -0,0 +1,50 @@
1
+ /**
2
+ * Shared import / anonymous file-path completion candidates, folder browsing, and proximity ranking.
3
+ * rq:["../../../reqlan rq/extension/language-support/features-imports.rq".import_code_completion]
4
+ * rq:["../../../reqlan rq/extension/language-support/features-imports.rq".import_code_completion_explicit_extension]
5
+ * rq:["../../../reqlan rq/extension/language-support/features-imports.rq".import_code_completion_path_segments]
6
+ * rq:["../../../reqlan rq/extension/language-support/features-imports.rq".import_code_completion_substring_match]
7
+ * rq:["../../../reqlan rq/extension/language-support/features-imports.rq".import_code_completion_ranking]
8
+ * rq:["../../../reqlan rq/extension/language-support/features-imports.rq".anonymous_reference_code_completion]
9
+ */
10
+ import type { FileSystemProvider, LangiumDocument, LangiumDocuments, URI } from 'langium';
11
+ import { type PathResolveContext } from './reqlan-path-resolve.js';
12
+ export declare const UNREACHABLE_PATH_DISTANCE = 9999;
13
+ export interface PathCompletionCandidate {
14
+ path: string;
15
+ targetUri: URI;
16
+ isDirectory: boolean;
17
+ }
18
+ export interface CollectPathCompletionOptions {
19
+ /** When set (e.g. `.rq`), only files with that extension are included. Directories always included. */
20
+ extensionFilter?: string;
21
+ /** Unquoted typed query; folder browsing when it ends with `/`, otherwise substring/subsequence search. */
22
+ prefix?: string;
23
+ }
24
+ /** Directory hop count between two directory URIs (each `..` or named segment counts). */
25
+ export declare function directoryHopDistance(fromDir: URI, toDir: URI): number;
26
+ /** Proximity of a path candidate from the completing document's directory. */
27
+ export declare function pathCandidateHopDistance(document: LangiumDocument, candidate: PathCompletionCandidate): number;
28
+ /**
29
+ * Rank by proximity, then directories before files, then path alphabetically.
30
+ * Puts `../path/` before `../path/file.rq` when hop distance ties.
31
+ */
32
+ export declare function pathCompletionSortText(document: LangiumDocument, candidate: PathCompletionCandidate): string;
33
+ /**
34
+ * Equalize client fuzzy-match scores so sortText (proximity) wins.
35
+ * VS Code/Cursor re-ranks by filterText/label match first; sortText is only a tie-breaker.
36
+ * The server already filters via pathMatchesQuery and returns isIncomplete lists.
37
+ */
38
+ export declare function pathCompletionFilterText(prefix: string, candidate: PathCompletionCandidate): string;
39
+ export declare function comparePathCompletionCandidates(document: LangiumDocument, left: PathCompletionCandidate, right: PathCompletionCandidate): number;
40
+ export declare function relativePathKeepExtension(fromDir: string, targetUri: URI): string;
41
+ export declare function aliasedPathKeepExtension(rootString: string, aliasPrefix: string, targetUri: URI): string | undefined;
42
+ /**
43
+ * Match a typed query against a candidate path using substring search (not only starts-with).
44
+ * Also matches when query characters appear in order after stripping `/` and `.` path markers
45
+ * (so `hellopath` matches `../../hello/inbetween/path/file.rq`).
46
+ */
47
+ export declare function pathMatchesQuery(path: string, query: string): boolean;
48
+ export declare function collectPathCompletionCandidates(document: LangiumDocument, documents: LangiumDocuments, fileSystem: FileSystemProvider, pathContext: PathResolveContext, options?: CollectPathCompletionOptions): PathCompletionCandidate[];
49
+ /** Directory prefixes for a file path, e.g. `../path/file.rq` → `../path/`. */
50
+ export declare function intermediateDirectoryPaths(filePath: string): string[];
@@ -0,0 +1,304 @@
1
+ import { UriUtils } from 'langium';
2
+ import { relativeRqImportPath } from './reqlan-import-edits.js';
3
+ import { resolveDocumentPathUri, resolveImportRootUri, resolveRqConfig } from './reqlan-path-resolve.js';
4
+ export const UNREACHABLE_PATH_DISTANCE = 9999;
5
+ /** Directory hop count between two directory URIs (each `..` or named segment counts). */
6
+ export function directoryHopDistance(fromDir, toDir) {
7
+ const relative = UriUtils.relative(fromDir.toString(), toDir.toString());
8
+ if (!relative || relative === '.') {
9
+ return 0;
10
+ }
11
+ return relative.split('/').filter(segment => segment.length > 0 && segment !== '.').length;
12
+ }
13
+ /** Proximity of a path candidate from the completing document's directory. */
14
+ export function pathCandidateHopDistance(document, candidate) {
15
+ const fromDir = UriUtils.dirname(document.uri);
16
+ const toDir = candidate.isDirectory ? candidate.targetUri : UriUtils.dirname(candidate.targetUri);
17
+ return directoryHopDistance(fromDir, toDir);
18
+ }
19
+ /**
20
+ * Rank by proximity, then directories before files, then path alphabetically.
21
+ * Puts `../path/` before `../path/file.rq` when hop distance ties.
22
+ */
23
+ export function pathCompletionSortText(document, candidate) {
24
+ const hops = pathCandidateHopDistance(document, candidate);
25
+ const directoryRank = candidate.isDirectory ? '0' : '1';
26
+ return `${String(hops).padStart(4, '0')}_${directoryRank}_${candidate.path}`;
27
+ }
28
+ /**
29
+ * Equalize client fuzzy-match scores so sortText (proximity) wins.
30
+ * VS Code/Cursor re-ranks by filterText/label match first; sortText is only a tie-breaker.
31
+ * The server already filters via pathMatchesQuery and returns isIncomplete lists.
32
+ */
33
+ export function pathCompletionFilterText(prefix, candidate) {
34
+ return prefix.length > 0 ? prefix : candidate.path;
35
+ }
36
+ export function comparePathCompletionCandidates(document, left, right) {
37
+ return pathCompletionSortText(document, left).localeCompare(pathCompletionSortText(document, right));
38
+ }
39
+ export function relativePathKeepExtension(fromDir, targetUri) {
40
+ let relativePath = UriUtils.relative(fromDir, targetUri.toString());
41
+ if (!relativePath.startsWith('./') && !relativePath.startsWith('../')) {
42
+ relativePath = `./${relativePath}`;
43
+ }
44
+ return relativePath;
45
+ }
46
+ export function aliasedPathKeepExtension(rootString, aliasPrefix, targetUri) {
47
+ const relativePath = UriUtils.relative(rootString, targetUri.toString());
48
+ if (!relativePath || relativePath.startsWith('..')) {
49
+ return undefined;
50
+ }
51
+ const cleaned = relativePath.replace(/^\.\//, '');
52
+ return `${aliasPrefix}${cleaned}`;
53
+ }
54
+ /**
55
+ * Match a typed query against a candidate path using substring search (not only starts-with).
56
+ * Also matches when query characters appear in order after stripping `/` and `.` path markers
57
+ * (so `hellopath` matches `../../hello/inbetween/path/file.rq`).
58
+ */
59
+ export function pathMatchesQuery(path, query) {
60
+ if (!query) {
61
+ return true;
62
+ }
63
+ const pathLower = path.toLowerCase();
64
+ const queryLower = query.toLowerCase();
65
+ if (pathLower.includes(queryLower)) {
66
+ return true;
67
+ }
68
+ const strippedPath = stripPathSeparators(pathLower);
69
+ const strippedQuery = stripPathSeparators(queryLower);
70
+ if (!strippedQuery) {
71
+ return true;
72
+ }
73
+ if (strippedPath.includes(strippedQuery)) {
74
+ return true;
75
+ }
76
+ return isCharacterSubsequence(strippedPath, strippedQuery);
77
+ }
78
+ function stripPathSeparators(value) {
79
+ return value.replace(/\.?\.\//g, '').replace(/\.\//g, '').replace(/\//g, '');
80
+ }
81
+ function isCharacterSubsequence(haystack, needle) {
82
+ let index = 0;
83
+ for (const char of haystack) {
84
+ if (char === needle[index]) {
85
+ index += 1;
86
+ if (index >= needle.length) {
87
+ return true;
88
+ }
89
+ }
90
+ }
91
+ return false;
92
+ }
93
+ export function collectPathCompletionCandidates(document, documents, fileSystem, pathContext, options = {}) {
94
+ const byPath = new Map();
95
+ const add = (candidate) => {
96
+ byPath.set(candidate.path, candidate);
97
+ };
98
+ const addFile = (candidate) => {
99
+ add(candidate);
100
+ for (const directory of intermediateDirectoryCandidates(candidate)) {
101
+ add(directory);
102
+ }
103
+ };
104
+ for (const candidate of collectRelativePathCandidates(document, documents, fileSystem, options.extensionFilter)) {
105
+ if (candidate.isDirectory) {
106
+ add(candidate);
107
+ }
108
+ else {
109
+ addFile(candidate);
110
+ }
111
+ }
112
+ for (const candidate of collectAliasedPathCandidates(document, documents, fileSystem, pathContext, options.extensionFilter)) {
113
+ if (candidate.isDirectory) {
114
+ add(candidate);
115
+ }
116
+ else {
117
+ addFile(candidate);
118
+ }
119
+ }
120
+ const query = options.prefix ?? '';
121
+ if (query.endsWith('/')) {
122
+ for (const candidate of collectFolderSegmentCandidates(document, query, fileSystem, pathContext, options.extensionFilter)) {
123
+ add(candidate);
124
+ }
125
+ }
126
+ let candidates = [...byPath.values()];
127
+ if (query.length > 0) {
128
+ candidates = candidates.filter(candidate => pathMatchesQuery(candidate.path, query));
129
+ }
130
+ return candidates;
131
+ }
132
+ /** Directory prefixes for a file path, e.g. `../path/file.rq` → `../path/`. */
133
+ export function intermediateDirectoryPaths(filePath) {
134
+ const dirs = [];
135
+ let index = 0;
136
+ while (index < filePath.length) {
137
+ const slash = filePath.indexOf('/', index);
138
+ if (slash < 0 || slash === filePath.length - 1) {
139
+ break;
140
+ }
141
+ const prefix = filePath.slice(0, slash + 1);
142
+ // Skip `./`, runs of `../`, and bare alias roots like `@/`.
143
+ const skip = prefix === '@/'
144
+ || /^\.\/$/.test(prefix)
145
+ || /^(\.\.\/)+$/.test(prefix);
146
+ if (!skip) {
147
+ dirs.push(prefix);
148
+ }
149
+ index = slash + 1;
150
+ }
151
+ return dirs;
152
+ }
153
+ function intermediateDirectoryCandidates(fileCandidate) {
154
+ const paths = intermediateDirectoryPaths(fileCandidate.path);
155
+ if (paths.length === 0) {
156
+ return [];
157
+ }
158
+ const result = [];
159
+ let dirUri = UriUtils.dirname(fileCandidate.targetUri);
160
+ for (let i = paths.length - 1; i >= 0; i--) {
161
+ result.push({
162
+ path: paths[i],
163
+ targetUri: dirUri,
164
+ isDirectory: true
165
+ });
166
+ dirUri = UriUtils.dirname(dirUri);
167
+ }
168
+ return result;
169
+ }
170
+ function collectRelativePathCandidates(document, documents, fileSystem, extensionFilter) {
171
+ const sourceDir = UriUtils.dirname(document.uri);
172
+ const dirname = sourceDir.toString();
173
+ const candidates = [];
174
+ for (const doc of documents.all.toArray()) {
175
+ if (UriUtils.equals(doc.uri, document.uri)) {
176
+ continue;
177
+ }
178
+ if (extensionFilter && !doc.uri.path.endsWith(extensionFilter)) {
179
+ continue;
180
+ }
181
+ candidates.push({
182
+ path: relativeRqImportPath(document.uri, doc.uri),
183
+ targetUri: doc.uri,
184
+ isDirectory: false
185
+ });
186
+ }
187
+ if (fileSystem.existsSync(sourceDir)) {
188
+ collectDirectoryTree(sourceDir, dirname, undefined, undefined, candidates, extensionFilter, fileSystem);
189
+ }
190
+ return candidates;
191
+ }
192
+ function collectAliasedPathCandidates(document, documents, fileSystem, pathContext, extensionFilter) {
193
+ const config = resolveRqConfig(document, pathContext);
194
+ const candidates = [];
195
+ for (const mapping of config.importRoots) {
196
+ const importRoot = resolveImportRootUri(document, pathContext, mapping);
197
+ if (!importRoot) {
198
+ continue;
199
+ }
200
+ const aliasPrefix = `${mapping.alias}/`;
201
+ const rootString = importRoot.toString();
202
+ for (const doc of documents.all.toArray()) {
203
+ if (UriUtils.equals(doc.uri, document.uri)) {
204
+ continue;
205
+ }
206
+ if (extensionFilter && !doc.uri.path.endsWith(extensionFilter)) {
207
+ continue;
208
+ }
209
+ const aliased = aliasedPathKeepExtension(rootString, aliasPrefix, doc.uri);
210
+ if (aliased) {
211
+ candidates.push({
212
+ path: aliased,
213
+ targetUri: doc.uri,
214
+ isDirectory: false
215
+ });
216
+ }
217
+ }
218
+ if (fileSystem.existsSync(importRoot)) {
219
+ collectDirectoryTree(importRoot, rootString, aliasPrefix, rootString, candidates, extensionFilter, fileSystem);
220
+ }
221
+ }
222
+ return candidates;
223
+ }
224
+ function collectDirectoryTree(directory, relativeFrom, aliasPrefix, aliasRoot, candidates, extensionFilter, fileSystem, depth = 0) {
225
+ if (depth > 32) {
226
+ return;
227
+ }
228
+ for (const entry of fileSystem.readDirectorySync(directory)) {
229
+ const name = entry.uri.path.split('/').pop() ?? '';
230
+ if (!name || name.startsWith('.')) {
231
+ continue;
232
+ }
233
+ if (entry.isDirectory) {
234
+ const path = aliasPrefix && aliasRoot
235
+ ? (() => {
236
+ const aliased = aliasedPathKeepExtension(aliasRoot, aliasPrefix, entry.uri);
237
+ return aliased ? `${aliased}/` : undefined;
238
+ })()
239
+ : `${relativePathKeepExtension(relativeFrom, entry.uri)}/`;
240
+ if (path) {
241
+ candidates.push({ path, targetUri: entry.uri, isDirectory: true });
242
+ }
243
+ collectDirectoryTree(entry.uri, relativeFrom, aliasPrefix, aliasRoot, candidates, extensionFilter, fileSystem, depth + 1);
244
+ continue;
245
+ }
246
+ if (extensionFilter && !name.endsWith(extensionFilter)) {
247
+ continue;
248
+ }
249
+ if (aliasPrefix && aliasRoot) {
250
+ const aliased = aliasedPathKeepExtension(aliasRoot, aliasPrefix, entry.uri);
251
+ if (aliased) {
252
+ candidates.push({ path: aliased, targetUri: entry.uri, isDirectory: false });
253
+ }
254
+ continue;
255
+ }
256
+ candidates.push({
257
+ path: relativePathKeepExtension(relativeFrom, entry.uri),
258
+ targetUri: entry.uri,
259
+ isDirectory: false
260
+ });
261
+ }
262
+ }
263
+ function collectFolderSegmentCandidates(document, prefix, fileSystem, pathContext, extensionFilter) {
264
+ const dirUri = resolveFolderPrefixUri(prefix, document, pathContext, fileSystem);
265
+ if (!dirUri) {
266
+ return [];
267
+ }
268
+ const candidates = [];
269
+ for (const entry of fileSystem.readDirectorySync(dirUri)) {
270
+ const name = entry.uri.path.split('/').pop() ?? '';
271
+ if (!name || name.startsWith('.')) {
272
+ continue;
273
+ }
274
+ if (entry.isDirectory) {
275
+ candidates.push({
276
+ path: `${prefix}${name}/`,
277
+ targetUri: entry.uri,
278
+ isDirectory: true
279
+ });
280
+ continue;
281
+ }
282
+ if (extensionFilter && !name.endsWith(extensionFilter)) {
283
+ continue;
284
+ }
285
+ candidates.push({
286
+ path: `${prefix}${name}`,
287
+ targetUri: entry.uri,
288
+ isDirectory: false
289
+ });
290
+ }
291
+ return candidates;
292
+ }
293
+ function resolveFolderPrefixUri(prefix, document, pathContext, fileSystem) {
294
+ const dirUri = resolveDocumentPathUri(prefix, document, pathContext);
295
+ if (!fileSystem.existsSync(dirUri)) {
296
+ return undefined;
297
+ }
298
+ const stat = fileSystem.statSync(dirUri);
299
+ if (!stat.isDirectory) {
300
+ return undefined;
301
+ }
302
+ return dirUri;
303
+ }
304
+ //# sourceMappingURL=reqlan-path-completion.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reqlan-path-completion.js","sourceRoot":"","sources":["../src/reqlan-path-completion.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACnC,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAChE,OAAO,EACH,sBAAsB,EACtB,oBAAoB,EACpB,eAAe,EAElB,MAAM,0BAA0B,CAAC;AAElC,MAAM,CAAC,MAAM,yBAAyB,GAAG,IAAI,CAAC;AAe9C,0FAA0F;AAC1F,MAAM,UAAU,oBAAoB,CAAC,OAAY,EAAE,KAAU;IACzD,MAAM,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC;IACzE,IAAI,CAAC,QAAQ,IAAI,QAAQ,KAAK,GAAG,EAAE,CAAC;QAChC,OAAO,CAAC,CAAC;IACb,CAAC;IACD,OAAO,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,OAAO,KAAK,GAAG,CAAC,CAAC,MAAM,CAAC;AAC/F,CAAC;AAED,8EAA8E;AAC9E,MAAM,UAAU,wBAAwB,CAAC,QAAyB,EAAE,SAAkC;IAClG,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;IAC/C,MAAM,KAAK,GAAG,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;IAClG,OAAO,oBAAoB,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;AAChD,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,sBAAsB,CAAC,QAAyB,EAAE,SAAkC;IAChG,MAAM,IAAI,GAAG,wBAAwB,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;IAC3D,MAAM,aAAa,GAAG,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;IACxD,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,aAAa,IAAI,SAAS,CAAC,IAAI,EAAE,CAAC;AACjF,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,wBAAwB,CAAC,MAAc,EAAE,SAAkC;IACvF,OAAO,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC;AACvD,CAAC;AAED,MAAM,UAAU,+BAA+B,CAC3C,QAAyB,EACzB,IAA6B,EAC7B,KAA8B;IAE9B,OAAO,sBAAsB,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,aAAa,CAAC,sBAAsB,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC;AACzG,CAAC;AAED,MAAM,UAAU,yBAAyB,CAAC,OAAe,EAAE,SAAc;IACrE,IAAI,YAAY,GAAG,QAAQ,CAAC,QAAQ,CAAC,OAAO,EAAE,SAAS,CAAC,QAAQ,EAAE,CAAC,CAAC;IACpE,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;QACpE,YAAY,GAAG,KAAK,YAAY,EAAE,CAAC;IACvC,CAAC;IACD,OAAO,YAAY,CAAC;AACxB,CAAC;AAED,MAAM,UAAU,wBAAwB,CACpC,UAAkB,EAClB,WAAmB,EACnB,SAAc;IAEd,MAAM,YAAY,GAAG,QAAQ,CAAC,QAAQ,CAAC,UAAU,EAAE,SAAS,CAAC,QAAQ,EAAE,CAAC,CAAC;IACzE,IAAI,CAAC,YAAY,IAAI,YAAY,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;QACjD,OAAO,SAAS,CAAC;IACrB,CAAC;IACD,MAAM,OAAO,GAAG,YAAY,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;IAClD,OAAO,GAAG,WAAW,GAAG,OAAO,EAAE,CAAC;AACtC,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,gBAAgB,CAAC,IAAY,EAAE,KAAa;IACxD,IAAI,CAAC,KAAK,EAAE,CAAC;QACT,OAAO,IAAI,CAAC;IAChB,CAAC;IACD,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;IACrC,MAAM,UAAU,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC;IACvC,IAAI,SAAS,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;QACjC,OAAO,IAAI,CAAC;IAChB,CAAC;IACD,MAAM,YAAY,GAAG,mBAAmB,CAAC,SAAS,CAAC,CAAC;IACpD,MAAM,aAAa,GAAG,mBAAmB,CAAC,UAAU,CAAC,CAAC;IACtD,IAAI,CAAC,aAAa,EAAE,CAAC;QACjB,OAAO,IAAI,CAAC;IAChB,CAAC;IACD,IAAI,YAAY,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC;QACvC,OAAO,IAAI,CAAC;IAChB,CAAC;IACD,OAAO,sBAAsB,CAAC,YAAY,EAAE,aAAa,CAAC,CAAC;AAC/D,CAAC;AAED,SAAS,mBAAmB,CAAC,KAAa;IACtC,OAAO,KAAK,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;AACjF,CAAC;AAED,SAAS,sBAAsB,CAAC,QAAgB,EAAE,MAAc;IAC5D,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,KAAK,MAAM,IAAI,IAAI,QAAQ,EAAE,CAAC;QAC1B,IAAI,IAAI,KAAK,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;YACzB,KAAK,IAAI,CAAC,CAAC;YACX,IAAI,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;gBACzB,OAAO,IAAI,CAAC;YAChB,CAAC;QACL,CAAC;IACL,CAAC;IACD,OAAO,KAAK,CAAC;AACjB,CAAC;AAED,MAAM,UAAU,+BAA+B,CAC3C,QAAyB,EACzB,SAA2B,EAC3B,UAA8B,EAC9B,WAA+B,EAC/B,UAAwC,EAAE;IAE1C,MAAM,MAAM,GAAG,IAAI,GAAG,EAAmC,CAAC;IAC1D,MAAM,GAAG,GAAG,CAAC,SAAkC,EAAE,EAAE;QAC/C,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IAC1C,CAAC,CAAC;IACF,MAAM,OAAO,GAAG,CAAC,SAAkC,EAAE,EAAE;QACnD,GAAG,CAAC,SAAS,CAAC,CAAC;QACf,KAAK,MAAM,SAAS,IAAI,+BAA+B,CAAC,SAAS,CAAC,EAAE,CAAC;YACjE,GAAG,CAAC,SAAS,CAAC,CAAC;QACnB,CAAC;IACL,CAAC,CAAC;IAEF,KAAK,MAAM,SAAS,IAAI,6BAA6B,CAAC,QAAQ,EAAE,SAAS,EAAE,UAAU,EAAE,OAAO,CAAC,eAAe,CAAC,EAAE,CAAC;QAC9G,IAAI,SAAS,CAAC,WAAW,EAAE,CAAC;YACxB,GAAG,CAAC,SAAS,CAAC,CAAC;QACnB,CAAC;aAAM,CAAC;YACJ,OAAO,CAAC,SAAS,CAAC,CAAC;QACvB,CAAC;IACL,CAAC;IACD,KAAK,MAAM,SAAS,IAAI,4BAA4B,CAAC,QAAQ,EAAE,SAAS,EAAE,UAAU,EAAE,WAAW,EAAE,OAAO,CAAC,eAAe,CAAC,EAAE,CAAC;QAC1H,IAAI,SAAS,CAAC,WAAW,EAAE,CAAC;YACxB,GAAG,CAAC,SAAS,CAAC,CAAC;QACnB,CAAC;aAAM,CAAC;YACJ,OAAO,CAAC,SAAS,CAAC,CAAC;QACvB,CAAC;IACL,CAAC;IACD,MAAM,KAAK,GAAG,OAAO,CAAC,MAAM,IAAI,EAAE,CAAC;IACnC,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QACtB,KAAK,MAAM,SAAS,IAAI,8BAA8B,CAClD,QAAQ,EACR,KAAK,EACL,UAAU,EACV,WAAW,EACX,OAAO,CAAC,eAAe,CAC1B,EAAE,CAAC;YACA,GAAG,CAAC,SAAS,CAAC,CAAC;QACnB,CAAC;IACL,CAAC;IAED,IAAI,UAAU,GAAG,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;IACtC,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACnB,UAAU,GAAG,UAAU,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,gBAAgB,CAAC,SAAS,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;IACzF,CAAC;IACD,OAAO,UAAU,CAAC;AACtB,CAAC;AAED,+EAA+E;AAC/E,MAAM,UAAU,0BAA0B,CAAC,QAAgB;IACvD,MAAM,IAAI,GAAa,EAAE,CAAC;IAC1B,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,OAAO,KAAK,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC;QAC7B,MAAM,KAAK,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QAC3C,IAAI,KAAK,GAAG,CAAC,IAAI,KAAK,KAAK,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC7C,MAAM;QACV,CAAC;QACD,MAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC;QAC5C,4DAA4D;QAC5D,MAAM,IAAI,GAAG,MAAM,KAAK,IAAI;eACrB,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC;eACrB,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAClC,IAAI,CAAC,IAAI,EAAE,CAAC;YACR,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACtB,CAAC;QACD,KAAK,GAAG,KAAK,GAAG,CAAC,CAAC;IACtB,CAAC;IACD,OAAO,IAAI,CAAC;AAChB,CAAC;AAED,SAAS,+BAA+B,CAAC,aAAsC;IAC3E,MAAM,KAAK,GAAG,0BAA0B,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;IAC7D,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACrB,OAAO,EAAE,CAAC;IACd,CAAC;IACD,MAAM,MAAM,GAA8B,EAAE,CAAC;IAC7C,IAAI,MAAM,GAAG,QAAQ,CAAC,OAAO,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;IACvD,KAAK,IAAI,CAAC,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QACzC,MAAM,CAAC,IAAI,CAAC;YACR,IAAI,EAAE,KAAK,CAAC,CAAC,CAAE;YACf,SAAS,EAAE,MAAM;YACjB,WAAW,EAAE,IAAI;SACpB,CAAC,CAAC;QACH,MAAM,GAAG,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IACtC,CAAC;IACD,OAAO,MAAM,CAAC;AAClB,CAAC;AAED,SAAS,6BAA6B,CAClC,QAAyB,EACzB,SAA2B,EAC3B,UAA8B,EAC9B,eAAwB;IAExB,MAAM,SAAS,GAAG,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;IACjD,MAAM,OAAO,GAAG,SAAS,CAAC,QAAQ,EAAE,CAAC;IACrC,MAAM,UAAU,GAA8B,EAAE,CAAC;IAEjD,KAAK,MAAM,GAAG,IAAI,SAAS,CAAC,GAAG,CAAC,OAAO,EAAE,EAAE,CAAC;QACxC,IAAI,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YACzC,SAAS;QACb,CAAC;QACD,IAAI,eAAe,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,EAAE,CAAC;YAC7D,SAAS;QACb,CAAC;QACD,UAAU,CAAC,IAAI,CAAC;YACZ,IAAI,EAAE,oBAAoB,CAAC,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC;YACjD,SAAS,EAAE,GAAG,CAAC,GAAG;YAClB,WAAW,EAAE,KAAK;SACrB,CAAC,CAAC;IACP,CAAC;IAED,IAAI,UAAU,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QACnC,oBAAoB,CAAC,SAAS,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,UAAU,EAAE,eAAe,EAAE,UAAU,CAAC,CAAC;IAC5G,CAAC;IACD,OAAO,UAAU,CAAC;AACtB,CAAC;AAED,SAAS,4BAA4B,CACjC,QAAyB,EACzB,SAA2B,EAC3B,UAA8B,EAC9B,WAA+B,EAC/B,eAAwB;IAExB,MAAM,MAAM,GAAG,eAAe,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;IACtD,MAAM,UAAU,GAA8B,EAAE,CAAC;IACjD,KAAK,MAAM,OAAO,IAAI,MAAM,CAAC,WAAW,EAAE,CAAC;QACvC,MAAM,UAAU,GAAG,oBAAoB,CAAC,QAAQ,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC;QACxE,IAAI,CAAC,UAAU,EAAE,CAAC;YACd,SAAS;QACb,CAAC;QACD,MAAM,WAAW,GAAG,GAAG,OAAO,CAAC,KAAK,GAAG,CAAC;QACxC,MAAM,UAAU,GAAG,UAAU,CAAC,QAAQ,EAAE,CAAC;QACzC,KAAK,MAAM,GAAG,IAAI,SAAS,CAAC,GAAG,CAAC,OAAO,EAAE,EAAE,CAAC;YACxC,IAAI,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;gBACzC,SAAS;YACb,CAAC;YACD,IAAI,eAAe,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,EAAE,CAAC;gBAC7D,SAAS;YACb,CAAC;YACD,MAAM,OAAO,GAAG,wBAAwB,CAAC,UAAU,EAAE,WAAW,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;YAC3E,IAAI,OAAO,EAAE,CAAC;gBACV,UAAU,CAAC,IAAI,CAAC;oBACZ,IAAI,EAAE,OAAO;oBACb,SAAS,EAAE,GAAG,CAAC,GAAG;oBAClB,WAAW,EAAE,KAAK;iBACrB,CAAC,CAAC;YACP,CAAC;QACL,CAAC;QACD,IAAI,UAAU,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;YACpC,oBAAoB,CAChB,UAAU,EACV,UAAU,EACV,WAAW,EACX,UAAU,EACV,UAAU,EACV,eAAe,EACf,UAAU,CACb,CAAC;QACN,CAAC;IACL,CAAC;IACD,OAAO,UAAU,CAAC;AACtB,CAAC;AAED,SAAS,oBAAoB,CACzB,SAAc,EACd,YAAoB,EACpB,WAA+B,EAC/B,SAA6B,EAC7B,UAAqC,EACrC,eAAmC,EACnC,UAA8B,EAC9B,KAAK,GAAG,CAAC;IAET,IAAI,KAAK,GAAG,EAAE,EAAE,CAAC;QACb,OAAO;IACX,CAAC;IACD,KAAK,MAAM,KAAK,IAAI,UAAU,CAAC,iBAAiB,CAAC,SAAS,CAAC,EAAE,CAAC;QAC1D,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC;QACnD,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YAChC,SAAS;QACb,CAAC;QACD,IAAI,KAAK,CAAC,WAAW,EAAE,CAAC;YACpB,MAAM,IAAI,GAAG,WAAW,IAAI,SAAS;gBACjC,CAAC,CAAC,CAAC,GAAG,EAAE;oBACJ,MAAM,OAAO,GAAG,wBAAwB,CAAC,SAAS,EAAE,WAAW,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;oBAC5E,OAAO,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC;gBAC/C,CAAC,CAAC,EAAE;gBACJ,CAAC,CAAC,GAAG,yBAAyB,CAAC,YAAY,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC;YAC/D,IAAI,IAAI,EAAE,CAAC;gBACP,UAAU,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,CAAC,GAAG,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC;YACvE,CAAC;YACD,oBAAoB,CAChB,KAAK,CAAC,GAAG,EACT,YAAY,EACZ,WAAW,EACX,SAAS,EACT,UAAU,EACV,eAAe,EACf,UAAU,EACV,KAAK,GAAG,CAAC,CACZ,CAAC;YACF,SAAS;QACb,CAAC;QACD,IAAI,eAAe,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,EAAE,CAAC;YACrD,SAAS;QACb,CAAC;QACD,IAAI,WAAW,IAAI,SAAS,EAAE,CAAC;YAC3B,MAAM,OAAO,GAAG,wBAAwB,CAAC,SAAS,EAAE,WAAW,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;YAC5E,IAAI,OAAO,EAAE,CAAC;gBACV,UAAU,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,KAAK,CAAC,GAAG,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,CAAC;YACjF,CAAC;YACD,SAAS;QACb,CAAC;QACD,UAAU,CAAC,IAAI,CAAC;YACZ,IAAI,EAAE,yBAAyB,CAAC,YAAY,EAAE,KAAK,CAAC,GAAG,CAAC;YACxD,SAAS,EAAE,KAAK,CAAC,GAAG;YACpB,WAAW,EAAE,KAAK;SACrB,CAAC,CAAC;IACP,CAAC;AACL,CAAC;AAED,SAAS,8BAA8B,CACnC,QAAyB,EACzB,MAAc,EACd,UAA8B,EAC9B,WAA+B,EAC/B,eAAwB;IAExB,MAAM,MAAM,GAAG,sBAAsB,CAAC,MAAM,EAAE,QAAQ,EAAE,WAAW,EAAE,UAAU,CAAC,CAAC;IACjF,IAAI,CAAC,MAAM,EAAE,CAAC;QACV,OAAO,EAAE,CAAC;IACd,CAAC;IACD,MAAM,UAAU,GAA8B,EAAE,CAAC;IACjD,KAAK,MAAM,KAAK,IAAI,UAAU,CAAC,iBAAiB,CAAC,MAAM,CAAC,EAAE,CAAC;QACvD,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC;QACnD,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YAChC,SAAS;QACb,CAAC;QACD,IAAI,KAAK,CAAC,WAAW,EAAE,CAAC;YACpB,UAAU,CAAC,IAAI,CAAC;gBACZ,IAAI,EAAE,GAAG,MAAM,GAAG,IAAI,GAAG;gBACzB,SAAS,EAAE,KAAK,CAAC,GAAG;gBACpB,WAAW,EAAE,IAAI;aACpB,CAAC,CAAC;YACH,SAAS;QACb,CAAC;QACD,IAAI,eAAe,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,EAAE,CAAC;YACrD,SAAS;QACb,CAAC;QACD,UAAU,CAAC,IAAI,CAAC;YACZ,IAAI,EAAE,GAAG,MAAM,GAAG,IAAI,EAAE;YACxB,SAAS,EAAE,KAAK,CAAC,GAAG;YACpB,WAAW,EAAE,KAAK;SACrB,CAAC,CAAC;IACP,CAAC;IACD,OAAO,UAAU,CAAC;AACtB,CAAC;AAED,SAAS,sBAAsB,CAC3B,MAAc,EACd,QAAyB,EACzB,WAA+B,EAC/B,UAA8B;IAE9B,MAAM,MAAM,GAAG,sBAAsB,CAAC,MAAM,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC;IACrE,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;QACjC,OAAO,SAAS,CAAC;IACrB,CAAC;IACD,MAAM,IAAI,GAAG,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IACzC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;QACpB,OAAO,SAAS,CAAC;IACrB,CAAC;IACD,OAAO,MAAM,CAAC;AAClB,CAAC"}
@@ -0,0 +1,5 @@
1
+ import type { PathReference } from './file-path-rewrite.js';
2
+ export declare function findImportPathReferencesInText(text: string, lineOffset?: number): PathReference[];
3
+ export declare function findEmbeddedPathReferencesInText(text: string, lineOffset?: number): PathReference[];
4
+ export declare function findCommentPathReferencesInText(text: string, lineOffset?: number): PathReference[];
5
+ export declare function findPathReferencesInMovedFile(text: string, isRqFile: boolean): PathReference[];