Skip to content

Commit 65985e0

Browse files
committedSep 26, 2023
fix: anolilabEslintConfig object, the configuration for "import_ignore_exports" is introduced
Ensuring that config values are explicitly cast to their respective types for correct type checking. This change avoids a TypeError that could occur if these config values are not expected arrays. These changes will tighten up TypeScript's type checking and help prevent runtime errors. Signed-off-by: prisis <d.bannert@anolilab.de>
1 parent 2b8eee6 commit 65985e0

File tree

8 files changed

+38
-7
lines changed

8 files changed

+38
-7
lines changed
 

‎packages/eslint-config/README.md

+18
Original file line numberDiff line numberDiff line change
@@ -324,6 +324,24 @@ To disable the info, set the value to `false`.
324324
}
325325
```
326326

327+
#### import_ignore_exports
328+
329+
Type: `string[]`
330+
331+
Default: `[]`
332+
333+
An array with files/paths for which unused exports will not be reported (e.g module entry points in a published package).
334+
335+
```json
336+
{
337+
"anolilab": {
338+
"eslint-config": {
339+
"import_ignore_exports": []
340+
}
341+
}
342+
}
343+
```
344+
327345
### Let [Prettier](https://prettier.io/) handle style-related rules
328346

329347
Prettier is a code formatting tool that offers fewer options but is more professional than the style-related rules in ESLint.

‎packages/eslint-config/src/config/plugins/import.ts

+12-1
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,17 @@ import { fromRoot, hasTypescript, packageIsTypeModule } from "@anolilab/package-
22
import type { Linter } from "eslint";
33

44
import { createConfigs } from "../../utils/create-config";
5+
import anolilabEslintConfig from "../../utils/eslint-config";
6+
7+
if (global.anolilabEslintImportNoUnusedModulesConfig === undefined && anolilabEslintConfig["import_ignore_exports"]) {
8+
if (!Array.isArray(anolilabEslintConfig["import_ignore_exports"])) {
9+
throw new TypeError("import.ignore_exports must be a array");
10+
}
11+
12+
global.anolilabEslintImportNoUnusedModulesConfig = anolilabEslintConfig["import_ignore_exports"] as string[];
13+
} else {
14+
global.anolilabEslintImportNoUnusedModulesConfig = [];
15+
}
516

617
const config: Linter.Config = createConfigs([
718
{
@@ -254,7 +265,7 @@ const config: Linter.Config = createConfigs([
254265
"import/no-unused-modules": [
255266
packageIsTypeModule ? "error" : "off",
256267
{
257-
ignoreExports: ["**/*.cjs"],
268+
ignoreExports: global.anolilabEslintImportNoUnusedModulesConfig,
258269
missingExports: true,
259270
unusedExports: true,
260271
},

‎packages/eslint-config/src/config/plugins/jsonc.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ if (!global.hasAnolilabEsLintConfigJsoncPackageJsonSort && (hasDependency("sort-
1818
let showLog: boolean = env["DISABLE_INFO_ON_DISABLING_JSONC_SORT_KEYS_RULE"] !== "true";
1919

2020
if (showLog && anolilabEslintConfig["info_on_disabling_jsonc_sort_keys_rule"] !== undefined) {
21-
showLog = anolilabEslintConfig["info_on_disabling_jsonc_sort_keys_rule"];
21+
showLog = anolilabEslintConfig["info_on_disabling_jsonc_sort_keys_rule"] as boolean;
2222
}
2323

2424
if (showLog) {

‎packages/eslint-config/src/config/plugins/react.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ const hasJsxRuntime = (() => {
4848
let showLog: boolean = env["DISABLE_INFO_ON_DISABLING_JSX_REACT_RULE"] !== "true";
4949

5050
if (showLog && anolilabEslintConfig["info_on_disabling_jsx_react_rule"] !== undefined) {
51-
showLog = anolilabEslintConfig["info_on_disabling_jsx_react_rule"];
51+
showLog = anolilabEslintConfig["info_on_disabling_jsx_react_rule"] as boolean;
5252
}
5353

5454
if (showLog && isFile) {
@@ -713,7 +713,7 @@ const config: Linter.Config = {
713713
files: ["**/*.stories.{ts,tsx,mdx}"],
714714
rules: {
715715
"react/jsx-props-no-spreading": "off",
716-
}
716+
},
717717
},
718718
],
719719
};

‎packages/eslint-config/src/config/plugins/typescript.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ const commaDangle = styleRules["comma-dangle"] as any[];
5656
let showUnsupportedTypeScriptVersionWarning: boolean = env["DISABLE_ESLINT_WARN_UNSUPPORTED_TYPESCRIPT_VERSION"] !== "true";
5757

5858
if (anolilabEslintConfig["warn_on_unsupported_typescript_version"] !== undefined) {
59-
showUnsupportedTypeScriptVersionWarning = anolilabEslintConfig["warn_on_unsupported_typescript_version"];
59+
showUnsupportedTypeScriptVersionWarning = anolilabEslintConfig["warn_on_unsupported_typescript_version"] as boolean;
6060
}
6161

6262
const config: Linter.Config = createConfigs([

‎packages/eslint-config/src/global.d.ts

+2
Original file line numberDiff line numberDiff line change
@@ -43,4 +43,6 @@ declare global {
4343
var anolilabEslintConfigTestingLibraryRuleSet: undefined | string;
4444

4545
var anolilabEslintConfigUnicornPrettierRules: undefined | Linter.RulesRecord;
46+
47+
var anolilabEslintImportNoUnusedModulesConfig: undefined | string[];
4648
}

‎packages/eslint-config/src/typescript-type-checking.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ const bestPracticesRules = bestPracticesConfig.overrides[0].rules as Linter.Rule
1212
let showUnsupportedTypeScriptVersionWarning: boolean = env["DISABLE_ESLINT_WARN_UNSUPPORTED_TYPESCRIPT_VERSION"] !== "true";
1313

1414
if (anolilabEslintConfig["warn_on_unsupported_typescript_version"] !== undefined) {
15-
showUnsupportedTypeScriptVersionWarning = anolilabEslintConfig["warn_on_unsupported_typescript_version"];
15+
showUnsupportedTypeScriptVersionWarning = anolilabEslintConfig["warn_on_unsupported_typescript_version"] as boolean;
1616
}
1717

1818
const config = createConfig("typescript", {

‎packages/eslint-config/src/utils/eslint-config.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,6 @@ if (!global.anolilabEslintPackageJsonConfig && pkg) {
55
global.anolilabEslintPackageJsonConfig = pkg["anolilab"]?.["eslint-config"];
66
}
77

8-
const config: Record<string, boolean | undefined> = global.anolilabEslintPackageJsonConfig ?? {};
8+
const config: Record<string, string[] | boolean | undefined> = global.anolilabEslintPackageJsonConfig ?? {};
99

1010
export default config;

0 commit comments

Comments
 (0)