codingbuddy 0.0.0-dev.20251218090536.2a4d44c → 0.0.0-dev.20251218092414.9ab52bd

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (42) hide show
  1. package/dist/src/analyzer/analyzer.module.d.ts +2 -0
  2. package/dist/src/analyzer/analyzer.module.js +21 -0
  3. package/dist/src/analyzer/analyzer.module.js.map +1 -0
  4. package/dist/src/analyzer/analyzer.service.d.ts +10 -0
  5. package/dist/src/analyzer/analyzer.service.js +73 -0
  6. package/dist/src/analyzer/analyzer.service.js.map +1 -0
  7. package/dist/src/analyzer/analyzer.service.spec.d.ts +1 -0
  8. package/dist/src/analyzer/analyzer.service.spec.js +67 -0
  9. package/dist/src/analyzer/analyzer.service.spec.js.map +1 -0
  10. package/dist/src/analyzer/analyzer.types.d.ts +70 -0
  11. package/dist/src/analyzer/analyzer.types.js +3 -0
  12. package/dist/src/analyzer/analyzer.types.js.map +1 -0
  13. package/dist/src/analyzer/code.sampler.d.ts +7 -0
  14. package/dist/src/analyzer/code.sampler.js +200 -0
  15. package/dist/src/analyzer/code.sampler.js.map +1 -0
  16. package/dist/src/analyzer/code.sampler.spec.d.ts +1 -0
  17. package/dist/src/analyzer/code.sampler.spec.js +153 -0
  18. package/dist/src/analyzer/code.sampler.spec.js.map +1 -0
  19. package/dist/src/analyzer/config.analyzer.d.ts +7 -0
  20. package/dist/src/analyzer/config.analyzer.js +178 -0
  21. package/dist/src/analyzer/config.analyzer.js.map +1 -0
  22. package/dist/src/analyzer/config.analyzer.spec.d.ts +1 -0
  23. package/dist/src/analyzer/config.analyzer.spec.js +146 -0
  24. package/dist/src/analyzer/config.analyzer.spec.js.map +1 -0
  25. package/dist/src/analyzer/directory.analyzer.d.ts +12 -0
  26. package/dist/src/analyzer/directory.analyzer.js +149 -0
  27. package/dist/src/analyzer/directory.analyzer.js.map +1 -0
  28. package/dist/src/analyzer/directory.analyzer.spec.d.ts +1 -0
  29. package/dist/src/analyzer/directory.analyzer.spec.js +119 -0
  30. package/dist/src/analyzer/directory.analyzer.spec.js.map +1 -0
  31. package/dist/src/analyzer/index.d.ts +7 -0
  32. package/dist/src/analyzer/index.js +32 -0
  33. package/dist/src/analyzer/index.js.map +1 -0
  34. package/dist/src/analyzer/package.analyzer.d.ts +12 -0
  35. package/dist/src/analyzer/package.analyzer.js +118 -0
  36. package/dist/src/analyzer/package.analyzer.js.map +1 -0
  37. package/dist/src/analyzer/package.analyzer.spec.d.ts +1 -0
  38. package/dist/src/analyzer/package.analyzer.spec.js +109 -0
  39. package/dist/src/analyzer/package.analyzer.spec.js.map +1 -0
  40. package/dist/src/config/config.schema.d.ts +24 -24
  41. package/dist/tsconfig.tsbuildinfo +1 -1
  42. package/package.json +1 -1
@@ -0,0 +1,2 @@
1
+ export declare class AnalyzerModule {
2
+ }
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.AnalyzerModule = void 0;
10
+ const common_1 = require("@nestjs/common");
11
+ const analyzer_service_1 = require("./analyzer.service");
12
+ let AnalyzerModule = class AnalyzerModule {
13
+ };
14
+ exports.AnalyzerModule = AnalyzerModule;
15
+ exports.AnalyzerModule = AnalyzerModule = __decorate([
16
+ (0, common_1.Module)({
17
+ providers: [analyzer_service_1.AnalyzerService],
18
+ exports: [analyzer_service_1.AnalyzerService],
19
+ })
20
+ ], AnalyzerModule);
21
+ //# sourceMappingURL=analyzer.module.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"analyzer.module.js","sourceRoot":"","sources":["../../../src/analyzer/analyzer.module.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAAwC;AACxC,yDAAqD;AAe9C,IAAM,cAAc,GAApB,MAAM,cAAc;CAAG,CAAA;AAAjB,wCAAc;yBAAd,cAAc;IAJ1B,IAAA,eAAM,EAAC;QACN,SAAS,EAAE,CAAC,kCAAe,CAAC;QAC5B,OAAO,EAAE,CAAC,kCAAe,CAAC;KAC3B,CAAC;GACW,cAAc,CAAG"}
@@ -0,0 +1,10 @@
1
+ import type { ProjectAnalysis, PackageInfo } from './analyzer.types';
2
+ export interface AnalyzeOptions {
3
+ maxCodeSamples?: number;
4
+ ignorePatterns?: string[];
5
+ }
6
+ export declare class AnalyzerService {
7
+ analyzeProject(projectRoot: string, options?: AnalyzeOptions): Promise<ProjectAnalysis>;
8
+ private inferPatterns;
9
+ quickAnalyze(projectRoot: string): Promise<PackageInfo | null>;
10
+ }
@@ -0,0 +1,73 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.AnalyzerService = void 0;
10
+ const common_1 = require("@nestjs/common");
11
+ const package_analyzer_1 = require("./package.analyzer");
12
+ const directory_analyzer_1 = require("./directory.analyzer");
13
+ const config_analyzer_1 = require("./config.analyzer");
14
+ const code_sampler_1 = require("./code.sampler");
15
+ const DEFAULT_OPTIONS = {
16
+ maxCodeSamples: 5,
17
+ ignorePatterns: [],
18
+ };
19
+ let AnalyzerService = class AnalyzerService {
20
+ async analyzeProject(projectRoot, options = {}) {
21
+ const opts = { ...DEFAULT_OPTIONS, ...options };
22
+ const [packageInfo, dirAnalysis] = await Promise.all([
23
+ (0, package_analyzer_1.analyzePackage)(projectRoot),
24
+ (0, directory_analyzer_1.analyzeDirectory)(projectRoot, opts.ignorePatterns),
25
+ ]);
26
+ const configFiles = await (0, config_analyzer_1.analyzeConfigs)(projectRoot, dirAnalysis.rootFiles);
27
+ const codeSamples = await (0, code_sampler_1.sampleCode)(projectRoot, dirAnalysis.allFiles, opts.maxCodeSamples);
28
+ const detectedPatterns = this.inferPatterns(packageInfo, dirAnalysis);
29
+ return {
30
+ packageInfo,
31
+ directoryStructure: dirAnalysis,
32
+ configFiles,
33
+ codeSamples,
34
+ detectedPatterns,
35
+ };
36
+ }
37
+ inferPatterns(packageInfo, dirAnalysis) {
38
+ const patterns = [];
39
+ for (const pattern of dirAnalysis.patterns) {
40
+ if (pattern.confidence >= 0.5) {
41
+ patterns.push(pattern.name);
42
+ }
43
+ }
44
+ if (packageInfo) {
45
+ for (const framework of packageInfo.detectedFrameworks) {
46
+ if (framework.category === 'frontend' || framework.category === 'fullstack') {
47
+ patterns.push(`${framework.name} Project`);
48
+ }
49
+ if (framework.category === 'backend') {
50
+ patterns.push(`${framework.name} Backend`);
51
+ }
52
+ }
53
+ if (packageInfo.devDependencies['typescript'] ||
54
+ packageInfo.dependencies['typescript']) {
55
+ patterns.push('TypeScript');
56
+ }
57
+ if (packageInfo.devDependencies['lerna'] ||
58
+ packageInfo.devDependencies['turbo'] ||
59
+ packageInfo.devDependencies['nx']) {
60
+ patterns.push('Monorepo');
61
+ }
62
+ }
63
+ return [...new Set(patterns)];
64
+ }
65
+ async quickAnalyze(projectRoot) {
66
+ return (0, package_analyzer_1.analyzePackage)(projectRoot);
67
+ }
68
+ };
69
+ exports.AnalyzerService = AnalyzerService;
70
+ exports.AnalyzerService = AnalyzerService = __decorate([
71
+ (0, common_1.Injectable)()
72
+ ], AnalyzerService);
73
+ //# sourceMappingURL=analyzer.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"analyzer.service.js","sourceRoot":"","sources":["../../../src/analyzer/analyzer.service.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAA4C;AAE5C,yDAAoD;AACpD,6DAAwD;AACxD,uDAAmD;AACnD,iDAA4C;AAe5C,MAAM,eAAe,GAA6B;IAChD,cAAc,EAAE,CAAC;IACjB,cAAc,EAAE,EAAE;CACnB,CAAC;AAMK,IAAM,eAAe,GAArB,MAAM,eAAe;IAQ1B,KAAK,CAAC,cAAc,CAClB,WAAmB,EACnB,UAA0B,EAAE;QAE5B,MAAM,IAAI,GAAG,EAAE,GAAG,eAAe,EAAE,GAAG,OAAO,EAAE,CAAC;QAGhD,MAAM,CAAC,WAAW,EAAE,WAAW,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;YACnD,IAAA,iCAAc,EAAC,WAAW,CAAC;YAC3B,IAAA,qCAAgB,EAAC,WAAW,EAAE,IAAI,CAAC,cAAc,CAAC;SACnD,CAAC,CAAC;QAGH,MAAM,WAAW,GAAG,MAAM,IAAA,gCAAc,EAAC,WAAW,EAAE,WAAW,CAAC,SAAS,CAAC,CAAC;QAG7E,MAAM,WAAW,GAAG,MAAM,IAAA,yBAAU,EAAC,WAAW,EAAE,WAAW,CAAC,QAAQ,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;QAG7F,MAAM,gBAAgB,GAAG,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;QAEtE,OAAO;YACL,WAAW;YACX,kBAAkB,EAAE,WAAW;YAC/B,WAAW;YACX,WAAW;YACX,gBAAgB;SACjB,CAAC;IACJ,CAAC;IAKO,aAAa,CACnB,WAA+B,EAC/B,WAAiE;QAEjE,MAAM,QAAQ,GAAa,EAAE,CAAC;QAG9B,KAAK,MAAM,OAAO,IAAI,WAAW,CAAC,QAAQ,EAAE,CAAC;YAC3C,IAAI,OAAO,CAAC,UAAU,IAAI,GAAG,EAAE,CAAC;gBAC9B,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YAC9B,CAAC;QACH,CAAC;QAGD,IAAI,WAAW,EAAE,CAAC;YAChB,KAAK,MAAM,SAAS,IAAI,WAAW,CAAC,kBAAkB,EAAE,CAAC;gBACvD,IAAI,SAAS,CAAC,QAAQ,KAAK,UAAU,IAAI,SAAS,CAAC,QAAQ,KAAK,WAAW,EAAE,CAAC;oBAC5E,QAAQ,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,IAAI,UAAU,CAAC,CAAC;gBAC7C,CAAC;gBACD,IAAI,SAAS,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;oBACrC,QAAQ,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,IAAI,UAAU,CAAC,CAAC;gBAC7C,CAAC;YACH,CAAC;YAGD,IACE,WAAW,CAAC,eAAe,CAAC,YAAY,CAAC;gBACzC,WAAW,CAAC,YAAY,CAAC,YAAY,CAAC,EACtC,CAAC;gBACD,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YAC9B,CAAC;YAGD,IACE,WAAW,CAAC,eAAe,CAAC,OAAO,CAAC;gBACpC,WAAW,CAAC,eAAe,CAAC,OAAO,CAAC;gBACpC,WAAW,CAAC,eAAe,CAAC,IAAI,CAAC,EACjC,CAAC;gBACD,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YAC5B,CAAC;QACH,CAAC;QAGD,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC;IAChC,CAAC;IAKD,KAAK,CAAC,YAAY,CAAC,WAAmB;QACpC,OAAO,IAAA,iCAAc,EAAC,WAAW,CAAC,CAAC;IACrC,CAAC;CACF,CAAA;AA7FY,0CAAe;0BAAf,eAAe;IAD3B,IAAA,mBAAU,GAAE;GACA,eAAe,CA6F3B"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,67 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const vitest_1 = require("vitest");
4
+ const analyzer_service_1 = require("./analyzer.service");
5
+ (0, vitest_1.describe)('AnalyzerService', () => {
6
+ const service = new analyzer_service_1.AnalyzerService();
7
+ (0, vitest_1.describe)('analyzeProject', () => {
8
+ (0, vitest_1.it)('should return null packageInfo for non-existent path', async () => {
9
+ const result = await service.analyzeProject('/non/existent/path');
10
+ (0, vitest_1.expect)(result.packageInfo).toBeNull();
11
+ (0, vitest_1.expect)(result.directoryStructure.rootDirs).toEqual([]);
12
+ (0, vitest_1.expect)(result.directoryStructure.rootFiles).toEqual([]);
13
+ (0, vitest_1.expect)(result.codeSamples).toEqual([]);
14
+ });
15
+ (0, vitest_1.it)('should analyze current project', async () => {
16
+ const result = await service.analyzeProject(process.cwd());
17
+ (0, vitest_1.expect)(result.packageInfo).not.toBeNull();
18
+ (0, vitest_1.expect)(result.packageInfo?.name).toBeDefined();
19
+ (0, vitest_1.expect)(result.detectedPatterns).toContain('TypeScript');
20
+ (0, vitest_1.expect)(result.directoryStructure.rootDirs).toContain('src');
21
+ (0, vitest_1.expect)(result.directoryStructure.totalDirs).toBeGreaterThan(0);
22
+ (0, vitest_1.expect)(result.directoryStructure.totalFiles).toBeGreaterThan(0);
23
+ (0, vitest_1.expect)(result.directoryStructure.allFiles.length).toBe(result.directoryStructure.totalFiles);
24
+ });
25
+ (0, vitest_1.it)('should respect maxCodeSamples option', async () => {
26
+ const result = await service.analyzeProject(process.cwd(), {
27
+ maxCodeSamples: 2,
28
+ });
29
+ (0, vitest_1.expect)(result.codeSamples.length).toBeLessThanOrEqual(2);
30
+ });
31
+ (0, vitest_1.it)('should detect NestJS framework', async () => {
32
+ const result = await service.analyzeProject(process.cwd());
33
+ (0, vitest_1.expect)(result.packageInfo?.detectedFrameworks).toContainEqual(vitest_1.expect.objectContaining({ name: 'NestJS', category: 'backend' }));
34
+ (0, vitest_1.expect)(result.detectedPatterns).toContain('NestJS Backend');
35
+ });
36
+ (0, vitest_1.it)('should detect config files', async () => {
37
+ const result = await service.analyzeProject(process.cwd());
38
+ (0, vitest_1.expect)(result.configFiles.typescript).toBeDefined();
39
+ (0, vitest_1.expect)(result.configFiles.typescript?.path).toBe('tsconfig.json');
40
+ });
41
+ });
42
+ (0, vitest_1.describe)('quickAnalyze', () => {
43
+ (0, vitest_1.it)('should return package info only', async () => {
44
+ const result = await service.quickAnalyze(process.cwd());
45
+ (0, vitest_1.expect)(result).not.toBeNull();
46
+ (0, vitest_1.expect)(result?.name).toBeDefined();
47
+ (0, vitest_1.expect)(result?.detectedFrameworks).toBeDefined();
48
+ });
49
+ (0, vitest_1.it)('should return null for non-existent path', async () => {
50
+ const result = await service.quickAnalyze('/non/existent/path');
51
+ (0, vitest_1.expect)(result).toBeNull();
52
+ });
53
+ });
54
+ (0, vitest_1.describe)('inferPatterns', () => {
55
+ (0, vitest_1.it)('should infer patterns from analysis results', async () => {
56
+ const result = await service.analyzeProject(process.cwd());
57
+ (0, vitest_1.expect)(result.detectedPatterns.length).toBeGreaterThan(0);
58
+ (0, vitest_1.expect)(result.detectedPatterns).toContain('TypeScript');
59
+ });
60
+ (0, vitest_1.it)('should remove duplicate patterns', async () => {
61
+ const result = await service.analyzeProject(process.cwd());
62
+ const uniquePatterns = new Set(result.detectedPatterns);
63
+ (0, vitest_1.expect)(result.detectedPatterns.length).toBe(uniquePatterns.size);
64
+ });
65
+ });
66
+ });
67
+ //# sourceMappingURL=analyzer.service.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"analyzer.service.spec.js","sourceRoot":"","sources":["../../../src/analyzer/analyzer.service.spec.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,70 @@
1
+ export interface ProjectAnalysis {
2
+ packageInfo: PackageInfo | null;
3
+ directoryStructure: DirectoryAnalysis;
4
+ configFiles: ConfigFilesSummary;
5
+ codeSamples: CodeSample[];
6
+ detectedPatterns: string[];
7
+ }
8
+ export interface PackageInfo {
9
+ name: string;
10
+ version: string;
11
+ description?: string;
12
+ dependencies: Record<string, string>;
13
+ devDependencies: Record<string, string>;
14
+ scripts: Record<string, string>;
15
+ type?: 'module' | 'commonjs';
16
+ detectedFrameworks: DetectedFramework[];
17
+ }
18
+ export interface DetectedFramework {
19
+ name: string;
20
+ category: FrameworkCategory;
21
+ version: string;
22
+ }
23
+ export type FrameworkCategory = 'frontend' | 'backend' | 'fullstack' | 'testing' | 'build' | 'linting' | 'styling' | 'database' | 'other';
24
+ export interface DirectoryAnalysis {
25
+ rootDirs: string[];
26
+ rootFiles: string[];
27
+ allFiles: string[];
28
+ patterns: ArchitecturePattern[];
29
+ totalFiles: number;
30
+ totalDirs: number;
31
+ }
32
+ export interface ArchitecturePattern {
33
+ name: string;
34
+ confidence: number;
35
+ indicators: string[];
36
+ }
37
+ export interface ConfigFilesSummary {
38
+ typescript?: TsConfigSummary;
39
+ eslint?: EslintSummary;
40
+ prettier?: PrettierSummary;
41
+ detected: string[];
42
+ }
43
+ export interface TsConfigSummary {
44
+ path: string;
45
+ strict?: boolean;
46
+ target?: string;
47
+ module?: string;
48
+ hasPathAliases: boolean;
49
+ }
50
+ export interface EslintSummary {
51
+ path: string;
52
+ format: 'legacy' | 'flat';
53
+ extends?: string[];
54
+ plugins?: string[];
55
+ }
56
+ export interface PrettierSummary {
57
+ path: string;
58
+ tabWidth?: number;
59
+ semi?: boolean;
60
+ singleQuote?: boolean;
61
+ trailingComma?: 'none' | 'es5' | 'all';
62
+ }
63
+ export interface CodeSample {
64
+ path: string;
65
+ language: string;
66
+ category: CodeCategory;
67
+ preview: string;
68
+ lineCount: number;
69
+ }
70
+ export type CodeCategory = 'component' | 'page' | 'util' | 'hook' | 'api' | 'service' | 'model' | 'test' | 'config' | 'other';
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=analyzer.types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"analyzer.types.js","sourceRoot":"","sources":["../../../src/analyzer/analyzer.types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,7 @@
1
+ import type { CodeSample, CodeCategory } from './analyzer.types';
2
+ export declare const LANGUAGE_EXTENSIONS: Record<string, string>;
3
+ export declare function detectLanguage(filePath: string): string;
4
+ export declare function isCodeFile(filePath: string): boolean;
5
+ export declare function categorizeFile(filePath: string): CodeCategory;
6
+ export declare function selectSampleFiles(files: string[], maxSamples: number): string[];
7
+ export declare function sampleCode(projectRoot: string, files: string[], maxSamples?: number): Promise<CodeSample[]>;
@@ -0,0 +1,200 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.LANGUAGE_EXTENSIONS = void 0;
4
+ exports.detectLanguage = detectLanguage;
5
+ exports.isCodeFile = isCodeFile;
6
+ exports.categorizeFile = categorizeFile;
7
+ exports.selectSampleFiles = selectSampleFiles;
8
+ exports.sampleCode = sampleCode;
9
+ const fs = require("fs/promises");
10
+ const path = require("path");
11
+ exports.LANGUAGE_EXTENSIONS = {
12
+ '.ts': 'typescript',
13
+ '.tsx': 'typescript',
14
+ '.mts': 'typescript',
15
+ '.cts': 'typescript',
16
+ '.js': 'javascript',
17
+ '.jsx': 'javascript',
18
+ '.mjs': 'javascript',
19
+ '.cjs': 'javascript',
20
+ '.py': 'python',
21
+ '.pyw': 'python',
22
+ '.java': 'java',
23
+ '.kt': 'kotlin',
24
+ '.kts': 'kotlin',
25
+ '.go': 'go',
26
+ '.rs': 'rust',
27
+ '.c': 'c',
28
+ '.h': 'c',
29
+ '.cpp': 'cpp',
30
+ '.hpp': 'cpp',
31
+ '.cc': 'cpp',
32
+ '.cs': 'csharp',
33
+ '.rb': 'ruby',
34
+ '.php': 'php',
35
+ '.swift': 'swift',
36
+ '.css': 'css',
37
+ '.scss': 'scss',
38
+ '.sass': 'sass',
39
+ '.less': 'less',
40
+ '.json': 'json',
41
+ '.yaml': 'yaml',
42
+ '.yml': 'yaml',
43
+ '.toml': 'toml',
44
+ '.xml': 'xml',
45
+ '.sh': 'shell',
46
+ '.bash': 'shell',
47
+ '.zsh': 'shell',
48
+ '.sql': 'sql',
49
+ '.graphql': 'graphql',
50
+ '.gql': 'graphql',
51
+ };
52
+ const CODE_EXTENSIONS = new Set([
53
+ '.ts',
54
+ '.tsx',
55
+ '.js',
56
+ '.jsx',
57
+ '.mjs',
58
+ '.cjs',
59
+ '.py',
60
+ '.java',
61
+ '.kt',
62
+ '.go',
63
+ '.rs',
64
+ '.c',
65
+ '.cpp',
66
+ '.cs',
67
+ '.rb',
68
+ '.php',
69
+ '.swift',
70
+ '.css',
71
+ '.scss',
72
+ '.vue',
73
+ '.svelte',
74
+ ]);
75
+ function detectLanguage(filePath) {
76
+ const ext = path.extname(filePath).toLowerCase();
77
+ return exports.LANGUAGE_EXTENSIONS[ext] ?? 'unknown';
78
+ }
79
+ function isCodeFile(filePath) {
80
+ const ext = path.extname(filePath).toLowerCase();
81
+ return CODE_EXTENSIONS.has(ext);
82
+ }
83
+ function pathContainsDir(lowerPath, dirName) {
84
+ return (lowerPath.includes(`/${dirName}/`) ||
85
+ lowerPath.includes(`\\${dirName}\\`) ||
86
+ lowerPath.startsWith(`${dirName}/`) ||
87
+ lowerPath.startsWith(`${dirName}\\`));
88
+ }
89
+ function categorizeFile(filePath) {
90
+ const lower = filePath.toLowerCase();
91
+ const fileName = path.basename(filePath).toLowerCase();
92
+ if (fileName.includes('.spec.') ||
93
+ fileName.includes('.test.') ||
94
+ lower.includes('__tests__') ||
95
+ lower.includes('__mocks__')) {
96
+ return 'test';
97
+ }
98
+ if (pathContainsDir(lower, 'api') ||
99
+ fileName === 'route.ts' ||
100
+ fileName === 'route.js') {
101
+ return 'api';
102
+ }
103
+ if (pathContainsDir(lower, 'services') || fileName.includes('.service.')) {
104
+ return 'service';
105
+ }
106
+ if (pathContainsDir(lower, 'models') || pathContainsDir(lower, 'entities')) {
107
+ return 'model';
108
+ }
109
+ if (pathContainsDir(lower, 'hooks')) {
110
+ return 'hook';
111
+ }
112
+ const baseFileName = path.basename(filePath);
113
+ if (/^use[A-Z]/.test(baseFileName)) {
114
+ return 'hook';
115
+ }
116
+ if (pathContainsDir(lower, 'components') || pathContainsDir(lower, 'ui')) {
117
+ return 'component';
118
+ }
119
+ if (pathContainsDir(lower, 'pages') ||
120
+ fileName === 'page.tsx' ||
121
+ fileName === 'page.ts' ||
122
+ fileName === 'page.jsx' ||
123
+ fileName === 'page.js') {
124
+ return 'page';
125
+ }
126
+ if (pathContainsDir(lower, 'utils') ||
127
+ pathContainsDir(lower, 'lib') ||
128
+ pathContainsDir(lower, 'helpers')) {
129
+ return 'util';
130
+ }
131
+ if (pathContainsDir(lower, 'config')) {
132
+ return 'config';
133
+ }
134
+ return 'other';
135
+ }
136
+ function selectSampleFiles(files, maxSamples) {
137
+ const codeFiles = files.filter((f) => {
138
+ if (!isCodeFile(f))
139
+ return false;
140
+ const category = categorizeFile(f);
141
+ return category !== 'test';
142
+ });
143
+ if (codeFiles.length === 0) {
144
+ return [];
145
+ }
146
+ const byCategory = new Map();
147
+ for (const file of codeFiles) {
148
+ const category = categorizeFile(file);
149
+ if (!byCategory.has(category)) {
150
+ byCategory.set(category, []);
151
+ }
152
+ byCategory.get(category).push(file);
153
+ }
154
+ const selected = [];
155
+ const categories = Array.from(byCategory.keys());
156
+ let categoryIndex = 0;
157
+ while (selected.length < maxSamples && byCategory.size > 0) {
158
+ const category = categories[categoryIndex % categories.length];
159
+ const filesInCategory = byCategory.get(category);
160
+ if (filesInCategory && filesInCategory.length > 0) {
161
+ selected.push(filesInCategory.shift());
162
+ if (filesInCategory.length === 0) {
163
+ byCategory.delete(category);
164
+ categories.splice(categories.indexOf(category), 1);
165
+ }
166
+ }
167
+ categoryIndex++;
168
+ if (categories.length === 0)
169
+ break;
170
+ }
171
+ return selected;
172
+ }
173
+ const PREVIEW_LINES = 50;
174
+ const MAX_FILE_SIZE = 100 * 1024;
175
+ async function sampleCode(projectRoot, files, maxSamples = 5) {
176
+ const selectedFiles = selectSampleFiles(files, maxSamples);
177
+ const samples = [];
178
+ for (const relativePath of selectedFiles) {
179
+ const fullPath = path.join(projectRoot, relativePath);
180
+ try {
181
+ const stats = await fs.stat(fullPath);
182
+ if (stats.size > MAX_FILE_SIZE) {
183
+ continue;
184
+ }
185
+ const content = await fs.readFile(fullPath, 'utf-8');
186
+ const lines = content.split('\n');
187
+ samples.push({
188
+ path: relativePath,
189
+ language: detectLanguage(relativePath),
190
+ category: categorizeFile(relativePath),
191
+ preview: lines.slice(0, PREVIEW_LINES).join('\n'),
192
+ lineCount: lines.length,
193
+ });
194
+ }
195
+ catch {
196
+ }
197
+ }
198
+ return samples;
199
+ }
200
+ //# sourceMappingURL=code.sampler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"code.sampler.js","sourceRoot":"","sources":["../../../src/analyzer/code.sampler.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export {};