@ntnyq/eslint-config 3.0.0-beta.1 → 3.0.0-beta.3

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 CHANGED
@@ -44,6 +44,8 @@ __export(src_exports, {
44
44
  GLOB_LESS: () => GLOB_LESS,
45
45
  GLOB_LOCKFILE: () => GLOB_LOCKFILE,
46
46
  GLOB_MARKDOWN: () => GLOB_MARKDOWN,
47
+ GLOB_MARKDOWN_CODE: () => GLOB_MARKDOWN_CODE,
48
+ GLOB_MARKDOWN_NESTED: () => GLOB_MARKDOWN_NESTED,
47
49
  GLOB_NODE_MODULES: () => GLOB_NODE_MODULES,
48
50
  GLOB_SCSS: () => GLOB_SCSS,
49
51
  GLOB_SRC: () => GLOB_SRC,
@@ -58,7 +60,6 @@ __export(src_exports, {
58
60
  command: () => command,
59
61
  comments: () => comments,
60
62
  getOverrides: () => getOverrides,
61
- getVueVersion: () => getVueVersion,
62
63
  hasTypeScript: () => hasTypeScript,
63
64
  hasUnoCSS: () => hasUnoCSS,
64
65
  hasVitest: () => hasVitest,
@@ -98,6 +99,7 @@ __export(src_exports, {
98
99
  prettier: () => prettier,
99
100
  regexp: () => regexp,
100
101
  resolveSubOptions: () => resolveSubOptions,
102
+ sortI18nLocale: () => sortI18nLocale,
101
103
  sortPackageJson: () => sortPackageJson,
102
104
  sortTsConfig: () => sortTsConfig,
103
105
  toArray: () => toArray,
@@ -159,13 +161,13 @@ function getOverrides(options, key) {
159
161
 
160
162
  // src/globs.ts
161
163
  var GLOB_SRC_EXT = "?([cm])[jt]s?(x)";
162
- var GLOB_SRC = "**/*.?([cm])[jt]s?(x)";
164
+ var GLOB_SRC = `**/*.${GLOB_SRC_EXT}`;
163
165
  var GLOB_JS = "**/*.?([cm])js";
164
166
  var GLOB_JSX = "**/*.?([cm])jsx";
165
167
  var GLOB_TS = "**/*.?([cm])ts";
166
168
  var GLOB_TSX = "**/*.?([cm])tsx";
167
169
  var GLOB_DTS = "**/*.d.?([cm])ts";
168
- var GLOB_TEST = "**/*.{test,spec}.?([cm])[jt]s?(x)";
170
+ var GLOB_TEST = `**/*.{test,spec,bench,benchmark}.${GLOB_SRC_EXT}`;
169
171
  var GLOB_STYLE = "**/*.{c,le,sc}ss";
170
172
  var GLOB_CSS = "**/*.css";
171
173
  var GLOB_LESS = "**/*.less";
@@ -174,20 +176,22 @@ var GLOB_JSON = "**/*.json";
174
176
  var GLOB_JSON5 = "**/*.json5";
175
177
  var GLOB_JSONC = "**/*.jsonc";
176
178
  var GLOB_VUE = "**/*.vue";
177
- var GLOB_MARKDOWN = "**/*.md";
178
179
  var GLOB_YAML = "**/*.y?(a)ml";
179
180
  var GLOB_TOML = "**/*.toml";
180
181
  var GLOB_HTML = "**/*.htm?(l)";
182
+ var GLOB_MARKDOWN = "**/*.md";
183
+ var GLOB_MARKDOWN_CODE = `${GLOB_MARKDOWN}/${GLOB_SRC}`;
184
+ var GLOB_MARKDOWN_NESTED = `${GLOB_MARKDOWN}/*.md`;
181
185
  var GLOB_ALL_SRC = [
182
186
  GLOB_SRC,
183
187
  GLOB_STYLE,
184
188
  GLOB_JSON,
185
189
  GLOB_JSON5,
186
- GLOB_MARKDOWN,
187
190
  GLOB_VUE,
188
191
  GLOB_YAML,
189
192
  GLOB_TOML,
190
- GLOB_HTML
193
+ GLOB_HTML,
194
+ GLOB_MARKDOWN
191
195
  ];
192
196
  var GLOB_NODE_MODULES = "**/node_modules/**";
193
197
  var GLOB_DIST = "**/dist/**";
@@ -500,7 +504,7 @@ var prettier = (options = {}) => [
500
504
  "vue/space-unary-ops": "off",
501
505
  "vue/template-curly-spacing": "off",
502
506
  ...import_eslint_plugin_prettier.default.configs.recommended.rules,
503
- "prettier/prettier": "warn",
507
+ "prettier/prettier": options.level || "warn",
504
508
  // Overrides built-in rules
505
509
  ...options.overrides
506
510
  }
@@ -539,320 +543,337 @@ var comments = (options = {}) => [
539
543
  // src/configs/javascript.ts
540
544
  var import_globals = __toESM(require("globals"), 1);
541
545
  var import_js = __toESM(require("@eslint/js"), 1);
542
- var javascript = (option = {}) => [
543
- {
544
- name: "ntnyq/js/recommended",
545
- ...import_js.default.configs.recommended
546
- },
546
+ var javascript = (options = {}) => {
547
+ const strictRules = {
548
+ complexity: ["error", { max: 30 }],
549
+ "max-params": ["error", { max: 5 }],
550
+ "max-depth": ["error", { max: 5 }],
551
+ "max-nested-callbacks": ["error", { max: 10 }],
552
+ "max-lines": [
553
+ "error",
554
+ {
555
+ max: 1e3,
556
+ skipComments: true,
557
+ skipBlankLines: true
558
+ }
559
+ ],
560
+ "max-lines-per-function": [
561
+ "error",
562
+ {
563
+ max: 200,
564
+ skipComments: true,
565
+ skipBlankLines: true
566
+ }
567
+ ]
568
+ };
569
+ return [
570
+ {
571
+ ...import_js.default.configs.recommended,
572
+ name: "ntnyq/js/recommended"
573
+ },
574
+ {
575
+ name: "ntnyq/js/core",
576
+ languageOptions: {
577
+ globals: {
578
+ ...import_globals.default.browser,
579
+ ...import_globals.default.es2021,
580
+ ...import_globals.default.node
581
+ },
582
+ sourceType: "module"
583
+ },
584
+ rules: {
585
+ // standard v17.0.0
586
+ "accessor-pairs": ["error", { setWithoutGet: true, enforceForClassMembers: true }],
587
+ camelcase: [
588
+ "error",
589
+ {
590
+ allow: ["^UNSAFE_"],
591
+ properties: "never",
592
+ ignoreGlobals: true
593
+ }
594
+ ],
595
+ "constructor-super": "error",
596
+ curly: ["error", "multi-line"],
597
+ "default-case-last": "error",
598
+ "dot-notation": ["error", { allowKeywords: true }],
599
+ "new-cap": ["error", { newIsCap: true, capIsNew: false, properties: true }],
600
+ "no-array-constructor": "error",
601
+ "no-async-promise-executor": "error",
602
+ "no-caller": "error",
603
+ "no-class-assign": "error",
604
+ "no-compare-neg-zero": "error",
605
+ "no-cond-assign": "error",
606
+ "no-const-assign": "error",
607
+ "no-constant-condition": ["error", { checkLoops: false }],
608
+ "no-control-regex": "error",
609
+ "no-debugger": "error",
610
+ "no-delete-var": "error",
611
+ "no-dupe-args": "error",
612
+ "no-dupe-class-members": "error",
613
+ "no-dupe-keys": "error",
614
+ "no-duplicate-case": "error",
615
+ "no-useless-backreference": "error",
616
+ "no-empty": ["error", { allowEmptyCatch: true }],
617
+ "no-empty-character-class": "error",
618
+ "no-empty-pattern": "error",
619
+ "no-eval": "error",
620
+ "no-ex-assign": "error",
621
+ "no-extend-native": "error",
622
+ "no-extra-bind": "error",
623
+ "no-extra-boolean-cast": "error",
624
+ "no-fallthrough": "error",
625
+ "no-func-assign": "error",
626
+ "no-global-assign": "error",
627
+ "no-implied-eval": "error",
628
+ "no-import-assign": "error",
629
+ "no-invalid-regexp": "error",
630
+ "no-irregular-whitespace": "error",
631
+ "no-iterator": "error",
632
+ "no-labels": ["error", { allowLoop: false, allowSwitch: false }],
633
+ "no-lone-blocks": "error",
634
+ "no-loss-of-precision": "error",
635
+ "no-misleading-character-class": "error",
636
+ "no-prototype-builtins": "error",
637
+ "no-useless-catch": "error",
638
+ "no-new": "error",
639
+ "no-new-func": "error",
640
+ "no-new-wrappers": "error",
641
+ "no-obj-calls": "error",
642
+ "no-octal": "error",
643
+ "no-octal-escape": "error",
644
+ "no-proto": "error",
645
+ "no-redeclare": ["error", { builtinGlobals: false }],
646
+ "no-regex-spaces": "error",
647
+ "no-self-assign": ["error", { props: true }],
648
+ "no-self-compare": "error",
649
+ "no-sequences": "error",
650
+ "no-shadow-restricted-names": "error",
651
+ "no-sparse-arrays": "error",
652
+ "no-template-curly-in-string": "error",
653
+ "no-this-before-super": "error",
654
+ "no-throw-literal": "error",
655
+ "no-undef": "error",
656
+ "no-undef-init": "error",
657
+ "no-unexpected-multiline": "error",
658
+ "no-unmodified-loop-condition": "error",
659
+ "no-unneeded-ternary": ["error", { defaultAssignment: false }],
660
+ "no-unreachable": "error",
661
+ "no-unreachable-loop": "error",
662
+ "no-unsafe-finally": "error",
663
+ "no-unsafe-negation": "error",
664
+ "no-unused-expressions": [
665
+ "error",
666
+ {
667
+ allowShortCircuit: true,
668
+ allowTernary: true,
669
+ allowTaggedTemplates: true
670
+ }
671
+ ],
672
+ "no-unused-vars": [
673
+ "error",
674
+ {
675
+ args: "none",
676
+ caughtErrors: "none",
677
+ ignoreRestSiblings: true,
678
+ vars: "all"
679
+ }
680
+ ],
681
+ "no-useless-call": "error",
682
+ "no-useless-computed-key": "error",
683
+ "no-useless-constructor": "error",
684
+ "no-useless-rename": "error",
685
+ "no-useless-return": "error",
686
+ "prefer-promise-reject-errors": "error",
687
+ "prefer-regex-literals": ["error", { disallowRedundantWrapping: true }],
688
+ "symbol-description": "error",
689
+ "unicode-bom": ["error", "never"],
690
+ "use-isnan": [
691
+ "error",
692
+ {
693
+ enforceForSwitchCase: true,
694
+ enforceForIndexOf: true
695
+ }
696
+ ],
697
+ "valid-typeof": ["error", { requireStringLiterals: true }],
698
+ yoda: ["error", "never"],
699
+ // es6+
700
+ "no-var": "error",
701
+ "prefer-rest-params": "error",
702
+ "prefer-spread": "error",
703
+ "prefer-template": "error",
704
+ "no-empty-static-block": "error",
705
+ "no-new-native-nonconstructor": "error",
706
+ "prefer-const": [
707
+ "error",
708
+ {
709
+ destructuring: "all",
710
+ ignoreReadBeforeAssign: true
711
+ }
712
+ ],
713
+ "prefer-arrow-callback": [
714
+ "error",
715
+ {
716
+ allowNamedFunctions: false,
717
+ allowUnboundThis: true
718
+ }
719
+ ],
720
+ "object-shorthand": [
721
+ "error",
722
+ "always",
723
+ {
724
+ ignoreConstructors: false,
725
+ avoidQuotes: true
726
+ }
727
+ ],
728
+ // best-practice
729
+ eqeqeq: ["error", "smart"],
730
+ "array-callback-return": "error",
731
+ "block-scoped-var": "error",
732
+ "consistent-return": "off",
733
+ "no-alert": "error",
734
+ "no-case-declarations": "error",
735
+ "no-multi-str": "error",
736
+ "no-with": "error",
737
+ "no-void": "error",
738
+ "no-useless-escape": "off",
739
+ "vars-on-top": "error",
740
+ "require-await": "off",
741
+ "no-return-assign": "off",
742
+ "one-var": ["error", "never"],
743
+ "no-use-before-define": [
744
+ "error",
745
+ {
746
+ functions: false,
747
+ classes: false,
748
+ variables: true
749
+ }
750
+ ],
751
+ "sort-imports": [
752
+ "error",
753
+ {
754
+ ignoreCase: false,
755
+ ignoreDeclarationSort: true,
756
+ ignoreMemberSort: false,
757
+ memberSyntaxSortOrder: ["none", "all", "multiple", "single"],
758
+ allowSeparatedGroups: false
759
+ }
760
+ ],
761
+ // Strict rules
762
+ ...options.strict ? strictRules : {},
763
+ // Overrides built-in rules
764
+ ...options.overrides
765
+ }
766
+ },
767
+ {
768
+ name: "ntnyq/js/scripts",
769
+ files: ["**/scripts/*", "**/cli.*"],
770
+ rules: {
771
+ "no-console": "off"
772
+ }
773
+ },
774
+ {
775
+ name: "ntnyq/js/test",
776
+ files: ["**/*.{test,spec}.js?(x)"],
777
+ rules: {
778
+ "no-unused-expressions": "off",
779
+ "max-lines-per-function": "off"
780
+ }
781
+ }
782
+ ];
783
+ };
784
+ var jsx = () => [
547
785
  {
548
- name: "ntnyq/js/core",
786
+ name: "ntnyq/jsx",
787
+ files: ["**/*.jsx"],
549
788
  languageOptions: {
550
- globals: {
551
- ...import_globals.default.browser,
552
- ...import_globals.default.es2021,
553
- ...import_globals.default.node
554
- },
555
- sourceType: "module"
789
+ parserOptions: {
790
+ ecmaFeatures: {
791
+ jsx: true
792
+ }
793
+ }
794
+ }
795
+ }
796
+ ];
797
+
798
+ // src/configs/typescript.ts
799
+ var import_node_process2 = __toESM(require("process"), 1);
800
+ var typescriptCore = (options = {}) => {
801
+ const isTypeAware = !!options.tsconfigPath;
802
+ const configs = import_typescript_eslint.default.config({
803
+ name: "ntnyq/ts/core",
804
+ extends: [...import_typescript_eslint.default.configs.recommended],
805
+ files: [GLOB_TS, GLOB_TSX],
806
+ languageOptions: {
807
+ parser: import_typescript_eslint.default.parser,
808
+ parserOptions: {
809
+ sourceType: "module",
810
+ ...isTypeAware ? {
811
+ projectService: {
812
+ defaultProject: options.tsconfigPath
813
+ },
814
+ tsconfigRootDir: import_node_process2.default.cwd()
815
+ } : {}
816
+ }
556
817
  },
557
818
  rules: {
558
- // standard v17.0.0
559
- "accessor-pairs": ["error", { setWithoutGet: true, enforceForClassMembers: true }],
560
- camelcase: [
819
+ "@typescript-eslint/no-unused-vars": [
561
820
  "error",
562
821
  {
563
- allow: ["^UNSAFE_"],
564
- properties: "never",
565
- ignoreGlobals: true
566
- }
567
- ],
568
- "constructor-super": "error",
569
- curly: ["error", "multi-line"],
570
- "default-case-last": "error",
571
- "dot-notation": ["error", { allowKeywords: true }],
572
- "new-cap": ["error", { newIsCap: true, capIsNew: false, properties: true }],
573
- "no-array-constructor": "error",
574
- "no-async-promise-executor": "error",
575
- "no-caller": "error",
576
- "no-class-assign": "error",
577
- "no-compare-neg-zero": "error",
578
- "no-cond-assign": "error",
579
- "no-const-assign": "error",
580
- "no-constant-condition": ["error", { checkLoops: false }],
581
- "no-control-regex": "error",
582
- "no-debugger": "error",
583
- "no-delete-var": "error",
584
- "no-dupe-args": "error",
585
- "no-dupe-class-members": "error",
586
- "no-dupe-keys": "error",
587
- "no-duplicate-case": "error",
588
- "no-useless-backreference": "error",
589
- "no-empty": ["error", { allowEmptyCatch: true }],
590
- "no-empty-character-class": "error",
591
- "no-empty-pattern": "error",
592
- "no-eval": "error",
593
- "no-ex-assign": "error",
594
- "no-extend-native": "error",
595
- "no-extra-bind": "error",
596
- "no-extra-boolean-cast": "error",
597
- "no-fallthrough": "error",
598
- "no-func-assign": "error",
599
- "no-global-assign": "error",
600
- "no-implied-eval": "error",
601
- "no-import-assign": "error",
602
- "no-invalid-regexp": "error",
603
- "no-irregular-whitespace": "error",
604
- "no-iterator": "error",
605
- "no-labels": ["error", { allowLoop: false, allowSwitch: false }],
606
- "no-lone-blocks": "error",
607
- "no-loss-of-precision": "error",
608
- "no-misleading-character-class": "error",
609
- "no-prototype-builtins": "error",
610
- "no-useless-catch": "error",
611
- "no-new": "error",
612
- "no-new-func": "error",
613
- "no-new-wrappers": "error",
614
- "no-obj-calls": "error",
615
- "no-octal": "error",
616
- "no-octal-escape": "error",
617
- "no-proto": "error",
618
- "no-redeclare": ["error", { builtinGlobals: false }],
619
- "no-regex-spaces": "error",
620
- "no-self-assign": ["error", { props: true }],
621
- "no-self-compare": "error",
622
- "no-sequences": "error",
623
- "no-shadow-restricted-names": "error",
624
- "no-sparse-arrays": "error",
625
- "no-template-curly-in-string": "error",
626
- "no-this-before-super": "error",
627
- "no-throw-literal": "error",
628
- "no-undef": "error",
629
- "no-undef-init": "error",
630
- "no-unexpected-multiline": "error",
631
- "no-unmodified-loop-condition": "error",
632
- "no-unneeded-ternary": ["error", { defaultAssignment: false }],
633
- "no-unreachable": "error",
634
- "no-unreachable-loop": "error",
635
- "no-unsafe-finally": "error",
636
- "no-unsafe-negation": "error",
637
- "no-unused-expressions": [
638
- "error",
639
- {
640
- allowShortCircuit: true,
641
- allowTernary: true,
642
- allowTaggedTemplates: true
643
- }
644
- ],
645
- "no-unused-vars": [
646
- "error",
647
- {
648
- args: "none",
649
- caughtErrors: "none",
650
- ignoreRestSiblings: true,
651
- vars: "all"
652
- }
653
- ],
654
- "no-useless-call": "error",
655
- "no-useless-computed-key": "error",
656
- "no-useless-constructor": "error",
657
- "no-useless-rename": "error",
658
- "no-useless-return": "error",
659
- "prefer-promise-reject-errors": "error",
660
- "prefer-regex-literals": ["error", { disallowRedundantWrapping: true }],
661
- "symbol-description": "error",
662
- "unicode-bom": ["error", "never"],
663
- "use-isnan": [
664
- "error",
665
- {
666
- enforceForSwitchCase: true,
667
- enforceForIndexOf: true
668
- }
669
- ],
670
- "valid-typeof": ["error", { requireStringLiterals: true }],
671
- yoda: ["error", "never"],
672
- // es6+
673
- "no-var": "error",
674
- "prefer-rest-params": "error",
675
- "prefer-spread": "error",
676
- "prefer-template": "error",
677
- "no-empty-static-block": "error",
678
- "no-new-native-nonconstructor": "error",
679
- "prefer-const": [
680
- "error",
681
- {
682
- destructuring: "all",
683
- ignoreReadBeforeAssign: true
684
- }
685
- ],
686
- "prefer-arrow-callback": [
687
- "error",
688
- {
689
- allowNamedFunctions: false,
690
- allowUnboundThis: true
691
- }
692
- ],
693
- "object-shorthand": [
694
- "error",
695
- "always",
696
- {
697
- ignoreConstructors: false,
698
- avoidQuotes: true
699
- }
700
- ],
701
- // best-practice
702
- eqeqeq: ["error", "smart"],
703
- complexity: ["error", { max: 30 }],
704
- "array-callback-return": "error",
705
- "block-scoped-var": "error",
706
- "consistent-return": "off",
707
- "no-alert": "error",
708
- "no-case-declarations": "error",
709
- "no-multi-str": "error",
710
- "no-with": "error",
711
- "no-void": "error",
712
- "no-useless-escape": "off",
713
- "vars-on-top": "error",
714
- "require-await": "off",
715
- "no-return-assign": "off",
716
- "one-var": ["error", "never"],
717
- "max-params": ["error", { max: 5 }],
718
- "max-depth": ["error", { max: 5 }],
719
- "max-nested-callbacks": ["error", { max: 10 }],
720
- "max-lines": [
721
- "error",
722
- {
723
- max: 1e3,
724
- skipComments: true,
725
- skipBlankLines: true
822
+ // Args after the last used will be reported
823
+ args: "after-used",
824
+ argsIgnorePattern: "^_",
825
+ caughtErrors: "all",
826
+ caughtErrorsIgnorePattern: "^_",
827
+ destructuredArrayIgnorePattern: "^_",
828
+ varsIgnorePattern: "^_",
829
+ ignoreRestSiblings: true
726
830
  }
727
831
  ],
728
- "max-lines-per-function": [
832
+ "@typescript-eslint/no-redeclare": "error",
833
+ "@typescript-eslint/consistent-type-imports": [
729
834
  "error",
730
835
  {
731
- max: 200,
732
- skipComments: true,
733
- skipBlankLines: true
836
+ prefer: "type-imports",
837
+ fixStyle: "separate-type-imports",
838
+ disallowTypeAnnotations: false
734
839
  }
735
840
  ],
736
- "no-use-before-define": [
841
+ "@typescript-eslint/no-empty-object-type": [
737
842
  "error",
738
843
  {
739
- functions: false,
740
- classes: false,
741
- variables: true
844
+ allowInterfaces: "always",
845
+ allowObjectTypes: "always"
742
846
  }
743
847
  ],
744
- "sort-imports": [
848
+ "@typescript-eslint/consistent-type-assertions": [
745
849
  "error",
746
850
  {
747
- ignoreCase: false,
748
- ignoreDeclarationSort: true,
749
- ignoreMemberSort: false,
750
- memberSyntaxSortOrder: ["none", "all", "multiple", "single"],
751
- allowSeparatedGroups: false
851
+ assertionStyle: "as",
852
+ objectLiteralTypeAssertions: "allow-as-parameter"
752
853
  }
753
854
  ],
754
- // Overrides built-in rules
755
- ...option.overrides
756
- }
757
- },
758
- {
759
- name: "ntnyq/js/script",
760
- files: ["**/scripts/*", "**/cli.*"],
761
- rules: {
762
- "no-console": "off"
763
- }
764
- },
765
- {
766
- name: "ntnyq/js/test",
767
- files: ["**/*.{test,spec}.js?(x)"],
768
- rules: {
769
- "no-unused-expressions": "off",
770
- "max-lines-per-function": "off"
771
- }
772
- }
773
- ];
774
- var jsx = () => [
775
- {
776
- name: "ntnyq/jsx",
777
- files: ["**/*.jsx"],
778
- languageOptions: {
779
- parserOptions: {
780
- ecmaFeatures: {
781
- jsx: true
782
- }
783
- }
784
- }
785
- }
786
- ];
787
-
788
- // src/configs/typescript.ts
789
- var typescriptCore = (options = {}) => import_typescript_eslint.default.config({
790
- name: "ntnyq/ts/core",
791
- extends: [...import_typescript_eslint.default.configs.recommended],
792
- files: [GLOB_TS, GLOB_TSX],
793
- languageOptions: {
794
- parser: import_typescript_eslint.default.parser,
795
- parserOptions: {
796
- sourceType: "module"
797
- }
798
- },
799
- rules: {
800
- "@typescript-eslint/no-unused-vars": [
801
- "error",
802
- {
803
- // Args after the last used will be reported
804
- args: "after-used",
805
- argsIgnorePattern: "^_",
806
- caughtErrors: "all",
807
- caughtErrorsIgnorePattern: "^_",
808
- destructuredArrayIgnorePattern: "^_",
809
- varsIgnorePattern: "^_",
810
- ignoreRestSiblings: true
811
- }
812
- ],
813
- "@typescript-eslint/no-redeclare": "error",
814
- "@typescript-eslint/consistent-type-imports": [
815
- "error",
816
- {
817
- prefer: "type-imports",
818
- fixStyle: "separate-type-imports",
819
- disallowTypeAnnotations: false
820
- }
821
- ],
822
- "@typescript-eslint/no-empty-object-type": [
823
- "error",
824
- {
825
- allowInterfaces: "always",
826
- allowObjectTypes: "always"
827
- }
828
- ],
829
- "@typescript-eslint/consistent-type-assertions": [
830
- "error",
831
- {
832
- assertionStyle: "as",
833
- objectLiteralTypeAssertions: "allow-as-parameter"
834
- }
835
- ],
836
- "@typescript-eslint/prefer-as-const": "warn",
837
- "@typescript-eslint/ban-types": "off",
838
- "@typescript-eslint/camelcase": "off",
839
- "@typescript-eslint/no-namespace": "off",
840
- "@typescript-eslint/ban-ts-ignore": "off",
841
- "@typescript-eslint/ban-ts-comment": "off",
842
- "@typescript-eslint/no-explicit-any": "off",
843
- "@typescript-eslint/no-empty-function": "off",
844
- "@typescript-eslint/naming-convention": "off",
845
- "@typescript-eslint/no-non-null-assertion": "off",
846
- "@typescript-eslint/triple-slash-reference": "off",
847
- "@typescript-eslint/no-parameter-properties": "off",
848
- "@typescript-eslint/explicit-member-accessibility": "off",
849
- "@typescript-eslint/explicit-function-return-type": "off",
850
- "@typescript-eslint/explicit-module-boundary-types": "off",
851
- "@typescript-eslint/consistent-indexed-object-style": "off"
852
- },
853
- // Overrides built-in rules
854
- ...options.overrides
855
- });
855
+ "@typescript-eslint/prefer-as-const": "warn",
856
+ "@typescript-eslint/ban-types": "off",
857
+ "@typescript-eslint/camelcase": "off",
858
+ "@typescript-eslint/no-namespace": "off",
859
+ "@typescript-eslint/ban-ts-ignore": "off",
860
+ "@typescript-eslint/ban-ts-comment": "off",
861
+ "@typescript-eslint/no-explicit-any": "off",
862
+ "@typescript-eslint/no-empty-function": "off",
863
+ "@typescript-eslint/naming-convention": "off",
864
+ "@typescript-eslint/no-non-null-assertion": "off",
865
+ "@typescript-eslint/triple-slash-reference": "off",
866
+ "@typescript-eslint/no-parameter-properties": "off",
867
+ "@typescript-eslint/explicit-member-accessibility": "off",
868
+ "@typescript-eslint/explicit-function-return-type": "off",
869
+ "@typescript-eslint/explicit-module-boundary-types": "off",
870
+ "@typescript-eslint/consistent-indexed-object-style": "off"
871
+ },
872
+ // Overrides built-in rules
873
+ ...options.overrides
874
+ });
875
+ return configs;
876
+ };
856
877
  var typescript = (options = {}) => [
857
878
  ...typescriptCore(options),
858
879
  {
@@ -986,7 +1007,7 @@ var command = () => [
986
1007
  // src/configs/vitest.ts
987
1008
  var vitest = (options = {}) => [
988
1009
  {
989
- name: "ntnyq/test",
1010
+ name: "ntnyq/vitest",
990
1011
  plugins: {
991
1012
  vitest: import_eslint_plugin2.default
992
1013
  },
@@ -1000,16 +1021,6 @@ var vitest = (options = {}) => [
1000
1021
  ];
1001
1022
 
1002
1023
  // src/configs/vue.ts
1003
- var import_node_process2 = __toESM(require("process"), 1);
1004
- var import_local_pkg2 = require("local-pkg");
1005
- function getVueVersion() {
1006
- const pkg = (0, import_local_pkg2.getPackageInfoSync)("vue", { paths: [import_node_process2.default.cwd()] });
1007
- if (pkg && typeof pkg.version === "string" && !Number.isNaN(+pkg.version[0])) {
1008
- return +pkg.version[0];
1009
- }
1010
- return 3;
1011
- }
1012
- var isVue3 = getVueVersion() === 3;
1013
1024
  var vue2Rules = {
1014
1025
  ...import_eslint_plugin_vue.default.configs.base.rules,
1015
1026
  ...import_eslint_plugin_vue.default.configs.essential.rules,
@@ -1022,250 +1033,253 @@ var vue3Rules = {
1022
1033
  ...import_eslint_plugin_vue.default.configs["vue3-strongly-recommended"].rules,
1023
1034
  ...import_eslint_plugin_vue.default.configs["vue3-recommended"].rules
1024
1035
  };
1025
- var vue = (options = {}) => [
1026
- ...import_typescript_eslint.default.config({
1027
- name: "ntnyq/vue/ts",
1028
- files: [GLOB_VUE],
1029
- extends: typescriptCore()
1030
- }),
1031
- {
1032
- name: "ntnyq/vue/core",
1033
- files: [GLOB_VUE],
1034
- plugins: {
1035
- vue: import_eslint_plugin_vue.default,
1036
- "@typescript-eslint": import_typescript_eslint.default.plugin
1037
- },
1038
- languageOptions: {
1039
- parser: parserVue,
1040
- parserOptions: {
1041
- parser: "@typescript-eslint/parser",
1042
- sourceType: "module",
1043
- extraFileExtensions: [".vue"],
1044
- ecmaFeatures: {
1045
- jsx: true
1036
+ var vue = (options = {}) => {
1037
+ const isVue3 = options.vueVersion !== 2;
1038
+ return [
1039
+ ...import_typescript_eslint.default.config({
1040
+ name: "ntnyq/vue/ts",
1041
+ files: [GLOB_VUE],
1042
+ extends: typescriptCore()
1043
+ }),
1044
+ {
1045
+ name: "ntnyq/vue/core",
1046
+ files: [GLOB_VUE],
1047
+ plugins: {
1048
+ vue: import_eslint_plugin_vue.default,
1049
+ "@typescript-eslint": import_typescript_eslint.default.plugin
1050
+ },
1051
+ languageOptions: {
1052
+ parser: parserVue,
1053
+ parserOptions: {
1054
+ parser: "@typescript-eslint/parser",
1055
+ sourceType: "module",
1056
+ extraFileExtensions: [".vue"],
1057
+ ecmaFeatures: {
1058
+ jsx: true
1059
+ }
1046
1060
  }
1061
+ },
1062
+ processor: import_eslint_plugin_vue.default.processors[".vue"],
1063
+ rules: {
1064
+ ...isVue3 ? vue3Rules : vue2Rules,
1065
+ // OFF
1066
+ "vue/no-v-html": "off",
1067
+ "vue/require-prop-types": "off",
1068
+ "vue/require-default-prop": "off",
1069
+ "vue/multi-word-component-names": "off",
1070
+ "vue/no-setup-props-reactivity-loss": "off",
1071
+ "vue/html-self-closing": [
1072
+ "error",
1073
+ {
1074
+ html: {
1075
+ void: "always",
1076
+ normal: "always",
1077
+ component: "always"
1078
+ },
1079
+ svg: "always",
1080
+ math: "always"
1081
+ }
1082
+ ],
1083
+ "vue/block-tag-newline": [
1084
+ "error",
1085
+ {
1086
+ singleline: "always",
1087
+ multiline: "always"
1088
+ }
1089
+ ],
1090
+ "vue/component-name-in-template-casing": [
1091
+ "error",
1092
+ "PascalCase",
1093
+ {
1094
+ // Force auto-import components to be PascalCase
1095
+ registeredComponentsOnly: false,
1096
+ ignores: ["slot", "component"]
1097
+ }
1098
+ ],
1099
+ "vue/component-options-name-casing": ["error", "PascalCase"],
1100
+ "vue/custom-event-name-casing": ["error", "camelCase"],
1101
+ "vue/define-macros-order": [
1102
+ "error",
1103
+ {
1104
+ order: ["defineProps", "defineEmits", "defineOptions", "defineSlots"]
1105
+ }
1106
+ ],
1107
+ "vue/html-comment-content-spacing": [
1108
+ "error",
1109
+ "always",
1110
+ {
1111
+ exceptions: ["-"]
1112
+ }
1113
+ ],
1114
+ "vue/array-bracket-spacing": ["error", "never"],
1115
+ "vue/arrow-spacing": ["error", { before: true, after: true }],
1116
+ "vue/block-spacing": ["error", "always"],
1117
+ "vue/brace-style": ["error", "stroustrup", { allowSingleLine: true }],
1118
+ "vue/comma-dangle": ["error", "always-multiline"],
1119
+ "vue/comma-spacing": ["error", { before: false, after: true }],
1120
+ "vue/comma-style": ["error", "last"],
1121
+ "vue/dot-location": ["error", "property"],
1122
+ "vue/dot-notation": ["error", { allowKeywords: true }],
1123
+ "vue/eqeqeq": ["error", "smart"],
1124
+ "vue/key-spacing": ["error", { beforeColon: false, afterColon: true }],
1125
+ "vue/keyword-spacing": ["error", { before: true, after: true }],
1126
+ "vue/no-empty-pattern": "error",
1127
+ "vue/no-loss-of-precision": "error",
1128
+ "vue/no-irregular-whitespace": "error",
1129
+ "vue/no-use-v-else-with-v-for": "error",
1130
+ "vue/require-typed-object-prop": "error",
1131
+ "vue/no-extra-parens": ["error", "functions"],
1132
+ "vue/no-restricted-syntax": [
1133
+ "error",
1134
+ "DebuggerStatement",
1135
+ "LabeledStatement",
1136
+ "WithStatement"
1137
+ ],
1138
+ "vue/no-sparse-arrays": "error",
1139
+ "vue/no-deprecated-model-definition": [
1140
+ "error",
1141
+ {
1142
+ allowVue3Compat: true
1143
+ }
1144
+ ],
1145
+ "vue/object-curly-newline": [
1146
+ "error",
1147
+ {
1148
+ multiline: true,
1149
+ consistent: true
1150
+ }
1151
+ ],
1152
+ "vue/no-static-inline-styles": [
1153
+ "error",
1154
+ {
1155
+ allowBinding: true
1156
+ }
1157
+ ],
1158
+ "vue/object-curly-spacing": ["error", "always"],
1159
+ "vue/object-property-newline": [
1160
+ "error",
1161
+ {
1162
+ allowMultiplePropertiesPerLine: true
1163
+ }
1164
+ ],
1165
+ "vue/object-shorthand": [
1166
+ "error",
1167
+ "always",
1168
+ {
1169
+ ignoreConstructors: false,
1170
+ avoidQuotes: true
1171
+ }
1172
+ ],
1173
+ "vue/operator-linebreak": ["error", "before"],
1174
+ "vue/prefer-template": "error",
1175
+ "vue/prop-name-casing": ["error", "camelCase"],
1176
+ "vue/quote-props": ["error", "consistent-as-needed"],
1177
+ "vue/space-in-parens": ["error", "never"],
1178
+ "vue/space-infix-ops": "error",
1179
+ "vue/space-unary-ops": [
1180
+ "error",
1181
+ {
1182
+ words: true,
1183
+ nonwords: false
1184
+ }
1185
+ ],
1186
+ "vue/template-curly-spacing": "error",
1187
+ "vue/block-order": [
1188
+ "error",
1189
+ {
1190
+ order: ["script", "template", "style"]
1191
+ }
1192
+ ],
1193
+ "vue/attributes-order": [
1194
+ "error",
1195
+ {
1196
+ order: [
1197
+ "EVENTS",
1198
+ // `@click="functionCall"`, `v-on="event"`
1199
+ "TWO_WAY_BINDING",
1200
+ // `v-model`
1201
+ "OTHER_DIRECTIVES",
1202
+ // `v-custom-directive`
1203
+ "LIST_RENDERING",
1204
+ // `v-for item in items`
1205
+ "CONDITIONALS",
1206
+ // `v-if`, `v-show`, `v-cloak`
1207
+ "CONTENT",
1208
+ // `v-text`, `v-html`
1209
+ "SLOT",
1210
+ // `v-slot`, `slot`
1211
+ "UNIQUE",
1212
+ // `ref`, `key`
1213
+ "DEFINITION",
1214
+ // `is`, `v-is`
1215
+ "ATTR_DYNAMIC",
1216
+ // `v-bind:prop="foo"`, `:prop="foo"`
1217
+ // `OTHER_ATTR`, // `custom-prop="foo"`, `:prop="foo"`, `disabled`
1218
+ "RENDER_MODIFIERS",
1219
+ // `v-once`, `v-pre`
1220
+ "GLOBAL",
1221
+ // `id`
1222
+ "ATTR_STATIC",
1223
+ // `prop="foo", `static attributes
1224
+ "ATTR_SHORTHAND_BOOL"
1225
+ // `disabled`, prop shorthand
1226
+ ],
1227
+ alphabetical: false
1228
+ }
1229
+ ],
1230
+ "vue/order-in-components": [
1231
+ "error",
1232
+ {
1233
+ order: [
1234
+ "el",
1235
+ "name",
1236
+ "key",
1237
+ "parent",
1238
+ "functional",
1239
+ ["provide", "inject"],
1240
+ ["delimiters", "comments"],
1241
+ ["components", "directives", "filters"],
1242
+ "extends",
1243
+ "mixins",
1244
+ "layout",
1245
+ "middleware",
1246
+ "validate",
1247
+ "scrollToTop",
1248
+ "transition",
1249
+ "loading",
1250
+ "inheritAttrs",
1251
+ "model",
1252
+ ["props", "propsData"],
1253
+ "emits",
1254
+ "setup",
1255
+ "asyncData",
1256
+ "computed",
1257
+ "data",
1258
+ "fetch",
1259
+ "head",
1260
+ "methods",
1261
+ ["template", "render"],
1262
+ "watch",
1263
+ "watchQuery",
1264
+ "LIFECYCLE_HOOKS",
1265
+ "renderError",
1266
+ "ROUTER_GUARDS"
1267
+ ]
1268
+ }
1269
+ ],
1270
+ "vue/max-attributes-per-line": [
1271
+ "error",
1272
+ {
1273
+ singleline: 1,
1274
+ multiline: 1
1275
+ }
1276
+ ],
1277
+ // Overrides built-in rules
1278
+ ...options.overrides
1047
1279
  }
1048
- },
1049
- processor: import_eslint_plugin_vue.default.processors[".vue"],
1050
- rules: {
1051
- ...isVue3 ? vue3Rules : vue2Rules,
1052
- // OFF
1053
- "vue/no-v-html": "off",
1054
- "vue/require-prop-types": "off",
1055
- "vue/require-default-prop": "off",
1056
- "vue/multi-word-component-names": "off",
1057
- "vue/no-setup-props-reactivity-loss": "off",
1058
- "vue/html-self-closing": [
1059
- "error",
1060
- {
1061
- html: {
1062
- void: "always",
1063
- normal: "always",
1064
- component: "always"
1065
- },
1066
- svg: "always",
1067
- math: "always"
1068
- }
1069
- ],
1070
- "vue/block-tag-newline": [
1071
- "error",
1072
- {
1073
- singleline: "always",
1074
- multiline: "always"
1075
- }
1076
- ],
1077
- "vue/component-name-in-template-casing": [
1078
- "error",
1079
- "PascalCase",
1080
- {
1081
- // Force auto-import components to be PascalCase
1082
- registeredComponentsOnly: false,
1083
- ignores: ["slot", "component"]
1084
- }
1085
- ],
1086
- "vue/component-options-name-casing": ["error", "PascalCase"],
1087
- "vue/custom-event-name-casing": ["error", "camelCase"],
1088
- "vue/define-macros-order": [
1089
- "error",
1090
- {
1091
- order: ["defineProps", "defineEmits", "defineOptions", "defineSlots"]
1092
- }
1093
- ],
1094
- "vue/html-comment-content-spacing": [
1095
- "error",
1096
- "always",
1097
- {
1098
- exceptions: ["-"]
1099
- }
1100
- ],
1101
- "vue/array-bracket-spacing": ["error", "never"],
1102
- "vue/arrow-spacing": ["error", { before: true, after: true }],
1103
- "vue/block-spacing": ["error", "always"],
1104
- "vue/brace-style": ["error", "stroustrup", { allowSingleLine: true }],
1105
- "vue/comma-dangle": ["error", "always-multiline"],
1106
- "vue/comma-spacing": ["error", { before: false, after: true }],
1107
- "vue/comma-style": ["error", "last"],
1108
- "vue/dot-location": ["error", "property"],
1109
- "vue/dot-notation": ["error", { allowKeywords: true }],
1110
- "vue/eqeqeq": ["error", "smart"],
1111
- "vue/key-spacing": ["error", { beforeColon: false, afterColon: true }],
1112
- "vue/keyword-spacing": ["error", { before: true, after: true }],
1113
- "vue/no-empty-pattern": "error",
1114
- "vue/no-loss-of-precision": "error",
1115
- "vue/no-irregular-whitespace": "error",
1116
- "vue/no-use-v-else-with-v-for": "error",
1117
- "vue/require-typed-object-prop": "error",
1118
- "vue/no-extra-parens": ["error", "functions"],
1119
- "vue/no-restricted-syntax": [
1120
- "error",
1121
- "DebuggerStatement",
1122
- "LabeledStatement",
1123
- "WithStatement"
1124
- ],
1125
- "vue/no-sparse-arrays": "error",
1126
- "vue/no-deprecated-model-definition": [
1127
- "error",
1128
- {
1129
- allowVue3Compat: true
1130
- }
1131
- ],
1132
- "vue/object-curly-newline": [
1133
- "error",
1134
- {
1135
- multiline: true,
1136
- consistent: true
1137
- }
1138
- ],
1139
- "vue/no-static-inline-styles": [
1140
- "error",
1141
- {
1142
- allowBinding: true
1143
- }
1144
- ],
1145
- "vue/object-curly-spacing": ["error", "always"],
1146
- "vue/object-property-newline": [
1147
- "error",
1148
- {
1149
- allowMultiplePropertiesPerLine: true
1150
- }
1151
- ],
1152
- "vue/object-shorthand": [
1153
- "error",
1154
- "always",
1155
- {
1156
- ignoreConstructors: false,
1157
- avoidQuotes: true
1158
- }
1159
- ],
1160
- "vue/operator-linebreak": ["error", "before"],
1161
- "vue/prefer-template": "error",
1162
- "vue/prop-name-casing": ["error", "camelCase"],
1163
- "vue/quote-props": ["error", "consistent-as-needed"],
1164
- "vue/space-in-parens": ["error", "never"],
1165
- "vue/space-infix-ops": "error",
1166
- "vue/space-unary-ops": [
1167
- "error",
1168
- {
1169
- words: true,
1170
- nonwords: false
1171
- }
1172
- ],
1173
- "vue/template-curly-spacing": "error",
1174
- "vue/block-order": [
1175
- "error",
1176
- {
1177
- order: ["script", "template", "style"]
1178
- }
1179
- ],
1180
- "vue/attributes-order": [
1181
- "error",
1182
- {
1183
- order: [
1184
- "EVENTS",
1185
- // `@click="functionCall"`, `v-on="event"`
1186
- "TWO_WAY_BINDING",
1187
- // `v-model`
1188
- "OTHER_DIRECTIVES",
1189
- // `v-custom-directive`
1190
- "LIST_RENDERING",
1191
- // `v-for item in items`
1192
- "CONDITIONALS",
1193
- // `v-if`, `v-show`, `v-cloak`
1194
- "CONTENT",
1195
- // `v-text`, `v-html`
1196
- "SLOT",
1197
- // `v-slot`, `slot`
1198
- "UNIQUE",
1199
- // `ref`, `key`
1200
- "DEFINITION",
1201
- // `is`, `v-is`
1202
- "ATTR_DYNAMIC",
1203
- // `v-bind:prop="foo"`, `:prop="foo"`
1204
- // `OTHER_ATTR`, // `custom-prop="foo"`, `:prop="foo"`, `disabled`
1205
- "RENDER_MODIFIERS",
1206
- // `v-once`, `v-pre`
1207
- "GLOBAL",
1208
- // `id`
1209
- "ATTR_STATIC",
1210
- // `prop="foo", `static attributes
1211
- "ATTR_SHORTHAND_BOOL"
1212
- // `disabled`, prop shorthand
1213
- ],
1214
- alphabetical: false
1215
- }
1216
- ],
1217
- "vue/order-in-components": [
1218
- "error",
1219
- {
1220
- order: [
1221
- "el",
1222
- "name",
1223
- "key",
1224
- "parent",
1225
- "functional",
1226
- ["provide", "inject"],
1227
- ["delimiters", "comments"],
1228
- ["components", "directives", "filters"],
1229
- "extends",
1230
- "mixins",
1231
- "layout",
1232
- "middleware",
1233
- "validate",
1234
- "scrollToTop",
1235
- "transition",
1236
- "loading",
1237
- "inheritAttrs",
1238
- "model",
1239
- ["props", "propsData"],
1240
- "emits",
1241
- "setup",
1242
- "asyncData",
1243
- "computed",
1244
- "data",
1245
- "fetch",
1246
- "head",
1247
- "methods",
1248
- ["template", "render"],
1249
- "watch",
1250
- "watchQuery",
1251
- "LIFECYCLE_HOOKS",
1252
- "renderError",
1253
- "ROUTER_GUARDS"
1254
- ]
1255
- }
1256
- ],
1257
- "vue/max-attributes-per-line": [
1258
- "error",
1259
- {
1260
- singleline: 1,
1261
- multiline: 1
1262
- }
1263
- ],
1264
- // Overrides built-in rules
1265
- ...options.overrides
1266
1280
  }
1267
- }
1268
- ];
1281
+ ];
1282
+ };
1269
1283
 
1270
1284
  // src/configs/yml.ts
1271
1285
  var yml = (options = {}) => [
@@ -1542,6 +1556,20 @@ var sortTsConfig = () => [
1542
1556
  }
1543
1557
  }
1544
1558
  ];
1559
+ var sortI18nLocale = () => [
1560
+ {
1561
+ files: ["**/{locales,i18n}/*.json", "**/{locales,i18n}/*.y?(a)ml"],
1562
+ rules: {
1563
+ "jsonc/sort-keys": [
1564
+ "error",
1565
+ {
1566
+ pathPattern: ".*",
1567
+ order: { type: "asc" }
1568
+ }
1569
+ ]
1570
+ }
1571
+ }
1572
+ ];
1545
1573
 
1546
1574
  // src/configs/jsonc.ts
1547
1575
  var jsonc = (options = {}) => [
@@ -1633,6 +1661,7 @@ function ntnyq(options = {}, customConfig = []) {
1633
1661
  overrides: getOverrides(options, "imports")
1634
1662
  }),
1635
1663
  ...javascript({
1664
+ ...resolveSubOptions(options, "javascript"),
1636
1665
  overrides: getOverrides(options, "javascript")
1637
1666
  })
1638
1667
  ];
@@ -1667,10 +1696,14 @@ function ntnyq(options = {}, customConfig = []) {
1667
1696
  if (options.typescript ?? hasTypeScript) {
1668
1697
  configs.push(
1669
1698
  ...typescript({
1699
+ ...resolveSubOptions(options, "typescript"),
1670
1700
  overrides: getOverrides(options, "typescript")
1671
1701
  })
1672
1702
  );
1673
1703
  }
1704
+ if (options.sortI18nLocale ?? true) {
1705
+ configs.push(...sortI18nLocale());
1706
+ }
1674
1707
  if (options.sortTsConfig ?? true) {
1675
1708
  configs.push(...sortTsConfig());
1676
1709
  }
@@ -1701,6 +1734,7 @@ function ntnyq(options = {}, customConfig = []) {
1701
1734
  if (options.vue ?? hasVue) {
1702
1735
  configs.push(
1703
1736
  ...vue({
1737
+ ...resolveSubOptions(options, "vue"),
1704
1738
  overrides: getOverrides(options, "vue")
1705
1739
  })
1706
1740
  );
@@ -1712,7 +1746,7 @@ function ntnyq(options = {}, customConfig = []) {
1712
1746
  })
1713
1747
  );
1714
1748
  }
1715
- if (options.vitest ?? hasVitest) {
1749
+ if (options.unocss ?? hasUnoCSS) {
1716
1750
  configs.push(
1717
1751
  ...unocss({
1718
1752
  overrides: getOverrides(options, "unocss")
@@ -1733,6 +1767,7 @@ function ntnyq(options = {}, customConfig = []) {
1733
1767
  if (options.prettier ?? true) {
1734
1768
  configs.push(
1735
1769
  ...prettier({
1770
+ ...resolveSubOptions(options, "prettier"),
1736
1771
  overrides: getOverrides(options, "prettier")
1737
1772
  })
1738
1773
  );
@@ -1755,6 +1790,8 @@ function ntnyq(options = {}, customConfig = []) {
1755
1790
  GLOB_LESS,
1756
1791
  GLOB_LOCKFILE,
1757
1792
  GLOB_MARKDOWN,
1793
+ GLOB_MARKDOWN_CODE,
1794
+ GLOB_MARKDOWN_NESTED,
1758
1795
  GLOB_NODE_MODULES,
1759
1796
  GLOB_SCSS,
1760
1797
  GLOB_SRC,
@@ -1769,7 +1806,6 @@ function ntnyq(options = {}, customConfig = []) {
1769
1806
  command,
1770
1807
  comments,
1771
1808
  getOverrides,
1772
- getVueVersion,
1773
1809
  hasTypeScript,
1774
1810
  hasUnoCSS,
1775
1811
  hasVitest,
@@ -1809,6 +1845,7 @@ function ntnyq(options = {}, customConfig = []) {
1809
1845
  prettier,
1810
1846
  regexp,
1811
1847
  resolveSubOptions,
1848
+ sortI18nLocale,
1812
1849
  sortPackageJson,
1813
1850
  sortTsConfig,
1814
1851
  toArray,