code-auditor-mcp 3.4.12 → 3.4.13

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 (245) hide show
  1. package/CHANGELOG.md +46 -1
  2. package/dist/analyzers/__verify_self_probe.d.ts +2 -0
  3. package/dist/analyzers/__verify_self_probe.d.ts.map +1 -0
  4. package/dist/analyzers/__verify_self_probe.js +5 -0
  5. package/dist/analyzers/__verify_self_probe.js.map +1 -0
  6. package/dist/analyzers/analyzerUtils.d.ts +34 -1
  7. package/dist/analyzers/analyzerUtils.d.ts.map +1 -1
  8. package/dist/analyzers/analyzerUtils.js +61 -22
  9. package/dist/analyzers/analyzerUtils.js.map +1 -1
  10. package/dist/analyzers/cross-language/APIContractAnalyzer.d.ts +18 -23
  11. package/dist/analyzers/cross-language/APIContractAnalyzer.d.ts.map +1 -1
  12. package/dist/analyzers/cross-language/APIContractAnalyzer.js +198 -186
  13. package/dist/analyzers/cross-language/APIContractAnalyzer.js.map +1 -1
  14. package/dist/analyzers/cross-language/DependencyGraphBuilder.d.ts +78 -55
  15. package/dist/analyzers/cross-language/DependencyGraphBuilder.d.ts.map +1 -1
  16. package/dist/analyzers/cross-language/DependencyGraphBuilder.js +244 -243
  17. package/dist/analyzers/cross-language/DependencyGraphBuilder.js.map +1 -1
  18. package/dist/analyzers/cross-language/SchemaValidator.d.ts +27 -37
  19. package/dist/analyzers/cross-language/SchemaValidator.d.ts.map +1 -1
  20. package/dist/analyzers/cross-language/SchemaValidator.js +314 -275
  21. package/dist/analyzers/cross-language/SchemaValidator.js.map +1 -1
  22. package/dist/analyzers/crossDomain/CrossDomainAnalyzer.d.ts +17 -46
  23. package/dist/analyzers/crossDomain/CrossDomainAnalyzer.d.ts.map +1 -1
  24. package/dist/analyzers/crossDomain/CrossDomainAnalyzer.js +620 -523
  25. package/dist/analyzers/crossDomain/CrossDomainAnalyzer.js.map +1 -1
  26. package/dist/analyzers/documentationAnalyzer.d.ts +7 -2
  27. package/dist/analyzers/documentationAnalyzer.d.ts.map +1 -1
  28. package/dist/analyzers/documentationAnalyzer.js +259 -198
  29. package/dist/analyzers/documentationAnalyzer.js.map +1 -1
  30. package/dist/analyzers/invariantsAnalyzer.d.ts.map +1 -1
  31. package/dist/analyzers/invariantsAnalyzer.js +57 -50
  32. package/dist/analyzers/invariantsAnalyzer.js.map +1 -1
  33. package/dist/analyzers/orm/adapterRegistry.d.ts +10 -0
  34. package/dist/analyzers/orm/adapterRegistry.d.ts.map +1 -1
  35. package/dist/analyzers/orm/adapterRegistry.js +10 -0
  36. package/dist/analyzers/orm/adapterRegistry.js.map +1 -1
  37. package/dist/analyzers/orm/drizzleAdapter.d.ts +22 -0
  38. package/dist/analyzers/orm/drizzleAdapter.d.ts.map +1 -1
  39. package/dist/analyzers/orm/drizzleAdapter.js +42 -44
  40. package/dist/analyzers/orm/drizzleAdapter.js.map +1 -1
  41. package/dist/analyzers/orm/prismaAdapter.d.ts +30 -0
  42. package/dist/analyzers/orm/prismaAdapter.d.ts.map +1 -1
  43. package/dist/analyzers/orm/prismaAdapter.js +30 -0
  44. package/dist/analyzers/orm/prismaAdapter.js.map +1 -1
  45. package/dist/analyzers/provenance.d.ts +62 -2
  46. package/dist/analyzers/provenance.d.ts.map +1 -1
  47. package/dist/analyzers/provenance.js +443 -349
  48. package/dist/analyzers/provenance.js.map +1 -1
  49. package/dist/analyzers/reactAnalyzer.d.ts +11 -0
  50. package/dist/analyzers/reactAnalyzer.d.ts.map +1 -1
  51. package/dist/analyzers/reactAnalyzer.js +188 -125
  52. package/dist/analyzers/reactAnalyzer.js.map +1 -1
  53. package/dist/analyzers/ruleRegistry.d.ts +110 -1
  54. package/dist/analyzers/ruleRegistry.d.ts.map +1 -1
  55. package/dist/analyzers/ruleRegistry.js +1714 -124
  56. package/dist/analyzers/ruleRegistry.js.map +1 -1
  57. package/dist/analyzers/ruleTiming.d.ts +54 -0
  58. package/dist/analyzers/ruleTiming.d.ts.map +1 -0
  59. package/dist/analyzers/ruleTiming.js +71 -0
  60. package/dist/analyzers/ruleTiming.js.map +1 -0
  61. package/dist/analyzers/universal/UniversalConventionsAnalyzer.d.ts +13 -0
  62. package/dist/analyzers/universal/UniversalConventionsAnalyzer.d.ts.map +1 -1
  63. package/dist/analyzers/universal/UniversalConventionsAnalyzer.js +362 -283
  64. package/dist/analyzers/universal/UniversalConventionsAnalyzer.js.map +1 -1
  65. package/dist/analyzers/universal/UniversalDRYAnalyzer.d.ts +26 -68
  66. package/dist/analyzers/universal/UniversalDRYAnalyzer.d.ts.map +1 -1
  67. package/dist/analyzers/universal/UniversalDRYAnalyzer.js +430 -391
  68. package/dist/analyzers/universal/UniversalDRYAnalyzer.js.map +1 -1
  69. package/dist/analyzers/universal/UniversalDataAccessAnalyzer.d.ts +17 -202
  70. package/dist/analyzers/universal/UniversalDataAccessAnalyzer.d.ts.map +1 -1
  71. package/dist/analyzers/universal/UniversalDataAccessAnalyzer.js +1073 -1121
  72. package/dist/analyzers/universal/UniversalDataAccessAnalyzer.js.map +1 -1
  73. package/dist/analyzers/universal/UniversalDocumentationAnalyzer.d.ts +3 -49
  74. package/dist/analyzers/universal/UniversalDocumentationAnalyzer.d.ts.map +1 -1
  75. package/dist/analyzers/universal/UniversalDocumentationAnalyzer.js +414 -340
  76. package/dist/analyzers/universal/UniversalDocumentationAnalyzer.js.map +1 -1
  77. package/dist/analyzers/universal/UniversalSOLIDAnalyzer.d.ts +48 -5
  78. package/dist/analyzers/universal/UniversalSOLIDAnalyzer.d.ts.map +1 -1
  79. package/dist/analyzers/universal/UniversalSOLIDAnalyzer.js +262 -134
  80. package/dist/analyzers/universal/UniversalSOLIDAnalyzer.js.map +1 -1
  81. package/dist/analyzers/universal/UniversalSchemaAnalyzer.d.ts +23 -214
  82. package/dist/analyzers/universal/UniversalSchemaAnalyzer.d.ts.map +1 -1
  83. package/dist/analyzers/universal/UniversalSchemaAnalyzer.js +139 -1521
  84. package/dist/analyzers/universal/UniversalSchemaAnalyzer.js.map +1 -1
  85. package/dist/analyzers/universal/UniversalStylesAnalyzer.d.ts +78 -79
  86. package/dist/analyzers/universal/UniversalStylesAnalyzer.d.ts.map +1 -1
  87. package/dist/analyzers/universal/UniversalStylesAnalyzer.js +613 -480
  88. package/dist/analyzers/universal/UniversalStylesAnalyzer.js.map +1 -1
  89. package/dist/analyzers/universal/schema/codeAnalysis.d.ts +307 -0
  90. package/dist/analyzers/universal/schema/codeAnalysis.d.ts.map +1 -0
  91. package/dist/analyzers/universal/schema/codeAnalysis.js +965 -0
  92. package/dist/analyzers/universal/schema/codeAnalysis.js.map +1 -0
  93. package/dist/analyzers/universal/schema/config.d.ts +31 -0
  94. package/dist/analyzers/universal/schema/config.d.ts.map +1 -0
  95. package/dist/analyzers/universal/schema/config.js +57 -0
  96. package/dist/analyzers/universal/schema/config.js.map +1 -0
  97. package/dist/analyzers/universal/schema/discovery.d.ts +167 -0
  98. package/dist/analyzers/universal/schema/discovery.d.ts.map +1 -0
  99. package/dist/analyzers/universal/schema/discovery.js +616 -0
  100. package/dist/analyzers/universal/schema/discovery.js.map +1 -0
  101. package/dist/analyzers/universal/schema/jsonSchema.d.ts +27 -0
  102. package/dist/analyzers/universal/schema/jsonSchema.d.ts.map +1 -0
  103. package/dist/analyzers/universal/schema/jsonSchema.js +368 -0
  104. package/dist/analyzers/universal/schema/jsonSchema.js.map +1 -0
  105. package/dist/analyzers/universal/schema/migrations.d.ts +90 -0
  106. package/dist/analyzers/universal/schema/migrations.d.ts.map +1 -0
  107. package/dist/analyzers/universal/schema/migrations.js +238 -0
  108. package/dist/analyzers/universal/schema/migrations.js.map +1 -0
  109. package/dist/analyzers/universal/schema/types.d.ts +131 -0
  110. package/dist/analyzers/universal/schema/types.d.ts.map +1 -0
  111. package/dist/analyzers/universal/schema/types.js +10 -0
  112. package/dist/analyzers/universal/schema/types.js.map +1 -0
  113. package/dist/analyzers/universal/schema/violations.d.ts +44 -0
  114. package/dist/analyzers/universal/schema/violations.d.ts.map +1 -0
  115. package/dist/analyzers/universal/schema/violations.js +54 -0
  116. package/dist/analyzers/universal/schema/violations.js.map +1 -0
  117. package/dist/auditRunner.d.ts.map +1 -1
  118. package/dist/auditRunner.js +89 -13
  119. package/dist/auditRunner.js.map +1 -1
  120. package/dist/cli.js +315 -40
  121. package/dist/cli.js.map +1 -1
  122. package/dist/config/configLoader.d.ts.map +1 -1
  123. package/dist/config/configLoader.js +9 -7
  124. package/dist/config/configLoader.js.map +1 -1
  125. package/dist/config/defaults.d.ts +12 -3
  126. package/dist/config/defaults.d.ts.map +1 -1
  127. package/dist/config/defaults.js +15 -5
  128. package/dist/config/defaults.js.map +1 -1
  129. package/dist/config/effectiveConfig.d.ts +75 -0
  130. package/dist/config/effectiveConfig.d.ts.map +1 -0
  131. package/dist/config/effectiveConfig.js +213 -0
  132. package/dist/config/effectiveConfig.js.map +1 -0
  133. package/dist/config/pathProfiles.d.ts +7 -4
  134. package/dist/config/pathProfiles.d.ts.map +1 -1
  135. package/dist/config/pathProfiles.js +8 -10
  136. package/dist/config/pathProfiles.js.map +1 -1
  137. package/dist/config/thresholdRationales.d.ts +45 -0
  138. package/dist/config/thresholdRationales.d.ts.map +1 -0
  139. package/dist/config/thresholdRationales.js +67 -0
  140. package/dist/config/thresholdRationales.js.map +1 -0
  141. package/dist/conventions/conventionMiner.d.ts.map +1 -1
  142. package/dist/conventions/conventionMiner.js +6 -2
  143. package/dist/conventions/conventionMiner.js.map +1 -1
  144. package/dist/enforcement/diffGate.d.ts +55 -0
  145. package/dist/enforcement/diffGate.d.ts.map +1 -0
  146. package/dist/enforcement/diffGate.js +136 -0
  147. package/dist/enforcement/diffGate.js.map +1 -0
  148. package/dist/enforcement/gate.d.ts +36 -0
  149. package/dist/enforcement/gate.d.ts.map +1 -0
  150. package/dist/enforcement/gate.js +72 -0
  151. package/dist/enforcement/gate.js.map +1 -0
  152. package/dist/enforcement/suppressions.d.ts +41 -0
  153. package/dist/enforcement/suppressions.d.ts.map +1 -0
  154. package/dist/enforcement/suppressions.js +170 -0
  155. package/dist/enforcement/suppressions.js.map +1 -0
  156. package/dist/fingerprint.d.ts.map +1 -1
  157. package/dist/fingerprint.js +4 -1
  158. package/dist/fingerprint.js.map +1 -1
  159. package/dist/invariants/ruleEngine.d.ts +3 -4
  160. package/dist/invariants/ruleEngine.d.ts.map +1 -1
  161. package/dist/invariants/ruleEngine.js +2 -2
  162. package/dist/invariants/ruleEngine.js.map +1 -1
  163. package/dist/languages/LanguageOrchestrator.d.ts +14 -0
  164. package/dist/languages/LanguageOrchestrator.d.ts.map +1 -1
  165. package/dist/languages/LanguageOrchestrator.js +93 -55
  166. package/dist/languages/LanguageOrchestrator.js.map +1 -1
  167. package/dist/languages/LanguageRegistry.d.ts +8 -0
  168. package/dist/languages/LanguageRegistry.d.ts.map +1 -1
  169. package/dist/languages/LanguageRegistry.js +8 -0
  170. package/dist/languages/LanguageRegistry.js.map +1 -1
  171. package/dist/languages/RuntimeManager.d.ts +82 -60
  172. package/dist/languages/RuntimeManager.d.ts.map +1 -1
  173. package/dist/languages/RuntimeManager.js +404 -349
  174. package/dist/languages/RuntimeManager.js.map +1 -1
  175. package/dist/languages/UniversalAnalyzer.d.ts +51 -6
  176. package/dist/languages/UniversalAnalyzer.d.ts.map +1 -1
  177. package/dist/languages/UniversalAnalyzer.js +127 -88
  178. package/dist/languages/UniversalAnalyzer.js.map +1 -1
  179. package/dist/languages/adapterBridge.d.ts +36 -0
  180. package/dist/languages/adapterBridge.d.ts.map +1 -1
  181. package/dist/languages/adapterBridge.js +89 -35
  182. package/dist/languages/adapterBridge.js.map +1 -1
  183. package/dist/languages/go/GoAdapter.d.ts +66 -23
  184. package/dist/languages/go/GoAdapter.d.ts.map +1 -1
  185. package/dist/languages/go/GoAdapter.js +553 -474
  186. package/dist/languages/go/GoAdapter.js.map +1 -1
  187. package/dist/languages/tree-sitter/TreeSitterCssAdapter.d.ts +33 -4
  188. package/dist/languages/tree-sitter/TreeSitterCssAdapter.d.ts.map +1 -1
  189. package/dist/languages/tree-sitter/TreeSitterCssAdapter.js +101 -66
  190. package/dist/languages/tree-sitter/TreeSitterCssAdapter.js.map +1 -1
  191. package/dist/languages/tree-sitter/converter.d.ts +18 -0
  192. package/dist/languages/tree-sitter/converter.d.ts.map +1 -1
  193. package/dist/languages/tree-sitter/converter.js +18 -0
  194. package/dist/languages/tree-sitter/converter.js.map +1 -1
  195. package/dist/languages/tree-sitter/parser.d.ts +39 -2
  196. package/dist/languages/tree-sitter/parser.d.ts.map +1 -1
  197. package/dist/languages/tree-sitter/parser.js +93 -12
  198. package/dist/languages/tree-sitter/parser.js.map +1 -1
  199. package/dist/languages/types.d.ts +67 -2
  200. package/dist/languages/types.d.ts.map +1 -1
  201. package/dist/languages/typescript/TreeSitterTypeScriptAdapter.d.ts +253 -72
  202. package/dist/languages/typescript/TreeSitterTypeScriptAdapter.d.ts.map +1 -1
  203. package/dist/languages/typescript/TreeSitterTypeScriptAdapter.js +1419 -923
  204. package/dist/languages/typescript/TreeSitterTypeScriptAdapter.js.map +1 -1
  205. package/dist/mcp-tools-shared.d.ts.map +1 -1
  206. package/dist/mcp-tools-shared.js.map +1 -1
  207. package/dist/pipeline.d.ts +13 -5
  208. package/dist/pipeline.d.ts.map +1 -1
  209. package/dist/pipeline.js +381 -200
  210. package/dist/pipeline.js.map +1 -1
  211. package/dist/pipelineAdapters.d.ts +3 -8
  212. package/dist/pipelineAdapters.d.ts.map +1 -1
  213. package/dist/pipelineAdapters.js +149 -94
  214. package/dist/pipelineAdapters.js.map +1 -1
  215. package/dist/presets/presets.d.ts +54 -0
  216. package/dist/presets/presets.d.ts.map +1 -0
  217. package/dist/presets/presets.js +181 -0
  218. package/dist/presets/presets.js.map +1 -0
  219. package/dist/reporting/sarifReportGenerator.d.ts.map +1 -1
  220. package/dist/reporting/sarifReportGenerator.js +0 -2
  221. package/dist/reporting/sarifReportGenerator.js.map +1 -1
  222. package/dist/ruleAliases.d.ts +67 -0
  223. package/dist/ruleAliases.d.ts.map +1 -0
  224. package/dist/ruleAliases.js +79 -0
  225. package/dist/ruleAliases.js.map +1 -0
  226. package/dist/styles/cssAstExtractor.d.ts.map +1 -1
  227. package/dist/styles/cssAstExtractor.js +78 -18
  228. package/dist/styles/cssAstExtractor.js.map +1 -1
  229. package/dist/styles/styleIndexer.js +10 -1
  230. package/dist/styles/styleIndexer.js.map +1 -1
  231. package/dist/styles/tailwindConfigLoader.d.ts +8 -6
  232. package/dist/styles/tailwindConfigLoader.d.ts.map +1 -1
  233. package/dist/styles/tailwindConfigLoader.js +61 -15
  234. package/dist/styles/tailwindConfigLoader.js.map +1 -1
  235. package/dist/styles/tailwindUtilityExpander.d.ts.map +1 -1
  236. package/dist/styles/tailwindUtilityExpander.js +13 -1
  237. package/dist/styles/tailwindUtilityExpander.js.map +1 -1
  238. package/dist/types.d.ts +181 -1
  239. package/dist/types.d.ts.map +1 -1
  240. package/dist/types.js +8 -0
  241. package/dist/types.js.map +1 -1
  242. package/package.json +5 -3
  243. package/plugin/hooks/hooks.json +1 -1
  244. package/plugin/scripts/hook-audit.sh +25 -7
  245. package/plugin/skills/code-auditor/SKILL.md +5 -5
@@ -3,9 +3,106 @@
3
3
  *
4
4
  * Uses web-tree-sitter WASM parsers behind the adapter seam — no TypeScript compiler API.
5
5
  * Supports .ts, .tsx, .js, and .jsx files.
6
+ *
7
+ * The adapter is split across a leaf-first inheritance chain (Spec-33
8
+ * interface-segregation): each link contributes a cohesive slice of the
9
+ * adapter so no single class exceeds the SOLID class-size threshold.
10
+ * Ancestors hold the tree-traversal, extraction, and scope-resolution
11
+ * primitives; descendants compose them into the public LanguageAdapter
12
+ * surface. The mutually-recursive cross-function safety cluster is
13
+ * co-located in TsSafetyAnalysis (TypeScript forbids a base class calling a
14
+ * subclass method, so those must live in one class).
6
15
  */
7
- import type { AST, ASTNode, ClassInfo, DynamicPart, ExportInfo, FunctionInfo, ImportInfo, InterfaceInfo, LanguageAdapter, NodePattern, ResolvedConstant, SourceLocation } from '../types.js';
8
- export declare class TreeSitterTypeScriptAdapter implements LanguageAdapter {
16
+ import type { Node as TreeSitterNode } from 'web-tree-sitter';
17
+ import type { AST, ASTNode, ClassInfo, DynamicPart, ExportInfo, FunctionInfo, ImportInfo, InterfaceInfo, LanguageAdapter, NodePattern, ParameterInfo, ParseError, PropertyInfo, ResolvedConstant, SourceLocation } from '../types.js';
18
+ /** A raw import/require record extracted directly from a syntax tree. */
19
+ interface RawImport {
20
+ moduleSpecifier: string;
21
+ isStatic: boolean;
22
+ isDynamic: boolean;
23
+ isRequire: boolean;
24
+ line: number;
25
+ }
26
+ declare class TsTraversalHelpers {
27
+ /** Walk all ASTNodes in a tree (depth-first). */
28
+ protected walk(node: ASTNode, visitor: (node: ASTNode) => void): void;
29
+ /** Walk all TreeSitterNodes in a tree (depth-first). */
30
+ protected walkRaw(node: TreeSitterNode, visitor: (node: TreeSitterNode) => void): void;
31
+ /** Collect ERROR nodes from tree-sitter's error recovery. */
32
+ protected collectErrors(node: TreeSitterNode, errors: ParseError[]): void;
33
+ /** Find first child of node matching one of the given types. */
34
+ protected getChildByType(node: TreeSitterNode, type: string): TreeSitterNode | null;
35
+ /** Find the first named child matching one of the given types. */
36
+ protected findFirstNamedChild(node: TreeSitterNode, types: string | string[]): TreeSitterNode | null;
37
+ /** Check if node has a direct child (named or anonymous) with the given text. */
38
+ protected hasChild(node: TreeSitterNode, text: string): boolean;
39
+ /** Get the operator text from a binary expression node. */
40
+ protected getOperator(node: TreeSitterNode): string | null;
41
+ /** Check if a node has an `async` modifier keyword. */
42
+ protected hasModifier(node: TreeSitterNode, modifier: string): boolean;
43
+ /** Check if a node is under an export_statement. */
44
+ protected isNodeExported(node: TreeSitterNode): boolean;
45
+ protected extractParameters(node: TreeSitterNode, sourceCode: string): ParameterInfo[];
46
+ /** Extract ordered parameter names from a function node. */
47
+ protected getParamNames(fnNode: ASTNode): string[];
48
+ /** Wrap a raw tree-sitter node into a detached ASTNode for local analysis. */
49
+ protected wrapRaw(raw: TreeSitterNode | null): ASTNode | null;
50
+ /** Return the ASTNodes for a call expression's arguments. */
51
+ protected getCallArgASTNodes(callNode: ASTNode): ASTNode[];
52
+ }
53
+ declare class TsNameDocumentation extends TsTraversalHelpers {
54
+ /** Extract the name/identifier from a tree-sitter TreeSitterNode. */
55
+ protected extractName(node: TreeSitterNode): string | null;
56
+ /** Return `node`'s `name` field text, else the first named child whose type
57
+ * is in `fallbackTypes` (stripping quotes from `string` children). */
58
+ protected resolveNameField(node: TreeSitterNode, fallbackTypes: string[]): string | null;
59
+ /** Extract a type annotation string from a node. */
60
+ protected extractTypeAnnotation(node: TreeSitterNode): string | null;
61
+ /** Extract JSDoc or leading comment from a node. */
62
+ protected extractDocumentation(node: TreeSitterNode): string | null;
63
+ /** When `parent` is an `export_statement`, find an adjacent /** JSDoc comment
64
+ * at the grandparent level. Adjacency guard (comment ends on line L, wrapper
65
+ * starts on L+1) prevents misattributing file-level comments. */
66
+ private findExportStatementDoc;
67
+ /** Strip comment syntax markers. */
68
+ protected cleanCommentText(comment: string): string;
69
+ /**
70
+ * Cyclomatic complexity: count decision points + 1.
71
+ * Decision points: if, for, while, do, switch_case, ternary, &&, ||.
72
+ */
73
+ protected calculateCyclomaticComplexity(node: TreeSitterNode): number;
74
+ /** Match an ASTNode against a NodePattern. */
75
+ protected matchesPattern(node: ASTNode, pattern: NodePattern): boolean;
76
+ }
77
+ declare class TsExtraction extends TsNameDocumentation {
78
+ protected buildFunctionInfo(node: TreeSitterNode, sourceCode: string): FunctionInfo | null;
79
+ protected buildClassInfo(node: TreeSitterNode, sourceCode: string): ClassInfo | null;
80
+ /** Build method/property lists from a class body's members. */
81
+ private buildClassMembers;
82
+ protected buildPropertyInfo(node: TreeSitterNode): PropertyInfo | null;
83
+ protected buildImportInfo(node: TreeSitterNode, _sourceCode: string): ImportInfo | null;
84
+ /** Recursively collect import specifiers (default / named / namespace).
85
+ * Tree-sitter nests named imports inside import_clause -> named_imports. */
86
+ private collectImportSpecifiers;
87
+ protected buildExportInfo(node: TreeSitterNode, _sourceCode: string): ExportInfo | null;
88
+ /** Build the ExportInfo for an `export { a, b } [from '...']` statement. */
89
+ private buildNamedExport;
90
+ protected buildInterfaceInfo(node: TreeSitterNode, _sourceCode: string): InterfaceInfo | null;
91
+ /** Build method/property member descriptors from an interface body. */
92
+ private buildInterfaceMembers;
93
+ /** Get the enclosing class name for a method. */
94
+ protected getEnclosingClassName(node: TreeSitterNode): string | undefined;
95
+ /** Collect static imports, dynamic `import()`, and `require()` calls. */
96
+ protected collectRawImport(node: TreeSitterNode, results: RawImport[]): void;
97
+ /** Push a `import('...')` or `require('...')` record for a call expression. */
98
+ protected pushCallImport(node: TreeSitterNode, results: RawImport[], isRequire: boolean): void;
99
+ /** Collect the exported symbol(s) declared by a single `export_statement`. */
100
+ protected collectExportedSymbol(node: TreeSitterNode, symbols: Array<{
101
+ name: string;
102
+ line: number;
103
+ }>): void;
104
+ }
105
+ declare class TsPublicApi extends TsExtraction {
9
106
  readonly name = "typescript";
10
107
  readonly fileExtensions: string[];
11
108
  supportsFile(filePath: string): boolean;
@@ -22,6 +119,8 @@ export declare class TreeSitterTypeScriptAdapter implements LanguageAdapter {
22
119
  extractClasses(ast: AST): ClassInfo[];
23
120
  extractImports(ast: AST): ImportInfo[];
24
121
  extractExports(ast: AST): ExportInfo[];
122
+ }
123
+ declare class TsPredicatesOptional extends TsPublicApi {
25
124
  isClass(node: ASTNode): boolean;
26
125
  isFunction(node: ASTNode): boolean;
27
126
  isMethod(node: ASTNode): boolean;
@@ -35,59 +134,44 @@ export declare class TreeSitterTypeScriptAdapter implements LanguageAdapter {
35
134
  getDocumentation(node: ASTNode): string | null;
36
135
  getComplexity(node: ASTNode): number;
37
136
  extractInterfaces(ast: AST): InterfaceInfo[];
38
- extractRawImports(_filePath: string, content: string): Array<{
39
- moduleSpecifier: string;
40
- isStatic: boolean;
41
- isDynamic: boolean;
42
- isRequire: boolean;
43
- line: number;
44
- }>;
137
+ extractRawImports(_filePath: string, content: string): RawImport[];
45
138
  extractExportedSymbols(ast: AST): Array<{
46
139
  name: string;
47
140
  line: number;
48
141
  }>;
49
- /** Walk all ASTNodes in a tree (depth-first). */
50
- private walk;
51
- /** Walk all TreeSitterNodes in a tree (depth-first). */
52
- private walkRaw;
53
- /** Collect ERROR nodes from tree-sitter's error recovery. */
54
- private collectErrors;
55
- /** Match an ASTNode against a NodePattern. */
56
- private matchesPattern;
57
- /** Extract the name/identifier from a tree-sitter TreeSitterNode. */
58
- private extractName;
59
- /** Extract a type annotation string from a node. */
60
- private extractTypeAnnotation;
61
- /** Extract JSDoc or leading comment from a node. */
62
- private extractDocumentation;
63
- /** Strip comment syntax markers. */
64
- private cleanCommentText;
65
- /**
66
- * Cyclomatic complexity: count decision points + 1.
67
- * Decision points: if, for, while, do, switch_case, ternary, &&, ||.
68
- */
69
- private calculateCyclomaticComplexity;
70
- /** Get the operator text from a binary expression node. */
71
- private getOperator;
72
- private buildFunctionInfo;
73
- private buildClassInfo;
74
- private buildPropertyInfo;
75
- private buildImportInfo;
76
- private buildExportInfo;
77
- private buildInterfaceInfo;
78
- private extractParameters;
79
- /** Check if a node has an `async` modifier keyword. */
80
- private hasModifier;
81
- /** Check if a node is under an export_statement. */
82
- private isNodeExported;
83
- /** Get the enclosing class name for a method. */
84
- private getEnclosingClassName;
85
- /** Find first child of node matching one of the given types. */
86
- private getChildByType;
87
- /** Find the first named child matching one of the given types. */
88
- private findFirstNamedChild;
89
- /** Check if node has a direct child (named or anonymous) with the given text. */
90
- private hasChild;
142
+ }
143
+ declare class TsScopeStatic extends TsPredicatesOptional {
144
+ /** Determine whether a tree-sitter value node represents a static (compile-time
145
+ * constant) expression — no variables, function calls, or runtime evaluation. */
146
+ protected isStaticValueNode(node: TreeSitterNode | null): boolean;
147
+ /** Walk the parent chain to find the enclosing function scope node. */
148
+ protected findEnclosingScope(node: ASTNode, ast: AST): ASTNode | null;
149
+ /** Walk the parent chain from a variable_declarator to find an enclosing
150
+ * for_of_statement or for_in_statement, if any. Returns the for-statement
151
+ * node, or null if the declarator is not a loop variable. */
152
+ protected findEnclosingForStatement(declNode: ASTNode): ASTNode | null;
153
+ /** Find a variable_declarator node within scopeRoot whose name is targetName. */
154
+ protected findDeclarationInScope(scopeRoot: ASTNode, targetName: string): ASTNode | null;
155
+ /** Resolve an identifier to an imported symbol. Handles named imports
156
+ * (`import { FOO } from …`) and default imports (`import FOO from …`).
157
+ * Imported symbols are compile-time constants — they are resolved at link
158
+ * time, not at runtime, so user input cannot reach them through import
159
+ * bindings (ES module bindings are immutable and live-read-only). */
160
+ protected resolveImportConstant(name: string, ast: AST): ResolvedConstant | null;
161
+ /** Check if identifier targetName is reassigned in scope after declLine.
162
+ * Handles both plain assignment (`x = …`) and augmented assignment
163
+ * (`x += …`, `x -= …`, etc.) — the latter accumulates into a string the
164
+ * same way `x = x + …` does, so a variable built up with `+=` is just as
165
+ * runtime-dependent as one reassigned with `=`. */
166
+ protected hasReassignment(scopeRoot: ASTNode, targetName: string, declLine: number): boolean;
167
+ /** Find a function declaration (named or arrow-assigned) by name in the file. */
168
+ protected findFunctionDeclaration(name: string, ast: AST): ASTNode | null;
169
+ /** Extract a function's name (named functions and arrow-function assignments). */
170
+ protected getFunctionName(node: ASTNode): string | null;
171
+ /** Find all call sites of a named function in the file. */
172
+ protected findCallSites(fnName: string, ast: AST): ASTNode[];
173
+ }
174
+ declare class TsDynamicStringConstruction extends TsScopeStatic {
91
175
  /**
92
176
  * Returns true when the node is a dynamically-constructed string in TS/JS:
93
177
  * - template_string with template_substitution children
@@ -103,6 +187,17 @@ export declare class TreeSitterTypeScriptAdapter implements LanguageAdapter {
103
187
  * and non-literal arguments for concat calls.
104
188
  */
105
189
  getDynamicParts(node: ASTNode, sourceCode: string): DynamicPart[];
190
+ /** For a non-`.concat()` call, recurse into the first argument that is itself
191
+ * a dynamic string construction; null when there is none (or it's .concat). */
192
+ private getNestedDynamicCallParts;
193
+ /** `.concat()` (or a call with no nested dynamic arg): every argument is dynamic. */
194
+ private getCallArgParts;
195
+ /** Dynamic parts from a template string's `${…}` substitutions. */
196
+ private getTemplateStringParts;
197
+ /** Dynamic parts from a `+`-concatenation of strings and expressions. */
198
+ private getBinaryExpressionParts;
199
+ }
200
+ declare class TsConstantResolution extends TsDynamicStringConstruction {
106
201
  /**
107
202
  * Resolves a local const/let/var declaration for an identifier node.
108
203
  * Searches within the enclosing function scope for the declaration site.
@@ -110,26 +205,112 @@ export declare class TreeSitterTypeScriptAdapter implements LanguageAdapter {
110
205
  * or cannot be statically resolved.
111
206
  */
112
207
  resolveLocalConstant(identifierNode: ASTNode, ast: AST, sourceCode: string): ResolvedConstant | null;
113
- /** Determine whether a tree-sitter value node represents a static (compile-time
114
- * constant) expression — no variables, function calls, or runtime evaluation. */
115
- private isStaticValueNode;
116
- /** Walk the parent chain to find the enclosing function scope node. */
117
- private findEnclosingScope;
118
- /** Walk the parent chain from a variable_declarator to find an enclosing
119
- * for_of_statement or for_in_statement, if any. Returns the for-statement
120
- * node, or null if the declarator is not a loop variable. */
121
- private findEnclosingForStatement;
122
- /** Find a variable_declarator node within scopeRoot whose name is targetName. */
123
- private findDeclarationInScope;
124
- /** Resolve an identifier to an imported symbol. Handles named imports
125
- * (`import { FOO } from …`) and default imports (`import FOO from …`).
126
- * Imported symbols are compile-time constants — they are resolved at link
127
- * time, not at runtime, so user input cannot reach them through import
128
- * bindings (ES module bindings are immutable and live-read-only). */
129
- private resolveImportConstant;
130
- /** Check if identifier targetName is reassigned in scope after declLine. */
131
- private hasReassignment;
132
- /** Helper: extract text of arguments from a call_expression node. */
133
- private getCallArguments;
208
+ /** Determine static-ness and init text from a resolved declaration node.
209
+ *
210
+ * "Static" means the value is a compile-time constant that is never
211
+ * reassigned. String literals and substitution-free template strings are
212
+ * constants regardless of `?` placeholders — SQL fragment constants (WHERE
213
+ * clauses, column lists) are as static as parameterised query strings.
214
+ *
215
+ * The value is extracted from the AST rather than regex so that multiline
216
+ * declarations survive (`.` doesn't match `\n`). */
217
+ private resolveFromDeclaration;
218
+ /** Resolve `idName` to a declaration in the enclosing scope (falling back to
219
+ * the program-level scope), or when no local declaration exists — to an
220
+ * imported constant or a `for…in`/`for…of` loop variable. Returns either a
221
+ * declaration node or a fully resolved constant. */
222
+ private resolveDeclarationOrConstant;
223
+ /** Trace a `for…in`/`for…of` loop variable whose identifier appears directly
224
+ * under a `for_in_statement` `left` child. tree-sitter-typescript (v0.x)
225
+ * parses both loop forms as `for_in_statement`; the loop variable is a bare
226
+ * `identifier` child — NOT wrapped in `variable_declarator` /
227
+ * `lexical_declaration`. Walk up from the identifier to a `for_in_statement`
228
+ * and trace through the iterable to determine static-ness.
229
+ * const TABLES = ["a", "b"];
230
+ * for (const table of TABLES) { … `${table}` … }
231
+ */
232
+ protected traceForInLoopVariable(identifierNode: ASTNode, idName: string, sourceCode: string, scope: ScopeContext): ResolvedConstant | null;
233
+ /** Trace a for-of / for-in loop variable whose declarator has no `value` field
234
+ * (the iterable is on the for-statement's `right` child). Returns true when
235
+ * all possible loop values are known compile-time constants. */
236
+ protected traceForOfLoopVariable(declNode: ASTNode, scopeRoot: ASTNode, enclosing: ASTNode | null, ast: AST): boolean;
237
+ /** Trace an identifier value (e.g. `table` ← `tables`) to its linked
238
+ * declaration. Returns true when the linked initializer is a static
239
+ * constant and is never reassigned. */
240
+ protected traceLinkedIdentifier(valueNode: TreeSitterNode, idName: string, scope: ScopeContext): boolean;
241
+ /** Extract the initializer text from a declaration: the value node when
242
+ * present, otherwise a regex fallback over the full declaration text. */
243
+ protected extractInitText(valueNode: TreeSitterNode | null, declNode: ASTNode, sourceCode: string): string;
244
+ /** True when the identifier names the enclosing function's parameter AND a
245
+ * guard call (assert/validate/check/ensure/guard-prefixed) is invoked on it
246
+ * before its use. Guards throw on invalid input, so a parameter that has
247
+ * passed one cannot carry unvalidated attacker data past the check. */
248
+ protected isGuardValidatedParameter(identifierNode: ASTNode, ast: AST): boolean;
249
+ }
250
+ /** Mutable traversal state threaded through the `isSafe*` recursion: `seen`
251
+ * guards cycles, `seenFns` guards mutually-recursive function calls, and
252
+ * `paramMap` binds function parameters to the values passed at the current
253
+ * call site so we can trace through local helper functions
254
+ * (`qualifiedIconRemote(alias)` with a literal alias). Bundled into a single
255
+ * context object so the whole family shares one signature instead of six
256
+ * positional parameters each. */
257
+ interface SafetyContext {
258
+ ast: AST;
259
+ sourceCode: string;
260
+ seen: Set<number>;
261
+ seenFns: Set<string>;
262
+ paramMap: Map<string, ASTNode | null>;
263
+ }
264
+ /** Scope-resolution inputs shared by the constant-tracing helpers: the local
265
+ * scope root, the enclosing function scope (or null at module level), and the
266
+ * full AST for program-level fallback searches. */
267
+ interface ScopeContext {
268
+ scopeRoot: ASTNode;
269
+ enclosing: ASTNode | null;
270
+ ast: AST;
271
+ }
272
+ declare class TsSafetyAnalysis extends TsConstantResolution {
273
+ /** Public entry point (LanguageAdapter.isSafeInterpolation). */
274
+ isSafeInterpolation(node: ASTNode, ast: AST, sourceCode: string): boolean;
275
+ /** Recursive safety check against the traversal context in `ctx`. */
276
+ protected isSafeExpression(node: ASTNode | null, ctx: SafetyContext): boolean;
277
+ /** Evaluate a single expression node's safety, dispatching on its AST type. */
278
+ private evaluateSafeExpression;
279
+ /** Handle structural nodes that recurse into child expressions (parenthesized
280
+ * wrappers, type casts/assertions, ternaries, binary ops). Returns `null`
281
+ * when the node is not structural, so the caller can fall through to the
282
+ * leaf switch. */
283
+ private evaluateStructuralExpression;
284
+ /** Identifier safety: a bound parameter, compile-time constant, or validated
285
+ * parameter at all call sites. */
286
+ private isSafeIdentifier;
287
+ /** A template string is safe only if every `${…}` substitution is safe. */
288
+ private isSafeTemplateString;
289
+ /** An array literal is safe only if every element is safe. */
290
+ private isSafeArray;
291
+ /** Decide whether a call expression is provably safe to embed in SQL. */
292
+ protected isSafeCallExpression(node: ASTNode, ctx: SafetyContext): boolean;
293
+ /** True when the node is `.join(...)` over `.map(...)` of a static array whose
294
+ * callback body is safe for every element. */
295
+ protected isSafeMapJoin(node: ASTNode, ctx: SafetyContext): boolean;
296
+ /** True when the node is a call to a local (in-file) function whose body is
297
+ * safe under the values passed at this call site. */
298
+ protected isLocalFunctionCallSafe(node: ASTNode, ctx: SafetyContext): boolean;
299
+ /** Check a function's body returns only safe values, under the `paramMap`
300
+ * already bound in `ctx` to the values passed at the call site. */
301
+ protected isBodySafeUnderParams(fnNode: ASTNode, ctx: SafetyContext): boolean;
302
+ /** True when the identifier names the enclosing function's parameter AND every
303
+ * in-file call site of that function passes a provably-safe value for that
304
+ * parameter position. */
305
+ protected isParamSafeAtAllCallSites(identifierNode: ASTNode, ctx: SafetyContext): boolean;
306
+ /** True when the identifier names a local variable whose initializer is a
307
+ * provably-safe expression and which is never reassigned. */
308
+ protected isDeclarationValueSafe(identifierNode: ASTNode, ctx: SafetyContext): boolean;
309
+ }
310
+ /**
311
+ * Tree sitter type script adapter.
312
+ */
313
+ export declare class TreeSitterTypeScriptAdapter extends TsSafetyAnalysis implements LanguageAdapter {
134
314
  }
315
+ export {};
135
316
  //# sourceMappingURL=TreeSitterTypeScriptAdapter.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"TreeSitterTypeScriptAdapter.d.ts","sourceRoot":"","sources":["../../../src/languages/typescript/TreeSitterTypeScriptAdapter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"TreeSitterTypeScriptAdapter.d.ts","sourceRoot":"","sources":["../../../src/languages/typescript/TreeSitterTypeScriptAdapter.ts"],"names":[],"mappings":"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"}