Skip to content

v2.0.0 - Better TypeScript support #79

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 34 commits into from
Mar 15, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
34 commits
Select commit Hold shift + click to select a range
1b8e22b
Bump version
tclindner Mar 14, 2021
29a74ce
Bump deps
tclindner Mar 14, 2021
78d85f4
Remove dep
tclindner Mar 14, 2021
4e251df
Settings updates for file parsing and extension resolution
tclindner Mar 14, 2021
2b26255
Add array-type rule
tclindner Mar 14, 2021
c893c53
Add consistent-type-definitions
tclindner Mar 14, 2021
865bfe4
Add explicit-function-return-type
tclindner Mar 14, 2021
eb633bf
Add method-signature-style
tclindner Mar 14, 2021
b360d1c
Add no-dynamic-delete
tclindner Mar 14, 2021
b83024e
Add prefer-enum-initializers
tclindner Mar 14, 2021
12d1a57
Add prefer-optional-chain
tclindner Mar 14, 2021
aec4738
Add dot-notation
tclindner Mar 14, 2021
19fbe4f
Update index.js
tclindner Mar 14, 2021
467f904
Add no-array-constructor
tclindner Mar 14, 2021
a71e849
Add no-dupe-class-members
tclindner Mar 14, 2021
b184590
Add no-redeclare
tclindner Mar 14, 2021
66748b4
Add no-shadow
tclindner Mar 14, 2021
2e9acf8
Add no-unused-expressions
tclindner Mar 14, 2021
648dfdf
Update index.js
tclindner Mar 14, 2021
5ba546b
Group ESLint overrides
tclindner Mar 14, 2021
2b015cf
Add @typescript-eslint rules
tclindner Mar 14, 2021
6f96adf
Add eslint overrides
tclindner Mar 14, 2021
f43a716
Add naming-convention
tclindner Mar 14, 2021
cc7c16a
Update tests to use fixtures
tclindner Mar 14, 2021
0963cf3
Update index.js
tclindner Mar 14, 2021
5bf6577
Update index.js
tclindner Mar 14, 2021
1b19e5c
Update index.js
tclindner Mar 14, 2021
64f7161
Update index.js
tclindner Mar 14, 2021
564e256
Update index.js
tclindner Mar 14, 2021
00eb2f5
Override import/extensions and import/no-extraneous-dependencies
tclindner Mar 14, 2021
a714938
Ignore fixtures
tclindner Mar 14, 2021
a296b58
Update eslint-config-tc
tclindner Mar 14, 2021
a5a789d
Remove type based rules for now
tclindner Mar 14, 2021
fb0e946
Update index.js
tclindner Mar 14, 2021
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
194 changes: 193 additions & 1 deletion index.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,197 @@
module.exports = {
extends: ['plugin:@typescript-eslint/recommended', 'prettier/@typescript-eslint'],
extends: ['plugin:@typescript-eslint/recommended', 'eslint-config-prettier'],
parser: '@typescript-eslint/parser',
plugins: ['@typescript-eslint', 'prettier'],
settings: {
'import/parsers': {
'@typescript-eslint/parser': ['.ts', '.tsx', '.d.ts'],
},
'import/resolver': {
node: {
extensions: ['.mjs', '.js', '.json', '.ts', '.d.ts'],
},
},
'import/extensions': ['.js', '.mjs', '.jsx', '.ts', '.tsx', '.d.ts'],
'import/external-module-folders': ['node_modules', 'node_modules/@types'],
},
rules: {
// @typescript-eslint rules
// -----------------------------

// https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/array-type.md
'@typescript-eslint/array-type': ['error', {default: 'array'}],

// https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/consistent-type-definitions.md
'@typescript-eslint/consistent-type-definitions': ['error', 'interface'],

// https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/explicit-function-return-type.md
// disable the rule for all files, see overrides below.
'@typescript-eslint/explicit-function-return-type': 'off',

// https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/method-signature-style.md
'@typescript-eslint/method-signature-style': 'error',

// https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/naming-convention.md
camelcase: 'off',
'@typescript-eslint/naming-convention': [
'error',
{
selector: 'default',
format: ['camelCase'],
},
{
selector: 'variable',
format: ['camelCase', 'UPPER_CASE'],
},
{
selector: 'parameter',
format: ['camelCase'],
leadingUnderscore: 'allow',
},
{
// Matches: class, interface, typeAlias, enum, typeParameter
selector: 'typeLike',
format: ['PascalCase'],
},
{
selector: 'enumMember',
format: ['PascalCase'],
},
],

// https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/no-dynamic-delete.md
'@typescript-eslint/no-dynamic-delete': 'error',

// https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/prefer-enum-initializers.md
'@typescript-eslint/prefer-enum-initializers': 'error',

// https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/prefer-optional-chain.md
'@typescript-eslint/prefer-optional-chain': 'error',

// https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/prefer-ts-expect-error.md
'@typescript-eslint/prefer-ts-expect-error': 'error',

// @typescript-eslint overrides
// that work better than ESLint
// The base rule needs to be disabled to prevent false positives.
// -----------------------------

// https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/lines-between-class-members.md
'lines-between-class-members': 'off',
'@typescript-eslint/lines-between-class-members': ['error'],

// https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/no-dupe-class-members.md
'no-dupe-class-members': 'off',
'@typescript-eslint/no-dupe-class-members': ['error'],

// https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/no-empty-function.md
'no-empty-function': 'off',
'@typescript-eslint/no-empty-function': ['error'],

// https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/no-loop-func.md
'no-loop-func': 'off',
'@typescript-eslint/no-loop-func': 'error',

// https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/no-redeclare.md
'no-redeclare': 'off',
'@typescript-eslint/no-redeclare': ['error'],

// https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/no-shadow.md
'no-shadow': 'off',
'@typescript-eslint/no-shadow': ['error'],

// https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/no-unused-expressions.md
'no-array-constructor': 'off',
'@typescript-eslint/no-array-constructor': ['error'],

// https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/no-unused-expressions.md
'no-unused-expressions': 'off',
'@typescript-eslint/no-unused-expressions': ['error'],

// https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/no-use-before-define.md
'no-use-before-define': 'off',
'@typescript-eslint/no-use-before-define': ['error'],

// https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/no-useless-constructor.md
'no-useless-constructor': 'off',
'@typescript-eslint/no-useless-constructor': ['error'],

// https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/no-unused-vars.md
'no-unused-vars': 'off',
'@typescript-eslint/no-unused-vars': 'error',

// Override Airbnb 'import/extensions' rule. Add 'ts' and 'tsx'.
// https://github.com/benmosher/eslint-plugin-import/blob/master/docs/rules/extensions.md
'import/extensions': [
'error',
'ignorePackages',
{
js: 'never',
mjs: 'never',
jsx: 'never',
ts: 'never',
tsx: 'never',
},
],

// Override Airbnb 'import/no-extraneous-dependencies' rule. Add 'ts' and 'tsx'.
// https://github.com/benmosher/eslint-plugin-import/blob/master/docs/rules/no-extraneous-dependencies.md
'import/no-extraneous-dependencies': [
'error',
{
devDependencies: [
'test/**',
'tests/**',
'spec/**',
'**/__tests__/**',
'**/__mocks__/**',
'test.{js,jsx,ts,tsx}',
'test-*.{js,jsx,ts,tsx}',
'**/*{.,_}{test,spec}.{js,jsx,ts,tsx}',
'**/jest.config.js',
'**/jest.setup.js',
'**/vue.config.js',
'**/webpack.config.js',
'**/webpack.config.*.js',
'**/rollup.config.js',
'**/rollup.config.*.js',
'**/gulpfile.js',
'**/gulpfile.*.js',
'**/Gruntfile{,.js}',
'**/protractor.conf.js',
'**/protractor.conf.*.js',
'**/karma.conf.js',
],
optionalDependencies: false,
},
],
},
overrides: [
{
// Enable the rule specifically for TypeScript files
files: ['*.ts', '*.tsx'],
rules: {
// Required for mixed JS/TS code bases - https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/explicit-function-return-type.md
'@typescript-eslint/explicit-function-return-type': ['error'],

// Disable the following rules since the TypeScript
// compiler does it.
'constructor-super': 'off',
'getter-return': 'off',
'no-const-assign': 'off',
'no-dupe-args': 'off',
'no-dupe-keys': 'off',
'no-func-assign': 'off',
'no-new-symbol': 'off',
'no-obj-calls': 'off',
'no-this-before-super': 'off',
'no-undef': 'off',
'no-unreachable': 'off',
'no-unsafe-negation': 'off',
'valid-typeof': 'off',
'import/named': 'off',
'import/no-unresolved': 'off',
},
},
],
};
Loading