mirror of
https://github.com/hanzoai/sentinel.git
synced 2026-10-30 14:49:14 +00:00
79 lines
2.2 KiB
JavaScript
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',
|
|
},
|
|
},
|
|
],
|
|
};
|