blob: 20d18f68204e906cf52221df9302d220ddf5085c [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
const OFF = 0; // turn the rule off
const WARNING = 1; // turn the rule on as a warning (doesn’t affect exit code)
const ERROR = 2; // turn the rule on as an error (exit code is 1 when triggered)
module.exports = {
'root': true,
'extends': 'eslint-config-airbnb-base',
'env': {
'browser': true,
'es6': true,
'jasmine': true
},
'parserOptions': {
'ecmaVersion': 2017,
'sourceType': 'module'
},
'parser': '@typescript-eslint/parser',
'plugins': [
'jasmine',
'@typescript-eslint'
],
overrides: [
{
// Legacy Javascript files
files: ['*.js'],
rules: {
'dot-notation': OFF,
'prefer-arrow-callback': OFF,
'no-var': OFF,
'no-redeclare': OFF,
'no-shadow': OFF,
'quote-props': OFF,
'object-shorthand': OFF,
'vars-on-top': OFF,
'no-param-reassign': OFF,
'block-scoped-var': OFF,
'prefer-destructuring': OFF,
'prefer-template': OFF,
'consistent-return': OFF,
'no-restricted-properties': OFF,
'no-use-before-define': OFF,
'object-curly-spacing': OFF,
'newline-per-chained-call': OFF,
'no-bitwise': OFF,
'no-nested-ternary': OFF,
'no-useless-escape': OFF,
'no-prototype-builtins': OFF,
'arrow-body-style': OFF,
'no-else-return': OFF,
}
},
{
// Typescript files
files: ['*.ts'],
rules: {
'dot-notation': OFF,
'no-shadow': OFF,
'no-use-before-define': OFF,
'@typescript-eslint/no-unused-vars': [ERROR, { args: 'none' }]
}
},
{
// Test files
files: ['*.spec.ts'],
rules: {
'max-classes-per-file': OFF
}
}
],
'rules': {
// Customize for all files
'no-unused-vars': [ERROR, { 'vars': 'all' }],
'lines-between-class-members': [ERROR, 'always', { 'exceptAfterSingleLine': true }],
'indent': [ERROR, 4, { 'SwitchCase': 1 }],
'jasmine/no-focused-tests': ERROR,
'class-methods-use-this': OFF,
'prefer-destructuring': [ERROR, {
'VariableDeclarator': {
'array': false,
'object': true
},
'AssignmentExpression': {
'array': false,
'object': false
}
}],
// Disable for all files
'max-len': OFF,
'func-names': OFF,
'spaced-comment': OFF,
'comma-dangle': OFF,
'import/extensions': OFF,
'import/no-unresolved': OFF,
'import/no-extraneous-dependencies': OFF,
'no-plusplus': OFF,
'react/no-this-in-sfc': OFF,
'prefer-promise-reject-errors': OFF,
'object-curly-newline': OFF,
'no-restricted-globals': OFF,
'import/prefer-default-export': OFF,
'linebreak-style': OFF,
'quotes': [ERROR, 'single', { 'allowTemplateLiterals': true }],
'no-useless-constructor': OFF,
'no-empty-function': OFF,
'no-underscore-dangle': [ERROR, { 'allowAfterThis': true }]
},
};