@cto.af/eslint-config 0.0.12 → 0.1.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.
Files changed (4) hide show
  1. package/index.js +190 -266
  2. package/jsdoc.js +78 -0
  3. package/modules.js +32 -0
  4. package/package.json +10 -7
package/index.js CHANGED
@@ -7,43 +7,46 @@ module.exports = {
7
7
  es2020: true,
8
8
  },
9
9
  plugins: [
10
- 'jsdoc',
11
10
  'node',
12
11
  ],
12
+ ignorePatterns: [
13
+ 'coverage/',
14
+ 'node_modules/',
15
+ 'docs/',
16
+ ],
13
17
  parserOptions: {
14
18
  ecmaVersion: 2020,
15
19
  },
16
20
  reportUnusedDisableDirectives: true,
17
- settings: {
18
- jsdoc: {
19
- tagNamePreference: {
20
- extends: 'extends',
21
- },
22
- },
23
- },
24
21
  rules: {
25
- // Last updated 2021-08-03, v7.32.0
22
+ // Last updated 2022-02-10, v8.6.0
23
+ // eslint-plugin-node 11.1.0
26
24
 
27
- // [Possible Errors](https://eslint.org/docs/rules/#possible-errors)
25
+ // [Possible Problems](https://eslint.org/docs/rules/#possible-problems)
26
+ 'array-callback-return': ['error', {allowImplicit: true}],
27
+ 'constructor-super': 'error',
28
28
  'for-direction': 'error',
29
29
  'getter-return': 'error',
30
30
  'no-async-promise-executor': 'error',
31
+ 'no-await-in-loop': 'off', // I'll figure these out myself.
32
+ 'no-class-assign': 'error',
31
33
  'no-compare-neg-zero': 'error',
32
34
  'no-cond-assign': 'error',
35
+ 'no-const-assign': 'error',
33
36
  'no-constant-condition': 'error',
37
+ 'no-constructor-return': 'error',
34
38
  'no-control-regex': 'error',
35
39
  'no-debugger': 'error',
36
40
  'no-dupe-args': 'error',
41
+ 'no-dupe-class-members': 'error',
37
42
  'no-dupe-else-if': 'error',
38
43
  'no-dupe-keys': 'error',
39
44
  'no-duplicate-case': 'error',
40
- 'no-empty': 'error',
45
+ 'no-duplicate-imports': 'error',
41
46
  'no-empty-character-class': 'error',
47
+ 'no-empty-pattern': 'error',
42
48
  'no-ex-assign': 'error',
43
- 'no-extra-boolean-cast': 'error',
44
- // I disagree with this one. Use lots of parens to make things clear.
45
- 'no-extra-parens': 'off',
46
- 'no-extra-semi': 'error',
49
+ 'no-fallthrough': 'error',
47
50
  'no-func-assign': 'error',
48
51
  'no-import-assign': 'error',
49
52
  'no-inner-declarations': 'error',
@@ -51,169 +54,199 @@ module.exports = {
51
54
  'no-irregular-whitespace': 'error',
52
55
  'no-loss-of-precision': 'error',
53
56
  'no-misleading-character-class': 'error',
57
+ 'no-new-symbol': 'error',
54
58
  'no-obj-calls': 'error',
55
59
  'no-promise-executor-return': 'error',
56
60
  'no-prototype-builtins': 'error',
57
- 'no-regex-spaces': 'error',
61
+ 'no-self-assign': 'error',
62
+ 'no-self-compare': 'error',
58
63
  'no-setter-return': 'error',
59
64
  'no-sparse-arrays': 'error',
60
65
  'no-template-curly-in-string': 'error',
66
+ 'no-this-before-super': 'error',
67
+ 'no-undef': 'error',
61
68
  'no-unexpected-multiline': 'error',
69
+ 'no-unmodified-loop-condition': 'error',
62
70
  'no-unreachable': 'error',
63
71
  'no-unreachable-loop': 'error',
64
72
  'no-unsafe-finally': 'error',
65
73
  'no-unsafe-negation': 'error',
66
74
  'no-unsafe-optional-chaining': 'error',
75
+ 'no-unused-private-class-members': 'error',
76
+ 'no-unused-vars': [
77
+ 'error', {
78
+ args: 'none',
79
+ caughtErrors: 'all',
80
+ caughtErrorsIgnorePattern: '^ignore',
81
+ },
82
+ ],
83
+ 'no-use-before-define': 'error',
67
84
  'no-useless-backreference': 'error',
68
- 'node/handle-callback-err': ['error', 'er'],
69
- 'node/no-callback-literal': 'error',
70
- 'node/no-exports-assign': 'error',
71
- 'node/no-extraneous-import': 'error',
72
- 'node/no-extraneous-require': 'error',
73
- 'node/no-missing-import': 'error',
74
- // This one doesn't work yet:
75
- 'node/no-missing-require': 'off',
76
- 'node/no-new-require': 'error',
77
- 'node/no-path-concat': 'error',
78
- // No.
79
- // node/no-process-exit
80
- 'node/no-unpublished-bin': 'error',
81
- // Doesn't work:
82
- // 'node/no-unpublished-import': 'error',
83
- // 'node/no-unpublished-require': 'error',
84
- 'node/no-unsupported-features/es-builtins': 'error',
85
- 'node/no-unsupported-features/es-syntax': 'error',
86
- 'node/no-unsupported-features/node-builtins': 'error',
87
- 'node/shebang': 'warn',
88
-
89
85
  'require-atomic-updates': 'error',
90
86
  'use-isnan': 'error',
91
87
  'valid-typeof': ['error', {requireStringLiterals: true}],
92
88
 
93
- // [Best Practices](https://eslint.org/docs/rules/#best-practices)
89
+ // [Suggestions](https://eslint.org/docs/rules/#suggestions)
94
90
  'accessor-pairs': 'error',
95
- 'array-callback-return': ['error', {allowImplicit: true}],
91
+ 'arrow-body-style': ['error', 'as-needed'],
96
92
  'block-scoped-var': 'error',
93
+ 'camelcase': 'off', // If I had started with this.
94
+ 'capitalized-comments': ['error', 'always', {
95
+ ignoreConsecutiveComments: true,
96
+ ignorePattern: 'c8',
97
+ }],
97
98
  'class-methods-use-this': 'warn',
98
99
  // This one is pedantic even for me.
99
- complexity: 'off',
100
+ 'complexity': 'off',
100
101
  'consistent-return': 'error',
101
- curly: ['error', 'multi-line'],
102
+ 'consistent-this': 'off', // Not needed anymore with =>
103
+ 'curly': ['error', 'multi-line'],
102
104
  // I use exhastive cases a lot, which makes the default unreachable
103
105
  'default-case': 'off',
104
106
  'default-case-last': 'error',
105
107
  'default-param-last': 'error',
106
- 'dot-location': ['error', 'property'],
107
108
  'dot-notation': 'error',
108
- eqeqeq: ['error', 'always', {null: 'ignore'}],
109
+ 'eqeqeq': ['error', 'always', {null: 'ignore'}],
110
+ 'func-name-matching': 'error',
111
+ 'func-names': ['error', 'as-needed'],
112
+ 'func-style': ['error', 'declaration', {allowArrowFunctions: true}],
109
113
  'grouped-accessor-pairs': 'error',
110
114
  'guard-for-in': 'error',
115
+ 'id-denylist': 'off', // Not needed
116
+ 'id-length': 'off', // Not needed
117
+ 'id-match': 'off', // Not needed
118
+ 'init-declarations': 'error',
119
+ 'max-classes-per-file': 'off', // No.
120
+ 'max-depth': 'off', // No.
121
+ 'max-lines': 'off', // No.
122
+ 'max-lines-per-function': 'off', // No.
123
+ 'max-nested-callbacks': 'off', // No.
124
+ 'max-params': ['error', 4],
125
+ 'max-statements': 'off', // No.
126
+ 'multiline-comment-style': ['error', 'separate-lines'],
127
+ 'new-cap': 'error',
128
+ 'no-array-constructor': 'error',
111
129
  'no-alert': 'error',
130
+ 'no-bitwise': 'off', // Lol. Not in these projects
112
131
  'no-caller': 'error',
113
132
  'no-case-declarations': 'error',
114
- 'no-constructor-return': 'error',
133
+ 'no-confusing-arrow': 'error',
134
+ 'no-console': 'error',
135
+ 'no-continue': 'off', // Why?
136
+ 'no-delete-var': 'error',
115
137
  'no-div-regex': 'error',
116
138
  'no-else-return': 'error',
139
+ 'no-empty': 'error',
117
140
  'no-empty-function': 'error',
118
- 'no-empty-pattern': 'error',
119
- // I disagree with this one.
120
- 'no-eq-null': 'off',
141
+ 'no-eq-null': 'off', // I disagree with this one.
121
142
  'no-eval': 'error',
122
143
  'no-extend-native': 'error',
123
144
  'no-extra-bind': 'error',
145
+ 'no-extra-boolean-cast': 'error',
124
146
  'no-extra-label': 'error',
125
- 'no-fallthrough': 'error',
147
+ 'no-extra-semi': 'error',
126
148
  'no-floating-decimal': 'error',
127
149
  'no-global-assign': 'error',
128
150
  'no-implicit-coercion': 'error',
129
151
  'no-implicit-globals': 'error',
130
152
  'no-implied-eval': 'error',
153
+ 'no-inline-comments': 'off', // Meta.
131
154
  'no-invalid-this': 'error',
132
155
  'no-iterator': 'error',
156
+ 'no-label-var': 'error',
133
157
  'no-labels': 'error',
134
158
  'no-lone-blocks': 'error',
159
+ 'no-lonely-if': 'error',
135
160
  'no-loop-func': 'error',
136
161
  // No shot at this for node-cbor. For other projects, yes.
137
162
  'no-magic-numbers': 'off',
138
- 'no-multi-spaces': 'error',
163
+ 'no-mixed-operators': 'error',
164
+ 'no-multi-assign': 'error',
139
165
  'no-multi-str': 'error',
166
+ 'no-negated-condition': 'error',
167
+ 'no-nested-ternary': 'error',
140
168
  'no-new': 'error',
141
169
  'no-new-func': 'error',
170
+ 'no-new-object': 'error',
142
171
  'no-new-wrappers': 'warn',
143
172
  'no-nonoctal-decimal-escape': 'error',
144
173
  'no-octal': 'error',
145
174
  'no-octal-escape': 'warn',
146
- // I do this all the time.
147
- 'no-param-reassign': 'off',
175
+ 'no-param-reassign': 'off', // I do this all the time.
176
+ 'no-plusplus': 'off', // What?
148
177
  'no-proto': 'error',
149
178
  'no-redeclare': 'error',
150
- 'no-restricted-properties': 'error',
179
+ 'no-regex-spaces': 'error',
180
+ 'no-restricted-exports': 'off', // Not needed
181
+ 'no-restricted-globals': 'off', // Not needed
182
+ 'no-restricted-imports': 'off', // Not needed
183
+ 'no-restricted-properties': 'off', // Not needed
184
+ 'no-restricted-syntax': 'off', // Not needed
151
185
  'no-return-assign': 'error',
152
186
  'no-return-await': 'error',
153
187
  'no-script-url': 'error',
154
- 'no-self-assign': 'error',
155
- 'no-self-compare': 'error',
156
188
  'no-sequences': 'error',
189
+ 'no-shadow': 'error',
190
+ 'no-shadow-restricted-names': 'error',
191
+ 'no-ternary': 'off', // No.
157
192
  'no-throw-literal': 'error',
158
- 'no-unmodified-loop-condition': 'error',
193
+ 'no-undef-init': 'off', // Turns out I need this often enough
194
+ 'no-undefined': 'off', // No.
195
+ 'no-underscore-dangle': 'off', // Maybe one day.
196
+ 'no-unneeded-ternary': 'error',
159
197
  'no-unused-expressions': ['error', {allowShortCircuit: true}],
160
198
  'no-unused-labels': 'error',
161
199
  'no-useless-call': 'error',
162
200
  'no-useless-catch': 'error',
201
+ 'no-useless-computed-key': 'error',
163
202
  'no-useless-concat': 'error',
203
+ 'no-useless-constructor': 'off', // I like useless constructors
164
204
  'no-useless-escape': 'error',
205
+ 'no-useless-rename': 'error',
165
206
  'no-useless-return': 'error',
207
+ 'no-var': 'error',
166
208
  'no-void': 'error',
167
- // Only turn this on periodically
168
- 'no-warning-comments': 'off',
209
+ 'no-warning-comments': 'off', // Only turn this on periodically
169
210
  'no-with': 'error',
170
- 'node/no-deprecated-api': 'error',
211
+ 'object-shorthand': 'error',
212
+ 'one-var': ['error', 'never'],
213
+ 'one-var-declaration-per-line': 'error',
214
+ 'operator-assignment': 'error',
215
+ 'prefer-arrow-callback': 'error',
216
+ 'prefer-const': 'error',
217
+ 'prefer-destructuring': 'error',
218
+ 'prefer-exponentiation-operator': 'error',
171
219
  'prefer-named-capture-group': 'error',
220
+ 'prefer-numeric-literals': 'error',
221
+ 'prefer-object-has-own': 'off', // Not yet
222
+ 'prefer-object-spread': 'error',
172
223
  'prefer-promise-reject-errors': 'warn',
173
224
  'prefer-regex-literals': 'error',
174
- radix: 'error',
225
+ 'prefer-rest-params': 'error',
226
+ 'prefer-spread': 'error',
227
+ 'prefer-template': 'error',
228
+ 'quote-props': ['error', 'consistent-as-needed'],
229
+ 'radix': 'error',
175
230
  'require-await': 'error',
176
- // No.
177
- 'require-unicode-regexp': 'off',
231
+ 'require-unicode-regexp': 'off', // No.
232
+ 'require-yield': 'error',
233
+ 'sort-imports': 'error',
234
+ 'sort-keys': 'off', // Pedantic
235
+ 'sort-vars': 'off', // Pedantic
236
+ 'spaced-comment': ['error', 'always'],
237
+ 'strict': ['error', 'global'],
238
+ 'symbol-description': 'error',
178
239
  'vars-on-top': 'error',
179
- 'wrap-iife': 'error',
180
- yoda: ['error', 'never', {exceptRange: true}],
181
-
182
- // [Strict Mode](https://eslint.org/docs/rules/#strict-mode)
183
- strict: ['error', 'global'],
184
-
185
- // [Variables](https://eslint.org/docs/rules/#variables)
186
- 'init-declarations': 'error',
187
- 'no-delete-var': 'error',
188
- 'no-label-var': 'error',
189
- 'no-restricted-globals': 'error',
190
- 'no-shadow': 'error',
191
- 'no-shadow-restricted-names': 'error',
192
- 'no-undef': 'error',
193
- 'no-undef-init': 'off', // Turns out I need this often enough
194
- // No.
195
- 'no-undefined': 'off',
196
- 'no-unused-vars': [
197
- 'error', {
198
- args: 'none',
199
- caughtErrors: 'all',
200
- caughtErrorsIgnorePattern: '^ignore',
201
- },
202
- ],
203
- 'no-use-before-define': 'error',
240
+ 'yoda': ['error', 'never', {exceptRange: true}],
204
241
 
205
- // [Stylistic Issues](https://eslint.org/docs/rules/#stylistic-issues)
242
+ // [Layout & Formatting](https://eslint.org/docs/rules/#layout-formatting)
206
243
  'array-bracket-newline': ['error', 'consistent'],
207
244
  'array-bracket-spacing': ['error', 'never'],
208
245
  'array-element-newline': ['error', 'consistent'],
246
+ 'arrow-parens': ['error', 'as-needed'],
247
+ 'arrow-spacing': 'error',
209
248
  'block-spacing': ['error', 'always'],
210
249
  'brace-style': ['error', '1tbs'],
211
- // If I had started with this, maybe
212
- camelcase: 'off',
213
- 'capitalized-comments': ['error', 'always', {
214
- ignoreConsecutiveComments: true,
215
- ignorePattern: 'c8',
216
- }],
217
250
  'comma-dangle': ['error', {
218
251
  arrays: 'always-multiline',
219
252
  objects: 'always-multiline',
@@ -224,86 +257,96 @@ module.exports = {
224
257
  'comma-spacing': 'error',
225
258
  'comma-style': ['error', 'last'],
226
259
  'computed-property-spacing': 'error',
227
- // Not needed anymore with =>
228
- 'consistent-this': 'off',
260
+ 'dot-location': ['error', 'property'],
229
261
  'eol-last': 'error',
230
262
  'func-call-spacing': 'error',
231
- 'func-name-matching': 'error',
232
- 'func-names': ['error', 'as-needed'],
233
- 'func-style': ['error', 'declaration', {allowArrowFunctions: true}],
234
263
  'function-call-argument-newline': ['error', 'consistent'],
235
264
  'function-paren-newline': ['error', 'consistent'],
236
- // Not needed
237
- // id-denylist
238
- // id-length
239
- // id-match
265
+ 'generator-star-spacing': 'error',
240
266
  'implicit-arrow-linebreak': ['error', 'beside'],
241
- indent: ['error', 2, {SwitchCase: 1}],
242
-
243
- 'jsdoc/require-jsdoc': ['error', {
244
- publicOnly: {ancestorsOnly: true},
245
- }],
246
-
247
- // Not needed
248
- // jsx-quotes
267
+ 'indent': ['error', 2, {SwitchCase: 1}],
268
+ 'jsx-quotes': 'off', // Not needed
249
269
  'key-spacing': 'error',
250
270
  'keyword-spacing': 'error',
251
- // I'm all over the place on these
252
- 'line-comment-position': 'off',
271
+ 'line-comment-position': 'off', // I'm all over the place on these
253
272
  'linebreak-style': 'error',
254
273
  'lines-around-comment': ['error', {
255
274
  allowBlockStart: true,
256
275
  allowClassStart: true,
257
276
  }],
258
- 'lines-between-class-members': 'error',
259
- // No.
260
- 'max-depth': 'off',
277
+ 'lines-between-class-members': ['error', 'always', {
278
+ exceptAfterSingleLine: true,
279
+ }],
261
280
  'max-len': ['error', 80, {
281
+ ignoreRegExpLiterals: true,
262
282
  ignoreStrings: true,
263
283
  ignoreTemplateLiterals: true,
264
- ignoreRegExpLiterals: true,
284
+ ignoreUrls: true,
265
285
  }],
266
- // No.
267
- // max-lines
268
- // max-lines-per-function
269
- // max-nested-callbacks
270
- 'max-params': ['error', 4],
271
- // No.
272
- // max-statements
273
- // max-statements-per-line
274
- 'multiline-comment-style': ['error', 'separate-lines'],
286
+ 'max-statements-per-line': 'off',
275
287
  'multiline-ternary': ['error', 'always-multiline'],
276
- 'new-cap': 'error',
277
288
  'new-parens': 'error',
278
289
  'newline-per-chained-call': 'error',
279
- 'no-array-constructor': 'error',
280
- // Lol. Not in these projects
281
- // no-bitwise
282
- // no-continue
283
- // no-inline-comments
284
- 'no-lonely-if': 'error',
285
- 'no-mixed-operators': 'error',
290
+ 'no-extra-parens': 'off', // Too fiddly to torn off everything.
286
291
  'no-mixed-spaces-and-tabs': 'error',
287
- 'no-multi-assign': 'error',
292
+ 'no-multi-spaces': 'error',
288
293
  'no-multiple-empty-lines': ['error', {max: 1}],
289
- 'no-negated-condition': 'error',
290
- 'no-nested-ternary': 'error',
291
- 'no-new-object': 'error',
292
- // What?
293
- // no-plusplus
294
- // no-restricted-syntax
295
294
  'no-tabs': 'error',
296
- // No.
297
- // no-ternary
298
295
  'no-trailing-spaces': 'error',
299
- // 'no-underscore-dangle': 'error',
300
- 'no-unneeded-ternary': 'error',
301
296
  'no-whitespace-before-property': 'error',
302
- // No
303
- 'node/callback-return': 'off',
297
+ 'nonblock-statement-body-position': 'error',
298
+ 'object-curly-newline': 'error',
299
+ 'object-curly-spacing': ['error', 'never'],
300
+ 'object-property-newline': ['error', {allowAllPropertiesOnSameLine: true}],
301
+ 'operator-linebreak': ['error', 'after'],
302
+ 'padded-blocks': ['error', 'never'],
303
+ 'padding-line-between-statements': 'error',
304
+ 'quotes': ['error', 'single'],
305
+ 'rest-spread-spacing': ['error', 'never'],
306
+ 'semi': ['error', 'never'],
307
+ 'semi-spacing': 'error',
308
+ 'semi-style': ['error', 'first'],
309
+ 'space-before-blocks': 'error',
310
+ 'space-before-function-paren': ['error', 'never'],
311
+ 'space-in-parens': 'error',
312
+ 'space-infix-ops': ['error', {int32Hint: false}],
313
+ 'space-unary-ops': 'error',
314
+ 'switch-colon-spacing': 'error',
315
+ 'template-curly-spacing': 'error',
316
+ 'template-tag-spacing': 'error',
317
+ 'unicode-bom': 'error',
318
+ 'wrap-iife': 'error',
319
+ 'wrap-regex': 'off', // No.
320
+ 'yield-star-spacing': ['error', 'before'],
321
+
322
+ // [Possible Errors](https://github.com/mysticatea/eslint-plugin-node#possible-errors)
323
+ 'node/handle-callback-err': ['error', 'er'],
324
+ 'node/no-callback-literal': 'error',
325
+ 'node/no-exports-assign': 'error',
326
+ 'node/no-extraneous-import': 'error',
327
+ 'node/no-extraneous-require': 'error',
328
+ 'node/no-missing-import': 'error',
329
+ 'node/no-missing-require': 'off', // This one doesn't work yet:
330
+ 'node/no-new-require': 'error',
331
+ 'node/no-path-concat': 'error',
332
+ 'node/no-process-exit': 'off', // No.
333
+ 'node/no-unpublished-bin': 'error',
334
+ 'node/no-unpublished-import': 'off', // Doesn't work
335
+ 'node/no-unpublished-require': 'off', // Doesn't work
336
+ 'node/no-unsupported-features/es-builtins': 'error',
337
+ 'node/no-unsupported-features/es-syntax': 'error',
338
+ 'node/no-unsupported-features/node-builtins': 'error',
339
+ 'node/process-exit-as-throw': 'error',
340
+ 'node/shebang': 'off', // This always seems to be wrong
341
+
342
+ // [Best Practices](https://github.com/mysticatea/eslint-plugin-node#best-practices)
343
+ 'node/no-deprecated-api': 'error',
344
+
345
+ // [Stylistic Issues](https://github.com/mysticatea/eslint-plugin-node#stylistic-issues)
346
+ 'node/callback-return': 'off', // No
304
347
  'node/exports-style': 'off',
305
348
  // Doesn't work for `import 'regenerator-runtime/runtime'`
306
- 'node/file-extension-in-import': 'off',
349
+ 'node/file-extension-in-import': 'error',
307
350
  'node/global-require': 'off',
308
351
  'node/no-mixed-requires': 'error',
309
352
  // No
@@ -322,125 +365,6 @@ module.exports = {
322
365
  // Not yet
323
366
  // node/prefer-promises/dns
324
367
  // node/prefer-promises/fs
325
-
326
- 'nonblock-statement-body-position': 'error',
327
- 'object-curly-newline': 'error',
328
- 'object-curly-spacing': ['error', 'never'],
329
- 'object-property-newline': ['error', {allowAllPropertiesOnSameLine: true}],
330
- 'one-var': ['error', 'never'],
331
- 'one-var-declaration-per-line': 'error',
332
- 'operator-assignment': 'error',
333
- 'operator-linebreak': ['error', 'after'],
334
- 'padded-blocks': ['error', 'never'],
335
- 'padding-line-between-statements': 'error',
336
- 'prefer-exponentiation-operator': 'error',
337
- 'prefer-object-spread': 'error',
338
- 'quote-props': ['error', 'as-needed'],
339
- quotes: ['error', 'single'],
340
- semi: ['error', 'never'],
341
- 'semi-spacing': 'error',
342
- 'semi-style': ['error', 'first'],
343
- // Pedantic
344
- // sort-keys
345
- // sort-vars
346
- 'space-before-blocks': 'error',
347
- 'space-before-function-paren': ['error', 'never'],
348
- 'space-in-parens': 'error',
349
- 'space-infix-ops': ['error', {int32Hint: false}],
350
- 'space-unary-ops': 'error',
351
- 'spaced-comment': ['error', 'always'],
352
- 'switch-colon-spacing': 'error',
353
- 'template-tag-spacing': 'error',
354
- 'unicode-bom': 'error',
355
- // No.
356
- // wrap-regex
357
-
358
- // [ECMAScript 6](https://eslint.org/docs/rules/#ecmascript-6)
359
- 'arrow-body-style': ['error', 'as-needed'],
360
- 'arrow-parens': ['error', 'as-needed'],
361
- 'arrow-spacing': 'error',
362
- 'constructor-super': 'error',
363
- 'generator-star-spacing': 'error',
364
- 'no-class-assign': 'error',
365
- 'no-confusing-arrow': 'error',
366
- 'no-const-assign': 'error',
367
- 'no-dupe-class-members': 'error',
368
- 'no-duplicate-imports': 'error',
369
- 'no-new-symbol': 'error',
370
- // Not needed
371
- // no-restricted-exports
372
- // no-restricted-imports
373
- 'no-this-before-super': 'error',
374
- 'no-useless-computed-key': 'error',
375
- // I like useless constructors
376
- 'no-useless-constructor': 'off',
377
- 'no-useless-rename': 'error',
378
- 'no-var': 'error',
379
- 'object-shorthand': 'error',
380
- 'prefer-arrow-callback': 'error',
381
- 'prefer-const': 'error',
382
- 'prefer-destructuring': 'error',
383
- 'prefer-numeric-literals': 'error',
384
- 'prefer-rest-params': 'error',
385
- 'prefer-spread': 'error',
386
- 'prefer-template': 'error',
387
- 'require-yield': 'error',
388
- 'rest-spread-spacing': ['error', 'never'],
389
- 'sort-imports': 'error',
390
- 'symbol-description': 'error',
391
- 'template-curly-spacing': 'error',
392
- 'yield-star-spacing': ['error', 'before'],
393
-
394
- 'jsdoc/check-access': 'error',
395
- 'jsdoc/check-alignment': 'error',
396
- // https://github.com/eslint/eslint/issues/14745
397
- 'jsdoc/check-examples': 'off',
398
- // Track https://github.com/gajus/eslint-plugin-jsdoc/issues/715
399
- // 'jsdoc/check-indentation': 'error',
400
- 'jsdoc/check-line-alignment': 'error',
401
- 'jsdoc/check-param-names': 'error',
402
- 'jsdoc/check-property-names': 'error',
403
- 'jsdoc/check-syntax': 'error',
404
- 'jsdoc/check-tag-names': 'error',
405
- 'jsdoc/check-types': 'error',
406
- 'jsdoc/check-values': 'error',
407
- 'jsdoc/empty-tags': 'error',
408
- 'jsdoc/implements-on-classes': 'error',
409
- 'jsdoc/match-description': 'error',
410
- 'jsdoc/multiline-blocks': 'error',
411
- 'jsdoc/newline-after-description': 'error',
412
- 'jsdoc/no-bad-blocks': 'error',
413
- 'jsdoc/no-defaults': 'off',
414
- 'jsdoc/no-missing-syntax': 'off',
415
- 'jsdoc/no-multi-asterisks': 'error',
416
- 'jsdoc/no-restricted-syntax': 'off',
417
- 'jsdoc/no-types': 'off',
418
- 'jsdoc/no-undefined-types': 'error',
419
- 'jsdoc/require-asterisk-prefix': 'error',
420
- 'jsdoc/require-description': ['error', {exemptedBy: ['inheritdoc', 'private', 'ignore']}],
421
- 'jsdoc/require-description-complete-sentence': 'error',
422
- 'jsdoc/require-example': 'off',
423
- 'jsdoc/require-file-overview': 'off',
424
- 'jsdoc/require-hyphen-before-param-description': ['error', 'never'],
425
- 'jsdoc/require-param': ['error', {exemptedBy: ['inheritdoc', 'private', 'ignore']}],
426
- 'jsdoc/require-param-description': 'error',
427
- 'jsdoc/require-param-name': 'error',
428
- 'jsdoc/require-param-type': 'error',
429
- 'jsdoc/require-property': 'error',
430
- 'jsdoc/require-property-description': 'error',
431
- 'jsdoc/require-property-name': 'error',
432
- 'jsdoc/require-property-type': 'error',
433
- 'jsdoc/require-returns': ['error', {
434
- exemptedBy: ['ignore'],
435
- }],
436
- 'jsdoc/require-returns-check': 'error',
437
- 'jsdoc/require-returns-description': 'error',
438
- 'jsdoc/require-returns-type': 'error',
439
- 'jsdoc/require-throws': 'error',
440
- 'jsdoc/require-yields': 'error',
441
- 'jsdoc/require-yields-check': 'error',
442
- 'jsdoc/tag-lines': 'error',
443
- 'jsdoc/valid-types': 'error',
444
368
  },
445
369
  overrides: [
446
370
  {
package/jsdoc.js ADDED
@@ -0,0 +1,78 @@
1
+ 'use strict'
2
+
3
+ // Use when you're going to generate docs with JSDoc.
4
+
5
+ // module.exports = {
6
+ // extends: '@cto.af/eslint-config/jsdoc'
7
+ // }
8
+ //
9
+
10
+ module.exports = {
11
+ plugins: [
12
+ 'jsdoc',
13
+ ],
14
+ settings: {
15
+ jsdoc: {
16
+ tagNamePreference: {
17
+ extends: 'extends',
18
+ },
19
+ },
20
+ },
21
+ rules: {
22
+ // [Stylistic Issues](https://eslint.org/docs/rules/#stylistic-issues)
23
+ 'jsdoc/require-jsdoc': ['error', {
24
+ publicOnly: {ancestorsOnly: true},
25
+ }],
26
+
27
+ 'jsdoc/check-access': 'error',
28
+ 'jsdoc/check-alignment': 'error',
29
+ // https://github.com/eslint/eslint/issues/14745
30
+ 'jsdoc/check-examples': 'off',
31
+ // Track https://github.com/gajus/eslint-plugin-jsdoc/issues/715
32
+ // 'jsdoc/check-indentation': 'error',
33
+ 'jsdoc/check-line-alignment': 'error',
34
+ 'jsdoc/check-param-names': 'error',
35
+ 'jsdoc/check-property-names': 'error',
36
+ 'jsdoc/check-syntax': 'error',
37
+ 'jsdoc/check-tag-names': 'error',
38
+ 'jsdoc/check-types': 'error',
39
+ 'jsdoc/check-values': 'error',
40
+ 'jsdoc/empty-tags': 'error',
41
+ 'jsdoc/implements-on-classes': 'error',
42
+ 'jsdoc/match-description': 'error',
43
+ 'jsdoc/multiline-blocks': 'error',
44
+ 'jsdoc/newline-after-description': 'error',
45
+ 'jsdoc/no-bad-blocks': 'error',
46
+ 'jsdoc/no-defaults': 'off',
47
+ 'jsdoc/no-missing-syntax': 'off',
48
+ 'jsdoc/no-multi-asterisks': 'error',
49
+ 'jsdoc/no-restricted-syntax': 'off',
50
+ 'jsdoc/no-types': 'off',
51
+ 'jsdoc/no-undefined-types': 'error',
52
+ 'jsdoc/require-asterisk-prefix': 'error',
53
+ 'jsdoc/require-description': ['error', {exemptedBy: ['inheritdoc', 'private', 'ignore']}],
54
+ 'jsdoc/require-description-complete-sentence': 'error',
55
+ 'jsdoc/require-example': 'off',
56
+ 'jsdoc/require-file-overview': 'off',
57
+ 'jsdoc/require-hyphen-before-param-description': ['error', 'never'],
58
+ 'jsdoc/require-param': ['error', {exemptedBy: ['inheritdoc', 'private', 'ignore']}],
59
+ 'jsdoc/require-param-description': 'error',
60
+ 'jsdoc/require-param-name': 'error',
61
+ 'jsdoc/require-param-type': 'error',
62
+ 'jsdoc/require-property': 'error',
63
+ 'jsdoc/require-property-description': 'error',
64
+ 'jsdoc/require-property-name': 'error',
65
+ 'jsdoc/require-property-type': 'error',
66
+ 'jsdoc/require-returns': ['error', {
67
+ exemptedBy: ['ignore'],
68
+ }],
69
+ 'jsdoc/require-returns-check': 'error',
70
+ 'jsdoc/require-returns-description': 'error',
71
+ 'jsdoc/require-returns-type': 'error',
72
+ 'jsdoc/require-throws': 'error',
73
+ 'jsdoc/require-yields': 'error',
74
+ 'jsdoc/require-yields-check': 'error',
75
+ 'jsdoc/tag-lines': 'error',
76
+ 'jsdoc/valid-types': 'error',
77
+ },
78
+ }
package/modules.js ADDED
@@ -0,0 +1,32 @@
1
+ 'use strict'
2
+
3
+ // Use this in type="modules" projects
4
+
5
+ // module.exports = {
6
+ // extends: '@cto.af/eslint-config/modules'
7
+ // }
8
+
9
+ module.exports = {
10
+ extends: [
11
+ './index.js',
12
+ ],
13
+ overrides: [
14
+ {
15
+ files: ['*.js'],
16
+ parserOptions: {
17
+ sourceType: 'module',
18
+ ecmaVersion: '2021',
19
+ },
20
+ rules: {
21
+ // [Possible Errors](https://eslint.org/docs/rules/#possible-errors)
22
+ 'node/no-unsupported-features/es-syntax': [
23
+ 'error',
24
+ {
25
+ version: '>=12.19',
26
+ ignores: ['modules'],
27
+ },
28
+ ],
29
+ },
30
+ },
31
+ ],
32
+ }
package/package.json CHANGED
@@ -1,11 +1,11 @@
1
1
  {
2
2
  "name": "@cto.af/eslint-config",
3
- "version": "0.0.12",
3
+ "version": "0.1.2",
4
4
  "description": "hildjj's lint rules",
5
5
  "main": "index.js",
6
6
  "scripts": {
7
7
  "test": "eslint -c index.js *.js",
8
- "lint": "eslint . --ext js --ext cjs --ext mjs"
8
+ "lint": "eslint . --ext js,cjs,mjs"
9
9
  },
10
10
  "keywords": [
11
11
  "lint"
@@ -14,20 +14,23 @@
14
14
  "license": "MIT",
15
15
  "repository": "hildjj/ctoaf-eslint-config",
16
16
  "peerDependencies": {
17
- "eslint-plugin-ava": "^13.1.0",
18
- "eslint-plugin-jsdoc": "^37.0.3",
17
+ "eslint-plugin-ava": "^13.2.0",
18
+ "eslint-plugin-jsdoc": "^39.2.9",
19
19
  "eslint-plugin-node": "^11.1.0"
20
20
  },
21
21
  "peerDependenciesMeta": {
22
22
  "eslint-plugin-ava": {
23
23
  "optional": true
24
+ },
25
+ "eslint-plugin-jsdoc": {
26
+ "optional": true
24
27
  }
25
28
  },
26
29
  "devDependencies": {
27
- "eslint": "^8.2.0",
28
- "eslint-plugin-ava": "^13.1.0",
30
+ "eslint": "^8.14.0",
31
+ "eslint-plugin-ava": "^13.2.0",
29
32
  "eslint-plugin-hildjj": "link:rules",
30
- "eslint-plugin-jsdoc": "^37.0.3",
33
+ "eslint-plugin-jsdoc": "^39.2.9",
31
34
  "eslint-plugin-node": "^11.1.0"
32
35
  },
33
36
  "engines": {