mirror of
https://github.com/elastic/kibana.git
synced 2025-04-23 17:28:26 -04:00
Upgrade eslint (#9357)
* upgrade eslint, all related deps, and config files * replace gruntify-eslint with basic eslint-cli wrapper * arrow-IIFEs must be invoked outside of the parens * move import statements before their use * reindent to satisfy new indentation check algorithm * place missing semicolon * ignore copy-pasted decode geohash code * [grunt/eslint] fix argument spacing * [gurnt/eslint] add comment about contents of report * [grunt/tasks] use `export default`
This commit is contained in:
parent
5864f2b093
commit
0c736724b0
14 changed files with 163 additions and 171 deletions
|
@ -1,5 +1,9 @@
|
|||
/optimize
|
||||
/src/fixtures/vislib/mock_data
|
||||
/src/ui/public/angular-bootstrap
|
||||
/test/fixtures/scenarios
|
||||
/src/core_plugins/console/public/webpackShims
|
||||
/src/core_plugins/console/public/tests/webpackShims
|
||||
/src/core_plugins/timelion/bower_components
|
||||
/src/core_plugins/timelion/vendor_components
|
||||
test/fixtures/scenarios
|
||||
optimize
|
||||
test/fixtures/scenarios
|
||||
/src/ui/public/utils/decode_geo_hash.js
|
||||
|
|
|
@ -1,2 +1,8 @@
|
|||
---
|
||||
extends: '@elastic/kibana'
|
||||
rules:
|
||||
no-unused-vars: off
|
||||
no-var: off
|
||||
prefer-const: off
|
||||
no-extra-semi: off
|
||||
quotes: off
|
||||
|
|
12
Gruntfile.js
12
Gruntfile.js
|
@ -38,18 +38,6 @@ module.exports = function (grunt) {
|
|||
' * Copyright (c) <%= grunt.template.today("yyyy") %> <%= package.author.company %>;' +
|
||||
' Licensed <%= package.license %> */\n'
|
||||
},
|
||||
|
||||
lintThese: [
|
||||
'Gruntfile.js',
|
||||
'<%= root %>/tasks/**/*.js',
|
||||
'<%= root %>/test/**/*.js',
|
||||
'<%= src %>/**/*.js',
|
||||
'!<%= src %>/ui/public/angular-bootstrap/**/*.js',
|
||||
'!<%= src %>/core_plugins/timelion/bower_components/**/*.js',
|
||||
'!<%= src %>/core_plugins/timelion/vendor_components/**/*.js',
|
||||
'!<%= src %>/fixtures/**/*.js',
|
||||
'!<%= root %>/test/fixtures/scenarios/**/*.js'
|
||||
]
|
||||
};
|
||||
|
||||
grunt.config.merge(config);
|
||||
|
|
|
@ -165,17 +165,17 @@
|
|||
"wreck": "6.2.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@elastic/eslint-config-kibana": "0.0.3",
|
||||
"@elastic/eslint-config-kibana": "0.2.1",
|
||||
"angular-mocks": "1.4.7",
|
||||
"auto-release-sinon": "1.0.3",
|
||||
"babel-eslint": "4.1.8",
|
||||
"babel-eslint": "6.1.2",
|
||||
"chai": "3.5.0",
|
||||
"cheerio": "0.22.0",
|
||||
"chokidar": "1.6.0",
|
||||
"chromedriver": "2.24.1",
|
||||
"elasticdump": "2.1.1",
|
||||
"eslint": "1.10.3",
|
||||
"eslint-plugin-mocha": "1.1.0",
|
||||
"eslint": "3.11.1",
|
||||
"eslint-plugin-mocha": "4.7.0",
|
||||
"event-stream": "3.3.2",
|
||||
"expect.js": "0.3.1",
|
||||
"faker": "1.1.0",
|
||||
|
@ -189,7 +189,6 @@
|
|||
"grunt-karma": "2.0.0",
|
||||
"grunt-run": "0.6.0",
|
||||
"grunt-simple-mocha": "0.4.0",
|
||||
"gruntify-eslint": "1.0.1",
|
||||
"gulp-sourcemaps": "1.7.3",
|
||||
"handlebars": "4.0.5",
|
||||
"husky": "0.8.1",
|
||||
|
|
|
@ -24,7 +24,7 @@ export default class MockClusterFork extends EventEmitter {
|
|||
dead = true;
|
||||
this.emit('exit');
|
||||
cluster.emit('exit', this, this.exitCode || 0);
|
||||
}());
|
||||
})();
|
||||
}),
|
||||
},
|
||||
isDead: sinon.spy(() => dead),
|
||||
|
@ -39,6 +39,6 @@ export default class MockClusterFork extends EventEmitter {
|
|||
await wait();
|
||||
dead = false;
|
||||
this.emit('online');
|
||||
}());
|
||||
})();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -86,19 +86,16 @@ module.exports = class ClusterManager {
|
|||
const chokidar = require('chokidar');
|
||||
const fromRoot = require('../../utils/from_root');
|
||||
|
||||
const watchPaths = uniq(
|
||||
[
|
||||
fromRoot('src/core_plugins'),
|
||||
fromRoot('src/server'),
|
||||
fromRoot('src/ui'),
|
||||
fromRoot('src/utils'),
|
||||
fromRoot('config'),
|
||||
...extraPaths
|
||||
]
|
||||
.map(path => resolve(path))
|
||||
);
|
||||
const watchPaths = [
|
||||
fromRoot('src/core_plugins'),
|
||||
fromRoot('src/server'),
|
||||
fromRoot('src/ui'),
|
||||
fromRoot('src/utils'),
|
||||
fromRoot('config'),
|
||||
...extraPaths
|
||||
].map(path => resolve(path));
|
||||
|
||||
this.watcher = chokidar.watch(watchPaths, {
|
||||
this.watcher = chokidar.watch(uniq(watchPaths), {
|
||||
cwd: fromRoot('.'),
|
||||
ignored: /[\\\/](\..*|node_modules|bower_components|public|__tests__)[\\\/]/
|
||||
});
|
||||
|
|
|
@ -1,34 +1,36 @@
|
|||
---
|
||||
|
||||
root: true
|
||||
extends: '@elastic/kibana'
|
||||
extends: '../../../.eslintrc'
|
||||
|
||||
rules:
|
||||
block-scoped-var: [0]
|
||||
camelcase: [0]
|
||||
curly: [0]
|
||||
dot-location: [0]
|
||||
dot-notation: [0]
|
||||
eqeqeq: [0]
|
||||
guard-for-in: [0]
|
||||
indent: [0]
|
||||
max-len: [0]
|
||||
new-cap: [0]
|
||||
no-caller: [0]
|
||||
no-empty: [0]
|
||||
no-extend-native: [0]
|
||||
no-loop-func: [0]
|
||||
no-multi-str: [0]
|
||||
no-nested-ternary: [0]
|
||||
no-proto: [0]
|
||||
no-sequences: [0]
|
||||
no-undef: [0]
|
||||
no-use-before-define: [0]
|
||||
one-var: [0]
|
||||
quotes: [0]
|
||||
space-before-blocks: [0]
|
||||
space-in-parens: [0]
|
||||
space-infix-ops: [0]
|
||||
semi: [0]
|
||||
strict: [0]
|
||||
wrap-iife: [0]
|
||||
block-scoped-var: off
|
||||
camelcase: off
|
||||
curly: off
|
||||
dot-location: off
|
||||
dot-notation: off
|
||||
eqeqeq: off
|
||||
guard-for-in: off
|
||||
indent: off
|
||||
max-len: off
|
||||
new-cap: off
|
||||
no-caller: off
|
||||
no-empty: off
|
||||
no-extend-native: off
|
||||
no-loop-func: off
|
||||
no-multi-str: off
|
||||
no-nested-ternary: off
|
||||
no-proto: off
|
||||
no-sequences: off
|
||||
no-undef: off
|
||||
no-use-before-define: off
|
||||
one-var: off
|
||||
quotes: off
|
||||
space-before-blocks: off
|
||||
space-in-parens: off
|
||||
space-infix-ops: off
|
||||
semi: off
|
||||
strict: off
|
||||
wrap-iife: off
|
||||
no-var: off
|
||||
prefer-const: off
|
||||
|
|
|
@ -1,68 +0,0 @@
|
|||
---
|
||||
parser: babel-eslint
|
||||
|
||||
env:
|
||||
es6: true
|
||||
amd: true
|
||||
node: true
|
||||
browser: true
|
||||
jasmine: true
|
||||
|
||||
rules:
|
||||
block-scoped-var: 2
|
||||
camelcase: [ 2, { properties: never } ]
|
||||
comma-dangle: 0
|
||||
comma-style: [ 2, last ]
|
||||
consistent-return: 0
|
||||
curly: [ 2, multi-line ]
|
||||
dot-location: [ 2, property ]
|
||||
dot-notation: [ 2, { allowKeywords: true } ]
|
||||
eqeqeq: [ 2, allow-null ]
|
||||
guard-for-in: 2
|
||||
indent: [ 2, 2, { SwitchCase: 1 } ]
|
||||
key-spacing: [ 0, { align: value } ]
|
||||
max-len: [ 2, 140, 2, { ignoreComments: true, ignoreUrls: true } ]
|
||||
new-cap: [ 2, { capIsNewExceptions: [ Private ] } ]
|
||||
no-bitwise: 0
|
||||
no-caller: 2
|
||||
no-cond-assign: 0
|
||||
no-debugger: 2
|
||||
no-empty: 2
|
||||
no-eval: 2
|
||||
no-extend-native: 2
|
||||
no-extra-parens: 0
|
||||
no-irregular-whitespace: 2
|
||||
no-iterator: 2
|
||||
no-loop-func: 2
|
||||
no-multi-spaces: 0
|
||||
no-multi-str: 2
|
||||
no-nested-ternary: 2
|
||||
no-new: 0
|
||||
no-path-concat: 0
|
||||
no-proto: 2
|
||||
no-return-assign: 0
|
||||
no-script-url: 2
|
||||
no-sequences: 2
|
||||
no-shadow: 0
|
||||
no-trailing-spaces: 2
|
||||
no-undef: 2
|
||||
no-underscore-dangle: 0
|
||||
no-unused-expressions: 0
|
||||
no-unused-vars: 0
|
||||
no-use-before-define: [ 2, nofunc ]
|
||||
no-with: 2
|
||||
one-var: [ 2, never ]
|
||||
quotes: [ 2, single ]
|
||||
semi-spacing: [ 2, { before: false, after: true } ]
|
||||
semi: [ 2, always ]
|
||||
space-after-keywords: [ 2, always ]
|
||||
space-before-blocks: [ 2, always ]
|
||||
space-before-function-paren: [ 2, { anonymous: always, named: never } ]
|
||||
space-in-parens: [ 2, never ]
|
||||
space-infix-ops: [ 2, { int32Hint: false } ]
|
||||
space-return-throw-case: [ 2 ]
|
||||
space-unary-ops: [ 2 ]
|
||||
strict: [ 2, never ]
|
||||
valid-typeof: 2
|
||||
wrap-iife: [ 2, outside ]
|
||||
yoda: 0
|
|
@ -10,4 +10,4 @@ export default {
|
|||
},
|
||||
on: _.noop,
|
||||
off: _.noop
|
||||
}
|
||||
};
|
||||
|
|
|
@ -1,8 +1,3 @@
|
|||
const rimraf = promisify(require('rimraf'));
|
||||
const mkdirp = promisify(require('mkdirp'));
|
||||
const unlink = promisify(require('fs').unlink);
|
||||
const readdir = promisify(require('fs').readdir);
|
||||
|
||||
import UiBundle from './ui_bundle';
|
||||
import appEntryTemplate from './app_entry_template';
|
||||
import { readFileSync as readSync } from 'fs';
|
||||
|
@ -10,6 +5,11 @@ import { pull, transform, pluck } from 'lodash';
|
|||
import { promisify } from 'bluebird';
|
||||
import { makeRe } from 'minimatch';
|
||||
|
||||
const rimraf = promisify(require('rimraf'));
|
||||
const mkdirp = promisify(require('mkdirp'));
|
||||
const unlink = promisify(require('fs').unlink);
|
||||
const readdir = promisify(require('fs').readdir);
|
||||
|
||||
class UiBundleCollection {
|
||||
constructor(bundlerEnv, filter) {
|
||||
this.each = [];
|
||||
|
|
|
@ -1,30 +1,33 @@
|
|||
var resolve = require('path').resolve;
|
||||
import { resolve } from 'path';
|
||||
export default grunt => ({
|
||||
options: {
|
||||
paths: [
|
||||
'Gruntfile.js',
|
||||
'bin',
|
||||
'config',
|
||||
'src',
|
||||
'tasks',
|
||||
'test',
|
||||
'utilities',
|
||||
],
|
||||
},
|
||||
|
||||
module.exports = function (grunt) {
|
||||
return {
|
||||
// just lint the source dir
|
||||
source: {
|
||||
options: {
|
||||
cache: resolve(grunt.config.get('root'), '.eslint.fixSource.cache')
|
||||
},
|
||||
source: {
|
||||
options: {
|
||||
cache: resolve(grunt.config.get('root'), '.eslint.fixSource.cache')
|
||||
}
|
||||
},
|
||||
|
||||
files: {
|
||||
src: '<%= lintThese %>'
|
||||
}
|
||||
},
|
||||
fixSource: {
|
||||
options: {
|
||||
cache: resolve(grunt.config.get('root'), '.eslint.fixSource.cache'),
|
||||
fix: true
|
||||
}
|
||||
},
|
||||
|
||||
// lint the source and fix any fixable errors
|
||||
fixSource: {
|
||||
options: {
|
||||
cache: resolve(grunt.config.get('root'), '.eslint.fixSource.cache'),
|
||||
fix: true
|
||||
},
|
||||
|
||||
files: {
|
||||
src: '<%= lintThese %>'
|
||||
}
|
||||
},
|
||||
|
||||
staged: {}
|
||||
};
|
||||
};
|
||||
staged: {
|
||||
options: {
|
||||
paths: null // overridden by lintStagedFiles task
|
||||
}
|
||||
}
|
||||
});
|
||||
|
|
44
tasks/eslint.js
Normal file
44
tasks/eslint.js
Normal file
|
@ -0,0 +1,44 @@
|
|||
import { CLIEngine } from 'eslint';
|
||||
|
||||
const OPTION_DEFAULTS = {
|
||||
paths: null,
|
||||
cache: null,
|
||||
fix: false
|
||||
};
|
||||
|
||||
export default grunt => {
|
||||
grunt.registerMultiTask('eslint', function () {
|
||||
const options = this.options(OPTION_DEFAULTS);
|
||||
|
||||
if (!options.paths) {
|
||||
grunt.fatal(new Error('No eslint.options.paths specified'));
|
||||
return;
|
||||
}
|
||||
|
||||
const cli = new CLIEngine({
|
||||
cache: options.cache,
|
||||
fix: options.fix,
|
||||
cwd: grunt.config.get('root'),
|
||||
});
|
||||
|
||||
// report includes an entire list of files checked and the
|
||||
// fixes, errors, and warning for each.
|
||||
const report = cli.executeOnFiles(options.paths);
|
||||
|
||||
// output fixes to disk
|
||||
if (options.fix) {
|
||||
CLIEngine.outputFixes(report);
|
||||
}
|
||||
|
||||
// log the formatted linting report
|
||||
const formatter = cli.getFormatter();
|
||||
|
||||
const errTypes = [];
|
||||
if (report.errorCount > 0) errTypes.push('errors');
|
||||
if (report.warningCount > 0) errTypes.push('warning');
|
||||
if (!errTypes.length) return;
|
||||
|
||||
grunt.log.write(formatter(report.results));
|
||||
grunt.fatal(`eslint ${errTypes.join(' & ')}`);
|
||||
});
|
||||
};
|
|
@ -1,5 +1,7 @@
|
|||
import { resolve } from 'path';
|
||||
import { isStaged, getFilename } from './utils/files_to_commit';
|
||||
import { CLIEngine } from 'eslint';
|
||||
import minimatch from 'minimatch';
|
||||
|
||||
const root = resolve(__dirname, '..');
|
||||
|
||||
|
@ -7,18 +9,32 @@ export default function (grunt) {
|
|||
grunt.registerTask('lintStagedFiles', function () {
|
||||
grunt.task.requires('collectFilesToCommit');
|
||||
|
||||
// match these patterns
|
||||
var patterns = grunt.config.get('eslint.source.files.src');
|
||||
if (!patterns) grunt.fail.warn('eslint file pattern is not defined');
|
||||
// convert eslint paths to globs
|
||||
const cli = new CLIEngine();
|
||||
const eslintSourcePaths = grunt.config.get('eslint.options.paths');
|
||||
if (!eslintSourcePaths) grunt.fail.warn('eslint.options.paths is not defined');
|
||||
|
||||
const sourcePathRegexps = cli.resolveFileGlobPatterns(eslintSourcePaths)
|
||||
.map(glob => minimatch.makeRe(glob));
|
||||
|
||||
const files = grunt.config
|
||||
.get('filesToCommit')
|
||||
.filter(isStaged)
|
||||
.map(getFilename)
|
||||
.map(file => resolve(root, file))
|
||||
.filter(file => grunt.file.isMatch(patterns, file));
|
||||
.filter(file => {
|
||||
if (!sourcePathRegexps.some(re => file.match(re))) {
|
||||
return false;
|
||||
}
|
||||
|
||||
grunt.config.set('eslint.staged.files.src', files);
|
||||
if (cli.isPathIgnored(file)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
});
|
||||
|
||||
grunt.config.set('eslint.staged.options.paths', files);
|
||||
grunt.task.run(['eslint:staged']);
|
||||
});
|
||||
}
|
||||
|
|
|
@ -73,8 +73,9 @@ bdd.describe('visualize app', function describeIndexTests() {
|
|||
|
||||
bdd.it('should show correct data, take screenshot', function () {
|
||||
var chartHeight = 0;
|
||||
var expectedChartData = [ '0 2,088', '2,000 2,748', '4,000 2,707', '6,000 2,876',
|
||||
'8,000 2,863', '10,000 147', '12,000 148', '14,000 129', '16,000 161', '18,000 137'
|
||||
var expectedChartData = [
|
||||
'0 2,088', '2,000 2,748', '4,000 2,707', '6,000 2,876',
|
||||
'8,000 2,863', '10,000 147', '12,000 148', '14,000 129', '16,000 161', '18,000 137'
|
||||
];
|
||||
|
||||
return PageObjects.common.try(function () {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue