@c2l2c/backstage-plugin-dora-metrics 0.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.
- package/README.md +91 -0
- package/config.d.ts +45 -0
- package/dist/alpha.d.ts +60 -0
- package/dist/alpha.esm.js +2 -0
- package/dist/alpha.esm.js.map +1 -0
- package/dist/api/DoraMetricsClient.esm.js +200 -0
- package/dist/api/DoraMetricsClient.esm.js.map +1 -0
- package/dist/api/types.esm.js +8 -0
- package/dist/api/types.esm.js.map +1 -0
- package/dist/components/DoraMetricsContent.esm.js +1311 -0
- package/dist/components/DoraMetricsContent.esm.js.map +1 -0
- package/dist/components/ui/badge.esm.js +33 -0
- package/dist/components/ui/badge.esm.js.map +1 -0
- package/dist/components/ui/card.esm.js +77 -0
- package/dist/components/ui/card.esm.js.map +1 -0
- package/dist/components/ui/select.esm.js +110 -0
- package/dist/components/ui/select.esm.js.map +1 -0
- package/dist/extensions/api.esm.js +21 -0
- package/dist/extensions/api.esm.js.map +1 -0
- package/dist/extensions/entityContent.esm.js +14 -0
- package/dist/extensions/entityContent.esm.js.map +1 -0
- package/dist/index.d.ts +73 -0
- package/dist/index.esm.js +5 -0
- package/dist/index.esm.js.map +1 -0
- package/dist/plugin.esm.js +11 -0
- package/dist/plugin.esm.js.map +1 -0
- package/package.json +77 -0
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
export { default as doraMetricsPlugin } from './alpha.js';
|
|
2
|
+
import * as _backstage_frontend_plugin_api from '@backstage/frontend-plugin-api';
|
|
3
|
+
import { OAuthApi, ConfigApi } from '@backstage/core-plugin-api';
|
|
4
|
+
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
5
|
+
import '@backstage/catalog-model';
|
|
6
|
+
import 'react';
|
|
7
|
+
import '@backstage/filter-predicates';
|
|
8
|
+
|
|
9
|
+
type DoraRating = 'elite' | 'high' | 'medium' | 'low';
|
|
10
|
+
interface PrDetail {
|
|
11
|
+
number: number;
|
|
12
|
+
title: string;
|
|
13
|
+
url: string;
|
|
14
|
+
durationHours: number;
|
|
15
|
+
mergedAt: string;
|
|
16
|
+
author?: string;
|
|
17
|
+
authorAvatar?: string;
|
|
18
|
+
}
|
|
19
|
+
interface DoraMetricValue {
|
|
20
|
+
value: number;
|
|
21
|
+
unit: string;
|
|
22
|
+
rating: DoraRating;
|
|
23
|
+
target: number;
|
|
24
|
+
slowestPRs?: PrDetail[];
|
|
25
|
+
}
|
|
26
|
+
interface DoraEnvironment {
|
|
27
|
+
name: string;
|
|
28
|
+
branch: string;
|
|
29
|
+
isProduction: boolean;
|
|
30
|
+
label: string;
|
|
31
|
+
}
|
|
32
|
+
interface DoraMetrics {
|
|
33
|
+
deploymentFrequency: DoraMetricValue;
|
|
34
|
+
leadTime: DoraMetricValue;
|
|
35
|
+
/** null for non-production environments */
|
|
36
|
+
changeFailureRate: DoraMetricValue | null;
|
|
37
|
+
/** null for non-production environments */
|
|
38
|
+
mttr: DoraMetricValue | null;
|
|
39
|
+
/** null for non-production environments */
|
|
40
|
+
numberOfHotfixes: DoraMetricValue | null;
|
|
41
|
+
}
|
|
42
|
+
interface DoraHistoryPoint {
|
|
43
|
+
weekLabel: string;
|
|
44
|
+
bucketMidMs: number;
|
|
45
|
+
deploymentCount: number;
|
|
46
|
+
leadTimeHours: number;
|
|
47
|
+
changeFailureRate?: number;
|
|
48
|
+
mttrHours?: number;
|
|
49
|
+
}
|
|
50
|
+
interface DoraMetricsApi {
|
|
51
|
+
getEnvironments(): DoraEnvironment[];
|
|
52
|
+
getDefaultDays(): number;
|
|
53
|
+
getMetrics(projectSlug: string, branch: string, isProduction: boolean, label: string, days: number): Promise<DoraMetrics>;
|
|
54
|
+
getHistory(projectSlug: string, branch: string, isProduction: boolean, label: string, days: number): Promise<DoraHistoryPoint[]>;
|
|
55
|
+
}
|
|
56
|
+
declare const doraMetricsApiRef: _backstage_frontend_plugin_api.ApiRef<DoraMetricsApi>;
|
|
57
|
+
|
|
58
|
+
declare class DoraMetricsClient implements DoraMetricsApi {
|
|
59
|
+
private readonly githubAuthApi;
|
|
60
|
+
private readonly configApi;
|
|
61
|
+
constructor(githubAuthApi: OAuthApi, configApi: ConfigApi);
|
|
62
|
+
private getConfig;
|
|
63
|
+
getEnvironments(): DoraEnvironment[];
|
|
64
|
+
getDefaultDays(): number;
|
|
65
|
+
private fetchWithAuth;
|
|
66
|
+
getMetrics(projectSlug: string, branch: string, isProduction: boolean, label: string, days: number): Promise<DoraMetrics>;
|
|
67
|
+
getHistory(projectSlug: string, branch: string, isProduction: boolean, label: string, days: number): Promise<DoraHistoryPoint[]>;
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
declare function DoraMetricsContent(): react_jsx_runtime.JSX.Element | null;
|
|
71
|
+
|
|
72
|
+
export { DoraMetricsClient, DoraMetricsContent, doraMetricsApiRef };
|
|
73
|
+
export type { DoraMetricValue, DoraMetrics, DoraMetricsApi, DoraRating };
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export { doraMetricsPlugin } from './plugin.esm.js';
|
|
2
|
+
export { doraMetricsApiRef } from './api/types.esm.js';
|
|
3
|
+
export { DoraMetricsClient } from './api/DoraMetricsClient.esm.js';
|
|
4
|
+
export { DoraMetricsContent } from './components/DoraMetricsContent.esm.js';
|
|
5
|
+
//# sourceMappingURL=index.esm.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.esm.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { createFrontendPlugin } from '@backstage/frontend-plugin-api';
|
|
2
|
+
import { doraMetricsEntityContentExtension } from './extensions/entityContent.esm.js';
|
|
3
|
+
import { doraMetricsApiExtension } from './extensions/api.esm.js';
|
|
4
|
+
|
|
5
|
+
const doraMetricsPlugin = createFrontendPlugin({
|
|
6
|
+
pluginId: "dora-metrics",
|
|
7
|
+
extensions: [doraMetricsEntityContentExtension, doraMetricsApiExtension]
|
|
8
|
+
});
|
|
9
|
+
|
|
10
|
+
export { doraMetricsPlugin };
|
|
11
|
+
//# sourceMappingURL=plugin.esm.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plugin.esm.js","sources":["../src/plugin.ts"],"sourcesContent":["import { createFrontendPlugin } from '@backstage/frontend-plugin-api';\nimport { doraMetricsEntityContentExtension } from './extensions/entityContent';\nimport { doraMetricsApiExtension } from './extensions/api';\n\nexport const doraMetricsPlugin = createFrontendPlugin({\n pluginId: 'dora-metrics',\n extensions: [doraMetricsEntityContentExtension, doraMetricsApiExtension],\n});\n"],"names":[],"mappings":";;;;AAIO,MAAM,oBAAoB,oBAAA,CAAqB;AAAA,EACpD,QAAA,EAAU,cAAA;AAAA,EACV,UAAA,EAAY,CAAC,iCAAA,EAAmC,uBAAuB;AACzE,CAAC;;;;"}
|
package/package.json
ADDED
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@c2l2c/backstage-plugin-dora-metrics",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "A Backstage frontend plugin that displays DORA metrics (Deployment Frequency, Lead Time, Change Failure Rate, MTTR) for catalog entities via the GitHub API.",
|
|
5
|
+
"main": "dist/index.cjs.js",
|
|
6
|
+
"module": "dist/index.esm.js",
|
|
7
|
+
"types": "dist/index.d.ts",
|
|
8
|
+
"backstage": {
|
|
9
|
+
"role": "frontend-plugin",
|
|
10
|
+
"configSchema": "config.d.ts"
|
|
11
|
+
},
|
|
12
|
+
"exports": {
|
|
13
|
+
".": {
|
|
14
|
+
"types": "./dist/index.d.ts",
|
|
15
|
+
"import": "./dist/index.esm.js",
|
|
16
|
+
"require": "./dist/index.cjs.js"
|
|
17
|
+
},
|
|
18
|
+
"./alpha": {
|
|
19
|
+
"backstage": "@backstage/FrontendPlugin",
|
|
20
|
+
"types": "./dist/alpha.d.ts",
|
|
21
|
+
"import": "./dist/alpha.esm.js",
|
|
22
|
+
"require": "./dist/alpha.cjs.js"
|
|
23
|
+
},
|
|
24
|
+
"./package.json": "./package.json"
|
|
25
|
+
},
|
|
26
|
+
"files": [
|
|
27
|
+
"dist",
|
|
28
|
+
"config.d.ts",
|
|
29
|
+
"README.md"
|
|
30
|
+
],
|
|
31
|
+
"scripts": {
|
|
32
|
+
"build": "backstage-cli package build",
|
|
33
|
+
"start": "backstage-cli package start",
|
|
34
|
+
"lint": "backstage-cli package lint",
|
|
35
|
+
"test": "backstage-cli package test",
|
|
36
|
+
"clean": "backstage-cli package clean",
|
|
37
|
+
"prepack": "yarn build"
|
|
38
|
+
},
|
|
39
|
+
"keywords": [
|
|
40
|
+
"backstage",
|
|
41
|
+
"backstage-plugin",
|
|
42
|
+
"dora",
|
|
43
|
+
"dora-metrics",
|
|
44
|
+
"devops",
|
|
45
|
+
"github",
|
|
46
|
+
"deployment-frequency",
|
|
47
|
+
"lead-time",
|
|
48
|
+
"change-failure-rate",
|
|
49
|
+
"mttr"
|
|
50
|
+
],
|
|
51
|
+
"homepage": "https://github.com/C2L2C/backstage-plugin-dora-metrics#readme",
|
|
52
|
+
"repository": {
|
|
53
|
+
"type": "git",
|
|
54
|
+
"url": "https://github.com/C2L2C/backstage-plugin-dora-metrics.git"
|
|
55
|
+
},
|
|
56
|
+
"bugs": {
|
|
57
|
+
"url": "https://github.com/C2L2C/backstage-plugin-dora-metrics/issues"
|
|
58
|
+
},
|
|
59
|
+
"author": "C2L2C",
|
|
60
|
+
"license": "Apache-2.0",
|
|
61
|
+
"dependencies": {
|
|
62
|
+
"@backstage/catalog-model": "^1.7.6",
|
|
63
|
+
"@backstage/config": "^1.3.2",
|
|
64
|
+
"@backstage/core-components": "^0.18.7",
|
|
65
|
+
"@backstage/core-plugin-api": "^1.12.3",
|
|
66
|
+
"@backstage/frontend-plugin-api": "^0.9.5",
|
|
67
|
+
"@backstage/plugin-catalog-react": "^2.0.0",
|
|
68
|
+
"@radix-ui/react-select": "^2.2.6",
|
|
69
|
+
"lucide-react": "^0.577.0"
|
|
70
|
+
},
|
|
71
|
+
"devDependencies": {
|
|
72
|
+
"@backstage/cli": "^0.35.4"
|
|
73
|
+
},
|
|
74
|
+
"peerDependencies": {
|
|
75
|
+
"react": "^17.0.0 || ^18.0.0"
|
|
76
|
+
}
|
|
77
|
+
}
|