Skip to content

Commit 80e35cc

Browse files
authored
deps(lint): switch to biome (#144)
* deps(lint): switch to biome * style(tests): format edge * chore: lint and format in pre-commit * chore: rearrange imports * chore: fix coverage and ignores * deps: bump package versions * ci: drop 18, add 24 * chore: rename test files * deps: fixed jest version to 0.30.3 Broken due to: jestjs/jest#15951 * ci: drop node 20 support due to pnpm v11
1 parent 5b99c5b commit 80e35cc

31 files changed

Lines changed: 1131 additions & 2659 deletions

‎.github/workflows/pipeline.yml‎

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -17,15 +17,15 @@ jobs:
1717
runs-on: ubuntu-latest
1818
strategy:
1919
matrix:
20-
node-version: [22.x, 20.x, 18.x]
20+
node-version: [22.x, 24.x]
2121
fail-fast: true
2222

2323
steps:
2424
- name: Checkout code
25-
uses: actions/checkout@v2
25+
uses: actions/checkout@v6
2626

2727
- name: Set up Node.js
28-
uses: actions/setup-node@v2
28+
uses: actions/setup-node@v6
2929
with:
3030
node-version: ${{ matrix.node-version }}
3131

@@ -35,9 +35,12 @@ jobs:
3535
- name: Install dependencies
3636
run: pnpm install
3737

38-
- name: Run ESLint
38+
- name: Run lint
3939
run: pnpm lint
4040

41+
- name: Run format
42+
run: pnpm format
43+
4144
- name: Run tests with coverage
4245
run: pnpm test --coverage
4346

‎.husky/pre-commit‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
npm run lint
1+
pnpm lint --write && pnpm format --write

‎.mergify.yml‎

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

‎.prettierrc‎

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

‎.vscode/settings.json‎

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
{
2+
"editor.codeActionsOnSave": {
3+
"source.organizeImports.biome": "always",
4+
"source.fixAll.biome": "always"
5+
}
6+
}

‎biome.json‎

Lines changed: 105 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,105 @@
1+
{
2+
"$schema": "https://biomejs.dev/schemas/2.4.15/schema.json",
3+
"vcs": { "enabled": true, "clientKind": "git", "useIgnoreFile": true },
4+
"files": { "includes": ["**", "!!**/dist", "!tests/edge/broken.js"] },
5+
"formatter": { "enabled": true, "indentStyle": "space" },
6+
"linter": {
7+
"enabled": true,
8+
"rules": {
9+
"recommended": false,
10+
"complexity": {
11+
"noAdjacentSpacesInRegex": "error",
12+
"noArguments": "error",
13+
"noExtraBooleanCast": "error",
14+
"noUselessCatch": "error",
15+
"noUselessEscapeInRegex": "error",
16+
"noUselessTypeConstraint": "error"
17+
},
18+
"correctness": {
19+
"noConstAssign": "off",
20+
"noConstantCondition": "error",
21+
"noEmptyCharacterClassInRegex": "error",
22+
"noEmptyPattern": "error",
23+
"noGlobalObjectCalls": "off",
24+
"noInvalidBuiltinInstantiation": "off",
25+
"noInvalidConstructorSuper": "off",
26+
"noNonoctalDecimalEscape": "error",
27+
"noPrecisionLoss": "error",
28+
"noSelfAssign": "error",
29+
"noSetterReturn": "off",
30+
"noSwitchDeclarations": "error",
31+
"noUndeclaredVariables": "off",
32+
"noUnreachable": "off",
33+
"noUnreachableSuper": "off",
34+
"noUnsafeFinally": "error",
35+
"noUnsafeOptionalChaining": "error",
36+
"noUnusedLabels": "error",
37+
"noUnusedPrivateClassMembers": "error",
38+
"noUnusedVariables": "error",
39+
"useIsNan": "error",
40+
"useValidForDirection": "error",
41+
"useValidTypeof": "error",
42+
"useYield": "error"
43+
},
44+
"performance": { "noImgElement": "off" },
45+
"style": {
46+
"noCommonJs": "error",
47+
"noNamespace": "error",
48+
"useArrayLiterals": "error",
49+
"useAsConstAssertion": "error",
50+
"useBlockStatements": "off",
51+
"useConsistentArrowReturn": "off",
52+
"useConst": "error"
53+
},
54+
"suspicious": {
55+
"noAsyncPromiseExecutor": "error",
56+
"noCatchAssign": "error",
57+
"noClassAssign": "off",
58+
"noCompareNegZero": "error",
59+
"noConstantBinaryExpressions": "error",
60+
"noControlCharactersInRegex": "error",
61+
"noDebugger": "error",
62+
"noDuplicateCase": "error",
63+
"noDuplicateClassMembers": "off",
64+
"noDuplicateElseIf": "error",
65+
"noDuplicateObjectKeys": "off",
66+
"noDuplicateParameters": "off",
67+
"noEmptyBlockStatements": "error",
68+
"noExplicitAny": "error",
69+
"noExtraNonNullAssertion": "error",
70+
"noFallthroughSwitchClause": "error",
71+
"noFunctionAssign": "off",
72+
"noGlobalAssign": "error",
73+
"noImportAssign": "off",
74+
"noIrregularWhitespace": "error",
75+
"noMisleadingCharacterClass": "error",
76+
"noMisleadingInstantiator": "error",
77+
"noNonNullAssertedOptionalChain": "error",
78+
"noPrototypeBuiltins": "error",
79+
"noRedeclare": "off",
80+
"noShadowRestrictedNames": "error",
81+
"noSparseArray": "error",
82+
"noUnassignedVariables": "error",
83+
"noUnsafeDeclarationMerging": "error",
84+
"noUnsafeNegation": "off",
85+
"noUnusedExpressions": "off",
86+
"noUselessRegexBackrefs": "error",
87+
"noVar": "error",
88+
"noWith": "off",
89+
"useGetterReturn": "off",
90+
"useNamespaceKeyword": "error"
91+
}
92+
}
93+
},
94+
"javascript": {
95+
"formatter": { "quoteStyle": "double" },
96+
"globals": ["exports"]
97+
},
98+
"overrides": [
99+
{ "includes": ["**/*.ts", "**/*.tsx"], "javascript": { "globals": [] } }
100+
],
101+
"assist": {
102+
"enabled": true,
103+
"actions": { "source": { "organizeImports": "on" } }
104+
}
105+
}

‎commitlint.config.ts‎

Lines changed: 26 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,29 +1,33 @@
11
export default {
22
rules: {
3-
'body-leading-blank': [1, 'always'],
4-
'footer-leading-blank': [1, 'always'],
5-
'header-max-length': [2, 'always', 90],
6-
'scope-case': [2, 'always', 'lower-case'],
7-
'subject-case': [2, 'never', ['sentence-case', 'start-case', 'pascal-case', 'upper-case']],
8-
'subject-empty': [2, 'never'],
9-
'subject-full-stop': [2, 'never', '.'],
10-
'type-case': [2, 'always', 'lower-case'],
11-
'type-empty': [2, 'never'],
12-
'type-enum': [
3+
"body-leading-blank": [1, "always"],
4+
"footer-leading-blank": [1, "always"],
5+
"header-max-length": [2, "always", 90],
6+
"scope-case": [2, "always", "lower-case"],
7+
"subject-case": [
138
2,
14-
'always',
9+
"never",
10+
["sentence-case", "start-case", "pascal-case", "upper-case"],
11+
],
12+
"subject-empty": [2, "never"],
13+
"subject-full-stop": [2, "never", "."],
14+
"type-case": [2, "always", "lower-case"],
15+
"type-empty": [2, "never"],
16+
"type-enum": [
17+
2,
18+
"always",
1519
[
16-
'build',
17-
'chore',
18-
'ci',
19-
'deps',
20-
'docs',
21-
'feat',
22-
'fix',
23-
'refactor',
24-
'revert',
25-
'style',
26-
'test',
20+
"build",
21+
"chore",
22+
"ci",
23+
"deps",
24+
"docs",
25+
"feat",
26+
"fix",
27+
"refactor",
28+
"revert",
29+
"style",
30+
"test",
2731
],
2832
],
2933
},

‎eslint.config.mjs‎

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

‎jest.config.ts‎

Lines changed: 17 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,27 @@
1-
import type { Config } from 'jest';
1+
import type { Config } from "jest";
22

33
const config: Config = {
4-
preset: 'ts-jest',
5-
testEnvironment: 'node',
4+
preset: "ts-jest",
5+
testEnvironment: "node",
66
maxWorkers: 1,
7-
modulePathIgnorePatterns: ['<rootDir>/dist/'],
7+
modulePathIgnorePatterns: ["<rootDir>/dist/"],
88
forceExit: false,
99
detectOpenHandles: true,
10-
testMatch: ['**/*.test.js', '**/*.test.cjs', '**/*.test.mjs', '**/*.test.ts'],
10+
testMatch: ["**/*.test.js", "**/*.test.cjs", "**/*.test.mjs", "**/*.test.ts"],
1111
transform: {
12-
'^.+\\.(ts)$': 'ts-jest',
12+
"^.+\\.(ts)$": "ts-jest",
1313
},
14-
moduleFileExtensions: ['ts', 'tsx', 'js', 'jsx', 'json', 'node', 'cjs', 'mjs'],
15-
collectCoverageFrom: ['src/**/*.ts'],
14+
moduleFileExtensions: [
15+
"ts",
16+
"tsx",
17+
"js",
18+
"jsx",
19+
"json",
20+
"node",
21+
"cjs",
22+
"mjs",
23+
],
24+
collectCoverageFrom: ["src/**/*.ts"],
1625
};
1726

1827
export default config;

0 commit comments

Comments
 (0)