circle-ir 4.16.1 → 4.18.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 (295) hide show
  1. package/dist/analysis/advisories.d.ts +186 -0
  2. package/dist/analysis/advisories.d.ts.map +1 -0
  3. package/dist/analysis/advisories.js +391 -0
  4. package/dist/analysis/advisories.js.map +1 -0
  5. package/dist/analysis/comment-lines.d.ts +14 -0
  6. package/dist/analysis/comment-lines.d.ts.map +1 -0
  7. package/dist/analysis/comment-lines.js +34 -0
  8. package/dist/analysis/comment-lines.js.map +1 -0
  9. package/dist/analysis/config-loader.d.ts.map +1 -1
  10. package/dist/analysis/config-loader.js +59 -5
  11. package/dist/analysis/config-loader.js.map +1 -1
  12. package/dist/analysis/constant-caller-gate.d.ts +2 -2
  13. package/dist/analysis/constant-caller-gate.d.ts.map +1 -1
  14. package/dist/analysis/constant-caller-gate.js +205 -29
  15. package/dist/analysis/constant-caller-gate.js.map +1 -1
  16. package/dist/analysis/constant-propagation/index.d.ts +2 -0
  17. package/dist/analysis/constant-propagation/index.d.ts.map +1 -1
  18. package/dist/analysis/constant-propagation/index.js +10 -0
  19. package/dist/analysis/constant-propagation/index.js.map +1 -1
  20. package/dist/analysis/constant-propagation/propagator.d.ts +15 -0
  21. package/dist/analysis/constant-propagation/propagator.d.ts.map +1 -1
  22. package/dist/analysis/constant-propagation/propagator.js +224 -20
  23. package/dist/analysis/constant-propagation/propagator.js.map +1 -1
  24. package/dist/analysis/constant-propagation/types.d.ts +2 -0
  25. package/dist/analysis/constant-propagation/types.d.ts.map +1 -1
  26. package/dist/analysis/constant-propagation.d.ts +1 -1
  27. package/dist/analysis/constant-propagation.d.ts.map +1 -1
  28. package/dist/analysis/constant-propagation.js +1 -1
  29. package/dist/analysis/constant-propagation.js.map +1 -1
  30. package/dist/analysis/entry-point-detection.d.ts.map +1 -1
  31. package/dist/analysis/entry-point-detection.js +72 -0
  32. package/dist/analysis/entry-point-detection.js.map +1 -1
  33. package/dist/analysis/interprocedural.d.ts.map +1 -1
  34. package/dist/analysis/interprocedural.js +75 -8
  35. package/dist/analysis/interprocedural.js.map +1 -1
  36. package/dist/analysis/maven-declared.d.ts +72 -0
  37. package/dist/analysis/maven-declared.d.ts.map +1 -0
  38. package/dist/analysis/maven-declared.js +216 -0
  39. package/dist/analysis/maven-declared.js.map +1 -0
  40. package/dist/analysis/maven-version.d.ts +28 -0
  41. package/dist/analysis/maven-version.d.ts.map +1 -0
  42. package/dist/analysis/maven-version.js +172 -0
  43. package/dist/analysis/maven-version.js.map +1 -0
  44. package/dist/analysis/passes/constant-propagation-pass.d.ts.map +1 -1
  45. package/dist/analysis/passes/constant-propagation-pass.js +29 -1
  46. package/dist/analysis/passes/constant-propagation-pass.js.map +1 -1
  47. package/dist/analysis/passes/cross-file-pass.d.ts.map +1 -1
  48. package/dist/analysis/passes/cross-file-pass.js +84 -2
  49. package/dist/analysis/passes/cross-file-pass.js.map +1 -1
  50. package/dist/analysis/passes/csharp-sanitizer-credit.d.ts +7 -0
  51. package/dist/analysis/passes/csharp-sanitizer-credit.d.ts.map +1 -1
  52. package/dist/analysis/passes/csharp-sanitizer-credit.js +44 -1
  53. package/dist/analysis/passes/csharp-sanitizer-credit.js.map +1 -1
  54. package/dist/analysis/passes/insecure-cookie-pass.d.ts +2 -0
  55. package/dist/analysis/passes/insecure-cookie-pass.d.ts.map +1 -1
  56. package/dist/analysis/passes/insecure-cookie-pass.js +25 -3
  57. package/dist/analysis/passes/insecure-cookie-pass.js.map +1 -1
  58. package/dist/analysis/passes/interprocedural-pass.d.ts +11 -14
  59. package/dist/analysis/passes/interprocedural-pass.d.ts.map +1 -1
  60. package/dist/analysis/passes/interprocedural-pass.js +562 -0
  61. package/dist/analysis/passes/interprocedural-pass.js.map +1 -1
  62. package/dist/analysis/passes/language-sources-pass.d.ts +18 -1
  63. package/dist/analysis/passes/language-sources-pass.d.ts.map +1 -1
  64. package/dist/analysis/passes/language-sources-pass.js +1079 -14
  65. package/dist/analysis/passes/language-sources-pass.js.map +1 -1
  66. package/dist/analysis/passes/param-source-flow-gate-pass.d.ts.map +1 -1
  67. package/dist/analysis/passes/param-source-flow-gate-pass.js +82 -3
  68. package/dist/analysis/passes/param-source-flow-gate-pass.js.map +1 -1
  69. package/dist/analysis/passes/sink-filter-pass.d.ts +44 -2
  70. package/dist/analysis/passes/sink-filter-pass.d.ts.map +1 -1
  71. package/dist/analysis/passes/sink-filter-pass.js +690 -12
  72. package/dist/analysis/passes/sink-filter-pass.js.map +1 -1
  73. package/dist/analysis/passes/taint-propagation-pass.d.ts.map +1 -1
  74. package/dist/analysis/passes/taint-propagation-pass.js +298 -19
  75. package/dist/analysis/passes/taint-propagation-pass.js.map +1 -1
  76. package/dist/analysis/passes/tls-verify-disabled-pass.d.ts +18 -0
  77. package/dist/analysis/passes/tls-verify-disabled-pass.d.ts.map +1 -1
  78. package/dist/analysis/passes/tls-verify-disabled-pass.js +161 -0
  79. package/dist/analysis/passes/tls-verify-disabled-pass.js.map +1 -1
  80. package/dist/analysis/passes/weak-random-pass.d.ts +6 -0
  81. package/dist/analysis/passes/weak-random-pass.d.ts.map +1 -1
  82. package/dist/analysis/passes/weak-random-pass.js +29 -0
  83. package/dist/analysis/passes/weak-random-pass.js.map +1 -1
  84. package/dist/analysis/promote-cross-file-flows.d.ts +17 -0
  85. package/dist/analysis/promote-cross-file-flows.d.ts.map +1 -0
  86. package/dist/analysis/promote-cross-file-flows.js +32 -0
  87. package/dist/analysis/promote-cross-file-flows.js.map +1 -0
  88. package/dist/analysis/rust-literal-guard.d.ts.map +1 -1
  89. package/dist/analysis/rust-literal-guard.js +100 -1
  90. package/dist/analysis/rust-literal-guard.js.map +1 -1
  91. package/dist/analysis/sbom.d.ts +100 -0
  92. package/dist/analysis/sbom.d.ts.map +1 -1
  93. package/dist/analysis/sbom.js +514 -3
  94. package/dist/analysis/sbom.js.map +1 -1
  95. package/dist/analysis/semver-version.d.ts +30 -0
  96. package/dist/analysis/semver-version.d.ts.map +1 -0
  97. package/dist/analysis/semver-version.js +76 -0
  98. package/dist/analysis/semver-version.js.map +1 -0
  99. package/dist/analysis/taint-matcher.d.ts +5 -0
  100. package/dist/analysis/taint-matcher.d.ts.map +1 -1
  101. package/dist/analysis/taint-matcher.js +226 -4
  102. package/dist/analysis/taint-matcher.js.map +1 -1
  103. package/dist/analyzer.d.ts +57 -0
  104. package/dist/analyzer.d.ts.map +1 -1
  105. package/dist/analyzer.js +69 -6
  106. package/dist/analyzer.js.map +1 -1
  107. package/dist/browser/circle-ir.js +3360 -314
  108. package/dist/core/circle-ir-core.cjs +783 -220
  109. package/dist/core/circle-ir-core.js +783 -220
  110. package/dist/core/extractors/dfg.js +205 -2
  111. package/dist/core/extractors/dfg.js.map +1 -1
  112. package/dist/core/extractors/ts-declaration-detail.d.ts +39 -0
  113. package/dist/core/extractors/ts-declaration-detail.d.ts.map +1 -0
  114. package/dist/core/extractors/ts-declaration-detail.js +266 -0
  115. package/dist/core/extractors/ts-declaration-detail.js.map +1 -0
  116. package/dist/core/extractors/types.js +53 -9
  117. package/dist/core/extractors/types.js.map +1 -1
  118. package/dist/graph/analysis-pass.d.ts +4 -1
  119. package/dist/graph/analysis-pass.d.ts.map +1 -1
  120. package/dist/graph/analysis-pass.js +4 -1
  121. package/dist/graph/analysis-pass.js.map +1 -1
  122. package/dist/graph-facts/dead-code.d.ts +62 -0
  123. package/dist/graph-facts/dead-code.d.ts.map +1 -0
  124. package/dist/graph-facts/dead-code.js +90 -0
  125. package/dist/graph-facts/dead-code.js.map +1 -0
  126. package/dist/graph-facts/dependency-calls.d.ts +86 -0
  127. package/dist/graph-facts/dependency-calls.d.ts.map +1 -0
  128. package/dist/graph-facts/dependency-calls.js +93 -0
  129. package/dist/graph-facts/dependency-calls.js.map +1 -0
  130. package/dist/graph-facts/index.d.ts +10 -0
  131. package/dist/graph-facts/index.d.ts.map +1 -0
  132. package/dist/graph-facts/index.js +10 -0
  133. package/dist/graph-facts/index.js.map +1 -0
  134. package/dist/graph-facts/maven-packages.d.ts +42 -0
  135. package/dist/graph-facts/maven-packages.d.ts.map +1 -0
  136. package/dist/graph-facts/maven-packages.js +133 -0
  137. package/dist/graph-facts/maven-packages.js.map +1 -0
  138. package/dist/graph-facts/reach.d.ts +203 -0
  139. package/dist/graph-facts/reach.d.ts.map +1 -0
  140. package/dist/graph-facts/reach.js +219 -0
  141. package/dist/graph-facts/reach.js.map +1 -0
  142. package/dist/graph-facts/removal-reach.d.ts +73 -0
  143. package/dist/graph-facts/removal-reach.d.ts.map +1 -0
  144. package/dist/graph-facts/removal-reach.js +64 -0
  145. package/dist/graph-facts/removal-reach.js.map +1 -0
  146. package/dist/index.d.ts +21 -6
  147. package/dist/index.d.ts.map +1 -1
  148. package/dist/index.js +20 -3
  149. package/dist/index.js.map +1 -1
  150. package/dist/navigation/go-graph.d.ts +68 -0
  151. package/dist/navigation/go-graph.d.ts.map +1 -0
  152. package/dist/navigation/go-graph.js +753 -0
  153. package/dist/navigation/go-graph.js.map +1 -0
  154. package/dist/navigation/index.d.ts +7 -1
  155. package/dist/navigation/index.d.ts.map +1 -1
  156. package/dist/navigation/index.js +6 -0
  157. package/dist/navigation/index.js.map +1 -1
  158. package/dist/navigation/java-entry-tables.d.ts +43 -0
  159. package/dist/navigation/java-entry-tables.d.ts.map +1 -0
  160. package/dist/navigation/java-entry-tables.js +56 -0
  161. package/dist/navigation/java-entry-tables.js.map +1 -0
  162. package/dist/navigation/java-graph.d.ts +64 -0
  163. package/dist/navigation/java-graph.d.ts.map +1 -0
  164. package/dist/navigation/java-graph.js +466 -0
  165. package/dist/navigation/java-graph.js.map +1 -0
  166. package/dist/navigation/navigation-index.d.ts +91 -2
  167. package/dist/navigation/navigation-index.d.ts.map +1 -1
  168. package/dist/navigation/navigation-index.js +372 -45
  169. package/dist/navigation/navigation-index.js.map +1 -1
  170. package/dist/navigation/python-graph.d.ts +73 -0
  171. package/dist/navigation/python-graph.d.ts.map +1 -0
  172. package/dist/navigation/python-graph.js +867 -0
  173. package/dist/navigation/python-graph.js.map +1 -0
  174. package/dist/navigation/ts-call-edges.d.ts +193 -0
  175. package/dist/navigation/ts-call-edges.d.ts.map +1 -0
  176. package/dist/navigation/ts-call-edges.js +2089 -0
  177. package/dist/navigation/ts-call-edges.js.map +1 -0
  178. package/dist/navigation/ts-entry-tables.d.ts +88 -0
  179. package/dist/navigation/ts-entry-tables.d.ts.map +1 -0
  180. package/dist/navigation/ts-entry-tables.js +50 -0
  181. package/dist/navigation/ts-entry-tables.js.map +1 -0
  182. package/dist/path-set/branches.d.ts +52 -0
  183. package/dist/path-set/branches.d.ts.map +1 -0
  184. package/dist/path-set/branches.js +124 -0
  185. package/dist/path-set/branches.js.map +1 -0
  186. package/dist/path-set/finding-diff.d.ts +63 -0
  187. package/dist/path-set/finding-diff.d.ts.map +1 -0
  188. package/dist/path-set/finding-diff.js +150 -0
  189. package/dist/path-set/finding-diff.js.map +1 -0
  190. package/dist/path-set/index.d.ts +18 -0
  191. package/dist/path-set/index.d.ts.map +1 -0
  192. package/dist/path-set/index.js +12 -0
  193. package/dist/path-set/index.js.map +1 -0
  194. package/dist/path-set/line-diff.d.ts +19 -0
  195. package/dist/path-set/line-diff.d.ts.map +1 -0
  196. package/dist/path-set/line-diff.js +98 -0
  197. package/dist/path-set/line-diff.js.map +1 -0
  198. package/dist/path-set/path-set.d.ts +88 -0
  199. package/dist/path-set/path-set.d.ts.map +1 -0
  200. package/dist/path-set/path-set.js +716 -0
  201. package/dist/path-set/path-set.js.map +1 -0
  202. package/dist/path-set/templates.d.ts +42 -0
  203. package/dist/path-set/templates.d.ts.map +1 -0
  204. package/dist/path-set/templates.js +119 -0
  205. package/dist/path-set/templates.js.map +1 -0
  206. package/dist/path-set/types.d.ts +195 -0
  207. package/dist/path-set/types.d.ts.map +1 -0
  208. package/dist/path-set/types.js +8 -0
  209. package/dist/path-set/types.js.map +1 -0
  210. package/dist/remedy-class/index.d.ts +12 -0
  211. package/dist/remedy-class/index.d.ts.map +1 -0
  212. package/dist/remedy-class/index.js +9 -0
  213. package/dist/remedy-class/index.js.map +1 -0
  214. package/dist/remedy-class/match.d.ts +165 -0
  215. package/dist/remedy-class/match.d.ts.map +1 -0
  216. package/dist/remedy-class/match.js +705 -0
  217. package/dist/remedy-class/match.js.map +1 -0
  218. package/dist/remedy-class/output-context.d.ts +25 -0
  219. package/dist/remedy-class/output-context.d.ts.map +1 -0
  220. package/dist/remedy-class/output-context.js +150 -0
  221. package/dist/remedy-class/output-context.js.map +1 -0
  222. package/dist/remedy-class/sha256.d.ts +18 -0
  223. package/dist/remedy-class/sha256.d.ts.map +1 -0
  224. package/dist/remedy-class/sha256.js +89 -0
  225. package/dist/remedy-class/sha256.js.map +1 -0
  226. package/dist/remedy-class/table.d.ts +130 -0
  227. package/dist/remedy-class/table.d.ts.map +1 -0
  228. package/dist/remedy-class/table.js +457 -0
  229. package/dist/remedy-class/table.js.map +1 -0
  230. package/dist/resolution/cross-file.d.ts +18 -0
  231. package/dist/resolution/cross-file.d.ts.map +1 -1
  232. package/dist/resolution/cross-file.js +194 -5
  233. package/dist/resolution/cross-file.js.map +1 -1
  234. package/dist/stable-ids/builder.d.ts +20 -0
  235. package/dist/stable-ids/builder.d.ts.map +1 -0
  236. package/dist/stable-ids/builder.js +65 -0
  237. package/dist/stable-ids/builder.js.map +1 -0
  238. package/dist/stable-ids/diff.d.ts +18 -0
  239. package/dist/stable-ids/diff.d.ts.map +1 -0
  240. package/dist/stable-ids/diff.js +37 -0
  241. package/dist/stable-ids/diff.js.map +1 -0
  242. package/dist/stable-ids/go.d.ts +28 -0
  243. package/dist/stable-ids/go.d.ts.map +1 -0
  244. package/dist/stable-ids/go.js +160 -0
  245. package/dist/stable-ids/go.js.map +1 -0
  246. package/dist/stable-ids/hash.d.ts +22 -0
  247. package/dist/stable-ids/hash.d.ts.map +1 -0
  248. package/dist/stable-ids/hash.js +167 -0
  249. package/dist/stable-ids/hash.js.map +1 -0
  250. package/dist/stable-ids/index.d.ts +30 -0
  251. package/dist/stable-ids/index.d.ts.map +1 -0
  252. package/dist/stable-ids/index.js +59 -0
  253. package/dist/stable-ids/index.js.map +1 -0
  254. package/dist/stable-ids/java.d.ts +28 -0
  255. package/dist/stable-ids/java.d.ts.map +1 -0
  256. package/dist/stable-ids/java.js +224 -0
  257. package/dist/stable-ids/java.js.map +1 -0
  258. package/dist/stable-ids/moves.d.ts +87 -0
  259. package/dist/stable-ids/moves.d.ts.map +1 -0
  260. package/dist/stable-ids/moves.js +222 -0
  261. package/dist/stable-ids/moves.js.map +1 -0
  262. package/dist/stable-ids/nodes.d.ts +32 -0
  263. package/dist/stable-ids/nodes.d.ts.map +1 -0
  264. package/dist/stable-ids/nodes.js +92 -0
  265. package/dist/stable-ids/nodes.js.map +1 -0
  266. package/dist/stable-ids/normalize.d.ts +35 -0
  267. package/dist/stable-ids/normalize.d.ts.map +1 -0
  268. package/dist/stable-ids/normalize.js +174 -0
  269. package/dist/stable-ids/normalize.js.map +1 -0
  270. package/dist/stable-ids/parse-errors.d.ts +24 -0
  271. package/dist/stable-ids/parse-errors.d.ts.map +1 -0
  272. package/dist/stable-ids/parse-errors.js +46 -0
  273. package/dist/stable-ids/parse-errors.js.map +1 -0
  274. package/dist/stable-ids/python.d.ts +27 -0
  275. package/dist/stable-ids/python.d.ts.map +1 -0
  276. package/dist/stable-ids/python.js +212 -0
  277. package/dist/stable-ids/python.js.map +1 -0
  278. package/dist/stable-ids/ts-parse-errors.d.ts +27 -0
  279. package/dist/stable-ids/ts-parse-errors.d.ts.map +1 -0
  280. package/dist/stable-ids/ts-parse-errors.js +75 -0
  281. package/dist/stable-ids/ts-parse-errors.js.map +1 -0
  282. package/dist/stable-ids/types.d.ts +106 -0
  283. package/dist/stable-ids/types.d.ts.map +1 -0
  284. package/dist/stable-ids/types.js +16 -0
  285. package/dist/stable-ids/types.js.map +1 -0
  286. package/dist/stable-ids/typescript.d.ts +30 -0
  287. package/dist/stable-ids/typescript.d.ts.map +1 -0
  288. package/dist/stable-ids/typescript.js +362 -0
  289. package/dist/stable-ids/typescript.js.map +1 -0
  290. package/dist/types/config.d.ts +9 -0
  291. package/dist/types/config.d.ts.map +1 -1
  292. package/dist/types/index.d.ts +53 -0
  293. package/dist/types/index.d.ts.map +1 -1
  294. package/dist/types/index.js.map +1 -1
  295. package/package.json +3 -3
@@ -0,0 +1 @@
1
+ {"version":3,"file":"python.js","sourceRoot":"","sources":["../../src/stable-ids/python.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ /**
2
+ * Which TypeScript parse errors can hide a declaration (cognium-ai #855).
3
+ *
4
+ * tree-sitter-typescript 0.23.2, the newest release, does not parse an array
5
+ * of an import type, `import('m').T[]`. It is valid TypeScript, and circle-ir's
6
+ * own passes use it. Recovery stays local:
7
+ *
8
+ * - in a parameter, field, property or return type the `[]` becomes an
9
+ * `ERROR` node inside the `type_annotation`;
10
+ * - in a `const x: import('m').T[]` / `type A = import('m').T[]` declaration
11
+ * the parser inserts a `MISSING ";"` after the import type and reads the
12
+ * `[]` (plus any initializer) as the next expression statement.
13
+ *
14
+ * Either way every declaration is still in the tree, so the file is not
15
+ * "partial" for stable ids or dead code. Any other error still is.
16
+ */
17
+ import type { Node } from '../core/parser.js';
18
+ import type { ParseErrorSite } from './types.js';
19
+ /**
20
+ * True when the tree has a parse error that could hide a declaration, which
21
+ * is what `StableIdFile.partial` means. False for a clean tree and for the
22
+ * import-type-array recoveries described above.
23
+ */
24
+ export declare function hasDeclarationHidingError(root: Node): boolean;
25
+ /** The first error, in source order, that could hide a declaration. */
26
+ export declare function firstDeclarationHidingError(root: Node): ParseErrorSite | undefined;
27
+ //# sourceMappingURL=ts-parse-errors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ts-parse-errors.d.ts","sourceRoot":"","sources":["../../src/stable-ids/ts-parse-errors.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AACH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AA0DjD;;;;GAIG;AACH,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAE7D;AAED,uEAAuE;AACvE,wBAAgB,2BAA2B,CAAC,IAAI,EAAE,IAAI,GAAG,cAAc,GAAG,SAAS,CAElF"}
@@ -0,0 +1,75 @@
1
+ import { firstParseError } from './parse-errors.js';
2
+ const TYPE_CONTEXTS = new Set(['type_annotation', 'type_arguments']);
3
+ const DECLARATIONS = new Set(['lexical_declaration', 'variable_declaration', 'type_alias_declaration']);
4
+ /** `import('m').T` as the grammar reads it: a member expression on an `import(...)` call. */
5
+ function isImportTypeExpression(n) {
6
+ if (!n || n.type !== 'member_expression')
7
+ return false;
8
+ const obj = n.childForFieldName('object');
9
+ return !!obj && obj.type === 'call_expression' && obj.childForFieldName('function')?.type === 'import';
10
+ }
11
+ function insideTypeContext(n) {
12
+ for (let p = n.parent; p; p = p.parent) {
13
+ if (TYPE_CONTEXTS.has(p.type))
14
+ return true;
15
+ if (p.type === 'statement_block' || p.type === 'program' || p.type === 'class_body')
16
+ return false;
17
+ }
18
+ return false;
19
+ }
20
+ /** The `[]` the parser split off: `[]` or `[] = <initializer>` as an expression statement. */
21
+ function isSplitArraySuffix(n) {
22
+ if (!n || n.type !== 'expression_statement')
23
+ return false;
24
+ const e = n.namedChild(0);
25
+ if (!e)
26
+ return false;
27
+ if (e.type === 'array')
28
+ return e.namedChildCount === 0;
29
+ if (e.type === 'assignment_expression') {
30
+ const left = e.childForFieldName('left');
31
+ return !!left && left.type === 'array_pattern' && left.namedChildCount === 0;
32
+ }
33
+ return false;
34
+ }
35
+ function isSplitImportArrayDeclaration(missing) {
36
+ const decl = missing.parent;
37
+ if (!decl || !DECLARATIONS.has(decl.type))
38
+ return false;
39
+ let typed;
40
+ if (decl.type === 'type_alias_declaration') {
41
+ typed = decl.childForFieldName('value');
42
+ }
43
+ else {
44
+ const declarators = decl.namedChildren.filter((c) => !!c && c.type === 'variable_declarator');
45
+ const last = declarators[declarators.length - 1];
46
+ const ann = last?.childForFieldName('type');
47
+ if (last?.childForFieldName('value'))
48
+ return false;
49
+ typed = ann?.namedChild(0) ?? null;
50
+ }
51
+ if (!isImportTypeExpression(typed))
52
+ return false;
53
+ const holder = decl.parent?.type === 'export_statement' ? decl.parent : decl;
54
+ return isSplitArraySuffix(holder.nextNamedSibling);
55
+ }
56
+ function isBenign(n) {
57
+ if (n.type === 'ERROR')
58
+ return insideTypeContext(n);
59
+ if (n.isMissing)
60
+ return n.type === ';' && isSplitImportArrayDeclaration(n);
61
+ return false;
62
+ }
63
+ /**
64
+ * True when the tree has a parse error that could hide a declaration, which
65
+ * is what `StableIdFile.partial` means. False for a clean tree and for the
66
+ * import-type-array recoveries described above.
67
+ */
68
+ export function hasDeclarationHidingError(root) {
69
+ return firstDeclarationHidingError(root) !== undefined;
70
+ }
71
+ /** The first error, in source order, that could hide a declaration. */
72
+ export function firstDeclarationHidingError(root) {
73
+ return firstParseError(root, isBenign);
74
+ }
75
+ //# sourceMappingURL=ts-parse-errors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ts-parse-errors.js","sourceRoot":"","sources":["../../src/stable-ids/ts-parse-errors.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,106 @@
1
+ /**
2
+ * Stable code ids (scheme `ids@0.1`).
3
+ *
4
+ * A declaration's id is derived from what names it — language, kind,
5
+ * qualified name and signature — never from its position in a file, so an
6
+ * edit elsewhere in the file (or a move of the whole declaration inside the
7
+ * file) leaves it unchanged. A body id adds a hash of the normalized body, so
8
+ * it changes when, and only when, the body changes. Node ids (CFG blocks, DFG
9
+ * defs and uses, call sites) are local indexes inside one body version.
10
+ *
11
+ * The scheme is versioned: every id-bearing record carries `scheme`, and the
12
+ * scheme string is part of every hash, so ids of two scheme versions can never
13
+ * collide or be mixed silently.
14
+ */
15
+ export declare const STABLE_ID_SCHEME: 'ids@0.1';
16
+ export type StableIdScheme = typeof STABLE_ID_SCHEME;
17
+ export type StableDeclKind = 'function' | 'method' | 'type' | 'field' | 'module';
18
+ /**
19
+ * - `unstable:duplicate` — another declaration in the same scope has the same
20
+ * kind, qualified name and signature; the second and later ones carry a
21
+ * `#n` suffix in source order, so inserting one before another re-keys it.
22
+ * - `unstable:anonymous` — an anonymous or nested function, keyed by its
23
+ * enclosing declaration plus its structural position there; an edit to the
24
+ * enclosing body may re-key it.
25
+ */
26
+ export type StableIdFlag = 'unstable:duplicate' | 'unstable:anonymous';
27
+ export interface StableDecl {
28
+ /** 128-bit declaration id, 26 lowercase base32 characters. */
29
+ id: string;
30
+ /** `<id>.<body_hash>` — changes when and only when the body changes. */
31
+ body_id: string;
32
+ /** 128-bit hash of the normalized body (whitespace, comments and formatting removed). */
33
+ body_hash: string;
34
+ kind: StableDeclKind;
35
+ /** The declaration's own name (`default` for an anonymous default export). */
36
+ name: string;
37
+ /**
38
+ * `<module>:<Outer>.<member>` for declarations; nested and anonymous
39
+ * functions append `/<name>@<path>` to their enclosing declaration's name.
40
+ */
41
+ qualified_name: string;
42
+ /** Canonical signature; parameter names never take part. */
43
+ signature: string;
44
+ /** The enclosing declaration's id (`null` only for the module itself). */
45
+ parent: string | null;
46
+ /** 1-based, inclusive. */
47
+ start_line: number;
48
+ end_line: number;
49
+ /** 0-based. */
50
+ start_column: number;
51
+ end_column: number;
52
+ flags: StableIdFlag[];
53
+ /** Number of normalized body tokens. Small bodies are weak evidence of a move. */
54
+ token_count: number;
55
+ /** The normalized body tokens; present only under `keepBodyTokens`. */
56
+ body_tokens?: string[];
57
+ }
58
+ export interface StableIdFile {
59
+ scheme: StableIdScheme;
60
+ file: string;
61
+ /** `typescript` for `.ts`/`.tsx`, `javascript` for `.js`/`.jsx`, `java` for `.java`, `python` for `.py`. */
62
+ language: 'javascript' | 'typescript' | 'java' | 'python' | 'go';
63
+ /** The module path every qualified name in this file starts with. */
64
+ module: string;
65
+ /** Source order, a parent before its members. The first entry is the module. */
66
+ decls: StableDecl[];
67
+ /** `true` when the parse had errors; ids under an error region may be missing. */
68
+ partial: boolean;
69
+ /** When `partial`: the first error, in source order, that made it so. */
70
+ parseError?: ParseErrorSite;
71
+ }
72
+ /**
73
+ * Where a file stopped parsing. `nodeKind` is `ERROR` for a region the
74
+ * grammar could not read, or `MISSING <token>` for a token the parser had to
75
+ * insert; `parent` is the syntax node it sits in. Lines and columns are 1-based.
76
+ */
77
+ export interface ParseErrorSite {
78
+ line: number;
79
+ column: number;
80
+ nodeKind: string;
81
+ parent: string;
82
+ }
83
+ export interface StableIdOptions {
84
+ /**
85
+ * The module path to use as-is. Otherwise it is derived by
86
+ * `moduleNameFor(filePath, options)`.
87
+ */
88
+ module?: string;
89
+ /** The package name (from the nearest `package.json`). */
90
+ packageName?: string;
91
+ /**
92
+ * The package's directory, relative to the repository root (`''` or absent
93
+ * for the root). `filePath` is expected repository-relative.
94
+ */
95
+ packageRoot?: string;
96
+ /** Keep `body_tokens` on each declaration (needed for similarity candidates). */
97
+ keepBodyTokens?: boolean;
98
+ }
99
+ /** Stable node ids parallel to the IR arrays they key; `null` where no body encloses the node. */
100
+ export interface StableNodeIds {
101
+ cfg_blocks: (string | null)[];
102
+ dfg_defs: (string | null)[];
103
+ dfg_uses: (string | null)[];
104
+ calls: (string | null)[];
105
+ }
106
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/stable-ids/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,eAAO,MAAM,gBAAgB,EAAG,SAAkB,CAAC;AACnD,MAAM,MAAM,cAAc,GAAG,OAAO,gBAAgB,CAAC;AAErD,MAAM,MAAM,cAAc,GAAG,UAAU,GAAG,QAAQ,GAAG,MAAM,GAAG,OAAO,GAAG,QAAQ,CAAC;AAEjF;;;;;;;GAOG;AACH,MAAM,MAAM,YAAY,GAAG,oBAAoB,GAAG,oBAAoB,CAAC;AAEvE,MAAM,WAAW,UAAU;IACzB,8DAA8D;IAC9D,EAAE,EAAE,MAAM,CAAC;IACX,wEAAwE;IACxE,OAAO,EAAE,MAAM,CAAC;IAChB,yFAAyF;IACzF,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,cAAc,CAAC;IACrB,8EAA8E;IAC9E,IAAI,EAAE,MAAM,CAAC;IACb;;;OAGG;IACH,cAAc,EAAE,MAAM,CAAC;IACvB,4DAA4D;IAC5D,SAAS,EAAE,MAAM,CAAC;IAClB,0EAA0E;IAC1E,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,0BAA0B;IAC1B,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,eAAe;IACf,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,YAAY,EAAE,CAAC;IACtB,kFAAkF;IAClF,WAAW,EAAE,MAAM,CAAC;IACpB,uEAAuE;IACvE,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;CACxB;AAED,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,cAAc,CAAC;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,4GAA4G;IAC5G,QAAQ,EAAE,YAAY,GAAG,YAAY,GAAG,MAAM,GAAG,QAAQ,GAAG,IAAI,CAAC;IACjE,qEAAqE;IACrE,MAAM,EAAE,MAAM,CAAC;IACf,gFAAgF;IAChF,KAAK,EAAE,UAAU,EAAE,CAAC;IACpB,kFAAkF;IAClF,OAAO,EAAE,OAAO,CAAC;IACjB,yEAAyE;IACzE,UAAU,CAAC,EAAE,cAAc,CAAC;CAC7B;AAED;;;;GAIG;AACH,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,eAAe;IAC9B;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,0DAA0D;IAC1D,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,iFAAiF;IACjF,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED,kGAAkG;AAClG,MAAM,WAAW,aAAa;IAC5B,UAAU,EAAE,CAAC,MAAM,GAAG,IAAI,CAAC,EAAE,CAAC;IAC9B,QAAQ,EAAE,CAAC,MAAM,GAAG,IAAI,CAAC,EAAE,CAAC;IAC5B,QAAQ,EAAE,CAAC,MAAM,GAAG,IAAI,CAAC,EAAE,CAAC;IAC5B,KAAK,EAAE,CAAC,MAAM,GAAG,IAAI,CAAC,EAAE,CAAC;CAC1B"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Stable code ids (scheme `ids@0.1`).
3
+ *
4
+ * A declaration's id is derived from what names it — language, kind,
5
+ * qualified name and signature — never from its position in a file, so an
6
+ * edit elsewhere in the file (or a move of the whole declaration inside the
7
+ * file) leaves it unchanged. A body id adds a hash of the normalized body, so
8
+ * it changes when, and only when, the body changes. Node ids (CFG blocks, DFG
9
+ * defs and uses, call sites) are local indexes inside one body version.
10
+ *
11
+ * The scheme is versioned: every id-bearing record carries `scheme`, and the
12
+ * scheme string is part of every hash, so ids of two scheme versions can never
13
+ * collide or be mixed silently.
14
+ */
15
+ export const STABLE_ID_SCHEME = 'ids@0.1';
16
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/stable-ids/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,MAAM,CAAC,MAAM,gBAAgB,GAAG,SAAkB,CAAC"}
@@ -0,0 +1,30 @@
1
+ /**
2
+ * `ids@0.1` declaration and body ids for TypeScript and JavaScript.
3
+ *
4
+ * Declarations: the module itself; functions (declarations, overload
5
+ * signatures, `const f = () => …`, `exports.f = function …`); classes,
6
+ * interfaces, type aliases and enums (kind `type`); methods and accessors;
7
+ * class fields, interface properties and module-level variables (kind
8
+ * `field`); namespaces and ambient modules (kind `module`). Functions and
9
+ * classes nested inside a body, and callbacks in top-level code, are keyed by
10
+ * their enclosing declaration plus a structural path and flagged
11
+ * `unstable:anonymous`.
12
+ *
13
+ * Bodies: a leaf declaration's body is its whole subtree minus its own name
14
+ * (so a rename keeps the body hash). A container's body (module, namespace,
15
+ * class, interface) is its own tokens with each member replaced by a
16
+ * placeholder of the member's kind, name and signature — editing a method body
17
+ * changes the method's body id, not the class's; adding, removing or renaming
18
+ * a member changes both.
19
+ */
20
+ import type { Tree } from '../core/parser.js';
21
+ import { type StableIdFile, type StableIdOptions } from './types.js';
22
+ /**
23
+ * The module path for a TypeScript/JavaScript file: the package name plus the
24
+ * path inside `src/` (or inside the package when it has no `src/`), extension
25
+ * removed; without a package name, the repository-relative path.
26
+ */
27
+ export declare function moduleNameFor(filePath: string, options?: StableIdOptions): string;
28
+ /** Derive `ids@0.1` ids from an already-parsed TypeScript/JavaScript tree. */
29
+ export declare function deriveTypeScriptIds(tree: Tree, filePath: string, language: 'javascript' | 'typescript', options?: StableIdOptions): StableIdFile;
30
+ //# sourceMappingURL=typescript.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"typescript.d.ts","sourceRoot":"","sources":["../../src/stable-ids/typescript.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,KAAK,EAAQ,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAIpD,OAAO,EAIL,KAAK,YAAY,EAEjB,KAAK,eAAe,EACrB,MAAM,YAAY,CAAC;AAmBpB;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,GAAE,eAAoB,GAAG,MAAM,CAOrF;AA2SD,8EAA8E;AAC9E,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,IAAI,EACV,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,YAAY,GAAG,YAAY,EACrC,OAAO,GAAE,eAAoB,GAC5B,YAAY,CAgBd"}