@dhzh/eslint-config 0.12.0 → 0.12.2

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.
package/README.md CHANGED
@@ -4,7 +4,7 @@
4
4
 
5
5
  > `Special Statement`: This project comes from [`@antfu/eslint-config`](https://github.com/antfu/eslint-config). The two are almost the same, with only some differences to meet personal needs. In order to seek convenience and prevent some conflicts between the upstream branch and my own changes after forking, I chose to copy instead of fork.
6
6
 
7
- Differences from [@antfu/eslint-config](./README-antfu.md):
7
+ Differences from [@antfu/eslint-config](https://github.com/antfu/eslint-config/blob/main/README.md):
8
8
 
9
9
  1. With semi: `semi: true`.
10
10
  2. Always arrow parens: `arrowParens: true`.
package/dist/cli.cjs CHANGED
@@ -48,8 +48,8 @@ var import_picocolors = __toESM(require("picocolors"), 1);
48
48
  var package_default = {
49
49
  name: "@dhzh/eslint-config",
50
50
  type: "module",
51
- version: "0.12.0",
52
- packageManager: "pnpm@9.6.0",
51
+ version: "0.12.2",
52
+ packageManager: "pnpm@9.7.0",
53
53
  description: "Easton's ESLint config",
54
54
  author: "Easton Zheng <dhzhme@gmail.com>",
55
55
  license: "MIT",
@@ -81,7 +81,6 @@ var package_default = {
81
81
  typegen: "esno scripts/typegen.ts",
82
82
  prepack: "nr build",
83
83
  release: "bumpp && pnpm publish --access=public",
84
- test: "vitest",
85
84
  typecheck: "tsc --noEmit",
86
85
  prepare: "simple-git-hooks"
87
86
  },
@@ -133,10 +132,11 @@ var package_default = {
133
132
  dependencies: {
134
133
  "@antfu/install-pkg": "^0.3.3",
135
134
  "@clack/prompts": "^0.7.0",
136
- "@eslint-react/eslint-plugin": "^1.6.0",
137
- "@stylistic/eslint-plugin": "^2.6.0-beta.1",
138
- "@typescript-eslint/eslint-plugin": "8.0.0-alpha.40",
139
- "@typescript-eslint/parser": "8.0.0-alpha.40",
135
+ "@eslint-react/eslint-plugin": "^1.9.1",
136
+ "@stylistic/eslint-plugin": "^2.6.2",
137
+ "@typescript-eslint/eslint-plugin": "^8.0.1",
138
+ "@typescript-eslint/parser": "^8.0.1",
139
+ "@vitest/eslint-plugin": "^1.0.0",
140
140
  "eslint-config-flat-gitignore": "^0.1.8",
141
141
  "eslint-flat-config-utils": "^0.3.0",
142
142
  "eslint-merge-processors": "^0.1.0",
@@ -144,23 +144,22 @@ var package_default = {
144
144
  "eslint-plugin-command": "^0.2.3",
145
145
  "eslint-plugin-eslint-comments": "^3.2.0",
146
146
  "eslint-plugin-import-x": "^3.1.0",
147
- "eslint-plugin-jsdoc": "^48.8.3",
147
+ "eslint-plugin-jsdoc": "^50.0.0",
148
148
  "eslint-plugin-jsonc": "^2.16.0",
149
149
  "eslint-plugin-markdown": "^5.1.0",
150
- "eslint-plugin-n": "^17.10.1",
150
+ "eslint-plugin-n": "^17.10.2",
151
151
  "eslint-plugin-no-only-tests": "^3.1.0",
152
- "eslint-plugin-perfectionist": "^3.0.0",
152
+ "eslint-plugin-perfectionist": "^3.1.3",
153
153
  "eslint-plugin-react-hooks": "^4.6.2",
154
154
  "eslint-plugin-react-refresh": "^0.4.9",
155
155
  "eslint-plugin-regexp": "^2.6.0",
156
156
  "eslint-plugin-toml": "^0.11.1",
157
157
  "eslint-plugin-unicorn": "^55.0.0",
158
- "eslint-plugin-unused-imports": "^4.0.1",
159
- "eslint-plugin-vitest": "^0.5.4",
158
+ "eslint-plugin-unused-imports": "^4.1.3",
160
159
  "eslint-plugin-vue": "^9.27.0",
161
160
  "eslint-plugin-yml": "^1.14.0",
162
161
  "eslint-processor-vue-blocks": "^0.1.2",
163
- globals: "^15.8.0",
162
+ globals: "^15.9.0",
164
163
  "jsonc-eslint-parser": "^2.4.0",
165
164
  "local-pkg": "^0.5.0",
166
165
  "parse-gitignore": "^2.0.0",
@@ -171,19 +170,19 @@ var package_default = {
171
170
  yargs: "^17.7.2"
172
171
  },
173
172
  devDependencies: {
174
- "@antfu/ni": "^0.22.0",
173
+ "@antfu/ni": "^0.22.1",
175
174
  "@dhzh/eslint-config": "workspace:*",
176
175
  "@eslint/config-inspector": "^0.5.2",
177
176
  "@prettier/plugin-xml": "^3.4.1",
178
- "@stylistic/eslint-plugin-migrate": "^2.4.0",
177
+ "@stylistic/eslint-plugin-migrate": "^2.6.2",
179
178
  "@types/eslint": "^9.6.0",
180
179
  "@types/fs-extra": "^11.0.4",
181
- "@types/node": "^20.14.12",
180
+ "@types/node": "^22.2.0",
182
181
  "@types/prompts": "^2.4.9",
183
- "@types/yargs": "^17.0.32",
184
- "@unocss/eslint-plugin": "^0.61.6",
182
+ "@types/yargs": "^17.0.33",
183
+ "@unocss/eslint-plugin": "^0.61.9",
185
184
  "astro-eslint-parser": "^1.0.2",
186
- bumpp: "^9.4.1",
185
+ bumpp: "^9.4.2",
187
186
  "bundle-require": "^5.0.0",
188
187
  eslint: "npm:eslint-ts-patch@9.5.0-0",
189
188
  "eslint-plugin-astro": "^1.2.3",
@@ -196,21 +195,21 @@ var package_default = {
196
195
  execa: "^9.3.0",
197
196
  "fast-glob": "^3.3.2",
198
197
  "fs-extra": "^11.2.0",
199
- "lint-staged": "^15.2.7",
198
+ "lint-staged": "^15.2.8",
200
199
  "prettier-plugin-astro": "^0.14.1",
201
200
  "prettier-plugin-slidev": "^1.0.5",
202
201
  rimraf: "^6.0.1",
203
202
  "simple-git-hooks": "^2.11.1",
204
203
  svelte: "^4.2.18",
205
204
  "svelte-eslint-parser": "^0.41.0",
206
- tsup: "^8.2.3",
207
- tsx: "^4.16.2",
205
+ tsup: "^8.2.4",
206
+ tsx: "^4.17.0",
208
207
  typescript: "^5.5.4",
209
- vitest: "^2.0.4",
210
- vue: "^3.4.34"
208
+ vitest: "^2.0.5",
209
+ vue: "^3.4.37"
211
210
  },
212
211
  resolutions: {
213
- tsx: "~4.16.2"
212
+ tsx: "~4.17.0"
214
213
  },
215
214
  "simple-git-hooks": {
216
215
  "pre-commit": "npx lint-staged"
package/dist/cli.js CHANGED
@@ -19,8 +19,8 @@ import c from "picocolors";
19
19
  var package_default = {
20
20
  name: "@dhzh/eslint-config",
21
21
  type: "module",
22
- version: "0.12.0",
23
- packageManager: "pnpm@9.6.0",
22
+ version: "0.12.2",
23
+ packageManager: "pnpm@9.7.0",
24
24
  description: "Easton's ESLint config",
25
25
  author: "Easton Zheng <dhzhme@gmail.com>",
26
26
  license: "MIT",
@@ -52,7 +52,6 @@ var package_default = {
52
52
  typegen: "esno scripts/typegen.ts",
53
53
  prepack: "nr build",
54
54
  release: "bumpp && pnpm publish --access=public",
55
- test: "vitest",
56
55
  typecheck: "tsc --noEmit",
57
56
  prepare: "simple-git-hooks"
58
57
  },
@@ -104,10 +103,11 @@ var package_default = {
104
103
  dependencies: {
105
104
  "@antfu/install-pkg": "^0.3.3",
106
105
  "@clack/prompts": "^0.7.0",
107
- "@eslint-react/eslint-plugin": "^1.6.0",
108
- "@stylistic/eslint-plugin": "^2.6.0-beta.1",
109
- "@typescript-eslint/eslint-plugin": "8.0.0-alpha.40",
110
- "@typescript-eslint/parser": "8.0.0-alpha.40",
106
+ "@eslint-react/eslint-plugin": "^1.9.1",
107
+ "@stylistic/eslint-plugin": "^2.6.2",
108
+ "@typescript-eslint/eslint-plugin": "^8.0.1",
109
+ "@typescript-eslint/parser": "^8.0.1",
110
+ "@vitest/eslint-plugin": "^1.0.0",
111
111
  "eslint-config-flat-gitignore": "^0.1.8",
112
112
  "eslint-flat-config-utils": "^0.3.0",
113
113
  "eslint-merge-processors": "^0.1.0",
@@ -115,23 +115,22 @@ var package_default = {
115
115
  "eslint-plugin-command": "^0.2.3",
116
116
  "eslint-plugin-eslint-comments": "^3.2.0",
117
117
  "eslint-plugin-import-x": "^3.1.0",
118
- "eslint-plugin-jsdoc": "^48.8.3",
118
+ "eslint-plugin-jsdoc": "^50.0.0",
119
119
  "eslint-plugin-jsonc": "^2.16.0",
120
120
  "eslint-plugin-markdown": "^5.1.0",
121
- "eslint-plugin-n": "^17.10.1",
121
+ "eslint-plugin-n": "^17.10.2",
122
122
  "eslint-plugin-no-only-tests": "^3.1.0",
123
- "eslint-plugin-perfectionist": "^3.0.0",
123
+ "eslint-plugin-perfectionist": "^3.1.3",
124
124
  "eslint-plugin-react-hooks": "^4.6.2",
125
125
  "eslint-plugin-react-refresh": "^0.4.9",
126
126
  "eslint-plugin-regexp": "^2.6.0",
127
127
  "eslint-plugin-toml": "^0.11.1",
128
128
  "eslint-plugin-unicorn": "^55.0.0",
129
- "eslint-plugin-unused-imports": "^4.0.1",
130
- "eslint-plugin-vitest": "^0.5.4",
129
+ "eslint-plugin-unused-imports": "^4.1.3",
131
130
  "eslint-plugin-vue": "^9.27.0",
132
131
  "eslint-plugin-yml": "^1.14.0",
133
132
  "eslint-processor-vue-blocks": "^0.1.2",
134
- globals: "^15.8.0",
133
+ globals: "^15.9.0",
135
134
  "jsonc-eslint-parser": "^2.4.0",
136
135
  "local-pkg": "^0.5.0",
137
136
  "parse-gitignore": "^2.0.0",
@@ -142,19 +141,19 @@ var package_default = {
142
141
  yargs: "^17.7.2"
143
142
  },
144
143
  devDependencies: {
145
- "@antfu/ni": "^0.22.0",
144
+ "@antfu/ni": "^0.22.1",
146
145
  "@dhzh/eslint-config": "workspace:*",
147
146
  "@eslint/config-inspector": "^0.5.2",
148
147
  "@prettier/plugin-xml": "^3.4.1",
149
- "@stylistic/eslint-plugin-migrate": "^2.4.0",
148
+ "@stylistic/eslint-plugin-migrate": "^2.6.2",
150
149
  "@types/eslint": "^9.6.0",
151
150
  "@types/fs-extra": "^11.0.4",
152
- "@types/node": "^20.14.12",
151
+ "@types/node": "^22.2.0",
153
152
  "@types/prompts": "^2.4.9",
154
- "@types/yargs": "^17.0.32",
155
- "@unocss/eslint-plugin": "^0.61.6",
153
+ "@types/yargs": "^17.0.33",
154
+ "@unocss/eslint-plugin": "^0.61.9",
156
155
  "astro-eslint-parser": "^1.0.2",
157
- bumpp: "^9.4.1",
156
+ bumpp: "^9.4.2",
158
157
  "bundle-require": "^5.0.0",
159
158
  eslint: "npm:eslint-ts-patch@9.5.0-0",
160
159
  "eslint-plugin-astro": "^1.2.3",
@@ -167,21 +166,21 @@ var package_default = {
167
166
  execa: "^9.3.0",
168
167
  "fast-glob": "^3.3.2",
169
168
  "fs-extra": "^11.2.0",
170
- "lint-staged": "^15.2.7",
169
+ "lint-staged": "^15.2.8",
171
170
  "prettier-plugin-astro": "^0.14.1",
172
171
  "prettier-plugin-slidev": "^1.0.5",
173
172
  rimraf: "^6.0.1",
174
173
  "simple-git-hooks": "^2.11.1",
175
174
  svelte: "^4.2.18",
176
175
  "svelte-eslint-parser": "^0.41.0",
177
- tsup: "^8.2.3",
178
- tsx: "^4.16.2",
176
+ tsup: "^8.2.4",
177
+ tsx: "^4.17.0",
179
178
  typescript: "^5.5.4",
180
- vitest: "^2.0.4",
181
- vue: "^3.4.34"
179
+ vitest: "^2.0.5",
180
+ vue: "^3.4.37"
182
181
  },
183
182
  resolutions: {
184
- tsx: "~4.16.2"
183
+ tsx: "~4.17.0"
185
184
  },
186
185
  "simple-git-hooks": {
187
186
  "pre-commit": "npx lint-staged"
package/dist/index.cjs CHANGED
@@ -461,6 +461,7 @@ async function formatters(options = {}, stylistic2 = {}) {
461
461
  const prettierOptions = Object.assign(
462
462
  {
463
463
  endOfLine: "auto",
464
+ printWidth: 120,
464
465
  semi,
465
466
  singleQuote: quotes === "single",
466
467
  tabWidth: typeof indent === "number" ? indent : 2,
@@ -598,7 +599,6 @@ async function formatters(options = {}, stylistic2 = {}) {
598
599
  [`format/${formater}`]: [
599
600
  "error",
600
601
  formater === "prettier" ? {
601
- printWidth: 120,
602
602
  ...prettierOptions,
603
603
  embeddedLanguageFormatting: "off",
604
604
  parser: "markdown"
@@ -620,7 +620,6 @@ async function formatters(options = {}, stylistic2 = {}) {
620
620
  "format/prettier": [
621
621
  "error",
622
622
  {
623
- printWidth: 120,
624
623
  ...prettierOptions,
625
624
  embeddedLanguageFormatting: "off",
626
625
  parser: "slidev",
@@ -1772,7 +1771,7 @@ async function test(options = {}) {
1772
1771
  pluginVitest,
1773
1772
  pluginNoOnlyTests
1774
1773
  ] = await Promise.all([
1775
- interopDefault(import("eslint-plugin-vitest")),
1774
+ interopDefault(import("@vitest/eslint-plugin")),
1776
1775
  // @ts-expect-error missing types
1777
1776
  interopDefault(import("eslint-plugin-no-only-tests"))
1778
1777
  ]);
package/dist/index.d.cts CHANGED
@@ -1044,7 +1044,7 @@ interface RuleOptions {
1044
1044
  'jsdoc/check-tag-names'?: Linter.RuleEntry<JsdocCheckTagNames>
1045
1045
  /**
1046
1046
  * Checks that any `@template` names are actually used in the connected `@typedef` or type alias.
1047
- * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/require-template.md#repos-sticky-header
1047
+ * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/check-template-names.md#repos-sticky-header
1048
1048
  */
1049
1049
  'jsdoc/check-template-names'?: Linter.RuleEntry<[]>
1050
1050
  /**
@@ -1082,6 +1082,11 @@ interface RuleOptions {
1082
1082
  * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/informative-docs.md#repos-sticky-header
1083
1083
  */
1084
1084
  'jsdoc/informative-docs'?: Linter.RuleEntry<JsdocInformativeDocs>
1085
+ /**
1086
+ * Enforces minimum number of newlines before JSDoc comment blocks
1087
+ * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/lines-before-block.md#repos-sticky-header
1088
+ */
1089
+ 'jsdoc/lines-before-block'?: Linter.RuleEntry<JsdocLinesBeforeBlock>
1085
1090
  /**
1086
1091
  * Enforces a regular expression pattern on descriptions.
1087
1092
  * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/match-description.md#repos-sticky-header
@@ -3074,13 +3079,11 @@ interface RuleOptions {
3074
3079
  /**
3075
3080
  * disallow complex conditional rendering
3076
3081
  * @see https://eslint-react.xyz/docs/rules/no-complex-conditional-rendering
3077
- * @deprecated
3078
3082
  */
3079
3083
  'react/no-complex-conditional-rendering'?: Linter.RuleEntry<[]>
3080
3084
  /**
3081
3085
  * disallow complex conditional rendering
3082
3086
  * @see https://eslint-react.xyz/docs/rules/no-complex-conditional-rendering
3083
- * @deprecated
3084
3087
  */
3085
3088
  'react/no-complicated-conditional-rendering'?: Linter.RuleEntry<[]>
3086
3089
  /**
@@ -3114,7 +3117,7 @@ interface RuleOptions {
3114
3117
  */
3115
3118
  'react/no-direct-mutation-state'?: Linter.RuleEntry<[]>
3116
3119
  /**
3117
- * disallow duplicate keys in 'key' prop when rendering list
3120
+ * disallow duplicate keys when rendering list
3118
3121
  * @see https://eslint-react.xyz/docs/rules/no-duplicate-key
3119
3122
  */
3120
3123
  'react/no-duplicate-key'?: Linter.RuleEntry<[]>
@@ -3134,7 +3137,7 @@ interface RuleOptions {
3134
3137
  */
3135
3138
  'react/no-missing-component-display-name'?: Linter.RuleEntry<[]>
3136
3139
  /**
3137
- * require 'key' prop when rendering list
3140
+ * require 'key' when rendering list
3138
3141
  * @see https://eslint-react.xyz/docs/rules/no-missing-key
3139
3142
  */
3140
3143
  'react/no-missing-key'?: Linter.RuleEntry<[]>
@@ -4674,6 +4677,11 @@ interface RuleOptions {
4674
4677
  * @see https://github.com/veritem/eslint-plugin-vitest/blob/main/docs/rules/expect-expect.md
4675
4678
  */
4676
4679
  'test/expect-expect'?: Linter.RuleEntry<TestExpectExpect>
4680
+ /**
4681
+ * Enforce padding around afterAll blocks
4682
+ * @see https://github.com/veritem/eslint-plugin-vitest/blob/main/docs/rules/index.md
4683
+ */
4684
+ 'test/index'?: Linter.RuleEntry<[]>
4677
4685
  /**
4678
4686
  * enforce a maximum number of expect per test
4679
4687
  * @see https://github.com/veritem/eslint-plugin-vitest/blob/main/docs/rules/max-expects.md
@@ -5374,6 +5382,11 @@ interface RuleOptions {
5374
5382
  * @see https://typescript-eslint.io/rules/no-unnecessary-condition
5375
5383
  */
5376
5384
  'ts/no-unnecessary-condition'?: Linter.RuleEntry<TsNoUnnecessaryCondition>
5385
+ /**
5386
+ * Disallow unnecessary assignment of constructor property parameter
5387
+ * @see https://typescript-eslint.io/rules/no-unnecessary-parameter-property-assignment
5388
+ */
5389
+ 'ts/no-unnecessary-parameter-property-assignment'?: Linter.RuleEntry<[]>
5377
5390
  /**
5378
5391
  * Disallow unnecessary namespace qualifiers
5379
5392
  * @see https://typescript-eslint.io/rules/no-unnecessary-qualifier
@@ -5456,7 +5469,7 @@ interface RuleOptions {
5456
5469
  'ts/no-unused-expressions'?: Linter.RuleEntry<TsNoUnusedExpressions>
5457
5470
  /**
5458
5471
  * Disallow unused variables
5459
- * @see https://github.com/sweepline/eslint-plugin-unused-imports/blob/master/docs/rules/no-unused-imports.md
5472
+ * @see https://typescript-eslint.io/rules/no-unused-vars
5460
5473
  */
5461
5474
  'ts/no-unused-vars'?: Linter.RuleEntry<TsNoUnusedVars>
5462
5475
  /**
@@ -6384,7 +6397,7 @@ interface RuleOptions {
6384
6397
  'unused-imports/no-unused-imports'?: Linter.RuleEntry<UnusedImportsNoUnusedImports>
6385
6398
  /**
6386
6399
  * Disallow unused variables
6387
- * @see https://github.com/sweepline/eslint-plugin-unused-imports/blob/master/docs/rules/no-unused-imports.md
6400
+ * @see https://github.com/sweepline/eslint-plugin-unused-imports/blob/master/docs/rules/no-unused-vars.md
6388
6401
  */
6389
6402
  'unused-imports/no-unused-vars'?: Linter.RuleEntry<UnusedImportsNoUnusedVars>
6390
6403
  /**
@@ -8463,6 +8476,12 @@ type JsdocInformativeDocs = []|[{
8463
8476
  excludedTags?: string[]
8464
8477
  uselessWords?: string[]
8465
8478
  }]
8479
+ // ----- jsdoc/lines-before-block -----
8480
+ type JsdocLinesBeforeBlock = []|[{
8481
+ excludedTags?: string[]
8482
+ ignoreSameLine?: boolean
8483
+ lines?: number
8484
+ }]
8466
8485
  // ----- jsdoc/match-description -----
8467
8486
  type JsdocMatchDescription = []|[{
8468
8487
  contexts?: (string | {
@@ -10517,9 +10536,9 @@ type PerfectionistSortObjects = []|[{
10517
10536
 
10518
10537
  styledComponents?: boolean
10519
10538
 
10520
- ignorePattern?: string[]
10539
+ destructureOnly?: boolean
10521
10540
 
10522
- customIgnore?: unknown[]
10541
+ ignorePattern?: string[]
10523
10542
 
10524
10543
  groups?: (string | string[])[]
10525
10544
 
@@ -12149,7 +12168,8 @@ type TestNoRestrictedViMethods = []|[{
12149
12168
  }]
12150
12169
  // ----- test/no-standalone-expect -----
12151
12170
  type TestNoStandaloneExpect = []|[{
12152
- additionalTestBlockFunctions?: string[]
12171
+ additionaltestblockfunctions?: string[]
12172
+ [k: string]: unknown | undefined
12153
12173
  }]
12154
12174
  // ----- test/prefer-expect-assertions -----
12155
12175
  type TestPreferExpectAssertions = []|[{
@@ -12836,10 +12856,6 @@ type TsNoExtraneousClass = []|[{
12836
12856
  }]
12837
12857
  // ----- ts/no-floating-promises -----
12838
12858
  type TsNoFloatingPromises = []|[{
12839
-
12840
- ignoreVoid?: boolean
12841
-
12842
- ignoreIIFE?: boolean
12843
12859
  allowForKnownSafePromises?: (string | {
12844
12860
  from: "file"
12845
12861
  name: (string | [string, ...(string)[]])
@@ -12864,6 +12880,12 @@ type TsNoFloatingPromises = []|[{
12864
12880
  name: (string | [string, ...(string)[]])
12865
12881
  package: string
12866
12882
  })[]
12883
+
12884
+ checkThenables?: boolean
12885
+
12886
+ ignoreVoid?: boolean
12887
+
12888
+ ignoreIIFE?: boolean
12867
12889
  }]
12868
12890
  // ----- ts/no-inferrable-types -----
12869
12891
  type TsNoInferrableTypes = []|[{
@@ -13218,7 +13240,7 @@ type TsRestrictTemplateExpressions = []|[{
13218
13240
  allowNever?: boolean
13219
13241
  }]
13220
13242
  // ----- ts/return-await -----
13221
- type TsReturnAwait = []|[("in-try-catch" | "always" | "never")]
13243
+ type TsReturnAwait = []|[("in-try-catch" | "always" | "never" | "error-handling-correctness-only")]
13222
13244
  // ----- ts/sort-type-constituents -----
13223
13245
  type TsSortTypeConstituents = []|[{
13224
13246
 
package/dist/index.d.ts CHANGED
@@ -1044,7 +1044,7 @@ interface RuleOptions {
1044
1044
  'jsdoc/check-tag-names'?: Linter.RuleEntry<JsdocCheckTagNames>
1045
1045
  /**
1046
1046
  * Checks that any `@template` names are actually used in the connected `@typedef` or type alias.
1047
- * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/require-template.md#repos-sticky-header
1047
+ * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/check-template-names.md#repos-sticky-header
1048
1048
  */
1049
1049
  'jsdoc/check-template-names'?: Linter.RuleEntry<[]>
1050
1050
  /**
@@ -1082,6 +1082,11 @@ interface RuleOptions {
1082
1082
  * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/informative-docs.md#repos-sticky-header
1083
1083
  */
1084
1084
  'jsdoc/informative-docs'?: Linter.RuleEntry<JsdocInformativeDocs>
1085
+ /**
1086
+ * Enforces minimum number of newlines before JSDoc comment blocks
1087
+ * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/lines-before-block.md#repos-sticky-header
1088
+ */
1089
+ 'jsdoc/lines-before-block'?: Linter.RuleEntry<JsdocLinesBeforeBlock>
1085
1090
  /**
1086
1091
  * Enforces a regular expression pattern on descriptions.
1087
1092
  * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/match-description.md#repos-sticky-header
@@ -3074,13 +3079,11 @@ interface RuleOptions {
3074
3079
  /**
3075
3080
  * disallow complex conditional rendering
3076
3081
  * @see https://eslint-react.xyz/docs/rules/no-complex-conditional-rendering
3077
- * @deprecated
3078
3082
  */
3079
3083
  'react/no-complex-conditional-rendering'?: Linter.RuleEntry<[]>
3080
3084
  /**
3081
3085
  * disallow complex conditional rendering
3082
3086
  * @see https://eslint-react.xyz/docs/rules/no-complex-conditional-rendering
3083
- * @deprecated
3084
3087
  */
3085
3088
  'react/no-complicated-conditional-rendering'?: Linter.RuleEntry<[]>
3086
3089
  /**
@@ -3114,7 +3117,7 @@ interface RuleOptions {
3114
3117
  */
3115
3118
  'react/no-direct-mutation-state'?: Linter.RuleEntry<[]>
3116
3119
  /**
3117
- * disallow duplicate keys in 'key' prop when rendering list
3120
+ * disallow duplicate keys when rendering list
3118
3121
  * @see https://eslint-react.xyz/docs/rules/no-duplicate-key
3119
3122
  */
3120
3123
  'react/no-duplicate-key'?: Linter.RuleEntry<[]>
@@ -3134,7 +3137,7 @@ interface RuleOptions {
3134
3137
  */
3135
3138
  'react/no-missing-component-display-name'?: Linter.RuleEntry<[]>
3136
3139
  /**
3137
- * require 'key' prop when rendering list
3140
+ * require 'key' when rendering list
3138
3141
  * @see https://eslint-react.xyz/docs/rules/no-missing-key
3139
3142
  */
3140
3143
  'react/no-missing-key'?: Linter.RuleEntry<[]>
@@ -4674,6 +4677,11 @@ interface RuleOptions {
4674
4677
  * @see https://github.com/veritem/eslint-plugin-vitest/blob/main/docs/rules/expect-expect.md
4675
4678
  */
4676
4679
  'test/expect-expect'?: Linter.RuleEntry<TestExpectExpect>
4680
+ /**
4681
+ * Enforce padding around afterAll blocks
4682
+ * @see https://github.com/veritem/eslint-plugin-vitest/blob/main/docs/rules/index.md
4683
+ */
4684
+ 'test/index'?: Linter.RuleEntry<[]>
4677
4685
  /**
4678
4686
  * enforce a maximum number of expect per test
4679
4687
  * @see https://github.com/veritem/eslint-plugin-vitest/blob/main/docs/rules/max-expects.md
@@ -5374,6 +5382,11 @@ interface RuleOptions {
5374
5382
  * @see https://typescript-eslint.io/rules/no-unnecessary-condition
5375
5383
  */
5376
5384
  'ts/no-unnecessary-condition'?: Linter.RuleEntry<TsNoUnnecessaryCondition>
5385
+ /**
5386
+ * Disallow unnecessary assignment of constructor property parameter
5387
+ * @see https://typescript-eslint.io/rules/no-unnecessary-parameter-property-assignment
5388
+ */
5389
+ 'ts/no-unnecessary-parameter-property-assignment'?: Linter.RuleEntry<[]>
5377
5390
  /**
5378
5391
  * Disallow unnecessary namespace qualifiers
5379
5392
  * @see https://typescript-eslint.io/rules/no-unnecessary-qualifier
@@ -5456,7 +5469,7 @@ interface RuleOptions {
5456
5469
  'ts/no-unused-expressions'?: Linter.RuleEntry<TsNoUnusedExpressions>
5457
5470
  /**
5458
5471
  * Disallow unused variables
5459
- * @see https://github.com/sweepline/eslint-plugin-unused-imports/blob/master/docs/rules/no-unused-imports.md
5472
+ * @see https://typescript-eslint.io/rules/no-unused-vars
5460
5473
  */
5461
5474
  'ts/no-unused-vars'?: Linter.RuleEntry<TsNoUnusedVars>
5462
5475
  /**
@@ -6384,7 +6397,7 @@ interface RuleOptions {
6384
6397
  'unused-imports/no-unused-imports'?: Linter.RuleEntry<UnusedImportsNoUnusedImports>
6385
6398
  /**
6386
6399
  * Disallow unused variables
6387
- * @see https://github.com/sweepline/eslint-plugin-unused-imports/blob/master/docs/rules/no-unused-imports.md
6400
+ * @see https://github.com/sweepline/eslint-plugin-unused-imports/blob/master/docs/rules/no-unused-vars.md
6388
6401
  */
6389
6402
  'unused-imports/no-unused-vars'?: Linter.RuleEntry<UnusedImportsNoUnusedVars>
6390
6403
  /**
@@ -8463,6 +8476,12 @@ type JsdocInformativeDocs = []|[{
8463
8476
  excludedTags?: string[]
8464
8477
  uselessWords?: string[]
8465
8478
  }]
8479
+ // ----- jsdoc/lines-before-block -----
8480
+ type JsdocLinesBeforeBlock = []|[{
8481
+ excludedTags?: string[]
8482
+ ignoreSameLine?: boolean
8483
+ lines?: number
8484
+ }]
8466
8485
  // ----- jsdoc/match-description -----
8467
8486
  type JsdocMatchDescription = []|[{
8468
8487
  contexts?: (string | {
@@ -10517,9 +10536,9 @@ type PerfectionistSortObjects = []|[{
10517
10536
 
10518
10537
  styledComponents?: boolean
10519
10538
 
10520
- ignorePattern?: string[]
10539
+ destructureOnly?: boolean
10521
10540
 
10522
- customIgnore?: unknown[]
10541
+ ignorePattern?: string[]
10523
10542
 
10524
10543
  groups?: (string | string[])[]
10525
10544
 
@@ -12149,7 +12168,8 @@ type TestNoRestrictedViMethods = []|[{
12149
12168
  }]
12150
12169
  // ----- test/no-standalone-expect -----
12151
12170
  type TestNoStandaloneExpect = []|[{
12152
- additionalTestBlockFunctions?: string[]
12171
+ additionaltestblockfunctions?: string[]
12172
+ [k: string]: unknown | undefined
12153
12173
  }]
12154
12174
  // ----- test/prefer-expect-assertions -----
12155
12175
  type TestPreferExpectAssertions = []|[{
@@ -12836,10 +12856,6 @@ type TsNoExtraneousClass = []|[{
12836
12856
  }]
12837
12857
  // ----- ts/no-floating-promises -----
12838
12858
  type TsNoFloatingPromises = []|[{
12839
-
12840
- ignoreVoid?: boolean
12841
-
12842
- ignoreIIFE?: boolean
12843
12859
  allowForKnownSafePromises?: (string | {
12844
12860
  from: "file"
12845
12861
  name: (string | [string, ...(string)[]])
@@ -12864,6 +12880,12 @@ type TsNoFloatingPromises = []|[{
12864
12880
  name: (string | [string, ...(string)[]])
12865
12881
  package: string
12866
12882
  })[]
12883
+
12884
+ checkThenables?: boolean
12885
+
12886
+ ignoreVoid?: boolean
12887
+
12888
+ ignoreIIFE?: boolean
12867
12889
  }]
12868
12890
  // ----- ts/no-inferrable-types -----
12869
12891
  type TsNoInferrableTypes = []|[{
@@ -13218,7 +13240,7 @@ type TsRestrictTemplateExpressions = []|[{
13218
13240
  allowNever?: boolean
13219
13241
  }]
13220
13242
  // ----- ts/return-await -----
13221
- type TsReturnAwait = []|[("in-try-catch" | "always" | "never")]
13243
+ type TsReturnAwait = []|[("in-try-catch" | "always" | "never" | "error-handling-correctness-only")]
13222
13244
  // ----- ts/sort-type-constituents -----
13223
13245
  type TsSortTypeConstituents = []|[{
13224
13246
 
package/dist/index.js CHANGED
@@ -356,6 +356,7 @@ async function formatters(options = {}, stylistic2 = {}) {
356
356
  const prettierOptions = Object.assign(
357
357
  {
358
358
  endOfLine: "auto",
359
+ printWidth: 120,
359
360
  semi,
360
361
  singleQuote: quotes === "single",
361
362
  tabWidth: typeof indent === "number" ? indent : 2,
@@ -493,7 +494,6 @@ async function formatters(options = {}, stylistic2 = {}) {
493
494
  [`format/${formater}`]: [
494
495
  "error",
495
496
  formater === "prettier" ? {
496
- printWidth: 120,
497
497
  ...prettierOptions,
498
498
  embeddedLanguageFormatting: "off",
499
499
  parser: "markdown"
@@ -515,7 +515,6 @@ async function formatters(options = {}, stylistic2 = {}) {
515
515
  "format/prettier": [
516
516
  "error",
517
517
  {
518
- printWidth: 120,
519
518
  ...prettierOptions,
520
519
  embeddedLanguageFormatting: "off",
521
520
  parser: "slidev",
@@ -1667,7 +1666,7 @@ async function test(options = {}) {
1667
1666
  pluginVitest,
1668
1667
  pluginNoOnlyTests
1669
1668
  ] = await Promise.all([
1670
- interopDefault(import("eslint-plugin-vitest")),
1669
+ interopDefault(import("@vitest/eslint-plugin")),
1671
1670
  // @ts-expect-error missing types
1672
1671
  interopDefault(import("eslint-plugin-no-only-tests"))
1673
1672
  ]);
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@dhzh/eslint-config",
3
3
  "type": "module",
4
- "version": "0.12.0",
4
+ "version": "0.12.2",
5
5
  "description": "Easton's ESLint config",
6
6
  "author": "Easton Zheng <dhzhme@gmail.com>",
7
7
  "license": "MIT",
@@ -71,10 +71,11 @@
71
71
  "dependencies": {
72
72
  "@antfu/install-pkg": "^0.3.3",
73
73
  "@clack/prompts": "^0.7.0",
74
- "@eslint-react/eslint-plugin": "^1.6.0",
75
- "@stylistic/eslint-plugin": "^2.6.0-beta.1",
76
- "@typescript-eslint/eslint-plugin": "8.0.0-alpha.40",
77
- "@typescript-eslint/parser": "8.0.0-alpha.40",
74
+ "@eslint-react/eslint-plugin": "^1.9.1",
75
+ "@stylistic/eslint-plugin": "^2.6.2",
76
+ "@typescript-eslint/eslint-plugin": "^8.0.1",
77
+ "@typescript-eslint/parser": "^8.0.1",
78
+ "@vitest/eslint-plugin": "^1.0.0",
78
79
  "eslint-config-flat-gitignore": "^0.1.8",
79
80
  "eslint-flat-config-utils": "^0.3.0",
80
81
  "eslint-merge-processors": "^0.1.0",
@@ -82,23 +83,22 @@
82
83
  "eslint-plugin-command": "^0.2.3",
83
84
  "eslint-plugin-eslint-comments": "^3.2.0",
84
85
  "eslint-plugin-import-x": "^3.1.0",
85
- "eslint-plugin-jsdoc": "^48.8.3",
86
+ "eslint-plugin-jsdoc": "^50.0.0",
86
87
  "eslint-plugin-jsonc": "^2.16.0",
87
88
  "eslint-plugin-markdown": "^5.1.0",
88
- "eslint-plugin-n": "^17.10.1",
89
+ "eslint-plugin-n": "^17.10.2",
89
90
  "eslint-plugin-no-only-tests": "^3.1.0",
90
- "eslint-plugin-perfectionist": "^3.0.0",
91
+ "eslint-plugin-perfectionist": "^3.1.3",
91
92
  "eslint-plugin-react-hooks": "^4.6.2",
92
93
  "eslint-plugin-react-refresh": "^0.4.9",
93
94
  "eslint-plugin-regexp": "^2.6.0",
94
95
  "eslint-plugin-toml": "^0.11.1",
95
96
  "eslint-plugin-unicorn": "^55.0.0",
96
- "eslint-plugin-unused-imports": "^4.0.1",
97
- "eslint-plugin-vitest": "^0.5.4",
97
+ "eslint-plugin-unused-imports": "^4.1.3",
98
98
  "eslint-plugin-vue": "^9.27.0",
99
99
  "eslint-plugin-yml": "^1.14.0",
100
100
  "eslint-processor-vue-blocks": "^0.1.2",
101
- "globals": "^15.8.0",
101
+ "globals": "^15.9.0",
102
102
  "jsonc-eslint-parser": "^2.4.0",
103
103
  "local-pkg": "^0.5.0",
104
104
  "parse-gitignore": "^2.0.0",
@@ -109,18 +109,18 @@
109
109
  "yargs": "^17.7.2"
110
110
  },
111
111
  "devDependencies": {
112
- "@antfu/ni": "^0.22.0",
112
+ "@antfu/ni": "^0.22.1",
113
113
  "@eslint/config-inspector": "^0.5.2",
114
114
  "@prettier/plugin-xml": "^3.4.1",
115
- "@stylistic/eslint-plugin-migrate": "^2.4.0",
115
+ "@stylistic/eslint-plugin-migrate": "^2.6.2",
116
116
  "@types/eslint": "^9.6.0",
117
117
  "@types/fs-extra": "^11.0.4",
118
- "@types/node": "^20.14.12",
118
+ "@types/node": "^22.2.0",
119
119
  "@types/prompts": "^2.4.9",
120
- "@types/yargs": "^17.0.32",
121
- "@unocss/eslint-plugin": "^0.61.6",
120
+ "@types/yargs": "^17.0.33",
121
+ "@unocss/eslint-plugin": "^0.61.9",
122
122
  "astro-eslint-parser": "^1.0.2",
123
- "bumpp": "^9.4.1",
123
+ "bumpp": "^9.4.2",
124
124
  "bundle-require": "^5.0.0",
125
125
  "eslint": "npm:eslint-ts-patch@9.5.0-0",
126
126
  "eslint-plugin-astro": "^1.2.3",
@@ -133,22 +133,22 @@
133
133
  "execa": "^9.3.0",
134
134
  "fast-glob": "^3.3.2",
135
135
  "fs-extra": "^11.2.0",
136
- "lint-staged": "^15.2.7",
136
+ "lint-staged": "^15.2.8",
137
137
  "prettier-plugin-astro": "^0.14.1",
138
138
  "prettier-plugin-slidev": "^1.0.5",
139
139
  "rimraf": "^6.0.1",
140
140
  "simple-git-hooks": "^2.11.1",
141
141
  "svelte": "^4.2.18",
142
142
  "svelte-eslint-parser": "^0.41.0",
143
- "tsup": "^8.2.3",
144
- "tsx": "^4.16.2",
143
+ "tsup": "^8.2.4",
144
+ "tsx": "^4.17.0",
145
145
  "typescript": "^5.5.4",
146
- "vitest": "^2.0.4",
147
- "vue": "^3.4.34",
148
- "@dhzh/eslint-config": "0.12.0"
146
+ "vitest": "^2.0.5",
147
+ "vue": "^3.4.37",
148
+ "@dhzh/eslint-config": "0.12.2"
149
149
  },
150
150
  "resolutions": {
151
- "tsx": "~4.16.2"
151
+ "tsx": "~4.17.0"
152
152
  },
153
153
  "simple-git-hooks": {
154
154
  "pre-commit": "npx lint-staged"
@@ -165,7 +165,6 @@
165
165
  "lint": "eslint .",
166
166
  "typegen": "esno scripts/typegen.ts",
167
167
  "release": "bumpp && pnpm publish --access=public",
168
- "test": "vitest",
169
168
  "typecheck": "tsc --noEmit"
170
169
  }
171
170
  }