codebase-context 1.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.
Files changed (83) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +74 -0
  3. package/dist/analyzers/angular/index.d.ts +44 -0
  4. package/dist/analyzers/angular/index.d.ts.map +1 -0
  5. package/dist/analyzers/angular/index.js +922 -0
  6. package/dist/analyzers/angular/index.js.map +1 -0
  7. package/dist/analyzers/generic/index.d.ts +23 -0
  8. package/dist/analyzers/generic/index.d.ts.map +1 -0
  9. package/dist/analyzers/generic/index.js +354 -0
  10. package/dist/analyzers/generic/index.js.map +1 -0
  11. package/dist/core/analyzer-registry.d.ts +36 -0
  12. package/dist/core/analyzer-registry.d.ts.map +1 -0
  13. package/dist/core/analyzer-registry.js +78 -0
  14. package/dist/core/analyzer-registry.js.map +1 -0
  15. package/dist/core/file-watcher.d.ts +63 -0
  16. package/dist/core/file-watcher.d.ts.map +1 -0
  17. package/dist/core/file-watcher.js +210 -0
  18. package/dist/core/file-watcher.js.map +1 -0
  19. package/dist/core/indexer.d.ts +29 -0
  20. package/dist/core/indexer.d.ts.map +1 -0
  21. package/dist/core/indexer.js +507 -0
  22. package/dist/core/indexer.js.map +1 -0
  23. package/dist/core/search.d.ts +31 -0
  24. package/dist/core/search.d.ts.map +1 -0
  25. package/dist/core/search.js +307 -0
  26. package/dist/core/search.js.map +1 -0
  27. package/dist/embeddings/index.d.ts +5 -0
  28. package/dist/embeddings/index.d.ts.map +1 -0
  29. package/dist/embeddings/index.js +33 -0
  30. package/dist/embeddings/index.js.map +1 -0
  31. package/dist/embeddings/openai.d.ts +19 -0
  32. package/dist/embeddings/openai.d.ts.map +1 -0
  33. package/dist/embeddings/openai.js +59 -0
  34. package/dist/embeddings/openai.js.map +1 -0
  35. package/dist/embeddings/transformers.d.ts +17 -0
  36. package/dist/embeddings/transformers.d.ts.map +1 -0
  37. package/dist/embeddings/transformers.js +83 -0
  38. package/dist/embeddings/transformers.js.map +1 -0
  39. package/dist/embeddings/types.d.ts +20 -0
  40. package/dist/embeddings/types.d.ts.map +1 -0
  41. package/dist/embeddings/types.js +9 -0
  42. package/dist/embeddings/types.js.map +1 -0
  43. package/dist/index.d.ts +41 -0
  44. package/dist/index.d.ts.map +1 -0
  45. package/dist/index.js +790 -0
  46. package/dist/index.js.map +1 -0
  47. package/dist/lib.d.ts +58 -0
  48. package/dist/lib.d.ts.map +1 -0
  49. package/dist/lib.js +81 -0
  50. package/dist/lib.js.map +1 -0
  51. package/dist/storage/index.d.ts +12 -0
  52. package/dist/storage/index.d.ts.map +1 -0
  53. package/dist/storage/index.js +18 -0
  54. package/dist/storage/index.js.map +1 -0
  55. package/dist/storage/lancedb.d.ts +24 -0
  56. package/dist/storage/lancedb.d.ts.map +1 -0
  57. package/dist/storage/lancedb.js +197 -0
  58. package/dist/storage/lancedb.js.map +1 -0
  59. package/dist/storage/types.d.ts +45 -0
  60. package/dist/storage/types.d.ts.map +1 -0
  61. package/dist/storage/types.js +8 -0
  62. package/dist/storage/types.js.map +1 -0
  63. package/dist/types/index.d.ts +367 -0
  64. package/dist/types/index.d.ts.map +1 -0
  65. package/dist/types/index.js +6 -0
  66. package/dist/types/index.js.map +1 -0
  67. package/dist/utils/chunking.d.ts +23 -0
  68. package/dist/utils/chunking.d.ts.map +1 -0
  69. package/dist/utils/chunking.js +226 -0
  70. package/dist/utils/chunking.js.map +1 -0
  71. package/dist/utils/language-detection.d.ts +29 -0
  72. package/dist/utils/language-detection.d.ts.map +1 -0
  73. package/dist/utils/language-detection.js +127 -0
  74. package/dist/utils/language-detection.js.map +1 -0
  75. package/dist/utils/pattern-detector.d.ts +41 -0
  76. package/dist/utils/pattern-detector.d.ts.map +1 -0
  77. package/dist/utils/pattern-detector.js +101 -0
  78. package/dist/utils/pattern-detector.js.map +1 -0
  79. package/dist/utils/usage-tracker.d.ts +120 -0
  80. package/dist/utils/usage-tracker.d.ts.map +1 -0
  81. package/dist/utils/usage-tracker.js +336 -0
  82. package/dist/utils/usage-tracker.js.map +1 -0
  83. package/package.json +98 -0
@@ -0,0 +1,367 @@
1
+ /**
2
+ * Core types for the modular codebase context system
3
+ * These types define the contract that all framework analyzers must implement
4
+ */
5
+ export interface FrameworkAnalyzer {
6
+ /** Unique identifier for the analyzer (e.g., 'angular', 'react', 'vue') */
7
+ readonly name: string;
8
+ /** Framework version this analyzer supports */
9
+ readonly version: string;
10
+ /** File extensions this analyzer handles */
11
+ readonly supportedExtensions: string[];
12
+ /** Check if this analyzer can handle a given file */
13
+ canAnalyze(filePath: string, content?: string): boolean;
14
+ /** Parse a file and extract structured information */
15
+ analyze(filePath: string, content: string): Promise<AnalysisResult>;
16
+ /** Detect framework-specific patterns and metadata from the entire codebase */
17
+ detectCodebaseMetadata(rootPath: string): Promise<CodebaseMetadata>;
18
+ /**
19
+ * Generate a concise summary of a code chunk (1-2 sentences)
20
+ * Optional - defaults to generic summary if not implemented
21
+ */
22
+ summarize?(chunk: CodeChunk): string;
23
+ /** Priority - higher number = higher priority (default: 50) */
24
+ readonly priority: number;
25
+ }
26
+ export interface AnalysisResult {
27
+ filePath: string;
28
+ language: string;
29
+ framework?: string;
30
+ components: CodeComponent[];
31
+ imports: ImportStatement[];
32
+ exports: ExportStatement[];
33
+ dependencies: Dependency[];
34
+ metadata: Record<string, any>;
35
+ chunks: CodeChunk[];
36
+ }
37
+ export interface CodeComponent {
38
+ name: string;
39
+ type: string;
40
+ componentType?: string;
41
+ startLine: number;
42
+ endLine: number;
43
+ layer?: ArchitecturalLayer;
44
+ decorators?: Decorator[];
45
+ properties?: Property[];
46
+ methods?: Method[];
47
+ lifecycle?: string[];
48
+ dependencies?: string[];
49
+ metadata: Record<string, any>;
50
+ }
51
+ export interface ImportStatement {
52
+ source: string;
53
+ imports: string[];
54
+ isDefault: boolean;
55
+ isDynamic: boolean;
56
+ line?: number;
57
+ }
58
+ export interface ExportStatement {
59
+ name: string;
60
+ isDefault: boolean;
61
+ type: string;
62
+ }
63
+ export interface Dependency {
64
+ name: string;
65
+ version?: string;
66
+ category: DependencyCategory;
67
+ layer?: ArchitecturalLayer;
68
+ }
69
+ export type DependencyCategory = 'framework' | 'state' | 'ui' | 'routing' | 'http' | 'testing' | 'utility' | 'build' | 'other';
70
+ export type ArchitecturalLayer = 'presentation' | 'business' | 'data' | 'state' | 'core' | 'shared' | 'feature' | 'infrastructure' | 'unknown';
71
+ export interface CodeChunk {
72
+ id: string;
73
+ content: string;
74
+ filePath: string;
75
+ relativePath: string;
76
+ startLine: number;
77
+ endLine: number;
78
+ language: string;
79
+ framework?: string;
80
+ componentType?: string;
81
+ layer?: ArchitecturalLayer;
82
+ dependencies: string[];
83
+ imports: string[];
84
+ exports: string[];
85
+ tags: string[];
86
+ metadata: ChunkMetadata;
87
+ embedding?: number[];
88
+ }
89
+ export interface ChunkMetadata {
90
+ componentName?: string;
91
+ decoratorType?: string;
92
+ className?: string;
93
+ functionName?: string;
94
+ isStandalone?: boolean;
95
+ selector?: string;
96
+ template?: string;
97
+ styles?: string[];
98
+ linesOfCode?: number;
99
+ complexity?: number;
100
+ cyclomaticComplexity?: number;
101
+ maintainabilityIndex?: number;
102
+ hasTests?: boolean;
103
+ testCoverage?: number;
104
+ dependencies?: string[];
105
+ dependents?: string[];
106
+ relatedFiles?: string[];
107
+ patterns?: string[];
108
+ antiPatterns?: string[];
109
+ styleViolations?: string[];
110
+ tags?: string[];
111
+ category?: string;
112
+ [key: string]: any;
113
+ }
114
+ export interface CodebaseMetadata {
115
+ name: string;
116
+ rootPath: string;
117
+ framework?: FrameworkInfo;
118
+ languages: LanguageInfo[];
119
+ dependencies: Dependency[];
120
+ architecture: ArchitectureInfo;
121
+ styleGuides: StyleGuide[];
122
+ documentation: DocumentationFile[];
123
+ projectStructure: ProjectStructure;
124
+ statistics: CodebaseStatistics;
125
+ customMetadata: Record<string, any>;
126
+ }
127
+ export interface FrameworkInfo {
128
+ name: string;
129
+ version: string;
130
+ type: 'angular' | 'react' | 'vue' | 'svelte' | 'solid' | 'other';
131
+ variant?: string;
132
+ stateManagement?: string[];
133
+ uiLibraries?: string[];
134
+ testingFrameworks?: string[];
135
+ }
136
+ export interface LanguageInfo {
137
+ name: string;
138
+ version?: string;
139
+ fileCount: number;
140
+ lineCount: number;
141
+ percentage: number;
142
+ }
143
+ export interface ArchitectureInfo {
144
+ type: 'layered' | 'feature-based' | 'modular' | 'monolithic' | 'micro-frontend' | 'mixed';
145
+ layers: Record<ArchitecturalLayer, number>;
146
+ modules?: ModuleInfo[];
147
+ patterns: string[];
148
+ }
149
+ export interface ModuleInfo {
150
+ name: string;
151
+ path: string;
152
+ type: string;
153
+ dependencies: string[];
154
+ exports: string[];
155
+ }
156
+ export interface ProjectStructure {
157
+ type: 'monorepo' | 'single-app' | 'library' | 'multi-package';
158
+ workspaces?: string[];
159
+ packages?: PackageInfo[];
160
+ }
161
+ export interface PackageInfo {
162
+ name: string;
163
+ path: string;
164
+ type: 'app' | 'library' | 'tool';
165
+ framework?: string;
166
+ }
167
+ export interface CodebaseStatistics {
168
+ totalFiles: number;
169
+ totalLines: number;
170
+ totalComponents: number;
171
+ componentsByType: Record<string, number>;
172
+ componentsByLayer: Record<ArchitecturalLayer, number>;
173
+ avgComplexity?: number;
174
+ testCoverage?: number;
175
+ }
176
+ export interface StyleGuide {
177
+ name: string;
178
+ filePath: string;
179
+ content: string;
180
+ metadata: Record<string, any>;
181
+ category: string;
182
+ tags: string[];
183
+ rules: StyleRule[];
184
+ parsedAt: Date;
185
+ }
186
+ export interface StyleRule {
187
+ id: string;
188
+ title: string;
189
+ description: string;
190
+ examples: CodeExample[];
191
+ antiPatterns?: CodeExample[];
192
+ category: string;
193
+ severity?: 'error' | 'warning' | 'info';
194
+ autoFixable?: boolean;
195
+ }
196
+ export interface CodeExample {
197
+ language: string;
198
+ code: string;
199
+ explanation?: string;
200
+ tags?: string[];
201
+ }
202
+ export interface DocumentationFile {
203
+ filePath: string;
204
+ title: string;
205
+ content: string;
206
+ type: 'readme' | 'guide' | 'api' | 'changelog' | 'contributing' | 'other';
207
+ metadata: Record<string, any>;
208
+ sections?: DocumentationSection[];
209
+ }
210
+ export interface DocumentationSection {
211
+ title: string;
212
+ content: string;
213
+ level: number;
214
+ tags?: string[];
215
+ }
216
+ export interface SearchQuery {
217
+ query: string;
218
+ filters?: SearchFilters;
219
+ limit?: number;
220
+ includeContext?: boolean;
221
+ includeRelated?: boolean;
222
+ }
223
+ export interface SearchFilters {
224
+ framework?: string;
225
+ language?: string;
226
+ componentType?: string;
227
+ layer?: ArchitecturalLayer;
228
+ tags?: string[];
229
+ filePaths?: string[];
230
+ excludePaths?: string[];
231
+ hasTests?: boolean;
232
+ minComplexity?: number;
233
+ maxComplexity?: number;
234
+ }
235
+ export interface SearchResult {
236
+ summary: string;
237
+ snippet: string;
238
+ filePath: string;
239
+ startLine: number;
240
+ endLine: number;
241
+ score: number;
242
+ relevanceReason?: string;
243
+ language: string;
244
+ framework?: string;
245
+ componentType?: string;
246
+ layer?: ArchitecturalLayer;
247
+ metadata: ChunkMetadata;
248
+ fullContent?: string;
249
+ relatedChunks?: CodeChunk[];
250
+ highlights?: TextHighlight[];
251
+ }
252
+ export interface TextHighlight {
253
+ start: number;
254
+ end: number;
255
+ text: string;
256
+ type: 'match' | 'keyword' | 'entity';
257
+ }
258
+ export interface IndexingProgress {
259
+ phase: IndexingPhase;
260
+ percentage: number;
261
+ currentFile?: string;
262
+ filesProcessed: number;
263
+ totalFiles: number;
264
+ chunksCreated: number;
265
+ errors: IndexingError[];
266
+ startedAt: Date;
267
+ estimatedCompletion?: Date;
268
+ }
269
+ export type IndexingPhase = 'initializing' | 'scanning' | 'analyzing' | 'parsing' | 'chunking' | 'embedding' | 'storing' | 'indexing' | 'complete' | 'error';
270
+ export interface IndexingError {
271
+ filePath: string;
272
+ error: string;
273
+ phase: IndexingPhase;
274
+ timestamp: Date;
275
+ }
276
+ export interface IndexingStats {
277
+ totalFiles: number;
278
+ indexedFiles: number;
279
+ skippedFiles: number;
280
+ totalChunks: number;
281
+ totalLines: number;
282
+ duration: number;
283
+ avgChunkSize: number;
284
+ componentsByType: Record<string, number>;
285
+ componentsByLayer: Record<ArchitecturalLayer, number>;
286
+ errors: IndexingError[];
287
+ startedAt: Date;
288
+ completedAt?: Date;
289
+ }
290
+ export interface AnalyzerConfig {
291
+ enabled: boolean;
292
+ priority?: number;
293
+ options?: Record<string, any>;
294
+ }
295
+ export interface CodebaseConfig {
296
+ analyzers: {
297
+ angular?: AnalyzerConfig;
298
+ react?: AnalyzerConfig;
299
+ vue?: AnalyzerConfig;
300
+ generic?: AnalyzerConfig;
301
+ [key: string]: AnalyzerConfig | undefined;
302
+ };
303
+ include?: string[];
304
+ exclude?: string[];
305
+ respectGitignore?: boolean;
306
+ parsing: {
307
+ maxFileSize?: number;
308
+ chunkSize?: number;
309
+ chunkOverlap?: number;
310
+ parseTests?: boolean;
311
+ parseNodeModules?: boolean;
312
+ };
313
+ styleGuides?: {
314
+ autoDetect?: boolean;
315
+ paths?: string[];
316
+ parseMarkdown?: boolean;
317
+ };
318
+ documentation?: {
319
+ autoDetect?: boolean;
320
+ includeReadmes?: boolean;
321
+ includeChangelogs?: boolean;
322
+ customPaths?: string[];
323
+ };
324
+ embedding?: {
325
+ provider?: 'transformers' | 'openai' | 'ollama' | 'custom';
326
+ model?: string;
327
+ batchSize?: number;
328
+ };
329
+ skipEmbedding?: boolean;
330
+ storage?: {
331
+ provider?: 'lancedb' | 'milvus' | 'chromadb' | 'custom';
332
+ path?: string;
333
+ connection?: Record<string, any>;
334
+ };
335
+ customMetadata?: Record<string, any>;
336
+ }
337
+ export interface Decorator {
338
+ name: string;
339
+ arguments?: any[];
340
+ properties?: Record<string, any>;
341
+ }
342
+ export interface Property {
343
+ name: string;
344
+ type?: string;
345
+ visibility?: 'public' | 'private' | 'protected';
346
+ isStatic?: boolean;
347
+ isReadonly?: boolean;
348
+ decorators?: Decorator[];
349
+ initializer?: string;
350
+ }
351
+ export interface Method {
352
+ name: string;
353
+ returnType?: string;
354
+ parameters?: Parameter[];
355
+ visibility?: 'public' | 'private' | 'protected';
356
+ isStatic?: boolean;
357
+ isAsync?: boolean;
358
+ decorators?: Decorator[];
359
+ }
360
+ export interface Parameter {
361
+ name: string;
362
+ type?: string;
363
+ isOptional?: boolean;
364
+ defaultValue?: string;
365
+ decorators?: Decorator[];
366
+ }
367
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Core types for the modular codebase context system
3
+ * These types define the contract that all framework analyzers must implement
4
+ */
5
+ export {};
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA;;;GAGG"}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * Code Chunking Utilities
3
+ * Smart chunking that preserves semantic boundaries
4
+ */
5
+ import { CodeChunk, CodeComponent } from '../types/index.js';
6
+ export interface ChunkingOptions {
7
+ maxChunkSize?: number;
8
+ overlapSize?: number;
9
+ preserveBoundaries?: boolean;
10
+ }
11
+ /**
12
+ * Create chunks from code content
13
+ */
14
+ export declare function createChunksFromCode(content: string, filePath: string, relativePath: string, language: string, components: CodeComponent[], metadata?: Record<string, any>): Promise<CodeChunk[]>;
15
+ /**
16
+ * Calculate cyclomatic complexity of code
17
+ */
18
+ export declare function calculateComplexity(code: string): number;
19
+ /**
20
+ * Merge adjacent chunks if they're small
21
+ */
22
+ export declare function mergeSmallChunks(chunks: CodeChunk[], minSize?: number): CodeChunk[];
23
+ //# sourceMappingURL=chunking.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chunking.d.ts","sourceRoot":"","sources":["../../src/utils/chunking.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAE7D,MAAM,WAAW,eAAe;IAC9B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,kBAAkB,CAAC,EAAE,OAAO,CAAC;CAC9B;AAQD;;GAEG;AACH,wBAAsB,oBAAoB,CACxC,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,EAChB,YAAY,EAAE,MAAM,EACpB,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,aAAa,EAAE,EAC3B,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAC7B,OAAO,CAAC,SAAS,EAAE,CAAC,CAatB;AAkID;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAwBxD;AAsDD;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,SAAS,EAAE,EAAE,OAAO,GAAE,MAAW,GAAG,SAAS,EAAE,CA8BvF"}
@@ -0,0 +1,226 @@
1
+ /**
2
+ * Code Chunking Utilities
3
+ * Smart chunking that preserves semantic boundaries
4
+ */
5
+ import { v4 as uuidv4 } from 'uuid';
6
+ const DEFAULT_OPTIONS = {
7
+ maxChunkSize: 100,
8
+ overlapSize: 10,
9
+ preserveBoundaries: true,
10
+ };
11
+ /**
12
+ * Create chunks from code content
13
+ */
14
+ export async function createChunksFromCode(content, filePath, relativePath, language, components, metadata) {
15
+ const chunks = [];
16
+ const lines = content.split('\n');
17
+ // If we have components, create component-aware chunks
18
+ if (components.length > 0) {
19
+ chunks.push(...createComponentChunks(content, filePath, relativePath, language, components, metadata));
20
+ }
21
+ else {
22
+ // Fall back to line-based chunking
23
+ chunks.push(...createLineChunks(content, filePath, relativePath, language, metadata));
24
+ }
25
+ return chunks;
26
+ }
27
+ /**
28
+ * Create chunks based on component boundaries
29
+ */
30
+ function createComponentChunks(content, filePath, relativePath, language, components, metadata) {
31
+ const chunks = [];
32
+ const lines = content.split('\n');
33
+ // Get imports section (usually at the top)
34
+ const importLines = [];
35
+ for (const line of lines) {
36
+ if (line.trim().startsWith('import ') || line.trim().startsWith('from ')) {
37
+ importLines.push(line);
38
+ }
39
+ else if (line.trim() && !line.trim().startsWith('//') && !line.trim().startsWith('/*')) {
40
+ break;
41
+ }
42
+ else {
43
+ importLines.push(line);
44
+ }
45
+ }
46
+ const importSection = importLines.join('\n');
47
+ // Create a chunk for each component
48
+ for (const component of components) {
49
+ const startLine = component.startLine - 1; // Convert to 0-indexed
50
+ const endLine = component.endLine;
51
+ // Extract component code with some context
52
+ const contextStart = Math.max(0, startLine - 5);
53
+ const contextEnd = Math.min(lines.length, endLine + 5);
54
+ const componentLines = lines.slice(contextStart, contextEnd);
55
+ const componentContent = componentLines.join('\n');
56
+ // Calculate complexity
57
+ const complexity = calculateComplexity(componentContent);
58
+ // Generate tags
59
+ const tags = generateTags(component, metadata);
60
+ chunks.push({
61
+ id: uuidv4(),
62
+ content: componentContent,
63
+ filePath,
64
+ relativePath,
65
+ startLine: contextStart + 1,
66
+ endLine: contextEnd,
67
+ language,
68
+ framework: metadata?.framework,
69
+ componentType: component.componentType,
70
+ layer: metadata?.layer,
71
+ dependencies: component.dependencies || [],
72
+ imports: [], // Will be populated during analysis
73
+ exports: [],
74
+ tags,
75
+ metadata: {
76
+ ...metadata,
77
+ componentName: component.name,
78
+ componentType: component.componentType,
79
+ complexity,
80
+ importSection, // Keep imports as context in metadata
81
+ lifecycle: component.lifecycle,
82
+ },
83
+ });
84
+ }
85
+ return chunks;
86
+ }
87
+ /**
88
+ * Create chunks based on line count with overlap
89
+ */
90
+ function createLineChunks(content, filePath, relativePath, language, metadata, options = DEFAULT_OPTIONS) {
91
+ const chunks = [];
92
+ const lines = content.split('\n');
93
+ const { maxChunkSize = 100, overlapSize = 10 } = options;
94
+ let startLine = 0;
95
+ while (startLine < lines.length) {
96
+ const endLine = Math.min(startLine + maxChunkSize, lines.length);
97
+ const chunkLines = lines.slice(startLine, endLine);
98
+ const chunkContent = chunkLines.join('\n');
99
+ const complexity = calculateComplexity(chunkContent);
100
+ chunks.push({
101
+ id: uuidv4(),
102
+ content: chunkContent,
103
+ filePath,
104
+ relativePath,
105
+ startLine: startLine + 1,
106
+ endLine,
107
+ language,
108
+ framework: metadata?.framework,
109
+ layer: metadata?.layer,
110
+ dependencies: [],
111
+ imports: [],
112
+ exports: [],
113
+ tags: [],
114
+ metadata: {
115
+ ...metadata,
116
+ complexity,
117
+ },
118
+ });
119
+ // Move to next chunk with overlap
120
+ startLine = endLine - overlapSize;
121
+ if (startLine >= lines.length - overlapSize) {
122
+ break;
123
+ }
124
+ }
125
+ return chunks;
126
+ }
127
+ /**
128
+ * Calculate cyclomatic complexity of code
129
+ */
130
+ export function calculateComplexity(code) {
131
+ let complexity = 1; // Base complexity
132
+ // Count decision points
133
+ const patterns = [
134
+ /\bif\s*\(/g,
135
+ /\belse\s+if\s*\(/g,
136
+ /\bfor\s*\(/g,
137
+ /\bwhile\s*\(/g,
138
+ /\bcase\s+/g,
139
+ /\bcatch\s*\(/g,
140
+ /\b\?\s*[^:]/g, // Ternary operator
141
+ /&&/g,
142
+ /\|\|/g,
143
+ ];
144
+ for (const pattern of patterns) {
145
+ const matches = code.match(pattern);
146
+ if (matches) {
147
+ complexity += matches.length;
148
+ }
149
+ }
150
+ return complexity;
151
+ }
152
+ /**
153
+ * Generate tags for a component
154
+ */
155
+ function generateTags(component, metadata) {
156
+ const tags = [];
157
+ // Add component type as tag
158
+ if (component.componentType) {
159
+ tags.push(component.componentType);
160
+ }
161
+ // Add decorator names
162
+ if (component.decorators) {
163
+ for (const decorator of component.decorators) {
164
+ tags.push(decorator.name.toLowerCase());
165
+ }
166
+ }
167
+ // Add lifecycle hooks
168
+ if (component.lifecycle) {
169
+ for (const hook of component.lifecycle) {
170
+ tags.push(hook.toLowerCase());
171
+ }
172
+ }
173
+ // Add state management pattern
174
+ if (metadata?.statePattern) {
175
+ tags.push(metadata.statePattern);
176
+ }
177
+ // Add layer
178
+ if (metadata?.layer) {
179
+ tags.push(metadata.layer);
180
+ }
181
+ // Add framework
182
+ if (metadata?.framework) {
183
+ tags.push(metadata.framework);
184
+ }
185
+ // Add special tags based on metadata
186
+ if (metadata?.isStandalone) {
187
+ tags.push('standalone');
188
+ }
189
+ if (metadata?.hasRoutes) {
190
+ tags.push('routing');
191
+ }
192
+ return [...new Set(tags)]; // Remove duplicates
193
+ }
194
+ /**
195
+ * Merge adjacent chunks if they're small
196
+ */
197
+ export function mergeSmallChunks(chunks, minSize = 20) {
198
+ if (chunks.length <= 1)
199
+ return chunks;
200
+ const merged = [];
201
+ let current = chunks[0];
202
+ for (let i = 1; i < chunks.length; i++) {
203
+ const next = chunks[i];
204
+ const currentLines = current.content.split('\n').length;
205
+ const nextLines = next.content.split('\n').length;
206
+ if (currentLines < minSize && nextLines < minSize) {
207
+ // Merge chunks
208
+ current = {
209
+ ...current,
210
+ content: current.content + '\n' + next.content,
211
+ endLine: next.endLine,
212
+ metadata: {
213
+ ...current.metadata,
214
+ merged: true,
215
+ },
216
+ };
217
+ }
218
+ else {
219
+ merged.push(current);
220
+ current = next;
221
+ }
222
+ }
223
+ merged.push(current);
224
+ return merged;
225
+ }
226
+ //# sourceMappingURL=chunking.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chunking.js","sourceRoot":"","sources":["../../src/utils/chunking.ts"],"names":[],"mappings":"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"}