@so1ve/eslint-config 3.14.0 → 3.16.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.
package/dist/index.d.ts CHANGED
@@ -15952,6 +15952,9 @@ declare function astro({
15952
15952
  overrides
15953
15953
  }?: OptionsOverrides): Promise<TypedFlatConfigItem[]>;
15954
15954
  //#endregion
15955
+ //#region src/configs/command.d.ts
15956
+ declare const command: () => Promise<TypedFlatConfigItem[]>;
15957
+ //#endregion
15955
15958
  //#region src/configs/comments.d.ts
15956
15959
  declare const comments: () => TypedFlatConfigItem[];
15957
15960
  //#endregion
@@ -16111,4 +16114,4 @@ declare function interopDefault<T>(m: MaybePromise<T>): Promise<T extends {
16111
16114
  default: infer U;
16112
16115
  } ? U : T>;
16113
16116
  //#endregion
16114
- export { GLOB_ALL_SRC, GLOB_ASTRO, GLOB_ASTRO_TS, GLOB_CSS, GLOB_DTS, GLOB_ESLINTRC, GLOB_EXCLUDE, GLOB_HTML, GLOB_JS, GLOB_JSON, GLOB_JSON5, GLOB_JSONC, GLOB_JSX, GLOB_LESS, GLOB_MARKDOWN, GLOB_MARKDOWN_CODE, GLOB_PACKAGEJSON, GLOB_SCSS, GLOB_SRC, GLOB_SRC_EXT, GLOB_STYLE, GLOB_TESTS, GLOB_TOML, GLOB_TS, GLOB_TSCONFIG, GLOB_TSX, GLOB_VUE, GLOB_YAML, MaybeArray, MaybePromise, Options, OptionsComponentExts, OptionsHasTypeScript, OptionsOverrides, OptionsTypeScriptParserOptions, ResolvedOptions, Rules, TypedFlatConfigItem, astro, comments, defaultPluginRenaming, formatting, getOverrides, html, ignores, imports, interopDefault, javascript, jsonc, mdx, node, onlyError, perfectionist, pnpm, promise, renameRules, resolveSubOptions, so1ve, solid, sortImports, test, toml, typescript$1 as typescript, unicorn, vue, yaml };
16117
+ export { GLOB_ALL_SRC, GLOB_ASTRO, GLOB_ASTRO_TS, GLOB_CSS, GLOB_DTS, GLOB_ESLINTRC, GLOB_EXCLUDE, GLOB_HTML, GLOB_JS, GLOB_JSON, GLOB_JSON5, GLOB_JSONC, GLOB_JSX, GLOB_LESS, GLOB_MARKDOWN, GLOB_MARKDOWN_CODE, GLOB_PACKAGEJSON, GLOB_SCSS, GLOB_SRC, GLOB_SRC_EXT, GLOB_STYLE, GLOB_TESTS, GLOB_TOML, GLOB_TS, GLOB_TSCONFIG, GLOB_TSX, GLOB_VUE, GLOB_YAML, MaybeArray, MaybePromise, Options, OptionsComponentExts, OptionsHasTypeScript, OptionsOverrides, OptionsTypeScriptParserOptions, ResolvedOptions, Rules, TypedFlatConfigItem, astro, command, comments, defaultPluginRenaming, formatting, getOverrides, html, ignores, imports, interopDefault, javascript, jsonc, mdx, node, onlyError, perfectionist, pnpm, promise, renameRules, resolveSubOptions, so1ve, solid, sortImports, test, toml, typescript$1 as typescript, unicorn, vue, yaml };
package/dist/index.js CHANGED
@@ -1,7 +1,9 @@
1
+ import createCommand from "eslint-plugin-command/config";
1
2
  import pluginComments from "@eslint-community/eslint-plugin-eslint-comments";
2
3
  import pluginSo1ve from "@so1ve/eslint-plugin";
3
4
  import pluginSortImports from "@so1ve/eslint-plugin-sort-imports";
4
5
  import pluginArrayFunc from "eslint-plugin-array-func";
6
+ import pluginImportLite from "eslint-plugin-import-lite";
5
7
  import pluginImport from "eslint-plugin-import-x";
6
8
  import pluginNode from "eslint-plugin-n";
7
9
  import * as pluginNoAwaitInPromise from "eslint-plugin-no-await-in-promise";
@@ -166,6 +168,13 @@ async function astro({ overrides = {} } = {}) {
166
168
  }];
167
169
  }
168
170
 
171
+ //#endregion
172
+ //#region src/configs/command.ts
173
+ const command = async () => [{
174
+ ...createCommand(),
175
+ name: "so1ve/command/rules"
176
+ }];
177
+
169
178
  //#endregion
170
179
  //#region src/configs/comments.ts
171
180
  const comments = () => [{
@@ -174,11 +183,11 @@ const comments = () => [{
174
183
  }, {
175
184
  name: "so1ve/comments/rules",
176
185
  rules: {
186
+ "eslint-comments/disable-enable-pair": "off",
177
187
  "eslint-comments/no-aggregating-enable": "error",
178
188
  "eslint-comments/no-duplicate-disable": "error",
179
- "eslint-comments/no-unused-enable": "error",
180
- "eslint-comments/disable-enable-pair": "off",
181
- "eslint-comments/no-unlimited-disable": "off"
189
+ "eslint-comments/no-unlimited-disable": "off",
190
+ "eslint-comments/no-unused-enable": "error"
182
191
  }
183
192
  }];
184
193
 
@@ -194,23 +203,23 @@ async function formatting(options) {
194
203
  name: "so1ve/formatting/rules",
195
204
  rules: {
196
205
  "curly": ["error", "all"],
197
- "so1ve/no-useless-template-string": "error",
198
- "so1ve/no-negated-comparison": "error",
206
+ "so1ve/function-style": "error",
199
207
  "so1ve/no-import-promises-as": "error",
208
+ "so1ve/no-negated-comparison": "error",
209
+ "so1ve/no-useless-template-string": "error",
200
210
  "so1ve/pad-after-last-import": "error",
201
- "so1ve/function-style": "error",
202
- "style/quote-props": ["error", "consistent-as-needed"],
211
+ "style/lines-between-class-members": [
212
+ "error",
213
+ "always",
214
+ { exceptAfterSingleLine: true }
215
+ ],
203
216
  "style/no-extra-parens": ["error", "functions"],
204
217
  "style/padding-line-between-statements": ["error", {
205
218
  blankLine: "always",
206
219
  prev: "*",
207
220
  next: "return"
208
221
  }],
209
- "style/lines-between-class-members": [
210
- "error",
211
- "always",
212
- { exceptAfterSingleLine: true }
213
- ],
222
+ "style/quote-props": ["error", "consistent-as-needed"],
214
223
  "style/spaced-comment": [
215
224
  "error",
216
225
  "always",
@@ -387,12 +396,12 @@ async function html() {
387
396
  files: [GLOB_HTML],
388
397
  rules: {
389
398
  ...renameRules(pluginHtml.configs.recommended.rules, { "@html-eslint": "html" }),
399
+ "html/attrs-newline": "off",
390
400
  "html/indent": "off",
391
- "html/no-trailing-spaces": "off",
392
- "html/require-closing-tags": "off",
393
401
  "html/no-extra-spacing-attrs": "off",
402
+ "html/no-trailing-spaces": "off",
394
403
  "html/quotes": "off",
395
- "html/attrs-newline": "off"
404
+ "html/require-closing-tags": "off"
396
405
  }
397
406
  }];
398
407
  }
@@ -409,7 +418,10 @@ const ignores = () => [{
409
418
  const imports = (options = {}) => [
410
419
  {
411
420
  name: "so1ve/imports/setup",
412
- plugins: { import: pluginImport }
421
+ plugins: {
422
+ "import": pluginImport,
423
+ "import-lite": pluginImportLite
424
+ }
413
425
  },
414
426
  {
415
427
  name: "so1ve/imports/rules",
@@ -453,16 +465,15 @@ const imports = (options = {}) => [
453
465
  } : { node: { extensions: [".js", ".mjs"] } } }
454
466
  },
455
467
  rules: {
456
- "import/named": "error",
468
+ "import-lite/no-duplicates": "error",
469
+ "import-lite/no-named-default": "error",
457
470
  "import/default": "error",
458
471
  "import/export": "error",
459
472
  "import/first": "error",
473
+ "import/named": "error",
460
474
  "import/namespace": "off",
461
- "import/no-mutable-exports": "error",
462
- "import/no-useless-path-segments": ["error", { noUselessIndex: true }],
463
475
  "import/no-named-as-default": "error",
464
- "import/no-duplicates": "error",
465
- "import/no-named-default": "error",
476
+ "import/no-useless-path-segments": ["error", { noUselessIndex: true }],
466
477
  "import/no-webpack-loader-syntax": "error"
467
478
  }
468
479
  },
@@ -481,11 +492,11 @@ async function javascript({ overrides } = {}) {
481
492
  {
482
493
  name: "so1ve/javascript/setup",
483
494
  plugins: {
495
+ "array-func": pluginArrayFunc,
496
+ "no-await-in-promise": pluginNoAwaitInPromise,
484
497
  "so1ve": await interopDefault(pluginSo1ve),
485
- "unused-imports": pluginUnusedImports,
486
498
  "sort-imports": pluginSortImports,
487
- "array-func": pluginArrayFunc,
488
- "no-await-in-promise": pluginNoAwaitInPromise
499
+ "unused-imports": pluginUnusedImports
489
500
  }
490
501
  },
491
502
  {
@@ -509,85 +520,85 @@ async function javascript({ overrides } = {}) {
509
520
  },
510
521
  linterOptions: { reportUnusedDisableDirectives: true },
511
522
  rules: {
523
+ "accessor-pairs": ["error", {
524
+ setWithoutGet: true,
525
+ enforceForClassMembers: true
526
+ }],
512
527
  "array-bracket-newline": "off",
528
+ "array-callback-return": "error",
513
529
  "array-element-newline": "off",
530
+ "array-func/avoid-reverse": "error",
531
+ "array-func/from-map": "off",
532
+ "array-func/no-unnecessary-this-arg": "off",
533
+ "array-func/prefer-array-from": "off",
534
+ "array-func/prefer-flat-map": "error",
535
+ "array-func/prefer-flat": "off",
514
536
  "arrow-body-style": "off",
515
537
  "arrow-parens": "off",
538
+ "block-scoped-var": "error",
539
+ "complexity": ["off", 11],
540
+ "consistent-return": "off",
541
+ "constructor-super": "error",
542
+ "default-case-last": "error",
516
543
  "dot-notation": ["error", { allowKeywords: true }],
544
+ "eqeqeq": ["error", "smart"],
517
545
  "function-call-argument-newline": "off",
518
546
  "function-paren-newline": "off",
519
547
  "generator-star": "off",
520
548
  "implicit-arrow-linebreak": "off",
521
- "indent": "off",
522
549
  "indent-legacy": "off",
550
+ "indent": "off",
523
551
  "jsx-quotes": "off",
524
552
  "linebreak-style": "off",
525
- "newline-per-chained-call": "off",
526
- "no-arrow-condition": "off",
527
- "no-comma-dangle": "off",
528
- "no-confusing-arrow": "off",
529
- "no-extra-semi": "off",
530
- "no-reserved-keys": "off",
531
- "no-spaced-func": "off",
532
- "no-space-before-semi": "off",
533
- "no-wrap-func": "off",
534
- "nonblock-statement-body-position": "off",
535
- "one-var-declaration-per-line": "off",
536
- "switch-colon-spacing": "off",
537
- "symbol-description": "off",
538
- "wrap-regex": "off",
539
- "unused-imports/no-unused-imports": "error",
540
- "unused-imports/no-unused-vars": ["error", {
541
- vars: "all",
542
- varsIgnorePattern: "^_",
543
- args: "after-used",
544
- argsIgnorePattern: "^_",
545
- ignoreRestSiblings: true
546
- }],
547
- "accessor-pairs": ["error", {
548
- setWithoutGet: true,
549
- enforceForClassMembers: true
550
- }],
551
- "constructor-super": "error",
552
- "default-case-last": "error",
553
553
  "new-cap": ["error", {
554
554
  newIsCap: true,
555
555
  capIsNew: false,
556
556
  properties: true
557
557
  }],
558
+ "newline-per-chained-call": "off",
559
+ "no-alert": "error",
558
560
  "no-array-constructor": "error",
561
+ "no-arrow-condition": "off",
559
562
  "no-async-promise-executor": "error",
563
+ "no-await-in-promise/no-await-in-promise": "error",
560
564
  "no-caller": "error",
565
+ "no-case-declarations": "error",
561
566
  "no-class-assign": "error",
567
+ "no-comma-dangle": "off",
562
568
  "no-compare-neg-zero": "error",
569
+ "no-cond-assign": ["error", "always"],
570
+ "no-confusing-arrow": "off",
571
+ "no-console": ["error", { allow: [
572
+ "error",
573
+ "warn",
574
+ "table",
575
+ "time"
576
+ ] }],
563
577
  "no-const-assign": "error",
578
+ "no-constant-condition": "error",
564
579
  "no-control-regex": "error",
580
+ "no-debugger": "error",
565
581
  "no-delete-var": "error",
566
582
  "no-dupe-args": "error",
567
583
  "no-dupe-class-members": "error",
568
584
  "no-dupe-keys": "error",
569
585
  "no-duplicate-case": "error",
570
- "no-useless-backreference": "error",
571
- "no-useless-call": "error",
572
- "no-useless-computed-key": "error",
573
- "no-useless-constructor": "error",
574
- "no-useless-rename": "error",
575
- "no-useless-return": "error",
576
- "no-void": "error",
577
- "no-empty": ["error", { allowEmptyCatch: true }],
578
586
  "no-empty-character-class": "error",
579
587
  "no-empty-pattern": "error",
588
+ "no-empty": ["error", { allowEmptyCatch: true }],
580
589
  "no-eval": "error",
581
590
  "no-ex-assign": "error",
582
591
  "no-extend-native": "error",
583
592
  "no-extra-bind": "error",
584
593
  "no-extra-boolean-cast": "error",
594
+ "no-extra-semi": "off",
585
595
  "no-fallthrough": "error",
586
596
  "no-func-assign": "error",
587
597
  "no-global-assign": "error",
588
598
  "no-implied-eval": "error",
589
599
  "no-import-assign": "error",
590
600
  "no-invalid-regexp": "error",
601
+ "no-invalid-this": "error",
591
602
  "no-irregular-whitespace": "error",
592
603
  "no-iterator": "error",
593
604
  "no-labels": ["error", {
@@ -597,28 +608,20 @@ async function javascript({ overrides } = {}) {
597
608
  "no-lone-blocks": "error",
598
609
  "no-loss-of-precision": "error",
599
610
  "no-misleading-character-class": "error",
611
+ "no-multi-str": "error",
600
612
  "no-new-func": "error",
601
- "no-object-constructor": "error",
602
613
  "no-new-native-nonconstructor": "error",
603
614
  "no-new-wrappers": "error",
604
- "no-prototype-builtins": "error",
605
- "no-useless-catch": "error",
615
+ "no-obj-calls": "error",
616
+ "no-object-constructor": "error",
617
+ "no-octal-escape": "error",
618
+ "no-octal": "error",
606
619
  "no-param-reassign": "off",
607
- "no-constant-condition": "error",
608
- "no-debugger": "error",
609
- "no-console": ["error", { allow: [
610
- "error",
611
- "warn",
612
- "table",
613
- "time"
614
- ] }],
615
- "no-cond-assign": ["error", "always"],
616
- "no-restricted-syntax": [
617
- "error",
618
- "DebuggerStatement",
619
- "LabeledStatement",
620
- "WithStatement"
621
- ],
620
+ "no-proto": "error",
621
+ "no-prototype-builtins": "error",
622
+ "no-redeclare": ["error", { builtinGlobals: false }],
623
+ "no-regex-spaces": "error",
624
+ "no-reserved-keys": "off",
622
625
  "no-restricted-globals": [
623
626
  "error",
624
627
  {
@@ -689,53 +692,31 @@ async function javascript({ overrides } = {}) {
689
692
  message: "Use `Number.parseInt` instead"
690
693
  }
691
694
  ],
692
- "no-obj-calls": "error",
693
- "no-octal": "error",
694
- "no-octal-escape": "error",
695
- "no-proto": "error",
696
- "no-redeclare": ["error", { builtinGlobals: false }],
697
- "no-regex-spaces": "error",
695
+ "no-restricted-syntax": [
696
+ "error",
697
+ "DebuggerStatement",
698
+ "LabeledStatement",
699
+ "WithStatement"
700
+ ],
701
+ "no-return-await": "off",
698
702
  "no-self-assign": ["error", { props: true }],
699
703
  "no-self-compare": "error",
700
704
  "no-sequences": "error",
701
705
  "no-shadow-restricted-names": "error",
706
+ "no-space-before-semi": "off",
707
+ "no-spaced-func": "off",
702
708
  "no-template-curly-in-string": "error",
703
709
  "no-this-before-super": "error",
704
710
  "no-throw-literal": "error",
705
- "no-undef": "error",
706
711
  "no-undef-init": "error",
712
+ "no-undef": "error",
707
713
  "no-unexpected-multiline": "error",
708
714
  "no-unmodified-loop-condition": "error",
709
715
  "no-unneeded-ternary": ["error", { defaultAssignment: false }],
710
- "no-unreachable": "error",
711
716
  "no-unreachable-loop": "error",
717
+ "no-unreachable": "error",
712
718
  "no-unsafe-finally": "error",
713
719
  "no-unsafe-negation": "error",
714
- "no-return-await": "off",
715
- "no-var": "error",
716
- "prefer-const": ["error", {
717
- destructuring: "all",
718
- ignoreReadBeforeAssign: true
719
- }],
720
- "prefer-arrow-callback": ["error", {
721
- allowNamedFunctions: false,
722
- allowUnboundThis: true
723
- }],
724
- "one-var": ["error", "never"],
725
- "object-shorthand": [
726
- "error",
727
- "always",
728
- { ignoreConstructors: false }
729
- ],
730
- "prefer-exponentiation-operator": "error",
731
- "prefer-rest-params": "error",
732
- "prefer-spread": "error",
733
- "prefer-template": "error",
734
- "prefer-promise-reject-errors": "error",
735
- "prefer-regex-literals": ["error", { disallowRedundantWrapping: true }],
736
- "yoda": ["error", "never"],
737
- "array-callback-return": "error",
738
- "block-scoped-var": "error",
739
720
  "no-unused-expressions": ["error", {
740
721
  allowShortCircuit: true,
741
722
  allowTernary: true,
@@ -752,32 +733,62 @@ async function javascript({ overrides } = {}) {
752
733
  classes: false,
753
734
  variables: true
754
735
  }],
755
- "consistent-return": "off",
756
- "complexity": ["off", 11],
757
- "eqeqeq": ["error", "smart"],
758
- "no-alert": "error",
759
- "no-case-declarations": "error",
760
- "no-multi-str": "error",
736
+ "no-useless-backreference": "error",
737
+ "no-useless-call": "error",
738
+ "no-useless-catch": "error",
739
+ "no-useless-computed-key": "error",
740
+ "no-useless-constructor": "error",
741
+ "no-useless-rename": "error",
742
+ "no-useless-return": "error",
743
+ "no-var": "error",
744
+ "no-void": "error",
761
745
  "no-with": "error",
762
- "no-invalid-this": "error",
763
- "vars-on-top": "error",
746
+ "no-wrap-func": "off",
747
+ "nonblock-statement-body-position": "off",
748
+ "object-shorthand": [
749
+ "error",
750
+ "always",
751
+ { ignoreConstructors: false }
752
+ ],
753
+ "one-var-declaration-per-line": "off",
754
+ "one-var": ["error", "never"],
755
+ "prefer-arrow-callback": ["error", {
756
+ allowNamedFunctions: false,
757
+ allowUnboundThis: true
758
+ }],
759
+ "prefer-const": ["error", {
760
+ destructuring: "all",
761
+ ignoreReadBeforeAssign: true
762
+ }],
763
+ "prefer-exponentiation-operator": "error",
764
+ "prefer-promise-reject-errors": "error",
765
+ "prefer-regex-literals": ["error", { disallowRedundantWrapping: true }],
766
+ "prefer-rest-params": "error",
767
+ "prefer-spread": "error",
768
+ "prefer-template": "error",
764
769
  "require-await": "off",
770
+ "so1ve/import-dedupe": "error",
771
+ "so1ve/require-async-with-await": "error",
772
+ "sort-imports/exports": "error",
773
+ "sort-imports/imports": ["error"],
774
+ "switch-colon-spacing": "off",
775
+ "symbol-description": "off",
776
+ "unused-imports/no-unused-imports": "error",
777
+ "unused-imports/no-unused-vars": ["error", {
778
+ vars: "all",
779
+ varsIgnorePattern: "^_",
780
+ args: "after-used",
781
+ argsIgnorePattern: "^_",
782
+ ignoreRestSiblings: true
783
+ }],
765
784
  "use-isnan": ["error", {
766
785
  enforceForSwitchCase: true,
767
786
  enforceForIndexOf: true
768
787
  }],
769
788
  "valid-typeof": ["error", { requireStringLiterals: true }],
770
- "so1ve/import-dedupe": "error",
771
- "so1ve/require-async-with-await": "error",
772
- "sort-imports/imports": ["error"],
773
- "sort-imports/exports": "error",
774
- "array-func/prefer-array-from": "off",
775
- "array-func/no-unnecessary-this-arg": "off",
776
- "array-func/prefer-flat": "off",
777
- "array-func/from-map": "off",
778
- "array-func/avoid-reverse": "error",
779
- "array-func/prefer-flat-map": "error",
780
- "no-await-in-promise/no-await-in-promise": "error",
789
+ "vars-on-top": "error",
790
+ "wrap-regex": "off",
791
+ "yoda": ["error", "never"],
781
792
  ...overrides
782
793
  }
783
794
  },
@@ -817,8 +828,8 @@ async function jsonc() {
817
828
  ...pluginJsonc.configs.base.overrides[0].rules,
818
829
  ...pluginJsonc.configs["recommended-with-jsonc"].rules,
819
830
  "jsonc/no-octal-escape": "error",
820
- "jsonc/quotes": "off",
821
- "jsonc/quotes-props": "off"
831
+ "jsonc/quotes-props": "off",
832
+ "jsonc/quotes": "off"
822
833
  }
823
834
  }];
824
835
  }
@@ -841,21 +852,21 @@ async function mdx({ componentExts = [], overrides } = {}) {
841
852
  rules: {
842
853
  ...pluginMdx.flatCodeBlocks.rules,
843
854
  "html/require-doctype": "off",
844
- "ts/no-redeclare": "off",
845
- "ts/no-unused-vars": "off",
846
- "ts/no-use-before-define": "off",
847
- "ts/no-var-requires": "off",
848
- "ts/consistent-type-imports": "off",
849
- "ts/no-namespace": "off",
850
- "ts/no-require-imports": "off",
851
855
  "import/no-unresolved": "off",
852
- "unused-imports/no-unused-imports": "off",
853
- "unused-imports/no-unused-vars": "off",
854
856
  "no-alert": "off",
855
857
  "no-console": "off",
856
858
  "no-restricted-imports": "off",
857
859
  "no-undef": "off",
858
860
  "no-unused-expressions": "off",
861
+ "ts/consistent-type-imports": "off",
862
+ "ts/no-namespace": "off",
863
+ "ts/no-redeclare": "off",
864
+ "ts/no-require-imports": "off",
865
+ "ts/no-unused-vars": "off",
866
+ "ts/no-use-before-define": "off",
867
+ "ts/no-var-requires": "off",
868
+ "unused-imports/no-unused-imports": "off",
869
+ "unused-imports/no-unused-vars": "off",
859
870
  ...overrides
860
871
  }
861
872
  }];
@@ -869,8 +880,8 @@ const node = () => [{
869
880
  }, {
870
881
  name: "so1ve/node/rules",
871
882
  rules: {
872
- "node/no-callback-literal": "off",
873
883
  "node/handle-callback-err": ["error", "^(err|error)$"],
884
+ "node/no-callback-literal": "off",
874
885
  "node/no-deprecated-api": "error",
875
886
  "node/no-exports-assign": "error",
876
887
  "node/no-new-require": "error",
@@ -999,9 +1010,9 @@ async function test({ overrides } = {}) {
999
1010
  return [{
1000
1011
  name: "so1ve/test/setup",
1001
1012
  plugins: {
1013
+ "jest-formatting": pluginJestFormatting,
1002
1014
  "no-only-tests": pluginNoOnlyTests,
1003
- "vitest": pluginVitest,
1004
- "jest-formatting": pluginJestFormatting
1015
+ "vitest": pluginVitest
1005
1016
  }
1006
1017
  }, {
1007
1018
  name: "so1ve/test/rules",
@@ -1010,13 +1021,11 @@ async function test({ overrides } = {}) {
1010
1021
  ...pluginVitest.configs.recommended.rules,
1011
1022
  "no-only-tests/no-only-tests": "error",
1012
1023
  "vitest/expect-expect": "off",
1013
- "vitest/valid-title": "off",
1014
- "vitest/valid-describe-callback": "off",
1015
1024
  "vitest/no-alias-methods": "error",
1016
1025
  "vitest/no-interpolation-in-snapshots": "error",
1017
1026
  "vitest/no-test-prefixes": "error",
1018
- "vitest/prefer-expect-resolves": "error",
1019
1027
  "vitest/prefer-comparison-matcher": "error",
1028
+ "vitest/prefer-expect-resolves": "error",
1020
1029
  "vitest/prefer-mock-promise-shorthand": "error",
1021
1030
  "vitest/prefer-spy-on": "error",
1022
1031
  "vitest/prefer-to-be-falsy": "error",
@@ -1025,6 +1034,8 @@ async function test({ overrides } = {}) {
1025
1034
  "vitest/prefer-to-contain": "error",
1026
1035
  "vitest/prefer-to-have-length": "error",
1027
1036
  "vitest/prefer-todo": "error",
1037
+ "vitest/valid-describe-callback": "off",
1038
+ "vitest/valid-title": "off",
1028
1039
  ...overrides
1029
1040
  }
1030
1041
  }];
@@ -1100,20 +1111,52 @@ const typescript = async ({ componentExts = [], parserOptions, overrides } = {})
1100
1111
  ...b
1101
1112
  }), {}), { "@typescript-eslint": "ts" }),
1102
1113
  "import/named": "off",
1114
+ "no-dupe-class-members": "off",
1115
+ "no-invalid-this": "off",
1116
+ "no-redeclare": "off",
1117
+ "no-use-before-define": "off",
1118
+ "no-useless-constructor": "off",
1119
+ "object-curly-spacing": "off",
1120
+ "so1ve/no-inline-type-import": "error",
1103
1121
  "so1ve/prefer-ts-expect-error": "error",
1104
- "ts/comma-dangle": "off",
1122
+ "space-before-blocks": "off",
1123
+ "space-before-function-paren": "off",
1124
+ "ts/ban-ts-comment": ["error", { minimumDescriptionLength: 0 }],
1125
+ "ts/ban-ts-ignore": "off",
1105
1126
  "ts/brace-style": "off",
1127
+ "ts/camelcase": "off",
1128
+ "ts/comma-dangle": "off",
1106
1129
  "ts/comma-spacing": "off",
1130
+ "ts/consistent-indexed-object-style": ["error", "record"],
1131
+ "ts/consistent-type-definitions": ["error", "interface"],
1132
+ "ts/consistent-type-imports": ["error", {
1133
+ prefer: "type-imports",
1134
+ disallowTypeAnnotations: false
1135
+ }],
1136
+ "ts/explicit-function-return-type": "off",
1137
+ "ts/explicit-member-accessibility": ["error", {
1138
+ accessibility: "explicit",
1139
+ overrides: { constructors: "no-public" }
1140
+ }],
1141
+ "ts/explicit-module-boundary-types": "off",
1107
1142
  "ts/func-call-spacing": "off",
1108
1143
  "ts/indent": "off",
1109
1144
  "ts/keyword-spacing": "off",
1110
1145
  "ts/member-delimiter-style": "off",
1146
+ "ts/method-signature-style": ["error", "property"],
1147
+ "ts/no-dupe-class-members": "error",
1148
+ "ts/no-duplicate-enum-values": "error",
1149
+ "ts/no-empty-function": "off",
1150
+ "ts/no-empty-interface": "off",
1151
+ "ts/no-empty-object-type": ["error", { allowInterfaces: "always" }],
1152
+ "ts/no-explicit-any": "off",
1111
1153
  "ts/no-extra-semi": "off",
1112
- "ts/quotes": "off",
1113
- "ts/semi": "off",
1114
- "ts/space-before-function-paren": "off",
1115
- "ts/type-annotation-spacing": "off",
1116
- "ts/ban-ts-comment": ["error", { minimumDescriptionLength: 0 }],
1154
+ "ts/no-invalid-this": "error",
1155
+ "ts/no-non-null-asserted-nullish-coalescing": "error",
1156
+ "ts/no-non-null-assertion": "off",
1157
+ "ts/no-parameter-properties": "off",
1158
+ "ts/no-redeclare": "error",
1159
+ "ts/no-require-imports": "error",
1117
1160
  "ts/no-restricted-types": ["error", { types: {
1118
1161
  String: {
1119
1162
  message: "Use `string` instead.",
@@ -1149,52 +1192,20 @@ const typescript = async ({ componentExts = [], parserOptions, overrides } = {})
1149
1192
  }
1150
1193
  } }],
1151
1194
  "ts/no-unsafe-function-type": "error",
1152
- "ts/no-wrapper-object-types": "error",
1153
- "ts/consistent-type-imports": ["error", {
1154
- prefer: "type-imports",
1155
- disallowTypeAnnotations: false
1156
- }],
1157
- "ts/consistent-type-definitions": ["error", "interface"],
1158
- "ts/consistent-indexed-object-style": ["error", "record"],
1159
- "ts/prefer-for-of": "error",
1160
- "ts/no-duplicate-enum-values": "error",
1161
- "ts/no-non-null-asserted-nullish-coalescing": "error",
1162
- "ts/no-require-imports": "error",
1163
- "ts/method-signature-style": ["error", "property"],
1164
- "ts/explicit-member-accessibility": ["error", {
1165
- accessibility: "explicit",
1166
- overrides: { constructors: "no-public" }
1167
- }],
1168
- "ts/no-empty-object-type": ["error", { allowInterfaces: "always" }],
1169
- "no-useless-constructor": "off",
1170
- "no-invalid-this": "off",
1171
- "ts/no-invalid-this": "error",
1172
- "no-redeclare": "off",
1173
- "ts/no-redeclare": "error",
1174
- "no-use-before-define": "off",
1195
+ "ts/no-unused-vars": "off",
1175
1196
  "ts/no-use-before-define": ["error", {
1176
1197
  functions: false,
1177
1198
  classes: false,
1178
1199
  variables: true
1179
1200
  }],
1180
- "object-curly-spacing": "off",
1181
- "space-before-blocks": "off",
1201
+ "ts/no-wrapper-object-types": "error",
1202
+ "ts/prefer-for-of": "error",
1203
+ "ts/quotes": "off",
1204
+ "ts/semi": "off",
1182
1205
  "ts/space-before-blocks": "off",
1183
- "space-before-function-paren": "off",
1184
- "no-dupe-class-members": "off",
1185
- "ts/no-dupe-class-members": "error",
1186
- "so1ve/no-inline-type-import": "error",
1187
- "ts/camelcase": "off",
1188
- "ts/explicit-function-return-type": "off",
1189
- "ts/no-explicit-any": "off",
1190
- "ts/no-parameter-properties": "off",
1191
- "ts/no-empty-interface": "off",
1192
- "ts/ban-ts-ignore": "off",
1193
- "ts/no-empty-function": "off",
1194
- "ts/no-non-null-assertion": "off",
1195
- "ts/explicit-module-boundary-types": "off",
1206
+ "ts/space-before-function-paren": "off",
1196
1207
  "ts/triple-slash-reference": "off",
1197
- "ts/no-unused-vars": "off",
1208
+ "ts/type-annotation-spacing": "off",
1198
1209
  ...overrides
1199
1210
  }
1200
1211
  },
@@ -1233,36 +1244,36 @@ const typescript = async ({ componentExts = [], parserOptions, overrides } = {})
1233
1244
  ] }
1234
1245
  } },
1235
1246
  rules: {
1236
- "no-throw-literal": "off",
1237
- "ts/only-throw-error": "error",
1238
- "no-implied-eval": "off",
1239
- "ts/no-implied-eval": "error",
1240
1247
  "dot-notation": "off",
1241
- "ts/dot-notation": ["error", { allowKeywords: true }],
1248
+ "no-implied-eval": "off",
1249
+ "no-throw-literal": "off",
1242
1250
  "no-void": ["error", { allowAsStatement: true }],
1243
- "ts/await-thenable": "error",
1244
- "ts/no-for-in-array": "error",
1245
- "ts/no-unnecessary-type-assertion": "error",
1246
- "ts/restrict-template-expressions": ["error", {
1247
- allowAny: true,
1248
- allowNumber: true,
1249
- allowBoolean: true
1250
- }],
1251
1251
  "ts/array-type": ["error", {
1252
1252
  default: "array",
1253
1253
  readonly: "array"
1254
1254
  }],
1255
+ "ts/await-thenable": "error",
1255
1256
  "ts/consistent-generic-constructors": "error",
1256
- "ts/consistent-type-exports": "error",
1257
1257
  "ts/consistent-type-assertions": ["error", {
1258
1258
  assertionStyle: "as",
1259
1259
  objectLiteralTypeAssertions: "allow"
1260
1260
  }],
1261
+ "ts/consistent-type-exports": "error",
1262
+ "ts/dot-notation": ["error", { allowKeywords: true }],
1263
+ "ts/no-for-in-array": "error",
1264
+ "ts/no-implied-eval": "error",
1265
+ "ts/no-unnecessary-type-arguments": "error",
1266
+ "ts/no-unnecessary-type-assertion": "error",
1267
+ "ts/non-nullable-type-assertion-style": "error",
1268
+ "ts/only-throw-error": "error",
1261
1269
  "ts/prefer-nullish-coalescing": "error",
1262
1270
  "ts/prefer-optional-chain": "error",
1263
1271
  "ts/prefer-return-this-type": "error",
1264
- "ts/no-unnecessary-type-arguments": "error",
1265
- "ts/non-nullable-type-assertion-style": "error"
1272
+ "ts/restrict-template-expressions": ["error", {
1273
+ allowAny: true,
1274
+ allowNumber: true,
1275
+ allowBoolean: true
1276
+ }]
1266
1277
  }
1267
1278
  },
1268
1279
  {
@@ -1293,54 +1304,57 @@ const unicorn = () => [{
1293
1304
  name: "so1ve/unicorn/rules",
1294
1305
  rules: {
1295
1306
  "unicorn/consistent-assert": "error",
1307
+ "unicorn/consistent-date-clone": "error",
1296
1308
  "unicorn/consistent-empty-array-spread": "error",
1297
1309
  "unicorn/consistent-existence-index-check": "error",
1298
- "unicorn/consistent-date-clone": "error",
1299
- "unicorn/throw-new-error": "error",
1300
- "unicorn/relative-url-style": ["error", "always"],
1301
- "unicorn/switch-case-braces": "error",
1302
- "unicorn/number-literal-case": "error",
1303
- "unicorn/numeric-separators-style": "error",
1304
- "unicorn/new-for-builtins": "error",
1305
1310
  "unicorn/error-message": "error",
1306
1311
  "unicorn/escape-case": "error",
1307
1312
  "unicorn/explicit-length-check": "error",
1308
- "unicorn/no-instanceof-builtins": "error",
1309
- "unicorn/no-new-buffer": "error",
1310
- "unicorn/no-new-array": "error",
1313
+ "unicorn/new-for-builtins": "error",
1311
1314
  "unicorn/no-array-for-each": "error",
1312
1315
  "unicorn/no-array-method-this-argument": "error",
1316
+ "unicorn/no-await-expression-member": "error",
1317
+ "unicorn/no-await-in-promise-methods": "error",
1313
1318
  "unicorn/no-for-loop": "error",
1319
+ "unicorn/no-immediate-mutation": "error",
1320
+ "unicorn/no-instanceof-builtins": "error",
1314
1321
  "unicorn/no-lonely-if": "error",
1315
1322
  "unicorn/no-negated-condition": "error",
1316
- "unicorn/no-useless-spread": "error",
1323
+ "unicorn/no-new-array": "error",
1324
+ "unicorn/no-new-buffer": "error",
1317
1325
  "unicorn/no-useless-collection-argument": "error",
1318
- "unicorn/no-immediate-mutation": "error",
1319
- "unicorn/require-module-specifiers": "error",
1320
- "unicorn/prefer-ternary": "error",
1321
- "unicorn/prefer-query-selector": "error",
1326
+ "unicorn/no-useless-spread": "error",
1327
+ "unicorn/no-zero-fractions": "error",
1328
+ "unicorn/number-literal-case": "error",
1329
+ "unicorn/numeric-separators-style": "error",
1330
+ "unicorn/prefer-array-find": "error",
1331
+ "unicorn/prefer-array-flat": "error",
1332
+ "unicorn/prefer-array-index-of": "error",
1333
+ "unicorn/prefer-array-some": "error",
1334
+ "unicorn/prefer-class-fields": "error",
1335
+ "unicorn/prefer-date-now": "error",
1336
+ "unicorn/prefer-includes": "error",
1337
+ "unicorn/prefer-json-parse-buffer": "error",
1322
1338
  "unicorn/prefer-modern-dom-apis": "error",
1323
1339
  "unicorn/prefer-modern-math-apis": "error",
1324
- "unicorn/prefer-json-parse-buffer": "error",
1325
- "unicorn/prefer-date-now": "error",
1326
- "unicorn/prefer-array-some": "error",
1327
- "unicorn/prefer-array-index-of": "error",
1328
- "unicorn/prefer-array-flat": "error",
1329
- "unicorn/prefer-array-find": "error",
1330
- "unicorn/prefer-spread": "error",
1340
+ "unicorn/prefer-negative-index": "error",
1341
+ "unicorn/prefer-node-protocol": "error",
1342
+ "unicorn/prefer-object-from-entries": "error",
1343
+ "unicorn/prefer-optional-catch-binding": "error",
1344
+ "unicorn/prefer-prototype-methods": "error",
1345
+ "unicorn/prefer-query-selector": "error",
1346
+ "unicorn/prefer-regexp-test": "error",
1347
+ "unicorn/prefer-response-static-json": "error",
1331
1348
  "unicorn/prefer-set-size": "error",
1349
+ "unicorn/prefer-spread": "error",
1332
1350
  "unicorn/prefer-string-slice": "error",
1333
- "unicorn/prefer-includes": "error",
1334
1351
  "unicorn/prefer-string-starts-ends-with": "error",
1352
+ "unicorn/prefer-ternary": "error",
1335
1353
  "unicorn/prefer-type-error": "error",
1336
- "unicorn/prefer-node-protocol": "error",
1337
- "unicorn/prefer-negative-index": "error",
1338
- "unicorn/prefer-regexp-test": "error",
1339
- "unicorn/prefer-response-static-json": "error",
1340
- "unicorn/prefer-optional-catch-binding": "error",
1341
- "unicorn/prefer-object-from-entries": "error",
1342
- "unicorn/prefer-prototype-methods": "error",
1343
- "unicorn/prefer-class-fields": "error"
1354
+ "unicorn/relative-url-style": ["error", "always"],
1355
+ "unicorn/require-module-specifiers": "error",
1356
+ "unicorn/switch-case-braces": "error",
1357
+ "unicorn/throw-new-error": "error"
1344
1358
  }
1345
1359
  }];
1346
1360
 
@@ -1369,19 +1383,56 @@ async function vue({ overrides, typescript: typescript$1 } = {}) {
1369
1383
  ...pluginVue.configs.essential.rules,
1370
1384
  ...pluginVue.configs["strongly-recommended"].rules,
1371
1385
  ...pluginVue.configs.recommended.rules,
1372
- "no-unused-vars": "off",
1373
1386
  "no-undef": "off",
1387
+ "no-unused-vars": "off",
1388
+ "so1ve/vue-root-element-sort-attributes": "error",
1374
1389
  "ts/no-unused-vars": "off",
1375
- "vue/no-v-html": "off",
1376
- "vue/require-prop-types": "off",
1377
- "vue/require-default-prop": "off",
1378
- "vue/multi-word-component-names": "off",
1390
+ "vue/array-bracket-spacing": "off",
1391
+ "vue/arrow-spacing": "off",
1392
+ "vue/attributes-order": ["error", {
1393
+ order: [
1394
+ "DEFINITION",
1395
+ "LIST_RENDERING",
1396
+ "CONDITIONALS",
1397
+ "RENDER_MODIFIERS",
1398
+ "TWO_WAY_BINDING",
1399
+ "OTHER_DIRECTIVES",
1400
+ ["UNIQUE", "SLOT"],
1401
+ "GLOBAL",
1402
+ "OTHER_ATTR",
1403
+ "EVENTS",
1404
+ "CONTENT"
1405
+ ],
1406
+ alphabetical: true
1407
+ }],
1408
+ "vue/block-lang": ["error", {
1409
+ script: { lang: ["js", "ts"] },
1410
+ template: { lang: [
1411
+ "html",
1412
+ "jade",
1413
+ "pug",
1414
+ "ejs"
1415
+ ] },
1416
+ style: { lang: [
1417
+ "css",
1418
+ "sass",
1419
+ "scss",
1420
+ "less",
1421
+ "stylus",
1422
+ "postcss"
1423
+ ] }
1424
+ }],
1379
1425
  "vue/block-order": ["error", { order: [
1380
1426
  "script:not([setup])",
1381
1427
  "script[setup]",
1382
1428
  "template",
1383
1429
  "style"
1384
1430
  ] }],
1431
+ "vue/block-spacing": "off",
1432
+ "vue/brace-style": "off",
1433
+ "vue/comma-dangle": "off",
1434
+ "vue/comma-spacing": "off",
1435
+ "vue/comma-style": "off",
1385
1436
  "vue/component-api-style": ["error", ["script-setup", "composition"]],
1386
1437
  "vue/component-name-in-template-casing": [
1387
1438
  "error",
@@ -1396,31 +1447,63 @@ async function vue({ overrides, typescript: typescript$1 } = {}) {
1396
1447
  "defineProps",
1397
1448
  "defineSlots"
1398
1449
  ] }],
1450
+ "vue/dot-location": ["error", "property"],
1451
+ "vue/dot-notation": ["error", { allowKeywords: true }],
1452
+ "vue/eqeqeq": ["error", "smart"],
1453
+ "vue/html-closing-bracket-spacing": "off",
1454
+ "vue/html-comment-content-newline": ["error", {
1455
+ singleline: "ignore",
1456
+ multiline: "always"
1457
+ }],
1399
1458
  "vue/html-comment-content-spacing": [
1400
1459
  "error",
1401
1460
  "always",
1402
1461
  { exceptions: ["-"] }
1403
1462
  ],
1404
- "vue/no-restricted-v-bind": ["error", "/^v-/"],
1405
- "vue/no-useless-v-bind": ["error", { ignoreIncludesComment: true }],
1406
- "vue/no-unused-refs": "error",
1407
- "vue/no-v-text-v-html-on-component": "error",
1408
- "vue/padding-line-between-blocks": ["error", "always"],
1409
- "vue/prefer-separate-static-class": "error",
1410
- "vue/dot-location": ["error", "property"],
1411
- "vue/dot-notation": ["error", { allowKeywords: true }],
1412
- "vue/eqeqeq": ["error", "smart"],
1463
+ "vue/html-comment-indent": ["error", "tab"],
1464
+ "vue/html-indent": "off",
1465
+ "vue/html-quotes": "off",
1466
+ "vue/html-self-closing": ["error", {
1467
+ html: {
1468
+ void: "always",
1469
+ normal: "always",
1470
+ component: "always"
1471
+ },
1472
+ svg: "always",
1473
+ math: "always"
1474
+ }],
1475
+ "vue/key-spacing": "off",
1476
+ "vue/keyword-spacing": "off",
1477
+ "vue/max-attributes-per-line": "off",
1478
+ "vue/multi-word-component-names": "off",
1479
+ "vue/multiline-html-element-content-newline": "off",
1480
+ "vue/mustache-interpolation-spacing": "off",
1481
+ "vue/no-console": ["error", { allow: [
1482
+ "error",
1483
+ "warn",
1484
+ "table",
1485
+ "time"
1486
+ ] }],
1413
1487
  "vue/no-constant-condition": "error",
1414
1488
  "vue/no-empty-pattern": "error",
1415
1489
  "vue/no-irregular-whitespace": "error",
1416
1490
  "vue/no-loss-of-precision": "error",
1491
+ "vue/no-multi-spaces": "off",
1492
+ "vue/no-multiple-template-root": "off",
1417
1493
  "vue/no-restricted-syntax": [
1418
1494
  "error",
1419
1495
  "DebuggerStatement",
1420
1496
  "LabeledStatement",
1421
1497
  "WithStatement"
1422
1498
  ],
1499
+ "vue/no-restricted-v-bind": ["error", "/^v-/"],
1423
1500
  "vue/no-sparse-arrays": "error",
1501
+ "vue/no-static-inline-styles": ["error", { allowBinding: true }],
1502
+ "vue/no-unused-refs": "error",
1503
+ "vue/no-useless-concat": "error",
1504
+ "vue/no-useless-v-bind": ["error", { ignoreIncludesComment: true }],
1505
+ "vue/no-v-html": "off",
1506
+ "vue/no-v-text-v-html-on-component": "error",
1424
1507
  "vue/object-curly-newline": ["error", {
1425
1508
  multiline: true,
1426
1509
  consistent: true
@@ -1434,25 +1517,14 @@ async function vue({ overrides, typescript: typescript$1 } = {}) {
1434
1517
  avoidQuotes: true
1435
1518
  }
1436
1519
  ],
1520
+ "vue/operator-linebreak": "off",
1521
+ "vue/padding-line-between-blocks": ["error", "always"],
1522
+ "vue/prefer-define-options": "error",
1523
+ "vue/prefer-separate-static-class": "error",
1437
1524
  "vue/prefer-template": "error",
1525
+ "vue/prefer-true-attribute-shorthand": "error",
1438
1526
  "vue/quote-props": ["error", "consistent-as-needed"],
1439
- "vue/block-lang": ["error", {
1440
- script: { lang: ["js", "ts"] },
1441
- template: { lang: [
1442
- "html",
1443
- "jade",
1444
- "pug",
1445
- "ejs"
1446
- ] },
1447
- style: { lang: [
1448
- "css",
1449
- "sass",
1450
- "scss",
1451
- "less",
1452
- "stylus",
1453
- "postcss"
1454
- ] }
1455
- }],
1527
+ "vue/require-default-prop": "off",
1456
1528
  "vue/require-macro-variable-name": ["error", {
1457
1529
  defineProps: "props",
1458
1530
  defineEmits: "emit",
@@ -1460,74 +1532,16 @@ async function vue({ overrides, typescript: typescript$1 } = {}) {
1460
1532
  useSlots: "slots",
1461
1533
  useAttrs: "attrs"
1462
1534
  }],
1535
+ "vue/require-prop-types": "off",
1463
1536
  "vue/require-typed-ref": "error",
1464
- "vue/no-static-inline-styles": ["error", { allowBinding: true }],
1465
- "vue/no-console": ["error", { allow: [
1466
- "error",
1467
- "warn",
1468
- "table",
1469
- "time"
1470
- ] }],
1537
+ "vue/singleline-html-element-content-newline": "off",
1538
+ "vue/template-curly-spacing": "off",
1471
1539
  "vue/v-bind-style": [
1472
1540
  "error",
1473
1541
  "shorthand",
1474
1542
  { sameNameShorthand: "always" }
1475
1543
  ],
1476
1544
  "vue/v-for-delimiter-style": ["error", "in"],
1477
- "vue/attributes-order": ["error", {
1478
- order: [
1479
- "DEFINITION",
1480
- "LIST_RENDERING",
1481
- "CONDITIONALS",
1482
- "RENDER_MODIFIERS",
1483
- "TWO_WAY_BINDING",
1484
- "OTHER_DIRECTIVES",
1485
- ["UNIQUE", "SLOT"],
1486
- "GLOBAL",
1487
- "OTHER_ATTR",
1488
- "EVENTS",
1489
- "CONTENT"
1490
- ],
1491
- alphabetical: true
1492
- }],
1493
- "vue/prefer-true-attribute-shorthand": "error",
1494
- "vue/prefer-define-options": "error",
1495
- "vue/html-comment-content-newline": ["error", {
1496
- singleline: "ignore",
1497
- multiline: "always"
1498
- }],
1499
- "vue/html-comment-indent": ["error", "tab"],
1500
- "vue/html-self-closing": ["error", {
1501
- html: {
1502
- void: "always",
1503
- normal: "always",
1504
- component: "always"
1505
- },
1506
- svg: "always",
1507
- math: "always"
1508
- }],
1509
- "vue/no-useless-concat": "error",
1510
- "so1ve/vue-root-element-sort-attributes": "error",
1511
- "vue/no-multiple-template-root": "off",
1512
- "vue/multiline-html-element-content-newline": "off",
1513
- "vue/singleline-html-element-content-newline": "off",
1514
- "vue/array-bracket-spacing": "off",
1515
- "vue/arrow-spacing": "off",
1516
- "vue/block-spacing": "off",
1517
- "vue/brace-style": "off",
1518
- "vue/comma-dangle": "off",
1519
- "vue/comma-spacing": "off",
1520
- "vue/comma-style": "off",
1521
- "vue/operator-linebreak": "off",
1522
- "vue/template-curly-spacing": "off",
1523
- "vue/key-spacing": "off",
1524
- "vue/keyword-spacing": "off",
1525
- "vue/html-quotes": "off",
1526
- "vue/html-indent": "off",
1527
- "vue/no-multi-spaces": "off",
1528
- "vue/max-attributes-per-line": "off",
1529
- "vue/html-closing-bracket-spacing": "off",
1530
- "vue/mustache-interpolation-spacing": "off",
1531
1545
  ...overrides
1532
1546
  }
1533
1547
  }];
@@ -1547,8 +1561,8 @@ async function yaml({ overrides } = {}) {
1547
1561
  rules: {
1548
1562
  ...renameRules(pluginYaml.configs.prettier.rules, { yml: "yaml" }),
1549
1563
  ...renameRules(pluginYaml.configs.recommended.rules, { yml: "yaml" }),
1550
- "yaml/no-empty-document": "off",
1551
1564
  "style/spaced-comment": "off",
1565
+ "yaml/no-empty-document": "off",
1552
1566
  ...overrides
1553
1567
  }
1554
1568
  }];
@@ -1589,7 +1603,7 @@ function so1ve(options = {}, ...userConfigs) {
1589
1603
  if (enableGitignore) if (typeof enableGitignore === "boolean") {
1590
1604
  if (fs.existsSync(".gitignore")) configs.push(interopDefault(import("eslint-config-flat-gitignore")).then((r) => [r()]));
1591
1605
  } else configs.push(interopDefault(import("eslint-config-flat-gitignore")).then((r) => [r(enableGitignore)]));
1592
- configs.push(ignores(), javascript({ overrides: getOverrides(options, "javascript") }), comments(), node(), onlyError(), promise(), sortImports(), imports(), unicorn());
1606
+ configs.push(ignores(), javascript({ overrides: getOverrides(options, "javascript") }), comments(), node(), onlyError(), promise(), sortImports(), imports(), unicorn(), command());
1593
1607
  if (enableCatalogs) configs.push(pnpm());
1594
1608
  if (enableVue) componentExts.push("vue");
1595
1609
  if (options.html ?? true) configs.push(html());
@@ -1633,4 +1647,4 @@ function getOverrides(options, key) {
1633
1647
  }
1634
1648
 
1635
1649
  //#endregion
1636
- export { GLOB_ALL_SRC, GLOB_ASTRO, GLOB_ASTRO_TS, GLOB_CSS, GLOB_DTS, GLOB_ESLINTRC, GLOB_EXCLUDE, GLOB_HTML, GLOB_JS, GLOB_JSON, GLOB_JSON5, GLOB_JSONC, GLOB_JSX, GLOB_LESS, GLOB_MARKDOWN, GLOB_MARKDOWN_CODE, GLOB_PACKAGEJSON, GLOB_SCSS, GLOB_SRC, GLOB_SRC_EXT, GLOB_STYLE, GLOB_TESTS, GLOB_TOML, GLOB_TS, GLOB_TSCONFIG, GLOB_TSX, GLOB_VUE, GLOB_YAML, astro, comments, defaultPluginRenaming, formatting, getOverrides, html, ignores, imports, interopDefault, javascript, jsonc, mdx, node, onlyError, perfectionist, pnpm, promise, renameRules, resolveSubOptions, so1ve, solid, sortImports, test, toml, typescript, unicorn, vue, yaml };
1650
+ export { GLOB_ALL_SRC, GLOB_ASTRO, GLOB_ASTRO_TS, GLOB_CSS, GLOB_DTS, GLOB_ESLINTRC, GLOB_EXCLUDE, GLOB_HTML, GLOB_JS, GLOB_JSON, GLOB_JSON5, GLOB_JSONC, GLOB_JSX, GLOB_LESS, GLOB_MARKDOWN, GLOB_MARKDOWN_CODE, GLOB_PACKAGEJSON, GLOB_SCSS, GLOB_SRC, GLOB_SRC_EXT, GLOB_STYLE, GLOB_TESTS, GLOB_TOML, GLOB_TS, GLOB_TSCONFIG, GLOB_TSX, GLOB_VUE, GLOB_YAML, astro, command, comments, defaultPluginRenaming, formatting, getOverrides, html, ignores, imports, interopDefault, javascript, jsonc, mdx, node, onlyError, perfectionist, pnpm, promise, renameRules, resolveSubOptions, so1ve, solid, sortImports, test, toml, typescript, unicorn, vue, yaml };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@so1ve/eslint-config",
3
- "version": "3.14.0",
3
+ "version": "3.16.0",
4
4
  "author": "Ray <i@mk1.io> (https://github.com/so1ve/)",
5
5
  "type": "module",
6
6
  "description": "Ray's eslint config.",
@@ -48,7 +48,9 @@
48
48
  "eslint-plugin-array-func": "^5.1.0",
49
49
  "eslint-plugin-astro": "^1.5.0",
50
50
  "eslint-plugin-case-police": "^2.1.1",
51
+ "eslint-plugin-command": "^3.3.1",
51
52
  "eslint-plugin-html": "^8.1.3",
53
+ "eslint-plugin-import-lite": "^0.3.0",
52
54
  "eslint-plugin-import-x": "^4.16.1",
53
55
  "eslint-plugin-jest-formatting": "^3.1.0",
54
56
  "eslint-plugin-jsonc": "^2.21.0",
@@ -75,8 +77,8 @@
75
77
  "typescript-eslint": "^8.47.0",
76
78
  "vue-eslint-parser": "^10.2.0",
77
79
  "yaml-eslint-parser": "^1.3.0",
78
- "@so1ve/eslint-plugin-sort-imports": "3.14.0",
79
- "@so1ve/eslint-plugin": "3.14.0"
80
+ "@so1ve/eslint-plugin": "3.16.0",
81
+ "@so1ve/eslint-plugin-sort-imports": "3.16.0"
80
82
  },
81
83
  "peerDependencies": {
82
84
  "eslint": "^9.39.1",