@monodog/ci-status 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/dist/index.d.ts +187 -0
- package/dist/index.js +634 -0
- package/dist/index.js.map +1 -0
- package/dist/libs/utils/helpers.d.ts +93 -0
- package/dist/libs/utils/helpers.js +478 -0
- package/dist/libs/utils/helpers.js.map +1 -0
- package/dist/packages/ci-status/index.d.ts +187 -0
- package/dist/packages/ci-status/index.js +634 -0
- package/dist/packages/ci-status/index.js.map +1 -0
- package/index.ts +639 -0
- package/package.json +30 -0
- package/tsconfig.json +24 -0
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,187 @@
|
|
|
1
|
+
import { PackageInfo } from '@monodog/utils/helpers';
|
|
2
|
+
export interface CIProvider {
|
|
3
|
+
name: string;
|
|
4
|
+
type: 'github' | 'gitlab' | 'jenkins' | 'circleci' | 'travis' | 'azure' | 'custom';
|
|
5
|
+
baseUrl: string;
|
|
6
|
+
apiToken?: string;
|
|
7
|
+
}
|
|
8
|
+
export interface CIBuild {
|
|
9
|
+
id: string;
|
|
10
|
+
status: 'success' | 'failed' | 'running' | 'pending' | 'cancelled';
|
|
11
|
+
branch: string;
|
|
12
|
+
commit: string;
|
|
13
|
+
commitMessage: string;
|
|
14
|
+
author: string;
|
|
15
|
+
startTime: Date;
|
|
16
|
+
endTime?: Date;
|
|
17
|
+
duration?: number;
|
|
18
|
+
url: string;
|
|
19
|
+
packageName?: string;
|
|
20
|
+
workflowName?: string;
|
|
21
|
+
jobName?: string;
|
|
22
|
+
steps: CIBuildStep[];
|
|
23
|
+
artifacts?: CIArtifact[];
|
|
24
|
+
coverage?: CICoverage;
|
|
25
|
+
tests?: CITestResults;
|
|
26
|
+
}
|
|
27
|
+
export interface CIBuildStep {
|
|
28
|
+
name: string;
|
|
29
|
+
status: 'success' | 'failed' | 'running' | 'skipped';
|
|
30
|
+
duration: number;
|
|
31
|
+
logs?: string;
|
|
32
|
+
error?: string;
|
|
33
|
+
}
|
|
34
|
+
export interface CIArtifact {
|
|
35
|
+
name: string;
|
|
36
|
+
type: 'build' | 'test' | 'coverage' | 'documentation';
|
|
37
|
+
size: number;
|
|
38
|
+
url: string;
|
|
39
|
+
expiresAt?: Date;
|
|
40
|
+
}
|
|
41
|
+
export interface CICoverage {
|
|
42
|
+
percentage: number;
|
|
43
|
+
lines: number;
|
|
44
|
+
functions: number;
|
|
45
|
+
branches: number;
|
|
46
|
+
statements: number;
|
|
47
|
+
uncoveredLines?: number[];
|
|
48
|
+
}
|
|
49
|
+
export interface CITestResults {
|
|
50
|
+
total: number;
|
|
51
|
+
passed: number;
|
|
52
|
+
failed: number;
|
|
53
|
+
skipped: number;
|
|
54
|
+
duration: number;
|
|
55
|
+
suites: CITestSuite[];
|
|
56
|
+
}
|
|
57
|
+
export interface CITestSuite {
|
|
58
|
+
name: string;
|
|
59
|
+
status: 'pass' | 'fail' | 'skip';
|
|
60
|
+
tests: CITest[];
|
|
61
|
+
duration: number;
|
|
62
|
+
}
|
|
63
|
+
export interface CITest {
|
|
64
|
+
name: string;
|
|
65
|
+
status: 'pass' | 'fail' | 'skip';
|
|
66
|
+
duration: number;
|
|
67
|
+
error?: string;
|
|
68
|
+
output?: string;
|
|
69
|
+
}
|
|
70
|
+
export interface CIPackageStatus {
|
|
71
|
+
packageName: string;
|
|
72
|
+
lastBuild?: CIBuild;
|
|
73
|
+
buildHistory: CIBuild[];
|
|
74
|
+
successRate: number;
|
|
75
|
+
averageDuration: number;
|
|
76
|
+
lastCommit: string;
|
|
77
|
+
lastCommitDate: Date;
|
|
78
|
+
branch: string;
|
|
79
|
+
isHealthy: boolean;
|
|
80
|
+
issues: string[];
|
|
81
|
+
}
|
|
82
|
+
export interface CIMonorepoStatus {
|
|
83
|
+
totalPackages: number;
|
|
84
|
+
healthyPackages: number;
|
|
85
|
+
warningPackages: number;
|
|
86
|
+
errorPackages: number;
|
|
87
|
+
overallHealth: number;
|
|
88
|
+
packages: CIPackageStatus[];
|
|
89
|
+
recentBuilds: CIBuild[];
|
|
90
|
+
failedBuilds: CIBuild[];
|
|
91
|
+
coverage: {
|
|
92
|
+
overall: number;
|
|
93
|
+
packages: Record<string, number>;
|
|
94
|
+
};
|
|
95
|
+
tests: {
|
|
96
|
+
total: number;
|
|
97
|
+
passed: number;
|
|
98
|
+
failed: number;
|
|
99
|
+
successRate: number;
|
|
100
|
+
};
|
|
101
|
+
}
|
|
102
|
+
export declare class CIStatusManager {
|
|
103
|
+
private providers;
|
|
104
|
+
private cache;
|
|
105
|
+
private cacheExpiry;
|
|
106
|
+
constructor();
|
|
107
|
+
/**
|
|
108
|
+
* Initialize default CI providers
|
|
109
|
+
*/
|
|
110
|
+
private initializeDefaultProviders;
|
|
111
|
+
/**
|
|
112
|
+
* Add a CI provider
|
|
113
|
+
*/
|
|
114
|
+
addProvider(provider: CIProvider): void;
|
|
115
|
+
/**
|
|
116
|
+
* Remove a CI provider
|
|
117
|
+
*/
|
|
118
|
+
removeProvider(name: string): void;
|
|
119
|
+
/**
|
|
120
|
+
* Get all registered providers
|
|
121
|
+
*/
|
|
122
|
+
getProviders(): CIProvider[];
|
|
123
|
+
/**
|
|
124
|
+
* Fetch CI status for a specific package
|
|
125
|
+
*/
|
|
126
|
+
getPackageStatus(packageName: string, providerName?: string): Promise<CIPackageStatus | null>;
|
|
127
|
+
/**
|
|
128
|
+
* Get overall monorepo CI status
|
|
129
|
+
*/
|
|
130
|
+
getMonorepoStatus(packages: PackageInfo[]): Promise<CIMonorepoStatus>;
|
|
131
|
+
/**
|
|
132
|
+
* Fetch builds from a specific CI provider
|
|
133
|
+
*/
|
|
134
|
+
private fetchBuildsFromProvider;
|
|
135
|
+
/**
|
|
136
|
+
* Calculate success rate from builds
|
|
137
|
+
*/
|
|
138
|
+
private calculateSuccessRate;
|
|
139
|
+
/**
|
|
140
|
+
* Calculate average build duration
|
|
141
|
+
*/
|
|
142
|
+
private calculateAverageDuration;
|
|
143
|
+
/**
|
|
144
|
+
* Determine if a package is healthy based on CI results
|
|
145
|
+
*/
|
|
146
|
+
private determinePackageHealth;
|
|
147
|
+
/**
|
|
148
|
+
* Identify issues from build results
|
|
149
|
+
*/
|
|
150
|
+
private identifyIssues;
|
|
151
|
+
/**
|
|
152
|
+
* Get cache value if not expired
|
|
153
|
+
*/
|
|
154
|
+
private getFromCache;
|
|
155
|
+
/**
|
|
156
|
+
* Set cache value with timestamp
|
|
157
|
+
*/
|
|
158
|
+
private setCache;
|
|
159
|
+
/**
|
|
160
|
+
* Clear the cache
|
|
161
|
+
*/
|
|
162
|
+
clearCache(): void;
|
|
163
|
+
/**
|
|
164
|
+
* Get build logs for a specific build
|
|
165
|
+
*/
|
|
166
|
+
getBuildLogs(buildId: string, providerName: string): Promise<string>;
|
|
167
|
+
/**
|
|
168
|
+
* Trigger a new build for a package
|
|
169
|
+
*/
|
|
170
|
+
triggerBuild(packageName: string, providerName: string, branch?: string): Promise<{
|
|
171
|
+
success: boolean;
|
|
172
|
+
buildId?: string;
|
|
173
|
+
error?: string;
|
|
174
|
+
}>;
|
|
175
|
+
/**
|
|
176
|
+
* Get build artifacts
|
|
177
|
+
*/
|
|
178
|
+
getBuildArtifacts(buildId: string, _providerName: string): Promise<CIArtifact[]>;
|
|
179
|
+
}
|
|
180
|
+
export declare const ciStatusManager: CIStatusManager;
|
|
181
|
+
export declare function getPackageCIStatus(packageName: string): Promise<CIPackageStatus | null>;
|
|
182
|
+
export declare function getMonorepoCIStatus(packages: PackageInfo[]): Promise<CIMonorepoStatus>;
|
|
183
|
+
export declare function triggerPackageBuild(packageName: string, providerName: string, branch?: string): Promise<{
|
|
184
|
+
success: boolean;
|
|
185
|
+
buildId?: string;
|
|
186
|
+
error?: string;
|
|
187
|
+
}>;
|