@biscuittin/eslint-config 0.0.7 → 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (4) hide show
  1. package/dist/index.d.ts +3197 -831
  2. package/dist/index.js +244 -246
  3. package/package.json +27 -27
  4. package/typegen.d.ts +4220 -911
package/dist/index.js CHANGED
@@ -1,34 +1,34 @@
1
- import pluginESLintComments from "@eslint-community/eslint-plugin-eslint-comments";
2
- import pluginReact from "@eslint-react/eslint-plugin";
3
- import { eslint_plugin_jsx_a11y_minimal } from "@eslint-sukka/eslint-plugin-react-jsx-a11y";
4
- import pluginJson from "@eslint/json";
5
- import pluginNextJs from "@next/eslint-plugin-next";
6
- import pluginStylisticJsx from "@stylistic/eslint-plugin-jsx";
7
- import pluginAntfu from "eslint-plugin-antfu";
8
- import pluginAutofix from "eslint-plugin-autofix";
9
- import pluginFormat from "eslint-plugin-format";
10
- import pluginImportX, { configs, createNodeResolver } from "eslint-plugin-import-x";
11
- import pluginJsonc from "eslint-plugin-jsonc";
12
- import pluginNode from "eslint-plugin-n";
13
- import pluginPerfectionist from "eslint-plugin-perfectionist";
14
- import * as pluginReactCompiler from "eslint-plugin-react-compiler";
15
- import * as pluginReactHooks from "eslint-plugin-react-hooks";
16
- import pluginReactRefresh from "eslint-plugin-react-refresh";
17
- import * as pluginRegexp from "eslint-plugin-regexp";
18
- import pluginTailwindCSS from "eslint-plugin-tailwindcss";
19
- import pluginUnicorn from "eslint-plugin-unicorn";
20
- import pluginUnusedImports from "eslint-plugin-unused-imports";
21
- import { configs as configs$1, parser, plugin } from "typescript-eslint";
1
+ import eslintPluginESLintComments from "@eslint-community/eslint-plugin-eslint-comments";
22
2
  import fs from "node:fs";
23
3
  import path from "node:path";
24
4
  import process from "node:process";
25
5
  import { findUp } from "find-up";
26
6
  import fsp from "node:fs/promises";
7
+ import eslintPluginFormat from "eslint-plugin-format";
27
8
  import * as parserJsonc from "jsonc-eslint-parser";
9
+ import { configs, parser, plugin } from "typescript-eslint";
28
10
  import gitignore from "eslint-config-flat-gitignore";
11
+ import eslintPluginAntfu from "eslint-plugin-antfu";
12
+ import eslintPluginImportX, { configs as configs$1, createNodeResolver } from "eslint-plugin-import-x";
13
+ import eslintPluginPerfectionist from "eslint-plugin-perfectionist";
14
+ import eslintPluginUnusedImports from "eslint-plugin-unused-imports";
29
15
  import js from "@eslint/js";
16
+ import eslintPluginAutofix from "eslint-plugin-autofix";
30
17
  import globals, { default as globals$1 } from "globals";
18
+ import eslintPluginJson from "@eslint/json";
19
+ import eslintPluginJsonc from "eslint-plugin-jsonc";
20
+ import eslintPluginNextJs from "@next/eslint-plugin-next";
21
+ import eslintPluginReactRefresh from "eslint-plugin-react-refresh";
22
+ import eslintPluginNode from "eslint-plugin-n";
23
+ import eslintPluginReact from "@eslint-react/eslint-plugin";
24
+ import { eslint_plugin_jsx_a11y_minimal } from "@eslint-sukka/eslint-plugin-react-jsx-a11y";
25
+ import eslintPluginStylistic from "@stylistic/eslint-plugin";
26
+ import * as eslintPluginReactCompiler from "eslint-plugin-react-compiler";
27
+ import * as eslintPluginReactHooks from "eslint-plugin-react-hooks";
28
+ import * as eslintPluginRegexp from "eslint-plugin-regexp";
29
+ import eslintPluginBetterTailwindcss from "eslint-plugin-better-tailwindcss";
31
30
  import { createTypeScriptImportResolver, defaultExtensions } from "eslint-import-resolver-typescript";
31
+ import eslintPluginUnicorn from "eslint-plugin-unicorn";
32
32
  import { FlatConfigComposer } from "eslint-flat-config-utils";
33
33
  import { isPackageExists } from "local-pkg";
34
34
 
@@ -203,46 +203,14 @@ function memo(function_, key) {
203
203
  return globalThis.__ESLINT_PLUGIN_MEMO__[_key];
204
204
  }
205
205
 
206
- //#endregion
207
- //#region src/plugins.ts
208
- const reactPlugins = pluginReact.configs.all.plugins;
209
- const plugins = {
210
- pluginAntfu: memo(pluginAntfu, "eslint-plugin-antfu"),
211
- pluginAutofix: memo(pluginAutofix, "eslint-plugin-autofix"),
212
- pluginESLintComments: memo(pluginESLintComments, "eslint-plugin-eslint-comments"),
213
- pluginFormat: memo(pluginFormat, "eslint-plugin-format"),
214
- pluginImportX: memo(pluginImportX, "eslint-plugin-import-x"),
215
- pluginJson: memo(pluginJson, "eslint-plugin-json"),
216
- pluginJsonc: memo(pluginJsonc, "eslint-plugin-jsonc"),
217
- pluginJsxA11y: memo(eslint_plugin_jsx_a11y_minimal, "eslint-plugin-react-jsx-a11y"),
218
- pluginNextJs: memo(pluginNextJs, "eslint-plugin-next"),
219
- pluginNode: memo(pluginNode, "eslint-plugin-n"),
220
- pluginPerfectionist: memo(pluginPerfectionist, "eslint-plugin-perfectionist"),
221
- pluginReact: memo(reactPlugins["@eslint-react"], "eslint-plugin-react-x"),
222
- pluginReactCompiler: memo(pluginReactCompiler, "eslint-plugin-react-compiler"),
223
- pluginReactDebug: memo(reactPlugins["@eslint-react/debug"], "eslint-plugin-react-debug"),
224
- pluginReactDom: memo(reactPlugins["@eslint-react/dom"], "eslint-plugin-react-dom"),
225
- pluginReactHooks: memo(pluginReactHooks, "eslint-plugin-react-hooks"),
226
- pluginReactHooksExtra: memo(reactPlugins["@eslint-react/hooks-extra"], "eslint-plugin-react-hooks-extra"),
227
- pluginReactHooksNamingConvention: memo(reactPlugins["@eslint-react/naming-convention"], "eslint-plugin-react-naming-convention"),
228
- pluginReactRefresh: memo(pluginReactRefresh, "eslint-plugin-react-refresh"),
229
- pluginReactWebApi: memo(reactPlugins["@eslint-react/web-api"], "eslint-plugin-react-web-api"),
230
- pluginRegexp: memo(pluginRegexp, "eslint-plugin-regexp"),
231
- pluginStylisticJsx: memo(pluginStylisticJsx, "eslint-plugin-jsx"),
232
- pluginTailwindCSS: memo(pluginTailwindCSS, "eslint-plugin-tailwindcss"),
233
- pluginTypescript: memo(plugin, "typescript-eslint"),
234
- pluginUnicorn: memo(pluginUnicorn, "eslint-plugin-unicorn"),
235
- pluginUnusedImports: memo(pluginUnusedImports, "eslint-plugin-unused-imports")
236
- };
237
- var plugins_default = plugins;
238
-
239
206
  //#endregion
240
207
  //#region src/configs/comments.ts
208
+ const pluginESLintComments = memo(eslintPluginESLintComments, "eslint-plugin-eslint-comments");
241
209
  const name$14 = getFlatConfigName("eslint-comments");
242
210
  function comments() {
243
211
  return [{
244
212
  name: name$14.setup,
245
- plugins: { "@eslint-community/eslint-comments": plugins_default["pluginESLintComments"] }
213
+ plugins: { "@eslint-community/eslint-comments": pluginESLintComments }
246
214
  }, {
247
215
  name: name$14.rules,
248
216
  rules: {
@@ -403,7 +371,7 @@ function disables() {
403
371
  //#region src/parsers.ts
404
372
  const parsers = {
405
373
  parserJsonc,
406
- parserPlain: pluginFormat.parserPlain,
374
+ parserPlain: eslintPluginFormat.parserPlain,
407
375
  parserTypescript: parser
408
376
  };
409
377
  var parsers_default = parsers;
@@ -419,6 +387,7 @@ const trailingCommasMap = {
419
387
  all: "always",
420
388
  multiline: "onlyMultiLine"
421
389
  };
390
+ const pluginFormat = memo(eslintPluginFormat, "eslint-plugin-format");
422
391
  const name$12 = getFlatConfigName("formatters");
423
392
  async function formatters(options = {}) {
424
393
  const { dprintConfigPath = "dprint.json", printWidth = 120, indentWidth = 2, useTabs = false, semi = false, quotes = "single", jsxQuotes = "double", trailingComma = "multiline", endOfLine = "lf", extraJsonFiles = [] } = options;
@@ -435,7 +404,7 @@ async function formatters(options = {}) {
435
404
  return [
436
405
  {
437
406
  name: name$12.setup,
438
- plugins: { format: plugins_default["pluginFormat"] }
407
+ plugins: { format: pluginFormat }
439
408
  },
440
409
  {
441
410
  name: `${name$12.rules}/typescript`,
@@ -557,6 +526,10 @@ function ignores(userIgnores = []) {
557
526
 
558
527
  //#endregion
559
528
  //#region src/configs/imports.ts
529
+ const pluginAntfu$2 = memo(eslintPluginAntfu, "eslint-plugin-antfu");
530
+ const pluginImportX$2 = memo(eslintPluginImportX, "eslint-plugin-import-x");
531
+ const pluginPerfectionist = memo(eslintPluginPerfectionist, "eslint-plugin-perfectionist");
532
+ const pluginUnusedImports$1 = memo(eslintPluginUnusedImports, "eslint-plugin-unused-imports");
560
533
  const name$10 = getFlatConfigName("imports");
561
534
  const files$6 = [GLOB_SRC];
562
535
  function imports(options = {}) {
@@ -566,17 +539,17 @@ function imports(options = {}) {
566
539
  name: name$10.setup,
567
540
  files: files$6,
568
541
  plugins: {
569
- "import-x": plugins_default["pluginImportX"],
570
- "unused-imports": plugins_default["pluginUnusedImports"],
571
- antfu: plugins_default["pluginAntfu"],
572
- perfectionist: plugins_default["pluginPerfectionist"]
542
+ "import-x": pluginImportX$2,
543
+ "unused-imports": pluginUnusedImports$1,
544
+ antfu: pluginAntfu$2,
545
+ perfectionist: pluginPerfectionist
573
546
  }
574
547
  },
575
548
  {
576
549
  name: name$10.rules,
577
550
  files: files$6,
578
551
  rules: {
579
- ...configs.recommended.rules,
552
+ ...configs$1.recommended.rules,
580
553
  "import-x/newline-after-import": ["error", { considerComments: false }],
581
554
  "import-x/no-absolute-path": "error",
582
555
  "import-x/no-empty-named-blocks": "error",
@@ -637,6 +610,10 @@ function imports(options = {}) {
637
610
 
638
611
  //#endregion
639
612
  //#region src/configs/javascript.ts
613
+ const pluginAntfu$1 = memo(eslintPluginAntfu, "eslint-plugin-antfu");
614
+ const pluginAutofix = memo(eslintPluginAutofix, "eslint-plugin-autofix");
615
+ const pluginImportX$1 = memo(eslintPluginImportX, "eslint-plugin-import-x");
616
+ const pluginUnusedImports = memo(eslintPluginUnusedImports, "eslint-plugin-unused-imports");
640
617
  const name$9 = getFlatConfigName("javascript");
641
618
  const files$5 = [GLOB_JS, GLOB_JSX];
642
619
  const commonjsGlobalsOffList = Object.keys(globals$1.commonjs).map((key) => ({ [key]: "off" }));
@@ -655,10 +632,10 @@ function javascript(options = {}) {
655
632
  name: name$9.setup,
656
633
  files: files$5,
657
634
  plugins: {
658
- "import-x": plugins_default["pluginImportX"],
659
- "unused-imports": plugins_default["pluginUnusedImports"],
660
- autofix: plugins_default["pluginAutofix"],
661
- antfu: plugins_default["pluginAntfu"]
635
+ "import-x": pluginImportX$1,
636
+ "unused-imports": pluginUnusedImports,
637
+ autofix: pluginAutofix,
638
+ antfu: pluginAntfu$1
662
639
  },
663
640
  linterOptions: { reportUnusedDisableDirectives: true },
664
641
  languageOptions: {
@@ -731,9 +708,9 @@ function javascript(options = {}) {
731
708
 
732
709
  //#endregion
733
710
  //#region src/configs/json.ts
711
+ const pluginJson = memo(eslintPluginJson, "eslint-plugin-json");
712
+ const pluginJsonc = memo(eslintPluginJsonc, "eslint-plugin-jsonc");
734
713
  const name$8 = getFlatConfigName("json");
735
- const jsoncRecommendedWithJsonRuleList = pluginJsonc.configs["flat/recommended-with-json"].map((config$1) => config$1.rules);
736
- const jsoncRecommendedWithJsonRules = Object.assign({}, ...jsoncRecommendedWithJsonRuleList);
737
714
  function json(options = {}) {
738
715
  const { extraFiles = [], stylistic = { indentWidth: 2 } } = options;
739
716
  const { indentWidth = 2 } = typeof stylistic === "object" ? stylistic : { indentWidth: 2 };
@@ -748,27 +725,26 @@ function json(options = {}) {
748
725
  name: name$8.setup,
749
726
  files: files$7,
750
727
  plugins: {
751
- json: plugins_default["pluginJson"],
752
- jsonc: plugins_default["pluginJsonc"]
728
+ json: pluginJson,
729
+ jsonc: pluginJsonc
753
730
  },
731
+ language: "json/json",
754
732
  languageOptions: { parser: parsers_default["parserJsonc"] }
755
733
  },
756
734
  {
757
735
  name: name$8.rules,
758
736
  files: files$7,
759
- rules: {
760
- "json/no-duplicate-keys": "error",
761
- "json/no-empty-keys": "error",
762
- "json/no-unsafe-values": "error",
763
- "json/no-unnormalized-keys": "error",
764
- "json/top-level-interop": "error",
765
- ...jsoncRecommendedWithJsonRules
766
- }
737
+ rules: { ...pluginJson.configs.recommended.rules }
767
738
  },
768
739
  {
769
740
  name: name$8.stylistic,
770
741
  files: files$7,
771
742
  rules: stylistic ? {
743
+ "json/sort-keys": [
744
+ "error",
745
+ "asc",
746
+ { natural: true }
747
+ ],
772
748
  "jsonc/array-bracket-spacing": ["error", "never"],
773
749
  "jsonc/comma-dangle": ["error", "never"],
774
750
  "jsonc/comma-style": ["error", "last"],
@@ -782,7 +758,7 @@ function json(options = {}) {
782
758
  multiline: true
783
759
  }],
784
760
  "jsonc/object-curly-spacing": ["error", "always"],
785
- "jsonc/object-property-newline": ["error", { allowMultiplePropertiesPerLine: true }],
761
+ "jsonc/object-property-newline": ["error", { allowAllPropertiesOnSameLine: true }],
786
762
  "jsonc/quote-props": "error",
787
763
  "jsonc/quotes": "error"
788
764
  } : {}
@@ -791,6 +767,7 @@ function json(options = {}) {
791
767
  name: `${name$8.base}/package-json`,
792
768
  files: ["**/package.json"],
793
769
  rules: {
770
+ "json/sort-keys": "off",
794
771
  "jsonc/sort-array-values": ["error", {
795
772
  order: { type: "asc" },
796
773
  pathPattern: "^files$"
@@ -885,114 +862,117 @@ function json(options = {}) {
885
862
  {
886
863
  name: `${name$8.base}/tsconfig-json`,
887
864
  files: ["**/tsconfig.json", "**/tsconfig.*.json"],
888
- rules: { "jsonc/sort-keys": [
889
- "error",
890
- {
891
- order: [
892
- "extends",
893
- "compilerOptions",
894
- "references",
895
- "files",
896
- "include",
897
- "exclude"
898
- ],
899
- pathPattern: "^$"
900
- },
901
- {
902
- order: [
903
- "incremental",
904
- "composite",
905
- "tsBuildInfoFile",
906
- "disableSourceOfProjectReferenceRedirect",
907
- "disableSolutionSearching",
908
- "disableReferencedProjectLoad",
909
- "target",
910
- "jsx",
911
- "jsxFactory",
912
- "jsxFragmentFactory",
913
- "jsxImportSource",
914
- "lib",
915
- "moduleDetection",
916
- "noLib",
917
- "reactNamespace",
918
- "useDefineForClassFields",
919
- "emitDecoratorMetadata",
920
- "experimentalDecorators",
921
- "baseUrl",
922
- "rootDir",
923
- "rootDirs",
924
- "customConditions",
925
- "module",
926
- "moduleResolution",
927
- "moduleSuffixes",
928
- "noResolve",
929
- "paths",
930
- "resolveJsonModule",
931
- "resolvePackageJsonExports",
932
- "resolvePackageJsonImports",
933
- "typeRoots",
934
- "types",
935
- "allowArbitraryExtensions",
936
- "allowImportingTsExtensions",
937
- "allowUmdGlobalAccess",
938
- "allowJs",
939
- "checkJs",
940
- "maxNodeModuleJsDepth",
941
- "strict",
942
- "strictBindCallApply",
943
- "strictFunctionTypes",
944
- "strictNullChecks",
945
- "strictPropertyInitialization",
946
- "allowUnreachableCode",
947
- "allowUnusedLabels",
948
- "alwaysStrict",
949
- "exactOptionalPropertyTypes",
950
- "noFallthroughCasesInSwitch",
951
- "noImplicitAny",
952
- "noImplicitOverride",
953
- "noImplicitReturns",
954
- "noImplicitThis",
955
- "noPropertyAccessFromIndexSignature",
956
- "noUncheckedIndexedAccess",
957
- "noUnusedLocals",
958
- "noUnusedParameters",
959
- "useUnknownInCatchVariables",
960
- "declaration",
961
- "declarationDir",
962
- "declarationMap",
963
- "downlevelIteration",
964
- "emitBOM",
965
- "emitDeclarationOnly",
966
- "importHelpers",
967
- "importsNotUsedAsValues",
968
- "inlineSourceMap",
969
- "inlineSources",
970
- "mapRoot",
971
- "newLine",
972
- "noEmit",
973
- "noEmitHelpers",
974
- "noEmitOnError",
975
- "outDir",
976
- "outFile",
977
- "preserveConstEnums",
978
- "preserveValueImports",
979
- "removeComments",
980
- "sourceMap",
981
- "sourceRoot",
982
- "stripInternal",
983
- "allowSyntheticDefaultImports",
984
- "esModuleInterop",
985
- "forceConsistentCasingInFileNames",
986
- "isolatedDeclarations",
987
- "isolatedModules",
988
- "preserveSymlinks",
989
- "verbatimModuleSyntax",
990
- "skipDefaultLibCheck",
991
- "skipLibCheck"
992
- ],
993
- pathPattern: "^compilerOptions$"
994
- }
995
- ] }
865
+ rules: {
866
+ "json/sort-keys": "off",
867
+ "jsonc/sort-keys": [
868
+ "error",
869
+ {
870
+ order: [
871
+ "extends",
872
+ "compilerOptions",
873
+ "references",
874
+ "files",
875
+ "include",
876
+ "exclude"
877
+ ],
878
+ pathPattern: "^$"
879
+ },
880
+ {
881
+ order: [
882
+ "incremental",
883
+ "composite",
884
+ "tsBuildInfoFile",
885
+ "disableSourceOfProjectReferenceRedirect",
886
+ "disableSolutionSearching",
887
+ "disableReferencedProjectLoad",
888
+ "target",
889
+ "jsx",
890
+ "jsxFactory",
891
+ "jsxFragmentFactory",
892
+ "jsxImportSource",
893
+ "lib",
894
+ "moduleDetection",
895
+ "noLib",
896
+ "reactNamespace",
897
+ "useDefineForClassFields",
898
+ "emitDecoratorMetadata",
899
+ "experimentalDecorators",
900
+ "baseUrl",
901
+ "rootDir",
902
+ "rootDirs",
903
+ "customConditions",
904
+ "module",
905
+ "moduleResolution",
906
+ "moduleSuffixes",
907
+ "noResolve",
908
+ "paths",
909
+ "resolveJsonModule",
910
+ "resolvePackageJsonExports",
911
+ "resolvePackageJsonImports",
912
+ "typeRoots",
913
+ "types",
914
+ "allowArbitraryExtensions",
915
+ "allowImportingTsExtensions",
916
+ "allowUmdGlobalAccess",
917
+ "allowJs",
918
+ "checkJs",
919
+ "maxNodeModuleJsDepth",
920
+ "strict",
921
+ "strictBindCallApply",
922
+ "strictFunctionTypes",
923
+ "strictNullChecks",
924
+ "strictPropertyInitialization",
925
+ "allowUnreachableCode",
926
+ "allowUnusedLabels",
927
+ "alwaysStrict",
928
+ "exactOptionalPropertyTypes",
929
+ "noFallthroughCasesInSwitch",
930
+ "noImplicitAny",
931
+ "noImplicitOverride",
932
+ "noImplicitReturns",
933
+ "noImplicitThis",
934
+ "noPropertyAccessFromIndexSignature",
935
+ "noUncheckedIndexedAccess",
936
+ "noUnusedLocals",
937
+ "noUnusedParameters",
938
+ "useUnknownInCatchVariables",
939
+ "declaration",
940
+ "declarationDir",
941
+ "declarationMap",
942
+ "downlevelIteration",
943
+ "emitBOM",
944
+ "emitDeclarationOnly",
945
+ "importHelpers",
946
+ "importsNotUsedAsValues",
947
+ "inlineSourceMap",
948
+ "inlineSources",
949
+ "mapRoot",
950
+ "newLine",
951
+ "noEmit",
952
+ "noEmitHelpers",
953
+ "noEmitOnError",
954
+ "outDir",
955
+ "outFile",
956
+ "preserveConstEnums",
957
+ "preserveValueImports",
958
+ "removeComments",
959
+ "sourceMap",
960
+ "sourceRoot",
961
+ "stripInternal",
962
+ "allowSyntheticDefaultImports",
963
+ "esModuleInterop",
964
+ "forceConsistentCasingInFileNames",
965
+ "isolatedDeclarations",
966
+ "isolatedModules",
967
+ "preserveSymlinks",
968
+ "verbatimModuleSyntax",
969
+ "skipDefaultLibCheck",
970
+ "skipLibCheck"
971
+ ],
972
+ pathPattern: "^compilerOptions$"
973
+ }
974
+ ]
975
+ }
996
976
  }
997
977
  ];
998
978
  }
@@ -1010,6 +990,8 @@ function jsx() {
1010
990
 
1011
991
  //#endregion
1012
992
  //#region src/configs/next-js.ts
993
+ const pluginNextJs = memo(eslintPluginNextJs, "eslint-plugin-next");
994
+ const pluginReactRefresh$1 = memo(eslintPluginReactRefresh, "eslint-plugin-react-refresh");
1013
995
  const name$6 = getFlatConfigName("next-js");
1014
996
  const files$4 = [GLOB_SRC];
1015
997
  function nextJs() {
@@ -1017,15 +999,14 @@ function nextJs() {
1017
999
  name: name$6.setup,
1018
1000
  files: files$4,
1019
1001
  plugins: {
1020
- "@next/next": plugins_default["pluginNextJs"],
1021
- "react-refresh": plugins_default["pluginReactRefresh"]
1002
+ "@next/next": pluginNextJs,
1003
+ "react-refresh": pluginReactRefresh$1
1022
1004
  }
1023
1005
  }, {
1024
1006
  name: name$6.rules,
1025
1007
  files: files$4,
1026
1008
  rules: {
1027
- ...pluginNextJs?.configs?.recommended?.rules,
1028
- ...pluginNextJs?.configs["core-web-vitals"].rules,
1009
+ ...pluginNextJs.flatConfig.coreWebVitals.rules,
1029
1010
  "react-refresh/only-export-components": ["warn", { allowExportNames: [
1030
1011
  "config",
1031
1012
  "generateStaticParams",
@@ -1040,6 +1021,7 @@ function nextJs() {
1040
1021
 
1041
1022
  //#endregion
1042
1023
  //#region src/configs/node-js.ts
1024
+ const pluginNode = memo(eslintPluginNode, "eslint-plugin-n");
1043
1025
  const name$5 = getFlatConfigName("node-js");
1044
1026
  const isModule = getPackageJson()?.type === "module";
1045
1027
  const globalsCommonJs = {
@@ -1069,7 +1051,7 @@ function nodeJs(options = {}) {
1069
1051
  {
1070
1052
  name: name$5.setup,
1071
1053
  files: files$7,
1072
- plugins: { node: plugins_default["pluginNode"] },
1054
+ plugins: { node: pluginNode },
1073
1055
  languageOptions: {
1074
1056
  ecmaVersion: "latest",
1075
1057
  parserOptions: { ecmaFeatures: { impliedStrict: true } }
@@ -1146,6 +1128,18 @@ function nodeJs(options = {}) {
1146
1128
 
1147
1129
  //#endregion
1148
1130
  //#region src/configs/react.ts
1131
+ const reactPlugins$1 = eslintPluginReact.configs.all.plugins;
1132
+ const pluginJsxA11y = memo(eslint_plugin_jsx_a11y_minimal, "eslint-plugin-react-jsx-a11y");
1133
+ const pluginReact$1 = memo(reactPlugins$1["@eslint-react"], "eslint-plugin-react-x");
1134
+ const pluginReactCompiler = memo(eslintPluginReactCompiler, "eslint-plugin-react-compiler");
1135
+ const pluginReactDebug = memo(reactPlugins$1["@eslint-react/debug"], "eslint-plugin-react-debug");
1136
+ const pluginReactDom$1 = memo(reactPlugins$1["@eslint-react/dom"], "eslint-plugin-react-dom");
1137
+ const pluginReactHooks = memo(eslintPluginReactHooks, "eslint-plugin-react-hooks");
1138
+ const pluginReactHooksExtra = memo(reactPlugins$1["@eslint-react/hooks-extra"], "eslint-plugin-react-hooks-extra");
1139
+ const pluginReactHooksNamingConvention = memo(reactPlugins$1["@eslint-react/naming-convention"], "eslint-plugin-react-naming-convention");
1140
+ const pluginReactRefresh = memo(eslintPluginReactRefresh, "eslint-plugin-react-refresh");
1141
+ const pluginReactWebApi = memo(reactPlugins$1["@eslint-react/web-api"], "eslint-plugin-react-web-api");
1142
+ const pluginStylistic = memo(eslintPluginStylistic, "eslint-plugin-stylistic");
1149
1143
  const name$4 = getFlatConfigName("react");
1150
1144
  const files$3 = [GLOB_SRC];
1151
1145
  function react(options = {}) {
@@ -1155,17 +1149,17 @@ function react(options = {}) {
1155
1149
  name: name$4.setup,
1156
1150
  files: files$3,
1157
1151
  plugins: {
1158
- "react-hooks": plugins_default["pluginReactHooks"],
1159
- "react-compiler": plugins_default["pluginReactCompiler"],
1160
- "react-refresh": plugins_default["pluginReactRefresh"],
1161
- "jsx-a11y": plugins_default["pluginJsxA11y"],
1162
- "@stylistic/jsx": plugins_default["pluginStylisticJsx"],
1163
- "@eslint-react": plugins_default["pluginReact"],
1164
- "@eslint-react/dom": plugins_default["pluginReactDom"],
1165
- "@eslint-react/web-api": plugins_default["pluginReactWebApi"],
1166
- "@eslint-react/debug": plugins_default["pluginReactDebug"],
1167
- "@eslint-react/hooks-extra": plugins_default["pluginReactHooksExtra"],
1168
- "@eslint-react/naming-convention": plugins_default["pluginReactHooksNamingConvention"]
1152
+ "react-hooks": pluginReactHooks,
1153
+ "react-compiler": pluginReactCompiler,
1154
+ "react-refresh": pluginReactRefresh,
1155
+ "jsx-a11y": pluginJsxA11y,
1156
+ "@stylistic": pluginStylistic,
1157
+ "@eslint-react": pluginReact$1,
1158
+ "@eslint-react/dom": pluginReactDom$1,
1159
+ "@eslint-react/web-api": pluginReactWebApi,
1160
+ "@eslint-react/debug": pluginReactDebug,
1161
+ "@eslint-react/hooks-extra": pluginReactHooksExtra,
1162
+ "@eslint-react/naming-convention": pluginReactHooksNamingConvention
1169
1163
  },
1170
1164
  settings: { "react-x": {
1171
1165
  importSource: "react",
@@ -1202,7 +1196,7 @@ function react(options = {}) {
1202
1196
  "jsx-a11y/role-has-required-aria-props": "warn",
1203
1197
  "jsx-a11y/role-supports-aria-props": "warn",
1204
1198
  "jsx-a11y/tabindex-no-positive": "warn",
1205
- ...pluginReact.configs.recommended.rules,
1199
+ ...eslintPluginReact.configs.x.rules,
1206
1200
  "@eslint-react/ensure-forward-ref-using-ref": "error",
1207
1201
  "@eslint-react/no-duplicate-jsx-props": "error",
1208
1202
  "@eslint-react/no-duplicate-key": "error",
@@ -1238,32 +1232,32 @@ function react(options = {}) {
1238
1232
  "@eslint-react/prefer-shorthand-fragment": "off",
1239
1233
  "@eslint-react/avoid-shorthand-boolean": "off",
1240
1234
  "@eslint-react/avoid-shorthand-fragment": "error",
1241
- "@stylistic/jsx/jsx-closing-bracket-location": "error",
1242
- "@stylistic/jsx/jsx-closing-tag-location": "error",
1243
- "@stylistic/jsx/jsx-curly-brace-presence": ["error", { propElementValues: "always" }],
1244
- "@stylistic/jsx/jsx-equals-spacing": "error",
1245
- "@stylistic/jsx/jsx-first-prop-new-line": ["error", "multiline"],
1246
- "@stylistic/jsx/jsx-function-call-newline": ["error", "multiline"],
1247
- "@stylistic/jsx/jsx-max-props-per-line": ["error", {
1235
+ "@stylistic/jsx-closing-bracket-location": "error",
1236
+ "@stylistic/jsx-closing-tag-location": "error",
1237
+ "@stylistic/jsx-curly-brace-presence": ["error", { propElementValues: "always" }],
1238
+ "@stylistic/jsx-equals-spacing": "error",
1239
+ "@stylistic/jsx-first-prop-new-line": ["error", "multiline"],
1240
+ "@stylistic/jsx-function-call-newline": ["error", "multiline"],
1241
+ "@stylistic/jsx-max-props-per-line": ["error", {
1248
1242
  maximum: 1,
1249
1243
  when: "multiline"
1250
1244
  }],
1251
- "@stylistic/jsx/jsx-one-expression-per-line": ["error", { allow: "non-jsx" }],
1252
- "@stylistic/jsx/jsx-pascal-case": ["error", {
1245
+ "@stylistic/jsx-one-expression-per-line": ["error", { allow: "non-jsx" }],
1246
+ "@stylistic/jsx-pascal-case": ["error", {
1253
1247
  allowNamespace: true,
1254
1248
  ignore: ["motion"]
1255
1249
  }],
1256
- "@stylistic/jsx/jsx-self-closing-comp": ["error", {
1250
+ "@stylistic/jsx-self-closing-comp": ["error", {
1257
1251
  component: true,
1258
1252
  html: true
1259
1253
  }],
1260
- "@stylistic/jsx/jsx-tag-spacing": ["error", {
1254
+ "@stylistic/jsx-tag-spacing": ["error", {
1261
1255
  afterOpening: "never",
1262
1256
  beforeClosing: "never",
1263
1257
  beforeSelfClosing: "always",
1264
1258
  closingSlash: "never"
1265
1259
  }],
1266
- "@stylistic/jsx/jsx-wrap-multilines": ["error", {
1260
+ "@stylistic/jsx-wrap-multilines": ["error", {
1267
1261
  arrow: "parens-new-line",
1268
1262
  assignment: "parens-new-line",
1269
1263
  condition: "parens-new-line",
@@ -1273,7 +1267,7 @@ function react(options = {}) {
1273
1267
  propertyValue: "parens-new-line",
1274
1268
  return: "parens-new-line"
1275
1269
  }],
1276
- "@stylistic/jsx/jsx-sort-props": ["error", {
1270
+ "@stylistic/jsx-sort-props": ["error", {
1277
1271
  callbacksLast: true,
1278
1272
  shorthandFirst: true,
1279
1273
  multiline: "last",
@@ -1286,13 +1280,14 @@ function react(options = {}) {
1286
1280
 
1287
1281
  //#endregion
1288
1282
  //#region src/configs/regexp.ts
1283
+ const pluginRegexp = memo(eslintPluginRegexp, "eslint-plugin-regexp");
1289
1284
  const name$3 = getFlatConfigName("regexp");
1290
1285
  const files$2 = [GLOB_SRC];
1291
1286
  function regexp() {
1292
1287
  return [{
1293
1288
  name: name$3.setup,
1294
1289
  files: files$2,
1295
- plugins: { regexp: plugins_default["pluginRegexp"] }
1290
+ plugins: { regexp: pluginRegexp }
1296
1291
  }, {
1297
1292
  name: name$3.rules,
1298
1293
  files: files$2,
@@ -1302,6 +1297,7 @@ function regexp() {
1302
1297
 
1303
1298
  //#endregion
1304
1299
  //#region src/configs/tailwindcss.ts
1300
+ const pluginBetterTailwindCSS = memo(eslintPluginBetterTailwindcss, "eslint-plugin-better-tailwindcss");
1305
1301
  const name$2 = getFlatConfigName("tailwindcss");
1306
1302
  const files$1 = [
1307
1303
  GLOB_SRC,
@@ -1309,40 +1305,41 @@ const files$1 = [
1309
1305
  GLOB_POSTCSS,
1310
1306
  GLOB_HTML
1311
1307
  ];
1312
- function tailwindcss() {
1308
+ function tailwindcss(options = {}) {
1313
1309
  return [{
1314
1310
  name: name$2.setup,
1315
1311
  files: files$1,
1316
- plugins: { tailwindcss: plugins_default["pluginTailwindCSS"] },
1317
- settings: { tailwindcss: { callees: [
1318
- "classnames",
1319
- "clsx",
1320
- "ctl",
1321
- "cva",
1322
- "cn",
1323
- "tv"
1324
- ] } }
1312
+ plugins: { "better-tailwindcss": pluginBetterTailwindCSS },
1313
+ settings: { "better-tailwindcss": { ...options } }
1325
1314
  }, {
1326
1315
  name: name$2.rules,
1327
1316
  files: files$1,
1328
1317
  rules: {
1329
- "tailwindcss/classnames-order": "error",
1330
- "tailwindcss/enforces-negative-arbitrary-values": "error",
1331
- "tailwindcss/enforces-shorthand": "warn",
1332
- "tailwindcss/no-arbitrary-value": "off",
1333
- "tailwindcss/no-custom-classname": "warn",
1334
- "tailwindcss/no-contradicting-classname": "error",
1335
- "tailwindcss/no-unnecessary-arbitrary-value": "error"
1318
+ "better-tailwindcss/enforce-consistent-class-order": "error",
1319
+ "better-tailwindcss/enforce-consistent-variable-syntax": ["error", { syntax: "variable" }],
1320
+ "better-tailwindcss/enforce-consistent-important-position": "error",
1321
+ "better-tailwindcss/enforce-shorthand-classes": "error",
1322
+ "better-tailwindcss/no-duplicate-classes": "error",
1323
+ "better-tailwindcss/no-deprecated-classes": "error",
1324
+ "better-tailwindcss/no-unnecessary-whitespace": "error",
1325
+ "better-tailwindcss/no-unregistered-classes": "error",
1326
+ "better-tailwindcss/no-conflicting-classes": "error"
1336
1327
  }
1337
1328
  }];
1338
1329
  }
1339
1330
 
1340
1331
  //#endregion
1341
1332
  //#region src/configs/typescript.ts
1333
+ const reactPlugins = eslintPluginReact.configs.all.plugins;
1334
+ const pluginAntfu = memo(eslintPluginAntfu, "eslint-plugin-antfu");
1335
+ const pluginImportX = memo(eslintPluginImportX, "eslint-plugin-import-x");
1336
+ const pluginReact = memo(reactPlugins["@eslint-react"], "eslint-plugin-react-x");
1337
+ const pluginReactDom = memo(reactPlugins["@eslint-react/dom"], "eslint-plugin-react-dom");
1338
+ const pluginTypescript = memo(plugin, "typescript-eslint");
1342
1339
  const name$1 = getFlatConfigName("typescript");
1343
- const typescriptStrictTypeCheckedRuleList = configs$1.strictTypeChecked.map((config$1) => config$1.rules);
1340
+ const typescriptStrictTypeCheckedRuleList = configs.strictTypeChecked.map((config$1) => config$1.rules);
1344
1341
  const typescriptStrictTypeCheckedRules = Object.assign({}, ...typescriptStrictTypeCheckedRuleList);
1345
- const typescriptStylisticTypeCheckedRuleList = configs$1.stylisticTypeChecked.map((config$1) => config$1.rules);
1342
+ const typescriptStylisticTypeCheckedRuleList = configs.stylisticTypeChecked.map((config$1) => config$1.rules);
1346
1343
  const typescriptStylisticTypeCheckedRules = Object.assign({}, ...typescriptStylisticTypeCheckedRuleList);
1347
1344
  const externalModuleFolders = ["node_modules", "node_modules/@types"];
1348
1345
  function typescript(options = {}) {
@@ -1370,9 +1367,9 @@ function typescript(options = {}) {
1370
1367
  name: name$1.setup,
1371
1368
  files: files$7,
1372
1369
  plugins: {
1373
- "import-x": plugins_default["pluginImportX"],
1374
- "@typescript-eslint": plugins_default["pluginTypescript"],
1375
- antfu: plugins_default["pluginAntfu"]
1370
+ "import-x": pluginImportX,
1371
+ "@typescript-eslint": pluginTypescript,
1372
+ antfu: pluginAntfu
1376
1373
  },
1377
1374
  languageOptions: {
1378
1375
  sourceType: "module",
@@ -1408,7 +1405,7 @@ function typescript(options = {}) {
1408
1405
  name: name$1.rules,
1409
1406
  files: files$7,
1410
1407
  rules: {
1411
- ...configs.typescript.rules,
1408
+ ...configs$1.typescript.rules,
1412
1409
  ...typescriptStrictTypeCheckedRules,
1413
1410
  ...typescriptStylisticTypeCheckedRules,
1414
1411
  "@typescript-eslint/ban-ts-comment": ["error", {
@@ -1451,8 +1448,8 @@ function typescript(options = {}) {
1451
1448
  name: `${name$1.base}/react-type-checked`,
1452
1449
  files: files$7,
1453
1450
  plugins: {
1454
- "@eslint-react": plugins_default["pluginReact"],
1455
- "@eslint-react/dom": plugins_default["pluginReactDom"]
1451
+ "@eslint-react": pluginReact,
1452
+ "@eslint-react/dom": pluginReactDom
1456
1453
  },
1457
1454
  rules: reactTypeCheck ? {
1458
1455
  "@typescript-eslint/no-misused-promises": ["error", { checksVoidReturn: { attributes: false } }],
@@ -1472,6 +1469,7 @@ function typescript(options = {}) {
1472
1469
 
1473
1470
  //#endregion
1474
1471
  //#region src/configs/unicorn.ts
1472
+ const pluginUnicorn = memo(eslintPluginUnicorn, "eslint-plugin-unicorn");
1475
1473
  const name = getFlatConfigName("unicorn");
1476
1474
  const files = [GLOB_SRC];
1477
1475
  const allFiles = [...GLOB_ALL_SRC];
@@ -1480,7 +1478,7 @@ function unicorn() {
1480
1478
  {
1481
1479
  name: `${name.setup}/all-src`,
1482
1480
  files: allFiles,
1483
- plugins: { unicorn: plugins_default["pluginUnicorn"] }
1481
+ plugins: { unicorn: pluginUnicorn }
1484
1482
  },
1485
1483
  {
1486
1484
  name: `${name.setup}/src`,
@@ -1503,7 +1501,7 @@ function unicorn() {
1503
1501
  {
1504
1502
  name: `${name.rules}/src`,
1505
1503
  files,
1506
- rules: { ...pluginUnicorn.configs["flat/recommended"].rules }
1504
+ rules: { ...pluginUnicorn.configs.recommended.rules }
1507
1505
  }
1508
1506
  ];
1509
1507
  }
@@ -1550,7 +1548,7 @@ async function config(options, ...userConfigs) {
1550
1548
  if (enableReact) configs$2.push(jsx(), react(configOptions(options?.react, { reactCompiler: isPackageExists("babel-plugin-react-compiler") || isPackageExists("react-compiler-webpack") })));
1551
1549
  if (enabled(options?.react, isPackageExists("next"))) configs$2.push(nextJs());
1552
1550
  if (enabled(options?.node, isPackageExists("@types/node"))) configs$2.push(nodeJs(configOptions(options?.node)));
1553
- if (enabled(void 0, isPackageExists("tailwindcss"))) configs$2.push(tailwindcss());
1551
+ if (enabled(options?.tailwindcss, isPackageExists("tailwindcss"))) configs$2.push(tailwindcss(configOptions(options?.tailwindcss)));
1554
1552
  configs$2.push(regexp(), unicorn(), disables());
1555
1553
  if (enabled(options?.format, isPackageExists("dprint"))) {
1556
1554
  const jsonOptions = configOptions(options?.json);