@lzehrung/codegraph-core 2.1.0 → 2.1.1

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 (342) hide show
  1. package/dist/agent/candidateTests.d.ts +12 -0
  2. package/dist/agent/candidateTests.d.ts.map +1 -0
  3. package/dist/agent/candidateTests.js +17 -0
  4. package/dist/agent/candidateTests.js.map +1 -0
  5. package/dist/agent/explore.d.ts.map +1 -1
  6. package/dist/agent/explore.js +9 -6
  7. package/dist/agent/explore.js.map +1 -1
  8. package/dist/agent/fileView.d.ts.map +1 -1
  9. package/dist/agent/fileView.js +113 -120
  10. package/dist/agent/fileView.js.map +1 -1
  11. package/dist/agent/orient.d.ts.map +1 -1
  12. package/dist/agent/orient.js +5 -4
  13. package/dist/agent/orient.js.map +1 -1
  14. package/dist/agent/query-index/candidates.d.ts +13 -2
  15. package/dist/agent/query-index/candidates.d.ts.map +1 -1
  16. package/dist/agent/query-index/candidates.js +28 -39
  17. package/dist/agent/query-index/candidates.js.map +1 -1
  18. package/dist/agent/query-index/schema.d.ts.map +1 -1
  19. package/dist/agent/query-index/schema.js.map +1 -1
  20. package/dist/agent/query-index/sessionStore.d.ts.map +1 -1
  21. package/dist/agent/query-index/sessionStore.js +42 -26
  22. package/dist/agent/query-index/sessionStore.js.map +1 -1
  23. package/dist/agent/query-index/store.d.ts +7 -0
  24. package/dist/agent/query-index/store.d.ts.map +1 -1
  25. package/dist/agent/query-index/store.js +71 -0
  26. package/dist/agent/query-index/store.js.map +1 -1
  27. package/dist/agent/refactorPlan.d.ts.map +1 -1
  28. package/dist/agent/refactorPlan.js +6 -14
  29. package/dist/agent/refactorPlan.js.map +1 -1
  30. package/dist/agent/renamePreview.d.ts +2 -5
  31. package/dist/agent/renamePreview.d.ts.map +1 -1
  32. package/dist/agent/renamePreview.js +82 -78
  33. package/dist/agent/renamePreview.js.map +1 -1
  34. package/dist/agent/search.d.ts.map +1 -1
  35. package/dist/agent/search.js +39 -17
  36. package/dist/agent/search.js.map +1 -1
  37. package/dist/agent/semanticSymbols.d.ts.map +1 -1
  38. package/dist/agent/semanticSymbols.js +2 -1
  39. package/dist/agent/semanticSymbols.js.map +1 -1
  40. package/dist/agent/session.d.ts +4 -0
  41. package/dist/agent/session.d.ts.map +1 -1
  42. package/dist/agent/session.js +19 -6
  43. package/dist/agent/session.js.map +1 -1
  44. package/dist/agent-tools.d.ts +1 -1
  45. package/dist/agent-tools.d.ts.map +1 -1
  46. package/dist/agent-tools.js +6 -15
  47. package/dist/agent-tools.js.map +1 -1
  48. package/dist/chunking/chunkFile.d.ts +5 -0
  49. package/dist/chunking/chunkFile.d.ts.map +1 -1
  50. package/dist/chunking/chunkFile.js +14 -15
  51. package/dist/chunking/chunkFile.js.map +1 -1
  52. package/dist/config.d.ts +3 -0
  53. package/dist/config.d.ts.map +1 -1
  54. package/dist/config.js +35 -3
  55. package/dist/config.js.map +1 -1
  56. package/dist/documentLinks/check.d.ts +2 -1
  57. package/dist/documentLinks/check.d.ts.map +1 -1
  58. package/dist/documentLinks/check.js +2 -2
  59. package/dist/documentLinks/check.js.map +1 -1
  60. package/dist/duplicate-token-normalization.d.ts.map +1 -1
  61. package/dist/duplicate-token-normalization.js +10 -2
  62. package/dist/duplicate-token-normalization.js.map +1 -1
  63. package/dist/duplicates/scoring.d.ts +0 -10
  64. package/dist/duplicates/scoring.d.ts.map +1 -1
  65. package/dist/duplicates/scoring.js +9 -9
  66. package/dist/duplicates/scoring.js.map +1 -1
  67. package/dist/duplicates/unitCache.d.ts +15 -9
  68. package/dist/duplicates/unitCache.d.ts.map +1 -1
  69. package/dist/duplicates/unitCache.js +184 -33
  70. package/dist/duplicates/unitCache.js.map +1 -1
  71. package/dist/duplicates/units.d.ts +6 -15
  72. package/dist/duplicates/units.d.ts.map +1 -1
  73. package/dist/duplicates/units.js +36 -18
  74. package/dist/duplicates/units.js.map +1 -1
  75. package/dist/frameworks/angularjs.d.ts.map +1 -1
  76. package/dist/frameworks/angularjs.js +18 -12
  77. package/dist/frameworks/angularjs.js.map +1 -1
  78. package/dist/graph-builder.d.ts.map +1 -1
  79. package/dist/graph-builder.js +12 -9
  80. package/dist/graph-builder.js.map +1 -1
  81. package/dist/graph-edge-collector.d.ts +1 -0
  82. package/dist/graph-edge-collector.d.ts.map +1 -1
  83. package/dist/graph-edge-collector.js +1 -1
  84. package/dist/graph-edge-collector.js.map +1 -1
  85. package/dist/graphs/grep.d.ts.map +1 -1
  86. package/dist/graphs/grep.js +7 -2
  87. package/dist/graphs/grep.js.map +1 -1
  88. package/dist/graphs/specifiers.d.ts.map +1 -1
  89. package/dist/graphs/specifiers.js +8 -2
  90. package/dist/graphs/specifiers.js.map +1 -1
  91. package/dist/graphs/symbol-graph-detailed.d.ts.map +1 -1
  92. package/dist/graphs/symbol-graph-detailed.js +3 -1
  93. package/dist/graphs/symbol-graph-detailed.js.map +1 -1
  94. package/dist/impact/analyzer.d.ts.map +1 -1
  95. package/dist/impact/analyzer.js +15 -1
  96. package/dist/impact/analyzer.js.map +1 -1
  97. package/dist/impact/call-compatibility/textScanner.d.ts +23 -0
  98. package/dist/impact/call-compatibility/textScanner.d.ts.map +1 -0
  99. package/dist/impact/call-compatibility/textScanner.js +615 -0
  100. package/dist/impact/call-compatibility/textScanner.js.map +1 -0
  101. package/dist/impact/callCompatibility.d.ts.map +1 -1
  102. package/dist/impact/callCompatibility.js +9 -570
  103. package/dist/impact/callCompatibility.js.map +1 -1
  104. package/dist/impact/direct.js +7 -6
  105. package/dist/impact/direct.js.map +1 -1
  106. package/dist/impact/index.d.ts +6 -0
  107. package/dist/impact/index.d.ts.map +1 -1
  108. package/dist/impact/index.js +0 -8
  109. package/dist/impact/index.js.map +1 -1
  110. package/dist/impact/map.js +2 -2
  111. package/dist/impact/map.js.map +1 -1
  112. package/dist/impact/memberResolutionCoverage.d.ts.map +1 -1
  113. package/dist/impact/memberResolutionCoverage.js +5 -1
  114. package/dist/impact/memberResolutionCoverage.js.map +1 -1
  115. package/dist/impact/parse.d.ts.map +1 -1
  116. package/dist/impact/parse.js +98 -36
  117. package/dist/impact/parse.js.map +1 -1
  118. package/dist/impact/referenceCache.js +1 -1
  119. package/dist/impact/referenceCache.js.map +1 -1
  120. package/dist/impact/report-suggestions.d.ts.map +1 -1
  121. package/dist/impact/report-suggestions.js +330 -61
  122. package/dist/impact/report-suggestions.js.map +1 -1
  123. package/dist/impact/reportCompact.js +7 -0
  124. package/dist/impact/reportCompact.js.map +1 -1
  125. package/dist/impact/streaming.d.ts +32 -2
  126. package/dist/impact/streaming.d.ts.map +1 -1
  127. package/dist/impact/streaming.js +61 -2
  128. package/dist/impact/streaming.js.map +1 -1
  129. package/dist/impact/suggestions.d.ts.map +1 -1
  130. package/dist/impact/suggestions.js +1 -1
  131. package/dist/impact/suggestions.js.map +1 -1
  132. package/dist/impact/types.d.ts +7 -20
  133. package/dist/impact/types.d.ts.map +1 -1
  134. package/dist/impact/types.js.map +1 -1
  135. package/dist/index.d.ts +2 -2
  136. package/dist/index.d.ts.map +1 -1
  137. package/dist/index.js +1 -1
  138. package/dist/index.js.map +1 -1
  139. package/dist/indexer/build-cache/location.d.ts +19 -0
  140. package/dist/indexer/build-cache/location.d.ts.map +1 -0
  141. package/dist/indexer/build-cache/location.js +132 -0
  142. package/dist/indexer/build-cache/location.js.map +1 -0
  143. package/dist/indexer/build-cache/manifest.d.ts +9 -3
  144. package/dist/indexer/build-cache/manifest.d.ts.map +1 -1
  145. package/dist/indexer/build-cache/manifest.js +77 -20
  146. package/dist/indexer/build-cache/manifest.js.map +1 -1
  147. package/dist/indexer/build-cache/module-cache.d.ts +23 -2
  148. package/dist/indexer/build-cache/module-cache.d.ts.map +1 -1
  149. package/dist/indexer/build-cache/module-cache.js +92 -32
  150. package/dist/indexer/build-cache/module-cache.js.map +1 -1
  151. package/dist/indexer/build-cache/options.d.ts +3 -1
  152. package/dist/indexer/build-cache/options.d.ts.map +1 -1
  153. package/dist/indexer/build-cache/options.js +10 -2
  154. package/dist/indexer/build-cache/options.js.map +1 -1
  155. package/dist/indexer/build-cache/project-snapshot.d.ts +32 -8
  156. package/dist/indexer/build-cache/project-snapshot.d.ts.map +1 -1
  157. package/dist/indexer/build-cache/project-snapshot.js +333 -44
  158. package/dist/indexer/build-cache/project-snapshot.js.map +1 -1
  159. package/dist/indexer/build-cache/reports.d.ts.map +1 -1
  160. package/dist/indexer/build-cache/reports.js +10 -1
  161. package/dist/indexer/build-cache/reports.js.map +1 -1
  162. package/dist/indexer/build-cache/resolver-environment.d.ts +9 -0
  163. package/dist/indexer/build-cache/resolver-environment.d.ts.map +1 -0
  164. package/dist/indexer/build-cache/resolver-environment.js +133 -0
  165. package/dist/indexer/build-cache/resolver-environment.js.map +1 -0
  166. package/dist/indexer/build-cache.d.ts +4 -3
  167. package/dist/indexer/build-cache.d.ts.map +1 -1
  168. package/dist/indexer/build-cache.js +4 -3
  169. package/dist/indexer/build-cache.js.map +1 -1
  170. package/dist/indexer/build-index.d.ts.map +1 -1
  171. package/dist/indexer/build-index.js +154 -47
  172. package/dist/indexer/build-index.js.map +1 -1
  173. package/dist/indexer/build-manifest.d.ts +1 -0
  174. package/dist/indexer/build-manifest.d.ts.map +1 -1
  175. package/dist/indexer/build-manifest.js +12 -5
  176. package/dist/indexer/build-manifest.js.map +1 -1
  177. package/dist/indexer/call-hierarchy.d.ts.map +1 -1
  178. package/dist/indexer/call-hierarchy.js.map +1 -1
  179. package/dist/indexer/finalize.d.ts.map +1 -1
  180. package/dist/indexer/finalize.js +7 -4
  181. package/dist/indexer/finalize.js.map +1 -1
  182. package/dist/indexer/imports/jsTextImports.d.ts.map +1 -1
  183. package/dist/indexer/imports/jsTextImports.js +14 -6
  184. package/dist/indexer/imports/jsTextImports.js.map +1 -1
  185. package/dist/indexer/imports/languageSpecific.d.ts.map +1 -1
  186. package/dist/indexer/imports/languageSpecific.js +10 -5
  187. package/dist/indexer/imports/languageSpecific.js.map +1 -1
  188. package/dist/indexer/imports/nativeCaptures.d.ts.map +1 -1
  189. package/dist/indexer/imports/nativeCaptures.js +4 -1
  190. package/dist/indexer/imports/nativeCaptures.js.map +1 -1
  191. package/dist/indexer/imports/python.d.ts.map +1 -1
  192. package/dist/indexer/imports/python.js +7 -2
  193. package/dist/indexer/imports/python.js.map +1 -1
  194. package/dist/indexer/load-current-index.d.ts.map +1 -1
  195. package/dist/indexer/load-current-index.js.map +1 -1
  196. package/dist/indexer/locals-and-exports.d.ts.map +1 -1
  197. package/dist/indexer/locals-and-exports.js +52 -22
  198. package/dist/indexer/locals-and-exports.js.map +1 -1
  199. package/dist/indexer/navigation-goto.d.ts.map +1 -1
  200. package/dist/indexer/navigation-goto.js +26 -16
  201. package/dist/indexer/navigation-goto.js.map +1 -1
  202. package/dist/indexer/navigation-local.d.ts.map +1 -1
  203. package/dist/indexer/navigation-local.js +7 -4
  204. package/dist/indexer/navigation-local.js.map +1 -1
  205. package/dist/indexer/navigation-references.d.ts +1 -1
  206. package/dist/indexer/navigation-references.d.ts.map +1 -1
  207. package/dist/indexer/navigation-references.js +27 -16
  208. package/dist/indexer/navigation-references.js.map +1 -1
  209. package/dist/indexer/navigation-resolve.d.ts.map +1 -1
  210. package/dist/indexer/navigation-resolve.js +116 -53
  211. package/dist/indexer/navigation-resolve.js.map +1 -1
  212. package/dist/indexer/navigation.d.ts +2 -1
  213. package/dist/indexer/navigation.d.ts.map +1 -1
  214. package/dist/indexer/navigation.js +24 -20
  215. package/dist/indexer/navigation.js.map +1 -1
  216. package/dist/indexer/parse-context.d.ts +1 -1
  217. package/dist/indexer/parse-context.d.ts.map +1 -1
  218. package/dist/indexer/parse-context.js +2 -2
  219. package/dist/indexer/parse-context.js.map +1 -1
  220. package/dist/indexer/reference-context.d.ts +2 -2
  221. package/dist/indexer/reference-context.d.ts.map +1 -1
  222. package/dist/indexer/reference-context.js +4 -2
  223. package/dist/indexer/reference-context.js.map +1 -1
  224. package/dist/indexer/scope-types.d.ts +3 -0
  225. package/dist/indexer/scope-types.d.ts.map +1 -1
  226. package/dist/indexer/scope.js +37 -38
  227. package/dist/indexer/scope.js.map +1 -1
  228. package/dist/indexer/shared.d.ts.map +1 -1
  229. package/dist/indexer/shared.js +3 -1
  230. package/dist/indexer/shared.js.map +1 -1
  231. package/dist/indexer/type-hierarchy.d.ts.map +1 -1
  232. package/dist/indexer/type-hierarchy.js +12 -8
  233. package/dist/indexer/type-hierarchy.js.map +1 -1
  234. package/dist/indexer/types.d.ts +22 -0
  235. package/dist/indexer/types.d.ts.map +1 -1
  236. package/dist/indexer/workspace-symbols.d.ts.map +1 -1
  237. package/dist/indexer/workspace-symbols.js +5 -3
  238. package/dist/indexer/workspace-symbols.js.map +1 -1
  239. package/dist/languages/definitions/csharp.d.ts.map +1 -1
  240. package/dist/languages/definitions/csharp.js +8 -0
  241. package/dist/languages/definitions/csharp.js.map +1 -1
  242. package/dist/languages/definitions/java.d.ts.map +1 -1
  243. package/dist/languages/definitions/java.js +3 -0
  244. package/dist/languages/definitions/java.js.map +1 -1
  245. package/dist/languages/definitions/python.d.ts.map +1 -1
  246. package/dist/languages/definitions/python.js +2 -0
  247. package/dist/languages/definitions/python.js.map +1 -1
  248. package/dist/languages/definitions/rust.d.ts.map +1 -1
  249. package/dist/languages/definitions/rust.js +2 -0
  250. package/dist/languages/definitions/rust.js.map +1 -1
  251. package/dist/languages/importStatementParsers.d.ts +2 -0
  252. package/dist/languages/importStatementParsers.d.ts.map +1 -1
  253. package/dist/languages/importStatementParsers.js +24 -10
  254. package/dist/languages/importStatementParsers.js.map +1 -1
  255. package/dist/native/byteIndex.d.ts +26 -0
  256. package/dist/native/byteIndex.d.ts.map +1 -0
  257. package/dist/native/byteIndex.js +70 -0
  258. package/dist/native/byteIndex.js.map +1 -0
  259. package/dist/native/projectedTree.d.ts +3 -2
  260. package/dist/native/projectedTree.d.ts.map +1 -1
  261. package/dist/native/projectedTree.js +6 -50
  262. package/dist/native/projectedTree.js.map +1 -1
  263. package/dist/native/queryResults.d.ts +7 -1
  264. package/dist/native/queryResults.d.ts.map +1 -1
  265. package/dist/native/queryResults.js +13 -5
  266. package/dist/native/queryResults.js.map +1 -1
  267. package/dist/review/changes.d.ts +2 -0
  268. package/dist/review/changes.d.ts.map +1 -1
  269. package/dist/review/changes.js +10 -0
  270. package/dist/review/changes.js.map +1 -1
  271. package/dist/review/deleted.d.ts.map +1 -1
  272. package/dist/review/deleted.js +20 -2
  273. package/dist/review/deleted.js.map +1 -1
  274. package/dist/review/summaries.d.ts.map +1 -1
  275. package/dist/review/summaries.js +13 -10
  276. package/dist/review/summaries.js.map +1 -1
  277. package/dist/review.d.ts.map +1 -1
  278. package/dist/review.js +7 -2
  279. package/dist/review.js.map +1 -1
  280. package/dist/session.d.ts +20 -4
  281. package/dist/session.d.ts.map +1 -1
  282. package/dist/session.js +76 -16
  283. package/dist/session.js.map +1 -1
  284. package/dist/sql/types.d.ts.map +1 -1
  285. package/dist/sqlite/query.d.ts +29 -0
  286. package/dist/sqlite/query.d.ts.map +1 -1
  287. package/dist/sqlite/query.js +98 -11
  288. package/dist/sqlite/query.js.map +1 -1
  289. package/dist/sqlite/rawQueryWorker.d.ts +22 -0
  290. package/dist/sqlite/rawQueryWorker.d.ts.map +1 -0
  291. package/dist/sqlite/rawQueryWorker.js +31 -0
  292. package/dist/sqlite/rawQueryWorker.js.map +1 -0
  293. package/dist/sqlite/rawQueryWorkerPool.d.ts +66 -0
  294. package/dist/sqlite/rawQueryWorkerPool.d.ts.map +1 -0
  295. package/dist/sqlite/rawQueryWorkerPool.js +142 -0
  296. package/dist/sqlite/rawQueryWorkerPool.js.map +1 -0
  297. package/dist/sqlite/schema.d.ts.map +1 -1
  298. package/dist/sqlite/schema.js.map +1 -1
  299. package/dist/sqlite-driver.d.ts.map +1 -1
  300. package/dist/sqlite-driver.js +2 -1
  301. package/dist/sqlite-driver.js.map +1 -1
  302. package/dist/sqlite.d.ts +1 -1
  303. package/dist/sqlite.d.ts.map +1 -1
  304. package/dist/sqlite.js +1 -1
  305. package/dist/sqlite.js.map +1 -1
  306. package/dist/util/bloomFilter.d.ts +3 -2
  307. package/dist/util/bloomFilter.d.ts.map +1 -1
  308. package/dist/util/bloomFilter.js +8 -8
  309. package/dist/util/bloomFilter.js.map +1 -1
  310. package/dist/util/confinedFile.d.ts +41 -2
  311. package/dist/util/confinedFile.d.ts.map +1 -1
  312. package/dist/util/confinedFile.js +101 -2
  313. package/dist/util/confinedFile.js.map +1 -1
  314. package/dist/util/git.d.ts +2 -0
  315. package/dist/util/git.d.ts.map +1 -1
  316. package/dist/util/git.js +109 -26
  317. package/dist/util/git.js.map +1 -1
  318. package/dist/util/identifiers.d.ts +75 -0
  319. package/dist/util/identifiers.d.ts.map +1 -0
  320. package/dist/util/identifiers.js +82 -0
  321. package/dist/util/identifiers.js.map +1 -0
  322. package/dist/util/paths.d.ts.map +1 -1
  323. package/dist/util/paths.js.map +1 -1
  324. package/dist/util/projectFiles.d.ts.map +1 -1
  325. package/dist/util/projectFiles.js +43 -14
  326. package/dist/util/projectFiles.js.map +1 -1
  327. package/dist/util/resolution/jvm.d.ts.map +1 -1
  328. package/dist/util/resolution/jvm.js +9 -4
  329. package/dist/util/resolution/jvm.js.map +1 -1
  330. package/dist/util/resolution/php.d.ts.map +1 -1
  331. package/dist/util/resolution/php.js +6 -5
  332. package/dist/util/resolution/php.js.map +1 -1
  333. package/dist/util/rustTestModules.d.ts.map +1 -1
  334. package/dist/util/rustTestModules.js +4 -2
  335. package/dist/util/rustTestModules.js.map +1 -1
  336. package/dist/util/specifiers.d.ts.map +1 -1
  337. package/dist/util/specifiers.js +10 -3
  338. package/dist/util/specifiers.js.map +1 -1
  339. package/dist/util/sqliteSchema.d.ts.map +1 -1
  340. package/dist/util/sqliteSchema.js +10 -1
  341. package/dist/util/sqliteSchema.js.map +1 -1
  342. package/package.json +2 -2
@@ -7,570 +7,12 @@ import { isJsTsLanguage } from "../languages/js-family.js";
7
7
  import { sliceText, toRange } from "../util/ast.js";
8
8
  import { fileIdentityKey } from "../util/paths.js";
9
9
  import { getCallCompatibilityProvider, getCallCompatibilitySupportedLanguages, registerCallCompatibilityExtractors, } from "./call-compatibility/providers/index.js";
10
- import { directSignatureParameterNode, findAncestorOfTypes, findFirstDescendantOfTypes, } from "./signature-node-utils.js";
11
- import { canStartReferenceLookup, recordReferenceLookupOmitted, recordReferenceLookupStarted, } from "./budgets.js";
10
+ import { findOpeningParen, findSignatureOpeningParen, findCommentEnd, findCallOpeningParen, findBalancedParentheses, canStartRegexLiteral, findRegexLiteralEnd, splitTopLevelCommaGroups, } from "./call-compatibility/textScanner.js";
12
11
  function supportsCallCompatibilityLanguage(languageId) {
13
12
  return getCallCompatibilityProvider(languageId) !== null;
14
13
  }
15
- function findOpeningParen(source, startIndex) {
16
- if (startIndex < 0 || startIndex >= source.length) {
17
- return -1;
18
- }
19
- return source.indexOf("(", startIndex);
20
- }
21
- function findSignatureOpeningParen(source, startIndex) {
22
- if (startIndex < 0 || startIndex >= source.length) {
23
- return -1;
24
- }
25
- let quote = null;
26
- let escaped = false;
27
- let isTypeAnnotation = false;
28
- for (let index = startIndex; index < source.length; index += 1) {
29
- const char = source[index];
30
- if (quote) {
31
- if (escaped) {
32
- escaped = false;
33
- continue;
34
- }
35
- if (char === "\\") {
36
- escaped = true;
37
- continue;
38
- }
39
- if (char === quote) {
40
- quote = null;
41
- }
42
- continue;
43
- }
44
- const commentEnd = findCommentEnd(source, index);
45
- if (commentEnd !== null) {
46
- if (commentEnd < 0) {
47
- return -1;
48
- }
49
- index = commentEnd - 1;
50
- continue;
51
- }
52
- if (char === '"' || char === "'" || char === "`") {
53
- quote = char;
54
- continue;
55
- }
56
- if (char === "<") {
57
- const closeIndex = findBalancedAngleBrackets(source, index);
58
- if (closeIndex < 0) {
59
- return -1;
60
- }
61
- index = closeIndex;
62
- continue;
63
- }
64
- if (char === ":") {
65
- isTypeAnnotation = true;
66
- continue;
67
- }
68
- if (char === "=") {
69
- if (source[index + 1] === ">") {
70
- index += 1;
71
- continue;
72
- }
73
- isTypeAnnotation = false;
74
- continue;
75
- }
76
- if (char === "(") {
77
- if (!isTypeAnnotation) {
78
- return index;
79
- }
80
- const balanced = findBalancedParentheses(source, index);
81
- if (!balanced) {
82
- return -1;
83
- }
84
- index = balanced.end - 1;
85
- }
86
- }
87
- return -1;
88
- }
89
- function findCommentEnd(source, index) {
90
- if (source[index] !== "/") {
91
- return null;
92
- }
93
- const nextChar = source[index + 1];
94
- if (nextChar === "/") {
95
- const newlineIndex = source.indexOf("\n", index + 2);
96
- if (newlineIndex < 0) {
97
- return source.length;
98
- }
99
- return newlineIndex;
100
- }
101
- if (nextChar === "*") {
102
- const closeIndex = source.indexOf("*/", index + 2);
103
- if (closeIndex < 0) {
104
- return -1;
105
- }
106
- return closeIndex + 2;
107
- }
108
- return null;
109
- }
110
- function findCallOpeningParen(source, startIndex, endIndex) {
111
- if (endIndex === undefined) {
112
- return findOpeningParen(source, startIndex);
113
- }
114
- if (endIndex < startIndex || endIndex > source.length) {
115
- return -1;
116
- }
117
- let skippedWhitespace = false;
118
- for (let index = endIndex; index < source.length; index += 1) {
119
- const char = source[index];
120
- if (char === undefined) {
121
- return -1;
122
- }
123
- if (/\s/.test(char)) {
124
- skippedWhitespace = true;
125
- continue;
126
- }
127
- if (char === "(") {
128
- return index;
129
- }
130
- if (char === "<") {
131
- if (skippedWhitespace) {
132
- return -1;
133
- }
134
- const closeIndex = findBalancedAngleBrackets(source, index);
135
- if (closeIndex < 0) {
136
- return -1;
137
- }
138
- for (let afterGeneric = closeIndex + 1; afterGeneric < source.length; afterGeneric += 1) {
139
- const nextChar = source[afterGeneric];
140
- if (nextChar === undefined) {
141
- return -1;
142
- }
143
- if (/\s/.test(nextChar)) {
144
- continue;
145
- }
146
- if (nextChar === "(") {
147
- return afterGeneric;
148
- }
149
- return -1;
150
- }
151
- return -1;
152
- }
153
- return -1;
154
- }
155
- return -1;
156
- }
157
- function findBalancedAngleBrackets(source, openIndex) {
158
- if (source[openIndex] !== "<") {
159
- return -1;
160
- }
161
- let depth = 0;
162
- let parenDepth = 0;
163
- let bracketDepth = 0;
164
- let braceDepth = 0;
165
- let quote = null;
166
- let escaped = false;
167
- for (let index = openIndex; index < source.length; index += 1) {
168
- const char = source[index];
169
- if (quote) {
170
- if (escaped) {
171
- escaped = false;
172
- continue;
173
- }
174
- if (char === "\\") {
175
- escaped = true;
176
- continue;
177
- }
178
- if (char === quote) {
179
- quote = null;
180
- }
181
- continue;
182
- }
183
- const commentEnd = findCommentEnd(source, index);
184
- if (commentEnd !== null) {
185
- if (commentEnd < 0) {
186
- return -1;
187
- }
188
- index = commentEnd - 1;
189
- continue;
190
- }
191
- if (char === '"' || char === "'" || char === "`") {
192
- quote = char;
193
- continue;
194
- }
195
- if (char === "(") {
196
- parenDepth += 1;
197
- continue;
198
- }
199
- if (char === ")") {
200
- parenDepth -= 1;
201
- if (parenDepth < 0) {
202
- return -1;
203
- }
204
- continue;
205
- }
206
- if (char === "[") {
207
- bracketDepth += 1;
208
- continue;
209
- }
210
- if (char === "]") {
211
- bracketDepth -= 1;
212
- if (bracketDepth < 0) {
213
- return -1;
214
- }
215
- continue;
216
- }
217
- if (char === "{") {
218
- braceDepth += 1;
219
- continue;
220
- }
221
- if (char === "}") {
222
- braceDepth -= 1;
223
- if (braceDepth < 0) {
224
- return -1;
225
- }
226
- continue;
227
- }
228
- const atTopLevel = !parenDepth && !bracketDepth && !braceDepth;
229
- if (char === "<" && atTopLevel) {
230
- depth += 1;
231
- continue;
232
- }
233
- if (char === ">" && source[index - 1] !== "=" && atTopLevel) {
234
- depth -= 1;
235
- if (!depth) {
236
- return index;
237
- }
238
- if (depth < 0) {
239
- return -1;
240
- }
241
- }
242
- }
243
- return -1;
244
- }
245
- function findBalancedParentheses(source, openIndex) {
246
- if (openIndex < 0 || source[openIndex] !== "(") {
247
- return null;
248
- }
249
- let depth = 0;
250
- let quote = null;
251
- let escaped = false;
252
- for (let index = openIndex; index < source.length; index += 1) {
253
- const char = source[index];
254
- if (quote) {
255
- if (escaped) {
256
- escaped = false;
257
- continue;
258
- }
259
- if (char === "\\") {
260
- escaped = true;
261
- continue;
262
- }
263
- if (char === quote) {
264
- quote = null;
265
- }
266
- continue;
267
- }
268
- const commentEnd = findCommentEnd(source, index);
269
- if (commentEnd !== null) {
270
- if (commentEnd < 0) {
271
- return null;
272
- }
273
- index = commentEnd - 1;
274
- continue;
275
- }
276
- if (char === '"' || char === "'" || char === "`") {
277
- quote = char;
278
- continue;
279
- }
280
- if (char === "(") {
281
- depth += 1;
282
- continue;
283
- }
284
- if (char === ")") {
285
- depth -= 1;
286
- if (!depth) {
287
- return {
288
- start: openIndex,
289
- end: index + 1,
290
- inner: source.slice(openIndex + 1, index),
291
- };
292
- }
293
- if (depth < 0) {
294
- return null;
295
- }
296
- }
297
- }
298
- return null;
299
- }
300
- function hasTypeContextBeforeLessThan(text, index, groupStart) {
301
- const left = text.slice(groupStart, index).trimEnd();
302
- if (!left) {
303
- return false;
304
- }
305
- const typeKeywordPattern = /(^|[\s([{,:?=<>|&])(?:as|satisfies|new)\s+[A-Za-z_$][\w$.[\]\s]*$/;
306
- return typeKeywordPattern.test(left) || hasOpenTypeAnnotationBefore(text, index, groupStart);
307
- }
308
- function hasOpenTypeAnnotationBefore(text, index, groupStart) {
309
- let parenDepth = 0;
310
- let bracketDepth = 0;
311
- let braceDepth = 0;
312
- let quote = null;
313
- let escaped = false;
314
- let hasTypeAnnotation = false;
315
- for (let current = groupStart; current < index; current += 1) {
316
- const char = text[current];
317
- if (quote) {
318
- if (escaped) {
319
- escaped = false;
320
- continue;
321
- }
322
- if (char === "\\") {
323
- escaped = true;
324
- continue;
325
- }
326
- if (char === quote) {
327
- quote = null;
328
- }
329
- continue;
330
- }
331
- const commentEnd = findCommentEnd(text, current);
332
- if (commentEnd !== null) {
333
- if (commentEnd < 0) {
334
- return false;
335
- }
336
- current = commentEnd - 1;
337
- continue;
338
- }
339
- if (char === '"' || char === "'" || char === "`") {
340
- quote = char;
341
- continue;
342
- }
343
- if (char === "(") {
344
- parenDepth += 1;
345
- continue;
346
- }
347
- if (char === ")") {
348
- parenDepth -= 1;
349
- if (parenDepth < 0) {
350
- return false;
351
- }
352
- continue;
353
- }
354
- if (char === "[") {
355
- bracketDepth += 1;
356
- continue;
357
- }
358
- if (char === "]") {
359
- bracketDepth -= 1;
360
- if (bracketDepth < 0) {
361
- return false;
362
- }
363
- continue;
364
- }
365
- if (char === "{") {
366
- braceDepth += 1;
367
- continue;
368
- }
369
- if (char === "}") {
370
- braceDepth -= 1;
371
- if (braceDepth < 0) {
372
- return false;
373
- }
374
- continue;
375
- }
376
- const atTopLevel = !parenDepth && !bracketDepth && !braceDepth;
377
- if (!atTopLevel) {
378
- continue;
379
- }
380
- if (char === ":") {
381
- hasTypeAnnotation = true;
382
- continue;
383
- }
384
- if (char === "=" && text[current + 1] !== ">") {
385
- hasTypeAnnotation = false;
386
- }
387
- }
388
- return hasTypeAnnotation;
389
- }
390
- function previousSignificantIndex(text, index, groupStart) {
391
- for (let current = index - 1; current >= groupStart; current -= 1) {
392
- const char = text[current];
393
- if (char !== undefined && !/\s/.test(char)) {
394
- return current;
395
- }
396
- }
397
- return -1;
398
- }
399
- function previousSignificantChar(text, index, groupStart) {
400
- const previousIndex = previousSignificantIndex(text, index, groupStart);
401
- if (previousIndex < 0) {
402
- return null;
403
- }
404
- return text[previousIndex] ?? null;
405
- }
406
- function previousSignificantCharBefore(text, index, groupStart) {
407
- const previousIndex = previousSignificantIndex(text, index, groupStart);
408
- if (previousIndex < 0) {
409
- return null;
410
- }
411
- return previousSignificantChar(text, previousIndex, groupStart);
412
- }
413
- function canStartRegexLiteral(text, index, groupStart) {
414
- if (text[index] !== "/" || text[index + 1] === "/" || text[index + 1] === "*") {
415
- return false;
416
- }
417
- const previous = previousSignificantChar(text, index, groupStart);
418
- if (!previous) {
419
- return true;
420
- }
421
- if (previous === ">" && previousSignificantCharBefore(text, index, groupStart) === "=") {
422
- return true;
423
- }
424
- return "([{,=:+-!*?&|;".includes(previous);
425
- }
426
- function findRegexLiteralEnd(text, index) {
427
- if (text[index] !== "/" || text[index + 1] === "/" || text[index + 1] === "*") {
428
- return null;
429
- }
430
- let escaped = false;
431
- let inCharacterClass = false;
432
- for (let current = index + 1; current < text.length; current += 1) {
433
- const char = text[current];
434
- if (char === "\n" || char === "\r") {
435
- return -1;
436
- }
437
- if (escaped) {
438
- escaped = false;
439
- continue;
440
- }
441
- if (char === "\\") {
442
- escaped = true;
443
- continue;
444
- }
445
- if (char === "[") {
446
- inCharacterClass = true;
447
- continue;
448
- }
449
- if (char === "]") {
450
- inCharacterClass = false;
451
- continue;
452
- }
453
- if (char === "/" && !inCharacterClass) {
454
- let endIndex = current + 1;
455
- while (/[A-Za-z]/.test(text[endIndex] ?? "")) {
456
- endIndex += 1;
457
- }
458
- return endIndex;
459
- }
460
- }
461
- return -1;
462
- }
463
- function splitTopLevelCommaGroups(text, angleMode, detectRegexLiterals = true) {
464
- const trimmed = text.trim();
465
- if (!trimmed) {
466
- return [];
467
- }
468
- const groups = [];
469
- let groupStart = 0;
470
- let parenDepth = 0;
471
- let bracketDepth = 0;
472
- let braceDepth = 0;
473
- let angleDepth = 0;
474
- let quote = null;
475
- let escaped = false;
476
- for (let index = 0; index < text.length; index += 1) {
477
- const char = text[index];
478
- if (quote) {
479
- if (escaped) {
480
- escaped = false;
481
- continue;
482
- }
483
- if (char === "\\") {
484
- escaped = true;
485
- continue;
486
- }
487
- if (char === quote) {
488
- quote = null;
489
- }
490
- continue;
491
- }
492
- const commentEnd = findCommentEnd(text, index);
493
- if (commentEnd !== null) {
494
- if (commentEnd < 0) {
495
- return null;
496
- }
497
- index = commentEnd - 1;
498
- continue;
499
- }
500
- if (detectRegexLiterals && canStartRegexLiteral(text, index, groupStart)) {
501
- const regexEnd = findRegexLiteralEnd(text, index);
502
- if (regexEnd === null) {
503
- return null;
504
- }
505
- if (regexEnd < 0) {
506
- return null;
507
- }
508
- index = regexEnd - 1;
509
- continue;
510
- }
511
- if (char === '"' || char === "'" || char === "`") {
512
- quote = char;
513
- continue;
514
- }
515
- if (char === "(") {
516
- parenDepth += 1;
517
- continue;
518
- }
519
- if (char === ")") {
520
- parenDepth -= 1;
521
- if (parenDepth < 0) {
522
- return null;
523
- }
524
- continue;
525
- }
526
- if (char === "[") {
527
- bracketDepth += 1;
528
- continue;
529
- }
530
- if (char === "]") {
531
- bracketDepth -= 1;
532
- if (bracketDepth < 0) {
533
- return null;
534
- }
535
- continue;
536
- }
537
- if (char === "{") {
538
- braceDepth += 1;
539
- continue;
540
- }
541
- if (char === "}") {
542
- braceDepth -= 1;
543
- if (braceDepth < 0) {
544
- return null;
545
- }
546
- continue;
547
- }
548
- const atDelimiterTopLevel = !parenDepth && !bracketDepth && !braceDepth;
549
- if (char === "<" &&
550
- atDelimiterTopLevel &&
551
- (angleDepth || angleMode === "always" || hasTypeContextBeforeLessThan(text, index, groupStart))) {
552
- angleDepth += 1;
553
- continue;
554
- }
555
- if (char === ">" && angleDepth && text[index - 1] !== "=" && atDelimiterTopLevel) {
556
- angleDepth -= 1;
557
- continue;
558
- }
559
- const atTopLevel = atDelimiterTopLevel && !angleDepth;
560
- if (char === "," && atTopLevel) {
561
- groups.push(text.slice(groupStart, index).trim());
562
- groupStart = index + 1;
563
- }
564
- }
565
- if (quote || parenDepth || bracketDepth || braceDepth || angleDepth) {
566
- return null;
567
- }
568
- groups.push(text.slice(groupStart).trim());
569
- if (groups.length && groups[groups.length - 1] === "") {
570
- groups.pop();
571
- }
572
- return groups;
573
- }
14
+ import { directSignatureParameterNode, findAncestorOfTypes, findFirstDescendantOfTypes, } from "./signature-node-utils.js";
15
+ import { canStartReferenceLookup, recordReferenceLookupOmitted, recordReferenceLookupStarted, } from "./budgets.js";
574
16
  function referenceScanLimitForCallsites(maxRefs) {
575
17
  return Math.max(maxRefs + 50, maxRefs * 4);
576
18
  }
@@ -1312,7 +754,7 @@ async function collectVerifiedCallsiteReferences(index, changedSymbol, maxRefs,
1312
754
  if (!support || !supportsCallCompatibilityLanguage(support.id)) {
1313
755
  continue;
1314
756
  }
1315
- const parsed = await tryEnsureParsedContext(file, index.parsed?.get(fileIdentityKey(file)), diagnostics);
757
+ const parsed = await tryEnsureParsedContext(file, index.parsed?.get(fileIdentityKey(file)), index.languageExtensions, diagnostics);
1316
758
  if (!parsed) {
1317
759
  continue;
1318
760
  }
@@ -1366,14 +808,11 @@ function classifyCompatibility(expected, actual) {
1366
808
  }
1367
809
  return { status: "compatible", reason: "compatible_argument_count" };
1368
810
  }
1369
- async function tryEnsureParsedContext(file, parsedEntry, diagnostics) {
1370
- try {
1371
- return await ensureParsedContext(file, parsedEntry);
1372
- }
1373
- catch {
811
+ function tryEnsureParsedContext(file, parsedEntry, languageExtensions, diagnostics) {
812
+ return ensureParsedContext(file, parsedEntry, languageExtensions).catch(() => {
1374
813
  incrementSkippedReason(diagnostics, "parse-failed");
1375
814
  return null;
1376
- }
815
+ });
1377
816
  }
1378
817
  function incrementSkippedReason(diagnostics, reason) {
1379
818
  if (!diagnostics) {
@@ -1391,7 +830,7 @@ async function buildCallCompatibilityHintForReference(input) {
1391
830
  if (calleeStartIndex === undefined) {
1392
831
  return null;
1393
832
  }
1394
- const parsedCallsite = await tryEnsureParsedContext(ref.file, index.parsed?.get(fileIdentityKey(ref.file)), diagnostics);
833
+ const parsedCallsite = await tryEnsureParsedContext(ref.file, index.parsed?.get(fileIdentityKey(ref.file)), index.languageExtensions, diagnostics);
1395
834
  if (!parsedCallsite) {
1396
835
  return null;
1397
836
  }
@@ -1447,7 +886,7 @@ export async function attachCallCompatibilityHints(index, changedSymbols, option
1447
886
  recordReferenceLookupOmitted(options.workBudget, 1);
1448
887
  continue;
1449
888
  }
1450
- const parsedDefinition = await tryEnsureParsedContext(changedSymbol.file, index.parsed?.get(fileIdentityKey(changedSymbol.file)), diagnostics);
889
+ const parsedDefinition = await tryEnsureParsedContext(changedSymbol.file, index.parsed?.get(fileIdentityKey(changedSymbol.file)), index.languageExtensions, diagnostics);
1451
890
  if (!parsedDefinition) {
1452
891
  continue;
1453
892
  }