eslint.config.mjs (80 lines of code) (raw):
import globals from 'globals';
import guardian from '@guardian/eslint-config';
export default [
{
ignores: [
'**/*.js',
'**/*.mjs',
'**/dist',
'src/lib/__mocks__/ad-sizes.ts',
],
},
...guardian.configs.recommended,
...guardian.configs.jest,
{
languageOptions: {
globals: {
...globals.jest,
...globals.browser,
...globals.node,
googletag: 'readonly',
},
ecmaVersion: 5,
sourceType: 'commonjs',
parserOptions: {
project: ['./tsconfig.json'],
tsconfigRootDir: './',
},
},
settings: {
'import/resolver': {
alias: {
map: [['svgs', './static/svg']],
},
},
},
rules: {
'id-denylist': ['error'],
'@typescript-eslint/no-unsafe-argument': 'off',
'@typescript-eslint/no-unsafe-return': 'off',
'@typescript-eslint/unbound-method': 'off',
curly: ['error', 'multi-line'],
'no-use-before-define': [
'error',
{
functions: true,
classes: true,
},
],
'import/exports-last': 'error',
'no-else-return': 'error',
'no-restricted-imports': [
'error',
{
patterns: [
{
group: [
'define/*',
'display/*',
'events/*',
'experiments/*',
'init/*',
'lib/*',
'insert/*',
'types/*',
],
message:
'Non-relative imports from src are forbidden. Please use a relative path instead',
},
],
},
],
},
},
{
files: ['**/*.spec.ts'],
rules: {
'@typescript-eslint/unbound-method': 'off',
},
},
];