Skip to content

Commit d6750e6

Browse files
committed
Changes made by OpsLevel coding agent
1 parent bc48a5a commit d6750e6

6 files changed

Lines changed: 92 additions & 33 deletions

File tree

.eslintrc.js

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,19 @@ const cliConfig = require('@backstage/cli/config/eslint-factory')(__dirname);
22

33
module.exports = {
44
...cliConfig,
5+
"parser": "@typescript-eslint/parser",
6+
"parserOptions": {
7+
"ecmaVersion": 2020,
8+
"sourceType": "module",
9+
"ecmaFeatures": {
10+
"jsx": true
11+
}
12+
},
513
"extends": [
614
"airbnb",
715
"airbnb/hooks",
816
'eslint:recommended',
17+
"plugin:@typescript-eslint/recommended",
918
"plugin:eslint-comments/recommended",
1019
'plugin:import/recommended',
1120
"plugin:import/typescript",
@@ -20,7 +29,7 @@ module.exports = {
2029
'jsx-a11y',
2130
"react",
2231
"prettier",
23-
'@typescript-eslint/eslint-plugin',
32+
'@typescript-eslint',
2433
],
2534
rules: {
2635
...cliConfig.rules,

jest.config.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ const config = {
33
rootDir: "../../../..",
44
setupFiles: ["jest-canvas-mock"],
55
setupFilesAfterEnv: [
6-
"<rootDir>/test/textEncoder.js",
6+
"<rootDir>/test/textEncoder.ts",
77
"<rootDir>/test/jestImports.ts",
88
"<rootDir>/test/resizeObservers.ts",
99
],
Original file line numberDiff line numberDiff line change
@@ -1,55 +1,69 @@
1-
// @ts-nocheck
1+
interface LevelColor {
2+
text: string;
3+
border: string;
4+
primary: string;
5+
secondary: string;
6+
}
27

3-
const beginner = {
8+
const beginner: LevelColor = {
49
text: "#595959",
510
border: "#D9D9D9",
611
primary: "#F5F5F5",
712
secondary: "#BFBFBF",
813
};
914

10-
const bronze = {
15+
const bronze: LevelColor = {
1116
text: "#FA541C",
1217
border: "#FFBB96",
1318
primary: "#FFF2E8",
1419
secondary: "#FA541C",
1520
};
1621

17-
const silver = {
22+
const silver: LevelColor = {
1823
text: "#1890FF",
1924
border: "#91D5FF",
2025
primary: "#E6F7FF",
2126
secondary: "#40A9FF",
2227
};
2328

24-
const gold = {
29+
const gold: LevelColor = {
2530
text: "#FAAD14",
2631
border: "#FFE58F",
2732
primary: "#FFFBE6",
2833
secondary: "#FFC53D",
2934
};
3035

31-
const platinum = {
36+
const platinum: LevelColor = {
3237
text: "#13C2C2",
3338
border: "#87E8DE",
3439
primary: "#E6FFFB",
3540
secondary: "#13C2C2",
3641
};
3742

38-
const titanium = {
43+
const titanium: LevelColor = {
3944
text: "#722ED1",
4045
border: "#D3ADF7",
4146
primary: "#F9F0FF",
4247
secondary: "#722ED1",
4348
};
4449

45-
const diamond = {
50+
const diamond: LevelColor = {
4651
text: "#2F54EB",
4752
border: "#ADC6FF",
4853
primary: "#F0F5FF",
4954
secondary: "#2F54EB",
5055
};
5156

52-
const ColorMap = {
57+
type ColorName =
58+
| "beginner"
59+
| "bronze"
60+
| "silver"
61+
| "gold"
62+
| "platinum"
63+
| "titanium"
64+
| "diamond";
65+
66+
const ColorMap: Record<ColorName, LevelColor> = {
5367
beginner,
5468
bronze,
5569
silver,
@@ -59,8 +73,8 @@ const ColorMap = {
5973
diamond,
6074
};
6175

62-
const availableColors = (totalLevels) => {
63-
const levelColors = {
76+
const availableColors = (totalLevels: number): ColorName[] => {
77+
const levelColors: Record<ColorName, boolean> = {
6478
beginner: true,
6579
bronze: totalLevels > 3,
6680
silver: totalLevels > 2,
@@ -70,17 +84,22 @@ const availableColors = (totalLevels) => {
7084
diamond: totalLevels > 6,
7185
};
7286

73-
return Object.keys(levelColors).filter((c) => levelColors[c]);
87+
return Object.keys(levelColors).filter(
88+
(c) => levelColors[c as ColorName]
89+
) as ColorName[];
7490
};
7591

7692
// `levelPosition` refers to the level's position relative the other levels in the account. This is not always the
7793
// level's index since it's possible for gaps in level indexes to exist. e.g. for an account
7894
// with levels with indexes 0,1,2,4,5, the corresponding levelPositions would be 0,1,2,3,4
79-
export const levelColor = (totalLevels, levelPosition) => {
95+
export const levelColor = (
96+
totalLevels: number,
97+
levelPosition: number
98+
): LevelColor => {
8099
const filteredColors = availableColors(totalLevels);
81100
return ColorMap[filteredColors[levelPosition]];
82101
};
83102

84-
export const levelColorPalette = (totalLevels) => {
103+
export const levelColorPalette = (totalLevels: number): LevelColor[] => {
85104
return availableColors(totalLevels).map((color) => ColorMap[color]);
86105
};
Lines changed: 45 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,42 @@
1-
// @ts-nocheck
2-
31
import { escape } from "lodash";
2+
import { Level } from "../types/OpsLevelData";
3+
4+
interface LevelCounter {
5+
[levelName: string]: number;
6+
}
7+
8+
interface ServiceLevelCount {
9+
level: {
10+
name: string;
11+
};
12+
serviceCount: number;
13+
}
14+
15+
interface CategoryLevelCount {
16+
category: {
17+
name: string;
18+
} | null;
19+
level: {
20+
name: string;
21+
};
22+
serviceCount: number;
23+
}
24+
25+
interface CategoryAggregate {
26+
[categoryName: string]: LevelCounter[];
27+
}
428

5-
export const mountInitialLevelArray = (levels) => {
29+
export const mountInitialLevelArray = (levels: Level[]): LevelCounter[] => {
630
return levels.map((level) => {
7-
return { [escape(level.name)]: 0 };
31+
return { [escape(level.name || "")]: 0 };
832
});
933
};
1034

1135
export const updateCategoryAggregateWithLevelCounter = (
12-
aggregate,
13-
level,
14-
serviceCounter,
15-
) => {
36+
aggregate: LevelCounter[],
37+
level: string,
38+
serviceCounter: number
39+
): LevelCounter[] => {
1640
return aggregate.map((obj) => {
1741
const currentKey = Object.keys(obj)[0];
1842
if (level === currentKey) {
@@ -22,17 +46,23 @@ export const updateCategoryAggregateWithLevelCounter = (
2246
});
2347
};
2448

25-
export const servicesByLevel = (levels, servicesLevelCount) => {
49+
export const servicesByLevel = (
50+
levels: Level[],
51+
servicesLevelCount: ServiceLevelCount[]
52+
): LevelCounter[] => {
2653
return levels.map((level) => {
2754
const serviceLevelCount = servicesLevelCount.find(
28-
(entry) => entry.level.name === level.name,
55+
(entry) => entry.level.name === level.name
2956
);
3057
// serviceLevelCount is undefined when no services exist at that level
31-
return { [escape(level.name)]: serviceLevelCount?.serviceCount || 0 };
58+
return { [escape(level.name || "")]: serviceLevelCount?.serviceCount || 0 };
3259
});
3360
};
3461

35-
export const levelsByCategory = (levels, categoryLevelCounts) => {
62+
export const levelsByCategory = (
63+
levels: Level[],
64+
categoryLevelCounts: CategoryLevelCount[]
65+
): CategoryAggregate => {
3666
const initialLevelArray = mountInitialLevelArray(levels);
3767

3868
return categoryLevelCounts.reduce((acc, categoryLevel) => {
@@ -45,17 +75,17 @@ export const levelsByCategory = (levels, categoryLevelCounts) => {
4575
const newCategoryAggregate = updateCategoryAggregateWithLevelCounter(
4676
categoryAggregate,
4777
levelName,
48-
categoryLevel.serviceCount,
78+
categoryLevel.serviceCount
4979
);
5080

5181
return {
5282
...acc,
5383
[currentCategory]: newCategoryAggregate,
5484
};
55-
}, {});
85+
}, {} as CategoryAggregate);
5686
};
5787

58-
export const fontFamily = [
88+
export const fontFamily: string = [
5989
"-apple-system",
6090
"BlinkMacSystemFont",
6191
"Segoe U",
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
// eslint-disable-next-line no-restricted-imports -- Test configuration overrides
2-
const { TextEncoder, TextDecoder } = require("util");
2+
import { TextEncoder, TextDecoder } from "util";
33

44
// jsdom does not bundle TextEncoder out of the box despite all browsers doing so.
55
// https://stackoverflow.com/questions/68468203/why-am-i-getting-textencoder-is-not-defined-in-jest

tsconfig.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,9 @@
44
"jsx": "react",
55
"outDir": "dist-types",
66
"rootDir": ".",
7+
"allowJs": true,
78
"checkJs": true,
89
},
910
"types": ["node", "jest", "@testing-library/jest-dom"],
10-
"include": ["src", "test/jestImports.ts"],
11+
"include": ["src", "test"],
1112
}

0 commit comments

Comments
 (0)