diff --git a/.eslintrc.js b/.eslintrc.js index a83e7a09e..1ac5dcd48 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -18,6 +18,13 @@ module.exports = { }, plugins: ["@typescript-eslint"], rules: { + "@typescript-eslint/array-type": [ + "error", + { + default: "array-simple", + readonly: "array-simple", + }, + ], "@typescript-eslint/consistent-type-definitions": ["error", "type"], "@typescript-eslint/explicit-function-return-type": "off", "@typescript-eslint/generic-type-naming": "off", diff --git a/package.json b/package.json index 230c4783c..578694206 100644 --- a/package.json +++ b/package.json @@ -57,6 +57,7 @@ "url": "github:typescript-eslint/tslint-to-eslint-config" }, "scripts": { + "fix": "eslint \"./src/*.ts\" \"./src/**/*.ts\" --report-unused-disable-directives --fix", "eslint": "eslint \"./src/*.ts\" \"./src/**/*.ts\" --report-unused-disable-directives", "prettier": "prettier \"./src/*.{js,json,ts,xml,yaml}\" \"./src/**/*.{js,json,ts,xml,yaml}\" --ignore-path .prettierignore", "prettier:write": "npm run prettier -- --write", diff --git a/src/cli/runCli.ts b/src/cli/runCli.ts index 2d6a85e88..ac9b469f4 100644 --- a/src/cli/runCli.ts +++ b/src/cli/runCli.ts @@ -9,7 +9,7 @@ import { convertConfig } from "../conversion/convertConfig"; import { ResultStatus, ResultWithStatus, TSLintToESLintSettings } from "../types"; export type RunCliDependencies = { - convertConfigs: SansDependencies[]; + convertConfigs: Array>; logger: Logger; }; diff --git a/src/creation/simplification/removeExtendsDuplicatedRules.test.ts b/src/creation/simplification/removeExtendsDuplicatedRules.test.ts index 5c64be1d4..bbedd185f 100644 --- a/src/creation/simplification/removeExtendsDuplicatedRules.test.ts +++ b/src/creation/simplification/removeExtendsDuplicatedRules.test.ts @@ -21,7 +21,7 @@ const prepareTestRule = ( }, ], ]); - const extensions: Partial[] = [ + const extensions: Array> = [ { rules: { [ruleName]: extensionConfiguration, diff --git a/src/creation/simplification/removeExtendsDuplicatedRules.ts b/src/creation/simplification/removeExtendsDuplicatedRules.ts index 2e1744699..a8a0b339c 100644 --- a/src/creation/simplification/removeExtendsDuplicatedRules.ts +++ b/src/creation/simplification/removeExtendsDuplicatedRules.ts @@ -9,7 +9,7 @@ import { ESLintRuleOptions } from "../../rules/types"; export const removeExtendsDuplicatedRules = ( allRules: Map, - extensions: Partial[], + extensions: Array>, ): Map => { const differentRules = new Map(); const mergedExtensionRules = mergeExtensions(extensions); @@ -23,7 +23,7 @@ export const removeExtendsDuplicatedRules = ( return differentRules; }; -const mergeExtensions = (extensions: Partial[]) => { +const mergeExtensions = (extensions: Array>) => { const mergedRules = new Map(); for (const extension of extensions) { diff --git a/src/creation/simplification/retrieveExtendsValues.ts b/src/creation/simplification/retrieveExtendsValues.ts index fda3cfc8a..c37b60cc8 100644 --- a/src/creation/simplification/retrieveExtendsValues.ts +++ b/src/creation/simplification/retrieveExtendsValues.ts @@ -10,7 +10,7 @@ export type RetrieveExtendsValuesDependencies = { export type RetrievedExtensionValues = { configurationErrors: ConfigurationError[]; - importedExtensions: Partial[]; + importedExtensions: Array>; }; const builtInExtensions = new Map([ @@ -40,7 +40,7 @@ export const retrieveExtendsValues = async ( dependencies: RetrieveExtendsValuesDependencies, rawExtensionNames: string | string[], ): Promise => { - const importedExtensions: Partial[] = []; + const importedExtensions: Array> = []; const configurationErrors: ConfigurationError[] = []; const extensionNames = resolveExtensionNames(rawExtensionNames); diff --git a/src/editorSettings/convertEditorSettings.ts b/src/editorSettings/convertEditorSettings.ts index 809adaec8..0534b4f05 100644 --- a/src/editorSettings/convertEditorSettings.ts +++ b/src/editorSettings/convertEditorSettings.ts @@ -13,7 +13,7 @@ export type ConvertEditorSettingsDependencies = { export type EditorSettingConversionResults = { converted: Map; failed: ErrorSummary[]; - missing: Pick[]; + missing: Array>; }; // The entire editor configuration of any keys and values. @@ -25,7 +25,7 @@ export const convertEditorSettings = ( ): EditorSettingConversionResults => { const converted = new Map(); const failed: ConversionError[] = []; - const missing: Pick[] = []; + const missing: Array> = []; for (const [configurationName, value] of Object.entries(rawEditorConfiguration)) { // Configurations other than editor settings will be ignored. diff --git a/src/rules/converters/import-blacklist.ts b/src/rules/converters/import-blacklist.ts index 0f0a7f283..92f1dcbd9 100644 --- a/src/rules/converters/import-blacklist.ts +++ b/src/rules/converters/import-blacklist.ts @@ -8,7 +8,7 @@ type ESLintOptionPath = { }; type ESLintSimpleOption = string[]; type ESLintComplexOption = RequireAtLeastOne<{ - paths: (string | ESLintOptionPath)[]; + paths: Array; patterns: string[]; }>; type ESLintOptions = ESLintSimpleOption | ESLintComplexOption; diff --git a/src/rules/converters/no-shadowed-variable.ts b/src/rules/converters/no-shadowed-variable.ts index a3dfcd999..b2e90c99e 100644 --- a/src/rules/converters/no-shadowed-variable.ts +++ b/src/rules/converters/no-shadowed-variable.ts @@ -10,7 +10,7 @@ const UNDERSCORE_DISABLE_NOTICE = "provide specific variable names you want to disable the rule for."; export const convertNoShadowedVariable: RuleConverter = tslintRule => { - const ruleArguments: { hoist: "all" | "never" }[] = []; + const ruleArguments: Array<{ hoist: "all" | "never" }> = []; const notices: string[] = []; if (tslintRule.ruleArguments.length === 0 || !(tslintRule.ruleArguments[0] instanceof Object)) { diff --git a/src/rules/converters/no-trailing-whitespace.ts b/src/rules/converters/no-trailing-whitespace.ts index eb1753996..4823fe764 100644 --- a/src/rules/converters/no-trailing-whitespace.ts +++ b/src/rules/converters/no-trailing-whitespace.ts @@ -1,7 +1,7 @@ import { RuleConverter } from "../converter"; export const convertNoTrailingWhitespace: RuleConverter = tslintRule => { - const ruleArguments: Partial>[] = []; + const ruleArguments: Array>> = []; const notices: string[] = []; if (tslintRule.ruleArguments.includes("ignore-comments")) { diff --git a/src/rules/mergers/member-delimiter-style.ts b/src/rules/mergers/member-delimiter-style.ts index 90dd1b054..fe3721b36 100644 --- a/src/rules/mergers/member-delimiter-style.ts +++ b/src/rules/mergers/member-delimiter-style.ts @@ -8,7 +8,7 @@ export const mergeNoMemberDelimiterStyle: RuleMerger = (existingOptions, newOpti return [merge((existingOptions ?? [])[0] ?? {}, (newOptions ?? [])[0] ?? {})]; }; -const merge = (...objs: Record[]) => +const merge = (...objs: Array>) => [...objs].reduce( (acc, obj) => ({ ...acc, diff --git a/src/utils.ts b/src/utils.ts index c69d6f9df..5773a854f 100644 --- a/src/utils.ts +++ b/src/utils.ts @@ -13,7 +13,7 @@ export type RequireAtLeastOne = Pick> & Partial>>; }[Keys]; -export const uniqueFromSources = (...sources: (T | T[] | undefined)[]) => { +export const uniqueFromSources = (...sources: Array) => { const items: T[] = []; for (const source of sources) {