code-auditor-mcp 4.1.1 → 5.0.2
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 +381 -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 +427 -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 +348 -0
- package/dist/analyzers/receiverRoot.d.ts.map +1 -0
- package/dist/analyzers/receiverRoot.js +1032 -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 +241 -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.map +1 -1
- package/dist/analyzers/universal/UniversalDRYAnalyzer.js +23 -35
- 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 +66 -1
- package/dist/auditRunner.d.ts.map +1 -1
- package/dist/auditRunner.js +1544 -1034
- 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 +983 -821
- 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 +132 -271
- package/dist/codeIndexDB.d.ts.map +1 -1
- package/dist/codeIndexDB.js +365 -2729
- 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 +15 -0
- package/dist/config/configLoader.d.ts.map +1 -1
- package/dist/config/configLoader.js +15 -16
- 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 +16 -14
- 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/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 +22 -4
- package/dist/daemon/main.js.map +1 -1
- package/dist/daemon/resolve.d.ts +18 -3
- package/dist/daemon/resolve.d.ts.map +1 -1
- package/dist/daemon/resolve.js +25 -4
- 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 +17 -8
- package/dist/dataPaths.d.ts.map +1 -1
- package/dist/dataPaths.js +16 -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/graph/resolutionEnvironment.d.ts +61 -0
- package/dist/graph/resolutionEnvironment.d.ts.map +1 -0
- package/dist/graph/resolutionEnvironment.js +57 -0
- package/dist/graph/resolutionEnvironment.js.map +1 -0
- 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 +827 -850
- 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 +491 -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 +1030 -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 +207 -0
- package/dist/phase/receiverConsumers.d.ts.map +1 -0
- package/dist/phase/receiverConsumers.js +1063 -0
- package/dist/phase/receiverConsumers.js.map +1 -0
- package/dist/phase/receiverProvenance.d.ts +120 -0
- package/dist/phase/receiverProvenance.d.ts.map +1 -0
- package/dist/phase/receiverProvenance.js +377 -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 +2199 -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 +1144 -984
- 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 +114 -71
- 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 +18 -9
- package/plugin/.claude-plugin/manifest.json +16 -0
- package/plugin/.claude-plugin/plugin.json +1 -1
- package/plugin/hooks/hooks.json +7 -3
- package/plugin/scripts/hook-audit.sh +46 -16
- package/plugin/scripts/hook-common.sh +81 -12
- package/plugin/scripts/hook-drift-check.sh +76 -0
- package/plugin/scripts/hook-self-audit.sh +22 -14
- package/plugin/scripts/hook-warm.sh +5 -6
- package/plugin/skills/code-auditor/SKILL.md +1 -1
- package/server.json +10 -4
|
@@ -46,6 +46,10 @@ function usageIdentityLabel(functionName, startLine, startColumn) {
|
|
|
46
46
|
return `fn:${startLine}:${startColumn}`;
|
|
47
47
|
return functionName ?? `fn:${startLine}:${startColumn}`;
|
|
48
48
|
}
|
|
49
|
+
/** Coordinate key `${file_path}::${function_name}` — the cross-domain identity key. */
|
|
50
|
+
function funcTableKey(filePath, functionName) {
|
|
51
|
+
return `${filePath}::${functionName}`;
|
|
52
|
+
}
|
|
49
53
|
/** Chunked IN-clause bound (SQLite max host params, conservative). */
|
|
50
54
|
const SQLITE_MAX_VARIABLES = 900;
|
|
51
55
|
function resolveFileScope(config) {
|
|
@@ -79,16 +83,17 @@ function resolveFileScope(config) {
|
|
|
79
83
|
// analyzer class to bound its aggregate cyclomatic complexity.
|
|
80
84
|
// ---------------------------------------------------------------------------
|
|
81
85
|
/**
|
|
82
|
-
* Advance a call-graph BFS frontier by one node:
|
|
83
|
-
* neighbors and enqueue any not yet visited.
|
|
86
|
+
* Advance a call-graph BFS frontier by one node: read `funcId`'s call
|
|
87
|
+
* neighbors from the preloaded adjacency map and enqueue any not yet visited.
|
|
88
|
+
* Shared by the two BFS walks. The adjacency read replaced a per-node
|
|
89
|
+
* `graph_cache` query, the BFS N+1.
|
|
84
90
|
*/
|
|
85
|
-
function enqueueCallNeighbors(
|
|
86
|
-
const callees =
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
for (const
|
|
90
|
-
|
|
91
|
-
if (!isNaN(calleeId) && !visited.has(calleeId)) {
|
|
91
|
+
function enqueueCallNeighbors(callEdges, nextLevel, funcId, visited) {
|
|
92
|
+
const callees = callEdges.get(funcId);
|
|
93
|
+
if (!callees)
|
|
94
|
+
return;
|
|
95
|
+
for (const calleeId of callees) {
|
|
96
|
+
if (!visited.has(calleeId)) {
|
|
92
97
|
nextLevel.push(calleeId);
|
|
93
98
|
}
|
|
94
99
|
}
|
|
@@ -97,7 +102,7 @@ function enqueueCallNeighbors(indexHandle, nextLevel, funcId, visited) {
|
|
|
97
102
|
* BFS through the call graph (graph_cache) up to maxDepth to check if
|
|
98
103
|
* any path from startFuncId reaches a validator function ID.
|
|
99
104
|
*/
|
|
100
|
-
function bfsReachesValidator(
|
|
105
|
+
function bfsReachesValidator(callEdges, startFuncId, validatorIds, maxDepth) {
|
|
101
106
|
const visited = new Set();
|
|
102
107
|
let currentLevel = [startFuncId];
|
|
103
108
|
for (let d = 0; d < maxDepth; d++) {
|
|
@@ -108,8 +113,8 @@ function bfsReachesValidator(indexHandle, startFuncId, validatorIds, maxDepth) {
|
|
|
108
113
|
if (visited.has(funcId))
|
|
109
114
|
continue;
|
|
110
115
|
visited.add(funcId);
|
|
111
|
-
// Get callees from
|
|
112
|
-
enqueueCallNeighbors(
|
|
116
|
+
// Get callees from the preloaded call edges
|
|
117
|
+
enqueueCallNeighbors(callEdges, nextLevel, funcId, visited);
|
|
113
118
|
}
|
|
114
119
|
currentLevel = nextLevel;
|
|
115
120
|
}
|
|
@@ -126,29 +131,26 @@ function bfsReachesValidator(indexHandle, startFuncId, validatorIds, maxDepth) {
|
|
|
126
131
|
* call-graph infrastructure (graph_cache + functions tables, populated by
|
|
127
132
|
* code-audit index sync); without it, returns the direct write set unchanged.
|
|
128
133
|
*/
|
|
129
|
-
function expandWrittenTables(
|
|
134
|
+
function expandWrittenTables(key, initialTables, graph) {
|
|
130
135
|
const allTables = new Set(initialTables);
|
|
131
|
-
const { fnIdLookup, hasGraphData } = graph;
|
|
132
|
-
if (!
|
|
136
|
+
const { fnIdLookup, hasGraphData, callEdges, fnInfo, fnWriteTables } = graph;
|
|
137
|
+
if (!hasGraphData)
|
|
133
138
|
return allTables;
|
|
134
139
|
const funcId = fnIdLookup.get(key);
|
|
135
140
|
if (funcId === undefined)
|
|
136
141
|
return allTables;
|
|
137
|
-
const
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
for (const
|
|
141
|
-
const
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
allTables.add(ct.table_name);
|
|
150
|
-
}
|
|
151
|
-
}
|
|
142
|
+
const calleeIds = callEdges.get(funcId);
|
|
143
|
+
if (!calleeIds)
|
|
144
|
+
return allTables;
|
|
145
|
+
for (const calleeId of calleeIds) {
|
|
146
|
+
const cf = fnInfo.get(calleeId);
|
|
147
|
+
if (!cf)
|
|
148
|
+
continue;
|
|
149
|
+
const calleeTables = fnWriteTables.get(`${cf.file_path}::${cf.name}`);
|
|
150
|
+
if (!calleeTables)
|
|
151
|
+
continue;
|
|
152
|
+
for (const tableName of calleeTables)
|
|
153
|
+
allTables.add(tableName);
|
|
152
154
|
}
|
|
153
155
|
return allTables;
|
|
154
156
|
}
|
|
@@ -157,7 +159,7 @@ function expandWrittenTables(indexHandle, key, initialTables, graph) {
|
|
|
157
159
|
* up to maxDepth, collecting every function ID reached. Used for the
|
|
158
160
|
* static-reach fallback: a high-risk function not in this set is uncovered.
|
|
159
161
|
*/
|
|
160
|
-
function collectReachableIds(
|
|
162
|
+
function collectReachableIds(callEdges, startIds, maxDepth) {
|
|
161
163
|
const reachableIds = new Set();
|
|
162
164
|
for (const startId of startIds) {
|
|
163
165
|
const visited = new Set();
|
|
@@ -169,7 +171,7 @@ function collectReachableIds(indexHandle, startIds, maxDepth) {
|
|
|
169
171
|
continue;
|
|
170
172
|
visited.add(funcId);
|
|
171
173
|
reachableIds.add(funcId);
|
|
172
|
-
enqueueCallNeighbors(
|
|
174
|
+
enqueueCallNeighbors(callEdges, nextLevel, funcId, visited);
|
|
173
175
|
}
|
|
174
176
|
currentLevel = nextLevel;
|
|
175
177
|
}
|
|
@@ -233,6 +235,12 @@ export class CrossDomainAnalyzer extends UniversalAnalyzer {
|
|
|
233
235
|
/** Run the R1/R3/R4 detectors and collect their violations. */
|
|
234
236
|
runDetectors(indexHandle, config, scope) {
|
|
235
237
|
const violations = [];
|
|
238
|
+
// Preload the call-graph adjacency, function identity, and per-function write
|
|
239
|
+
// tables once and share across every detector that walks the graph. Each
|
|
240
|
+
// detector previously re-queried `graph_cache` (and, for callee expansion,
|
|
241
|
+
// `functions` + `schema_usage`) once per BFS node / callee — the N+1 that
|
|
242
|
+
// dominated cross-domain time on full audits.
|
|
243
|
+
const graph = loadCallGraphData(indexHandle);
|
|
236
244
|
// R1 — Schema lifecycle detectors
|
|
237
245
|
const lifecycle = config.schemaLifecycle ?? {};
|
|
238
246
|
if (lifecycle.enableWrittenNeverRead !== false) {
|
|
@@ -243,17 +251,17 @@ export class CrossDomainAnalyzer extends UniversalAnalyzer {
|
|
|
243
251
|
}
|
|
244
252
|
if (lifecycle.enableTransactionBoundaryRisk !== false) {
|
|
245
253
|
const txnTableMax = lifecycle.txnTableMax ?? 4;
|
|
246
|
-
violations.push(...detectTransactionBoundaryRisk(indexHandle, txnTableMax, scope));
|
|
254
|
+
violations.push(...detectTransactionBoundaryRisk(indexHandle, txnTableMax, scope, graph));
|
|
247
255
|
}
|
|
248
256
|
// R3 — Validation-bypass detection
|
|
249
257
|
const bypass = config.validatorBypass;
|
|
250
258
|
if (bypass) {
|
|
251
|
-
violations.push(...detectValidationBypass(indexHandle, bypass, scope));
|
|
259
|
+
violations.push(...detectValidationBypass(indexHandle, bypass, scope, graph));
|
|
252
260
|
}
|
|
253
261
|
// R4 — Coverage by importance
|
|
254
262
|
const coverage = config.coverage;
|
|
255
263
|
if (coverage) {
|
|
256
|
-
violations.push(...detectUncoveredRisk(indexHandle, coverage, scope));
|
|
264
|
+
violations.push(...detectUncoveredRisk(indexHandle, coverage, scope, graph));
|
|
257
265
|
}
|
|
258
266
|
return violations;
|
|
259
267
|
}
|
|
@@ -287,27 +295,13 @@ function nonQueryBuilderTableFilter(fp) {
|
|
|
287
295
|
params: fp.params,
|
|
288
296
|
};
|
|
289
297
|
}
|
|
290
|
-
/**
|
|
291
|
-
*
|
|
292
|
-
*
|
|
293
|
-
*/
|
|
294
|
-
function
|
|
295
|
-
const violations = [];
|
|
296
|
-
const fp = scope.apply('file_path');
|
|
297
|
-
const qb = nonQueryBuilderTableFilter(fp);
|
|
298
|
-
const rows = indexHandle
|
|
299
|
-
.query(`SELECT DISTINCT table_name, file_path, function_name, function_start_line, function_start_column, line, usage_type
|
|
300
|
-
FROM schema_usage
|
|
301
|
-
WHERE usage_type IN ('insert', 'update', 'delete', 'create')
|
|
302
|
-
${fp.clause}
|
|
303
|
-
${qb.clause}
|
|
304
|
-
AND table_name NOT IN (
|
|
305
|
-
SELECT DISTINCT table_name FROM schema_usage WHERE usage_type = 'select' ${fp.clause}
|
|
306
|
-
)
|
|
307
|
-
ORDER BY table_name, file_path`, [...fp.params, ...qb.params, ...fp.params]);
|
|
308
|
-
// Deduplicate by table_name — one violation per table, anchored to
|
|
309
|
-
// the first writing file encountered.
|
|
298
|
+
/** Deduplicate query rows by table and emit one violation per unique table,
|
|
299
|
+
* anchored to the first row encountered. The two read/write-mismatch detectors
|
|
300
|
+
* share this tail: their SQL and message/severity/rule differ, but the
|
|
301
|
+
* dedup + violation construction is identical. */
|
|
302
|
+
function emitTableViolations(rows, rule, severity, message) {
|
|
310
303
|
const seen = new Set();
|
|
304
|
+
const violations = [];
|
|
311
305
|
for (const row of rows) {
|
|
312
306
|
if (seen.has(row.table_name))
|
|
313
307
|
continue;
|
|
@@ -316,53 +310,75 @@ function detectWrittenNeverRead(indexHandle, scope) {
|
|
|
316
310
|
file: row.file_path,
|
|
317
311
|
line: row.line,
|
|
318
312
|
column: 0,
|
|
319
|
-
severity
|
|
320
|
-
message:
|
|
321
|
-
rule
|
|
313
|
+
severity,
|
|
314
|
+
message: message(row),
|
|
315
|
+
rule,
|
|
322
316
|
analyzer: ANALYZER_NAME,
|
|
323
|
-
|
|
317
|
+
symbol: usageIdentityLabel(row.function_name, row.function_start_line, row.function_start_column),
|
|
324
318
|
});
|
|
325
319
|
}
|
|
326
320
|
return violations;
|
|
327
321
|
}
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
*
|
|
331
|
-
*
|
|
332
|
-
*
|
|
333
|
-
*/
|
|
334
|
-
function
|
|
335
|
-
const violations = [];
|
|
322
|
+
/** Run one usage-direction check: tables used with `writeTypes` but never with
|
|
323
|
+
* `readTypes` (optionally requiring membership in `requireTypes`), emitted as
|
|
324
|
+
* per-table violations. Written-never-read and read-never-written are this one
|
|
325
|
+
* shape with the two type sets swapped, so the shared SELECT list, scope/QB
|
|
326
|
+
* filters, ORDER BY, dedup, and emit live here once. `usage_type IN ('select')`
|
|
327
|
+
* is equivalent to `usage_type = 'select'`, so one IN path covers both. */
|
|
328
|
+
function runUsageDirectionCheck(indexHandle, scope, check) {
|
|
336
329
|
const fp = scope.apply('file_path');
|
|
337
330
|
const qb = nonQueryBuilderTableFilter(fp);
|
|
331
|
+
const inList = (types) => types.map((t) => `'${t}'`).join(', ');
|
|
332
|
+
const requireClause = check.requireTypes
|
|
333
|
+
? `\n AND table_name IN (\n SELECT DISTINCT table_name FROM schema_usage WHERE usage_type IN (${inList(check.requireTypes)}) ${fp.clause}\n )`
|
|
334
|
+
: '';
|
|
338
335
|
const rows = indexHandle
|
|
339
336
|
.query(`SELECT DISTINCT table_name, file_path, function_name, function_start_line, function_start_column, line, usage_type
|
|
340
337
|
FROM schema_usage
|
|
341
|
-
WHERE usage_type
|
|
338
|
+
WHERE usage_type IN (${inList(check.writeTypes)})
|
|
342
339
|
${fp.clause}
|
|
343
340
|
${qb.clause}
|
|
344
341
|
AND table_name NOT IN (
|
|
345
|
-
SELECT DISTINCT table_name FROM schema_usage
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
342
|
+
SELECT DISTINCT table_name FROM schema_usage WHERE usage_type IN (${inList(check.readTypes)}) ${fp.clause}
|
|
343
|
+
)${requireClause}
|
|
344
|
+
ORDER BY table_name, file_path`, [...fp.params, ...qb.params, ...fp.params, ...(check.requireTypes ? fp.params : [])]);
|
|
345
|
+
return emitTableViolations(rows, check.rule, check.severity, check.message);
|
|
346
|
+
}
|
|
347
|
+
/**
|
|
348
|
+
* Detect tables that are written to (INSERT/UPDATE/DELETE/CREATE) but
|
|
349
|
+
* never read from (SELECT). These might be dead writes or missed read paths.
|
|
350
|
+
*
|
|
351
|
+
* A table must have at least one `insert`/`update` ("data flows in") usage to
|
|
352
|
+
* qualify — a table whose only visible writes are `create` (DDL) or `delete`
|
|
353
|
+
* (truncate) is not a dead write path, because its `insert`/`select` live in a
|
|
354
|
+
* file the extractor does not scan (an out-of-scope receiver) or a dynamic-SQL
|
|
355
|
+
* read. The anchor still sorts the full write set, so `delete` keeps its
|
|
356
|
+
* byte-order edge over `insert` and a mixed write table anchors on the `delete`.
|
|
357
|
+
*/
|
|
358
|
+
function detectWrittenNeverRead(indexHandle, scope) {
|
|
359
|
+
return runUsageDirectionCheck(indexHandle, scope, {
|
|
360
|
+
writeTypes: ['insert', 'update', 'delete', 'create'],
|
|
361
|
+
readTypes: ['select'],
|
|
362
|
+
requireTypes: ['insert', 'update'],
|
|
363
|
+
rule: 'cross-domain/written-never-read',
|
|
364
|
+
severity: 'high',
|
|
365
|
+
message: (row) => `Table '${row.table_name}' is written (${row.usage_type}) but never read (SELECT). Consider removing unused writes or adding read paths.`,
|
|
366
|
+
});
|
|
367
|
+
}
|
|
368
|
+
// ── R1: Read-Never-Written ──────────────────────────────────────────────
|
|
369
|
+
/**
|
|
370
|
+
* Detect tables that are read from (SELECT) but never written to
|
|
371
|
+
* (INSERT/UPDATE/DELETE/CREATE). These may be external/managed tables
|
|
372
|
+
* or indicate missing write coverage.
|
|
373
|
+
*/
|
|
374
|
+
function detectReadNeverWritten(indexHandle, scope) {
|
|
375
|
+
return runUsageDirectionCheck(indexHandle, scope, {
|
|
376
|
+
writeTypes: ['select'],
|
|
377
|
+
readTypes: ['insert', 'update', 'delete', 'create'],
|
|
378
|
+
rule: 'cross-domain/read-never-written',
|
|
379
|
+
severity: 'severe',
|
|
380
|
+
message: (row) => `Table '${row.table_name}' is read (SELECT) but never written (INSERT/UPDATE/DELETE). This may be an external/managed table, or indicate missing write coverage.`,
|
|
381
|
+
});
|
|
366
382
|
}
|
|
367
383
|
// ── R1: Transaction-Boundary Risk ───────────────────────────────────────
|
|
368
384
|
/**
|
|
@@ -373,7 +389,7 @@ function detectReadNeverWritten(indexHandle, scope) {
|
|
|
373
389
|
* writing to too many tables in a single logical operation can lead to
|
|
374
390
|
* long-running transactions, lock contention, and partial-failure complexity.
|
|
375
391
|
*/
|
|
376
|
-
function detectTransactionBoundaryRisk(indexHandle, txnTableMax, scope) {
|
|
392
|
+
function detectTransactionBoundaryRisk(indexHandle, txnTableMax, scope, graph) {
|
|
377
393
|
const fp = scope.apply('su.file_path');
|
|
378
394
|
// Query schema_usage directly (no JOIN on functions) so this detector
|
|
379
395
|
// works whether or not deepSync has populated the functions table.
|
|
@@ -390,8 +406,7 @@ function detectTransactionBoundaryRisk(indexHandle, txnTableMax, scope) {
|
|
|
390
406
|
if (writerRows.length === 0)
|
|
391
407
|
return [];
|
|
392
408
|
const funcWrites = groupWriterTables(writerRows);
|
|
393
|
-
|
|
394
|
-
return flagTransactionBoundaryWrites(funcWrites, indexHandle, graph, txnTableMax);
|
|
409
|
+
return flagTransactionBoundaryWrites(funcWrites, graph, txnTableMax);
|
|
395
410
|
}
|
|
396
411
|
/** Group written tables by coordinate-identity key (display name is the label). */
|
|
397
412
|
function groupWriterTables(writerRows) {
|
|
@@ -448,7 +463,7 @@ function enclosingFunctionBatches(filePath, writeLine) {
|
|
|
448
463
|
'arrow_function',
|
|
449
464
|
'function_expression',
|
|
450
465
|
'generator_function_declaration',
|
|
451
|
-
'
|
|
466
|
+
'generator_function',
|
|
452
467
|
]);
|
|
453
468
|
// Collect the enclosing function nodes (outermost first) that span the write
|
|
454
469
|
// line. Checking any ancestor handles the accumulate-in-an-inner-callback /
|
|
@@ -479,10 +494,10 @@ function enclosingFunctionBatches(filePath, writeLine) {
|
|
|
479
494
|
* When graph_cache is unpopulated, expandWrittenTables degrades gracefully
|
|
480
495
|
* to reporting direct writes only.
|
|
481
496
|
*/
|
|
482
|
-
function flagTransactionBoundaryWrites(funcWrites,
|
|
497
|
+
function flagTransactionBoundaryWrites(funcWrites, graph, txnTableMax) {
|
|
483
498
|
const violations = [];
|
|
484
499
|
for (const [key, funcData] of funcWrites) {
|
|
485
|
-
const allTables = expandWrittenTables(
|
|
500
|
+
const allTables = expandWrittenTables(key, funcData.tables, graph);
|
|
486
501
|
if (allTables.size >= txnTableMax) {
|
|
487
502
|
// A single `.batch()` commit is the transaction scope — no risk to flag.
|
|
488
503
|
if (enclosingFunctionBatches(funcData.filePath, funcData.line))
|
|
@@ -496,44 +511,83 @@ function flagTransactionBoundaryWrites(funcWrites, indexHandle, graph, txnTableM
|
|
|
496
511
|
message: `Function writes to ${allTables.size} distinct tables (threshold: ${txnTableMax}): ${tableList}. This may indicate transaction-boundary risk — consider splitting writes across smaller transactional scopes.`,
|
|
497
512
|
rule: 'cross-domain/multi-table-write',
|
|
498
513
|
analyzer: ANALYZER_NAME,
|
|
499
|
-
|
|
514
|
+
symbol: key.split('::')[1],
|
|
500
515
|
});
|
|
501
516
|
}
|
|
502
517
|
}
|
|
503
518
|
return violations;
|
|
504
519
|
}
|
|
505
520
|
/**
|
|
506
|
-
*
|
|
507
|
-
*
|
|
508
|
-
*
|
|
509
|
-
*
|
|
521
|
+
* Load the call-graph infrastructure in three reads, reused by every detector
|
|
522
|
+
* that walks the graph. Previously each BFS node re-queried `graph_cache`, and
|
|
523
|
+
* depth-1 callee expansion re-queried `functions` + `schema_usage` per callee —
|
|
524
|
+
* an N+1 on full audits. One read each of the edge list, the function identity,
|
|
525
|
+
* and the per-function write tables collapses that to a constant number of
|
|
526
|
+
* queries. Any failure (or an empty graph) returns the empty structure and each
|
|
527
|
+
* consumer degrades to its no-graph path.
|
|
510
528
|
*/
|
|
511
|
-
function
|
|
512
|
-
|
|
529
|
+
function loadCallGraphData(indexHandle) {
|
|
530
|
+
const empty = {
|
|
531
|
+
hasGraphData: false,
|
|
532
|
+
fnIdLookup: new Map(),
|
|
533
|
+
fnInfo: new Map(),
|
|
534
|
+
callEdges: new Map(),
|
|
535
|
+
fnWriteTables: new Map(),
|
|
536
|
+
};
|
|
537
|
+
let edgeRows;
|
|
513
538
|
try {
|
|
514
|
-
|
|
515
|
-
const cnt = row[0];
|
|
516
|
-
hasGraphData = (cnt?.n ?? 0) > 0;
|
|
539
|
+
edgeRows = indexHandle.query("SELECT node_key, neighbor_key FROM graph_cache WHERE graph_type = 'call'");
|
|
517
540
|
}
|
|
518
541
|
catch {
|
|
519
|
-
|
|
520
|
-
}
|
|
521
|
-
|
|
522
|
-
|
|
523
|
-
|
|
524
|
-
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
|
|
529
|
-
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
|
|
533
|
-
|
|
534
|
-
|
|
542
|
+
return empty;
|
|
543
|
+
}
|
|
544
|
+
if (edgeRows.length === 0)
|
|
545
|
+
return empty;
|
|
546
|
+
const callEdges = new Map();
|
|
547
|
+
for (const e of edgeRows) {
|
|
548
|
+
const src = parseInt(e.node_key, 10);
|
|
549
|
+
const dst = parseInt(e.neighbor_key, 10);
|
|
550
|
+
if (isNaN(src) || isNaN(dst))
|
|
551
|
+
continue;
|
|
552
|
+
const list = callEdges.get(src);
|
|
553
|
+
if (list)
|
|
554
|
+
list.push(dst);
|
|
555
|
+
else
|
|
556
|
+
callEdges.set(src, [dst]);
|
|
557
|
+
}
|
|
558
|
+
let fnRows;
|
|
559
|
+
try {
|
|
560
|
+
fnRows = indexHandle.query('SELECT id, name, file_path FROM functions');
|
|
561
|
+
}
|
|
562
|
+
catch {
|
|
563
|
+
fnRows = [];
|
|
564
|
+
}
|
|
565
|
+
const fnIdLookup = new Map();
|
|
566
|
+
const fnInfo = new Map();
|
|
567
|
+
for (const r of fnRows) {
|
|
568
|
+
fnIdLookup.set(`${r.file_path}::${r.name}`, r.id);
|
|
569
|
+
fnInfo.set(r.id, { name: r.name, file_path: r.file_path });
|
|
535
570
|
}
|
|
536
|
-
|
|
571
|
+
let writeRows;
|
|
572
|
+
try {
|
|
573
|
+
writeRows = indexHandle.query(`SELECT DISTINCT file_path, function_name, table_name FROM schema_usage
|
|
574
|
+
WHERE usage_type IN ('insert', 'update', 'delete', 'create')`);
|
|
575
|
+
}
|
|
576
|
+
catch {
|
|
577
|
+
writeRows = [];
|
|
578
|
+
}
|
|
579
|
+
const fnWriteTables = new Map();
|
|
580
|
+
for (const w of writeRows) {
|
|
581
|
+
if (w.function_name == null)
|
|
582
|
+
continue;
|
|
583
|
+
const key = funcTableKey(w.file_path, w.function_name);
|
|
584
|
+
const set = fnWriteTables.get(key);
|
|
585
|
+
if (set)
|
|
586
|
+
set.add(w.table_name);
|
|
587
|
+
else
|
|
588
|
+
fnWriteTables.set(key, new Set([w.table_name]));
|
|
589
|
+
}
|
|
590
|
+
return { hasGraphData: true, fnIdLookup, fnInfo, callEdges, fnWriteTables };
|
|
537
591
|
}
|
|
538
592
|
// ── R3: Validation-Bypass ────────────────────────────────────────────────
|
|
539
593
|
/**
|
|
@@ -546,7 +600,7 @@ function resolveCallGraphContext(indexHandle) {
|
|
|
546
600
|
* 3. Heuristic fallback: name GLOB 'validate*' OR 'assert*' (when both
|
|
547
601
|
* above are silent)
|
|
548
602
|
*/
|
|
549
|
-
function detectValidationBypass(indexHandle, config, scope) {
|
|
603
|
+
function detectValidationBypass(indexHandle, config, scope, graph) {
|
|
550
604
|
const violations = [];
|
|
551
605
|
const { validators: userValidators = [], modeShare = 0.8, minCorpus = 20, depth = 3, } = config;
|
|
552
606
|
const validatorIds = buildValidatorIds(indexHandle, userValidators);
|
|
@@ -563,18 +617,18 @@ function detectValidationBypass(indexHandle, config, scope) {
|
|
|
563
617
|
ORDER BY su.file_path, su.function_name`, fp.params);
|
|
564
618
|
if (writers.length === 0)
|
|
565
619
|
return violations;
|
|
566
|
-
const writerCoverage = computeWriterCoverage(writers, validatorIds,
|
|
620
|
+
const writerCoverage = computeWriterCoverage(writers, validatorIds, graph.callEdges, depth);
|
|
567
621
|
violations.push(...flagUncoveredWriters(writers, writerCoverage, { minCorpus, modeShare, depth }));
|
|
568
622
|
return violations;
|
|
569
623
|
}
|
|
570
624
|
/** BFS from each writer to check validator reach, deduplicated by key. */
|
|
571
|
-
function computeWriterCoverage(writers, validatorIds,
|
|
625
|
+
function computeWriterCoverage(writers, validatorIds, callEdges, depth) {
|
|
572
626
|
const writerCoverage = new Map();
|
|
573
627
|
for (const w of writers) {
|
|
574
|
-
const key =
|
|
628
|
+
const key = funcTableKey(w.file_path, w.function_name);
|
|
575
629
|
if (writerCoverage.has(key))
|
|
576
630
|
continue; // deduplicate
|
|
577
|
-
const covered = bfsReachesValidator(
|
|
631
|
+
const covered = bfsReachesValidator(callEdges, w.function_id, validatorIds, depth);
|
|
578
632
|
writerCoverage.set(key, {
|
|
579
633
|
covered,
|
|
580
634
|
line: w.line,
|
|
@@ -591,24 +645,32 @@ function computeWriterCoverage(writers, validatorIds, indexHandle, depth) {
|
|
|
591
645
|
*/
|
|
592
646
|
function buildValidatorIds(indexHandle, userValidators) {
|
|
593
647
|
const validatorIds = new Set();
|
|
594
|
-
// 1a. User-configured validators (format: "funcName" or "path#funcName")
|
|
648
|
+
// 1a. User-configured validators (format: "funcName" or "path#funcName").
|
|
649
|
+
// Batched into chunked `IN`/composite-OR reads instead of one query per
|
|
650
|
+
// entry (the per-validator query was an N+1 on the small user list).
|
|
651
|
+
const plainNames = [];
|
|
652
|
+
const namePathPairs = [];
|
|
595
653
|
for (const v of userValidators) {
|
|
596
654
|
const hashIdx = v.indexOf('#');
|
|
597
655
|
if (hashIdx >= 0) {
|
|
598
|
-
|
|
599
|
-
const vName = v.substring(hashIdx + 1);
|
|
600
|
-
const rows = indexHandle
|
|
601
|
-
.query('SELECT id FROM functions WHERE name = ? AND file_path = ?', [vName, vPath]);
|
|
602
|
-
for (const r of rows)
|
|
603
|
-
validatorIds.add(r.id);
|
|
656
|
+
namePathPairs.push([v.substring(hashIdx + 1), v.substring(0, hashIdx)]);
|
|
604
657
|
}
|
|
605
658
|
else {
|
|
606
|
-
|
|
607
|
-
.query('SELECT id FROM functions WHERE name = ?', [v]);
|
|
608
|
-
for (const r of rows)
|
|
609
|
-
validatorIds.add(r.id);
|
|
659
|
+
plainNames.push(v);
|
|
610
660
|
}
|
|
611
661
|
}
|
|
662
|
+
for (let i = 0; i < plainNames.length; i += SQLITE_MAX_VARIABLES) {
|
|
663
|
+
const chunk = plainNames.slice(i, i + SQLITE_MAX_VARIABLES);
|
|
664
|
+
const rows = indexHandle.query(`SELECT id FROM functions WHERE name IN (${chunk.map(() => '?').join(', ')})`, chunk);
|
|
665
|
+
for (const r of rows)
|
|
666
|
+
validatorIds.add(r.id);
|
|
667
|
+
}
|
|
668
|
+
for (let i = 0; i < namePathPairs.length; i += Math.floor(SQLITE_MAX_VARIABLES / 2)) {
|
|
669
|
+
const chunk = namePathPairs.slice(i, i + Math.floor(SQLITE_MAX_VARIABLES / 2));
|
|
670
|
+
const rows = indexHandle.query(`SELECT id FROM functions WHERE ${chunk.map(() => '(name = ? AND file_path = ?)').join(' OR ')}`, chunk.flatMap(([n, p]) => [n, p]));
|
|
671
|
+
for (const r of rows)
|
|
672
|
+
validatorIds.add(r.id);
|
|
673
|
+
}
|
|
612
674
|
// 1b. Provenanced validators: exported functions whose OWN used_imports
|
|
613
675
|
// includes a validator package. Per-identifier check — a function in
|
|
614
676
|
// a zod-importing file only qualifies if its own body uses the
|
|
@@ -651,7 +713,7 @@ function groupWritersByDirectory(writers, writerCoverage) {
|
|
|
651
713
|
const dirSeen = new Set();
|
|
652
714
|
for (const w of writers) {
|
|
653
715
|
const dir = path.dirname(w.file_path);
|
|
654
|
-
const key =
|
|
716
|
+
const key = funcTableKey(w.file_path, w.function_name);
|
|
655
717
|
const dirKey = `${dir}::${key}`;
|
|
656
718
|
if (dirSeen.has(dirKey))
|
|
657
719
|
continue;
|
|
@@ -693,7 +755,7 @@ function flagUnvalidatedWriters(dirWriters, minCorpus, modeShare, depth) {
|
|
|
693
755
|
`Consider adding input validation.`,
|
|
694
756
|
rule: 'cross-domain/no-validator-reachable',
|
|
695
757
|
analyzer: ANALYZER_NAME,
|
|
696
|
-
|
|
758
|
+
symbol: w.funcName,
|
|
697
759
|
});
|
|
698
760
|
}
|
|
699
761
|
}
|
|
@@ -710,7 +772,7 @@ function flagUnvalidatedWriters(dirWriters, minCorpus, modeShare, depth) {
|
|
|
710
772
|
* to static reach analysis from test files (BFS from test-file functions
|
|
711
773
|
* into the call graph).
|
|
712
774
|
*/
|
|
713
|
-
function detectUncoveredRisk(indexHandle, coverage, scope) {
|
|
775
|
+
function detectUncoveredRisk(indexHandle, coverage, scope, graph) {
|
|
714
776
|
const topRiskDecile = coverage.topRiskDecile ?? 0.1;
|
|
715
777
|
// Check if any measured coverage exists
|
|
716
778
|
const measuredCount = indexHandle
|
|
@@ -718,7 +780,7 @@ function detectUncoveredRisk(indexHandle, coverage, scope) {
|
|
|
718
780
|
if (measuredCount > 0) {
|
|
719
781
|
return detectMeasuredUncovered(indexHandle, topRiskDecile);
|
|
720
782
|
}
|
|
721
|
-
return detectStaticReachUncovered(indexHandle, coverage, scope);
|
|
783
|
+
return detectStaticReachUncovered(indexHandle, coverage, scope, graph);
|
|
722
784
|
}
|
|
723
785
|
/**
|
|
724
786
|
* Flag exported high-risk functions with no measured test coverage, using
|
|
@@ -754,7 +816,7 @@ function detectMeasuredUncovered(indexHandle, topRiskDecile) {
|
|
|
754
816
|
(staleWarning ?? ''),
|
|
755
817
|
rule: 'cross-domain/uncovered-risk',
|
|
756
818
|
analyzer: ANALYZER_NAME,
|
|
757
|
-
|
|
819
|
+
symbol: fn.functionName,
|
|
758
820
|
basis: fn.basis,
|
|
759
821
|
sourceFormat,
|
|
760
822
|
...(staleWarning ? { staleImport: true } : {}),
|
|
@@ -766,12 +828,12 @@ function detectMeasuredUncovered(indexHandle, topRiskDecile) {
|
|
|
766
828
|
* Static-reach fallback: flag exported high-risk functions that are not
|
|
767
829
|
* reachable from known test files via BFS through the call graph.
|
|
768
830
|
*/
|
|
769
|
-
function detectStaticReachUncovered(indexHandle, coverage, scope) {
|
|
831
|
+
function detectStaticReachUncovered(indexHandle, coverage, scope, graph) {
|
|
770
832
|
const topRiskDecile = coverage.topRiskDecile ?? 0.1;
|
|
771
833
|
const highRiskFns = queryHighRiskFunctions(indexHandle, topRiskDecile, scope);
|
|
772
834
|
if (highRiskFns.length === 0)
|
|
773
835
|
return [];
|
|
774
|
-
const reachableIds = computeTestReachableIds(indexHandle, coverage);
|
|
836
|
+
const reachableIds = computeTestReachableIds(indexHandle, coverage, graph.callEdges);
|
|
775
837
|
return flagUnreachedHighRisk(highRiskFns, reachableIds);
|
|
776
838
|
}
|
|
777
839
|
/** Rank exported functions by hotspot score and take the top decile. */
|
|
@@ -813,7 +875,7 @@ function flagUnreachedHighRisk(highRiskFns, reachableIds) {
|
|
|
813
875
|
`Add test coverage or import measured coverage with 'code-audit coverage --import <path>'.`,
|
|
814
876
|
rule: 'cross-domain/uncovered-risk',
|
|
815
877
|
analyzer: ANALYZER_NAME,
|
|
816
|
-
|
|
878
|
+
symbol: fn.name,
|
|
817
879
|
basis: 'static-reach',
|
|
818
880
|
});
|
|
819
881
|
}
|
|
@@ -823,12 +885,12 @@ function flagUnreachedHighRisk(highRiskFns, reachableIds) {
|
|
|
823
885
|
* Compute the set of function IDs reachable from test-file functions via
|
|
824
886
|
* BFS through the call graph (reverse direction: test → code under test).
|
|
825
887
|
*/
|
|
826
|
-
function computeTestReachableIds(indexHandle, coverage) {
|
|
888
|
+
function computeTestReachableIds(indexHandle, coverage, callEdges) {
|
|
827
889
|
const testFuncIds = collectTestFuncIds(indexHandle, coverage);
|
|
828
890
|
if (testFuncIds.size === 0)
|
|
829
891
|
return new Set();
|
|
830
892
|
const maxDepth = coverage.staticReachDepth ?? 2;
|
|
831
|
-
return collectReachableIds(
|
|
893
|
+
return collectReachableIds(callEdges, testFuncIds, maxDepth);
|
|
832
894
|
}
|
|
833
895
|
/** Find test-file function IDs to use as BFS starting points. */
|
|
834
896
|
function collectTestFuncIds(indexHandle, coverage) {
|