code-auditor-mcp 4.1.0 → 5.0.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.
- package/.claude-plugin/marketplace.json +1 -1
- package/CHANGELOG.md +374 -0
- package/README.md +4 -4
- package/configs/hhra-compat.json +0 -8
- package/dist/__tests__/fixtures/spec-52/item-03-exec-in-loop.d.ts +1 -1
- package/dist/__tests__/fixtures/spec-52/item-03-exec-in-loop.d.ts.map +1 -1
- package/dist/__tests__/fixtures/spec-52/item-03-exec-in-loop.js +7 -1
- package/dist/__tests__/fixtures/spec-52/item-03-exec-in-loop.js.map +1 -1
- package/dist/__tests__/fixtures/spec-52/item-04-storage-sql-exec-in-loop.d.ts +2 -8
- package/dist/__tests__/fixtures/spec-52/item-04-storage-sql-exec-in-loop.d.ts.map +1 -1
- package/dist/__tests__/fixtures/spec-52/item-04-storage-sql-exec-in-loop.js +4 -4
- package/dist/__tests__/fixtures/spec-52/item-04-storage-sql-exec-in-loop.js.map +1 -1
- package/dist/__tests__/fixtures/spec-52/item-06-chained-prepare-run-in-loop.d.ts +1 -1
- package/dist/__tests__/fixtures/spec-52/item-06-chained-prepare-run-in-loop.d.ts.map +1 -1
- package/dist/__tests__/fixtures/spec-52/item-06-chained-prepare-run-in-loop.js.map +1 -1
- package/dist/__tests__/fixtures/spec-52/item-07-chained-prepare-bind-first-in-loop.d.ts +2 -2
- package/dist/__tests__/fixtures/spec-52/item-07-chained-prepare-bind-first-in-loop.d.ts.map +1 -1
- package/dist/__tests__/fixtures/spec-52/item-07-chained-prepare-bind-first-in-loop.js.map +1 -1
- package/dist/__tests__/fixtures/spec-52/item-10-promise-all-map-of-eager-all-in-loop.d.ts +1 -1
- package/dist/__tests__/fixtures/spec-52/item-10-promise-all-map-of-eager-all-in-loop.d.ts.map +1 -1
- package/dist/__tests__/fixtures/spec-52/item-10-promise-all-map-of-eager-all-in-loop.js.map +1 -1
- package/dist/analyzers/applicability.d.ts +42 -0
- package/dist/analyzers/applicability.d.ts.map +1 -1
- package/dist/analyzers/applicability.js +74 -0
- package/dist/analyzers/applicability.js.map +1 -1
- package/dist/analyzers/cross-language/APIContractAnalyzer.js +18 -24
- package/dist/analyzers/cross-language/APIContractAnalyzer.js.map +1 -1
- package/dist/analyzers/cross-language/DependencyGraphBuilder.d.ts +30 -23
- package/dist/analyzers/cross-language/DependencyGraphBuilder.d.ts.map +1 -1
- package/dist/analyzers/cross-language/DependencyGraphBuilder.js +113 -76
- package/dist/analyzers/cross-language/DependencyGraphBuilder.js.map +1 -1
- package/dist/analyzers/cross-language/SchemaValidator.d.ts +2 -0
- package/dist/analyzers/cross-language/SchemaValidator.d.ts.map +1 -1
- package/dist/analyzers/cross-language/SchemaValidator.js +8 -3
- package/dist/analyzers/cross-language/SchemaValidator.js.map +1 -1
- package/dist/analyzers/crossDomain/CrossDomainAnalyzer.d.ts.map +1 -1
- package/dist/analyzers/crossDomain/CrossDomainAnalyzer.js +210 -148
- package/dist/analyzers/crossDomain/CrossDomainAnalyzer.js.map +1 -1
- package/dist/analyzers/documentationAnalyzer.d.ts.map +1 -1
- package/dist/analyzers/documentationAnalyzer.js +23 -28
- package/dist/analyzers/documentationAnalyzer.js.map +1 -1
- package/dist/analyzers/handleIdentification.d.ts +356 -0
- package/dist/analyzers/handleIdentification.d.ts.map +1 -0
- package/dist/analyzers/handleIdentification.js +424 -0
- package/dist/analyzers/handleIdentification.js.map +1 -0
- package/dist/analyzers/manifestStaleness.d.ts +64 -0
- package/dist/analyzers/manifestStaleness.d.ts.map +1 -0
- package/dist/analyzers/manifestStaleness.js +115 -0
- package/dist/analyzers/manifestStaleness.js.map +1 -0
- package/dist/analyzers/orgFilterTiers.d.ts +73 -1
- package/dist/analyzers/orgFilterTiers.d.ts.map +1 -1
- package/dist/analyzers/orgFilterTiers.js +166 -1
- package/dist/analyzers/orgFilterTiers.js.map +1 -1
- package/dist/analyzers/provenance.d.ts +251 -57
- package/dist/analyzers/provenance.d.ts.map +1 -1
- package/dist/analyzers/provenance.js +1109 -429
- package/dist/analyzers/provenance.js.map +1 -1
- package/dist/analyzers/reactAnalyzer.d.ts +2 -0
- package/dist/analyzers/reactAnalyzer.d.ts.map +1 -1
- package/dist/analyzers/reactAnalyzer.js +2 -0
- package/dist/analyzers/reactAnalyzer.js.map +1 -1
- package/dist/analyzers/receiverResolution.d.ts +183 -0
- package/dist/analyzers/receiverResolution.d.ts.map +1 -0
- package/dist/analyzers/receiverResolution.js +540 -0
- package/dist/analyzers/receiverResolution.js.map +1 -0
- package/dist/analyzers/receiverRoot.d.ts +328 -0
- package/dist/analyzers/receiverRoot.d.ts.map +1 -0
- package/dist/analyzers/receiverRoot.js +990 -0
- package/dist/analyzers/receiverRoot.js.map +1 -0
- package/dist/analyzers/ruleRegistry.d.ts +12 -68
- package/dist/analyzers/ruleRegistry.d.ts.map +1 -1
- package/dist/analyzers/ruleRegistry.js +32 -342
- package/dist/analyzers/ruleRegistry.js.map +1 -1
- package/dist/analyzers/ruleTiming.d.ts +10 -0
- package/dist/analyzers/ruleTiming.d.ts.map +1 -1
- package/dist/analyzers/ruleTiming.js +20 -0
- package/dist/analyzers/ruleTiming.js.map +1 -1
- package/dist/analyzers/sqlLiteral.d.ts +76 -0
- package/dist/analyzers/sqlLiteral.d.ts.map +1 -0
- package/dist/analyzers/sqlLiteral.js +419 -0
- package/dist/analyzers/sqlLiteral.js.map +1 -0
- package/dist/analyzers/tsEcosystem.d.ts +115 -0
- package/dist/analyzers/tsEcosystem.d.ts.map +1 -0
- package/dist/analyzers/tsEcosystem.js +231 -0
- package/dist/analyzers/tsEcosystem.js.map +1 -0
- package/dist/analyzers/tsExpressionDescriptor.d.ts +156 -0
- package/dist/analyzers/tsExpressionDescriptor.d.ts.map +1 -0
- package/dist/analyzers/tsExpressionDescriptor.js +374 -0
- package/dist/analyzers/tsExpressionDescriptor.js.map +1 -0
- package/dist/analyzers/universal/UniversalConventionsAnalyzer.d.ts +6 -0
- package/dist/analyzers/universal/UniversalConventionsAnalyzer.d.ts.map +1 -1
- package/dist/analyzers/universal/UniversalConventionsAnalyzer.js +107 -44
- package/dist/analyzers/universal/UniversalConventionsAnalyzer.js.map +1 -1
- package/dist/analyzers/universal/UniversalDRYAnalyzer.d.ts +1 -12
- package/dist/analyzers/universal/UniversalDRYAnalyzer.d.ts.map +1 -1
- package/dist/analyzers/universal/UniversalDRYAnalyzer.js +24 -101
- package/dist/analyzers/universal/UniversalDRYAnalyzer.js.map +1 -1
- package/dist/analyzers/universal/UniversalDataAccessAnalyzer.d.ts +287 -49
- package/dist/analyzers/universal/UniversalDataAccessAnalyzer.d.ts.map +1 -1
- package/dist/analyzers/universal/UniversalDataAccessAnalyzer.js +2130 -512
- package/dist/analyzers/universal/UniversalDataAccessAnalyzer.js.map +1 -1
- package/dist/analyzers/universal/UniversalDocumentationAnalyzer.d.ts.map +1 -1
- package/dist/analyzers/universal/UniversalDocumentationAnalyzer.js +2 -18
- package/dist/analyzers/universal/UniversalDocumentationAnalyzer.js.map +1 -1
- package/dist/analyzers/universal/UniversalSOLIDAnalyzer.d.ts +0 -33
- package/dist/analyzers/universal/UniversalSOLIDAnalyzer.d.ts.map +1 -1
- package/dist/analyzers/universal/UniversalSOLIDAnalyzer.js +20 -143
- package/dist/analyzers/universal/UniversalSOLIDAnalyzer.js.map +1 -1
- package/dist/analyzers/universal/UniversalSchemaAnalyzer.d.ts +4 -3
- package/dist/analyzers/universal/UniversalSchemaAnalyzer.d.ts.map +1 -1
- package/dist/analyzers/universal/UniversalSchemaAnalyzer.js +36 -13
- package/dist/analyzers/universal/UniversalSchemaAnalyzer.js.map +1 -1
- package/dist/analyzers/universal/UniversalSecretsAnalyzer.d.ts.map +1 -1
- package/dist/analyzers/universal/UniversalSecretsAnalyzer.js +6 -0
- package/dist/analyzers/universal/UniversalSecretsAnalyzer.js.map +1 -1
- package/dist/analyzers/universal/UniversalSecurityAnalyzer.d.ts +15 -0
- package/dist/analyzers/universal/UniversalSecurityAnalyzer.d.ts.map +1 -1
- package/dist/analyzers/universal/UniversalSecurityAnalyzer.js +25 -0
- package/dist/analyzers/universal/UniversalSecurityAnalyzer.js.map +1 -1
- package/dist/analyzers/universal/UniversalStylesAnalyzer.d.ts +21 -32
- package/dist/analyzers/universal/UniversalStylesAnalyzer.d.ts.map +1 -1
- package/dist/analyzers/universal/UniversalStylesAnalyzer.js +166 -196
- package/dist/analyzers/universal/UniversalStylesAnalyzer.js.map +1 -1
- package/dist/analyzers/universal/functionConcerns.d.ts +3 -0
- package/dist/analyzers/universal/functionConcerns.d.ts.map +1 -1
- package/dist/analyzers/universal/functionConcerns.js +4 -1
- package/dist/analyzers/universal/functionConcerns.js.map +1 -1
- package/dist/analyzers/universal/schema/codeAnalysis.d.ts +310 -69
- package/dist/analyzers/universal/schema/codeAnalysis.d.ts.map +1 -1
- package/dist/analyzers/universal/schema/codeAnalysis.js +709 -383
- package/dist/analyzers/universal/schema/codeAnalysis.js.map +1 -1
- package/dist/analyzers/universal/schema/config.d.ts +3 -14
- package/dist/analyzers/universal/schema/config.d.ts.map +1 -1
- package/dist/analyzers/universal/schema/config.js +3 -16
- package/dist/analyzers/universal/schema/config.js.map +1 -1
- package/dist/analyzers/universal/schema/discovery.d.ts +22 -1
- package/dist/analyzers/universal/schema/discovery.d.ts.map +1 -1
- package/dist/analyzers/universal/schema/discovery.js +36 -20
- package/dist/analyzers/universal/schema/discovery.js.map +1 -1
- package/dist/analyzers/universal/schema/jsonSchema.d.ts.map +1 -1
- package/dist/analyzers/universal/schema/jsonSchema.js +13 -3
- package/dist/analyzers/universal/schema/jsonSchema.js.map +1 -1
- package/dist/analyzers/universal/schema/migrations.d.ts +187 -27
- package/dist/analyzers/universal/schema/migrations.d.ts.map +1 -1
- package/dist/analyzers/universal/schema/migrations.js +443 -186
- package/dist/analyzers/universal/schema/migrations.js.map +1 -1
- package/dist/analyzers/universal/schema/types.d.ts +17 -3
- package/dist/analyzers/universal/schema/types.d.ts.map +1 -1
- package/dist/analyzers/universal/schema/violations.js +1 -1
- package/dist/analyzers/universal/schema/violations.js.map +1 -1
- package/dist/analyzers/universal/styleScale.d.ts +52 -0
- package/dist/analyzers/universal/styleScale.d.ts.map +1 -0
- package/dist/analyzers/universal/styleScale.js +95 -0
- package/dist/analyzers/universal/styleScale.js.map +1 -0
- package/dist/applyDataDirEnv.js +1 -1
- package/dist/applyDataDirEnv.js.map +1 -1
- package/dist/auditRouter.d.ts +26 -30
- package/dist/auditRouter.d.ts.map +1 -1
- package/dist/auditRouter.js +373 -143
- package/dist/auditRouter.js.map +1 -1
- package/dist/auditRunner.d.ts +64 -1
- package/dist/auditRunner.d.ts.map +1 -1
- package/dist/auditRunner.js +1537 -1051
- package/dist/auditRunner.js.map +1 -1
- package/dist/baseline.d.ts +30 -3
- package/dist/baseline.d.ts.map +1 -1
- package/dist/baseline.js +70 -9
- package/dist/baseline.js.map +1 -1
- package/dist/cli.js +997 -812
- package/dist/cli.js.map +1 -1
- package/dist/codeIndex/analyzerConfig.d.ts +60 -0
- package/dist/codeIndex/analyzerConfig.d.ts.map +1 -0
- package/dist/codeIndex/analyzerConfig.js +98 -0
- package/dist/codeIndex/analyzerConfig.js.map +1 -0
- package/dist/codeIndex/auditResults.d.ts +39 -0
- package/dist/codeIndex/auditResults.d.ts.map +1 -0
- package/dist/codeIndex/auditResults.js +99 -0
- package/dist/codeIndex/auditResults.js.map +1 -0
- package/dist/codeIndex/codeMap.d.ts +59 -0
- package/dist/codeIndex/codeMap.d.ts.map +1 -0
- package/dist/codeIndex/codeMap.js +72 -0
- package/dist/codeIndex/codeMap.js.map +1 -0
- package/dist/codeIndex/conventions.d.ts +33 -0
- package/dist/codeIndex/conventions.d.ts.map +1 -0
- package/dist/codeIndex/conventions.js +84 -0
- package/dist/codeIndex/conventions.js.map +1 -0
- package/dist/codeIndex/coverage.d.ts +78 -0
- package/dist/codeIndex/coverage.d.ts.map +1 -0
- package/dist/codeIndex/coverage.js +164 -0
- package/dist/codeIndex/coverage.js.map +1 -0
- package/dist/codeIndex/dependencyGraph.d.ts +97 -0
- package/dist/codeIndex/dependencyGraph.d.ts.map +1 -0
- package/dist/codeIndex/dependencyGraph.js +241 -0
- package/dist/codeIndex/dependencyGraph.js.map +1 -0
- package/dist/codeIndex/functionIndex.d.ts +111 -0
- package/dist/codeIndex/functionIndex.d.ts.map +1 -0
- package/dist/codeIndex/functionIndex.js +306 -0
- package/dist/codeIndex/functionIndex.js.map +1 -0
- package/dist/codeIndex/inferredReceivers.d.ts +32 -0
- package/dist/codeIndex/inferredReceivers.d.ts.map +1 -0
- package/dist/codeIndex/inferredReceivers.js +41 -0
- package/dist/codeIndex/inferredReceivers.js.map +1 -0
- package/dist/codeIndex/meta.d.ts +30 -0
- package/dist/codeIndex/meta.d.ts.map +1 -0
- package/dist/codeIndex/meta.js +37 -0
- package/dist/codeIndex/meta.js.map +1 -0
- package/dist/codeIndex/migrations.d.ts +96 -0
- package/dist/codeIndex/migrations.d.ts.map +1 -0
- package/dist/codeIndex/migrations.js +1302 -0
- package/dist/codeIndex/migrations.js.map +1 -0
- package/dist/codeIndex/projectTasks.d.ts +54 -0
- package/dist/codeIndex/projectTasks.d.ts.map +1 -0
- package/dist/codeIndex/projectTasks.js +81 -0
- package/dist/codeIndex/projectTasks.js.map +1 -0
- package/dist/codeIndex/provenance.d.ts +47 -0
- package/dist/codeIndex/provenance.d.ts.map +1 -0
- package/dist/codeIndex/provenance.js +48 -0
- package/dist/codeIndex/provenance.js.map +1 -0
- package/dist/codeIndex/rawSql.d.ts +54 -0
- package/dist/codeIndex/rawSql.d.ts.map +1 -0
- package/dist/codeIndex/rawSql.js +71 -0
- package/dist/codeIndex/rawSql.js.map +1 -0
- package/dist/codeIndex/schema.d.ts +99 -0
- package/dist/codeIndex/schema.d.ts.map +1 -0
- package/dist/codeIndex/schema.js +174 -0
- package/dist/codeIndex/schema.js.map +1 -0
- package/dist/codeIndex/search.d.ts +40 -0
- package/dist/codeIndex/search.d.ts.map +1 -0
- package/dist/codeIndex/search.js +316 -0
- package/dist/codeIndex/search.js.map +1 -0
- package/dist/codeIndex/shared.d.ts +27 -0
- package/dist/codeIndex/shared.d.ts.map +1 -0
- package/dist/codeIndex/shared.js +46 -0
- package/dist/codeIndex/shared.js.map +1 -0
- package/dist/codeIndex/sqliteCollection.d.ts +81 -0
- package/dist/codeIndex/sqliteCollection.d.ts.map +1 -0
- package/dist/codeIndex/sqliteCollection.js +250 -0
- package/dist/codeIndex/sqliteCollection.js.map +1 -0
- package/dist/codeIndex/whitelist.d.ts +59 -0
- package/dist/codeIndex/whitelist.d.ts.map +1 -0
- package/dist/codeIndex/whitelist.js +188 -0
- package/dist/codeIndex/whitelist.js.map +1 -0
- package/dist/codeIndexDB.d.ts +130 -277
- package/dist/codeIndexDB.d.ts.map +1 -1
- package/dist/codeIndexDB.js +364 -2748
- package/dist/codeIndexDB.js.map +1 -1
- package/dist/codeIndexService.d.ts +87 -12
- package/dist/codeIndexService.d.ts.map +1 -1
- package/dist/codeIndexService.js +110 -34
- package/dist/codeIndexService.js.map +1 -1
- package/dist/componentScanner.d.ts +35 -0
- package/dist/componentScanner.d.ts.map +1 -1
- package/dist/componentScanner.js +114 -80
- package/dist/componentScanner.js.map +1 -1
- package/dist/config/configGeneratePath.d.ts +4 -0
- package/dist/config/configGeneratePath.d.ts.map +1 -1
- package/dist/config/configGeneratePath.js +4 -0
- package/dist/config/configGeneratePath.js.map +1 -1
- package/dist/config/configLoader.d.ts +16 -1
- package/dist/config/configLoader.d.ts.map +1 -1
- package/dist/config/configLoader.js +26 -23
- package/dist/config/configLoader.js.map +1 -1
- package/dist/config/defaults.d.ts +11 -7
- package/dist/config/defaults.d.ts.map +1 -1
- package/dist/config/defaults.js +21 -20
- package/dist/config/defaults.js.map +1 -1
- package/dist/config/effectiveConfig.d.ts +17 -2
- package/dist/config/effectiveConfig.d.ts.map +1 -1
- package/dist/config/effectiveConfig.js +32 -25
- package/dist/config/effectiveConfig.js.map +1 -1
- package/dist/config/lintConfigReader.d.ts +6 -0
- package/dist/config/lintConfigReader.d.ts.map +1 -1
- package/dist/config/lintConfigReader.js +6 -0
- package/dist/config/lintConfigReader.js.map +1 -1
- package/dist/config/staticObjectExtract.d.ts +4 -0
- package/dist/config/staticObjectExtract.d.ts.map +1 -1
- package/dist/config/staticObjectExtract.js +7 -3
- package/dist/config/staticObjectExtract.js.map +1 -1
- package/dist/config/thresholdRationales.d.ts +2 -0
- package/dist/config/thresholdRationales.d.ts.map +1 -1
- package/dist/config/thresholdRationales.js +5 -2
- package/dist/config/thresholdRationales.js.map +1 -1
- package/dist/constants.d.ts +1 -1
- package/dist/constants.d.ts.map +1 -1
- package/dist/constants.js +10 -5
- package/dist/constants.js.map +1 -1
- package/dist/conventions/conventionMiner.d.ts +105 -2
- package/dist/conventions/conventionMiner.d.ts.map +1 -1
- package/dist/conventions/conventionMiner.js +334 -259
- package/dist/conventions/conventionMiner.js.map +1 -1
- package/dist/coverage/coverageService.js +4 -4
- package/dist/coverage/coverageService.js.map +1 -1
- package/dist/daemon/args.d.ts +3 -0
- package/dist/daemon/args.d.ts.map +1 -1
- package/dist/daemon/args.js +3 -0
- package/dist/daemon/args.js.map +1 -1
- package/dist/daemon/core.d.ts +33 -27
- package/dist/daemon/core.d.ts.map +1 -1
- package/dist/daemon/core.js +198 -162
- package/dist/daemon/core.js.map +1 -1
- package/dist/daemon/lspServer.d.ts +8 -0
- package/dist/daemon/lspServer.d.ts.map +1 -1
- package/dist/daemon/lspServer.js +8 -0
- package/dist/daemon/lspServer.js.map +1 -1
- package/dist/daemon/main.d.ts +2 -0
- package/dist/daemon/main.d.ts.map +1 -1
- package/dist/daemon/main.js +2 -0
- package/dist/daemon/main.js.map +1 -1
- package/dist/daemon/resolve.d.ts +22 -7
- package/dist/daemon/resolve.d.ts.map +1 -1
- package/dist/daemon/resolve.js +29 -8
- package/dist/daemon/resolve.js.map +1 -1
- package/dist/daemon/socketClient.d.ts +10 -1
- package/dist/daemon/socketClient.d.ts.map +1 -1
- package/dist/daemon/socketClient.js +10 -1
- package/dist/daemon/socketClient.js.map +1 -1
- package/dist/daemon/socketServer.d.ts +13 -0
- package/dist/daemon/socketServer.d.ts.map +1 -1
- package/dist/daemon/socketServer.js +13 -0
- package/dist/daemon/socketServer.js.map +1 -1
- package/dist/dataPaths.d.ts +27 -8
- package/dist/dataPaths.d.ts.map +1 -1
- package/dist/dataPaths.js +28 -44
- package/dist/dataPaths.js.map +1 -1
- package/dist/dismissals.d.ts +22 -1
- package/dist/dismissals.d.ts.map +1 -1
- package/dist/dismissals.js +22 -1
- package/dist/dismissals.js.map +1 -1
- package/dist/enforcement/gate.d.ts +1 -0
- package/dist/enforcement/gate.d.ts.map +1 -1
- package/dist/enforcement/gate.js +1 -0
- package/dist/enforcement/gate.js.map +1 -1
- package/dist/fingerprint.d.ts +6 -0
- package/dist/fingerprint.d.ts.map +1 -1
- package/dist/fingerprint.js +46 -1
- package/dist/fingerprint.js.map +1 -1
- package/dist/functionScanner.d.ts +30 -1
- package/dist/functionScanner.d.ts.map +1 -1
- package/dist/functionScanner.js +258 -256
- package/dist/functionScanner.js.map +1 -1
- package/dist/generators/AWSQConfigGenerator.d.ts +23 -0
- package/dist/generators/AWSQConfigGenerator.d.ts.map +1 -1
- package/dist/generators/AWSQConfigGenerator.js +23 -0
- package/dist/generators/AWSQConfigGenerator.js.map +1 -1
- package/dist/generators/BaseConfigGenerator.d.ts +7 -0
- package/dist/generators/BaseConfigGenerator.d.ts.map +1 -1
- package/dist/generators/BaseConfigGenerator.js +7 -0
- package/dist/generators/BaseConfigGenerator.js.map +1 -1
- package/dist/generators/ClaudeConfigGenerator.d.ts +23 -0
- package/dist/generators/ClaudeConfigGenerator.d.ts.map +1 -1
- package/dist/generators/ClaudeConfigGenerator.js +23 -0
- package/dist/generators/ClaudeConfigGenerator.js.map +1 -1
- package/dist/generators/ClineConfigGenerator.d.ts +23 -0
- package/dist/generators/ClineConfigGenerator.d.ts.map +1 -1
- package/dist/generators/ClineConfigGenerator.js +23 -0
- package/dist/generators/ClineConfigGenerator.js.map +1 -1
- package/dist/generators/CodeiumConfigGenerator.d.ts +23 -0
- package/dist/generators/CodeiumConfigGenerator.d.ts.map +1 -1
- package/dist/generators/CodeiumConfigGenerator.js +23 -0
- package/dist/generators/CodeiumConfigGenerator.js.map +1 -1
- package/dist/generators/CodexConfigGenerator.d.ts +23 -0
- package/dist/generators/CodexConfigGenerator.d.ts.map +1 -1
- package/dist/generators/CodexConfigGenerator.js +23 -0
- package/dist/generators/CodexConfigGenerator.js.map +1 -1
- package/dist/generators/ConfigGeneratorFactory.d.ts +9 -0
- package/dist/generators/ConfigGeneratorFactory.d.ts.map +1 -1
- package/dist/generators/ConfigGeneratorFactory.js +9 -0
- package/dist/generators/ConfigGeneratorFactory.js.map +1 -1
- package/dist/generators/ContinueConfigGenerator.d.ts +23 -0
- package/dist/generators/ContinueConfigGenerator.d.ts.map +1 -1
- package/dist/generators/ContinueConfigGenerator.js +23 -0
- package/dist/generators/ContinueConfigGenerator.js.map +1 -1
- package/dist/generators/CopilotConfigGenerator.d.ts +23 -0
- package/dist/generators/CopilotConfigGenerator.d.ts.map +1 -1
- package/dist/generators/CopilotConfigGenerator.js +23 -0
- package/dist/generators/CopilotConfigGenerator.js.map +1 -1
- package/dist/generators/CursorConfigGenerator.d.ts +23 -0
- package/dist/generators/CursorConfigGenerator.d.ts.map +1 -1
- package/dist/generators/CursorConfigGenerator.js +23 -0
- package/dist/generators/CursorConfigGenerator.js.map +1 -1
- package/dist/generators/GeminiConfigGenerator.d.ts +23 -0
- package/dist/generators/GeminiConfigGenerator.d.ts.map +1 -1
- package/dist/generators/GeminiConfigGenerator.js +23 -0
- package/dist/generators/GeminiConfigGenerator.js.map +1 -1
- package/dist/generators/VSCodeConfigGenerator.d.ts +23 -0
- package/dist/generators/VSCodeConfigGenerator.d.ts.map +1 -1
- package/dist/generators/VSCodeConfigGenerator.js +23 -0
- package/dist/generators/VSCodeConfigGenerator.js.map +1 -1
- package/dist/generators/ZCodeConfigGenerator.d.ts +23 -0
- package/dist/generators/ZCodeConfigGenerator.d.ts.map +1 -1
- package/dist/generators/ZCodeConfigGenerator.js +23 -0
- package/dist/generators/ZCodeConfigGenerator.js.map +1 -1
- package/dist/graph/blastRadius.d.ts.map +1 -1
- package/dist/graph/blastRadius.js +12 -7
- package/dist/graph/blastRadius.js.map +1 -1
- package/dist/graph/callGraph.d.ts +31 -0
- package/dist/graph/callGraph.d.ts.map +1 -1
- package/dist/graph/callGraph.js +62 -32
- package/dist/graph/callGraph.js.map +1 -1
- package/dist/graph/importClassification.d.ts +28 -0
- package/dist/graph/importClassification.d.ts.map +1 -1
- package/dist/graph/importClassification.js +57 -0
- package/dist/graph/importClassification.js.map +1 -1
- package/dist/graph/importGraph.d.ts +38 -0
- package/dist/graph/importGraph.d.ts.map +1 -1
- package/dist/graph/importGraph.js +38 -0
- package/dist/graph/importGraph.js.map +1 -1
- package/dist/graph/outputFormatter.d.ts +12 -4
- package/dist/graph/outputFormatter.d.ts.map +1 -1
- package/dist/graph/outputFormatter.js +12 -62
- package/dist/graph/outputFormatter.js.map +1 -1
- package/dist/hooks/codex.d.ts +8 -1
- package/dist/hooks/codex.d.ts.map +1 -1
- package/dist/hooks/codex.js +7 -0
- package/dist/hooks/codex.js.map +1 -1
- package/dist/hooks/core.d.ts +6 -0
- package/dist/hooks/core.d.ts.map +1 -1
- package/dist/hooks/core.js +6 -1
- package/dist/hooks/core.js.map +1 -1
- package/dist/hooks/cursor.d.ts +11 -1
- package/dist/hooks/cursor.d.ts.map +1 -1
- package/dist/hooks/cursor.js +10 -0
- package/dist/hooks/cursor.js.map +1 -1
- package/dist/index.d.ts +4 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -0
- package/dist/index.js.map +1 -1
- package/dist/installConfig.d.ts +23 -5
- package/dist/installConfig.d.ts.map +1 -1
- package/dist/installConfig.js +23 -5
- package/dist/installConfig.js.map +1 -1
- package/dist/installer.d.ts +6 -0
- package/dist/installer.d.ts.map +1 -1
- package/dist/installer.js +6 -0
- package/dist/installer.js.map +1 -1
- package/dist/invariants/ruleEngine.d.ts +3 -0
- package/dist/invariants/ruleEngine.d.ts.map +1 -1
- package/dist/invariants/ruleEngine.js +156 -119
- package/dist/invariants/ruleEngine.js.map +1 -1
- package/dist/invariants/ruleValidator.d.ts +3 -0
- package/dist/invariants/ruleValidator.d.ts.map +1 -1
- package/dist/invariants/ruleValidator.js +185 -178
- package/dist/invariants/ruleValidator.js.map +1 -1
- package/dist/languages/LanguageOrchestrator.d.ts +4 -1
- package/dist/languages/LanguageOrchestrator.d.ts.map +1 -1
- package/dist/languages/LanguageOrchestrator.js +8 -19
- package/dist/languages/LanguageOrchestrator.js.map +1 -1
- package/dist/languages/RuntimeManager.d.ts +8 -0
- package/dist/languages/RuntimeManager.d.ts.map +1 -1
- package/dist/languages/RuntimeManager.js +55 -5
- package/dist/languages/RuntimeManager.js.map +1 -1
- package/dist/languages/UniversalAnalyzer.js +1 -1
- package/dist/languages/UniversalAnalyzer.js.map +1 -1
- package/dist/languages/adapterBridge.d.ts +4 -0
- package/dist/languages/adapterBridge.d.ts.map +1 -1
- package/dist/languages/adapterBridge.js +37 -3
- package/dist/languages/adapterBridge.js.map +1 -1
- package/dist/languages/go/GoAdapter.d.ts.map +1 -1
- package/dist/languages/go/GoAdapter.js +11 -14
- package/dist/languages/go/GoAdapter.js.map +1 -1
- package/dist/languages/go/analyzer-darwin-amd64 +0 -0
- package/dist/languages/go/analyzer-darwin-arm64 +0 -0
- package/dist/languages/go/analyzer-linux-amd64 +0 -0
- package/dist/languages/go/analyzer-linux-arm64 +0 -0
- package/dist/languages/go/analyzer-src/analyzer.go +2 -0
- package/dist/languages/go/analyzer-src/dataaccess.go +388 -0
- package/dist/languages/go/analyzer-src/types.go +8 -0
- package/dist/languages/go/analyzer-windows-amd64.exe +0 -0
- package/dist/languages/go/database-packages.json +8 -0
- package/dist/languages/go/goResolution.d.ts +229 -0
- package/dist/languages/go/goResolution.d.ts.map +1 -0
- package/dist/languages/go/goResolution.js +799 -0
- package/dist/languages/go/goResolution.js.map +1 -0
- package/dist/languages/go/stdlib-packages.json +353 -0
- package/dist/languages/go/tenantInputs.d.ts +37 -0
- package/dist/languages/go/tenantInputs.d.ts.map +1 -0
- package/dist/languages/go/tenantInputs.js +121 -0
- package/dist/languages/go/tenantInputs.js.map +1 -0
- package/dist/languages/index.d.ts +1 -0
- package/dist/languages/index.d.ts.map +1 -1
- package/dist/languages/index.js +5 -0
- package/dist/languages/index.js.map +1 -1
- package/dist/languages/json/JsonAdapter.d.ts +177 -0
- package/dist/languages/json/JsonAdapter.d.ts.map +1 -0
- package/dist/languages/json/JsonAdapter.js +531 -0
- package/dist/languages/json/JsonAdapter.js.map +1 -0
- package/dist/languages/locationIndex.d.ts +41 -0
- package/dist/languages/locationIndex.d.ts.map +1 -0
- package/dist/languages/locationIndex.js +42 -0
- package/dist/languages/locationIndex.js.map +1 -0
- package/dist/languages/sql/dialectDetection.d.ts +57 -0
- package/dist/languages/sql/dialectDetection.d.ts.map +1 -0
- package/dist/languages/sql/dialectDetection.js +135 -0
- package/dist/languages/sql/dialectDetection.js.map +1 -0
- package/dist/languages/sql/sqlAst.d.ts +494 -0
- package/dist/languages/sql/sqlAst.d.ts.map +1 -0
- package/dist/languages/sql/sqlAst.js +1817 -0
- package/dist/languages/sql/sqlAst.js.map +1 -0
- package/dist/languages/testConventions.d.ts +12 -1
- package/dist/languages/testConventions.d.ts.map +1 -1
- package/dist/languages/testConventions.js +13 -1
- package/dist/languages/testConventions.js.map +1 -1
- package/dist/languages/tree-sitter/TreeSitterCssAdapter.js +1 -1
- package/dist/languages/tree-sitter/TreeSitterCssAdapter.js.map +1 -1
- package/dist/languages/tree-sitter/converter.js +2 -2
- package/dist/languages/tree-sitter/converter.js.map +1 -1
- package/dist/languages/tree-sitter/parser.d.ts +3 -4
- package/dist/languages/tree-sitter/parser.d.ts.map +1 -1
- package/dist/languages/tree-sitter/parser.js +10 -4
- package/dist/languages/tree-sitter/parser.js.map +1 -1
- package/dist/languages/tree-sitter/rawNode.d.ts +3 -0
- package/dist/languages/tree-sitter/rawNode.d.ts.map +1 -1
- package/dist/languages/tree-sitter/rawNode.js +3 -0
- package/dist/languages/tree-sitter/rawNode.js.map +1 -1
- package/dist/languages/types.d.ts +7 -0
- package/dist/languages/types.d.ts.map +1 -1
- package/dist/languages/typescript/TreeSitterTypeScriptAdapter.d.ts +36 -0
- package/dist/languages/typescript/TreeSitterTypeScriptAdapter.d.ts.map +1 -1
- package/dist/languages/typescript/TreeSitterTypeScriptAdapter.js +168 -45
- package/dist/languages/typescript/TreeSitterTypeScriptAdapter.js.map +1 -1
- package/dist/languages/typescript/database-packages.json +19 -0
- package/dist/ledger.d.ts +118 -2
- package/dist/ledger.d.ts.map +1 -1
- package/dist/ledger.js +167 -45
- package/dist/ledger.js.map +1 -1
- package/dist/legacyIndexNotice.d.ts +32 -0
- package/dist/legacyIndexNotice.d.ts.map +1 -0
- package/dist/legacyIndexNotice.js +89 -0
- package/dist/legacyIndexNotice.js.map +1 -0
- package/dist/mcp-tools/discoveryQueries.d.ts +55 -0
- package/dist/mcp-tools/discoveryQueries.d.ts.map +1 -0
- package/dist/mcp-tools/discoveryQueries.js +157 -0
- package/dist/mcp-tools/discoveryQueries.js.map +1 -0
- package/dist/mcp-tools/projectTasks.d.ts +9 -123
- package/dist/mcp-tools/projectTasks.d.ts.map +1 -1
- package/dist/mcp-tools/projectTasks.js +180 -170
- package/dist/mcp-tools/projectTasks.js.map +1 -1
- package/dist/mcp-tools/whitelistTools.d.ts +20 -0
- package/dist/mcp-tools/whitelistTools.d.ts.map +1 -1
- package/dist/mcp-tools/whitelistTools.js +20 -0
- package/dist/mcp-tools/whitelistTools.js.map +1 -1
- package/dist/mcp-tools/workflowGuide.d.ts +9 -0
- package/dist/mcp-tools/workflowGuide.d.ts.map +1 -1
- package/dist/mcp-tools/workflowGuide.js +13 -5
- package/dist/mcp-tools/workflowGuide.js.map +1 -1
- package/dist/mcp-tools-shared.d.ts +78 -0
- package/dist/mcp-tools-shared.d.ts.map +1 -1
- package/dist/mcp-tools-shared.js +203 -340
- package/dist/mcp-tools-shared.js.map +1 -1
- package/dist/mcp-ui-simple.d.ts +2 -0
- package/dist/mcp-ui-simple.d.ts.map +1 -1
- package/dist/mcp-ui-simple.js +12 -5
- package/dist/mcp-ui-simple.js.map +1 -1
- package/dist/mcp.d.ts +6 -0
- package/dist/mcp.d.ts.map +1 -1
- package/dist/mcp.js +832 -851
- package/dist/mcp.js.map +1 -1
- package/dist/mcpAuditJobs.d.ts +29 -33
- package/dist/mcpAuditJobs.d.ts.map +1 -1
- package/dist/mcpAuditJobs.js +102 -791
- package/dist/mcpAuditJobs.js.map +1 -1
- package/dist/mcpAutoIndex.d.ts +5 -0
- package/dist/mcpAutoIndex.d.ts.map +1 -1
- package/dist/mcpAutoIndex.js +7 -2
- package/dist/mcpAutoIndex.js.map +1 -1
- package/dist/mcpDiagnostics.d.ts +7 -0
- package/dist/mcpDiagnostics.d.ts.map +1 -1
- package/dist/mcpDiagnostics.js +34 -9
- package/dist/mcpDiagnostics.js.map +1 -1
- package/dist/mcpToolErrors.d.ts +16 -0
- package/dist/mcpToolErrors.d.ts.map +1 -1
- package/dist/mcpToolErrors.js +16 -0
- package/dist/mcpToolErrors.js.map +1 -1
- package/dist/nextFile.d.ts +6 -0
- package/dist/nextFile.d.ts.map +1 -1
- package/dist/nextFile.js +6 -0
- package/dist/nextFile.js.map +1 -1
- package/dist/nextFileIncremental.d.ts +44 -4
- package/dist/nextFileIncremental.d.ts.map +1 -1
- package/dist/nextFileIncremental.js +47 -7
- package/dist/nextFileIncremental.js.map +1 -1
- package/dist/phase/batchFunctions.d.ts +38 -0
- package/dist/phase/batchFunctions.d.ts.map +1 -0
- package/dist/phase/batchFunctions.js +64 -0
- package/dist/phase/batchFunctions.js.map +1 -0
- package/dist/phase/checks.d.ts +39 -0
- package/dist/phase/checks.d.ts.map +1 -0
- package/dist/phase/checks.js +48 -0
- package/dist/phase/checks.js.map +1 -0
- package/dist/phase/codeBlocks.d.ts +25 -0
- package/dist/phase/codeBlocks.d.ts.map +1 -0
- package/dist/phase/codeBlocks.js +268 -0
- package/dist/phase/codeBlocks.js.map +1 -0
- package/dist/phase/colorMath.d.ts +41 -0
- package/dist/phase/colorMath.d.ts.map +1 -0
- package/dist/phase/colorMath.js +109 -0
- package/dist/phase/colorMath.js.map +1 -0
- package/dist/phase/config.d.ts +29 -0
- package/dist/phase/config.d.ts.map +1 -0
- package/dist/phase/config.js +54 -0
- package/dist/phase/config.js.map +1 -0
- package/dist/phase/consumed.d.ts +47 -0
- package/dist/phase/consumed.d.ts.map +1 -0
- package/dist/phase/consumed.js +22 -0
- package/dist/phase/consumed.js.map +1 -0
- package/dist/phase/conventionMining.d.ts +59 -0
- package/dist/phase/conventionMining.d.ts.map +1 -0
- package/dist/phase/conventionMining.js +152 -0
- package/dist/phase/conventionMining.js.map +1 -0
- package/dist/phase/coverage.d.ts +65 -0
- package/dist/phase/coverage.d.ts.map +1 -0
- package/dist/phase/coverage.js +121 -0
- package/dist/phase/coverage.js.map +1 -0
- package/dist/phase/dag.d.ts +49 -0
- package/dist/phase/dag.d.ts.map +1 -0
- package/dist/phase/dag.js +120 -0
- package/dist/phase/dag.js.map +1 -0
- package/dist/phase/dataAccessCalls.d.ts +33 -0
- package/dist/phase/dataAccessCalls.d.ts.map +1 -0
- package/dist/phase/dataAccessCalls.js +42 -0
- package/dist/phase/dataAccessCalls.js.map +1 -0
- package/dist/phase/dataAccessCallsCandidates.d.ts +25 -0
- package/dist/phase/dataAccessCallsCandidates.d.ts.map +1 -0
- package/dist/phase/dataAccessCallsCandidates.js +27 -0
- package/dist/phase/dataAccessCallsCandidates.js.map +1 -0
- package/dist/phase/dynamicSql.d.ts +18 -0
- package/dist/phase/dynamicSql.d.ts.map +1 -0
- package/dist/phase/dynamicSql.js +20 -0
- package/dist/phase/dynamicSql.js.map +1 -0
- package/dist/phase/exportForm.d.ts +23 -0
- package/dist/phase/exportForm.d.ts.map +1 -0
- package/dist/phase/exportForm.js +29 -0
- package/dist/phase/exportForm.js.map +1 -0
- package/dist/phase/exportSymbols.d.ts +21 -0
- package/dist/phase/exportSymbols.d.ts.map +1 -0
- package/dist/phase/exportSymbols.js +28 -0
- package/dist/phase/exportSymbols.js.map +1 -0
- package/dist/phase/fileHeader.d.ts +15 -0
- package/dist/phase/fileHeader.d.ts.map +1 -0
- package/dist/phase/fileHeader.js +33 -0
- package/dist/phase/fileHeader.js.map +1 -0
- package/dist/phase/fileImports.d.ts +39 -0
- package/dist/phase/fileImports.d.ts.map +1 -0
- package/dist/phase/fileImports.js +138 -0
- package/dist/phase/fileImports.js.map +1 -0
- package/dist/phase/fileSymbols.d.ts +25 -0
- package/dist/phase/fileSymbols.d.ts.map +1 -0
- package/dist/phase/fileSymbols.js +302 -0
- package/dist/phase/fileSymbols.js.map +1 -0
- package/dist/phase/functionBodies.d.ts +28 -0
- package/dist/phase/functionBodies.d.ts.map +1 -0
- package/dist/phase/functionBodies.js +67 -0
- package/dist/phase/functionBodies.js.map +1 -0
- package/dist/phase/functionIndex.d.ts +28 -0
- package/dist/phase/functionIndex.d.ts.map +1 -0
- package/dist/phase/functionIndex.js +152 -0
- package/dist/phase/functionIndex.js.map +1 -0
- package/dist/phase/goFunctionAnalysis.d.ts +47 -0
- package/dist/phase/goFunctionAnalysis.d.ts.map +1 -0
- package/dist/phase/goFunctionAnalysis.js +291 -0
- package/dist/phase/goFunctionAnalysis.js.map +1 -0
- package/dist/phase/goFunctions.d.ts +38 -0
- package/dist/phase/goFunctions.d.ts.map +1 -0
- package/dist/phase/goFunctions.js +154 -0
- package/dist/phase/goFunctions.js.map +1 -0
- package/dist/phase/goImports.d.ts +29 -0
- package/dist/phase/goImports.d.ts.map +1 -0
- package/dist/phase/goImports.js +68 -0
- package/dist/phase/goImports.js.map +1 -0
- package/dist/phase/goPackageBindings.d.ts +22 -0
- package/dist/phase/goPackageBindings.d.ts.map +1 -0
- package/dist/phase/goPackageBindings.js +30 -0
- package/dist/phase/goPackageBindings.js.map +1 -0
- package/dist/phase/goSwitches.d.ts +28 -0
- package/dist/phase/goSwitches.d.ts.map +1 -0
- package/dist/phase/goSwitches.js +52 -0
- package/dist/phase/goSwitches.js.map +1 -0
- package/dist/phase/importForm.d.ts +20 -0
- package/dist/phase/importForm.d.ts.map +1 -0
- package/dist/phase/importForm.js +27 -0
- package/dist/phase/importForm.js.map +1 -0
- package/dist/phase/importSpecifiers.d.ts +20 -0
- package/dist/phase/importSpecifiers.d.ts.map +1 -0
- package/dist/phase/importSpecifiers.js +30 -0
- package/dist/phase/importSpecifiers.js.map +1 -0
- package/dist/phase/imports.d.ts +18 -0
- package/dist/phase/imports.d.ts.map +1 -0
- package/dist/phase/imports.js +25 -0
- package/dist/phase/imports.js.map +1 -0
- package/dist/phase/jsonDocument.d.ts +26 -0
- package/dist/phase/jsonDocument.d.ts.map +1 -0
- package/dist/phase/jsonDocument.js +36 -0
- package/dist/phase/jsonDocument.js.map +1 -0
- package/dist/phase/localBinding.d.ts +33 -0
- package/dist/phase/localBinding.d.ts.map +1 -0
- package/dist/phase/localBinding.js +208 -0
- package/dist/phase/localBinding.js.map +1 -0
- package/dist/phase/loopQueries.d.ts +31 -0
- package/dist/phase/loopQueries.d.ts.map +1 -0
- package/dist/phase/loopQueries.js +44 -0
- package/dist/phase/loopQueries.js.map +1 -0
- package/dist/phase/loopQueryCandidates.d.ts +26 -0
- package/dist/phase/loopQueryCandidates.d.ts.map +1 -0
- package/dist/phase/loopQueryCandidates.js +28 -0
- package/dist/phase/loopQueryCandidates.js.map +1 -0
- package/dist/phase/oracles.d.ts +216 -0
- package/dist/phase/oracles.d.ts.map +1 -0
- package/dist/phase/oracles.js +484 -0
- package/dist/phase/oracles.js.map +1 -0
- package/dist/phase/phaseModel.d.ts +190 -0
- package/dist/phase/phaseModel.d.ts.map +1 -0
- package/dist/phase/phaseModel.js +468 -0
- package/dist/phase/phaseModel.js.map +1 -0
- package/dist/phase/producers.d.ts +450 -0
- package/dist/phase/producers.d.ts.map +1 -0
- package/dist/phase/producers.js +1027 -0
- package/dist/phase/producers.js.map +1 -0
- package/dist/phase/querySiteCandidates.d.ts +27 -0
- package/dist/phase/querySiteCandidates.d.ts.map +1 -0
- package/dist/phase/querySiteCandidates.js +66 -0
- package/dist/phase/querySiteCandidates.js.map +1 -0
- package/dist/phase/querySites.d.ts +30 -0
- package/dist/phase/querySites.d.ts.map +1 -0
- package/dist/phase/querySites.js +93 -0
- package/dist/phase/querySites.js.map +1 -0
- package/dist/phase/reachability.d.ts +61 -0
- package/dist/phase/reachability.d.ts.map +1 -0
- package/dist/phase/reachability.js +104 -0
- package/dist/phase/reachability.js.map +1 -0
- package/dist/phase/reactComponents.d.ts +33 -0
- package/dist/phase/reactComponents.d.ts.map +1 -0
- package/dist/phase/reactComponents.js +47 -0
- package/dist/phase/reactComponents.js.map +1 -0
- package/dist/phase/receiverActivity.d.ts +35 -0
- package/dist/phase/receiverActivity.d.ts.map +1 -0
- package/dist/phase/receiverActivity.js +66 -0
- package/dist/phase/receiverActivity.js.map +1 -0
- package/dist/phase/receiverConsumers.d.ts +200 -0
- package/dist/phase/receiverConsumers.d.ts.map +1 -0
- package/dist/phase/receiverConsumers.js +1025 -0
- package/dist/phase/receiverConsumers.js.map +1 -0
- package/dist/phase/receiverProvenance.d.ts +97 -0
- package/dist/phase/receiverProvenance.d.ts.map +1 -0
- package/dist/phase/receiverProvenance.js +337 -0
- package/dist/phase/receiverProvenance.js.map +1 -0
- package/dist/phase/routing.d.ts +47 -0
- package/dist/phase/routing.d.ts.map +1 -0
- package/dist/phase/routing.js +62 -0
- package/dist/phase/routing.js.map +1 -0
- package/dist/phase/rules/conventions.d.ts +61 -0
- package/dist/phase/rules/conventions.d.ts.map +1 -0
- package/dist/phase/rules/conventions.js +403 -0
- package/dist/phase/rules/conventions.js.map +1 -0
- package/dist/phase/rules/crossDomain.d.ts +102 -0
- package/dist/phase/rules/crossDomain.d.ts.map +1 -0
- package/dist/phase/rules/crossDomain.js +918 -0
- package/dist/phase/rules/crossDomain.js.map +1 -0
- package/dist/phase/rules/dataAccess.d.ts +62 -0
- package/dist/phase/rules/dataAccess.d.ts.map +1 -0
- package/dist/phase/rules/dataAccess.js +480 -0
- package/dist/phase/rules/dataAccess.js.map +1 -0
- package/dist/phase/rules/dependencyGraph.d.ts +44 -0
- package/dist/phase/rules/dependencyGraph.d.ts.map +1 -0
- package/dist/phase/rules/dependencyGraph.js +260 -0
- package/dist/phase/rules/dependencyGraph.js.map +1 -0
- package/dist/phase/rules/documentation.d.ts +45 -0
- package/dist/phase/rules/documentation.d.ts.map +1 -0
- package/dist/phase/rules/documentation.js +340 -0
- package/dist/phase/rules/documentation.js.map +1 -0
- package/dist/phase/rules/dry.d.ts +109 -0
- package/dist/phase/rules/dry.d.ts.map +1 -0
- package/dist/phase/rules/dry.js +803 -0
- package/dist/phase/rules/dry.js.map +1 -0
- package/dist/phase/rules/fileDocumentation.d.ts +36 -0
- package/dist/phase/rules/fileDocumentation.d.ts.map +1 -0
- package/dist/phase/rules/fileDocumentation.js +134 -0
- package/dist/phase/rules/fileDocumentation.js.map +1 -0
- package/dist/phase/rules/functionBodies.d.ts +33 -0
- package/dist/phase/rules/functionBodies.d.ts.map +1 -0
- package/dist/phase/rules/functionBodies.js +71 -0
- package/dist/phase/rules/functionBodies.js.map +1 -0
- package/dist/phase/rules/goRules.d.ts +49 -0
- package/dist/phase/rules/goRules.d.ts.map +1 -0
- package/dist/phase/rules/goRules.js +209 -0
- package/dist/phase/rules/goRules.js.map +1 -0
- package/dist/phase/rules/querySites.d.ts +29 -0
- package/dist/phase/rules/querySites.d.ts.map +1 -0
- package/dist/phase/rules/querySites.js +94 -0
- package/dist/phase/rules/querySites.js.map +1 -0
- package/dist/phase/rules/react.d.ts +38 -0
- package/dist/phase/rules/react.d.ts.map +1 -0
- package/dist/phase/rules/react.js +202 -0
- package/dist/phase/rules/react.js.map +1 -0
- package/dist/phase/rules/registry.d.ts +170 -0
- package/dist/phase/rules/registry.d.ts.map +1 -0
- package/dist/phase/rules/registry.js +103 -0
- package/dist/phase/rules/registry.js.map +1 -0
- package/dist/phase/rules/schema.d.ts +79 -0
- package/dist/phase/rules/schema.d.ts.map +1 -0
- package/dist/phase/rules/schema.js +273 -0
- package/dist/phase/rules/schema.js.map +1 -0
- package/dist/phase/rules/schemaJson.d.ts +32 -0
- package/dist/phase/rules/schemaJson.d.ts.map +1 -0
- package/dist/phase/rules/schemaJson.js +81 -0
- package/dist/phase/rules/schemaJson.js.map +1 -0
- package/dist/phase/rules/schemaValidator.d.ts +38 -0
- package/dist/phase/rules/schemaValidator.d.ts.map +1 -0
- package/dist/phase/rules/schemaValidator.js +107 -0
- package/dist/phase/rules/schemaValidator.js.map +1 -0
- package/dist/phase/rules/secrets.d.ts +34 -0
- package/dist/phase/rules/secrets.d.ts.map +1 -0
- package/dist/phase/rules/secrets.js +208 -0
- package/dist/phase/rules/secrets.js.map +1 -0
- package/dist/phase/rules/security.d.ts +30 -0
- package/dist/phase/rules/security.d.ts.map +1 -0
- package/dist/phase/rules/security.js +85 -0
- package/dist/phase/rules/security.js.map +1 -0
- package/dist/phase/rules/securityDefects.d.ts +37 -0
- package/dist/phase/rules/securityDefects.d.ts.map +1 -0
- package/dist/phase/rules/securityDefects.js +167 -0
- package/dist/phase/rules/securityDefects.js.map +1 -0
- package/dist/phase/rules/solid.d.ts +61 -0
- package/dist/phase/rules/solid.d.ts.map +1 -0
- package/dist/phase/rules/solid.js +562 -0
- package/dist/phase/rules/solid.js.map +1 -0
- package/dist/phase/rules/styles.d.ts +77 -0
- package/dist/phase/rules/styles.d.ts.map +1 -0
- package/dist/phase/rules/styles.js +868 -0
- package/dist/phase/rules/styles.js.map +1 -0
- package/dist/phase/rules/unreferencedModule.d.ts +26 -0
- package/dist/phase/rules/unreferencedModule.d.ts.map +1 -0
- package/dist/phase/rules/unreferencedModule.js +61 -0
- package/dist/phase/rules/unreferencedModule.js.map +1 -0
- package/dist/phase/runner.d.ts +549 -0
- package/dist/phase/runner.d.ts.map +1 -0
- package/dist/phase/runner.js +1098 -0
- package/dist/phase/runner.js.map +1 -0
- package/dist/phase/schemaCode.d.ts +34 -0
- package/dist/phase/schemaCode.d.ts.map +1 -0
- package/dist/phase/schemaCode.js +53 -0
- package/dist/phase/schemaCode.js.map +1 -0
- package/dist/phase/schemaObjects.d.ts +37 -0
- package/dist/phase/schemaObjects.d.ts.map +1 -0
- package/dist/phase/schemaObjects.js +139 -0
- package/dist/phase/schemaObjects.js.map +1 -0
- package/dist/phase/schemaUsage.d.ts +30 -0
- package/dist/phase/schemaUsage.d.ts.map +1 -0
- package/dist/phase/schemaUsage.js +99 -0
- package/dist/phase/schemaUsage.js.map +1 -0
- package/dist/phase/schemaUsageCandidates.d.ts +32 -0
- package/dist/phase/schemaUsageCandidates.d.ts.map +1 -0
- package/dist/phase/schemaUsageCandidates.js +165 -0
- package/dist/phase/schemaUsageCandidates.js.map +1 -0
- package/dist/phase/schemaValidations.d.ts +34 -0
- package/dist/phase/schemaValidations.d.ts.map +1 -0
- package/dist/phase/schemaValidations.js +53 -0
- package/dist/phase/schemaValidations.js.map +1 -0
- package/dist/phase/secretCandidates.d.ts +28 -0
- package/dist/phase/secretCandidates.d.ts.map +1 -0
- package/dist/phase/secretCandidates.js +132 -0
- package/dist/phase/secretCandidates.js.map +1 -0
- package/dist/phase/securityCandidates.d.ts +29 -0
- package/dist/phase/securityCandidates.d.ts.map +1 -0
- package/dist/phase/securityCandidates.js +469 -0
- package/dist/phase/securityCandidates.js.map +1 -0
- package/dist/phase/seeded-defects.d.ts +18 -0
- package/dist/phase/seeded-defects.d.ts.map +1 -0
- package/dist/phase/seeded-defects.js +61 -0
- package/dist/phase/seeded-defects.js.map +1 -0
- package/dist/phase/stringLiterals.d.ts +24 -0
- package/dist/phase/stringLiterals.d.ts.map +1 -0
- package/dist/phase/stringLiterals.js +35 -0
- package/dist/phase/stringLiterals.js.map +1 -0
- package/dist/phase/stylesCss.d.ts +25 -0
- package/dist/phase/stylesCss.d.ts.map +1 -0
- package/dist/phase/stylesCss.js +34 -0
- package/dist/phase/stylesCss.js.map +1 -0
- package/dist/phase/stylesMarkup.d.ts +31 -0
- package/dist/phase/stylesMarkup.d.ts.map +1 -0
- package/dist/phase/stylesMarkup.js +48 -0
- package/dist/phase/stylesMarkup.js.map +1 -0
- package/dist/phase/stylesSource.d.ts +36 -0
- package/dist/phase/stylesSource.d.ts.map +1 -0
- package/dist/phase/stylesSource.js +50 -0
- package/dist/phase/stylesSource.js.map +1 -0
- package/dist/phase/typeDeclarations.d.ts +33 -0
- package/dist/phase/typeDeclarations.d.ts.map +1 -0
- package/dist/phase/typeDeclarations.js +76 -0
- package/dist/phase/typeDeclarations.js.map +1 -0
- package/dist/phase/types.d.ts +2191 -0
- package/dist/phase/types.d.ts.map +1 -0
- package/dist/phase/types.js +27 -0
- package/dist/phase/types.js.map +1 -0
- package/dist/phase/withinFileProvenance.d.ts +50 -0
- package/dist/phase/withinFileProvenance.d.ts.map +1 -0
- package/dist/phase/withinFileProvenance.js +112 -0
- package/dist/phase/withinFileProvenance.js.map +1 -0
- package/dist/pipeline.d.ts +37 -30
- package/dist/pipeline.d.ts.map +1 -1
- package/dist/pipeline.js +131 -326
- package/dist/pipeline.js.map +1 -1
- package/dist/pipelineAdapters.d.ts +104 -21
- package/dist/pipelineAdapters.d.ts.map +1 -1
- package/dist/pipelineAdapters.js +1145 -988
- package/dist/pipelineAdapters.js.map +1 -1
- package/dist/pipelineTypes.d.ts +21 -0
- package/dist/pipelineTypes.d.ts.map +1 -1
- package/dist/pipelineTypes.js +21 -10
- package/dist/pipelineTypes.js.map +1 -1
- package/dist/presets/presets.d.ts +9 -2
- package/dist/presets/presets.d.ts.map +1 -1
- package/dist/presets/presets.js +15 -26
- package/dist/presets/presets.js.map +1 -1
- package/dist/reporting/csvReportGenerator.d.ts +14 -3
- package/dist/reporting/csvReportGenerator.d.ts.map +1 -1
- package/dist/reporting/csvReportGenerator.js +14 -3
- package/dist/reporting/csvReportGenerator.js.map +1 -1
- package/dist/reporting/htmlReportGenerator.d.ts +5 -1
- package/dist/reporting/htmlReportGenerator.d.ts.map +1 -1
- package/dist/reporting/htmlReportGenerator.js +5 -1
- package/dist/reporting/htmlReportGenerator.js.map +1 -1
- package/dist/reporting/jsonReportGenerator.d.ts +9 -2
- package/dist/reporting/jsonReportGenerator.d.ts.map +1 -1
- package/dist/reporting/jsonReportGenerator.js +19 -5
- package/dist/reporting/jsonReportGenerator.js.map +1 -1
- package/dist/reporting/reportGenerator.d.ts +9 -2
- package/dist/reporting/reportGenerator.d.ts.map +1 -1
- package/dist/reporting/reportGenerator.js +9 -2
- package/dist/reporting/reportGenerator.js.map +1 -1
- package/dist/reporting/sarifReportGenerator.d.ts +14 -0
- package/dist/reporting/sarifReportGenerator.d.ts.map +1 -1
- package/dist/reporting/sarifReportGenerator.js +14 -0
- package/dist/reporting/sarifReportGenerator.js.map +1 -1
- package/dist/reporting/sizeDistribution.d.ts +19 -2
- package/dist/reporting/sizeDistribution.d.ts.map +1 -1
- package/dist/reporting/sizeDistribution.js +23 -5
- package/dist/reporting/sizeDistribution.js.map +1 -1
- package/dist/ruleAliases.d.ts +6 -8
- package/dist/ruleAliases.d.ts.map +1 -1
- package/dist/ruleAliases.js +29 -4
- package/dist/ruleAliases.js.map +1 -1
- package/dist/search/QueryParser.d.ts +1 -0
- package/dist/search/QueryParser.d.ts.map +1 -1
- package/dist/search/QueryParser.js +32 -91
- package/dist/search/QueryParser.js.map +1 -1
- package/dist/services/CodeMapGenerator.d.ts +19 -20
- package/dist/services/CodeMapGenerator.d.ts.map +1 -1
- package/dist/services/CodeMapGenerator.js +214 -194
- package/dist/services/CodeMapGenerator.js.map +1 -1
- package/dist/services/ProjectTaskRepository.d.ts +65 -3
- package/dist/services/ProjectTaskRepository.d.ts.map +1 -1
- package/dist/services/ProjectTaskRepository.js +94 -25
- package/dist/services/ProjectTaskRepository.js.map +1 -1
- package/dist/services/auditJobService.d.ts +17 -1
- package/dist/services/auditJobService.d.ts.map +1 -1
- package/dist/services/auditJobService.js +16 -0
- package/dist/services/auditJobService.js.map +1 -1
- package/dist/services/fileAccounting.d.ts +43 -5
- package/dist/services/fileAccounting.d.ts.map +1 -1
- package/dist/services/fileAccounting.js +48 -9
- package/dist/services/fileAccounting.js.map +1 -1
- package/dist/services/projectTaskHelpers.d.ts +45 -0
- package/dist/services/projectTaskHelpers.d.ts.map +1 -1
- package/dist/services/projectTaskHelpers.js +45 -0
- package/dist/services/projectTaskHelpers.js.map +1 -1
- package/dist/services/whitelistService.d.ts +40 -5
- package/dist/services/whitelistService.d.ts.map +1 -1
- package/dist/services/whitelistService.js +87 -46
- package/dist/services/whitelistService.js.map +1 -1
- package/dist/sqlite/betterSqlite3.d.ts +35 -1
- package/dist/sqlite/betterSqlite3.d.ts.map +1 -1
- package/dist/sqlite/betterSqlite3.js +35 -1
- package/dist/sqlite/betterSqlite3.js.map +1 -1
- package/dist/sqlite/driver.d.ts +23 -0
- package/dist/sqlite/driver.d.ts.map +1 -1
- package/dist/sqlite/driver.js +23 -0
- package/dist/sqlite/driver.js.map +1 -1
- package/dist/sqlite/nodeSqlite.d.ts +35 -1
- package/dist/sqlite/nodeSqlite.d.ts.map +1 -1
- package/dist/sqlite/nodeSqlite.js +35 -1
- package/dist/sqlite/nodeSqlite.js.map +1 -1
- package/dist/structuralSignature.d.ts +9 -0
- package/dist/structuralSignature.d.ts.map +1 -1
- package/dist/structuralSignature.js +9 -0
- package/dist/structuralSignature.js.map +1 -1
- package/dist/styles/cssAstExtractor.d.ts +15 -0
- package/dist/styles/cssAstExtractor.d.ts.map +1 -1
- package/dist/styles/cssAstExtractor.js +15 -0
- package/dist/styles/cssAstExtractor.js.map +1 -1
- package/dist/styles/normalizer.d.ts +6 -0
- package/dist/styles/normalizer.d.ts.map +1 -1
- package/dist/styles/normalizer.js +6 -0
- package/dist/styles/normalizer.js.map +1 -1
- package/dist/styles/styleExtractor.d.ts +29 -2
- package/dist/styles/styleExtractor.d.ts.map +1 -1
- package/dist/styles/styleExtractor.js +67 -48
- package/dist/styles/styleExtractor.js.map +1 -1
- package/dist/styles/styleIndexer.d.ts +8 -0
- package/dist/styles/styleIndexer.d.ts.map +1 -1
- package/dist/styles/styleIndexer.js +135 -138
- package/dist/styles/styleIndexer.js.map +1 -1
- package/dist/styles/tailwindConfigLoader.d.ts +12 -0
- package/dist/styles/tailwindConfigLoader.d.ts.map +1 -1
- package/dist/styles/tailwindConfigLoader.js +12 -0
- package/dist/styles/tailwindConfigLoader.js.map +1 -1
- package/dist/styles/tailwindExpander.d.ts +3 -0
- package/dist/styles/tailwindExpander.d.ts.map +1 -1
- package/dist/styles/tailwindExpander.js +8 -4
- package/dist/styles/tailwindExpander.js.map +1 -1
- package/dist/styles/tailwindProbe.d.ts +9 -0
- package/dist/styles/tailwindProbe.d.ts.map +1 -1
- package/dist/styles/tailwindProbe.js +181 -166
- package/dist/styles/tailwindProbe.js.map +1 -1
- package/dist/styles/tailwindUtilityExpander.d.ts +13 -0
- package/dist/styles/tailwindUtilityExpander.d.ts.map +1 -1
- package/dist/styles/tailwindUtilityExpander.js +13 -0
- package/dist/styles/tailwindUtilityExpander.js.map +1 -1
- package/dist/symbols.d.ts +13 -11
- package/dist/symbols.d.ts.map +1 -1
- package/dist/symbols.js +14 -21
- package/dist/symbols.js.map +1 -1
- package/dist/telemetry.d.ts +31 -3
- package/dist/telemetry.d.ts.map +1 -1
- package/dist/telemetry.js +31 -3
- package/dist/telemetry.js.map +1 -1
- package/dist/tool-registry.d.ts +37 -1
- package/dist/tool-registry.d.ts.map +1 -1
- package/dist/tool-registry.js +37 -1
- package/dist/tool-registry.js.map +1 -1
- package/dist/types.d.ts +106 -92
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +7 -16
- package/dist/types.js.map +1 -1
- package/dist/ui/InteractivePrompts.d.ts +12 -0
- package/dist/ui/InteractivePrompts.d.ts.map +1 -1
- package/dist/ui/InteractivePrompts.js +12 -0
- package/dist/ui/InteractivePrompts.js.map +1 -1
- package/dist/utils/astParser.d.ts +15 -0
- package/dist/utils/astParser.d.ts.map +1 -1
- package/dist/utils/astParser.js +15 -0
- package/dist/utils/astParser.js.map +1 -1
- package/dist/utils/astUtils.d.ts +60 -0
- package/dist/utils/astUtils.d.ts.map +1 -1
- package/dist/utils/astUtils.js +350 -362
- package/dist/utils/astUtils.js.map +1 -1
- package/dist/utils/contentHash.d.ts +22 -0
- package/dist/utils/contentHash.d.ts.map +1 -0
- package/dist/utils/contentHash.js +26 -0
- package/dist/utils/contentHash.js.map +1 -0
- package/dist/utils/dependencyExtractor.d.ts +28 -0
- package/dist/utils/dependencyExtractor.d.ts.map +1 -1
- package/dist/utils/dependencyExtractor.js +28 -1
- package/dist/utils/dependencyExtractor.js.map +1 -1
- package/dist/utils/errorMessage.d.ts +10 -0
- package/dist/utils/errorMessage.d.ts.map +1 -0
- package/dist/utils/errorMessage.js +12 -0
- package/dist/utils/errorMessage.js.map +1 -0
- package/dist/utils/fileDiscovery.d.ts +61 -2
- package/dist/utils/fileDiscovery.d.ts.map +1 -1
- package/dist/utils/fileDiscovery.js +131 -23
- package/dist/utils/fileDiscovery.js.map +1 -1
- package/dist/utils/reactDetection.d.ts +34 -5
- package/dist/utils/reactDetection.d.ts.map +1 -1
- package/dist/utils/reactDetection.js +73 -52
- package/dist/utils/reactDetection.js.map +1 -1
- package/dist/version.generated.d.ts +1 -1
- package/dist/version.generated.js +1 -1
- package/dist/workers/auditWorker.js +7 -3
- package/dist/workers/auditWorker.js.map +1 -1
- package/examples/.auditrc.example.json +0 -8
- package/examples/.auditrc.json +0 -11
- package/examples/.code-auditor.json +0 -2
- package/examples/nextjs.auditrc.json +0 -8
- package/examples/node-api.auditrc.json +0 -7
- package/examples/react.auditrc.json +0 -6
- package/examples/tolerant-solid.auditrc.json +0 -5
- package/package.json +14 -8
- package/plugin/.claude-plugin/manifest.json +16 -0
- package/plugin/.claude-plugin/plugin.json +1 -1
- package/plugin/hooks/hooks.json +6 -2
- package/plugin/scripts/hook-audit.sh +41 -14
- package/plugin/scripts/hook-common.sh +50 -5
- package/plugin/scripts/hook-drift-check.sh +72 -0
- package/plugin/scripts/hook-self-audit.sh +17 -12
- package/plugin/skills/code-auditor/SKILL.md +1 -1
- package/server.json +2 -2
package/dist/utils/astUtils.js
CHANGED
|
@@ -22,6 +22,10 @@ function findChildOfType(node, type) {
|
|
|
22
22
|
/**
|
|
23
23
|
* Find all nodes matching a predicate in the AST subtree.
|
|
24
24
|
* Replacement for the old `findNodesByKind<T>(node, SyntaxKind)`.
|
|
25
|
+
*
|
|
26
|
+
* @param root - The root AST node to search within.
|
|
27
|
+
* @param predicate - Predicate that returns true for nodes to keep.
|
|
28
|
+
* @returns All nodes for which the predicate returns true.
|
|
25
29
|
*/
|
|
26
30
|
export function findNodesByType(root, predicate) {
|
|
27
31
|
return findNodes(root, predicate);
|
|
@@ -56,6 +60,10 @@ export { bridgeCalculateComplexity as calculateComplexity };
|
|
|
56
60
|
* Extract import statements from an AST root node.
|
|
57
61
|
* Uses tree-sitter import_statement structure:
|
|
58
62
|
* import_statement → import_clause? → (identifier | named_imports) → string
|
|
63
|
+
*
|
|
64
|
+
* @param root - The root AST node to search for import statements.
|
|
65
|
+
* @param sourceCode - The original source text for name extraction.
|
|
66
|
+
* @returns The list of extracted imports.
|
|
59
67
|
*/
|
|
60
68
|
export function getImports(root, sourceCode) {
|
|
61
69
|
const imports = [];
|
|
@@ -121,32 +129,34 @@ export function getImports(root, sourceCode) {
|
|
|
121
129
|
/**
|
|
122
130
|
* Extract export statements from an AST root node.
|
|
123
131
|
* Uses tree-sitter export_statement structure.
|
|
132
|
+
*
|
|
133
|
+
* @param root - The root AST node to search for export statements.
|
|
134
|
+
* @param sourceCode - The original source text for name extraction.
|
|
135
|
+
* @returns The list of extracted exports.
|
|
124
136
|
*/
|
|
125
137
|
export function getExports(root, sourceCode) {
|
|
126
138
|
const exports = [];
|
|
127
139
|
// export declarations: export { name1, name2 }
|
|
128
|
-
const exportNodes = findNodes(root, n => n.type === 'export_statement'
|
|
140
|
+
const exportNodes = findNodes(root, n => n.type === 'export_statement');
|
|
129
141
|
for (const node of exportNodes) {
|
|
130
142
|
const { line } = bridgeGetLineAndColumn(node);
|
|
131
143
|
// Check for type-only exports
|
|
132
144
|
const isTypeOnly = hasModifier(node, 'type');
|
|
133
|
-
// export clause with named exports
|
|
145
|
+
// export clause with named exports (`export { a, b }`) — the `export_clause`
|
|
146
|
+
// holds `export_specifier` children directly (no `named_exports` node).
|
|
134
147
|
const exportClause = findChildOfType(node, 'export_clause');
|
|
135
148
|
if (exportClause) {
|
|
136
|
-
const
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
line
|
|
148
|
-
});
|
|
149
|
-
}
|
|
149
|
+
for (const child of exportClause.children ?? []) {
|
|
150
|
+
if (child.type !== 'export_specifier')
|
|
151
|
+
continue;
|
|
152
|
+
const ids = child.children?.filter(c => c.type === 'identifier') ?? [];
|
|
153
|
+
if (ids.length > 0) {
|
|
154
|
+
exports.push({
|
|
155
|
+
name: getNodeText(ids[ids.length - 1], sourceCode),
|
|
156
|
+
isDefault: false,
|
|
157
|
+
isTypeOnly,
|
|
158
|
+
line
|
|
159
|
+
});
|
|
150
160
|
}
|
|
151
161
|
}
|
|
152
162
|
}
|
|
@@ -191,6 +201,10 @@ export function findClasses(root) {
|
|
|
191
201
|
// ---------------------------------------------------------------------------
|
|
192
202
|
/**
|
|
193
203
|
* Get AST node for inspection/debugging.
|
|
204
|
+
*
|
|
205
|
+
* @param node - The AST node to inspect.
|
|
206
|
+
* @param sourceCode - The original source text for text extraction.
|
|
207
|
+
* @returns A plain-object snapshot of the node and its children.
|
|
194
208
|
*/
|
|
195
209
|
export function getASTNode(node, sourceCode) {
|
|
196
210
|
return {
|
|
@@ -205,6 +219,11 @@ export function getASTNode(node, sourceCode) {
|
|
|
205
219
|
/**
|
|
206
220
|
* Check if a node has a specific decorator.
|
|
207
221
|
* Tree-sitter parses decorators as `decorator` nodes.
|
|
222
|
+
*
|
|
223
|
+
* @param node - The AST node to search for decorators.
|
|
224
|
+
* @param decoratorName - The decorator name to match.
|
|
225
|
+
* @param sourceCode - The original source text for name extraction.
|
|
226
|
+
* @returns True if the node carries a matching decorator.
|
|
208
227
|
*/
|
|
209
228
|
export function hasDecorator(node, decoratorName, sourceCode) {
|
|
210
229
|
const decorators = findNodes(node, n => n.type === 'decorator');
|
|
@@ -231,6 +250,10 @@ export function hasDecorator(node, decoratorName, sourceCode) {
|
|
|
231
250
|
/**
|
|
232
251
|
* Get method names from a class declaration node.
|
|
233
252
|
* Tree-sitter: class_declaration → class_body → method_definition / public_field_definition
|
|
253
|
+
*
|
|
254
|
+
* @param classNode - The class declaration node to inspect.
|
|
255
|
+
* @param sourceCode - The original source text for name extraction.
|
|
256
|
+
* @returns The names of the class's methods and public fields.
|
|
234
257
|
*/
|
|
235
258
|
export function getClassMethods(classNode, sourceCode) {
|
|
236
259
|
const methods = [];
|
|
@@ -253,6 +276,9 @@ export function getClassMethods(classNode, sourceCode) {
|
|
|
253
276
|
/**
|
|
254
277
|
* Count lines of code (excluding comments and empty lines).
|
|
255
278
|
* Takes source text directly instead of ts.SourceFile.
|
|
279
|
+
*
|
|
280
|
+
* @param sourceCode - The source text to count lines in.
|
|
281
|
+
* @returns The number of non-comment, non-empty lines.
|
|
256
282
|
*/
|
|
257
283
|
export function countLinesOfCode(sourceCode) {
|
|
258
284
|
const lines = sourceCode.split('\n');
|
|
@@ -290,6 +316,9 @@ export function isAsyncFunction(node) {
|
|
|
290
316
|
/**
|
|
291
317
|
* Get parameter count for a function/method node.
|
|
292
318
|
* Tree-sitter: formal_parameters → required_parameter / optional_parameter.
|
|
319
|
+
*
|
|
320
|
+
* @param node - The function or method node to inspect.
|
|
321
|
+
* @returns The number of declared parameters.
|
|
293
322
|
*/
|
|
294
323
|
export function getParameterCount(node) {
|
|
295
324
|
const params = findChildOfType(node, 'formal_parameters');
|
|
@@ -297,8 +326,7 @@ export function getParameterCount(node) {
|
|
|
297
326
|
return 0;
|
|
298
327
|
let count = 0;
|
|
299
328
|
for (const child of params.children ?? []) {
|
|
300
|
-
if (child.type === 'required_parameter' || child.type === 'optional_parameter'
|
|
301
|
-
child.type === 'rest_parameter') {
|
|
329
|
+
if (child.type === 'required_parameter' || child.type === 'optional_parameter') {
|
|
302
330
|
count++;
|
|
303
331
|
}
|
|
304
332
|
}
|
|
@@ -330,6 +358,9 @@ export function findInterfaces(root) {
|
|
|
330
358
|
/**
|
|
331
359
|
* Parse a TypeScript file and return an AST.
|
|
332
360
|
* Uses the adapterBridge parseFile function.
|
|
361
|
+
*
|
|
362
|
+
* @param filePath - The path of the file to parse.
|
|
363
|
+
* @returns The parsed AST plus any parse errors.
|
|
333
364
|
*/
|
|
334
365
|
export async function parseTypeScriptFile(filePath) {
|
|
335
366
|
// Dynamic import to avoid circular dependency
|
|
@@ -350,6 +381,10 @@ export async function parseTypeScriptFile(filePath) {
|
|
|
350
381
|
/**
|
|
351
382
|
* Enhanced version of getImports that returns detailed ImportMapping[].
|
|
352
383
|
* Uses tree-sitter import_statement traversal.
|
|
384
|
+
*
|
|
385
|
+
* @param root - The root AST node to search for import statements.
|
|
386
|
+
* @param sourceCode - The original source text for name extraction.
|
|
387
|
+
* @returns The detailed import mappings extracted from the file.
|
|
353
388
|
*/
|
|
354
389
|
export function getImportsDetailed(root, sourceCode) {
|
|
355
390
|
const imports = [];
|
|
@@ -426,10 +461,14 @@ export function getImportsDetailed(root, sourceCode) {
|
|
|
426
461
|
/**
|
|
427
462
|
* Get re-exports from a source file.
|
|
428
463
|
* Tree-sitter: export_statement → string (module specifier).
|
|
464
|
+
*
|
|
465
|
+
* @param root - The root AST node to search for re-exports.
|
|
466
|
+
* @param sourceCode - The original source text for name extraction.
|
|
467
|
+
* @returns The list of re-exported names and their source modules.
|
|
429
468
|
*/
|
|
430
469
|
export function getReExports(root, sourceCode) {
|
|
431
470
|
const reExports = [];
|
|
432
|
-
const exportNodes = findNodes(root, n => n.type === 'export_statement'
|
|
471
|
+
const exportNodes = findNodes(root, n => n.type === 'export_statement');
|
|
433
472
|
for (const node of exportNodes) {
|
|
434
473
|
// Check if there's a module specifier (export { x } from './y')
|
|
435
474
|
const moduleNode = findChildOfType(node, 'string');
|
|
@@ -438,22 +477,19 @@ export function getReExports(root, sourceCode) {
|
|
|
438
477
|
const moduleSpecifier = getNodeText(moduleNode, sourceCode).replace(/^["']|["']$/g, '');
|
|
439
478
|
const exportClause = findChildOfType(node, 'export_clause');
|
|
440
479
|
if (exportClause) {
|
|
441
|
-
const
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
const
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
: getNodeText(identifiers[identifiers.length - 1], sourceCode);
|
|
451
|
-
reExports.push({ name, module: moduleSpecifier });
|
|
452
|
-
}
|
|
480
|
+
for (const child of exportClause.children ?? []) {
|
|
481
|
+
if (child.type !== 'export_specifier')
|
|
482
|
+
continue;
|
|
483
|
+
const identifiers = child.children?.filter(c => c.type === 'identifier') ?? [];
|
|
484
|
+
if (identifiers.length > 0) {
|
|
485
|
+
const name = identifiers.length > 1
|
|
486
|
+
? getNodeText(identifiers[0], sourceCode)
|
|
487
|
+
: getNodeText(identifiers[identifiers.length - 1], sourceCode);
|
|
488
|
+
reExports.push({ name, module: moduleSpecifier });
|
|
453
489
|
}
|
|
454
490
|
}
|
|
455
491
|
}
|
|
456
|
-
else
|
|
492
|
+
else {
|
|
457
493
|
// export * from './module' — no export clause
|
|
458
494
|
reExports.push({ name: '*', module: moduleSpecifier });
|
|
459
495
|
}
|
|
@@ -471,12 +507,12 @@ export function getReExports(root, sourceCode) {
|
|
|
471
507
|
* | TS API check | Tree-sitter equivalent |
|
|
472
508
|
* |------------------------------------|----------------------------------------|
|
|
473
509
|
* | ts.isTypeNode(p) | p.type === 'type_annotation' |
|
|
474
|
-
* | ts.isTypeReferenceNode(p) | p.type === '
|
|
475
|
-
* | ts.isTypeQueryNode(p) | p.type === '
|
|
476
|
-
* | ts.isQualifiedName(p) | p.type === '
|
|
510
|
+
* | ts.isTypeReferenceNode(p) | p.type === 'type_identifier' |
|
|
511
|
+
* | ts.isTypeQueryNode(p) | p.type === 'type_query' |
|
|
512
|
+
* | ts.isQualifiedName(p) | p.type === 'nested_type_identifier' |
|
|
477
513
|
* | ts.isExpressionWithTypeArguments(p)| p.type === 'generic_type' |
|
|
478
514
|
* | ts.isPropertyAccessExpression(p) | p.type === 'member_expression' |
|
|
479
|
-
* | ts.isHeritageClause(p) | p.type === '
|
|
515
|
+
* | ts.isHeritageClause(p) | p.type === 'class_heritage' |
|
|
480
516
|
* | ts.isInterfaceDeclaration(p) | p.type === 'interface_declaration' |
|
|
481
517
|
* | ts.isTypeAliasDeclaration(p) | p.type === 'type_alias_declaration' |
|
|
482
518
|
* | ts.isClassDeclaration(p) | p.type === 'class_declaration' |
|
|
@@ -494,16 +530,16 @@ export function getReExports(root, sourceCode) {
|
|
|
494
530
|
* | ts.isTypePredicateNode(p) | p.type === 'type_predicate' |
|
|
495
531
|
* | ts.isMethodDeclaration(p) | p.type === 'method_definition' |
|
|
496
532
|
* | ts.isMethodSignature(p) | p.type === 'method_signature' |
|
|
497
|
-
* | ts.isPropertyDeclaration(p) | p.type === '
|
|
533
|
+
* | ts.isPropertyDeclaration(p) | p.type === 'public_field_definition' |
|
|
498
534
|
* | ts.isPropertySignature(p) | p.type === 'property_signature' |
|
|
499
|
-
* | ts.isGetAccessorDeclaration(p) | p.type === '
|
|
535
|
+
* | ts.isGetAccessorDeclaration(p) | p.type === 'method_definition' |
|
|
500
536
|
* | ts.isFunctionDeclaration(p) | p.type === 'function_declaration' |
|
|
501
537
|
* | ts.isArrowFunction(p) | p.type === 'arrow_function' |
|
|
502
538
|
* | ts.isFunctionExpression(p) | p.type === 'function_expression' |
|
|
503
539
|
* | ts.isParameter(p) | p.type === 'required_parameter' |
|
|
504
540
|
* | ts.isCallExpression(p) | p.type === 'call_expression' |
|
|
505
541
|
* | ts.isNewExpression(p) | p.type === 'new_expression' |
|
|
506
|
-
* | ts.isTaggedTemplateExpression(p) | p.type === '
|
|
542
|
+
* | ts.isTaggedTemplateExpression(p) | p.type === 'call_expression' |
|
|
507
543
|
* | ts.isImportDeclaration(p) | p.type === 'import_statement' |
|
|
508
544
|
* | ts.isImportSpecifier(p) | p.type === 'import_specifier' |
|
|
509
545
|
* | ts.isImportClause(p) | p.type === 'import_clause' |
|
|
@@ -523,8 +559,9 @@ export function getReExports(root, sourceCode) {
|
|
|
523
559
|
const TYPE_NODE_TYPES = new Set([
|
|
524
560
|
'type_annotation',
|
|
525
561
|
'type_identifier',
|
|
562
|
+
'nested_identifier',
|
|
563
|
+
'nested_type_identifier',
|
|
526
564
|
'generic_type',
|
|
527
|
-
'qualified_name',
|
|
528
565
|
'union_type',
|
|
529
566
|
'intersection_type',
|
|
530
567
|
'conditional_type',
|
|
@@ -532,15 +569,14 @@ const TYPE_NODE_TYPES = new Set([
|
|
|
532
569
|
'index_signature',
|
|
533
570
|
'type_predicate',
|
|
534
571
|
'predefined_type',
|
|
535
|
-
'string_type',
|
|
536
|
-
'number_type',
|
|
537
|
-
'boolean_type',
|
|
538
572
|
'object_type',
|
|
539
573
|
'array_type',
|
|
540
574
|
'tuple_type',
|
|
541
575
|
'function_type',
|
|
542
576
|
'constructor_type',
|
|
543
|
-
'
|
|
577
|
+
'type_query',
|
|
578
|
+
'extends_type_clause',
|
|
579
|
+
'implements_clause',
|
|
544
580
|
'template_type',
|
|
545
581
|
'literal_type',
|
|
546
582
|
'lookup_type',
|
|
@@ -561,7 +597,17 @@ const DECLARATION_TYPES = new Set([
|
|
|
561
597
|
'type_alias_declaration',
|
|
562
598
|
]);
|
|
563
599
|
/** Set of node types that represent spreads */
|
|
564
|
-
const SPREAD_TYPES = new Set(['spread_element'
|
|
600
|
+
const SPREAD_TYPES = new Set(['spread_element']);
|
|
601
|
+
/** Node types whose direct `type_annotation` child holds an identifier's type
|
|
602
|
+
* position — parameters, property signatures, index signatures, and type
|
|
603
|
+
* assertions. Collapsed into one generic check in isTypeOnlyUsage. */
|
|
604
|
+
const DIRECT_TYPE_ANNOTATION_PARENTS = new Set([
|
|
605
|
+
'required_parameter',
|
|
606
|
+
'optional_parameter',
|
|
607
|
+
'property_signature',
|
|
608
|
+
'index_signature',
|
|
609
|
+
'type_assertion',
|
|
610
|
+
]);
|
|
565
611
|
/**
|
|
566
612
|
* Recursively check if the identifier node is contained within the given type node.
|
|
567
613
|
*/
|
|
@@ -581,6 +627,73 @@ function isNodeInTypePosition(identifier, typeNode) {
|
|
|
581
627
|
checkNode(typeNode);
|
|
582
628
|
return found;
|
|
583
629
|
}
|
|
630
|
+
/**
|
|
631
|
+
* Return true when `identifier` sits inside the `type_arguments` node of
|
|
632
|
+
* `container` (e.g. `Array<SomeType>`). Shared by the direct generic-type
|
|
633
|
+
* position and the call/new/tagged-template type-argument positions.
|
|
634
|
+
*/
|
|
635
|
+
function isInTypeArguments(identifier, container) {
|
|
636
|
+
const typeArgs = findChildOfType(container, 'type_arguments');
|
|
637
|
+
if (!typeArgs)
|
|
638
|
+
return false;
|
|
639
|
+
for (const arg of typeArgs.children ?? []) {
|
|
640
|
+
if (isNodeInTypePosition(identifier, arg))
|
|
641
|
+
return true;
|
|
642
|
+
}
|
|
643
|
+
return false;
|
|
644
|
+
}
|
|
645
|
+
/**
|
|
646
|
+
* `function test<T extends SomeType>()` — the identifier is a type-parameter
|
|
647
|
+
* constraint. When a direct `type_annotation` constraint exists it is decisive
|
|
648
|
+
* (return its result, do not fall through to the secondary child scan).
|
|
649
|
+
*/
|
|
650
|
+
function isTypeParameterConstraintUsage(identifier, parent) {
|
|
651
|
+
if (parent.type !== 'type_parameter')
|
|
652
|
+
return false;
|
|
653
|
+
const constraint = findChildOfType(parent, 'type_annotation');
|
|
654
|
+
if (constraint) {
|
|
655
|
+
return isNodeInTypePosition(identifier, constraint);
|
|
656
|
+
}
|
|
657
|
+
for (const child of parent.children ?? []) {
|
|
658
|
+
if (child.type !== 'identifier' && child.type !== 'type_parameter') {
|
|
659
|
+
if (isNodeInTypePosition(identifier, child))
|
|
660
|
+
return true;
|
|
661
|
+
}
|
|
662
|
+
}
|
|
663
|
+
return false;
|
|
664
|
+
}
|
|
665
|
+
/**
|
|
666
|
+
* Mapped type (`{ [K in T]: ... }`) — the identifier is a mapped-type constraint
|
|
667
|
+
* or value type.
|
|
668
|
+
*/
|
|
669
|
+
function isMappedTypeUsage(identifier, parent) {
|
|
670
|
+
if (parent.type !== 'mapped_type_clause')
|
|
671
|
+
return false;
|
|
672
|
+
const typeParam = findChildOfType(parent, 'type_parameter');
|
|
673
|
+
if (typeParam) {
|
|
674
|
+
const constraint = findChildOfType(typeParam, 'type_annotation');
|
|
675
|
+
if (constraint && isNodeInTypePosition(identifier, constraint))
|
|
676
|
+
return true;
|
|
677
|
+
}
|
|
678
|
+
const typeAnnot = findChildOfType(parent, 'type_annotation');
|
|
679
|
+
if (typeAnnot && isNodeInTypePosition(identifier, typeAnnot))
|
|
680
|
+
return true;
|
|
681
|
+
return false;
|
|
682
|
+
}
|
|
683
|
+
/**
|
|
684
|
+
* Type positions reachable through the parent's own parent — type arguments on
|
|
685
|
+
* call/new/tagged-template expressions (tagged templates parse as
|
|
686
|
+
* `call_expression`).
|
|
687
|
+
*/
|
|
688
|
+
function isAncestorTypeUsage(identifier, parent) {
|
|
689
|
+
if (!parent.parent)
|
|
690
|
+
return false;
|
|
691
|
+
const grand = parent.parent;
|
|
692
|
+
if (grand.type === 'call_expression' || grand.type === 'new_expression') {
|
|
693
|
+
return isInTypeArguments(identifier, grand);
|
|
694
|
+
}
|
|
695
|
+
return false;
|
|
696
|
+
}
|
|
584
697
|
/**
|
|
585
698
|
* Check if an identifier node is used only as a type.
|
|
586
699
|
* Uses tree-sitter node type checks instead of TS API's `isTypeNode` etc.
|
|
@@ -590,85 +703,19 @@ function isTypeOnlyUsage(identifier) {
|
|
|
590
703
|
if (!parent)
|
|
591
704
|
return false;
|
|
592
705
|
// Direct type position — parent is a type_annotation, type_reference, etc.
|
|
593
|
-
if (TYPE_NODE_TYPES.has(parent.type))
|
|
706
|
+
if (TYPE_NODE_TYPES.has(parent.type))
|
|
594
707
|
return true;
|
|
595
|
-
}
|
|
596
708
|
// Type query: `typeof X`
|
|
597
|
-
if (parent.type === '
|
|
709
|
+
if (parent.type === 'type_query')
|
|
598
710
|
return true;
|
|
599
|
-
}
|
|
600
|
-
// Qualified name in type position
|
|
601
|
-
if (parent.type === 'qualified_name' && parent.children?.[0] === identifier) {
|
|
602
|
-
return isTypeOnlyUsage(parent);
|
|
603
|
-
}
|
|
604
|
-
// Generic type arguments: `SomeType<X>` where X is the identifier
|
|
605
|
-
if (parent.type === 'generic_type' && parent.children?.[0] === identifier) {
|
|
606
|
-
const heritageClause = parent.parent;
|
|
607
|
-
if (heritageClause?.type === 'heritage_clause') {
|
|
608
|
-
const isExtends = hasModifier(heritageClause, 'extends');
|
|
609
|
-
if (isExtends) {
|
|
610
|
-
const interfaceNode = heritageClause.parent;
|
|
611
|
-
if (interfaceNode?.type === 'interface_declaration') {
|
|
612
|
-
return true;
|
|
613
|
-
}
|
|
614
|
-
}
|
|
615
|
-
}
|
|
616
|
-
}
|
|
617
|
-
// `namespace.Type` in type position — check if left side is identifier
|
|
618
|
-
if (parent.type === 'member_expression' && parent.children?.[0] === identifier) {
|
|
619
|
-
const grandParent = parent.parent;
|
|
620
|
-
if (grandParent?.type === 'generic_type') {
|
|
621
|
-
const heritageClause = grandParent.parent;
|
|
622
|
-
if (heritageClause?.type === 'heritage_clause') {
|
|
623
|
-
const isExtends = hasModifier(heritageClause, 'extends');
|
|
624
|
-
if (isExtends) {
|
|
625
|
-
const interfaceNode = heritageClause.parent;
|
|
626
|
-
if (interfaceNode?.type === 'interface_declaration') {
|
|
627
|
-
return true;
|
|
628
|
-
}
|
|
629
|
-
}
|
|
630
|
-
}
|
|
631
|
-
}
|
|
632
|
-
}
|
|
633
711
|
// Type alias: `type X = SomeType`
|
|
634
712
|
if (parent.type === 'type_alias_declaration') {
|
|
635
713
|
const typeAnnotation = findChildOfType(parent, 'type_annotation');
|
|
636
|
-
if (typeAnnotation)
|
|
714
|
+
if (typeAnnotation)
|
|
637
715
|
return isNodeInTypePosition(identifier, typeAnnotation);
|
|
638
|
-
}
|
|
639
|
-
}
|
|
640
|
-
// Class implements: `class X implements SomeType`
|
|
641
|
-
if (parent.type === 'class_declaration') {
|
|
642
|
-
for (const child of parent.children ?? []) {
|
|
643
|
-
if (child.type !== 'heritage_clause')
|
|
644
|
-
continue;
|
|
645
|
-
const isImplements = hasModifier(child, 'implements');
|
|
646
|
-
if (!isImplements)
|
|
647
|
-
continue;
|
|
648
|
-
for (const typeNode of child.children ?? []) {
|
|
649
|
-
if (typeNode === identifier)
|
|
650
|
-
return true;
|
|
651
|
-
if (typeNode.type === 'member_expression' && typeNode.children?.[0] === identifier)
|
|
652
|
-
return true;
|
|
653
|
-
if (typeNode.type === 'generic_type' && typeNode.children?.[0] === identifier)
|
|
654
|
-
return true;
|
|
655
|
-
}
|
|
656
|
-
}
|
|
657
|
-
}
|
|
658
|
-
// Generic constraints: `function test<T extends SomeType>()`
|
|
659
|
-
if (parent.type === 'type_parameter') {
|
|
660
|
-
const constraint = findChildOfType(parent, 'type_annotation'); // or constraint
|
|
661
|
-
if (constraint) {
|
|
662
|
-
return isNodeInTypePosition(identifier, constraint);
|
|
663
|
-
}
|
|
664
|
-
// Also check for generic_type in constraint position
|
|
665
|
-
for (const child of parent.children ?? []) {
|
|
666
|
-
if (child.type !== 'identifier' && child.type !== 'type_parameter') {
|
|
667
|
-
if (isNodeInTypePosition(identifier, child))
|
|
668
|
-
return true;
|
|
669
|
-
}
|
|
670
|
-
}
|
|
671
716
|
}
|
|
717
|
+
if (isTypeParameterConstraintUsage(identifier, parent))
|
|
718
|
+
return true;
|
|
672
719
|
// Type annotations in variable declarations: `const x: SomeType = ...`
|
|
673
720
|
if (parent.type === 'variable_declarator') {
|
|
674
721
|
const typeAnnot = findChildOfType(parent, 'type_annotation');
|
|
@@ -681,20 +728,17 @@ function isTypeOnlyUsage(identifier) {
|
|
|
681
728
|
if (typeNode && isNodeInTypePosition(identifier, typeNode))
|
|
682
729
|
return true;
|
|
683
730
|
}
|
|
684
|
-
|
|
685
|
-
|
|
686
|
-
|
|
731
|
+
// Parameter / property / index-signature / type-assertion parents: a direct
|
|
732
|
+
// `type_annotation` child holds the type position.
|
|
733
|
+
if (DIRECT_TYPE_ANNOTATION_PARENTS.has(parent.type)) {
|
|
734
|
+
const typeAnnot = findChildOfType(parent, 'type_annotation');
|
|
735
|
+
if (typeAnnot && isNodeInTypePosition(identifier, typeAnnot))
|
|
687
736
|
return true;
|
|
688
737
|
}
|
|
689
738
|
// Type parameters/arguments: `Array<SomeType>`, `Promise<SomeType>`
|
|
690
739
|
if (parent.type === 'type_identifier' || parent.type === 'generic_type') {
|
|
691
|
-
|
|
692
|
-
|
|
693
|
-
for (const arg of typeArgs.children ?? []) {
|
|
694
|
-
if (isNodeInTypePosition(identifier, arg))
|
|
695
|
-
return true;
|
|
696
|
-
}
|
|
697
|
-
}
|
|
740
|
+
if (isInTypeArguments(identifier, parent))
|
|
741
|
+
return true;
|
|
698
742
|
}
|
|
699
743
|
// Return type annotations: `function test(): SomeType`
|
|
700
744
|
if (DECLARATION_TYPES.has(parent.type)) {
|
|
@@ -702,36 +746,8 @@ function isTypeOnlyUsage(identifier) {
|
|
|
702
746
|
if (typeAnnot && isNodeInTypePosition(identifier, typeAnnot))
|
|
703
747
|
return true;
|
|
704
748
|
}
|
|
705
|
-
|
|
706
|
-
|
|
707
|
-
const typeAnnot = findChildOfType(parent, 'type_annotation');
|
|
708
|
-
if (typeAnnot && isNodeInTypePosition(identifier, typeAnnot))
|
|
709
|
-
return true;
|
|
710
|
-
}
|
|
711
|
-
// Property type annotations: `{ prop: SomeType }` or `class { prop: SomeType }`
|
|
712
|
-
if (parent.type === 'property_signature' || parent.type === 'class_property') {
|
|
713
|
-
const typeAnnot = findChildOfType(parent, 'type_annotation');
|
|
714
|
-
if (typeAnnot && isNodeInTypePosition(identifier, typeAnnot))
|
|
715
|
-
return true;
|
|
716
|
-
}
|
|
717
|
-
// Index signature: `{ [key: string]: SomeType }`
|
|
718
|
-
if (parent.type === 'index_signature') {
|
|
719
|
-
const typeAnnot = findChildOfType(parent, 'type_annotation');
|
|
720
|
-
if (typeAnnot && isNodeInTypePosition(identifier, typeAnnot))
|
|
721
|
-
return true;
|
|
722
|
-
}
|
|
723
|
-
// Mapped type constraint or type
|
|
724
|
-
if (parent.type === 'mapped_type_clause') {
|
|
725
|
-
const typeParam = findChildOfType(parent, 'type_parameter');
|
|
726
|
-
if (typeParam) {
|
|
727
|
-
const constraint = findChildOfType(typeParam, 'type_annotation');
|
|
728
|
-
if (constraint && isNodeInTypePosition(identifier, constraint))
|
|
729
|
-
return true;
|
|
730
|
-
}
|
|
731
|
-
const typeAnnot = findChildOfType(parent, 'type_annotation');
|
|
732
|
-
if (typeAnnot && isNodeInTypePosition(identifier, typeAnnot))
|
|
733
|
-
return true;
|
|
734
|
-
}
|
|
749
|
+
if (isMappedTypeUsage(identifier, parent))
|
|
750
|
+
return true;
|
|
735
751
|
// Conditional types: `T extends SomeType ? X : Y`
|
|
736
752
|
if (parent.type === 'conditional_type') {
|
|
737
753
|
for (const child of parent.children ?? []) {
|
|
@@ -752,225 +768,184 @@ function isTypeOnlyUsage(identifier) {
|
|
|
752
768
|
if (annot && isNodeInTypePosition(identifier, annot))
|
|
753
769
|
return true;
|
|
754
770
|
}
|
|
755
|
-
|
|
756
|
-
|
|
757
|
-
|
|
758
|
-
|
|
759
|
-
|
|
771
|
+
if (isAncestorTypeUsage(identifier, parent))
|
|
772
|
+
return true;
|
|
773
|
+
return false;
|
|
774
|
+
}
|
|
775
|
+
/**
|
|
776
|
+
* Extract identifier usage to track which imports are used.
|
|
777
|
+
* Uses tree-sitter AST traversal with walkAST.
|
|
778
|
+
*
|
|
779
|
+
* @param root - The root AST node to walk.
|
|
780
|
+
/**
|
|
781
|
+
* Record a single usage of an imported name in the usage map: increments the
|
|
782
|
+
* count, appends the line, and returns the (possibly freshly-created) entry so
|
|
783
|
+
* callers that classify the usage (type / reexport) can mutate it in place.
|
|
784
|
+
*/
|
|
785
|
+
function recordUsage(usageMap, name, node) {
|
|
786
|
+
const { line } = bridgeGetLineAndColumn(node);
|
|
787
|
+
const existing = usageMap.get(name) || {
|
|
788
|
+
usageType: 'direct',
|
|
789
|
+
usageCount: 0,
|
|
790
|
+
lineNumbers: [],
|
|
791
|
+
};
|
|
792
|
+
existing.usageCount++;
|
|
793
|
+
existing.lineNumbers.push(line);
|
|
794
|
+
usageMap.set(name, existing);
|
|
795
|
+
return existing;
|
|
796
|
+
}
|
|
797
|
+
/**
|
|
798
|
+
* Plain identifier references. Skips identifiers inside import declarations,
|
|
799
|
+
* and for member/subscript access counts only the leftmost (object) identifier.
|
|
800
|
+
* Classifies the usage as type-only or re-export where applicable.
|
|
801
|
+
*/
|
|
802
|
+
function recordIdentifierUsage(node, sourceCode, importNames, usageMap) {
|
|
803
|
+
const name = getNodeText(node, sourceCode);
|
|
804
|
+
if (!importNames.has(name))
|
|
805
|
+
return;
|
|
806
|
+
let shouldCount = true;
|
|
807
|
+
let p = node.parent;
|
|
808
|
+
while (p) {
|
|
809
|
+
if (p.type === 'import_statement' || p.type === 'import_specifier' ||
|
|
810
|
+
p.type === 'import_clause' || p.type === 'named_imports') {
|
|
811
|
+
shouldCount = false;
|
|
812
|
+
break;
|
|
760
813
|
}
|
|
761
|
-
|
|
762
|
-
|
|
763
|
-
|
|
764
|
-
|
|
765
|
-
|
|
766
|
-
|
|
767
|
-
|
|
768
|
-
|
|
769
|
-
|
|
814
|
+
p = p.parent;
|
|
815
|
+
}
|
|
816
|
+
// For member expressions, only count the leftmost (object) identifier
|
|
817
|
+
if (shouldCount && node.parent?.type === 'member_expression') {
|
|
818
|
+
shouldCount = node.parent.children?.[0] === node;
|
|
819
|
+
}
|
|
820
|
+
// For subscript expressions (element access), only count expression side
|
|
821
|
+
if (shouldCount && node.parent?.type === 'subscript_expression') {
|
|
822
|
+
shouldCount = node.parent.children?.[0] === node;
|
|
823
|
+
}
|
|
824
|
+
if (!shouldCount)
|
|
825
|
+
return;
|
|
826
|
+
const existing = recordUsage(usageMap, name, node);
|
|
827
|
+
if (isTypeOnlyUsage(node)) {
|
|
828
|
+
existing.usageType = 'type';
|
|
829
|
+
}
|
|
830
|
+
else if (node.parent?.type === 'export_specifier') {
|
|
831
|
+
existing.usageType = 'reexport';
|
|
832
|
+
}
|
|
833
|
+
}
|
|
834
|
+
/**
|
|
835
|
+
* Spread elements (`...Imported`, rest params) whose spread expression is an
|
|
836
|
+
* imported identifier.
|
|
837
|
+
*/
|
|
838
|
+
function recordSpreadUsage(node, sourceCode, importNames, usageMap) {
|
|
839
|
+
const expr = node.children?.find(c => c.type !== '...');
|
|
840
|
+
if (expr?.type === 'identifier' && importNames.has(getNodeText(expr, sourceCode))) {
|
|
841
|
+
recordUsage(usageMap, getNodeText(expr, sourceCode), expr);
|
|
842
|
+
}
|
|
843
|
+
}
|
|
844
|
+
/**
|
|
845
|
+
* JSX elements (`<Button />`, `<Button.Primary />`) whose tag (or the leftmost
|
|
846
|
+
* member of the tag) is an imported identifier.
|
|
847
|
+
*/
|
|
848
|
+
function recordJsxUsage(node, sourceCode, importNames, usageMap) {
|
|
849
|
+
let tagNameNode;
|
|
850
|
+
if (node.type === 'jsx_element') {
|
|
851
|
+
const openTag = findChildOfType(node, 'jsx_opening_element');
|
|
852
|
+
if (openTag) {
|
|
853
|
+
tagNameNode = openTag.children?.find(c => c.type === 'identifier' || c.type === 'member_expression');
|
|
770
854
|
}
|
|
771
|
-
|
|
772
|
-
|
|
773
|
-
|
|
774
|
-
|
|
775
|
-
|
|
776
|
-
|
|
777
|
-
|
|
778
|
-
|
|
779
|
-
|
|
855
|
+
}
|
|
856
|
+
else {
|
|
857
|
+
tagNameNode = node.children?.find(c => c.type === 'identifier' || c.type === 'member_expression');
|
|
858
|
+
}
|
|
859
|
+
if (!tagNameNode)
|
|
860
|
+
return;
|
|
861
|
+
if (tagNameNode.type === 'identifier' && importNames.has(getNodeText(tagNameNode, sourceCode))) {
|
|
862
|
+
recordUsage(usageMap, getNodeText(tagNameNode, sourceCode), tagNameNode);
|
|
863
|
+
}
|
|
864
|
+
else if (tagNameNode.type === 'member_expression') {
|
|
865
|
+
const leftmost = tagNameNode.children?.[0];
|
|
866
|
+
if (leftmost?.type === 'identifier' && importNames.has(getNodeText(leftmost, sourceCode))) {
|
|
867
|
+
recordUsage(usageMap, getNodeText(leftmost, sourceCode), leftmost);
|
|
780
868
|
}
|
|
781
|
-
|
|
782
|
-
|
|
783
|
-
|
|
784
|
-
|
|
785
|
-
|
|
786
|
-
|
|
787
|
-
|
|
788
|
-
|
|
789
|
-
|
|
869
|
+
}
|
|
870
|
+
}
|
|
871
|
+
/**
|
|
872
|
+
* Decorators (`@withAuth`, `@Component()`): the decorator identifier, or the
|
|
873
|
+
* callee identifier of a call-expression decorator.
|
|
874
|
+
*/
|
|
875
|
+
function recordDecoratorUsage(node, sourceCode, importNames, usageMap) {
|
|
876
|
+
const id = findChildOfType(node, 'identifier');
|
|
877
|
+
if (id && importNames.has(getNodeText(id, sourceCode))) {
|
|
878
|
+
recordUsage(usageMap, getNodeText(id, sourceCode), id);
|
|
879
|
+
}
|
|
880
|
+
const callExpr = findChildOfType(node, 'call_expression');
|
|
881
|
+
if (callExpr) {
|
|
882
|
+
const callee = callExpr.children?.[0];
|
|
883
|
+
if (callee?.type === 'identifier' && importNames.has(getNodeText(callee, sourceCode))) {
|
|
884
|
+
recordUsage(usageMap, getNodeText(callee, sourceCode), callee);
|
|
790
885
|
}
|
|
791
886
|
}
|
|
792
|
-
|
|
887
|
+
}
|
|
888
|
+
/**
|
|
889
|
+
* Object-literal property assignments (`{ key: ImportedValue }`): the value
|
|
890
|
+
* identifier when it is an imported name.
|
|
891
|
+
*/
|
|
892
|
+
function recordPairUsage(node, sourceCode, importNames, usageMap) {
|
|
893
|
+
const key = node.children?.find(c => c.type === 'property_identifier');
|
|
894
|
+
const value = node.children?.find(c => c.type === 'identifier' && c !== key);
|
|
895
|
+
if (value && importNames.has(getNodeText(value, sourceCode))) {
|
|
896
|
+
recordUsage(usageMap, getNodeText(value, sourceCode), value);
|
|
897
|
+
}
|
|
898
|
+
}
|
|
899
|
+
/**
|
|
900
|
+
* Shorthand property assignments (`{ ComponentA }`): the identifier child that
|
|
901
|
+
* references the imported name.
|
|
902
|
+
*/
|
|
903
|
+
function recordShorthandUsage(node, sourceCode, importNames, usageMap) {
|
|
904
|
+
const ref = node.children?.find(c => c.type === 'identifier');
|
|
905
|
+
if (ref && importNames.has(getNodeText(ref, sourceCode))) {
|
|
906
|
+
recordUsage(usageMap, getNodeText(ref, sourceCode), ref);
|
|
907
|
+
}
|
|
908
|
+
else if (ref && importNames.has(getNodeText(ref, sourceCode))) {
|
|
909
|
+
// shorthand_property_identifier might itself be just text
|
|
910
|
+
recordUsage(usageMap, getNodeText(node, sourceCode), node);
|
|
911
|
+
}
|
|
912
|
+
}
|
|
913
|
+
/**
|
|
914
|
+
* Dispatch a single walked node to its usage recorder based on node type.
|
|
915
|
+
*/
|
|
916
|
+
function recordNodeUsage(node, sourceCode, importNames, usageMap) {
|
|
917
|
+
if (node.type === 'identifier') {
|
|
918
|
+
recordIdentifierUsage(node, sourceCode, importNames, usageMap);
|
|
919
|
+
}
|
|
920
|
+
else if (SPREAD_TYPES.has(node.type)) {
|
|
921
|
+
recordSpreadUsage(node, sourceCode, importNames, usageMap);
|
|
922
|
+
}
|
|
923
|
+
else if (node.type === 'jsx_element' || node.type === 'jsx_self_closing_element') {
|
|
924
|
+
recordJsxUsage(node, sourceCode, importNames, usageMap);
|
|
925
|
+
}
|
|
926
|
+
else if (node.type === 'decorator') {
|
|
927
|
+
recordDecoratorUsage(node, sourceCode, importNames, usageMap);
|
|
928
|
+
}
|
|
929
|
+
else if (node.type === 'pair') {
|
|
930
|
+
recordPairUsage(node, sourceCode, importNames, usageMap);
|
|
931
|
+
}
|
|
932
|
+
else if (node.type === 'shorthand_property_identifier') {
|
|
933
|
+
recordShorthandUsage(node, sourceCode, importNames, usageMap);
|
|
934
|
+
}
|
|
793
935
|
}
|
|
794
936
|
/**
|
|
795
937
|
* Extract identifier usage to track which imports are used.
|
|
796
938
|
* Uses tree-sitter AST traversal with walkAST.
|
|
939
|
+
*
|
|
940
|
+
* @param root - The root AST node to walk.
|
|
941
|
+
* @param sourceCode - The original source text for name extraction.
|
|
942
|
+
* @param importNames - Set of imported names to track usage for.
|
|
943
|
+
* @returns Map of imported name to its usage information.
|
|
797
944
|
*/
|
|
798
945
|
export function extractIdentifierUsage(root, sourceCode, importNames) {
|
|
799
946
|
const usageMap = new Map();
|
|
800
947
|
walkAST(root, (node) => {
|
|
801
|
-
|
|
802
|
-
if (node.type === 'identifier') {
|
|
803
|
-
const name = getNodeText(node, sourceCode);
|
|
804
|
-
if (importNames.has(name)) {
|
|
805
|
-
let shouldCount = true;
|
|
806
|
-
// Skip if part of an import declaration
|
|
807
|
-
let p = node.parent;
|
|
808
|
-
while (p) {
|
|
809
|
-
if (p.type === 'import_statement' || p.type === 'import_specifier' ||
|
|
810
|
-
p.type === 'import_clause' || p.type === 'named_imports') {
|
|
811
|
-
shouldCount = false;
|
|
812
|
-
break;
|
|
813
|
-
}
|
|
814
|
-
p = p.parent;
|
|
815
|
-
}
|
|
816
|
-
// For member expressions, only count the leftmost (object) identifier
|
|
817
|
-
if (shouldCount && node.parent?.type === 'member_expression') {
|
|
818
|
-
shouldCount = node.parent.children?.[0] === node;
|
|
819
|
-
}
|
|
820
|
-
// For subscript expressions (element access), only count expression side
|
|
821
|
-
if (shouldCount && node.parent?.type === 'subscript_expression') {
|
|
822
|
-
shouldCount = node.parent.children?.[0] === node;
|
|
823
|
-
}
|
|
824
|
-
if (shouldCount) {
|
|
825
|
-
const { line } = bridgeGetLineAndColumn(node);
|
|
826
|
-
const existing = usageMap.get(name) || {
|
|
827
|
-
usageType: 'direct',
|
|
828
|
-
usageCount: 0,
|
|
829
|
-
lineNumbers: [],
|
|
830
|
-
};
|
|
831
|
-
existing.usageCount++;
|
|
832
|
-
existing.lineNumbers.push(line);
|
|
833
|
-
if (isTypeOnlyUsage(node)) {
|
|
834
|
-
existing.usageType = 'type';
|
|
835
|
-
}
|
|
836
|
-
else if (node.parent?.type === 'export_specifier') {
|
|
837
|
-
existing.usageType = 'reexport';
|
|
838
|
-
}
|
|
839
|
-
usageMap.set(name, existing);
|
|
840
|
-
}
|
|
841
|
-
}
|
|
842
|
-
}
|
|
843
|
-
// --- spread elements ---
|
|
844
|
-
else if (SPREAD_TYPES.has(node.type)) {
|
|
845
|
-
const expr = node.children?.find(c => c.type !== '...');
|
|
846
|
-
if (expr?.type === 'identifier' && importNames.has(getNodeText(expr, sourceCode))) {
|
|
847
|
-
const { line } = bridgeGetLineAndColumn(expr);
|
|
848
|
-
const existing = usageMap.get(getNodeText(expr, sourceCode)) || {
|
|
849
|
-
usageType: 'direct',
|
|
850
|
-
usageCount: 0,
|
|
851
|
-
lineNumbers: [],
|
|
852
|
-
};
|
|
853
|
-
existing.usageCount++;
|
|
854
|
-
existing.lineNumbers.push(line);
|
|
855
|
-
usageMap.set(getNodeText(expr, sourceCode), existing);
|
|
856
|
-
}
|
|
857
|
-
}
|
|
858
|
-
// --- JSX elements: <Button /> or <Button.Primary /> ---
|
|
859
|
-
else if (node.type === 'jsx_element' || node.type === 'jsx_self_closing_element') {
|
|
860
|
-
let tagNameNode;
|
|
861
|
-
if (node.type === 'jsx_element') {
|
|
862
|
-
const openTag = findChildOfType(node, 'open_tag');
|
|
863
|
-
if (openTag) {
|
|
864
|
-
tagNameNode = openTag.children?.find(c => c.type === 'identifier' || c.type === 'member_expression');
|
|
865
|
-
}
|
|
866
|
-
}
|
|
867
|
-
else {
|
|
868
|
-
tagNameNode = node.children?.find(c => c.type === 'identifier' || c.type === 'member_expression');
|
|
869
|
-
}
|
|
870
|
-
if (tagNameNode) {
|
|
871
|
-
if (tagNameNode.type === 'identifier' && importNames.has(getNodeText(tagNameNode, sourceCode))) {
|
|
872
|
-
const { line } = bridgeGetLineAndColumn(tagNameNode);
|
|
873
|
-
const existing = usageMap.get(getNodeText(tagNameNode, sourceCode)) || {
|
|
874
|
-
usageType: 'direct',
|
|
875
|
-
usageCount: 0,
|
|
876
|
-
lineNumbers: [],
|
|
877
|
-
};
|
|
878
|
-
existing.usageCount++;
|
|
879
|
-
existing.lineNumbers.push(line);
|
|
880
|
-
usageMap.set(getNodeText(tagNameNode, sourceCode), existing);
|
|
881
|
-
}
|
|
882
|
-
else if (tagNameNode.type === 'member_expression') {
|
|
883
|
-
const leftmost = tagNameNode.children?.[0];
|
|
884
|
-
if (leftmost?.type === 'identifier' && importNames.has(getNodeText(leftmost, sourceCode))) {
|
|
885
|
-
const { line } = bridgeGetLineAndColumn(leftmost);
|
|
886
|
-
const existing = usageMap.get(getNodeText(leftmost, sourceCode)) || {
|
|
887
|
-
usageType: 'direct',
|
|
888
|
-
usageCount: 0,
|
|
889
|
-
lineNumbers: [],
|
|
890
|
-
};
|
|
891
|
-
existing.usageCount++;
|
|
892
|
-
existing.lineNumbers.push(line);
|
|
893
|
-
usageMap.set(getNodeText(leftmost, sourceCode), existing);
|
|
894
|
-
}
|
|
895
|
-
}
|
|
896
|
-
}
|
|
897
|
-
}
|
|
898
|
-
// --- decorators: @withAuth ---
|
|
899
|
-
else if (node.type === 'decorator') {
|
|
900
|
-
// decorator → identifier (e.g., @deprecated)
|
|
901
|
-
const id = findChildOfType(node, 'identifier');
|
|
902
|
-
if (id && importNames.has(getNodeText(id, sourceCode))) {
|
|
903
|
-
const { line } = bridgeGetLineAndColumn(id);
|
|
904
|
-
const existing = usageMap.get(getNodeText(id, sourceCode)) || {
|
|
905
|
-
usageType: 'direct',
|
|
906
|
-
usageCount: 0,
|
|
907
|
-
lineNumbers: [],
|
|
908
|
-
};
|
|
909
|
-
existing.usageCount++;
|
|
910
|
-
existing.lineNumbers.push(line);
|
|
911
|
-
usageMap.set(getNodeText(id, sourceCode), existing);
|
|
912
|
-
}
|
|
913
|
-
// decorator → call_expression → identifier (e.g., @Component())
|
|
914
|
-
const callExpr = findChildOfType(node, 'call_expression');
|
|
915
|
-
if (callExpr) {
|
|
916
|
-
const callee = callExpr.children?.[0];
|
|
917
|
-
if (callee?.type === 'identifier' && importNames.has(getNodeText(callee, sourceCode))) {
|
|
918
|
-
const { line } = bridgeGetLineAndColumn(callee);
|
|
919
|
-
const existing = usageMap.get(getNodeText(callee, sourceCode)) || {
|
|
920
|
-
usageType: 'direct',
|
|
921
|
-
usageCount: 0,
|
|
922
|
-
lineNumbers: [],
|
|
923
|
-
};
|
|
924
|
-
existing.usageCount++;
|
|
925
|
-
existing.lineNumbers.push(line);
|
|
926
|
-
usageMap.set(getNodeText(callee, sourceCode), existing);
|
|
927
|
-
}
|
|
928
|
-
}
|
|
929
|
-
}
|
|
930
|
-
// --- Object literal property assignments: { key: ImportedValue } ---
|
|
931
|
-
else if (node.type === 'pair') {
|
|
932
|
-
const key = node.children?.find(c => c.type === 'property_identifier');
|
|
933
|
-
const value = node.children?.find(c => c.type === 'identifier' && c !== key);
|
|
934
|
-
if (value && importNames.has(getNodeText(value, sourceCode))) {
|
|
935
|
-
const { line } = bridgeGetLineAndColumn(value);
|
|
936
|
-
const existing = usageMap.get(getNodeText(value, sourceCode)) || {
|
|
937
|
-
usageType: 'direct',
|
|
938
|
-
usageCount: 0,
|
|
939
|
-
lineNumbers: [],
|
|
940
|
-
};
|
|
941
|
-
existing.usageCount++;
|
|
942
|
-
existing.lineNumbers.push(line);
|
|
943
|
-
usageMap.set(getNodeText(value, sourceCode), existing);
|
|
944
|
-
}
|
|
945
|
-
}
|
|
946
|
-
// --- Shorthand property assignments: { ComponentA, ComponentB } ---
|
|
947
|
-
else if (node.type === 'shorthand_property_identifier') {
|
|
948
|
-
// The value node is a reference to an imported name
|
|
949
|
-
const ref = node.children?.find(c => c.type === 'identifier');
|
|
950
|
-
if (ref && importNames.has(getNodeText(ref, sourceCode))) {
|
|
951
|
-
const { line } = bridgeGetLineAndColumn(ref);
|
|
952
|
-
const existing = usageMap.get(getNodeText(ref, sourceCode)) || {
|
|
953
|
-
usageType: 'direct',
|
|
954
|
-
usageCount: 0,
|
|
955
|
-
lineNumbers: [],
|
|
956
|
-
};
|
|
957
|
-
existing.usageCount++;
|
|
958
|
-
existing.lineNumbers.push(line);
|
|
959
|
-
usageMap.set(getNodeText(ref, sourceCode), existing);
|
|
960
|
-
}
|
|
961
|
-
else if (ref && importNames.has(getNodeText(ref, sourceCode))) {
|
|
962
|
-
// shorthand_property_identifier might itself be just text
|
|
963
|
-
const { line } = bridgeGetLineAndColumn(node);
|
|
964
|
-
const existing = usageMap.get(getNodeText(node, sourceCode)) || {
|
|
965
|
-
usageType: 'direct',
|
|
966
|
-
usageCount: 0,
|
|
967
|
-
lineNumbers: [],
|
|
968
|
-
};
|
|
969
|
-
existing.usageCount++;
|
|
970
|
-
existing.lineNumbers.push(line);
|
|
971
|
-
usageMap.set(getNodeText(node, sourceCode), existing);
|
|
972
|
-
}
|
|
973
|
-
}
|
|
948
|
+
recordNodeUsage(node, sourceCode, importNames, usageMap);
|
|
974
949
|
});
|
|
975
950
|
return usageMap;
|
|
976
951
|
}
|
|
@@ -980,6 +955,11 @@ export function extractIdentifierUsage(root, sourceCode, importNames) {
|
|
|
980
955
|
/**
|
|
981
956
|
* Check if a function name is defined locally in the file.
|
|
982
957
|
* Uses tree-sitter instead of TS API.
|
|
958
|
+
*
|
|
959
|
+
* @param name - The function name to look for.
|
|
960
|
+
* @param root - The root AST node to search.
|
|
961
|
+
* @param sourceCode - The original source text for name extraction.
|
|
962
|
+
* @returns True if the name is declared locally.
|
|
983
963
|
*/
|
|
984
964
|
export function isLocalFunction(name, root, sourceCode) {
|
|
985
965
|
let found = false;
|
|
@@ -1017,6 +997,10 @@ export function isLocalFunction(name, root, sourceCode) {
|
|
|
1017
997
|
/**
|
|
1018
998
|
* Normalize a function call target for consistent naming.
|
|
1019
999
|
* No TypeScript dependency — pure string manipulation.
|
|
1000
|
+
*
|
|
1001
|
+
* @param callee - The callee name as written at the call site.
|
|
1002
|
+
* @param filePath - The file path the call occurs in.
|
|
1003
|
+
* @returns The normalized call target.
|
|
1020
1004
|
*/
|
|
1021
1005
|
export function normalizeCallTarget(callee, filePath) {
|
|
1022
1006
|
if (callee.includes('#') || callee.includes('.')) {
|
|
@@ -1034,6 +1018,10 @@ export function normalizeCallTarget(callee, filePath) {
|
|
|
1034
1018
|
*
|
|
1035
1019
|
* Note: the type parameter is retained only for backward compatibility with
|
|
1036
1020
|
* the generic-based call pattern; tree-sitter uses string types, not SyntaxKind enums.
|
|
1021
|
+
*
|
|
1022
|
+
* @param root - The root AST node to search within.
|
|
1023
|
+
* @param nodeType - The tree-sitter node type to match.
|
|
1024
|
+
* @returns All matching AST nodes cast to the requested type.
|
|
1037
1025
|
*/
|
|
1038
1026
|
export function findNodesByKind(root, nodeType) {
|
|
1039
1027
|
return findNodes(root, n => n.type === nodeType);
|