Files
sentinel/.eslintrc.js
2024-02-15 17:01:50 +00:00

79 lines
2.2 KiB
JavaScript

/* eslint-env node */
const isRelaxed = !!process.env.SENTRY_ESLINT_RELAXED;
const isCi = !!process.env.CI;
// Strict ruleset that runs on pre-commit and in local environments
const ADDITIONAL_HOOKS_TO_CHECK_DEPS_FOR =
'(useEffectAfterFirstRender|useMemoWithPrevious)';
const strictRulesNotCi = {
'react-hooks/exhaustive-deps': [
'error',
{additionalHooks: ADDITIONAL_HOOKS_TO_CHECK_DEPS_FOR},
],
};
module.exports = {
root: true,
extends: [isRelaxed ? 'sentry-app' : 'sentry-app/strict'],
globals: {
require: false,
expect: false,
sinon: false,
MockApiClient: true,
tick: true,
jest: true,
},
rules: {
'react-hooks/exhaustive-deps': [
'warn',
{additionalHooks: ADDITIONAL_HOOKS_TO_CHECK_DEPS_FOR},
],
...(!isRelaxed && !isCi ? strictRulesNotCi : {}),
// TODO(@anonrig): Remove this from eslint-sentry-config
'space-infix-ops': 'off',
'object-shorthand': 'off',
'object-curly-spacing': 'off',
'import/no-amd': 'off',
'no-danger-with-children': 'off',
'no-fallthrough': 'off',
'no-obj-calls': 'off',
'array-bracket-spacing': 'off',
'computed-property-spacing': 'off',
'react/no-danger-with-children': 'off',
},
// JSON file formatting is handled by Biome. ESLint should not be linting
// and formatting these files.
ignorePatterns: ['*.json'],
overrides: [
{
files: ['tests/js/**/*.{ts,js}'],
extends: ['plugin:testing-library/react', 'sentry-app/strict'],
rules: {
// TODO(@anonrig): Remove this from eslint-sentry-config
'space-infix-ops': 'off',
'object-shorthand': 'off',
'object-curly-spacing': 'off',
'import/no-amd': 'off',
'no-danger-with-children': 'off',
'no-fallthrough': 'off',
'no-obj-calls': 'off',
'array-bracket-spacing': 'off',
'computed-property-spacing': 'off',
'react/no-danger-with-children': 'off',
},
},
{
// We specify rules explicitly for the sdk-loader here so we do not have
// eslint ignore comments included in the source file, which is consumed
// by users.
files: ['**/js-sdk-loader.ts'],
rules: {
'no-console': 'off',
},
},
],
};