Skip to content

Commit 51181e2

Browse files
authored
refactor: add eslint rules (#470)
1 parent 2be9817 commit 51181e2

9 files changed

Lines changed: 101 additions & 91 deletions

File tree

packages/nx-plugin/.eslintrc.json

Lines changed: 33 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,35 @@
11
{
2-
"extends": ["./code-pushup.eslintrc.json"],
3-
// temporarily disable failing rules so `nx lint` passes
4-
// number of errors/warnings per rule recorded at Tue Nov 28 2023 15:38:26 GMT+0100 (Central European Standard Time)
5-
"rules": {
6-
"no-param-reassign": "off", // 4 errors
7-
"@typescript-eslint/no-unsafe-assignment": "off", // 14 errors
8-
"@typescript-eslint/no-unsafe-member-access": "off", // 16 errors
9-
"@typescript-eslint/no-unsafe-return": "off", // 2 errors
10-
"@typescript-eslint/require-await": "off", // 1 error
11-
"n/no-sync": "off", // 3 warnings
12-
"sonarjs/no-duplicate-string": "off", // 1 warning
13-
"unicorn/prefer-module": "off" // 3 warnings
14-
}
2+
"extends": ["../../.eslintrc.json"],
3+
"ignorePatterns": ["!**/*"],
4+
"overrides": [
5+
{
6+
"files": ["*.ts", "*.tsx", "*.js", "*.jsx"],
7+
"rules": {}
8+
},
9+
{
10+
"files": ["*.ts", "*.tsx"],
11+
"parserOptions": {
12+
"project": ["packages/nx-plugin/tsconfig.*?.json"]
13+
},
14+
"rules": {}
15+
},
16+
{
17+
"files": ["*.js", "*.jsx"],
18+
"rules": {}
19+
},
20+
{
21+
"files": ["*.json"],
22+
"parser": "jsonc-eslint-parser",
23+
"rules": {
24+
"@nx/dependency-checks": "error"
25+
}
26+
},
27+
{
28+
"files": ["./package.json", "./generators.json"],
29+
"parser": "jsonc-eslint-parser",
30+
"rules": {
31+
"@nx/nx-plugin-checks": "error"
32+
}
33+
}
34+
]
1535
}

packages/nx-plugin/code-pushup.eslintrc.json

Lines changed: 0 additions & 35 deletions
This file was deleted.

packages/nx-plugin/package.json

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,9 @@
44
"license": "MIT",
55
"dependencies": {
66
"@nx/devkit": "^17.1.3",
7-
"tslib": "2.6.2"
7+
"tslib": "2.6.2",
8+
"@code-pushup/utils": "*",
9+
"nx": "17.1.3"
810
},
911
"type": "commonjs",
1012
"main": "./src/index.js",

packages/nx-plugin/src/generators/configuration/generator.ts

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,8 @@ import {
55
readProjectConfiguration,
66
updateProjectConfiguration,
77
} from '@nx/devkit';
8-
import { join } from 'node:path';
8+
import { dirname, join } from 'node:path';
9+
import { fileURLToPath } from 'node:url';
910
import { AddToProjectGeneratorSchema } from './schema';
1011

1112
export async function addToProjectGenerator(
@@ -21,7 +22,12 @@ export async function addToProjectGenerator(
2122
return;
2223
}
2324

24-
generateFiles(tree, join(__dirname, 'files'), root, options);
25+
generateFiles(
26+
tree,
27+
join(fileURLToPath(dirname(import.meta.url)), 'files'),
28+
root,
29+
options,
30+
);
2531

2632
updateProjectConfiguration(tree, options.project, {
2733
...projectConfiguration,

packages/nx-plugin/src/generators/init/generator.integration.test.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -25,8 +25,8 @@ describe('init generator', () => {
2525
tree = createTreeWithEmptyWorkspace();
2626
});
2727

28-
it('should run successfully', async () => {
29-
await initGenerator(tree, options);
28+
it('should run successfully', () => {
29+
initGenerator(tree, options);
3030
// nx.json
3131
const targetDefaults = readNxJson(tree)!.targetDefaults!;
3232
expect(targetDefaults).toHaveProperty(cpTargetName);
@@ -43,8 +43,8 @@ describe('init generator', () => {
4343
).toHaveLength(devDependencyNames.length);
4444
});
4545

46-
it('should skip packageJson', async () => {
47-
await initGenerator(tree, { ...options, skipPackageJson: true });
46+
it('should skip packageJson', () => {
47+
initGenerator(tree, { ...options, skipPackageJson: true });
4848
// nx.json
4949
const targetDefaults = readNxJson(tree)!.targetDefaults!;
5050
expect(targetDefaults).toHaveProperty(cpTargetName);

packages/nx-plugin/src/generators/init/generator.ts

Lines changed: 33 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -10,42 +10,54 @@ import {
1010
updateJson,
1111
updateNxJson,
1212
} from '@nx/devkit';
13+
import { PackageJson } from 'nx/src/utils/package-json';
1314
import {
14-
cpuCliVersion,
15-
cpuModelVersion,
16-
cpuNxPluginVersion,
17-
cpuUtilsVersion,
15+
cpCliVersion,
16+
cpModelVersion,
17+
cpNxPluginVersion,
18+
cpUtilsVersion,
1819
} from '../../utils/versions';
1920
import { InitGeneratorSchema } from './schema';
2021

22+
const nxPluginPackageName = '@code-pushup/nx-plugin';
23+
2124
function checkDependenciesInstalled(host: Tree) {
22-
const packageJson = readJson(host, 'package.json');
25+
const packageJson = readJson<PackageJson>(host, 'package.json');
2326
const devDependencies: Record<string, string> = {};
2427
const dependencies = {};
25-
packageJson.dependencies = packageJson.dependencies || {};
26-
packageJson.devDependencies = packageJson.devDependencies || {};
28+
packageJson.dependencies = packageJson.dependencies ?? {};
29+
packageJson.devDependencies = packageJson.devDependencies ?? {};
2730

2831
// base deps
29-
devDependencies['@code-pushup/nx-plugin'] = cpuNxPluginVersion;
30-
devDependencies['@code-pushup/models'] = cpuModelVersion;
31-
devDependencies['@code-pushup/utils'] = cpuUtilsVersion;
32-
devDependencies['@code-pushup/cli'] = cpuCliVersion;
32+
devDependencies[nxPluginPackageName] = cpNxPluginVersion;
33+
devDependencies['@code-pushup/models'] = cpModelVersion;
34+
devDependencies['@code-pushup/utils'] = cpUtilsVersion;
35+
devDependencies['@code-pushup/cli'] = cpCliVersion;
3336

3437
return addDependenciesToPackageJson(host, dependencies, devDependencies);
3538
}
3639

3740
function moveToDevDependencies(tree: Tree) {
38-
updateJson(tree, 'package.json', packageJson => {
39-
packageJson.dependencies = packageJson.dependencies || {};
40-
packageJson.devDependencies = packageJson.devDependencies || {};
41+
updateJson(tree, 'package.json', (packageJson: PackageJson) => {
42+
const newPackageJson: PackageJson = {
43+
dependencies: {},
44+
devDependencies: {},
45+
...packageJson,
46+
};
4147

42-
if (packageJson.dependencies['@code-pushup/nx-plugin']) {
43-
packageJson.devDependencies['@code-pushup/nx-plugin'] =
44-
packageJson.dependencies['@code-pushup/nx-plugin'];
45-
delete packageJson.dependencies['@code-pushup/nx-plugin'];
48+
if (newPackageJson.dependencies?.[nxPluginPackageName] !== undefined) {
49+
const { [nxPluginPackageName]: version, ...dependencies } =
50+
newPackageJson.dependencies;
51+
return {
52+
...newPackageJson,
53+
dependencies,
54+
devDependencies: {
55+
...newPackageJson.devDependencies,
56+
[nxPluginPackageName]: version,
57+
},
58+
};
4659
}
47-
48-
return packageJson;
60+
return newPackageJson;
4961
});
5062
}
5163

@@ -63,7 +75,7 @@ function updateNxJsonConfig(tree: Tree) {
6375
updateNxJson(tree, nxJson);
6476
}
6577

66-
export async function initGenerator(tree: Tree, schema: InitGeneratorSchema) {
78+
export function initGenerator(tree: Tree, schema: InitGeneratorSchema) {
6779
if (!schema.skipPackageJson) {
6880
moveToDevDependencies(tree);
6981
}

packages/nx-plugin/src/index.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
export * from './utils/versions';
22
export { type InitGeneratorSchema } from './generators/init/schema';
3-
export { initGenerator } from './generators/init/generator';
3+
export { initGenerator, initSchematic } from './generators/init/generator';
Lines changed: 18 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,25 @@
1-
import { readFileSync } from 'node:fs';
2-
import { join } from 'node:path';
1+
import { dirname, join } from 'node:path';
2+
import { fileURLToPath } from 'node:url';
3+
import type { PackageJson } from 'nx/src/utils/package-json';
4+
import { readJsonFile } from '@code-pushup/utils';
35

4-
const workspaceRoot = join(__dirname, '../../');
5-
const projectsFolder = join(__dirname, '../../../');
6+
const workspaceRoot = join(fileURLToPath(dirname(import.meta.url)), '../../');
7+
const projectsFolder = join(
8+
fileURLToPath(dirname(import.meta.url)),
9+
'../../../',
10+
);
611

7-
export const cpuNxPluginVersion = loadPackageJson(workspaceRoot).version;
8-
export const cpuModelVersion = loadPackageJson(
9-
join(projectsFolder, 'cli'),
12+
export const cpNxPluginVersion = (await loadPackageJson(workspaceRoot)).version;
13+
export const cpModelVersion = (
14+
await loadPackageJson(join(projectsFolder, 'cli'))
1015
).version;
11-
export const cpuUtilsVersion = loadPackageJson(
12-
join(projectsFolder, 'utils'),
16+
export const cpUtilsVersion = (
17+
await loadPackageJson(join(projectsFolder, 'utils'))
1318
).version;
14-
export const cpuCliVersion = loadPackageJson(
15-
join(projectsFolder, 'models'),
19+
export const cpCliVersion = (
20+
await loadPackageJson(join(projectsFolder, 'models'))
1621
).version;
1722

18-
function loadPackageJson(folderPath: string) {
19-
return JSON.parse(readFileSync(join(folderPath, 'package.json')).toString());
23+
async function loadPackageJson(folderPath: string): Promise<PackageJson> {
24+
return readJsonFile<PackageJson>(join(folderPath, 'package.json'));
2025
}

packages/nx-plugin/tsconfig.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"extends": "../../tsconfig.base.json",
33
"compilerOptions": {
4-
"module": "commonjs"
4+
"module": "ESNext"
55
},
66
"files": [],
77
"include": [],

0 commit comments

Comments
 (0)