@skillsmith/core 0.1.2 → 2.0.0
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/README.md +233 -2
- package/dist/.tsbuildinfo +1 -1
- package/dist/src/analysis/CodebaseAnalyzer.d.ts +4 -134
- package/dist/src/analysis/CodebaseAnalyzer.d.ts.map +1 -1
- package/dist/src/analysis/CodebaseAnalyzer.js +7 -315
- package/dist/src/analysis/CodebaseAnalyzer.js.map +1 -1
- package/dist/src/analysis/__tests__/incremental.test.d.ts +13 -0
- package/dist/src/analysis/__tests__/incremental.test.d.ts.map +1 -0
- package/dist/src/analysis/__tests__/incremental.test.js +515 -0
- package/dist/src/analysis/__tests__/incremental.test.js.map +1 -0
- package/dist/src/analysis/__tests__/integration.test.d.ts +14 -0
- package/dist/src/analysis/__tests__/integration.test.d.ts.map +1 -0
- package/dist/src/analysis/__tests__/integration.test.js +1059 -0
- package/dist/src/analysis/__tests__/integration.test.js.map +1 -0
- package/dist/src/analysis/__tests__/metrics.test.d.ts +9 -0
- package/dist/src/analysis/__tests__/metrics.test.d.ts.map +1 -0
- package/dist/src/analysis/__tests__/metrics.test.js +369 -0
- package/dist/src/analysis/__tests__/metrics.test.js.map +1 -0
- package/dist/src/analysis/__tests__/performance.test.d.ts +15 -0
- package/dist/src/analysis/__tests__/performance.test.d.ts.map +1 -0
- package/dist/src/analysis/__tests__/performance.test.js +402 -0
- package/dist/src/analysis/__tests__/performance.test.js.map +1 -0
- package/dist/src/analysis/adapters/__tests__/go.test.d.ts +12 -0
- package/dist/src/analysis/adapters/__tests__/go.test.d.ts.map +1 -0
- package/dist/src/analysis/adapters/__tests__/go.test.js +561 -0
- package/dist/src/analysis/adapters/__tests__/go.test.js.map +1 -0
- package/dist/src/analysis/adapters/__tests__/python.test.d.ts +11 -0
- package/dist/src/analysis/adapters/__tests__/python.test.d.ts.map +1 -0
- package/dist/src/analysis/adapters/__tests__/python.test.js +669 -0
- package/dist/src/analysis/adapters/__tests__/python.test.js.map +1 -0
- package/dist/src/analysis/adapters/__tests__/rust.test.d.ts +12 -0
- package/dist/src/analysis/adapters/__tests__/rust.test.d.ts.map +1 -0
- package/dist/src/analysis/adapters/__tests__/rust.test.js +676 -0
- package/dist/src/analysis/adapters/__tests__/rust.test.js.map +1 -0
- package/dist/src/analysis/adapters/__tests__/typescript.test.d.ts +14 -0
- package/dist/src/analysis/adapters/__tests__/typescript.test.d.ts.map +1 -0
- package/dist/src/analysis/adapters/__tests__/typescript.test.js +381 -0
- package/dist/src/analysis/adapters/__tests__/typescript.test.js.map +1 -0
- package/dist/src/analysis/adapters/base.d.ts +83 -0
- package/dist/src/analysis/adapters/base.d.ts.map +1 -0
- package/dist/src/analysis/adapters/base.js +40 -0
- package/dist/src/analysis/adapters/base.js.map +1 -0
- package/dist/src/analysis/adapters/factory.d.ts +150 -0
- package/dist/src/analysis/adapters/factory.d.ts.map +1 -0
- package/dist/src/analysis/adapters/factory.js +244 -0
- package/dist/src/analysis/adapters/factory.js.map +1 -0
- package/dist/src/analysis/adapters/go.d.ts +131 -0
- package/dist/src/analysis/adapters/go.d.ts.map +1 -0
- package/dist/src/analysis/adapters/go.js +414 -0
- package/dist/src/analysis/adapters/go.js.map +1 -0
- package/dist/src/analysis/adapters/index.d.ts +20 -0
- package/dist/src/analysis/adapters/index.d.ts.map +1 -0
- package/dist/src/analysis/adapters/index.js +23 -0
- package/dist/src/analysis/adapters/index.js.map +1 -0
- package/dist/src/analysis/adapters/java.d.ts +154 -0
- package/dist/src/analysis/adapters/java.d.ts.map +1 -0
- package/dist/src/analysis/adapters/java.js +407 -0
- package/dist/src/analysis/adapters/java.js.map +1 -0
- package/dist/src/analysis/adapters/python.d.ts +165 -0
- package/dist/src/analysis/adapters/python.d.ts.map +1 -0
- package/dist/src/analysis/adapters/python.js +475 -0
- package/dist/src/analysis/adapters/python.js.map +1 -0
- package/dist/src/analysis/adapters/rust.d.ts +116 -0
- package/dist/src/analysis/adapters/rust.d.ts.map +1 -0
- package/dist/src/analysis/adapters/rust.js +476 -0
- package/dist/src/analysis/adapters/rust.js.map +1 -0
- package/dist/src/analysis/adapters/typescript.d.ts +68 -0
- package/dist/src/analysis/adapters/typescript.d.ts.map +1 -0
- package/dist/src/analysis/adapters/typescript.js +79 -0
- package/dist/src/analysis/adapters/typescript.js.map +1 -0
- package/dist/src/analysis/aggregator.d.ts +193 -0
- package/dist/src/analysis/aggregator.d.ts.map +1 -0
- package/dist/src/analysis/aggregator.js +283 -0
- package/dist/src/analysis/aggregator.js.map +1 -0
- package/dist/src/analysis/cache.d.ts +180 -0
- package/dist/src/analysis/cache.d.ts.map +1 -0
- package/dist/src/analysis/cache.js +279 -0
- package/dist/src/analysis/cache.js.map +1 -0
- package/dist/src/analysis/file-streamer.d.ts +136 -0
- package/dist/src/analysis/file-streamer.d.ts.map +1 -0
- package/dist/src/analysis/file-streamer.js +291 -0
- package/dist/src/analysis/file-streamer.js.map +1 -0
- package/dist/src/analysis/framework-detector.d.ts +47 -0
- package/dist/src/analysis/framework-detector.d.ts.map +1 -0
- package/dist/src/analysis/framework-detector.js +151 -0
- package/dist/src/analysis/framework-detector.js.map +1 -0
- package/dist/src/analysis/incremental-parser.d.ts +186 -0
- package/dist/src/analysis/incremental-parser.d.ts.map +1 -0
- package/dist/src/analysis/incremental-parser.js +291 -0
- package/dist/src/analysis/incremental-parser.js.map +1 -0
- package/dist/src/analysis/incremental.d.ts +186 -0
- package/dist/src/analysis/incremental.d.ts.map +1 -0
- package/dist/src/analysis/incremental.js +247 -0
- package/dist/src/analysis/incremental.js.map +1 -0
- package/dist/src/analysis/index.d.ts +29 -2
- package/dist/src/analysis/index.d.ts.map +1 -1
- package/dist/src/analysis/index.js +53 -2
- package/dist/src/analysis/index.js.map +1 -1
- package/dist/src/analysis/language-detector.d.ts +92 -0
- package/dist/src/analysis/language-detector.d.ts.map +1 -0
- package/dist/src/analysis/language-detector.js +602 -0
- package/dist/src/analysis/language-detector.js.map +1 -0
- package/dist/src/analysis/memory-monitor.d.ts +199 -0
- package/dist/src/analysis/memory-monitor.d.ts.map +1 -0
- package/dist/src/analysis/memory-monitor.js +271 -0
- package/dist/src/analysis/memory-monitor.js.map +1 -0
- package/dist/src/analysis/metrics.d.ts +300 -0
- package/dist/src/analysis/metrics.d.ts.map +1 -0
- package/dist/src/analysis/metrics.js +537 -0
- package/dist/src/analysis/metrics.js.map +1 -0
- package/dist/src/analysis/parsers.d.ts +43 -0
- package/dist/src/analysis/parsers.d.ts.map +1 -0
- package/dist/src/analysis/parsers.js +219 -0
- package/dist/src/analysis/parsers.js.map +1 -0
- package/dist/src/analysis/router.d.ts +264 -0
- package/dist/src/analysis/router.d.ts.map +1 -0
- package/dist/src/analysis/router.js +398 -0
- package/dist/src/analysis/router.js.map +1 -0
- package/dist/src/analysis/tree-cache.d.ts +208 -0
- package/dist/src/analysis/tree-cache.d.ts.map +1 -0
- package/dist/src/analysis/tree-cache.js +288 -0
- package/dist/src/analysis/tree-cache.js.map +1 -0
- package/dist/src/analysis/tree-sitter/manager.d.ts +141 -0
- package/dist/src/analysis/tree-sitter/manager.d.ts.map +1 -0
- package/dist/src/analysis/tree-sitter/manager.js +239 -0
- package/dist/src/analysis/tree-sitter/manager.js.map +1 -0
- package/dist/src/analysis/types.d.ts +201 -0
- package/dist/src/analysis/types.d.ts.map +1 -0
- package/dist/src/analysis/types.js +46 -0
- package/dist/src/analysis/types.js.map +1 -0
- package/dist/src/analysis/worker-pool.d.ts +141 -0
- package/dist/src/analysis/worker-pool.d.ts.map +1 -0
- package/dist/src/analysis/worker-pool.js +418 -0
- package/dist/src/analysis/worker-pool.js.map +1 -0
- package/dist/src/analytics/AnalyticsRepository.d.ts.map +1 -1
- package/dist/src/analytics/AnalyticsRepository.js +4 -4
- package/dist/src/analytics/AnalyticsRepository.js.map +1 -1
- package/dist/src/analytics/schema.d.ts +1 -1
- package/dist/src/analytics/schema.d.ts.map +1 -1
- package/dist/src/analytics/schema.js +72 -0
- package/dist/src/analytics/schema.js.map +1 -1
- package/dist/src/api/cache.d.ts +131 -0
- package/dist/src/api/cache.d.ts.map +1 -0
- package/dist/src/api/cache.js +264 -0
- package/dist/src/api/cache.js.map +1 -0
- package/dist/src/api/client.d.ts +282 -0
- package/dist/src/api/client.d.ts.map +1 -0
- package/dist/src/api/client.js +417 -0
- package/dist/src/api/client.js.map +1 -0
- package/dist/src/api/index.d.ts +12 -0
- package/dist/src/api/index.d.ts.map +1 -0
- package/dist/src/api/index.js +17 -0
- package/dist/src/api/index.js.map +1 -0
- package/dist/src/api/types.d.ts +251 -0
- package/dist/src/api/types.d.ts.map +1 -0
- package/dist/src/api/types.js +9 -0
- package/dist/src/api/types.js.map +1 -0
- package/dist/src/benchmarks/BenchmarkRunner.d.ts +6 -175
- package/dist/src/benchmarks/BenchmarkRunner.d.ts.map +1 -1
- package/dist/src/benchmarks/BenchmarkRunner.js +6 -123
- package/dist/src/benchmarks/BenchmarkRunner.js.map +1 -1
- package/dist/src/benchmarks/MemoryProfiler.d.ts +4 -262
- package/dist/src/benchmarks/MemoryProfiler.d.ts.map +1 -1
- package/dist/src/benchmarks/MemoryProfiler.js +4 -400
- package/dist/src/benchmarks/MemoryProfiler.js.map +1 -1
- package/dist/src/benchmarks/comparator.d.ts +38 -0
- package/dist/src/benchmarks/comparator.d.ts.map +1 -0
- package/dist/src/benchmarks/comparator.js +81 -0
- package/dist/src/benchmarks/comparator.js.map +1 -0
- package/dist/src/benchmarks/formatters.d.ts +30 -0
- package/dist/src/benchmarks/formatters.d.ts.map +1 -0
- package/dist/src/benchmarks/formatters.js +88 -0
- package/dist/src/benchmarks/formatters.js.map +1 -0
- package/dist/src/benchmarks/index.d.ts +5 -1
- package/dist/src/benchmarks/index.d.ts.map +1 -1
- package/dist/src/benchmarks/index.js +9 -2
- package/dist/src/benchmarks/index.js.map +1 -1
- package/dist/src/benchmarks/memory/MemoryProfiler.d.ts +165 -0
- package/dist/src/benchmarks/memory/MemoryProfiler.d.ts.map +1 -0
- package/dist/src/benchmarks/memory/MemoryProfiler.js +312 -0
- package/dist/src/benchmarks/memory/MemoryProfiler.js.map +1 -0
- package/dist/src/benchmarks/memory/baseline-manager.d.ts +64 -0
- package/dist/src/benchmarks/memory/baseline-manager.d.ts.map +1 -0
- package/dist/src/benchmarks/memory/baseline-manager.js +95 -0
- package/dist/src/benchmarks/memory/baseline-manager.js.map +1 -0
- package/dist/src/benchmarks/memory/index.d.ts +12 -0
- package/dist/src/benchmarks/memory/index.d.ts.map +1 -0
- package/dist/src/benchmarks/memory/index.js +12 -0
- package/dist/src/benchmarks/memory/index.js.map +1 -0
- package/dist/src/benchmarks/memory/leak-detector.d.ts +23 -0
- package/dist/src/benchmarks/memory/leak-detector.d.ts.map +1 -0
- package/dist/src/benchmarks/memory/leak-detector.js +46 -0
- package/dist/src/benchmarks/memory/leak-detector.js.map +1 -0
- package/dist/src/benchmarks/memory/regression-detector.d.ts +17 -0
- package/dist/src/benchmarks/memory/regression-detector.d.ts.map +1 -0
- package/dist/src/benchmarks/memory/regression-detector.js +56 -0
- package/dist/src/benchmarks/memory/regression-detector.js.map +1 -0
- package/dist/src/benchmarks/memory/types.d.ts +111 -0
- package/dist/src/benchmarks/memory/types.d.ts.map +1 -0
- package/dist/src/benchmarks/memory/types.js +7 -0
- package/dist/src/benchmarks/memory/types.js.map +1 -0
- package/dist/src/benchmarks/memory/utils.d.ts +17 -0
- package/dist/src/benchmarks/memory/utils.d.ts.map +1 -0
- package/dist/src/benchmarks/memory/utils.js +29 -0
- package/dist/src/benchmarks/memory/utils.js.map +1 -0
- package/dist/src/benchmarks/types.d.ts +175 -0
- package/dist/src/benchmarks/types.d.ts.map +1 -0
- package/dist/src/benchmarks/types.js +20 -0
- package/dist/src/benchmarks/types.js.map +1 -0
- package/dist/src/embeddings/index.d.ts.map +1 -1
- package/dist/src/embeddings/index.js.map +1 -1
- package/dist/src/errors.d.ts +1 -0
- package/dist/src/errors.d.ts.map +1 -1
- package/dist/src/errors.js +1 -0
- package/dist/src/errors.js.map +1 -1
- package/dist/src/index.d.ts +5 -3
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +8 -4
- package/dist/src/index.js.map +1 -1
- package/dist/src/repositories/IndexerRepository.d.ts.map +1 -1
- package/dist/src/repositories/IndexerRepository.js +1 -0
- package/dist/src/repositories/IndexerRepository.js.map +1 -1
- package/dist/src/repositories/QuarantineRepository.d.ts +4 -251
- package/dist/src/repositories/QuarantineRepository.d.ts.map +1 -1
- package/dist/src/repositories/QuarantineRepository.js +4 -441
- package/dist/src/repositories/QuarantineRepository.js.map +1 -1
- package/dist/src/repositories/SkillRepository.d.ts.map +1 -1
- package/dist/src/repositories/SkillRepository.js +1 -0
- package/dist/src/repositories/SkillRepository.js.map +1 -1
- package/dist/src/repositories/quarantine/QuarantineRepository.d.ts +168 -0
- package/dist/src/repositories/quarantine/QuarantineRepository.d.ts.map +1 -0
- package/dist/src/repositories/quarantine/QuarantineRepository.js +341 -0
- package/dist/src/repositories/quarantine/QuarantineRepository.js.map +1 -0
- package/dist/src/repositories/quarantine/index.d.ts +10 -0
- package/dist/src/repositories/quarantine/index.d.ts.map +1 -0
- package/dist/src/repositories/quarantine/index.js +10 -0
- package/dist/src/repositories/quarantine/index.js.map +1 -0
- package/dist/src/repositories/quarantine/queries.d.ts +58 -0
- package/dist/src/repositories/quarantine/queries.d.ts.map +1 -0
- package/dist/src/repositories/quarantine/queries.js +88 -0
- package/dist/src/repositories/quarantine/queries.js.map +1 -0
- package/dist/src/repositories/quarantine/query-builder.d.ts +44 -0
- package/dist/src/repositories/quarantine/query-builder.d.ts.map +1 -0
- package/dist/src/repositories/quarantine/query-builder.js +87 -0
- package/dist/src/repositories/quarantine/query-builder.js.map +1 -0
- package/dist/src/repositories/quarantine/types.d.ts +155 -0
- package/dist/src/repositories/quarantine/types.d.ts.map +1 -0
- package/dist/src/repositories/quarantine/types.js +13 -0
- package/dist/src/repositories/quarantine/types.js.map +1 -0
- package/dist/src/scripts/__tests__/scan-imported-skills.test.d.ts +1 -0
- package/dist/src/scripts/__tests__/scan-imported-skills.test.d.ts.map +1 -1
- package/dist/src/scripts/__tests__/scan-imported-skills.test.js +7 -43
- package/dist/src/scripts/__tests__/scan-imported-skills.test.js.map +1 -1
- package/dist/src/scripts/github-import/checkpoint.d.ts +21 -0
- package/dist/src/scripts/github-import/checkpoint.d.ts.map +1 -0
- package/dist/src/scripts/github-import/checkpoint.js +52 -0
- package/dist/src/scripts/github-import/checkpoint.js.map +1 -0
- package/dist/src/scripts/github-import/deduplication.d.ts +15 -0
- package/dist/src/scripts/github-import/deduplication.d.ts.map +1 -0
- package/dist/src/scripts/github-import/deduplication.js +33 -0
- package/dist/src/scripts/github-import/deduplication.js.map +1 -0
- package/dist/src/scripts/github-import/github-client.d.ts +29 -0
- package/dist/src/scripts/github-import/github-client.d.ts.map +1 -0
- package/dist/src/scripts/github-import/github-client.js +184 -0
- package/dist/src/scripts/github-import/github-client.js.map +1 -0
- package/dist/src/scripts/github-import/index.d.ts +29 -0
- package/dist/src/scripts/github-import/index.d.ts.map +1 -0
- package/dist/src/scripts/github-import/index.js +198 -0
- package/dist/src/scripts/github-import/index.js.map +1 -0
- package/dist/src/scripts/github-import/output.d.ts +12 -0
- package/dist/src/scripts/github-import/output.d.ts.map +1 -0
- package/dist/src/scripts/github-import/output.js +34 -0
- package/dist/src/scripts/github-import/output.js.map +1 -0
- package/dist/src/scripts/github-import/types.d.ts +108 -0
- package/dist/src/scripts/github-import/types.d.ts.map +1 -0
- package/dist/src/scripts/github-import/types.js +44 -0
- package/dist/src/scripts/github-import/types.js.map +1 -0
- package/dist/src/scripts/github-import/utils.d.ts +13 -0
- package/dist/src/scripts/github-import/utils.d.ts.map +1 -0
- package/dist/src/scripts/github-import/utils.js +28 -0
- package/dist/src/scripts/github-import/utils.js.map +1 -0
- package/dist/src/scripts/import-github-skills.d.ts +3 -12
- package/dist/src/scripts/import-github-skills.d.ts.map +1 -1
- package/dist/src/scripts/import-github-skills.js +18 -398
- package/dist/src/scripts/import-github-skills.js.map +1 -1
- package/dist/src/scripts/scan-imported-skills.d.ts +7 -7
- package/dist/src/scripts/scan-imported-skills.d.ts.map +1 -1
- package/dist/src/scripts/scan-imported-skills.js +8 -397
- package/dist/src/scripts/scan-imported-skills.js.map +1 -1
- package/dist/src/scripts/skill-scanner/categorizer.d.ts +43 -0
- package/dist/src/scripts/skill-scanner/categorizer.d.ts.map +1 -0
- package/dist/src/scripts/skill-scanner/categorizer.js +61 -0
- package/dist/src/scripts/skill-scanner/categorizer.js.map +1 -0
- package/dist/src/scripts/skill-scanner/file-scanner.d.ts +43 -0
- package/dist/src/scripts/skill-scanner/file-scanner.d.ts.map +1 -0
- package/dist/src/scripts/skill-scanner/file-scanner.js +90 -0
- package/dist/src/scripts/skill-scanner/file-scanner.js.map +1 -0
- package/dist/src/scripts/skill-scanner/index.d.ts +22 -0
- package/dist/src/scripts/skill-scanner/index.d.ts.map +1 -0
- package/dist/src/scripts/skill-scanner/index.js +43 -0
- package/dist/src/scripts/skill-scanner/index.js.map +1 -0
- package/dist/src/scripts/skill-scanner/logger.d.ts +59 -0
- package/dist/src/scripts/skill-scanner/logger.d.ts.map +1 -0
- package/dist/src/scripts/skill-scanner/logger.js +104 -0
- package/dist/src/scripts/skill-scanner/logger.js.map +1 -0
- package/dist/src/scripts/skill-scanner/reporter.d.ts +56 -0
- package/dist/src/scripts/skill-scanner/reporter.d.ts.map +1 -0
- package/dist/src/scripts/skill-scanner/reporter.js +166 -0
- package/dist/src/scripts/skill-scanner/reporter.js.map +1 -0
- package/dist/src/scripts/skill-scanner/scanner.d.ts +44 -0
- package/dist/src/scripts/skill-scanner/scanner.d.ts.map +1 -0
- package/dist/src/scripts/skill-scanner/scanner.js +140 -0
- package/dist/src/scripts/skill-scanner/scanner.js.map +1 -0
- package/dist/src/scripts/skill-scanner/trust-scorer.d.ts +59 -0
- package/dist/src/scripts/skill-scanner/trust-scorer.d.ts.map +1 -0
- package/dist/src/scripts/skill-scanner/trust-scorer.js +62 -0
- package/dist/src/scripts/skill-scanner/trust-scorer.js.map +1 -0
- package/dist/src/scripts/skill-scanner/types.d.ts +98 -0
- package/dist/src/scripts/skill-scanner/types.d.ts.map +1 -0
- package/dist/src/scripts/skill-scanner/types.js +7 -0
- package/dist/src/scripts/skill-scanner/types.js.map +1 -0
- package/dist/src/scripts/validate-skills.d.ts +3 -172
- package/dist/src/scripts/validate-skills.d.ts.map +1 -1
- package/dist/src/scripts/validate-skills.js +6 -519
- package/dist/src/scripts/validate-skills.js.map +1 -1
- package/dist/src/scripts/validation/deduplication.d.ts +23 -0
- package/dist/src/scripts/validation/deduplication.d.ts.map +1 -0
- package/dist/src/scripts/validation/deduplication.js +127 -0
- package/dist/src/scripts/validation/deduplication.js.map +1 -0
- package/dist/src/scripts/validation/field-validators.d.ts +9 -0
- package/dist/src/scripts/validation/field-validators.d.ts.map +1 -0
- package/dist/src/scripts/validation/field-validators.js +135 -0
- package/dist/src/scripts/validation/field-validators.js.map +1 -0
- package/dist/src/scripts/validation/index.d.ts +29 -0
- package/dist/src/scripts/validation/index.d.ts.map +1 -0
- package/dist/src/scripts/validation/index.js +83 -0
- package/dist/src/scripts/validation/index.js.map +1 -0
- package/dist/src/scripts/validation/normalizers.d.ts +29 -0
- package/dist/src/scripts/validation/normalizers.d.ts.map +1 -0
- package/dist/src/scripts/validation/normalizers.js +79 -0
- package/dist/src/scripts/validation/normalizers.js.map +1 -0
- package/dist/src/scripts/validation/pipeline.d.ts +13 -0
- package/dist/src/scripts/validation/pipeline.d.ts.map +1 -0
- package/dist/src/scripts/validation/pipeline.js +126 -0
- package/dist/src/scripts/validation/pipeline.js.map +1 -0
- package/dist/src/scripts/validation/types.d.ts +128 -0
- package/dist/src/scripts/validation/types.d.ts.map +1 -0
- package/dist/src/scripts/validation/types.js +43 -0
- package/dist/src/scripts/validation/types.js.map +1 -0
- package/dist/src/security/index.d.ts +5 -4
- package/dist/src/security/index.d.ts.map +1 -1
- package/dist/src/security/index.js +8 -2
- package/dist/src/security/index.js.map +1 -1
- package/dist/src/security/rate-limiter/RateLimiter.d.ts +86 -0
- package/dist/src/security/rate-limiter/RateLimiter.d.ts.map +1 -0
- package/dist/src/security/rate-limiter/RateLimiter.js +260 -0
- package/dist/src/security/rate-limiter/RateLimiter.js.map +1 -0
- package/dist/src/security/rate-limiter/constants.d.ts +15 -0
- package/dist/src/security/rate-limiter/constants.d.ts.map +1 -0
- package/dist/src/security/rate-limiter/constants.js +15 -0
- package/dist/src/security/rate-limiter/constants.js.map +1 -0
- package/dist/src/security/rate-limiter/errors.d.ts +22 -0
- package/dist/src/security/rate-limiter/errors.d.ts.map +1 -0
- package/dist/src/security/rate-limiter/errors.js +32 -0
- package/dist/src/security/rate-limiter/errors.js.map +1 -0
- package/dist/src/security/rate-limiter/index.d.ts +12 -0
- package/dist/src/security/rate-limiter/index.d.ts.map +1 -0
- package/dist/src/security/rate-limiter/index.js +16 -0
- package/dist/src/security/rate-limiter/index.js.map +1 -0
- package/dist/src/security/rate-limiter/metrics-manager.d.ts +55 -0
- package/dist/src/security/rate-limiter/metrics-manager.d.ts.map +1 -0
- package/dist/src/security/rate-limiter/metrics-manager.js +144 -0
- package/dist/src/security/rate-limiter/metrics-manager.js.map +1 -0
- package/dist/src/security/rate-limiter/presets.d.ts +52 -0
- package/dist/src/security/rate-limiter/presets.d.ts.map +1 -0
- package/dist/src/security/rate-limiter/presets.js +53 -0
- package/dist/src/security/rate-limiter/presets.js.map +1 -0
- package/dist/src/security/rate-limiter/queue-manager.d.ts +59 -0
- package/dist/src/security/rate-limiter/queue-manager.d.ts.map +1 -0
- package/dist/src/security/rate-limiter/queue-manager.js +189 -0
- package/dist/src/security/rate-limiter/queue-manager.js.map +1 -0
- package/dist/src/security/rate-limiter/storage.d.ts +34 -0
- package/dist/src/security/rate-limiter/storage.d.ts.map +1 -0
- package/dist/src/security/rate-limiter/storage.js +80 -0
- package/dist/src/security/rate-limiter/storage.js.map +1 -0
- package/dist/src/security/rate-limiter/token-bucket.d.ts +44 -0
- package/dist/src/security/rate-limiter/token-bucket.d.ts.map +1 -0
- package/dist/src/security/rate-limiter/token-bucket.js +99 -0
- package/dist/src/security/rate-limiter/token-bucket.js.map +1 -0
- package/dist/src/security/rate-limiter/types.d.ts +104 -0
- package/dist/src/security/rate-limiter/types.d.ts.map +1 -0
- package/dist/src/security/rate-limiter/types.js +7 -0
- package/dist/src/security/rate-limiter/types.js.map +1 -0
- package/dist/src/security/{scanner.d.ts → scanner/SecurityScanner.d.ts} +5 -62
- package/dist/src/security/scanner/SecurityScanner.d.ts.map +1 -0
- package/dist/src/security/{scanner.js → scanner/SecurityScanner.js} +6 -202
- package/dist/src/security/scanner/SecurityScanner.js.map +1 -0
- package/dist/src/security/scanner/index.d.ts +11 -0
- package/dist/src/security/scanner/index.d.ts.map +1 -0
- package/dist/src/security/scanner/index.js +14 -0
- package/dist/src/security/scanner/index.js.map +1 -0
- package/dist/src/security/scanner/patterns.d.ts +14 -0
- package/dist/src/security/scanner/patterns.d.ts.map +1 -0
- package/dist/src/security/scanner/patterns.js +147 -0
- package/dist/src/security/scanner/patterns.js.map +1 -0
- package/dist/src/security/scanner/regex-utils.d.ts +33 -0
- package/dist/src/security/scanner/regex-utils.d.ts.map +1 -0
- package/dist/src/security/scanner/regex-utils.js +41 -0
- package/dist/src/security/scanner/regex-utils.js.map +1 -0
- package/dist/src/security/scanner/types.d.ts +63 -0
- package/dist/src/security/scanner/types.d.ts.map +1 -0
- package/dist/src/security/scanner/types.js +7 -0
- package/dist/src/security/scanner/types.js.map +1 -0
- package/dist/src/security/scanner/weights.d.ts +15 -0
- package/dist/src/security/scanner/weights.d.ts.map +1 -0
- package/dist/src/security/scanner/weights.js +28 -0
- package/dist/src/security/scanner/weights.js.map +1 -0
- package/dist/src/services/SearchService.d.ts.map +1 -1
- package/dist/src/services/SearchService.js +1 -0
- package/dist/src/services/SearchService.js.map +1 -1
- package/dist/src/session/SessionHealthMonitor.d.ts +5 -168
- package/dist/src/session/SessionHealthMonitor.d.ts.map +1 -1
- package/dist/src/session/SessionHealthMonitor.js +22 -91
- package/dist/src/session/SessionHealthMonitor.js.map +1 -1
- package/dist/src/session/health-checks.d.ts +37 -0
- package/dist/src/session/health-checks.d.ts.map +1 -0
- package/dist/src/session/health-checks.js +64 -0
- package/dist/src/session/health-checks.js.map +1 -0
- package/dist/src/session/health-types.d.ts +78 -0
- package/dist/src/session/health-types.d.ts.map +1 -0
- package/dist/src/session/health-types.js +16 -0
- package/dist/src/session/health-types.js.map +1 -0
- package/dist/src/session/index.d.ts +5 -1
- package/dist/src/session/index.d.ts.map +1 -1
- package/dist/src/session/index.js +9 -0
- package/dist/src/session/index.js.map +1 -1
- package/dist/src/session/metrics-collector.d.ts +23 -0
- package/dist/src/session/metrics-collector.d.ts.map +1 -0
- package/dist/src/session/metrics-collector.js +44 -0
- package/dist/src/session/metrics-collector.js.map +1 -0
- package/dist/src/session/typed-event-emitter.d.ts +70 -0
- package/dist/src/session/typed-event-emitter.d.ts.map +1 -0
- package/dist/src/session/typed-event-emitter.js +79 -0
- package/dist/src/session/typed-event-emitter.js.map +1 -0
- package/dist/src/sources/BaseSourceAdapter.d.ts +1 -1
- package/dist/src/sources/BaseSourceAdapter.d.ts.map +1 -1
- package/dist/src/sources/BaseSourceAdapter.js +2 -2
- package/dist/src/sources/BaseSourceAdapter.js.map +1 -1
- package/dist/src/telemetry/index.d.ts +1 -0
- package/dist/src/telemetry/index.d.ts.map +1 -1
- package/dist/src/telemetry/index.js +2 -0
- package/dist/src/telemetry/index.js.map +1 -1
- package/dist/src/telemetry/posthog.d.ts +147 -0
- package/dist/src/telemetry/posthog.d.ts.map +1 -0
- package/dist/src/telemetry/posthog.js +213 -0
- package/dist/src/telemetry/posthog.js.map +1 -0
- package/dist/src/types/skill.d.ts +3 -0
- package/dist/src/types/skill.d.ts.map +1 -1
- package/dist/src/types.d.ts +2 -1
- package/dist/src/types.d.ts.map +1 -1
- package/dist/src/types.js +2 -2
- package/dist/src/types.js.map +1 -1
- package/dist/tests/RateLimiter.test.js +4 -4
- package/dist/tests/RateLimiter.test.js.map +1 -1
- package/dist/tests/adapters-factory.test.d.ts +13 -0
- package/dist/tests/adapters-factory.test.d.ts.map +1 -0
- package/dist/tests/adapters-factory.test.js +308 -0
- package/dist/tests/adapters-factory.test.js.map +1 -0
- package/dist/tests/adapters-java.test.d.ts +13 -0
- package/dist/tests/adapters-java.test.d.ts.map +1 -0
- package/dist/tests/adapters-java.test.js +925 -0
- package/dist/tests/adapters-java.test.js.map +1 -0
- package/dist/tests/api/client.validation.test.d.ts +7 -0
- package/dist/tests/api/client.validation.test.d.ts.map +1 -0
- package/dist/tests/api/client.validation.test.js +183 -0
- package/dist/tests/api/client.validation.test.js.map +1 -0
- package/dist/tests/e2e/security/security.e2e.test.js +3 -3
- package/dist/tests/e2e/security/security.e2e.test.js.map +1 -1
- package/dist/tests/language-detector.test.d.ts +13 -0
- package/dist/tests/language-detector.test.d.ts.map +1 -0
- package/dist/tests/language-detector.test.js +674 -0
- package/dist/tests/language-detector.test.js.map +1 -0
- package/dist/tests/telemetry/posthog.test.d.ts +13 -0
- package/dist/tests/telemetry/posthog.test.d.ts.map +1 -0
- package/dist/tests/telemetry/posthog.test.js +600 -0
- package/dist/tests/telemetry/posthog.test.js.map +1 -0
- package/package.json +5 -5
- package/dist/src/security/RateLimiter.d.ts +0 -337
- package/dist/src/security/RateLimiter.d.ts.map +0 -1
- package/dist/src/security/RateLimiter.js +0 -782
- package/dist/src/security/RateLimiter.js.map +0 -1
- package/dist/src/security/scanner.d.ts.map +0 -1
- package/dist/src/security/scanner.js.map +0 -1
|
@@ -0,0 +1,291 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SMI-1308: File Streamer
|
|
3
|
+
*
|
|
4
|
+
* Memory-efficient file reading with streaming support for large files.
|
|
5
|
+
* Provides generators for processing files without loading all into memory.
|
|
6
|
+
*
|
|
7
|
+
* @see docs/architecture/multi-language-analysis.md
|
|
8
|
+
* @module analysis/file-streamer
|
|
9
|
+
*/
|
|
10
|
+
import fs from 'fs/promises';
|
|
11
|
+
import { createReadStream } from 'fs';
|
|
12
|
+
/**
|
|
13
|
+
* Stream files with memory-efficient chunking
|
|
14
|
+
*
|
|
15
|
+
* Uses async generators to process files one at a time,
|
|
16
|
+
* avoiding loading all file contents into memory.
|
|
17
|
+
*
|
|
18
|
+
* @param filePaths - Array of file paths to stream
|
|
19
|
+
* @param options - Streaming options
|
|
20
|
+
* @yields FileContent objects
|
|
21
|
+
*
|
|
22
|
+
* @example
|
|
23
|
+
* ```typescript
|
|
24
|
+
* for await (const file of streamFiles(paths, { maxBufferSize: 512 * 1024 })) {
|
|
25
|
+
* console.log(`${file.path}: ${file.lineCount} lines`)
|
|
26
|
+
* // Process file.content...
|
|
27
|
+
* }
|
|
28
|
+
* ```
|
|
29
|
+
*/
|
|
30
|
+
export async function* streamFiles(filePaths, options = {}) {
|
|
31
|
+
const { maxBufferSize = 1024 * 1024, skipLargeFiles = true, includeBinary = false } = options;
|
|
32
|
+
for (const filePath of filePaths) {
|
|
33
|
+
try {
|
|
34
|
+
const stat = await fs.stat(filePath);
|
|
35
|
+
// Skip directories
|
|
36
|
+
if (stat.isDirectory()) {
|
|
37
|
+
continue;
|
|
38
|
+
}
|
|
39
|
+
// Handle large files
|
|
40
|
+
if (stat.size > maxBufferSize) {
|
|
41
|
+
if (skipLargeFiles) {
|
|
42
|
+
// Skip files larger than buffer (likely generated/minified)
|
|
43
|
+
continue;
|
|
44
|
+
}
|
|
45
|
+
// Stream large files (read only first chunk)
|
|
46
|
+
yield* streamLargeFile(filePath, maxBufferSize);
|
|
47
|
+
continue;
|
|
48
|
+
}
|
|
49
|
+
// Read small files directly
|
|
50
|
+
const content = await fs.readFile(filePath, 'utf-8');
|
|
51
|
+
// Skip binary files unless requested
|
|
52
|
+
if (!includeBinary && isBinaryContent(content)) {
|
|
53
|
+
continue;
|
|
54
|
+
}
|
|
55
|
+
yield {
|
|
56
|
+
path: filePath,
|
|
57
|
+
content,
|
|
58
|
+
size: stat.size,
|
|
59
|
+
lineCount: countLines(content),
|
|
60
|
+
};
|
|
61
|
+
}
|
|
62
|
+
catch {
|
|
63
|
+
// Skip files that can't be read (permissions, symlinks, etc.)
|
|
64
|
+
continue;
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Stream a large file in chunks
|
|
70
|
+
*
|
|
71
|
+
* Reads only the first chunk of the file for analysis.
|
|
72
|
+
* Large files are often generated or minified, so we only
|
|
73
|
+
* need the beginning for pattern detection.
|
|
74
|
+
*
|
|
75
|
+
* @param filePath - Path to the large file
|
|
76
|
+
* @param maxBufferSize - Maximum bytes to read
|
|
77
|
+
* @yields Single FileContent with truncated content
|
|
78
|
+
*/
|
|
79
|
+
async function* streamLargeFile(filePath, maxBufferSize) {
|
|
80
|
+
const content = await new Promise((resolve, reject) => {
|
|
81
|
+
const chunks = [];
|
|
82
|
+
let totalSize = 0;
|
|
83
|
+
const stream = createReadStream(filePath, {
|
|
84
|
+
highWaterMark: Math.min(maxBufferSize, 64 * 1024), // 64KB chunks
|
|
85
|
+
});
|
|
86
|
+
stream.on('data', (chunk) => {
|
|
87
|
+
const buffer = typeof chunk === 'string' ? Buffer.from(chunk) : chunk;
|
|
88
|
+
if (totalSize < maxBufferSize) {
|
|
89
|
+
chunks.push(buffer);
|
|
90
|
+
totalSize += buffer.length;
|
|
91
|
+
}
|
|
92
|
+
if (totalSize >= maxBufferSize) {
|
|
93
|
+
stream.destroy();
|
|
94
|
+
}
|
|
95
|
+
});
|
|
96
|
+
stream.on('end', () => {
|
|
97
|
+
resolve(Buffer.concat(chunks).toString('utf-8'));
|
|
98
|
+
});
|
|
99
|
+
stream.on('error', reject);
|
|
100
|
+
stream.on('close', () => {
|
|
101
|
+
resolve(Buffer.concat(chunks).toString('utf-8'));
|
|
102
|
+
});
|
|
103
|
+
});
|
|
104
|
+
const stat = await fs.stat(filePath);
|
|
105
|
+
const actualSize = Math.min(stat.size, maxBufferSize);
|
|
106
|
+
yield {
|
|
107
|
+
path: filePath,
|
|
108
|
+
content,
|
|
109
|
+
size: actualSize,
|
|
110
|
+
lineCount: countLines(content),
|
|
111
|
+
truncated: stat.size > maxBufferSize,
|
|
112
|
+
};
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* Batch file reading with concurrency control
|
|
116
|
+
*
|
|
117
|
+
* Reads multiple files concurrently with a configurable limit
|
|
118
|
+
* to balance speed and memory usage.
|
|
119
|
+
*
|
|
120
|
+
* @param filePaths - Array of file paths to read
|
|
121
|
+
* @param options - Batch reading options
|
|
122
|
+
* @returns Array of file contents
|
|
123
|
+
*
|
|
124
|
+
* @example
|
|
125
|
+
* ```typescript
|
|
126
|
+
* const files = await batchReadFiles(paths, {
|
|
127
|
+
* concurrency: 20,
|
|
128
|
+
* maxFileSize: 512 * 1024
|
|
129
|
+
* })
|
|
130
|
+
*
|
|
131
|
+
* console.log(`Read ${files.length} files`)
|
|
132
|
+
* ```
|
|
133
|
+
*/
|
|
134
|
+
export async function batchReadFiles(filePaths, options = {}) {
|
|
135
|
+
const { concurrency = 10, maxFileSize = 1024 * 1024, skipErrors = true } = options;
|
|
136
|
+
const results = [];
|
|
137
|
+
// Process in batches
|
|
138
|
+
for (let i = 0; i < filePaths.length; i += concurrency) {
|
|
139
|
+
const batch = filePaths.slice(i, i + concurrency);
|
|
140
|
+
const batchResults = await Promise.all(batch.map(async (filePath) => {
|
|
141
|
+
try {
|
|
142
|
+
const stat = await fs.stat(filePath);
|
|
143
|
+
// Skip directories and large files
|
|
144
|
+
if (stat.isDirectory() || stat.size > maxFileSize) {
|
|
145
|
+
return null;
|
|
146
|
+
}
|
|
147
|
+
const content = await fs.readFile(filePath, 'utf-8');
|
|
148
|
+
// Skip binary content
|
|
149
|
+
if (isBinaryContent(content)) {
|
|
150
|
+
return null;
|
|
151
|
+
}
|
|
152
|
+
return {
|
|
153
|
+
path: filePath,
|
|
154
|
+
content,
|
|
155
|
+
size: stat.size,
|
|
156
|
+
lineCount: countLines(content),
|
|
157
|
+
};
|
|
158
|
+
}
|
|
159
|
+
catch (error) {
|
|
160
|
+
if (skipErrors) {
|
|
161
|
+
return null;
|
|
162
|
+
}
|
|
163
|
+
throw error;
|
|
164
|
+
}
|
|
165
|
+
}));
|
|
166
|
+
for (const result of batchResults) {
|
|
167
|
+
if (result) {
|
|
168
|
+
results.push(result);
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
return results;
|
|
173
|
+
}
|
|
174
|
+
/**
|
|
175
|
+
* Read files as a map for quick lookup
|
|
176
|
+
*
|
|
177
|
+
* @param filePaths - Array of file paths to read
|
|
178
|
+
* @param options - Batch reading options
|
|
179
|
+
* @returns Map of path to file content
|
|
180
|
+
*
|
|
181
|
+
* @example
|
|
182
|
+
* ```typescript
|
|
183
|
+
* const fileMap = await readFilesAsMap(paths)
|
|
184
|
+
* const content = fileMap.get('src/index.ts')
|
|
185
|
+
* ```
|
|
186
|
+
*/
|
|
187
|
+
export async function readFilesAsMap(filePaths, options = {}) {
|
|
188
|
+
const files = await batchReadFiles(filePaths, options);
|
|
189
|
+
const map = new Map();
|
|
190
|
+
for (const file of files) {
|
|
191
|
+
map.set(file.path, file);
|
|
192
|
+
}
|
|
193
|
+
return map;
|
|
194
|
+
}
|
|
195
|
+
/**
|
|
196
|
+
* Count lines in content
|
|
197
|
+
*
|
|
198
|
+
* @param content - File content
|
|
199
|
+
* @returns Number of lines
|
|
200
|
+
*/
|
|
201
|
+
function countLines(content) {
|
|
202
|
+
if (!content)
|
|
203
|
+
return 0;
|
|
204
|
+
let count = 1;
|
|
205
|
+
for (let i = 0; i < content.length; i++) {
|
|
206
|
+
if (content[i] === '\n') {
|
|
207
|
+
count++;
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
return count;
|
|
211
|
+
}
|
|
212
|
+
/**
|
|
213
|
+
* Check if content appears to be binary
|
|
214
|
+
*
|
|
215
|
+
* Detects binary content by looking for null bytes
|
|
216
|
+
* in the first 8KB of the file.
|
|
217
|
+
*
|
|
218
|
+
* @param content - Content to check
|
|
219
|
+
* @returns True if content appears binary
|
|
220
|
+
*/
|
|
221
|
+
function isBinaryContent(content) {
|
|
222
|
+
// Check first 8KB for null bytes
|
|
223
|
+
const checkLength = Math.min(content.length, 8192);
|
|
224
|
+
for (let i = 0; i < checkLength; i++) {
|
|
225
|
+
if (content.charCodeAt(i) === 0) {
|
|
226
|
+
return true;
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
return false;
|
|
230
|
+
}
|
|
231
|
+
/**
|
|
232
|
+
* Get file extension
|
|
233
|
+
*
|
|
234
|
+
* @param filePath - File path
|
|
235
|
+
* @returns Extension including dot, or empty string
|
|
236
|
+
*/
|
|
237
|
+
export function getFileExtension(filePath) {
|
|
238
|
+
const lastDot = filePath.lastIndexOf('.');
|
|
239
|
+
const lastSep = Math.max(filePath.lastIndexOf('/'), filePath.lastIndexOf('\\'));
|
|
240
|
+
if (lastDot > lastSep && lastDot > 0) {
|
|
241
|
+
return filePath.slice(lastDot).toLowerCase();
|
|
242
|
+
}
|
|
243
|
+
return '';
|
|
244
|
+
}
|
|
245
|
+
/**
|
|
246
|
+
* Filter paths by extension
|
|
247
|
+
*
|
|
248
|
+
* @param filePaths - Array of file paths
|
|
249
|
+
* @param extensions - Extensions to include (with dot)
|
|
250
|
+
* @returns Filtered paths
|
|
251
|
+
*
|
|
252
|
+
* @example
|
|
253
|
+
* ```typescript
|
|
254
|
+
* const tsPaths = filterByExtension(allPaths, ['.ts', '.tsx'])
|
|
255
|
+
* ```
|
|
256
|
+
*/
|
|
257
|
+
export function filterByExtension(filePaths, extensions) {
|
|
258
|
+
const extSet = new Set(extensions.map((e) => e.toLowerCase()));
|
|
259
|
+
return filePaths.filter((p) => extSet.has(getFileExtension(p)));
|
|
260
|
+
}
|
|
261
|
+
/**
|
|
262
|
+
* Estimate memory usage for files
|
|
263
|
+
*
|
|
264
|
+
* Provides rough estimate based on file sizes.
|
|
265
|
+
*
|
|
266
|
+
* @param filePaths - Array of file paths
|
|
267
|
+
* @returns Estimated memory usage in bytes
|
|
268
|
+
*
|
|
269
|
+
* @example
|
|
270
|
+
* ```typescript
|
|
271
|
+
* const estimate = await estimateMemoryUsage(paths)
|
|
272
|
+
* console.log(`Estimated: ${MemoryMonitor.formatBytes(estimate)}`)
|
|
273
|
+
* ```
|
|
274
|
+
*/
|
|
275
|
+
export async function estimateMemoryUsage(filePaths) {
|
|
276
|
+
let total = 0;
|
|
277
|
+
for (const filePath of filePaths) {
|
|
278
|
+
try {
|
|
279
|
+
const stat = await fs.stat(filePath);
|
|
280
|
+
if (stat.isFile()) {
|
|
281
|
+
// Rough estimate: content + metadata overhead
|
|
282
|
+
total += stat.size + 200;
|
|
283
|
+
}
|
|
284
|
+
}
|
|
285
|
+
catch {
|
|
286
|
+
// Skip files that can't be stat'd
|
|
287
|
+
}
|
|
288
|
+
}
|
|
289
|
+
return total;
|
|
290
|
+
}
|
|
291
|
+
//# sourceMappingURL=file-streamer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"file-streamer.js","sourceRoot":"","sources":["../../../src/analysis/file-streamer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SMI-600: Framework Detection
|
|
3
|
+
* SMI-1189: Extracted from CodebaseAnalyzer.ts
|
|
4
|
+
*
|
|
5
|
+
* Detects frameworks and libraries used in a codebase
|
|
6
|
+
* based on imports and dependencies.
|
|
7
|
+
*/
|
|
8
|
+
import type { ImportInfo, DependencyInfo, FrameworkInfo } from './types.js';
|
|
9
|
+
/**
|
|
10
|
+
* Framework detection rule
|
|
11
|
+
*/
|
|
12
|
+
export interface FrameworkRule {
|
|
13
|
+
name: string;
|
|
14
|
+
depIndicators: string[];
|
|
15
|
+
importIndicators: string[];
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Built-in framework detection rules
|
|
19
|
+
*/
|
|
20
|
+
export declare const FRAMEWORK_RULES: FrameworkRule[];
|
|
21
|
+
/**
|
|
22
|
+
* Detect frameworks based on imports and dependencies
|
|
23
|
+
*
|
|
24
|
+
* @param imports - All imports found in the codebase
|
|
25
|
+
* @param dependencies - Dependencies from package.json
|
|
26
|
+
* @param rules - Optional custom framework rules (defaults to FRAMEWORK_RULES)
|
|
27
|
+
* @returns Array of detected frameworks sorted by confidence
|
|
28
|
+
*/
|
|
29
|
+
export declare function detectFrameworks(imports: ImportInfo[], dependencies: DependencyInfo[], rules?: FrameworkRule[]): FrameworkInfo[];
|
|
30
|
+
/**
|
|
31
|
+
* Check if a specific framework is detected
|
|
32
|
+
*
|
|
33
|
+
* @param frameworkName - Name of the framework to check
|
|
34
|
+
* @param imports - All imports found in the codebase
|
|
35
|
+
* @param dependencies - Dependencies from package.json
|
|
36
|
+
* @returns True if the framework is detected
|
|
37
|
+
*/
|
|
38
|
+
export declare function hasFramework(frameworkName: string, imports: ImportInfo[], dependencies: DependencyInfo[]): boolean;
|
|
39
|
+
/**
|
|
40
|
+
* Get the primary framework (highest confidence)
|
|
41
|
+
*
|
|
42
|
+
* @param imports - All imports found in the codebase
|
|
43
|
+
* @param dependencies - Dependencies from package.json
|
|
44
|
+
* @returns The primary framework or null if none detected
|
|
45
|
+
*/
|
|
46
|
+
export declare function getPrimaryFramework(imports: ImportInfo[], dependencies: DependencyInfo[]): FrameworkInfo | null;
|
|
47
|
+
//# sourceMappingURL=framework-detector.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"framework-detector.d.ts","sourceRoot":"","sources":["../../../src/analysis/framework-detector.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AAE3E;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAA;IACZ,aAAa,EAAE,MAAM,EAAE,CAAA;IACvB,gBAAgB,EAAE,MAAM,EAAE,CAAA;CAC3B;AAED;;GAEG;AACH,eAAO,MAAM,eAAe,EAAE,aAAa,EA4E1C,CAAA;AAED;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,UAAU,EAAE,EACrB,YAAY,EAAE,cAAc,EAAE,EAC9B,KAAK,GAAE,aAAa,EAAoB,GACvC,aAAa,EAAE,CAqCjB;AAED;;;;;;;GAOG;AACH,wBAAgB,YAAY,CAC1B,aAAa,EAAE,MAAM,EACrB,OAAO,EAAE,UAAU,EAAE,EACrB,YAAY,EAAE,cAAc,EAAE,GAC7B,OAAO,CAGT;AAED;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,UAAU,EAAE,EACrB,YAAY,EAAE,cAAc,EAAE,GAC7B,aAAa,GAAG,IAAI,CAGtB"}
|
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SMI-600: Framework Detection
|
|
3
|
+
* SMI-1189: Extracted from CodebaseAnalyzer.ts
|
|
4
|
+
*
|
|
5
|
+
* Detects frameworks and libraries used in a codebase
|
|
6
|
+
* based on imports and dependencies.
|
|
7
|
+
*/
|
|
8
|
+
/**
|
|
9
|
+
* Built-in framework detection rules
|
|
10
|
+
*/
|
|
11
|
+
export const FRAMEWORK_RULES = [
|
|
12
|
+
{
|
|
13
|
+
name: 'React',
|
|
14
|
+
depIndicators: ['react', 'react-dom'],
|
|
15
|
+
importIndicators: ['react', 'react-dom'],
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
name: 'Next.js',
|
|
19
|
+
depIndicators: ['next'],
|
|
20
|
+
importIndicators: ['next', 'next/router', 'next/link', 'next/image'],
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
name: 'Vue',
|
|
24
|
+
depIndicators: ['vue'],
|
|
25
|
+
importIndicators: ['vue'],
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
name: 'Nuxt',
|
|
29
|
+
depIndicators: ['nuxt'],
|
|
30
|
+
importIndicators: ['nuxt', '#app', '#imports'],
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
name: 'Angular',
|
|
34
|
+
depIndicators: ['@angular/core'],
|
|
35
|
+
importIndicators: ['@angular/core', '@angular/common'],
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
name: 'Express',
|
|
39
|
+
depIndicators: ['express'],
|
|
40
|
+
importIndicators: ['express'],
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
name: 'Fastify',
|
|
44
|
+
depIndicators: ['fastify'],
|
|
45
|
+
importIndicators: ['fastify'],
|
|
46
|
+
},
|
|
47
|
+
{
|
|
48
|
+
name: 'NestJS',
|
|
49
|
+
depIndicators: ['@nestjs/core'],
|
|
50
|
+
importIndicators: ['@nestjs/core', '@nestjs/common'],
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
name: 'Jest',
|
|
54
|
+
depIndicators: ['jest'],
|
|
55
|
+
importIndicators: ['@jest/globals', 'jest'],
|
|
56
|
+
},
|
|
57
|
+
{
|
|
58
|
+
name: 'Vitest',
|
|
59
|
+
depIndicators: ['vitest'],
|
|
60
|
+
importIndicators: ['vitest'],
|
|
61
|
+
},
|
|
62
|
+
{
|
|
63
|
+
name: 'Playwright',
|
|
64
|
+
depIndicators: ['@playwright/test', 'playwright'],
|
|
65
|
+
importIndicators: ['@playwright/test', 'playwright'],
|
|
66
|
+
},
|
|
67
|
+
{
|
|
68
|
+
name: 'Prisma',
|
|
69
|
+
depIndicators: ['@prisma/client', 'prisma'],
|
|
70
|
+
importIndicators: ['@prisma/client'],
|
|
71
|
+
},
|
|
72
|
+
{
|
|
73
|
+
name: 'TypeORM',
|
|
74
|
+
depIndicators: ['typeorm'],
|
|
75
|
+
importIndicators: ['typeorm'],
|
|
76
|
+
},
|
|
77
|
+
{
|
|
78
|
+
name: 'Tailwind CSS',
|
|
79
|
+
depIndicators: ['tailwindcss'],
|
|
80
|
+
importIndicators: [],
|
|
81
|
+
},
|
|
82
|
+
{
|
|
83
|
+
name: 'Electron',
|
|
84
|
+
depIndicators: ['electron'],
|
|
85
|
+
importIndicators: ['electron'],
|
|
86
|
+
},
|
|
87
|
+
];
|
|
88
|
+
/**
|
|
89
|
+
* Detect frameworks based on imports and dependencies
|
|
90
|
+
*
|
|
91
|
+
* @param imports - All imports found in the codebase
|
|
92
|
+
* @param dependencies - Dependencies from package.json
|
|
93
|
+
* @param rules - Optional custom framework rules (defaults to FRAMEWORK_RULES)
|
|
94
|
+
* @returns Array of detected frameworks sorted by confidence
|
|
95
|
+
*/
|
|
96
|
+
export function detectFrameworks(imports, dependencies, rules = FRAMEWORK_RULES) {
|
|
97
|
+
const frameworks = [];
|
|
98
|
+
const depNames = new Set(dependencies.map((d) => d.name));
|
|
99
|
+
const importModules = new Set(imports.map((i) => i.module));
|
|
100
|
+
for (const rule of rules) {
|
|
101
|
+
const evidence = [];
|
|
102
|
+
// Check dependencies
|
|
103
|
+
for (const dep of rule.depIndicators) {
|
|
104
|
+
if (depNames.has(dep)) {
|
|
105
|
+
evidence.push(`Dependency: ${dep}`);
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
// Check imports
|
|
109
|
+
for (const imp of rule.importIndicators) {
|
|
110
|
+
if (importModules.has(imp)) {
|
|
111
|
+
evidence.push(`Import: ${imp}`);
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
if (evidence.length > 0) {
|
|
115
|
+
// Calculate confidence based on evidence
|
|
116
|
+
const confidence = Math.min(1, evidence.length * 0.4);
|
|
117
|
+
frameworks.push({
|
|
118
|
+
name: rule.name,
|
|
119
|
+
confidence,
|
|
120
|
+
evidence,
|
|
121
|
+
});
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
// Sort by confidence
|
|
125
|
+
frameworks.sort((a, b) => b.confidence - a.confidence);
|
|
126
|
+
return frameworks;
|
|
127
|
+
}
|
|
128
|
+
/**
|
|
129
|
+
* Check if a specific framework is detected
|
|
130
|
+
*
|
|
131
|
+
* @param frameworkName - Name of the framework to check
|
|
132
|
+
* @param imports - All imports found in the codebase
|
|
133
|
+
* @param dependencies - Dependencies from package.json
|
|
134
|
+
* @returns True if the framework is detected
|
|
135
|
+
*/
|
|
136
|
+
export function hasFramework(frameworkName, imports, dependencies) {
|
|
137
|
+
const frameworks = detectFrameworks(imports, dependencies);
|
|
138
|
+
return frameworks.some((f) => f.name.toLowerCase() === frameworkName.toLowerCase());
|
|
139
|
+
}
|
|
140
|
+
/**
|
|
141
|
+
* Get the primary framework (highest confidence)
|
|
142
|
+
*
|
|
143
|
+
* @param imports - All imports found in the codebase
|
|
144
|
+
* @param dependencies - Dependencies from package.json
|
|
145
|
+
* @returns The primary framework or null if none detected
|
|
146
|
+
*/
|
|
147
|
+
export function getPrimaryFramework(imports, dependencies) {
|
|
148
|
+
const frameworks = detectFrameworks(imports, dependencies);
|
|
149
|
+
return frameworks.length > 0 ? frameworks[0] : null;
|
|
150
|
+
}
|
|
151
|
+
//# sourceMappingURL=framework-detector.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"framework-detector.js","sourceRoot":"","sources":["../../../src/analysis/framework-detector.ts"],"names":[],"mappings":"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"}
|