SEUNAGBEYE/Drop-Files

View on GitHub

Showing 25 of 25 total issues

Function renderFilePreviewer has 90 lines of code (exceeds 25 allowed). Consider refactoring.
Open

  renderFilePreviewer(){
    const { that } = this.props;
    const { 
      fileExtensionsRegex,
      supportedFormats: { image, video, audio, urls }
Severity: Major
Found in src/components/DropFile.jsx - About 3 hrs to fix

    Function render has 53 lines of code (exceeds 25 allowed). Consider refactoring.
    Open

      render(){
          return (
            <div>
              <button type="button" className="btn btn-primary" 
              data-toggle="modal" data-target="#exampleModalCenter"
    Severity: Major
    Found in example/Example.jsx - About 2 hrs to fix

      Function uploadToCloudinary has 26 lines of code (exceeds 25 allowed). Consider refactoring.
      Open

      const uploadToCloudinary = async (files) => {
        const formData = new FormData();
        var fileUrls = []
        return new Promise((resolve, reject) => {
          files.map(async (file) => {
      Severity: Minor
      Found in src/helpers/uploadToCloudinary.js - About 1 hr to fix

        Avoid too many return statements within this function.
        Open

                      return(
                        <div className="file-thumbnails"
                          key={uuid()}
                        >
                          <object data={window.URL.createObjectURL(file)}
        Severity: Major
        Found in src/components/DropFile.jsx - About 30 mins to fix

          Missing space before opening brace.
          Open

                  if(files.length === fileUrls.length){
          Severity: Minor
          Found in src/helpers/uploadToCloudinary.js by eslint

          Require Or Disallow Space Before Blocks (space-before-blocks)

          Consistency is an important part of any style guide. While it is a personal preference where to put the opening brace of blocks, it should be consistent across a whole project. Having an inconsistent style distracts the reader from seeing the important parts of the code.

          Rule Details

          This rule will enforce consistency of spacing before blocks. It is only applied on blocks that don’t begin on a new line.

          • This rule ignores spacing which is between => and a block. The spacing is handled by the arrow-spacing rule.
          • This rule ignores spacing which is between a keyword and a block. The spacing is handled by the keyword-spacing rule.

          Options

          This rule takes one argument. If it is "always" then blocks must always have at least one preceding space. If "never" then all blocks should never have any preceding space. If different spacing is desired for function blocks, keyword blocks and classes, an optional configuration object can be passed as the rule argument to configure the cases separately.

          ( e.g. { "functions": "never", "keywords": "always", "classes": "always" } )

          The default is "always".

          "always"

          Examples of incorrect code for this rule with the "always" option:

          /*eslint space-before-blocks: "error"*/
          
          if (a){
              b();
          }
          
          function a(){}
          
          for (;;){
              b();
          }
          
          try {} catch(a){}
          
          class Foo{
            constructor(){}
          }

          Examples of correct code for this rule with the "always" option:

          /*eslint space-before-blocks: "error"*/
          
          if (a) {
              b();
          }
          
          if (a) {
              b();
          } else{ /*no error. this is checked by `keyword-spacing` rule.*/
              c();
          }
          
          
          function a() {}
          
          for (;;) {
              b();
          }
          
          try {} catch(a) {}

          "never"

          Examples of incorrect code for this rule with the "never" option:

          /*eslint space-before-blocks: ["error", "never"]*/
          
          if (a) {
              b();
          }
          
          function a() {}
          
          for (;;) {
              b();
          }
          
          try {} catch(a) {}

          Examples of correct code for this rule with the "never" option:

          /*eslint space-before-blocks: ["error", "never"]*/
          
          if (a){
              b();
          }
          
          function a(){}
          
          for (;;){
              b();
          }
          
          try{} catch(a){}
          
          class Foo{
            constructor(){}
          }

          Examples of incorrect code for this rule when configured { "functions": "never", "keywords": "always", "classes": "never" }:

          /*eslint space-before-blocks: ["error", { "functions": "never", "keywords": "always", "classes": "never" }]*/
          /*eslint-env es6*/
          
          function a() {}
          
          try {} catch(a){}
          
          class Foo{
            constructor() {}
          }

          Examples of correct code for this rule when configured { "functions": "never", "keywords": "always", "classes": "never" }:

          /*eslint space-before-blocks: ["error", { "functions": "never", "keywords": "always", "classes": "never" }]*/
          /*eslint-env es6*/
          
          for (;;) {
            // ...
          }
          
          describe(function(){
            // ...
          });
          
          class Foo {
            constructor(){}
          }

          Examples of incorrect code for this rule when configured { "functions": "always", "keywords": "never", "classes": "never" }:

          /*eslint space-before-blocks: ["error", { "functions": "always", "keywords": "never", "classes": "never" }]*/
          /*eslint-env es6*/
          
          function a(){}
          
          try {} catch(a) {}
          
          class Foo {
            constructor(){}
          }

          Examples of correct code for this rule when configured { "functions": "always", "keywords": "never", "classes": "never" }:

          /*eslint space-before-blocks: ["error", { "functions": "always", "keywords": "never", "classes": "never" }]*/
          /*eslint-env es6*/
          
          if (a){
            b();
          }
          
          var a = function() {}
          
          class Foo{
            constructor() {}
          }

          Examples of incorrect code for this rule when configured { "functions": "never", "keywords": "never", "classes": "always" }:

          /*eslint space-before-blocks: ["error", { "functions": "never", "keywords": "never", "classes": "always" }]*/
          /*eslint-env es6*/
          
          class Foo{
            constructor(){}
          }

          Examples of correct code for this rule when configured { "functions": "never", "keywords": "never", "classes": "always" }:

          /*eslint space-before-blocks: ["error", { "functions": "never", "keywords": "never", "classes": "always" }]*/
          /*eslint-env es6*/
          
          class Foo {
            constructor(){}
          }

          When Not To Use It

          You can turn this rule off if you are not concerned with the consistency of spacing before blocks.

          Related Rules

          Newline required at end of file but not found.
          Open

          };
          Severity: Minor
          Found in src/config/config.js by eslint

          require or disallow newline at the end of files (eol-last)

          Trailing newlines in non-empty files are a common UNIX idiom. Benefits of trailing newlines include the ability to concatenate or append to files as well as output files to the terminal without interfering with shell prompts.

          Rule Details

          This rule enforces at least one newline (or absence thereof) at the end of non-empty files.

          Prior to v0.16.0 this rule also enforced that there was only a single line at the end of the file. If you still want this behaviour, consider enabling [no-multiple-empty-lines](no-multiple-empty-lines.md) with maxEOF and/or [no-trailing-spaces](no-trailing-spaces.md).

          Examples of incorrect code for this rule:

          /*eslint eol-last: ["error", "always"]*/
          
          function doSmth() {
            var foo = 2;
          }

          Examples of correct code for this rule:

          /*eslint eol-last: ["error", "always"]*/
          
          function doSmth() {
            var foo = 2;
          }\n

          Options

          This rule has a string option:

          • "always" (default) enforces that files end with a newline (LF)
          • "never" enforces that files do not end with a newline
          • "unix" (deprecated) is identical to "always"
          • "windows" (deprecated) is identical to "always", but will use a CRLF character when autofixing

          Deprecated: The options "unix" and "windows" are deprecated. If you need to enforce a specific linebreak style, use this rule in conjunction with linebreak-style. Source: http://eslint.org/docs/rules/

          Newline required at end of file but not found.
          Open

          export default DropFile;
          Severity: Minor
          Found in index.js by eslint

          require or disallow newline at the end of files (eol-last)

          Trailing newlines in non-empty files are a common UNIX idiom. Benefits of trailing newlines include the ability to concatenate or append to files as well as output files to the terminal without interfering with shell prompts.

          Rule Details

          This rule enforces at least one newline (or absence thereof) at the end of non-empty files.

          Prior to v0.16.0 this rule also enforced that there was only a single line at the end of the file. If you still want this behaviour, consider enabling [no-multiple-empty-lines](no-multiple-empty-lines.md) with maxEOF and/or [no-trailing-spaces](no-trailing-spaces.md).

          Examples of incorrect code for this rule:

          /*eslint eol-last: ["error", "always"]*/
          
          function doSmth() {
            var foo = 2;
          }

          Examples of correct code for this rule:

          /*eslint eol-last: ["error", "always"]*/
          
          function doSmth() {
            var foo = 2;
          }\n

          Options

          This rule has a string option:

          • "always" (default) enforces that files end with a newline (LF)
          • "never" enforces that files do not end with a newline
          • "unix" (deprecated) is identical to "always"
          • "windows" (deprecated) is identical to "always", but will use a CRLF character when autofixing

          Deprecated: The options "unix" and "windows" are deprecated. If you need to enforce a specific linebreak style, use this rule in conjunction with linebreak-style. Source: http://eslint.org/docs/rules/

          Strings must use singlequote.
          Open

              fs: "empty"
          Severity: Minor
          Found in webpack.config.js by eslint

          enforce the consistent use of either backticks, double, or single quotes (quotes)

          JavaScript allows you to define strings in one of three ways: double quotes, single quotes, and backticks (as of ECMAScript 6). For example:

          /*eslint-env es6*/
          
          var double = "double";
          var single = 'single';
          var backtick = `backtick`;    // ES6 only

          Each of these lines creates a string and, in some cases, can be used interchangeably. The choice of how to define strings in a codebase is a stylistic one outside of template literals (which allow embedded of expressions to be interpreted).

          Many codebases require strings to be defined in a consistent manner.

          Rule Details

          This rule enforces the consistent use of either backticks, double, or single quotes.

          Options

          This rule has two options, a string option and an object option.

          String option:

          • "double" (default) requires the use of double quotes wherever possible
          • "single" requires the use of single quotes wherever possible
          • "backtick" requires the use of backticks wherever possible

          Object option:

          • "avoidEscape": true allows strings to use single-quotes or double-quotes so long as the string contains a quote that would have to be escaped otherwise
          • "allowTemplateLiterals": true allows strings to use backticks

          Deprecated: The object property avoid-escape is deprecated; please use the object property avoidEscape instead.

          double

          Examples of incorrect code for this rule with the default "double" option:

          /*eslint quotes: ["error", "double"]*/
          
          var single = 'single';
          var unescaped = 'a string containing "double" quotes';

          Examples of correct code for this rule with the default "double" option:

          /*eslint quotes: ["error", "double"]*/
          /*eslint-env es6*/
          
          var double = "double";
          var backtick = `back\ntick`;  // backticks are allowed due to newline
          var backtick = tag`backtick`; // backticks are allowed due to tag

          single

          Examples of incorrect code for this rule with the "single" option:

          /*eslint quotes: ["error", "single"]*/
          
          var double = "double";
          var unescaped = "a string containing 'single' quotes";

          Examples of correct code for this rule with the "single" option:

          /*eslint quotes: ["error", "single"]*/
          /*eslint-env es6*/
          
          var single = 'single';
          var backtick = `back${x}tick`; // backticks are allowed due to substitution

          backticks

          Examples of incorrect code for this rule with the "backtick" option:

          /*eslint quotes: ["error", "backtick"]*/
          
          var single = 'single';
          var double = "double";
          var unescaped = 'a string containing `backticks`';

          Examples of correct code for this rule with the "backtick" option:

          /*eslint quotes: ["error", "backtick"]*/
          /*eslint-env es6*/
          
          var backtick = `backtick`;

          avoidEscape

          Examples of additional correct code for this rule with the "double", { "avoidEscape": true } options:

          /*eslint quotes: ["error", "double", { "avoidEscape": true }]*/
          
          var single = 'a string containing "double" quotes';

          Examples of additional correct code for this rule with the "single", { "avoidEscape": true } options:

          /*eslint quotes: ["error", "single", { "avoidEscape": true }]*/
          
          var double = "a string containing 'single' quotes";

          Examples of additional correct code for this rule with the "backtick", { "avoidEscape": true } options:

          /*eslint quotes: ["error", "backtick", { "avoidEscape": true }]*/
          
          var double = "a string containing `backtick` quotes"

          allowTemplateLiterals

          Examples of additional correct code for this rule with the "double", { "allowTemplateLiterals": true } options:

          /*eslint quotes: ["error", "double", { "allowTemplateLiterals": true }]*/
          
          var double = "double";
          var double = `double`;

          Examples of additional correct code for this rule with the "single", { "allowTemplateLiterals": true } options:

          /*eslint quotes: ["error", "single", { "allowTemplateLiterals": true }]*/
          
          var single = 'single';
          var single = `single`;

          When Not To Use It

          If you do not need consistency in your string styles, you can safely disable this rule. Source: http://eslint.org/docs/rules/

          Block must not be padded by blank lines.
          Open

            })
          Severity: Minor
          Found in src/helpers/uploadToCloudinary.js by eslint

          require or disallow padding within blocks (padded-blocks)

          Some style guides require block statements to start and end with blank lines. The goal is to improve readability by visually separating the block content and the surrounding code.

          if (a) {
          
              b();
          
          }

          Since it's good to have a consistent code style, you should either always write padded blocks or never do it.

          Rule Details

          This rule enforces consistent empty line padding within blocks.

          Options

          This rule has one option, which can be a string option or an object option.

          String option:

          • "always" (default) requires empty lines at the beginning and ending of block statements (except switch statements and classes)
          • "never" disallows empty lines at the beginning and ending of block statements (except switch statements and classes)

          Object option:

          • "blocks" require or disallow padding within block statements
          • "classes" require or disallow padding within classes
          • "switches" require or disallow padding within switch statements

          always

          Examples of incorrect code for this rule with the default "always" option:

          /*eslint padded-blocks: ["error", "always"]*/
          
          if (a) {
              b();
          }
          
          if (a) { b(); }
          
          if (a)
          {
              b();
          }
          
          if (a) {
          
              b();
          }
          
          if (a) {
              b();
          
          }
          
          if (a) {
              // comment
              b();
          
          }

          Examples of correct code for this rule with the default "always" option:

          /*eslint padded-blocks: ["error", "always"]*/
          
          if (a) {
          
              b();
          
          }
          
          if (a)
          {
          
              b();
          
          }
          
          if (a) {
          
              // comment
              b();
          
          }

          never

          Examples of incorrect code for this rule with the "never" option:

          /*eslint padded-blocks: ["error", "never"]*/
          
          if (a) {
          
              b();
          
          }
          
          if (a)
          {
          
              b();
          
          }
          
          if (a) {
          
              b();
          }
          
          if (a) {
              b();
          
          }

          Examples of correct code for this rule with the "never" option:

          /*eslint padded-blocks: ["error", "never"]*/
          
          if (a) {
              b();
          }
          
          if (a)
          {
              b();
          }

          blocks

          Examples of incorrect code for this rule with the { "blocks": "always" } option:

          /*eslint padded-blocks: ["error", { "blocks": "always" }]*/
          
          if (a) {
              b();
          }
          
          if (a) { b(); }
          
          if (a)
          {
              b();
          }
          
          if (a) {
          
              b();
          }
          
          if (a) {
              b();
          
          }
          
          if (a) {
              // comment
              b();
          
          }

          Examples of correct code for this rule with the { "blocks": "always" } option:

          /*eslint padded-blocks: ["error", { "blocks": "always" }]*/
          
          if (a) {
          
              b();
          
          }
          
          if (a)
          {
          
              b();
          
          }
          
          if (a) {
          
              // comment
              b();
          
          }

          Examples of incorrect code for this rule with the { "blocks": "never" } option:

          /*eslint padded-blocks: ["error", { "blocks": "never" }]*/
          
          if (a) {
          
              b();
          
          }
          
          if (a)
          {
          
              b();
          
          }
          
          if (a) {
          
              b();
          }
          
          if (a) {
              b();
          
          }

          Examples of correct code for this rule with the { "blocks": "never" } option:

          /*eslint padded-blocks: ["error", { "blocks": "never" }]*/
          
          if (a) {
              b();
          }
          
          if (a)
          {
              b();
          }

          classes

          Examples of incorrect code for this rule with the { "classes": "always" } option:

          /*eslint padded-blocks: ["error", { "classes": "always" }]*/
          
          class  A {
              constructor(){
              }
          }

          Examples of correct code for this rule with the { "classes": "always" } option:

          /*eslint padded-blocks: ["error", { "classes": "always" }]*/
          
          class  A {
          
              constructor(){
              }
          
          }

          Examples of incorrect code for this rule with the { "classes": "never" } option:

          /*eslint padded-blocks: ["error", { "classes": "never" }]*/
          
          class  A {
          
              constructor(){
              }
          
          }

          Examples of correct code for this rule with the { "classes": "never" } option:

          /*eslint padded-blocks: ["error", { "classes": "never" }]*/
          
          class  A {
              constructor(){
              }
          }

          switches

          Examples of incorrect code for this rule with the { "switches": "always" } option:

          /*eslint padded-blocks: ["error", { "switches": "always" }]*/
          
          switch (a) {
              case 0: foo();
          }

          Examples of correct code for this rule with the { "switches": "always" } option:

          /*eslint padded-blocks: ["error", { "switches": "always" }]*/
          
          switch (a) {
          
              case 0: foo();
          
          }
          
          if (a) {
              b();
          }

          Examples of incorrect code for this rule with the { "switches": "never" } option:

          /*eslint padded-blocks: ["error", { "switches": "never" }]*/
          
          switch (a) {
          
              case 0: foo();
          
          }

          Examples of correct code for this rule with the { "switches": "never" } option:

          /*eslint padded-blocks: ["error", { "switches": "never" }]*/
          
          switch (a) {
              case 0: foo();
          }
          
          if (a) {
          
              b();
          
          }

          When Not To Use It

          You can turn this rule off if you are not concerned with the consistency of padding within blocks. Source: http://eslint.org/docs/rules/

          Trailing spaces not allowed.
          Open

                  } 
          Severity: Minor
          Found in src/helpers/uploadToCloudinary.js by eslint

          disallow trailing whitespace at the end of lines (no-trailing-spaces)

          Sometimes in the course of editing files, you can end up with extra whitespace at the end of lines. These whitespace differences can be picked up by source control systems and flagged as diffs, causing frustration for developers. While this extra whitespace causes no functional issues, many code conventions require that trailing spaces be removed before check-in.

          Rule Details

          This rule disallows trailing whitespace (spaces, tabs, and other Unicode whitespace characters) at the end of lines.

          Examples of incorrect code for this rule:

          /*eslint no-trailing-spaces: "error"*/
          
          var foo = 0;//•••••
          var baz = 5;//••
          //•••••

          Examples of correct code for this rule:

          /*eslint no-trailing-spaces: "error"*/
          
          var foo = 0;
          var baz = 5;

          Options

          This rule has an object option:

          • "skipBlankLines": false (default) disallows trailing whitespace on empty lines
          • "skipBlankLines": true allows trailing whitespace on empty lines

          skipBlankLines

          Examples of correct code for this rule with the { "skipBlankLines": true } option:

          /*eslint no-trailing-spaces: ["error", { "skipBlankLines": true }]*/
          
          var foo = 0;
          var baz = 5;
          //•••••

          Source: http://eslint.org/docs/rules/

          Missing semicolon.
          Open

            })
          Severity: Minor
          Found in src/helpers/uploadToCloudinary.js by eslint

          require or disallow semicolons instead of ASI (semi)

          JavaScript is unique amongst the C-like languages in that it doesn't require semicolons at the end of each statement. In many cases, the JavaScript engine can determine that a semicolon should be in a certain spot and will automatically add it. This feature is known as automatic semicolon insertion (ASI) and is considered one of the more controversial features of JavaScript. For example, the following lines are both valid:

          var name = "ESLint"
          var website = "eslint.org";

          On the first line, the JavaScript engine will automatically insert a semicolon, so this is not considered a syntax error. The JavaScript engine still knows how to interpret the line and knows that the line end indicates the end of the statement.

          In the debate over ASI, there are generally two schools of thought. The first is that we should treat ASI as if it didn't exist and always include semicolons manually. The rationale is that it's easier to always include semicolons than to try to remember when they are or are not required, and thus decreases the possibility of introducing an error.

          However, the ASI mechanism can sometimes be tricky to people who are using semicolons. For example, consider this code:

          return
          {
              name: "ESLint"
          };

          This may look like a return statement that returns an object literal, however, the JavaScript engine will interpret this code as:

          return;
          {
              name: "ESLint";
          }

          Effectively, a semicolon is inserted after the return statement, causing the code below it (a labeled literal inside a block) to be unreachable. This rule and the [no-unreachable](no-unreachable.md) rule will protect your code from such cases.

          On the other side of the argument are those who says that since semicolons are inserted automatically, they are optional and do not need to be inserted manually. However, the ASI mechanism can also be tricky to people who don't use semicolons. For example, consider this code:

          var globalCounter = { }
          
          (function () {
              var n = 0
              globalCounter.increment = function () {
                  return ++n
              }
          })()

          In this example, a semicolon will not be inserted after the first line, causing a run-time error (because an empty object is called as if it's a function). The [no-unexpected-multiline](no-unexpected-multiline.md) rule can protect your code from such cases.

          Although ASI allows for more freedom over your coding style, it can also make your code behave in an unexpected way, whether you use semicolons or not. Therefore, it is best to know when ASI takes place and when it does not, and have ESLint protect your code from these potentially unexpected cases. In short, as once described by Isaac Schlueter, a \n character always ends a statement (just like a semicolon) unless one of the following is true:

          1. The statement has an unclosed paren, array literal, or object literal or ends in some other way that is not a valid way to end a statement. (For instance, ending with . or ,.)
          2. The line is -- or ++ (in which case it will decrement/increment the next token.)
          3. It is a for(), while(), do, if(), or else, and there is no {
          4. The next line starts with [, (, +, *, /, -, ,, ., or some other binary operator that can only be found between two tokens in a single expression.

          Rule Details

          This rule enforces consistent use of semicolons.

          Options

          This rule has two options, a string option and an object option.

          String option:

          • "always" (default) requires semicolons at the end of statements
          • "never" disallows semicolons as the end of statements (except to disambiguate statements beginning with [, (, /, +, or -)

          Object option:

          • "omitLastInOneLineBlock": true ignores the last semicolon in a block in which its braces (and therefore the content of the block) are in the same line

          always

          Examples of incorrect code for this rule with the default "always" option:

          /*eslint semi: ["error", "always"]*/
          
          var name = "ESLint"
          
          object.method = function() {
              // ...
          }

          Examples of correct code for this rule with the default "always" option:

          /*eslint semi: "error"*/
          
          var name = "ESLint";
          
          object.method = function() {
              // ...
          };

          never

          Examples of incorrect code for this rule with the "never" option:

          /*eslint semi: ["error", "never"]*/
          
          var name = "ESLint";
          
          object.method = function() {
              // ...
          };

          Examples of correct code for this rule with the "never" option:

          /*eslint semi: ["error", "never"]*/
          
          var name = "ESLint"
          
          object.method = function() {
              // ...
          }
          
          var name = "ESLint"
          
          ;(function() {
              // ...
          })()

          omitLastInOneLineBlock

          Examples of additional correct code for this rule with the "always", { "omitLastInOneLineBlock": true } options:

          /*eslint semi: ["error", "always", { "omitLastInOneLineBlock": true}] */
          
          if (foo) { bar() }
          
          if (foo) { bar(); baz() }

          When Not To Use It

          If you do not want to enforce semicolon usage (or omission) in any particular way, then you can turn this rule off.

          Further Reading

          Related Rules

          • [no-extra-semi](no-extra-semi.md)
          • [no-unexpected-multiline](no-unexpected-multiline.md)
          • [semi-spacing](semi-spacing.md) Source: http://eslint.org/docs/rules/

          Missing semicolon.
          Open

                  return reject(error)
          Severity: Minor
          Found in src/helpers/uploadToCloudinary.js by eslint

          require or disallow semicolons instead of ASI (semi)

          JavaScript is unique amongst the C-like languages in that it doesn't require semicolons at the end of each statement. In many cases, the JavaScript engine can determine that a semicolon should be in a certain spot and will automatically add it. This feature is known as automatic semicolon insertion (ASI) and is considered one of the more controversial features of JavaScript. For example, the following lines are both valid:

          var name = "ESLint"
          var website = "eslint.org";

          On the first line, the JavaScript engine will automatically insert a semicolon, so this is not considered a syntax error. The JavaScript engine still knows how to interpret the line and knows that the line end indicates the end of the statement.

          In the debate over ASI, there are generally two schools of thought. The first is that we should treat ASI as if it didn't exist and always include semicolons manually. The rationale is that it's easier to always include semicolons than to try to remember when they are or are not required, and thus decreases the possibility of introducing an error.

          However, the ASI mechanism can sometimes be tricky to people who are using semicolons. For example, consider this code:

          return
          {
              name: "ESLint"
          };

          This may look like a return statement that returns an object literal, however, the JavaScript engine will interpret this code as:

          return;
          {
              name: "ESLint";
          }

          Effectively, a semicolon is inserted after the return statement, causing the code below it (a labeled literal inside a block) to be unreachable. This rule and the [no-unreachable](no-unreachable.md) rule will protect your code from such cases.

          On the other side of the argument are those who says that since semicolons are inserted automatically, they are optional and do not need to be inserted manually. However, the ASI mechanism can also be tricky to people who don't use semicolons. For example, consider this code:

          var globalCounter = { }
          
          (function () {
              var n = 0
              globalCounter.increment = function () {
                  return ++n
              }
          })()

          In this example, a semicolon will not be inserted after the first line, causing a run-time error (because an empty object is called as if it's a function). The [no-unexpected-multiline](no-unexpected-multiline.md) rule can protect your code from such cases.

          Although ASI allows for more freedom over your coding style, it can also make your code behave in an unexpected way, whether you use semicolons or not. Therefore, it is best to know when ASI takes place and when it does not, and have ESLint protect your code from these potentially unexpected cases. In short, as once described by Isaac Schlueter, a \n character always ends a statement (just like a semicolon) unless one of the following is true:

          1. The statement has an unclosed paren, array literal, or object literal or ends in some other way that is not a valid way to end a statement. (For instance, ending with . or ,.)
          2. The line is -- or ++ (in which case it will decrement/increment the next token.)
          3. It is a for(), while(), do, if(), or else, and there is no {
          4. The next line starts with [, (, +, *, /, -, ,, ., or some other binary operator that can only be found between two tokens in a single expression.

          Rule Details

          This rule enforces consistent use of semicolons.

          Options

          This rule has two options, a string option and an object option.

          String option:

          • "always" (default) requires semicolons at the end of statements
          • "never" disallows semicolons as the end of statements (except to disambiguate statements beginning with [, (, /, +, or -)

          Object option:

          • "omitLastInOneLineBlock": true ignores the last semicolon in a block in which its braces (and therefore the content of the block) are in the same line

          always

          Examples of incorrect code for this rule with the default "always" option:

          /*eslint semi: ["error", "always"]*/
          
          var name = "ESLint"
          
          object.method = function() {
              // ...
          }

          Examples of correct code for this rule with the default "always" option:

          /*eslint semi: "error"*/
          
          var name = "ESLint";
          
          object.method = function() {
              // ...
          };

          never

          Examples of incorrect code for this rule with the "never" option:

          /*eslint semi: ["error", "never"]*/
          
          var name = "ESLint";
          
          object.method = function() {
              // ...
          };

          Examples of correct code for this rule with the "never" option:

          /*eslint semi: ["error", "never"]*/
          
          var name = "ESLint"
          
          object.method = function() {
              // ...
          }
          
          var name = "ESLint"
          
          ;(function() {
              // ...
          })()

          omitLastInOneLineBlock

          Examples of additional correct code for this rule with the "always", { "omitLastInOneLineBlock": true } options:

          /*eslint semi: ["error", "always", { "omitLastInOneLineBlock": true}] */
          
          if (foo) { bar() }
          
          if (foo) { bar(); baz() }

          When Not To Use It

          If you do not want to enforce semicolon usage (or omission) in any particular way, then you can turn this rule off.

          Further Reading

          Related Rules

          • [no-extra-semi](no-extra-semi.md)
          • [no-unexpected-multiline](no-unexpected-multiline.md)
          • [semi-spacing](semi-spacing.md) Source: http://eslint.org/docs/rules/

          Newline required at end of file but not found.
          Open

          export default uploadToCloudinary;
          Severity: Minor
          Found in src/helpers/uploadToCloudinary.js by eslint

          require or disallow newline at the end of files (eol-last)

          Trailing newlines in non-empty files are a common UNIX idiom. Benefits of trailing newlines include the ability to concatenate or append to files as well as output files to the terminal without interfering with shell prompts.

          Rule Details

          This rule enforces at least one newline (or absence thereof) at the end of non-empty files.

          Prior to v0.16.0 this rule also enforced that there was only a single line at the end of the file. If you still want this behaviour, consider enabling [no-multiple-empty-lines](no-multiple-empty-lines.md) with maxEOF and/or [no-trailing-spaces](no-trailing-spaces.md).

          Examples of incorrect code for this rule:

          /*eslint eol-last: ["error", "always"]*/
          
          function doSmth() {
            var foo = 2;
          }

          Examples of correct code for this rule:

          /*eslint eol-last: ["error", "always"]*/
          
          function doSmth() {
            var foo = 2;
          }\n

          Options

          This rule has a string option:

          • "always" (default) enforces that files end with a newline (LF)
          • "never" enforces that files do not end with a newline
          • "unix" (deprecated) is identical to "always"
          • "windows" (deprecated) is identical to "always", but will use a CRLF character when autofixing

          Deprecated: The options "unix" and "windows" are deprecated. If you need to enforce a specific linebreak style, use this rule in conjunction with linebreak-style. Source: http://eslint.org/docs/rules/

          Missing semicolon.
          Open

          config.config()
          Severity: Minor
          Found in src/config/config.js by eslint

          require or disallow semicolons instead of ASI (semi)

          JavaScript is unique amongst the C-like languages in that it doesn't require semicolons at the end of each statement. In many cases, the JavaScript engine can determine that a semicolon should be in a certain spot and will automatically add it. This feature is known as automatic semicolon insertion (ASI) and is considered one of the more controversial features of JavaScript. For example, the following lines are both valid:

          var name = "ESLint"
          var website = "eslint.org";

          On the first line, the JavaScript engine will automatically insert a semicolon, so this is not considered a syntax error. The JavaScript engine still knows how to interpret the line and knows that the line end indicates the end of the statement.

          In the debate over ASI, there are generally two schools of thought. The first is that we should treat ASI as if it didn't exist and always include semicolons manually. The rationale is that it's easier to always include semicolons than to try to remember when they are or are not required, and thus decreases the possibility of introducing an error.

          However, the ASI mechanism can sometimes be tricky to people who are using semicolons. For example, consider this code:

          return
          {
              name: "ESLint"
          };

          This may look like a return statement that returns an object literal, however, the JavaScript engine will interpret this code as:

          return;
          {
              name: "ESLint";
          }

          Effectively, a semicolon is inserted after the return statement, causing the code below it (a labeled literal inside a block) to be unreachable. This rule and the [no-unreachable](no-unreachable.md) rule will protect your code from such cases.

          On the other side of the argument are those who says that since semicolons are inserted automatically, they are optional and do not need to be inserted manually. However, the ASI mechanism can also be tricky to people who don't use semicolons. For example, consider this code:

          var globalCounter = { }
          
          (function () {
              var n = 0
              globalCounter.increment = function () {
                  return ++n
              }
          })()

          In this example, a semicolon will not be inserted after the first line, causing a run-time error (because an empty object is called as if it's a function). The [no-unexpected-multiline](no-unexpected-multiline.md) rule can protect your code from such cases.

          Although ASI allows for more freedom over your coding style, it can also make your code behave in an unexpected way, whether you use semicolons or not. Therefore, it is best to know when ASI takes place and when it does not, and have ESLint protect your code from these potentially unexpected cases. In short, as once described by Isaac Schlueter, a \n character always ends a statement (just like a semicolon) unless one of the following is true:

          1. The statement has an unclosed paren, array literal, or object literal or ends in some other way that is not a valid way to end a statement. (For instance, ending with . or ,.)
          2. The line is -- or ++ (in which case it will decrement/increment the next token.)
          3. It is a for(), while(), do, if(), or else, and there is no {
          4. The next line starts with [, (, +, *, /, -, ,, ., or some other binary operator that can only be found between two tokens in a single expression.

          Rule Details

          This rule enforces consistent use of semicolons.

          Options

          This rule has two options, a string option and an object option.

          String option:

          • "always" (default) requires semicolons at the end of statements
          • "never" disallows semicolons as the end of statements (except to disambiguate statements beginning with [, (, /, +, or -)

          Object option:

          • "omitLastInOneLineBlock": true ignores the last semicolon in a block in which its braces (and therefore the content of the block) are in the same line

          always

          Examples of incorrect code for this rule with the default "always" option:

          /*eslint semi: ["error", "always"]*/
          
          var name = "ESLint"
          
          object.method = function() {
              // ...
          }

          Examples of correct code for this rule with the default "always" option:

          /*eslint semi: "error"*/
          
          var name = "ESLint";
          
          object.method = function() {
              // ...
          };

          never

          Examples of incorrect code for this rule with the "never" option:

          /*eslint semi: ["error", "never"]*/
          
          var name = "ESLint";
          
          object.method = function() {
              // ...
          };

          Examples of correct code for this rule with the "never" option:

          /*eslint semi: ["error", "never"]*/
          
          var name = "ESLint"
          
          object.method = function() {
              // ...
          }
          
          var name = "ESLint"
          
          ;(function() {
              // ...
          })()

          omitLastInOneLineBlock

          Examples of additional correct code for this rule with the "always", { "omitLastInOneLineBlock": true } options:

          /*eslint semi: ["error", "always", { "omitLastInOneLineBlock": true}] */
          
          if (foo) { bar() }
          
          if (foo) { bar(); baz() }

          When Not To Use It

          If you do not want to enforce semicolon usage (or omission) in any particular way, then you can turn this rule off.

          Further Reading

          Related Rules

          • [no-extra-semi](no-extra-semi.md)
          • [no-unexpected-multiline](no-unexpected-multiline.md)
          • [semi-spacing](semi-spacing.md) Source: http://eslint.org/docs/rules/

          Expected indentation of 2 spaces but found 1.
          Open

           }
          Severity: Minor
          Found in webpack.config.js by eslint

          enforce consistent indentation (indent)

          There are several common guidelines which require specific indentation of nested blocks and statements, like:

          function hello(indentSize, type) {
              if (indentSize === 4 && type !== 'tab') {
                  console.log('Each next indentation will increase on 4 spaces');
              }
          }

          These are the most common scenarios recommended in different style guides:

          • Two spaces, not longer and no tabs: Google, npm, Node.js, Idiomatic, Felix
          • Tabs: jQuery
          • Four spaces: Crockford

          Rule Details

          This rule enforces a consistent indentation style. The default style is 4 spaces.

          Options

          This rule has a mixed option:

          For example, for 2-space indentation:

          {
              "indent": ["error", 2]
          }

          Or for tabbed indentation:

          {
              "indent": ["error", "tab"]
          }

          Examples of incorrect code for this rule with the default options:

          /*eslint indent: "error"*/
          
          if (a) {
            b=c;
            function foo(d) {
              e=f;
            }
          }

          Examples of correct code for this rule with the default options:

          /*eslint indent: "error"*/
          
          if (a) {
              b=c;
              function foo(d) {
                  e=f;
              }
          }

          This rule has an object option:

          • "SwitchCase" (default: 0) enforces indentation level for case clauses in switch statements
          • "VariableDeclarator" (default: 1) enforces indentation level for var declarators; can also take an object to define separate rules for var, let and const declarations.
          • "outerIIFEBody" (default: 1) enforces indentation level for file-level IIFEs.
          • "MemberExpression" (off by default) enforces indentation level for multi-line property chains (except in variable declarations and assignments)
          • "FunctionDeclaration" takes an object to define rules for function declarations.
            • parameters (off by default) enforces indentation level for parameters in a function declaration. This can either be a number indicating indentation level, or the string "first" indicating that all parameters of the declaration must be aligned with the first parameter.
            • body (default: 1) enforces indentation level for the body of a function declaration.
          • "FunctionExpression" takes an object to define rules for function expressions.
            • parameters (off by default) enforces indentation level for parameters in a function expression. This can either be a number indicating indentation level, or the string "first" indicating that all parameters of the expression must be aligned with the first parameter.
            • body (default: 1) enforces indentation level for the body of a function expression.
          • "CallExpression" takes an object to define rules for function call expressions.
            • arguments (off by default) enforces indentation level for arguments in a call expression. This can either be a number indicating indentation level, or the string "first" indicating that all arguments of the expression must be aligned with the first argument.
          • "ArrayExpression" (default: 1) enforces indentation level for elements in arrays. It can also be set to the string "first", indicating that all the elements in the array should be aligned with the first element.
          • "ObjectExpression" (default: 1) enforces indentation level for properties in objects. It can be set to the string "first", indicating that all properties in the object should be aligned with the first property.

          Level of indentation denotes the multiple of the indent specified. Example:

          • Indent of 4 spaces with VariableDeclarator set to 2 will indent the multi-line variable declarations with 8 spaces.
          • Indent of 2 spaces with VariableDeclarator set to 2 will indent the multi-line variable declarations with 4 spaces.
          • Indent of 2 spaces with VariableDeclarator set to {"var": 2, "let": 2, "const": 3} will indent the multi-line variable declarations with 4 spaces for var and let, 6 spaces for const statements.
          • Indent of tab with VariableDeclarator set to 2 will indent the multi-line variable declarations with 2 tabs.
          • Indent of 2 spaces with SwitchCase set to 0 will not indent case clauses with respect to switch statements.
          • Indent of 2 spaces with SwitchCase set to 1 will indent case clauses with 2 spaces with respect to switch statements.
          • Indent of 2 spaces with SwitchCase set to 2 will indent case clauses with 4 spaces with respect to switch statements.
          • Indent of tab with SwitchCase set to 2 will indent case clauses with 2 tabs with respect to switch statements.
          • Indent of 2 spaces with MemberExpression set to 0 will indent the multi-line property chains with 0 spaces.
          • Indent of 2 spaces with MemberExpression set to 1 will indent the multi-line property chains with 2 spaces.
          • Indent of 2 spaces with MemberExpression set to 2 will indent the multi-line property chains with 4 spaces.
          • Indent of 4 spaces with MemberExpression set to 0 will indent the multi-line property chains with 0 spaces.
          • Indent of 4 spaces with MemberExpression set to 1 will indent the multi-line property chains with 4 spaces.
          • Indent of 4 spaces with MemberExpression set to 2 will indent the multi-line property chains with 8 spaces.

          tab

          Examples of incorrect code for this rule with the "tab" option:

          /*eslint indent: ["error", "tab"]*/
          
          if (a) {
               b=c;
          function foo(d) {
                     e=f;
           }
          }

          Examples of correct code for this rule with the "tab" option:

          /*eslint indent: ["error", "tab"]*/
          
          if (a) {
          /*tab*/b=c;
          /*tab*/function foo(d) {
          /*tab*//*tab*/e=f;
          /*tab*/}
          }

          SwitchCase

          Examples of incorrect code for this rule with the 2, { "SwitchCase": 1 } options:

          /*eslint indent: ["error", 2, { "SwitchCase": 1 }]*/
          
          switch(a){
          case "a":
              break;
          case "b":
              break;
          }

          Examples of correct code for this rule with the 2, { "SwitchCase": 1 } option:

          /*eslint indent: ["error", 2, { "SwitchCase": 1 }]*/
          
          switch(a){
            case "a":
              break;
            case "b":
              break;
          }

          VariableDeclarator

          Examples of incorrect code for this rule with the 2, { "VariableDeclarator": 1 } options:

          /*eslint indent: ["error", 2, { "VariableDeclarator": 1 }]*/
          /*eslint-env es6*/
          
          var a,
              b,
              c;
          let a,
              b,
              c;
          const a = 1,
              b = 2,
              c = 3;

          Examples of correct code for this rule with the 2, { "VariableDeclarator": 1 } options:

          /*eslint indent: ["error", 2, { "VariableDeclarator": 1 }]*/
          /*eslint-env es6*/
          
          var a,
            b,
            c;
          let a,
            b,
            c;
          const a = 1,
            b = 2,
            c = 3;

          Examples of correct code for this rule with the 2, { "VariableDeclarator": 2 } options:

          /*eslint indent: ["error", 2, { "VariableDeclarator": 2 }]*/
          /*eslint-env es6*/
          
          var a,
              b,
              c;
          let a,
              b,
              c;
          const a = 1,
              b = 2,
              c = 3;

          Examples of correct code for this rule with the 2, { "VariableDeclarator": { "var": 2, "let": 2, "const": 3 } } options:

          /*eslint indent: ["error", 2, { "VariableDeclarator": { "var": 2, "let": 2, "const": 3 } }]*/
          /*eslint-env es6*/
          
          var a,
              b,
              c;
          let a,
              b,
              c;
          const a = 1,
                b = 2,
                c = 3;

          outerIIFEBody

          Examples of incorrect code for this rule with the options 2, { "outerIIFEBody": 0 }:

          /*eslint indent: ["error", 2, { "outerIIFEBody": 0 }]*/
          
          (function() {
          
            function foo(x) {
              return x + 1;
            }
          
          })();
          
          
          if(y) {
          console.log('foo');
          }

          Examples of correct code for this rule with the options 2, {"outerIIFEBody": 0}:

          /*eslint indent: ["error", 2, { "outerIIFEBody": 0 }]*/
          
          (function() {
          
          function foo(x) {
            return x + 1;
          }
          
          })();
          
          
          if(y) {
             console.log('foo');
          }

          MemberExpression

          Examples of incorrect code for this rule with the 2, { "MemberExpression": 1 } options:

          /*eslint indent: ["error", 2, { "MemberExpression": 1 }]*/
          
          foo
          .bar
          .baz()

          Examples of correct code for this rule with the 2, { "MemberExpression": 1 } option:

          /*eslint indent: ["error", 2, { "MemberExpression": 1 }]*/
          
          foo
            .bar
            .baz();
          
          // Any indentation is permitted in variable declarations and assignments.
          var bip = aardvark.badger
                            .coyote;

          FunctionDeclaration

          Examples of incorrect code for this rule with the 2, { "FunctionDeclaration": {"body": 1, "parameters": 2} } option:

          /*eslint indent: ["error", 2, { "FunctionDeclaration": {"body": 1, "parameters": 2} }]*/
          
          function foo(bar,
            baz,
            qux) {
              qux();
          }

          Examples of correct code for this rule with the 2, { "FunctionDeclaration": {"body": 1, "parameters": 2} } option:

          /*eslint indent: ["error", 2, { "FunctionDeclaration": {"body": 1, "parameters": 2} }]*/
          
          function foo(bar,
              baz,
              qux) {
            qux();
          }

          Examples of incorrect code for this rule with the 2, { "FunctionDeclaration": {"parameters": "first"} } option:

          /*eslint indent: ["error", 2, {"FunctionDeclaration": {"parameters": "first"}}]*/
          
          function foo(bar, baz,
            qux, boop) {
            qux();
          }

          Examples of correct code for this rule with the 2, { "FunctionDeclaration": {"parameters": "first"} } option:

          /*eslint indent: ["error", 2, {"FunctionDeclaration": {"parameters": "first"}}]*/
          
          function foo(bar, baz,
                       qux, boop) {
            qux();
          }

          FunctionExpression

          Examples of incorrect code for this rule with the 2, { "FunctionExpression": {"body": 1, "parameters": 2} } option:

          /*eslint indent: ["error", 2, { "FunctionExpression": {"body": 1, "parameters": 2} }]*/
          
          var foo = function(bar,
            baz,
            qux) {
              qux();
          }

          Examples of correct code for this rule with the 2, { "FunctionExpression": {"body": 1, "parameters": 2} } option:

          /*eslint indent: ["error", 2, { "FunctionExpression": {"body": 1, "parameters": 2} }]*/
          
          var foo = function(bar,
              baz,
              qux) {
            qux();
          }

          Examples of incorrect code for this rule with the 2, { "FunctionExpression": {"parameters": "first"} } option:

          /*eslint indent: ["error", 2, {"FunctionExpression": {"parameters": "first"}}]*/
          
          var foo = function(bar, baz,
            qux, boop) {
            qux();
          }

          Examples of correct code for this rule with the 2, { "FunctionExpression": {"parameters": "first"} } option:

          /*eslint indent: ["error", 2, {"FunctionExpression": {"parameters": "first"}}]*/
          
          var foo = function(bar, baz,
                             qux, boop) {
            qux();
          }

          CallExpression

          Examples of incorrect code for this rule with the 2, { "CallExpression": {"arguments": 1} } option:

          /*eslint indent: ["error", 2, { "CallExpression": {"arguments": 1} }]*/
          
          foo(bar,
              baz,
                qux
          );

          Examples of correct code for this rule with the 2, { "CallExpression": {"arguments": 1} } option:

          /*eslint indent: ["error", 2, { "CallExpression": {"arguments": 1} }]*/
          
          foo(bar,
            baz,
            qux
          );

          Examples of incorrect code for this rule with the 2, { "CallExpression": {"arguments": "first"} } option:

          /*eslint indent: ["error", 2, {"CallExpression": {"arguments": "first"}}]*/
          
          foo(bar, baz,
            baz, boop, beep);

          Examples of correct code for this rule with the 2, { "CallExpression": {"arguments": "first"} } option:

          /*eslint indent: ["error", 2, {"CallExpression": {"arguments": "first"}}]*/
          
          foo(bar, baz,
              baz, boop, beep);

          ArrayExpression

          Examples of incorrect code for this rule with the 2, { "ArrayExpression": 1 } option:

          /*eslint indent: ["error", 2, { "ArrayExpression": 1 }]*/
          
          var foo = [
              bar,
          baz,
                qux
          ];

          Examples of correct code for this rule with the 2, { "ArrayExpression": 1 } option:

          /*eslint indent: ["error", 2, { "ArrayExpression": 1 }]*/
          
          var foo = [
            bar,
            baz,
            qux
          ];

          Examples of incorrect code for this rule with the 2, { "ArrayExpression": "first" } option:

          /*eslint indent: ["error", 2, {"ArrayExpression": "first"}]*/
          
          var foo = [bar,
            baz,
            qux
          ];

          Examples of correct code for this rule with the 2, { "ArrayExpression": "first" } option:

          /*eslint indent: ["error", 2, {"ArrayExpression": "first"}]*/
          
          var foo = [bar,
                     baz,
                     qux
          ];

          ObjectExpression

          Examples of incorrect code for this rule with the 2, { "ObjectExpression": 1 } option:

          /*eslint indent: ["error", 2, { "ObjectExpression": 1 }]*/
          
          var foo = {
              bar: 1,
          baz: 2,
                qux: 3
          };

          Examples of correct code for this rule with the 2, { "ObjectExpression": 1 } option:

          /*eslint indent: ["error", 2, { "ObjectExpression": 1 }]*/
          
          var foo = {
            bar: 1,
            baz: 2,
            qux: 3
          };

          Examples of incorrect code for this rule with the 2, { "ObjectExpression": "first" } option:

          /*eslint indent: ["error", 2, {"ObjectExpression": "first"}]*/
          
          var foo = { bar: 1,
            baz: 2 };

          Examples of correct code for this rule with the 2, { "ObjectExpression": "first" } option:

          /*eslint indent: ["error", 2, {"ObjectExpression": "first"}]*/
          
          var foo = { bar: 1,
                      baz: 2 };

          Compatibility

          Trailing spaces not allowed.
          Open

           
          Severity: Minor
          Found in webpack.config.js by eslint

          disallow trailing whitespace at the end of lines (no-trailing-spaces)

          Sometimes in the course of editing files, you can end up with extra whitespace at the end of lines. These whitespace differences can be picked up by source control systems and flagged as diffs, causing frustration for developers. While this extra whitespace causes no functional issues, many code conventions require that trailing spaces be removed before check-in.

          Rule Details

          This rule disallows trailing whitespace (spaces, tabs, and other Unicode whitespace characters) at the end of lines.

          Examples of incorrect code for this rule:

          /*eslint no-trailing-spaces: "error"*/
          
          var foo = 0;//•••••
          var baz = 5;//••
          //•••••

          Examples of correct code for this rule:

          /*eslint no-trailing-spaces: "error"*/
          
          var foo = 0;
          var baz = 5;

          Options

          This rule has an object option:

          • "skipBlankLines": false (default) disallows trailing whitespace on empty lines
          • "skipBlankLines": true allows trailing whitespace on empty lines

          skipBlankLines

          Examples of correct code for this rule with the { "skipBlankLines": true } option:

          /*eslint no-trailing-spaces: ["error", { "skipBlankLines": true }]*/
          
          var foo = 0;
          var baz = 5;
          //•••••

          Source: http://eslint.org/docs/rules/

          Trailing spaces not allowed.
          Open

                
          Severity: Minor
          Found in src/helpers/uploadToCloudinary.js by eslint

          disallow trailing whitespace at the end of lines (no-trailing-spaces)

          Sometimes in the course of editing files, you can end up with extra whitespace at the end of lines. These whitespace differences can be picked up by source control systems and flagged as diffs, causing frustration for developers. While this extra whitespace causes no functional issues, many code conventions require that trailing spaces be removed before check-in.

          Rule Details

          This rule disallows trailing whitespace (spaces, tabs, and other Unicode whitespace characters) at the end of lines.

          Examples of incorrect code for this rule:

          /*eslint no-trailing-spaces: "error"*/
          
          var foo = 0;//•••••
          var baz = 5;//••
          //•••••

          Examples of correct code for this rule:

          /*eslint no-trailing-spaces: "error"*/
          
          var foo = 0;
          var baz = 5;

          Options

          This rule has an object option:

          • "skipBlankLines": false (default) disallows trailing whitespace on empty lines
          • "skipBlankLines": true allows trailing whitespace on empty lines

          skipBlankLines

          Examples of correct code for this rule with the { "skipBlankLines": true } option:

          /*eslint no-trailing-spaces: ["error", { "skipBlankLines": true }]*/
          
          var foo = 0;
          var baz = 5;
          //•••••

          Source: http://eslint.org/docs/rules/

          Unexpected var, use let or const instead.
          Open

            var fileUrls = []
          Severity: Minor
          Found in src/helpers/uploadToCloudinary.js by eslint

          require let or const instead of var (no-var)

          ECMAScript 6 allows programmers to create variables with block scope instead of function scope using the let and const keywords. Block scope is common in many other programming languages and helps programmers avoid mistakes such as:

          var count = people.length;
          var enoughFood = count > sandwiches.length;
          
          if (enoughFood) {
              var count = sandwiches.length; // accidentally overriding the count variable
              console.log("We have " + count + " sandwiches for everyone. Plenty for all!");
          }
          
          // our count variable is no longer accurate
          console.log("We have " + count + " people and " + sandwiches.length + " sandwiches!");

          Rule Details

          This rule is aimed at discouraging the use of var and encouraging the use of const or let instead.

          Examples

          Examples of incorrect code for this rule:

          /*eslint no-var: "error"*/
          
          var x = "y";
          var CONFIG = {};

          Examples of correct code for this rule:

          /*eslint no-var: "error"*/
          /*eslint-env es6*/
          
          let x = "y";
          const CONFIG = {};

          When Not To Use It

          In addition to non-ES6 environments, existing JavaScript projects that are beginning to introduce ES6 into their codebase may not want to apply this rule if the cost of migrating from var to let is too costly. Source: http://eslint.org/docs/rules/

          Expected space(s) after "if".
          Open

                  if(files.length === fileUrls.length){
          Severity: Minor
          Found in src/helpers/uploadToCloudinary.js by eslint

          enforce consistent spacing before and after keywords (keyword-spacing)

          Keywords are syntax elements of JavaScript, such as function and if. These identifiers have special meaning to the language and so often appear in a different color in code editors. As an important part of the language, style guides often refer to the spacing that should be used around keywords. For example, you might have a style guide that says keywords should be always surrounded by spaces, which would mean if-else statements must look like this:

          if (foo) {
              // ...
          } else {
              // ...
          }

          Of course, you could also have a style guide that disallows spaces around keywords.

          Rule Details

          This rule enforces consistent spacing around keywords and keyword-like tokens: as (in module declarations), async (of async functions), await (of await expressions), break, case, catch, class, const, continue, debugger, default, delete, do, else, export, extends, finally, for, from (in module declarations), function, get (of getters), if, import, in, instanceof, let, new, of (in for-of statements), return, set (of setters), static, super, switch, this, throw, try, typeof, var, void, while, with, and yield. This rule is designed carefully not to conflict with other spacing rules: it does not apply to spacing where other rules report problems.

          Options

          This rule has an object option:

          • "before": true (default) requires at least one space before keywords
          • "before": false disallows spaces before keywords
          • "after": true (default) requires at least one space after keywords
          • "after": false disallows spaces after keywords
          • "overrides" allows overriding spacing style for specified keywords

          before

          Examples of incorrect code for this rule with the default { "before": true } option:

          /*eslint keyword-spacing: ["error", { "before": true }]*/
          
          if (foo) {
              //...
          }else if (bar) {
              //...
          }else {
              //...
          }

          Examples of correct code for this rule with the default { "before": true } option:

          /*eslint keyword-spacing: ["error", { "before": true }]*/
          /*eslint-env es6*/
          
          if (foo) {
              //...
          } else if (bar) {
              //...
          } else {
              //...
          }
          
          // no conflict with `array-bracket-spacing`
          let a = [this];
          let b = [function() {}];
          
          // no conflict with `arrow-spacing`
          let a = ()=> this.foo;
          
          // no conflict with `block-spacing`
          {function foo() {}}
          
          // no conflict with `comma-spacing`
          let a = [100,this.foo, this.bar];
          
          // not conflict with `computed-property-spacing`
          obj[this.foo] = 0;
          
          // no conflict with `generator-star-spacing`
          function *foo() {}
          
          // no conflict with `key-spacing`
          let obj = {
              foo:function() {}
          };
          
          // no conflict with `object-curly-spacing`
          let obj = {foo: this};
          
          // no conflict with `semi-spacing`
          let a = this;function foo() {}
          
          // no conflict with `space-in-parens`
          (function () {})();
          
          // no conflict with `space-infix-ops`
          if ("foo"in {foo: 0}) {}
          if (10+this.foo<= this.bar) {}
          
          // no conflict with `jsx-curly-spacing`
          let a = 

          Examples of incorrect code for this rule with the { "before": false } option:

          /*eslint keyword-spacing: ["error", { "before": false }]*/
          
          if (foo) {
              //...
          } else if (bar) {
              //...
          } else {
              //...
          }

          Examples of correct code for this rule with the { "before": false } option:

          /*eslint keyword-spacing: ["error", { "before": false }]*/
          
          if (foo) {
              //...
          }else if (bar) {
              //...
          }else {
              //...
          }

          after

          Examples of incorrect code for this rule with the default { "after": true } option:

          /*eslint keyword-spacing: ["error", { "after": true }]*/
          
          if(foo) {
              //...
          } else if(bar) {
              //...
          } else{
              //...
          }

          Examples of correct code for this rule with the default { "after": true } option:

          /*eslint keyword-spacing: ["error", { "after": true }]*/
          
          if (foo) {
              //...
          } else if (bar) {
              //...
          } else {
              //...
          }
          
          // not conflict with `array-bracket-spacing`
          let a = [this];
          
          // not conflict with `arrow-spacing`
          let a = ()=> this.foo;
          
          // not conflict with `comma-spacing`
          let a = [100, this.foo, this.bar];
          
          // not conflict with `computed-property-spacing`
          obj[this.foo] = 0;
          
          // not conflict with `generator-star-spacing`
          function* foo() {}
          
          // not conflict with `key-spacing`
          let obj = {
              foo:function() {}
          };
          
          // not conflict with `func-call-spacing`
          class A {
              constructor() {
                  super();
              }
          }
          
          // not conflict with `object-curly-spacing`
          let obj = {foo: this};
          
          // not conflict with `semi-spacing`
          let a = this;function foo() {}
          
          // not conflict with `space-before-function-paren`
          function() {}
          
          // no conflict with `space-infix-ops`
          if ("foo"in{foo: 0}) {}
          if (10+this.foo<= this.bar) {}
          
          // no conflict with `space-unary-ops`
          function* foo(a) {
              return yield+a;
          }
          
          // no conflict with `yield-star-spacing`
          function* foo(a) {
              return yield* a;
          }
          
          // no conflict with `jsx-curly-spacing`
          let a = 

          Examples of incorrect code for this rule with the { "after": false } option:

          /*eslint keyword-spacing: ["error", { "after": false }]*/
          
          if (foo) {
              //...
          } else if (bar) {
              //...
          } else {
              //...
          }

          Examples of correct code for this rule with the { "after": false } option:

          /*eslint keyword-spacing: ["error", { "after": false }]*/
          
          if(foo) {
              //...
          } else if(bar) {
              //...
          } else{
              //...
          }

          overrides

          Examples of correct code for this rule with the { "overrides": { "if": { "after": false }, "for": { "after": false }, "while": { "after": false } } } option:

          /*eslint keyword-spacing: ["error", { "overrides": {
            "if": { "after": false },
            "for": { "after": false },
            "while": { "after": false }
          } }]*/
          
          if(foo) {
              //...
          } else if(bar) {
              //...
          } else {
              //...
          }
          
          for(;;);
          
          while(true) {
            //...
          }

          When Not To Use It

          If you don't want to enforce consistency on keyword spacing, then it's safe to disable this rule. Source: http://eslint.org/docs/rules/

          Parsing error: Unexpected token <
          Open

          ReactDOM.render(<Example />, document.getElementById('app'));
          Severity: Minor
          Found in example/app.js by eslint

          For more information visit Source: http://eslint.org/docs/rules/

          Severity
          Category
          Status
          Source
          Language