This commit is contained in:
Nick Schonning 2024-04-26 18:07:06 +00:00 committed by GitHub
commit eceb6cb70c
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
6 changed files with 70 additions and 83 deletions

View File

@ -52,10 +52,7 @@ module.exports = defineConfig({
react: {
version: 'detect',
},
'import/ignore': [
'node_modules',
'\\.(css|scss|json)$',
],
'import/ignore': ['node_modules', '\\.(css|scss|json)$'],
'import/resolver': {
typescript: {},
},
@ -64,19 +61,16 @@ module.exports = defineConfig({
rules: {
'consistent-return': 'error',
'dot-notation': 'error',
eqeqeq: ['error', 'always', { 'null': 'ignore' }],
'indent': ['error', 2],
eqeqeq: ['error', 'always', { null: 'ignore' }],
indent: ['error', 2],
'jsx-quotes': ['error', 'prefer-single'],
'semi': ['error', 'always'],
semi: ['error', 'always'],
'no-case-declarations': 'off',
'no-catch-shadow': 'error',
'no-console': [
'warn',
{
allow: [
'error',
'warn',
],
allow: ['error', 'warn'],
},
],
'no-empty': 'off',
@ -150,9 +144,7 @@ module.exports = defineConfig({
'jsx-a11y/no-noninteractive-element-interactions': [
'warn',
{
handlers: [
'onClick',
],
handlers: ['onClick'],
},
],
// recommended rule is:
@ -170,9 +162,7 @@ module.exports = defineConfig({
'jsx-a11y/no-static-element-interactions': [
'warn',
{
handlers: [
'onClick',
],
handlers: ['onClick'],
},
],
@ -245,7 +235,8 @@ module.exports = defineConfig({
},
// Immutable / Redux / data store
{
pattern: '{immutable,@reduxjs/toolkit,react-redux,react-immutable-proptypes,react-immutable-pure-component}',
pattern:
'{immutable,@reduxjs/toolkit,react-redux,react-immutable-proptypes,react-immutable-pure-component}',
group: 'external',
position: 'before',
},
@ -322,10 +313,7 @@ module.exports = defineConfig({
},
},
{
files: [
'**/*.ts',
'**/*.tsx',
],
files: ['**/*.ts', '**/*.tsx'],
extends: [
'eslint:recommended',
@ -347,21 +335,25 @@ module.exports = defineConfig({
rules: {
// Disable formatting rules that have been enabled in the base config
'indent': 'off',
indent: 'off',
'import/consistent-type-specifier-style': ['error', 'prefer-top-level'],
'@typescript-eslint/consistent-type-definitions': ['warn', 'interface'],
'@typescript-eslint/consistent-type-exports': 'error',
'@typescript-eslint/consistent-type-imports': 'error',
"@typescript-eslint/prefer-nullish-coalescing": ['error', { ignorePrimitives: { boolean: true } }],
"@typescript-eslint/no-restricted-imports": [
"warn",
'@typescript-eslint/prefer-nullish-coalescing': [
'error',
{ ignorePrimitives: { boolean: true } },
],
'@typescript-eslint/no-restricted-imports': [
'warn',
{
"name": "react-redux",
"importNames": ["useSelector", "useDispatch"],
"message": "Use typed hooks `useAppDispatch` and `useAppSelector` instead."
}
name: 'react-redux',
importNames: ['useSelector', 'useDispatch'],
message:
'Use typed hooks `useAppDispatch` and `useAppSelector` instead.',
},
],
"@typescript-eslint/restrict-template-expressions": ['warn', { allowNumber: true }],
'jsdoc/require-jsdoc': 'off',
@ -370,21 +362,21 @@ module.exports = defineConfig({
// to enforce better practices when converting from JS
'import/no-default-export': 'warn',
'react/prefer-stateless-function': 'warn',
'react/function-component-definition': ['error', { namedComponents: 'arrow-function' }],
'react/function-component-definition': [
'error',
{ namedComponents: 'arrow-function' },
],
'react/jsx-uses-react': 'off', // not needed with new JSX transform
'react/react-in-jsx-scope': 'off', // not needed with new JSX transform
'react/prop-types': 'off',
},
},
{
files: [
'**/__tests__/*.js',
'**/__tests__/*.jsx',
],
files: ['**/__tests__/*.js', '**/__tests__/*.jsx'],
env: {
jest: true,
},
}
},
],
});

View File

@ -82,4 +82,4 @@ app/javascript/styles/mastodon/reset.scss
AUTHORS.md
# Process a few selected JS files
!lint-staged.config.js
!/*.js

View File

@ -1,4 +1,4 @@
module.exports = {
singleQuote: true,
jsxSingleQuote: true
}
jsxSingleQuote: true,
};

View File

@ -1,3 +1,4 @@
/* eslint-disable indent */
module.exports = (api) => {
const env = api.env();
@ -7,8 +8,8 @@ module.exports = (api) => {
};
const envOptions = {
useBuiltIns: "usage",
corejs: { version: "3.30" },
useBuiltIns: 'usage',
corejs: { version: '3.30' },
debug: false,
include: [
'transform-numeric-separator',
@ -18,45 +19,42 @@ module.exports = (api) => {
],
};
const plugins = [
['formatjs'],
'preval',
];
const plugins = [['formatjs'], 'preval'];
switch (env) {
case 'production':
plugins.push(...[
'lodash',
[
'transform-react-remove-prop-types',
{
mode: 'remove',
removeImport: true,
additionalLibraries: [
'react-immutable-proptypes',
case 'production':
plugins.push(
...[
'lodash',
[
'transform-react-remove-prop-types',
{
mode: 'remove',
removeImport: true,
additionalLibraries: ['react-immutable-proptypes'],
},
],
},
],
'@babel/transform-react-inline-elements',
[
'@babel/transform-runtime',
{
helpers: true,
regenerator: false,
useESModules: true,
},
],
]);
break;
'@babel/transform-react-inline-elements',
[
'@babel/transform-runtime',
{
helpers: true,
regenerator: false,
useESModules: true,
},
],
],
);
break;
case 'development':
reactOptions.development = true;
envOptions.debug = true;
case 'development':
reactOptions.development = true;
envOptions.debug = true;
// We need Babel to not inject polyfills in dev, as this breaks `preval` files
envOptions.useBuiltIns = false;
envOptions.corejs = undefined;
break;
// We need Babel to not inject polyfills in dev, as this breaks `preval` files
envOptions.useBuiltIns = false;
envOptions.corejs = undefined;
break;
}
const config = {
@ -69,9 +67,7 @@ module.exports = (api) => {
overrides: [
{
test: /tesseract\.js/,
presets: [
['@babel/env', { ...envOptions, modules: 'commonjs' }],
],
presets: [['@babel/env', { ...envOptions, modules: 'commonjs' }]],
},
],
};

View File

@ -6,7 +6,7 @@ jetbrains://WebStorm/settings?name=Languages+%26+Frameworks--JavaScript--Webpack
module.exports = {
resolve: {
alias: {
'mastodon': path.resolve(__dirname, 'app/javascript/mastodon'),
mastodon: path.resolve(__dirname, 'app/javascript/mastodon'),
},
},
};

View File

@ -31,14 +31,13 @@ module.exports = {
},
overrides: [
{
'files': ['app/javascript/styles/mailer.scss'],
files: ['app/javascript/styles/mailer.scss'],
rules: {
'property-no-unknown': [
true,
{
ignoreProperties: [
'/^mso-/',
] },
ignoreProperties: ['/^mso-/'],
},
],
},
},