
Turn on the 'no-undef' eslint rule and add exceptions for existing global variables. Change-Id: Ia7f38719fc65a7b4182a2f33d72359177de0ef83
304 lines
9.3 KiB
JavaScript
304 lines
9.3 KiB
JavaScript
/**
|
|
* @license
|
|
* Copyright (C) 2020 The Android Open Source Project
|
|
*
|
|
* Licensed 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.
|
|
*/
|
|
|
|
// Do not add any bazel-specific properties in this file to keep it clean.
|
|
// Please add such properties to the .eslintrc-bazel.js file
|
|
|
|
module.exports = {
|
|
"extends": ["eslint:recommended", "google"],
|
|
"parserOptions": {
|
|
"ecmaVersion": 8,
|
|
"sourceType": "module"
|
|
},
|
|
"env": {
|
|
"browser": true,
|
|
"es6": true
|
|
},
|
|
"rules": {
|
|
"no-confusing-arrow": "error",
|
|
"newline-per-chained-call": ["error", {"ignoreChainWithDepth": 2}],
|
|
"arrow-body-style": ["error", "as-needed",
|
|
{"requireReturnForObjectLiteral": true}],
|
|
"arrow-parens": ["error", "as-needed"],
|
|
"block-spacing": ["error", "always"],
|
|
"brace-style": ["error", "1tbs", {"allowSingleLine": true}],
|
|
"camelcase": "off",
|
|
"comma-dangle": ["error", {
|
|
"arrays": "always-multiline",
|
|
"objects": "always-multiline",
|
|
"imports": "always-multiline",
|
|
"exports": "always-multiline",
|
|
"functions": "never"
|
|
}],
|
|
"eol-last": "off",
|
|
"indent": ["error", 2, {
|
|
"MemberExpression": 2,
|
|
"FunctionDeclaration": {"body": 1, "parameters": 2},
|
|
"FunctionExpression": {"body": 1, "parameters": 2},
|
|
"CallExpression": {"arguments": 2},
|
|
"ArrayExpression": 1,
|
|
"ObjectExpression": 1,
|
|
"SwitchCase": 1
|
|
}],
|
|
"keyword-spacing": ["error", {"after": true, "before": true}],
|
|
"lines-between-class-members": ["error", "always"],
|
|
"max-len": [
|
|
"error",
|
|
80,
|
|
2,
|
|
{
|
|
"ignoreComments": true,
|
|
"ignorePattern": "^import .*;$"
|
|
}
|
|
],
|
|
"new-cap": ["error", {
|
|
"capIsNewExceptions": ["Polymer", "LegacyElementMixin",
|
|
"GestureEventListeners", "LegacyDataMixin"]
|
|
}],
|
|
"no-console": "off",
|
|
"no-multiple-empty-lines": ["error", {"max": 1}],
|
|
"no-prototype-builtins": "off",
|
|
"no-redeclare": "off",
|
|
"no-restricted-syntax": [
|
|
"error",
|
|
{
|
|
"selector": "ExpressionStatement > CallExpression > MemberExpression[object.name='test'][property.name='only']",
|
|
"message": "Remove test.only."
|
|
},
|
|
{
|
|
"selector": "ExpressionStatement > CallExpression > MemberExpression[object.name='suite'][property.name='only']",
|
|
"message": "Remove suite.only."
|
|
}
|
|
],
|
|
// no-undef disables global variable.
|
|
// "globals" declares allowed global variables.
|
|
"no-undef": ["error"],
|
|
"no-useless-escape": "off",
|
|
"no-var": "error",
|
|
"operator-linebreak": "off",
|
|
"object-shorthand": ["error", "always"],
|
|
"padding-line-between-statements": [
|
|
"error",
|
|
{
|
|
"blankLine": "always",
|
|
"prev": "class",
|
|
"next": "*"
|
|
},
|
|
{
|
|
"blankLine": "always",
|
|
"prev": "*",
|
|
"next": "class"
|
|
}
|
|
],
|
|
"prefer-arrow-callback": "error",
|
|
"prefer-const": "error",
|
|
"prefer-promise-reject-errors": "error",
|
|
"prefer-spread": "error",
|
|
"quote-props": ["error", "consistent-as-needed"],
|
|
"semi": [2, "always"],
|
|
"template-curly-spacing": "error",
|
|
|
|
"require-jsdoc": 0,
|
|
"valid-jsdoc": 0,
|
|
"jsdoc/check-alignment": 2,
|
|
"jsdoc/check-examples": 0,
|
|
"jsdoc/check-indentation": 0,
|
|
"jsdoc/check-param-names": 0,
|
|
"jsdoc/check-syntax": 0,
|
|
"jsdoc/check-tag-names": 0,
|
|
"jsdoc/check-types": 0,
|
|
"jsdoc/implements-on-classes": 2,
|
|
"jsdoc/match-description": 0,
|
|
"jsdoc/newline-after-description": 2,
|
|
"jsdoc/no-types": 0,
|
|
"jsdoc/no-undefined-types": 0,
|
|
"jsdoc/require-description": 0,
|
|
"jsdoc/require-description-complete-sentence": 0,
|
|
"jsdoc/require-example": 0,
|
|
"jsdoc/require-hyphen-before-param-description": 0,
|
|
"jsdoc/require-jsdoc": 0,
|
|
"jsdoc/require-param": 0,
|
|
"jsdoc/require-param-description": 0,
|
|
"jsdoc/require-param-name": 2,
|
|
"jsdoc/require-param-type": 2,
|
|
"jsdoc/require-returns": 0,
|
|
"jsdoc/require-returns-check": 0,
|
|
"jsdoc/require-returns-description": 0,
|
|
"jsdoc/require-returns-type": 2,
|
|
"jsdoc/valid-types": 2,
|
|
"jsdoc/require-file-overview": ["error", {
|
|
"tags": {
|
|
"license": {
|
|
"mustExist": true,
|
|
"preventDuplicates": true
|
|
}
|
|
}
|
|
}],
|
|
"import/named": 2,
|
|
"import/no-unresolved": 2,
|
|
"import/no-self-import": 2,
|
|
// The no-cycle rule is slow, because it doesn't cache dependencies.
|
|
// Disable it.
|
|
"import/no-cycle": 0,
|
|
"import/no-useless-path-segments": 2,
|
|
"import/no-unused-modules": 2,
|
|
"import/no-default-export": 2
|
|
},
|
|
|
|
// List of allowed globals in all files
|
|
"globals": {
|
|
// Polygerrit global variables.
|
|
// You must not add anything new in this list!
|
|
// Instead export variables from modules
|
|
// TODO(dmfilippov): Remove global variables from polygerrit
|
|
"Auth": "readonly",
|
|
"EventEmitter": "readonly",
|
|
"FetchPromisesCache": "readonly",
|
|
"Gerrit": "readonly",
|
|
"GrAdminApi": "readonly",
|
|
"GrAnnotation": "readonly",
|
|
"GrAnnotationActionsContext": "readonly",
|
|
"GrAnnotationActionsInterface": "readonly",
|
|
"GrAttributeHelper": "readonly",
|
|
"GrChangeActionsInterface": "readonly",
|
|
"GrChangeMetadataApi": "readonly",
|
|
"GrChangeReplyInterface": "readonly",
|
|
"GrChangeViewApi": "readonly",
|
|
"GrCountStringFormatter": "readonly",
|
|
"GrDiffBuilder": "readonly",
|
|
"GrDiffBuilderBinary": "readonly",
|
|
"GrDiffBuilderImage": "readonly",
|
|
"GrDiffBuilderSideBySide": "readonly",
|
|
"GrDiffBuilderUnified": "readonly",
|
|
"GrDiffGroup": "readonly",
|
|
"GrDiffLine": "readonly",
|
|
"GrDisplayNameUtils": "readonly",
|
|
"GrDomHook": "readonly",
|
|
"GrDomHooksManager": "readonly",
|
|
"GrEditConstants": "readonly",
|
|
"GrEmailSuggestionsProvider": "readonly",
|
|
"GrEtagDecorator": "readonly",
|
|
"GrEventHelper": "readonly",
|
|
"GrFileListConstants": "readonly",
|
|
"GrGroupSuggestionsProvider": "readonly",
|
|
"GrLinkTextParser": "readonly",
|
|
"GrPluginActionContext": "readonly",
|
|
"GrPluginEndpoints": "readonly",
|
|
"GrPluginRestApi": "readonly",
|
|
"GrPopupInterface": "readonly",
|
|
"GrRangeNormalizer": "readonly",
|
|
"GrRepoApi": "readonly",
|
|
"GrReporting": "readonly",
|
|
"GrRestApiHelper": "readonly",
|
|
"GrReviewerSuggestionsProvider": "readonly",
|
|
"GrReviewerUpdatesParser": "readonly",
|
|
"GrSettingsApi": "readonly",
|
|
"GrStylesApi": "readonly",
|
|
"GrThemeApi": "readonly",
|
|
"PluginLoader": "readonly",
|
|
"SiteBasedCache": "readonly",
|
|
"util": "readonly",
|
|
// Global variables from 3rd party libraries.
|
|
// You should not add anything in this list, always try to import
|
|
// If import is not possible - you can extend this list
|
|
"Polymer": "readonly",
|
|
"ShadyCSS": "readonly",
|
|
"linkify": "readonly",
|
|
"moment": "readonly",
|
|
"page": "readonly",
|
|
"security": "readonly",
|
|
},
|
|
"overrides": [
|
|
{
|
|
"files": ["*.html", "test.js", "test-infra.js", "template_test.js"],
|
|
"rules": {
|
|
"jsdoc/require-file-overview": "off"
|
|
},
|
|
},
|
|
{
|
|
"files": ["*.html", "common-test-setup.js"],
|
|
// Additional global variables allowed in tests
|
|
"globals": {
|
|
// Global variables from 3rd party test libraries/frameworks.
|
|
// You can extend this list if you want to use other global
|
|
// variables from these libraries and import is not possible
|
|
"MockInteractions": "readonly",
|
|
"_": "readonly",
|
|
"a11ySuite": "readonly",
|
|
"assert": "readonly",
|
|
"expect": "readonly",
|
|
"fixture": "readonly",
|
|
"flush": "readonly",
|
|
"flushAsynchronousOperations": "readonly",
|
|
"setup": "readonly",
|
|
"sinon": "readonly",
|
|
"stub": "readonly",
|
|
"suite": "readonly",
|
|
"suiteSetup": "readonly",
|
|
"teardown": "readonly",
|
|
"test": "readonly",
|
|
// Polygerrit global variables.
|
|
// You must not add anything new in this list!
|
|
// Instead export variables from modules
|
|
// TODO(dmfilippov): Remove global variables from polygerrit
|
|
"isHidden": "readonly",
|
|
"mockPromise": "readonly",
|
|
|
|
}
|
|
},
|
|
{
|
|
"files": "import-href.js",
|
|
"globals": {
|
|
"HTMLImports": "readonly",
|
|
}
|
|
},
|
|
{
|
|
"files": ["test/functional/**/*.js", "wct.conf.js", "template_test.js"],
|
|
// Settings for functional tests. These scripts are node scripts.
|
|
// Turn off "no-undef" to allow any global variable
|
|
"env": {
|
|
"browser": false,
|
|
"node": true,
|
|
"es6": false
|
|
},
|
|
"rules": {
|
|
"no-undef": "off",
|
|
}
|
|
},
|
|
{
|
|
"files": "test/index.html",
|
|
"globals": {
|
|
"WCT": "readonly",
|
|
}
|
|
},
|
|
{
|
|
"files": ["*_html.js", "gr-icons.js", "*-theme.js", "*-styles.js"],
|
|
"rules": {
|
|
"max-len": "off"
|
|
}
|
|
}
|
|
],
|
|
"plugins": [
|
|
"html",
|
|
"jsdoc",
|
|
"import"
|
|
],
|
|
"settings": {
|
|
"html/report-bad-indent": "error"
|
|
},
|
|
};
|