@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.
@@ -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
+ }>;