Skip to content

Commit

Permalink
Add base, TypeScript, and Jest config
Browse files Browse the repository at this point in the history
  • Loading branch information
whymarrh committed Jan 21, 2020
1 parent 88eb0ef commit 17a170f
Show file tree
Hide file tree
Showing 7 changed files with 389 additions and 6 deletions.
7 changes: 7 additions & 0 deletions .eslintrc.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
module.exports = {
root: true,
extends: [
'./config/index.js',
'./config/nodejs.js',
],
}
128 changes: 127 additions & 1 deletion config/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,4 +3,130 @@ module.exports = {
'es6': true,
'shared-node-browser': true,
},
};
rules: {
'accessor-pairs': 2,
'arrow-spacing': [2, { 'before': true, 'after': true }],
'block-spacing': [2, 'always'],
'brace-style': 2,
'camelcase': [2, { 'properties': 'never', 'allow': ['^UNSAFE_'] }],
'comma-dangle': [2, 'always-multiline'],
'comma-spacing': [2, { 'before': false, 'after': true }],
'comma-style': [2, 'last'],
'constructor-super': 2,
'curly': 2,
'default-case': 2,
'dot-location': [2, 'property'],
'eol-last': 2,
'eqeqeq': [2, 'allow-null'],
'generator-star-spacing': [2, { 'before': true, 'after': true }],
'handle-callback-err': [2, '^(err|error)$' ],
'indent': [2, 2, { 'SwitchCase': 1 }],
'jsx-quotes': [2, 'prefer-double'],
'key-spacing': 2,
'keyword-spacing': [2, { 'before': true, 'after': true }],
'new-cap': [2, { 'newIsCap': true, 'capIsNew': false }],
'new-parens': 2,
'no-array-constructor': 2,
'no-async-promise-executor': 2,
'no-caller': 2,
'no-class-assign': 2,
'no-cond-assign': 2,
'no-confusing-arrow': 2,
'no-const-assign': 2,
'no-control-regex': 2,
'no-debugger': 2,
'no-delete-var': 2,
'no-dupe-args': 2,
'no-dupe-class-members': 2,
'no-dupe-keys': 2,
'no-duplicate-case': 2,
'no-duplicate-imports': 2,
'no-empty-character-class': 2,
'no-empty-pattern': 2,
'no-eval': 2,
'no-ex-assign': 2,
'no-extend-native': 2,
'no-extra-bind': 2,
'no-extra-boolean-cast': 2,
'no-extra-parens': [2, 'functions'],
'no-fallthrough': 2,
'no-floating-decimal': 2,
'no-func-assign': 2,
'no-implied-eval': 2,
'no-inner-declarations': [2, 'functions'],
'no-invalid-regexp': 2,
'no-irregular-whitespace': 2,
'no-iterator': 2,
'no-label-var': 2,
'no-labels': [2, { 'allowLoop': false, 'allowSwitch': false }],
'no-lone-blocks': 2,
'no-mixed-spaces-and-tabs': 2,
'no-multi-spaces': 2,
'no-multi-str': 2,
'no-multiple-empty-lines': [2, { 'max': 2 }],
'no-native-reassign': 2,
'no-negated-in-lhs': 2,
'no-new': 2,
'no-new-func': 2,
'no-new-object': 2,
'no-new-require': 2,
'no-new-symbol': 2,
'no-new-wrappers': 2,
'no-obj-calls': 2,
'no-octal': 2,
'no-octal-escape': 2,
'no-path-concat': 2,
'no-proto': 2,
'no-redeclare': 2,
'no-regex-spaces': 2,
'no-restricted-globals': [2, 'event'],
'no-return-assign': [2, 'except-parens'],
'no-self-assign': 2,
'no-self-compare': 2,
'no-sequences': 2,
'no-shadow-restricted-names': 2,
'no-spaced-func': 2,
'no-sparse-arrays': 2,
'no-this-before-super': 2,
'no-throw-literal': 2,
'no-trailing-spaces': 2,
'no-undef': 2,
'no-undef-init': 2,
'no-unexpected-multiline': 2,
'no-unmodified-loop-condition': 2,
'no-unneeded-ternary': [2, { 'defaultAssignment': false }],
'no-unreachable': 2,
'no-unsafe-finally': 2,
'no-unused-expressions': [2, { 'allowShortCircuit': true, 'allowTernary': true }],
'no-unused-vars': [2, { 'vars': 'all', 'args': 'all', 'argsIgnorePattern': '[_]+' }],
'no-use-before-define': [2, { 'functions': false }],
'no-useless-call': 2,
'no-useless-computed-key': 2,
'no-useless-constructor': 2,
'no-useless-escape': 2,
'no-var': 2,
'no-whitespace-before-property': 2,
'no-with': 2,
'object-curly-spacing': [2, 'always'],
'one-var': [2, { 'initialized': 'never' }],
'operator-linebreak': [2, 'after', { 'overrides': { '?': 'ignore', ':': 'ignore' } }],
'padded-blocks': 0,
'prefer-const': 2,
'quotes': [2, 'single', { 'avoidEscape': true, 'allowTemplateLiterals': true }],
'semi': [2, 'never'],
'semi-spacing': [2, { 'before': false, 'after': true }],
'space-before-blocks': [2, 'always'],
'space-before-function-paren': [2, 'always'],
'space-in-parens': [2, 'never'],
'space-infix-ops': 2,
'space-unary-ops': [2, { 'words': true, 'nonwords': false }],
'spaced-comment': [2, 'always', { 'markers': ['global', 'globals', 'eslint', 'eslint-disable', '*package', '!', ','], 'exceptions': ['=', '-'] } ],
'strict': 0,
'template-curly-spacing': [2, 'never'],
'use-isnan': 2,
'valid-typeof': 2,
'wrap-iife': [2, 'any'],
'yield-star-spacing': [2, 'both'],
'yoda': [2, 'never'],
},
}
50 changes: 50 additions & 0 deletions config/jest.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
module.exports = {
plugins: [
'jest',
],
env: {
'jest/globals': true,
},
rules: {
'jest/consistent-test-it': [2, { 'fn': 'it' }],
'jest/expect-expect': 2,
'jest/lowercase-name': 2,
'jest/no-alias-methods': 0,
'jest/no-commented-out-tests': 2,
'jest/no-disabled-tests': 2,
'jest/no-duplicate-hooks': 2,
'jest/no-expect-resolves': 2,
'jest/no-export': 2,
'jest/no-focused-tests': 2,
'jest/no-hooks': 0,
'jest/no-identical-title': 2,
'jest/no-if': 2,
'jest/no-jasmine-globals': 2,
'jest/no-jest-import': 2,
'jest/no-large-snapshots': 0,
'jest/no-mocks-import': 2,
'jest/no-standalone-expect': 2,
'jest/no-test-callback': 2,
'jest/no-test-prefixes': 2,
'jest/no-test-return-statement': 2,
'jest/no-truthy-falsy': 2,
'jest/no-try-expect': 2,
'jest/prefer-called-with': 0,
'jest/prefer-expect-assertions': 0,
'jest/prefer-hooks-on-top': 2,
'jest/prefer-inline-snapshots': 0,
'jest/prefer-spy-on': 2,
'jest/prefer-strict-equal': 2,
'jest/prefer-to-be-null': 2,
'jest/prefer-to-be-undefined': 2,
'jest/prefer-to-contain': 2,
'jest/prefer-to-have-length': 2,
'jest/prefer-todo': 2,
'jest/require-top-level-describe': 2,
'jest/require-to-throw-message': 2,
'jest/valid-describe': 2,
'jest/valid-expect-in-promise': 2,
'jest/valid-expect': [2, { 'alwaysAwait': true }],
'jest/valid-title': 2,
},
}
5 changes: 5 additions & 0 deletions config/nodejs.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
module.exports = {
env: {
node: true,
},
}
74 changes: 74 additions & 0 deletions config/typescript.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,74 @@
module.exports = {
root: true,
parser: '@typescript-eslint/parser',
plugins: [
'@typescript-eslint',
],
extends: [
'eslint:recommended',
'plugin:@typescript-eslint/eslint-recommended',
'plugin:@typescript-eslint/recommended',
],
rules: {
// Rules from @typescript-eslint/eslint-plugin
'@typescript-eslint/array-type': 2,
'@typescript-eslint/consistent-type-definitions': [2, 'type'],
'@typescript-eslint/no-explicit-any': 0,
'@typescript-eslint/prefer-for-of': 0,
'@typescript-eslint/prefer-function-type': 2,
'@typescript-eslint/prefer-optional-chain': 2,
'@typescript-eslint/triple-slash-reference': 2,
'@typescript-eslint/type-annotation-spacing': 2,
'@typescript-eslint/typedef': 0,
'@typescript-eslint/unified-signatures': 2,

// "Extension Rules" from @typescript-eslint/eslint-plugin
'@typescript-eslint/brace-style': 2,
'brace-style': 0,

'@typescript-eslint/default-param-last': 2,
'default-param-last': 0,

'@typescript-eslint/func-call-spacing': 2,
'func-call-spacing': 0,

'@typescript-eslint/indent': [2, 2, { 'SwitchCase': 1 }],
'indent': 0,

'@typescript-eslint/no-array-constructor': 2,
'no-array-constructor': 0,

'@typescript-eslint/no-empty-function': 2,
'no-empty-function': 0,

'@typescript-eslint/no-extra-parens': 0,
'no-extra-parens': 0,

'@typescript-eslint/no-extra-semi': 2,
'no-extra-semi': 0,

'@typescript-eslint/no-magic-numbers': 0,
'no-magic-numbers': 0,

'@typescript-eslint/no-unused-expressions': [2, { 'allowShortCircuit': true, 'allowTernary': true }],
'no-unused-expressions': 0,

'@typescript-eslint/no-unused-vars': [2, { 'vars': 'all', 'args': 'all', 'argsIgnorePattern': '[_]+' }],
'no-unused-vars': 0,

'@typescript-eslint/no-use-before-define': [2, { 'functions': false }],
'no-use-before-define': 0,

'@typescript-eslint/no-useless-constructor': 2,
'no-useless-constructor': 0,

'@typescript-eslint/quotes': [2, 'single', { 'avoidEscape': true, 'allowTemplateLiterals': true }],
'quotes': 0,

'@typescript-eslint/semi': [2, 'always'],
'semi': 0,

'@typescript-eslint/space-before-function-paren': [2, 'always'],
'space-before-function-paren': 0,
},
}
6 changes: 5 additions & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,10 @@
},
"homepage": "https://github.com/MetaMask/eslint-config#readme",
"devDependencies": {
"eslint": "^6.8.0"
"@typescript-eslint/eslint-plugin": "^2.17.0",
"@typescript-eslint/parser": "^2.17.0",
"eslint": "^6.8.0",
"eslint-plugin-jest": "^23.6.0",
"typescript": "^3.7.5"
}
}
Loading

0 comments on commit 17a170f

Please sign in to comment.