mirror of
https://github.com/Leaflet/Leaflet.git
synced 2025-12-08 21:26:14 +00:00
139 lines
3.3 KiB
JavaScript
139 lines
3.3 KiB
JavaScript
import config from 'eslint-config-mourner';
|
|
import css from '@eslint/css';
|
|
import scriptTags from '@mapbox/eslint-plugin-script-tags';
|
|
import importPlugin from 'eslint-plugin-import-x';
|
|
import globals from 'globals';
|
|
import baselineJs from 'eslint-plugin-baseline-js';
|
|
|
|
export default [
|
|
...config.map(c => ({
|
|
...c,
|
|
files: ['**/*.js', '**/*.cjs'],
|
|
})),
|
|
{
|
|
languageOptions: {
|
|
ecmaVersion: 'latest',
|
|
},
|
|
},
|
|
{
|
|
ignores: [
|
|
'dist/*.js',
|
|
'docs/docs/highlight',
|
|
'docs/examples/choropleth/us-states.js',
|
|
'docs/examples/geojson/sample-geojson.js',
|
|
'docs/examples/map-panes/eu-countries.js',
|
|
'docs/examples/extending-2-layers/index.md',
|
|
'docs/examples/quick-start/index.md', // importmap is not recognized by eslint
|
|
'docs/download.md', // importmap is not recognized by eslint
|
|
'docs/_posts/2025-05-18-leaflet-2.0.0-alpha.md', // importmap is not recognized by eslint
|
|
'docs/_posts/201*',
|
|
'docs/_site',
|
|
'coverage'
|
|
]
|
|
},
|
|
{
|
|
files: ['**/*.js', '**/*.cjs'],
|
|
plugins: {
|
|
import: importPlugin
|
|
},
|
|
rules: {
|
|
'dot-notation': 'off',
|
|
'consistent-return': 'off',
|
|
'curly': 'error',
|
|
'no-unused-expressions': ['error', {allowShortCircuit: true}],
|
|
'no-unused-vars': ['error', {caughtErrors: 'none'}],
|
|
|
|
'import/extensions': ['error', 'ignorePackages'],
|
|
|
|
'@stylistic/indent': ['error', 'tab', {VariableDeclarator: 0, flatTernaryExpressions: true}],
|
|
'@stylistic/no-mixed-spaces-and-tabs': ['error', 'smart-tabs'],
|
|
'@stylistic/key-spacing': 'off',
|
|
'@stylistic/linebreak-style': ['off', 'unix'],
|
|
'@stylistic/spaced-comment': 'error',
|
|
|
|
// TODO: Re-enable the rules below and fix the linting issues.
|
|
'no-invalid-this': 'off',
|
|
'prefer-exponentiation-operator': 'error',
|
|
'prefer-object-has-own': 'error',
|
|
'prefer-spread': 'off',
|
|
'no-new': 'off'
|
|
}
|
|
},
|
|
{
|
|
files: ['**/*.css'],
|
|
language: 'css/css',
|
|
...css.configs.recommended,
|
|
rules: {
|
|
...css.configs.recommended.rules,
|
|
'css/no-important': 'warn',
|
|
'css/use-baseline': ['error', {
|
|
allowProperties: [
|
|
'clip',
|
|
'outline',
|
|
'print-color-adjust',
|
|
'user-select',
|
|
'word-break',
|
|
],
|
|
allowSelectors: [
|
|
'has',
|
|
'nesting',
|
|
]
|
|
}]
|
|
}
|
|
},
|
|
{
|
|
files: ['**/*.{js,ts,jsx,tsx}'],
|
|
plugins: {'baseline-js': baselineJs},
|
|
rules: {
|
|
'baseline-js/use-baseline': ['error', {
|
|
available: 'widely',
|
|
includeWebApis: {preset: 'auto', ignore: [
|
|
// According to https://developer.mozilla.org/en-US/docs/Web/API/Window/devicePixelRatio, the feature is only partially supported in Safari:
|
|
// In Safari on iOS, the devicePixelRatio does not change when the page is zoomed. See bug https://webkit.org/b/124862.
|
|
'devicepixelratio',
|
|
]},
|
|
includeJsBuiltins: {preset: 'auto'},
|
|
}],
|
|
},
|
|
},
|
|
{
|
|
files: ['docs/examples/**', 'docs/plugins.md'],
|
|
rules: {
|
|
'@stylistic/eol-last': 'off',
|
|
},
|
|
},
|
|
{
|
|
files: ['spec/**'],
|
|
languageOptions: {
|
|
globals: {...globals.mocha}
|
|
},
|
|
rules: {
|
|
'no-unused-expressions': 'off'
|
|
}
|
|
},
|
|
{
|
|
files: ['build/**'],
|
|
languageOptions: {
|
|
parserOptions: {
|
|
ecmaVersion: 2022
|
|
}
|
|
}
|
|
},
|
|
{
|
|
files: ['docs/**/*.md'],
|
|
plugins: {
|
|
scriptTags: {
|
|
processors: {md: scriptTags.processors['.md']}
|
|
}
|
|
},
|
|
processor: 'scriptTags/md',
|
|
rules: {
|
|
'no-unused-vars': 'off',
|
|
'@stylistic/js/eol-last': 'off'
|
|
},
|
|
languageOptions: {
|
|
globals: {L: false}
|
|
}
|
|
}
|
|
];
|