model-mesh-codemap 1.1.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.
@@ -0,0 +1,237 @@
1
+ "use strict";
2
+ /**
3
+ * Interactive Folder Selector
4
+ * Displays all project folders and allows user to select multiple ones
5
+ */
6
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
7
+ if (k2 === undefined) k2 = k;
8
+ var desc = Object.getOwnPropertyDescriptor(m, k);
9
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
10
+ desc = { enumerable: true, get: function() { return m[k]; } };
11
+ }
12
+ Object.defineProperty(o, k2, desc);
13
+ }) : (function(o, m, k, k2) {
14
+ if (k2 === undefined) k2 = k;
15
+ o[k2] = m[k];
16
+ }));
17
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
18
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
19
+ }) : function(o, v) {
20
+ o["default"] = v;
21
+ });
22
+ var __importStar = (this && this.__importStar) || (function () {
23
+ var ownKeys = function(o) {
24
+ ownKeys = Object.getOwnPropertyNames || function (o) {
25
+ var ar = [];
26
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
27
+ return ar;
28
+ };
29
+ return ownKeys(o);
30
+ };
31
+ return function (mod) {
32
+ if (mod && mod.__esModule) return mod;
33
+ var result = {};
34
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
35
+ __setModuleDefault(result, mod);
36
+ return result;
37
+ };
38
+ })();
39
+ Object.defineProperty(exports, "__esModule", { value: true });
40
+ exports.FolderSelector = void 0;
41
+ const fs = __importStar(require("fs"));
42
+ const path = __importStar(require("path"));
43
+ const readline = __importStar(require("readline"));
44
+ class FolderSelector {
45
+ constructor(projectRoot) {
46
+ this.folders = [];
47
+ this.projectRoot = projectRoot;
48
+ this.ignorePatterns = new Set([
49
+ 'node_modules',
50
+ '.git',
51
+ '.claude',
52
+ 'dist',
53
+ 'build',
54
+ 'coverage',
55
+ '.next',
56
+ 'tmp',
57
+ '.cache',
58
+ '.nuxt',
59
+ 'out',
60
+ '.env',
61
+ '.env.local',
62
+ '.env.*.local',
63
+ '.idea',
64
+ '.vscode',
65
+ '.DS_Store',
66
+ 'Thumbs.db',
67
+ ]);
68
+ }
69
+ /**
70
+ * Discover all folders in project root
71
+ */
72
+ async discoverFolders() {
73
+ const entries = fs.readdirSync(this.projectRoot, { withFileTypes: true });
74
+ this.folders = entries
75
+ .filter(entry => {
76
+ // Only directories
77
+ if (!entry.isDirectory())
78
+ return false;
79
+ // Skip ignored patterns
80
+ if (this.ignorePatterns.has(entry.name))
81
+ return false;
82
+ // Skip hidden folders (except .claude)
83
+ if (entry.name.startsWith('.') && entry.name !== '.claude')
84
+ return false;
85
+ return true;
86
+ })
87
+ .map(entry => {
88
+ const folderPath = path.join(this.projectRoot, entry.name);
89
+ const fileCount = this.countFiles(folderPath);
90
+ return {
91
+ name: entry.name,
92
+ path: entry.name,
93
+ fileCount,
94
+ isSelected: false,
95
+ };
96
+ })
97
+ .sort((a, b) => {
98
+ // Sort by name, with common folders first
99
+ const order = ['app', 'src', 'client', 'server', 'lib', 'components'];
100
+ const aIndex = order.indexOf(a.name);
101
+ const bIndex = order.indexOf(b.name);
102
+ if (aIndex !== -1 && bIndex !== -1)
103
+ return aIndex - bIndex;
104
+ if (aIndex !== -1)
105
+ return -1;
106
+ if (bIndex !== -1)
107
+ return 1;
108
+ return a.name.localeCompare(b.name);
109
+ });
110
+ return this.folders;
111
+ }
112
+ /**
113
+ * Display folders and let user select
114
+ */
115
+ async selectFolders() {
116
+ if (this.folders.length === 0) {
117
+ await this.discoverFolders();
118
+ }
119
+ if (this.folders.length === 0) {
120
+ console.log('❌ No folders found to scan');
121
+ return [];
122
+ }
123
+ console.log('\n📂 Available Folders:\n');
124
+ this.folders.forEach((folder, index) => {
125
+ const fileCountStr = folder.fileCount ? ` (${folder.fileCount} files)` : '';
126
+ console.log(` ${index + 1}. ${folder.name.padEnd(20)} ${fileCountStr}`);
127
+ });
128
+ console.log('\n💡 Enter folder numbers to select (e.g., "1,2,4" or "all" or "1-3"):');
129
+ const selection = await this.promptSelection();
130
+ return this.parseSelection(selection);
131
+ }
132
+ /**
133
+ * Prompt user for selection
134
+ */
135
+ async promptSelection() {
136
+ const rl = readline.createInterface({
137
+ input: process.stdin,
138
+ output: process.stdout,
139
+ });
140
+ return new Promise(resolve => {
141
+ rl.question('▶ Select folders: ', answer => {
142
+ rl.close();
143
+ resolve(answer.trim());
144
+ });
145
+ });
146
+ }
147
+ /**
148
+ * Parse user selection (supports: "1,2,3" or "1-3" or "all")
149
+ */
150
+ parseSelection(input) {
151
+ if (!input) {
152
+ console.log('❌ No selection made');
153
+ return [];
154
+ }
155
+ // Handle "all"
156
+ if (input.toLowerCase() === 'all') {
157
+ this.folders.forEach(f => (f.isSelected = true));
158
+ return this.folders;
159
+ }
160
+ const selected = [];
161
+ const parts = input.split(',').map(p => p.trim());
162
+ for (const part of parts) {
163
+ // Handle ranges: "1-3"
164
+ if (part.includes('-')) {
165
+ const [start, end] = part.split('-').map(p => parseInt(p.trim(), 10));
166
+ for (let i = start; i <= end; i++) {
167
+ if (i > 0 && i <= this.folders.length) {
168
+ const folder = this.folders[i - 1];
169
+ folder.isSelected = true;
170
+ if (!selected.includes(folder)) {
171
+ selected.push(folder);
172
+ }
173
+ }
174
+ }
175
+ }
176
+ else {
177
+ // Handle single numbers
178
+ const idx = parseInt(part, 10);
179
+ if (idx > 0 && idx <= this.folders.length) {
180
+ const folder = this.folders[idx - 1];
181
+ folder.isSelected = true;
182
+ if (!selected.includes(folder)) {
183
+ selected.push(folder);
184
+ }
185
+ }
186
+ }
187
+ }
188
+ return selected;
189
+ }
190
+ /**
191
+ * Count files in a folder (quick count, max 1000)
192
+ */
193
+ countFiles(folderPath, maxCount = 1000) {
194
+ let count = 0;
195
+ const traverse = (dir) => {
196
+ if (count >= maxCount)
197
+ return;
198
+ try {
199
+ const entries = fs.readdirSync(dir, { withFileTypes: true });
200
+ for (const entry of entries) {
201
+ if (count >= maxCount)
202
+ break;
203
+ if (entry.isDirectory()) {
204
+ // Skip ignored directories
205
+ if (!this.ignorePatterns.has(entry.name) && !entry.name.startsWith('.')) {
206
+ traverse(path.join(dir, entry.name));
207
+ }
208
+ }
209
+ else {
210
+ count++;
211
+ }
212
+ }
213
+ }
214
+ catch {
215
+ // Ignore errors (permission denied, etc)
216
+ }
217
+ };
218
+ traverse(folderPath);
219
+ return Math.min(count, maxCount);
220
+ }
221
+ /**
222
+ * Display selected folders summary
223
+ */
224
+ displaySelection(selected) {
225
+ if (selected.length === 0) {
226
+ console.log('❌ No folders selected');
227
+ return;
228
+ }
229
+ console.log(`\n✅ Selected ${selected.length} folder(s):\n`);
230
+ selected.forEach(folder => {
231
+ const fileCountStr = folder.fileCount ? ` • ${folder.fileCount} files` : '';
232
+ console.log(` • ${folder.name}${fileCountStr}`);
233
+ });
234
+ }
235
+ }
236
+ exports.FolderSelector = FolderSelector;
237
+ //# sourceMappingURL=folder-selector.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"folder-selector.js","sourceRoot":"","sources":["../src/folder-selector.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Ignore rules system for file scanning
3
+ * Handles default and custom ignore patterns
4
+ */
5
+ export declare class IgnoreRules {
6
+ private patterns;
7
+ private regexPatterns;
8
+ constructor(customPatterns?: string[]);
9
+ private compilePatterns;
10
+ shouldIgnore(filePath: string): boolean;
11
+ addPattern(pattern: string): void;
12
+ removePattern(pattern: string): void;
13
+ getPatterns(): string[];
14
+ isDefaultPattern(pattern: string): boolean;
15
+ }
16
+ //# sourceMappingURL=ignore-rules.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ignore-rules.d.ts","sourceRoot":"","sources":["../src/ignore-rules.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,qBAAa,WAAW;IACtB,OAAO,CAAC,QAAQ,CAAc;IAC9B,OAAO,CAAC,aAAa,CAAgB;gBAEzB,cAAc,GAAE,MAAM,EAAO;IA2DzC,OAAO,CAAC,eAAe;IAgBvB,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;IAKvC,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAKjC,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAKpC,WAAW,IAAI,MAAM,EAAE;IAIvB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;CAI3C"}
@@ -0,0 +1,93 @@
1
+ "use strict";
2
+ /**
3
+ * Ignore rules system for file scanning
4
+ * Handles default and custom ignore patterns
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.IgnoreRules = void 0;
8
+ class IgnoreRules {
9
+ constructor(customPatterns = []) {
10
+ this.regexPatterns = [];
11
+ // Default ignore patterns
12
+ this.patterns = new Set([
13
+ // Dependencies
14
+ 'node_modules/**',
15
+ '.git/**',
16
+ '.gitignore',
17
+ 'vendor/**',
18
+ 'Gemfile.lock',
19
+ 'package-lock.json',
20
+ 'yarn.lock',
21
+ // Build outputs
22
+ 'dist/**',
23
+ 'build/**',
24
+ 'coverage/**',
25
+ '.next/**',
26
+ '.nuxt/**',
27
+ 'out/**',
28
+ 'tmp/**',
29
+ '.cache/**',
30
+ // Environment & configuration
31
+ '.env*',
32
+ '.DS_Store',
33
+ 'Thumbs.db',
34
+ // Logs
35
+ '*.log',
36
+ 'logs/**',
37
+ // IDE
38
+ '.vscode/**',
39
+ '.idea/**',
40
+ '*.swp',
41
+ '*.swo',
42
+ '*~',
43
+ // OS
44
+ '.DS_Store',
45
+ 'Thumbs.db',
46
+ // Database
47
+ '*.db',
48
+ '*.sqlite',
49
+ '*.sqlite3',
50
+ // Archives
51
+ '*.zip',
52
+ '*.tar',
53
+ '*.gz',
54
+ // Add custom patterns
55
+ ...customPatterns,
56
+ ]);
57
+ this.compilePatterns();
58
+ }
59
+ compilePatterns() {
60
+ this.regexPatterns = Array.from(this.patterns).map(pattern => {
61
+ // Convert glob pattern to regex
62
+ let regexStr = pattern
63
+ .replace(/\./g, '\\.')
64
+ .replace(/\*/g, '[^/]*')
65
+ .replace(/\*\*/g, '.*')
66
+ .replace(/\?/g, '.');
67
+ // Handle ** paths correctly
68
+ regexStr = regexStr.replace(/\[\^\/\]\*\.\*/g, '.*');
69
+ return new RegExp(`(^|/|\\\\)${regexStr}(/|\\\\|$)`);
70
+ });
71
+ }
72
+ shouldIgnore(filePath) {
73
+ const normalizedPath = filePath.replace(/\\/g, '/');
74
+ return this.regexPatterns.some(regex => regex.test(normalizedPath));
75
+ }
76
+ addPattern(pattern) {
77
+ this.patterns.add(pattern);
78
+ this.compilePatterns();
79
+ }
80
+ removePattern(pattern) {
81
+ this.patterns.delete(pattern);
82
+ this.compilePatterns();
83
+ }
84
+ getPatterns() {
85
+ return Array.from(this.patterns);
86
+ }
87
+ isDefaultPattern(pattern) {
88
+ // Check if pattern is in default set (implementation specific)
89
+ return !this.patterns.has(pattern);
90
+ }
91
+ }
92
+ exports.IgnoreRules = IgnoreRules;
93
+ //# sourceMappingURL=ignore-rules.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ignore-rules.js","sourceRoot":"","sources":["../src/ignore-rules.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAIH,MAAa,WAAW;IAItB,YAAY,iBAA2B,EAAE;QAFjC,kBAAa,GAAa,EAAE,CAAC;QAGnC,0BAA0B;QAC1B,IAAI,CAAC,QAAQ,GAAG,IAAI,GAAG,CAAC;YACtB,eAAe;YACf,iBAAiB;YACjB,SAAS;YACT,YAAY;YACZ,WAAW;YACX,cAAc;YACd,mBAAmB;YACnB,WAAW;YAEX,gBAAgB;YAChB,SAAS;YACT,UAAU;YACV,aAAa;YACb,UAAU;YACV,UAAU;YACV,QAAQ;YACR,QAAQ;YACR,WAAW;YAEX,8BAA8B;YAC9B,OAAO;YACP,WAAW;YACX,WAAW;YAEX,OAAO;YACP,OAAO;YACP,SAAS;YAET,MAAM;YACN,YAAY;YACZ,UAAU;YACV,OAAO;YACP,OAAO;YACP,IAAI;YAEJ,KAAK;YACL,WAAW;YACX,WAAW;YAEX,WAAW;YACX,MAAM;YACN,UAAU;YACV,WAAW;YAEX,WAAW;YACX,OAAO;YACP,OAAO;YACP,MAAM;YAEN,sBAAsB;YACtB,GAAG,cAAc;SAClB,CAAC,CAAC;QAEH,IAAI,CAAC,eAAe,EAAE,CAAC;IACzB,CAAC;IAEO,eAAe;QACrB,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE;YAC3D,gCAAgC;YAChC,IAAI,QAAQ,GAAG,OAAO;iBACnB,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC;iBACrB,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC;iBACvB,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC;iBACtB,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;YAEvB,4BAA4B;YAC5B,QAAQ,GAAG,QAAQ,CAAC,OAAO,CAAC,iBAAiB,EAAE,IAAI,CAAC,CAAC;YAErD,OAAO,IAAI,MAAM,CAAC,aAAa,QAAQ,YAAY,CAAC,CAAC;QACvD,CAAC,CAAC,CAAC;IACL,CAAC;IAED,YAAY,CAAC,QAAgB;QAC3B,MAAM,cAAc,GAAG,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QACpD,OAAO,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC;IACtE,CAAC;IAED,UAAU,CAAC,OAAe;QACxB,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAC3B,IAAI,CAAC,eAAe,EAAE,CAAC;IACzB,CAAC;IAED,aAAa,CAAC,OAAe;QAC3B,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAC9B,IAAI,CAAC,eAAe,EAAE,CAAC;IACzB,CAAC;IAED,WAAW;QACT,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACnC,CAAC;IAED,gBAAgB,CAAC,OAAe;QAC9B,+DAA+D;QAC/D,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IACrC,CAAC;CACF;AAtGD,kCAsGC"}
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Language-specific symbol and import extraction
3
+ * Supports: TypeScript, JavaScript, Ruby, ERB
4
+ */
5
+ import { CodeSymbol } from './types.js';
6
+ export declare class LanguageParser {
7
+ static parse(content: string, language: string): {
8
+ imports: string[];
9
+ exports: string[];
10
+ symbols: CodeSymbol[];
11
+ };
12
+ private static parseTypeScript;
13
+ private static parseJavaScript;
14
+ private static parseRuby;
15
+ private static parseERB;
16
+ private static parseJSON;
17
+ private static parseYAML;
18
+ }
19
+ //# sourceMappingURL=language-parsers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"language-parsers.d.ts","sourceRoot":"","sources":["../src/language-parsers.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAExC,qBAAa,cAAc;IACzB,MAAM,CAAC,KAAK,CACV,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,GACf;QACD,OAAO,EAAE,MAAM,EAAE,CAAC;QAClB,OAAO,EAAE,MAAM,EAAE,CAAC;QAClB,OAAO,EAAE,UAAU,EAAE,CAAC;KACvB;IAsBD,OAAO,CAAC,MAAM,CAAC,eAAe;IAqF9B,OAAO,CAAC,MAAM,CAAC,eAAe;IAK9B,OAAO,CAAC,MAAM,CAAC,SAAS;IAmExB,OAAO,CAAC,MAAM,CAAC,QAAQ;IA4BvB,OAAO,CAAC,MAAM,CAAC,SAAS;IAUxB,OAAO,CAAC,MAAM,CAAC,SAAS;CAiBzB"}
@@ -0,0 +1,221 @@
1
+ "use strict";
2
+ /**
3
+ * Language-specific symbol and import extraction
4
+ * Supports: TypeScript, JavaScript, Ruby, ERB
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.LanguageParser = void 0;
8
+ class LanguageParser {
9
+ static parse(content, language) {
10
+ switch (language.toLowerCase()) {
11
+ case 'typescript':
12
+ case 'jsx':
13
+ case 'tsx':
14
+ return this.parseTypeScript(content);
15
+ case 'javascript':
16
+ return this.parseJavaScript(content);
17
+ case 'ruby':
18
+ return this.parseRuby(content);
19
+ case 'erb':
20
+ return this.parseERB(content);
21
+ case 'json':
22
+ return this.parseJSON(content);
23
+ case 'yaml':
24
+ case 'yml':
25
+ return this.parseYAML(content);
26
+ default:
27
+ return { imports: [], exports: [], symbols: [] };
28
+ }
29
+ }
30
+ static parseTypeScript(content) {
31
+ const imports = [];
32
+ const exports = [];
33
+ const symbols = [];
34
+ // Extract imports/requires
35
+ const importRegex = /^(?:import|require\(['"](.*?)['"])\s+(?:from\s+)?['"]([^'"]+)['"]/gm;
36
+ let match;
37
+ while ((match = importRegex.exec(content)) !== null) {
38
+ const modulePath = match[2] || match[1];
39
+ if (modulePath && !imports.includes(modulePath)) {
40
+ imports.push(modulePath);
41
+ }
42
+ }
43
+ // Extract exports
44
+ const exportRegex = /export\s+(?:default\s+)?(?:async\s+)?(?:function|const|class|interface|type|enum)\s+(\w+)/gm;
45
+ while ((match = exportRegex.exec(content)) !== null) {
46
+ const name = match[1];
47
+ if (name && !exports.includes(name)) {
48
+ exports.push(name);
49
+ }
50
+ }
51
+ // Extract classes
52
+ const classRegex = /(?:export\s+)?class\s+(\w+)(?:\s+extends\s+(\w+))?/gm;
53
+ while ((match = classRegex.exec(content)) !== null) {
54
+ const name = match[1];
55
+ symbols.push({
56
+ name,
57
+ type: 'class',
58
+ line: content.substring(0, match.index).split('\n').length,
59
+ signature: match[0].trim(),
60
+ });
61
+ }
62
+ // Extract interfaces
63
+ const interfaceRegex = /(?:export\s+)?interface\s+(\w+)/gm;
64
+ while ((match = interfaceRegex.exec(content)) !== null) {
65
+ const name = match[1];
66
+ symbols.push({
67
+ name,
68
+ type: 'interface',
69
+ line: content.substring(0, match.index).split('\n').length,
70
+ });
71
+ }
72
+ // Extract type definitions
73
+ const typeRegex = /(?:export\s+)?type\s+(\w+)\s*=/gm;
74
+ while ((match = typeRegex.exec(content)) !== null) {
75
+ const name = match[1];
76
+ symbols.push({
77
+ name,
78
+ type: 'type',
79
+ line: content.substring(0, match.index).split('\n').length,
80
+ });
81
+ }
82
+ // Extract functions
83
+ const functionRegex = /(?:export\s+)?(?:async\s+)?function\s+(\w+)\s*\(/gm;
84
+ while ((match = functionRegex.exec(content)) !== null) {
85
+ const name = match[1];
86
+ symbols.push({
87
+ name,
88
+ type: 'function',
89
+ line: content.substring(0, match.index).split('\n').length,
90
+ });
91
+ }
92
+ // Extract const declarations (functions)
93
+ const constFunctionRegex = /(?:export\s+)?const\s+(\w+)\s*=\s*(?:async\s*)?\(/gm;
94
+ while ((match = constFunctionRegex.exec(content)) !== null) {
95
+ const name = match[1];
96
+ if (!symbols.some(s => s.name === name)) {
97
+ symbols.push({
98
+ name,
99
+ type: 'function',
100
+ line: content.substring(0, match.index).split('\n').length,
101
+ });
102
+ }
103
+ }
104
+ return { imports, exports, symbols };
105
+ }
106
+ static parseJavaScript(content) {
107
+ // JavaScript parsing is similar to TypeScript
108
+ return this.parseTypeScript(content);
109
+ }
110
+ static parseRuby(content) {
111
+ const imports = [];
112
+ const exports = [];
113
+ const symbols = [];
114
+ // Extract requires/imports
115
+ const requireRegex = /^(require|require_relative)\s+['"]([^'"]+)['"]/gm;
116
+ let match;
117
+ while ((match = requireRegex.exec(content)) !== null) {
118
+ const modulePath = match[2];
119
+ if (modulePath && !imports.includes(modulePath)) {
120
+ imports.push(modulePath);
121
+ }
122
+ }
123
+ // Extract class definitions
124
+ const classRegex = /^class\s+(\w+)(?:\s*<\s*(\w+))?/gm;
125
+ while ((match = classRegex.exec(content)) !== null) {
126
+ const className = match[1];
127
+ symbols.push({
128
+ name: className,
129
+ type: 'class',
130
+ line: content.substring(0, match.index).split('\n').length,
131
+ });
132
+ if (!exports.includes(className)) {
133
+ exports.push(className);
134
+ }
135
+ }
136
+ // Extract module definitions
137
+ const moduleRegex = /^module\s+(\w+)/gm;
138
+ while ((match = moduleRegex.exec(content)) !== null) {
139
+ const moduleName = match[1];
140
+ symbols.push({
141
+ name: moduleName,
142
+ type: 'constant',
143
+ line: content.substring(0, match.index).split('\n').length,
144
+ });
145
+ }
146
+ // Extract method definitions
147
+ const methodRegex = /^\s+def\s+(\w+)/gm;
148
+ while ((match = methodRegex.exec(content)) !== null) {
149
+ const methodName = match[1];
150
+ symbols.push({
151
+ name: methodName,
152
+ type: 'method',
153
+ line: content.substring(0, match.index).split('\n').length,
154
+ });
155
+ }
156
+ // Extract constants (all caps)
157
+ const constantRegex = /^([A-Z_]+)\s*=/gm;
158
+ while ((match = constantRegex.exec(content)) !== null) {
159
+ const constantName = match[1];
160
+ if (constantName.length > 2 && !symbols.some(s => s.name === constantName)) {
161
+ symbols.push({
162
+ name: constantName,
163
+ type: 'constant',
164
+ line: content.substring(0, match.index).split('\n').length,
165
+ });
166
+ }
167
+ }
168
+ return { imports, exports, symbols };
169
+ }
170
+ static parseERB(content) {
171
+ const imports = [];
172
+ const exports = [];
173
+ const symbols = [];
174
+ // Extract component includes
175
+ const renderRegex = /<%=\s*render\s+['"]([^'"]+)['"]/g;
176
+ let match;
177
+ while ((match = renderRegex.exec(content)) !== null) {
178
+ const componentPath = match[1];
179
+ if (componentPath && !imports.includes(componentPath)) {
180
+ imports.push(componentPath);
181
+ }
182
+ }
183
+ // Extract embedded Ruby
184
+ const rubyCodeRegex = /<%[^=](.*?)%>/s;
185
+ if (rubyCodeRegex.test(content)) {
186
+ symbols.push({
187
+ name: 'embedded_ruby',
188
+ type: 'export',
189
+ line: 1,
190
+ });
191
+ }
192
+ return { imports, exports, symbols };
193
+ }
194
+ static parseJSON(content) {
195
+ try {
196
+ const obj = JSON.parse(content);
197
+ const exports = Object.keys(obj).slice(0, 10); // Top-level keys
198
+ return { imports: [], exports, symbols: [] };
199
+ }
200
+ catch {
201
+ return { imports: [], exports: [], symbols: [] };
202
+ }
203
+ }
204
+ static parseYAML(content) {
205
+ const exports = [];
206
+ // Simple YAML key extraction
207
+ const keyRegex = /^([a-zA-Z_]\w*)\s*:/gm;
208
+ let match;
209
+ const seen = new Set();
210
+ while ((match = keyRegex.exec(content)) !== null) {
211
+ const key = match[1];
212
+ if (!seen.has(key)) {
213
+ exports.push(key);
214
+ seen.add(key);
215
+ }
216
+ }
217
+ return { imports: [], exports: exports.slice(0, 20), symbols: [] };
218
+ }
219
+ }
220
+ exports.LanguageParser = LanguageParser;
221
+ //# sourceMappingURL=language-parsers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"language-parsers.js","sourceRoot":"","sources":["../src/language-parsers.ts"],"names":[],"mappings":"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"}