code-auditor-mcp 3.4.11 → 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.
- package/.claude-plugin/marketplace.json +2 -2
- package/CHANGELOG.md +119 -1
- package/dist/analyzers/__verify_self_probe.d.ts +2 -0
- package/dist/analyzers/__verify_self_probe.d.ts.map +1 -0
- package/dist/analyzers/__verify_self_probe.js +5 -0
- package/dist/analyzers/__verify_self_probe.js.map +1 -0
- package/dist/analyzers/analyzerUtils.d.ts +34 -1
- package/dist/analyzers/analyzerUtils.d.ts.map +1 -1
- package/dist/analyzers/analyzerUtils.js +61 -22
- package/dist/analyzers/analyzerUtils.js.map +1 -1
- package/dist/analyzers/cross-language/APIContractAnalyzer.d.ts +18 -23
- package/dist/analyzers/cross-language/APIContractAnalyzer.d.ts.map +1 -1
- package/dist/analyzers/cross-language/APIContractAnalyzer.js +198 -186
- package/dist/analyzers/cross-language/APIContractAnalyzer.js.map +1 -1
- package/dist/analyzers/cross-language/DependencyGraphBuilder.d.ts +78 -55
- package/dist/analyzers/cross-language/DependencyGraphBuilder.d.ts.map +1 -1
- package/dist/analyzers/cross-language/DependencyGraphBuilder.js +244 -243
- package/dist/analyzers/cross-language/DependencyGraphBuilder.js.map +1 -1
- package/dist/analyzers/cross-language/SchemaValidator.d.ts +27 -37
- package/dist/analyzers/cross-language/SchemaValidator.d.ts.map +1 -1
- package/dist/analyzers/cross-language/SchemaValidator.js +314 -275
- package/dist/analyzers/cross-language/SchemaValidator.js.map +1 -1
- package/dist/analyzers/crossDomain/CrossDomainAnalyzer.d.ts +17 -46
- package/dist/analyzers/crossDomain/CrossDomainAnalyzer.d.ts.map +1 -1
- package/dist/analyzers/crossDomain/CrossDomainAnalyzer.js +620 -523
- package/dist/analyzers/crossDomain/CrossDomainAnalyzer.js.map +1 -1
- package/dist/analyzers/documentationAnalyzer.d.ts +7 -2
- package/dist/analyzers/documentationAnalyzer.d.ts.map +1 -1
- package/dist/analyzers/documentationAnalyzer.js +259 -198
- package/dist/analyzers/documentationAnalyzer.js.map +1 -1
- package/dist/analyzers/invariantsAnalyzer.d.ts.map +1 -1
- package/dist/analyzers/invariantsAnalyzer.js +59 -46
- package/dist/analyzers/invariantsAnalyzer.js.map +1 -1
- package/dist/analyzers/orm/adapterRegistry.d.ts +10 -0
- package/dist/analyzers/orm/adapterRegistry.d.ts.map +1 -1
- package/dist/analyzers/orm/adapterRegistry.js +10 -0
- package/dist/analyzers/orm/adapterRegistry.js.map +1 -1
- package/dist/analyzers/orm/drizzleAdapter.d.ts +22 -0
- package/dist/analyzers/orm/drizzleAdapter.d.ts.map +1 -1
- package/dist/analyzers/orm/drizzleAdapter.js +42 -44
- package/dist/analyzers/orm/drizzleAdapter.js.map +1 -1
- package/dist/analyzers/orm/prismaAdapter.d.ts +30 -0
- package/dist/analyzers/orm/prismaAdapter.d.ts.map +1 -1
- package/dist/analyzers/orm/prismaAdapter.js +30 -0
- package/dist/analyzers/orm/prismaAdapter.js.map +1 -1
- package/dist/analyzers/provenance.d.ts +72 -2
- package/dist/analyzers/provenance.d.ts.map +1 -1
- package/dist/analyzers/provenance.js +462 -338
- package/dist/analyzers/provenance.js.map +1 -1
- package/dist/analyzers/reactAnalyzer.d.ts +11 -0
- package/dist/analyzers/reactAnalyzer.d.ts.map +1 -1
- package/dist/analyzers/reactAnalyzer.js +188 -125
- package/dist/analyzers/reactAnalyzer.js.map +1 -1
- package/dist/analyzers/ruleRegistry.d.ts +118 -1
- package/dist/analyzers/ruleRegistry.d.ts.map +1 -1
- package/dist/analyzers/ruleRegistry.js +1717 -104
- package/dist/analyzers/ruleRegistry.js.map +1 -1
- package/dist/analyzers/ruleTiming.d.ts +54 -0
- package/dist/analyzers/ruleTiming.d.ts.map +1 -0
- package/dist/analyzers/ruleTiming.js +71 -0
- package/dist/analyzers/ruleTiming.js.map +1 -0
- package/dist/analyzers/universal/UniversalConventionsAnalyzer.d.ts +13 -0
- package/dist/analyzers/universal/UniversalConventionsAnalyzer.d.ts.map +1 -1
- package/dist/analyzers/universal/UniversalConventionsAnalyzer.js +362 -283
- package/dist/analyzers/universal/UniversalConventionsAnalyzer.js.map +1 -1
- package/dist/analyzers/universal/UniversalDRYAnalyzer.d.ts +26 -68
- package/dist/analyzers/universal/UniversalDRYAnalyzer.d.ts.map +1 -1
- package/dist/analyzers/universal/UniversalDRYAnalyzer.js +430 -391
- package/dist/analyzers/universal/UniversalDRYAnalyzer.js.map +1 -1
- package/dist/analyzers/universal/UniversalDataAccessAnalyzer.d.ts +24 -186
- package/dist/analyzers/universal/UniversalDataAccessAnalyzer.d.ts.map +1 -1
- package/dist/analyzers/universal/UniversalDataAccessAnalyzer.js +1081 -1061
- package/dist/analyzers/universal/UniversalDataAccessAnalyzer.js.map +1 -1
- package/dist/analyzers/universal/UniversalDocumentationAnalyzer.d.ts +3 -49
- package/dist/analyzers/universal/UniversalDocumentationAnalyzer.d.ts.map +1 -1
- package/dist/analyzers/universal/UniversalDocumentationAnalyzer.js +414 -340
- package/dist/analyzers/universal/UniversalDocumentationAnalyzer.js.map +1 -1
- package/dist/analyzers/universal/UniversalSOLIDAnalyzer.d.ts +48 -5
- package/dist/analyzers/universal/UniversalSOLIDAnalyzer.d.ts.map +1 -1
- package/dist/analyzers/universal/UniversalSOLIDAnalyzer.js +262 -134
- package/dist/analyzers/universal/UniversalSOLIDAnalyzer.js.map +1 -1
- package/dist/analyzers/universal/UniversalSchemaAnalyzer.d.ts +23 -212
- package/dist/analyzers/universal/UniversalSchemaAnalyzer.d.ts.map +1 -1
- package/dist/analyzers/universal/UniversalSchemaAnalyzer.js +139 -1518
- package/dist/analyzers/universal/UniversalSchemaAnalyzer.js.map +1 -1
- package/dist/analyzers/universal/UniversalStylesAnalyzer.d.ts +78 -79
- package/dist/analyzers/universal/UniversalStylesAnalyzer.d.ts.map +1 -1
- package/dist/analyzers/universal/UniversalStylesAnalyzer.js +613 -472
- package/dist/analyzers/universal/UniversalStylesAnalyzer.js.map +1 -1
- package/dist/analyzers/universal/schema/codeAnalysis.d.ts +307 -0
- package/dist/analyzers/universal/schema/codeAnalysis.d.ts.map +1 -0
- package/dist/analyzers/universal/schema/codeAnalysis.js +965 -0
- package/dist/analyzers/universal/schema/codeAnalysis.js.map +1 -0
- package/dist/analyzers/universal/schema/config.d.ts +31 -0
- package/dist/analyzers/universal/schema/config.d.ts.map +1 -0
- package/dist/analyzers/universal/schema/config.js +57 -0
- package/dist/analyzers/universal/schema/config.js.map +1 -0
- package/dist/analyzers/universal/schema/discovery.d.ts +167 -0
- package/dist/analyzers/universal/schema/discovery.d.ts.map +1 -0
- package/dist/analyzers/universal/schema/discovery.js +616 -0
- package/dist/analyzers/universal/schema/discovery.js.map +1 -0
- package/dist/analyzers/universal/schema/jsonSchema.d.ts +27 -0
- package/dist/analyzers/universal/schema/jsonSchema.d.ts.map +1 -0
- package/dist/analyzers/universal/schema/jsonSchema.js +368 -0
- package/dist/analyzers/universal/schema/jsonSchema.js.map +1 -0
- package/dist/analyzers/universal/schema/migrations.d.ts +90 -0
- package/dist/analyzers/universal/schema/migrations.d.ts.map +1 -0
- package/dist/analyzers/universal/schema/migrations.js +238 -0
- package/dist/analyzers/universal/schema/migrations.js.map +1 -0
- package/dist/analyzers/universal/schema/types.d.ts +131 -0
- package/dist/analyzers/universal/schema/types.d.ts.map +1 -0
- package/dist/analyzers/universal/schema/types.js +10 -0
- package/dist/analyzers/universal/schema/types.js.map +1 -0
- package/dist/analyzers/universal/schema/violations.d.ts +44 -0
- package/dist/analyzers/universal/schema/violations.d.ts.map +1 -0
- package/dist/analyzers/universal/schema/violations.js +54 -0
- package/dist/analyzers/universal/schema/violations.js.map +1 -0
- package/dist/auditRunner.d.ts.map +1 -1
- package/dist/auditRunner.js +101 -39
- package/dist/auditRunner.js.map +1 -1
- package/dist/cli.js +348 -40
- package/dist/cli.js.map +1 -1
- package/dist/config/configLoader.d.ts.map +1 -1
- package/dist/config/configLoader.js +9 -7
- package/dist/config/configLoader.js.map +1 -1
- package/dist/config/defaults.d.ts +12 -3
- package/dist/config/defaults.d.ts.map +1 -1
- package/dist/config/defaults.js +15 -5
- package/dist/config/defaults.js.map +1 -1
- package/dist/config/effectiveConfig.d.ts +75 -0
- package/dist/config/effectiveConfig.d.ts.map +1 -0
- package/dist/config/effectiveConfig.js +213 -0
- package/dist/config/effectiveConfig.js.map +1 -0
- package/dist/config/pathProfiles.d.ts +7 -4
- package/dist/config/pathProfiles.d.ts.map +1 -1
- package/dist/config/pathProfiles.js +8 -10
- package/dist/config/pathProfiles.js.map +1 -1
- package/dist/config/thresholdRationales.d.ts +45 -0
- package/dist/config/thresholdRationales.d.ts.map +1 -0
- package/dist/config/thresholdRationales.js +67 -0
- package/dist/config/thresholdRationales.js.map +1 -0
- package/dist/conventions/conventionMiner.d.ts.map +1 -1
- package/dist/conventions/conventionMiner.js +6 -2
- package/dist/conventions/conventionMiner.js.map +1 -1
- package/dist/enforcement/diffGate.d.ts +55 -0
- package/dist/enforcement/diffGate.d.ts.map +1 -0
- package/dist/enforcement/diffGate.js +136 -0
- package/dist/enforcement/diffGate.js.map +1 -0
- package/dist/enforcement/gate.d.ts +36 -0
- package/dist/enforcement/gate.d.ts.map +1 -0
- package/dist/enforcement/gate.js +72 -0
- package/dist/enforcement/gate.js.map +1 -0
- package/dist/enforcement/suppressions.d.ts +41 -0
- package/dist/enforcement/suppressions.d.ts.map +1 -0
- package/dist/enforcement/suppressions.js +170 -0
- package/dist/enforcement/suppressions.js.map +1 -0
- package/dist/fingerprint.d.ts.map +1 -1
- package/dist/fingerprint.js +4 -1
- package/dist/fingerprint.js.map +1 -1
- package/dist/grammars/tree-sitter-scss.wasm +0 -0
- package/dist/invariants/ruleEngine.d.ts +3 -4
- package/dist/invariants/ruleEngine.d.ts.map +1 -1
- package/dist/invariants/ruleEngine.js +2 -2
- package/dist/invariants/ruleEngine.js.map +1 -1
- package/dist/languages/LanguageOrchestrator.d.ts +14 -0
- package/dist/languages/LanguageOrchestrator.d.ts.map +1 -1
- package/dist/languages/LanguageOrchestrator.js +93 -55
- package/dist/languages/LanguageOrchestrator.js.map +1 -1
- package/dist/languages/LanguageRegistry.d.ts +8 -0
- package/dist/languages/LanguageRegistry.d.ts.map +1 -1
- package/dist/languages/LanguageRegistry.js +8 -0
- package/dist/languages/LanguageRegistry.js.map +1 -1
- package/dist/languages/RuntimeManager.d.ts +82 -60
- package/dist/languages/RuntimeManager.d.ts.map +1 -1
- package/dist/languages/RuntimeManager.js +404 -349
- package/dist/languages/RuntimeManager.js.map +1 -1
- package/dist/languages/UniversalAnalyzer.d.ts +51 -6
- package/dist/languages/UniversalAnalyzer.d.ts.map +1 -1
- package/dist/languages/UniversalAnalyzer.js +127 -88
- package/dist/languages/UniversalAnalyzer.js.map +1 -1
- package/dist/languages/adapterBridge.d.ts +36 -0
- package/dist/languages/adapterBridge.d.ts.map +1 -1
- package/dist/languages/adapterBridge.js +89 -35
- package/dist/languages/adapterBridge.js.map +1 -1
- package/dist/languages/go/GoAdapter.d.ts +66 -23
- package/dist/languages/go/GoAdapter.d.ts.map +1 -1
- package/dist/languages/go/GoAdapter.js +553 -474
- package/dist/languages/go/GoAdapter.js.map +1 -1
- package/dist/languages/tree-sitter/TreeSitterCssAdapter.d.ts +38 -9
- package/dist/languages/tree-sitter/TreeSitterCssAdapter.d.ts.map +1 -1
- package/dist/languages/tree-sitter/TreeSitterCssAdapter.js +111 -74
- package/dist/languages/tree-sitter/TreeSitterCssAdapter.js.map +1 -1
- package/dist/languages/tree-sitter/converter.d.ts +18 -0
- package/dist/languages/tree-sitter/converter.d.ts.map +1 -1
- package/dist/languages/tree-sitter/converter.js +18 -0
- package/dist/languages/tree-sitter/converter.js.map +1 -1
- package/dist/languages/tree-sitter/parser.d.ts +39 -2
- package/dist/languages/tree-sitter/parser.d.ts.map +1 -1
- package/dist/languages/tree-sitter/parser.js +95 -12
- package/dist/languages/tree-sitter/parser.js.map +1 -1
- package/dist/languages/types.d.ts +67 -2
- package/dist/languages/types.d.ts.map +1 -1
- package/dist/languages/typescript/TreeSitterTypeScriptAdapter.d.ts +253 -62
- package/dist/languages/typescript/TreeSitterTypeScriptAdapter.d.ts.map +1 -1
- package/dist/languages/typescript/TreeSitterTypeScriptAdapter.js +1461 -791
- package/dist/languages/typescript/TreeSitterTypeScriptAdapter.js.map +1 -1
- package/dist/mcp-tools/whitelistTools.d.ts +1 -1
- package/dist/mcp-tools-shared.d.ts.map +1 -1
- package/dist/mcp-tools-shared.js +1 -0
- package/dist/mcp-tools-shared.js.map +1 -1
- package/dist/mcpAuditJobs.d.ts.map +1 -1
- package/dist/mcpAuditJobs.js +1 -0
- package/dist/mcpAuditJobs.js.map +1 -1
- package/dist/pipeline.d.ts +30 -1
- package/dist/pipeline.d.ts.map +1 -1
- package/dist/pipeline.js +527 -203
- package/dist/pipeline.js.map +1 -1
- package/dist/pipelineAdapters.d.ts +5 -12
- package/dist/pipelineAdapters.d.ts.map +1 -1
- package/dist/pipelineAdapters.js +175 -100
- package/dist/pipelineAdapters.js.map +1 -1
- package/dist/presets/presets.d.ts +54 -0
- package/dist/presets/presets.d.ts.map +1 -0
- package/dist/presets/presets.js +181 -0
- package/dist/presets/presets.js.map +1 -0
- package/dist/reporting/sarifReportGenerator.d.ts.map +1 -1
- package/dist/reporting/sarifReportGenerator.js +0 -2
- package/dist/reporting/sarifReportGenerator.js.map +1 -1
- package/dist/ruleAliases.d.ts +67 -0
- package/dist/ruleAliases.d.ts.map +1 -0
- package/dist/ruleAliases.js +79 -0
- package/dist/ruleAliases.js.map +1 -0
- package/dist/styles/cssAstExtractor.d.ts +20 -5
- package/dist/styles/cssAstExtractor.d.ts.map +1 -1
- package/dist/styles/cssAstExtractor.js +247 -9
- package/dist/styles/cssAstExtractor.js.map +1 -1
- package/dist/styles/styleIndexer.js +13 -4
- package/dist/styles/styleIndexer.js.map +1 -1
- package/dist/styles/tailwindConfigLoader.d.ts +8 -6
- package/dist/styles/tailwindConfigLoader.d.ts.map +1 -1
- package/dist/styles/tailwindConfigLoader.js +61 -15
- package/dist/styles/tailwindConfigLoader.js.map +1 -1
- package/dist/styles/tailwindUtilityExpander.d.ts.map +1 -1
- package/dist/styles/tailwindUtilityExpander.js +13 -1
- package/dist/styles/tailwindUtilityExpander.js.map +1 -1
- package/dist/types.d.ts +201 -1
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +8 -0
- package/dist/types.js.map +1 -1
- package/package.json +7 -4
- package/plugin/.claude-plugin/plugin.json +1 -1
- package/plugin/hooks/hooks.json +1 -1
- package/plugin/scripts/hook-audit.sh +25 -7
- 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 {
|
|
8
|
-
|
|
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):
|
|
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
|
-
|
|
50
|
-
|
|
51
|
-
/**
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
*
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
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,16 +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
|
|
114
|
-
*
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
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 {
|
|
124
314
|
}
|
|
315
|
+
export {};
|
|
125
316
|
//# sourceMappingURL=TreeSitterTypeScriptAdapter.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TreeSitterTypeScriptAdapter.d.ts","sourceRoot":"","sources":["../../../src/languages/typescript/TreeSitterTypeScriptAdapter.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"TreeSitterTypeScriptAdapter.d.ts","sourceRoot":"","sources":["../../../src/languages/typescript/TreeSitterTypeScriptAdapter.ts"],"names":[],"mappings":"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"}
|