@aarongoldenthal/eslint-config-standard 27.0.0 → 28.0.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.
@@ -0,0 +1,156 @@
1
+ 'use strict';
2
+
3
+ const unicornPlugin = require('eslint-plugin-unicorn');
4
+
5
+ module.exports = [
6
+ {
7
+ files: ['**/*.{js,mjs,cjs}'],
8
+ name: 'unicorn (all files)',
9
+ plugins: { unicorn: unicornPlugin },
10
+ rules: {
11
+ 'unicorn/better-regex': 'error', // Recommended
12
+ 'unicorn/catch-error-name': 'error', // Recommended
13
+ 'unicorn/consistent-destructuring': 'error',
14
+ 'unicorn/consistent-empty-array-spread': 'error', // Recommended
15
+ 'unicorn/consistent-function-scoping': 'error', // Recommended
16
+ 'unicorn/custom-error-definition': 'error',
17
+ 'unicorn/empty-brace-spaces': 'off', // Recommended, Prettier
18
+ 'unicorn/error-message': 'error', // Recommended
19
+ 'unicorn/escape-case': 'error', // Recommended
20
+ 'unicorn/expiring-todo-comments': 'off', // Recommended
21
+ 'unicorn/explicit-length-check': 'error', // Recommended
22
+ 'unicorn/filename-case': ['error', { case: 'kebabCase' }], // Recommended
23
+ 'unicorn/import-style': 'error', // Recommended
24
+ 'unicorn/new-for-builtins': 'error', // Recommended
25
+ 'unicorn/no-abusive-eslint-disable': 'error', // Recommended
26
+ 'unicorn/no-anonymous-default-export': 'error', // Recommended
27
+ 'unicorn/no-array-callback-reference': 'error', // Recommended
28
+ 'unicorn/no-array-for-each': 'error', // Recommended
29
+ 'unicorn/no-array-method-this-argument': 'error', // Recommended
30
+ 'unicorn/no-array-push-push': 'error', // Recommended
31
+ 'unicorn/no-array-reduce': 'error', // Recommended
32
+ 'unicorn/no-await-expression-member': 'error', // Recommended
33
+ 'unicorn/no-await-in-promise-methods': 'error', // Recommended
34
+ 'unicorn/no-console-spaces': 'error', // Recommended
35
+ 'unicorn/no-document-cookie': 'error', // Recommended
36
+ 'unicorn/no-empty-file': 'error', // Recommended
37
+ 'unicorn/no-for-loop': 'error', // Recommended
38
+ 'unicorn/no-hex-escape': 'error', // Recommended
39
+ 'unicorn/no-instanceof-array': 'error', // Recommended
40
+ 'unicorn/no-invalid-fetch-options': 'error', // Recommended
41
+ 'unicorn/no-invalid-remove-event-listener': 'error', // Recommended
42
+ 'unicorn/no-keyword-prefix': 'off', // Recommended
43
+ 'unicorn/no-lonely-if': 'error', // Recommended
44
+ 'unicorn/no-magic-array-flat-depth': 'error', // Recommended
45
+ 'unicorn/no-negated-condition': 'error', // Recommended
46
+ 'unicorn/no-nested-ternary': 'error', // Recommended, Prettier
47
+ 'unicorn/no-new-array': 'error', // Recommended
48
+ 'unicorn/no-new-buffer': 'error', // Recommended
49
+ 'unicorn/no-null': 'error', // Recommended
50
+ 'unicorn/no-object-as-default-parameter': 'error', // Recommended
51
+ 'unicorn/no-process-exit': 'error', // Recommended
52
+ 'unicorn/no-single-promise-in-promise-methods': 'error', // Recommended
53
+ 'unicorn/no-static-only-class': 'error', // Recommended
54
+ 'unicorn/no-thenable': 'error', // Recommended
55
+ 'unicorn/no-this-assignment': 'error', // Recommended
56
+ 'unicorn/no-typeof-undefined': 'error', // Recommended
57
+ 'unicorn/no-unnecessary-await': 'error', // Recommended
58
+ 'unicorn/no-unnecessary-polyfills': 'error', // Recommended
59
+ 'unicorn/no-unreadable-array-destructuring': 'error', // Recommended
60
+ 'unicorn/no-unreadable-iife': 'error', // Recommended
61
+ 'unicorn/no-unused-properties': 'error',
62
+ 'unicorn/no-useless-fallback-in-spread': 'error', // Recommended
63
+ 'unicorn/no-useless-length-check': 'error', // Recommended
64
+ 'unicorn/no-useless-promise-resolve-reject': 'error', // Recommended
65
+ 'unicorn/no-useless-spread': 'error', // Recommended
66
+ 'unicorn/no-useless-switch-case': 'error', // Recommended
67
+ 'unicorn/no-useless-undefined': 'error', // Recommended
68
+ 'unicorn/no-zero-fractions': 'error', // Recommended
69
+ 'unicorn/number-literal-case': 'error', // Prettier // Recommended
70
+ 'unicorn/numeric-separators-style': 'error', // Recommended
71
+ 'unicorn/prefer-add-event-listener': 'error', // Recommended
72
+ 'unicorn/prefer-array-find': 'error', // Recommended
73
+ 'unicorn/prefer-array-flat': 'error', // Recommended
74
+ 'unicorn/prefer-array-flat-map': 'error', // Recommended
75
+ 'unicorn/prefer-array-index-of': 'error', // Recommended
76
+ 'unicorn/prefer-array-some': 'error', // Recommended
77
+ 'unicorn/prefer-at': 'error', // Recommended
78
+ 'unicorn/prefer-blob-reading-methods': 'error', // Recommended
79
+ 'unicorn/prefer-code-point': 'error', // Recommended
80
+ 'unicorn/prefer-date-now': 'error', // Recommended
81
+ 'unicorn/prefer-default-parameters': 'error', // Recommended
82
+ 'unicorn/prefer-dom-node-append': 'error', // Recommended
83
+ 'unicorn/prefer-dom-node-dataset': 'error', // Recommended
84
+ 'unicorn/prefer-dom-node-remove': 'error', // Recommended
85
+ 'unicorn/prefer-dom-node-text-content': 'error', // Recommended
86
+ 'unicorn/prefer-event-target': 'error', // Recommended
87
+ 'unicorn/prefer-export-from': 'error', // Recommended
88
+ 'unicorn/prefer-includes': 'error', // Recommended
89
+ 'unicorn/prefer-json-parse-buffer': 'off',
90
+ 'unicorn/prefer-keyboard-event-key': 'error', // Recommended
91
+ 'unicorn/prefer-logical-operator-over-ternary': 'error', // Recommended
92
+ 'unicorn/prefer-math-trunc': 'off', // Recommended
93
+ 'unicorn/prefer-modern-dom-apis': 'error', // Recommended
94
+ 'unicorn/prefer-modern-math-apis': 'error', // Recommended
95
+ 'unicorn/prefer-module': 'off', // Recommended
96
+ 'unicorn/prefer-native-coercion-functions': 'error', // Recommended
97
+ 'unicorn/prefer-negative-index': 'error', // Recommended
98
+ 'unicorn/prefer-node-protocol': 'error', // Recommended
99
+ 'unicorn/prefer-number-properties': 'error', // Recommended
100
+ 'unicorn/prefer-object-from-entries': 'off', // Recommended
101
+ 'unicorn/prefer-optional-catch-binding': 'error', // Recommended
102
+ 'unicorn/prefer-prototype-methods': 'error', // Recommended
103
+ 'unicorn/prefer-query-selector': 'error', // Recommended
104
+ 'unicorn/prefer-reflect-apply': 'error', // Recommended
105
+ 'unicorn/prefer-regexp-test': 'error', // Recommended
106
+ 'unicorn/prefer-set-has': 'error', // Recommended
107
+ 'unicorn/prefer-set-size': 'error', // Recommended
108
+ 'unicorn/prefer-spread': 'error', // Recommended
109
+ 'unicorn/prefer-string-raw': 'error', // Recommended
110
+ 'unicorn/prefer-string-replace-all': 'error', // Recommended
111
+ 'unicorn/prefer-string-slice': 'error', // Recommended
112
+ 'unicorn/prefer-string-starts-ends-with': 'error', // Recommended
113
+ 'unicorn/prefer-string-trim-start-end': 'error', // Recommended
114
+ 'unicorn/prefer-structured-clone': 'error', // Recommended
115
+ 'unicorn/prefer-switch': 'error', // Recommended
116
+ 'unicorn/prefer-ternary': 'error', // Recommended
117
+ 'unicorn/prefer-top-level-await': 'off', // Recommended
118
+ 'unicorn/prefer-type-error': 'error', // Recommended
119
+ 'unicorn/prevent-abbreviations': [
120
+ 'error',
121
+ {
122
+ allowList: {
123
+ args: true,
124
+ env: true,
125
+ i: true,
126
+ pkg: true
127
+ }
128
+ }
129
+ ], // Recommended
130
+ 'unicorn/relative-url-style': 'error', // Recommended
131
+ 'unicorn/require-array-join-separator': 'error', // Recommended
132
+ 'unicorn/require-number-to-fixed-digits-argument': 'error', // Recommended
133
+ 'unicorn/require-post-message-target-origin': 'off',
134
+ 'unicorn/string-content': 'off',
135
+ 'unicorn/switch-case-braces': ['error', 'always'], // Recommended
136
+ 'unicorn/template-indent': 'error', // Recommended
137
+ 'unicorn/text-encoding-identifier-case': 'error', // Recommended
138
+ 'unicorn/throw-new-error': 'error' // Recommended
139
+ }
140
+ },
141
+ {
142
+ files: [
143
+ // Patterns for jest-config, vitest-config
144
+ '**/__tests__/**/*.{js,mjs,cjs}',
145
+ '**/?(*.)+(spec|test).{js,mjs,cjs}',
146
+ // Pattern for playwright-config
147
+ '**/*.pwtest.{js,mjs,cjs}'
148
+ ],
149
+ name: 'unicorn (test files)',
150
+ rules: {
151
+ // Tests utility functions are more readable when they are
152
+ // nested with the tests
153
+ 'unicorn/consistent-function-scoping': 'off'
154
+ }
155
+ }
156
+ ];
package/vitest-config.js CHANGED
@@ -1,73 +1,69 @@
1
1
  'use strict';
2
2
 
3
+ const vitestPlugin = require('eslint-plugin-vitest');
4
+
3
5
  module.exports = {
4
- overrides: [
5
- {
6
- files: [
7
- '**/__tests__/**/*.[jt]s?(x)',
8
- '**/?(*.)+(spec|test).[jt]s?(x)'
9
- ],
10
- plugins: ['vitest'],
11
- rules: {
12
- 'vitest/consistent-test-filename': [
13
- 'error',
14
- {
15
- allTestPattern: '.*\\.test\\.[tj]sx?$',
16
- pattern: '.*\\.test\\.[tj]sx?$'
17
- }
18
- ],
19
- 'vitest/consistent-test-it': [
20
- 'error',
21
- { fn: 'it', withinDescribe: 'it' }
22
- ],
23
- 'vitest/expect-expect': 'error', // Recommended
24
- 'vitest/max-expects': ['error', { max: 5 }],
25
- 'vitest/max-nested-describe': ['error', { max: 3 }],
26
- 'vitest/no-alias-methods': 'error',
27
- 'vitest/no-commented-out-tests': 'error', // Recommended
28
- 'vitest/no-conditional-expect': 'error',
29
- 'vitest/no-conditional-in-test': 'error',
30
- 'vitest/no-conditional-tests': 'error',
31
- 'vitest/no-disabled-tests': 'error',
32
- 'vitest/no-done-callback': 'error',
33
- 'vitest/no-duplicate-hooks': 'error',
34
- 'vitest/no-focused-tests': 'error',
35
- 'vitest/no-hooks': 'off',
36
- 'vitest/no-identical-title': 'error', // Recommended
37
- 'vitest/no-interpolation-in-snapshots': 'error',
38
- 'vitest/no-large-snapshots': 'off',
39
- 'vitest/no-mocks-import': 'error',
40
- 'vitest/no-restricted-matchers': 'off',
41
- 'vitest/no-restricted-vi-methods': 'off',
42
- 'vitest/no-standalone-expect': 'error',
43
- 'vitest/no-test-prefixes': 'error',
44
- 'vitest/no-test-return-statement': 'error',
45
- 'vitest/prefer-called-with': 'error',
46
- 'vitest/prefer-comparison-matcher': 'error',
47
- 'vitest/prefer-each': 'error',
48
- 'vitest/prefer-equality-matcher': 'error',
49
- 'vitest/prefer-expect-resolves': 'error',
50
- 'vitest/prefer-hooks-in-order': 'error',
51
- 'vitest/prefer-hooks-on-top': 'error',
52
- 'vitest/prefer-lowercase-title': 'error',
53
- 'vitest/prefer-mock-promise-shorthand': 'error',
54
- 'vitest/prefer-snapshot-hint': 'error',
55
- 'vitest/prefer-spy-on': 'error',
56
- 'vitest/prefer-strict-equal': 'error',
57
- 'vitest/prefer-to-be': 'error', // Recommended
58
- 'vitest/prefer-to-be-falsy': 'off',
59
- 'vitest/prefer-to-be-object': 'error',
60
- 'vitest/prefer-to-be-truthy': 'off',
61
- 'vitest/prefer-to-contain': 'error',
62
- 'vitest/prefer-to-have-length': 'error',
63
- 'vitest/prefer-todo': 'error',
64
- 'vitest/require-hook': 'error',
65
- 'vitest/require-to-throw-message': 'error',
66
- 'vitest/require-top-level-describe': 'error',
67
- 'vitest/valid-describe-callback': 'error', // Recommended
68
- 'vitest/valid-expect': 'error', // Recommended
69
- 'vitest/valid-title': 'error' // Recommended
6
+ files: ['**/__tests__/**/*.{js,mjs}', '**/?(*.)+(spec|test).{js,mjs}'],
7
+ name: 'vitest (test files)',
8
+ plugins: { vitest: vitestPlugin },
9
+ rules: {
10
+ 'vitest/consistent-test-filename': [
11
+ 'error',
12
+ {
13
+ allTestPattern: String.raw`.*\.test\.(js|mjs)$`,
14
+ pattern: String.raw`.*\.test\.(js|mjs)$`
70
15
  }
71
- }
72
- ]
16
+ ],
17
+ 'vitest/consistent-test-it': [
18
+ 'error',
19
+ { fn: 'it', withinDescribe: 'it' }
20
+ ],
21
+ 'vitest/expect-expect': 'error', // Recommended
22
+ 'vitest/max-expects': ['error', { max: 5 }],
23
+ 'vitest/max-nested-describe': ['error', { max: 3 }],
24
+ 'vitest/no-alias-methods': 'error',
25
+ 'vitest/no-commented-out-tests': 'error', // Recommended
26
+ 'vitest/no-conditional-expect': 'error',
27
+ 'vitest/no-conditional-in-test': 'error',
28
+ 'vitest/no-conditional-tests': 'error',
29
+ 'vitest/no-disabled-tests': 'error',
30
+ 'vitest/no-done-callback': 'error',
31
+ 'vitest/no-duplicate-hooks': 'error',
32
+ 'vitest/no-focused-tests': 'error',
33
+ 'vitest/no-hooks': 'off',
34
+ 'vitest/no-identical-title': 'error', // Recommended
35
+ 'vitest/no-interpolation-in-snapshots': 'error',
36
+ 'vitest/no-large-snapshots': 'off',
37
+ 'vitest/no-mocks-import': 'error',
38
+ 'vitest/no-restricted-matchers': 'off',
39
+ 'vitest/no-restricted-vi-methods': 'off',
40
+ 'vitest/no-standalone-expect': 'error',
41
+ 'vitest/no-test-prefixes': 'error',
42
+ 'vitest/no-test-return-statement': 'error',
43
+ 'vitest/prefer-called-with': 'error',
44
+ 'vitest/prefer-comparison-matcher': 'error',
45
+ 'vitest/prefer-each': 'error',
46
+ 'vitest/prefer-equality-matcher': 'error',
47
+ 'vitest/prefer-expect-resolves': 'error',
48
+ 'vitest/prefer-hooks-in-order': 'error',
49
+ 'vitest/prefer-hooks-on-top': 'error',
50
+ 'vitest/prefer-lowercase-title': 'error',
51
+ 'vitest/prefer-mock-promise-shorthand': 'error',
52
+ 'vitest/prefer-snapshot-hint': 'error',
53
+ 'vitest/prefer-spy-on': 'error',
54
+ 'vitest/prefer-strict-equal': 'error',
55
+ 'vitest/prefer-to-be': 'error', // Recommended
56
+ 'vitest/prefer-to-be-falsy': 'off',
57
+ 'vitest/prefer-to-be-object': 'error',
58
+ 'vitest/prefer-to-be-truthy': 'off',
59
+ 'vitest/prefer-to-contain': 'error',
60
+ 'vitest/prefer-to-have-length': 'error',
61
+ 'vitest/prefer-todo': 'error',
62
+ 'vitest/require-hook': 'error',
63
+ 'vitest/require-to-throw-message': 'error',
64
+ 'vitest/require-top-level-describe': 'error',
65
+ 'vitest/valid-describe-callback': 'error', // Recommended
66
+ 'vitest/valid-expect': 'error', // Recommended
67
+ 'vitest/valid-title': 'error' // Recommended
68
+ }
73
69
  };