@kiwicom/eslint-config
Version:
Eslint configuration describing rules for JS used at Kiwi.com.
80 lines (64 loc) • 2.28 kB
Flow
/*@flow*/declare var __DEV__: boolean;
const prettierRules = require('./extraPrettierRules');
const ERROR = 2;
/**
* This is basically copy-pasted detection from the React plugin except it doesn't
* complain when React dependency is missing. It's because we expect non-React environments.
* See: https://github.com/yannickcr/eslint-plugin-react/blob/6bb160459383a2eeec5d65e3de07e37e997b5f1a/lib/util/version.js#L12
*/
function detectReactVersion() {
try {
const react = require('react'); // eslint-disable-line import/no-extraneous-dependencies
return react.version;
} catch (error) {
if (error.code === 'MODULE_NOT_FOUND') {
return '999.999.999';
}
throw error;
}
}
module.exports = function getCommonConfig(rules: { [key: string]: any, ...}) {
return {
rules: {
...rules,
...prettierRules,
'prettier/prettier': [
ERROR,
{
// see: prettier.config.js
bracketSpacing: true,
printWidth: 100, // see: https://prettier.io/docs/en/options.html#print-width
singleQuote: true,
tabWidth: 2,
trailingComma: 'all' }] },
settings: {
'import/resolver': {
node: {
extensions: ['.js', '.jsx', '.android.js', '.ios.js', '.native.js', '.web.js'] } },
react: {
version: detectReactVersion() } },
globals: {
global: 'readonly', // TODO: make it 'off'
globalThis: 'readonly', // https://github.com/tc39/proposal-global
__: 'readonly', // https://kiwicom.github.io/nitrolib/services.html#intl
__DEV__: 'readonly',
FormData: 'readonly' // https://developer.mozilla.org/en-US/docs/Web/API/FormData
},
plugins: [
'eslint-plugin-babel',
'eslint-plugin-flowtype',
'eslint-plugin-jest',
'eslint-plugin-prefer-object-spread',
'eslint-plugin-react',
'eslint-plugin-react-hooks',
'eslint-plugin-jsx-a11y',
'eslint-plugin-react-native',
'eslint-plugin-relay',
'eslint-plugin-import',
'eslint-plugin-monorepo',
'eslint-plugin-node',
'eslint-plugin-eslint-comments',
'eslint-plugin-kiwicom-incubator',
'eslint-plugin-prettier',
'eslint-plugin-relay-imports'] };
};