eslint-config-greenpie 16.2.0 → 16.4.0

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.
@@ -43,6 +43,8 @@ describe(RULE_ID, () => {
43
43
 
44
44
  Use `runOxlint` + `violationsOf` from `tests/oxlint/helper.ts`. Fixture files live **next to the test** (not in a `fixtures/` subfolder).
45
45
 
46
+ For Vue fixtures, prefer `<script setup lang="ts">` by default. Use Options API only when the rule specifically targets Options API component objects, `export default`, or legacy option keys.
47
+
46
48
  ```typescript
47
49
  import path from 'node:path';
48
50
  import { describe, expect, it } from 'vitest';
@@ -199,11 +199,15 @@
199
199
  "vue/no-deprecated-model-definition": "error",
200
200
  "vue/no-deprecated-props-default-this": "error",
201
201
  "vue/no-deprecated-vue-config-keycodes": "error",
202
+ "vue/no-dupe-keys": "error",
202
203
  "vue/no-expose-after-await": "error",
203
204
  "vue/no-export-in-script-setup": "error",
204
205
  "vue/no-lifecycle-after-await": "error",
205
206
  "vue/no-reserved-component-names": "error",
207
+ "vue/no-reserved-keys": "error",
208
+ "vue/no-reserved-props": "error",
206
209
  "vue/no-shared-component-data": "error",
210
+ "vue/no-side-effects-in-computed-properties": "error",
207
211
  "vue/no-this-in-before-route-enter": "error",
208
212
  "vue/no-watch-after-await": "error",
209
213
  "vue/prefer-import-from-vue": "error",
@@ -426,6 +430,7 @@
426
430
 
427
431
  "unicorn/consistent-function-scoping": "error",
428
432
  "unicorn/no-accessor-recursion": "error",
433
+ "unicorn/no-array-fill-with-reference-type": "error",
429
434
  "unicorn/no-array-reverse": "error",
430
435
  "unicorn/no-array-sort": "error",
431
436
  "unicorn/no-instanceof-builtins": "error",
@@ -578,6 +583,7 @@
578
583
  "unicorn/prefer-prototype-methods": "error",
579
584
  "unicorn/prefer-query-selector": "error",
580
585
  "unicorn/prefer-regexp-test": "error",
586
+ "unicorn/prefer-single-call": "error",
581
587
  "unicorn/prefer-string-replace-all": "error",
582
588
  "unicorn/prefer-string-slice": "error",
583
589
  "unicorn/prefer-top-level-await": "error",
@@ -758,6 +764,7 @@
758
764
  "unicorn/prefer-classlist-toggle": "error",
759
765
  "unicorn/prefer-default-parameters": "error",
760
766
  "unicorn/prefer-dom-node-text-content": "error",
767
+ "unicorn/prefer-export-from": "error",
761
768
  "unicorn/prefer-global-this": "error",
762
769
  "unicorn/import-style": "off", // Needs a project-specific import style policy first
763
770
  "unicorn/prefer-includes": "error",
@@ -787,6 +794,16 @@
787
794
  "vue/define-emits-declaration": "error",
788
795
  "vue/define-props-declaration": "error",
789
796
  "vue/define-props-destructuring": "off", // It requires destructuring, even when not needed
797
+ "vue/next-tick-style": "error",
798
+ "vue/prop-name-casing": "error",
799
+
800
+ // Still reports props typed as `T | undefined` without defaults:
801
+ // https://github.com/vuejs/eslint-plugin-vue/issues/2475
802
+ // Adding `= undefined` to satisfy it conflicts with unicorn/no-useless-undefined.
803
+ "vue/require-default-prop": "off",
804
+
805
+ "vue/require-direct-export": "error",
806
+ "vue/require-prop-types": "error",
790
807
  "vue/require-typed-ref": "error",
791
808
 
792
809
  /**
package/configs/vue.js CHANGED
@@ -26,6 +26,7 @@ export default defineConfig(
26
26
  'vue/define-props-declaration': 'off',
27
27
  'vue/define-props-destructuring': 'off',
28
28
  'vue/max-props': 'off',
29
+ 'vue/next-tick-style': 'off',
29
30
  'vue/no-arrow-functions-in-watch': 'off',
30
31
  'vue/no-computed-properties-in-data': 'off',
31
32
  'vue/no-deprecated-data-object-declaration': 'off',
@@ -35,19 +36,36 @@ export default defineConfig(
35
36
  'vue/no-deprecated-model-definition': 'off',
36
37
  'vue/no-deprecated-props-default-this': 'off',
37
38
  'vue/no-deprecated-vue-config-keycodes': 'off',
39
+ 'vue/no-dupe-keys': 'off',
38
40
  'vue/no-expose-after-await': 'off',
39
41
  'vue/no-export-in-script-setup': 'off',
40
42
  'vue/no-import-compiler-macros': 'off',
41
43
  'vue/no-lifecycle-after-await': 'off',
42
44
  'vue/no-multiple-slot-args': 'off',
43
45
  'vue/no-reserved-component-names': 'off',
46
+ 'vue/no-reserved-keys': 'off',
47
+ 'vue/no-reserved-props': 'off',
44
48
  'vue/no-required-prop-with-default': 'off',
45
49
  'vue/no-shared-component-data': 'off',
50
+ 'vue/no-side-effects-in-computed-properties': 'off',
46
51
  'vue/no-this-in-before-route-enter': 'off',
47
52
  'vue/no-watch-after-await': 'off',
48
53
  'vue/prefer-import-from-vue': 'off',
54
+ 'vue/prop-name-casing': 'off',
49
55
  'vue/require-default-export': 'off',
56
+
57
+ /*
58
+ * Kept disabled in oxlint because it still reports props typed
59
+ * as `T | undefined` without defaults:
60
+ * https://github.com/vuejs/eslint-plugin-vue/issues/2475
61
+ *
62
+ * Adding `= undefined` to satisfy it conflicts with unicorn/no-useless-undefined.
63
+ */
64
+ 'vue/require-default-prop': 'off',
65
+
66
+ 'vue/require-direct-export': 'off',
50
67
  'vue/require-prop-type-constructor': 'off',
68
+ 'vue/require-prop-types': 'off',
51
69
  'vue/require-render-return': 'off',
52
70
  'vue/require-slots-as-functions': 'off',
53
71
  'vue/require-typed-ref': 'off',
@@ -74,15 +92,11 @@ export default defineConfig(
74
92
  'vue/multi-word-component-names': 'error',
75
93
  'vue/no-async-in-computed-properties': 'error',
76
94
  'vue/no-child-content': 'error',
77
- 'vue/no-dupe-keys': 'error',
78
95
  'vue/no-dupe-v-else-if': 'error',
79
96
  'vue/no-duplicate-attributes': 'error',
80
97
  'vue/no-mutating-props': 'error',
81
98
  'vue/no-parsing-error': 'error',
82
99
  'vue/no-ref-as-operand': 'error',
83
- 'vue/no-reserved-keys': 'error',
84
- 'vue/no-reserved-props': 'error',
85
- 'vue/no-side-effects-in-computed-properties': 'error',
86
100
  'vue/no-template-key': 'error',
87
101
  'vue/no-textarea-mustache': 'error',
88
102
  'vue/no-unused-components': 'error',
@@ -158,18 +172,7 @@ export default defineConfig(
158
172
  'vue/no-spaces-around-equal-signs-in-attribute': 'error',
159
173
  'vue/no-template-shadow': 'error',
160
174
  'vue/one-component-per-file': 'error',
161
- 'vue/prop-name-casing': 'error',
162
-
163
- /**
164
- * Conflicts with
165
- * - `unicorn/no-useless-undefined`
166
- * - `@typescript-eslint/no-useless-default-assignment`
167
- *
168
- * {@link https://github.com/vuejs/eslint-plugin-vue/issues/2475}
169
- */
170
- 'vue/require-default-prop': 'off',
171
175
 
172
- 'vue/require-prop-types': 'error',
173
176
  'vue/singleline-html-element-content-newline': 'error',
174
177
 
175
178
  'vue/v-bind-style': ['error', 'shorthand', {
@@ -249,7 +252,6 @@ export default defineConfig(
249
252
 
250
253
  'vue/max-template-depth': 'off',
251
254
  'vue/new-line-between-multi-line-property': 'error',
252
- 'vue/next-tick-style': 'error',
253
255
  'vue/no-bare-strings-in-template': 'error',
254
256
  'vue/no-boolean-default': 'error',
255
257
  'vue/no-duplicate-attr-inheritance': 'error',
@@ -323,7 +325,6 @@ export default defineConfig(
323
325
  'vue/prefer-true-attribute-shorthand': 'error',
324
326
  'vue/prefer-use-template-ref': 'error',
325
327
  'vue/prefer-v-model': 'error',
326
- 'vue/require-direct-export': 'error',
327
328
  'vue/require-emit-validator': 'error',
328
329
  'vue/require-explicit-slots': 'off',
329
330
  'vue/require-expose': 'error',
package/package.json CHANGED
@@ -1,13 +1,13 @@
1
1
  {
2
2
  "name": "eslint-config-greenpie",
3
- "version": "16.2.0",
3
+ "version": "16.4.0",
4
4
  "description": "GreenPie's ESLint and oxlint configs",
5
5
  "main": "index.js",
6
6
  "types": "index.d.ts",
7
7
  "author": "Roman Nuritdinov (Ky6uk)",
8
8
  "license": "MIT",
9
9
  "type": "module",
10
- "packageManager": "npm@11.15.0",
10
+ "packageManager": "npm@11.17.0",
11
11
  "homepage": "https://github.com/GreenPie/eslint-config-greenpie",
12
12
  "repository": {
13
13
  "type": "git",
@@ -37,21 +37,21 @@
37
37
  "oxlint"
38
38
  ],
39
39
  "devDependencies": {
40
- "@types/node": "^25.9.1",
40
+ "@types/node": "^25.9.3",
41
41
  "execa": "^9.6.1",
42
42
  "husky": "^9.1.7",
43
- "oxlint": "^1.68.0",
43
+ "oxlint": "^1.70.0",
44
44
  "taze": "^19.14.1",
45
45
  "valibot": "1.4.1",
46
- "vitest": "^4.1.7",
47
- "vue": "^3.5.34"
46
+ "vitest": "^4.1.9",
47
+ "vue": "^3.5.38"
48
48
  },
49
49
  "peerDependencies": {
50
50
  "@stylistic/eslint-plugin": "^5.10.0",
51
- "eslint": "^10.4.0",
52
- "eslint-plugin-vue": "^10.9.1",
53
- "oxlint": "^1.68.0",
51
+ "eslint": "^10.5.0",
52
+ "eslint-plugin-vue": "^10.9.2",
53
+ "oxlint": "^1.70.0",
54
54
  "oxlint-tsgolint": "^0.23.0",
55
- "typescript-eslint": "^8.60.0"
55
+ "typescript-eslint": "^8.61.0"
56
56
  }
57
57
  }