2022-10-12 19:08:26 -04:00
|
|
|
const jsSuffixes = '{js,mjs,cjs,jsx}'
|
|
|
|
|
|
|
|
const mongoFiles = [`ansible/playbooks/files/migrate_data.${jsSuffixes}`]
|
2022-09-21 09:28:59 -04:00
|
|
|
const nodeFiles = [
|
2022-10-12 19:08:26 -04:00
|
|
|
`**/build.dflt.${jsSuffixes}`,
|
|
|
|
`**/build.${jsSuffixes}`,
|
|
|
|
`**/config/**/*.${jsSuffixes}`,
|
2022-10-14 19:02:01 -04:00
|
|
|
`**/*.config.${jsSuffixes}`,
|
2022-10-12 19:08:26 -04:00
|
|
|
`**/prebuild.${jsSuffixes}`,
|
|
|
|
`**/prebuild/**/*.${jsSuffixes}`,
|
|
|
|
`**/scripts/**/*.${jsSuffixes}`,
|
|
|
|
`packages/new-design/lib/**/*.${jsSuffixes}`,
|
|
|
|
`sites/backend/**/*.${jsSuffixes}`,
|
|
|
|
`sites/*/mdx/**/*.${jsSuffixes}`,
|
|
|
|
`sites/*/themes/**/*.${jsSuffixes}`,
|
2022-09-21 09:28:59 -04:00
|
|
|
]
|
|
|
|
const frontendFiles = [
|
2022-10-12 19:08:26 -04:00
|
|
|
`**/components/**/*.${jsSuffixes}`,
|
|
|
|
`**/hooks/**/*.${jsSuffixes}`,
|
|
|
|
`**/pages/**/*.${jsSuffixes}`,
|
|
|
|
`**/page-templates/**/*.${jsSuffixes}`,
|
|
|
|
`packages/i18n/**/*.md/*.${jsSuffixes}`,
|
2023-06-07 10:06:30 -05:00
|
|
|
`packages/react-components/**/*.${jsSuffixes}`,
|
2022-09-21 09:28:59 -04:00
|
|
|
]
|
|
|
|
|
2022-09-21 09:28:59 -04:00
|
|
|
module.exports = {
|
|
|
|
extends: 'eslint:recommended',
|
|
|
|
env: {
|
|
|
|
es2021: true,
|
2023-06-19 16:27:13 -05:00
|
|
|
node: true,
|
2022-09-21 09:28:59 -04:00
|
|
|
},
|
|
|
|
// Required when using experimental EcmaScript features
|
|
|
|
parser: '@babel/eslint-parser',
|
|
|
|
parserOptions: {
|
|
|
|
ecmaVersion: 'latest',
|
|
|
|
sourceType: 'module',
|
|
|
|
// Options specific to the Babel parser
|
|
|
|
requireConfigFile: false,
|
|
|
|
babelOptions: {
|
|
|
|
plugins: ['@babel/plugin-syntax-import-assertions'],
|
2023-06-28 16:52:36 -05:00
|
|
|
presets: ['@babel/preset-react'],
|
2022-09-21 09:28:59 -04:00
|
|
|
},
|
|
|
|
},
|
|
|
|
rules: {},
|
|
|
|
overrides: [
|
2022-09-21 09:28:59 -04:00
|
|
|
// Partitioned JavaScript files
|
2022-09-26 22:16:10 -04:00
|
|
|
{
|
|
|
|
files: mongoFiles,
|
|
|
|
plugins: ['mongo'],
|
|
|
|
env: {
|
|
|
|
'mongo/shell': true,
|
|
|
|
},
|
|
|
|
},
|
2022-09-21 09:28:59 -04:00
|
|
|
{
|
|
|
|
files: nodeFiles,
|
|
|
|
env: {
|
|
|
|
node: true,
|
|
|
|
},
|
|
|
|
rules: {
|
|
|
|
'no-console': 'off',
|
|
|
|
},
|
|
|
|
},
|
|
|
|
{
|
|
|
|
files: frontendFiles,
|
|
|
|
excludedFiles: nodeFiles,
|
2023-05-17 13:25:40 +02:00
|
|
|
extends: ['next'],
|
|
|
|
settings: {
|
|
|
|
next: {
|
|
|
|
rootDir: 'sites/dev/',
|
|
|
|
},
|
2022-09-21 09:28:59 -04:00
|
|
|
},
|
|
|
|
},
|
|
|
|
{
|
2022-10-12 19:08:26 -04:00
|
|
|
files: [`**/*.${jsSuffixes}{,.mustache}`],
|
2022-09-26 22:16:10 -04:00
|
|
|
excludedFiles: [].concat(mongoFiles, nodeFiles, frontendFiles),
|
2022-09-21 09:28:59 -04:00
|
|
|
env: {
|
|
|
|
'shared-node-browser': true,
|
|
|
|
},
|
|
|
|
},
|
|
|
|
// Additional globals for JavaScript files that happen to be CommonJS.
|
|
|
|
// Only allowed in *.cjs files, not *.js files, because we probably want to move towards
|
|
|
|
// a `"type": "module"` future where any CommonJS files would have to have .cjs extensions.
|
2022-09-21 09:28:59 -04:00
|
|
|
{
|
|
|
|
files: ['**/*.cjs'],
|
|
|
|
env: {
|
|
|
|
commonjs: true,
|
|
|
|
},
|
|
|
|
},
|
2022-09-21 09:28:59 -04:00
|
|
|
// Additional globals for JavaScript files that happen to contain Mocha tests
|
|
|
|
{
|
2022-10-14 19:02:01 -04:00
|
|
|
files: [
|
|
|
|
`**/tests/**/*.${jsSuffixes}`,
|
|
|
|
`**/*.test.${jsSuffixes}`,
|
|
|
|
'scripts/test-failure-collector.js',
|
|
|
|
],
|
2022-09-21 09:28:59 -04:00
|
|
|
env: {
|
|
|
|
mocha: true,
|
2022-11-15 17:29:02 -06:00
|
|
|
node: true,
|
2022-09-21 09:28:59 -04:00
|
|
|
},
|
|
|
|
},
|
2022-09-21 09:28:59 -04:00
|
|
|
|
2022-09-21 10:28:38 -04:00
|
|
|
// JSON files
|
|
|
|
{
|
2022-10-12 19:08:26 -04:00
|
|
|
files: ['**/*.{json,json5,jsonc}{,.mustache}'],
|
2022-09-21 10:28:38 -04:00
|
|
|
extends: ['plugin:jsonc/recommended-with-jsonc'],
|
|
|
|
parser: 'jsonc-eslint-parser',
|
|
|
|
},
|
|
|
|
|
2022-09-21 09:28:59 -04:00
|
|
|
// YAML files
|
|
|
|
{
|
|
|
|
files: ['**/*.yaml', '**/*.yml'],
|
|
|
|
plugins: ['yaml'],
|
|
|
|
extends: ['plugin:yaml/recommended'],
|
|
|
|
},
|
|
|
|
|
|
|
|
// Markdown files
|
|
|
|
{
|
2022-09-21 09:28:59 -04:00
|
|
|
files: ['**/markdown/**', '**/*.md'],
|
2022-09-21 09:28:59 -04:00
|
|
|
plugins: ['markdown'],
|
|
|
|
processor: 'markdown/markdown',
|
|
|
|
},
|
|
|
|
{
|
|
|
|
files: ['**/*.md/*.js'],
|
|
|
|
rules: {
|
|
|
|
'no-console': 'off',
|
|
|
|
'no-empty': 'off',
|
|
|
|
'no-undef': 'off',
|
|
|
|
'no-unused-labels': 'off',
|
|
|
|
'no-unused-vars': 'off',
|
|
|
|
},
|
|
|
|
},
|
|
|
|
],
|
|
|
|
}
|