feat: manually mirror opencoze's code from bytedance
Change-Id: I09a73aadda978ad9511264a756b2ce51f5761adf
This commit is contained in:
163
frontend/config/eslint-config/rules/js-standard.js
Normal file
163
frontend/config/eslint-config/rules/js-standard.js
Normal file
@@ -0,0 +1,163 @@
|
||||
const babelOptions = {
|
||||
plugins: [
|
||||
[
|
||||
require.resolve('@babel/plugin-proposal-decorators'),
|
||||
{
|
||||
legacy: true,
|
||||
},
|
||||
],
|
||||
[
|
||||
require.resolve('@babel/plugin-proposal-class-properties'),
|
||||
{
|
||||
loose: true,
|
||||
},
|
||||
],
|
||||
require.resolve('@babel/plugin-proposal-object-rest-spread'),
|
||||
require.resolve('@babel/plugin-proposal-optional-catch-binding'),
|
||||
require.resolve('@babel/plugin-proposal-async-generator-functions'),
|
||||
require.resolve('@babel/plugin-proposal-export-namespace-from'),
|
||||
require.resolve('@babel/plugin-proposal-export-default-from'),
|
||||
require.resolve('@babel/plugin-proposal-nullish-coalescing-operator'),
|
||||
require.resolve('@babel/plugin-proposal-optional-chaining'),
|
||||
[
|
||||
require.resolve('@babel/plugin-proposal-pipeline-operator'),
|
||||
{
|
||||
proposal: 'minimal',
|
||||
},
|
||||
],
|
||||
require.resolve('@babel/plugin-proposal-do-expressions'),
|
||||
require.resolve('@babel/plugin-proposal-function-bind'),
|
||||
require.resolve('@babel/plugin-syntax-dynamic-import'),
|
||||
require.resolve('@babel/plugin-syntax-jsx'),
|
||||
],
|
||||
};
|
||||
|
||||
/** @type {(import('eslint').Linter.Config)[]} */
|
||||
module.exports = [
|
||||
{
|
||||
files: ['**/*.?(m|c)js?(x)'],
|
||||
rules: {
|
||||
'no-import-assign': 'error',
|
||||
'no-extra-semi': 'error',
|
||||
'no-undef': 'error',
|
||||
'no-unused-vars': [
|
||||
'error',
|
||||
{
|
||||
argsIgnorePattern: '^_',
|
||||
},
|
||||
],
|
||||
'comma-dangle': ['error', 'always-multiline'],
|
||||
'no-array-constructor': 'error',
|
||||
'dot-notation': 'error',
|
||||
'constructor-super': 'error',
|
||||
'no-this-before-super': 'error',
|
||||
'no-useless-constructor': 'error',
|
||||
'getter-return': [
|
||||
'error',
|
||||
{
|
||||
allowImplicit: true,
|
||||
},
|
||||
],
|
||||
'no-setter-return': 'error',
|
||||
'no-dupe-class-members': 'error',
|
||||
'default-param-last': 'error',
|
||||
'no-func-assign': 'error',
|
||||
'no-unsafe-negation': 'error',
|
||||
'valid-typeof': 'error',
|
||||
'no-empty-function': 'error',
|
||||
quotes: [
|
||||
'error',
|
||||
'single',
|
||||
{
|
||||
avoidEscape: true,
|
||||
},
|
||||
],
|
||||
'no-loss-of-precision': 'error',
|
||||
'no-magic-numbers': [
|
||||
'warn',
|
||||
{
|
||||
ignoreArrayIndexes: true,
|
||||
ignoreDefaultValues: true,
|
||||
enforceConst: true,
|
||||
ignore: [0, 1, -1],
|
||||
ignoreClassFieldInitialValues: true,
|
||||
},
|
||||
],
|
||||
'no-unreachable': 'error',
|
||||
'no-throw-literal': 'error',
|
||||
'no-implied-eval': 'error',
|
||||
'no-new-symbol': 'error',
|
||||
'no-obj-calls': 'error',
|
||||
camelcase: [
|
||||
'error',
|
||||
{
|
||||
properties: 'never',
|
||||
allow: ['^UNSAFE_'],
|
||||
ignoreDestructuring: true,
|
||||
},
|
||||
],
|
||||
'unicorn/filename-case': [
|
||||
'error',
|
||||
{
|
||||
cases: {
|
||||
kebabCase: true,
|
||||
},
|
||||
},
|
||||
],
|
||||
'max-lines-per-function': [
|
||||
'error',
|
||||
{
|
||||
max: 300,
|
||||
IIFEs: true,
|
||||
},
|
||||
],
|
||||
},
|
||||
languageOptions: {
|
||||
parser: require('@babel/eslint-parser'),
|
||||
parserOptions: {
|
||||
ecmaVersion: 11,
|
||||
sourceType: 'module',
|
||||
ecmaFeatures: {
|
||||
jsx: true,
|
||||
legacyDecorators: true,
|
||||
},
|
||||
requireConfigFile: false,
|
||||
babelOptions,
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
// for jsx
|
||||
files: ['**/*.?(m|c)jsx'],
|
||||
rules: {
|
||||
'react/jsx-uses-react': 'error',
|
||||
'react/jsx-uses-vars': 'error',
|
||||
'unicorn/filename-case': [
|
||||
'warn',
|
||||
{
|
||||
cases: {
|
||||
kebabCase: true,
|
||||
snakeCase: true,
|
||||
pascalCase: true,
|
||||
},
|
||||
ignore: ['^(?!.*?\\.jsx$)(?!.*?\\.tsx$).+'],
|
||||
},
|
||||
],
|
||||
'max-lines-per-function': [
|
||||
'warn',
|
||||
{
|
||||
max: 300,
|
||||
IIFEs: true,
|
||||
},
|
||||
],
|
||||
'max-lines': [
|
||||
'error',
|
||||
{
|
||||
max: 500,
|
||||
skipComments: true,
|
||||
skipBlankLines: true,
|
||||
},
|
||||
],
|
||||
},
|
||||
},
|
||||
];
|
||||
Reference in New Issue
Block a user