@manojkmfsi/monodog 1.1.6 → 1.1.8
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/.turbo/turbo-build.log +1 -1
- package/CHANGELOG.md +12 -0
- package/package.json +1 -1
- package/src/config/swagger-config.ts +0 -344
- package/src/config-loader.ts +0 -97
- package/src/constants/index.ts +0 -13
- package/src/constants/middleware.ts +0 -83
- package/src/constants/port.ts +0 -20
- package/src/constants/security.ts +0 -78
- package/src/controllers/commit-controller.ts +0 -31
- package/src/controllers/config-controller.ts +0 -42
- package/src/controllers/health-controller.ts +0 -24
- package/src/controllers/package-controller.ts +0 -67
- package/src/get-db-url.ts +0 -9
- package/src/index.ts +0 -9
- package/src/middleware/dashboard-startup.ts +0 -161
- package/src/middleware/error-handler.ts +0 -50
- package/src/middleware/index.ts +0 -20
- package/src/middleware/logger.ts +0 -65
- package/src/middleware/security.ts +0 -90
- package/src/middleware/server-startup.ts +0 -153
- package/src/middleware/swagger-middleware.ts +0 -58
- package/src/repositories/commit-repository.ts +0 -108
- package/src/repositories/dependency-repository.ts +0 -110
- package/src/repositories/index.ts +0 -10
- package/src/repositories/package-health-repository.ts +0 -75
- package/src/repositories/package-repository.ts +0 -142
- package/src/repositories/prisma-client.ts +0 -25
- package/src/routes/commit-routes.ts +0 -10
- package/src/routes/config-routes.ts +0 -14
- package/src/routes/health-routes.ts +0 -14
- package/src/routes/package-routes.ts +0 -22
- package/src/serve.ts +0 -41
- package/src/services/commit-service.ts +0 -44
- package/src/services/config-service.ts +0 -391
- package/src/services/git-service.ts +0 -140
- package/src/services/health-service.ts +0 -162
- package/src/services/package-service.ts +0 -228
- package/src/setup.ts +0 -78
- package/src/types/ci.ts +0 -122
- package/src/types/config.ts +0 -22
- package/src/types/database.ts +0 -67
- package/src/types/git.ts +0 -33
- package/src/types/health.ts +0 -11
- package/src/types/index.ts +0 -23
- package/src/types/package.ts +0 -39
- package/src/types/scanner.ts +0 -31
- package/src/types/swagger-jsdoc.d.ts +0 -15
- package/src/utils/ci-status.ts +0 -535
- package/src/utils/db-utils.ts +0 -92
- package/src/utils/health-utils.ts +0 -67
- package/src/utils/monorepo-scanner.ts +0 -576
- package/src/utils/utilities.ts +0 -427
|
@@ -1,228 +0,0 @@
|
|
|
1
|
-
import { scanMonorepo } from '../utils/utilities';
|
|
2
|
-
import { generateReports } from '../utils/monorepo-scanner';
|
|
3
|
-
import { ciStatusManager } from '../utils/ci-status';
|
|
4
|
-
import { AppLogger } from '../middleware/logger';
|
|
5
|
-
import { PackageRepository, CommitRepository, DependencyRepository } from '../repositories';
|
|
6
|
-
import type { PackageInfo, DependencyInfo, PackageReport } from '../types';
|
|
7
|
-
import { getCommitsByPathService } from './commit-service';
|
|
8
|
-
import type { PackageModel } from '../types/database';
|
|
9
|
-
|
|
10
|
-
interface TransformedPackage {
|
|
11
|
-
name: string;
|
|
12
|
-
version?: string;
|
|
13
|
-
type?: string;
|
|
14
|
-
path?: string;
|
|
15
|
-
description?: string;
|
|
16
|
-
license?: string;
|
|
17
|
-
repository: Record<string, unknown>;
|
|
18
|
-
scripts: Record<string, unknown>;
|
|
19
|
-
dependencies: Record<string, unknown>;
|
|
20
|
-
devDependencies: Record<string, unknown>;
|
|
21
|
-
peerDependencies: Record<string, unknown>;
|
|
22
|
-
maintainers: string[];
|
|
23
|
-
status?: string;
|
|
24
|
-
createdAt?: Date;
|
|
25
|
-
lastUpdated?: Date;
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
interface PackageDetail extends TransformedPackage {
|
|
29
|
-
report?: PackageReport;
|
|
30
|
-
ciStatus?: Record<string, unknown>;
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
/**
|
|
34
|
-
* Get package dependencies
|
|
35
|
-
*/
|
|
36
|
-
function getPackageDependenciesInfo(pkg: PackageInfo): DependencyInfo[] {
|
|
37
|
-
const allDeps: DependencyInfo[] = [];
|
|
38
|
-
Object.keys(pkg.dependencies || {}).forEach(depName => {
|
|
39
|
-
allDeps.push({
|
|
40
|
-
name: depName,
|
|
41
|
-
version: pkg.dependencies[depName],
|
|
42
|
-
type: 'dependency',
|
|
43
|
-
latest: '',
|
|
44
|
-
outdated: false,
|
|
45
|
-
});
|
|
46
|
-
});
|
|
47
|
-
Object.keys(pkg.devDependencies || {}).forEach(depName => {
|
|
48
|
-
allDeps.push({
|
|
49
|
-
name: depName,
|
|
50
|
-
version: pkg.devDependencies[depName],
|
|
51
|
-
type: 'devDependency',
|
|
52
|
-
latest: '',
|
|
53
|
-
outdated: false,
|
|
54
|
-
});
|
|
55
|
-
});
|
|
56
|
-
Object.keys(pkg.peerDependencies || {}).forEach(depName => {
|
|
57
|
-
allDeps.push({
|
|
58
|
-
name: depName,
|
|
59
|
-
version: pkg.peerDependencies[depName]!,
|
|
60
|
-
type: 'peerDependency',
|
|
61
|
-
latest: '',
|
|
62
|
-
outdated: false,
|
|
63
|
-
});
|
|
64
|
-
});
|
|
65
|
-
return allDeps;
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
/**
|
|
69
|
-
* Store packages in database using repository pattern
|
|
70
|
-
*/
|
|
71
|
-
async function storePackage(pkg: PackageInfo): Promise<void> {
|
|
72
|
-
try {
|
|
73
|
-
// Create or update package using repository
|
|
74
|
-
await PackageRepository.upsert({
|
|
75
|
-
name: pkg.name,
|
|
76
|
-
version: pkg.version,
|
|
77
|
-
type: pkg.type,
|
|
78
|
-
path: pkg.path,
|
|
79
|
-
description: pkg.description,
|
|
80
|
-
license: pkg.license,
|
|
81
|
-
repository: pkg.repository,
|
|
82
|
-
scripts: pkg.scripts,
|
|
83
|
-
dependencies: pkg.dependencies,
|
|
84
|
-
devDependencies: pkg.devDependencies,
|
|
85
|
-
peerDependencies: pkg.peerDependencies,
|
|
86
|
-
maintainers: pkg.maintainers.join(','),
|
|
87
|
-
status: '',
|
|
88
|
-
});
|
|
89
|
-
|
|
90
|
-
// Store commits using repository
|
|
91
|
-
const commits = await getCommitsByPathService(pkg.path ?? '');
|
|
92
|
-
if (commits.length) {
|
|
93
|
-
await CommitRepository.storeMany(pkg.name, commits);
|
|
94
|
-
}
|
|
95
|
-
|
|
96
|
-
// Store dependencies using repository
|
|
97
|
-
const dependenciesInfo = getPackageDependenciesInfo(pkg);
|
|
98
|
-
if (dependenciesInfo.length) {
|
|
99
|
-
await DependencyRepository.storeMany(pkg.name, dependenciesInfo);
|
|
100
|
-
}
|
|
101
|
-
} catch (error) {
|
|
102
|
-
AppLogger.warn(`Failed to store report for ${pkg.name}`);
|
|
103
|
-
}
|
|
104
|
-
}
|
|
105
|
-
|
|
106
|
-
export const getPackagesService = async (rootPath: string) => {
|
|
107
|
-
let dbPackages = await PackageRepository.findAll();
|
|
108
|
-
if (!dbPackages.length) {
|
|
109
|
-
try {
|
|
110
|
-
const rootDir = rootPath;
|
|
111
|
-
AppLogger.debug('rootDir: ' + rootDir);
|
|
112
|
-
const packages = scanMonorepo(rootDir);
|
|
113
|
-
AppLogger.debug('packages scanned: ' + packages.length);
|
|
114
|
-
for (const pkg of packages) {
|
|
115
|
-
await storePackage(pkg);
|
|
116
|
-
}
|
|
117
|
-
} catch (error) {
|
|
118
|
-
throw new Error('Error ' + error);
|
|
119
|
-
}
|
|
120
|
-
dbPackages = await PackageRepository.findAll();
|
|
121
|
-
}
|
|
122
|
-
const transformedPackages = dbPackages.map((pkg: PackageModel) => {
|
|
123
|
-
// We create a new object 'transformedPkg' based on the database record 'pkg'
|
|
124
|
-
const transformedPkg = { ...pkg };
|
|
125
|
-
|
|
126
|
-
// 1. Maintainers
|
|
127
|
-
transformedPkg.maintainers = pkg.maintainers
|
|
128
|
-
? JSON.parse(pkg.maintainers)
|
|
129
|
-
: [];
|
|
130
|
-
|
|
131
|
-
// 2. Scripts/repository (should default to an object, not an array)
|
|
132
|
-
transformedPkg.scripts = pkg.scripts ? JSON.parse(pkg.scripts) : {};
|
|
133
|
-
transformedPkg.repository = pkg.repository
|
|
134
|
-
? JSON.parse(pkg.repository)
|
|
135
|
-
: {};
|
|
136
|
-
|
|
137
|
-
// 3. Dependencies List
|
|
138
|
-
transformedPkg.dependencies = pkg.dependencies
|
|
139
|
-
? JSON.parse(pkg.dependencies)
|
|
140
|
-
: [];
|
|
141
|
-
transformedPkg.devDependencies = pkg.devDependencies
|
|
142
|
-
? JSON.parse(pkg.devDependencies)
|
|
143
|
-
: [];
|
|
144
|
-
transformedPkg.peerDependencies = pkg.peerDependencies
|
|
145
|
-
? JSON.parse(pkg.peerDependencies)
|
|
146
|
-
: [];
|
|
147
|
-
return transformedPkg; // Return the fully transformed object
|
|
148
|
-
});
|
|
149
|
-
|
|
150
|
-
return transformedPackages;
|
|
151
|
-
}
|
|
152
|
-
|
|
153
|
-
export const refreshPackagesService = async (rootPath: string) => {
|
|
154
|
-
await PackageRepository.deleteAll();
|
|
155
|
-
|
|
156
|
-
const rootDir = rootPath;
|
|
157
|
-
const packages = scanMonorepo(rootDir);
|
|
158
|
-
|
|
159
|
-
AppLogger.debug('packages count: ' + packages.length);
|
|
160
|
-
for (const pkg of packages) {
|
|
161
|
-
await storePackage(pkg);
|
|
162
|
-
}
|
|
163
|
-
|
|
164
|
-
// Return transformed packages like getPackagesService
|
|
165
|
-
const dbPackages = await PackageRepository.findAll();
|
|
166
|
-
const transformedPackages = dbPackages.map((pkg: PackageModel) => {
|
|
167
|
-
const transformedPkg = { ...pkg };
|
|
168
|
-
|
|
169
|
-
transformedPkg.maintainers = pkg.maintainers
|
|
170
|
-
? JSON.parse(pkg.maintainers)
|
|
171
|
-
: [];
|
|
172
|
-
|
|
173
|
-
transformedPkg.scripts = pkg.scripts ? JSON.parse(pkg.scripts) : {};
|
|
174
|
-
transformedPkg.repository = pkg.repository
|
|
175
|
-
? JSON.parse(pkg.repository)
|
|
176
|
-
: {};
|
|
177
|
-
|
|
178
|
-
transformedPkg.dependencies = pkg.dependencies
|
|
179
|
-
? JSON.parse(pkg.dependencies)
|
|
180
|
-
: [];
|
|
181
|
-
transformedPkg.devDependencies = pkg.devDependencies
|
|
182
|
-
? JSON.parse(pkg.devDependencies)
|
|
183
|
-
: [];
|
|
184
|
-
transformedPkg.peerDependencies = pkg.peerDependencies
|
|
185
|
-
? JSON.parse(pkg.peerDependencies)
|
|
186
|
-
: [];
|
|
187
|
-
return transformedPkg;
|
|
188
|
-
});
|
|
189
|
-
|
|
190
|
-
return transformedPackages;
|
|
191
|
-
}
|
|
192
|
-
|
|
193
|
-
export const getPackageDetailService = async (name: string) => {
|
|
194
|
-
|
|
195
|
-
const pkg = await PackageRepository.findByNameWithRelations(name);
|
|
196
|
-
if (!pkg) {
|
|
197
|
-
return null;
|
|
198
|
-
}
|
|
199
|
-
const transformedPkg = { ...pkg };
|
|
200
|
-
|
|
201
|
-
transformedPkg.scripts = pkg.scripts ? JSON.parse(pkg.scripts) : {};
|
|
202
|
-
transformedPkg.repository = pkg.repository
|
|
203
|
-
? JSON.parse(pkg.repository)
|
|
204
|
-
: {};
|
|
205
|
-
|
|
206
|
-
transformedPkg.dependencies = pkg.dependencies
|
|
207
|
-
? JSON.parse(pkg.dependencies)
|
|
208
|
-
: [];
|
|
209
|
-
transformedPkg.devDependencies = pkg.devDependencies
|
|
210
|
-
? JSON.parse(pkg.devDependencies)
|
|
211
|
-
: [];
|
|
212
|
-
transformedPkg.peerDependencies = pkg.peerDependencies
|
|
213
|
-
? JSON.parse(pkg.peerDependencies)
|
|
214
|
-
: [];
|
|
215
|
-
|
|
216
|
-
// Get additional package information
|
|
217
|
-
// const reports = (await generateReports()) as unknown as PackageReport[] | undefined;
|
|
218
|
-
// const packageReport = reports?.find((r: PackageReport) => r.package?.name === name);
|
|
219
|
-
|
|
220
|
-
const result: PackageDetail = {
|
|
221
|
-
...transformedPkg,
|
|
222
|
-
// report: packageReport,
|
|
223
|
-
ciStatus: await ciStatusManager.getPackageStatus(name),
|
|
224
|
-
};
|
|
225
|
-
|
|
226
|
-
return result;
|
|
227
|
-
|
|
228
|
-
}
|
package/src/setup.ts
DELETED
|
@@ -1,78 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
|
|
3
|
-
import fs from 'fs';
|
|
4
|
-
import path from 'path';
|
|
5
|
-
import { execSync } from 'child_process';
|
|
6
|
-
|
|
7
|
-
console.log('\nInitializing Monodog...\n');
|
|
8
|
-
|
|
9
|
-
const cwd = process.cwd();
|
|
10
|
-
const destinationPath = path.join(cwd, 'monodog');
|
|
11
|
-
const packageRoot = path.resolve(__dirname, '..');
|
|
12
|
-
|
|
13
|
-
if (fs.existsSync(destinationPath)) {
|
|
14
|
-
console.log('monodog already exists.');
|
|
15
|
-
process.exit(0);
|
|
16
|
-
}
|
|
17
|
-
if (fs.existsSync(path.join(cwd, 'pnpm-workspace.yaml'))) {
|
|
18
|
-
console.log('Workspace detected, installing monodog as standalone app.');
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
// 1. Copy package
|
|
22
|
-
console.log('Copying Monodog...');
|
|
23
|
-
fs.cpSync(packageRoot, destinationPath, {
|
|
24
|
-
recursive: true,
|
|
25
|
-
dereference: true,
|
|
26
|
-
filter: (src) => {
|
|
27
|
-
const name = path.basename(src);
|
|
28
|
-
return ![
|
|
29
|
-
'node_modules',
|
|
30
|
-
'.git',
|
|
31
|
-
'.turbo',
|
|
32
|
-
'.pnpm',
|
|
33
|
-
'.cache',
|
|
34
|
-
'dist/.tsbuildinfo',
|
|
35
|
-
].includes(name);
|
|
36
|
-
},
|
|
37
|
-
});
|
|
38
|
-
|
|
39
|
-
// 2. Fix package.json (standalone app)
|
|
40
|
-
fixPackageJson(destinationPath);
|
|
41
|
-
|
|
42
|
-
function ensureWorkspace(rootDir: string) {
|
|
43
|
-
const wsPath = path.join(rootDir, 'pnpm-workspace.yaml');
|
|
44
|
-
if (!fs.existsSync(wsPath)) {console.log('pnpm-workspace.yaml does not exist'); return;}
|
|
45
|
-
|
|
46
|
-
const content = fs.readFileSync(wsPath, 'utf8');
|
|
47
|
-
if (content.includes('monodog')) return;
|
|
48
|
-
|
|
49
|
-
const updated = content.replace(
|
|
50
|
-
/packages:\s*\n/,
|
|
51
|
-
`packages:\n - monodog\n`
|
|
52
|
-
);
|
|
53
|
-
|
|
54
|
-
fs.writeFileSync(wsPath, updated);
|
|
55
|
-
}
|
|
56
|
-
// 3. Install deps
|
|
57
|
-
ensureWorkspace(process.cwd());
|
|
58
|
-
execSync('pnpm install', { stdio: 'inherit' });
|
|
59
|
-
execSync('pnpm --filter monodog-app migrate:reset', { stdio: 'inherit' });
|
|
60
|
-
|
|
61
|
-
console.log(`
|
|
62
|
-
Monodog ready!
|
|
63
|
-
|
|
64
|
-
Next:
|
|
65
|
-
cd monodog
|
|
66
|
-
pnpm serve
|
|
67
|
-
`);
|
|
68
|
-
|
|
69
|
-
function fixPackageJson(appDir: string) {
|
|
70
|
-
const pkgPath = path.join(appDir, 'package.json');
|
|
71
|
-
const pkg = JSON.parse(fs.readFileSync(pkgPath, 'utf8'));
|
|
72
|
-
|
|
73
|
-
pkg.private = true; // critical REQUIRED
|
|
74
|
-
pkg.name = 'monodog-app'; // avoid workspace collision
|
|
75
|
-
delete pkg.bin; // this is now an app, not a CLI
|
|
76
|
-
|
|
77
|
-
fs.writeFileSync(pkgPath, JSON.stringify(pkg, null, 2));
|
|
78
|
-
}
|
package/src/types/ci.ts
DELETED
|
@@ -1,122 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* CI/CD related types
|
|
3
|
-
*/
|
|
4
|
-
|
|
5
|
-
import type { PackageInfo } from './package';
|
|
6
|
-
|
|
7
|
-
export interface CIProvider {
|
|
8
|
-
name: string;
|
|
9
|
-
type:
|
|
10
|
-
| 'github'
|
|
11
|
-
| 'gitlab'
|
|
12
|
-
| 'jenkins'
|
|
13
|
-
| 'circleci'
|
|
14
|
-
| 'travis'
|
|
15
|
-
| 'azure'
|
|
16
|
-
| 'custom';
|
|
17
|
-
baseUrl: string;
|
|
18
|
-
apiToken?: string;
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
export interface CIBuild {
|
|
22
|
-
id: string;
|
|
23
|
-
status: 'success' | 'failed' | 'running' | 'pending' | 'cancelled';
|
|
24
|
-
branch: string;
|
|
25
|
-
commit: string;
|
|
26
|
-
commitMessage: string;
|
|
27
|
-
author: string;
|
|
28
|
-
startTime: Date;
|
|
29
|
-
endTime?: Date;
|
|
30
|
-
duration?: number;
|
|
31
|
-
url: string;
|
|
32
|
-
packageName?: string;
|
|
33
|
-
workflowName?: string;
|
|
34
|
-
jobName?: string;
|
|
35
|
-
steps: CIBuildStep[];
|
|
36
|
-
artifacts?: CIArtifact[];
|
|
37
|
-
coverage?: CICoverage;
|
|
38
|
-
tests?: CITestResults;
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
export interface CIBuildStep {
|
|
42
|
-
name: string;
|
|
43
|
-
status: 'success' | 'failed' | 'running' | 'skipped';
|
|
44
|
-
duration: number;
|
|
45
|
-
logs?: string;
|
|
46
|
-
error?: string;
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
export interface CIArtifact {
|
|
50
|
-
name: string;
|
|
51
|
-
type: 'build' | 'test' | 'coverage' | 'documentation';
|
|
52
|
-
size: number;
|
|
53
|
-
url: string;
|
|
54
|
-
expiresAt?: Date;
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
export interface CICoverage {
|
|
58
|
-
percentage: number;
|
|
59
|
-
lines: number;
|
|
60
|
-
functions: number;
|
|
61
|
-
branches: number;
|
|
62
|
-
statements: number;
|
|
63
|
-
uncoveredLines?: number[];
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
export interface CITestResults {
|
|
67
|
-
total: number;
|
|
68
|
-
passed: number;
|
|
69
|
-
failed: number;
|
|
70
|
-
skipped: number;
|
|
71
|
-
duration: number;
|
|
72
|
-
suites: CITestSuite[];
|
|
73
|
-
}
|
|
74
|
-
|
|
75
|
-
export interface CITestSuite {
|
|
76
|
-
name: string;
|
|
77
|
-
status: 'pass' | 'fail' | 'skip';
|
|
78
|
-
tests: CITest[];
|
|
79
|
-
duration: number;
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
export interface CITest {
|
|
83
|
-
name: string;
|
|
84
|
-
status: 'pass' | 'fail' | 'skip';
|
|
85
|
-
duration: number;
|
|
86
|
-
error?: string;
|
|
87
|
-
output?: string;
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
export interface CIPackageStatus {
|
|
91
|
-
packageName: string;
|
|
92
|
-
lastBuild?: CIBuild;
|
|
93
|
-
buildHistory: CIBuild[];
|
|
94
|
-
successRate: number;
|
|
95
|
-
averageDuration: number;
|
|
96
|
-
lastCommit: string;
|
|
97
|
-
lastCommitDate: Date;
|
|
98
|
-
branch: string;
|
|
99
|
-
isHealthy: boolean;
|
|
100
|
-
issues: string[];
|
|
101
|
-
}
|
|
102
|
-
|
|
103
|
-
export interface CIMonorepoStatus {
|
|
104
|
-
totalPackages: number;
|
|
105
|
-
healthyPackages: number;
|
|
106
|
-
warningPackages: number;
|
|
107
|
-
errorPackages: number;
|
|
108
|
-
overallHealth: number;
|
|
109
|
-
packages: CIPackageStatus[];
|
|
110
|
-
recentBuilds: CIBuild[];
|
|
111
|
-
failedBuilds: CIBuild[];
|
|
112
|
-
coverage: {
|
|
113
|
-
overall: number;
|
|
114
|
-
packages: Record<string, number>;
|
|
115
|
-
};
|
|
116
|
-
tests: {
|
|
117
|
-
total: number;
|
|
118
|
-
passed: number;
|
|
119
|
-
failed: number;
|
|
120
|
-
successRate: number;
|
|
121
|
-
};
|
|
122
|
-
}
|
package/src/types/config.ts
DELETED
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Configuration types for the monodog application
|
|
3
|
-
*/
|
|
4
|
-
|
|
5
|
-
export interface MonodogConfig {
|
|
6
|
-
workspaces: [];
|
|
7
|
-
database: {
|
|
8
|
-
type: 'postgres' | 'mysql' | 'sqlite';
|
|
9
|
-
host: string;
|
|
10
|
-
port: number;
|
|
11
|
-
user: string;
|
|
12
|
-
path: string; // Used for SQLite path or general data storage path
|
|
13
|
-
};
|
|
14
|
-
dashboard: {
|
|
15
|
-
host: string;
|
|
16
|
-
port: number;
|
|
17
|
-
};
|
|
18
|
-
server: {
|
|
19
|
-
host: string;
|
|
20
|
-
port: number;
|
|
21
|
-
};
|
|
22
|
-
}
|
package/src/types/database.ts
DELETED
|
@@ -1,67 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Database related types
|
|
3
|
-
*/
|
|
4
|
-
|
|
5
|
-
export interface Commit {
|
|
6
|
-
hash: string;
|
|
7
|
-
message?: string;
|
|
8
|
-
author?: string;
|
|
9
|
-
date: Date;
|
|
10
|
-
type?: string;
|
|
11
|
-
packageName: string;
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
export interface PackageHealthModel {
|
|
15
|
-
packageName: string;
|
|
16
|
-
packageOverallScore: number;
|
|
17
|
-
packageBuildStatus: string;
|
|
18
|
-
packageTestCoverage: number;
|
|
19
|
-
packageLintStatus: string;
|
|
20
|
-
packageSecurity: string;
|
|
21
|
-
packageDependencies?: string;
|
|
22
|
-
updatedAt?: Date;
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
export interface TransformedPackageHealth {
|
|
26
|
-
packageName: string;
|
|
27
|
-
health: {
|
|
28
|
-
buildStatus: string;
|
|
29
|
-
testCoverage: number;
|
|
30
|
-
lintStatus: string;
|
|
31
|
-
securityAudit: string;
|
|
32
|
-
overallScore: number;
|
|
33
|
-
};
|
|
34
|
-
isHealthy: boolean;
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
export interface HealthSummary {
|
|
38
|
-
total: number;
|
|
39
|
-
healthy: number;
|
|
40
|
-
unhealthy: number;
|
|
41
|
-
averageScore: number;
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
export interface HealthResponse {
|
|
45
|
-
packages: TransformedPackageHealth[];
|
|
46
|
-
summary: HealthSummary;
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
export interface PackageModel {
|
|
50
|
-
name: string;
|
|
51
|
-
version?: string;
|
|
52
|
-
type?: string;
|
|
53
|
-
path?: string;
|
|
54
|
-
description?: string;
|
|
55
|
-
license?: string;
|
|
56
|
-
repository?: string;
|
|
57
|
-
scripts?: string;
|
|
58
|
-
dependencies?: string;
|
|
59
|
-
devDependencies?: string;
|
|
60
|
-
peerDependencies?: string;
|
|
61
|
-
maintainers?: string;
|
|
62
|
-
status?: string;
|
|
63
|
-
createdAt?: Date;
|
|
64
|
-
lastUpdated?: Date;
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
export type ConfigUpdateData = Record<string, unknown>;
|
package/src/types/git.ts
DELETED
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Git-related types
|
|
3
|
-
*/
|
|
4
|
-
|
|
5
|
-
/**
|
|
6
|
-
* Interface representing a single commit object with key metadata.
|
|
7
|
-
*/
|
|
8
|
-
// export interface GitCommit {
|
|
9
|
-
// hash: string;
|
|
10
|
-
// author: string;
|
|
11
|
-
// packageName: string;
|
|
12
|
-
// date: Date;
|
|
13
|
-
// message: string;
|
|
14
|
-
// type: string;
|
|
15
|
-
// }
|
|
16
|
-
|
|
17
|
-
/**
|
|
18
|
-
* List of standard Conventional Commit types for validation.
|
|
19
|
-
* Any extracted type not in this list will be set to 'other'.
|
|
20
|
-
*/
|
|
21
|
-
export const VALID_COMMIT_TYPES: string[] = [
|
|
22
|
-
'feat', // New feature
|
|
23
|
-
'fix', // Bug fix
|
|
24
|
-
'docs', // Documentation changes
|
|
25
|
-
'style', // Code style changes (formatting, etc)
|
|
26
|
-
'refactor', // Code refactoring
|
|
27
|
-
'perf', // Performance improvements
|
|
28
|
-
'test', // Adding or updating tests
|
|
29
|
-
'chore', // Maintenance tasks (e.g., build scripts, dependency updates)
|
|
30
|
-
'ci', // CI/CD changes
|
|
31
|
-
'build', // Build system changes (e.g., pnpm/npm scripts)
|
|
32
|
-
'revert', // Reverting changes
|
|
33
|
-
];
|
package/src/types/health.ts
DELETED
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Health related types
|
|
3
|
-
*/
|
|
4
|
-
|
|
5
|
-
export interface PackageHealth {
|
|
6
|
-
buildStatus: 'success' | 'failed' | 'running' | 'unknown';
|
|
7
|
-
testCoverage: number;
|
|
8
|
-
lintStatus: 'pass' | 'fail' | 'unknown';
|
|
9
|
-
securityAudit: 'pass' | 'fail' | 'unknown';
|
|
10
|
-
overallScore: number;
|
|
11
|
-
}
|
package/src/types/index.ts
DELETED
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Central export for all application types
|
|
3
|
-
*/
|
|
4
|
-
|
|
5
|
-
export type { MonodogConfig } from './config';
|
|
6
|
-
// export type { GitCommit } from './git';
|
|
7
|
-
export { VALID_COMMIT_TYPES } from './git';
|
|
8
|
-
export type { PackageInfo, DependencyInfo, MonorepoStats } from './package';
|
|
9
|
-
export type { PackageHealth } from './health';
|
|
10
|
-
export type {
|
|
11
|
-
CIProvider,
|
|
12
|
-
CIBuild,
|
|
13
|
-
CIBuildStep,
|
|
14
|
-
CIArtifact,
|
|
15
|
-
CICoverage,
|
|
16
|
-
CITestResults,
|
|
17
|
-
CITestSuite,
|
|
18
|
-
CITest,
|
|
19
|
-
CIPackageStatus,
|
|
20
|
-
CIMonorepoStatus,
|
|
21
|
-
} from './ci';
|
|
22
|
-
export type { ScanResult, PackageReport } from './scanner';
|
|
23
|
-
export type { Commit } from './database';
|
package/src/types/package.ts
DELETED
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Package and monorepo related types
|
|
3
|
-
*/
|
|
4
|
-
|
|
5
|
-
export interface PackageInfo {
|
|
6
|
-
name: string;
|
|
7
|
-
version: string;
|
|
8
|
-
type: string; //'app' | 'lib' | 'tool';
|
|
9
|
-
path: string;
|
|
10
|
-
dependencies: Record<string, string>;
|
|
11
|
-
devDependencies: Record<string, string>;
|
|
12
|
-
peerDependencies: Record<string, string>;
|
|
13
|
-
scripts: Record<string, string>;
|
|
14
|
-
maintainers: string[];
|
|
15
|
-
description?: string;
|
|
16
|
-
license?: string;
|
|
17
|
-
repository?: Record<string, string>;
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
export interface DependencyInfo {
|
|
21
|
-
name: string;
|
|
22
|
-
version: string;
|
|
23
|
-
type: 'dependency' | 'devDependency' | 'peerDependency';
|
|
24
|
-
latest?: string;
|
|
25
|
-
status?: 'up-to-date' | 'outdated' | 'major-update' | 'unknown';
|
|
26
|
-
outdated?: boolean;
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
export interface MonorepoStats {
|
|
30
|
-
totalPackages: number;
|
|
31
|
-
apps: number;
|
|
32
|
-
libraries: number;
|
|
33
|
-
tools: number;
|
|
34
|
-
healthyPackages: number;
|
|
35
|
-
warningPackages: number;
|
|
36
|
-
errorPackages: number;
|
|
37
|
-
outdatedDependencies: number;
|
|
38
|
-
totalDependencies: number;
|
|
39
|
-
}
|
package/src/types/scanner.ts
DELETED
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Scanner and report related types
|
|
3
|
-
*/
|
|
4
|
-
|
|
5
|
-
import type { PackageInfo, DependencyInfo } from './package';
|
|
6
|
-
import type { PackageHealth } from './health';
|
|
7
|
-
import type { MonorepoStats } from './package';
|
|
8
|
-
|
|
9
|
-
export interface ScanResult {
|
|
10
|
-
packages: PackageInfo[];
|
|
11
|
-
stats: MonorepoStats;
|
|
12
|
-
dependencyGraph: any;
|
|
13
|
-
circularDependencies: string[][];
|
|
14
|
-
outdatedPackages: string[];
|
|
15
|
-
scanTimestamp: Date;
|
|
16
|
-
scanDuration: number;
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
export interface PackageReport {
|
|
20
|
-
package: PackageInfo;
|
|
21
|
-
health: PackageHealth;
|
|
22
|
-
size: { size: number; files: number };
|
|
23
|
-
outdatedDeps: DependencyInfo[];
|
|
24
|
-
lastModified: Date;
|
|
25
|
-
gitInfo?: {
|
|
26
|
-
lastCommit: string;
|
|
27
|
-
lastCommitDate: Date;
|
|
28
|
-
author: string;
|
|
29
|
-
branch: string;
|
|
30
|
-
};
|
|
31
|
-
}
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Type declarations for swagger-jsdoc
|
|
3
|
-
* Provides TypeScript support for swagger-jsdoc module
|
|
4
|
-
*/
|
|
5
|
-
|
|
6
|
-
declare module 'swagger-jsdoc' {
|
|
7
|
-
interface SwaggerOptions {
|
|
8
|
-
definition?: Record<string, unknown>;
|
|
9
|
-
apis?: string[];
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
function swaggerJsDoc(options: SwaggerOptions): Record<string, unknown>;
|
|
13
|
-
|
|
14
|
-
export = swaggerJsDoc;
|
|
15
|
-
}
|