@lzehrung/codegraph 2.3.29 → 2.3.31

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 (324) hide show
  1. package/dist/bin/cli.js +6602 -4453
  2. package/dist/bin/query-index-worker.js +1302 -753
  3. package/dist/document-links/asciidoc.d.ts.map +1 -1
  4. package/dist/document-links/asciidoc.js +3 -4
  5. package/dist/document-links/asciidoc.js.map +1 -1
  6. package/dist/document-links/html-forms.d.ts +39 -0
  7. package/dist/document-links/html-forms.d.ts.map +1 -0
  8. package/dist/document-links/html-forms.js +94 -0
  9. package/dist/document-links/html-forms.js.map +1 -0
  10. package/dist/document-links/html.d.ts +8 -0
  11. package/dist/document-links/html.d.ts.map +1 -1
  12. package/dist/document-links/html.js +30 -15
  13. package/dist/document-links/html.js.map +1 -1
  14. package/dist/document-links/markdown.d.ts.map +1 -1
  15. package/dist/document-links/markdown.js +6 -7
  16. package/dist/document-links/markdown.js.map +1 -1
  17. package/dist/document-links/rst.d.ts.map +1 -1
  18. package/dist/document-links/rst.js +6 -0
  19. package/dist/document-links/rst.js.map +1 -1
  20. package/dist/document-links/sfc.d.ts.map +1 -1
  21. package/dist/document-links/sfc.js +4 -4
  22. package/dist/document-links/sfc.js.map +1 -1
  23. package/dist/graphs/angularjs.d.ts.map +1 -1
  24. package/dist/graphs/angularjs.js +9 -1
  25. package/dist/graphs/angularjs.js.map +1 -1
  26. package/dist/graphs/edge-resolution.d.ts.map +1 -1
  27. package/dist/graphs/edge-resolution.js +8 -3
  28. package/dist/graphs/edge-resolution.js.map +1 -1
  29. package/dist/graphs/specifiers.d.ts.map +1 -1
  30. package/dist/graphs/specifiers.js +62 -104
  31. package/dist/graphs/specifiers.js.map +1 -1
  32. package/dist/graphs/symbol-graph-detailed/edge-passes.d.ts.map +1 -1
  33. package/dist/graphs/symbol-graph-detailed/edge-passes.js +118 -86
  34. package/dist/graphs/symbol-graph-detailed/edge-passes.js.map +1 -1
  35. package/dist/graphs/symbol-graph-detailed/receiver-calls.d.ts +27 -0
  36. package/dist/graphs/symbol-graph-detailed/receiver-calls.d.ts.map +1 -1
  37. package/dist/graphs/symbol-graph-detailed/receiver-calls.js +509 -42
  38. package/dist/graphs/symbol-graph-detailed/receiver-calls.js.map +1 -1
  39. package/dist/impact/call-compatibility/providers/index.d.ts +15 -1
  40. package/dist/impact/call-compatibility/providers/index.d.ts.map +1 -1
  41. package/dist/impact/call-compatibility/providers/index.js +21 -20
  42. package/dist/impact/call-compatibility/providers/index.js.map +1 -1
  43. package/dist/impact/call-compatibility/providers/profiles.d.ts +80 -0
  44. package/dist/impact/call-compatibility/providers/profiles.d.ts.map +1 -0
  45. package/dist/impact/call-compatibility/providers/profiles.js +164 -0
  46. package/dist/impact/call-compatibility/providers/profiles.js.map +1 -0
  47. package/dist/impact/call-compatibility.d.ts.map +1 -1
  48. package/dist/impact/call-compatibility.js +73 -108
  49. package/dist/impact/call-compatibility.js.map +1 -1
  50. package/dist/impact/member-resolution-coverage.d.ts.map +1 -1
  51. package/dist/impact/member-resolution-coverage.js +2 -2
  52. package/dist/impact/member-resolution-coverage.js.map +1 -1
  53. package/dist/indexer/build-cache/manifest.d.ts +7 -0
  54. package/dist/indexer/build-cache/manifest.d.ts.map +1 -1
  55. package/dist/indexer/build-cache/manifest.js +32 -1
  56. package/dist/indexer/build-cache/manifest.js.map +1 -1
  57. package/dist/indexer/build-cache/options.d.ts +16 -2
  58. package/dist/indexer/build-cache/options.d.ts.map +1 -1
  59. package/dist/indexer/build-cache/options.js +17 -3
  60. package/dist/indexer/build-cache/options.js.map +1 -1
  61. package/dist/indexer/build-cache/project-snapshot.d.ts.map +1 -1
  62. package/dist/indexer/build-cache/project-snapshot.js +1 -0
  63. package/dist/indexer/build-cache/project-snapshot.js.map +1 -1
  64. package/dist/indexer/build-index.d.ts.map +1 -1
  65. package/dist/indexer/build-index.js +80 -2
  66. package/dist/indexer/build-index.js.map +1 -1
  67. package/dist/indexer/build-manifest.d.ts +1 -0
  68. package/dist/indexer/build-manifest.d.ts.map +1 -1
  69. package/dist/indexer/build-manifest.js +18 -0
  70. package/dist/indexer/build-manifest.js.map +1 -1
  71. package/dist/indexer/build-workers.js +1 -1
  72. package/dist/indexer/build-workers.js.map +1 -1
  73. package/dist/indexer/declaration-visibility.d.ts +43 -0
  74. package/dist/indexer/declaration-visibility.d.ts.map +1 -0
  75. package/dist/indexer/declaration-visibility.js +202 -0
  76. package/dist/indexer/declaration-visibility.js.map +1 -0
  77. package/dist/indexer/imports/binding-ranges.d.ts +2 -2
  78. package/dist/indexer/imports/binding-ranges.d.ts.map +1 -1
  79. package/dist/indexer/imports/binding-ranges.js +2 -123
  80. package/dist/indexer/imports/binding-ranges.js.map +1 -1
  81. package/dist/indexer/imports/import-binding-tables.d.ts +64 -0
  82. package/dist/indexer/imports/import-binding-tables.d.ts.map +1 -0
  83. package/dist/indexer/imports/import-binding-tables.js +419 -0
  84. package/dist/indexer/imports/import-binding-tables.js.map +1 -0
  85. package/dist/indexer/imports/js-text-imports.d.ts.map +1 -1
  86. package/dist/indexer/imports/js-text-imports.js +5 -2
  87. package/dist/indexer/imports/js-text-imports.js.map +1 -1
  88. package/dist/indexer/imports/language-specific.d.ts +3 -22
  89. package/dist/indexer/imports/language-specific.d.ts.map +1 -1
  90. package/dist/indexer/imports/language-specific.js +54 -573
  91. package/dist/indexer/imports/language-specific.js.map +1 -1
  92. package/dist/indexer/imports/native-captures.d.ts.map +1 -1
  93. package/dist/indexer/imports/native-captures.js +23 -32
  94. package/dist/indexer/imports/native-captures.js.map +1 -1
  95. package/dist/indexer/imports/text-import-extractors.d.ts +37 -0
  96. package/dist/indexer/imports/text-import-extractors.d.ts.map +1 -0
  97. package/dist/indexer/imports/text-import-extractors.js +358 -0
  98. package/dist/indexer/imports/text-import-extractors.js.map +1 -0
  99. package/dist/indexer/imports.d.ts.map +1 -1
  100. package/dist/indexer/imports.js +2 -1
  101. package/dist/indexer/imports.js.map +1 -1
  102. package/dist/indexer/locals-and-exports.d.ts.map +1 -1
  103. package/dist/indexer/locals-and-exports.js +23 -27
  104. package/dist/indexer/locals-and-exports.js.map +1 -1
  105. package/dist/indexer/navigation-goto.d.ts +1 -7
  106. package/dist/indexer/navigation-goto.d.ts.map +1 -1
  107. package/dist/indexer/navigation-goto.js +181 -381
  108. package/dist/indexer/navigation-goto.js.map +1 -1
  109. package/dist/indexer/navigation-resolve.d.ts.map +1 -1
  110. package/dist/indexer/navigation-resolve.js +20 -1
  111. package/dist/indexer/navigation-resolve.js.map +1 -1
  112. package/dist/indexer/navigation.d.ts.map +1 -1
  113. package/dist/indexer/navigation.js +39 -7
  114. package/dist/indexer/navigation.js.map +1 -1
  115. package/dist/indexer/parse-context.js +2 -2
  116. package/dist/indexer/parse-context.js.map +1 -1
  117. package/dist/indexer/scope-nodes.d.ts +108 -0
  118. package/dist/indexer/scope-nodes.d.ts.map +1 -0
  119. package/dist/indexer/scope-nodes.js +238 -0
  120. package/dist/indexer/scope-nodes.js.map +1 -0
  121. package/dist/indexer/scope.d.ts.map +1 -1
  122. package/dist/indexer/scope.js +70 -130
  123. package/dist/indexer/scope.js.map +1 -1
  124. package/dist/indexer/types.d.ts +7 -0
  125. package/dist/indexer/types.d.ts.map +1 -1
  126. package/dist/languages/definitions/c-family.d.ts +18 -4
  127. package/dist/languages/definitions/c-family.d.ts.map +1 -1
  128. package/dist/languages/definitions/c-family.js +51 -13
  129. package/dist/languages/definitions/c-family.js.map +1 -1
  130. package/dist/languages/definitions/c.d.ts.map +1 -1
  131. package/dist/languages/definitions/c.js +7 -43
  132. package/dist/languages/definitions/c.js.map +1 -1
  133. package/dist/languages/definitions/cpp.d.ts.map +1 -1
  134. package/dist/languages/definitions/cpp.js +15 -61
  135. package/dist/languages/definitions/cpp.js.map +1 -1
  136. package/dist/languages/definitions/csharp.d.ts.map +1 -1
  137. package/dist/languages/definitions/csharp.js +46 -52
  138. package/dist/languages/definitions/csharp.js.map +1 -1
  139. package/dist/languages/definitions/css-like.d.ts.map +1 -1
  140. package/dist/languages/definitions/css-like.js +13 -10
  141. package/dist/languages/definitions/css-like.js.map +1 -1
  142. package/dist/languages/definitions/go.d.ts.map +1 -1
  143. package/dist/languages/definitions/go.js +29 -42
  144. package/dist/languages/definitions/go.js.map +1 -1
  145. package/dist/languages/definitions/html.d.ts.map +1 -1
  146. package/dist/languages/definitions/html.js +15 -14
  147. package/dist/languages/definitions/html.js.map +1 -1
  148. package/dist/languages/definitions/java.d.ts.map +1 -1
  149. package/dist/languages/definitions/java.js +42 -48
  150. package/dist/languages/definitions/java.js.map +1 -1
  151. package/dist/languages/definitions/javascript.d.ts.map +1 -1
  152. package/dist/languages/definitions/javascript.js +26 -54
  153. package/dist/languages/definitions/javascript.js.map +1 -1
  154. package/dist/languages/definitions/js-family.d.ts +15 -1
  155. package/dist/languages/definitions/js-family.d.ts.map +1 -1
  156. package/dist/languages/definitions/js-family.js +51 -0
  157. package/dist/languages/definitions/js-family.js.map +1 -1
  158. package/dist/languages/definitions/kotlin.d.ts.map +1 -1
  159. package/dist/languages/definitions/kotlin.js +26 -43
  160. package/dist/languages/definitions/kotlin.js.map +1 -1
  161. package/dist/languages/definitions/php.d.ts.map +1 -1
  162. package/dist/languages/definitions/php.js +50 -60
  163. package/dist/languages/definitions/php.js.map +1 -1
  164. package/dist/languages/definitions/python.d.ts.map +1 -1
  165. package/dist/languages/definitions/python.js +23 -14
  166. package/dist/languages/definitions/python.js.map +1 -1
  167. package/dist/languages/definitions/ruby.d.ts.map +1 -1
  168. package/dist/languages/definitions/ruby.js +14 -17
  169. package/dist/languages/definitions/ruby.js.map +1 -1
  170. package/dist/languages/definitions/rust.d.ts.map +1 -1
  171. package/dist/languages/definitions/rust.js +30 -52
  172. package/dist/languages/definitions/rust.js.map +1 -1
  173. package/dist/languages/definitions/scss.d.ts.map +1 -1
  174. package/dist/languages/definitions/scss.js +33 -49
  175. package/dist/languages/definitions/scss.js.map +1 -1
  176. package/dist/languages/definitions/sfc-graph.d.ts +4 -0
  177. package/dist/languages/definitions/sfc-graph.d.ts.map +1 -0
  178. package/dist/languages/definitions/sfc-graph.js +16 -0
  179. package/dist/languages/definitions/sfc-graph.js.map +1 -0
  180. package/dist/languages/definitions/shared.d.ts +33 -0
  181. package/dist/languages/definitions/shared.d.ts.map +1 -0
  182. package/dist/languages/definitions/shared.js +63 -0
  183. package/dist/languages/definitions/shared.js.map +1 -0
  184. package/dist/languages/definitions/sql.d.ts.map +1 -1
  185. package/dist/languages/definitions/sql.js +1 -0
  186. package/dist/languages/definitions/sql.js.map +1 -1
  187. package/dist/languages/definitions/svelte.d.ts.map +1 -1
  188. package/dist/languages/definitions/svelte.js +2 -10
  189. package/dist/languages/definitions/svelte.js.map +1 -1
  190. package/dist/languages/definitions/swift.d.ts.map +1 -1
  191. package/dist/languages/definitions/swift.js +37 -31
  192. package/dist/languages/definitions/swift.js.map +1 -1
  193. package/dist/languages/definitions/typescript.d.ts.map +1 -1
  194. package/dist/languages/definitions/typescript.js +56 -90
  195. package/dist/languages/definitions/typescript.js.map +1 -1
  196. package/dist/languages/definitions/vue.d.ts.map +1 -1
  197. package/dist/languages/definitions/vue.js +2 -10
  198. package/dist/languages/definitions/vue.js.map +1 -1
  199. package/dist/languages/definitions/zig.d.ts.map +1 -1
  200. package/dist/languages/definitions/zig.js +9 -15
  201. package/dist/languages/definitions/zig.js.map +1 -1
  202. package/dist/languages/graph-captures.d.ts +40 -0
  203. package/dist/languages/graph-captures.d.ts.map +1 -0
  204. package/dist/languages/graph-captures.js +46 -0
  205. package/dist/languages/graph-captures.js.map +1 -0
  206. package/dist/languages/import-statement-parsers.d.ts +17 -0
  207. package/dist/languages/import-statement-parsers.d.ts.map +1 -1
  208. package/dist/languages/import-statement-parsers.js +108 -0
  209. package/dist/languages/import-statement-parsers.js.map +1 -1
  210. package/dist/languages/js-family.d.ts +2 -0
  211. package/dist/languages/js-family.d.ts.map +1 -1
  212. package/dist/languages/js-family.js +15 -6
  213. package/dist/languages/js-family.js.map +1 -1
  214. package/dist/languages/types.d.ts +4 -0
  215. package/dist/languages/types.d.ts.map +1 -1
  216. package/dist/languages/types.js +1 -1
  217. package/dist/languages/types.js.map +1 -1
  218. package/dist/languages.js +1 -1
  219. package/dist/languages.js.map +1 -1
  220. package/dist/native/contracts.d.ts +1 -1
  221. package/dist/native/contracts.d.ts.map +1 -1
  222. package/dist/native/js-bridge.d.ts +10 -0
  223. package/dist/native/js-bridge.d.ts.map +1 -1
  224. package/dist/native/js-bridge.js +10 -0
  225. package/dist/native/js-bridge.js.map +1 -1
  226. package/dist/native/native-backend-report.d.ts.map +1 -1
  227. package/dist/native/native-backend-report.js +2 -0
  228. package/dist/native/native-backend-report.js.map +1 -1
  229. package/dist/util/comments.d.ts +7 -7
  230. package/dist/util/comments.d.ts.map +1 -1
  231. package/dist/util/comments.js +15 -214
  232. package/dist/util/comments.js.map +1 -1
  233. package/dist/util/dynamic-import-tables.d.ts +88 -0
  234. package/dist/util/dynamic-import-tables.d.ts.map +1 -0
  235. package/dist/util/dynamic-import-tables.js +100 -0
  236. package/dist/util/dynamic-import-tables.js.map +1 -0
  237. package/dist/util/lines.d.ts.map +1 -1
  238. package/dist/util/lines.js +4 -1
  239. package/dist/util/lines.js.map +1 -1
  240. package/dist/util/member-access-tables.d.ts +72 -0
  241. package/dist/util/member-access-tables.d.ts.map +1 -0
  242. package/dist/util/member-access-tables.js +167 -0
  243. package/dist/util/member-access-tables.js.map +1 -0
  244. package/dist/util/member-access.d.ts +2 -0
  245. package/dist/util/member-access.d.ts.map +1 -1
  246. package/dist/util/member-access.js +61 -95
  247. package/dist/util/member-access.js.map +1 -1
  248. package/dist/util/paths.d.ts +4 -0
  249. package/dist/util/paths.d.ts.map +1 -1
  250. package/dist/util/paths.js +26 -0
  251. package/dist/util/paths.js.map +1 -1
  252. package/dist/util/project-files.js +1 -1
  253. package/dist/util/project-files.js.map +1 -1
  254. package/dist/util/resolution/cargo-targets.d.ts.map +1 -1
  255. package/dist/util/resolution/cargo-targets.js +17 -14
  256. package/dist/util/resolution/cargo-targets.js.map +1 -1
  257. package/dist/util/resolution/cpp.d.ts +6 -0
  258. package/dist/util/resolution/cpp.d.ts.map +1 -0
  259. package/dist/util/resolution/cpp.js +69 -0
  260. package/dist/util/resolution/cpp.js.map +1 -0
  261. package/dist/util/resolution/csharp.d.ts +4 -3
  262. package/dist/util/resolution/csharp.d.ts.map +1 -1
  263. package/dist/util/resolution/csharp.js +27 -113
  264. package/dist/util/resolution/csharp.js.map +1 -1
  265. package/dist/util/resolution/files.d.ts +6 -0
  266. package/dist/util/resolution/files.d.ts.map +1 -1
  267. package/dist/util/resolution/files.js +108 -4
  268. package/dist/util/resolution/files.js.map +1 -1
  269. package/dist/util/resolution/go.d.ts +1 -0
  270. package/dist/util/resolution/go.d.ts.map +1 -1
  271. package/dist/util/resolution/go.js +4 -3
  272. package/dist/util/resolution/go.js.map +1 -1
  273. package/dist/util/resolution/jvm.d.ts +3 -3
  274. package/dist/util/resolution/jvm.d.ts.map +1 -1
  275. package/dist/util/resolution/jvm.js +90 -54
  276. package/dist/util/resolution/jvm.js.map +1 -1
  277. package/dist/util/resolution/node.js +2 -2
  278. package/dist/util/resolution/node.js.map +1 -1
  279. package/dist/util/resolution/php-composer.d.ts.map +1 -1
  280. package/dist/util/resolution/php-composer.js +8 -7
  281. package/dist/util/resolution/php-composer.js.map +1 -1
  282. package/dist/util/resolution/php.d.ts.map +1 -1
  283. package/dist/util/resolution/php.js +30 -43
  284. package/dist/util/resolution/php.js.map +1 -1
  285. package/dist/util/resolution/project-symbols.d.ts +5 -7
  286. package/dist/util/resolution/project-symbols.d.ts.map +1 -1
  287. package/dist/util/resolution/project-symbols.js +23 -9
  288. package/dist/util/resolution/project-symbols.js.map +1 -1
  289. package/dist/util/resolution/python.d.ts.map +1 -1
  290. package/dist/util/resolution/python.js +107 -62
  291. package/dist/util/resolution/python.js.map +1 -1
  292. package/dist/util/resolution/rust.d.ts.map +1 -1
  293. package/dist/util/resolution/rust.js +45 -34
  294. package/dist/util/resolution/rust.js.map +1 -1
  295. package/dist/util/resolution/tsconfig.d.ts.map +1 -1
  296. package/dist/util/resolution/tsconfig.js +3 -9
  297. package/dist/util/resolution/tsconfig.js.map +1 -1
  298. package/dist/util/resolution-candidates.d.ts +5 -1
  299. package/dist/util/resolution-candidates.d.ts.map +1 -1
  300. package/dist/util/resolution-candidates.js +18 -0
  301. package/dist/util/resolution-candidates.js.map +1 -1
  302. package/dist/util/resolution.d.ts.map +1 -1
  303. package/dist/util/resolution.js +93 -49
  304. package/dist/util/resolution.js.map +1 -1
  305. package/dist/util/specifiers.d.ts +4 -10
  306. package/dist/util/specifiers.d.ts.map +1 -1
  307. package/dist/util/specifiers.js +131 -165
  308. package/dist/util/specifiers.js.map +1 -1
  309. package/dist/util/trivia-tables.d.ts +69 -0
  310. package/dist/util/trivia-tables.d.ts.map +1 -0
  311. package/dist/util/trivia-tables.js +186 -0
  312. package/dist/util/trivia-tables.js.map +1 -0
  313. package/dist/util/trivia.d.ts +24 -0
  314. package/dist/util/trivia.d.ts.map +1 -0
  315. package/dist/util/trivia.js +621 -0
  316. package/dist/util/trivia.js.map +1 -0
  317. package/dist/util.d.ts +1 -1
  318. package/dist/util.d.ts.map +1 -1
  319. package/dist/util.js +1 -1
  320. package/dist/util.js.map +1 -1
  321. package/dist/worker/native-extract-worker.d.ts.map +1 -1
  322. package/dist/worker/native-extract-worker.js +4 -4
  323. package/dist/worker/native-extract-worker.js.map +1 -1
  324. package/package.json +3 -3
@@ -1,5 +1,6 @@
1
1
  import { registerLanguage } from "../registry.js";
2
- import { ECMASCRIPT_CONTROL_SPLIT_POINTS, ECMASCRIPT_CORE_FUNCTION_BLOCKS, ECMASCRIPT_MODULE_VAR_BLOCKS, } from "./js-family.js";
2
+ import { classifyByParentType, hasParentType, isNameOrPropertyFieldOnParent, nodeTypeIn } from "./shared.js";
3
+ import { ECMASCRIPT_BLOCK_SCOPE_TYPES, ECMASCRIPT_CONTROL_SPLIT_POINTS, ECMASCRIPT_CORE_FUNCTION_BLOCKS, ECMASCRIPT_DECLARATION_NAME_PARENTS, ECMASCRIPT_FUNCTION_SCOPE_TYPES, ECMASCRIPT_MODULE_VAR_BLOCKS, isEcmaScriptTypeOnlyStatement, isEcmaScriptVariableDeclaratorName, } from "./js-family.js";
3
4
  function normalizeTypeScriptNativeQuery(kind, query) {
4
5
  let normalized = query.replace(/\(class_declaration name: \(identifier\) @/g, "(class_declaration name: (type_identifier) @");
5
6
  if (kind !== "exports") {
@@ -53,17 +54,17 @@ const BASE_STRUCTURE = {
53
54
  };
54
55
  const BASE_GRAPH = {
55
56
  imports: `
56
- (import_statement (string) @mod) @stmt
57
+ (import_statement (string) @from) @stmt
57
58
  ;; import x = require("...") is represented via import_require_clause
58
- (import_statement (import_require_clause (string) @mod)) @stmt
59
- (export_statement (string) @mod) @stmt
60
- (call_expression function: (import) arguments: (arguments (string) @mod)) @stmt
59
+ (import_statement (import_require_clause (string) @from)) @stmt
60
+ (export_statement (string) @from) @stmt
61
+ (call_expression function: (import) arguments: (arguments (string) @from)) @stmt
61
62
  ;; declare module "foo" {} — ambient module augmentations create a type-only
62
63
  ;; dependency on the named module and must appear in the file graph so that
63
64
  ;; changes to "foo" propagate to augmenting files (and vice-versa).
64
65
  ;; The inner node type is "module" (not "module_declaration"); its string
65
66
  ;; child uses field-name "name".
66
- (ambient_declaration (module name: (string) @mod)) @stmt
67
+ (ambient_declaration (module name: (string) @from)) @stmt
67
68
  `,
68
69
  exports: `
69
70
  (export_statement) @stmt
@@ -87,6 +88,7 @@ const BASE_GRAPH = {
87
88
  (export_statement (export_clause (export_specifier "type"? @type_kw name: (identifier) @src !alias)) (string) @from) @stmt
88
89
  (export_statement (export_clause (export_specifier "type"? @type_kw name: (identifier) @src alias: (identifier) @alias))) @stmt
89
90
  (export_statement (export_clause (export_specifier "type"? @type_kw name: (identifier) @src !alias))) @stmt
91
+ (export_statement "*" @wild (string) @from) @stmt
90
92
  (export_statement (string) @from) @stmt
91
93
  (export_assignment (identifier) @ts_export_assign)
92
94
  `,
@@ -126,78 +128,53 @@ const BASE_HELPERS = {
126
128
  shorthandPropertyIdentifier: ["shorthand_property_identifier", "shorthand_property_identifier_pattern"],
127
129
  memberExpression: "member_expression",
128
130
  },
129
- classifyDefinition: (n) => {
130
- const t = n.parent?.type;
131
- if (t === "function_declaration")
132
- return "function";
133
- if (t === "generator_function_declaration")
134
- return "function";
135
- // A named function expression's own name is a function-kind binding, matching the
136
- // declaration forms; the grammar spells the expression forms without the `_declaration`
137
- // suffix (`function_expression`, `generator_function`).
138
- if (t === "function_expression")
139
- return "function";
140
- if (t === "generator_function")
141
- return "function";
142
- if (t === "method_definition")
143
- return "function";
144
- if (t === "method_signature")
145
- return "function";
146
- if (t === "abstract_method_signature")
147
- return "function";
148
- if (t === "function_signature")
149
- return "function";
150
- if (t === "class_declaration")
151
- return "class";
152
- if (t === "abstract_class_declaration")
153
- return "class";
154
- if (t === "interface_declaration")
155
- return "interface";
156
- if (t === "type_alias_declaration")
157
- return "type";
158
- if (t === "enum_declaration" || t === "internal_module" || t === "module")
159
- return "type";
160
- return "variable";
161
- },
131
+ // A named function expression's own name is a function-kind binding, matching the
132
+ // declaration forms; the grammar spells the expression forms without the `_declaration`
133
+ // suffix (`function_expression`, `generator_function`).
134
+ classifyDefinition: classifyByParentType({
135
+ function_declaration: "function",
136
+ generator_function_declaration: "function",
137
+ function_expression: "function",
138
+ generator_function: "function",
139
+ method_definition: "function",
140
+ method_signature: "function",
141
+ abstract_method_signature: "function",
142
+ function_signature: "function",
143
+ class_declaration: "class",
144
+ abstract_class_declaration: "class",
145
+ interface_declaration: "interface",
146
+ type_alias_declaration: "type",
147
+ enum_declaration: "type",
148
+ internal_module: "type",
149
+ module: "type",
150
+ }),
162
151
  isDeclarationName: (node) => {
163
152
  const parent = node.parent;
164
- const p = parent?.type;
165
- if (parent?.type === "variable_declarator") {
166
- return parent.childForFieldName("name")?.id === node.id;
167
- }
168
- if (parent?.type === "public_field_definition" || parent?.type === "enum_assignment") {
169
- const name = parent.childForFieldName("name") ?? parent.childForFieldName("property");
170
- return name?.id === node.id;
171
- }
153
+ if (isEcmaScriptVariableDeclaratorName(node))
154
+ return true;
155
+ if (isNameOrPropertyFieldOnParent(node, ["public_field_definition", "enum_assignment"]))
156
+ return true;
172
157
  if (parent?.type === "enum_body") {
173
158
  return node.type === "property_identifier";
174
159
  }
175
- return (!!p &&
176
- [
177
- "generator_function_declaration",
178
- "function_declaration",
179
- "class_declaration",
180
- "abstract_class_declaration",
181
- "interface_declaration",
182
- "type_alias_declaration",
183
- "enum_declaration",
184
- "function_signature",
185
- "internal_module",
186
- "module",
187
- "import_specifier",
188
- "namespace_import",
189
- "import_clause",
190
- "import_equals_declaration",
191
- // Method names in classes and abstract method signatures: needed so
192
- // that editing a method name is classified as a definition change.
193
- "method_definition",
194
- "method_signature",
195
- "abstract_method_signature",
196
- // A named function expression binds its own name inside its body:
197
- // `const f = function inner() {}` and `$scope.refresh = function refresh() {}`.
198
- "function_expression",
199
- "generator_function",
200
- ].includes(p));
160
+ return hasParentType(node, [
161
+ ...ECMASCRIPT_DECLARATION_NAME_PARENTS,
162
+ "abstract_class_declaration",
163
+ "interface_declaration",
164
+ "type_alias_declaration",
165
+ "enum_declaration",
166
+ "function_signature",
167
+ "internal_module",
168
+ "module",
169
+ "import_equals_declaration",
170
+ // Method names in classes and abstract method signatures: needed so
171
+ // that editing a method name is classified as a definition change.
172
+ "method_signature",
173
+ "abstract_method_signature",
174
+ // A named function expression binds its own name inside its body:
175
+ // `const f = function inner() {}` and `$scope.refresh = function refresh() {}`.
176
+ "generator_function",
177
+ ]);
201
178
  },
202
179
  // Scope construction has structural handling for the ordinary declaration forms. Ambient
203
180
  // overload signatures, `namespace X {}`, and a named function expression's own name are not
@@ -212,21 +189,10 @@ const BASE_HELPERS = {
212
189
  parent === "function_expression" ||
213
190
  parent === "generator_function");
214
191
  },
215
- createsBlockScope: (n) => n.type === "program" ||
216
- n.type === "block" ||
217
- n.type === "class_body" ||
218
- n.type === "class_static_block" ||
219
- n.type === "enum_body",
220
- createsFunctionScope: (n) => n.type === "generator_function_declaration" ||
221
- n.type === "function_declaration" ||
222
- n.type === "function" ||
223
- n.type === "function_expression" ||
224
- // A generator function expression has its own body scope: without this, its own name
225
- // (registered above) and its parameters would land in the enclosing scope.
226
- n.type === "generator_function" ||
227
- n.type === "arrow_function" ||
228
- n.type === "method_definition",
229
- membersAreImplicitlyInScope: false,
192
+ createsBlockScope: nodeTypeIn([...ECMASCRIPT_BLOCK_SCOPE_TYPES, "enum_body"]),
193
+ // A generator function expression has its own body scope: without this, its own name
194
+ // (registered above) and its parameters would land in the enclosing scope.
195
+ createsFunctionScope: nodeTypeIn([...ECMASCRIPT_FUNCTION_SCOPE_TYPES, "generator_function"]),
230
196
  supportsCrossModuleSymbols: true,
231
197
  };
232
198
  export const TYPESCRIPT_DEF = {
@@ -236,7 +202,7 @@ export const TYPESCRIPT_DEF = {
236
202
  graph: BASE_GRAPH,
237
203
  supportsExportFromReferences: true,
238
204
  ...BASE_HELPERS,
239
- isTypeOnly: (stmtText) => /\b(import|export)\s+type\b/.test(stmtText),
205
+ isTypeOnly: isEcmaScriptTypeOnlyStatement,
240
206
  native: {
241
207
  normalizeQuery: normalizeTypeScriptNativeQuery,
242
208
  authoritativeKinds: ["exports"],
@@ -258,7 +224,7 @@ export const TSX_DEF = {
258
224
  graph: BASE_GRAPH,
259
225
  supportsExportFromReferences: true,
260
226
  ...BASE_HELPERS,
261
- isTypeOnly: (stmtText) => /\b(import|export)\s+type\b/.test(stmtText),
227
+ isTypeOnly: isEcmaScriptTypeOnlyStatement,
262
228
  native: {
263
229
  normalizeQuery: normalizeTypeScriptNativeQuery,
264
230
  authoritativeKinds: ["exports"],
@@ -1 +1 @@
1
- {"version":3,"file":"typescript.js","sourceRoot":"","sources":["../../../src/languages/definitions/typescript.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"typescript.js","sourceRoot":"","sources":["../../../src/languages/definitions/typescript.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"vue.d.ts","sourceRoot":"","sources":["../../../src/languages/definitions/vue.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAGtD,eAAO,MAAM,OAAO,EAAE,kBAyBrB,CAAC"}
1
+ {"version":3,"file":"vue.d.ts","sourceRoot":"","sources":["../../../src/languages/definitions/vue.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAItD,eAAO,MAAM,OAAO,EAAE,kBAgBrB,CAAC"}
@@ -1,4 +1,5 @@
1
1
  import { registerLanguage } from "../registry.js";
2
+ import { sfcExternalScriptGraph } from "./sfc-graph.js";
2
3
  export const VUE_DEF = {
3
4
  id: "vue",
4
5
  extensions: [".vue"],
@@ -11,16 +12,7 @@ export const VUE_DEF = {
11
12
  splitPoints: ["template_element", "script_element", "style_element"],
12
13
  comments: ["comment"],
13
14
  },
14
- graph: {
15
- imports: `
16
- (script_element (start_tag (attribute (attribute_name) @attr (#eq? @attr "src") (quoted_attribute_value (attribute_value) @mod)))) @stmt
17
- `,
18
- exports: "",
19
- locals: "",
20
- importBindings: `
21
- (script_element (start_tag (attribute (attribute_name) @attr (#eq? @attr "src") (quoted_attribute_value (attribute_value) @from)))) @stmt
22
- `,
23
- },
15
+ graph: sfcExternalScriptGraph(),
24
16
  nodeTypes: {
25
17
  identifier: ["attribute_value"],
26
18
  },
@@ -1 +1 @@
1
- {"version":3,"file":"vue.js","sourceRoot":"","sources":["../../../src/languages/definitions/vue.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAElD,MAAM,CAAC,MAAM,OAAO,GAAuB;IACzC,EAAE,EAAE,KAAK;IACT,UAAU,EAAE,CAAC,MAAM,CAAC;IACpB,SAAS,EAAE;QACT,MAAM,EAAE;YACN,EAAE,IAAI,EAAE,kBAAkB,EAAE,SAAS,EAAE,UAAU,EAAE;YACnD,EAAE,IAAI,EAAE,gBAAgB,EAAE,SAAS,EAAE,QAAQ,EAAE;YAC/C,EAAE,IAAI,EAAE,eAAe,EAAE,SAAS,EAAE,OAAO,EAAE;SAC9C;QACD,WAAW,EAAE,CAAC,kBAAkB,EAAE,gBAAgB,EAAE,eAAe,CAAC;QACpE,QAAQ,EAAE,CAAC,SAAS,CAAC;KACtB;IACD,KAAK,EAAE;QACL,OAAO,EAAE;;KAER;QACD,OAAO,EAAE,EAAE;QACX,MAAM,EAAE,EAAE;QACV,cAAc,EAAE;;KAEf;KACF;IACD,SAAS,EAAE;QACT,UAAU,EAAE,CAAC,iBAAiB,CAAC;KAChC;CACF,CAAC;AACF,gBAAgB,CAAC,OAAO,CAAC,CAAC"}
1
+ {"version":3,"file":"vue.js","sourceRoot":"","sources":["../../../src/languages/definitions/vue.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AAExD,MAAM,CAAC,MAAM,OAAO,GAAuB;IACzC,EAAE,EAAE,KAAK;IACT,UAAU,EAAE,CAAC,MAAM,CAAC;IACpB,SAAS,EAAE;QACT,MAAM,EAAE;YACN,EAAE,IAAI,EAAE,kBAAkB,EAAE,SAAS,EAAE,UAAU,EAAE;YACnD,EAAE,IAAI,EAAE,gBAAgB,EAAE,SAAS,EAAE,QAAQ,EAAE;YAC/C,EAAE,IAAI,EAAE,eAAe,EAAE,SAAS,EAAE,OAAO,EAAE;SAC9C;QACD,WAAW,EAAE,CAAC,kBAAkB,EAAE,gBAAgB,EAAE,eAAe,CAAC;QACpE,QAAQ,EAAE,CAAC,SAAS,CAAC;KACtB;IACD,KAAK,EAAE,sBAAsB,EAAE;IAC/B,SAAS,EAAE;QACT,UAAU,EAAE,CAAC,iBAAiB,CAAC;KAChC;CACF,CAAC;AACF,gBAAgB,CAAC,OAAO,CAAC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"zig.d.ts","sourceRoot":"","sources":["../../../src/languages/definitions/zig.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAatD,eAAO,MAAM,OAAO,EAAE,kBAiFrB,CAAC"}
1
+ {"version":3,"file":"zig.d.ts","sourceRoot":"","sources":["../../../src/languages/definitions/zig.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AActD,eAAO,MAAM,OAAO,EAAE,kBA8ErB,CAAC"}
@@ -1,4 +1,5 @@
1
1
  import { registerLanguage } from "../registry.js";
2
+ import { isNameFieldOnParent, nodeTypeIn } from "./shared.js";
2
3
  const ZIG_TYPE_INITIALIZER_TYPES = new Set([
3
4
  "builtin_type",
4
5
  "struct_declaration",
@@ -22,8 +23,9 @@ export const ZIG_DEF = {
22
23
  },
23
24
  graph: {
24
25
  imports: `
25
- (builtin_function (builtin_identifier) @fn (arguments (string) @mod) (#eq? @fn "@import")) @stmt
26
- (builtin_function (builtin_identifier) @mod (arguments) (#eq? @mod "@cImport")) @stmt
26
+ (builtin_function (builtin_identifier) @fn (arguments (string) @from) (#eq? @fn "@import")) @stmt
27
+ ;; @cImport has no path argument; the builtin identifier is the specifier.
28
+ (builtin_function (builtin_identifier) @from (arguments) (#eq? @from "@cImport")) @stmt
27
29
  `,
28
30
  exports: `
29
31
  (source_file (function_declaration name: (identifier) @name))
@@ -79,23 +81,15 @@ export const ZIG_DEF = {
79
81
  return "type";
80
82
  return "variable";
81
83
  },
82
- createsFunctionScope: (node) => node.type === "function_declaration",
83
- createsBlockScope: (node) => node.type === "block",
84
- isDeclarationName: (node) => {
85
- const parent = node.parent;
86
- if (!parent)
87
- return false;
88
- if (parent.type === "function_declaration" && parent.childForFieldName("name")?.id === node.id)
89
- return true;
90
- if (parent.type !== "variable_declaration")
91
- return false;
84
+ createsFunctionScope: nodeTypeIn(["function_declaration"]),
85
+ createsBlockScope: nodeTypeIn(["block"]),
86
+ isDeclarationName: (node) => isNameFieldOnParent(node, ["function_declaration"]) ||
92
87
  // No named field distinguishes the declared identifier from an initializer that is
93
88
  // itself a bare identifier (e.g. `const x = y;` puts both `x` and `y` directly under
94
89
  // `variable_declaration`); the declared name is always the first identifier child,
95
90
  // matching the lookup classifyDefinition above already relies on.
96
- const declaredName = parent.namedChildren.find((child) => child.type === "identifier");
97
- return declaredName?.id === node.id;
98
- },
91
+ (node.parent?.type === "variable_declaration" &&
92
+ node.parent.namedChildren.find((child) => child.type === "identifier")?.id === node.id),
99
93
  };
100
94
  registerLanguage(ZIG_DEF);
101
95
  //# sourceMappingURL=zig.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"zig.js","sourceRoot":"","sources":["../../../src/languages/definitions/zig.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAElD,MAAM,0BAA0B,GAAG,IAAI,GAAG,CAAC;IACzC,cAAc;IACd,oBAAoB;IACpB,kBAAkB;IAClB,mBAAmB;IACnB,oBAAoB;IACpB,uBAAuB;IACvB,kBAAkB;CACnB,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,OAAO,GAAuB;IACzC,EAAE,EAAE,KAAK;IACT,UAAU,EAAE,CAAC,MAAM,CAAC;IACpB,qBAAqB,EAAE,IAAI;IAC3B,SAAS,EAAE;QACT,MAAM,EAAE;YACN,EAAE,IAAI,EAAE,sBAAsB,EAAE,SAAS,EAAE,gCAAgC,EAAE,SAAS,EAAE,UAAU,EAAE;YACpG,EAAE,IAAI,EAAE,kBAAkB,EAAE,SAAS,EAAE,sBAAsB,EAAE,SAAS,EAAE,MAAM,EAAE;SACnF;QACD,WAAW,EAAE,CAAC,eAAe,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,mBAAmB,CAAC;QACzF,QAAQ,EAAE,CAAC,SAAS,CAAC;KACtB;IACD,KAAK,EAAE;QACL,OAAO,EAAE;;;KAGR;QACD,OAAO,EAAE;;;KAGR;QACD,MAAM,EAAE;;;;KAIP;QACD,cAAc,EAAE;;;;;;;;;;;;KAYf;KACF;IACD,SAAS,EAAE;QACT,UAAU,EAAE,CAAC,YAAY,CAAC;QAC1B,gBAAgB,EAAE,kBAAkB;KACrC;IACD,0BAA0B,EAAE,IAAI;IAChC,kBAAkB,EAAE,CAAC,IAAI,EAAE,EAAE;QAC3B,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAC3B,IAAI,CAAC,MAAM;YAAE,OAAO,UAAU,CAAC;QAC/B,IAAI,MAAM,CAAC,IAAI,KAAK,sBAAsB;YAAE,OAAO,UAAU,CAAC;QAC9D,IAAI,MAAM,CAAC,IAAI,KAAK,sBAAsB;YAAE,OAAO,UAAU,CAAC;QAE9D,MAAM,YAAY,GAAG,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,YAAY,CAAC,CAAC;QACvF,IAAI,YAAY,EAAE,EAAE,KAAK,IAAI,CAAC,EAAE;YAAE,OAAO,UAAU,CAAC;QAEpD,IAAI,cAAc,GAAG,CAAC,CAAC,CAAC;QACxB,KAAK,IAAI,KAAK,GAAG,CAAC,GAAI,KAAK,EAAE,EAAE,CAAC;YAC9B,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YAClC,IAAI,CAAC,KAAK;gBAAE,MAAM;YAClB,IAAI,KAAK,CAAC,IAAI,KAAK,GAAG,EAAE,CAAC;gBACvB,cAAc,GAAG,KAAK,CAAC,QAAQ,CAAC;gBAChC,MAAM;YACR,CAAC;QACH,CAAC;QACD,MAAM,WAAW,GAAG,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,UAAU,IAAI,cAAc,CAAC,CAAC;QAC7F,IAAI,WAAW,IAAI,0BAA0B,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC;YAAE,OAAO,MAAM,CAAC;QACnF,OAAO,UAAU,CAAC;IACpB,CAAC;IACD,oBAAoB,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,sBAAsB;IACpE,iBAAiB,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,OAAO;IAClD,iBAAiB,EAAE,CAAC,IAAI,EAAE,EAAE;QAC1B,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAC3B,IAAI,CAAC,MAAM;YAAE,OAAO,KAAK,CAAC;QAC1B,IAAI,MAAM,CAAC,IAAI,KAAK,sBAAsB,IAAI,MAAM,CAAC,iBAAiB,CAAC,MAAM,CAAC,EAAE,EAAE,KAAK,IAAI,CAAC,EAAE;YAAE,OAAO,IAAI,CAAC;QAC5G,IAAI,MAAM,CAAC,IAAI,KAAK,sBAAsB;YAAE,OAAO,KAAK,CAAC;QACzD,mFAAmF;QACnF,qFAAqF;QACrF,mFAAmF;QACnF,kEAAkE;QAClE,MAAM,YAAY,GAAG,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,YAAY,CAAC,CAAC;QACvF,OAAO,YAAY,EAAE,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;IACtC,CAAC;CACF,CAAC;AAEF,gBAAgB,CAAC,OAAO,CAAC,CAAC"}
1
+ {"version":3,"file":"zig.js","sourceRoot":"","sources":["../../../src/languages/definitions/zig.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,40 @@
1
+ /**
2
+ * Shared capture vocabulary for import-bearing queries only
3
+ * (`graph.imports` and `graph.importBindings`).
4
+ *
5
+ * `@stmt` plus `@from` are required. `@from` is the path-bearing node (module
6
+ * specifier, include path, `use` name). The optional names are produced only
7
+ * when the grammar has a node for them; a language that cannot express one
8
+ * must not invent a capture.
9
+ *
10
+ * This union is not a global query-capture schema. Two other `@mod` spellings
11
+ * are a different vocabulary and must not be renamed to `@from`:
12
+ * - JavaScript CommonJS export queries bind `@mod` to the identifier `module`
13
+ * in `module.exports`, gated by `(#eq? @mod "module")`. That capture is an
14
+ * identifier-equality check, not a path.
15
+ * - `src/duplicates/units.ts` uses `@mod` in duplicate-masking queries for
16
+ * Ruby `load` and Zig `@cImport`. Different subsystem, no capture-schema
17
+ * contract.
18
+ *
19
+ * Predicate-only names (`attr`, `tag`, `fn`, `req`, `method`) and JS-family
20
+ * CommonJS export captures (`pattern`, `cjs_*`, the CJS `@mod` above) stay
21
+ * outside this union. Do not "fix" those to match `GraphImportCapture`.
22
+ */
23
+ export declare const GRAPH_IMPORT_REQUIRED_CAPTURES: readonly ["stmt", "from"];
24
+ export declare const GRAPH_IMPORT_OPTIONAL_CAPTURES: readonly ["alias", "wild", "iname", "def", "ns", "type_kw"];
25
+ export declare const GRAPH_IMPORT_CAPTURES: readonly ["stmt", "from", "alias", "wild", "iname", "def", "ns", "type_kw"];
26
+ export type GraphImportRequiredCapture = (typeof GRAPH_IMPORT_REQUIRED_CAPTURES)[number];
27
+ export type GraphImportOptionalCapture = (typeof GRAPH_IMPORT_OPTIONAL_CAPTURES)[number];
28
+ export type GraphImportCapture = (typeof GRAPH_IMPORT_CAPTURES)[number];
29
+ /** `@name` token for a typed import capture. Unknown names fail at the call site. */
30
+ export declare function graphCapture(name: GraphImportCapture): `@${GraphImportCapture}`;
31
+ export type GraphImportCaptureMap<T> = Partial<Record<GraphImportCapture, T>>;
32
+ /** Typed lookup so an unknown capture name is a typecheck error, not a silent miss. */
33
+ export declare function importCapture<T>(caps: GraphImportCaptureMap<T> | Partial<Record<string, T>>, name: GraphImportCapture): T | undefined;
34
+ export declare function isGraphImportCapture(name: string): name is GraphImportCapture;
35
+ export declare function graphImportCaptures<T>(byName: Record<string, T | undefined>): GraphImportCaptureMap<T>;
36
+ /** Compile error if `"mod"` is ever added: that name is identifier-equality, not a path. */
37
+ type AssertNever<T extends never> = T;
38
+ export type GraphImportCaptureExcludesMod = AssertNever<Extract<GraphImportCapture, "mod">>;
39
+ export {};
40
+ //# sourceMappingURL=graph-captures.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"graph-captures.d.ts","sourceRoot":"","sources":["../../src/languages/graph-captures.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,eAAO,MAAM,8BAA8B,2BAA4B,CAAC;AACxE,eAAO,MAAM,8BAA8B,6DAA8D,CAAC;AAC1G,eAAO,MAAM,qBAAqB,6EAAkF,CAAC;AAErH,MAAM,MAAM,0BAA0B,GAAG,CAAC,OAAO,8BAA8B,CAAC,CAAC,MAAM,CAAC,CAAC;AACzF,MAAM,MAAM,0BAA0B,GAAG,CAAC,OAAO,8BAA8B,CAAC,CAAC,MAAM,CAAC,CAAC;AACzF,MAAM,MAAM,kBAAkB,GAAG,CAAC,OAAO,qBAAqB,CAAC,CAAC,MAAM,CAAC,CAAC;AAExE,qFAAqF;AACrF,wBAAgB,YAAY,CAAC,IAAI,EAAE,kBAAkB,GAAG,IAAI,kBAAkB,EAAE,CAE/E;AAED,MAAM,MAAM,qBAAqB,CAAC,CAAC,IAAI,OAAO,CAAC,MAAM,CAAC,kBAAkB,EAAE,CAAC,CAAC,CAAC,CAAC;AAE9E,uFAAuF;AACvF,wBAAgB,aAAa,CAAC,CAAC,EAC7B,IAAI,EAAE,qBAAqB,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAC3D,IAAI,EAAE,kBAAkB,GACvB,CAAC,GAAG,SAAS,CAEf;AAED,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,IAAI,kBAAkB,CAE7E;AAED,wBAAgB,mBAAmB,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,SAAS,CAAC,GAAG,qBAAqB,CAAC,CAAC,CAAC,CAOtG;AAED,4FAA4F;AAC5F,KAAK,WAAW,CAAC,CAAC,SAAS,KAAK,IAAI,CAAC,CAAC;AACtC,MAAM,MAAM,6BAA6B,GAAG,WAAW,CAAC,OAAO,CAAC,kBAAkB,EAAE,KAAK,CAAC,CAAC,CAAC"}
@@ -0,0 +1,46 @@
1
+ /**
2
+ * Shared capture vocabulary for import-bearing queries only
3
+ * (`graph.imports` and `graph.importBindings`).
4
+ *
5
+ * `@stmt` plus `@from` are required. `@from` is the path-bearing node (module
6
+ * specifier, include path, `use` name). The optional names are produced only
7
+ * when the grammar has a node for them; a language that cannot express one
8
+ * must not invent a capture.
9
+ *
10
+ * This union is not a global query-capture schema. Two other `@mod` spellings
11
+ * are a different vocabulary and must not be renamed to `@from`:
12
+ * - JavaScript CommonJS export queries bind `@mod` to the identifier `module`
13
+ * in `module.exports`, gated by `(#eq? @mod "module")`. That capture is an
14
+ * identifier-equality check, not a path.
15
+ * - `src/duplicates/units.ts` uses `@mod` in duplicate-masking queries for
16
+ * Ruby `load` and Zig `@cImport`. Different subsystem, no capture-schema
17
+ * contract.
18
+ *
19
+ * Predicate-only names (`attr`, `tag`, `fn`, `req`, `method`) and JS-family
20
+ * CommonJS export captures (`pattern`, `cjs_*`, the CJS `@mod` above) stay
21
+ * outside this union. Do not "fix" those to match `GraphImportCapture`.
22
+ */
23
+ export const GRAPH_IMPORT_REQUIRED_CAPTURES = ["stmt", "from"];
24
+ export const GRAPH_IMPORT_OPTIONAL_CAPTURES = ["alias", "wild", "iname", "def", "ns", "type_kw"];
25
+ export const GRAPH_IMPORT_CAPTURES = [...GRAPH_IMPORT_REQUIRED_CAPTURES, ...GRAPH_IMPORT_OPTIONAL_CAPTURES];
26
+ /** `@name` token for a typed import capture. Unknown names fail at the call site. */
27
+ export function graphCapture(name) {
28
+ return `@${name}`;
29
+ }
30
+ /** Typed lookup so an unknown capture name is a typecheck error, not a silent miss. */
31
+ export function importCapture(caps, name) {
32
+ return caps[name];
33
+ }
34
+ export function isGraphImportCapture(name) {
35
+ return GRAPH_IMPORT_CAPTURES.includes(name);
36
+ }
37
+ export function graphImportCaptures(byName) {
38
+ const out = {};
39
+ for (const name of GRAPH_IMPORT_CAPTURES) {
40
+ const capture = byName[name];
41
+ if (capture !== undefined)
42
+ out[name] = capture;
43
+ }
44
+ return out;
45
+ }
46
+ //# sourceMappingURL=graph-captures.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"graph-captures.js","sourceRoot":"","sources":["../../src/languages/graph-captures.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,MAAM,CAAC,MAAM,8BAA8B,GAAG,CAAC,MAAM,EAAE,MAAM,CAAU,CAAC;AACxE,MAAM,CAAC,MAAM,8BAA8B,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,CAAU,CAAC;AAC1G,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,GAAG,8BAA8B,EAAE,GAAG,8BAA8B,CAAU,CAAC;AAMrH,qFAAqF;AACrF,MAAM,UAAU,YAAY,CAAC,IAAwB;IACnD,OAAO,IAAI,IAAI,EAAE,CAAC;AACpB,CAAC;AAID,uFAAuF;AACvF,MAAM,UAAU,aAAa,CAC3B,IAA2D,EAC3D,IAAwB;IAExB,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC;AACpB,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,IAAY;IAC/C,OAAQ,qBAA2C,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;AACrE,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAI,MAAqC;IAC1E,MAAM,GAAG,GAA6B,EAAE,CAAC;IACzC,KAAK,MAAM,IAAI,IAAI,qBAAqB,EAAE,CAAC;QACzC,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;QAC7B,IAAI,OAAO,KAAK,SAAS;YAAE,GAAG,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC;IACjD,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC"}
@@ -70,4 +70,21 @@ export type ParsedJavaImportStatement = {
70
70
  };
71
71
  export declare function parseJavaImportStatement(stmtText: string): ParsedJavaImportStatement | null;
72
72
  export declare function parseCsharpUsingDirective(stmtText: string): ParsedCsharpUsingDirective | null;
73
+ /**
74
+ * Offset of the import keyword inside a scanned Rust statement, skipping leading whitespace,
75
+ * comments, and outer attributes. Returns -1 when no import keyword is present.
76
+ */
77
+ export declare function rustImportKeywordOffset(text: string): number;
78
+ /**
79
+ * Scans the whole source for `use`/`extern crate`/`mod` item statements. Comments, literals,
80
+ * macro token trees, and outer attributes are honoured, so a statement is never discovered
81
+ * inside trivia. Offsets are UTF-16 indices into `sourceText`.
82
+ *
83
+ * The scanner is shared by the indexer's Rust binding recovery and the graph path's Rust
84
+ * specifier recovery so the two consumers cannot drift apart.
85
+ */
86
+ export declare function scanRustImportStatements(sourceText: string): Array<{
87
+ text: string;
88
+ start: number;
89
+ }>;
73
90
  //# sourceMappingURL=import-statement-parsers.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"import-statement-parsers.d.ts","sourceRoot":"","sources":["../../src/languages/import-statement-parsers.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"import-statement-parsers.d.ts","sourceRoot":"","sources":["../../src/languages/import-statement-parsers.ts"],"names":[],"mappings":"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"}
@@ -812,4 +812,112 @@ export function parseCsharpUsingDirective(stmtText) {
812
812
  isStatic: false,
813
813
  };
814
814
  }
815
+ const RUST_IMPORT_KEYWORD_PATTERN = /^(?:pub(?:\s*\([^)]*\))?\s+)?(use|extern\s+crate|mod)\b/;
816
+ /**
817
+ * Offset of the import keyword inside a scanned Rust statement, skipping leading whitespace,
818
+ * comments, and outer attributes. Returns -1 when no import keyword is present.
819
+ */
820
+ export function rustImportKeywordOffset(text) {
821
+ let index = 0;
822
+ while (index < text.length) {
823
+ if (/\s/.test(text[index])) {
824
+ index += 1;
825
+ continue;
826
+ }
827
+ const skipped = skipRustCommentOrLiteral(text, index);
828
+ if (skipped) {
829
+ index = skipped.end;
830
+ continue;
831
+ }
832
+ const attrEnd = skipRustOuterAttribute(text, index);
833
+ if (attrEnd !== null) {
834
+ index = attrEnd;
835
+ continue;
836
+ }
837
+ const match = text.slice(index).match(RUST_IMPORT_KEYWORD_PATTERN);
838
+ if (match)
839
+ return index;
840
+ index += 1;
841
+ }
842
+ return -1;
843
+ }
844
+ /**
845
+ * Scans the whole source for `use`/`extern crate`/`mod` item statements. Comments, literals,
846
+ * macro token trees, and outer attributes are honoured, so a statement is never discovered
847
+ * inside trivia. Offsets are UTF-16 indices into `sourceText`.
848
+ *
849
+ * The scanner is shared by the indexer's Rust binding recovery and the graph path's Rust
850
+ * specifier recovery so the two consumers cannot drift apart.
851
+ */
852
+ export function scanRustImportStatements(sourceText) {
853
+ const results = [];
854
+ let index = 0;
855
+ while (index < sourceText.length) {
856
+ const skipped = skipRustCommentOrLiteral(sourceText, index) ?? skipRustMacroTokenTree(sourceText, index);
857
+ if (skipped) {
858
+ index = skipped.end;
859
+ continue;
860
+ }
861
+ if (/\s/.test(sourceText[index])) {
862
+ index += 1;
863
+ continue;
864
+ }
865
+ const statementStart = index;
866
+ let cursor = index;
867
+ for (;;) {
868
+ while (cursor < sourceText.length && /\s/.test(sourceText[cursor]))
869
+ cursor += 1;
870
+ const trivia = skipRustCommentOrLiteral(sourceText, cursor);
871
+ if (trivia) {
872
+ cursor = trivia.end;
873
+ continue;
874
+ }
875
+ const attrEnd = skipRustOuterAttribute(sourceText, cursor);
876
+ if (attrEnd === null)
877
+ break;
878
+ cursor = attrEnd;
879
+ }
880
+ const match = sourceText.slice(cursor).match(RUST_IMPORT_KEYWORD_PATTERN);
881
+ if (!match || !isRustItemStartBoundary(sourceText, cursor)) {
882
+ index = Math.max(index + 1, cursor);
883
+ continue;
884
+ }
885
+ let consumed = false;
886
+ let depth = 0;
887
+ for (let scan = statementStart; scan < sourceText.length;) {
888
+ const inner = skipRustCommentOrLiteral(sourceText, scan) ?? skipRustMacroTokenTree(sourceText, scan);
889
+ if (inner) {
890
+ scan = inner.end;
891
+ continue;
892
+ }
893
+ const character = sourceText[scan];
894
+ if (character === "{") {
895
+ const head = sourceText.slice(statementStart, scan);
896
+ if (/\bmod\b/.test(head) && !/\buse\b/.test(head)) {
897
+ index = scan + 1;
898
+ consumed = true;
899
+ break;
900
+ }
901
+ depth += 1;
902
+ scan += 1;
903
+ continue;
904
+ }
905
+ if (character === "}") {
906
+ depth = Math.max(0, depth - 1);
907
+ scan += 1;
908
+ continue;
909
+ }
910
+ if (character === ";" && !depth) {
911
+ results.push({ text: sourceText.slice(statementStart, scan + 1), start: statementStart });
912
+ index = scan + 1;
913
+ consumed = true;
914
+ break;
915
+ }
916
+ scan += 1;
917
+ }
918
+ if (!consumed)
919
+ index += 1;
920
+ }
921
+ return results;
922
+ }
815
923
  //# sourceMappingURL=import-statement-parsers.js.map