aboutsummaryrefslogtreecommitdiffstats
path: root/server
diff options
context:
space:
mode:
Diffstat (limited to 'server')
-rw-r--r--server/sonar-web/.eslintrc333
-rw-r--r--server/sonar-web/package.json16
-rw-r--r--server/sonar-web/src/main/js/app/components/App.tsx8
-rw-r--r--server/sonar-web/src/main/js/app/components/__tests__/ComponentContainer-test.tsx1
-rw-r--r--server/sonar-web/src/main/js/app/components/nav/component/ComponentNavBranch.tsx18
-rw-r--r--server/sonar-web/src/main/js/app/components/nav/component/ComponentNavBranchesMenu.tsx6
-rw-r--r--server/sonar-web/src/main/js/app/components/nav/component/ComponentNavMenu.tsx1
-rw-r--r--server/sonar-web/src/main/js/app/components/nav/component/__tests__/ComponentNav-test.tsx5
-rw-r--r--server/sonar-web/src/main/js/app/components/nav/component/__tests__/ComponentNavBgTaskNotif-test.tsx1
-rw-r--r--server/sonar-web/src/main/js/apps/background-tasks/components/TaskActions.tsx4
-rw-r--r--server/sonar-web/src/main/js/apps/background-tasks/components/Workers.tsx2
-rw-r--r--server/sonar-web/src/main/js/apps/background-tasks/components/__tests__/ScannerContext-test.tsx1
-rw-r--r--server/sonar-web/src/main/js/apps/background-tasks/components/__tests__/Stacktrace-test.tsx1
-rw-r--r--server/sonar-web/src/main/js/apps/background-tasks/components/__tests__/WorkersForm-test.tsx1
-rw-r--r--server/sonar-web/src/main/js/apps/code/components/App.tsx10
-rw-r--r--server/sonar-web/src/main/js/apps/code/components/ComponentName.tsx2
-rw-r--r--server/sonar-web/src/main/js/apps/issues/components/ComponentBreadcrumbs.tsx4
-rw-r--r--server/sonar-web/src/main/js/apps/portfolio/components/Activity.tsx4
-rw-r--r--server/sonar-web/src/main/js/apps/portfolio/components/App.tsx8
-rw-r--r--server/sonar-web/src/main/js/apps/portfolio/components/__tests__/Activity-test.tsx1
-rw-r--r--server/sonar-web/src/main/js/apps/portfolio/components/__tests__/App-test.tsx3
-rw-r--r--server/sonar-web/src/main/js/apps/portfolio/components/__tests__/Report-test.tsx1
-rw-r--r--server/sonar-web/src/main/js/apps/portfolio/components/__tests__/Subscription-test.tsx1
-rw-r--r--server/sonar-web/src/main/js/apps/projectBranches/components/App.tsx4
-rw-r--r--server/sonar-web/src/main/js/apps/projectBranches/components/BranchRow.tsx2
-rw-r--r--server/sonar-web/src/main/js/apps/projectBranches/components/RenameBranchModal.tsx2
-rw-r--r--server/sonar-web/src/main/js/apps/projectBranches/components/__tests__/App-test.tsx1
-rw-r--r--server/sonar-web/src/main/js/apps/projectBranches/components/__tests__/DeleteBranchModal-test.tsx1
-rw-r--r--server/sonar-web/src/main/js/apps/projectBranches/components/__tests__/LongBranchesPattern-test.tsx3
-rw-r--r--server/sonar-web/src/main/js/apps/projectBranches/components/__tests__/RenameBranchModal-test.tsx1
-rw-r--r--server/sonar-web/src/main/js/apps/projectBranches/components/__tests__/SettingForm-test.tsx1
-rw-r--r--server/sonar-web/src/main/js/apps/projectQualityGate/__tests__/App-test.tsx1
-rw-r--r--server/sonar-web/src/main/js/apps/projectQualityProfiles/__tests__/App-test.tsx3
-rw-r--r--server/sonar-web/src/main/js/apps/projectQualityProfiles/__tests__/Table-test.tsx2
-rw-r--r--server/sonar-web/src/main/js/apps/projects/__tests__/utils-test.ts1
-rw-r--r--server/sonar-web/src/main/js/apps/projects/components/AllProjects.tsx12
-rw-r--r--server/sonar-web/src/main/js/apps/projects/components/ProjectCardLanguages.tsx2
-rw-r--r--server/sonar-web/src/main/js/apps/projects/components/ProjectCardOverall.tsx2
-rw-r--r--server/sonar-web/src/main/js/apps/projects/components/ProjectCardOverallMeasures.tsx2
-rw-r--r--server/sonar-web/src/main/js/apps/projects/components/__tests__/AllProjects-test.tsx4
-rw-r--r--server/sonar-web/src/main/js/apps/projects/components/__tests__/DefaultPageSelector-test.tsx2
-rw-r--r--server/sonar-web/src/main/js/apps/projects/components/__tests__/FavoriteFilter-test.tsx1
-rw-r--r--server/sonar-web/src/main/js/apps/projects/filters/Filter.tsx2
-rw-r--r--server/sonar-web/src/main/js/apps/projects/utils.ts4
-rw-r--r--server/sonar-web/src/main/js/apps/projectsManagement/BulkApplyTemplateModal.tsx2
-rw-r--r--server/sonar-web/src/main/js/apps/projectsManagement/Search.tsx3
-rw-r--r--server/sonar-web/src/main/js/apps/projectsManagement/__tests__/App-test.tsx4
-rw-r--r--server/sonar-web/src/main/js/apps/projectsManagement/__tests__/BulkApplyTemplateModal-test.tsx1
-rw-r--r--server/sonar-web/src/main/js/apps/projectsManagement/__tests__/CreateProjectForm-test.tsx1
-rw-r--r--server/sonar-web/src/main/js/apps/projectsManagement/__tests__/DeleteModal-test.tsx1
-rw-r--r--server/sonar-web/src/main/js/apps/projectsManagement/__tests__/Projects-test.tsx1
-rw-r--r--server/sonar-web/src/main/js/apps/quality-profiles/components/ProfileContainer.tsx2
-rw-r--r--server/sonar-web/src/main/js/apps/quality-profiles/details/ProfilePermissionsForm.tsx2
-rw-r--r--server/sonar-web/src/main/js/apps/quality-profiles/details/ProfilePermissionsFormSelect.tsx2
-rw-r--r--server/sonar-web/src/main/js/apps/quality-profiles/details/__tests__/ProfilePermissions-test.tsx1
-rw-r--r--server/sonar-web/src/main/js/apps/quality-profiles/details/__tests__/ProfilePermissionsForm-test.tsx1
-rw-r--r--server/sonar-web/src/main/js/apps/quality-profiles/details/__tests__/ProfilePermissionsFormSelect-test.tsx1
-rw-r--r--server/sonar-web/src/main/js/apps/quality-profiles/details/__tests__/ProfilePermissionsGroup-test.tsx1
-rw-r--r--server/sonar-web/src/main/js/apps/quality-profiles/details/__tests__/ProfilePermissionsUser-test.tsx1
-rw-r--r--server/sonar-web/src/main/js/apps/system/components/App.tsx6
-rw-r--r--server/sonar-web/src/main/js/apps/system/utils.ts6
-rw-r--r--server/sonar-web/src/main/js/apps/web-api/components/WebApiApp.tsx16
-rw-r--r--server/sonar-web/src/main/js/apps/web-api/components/__tests__/Domain-test.tsx4
-rw-r--r--server/sonar-web/src/main/js/components/charts/bar-chart.js8
-rw-r--r--server/sonar-web/src/main/js/components/common/SelectListItem.js2
-rw-r--r--server/sonar-web/src/main/js/components/controls/DateInput.tsx2
-rw-r--r--server/sonar-web/src/main/js/components/intl/DateFormatter.tsx8
-rw-r--r--server/sonar-web/src/main/js/components/intl/DateFromNow.tsx2
-rw-r--r--server/sonar-web/src/main/js/components/intl/DateTimeFormatter.tsx6
-rw-r--r--server/sonar-web/src/main/js/components/intl/TimeFormatter.tsx8
-rw-r--r--server/sonar-web/src/main/js/components/measure/Measure.tsx4
-rw-r--r--server/sonar-web/src/main/js/components/measure/__tests__/Measure-test.tsx1
-rw-r--r--server/sonar-web/src/main/js/components/ui/Rating.tsx2
-rw-r--r--server/sonar-web/src/main/js/helpers/issues.ts2
-rw-r--r--server/sonar-web/src/main/js/helpers/l10n.ts2
-rw-r--r--server/sonar-web/src/main/js/helpers/measures.ts6
-rw-r--r--server/sonar-web/tsconfig.json4
-rw-r--r--server/sonar-web/yarn.lock510
78 files changed, 547 insertions, 561 deletions
diff --git a/server/sonar-web/.eslintrc b/server/sonar-web/.eslintrc
index 6bbf8a9e0d5..edb289cdb23 100644
--- a/server/sonar-web/.eslintrc
+++ b/server/sonar-web/.eslintrc
@@ -1,6 +1,10 @@
{
"extends": [
- "eslint:recommended"
+ "eslint:recommended",
+ "plugin:import/errors",
+ "plugin:react/recommended",
+ "plugin:jsx-a11y/recommended",
+ "plugin:promise/recommended"
],
"env": {
@@ -10,180 +14,181 @@
"node": true
},
+ "parserOptions": {
+ "ecmaVersion": 6,
+ "sourceType": "module",
+ "ecmaFeatures": {
+ "jsx": true,
+ "modules": true
+ }
+ },
+
"globals": {
"baseUrl": true,
"SyntheticInputEvent": true
},
- "parser": "babel-eslint",
+ "parser": "typescript-eslint-parser",
- "plugins": [
- "import",
- "jsx-a11y",
- "flowtype",
- "react"
- ],
+ "plugins": ["import", "jsx-a11y", "react", "promise"],
"rules": {
- "array-bracket-spacing": 2,
- "array-callback-return": 2,
- // "arrow-parens": [2, "as-needed"],
- "arrow-spacing": 2,
- "block-scoped-var": 2,
- "block-spacing": 2,
- "brace-style": 2,
- "comma-dangle": [2, "never"],
- "comma-spacing": 2,
- "comma-style": 2,
- "computed-property-spacing": 2,
- "consistent-this": [2, "that"],
- "curly": 2,
- "dot-location": [2, "property"],
- "eol-last": 2,
- "eqeqeq": [2, "smart"],
- "func-call-spacing": 2,
- "func-name-matching": 2,
- "func-names": [2, "never"],
- "generator-star-spacing": 2,
- "jsx-quotes": 2,
- "key-spacing": 2,
- "keyword-spacing": 2,
- // "max-len": [2, 100],
- "new-parens": 2,
- "no-lonely-if": 2,
- "no-multi-spaces": 2,
- "no-multiple-empty-lines": [2, { "max": 2 }],
- "no-self-compare": 2,
- "no-template-curly-in-string": 2,
- "no-trailing-spaces": 2,
- "no-unneeded-ternary": 2,
- "no-unsafe-negation": 2,
- "no-useless-computed-key": 2,
- "no-useless-rename": 2,
- "no-var": 2,
- "no-whitespace-before-property": 2,
- "object-curly-spacing": [2, "always"],
- "object-shorthand": 2,
- "one-var": [2, "never"],
- "operator-assignment": 2,
- "padded-blocks": [2, "never"],
- "prefer-arrow-callback": 2,
- "prefer-const": 2,
- "prefer-spread": 2,
- "quote-props": [2, "as-needed"],
- "quotes": [2, "single", { "avoidEscape": true }],
- "rest-spread-spacing": 2,
- "semi": [2, "always"],
- "semi-spacing": 2,
- "space-before-blocks": 2,
- "space-before-function-paren": [2, "never"],
- "space-in-parens": 2,
- "space-unary-ops": 2,
- "template-curly-spacing": 2,
- "yield-star-spacing": 2,
-
- "flowtype/boolean-style": 2,
- "flowtype/generic-spacing": 2,
- "flowtype/no-dupe-keys": 2,
- "flowtype/no-primitive-constructor-types": 2,
- "flowtype/no-weak-types": [2, {
- "any": true,
- "Object": false,
- "Function": false
- }],
- "flowtype/object-type-delimiter": 2,
- "flowtype/semi": 2,
- "flowtype/space-after-type-colon": 2,
- "flowtype/space-before-generic-bracket": 2,
- "flowtype/space-before-type-colon": 2,
- "flowtype/union-intersection-spacing": 2,
-
- "import/no-unresolved": 0,
- "import/named": 2,
- "import/default": 2,
- "import/namespace": 2,
- "import/no-named-as-default": 2,
- "import/no-named-as-default-member": 2,
- "import/no-amd": 2,
- "import/first": 2,
- "import/no-duplicates": 2,
- "import/extensions": 2,
- "import/order": [2, {
- "groups": ["builtin", "external"],
- "newlines-between": "never"
- }],
- "import/newline-after-import": 2,
- "import/no-named-default": 2,
-
- "jsx-a11y/aria-props": 2,
- "jsx-a11y/aria-proptypes": 2,
- "jsx-a11y/aria-role": 2,
- "jsx-a11y/aria-unsupported-elements": 2,
- "jsx-a11y/heading-has-content": 2,
- "jsx-a11y/html-has-lang": 2,
- "jsx-a11y/img-has-alt": 2,
- "jsx-a11y/img-redundant-alt": 2,
- "jsx-a11y/lang": 2,
- "jsx-a11y/mouse-events-have-key-events": 2,
- "jsx-a11y/no-access-key": 2,
- "jsx-a11y/no-marquee": 2,
- "jsx-a11y/onclick-has-focus": 2,
- "jsx-a11y/onclick-has-role": 2,
- "jsx-a11y/role-has-required-aria-props": 2,
- "jsx-a11y/role-supports-aria-props": 2,
- "jsx-a11y/tabindex-no-positive": 2,
-
- "react/jsx-boolean-value": [2, "always"],
- "react/jsx-closing-bracket-location": [2, {
- "nonEmpty": "after-props",
- "selfClosing": "tag-aligned"
- }],
- "react/jsx-curly-spacing": [2, "never"],
- "react/jsx-equals-spacing": [2, "never"],
- "react/jsx-key": 2,
- "react/jsx-no-duplicate-props": 2,
- "react/jsx-no-undef": 2,
- "react/jsx-pascal-case": 2,
- "react/jsx-space-before-closing": 2,
- "react/jsx-tag-spacing": [2, {
- "closingSlash": "never",
- "beforeSelfClosing": "always",
- "afterOpening": "never"
- }],
- "react/jsx-uses-react": 2,
- "react/jsx-uses-vars": 2,
- "react/no-children-prop": 2,
- "react/no-danger-with-children": 2,
- "react/no-deprecated": 2,
- "react/no-direct-mutation-state": 2,
- "react/no-is-mounted": 2,
- "react/no-render-return-value": 2,
- "react/no-unescaped-entities": 2,
- "react/no-unknown-property": 2,
- "react/react-in-jsx-scope": 2,
- "react/require-render-return": 2,
- "react/self-closing-comp": 2,
- "react/sort-comp": [2, {
- "order": [
- "type-annotations",
- "static-methods",
- "lifecycle",
- "everything-else",
- "rendering"
- ],
- "groups": {
- "rendering": [
- "/^render.+$/",
- "render"
- ]
+ // possible errors
+ "for-direction": "error",
+ "no-prototype-builtins": "error",
+ "no-template-curly-in-string": "error",
+ "no-unsafe-negation": "error",
+
+ // best practices
+ // TODO turn all rules to "error" eventually
+ "array-callback-return": "error",
+ "block-scoped-var": "error",
+ "complexity": "warn",
+ "consistent-return": "warn",
+ "eqeqeq": ["error", "smart"],
+ "guard-for-in": "error",
+ "no-alert": "error",
+ "no-caller": "error",
+ "no-div-regex": "error",
+ "no-eval": "error",
+ "no-extend-native": "error",
+ "no-extra-bind": "error",
+ "no-extra-label": "error",
+ "no-floating-decimal": "error",
+ "no-implied-eval": "error",
+ "no-iterator": "error",
+ "no-labels": "error",
+ "no-lone-blocks": "error",
+ "no-loop-func": "error",
+ "no-new": "warn",
+ "no-new-func": "error",
+ "no-new-wrappers": "error",
+ "no-proto": "error",
+ "no-restricted-properties": "error",
+ "no-return-assign": "error",
+ "no-return-await": "error",
+ "no-self-compare": "error",
+ "no-sequences": "error",
+ "no-throw-literal": "warn",
+ "no-unmodified-loop-condition": "error",
+ "no-unused-expressions": "warn",
+ "no-useless-call": "error",
+ "no-useless-concat": "warn",
+ "no-useless-escape": "warn",
+ "no-useless-return": "warn",
+ "no-void": "error",
+ "no-with": "error",
+ "radix": "error",
+ "require-await": "error",
+ "wrap-iife": "error",
+ "yoda": "warn",
+
+ // stylistic
+ "camelcase": "warn",
+ "consistent-this": ["warn", "that"],
+ "func-name-matching": "error",
+ "func-style": ["warn", "declaration", { "allowArrowFunctions": true }],
+ "max-depth": "warn",
+ "max-lines": ["warn", 1000],
+ "max-params": ["warn", 4],
+ "no-array-constructor": "warn",
+ "no-bitwise": "warn",
+ "no-lonely-if": "error",
+ "no-mixed-operators": "warn",
+ "no-multi-assign": "warn",
+ "no-nested-ternary": "warn",
+ "no-new-object": "warn",
+ "no-underscore-dangle": "warn",
+ "no-unneeded-ternary": "warn",
+ "one-var": ["warn", "never"],
+ "operator-assignment": "warn",
+
+ // es2015
+ "no-duplicate-imports": "error",
+ "no-useless-computed-key": "error",
+ "no-useless-rename": "error",
+ "no-var": "error",
+ "object-shorthand": "error",
+ "prefer-arrow-callback": "error",
+ "prefer-const": "error",
+ "prefer-destructuring": ["warn", { "object": true, "array": false }],
+ "prefer-numeric-literals": "warn",
+ "prefer-rest-params": "warn",
+ "prefer-spread": "warn",
+
+ // disabled because of the usage of typescript-eslint-parser
+ // https://github.com/eslint/typescript-eslint-parser/issues/77
+ "no-undef": "off",
+ "no-unused-vars": "off",
+
+ // import
+ "import/extensions": "error",
+ "import/first": "error",
+ "import/newline-after-import": "error",
+ "import/no-absolute-path": "error",
+ "import/no-amd": "error",
+ "import/no-deprecated": "error",
+ "import/no-duplicates": "error",
+ "import/no-dynamic-require": "error",
+ "import/no-extraneous-dependencies": "error",
+ "import/no-mutable-exports": "error",
+ "import/no-named-as-default": "error",
+ "import/no-named-as-default-member": "error",
+ "import/no-named-default": "error",
+ "import/no-webpack-loader-syntax": "error",
+ "import/order": ["error", { "groups": ["builtin", "external"], "newlines-between": "never" }],
+
+ // does not properly work with ts
+ "import/no-unresolved": "off",
+
+ // react
+ // TODO turn all rules to "error" eventually
+ "react/display-name": "warn",
+ "react/jsx-boolean-value": ["error", "always"],
+ "react/jsx-no-comment-textnodes": "warn",
+ "react/jsx-no-target-blank": "warn",
+ "react/jsx-pascal-case": "error",
+ "react/no-find-dom-node": "warn",
+ "react/no-string-refs": "warn",
+ "react/self-closing-comp": "error",
+ "react/sort-comp": [
+ "error",
+ {
+ "order": [
+ "type-annotations",
+ "static-methods",
+ "lifecycle",
+ "everything-else",
+ "rendering"
+ ],
+ "groups": { "rendering": ["/^render.+$/", "render"] }
}
- }]
+ ],
+
+ // turn off prop types validation, better use ts ;)
+ "react/prop-types": "off",
+
+ // jsx-a11y
+ "jsx-a11y/anchor-has-content": "warn",
+ "jsx-a11y/no-noninteractive-tabindex": "warn",
+ "jsx-a11y/no-redundant-roles": "warn",
+ "jsx-a11y/no-static-element-interactions": "warn",
+
+ "jsx-a11y/anchor-is-valid": "off",
+ "jsx-a11y/click-events-have-key-events": "off",
+ "jsx-a11y/no-autofocus": "off",
+ "jsx-a11y/no-noninteractive-element-interactions": "off",
+ // has FPs
+ "jsx-a11y/label-has-for": "off",
+
+ // promise
+ "promise/catch-or-return": ["warn", { "allowThen": true }],
+
+ "promise/always-return": "off",
+ "promise/avoid-new": "off"
},
"settings": {
- "import/ignore": [
- "node_modules",
- "hbs$"
- ]
+ "import/ignore": ["node_modules", "hbs$"]
}
}
diff --git a/server/sonar-web/package.json b/server/sonar-web/package.json
index 336b9affc41..bb98241f947 100644
--- a/server/sonar-web/package.json
+++ b/server/sonar-web/package.json
@@ -67,7 +67,6 @@
"autoprefixer": "7.1.1",
"awesome-typescript-loader": "3.2.3",
"babel-core": "^6.22.1",
- "babel-eslint": "7.2.3",
"babel-jest": "20.0.3",
"babel-loader": "7.0.0",
"babel-plugin-dynamic-import-node": "1.0.2",
@@ -83,12 +82,12 @@
"css-loader": "0.28.4",
"enzyme": "2.9.1",
"enzyme-to-json": "1.5.1",
- "eslint": "3.14.1",
+ "eslint": "4.9.0",
"eslint-loader": "1.8.0",
- "eslint-plugin-flowtype": "^2.29.1",
- "eslint-plugin-import": "2.7.0",
- "eslint-plugin-jsx-a11y": "^3.0.2",
- "eslint-plugin-react": "^6.8.0",
+ "eslint-plugin-import": "2.8.0",
+ "eslint-plugin-jsx-a11y": "6.0.2",
+ "eslint-plugin-promise": "3.6.0",
+ "eslint-plugin-react": "7.4.0",
"expose-loader": "0.7.3",
"extract-text-webpack-plugin": "2.1.2",
"flow-bin": "^0.52.0",
@@ -106,7 +105,8 @@
"rimraf": "2.5.4",
"style-loader": "0.18.2",
"ts-jest": "20.0.10",
- "typescript": "2.4.2",
+ "typescript": "2.5.3",
+ "typescript-eslint-parser": "8.0.0",
"webpack": "2.6.1",
"webpack-bundle-analyzer": "2.8.2",
"webpack-dev-server": "2.4.5"
@@ -118,7 +118,7 @@
"test": "node scripts/test.js",
"coverage": "npm test -- --coverage",
"format": "prettier --write --list-different 'src/main/{js,less}/!(libs)/**/*.{js,ts,tsx,css,less}'",
- "lint": "eslint src/main/js",
+ "lint": "eslint --ext js,ts,tsx --quiet src/main/js",
"typecheck": "flow src/main/js",
"validate": "eslint src/main/js && flow check src/main/js && NODE_ENV=test jest"
},
diff --git a/server/sonar-web/src/main/js/app/components/App.tsx b/server/sonar-web/src/main/js/app/components/App.tsx
index e69c1116cda..44528fc0b4d 100644
--- a/server/sonar-web/src/main/js/app/components/App.tsx
+++ b/server/sonar-web/src/main/js/app/components/App.tsx
@@ -40,7 +40,6 @@ interface State {
class App extends React.PureComponent<Props, State> {
mounted: boolean;
- state: State = { branchesEnabled: false, canAdmin: false, loading: true, onSonarCloud: false };
static childContextTypes = {
branchesEnabled: PropTypes.bool.isRequired,
@@ -48,6 +47,11 @@ class App extends React.PureComponent<Props, State> {
onSonarCloud: PropTypes.bool
};
+ constructor(props: Props) {
+ super(props);
+ this.state = { branchesEnabled: false, canAdmin: false, loading: true, onSonarCloud: false };
+ }
+
getChildContext() {
return {
branchesEnabled: this.state.branchesEnabled,
@@ -73,7 +77,7 @@ class App extends React.PureComponent<Props, State> {
return this.props.fetchAppState().then(appState => {
if (this.mounted) {
const onSonarCloud =
- appState.settings != undefined &&
+ appState.settings !== undefined &&
appState.settings['sonar.sonarcloud.enabled'] === 'true';
this.setState({
branchesEnabled: appState.branchesEnabled,
diff --git a/server/sonar-web/src/main/js/app/components/__tests__/ComponentContainer-test.tsx b/server/sonar-web/src/main/js/app/components/__tests__/ComponentContainer-test.tsx
index ed7838f8ea3..623451a6542 100644
--- a/server/sonar-web/src/main/js/app/components/__tests__/ComponentContainer-test.tsx
+++ b/server/sonar-web/src/main/js/app/components/__tests__/ComponentContainer-test.tsx
@@ -17,6 +17,7 @@
* along with this program; if not, write to the Free Software Foundation,
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
+/* eslint-disable import/first */
jest.mock('../../../api/branches', () => ({ getBranches: jest.fn() }));
jest.mock('../../../api/components', () => ({ getComponentData: jest.fn() }));
jest.mock('../../../api/nav', () => ({ getComponentNavigation: jest.fn() }));
diff --git a/server/sonar-web/src/main/js/app/components/nav/component/ComponentNavBranch.tsx b/server/sonar-web/src/main/js/app/components/nav/component/ComponentNavBranch.tsx
index e3a27248da2..c062c716722 100644
--- a/server/sonar-web/src/main/js/app/components/nav/component/ComponentNavBranch.tsx
+++ b/server/sonar-web/src/main/js/app/components/nav/component/ComponentNavBranch.tsx
@@ -46,17 +46,21 @@ interface State {
export default class ComponentNavBranch extends React.PureComponent<Props, State> {
mounted: boolean;
- state: State = {
- dropdownOpen: false,
- noBranchSupportPopupOpen: false,
- singleBranchPopupOpen: false
- };
static contextTypes = {
branchesEnabled: PropTypes.bool.isRequired,
onSonarCloud: PropTypes.bool
};
+ constructor(props: Props) {
+ super(props);
+ this.state = {
+ dropdownOpen: false,
+ noBranchSupportPopupOpen: false,
+ singleBranchPopupOpen: false
+ };
+ }
+
componentDidMount() {
this.mounted = true;
}
@@ -94,7 +98,7 @@ export default class ComponentNavBranch extends React.PureComponent<Props, State
};
toggleSingleBranchPopup = (show?: boolean) => {
- if (show != undefined) {
+ if (show !== undefined) {
this.setState({ singleBranchPopupOpen: show });
} else {
this.setState(state => ({ singleBranchPopupOpen: !state.singleBranchPopupOpen }));
@@ -102,7 +106,7 @@ export default class ComponentNavBranch extends React.PureComponent<Props, State
};
toggleNoBranchSupportPopup = (show?: boolean) => {
- if (show != undefined) {
+ if (show !== undefined) {
this.setState({ noBranchSupportPopupOpen: show });
} else {
this.setState(state => ({ noBranchSupportPopupOpen: !state.noBranchSupportPopupOpen }));
diff --git a/server/sonar-web/src/main/js/app/components/nav/component/ComponentNavBranchesMenu.tsx b/server/sonar-web/src/main/js/app/components/nav/component/ComponentNavBranchesMenu.tsx
index e3f468d2dd0..a4d7899387b 100644
--- a/server/sonar-web/src/main/js/app/components/nav/component/ComponentNavBranchesMenu.tsx
+++ b/server/sonar-web/src/main/js/app/components/nav/component/ComponentNavBranchesMenu.tsx
@@ -46,12 +46,16 @@ interface State {
export default class ComponentNavBranchesMenu extends React.PureComponent<Props, State> {
private node: HTMLElement | null;
- state = { query: '', selected: null };
static contextTypes = {
router: PropTypes.object
};
+ constructor(props: Props) {
+ super(props);
+ this.state = { query: '', selected: null };
+ }
+
componentDidMount() {
window.addEventListener('click', this.handleClickOutside);
}
diff --git a/server/sonar-web/src/main/js/app/components/nav/component/ComponentNavMenu.tsx b/server/sonar-web/src/main/js/app/components/nav/component/ComponentNavMenu.tsx
index 5f770db9ed4..ef2234c896d 100644
--- a/server/sonar-web/src/main/js/app/components/nav/component/ComponentNavMenu.tsx
+++ b/server/sonar-web/src/main/js/app/components/nav/component/ComponentNavMenu.tsx
@@ -127,7 +127,6 @@ export default class ComponentNavMenu extends React.PureComponent<Props> {
}
renderActivityLink() {
-
if (this.props.branch && isShortLivingBranch(this.props.branch)) {
return null;
}
diff --git a/server/sonar-web/src/main/js/app/components/nav/component/__tests__/ComponentNav-test.tsx b/server/sonar-web/src/main/js/app/components/nav/component/__tests__/ComponentNav-test.tsx
index 7db06bfa00c..9975e19bf06 100644
--- a/server/sonar-web/src/main/js/app/components/nav/component/__tests__/ComponentNav-test.tsx
+++ b/server/sonar-web/src/main/js/app/components/nav/component/__tests__/ComponentNav-test.tsx
@@ -17,20 +17,23 @@
* along with this program; if not, write to the Free Software Foundation,
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
-
+/* eslint-disable import/first, import/order */
jest.mock('../ComponentNavFavorite', () => ({
+ // eslint-disable-next-line
default: function ComponentNavFavorite() {
return null;
}
}));
jest.mock('../ComponentNavBreadcrumbs', () => ({
+ // eslint-disable-next-line
default: function ComponentNavBreadcrumbs() {
return null;
}
}));
jest.mock('../ComponentNavMenu', () => ({
+ // eslint-disable-next-line
default: function ComponentNavMenu() {
return null;
}
diff --git a/server/sonar-web/src/main/js/app/components/nav/component/__tests__/ComponentNavBgTaskNotif-test.tsx b/server/sonar-web/src/main/js/app/components/nav/component/__tests__/ComponentNavBgTaskNotif-test.tsx
index 72e517426cc..e5441faa51f 100644
--- a/server/sonar-web/src/main/js/app/components/nav/component/__tests__/ComponentNavBgTaskNotif-test.tsx
+++ b/server/sonar-web/src/main/js/app/components/nav/component/__tests__/ComponentNavBgTaskNotif-test.tsx
@@ -17,6 +17,7 @@
* along with this program; if not, write to the Free Software Foundation,
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
+/* eslint-disable import/first */
jest.mock('../../../../../helpers/l10n', () => {
const l10n = require.requireActual('../../../../../helpers/l10n');
l10n.hasMessage = jest.fn(() => true);
diff --git a/server/sonar-web/src/main/js/apps/background-tasks/components/TaskActions.tsx b/server/sonar-web/src/main/js/apps/background-tasks/components/TaskActions.tsx
index 748acacd729..285e7a4d50f 100644
--- a/server/sonar-web/src/main/js/apps/background-tasks/components/TaskActions.tsx
+++ b/server/sonar-web/src/main/js/apps/background-tasks/components/TaskActions.tsx
@@ -69,9 +69,9 @@ export default class TaskActions extends React.PureComponent<Props, State> {
render() {
const { component, task } = this.props;
- const canFilter = component == undefined;
+ const canFilter = component === undefined;
const canCancel = task.status === STATUSES.PENDING;
- const canShowStacktrace = task.errorMessage != undefined;
+ const canShowStacktrace = task.errorMessage !== undefined;
const hasActions = canFilter || canCancel || task.hasScannerContext || canShowStacktrace;
if (!hasActions) {
diff --git a/server/sonar-web/src/main/js/apps/background-tasks/components/Workers.tsx b/server/sonar-web/src/main/js/apps/background-tasks/components/Workers.tsx
index 9c51b4a9c10..87fa85e25e7 100644
--- a/server/sonar-web/src/main/js/apps/background-tasks/components/Workers.tsx
+++ b/server/sonar-web/src/main/js/apps/background-tasks/components/Workers.tsx
@@ -83,7 +83,7 @@ export default class Workers extends React.PureComponent<{}, State> {
};
toggleNoSupportPopup = (show?: boolean) => {
- if (show != undefined) {
+ if (show !== undefined) {
this.setState({ noSupportPopup: show });
} else {
this.setState(state => ({ noSupportPopup: !state.noSupportPopup }));
diff --git a/server/sonar-web/src/main/js/apps/background-tasks/components/__tests__/ScannerContext-test.tsx b/server/sonar-web/src/main/js/apps/background-tasks/components/__tests__/ScannerContext-test.tsx
index af7194151d6..64cd98c8f77 100644
--- a/server/sonar-web/src/main/js/apps/background-tasks/components/__tests__/ScannerContext-test.tsx
+++ b/server/sonar-web/src/main/js/apps/background-tasks/components/__tests__/ScannerContext-test.tsx
@@ -17,6 +17,7 @@
* along with this program; if not, write to the Free Software Foundation,
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
+/* eslint-disable import/first, import/order */
jest.mock('../../../../api/ce', () => ({
getTask: jest.fn()
}));
diff --git a/server/sonar-web/src/main/js/apps/background-tasks/components/__tests__/Stacktrace-test.tsx b/server/sonar-web/src/main/js/apps/background-tasks/components/__tests__/Stacktrace-test.tsx
index 979af8df09e..28bddab75a8 100644
--- a/server/sonar-web/src/main/js/apps/background-tasks/components/__tests__/Stacktrace-test.tsx
+++ b/server/sonar-web/src/main/js/apps/background-tasks/components/__tests__/Stacktrace-test.tsx
@@ -17,6 +17,7 @@
* along with this program; if not, write to the Free Software Foundation,
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
+/* eslint-disable import/first, import/order */
jest.mock('../../../../api/ce', () => ({
getTask: jest.fn()
}));
diff --git a/server/sonar-web/src/main/js/apps/background-tasks/components/__tests__/WorkersForm-test.tsx b/server/sonar-web/src/main/js/apps/background-tasks/components/__tests__/WorkersForm-test.tsx
index 813eff21896..94bd72f7542 100644
--- a/server/sonar-web/src/main/js/apps/background-tasks/components/__tests__/WorkersForm-test.tsx
+++ b/server/sonar-web/src/main/js/apps/background-tasks/components/__tests__/WorkersForm-test.tsx
@@ -17,6 +17,7 @@
* along with this program; if not, write to the Free Software Foundation,
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
+/* eslint-disable import/first, import/order */
jest.mock('../../../../api/ce', () => ({
setWorkerCount: () => Promise.resolve()
}));
diff --git a/server/sonar-web/src/main/js/apps/code/components/App.tsx b/server/sonar-web/src/main/js/apps/code/components/App.tsx
index aa773ae2177..2fd66d70ad7 100644
--- a/server/sonar-web/src/main/js/apps/code/components/App.tsx
+++ b/server/sonar-web/src/main/js/apps/code/components/App.tsx
@@ -222,8 +222,8 @@ export default class App extends React.PureComponent<Props, State> {
<Breadcrumbs branch={branchName} breadcrumbs={breadcrumbs} rootComponent={component} />
)}
- {sourceViewer == undefined &&
- components != undefined && (
+ {sourceViewer === undefined &&
+ components !== undefined && (
<div className={componentsClassName}>
<Components
baseComponent={baseComponent}
@@ -234,12 +234,12 @@ export default class App extends React.PureComponent<Props, State> {
</div>
)}
- {sourceViewer == undefined &&
- components != undefined && (
+ {sourceViewer === undefined &&
+ components !== undefined && (
<ListFooter count={components.length} total={total} loadMore={this.handleLoadMore} />
)}
- {sourceViewer != undefined && (
+ {sourceViewer !== undefined && (
<div className="spacer-top">
<SourceViewer branch={branchName} component={sourceViewer.key} />
</div>
diff --git a/server/sonar-web/src/main/js/apps/code/components/ComponentName.tsx b/server/sonar-web/src/main/js/apps/code/components/ComponentName.tsx
index c0947e98ec0..65f855700ed 100644
--- a/server/sonar-web/src/main/js/apps/code/components/ComponentName.tsx
+++ b/server/sonar-web/src/main/js/apps/code/components/ComponentName.tsx
@@ -59,7 +59,7 @@ export default function ComponentName(props: Props) {
const { branch, component, rootComponent, previous, canBrowse = false } = props;
const areBothDirs = component.qualifier === 'DIR' && previous && previous.qualifier === 'DIR';
const prefix =
- areBothDirs && previous != undefined
+ areBothDirs && previous !== undefined
? mostCommitPrefix([component.name + '/', previous.name + '/'])
: '';
const name = prefix ? (
diff --git a/server/sonar-web/src/main/js/apps/issues/components/ComponentBreadcrumbs.tsx b/server/sonar-web/src/main/js/apps/issues/components/ComponentBreadcrumbs.tsx
index 6e4b9a13805..b086fb5a125 100644
--- a/server/sonar-web/src/main/js/apps/issues/components/ComponentBreadcrumbs.tsx
+++ b/server/sonar-web/src/main/js/apps/issues/components/ComponentBreadcrumbs.tsx
@@ -61,8 +61,8 @@ export default function ComponentBreadcrumbs({ branch, component, issue, organiz
)}
{displaySubProject &&
- issue.subProject != undefined &&
- issue.subProjectName != undefined && (
+ issue.subProject !== undefined &&
+ issue.subProjectName !== undefined && (
<span title={issue.subProjectName}>
<Link to={getProjectUrl(issue.subProject, branch)} className="link-no-underline">
{limitComponentName(issue.subProjectName)}
diff --git a/server/sonar-web/src/main/js/apps/portfolio/components/Activity.tsx b/server/sonar-web/src/main/js/apps/portfolio/components/Activity.tsx
index 66cef7e572d..7816da08c76 100644
--- a/server/sonar-web/src/main/js/apps/portfolio/components/Activity.tsx
+++ b/server/sonar-web/src/main/js/apps/portfolio/components/Activity.tsx
@@ -103,8 +103,8 @@ export default class Activity extends React.PureComponent<Props> {
{this.state.loading ? (
<i className="spinner" />
) : (
- this.state.metrics != undefined &&
- this.state.history != undefined && (
+ this.state.metrics !== undefined &&
+ this.state.history !== undefined && (
<AnyPreviewGraph
history={this.state.history}
metrics={this.state.metrics}
diff --git a/server/sonar-web/src/main/js/apps/portfolio/components/App.tsx b/server/sonar-web/src/main/js/apps/portfolio/components/App.tsx
index ec7f35fc0b2..7d3efb507bf 100644
--- a/server/sonar-web/src/main/js/apps/portfolio/components/App.tsx
+++ b/server/sonar-web/src/main/js/apps/portfolio/components/App.tsx
@@ -98,10 +98,10 @@ export default class App extends React.PureComponent<Props, State> {
);
}
- isEmpty = () => this.state.measures == undefined || this.state.measures['ncloc'] == undefined;
+ isEmpty = () => this.state.measures === undefined || this.state.measures['ncloc'] === undefined;
isNotComputed = () =>
- this.state.measures && this.state.measures['reliability_rating'] == undefined;
+ this.state.measures && this.state.measures['reliability_rating'] === undefined;
renderSpinner() {
return (
@@ -151,8 +151,8 @@ export default class App extends React.PureComponent<Props, State> {
<MaintainabilityBox component={component.key} measures={measures!} />
</div>
- {subComponents != undefined &&
- totalSubComponents != undefined && (
+ {subComponents !== undefined &&
+ totalSubComponents !== undefined && (
<WorstProjects
component={component.key}
subComponents={subComponents}
diff --git a/server/sonar-web/src/main/js/apps/portfolio/components/__tests__/Activity-test.tsx b/server/sonar-web/src/main/js/apps/portfolio/components/__tests__/Activity-test.tsx
index 1959dc4daaf..e0fc5b8ff9d 100644
--- a/server/sonar-web/src/main/js/apps/portfolio/components/__tests__/Activity-test.tsx
+++ b/server/sonar-web/src/main/js/apps/portfolio/components/__tests__/Activity-test.tsx
@@ -17,6 +17,7 @@
* along with this program; if not, write to the Free Software Foundation,
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
+/* eslint-disable import/first, import/order */
jest.mock('../../../../helpers/storage', () => ({
getCustomGraph: () => ['coverage'],
getGraph: () => 'custom'
diff --git a/server/sonar-web/src/main/js/apps/portfolio/components/__tests__/App-test.tsx b/server/sonar-web/src/main/js/apps/portfolio/components/__tests__/App-test.tsx
index e9c93fb7279..0a894272da3 100644
--- a/server/sonar-web/src/main/js/apps/portfolio/components/__tests__/App-test.tsx
+++ b/server/sonar-web/src/main/js/apps/portfolio/components/__tests__/App-test.tsx
@@ -17,6 +17,7 @@
* along with this program; if not, write to the Free Software Foundation,
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
+/* eslint-disable import/first, import/order */
jest.mock('../../../../api/measures', () => ({
getMeasures: jest.fn(() => Promise.resolve([]))
}));
@@ -27,12 +28,14 @@ jest.mock('../../../../api/components', () => ({
// mock Activity to not deal with localstorage
jest.mock('../Activity', () => ({
+ // eslint-disable-next-line
default: function Activity() {
return null;
}
}));
jest.mock('../Report', () => ({
+ // eslint-disable-next-line
default: function Report() {
return null;
}
diff --git a/server/sonar-web/src/main/js/apps/portfolio/components/__tests__/Report-test.tsx b/server/sonar-web/src/main/js/apps/portfolio/components/__tests__/Report-test.tsx
index 1a21649ae06..7b725a0ee5e 100644
--- a/server/sonar-web/src/main/js/apps/portfolio/components/__tests__/Report-test.tsx
+++ b/server/sonar-web/src/main/js/apps/portfolio/components/__tests__/Report-test.tsx
@@ -17,6 +17,7 @@
* along with this program; if not, write to the Free Software Foundation,
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
+/* eslint-disable import/first, import/order */
jest.mock('../../../../api/report', () => {
const report = require.requireActual('../../../../api/report');
report.getReportStatus = jest.fn(() => Promise.resolve({}));
diff --git a/server/sonar-web/src/main/js/apps/portfolio/components/__tests__/Subscription-test.tsx b/server/sonar-web/src/main/js/apps/portfolio/components/__tests__/Subscription-test.tsx
index 4fa146bc940..003d49545a6 100644
--- a/server/sonar-web/src/main/js/apps/portfolio/components/__tests__/Subscription-test.tsx
+++ b/server/sonar-web/src/main/js/apps/portfolio/components/__tests__/Subscription-test.tsx
@@ -17,6 +17,7 @@
* along with this program; if not, write to the Free Software Foundation,
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
+/* eslint-disable import/first, import/order */
jest.mock('../../../../api/report', () => {
const report = require.requireActual('../../../../api/report');
report.subscribe = jest.fn(() => Promise.resolve());
diff --git a/server/sonar-web/src/main/js/apps/projectBranches/components/App.tsx b/server/sonar-web/src/main/js/apps/projectBranches/components/App.tsx
index 5ff696ef9d7..19092afe655 100644
--- a/server/sonar-web/src/main/js/apps/projectBranches/components/App.tsx
+++ b/server/sonar-web/src/main/js/apps/projectBranches/components/App.tsx
@@ -18,15 +18,15 @@
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
import * as React from 'react';
+import { FormattedMessage } from 'react-intl';
+import { Link } from 'react-router';
import BranchRow from './BranchRow';
import LongBranchesPattern from './LongBranchesPattern';
import { Branch } from '../../../app/types';
import { sortBranchesAsTree } from '../../../helpers/branches';
import { translate } from '../../../helpers/l10n';
import { getValues } from '../../../api/settings';
-import { FormattedMessage } from 'react-intl';
import { formatMeasure } from '../../../helpers/measures';
-import { Link } from 'react-router';
interface Props {
branches: Branch[];
diff --git a/server/sonar-web/src/main/js/apps/projectBranches/components/BranchRow.tsx b/server/sonar-web/src/main/js/apps/projectBranches/components/BranchRow.tsx
index 3cbc25df9a4..5290f17718c 100644
--- a/server/sonar-web/src/main/js/apps/projectBranches/components/BranchRow.tsx
+++ b/server/sonar-web/src/main/js/apps/projectBranches/components/BranchRow.tsx
@@ -18,8 +18,8 @@
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
import * as React from 'react';
-import { Branch } from '../../../app/types';
import * as classNames from 'classnames';
+import { Branch } from '../../../app/types';
import DeleteBranchModal from './DeleteBranchModal';
import LeakPeriodForm from './LeakPeriodForm';
import BranchStatus from '../../../components/common/BranchStatus';
diff --git a/server/sonar-web/src/main/js/apps/projectBranches/components/RenameBranchModal.tsx b/server/sonar-web/src/main/js/apps/projectBranches/components/RenameBranchModal.tsx
index 181fee72365..02bd8572c9c 100644
--- a/server/sonar-web/src/main/js/apps/projectBranches/components/RenameBranchModal.tsx
+++ b/server/sonar-web/src/main/js/apps/projectBranches/components/RenameBranchModal.tsx
@@ -109,7 +109,7 @@ export default class RenameBranchModal extends React.PureComponent<Props, State>
required={true}
size={50}
type="text"
- value={this.state.name != undefined ? this.state.name : branch.name}
+ value={this.state.name !== undefined ? this.state.name : branch.name}
/>
</div>
</div>
diff --git a/server/sonar-web/src/main/js/apps/projectBranches/components/__tests__/App-test.tsx b/server/sonar-web/src/main/js/apps/projectBranches/components/__tests__/App-test.tsx
index 9ffafb34d72..166c8d4a99a 100644
--- a/server/sonar-web/src/main/js/apps/projectBranches/components/__tests__/App-test.tsx
+++ b/server/sonar-web/src/main/js/apps/projectBranches/components/__tests__/App-test.tsx
@@ -17,6 +17,7 @@
* along with this program; if not, write to the Free Software Foundation,
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
+/* eslint-disable import/first, import/order */
jest.mock('../../../../api/settings', () => ({
getValues: jest.fn(() => Promise.resolve([]))
}));
diff --git a/server/sonar-web/src/main/js/apps/projectBranches/components/__tests__/DeleteBranchModal-test.tsx b/server/sonar-web/src/main/js/apps/projectBranches/components/__tests__/DeleteBranchModal-test.tsx
index b2870587114..c5455dbcac6 100644
--- a/server/sonar-web/src/main/js/apps/projectBranches/components/__tests__/DeleteBranchModal-test.tsx
+++ b/server/sonar-web/src/main/js/apps/projectBranches/components/__tests__/DeleteBranchModal-test.tsx
@@ -17,6 +17,7 @@
* along with this program; if not, write to the Free Software Foundation,
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
+/* eslint-disable import/first */
jest.mock('../../../../api/branches', () => ({ deleteBranch: jest.fn() }));
import * as React from 'react';
diff --git a/server/sonar-web/src/main/js/apps/projectBranches/components/__tests__/LongBranchesPattern-test.tsx b/server/sonar-web/src/main/js/apps/projectBranches/components/__tests__/LongBranchesPattern-test.tsx
index ff142d2065c..48c79f25fed 100644
--- a/server/sonar-web/src/main/js/apps/projectBranches/components/__tests__/LongBranchesPattern-test.tsx
+++ b/server/sonar-web/src/main/js/apps/projectBranches/components/__tests__/LongBranchesPattern-test.tsx
@@ -17,6 +17,7 @@
* along with this program; if not, write to the Free Software Foundation,
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
+/* eslint-disable import/first, import/order */
jest.mock('../../../../api/settings', () => ({
getValues: jest.fn(() => Promise.resolve([]))
}));
@@ -40,7 +41,7 @@ it('renders', () => {
it('opens form', () => {
const wrapper = shallow(<LongBranchesPattern project="project" />);
- (wrapper.instance() as LongBranchesPattern) .mounted = true;
+ (wrapper.instance() as LongBranchesPattern).mounted = true;
wrapper.setState({ loading: false, setting: { value: 'release-.*' } });
click(wrapper.find('a'));
diff --git a/server/sonar-web/src/main/js/apps/projectBranches/components/__tests__/RenameBranchModal-test.tsx b/server/sonar-web/src/main/js/apps/projectBranches/components/__tests__/RenameBranchModal-test.tsx
index 3a1c962d68e..9c2b6602815 100644
--- a/server/sonar-web/src/main/js/apps/projectBranches/components/__tests__/RenameBranchModal-test.tsx
+++ b/server/sonar-web/src/main/js/apps/projectBranches/components/__tests__/RenameBranchModal-test.tsx
@@ -17,6 +17,7 @@
* along with this program; if not, write to the Free Software Foundation,
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
+/* eslint-disable import/first */
jest.mock('../../../../api/branches', () => ({ renameBranch: jest.fn() }));
import * as React from 'react';
diff --git a/server/sonar-web/src/main/js/apps/projectBranches/components/__tests__/SettingForm-test.tsx b/server/sonar-web/src/main/js/apps/projectBranches/components/__tests__/SettingForm-test.tsx
index f74831cd522..60ffeb3fbb4 100644
--- a/server/sonar-web/src/main/js/apps/projectBranches/components/__tests__/SettingForm-test.tsx
+++ b/server/sonar-web/src/main/js/apps/projectBranches/components/__tests__/SettingForm-test.tsx
@@ -17,6 +17,7 @@
* along with this program; if not, write to the Free Software Foundation,
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
+/* eslint-disable import/first, import/order */
jest.mock('../../../../api/settings', () => ({
setSimpleSettingValue: jest.fn(() => Promise.resolve()),
resetSettingValue: jest.fn(() => Promise.resolve())
diff --git a/server/sonar-web/src/main/js/apps/projectQualityGate/__tests__/App-test.tsx b/server/sonar-web/src/main/js/apps/projectQualityGate/__tests__/App-test.tsx
index ac0d97d33d7..4fa2bc575af 100644
--- a/server/sonar-web/src/main/js/apps/projectQualityGate/__tests__/App-test.tsx
+++ b/server/sonar-web/src/main/js/apps/projectQualityGate/__tests__/App-test.tsx
@@ -17,6 +17,7 @@
* along with this program; if not, write to the Free Software Foundation,
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
+/* eslint-disable import/first, import/order */
jest.mock('../../../api/quality-gates', () => ({
associateGateWithProject: jest.fn(() => Promise.resolve()),
dissociateGateWithProject: jest.fn(() => Promise.resolve()),
diff --git a/server/sonar-web/src/main/js/apps/projectQualityProfiles/__tests__/App-test.tsx b/server/sonar-web/src/main/js/apps/projectQualityProfiles/__tests__/App-test.tsx
index 2323bad9cfe..9e873f1187f 100644
--- a/server/sonar-web/src/main/js/apps/projectQualityProfiles/__tests__/App-test.tsx
+++ b/server/sonar-web/src/main/js/apps/projectQualityProfiles/__tests__/App-test.tsx
@@ -17,6 +17,7 @@
* along with this program; if not, write to the Free Software Foundation,
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
+/* eslint-disable import/first, import/order */
jest.mock('../../../api/quality-profiles', () => ({
associateProject: jest.fn(() => Promise.resolve()),
dissociateProject: jest.fn(() => Promise.resolve()),
@@ -116,7 +117,7 @@ function randomProfile(key: string, language: string, isDefault = false) {
isDefault,
key,
name: key,
- language: language,
+ language,
languageName: language,
organization: 'org'
};
diff --git a/server/sonar-web/src/main/js/apps/projectQualityProfiles/__tests__/Table-test.tsx b/server/sonar-web/src/main/js/apps/projectQualityProfiles/__tests__/Table-test.tsx
index 84e70359fab..14b93b8fc10 100644
--- a/server/sonar-web/src/main/js/apps/projectQualityProfiles/__tests__/Table-test.tsx
+++ b/server/sonar-web/src/main/js/apps/projectQualityProfiles/__tests__/Table-test.tsx
@@ -42,7 +42,7 @@ function randomProfile(key: string, language: string) {
activeDeprecatedRuleCount: 0,
key,
name: key,
- language: language,
+ language,
languageName: language,
organization: 'org'
};
diff --git a/server/sonar-web/src/main/js/apps/projects/__tests__/utils-test.ts b/server/sonar-web/src/main/js/apps/projects/__tests__/utils-test.ts
index e40971e373b..7f4330bbf52 100644
--- a/server/sonar-web/src/main/js/apps/projects/__tests__/utils-test.ts
+++ b/server/sonar-web/src/main/js/apps/projects/__tests__/utils-test.ts
@@ -49,6 +49,7 @@ describe('cumulativeMapFacetValues', () => {
{ val: '4', count: 2 },
{ val: '5', count: 0 }
])
+ // eslint-disable-next-line
).toEqual({ '1': 50, '2': 9, '3': 8, '4': 2, '5': 0 });
});
it('should correctly cumulate facets with NO_DATA items', () => {
diff --git a/server/sonar-web/src/main/js/apps/projects/components/AllProjects.tsx b/server/sonar-web/src/main/js/apps/projects/components/AllProjects.tsx
index 4181d618a10..65bdfac3f43 100644
--- a/server/sonar-web/src/main/js/apps/projects/components/AllProjects.tsx
+++ b/server/sonar-web/src/main/js/apps/projects/components/AllProjects.tsx
@@ -51,7 +51,6 @@ interface State {
export default class AllProjects extends React.PureComponent<Props, State> {
mounted: boolean;
- state: State = { loading: true, query: {} };
static contextTypes = {
currentUser: PropTypes.object.isRequired,
@@ -59,6 +58,11 @@ export default class AllProjects extends React.PureComponent<Props, State> {
router: PropTypes.object.isRequired
};
+ constructor(props: Props) {
+ super(props);
+ this.state = { loading: true, query: {} };
+ }
+
componentDidMount() {
this.mounted = true;
if (this.props.isFavorite && !this.context.currentUser.isLoggedIn) {
@@ -88,7 +92,7 @@ export default class AllProjects extends React.PureComponent<Props, State> {
getSort = () => this.state.query.sort || 'name';
- isFiltered = () => Object.values(this.state.query).some(value => value != undefined);
+ isFiltered = () => Object.values(this.state.query).some(value => value !== undefined);
stopLoading = () => {
if (this.mounted) {
@@ -280,10 +284,10 @@ export default class AllProjects extends React.PureComponent<Props, State> {
/>
)}
<ListFooter
- count={this.state.projects != undefined ? this.state.projects.length : 0}
+ count={this.state.projects !== undefined ? this.state.projects.length : 0}
loadMore={this.fetchMoreProjects}
ready={!this.state.loading}
- total={this.state.total != undefined ? this.state.total : 0}
+ total={this.state.total !== undefined ? this.state.total : 0}
/>
</div>
);
diff --git a/server/sonar-web/src/main/js/apps/projects/components/ProjectCardLanguages.tsx b/server/sonar-web/src/main/js/apps/projects/components/ProjectCardLanguages.tsx
index 4bf823864e0..277a3b6eec8 100644
--- a/server/sonar-web/src/main/js/apps/projects/components/ProjectCardLanguages.tsx
+++ b/server/sonar-web/src/main/js/apps/projects/components/ProjectCardLanguages.tsx
@@ -37,7 +37,7 @@ export default class ProjectCardLanguages extends React.PureComponent<Props> {
};
render() {
- if (this.props.distribution == undefined) {
+ if (this.props.distribution === undefined) {
return null;
}
diff --git a/server/sonar-web/src/main/js/apps/projects/components/ProjectCardOverall.tsx b/server/sonar-web/src/main/js/apps/projects/components/ProjectCardOverall.tsx
index 80ce9ceadb0..7dcae1fe7a2 100644
--- a/server/sonar-web/src/main/js/apps/projects/components/ProjectCardOverall.tsx
+++ b/server/sonar-web/src/main/js/apps/projects/components/ProjectCardOverall.tsx
@@ -43,7 +43,7 @@ export default function ProjectCardOverall({ organization, project }: Props) {
return (
<div data-key={project.key} className="boxed-group project-card">
<div className="boxed-group-header clearfix">
- {project.isFavorite != undefined && (
+ {project.isFavorite !== undefined && (
<Favorite
className="spacer-right"
component={project.key}
diff --git a/server/sonar-web/src/main/js/apps/projects/components/ProjectCardOverallMeasures.tsx b/server/sonar-web/src/main/js/apps/projects/components/ProjectCardOverallMeasures.tsx
index 8c3cdc978f2..5bba45518c1 100644
--- a/server/sonar-web/src/main/js/apps/projects/components/ProjectCardOverallMeasures.tsx
+++ b/server/sonar-web/src/main/js/apps/projects/components/ProjectCardOverallMeasures.tsx
@@ -34,7 +34,7 @@ interface Props {
}
export default function ProjectCardOverallMeasures({ measures }: Props) {
- if (measures == undefined) {
+ if (measures === undefined) {
return null;
}
diff --git a/server/sonar-web/src/main/js/apps/projects/components/__tests__/AllProjects-test.tsx b/server/sonar-web/src/main/js/apps/projects/components/__tests__/AllProjects-test.tsx
index 5afb5f49874..c696b9509c9 100644
--- a/server/sonar-web/src/main/js/apps/projects/components/__tests__/AllProjects-test.tsx
+++ b/server/sonar-web/src/main/js/apps/projects/components/__tests__/AllProjects-test.tsx
@@ -17,19 +17,23 @@
* along with this program; if not, write to the Free Software Foundation,
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
+/* eslint-disable import/first, import/order */
jest.mock('../ProjectsList', () => ({
+ // eslint-disable-next-line
default: function ProjectsList() {
return null;
}
}));
jest.mock('../PageHeader', () => ({
+ // eslint-disable-next-line
default: function PageHeader() {
return null;
}
}));
jest.mock('../PageSidebar', () => ({
+ // eslint-disable-next-line
default: function PageSidebar() {
return null;
}
diff --git a/server/sonar-web/src/main/js/apps/projects/components/__tests__/DefaultPageSelector-test.tsx b/server/sonar-web/src/main/js/apps/projects/components/__tests__/DefaultPageSelector-test.tsx
index ce03b94e0b3..b5d80b02f7e 100644
--- a/server/sonar-web/src/main/js/apps/projects/components/__tests__/DefaultPageSelector-test.tsx
+++ b/server/sonar-web/src/main/js/apps/projects/components/__tests__/DefaultPageSelector-test.tsx
@@ -17,7 +17,9 @@
* along with this program; if not, write to the Free Software Foundation,
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
+/* eslint-disable import/first, import/order */
jest.mock('../AllProjects', () => ({
+ // eslint-disable-next-line
default: function AllProjects() {
return null;
}
diff --git a/server/sonar-web/src/main/js/apps/projects/components/__tests__/FavoriteFilter-test.tsx b/server/sonar-web/src/main/js/apps/projects/components/__tests__/FavoriteFilter-test.tsx
index b7971fb416a..658ee1ab158 100644
--- a/server/sonar-web/src/main/js/apps/projects/components/__tests__/FavoriteFilter-test.tsx
+++ b/server/sonar-web/src/main/js/apps/projects/components/__tests__/FavoriteFilter-test.tsx
@@ -17,6 +17,7 @@
* along with this program; if not, write to the Free Software Foundation,
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
+/* eslint-disable import/first */
jest.mock('../../../../helpers/storage', () => ({
saveAll: jest.fn(),
saveFavorite: jest.fn()
diff --git a/server/sonar-web/src/main/js/apps/projects/filters/Filter.tsx b/server/sonar-web/src/main/js/apps/projects/filters/Filter.tsx
index 2da7a189b2a..655dd4ce491 100644
--- a/server/sonar-web/src/main/js/apps/projects/filters/Filter.tsx
+++ b/server/sonar-web/src/main/js/apps/projects/filters/Filter.tsx
@@ -85,7 +85,7 @@ export default class Filter extends React.PureComponent<Props> {
}
renderOptionBar(facetValue: number | undefined) {
- if (facetValue == undefined || !this.props.maxFacetValue) {
+ if (facetValue === undefined || !this.props.maxFacetValue) {
return null;
}
return (
diff --git a/server/sonar-web/src/main/js/apps/projects/utils.ts b/server/sonar-web/src/main/js/apps/projects/utils.ts
index c8f99c27b56..7ad9dd4e7c0 100644
--- a/server/sonar-web/src/main/js/apps/projects/utils.ts
+++ b/server/sonar-web/src/main/js/apps/projects/utils.ts
@@ -198,7 +198,7 @@ export function fetchProjects(
const value = isDiffMetric(measure.metric)
? getPeriodValue(measure, 1)
: measure.value;
- if (value != undefined) {
+ if (value !== undefined) {
componentMeasures[measure.metric] = value;
}
});
@@ -248,7 +248,7 @@ function convertToQueryData(
if (sort.s) {
data.s = sort.s;
}
- if (sort.hasOwnProperty('asc')) {
+ if (sort.asc !== undefined) {
data.asc = sort.asc;
}
return data;
diff --git a/server/sonar-web/src/main/js/apps/projectsManagement/BulkApplyTemplateModal.tsx b/server/sonar-web/src/main/js/apps/projectsManagement/BulkApplyTemplateModal.tsx
index 314988d7eed..3e81e28cb5c 100644
--- a/server/sonar-web/src/main/js/apps/projectsManagement/BulkApplyTemplateModal.tsx
+++ b/server/sonar-web/src/main/js/apps/projectsManagement/BulkApplyTemplateModal.tsx
@@ -69,7 +69,7 @@ export default class BulkApplyTemplateModal extends React.PureComponent<Props, S
loading: false,
permissionTemplate:
permissionTemplates.length > 0 ? permissionTemplates[0].id : undefined,
- permissionTemplates: permissionTemplates
+ permissionTemplates
});
}
},
diff --git a/server/sonar-web/src/main/js/apps/projectsManagement/Search.tsx b/server/sonar-web/src/main/js/apps/projectsManagement/Search.tsx
index d41a5c5e1bb..94318dbae7c 100644
--- a/server/sonar-web/src/main/js/apps/projectsManagement/Search.tsx
+++ b/server/sonar-web/src/main/js/apps/projectsManagement/Search.tsx
@@ -22,8 +22,7 @@ import * as Select from 'react-select';
import { sortBy } from 'lodash';
import BulkApplyTemplateModal from './BulkApplyTemplateModal';
import DeleteModal from './DeleteModal';
-import { QUALIFIERS_ORDER } from './utils';
-import { Project } from './utils';
+import { QUALIFIERS_ORDER, Project } from './utils';
import { Organization } from '../../app/types';
import Checkbox from '../../components/controls/Checkbox';
import { translate } from '../../helpers/l10n';
diff --git a/server/sonar-web/src/main/js/apps/projectsManagement/__tests__/App-test.tsx b/server/sonar-web/src/main/js/apps/projectsManagement/__tests__/App-test.tsx
index 0fb6b1d21d0..dadd3a45a1b 100644
--- a/server/sonar-web/src/main/js/apps/projectsManagement/__tests__/App-test.tsx
+++ b/server/sonar-web/src/main/js/apps/projectsManagement/__tests__/App-test.tsx
@@ -17,6 +17,7 @@
* along with this program; if not, write to the Free Software Foundation,
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
+/* eslint-disable import/first, import/order */
jest.mock('lodash', () => {
const lodash = require.requireActual('lodash');
lodash.debounce = (fn: Function) => (...args: any[]) => fn(args);
@@ -25,6 +26,7 @@ jest.mock('lodash', () => {
// actual version breaks `mount`
jest.mock('rc-tooltip', () => ({
+ // eslint-disable-next-line
default: function Tooltip() {
return null;
}
@@ -81,7 +83,7 @@ it('searches', () => {
expect(getComponents).lastCalledWith({ ...defaultSearchParameters, q: 'foo', qualifiers: 'TRK' });
});
-it('loads more', async () => {
+it('loads more', () => {
const wrapper = mountRender();
wrapper.find('ListFooter').prop<Function>('loadMore')();
expect(getComponents).lastCalledWith({ ...defaultSearchParameters, p: 2, qualifiers: 'TRK' });
diff --git a/server/sonar-web/src/main/js/apps/projectsManagement/__tests__/BulkApplyTemplateModal-test.tsx b/server/sonar-web/src/main/js/apps/projectsManagement/__tests__/BulkApplyTemplateModal-test.tsx
index cdb33cf7f33..75368168411 100644
--- a/server/sonar-web/src/main/js/apps/projectsManagement/__tests__/BulkApplyTemplateModal-test.tsx
+++ b/server/sonar-web/src/main/js/apps/projectsManagement/__tests__/BulkApplyTemplateModal-test.tsx
@@ -17,6 +17,7 @@
* along with this program; if not, write to the Free Software Foundation,
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
+/* eslint-disable import/first, import/order */
jest.mock('../../../api/permissions', () => ({
bulkApplyTemplate: jest.fn(() => Promise.resolve()),
getPermissionTemplates: jest.fn(() => Promise.resolve({ permissionTemplates: [] }))
diff --git a/server/sonar-web/src/main/js/apps/projectsManagement/__tests__/CreateProjectForm-test.tsx b/server/sonar-web/src/main/js/apps/projectsManagement/__tests__/CreateProjectForm-test.tsx
index bd8c3114b4e..c514345b78a 100644
--- a/server/sonar-web/src/main/js/apps/projectsManagement/__tests__/CreateProjectForm-test.tsx
+++ b/server/sonar-web/src/main/js/apps/projectsManagement/__tests__/CreateProjectForm-test.tsx
@@ -17,6 +17,7 @@
* along with this program; if not, write to the Free Software Foundation,
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
+/* eslint-disable import/first, import/order */
jest.mock('../../../api/components', () => ({
createProject: jest.fn(({ name }: { name: string }) =>
Promise.resolve({ project: { key: name, name } })
diff --git a/server/sonar-web/src/main/js/apps/projectsManagement/__tests__/DeleteModal-test.tsx b/server/sonar-web/src/main/js/apps/projectsManagement/__tests__/DeleteModal-test.tsx
index 976be4403a8..d73e5306632 100644
--- a/server/sonar-web/src/main/js/apps/projectsManagement/__tests__/DeleteModal-test.tsx
+++ b/server/sonar-web/src/main/js/apps/projectsManagement/__tests__/DeleteModal-test.tsx
@@ -17,6 +17,7 @@
* along with this program; if not, write to the Free Software Foundation,
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
+/* eslint-disable import/first, import/order */
jest.mock('../../../api/components', () => ({
bulkDeleteProjects: jest.fn(() => Promise.resolve())
}));
diff --git a/server/sonar-web/src/main/js/apps/projectsManagement/__tests__/Projects-test.tsx b/server/sonar-web/src/main/js/apps/projectsManagement/__tests__/Projects-test.tsx
index 792e29ccc48..cc29a0e243d 100644
--- a/server/sonar-web/src/main/js/apps/projectsManagement/__tests__/Projects-test.tsx
+++ b/server/sonar-web/src/main/js/apps/projectsManagement/__tests__/Projects-test.tsx
@@ -17,6 +17,7 @@
* along with this program; if not, write to the Free Software Foundation,
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
+/* eslint-disable import/first */
jest.mock('../../permissions/project/views/ApplyTemplateView');
import * as React from 'react';
diff --git a/server/sonar-web/src/main/js/apps/quality-profiles/components/ProfileContainer.tsx b/server/sonar-web/src/main/js/apps/quality-profiles/components/ProfileContainer.tsx
index 1d16a885659..d159d8354a3 100644
--- a/server/sonar-web/src/main/js/apps/quality-profiles/components/ProfileContainer.tsx
+++ b/server/sonar-web/src/main/js/apps/quality-profiles/components/ProfileContainer.tsx
@@ -32,7 +32,7 @@ interface Props {
onRequestFail: (reasong: any) => void;
organization: string | null;
profiles: Profile[];
- router: { replace: ({}) => void };
+ router: { replace: (path: any) => void };
updateProfiles: () => Promise<void>;
}
diff --git a/server/sonar-web/src/main/js/apps/quality-profiles/details/ProfilePermissionsForm.tsx b/server/sonar-web/src/main/js/apps/quality-profiles/details/ProfilePermissionsForm.tsx
index fe94b38b03d..8d892127fc7 100644
--- a/server/sonar-web/src/main/js/apps/quality-profiles/details/ProfilePermissionsForm.tsx
+++ b/server/sonar-web/src/main/js/apps/quality-profiles/details/ProfilePermissionsForm.tsx
@@ -82,7 +82,7 @@ export default class ProfilePermissionsForm extends React.PureComponent<Props, S
const { selected } = this.state;
if (selected) {
this.setState({ submitting: true });
- if ((selected as User).login != undefined) {
+ if ((selected as User).login !== undefined) {
this.handleUserAdd(selected as User);
} else {
this.handleGroupAdd(selected as Group);
diff --git a/server/sonar-web/src/main/js/apps/quality-profiles/details/ProfilePermissionsFormSelect.tsx b/server/sonar-web/src/main/js/apps/quality-profiles/details/ProfilePermissionsFormSelect.tsx
index e265206a49f..911bf55cca4 100644
--- a/server/sonar-web/src/main/js/apps/quality-profiles/details/ProfilePermissionsFormSelect.tsx
+++ b/server/sonar-web/src/main/js/apps/quality-profiles/details/ProfilePermissionsFormSelect.tsx
@@ -113,7 +113,7 @@ export default class ProfilePermissionsFormSelect extends React.PureComponent<Pr
}
function isUser(option: Option): option is User {
- return (option as User).login != undefined;
+ return (option as User).login !== undefined;
}
function getStringValue(option: Option) {
diff --git a/server/sonar-web/src/main/js/apps/quality-profiles/details/__tests__/ProfilePermissions-test.tsx b/server/sonar-web/src/main/js/apps/quality-profiles/details/__tests__/ProfilePermissions-test.tsx
index c61a60d83a8..fc13a173960 100644
--- a/server/sonar-web/src/main/js/apps/quality-profiles/details/__tests__/ProfilePermissions-test.tsx
+++ b/server/sonar-web/src/main/js/apps/quality-profiles/details/__tests__/ProfilePermissions-test.tsx
@@ -17,6 +17,7 @@
* along with this program; if not, write to the Free Software Foundation,
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
+/* eslint-disable import/first, import/order */
jest.mock('../../../../api/quality-profiles', () => ({
searchUsers: jest.fn(() => Promise.resolve([])),
searchGroups: jest.fn(() => Promise.resolve([]))
diff --git a/server/sonar-web/src/main/js/apps/quality-profiles/details/__tests__/ProfilePermissionsForm-test.tsx b/server/sonar-web/src/main/js/apps/quality-profiles/details/__tests__/ProfilePermissionsForm-test.tsx
index 603967ba787..a71948cbbbd 100644
--- a/server/sonar-web/src/main/js/apps/quality-profiles/details/__tests__/ProfilePermissionsForm-test.tsx
+++ b/server/sonar-web/src/main/js/apps/quality-profiles/details/__tests__/ProfilePermissionsForm-test.tsx
@@ -17,6 +17,7 @@
* along with this program; if not, write to the Free Software Foundation,
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
+/* eslint-disable import/first, import/order */
jest.mock('../../../../api/quality-profiles', () => ({
addUser: jest.fn(() => Promise.resolve()),
addGroup: jest.fn(() => Promise.resolve())
diff --git a/server/sonar-web/src/main/js/apps/quality-profiles/details/__tests__/ProfilePermissionsFormSelect-test.tsx b/server/sonar-web/src/main/js/apps/quality-profiles/details/__tests__/ProfilePermissionsFormSelect-test.tsx
index 3483c66c085..7a029559e80 100644
--- a/server/sonar-web/src/main/js/apps/quality-profiles/details/__tests__/ProfilePermissionsFormSelect-test.tsx
+++ b/server/sonar-web/src/main/js/apps/quality-profiles/details/__tests__/ProfilePermissionsFormSelect-test.tsx
@@ -17,6 +17,7 @@
* along with this program; if not, write to the Free Software Foundation,
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
+/* eslint-disable import/first */
jest.mock('lodash', () => {
const lodash = require.requireActual('lodash');
lodash.debounce = (fn: Function) => (...args: any[]) => fn(...args);
diff --git a/server/sonar-web/src/main/js/apps/quality-profiles/details/__tests__/ProfilePermissionsGroup-test.tsx b/server/sonar-web/src/main/js/apps/quality-profiles/details/__tests__/ProfilePermissionsGroup-test.tsx
index d792b2c36bf..d9edeb1d1a1 100644
--- a/server/sonar-web/src/main/js/apps/quality-profiles/details/__tests__/ProfilePermissionsGroup-test.tsx
+++ b/server/sonar-web/src/main/js/apps/quality-profiles/details/__tests__/ProfilePermissionsGroup-test.tsx
@@ -17,6 +17,7 @@
* along with this program; if not, write to the Free Software Foundation,
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
+/* eslint-disable import/first, import/order */
jest.mock('../../../../api/quality-profiles', () => ({
removeGroup: jest.fn(() => Promise.resolve())
}));
diff --git a/server/sonar-web/src/main/js/apps/quality-profiles/details/__tests__/ProfilePermissionsUser-test.tsx b/server/sonar-web/src/main/js/apps/quality-profiles/details/__tests__/ProfilePermissionsUser-test.tsx
index 6fbd6f8ec9b..f2b26b8ce41 100644
--- a/server/sonar-web/src/main/js/apps/quality-profiles/details/__tests__/ProfilePermissionsUser-test.tsx
+++ b/server/sonar-web/src/main/js/apps/quality-profiles/details/__tests__/ProfilePermissionsUser-test.tsx
@@ -17,6 +17,7 @@
* along with this program; if not, write to the Free Software Foundation,
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
+/* eslint-disable import/first, import/order */
jest.mock('../../../../api/quality-profiles', () => ({
removeUser: jest.fn(() => Promise.resolve())
}));
diff --git a/server/sonar-web/src/main/js/apps/system/components/App.tsx b/server/sonar-web/src/main/js/apps/system/components/App.tsx
index 2211ed17dd5..a8108bf1865 100644
--- a/server/sonar-web/src/main/js/apps/system/components/App.tsx
+++ b/server/sonar-web/src/main/js/apps/system/components/App.tsx
@@ -41,12 +41,16 @@ interface State {
export default class App extends React.PureComponent<Props, State> {
mounted: boolean;
- state: State = { loading: true };
static contextTypes = {
router: PropTypes.object
};
+ constructor(props: Props) {
+ super(props);
+ this.state = { loading: true };
+ }
+
componentDidMount() {
this.mounted = true;
this.fetchSysInfo();
diff --git a/server/sonar-web/src/main/js/apps/system/utils.ts b/server/sonar-web/src/main/js/apps/system/utils.ts
index 7048439a678..7d6ccca5a0d 100644
--- a/server/sonar-web/src/main/js/apps/system/utils.ts
+++ b/server/sonar-web/src/main/js/apps/system/utils.ts
@@ -94,7 +94,7 @@ export function getSearchNodes(sysInfoData: ClusterSysInfo): NodeInfo[] {
export function isCluster(sysInfoData?: SysInfo): boolean {
return (
- sysInfoData != undefined && sysInfoData['System'] && sysInfoData['System'][HA_FIELD] === true
+ sysInfoData !== undefined && sysInfoData['System'] && sysInfoData['System'][HA_FIELD] === true
);
}
@@ -165,8 +165,8 @@ export function getStandaloneSecondarySections(sysInfoData: SysInfo): SysInfoSec
}
export function groupSections(sysInfoData: SysValueObject) {
- let mainSection: SysValueObject = {};
- let sections: SysInfoSection = {};
+ const mainSection: SysValueObject = {};
+ const sections: SysInfoSection = {};
each(sysInfoData, (item, key) => {
if (typeof item !== 'object' || item instanceof Array) {
mainSection[key] = item;
diff --git a/server/sonar-web/src/main/js/apps/web-api/components/WebApiApp.tsx b/server/sonar-web/src/main/js/apps/web-api/components/WebApiApp.tsx
index ebc579d5ca5..8ddcd805b10 100644
--- a/server/sonar-web/src/main/js/apps/web-api/components/WebApiApp.tsx
+++ b/server/sonar-web/src/main/js/apps/web-api/components/WebApiApp.tsx
@@ -44,17 +44,21 @@ interface State {
export default class WebApiApp extends React.PureComponent<Props, State> {
mounted: boolean;
- state: State = {
- domains: [],
- searchQuery: '',
- showDeprecated: false,
- showInternal: false
- };
static contextTypes = {
router: PropTypes.object.isRequired
};
+ constructor(props: Props) {
+ super(props);
+ this.state = {
+ domains: [],
+ searchQuery: '',
+ showDeprecated: false,
+ showInternal: false
+ };
+ }
+
componentDidMount() {
this.mounted = true;
this.fetchList();
diff --git a/server/sonar-web/src/main/js/apps/web-api/components/__tests__/Domain-test.tsx b/server/sonar-web/src/main/js/apps/web-api/components/__tests__/Domain-test.tsx
index 4114f4944e0..539f425e8d4 100644
--- a/server/sonar-web/src/main/js/apps/web-api/components/__tests__/Domain-test.tsx
+++ b/server/sonar-web/src/main/js/apps/web-api/components/__tests__/Domain-test.tsx
@@ -77,7 +77,7 @@ it('should not render internal actions', () => {
it('should render only actions matching the query', () => {
const actions = [ACTION, { ...ACTION, key: 'bar', description: 'Bar desc' }];
- const domain = { ...DOMAIN, actions: actions };
+ const domain = { ...DOMAIN, actions };
expect(
shallow(<Domain {...DEFAULT_PROPS} domain={domain} searchQuery="Foo" />)
).toMatchSnapshot();
@@ -89,7 +89,7 @@ it('should also render actions with a description matching the query', () => {
{ ...ACTION, key: 'bar', description: 'Bar desc' },
{ ...ACTION, key: 'baz', description: 'foobar' }
];
- const domain = { ...DOMAIN, actions: actions };
+ const domain = { ...DOMAIN, actions };
expect(
shallow(<Domain {...DEFAULT_PROPS} domain={domain} searchQuery="Foo" />)
).toMatchSnapshot();
diff --git a/server/sonar-web/src/main/js/components/charts/bar-chart.js b/server/sonar-web/src/main/js/components/charts/bar-chart.js
index 1548036d0c6..87786e6d9dd 100644
--- a/server/sonar-web/src/main/js/components/charts/bar-chart.js
+++ b/server/sonar-web/src/main/js/components/charts/bar-chart.js
@@ -48,6 +48,10 @@ export const BarChart = createReactClass({
};
},
+ getInitialState() {
+ return { width: this.props.width, height: this.props.height };
+ },
+
componentDidUpdate(prevProps) {
if (this.props.width && prevProps.width !== this.props.width) {
this.setState({ width: this.props.width });
@@ -57,10 +61,6 @@ export const BarChart = createReactClass({
}
},
- getInitialState() {
- return { width: this.props.width, height: this.props.height };
- },
-
handleClick(point) {
this.props.onBarClick(point);
},
diff --git a/server/sonar-web/src/main/js/components/common/SelectListItem.js b/server/sonar-web/src/main/js/components/common/SelectListItem.js
index 0fa49725305..dd6e81957bb 100644
--- a/server/sonar-web/src/main/js/components/common/SelectListItem.js
+++ b/server/sonar-web/src/main/js/components/common/SelectListItem.js
@@ -47,7 +47,7 @@ export default class SelectListItem extends React.PureComponent {
renderLink() {
let children = this.props.item;
- if (this.props.hasOwnProperty('children')) {
+ if (this.props.children) {
children = this.props.children;
}
return (
diff --git a/server/sonar-web/src/main/js/components/controls/DateInput.tsx b/server/sonar-web/src/main/js/components/controls/DateInput.tsx
index 5a0c0911f61..265643354e6 100644
--- a/server/sonar-web/src/main/js/components/controls/DateInput.tsx
+++ b/server/sonar-web/src/main/js/components/controls/DateInput.tsx
@@ -105,7 +105,7 @@ export default class DateInput extends React.PureComponent<Props> {
<path d="M5.5 6h2v2h-2V6zm3 0h2v2h-2V6zm3 0h2v2h-2V6zm-9 6h2v2h-2v-2zm3 0h2v2h-2v-2zm3 0h2v2h-2v-2zm-3-3h2v2h-2V9zm3 0h2v2h-2V9zm3 0h2v2h-2V9zm-9 0h2v2h-2V9zm11-9v1h-2V0h-7v1h-2V0h-2v16h15V0h-2zm1 15h-13V4h13v11z" />
</svg>
</span>
- {this.props.value != undefined && (
+ {this.props.value !== undefined && (
<a className="date-input-control-reset" href="#" onClick={this.handleResetClick}>
<CloseIcon className="" />
</a>
diff --git a/server/sonar-web/src/main/js/components/intl/DateFormatter.tsx b/server/sonar-web/src/main/js/components/intl/DateFormatter.tsx
index 91670a3c895..9c12362ba9d 100644
--- a/server/sonar-web/src/main/js/components/intl/DateFormatter.tsx
+++ b/server/sonar-web/src/main/js/components/intl/DateFormatter.tsx
@@ -33,10 +33,8 @@ export const longFormatterOption = { year: 'numeric', month: 'long', day: 'numer
export default function DateFormatter({ children, date, long }: Props) {
return (
- <FormattedDate
- children={children}
- value={parseDate(date)}
- {...(long ? longFormatterOption : formatterOption)}
- />
+ <FormattedDate value={parseDate(date)} {...(long ? longFormatterOption : formatterOption)}>
+ {children}
+ </FormattedDate>
);
}
diff --git a/server/sonar-web/src/main/js/components/intl/DateFromNow.tsx b/server/sonar-web/src/main/js/components/intl/DateFromNow.tsx
index ce2adea2a94..3e600273471 100644
--- a/server/sonar-web/src/main/js/components/intl/DateFromNow.tsx
+++ b/server/sonar-web/src/main/js/components/intl/DateFromNow.tsx
@@ -27,5 +27,5 @@ interface Props {
}
export default function DateFromNow({ children, date }: Props) {
- return <FormattedRelative children={children} value={parseDate(date)} />;
+ return <FormattedRelative value={parseDate(date)}>{children}</FormattedRelative>;
}
diff --git a/server/sonar-web/src/main/js/components/intl/DateTimeFormatter.tsx b/server/sonar-web/src/main/js/components/intl/DateTimeFormatter.tsx
index 9d9c1bcd03c..c26c72f4010 100644
--- a/server/sonar-web/src/main/js/components/intl/DateTimeFormatter.tsx
+++ b/server/sonar-web/src/main/js/components/intl/DateTimeFormatter.tsx
@@ -35,5 +35,9 @@ export const formatterOption = {
};
export default function DateTimeFormatter({ children, date }: Props) {
- return <FormattedDate children={children} value={parseDate(date)} {...formatterOption} />;
+ return (
+ <FormattedDate value={parseDate(date)} {...formatterOption}>
+ {children}
+ </FormattedDate>
+ );
}
diff --git a/server/sonar-web/src/main/js/components/intl/TimeFormatter.tsx b/server/sonar-web/src/main/js/components/intl/TimeFormatter.tsx
index efa15fc38a0..e6324cb6b01 100644
--- a/server/sonar-web/src/main/js/components/intl/TimeFormatter.tsx
+++ b/server/sonar-web/src/main/js/components/intl/TimeFormatter.tsx
@@ -33,10 +33,8 @@ export const longFormatterOption = { hour: 'numeric', minute: 'numeric', second:
export default function TimeFormatter({ children, date, long }: Props) {
return (
- <FormattedTime
- children={children}
- value={parseDate(date)}
- {...(long ? longFormatterOption : formatterOption)}
- />
+ <FormattedTime value={parseDate(date)} {...(long ? longFormatterOption : formatterOption)}>
+ {children}
+ </FormattedTime>
);
}
diff --git a/server/sonar-web/src/main/js/components/measure/Measure.tsx b/server/sonar-web/src/main/js/components/measure/Measure.tsx
index e52c12a7512..cb9a85aab5e 100644
--- a/server/sonar-web/src/main/js/components/measure/Measure.tsx
+++ b/server/sonar-web/src/main/js/components/measure/Measure.tsx
@@ -31,14 +31,14 @@ interface Props {
}
export default function Measure({ className, decimals, measure }: Props) {
- if (measure == undefined) {
+ if (measure === undefined) {
return <span>{'–'}</span>;
}
const metric = measure.metric;
const value = isDiffMetric(metric.key) ? measure.leak : measure.value;
- if (value == undefined) {
+ if (value === undefined) {
return <span>{'–'}</span>;
}
diff --git a/server/sonar-web/src/main/js/components/measure/__tests__/Measure-test.tsx b/server/sonar-web/src/main/js/components/measure/__tests__/Measure-test.tsx
index 5eb0a6efa3e..80f2e31efab 100644
--- a/server/sonar-web/src/main/js/components/measure/__tests__/Measure-test.tsx
+++ b/server/sonar-web/src/main/js/components/measure/__tests__/Measure-test.tsx
@@ -17,6 +17,7 @@
* along with this program; if not, write to the Free Software Foundation,
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
+/* eslint-disable import/first */
jest.mock('../../../helpers/measures', () => {
const measures = require.requireActual('../../../helpers/measures');
measures.getRatingTooltip = jest.fn(() => 'tooltip');
diff --git a/server/sonar-web/src/main/js/components/ui/Rating.tsx b/server/sonar-web/src/main/js/components/ui/Rating.tsx
index 183994c7eae..1225efed716 100644
--- a/server/sonar-web/src/main/js/components/ui/Rating.tsx
+++ b/server/sonar-web/src/main/js/components/ui/Rating.tsx
@@ -30,7 +30,7 @@ interface Props {
}
export default function Rating({ className, muted = false, small = false, value }: Props) {
- if (value == undefined) {
+ if (value === undefined) {
return <span>{'–'}</span>;
}
const formatted = formatMeasure(value, 'RATING');
diff --git a/server/sonar-web/src/main/js/helpers/issues.ts b/server/sonar-web/src/main/js/helpers/issues.ts
index efa8b272af6..33f8792bab6 100644
--- a/server/sonar-web/src/main/js/helpers/issues.ts
+++ b/server/sonar-web/src/main/js/helpers/issues.ts
@@ -81,7 +81,7 @@ function injectRelational(
) {
const newFields: { [x: string]: any } = {};
const baseValue = issue[baseField];
- if (baseValue != undefined && source != undefined) {
+ if (baseValue !== undefined && source !== undefined) {
const lookupValue = source.find(candidate => candidate[lookupField] === baseValue);
if (lookupValue != null) {
Object.keys(lookupValue).forEach(key => {
diff --git a/server/sonar-web/src/main/js/helpers/l10n.ts b/server/sonar-web/src/main/js/helpers/l10n.ts
index a6598790266..aa54768bea1 100644
--- a/server/sonar-web/src/main/js/helpers/l10n.ts
+++ b/server/sonar-web/src/main/js/helpers/l10n.ts
@@ -42,6 +42,7 @@ export function translate(...keys: string[]): string {
const messageKey = keys.join('.');
if (process.env.NODE_ENV === 'development') {
if (!messages[messageKey]) {
+ // eslint-disable-next-line
console.error(`No message for: ${messageKey}`);
}
}
@@ -59,6 +60,7 @@ export function translateWithParameters(
.reduce((acc, parameter, index) => acc.replace(`{${index}}`, parameter), message);
} else {
if (process.env.NODE_ENV === 'development') {
+ // eslint-disable-next-line
console.error(`No message for: ${messageKey}`);
}
return `${messageKey}.${parameters.join('.')}`;
diff --git a/server/sonar-web/src/main/js/helpers/measures.ts b/server/sonar-web/src/main/js/helpers/measures.ts
index 8c200a239ac..c0e89838f59 100644
--- a/server/sonar-web/src/main/js/helpers/measures.ts
+++ b/server/sonar-web/src/main/js/helpers/measures.ts
@@ -101,7 +101,7 @@ function useFormatter(
formatter: Formatter,
options?: any
): string {
- return value != undefined && value !== '' ? formatter(value, options) : '';
+ return value !== undefined && value !== '' ? formatter(value, options) : '';
}
function getFormatter(type: string): Formatter {
@@ -313,7 +313,7 @@ function formatDurationShort(
function durationFormatter(value: string | number): string {
if (typeof value === 'string') {
- value = parseInt(value);
+ value = parseInt(value, 10);
}
if (value === 0) {
return '0';
@@ -330,7 +330,7 @@ function durationFormatter(value: string | number): string {
function shortDurationFormatter(value: string | number): string {
if (typeof value === 'string') {
- value = parseInt(value);
+ value = parseInt(value, 10);
}
if (value === 0) {
return '0';
diff --git a/server/sonar-web/tsconfig.json b/server/sonar-web/tsconfig.json
index 8186016873d..427192d12e7 100644
--- a/server/sonar-web/tsconfig.json
+++ b/server/sonar-web/tsconfig.json
@@ -8,9 +8,7 @@
"strict": true,
"target": "es5",
"jsx": "react",
- // remove "es2015.promise", "es2015.iterable" when upgrading to TypeScript 2.5
- // see https://github.com/Microsoft/TypeScript/issues/16017
- "lib": ["es2015.promise", "es2015.iterable", "es2017", "dom"],
+ "lib": ["es2017", "dom"],
"module": "esnext",
"moduleResolution": "node",
"typeRoots": ["./src/main/js/typings", "./node_modules/@types"]
diff --git a/server/sonar-web/yarn.lock b/server/sonar-web/yarn.lock
index 5d70c6f3d03..b5e611c2c9b 100644
--- a/server/sonar-web/yarn.lock
+++ b/server/sonar-web/yarn.lock
@@ -182,10 +182,14 @@ address@1.0.2, address@^1.0.1:
version "1.0.2"
resolved "https://registry.yarnpkg.com/address/-/address-1.0.2.tgz#480081e82b587ba319459fef512f516fe03d58af"
-ajv-keywords@^1.0.0, ajv-keywords@^1.1.1:
+ajv-keywords@^1.1.1:
version "1.5.1"
resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-1.5.1.tgz#314dd0a4b3368fad3dfcdc54ede6171b886daf3c"
+ajv-keywords@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-2.1.0.tgz#a296e17f7bfae7c1ce4f7e0de53d29cb32162df0"
+
ajv@^4.7.0, ajv@^4.9.1:
version "4.11.8"
resolved "https://registry.yarnpkg.com/ajv/-/ajv-4.11.8.tgz#82ffb02b29e662ae53bdc20af15947706739c536"
@@ -202,6 +206,15 @@ ajv@^5.0.0:
json-schema-traverse "^0.3.0"
json-stable-stringify "^1.0.1"
+ajv@^5.2.0, ajv@^5.2.3:
+ version "5.2.3"
+ resolved "https://registry.yarnpkg.com/ajv/-/ajv-5.2.3.tgz#c06f598778c44c6b161abafe3466b81ad1814ed2"
+ dependencies:
+ co "^4.6.0"
+ fast-deep-equal "^1.0.0"
+ json-schema-traverse "^0.3.0"
+ json-stable-stringify "^1.0.1"
+
align-text@^0.1.1, align-text@^0.1.3:
version "0.1.4"
resolved "https://registry.yarnpkg.com/align-text/-/align-text-0.1.4.tgz#0cd90a561093f35d0a99256c22b7069433fad117"
@@ -238,6 +251,10 @@ ansi-escapes@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-2.0.0.tgz#5bae52be424878dd9783e8910e3fc2922e83c81b"
+ansi-escapes@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.0.0.tgz#ec3e8b4e9f8064fc02c3ac9b65f1c275bda8ef92"
+
ansi-html@0.0.7:
version "0.0.7"
resolved "https://registry.yarnpkg.com/ansi-html/-/ansi-html-0.0.7.tgz#813584021962a9e9e6fd039f940d12f56ca7859e"
@@ -290,6 +307,12 @@ argparse@^1.0.7:
dependencies:
sprintf-js "~1.0.2"
+aria-query@^0.7.0:
+ version "0.7.0"
+ resolved "https://registry.yarnpkg.com/aria-query/-/aria-query-0.7.0.tgz#4af10a1e61573ddea0cf3b99b51c52c05b424d24"
+ dependencies:
+ ast-types-flow "0.0.7"
+
arr-diff@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-2.0.0.tgz#8f3b827f955a8bd669697e4a4256ac3ceae356cf"
@@ -320,6 +343,13 @@ array-flatten@1.1.1:
version "1.1.1"
resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2"
+array-includes@^3.0.3:
+ version "3.0.3"
+ resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.0.3.tgz#184b48f62d92d7452bb31b323165c7f8bd02266d"
+ dependencies:
+ define-properties "^1.1.2"
+ es-abstract "^1.7.0"
+
array-map@~0.0.0:
version "0.0.0"
resolved "https://registry.yarnpkg.com/array-map/-/array-map-0.0.0.tgz#88a2bab73d1cf7bcd5c1b118a003f66f665fa662"
@@ -346,13 +376,6 @@ array-unique@^0.3.2:
version "0.3.2"
resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428"
-array.prototype.find@^2.0.1:
- version "2.0.4"
- resolved "https://registry.yarnpkg.com/array.prototype.find/-/array.prototype.find-2.0.4.tgz#556a5c5362c08648323ddaeb9de9d14bc1864c90"
- dependencies:
- define-properties "^1.1.2"
- es-abstract "^1.7.0"
-
arrify@^1.0.0, arrify@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d"
@@ -387,6 +410,10 @@ assert@^1.1.1:
dependencies:
util "0.10.3"
+ast-types-flow@0.0.7:
+ version "0.0.7"
+ resolved "https://registry.yarnpkg.com/ast-types-flow/-/ast-types-flow-0.0.7.tgz#f70b735c6bca1a5c9c22d982c3e39e7feba3bdad"
+
async-each@^1.0.0:
version "1.0.1"
resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.1.tgz#19d386a1d9edc6e7c1c85d388aedbcc56d33602d"
@@ -456,7 +483,13 @@ aws4@^1.2.1:
version "1.6.0"
resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.6.0.tgz#83ef5ca860b2b32e4a0deedee8c771b9db57471e"
-babel-code-frame@6.22.0, babel-code-frame@^6.11.0, babel-code-frame@^6.16.0, babel-code-frame@^6.22.0:
+axobject-query@^0.1.0:
+ version "0.1.0"
+ resolved "https://registry.yarnpkg.com/axobject-query/-/axobject-query-0.1.0.tgz#62f59dbc59c9f9242759ca349960e7a2fe3c36c0"
+ dependencies:
+ ast-types-flow "0.0.7"
+
+babel-code-frame@6.22.0, babel-code-frame@^6.11.0, babel-code-frame@^6.22.0:
version "6.22.0"
resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.22.0.tgz#027620bee567a88c32561574e7fd0801d33118e4"
dependencies:
@@ -488,15 +521,6 @@ babel-core@^6.0.0, babel-core@^6.22.1, babel-core@^6.24.1:
slash "^1.0.0"
source-map "^0.5.0"
-babel-eslint@7.2.3:
- version "7.2.3"
- resolved "https://registry.yarnpkg.com/babel-eslint/-/babel-eslint-7.2.3.tgz#b2fe2d80126470f5c19442dc757253a897710827"
- dependencies:
- babel-code-frame "^6.22.0"
- babel-traverse "^6.23.1"
- babel-types "^6.23.0"
- babylon "^6.17.0"
-
babel-generator@^6.18.0, babel-generator@^6.25.0:
version "6.25.0"
resolved "https://registry.yarnpkg.com/babel-generator/-/babel-generator-6.25.0.tgz#33a1af70d5f2890aeb465a4a7793c1df6a9ea9fc"
@@ -1055,7 +1079,7 @@ babel-template@^6.16.0, babel-template@^6.24.1, babel-template@^6.25.0:
babylon "^6.17.2"
lodash "^4.2.0"
-babel-traverse@^6.18.0, babel-traverse@^6.23.1, babel-traverse@^6.24.1, babel-traverse@^6.25.0:
+babel-traverse@^6.18.0, babel-traverse@^6.24.1, babel-traverse@^6.25.0:
version "6.25.0"
resolved "https://registry.yarnpkg.com/babel-traverse/-/babel-traverse-6.25.0.tgz#2257497e2fcd19b89edc13c4c91381f9512496f1"
dependencies:
@@ -1069,7 +1093,7 @@ babel-traverse@^6.18.0, babel-traverse@^6.23.1, babel-traverse@^6.24.1, babel-tr
invariant "^2.2.0"
lodash "^4.2.0"
-babel-types@^6.18.0, babel-types@^6.19.0, babel-types@^6.23.0, babel-types@^6.24.1, babel-types@^6.25.0:
+babel-types@^6.18.0, babel-types@^6.19.0, babel-types@^6.24.1, babel-types@^6.25.0:
version "6.25.0"
resolved "https://registry.yarnpkg.com/babel-types/-/babel-types-6.25.0.tgz#70afb248d5660e5d18f811d91c8303b54134a18e"
dependencies:
@@ -1078,7 +1102,7 @@ babel-types@^6.18.0, babel-types@^6.19.0, babel-types@^6.23.0, babel-types@^6.24
lodash "^4.2.0"
to-fast-properties "^1.0.1"
-babylon@^6.17.0, babylon@^6.17.2, babylon@^6.17.4:
+babylon@^6.17.2, babylon@^6.17.4:
version "6.17.4"
resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.17.4.tgz#3e8b7402b88d22c3423e137a1577883b15ff869a"
@@ -1401,7 +1425,7 @@ center-align@^0.1.1:
align-text "^0.1.3"
lazy-cache "^1.0.3"
-chalk@1.1.3, chalk@^1.0.0, chalk@^1.1.0, chalk@^1.1.1, chalk@^1.1.3:
+chalk@1.1.3, chalk@^1.0.0, chalk@^1.1.0, chalk@^1.1.3:
version "1.1.3"
resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98"
dependencies:
@@ -1500,12 +1524,6 @@ clean-css@4.1.x:
dependencies:
source-map "0.5.x"
-cli-cursor@^1.0.1:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-1.0.2.tgz#64da3f7d56a54412e59794bd62dc35295e8f2987"
- dependencies:
- restore-cursor "^1.0.1"
-
cli-cursor@^2.1.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-2.1.0.tgz#b35dac376479facc3e94747d41d0d0f5238ffcb5"
@@ -1656,7 +1674,7 @@ concat-map@0.0.1:
version "0.0.1"
resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
-concat-stream@^1.4.6:
+concat-stream@^1.6.0:
version "1.6.0"
resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.0.tgz#0aac662fd52be78964d5532f694784e70110acf7"
dependencies:
@@ -1780,7 +1798,7 @@ cross-spawn@4.0.2:
lru-cache "^4.0.1"
which "^1.2.9"
-cross-spawn@5.1.0, cross-spawn@^5.0.1:
+cross-spawn@5.1.0, cross-spawn@^5.0.1, cross-spawn@^5.1.0:
version "5.1.0"
resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-5.1.0.tgz#e8bd0efee58fcff6f8f94510a0a554bbfa235449"
dependencies:
@@ -1983,12 +2001,6 @@ d3-time@1:
version "1.0.7"
resolved "https://registry.yarnpkg.com/d3-time/-/d3-time-1.0.7.tgz#94caf6edbb7879bb809d0d1f7572bc48482f7270"
-d@1:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/d/-/d-1.0.0.tgz#754bb5bfe55451da69a58b94d45f4c5b0462d58f"
- dependencies:
- es5-ext "^0.10.9"
-
damerau-levenshtein@^1.0.0:
version "1.0.4"
resolved "https://registry.yarnpkg.com/damerau-levenshtein/-/damerau-levenshtein-1.0.4.tgz#03191c432cb6eea168bb77f3a55ffdccb8978514"
@@ -2013,6 +2025,12 @@ debug@2.6.8, debug@^2.1.1, debug@^2.2.0, debug@^2.3.3, debug@^2.6.0, debug@^2.6.
dependencies:
ms "2.0.0"
+debug@^3.0.1:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261"
+ dependencies:
+ ms "2.0.0"
+
decamelize@^1.0.0, decamelize@^1.1.1, decamelize@^1.1.2:
version "1.2.0"
resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290"
@@ -2126,13 +2144,20 @@ diffie-hellman@^5.0.0:
miller-rabin "^4.0.0"
randombytes "^2.0.0"
-doctrine@1.5.0, doctrine@^1.2.2:
+doctrine@1.5.0:
version "1.5.0"
resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-1.5.0.tgz#379dce730f6166f76cefa4e6707a159b02c5a6fa"
dependencies:
esutils "^2.0.2"
isarray "^1.0.0"
+doctrine@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-2.0.0.tgz#c73d8d2909d22291e1a007a395804da8b665fe63"
+ dependencies:
+ esutils "^2.0.2"
+ isarray "^1.0.0"
+
dom-align@1.x:
version "1.6.3"
resolved "https://registry.yarnpkg.com/dom-align/-/dom-align-1.6.3.tgz#3017bcc87f02547b1f15b458649a8d94a71f5903"
@@ -2232,6 +2257,10 @@ elliptic@^6.0.0:
minimalistic-assert "^1.0.0"
minimalistic-crypto-utils "^1.0.0"
+emoji-regex@^6.1.0:
+ version "6.5.1"
+ resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-6.5.1.tgz#9baea929b155565c11ea41c6626eaa65cef992c2"
+
emojis-list@^2.0.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-2.1.0.tgz#4daa4d9db00f9819880c79fa457ae5b09a1fd389"
@@ -2325,58 +2354,6 @@ es-to-primitive@^1.1.1:
is-date-object "^1.0.1"
is-symbol "^1.0.1"
-es5-ext@^0.10.14, es5-ext@^0.10.9, es5-ext@~0.10.14:
- version "0.10.27"
- resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.27.tgz#bf926b058c62b1cb5de1a887930673b6aa6d9a66"
- dependencies:
- es6-iterator "2"
- es6-symbol "~3.1"
-
-es6-iterator@2, es6-iterator@^2.0.1, es6-iterator@~2.0.1:
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/es6-iterator/-/es6-iterator-2.0.1.tgz#8e319c9f0453bf575d374940a655920e59ca5512"
- dependencies:
- d "1"
- es5-ext "^0.10.14"
- es6-symbol "^3.1"
-
-es6-map@^0.1.3:
- version "0.1.5"
- resolved "https://registry.yarnpkg.com/es6-map/-/es6-map-0.1.5.tgz#9136e0503dcc06a301690f0bb14ff4e364e949f0"
- dependencies:
- d "1"
- es5-ext "~0.10.14"
- es6-iterator "~2.0.1"
- es6-set "~0.1.5"
- es6-symbol "~3.1.1"
- event-emitter "~0.3.5"
-
-es6-set@~0.1.5:
- version "0.1.5"
- resolved "https://registry.yarnpkg.com/es6-set/-/es6-set-0.1.5.tgz#d2b3ec5d4d800ced818db538d28974db0a73ccb1"
- dependencies:
- d "1"
- es5-ext "~0.10.14"
- es6-iterator "~2.0.1"
- es6-symbol "3.1.1"
- event-emitter "~0.3.5"
-
-es6-symbol@3.1.1, es6-symbol@^3.1, es6-symbol@^3.1.1, es6-symbol@~3.1, es6-symbol@~3.1.1:
- version "3.1.1"
- resolved "https://registry.yarnpkg.com/es6-symbol/-/es6-symbol-3.1.1.tgz#bf00ef4fdab6ba1b46ecb7b629b4c7ed5715cc77"
- dependencies:
- d "1"
- es5-ext "~0.10.14"
-
-es6-weak-map@^2.0.1:
- version "2.0.2"
- resolved "https://registry.yarnpkg.com/es6-weak-map/-/es6-weak-map-2.0.2.tgz#5e3ab32251ffd1538a1f8e5ffa1357772f92d96f"
- dependencies:
- d "1"
- es5-ext "^0.10.14"
- es6-iterator "^2.0.1"
- es6-symbol "^3.1.1"
-
escape-html@1.0.3, escape-html@~1.0.3:
version "1.0.3"
resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988"
@@ -2396,15 +2373,6 @@ escodegen@^1.6.1:
optionalDependencies:
source-map "~0.2.0"
-escope@^3.6.0:
- version "3.6.0"
- resolved "https://registry.yarnpkg.com/escope/-/escope-3.6.0.tgz#e01975e812781a163a6dadfdd80398dc64c889c3"
- dependencies:
- es6-map "^0.1.3"
- es6-weak-map "^2.0.1"
- esrecurse "^4.1.0"
- estraverse "^4.1.1"
-
eslint-import-resolver-node@^0.3.1:
version "0.3.1"
resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.1.tgz#4422574cde66a9a7b099938ee4d508a199e0e3cc"
@@ -2429,15 +2397,9 @@ eslint-module-utils@^2.1.1:
debug "^2.6.8"
pkg-dir "^1.0.0"
-eslint-plugin-flowtype@^2.29.1:
- version "2.35.0"
- resolved "https://registry.yarnpkg.com/eslint-plugin-flowtype/-/eslint-plugin-flowtype-2.35.0.tgz#d17494f0ae8b727c632d8b9d4b4a848e7e0c04af"
- dependencies:
- lodash "^4.15.0"
-
-eslint-plugin-import@2.7.0:
- version "2.7.0"
- resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.7.0.tgz#21de33380b9efb55f5ef6d2e210ec0e07e7fa69f"
+eslint-plugin-import@2.8.0:
+ version "2.8.0"
+ resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.8.0.tgz#fa1b6ef31fcb3c501c09859c1b86f1fc5b986894"
dependencies:
builtin-modules "^1.1.1"
contains-path "^0.1.0"
@@ -2450,66 +2412,83 @@ eslint-plugin-import@2.7.0:
minimatch "^3.0.3"
read-pkg-up "^2.0.0"
-eslint-plugin-jsx-a11y@^3.0.2:
- version "3.0.2"
- resolved "https://registry.yarnpkg.com/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-3.0.2.tgz#9f0eabcafde3d2a2600d96a66adb90d099e841fe"
+eslint-plugin-jsx-a11y@6.0.2:
+ version "6.0.2"
+ resolved "https://registry.yarnpkg.com/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.0.2.tgz#659277a758b036c305a7e4a13057c301cd3be73f"
dependencies:
+ aria-query "^0.7.0"
+ array-includes "^3.0.3"
+ ast-types-flow "0.0.7"
+ axobject-query "^0.1.0"
damerau-levenshtein "^1.0.0"
- jsx-ast-utils "^1.0.0"
- object-assign "^4.0.1"
+ emoji-regex "^6.1.0"
+ jsx-ast-utils "^1.4.0"
+
+eslint-plugin-promise@3.6.0:
+ version "3.6.0"
+ resolved "https://registry.yarnpkg.com/eslint-plugin-promise/-/eslint-plugin-promise-3.6.0.tgz#54b7658c8f454813dc2a870aff8152ec4969ba75"
-eslint-plugin-react@^6.8.0:
- version "6.10.3"
- resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-6.10.3.tgz#c5435beb06774e12c7db2f6abaddcbf900cd3f78"
+eslint-plugin-react@7.4.0:
+ version "7.4.0"
+ resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.4.0.tgz#300a95861b9729c087d362dd64abcc351a74364a"
dependencies:
- array.prototype.find "^2.0.1"
- doctrine "^1.2.2"
+ doctrine "^2.0.0"
has "^1.0.1"
- jsx-ast-utils "^1.3.4"
- object.assign "^4.0.4"
+ jsx-ast-utils "^2.0.0"
+ prop-types "^15.5.10"
-eslint@3.14.1:
- version "3.14.1"
- resolved "https://registry.yarnpkg.com/eslint/-/eslint-3.14.1.tgz#8a62175f2255109494747a1b25128d97b8eb3d97"
+eslint-scope@^3.7.1:
+ version "3.7.1"
+ resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-3.7.1.tgz#3d63c3edfda02e06e01a452ad88caacc7cdcb6e8"
dependencies:
- babel-code-frame "^6.16.0"
- chalk "^1.1.3"
- concat-stream "^1.4.6"
- debug "^2.1.1"
- doctrine "^1.2.2"
- escope "^3.6.0"
- espree "^3.3.1"
+ esrecurse "^4.1.0"
+ estraverse "^4.1.1"
+
+eslint@4.9.0:
+ version "4.9.0"
+ resolved "https://registry.yarnpkg.com/eslint/-/eslint-4.9.0.tgz#76879d274068261b191fe0f2f56c74c2f4208e8b"
+ dependencies:
+ ajv "^5.2.0"
+ babel-code-frame "^6.22.0"
+ chalk "^2.1.0"
+ concat-stream "^1.6.0"
+ cross-spawn "^5.1.0"
+ debug "^3.0.1"
+ doctrine "^2.0.0"
+ eslint-scope "^3.7.1"
+ espree "^3.5.1"
+ esquery "^1.0.0"
estraverse "^4.2.0"
esutils "^2.0.2"
file-entry-cache "^2.0.0"
- glob "^7.0.3"
- globals "^9.14.0"
- ignore "^3.2.0"
+ functional-red-black-tree "^1.0.1"
+ glob "^7.1.2"
+ globals "^9.17.0"
+ ignore "^3.3.3"
imurmurhash "^0.1.4"
- inquirer "^0.12.0"
- is-my-json-valid "^2.10.0"
+ inquirer "^3.0.6"
is-resolvable "^1.0.0"
- js-yaml "^3.5.1"
- json-stable-stringify "^1.0.0"
+ js-yaml "^3.9.1"
+ json-stable-stringify "^1.0.1"
levn "^0.3.0"
- lodash "^4.0.0"
- mkdirp "^0.5.0"
+ lodash "^4.17.4"
+ minimatch "^3.0.2"
+ mkdirp "^0.5.1"
natural-compare "^1.4.0"
optionator "^0.8.2"
- path-is-inside "^1.0.1"
- pluralize "^1.2.1"
- progress "^1.1.8"
- require-uncached "^1.0.2"
- shelljs "^0.7.5"
- strip-bom "^3.0.0"
+ path-is-inside "^1.0.2"
+ pluralize "^7.0.0"
+ progress "^2.0.0"
+ require-uncached "^1.0.3"
+ semver "^5.3.0"
+ strip-ansi "^4.0.0"
strip-json-comments "~2.0.1"
- table "^3.7.8"
+ table "^4.0.1"
text-table "~0.2.0"
- user-home "^2.0.0"
-espree@^3.3.1:
- version "3.5.0"
- resolved "https://registry.yarnpkg.com/espree/-/espree-3.5.0.tgz#98358625bdd055861ea27e2867ea729faf463d8d"
+espree@^3.5.1:
+ version "3.5.1"
+ resolved "https://registry.yarnpkg.com/espree/-/espree-3.5.1.tgz#0c988b8ab46db53100a1954ae4ba995ddd27d87e"
dependencies:
acorn "^5.1.1"
acorn-jsx "^3.0.0"
@@ -2522,6 +2501,12 @@ esprima@^4.0.0:
version "4.0.0"
resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.0.tgz#4499eddcd1110e0b218bacf2fa7f7f59f55ca804"
+esquery@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.0.0.tgz#cfba8b57d7fba93f17298a8a006a04cda13d80fa"
+ dependencies:
+ estraverse "^4.0.0"
+
esrecurse@^4.1.0:
version "4.2.0"
resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.2.0.tgz#fa9568d98d3823f9a41d91e902dcab9ea6e5b163"
@@ -2533,7 +2518,7 @@ estraverse@^1.9.1:
version "1.9.3"
resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-1.9.3.tgz#af67f2dc922582415950926091a4005d29c9bb44"
-estraverse@^4.1.0, estraverse@^4.1.1, estraverse@^4.2.0:
+estraverse@^4.0.0, estraverse@^4.1.0, estraverse@^4.1.1, estraverse@^4.2.0:
version "4.2.0"
resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.2.0.tgz#0dee3fed31fcd469618ce7342099fc1afa0bdb13"
@@ -2545,13 +2530,6 @@ etag@~1.8.0:
version "1.8.0"
resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.0.tgz#6f631aef336d6c46362b51764044ce216be3c051"
-event-emitter@~0.3.5:
- version "0.3.5"
- resolved "https://registry.yarnpkg.com/event-emitter/-/event-emitter-0.3.5.tgz#df8c69eef1647923c7157b9ce83840610b02cc39"
- dependencies:
- d "1"
- es5-ext "~0.10.14"
-
eventemitter3@1.x.x:
version "1.2.0"
resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-1.2.0.tgz#1c86991d816ad1e504750e73874224ecf3bec508"
@@ -2598,10 +2576,6 @@ exenv@^1.2.1:
version "1.2.2"
resolved "https://registry.yarnpkg.com/exenv/-/exenv-1.2.2.tgz#2ae78e85d9894158670b03d47bec1f03bd91bb9d"
-exit-hook@^1.0.0:
- version "1.1.1"
- resolved "https://registry.yarnpkg.com/exit-hook/-/exit-hook-1.1.1.tgz#f05ca233b48c05d54fff07765df8507e95c02ff8"
-
expand-brackets@^0.1.4:
version "0.1.5"
resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-0.1.5.tgz#df07284e342a807cd733ac5af72411e581d1177b"
@@ -2767,13 +2741,6 @@ fbjs@^0.8.9:
setimmediate "^1.0.5"
ua-parser-js "^0.7.9"
-figures@^1.3.5:
- version "1.7.0"
- resolved "https://registry.yarnpkg.com/figures/-/figures-1.7.0.tgz#cbe1e3affcf1cd44b80cadfed28dc793a9701d2e"
- dependencies:
- escape-string-regexp "^1.0.5"
- object-assign "^4.1.0"
-
figures@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/figures/-/figures-2.0.0.tgz#3ab1a2d2a62c8bfb431a0c94cb797a2fce27c962"
@@ -2973,6 +2940,10 @@ function.prototype.name@^1.0.0:
function-bind "^1.1.0"
is-callable "^1.1.3"
+functional-red-black-tree@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327"
+
gauge@~2.7.3:
version "2.7.4"
resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.4.tgz#2c03405c7538c39d7eb37b317022e325fb018bf7"
@@ -2986,16 +2957,6 @@ gauge@~2.7.3:
strip-ansi "^3.0.1"
wide-align "^1.1.0"
-generate-function@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/generate-function/-/generate-function-2.0.0.tgz#6858fe7c0969b7d4e9093337647ac79f60dfbe74"
-
-generate-object-property@^1.1.0:
- version "1.2.0"
- resolved "https://registry.yarnpkg.com/generate-object-property/-/generate-object-property-1.2.0.tgz#9c0e1c40308ce804f4783618b937fa88f99d50d0"
- dependencies:
- is-property "^1.0.0"
-
get-caller-file@^1.0.1:
version "1.0.2"
resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.2.tgz#f702e63127e7e231c160a80c1554acb70d5047e5"
@@ -3027,7 +2988,7 @@ glob-parent@^2.0.0:
dependencies:
is-glob "^2.0.0"
-glob@^7.0.0, glob@^7.0.3, glob@^7.0.5, glob@^7.1.1:
+glob@^7.0.3, glob@^7.0.5, glob@^7.1.1, glob@^7.1.2:
version "7.1.2"
resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.2.tgz#c19c9df9a028702d678612384a6552404c636d15"
dependencies:
@@ -3056,7 +3017,7 @@ global-prefix@^1.0.1:
is-windows "^1.0.1"
which "^1.2.14"
-globals@^9.0.0, globals@^9.14.0:
+globals@^9.0.0, globals@^9.17.0:
version "9.18.0"
resolved "https://registry.yarnpkg.com/globals/-/globals-9.18.0.tgz#aa3896b3e69b487f17e31ed2143d69a8e30c2d8a"
@@ -3367,9 +3328,9 @@ ieee754@^1.1.4:
version "1.1.8"
resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.8.tgz#be33d40ac10ef1926701f6f08a2d86fbfd1ad3e4"
-ignore@^3.2.0:
- version "3.3.3"
- resolved "https://registry.yarnpkg.com/ignore/-/ignore-3.3.3.tgz#432352e57accd87ab3110e82d3fea0e47812156d"
+ignore@^3.3.3:
+ version "3.3.5"
+ resolved "https://registry.yarnpkg.com/ignore/-/ignore-3.3.5.tgz#c4e715455f6073a8d7e5dae72d2fc9d71663dba6"
image-size@~0.5.0:
version "0.5.5"
@@ -3443,22 +3404,23 @@ inquirer@3.2.1:
strip-ansi "^4.0.0"
through "^2.3.6"
-inquirer@^0.12.0:
- version "0.12.0"
- resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-0.12.0.tgz#1ef2bfd63504df0bc75785fff8c2c41df12f077e"
+inquirer@^3.0.6:
+ version "3.3.0"
+ resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-3.3.0.tgz#9dd2f2ad765dcab1ff0443b491442a20ba227dc9"
dependencies:
- ansi-escapes "^1.1.0"
- ansi-regex "^2.0.0"
- chalk "^1.0.0"
- cli-cursor "^1.0.1"
+ ansi-escapes "^3.0.0"
+ chalk "^2.0.0"
+ cli-cursor "^2.1.0"
cli-width "^2.0.0"
- figures "^1.3.5"
+ external-editor "^2.0.4"
+ figures "^2.0.0"
lodash "^4.3.0"
- readline2 "^1.0.1"
- run-async "^0.1.0"
- rx-lite "^3.1.2"
- string-width "^1.0.1"
- strip-ansi "^3.0.0"
+ mute-stream "0.0.7"
+ run-async "^2.2.0"
+ rx-lite "^4.0.8"
+ rx-lite-aggregates "^4.0.8"
+ string-width "^2.1.0"
+ strip-ansi "^4.0.0"
through "^2.3.6"
interpret@^1.0.0:
@@ -3631,15 +3593,6 @@ is-glob@^3.1.0:
dependencies:
is-extglob "^2.1.0"
-is-my-json-valid@^2.10.0:
- version "2.16.0"
- resolved "https://registry.yarnpkg.com/is-my-json-valid/-/is-my-json-valid-2.16.0.tgz#f079dd9bfdae65ee2038aae8acbc86ab109e3693"
- dependencies:
- generate-function "^2.0.0"
- generate-object-property "^1.1.0"
- jsonpointer "^4.0.0"
- xtend "^4.0.0"
-
is-number@^2.1.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/is-number/-/is-number-2.1.0.tgz#01fcbbb393463a548f2f466cce16dece49db908f"
@@ -3696,10 +3649,6 @@ is-promise@^2.1.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.1.0.tgz#79a2a9ece7f096e80f36d2b2f3bc16c1ff4bf3fa"
-is-property@^1.0.0:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/is-property/-/is-property-1.0.2.tgz#57fe1c4e48474edd65b09911f26b1cd4095dda84"
-
is-regex@^1.0.4:
version "1.0.4"
resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.0.4.tgz#5517489b547091b0930e095654ced25ee97e9491"
@@ -4069,13 +4018,20 @@ js-tokens@^3.0.0:
version "3.0.2"
resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b"
-js-yaml@^3.4.3, js-yaml@^3.5.1, js-yaml@^3.7.0:
+js-yaml@^3.4.3, js-yaml@^3.7.0:
version "3.9.1"
resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.9.1.tgz#08775cebdfdd359209f0d2acd383c8f86a6904a0"
dependencies:
argparse "^1.0.7"
esprima "^4.0.0"
+js-yaml@^3.9.1:
+ version "3.10.0"
+ resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.10.0.tgz#2e78441646bd4682e963f22b6e92823c309c62dc"
+ dependencies:
+ argparse "^1.0.7"
+ esprima "^4.0.0"
+
js-yaml@~3.7.0:
version "3.7.0"
resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.7.0.tgz#5c967ddd837a9bfdca5f2de84253abe8a1c03b80"
@@ -4135,7 +4091,7 @@ json-schema@0.2.3:
version "0.2.3"
resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13"
-json-stable-stringify@^1.0.0, json-stable-stringify@^1.0.1:
+json-stable-stringify@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz#9a759d39c5f2ff503fd5300646ed445f88c4f9af"
dependencies:
@@ -4169,10 +4125,6 @@ jsonify@~0.0.0:
version "0.0.0"
resolved "https://registry.yarnpkg.com/jsonify/-/jsonify-0.0.0.tgz#2c74b6ee41d93ca51b7b5aaee8f503631d252a73"
-jsonpointer@^4.0.0:
- version "4.0.1"
- resolved "https://registry.yarnpkg.com/jsonpointer/-/jsonpointer-4.0.1.tgz#4fd92cb34e0e9db3c89c8622ecf51f9b978c6cb9"
-
jsprim@^1.2.2:
version "1.4.1"
resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.1.tgz#313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2"
@@ -4182,10 +4134,16 @@ jsprim@^1.2.2:
json-schema "0.2.3"
verror "1.10.0"
-jsx-ast-utils@^1.0.0, jsx-ast-utils@^1.3.4:
+jsx-ast-utils@^1.4.0:
version "1.4.1"
resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-1.4.1.tgz#3867213e8dd79bf1e8f2300c0cfc1efb182c0df1"
+jsx-ast-utils@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-2.0.1.tgz#e801b1b39985e20fffc87b40e3748080e2dcac7f"
+ dependencies:
+ array-includes "^3.0.3"
+
keymaster@1.6.2:
version "1.6.2"
resolved "https://registry.yarnpkg.com/keymaster/-/keymaster-1.6.2.tgz#e1ae54d0ea9488f9f60b66b668f02e9a1946c6eb"
@@ -4421,11 +4379,15 @@ lodash.some@^4.4.0:
version "4.6.0"
resolved "https://registry.yarnpkg.com/lodash.some/-/lodash.some-4.6.0.tgz#1bb9f314ef6b8baded13b549169b2a945eb68e4d"
+lodash.unescape@4.0.1:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/lodash.unescape/-/lodash.unescape-4.0.1.tgz#bf2249886ce514cda112fae9218cdc065211fc9c"
+
lodash.uniq@^4.5.0:
version "4.5.0"
resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773"
-lodash@4.17.4, lodash@^4.0.0, lodash@^4.14.0, lodash@^4.15.0, lodash@^4.17.2, lodash@^4.17.3, lodash@^4.17.4, lodash@^4.2.0, lodash@^4.2.1, lodash@^4.3.0:
+lodash@4.17.4, lodash@^4.14.0, lodash@^4.17.2, lodash@^4.17.3, lodash@^4.17.4, lodash@^4.2.0, lodash@^4.2.1, lodash@^4.3.0:
version "4.17.4"
resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.4.tgz#78203a4d1c328ae1d86dca6460e369b57f4055ae"
@@ -4618,10 +4580,6 @@ ms@2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8"
-mute-stream@0.0.5:
- version "0.0.5"
- resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.5.tgz#8fbfabb0a98a253d3184331f9e8deb7372fac6c0"
-
mute-stream@0.0.7:
version "0.0.7"
resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab"
@@ -4898,10 +4856,6 @@ once@^1.3.0, once@^1.3.3, once@^1.4.0:
dependencies:
wrappy "1"
-onetime@^1.0.0:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/onetime/-/onetime-1.1.0.tgz#a1f7838f8314c516f05ecefcbc4ccfe04b4ed789"
-
onetime@^2.0.0:
version "2.0.1"
resolved "https://registry.yarnpkg.com/onetime/-/onetime-2.0.1.tgz#067428230fd67443b2794b22bba528b6867962d4"
@@ -5081,7 +5035,7 @@ path-is-absolute@^1.0.0:
version "1.0.1"
resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f"
-path-is-inside@^1.0.1:
+path-is-inside@^1.0.1, path-is-inside@^1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/path-is-inside/-/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53"
@@ -5151,9 +5105,9 @@ pkg-dir@^2.0.0:
dependencies:
find-up "^2.1.0"
-pluralize@^1.2.1:
- version "1.2.1"
- resolved "https://registry.yarnpkg.com/pluralize/-/pluralize-1.2.1.tgz#d1a21483fd22bb41e58a12fa3421823140897c45"
+pluralize@^7.0.0:
+ version "7.0.0"
+ resolved "https://registry.yarnpkg.com/pluralize/-/pluralize-7.0.0.tgz#298b89df8b93b0221dbf421ad2b1b1ea23fc6777"
portfinder@^1.0.9:
version "1.0.13"
@@ -5487,9 +5441,9 @@ process@^0.11.0:
version "0.11.10"
resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182"
-progress@^1.1.8:
- version "1.1.8"
- resolved "https://registry.yarnpkg.com/progress/-/progress-1.1.8.tgz#e260c78f6161cdd9b0e56cc3e0a85de17c7a57be"
+progress@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.0.tgz#8a1be366bf8fc23db2bd23f10c6fe920b4389d1f"
promise@^7.1.1:
version "7.3.1"
@@ -5877,20 +5831,6 @@ readdirp@^2.0.0:
readable-stream "^2.0.2"
set-immediate-shim "^1.0.1"
-readline2@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/readline2/-/readline2-1.0.1.tgz#41059608ffc154757b715d9989d199ffbf372e35"
- dependencies:
- code-point-at "^1.0.0"
- is-fullwidth-code-point "^1.0.0"
- mute-stream "0.0.5"
-
-rechoir@^0.6.2:
- version "0.6.2"
- resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.6.2.tgz#85204b54dba82d5742e28c96756ef43af50e3384"
- dependencies:
- resolve "^1.1.6"
-
recursive-readdir@2.2.1:
version "2.2.1"
resolved "https://registry.yarnpkg.com/recursive-readdir/-/recursive-readdir-2.2.1.tgz#90ef231d0778c5ce093c9a48d74e5c5422d13a99"
@@ -6066,7 +6006,7 @@ require-main-filename@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-1.0.1.tgz#97f717b69d48784f5f526a6c5aa8ffdda055a4d1"
-require-uncached@^1.0.2:
+require-uncached@^1.0.3:
version "1.0.3"
resolved "https://registry.yarnpkg.com/require-uncached/-/require-uncached-1.0.3.tgz#4e0d56d6c9662fd31e43011c4b95aa49955421d3"
dependencies:
@@ -6096,19 +6036,12 @@ resolve@1.1.7:
version "1.1.7"
resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b"
-resolve@^1.1.6, resolve@^1.2.0, resolve@^1.3.2:
+resolve@^1.2.0, resolve@^1.3.2:
version "1.4.0"
resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.4.0.tgz#a75be01c53da25d934a98ebd0e4c4a7312f92a86"
dependencies:
path-parse "^1.0.5"
-restore-cursor@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-1.0.1.tgz#34661f46886327fed2991479152252df92daa541"
- dependencies:
- exit-hook "^1.0.0"
- onetime "^1.0.0"
-
restore-cursor@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-2.0.0.tgz#9f7ee287f82fd326d4fd162923d62129eee0dfaf"
@@ -6141,12 +6074,6 @@ ripemd160@^2.0.0, ripemd160@^2.0.1:
hash-base "^2.0.0"
inherits "^2.0.1"
-run-async@^0.1.0:
- version "0.1.0"
- resolved "https://registry.yarnpkg.com/run-async/-/run-async-0.1.0.tgz#c8ad4a5e110661e402a7d21b530e009f25f8e389"
- dependencies:
- once "^1.3.0"
-
run-async@^2.2.0:
version "2.3.0"
resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.3.0.tgz#0371ab4ae0bdd720d4166d7dfda64ff7a445a6c0"
@@ -6163,10 +6090,6 @@ rx-lite@*, rx-lite@^4.0.8:
version "4.0.8"
resolved "https://registry.yarnpkg.com/rx-lite/-/rx-lite-4.0.8.tgz#0b1e11af8bc44836f04a6407e92da42467b79444"
-rx-lite@^3.1.2:
- version "3.1.2"
- resolved "https://registry.yarnpkg.com/rx-lite/-/rx-lite-3.1.2.tgz#19ce502ca572665f3b647b10939f97fd1615f102"
-
rx@^4.1.0:
version "4.1.0"
resolved "https://registry.yarnpkg.com/rx/-/rx-4.1.0.tgz#a5f13ff79ef3b740fe30aa803fb09f98805d4782"
@@ -6209,7 +6132,7 @@ select@^1.0.6:
version "1.1.2"
resolved "https://registry.yarnpkg.com/select/-/select-1.1.2.tgz#0e7350acdec80b1108528786ec1d4418d11b396d"
-"semver@2 || 3 || 4 || 5", semver@^5.3.0:
+"semver@2 || 3 || 4 || 5", semver@5.4.1, semver@^5.3.0:
version "5.4.1"
resolved "https://registry.yarnpkg.com/semver/-/semver-5.4.1.tgz#e059c09d8571f0540823733433505d3a2f00b18e"
@@ -6322,14 +6245,6 @@ shell-quote@1.6.1:
array-reduce "~0.0.0"
jsonify "~0.0.0"
-shelljs@^0.7.5:
- version "0.7.8"
- resolved "https://registry.yarnpkg.com/shelljs/-/shelljs-0.7.8.tgz#decbcf874b0d1e5fb72e14b164a9683048e9acb3"
- dependencies:
- glob "^7.0.0"
- interpret "^1.0.0"
- rechoir "^0.6.2"
-
shellwords@^0.1.0:
version "0.1.0"
resolved "https://registry.yarnpkg.com/shellwords/-/shellwords-0.1.0.tgz#66afd47b6a12932d9071cbfd98a52e785cd0ba14"
@@ -6342,9 +6257,11 @@ slash@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/slash/-/slash-1.0.0.tgz#c41f2f6c39fc16d1cd17ad4b5d896114ae470d55"
-slice-ansi@0.0.4:
- version "0.0.4"
- resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-0.0.4.tgz#edbf8903f66f7ce2f8eafd6ceed65e264c831b35"
+slice-ansi@1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-1.0.0.tgz#044f1a49d8842ff307aad6b505ed178bd950134d"
+ dependencies:
+ is-fullwidth-code-point "^2.0.0"
snapdragon-node@^2.0.1:
version "2.1.1"
@@ -6574,7 +6491,7 @@ string-width@^1.0.1, string-width@^1.0.2:
is-fullwidth-code-point "^1.0.0"
strip-ansi "^3.0.0"
-string-width@^2.0.0, string-width@^2.1.0:
+string-width@^2.0.0, string-width@^2.1.0, string-width@^2.1.1:
version "2.1.1"
resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e"
dependencies:
@@ -6668,16 +6585,16 @@ symbol-tree@^3.2.1:
version "3.2.2"
resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.2.tgz#ae27db38f660a7ae2e1c3b7d1bc290819b8519e6"
-table@^3.7.8:
- version "3.8.3"
- resolved "https://registry.yarnpkg.com/table/-/table-3.8.3.tgz#2bbc542f0fda9861a755d3947fefd8b3f513855f"
+table@^4.0.1:
+ version "4.0.2"
+ resolved "https://registry.yarnpkg.com/table/-/table-4.0.2.tgz#a33447375391e766ad34d3486e6e2aedc84d2e36"
dependencies:
- ajv "^4.7.0"
- ajv-keywords "^1.0.0"
- chalk "^1.1.1"
- lodash "^4.0.0"
- slice-ansi "0.0.4"
- string-width "^2.0.0"
+ ajv "^5.2.3"
+ ajv-keywords "^2.1.0"
+ chalk "^2.1.0"
+ lodash "^4.17.4"
+ slice-ansi "1.0.0"
+ string-width "^2.1.1"
tapable@^0.2.5, tapable@^0.2.7, tapable@~0.2.5:
version "0.2.8"
@@ -6855,9 +6772,16 @@ typedarray@^0.0.6:
version "0.0.6"
resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777"
-typescript@2.4.2:
- version "2.4.2"
- resolved "https://registry.yarnpkg.com/typescript/-/typescript-2.4.2.tgz#f8395f85d459276067c988aa41837a8f82870844"
+typescript-eslint-parser@8.0.0:
+ version "8.0.0"
+ resolved "https://registry.yarnpkg.com/typescript-eslint-parser/-/typescript-eslint-parser-8.0.0.tgz#81f70bbffca1139c1dc5a1301208a7fd8213f8b2"
+ dependencies:
+ lodash.unescape "4.0.1"
+ semver "5.4.1"
+
+typescript@2.5.3:
+ version "2.5.3"
+ resolved "https://registry.yarnpkg.com/typescript/-/typescript-2.5.3.tgz#df3dcdc38f3beb800d4bc322646b04a3f6ca7f0d"
ua-parser-js@^0.7.9:
version "0.7.14"
@@ -6978,12 +6902,6 @@ use@^2.0.0:
isobject "^3.0.0"
lazy-cache "^2.0.2"
-user-home@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/user-home/-/user-home-2.0.0.tgz#9c70bfd8169bc1dcbf48604e0f04b8b49cde9e9f"
- dependencies:
- os-homedir "^1.0.0"
-
util-deprecate@~1.0.1:
version "1.0.2"
resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf"