@fullstacksjs/eslint-config 13.14.0 → 14.0.1

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.
@@ -48,8 +48,10 @@ function node(options = {}) {
48
48
  // Nice but not a general rule
49
49
  'n/prefer-global/buffer': 'warn',
50
50
  'n/prefer-global/console': 'warn',
51
+ 'n/prefer-global/crypto': 'warn',
51
52
  'n/prefer-global/text-decoder': 'warn',
52
53
  'n/prefer-global/text-encoder': 'warn',
54
+ 'n/prefer-global/timers': 'warn',
53
55
  'n/prefer-global/url-search-params': 'warn',
54
56
  'n/prefer-global/url': 'warn',
55
57
  'n/prefer-node-protocol': 'warn',
@@ -15,6 +15,7 @@ function playwright() {
15
15
  },
16
16
  files: _globs.globs.e2e,
17
17
  rules: {
18
+ 'playwright/consistent-spacing-between-blocks': 'warn',
18
19
  'playwright/expect-expect': 'error',
19
20
  'playwright/missing-playwright-await': 'error',
20
21
  'playwright/max-nested-describe': ['warn', {
@@ -79,9 +79,7 @@ function react(options = {}) {
79
79
  '@eslint-react/no-create-ref': 'error',
80
80
  '@eslint-react/no-direct-mutation-state': 'error',
81
81
  '@eslint-react/no-duplicate-key': 'error',
82
- '@eslint-react/no-default-props': 'warn',
83
82
  '@eslint-react/no-forward-ref': 'warn',
84
- '@eslint-react/no-implicit-key': 'error',
85
83
  '@eslint-react/no-missing-context-display-name': 'warn',
86
84
  '@eslint-react/no-missing-key': 'error',
87
85
  '@eslint-react/no-misused-capture-owner-stack': 'error',
@@ -91,7 +89,6 @@ function react(options = {}) {
91
89
  '@eslint-react/no-set-state-in-component-did-mount': 'warn',
92
90
  '@eslint-react/no-set-state-in-component-did-update': 'warn',
93
91
  '@eslint-react/no-set-state-in-component-will-update': 'warn',
94
- '@eslint-react/no-string-refs': 'error',
95
92
  '@eslint-react/dom/no-string-style-prop': 'error',
96
93
  '@eslint-react/no-unsafe-component-will-mount': 'warn',
97
94
  '@eslint-react/no-unsafe-component-will-receive-props': 'warn',
@@ -101,6 +98,7 @@ function react(options = {}) {
101
98
  '@eslint-react/no-unused-class-component-members': 'warn',
102
99
  '@eslint-react/no-unused-state': 'warn',
103
100
  ...(0, _conditions.predicate)(projectService, {
101
+ '@eslint-react/no-implicit-key': 'error',
104
102
  '@eslint-react/no-unused-props': 'warn'
105
103
  }),
106
104
  '@eslint-react/no-useless-forward-ref': 'off',
@@ -115,11 +113,7 @@ function react(options = {}) {
115
113
  '@eslint-react/hooks-extra/no-direct-set-state-in-use-effect': 'off',
116
114
  '@eslint-react/naming-convention/component-name': 'warn',
117
115
  '@eslint-react/naming-convention/context-name': 'warn',
118
- '@eslint-react/naming-convention/filename-extension': ['error', {
119
- allow: 'always',
120
- extensions: ['.jsx', '.tsx']
121
- }],
122
- '@eslint-react/naming-convention/filename': 'off',
116
+ '@eslint-react/naming-convention/id-name': 'warn',
123
117
  '@eslint-react/naming-convention/ref-name': 'warn',
124
118
  '@eslint-react/naming-convention/use-state': ['warn', {
125
119
  enforceAssignment: true,
@@ -129,6 +123,7 @@ function react(options = {}) {
129
123
  '@eslint-react/web-api/no-leaked-event-listener': 'error',
130
124
  '@eslint-react/web-api/no-leaked-interval': 'error',
131
125
  '@eslint-react/web-api/no-leaked-resize-observer': 'error',
126
+ '@eslint-react/rsc/function-definition': 'error',
132
127
  'react-hooks/rules-of-hooks': 'error',
133
128
  'react-hooks/exhaustive-deps': 'warn',
134
129
  'react-hooks/config': 'error',
@@ -28,6 +28,7 @@ async function tailwind(options = {}) {
28
28
  'better-tailwindcss/no-deprecated-classes': 'warn',
29
29
  'better-tailwindcss/no-conflicting-classes': 'error',
30
30
  'better-tailwindcss/no-unnecessary-whitespace': 'warn',
31
+ 'better-tailwindcss/enforce-canonical-classes': 'warn',
31
32
  'better-tailwindcss/enforce-consistent-class-order': 'warn',
32
33
  'better-tailwindcss/enforce-consistent-variable-syntax': 'error',
33
34
  'better-tailwindcss/enforce-shorthand-classes': 'warn',
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fullstacksjs/eslint-config",
3
- "version": "13.14.0",
3
+ "version": "14.0.1",
4
4
  "license": "MIT",
5
5
  "author": "fullstacks <fullstacksjs@gmail.com>",
6
6
  "description": "fullstacks eslint config",
@@ -16,7 +16,7 @@
16
16
  "src",
17
17
  "cjs"
18
18
  ],
19
- "packageManager": "npm@11.7.0",
19
+ "packageManager": "npm@11.10.0",
20
20
  "scripts": {
21
21
  "lint": "eslint .",
22
22
  "spell": "cspell ./* --no-progress",
@@ -37,54 +37,55 @@
37
37
  }
38
38
  },
39
39
  "dependencies": {
40
- "@eslint-react/eslint-plugin": "2.5.1",
41
- "@eslint/compat": "2.0.0",
42
- "@next/eslint-plugin-next": "16.1.1",
43
- "@stylistic/eslint-plugin": "5.6.1",
44
- "@vitest/eslint-plugin": "1.6.5",
40
+ "@eslint-react/eslint-plugin": "2.13.0",
41
+ "@eslint/compat": "2.0.2",
42
+ "@next/eslint-plugin-next": "16.1.6",
43
+ "@stylistic/eslint-plugin": "5.8.0",
44
+ "@vitest/eslint-plugin": "1.6.9",
45
45
  "deepmerge": "4.3.1",
46
- "eslint-plugin-better-tailwindcss": "3.8.0",
47
- "eslint-plugin-cypress": "5.2.0",
46
+ "eslint-plugin-better-tailwindcss": "4.3.0",
47
+ "eslint-plugin-cypress": "5.3.0",
48
48
  "eslint-plugin-import-x": "4.16.1",
49
- "eslint-plugin-jest": "29.12.1",
49
+ "eslint-plugin-jest": "29.15.0",
50
50
  "eslint-plugin-jsx-a11y": "6.10.2",
51
- "eslint-plugin-n": "17.23.1",
52
- "eslint-plugin-perfectionist": "5.2.0",
53
- "eslint-plugin-playwright": "2.4.0",
54
- "eslint-plugin-prettier": "5.5.4",
51
+ "eslint-plugin-n": "17.24.0",
52
+ "eslint-plugin-perfectionist": "5.5.0",
53
+ "eslint-plugin-playwright": "2.5.1",
54
+ "eslint-plugin-prettier": "5.5.5",
55
55
  "eslint-plugin-promise": "7.2.1",
56
56
  "eslint-plugin-react-hooks": "7.0.1",
57
- "eslint-plugin-regexp": "2.10.0",
58
- "eslint-plugin-storybook": "10.1.11",
59
- "globals": "17.0.0",
57
+ "eslint-plugin-regexp": "3.0.0",
58
+ "eslint-plugin-storybook": "10.2.9",
59
+ "globals": "17.3.0",
60
60
  "local-pkg": "1.1.2",
61
- "typescript-eslint": "8.51.0"
61
+ "typescript-eslint": "8.56.0"
62
62
  },
63
63
  "devDependencies": {
64
64
  "@eslint/eslintrc": "3.3.3",
65
65
  "@eslint/js": "9.39.2",
66
- "@semantic-release/github": "12.0.2",
67
- "@semantic-release/npm": "13.1.3",
66
+ "@semantic-release/github": "12.0.6",
67
+ "@semantic-release/npm": "13.1.4",
68
68
  "@semantic-release/release-notes-generator": "14.1.0",
69
69
  "@types/eslint": "9.6.1",
70
- "cspell": "9.4.0",
70
+ "cspell": "9.6.4",
71
71
  "eslint": "9.39.2",
72
72
  "husky": "9.1.7",
73
73
  "jest": "30.2.0",
74
74
  "lint-staged": "16.2.7",
75
75
  "pinst": "3.0.0",
76
- "prettier": "3.7.4",
77
- "semantic-release": "25.0.2",
78
- "storybook": "10.1.11",
76
+ "prettier": "3.8.1",
77
+ "semantic-release": "25.0.3",
78
+ "storybook": "10.2.9",
79
79
  "typescript": "5.9.3",
80
80
  "unbuild": "3.6.1"
81
81
  },
82
82
  "peerDependencies": {
83
83
  "cypress": ">=8",
84
- "eslint": ">=9.22",
85
- "prettier": "3",
86
- "react": ">=16",
87
- "typescript": ">=4.7"
84
+ "eslint": ">=9.38",
85
+ "prettier": ">=3",
86
+ "react": ">=18",
87
+ "tailwindcss": ">=3.3.0",
88
+ "typescript": ">=5"
88
89
  },
89
90
  "peerDependenciesMeta": {
90
91
  "typescript": {
@@ -96,6 +97,9 @@
96
97
  "cypress": {
97
98
  "optional": true
98
99
  },
100
+ "tailwindcss": {
101
+ "optional": true
102
+ },
99
103
  "jest": {
100
104
  "optional": true
101
105
  }
@@ -35,8 +35,10 @@ function node(options = {}) {
35
35
  'n/no-unsupported-features/node-builtins': 'off', // Nice but not a general rule
36
36
  'n/prefer-global/buffer': 'warn',
37
37
  'n/prefer-global/console': 'warn',
38
+ 'n/prefer-global/crypto': 'warn',
38
39
  'n/prefer-global/text-decoder': 'warn',
39
40
  'n/prefer-global/text-encoder': 'warn',
41
+ 'n/prefer-global/timers': 'warn',
40
42
  'n/prefer-global/url-search-params': 'warn',
41
43
  'n/prefer-global/url': 'warn',
42
44
  'n/prefer-node-protocol': 'warn',
@@ -8,6 +8,7 @@ function playwright() {
8
8
  plugins: { playwright: plugin },
9
9
  files: globs.e2e,
10
10
  rules: {
11
+ 'playwright/consistent-spacing-between-blocks': 'warn',
11
12
  'playwright/expect-expect': 'error',
12
13
  'playwright/missing-playwright-await': 'error',
13
14
  'playwright/max-nested-describe': ['warn', { max: 5 }],
@@ -75,9 +75,7 @@ function react(options = {}) {
75
75
  '@eslint-react/no-create-ref': 'error',
76
76
  '@eslint-react/no-direct-mutation-state': 'error',
77
77
  '@eslint-react/no-duplicate-key': 'error',
78
- '@eslint-react/no-default-props': 'warn',
79
78
  '@eslint-react/no-forward-ref': 'warn',
80
- '@eslint-react/no-implicit-key': 'error',
81
79
  '@eslint-react/no-missing-context-display-name': 'warn',
82
80
  '@eslint-react/no-missing-key': 'error',
83
81
  '@eslint-react/no-misused-capture-owner-stack': 'error',
@@ -87,7 +85,6 @@ function react(options = {}) {
87
85
  '@eslint-react/no-set-state-in-component-did-mount': 'warn',
88
86
  '@eslint-react/no-set-state-in-component-did-update': 'warn',
89
87
  '@eslint-react/no-set-state-in-component-will-update': 'warn',
90
- '@eslint-react/no-string-refs': 'error',
91
88
  '@eslint-react/dom/no-string-style-prop': 'error',
92
89
  '@eslint-react/no-unsafe-component-will-mount': 'warn',
93
90
  '@eslint-react/no-unsafe-component-will-receive-props': 'warn',
@@ -97,6 +94,7 @@ function react(options = {}) {
97
94
  '@eslint-react/no-unused-class-component-members': 'warn',
98
95
  '@eslint-react/no-unused-state': 'warn',
99
96
  ...predicate(projectService, {
97
+ '@eslint-react/no-implicit-key': 'error',
100
98
  '@eslint-react/no-unused-props': 'warn',
101
99
  }),
102
100
  '@eslint-react/no-useless-forward-ref': 'off',
@@ -114,8 +112,7 @@ function react(options = {}) {
114
112
 
115
113
  '@eslint-react/naming-convention/component-name': 'warn',
116
114
  '@eslint-react/naming-convention/context-name': 'warn',
117
- '@eslint-react/naming-convention/filename-extension': ['error', { allow: 'always', extensions: ['.jsx', '.tsx'] }],
118
- '@eslint-react/naming-convention/filename': 'off',
115
+ '@eslint-react/naming-convention/id-name': 'warn',
119
116
  '@eslint-react/naming-convention/ref-name': 'warn',
120
117
  '@eslint-react/naming-convention/use-state': [
121
118
  'warn',
@@ -130,6 +127,8 @@ function react(options = {}) {
130
127
  '@eslint-react/web-api/no-leaked-interval': 'error',
131
128
  '@eslint-react/web-api/no-leaked-resize-observer': 'error',
132
129
 
130
+ '@eslint-react/rsc/function-definition': 'error',
131
+
133
132
  'react-hooks/rules-of-hooks': 'error',
134
133
  'react-hooks/exhaustive-deps': 'warn',
135
134
 
@@ -20,6 +20,7 @@ async function tailwind(options = {}) {
20
20
  'better-tailwindcss/no-deprecated-classes': 'warn',
21
21
  'better-tailwindcss/no-conflicting-classes': 'error',
22
22
  'better-tailwindcss/no-unnecessary-whitespace': 'warn',
23
+ 'better-tailwindcss/enforce-canonical-classes': 'warn',
23
24
  'better-tailwindcss/enforce-consistent-class-order': 'warn',
24
25
  'better-tailwindcss/enforce-consistent-variable-syntax': 'error',
25
26
  'better-tailwindcss/enforce-shorthand-classes': 'warn',