Skip to content

Commit

Permalink
chore: Upgrade ESLint config dependencies (#331)
Browse files Browse the repository at this point in the history
BREAKING CHANGE: This probably breaks something.
  • Loading branch information
taion committed Aug 14, 2019
1 parent e0f8df5 commit a59c6d5
Show file tree
Hide file tree
Showing 21 changed files with 395 additions and 420 deletions.
6 changes: 3 additions & 3 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -23,12 +23,12 @@
},
"devDependencies": {
"babel-eslint": "^10.0.2",
"eslint": "^5.16.0",
"eslint-config-airbnb-base": "^13.2.0",
"eslint": "^6.1.0",
"eslint-config-airbnb-base": "^14.0.0",
"eslint-config-prettier": "^6.0.0",
"eslint-plugin-import": "^2.18.2",
"find-yarn-workspace-root": "^1.2.1",
"husky": "^3.0.2",
"husky": "^3.0.3",
"lerna": "^3.16.4",
"lint-staged": "^9.2.1",
"prettier": "^1.18.2"
Expand Down
41 changes: 19 additions & 22 deletions packages/babel-preset/index.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
/* eslint-disable no-console */

const { loadConfig } = require('browserslist');
const pick = require('lodash/pick');
const path = require('path');
Expand Down Expand Up @@ -31,25 +32,23 @@ const DEFAULT_BROWSERS = [
];

function addDefaultOptions(explicitOptions) {
const options = Object.assign(
{
target: 'web', // 'web-app' | 'node'
intl: false,
loose: true,
development: false,
modules: 'commonjs',
shippedProposals: true,
runtime: false,
corejs: false,
envCorejs: null,
debug: false,
targets: undefined, // Targets for @babel/preset-env.
ignoreBrowserslistConfig: false,
configPath: '.',
include: [],
},
explicitOptions,
);
const options = {
target: 'web', // 'web-app' | 'node'
intl: false,
loose: true,
development: false,
modules: 'commonjs',
shippedProposals: true,
runtime: false,
corejs: false,
envCorejs: null,
debug: false,
targets: undefined, // Targets for @babel/preset-env.
ignoreBrowserslistConfig: false,
configPath: '.',
include: [],
...explicitOptions,
};

if (options.envCorejs === null) {
options.envCorejs = options.corejs;
Expand All @@ -62,9 +61,7 @@ function addDefaultOptions(explicitOptions) {
if (options.corejs && options.envCorejs !== options.corejs) {
console.warn(
'@4c/babel-preset: You have a mismatch between requested core-js versions.\n' +
`preset-env requests v${options.envCorejs} while runtime is v${
options.corejs
}. ` +
`preset-env requests v${options.envCorejs} while runtime is v${options.corejs}. ` +
'Make sure `options.corejs` is empty or matches `options.envCorejs`.',
);
}
Expand Down
6 changes: 3 additions & 3 deletions packages/babel-preset/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -35,19 +35,19 @@
"@babel/preset-env": "^7.5.5",
"@babel/preset-react": "^7.0.0",
"babel-plugin-dev-expression": "^0.2.2",
"babel-plugin-react-intl": "^4.1.5",
"babel-plugin-react-intl": "^4.1.12",
"browserslist": "^4.6.6",
"lodash": "^4.17.15",
"read-pkg-up": "^6.0.0"
},
"devDependencies": {
"@babel/cli": "^7.5.5",
"@babel/core": "^7.5.5",
"eslint": "^5.16.0",
"eslint": "^6.1.0",
"eslint-config-4catalyzer": "^0.8.2",
"eslint-config-prettier": "^6.0.0",
"eslint-plugin-import": "^2.18.2",
"eslint-plugin-jest": "^22.14.1",
"eslint-plugin-jest": "^22.15.1",
"eslint-plugin-prettier": "^3.1.0",
"jest-cli": "^24.8.0"
}
Expand Down
11 changes: 5 additions & 6 deletions packages/eslint-config-4catalyzer-flow-react/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,9 @@ module.exports = {
extends: ['4catalyzer-flow', '4catalyzer-react'],
// 4catalyzer-react overrides some 4catalyzer-flow rules from the airbnb
// import, so we need to explicitly reapply the rules.
rules: Object.assign(
{},
require('eslint-config-4catalyzer-flow/rules'),
require('eslint-config-4catalyzer-react/rules'),
require('./rules'),
),
rules: {
...require('eslint-config-4catalyzer-flow/rules'),
...require('eslint-config-4catalyzer-react/rules'),
...require('./rules'),
},
};
4 changes: 2 additions & 2 deletions packages/eslint-config-4catalyzer-flow-react/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -25,14 +25,14 @@
"eslint-config-4catalyzer-react": "^0.9.4"
},
"peerDependencies": {
"eslint-plugin-flowtype": "^3.13.0",
"eslint-plugin-flowtype": "^4.2.0",
"eslint-plugin-import": "^2.18.2",
"eslint-plugin-jsx-a11y": "^6.2.3",
"eslint-plugin-react": "^7.14.3"
},
"devDependencies": {
"babel-eslint": "^10.0.2",
"eslint-plugin-flowtype": "^3.13.0",
"eslint-plugin-flowtype": "^4.2.0",
"eslint-plugin-import": "^2.18.2",
"eslint-plugin-jsx-a11y": "^6.2.3",
"eslint-plugin-react": "^7.14.3"
Expand Down
7 changes: 6 additions & 1 deletion packages/eslint-config-4catalyzer-flow/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,12 @@ module.exports = {

overrides: [
{
files: ['**/*.test.*', '**/test/**'],
files: [
'**/*.test.*',
'**/test/**',
'**/__tests__/**',
'**/__mocks__/**',
],
rules: {
'flowtype/require-valid-file-annotation': 'off',
},
Expand Down
4 changes: 2 additions & 2 deletions packages/eslint-config-4catalyzer-flow/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -24,11 +24,11 @@
"eslint-config-4catalyzer": "^0.8.2"
},
"peerDependencies": {
"eslint-plugin-flowtype": "^3.13.0",
"eslint-plugin-flowtype": "^4.2.0",
"eslint-plugin-import": "^2.18.2"
},
"devDependencies": {
"eslint-plugin-flowtype": "^3.13.0",
"eslint-plugin-flowtype": "^4.2.0",
"eslint-plugin-import": "^2.18.2"
}
}
4 changes: 2 additions & 2 deletions packages/eslint-config-4catalyzer-jest/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -10,9 +10,9 @@
"author": "4Catalyzer",
"license": "MIT",
"peerDependencies": {
"eslint-plugin-jest": "^22.14.1"
"eslint-plugin-jest": "^22.15.1"
},
"devDependencies": {
"eslint-plugin-jest": "^22.14.1"
"eslint-plugin-jest": "^22.15.1"
}
}
12 changes: 5 additions & 7 deletions packages/eslint-config-4catalyzer-react/index.js
Original file line number Diff line number Diff line change
@@ -1,12 +1,10 @@
module.exports = {
// airbnb needs to take precedence; otherwise rules from airbnb-base via
// 4catalyzer messes up some JSX linting.
extends: ['4catalyzer', 'airbnb'],
plugins: ['react-hooks'],
extends: ['4catalyzer', 'airbnb', 'airbnb/hooks'],
// We still want the 4catalyzer rules to take precedence over airbnb rules.
rules: Object.assign(
{},
require('eslint-config-4catalyzer/rules'),
require('./rules'),
),
rules: {
...require('eslint-config-4catalyzer/rules'),
...require('./rules'),
},
};
12 changes: 7 additions & 5 deletions packages/eslint-config-4catalyzer-react/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -29,21 +29,23 @@
},
"dependencies": {
"eslint-config-4catalyzer": "^0.8.2",
"eslint-config-airbnb": "^17.1.1",
"eslint-plugin-react-hooks": "^1.6.1"
"eslint-config-airbnb": "^18.0.1"
},
"peerDependencies": {
"eslint-plugin-import": "^2.18.2",
"eslint-plugin-jsx-a11y": "^6.2.3",
"eslint-plugin-react": "^7.14.3"
"eslint-plugin-react": "^7.14.3",
"eslint-plugin-react-hooks": "^1.7.0"
},
"devDependencies": {
"@4c/jest-preset": "^1.4.3",
"eslint": "^5.16.0",
"eslint": "^6.1.0",
"eslint-plugin-import": "^2.18.2",
"eslint-plugin-jsx-a11y": "^6.2.3",
"eslint-plugin-react": "^7.14.3",
"eslint-plugin-react-hooks": "^1.7.0",
"jest": "^24.8.0",
"lodash": "^4.17.15"
"lodash": "^4.17.15",
"react": "^16.9.0"
}
}
29 changes: 15 additions & 14 deletions packages/eslint-config-4catalyzer-react/rules.js
Original file line number Diff line number Diff line change
@@ -1,16 +1,6 @@
module.exports = {
// We put all styling imports at the end.
'import/first': 'off',
// Allow <Link to>.
// TODO: Remove this when airbnb includes this in next release.
'jsx-a11y/anchor-is-valid': [
'error',
{
components: ['Link'],
specialLink: ['to'],
aspects: ['noHref', 'invalidHref', 'preferButton'],
},
],
'jsx-a11y/label-has-associated-control': [
'error',
{
Expand All @@ -21,9 +11,6 @@ module.exports = {
depth: 25,
},
],
'jsx-a11y/label-has-for': 'off',
'react-hooks/rules-of-hooks': 'error',
'react-hooks/exhaustive-deps': 'warn',
// It's clearer to use required even on props with defaults to indicate
// non-nullability.
'react/default-props-match-prop-types': [
Expand All @@ -45,6 +32,8 @@ module.exports = {
extensions: ['.js'],
},
],
// This would be nice to have but it's such a pain.
'react/jsx-props-no-spreading': 'off',
// Taking undefined as implicit default is more consistent with the rest of
// JavaScript.
'react/require-default-props': 'off',
Expand All @@ -54,13 +43,15 @@ module.exports = {
{
order: [
'static-methods',
'type-annotations',
'type-annotations', // This is added.
'instance-variables',
'lifecycle',
'/^(on|handle).+$/',
'getters',
'setters',
'/^(get|set)(?!(InitialState$|DefaultProps$|ChildContext$)).+$/',
// Don't require grouping methods and arrows function properties.
// 'instance-methods',
'everything-else',
'rendering',
],
Expand All @@ -78,16 +69,26 @@ module.exports = {
'getInitialState',
'state',
'getChildContext',
'getDerivedStateFromProps',
'componentWillMount',
'UNSAFE_componentWillMount',
'componentDidMount',
'componentWillReceiveProps',
'UNSAFE_componentWillReceiveProps',
'shouldComponentUpdate',
'componentWillUpdate',
'UNSAFE_componentWillUpdate',
'getSnapshotBeforeUpdate',
'componentDidUpdate',
'componentDidCatch',
'componentWillUnmount',
'componentDidCatch',
],
rendering: ['/^render.+$/', 'render'],
},
},
],
// This seems too fiddly to enforce. Plus the airbnb rule entry has a comment
// saying that they'll eventually flip the value anyway.
'react/state-in-constructor': 'off',
};
3 changes: 1 addition & 2 deletions packages/eslint-config-4catalyzer-react/test/config.test.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
const configTester = require('../../../tools/config-tester');
const pick = require('lodash/pick');
const configTester = require('../../../tools/config-tester');
const config = require('..');

describe('react-config', () => {
Expand Down Expand Up @@ -45,7 +45,6 @@ export default Foo;
`,
);

console.log(result);
expect(result.errorCount).toEqual(0);
});
});
13 changes: 6 additions & 7 deletions packages/eslint-config-4catalyzer-typescript/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -16,19 +16,18 @@ module.exports = {
overrides: [
{
files: ['**/*.ts', '**/*.tsx'],
parser: require.resolve('@typescript-eslint/parser'),
parserOptions: {
sourceType: 'module',
},
plugins: ['@typescript-eslint'],
extends: [
'plugin:@typescript-eslint/eslint-recommended',
'plugin:@typescript-eslint/recommended',
],
rules: require('./rules'),
},
{
files: ['**/*.d.ts'],
rules: {
'import/no-duplicates': 'off',
'import/export': 'off',
// this isn't needed in a type def
'import/no-duplicates': 'off',
// This isn't needed in a type def.
'react/prefer-stateless-function': 'off',
},
},
Expand Down
6 changes: 3 additions & 3 deletions packages/eslint-config-4catalyzer-typescript/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -13,16 +13,16 @@
"author": "4Catalyzer",
"license": "MIT",
"dependencies": {
"@typescript-eslint/parser": "^1.13.0",
"@typescript-eslint/parser": "^2.0.0",
"babel-eslint": "^10.0.2",
"eslint-import-resolver-typescript": "^1.1.1"
},
"peerDependencies": {
"@typescript-eslint/eslint-plugin": "^1.13.0",
"@typescript-eslint/eslint-plugin": "^2.0.0",
"eslint-plugin-import": "^2.18.2"
},
"devDependencies": {
"@typescript-eslint/eslint-plugin": "^1.13.0",
"@typescript-eslint/eslint-plugin": "^2.0.0",
"eslint-plugin-import": "^2.18.2"
}
}

0 comments on commit a59c6d5

Please sign in to comment.