diff --git a/.eslintrc.js b/.eslintrc.js index 488b9ad28..3aa30a3a1 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -2,58 +2,34 @@ module.exports = { root: true, - env: { - // @TODO: Can be removed, ES versions are cumulative: - // https://stackoverflow.com/a/61688878 - // es6: true, - // This seems to be what Node.js 18, 20 fully supports, but online documentation - // isn't exactly crystal clear about what should be put here - es2022: true, - browser: true, - node: true, - }, + env: { es2022: true, browser: true, node: true }, // Standard linting for pure javascript files - parserOptions: { - // @TODO: Can be removed, as env ES version sets this too: - // https://eslint.org/docs/latest/use/configure/language-options#specifying-environments - // ecmaVersion: 2019, - // @TODO: Remove because in JS files we use commonjs - // sourceType: 'module', - }, - // prettier must always be put last, so it overrides anything before it extends: [ 'eslint:recommended', - // Disables all style rules + // Disables all style rules (must always be put last, so it overrides anything before it) // https://prettier.io/docs/en/integrating-with-linters.html // https://github.com/prettier/eslint-config-prettier 'prettier', ], - rules: { - // @TODO: Remove this rule, as it's a style rule covered by prettier and - // it's deprecated https://eslint.org/docs/latest/rules/comma-dangle - // 'comma-dangle': 'off', - }, overrides: [ // TypeScript linting for TypeScript files { files: '*.ts', plugins: [ '@typescript-eslint', - // TSDoc is only meant for TS files https://tsdoc.org/ + // https://tsdoc.org/ 'eslint-plugin-tsdoc', ], parser: '@typescript-eslint/parser', parserOptions: { project: 'tsconfig.eslint.json' }, - // prettier must always be put last, so it overrides anything before it extends: [ 'plugin:@typescript-eslint/recommended-type-checked', 'prettier', ], rules: { - // @TODO: Remove as it doesn't seem to cause issues anymore with fn overloads - // 'no-dupe-class-members': 'off', // Off due to conflict with typescript overload functions 'tsdoc/syntax': 'error', - // new TS rules begin @TODO: Remove these and adapt code + // @TODO: Remove the ones between "~~", adapt code + // ~~ '@typescript-eslint/prefer-as-const': 'off', '@typescript-eslint/ban-ts-comment': 'off', '@typescript-eslint/no-unsafe-call': 'off', @@ -62,40 +38,17 @@ module.exports = { '@typescript-eslint/no-unsafe-assignment': 'off', '@typescript-eslint/no-unsafe-argument': 'off', '@typescript-eslint/no-floating-promises': 'off', - // new TS rules end + // ~~ '@typescript-eslint/array-type': ['warn', { default: 'array-simple' }], - // @TODO: Remove, as it's already off - // '@typescript-eslint/return-await': 'off', - // @TODO: Remove this rule, deprecated: - // https://typescript-eslint.io/rules/space-before-function-paren/ - // '@typescript-eslint/space-before-function-paren': 0, // @TODO: Should be careful with this rule, should leave it be and disable // it within files where necessary with explanations '@typescript-eslint/no-explicit-any': 'off', - // @TODO: Remove, as it's already off - // '@typescript-eslint/explicit-function-return-type': 'off', - // @TODO: Remove, as it's already off - // '@typescript-eslint/no-throw-literal': 'off', '@typescript-eslint/no-unused-vars': [ 'error', // argsIgnorePattern: https://eslint.org/docs/latest/rules/no-unused-vars#argsignorepattern // varsIgnorePattern: https://eslint.org/docs/latest/rules/no-unused-vars#varsignorepattern { args: 'all', argsIgnorePattern: '^_', varsIgnorePattern: '^_' }, ], - // @TODO: Remove this rule, as it's a style rule covered by prettier - // '@typescript-eslint/member-delimiter-style': [ - // 'error', - // { - // multiline: { - // delimiter: 'none', // 'none' or 'semi' or 'comma' - // requireLast: true, - // }, - // singleline: { - // delimiter: 'semi', // 'semi' or 'comma' - // requireLast: false, - // }, - // }, - // ], // @TODO: Not recommended to disable rule, should instead disable locally // with explanation '@typescript-eslint/ban-ts-ignore': 'off', @@ -112,9 +65,8 @@ module.exports = { jest: true, 'jest/globals': true, }, - // prettier must always be put last, so it overrides anything before it extends: ['plugin:jest/recommended', 'prettier'], - // @TODO: Remove these rules and adapt code! + // @TODO: Remove all of these rules and adapt code! rules: { 'jest/no-disabled-tests': 'off', 'jest/expect-expect': 'off', diff --git a/.prettierrc.js b/.prettierrc.js index 17bd57337..2feaa1b3a 100644 --- a/.prettierrc.js +++ b/.prettierrc.js @@ -2,14 +2,8 @@ module.exports = { singleQuote: true, - // @TODO Remove as it's default - // arrowParens: 'always', semi: false, - // @TODO Remove as it's default - // bracketSpacing: true, trailingComma: 'es5', - // @TODO Remove as it's default - // printWidth: 80, plugins: ['./node_modules/prettier-plugin-jsdoc/dist/index.js'], // https://github.com/hosseinmd/prettier-plugin-jsdoc#tsdoc tsdoc: true, diff --git a/tsconfig.eslint.json b/tsconfig.eslint.json index 004078bc3..a2275a529 100644 --- a/tsconfig.eslint.json +++ b/tsconfig.eslint.json @@ -1,11 +1,6 @@ { // extend your base config so you don't have to redefine your compilerOptions "extends": "./tsconfig.json", - // @TODO: Can be removed, all of these are already in the extended tsconfig.json - // "compilerOptions": { - // "allowJs": false, - // "module": "esnext" - // }, "include": [ "src/**/*.ts", "tests/**/*.ts", diff --git a/tsconfig.json b/tsconfig.json index e53711d90..4e1ff1c5a 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,14 +1,5 @@ { "compilerOptions": { - // @TODO: Remove these, as we're not using decorators - // "experimentalDecorators": true, - // "emitDecoratorMetadata": true, - // @TODO: Remove, as it defaults to true: https://www.typescriptlang.org/tsconfig#forceConsistentCasingInFileNames - // "forceConsistentCasingInFileNames": true, - // @TODO: Remove, as it's false by default: https://www.typescriptlang.org/tsconfig#removeComments - // "removeComments": false, - // @TODO: This is false by default, can be removed - // "allowJs": false, // @TODO: perhaps "emitDeclarationOnly" should be used here (build fails with it), need to // investigate further https://www.typescriptlang.org/tsconfig#emitDeclarationOnly // probably need to update rollup and its config @@ -21,42 +12,16 @@ // https://www.typescriptlang.org/docs/handbook/modules/reference.html#bundler // However "module": "node16" or "nodenext" is a better option: // https://www.typescriptlang.org/docs/handbook/modules/theory.html#module-resolution-for-libraries - // Problem is, a lot of files would need changes, so to keep things simpler for now let's keep it as "bundler" // Also this should be applied too: https://www.typescriptlang.org/tsconfig#verbatimModuleSyntax - // but again, too many changes for now "moduleResolution": "bundler", // "moduleResolution" = "bundler" requires this to be "esnext" "module": "esnext", - // @TODO: Remove as it's not all that useful these days, and just generates more unnecessary code - // just so we can `import crypto from "crypto"` instead of `import * as crypto from "crypto"` - // or even better `import { createHmac } from "crypto"` - // "esModuleInterop": true, - // @TODO: Remove, as "moduleResolution": "bundler" sets this to true - // "allowSyntheticDefaultImports": true, // Node.js 18 supports up to ES2022 according to https://www.npmjs.com/package/@tsconfig/node18 // This matters for the generated CJS and ESM file, UMD file is down-leveled further to support IE11 - // with the help of Babel. + // (only the syntax, URL, URLSearchParams, fetch is not IE11 compatible) with the help of Babel. "target": "es2022", - "lib": [ - // @TODO: Remove as ES versions are cumulative, so ESNext contains everything - //"ES2019", - "ESNext", - "dom" - ], + "lib": ["ESNext", "dom"], "strict": true, - // @TODO: Remove these, as they are covered by "strict": - // https://www.typescriptlang.org/tsconfig#strict - // "alwaysStrict": true, - // "strictNullChecks": true, - // "strictFunctionTypes": true, - // "strictPropertyInitialization": true, - // "strictBindCallApply": true, - // "noImplicitAny": true, - // "noImplicitThis": true, "noImplicitReturns": true - // @TODO: These are already covered by ESLint, furthermore these disallow - // underscore vars (_myVar) too, so they nullify the ESLint custom rule - // "noUnusedLocals": true, - // "noUnusedParameters": true } }