eslint-config-decent 2.5.0 → 2.6.0-beta2
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.
- package/dist/index.cjs +149 -106
- package/dist/index.d.cts +1 -1
- package/dist/index.d.mts +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.mjs +139 -97
- package/package.json +11 -10
- package/src/eslint.ts +0 -42
- package/src/index.ts +14 -1
- package/src/jsdoc.ts +25 -7
- package/src/stylistic.ts +61 -0
- package/src/types/eslint-js.d.ts +1 -0
- package/src/types/eslint-plugin-jest-dom.d.ts +1 -0
- package/src/types/eslint-plugin-jest.d.ts +1 -0
- package/src/types/eslint-plugin-jsx-a11y.d.ts +1 -0
- package/src/types/eslint-plugin-mocha.d.ts +1 -0
- package/src/types/eslint-plugin-next.d.ts +1 -0
- package/src/types/eslint-plugin-promise.d.ts +1 -0
- package/src/types/eslint-plugin-react-hooks.d.ts +1 -0
- package/src/types/eslint-plugin-react.d.ts +1 -0
- package/src/types/eslint-plugin-security.d.ts +1 -0
- package/src/types/eslint-plugin-testing-library.d.ts +1 -0
- package/src/types/eslint-plugin-unicorn.d.ts +1 -0
package/dist/index.cjs
CHANGED
|
@@ -19,6 +19,7 @@ const a11y = require('eslint-plugin-jsx-a11y');
|
|
|
19
19
|
const react = require('eslint-plugin-react');
|
|
20
20
|
const reactHooks = require('eslint-plugin-react-hooks');
|
|
21
21
|
const security = require('eslint-plugin-security');
|
|
22
|
+
const stylistic = require('@stylistic/eslint-plugin');
|
|
22
23
|
const testingLibrary = require('eslint-plugin-testing-library');
|
|
23
24
|
const unicorn = require('eslint-plugin-unicorn');
|
|
24
25
|
|
|
@@ -39,10 +40,11 @@ const a11y__default = /*#__PURE__*/_interopDefaultCompat(a11y);
|
|
|
39
40
|
const react__default = /*#__PURE__*/_interopDefaultCompat(react);
|
|
40
41
|
const reactHooks__default = /*#__PURE__*/_interopDefaultCompat(reactHooks);
|
|
41
42
|
const security__default = /*#__PURE__*/_interopDefaultCompat(security);
|
|
43
|
+
const stylistic__default = /*#__PURE__*/_interopDefaultCompat(stylistic);
|
|
42
44
|
const testingLibrary__default = /*#__PURE__*/_interopDefaultCompat(testingLibrary);
|
|
43
45
|
const unicorn__default = /*#__PURE__*/_interopDefaultCompat(unicorn);
|
|
44
46
|
|
|
45
|
-
const base$
|
|
47
|
+
const base$d = {
|
|
46
48
|
rules: {
|
|
47
49
|
"array-callback-return": ["error", { allowImplicit: true }],
|
|
48
50
|
"block-scoped-var": "error",
|
|
@@ -107,7 +109,6 @@ const base$c = {
|
|
|
107
109
|
"no-labels": ["error", { allowLoop: false, allowSwitch: false }],
|
|
108
110
|
"no-lone-blocks": "error",
|
|
109
111
|
"no-lonely-if": "error",
|
|
110
|
-
"no-mixed-spaces-and-tabs": "error",
|
|
111
112
|
"no-multi-assign": ["error"],
|
|
112
113
|
"no-multi-str": "error",
|
|
113
114
|
"no-negated-condition": "error",
|
|
@@ -184,44 +185,6 @@ const base$c = {
|
|
|
184
185
|
"no-useless-concat": "error",
|
|
185
186
|
"no-useless-rename": "error",
|
|
186
187
|
"no-useless-return": "error",
|
|
187
|
-
"padding-line-between-statements": [
|
|
188
|
-
"error",
|
|
189
|
-
{
|
|
190
|
-
blankLine: "always",
|
|
191
|
-
prev: ["directive", "block", "block-like", "multiline-block-like", "cjs-export", "cjs-import", "class", "export", "import", "if"],
|
|
192
|
-
next: "*"
|
|
193
|
-
},
|
|
194
|
-
{
|
|
195
|
-
blankLine: "never",
|
|
196
|
-
prev: "directive",
|
|
197
|
-
next: "directive"
|
|
198
|
-
},
|
|
199
|
-
{
|
|
200
|
-
blankLine: "any",
|
|
201
|
-
prev: "*",
|
|
202
|
-
next: ["if", "for", "cjs-import", "import"]
|
|
203
|
-
},
|
|
204
|
-
{
|
|
205
|
-
blankLine: "any",
|
|
206
|
-
prev: ["export", "import"],
|
|
207
|
-
next: ["export", "import"]
|
|
208
|
-
},
|
|
209
|
-
{
|
|
210
|
-
blankLine: "always",
|
|
211
|
-
prev: "*",
|
|
212
|
-
next: ["try", "function", "switch"]
|
|
213
|
-
},
|
|
214
|
-
{
|
|
215
|
-
blankLine: "always",
|
|
216
|
-
prev: "if",
|
|
217
|
-
next: "if"
|
|
218
|
-
},
|
|
219
|
-
{
|
|
220
|
-
blankLine: "never",
|
|
221
|
-
prev: ["return", "throw"],
|
|
222
|
-
next: "*"
|
|
223
|
-
}
|
|
224
|
-
],
|
|
225
188
|
"prefer-const": [
|
|
226
189
|
"error",
|
|
227
190
|
{
|
|
@@ -257,9 +220,7 @@ const cjsAndEsm = {
|
|
|
257
220
|
rules: {
|
|
258
221
|
curly: ["error", "multi-line"],
|
|
259
222
|
"dot-notation": ["error", { allowKeywords: true }],
|
|
260
|
-
"dot-location": ["error", "property"],
|
|
261
223
|
"getter-return": ["error", { allowImplicit: true }],
|
|
262
|
-
"lines-between-class-members": ["error", "always", { exceptAfterSingleLine: false }],
|
|
263
224
|
"no-array-constructor": "error",
|
|
264
225
|
"no-empty-function": [
|
|
265
226
|
"error",
|
|
@@ -283,8 +244,7 @@ const cjsAndEsm = {
|
|
|
283
244
|
allowUnboundThis: true
|
|
284
245
|
}
|
|
285
246
|
],
|
|
286
|
-
"prefer-promise-reject-errors": ["error", { allowEmptyReject: true }]
|
|
287
|
-
"wrap-iife": ["error", "outside", { functionPrototypeMethods: false }]
|
|
247
|
+
"prefer-promise-reject-errors": ["error", { allowEmptyReject: true }]
|
|
288
248
|
}
|
|
289
249
|
};
|
|
290
250
|
const cjs = {
|
|
@@ -292,8 +252,8 @@ const cjs = {
|
|
|
292
252
|
strict: ["error", "global"]
|
|
293
253
|
}
|
|
294
254
|
};
|
|
295
|
-
const configs$
|
|
296
|
-
base: base$
|
|
255
|
+
const configs$d = {
|
|
256
|
+
base: base$d,
|
|
297
257
|
cjsAndEsm,
|
|
298
258
|
cjs
|
|
299
259
|
};
|
|
@@ -392,7 +352,7 @@ const requireIndexRule = utils.ESLintUtils.RuleCreator(() => "https://github.com
|
|
|
392
352
|
}
|
|
393
353
|
});
|
|
394
354
|
|
|
395
|
-
const base$
|
|
355
|
+
const base$c = {
|
|
396
356
|
plugins: {
|
|
397
357
|
"decent-extension": {
|
|
398
358
|
meta: {
|
|
@@ -410,11 +370,11 @@ const base$b = {
|
|
|
410
370
|
"decent-extension/require-index": "error"
|
|
411
371
|
}
|
|
412
372
|
};
|
|
413
|
-
const configs$
|
|
414
|
-
base: base$
|
|
373
|
+
const configs$c = {
|
|
374
|
+
base: base$c
|
|
415
375
|
};
|
|
416
376
|
|
|
417
|
-
const base$
|
|
377
|
+
const base$b = {
|
|
418
378
|
plugins: {
|
|
419
379
|
import: importPlugin__default
|
|
420
380
|
},
|
|
@@ -429,11 +389,11 @@ const base$a = {
|
|
|
429
389
|
]
|
|
430
390
|
}
|
|
431
391
|
};
|
|
432
|
-
const configs$
|
|
433
|
-
base: base$
|
|
392
|
+
const configs$b = {
|
|
393
|
+
base: base$b
|
|
434
394
|
};
|
|
435
395
|
|
|
436
|
-
const base$
|
|
396
|
+
const base$a = {
|
|
437
397
|
plugins: {
|
|
438
398
|
jest: jest__default,
|
|
439
399
|
"jest-dom": jestDom__default
|
|
@@ -476,11 +436,11 @@ const base$9 = {
|
|
|
476
436
|
"@typescript-eslint/unbound-method": "off"
|
|
477
437
|
}
|
|
478
438
|
};
|
|
479
|
-
const configs$
|
|
480
|
-
base: base$
|
|
439
|
+
const configs$a = {
|
|
440
|
+
base: base$a
|
|
481
441
|
};
|
|
482
442
|
|
|
483
|
-
const base$
|
|
443
|
+
const base$9 = {
|
|
484
444
|
settings: {
|
|
485
445
|
jsdoc: {
|
|
486
446
|
preferredTypes: {
|
|
@@ -496,20 +456,38 @@ const base$8 = {
|
|
|
496
456
|
jsdoc: jsdoc__default
|
|
497
457
|
},
|
|
498
458
|
rules: {
|
|
499
|
-
"
|
|
500
|
-
"
|
|
501
|
-
"
|
|
502
|
-
"
|
|
503
|
-
"
|
|
504
|
-
"
|
|
505
|
-
"
|
|
459
|
+
...jsdoc__default.configs["flat/recommended"].rules,
|
|
460
|
+
"jsdoc/check-alignment": "error",
|
|
461
|
+
"jsdoc/check-indentation": "error",
|
|
462
|
+
"jsdoc/check-param-names": "off",
|
|
463
|
+
"jsdoc/check-tag-names": "error",
|
|
464
|
+
"jsdoc/check-types": "error",
|
|
465
|
+
"jsdoc/require-description": "off",
|
|
466
|
+
"jsdoc/require-description-complete-sentence": "off",
|
|
467
|
+
"jsdoc/require-example": "off",
|
|
468
|
+
"jsdoc/require-hyphen-before-param-description": "error",
|
|
469
|
+
"jsdoc/require-param": [
|
|
470
|
+
"error",
|
|
471
|
+
{
|
|
472
|
+
enableFixer: false,
|
|
473
|
+
ignoreWhenAllParamsMissing: true,
|
|
474
|
+
unnamedRootBase: ["args"]
|
|
475
|
+
}
|
|
476
|
+
],
|
|
477
|
+
"jsdoc/require-param-description": "off",
|
|
478
|
+
"jsdoc/require-param-name": "error",
|
|
479
|
+
"jsdoc/require-param-type": "error",
|
|
480
|
+
"jsdoc/require-returns-description": "off",
|
|
481
|
+
"jsdoc/require-jsdoc": "off",
|
|
482
|
+
"jsdoc/require-returns-type": "off",
|
|
483
|
+
"jsdoc/valid-types": "error"
|
|
506
484
|
}
|
|
507
485
|
};
|
|
508
|
-
const configs$
|
|
509
|
-
base: base$
|
|
486
|
+
const configs$9 = {
|
|
487
|
+
base: base$9
|
|
510
488
|
};
|
|
511
489
|
|
|
512
|
-
const base$
|
|
490
|
+
const base$8 = {
|
|
513
491
|
plugins: {
|
|
514
492
|
mocha: mocha__default
|
|
515
493
|
},
|
|
@@ -528,15 +506,15 @@ const base$7 = {
|
|
|
528
506
|
"mocha/no-mocha-arrows": "off"
|
|
529
507
|
}
|
|
530
508
|
};
|
|
531
|
-
const configs$
|
|
532
|
-
base: base$
|
|
509
|
+
const configs$8 = {
|
|
510
|
+
base: base$8
|
|
533
511
|
};
|
|
534
512
|
|
|
535
513
|
const recommendedRules = {};
|
|
536
514
|
for (const ruleName of Object.keys({ ...nextJs__default.configs.recommended.rules })) {
|
|
537
515
|
recommendedRules[ruleName] = "error";
|
|
538
516
|
}
|
|
539
|
-
const base$
|
|
517
|
+
const base$7 = {
|
|
540
518
|
plugins: {
|
|
541
519
|
"@next/next": compat.fixupPluginRules(nextJs__default)
|
|
542
520
|
},
|
|
@@ -544,11 +522,11 @@ const base$6 = {
|
|
|
544
522
|
...recommendedRules
|
|
545
523
|
}
|
|
546
524
|
};
|
|
547
|
-
const configs$
|
|
548
|
-
base: base$
|
|
525
|
+
const configs$7 = {
|
|
526
|
+
base: base$7
|
|
549
527
|
};
|
|
550
528
|
|
|
551
|
-
const base$
|
|
529
|
+
const base$6 = {
|
|
552
530
|
plugins: {
|
|
553
531
|
promise: promise__default
|
|
554
532
|
},
|
|
@@ -565,11 +543,11 @@ const base$5 = {
|
|
|
565
543
|
"promise/param-names": "error"
|
|
566
544
|
}
|
|
567
545
|
};
|
|
568
|
-
const configs$
|
|
569
|
-
base: base$
|
|
546
|
+
const configs$6 = {
|
|
547
|
+
base: base$6
|
|
570
548
|
};
|
|
571
549
|
|
|
572
|
-
const base$
|
|
550
|
+
const base$5 = {
|
|
573
551
|
settings: {
|
|
574
552
|
react: {
|
|
575
553
|
version: "detect",
|
|
@@ -637,11 +615,11 @@ const base$4 = {
|
|
|
637
615
|
"react-hooks/exhaustive-deps": "error"
|
|
638
616
|
}
|
|
639
617
|
};
|
|
640
|
-
const configs$
|
|
641
|
-
base: base$
|
|
618
|
+
const configs$5 = {
|
|
619
|
+
base: base$5
|
|
642
620
|
};
|
|
643
621
|
|
|
644
|
-
const base$
|
|
622
|
+
const base$4 = {
|
|
645
623
|
plugins: {
|
|
646
624
|
security: security__default
|
|
647
625
|
},
|
|
@@ -661,6 +639,59 @@ const base$3 = {
|
|
|
661
639
|
"security/detect-unsafe-regex": "error"
|
|
662
640
|
}
|
|
663
641
|
};
|
|
642
|
+
const configs$4 = {
|
|
643
|
+
base: base$4
|
|
644
|
+
};
|
|
645
|
+
|
|
646
|
+
const baseStylistic = stylistic__default.configs.customize({
|
|
647
|
+
braceStyle: "1tbs",
|
|
648
|
+
jsx: true
|
|
649
|
+
});
|
|
650
|
+
const base$3 = {
|
|
651
|
+
...baseStylistic,
|
|
652
|
+
rules: {
|
|
653
|
+
...stylistic__default.configs["disable-legacy"].rules,
|
|
654
|
+
...baseStylistic.rules,
|
|
655
|
+
"@stylistic/padding-line-between-statements": [
|
|
656
|
+
"error",
|
|
657
|
+
{
|
|
658
|
+
blankLine: "always",
|
|
659
|
+
prev: ["directive", "block", "block-like", "multiline-block-like", "cjs-export", "cjs-import", "class", "export", "import", "if"],
|
|
660
|
+
next: "*"
|
|
661
|
+
},
|
|
662
|
+
{
|
|
663
|
+
blankLine: "never",
|
|
664
|
+
prev: "directive",
|
|
665
|
+
next: "directive"
|
|
666
|
+
},
|
|
667
|
+
{
|
|
668
|
+
blankLine: "any",
|
|
669
|
+
prev: "*",
|
|
670
|
+
next: ["if", "for", "cjs-import", "import"]
|
|
671
|
+
},
|
|
672
|
+
{
|
|
673
|
+
blankLine: "any",
|
|
674
|
+
prev: ["export", "import"],
|
|
675
|
+
next: ["export", "import"]
|
|
676
|
+
},
|
|
677
|
+
{
|
|
678
|
+
blankLine: "always",
|
|
679
|
+
prev: "*",
|
|
680
|
+
next: ["try", "function", "switch"]
|
|
681
|
+
},
|
|
682
|
+
{
|
|
683
|
+
blankLine: "always",
|
|
684
|
+
prev: "if",
|
|
685
|
+
next: "if"
|
|
686
|
+
},
|
|
687
|
+
{
|
|
688
|
+
blankLine: "never",
|
|
689
|
+
prev: ["return", "throw"],
|
|
690
|
+
next: "*"
|
|
691
|
+
}
|
|
692
|
+
]
|
|
693
|
+
}
|
|
694
|
+
};
|
|
664
695
|
const configs$3 = {
|
|
665
696
|
base: base$3
|
|
666
697
|
};
|
|
@@ -802,27 +833,27 @@ function tsEslintConfig(options) {
|
|
|
802
833
|
{
|
|
803
834
|
languageOptions,
|
|
804
835
|
settings: {
|
|
805
|
-
...configs$
|
|
836
|
+
...configs$9.base.settings
|
|
806
837
|
}
|
|
807
838
|
},
|
|
808
839
|
{
|
|
809
840
|
name: "eslint-config-decent/base",
|
|
810
841
|
files: ["**/*.ts", "**/*.js", "**/*.cjs", "**/*.mjs", "**/*.tsx"],
|
|
811
842
|
plugins: {
|
|
843
|
+
...configs$c.base.plugins,
|
|
812
844
|
...configs$b.base.plugins,
|
|
813
|
-
...configs$
|
|
814
|
-
...configs$
|
|
815
|
-
...configs$
|
|
816
|
-
...configs$3.base.plugins,
|
|
845
|
+
...configs$9.base.plugins,
|
|
846
|
+
...configs$6.base.plugins,
|
|
847
|
+
...configs$4.base.plugins,
|
|
817
848
|
...configs.base.plugins
|
|
818
849
|
},
|
|
819
850
|
rules: {
|
|
820
|
-
...configs$
|
|
821
|
-
...enableRequireExtensionRule ? configs$
|
|
822
|
-
...configs$
|
|
823
|
-
...configs$
|
|
824
|
-
...configs$
|
|
825
|
-
...configs$
|
|
851
|
+
...configs$d.base.rules,
|
|
852
|
+
...enableRequireExtensionRule ? configs$c.base.rules : {},
|
|
853
|
+
...configs$b.base.rules,
|
|
854
|
+
...configs$9.base.rules,
|
|
855
|
+
...configs$6.base.rules,
|
|
856
|
+
...configs$4.base.rules,
|
|
826
857
|
...configs.base.rules
|
|
827
858
|
}
|
|
828
859
|
},
|
|
@@ -835,7 +866,7 @@ function tsEslintConfig(options) {
|
|
|
835
866
|
{
|
|
836
867
|
name: "eslint-config-decent/tsx",
|
|
837
868
|
files: ["**/*.tsx"],
|
|
838
|
-
...configs$
|
|
869
|
+
...configs$5.base
|
|
839
870
|
},
|
|
840
871
|
{
|
|
841
872
|
name: "eslint-config-decent/tsx-disable-ts-rules",
|
|
@@ -854,7 +885,7 @@ function tsEslintConfig(options) {
|
|
|
854
885
|
rootDir: options?.nextJsRootDir
|
|
855
886
|
}
|
|
856
887
|
},
|
|
857
|
-
...configs$
|
|
888
|
+
...configs$7.base
|
|
858
889
|
}
|
|
859
890
|
] : [],
|
|
860
891
|
{
|
|
@@ -863,7 +894,7 @@ function tsEslintConfig(options) {
|
|
|
863
894
|
languageOptions: {
|
|
864
895
|
sourceType: "script"
|
|
865
896
|
},
|
|
866
|
-
...configs$
|
|
897
|
+
...configs$d.cjsAndEsm
|
|
867
898
|
},
|
|
868
899
|
{
|
|
869
900
|
name: "eslint-config-decent/cjs",
|
|
@@ -871,20 +902,20 @@ function tsEslintConfig(options) {
|
|
|
871
902
|
languageOptions: {
|
|
872
903
|
sourceType: "script"
|
|
873
904
|
},
|
|
874
|
-
...configs$
|
|
905
|
+
...configs$d.cjs
|
|
875
906
|
},
|
|
876
907
|
...enableMocha ? [
|
|
877
908
|
{
|
|
878
909
|
name: "eslint-config-decent/mocha-tests",
|
|
879
910
|
files: ["**/*.tests.ts", "tests/tests.ts"],
|
|
880
|
-
...configs$
|
|
911
|
+
...configs$8.base
|
|
881
912
|
}
|
|
882
913
|
] : [],
|
|
883
914
|
...enableJest ? [
|
|
884
915
|
{
|
|
885
916
|
name: "eslint-config-decent/jest-tests",
|
|
886
917
|
files: ["**/__tests__/**/*.ts?(x)", "**/*.{spec,test}.ts?(x)"],
|
|
887
|
-
...configs$
|
|
918
|
+
...configs$a.base
|
|
888
919
|
}
|
|
889
920
|
] : [],
|
|
890
921
|
...enableTestingLibrary ? [
|
|
@@ -901,12 +932,24 @@ function tsEslintConfig(options) {
|
|
|
901
932
|
}
|
|
902
933
|
}
|
|
903
934
|
] : [],
|
|
935
|
+
{
|
|
936
|
+
...configs$3.base,
|
|
937
|
+
name: "eslint-config-decent/stylistic",
|
|
938
|
+
files: ["**/*.ts", "**/*.js", "**/*.cjs", "**/*.mjs", "**/*.tsx"]
|
|
939
|
+
},
|
|
904
940
|
{
|
|
905
941
|
name: "eslint-config-decent/cjs-and-esm-disable-ts-rules",
|
|
906
942
|
files: ["**/*.js", "**/*.cjs", "**/*.mjs"],
|
|
907
943
|
extends: [tsEslint__default.configs.disableTypeChecked]
|
|
908
944
|
},
|
|
909
|
-
prettier__default
|
|
945
|
+
prettier__default,
|
|
946
|
+
{
|
|
947
|
+
name: "eslint-config-decent/1tbs",
|
|
948
|
+
files: ["**/*.ts", "**/*.js", "**/*.cjs", "**/*.mjs", "**/*.tsx"],
|
|
949
|
+
rules: {
|
|
950
|
+
"@stylistic/brace-style": "error"
|
|
951
|
+
}
|
|
952
|
+
}
|
|
910
953
|
];
|
|
911
954
|
}
|
|
912
955
|
function config(options) {
|
|
@@ -915,16 +958,16 @@ function config(options) {
|
|
|
915
958
|
|
|
916
959
|
exports.config = config;
|
|
917
960
|
exports.defaultConfig = defaultConfig;
|
|
918
|
-
exports.eslintConfigs = configs$
|
|
919
|
-
exports.extensionConfigs = configs$
|
|
920
|
-
exports.importConfigs = configs$
|
|
921
|
-
exports.jestConfigs = configs$
|
|
922
|
-
exports.jsdocConfigs = configs$
|
|
923
|
-
exports.mochaConfigs = configs$
|
|
924
|
-
exports.nextJsConfigs = configs$
|
|
925
|
-
exports.promiseConfigs = configs$
|
|
926
|
-
exports.reactConfigs = configs$
|
|
927
|
-
exports.securityConfigs = configs$
|
|
961
|
+
exports.eslintConfigs = configs$d;
|
|
962
|
+
exports.extensionConfigs = configs$c;
|
|
963
|
+
exports.importConfigs = configs$b;
|
|
964
|
+
exports.jestConfigs = configs$a;
|
|
965
|
+
exports.jsdocConfigs = configs$9;
|
|
966
|
+
exports.mochaConfigs = configs$8;
|
|
967
|
+
exports.nextJsConfigs = configs$7;
|
|
968
|
+
exports.promiseConfigs = configs$6;
|
|
969
|
+
exports.reactConfigs = configs$5;
|
|
970
|
+
exports.securityConfigs = configs$4;
|
|
928
971
|
exports.testingLibraryConfigs = configs$2;
|
|
929
972
|
exports.tsEslintConfig = tsEslintConfig;
|
|
930
973
|
exports.typescriptEslintConfigs = configs$1;
|
package/dist/index.d.cts
CHANGED
|
@@ -78,7 +78,7 @@ declare const defaultConfig: typeof tsEslintConfig;
|
|
|
78
78
|
declare function tsEslintConfig(options?: DefaultConfigOptions): ConfigWithExtends[];
|
|
79
79
|
/**
|
|
80
80
|
* Exports eslint configurations. Use this if you do not need to explicitly import typescript-eslint in your project.
|
|
81
|
-
* @param options
|
|
81
|
+
* @param {object} options
|
|
82
82
|
* @returns An array of eslint configurations
|
|
83
83
|
*/
|
|
84
84
|
declare function config(options?: DefaultConfigOptions): TSESLint.FlatConfig.ConfigArray;
|
package/dist/index.d.mts
CHANGED
|
@@ -78,7 +78,7 @@ declare const defaultConfig: typeof tsEslintConfig;
|
|
|
78
78
|
declare function tsEslintConfig(options?: DefaultConfigOptions): ConfigWithExtends[];
|
|
79
79
|
/**
|
|
80
80
|
* Exports eslint configurations. Use this if you do not need to explicitly import typescript-eslint in your project.
|
|
81
|
-
* @param options
|
|
81
|
+
* @param {object} options
|
|
82
82
|
* @returns An array of eslint configurations
|
|
83
83
|
*/
|
|
84
84
|
declare function config(options?: DefaultConfigOptions): TSESLint.FlatConfig.ConfigArray;
|
package/dist/index.d.ts
CHANGED
|
@@ -78,7 +78,7 @@ declare const defaultConfig: typeof tsEslintConfig;
|
|
|
78
78
|
declare function tsEslintConfig(options?: DefaultConfigOptions): ConfigWithExtends[];
|
|
79
79
|
/**
|
|
80
80
|
* Exports eslint configurations. Use this if you do not need to explicitly import typescript-eslint in your project.
|
|
81
|
-
* @param options
|
|
81
|
+
* @param {object} options
|
|
82
82
|
* @returns An array of eslint configurations
|
|
83
83
|
*/
|
|
84
84
|
declare function config(options?: DefaultConfigOptions): TSESLint.FlatConfig.ConfigArray;
|
package/dist/index.mjs
CHANGED
|
@@ -17,10 +17,11 @@ import a11y from 'eslint-plugin-jsx-a11y';
|
|
|
17
17
|
import react from 'eslint-plugin-react';
|
|
18
18
|
import reactHooks from 'eslint-plugin-react-hooks';
|
|
19
19
|
import security from 'eslint-plugin-security';
|
|
20
|
+
import stylistic from '@stylistic/eslint-plugin';
|
|
20
21
|
import testingLibrary from 'eslint-plugin-testing-library';
|
|
21
22
|
import unicorn from 'eslint-plugin-unicorn';
|
|
22
23
|
|
|
23
|
-
const base$
|
|
24
|
+
const base$d = {
|
|
24
25
|
rules: {
|
|
25
26
|
"array-callback-return": ["error", { allowImplicit: true }],
|
|
26
27
|
"block-scoped-var": "error",
|
|
@@ -85,7 +86,6 @@ const base$c = {
|
|
|
85
86
|
"no-labels": ["error", { allowLoop: false, allowSwitch: false }],
|
|
86
87
|
"no-lone-blocks": "error",
|
|
87
88
|
"no-lonely-if": "error",
|
|
88
|
-
"no-mixed-spaces-and-tabs": "error",
|
|
89
89
|
"no-multi-assign": ["error"],
|
|
90
90
|
"no-multi-str": "error",
|
|
91
91
|
"no-negated-condition": "error",
|
|
@@ -162,44 +162,6 @@ const base$c = {
|
|
|
162
162
|
"no-useless-concat": "error",
|
|
163
163
|
"no-useless-rename": "error",
|
|
164
164
|
"no-useless-return": "error",
|
|
165
|
-
"padding-line-between-statements": [
|
|
166
|
-
"error",
|
|
167
|
-
{
|
|
168
|
-
blankLine: "always",
|
|
169
|
-
prev: ["directive", "block", "block-like", "multiline-block-like", "cjs-export", "cjs-import", "class", "export", "import", "if"],
|
|
170
|
-
next: "*"
|
|
171
|
-
},
|
|
172
|
-
{
|
|
173
|
-
blankLine: "never",
|
|
174
|
-
prev: "directive",
|
|
175
|
-
next: "directive"
|
|
176
|
-
},
|
|
177
|
-
{
|
|
178
|
-
blankLine: "any",
|
|
179
|
-
prev: "*",
|
|
180
|
-
next: ["if", "for", "cjs-import", "import"]
|
|
181
|
-
},
|
|
182
|
-
{
|
|
183
|
-
blankLine: "any",
|
|
184
|
-
prev: ["export", "import"],
|
|
185
|
-
next: ["export", "import"]
|
|
186
|
-
},
|
|
187
|
-
{
|
|
188
|
-
blankLine: "always",
|
|
189
|
-
prev: "*",
|
|
190
|
-
next: ["try", "function", "switch"]
|
|
191
|
-
},
|
|
192
|
-
{
|
|
193
|
-
blankLine: "always",
|
|
194
|
-
prev: "if",
|
|
195
|
-
next: "if"
|
|
196
|
-
},
|
|
197
|
-
{
|
|
198
|
-
blankLine: "never",
|
|
199
|
-
prev: ["return", "throw"],
|
|
200
|
-
next: "*"
|
|
201
|
-
}
|
|
202
|
-
],
|
|
203
165
|
"prefer-const": [
|
|
204
166
|
"error",
|
|
205
167
|
{
|
|
@@ -235,9 +197,7 @@ const cjsAndEsm = {
|
|
|
235
197
|
rules: {
|
|
236
198
|
curly: ["error", "multi-line"],
|
|
237
199
|
"dot-notation": ["error", { allowKeywords: true }],
|
|
238
|
-
"dot-location": ["error", "property"],
|
|
239
200
|
"getter-return": ["error", { allowImplicit: true }],
|
|
240
|
-
"lines-between-class-members": ["error", "always", { exceptAfterSingleLine: false }],
|
|
241
201
|
"no-array-constructor": "error",
|
|
242
202
|
"no-empty-function": [
|
|
243
203
|
"error",
|
|
@@ -261,8 +221,7 @@ const cjsAndEsm = {
|
|
|
261
221
|
allowUnboundThis: true
|
|
262
222
|
}
|
|
263
223
|
],
|
|
264
|
-
"prefer-promise-reject-errors": ["error", { allowEmptyReject: true }]
|
|
265
|
-
"wrap-iife": ["error", "outside", { functionPrototypeMethods: false }]
|
|
224
|
+
"prefer-promise-reject-errors": ["error", { allowEmptyReject: true }]
|
|
266
225
|
}
|
|
267
226
|
};
|
|
268
227
|
const cjs = {
|
|
@@ -270,8 +229,8 @@ const cjs = {
|
|
|
270
229
|
strict: ["error", "global"]
|
|
271
230
|
}
|
|
272
231
|
};
|
|
273
|
-
const configs$
|
|
274
|
-
base: base$
|
|
232
|
+
const configs$d = {
|
|
233
|
+
base: base$d,
|
|
275
234
|
cjsAndEsm,
|
|
276
235
|
cjs
|
|
277
236
|
};
|
|
@@ -370,7 +329,7 @@ const requireIndexRule = ESLintUtils.RuleCreator(() => "https://github.com/jgeur
|
|
|
370
329
|
}
|
|
371
330
|
});
|
|
372
331
|
|
|
373
|
-
const base$
|
|
332
|
+
const base$c = {
|
|
374
333
|
plugins: {
|
|
375
334
|
"decent-extension": {
|
|
376
335
|
meta: {
|
|
@@ -388,11 +347,11 @@ const base$b = {
|
|
|
388
347
|
"decent-extension/require-index": "error"
|
|
389
348
|
}
|
|
390
349
|
};
|
|
391
|
-
const configs$
|
|
392
|
-
base: base$
|
|
350
|
+
const configs$c = {
|
|
351
|
+
base: base$c
|
|
393
352
|
};
|
|
394
353
|
|
|
395
|
-
const base$
|
|
354
|
+
const base$b = {
|
|
396
355
|
plugins: {
|
|
397
356
|
import: importPlugin
|
|
398
357
|
},
|
|
@@ -407,11 +366,11 @@ const base$a = {
|
|
|
407
366
|
]
|
|
408
367
|
}
|
|
409
368
|
};
|
|
410
|
-
const configs$
|
|
411
|
-
base: base$
|
|
369
|
+
const configs$b = {
|
|
370
|
+
base: base$b
|
|
412
371
|
};
|
|
413
372
|
|
|
414
|
-
const base$
|
|
373
|
+
const base$a = {
|
|
415
374
|
plugins: {
|
|
416
375
|
jest,
|
|
417
376
|
"jest-dom": jestDom
|
|
@@ -454,11 +413,11 @@ const base$9 = {
|
|
|
454
413
|
"@typescript-eslint/unbound-method": "off"
|
|
455
414
|
}
|
|
456
415
|
};
|
|
457
|
-
const configs$
|
|
458
|
-
base: base$
|
|
416
|
+
const configs$a = {
|
|
417
|
+
base: base$a
|
|
459
418
|
};
|
|
460
419
|
|
|
461
|
-
const base$
|
|
420
|
+
const base$9 = {
|
|
462
421
|
settings: {
|
|
463
422
|
jsdoc: {
|
|
464
423
|
preferredTypes: {
|
|
@@ -474,20 +433,38 @@ const base$8 = {
|
|
|
474
433
|
jsdoc
|
|
475
434
|
},
|
|
476
435
|
rules: {
|
|
477
|
-
"
|
|
478
|
-
"
|
|
479
|
-
"
|
|
480
|
-
"
|
|
481
|
-
"
|
|
482
|
-
"
|
|
483
|
-
"
|
|
436
|
+
...jsdoc.configs["flat/recommended"].rules,
|
|
437
|
+
"jsdoc/check-alignment": "error",
|
|
438
|
+
"jsdoc/check-indentation": "error",
|
|
439
|
+
"jsdoc/check-param-names": "off",
|
|
440
|
+
"jsdoc/check-tag-names": "error",
|
|
441
|
+
"jsdoc/check-types": "error",
|
|
442
|
+
"jsdoc/require-description": "off",
|
|
443
|
+
"jsdoc/require-description-complete-sentence": "off",
|
|
444
|
+
"jsdoc/require-example": "off",
|
|
445
|
+
"jsdoc/require-hyphen-before-param-description": "error",
|
|
446
|
+
"jsdoc/require-param": [
|
|
447
|
+
"error",
|
|
448
|
+
{
|
|
449
|
+
enableFixer: false,
|
|
450
|
+
ignoreWhenAllParamsMissing: true,
|
|
451
|
+
unnamedRootBase: ["args"]
|
|
452
|
+
}
|
|
453
|
+
],
|
|
454
|
+
"jsdoc/require-param-description": "off",
|
|
455
|
+
"jsdoc/require-param-name": "error",
|
|
456
|
+
"jsdoc/require-param-type": "error",
|
|
457
|
+
"jsdoc/require-returns-description": "off",
|
|
458
|
+
"jsdoc/require-jsdoc": "off",
|
|
459
|
+
"jsdoc/require-returns-type": "off",
|
|
460
|
+
"jsdoc/valid-types": "error"
|
|
484
461
|
}
|
|
485
462
|
};
|
|
486
|
-
const configs$
|
|
487
|
-
base: base$
|
|
463
|
+
const configs$9 = {
|
|
464
|
+
base: base$9
|
|
488
465
|
};
|
|
489
466
|
|
|
490
|
-
const base$
|
|
467
|
+
const base$8 = {
|
|
491
468
|
plugins: {
|
|
492
469
|
mocha
|
|
493
470
|
},
|
|
@@ -506,15 +483,15 @@ const base$7 = {
|
|
|
506
483
|
"mocha/no-mocha-arrows": "off"
|
|
507
484
|
}
|
|
508
485
|
};
|
|
509
|
-
const configs$
|
|
510
|
-
base: base$
|
|
486
|
+
const configs$8 = {
|
|
487
|
+
base: base$8
|
|
511
488
|
};
|
|
512
489
|
|
|
513
490
|
const recommendedRules = {};
|
|
514
491
|
for (const ruleName of Object.keys({ ...nextJs.configs.recommended.rules })) {
|
|
515
492
|
recommendedRules[ruleName] = "error";
|
|
516
493
|
}
|
|
517
|
-
const base$
|
|
494
|
+
const base$7 = {
|
|
518
495
|
plugins: {
|
|
519
496
|
"@next/next": fixupPluginRules(nextJs)
|
|
520
497
|
},
|
|
@@ -522,11 +499,11 @@ const base$6 = {
|
|
|
522
499
|
...recommendedRules
|
|
523
500
|
}
|
|
524
501
|
};
|
|
525
|
-
const configs$
|
|
526
|
-
base: base$
|
|
502
|
+
const configs$7 = {
|
|
503
|
+
base: base$7
|
|
527
504
|
};
|
|
528
505
|
|
|
529
|
-
const base$
|
|
506
|
+
const base$6 = {
|
|
530
507
|
plugins: {
|
|
531
508
|
promise
|
|
532
509
|
},
|
|
@@ -543,11 +520,11 @@ const base$5 = {
|
|
|
543
520
|
"promise/param-names": "error"
|
|
544
521
|
}
|
|
545
522
|
};
|
|
546
|
-
const configs$
|
|
547
|
-
base: base$
|
|
523
|
+
const configs$6 = {
|
|
524
|
+
base: base$6
|
|
548
525
|
};
|
|
549
526
|
|
|
550
|
-
const base$
|
|
527
|
+
const base$5 = {
|
|
551
528
|
settings: {
|
|
552
529
|
react: {
|
|
553
530
|
version: "detect",
|
|
@@ -615,11 +592,11 @@ const base$4 = {
|
|
|
615
592
|
"react-hooks/exhaustive-deps": "error"
|
|
616
593
|
}
|
|
617
594
|
};
|
|
618
|
-
const configs$
|
|
619
|
-
base: base$
|
|
595
|
+
const configs$5 = {
|
|
596
|
+
base: base$5
|
|
620
597
|
};
|
|
621
598
|
|
|
622
|
-
const base$
|
|
599
|
+
const base$4 = {
|
|
623
600
|
plugins: {
|
|
624
601
|
security
|
|
625
602
|
},
|
|
@@ -639,6 +616,59 @@ const base$3 = {
|
|
|
639
616
|
"security/detect-unsafe-regex": "error"
|
|
640
617
|
}
|
|
641
618
|
};
|
|
619
|
+
const configs$4 = {
|
|
620
|
+
base: base$4
|
|
621
|
+
};
|
|
622
|
+
|
|
623
|
+
const baseStylistic = stylistic.configs.customize({
|
|
624
|
+
braceStyle: "1tbs",
|
|
625
|
+
jsx: true
|
|
626
|
+
});
|
|
627
|
+
const base$3 = {
|
|
628
|
+
...baseStylistic,
|
|
629
|
+
rules: {
|
|
630
|
+
...stylistic.configs["disable-legacy"].rules,
|
|
631
|
+
...baseStylistic.rules,
|
|
632
|
+
"@stylistic/padding-line-between-statements": [
|
|
633
|
+
"error",
|
|
634
|
+
{
|
|
635
|
+
blankLine: "always",
|
|
636
|
+
prev: ["directive", "block", "block-like", "multiline-block-like", "cjs-export", "cjs-import", "class", "export", "import", "if"],
|
|
637
|
+
next: "*"
|
|
638
|
+
},
|
|
639
|
+
{
|
|
640
|
+
blankLine: "never",
|
|
641
|
+
prev: "directive",
|
|
642
|
+
next: "directive"
|
|
643
|
+
},
|
|
644
|
+
{
|
|
645
|
+
blankLine: "any",
|
|
646
|
+
prev: "*",
|
|
647
|
+
next: ["if", "for", "cjs-import", "import"]
|
|
648
|
+
},
|
|
649
|
+
{
|
|
650
|
+
blankLine: "any",
|
|
651
|
+
prev: ["export", "import"],
|
|
652
|
+
next: ["export", "import"]
|
|
653
|
+
},
|
|
654
|
+
{
|
|
655
|
+
blankLine: "always",
|
|
656
|
+
prev: "*",
|
|
657
|
+
next: ["try", "function", "switch"]
|
|
658
|
+
},
|
|
659
|
+
{
|
|
660
|
+
blankLine: "always",
|
|
661
|
+
prev: "if",
|
|
662
|
+
next: "if"
|
|
663
|
+
},
|
|
664
|
+
{
|
|
665
|
+
blankLine: "never",
|
|
666
|
+
prev: ["return", "throw"],
|
|
667
|
+
next: "*"
|
|
668
|
+
}
|
|
669
|
+
]
|
|
670
|
+
}
|
|
671
|
+
};
|
|
642
672
|
const configs$3 = {
|
|
643
673
|
base: base$3
|
|
644
674
|
};
|
|
@@ -780,27 +810,27 @@ function tsEslintConfig(options) {
|
|
|
780
810
|
{
|
|
781
811
|
languageOptions,
|
|
782
812
|
settings: {
|
|
783
|
-
...configs$
|
|
813
|
+
...configs$9.base.settings
|
|
784
814
|
}
|
|
785
815
|
},
|
|
786
816
|
{
|
|
787
817
|
name: "eslint-config-decent/base",
|
|
788
818
|
files: ["**/*.ts", "**/*.js", "**/*.cjs", "**/*.mjs", "**/*.tsx"],
|
|
789
819
|
plugins: {
|
|
820
|
+
...configs$c.base.plugins,
|
|
790
821
|
...configs$b.base.plugins,
|
|
791
|
-
...configs$
|
|
792
|
-
...configs$
|
|
793
|
-
...configs$
|
|
794
|
-
...configs$3.base.plugins,
|
|
822
|
+
...configs$9.base.plugins,
|
|
823
|
+
...configs$6.base.plugins,
|
|
824
|
+
...configs$4.base.plugins,
|
|
795
825
|
...configs.base.plugins
|
|
796
826
|
},
|
|
797
827
|
rules: {
|
|
798
|
-
...configs$
|
|
799
|
-
...enableRequireExtensionRule ? configs$
|
|
800
|
-
...configs$
|
|
801
|
-
...configs$
|
|
802
|
-
...configs$
|
|
803
|
-
...configs$
|
|
828
|
+
...configs$d.base.rules,
|
|
829
|
+
...enableRequireExtensionRule ? configs$c.base.rules : {},
|
|
830
|
+
...configs$b.base.rules,
|
|
831
|
+
...configs$9.base.rules,
|
|
832
|
+
...configs$6.base.rules,
|
|
833
|
+
...configs$4.base.rules,
|
|
804
834
|
...configs.base.rules
|
|
805
835
|
}
|
|
806
836
|
},
|
|
@@ -813,7 +843,7 @@ function tsEslintConfig(options) {
|
|
|
813
843
|
{
|
|
814
844
|
name: "eslint-config-decent/tsx",
|
|
815
845
|
files: ["**/*.tsx"],
|
|
816
|
-
...configs$
|
|
846
|
+
...configs$5.base
|
|
817
847
|
},
|
|
818
848
|
{
|
|
819
849
|
name: "eslint-config-decent/tsx-disable-ts-rules",
|
|
@@ -832,7 +862,7 @@ function tsEslintConfig(options) {
|
|
|
832
862
|
rootDir: options?.nextJsRootDir
|
|
833
863
|
}
|
|
834
864
|
},
|
|
835
|
-
...configs$
|
|
865
|
+
...configs$7.base
|
|
836
866
|
}
|
|
837
867
|
] : [],
|
|
838
868
|
{
|
|
@@ -841,7 +871,7 @@ function tsEslintConfig(options) {
|
|
|
841
871
|
languageOptions: {
|
|
842
872
|
sourceType: "script"
|
|
843
873
|
},
|
|
844
|
-
...configs$
|
|
874
|
+
...configs$d.cjsAndEsm
|
|
845
875
|
},
|
|
846
876
|
{
|
|
847
877
|
name: "eslint-config-decent/cjs",
|
|
@@ -849,20 +879,20 @@ function tsEslintConfig(options) {
|
|
|
849
879
|
languageOptions: {
|
|
850
880
|
sourceType: "script"
|
|
851
881
|
},
|
|
852
|
-
...configs$
|
|
882
|
+
...configs$d.cjs
|
|
853
883
|
},
|
|
854
884
|
...enableMocha ? [
|
|
855
885
|
{
|
|
856
886
|
name: "eslint-config-decent/mocha-tests",
|
|
857
887
|
files: ["**/*.tests.ts", "tests/tests.ts"],
|
|
858
|
-
...configs$
|
|
888
|
+
...configs$8.base
|
|
859
889
|
}
|
|
860
890
|
] : [],
|
|
861
891
|
...enableJest ? [
|
|
862
892
|
{
|
|
863
893
|
name: "eslint-config-decent/jest-tests",
|
|
864
894
|
files: ["**/__tests__/**/*.ts?(x)", "**/*.{spec,test}.ts?(x)"],
|
|
865
|
-
...configs$
|
|
895
|
+
...configs$a.base
|
|
866
896
|
}
|
|
867
897
|
] : [],
|
|
868
898
|
...enableTestingLibrary ? [
|
|
@@ -879,16 +909,28 @@ function tsEslintConfig(options) {
|
|
|
879
909
|
}
|
|
880
910
|
}
|
|
881
911
|
] : [],
|
|
912
|
+
{
|
|
913
|
+
...configs$3.base,
|
|
914
|
+
name: "eslint-config-decent/stylistic",
|
|
915
|
+
files: ["**/*.ts", "**/*.js", "**/*.cjs", "**/*.mjs", "**/*.tsx"]
|
|
916
|
+
},
|
|
882
917
|
{
|
|
883
918
|
name: "eslint-config-decent/cjs-and-esm-disable-ts-rules",
|
|
884
919
|
files: ["**/*.js", "**/*.cjs", "**/*.mjs"],
|
|
885
920
|
extends: [tsEslint.configs.disableTypeChecked]
|
|
886
921
|
},
|
|
887
|
-
prettier
|
|
922
|
+
prettier,
|
|
923
|
+
{
|
|
924
|
+
name: "eslint-config-decent/1tbs",
|
|
925
|
+
files: ["**/*.ts", "**/*.js", "**/*.cjs", "**/*.mjs", "**/*.tsx"],
|
|
926
|
+
rules: {
|
|
927
|
+
"@stylistic/brace-style": "error"
|
|
928
|
+
}
|
|
929
|
+
}
|
|
888
930
|
];
|
|
889
931
|
}
|
|
890
932
|
function config(options) {
|
|
891
933
|
return tsEslint.config(...tsEslintConfig(options));
|
|
892
934
|
}
|
|
893
935
|
|
|
894
|
-
export { config, defaultConfig, configs$
|
|
936
|
+
export { config, defaultConfig, configs$d as eslintConfigs, configs$c as extensionConfigs, configs$b as importConfigs, configs$a as jestConfigs, configs$9 as jsdocConfigs, configs$8 as mochaConfigs, configs$7 as nextJsConfigs, configs$6 as promiseConfigs, configs$5 as reactConfigs, configs$4 as securityConfigs, configs$2 as testingLibraryConfigs, tsEslintConfig, configs$1 as typescriptEslintConfigs, configs as unicornConfigs };
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "eslint-config-decent",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.6.0-beta2",
|
|
4
4
|
"description": "A decent ESLint configuration",
|
|
5
5
|
"main": "./dist/index.cjs",
|
|
6
6
|
"module": "./dist/index.mjs",
|
|
@@ -72,10 +72,11 @@
|
|
|
72
72
|
"node": ">=20.11.0"
|
|
73
73
|
},
|
|
74
74
|
"dependencies": {
|
|
75
|
-
"@eslint/compat": "1.2.
|
|
76
|
-
"@eslint/js": "9.
|
|
77
|
-
"@typescript-eslint/utils": "8.24.0",
|
|
75
|
+
"@eslint/compat": "1.2.7",
|
|
76
|
+
"@eslint/js": "9.21.0",
|
|
78
77
|
"@next/eslint-plugin-next": "^15.1.7",
|
|
78
|
+
"@stylistic/eslint-plugin": "^4.0.1",
|
|
79
|
+
"@typescript-eslint/utils": "8.24.1",
|
|
79
80
|
"eslint-config-prettier": "10.0.1",
|
|
80
81
|
"eslint-plugin-import-x": "4.6.1",
|
|
81
82
|
"eslint-plugin-jest": "28.11.0",
|
|
@@ -89,20 +90,20 @@
|
|
|
89
90
|
"eslint-plugin-react-hooks": "5.1.0",
|
|
90
91
|
"eslint-plugin-security": "3.0.1",
|
|
91
92
|
"eslint-plugin-testing-library": "7.1.1",
|
|
92
|
-
"eslint-plugin-unicorn": "
|
|
93
|
-
"globals": "
|
|
94
|
-
"typescript-eslint": "8.24.
|
|
93
|
+
"eslint-plugin-unicorn": "57.0.0",
|
|
94
|
+
"globals": "16.0.0",
|
|
95
|
+
"typescript-eslint": "8.24.1"
|
|
95
96
|
},
|
|
96
97
|
"devDependencies": {
|
|
97
|
-
"@swc/core": "^1.10.
|
|
98
|
+
"@swc/core": "^1.10.18",
|
|
98
99
|
"@types/node": ">=22",
|
|
99
|
-
"eslint": "^9.
|
|
100
|
+
"eslint": "^9.21.0",
|
|
100
101
|
"husky": "^9.1.7",
|
|
101
102
|
"lint-staged": "^15.4.3",
|
|
102
103
|
"markdownlint-cli": "^0.44.0",
|
|
103
104
|
"npm-run-all": "^4.1.5",
|
|
104
105
|
"pinst": "^3.0.0",
|
|
105
|
-
"prettier": "3.
|
|
106
|
+
"prettier": "3.5.1",
|
|
106
107
|
"typescript": "^5.7.3",
|
|
107
108
|
"unbuild": "3.3.1"
|
|
108
109
|
},
|
package/src/eslint.ts
CHANGED
|
@@ -65,7 +65,6 @@ const base: TSESLint.FlatConfig.Config = {
|
|
|
65
65
|
'no-labels': ['error', { allowLoop: false, allowSwitch: false }],
|
|
66
66
|
'no-lone-blocks': 'error',
|
|
67
67
|
'no-lonely-if': 'error',
|
|
68
|
-
'no-mixed-spaces-and-tabs': 'error',
|
|
69
68
|
'no-multi-assign': ['error'],
|
|
70
69
|
'no-multi-str': 'error',
|
|
71
70
|
'no-negated-condition': 'error',
|
|
@@ -139,44 +138,6 @@ const base: TSESLint.FlatConfig.Config = {
|
|
|
139
138
|
'no-useless-concat': 'error',
|
|
140
139
|
'no-useless-rename': 'error',
|
|
141
140
|
'no-useless-return': 'error',
|
|
142
|
-
'padding-line-between-statements': [
|
|
143
|
-
'error',
|
|
144
|
-
{
|
|
145
|
-
blankLine: 'always',
|
|
146
|
-
prev: ['directive', 'block', 'block-like', 'multiline-block-like', 'cjs-export', 'cjs-import', 'class', 'export', 'import', 'if'],
|
|
147
|
-
next: '*',
|
|
148
|
-
},
|
|
149
|
-
{
|
|
150
|
-
blankLine: 'never',
|
|
151
|
-
prev: 'directive',
|
|
152
|
-
next: 'directive',
|
|
153
|
-
},
|
|
154
|
-
{
|
|
155
|
-
blankLine: 'any',
|
|
156
|
-
prev: '*',
|
|
157
|
-
next: ['if', 'for', 'cjs-import', 'import'],
|
|
158
|
-
},
|
|
159
|
-
{
|
|
160
|
-
blankLine: 'any',
|
|
161
|
-
prev: ['export', 'import'],
|
|
162
|
-
next: ['export', 'import'],
|
|
163
|
-
},
|
|
164
|
-
{
|
|
165
|
-
blankLine: 'always',
|
|
166
|
-
prev: '*',
|
|
167
|
-
next: ['try', 'function', 'switch'],
|
|
168
|
-
},
|
|
169
|
-
{
|
|
170
|
-
blankLine: 'always',
|
|
171
|
-
prev: 'if',
|
|
172
|
-
next: 'if',
|
|
173
|
-
},
|
|
174
|
-
{
|
|
175
|
-
blankLine: 'never',
|
|
176
|
-
prev: ['return', 'throw'],
|
|
177
|
-
next: '*',
|
|
178
|
-
},
|
|
179
|
-
],
|
|
180
141
|
'prefer-const': [
|
|
181
142
|
'error',
|
|
182
143
|
{
|
|
@@ -213,9 +174,7 @@ const cjsAndEsm: TSESLint.FlatConfig.Config = {
|
|
|
213
174
|
rules: {
|
|
214
175
|
curly: ['error', 'multi-line'],
|
|
215
176
|
'dot-notation': ['error', { allowKeywords: true }],
|
|
216
|
-
'dot-location': ['error', 'property'],
|
|
217
177
|
'getter-return': ['error', { allowImplicit: true }],
|
|
218
|
-
'lines-between-class-members': ['error', 'always', { exceptAfterSingleLine: false }],
|
|
219
178
|
'no-array-constructor': 'error',
|
|
220
179
|
'no-empty-function': [
|
|
221
180
|
'error',
|
|
@@ -240,7 +199,6 @@ const cjsAndEsm: TSESLint.FlatConfig.Config = {
|
|
|
240
199
|
},
|
|
241
200
|
],
|
|
242
201
|
'prefer-promise-reject-errors': ['error', { allowEmptyReject: true }],
|
|
243
|
-
'wrap-iife': ['error', 'outside', { functionPrototypeMethods: false }],
|
|
244
202
|
},
|
|
245
203
|
};
|
|
246
204
|
|
package/src/index.ts
CHANGED
|
@@ -14,6 +14,7 @@ import { configs as nextJsConfigs } from './nextjs.js';
|
|
|
14
14
|
import { configs as promiseConfigs } from './promise.js';
|
|
15
15
|
import { configs as reactConfigs } from './react.js';
|
|
16
16
|
import { configs as securityConfigs } from './security.js';
|
|
17
|
+
import { configs as stylisticConfigs } from './stylistic.js';
|
|
17
18
|
import { configs as testingLibraryConfigs } from './testingLibrary.js';
|
|
18
19
|
import { configs as typescriptEslintConfigs } from './typescriptEslint.js';
|
|
19
20
|
import { configs as unicornConfigs } from './unicorn.js';
|
|
@@ -205,18 +206,30 @@ export function tsEslintConfig(options?: DefaultConfigOptions): ConfigWithExtend
|
|
|
205
206
|
},
|
|
206
207
|
] as TSESLint.FlatConfig.Config[])
|
|
207
208
|
: []),
|
|
209
|
+
{
|
|
210
|
+
...stylisticConfigs.base,
|
|
211
|
+
name: 'eslint-config-decent/stylistic',
|
|
212
|
+
files: ['**/*.ts', '**/*.js', '**/*.cjs', '**/*.mjs', '**/*.tsx'],
|
|
213
|
+
},
|
|
208
214
|
{
|
|
209
215
|
name: 'eslint-config-decent/cjs-and-esm-disable-ts-rules',
|
|
210
216
|
files: ['**/*.js', '**/*.cjs', '**/*.mjs'],
|
|
211
217
|
extends: [tsEslint.configs.disableTypeChecked],
|
|
212
218
|
},
|
|
213
219
|
prettier,
|
|
220
|
+
{
|
|
221
|
+
name: 'eslint-config-decent/1tbs',
|
|
222
|
+
files: ['**/*.ts', '**/*.js', '**/*.cjs', '**/*.mjs', '**/*.tsx'],
|
|
223
|
+
rules: {
|
|
224
|
+
'@stylistic/brace-style': 'error',
|
|
225
|
+
},
|
|
226
|
+
},
|
|
214
227
|
];
|
|
215
228
|
}
|
|
216
229
|
|
|
217
230
|
/**
|
|
218
231
|
* Exports eslint configurations. Use this if you do not need to explicitly import typescript-eslint in your project.
|
|
219
|
-
* @param options
|
|
232
|
+
* @param {object} options
|
|
220
233
|
* @returns An array of eslint configurations
|
|
221
234
|
*/
|
|
222
235
|
export function config(options?: DefaultConfigOptions): TSESLint.FlatConfig.ConfigArray {
|
package/src/jsdoc.ts
CHANGED
|
@@ -17,13 +17,31 @@ const base: TSESLint.FlatConfig.Config = {
|
|
|
17
17
|
jsdoc,
|
|
18
18
|
},
|
|
19
19
|
rules: {
|
|
20
|
-
'
|
|
21
|
-
'
|
|
22
|
-
'
|
|
23
|
-
'
|
|
24
|
-
'
|
|
25
|
-
'
|
|
26
|
-
'
|
|
20
|
+
...jsdoc.configs['flat/recommended'].rules,
|
|
21
|
+
'jsdoc/check-alignment': 'error',
|
|
22
|
+
'jsdoc/check-indentation': 'error',
|
|
23
|
+
'jsdoc/check-param-names': 'off',
|
|
24
|
+
'jsdoc/check-tag-names': 'error',
|
|
25
|
+
'jsdoc/check-types': 'error',
|
|
26
|
+
'jsdoc/require-description': 'off',
|
|
27
|
+
'jsdoc/require-description-complete-sentence': 'off',
|
|
28
|
+
'jsdoc/require-example': 'off',
|
|
29
|
+
'jsdoc/require-hyphen-before-param-description': 'error',
|
|
30
|
+
'jsdoc/require-param': [
|
|
31
|
+
'error',
|
|
32
|
+
{
|
|
33
|
+
enableFixer: false,
|
|
34
|
+
ignoreWhenAllParamsMissing: true,
|
|
35
|
+
unnamedRootBase: ['args'],
|
|
36
|
+
},
|
|
37
|
+
],
|
|
38
|
+
'jsdoc/require-param-description': 'off',
|
|
39
|
+
'jsdoc/require-param-name': 'error',
|
|
40
|
+
'jsdoc/require-param-type': 'error',
|
|
41
|
+
'jsdoc/require-returns-description': 'off',
|
|
42
|
+
'jsdoc/require-jsdoc': 'off',
|
|
43
|
+
'jsdoc/require-returns-type': 'off',
|
|
44
|
+
'jsdoc/valid-types': 'error',
|
|
27
45
|
},
|
|
28
46
|
};
|
|
29
47
|
|
package/src/stylistic.ts
ADDED
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import stylistic from '@stylistic/eslint-plugin';
|
|
2
|
+
import type { TSESLint } from '@typescript-eslint/utils';
|
|
3
|
+
|
|
4
|
+
const baseStylistic = stylistic.configs.customize({
|
|
5
|
+
braceStyle: '1tbs',
|
|
6
|
+
jsx: true,
|
|
7
|
+
});
|
|
8
|
+
|
|
9
|
+
const base: TSESLint.FlatConfig.Config = {
|
|
10
|
+
...baseStylistic,
|
|
11
|
+
rules: {
|
|
12
|
+
...stylistic.configs['disable-legacy'].rules,
|
|
13
|
+
...baseStylistic.rules,
|
|
14
|
+
'@stylistic/padding-line-between-statements': [
|
|
15
|
+
'error',
|
|
16
|
+
{
|
|
17
|
+
blankLine: 'always',
|
|
18
|
+
prev: ['directive', 'block', 'block-like', 'multiline-block-like', 'cjs-export', 'cjs-import', 'class', 'export', 'import', 'if'],
|
|
19
|
+
next: '*',
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
blankLine: 'never',
|
|
23
|
+
prev: 'directive',
|
|
24
|
+
next: 'directive',
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
blankLine: 'any',
|
|
28
|
+
prev: '*',
|
|
29
|
+
next: ['if', 'for', 'cjs-import', 'import'],
|
|
30
|
+
},
|
|
31
|
+
{
|
|
32
|
+
blankLine: 'any',
|
|
33
|
+
prev: ['export', 'import'],
|
|
34
|
+
next: ['export', 'import'],
|
|
35
|
+
},
|
|
36
|
+
{
|
|
37
|
+
blankLine: 'always',
|
|
38
|
+
prev: '*',
|
|
39
|
+
next: ['try', 'function', 'switch'],
|
|
40
|
+
},
|
|
41
|
+
{
|
|
42
|
+
blankLine: 'always',
|
|
43
|
+
prev: 'if',
|
|
44
|
+
next: 'if',
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
blankLine: 'never',
|
|
48
|
+
prev: ['return', 'throw'],
|
|
49
|
+
next: '*',
|
|
50
|
+
},
|
|
51
|
+
],
|
|
52
|
+
},
|
|
53
|
+
};
|
|
54
|
+
|
|
55
|
+
export const configs = {
|
|
56
|
+
base,
|
|
57
|
+
};
|
|
58
|
+
|
|
59
|
+
export default {
|
|
60
|
+
configs,
|
|
61
|
+
};
|
package/src/types/eslint-js.d.ts
CHANGED