Skip to content

Commit ed1efd8

Browse files
committed
feat: more work on the configs
Signed-off-by: prisis <[email protected]>
1 parent cb29b53 commit ed1efd8

File tree

15 files changed

+591
-303
lines changed

15 files changed

+591
-303
lines changed

eslint.config.js

+8-2
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,9 @@
1-
import { createConfig } from "./packages/eslint-config/dist/index.mjs"
1+
import { createConfig } from "./packages/eslint-config/dist/index.mjs";
22

3-
export default createConfig({});
3+
export default createConfig({
4+
zod: true,
5+
unocss: true,
6+
ignores: [
7+
"eslint.config.js"
8+
]
9+
});

packages/eslint-config/README.md

+1-14
Original file line numberDiff line numberDiff line change
@@ -485,7 +485,6 @@ The following esLint plugins enforce good coding practices:
485485
- [eslint-plugin-array-func](https://github.com/freaktechnik/eslint-plugin-array-func)
486486
- [eslint-plugin-eslint-comments](https://github.com/mysticatea/eslint-plugin-eslint-comments)
487487
- [eslint-plugin-promise](https://github.com/xjamundx/eslint-plugin-promise)
488-
- [eslint-plugin-no-loops](https://github.com/buildo/eslint-plugin-no-loops)
489488
- [eslint-plugin-simple-import-sort](https://github.com/lydell/eslint-plugin-simple-import-sort)
490489
- [eslint-plugin-es-x](https://github.com/eslint-community/eslint-plugin-es-x)
491490

@@ -504,18 +503,10 @@ These plugins add code security rules to esLint:
504503
The following test plugins are supported:
505504

506505
- [eslint-plugin-ava](https://github.com/avajs/eslint-plugin-ava)
507-
- You need to install `eslint-plugin-ava` and `ava` to use this plugin.
508-
- [eslint-plugin-jest](https://github.com/jest-community/eslint-plugin-jest)
509-
- You need to install `eslint-plugin-jest` and `jest` to use this plugin.
510-
- [eslint-plugin-jest-async](https://www.npmjs.com/package/eslint-plugin-jest-async)
511-
- You need to install `eslint-plugin-jest-async` and `jest` to use this plugin.
512-
- [eslint-plugin-cypress](https://github.com/cypress-io/eslint-plugin-cypress)
513-
- You need to install `eslint-plugin-cypress` and `cypress` to use this plugin.
514-
506+
- You need to install `@vitest/eslint-plugin` and `vitest` to use this plugin.
515507
### List of used plugins
516508

517509
- eslint-plugin-security
518-
- @rushstack/eslint-plugin-security
519510
- @typescript-eslint/eslint-plugin
520511
- eslint-plugin-antfu
521512
- eslint-plugin-compat
@@ -525,11 +516,8 @@ The following test plugins are supported:
525516
- eslint-plugin-i
526517
- eslint-plugin-jsonc
527518
- eslint-plugin-markdown
528-
- eslint-plugin-mdx
529-
- eslint-plugin-no-loops
530519
- eslint-plugin-no-only-tests
531520
- eslint-plugin-no-secrets
532-
- eslint-plugin-no-use-extend-native
533521
- eslint-plugin-promise
534522
- eslint-plugin-regexp
535523
- eslint-plugin-simple-import-sort
@@ -635,7 +623,6 @@ If you would like to help take a look at the [list of issues](https://github.com
635623
- [Daniel Bannert](https://github.com/prisis)
636624
- [All Contributors](https://github.com/anolilab/javascript-style-guide/graphs/contributors)
637625
- [eslint-config-airbnb](https://www.npmjs.com/package/eslint-config-airbnb)
638-
- [eslint-config-alloy](https://github.com/AlloyTeam/eslint-config-alloy)
639626
- [eslint-config-canonical](https://github.com/gajus/eslint-config-canonical)
640627

641628
## License

packages/eslint-config/__fixtures__/old-config/package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,6 @@
33
"devDependencies": {
44
"@anolilab/eslint-config": "file:../../dist",
55
"eslint": "latest",
6-
"eslint-plugin-import": "npm:eslint-plugin-i@2.28.1"
6+
"eslint-plugin-import": "npm:eslint-plugin-i@2.29.1"
77
}
88
}

packages/eslint-config/bin/generate-eslint-cofig.js

-3
This file was deleted.

packages/eslint-config/package.json

+38-51
Original file line numberDiff line numberDiff line change
@@ -40,14 +40,12 @@
4040
"eslint-plugin-jsx-a11y",
4141
"eslint-plugin-n",
4242
"eslint-plugin-no-unsanitized",
43-
"eslint-plugin-prefer-object-spread",
4443
"eslint-plugin-react",
4544
"eslint-plugin-react-hooks",
4645
"eslint-plugin-storybook",
4746
"eslint-plugin-tailwindcss",
4847
"eslint-plugin-testing-library",
4948
"eslint-plugin-tsdoc",
50-
"eslint-plugin-etc",
5149
"eslint-plugin-you-dont-need-lodash-underscore"
5250
],
5351
"homepage": "https://anolilab.com/nodejs/packages/eslint-config",
@@ -71,6 +69,7 @@
7169
"name": "Daniel Bannert",
7270
"email": "[email protected]"
7371
},
72+
"sideEffects": false,
7473
"type": "module",
7574
"exports": {
7675
".": {
@@ -85,30 +84,28 @@
8584
},
8685
"./package.json": "./package.json"
8786
},
88-
"sideEffects": false,
8987
"main": "dist/index.cjs",
9088
"module": "dist/index.mjs",
9189
"types": "dist/index.d.ts",
92-
"bin": {
93-
"anolilab-eslint-config": "./bin/generate-eslint-cofig.js"
90+
"typesVersions": {
91+
">=5.0": {
92+
".": [
93+
"./dist/index.d.ts"
94+
]
95+
}
9496
},
9597
"files": [
96-
"bin/generate-eslint-cofig.js",
9798
"dist",
98-
"skip.js",
99-
"globals.js",
100-
"typescript-type-checking.js",
10199
"README.md",
102100
"CHANGELOG.md",
103101
"LICENSE.md"
104102
],
105103
"scripts": {
106-
"build:typegen": "tsx ./scripts/typegen.ts",
107104
"build": "packem build --development",
108105
"build:prod": "packem build --production",
106+
"build:typegen": "tsx ./scripts/typegen.ts",
109107
"clean": "rimraf node_modules dist",
110108
"debug:rules": "pnpm exec eslint-config-inspector --config ./debug-eslint.config.mjs",
111-
"preinstall": "tsx ./scripts/typegen.ts",
112109
"lint:attw": "attw --pack",
113110
"lint:prettier": "prettier --config=.prettierrc.cjs --check .",
114111
"lint:prettier:fix": "prettier --config=.prettierrc.cjs --write .",
@@ -118,24 +115,22 @@
118115
"test:watch": "vitest"
119116
},
120117
"dependencies": {
121-
"@eslint/compat": "^1.2.4",
122118
"@antfu/install-pkg": "^0.5.0",
123119
"@babel/eslint-parser": "^7.25.9",
124120
"@babel/plugin-syntax-import-assertions": "^7.26.0",
125121
"@eslint-community/eslint-plugin-eslint-comments": "^4.4.1",
122+
"@eslint/compat": "^1.2.4",
126123
"@eslint/js": "^9.17.0",
127124
"@eslint/markdown": "^6.2.1",
128-
"@html-eslint/eslint-plugin": "^0.31.1",
129-
"@html-eslint/parser": "^0.31.0",
130-
"eslint-plugin-no-only-tests": "^3.3.0",
125+
"@html-eslint/eslint-plugin": "^0.32.0",
126+
"@html-eslint/parser": "^0.32.0",
131127
"@stylistic/eslint-plugin": "^2.12.1",
132128
"@stylistic/eslint-plugin-ts": "^2.12.1",
133-
"typescript-eslint": "^8.18.2",
134-
"@typescript-eslint/eslint-plugin": "^8.18.2",
135-
"@typescript-eslint/parser": "^8.18.2",
136-
"@visulima/package": "^3.2.1",
137-
"@visulima/tsconfig": "^1.1.3",
138-
"@vitest/eslint-plugin": "^1.1.21",
129+
"@typescript-eslint/eslint-plugin": "^8.19.0",
130+
"@typescript-eslint/parser": "^8.19.0",
131+
"@visulima/package": "^3.4.0",
132+
"@visulima/tsconfig": "^1.1.4",
133+
"@vitest/eslint-plugin": "^1.1.24",
139134
"confusing-browser-globals": "^1.0.11",
140135
"eslint-config-flat-gitignore": "^0.3.0",
141136
"eslint-flat-config-utils": "^0.4.0",
@@ -147,10 +142,13 @@
147142
"eslint-plugin-es-x": "^8.4.1",
148143
"eslint-plugin-html": "^8.1.2",
149144
"eslint-plugin-import-x": "^4.6.1",
145+
"eslint-plugin-jsdoc": "^50.6.1",
150146
"eslint-plugin-jsonc": "^2.18.2",
151147
"eslint-plugin-n": "^17.15.1",
148+
"eslint-plugin-no-only-tests": "^3.3.0",
152149
"eslint-plugin-no-secrets": "^2.1.1",
153-
"eslint-plugin-perfectionist": "^4.4.0",
150+
"eslint-plugin-no-unsanitized": "^4.1.2",
151+
"eslint-plugin-perfectionist": "^4.6.0",
154152
"eslint-plugin-promise": "^7.2.1",
155153
"eslint-plugin-regexp": "^2.7.0",
156154
"eslint-plugin-security": "^3.0.1",
@@ -165,46 +163,44 @@
165163
"parse-gitignore": "^2.0.0",
166164
"semver": "^7.6.3",
167165
"toml-eslint-parser": "^0.10.0",
166+
"typescript-eslint": "^8.19.0",
168167
"yaml-eslint-parser": "^1.2.3"
169168
},
170169
"devDependencies": {
171170
"@anolilab/prettier-config": "^5.0.14",
172171
"@anolilab/semantic-release-preset": "9.0.3",
173-
"@eslint-react/eslint-plugin": "^1.22.1",
174-
"@eslint/config-inspector": "^0.6.0",
172+
"@eslint-react/eslint-plugin": "^1.23.1",
173+
"@eslint/config-inspector": "^0.7.0",
175174
"@stylistic/eslint-plugin-migrate": "^2.12.1",
176175
"@testing-library/dom": "^10.4.0",
177176
"@total-typescript/ts-reset": "^0.6.1",
178177
"@types/confusing-browser-globals": "^1.0.3",
179178
"@types/eslint": "^9.6.1",
180179
"@types/eslint-plugin-tailwindcss": "^3.17.0",
181180
"@types/semver": "^7.5.8",
181+
"@unocss/eslint-plugin": "^0.65.3",
182182
"@visulima/packem": "^1.10.2",
183+
"astro-eslint-parser": "^1.1.0",
183184
"esbuild": "^0.24.2",
184185
"eslint": "^9.17.0",
185-
"eslint-find-rules": "^4.2.0",
186-
"eslint-plugin-etc": "^2.0.3",
186+
"eslint-plugin-astro": "^1.3.1",
187187
"eslint-plugin-format": "^0.1.3",
188-
"eslint-plugin-jsdoc": "^50.6.1",
189188
"eslint-plugin-jsx-a11y": "^6.10.2",
190-
"eslint-plugin-no-unsanitized": "^4.1.2",
191-
"eslint-plugin-prefer-object-spread": "^1.2.1",
192189
"eslint-plugin-react-hooks": "^5.1.0",
193190
"eslint-plugin-react-refresh": "^0.4.16",
194-
"eslint-plugin-storybook": "^0.11.1",
191+
"eslint-plugin-storybook": "^0.11.2",
195192
"eslint-plugin-tailwindcss": "^3.17.5",
196193
"eslint-plugin-testing-library": "^7.1.1",
194+
"eslint-plugin-tsdoc": "^0.2.17",
197195
"eslint-plugin-validate-jsx-nesting": "^0.1.1",
198196
"eslint-plugin-vitest": "^0.5.4",
199-
"@eslint-react/shared": "^1.22.1",
200-
"@eslint-react/tools": "^1.20.1",
201197
"eslint-plugin-you-dont-need-lodash-underscore": "^6.14.0",
202198
"eslint-plugin-zod": "^1.4.0",
203199
"eslint-typegen": "^0.3.2",
204200
"prettier": "^3.4.2",
205201
"react": "^19.0.0",
206202
"rimraf": "^6.0.1",
207-
"semantic-release": "^24.2.0",
203+
"semantic-release": "^24.2.1",
208204
"tsx": "^4.19.2",
209205
"type-fest": "^4.31.0",
210206
"typescript": "^5.7.2",
@@ -214,27 +210,28 @@
214210
"@babel/core": "^7.22.20",
215211
"@eslint-react/eslint-plugin": "^1.22.1",
216212
"@tanstack/eslint-plugin-query": "^4.34.1 || ^5.0.0",
213+
"@unocss/eslint-plugin": "^0.65.3",
214+
"astro-eslint-parser": "^1.1.0",
217215
"eslint": "^9.10.0",
216+
"eslint-plugin-astro": "^1.3.1",
218217
"eslint-plugin-format": ">=0.1.0",
219-
"eslint-plugin-jsdoc": "^46.8.2",
220218
"eslint-plugin-jsx-a11y": "^6.7.1",
221-
"eslint-plugin-no-unsanitized": "^4.0.2",
222219
"eslint-plugin-playwright": "^0.16.0 || ^0.18.0",
223-
"eslint-plugin-prefer-object-spread": "^1.2.1",
224220
"eslint-plugin-react-hooks": "^4.6.0",
225221
"eslint-plugin-react-refresh": "^0.4.16",
226222
"eslint-plugin-storybook": "^0.6.14",
227223
"eslint-plugin-tailwindcss": "^3.13.0",
228224
"eslint-plugin-testing-library": "^6.0.1",
229225
"eslint-plugin-tsdoc": "^0.2.17",
230226
"eslint-plugin-validate-jsx-nesting": "^0.1.1",
231-
"eslint-plugin-you-dont-need-lodash-underscore": "^6.13.0"
227+
"eslint-plugin-you-dont-need-lodash-underscore": "^6.13.0",
228+
"eslint-plugin-zod": "^1.4.0"
232229
},
233230
"peerDependenciesMeta": {
234231
"@tanstack/eslint-plugin-query": {
235232
"optional": true
236233
},
237-
"eslint-plugin-jsdoc": {
234+
"@unocss/eslint-plugin": {
238235
"optional": true
239236
},
240237
"eslint-plugin-jsx-a11y": {
@@ -243,15 +240,9 @@
243240
"eslint-plugin-n": {
244241
"optional": true
245242
},
246-
"eslint-plugin-no-unsanitized": {
247-
"optional": true
248-
},
249243
"eslint-plugin-playwright": {
250244
"optional": true
251245
},
252-
"eslint-plugin-prefer-object-spread": {
253-
"optional": true
254-
},
255246
"eslint-plugin-react": {
256247
"optional": true
257248
},
@@ -276,6 +267,9 @@
276267
"eslint-plugin-you-dont-need-lodash-underscore": {
277268
"optional": true
278269
},
270+
"eslint-plugin-zod": {
271+
"optional": true
272+
},
279273
"typescript": {
280274
"optional": true
281275
}
@@ -286,12 +280,5 @@
286280
"publishConfig": {
287281
"access": "public",
288282
"provenance": true
289-
},
290-
"typesVersions": {
291-
">=5.0": {
292-
".": [
293-
"./dist/index.d.ts"
294-
]
295-
}
296283
}
297284
}

packages/eslint-config/scripts/typegen.ts

+12-7
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@ import fs from "node:fs/promises";
33
import type { NormalizedPackageJson } from "@visulima/package";
44
import { builtinRules } from "eslint/use-at-your-own-risk";
55
import { flatConfigsToRulesDTS } from "eslint-typegen/core";
6-
import { sortPackageJson } from "sort-package-json";
76

87
import bestPractices from "../src/config/best-practices";
98
import errors from "../src/config/errors";
@@ -35,13 +34,17 @@ import toml from "../src/config/plugins/toml";
3534
import tsdoc from "../src/config/plugins/tsdoc";
3635
import typescript from "../src/config/plugins/typescript";
3736
import unicorn from "../src/config/plugins/unicorn";
37+
import unocss from "../src/config/plugins/unocss";
3838
import validateJsxNesting from "../src/config/plugins/validate-jsx-nesting";
3939
import vitest from "../src/config/plugins/vitest";
4040
import yaml from "../src/config/plugins/yml";
4141
import youDontNeedLodashUnderscore from "../src/config/plugins/you-dont-need-lodash-underscore";
42+
import zod from "../src/config/plugins/zod";
4243
import style from "../src/config/style";
4344
import variables from "../src/config/variables";
4445
import combine from "../src/utils/combine";
46+
import astro from "../src/config/plugins/astro";
47+
import testingLibrary from "../src/config/plugins/testing-library";
4548

4649
const fakePackageJson = {} as NormalizedPackageJson;
4750

@@ -56,6 +59,7 @@ const configs = await combine(
5659
antfu({
5760
packageJson: fakePackageJson,
5861
}),
62+
astro({}),
5963
bestPractices({}),
6064
compat({}),
6165
errors({}),
@@ -100,30 +104,31 @@ const configs = await combine(
100104
packageJson: fakePackageJson,
101105
}),
102106
youDontNeedLodashUnderscore({}),
103-
// solid({),
104-
sortPackageJson({}),
105107
stylistic({}),
106-
// svelte({),
107108
vitest({}),
108109
toml({}),
109110
regexp({}),
110111
typescript({}),
111112
unicorn({
112113
packageJson: fakePackageJson,
113114
}),
114-
// unocss({),
115+
testingLibrary({
116+
packageJson: fakePackageJson,
117+
}),
118+
unocss({}),
115119
yaml({}),
120+
zod({}),
116121
);
117122

118-
const configNames = configs.map(i => i.name).filter(Boolean) as string[];
123+
const configNames = configs.map(index => index.name).filter(Boolean) as string[];
119124

120125
let dts = await flatConfigsToRulesDTS(configs, {
121126
includeAugmentation: false,
122127
});
123128

124129
dts += `
125130
// Names of all the configs
126-
export type ConfigNames = ${configNames.map(i => `'${i}'`).join(" | ")}
131+
export type ConfigNames = ${configNames.map(index => `'${index}'`).join(" | ")}
127132
`;
128133

129134
await fs.writeFile("src/typegen.d.ts", dts);

0 commit comments

Comments
 (0)