@c2l2c/backstage-plugin-dora-metrics 0.3.0 → 0.3.3

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.
@@ -1 +1 @@
1
- {"version":3,"file":"badge.esm.js","sources":["../../../src/components/ui/badge.tsx"],"sourcesContent":["import type { DoraRating } from '../../api/types';\n\nconst RATING_STYLES: Record<DoraRating, { background: string; color: string; border: string }> = {\n elite: { background: '#14532d', color: '#86efac', border: '#166534' },\n high: { background: '#1e3a5f', color: '#93c5fd', border: '#1d4ed8' },\n medium:{ background: '#451a03', color: '#fdba74', border: '#92400e' },\n low: { background: '#450a0a', color: '#fca5a5', border: '#991b1b' },\n};\n\nexport function RatingBadge({ rating }: { rating: DoraRating }) {\n const s = RATING_STYLES[rating];\n return (\n <span\n style={{\n display: 'inline-flex',\n alignItems: 'center',\n padding: '2px 8px',\n borderRadius: 9999,\n background: s.background,\n color: s.color,\n border: `1px solid ${s.border}`,\n fontSize: 11,\n fontWeight: 600,\n letterSpacing: '0.06em',\n textTransform: 'uppercase',\n }}\n >\n {rating}\n </span>\n );\n}\n"],"names":[],"mappings":"AAEA,MAAM,aAAA,GAA2F;AAAA,EAC/F,OAAO,EAAE,UAAA,EAAY,WAAW,KAAA,EAAO,SAAA,EAAW,QAAQ,SAAA,EAAU;AAAA,EACpE,MAAO,EAAE,UAAA,EAAY,WAAW,KAAA,EAAO,SAAA,EAAW,QAAQ,SAAA,EAAU;AAAA,EACpE,QAAO,EAAE,UAAA,EAAY,WAAW,KAAA,EAAO,SAAA,EAAW,QAAQ,SAAA,EAAU;AAAA,EACpE,KAAO,EAAE,UAAA,EAAY,WAAW,KAAA,EAAO,SAAA,EAAW,QAAQ,SAAA;AAC5D,CAAA;AAEO,SAAS,WAAA,CAAY,EAAE,MAAA,EAAO,EAA2B;AAC9D,EAAA,MAAM,CAAA,GAAI,cAAc,MAAM,CAAA;AAC9B,EAAA,uBACE,KAAA,CAAA,aAAA;AAAA,IAAC,MAAA;AAAA,IAAA;AAAA,MACC,KAAA,EAAO;AAAA,QACL,OAAA,EAAS,aAAA;AAAA,QACT,UAAA,EAAY,QAAA;AAAA,QACZ,OAAA,EAAS,SAAA;AAAA,QACT,YAAA,EAAc,IAAA;AAAA,QACd,YAAY,CAAA,CAAE,UAAA;AAAA,QACd,OAAO,CAAA,CAAE,KAAA;AAAA,QACT,MAAA,EAAQ,CAAA,UAAA,EAAa,CAAA,CAAE,MAAM,CAAA,CAAA;AAAA,QAC7B,QAAA,EAAU,EAAA;AAAA,QACV,UAAA,EAAY,GAAA;AAAA,QACZ,aAAA,EAAe,QAAA;AAAA,QACf,aAAA,EAAe;AAAA;AACjB,KAAA;AAAA,IAEC;AAAA,GACH;AAEJ;;;;"}
1
+ {"version":3,"file":"badge.esm.js","sources":["../../../src/components/ui/badge.tsx"],"sourcesContent":["import React from 'react';\nimport type { DoraRating } from '../../api/types';\n\nconst RATING_STYLES: Record<DoraRating, { background: string; color: string; border: string }> = {\n elite: { background: '#14532d', color: '#86efac', border: '#166534' },\n high: { background: '#1e3a5f', color: '#93c5fd', border: '#1d4ed8' },\n medium:{ background: '#451a03', color: '#fdba74', border: '#92400e' },\n low: { background: '#450a0a', color: '#fca5a5', border: '#991b1b' },\n};\n\nexport function RatingBadge({ rating }: { rating: DoraRating }) {\n const s = RATING_STYLES[rating];\n return (\n <span\n style={{\n display: 'inline-flex',\n alignItems: 'center',\n padding: '2px 8px',\n borderRadius: 9999,\n background: s.background,\n color: s.color,\n border: `1px solid ${s.border}`,\n fontSize: 11,\n fontWeight: 600,\n letterSpacing: '0.06em',\n textTransform: 'uppercase',\n }}\n >\n {rating}\n </span>\n );\n}\n"],"names":[],"mappings":";;AAGA,MAAM,aAAA,GAA2F;AAAA,EAC/F,OAAO,EAAE,UAAA,EAAY,WAAW,KAAA,EAAO,SAAA,EAAW,QAAQ,SAAA,EAAU;AAAA,EACpE,MAAO,EAAE,UAAA,EAAY,WAAW,KAAA,EAAO,SAAA,EAAW,QAAQ,SAAA,EAAU;AAAA,EACpE,QAAO,EAAE,UAAA,EAAY,WAAW,KAAA,EAAO,SAAA,EAAW,QAAQ,SAAA,EAAU;AAAA,EACpE,KAAO,EAAE,UAAA,EAAY,WAAW,KAAA,EAAO,SAAA,EAAW,QAAQ,SAAA;AAC5D,CAAA;AAEO,SAAS,WAAA,CAAY,EAAE,MAAA,EAAO,EAA2B;AAC9D,EAAA,MAAM,CAAA,GAAI,cAAc,MAAM,CAAA;AAC9B,EAAA,uBACE,KAAA,CAAA,aAAA;AAAA,IAAC,MAAA;AAAA,IAAA;AAAA,MACC,KAAA,EAAO;AAAA,QACL,OAAA,EAAS,aAAA;AAAA,QACT,UAAA,EAAY,QAAA;AAAA,QACZ,OAAA,EAAS,SAAA;AAAA,QACT,YAAA,EAAc,IAAA;AAAA,QACd,YAAY,CAAA,CAAE,UAAA;AAAA,QACd,OAAO,CAAA,CAAE,KAAA;AAAA,QACT,MAAA,EAAQ,CAAA,UAAA,EAAa,CAAA,CAAE,MAAM,CAAA,CAAA;AAAA,QAC7B,QAAA,EAAU,EAAA;AAAA,QACV,UAAA,EAAY,GAAA;AAAA,QACZ,aAAA,EAAe,QAAA;AAAA,QACf,aAAA,EAAe;AAAA;AACjB,KAAA;AAAA,IAEC;AAAA,GACH;AAEJ;;;;"}
@@ -1,3 +1,4 @@
1
+ import React from 'react';
1
2
  import { EntityContentBlueprint } from '@backstage/plugin-catalog-react/alpha';
2
3
 
3
4
  const doraMetricsEntityContentExtension = EntityContentBlueprint.make({
@@ -1 +1 @@
1
- {"version":3,"file":"entityContent.esm.js","sources":["../../src/extensions/entityContent.tsx"],"sourcesContent":["import { EntityContentBlueprint } from '@backstage/plugin-catalog-react/alpha';\n\nexport const doraMetricsEntityContentExtension = EntityContentBlueprint.make({\n params: {\n path: 'dora-metrics',\n title: 'DORA Metrics',\n filter: entity =>\n entity.spec?.type === 'service' ||\n Boolean(entity.metadata.annotations?.['github.com/project-slug']),\n loader: () =>\n import('../components/DoraMetricsContent').then(m => (\n <m.DoraMetricsContent />\n )),\n },\n});\n"],"names":[],"mappings":";;AAEO,MAAM,iCAAA,GAAoC,uBAAuB,IAAA,CAAK;AAAA,EAC3E,MAAA,EAAQ;AAAA,IACN,IAAA,EAAM,cAAA;AAAA,IACN,KAAA,EAAO,cAAA;AAAA,IACP,MAAA,EAAQ,CAAA,MAAA,KACN,MAAA,CAAO,IAAA,EAAM,IAAA,KAAS,SAAA,IACtB,OAAA,CAAQ,MAAA,CAAO,QAAA,CAAS,WAAA,GAAc,yBAAyB,CAAC,CAAA;AAAA,IAClE,MAAA,EAAQ,MACN,OAAO,yCAAkC,CAAA,CAAE,IAAA,CAAK,CAAA,CAAA,qBAC9C,KAAA,CAAA,aAAA,CAAC,CAAA,CAAE,kBAAA,EAAF,IAAqB,CACvB;AAAA;AAEP,CAAC;;;;"}
1
+ {"version":3,"file":"entityContent.esm.js","sources":["../../src/extensions/entityContent.tsx"],"sourcesContent":["import React from 'react';\nimport { EntityContentBlueprint } from '@backstage/plugin-catalog-react/alpha';\n\nexport const doraMetricsEntityContentExtension = EntityContentBlueprint.make({\n params: {\n path: 'dora-metrics',\n title: 'DORA Metrics',\n filter: entity =>\n entity.spec?.type === 'service' ||\n Boolean(entity.metadata.annotations?.['github.com/project-slug']),\n loader: () =>\n import('../components/DoraMetricsContent').then(m => (\n <m.DoraMetricsContent />\n )),\n },\n});\n"],"names":[],"mappings":";;;AAGO,MAAM,iCAAA,GAAoC,uBAAuB,IAAA,CAAK;AAAA,EAC3E,MAAA,EAAQ;AAAA,IACN,IAAA,EAAM,cAAA;AAAA,IACN,KAAA,EAAO,cAAA;AAAA,IACP,MAAA,EAAQ,CAAA,MAAA,KACN,MAAA,CAAO,IAAA,EAAM,IAAA,KAAS,SAAA,IACtB,OAAA,CAAQ,MAAA,CAAO,QAAA,CAAS,WAAA,GAAc,yBAAyB,CAAC,CAAA;AAAA,IAClE,MAAA,EAAQ,MACN,OAAO,yCAAkC,CAAA,CAAE,IAAA,CAAK,CAAA,CAAA,qBAC9C,KAAA,CAAA,aAAA,CAAC,CAAA,CAAE,kBAAA,EAAF,IAAqB,CACvB;AAAA;AAEP,CAAC;;;;"}
package/dist/index.d.ts CHANGED
@@ -1,7 +1,10 @@
1
1
  export { default as doraMetricsPlugin } from './alpha.js';
2
2
  import * as _backstage_core_plugin_api from '@backstage/core-plugin-api';
3
3
  import { OAuthApi, ConfigApi } from '@backstage/core-plugin-api';
4
- import React from 'react';
4
+ import * as react_jsx_runtime from 'react/jsx-runtime';
5
+ import '@backstage/catalog-model';
6
+ import 'react';
7
+ import '@backstage/filter-predicates';
5
8
  import '@backstage/frontend-plugin-api';
6
9
 
7
10
  type DoraRating = 'elite' | 'high' | 'medium' | 'low';
@@ -91,7 +94,7 @@ declare class MockDoraMetricsClient implements DoraMetricsApi {
91
94
  getHistory(_projectSlug: string, env: DoraEnvironment, _days: number): Promise<DoraHistoryPoint[]>;
92
95
  }
93
96
 
94
- declare function DoraMetricsContent(): React.JSX.Element | null;
97
+ declare function DoraMetricsContent(): react_jsx_runtime.JSX.Element | null;
95
98
 
96
99
  export { DoraMetricsClient, DoraMetricsContent, MockDoraMetricsClient, doraMetricsApiRef };
97
100
  export type { DoraEnvironment, DoraMetricValue, DoraMetrics, DoraMetricsApi, DoraRating, DoraTargets, PrDetail };
package/package.json CHANGED
@@ -1,19 +1,32 @@
1
1
  {
2
2
  "name": "@c2l2c/backstage-plugin-dora-metrics",
3
- "version": "0.3.0",
3
+ "version": "0.3.3",
4
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
5
  "main": "dist/index.cjs.js",
6
6
  "module": "dist/index.esm.js",
7
7
  "types": "dist/index.d.ts",
8
8
  "backstage": {
9
- "role": "frontend-plugin",
10
- "configSchema": "config.d.ts"
9
+ "role": "frontend-plugin"
11
10
  },
11
+ "configSchema": "config.d.ts",
12
12
  "exports": {
13
13
  ".": "./src/index.ts",
14
14
  "./alpha": "./src/alpha.ts",
15
15
  "./package.json": "./package.json"
16
16
  },
17
+ "publishConfig": {
18
+ "exports": {
19
+ ".": {
20
+ "types": "./dist/index.d.ts",
21
+ "default": "./dist/index.esm.js"
22
+ },
23
+ "./alpha": {
24
+ "types": "./dist/alpha.d.ts",
25
+ "default": "./dist/alpha.esm.js"
26
+ },
27
+ "./package.json": "./package.json"
28
+ }
29
+ },
17
30
  "files": [
18
31
  "dist",
19
32
  "config.d.ts",
@@ -54,17 +67,23 @@
54
67
  "@backstage/config": "^1.3.2",
55
68
  "@backstage/core-components": "^0.18.7",
56
69
  "@backstage/core-plugin-api": "^1.12.3",
57
- "@backstage/frontend-plugin-api": "^0.9.5",
70
+ "@backstage/frontend-plugin-api": "^0.15.1",
58
71
  "@backstage/plugin-catalog-react": "^2.0.0",
72
+ "@material-ui/core": "^4.12.4",
59
73
  "@radix-ui/react-select": "^2.2.6",
60
- "lucide-react": "^0.577.0"
74
+ "lucide-react": "^1.7.0"
61
75
  },
62
76
  "devDependencies": {
63
- "@backstage/cli": "^0.35.4",
77
+ "@backstage/cli": "^0.36.0",
78
+ "@backstage/cli-defaults": "^0.1.0",
79
+ "@types/react": "^18",
64
80
  "jest": "^30",
65
81
  "jest-environment-jsdom": "^30"
66
82
  },
67
83
  "peerDependencies": {
68
84
  "react": "^17.0.0 || ^18.0.0"
85
+ },
86
+ "engines": {
87
+ "node": ">=20"
69
88
  }
70
89
  }