@biscuittin/eslint-config 0.0.4 → 0.0.6

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
@@ -17,7 +17,6 @@ var pluginNode = require('eslint-plugin-n');
17
17
  var pluginPerfectionist = require('eslint-plugin-perfectionist');
18
18
  var pluginReactCompiler = require('eslint-plugin-react-compiler');
19
19
  var pluginReactHooks = require('eslint-plugin-react-hooks');
20
- var pluginReactPreferFunctionComponent = require('eslint-plugin-react-prefer-function-component');
21
20
  var pluginReactRefresh = require('eslint-plugin-react-refresh');
22
21
  var pluginRegexp = require('eslint-plugin-regexp');
23
22
  var pluginTailwindCSS = require('eslint-plugin-tailwindcss');
@@ -32,6 +31,7 @@ var fsp = require('node:fs/promises');
32
31
  var parserJsonc = require('jsonc-eslint-parser');
33
32
  var gitignore = require('eslint-config-flat-gitignore');
34
33
  var js = require('@eslint/js');
34
+ var nodeResolver_js = require('eslint-plugin-import-x/node-resolver.js');
35
35
  var globals = require('globals');
36
36
  var eslintImportResolverTypescript = require('eslint-import-resolver-typescript');
37
37
  var eslintFlatConfigUtils = require('eslint-flat-config-utils');
@@ -70,8 +70,7 @@ var pluginJsonc__default = /*#__PURE__*/_interopDefault(pluginJsonc);
70
70
  var pluginNode__default = /*#__PURE__*/_interopDefault(pluginNode);
71
71
  var pluginPerfectionist__default = /*#__PURE__*/_interopDefault(pluginPerfectionist);
72
72
  var pluginReactCompiler__namespace = /*#__PURE__*/_interopNamespace(pluginReactCompiler);
73
- var pluginReactHooks__default = /*#__PURE__*/_interopDefault(pluginReactHooks);
74
- var pluginReactPreferFunctionComponent__default = /*#__PURE__*/_interopDefault(pluginReactPreferFunctionComponent);
73
+ var pluginReactHooks__namespace = /*#__PURE__*/_interopNamespace(pluginReactHooks);
75
74
  var pluginReactRefresh__default = /*#__PURE__*/_interopDefault(pluginReactRefresh);
76
75
  var pluginRegexp__namespace = /*#__PURE__*/_interopNamespace(pluginRegexp);
77
76
  var pluginTailwindCSS__default = /*#__PURE__*/_interopDefault(pluginTailwindCSS);
@@ -81,7 +80,7 @@ var fs__default = /*#__PURE__*/_interopDefault(fs);
81
80
  var path__default = /*#__PURE__*/_interopDefault(path);
82
81
  var process__default = /*#__PURE__*/_interopDefault(process);
83
82
  var fsp__default = /*#__PURE__*/_interopDefault(fsp);
84
- var parserJsonc__default = /*#__PURE__*/_interopDefault(parserJsonc);
83
+ var parserJsonc__namespace = /*#__PURE__*/_interopNamespace(parserJsonc);
85
84
  var gitignore__default = /*#__PURE__*/_interopDefault(gitignore);
86
85
  var js__default = /*#__PURE__*/_interopDefault(js);
87
86
  var globals__default = /*#__PURE__*/_interopDefault(globals);
@@ -201,12 +200,12 @@ async function loadLocalFile(name, cwd = process__default.default.cwd()) {
201
200
  function memo(function_, key) {
202
201
  var _a;
203
202
  let _key = key;
204
- if (_key === undefined || !_key) {
203
+ if (_key === void 0 || !_key) {
205
204
  if (typeof function_.toString !== "function") throw new TypeError("memo() requires a key!");
206
205
  _key = function_.toString();
207
206
  }
208
207
  globalThis.__ESLINT_PLUGIN_MEMO__ ?? (globalThis.__ESLINT_PLUGIN_MEMO__ = {});
209
- (_a = globalThis.__ESLINT_PLUGIN_MEMO__)[_key] || (_a[_key] = function_);
208
+ (_a = globalThis.__ESLINT_PLUGIN_MEMO__)[_key] ?? (_a[_key] = function_);
210
209
  return globalThis.__ESLINT_PLUGIN_MEMO__[_key];
211
210
  }
212
211
 
@@ -242,7 +241,7 @@ const plugins = {
242
241
  reactPlugins["@eslint-react/dom"],
243
242
  "eslint-plugin-react-dom"
244
243
  ),
245
- pluginReactHooks: memo(pluginReactHooks__default.default, "eslint-plugin-react-hooks"),
244
+ pluginReactHooks: memo(pluginReactHooks__namespace, "eslint-plugin-react-hooks"),
246
245
  pluginReactHooksExtra: memo(
247
246
  reactPlugins["@eslint-react/hooks-extra"],
248
247
  "eslint-plugin-react-hooks-extra"
@@ -251,10 +250,6 @@ const plugins = {
251
250
  reactPlugins["@eslint-react/naming-convention"],
252
251
  "eslint-plugin-react-naming-convention"
253
252
  ),
254
- pluginReactPreferFunctionComponent: memo(
255
- pluginReactPreferFunctionComponent__default.default,
256
- "eslint-plugin-react-prefer-function-component"
257
- ),
258
253
  pluginReactRefresh: memo(pluginReactRefresh__default.default, "eslint-plugin-react-refresh"),
259
254
  pluginReactWebApi: memo(
260
255
  reactPlugins["@eslint-react/web-api"],
@@ -424,7 +419,7 @@ function disables() {
424
419
  }
425
420
 
426
421
  const parsers = {
427
- parserJsonc: parserJsonc__default.default,
422
+ parserJsonc: parserJsonc__namespace,
428
423
  parserPlain: pluginFormat__default.default.parserPlain,
429
424
  parserTypescript: typescriptEslint.parser
430
425
  };
@@ -612,10 +607,6 @@ function imports(options = {}) {
612
607
  "unused-imports": plugins["pluginUnusedImports"],
613
608
  antfu: plugins["pluginAntfu"],
614
609
  perfectionist: plugins["pluginPerfectionist"]
615
- },
616
- languageOptions: {
617
- sourceType: "module",
618
- ecmaVersion: "latest"
619
610
  }
620
611
  },
621
612
  {
@@ -677,9 +668,10 @@ function imports(options = {}) {
677
668
  }
678
669
 
679
670
  const name$9 = getFlatConfigName("javascript");
680
- const files$5 = [GLOB_SRC];
671
+ const files$5 = [GLOB_JS, GLOB_JSX];
681
672
  const commonjsGlobalsOffList = Object.keys(globals__default.default.commonjs).map((key) => ({ [key]: "off" }));
682
673
  const commonjsGlobalsOff = Object.assign({}, ...commonjsGlobalsOffList);
674
+ const extensions = [".js", ".jsx", ".cjs", ".mjs"];
683
675
  function javascript(options = {}) {
684
676
  const { env = { browser: true }, module = true } = options;
685
677
  const sourceType = module ? "module" : "commonjs";
@@ -715,7 +707,10 @@ function javascript(options = {}) {
715
707
  }
716
708
  },
717
709
  settings: {
718
- "import-x/extensions": [".js", ".jsx", ".cjs", ".mjs"]
710
+ "import-x/extensions": extensions,
711
+ "import-x/resolver-next": [
712
+ nodeResolver_js.createNodeResolver({ extensions })
713
+ ]
719
714
  }
720
715
  },
721
716
  {
@@ -1134,9 +1129,25 @@ function nextJs() {
1134
1129
 
1135
1130
  const name$5 = getFlatConfigName("node-js");
1136
1131
  const isModule = getPackageJson()?.type === "module";
1132
+ const globalsCommonJs = {
1133
+ ...globals__default.default.es2025,
1134
+ ...globals__default.default.node,
1135
+ ...globals__default.default.commonjs,
1136
+ __dirname: "readonly",
1137
+ __filename: "readonly"
1138
+ };
1139
+ const globalsModule = {
1140
+ ...globals__default.default.es2025,
1141
+ ...globals__default.default.node,
1142
+ __dirname: "off",
1143
+ __filename: "off",
1144
+ exports: "off",
1145
+ module: "off",
1146
+ require: "off"
1147
+ };
1137
1148
  function nodeJs(options = {}) {
1138
1149
  const { module = isModule, extraFiles = [] } = options;
1139
- const files = [GLOB_JS, ...extraFiles];
1150
+ const files = [GLOB_JS, GLOB_TS, ...extraFiles];
1140
1151
  return [
1141
1152
  {
1142
1153
  name: name$5.setup,
@@ -1145,27 +1156,11 @@ function nodeJs(options = {}) {
1145
1156
  node: plugins["pluginNode"]
1146
1157
  },
1147
1158
  languageOptions: {
1148
- sourceType: module ? "module" : "commonjs",
1149
1159
  ecmaVersion: "latest",
1150
1160
  parserOptions: {
1151
1161
  ecmaFeatures: {
1152
1162
  impliedStrict: true
1153
1163
  }
1154
- },
1155
- globals: {
1156
- ...globals__default.default.es2025,
1157
- ...globals__default.default.node,
1158
- ...module ? {
1159
- __dirname: "off",
1160
- __filename: "off",
1161
- exports: "off",
1162
- module: "off",
1163
- require: "off"
1164
- } : {
1165
- ...globals__default.default.commonjs,
1166
- __dirname: "readonly",
1167
- __filename: "readonly"
1168
- }
1169
1164
  }
1170
1165
  }
1171
1166
  },
@@ -1177,11 +1172,7 @@ function nodeJs(options = {}) {
1177
1172
  // pluginNode.configs.commons
1178
1173
  // Ref: https://github.com/eslint-community/eslint-plugin-n/blob/ccf5f9e482c32f2fd2d5f78649d7f837a5db8870/lib/configs/_commons.js#L6
1179
1174
  "node/no-deprecated-api": "error",
1180
- "node/no-extraneous-import": "error",
1181
- "node/no-extraneous-require": "error",
1182
1175
  "node/no-exports-assign": "error",
1183
- "node/no-missing-import": "error",
1184
- "node/no-missing-require": "error",
1185
1176
  "node/no-process-exit": "error",
1186
1177
  "node/no-unpublished-bin": "error",
1187
1178
  "node/no-unpublished-import": "error",
@@ -1191,6 +1182,11 @@ function nodeJs(options = {}) {
1191
1182
  "node/no-unsupported-features/node-builtins": "error",
1192
1183
  "node/process-exit-as-throw": "error",
1193
1184
  "node/hashbang": "error",
1185
+ // Will handled by `eslint-plugin-import-x`
1186
+ "node/no-extraneous-import": "off",
1187
+ "node/no-extraneous-require": "off",
1188
+ "node/no-missing-import": "off",
1189
+ "node/no-missing-require": "off",
1194
1190
  // Require error handling in callbacks
1195
1191
  "node/handle-callback-err": ["error", "^error$"],
1196
1192
  // Disallow `new` operators with calls to `require`
@@ -1211,21 +1207,54 @@ function nodeJs(options = {}) {
1211
1207
  }
1212
1208
  }
1213
1209
  },
1210
+ {
1211
+ name: name$5.script,
1212
+ files: ["**/*.[jt]s"],
1213
+ languageOptions: {
1214
+ sourceType: module ? "module" : "commonjs",
1215
+ parserOptions: {
1216
+ ecmaFeatures: {
1217
+ globalReturn: !module
1218
+ }
1219
+ },
1220
+ globals: {
1221
+ ...module ? globalsModule : globalsCommonJs
1222
+ }
1223
+ }
1224
+ },
1214
1225
  {
1215
1226
  name: name$5.commonjs,
1216
- files: ["*.c[jt]s", ".*.c[jt]s"],
1227
+ files: ["**/*.c[jt]s"],
1217
1228
  languageOptions: {
1218
1229
  sourceType: "commonjs",
1230
+ parserOptions: {
1231
+ ecmaFeatures: {
1232
+ globalReturn: true
1233
+ }
1234
+ },
1219
1235
  globals: {
1220
- ...globals__default.default.commonjs,
1221
- __dirname: "readonly",
1222
- __filename: "readonly"
1236
+ ...globalsCommonJs
1223
1237
  }
1224
1238
  },
1225
1239
  rules: {
1226
1240
  strict: ["error", "global"],
1227
1241
  "node/no-unsupported-features/es-syntax": ["error", { ignores: [] }]
1228
1242
  }
1243
+ },
1244
+ {
1245
+ name: name$5.module,
1246
+ files: ["**/*.m[jt]s"],
1247
+ languageOptions: {
1248
+ sourceType: "module",
1249
+ parserOptions: {
1250
+ ecmaFeatures: {
1251
+ globalReturn: false
1252
+ }
1253
+ },
1254
+ globals: {
1255
+ ...globalsModule
1256
+ }
1257
+ }
1229
1258
  }
1230
1259
  ];
1231
1260
  }
@@ -1242,7 +1271,6 @@ function react(options = {}) {
1242
1271
  "react-hooks": plugins["pluginReactHooks"],
1243
1272
  "react-compiler": plugins["pluginReactCompiler"],
1244
1273
  "react-refresh": plugins["pluginReactRefresh"],
1245
- "react-prefer-function-component": plugins["pluginReactPreferFunctionComponent"],
1246
1274
  "jsx-a11y": plugins["pluginJsxA11y"],
1247
1275
  "@stylistic/jsx": plugins["pluginStylisticJsx"],
1248
1276
  "@eslint-react": plugins["pluginReact"],
@@ -1254,12 +1282,17 @@ function react(options = {}) {
1254
1282
  },
1255
1283
  settings: {
1256
1284
  "react-x": {
1257
- additionalHooks: {
1258
- useLayoutEffect: ["useIsomorphicLayoutEffect"]
1259
- },
1285
+ importSource: "react",
1286
+ jsxPragma: "createElement",
1287
+ jsxPragmaFrag: "Fragment",
1260
1288
  polymorphicPropName: "as",
1289
+ strict: true,
1261
1290
  strictImportCheck: true,
1262
- version: "detect"
1291
+ version: "detect",
1292
+ additionalHooks: {
1293
+ useEffect: ["useIsomorphicLayoutEffect"],
1294
+ useLayoutEffect: ["useIsomorphicLayoutEffect"]
1295
+ }
1263
1296
  }
1264
1297
  }
1265
1298
  },
@@ -1277,9 +1310,6 @@ function react(options = {}) {
1277
1310
  // eslint-plugin-react-refresh
1278
1311
  // https://github.com/ArnaudBarre/eslint-plugin-react-refresh
1279
1312
  "react-refresh/only-export-components": "warn",
1280
- // eslint-plugin-react-prefer-function-component
1281
- // https://github.com/tatethurston/eslint-plugin-react-prefer-function-component
1282
- "react-prefer-function-component/react-prefer-function-component": "error",
1283
1313
  // @eslint-sukka/eslint-plugin-react-jsx-a11y
1284
1314
  // https://github.com/SukkaW/eslint-config-sukka/tree/master/packages/eslint-plugin-react-jsx-a11y
1285
1315
  // Copied from SukkaW/eslint-config-sukka
@@ -1299,6 +1329,7 @@ function react(options = {}) {
1299
1329
  ...pluginReact__default.default.configs.recommended.rules,
1300
1330
  "@eslint-react/ensure-forward-ref-using-ref": "error",
1301
1331
  "@eslint-react/no-duplicate-jsx-props": "error",
1332
+ "@eslint-react/no-duplicate-key": "error",
1302
1333
  "@eslint-react/no-children-count": "error",
1303
1334
  "@eslint-react/no-children-for-each": "error",
1304
1335
  "@eslint-react/no-children-only": "error",
@@ -1466,6 +1497,7 @@ const typescriptStylisticTypeCheckedRules = Object.assign(
1466
1497
  {},
1467
1498
  ...typescriptStylisticTypeCheckedRuleList
1468
1499
  );
1500
+ const externalModuleFolders = ["node_modules", "node_modules/@types"];
1469
1501
  function typescript(options = {}) {
1470
1502
  const {
1471
1503
  isInEditor = false,
@@ -1480,6 +1512,10 @@ function typescript(options = {}) {
1480
1512
  GLOB_TSX,
1481
1513
  ...extraFileExtensions.map((extension) => `**/*${extension}`)
1482
1514
  ];
1515
+ const extensions = [".cjs", ".mjs", ".cts", ".mts", ...eslintImportResolverTypescript.defaultExtensions, ...extraFileExtensions];
1516
+ if (process__default.default.versions["pnp"]) {
1517
+ externalModuleFolders.push(".yarn");
1518
+ }
1483
1519
  const tsProjectOptions = tsconfigPath === true ? {
1484
1520
  projectService: {
1485
1521
  allowDefaultProject,
@@ -1512,18 +1548,8 @@ function typescript(options = {}) {
1512
1548
  }
1513
1549
  },
1514
1550
  settings: {
1515
- "import-x/extensions": [
1516
- ".js",
1517
- ".jsx",
1518
- ".cjs",
1519
- ".mjs",
1520
- ".ts",
1521
- ".tsx",
1522
- ".cts",
1523
- ".mts",
1524
- ...extraFileExtensions
1525
- ],
1526
- "import-x/external-module-folders": ["node_modules", "node_modules/@types"],
1551
+ "import-x/extensions": extensions,
1552
+ "import-x/external-module-folders": externalModuleFolders,
1527
1553
  "import-x/parsers": {
1528
1554
  "@typescript-eslint/parser": [".ts", ".tsx", ".cts", ".mts", ...extraFileExtensions]
1529
1555
  },
@@ -1532,17 +1558,8 @@ function typescript(options = {}) {
1532
1558
  // https://github.com/import-js/eslint-import-resolver-typescript
1533
1559
  eslintImportResolverTypescript.createTypeScriptImportResolver({
1534
1560
  alwaysTryTypes: true,
1535
- project: tsconfigPath === true ? undefined : tsconfigPath,
1536
- extensions: [
1537
- ".ts",
1538
- ".tsx",
1539
- ".d.ts",
1540
- ".js",
1541
- ".jsx",
1542
- ".json",
1543
- ".node",
1544
- ...extraFileExtensions
1545
- ]
1561
+ project: tsconfigPath === true ? void 0 : tsconfigPath,
1562
+ extensions
1546
1563
  })
1547
1564
  ]
1548
1565
  }
@@ -1690,19 +1707,16 @@ function unicorn() {
1690
1707
 
1691
1708
  function enabled(options, defaults = false) {
1692
1709
  if (typeof options === "boolean") return options;
1693
- if (options === undefined) return defaults;
1710
+ if (options === void 0) return defaults;
1694
1711
  if (options.enable) return true;
1695
1712
  return defaults;
1696
1713
  }
1697
1714
  function configOptions(options, defaultOptions) {
1698
1715
  const isInEditor = isInEditorEnv();
1699
- if (options === undefined) return { isInEditor };
1716
+ if (options === void 0) return { isInEditor };
1700
1717
  if (typeof options === "boolean") return { isInEditor };
1701
1718
  return { ...defaultOptions, ...options, isInEditor };
1702
1719
  }
1703
- const pluginRenaming = {
1704
- "import-x": "import"
1705
- };
1706
1720
  async function config(options, ...userConfigs) {
1707
1721
  const configs = [];
1708
1722
  const enableTypeScript = enabled(options?.typescript, localPkg.isPackageExists("typescript"));
@@ -1737,7 +1751,7 @@ async function config(options, ...userConfigs) {
1737
1751
  if (enabled(options?.node, localPkg.isPackageExists("@types/node"))) {
1738
1752
  configs.push(nodeJs(configOptions(options?.node)));
1739
1753
  }
1740
- if (enabled(undefined, localPkg.isPackageExists("tailwindcss"))) {
1754
+ if (enabled(void 0, localPkg.isPackageExists("tailwindcss"))) {
1741
1755
  configs.push(tailwindcss());
1742
1756
  }
1743
1757
  configs.push(regexp(), unicorn(), disables());
@@ -1753,7 +1767,7 @@ async function config(options, ...userConfigs) {
1753
1767
  }
1754
1768
  let composer = new eslintFlatConfigUtils.FlatConfigComposer(...configs);
1755
1769
  const _userConfigs = userConfigs;
1756
- composer = composer.append(..._userConfigs).renamePlugins(pluginRenaming);
1770
+ composer = composer.append(..._userConfigs);
1757
1771
  return composer;
1758
1772
  }
1759
1773