autogit-tool 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.
- package/LICENSE +21 -0
- package/README.md +42 -0
- package/dist/ai/prompts.d.ts +10 -0
- package/dist/ai/prompts.d.ts.map +1 -0
- package/dist/ai/prompts.js +169 -0
- package/dist/ai/prompts.js.map +1 -0
- package/dist/ai/provider.d.ts +24 -0
- package/dist/ai/provider.d.ts.map +1 -0
- package/dist/ai/provider.js +305 -0
- package/dist/ai/provider.js.map +1 -0
- package/dist/cli.d.ts +3 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +228 -0
- package/dist/cli.js.map +1 -0
- package/dist/commands/analyze.d.ts +4 -0
- package/dist/commands/analyze.d.ts.map +1 -0
- package/dist/commands/analyze.js +63 -0
- package/dist/commands/analyze.js.map +1 -0
- package/dist/commands/config.d.ts +8 -0
- package/dist/commands/config.d.ts.map +1 -0
- package/dist/commands/config.js +457 -0
- package/dist/commands/config.js.map +1 -0
- package/dist/commands/docs.d.ts +5 -0
- package/dist/commands/docs.d.ts.map +1 -0
- package/dist/commands/docs.js +22 -0
- package/dist/commands/docs.js.map +1 -0
- package/dist/commands/doctor.d.ts +2 -0
- package/dist/commands/doctor.d.ts.map +1 -0
- package/dist/commands/doctor.js +69 -0
- package/dist/commands/doctor.js.map +1 -0
- package/dist/commands/github.d.ts +5 -0
- package/dist/commands/github.d.ts.map +1 -0
- package/dist/commands/github.js +46 -0
- package/dist/commands/github.js.map +1 -0
- package/dist/commands/init.d.ts +2 -0
- package/dist/commands/init.d.ts.map +1 -0
- package/dist/commands/init.js +38 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/commands/linkedin.d.ts +4 -0
- package/dist/commands/linkedin.d.ts.map +1 -0
- package/dist/commands/linkedin.js +42 -0
- package/dist/commands/linkedin.js.map +1 -0
- package/dist/commands/login.d.ts +2 -0
- package/dist/commands/login.d.ts.map +1 -0
- package/dist/commands/login.js +301 -0
- package/dist/commands/login.js.map +1 -0
- package/dist/commands/publish.d.ts +5 -0
- package/dist/commands/publish.d.ts.map +1 -0
- package/dist/commands/publish.js +58 -0
- package/dist/commands/publish.js.map +1 -0
- package/dist/commands/readme.d.ts +5 -0
- package/dist/commands/readme.d.ts.map +1 -0
- package/dist/commands/readme.js +32 -0
- package/dist/commands/readme.js.map +1 -0
- package/dist/commands/release.d.ts +5 -0
- package/dist/commands/release.d.ts.map +1 -0
- package/dist/commands/release.js +56 -0
- package/dist/commands/release.js.map +1 -0
- package/dist/commands/resume.d.ts +8 -0
- package/dist/commands/resume.d.ts.map +1 -0
- package/dist/commands/resume.js +228 -0
- package/dist/commands/resume.js.map +1 -0
- package/dist/config/manager.d.ts +67 -0
- package/dist/config/manager.d.ts.map +1 -0
- package/dist/config/manager.js +78 -0
- package/dist/config/manager.js.map +1 -0
- package/dist/index.d.ts +6 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +6 -0
- package/dist/index.js.map +1 -0
- package/dist/pipeline/main-pipeline.d.ts +15 -0
- package/dist/pipeline/main-pipeline.d.ts.map +1 -0
- package/dist/pipeline/main-pipeline.js +279 -0
- package/dist/pipeline/main-pipeline.js.map +1 -0
- package/dist/scanner/file-scanner.d.ts +21 -0
- package/dist/scanner/file-scanner.d.ts.map +1 -0
- package/dist/scanner/file-scanner.js +90 -0
- package/dist/scanner/file-scanner.js.map +1 -0
- package/dist/scanner/project-analyzer.d.ts +26 -0
- package/dist/scanner/project-analyzer.d.ts.map +1 -0
- package/dist/scanner/project-analyzer.js +454 -0
- package/dist/scanner/project-analyzer.js.map +1 -0
- package/dist/services/docs-generator.d.ts +11 -0
- package/dist/services/docs-generator.d.ts.map +1 -0
- package/dist/services/docs-generator.js +172 -0
- package/dist/services/docs-generator.js.map +1 -0
- package/dist/services/git-service.d.ts +22 -0
- package/dist/services/git-service.d.ts.map +1 -0
- package/dist/services/git-service.js +162 -0
- package/dist/services/git-service.js.map +1 -0
- package/dist/services/github-service.d.ts +44 -0
- package/dist/services/github-service.d.ts.map +1 -0
- package/dist/services/github-service.js +131 -0
- package/dist/services/github-service.js.map +1 -0
- package/dist/services/insights.d.ts +24 -0
- package/dist/services/insights.d.ts.map +1 -0
- package/dist/services/insights.js +140 -0
- package/dist/services/insights.js.map +1 -0
- package/dist/services/readme-manager.d.ts +11 -0
- package/dist/services/readme-manager.d.ts.map +1 -0
- package/dist/services/readme-manager.js +180 -0
- package/dist/services/readme-manager.js.map +1 -0
- package/dist/services/resume-manager.d.ts +29 -0
- package/dist/services/resume-manager.d.ts.map +1 -0
- package/dist/services/resume-manager.js +186 -0
- package/dist/services/resume-manager.js.map +1 -0
- package/dist/services/social-generator.d.ts +14 -0
- package/dist/services/social-generator.d.ts.map +1 -0
- package/dist/services/social-generator.js +93 -0
- package/dist/services/social-generator.js.map +1 -0
- package/dist/utils/logger.d.ts +19 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +81 -0
- package/dist/utils/logger.js.map +1 -0
- package/dist/utils/platform.d.ts +8 -0
- package/dist/utils/platform.d.ts.map +1 -0
- package/dist/utils/platform.js +27 -0
- package/dist/utils/platform.js.map +1 -0
- package/package.json +74 -0
|
@@ -0,0 +1,454 @@
|
|
|
1
|
+
import { existsSync, readFileSync } from 'fs';
|
|
2
|
+
import { join, basename } from 'path';
|
|
3
|
+
import { readFileContent, findFile } from './file-scanner.js';
|
|
4
|
+
export function analyzeProject(rootDir, scan) {
|
|
5
|
+
const analysis = {
|
|
6
|
+
name: basename(rootDir),
|
|
7
|
+
languages: [],
|
|
8
|
+
frameworks: [],
|
|
9
|
+
libraries: [],
|
|
10
|
+
packageManager: null,
|
|
11
|
+
buildSystem: null,
|
|
12
|
+
testFramework: null,
|
|
13
|
+
entryPoints: [],
|
|
14
|
+
features: [],
|
|
15
|
+
architecture: 'unknown',
|
|
16
|
+
database: [],
|
|
17
|
+
apis: [],
|
|
18
|
+
envVars: [],
|
|
19
|
+
deployment: [],
|
|
20
|
+
license: null,
|
|
21
|
+
cicd: [],
|
|
22
|
+
hasGit: existsSync(join(rootDir, '.git')),
|
|
23
|
+
hasReadme: false,
|
|
24
|
+
readmePath: null,
|
|
25
|
+
description: null,
|
|
26
|
+
version: null,
|
|
27
|
+
};
|
|
28
|
+
// Detect README
|
|
29
|
+
const readmeFile = scan.files.find(f => /^readme(\.(md|txt|rst))?$/i.test(f.name));
|
|
30
|
+
if (readmeFile) {
|
|
31
|
+
analysis.hasReadme = true;
|
|
32
|
+
analysis.readmePath = readmeFile.path;
|
|
33
|
+
}
|
|
34
|
+
// Detect languages
|
|
35
|
+
detectLanguages(scan, analysis);
|
|
36
|
+
// Detect package managers and frameworks
|
|
37
|
+
detectNodeProject(rootDir, scan, analysis);
|
|
38
|
+
detectPythonProject(rootDir, scan, analysis);
|
|
39
|
+
detectRustProject(rootDir, scan, analysis);
|
|
40
|
+
detectGoProject(rootDir, scan, analysis);
|
|
41
|
+
detectJavaProject(rootDir, scan, analysis);
|
|
42
|
+
detectDotNetProject(rootDir, scan, analysis);
|
|
43
|
+
// Detect CI/CD
|
|
44
|
+
detectCICD(rootDir, scan, analysis);
|
|
45
|
+
// Detect deployment
|
|
46
|
+
detectDeployment(rootDir, scan, analysis);
|
|
47
|
+
// Detect databases
|
|
48
|
+
detectDatabases(rootDir, scan, analysis);
|
|
49
|
+
// Detect APIs
|
|
50
|
+
detectAPIs(scan, analysis);
|
|
51
|
+
// Detect environment variables
|
|
52
|
+
detectEnvVars(rootDir, scan, analysis);
|
|
53
|
+
// Detect license
|
|
54
|
+
detectLicense(rootDir, scan, analysis);
|
|
55
|
+
// Detect architecture
|
|
56
|
+
detectArchitecture(scan, analysis);
|
|
57
|
+
// Detect test framework
|
|
58
|
+
detectTestFramework(rootDir, scan, analysis);
|
|
59
|
+
return analysis;
|
|
60
|
+
}
|
|
61
|
+
function detectLanguages(scan, analysis) {
|
|
62
|
+
const extMap = {
|
|
63
|
+
'.ts': 'TypeScript', '.tsx': 'TypeScript',
|
|
64
|
+
'.js': 'JavaScript', '.jsx': 'JavaScript', '.mjs': 'JavaScript',
|
|
65
|
+
'.py': 'Python',
|
|
66
|
+
'.rs': 'Rust',
|
|
67
|
+
'.go': 'Go',
|
|
68
|
+
'.java': 'Java', '.kt': 'Kotlin',
|
|
69
|
+
'.cs': 'C#',
|
|
70
|
+
'.rb': 'Ruby',
|
|
71
|
+
'.php': 'PHP',
|
|
72
|
+
'.swift': 'Swift',
|
|
73
|
+
'.c': 'C', '.h': 'C',
|
|
74
|
+
'.cpp': 'C++', '.hpp': 'C++', '.cc': 'C++',
|
|
75
|
+
'.dart': 'Dart',
|
|
76
|
+
'.ex': 'Elixir', '.exs': 'Elixir',
|
|
77
|
+
'.scala': 'Scala',
|
|
78
|
+
'.vue': 'Vue',
|
|
79
|
+
'.svelte': 'Svelte',
|
|
80
|
+
};
|
|
81
|
+
const langCounts = new Map();
|
|
82
|
+
for (const file of scan.files) {
|
|
83
|
+
const lang = extMap[file.extension];
|
|
84
|
+
if (lang) {
|
|
85
|
+
langCounts.set(lang, (langCounts.get(lang) || 0) + 1);
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
analysis.languages = [...langCounts.entries()]
|
|
89
|
+
.sort((a, b) => b[1] - a[1])
|
|
90
|
+
.map(([lang]) => lang);
|
|
91
|
+
}
|
|
92
|
+
function detectNodeProject(rootDir, scan, analysis) {
|
|
93
|
+
const pkgPath = join(rootDir, 'package.json');
|
|
94
|
+
if (!existsSync(pkgPath))
|
|
95
|
+
return;
|
|
96
|
+
try {
|
|
97
|
+
const pkg = JSON.parse(readFileSync(pkgPath, 'utf-8'));
|
|
98
|
+
analysis.name = pkg.name || analysis.name;
|
|
99
|
+
analysis.description = pkg.description || null;
|
|
100
|
+
analysis.version = pkg.version || null;
|
|
101
|
+
const allDeps = {
|
|
102
|
+
...pkg.dependencies,
|
|
103
|
+
...pkg.devDependencies,
|
|
104
|
+
};
|
|
105
|
+
// Package manager
|
|
106
|
+
if (existsSync(join(rootDir, 'pnpm-lock.yaml'))) {
|
|
107
|
+
analysis.packageManager = 'pnpm';
|
|
108
|
+
}
|
|
109
|
+
else if (existsSync(join(rootDir, 'yarn.lock'))) {
|
|
110
|
+
analysis.packageManager = 'yarn';
|
|
111
|
+
}
|
|
112
|
+
else if (existsSync(join(rootDir, 'bun.lockb'))) {
|
|
113
|
+
analysis.packageManager = 'bun';
|
|
114
|
+
}
|
|
115
|
+
else {
|
|
116
|
+
analysis.packageManager = 'npm';
|
|
117
|
+
}
|
|
118
|
+
// Frameworks
|
|
119
|
+
const frameworkMap = {
|
|
120
|
+
'react': 'React', 'next': 'Next.js', 'nuxt': 'Nuxt',
|
|
121
|
+
'vue': 'Vue', 'angular': 'Angular', 'svelte': 'Svelte',
|
|
122
|
+
'express': 'Express', 'fastify': 'Fastify', 'koa': 'Koa',
|
|
123
|
+
'nestjs': 'NestJS', '@nestjs/core': 'NestJS',
|
|
124
|
+
'gatsby': 'Gatsby', 'remix': 'Remix', 'astro': 'Astro',
|
|
125
|
+
'electron': 'Electron', 'react-native': 'React Native',
|
|
126
|
+
'hono': 'Hono', 'elysia': 'Elysia',
|
|
127
|
+
};
|
|
128
|
+
for (const [dep, framework] of Object.entries(frameworkMap)) {
|
|
129
|
+
if (allDeps[dep]) {
|
|
130
|
+
analysis.frameworks.push(framework);
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
// Libraries
|
|
134
|
+
const importantLibs = [
|
|
135
|
+
'tailwindcss', 'prisma', 'drizzle-orm', 'typeorm', 'sequelize',
|
|
136
|
+
'mongoose', 'redis', 'socket.io', 'graphql', 'trpc',
|
|
137
|
+
'zod', 'joi', 'yup', 'axios', 'jest', 'vitest', 'mocha',
|
|
138
|
+
'cypress', 'playwright', 'storybook', 'webpack', 'vite',
|
|
139
|
+
'esbuild', 'turbo', 'lerna', 'docker', 'kubernetes',
|
|
140
|
+
];
|
|
141
|
+
for (const lib of importantLibs) {
|
|
142
|
+
if (allDeps[lib] || allDeps[`@${lib}`]) {
|
|
143
|
+
analysis.libraries.push(lib);
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
// Build system
|
|
147
|
+
if (allDeps['vite'])
|
|
148
|
+
analysis.buildSystem = 'Vite';
|
|
149
|
+
else if (allDeps['webpack'])
|
|
150
|
+
analysis.buildSystem = 'Webpack';
|
|
151
|
+
else if (allDeps['esbuild'])
|
|
152
|
+
analysis.buildSystem = 'esbuild';
|
|
153
|
+
else if (allDeps['turbo'] || existsSync(join(rootDir, 'turbo.json')))
|
|
154
|
+
analysis.buildSystem = 'Turborepo';
|
|
155
|
+
else if (pkg.scripts?.build)
|
|
156
|
+
analysis.buildSystem = 'npm scripts';
|
|
157
|
+
// Entry points
|
|
158
|
+
if (pkg.main)
|
|
159
|
+
analysis.entryPoints.push(pkg.main);
|
|
160
|
+
if (pkg.module)
|
|
161
|
+
analysis.entryPoints.push(pkg.module);
|
|
162
|
+
}
|
|
163
|
+
catch {
|
|
164
|
+
// Invalid package.json
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
function detectPythonProject(rootDir, scan, analysis) {
|
|
168
|
+
const hasPyproject = existsSync(join(rootDir, 'pyproject.toml'));
|
|
169
|
+
const hasSetupPy = existsSync(join(rootDir, 'setup.py'));
|
|
170
|
+
const hasRequirements = existsSync(join(rootDir, 'requirements.txt'));
|
|
171
|
+
const hasPipfile = existsSync(join(rootDir, 'Pipfile'));
|
|
172
|
+
const hasPoetry = existsSync(join(rootDir, 'poetry.lock'));
|
|
173
|
+
if (!hasPyproject && !hasSetupPy && !hasRequirements && !hasPipfile)
|
|
174
|
+
return;
|
|
175
|
+
if (hasPoetry)
|
|
176
|
+
analysis.packageManager = 'poetry';
|
|
177
|
+
else if (hasPipfile)
|
|
178
|
+
analysis.packageManager = 'pipenv';
|
|
179
|
+
else if (hasPyproject)
|
|
180
|
+
analysis.packageManager = 'pip (pyproject.toml)';
|
|
181
|
+
else
|
|
182
|
+
analysis.packageManager = 'pip';
|
|
183
|
+
// Read requirements to detect frameworks
|
|
184
|
+
let deps = '';
|
|
185
|
+
if (hasRequirements) {
|
|
186
|
+
deps = readFileContent(join(rootDir, 'requirements.txt')) || '';
|
|
187
|
+
}
|
|
188
|
+
const pyFrameworks = {
|
|
189
|
+
'django': 'Django', 'flask': 'Flask', 'fastapi': 'FastAPI',
|
|
190
|
+
'streamlit': 'Streamlit', 'pytorch': 'PyTorch', 'tensorflow': 'TensorFlow',
|
|
191
|
+
'pandas': 'Pandas', 'numpy': 'NumPy', 'scipy': 'SciPy',
|
|
192
|
+
'celery': 'Celery', 'scrapy': 'Scrapy',
|
|
193
|
+
};
|
|
194
|
+
for (const [dep, framework] of Object.entries(pyFrameworks)) {
|
|
195
|
+
if (deps.toLowerCase().includes(dep)) {
|
|
196
|
+
analysis.frameworks.push(framework);
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
// Check for manage.py (Django)
|
|
200
|
+
if (findFile(scan, 'manage.py')) {
|
|
201
|
+
if (!analysis.frameworks.includes('Django')) {
|
|
202
|
+
analysis.frameworks.push('Django');
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
function detectRustProject(rootDir, scan, analysis) {
|
|
207
|
+
const cargoPath = join(rootDir, 'Cargo.toml');
|
|
208
|
+
if (!existsSync(cargoPath))
|
|
209
|
+
return;
|
|
210
|
+
analysis.packageManager = 'cargo';
|
|
211
|
+
analysis.buildSystem = 'Cargo';
|
|
212
|
+
const content = readFileContent(cargoPath) || '';
|
|
213
|
+
if (content.includes('actix'))
|
|
214
|
+
analysis.frameworks.push('Actix');
|
|
215
|
+
if (content.includes('axum'))
|
|
216
|
+
analysis.frameworks.push('Axum');
|
|
217
|
+
if (content.includes('rocket'))
|
|
218
|
+
analysis.frameworks.push('Rocket');
|
|
219
|
+
if (content.includes('tokio'))
|
|
220
|
+
analysis.libraries.push('Tokio');
|
|
221
|
+
if (content.includes('serde'))
|
|
222
|
+
analysis.libraries.push('Serde');
|
|
223
|
+
const nameMatch = content.match(/name\s*=\s*"([^"]+)"/);
|
|
224
|
+
if (nameMatch)
|
|
225
|
+
analysis.name = nameMatch[1];
|
|
226
|
+
const versionMatch = content.match(/version\s*=\s*"([^"]+)"/);
|
|
227
|
+
if (versionMatch)
|
|
228
|
+
analysis.version = versionMatch[1];
|
|
229
|
+
}
|
|
230
|
+
function detectGoProject(rootDir, scan, analysis) {
|
|
231
|
+
const goModPath = join(rootDir, 'go.mod');
|
|
232
|
+
if (!existsSync(goModPath))
|
|
233
|
+
return;
|
|
234
|
+
analysis.packageManager = 'go modules';
|
|
235
|
+
analysis.buildSystem = 'go build';
|
|
236
|
+
const content = readFileContent(goModPath) || '';
|
|
237
|
+
if (content.includes('gin-gonic'))
|
|
238
|
+
analysis.frameworks.push('Gin');
|
|
239
|
+
if (content.includes('echo'))
|
|
240
|
+
analysis.frameworks.push('Echo');
|
|
241
|
+
if (content.includes('fiber'))
|
|
242
|
+
analysis.frameworks.push('Fiber');
|
|
243
|
+
if (content.includes('gorm'))
|
|
244
|
+
analysis.libraries.push('GORM');
|
|
245
|
+
}
|
|
246
|
+
function detectJavaProject(rootDir, scan, analysis) {
|
|
247
|
+
if (existsSync(join(rootDir, 'pom.xml'))) {
|
|
248
|
+
analysis.packageManager = 'Maven';
|
|
249
|
+
analysis.buildSystem = 'Maven';
|
|
250
|
+
const content = readFileContent(join(rootDir, 'pom.xml')) || '';
|
|
251
|
+
if (content.includes('spring-boot'))
|
|
252
|
+
analysis.frameworks.push('Spring Boot');
|
|
253
|
+
if (content.includes('quarkus'))
|
|
254
|
+
analysis.frameworks.push('Quarkus');
|
|
255
|
+
}
|
|
256
|
+
else if (existsSync(join(rootDir, 'build.gradle')) || existsSync(join(rootDir, 'build.gradle.kts'))) {
|
|
257
|
+
analysis.packageManager = 'Gradle';
|
|
258
|
+
analysis.buildSystem = 'Gradle';
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
function detectDotNetProject(rootDir, scan, analysis) {
|
|
262
|
+
const csprojFiles = scan.files.filter(f => f.extension === '.csproj');
|
|
263
|
+
if (csprojFiles.length === 0)
|
|
264
|
+
return;
|
|
265
|
+
analysis.packageManager = 'NuGet';
|
|
266
|
+
analysis.buildSystem = 'dotnet';
|
|
267
|
+
for (const file of csprojFiles) {
|
|
268
|
+
const content = readFileContent(file.path) || '';
|
|
269
|
+
if (content.includes('Microsoft.AspNetCore'))
|
|
270
|
+
analysis.frameworks.push('ASP.NET Core');
|
|
271
|
+
if (content.includes('Blazor'))
|
|
272
|
+
analysis.frameworks.push('Blazor');
|
|
273
|
+
}
|
|
274
|
+
}
|
|
275
|
+
function detectCICD(rootDir, scan, analysis) {
|
|
276
|
+
if (existsSync(join(rootDir, '.github', 'workflows')))
|
|
277
|
+
analysis.cicd.push('GitHub Actions');
|
|
278
|
+
if (existsSync(join(rootDir, '.gitlab-ci.yml')))
|
|
279
|
+
analysis.cicd.push('GitLab CI');
|
|
280
|
+
if (existsSync(join(rootDir, 'Jenkinsfile')))
|
|
281
|
+
analysis.cicd.push('Jenkins');
|
|
282
|
+
if (existsSync(join(rootDir, '.circleci')))
|
|
283
|
+
analysis.cicd.push('CircleCI');
|
|
284
|
+
if (existsSync(join(rootDir, '.travis.yml')))
|
|
285
|
+
analysis.cicd.push('Travis CI');
|
|
286
|
+
if (existsSync(join(rootDir, 'azure-pipelines.yml')))
|
|
287
|
+
analysis.cicd.push('Azure Pipelines');
|
|
288
|
+
if (existsSync(join(rootDir, 'bitbucket-pipelines.yml')))
|
|
289
|
+
analysis.cicd.push('Bitbucket Pipelines');
|
|
290
|
+
}
|
|
291
|
+
function detectDeployment(rootDir, scan, analysis) {
|
|
292
|
+
if (existsSync(join(rootDir, 'Dockerfile')) || existsSync(join(rootDir, 'docker-compose.yml'))) {
|
|
293
|
+
analysis.deployment.push('Docker');
|
|
294
|
+
}
|
|
295
|
+
if (existsSync(join(rootDir, 'vercel.json')) || existsSync(join(rootDir, '.vercel'))) {
|
|
296
|
+
analysis.deployment.push('Vercel');
|
|
297
|
+
}
|
|
298
|
+
if (existsSync(join(rootDir, 'netlify.toml')))
|
|
299
|
+
analysis.deployment.push('Netlify');
|
|
300
|
+
if (existsSync(join(rootDir, 'fly.toml')))
|
|
301
|
+
analysis.deployment.push('Fly.io');
|
|
302
|
+
if (existsSync(join(rootDir, 'render.yaml')))
|
|
303
|
+
analysis.deployment.push('Render');
|
|
304
|
+
if (existsSync(join(rootDir, 'Procfile')))
|
|
305
|
+
analysis.deployment.push('Heroku');
|
|
306
|
+
if (scan.files.some(f => f.name.includes('terraform')))
|
|
307
|
+
analysis.deployment.push('Terraform');
|
|
308
|
+
if (existsSync(join(rootDir, 'serverless.yml')))
|
|
309
|
+
analysis.deployment.push('Serverless Framework');
|
|
310
|
+
if (existsSync(join(rootDir, 'sam.yaml')) || existsSync(join(rootDir, 'template.yaml'))) {
|
|
311
|
+
analysis.deployment.push('AWS SAM');
|
|
312
|
+
}
|
|
313
|
+
}
|
|
314
|
+
function detectDatabases(rootDir, scan, analysis) {
|
|
315
|
+
const allContent = scan.files
|
|
316
|
+
.filter(f => ['.json', '.toml', '.yaml', '.yml', '.env', '.ts', '.js', '.py'].includes(f.extension))
|
|
317
|
+
.slice(0, 30)
|
|
318
|
+
.map(f => readFileContent(f.path, 10000) || '')
|
|
319
|
+
.join('\n')
|
|
320
|
+
.toLowerCase();
|
|
321
|
+
if (allContent.includes('postgres') || allContent.includes('pg_'))
|
|
322
|
+
analysis.database.push('PostgreSQL');
|
|
323
|
+
if (allContent.includes('mysql') || allContent.includes('mariadb'))
|
|
324
|
+
analysis.database.push('MySQL');
|
|
325
|
+
if (allContent.includes('mongodb') || allContent.includes('mongoose'))
|
|
326
|
+
analysis.database.push('MongoDB');
|
|
327
|
+
if (allContent.includes('redis'))
|
|
328
|
+
analysis.database.push('Redis');
|
|
329
|
+
if (allContent.includes('sqlite'))
|
|
330
|
+
analysis.database.push('SQLite');
|
|
331
|
+
if (allContent.includes('dynamodb'))
|
|
332
|
+
analysis.database.push('DynamoDB');
|
|
333
|
+
if (allContent.includes('supabase'))
|
|
334
|
+
analysis.database.push('Supabase');
|
|
335
|
+
if (allContent.includes('firebase') || allContent.includes('firestore'))
|
|
336
|
+
analysis.database.push('Firebase');
|
|
337
|
+
}
|
|
338
|
+
function detectAPIs(scan, analysis) {
|
|
339
|
+
const routePatterns = [
|
|
340
|
+
/app\.(get|post|put|delete|patch)\s*\(/,
|
|
341
|
+
/router\.(get|post|put|delete|patch)\s*\(/,
|
|
342
|
+
/@(Get|Post|Put|Delete|Patch)\(/,
|
|
343
|
+
/path\s*\(\s*["']/,
|
|
344
|
+
];
|
|
345
|
+
const apiFiles = scan.files.filter(f => f.relativePath.includes('route') ||
|
|
346
|
+
f.relativePath.includes('api') ||
|
|
347
|
+
f.relativePath.includes('controller') ||
|
|
348
|
+
f.relativePath.includes('endpoint'));
|
|
349
|
+
for (const file of apiFiles.slice(0, 20)) {
|
|
350
|
+
const content = readFileContent(file.path, 50000);
|
|
351
|
+
if (!content)
|
|
352
|
+
continue;
|
|
353
|
+
for (const pattern of routePatterns) {
|
|
354
|
+
const matches = content.match(new RegExp(pattern, 'g'));
|
|
355
|
+
if (matches) {
|
|
356
|
+
analysis.apis.push(file.relativePath);
|
|
357
|
+
break;
|
|
358
|
+
}
|
|
359
|
+
}
|
|
360
|
+
}
|
|
361
|
+
if (scan.files.some(f => f.name === 'openapi.yaml' || f.name === 'swagger.json')) {
|
|
362
|
+
analysis.features.push('OpenAPI/Swagger');
|
|
363
|
+
}
|
|
364
|
+
if (scan.files.some(f => f.extension === '.graphql' || f.name.includes('schema.graphql'))) {
|
|
365
|
+
analysis.features.push('GraphQL');
|
|
366
|
+
}
|
|
367
|
+
}
|
|
368
|
+
function detectEnvVars(rootDir, scan, analysis) {
|
|
369
|
+
const envFiles = ['.env.example', '.env.sample', '.env.template', '.env.local'];
|
|
370
|
+
for (const envFile of envFiles) {
|
|
371
|
+
const envPath = join(rootDir, envFile);
|
|
372
|
+
const content = readFileContent(envPath);
|
|
373
|
+
if (content) {
|
|
374
|
+
const vars = content.split('\n')
|
|
375
|
+
.filter(line => line.includes('=') && !line.startsWith('#'))
|
|
376
|
+
.map(line => line.split('=')[0].trim())
|
|
377
|
+
.filter(v => v.length > 0);
|
|
378
|
+
analysis.envVars.push(...vars);
|
|
379
|
+
}
|
|
380
|
+
}
|
|
381
|
+
// Also check .env if it exists (just get keys, not values)
|
|
382
|
+
const envContent = readFileContent(join(rootDir, '.env'));
|
|
383
|
+
if (envContent && analysis.envVars.length === 0) {
|
|
384
|
+
const vars = envContent.split('\n')
|
|
385
|
+
.filter(line => line.includes('=') && !line.startsWith('#'))
|
|
386
|
+
.map(line => line.split('=')[0].trim())
|
|
387
|
+
.filter(v => v.length > 0);
|
|
388
|
+
analysis.envVars.push(...vars);
|
|
389
|
+
}
|
|
390
|
+
// Deduplicate
|
|
391
|
+
analysis.envVars = [...new Set(analysis.envVars)];
|
|
392
|
+
}
|
|
393
|
+
function detectLicense(rootDir, scan, analysis) {
|
|
394
|
+
const licenseFile = scan.files.find(f => /^license(\.md|\.txt)?$/i.test(f.name));
|
|
395
|
+
if (licenseFile) {
|
|
396
|
+
const content = readFileContent(licenseFile.path, 5000) || '';
|
|
397
|
+
if (content.includes('MIT'))
|
|
398
|
+
analysis.license = 'MIT';
|
|
399
|
+
else if (content.includes('Apache'))
|
|
400
|
+
analysis.license = 'Apache-2.0';
|
|
401
|
+
else if (content.includes('GNU GENERAL PUBLIC'))
|
|
402
|
+
analysis.license = 'GPL-3.0';
|
|
403
|
+
else if (content.includes('BSD'))
|
|
404
|
+
analysis.license = 'BSD';
|
|
405
|
+
else if (content.includes('ISC'))
|
|
406
|
+
analysis.license = 'ISC';
|
|
407
|
+
else
|
|
408
|
+
analysis.license = 'Other';
|
|
409
|
+
}
|
|
410
|
+
}
|
|
411
|
+
function detectArchitecture(scan, analysis) {
|
|
412
|
+
const dirs = scan.directories.map(d => d.toLowerCase());
|
|
413
|
+
if (dirs.some(d => d.includes('microservice'))) {
|
|
414
|
+
analysis.architecture = 'Microservices';
|
|
415
|
+
}
|
|
416
|
+
else if (dirs.some(d => d.includes('packages/') || d.includes('apps/'))) {
|
|
417
|
+
analysis.architecture = 'Monorepo';
|
|
418
|
+
}
|
|
419
|
+
else if (dirs.some(d => d.includes('src/components')) && dirs.some(d => d.includes('src/pages') || d.includes('src/app'))) {
|
|
420
|
+
analysis.architecture = 'Component-based SPA';
|
|
421
|
+
}
|
|
422
|
+
else if (dirs.some(d => d.includes('controllers')) && dirs.some(d => d.includes('models'))) {
|
|
423
|
+
analysis.architecture = 'MVC';
|
|
424
|
+
}
|
|
425
|
+
else if (dirs.some(d => d.includes('domain')) && dirs.some(d => d.includes('application'))) {
|
|
426
|
+
analysis.architecture = 'Clean Architecture';
|
|
427
|
+
}
|
|
428
|
+
else if (analysis.frameworks.length > 0) {
|
|
429
|
+
analysis.architecture = 'Framework-based';
|
|
430
|
+
}
|
|
431
|
+
else {
|
|
432
|
+
analysis.architecture = 'Single module';
|
|
433
|
+
}
|
|
434
|
+
}
|
|
435
|
+
function detectTestFramework(rootDir, scan, analysis) {
|
|
436
|
+
const testDirs = scan.directories.filter(d => d.includes('test') || d.includes('spec') || d.includes('__tests__'));
|
|
437
|
+
const testFiles = scan.files.filter(f => f.name.includes('.test.') || f.name.includes('.spec.') || f.name.includes('_test.'));
|
|
438
|
+
if (analysis.libraries.includes('jest') || findFile(scan, 'jest.config.ts') || findFile(scan, 'jest.config.js')) {
|
|
439
|
+
analysis.testFramework = 'Jest';
|
|
440
|
+
}
|
|
441
|
+
else if (analysis.libraries.includes('vitest') || findFile(scan, 'vitest.config.ts')) {
|
|
442
|
+
analysis.testFramework = 'Vitest';
|
|
443
|
+
}
|
|
444
|
+
else if (analysis.libraries.includes('mocha')) {
|
|
445
|
+
analysis.testFramework = 'Mocha';
|
|
446
|
+
}
|
|
447
|
+
else if (findFile(scan, 'pytest.ini') || findFile(scan, 'conftest.py')) {
|
|
448
|
+
analysis.testFramework = 'Pytest';
|
|
449
|
+
}
|
|
450
|
+
else if (testFiles.length > 0) {
|
|
451
|
+
analysis.testFramework = 'Unknown';
|
|
452
|
+
}
|
|
453
|
+
}
|
|
454
|
+
//# sourceMappingURL=project-analyzer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"project-analyzer.js","sourceRoot":"","sources":["../../src/scanner/project-analyzer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { ProjectAnalysis } from '../scanner/project-analyzer.js';
|
|
2
|
+
import type { ScanResult } from '../scanner/file-scanner.js';
|
|
3
|
+
export interface DocFile {
|
|
4
|
+
name: string;
|
|
5
|
+
path: string;
|
|
6
|
+
content: string;
|
|
7
|
+
exists: boolean;
|
|
8
|
+
}
|
|
9
|
+
export declare function generateDocs(rootDir: string, analysis: ProjectAnalysis, scan: ScanResult, useAI: boolean, regenerate?: boolean): Promise<DocFile[]>;
|
|
10
|
+
export declare function writeDocs(docs: DocFile[]): void;
|
|
11
|
+
//# sourceMappingURL=docs-generator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"docs-generator.d.ts","sourceRoot":"","sources":["../../src/services/docs-generator.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AACtE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAK7D,MAAM,WAAW,OAAO;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,OAAO,CAAC;CACjB;AAED,wBAAsB,YAAY,CAChC,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,eAAe,EACzB,IAAI,EAAE,UAAU,EAChB,KAAK,EAAE,OAAO,EACd,UAAU,UAAQ,GACjB,OAAO,CAAC,OAAO,EAAE,CAAC,CAkCpB;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI,CAI/C"}
|