@alextheman/eslint-plugin 5.17.0 → 5.18.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.
Files changed (3) hide show
  1. package/dist/index.cjs +48 -44
  2. package/dist/index.js +46 -43
  3. package/package.json +23 -21
package/dist/index.cjs CHANGED
@@ -30,6 +30,8 @@ let _typescript_eslint_utils = require("@typescript-eslint/utils");
30
30
  let zod = require("zod");
31
31
  zod = __toESM(zod, 1);
32
32
  let _alextheman_utility_v6 = require("@alextheman/utility/v6");
33
+ let _eslint_community_eslint_plugin_eslint_comments_configs = require("@eslint-community/eslint-plugin-eslint-comments/configs");
34
+ _eslint_community_eslint_plugin_eslint_comments_configs = __toESM(_eslint_community_eslint_plugin_eslint_comments_configs, 1);
33
35
  let _eslint_js = require("@eslint/js");
34
36
  _eslint_js = __toESM(_eslint_js, 1);
35
37
  let eslint_config_prettier = require("eslint-config-prettier");
@@ -44,8 +46,6 @@ let eslint_plugin_perfectionist = require("eslint-plugin-perfectionist");
44
46
  eslint_plugin_perfectionist = __toESM(eslint_plugin_perfectionist, 1);
45
47
  let eslint_plugin_prettier = require("eslint-plugin-prettier");
46
48
  eslint_plugin_prettier = __toESM(eslint_plugin_prettier, 1);
47
- let typescript_eslint = require("typescript-eslint");
48
- typescript_eslint = __toESM(typescript_eslint, 1);
49
49
  let _eslint_react_eslint_plugin = require("@eslint-react/eslint-plugin");
50
50
  _eslint_react_eslint_plugin = __toESM(_eslint_react_eslint_plugin, 1);
51
51
  let _stylistic_eslint_plugin = require("@stylistic/eslint-plugin");
@@ -58,6 +58,8 @@ let eslint_plugin_react_hooks = require("eslint-plugin-react-hooks");
58
58
  eslint_plugin_react_hooks = __toESM(eslint_plugin_react_hooks, 1);
59
59
  let eslint_plugin_package_json = require("eslint-plugin-package-json");
60
60
  eslint_plugin_package_json = __toESM(eslint_plugin_package_json, 1);
61
+ let typescript_eslint = require("typescript-eslint");
62
+ typescript_eslint = __toESM(typescript_eslint, 1);
61
63
  let eslint_plugin_jsdoc = require("eslint-plugin-jsdoc");
62
64
  eslint_plugin_jsdoc = __toESM(eslint_plugin_jsdoc, 1);
63
65
  let _alextheman_utility_node = require("@alextheman/utility/node");
@@ -4423,6 +4425,7 @@ const unusedVarsIgnorePatterns = {
4423
4425
  const generalJavaScript = [
4424
4426
  _eslint_js.default.configs.recommended,
4425
4427
  eslint_config_prettier.default,
4428
+ _eslint_community_eslint_plugin_eslint_comments_configs.default.recommended,
4426
4429
  eslint_plugin_n.default.configs["flat/recommended"],
4427
4430
  {
4428
4431
  files: [
@@ -4439,6 +4442,7 @@ const generalJavaScript = [
4439
4442
  n: eslint_plugin_n.default
4440
4443
  },
4441
4444
  rules: {
4445
+ "@eslint-community/eslint-comments/require-description": "error",
4442
4446
  eqeqeq: "error",
4443
4447
  "import-x/no-duplicates": ["error", { "prefer-inline": false }],
4444
4448
  "import-x/no-unresolved": "error",
@@ -4485,38 +4489,6 @@ const generalJavaScript = [
4485
4489
  //#region src/configs/external/prettierConfig.ts
4486
4490
  const prettierConfig = { printWidth: 100 };
4487
4491
  //#endregion
4488
- //#region src/configs/helpers/reactLanguageOptions.ts
4489
- const reactLanguageOptions = {
4490
- ecmaVersion: 2020,
4491
- globals: import_globals.default.browser,
4492
- parserOptions: { ecmaFeatures: { jsx: true } }
4493
- };
4494
- //#endregion
4495
- //#region src/configs/helpers/typeScriptLanguageOptions.ts
4496
- const typeScriptLanguageOptions = {
4497
- parser: typescript_eslint.default.parser,
4498
- parserOptions: {
4499
- ecmaVersion: "latest",
4500
- projectService: true,
4501
- sourceType: "module",
4502
- tsconfigRootDir: process.cwd()
4503
- }
4504
- };
4505
- //#endregion
4506
- //#region src/configs/helpers/restrictedImports/personalRestrictedImports.ts
4507
- const personalRestrictedImports = combineRestrictedImports(generalRestrictedImports, { paths: [...["fs", "node:fs"].map((name) => {
4508
- return {
4509
- message: "Please use node:fs/promises instead.",
4510
- name
4511
- };
4512
- })] });
4513
- //#endregion
4514
- //#region src/configs/helpers/restrictedImports/reactRestrictedImports.ts
4515
- const reactRestrictedImports = combineRestrictedImports(generalRestrictedImports, { patterns: [{
4516
- message: "Please use `import Component from \"@mui/[package]/Component\"` instead. See https://mui.com/material-ui/guides/minimizing-bundle-size/ for more information.",
4517
- regex: "^@mui/[^/]+$"
4518
- }] });
4519
- //#endregion
4520
4492
  //#region src/configs/helpers/sorting/sortClasses.ts
4521
4493
  const sortClasses = {
4522
4494
  customGroups: [],
@@ -4616,6 +4588,14 @@ const sortObjects = {
4616
4588
  useConfigurationIf: {}
4617
4589
  };
4618
4590
  //#endregion
4591
+ //#region src/configs/helpers/restrictedImports/personalRestrictedImports.ts
4592
+ const personalRestrictedImports = combineRestrictedImports(generalRestrictedImports, { paths: [...["fs", "node:fs"].map((name) => {
4593
+ return {
4594
+ message: "Please use node:fs/promises instead.",
4595
+ name
4596
+ };
4597
+ })] });
4598
+ //#endregion
4619
4599
  //#region src/configs/helpers/sorting/sortNamedImports.ts
4620
4600
  const sortNamedImports = {
4621
4601
  fallbackSort: { type: "unsorted" },
@@ -4698,6 +4678,13 @@ const reactHooks = {
4698
4678
  }
4699
4679
  };
4700
4680
  //#endregion
4681
+ //#region src/configs/helpers/reactLanguageOptions.ts
4682
+ const reactLanguageOptions = {
4683
+ ecmaVersion: 2020,
4684
+ globals: import_globals.default.browser,
4685
+ parserOptions: { ecmaFeatures: { jsx: true } }
4686
+ };
4687
+ //#endregion
4701
4688
  //#region src/configs/general/react.ts
4702
4689
  const generalReact = [eslint_plugin_jsx_a11y_x.default.configs.recommended, {
4703
4690
  languageOptions: reactLanguageOptions,
@@ -4727,6 +4714,12 @@ const generalReact = [eslint_plugin_jsx_a11y_x.default.configs.recommended, {
4727
4714
  settings: { react: { version: "detect" } }
4728
4715
  }];
4729
4716
  //#endregion
4717
+ //#region src/configs/helpers/restrictedImports/reactRestrictedImports.ts
4718
+ const reactRestrictedImports = combineRestrictedImports(generalRestrictedImports, { patterns: [{
4719
+ message: "Please use `import Component from \"@mui/[package]/Component\"` instead. See https://mui.com/material-ui/guides/minimizing-bundle-size/ for more information.",
4720
+ regex: "^@mui/[^/]+$"
4721
+ }] });
4722
+ //#endregion
4730
4723
  //#region src/configs/internal/react.ts
4731
4724
  const internalReact = [{
4732
4725
  languageOptions: reactLanguageOptions,
@@ -4765,6 +4758,17 @@ const generalPackageJson = [eslint_plugin_package_json.default.configs.recommend
4765
4758
  rules: { "package-json/scripts-name-casing": "error" }
4766
4759
  }];
4767
4760
  //#endregion
4761
+ //#region src/configs/helpers/typeScriptLanguageOptions.ts
4762
+ const typeScriptLanguageOptions = {
4763
+ parser: typescript_eslint.default.parser,
4764
+ parserOptions: {
4765
+ ecmaVersion: "latest",
4766
+ projectService: true,
4767
+ sourceType: "module",
4768
+ tsconfigRootDir: process.cwd()
4769
+ }
4770
+ };
4771
+ //#endregion
4768
4772
  //#region src/configs/general/typeScript.ts
4769
4773
  const generalTypeScript = [
4770
4774
  ...typescript_eslint.default.configs.recommended,
@@ -5012,15 +5016,6 @@ function internalEslintPluginRules(plugin) {
5012
5016
  }];
5013
5017
  }
5014
5018
  //#endregion
5015
- //#region src/configs/internal/eslintPlugin/utility.ts
5016
- function internalEslintPluginUtility(plugin) {
5017
- return [...internalEslintPluginBase(plugin), {
5018
- files: ["**/*.ts"],
5019
- name: "@alextheman/internal/eslint-plugin-utility",
5020
- rules: { "jsdoc/require-jsdoc": ["error", requireJsdocOptions] }
5021
- }];
5022
- }
5023
- //#endregion
5024
5019
  //#region src/configs/internal/utility/base.ts
5025
5020
  function internalUtilityBase(plugin) {
5026
5021
  return [...combinedTypeScriptPackage(plugin), {
@@ -5078,6 +5073,15 @@ function combinedTypeScriptReact(plugin) {
5078
5073
  ];
5079
5074
  }
5080
5075
  //#endregion
5076
+ //#region src/configs/internal/eslintPlugin/utility.ts
5077
+ function internalEslintPluginUtility(plugin) {
5078
+ return [...internalEslintPluginBase(plugin), {
5079
+ files: ["**/*.ts"],
5080
+ name: "@alextheman/internal/eslint-plugin-utility",
5081
+ rules: { "jsdoc/require-jsdoc": ["error", requireJsdocOptions] }
5082
+ }];
5083
+ }
5084
+ //#endregion
5081
5085
  //#region src/configs/internal/packageJson.ts
5082
5086
  const internalPackageJson = [...generalPackageJson, {
5083
5087
  files: ["**/package.json"],
@@ -5516,7 +5520,7 @@ function parseUseObjectShorthandOptions(data) {
5516
5520
  const alexPlugin = {
5517
5521
  meta: {
5518
5522
  name: "@alextheman/eslint-plugin",
5519
- version: "5.17.0",
5523
+ version: "5.18.0",
5520
5524
  namespace: "alextheman"
5521
5525
  },
5522
5526
  configs: {},
package/dist/index.js CHANGED
@@ -2,6 +2,7 @@ import { az, camelToKebab, deepCopy, deepFreeze, normaliseIndents, omitPropertie
2
2
  import { AST_NODE_TYPES, ESLintUtils } from "@typescript-eslint/utils";
3
3
  import z from "zod";
4
4
  import { DataError } from "@alextheman/utility/v6";
5
+ import comments from "@eslint-community/eslint-plugin-eslint-comments/configs";
5
6
  import js from "@eslint/js";
6
7
  import prettierConfig$1 from "eslint-config-prettier";
7
8
  import * as tsResolver from "eslint-import-resolver-typescript";
@@ -9,13 +10,13 @@ import importPlugin from "eslint-plugin-import-x";
9
10
  import nodePlugin from "eslint-plugin-n";
10
11
  import perfectionist from "eslint-plugin-perfectionist";
11
12
  import prettierPlugin from "eslint-plugin-prettier";
12
- import tseslint from "typescript-eslint";
13
13
  import reactPlugin from "@eslint-react/eslint-plugin";
14
14
  import stylistic from "@stylistic/eslint-plugin";
15
15
  import jsxA11y from "eslint-plugin-jsx-a11y-x";
16
16
  import reactRefresh from "eslint-plugin-react-refresh";
17
17
  import reactHooksPlugin from "eslint-plugin-react-hooks";
18
18
  import packageJson from "eslint-plugin-package-json";
19
+ import tseslint from "typescript-eslint";
19
20
  import jsdoc from "eslint-plugin-jsdoc";
20
21
  import { normalizeImportPath } from "@alextheman/utility/node";
21
22
  //#region \0rolldown/runtime.js
@@ -4403,6 +4404,7 @@ const unusedVarsIgnorePatterns = {
4403
4404
  const generalJavaScript = [
4404
4405
  js.configs.recommended,
4405
4406
  prettierConfig$1,
4407
+ comments.recommended,
4406
4408
  nodePlugin.configs["flat/recommended"],
4407
4409
  {
4408
4410
  files: [
@@ -4419,6 +4421,7 @@ const generalJavaScript = [
4419
4421
  n: nodePlugin
4420
4422
  },
4421
4423
  rules: {
4424
+ "@eslint-community/eslint-comments/require-description": "error",
4422
4425
  eqeqeq: "error",
4423
4426
  "import-x/no-duplicates": ["error", { "prefer-inline": false }],
4424
4427
  "import-x/no-unresolved": "error",
@@ -4465,38 +4468,6 @@ const generalJavaScript = [
4465
4468
  //#region src/configs/external/prettierConfig.ts
4466
4469
  const prettierConfig = { printWidth: 100 };
4467
4470
  //#endregion
4468
- //#region src/configs/helpers/reactLanguageOptions.ts
4469
- const reactLanguageOptions = {
4470
- ecmaVersion: 2020,
4471
- globals: import_globals.default.browser,
4472
- parserOptions: { ecmaFeatures: { jsx: true } }
4473
- };
4474
- //#endregion
4475
- //#region src/configs/helpers/typeScriptLanguageOptions.ts
4476
- const typeScriptLanguageOptions = {
4477
- parser: tseslint.parser,
4478
- parserOptions: {
4479
- ecmaVersion: "latest",
4480
- projectService: true,
4481
- sourceType: "module",
4482
- tsconfigRootDir: process.cwd()
4483
- }
4484
- };
4485
- //#endregion
4486
- //#region src/configs/helpers/restrictedImports/personalRestrictedImports.ts
4487
- const personalRestrictedImports = combineRestrictedImports(generalRestrictedImports, { paths: [...["fs", "node:fs"].map((name) => {
4488
- return {
4489
- message: "Please use node:fs/promises instead.",
4490
- name
4491
- };
4492
- })] });
4493
- //#endregion
4494
- //#region src/configs/helpers/restrictedImports/reactRestrictedImports.ts
4495
- const reactRestrictedImports = combineRestrictedImports(generalRestrictedImports, { patterns: [{
4496
- message: "Please use `import Component from \"@mui/[package]/Component\"` instead. See https://mui.com/material-ui/guides/minimizing-bundle-size/ for more information.",
4497
- regex: "^@mui/[^/]+$"
4498
- }] });
4499
- //#endregion
4500
4471
  //#region src/configs/helpers/sorting/sortClasses.ts
4501
4472
  const sortClasses = {
4502
4473
  customGroups: [],
@@ -4596,6 +4567,14 @@ const sortObjects = {
4596
4567
  useConfigurationIf: {}
4597
4568
  };
4598
4569
  //#endregion
4570
+ //#region src/configs/helpers/restrictedImports/personalRestrictedImports.ts
4571
+ const personalRestrictedImports = combineRestrictedImports(generalRestrictedImports, { paths: [...["fs", "node:fs"].map((name) => {
4572
+ return {
4573
+ message: "Please use node:fs/promises instead.",
4574
+ name
4575
+ };
4576
+ })] });
4577
+ //#endregion
4599
4578
  //#region src/configs/helpers/sorting/sortNamedImports.ts
4600
4579
  const sortNamedImports = {
4601
4580
  fallbackSort: { type: "unsorted" },
@@ -4678,6 +4657,13 @@ const reactHooks = {
4678
4657
  }
4679
4658
  };
4680
4659
  //#endregion
4660
+ //#region src/configs/helpers/reactLanguageOptions.ts
4661
+ const reactLanguageOptions = {
4662
+ ecmaVersion: 2020,
4663
+ globals: import_globals.default.browser,
4664
+ parserOptions: { ecmaFeatures: { jsx: true } }
4665
+ };
4666
+ //#endregion
4681
4667
  //#region src/configs/general/react.ts
4682
4668
  const generalReact = [jsxA11y.configs.recommended, {
4683
4669
  languageOptions: reactLanguageOptions,
@@ -4707,6 +4693,12 @@ const generalReact = [jsxA11y.configs.recommended, {
4707
4693
  settings: { react: { version: "detect" } }
4708
4694
  }];
4709
4695
  //#endregion
4696
+ //#region src/configs/helpers/restrictedImports/reactRestrictedImports.ts
4697
+ const reactRestrictedImports = combineRestrictedImports(generalRestrictedImports, { patterns: [{
4698
+ message: "Please use `import Component from \"@mui/[package]/Component\"` instead. See https://mui.com/material-ui/guides/minimizing-bundle-size/ for more information.",
4699
+ regex: "^@mui/[^/]+$"
4700
+ }] });
4701
+ //#endregion
4710
4702
  //#region src/configs/internal/react.ts
4711
4703
  const internalReact = [{
4712
4704
  languageOptions: reactLanguageOptions,
@@ -4745,6 +4737,17 @@ const generalPackageJson = [packageJson.configs.recommended, {
4745
4737
  rules: { "package-json/scripts-name-casing": "error" }
4746
4738
  }];
4747
4739
  //#endregion
4740
+ //#region src/configs/helpers/typeScriptLanguageOptions.ts
4741
+ const typeScriptLanguageOptions = {
4742
+ parser: tseslint.parser,
4743
+ parserOptions: {
4744
+ ecmaVersion: "latest",
4745
+ projectService: true,
4746
+ sourceType: "module",
4747
+ tsconfigRootDir: process.cwd()
4748
+ }
4749
+ };
4750
+ //#endregion
4748
4751
  //#region src/configs/general/typeScript.ts
4749
4752
  const generalTypeScript = [
4750
4753
  ...tseslint.configs.recommended,
@@ -4992,15 +4995,6 @@ function internalEslintPluginRules(plugin) {
4992
4995
  }];
4993
4996
  }
4994
4997
  //#endregion
4995
- //#region src/configs/internal/eslintPlugin/utility.ts
4996
- function internalEslintPluginUtility(plugin) {
4997
- return [...internalEslintPluginBase(plugin), {
4998
- files: ["**/*.ts"],
4999
- name: "@alextheman/internal/eslint-plugin-utility",
5000
- rules: { "jsdoc/require-jsdoc": ["error", requireJsdocOptions] }
5001
- }];
5002
- }
5003
- //#endregion
5004
4998
  //#region src/configs/internal/utility/base.ts
5005
4999
  function internalUtilityBase(plugin) {
5006
5000
  return [...combinedTypeScriptPackage(plugin), {
@@ -5058,6 +5052,15 @@ function combinedTypeScriptReact(plugin) {
5058
5052
  ];
5059
5053
  }
5060
5054
  //#endregion
5055
+ //#region src/configs/internal/eslintPlugin/utility.ts
5056
+ function internalEslintPluginUtility(plugin) {
5057
+ return [...internalEslintPluginBase(plugin), {
5058
+ files: ["**/*.ts"],
5059
+ name: "@alextheman/internal/eslint-plugin-utility",
5060
+ rules: { "jsdoc/require-jsdoc": ["error", requireJsdocOptions] }
5061
+ }];
5062
+ }
5063
+ //#endregion
5061
5064
  //#region src/configs/internal/packageJson.ts
5062
5065
  const internalPackageJson = [...generalPackageJson, {
5063
5066
  files: ["**/package.json"],
@@ -5496,7 +5499,7 @@ function parseUseObjectShorthandOptions(data) {
5496
5499
  const alexPlugin = {
5497
5500
  meta: {
5498
5501
  name: "@alextheman/eslint-plugin",
5499
- version: "5.17.0",
5502
+ version: "5.18.0",
5500
5503
  namespace: "alextheman"
5501
5504
  },
5502
5505
  configs: {},
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@alextheman/eslint-plugin",
3
- "version": "5.17.0",
3
+ "version": "5.18.0",
4
4
  "description": "A package to provide custom ESLint rules and configs.",
5
5
  "repository": {
6
6
  "type": "git",
@@ -37,37 +37,38 @@
37
37
  "node": ">=22.3.0"
38
38
  },
39
39
  "dependencies": {
40
- "@alextheman/utility": "5.19.1",
40
+ "@alextheman/utility": "5.23.0",
41
41
  "@eslint/compat": "2.1.0",
42
- "@typescript-eslint/types": "8.60.0",
43
- "@typescript-eslint/utils": "8.60.0",
42
+ "@typescript-eslint/types": "8.61.1",
43
+ "@typescript-eslint/utils": "8.61.1",
44
44
  "common-tags": "1.8.2",
45
- "prettier": "3.8.3",
45
+ "prettier": "3.8.4",
46
46
  "zod": "4.4.3"
47
47
  },
48
48
  "devDependencies": {
49
- "@eslint-react/eslint-plugin": "5.8.6",
49
+ "@eslint-community/eslint-plugin-eslint-comments": "4.7.2",
50
+ "@eslint-react/eslint-plugin": "5.9.0",
50
51
  "@eslint/js": "10.0.1",
51
52
  "@stylistic/eslint-plugin": "5.10.0",
52
53
  "@types/common-tags": "1.8.4",
53
54
  "@types/eslint": "9.6.1",
54
55
  "@types/eslint-plugin-jsx-a11y": "6.10.1",
55
- "@types/node": "25.9.1",
56
- "@typescript-eslint/rule-tester": "8.60.0",
57
- "alex-c-line": "2.8.1",
56
+ "@types/node": "25.9.3",
57
+ "@typescript-eslint/rule-tester": "8.61.1",
58
+ "alex-c-line": "2.10.3",
58
59
  "dotenv-cli": "11.0.0",
59
- "eslint": "10.4.0",
60
+ "eslint": "10.5.0",
60
61
  "eslint-config-prettier": "10.1.8",
61
- "eslint-import-resolver-typescript": "4.4.4",
62
+ "eslint-import-resolver-typescript": "4.4.5",
62
63
  "eslint-plugin-import-x": "4.16.2",
63
- "eslint-plugin-jsdoc": "63.0.0",
64
+ "eslint-plugin-jsdoc": "63.0.6",
64
65
  "eslint-plugin-jsx-a11y-x": "0.2.0",
65
- "eslint-plugin-n": "18.0.1",
66
- "eslint-plugin-package-json": "1.1.0",
67
- "eslint-plugin-perfectionist": "5.9.0",
66
+ "eslint-plugin-n": "18.1.0",
67
+ "eslint-plugin-package-json": "1.4.0",
68
+ "eslint-plugin-perfectionist": "5.9.1",
68
69
  "eslint-plugin-prettier": "5.5.6",
69
70
  "eslint-plugin-react-hooks": "7.1.1",
70
- "eslint-plugin-react-refresh": "0.5.2",
71
+ "eslint-plugin-react-refresh": "0.5.3",
71
72
  "eslint-vitest-rule-tester": "3.1.0",
72
73
  "execa": "9.6.1",
73
74
  "globals": "17.6.0",
@@ -75,14 +76,15 @@
75
76
  "jsdom": "29.1.1",
76
77
  "markdownlint-cli2": "0.22.1",
77
78
  "tempy": "3.2.0",
78
- "tsdown": "0.22.1",
79
- "tsx": "4.22.3",
79
+ "tsdown": "0.22.3",
80
+ "tsx": "4.22.4",
80
81
  "typescript": "6.0.3",
81
- "typescript-eslint": "8.60.0",
82
- "vite": "8.0.14",
83
- "vitest": "4.1.7"
82
+ "typescript-eslint": "8.61.1",
83
+ "vite": "8.0.16",
84
+ "vitest": "4.1.9"
84
85
  },
85
86
  "peerDependencies": {
87
+ "@eslint-community/eslint-plugin-eslint-comments": "4.7.2",
86
88
  "@eslint-react/eslint-plugin": ">=5.8.4",
87
89
  "@eslint/js": ">=9.0.0",
88
90
  "@stylistic/eslint-plugin": ">=5.10.0",