@lzehrung/codegraph 2.3.29 → 2.3.30

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 (303) hide show
  1. package/dist/bin/cli.js +5982 -4145
  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 +34 -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 +525 -25
  38. package/dist/graphs/symbol-graph-detailed/receiver-calls.js.map +1 -1
  39. package/dist/impact/call-compatibility/providers/index.d.ts +3 -1
  40. package/dist/impact/call-compatibility/providers/index.d.ts.map +1 -1
  41. package/dist/impact/call-compatibility/providers/index.js +11 -4
  42. package/dist/impact/call-compatibility/providers/index.js.map +1 -1
  43. package/dist/impact/call-compatibility.d.ts.map +1 -1
  44. package/dist/impact/call-compatibility.js +2 -7
  45. package/dist/impact/call-compatibility.js.map +1 -1
  46. package/dist/impact/member-resolution-coverage.js +2 -2
  47. package/dist/impact/member-resolution-coverage.js.map +1 -1
  48. package/dist/indexer/build-cache/manifest.d.ts +7 -0
  49. package/dist/indexer/build-cache/manifest.d.ts.map +1 -1
  50. package/dist/indexer/build-cache/manifest.js +32 -1
  51. package/dist/indexer/build-cache/manifest.js.map +1 -1
  52. package/dist/indexer/build-cache/options.d.ts +16 -2
  53. package/dist/indexer/build-cache/options.d.ts.map +1 -1
  54. package/dist/indexer/build-cache/options.js +17 -3
  55. package/dist/indexer/build-cache/options.js.map +1 -1
  56. package/dist/indexer/build-cache/project-snapshot.d.ts.map +1 -1
  57. package/dist/indexer/build-cache/project-snapshot.js +1 -0
  58. package/dist/indexer/build-cache/project-snapshot.js.map +1 -1
  59. package/dist/indexer/build-index.d.ts.map +1 -1
  60. package/dist/indexer/build-index.js +80 -2
  61. package/dist/indexer/build-index.js.map +1 -1
  62. package/dist/indexer/build-manifest.d.ts +1 -0
  63. package/dist/indexer/build-manifest.d.ts.map +1 -1
  64. package/dist/indexer/build-manifest.js +18 -0
  65. package/dist/indexer/build-manifest.js.map +1 -1
  66. package/dist/indexer/build-workers.js +1 -1
  67. package/dist/indexer/build-workers.js.map +1 -1
  68. package/dist/indexer/declaration-visibility.d.ts +43 -0
  69. package/dist/indexer/declaration-visibility.d.ts.map +1 -0
  70. package/dist/indexer/declaration-visibility.js +202 -0
  71. package/dist/indexer/declaration-visibility.js.map +1 -0
  72. package/dist/indexer/imports/binding-ranges.d.ts +1 -1
  73. package/dist/indexer/imports/binding-ranges.d.ts.map +1 -1
  74. package/dist/indexer/imports/binding-ranges.js +2 -123
  75. package/dist/indexer/imports/binding-ranges.js.map +1 -1
  76. package/dist/indexer/imports/js-text-imports.d.ts.map +1 -1
  77. package/dist/indexer/imports/js-text-imports.js +5 -2
  78. package/dist/indexer/imports/js-text-imports.js.map +1 -1
  79. package/dist/indexer/imports/language-specific.d.ts.map +1 -1
  80. package/dist/indexer/imports/language-specific.js +30 -216
  81. package/dist/indexer/imports/language-specific.js.map +1 -1
  82. package/dist/indexer/imports/native-captures.d.ts.map +1 -1
  83. package/dist/indexer/imports/native-captures.js +23 -32
  84. package/dist/indexer/imports/native-captures.js.map +1 -1
  85. package/dist/indexer/imports/text-import-extractors.d.ts +37 -0
  86. package/dist/indexer/imports/text-import-extractors.d.ts.map +1 -0
  87. package/dist/indexer/imports/text-import-extractors.js +358 -0
  88. package/dist/indexer/imports/text-import-extractors.js.map +1 -0
  89. package/dist/indexer/locals-and-exports.d.ts.map +1 -1
  90. package/dist/indexer/locals-and-exports.js +23 -27
  91. package/dist/indexer/locals-and-exports.js.map +1 -1
  92. package/dist/indexer/navigation-goto.d.ts +1 -7
  93. package/dist/indexer/navigation-goto.d.ts.map +1 -1
  94. package/dist/indexer/navigation-goto.js +180 -381
  95. package/dist/indexer/navigation-goto.js.map +1 -1
  96. package/dist/indexer/navigation-resolve.d.ts.map +1 -1
  97. package/dist/indexer/navigation-resolve.js +20 -1
  98. package/dist/indexer/navigation-resolve.js.map +1 -1
  99. package/dist/indexer/navigation.d.ts.map +1 -1
  100. package/dist/indexer/navigation.js +39 -7
  101. package/dist/indexer/navigation.js.map +1 -1
  102. package/dist/indexer/parse-context.js +2 -2
  103. package/dist/indexer/parse-context.js.map +1 -1
  104. package/dist/indexer/scope-nodes.d.ts +108 -0
  105. package/dist/indexer/scope-nodes.d.ts.map +1 -0
  106. package/dist/indexer/scope-nodes.js +238 -0
  107. package/dist/indexer/scope-nodes.js.map +1 -0
  108. package/dist/indexer/scope.d.ts.map +1 -1
  109. package/dist/indexer/scope.js +70 -130
  110. package/dist/indexer/scope.js.map +1 -1
  111. package/dist/indexer/types.d.ts +7 -0
  112. package/dist/indexer/types.d.ts.map +1 -1
  113. package/dist/languages/definitions/c-family.d.ts +18 -4
  114. package/dist/languages/definitions/c-family.d.ts.map +1 -1
  115. package/dist/languages/definitions/c-family.js +51 -13
  116. package/dist/languages/definitions/c-family.js.map +1 -1
  117. package/dist/languages/definitions/c.d.ts.map +1 -1
  118. package/dist/languages/definitions/c.js +7 -43
  119. package/dist/languages/definitions/c.js.map +1 -1
  120. package/dist/languages/definitions/cpp.d.ts.map +1 -1
  121. package/dist/languages/definitions/cpp.js +15 -61
  122. package/dist/languages/definitions/cpp.js.map +1 -1
  123. package/dist/languages/definitions/csharp.d.ts.map +1 -1
  124. package/dist/languages/definitions/csharp.js +46 -52
  125. package/dist/languages/definitions/csharp.js.map +1 -1
  126. package/dist/languages/definitions/css-like.d.ts.map +1 -1
  127. package/dist/languages/definitions/css-like.js +13 -10
  128. package/dist/languages/definitions/css-like.js.map +1 -1
  129. package/dist/languages/definitions/go.d.ts.map +1 -1
  130. package/dist/languages/definitions/go.js +29 -42
  131. package/dist/languages/definitions/go.js.map +1 -1
  132. package/dist/languages/definitions/html.d.ts.map +1 -1
  133. package/dist/languages/definitions/html.js +15 -14
  134. package/dist/languages/definitions/html.js.map +1 -1
  135. package/dist/languages/definitions/java.d.ts.map +1 -1
  136. package/dist/languages/definitions/java.js +42 -48
  137. package/dist/languages/definitions/java.js.map +1 -1
  138. package/dist/languages/definitions/javascript.d.ts.map +1 -1
  139. package/dist/languages/definitions/javascript.js +26 -54
  140. package/dist/languages/definitions/javascript.js.map +1 -1
  141. package/dist/languages/definitions/js-family.d.ts +15 -1
  142. package/dist/languages/definitions/js-family.d.ts.map +1 -1
  143. package/dist/languages/definitions/js-family.js +51 -0
  144. package/dist/languages/definitions/js-family.js.map +1 -1
  145. package/dist/languages/definitions/kotlin.d.ts.map +1 -1
  146. package/dist/languages/definitions/kotlin.js +26 -43
  147. package/dist/languages/definitions/kotlin.js.map +1 -1
  148. package/dist/languages/definitions/php.d.ts.map +1 -1
  149. package/dist/languages/definitions/php.js +50 -60
  150. package/dist/languages/definitions/php.js.map +1 -1
  151. package/dist/languages/definitions/python.d.ts.map +1 -1
  152. package/dist/languages/definitions/python.js +23 -14
  153. package/dist/languages/definitions/python.js.map +1 -1
  154. package/dist/languages/definitions/ruby.d.ts.map +1 -1
  155. package/dist/languages/definitions/ruby.js +14 -17
  156. package/dist/languages/definitions/ruby.js.map +1 -1
  157. package/dist/languages/definitions/rust.d.ts.map +1 -1
  158. package/dist/languages/definitions/rust.js +30 -52
  159. package/dist/languages/definitions/rust.js.map +1 -1
  160. package/dist/languages/definitions/scss.d.ts.map +1 -1
  161. package/dist/languages/definitions/scss.js +33 -49
  162. package/dist/languages/definitions/scss.js.map +1 -1
  163. package/dist/languages/definitions/sfc-graph.d.ts +4 -0
  164. package/dist/languages/definitions/sfc-graph.d.ts.map +1 -0
  165. package/dist/languages/definitions/sfc-graph.js +16 -0
  166. package/dist/languages/definitions/sfc-graph.js.map +1 -0
  167. package/dist/languages/definitions/shared.d.ts +33 -0
  168. package/dist/languages/definitions/shared.d.ts.map +1 -0
  169. package/dist/languages/definitions/shared.js +63 -0
  170. package/dist/languages/definitions/shared.js.map +1 -0
  171. package/dist/languages/definitions/sql.d.ts.map +1 -1
  172. package/dist/languages/definitions/sql.js +1 -0
  173. package/dist/languages/definitions/sql.js.map +1 -1
  174. package/dist/languages/definitions/svelte.d.ts.map +1 -1
  175. package/dist/languages/definitions/svelte.js +2 -10
  176. package/dist/languages/definitions/svelte.js.map +1 -1
  177. package/dist/languages/definitions/swift.d.ts.map +1 -1
  178. package/dist/languages/definitions/swift.js +37 -31
  179. package/dist/languages/definitions/swift.js.map +1 -1
  180. package/dist/languages/definitions/typescript.d.ts.map +1 -1
  181. package/dist/languages/definitions/typescript.js +56 -90
  182. package/dist/languages/definitions/typescript.js.map +1 -1
  183. package/dist/languages/definitions/vue.d.ts.map +1 -1
  184. package/dist/languages/definitions/vue.js +2 -10
  185. package/dist/languages/definitions/vue.js.map +1 -1
  186. package/dist/languages/definitions/zig.d.ts.map +1 -1
  187. package/dist/languages/definitions/zig.js +9 -15
  188. package/dist/languages/definitions/zig.js.map +1 -1
  189. package/dist/languages/graph-captures.d.ts +40 -0
  190. package/dist/languages/graph-captures.d.ts.map +1 -0
  191. package/dist/languages/graph-captures.js +46 -0
  192. package/dist/languages/graph-captures.js.map +1 -0
  193. package/dist/languages/import-statement-parsers.d.ts +17 -0
  194. package/dist/languages/import-statement-parsers.d.ts.map +1 -1
  195. package/dist/languages/import-statement-parsers.js +108 -0
  196. package/dist/languages/import-statement-parsers.js.map +1 -1
  197. package/dist/languages/js-family.d.ts +2 -0
  198. package/dist/languages/js-family.d.ts.map +1 -1
  199. package/dist/languages/js-family.js +15 -6
  200. package/dist/languages/js-family.js.map +1 -1
  201. package/dist/languages/types.d.ts +4 -0
  202. package/dist/languages/types.d.ts.map +1 -1
  203. package/dist/languages/types.js +1 -1
  204. package/dist/languages/types.js.map +1 -1
  205. package/dist/languages.js +1 -1
  206. package/dist/languages.js.map +1 -1
  207. package/dist/native/contracts.d.ts +1 -1
  208. package/dist/native/contracts.d.ts.map +1 -1
  209. package/dist/native/js-bridge.d.ts +10 -0
  210. package/dist/native/js-bridge.d.ts.map +1 -1
  211. package/dist/native/js-bridge.js +10 -0
  212. package/dist/native/js-bridge.js.map +1 -1
  213. package/dist/native/native-backend-report.d.ts.map +1 -1
  214. package/dist/native/native-backend-report.js +2 -0
  215. package/dist/native/native-backend-report.js.map +1 -1
  216. package/dist/util/comments.d.ts +7 -7
  217. package/dist/util/comments.d.ts.map +1 -1
  218. package/dist/util/comments.js +15 -214
  219. package/dist/util/comments.js.map +1 -1
  220. package/dist/util/lines.d.ts.map +1 -1
  221. package/dist/util/lines.js +4 -1
  222. package/dist/util/lines.js.map +1 -1
  223. package/dist/util/member-access.d.ts +2 -0
  224. package/dist/util/member-access.d.ts.map +1 -1
  225. package/dist/util/member-access.js +18 -5
  226. package/dist/util/member-access.js.map +1 -1
  227. package/dist/util/paths.d.ts +4 -0
  228. package/dist/util/paths.d.ts.map +1 -1
  229. package/dist/util/paths.js +26 -0
  230. package/dist/util/paths.js.map +1 -1
  231. package/dist/util/project-files.js +1 -1
  232. package/dist/util/project-files.js.map +1 -1
  233. package/dist/util/resolution/cargo-targets.d.ts.map +1 -1
  234. package/dist/util/resolution/cargo-targets.js +17 -14
  235. package/dist/util/resolution/cargo-targets.js.map +1 -1
  236. package/dist/util/resolution/cpp.d.ts +6 -0
  237. package/dist/util/resolution/cpp.d.ts.map +1 -0
  238. package/dist/util/resolution/cpp.js +69 -0
  239. package/dist/util/resolution/cpp.js.map +1 -0
  240. package/dist/util/resolution/csharp.d.ts +4 -3
  241. package/dist/util/resolution/csharp.d.ts.map +1 -1
  242. package/dist/util/resolution/csharp.js +27 -113
  243. package/dist/util/resolution/csharp.js.map +1 -1
  244. package/dist/util/resolution/files.d.ts +6 -0
  245. package/dist/util/resolution/files.d.ts.map +1 -1
  246. package/dist/util/resolution/files.js +108 -4
  247. package/dist/util/resolution/files.js.map +1 -1
  248. package/dist/util/resolution/go.d.ts +1 -0
  249. package/dist/util/resolution/go.d.ts.map +1 -1
  250. package/dist/util/resolution/go.js +4 -3
  251. package/dist/util/resolution/go.js.map +1 -1
  252. package/dist/util/resolution/jvm.d.ts +3 -3
  253. package/dist/util/resolution/jvm.d.ts.map +1 -1
  254. package/dist/util/resolution/jvm.js +90 -54
  255. package/dist/util/resolution/jvm.js.map +1 -1
  256. package/dist/util/resolution/node.js +2 -2
  257. package/dist/util/resolution/node.js.map +1 -1
  258. package/dist/util/resolution/php-composer.d.ts.map +1 -1
  259. package/dist/util/resolution/php-composer.js +8 -7
  260. package/dist/util/resolution/php-composer.js.map +1 -1
  261. package/dist/util/resolution/php.d.ts.map +1 -1
  262. package/dist/util/resolution/php.js +30 -43
  263. package/dist/util/resolution/php.js.map +1 -1
  264. package/dist/util/resolution/project-symbols.d.ts +5 -7
  265. package/dist/util/resolution/project-symbols.d.ts.map +1 -1
  266. package/dist/util/resolution/project-symbols.js +23 -9
  267. package/dist/util/resolution/project-symbols.js.map +1 -1
  268. package/dist/util/resolution/python.d.ts.map +1 -1
  269. package/dist/util/resolution/python.js +107 -62
  270. package/dist/util/resolution/python.js.map +1 -1
  271. package/dist/util/resolution/rust.d.ts.map +1 -1
  272. package/dist/util/resolution/rust.js +45 -34
  273. package/dist/util/resolution/rust.js.map +1 -1
  274. package/dist/util/resolution/tsconfig.d.ts.map +1 -1
  275. package/dist/util/resolution/tsconfig.js +3 -9
  276. package/dist/util/resolution/tsconfig.js.map +1 -1
  277. package/dist/util/resolution-candidates.d.ts +5 -1
  278. package/dist/util/resolution-candidates.d.ts.map +1 -1
  279. package/dist/util/resolution-candidates.js +18 -0
  280. package/dist/util/resolution-candidates.js.map +1 -1
  281. package/dist/util/resolution.d.ts.map +1 -1
  282. package/dist/util/resolution.js +93 -49
  283. package/dist/util/resolution.js.map +1 -1
  284. package/dist/util/specifiers.d.ts +4 -10
  285. package/dist/util/specifiers.d.ts.map +1 -1
  286. package/dist/util/specifiers.js +213 -164
  287. package/dist/util/specifiers.js.map +1 -1
  288. package/dist/util/trivia-tables.d.ts +69 -0
  289. package/dist/util/trivia-tables.d.ts.map +1 -0
  290. package/dist/util/trivia-tables.js +186 -0
  291. package/dist/util/trivia-tables.js.map +1 -0
  292. package/dist/util/trivia.d.ts +24 -0
  293. package/dist/util/trivia.d.ts.map +1 -0
  294. package/dist/util/trivia.js +621 -0
  295. package/dist/util/trivia.js.map +1 -0
  296. package/dist/util.d.ts +1 -1
  297. package/dist/util.d.ts.map +1 -1
  298. package/dist/util.js +1 -1
  299. package/dist/util.js.map +1 -1
  300. package/dist/worker/native-extract-worker.d.ts.map +1 -1
  301. package/dist/worker/native-extract-worker.js +4 -4
  302. package/dist/worker/native-extract-worker.js.map +1 -1
  303. package/package.json +3 -3
@@ -1 +1 @@
1
- {"version":3,"file":"resolution.js","sourceRoot":"","sources":["../../src/util/resolution.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"resolution.js","sourceRoot":"","sources":["../../src/util/resolution.ts"],"names":[],"mappings":"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"}
@@ -20,17 +20,11 @@ export type ModuleSpecifier = {
20
20
  */
21
21
  export declare function isJsTsTypeOnlySpecifierStatement(statement: string): boolean;
22
22
  export declare function extractJsTsSpecifiers(source: string): ModuleSpecifier[];
23
- export declare function extractJsTsDynamicSpecifiers(source: string, fromFile: string, projectRoot: string): ModuleSpecifier[];
24
23
  /**
25
- * Extracts best-effort Python dynamic imports whose first argument is a static module
26
- * string. Alias recognition is intentionally limited to direct `importlib` imports;
27
- * assignment flow and computed module names remain outside graph construction.
28
- */
29
- export declare function extractPythonDynamicSpecifiers(source: string): ModuleSpecifier[];
30
- /**
31
- * Shared adapter boundary for opt-in dynamic import heuristics. A language adapter
32
- * extracts only non-executed module candidates and leaves target resolution, provenance
33
- * merging, and graph construction to the common pipeline.
24
+ * Shared adapter boundary for opt-in dynamic import heuristics. A language entry supplies only
25
+ * its call shapes and trivia mask; the shared fold turns constant arguments into candidates,
26
+ * while target resolution, provenance merging, and graph construction stay in the common
27
+ * pipeline.
34
28
  */
35
29
  export declare function extractDynamicImportSpecifiers(languageId: string, source: string, fromFile: string, projectRoot: string): ModuleSpecifier[];
36
30
  export declare function extractPythonSpecifiers(source: string): string[];
@@ -1 +1 @@
1
- {"version":3,"file":"specifiers.d.ts","sourceRoot":"","sources":["../../src/util/specifiers.ts"],"names":[],"mappings":"AAKA,MAAM,MAAM,6BAA6B,GAAG,UAAU,GAAG,QAAQ,GAAG,YAAY,CAAC;AAEjF,MAAM,MAAM,8BAA8B,GAAG,QAAQ,GAAG,SAAS,CAAC;AAElE,MAAM,MAAM,eAAe,GAAG;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,aAAa,CAAC,EAAE,OAAO,GAAG,UAAU,GAAG,OAAO,CAAC;IAC/C,cAAc,CAAC,EAAE,6BAA6B,CAAC;IAC/C,eAAe,CAAC,EAAE,8BAA8B,CAAC;IACjD,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,EAAE,WAAW,GAAG,SAAS,CAAC;IACnC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,mBAAmB,CAAC,EAAE,MAAM,CAAC;CAC9B,CAAC;AAcF;;;;GAIG;AACH,wBAAgB,gCAAgC,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAW3E;AAcD,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,MAAM,GAAG,eAAe,EAAE,CA0CvE;AAmID,wBAAgB,4BAA4B,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,eAAe,EAAE,CAyCrH;AAiOD;;;;GAIG;AACH,wBAAgB,8BAA8B,CAAC,MAAM,EAAE,MAAM,GAAG,eAAe,EAAE,CAyBhF;AAUD;;;;GAIG;AACH,wBAAgB,8BAA8B,CAC5C,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,MAAM,GAClB,eAAe,EAAE,CAInB;AAED,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAehE"}
1
+ {"version":3,"file":"specifiers.d.ts","sourceRoot":"","sources":["../../src/util/specifiers.ts"],"names":[],"mappings":"AAMA,MAAM,MAAM,6BAA6B,GAAG,UAAU,GAAG,QAAQ,GAAG,YAAY,CAAC;AAEjF,MAAM,MAAM,8BAA8B,GAAG,QAAQ,GAAG,SAAS,CAAC;AAElE,MAAM,MAAM,eAAe,GAAG;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,aAAa,CAAC,EAAE,OAAO,GAAG,UAAU,GAAG,OAAO,CAAC;IAC/C,cAAc,CAAC,EAAE,6BAA6B,CAAC;IAC/C,eAAe,CAAC,EAAE,8BAA8B,CAAC;IACjD,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,EAAE,WAAW,GAAG,SAAS,CAAC;IACnC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,mBAAmB,CAAC,EAAE,MAAM,CAAC;CAC9B,CAAC;AAcF;;;;GAIG;AACH,wBAAgB,gCAAgC,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAW3E;AAcD,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,MAAM,GAAG,eAAe,EAAE,CA0CvE;AAwhBD;;;;;GAKG;AACH,wBAAgB,8BAA8B,CAC5C,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,MAAM,GAClB,eAAe,EAAE,CAsBnB;AAED,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAehE"}
@@ -1,6 +1,7 @@
1
1
  import path from "node:path";
2
2
  import { buildJsLikeLiteralMask, stripJsLikeComments, stripPythonCommentsAndStrings } from "./comments.js";
3
3
  import { ECMASCRIPT_IDENTIFIER_SOURCE, PYTHON_IDENTIFIER_SOURCE } from "./identifiers.js";
4
+ import { buildTriviaMask } from "./trivia.js";
4
5
  import { normalizePath } from "./paths.js";
5
6
  const JS_TS_NAMED_TYPE_SPECIFIER_PATTERN = new RegExp(String.raw `^type\s+(${ECMASCRIPT_IDENTIFIER_SOURCE})(?:\s+as\s+(${ECMASCRIPT_IDENTIFIER_SOURCE}))?$`, "u");
6
7
  function splitJsTsNamedSpecifiers(namedBlock) {
@@ -89,7 +90,25 @@ export function extractJsTsSpecifiers(source) {
89
90
  }
90
91
  return out;
91
92
  }
92
- function parseStringLiteralToken(token) {
93
+ const JS_PATH_FOLD_PROFILE = {
94
+ bases: {
95
+ __dirname: "fileDir",
96
+ __filename: "filePath",
97
+ "import.meta.url": "filePath",
98
+ "process.cwd()": "project",
99
+ },
100
+ joinHelpers: ["path.join", "path.resolve"],
101
+ };
102
+ const RUBY_PATH_FOLD_PROFILE = {
103
+ bases: { __dir__: "fileDir" },
104
+ joinHelpers: ["File.join"],
105
+ };
106
+ const PHP_PATH_FOLD_PROFILE = {
107
+ bases: { __DIR__: "fileDir", "dirname(__FILE__)": "fileDir" },
108
+ joinHelpers: [],
109
+ concat: ".",
110
+ };
111
+ function parseQuotedStringToken(token) {
93
112
  const trimmed = token.trim();
94
113
  if (trimmed.length < 2)
95
114
  return null;
@@ -102,7 +121,7 @@ function parseStringLiteralToken(token) {
102
121
  return null;
103
122
  return trimmed.slice(1, -1);
104
123
  }
105
- function splitTopLevelArgs(text) {
124
+ function splitTopLevelDelimited(text, delimiter) {
106
125
  const args = [];
107
126
  let current = "";
108
127
  let depth = 0;
@@ -142,7 +161,7 @@ function splitTopLevelArgs(text) {
142
161
  current += ch;
143
162
  continue;
144
163
  }
145
- if (ch === "," && depth === 0) {
164
+ if (ch === delimiter && depth === 0) {
146
165
  const trimmed = current.trim();
147
166
  if (trimmed)
148
167
  args.push(trimmed);
@@ -158,34 +177,39 @@ function splitTopLevelArgs(text) {
158
177
  args.push(tail);
159
178
  return args;
160
179
  }
161
- function parseDynamicToken(token) {
180
+ function parsePathToken(token, profile) {
162
181
  const compact = token.replace(/\s+/g, "");
163
- if (compact === "__dirname") {
164
- return { kind: "base", base: "fileDir" };
165
- }
166
- if (compact === "__filename" || compact === "import.meta.url") {
167
- return { kind: "base", base: "filePath" };
168
- }
169
- if (compact === "process.cwd()") {
170
- return { kind: "base", base: "project" };
171
- }
172
- const literal = parseStringLiteralToken(token);
182
+ const base = profile.bases[compact];
183
+ if (base)
184
+ return { kind: "base", base };
185
+ const literal = parseQuotedStringToken(token);
173
186
  if (literal !== null) {
174
187
  return { kind: "literal", value: literal };
175
188
  }
176
189
  return null;
177
190
  }
178
- function parsePathCallArg(argText) {
179
- const match = argText.match(/^\s*path\.(?:join|resolve)\s*\(([\s\S]*)\)\s*$/);
180
- if (!match)
181
- return null;
182
- const args = splitTopLevelArgs(match[1] ?? "");
183
- if (!args?.length)
191
+ const JOIN_HELPER_PATTERNS = new WeakMap();
192
+ function joinHelperPatternFor(profile) {
193
+ let pattern = JOIN_HELPER_PATTERNS.get(profile);
194
+ if (pattern === undefined) {
195
+ pattern = profile.joinHelpers.length
196
+ ? new RegExp(`^\\s*(?:${profile.joinHelpers
197
+ .map((name) => name.replace(/[.*+?^${}()|[\]\\]/g, "\\$&"))
198
+ .join("|")})\\s*\\(([\\s\\S]*)\\)\\s*$`)
199
+ : null;
200
+ JOIN_HELPER_PATTERNS.set(profile, pattern);
201
+ }
202
+ return pattern;
203
+ }
204
+ /** Folds an already-split argument list into one rooted base plus literal segments; mixed
205
+ * bases, missing bases, and unparseable tokens fold to null. */
206
+ function foldPathTokens(args, profile) {
207
+ if (!args.length)
184
208
  return null;
185
209
  let base = null;
186
210
  const segments = [];
187
211
  for (const arg of args) {
188
- const token = parseDynamicToken(arg);
212
+ const token = parsePathToken(arg, profile);
189
213
  if (!token)
190
214
  return null;
191
215
  if (token.kind === "base") {
@@ -201,17 +225,36 @@ function parsePathCallArg(argText) {
201
225
  return null;
202
226
  return { base, segments };
203
227
  }
204
- function parseNewUrlArg(argText) {
228
+ /**
229
+ * Shared constant-path fold for dynamic-import heuristics: either a join-helper call such as
230
+ * `path.join(__dirname, "src")` or, where the language declares a concatenation operator, a
231
+ * constant chain such as `__DIR__ . "/config.php"`. Anything needing runtime evaluation
232
+ * (variables, template placeholders, mixed bases) folds to null.
233
+ */
234
+ function foldPathArgument(argText, profile) {
235
+ const joinPattern = joinHelperPatternFor(profile);
236
+ const joinMatch = joinPattern ? joinPattern.exec(argText) : null;
237
+ if (joinMatch) {
238
+ const args = splitTopLevelDelimited(joinMatch[1] ?? "", ",");
239
+ return args ? foldPathTokens(args, profile) : null;
240
+ }
241
+ if (profile.concat !== undefined) {
242
+ const parts = splitTopLevelDelimited(argText, profile.concat);
243
+ return parts ? foldPathTokens(parts, profile) : null;
244
+ }
245
+ return null;
246
+ }
247
+ function foldNewUrlArgument(argText, profile) {
205
248
  const match = argText.match(/^\s*new\s+URL\s*\(([\s\S]*)\)\s*$/);
206
249
  if (!match)
207
250
  return null;
208
- const args = splitTopLevelArgs(match[1] ?? "");
251
+ const args = splitTopLevelDelimited(match[1] ?? "", ",");
209
252
  if (!args || args.length < 2)
210
253
  return null;
211
- const firstLiteral = parseStringLiteralToken(args[0] ?? "");
254
+ const firstLiteral = parseQuotedStringToken(args[0] ?? "");
212
255
  if (!firstLiteral)
213
256
  return null;
214
- const baseToken = parseDynamicToken(args[1] ?? "");
257
+ const baseToken = parsePathToken(args[1] ?? "", profile);
215
258
  if (!baseToken || baseToken.kind !== "base")
216
259
  return null;
217
260
  if (baseToken.base !== "filePath")
@@ -225,111 +268,90 @@ function buildRelativeSpecifier(fromFile, targetPath) {
225
268
  return null;
226
269
  return rel.startsWith(".") ? rel : `./${rel}`;
227
270
  }
228
- export function extractJsTsDynamicSpecifiers(source, fromFile, projectRoot) {
229
- const out = [];
230
- try {
231
- const src = stripJsLikeComments(source);
232
- const literalMask = buildJsLikeLiteralMask(src);
233
- const seen = new Set();
234
- const addSpec = (spec) => {
235
- if (!spec || seen.has(spec))
236
- return;
237
- seen.add(spec);
238
- out.push({ spec, resolved: "heuristic", confidence: 0.7 });
239
- };
240
- const pathCallRe = /(?<!["'`])\b(?:require|import)\s*\(\s*(path\.(?:join|resolve)\s*\((?:[^()]|\([^()]*\))*\))\s*\)/g;
241
- for (const match of src.matchAll(pathCallRe)) {
242
- if (!matchStartsInCode(literalMask, match))
243
- continue;
244
- const argText = match[1] ?? "";
245
- const parsed = parsePathCallArg(argText);
246
- if (!parsed)
247
- continue;
248
- let basePath = projectRoot;
249
- if (parsed.base === "fileDir") {
250
- basePath = path.dirname(fromFile);
251
- }
252
- else if (parsed.base === "filePath") {
253
- basePath = fromFile;
254
- }
255
- const targetPath = path.resolve(basePath, ...parsed.segments);
256
- addSpec(buildRelativeSpecifier(fromFile, targetPath));
257
- }
258
- const urlCallRe = /(?<!["'`])\b(?:require|import)\s*\(\s*(new\s+URL\s*\([^)]*\))\s*\)/g;
259
- for (const match of src.matchAll(urlCallRe)) {
260
- if (!matchStartsInCode(literalMask, match))
261
- continue;
262
- const argText = match[1] ?? "";
263
- const parsed = parseNewUrlArg(argText);
264
- if (!parsed)
265
- continue;
266
- const baseDir = path.dirname(fromFile);
267
- const targetPath = path.resolve(baseDir, ...parsed.segments);
268
- addSpec(buildRelativeSpecifier(fromFile, targetPath));
269
- }
271
+ /** Resolves a folded path against the root its base names: fileDir names the file's
272
+ * directory, filePath the file itself, project the project root. */
273
+ function resolveFoldedPathAgainstBase(folded, fromFile, projectRoot) {
274
+ let basePath = projectRoot;
275
+ if (folded.base === "fileDir") {
276
+ basePath = path.dirname(fromFile);
270
277
  }
271
- catch {
272
- /* parse fallback: ignore */
278
+ else if (folded.base === "filePath") {
279
+ basePath = fromFile;
273
280
  }
274
- return out;
281
+ return buildRelativeSpecifier(fromFile, path.resolve(basePath, ...folded.segments));
282
+ }
283
+ /** Resolves a folded path against the containing file's directory regardless of the named
284
+ * base: `new URL("./x", import.meta.url)` lives next to the file. */
285
+ function resolveFoldedPathAgainstFileDir(folded, fromFile) {
286
+ return buildRelativeSpecifier(fromFile, path.resolve(path.dirname(fromFile), ...folded.segments));
287
+ }
288
+ /** Resolves a folded path by concatenation onto the containing file's directory, the way
289
+ * `File.join` and PHP's `.` operator build paths: a leading separator in a segment stays part
290
+ * of the file-relative path instead of resetting to a filesystem root. */
291
+ function resolveFoldedPathByConcatenation(folded, fromFile) {
292
+ return buildRelativeSpecifier(fromFile, path.join(path.dirname(fromFile), ...folded.segments));
293
+ }
294
+ function foldCapturedPath(profile, resolve) {
295
+ return ({ match, fromFile, projectRoot }) => {
296
+ const folded = foldPathArgument(match[1] ?? "", profile);
297
+ return folded ? resolve(folded, fromFile, projectRoot) : null;
298
+ };
275
299
  }
300
+ const JS_DYNAMIC_PATH_CALL_PATTERN = /(?<!["'`])\b(?:require|import)\s*\(\s*(path\.(?:join|resolve)\s*\((?:[^()]|\([^()]*\))*\))\s*\)/g;
301
+ const JS_DYNAMIC_URL_CALL_PATTERN = /(?<!["'`])\b(?:require|import)\s*\(\s*(new\s+URL\s*\([^)]*\))\s*\)/g;
302
+ const RUBY_REQUIRE_FILE_JOIN_PATTERN = /(?<![\p{XID_Continue}])require\s*\(?\s*(File\.join\s*\((?:[^()]|\([^()]*\))*\))/gu;
303
+ const PHP_COMPUTED_INCLUDE_PATTERN = /(?<![\p{XID_Continue}$])(?:include_once|include|require_once|require)\b\s*\(?\s*([^;\r\n]*?)\s*\)?\s*;/gu;
304
+ const JS_TS_DYNAMIC_IMPORT_ENTRY = {
305
+ languageId: "js",
306
+ // Comments are blanked before matching so a `require(...)` inside a comment cannot match;
307
+ // string literals stay intact because the fold reads their contents.
308
+ text: stripJsLikeComments,
309
+ guard: buildJsLikeLiteralMask,
310
+ shapes: [
311
+ {
312
+ pattern: JS_DYNAMIC_PATH_CALL_PATTERN,
313
+ fold: foldCapturedPath(JS_PATH_FOLD_PROFILE, resolveFoldedPathAgainstBase),
314
+ },
315
+ {
316
+ pattern: JS_DYNAMIC_URL_CALL_PATTERN,
317
+ fold: ({ match, fromFile }) => {
318
+ const folded = foldNewUrlArgument(match[1] ?? "", JS_PATH_FOLD_PROFILE);
319
+ return folded ? resolveFoldedPathAgainstFileDir(folded, fromFile) : null;
320
+ },
321
+ },
322
+ ],
323
+ };
324
+ const RUBY_DYNAMIC_IMPORT_ENTRY = {
325
+ languageId: "ruby",
326
+ text: (source) => source,
327
+ guard: (text) => buildTriviaMask(text, "ruby"),
328
+ shapes: [
329
+ {
330
+ // Only the computed `require File.join(__dir__, ...)` form is folded here; bare-string
331
+ // requires flow through the static pipeline and `$LOAD_PATH` lookups stay external.
332
+ pattern: RUBY_REQUIRE_FILE_JOIN_PATTERN,
333
+ fold: foldCapturedPath(RUBY_PATH_FOLD_PROFILE, resolveFoldedPathByConcatenation),
334
+ },
335
+ ],
336
+ };
337
+ const PHP_DYNAMIC_IMPORT_ENTRY = {
338
+ languageId: "php",
339
+ text: (source) => source,
340
+ guard: (text) => buildTriviaMask(text, "php"),
341
+ shapes: [
342
+ {
343
+ // Computed `include`/`require` whose path is a constant chain rooted at `__DIR__` (or
344
+ // the legacy `dirname(__FILE__)`); plain string operands stay with the static pipeline
345
+ // and the include-path search stays external.
346
+ pattern: PHP_COMPUTED_INCLUDE_PATTERN,
347
+ fold: foldCapturedPath(PHP_PATH_FOLD_PROFILE, resolveFoldedPathByConcatenation),
348
+ },
349
+ ],
350
+ };
276
351
  // Python module/package names are dotted sequences of PEP 3131 Unicode identifiers; a
277
352
  // per-segment character class (rather than Unicode letters/digits spanning the dots) keeps
278
353
  // a digit from matching directly after a `.` separator.
279
354
  const PYTHON_DOTTED_NAME_SOURCE = String.raw `${PYTHON_IDENTIFIER_SOURCE}(?:\.${PYTHON_IDENTIFIER_SOURCE})*`;
280
- function maskPythonString(source, mask, start) {
281
- const quote = source[start];
282
- const triple = source[start + 1] === quote && source[start + 2] === quote;
283
- const delimiterLength = triple ? 3 : 1;
284
- for (let offset = 0; offset < delimiterLength; offset += 1) {
285
- mask[start + offset] = 1;
286
- }
287
- let index = start + delimiterLength;
288
- while (index < source.length) {
289
- const ch = source[index];
290
- if (!triple && (ch === "\n" || ch === "\r"))
291
- return index;
292
- mask[index] = 1;
293
- if (ch === "\\") {
294
- const nextIndex = index + 1;
295
- if (nextIndex < source.length)
296
- mask[nextIndex] = 1;
297
- index += 2;
298
- continue;
299
- }
300
- if (ch === quote) {
301
- if (!triple)
302
- return index + 1;
303
- if (source[index + 1] === quote && source[index + 2] === quote) {
304
- mask[index + 1] = 1;
305
- mask[index + 2] = 1;
306
- return index + delimiterLength;
307
- }
308
- }
309
- index += 1;
310
- }
311
- return source.length;
312
- }
313
- function buildPythonNonCodeMask(source) {
314
- if (!source.includes("#") && !source.includes("'") && !source.includes('"'))
315
- return undefined;
316
- const mask = new Uint8Array(source.length);
317
- for (let index = 0; index < source.length; index += 1) {
318
- const ch = source[index];
319
- if (ch === "#") {
320
- while (index < source.length && source[index] !== "\n" && source[index] !== "\r") {
321
- mask[index] = 1;
322
- index += 1;
323
- }
324
- index -= 1;
325
- continue;
326
- }
327
- if (ch === "'" || ch === '"') {
328
- index = maskPythonString(source, mask, index) - 1;
329
- }
330
- }
331
- return mask;
332
- }
333
355
  const PYTHON_IMPORTLIB_ALIAS_PATTERN = new RegExp(String.raw `^importlib(?:\s+as\s+(${PYTHON_IDENTIFIER_SOURCE}))?$`, "u");
334
356
  const PYTHON_IMPORT_MODULE_ALIAS_PATTERN = new RegExp(String.raw `^import_module(?:\s+as\s+(${PYTHON_IDENTIFIER_SOURCE}))?$`, "u");
335
357
  const PYTHON_DYNAMIC_CALL_PREFIX_PATTERN = new RegExp(String.raw `(?<![._\p{XID_Continue}])(${PYTHON_IDENTIFIER_SOURCE})(?:\s*\.\s*(${PYTHON_IDENTIFIER_SOURCE}))?\s*\(\s*(?:name\s*=\s*)?`, "gmu");
@@ -496,35 +518,78 @@ function collectPythonDynamicImportAliases(source) {
496
518
  }
497
519
  return { importlibAliases, importModuleAliases };
498
520
  }
521
+ /** Folds the argument of a Python dynamic import call into a static module string. Alias
522
+ * recognition is intentionally limited to direct `importlib` imports; assignment flow and
523
+ * computed module names remain outside graph construction. */
524
+ function foldPythonDynamicModuleArgument(source, match, preparation) {
525
+ const importlibAliases = preparation.pythonImportlibAliases;
526
+ const importModuleAliases = preparation.pythonImportModuleAliases;
527
+ if (!importlibAliases || !importModuleAliases)
528
+ return null;
529
+ const receiver = match[1] ?? "";
530
+ const member = match[2];
531
+ const isBuiltinImport = !member && receiver === "__import__";
532
+ const isImportlibCall = member === "import_module" && importlibAliases.has(receiver);
533
+ const isImportedFunctionCall = !member && importModuleAliases.has(receiver);
534
+ if (!isBuiltinImport && !isImportlibCall && !isImportedFunctionCall)
535
+ return null;
536
+ const argumentStart = (match.index ?? 0) + (match[0]?.length ?? 0);
537
+ const spec = parsePythonStaticStringExpression(source, argumentStart);
538
+ if (!spec || !PYTHON_DYNAMIC_MODULE_PATTERN.test(spec))
539
+ return null;
540
+ // `__import__` cannot take a package argument, so a leading dot names nothing resolvable.
541
+ if (isBuiltinImport && spec.startsWith("."))
542
+ return null;
543
+ return spec;
544
+ }
545
+ const PYTHON_DYNAMIC_IMPORT_ENTRY = {
546
+ languageId: "python",
547
+ text: (source) => source,
548
+ guard: (text) => buildTriviaMask(text, "python"),
549
+ prepare: (source) => {
550
+ const { importlibAliases, importModuleAliases } = collectPythonDynamicImportAliases(source);
551
+ return { pythonImportlibAliases: importlibAliases, pythonImportModuleAliases: importModuleAliases };
552
+ },
553
+ shapes: [
554
+ {
555
+ pattern: PYTHON_DYNAMIC_CALL_PREFIX_PATTERN,
556
+ fold: ({ text, match, preparation }) => foldPythonDynamicModuleArgument(text, match, preparation),
557
+ },
558
+ ],
559
+ };
560
+ const DYNAMIC_IMPORT_SPECIFIER_EXTRACTORS = {
561
+ js: JS_TS_DYNAMIC_IMPORT_ENTRY,
562
+ ts: JS_TS_DYNAMIC_IMPORT_ENTRY,
563
+ python: PYTHON_DYNAMIC_IMPORT_ENTRY,
564
+ ruby: RUBY_DYNAMIC_IMPORT_ENTRY,
565
+ php: PHP_DYNAMIC_IMPORT_ENTRY,
566
+ };
499
567
  /**
500
- * Extracts best-effort Python dynamic imports whose first argument is a static module
501
- * string. Alias recognition is intentionally limited to direct `importlib` imports;
502
- * assignment flow and computed module names remain outside graph construction.
568
+ * Shared adapter boundary for opt-in dynamic import heuristics. A language entry supplies only
569
+ * its call shapes and trivia mask; the shared fold turns constant arguments into candidates,
570
+ * while target resolution, provenance merging, and graph construction stay in the common
571
+ * pipeline.
503
572
  */
504
- export function extractPythonDynamicSpecifiers(source) {
573
+ export function extractDynamicImportSpecifiers(languageId, source, fromFile, projectRoot) {
574
+ const entry = DYNAMIC_IMPORT_SPECIFIER_EXTRACTORS[languageId];
575
+ if (!entry)
576
+ return [];
505
577
  const out = [];
578
+ const seen = new Set();
506
579
  try {
507
- const mask = buildPythonNonCodeMask(source);
508
- const { importlibAliases, importModuleAliases } = collectPythonDynamicImportAliases(source);
509
- const seen = new Set();
510
- for (const match of source.matchAll(PYTHON_DYNAMIC_CALL_PREFIX_PATTERN)) {
511
- if (!matchStartsInCode(mask, match))
512
- continue;
513
- const receiver = match[1] ?? "";
514
- const member = match[2];
515
- const isBuiltinImport = !member && receiver === "__import__";
516
- const isImportlibCall = member === "import_module" && importlibAliases.has(receiver);
517
- const isImportedFunctionCall = !member && importModuleAliases.has(receiver);
518
- if (!isBuiltinImport && !isImportlibCall && !isImportedFunctionCall)
519
- continue;
520
- const argumentStart = (match.index ?? 0) + (match[0]?.length ?? 0);
521
- const spec = parsePythonStaticStringExpression(source, argumentStart);
522
- if (!spec || !PYTHON_DYNAMIC_MODULE_PATTERN.test(spec) || seen.has(spec))
523
- continue;
524
- if (isBuiltinImport && spec.startsWith("."))
525
- continue;
526
- seen.add(spec);
527
- out.push({ spec, resolved: "heuristic", confidence: 0.7 });
580
+ const text = entry.text(source);
581
+ const guard = entry.guard(text);
582
+ const preparation = entry.prepare ? entry.prepare(source) : {};
583
+ for (const shape of entry.shapes) {
584
+ for (const match of text.matchAll(shape.pattern)) {
585
+ if (!matchStartsInCode(guard, match))
586
+ continue;
587
+ const spec = shape.fold({ text, match, fromFile, projectRoot, preparation });
588
+ if (!spec || seen.has(spec))
589
+ continue;
590
+ seen.add(spec);
591
+ out.push({ spec, resolved: "heuristic", confidence: 0.7 });
592
+ }
528
593
  }
529
594
  }
530
595
  catch {
@@ -532,22 +597,6 @@ export function extractPythonDynamicSpecifiers(source) {
532
597
  }
533
598
  return out;
534
599
  }
535
- const DYNAMIC_IMPORT_SPECIFIER_EXTRACTORS = {
536
- js: extractJsTsDynamicSpecifiers,
537
- ts: extractJsTsDynamicSpecifiers,
538
- python: extractPythonDynamicSpecifiers,
539
- };
540
- /**
541
- * Shared adapter boundary for opt-in dynamic import heuristics. A language adapter
542
- * extracts only non-executed module candidates and leaves target resolution, provenance
543
- * merging, and graph construction to the common pipeline.
544
- */
545
- export function extractDynamicImportSpecifiers(languageId, source, fromFile, projectRoot) {
546
- const extractor = DYNAMIC_IMPORT_SPECIFIER_EXTRACTORS[languageId];
547
- if (!extractor)
548
- return [];
549
- return extractor(source, fromFile, projectRoot);
550
- }
551
600
  export function extractPythonSpecifiers(source) {
552
601
  const out = [];
553
602
  try {