@cto.af/eslint-config 0.0.9 → 0.1.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.
Files changed (4) hide show
  1. package/index.js +190 -264
  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,168 +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': 'error',
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
- }],
216
250
  'comma-dangle': ['error', {
217
251
  arrays: 'always-multiline',
218
252
  objects: 'always-multiline',
@@ -223,86 +257,96 @@ module.exports = {
223
257
  'comma-spacing': 'error',
224
258
  'comma-style': ['error', 'last'],
225
259
  'computed-property-spacing': 'error',
226
- // Not needed anymore with =>
227
- 'consistent-this': 'off',
260
+ 'dot-location': ['error', 'property'],
228
261
  'eol-last': 'error',
229
262
  'func-call-spacing': 'error',
230
- 'func-name-matching': 'error',
231
- 'func-names': ['error', 'as-needed'],
232
- 'func-style': ['error', 'declaration', {allowArrowFunctions: true}],
233
263
  'function-call-argument-newline': ['error', 'consistent'],
234
264
  'function-paren-newline': ['error', 'consistent'],
235
- // Not needed
236
- // id-denylist
237
- // id-length
238
- // id-match
265
+ 'generator-star-spacing': 'error',
239
266
  'implicit-arrow-linebreak': ['error', 'beside'],
240
- indent: ['error', 2, {SwitchCase: 1}],
241
-
242
- 'jsdoc/require-jsdoc': ['error', {
243
- publicOnly: {ancestorsOnly: true},
244
- }],
245
-
246
- // Not needed
247
- // jsx-quotes
267
+ 'indent': ['error', 2, {SwitchCase: 1}],
268
+ 'jsx-quotes': 'off', // Not needed
248
269
  'key-spacing': 'error',
249
270
  'keyword-spacing': 'error',
250
- // I'm all over the place on these
251
- 'line-comment-position': 'off',
271
+ 'line-comment-position': 'off', // I'm all over the place on these
252
272
  'linebreak-style': 'error',
253
273
  'lines-around-comment': ['error', {
254
274
  allowBlockStart: true,
255
275
  allowClassStart: true,
256
276
  }],
257
- 'lines-between-class-members': 'error',
258
- // No.
259
- 'max-depth': 'off',
277
+ 'lines-between-class-members': ['error', 'always', {
278
+ exceptAfterSingleLine: true,
279
+ }],
260
280
  'max-len': ['error', 80, {
281
+ ignoreRegExpLiterals: true,
261
282
  ignoreStrings: true,
262
283
  ignoreTemplateLiterals: true,
263
- ignoreRegExpLiterals: true,
284
+ ignoreUrls: true,
264
285
  }],
265
- // No.
266
- // max-lines
267
- // max-lines-per-function
268
- // max-nested-callbacks
269
- 'max-params': ['error', 4],
270
- // No.
271
- // max-statements
272
- // max-statements-per-line
273
- 'multiline-comment-style': ['error', 'separate-lines'],
286
+ 'max-statements-per-line': 'off',
274
287
  'multiline-ternary': ['error', 'always-multiline'],
275
- 'new-cap': 'error',
276
288
  'new-parens': 'error',
277
289
  'newline-per-chained-call': 'error',
278
- 'no-array-constructor': 'error',
279
- // Lol. Not in these projects
280
- // no-bitwise
281
- // no-continue
282
- // no-inline-comments
283
- 'no-lonely-if': 'error',
284
- 'no-mixed-operators': 'error',
290
+ 'no-extra-parens': 'off', // Too fiddly to torn off everything.
285
291
  'no-mixed-spaces-and-tabs': 'error',
286
- 'no-multi-assign': 'error',
292
+ 'no-multi-spaces': 'error',
287
293
  'no-multiple-empty-lines': ['error', {max: 1}],
288
- 'no-negated-condition': 'error',
289
- 'no-nested-ternary': 'error',
290
- 'no-new-object': 'error',
291
- // What?
292
- // no-plusplus
293
- // no-restricted-syntax
294
294
  'no-tabs': 'error',
295
- // No.
296
- // no-ternary
297
295
  'no-trailing-spaces': 'error',
298
- // 'no-underscore-dangle': 'error',
299
- 'no-unneeded-ternary': 'error',
300
296
  'no-whitespace-before-property': 'error',
301
- // No
302
- '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': 'warn',
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
303
347
  'node/exports-style': 'off',
304
348
  // Doesn't work for `import 'regenerator-runtime/runtime'`
305
- 'node/file-extension-in-import': 'off',
349
+ 'node/file-extension-in-import': 'error',
306
350
  'node/global-require': 'off',
307
351
  'node/no-mixed-requires': 'error',
308
352
  // No
@@ -321,124 +365,6 @@ module.exports = {
321
365
  // Not yet
322
366
  // node/prefer-promises/dns
323
367
  // node/prefer-promises/fs
324
-
325
- 'nonblock-statement-body-position': 'error',
326
- 'object-curly-newline': 'error',
327
- 'object-curly-spacing': ['error', 'never'],
328
- 'object-property-newline': ['error', {allowAllPropertiesOnSameLine: true}],
329
- 'one-var': ['error', 'never'],
330
- 'one-var-declaration-per-line': 'error',
331
- 'operator-assignment': 'error',
332
- 'operator-linebreak': ['error', 'after'],
333
- 'padded-blocks': ['error', 'never'],
334
- 'padding-line-between-statements': 'error',
335
- 'prefer-exponentiation-operator': 'error',
336
- 'prefer-object-spread': 'error',
337
- 'quote-props': ['error', 'as-needed'],
338
- quotes: ['error', 'single'],
339
- semi: ['error', 'never'],
340
- 'semi-spacing': 'error',
341
- 'semi-style': ['error', 'first'],
342
- // Pedantic
343
- // sort-keys
344
- // sort-vars
345
- 'space-before-blocks': 'error',
346
- 'space-before-function-paren': ['error', 'never'],
347
- 'space-in-parens': 'error',
348
- 'space-infix-ops': ['error', {int32Hint: false}],
349
- 'space-unary-ops': 'error',
350
- 'spaced-comment': ['error', 'always'],
351
- 'switch-colon-spacing': 'error',
352
- 'template-tag-spacing': 'error',
353
- 'unicode-bom': 'error',
354
- // No.
355
- // wrap-regex
356
-
357
- // [ECMAScript 6](https://eslint.org/docs/rules/#ecmascript-6)
358
- 'arrow-body-style': ['error', 'as-needed'],
359
- 'arrow-parens': ['error', 'as-needed'],
360
- 'arrow-spacing': 'error',
361
- 'constructor-super': 'error',
362
- 'generator-star-spacing': 'error',
363
- 'no-class-assign': 'error',
364
- 'no-confusing-arrow': 'error',
365
- 'no-const-assign': 'error',
366
- 'no-dupe-class-members': 'error',
367
- 'no-duplicate-imports': 'error',
368
- 'no-new-symbol': 'error',
369
- // Not needed
370
- // no-restricted-exports
371
- // no-restricted-imports
372
- 'no-this-before-super': 'error',
373
- 'no-useless-computed-key': 'error',
374
- // I like useless constructors
375
- 'no-useless-constructor': 'off',
376
- 'no-useless-rename': 'error',
377
- 'no-var': 'error',
378
- 'object-shorthand': 'error',
379
- 'prefer-arrow-callback': 'error',
380
- 'prefer-const': 'error',
381
- 'prefer-destructuring': 'error',
382
- 'prefer-numeric-literals': 'error',
383
- 'prefer-rest-params': 'error',
384
- 'prefer-spread': 'error',
385
- 'prefer-template': 'error',
386
- 'require-yield': 'error',
387
- 'rest-spread-spacing': ['error', 'never'],
388
- 'sort-imports': 'error',
389
- 'symbol-description': 'error',
390
- 'template-curly-spacing': 'error',
391
- 'yield-star-spacing': ['error', 'before'],
392
-
393
- 'jsdoc/check-access': 'error',
394
- 'jsdoc/check-alignment': 'error',
395
- 'jsdoc/check-examples': 'error',
396
- // Track https://github.com/gajus/eslint-plugin-jsdoc/issues/715
397
- // 'jsdoc/check-indentation': 'error',
398
- 'jsdoc/check-line-alignment': 'error',
399
- 'jsdoc/check-param-names': 'error',
400
- 'jsdoc/check-property-names': 'error',
401
- 'jsdoc/check-syntax': 'error',
402
- 'jsdoc/check-tag-names': 'error',
403
- 'jsdoc/check-types': 'error',
404
- 'jsdoc/check-values': 'error',
405
- 'jsdoc/empty-tags': 'error',
406
- 'jsdoc/implements-on-classes': 'error',
407
- 'jsdoc/match-description': 'error',
408
- 'jsdoc/multiline-blocks': 'error',
409
- 'jsdoc/newline-after-description': 'error',
410
- 'jsdoc/no-bad-blocks': 'error',
411
- 'jsdoc/no-defaults': 'off',
412
- 'jsdoc/no-missing-syntax': 'off',
413
- 'jsdoc/no-multi-asterisks': 'error',
414
- 'jsdoc/no-restricted-syntax': 'off',
415
- 'jsdoc/no-types': 'off',
416
- 'jsdoc/no-undefined-types': 'error',
417
- 'jsdoc/require-asterisk-prefix': 'error',
418
- 'jsdoc/require-description': ['error', {exemptedBy: ['inheritdoc', 'private', 'ignore']}],
419
- 'jsdoc/require-description-complete-sentence': 'error',
420
- 'jsdoc/require-example': 'off',
421
- 'jsdoc/require-file-overview': 'off',
422
- 'jsdoc/require-hyphen-before-param-description': ['error', 'never'],
423
- 'jsdoc/require-param': ['error', {exemptedBy: ['inheritdoc', 'private', 'ignore']}],
424
- 'jsdoc/require-param-description': 'error',
425
- 'jsdoc/require-param-name': 'error',
426
- 'jsdoc/require-param-type': 'error',
427
- 'jsdoc/require-property': 'error',
428
- 'jsdoc/require-property-description': 'error',
429
- 'jsdoc/require-property-name': 'error',
430
- 'jsdoc/require-property-type': 'error',
431
- 'jsdoc/require-returns': ['error', {
432
- exemptedBy: ['ignore'],
433
- }],
434
- 'jsdoc/require-returns-check': 'error',
435
- 'jsdoc/require-returns-description': 'error',
436
- 'jsdoc/require-returns-type': 'error',
437
- 'jsdoc/require-throws': 'error',
438
- 'jsdoc/require-yields': 'error',
439
- 'jsdoc/require-yields-check': 'error',
440
- 'jsdoc/tag-lines': 'error',
441
- 'jsdoc/valid-types': 'error',
442
368
  },
443
369
  overrides: [
444
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.9",
3
+ "version": "0.1.0",
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.0.0",
18
- "eslint-plugin-jsdoc": "^36.1.0",
17
+ "eslint-plugin-ava": "^13.2.0",
18
+ "eslint-plugin-jsdoc": "^37.6.1",
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": "^7.32.0",
28
- "eslint-plugin-ava": "^13.0.0",
30
+ "eslint": "^8.6.0",
31
+ "eslint-plugin-ava": "^13.2.0",
29
32
  "eslint-plugin-hildjj": "link:rules",
30
- "eslint-plugin-jsdoc": "^36.1.0",
33
+ "eslint-plugin-jsdoc": "^37.6.1",
31
34
  "eslint-plugin-node": "^11.1.0"
32
35
  },
33
36
  "engines": {