string-kit
Version:
A string manipulation toolbox, featuring a string formatter (inspired by sprintf), a variable inspector (output featuring ANSI colors and HTML) and various escape functions (shell argument, regexp, html, etc).
167 lines (136 loc) • 3.79 kB
JavaScript
module.exports = {
'root': true ,
'env': {
'browser': true ,
'es6': true ,
'node': true
} ,
'parserOptions': {
'ecmaVersion': 2020
} ,
'extends': [ 'eslint:recommended' ] ,
'rules': {
/*
Bad code -- detect anything that can be broken or lead to bugs
*/
'strict': [ 'error' , 'global' ] ,
'unicode-bom': [ 'error' , 'never' ] ,
'radix': 'error' ,
'eqeqeq': 'error' ,
'consistent-return': 'off' ,
'valid-typeof': 'error' ,
'no-unneeded-ternary': 'error' ,
'no-unused-vars': 'warn' , // During development phase, it's boring to clean unused var since they can be used later
'no-lonely-if': 'off' , // Can hurt semantic programming
'no-nested-ternary': 'off' , // Now I use the streamlined ternary operator a lot
'no-shadow': 'error' ,
'no-shadow-restricted-names': 'error' ,
'require-atomic-updates': 'off' , // check for possible race condition on assignment, interesting but too nitpicky
/*
Code preferences
*/
'prefer-arrow-callback': 'error' ,
'prefer-spread': 'warn' ,
'prefer-rest-params': 'warn' ,
'no-control-regex': 'off' , // because thing like \x00 are considered like a control even if escaped...
'no-fallthrough': 'off' ,
'no-empty': [ 'error' , {
'allowEmptyCatch': true
} ] ,
/*
Coding styles -- cosmetic rules and opinionated preferences
*/
// Indent & spaces (general)
'indent': [ 'error' , 'tab' , {
'SwitchCase': 1 ,
'MemberExpression': 1 ,
'flatTernaryExpressions': true
} ] ,
'newline-per-chained-call': 'off',
'no-multi-spaces': 'off' ,
'block-spacing': 'error' ,
'comma-spacing': [ 'error' , {
'before': true ,
'after': true
} ] ,
'no-whitespace-before-property': 'error' ,
'space-before-blocks': 'error' ,
'space-before-function-paren': [ 'error' , {
'anonymous': 'never',
'named': 'never',
'asyncArrow': 'always'
} ] ,
'space-infix-ops': 'error' ,
'space-unary-ops': [ 'error' , {
'words': true ,
'nonwords': true ,
'overrides': {
'-': false ,
}
} ] ,
'space-in-parens': [ 'error' , 'always' , {
'exceptions': [ 'empty' ]
} ] ,
'no-trailing-spaces': 'error' ,
'switch-colon-spacing': [ 'error' , {
'after': true ,
'before': true
} ] ,
'arrow-spacing': 'error' ,
'rest-spread-spacing': [ 'error' , 'always' ] ,
/* Troublesome with commented line of code
'spaced-comment': [ 'error' , 'always' , {
'line': {
'markers': [ '/' ],
'exceptions': [ '-', '*', '/' ]
} ,
'block': {
'exceptions': [ '*' ] ,
'balanced': true
}
} ] ,
*/
// Semi-colon
'semi': [ 'error' , 'always' ] ,
'semi-style': [ 'error' , 'last' ] ,
'semi-spacing': [ 'error' , {
'before': true ,
'after': true
} ] ,
// Objects
'key-spacing': [ 'error' , {
'beforeColon': false ,
'afterColon': true ,
'mode': 'strict'
} ] ,
'object-curly-newline': [ 'error' , {
'ObjectExpression' : {
'consistent': true ,
'minProperties': 4
} ,
'ObjectPattern' : {
// object destructuring assigment
'consistent': true ,
'minProperties': 8
}
} ] ,
'object-curly-spacing': [ 'error' , 'always' ] ,
'object-property-newline': [ 'error' , { 'allowMultiplePropertiesPerLine': true } ] ,
// Arrays
'array-bracket-newline': [ 'error' , 'consistent' ] ,
//'array-element-newline': [ 'error' , { 'multiline': true , 'minItems': 5 } ] ,
'array-bracket-spacing': [ 'error' , 'always' ],
'brace-style': [ 'error' , 'stroustrup' , {
'allowSingleLine': true
} ] ,
// Misc style
'no-else-return': 'warn' ,
'comma-dangle': [ 'error' , 'never' ] ,
'quotes': 'off' ,
'camelcase': 'warn' ,
/*
Method limitation
*/
'no-console': 'off'
}
} ;